:root{
  --brand:#1f6feb;
  --brand-2:#0b57d0;
  --brand-soft:rgba(31,111,235,.12);
  --success:#18a957;
  --danger:#d93025;
  --warning:#f59e0b;
  --radius:18px;
  --radius-sm:14px;
  --shadow-sm:0 8px 24px rgba(15,23,42,.08);
  --shadow-md:0 14px 32px rgba(15,23,42,.12);
  --transition:.18s ease;

  --bg:#f4f7fb;
  --bg-2:#edf2f8;
  --surface:#ffffff;
  --surface-2:#f8fbff;
  --text:#17212f;
  --muted:#64748b;
  --line:rgba(15,23,42,.10);
  --line-strong:rgba(15,23,42,.16);
  --input-bg:#ffffff;
  --focus:0 0 0 .22rem rgba(31,111,235,.18);
  --offline-bg:#fff4e5;
  --offline-text:#9a5800;
}

html[data-theme="dark"]{
  --brand:#58a6ff;
  --brand-2:#2f81f7;
  --brand-soft:rgba(88,166,255,.14);
  --bg:#0d1522;
  --bg-2:#0a111c;
  --surface:#111c2d;
  --surface-2:#162338;
  --text:#eef4ff;
  --muted:#9bb0ca;
  --line:rgba(148,163,184,.16);
  --line-strong:rgba(148,163,184,.24);
  --input-bg:#0f1a2b;
  --focus:0 0 0 .22rem rgba(88,166,255,.18);
  --offline-bg:#3a2d11;
  --offline-text:#ffd28a;
  --shadow-sm:0 10px 26px rgba(0,0,0,.30);
  --shadow-md:0 18px 42px rgba(0,0,0,.38);
}

html,body{
  min-height:100%;
  background:
    radial-gradient(900px 420px at 10% -10%, rgba(31,111,235,.08), transparent 55%),
    radial-gradient(700px 380px at 90% 0, rgba(88,166,255,.08), transparent 55%),
    linear-gradient(180deg, var(--bg), var(--bg-2)) !important;
  background-color:var(--bg) !important;
  color:var(--text) !important;
  font-family: Inter, Roboto, "Segoe UI", system-ui, -apple-system, sans-serif;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

body.theme-ready{transition:background-color var(--transition), color var(--transition);}
*{scrollbar-width:thin; scrollbar-color:rgba(100,116,139,.45) transparent;}
*::-webkit-scrollbar{width:8px;height:8px}
*::-webkit-scrollbar-thumb{background:rgba(100,116,139,.35);border-radius:999px}

a{text-decoration:none;color:inherit}
a:hover{color:inherit}
img{max-width:100%}

.app-wrap{padding:14px 14px calc(var(--bottomnav-h,76px) + 22px) !important;max-width:980px;margin:0 auto;}
.container,.container-fluid,main,section,.page-pad,.app-wrap{background:transparent !important;}

.text-muted,.small.text-muted,.card .text-muted{color:var(--muted) !important;}
.text-dark{color:var(--text) !important;}
.section-title{font-weight:800;letter-spacing:-.02em;color:var(--text)}

.card,
.modal-content,
.offcanvas,
.dropdown-menu,
.list-group-item,
.alert{
  border-radius:var(--radius) !important;
  border:1px solid var(--line) !important;
  background:linear-gradient(180deg, color-mix(in srgb, var(--surface) 92%, transparent), color-mix(in srgb, var(--surface-2) 88%, transparent)) !important;
  color:var(--text) !important;
  box-shadow:var(--shadow-sm) !important;
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
}

.card-header,.card-body,.card-footer{background:transparent !important;color:var(--text) !important;}
.card-header{border-bottom:1px solid var(--line) !important;}
.card-footer{border-top:1px solid var(--line) !important;}

.bg-white,.bg-light,.bg-body,.bg-body-tertiary,.bg-body-secondary{background:var(--surface) !important;color:var(--text) !important;}
.border,.border-top,.border-bottom,.border-start,.border-end{border-color:var(--line) !important;}
.shadow,.shadow-sm,.shadow-lg{box-shadow:var(--shadow-sm) !important;}

.btn{
  min-height:48px;
  border-radius:14px !important;
  font-weight:700 !important;
  box-shadow:none !important;
  transition:transform var(--transition), background var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
}
.btn:active{transform:translateY(1px)}
.btn:focus,.btn:focus-visible{box-shadow:var(--focus) !important}
.btn-sm{min-height:40px}
.btn-lg{min-height:54px;border-radius:16px !important}
.btn-brand,.btn-primary{
  background:linear-gradient(180deg, var(--brand), var(--brand-2)) !important;
  border-color:transparent !important;
  color:#fff !important;
}
.btn-brand:hover,.btn-primary:hover{filter:brightness(1.04)}
.btn-outline-secondary,.btn-outline-primary{
  color:var(--text) !important;
  border-color:var(--line-strong) !important;
  background:var(--surface) !important;
}
.btn-outline-secondary:hover,.btn-outline-primary:hover{background:var(--brand-soft) !important;border-color:var(--brand) !important;color:var(--brand) !important}

.form-control,.form-select,.input-group-text,textarea,select,input{
  min-height:50px;
  border-radius:14px !important;
  background:var(--input-bg) !important;
  border:1px solid var(--line-strong) !important;
  color:var(--text) !important;
}
textarea.form-control{min-height:110px}
.form-control::placeholder{color:color-mix(in srgb, var(--muted) 85%, transparent) !important}
.form-control:focus,.form-select:focus,textarea:focus,select:focus,input:focus{border-color:var(--brand) !important;box-shadow:var(--focus) !important;outline:none !important}
label,.form-label{font-weight:700;color:var(--text);margin-bottom:8px}

.badge,.text-bg-light,.badge.bg-light{
  background:var(--brand-soft) !important;
  color:var(--brand) !important;
  border:1px solid color-mix(in srgb, var(--brand) 30%, transparent) !important;
}

.table{color:var(--text) !important;--bs-table-bg:transparent !important;}
.table thead th{font-size:.84rem;letter-spacing:.02em;text-transform:uppercase;color:var(--muted) !important;border-bottom-color:var(--line-strong) !important}
.table td,.table th{border-color:var(--line) !important;vertical-align:middle}
.table-hover tbody tr:hover{background:var(--brand-soft) !important}
.table-responsive{border-radius:16px;border:1px solid var(--line);overflow:hidden;background:var(--surface)}

.kpi{
  border-radius:18px;
  padding:16px;
  background:linear-gradient(180deg, color-mix(in srgb, var(--brand-soft) 75%, var(--surface)), var(--surface));
  border:1px solid color-mix(in srgb, var(--brand) 16%, var(--line));
  box-shadow:var(--shadow-sm);
}
.kpi .label{color:var(--muted);font-size:.82rem}
.kpi .value{font-size:1.55rem;font-weight:800;letter-spacing:-.03em;color:var(--text)}
.kpi .sub{color:var(--muted);font-size:.8rem}

.page-title{font-size:clamp(1.5rem, 2vw + 1rem, 2rem);font-weight:800;letter-spacing:-.03em;margin:0;color:var(--text)}
.page-subtitle{color:var(--muted);margin-top:4px}

.app-section{margin-bottom:14px}
.quick-card{padding:16px;border-radius:18px;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-sm)}

