:root {
  --accent:       #5b5bd6;
  --accent-dark:  #4a4ac2;
  --accent-soft:  #eeeefb;
  --accent-rgb:   91, 91, 214;

  --sidebar-bg:   #14161d;
  --sidebar-hover:#20222d;
  --sidebar-w:    244px;

  --body-bg:      #f4f5f7;
  --card-bg:      #ffffff;

  --text:         #171a1f;
  --text-soft:    #4a4f5a;
  --text-muted:   #8a8f9a;

  --border:       #ebedf0;
  --border-soft:  #f4f5f7;

  --ok:     #15935f;
  --ok-soft:   #e6f5ee;
  --warn:   #b7791f;
  --warn-soft: #fbf1dd;
  --danger: #d64545;
  --danger-soft: #fbe8e8;

  --radius:   12px;
  --radius-sm: 8px;
  --shadow:   0 1px 2px rgba(23,26,31,.03), 0 1px 3px rgba(23,26,31,.05);
  --shadow-md: 0 4px 16px rgba(23,26,31,.08);
}

/* ── Base ───────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }
body {
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
  background: var(--body-bg);
  color: var(--text);
  margin: 0;
  font-size: .875rem;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}
a { text-decoration: none; }

/* ── Layout ─────────────────────────────── */
#wrapper { display: flex; min-height: 100vh; }

#sidebar {
  width: var(--sidebar-w);
  min-height: 100vh;
  background: var(--sidebar-bg);
  display: flex;
  flex-direction: column;
  position: fixed;
  top: 0; left: 0; bottom: 0;
  z-index: 100;
  overflow-y: auto;
  overflow-x: hidden;
}

#page-content {
  margin-left: var(--sidebar-w);
  min-height: 100vh;
  flex: 1;
}

/* ── Sidebar Brand ──────────────────────── */
.sidebar-brand {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 20px 18px 18px;
  flex-shrink: 0;
}
.sidebar-logo {
  width: 32px; height: 32px;
  background: var(--accent);
  border-radius: 9px;
  display: flex; align-items: center; justify-content: center;
  color: #fff;
  font-size: 1.05rem;
  flex-shrink: 0;
}
.sidebar-brand-name {
  font-size: .92rem;
  font-weight: 650;
  color: #eceef3;
  letter-spacing: -.01em;
  line-height: 1.2;
}
.sidebar-brand-tag {
  font-size: .63rem;
  font-weight: 500;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: #565b68;
  margin-top: 2px;
}

/* ── Sidebar Search ─────────────────────── */
.sidebar-search {
  padding: 4px 14px 8px;
  position: relative;
}
.sidebar-search-icon {
  background: rgba(255,255,255,.04) !important;
  border-color: rgba(255,255,255,.06) !important;
  border-right: none !important;
  color: #565b68 !important;
}
.sidebar-search-input {
  background: rgba(255,255,255,.04) !important;
  border-color: rgba(255,255,255,.06) !important;
  border-left: none !important;
  color: #cbd0da !important;
  font-size: .8rem !important;
}
.sidebar-search-input::placeholder { color: #4a4f5c !important; }
.sidebar-search-input:focus {
  box-shadow: none !important;
  background: rgba(255,255,255,.07) !important;
}
.sidebar-search:focus-within .sidebar-search-icon,
.sidebar-search:focus-within .sidebar-search-input {
  border-color: rgba(var(--accent-rgb), .5) !important;
}

.search-dropdown {
  position: absolute;
  top: calc(100% - 4px);
  left: 14px; right: 14px;
  background: #1c1f2b;
  border: 1px solid rgba(255,255,255,.08);
  border-radius: var(--radius-sm);
  z-index: 300;
  max-height: 260px;
  overflow-y: auto;
  box-shadow: 0 12px 32px rgba(0,0,0,.45);
}
.search-item {
  display: flex;
  align-items: center;
  padding: 9px 14px;
  font-size: .8rem;
  color: #cbd0da;
  gap: 8px;
  border-bottom: 1px solid rgba(255,255,255,.04);
  transition: background .1s;
}
.search-item:last-child { border-bottom: none; }
.search-item:hover { background: rgba(255,255,255,.06); color: #fff; }
.search-item small { margin-left: auto; font-size: .68rem; color: #565b68; }

/* ── Nav ────────────────────────────────── */
.nav-section {
  padding: 15px 20px 6px;
  font-size: .64rem;
  font-weight: 600;
  letter-spacing: .09em;
  text-transform: uppercase;
  color: #4a4f5c;
}
.nav-section:first-of-type { padding-top: 6px; }

#sidebar .nav-link {
  display: flex;
  align-items: center;
  gap: 11px;
  color: #9aa0ad;
  padding: 8px 12px;
  border-radius: var(--radius-sm);
  font-size: .845rem;
  font-weight: 500;
  margin: 1px 10px;
  transition: background .12s, color .12s;
}
#sidebar .nav-link:hover {
  background: var(--sidebar-hover);
  color: #e3e6ec;
}
#sidebar .nav-link.active {
  background: var(--sidebar-hover);
  color: #fff;
  font-weight: 550;
}
#sidebar .nav-link.active i { color: #a3a0f5; }
#sidebar .nav-link i {
  font-size: .95rem;
  width: 18px;
  text-align: center;
  flex-shrink: 0;
  color: #6b7080;
  transition: color .12s;
}

