/* Centralized theme for CW-EDMS - Bootstrap 5 based
   Palette and component standards per design brief
*/
:root{
  --primary:#4F46E5;
  --secondary:#64748B;
  --success:#10B981;
  --warning:#F59E0B;
  --danger:#EF4444;
  --info:#06B6D4;
  --bg:#F8FAFC;
  --card-bg:#FFFFFF;
  --border:#E2E8F0;
  --text:#334155;
  --radius:12px;
}
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700&display=swap');
html,body{height:100%;}
body {
  font-family: "Inter", "Segoe UI", sans-serif;
  background-color: var(--bg);
  color: var(--text);
  font-size:14px;
}
/* Page titles */
.page-title{font-size:24px;font-weight:600;color:var(--text);margin:0;padding:0}
.section-title{font-size:18px;font-weight:600;color:var(--text);margin-bottom:12px}

/* Cards */
.card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 6px 18px rgba(15,23,42,0.03)}
.card .card-body{padding:1.25rem}
.card .card-header{background:transparent;border-bottom:none;padding:0}

/* Form controls */
.form-control, .form-select, .form-control:focus, .form-select:focus{height:42px;min-height:42px;border-radius:8px;border:1px solid var(--border);box-shadow:none}
.form-control:focus, .form-select:focus{outline:0;box-shadow:0 0 0 4px rgba(79,70,229,0.08);border-color:var(--primary)}
.form-label{font-weight:600;color:var(--text);}
.form-text.text-danger{margin-top:6px}

