/* =====================================================================
   ERP theme layer v2 — loads AFTER bootstrap/core/components/colors.
   Calm, dense, data-first ERP UI on top of the Limitless (Bootstrap 3) theme.
   Keep this file last in the <head>.
   All selectors from v1 are kept, so existing views keep working.

   Contents
    1 Tokens        6 Panels          11 Tabs/alerts/menus   16 Helpers (new)
    2 Base          7 Buttons         12 Modals              17 Responsive
    3 Navbar        8 Forms/select2   13 Login/error/footer  18 Motion + print
    4 Sidebar       9 Tables/DT       14 Loading/empty
    5 Page header  10 Row actions     15 KPI tiles
   ===================================================================== */

/* ---------- 1. Tokens ---------- */
:root{
  /* navy chrome */
  --erp-ink:#0E2747;          /* navbar + sidebar */
  --erp-ink-2:#173A66;        /* hover / active */
  --erp-ink-3:#0A1D36;        /* sub-menu */
  --erp-side-text:#BAC8D9;    /* sidebar links (AA on --erp-ink) */
  --erp-side-muted:#8CA1B9;   /* headers, sub-links */
  --erp-side-line:rgba(255,255,255,.08);

  /* brand */
  --erp-accent:#1E5FD0;
  --erp-accent-d:#1749A6;
  --erp-accent-l:#E6EEFB;
  --erp-ring:rgba(30,95,208,.18);

  /* surfaces */
  --erp-bg:#F3F5FA;
  --erp-surface:#FFFFFF;
  --erp-surface-2:#F8FAFD;    /* table heads, footers */
  --erp-hover:#F3F7FD;
  --erp-border:#DCE3EE;
  --erp-border-2:#E8EDF5;
  --erp-border-strong:#C5CFDD; /* inputs */

  /* text */
  --erp-text:#172233;
  --erp-text-2:#33414D;
  --erp-muted:#5F6F85;

  /* status */
  --erp-success:#15803D; --erp-success-l:#E4F4EA; --erp-success-b:#BFE3CB;
  --erp-danger:#B42318;  --erp-danger-l:#FCE9E7;  --erp-danger-b:#F3C4BF;
  --erp-warning:#B54708; --erp-warning-l:#FDF0DD; --erp-warning-b:#F4D7A7;
  --erp-info:#0E7490;    --erp-info-l:#E0F2F7;    --erp-info-b:#B6DDE6;

  --erp-radius:6px;
  --erp-radius-lg:10px;
  --erp-shadow-sm:0 1px 2px rgba(21,33,43,.05);
  --erp-shadow:0 1px 2px rgba(21,33,43,.06),0 1px 3px rgba(21,33,43,.04);
  --erp-shadow-lg:0 8px 24px rgba(21,33,43,.14);
  --erp-ease:.15s ease;
  --erp-font:"Roboto","Segoe UI",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
}

/* ---------- 2. Base ---------- */
body{margin:0;background:var(--erp-bg);color:var(--erp-text);font-family:var(--erp-font);font-size:13.5px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:var(--erp-font);font-weight:600;color:var(--erp-text);line-height:1.3}
a{color:var(--erp-accent);transition:color var(--erp-ease)} a:hover,a:focus{color:var(--erp-accent-d)}
.text-muted{color:var(--erp-muted)}
.text-success{color:var(--erp-success)} .text-danger{color:var(--erp-danger)}
.text-warning{color:var(--erp-warning)} .text-info{color:var(--erp-info)}
:focus-visible{outline:2px solid var(--erp-accent);outline-offset:2px}
::selection{background:var(--erp-accent-l)}
hr{border-top-color:var(--erp-border-2)}