.mobile-stack-table{display:block}
@media (max-width: 768px){
  .app-wrap{padding-inline:12px}
  .page-title{font-size:1.8rem}
  .card{border-radius:18px !important}
  .table-responsive table thead{display:none}
  .table-responsive table,
  .table-responsive tbody,
  .table-responsive tr,
  .table-responsive td{display:block;width:100%}
  .table-responsive tr{padding:12px;border-bottom:1px solid var(--line);background:transparent}
  .table-responsive td{padding:6px 0 !important;border:0 !important;text-align:left !important}
}

.status-chip{
  display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;font-size:.86rem;font-weight:700;
  background:var(--brand-soft);color:var(--brand);border:1px solid color-mix(in srgb, var(--brand) 22%, transparent);
}
.status-chip.success{background:rgba(24,169,87,.12);color:var(--success);border-color:rgba(24,169,87,.24)}
.status-chip.danger{background:rgba(217,48,37,.12);color:var(--danger);border-color:rgba(217,48,37,.24)}
.status-chip.warning{background:rgba(245,158,11,.12);color:#b26a00;border-color:rgba(245,158,11,.24)}

.topbar-spacer{height:calc(var(--appbar-h,78px) + 8px)}

#globalOfflineBanner{
  position:fixed;left:12px;right:12px;bottom:calc(var(--bottomnav-h,76px) + 10px);z-index:1040;
  display:none;align-items:center;justify-content:space-between;gap:10px;
  padding:12px 14px;border-radius:16px;border:1px solid color-mix(in srgb, var(--offline-text) 25%, transparent);
  background:var(--offline-bg);color:var(--offline-text);box-shadow:var(--shadow-md);
}
#globalOfflineBanner.show{display:flex}
#globalOfflineBanner .offline-actions{display:flex;gap:8px;flex-wrap:wrap}
#globalOfflineBanner .btn{min-height:40px}

#globalLoading{
  position:fixed;inset:0;display:none;align-items:center;justify-content:center;z-index:2000;
  background:rgba(15,23,42,.22);backdrop-filter:blur(3px);
}
#globalLoading.show{display:flex}
#globalLoading .loading-card{
  background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:18px 20px;box-shadow:var(--shadow-md);display:flex;align-items:center;gap:12px;font-weight:700;color:var(--text);
}

