:root{--bg:#0b0f14;--panel:#121820;--panel2:#1a2230;--line:#223042;--text:#e8eef5;--muted:#8ea0b5;--accent:#4fc3f7;--good:#4caf82;--bad:#e2606c;--warn:#e2b93b}*{box-sizing:border-box;margin:0;padding:0}body,html{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}a{color:inherit;text-decoration:none}.shell{display:flex;min-height:100vh}.nav{width:218px;flex-shrink:0;background:var(--panel);border-right:1px solid var(--line);padding:22px 14px;position:-webkit-sticky;position:sticky;top:0;height:100vh}.nav .brand{font-weight:700;font-size:17px;margin-bottom:4px;letter-spacing:.3px}.nav .brand span{color:var(--accent)}.nav .tag{color:var(--muted);font-size:11.5px;margin-bottom:26px}.nav a.item{display:block;padding:9px 12px;border-radius:8px;color:var(--muted);font-size:14px;margin-bottom:3px}.nav a.item.active,.nav a.item:hover{background:var(--panel2);color:var(--text)}.nav a.item.active{font-weight:600}.nav .foot{position:absolute;bottom:20px;left:14px;right:14px;font-size:11.5px;color:var(--muted)}.nav .foot button{background:none;border:1px solid var(--line);color:var(--muted);border-radius:6px;padding:5px 10px;cursor:pointer;margin-top:8px;font-size:12px}.main{flex:1 1;padding:28px 34px;max-width:1240px}h1{font-size:22px;margin-bottom:4px}h2{font-size:15px;margin:26px 0 12px;color:var(--text)}.sub{color:var(--muted);font-size:13px;margin-bottom:22px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));grid-gap:14px;gap:14px}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px 18px}.card .k{color:var(--muted);font-size:12px;margin-bottom:6px}.card .v{font-size:22px;font-weight:700}.card .d{font-size:12px;color:var(--muted);margin-top:5px}.v.good{color:var(--good)}.v.bad{color:var(--bad)}.v.warn{color:var(--warn)}.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px;margin-bottom:16px}.panel h3{font-size:14px;margin-bottom:12px}.row2{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px}@media (max-width:980px){.row2{grid-template-columns:1fr}.nav{display:none}}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;color:var(--muted);font-weight:500;font-size:12px}td,th{padding:7px 10px;border-bottom:1px solid var(--line)}td.num,th.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}tr:last-child td{border-bottom:none}.pos{color:var(--good)}.neg{color:var(--bad)}.pill{display:inline-block;padding:2px 9px;border-radius:99px;font-size:11.5px;background:var(--panel2);color:var(--muted)}.pill.ok{color:var(--good)}.pill.warn{color:var(--warn)}.pill.bad{color:var(--bad)}button.primary{background:var(--accent);color:#06222e;font-weight:600;border:none;border-radius:8px;padding:10px 16px;cursor:pointer;font-size:14px}button.ghost{background:none;padding:8px 14px;cursor:pointer;font-size:13px}button.ghost,input,select,textarea{border:1px solid var(--line);color:var(--text);border-radius:8px}input,select,textarea{background:var(--panel2);padding:9px 12px;font-size:14px;width:100%}label{font-size:12px;color:var(--muted);display:block;margin:10px 0 5px}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center}.login-box{width:360px;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:30px}.login-box h1{margin-bottom:6px}.login-box p{color:var(--muted);font-size:13px;margin-bottom:18px}.err{color:var(--bad)}.err,.okmsg{font-size:13px;margin-top:10px}.okmsg{color:var(--good)}.loading{color:var(--muted);padding:60px;text-align:center}.grid-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:10px;gap:10px;align-items:end}.bar-wrap{background:var(--panel2);border-radius:6px;height:8px;overflow:hidden;margin-top:8px}.bar{height:100%;background:var(--accent)}.note{font-size:12.5px;color:var(--muted);line-height:1.55}ul.clean{list-style:none}ul.clean li{padding:8px 0;border-bottom:1px solid var(--line);font-size:13.5px;line-height:1.5}ul.clean li:last-child{border-bottom:none}.chart-h{height:280px}