/* =====================================================================
   Nivix Design System — tema aplicado sobre SB Admin 2 / Bootstrap 4
   Fonte de verdade: design/README.md  (Nivix Tecnologia Predial)
   Carregado DEPOIS do sb-admin-2 para sobrescrever os tokens do tema.
   ===================================================================== */

:root {
    /* Primária — Azul Nivix */
    --blue-50:  #EEF3FF;
    --blue-100: #DCE6FF;
    --blue-200: #B9CDFF;
    --blue-300: #8FACFF;
    --blue-400: #5F84FB;
    --blue-500: #3A60F0;   /* primária */
    --blue-600: #2B49D4;   /* hover/pressed */
    --blue-700: #2239A8;
    --blue-800: #1E3082;
    --blue-900: #0F1A3D;   /* navy — fundos escuros / drawer */

    /* Neutros frios */
    --n-50:  #F7F8FC;
    --n-100: #F0F2F8;
    --n-200: #E2E6EF;
    --n-300: #C5CCDB;
    --n-400: #98A2B8;
    --n-500: #6B7690;
    --n-600: #4A5570;
    --n-700: #2C3650;
    --n-900: #0E1422;
    --app-bg: #EDF0F8;

    /* Semânticas (status) */
    --ok-solid:   #1F9D6B;  --ok-text:   #15724E;  --ok-bg:   #E2F4EC;
    --warn-solid: #E08A1E;  --warn-text: #9A5A09;  --warn-bg: #FCEFD9;
    --err-solid:  #D6443C;  --err-text:  #9E2A24;  --err-bg:  #FBE4E2;
    --info-solid: #3A60F0;  --info-text: #2239A8;  --info-bg: #DCE6FF;

    /* Elevação */
    --sh-sm: 0 1px 2px rgba(15,26,61,.08);
    --sh-md: 0 6px 16px rgba(15,26,61,.10);
    --sh-primary: 0 6px 16px rgba(58,96,240,.30);
    --sh-lg: 0 16px 36px rgba(15,26,61,.16);

    /* Raios */
    --r-sm: 8px;
    --r-md: 13px;
    --r-lg: 18px;

    /* Mapear a paleta "primary" do Bootstrap para o azul Nivix */
    --primary: var(--blue-500);
    --bs-primary: var(--blue-500);
}

