:root{--bg: #0a0b0e;--bg-2: #0f1115;--surface: #15171d;--surface-2: #1b1e26;--line: #262a33;--line-2: #323845;--fg: #e8eaf0;--fg-2: #9aa1ad;--fg-3: #6b7280;--accent: #4f8cff;--accent-soft: rgba(79, 140, 255, .14);--ok: #2fd47a;--ok-soft: rgba(47, 212, 122, .12);--danger: #ff5d5d;--danger-soft: rgba(255, 93, 93, .12);--warn: #f5b94a;--radius: 12px;--radius-sm: 8px;--shadow: 0 1px 3px rgba(0,0,0,.4), 0 8px 24px rgba(0,0,0,.25)}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:radial-gradient(1200px 600px at 80% -10%,rgba(79,140,255,.06),transparent 60%),var(--bg);color:var(--fg);font-family:Manrope,system-ui,-apple-system,sans-serif;font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:Fraunces,Georgia,serif;font-weight:600;letter-spacing:-.01em}.mono,code{font-family:JetBrains Mono,ui-monospace,monospace}a{color:var(--accent)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:8px;border:2px solid var(--bg)}::-webkit-scrollbar-track{background:transparent}.app{max-width:1320px;margin:0 auto;padding:22px 28px 72px}.muted{color:var(--fg-2)}.dim{color:var(--fg-3)}.header{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:20px}.brand{display:flex;align-items:baseline;gap:10px}.brand h1{margin:0;font-size:24px}.brand .sub{color:var(--fg-2);font-size:13px}.ro-badge{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:4px 9px;border-radius:999px;color:var(--warn);border:1px solid rgba(245,185,74,.4);background:#f5b94a14}.spacer{flex:1}.live-dot{width:7px;height:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 0 var(--ok-soft);animation:pulse 2.2s infinite;display:inline-block}@keyframes pulse{0%{box-shadow:0 0 #2fd47a80}70%{box-shadow:0 0 0 6px #2fd47a00}to{box-shadow:0 0 #2fd47a00}}.user-chip{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--fg-2)}.user-chip .role{font-size:10px;font-weight:700;letter-spacing:.05em;padding:2px 7px;border-radius:999px;border:1px solid var(--line-2);color:var(--fg)}.toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:18px}.nav{display:flex;gap:4px;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:4px}.pill{appearance:none;border:0;background:transparent;color:var(--fg-2);font:inherit;font-size:13px;font-weight:600;padding:7px 15px;border-radius:999px;cursor:pointer;transition:background .15s,color .15s;white-space:nowrap}.pill:hover{color:var(--fg);background:var(--surface-2)}.pill--active,.pill--active:hover{background:var(--accent);color:#fff}.btn{appearance:none;font:inherit;font-size:13px;padding:7px 13px;border-radius:var(--radius-sm);border:1px solid var(--line-2);background:var(--surface);color:var(--fg);cursor:pointer;transition:border-color .15s,background .15s}.btn:hover{border-color:var(--accent)}.btn:disabled{opacity:.5;cursor:default}.select{font:inherit;font-size:13px;padding:7px 30px 7px 12px;border-radius:var(--radius-sm);border:1px solid var(--line-2);background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' fill='none' stroke='%239aa1ad' stroke-width='1.6'%3E%3Cpath d='M1 1l4 4 4-4'/%3E%3C/svg%3E") no-repeat right 11px center;color:var(--fg);cursor:pointer;-webkit-appearance:none;appearance:none}.seg{display:inline-flex;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden}.seg .pill{border-radius:0;padding:6px 12px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin-bottom:18px;box-shadow:var(--shadow)}.card>h2{margin:0 0 14px;font-size:15px}.card-sub{color:var(--fg-2);font-weight:400;font-size:12.5px}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}.kpi{padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius-sm);background:linear-gradient(180deg,var(--surface-2),var(--surface))}.kpi .label{font-size:11px;color:var(--fg-2);text-transform:uppercase;letter-spacing:.06em}.kpi .value{font-family:Fraunces,serif;font-size:24px;font-weight:600;margin-top:4px;line-height:1.1}.table-wrap{overflow:auto;max-height:72vh;border-radius:var(--radius-sm)}table{width:100%;border-collapse:collapse;font-size:13px}thead th{position:sticky;top:0;z-index:1;background:var(--surface-2);color:var(--fg-2);font-weight:600;font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;padding:9px 12px;text-align:right;white-space:nowrap;border-bottom:1px solid var(--line-2)}thead th.l,tbody td.l{text-align:left}tbody td{padding:8px 12px;text-align:right;white-space:nowrap;border-bottom:1px solid var(--line)}tbody tr:nth-child(2n) td{background:#ffffff03}tbody tr:hover td{background:var(--accent-soft)}tbody tr:last-child td{border-bottom:0}.num{font-family:JetBrains Mono,monospace;font-variant-numeric:tabular-nums}.strong{font-weight:700}.pos{color:var(--ok)}.neg{color:var(--danger)}.badge{font-size:10.5px;font-weight:600;letter-spacing:.03em;padding:2px 8px;border-radius:999px;border:1px solid var(--line-2);color:var(--fg-2);white-space:nowrap}.badge--ok{color:var(--ok);border-color:#2fd47a66;background:var(--ok-soft)}.badge--bad{color:var(--danger);border-color:#ff5d5d66;background:var(--danger-soft)}.err{color:var(--danger);font-size:13px;margin-bottom:12px;padding:10px 12px;border:1px solid rgba(255,93,93,.3);background:var(--danger-soft);border-radius:var(--radius-sm)}.empty{color:var(--fg-2);padding:28px 12px;text-align:center;font-size:13px}.spinner{width:16px;height:16px;border:2px solid var(--line-2);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;display:inline-block;vertical-align:middle}@keyframes spin{to{transform:rotate(360deg)}}.login{min-height:100vh;display:grid;place-items:center}.login-card{width:360px;max-width:calc(100vw - 32px)}.login-card .input{width:100%;padding:11px 13px;margin-bottom:11px;border-radius:var(--radius-sm);border:1px solid var(--line-2);background:var(--bg-2);color:var(--fg);font:inherit;font-size:14px}.login-card .input:focus{outline:none;border-color:var(--accent)}.login-card .btn{width:100%;padding:11px;background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.login-card .btn:hover{filter:brightness(1.08)}@media(max-width:720px){.app{padding:16px 14px 60px}.nav{width:100%;overflow-x:auto;justify-content:flex-start}.kpi .value,.brand h1{font-size:20px}}
