:root{--bg: #0b0d10;--bg-1: #12151a;--bg-2: #181c23;--line: #262b35;--line-strong: #343b48;--text: #eceef2;--dim: #8d94a3;--mute: #5c6370;--accent: #c4b08a;--accent-dim: #8a7a5c;--red: #b85c5c;--red-dim: #6e3a3a;--blue: #4e78b0;--blue-dim: #2f4a6e;--ok: #6f9a78;--warn: #c4a35a;--danger: #c46b6b;--radius: 10px;--font: "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", "Source Han Sans SC", ui-sans-serif, system-ui, sans-serif;--mono: "SF Mono", "IBM Plex Mono", "Source Code Pro", ui-monospace, Menlo, monospace}*{box-sizing:border-box}html,body,#app{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}button{cursor:pointer}.num{font-family:var(--mono);font-variant-numeric:tabular-nums}.app-shell{min-height:100%;display:grid;grid-template-rows:56px 1fr 36px}.topbar{display:flex;align-items:center;gap:24px;padding:0 28px;border-bottom:1px solid var(--line);background:var(--bg-1)}.brand{display:flex;align-items:baseline;gap:10px;letter-spacing:.04em}.brand strong{font-weight:600;font-size:15px}.brand span{color:var(--mute);font-size:12px}.nav{display:flex;gap:4px;flex:1}.nav a{padding:6px 12px;color:var(--dim);border-radius:6px;transition:color .18s ease,background .18s ease}.nav a:hover,.nav a.active{color:var(--text);background:var(--bg-2)}.lottery-switch{display:flex;gap:6px}.chip{border:1px solid var(--line);background:transparent;color:var(--dim);padding:4px 10px;border-radius:999px;font-size:12px;transition:border-color .18s ease,color .18s ease}.chip.on{border-color:var(--accent-dim);color:var(--accent)}.chip:disabled{opacity:.45;cursor:not-allowed}.userbox{display:flex;align-items:center;gap:12px;color:var(--dim);font-size:12px}.userbox button{border:0;background:transparent;color:var(--mute)}.userbox button:hover{color:var(--text)}.page{padding:28px 32px 48px;max-width:1280px;width:100%;margin:0 auto;animation:fade .2s ease}@keyframes fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.footer{border-top:1px solid var(--line);color:var(--mute);font-size:11px;display:flex;align-items:center;padding:0 28px}.h1{font-size:20px;font-weight:560;margin:0 0 6px;letter-spacing:.02em}.sub{color:var(--dim);font-size:13px;margin:0 0 22px}.grid-2{display:grid;grid-template-columns:1.4fr 1fr;gap:16px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.stack{display:flex;flex-direction:column;gap:16px}.panel{background:var(--bg-1);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px}.panel-h{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:14px}.panel-h h2{margin:0;font-size:13px;font-weight:500;color:var(--dim);letter-spacing:.08em;text-transform:uppercase}.panel-h span{color:var(--mute);font-size:12px;font-family:var(--mono)}.balls{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.ball{width:36px;height:36px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:14px;font-variant-numeric:tabular-nums;border:1px solid transparent;transition:transform .18s ease}.ball.lg{width:48px;height:48px;font-size:18px}.ball.sm{width:28px;height:28px;font-size:12px}.ball.red{background:var(--red-dim);color:#f3d6d6;border-color:#8a4545}.ball.blue{background:var(--blue-dim);color:#d5e3f4;border-color:#3d5f8a}.ball.ghost{background:transparent;color:var(--mute);border-color:var(--line)}.btn{border:1px solid var(--line-strong);background:var(--bg-2);color:var(--text);padding:8px 14px;border-radius:8px;transition:background .16s ease,border-color .16s ease}.btn:hover{background:#1e232c}.btn.primary{border-color:var(--accent-dim);color:var(--accent);background:#1a1814}.btn.primary:hover{background:#221e18}.btn:disabled{opacity:.45;cursor:not-allowed}.input,.select{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:9px 11px;outline:none}.input:focus,.select:focus{border-color:var(--accent-dim)}.table{width:100%;border-collapse:collapse}.table th{text-align:left;color:var(--mute);font-weight:500;font-size:12px;padding:8px 6px;border-bottom:1px solid var(--line)}.table td{padding:10px 6px;border-bottom:1px solid var(--line);vertical-align:middle}.table tr:hover td{background:#15181e}.kpi{display:flex;flex-direction:column;gap:4px}.kpi .v{font-family:var(--mono);font-size:22px}.kpi .l{color:var(--mute);font-size:12px}.temp-hot{color:var(--danger)}.temp-warm{color:var(--accent)}.temp-cold{color:var(--blue)}.omit-bar{height:4px;background:var(--bg);border-radius:2px;overflow:hidden}.omit-bar>i{display:block;height:100%;background:var(--accent-dim)}.login-wrap{min-height:100%;display:grid;place-items:center;padding:24px}.login-card{width:360px;background:var(--bg-1);border:1px solid var(--line);border-radius:12px;padding:32px 28px 28px}.login-card h1{margin:0 0 6px;font-size:20px;font-weight:560}.login-card p{margin:0 0 22px;color:var(--dim);font-size:13px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px;color:var(--dim);font-size:12px}.err{color:var(--danger);font-size:13px;min-height:18px;margin:0 0 10px}.skel{background:var(--bg-2);animation:pulse 1.1s ease infinite;border-radius:6px;height:14px}@keyframes pulse{50%{opacity:.45}}.empty,.error-box{padding:36px 12px;text-align:center;color:var(--dim)}.error-box{color:var(--danger)}.filters{display:grid;gap:12px}.checkrow{display:flex;flex-wrap:wrap;gap:8px}.checkrow label{display:flex;gap:6px;align-items:center;color:var(--dim);font-size:12px;border:1px solid var(--line);padding:4px 8px;border-radius:6px}.range{display:grid;grid-template-columns:1fr 1fr;gap:8px}.ticket{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}.meta{color:var(--mute);font-size:12px;font-family:var(--mono)}.hist{display:flex;gap:4px;align-items:flex-end;height:88px}.hist b{flex:1;background:var(--bg-2);border:1px solid var(--line);display:flex;align-items:flex-end;justify-content:center;font-size:10px;color:var(--mute);font-family:var(--mono);position:relative}.hist b i{position:absolute;left:0;right:0;bottom:0;background:var(--accent-dim);opacity:.85}@media(max-width:960px){.grid-2,.grid-3{grid-template-columns:1fr}.page{padding:18px 16px 40px}.topbar{padding:10px 12px;gap:10px;flex-wrap:wrap;height:auto}.app-shell{grid-template-rows:auto 1fr 40px}.nav{flex:1 1 100%;overflow-x:auto}.footer{font-size:10px;padding:0 12px}}