/* Buttons */
.btn{height:42px;border-radius:8px;padding-left:12px;padding-right:12px}
.btn i{margin-right:6px}
.btn-primary-custom{background:var(--primary);border:1px solid var(--primary);color:#fff}
.btn-primary-custom:hover{background:#4338ca;border-color:#4338ca}
.btn-secondary-custom{background:#fff;border:1px solid var(--border);color:var(--secondary)}
.btn-success-custom{background:var(--success);border:1px solid var(--success);color:#fff}
.btn-warning-custom{background:var(--warning);border:1px solid var(--warning);color:#fff}
.btn-danger-custom{background:var(--danger);border:1px solid var(--danger);color:#fff}
/* Outline variants */
.btn-outline-primary-custom{background:transparent;border:1px solid var(--primary);color:var(--primary)}
.btn-outline-primary-custom:hover{background:var(--primary);color:#fff}
.btn-outline-secondary-custom{background:transparent;border:1px solid var(--border);color:var(--secondary)}
.btn-outline-secondary-custom:hover{background:var(--border)}
.btn-icon{display:inline-flex;align-items:center;gap:0.5rem}

/* Align stock Bootstrap semantic buttons (btn-primary, btn-outline-info, ...) with the app
   palette. Several pages use plain Bootstrap classes instead of the *-custom variants above;
   without this every grid/toolbar renders in Bootstrap's default blue/red/cyan instead of the
   app's indigo/slate design, which is what made different pages look inconsistent. */
.btn-primary{background-color:var(--primary);border-color:var(--primary)}
.btn-primary:hover,.btn-primary:focus{background-color:#4338ca;border-color:#4338ca}
.btn-outline-primary{color:var(--primary);border-color:var(--primary)}
.btn-outline-primary:hover,.btn-outline-primary:focus{background-color:var(--primary);border-color:var(--primary);color:#fff}
.btn-info{background-color:var(--info);border-color:var(--info);color:#fff}
.btn-info:hover,.btn-info:focus{color:#fff}
.btn-outline-info{color:var(--info);border-color:var(--info)}
.btn-outline-info:hover,.btn-outline-info:focus{background-color:var(--info);border-color:var(--info);color:#fff}
.btn-danger{background-color:var(--danger);border-color:var(--danger)}
.btn-outline-danger{color:var(--danger);border-color:var(--danger)}
.btn-outline-danger:hover,.btn-outline-danger:focus{background-color:var(--danger);border-color:var(--danger);color:#fff}
.btn-success{background-color:var(--success);border-color:var(--success)}
.btn-warning{background-color:var(--warning);border-color:var(--warning);color:#fff}
.btn-secondary{background-color:var(--secondary);border-color:var(--secondary)}
.btn-outline-secondary{color:var(--secondary);border-color:var(--border)}
.btn-outline-secondary:hover,.btn-outline-secondary:focus{background-color:var(--border);border-color:var(--border);color:var(--text)}

/* Pagination - align with app palette so every paged grid matches */
.pagination .page-link{color:var(--primary)}
.pagination .page-link:hover,.pagination .page-link:focus{color:var(--primary);background-color:var(--bg);box-shadow:none}
.pagination .page-item.active .page-link{background-color:var(--primary);border-color:var(--primary);color:#fff}
.pagination .page-item.disabled .page-link{color:var(--secondary)}

/* Ensure small buttons match standard height and alignment so icons and text align across pages */
.btn-sm{height:42px;padding-left:10px;padding-right:10px;border-radius:8px;font-size:14px}
.d-inline-flex.align-items-center{height:42px;align-items:center}
.d-inline-flex.align-items-center i, .btn-icon i{margin-right:8px;display:inline-block;vertical-align:middle}

.btn-icon{height:42px;padding-left:12px;padding-right:12px}

/* Icon-only buttons (e.g. row action buttons in grids) - explicit opt-in class so it never
   catches icon+label buttons (a trailing text node still leaves the icon as the only *element*
   child, which made a :has(i:only-child) heuristic here match "Add Entity" style buttons too). */
.btn-icon-only{display:inline-flex;align-items:center;justify-content:center;width:42px;padding-left:0;padding-right:0}
.btn-icon-only i{margin-right:0}

/* form-control-sm should keep consistent height */
.form-control-sm, .form-select-sm{height:42px;padding:.375rem .75rem}

/* Card header spacing */
.card-header{padding:.75rem 1.25rem;border-bottom:1px solid var(--border)}

/* Toolbar */
.page-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;padding-left:0;padding-right:0}
.page-header > div:first-child{flex:1 1 auto}
.page-header .actions{display:flex;gap:8px;flex:0 0 auto;justify-content:flex-end}

/* Ensure header aligns to container grid and buttons don't wrap into new rows */
.page-header .actions .btn{white-space:nowrap}

/* Ensure action buttons stay compact and do not expand to full width */
.page-header .actions .btn{width:auto !important;min-width:unset;display:inline-flex;align-items:center}
.page-header .actions .btn.btn-primary-custom{padding-left:14px;padding-right:14px;border-radius:10px;height:42px}

/* Reduce extra left/right spacing inside the main container for content cards */
.container {padding-left:1rem; padding-right:1rem}

/* Tables - elegant bordered grid */
.table-responsive{
  overflow:auto;
  border:1px solid var(--border);
  border-radius:var(--radius);
  background:var(--card-bg);
  box-shadow:0 1px 2px rgba(15,23,42,0.04);
}
.table-custom{border-collapse:collapse;width:100%;margin-bottom:0}
.table-custom th{position:sticky;top:0;z-index:1}
.table-custom thead th{
  background:linear-gradient(180deg,#FBFCFE,#F1F5F9);
  font-weight:600;
  color:var(--text);
  border-bottom:2px solid var(--border);
  white-space:nowrap;
}
.table-custom td, .table-custom th{
  vertical-align:middle;
  padding:0.5rem 0.85rem;
  border-bottom:1px solid var(--border);
  border-right:1px solid var(--border);
  line-height:1.4;
  white-space:nowrap;
}

/* Columns that legitimately hold long free-text (remarks, descriptions) should still wrap
   rather than force the whole table absurdly wide - opt in per-cell via this class */
.table-custom td.text-wrap, .table-custom th.text-wrap{white-space:normal}
.table-custom td:last-child, .table-custom th:last-child{border-right:none}
.table-custom tbody tr:last-child td{border-bottom:none}
.table-custom tbody tr:nth-child(even){background:rgba(100,116,139,0.035)}
.table-custom tbody tr:hover{background:rgba(79,70,229,0.06)}

/* Row action buttons should stay compact so grid rows don't stretch to fit a 42px control */
.table-custom .btn-sm{height:30px;padding-top:0;padding-bottom:0;font-size:13px}
.table-custom .btn-icon-only{width:30px}

/* Round the outer corners of the table to match the wrapping card */
.table-responsive .table-custom thead tr:first-child th:first-child{border-top-left-radius:calc(var(--radius) - 1px)}
.table-responsive .table-custom thead tr:first-child th:last-child{border-top-right-radius:calc(var(--radius) - 1px)}
.table-responsive .table-custom tbody tr:last-child td:first-child{border-bottom-left-radius:calc(var(--radius) - 1px)}
.table-responsive .table-custom tbody tr:last-child td:last-child{border-bottom-right-radius:calc(var(--radius) - 1px)}

/* Breadcrumbs */
.breadcrumb{background:transparent;padding:0;margin-bottom:0}

/* Utilities */
.required-star{color:var(--danger);margin-left:4px}
.small-muted{color:var(--secondary);font-size:13px}

/* Modals - keep consistent rounded corners */
.modal-content{border-radius:12px}

/* Responsive tweaks */
@media (max-width:576px){
  .page-header{flex-direction:column;align-items:stretch}
  .page-header .actions{justify-content:flex-start}
}
