:root{--green:#1f3a93;--green-d:#152a6b;--green-l:#2f52b0;--gold:#4caf50;--gold-d:#3d9142;--ink:#1c2530;--muted:#6b7684;--line:#e2e6ea;--bg:#eef1ef;--card:#fff;--ok:#1f7a4d;--neg:#b23b3b;--warn:#b8860b;--blue:#2b5a8c;--shadow:0 1px 3px #14281e14,0 6px 20px #14281e12}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Arial,sans-serif;font-size:14px;line-height:1.45}input,select,button{font-family:inherit}.hidden{display:none!important}.tabnum{font-variant-numeric:tabular-nums}#login{background:radial-gradient(1100px 560px at 18% -12%,#2f7a52,transparent),linear-gradient(135deg,var(--green),#0e2f1e);z-index:100;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.login-card{background:#fff;border-radius:20px;width:100%;max-width:840px;display:flex;overflow:hidden;box-shadow:0 30px 80px #0000006b}.login-brand{background:linear-gradient(160deg,var(--green),var(--green-d));color:#fff;flex-direction:column;width:44%;padding:40px 32px;display:flex;position:relative;overflow:hidden}.login-brand:after{content:"";background:#c9a24b24;border-radius:50%;width:200px;height:200px;position:absolute;bottom:-60px;right:-60px}.login-brand .logo{background:#fff;border-radius:15px;justify-content:center;align-items:center;width:64px;height:64px;padding:8px;display:flex;box-shadow:0 4px 14px #0000002e}.login-brand .logo img{object-fit:contain;width:100%;height:100%}.login-brand h1{letter-spacing:.3px;margin:20px 0 4px;font-size:22px;font-weight:800}.login-brand .tag{opacity:.9;font-size:13px;line-height:1.5}.login-brand ul{z-index:1;flex-direction:column;gap:12px;margin:26px 0 0;padding:0;list-style:none;display:flex;position:relative}.login-brand li{opacity:.94;align-items:center;gap:10px;font-size:12.5px;display:flex}.login-brand li:before{content:"";background:var(--gold);border-radius:50%;flex-shrink:0;width:7px;height:7px}.login-brand .bfoot{opacity:.72;margin-top:auto;padding-top:24px;font-size:11px;line-height:1.6}.login-form{flex-direction:column;flex:1;justify-content:center;padding:40px 36px;display:flex}.login-form h2{color:var(--green-d);margin:0 0 3px;font-size:20px}.login-form .lead{color:var(--muted);margin:0 0 22px;font-size:13px}@media (max-width:720px){.login-brand{display:none}.login-card{max-width:440px}}.role-card{text-align:left;border:1.5px solid var(--line);cursor:pointer;background:#fff;border-radius:13px;align-items:center;gap:14px;margin-bottom:12px;padding:15px 16px;transition:all .15s;display:flex}.role-card:hover{border-color:var(--green);background:#f7faf8;transform:translateY(-1px)}.role-card .ico{border-radius:11px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;font-size:22px;display:flex}.role-card.entry .ico{background:#2b5a8c1f}.role-card.admin .ico{background:#c9a24b29}.role-card .t{font-size:15px;font-weight:700}.role-card .s{color:var(--muted);font-size:12px}#pinRow{margin-top:6px;display:none}#pinRow input{text-align:center;letter-spacing:4px;border:1.5px solid var(--line);border-radius:10px;width:130px;padding:10px;font-size:16px}#pinRow button{margin-left:8px}.pin-msg{color:var(--neg);min-height:16px;margin-top:6px;font-size:12px}.layout{min-height:100vh;display:flex}aside.sidebar{background:linear-gradient(180deg,var(--green),var(--green-d));color:#fff;flex-direction:column;flex-shrink:0;width:240px;height:100vh;display:flex;position:sticky;top:0}.side-brand{border-bottom:1px solid #ffffff1f;align-items:center;gap:12px;padding:20px 18px 18px;display:flex}.side-brand .logo{background:#fff;border-radius:11px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;padding:5px;display:flex}.side-brand .logo img{object-fit:contain;width:100%;height:100%}.side-brand h1{letter-spacing:.3px;margin:0;font-size:15px;font-weight:700}.side-brand .sub{opacity:.8;margin-top:1px;font-size:10.5px}nav.side-nav{flex-direction:column;flex:1;gap:4px;padding:14px 12px;display:flex;overflow-y:auto}nav.side-nav .cap{text-transform:uppercase;letter-spacing:.8px;opacity:.55;padding:8px 12px 4px;font-size:10px}nav.side-nav button{text-align:left;color:#ffffffd1;cursor:pointer;background:0 0;border:none;border-radius:10px;align-items:center;gap:11px;width:100%;padding:11px 13px;font-size:13.5px;font-weight:600;transition:all .15s;display:flex}nav.side-nav button .ic{text-align:center;opacity:.92;width:20px;font-size:15px}nav.side-nav button:hover{color:#fff;background:#ffffff1a}nav.side-nav button.active{color:#fff;box-shadow:inset 3px 0 0 var(--gold);background:#ffffff29}.side-user{border-top:1px solid #ffffff1f;padding:14px 16px;font-size:12.5px}.side-user .who b{font-size:13.5px;display:block}.side-user .role-tag{color:#fff;background:#c9a24b52;border-radius:20px;margin-top:3px;padding:2px 8px;font-size:10px;display:inline-block}.side-user button{color:#fff;cursor:pointer;background:#ffffff1f;border:1px solid #ffffff40;border-radius:9px;width:100%;margin-top:10px;padding:9px;font-size:12px;font-weight:600}.side-user button:hover{background:#ffffff38}.content{flex-direction:column;flex:1;min-width:0;display:flex}header.topbar{border-bottom:1px solid var(--line);z-index:20;background:#fff;justify-content:space-between;align-items:center;padding:14px 24px;display:flex;position:sticky;top:0;box-shadow:0 1px 2px #00000008}header.topbar .pt{color:var(--green-d);font-size:16px;font-weight:700}header.topbar .pt small{color:var(--muted);font-size:11.5px;font-weight:500;display:block}header.topbar .co{color:var(--muted);text-align:right;font-size:11.5px;line-height:1.5}main{width:100%;max-width:1200px;padding:22px 24px 70px}@media (max-width:820px){.layout{flex-direction:column}aside.sidebar{width:100%;height:auto;position:static}nav.side-nav{flex-flow:wrap;padding:8px}nav.side-nav .cap{display:none}nav.side-nav button{width:auto}.side-user{justify-content:space-between;align-items:center;gap:12px;display:flex}.side-user button{width:auto;margin-top:0}header.topbar .co{display:none}}.panel{display:none}.panel.active{animation:.2s fade;display:block}@keyframes fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.card{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;margin-bottom:18px;overflow:hidden}.card h2{text-transform:uppercase;letter-spacing:.5px;color:var(--green);border-bottom:1px solid var(--line);background:#fbfcfb;justify-content:space-between;align-items:center;gap:8px;margin:0;padding:13px 18px;font-size:13px;display:flex}.card h2 .l{align-items:center;gap:8px;display:flex}.card h2 .dot{background:var(--gold);border-radius:50%;width:8px;height:8px}.card .body{padding:16px 18px}.row{flex-wrap:wrap;gap:14px;display:flex}.fg{flex:1;min-width:150px;margin-bottom:12px}.fg label{color:var(--muted);text-transform:uppercase;letter-spacing:.4px;margin-bottom:5px;font-size:11.5px;font-weight:600;display:block}.fg input,.fg select{border:1px solid var(--line);background:#fff;border-radius:9px;width:100%;padding:9px 11px;font-size:14px}.fg input:focus,.fg select:focus{border-color:var(--green);outline:none;box-shadow:0 0 0 3px #1f5c3d1a}.fg input.r{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}.fg input[readonly]{color:var(--green-d);background:#f6f8f7;font-weight:700}.fsec{text-transform:uppercase;letter-spacing:.7px;color:var(--green-d);border-bottom:2px solid var(--line);align-items:center;gap:8px;margin:6px 0 12px;padding-bottom:6px;font-size:11px;font-weight:800;display:flex}.fsec span{color:var(--muted);letter-spacing:.3px;text-transform:none;font-weight:600}.ogrid{grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:12px;margin-bottom:6px;display:grid}.ogrid .fg{margin-bottom:0}.fg.hi label{color:var(--green-d)}.fg.hi input{border-color:var(--green);background:#f6f9ff;box-shadow:inset 0 0 0 1px #1f3a931f}.entry-actions{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:16px;padding-top:14px;display:flex}.entry-actions .prev{flex-wrap:wrap;gap:8px;display:flex}.chip{color:var(--muted);border:1px solid var(--line);background:#f4f6f5;border-radius:20px;padding:6px 13px;font-size:12.5px;font-weight:600}.chip b{color:var(--green-d);font-variant-numeric:tabular-nums;margin-left:4px}button.btn{cursor:pointer;border:1px solid #0000;border-radius:10px;padding:10px 16px;font-size:13px;font-weight:600;transition:all .15s}button.primary{background:var(--green);color:#fff}button.primary:hover{background:var(--green-d)}button.gold{background:var(--gold);color:var(--green-d)}button.gold:hover{background:var(--gold-d);color:#fff}button.ghost{color:var(--green);border:1px solid var(--line);background:#fff}button.ghost:hover{border-color:var(--green)}button.danger{color:var(--neg);background:#fff;border:1px solid #f0dede}button.danger:hover{background:#fbecec}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-top:6px;display:flex}table.dt{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:13px}table.dt th{color:var(--green-d);text-align:right;text-transform:uppercase;letter-spacing:.3px;background:#f1f4f2;padding:9px 10px;font-size:11px;font-weight:700;position:sticky;top:0}table.dt th.l{text-align:left}table.dt td{text-align:right;border-bottom:1px solid var(--line);padding:9px 10px}table.dt td.l{text-align:left}table.dt tr:hover td{background:#fafbfa}table.dt tfoot td{color:var(--green-d);border-top:2px solid var(--green);background:#f6f8f7;font-weight:800}table.dt .act{color:var(--neg);cursor:pointer;border-radius:6px;padding:2px 8px;font-size:12px;font-weight:700}table.dt .act:hover{background:#fbecec}table.dt .act2{color:var(--green);cursor:pointer;border-radius:6px;padding:2px 8px;font-size:12px;font-weight:700}table.dt .act2:hover{background:#eef3ff}.role-badge{border-radius:20px;padding:2px 9px;font-size:11px;font-weight:700}.role-badge.admin{color:var(--green-d);background:#1f3a931f}.role-badge.entry{color:#2f7a34;background:#4caf5029}.scroll{border:1px solid var(--line);border-radius:10px;max-height:420px;overflow:auto}.empty{text-align:center;color:var(--muted);padding:22px;font-size:13px}.kpis{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:4px;display:grid}.kpi{border:1px solid var(--line);background:#fff;border-radius:12px;padding:13px 15px}.kpi .k{color:var(--muted);text-transform:uppercase;letter-spacing:.4px;font-size:11px;font-weight:600}.kpi .v{color:var(--green-d);font-variant-numeric:tabular-nums;margin-top:3px;font-size:21px;font-weight:800}.kpi .u{color:var(--muted);font-size:12px;font-weight:500}.inv-title{text-align:center;color:var(--green-d);margin-bottom:1px;font-size:16px;font-weight:800}.inv-sub{text-align:center;color:var(--muted);margin-bottom:12px;font-size:12px}table.inv{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:13.5px}table.inv td{text-align:right;border-bottom:1px solid var(--line);padding:9px 12px}table.inv td.l{text-align:left;font-weight:600}table.inv td.sub{color:var(--muted);font-weight:400}table.inv tr.section td{color:var(--green);text-transform:uppercase;letter-spacing:.4px;text-align:left;background:#fbfcfb;font-size:11px;font-weight:700}table.inv tr.tot td{color:var(--green-d);background:#f6f8f7;font-weight:800}table.inv tr.grand td{background:linear-gradient(135deg,var(--green),var(--green-d));color:#fff;font-size:15px;font-weight:800}table.inv tr.grand .k{opacity:.8;text-transform:uppercase;letter-spacing:.5px;font-size:10.5px}td.neg,table.inv tr.grand td.neg{color:#ffd7d7}table.inv td.negb{color:var(--neg)}.tier-badge{color:var(--green);background:#1f5c3d1a;border-radius:20px;padding:4px 10px;font-size:12px;font-weight:600;display:inline-block}.tier-badge.out{color:var(--warn);background:#b8860b24}.bar-wrap{align-items:center;gap:8px;margin:5px 0;display:flex}.bar-wrap .lab{width:190px;color:var(--ink);font-size:12.5px;font-weight:600}.bar{background:#eef1ef;border-radius:8px;flex:1;height:16px;overflow:hidden}.bar>span{background:linear-gradient(90deg,var(--green-l),var(--green));border-radius:8px;height:100%;display:block}.bar-wrap .val{text-align:right;font-variant-numeric:tabular-nums;width:120px;font-size:12.5px;font-weight:600}.chart-wrap{width:100%;overflow-x:auto}.chart-wrap svg{display:block}.chart-wrap text{font-family:inherit}.gx-lab{fill:var(--muted);font-size:9.5px}.gy-lab{fill:var(--muted);font-size:10px}.g-grid{stroke:#eef1ef;stroke-width:1px}.g-axis{stroke:#cfd6da;stroke-width:1px}.g-dot{cursor:pointer}.g-dot:hover{r:5}.tariff-block{border:1px solid var(--line);border-radius:12px;margin-bottom:14px;overflow:hidden}.tariff-block .th{background:#f1f4f2;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;display:flex}.tariff-block .th .ttl{color:var(--green-d);font-weight:700}.tariff-block .th .eff{color:var(--muted);font-size:12px}.badge-active{background:var(--ok);color:#fff;border-radius:20px;padding:2px 8px;font-size:10.5px;font-weight:700}.note{color:var(--muted);border:1px dashed var(--line);background:#fbfcfb;border-radius:10px;margin-top:12px;padding:11px 14px;font-size:11.5px;line-height:1.6}.note b{color:var(--green-d)}.flash{background:var(--green-d);color:#fff;z-index:200;opacity:0;pointer-events:none;border-radius:12px;padding:11px 20px;font-size:13.5px;font-weight:600;transition:all .25s;position:fixed;bottom:22px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000040}.flash.show{opacity:1;transform:translate(-50%)translateY(-4px)}footer.cl{text-align:center;color:var(--muted);margin:26px 0;font-size:11px}#printArea{display:none}@media print{#login,aside.sidebar,header.topbar,.toolbar,.no-print,.flash{display:none!important}main{padding:0}body{background:#fff}.panel:not(.active){display:none}.card{box-shadow:none;border:1px solid #ccc}table.inv tr.grand td{-webkit-print-color-adjust:exact;print-color-adjust:exact}body.printing #app,body.printing #login{display:none!important}body.printing #printArea{padding:6px;display:block!important}#printArea .scroll{border:none!important;border-radius:0!important;max-height:none!important;overflow:visible!important}#printArea table{width:100%}#printArea table.rep-table tr{page-break-inside:avoid}#printArea .kpis{flex-wrap:wrap;gap:8px;display:flex}#printArea .kpi{border:1px solid #cdd7e3}#printArea table.rep-table th,#printArea table.rep-table tfoot td,#printArea table.rep-table tr.daysub td{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.rep-head{text-align:center;margin-bottom:12px}.rep-title{color:var(--green-d);font-size:15px;font-weight:800}.rep-sub{color:var(--muted);margin-top:2px;font-size:11.5px}table.rep-table th{color:#2b4a7a;text-align:right;background:#eef2f7;border:1px solid #cdd7e3;padding:8px 10px;font-weight:700}table.rep-table th.l{text-align:left}table.rep-table td{color:#2b4a7a;border:1px solid #dde3ea;padding:6px 10px}table.rep-table tfoot td{background:#f1f4f8;border-top:2px solid #2b4a7a;font-weight:800}table.rep-table tr.daysub td{color:#1f3a93;background:#eef2f7;font-weight:700}
.auth-skeleton{--accent-1:#1f3a93;--accent-2:#2f52b0;--accent-soft:#1f3a9338;--bg:#0f172a;--surface:#1e293b;--border:#334155;--text:#e2e8f0;--label:#94a3b8;--muted:#64748b;font-family:Segoe UI,system-ui,-apple-system,sans-serif}.auth-skeleton *,.auth-skeleton :before,.auth-skeleton :after{box-sizing:border-box;margin:0;padding:0}.auth-login{background:var(--bg);min-height:100vh;display:flex;overflow:hidden}.brand-panel{background:linear-gradient(135deg, #1f3a93 0%, var(--bg) 50%, #0e2f1e 100%);flex-direction:column;flex:1;justify-content:center;align-items:center;padding:3rem;display:flex;position:relative;overflow:hidden}.brand-panel:before{content:"";background:radial-gradient(circle at 20%,#2f52b024 0%,#0000 50%),radial-gradient(circle at 80% 20%,#3d91421a 0%,#0000 40%),radial-gradient(circle at 60% 80%,#1f3a9314 0%,#0000 40%);position:absolute;inset:0}.brand-panel .brand-content{text-align:center;max-width:420px;position:relative}.brand-icon{background:linear-gradient(135deg, var(--accent-1), var(--accent-2));border-radius:20px;justify-content:center;align-items:center;width:80px;height:80px;margin:0 auto 2rem;display:flex;box-shadow:0 20px 60px #1f3a9359}.brand-icon.has-logo{width:auto;max-width:340px;height:auto;box-shadow:none;background:0 0;border-radius:0;padding:.25rem .5rem}.brand-icon.has-logo img{filter:drop-shadow(0 6px 24px #ffffff14);width:auto;max-width:100%;height:auto;max-height:96px;display:block}.brand-panel h1{color:#fff;letter-spacing:-.5px;margin-bottom:.5rem;font-size:1.8rem;font-weight:700}.brand-panel .tagline{color:#ffffff80;font-size:.95rem;line-height:1.6}.features{flex-direction:column;gap:.75rem;margin-top:2.5rem;display:flex}.features .item{color:#fff9;text-align:left;align-items:center;gap:.75rem;font-size:.85rem;display:flex}.features .item .ic{color:#7f9ae0;background:#ffffff0f;border:1px solid #ffffff14;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.form-panel{background:var(--bg);border-left:1px solid #ffffff0f;flex-direction:column;justify-content:center;width:480px;min-height:100vh;padding:3rem;display:flex}.form-header{margin-bottom:2rem}.form-header h2{color:#f1f5f9;margin-bottom:.35rem;font-size:1.5rem;font-weight:600}.form-header p{color:var(--muted);font-size:.875rem}.auth-skeleton .field{margin-bottom:1.25rem}.auth-skeleton .field label{color:var(--label);margin-bottom:.4rem;font-size:.8rem;font-weight:500;display:block}.input-wrap{background:var(--surface);border:1px solid var(--border);border-radius:10px;transition:border-color .2s,box-shadow .2s;position:relative}.input-wrap:focus-within{border-color:var(--accent-1);box-shadow:0 0 0 3px var(--accent-soft)}.input-wrap>.ic{color:#475569;pointer-events:none;display:flex;position:absolute;top:50%;left:14px;transform:translateY(-50%)}.input-wrap input{width:100%;color:var(--text);background:0 0;border:none;outline:none;padding:12px 14px 12px 42px;font-family:inherit;font-size:.9rem}.input-wrap input.has-toggle{padding-right:44px}.input-wrap input::placeholder{color:#475569}.toggle-pw{width:30px;height:30px;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;transition:background .15s,color .15s;display:flex;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.toggle-pw:hover{color:#cbd5e1;background:#ffffff0d}.error-box{color:#fca5a5;background:#ef44441a;border:1px solid #ef444440;border-radius:10px;align-items:flex-start;gap:.5rem;margin-bottom:1.25rem;padding:.75rem 1rem;font-size:.82rem;display:flex}.error-box .ic{color:#ef4444;flex-shrink:0;margin-top:1px}.error-box ul{padding-left:0;list-style:none}.status-box{color:#86efac;background:#22c55e1a;border-color:#22c55e40}.status-box .ic{color:#22c55e}.btn-login{background:linear-gradient(135deg, var(--accent-1), var(--accent-2));color:#fff;cursor:pointer;border:none;border-radius:10px;justify-content:center;align-items:center;gap:.5rem;width:100%;padding:13px;font-family:inherit;font-size:.95rem;font-weight:600;transition:opacity .2s,transform .1s;display:flex}.btn-login:hover{opacity:.9}.btn-login:active{transform:scale(.98)}.btn-login:disabled{opacity:.6;cursor:default}.footer-text{text-align:center;color:var(--border);margin-top:2rem;font-size:.75rem}.auth-pass{background:linear-gradient(135deg, #1f3a93 0%, var(--bg) 50%, #0e2f1e 100%);justify-content:center;align-items:center;min-height:100vh;padding:1.5rem;display:flex}.auth-pass .auth-card{background:var(--bg);border:1px solid #ffffff0f;border-radius:16px;width:100%;max-width:460px;padding:2.25rem;box-shadow:0 25px 80px #0006}.icon-box{background:linear-gradient(135deg, var(--accent-1), var(--accent-2));color:#fff;border-radius:14px;justify-content:center;align-items:center;width:60px;height:60px;margin-bottom:1.25rem;display:flex;box-shadow:0 12px 30px #1f3a9359}.auth-pass h2{color:#f1f5f9;margin-bottom:.4rem;font-size:1.4rem;font-weight:600}.auth-pass .lead{color:var(--muted);margin-bottom:1.75rem;font-size:.875rem;line-height:1.5}.auth-pass .hint{color:#475569;margin-top:.4rem;font-size:.72rem}.logout-link{text-align:center;color:var(--muted);cursor:pointer;background:0 0;border:none;width:100%;margin-top:1.25rem;font-family:inherit;font-size:.78rem;display:block}.logout-link:hover{color:var(--label)}@media (max-width:900px){.brand-panel{display:none}.form-panel{border-left:none;width:100%}}
html,body{height:100%}.panel{display:none}.panel.active{display:block}.modal-open{display:flex!important}#printArea{display:none}body.printing #printArea{display:block}
