:root{--bg: #e8ecea;--bg-deep: #d5ddd8;--ink: #152019;--muted: #5f6b64;--accent: #0d5c45;--accent-2: #094433;--accent-soft: #d7ebe3;--surface: #f7f9f8;--line: #c5cec9;--danger: #a11d2e;--focus: #0d5c45;--chart-grid: #d2dad5;--radius: 2px;--font: "IBM Plex Sans", "Segoe UI", sans-serif;--display: "IBM Plex Serif", "Times New Roman", serif;font-family:var(--font);color:var(--ink);background:linear-gradient(165deg,rgb(13 92 69 / 8%) 0%,transparent 42%),linear-gradient(320deg,rgb(45 58 52 / 6%) 0%,transparent 38%),radial-gradient(900px 480px at 100% -10%,#cfd9d4 0%,transparent 55%),var(--bg);line-height:1.45}*{box-sizing:border-box}body{margin:0;min-height:100vh;-webkit-font-smoothing:antialiased}h1,h2,.brand{font-family:var(--display);font-weight:600;letter-spacing:-.02em}a{color:var(--accent);text-underline-offset:3px}a:hover{color:var(--accent-2)}button,input{transition:background .15s ease,border-color .15s ease,color .15s ease,opacity .15s ease}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:28px 20px}.auth-card{width:min(420px,100%);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:36px 32px 28px;display:grid;gap:14px;animation:rise .45s ease both}.auth-card .brand{font-size:1.55rem;margin:0}.auth-card .lede{margin:-4px 0 4px;color:var(--muted);font-size:.95rem}.auth-card h1{margin:8px 0 0;font-size:1.35rem;border-top:1px solid var(--line);padding-top:16px}label{display:grid;gap:6px;font-size:.84rem;font-weight:500;color:var(--muted)}input{border:1px solid var(--line);background:#fff;padding:11px 12px;font:inherit;color:var(--ink);border-radius:var(--radius)}input:focus{outline:2px solid var(--focus);outline-offset:1px;border-color:var(--accent)}button{border:0;background:var(--accent);color:#fff;padding:11px 16px;font:inherit;font-weight:500;cursor:pointer;border-radius:var(--radius)}button:hover{background:var(--accent-2)}button:disabled{opacity:.55;cursor:default}button.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}button.ghost:hover{background:#ffffff8c;border-color:var(--muted)}.muted{color:var(--muted);font-size:.9rem}.error{margin:0;color:var(--danger);font-size:.9rem;background:#f8e8ea;border:1px solid #e8c5ca;padding:10px 12px;border-radius:var(--radius)}.app-shell{width:min(1180px,100%);margin:0 auto;padding:28px 20px 56px;display:grid;gap:18px;animation:rise .4s ease both}.topbar{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;padding-bottom:4px;border-bottom:1px solid var(--line)}.topbar .brand{margin:0;font-size:1.75rem}.topbar .tagline{margin:4px 0 0;color:var(--muted);font-size:.92rem}.topbar-actions{display:flex;align-items:center;gap:12px}.user-pill{font-size:.85rem;color:var(--muted);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filters{display:grid;gap:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px 18px 16px}.filters-row{display:grid;grid-template-columns:1fr auto;gap:20px;align-items:end}.filter-block{display:grid;gap:8px}.filter-block.dates{grid-template-columns:repeat(2,minmax(138px,168px));gap:10px;display:grid}.label{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.chips{display:flex;flex-wrap:wrap;gap:7px}.chip{position:relative;background:#fff;color:var(--ink);border:1px solid var(--line);padding:7px 11px;font-size:.82rem;font-weight:500;letter-spacing:.02em;border-radius:var(--radius)}.chip:hover{border-color:var(--accent);background:var(--accent-soft)}.chip.active{background:var(--accent);border-color:var(--accent);color:#fff}.chip.active:hover{background:var(--accent-2);border-color:var(--accent-2)}.chip[data-tip]:hover:after{content:attr(data-tip);position:absolute;left:50%;bottom:calc(100% + 9px);transform:translate(-50%);white-space:nowrap;max-width:min(300px,75vw);overflow:hidden;text-overflow:ellipsis;background:var(--ink);color:#f4f7f5;font-size:.74rem;font-weight:500;line-height:1.3;padding:7px 10px;border-radius:var(--radius);z-index:30;pointer-events:none}.chip[data-tip]:hover:before{content:"";position:absolute;left:50%;bottom:calc(100% + 3px);transform:translate(-50%);border:5px solid transparent;border-top-color:var(--ink);z-index:30;pointer-events:none}.summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}.summary-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;min-height:76px}.summary-card .code{font-size:.72rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 4px}.summary-card .value{font-family:var(--display);font-size:1.35rem;margin:0;letter-spacing:-.02em}.summary-card .delta{margin:4px 0 0;font-size:.8rem;font-weight:500}.summary-card .delta.up{color:#0d5c45}.summary-card .delta.down{color:#a11d2e}.summary-card .delta.flat{color:var(--muted)}.meta-bar{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 16px;align-items:baseline;font-size:.88rem}.meta-bar p{margin:0}.chart-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px 16px 12px}.chart-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:8px;padding:0 4px}.chart-panel h2{margin:0;font-size:1.2rem}.chart-unit{color:var(--muted);font-size:.85rem}.chart-wrap{width:100%;min-height:440px}.chart-empty{display:grid;place-items:center;min-height:360px;color:var(--muted);text-align:center;padding:24px}.chart-empty p{margin:0;max-width:36ch}.footer-note{color:var(--muted);font-size:.8rem;margin:0;padding:0 2px}.loading-dot:after{content:"";display:inline-block;width:.55em;height:.55em;margin-left:.45em;border-radius:50%;background:var(--accent);animation:pulse .9s ease infinite;vertical-align:.05em}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes pulse{0%,to{opacity:.35}50%{opacity:1}}@media(max-width:820px){.filters-row{grid-template-columns:1fr}.filter-block.dates{grid-template-columns:1fr 1fr}.topbar{align-items:flex-start}.topbar .brand{font-size:1.45rem}}@media(max-width:520px){.filter-block.dates{grid-template-columns:1fr}.user-pill{display:none}}