/* ── Sidebar Footer ─────────────────────── */
.sidebar-footer {
  margin-top: auto;
  padding: 12px 14px;
  border-top: 1px solid rgba(255,255,255,.05);
  flex-shrink: 0;
}
.avatar {
  width: 32px; height: 32px;
  border-radius: 8px;
  background: rgba(var(--accent-rgb), .9);
  color: #fff;
  font-size: .82rem;
  font-weight: 600;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}

/* ── Page Header ────────────────────────── */
.page-header {
  background: var(--card-bg);
  padding: 17px 28px;
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.page-header h1 {
  font-size: 1.15rem;
  font-weight: 650;
  margin: 0;
  letter-spacing: -.015em;
  color: var(--text);
}
.page-header h1 i { color: var(--text-muted) !important; font-size: .95em; }
.page-header .breadcrumb { margin: 3px 0 0; font-size: .74rem; }
.page-header .breadcrumb-item.active { color: var(--text-muted); }
.page-header .breadcrumb-item a { color: var(--text-muted); }
.page-header .breadcrumb-item + .breadcrumb-item::before { color: var(--border); }

/* ── Stat Cards ─────────────────────────── */
.stat-card {
  background: var(--card-bg);
  border-radius: var(--radius);
  padding: 16px 18px;
  box-shadow: var(--shadow);
  border: 1px solid var(--border);
  transition: box-shadow .15s, border-color .15s;
}
.stat-card:hover { box-shadow: var(--shadow-md); border-color: #dfe2e8; }

.sc-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  margin-bottom: 14px;
  gap: 10px;
}
.sc-chip {
  width: 30px; height: 30px;
  border-radius: 8px;
  display: flex; align-items: center; justify-content: center;
  font-size: .95rem;
  flex-shrink: 0;
}
.sc-chip.c-brand  { background: var(--accent-soft); color: var(--accent); }
.sc-chip.c-ok     { background: var(--ok-soft);     color: var(--ok); }
.sc-chip.c-warn   { background: var(--warn-soft);   color: var(--warn); }
.sc-chip.c-danger { background: var(--danger-soft); color: var(--danger); }
.sc-chip.c-slate  { background: #eef0f3;            color: #5c6472; }

.stat-card .sc-label {
  font-size: .75rem;
  font-weight: 500;
  color: var(--text-muted);
  padding-top: 3px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.stat-card .sc-value {
  font-size: 1.6rem;
  font-weight: 600;
  color: var(--text);
  line-height: 1;
  letter-spacing: -.025em;
}
.stat-card .sc-value.t-warn   { color: var(--warn); }
.stat-card .sc-value.t-danger { color: var(--danger); }
.stat-card .sc-sub {
  font-size: .72rem;
  color: var(--text-muted);
  margin-top: 7px;
  display: flex;
  align-items: center;
  gap: 3px;
}
.stat-card .sc-sub.up { color: var(--ok); }

/* ── Dashboard 2-col + resumo rápido ────── */
.dash-2col {
  display: grid;
  grid-template-columns: 1.6fr 1fr;
  gap: 16px;
}
.quick-list { display: flex; flex-direction: column; gap: 6px; }
.quick-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 7px 0;
}
.quick-item + .quick-item { border-top: 1px solid var(--border-soft); }
.qi-chip {
  width: 34px; height: 34px;
  border-radius: 9px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1rem;
  flex-shrink: 0;
}
.qi-chip.c-brand  { background: var(--accent-soft); color: var(--accent); }
.qi-chip.c-warn   { background: var(--warn-soft);   color: var(--warn); }
.qi-chip.c-slate  { background: #eef0f3;            color: #5c6472; }
.qi-body { flex: 1; min-width: 0; }
.qi-label { font-size: .75rem; color: var(--text-muted); }
.qi-value { font-size: .98rem; font-weight: 600; color: var(--text); letter-spacing: -.01em; }

@media (max-width: 860px) {
  .dash-2col { grid-template-columns: 1fr; }
}

/* legacy icon-box (outras páginas) */
.icon-box {
  width: 42px; height: 42px;
  border-radius: 11px;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}

/* ── Table Card ─────────────────────────── */
.table-card {
  background: var(--card-bg);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  border: 1px solid var(--border);
  overflow: hidden;
}
.table-card-header {
  padding: 15px 20px;
  border-bottom: 1px solid var(--border-soft);
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.table-card-header h5 {
  margin: 0;
  font-size: .9rem;
  font-weight: 600;
  color: var(--text);
  display: flex;
  align-items: center;
}
.table-card-header h5 i { color: var(--text-muted); }

/* section title inside cards */
.card-title-lg {
  font-size: .95rem;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 4px;
  display: flex;
  align-items: center;
}
.card-subtitle {
  font-size: .78rem;
  color: var(--text-muted);
  margin-bottom: 16px;
}

/* ── Tables ─────────────────────────────── */
table.dataTable thead th,
.table thead th {
  font-size: .68rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--text-muted);
  background: #fbfbfa;
  border-bottom: 1px solid var(--border) !important;
  border-top: none !important;
  padding: 10px 16px;
  white-space: nowrap;
}
table.dataTable tbody td,
.table tbody td {
  font-size: .855rem;
  vertical-align: middle;
  padding: 12px 16px;
  border-bottom: 1px solid var(--border-soft);
  color: var(--text-soft);
}
.table tbody td strong { color: var(--text); font-weight: 600; }
table.dataTable tbody tr:last-child td,
.table tbody tr:last-child td { border-bottom: none; }
table.dataTable tbody tr:hover td,
.table tbody tr:hover td { background: #fafaf9; }

/* ── DataTables controls ────────────────── */
.dataTables_wrapper .dataTables_filter input {
  border-radius: var(--radius-sm);
  border: 1px solid var(--border);
  padding: 6px 11px;
  font-size: .82rem;
  color: var(--text);
}
.dataTables_wrapper .dataTables_filter input:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(var(--accent-rgb), .1);
}
.dataTables_wrapper .dataTables_length select {
  border-radius: var(--radius-sm);
  border: 1px solid var(--border);
  padding: 5px 8px;
  font-size: .82rem;
}
.dataTables_info { font-size: .78rem; color: var(--text-muted); }
.dataTables_paginate .paginate_button { border-radius: 6px !important; font-size: .8rem !important; }
.dataTables_paginate .paginate_button.current,
.dataTables_paginate .paginate_button.current:hover {
  background: var(--accent) !important;
  border-color: var(--accent) !important;
  color: #fff !important;
}
.dataTables_paginate .paginate_button:hover {
  background: var(--accent-soft) !important;
  border-color: transparent !important;
  color: var(--accent) !important;
}

/* ── Badges ─────────────────────────────── */
.badge { font-weight: 600; letter-spacing: 0; }
.badge.bg-primary { background: var(--accent) !important; }
.badge-status  { font-size: .7rem; padding: 4px 10px; border-radius: 6px; font-weight: 600; display: inline-flex; align-items: center; }
.badge-ok      { background: #e7f4ec; color: var(--ok); }
.badge-warn    { background: #fbf1dd; color: var(--warn); }
.badge-danger  { background: #fbe8e8; color: var(--danger); }
.badge-off     { background: #f0f0ee; color: var(--text-muted); }
.badge-entrada { background: #e7f4ec; color: var(--ok); }
.badge-saida   { background: #fbf1dd; color: var(--warn); }

/* ── Nome copiável (telefone) ───────────── */
.nome-copiavel {
  font-weight: 600;
  color: var(--text);
  cursor: pointer;
  border-bottom: 1px dashed transparent;
  transition: border-color .12s, color .12s;
}
.nome-copiavel:hover { color: var(--accent); border-bottom-color: rgba(var(--accent-rgb), .45); }
.nome-copiavel .nc-icon {
  font-size: .72rem;
  margin-left: 5px;
  opacity: 0;
  color: var(--text-muted);
  transition: opacity .12s;
}
.nome-copiavel:hover .nc-icon { opacity: 1; color: var(--accent); }

/* ── Vencimento ─────────────────────────── */
.venc-date { font-weight: 600; font-size: .82rem; }
.venc-date.ok     { color: var(--ok); }
.venc-date.warn   { color: var(--warn); }
.venc-date.danger { color: var(--danger); }

/* ── Misc ───────────────────────────────── */
.color-dot {
  width: 9px; height: 9px;
  border-radius: 50%;
  display: inline-block;
  flex-shrink: 0;
}
.color-preview {
  width: 36px; height: 36px;
  border-radius: 8px;
  border: 1px solid var(--border);
  cursor: pointer;
  flex-shrink: 0;
}
code {
  background: #f2f2f0;
  color: var(--text-soft);
  padding: 1px 6px;
  border-radius: 4px;
  font-size: .82em;
  font-family: 'SF Mono', 'Cascadia Code', Consolas, monospace;
}

/* ── Alert banner ───────────────────────── */
.alert-banner {
  border-radius: 0;
  border: none;
  border-bottom: 1px solid #f0e2c0;
  background: #fdf8ec;
  color: #8a6d2f;
  margin: 0;
  padding: 11px 28px;
  font-size: .84rem;
}
.alert-banner .alert-link { color: #7a5d1f; font-weight: 600; }
.alert-banner .btn-close { font-size: .7rem; }

/* ── Buttons ────────────────────────────── */
.btn { border-radius: var(--radius-sm); font-weight: 550; font-size: .83rem; padding: 7px 14px; }
.btn-sm { padding: 5px 10px; font-size: .79rem; }
.btn-primary { background: var(--accent); border-color: var(--accent); }
.btn-primary:hover, .btn-primary:focus, .btn-primary:active { background: var(--accent-dark) !important; border-color: var(--accent-dark) !important; }
.btn-primary:focus-visible { box-shadow: 0 0 0 3px rgba(var(--accent-rgb), .3); }
.btn-outline-primary { color: var(--accent); border-color: #d6d4f2; }
.btn-outline-primary:hover { background: var(--accent); border-color: var(--accent); }
.btn-outline-secondary { color: var(--text-soft); border-color: var(--border); }
.btn-outline-secondary:hover { background: #f2f2f0; border-color: var(--border); color: var(--text); }
.btn-secondary { background: #f2f2f0; border-color: var(--border); color: var(--text-soft); }
.btn-secondary:hover { background: #e9e8e4; border-color: var(--border); color: var(--text); }
.btn-success { background: var(--ok); border-color: var(--ok); }
.btn-success:hover { background: #268052; border-color: #268052; }
.btn-outline-success { color: var(--ok); border-color: #bfe0cd; }
.btn-outline-success:hover { background: var(--ok); border-color: var(--ok); }
.btn-outline-danger { color: var(--danger); border-color: #eec4c4; }
.btn-outline-danger:hover { background: var(--danger); border-color: var(--danger); }

/* ── Forms ──────────────────────────────── */
.form-label { font-size: .8rem; font-weight: 550; color: var(--text-soft); margin-bottom: 5px; }
.form-text { font-size: .74rem; color: var(--text-muted); }
.form-control, .form-select {
  border-radius: var(--radius-sm);
  border: 1px solid var(--border);
  font-size: .875rem;
  padding: 8px 12px;
  color: var(--text);
  background-color: #fff;
}
.form-control::placeholder { color: #b3b7bf; }
.form-control:focus, .form-select:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(var(--accent-rgb), .1);
}
.input-group-text {
  background: #fbfbfa;
  border-color: var(--border);
  color: var(--text-muted);
  font-size: .82rem;
}

/* ── Select2 ────────────────────────────── */
.select2-container--bootstrap-5 .select2-selection {
  border-radius: var(--radius-sm);
  border: 1px solid var(--border);
  font-size: .875rem;
  min-height: 40px;
}
.select2-container--bootstrap-5.select2-container--focus .select2-selection,
.select2-container--bootstrap-5.select2-container--open  .select2-selection {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(var(--accent-rgb), .1);
}
.select2-container--bootstrap-5 .select2-dropdown {
  border-radius: var(--radius-sm);
  border: 1px solid var(--border);
  box-shadow: var(--shadow-md);
  font-size: .875rem;
}
.select2-container--bootstrap-5 .select2-results__option--highlighted { background: var(--accent); }

/* ── Modals ─────────────────────────────── */
.modal-content { border-radius: 14px; border: none; box-shadow: 0 24px 60px rgba(28,31,38,.18); }
.modal-header  { border-bottom: 1px solid var(--border-soft); padding: 17px 22px; }
.modal-header .modal-title i { color: var(--text-muted); }
.modal-body    { padding: 22px; }
.modal-footer  { border-top: 1px solid var(--border-soft); padding: 14px 22px; }
.modal-title   { font-weight: 600; font-size: .95rem; }

/* ── Login (split-screen) ───────────────── */
.login-split {
  display: flex;
  align-items: stretch;
  min-height: 100vh;
  min-height: 100dvh;
}

.login-brand {
  width: 46%;
  max-width: 560px;
  background: #14161d;
  color: #eceef3;
  padding: 52px 48px;
  display: flex;
  flex-direction: column;
}
.login-brand-top { display: flex; align-items: center; gap: 12px; }
.login-brand-name { font-size: 1.05rem; font-weight: 600; letter-spacing: -.01em; }
.login-brand-mid { margin-top: auto; }
.login-brand-mid h2 {
  font-size: 1.9rem;
  font-weight: 650;
  line-height: 1.25;
  letter-spacing: -.025em;
  margin: 0 0 14px;
  color: #f4f5f8;
  max-width: 15ch;
}
.login-brand-mid p {
  font-size: .95rem;
  color: #9aa0ad;
  line-height: 1.6;
  margin: 0;
  max-width: 42ch;
}
.login-features { list-style: none; padding: 0; margin: 34px 0 0; }
.login-features li {
  display: flex; align-items: center; gap: 10px;
  font-size: .9rem; color: #c4c8d0;
  padding: 7px 0;
}
.login-features li i { color: #a3a0f5; font-size: 1rem; }
.login-brand-foot { margin-top: auto; padding-top: 34px; font-size: .78rem; color: #565b68; }

.login-form-side {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--body-bg);
  padding: 40px 24px;
}
.login-form-wrap { width: 100%; max-width: 372px; }
.login-form-wrap h1 {
  font-size: 1.5rem;
  font-weight: 650;
  letter-spacing: -.025em;
  margin: 0 0 6px;
  color: var(--text);
}
.login-sub { font-size: .9rem; color: var(--text-muted); margin: 0 0 28px; }

.login-logo {
  width: 40px; height: 40px;
  border-radius: 11px;
  background: var(--accent);
  display: inline-flex; align-items: center; justify-content: center;
  color: #fff; font-size: 1.25rem;
  flex-shrink: 0;
}
.login-input-toggle {
  border: 1px solid var(--border);
  border-left: none;
  background: #fff;
  color: var(--text-muted);
  padding: 0 12px;
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
}
.login-input-toggle:hover { color: var(--text); }

@media (max-width: 860px) {
  .login-brand { display: none; }
}

/* ── Content padding ────────────────────── */
#page-content > .p-4 { padding: 22px 28px 28px !important; }
.table-card.p-4 { padding: 22px !important; }

/* ── Responsive ─────────────────────────── */
@media (max-width: 768px) {
  #sidebar { width: 60px; }
  #sidebar .sidebar-brand-name,
  #sidebar .sidebar-brand-tag,
  #sidebar .nav-link span,
  #sidebar .nav-section,
  #sidebar .sidebar-search,
  .sidebar-footer .flex-grow-1 { display: none; }
  #sidebar .nav-link { justify-content: center; }
  #page-content { margin-left: 60px; }
  #page-content > .p-4 { padding: 16px 16px 22px !important; }
  .page-header { padding: 15px 18px; }
}
