:root{
  --bg:#1a1730; --surface:#242049; --surface-2:#2c2856; --surface-3:#332e63; --border:#3c3670;
  --ink:#f3f1fb; --ink-2:#b9b3dd; --ink-3:#8983b3;
  --accent:#59e6c2; --accent-wash:rgba(89,230,194,0.12);
  --gold:#f4c451; --good:#4ade80; --good-wash:rgba(74,222,128,0.14);
  --warn-wash:rgba(251,191,36,0.14); --crit:#fb7185; --crit-wash:rgba(251,113,133,0.14);
  --shadow: 0 12px 32px rgba(10,8,30,0.35);
}
*{ box-sizing:border-box; }
body{ margin:0; background:var(--bg); color:var(--ink); font-family:'Public Sans', ui-sans-serif, system-ui, sans-serif; font-size:14px; line-height:1.5; -webkit-font-smoothing:antialiased; }
h1,h2,h3,.brand{ font-family:'Sora', ui-sans-serif, sans-serif; }
.mono, .tabular{ font-family:'JetBrains Mono', ui-monospace, monospace; font-variant-numeric: tabular-nums; }

/* ---- login ---- */
.login-screen{ min-height:100vh; display:flex; align-items:center; justify-content:center; background:radial-gradient(circle at 30% 20%, #262151, var(--bg)); }
.login-card{ background:var(--surface); border:1px solid var(--border); border-radius:16px; padding:34px 32px; width:340px; display:flex; flex-direction:column; gap:14px; box-shadow:var(--shadow); }
.login-brand{ display:flex; align-items:center; gap:10px; margin-bottom:8px; }
.login-brand b{ display:block; font-size:16px; }
.login-brand span{ font-size:11px; color:var(--ink-3); text-transform:uppercase; letter-spacing:.5px; }
.login-card label{ display:flex; flex-direction:column; gap:6px; font-size:12.5px; color:var(--ink-2); font-weight:600; }
.login-card input{ background:var(--surface-2); border:1px solid var(--border); border-radius:9px; padding:10px 12px; color:var(--ink); font:inherit; }
.login-card button{ margin-top:6px; background:var(--accent); color:#0d2a24; border:none; border-radius:9px; padding:11px; font-weight:700; font-size:14px; cursor:pointer; }
.login-error{ background:var(--crit-wash); color:var(--crit); border:1px solid rgba(251,113,133,.35); border-radius:8px; padding:8px 10px; font-size:12.5px; }

/* ---- layout ---- */
.app{ display:grid; grid-template-columns:240px 1fr; min-height:100vh; }
.sidebar{ background:#151329; border-right:1px solid var(--border); padding:22px 16px; display:flex; flex-direction:column; gap:26px; }
.brand{ display:flex; align-items:center; gap:10px; padding:0 6px; }
.brand-text{ display:flex; flex-direction:column; line-height:1.15; }
.brand-text b{ font-size:15px; font-weight:700; }
.brand-text span{ font-size:10.5px; color:var(--ink-3); letter-spacing:.6px; text-transform:uppercase; }
nav.primary-nav{ display:flex; flex-direction:column; gap:2px; }
.nav-item{ display:flex; align-items:center; gap:11px; padding:9px 10px; border-radius:9px; color:var(--ink-2); font-size:13.5px; font-weight:500; cursor:pointer; border:1px solid transparent; }
.nav-item:hover{ background:var(--surface); color:var(--ink); }
.nav-item.active{ background:var(--accent-wash); color:var(--accent); border-color:rgba(89,230,194,.28); }
.sidebar-foot{ margin-top:auto; padding:12px; border-radius:10px; background:var(--surface); border:1px solid var(--border); font-size:11.5px; color:var(--ink-3); }
.sidebar-foot b{ color:var(--ink-2); display:block; margin-bottom:3px; font-size:12px; }

main{ padding:22px 30px 50px; max-width:1280px; }
.topbar{ display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:22px; flex-wrap:wrap; }
.topbar h1{ font-size:21px; margin:0; font-weight:700; }
.topbar .sub{ color:var(--ink-3); font-size:12.5px; margin-top:3px; }
.topbar-controls{ display:flex; align-items:center; gap:12px; }
.who{ font-size:12.5px; color:var(--ink-2); }
.logout-btn{ background:var(--surface); border:1px solid var(--border); color:var(--ink-2); padding:7px 13px; border-radius:9px; font-size:12.5px; font-weight:600; cursor:pointer; }
.logout-btn:hover{ color:var(--ink); }

.load-error{ background:var(--crit-wash); color:var(--crit); border:1px solid rgba(251,113,133,.35); border-radius:10px; padding:10px 14px; margin-bottom:16px; font-size:13px; }

section.view{ display:none; }
section.view.active{ display:block; }

.kpi-row{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-bottom:18px; }
.kpi{ background:var(--surface); border:1px solid var(--border); border-radius:14px; padding:16px 18px; display:flex; flex-direction:column; gap:8px; }
.kpi .label{ font-size:11.5px; color:var(--ink-3); text-transform:uppercase; letter-spacing:.5px; font-weight:600; }
.kpi .value{ font-size:26px; font-weight:700; font-family:'Sora',sans-serif; }
.kpi .delta{ font-size:12px; font-weight:600; color:var(--ink-3); }

.panel-row{ display:grid; grid-template-columns:1.55fr 1fr; gap:14px; margin-bottom:18px; }
.panel{ background:var(--surface); border:1px solid var(--border); border-radius:14px; padding:18px 20px; }
.panel-head{ display:flex; align-items:baseline; justify-content:space-between; margin-bottom:10px; gap:10px; }
.panel-head h3{ margin:0; font-size:14.5px; font-weight:600; }
.panel-head .hint{ font-size:11.5px; color:var(--ink-3); }
.chart-wrap{ position:relative; }
.chart-tooltip{ position:absolute; pointer-events:none; background:#0f0d21; border:1px solid var(--border); border-radius:8px; padding:7px 10px; font-size:11.5px; color:var(--ink); box-shadow:var(--shadow); transform:translate(-50%,-115%); white-space:nowrap; opacity:0; transition:opacity .08s ease; }
.chart-tooltip .t-date{ color:var(--ink-3); font-size:10.5px; margin-bottom:2px; }
.chart-tooltip .t-val{ font-weight:700; color:var(--accent); }

.barlist{ display:flex; flex-direction:column; gap:12px; }
.barlist .row{ display:grid; grid-template-columns:86px 1fr 46px; align-items:center; gap:10px; font-size:12.5px; }
.barlist .track{ height:9px; border-radius:99px; background:var(--surface-3); overflow:hidden; }
.barlist .fill{ height:100%; border-radius:99px; }
.barlist .name{ color:var(--ink-2); }
.barlist .n{ text-align:right; color:var(--ink); font-weight:600; }

.table-wrap{ overflow-x:auto; border:1px solid var(--border); border-radius:14px; background:var(--surface); }
table{ width:100%; border-collapse:collapse; min-width:680px; }
thead th{ text-align:left; font-size:11px; text-transform:uppercase; letter-spacing:.4px; color:var(--ink-3); background:var(--surface-2); padding:11px 16px; font-weight:600; border-bottom:1px solid var(--border); white-space:nowrap; }
tbody td{ padding:12px 16px; border-bottom:1px solid var(--border); font-size:13px; }
tbody tr:last-child td{ border-bottom:none; }
td.num, th.num{ text-align:right; }
td.amount{ font-family:'JetBrains Mono',monospace; font-variant-numeric:tabular-nums; }

.pill{ display:inline-flex; align-items:center; gap:5px; padding:4px 10px; border-radius:999px; font-size:11.5px; font-weight:600; white-space:nowrap; }
.pill.good{ background:var(--good-wash); color:var(--good); }
.pill.warn{ background:var(--warn-wash); color:var(--gold); }
.pill.crit{ background:var(--crit-wash); color:var(--crit); }
.pill .dot{ width:6px; height:6px; border-radius:99px; background:currentColor; }

.filter-row{ display:flex; gap:8px; margin-bottom:12px; flex-wrap:wrap; }
.chip{ border:1px solid var(--border); background:var(--surface); color:var(--ink-2); padding:6px 13px; border-radius:999px; font-size:12.5px; font-weight:600; cursor:pointer; }
.chip.active{ background:var(--accent); color:#0d2a24; border-color:var(--accent); }

.section-sub{ color:var(--ink-3); font-size:12.5px; margin:0 0 18px; }

.venue-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:14px; }
.venue-card{ background:var(--surface); border:1px solid var(--border); border-radius:14px; padding:16px 18px; display:flex; flex-direction:column; gap:10px; }
.venue-card .vname{ font-weight:700; font-size:14px; }
.venue-card .vaddr{ font-size:12px; color:var(--ink-3); }
.venue-card .vmeta{ display:flex; justify-content:space-between; align-items:center; font-size:12px; color:var(--ink-2); border-top:1px solid var(--border); padding-top:10px; }
.venue-card .vmeta b{ color:var(--ink); font-family:'JetBrains Mono',monospace; }

.earn-hero{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:14px; margin-bottom:18px; }
.earn-hero .kpi .value{ color:var(--accent); }

[hidden]{ display:none !important; }
