*{margin:0;padding:0;box-sizing:border-box}:root{--bg: #1a1c1e;--surface: #242729;--surface-2: #2f3336;--line: #3a3f43;--ink: #f0f1f2;--ink-2: #b4b8bc;--ink-3: #80868c;--accent: #e8eaed}body{font-family:system-ui,-apple-system,PingFang SC,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--ink)}.page{max-width:1100px;margin:0 auto;padding:28px 18px}header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}h1{font-size:22px;font-weight:600;letter-spacing:.5px;color:var(--ink)}.user-area{display:flex;align-items:center;gap:12px}.hello{font-size:14px;color:var(--ink-2)}.login-btn{border:1px solid var(--accent);background:var(--accent);color:#1a1c1e;padding:7px 16px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;transition:opacity .15s}.login-btn:hover{opacity:.85}.ghost{border:1px solid var(--line);background:var(--surface);color:var(--ink-2);padding:7px 14px;border-radius:8px;cursor:pointer;font-size:14px;transition:background .15s}.ghost:hover{background:var(--surface-2)}.controls{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:18px}.seg{display:inline-flex;align-items:center;background:var(--surface);border-radius:9px;padding:3px;border:1px solid var(--line)}.seg button{border:0;background:transparent;padding:6px 16px;border-radius:7px;cursor:pointer;font-size:14px;color:var(--ink-2);transition:all .15s}.seg button.active{background:var(--surface-2);color:var(--ink);box-shadow:0 1px 3px #0000004d;font-weight:500}.year-select{border:0;background:transparent;padding:6px 10px;border-radius:7px;cursor:pointer;font-size:14px;color:var(--ink-2);font-family:inherit;outline:none;transition:all .15s}.year-select.active{background:var(--surface-2);color:var(--ink);box-shadow:0 1px 3px #0000004d;font-weight:500}.year-select option{background:var(--surface);color:var(--ink)}.bot-toggle{font-size:14px;color:var(--ink-2);cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex;align-items:center;gap:6px}.bot-toggle input{accent-color:var(--accent)}.chart-wrap{position:relative;background:var(--surface);border-radius:14px;border:1px solid var(--line);box-shadow:0 2px 10px #0000000f}.chart{width:100%;height:70vh;min-height:420px}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:var(--ink-3);font-size:15px}.overlay.err{color:#b4503f}.page-foot{text-align:center;color:var(--ink-3);font-size:13px;margin-top:16px}