/* slim scrollbars (content + sidebar + tables) */
*{scrollbar-width:thin;scrollbar-color:#B7C3D3 transparent}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:#B7C3D3;border-radius:999px;border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:#94A5BB;background-clip:content-box;border:2px solid transparent}
::-webkit-scrollbar-track{background:transparent}

/* ---------- 3. Top navbar ---------- */
body .navbar,body .navbar-inverse{background:var(--erp-ink)!important;background-color:var(--erp-ink)!important;border:0;border-bottom:1px solid rgba(255,255,255,.06);box-shadow:none}
body .navbar-inverse .navbar-nav>li>a,body .navbar-inverse .navbar-brand{color:#D5DEE5;transition:background var(--erp-ease),color var(--erp-ease)}
body .navbar-inverse .navbar-nav>li>a:hover,body .navbar-inverse .navbar-nav>.open>a{background:rgba(255,255,255,.08);color:#fff}
body .navbar-header .navbar-brand{font-weight:600;letter-spacing:.2px}
body .navbar .erp-brand{color:#fff;font-weight:600;letter-spacing:.5px;margin:0}
body .navbar-inverse .navbar-text{color:#C9D6EA}
body .navbar-inverse .navbar-nav>li>a{display:flex;align-items:center;gap:6px}
body .pace .pace-progress{background:var(--erp-accent)}
body .text-primary{color:var(--erp-accent)}
body .bg-primary,body .label.bg-primary{background:var(--erp-accent);color:#fff}

/* readable on navy whatever markup TopBar uses */
body .navbar-inverse .navbar-nav h1,body .navbar-inverse .navbar-nav h2,body .navbar-inverse .navbar-nav h3,
body .navbar-inverse .navbar-nav h4,body .navbar-inverse .navbar-nav h5,body .navbar-inverse .navbar-nav h6{color:#fff!important;font-weight:600;letter-spacing:.5px;margin:0}
body .navbar-inverse .navbar-nav>li>h6,body .navbar-inverse .navbar-nav>li>h5{padding:15px 12px}
body .navbar-inverse .navbar-text,body .navbar-inverse .navbar-nav>li>span{color:#C9D6EA}
body .navbar .label{font-weight:600;padding:5px 11px;letter-spacing:.2px;border:0!important}
body .navbar #CompanyName{background:rgba(255,255,255,.14)!important;color:#fff!important}
body .navbar #online{background:#DDF3E4!important;color:#146C34!important}
body .navbar #offline{background:#FCE3E0!important;color:#B42318!important}

/* ---------- 4. Sidebar ---------- */
body .sidebar{background:var(--erp-ink);border:0;color:var(--erp-side-text)}
body .sidebar .category-title,body .sidebar .sidebar-category{border-color:var(--erp-side-line);color:var(--erp-side-muted)}
body .sidebar .navigation>li>a{color:var(--erp-side-text);padding:10px 20px;transition:background var(--erp-ease),color var(--erp-ease)}
body .sidebar .navigation>li>a:hover,body .sidebar .navigation>li>a:focus{background:var(--erp-ink-2);color:#fff}
body .sidebar .navigation>li.active>a{background:var(--erp-ink-2);color:#fff;font-weight:500;box-shadow:inset 3px 0 0 var(--erp-accent)}
body .sidebar .navigation li>.hidden-ul{background:var(--erp-ink-3)}
body .sidebar .navigation li li>a{color:var(--erp-side-muted);padding-left:52px}
body .sidebar .navigation li li>a:hover{color:#fff;background:var(--erp-ink-2)}
body .sidebar .navigation li li.active>a{color:#fff;background:transparent;font-weight:500;box-shadow:inset 3px 0 0 var(--erp-accent)}
body .sidebar .navigation .navigation-header{color:var(--erp-side-muted);font-size:11px;text-transform:none;letter-spacing:.3px;opacity:.9}
body .sidebar .navigation>li>a>i{opacity:.85;margin-right:10px;width:16px;text-align:center}
body .sidebar .navigation>li.active>a>i,body .sidebar .navigation>li>a:hover>i{opacity:1}

body .sidebar .sidebar-user{background:transparent;border-bottom:1px solid var(--erp-side-line)}
body .sidebar .sidebar-user .media-heading{color:#fff;display:block;line-height:1.3}
body .sidebar .sidebar-user .erp-role{color:#9DB4D4;font-size:12px}
body .sidebar .sidebar-user .media-left img{height:40px;width:auto;border-radius:var(--erp-radius)}
body .sidebar *{scrollbar-color:rgba(255,255,255,.22) transparent}
body .sidebar ::-webkit-scrollbar-thumb{background:rgba(255,255,255,.22);background-clip:content-box}

/* ---------- 5. Page header / breadcrumb ---------- */
body .page-header-default{background:var(--erp-surface);border-bottom:1px solid var(--erp-border);box-shadow:none}
body .page-header-content{padding:14px 20px!important}
body .page-header-content .page-title{padding:0!important;display:block}
body .page-title h4,body .page-title h5{margin:0;font-size:18px;font-weight:600;letter-spacing:-.1px}
body .page-title small{color:var(--erp-muted);font-weight:400}
body .breadcrumb-line{background:var(--erp-surface);border-top:1px solid var(--erp-border-2);border-bottom:0;box-shadow:none}
body .breadcrumb>li>a{color:var(--erp-muted)}
body .breadcrumb>li>a:hover{color:var(--erp-accent)}
body .breadcrumb>.active{color:var(--erp-text)}
body .content-wrapper>.content,body .content{padding:20px}

/* ---------- 6. Panels ---------- */
body .panel,body .panel-flat{background:var(--erp-surface);border:1px solid var(--erp-border);border-radius:var(--erp-radius);box-shadow:var(--erp-shadow);margin-bottom:20px}
body .panel-flat>.panel-heading,body .panel-heading{background:var(--erp-surface);border-bottom:1px solid var(--erp-border-2);border-radius:var(--erp-radius) var(--erp-radius) 0 0;padding:14px 18px}
body .panel-title{font-size:15px;font-weight:600;color:var(--erp-text)}
body .panel-body{padding:18px}
body .panel-footer{background:var(--erp-surface-2);border-top:1px solid var(--erp-border-2);border-radius:0 0 var(--erp-radius) var(--erp-radius)}
body .panel-success>.panel-heading{background:var(--erp-success-l);color:var(--erp-success);border-color:var(--erp-success-b)}
body .panel-danger>.panel-heading{background:var(--erp-danger-l);color:var(--erp-danger);border-color:var(--erp-danger-b)}
body .panel-warning>.panel-heading{background:var(--erp-warning-l);color:var(--erp-warning);border-color:var(--erp-warning-b)}
body .panel-info>.panel-heading{background:var(--erp-info-l);color:var(--erp-info);border-color:var(--erp-info-b)}

/* ---------- 7. Buttons ---------- */
body .btn{border-radius:var(--erp-radius);font-weight:500;padding:7px 14px;transition:background var(--erp-ease),border-color var(--erp-ease),box-shadow var(--erp-ease),color var(--erp-ease)}
body .btn:focus-visible{outline:0;box-shadow:0 0 0 3px var(--erp-ring)}
body .btn:active{box-shadow:inset 0 1px 2px rgba(21,33,43,.18)}
body .btn-xs{padding:3px 8px;font-size:12px}
body .btn-sm{padding:5px 11px;font-size:12.5px}
body .btn-lg{padding:10px 20px;font-size:15px}
body .btn-default{background:var(--erp-surface);border:1px solid var(--erp-border-strong);color:var(--erp-text)}
body .btn-default:hover,body .btn-default:focus{background:#F4F7FC;border-color:#AEBBCC;color:var(--erp-text)}
body .btn-primary,body .btn.bg-blue,body .btn.bg-blue-300,body .btn.bg-blue-400,body .btn.bg-blue-600,body .btn.bg-blue-700,body .btn.bg-blue-800,body .btn.bg-primary,body .btn.bg-primary-300,body .btn.bg-primary-400,body .btn.bg-primary-600,body .btn.bg-primary-700,body .btn.bg-primary-800{background:var(--erp-ink);border:1px solid var(--erp-ink);color:#fff}
body .btn-primary:hover,body .btn-primary:focus,body .btn.bg-blue:hover,body .btn.bg-blue:focus,body .btn[class*="bg-blue-"]:hover,body .btn[class*="bg-blue-"]:focus,body .btn[class*="bg-primary"]:hover,body .btn[class*="bg-primary"]:focus{background:var(--erp-ink-2);border-color:var(--erp-ink-2);color:#fff}
body .btn-success{background:var(--erp-success);border:1px solid var(--erp-success);color:#fff}
body .btn-success:hover,body .btn-success:focus{background:#116A33;border-color:#116A33;color:#fff}
body .btn-danger{background:var(--erp-danger);border:1px solid var(--erp-danger);color:#fff}
body .btn-danger:hover,body .btn-danger:focus{background:#951C12;border-color:#951C12;color:#fff}
body .btn-warning{background:var(--erp-warning);border:1px solid var(--erp-warning);color:#fff}
body .btn-warning:hover,body .btn-warning:focus{background:#933A06;border-color:#933A06;color:#fff}
body .btn-info{background:var(--erp-info);border:1px solid var(--erp-info);color:#fff}
body .btn-info:hover,body .btn-info:focus{background:#0B5C73;border-color:#0B5C73;color:#fff}
body .btn-link{color:var(--erp-accent);border-color:transparent;background:transparent}
body .btn-link:hover{background:var(--erp-accent-l);color:var(--erp-accent-d);text-decoration:none}
body .btn[disabled],body .btn.disabled{opacity:.55;cursor:not-allowed;box-shadow:none}
body .btn-labeled>b{border-radius:var(--erp-radius) 0 0 var(--erp-radius)}
body .btn-group>.btn:not(:first-child):not(:last-child){border-radius:0}

/* ---------- 8. Forms ---------- */
body .form-control{height:36px;border:1px solid var(--erp-border-strong);border-radius:var(--erp-radius);color:var(--erp-text);background:#fff;box-shadow:none;padding:6px 11px;transition:border-color var(--erp-ease),box-shadow var(--erp-ease)}
body .form-control::placeholder{color:#8A98AB;opacity:1}
body .form-control:hover{border-color:#AEBBCC}
body textarea.form-control{height:auto;min-height:72px}
body .form-control:focus{border-color:var(--erp-accent);box-shadow:0 0 0 3px var(--erp-ring)}
body .form-control[disabled],body .form-control[readonly]{background:#F3F5F7;color:var(--erp-muted);cursor:not-allowed}
body .control-label,body label{font-weight:600;color:var(--erp-text-2);font-size:13px}
body .checkbox label,body .radio label{font-weight:400}
body input[type="checkbox"],body input[type="radio"]{accent-color:var(--erp-accent)}
body .has-error .form-control{border-color:var(--erp-danger);background:#FFFBFA}
body .has-error .form-control:focus{box-shadow:0 0 0 3px rgba(180,35,24,.15)}
body .has-success .form-control{border-color:var(--erp-success)}
body .has-warning .form-control{border-color:var(--erp-warning)}
body .help-block,body .validation-error-label,body .field-validation-error{color:var(--erp-danger);font-size:12px;margin-top:4px}
body .help-block:not(.validation-error-label){color:var(--erp-muted)}
body .input-group-addon{background:#F3F5F7;border:1px solid var(--erp-border-strong);color:var(--erp-muted);border-radius:var(--erp-radius)}
body .input-group .form-control:not(:first-child):not(:last-child){border-radius:0}
body .input-group-addon:first-child{border-right:0}
body .input-group-addon:last-child{border-left:0}
body .form-group{margin-bottom:16px}
body fieldset legend{font-size:14px;font-weight:600;color:var(--erp-text);border-bottom:1px solid var(--erp-border-2);padding-bottom:6px}

/* select2 */
body .select2-container--default .select2-selection--single,
body .select2-container--default .select2-selection--multiple{min-height:36px;border:1px solid var(--erp-border-strong);border-radius:var(--erp-radius);background:#fff;transition:border-color var(--erp-ease),box-shadow var(--erp-ease)}
body .select2-container--default .select2-selection--single .select2-selection__rendered{line-height:34px;color:var(--erp-text)}
body .select2-container--default .select2-selection--single .select2-selection__arrow{height:34px}
body .select2-container--default .select2-selection--single .select2-selection__placeholder{color:#8A98AB}
body .select2-container--default.select2-container--focus .select2-selection--single,
body .select2-container--default.select2-container--open .select2-selection--single,
body .select2-container--default.select2-container--focus .select2-selection--multiple,
body .select2-container--default.select2-container--open .select2-selection--multiple{border-color:var(--erp-accent);box-shadow:0 0 0 3px var(--erp-ring)}
body .select2-container--default .select2-selection--multiple .select2-selection__choice{background:var(--erp-accent-l);border:1px solid #C7D8F5;color:var(--erp-accent-d);border-radius:999px;padding:1px 9px;font-weight:500}
body .select2-dropdown{border:1px solid var(--erp-border);border-radius:var(--erp-radius);box-shadow:var(--erp-shadow-lg)}
body .select2-search--dropdown .select2-search__field{border:1px solid var(--erp-border-strong);border-radius:var(--erp-radius)}
body .select2-container--default .select2-results__option--highlighted[aria-selected]{background:var(--erp-accent);color:#fff}
body .select2-container--default .select2-results__option[aria-selected=true]{background:var(--erp-accent-l);color:var(--erp-accent-d)}

/* ---------- 9. Tables ---------- */
body .table{background:var(--erp-surface);color:var(--erp-text);margin-bottom:0}
body .table>thead>tr>th,
body .table>thead>tr.bg-green-800>th,
body .table>thead>tr[class*="bg-"]>th{background:var(--erp-surface-2);color:#4A5966;font-weight:600;font-size:12.5px;border-top:0;border-bottom:1px solid var(--erp-border);padding:11px 14px;white-space:nowrap}
body .table>tbody>tr>td{padding:10px 14px;border-top:1px solid var(--erp-border-2);vertical-align:middle}
body .table-hover>tbody>tr:hover>td{background:var(--erp-hover)}
body .table-striped>tbody>tr:nth-of-type(odd)>td{background:#FAFBFE}
body .table>tbody>tr.active>td,body .table>tbody>tr.selected>td{background:var(--erp-accent-l)}
body .table>tfoot>tr>td,body .table>tfoot>tr>th{background:var(--erp-surface-2);border-top:2px solid var(--erp-border);font-weight:600;padding:10px 14px}
body .table td.text-right,body .table th.text-right,.erp-num{text-align:right;font-variant-numeric:tabular-nums}
body .table-responsive{border:0}
.th{text-align:left;font-size:12px;font-weight:600;color:#4A5966;padding:11px 14px;border-bottom:1px solid var(--erp-border);background:var(--erp-surface-2)}
.td{font-size:13.5px;padding:10px 14px;border-bottom:1px solid var(--erp-border-2);color:var(--erp-text)}
.lb{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--erp-muted)}
input.in,select.in,textarea.in{height:38px;box-sizing:border-box;border:1px solid var(--erp-border-strong);border-radius:var(--erp-radius);padding:0 12px;font:inherit;font-size:13.5px;color:var(--erp-text);background:#fff;transition:border-color var(--erp-ease),box-shadow var(--erp-ease)}
input.in:focus,select.in:focus,textarea.in:focus{outline:0;border-color:var(--erp-accent);box-shadow:0 0 0 3px var(--erp-ring)}

/* DataTables chrome */
body .datatable-header{padding:12px 18px;border-bottom:1px solid var(--erp-border-2);background:#fff}
body .datatable-footer{padding:12px 18px;border-top:1px solid var(--erp-border-2);background:var(--erp-surface-2);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}
body .dataTables_length{float:left;clear:none;margin:0}
body .dataTables_info{clear:none;float:none;padding:6px;color:var(--erp-muted)}
body .dataTables_paginate{margin:0}
body .dataTables_filter input{height:34px;border:1px solid var(--erp-border-strong);border-radius:var(--erp-radius);padding:0 10px;transition:border-color var(--erp-ease),box-shadow var(--erp-ease)}
body .dataTables_filter input:focus{outline:0;border-color:var(--erp-accent);box-shadow:0 0 0 3px var(--erp-ring)}
body .datatable-scroll-wrap{overflow-x:auto}
body table.dataTable thead .sorting:after,body table.dataTable thead .sorting_asc:after,body table.dataTable thead .sorting_desc:after{opacity:.55}
body table.dataTable thead .sorting_asc:after,body table.dataTable thead .sorting_desc:after{opacity:1;color:var(--erp-accent)}
body table.dataTable td.dataTables_empty{padding:36px 14px;text-align:center;color:var(--erp-muted)}
body .pagination>li>a,body .pagination>li>span{border:1px solid var(--erp-border);color:var(--erp-text);margin:0 2px;border-radius:var(--erp-radius)!important;transition:background var(--erp-ease),border-color var(--erp-ease)}
body .pagination>li>a:hover{background:var(--erp-accent-l);border-color:var(--erp-accent)}
body .pagination>.active>a,body .pagination>.active>a:hover,body .pagination>.active>span{background:var(--erp-accent);border-color:var(--erp-accent);color:#fff}
body .pagination>.disabled>a{color:#A6B2BB;background:#fff}

/* list screens (toolbar + grid) */
body .buttons-top .btn-success{background:var(--erp-ink);border-color:var(--erp-ink);color:#fff}
body .buttons-top .btn-success:hover,body .buttons-top .btn-success:focus{background:var(--erp-ink-2);border-color:var(--erp-ink-2)}
body .panel-body>.row:first-child{margin-bottom:6px}
body .buttons-top .btn{padding:8px 16px;font-weight:600}

/* one clean grid: no heavy vertical rules */
body table.datatable-basic{border:0;border-top:1px solid var(--erp-border);border-bottom:1px solid var(--erp-border)}
body table.datatable-basic.table-bordered>thead>tr>th,
body table.datatable-basic.table-bordered>tbody>tr>td{border-left:0;border-right:0}
body table.datatable-basic>thead>tr>th{border-bottom:1px solid var(--erp-border);text-transform:none;letter-spacing:.2px}
body table.datatable-basic>tbody>tr:last-child>td{border-bottom:0}
body table.datatable-basic>tbody>tr>td:first-child{font-weight:500}
body table.dataTable thead .sorting,body table.dataTable thead .sorting_asc,body table.dataTable thead .sorting_desc{cursor:pointer}

/* ---------- 10. Row action icons ---------- */
/* soft tinted tiles (edit/print = blue, delete = red), solid on hover */
body .icons-list{white-space:nowrap;margin:0;padding:0}
body .icons-list>li{margin:0 3px}
body .icons-list>li>a{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;border-radius:8px;background:#EEF2F8;color:#4A5C75;cursor:pointer;transition:background var(--erp-ease),color var(--erp-ease),transform var(--erp-ease),box-shadow var(--erp-ease)}
body .icons-list>li>a>i{font-size:15px;top:0;line-height:1}
body .icons-list>li>a:hover{transform:translateY(-1px);box-shadow:0 3px 8px rgba(21,33,43,.15)}
body .icons-list>li>a:focus-visible{outline:0;box-shadow:0 0 0 3px var(--erp-ring)}
body .icons-list>li.text-primary-600>a,body .icons-list>li.text-primary>a,body .icons-list>li.text-info-600>a{background:var(--erp-accent-l);color:var(--erp-accent)}
body .icons-list>li.text-primary-600>a:hover,body .icons-list>li.text-primary>a:hover,body .icons-list>li.text-info-600>a:hover{background:var(--erp-accent);color:#fff}
body .icons-list>li.text-danger-600>a,body .icons-list>li.text-danger>a{background:var(--erp-danger-l);color:var(--erp-danger)}
body .icons-list>li.text-danger-600>a:hover,body .icons-list>li.text-danger>a:hover{background:var(--erp-danger);color:#fff}
body .icons-list>li.text-success-600>a{background:var(--erp-success-l);color:var(--erp-success)}
body .icons-list>li.text-success-600>a:hover{background:var(--erp-success);color:#fff}
body .icons-list>li.text-warning-600>a{background:var(--erp-warning-l);color:var(--erp-warning)}
body .icons-list>li.text-warning-600>a:hover{background:var(--erp-warning);color:#fff}

/* ---------- 11. Status chips, tabs, alerts, dropdowns ---------- */
body .label,body .badge{border-radius:999px;font-weight:600;font-size:11.5px;padding:3px 9px}
body .label-success,body .badge-success{background:var(--erp-success-l);color:var(--erp-success)}
body .label-danger,body .badge-danger{background:var(--erp-danger-l);color:var(--erp-danger)}
body .label-warning,body .badge-warning{background:var(--erp-warning-l);color:var(--erp-warning)}
body .label-primary,body .badge-primary{background:var(--erp-accent-l);color:var(--erp-accent-d)}
body .label-info,body .badge-info{background:var(--erp-info-l);color:var(--erp-info)}
body .label-default{background:#E8ECEF;color:#4A5966}

body .nav-tabs{border-bottom:1px solid var(--erp-border)}
body .nav-tabs>li>a{color:var(--erp-muted);border:0;border-bottom:2px solid transparent;margin-right:4px;font-weight:500;transition:color var(--erp-ease),border-color var(--erp-ease)}
body .nav-tabs>li>a:hover{color:var(--erp-text);background:transparent;border-bottom-color:var(--erp-border-strong)}
body .nav-tabs>li.active>a,body .nav-tabs>li.active>a:hover{color:var(--erp-accent);border:0;border-bottom:2px solid var(--erp-accent);background:transparent}

body .alert{border-radius:var(--erp-radius);border-width:1px}
body .alert-success{background:var(--erp-success-l);border-color:var(--erp-success-b);color:var(--erp-success)}
body .alert-danger{background:var(--erp-danger-l);border-color:var(--erp-danger-b);color:var(--erp-danger)}
body .alert-warning{background:var(--erp-warning-l);border-color:var(--erp-warning-b);color:var(--erp-warning)}
body .alert-info{background:var(--erp-info-l);border-color:var(--erp-info-b);color:var(--erp-info)}

body .dropdown-menu{border:1px solid var(--erp-border);border-radius:var(--erp-radius);box-shadow:var(--erp-shadow-lg);padding:6px}
body .dropdown-menu>li>a{border-radius:4px;padding:7px 12px}
body .dropdown-menu>li>a:hover,body .dropdown-menu>li>a:focus{background:var(--erp-accent-l);color:var(--erp-accent-d)}
body .dropdown-menu .divider{background:var(--erp-border-2);margin:6px 0}
body .tooltip-inner{background:var(--erp-ink);border-radius:4px;padding:5px 10px;font-size:12px}
body .tooltip.top .tooltip-arrow{border-top-color:var(--erp-ink)}
body .tooltip.bottom .tooltip-arrow{border-bottom-color:var(--erp-ink)}

/* ---------- 12. Modals ---------- */
body .modal-content{border:0;border-radius:var(--erp-radius-lg);box-shadow:0 20px 50px rgba(21,33,43,.28)}
body .modal-header,body .smodal-header{padding:16px 20px;background:var(--erp-ink)!important;color:#fff!important;text-align:left!important;border-bottom:0;border-radius:var(--erp-radius-lg) var(--erp-radius-lg) 0 0}
body .modal-header.panel-danger,body .smodal-header.panel-danger{background:var(--erp-danger)!important}
body .modal-title{font-size:16px;font-weight:600}
body .modal-header .modal-title,body .smodal-header .modal-title{color:inherit;font-size:16px;font-weight:600;text-align:left}
body .modal-header .close,body .smodal-header .close{color:#fff!important;opacity:.85;text-shadow:none;font-size:24px;line-height:1;margin-top:-2px;transition:opacity var(--erp-ease)}
body .modal-header .close:hover,body .smodal-header .close:hover{opacity:1}
body .modal-body{padding:20px}
#ModalBody,#SModalBody{background:var(--erp-bg)!important;padding:22px 24px}
body .modal-body .form-group{margin-bottom:16px}
body .modal-body .form-horizontal .control-label{padding-top:9px}
body .modal-footer{padding:14px 20px;background:var(--erp-surface-2);border-top:1px solid var(--erp-border-2);border-radius:0 0 var(--erp-radius-lg) var(--erp-radius-lg)}
body .modal-body .modal-footer{background:transparent;border-top:0;border-radius:0;padding:12px 0 0!important}
body .modal-backdrop.in{opacity:.5;background:var(--erp-ink)}
body .wysiwyg-color-red{color:var(--erp-danger)}
/* "Close" is a neutral action whatever colour class the view gave it */
body .modal-footer .btn[data-dismiss="modal"]{background:#fff;border:1px solid var(--erp-border-strong);color:var(--erp-text)}
body .modal-footer .btn[data-dismiss="modal"]:hover{background:#F4F7FC;border-color:#AEBBCC;color:var(--erp-text)}

/* SweetAlert2 + toast */
body .swal2-popup{border-radius:var(--erp-radius-lg);font-family:var(--erp-font)}
body .swal2-title{color:var(--erp-text);font-weight:600}
body .swal2-styled.swal2-confirm{background:var(--erp-accent)!important;border-radius:var(--erp-radius)}
body .swal2-styled.swal2-cancel{background:#E8ECEF!important;color:var(--erp-text)!important;border-radius:var(--erp-radius)}
body .swal2-styled:focus{box-shadow:0 0 0 3px var(--erp-ring)!important}
body .swal2-toast{min-width:380px;padding:18px 22px;box-shadow:var(--erp-shadow-lg)}
body .swal2-toast .swal2-title{font-size:20px!important;line-height:1.45!important}
body .swal2-toast .swal2-icon{width:2.4em;height:2.4em;margin:.25em .7em .25em 0}
body .swal2-toast.erp-toast-success{position:relative;overflow:hidden;border:1px solid #ccefe2;border-left:5px solid #11a579;border-radius:16px;background:linear-gradient(135deg,#fff 0%,#f3fcf8 100%);box-shadow:0 16px 42px rgba(16,74,56,.18)}
body .swal2-toast.erp-toast-success .swal2-title{color:#145b46;font-size:19px!important;font-weight:700!important;letter-spacing:.1px}
body .swal2-toast.erp-toast-success .swal2-success-ring{border-color:rgba(17,165,121,.28)}
body .swal2-toast.erp-toast-success .swal2-success-line-tip,body .swal2-toast.erp-toast-success .swal2-success-line-long{background-color:#11a579}
body .swal2-toast.erp-toast-success .swal2-timer-progress-bar{background:rgba(17,165,121,.4)}
body .swal2-popup.erp-message{width:410px;max-width:calc(100vw - 32px);padding:30px 28px 26px;border:1px solid #dcefe7;border-top:5px solid #12a579;border-radius:20px;background:linear-gradient(145deg,#fff 0%,#f4fbf8 100%);box-shadow:0 24px 70px rgba(20,57,47,.2)}
body .swal2-popup.erp-message-error{border-color:#f2d9d9;border-top-color:#d64545;background:linear-gradient(145deg,#fff 0%,#fff7f7 100%);box-shadow:0 24px 70px rgba(91,29,29,.16)}
body .swal2-popup.erp-message-warning{border-color:#f3e5c5;border-top-color:#d89a19;background:linear-gradient(145deg,#fff 0%,#fffbf1 100%);box-shadow:0 24px 70px rgba(91,66,29,.16)}
body .swal2-popup.erp-message-info{border-color:#d8e5f8;border-top-color:#3c78cc;background:linear-gradient(145deg,#fff 0%,#f5f9ff 100%);box-shadow:0 24px 70px rgba(29,55,91,.16)}
body .erp-message .swal2-icon{width:68px;height:68px;margin:0 auto 18px;border-width:3px}
body .erp-message .swal2-title{margin:0 0 8px;color:#174c3d;font-size:23px;font-weight:700}
body .erp-message-error .swal2-title{color:#7c2929}
body .erp-message-warning .swal2-title{color:#75520b}
body .erp-message-info .swal2-title{color:#244d80}
body .erp-message .swal2-content,body .erp-message .swal2-html-container{color:#6b7e78;font-size:14px;line-height:1.6}
body .erp-message-error .swal2-content,body .erp-message-error .swal2-html-container{color:#795e5e}
body .erp-message-warning .swal2-content,body .erp-message-warning .swal2-html-container{color:#766b51}
body .erp-message-info .swal2-content,body .erp-message-info .swal2-html-container{color:#586b83}
body .erp-message .swal2-timer-progress-bar{background:rgba(18,165,121,.38)}
body .erp-message-error .swal2-timer-progress-bar{background:rgba(214,69,69,.38)}
body .erp-message-warning .swal2-timer-progress-bar{background:rgba(216,154,25,.4)}
body .erp-message-info .swal2-timer-progress-bar{background:rgba(60,120,204,.38)}
body .swal2-popup.erp-save-success{width:390px;max-width:calc(100vw - 32px);padding:30px 28px 25px;border:1px solid #dcefe7;border-top:5px solid #12a579;border-radius:20px;background:linear-gradient(145deg,#fff 0%,#f4fbf8 100%);box-shadow:0 24px 70px rgba(20,57,47,.2)}
body .erp-save-success .swal2-icon{width:68px;height:68px;margin:0 auto 18px;border-width:3px}
body .erp-save-success .swal2-icon.swal2-success{border-color:#17aa7b;color:#17aa7b}
body .erp-save-success .swal2-icon.swal2-success [class^=swal2-success-line]{background-color:#17aa7b}
body .erp-save-success .swal2-icon.swal2-success .swal2-success-ring{border-color:rgba(23,170,123,.22)}
body .erp-save-success .swal2-title{margin:0 0 8px;color:#174c3d;font-size:23px;font-weight:700}
body .erp-save-success .swal2-content{color:#6b7e78;font-size:14px;line-height:1.6}
body .erp-save-success .swal2-timer-progress-bar{background:rgba(18,165,121,.38)}
@media (max-width:480px){body .swal2-toast{min-width:0;width:calc(100vw - 24px);padding:16px 18px}body .swal2-toast .swal2-title{font-size:18px!important}body .swal2-popup.erp-message{padding:25px 20px 22px}body .erp-message .swal2-title{font-size:21px}}

/* ---------- 13. Login, error, footer ---------- */
body.login-container.login-cover{min-height:100vh;background:radial-gradient(ellipse at 14% 12%,#e5edfb 0,transparent 40%),linear-gradient(145deg,#f7f9fd 0%,#edf2f9 100%)!important}
body.login-container .login-form{width:410px;max-width:92vw}
body.login-container .login-form.panel{padding:34px 36px 30px;border:1px solid rgba(197,207,221,.72);border-radius:16px;background:rgba(255,255,255,.96);box-shadow:0 24px 64px rgba(14,39,71,.12),0 3px 10px rgba(14,39,71,.04)}
body.login-container .login-form .text-center{margin-bottom:26px}
body.login-container .login-form .icon-object{width:58px;height:58px;margin:0 auto 18px;border:0;border-radius:17px;background:var(--erp-accent-l);color:var(--erp-accent);font-size:25px;line-height:58px}
body.login-container .login-form-logo{display:flex;width:112px;height:112px;align-items:center;justify-content:center;margin:0 auto 20px;padding:7px;overflow:hidden;border:1px solid var(--erp-border-2);border-radius:22px;background:#fff;box-shadow:0 5px 16px rgba(14,39,71,.09)}
body.login-container .login-form-logo img{display:block;max-width:100%;max-height:100%;object-fit:contain}
body.login-container .login-form h5{margin:0;font-size:21px;letter-spacing:-.35px}
body.login-container .login-form h5 small{margin-top:7px;color:var(--erp-muted);font-size:13px;font-weight:400;letter-spacing:0}
body.login-container .login-form .form-group{margin-bottom:17px}
body.login-container .login-form .form-control{height:46px!important;padding-top:11px;padding-bottom:11px;border-color:var(--erp-border);border-radius:8px;background:#fff;box-shadow:none;transition:border-color var(--erp-ease),box-shadow var(--erp-ease)}
body.login-container .login-form .form-control:focus{border-color:var(--erp-accent);box-shadow:0 0 0 3px var(--erp-ring)}
body.login-container .login-form .form-control-feedback{height:46px;line-height:46px;color:#8291a5}
body.login-container .login-form .btn-block{padding:13px 16px;border:0;border-radius:8px;background:linear-gradient(110deg,var(--erp-ink),var(--erp-ink-2));box-shadow:0 5px 12px rgba(14,39,71,.2);font-size:14px;font-weight:600;letter-spacing:.15px;transition:transform var(--erp-ease),box-shadow var(--erp-ease)}
body.login-container .login-form .btn-block:hover,body.login-container .login-form .btn-block:focus{background:linear-gradient(110deg,var(--erp-ink-2),var(--erp-ink));box-shadow:0 7px 16px rgba(14,39,71,.26);transform:translateY(-1px)}
body.login-container .login-form .login-options{margin:3px 0 21px;font-size:12.5px}
body.login-container .login-form .checkbox-inline{color:var(--erp-muted)}
body.login-container .login-form a{font-weight:500}
body.login-cover .footer{color:var(--erp-muted)}

/* Full-page authentication layout */
body.login-container.login-cover{min-height:100vh;overflow-x:hidden;background:#f7f9fc!important}
body.login-container .login-shell{display:grid;grid-template-columns:minmax(340px, .92fr) minmax(500px,1.08fr);min-height:100vh}
body.login-container .login-welcome{position:relative;display:flex;align-items:center;overflow:hidden;padding:8vh clamp(38px,7vw,110px);background:linear-gradient(145deg,#102b4d 0%,#173e6d 54%,#1e5fd0 145%);color:#fff}
body.login-container .login-welcome-inner{position:relative;z-index:2;max-width:460px}
body.login-container .login-welcome .erp-brand-logo{display:flex;align-items:center;justify-content:center;width:72px;height:72px;margin:0 0 42px;padding:10px;border:1px solid rgba(255,255,255,.2);border-radius:20px;background:rgba(255,255,255,.12);backdrop-filter:blur(8px)}
body.login-container .login-welcome .erp-brand-logo img{max-width:100%;max-height:100%;object-fit:contain}
body.login-container .login-eyebrow{margin-bottom:13px;color:#b9d1f2;font-size:11px;font-weight:700;letter-spacing:2.2px}
body.login-container .login-welcome .erp-brand-name{color:#fff;font-size:clamp(29px,3vw,44px);font-weight:700;line-height:1.14;letter-spacing:-1.2px}
body.login-container .login-welcome .erp-brand-sub{margin-top:10px;color:#c3d4eb;font-size:16px}
body.login-container .login-welcome-rule{width:54px;height:3px;margin:32px 0 23px;border-radius:3px;background:#6da4ff}
body.login-container .login-welcome-copy{max-width:390px;color:#d9e4f2;font-size:16px;line-height:1.8}
body.login-container .login-welcome-note{display:flex;align-items:center;gap:10px;margin-top:38px;color:#d9e4f2;font-size:12px}
body.login-container .login-status-dot{width:8px;height:8px;border-radius:50%;background:#6ce0a0;box-shadow:0 0 0 4px rgba(108,224,160,.14)}
body.login-container .login-welcome-orb{position:absolute;z-index:1;border:1px solid rgba(255,255,255,.1);border-radius:50%;pointer-events:none}
body.login-container .login-welcome-orb-one{right:-230px;bottom:-260px;width:620px;height:620px;box-shadow:0 0 0 50px rgba(255,255,255,.025),0 0 0 105px rgba(255,255,255,.02)}
body.login-container .login-welcome-orb-two{top:-220px;right:5%;width:330px;height:330px;background:rgba(83,140,220,.08)}
body.login-container .login-welcome-pattern{position:absolute;right:0;bottom:0;width:42%;height:35%;opacity:.12;background-image:radial-gradient(rgba(255,255,255,.75) .8px,transparent .8px);background-size:17px 17px;mask-image:linear-gradient(135deg,transparent,black)}
body.login-container .login-main{display:flex;align-items:center;justify-content:center;min-width:0;padding:48px 32px;background:linear-gradient(145deg,#fbfcfe,#f1f5fa)}
body.login-container .login-main-inner{width:100%;max-width:440px}
body.login-container .login-form{width:100%;max-width:none;margin:0}
body.login-container .login-form.panel{padding:38px 40px 34px;border-color:#e2e8f1;border-radius:16px;background:#fff;box-shadow:0 20px 55px rgba(28,49,78,.09),0 2px 8px rgba(28,49,78,.035)}
body.login-container .login-form .login-options .row{display:flex;align-items:center}
body.login-container .login-form .login-options .col-sm-6{float:none;width:50%}
body.login-container .login-form-note{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:17px;color:#8491a3;font-size:11.5px;text-align:center}
body.login-container .login-form-note i{color:#7b8ba1}
body.login-container .login-footer{display:flex;justify-content:space-between;gap:10px;margin-top:22px;color:#718096;font-size:11px}
body.login-container .login-footer span{color:#98a4b4}
body.login-container .login-mobile-brand{display:none}
@media(max-width:900px){
  body.login-container .login-shell{grid-template-columns:minmax(270px,.8fr) minmax(420px,1.2fr)}
  body.login-container .login-welcome{padding:7vh 38px}
  body.login-container .login-welcome-copy{font-size:14px}
  body.login-container .login-main{padding:36px 26px}
}
@media(max-width:760px){
  body.login-container .login-shell{display:flex;min-height:100vh;align-items:center;justify-content:center;padding:24px 16px;background:radial-gradient(ellipse at top,#e8effb,transparent 52%),#f5f7fb}
  body.login-container .login-welcome{display:none}
  body.login-container .login-main{width:100%;padding:0;background:transparent}
  body.login-container .login-main-inner{max-width:430px}
  body.login-container .login-mobile-brand{display:flex;align-items:center;justify-content:center;gap:10px;margin:0 0 22px;color:var(--erp-text);font-size:16px;font-weight:700}
  body.login-container .login-mobile-brand img{max-width:38px;max-height:38px;object-fit:contain}
  body.login-container .login-form.panel{padding:30px 25px 26px}
}
@media(max-width:380px){
  body.login-container .login-shell{padding:18px 12px}
  body.login-container .login-form.panel{padding:26px 19px 22px}
  body.login-container .login-footer{flex-direction:column;align-items:center}
}

body.login-cover::before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;
  background-repeat:no-repeat;background-position:center 58%;background-size:min(72vh,680px);
  filter:grayscale(1);opacity:.06}
body.login-cover .page-container{position:relative;z-index:1}
.erp-brand-block{text-align:center;margin:6vh auto 25px}
.erp-brand-logo{margin-bottom:12px}
.erp-brand-logo img{max-height:56px;max-width:200px;display:inline-block}
.erp-brand-name{color:var(--erp-text);font-size:22px;font-weight:600;margin:0}
.erp-brand-sub{color:var(--erp-muted);font-size:13px;margin-top:4px}
@media(max-width:480px){
  .erp-brand-block{margin:4vh auto 20px}
  body.login-container .login-form.panel{padding:28px 22px 24px}
}

.erp-error{max-width:560px;margin:8vh auto;text-align:center}
.erp-error .erp-error-icon{font-size:56px;color:var(--erp-danger)}
.erp-error code{background:#EEF1F4;padding:2px 8px;border-radius:4px;color:var(--erp-text)}

body .erp-footer{position:static;width:auto;clear:both;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 16px;margin:0;padding:14px 20px;background:var(--erp-surface);border-top:1px solid var(--erp-border);color:var(--erp-muted);font-size:12.5px}
body .erp-footer strong{color:var(--erp-text);font-weight:600}

/* Mobile dashboard navigation */
@media(max-width:768px){
  body:not(.sidebar-mobile-main) .sidebar-main{display:none}
  body.sidebar-mobile-main .sidebar-main{position:fixed;top:50px;bottom:0;left:0;display:block;width:min(300px,85vw);overflow-y:auto;background:#fff;box-shadow:8px 0 28px rgba(20,35,55,.22);z-index:1050}
  .mobile-menu-toggle{display:flex!important;align-items:center;justify-content:center;min-width:48px;min-height:50px;color:#fff!important}
  .mobile-menu-toggle i{font-size:20px}
}

/* ---------- 14. Loading + empty states ---------- */
.erp-modal-loading{padding:44px 20px;text-align:center;color:var(--erp-muted)}
.erp-modal-loading .spinner{font-size:34px;color:var(--erp-accent);display:inline-block}
.erp-modal-loading-text{margin-top:10px;font-size:13px}
#body.erp-busy{opacity:.55;pointer-events:none;transition:opacity var(--erp-ease)}

.erp-empty{padding:48px 20px;text-align:center;color:var(--erp-muted)}
.erp-empty h5{margin:0 0 6px;color:var(--erp-text)}

/* skeleton placeholder: <div class="erp-skeleton" style="height:14px;width:60%"></div> */
.erp-skeleton{display:block;border-radius:4px;background:linear-gradient(90deg,#E8EDF5 25%,#F3F6FB 50%,#E8EDF5 75%);background-size:200% 100%;animation:erp-shimmer 1.4s linear infinite}
@keyframes erp-shimmer{to{background-position:-200% 0}}

/* ---------- 15. Dashboard KPI tiles (optional markup) ---------- */
.school-dashboard{max-width:1600px;margin:0 auto;padding:30px 32px 40px;color:var(--erp-text)}
.dashboard-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin:2px 0 25px}
.dashboard-eyebrow{margin-bottom:7px;color:var(--erp-accent);font-size:10px;font-weight:700;letter-spacing:1.5px}
.dashboard-heading h1{margin:0;font-size:27px;font-weight:700;letter-spacing:-.6px}
.dashboard-heading p{margin:7px 0 0;color:var(--erp-muted);font-size:13px}
.dashboard-date{display:flex;align-items:center;gap:8px;padding:9px 13px;border:1px solid var(--erp-border);border-radius:7px;background:var(--erp-surface);color:var(--erp-muted);font-size:12px;white-space:nowrap}
.dashboard-date i{color:var(--erp-accent)}
.dashboard-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:22px}
.dashboard-stat{position:relative;min-width:0;padding:19px 20px 18px;border:1px solid var(--erp-border);border-radius:10px;background:var(--erp-surface);box-shadow:var(--erp-shadow);transition:transform .15s ease,box-shadow .15s ease}
.dashboard-stat:hover{transform:translateY(-2px);box-shadow:var(--erp-shadow-lg)}
.dashboard-stat-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.dashboard-stat-icon{display:flex;width:38px;height:38px;align-items:center;justify-content:center;border-radius:10px;font-size:17px}
.dashboard-stat-icon.is-blue{background:#e8effd;color:#245fc4}.dashboard-stat-icon.is-green{background:#e5f5ed;color:#13804d}
.dashboard-stat-icon.is-amber{background:#fff3df;color:#b56a08}.dashboard-stat-icon.is-violet{background:#efebfc;color:#7256c7}
.dashboard-stat-caption{color:#8a97a8;font-size:9px;font-weight:700;letter-spacing:1px}
.dashboard-stat-value{margin-top:17px;color:var(--erp-text);font-size:29px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.15;letter-spacing:-.5px}
.dashboard-stat-label{margin-top:5px;color:var(--erp-muted);font-size:12px}
.dashboard-chart-card{overflow:hidden;border:1px solid var(--erp-border);border-radius:10px;background:var(--erp-surface);box-shadow:var(--erp-shadow)}
.dashboard-chart-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 23px;border-bottom:1px solid var(--erp-border-2)}
.dashboard-chart-heading h2{margin:0;color:var(--erp-text);font-size:15px;font-weight:700}
.dashboard-chart-heading p{margin:5px 0 0;color:var(--erp-muted);font-size:11.5px}
.dashboard-chart-badge{display:inline-flex;align-items:center;gap:7px;padding:7px 10px;border-radius:6px;background:#f1f5fb;color:#526a8d;font-size:10px;font-weight:600;white-space:nowrap}
.dashboard-chart-content{min-height:340px;padding:8px 18px 15px}
#class-chart{width:100%;min-height:340px}
.dashboard-chart-empty{min-height:320px;align-items:center;justify-content:center;color:var(--erp-muted);font-size:13px}
.erp-kpi{background:var(--erp-surface);border:1px solid var(--erp-border);border-radius:var(--erp-radius);padding:16px 18px;box-shadow:var(--erp-shadow);position:relative;overflow:hidden}
.erp-kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--erp-accent)}
.erp-kpi.is-success::before{background:var(--erp-success)}
.erp-kpi.is-danger::before{background:var(--erp-danger)}
.erp-kpi.is-warning::before{background:var(--erp-warning)}
.erp-kpi .erp-kpi-label{color:var(--erp-muted);font-size:12.5px}
.erp-kpi .erp-kpi-value{font-size:24px;font-weight:600;font-variant-numeric:tabular-nums;margin-top:2px;line-height:1.2}
.erp-kpi .erp-kpi-delta{font-size:12px;font-weight:600;margin-top:4px;font-variant-numeric:tabular-nums}
.erp-kpi .erp-kpi-delta.up{color:var(--erp-success)}
.erp-kpi .erp-kpi-delta.down{color:var(--erp-danger)}

/* ---------- 16. Helpers (new, opt-in) ---------- */
/* filter / action bar above a grid */
.erp-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:12px 18px;border-bottom:1px solid var(--erp-border-2);background:var(--erp-surface)}
.erp-toolbar .erp-spacer{flex:1}
/* scrolling table with sticky header: <div class="erp-table-scroll"><table class="table">… */
.erp-table-scroll{max-height:62vh;overflow:auto}
.erp-table-scroll>.table>thead>tr>th{position:sticky;top:0;z-index:2;box-shadow:0 1px 0 var(--erp-border)}
/* status dot: <span class="erp-dot ok"></span> Active */
.erp-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--erp-muted);margin-right:6px;vertical-align:baseline}
.erp-dot.ok{background:var(--erp-success)} .erp-dot.bad{background:var(--erp-danger)}
.erp-dot.wait{background:var(--erp-warning)} .erp-dot.info{background:var(--erp-info)}
/* negative amounts */
.erp-neg{color:var(--erp-danger)}
.erp-grid-kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:20px}

/* ---------- 17. Responsive ---------- */
@media (max-width:768px){
  body .content{padding:12px}
  body .page-header-content{padding:10px 12px!important}
  body .panel-body,body .panel-heading{padding:12px}
  body .datatable-footer{justify-content:center}
  body .modal-dialog{margin:10px}
  #ModalBody,#SModalBody{padding:16px}
  body .form-control{font-size:16px} /* stops iOS zoom-on-focus */
  body .table>thead>tr>th,body .table>tbody>tr>td{padding:9px 10px}
  .erp-grid-kpi{grid-template-columns:1fr 1fr;gap:10px}
  .school-dashboard{padding:23px 18px 30px}
  .dashboard-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .dashboard-stat{padding:16px}
  .dashboard-stat-value{font-size:25px}
  .dashboard-date{font-size:10px}
}
@media(max-width:480px){
  .school-dashboard{padding:18px 13px 24px}
  .dashboard-heading{align-items:flex-start;flex-direction:column;gap:12px;margin-bottom:18px}
  .dashboard-heading h1{font-size:24px}
  .dashboard-stats{gap:9px}
  .dashboard-stat{padding:14px 12px}
  .dashboard-stat-caption{font-size:8px;letter-spacing:.6px}
  .dashboard-stat-value{margin-top:14px;font-size:23px}
  .dashboard-stat-label{font-size:11px}
  .dashboard-chart-heading{align-items:flex-start;padding:16px}
  .dashboard-chart-badge{font-size:9px;padding:6px 8px}
  .dashboard-chart-content{padding:6px 8px 10px}
  #class-chart{min-height:300px}
}

/* ---------- 18. Motion + print ---------- */
@media (prefers-reduced-motion:reduce){
  *:not([class*="spinner"]){transition:none!important;animation:none!important}
}
@media print{
  body{background:#fff;color:#000;font-size:12px}
  .navbar,.sidebar,.page-header,.breadcrumb-line,.footer,.erp-footer,.datatable-header,.datatable-footer,.btn,.heading-elements,.no-print,.erp-toolbar{display:none!important}
  .page-container,.content-wrapper,.content{padding:0!important;margin:0!important}
  .panel,.panel-flat{border:0;box-shadow:none}
  .table>thead>tr>th{background:#fff!important;border-bottom:2px solid #000}
  .table>thead{display:table-header-group}
  .table>tbody>tr{page-break-inside:avoid}
  .erp-table-scroll{max-height:none;overflow:visible}
  a[href]:after{content:none!important}
}
