:root{--bg:#f6f7f9;--surface:#fff;--surface-2:#f0f2f5;--map-base:#8f98a8;--border:#e2e5ea;--text:#15181d;--muted:#646b76;--accent:#2f6fde;--accent-text:#fff;--pos:#14894f;--neg:#c9372c;--warn:#b26a00;--warn-bg:#fff4e0;--err:#9f2b22;--err-bg:#fdecea;--shadow:0 1px 2px #1018280f;--c1:#2f6fde;--c2:#14a37f;--c3:#e08a1e;--c4:#9b51e0;--c5:#d6457a;--c6:#5b6b82;--c7:#2bb3c9;--pos-soft:color-mix(in srgb, var(--pos) 18%, transparent);--neg-soft:color-mix(in srgb, var(--neg) 18%, transparent);--bar:color-mix(in srgb, var(--accent) 60%, transparent);--stale:var(--warn);--ars:#d08a00;--usd:#1d8fcf;--cat-1:#2a78d6;--cat-2:#eb6834;--cat-3:#1baf7a;--cat-4:#eda100;--cat-5:#e87ba4;--cat-6:#008300;--cat-7:#4a3aa7;--glow:transparent;--mono:ui-monospace, "SF Mono", Menlo, "Roboto Mono", "DejaVu Sans Mono", monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#0a0d13;--surface:#121722;--surface-2:#1a2130;--map-base:#1a2130;--border:#253044;--text:#e9edf5;--muted:#93a0b5;--accent:#3fd8ff;--accent-text:#061016;--pos:#3ddc97;--neg:#ff5c7a;--warn:#ffc857;--warn-bg:#3a2c12;--err:#ff6b7f;--err-bg:#3a1c1f;--shadow:none;--ars:#ffb648;--usd:#3fd8ff;--cat-1:#3987e5;--cat-2:#d95926;--cat-3:#199e70;--cat-4:#c98500;--cat-5:#d55181;--cat-6:#008300;--cat-7:#9085e9;--glow:color-mix(in srgb, var(--accent) 55%, transparent);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.45}a{color:inherit}button{font:inherit;color:inherit}.layout{max-width:1200px;margin:0 auto;padding:0 16px 48px}.app-header{z-index:10;background:var(--bg);border-bottom:1px solid var(--border);margin:0 -16px;padding:0 16px;position:sticky;top:0}.hdr-row{align-items:center;gap:8px;height:44px;display:flex}.hdr-row .brand{letter-spacing:-.01em;margin-right:auto;font-size:16px;font-weight:700}.hdr-row nav.tabs{display:none}nav.tabs{grid-template-columns:repeat(3,1fr);height:40px;display:grid}nav.tabs a{color:var(--muted);white-space:nowrap;border-bottom:2px solid #0000;justify-content:center;align-items:center;font-size:15px;text-decoration:none;display:flex}nav.tabs a.active{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.status-line{color:var(--muted);flex-wrap:wrap;gap:2px 6px;padding:8px 0 4px;font-size:12px;line-height:1.3;text-decoration:none;display:flex}.status-line .stale{color:var(--stale)}.status-line .stale:before{content:"• "}.status-line .err{color:var(--err)}@media (width>=900px){.app-header .hdr-row{height:56px}.app-header .hdr-row .brand{margin-right:16px}.hdr-row nav.tabs{gap:4px;height:auto;margin-right:auto;display:flex}nav.tabs.mobile-tabs{display:none}.hdr-row nav.tabs a{border-bottom:0;border-radius:8px;padding:6px 12px}.hdr-row nav.tabs a.active{background:var(--surface-2)}}.segmented{background:var(--surface-2);border-radius:8px;padding:2px;display:inline-flex}.segmented button{white-space:nowrap;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:5px 10px;font-size:13px}.segmented button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow);font-weight:600}.btn,button.btn{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:8px;align-items:center;gap:6px;padding:7px 12px;font-size:14px;text-decoration:none;display:inline-flex}button.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}button.btn.small{padding:4px 10px;font-size:13px}button.btn:disabled{opacity:.55;cursor:default}.icon-btn,a.icon-btn{border:1px solid var(--border);background:var(--surface);width:32px;height:32px;color:var(--text);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-btn svg{width:18px;height:18px}.icon-btn[aria-pressed=true],a.icon-btn.active{color:var(--accent);border-color:var(--accent)}button.link{color:var(--accent);cursor:pointer;font-size:inherit;background:0 0;border:0;padding:0}button.link.danger{color:var(--neg)}.card{background:linear-gradient(160deg, color-mix(in srgb, var(--surface) 94%, var(--accent)) 0%, var(--surface) 45%);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:14px;min-width:0;margin-bottom:12px;padding:14px}h2{color:var(--muted);margin:0 0 10px;font-size:13px;font-weight:600}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;display:flex}.section-head h2{margin:0}.pos{color:var(--pos)}.neg{color:var(--neg)}.muted{color:var(--muted)}.small{font-size:12px}.warn-text{color:var(--warn)}.foot{color:var(--muted);margin-top:8px;font-size:12px;line-height:1.4}.foot a,.foot button.link{color:var(--accent)}.banner{border-radius:10px;align-items:flex-start;gap:10px;margin:8px 0;padding:10px 12px;font-size:13px;line-height:1.4;display:flex}.banner.warn{background:var(--warn-bg);color:var(--warn)}.banner.err{background:var(--err-bg);color:var(--err)}.banner.info{background:var(--surface-2);color:var(--text)}.banner .actions{white-space:nowrap;gap:10px;margin-left:auto;display:flex}.banner .actions button,.banner .actions a{color:inherit;font-weight:600}.kpi-line .main{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.kpi-line .value{letter-spacing:-.02em;font-size:28px;font-weight:600;line-height:1.2}.kpi-line .other{color:var(--muted);font-size:14px}.kpi-line .day{margin-top:4px;font-size:13px}.period-strip{text-align:center;cursor:pointer;grid-template-columns:repeat(5,1fr);gap:4px;display:grid}.period-strip .label{color:var(--muted);font-size:11px;font-weight:600}.period-strip .chosen{white-space:nowrap;letter-spacing:-.02em;font-size:clamp(12px,3.7vw,15px);font-weight:600;line-height:1.3}.period-strip .other{font-size:12px;line-height:1.3}.refs{border-top:1px solid var(--border);margin-top:10px;padding-top:6px}.ref-row{text-align:right;grid-template-columns:minmax(0,1.5fr) repeat(5,minmax(0,1fr));gap:4px;font-size:12px;line-height:1.5;display:grid}.ref-row>:first-child{text-align:left;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.ref-row.head{color:var(--muted);font-size:11px;font-weight:600}.target-row{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:8px;padding:5px 0;font-size:13px;display:grid}.target-row .label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.target-row .track{background:var(--surface-2);border-radius:5px;height:10px;position:relative;overflow:hidden}.target-row .band{background:var(--pos-soft);height:100%;position:absolute;top:0}.target-row.out .band{background:var(--neg-soft)}.target-row .fill{background:var(--bar);border-radius:3px;height:6px;position:absolute;top:2px;left:0}.target-row .mark{background:var(--text);width:2px;height:100%;margin-left:-1px;position:absolute;top:0}.target-row .nums{white-space:nowrap;text-align:right}.target-row .action{white-space:nowrap;text-align:right;font-size:12px}@media (width<=599px){.target-row{grid-template-columns:minmax(0,1fr) auto;row-gap:4px}.target-row .label{grid-area:1/1}.target-row .nums{grid-area:1/2}.target-row .track{grid-area:2/1}.target-row .action{grid-area:2/2}}.rows{margin:0 -14px}.row{text-align:left;border:0;border-bottom:1px solid var(--border);cursor:pointer;background:0 0;width:100%;min-height:56px;padding:9px 14px;line-height:1.3;display:block}.rows>:last-child{border-bottom:0}.row.static{cursor:default}.row .l1,.row .l2{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.row .l2{color:var(--muted);margin-top:3px;font-size:12px}.row .sym{font-size:15px;font-weight:600}.row .meta{color:var(--muted);margin-left:6px;font-size:12px;font-weight:400}.row .amount{white-space:nowrap;color:var(--text);font-size:14px}.row .right{white-space:nowrap;text-align:right}.detail{background:var(--surface-2);border-bottom:1px solid var(--border);padding:10px 14px;font-size:13px}.detail .name{color:var(--muted);margin-bottom:6px}.detail .grid{grid-template-columns:1fr 1fr;gap:6px 12px;display:grid}.detail .grid div span:first-child{color:var(--muted);font-size:11px;display:block}.group-head{color:var(--muted);justify-content:space-between;padding:10px 14px 4px;font-size:11px;font-weight:600;display:flex}.totals{border-top:1px solid var(--border);margin:0 -14px;padding:10px 14px 0;font-size:13px}.bar-row{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) auto;align-items:center;gap:8px;padding:5px 0;font-size:13px;display:grid}.bar-row .label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.bar-row .track{background:var(--surface-2);border-radius:4px;height:8px;overflow:hidden}.bar-row .fill{background:var(--bar);border-radius:4px;height:100%;display:block}.bar-row .nums{text-align:right;white-space:nowrap}.bar-row .nums .muted{margin-left:6px}.stacked{background:var(--surface-2);border-radius:5px;height:10px;margin:6px 0;display:flex;overflow:hidden}.stacked span{height:100%}.legend-line{justify-content:space-between;gap:8px;font-size:13px;display:flex}.mover{grid-template-columns:minmax(0,1.1fr) 44px minmax(0,1fr) auto auto;align-items:center;gap:8px;padding:6px 0;font-size:13px;display:grid}.mover .sym{font-size:14px;font-weight:600}.mover .axis{background:var(--surface-2);border-radius:4px;height:8px;position:relative}.mover .axis:before{content:"";background:var(--border);width:1px;position:absolute;top:-2px;bottom:-2px;left:50%}.mover .axis span{border-radius:4px;height:100%;position:absolute;top:0}.mover .axis span.pos{background:var(--pos);left:50%}.mover .axis span.neg{background:var(--neg);right:50%}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{border-bottom:1px solid var(--border);text-align:right;white-space:nowrap;height:44px;padding:8px 10px}th{color:var(--muted);background:var(--surface);font-size:11px;font-weight:600;position:sticky;top:0}th:first-child,td:first-child,td.left,th.left{text-align:left}tr:last-child td{border-bottom:0}.badge{background:var(--surface-2);color:var(--muted);vertical-align:1px;border-radius:999px;margin-left:6px;padding:1px 6px;font-size:11px;display:inline-block}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.ok{color:var(--pos)}.badge.err{color:var(--neg)}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.toolbar .spacer{flex:1}input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:8px;min-width:0;padding:7px 10px;font-size:16px}input[type=checkbox]{width:16px;height:16px;padding:0}label.field{color:var(--muted);flex-direction:column;gap:4px;font-size:12px;display:flex}label.check{color:var(--muted);align-items:center;gap:6px;font-size:13px;display:flex}.form-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:12px;display:grid}.error{color:var(--err);white-space:pre-wrap;font-size:13px}@media (width>=640px){input,select,textarea{font-size:14px}}.empty{color:var(--muted);padding:12px 0;font-size:13px}.skeleton{background:linear-gradient(90deg, var(--surface-2) 25%, var(--border) 50%, var(--surface-2) 75%);background-size:200% 100%;border-radius:6px;animation:1.2s infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}pre.msg{white-space:pre-wrap;color:var(--muted);margin:0;font-size:12px}details.collapsible>summary{cursor:pointer;color:var(--accent);padding:6px 0;font-size:13px;list-style:none}details.collapsible>summary::-webkit-details-marker{display:none}details.collapsible>summary:before{content:"▸ "}details.collapsible[open]>summary:before{content:"▾ "}.grid2{gap:12px;display:grid}.day-head{color:var(--muted);padding:10px 14px 2px;font-size:11px;font-weight:600}.pair{border-left:3px solid var(--bar)}.pair>.row,.pair>.pair-head{padding-left:11px}.pair-head{color:var(--muted);padding:8px 14px 0;font-size:12px;line-height:1.3}.chart-foot{color:var(--muted);margin-top:6px;font-size:12px}@media (width>=900px){.card{margin-bottom:16px;padding:16px}.rows,.totals{margin-left:-16px;margin-right:-16px}.row,.detail,.group-head,.totals,.day-head,.pair-head{padding-left:16px;padding-right:16px}.pair>.row,.pair>.pair-head{padding-left:13px}.kpi-line .value{font-size:26px}.dash{grid-template-columns:7fr 5fr;align-items:start;gap:16px;display:grid}.grid2{grid-template-columns:1fr 1fr;gap:16px}.row.wide .l1,.row.wide .l2{grid-template-columns:minmax(180px,2fr) repeat(5,minmax(90px,1fr));gap:10px;display:grid}.row.wide .l1>:not(:first-child),.row.wide .l2>:not(:first-child){text-align:right}.row.wide .l2{margin-top:2px}}.desk,.desktop-only{display:none}@media (width>=900px){.desk{display:inline}.desktop-only{display:block}.mob,.mobile-only{display:none}}.row.desk-head{min-height:0;color:var(--muted);padding-top:6px;padding-bottom:6px;font-size:11px;font-weight:600}@media (width>=900px){.row.desk-head .l1{grid-template-columns:minmax(180px,2fr) repeat(5,minmax(90px,1fr));gap:10px;display:grid}.row.desk-head .l1>:not(:first-child){text-align:right}}.num{font-family:var(--mono);letter-spacing:-.01em}.hero .value{text-shadow:0 0 18px var(--glow), 0 0 42px color-mix(in srgb, var(--glow) 50%, transparent)}.period-strip .chosen{font-family:var(--mono)}.period-strip .chosen.pos,.kpi-line .day .pos,.mover .pos{text-shadow:0 0 10px color-mix(in srgb, var(--pos) 45%, transparent)}.period-strip .chosen.neg,.kpi-line .day .neg,.mover .neg{text-shadow:0 0 10px color-mix(in srgb, var(--neg) 40%, transparent)}@media (prefers-color-scheme:light){.hero .value,.period-strip .chosen,.kpi-line .day span,.mover span{text-shadow:none}}.chart-neon .recharts-cartesian-axis-line,.chart-neon .recharts-cartesian-axis-tick-line{stroke:var(--border)}.mover.head{color:var(--muted);border-bottom:1px solid var(--border);margin-bottom:4px;padding:2px 0 6px;font-size:11px;font-weight:600}.mover.head .axis-label{justify-content:space-between;font-weight:400;display:flex}.mover .axis span.pos{box-shadow:0 0 8px color-mix(in srgb, var(--pos) 60%, transparent)}.mover .axis span.neg{box-shadow:0 0 8px color-mix(in srgb, var(--neg) 60%, transparent)}.donut-wrap{grid-template-columns:1fr;justify-items:center;gap:10px;display:grid}.donut-legend{width:100%}.donut{width:160px;height:160px;overflow:visible}.donut .slice{cursor:pointer;transition:stroke-width .15s,opacity .15s}.donut-label{fill:var(--muted);font-size:11px;font-weight:600}.donut-value{fill:var(--text);font-size:15px;font-weight:600;font-family:var(--mono)}.donut-legend{margin:0;padding:0;font-size:13px;list-style:none}.donut-legend li{cursor:pointer;grid-template-columns:10px minmax(0,1fr) auto auto;align-items:center;gap:8px;padding:4px 0;transition:opacity .15s;display:grid}.donut-legend li.dim{opacity:.45}.donut-legend .label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.donut-legend .pct{font-family:var(--mono)}.donut-legend .val{text-align:right;min-width:0;font-size:12px}.dot{vertical-align:middle;border-radius:3px;width:9px;height:9px;display:inline-block;box-shadow:0 0 6px}.exposure-line{margin-top:10px}.exposure-line .stacked{height:8px}.exposure-line .stacked span{box-shadow:0 0 8px color-mix(in srgb, currentColor 50%, transparent)}@media (width<=360px){.donut-legend .val{display:none}}button.info{border:1px solid var(--muted);width:16px;height:16px;color:var(--muted);font:600 10px/1 var(--mono);cursor:pointer;vertical-align:1px;background:0 0;border-radius:50%;margin-left:2px;padding:0;position:relative}button.info:after{content:"";position:absolute;inset:-8px}button.info.on{color:var(--accent);border-color:var(--accent)}.note{z-index:50;background:var(--surface-2);border:1px solid var(--border);color:var(--text);letter-spacing:0;text-transform:none;text-align:left;white-space:normal;border-radius:10px;padding:10px 12px;font:400 12px/1.45 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;position:fixed;box-shadow:0 8px 24px #00000059}.tip{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:6px 10px;font-size:12px}.map text{fill:#fff;paint-order:stroke;stroke:#0000004d;stroke-width:2px;pointer-events:none}.scale{color:var(--muted);align-items:center;gap:8px;margin-top:6px;font-size:11px;display:flex}.scale-bar{background:linear-gradient(90deg, color-mix(in srgb, var(--neg) 60%, var(--map-base)), var(--map-base) 50%, color-mix(in srgb, var(--pos) 60%, var(--map-base)));border-radius:3px;flex:1;height:6px}
