@import"https://fonts.googleapis.com/css2?family=Familjen+Grotesk:wght@400;500;600;700&family=Space+Mono:wght@400;700&display=swap";:root{--bg: #0b101d;--surface: #202531;--surface-hover: #2a2f3a;--accent: #c9a96e;--positive: #5a8f7b;--negative: #b55a4a;--border: #2a2f3a;--muted: #8b9298;--fg: #e8e3dc;--grid: #38404f;--font-display: "Familjen Grotesk", system-ui, sans-serif;--font-mono: "Space Mono", "Courier New", monospace;--radius: 6px;--radius-sm: 4px}*{margin:0;padding:0;box-sizing:border-box}html,body{background:var(--bg);color:var(--fg);font-family:var(--font-mono);font-size:13px;line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh}.app-layout{min-height:100vh;display:flex;flex-direction:column}.navbar{display:flex;align-items:center;justify-content:space-between;padding:0 40px;background:var(--bg);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100}.navbar-brand{font-family:var(--font-display);font-weight:700;font-size:16px;color:var(--fg);white-space:nowrap;padding:18px 0}.navbar-brand .navbar-subtitle{display:block;font-family:var(--font-mono);font-size:10px;color:var(--muted);font-weight:400;margin-top:2px}.navbar-tabs{display:flex;gap:0;list-style:none}.navbar-tab{font-family:var(--font-display);font-weight:500;font-size:13px;color:var(--muted);cursor:pointer;padding:22px 24px;border:none;background:none;border-bottom:2px solid transparent;transition:color .15s,border-color .15s;white-space:nowrap}.navbar-tab:hover{color:var(--fg)}.navbar-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.filter-bar{display:flex;align-items:center;gap:24px;padding:14px 40px;background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap}.filter-bar .filter-group{display:flex;align-items:center;gap:8px}.filter-bar .filter-info{margin-left:auto;font-size:11px;color:var(--muted)}.main-content{flex:1;padding:32px 40px;min-width:0}.section{margin-bottom:48px;scroll-margin-top:24px}.section-heading{font-family:var(--font-display);font-weight:500;font-size:18px;color:var(--fg);margin-bottom:4px}.section-sub{font-size:11px;color:var(--muted);margin-bottom:24px}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.kpi-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;display:flex;flex-direction:column;gap:8px}.kpi-label{font-family:var(--font-display);font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.kpi-value{font-family:var(--font-mono);font-size:28px;font-weight:700;color:var(--fg);font-variant-numeric:tabular-nums;line-height:1.1}.kpi-sub{font-size:11px;color:var(--muted)}.kpi-sparkline{display:flex;align-items:center;gap:3px;margin-top:4px;height:10px}.spark-dot{width:4px;height:4px;border-radius:50%;display:inline-block}.controls-row{display:flex;align-items:center;gap:16px;margin-bottom:20px;flex-wrap:wrap}.control-group{display:flex;align-items:center;gap:8px}.control-label{font-family:var(--font-display);font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.select{background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px 12px;font-family:var(--font-mono);font-size:12px;cursor:pointer;outline:none}.select:focus{border-color:var(--accent)}.chart-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px}.chart-wrapper{width:100%;height:360px;margin-top:8px}.table-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}table{width:100%;border-collapse:collapse}thead th{background:var(--bg);font-family:var(--font-display);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:12px 16px;text-align:right;border-bottom:1px solid var(--border);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none}thead th:first-child,thead th:nth-child(2){text-align:left}thead th:hover{color:var(--fg)}thead th.sorted{color:var(--accent)}tbody td{padding:10px 16px;font-family:var(--font-mono);font-size:12px;text-align:right;border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums}tbody td:first-child,tbody td:nth-child(2){text-align:left}tbody tr:hover{background:var(--surface-hover)}tbody tr:last-child td{border-bottom:none}.delta-positive{color:var(--positive);font-weight:700}.delta-negative{color:var(--negative);font-weight:700}.delta-neutral{color:var(--muted)}.tooltip-host{position:relative}.formula-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:var(--surface-alt, #2a2f3a);border:1px solid var(--border);font-size:10px;font-style:italic;color:var(--accent);margin-left:6px;cursor:help;vertical-align:middle}.formula-tooltip{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);background:#1a1f2e;border:1px solid var(--border);border-radius:8px;padding:12px 16px;font-size:11px;font-family:var(--font-mono);line-height:1.6;color:var(--fg);white-space:nowrap;z-index:100;box-shadow:0 8px 24px #0006;opacity:0;pointer-events:none;transition:opacity .2s ease}.formula-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:#1a1f2e}.tooltip-host:hover .formula-tooltip{opacity:1;pointer-events:auto}.delta-badge{display:inline-flex;align-items:center;gap:4px;font-family:var(--font-mono);font-size:12px;font-weight:700;padding:3px 8px;border-radius:var(--radius-sm);margin-top:2px}.delta-badge.positive{color:var(--positive);background:#5a8f7b1f}.delta-badge.negative{color:var(--negative);background:#b55a4a1f}.delta-badge.neutral{color:var(--muted);background:#8b929814}.delta-badge .delta-label{font-size:10px;font-weight:400;color:var(--muted)}.legend{display:flex;gap:20px;margin-bottom:16px;flex-wrap:wrap}.legend-item{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted)}.legend-swatch{width:12px;height:12px;border-radius:2px}@media(max-width:1024px){.navbar{padding:0 20px;flex-direction:column;align-items:stretch;gap:0}.navbar-brand{padding:14px 0 6px}.navbar-tabs{overflow-x:auto}.navbar-tab{padding:14px 16px;font-size:12px}.filter-bar{padding:12px 20px}.main-content{padding:24px 20px}.kpi-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.kpi-grid{grid-template-columns:1fr}.chart-wrapper{height:300px}.controls-row{flex-direction:column;align-items:flex-start}.main-content{padding:16px}tbody td,thead th{padding:8px 10px;font-size:11px}}.toggle-group{display:inline-flex;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:3px;gap:2px}.toggle-btn{padding:8px 16px;border:none;background:transparent;color:var(--muted);font-family:var(--font-body);font-size:13px;font-weight:500;border-radius:6px;cursor:pointer;transition:all .15s ease;white-space:nowrap}.toggle-btn:hover{color:var(--fg)}.toggle-btn.active{background:var(--accent);color:#fff}.threeDS-table th,.threeDS-table td{text-align:right}.threeDS-table th:first-child,.threeDS-table td:first-child,.threeDS-table th:nth-child(2),.threeDS-table td:nth-child(2),.threeDS-table th:nth-child(3),.threeDS-table td:nth-child(3){text-align:left}.threeDS-table .col-highlight{background:#c9a96e14}.threeDS-table .col-dim{opacity:.4}.threeDS-table .cat-editions{color:var(--accent)}.threeDS-table .cat-complements{color:var(--positive)}.insight-banner{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:8px;padding:14px 18px;margin-bottom:20px;font-size:13px;color:var(--fg);line-height:1.6}.insight-banner strong{color:var(--accent)}.bar-row{display:flex;align-items:center;gap:10px;margin-bottom:8px}.bar-row-label{width:110px;flex-shrink:0;font-size:12px;font-weight:500;color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar-row-track{flex:1;height:22px;background:var(--border);border-radius:4px;overflow:hidden}.bar-row-fill{height:100%;border-radius:4px;transition:width .4s ease;display:flex;align-align:center;justify-content:flex-end;padding-right:6px;font-size:10px;font-family:Space Mono,monospace;color:#fff;font-weight:600;white-space:nowrap}.bar-row-value{width:70px;flex-shrink:0;text-align:right;font-family:Space Mono,monospace;font-size:11px;font-weight:600;color:var(--fg)}.category-comparison{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:24px}@media(max-width:768px){.category-comparison{grid-template-columns:1fr}}.comparison-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:18px}.comparison-card h4{margin:0 0 12px;font-family:Familjen Grotesk,sans-serif;font-size:14px;font-weight:600}.comparison-metric{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--border);font-size:12px}.comparison-metric:last-child{border-bottom:none}.comparison-metric .label{color:var(--muted)}.comparison-metric .value{font-family:Space Mono,monospace;font-weight:600;color:var(--fg)}.subsection{margin-top:32px}.subsection-heading{font-family:Familjen Grotesk,sans-serif;font-size:14px;font-weight:600;color:var(--fg);margin:0 0 8px;padding-bottom:8px;border-bottom:1px solid var(--border)}.monthly-chart{display:flex;align-items:flex-end;gap:12px;height:200px;padding:16px 0;border-bottom:1px solid var(--border)}.monthly-chart-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0}.monthly-chart-bar-group{display:flex;gap:3px;align-items:flex-end;width:100%;justify-content:center}.monthly-chart-bar{width:14px;border-radius:3px 3px 0 0;transition:height .4s ease;min-height:2px}.monthly-chart-label{font-size:10px;color:var(--muted);font-family:Space Mono,monospace;white-space:nowrap}.grouped-bar-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}.grouped-bar-row-label{width:110px;flex-shrink:0;font-size:12px;font-weight:500;color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.grouped-bar-row-content{flex:1;display:flex;height:24px;border-radius:4px;overflow:hidden;background:var(--border)}.grouped-bar-segment{height:100%;display:flex;align-items:center;justify-content:center;font-size:10px;color:#fff;font-weight:600;font-family:Space Mono,monospace;white-space:nowrap;overflow:hidden}.cat-editions{color:#7b9cc9;font-weight:600}.cat-complements{color:#e07a5f;font-weight:600}.fa-grouped-bar{display:flex;flex-direction:column;gap:12px}.fa-grouped-row{display:flex;align-items:center;gap:8px}.fa-grouped-label{width:180px;font-size:11px;color:var(--muted);text-align:right;flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fa-grouped-track{flex:1;height:28px;display:flex;border-radius:4px;overflow:hidden;background:#ffffff08}.fa-grouped-seg{height:100%;display:flex;align-items:center;justify-content:center;font-size:9px;color:#fff;font-weight:600;font-family:Space Mono,monospace;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.fa-grouped-value{width:60px;font-size:11px;color:var(--fg);font-family:Space Mono,monospace;flex-shrink:0}.fa-stacked-bar{display:flex;flex-direction:column;gap:10px}.fa-stacked-row{display:flex;align-items:center;gap:8px}.fa-stacked-label{width:100px;font-size:11px;color:var(--muted);flex-shrink:0;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fa-stacked-track{flex:1;height:22px;display:flex;border-radius:3px;overflow:hidden;background:#ffffff08}.fa-stacked-seg{height:100%;min-width:0;transition:opacity .2s}.fa-stacked-seg:hover{opacity:.8}.fa-legend{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}.fa-legend-item{display:flex;align-items:center;gap:4px;font-size:10px;color:var(--muted)}.fa-legend-dot{width:8px;height:8px;border-radius:2px;flex-shrink:0}.fa-heatmap{width:100%;border-collapse:collapse;font-family:Space Mono,monospace}.fa-heatmap th,.fa-heatmap td{padding:6px 8px;text-align:center;border:1px solid var(--border);font-size:10px}.fa-heatmap th{color:var(--muted);font-weight:500;font-size:9px;max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fa-heatmap td:first-child{text-align:left;color:var(--fg);font-weight:600}.fa-heatmap-cell{font-weight:600;color:#000000b3}.fa-callout{background:#c9a96e1a;border:1px solid var(--accent);border-radius:8px;padding:12px 16px;margin-bottom:16px}.fa-callout-title{font-size:13px;font-weight:700;color:var(--accent);margin-bottom:4px}.fa-callout-body{font-size:12px;color:var(--muted);line-height:1.5}.fa-callout-body strong{color:var(--fg)}.fa-avg-line{position:absolute;width:100%;border-top:2px dashed var(--accent);opacity:.7}.fa-avg-label{position:absolute;right:0;top:-16px;font-size:9px;color:var(--accent);font-family:Space Mono,monospace}.fa-comparison-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}.fa-comparison-label{width:120px;font-size:11px;color:var(--muted);flex-shrink:0;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fa-comparison-bars{flex:1;display:flex;flex-direction:column;gap:2px}.fa-comparison-bar{height:14px;border-radius:3px;display:flex;align-items:center;padding-left:6px;font-size:9px;font-family:Space Mono,monospace;color:#fff;font-weight:600}.wf-bar-col{position:relative}.wf-tooltip{display:none;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px 12px;min-width:180px;z-index:100;box-shadow:0 4px 12px #0006;pointer-events:none}.wf-bar-col:hover .wf-tooltip{display:block}.perf-issue-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:24px;margin-bottom:24px}.perf-issue-header{display:flex;align-items:center;gap:12px;margin-bottom:8px;flex-wrap:wrap}.perf-severity-badge{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;padding:3px 10px;border-radius:4px;font-family:Space Mono,monospace}.perf-severity-critical{background:#ef444426;color:#ef4444;border:1px solid rgba(239,68,68,.4)}.perf-severity-high{background:#f59e0b26;color:#f59e0b;border:1px solid rgba(245,158,11,.4)}.perf-severity-medium{background:#3b82f626;color:#3b82f6;border:1px solid rgba(59,130,246,.4)}.perf-issue-title{font-family:Familjen Grotesk,sans-serif;font-size:18px;font-weight:700;color:var(--fg);margin:0}.perf-issue-desc{font-size:13px;color:var(--muted);margin-bottom:20px;line-height:1.5}.perf-impact-callout{background:#ef444414;border:1px solid rgba(239,68,68,.3);border-radius:8px;padding:14px 16px;margin:16px 0;display:flex;align-items:center;gap:12px}.perf-impact-callout-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.perf-impact-callout-value{font-family:Space Mono,monospace;font-size:20px;font-weight:700;color:#ef4444}.perf-impact-callout-desc{font-size:12px;color:var(--muted);margin-left:auto}.perf-chart-row{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:16px}@media(max-width:768px){.perf-chart-row{grid-template-columns:1fr}}.perf-chart-box{background:#ffffff05;border:1px solid var(--border);border-radius:8px;padding:16px}.perf-chart-title{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:14px}.perf-chart-subtitle{font-size:11px;color:var(--muted);margin-bottom:10px}.perf-line-chart{width:100%;height:auto}.perf-line-chart .grid-line{stroke:var(--border);stroke-width:1;stroke-dasharray:3 3}.perf-line-chart .axis-label{fill:var(--muted);font-size:10px;font-family:Space Mono,monospace}.perf-line-chart .data-line{fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.perf-line-chart .data-point{stroke-width:2}.perf-line-chart .data-area{opacity:.1}.perf-line-chart .alert-point{fill:#ef4444;stroke:#ef4444;r:5}.perf-line-chart .alert-label{fill:#ef4444;font-size:10px;font-weight:700;font-family:Space Mono,monospace}.perf-line-chart .annotation{fill:var(--muted);font-size:10px;font-family:Space Mono,monospace}.perf-donut-container{display:flex;align-items:center;gap:24px;flex-wrap:wrap}.perf-donut-center{text-anchor:middle;dominant-baseline:middle}.perf-donut-center-value{font-family:Space Mono,monospace;font-size:22px;font-weight:700;fill:var(--fg)}.perf-donut-center-label{font-size:10px;fill:var(--muted)}.perf-donut-legend{display:flex;flex-direction:column;gap:8px}.perf-donut-legend-item{display:flex;align-items:center;gap:8px;font-size:12px}.perf-donut-legend-color{width:12px;height:12px;border-radius:3px;flex-shrink:0}.perf-donut-legend-value{font-family:Space Mono,monospace;font-weight:600;color:var(--fg);margin-left:auto}.perf-donut-legend-label{color:var(--muted)}.perf-bar-h-row{display:flex;align-items:center;gap:10px;margin-bottom:7px}.perf-bar-h-label{width:160px;font-size:11px;color:var(--muted);flex-shrink:0;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.perf-bar-h-track{flex:1;height:22px;background:#ffffff0a;border-radius:4px;overflow:hidden;position:relative}.perf-bar-h-fill{height:100%;border-radius:4px;display:flex;align-items:center;padding-left:8px;font-size:10px;font-family:Space Mono,monospace;color:#fff;font-weight:600;transition:width .3s ease}.perf-bar-h-pct{font-size:10px;font-family:Space Mono,monospace;color:var(--muted);width:50px;text-align:right;flex-shrink:0}.perf-trend-table{width:100%;border-collapse:collapse;font-family:Space Mono,monospace;font-size:11px}.perf-trend-table th{text-align:left;color:var(--muted);font-weight:600;padding:6px 8px;border-bottom:1px solid var(--border)}.perf-trend-table td{padding:6px 8px;border-bottom:1px solid rgba(255,255,255,.03);color:var(--fg)}.perf-trend-table .alert-cell{color:#ef4444;font-weight:700}.perf-context-note{background:#3b82f614;border:1px solid rgba(59,130,246,.2);border-radius:8px;padding:12px 16px;margin-top:12px;font-size:12px;color:var(--muted);line-height:1.5}.perf-context-note strong{color:#93c5fd}