/* ---------------------------------------------------------- Tipografia */
body,
.sidebar,
.btn,
.form-control,
input, select, textarea,
.dataTables_wrapper {
    font-family: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6,
.sidebar-brand-text,
.font-weight-bold {
    font-family: 'Sora', 'Manrope', sans-serif;
    letter-spacing: -.02em;
}

body {
    background-color: var(--app-bg);
    color: var(--n-900);
}

/* ------------------------------------------------------ Cores primárias */
.text-primary   { color: var(--blue-500) !important; }
.bg-primary     { background-color: var(--blue-500) !important; }
.border-primary { border-color: var(--blue-500) !important; }
a               { color: var(--blue-500); }
a:hover         { color: var(--blue-600); }

/* --------------------------------------------------------------- Sidebar
   Drawer navy do Nivix (#0F1A3D) no lugar do gradiente roxo do SB Admin 2. */
.sidebar,
.bg-gradient-primary {
    background-color: var(--blue-900) !important;
    background-image: none !important;
}

.sidebar-dark .sidebar-heading { color: rgba(255,255,255,.45) !important; text-transform: uppercase; letter-spacing: .12em; font-size: .7rem; }
.sidebar-dark .nav-item .nav-link            { color: rgba(255,255,255,.78); border-radius: var(--r-md); margin: 2px 10px; padding: 12px 14px; }
.sidebar-dark .nav-item .nav-link i          { color: rgba(255,255,255,.55); }
.sidebar-dark .nav-item .nav-link:hover      { color: #fff; background: rgba(255,255,255,.06); }
.sidebar-dark .nav-item .nav-link:hover i    { color: #fff; }
.sidebar-dark .nav-item.active .nav-link,
.sidebar-dark .nav-item .nav-link.active     { background: var(--blue-500); color: #fff; }
.sidebar-dark .nav-item.active .nav-link i,
.sidebar-dark .nav-item .nav-link.active i   { color: #fff; }
.sidebar-dark hr.sidebar-divider             { border-top-color: rgba(255,255,255,.10); }
.sidebar .collapse-inner, .sidebar .collapsing .collapse-inner { border-radius: var(--r-md); }
.sidebar-dark .collapse-item                 { color: var(--n-700); border-radius: 8px; }
.sidebar-dark .collapse-item:hover           { background: var(--blue-50); color: var(--blue-700); }

/* ---------------------------------------------------------------- Topbar */
.topbar {
    box-shadow: var(--sh-sm) !important;
    border-radius: 0 0 var(--r-lg) var(--r-lg);
}
.topbar .nav-item .nav-link { color: var(--n-500); }

/* ----------------------------------------------------------------- Cards */
.card {
    border: 1px solid var(--n-200);
    border-radius: var(--r-lg);
    box-shadow: var(--sh-sm);
}
.card .card-header {
    background: #fff;
    border-bottom: 1px solid var(--n-100);
    border-radius: var(--r-lg) var(--r-lg) 0 0 !important;
}
.shadow { box-shadow: var(--sh-md) !important; }

/* --------------------------------------------------------------- Botões */
.btn {
    border-radius: var(--r-md);
    font-weight: 600;
    padding: .55rem 1rem;
    min-height: 42px;
}
.btn-primary {
    background-color: var(--blue-500);
    border-color: var(--blue-500);
    box-shadow: var(--sh-primary);
}
.btn-primary:hover, .btn-primary:focus, .btn-primary:active {
    background-color: var(--blue-600) !important;
    border-color: var(--blue-600) !important;
}
.btn-secondary {
    background-color: var(--blue-100);
    border-color: var(--blue-100);
    color: var(--blue-700);
}
.btn-secondary:hover { background-color: var(--blue-200); border-color: var(--blue-200); color: var(--blue-800); }
.btn-success { background-color: var(--ok-solid);   border-color: var(--ok-solid); }
.btn-danger  { background-color: var(--err-solid);  border-color: var(--err-solid); }
.btn-warning { background-color: var(--warn-solid); border-color: var(--warn-solid); color: #fff; }
.btn-info    { background-color: var(--blue-400);   border-color: var(--blue-400); color: #fff; }
.btn-outline-danger { color: var(--err-solid); border-color: var(--err-solid); }
.btn-outline-danger:hover { background-color: var(--err-solid); border-color: var(--err-solid); }
.btn:disabled, .btn.disabled { background-color: var(--n-100); border-color: var(--n-100); color: var(--n-400); box-shadow: none; }

/* --------------------------------------------------------------- Inputs */
.form-control {
    border: 1.5px solid var(--n-200);
    border-radius: 12px;
    padding: .65rem .85rem;
    color: var(--n-900);
    background-color: #fff;
}
.form-control::placeholder { color: var(--n-400); }
.form-control:focus {
    border-color: var(--blue-500);
    box-shadow: 0 0 0 4px rgba(58,96,240,.12);
}
.form-control:disabled, .form-control[readonly] {
    background-color: var(--n-100);
    color: var(--n-400);
}
label { color: var(--n-700); font-weight: 600; font-size: .85rem; }
select.form-control { appearance: none; }

/* ------------------------------------------------------ Badges / pills */
.badge {
    border-radius: 999px;
    font-weight: 600;
    padding: .4em .8em;
    font-size: .72rem;
}
.badge-primary   { background-color: var(--info-bg);  color: var(--info-text); }
.badge-success   { background-color: var(--ok-bg);    color: var(--ok-text); }
.badge-warning   { background-color: var(--warn-bg);  color: var(--warn-text); }
.badge-danger    { background-color: var(--err-bg);   color: var(--err-text); }
.badge-info      { background-color: var(--info-bg);  color: var(--info-text); }
.badge-secondary { background-color: var(--n-100);    color: var(--n-600); }
.badge-dark      { background-color: var(--n-700);    color: #fff; }

/* --------------------------------------------------------------- Alerts */
.alert { border-radius: var(--r-md); border: none; }
.alert-info    { background-color: var(--info-bg); color: var(--info-text); }
.alert-success { background-color: var(--ok-bg);   color: var(--ok-text); }
.alert-warning { background-color: var(--warn-bg); color: var(--warn-text); }
.alert-danger  { background-color: var(--err-bg);  color: var(--err-text); }

/* --------------------------------------------------------------- Tabelas */
.table thead th {
    background: var(--n-50);
    color: var(--n-600);
    text-transform: uppercase;
    font-size: .72rem;
    letter-spacing: .06em;
    border-bottom: 1px solid var(--n-200);
    border-top: none;
}
.table td { color: var(--n-700); vertical-align: middle; border-top: 1px solid var(--n-100); }
.table.table-bordered, .table.table-bordered td, .table.table-bordered th { border-color: var(--n-100); }
#dataTable { border-radius: var(--r-md); overflow: hidden; }

/* ------------------------------------------------- Utilitário: valores Sora */
.stat-value, .display-1, .display-2, .display-3, .display-4 {
    font-family: 'Sora', sans-serif;
    letter-spacing: -.03em;
}
