:root{--nx-navy:#0a1a3c;--nx-navy2:#12295c;--nx-blue:#2563ff;--nx-mist:#f3f6fb;--nx-line:#e3e9f2;--nx-ink:#0f1b33;--side-w:248px}
[data-bs-theme=dark]{--nx-mist:#0b1224;--nx-line:#1f2a44;--nx-ink:#e6ebf5}
body{font-family:'Manrope',system-ui,sans-serif;background:var(--nx-mist);color:var(--nx-ink)}
.shell{display:flex;min-height:100vh}
.side{width:var(--side-w);background:var(--nx-navy);color:#c8d3ea;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;flex-shrink:0;transition:margin .25s ease}
.shell.collapsed .side{margin-left:calc(var(--side-w) * -1)}
.brand{display:flex;align-items:center;gap:.7rem;padding:1.15rem 1.25rem;color:#fff;text-decoration:none;font-weight:800;font-size:1.1rem}
.mark{width:34px;height:34px;border-radius:9px;background:var(--nx-blue);display:grid;place-items:center;font-weight:800}
.side nav{flex:1;overflow-y:auto;padding:.5rem .75rem}
.nav-i{display:flex;align-items:center;gap:.75rem;padding:.65rem .85rem;border-radius:10px;color:#c8d3ea;text-decoration:none;font-weight:600;font-size:.92rem;margin-bottom:2px;transition:background .15s,color .15s}
.nav-i:hover{background:rgba(255,255,255,.07);color:#fff}
.nav-i.on{background:var(--nx-blue);color:#fff}
.side-foot{padding:1rem 1.25rem;font-size:.75rem;opacity:.6}
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.top{display:flex;align-items:center;gap:.75rem;padding:.7rem 1.25rem;background:var(--bs-body-bg);border-bottom:1px solid var(--nx-line);position:sticky;top:0;z-index:20}
.top-title{font-weight:800;font-size:1.05rem}
.btn-icon{width:38px;height:38px;border-radius:10px;border:1px solid var(--nx-line);display:grid;place-items:center;padding:0}
.btn-user{display:flex;align-items:center;gap:.5rem;border:1px solid var(--nx-line);border-radius:10px;font-weight:600}
.av{width:26px;height:26px;border-radius:50%;background:var(--nx-blue);color:#fff;display:grid;place-items:center;font-size:.75rem;font-weight:800}
.content{padding:1.5rem;max-width:1400px;width:100%}
.btn-primary{--bs-btn-bg:var(--nx-blue);--bs-btn-border-color:var(--nx-blue);--bs-btn-hover-bg:var(--nx-navy2);--bs-btn-hover-border-color:var(--nx-navy2);--bs-btn-active-bg:var(--nx-navy);border-radius:10px;font-weight:700}
.btn,.form-control,.form-select{border-radius:10px}
.panel{background:var(--bs-body-bg);border:1px solid var(--nx-line);border-radius:14px;padding:1.25rem}
.panel-h{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}
.panel-h h5{margin:0;font-weight:800}
.table{--bs-table-bg:transparent}
.table thead th{font-size:.8rem;color:#7a879f;font-weight:700;border-bottom:1px solid var(--nx-line)}
.table-hover tbody tr{transition:background .12s}
.kpi{background:var(--bs-body-bg);border:1px solid var(--nx-line);border-radius:14px;padding:1.1rem 1.25rem}
.kpi small{color:#7a879f;font-weight:600}
.kpi b{display:block;font-size:1.45rem;font-weight:800;margin-top:.15rem;font-variant-numeric:tabular-nums}
.kpi.lead{background:var(--nx-navy);color:#fff;border-color:var(--nx-navy)}
.kpi.lead small{color:#9fb0d6}
.kpi.lead b{font-size:2rem}
.skel{background:linear-gradient(90deg,var(--nx-line) 25%,transparent 50%,var(--nx-line) 75%);background-size:200% 100%;animation:sk 1.2s infinite;border-radius:6px;color:transparent!important}
@keyframes sk{from{background-position:200% 0}to{background-position:-200% 0}}
.empty{text-align:center;padding:3rem 1rem;color:#7a879f}
.form-label{font-weight:600;font-size:.85rem}
.item-row td{vertical-align:top}
.totals{max-width:380px;margin-left:auto}
.totals div{display:flex;justify-content:space-between;padding:.3rem 0}
.totals .grand{border-top:2px solid var(--nx-ink);font-weight:800;font-size:1.15rem;margin-top:.3rem;padding-top:.5rem}
.modal.fade .modal-dialog{transition:transform .25s ease}
.tab-nav .nav-link{font-weight:700;color:inherit}
.tab-nav .nav-link.active{background:var(--nx-blue)}
@media(max-width:991px){.side{position:fixed;z-index:50;margin-left:calc(var(--side-w) * -1)}.shell.collapsed .side{margin-left:0}.content{padding:1rem}}
@media print{.side,.top,.no-print,.toast-container{display:none!important}.content{padding:0}body{background:#fff}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* ---- login ---- */
.auth{display:grid;grid-template-columns:1.05fr 1fr;min-height:100vh;background:var(--bs-body-bg)}
.auth-art{background:var(--nx-navy);color:#fff;padding:3rem;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}
.auth-art h1{font-size:2.4rem;font-weight:800;max-width:14ch;line-height:1.1}
.ledger{display:flex;flex-direction:column;gap:.7rem;max-width:420px}
.lrow{display:flex;align-items:center;gap:.9rem;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:.8rem 1rem;opacity:0;animation:rowin .6s ease forwards}
.lrow:nth-child(1){animation-delay:.2s}.lrow:nth-child(2){animation-delay:.7s}.lrow:nth-child(3){animation-delay:1.2s}.lrow:nth-child(4){animation-delay:1.7s}
.lrow .no{font-weight:700;font-variant-numeric:tabular-nums;flex:1}.lrow .amt{font-weight:800;font-variant-numeric:tabular-nums}
.stamp{font-size:.7rem;font-weight:800;padding:.2rem .55rem;border-radius:6px;border:1.5px solid #4ade80;color:#4ade80;transform:scale(0);animation:stamp .35s cubic-bezier(.3,1.6,.5,1) forwards}
.lrow:nth-child(1) .stamp{animation-delay:1.0s}.lrow:nth-child(2) .stamp{animation-delay:1.5s}.lrow:nth-child(3) .stamp{animation-delay:2.0s}
.stamp.due{border-color:#fbbf24;color:#fbbf24;animation-delay:2.5s}
@keyframes rowin{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes stamp{from{transform:scale(0) rotate(-12deg)}to{transform:scale(1) rotate(-4deg)}}
.auth-form{display:grid;place-items:center;padding:2rem}
.auth-card{width:100%;max-width:400px}
.auth-card h2{font-weight:800}
@media(max-width:900px){.auth{grid-template-columns:1fr}.auth-art{display:none}}
/* ---- document print ---- */
.doc{background:#fff;color:#111;max-width:820px;margin:0 auto;padding:36px 40px;font-size:13px;border:1px solid var(--nx-line)}
.doc h1{font-size:26px;font-weight:800;margin:0;color:var(--nx-blue)}
.doc table{width:100%;border-collapse:collapse}
.doc th{background:var(--nx-blue);color:#fff;padding:7px 8px;text-align:left;font-size:12px}
.doc td{padding:7px 8px;border-bottom:1px solid #e5e7eb}
.doc .r{text-align:right}
.doc .meta{display:flex;justify-content:space-between;gap:24px;margin:18px 0}
.doc .tot{width:300px;margin-left:auto;margin-top:12px}.doc .tot td{border:0;padding:3px 8px}
.doc .tot .g td{border-top:2px solid #111;font-weight:800;font-size:15px}
.doc.tpl-classic h1{color:#111;border-bottom:3px double #111;padding-bottom:8px}.doc.tpl-classic th{background:#111}
.doc.tpl-minimal th{background:#fff;color:#111;border-bottom:2px solid #111}.doc.tpl-minimal h1{color:#111;font-weight:600}
@media print{.doc{border:0;padding:0;max-width:none}}

.totals div[hidden]{display:none}
