:root{
  --bg:#0c0d10; --panel:#141519; --card:#191b20; --card-hover:#1f2228;
  --line:rgba(255,255,255,.07); --line-strong:rgba(255,255,255,.12);
  --gold:#fbbf24; --gold-soft:rgba(251,191,36,.12);
  --text:#ececec; --muted:#8a8d94; --faint:#5c5f66;
  --good:#34d399; --good-soft:rgba(52,211,153,.14);
  --bad:#f87171; --bad-soft:rgba(248,113,113,.14);
  --r:14px;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}
.hidden{display:none!important}
.err{color:var(--bad);font-size:13px;margin-top:10px;min-height:16px}
.loading{color:var(--muted);padding:60px;text-align:center}
.muted{color:var(--muted)}
.right{text-align:right}
button{font-family:inherit;cursor:pointer}

/* ===== Login ===== */
.login{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(1200px 600px at 50% -10%,rgba(251,191,36,.08),transparent 60%)}
.login-card{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:40px 36px;width:360px;text-align:center;box-shadow:0 30px 80px -30px rgba(0,0,0,.7)}
.login-card .logo{font-size:48px;line-height:1}
.login-card h1{margin:10px 0 0;font-size:25px;font-weight:800;letter-spacing:-.5px}
.login-card p{margin:4px 0 22px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:3px;font-weight:600}
.login-card input{width:100%;padding:13px 14px;border-radius:11px;border:1px solid var(--line-strong);background:var(--bg);color:var(--text);font-size:15px;outline:none}
.login-card input:focus{border-color:var(--gold)}
.login-card button{width:100%;margin-top:12px;padding:13px;border:none;border-radius:11px;background:var(--gold);color:#1a1305;font-weight:800;font-size:15px}
.login-card button:hover{filter:brightness(1.05)}

/* ===== Shell ===== */
.app{display:flex;min-height:100vh}
.nav{width:224px;background:var(--panel);border-right:1px solid var(--line);padding:20px 14px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.brand{font-weight:800;font-size:17px;letter-spacing:-.3px;padding:6px 10px 22px;display:flex;align-items:center;gap:8px}
.brand-logo{font-size:20px}
.brand-accent{color:var(--gold)}
.nav-items{display:flex;flex-direction:column;gap:3px;flex:1}
.nav-items button{display:flex;align-items:center;gap:11px;text-align:left;background:none;border:none;color:var(--muted);padding:11px 12px;border-radius:10px;font-size:14px;font-weight:600;position:relative;transition:background .12s,color .12s}
.nav-items button .ni{font-size:15px;width:18px;text-align:center}
.nav-items button:hover{background:var(--card);color:var(--text)}
.nav-items button.active{background:var(--gold-soft);color:var(--gold)}
.nav-items button.active::before{content:"";position:absolute;left:-14px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--gold)}
.logout{margin-top:8px;background:none;border:1px solid var(--line);color:var(--muted);padding:10px;border-radius:10px;font-weight:600;font-size:13px}
.logout:hover{border-color:var(--bad);color:var(--bad)}
.view{flex:1;padding:30px 36px;overflow:auto;max-width:1100px}
.page-head{margin:0 0 22px}
.page-head h2{margin:0;font-size:23px;font-weight:800;letter-spacing:-.4px}
.page-head .sub{color:var(--muted);font-size:13px;margin-top:3px}

/* ===== Cards ===== */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-bottom:18px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;transition:border-color .15s,transform .15s}
.card:hover{border-color:var(--line-strong)}
.card-label{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:1.2px;font-weight:600}
.card-val{font-size:27px;font-weight:800;margin-top:8px;letter-spacing:-.5px}
.card-val.good{color:var(--good)} .card-val.bad{color:var(--bad)} .card-val.gold{color:var(--gold)}
.card-sub{color:var(--faint);font-size:12px;margin-top:4px}

/* Hero P&L */
.hero{background:linear-gradient(180deg,var(--card),var(--panel));border:1px solid var(--line-strong);border-radius:18px;padding:26px 28px;margin-bottom:18px}
.hero .htop{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:12px}
.hero .hlabel{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:1.5px;font-weight:600}
.hero .hval{font-size:46px;font-weight:800;letter-spacing:-1.5px;margin-top:6px}
.hero .hval.good{color:var(--good)} .hero .hval.bad{color:var(--bad)}
.hero .hbadge{font-size:12px;font-weight:700;padding:6px 12px;border-radius:999px;background:var(--gold-soft);color:var(--gold)}
.splitbar{display:flex;height:12px;border-radius:999px;overflow:hidden;margin-top:20px;background:var(--bg)}
.splitbar .seg-rev{background:var(--good)} .splitbar .seg-exp{background:var(--bad)}
.legend{display:flex;gap:20px;margin-top:12px;font-size:13px}
.legend .dot{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:7px;vertical-align:1px}
.legend .dot.rev{background:var(--good)} .legend .dot.exp{background:var(--bad)}

/* ===== Tables ===== */
.tbl-wrap{background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;margin-top:6px}
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:12px 16px;font-size:13.5px;border-bottom:1px solid var(--line)}
th{color:var(--muted);font-size:10.5px;text-transform:uppercase;letter-spacing:1.2px;font-weight:600;background:rgba(255,255,255,.02)}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover{background:rgba(255,255,255,.02)}
.pill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}
.pill.active{background:var(--good-soft);color:var(--good)}
.pill.expiring{background:var(--gold-soft);color:var(--gold)}
.pill.lapsed{background:var(--bad-soft);color:var(--bad)}
.tdel{color:var(--faint);background:none;border:none;font-size:15px;padding:2px 6px;border-radius:6px}
.tdel:hover{color:var(--bad);background:var(--bad-soft)}
.tcheck{width:17px;height:17px;accent-color:var(--gold);cursor:pointer}

/* ===== Forms ===== */
.form{display:flex;flex-wrap:wrap;gap:11px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;margin-bottom:18px;align-items:flex-end}
.form .field{display:flex;flex-direction:column;gap:5px}
.form label{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:1px;font-weight:600}
.form input,.form select{padding:9px 11px;border-radius:9px;border:1px solid var(--line-strong);background:var(--bg);color:var(--text);font-size:14px;outline:none}
.form input:focus,.form select:focus{border-color:var(--gold)}
.form input[type=number]{width:120px}
.form .grow{flex:1;min-width:170px}
.btn-gold{padding:10px 20px;border:none;border-radius:9px;background:var(--gold);color:#1a1305;font-weight:800;font-size:13.5px}
.btn-gold:hover{filter:brightness(1.05)}

/* ===== Alts ===== */
.altgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.altcard{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px;position:relative}
.altcard:hover{border-color:var(--line-strong)}
.altcard .aname{font-weight:700;font-size:15px;display:flex;align-items:center;gap:8px}
.altcard .abal{font-size:26px;font-weight:800;color:var(--gold);margin-top:10px;letter-spacing:-.5px}
.altcard .ameta{color:var(--faint);font-size:12px;margin-top:10px;line-height:1.6}
.altcard .tdel{position:absolute;top:12px;right:12px}
.dot-on{width:7px;height:7px;border-radius:50%;background:var(--good);display:inline-block}
.dot-off{width:7px;height:7px;border-radius:50%;background:var(--bad);display:inline-block}

.hint{color:var(--muted);font-size:12.5px;margin-top:14px;line-height:1.65;background:var(--card);border-left:2px solid var(--gold);border-radius:0 8px 8px 0;padding:10px 14px}
