:root{--bg:#f5f7f4;--surface:#fff;--ink:#1b2320;--ink-2:#4a544f;--muted:#6e7873;--rule:#d9dfda;--rule-2:#c4ccc6;--accent:#1f6e4e;--accent-ink:#145239;--accent-bg:#e6f0ea;--warn:#a63d2f;--warn-bg:#f7e9e5;--ok:#1f6e4e;--ok-bg:#e6f0ea;--info-bg:#e8edf5;--info:#2f4f7f;--zebra:#f9faf8;--code-bg:#eef1ee;--serif:"Source Serif 4", Georgia, serif;--sans:"IBM Plex Sans", "Segoe UI", Roboto, Arial, sans-serif;--mono:"IBM Plex Mono", ui-monospace, Menlo, Consolas, monospace}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:14px;line-height:1.45}a{color:var(--accent-ink);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit;color:inherit}h1{font-family:var(--serif);letter-spacing:-.01em;margin:0 0 14px;font-size:24px;font-weight:600}h2{font-family:var(--serif);margin:22px 0 10px;font-size:18px;font-weight:600}h3{color:var(--ink-2);text-transform:uppercase;letter-spacing:.04em;margin:16px 0 8px;font-size:14px;font-weight:600}code{font-family:var(--mono);background:var(--code-bg);border-radius:3px;padding:1px 4px;font-size:.9em}.shell{--side-w:220px;grid-template-columns:var(--side-w) minmax(0, 1fr);min-height:100vh;display:grid}.shell.rail{--side-w:62px}.side{background:var(--surface);border-right:1px solid var(--rule);flex-direction:column;gap:4px;height:100vh;padding:14px 10px;transition:width .15s;display:flex;position:sticky;top:0;overflow:hidden}.brand{font-family:var(--serif);color:var(--ink);justify-content:space-between;align-items:flex-start;gap:6px;padding:2px 4px 12px 8px;font-size:20px;font-weight:600;line-height:1.15;display:flex}.brand small{font-family:var(--sans);color:var(--muted);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;font-size:11px;font-weight:400;display:block}.brand-full{min-width:0}.brand-short{letter-spacing:.02em;color:var(--accent-ink);font-size:17px;display:none}.rail-toggle,.me-logout{width:26px;height:26px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.rail-toggle:hover,.me-logout:hover{background:var(--zebra);color:var(--accent-ink)}.rail-toggle:focus-visible,.me-logout:focus-visible,.nav a:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.rail-toggle .icon{transition:transform .15s}.nav-slot{display:contents}.nav a{color:var(--ink-2);white-space:nowrap;border-radius:6px;align-items:center;gap:10px;padding:7px 10px;display:flex}.nav a .icon{color:var(--muted);opacity:.85;flex:none}.nav a:hover .icon,.nav a.active .icon{color:var(--accent-ink);opacity:1}.nav a.active{background:var(--accent-bg);color:var(--accent-ink);font-weight:500}.nav a:hover{background:var(--zebra);text-decoration:none}.nav .sep{background:var(--rule);height:1px;margin:8px 6px}.side .me{color:var(--muted);border-top:1px solid var(--rule);justify-content:space-between;align-items:center;gap:6px;margin-top:auto;padding:8px 4px 0 8px;font-size:12px;display:flex}.side .me b{color:var(--ink);display:block}.side .me .me-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.me-logout{display:none}.shell.rail .me-logout{display:inline-flex}.shell.rail .brand{flex-direction:column;align-items:center;gap:6px;padding-left:0;padding-right:0}.shell.rail .brand-full,.shell.rail .nav-label,.shell.rail .me .me-text{display:none}.shell.rail .brand-short{display:block}.shell.rail .rail-toggle .icon{transform:rotate(180deg)}.shell.rail .nav a{justify-content:center;gap:0;padding:9px 0}.shell.rail .nav a .icon{width:18px;height:18px}.shell.rail .side .me{justify-content:center;padding-left:0;padding-right:0}.main{min-width:0;padding:22px 28px 60px}@media (width<=860px){.shell,.shell.rail{grid-template-columns:1fr}.side{flex-flow:wrap;align-items:center;height:auto;position:static}.side .nav{flex-wrap:wrap;gap:2px;display:flex}.side .nav .sep{width:1px;height:22px;margin:0 4px}.side .me{border:0;margin-top:0;margin-left:auto;padding-top:0}.main{padding:14px 16px 40px}}.btn{border:1px solid var(--rule-2);background:var(--surface);cursor:pointer;border-radius:6px;align-items:center;gap:6px;padding:7px 12px;font-weight:500;display:inline-flex}.btn:hover{background:var(--zebra)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-ink)}.btn.danger{color:var(--warn);border-color:var(--warn)}.btn.sm{padding:4px 8px;font-size:12px}.btn:disabled{opacity:.5;cursor:default}.input,select.input,textarea.input{border:1px solid var(--rule-2);background:var(--surface);border-radius:6px;min-width:0;padding:7px 10px}.input:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.row.between{justify-content:space-between}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 14px;display:flex}.card{background:var(--surface);border:1px solid var(--rule);border-radius:8px;padding:16px 18px}.grid{gap:12px;display:grid}.grid.cols-3{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.stat b{font-family:var(--serif);font-variant-numeric:tabular-nums;font-size:26px;font-weight:600;line-height:1.1;display:block}.stat span{color:var(--muted);font-size:12px}.muted{color:var(--muted)}.small{font-size:12px}.mono{font-family:var(--mono);font-size:12.5px}.num{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.neg{color:var(--warn)}.pos{color:var(--ok)}.chip{background:var(--code-bg);color:var(--ink-2);white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:12px;font-weight:500;display:inline-block}.chip.ok{background:var(--ok-bg);color:var(--ok)}.chip.warn{background:var(--warn-bg);color:var(--warn)}.chip.info{background:var(--info-bg);color:var(--info)}.alert{border-left:3px solid var(--warn);background:var(--warn-bg);border-radius:6px;margin:10px 0;padding:10px 14px}.alert.ok{border-color:var(--ok);background:var(--ok-bg)}.alert.info{border-color:var(--info);background:var(--info-bg)}.tw{border:1px solid var(--rule);background:var(--surface);border-radius:8px;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13px}th,td{text-align:left;border-bottom:1px solid var(--rule);vertical-align:top;padding:7px 10px}th{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-2);background:var(--zebra);white-space:nowrap;z-index:1;font-size:11.5px;position:sticky;top:0}tbody tr:hover{background:var(--zebra)}tbody tr.review{background:#fff8f0}tbody tr.group{background:var(--zebra);font-weight:600}tr.depth-0 td:first-child{font-family:var(--serif);font-size:14px}td.indent-1{padding-left:24px}td.indent-2{padding-left:40px}td.indent-3{padding-left:56px}td.indent-4{padding-left:72px}.clip{text-overflow:ellipsis;white-space:nowrap;max-width:360px;overflow:hidden}.clip:hover{white-space:normal}.drop{border:2px dashed var(--rule-2);text-align:center;background:var(--surface);color:var(--muted);cursor:pointer;border-radius:10px;padding:26px;transition:border-color .15s,background .15s}.drop.over{border-color:var(--accent);background:var(--accent-bg);color:var(--accent-ink)}.drop b{color:var(--ink)}.login{place-items:center;min-height:100vh;padding:20px;display:grid}.login .card{width:min(380px,100%)}.login h1{text-align:center}.login form{gap:10px;display:grid}.kpis{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin:14px 0;display:grid}.kpi{flex-direction:column;gap:4px;padding:14px 16px;display:flex}.kpi-label{color:var(--muted);font-size:12px}.kpi b{color:var(--ink);font-size:24px;font-weight:600;line-height:1.1}.kpi b.neg{color:var(--warn)}.kpi b.pos{color:var(--accent-ink)}.kpi-hint{color:var(--muted);font-size:11.5px}.charts{grid-template-columns:repeat(auto-fit,minmax(460px,1fr));gap:14px;display:grid}@media (width<=560px){.charts{grid-template-columns:1fr}}.chart-card{min-width:0;padding:14px 16px 8px}.chart-head{margin-bottom:8px}.dim{opacity:.55;transition:opacity .2s}.filters{gap:8px}.chips{flex-wrap:wrap;gap:6px;margin:-4px 0 8px;display:flex}.chipbtn{border:1px solid var(--rule-2);background:var(--surface);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:12.5px;display:inline-flex}.chipbtn.on{background:var(--accent-bg);border-color:var(--accent);color:var(--accent-ink)}.sw{border-radius:50%;width:9px;height:9px;display:inline-block}.tip{background:var(--surface);border:1px solid var(--rule-2);border-radius:6px;padding:8px 10px;font-size:12.5px;box-shadow:0 4px 14px #00000014}.tip-title{margin-bottom:4px;font-weight:600}.tip-row{align-items:center;gap:6px;display:flex}.tip-row .num{margin-left:auto;padding-left:14px}.two-col{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=720px){.two-col{grid-template-columns:1fr}}.recharts-surface{overflow:visible}.picker{min-width:260px;position:relative}.picker .menu{z-index:20;background:var(--surface);border:1px solid var(--rule-2);border-radius:6px;max-height:300px;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 6px 20px #00000014}.picker .menu div{cursor:pointer;padding:6px 10px}.picker .menu div:hover,.picker .menu div.hl{background:var(--accent-bg)}.picker .menu .cand{font-weight:500}.picker .menu .sec{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;cursor:default;padding:6px 10px 2px;font-size:11px}.picker .menu .sec:hover{background:0 0}.spinner{border:2px solid var(--rule-2);border-top-color:var(--accent);vertical-align:-2px;border-radius:50%;width:14px;height:14px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation:none}}details summary{cursor:pointer;color:var(--accent-ink)}