.toast-stack{position:fixed;right:14px;bottom:calc(var(--bottomnav-h,76px) + 90px);z-index:2050;display:flex;flex-direction:column;gap:10px;pointer-events:none}
.toast-lite{pointer-events:auto;padding:12px 14px;border-radius:14px;background:var(--surface);color:var(--text);border:1px solid var(--line);box-shadow:var(--shadow-md);min-width:240px;max-width:min(92vw,360px);font-weight:600}
.toast-lite.success{border-color:rgba(24,169,87,.26)}
.toast-lite.error{border-color:rgba(217,48,37,.26)}

.theme-option{
  width:100%;padding:18px;border-radius:18px;border:1px solid var(--line);background:var(--surface);color:var(--text);text-align:left;display:flex;align-items:center;gap:14px;font-weight:700;
}
.theme-option:hover{border-color:var(--brand);background:var(--brand-soft)}
.theme-option .icon{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;font-size:1.4rem;background:var(--brand-soft);color:var(--brand)}
.theme-toggle-btn,.icon-btn{
  width:42px;height:42px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--text);display:inline-flex;align-items:center;justify-content:center;
}
.theme-toggle-btn:hover,.icon-btn:hover{background:var(--brand-soft);color:var(--brand);border-color:var(--brand)}

/* Ajuste de contraste para o tema claro: classes Bootstrap usadas em telas escuras não podem ficar brancas no fundo claro. */
.btn-outline-light{
  color:var(--text) !important;
  border-color:var(--line-strong) !important;
  background:transparent !important;
}
.btn-outline-light:hover,.btn-outline-light:focus{
  color:var(--brand) !important;
  border-color:var(--brand) !important;
  background:var(--brand-soft) !important;
}
html[data-theme="light"] .text-white,
html[data-theme="light"] .text-white-50{
  color:var(--muted) !important;
  opacity:1 !important;
}

.list-link{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-radius:16px;background:var(--surface);border:1px solid var(--line);font-weight:700;color:var(--text)}
.list-link:hover{background:var(--brand-soft);border-color:var(--brand);color:var(--brand)}

.empty-state{padding:20px;border:1px dashed var(--line-strong);border-radius:18px;background:color-mix(in srgb, var(--surface) 92%, transparent);text-align:center;color:var(--muted)}

.login-shell{min-height:100vh;display:grid;place-items:center;padding:18px;background:transparent}
.login-card{width:min(100%,430px);padding:24px;border-radius:24px;border:1px solid var(--line);background:linear-gradient(180deg, var(--surface), var(--surface-2));box-shadow:var(--shadow-md)}
.login-brand{display:flex;align-items:center;gap:14px;margin-bottom:18px}
.login-brand .logo-wrap{width:64px;height:64px;border-radius:18px;background:#fff;display:grid;place-items:center;padding:8px;box-shadow:var(--shadow-sm)}
.login-brand h1{font-size:1.55rem;font-weight:800;letter-spacing:-.03em;margin:0;color:var(--text)}
.login-hero{color:var(--muted);margin-bottom:18px}

@media (min-width: 992px){
  .app-wrap{padding-top:18px}
}

/* Correção extra de contraste no tema claro para botões herdados do Bootstrap. */
html[data-theme="light"] .btn-outline-light{
  --bs-btn-color: var(--text);
  --bs-btn-border-color: var(--line-strong);
  --bs-btn-hover-color: var(--brand);
  --bs-btn-hover-bg: var(--brand-soft);
  --bs-btn-hover-border-color: var(--brand);
  --bs-btn-active-color: var(--brand);
  --bs-btn-active-bg: var(--brand-soft);
  --bs-btn-active-border-color: var(--brand);
  color:var(--text) !important;
  border-color:var(--line-strong) !important;
  background:rgba(255,255,255,.72) !important;
}
html[data-theme="light"] .btn-outline-info{
  --bs-btn-color:#075985;
  --bs-btn-border-color:rgba(7,89,133,.34);
  --bs-btn-hover-color:#075985;
  --bs-btn-hover-bg:rgba(14,165,233,.12);
  --bs-btn-hover-border-color:rgba(7,89,133,.55);
  color:#075985 !important;
  border-color:rgba(7,89,133,.34) !important;
  background:rgba(255,255,255,.72) !important;
}
html[data-theme="light"] .btn-outline-warning{
  --bs-btn-color:#7c4a03;
  --bs-btn-border-color:rgba(180,114,0,.40);
  --bs-btn-hover-color:#7c4a03;
  --bs-btn-hover-bg:rgba(245,158,11,.14);
  --bs-btn-hover-border-color:rgba(180,114,0,.60);
  color:#7c4a03 !important;
  border-color:rgba(180,114,0,.40) !important;
  background:rgba(255,255,255,.72) !important;
}
html[data-theme="light"] .btn:disabled,
html[data-theme="light"] .btn.disabled{
  color:var(--muted) !important;
  border-color:var(--line) !important;
  background:rgba(248,251,255,.86) !important;
  opacity:.78 !important;
}
html[data-theme="light"] .feedback-text,
html[data-theme="light"] .feedback-autoclose{
  color:var(--muted) !important;
}
