:root{
  --bg:#121417;--panel:#191c20;--panel2:#22262c;--panel3:#292e35;--border:#373d45;
  --text:#f2f3f5;--muted:#aeb4bc;--accent:#e20cff;--accent2:#8a1c94;--ok:#3ddc62;
  --warn:#f2b94b;--danger:#ff5c6c;--radius:16px;--shadow:0 12px 34px rgba(0,0,0,.22);
}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:Inter,Segoe UI,Roboto,Arial,sans-serif}button,input{font:inherit}.hidden{display:none!important}
.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 50% 0%,rgba(226,12,255,.12),transparent 36%),var(--bg)}
.login-card{width:min(430px,100%);background:var(--panel);border:1px solid var(--border);border-radius:22px;padding:32px;box-shadow:var(--shadow)}
.brand-mark{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;background:linear-gradient(135deg,var(--accent),#7e0b8f);font-weight:900;font-size:26px;box-shadow:0 0 28px rgba(226,12,255,.25)}.brand-mark.small{width:38px;height:38px;border-radius:12px;font-size:19px}.eyebrow{color:var(--muted);font-size:12px;letter-spacing:.14em;font-weight:800;margin-top:16px}.login-card h1{font-size:34px;margin:4px 0 8px}.muted{color:var(--muted)}
.form-stack{display:grid;gap:14px;margin-top:26px}.form-stack label{display:grid;gap:7px;color:#d8dbe0;font-size:13px;font-weight:700}.form-stack input{background:#0f1114;color:var(--text);border:1px solid var(--border);border-radius:11px;padding:13px 14px;outline:none}.form-stack input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(226,12,255,.12)}
.btn{border:0;border-radius:11px;padding:12px 16px;font-weight:800;cursor:pointer}.btn.primary{background:var(--accent);color:white}.btn.ghost{background:var(--panel3);color:var(--text);border:1px solid var(--border)}.btn.full{width:100%}.btn:disabled{opacity:.55;cursor:not-allowed}.form-message{min-height:20px;font-size:13px;color:var(--danger)}.notice{padding:12px 14px;border-radius:11px;font-size:13px;line-height:1.45;margin-top:16px}.notice.warning{background:rgba(242,185,75,.12);border:1px solid rgba(242,185,75,.28);color:#f6d68e}
.app-shell{min-height:100vh;display:grid;grid-template-columns:244px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100vh;background:#15181c;border-right:1px solid var(--border);padding:18px 12px;display:flex;flex-direction:column}.sidebar-brand{display:flex;align-items:center;gap:11px;padding:4px 8px 22px}.sidebar-brand div:last-child{display:grid}.sidebar-brand span{color:var(--muted);font-size:12px}.nav-list{display:grid;gap:7px}.nav-item{border:0;background:transparent;color:#d8dbe0;text-align:left;padding:12px 14px;border-radius:11px;font-weight:700;cursor:pointer}.nav-item:hover{background:var(--panel2)}.nav-item.active{background:linear-gradient(90deg,rgba(226,12,255,.22),rgba(226,12,255,.06));color:#fff;border-left:3px solid var(--accent)}.sidebar-bottom{margin-top:auto;display:grid;gap:12px}.sync-mini{font-size:12px;color:var(--muted);display:flex;gap:8px;align-items:center;padding:0 8px}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#747b85;flex:0 0 auto}.dot.ok{background:var(--ok)}.dot.warn{background:var(--warn)}.dot.bad{background:var(--danger)}
.content{min-width:0;padding:26px 30px 48px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:20px}.topbar .eyebrow{margin:0}.topbar h2{margin:3px 0 0;font-size:28px}.top-actions{display:flex;gap:9px}.icon-btn{width:42px;height:42px;border-radius:12px;background:var(--panel);border:1px solid var(--border);color:var(--text);font-size:18px;cursor:pointer}.icon-btn:hover{border-color:#555d68}.status-banner{display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:11px 14px;margin:22px 0 16px;color:#d8dbe0;font-size:13px}
.hero-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}.metric{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:17px;min-width:0}.metric .label{font-size:12px;color:var(--muted);font-weight:700}.metric .value{font-size:25px;font-weight:900;margin-top:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.metric .sub{font-size:12px;color:var(--muted);margin-top:6px}.metric.attention{border-color:rgba(242,185,75,.34)}
.section-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:14px;margin-top:14px}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:17px}.card h3{font-size:15px;margin:0 0 14px}.card-head{display:flex;justify-content:space-between;gap:12px;align-items:center}.chip{background:var(--panel3);border:1px solid var(--border);border-radius:999px;padding:5px 9px;font-size:11px;color:var(--muted)}
.bar-chart{height:220px;display:flex;align-items:flex-end;gap:9px;padding:18px 4px 8px;border-bottom:1px solid var(--border)}.bar-col{flex:1;min-width:0;display:grid;grid-template-rows:1fr auto;gap:8px;height:100%;align-items:end}.bar{min-height:4px;width:100%;background:linear-gradient(180deg,var(--accent),rgba(226,12,255,.48));border-radius:7px 7px 2px 2px;position:relative}.bar:hover{filter:brightness(1.12)}.bar-label{text-align:center;color:var(--muted);font-size:11px;white-space:nowrap}.bar-tip{position:absolute;top:-25px;left:50%;transform:translateX(-50%);font-size:10px;font-weight:800;white-space:nowrap;color:#fff}
.action-list,.table-list{display:grid;gap:8px}.action-row,.table-row{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;background:var(--panel2);border:1px solid #303640;border-radius:11px;padding:11px 12px}.action-row strong,.table-row strong{font-size:13px}.action-row span,.table-row span{display:block;color:var(--muted);font-size:11px;margin-top:3px}.pill{border-radius:999px;padding:5px 8px;font-size:10px;font-weight:800}.pill.high{background:rgba(255,92,108,.14);color:#ff8793}.pill.med{background:rgba(242,185,75,.14);color:#f4c865}.pill.ok{background:rgba(61,220,98,.12);color:#68e284}
.toolbar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.filter-btn{border:1px solid var(--border);background:var(--panel2);color:#d8dbe0;padding:8px 10px;border-radius:9px;font-size:12px;cursor:pointer}.filter-btn.active{border-color:var(--accent);color:#fff;background:rgba(226,12,255,.12)}
.data-table{width:100%;border-collapse:separate;border-spacing:0 7px}.data-table th{text-align:left;color:var(--muted);font-size:11px;padding:0 10px}.data-table td{background:var(--panel2);padding:11px 10px;font-size:12px;border-top:1px solid #303640;border-bottom:1px solid #303640}.data-table td:first-child{border-left:1px solid #303640;border-radius:10px 0 0 10px}.data-table td:last-child{border-right:1px solid #303640;border-radius:0 10px 10px 0}.money{text-align:right;font-variant-numeric:tabular-nums}.empty{padding:24px;text-align:center;color:var(--muted);border:1px dashed var(--border);border-radius:12px}.mobile-nav{display:none}.boot-error{position:fixed;z-index:99;left:12px;right:12px;top:12px;padding:12px;background:#401b20;border:1px solid #7b2c37;border-radius:12px;color:#ffc9cf}
@media(max-width:1050px){.hero-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.section-grid{grid-template-columns:1fr}}
@media(max-width:720px){body{padding-bottom:74px}.app-shell{display:block}.sidebar{display:none}.content{padding:18px 14px 26px}.topbar h2{font-size:23px}.status-banner{margin-top:15px}.hero-grid{grid-template-columns:1fr 1fr;gap:9px}.metric{padding:14px}.metric .value{font-size:20px}.section-grid{gap:10px;margin-top:10px}.card{padding:14px}.bar-chart{height:190px}.mobile-nav{position:fixed;display:grid;grid-template-columns:repeat(4,1fr);left:0;right:0;bottom:0;z-index:40;background:rgba(21,24,28,.96);border-top:1px solid var(--border);padding:7px 6px max(7px,env(safe-area-inset-bottom));backdrop-filter:blur(12px)}.mobile-nav button{display:grid;gap:3px;place-items:center;border:0;background:transparent;color:var(--muted);font-size:10px;padding:6px 4px}.mobile-nav button span{font-size:18px}.mobile-nav button.active{color:#fff}.data-table{min-width:640px}.table-scroll{overflow-x:auto}.login-card{padding:24px 20px}}
@media(max-width:430px){.hero-grid{grid-template-columns:1fr}.metric .value{font-size:24px}}
