:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizeLegibility;color-scheme:dark;--bg: #0b1016;--bg-elevated: #0f1720;--surface: rgba(17, 25, 34, .94);--surface-strong: rgba(20, 30, 41, .98);--surface-soft: rgba(20, 30, 41, .66);--surface-muted: rgba(11, 16, 22, .62);--border: #243342;--border-strong: #33485b;--text: #e6edf3;--text-strong: #ffffff;--muted: #9aa9b8;--muted-2: #75889a;--accent: #42d49c;--accent-strong: #20b77e;--accent-soft: rgba(66, 212, 156, .14);--accent-border: rgba(66, 212, 156, .45);--blue: #7aa8ff;--gold: #f5c76b;--orange: #ff9f43;--danger: #ff7d7d;--danger-strong: #e25555;--shadow: 0 18px 48px rgba(0, 0, 0, .28);--shadow-soft: 0 10px 26px rgba(0, 0, 0, .18);--radius: 8px;--radius-sm: 6px;--ring: 0 0 0 3px rgba(66, 212, 156, .2);--shell-x: clamp(14px, 2.4vw, 32px);--panel-pad: clamp(14px, 1.8vw, 20px)}*{box-sizing:border-box}body{margin:0;min-width:320px;background:var(--bg);color:var(--text)}button,input,select{font:inherit}html[data-theme=light]{color-scheme:light;--bg: #f2f5f8;--bg-elevated: #e9eff5;--surface: rgba(255, 255, 255, .97);--surface-strong: #ffffff;--surface-soft: rgba(255, 255, 255, .82);--surface-muted: rgba(235, 241, 247, .72);--border: #d3dde7;--border-strong: #b8c6d5;--text: #1c2a38;--text-strong: #0b1220;--muted: #647588;--muted-2: #7b8da0;--accent: #087f5b;--accent-strong: #056244;--accent-soft: rgba(8, 127, 91, .1);--accent-border: rgba(8, 127, 91, .36);--blue: #346eb8;--gold: #a46b06;--orange: #b96515;--danger: #bd3030;--danger-strong: #9f2626;--shadow: 0 18px 42px rgba(33, 48, 64, .11);--shadow-soft: 0 8px 22px rgba(33, 48, 64, .08);--ring: 0 0 0 3px rgba(8, 127, 91, .16)}.shell{min-height:100vh;padding:24px;background:linear-gradient(180deg,rgba(70,213,168,.07),transparent 280px),#0c1117}.topbar,.status-line,.section-title,.layout,.metrics-grid,.period-tabs{display:flex}.topbar{align-items:center;justify-content:space-between;margin-bottom:18px}.topbar-actions{display:flex;gap:8px;align-items:center}.topbar-logout-button{min-width:78px;white-space:nowrap}.page-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.eyebrow{color:#46d5a8;margin:0 0 4px;text-transform:uppercase;font-size:12px;letter-spacing:.08em}h1{margin:0;font-size:clamp(32px,4vw,54px);letter-spacing:0}h2{margin:0;font-size:16px}.icon-button,button{border:1px solid #2d4054;background:#111a24;color:#d8dee9;border-radius:6px;min-height:38px;padding:8px 12px;cursor:pointer}.icon-button{width:42px;padding:0;display:grid;place-items:center}button:hover{border-color:#46d5a8}.status-line{gap:18px;flex-wrap:wrap;border-top:1px solid #223040;border-bottom:1px solid #223040;padding:12px 0;margin-bottom:18px;color:#9fb1c2}.status-line strong{color:#fff}.status-link-button{border:0;background:transparent;color:#9fb1c2;padding:0;min-height:0;text-align:left}.status-link-button:hover{color:#d8dee9;text-decoration:underline}.metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:12px;margin-bottom:12px}.metric,.panel,.alert{background:#111a24eb;border:1px solid #223040;border-radius:8px}.metric{min-height:120px;padding:16px;display:flex;justify-content:space-between;gap:12px}.metric p,.metric span{margin:0;color:#8ca0b3;font-size:13px}.metric strong{display:block;margin:10px 0 6px;font-size:clamp(22px,2.4vw,34px);color:#fff}.metric svg{color:#46d5a8}.metric-link{cursor:pointer}.metric-link:focus-visible{outline:2px solid #46d5a8;outline-offset:2px}.metric-link:hover{border-color:#46d5a8}.metric-not-calculated strong{color:#f5c76b}.metric-live-top strong{font-size:clamp(18px,1.9vw,24px);margin:8px 0 4px}.metric-live-button{text-align:left}.metric-live-button.active{border-color:#46d5a8;background:#10241f}.metric-live-abs{display:block;margin-top:2px;font-size:15px;font-weight:700;color:#d8dee9}.layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(330px,.55fr);gap:12px;margin-bottom:12px}.panel{padding:16px;min-width:0}.wide{margin-bottom:12px}.history-tooltip{background:#111a24f5;border:1px solid #223040;border-radius:12px;padding:10px 12px;color:#d8dee9;box-shadow:0 10px 30px #00000047}.history-tooltip-label{margin:0;font-weight:600;color:#fff}.history-tooltip-rows{display:grid;gap:6px;margin-top:8px}.history-tooltip-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.history-tooltip-total{border-top:1px solid #223040;padding-top:6px;font-weight:700}.history-chart-shell{position:relative}.history-chart-shell.stale{filter:grayscale(.45)}.history-chart-overlay{position:absolute;inset:0;background:#0c111747;border-radius:8px}.allocation-pie-label{font-size:11px;font-weight:700;fill:#0b1220;pointer-events:none}.allocation-legend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px;margin-top:12px}.allocation-legend-item{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px}.allocation-legend-name{display:inline-flex;align-items:center;gap:8px;color:#d8dee9}.allocation-legend-dot{width:10px;height:10px;border-radius:999px;flex:0 0 auto}.allocation-legend-value{color:#9fb1c2;font-variant-numeric:tabular-nums}.mix-impact-panel{background:linear-gradient(130deg,#46d5a814,#7aa8ff0f 45%,#ff9f430f),#111a24eb}.mix-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:12px}.mix-kpi{border:1px solid #2a3b4d;border-radius:8px;padding:10px;background:#0c111770}.mix-kpi p{margin:0;color:#8ca0b3;font-size:12px}.mix-kpi strong{display:block;margin-top:6px;font-size:19px}.mix-bars{display:grid;gap:8px;margin-bottom:12px}.mix-bar-row{display:grid;grid-template-columns:minmax(120px,.9fr) minmax(120px,2fr) auto;align-items:center;gap:10px}.mix-bar-track{height:10px;border-radius:999px;background:#1d2a37;overflow:hidden}.mix-bar-fill{height:100%;border-radius:999px}.mix-insights{display:grid;gap:8px}.mix-insights p{margin:0;border:1px solid #2a3b4d;border-radius:8px;padding:9px 10px;color:#d0dae4;background:#0d141c75}.historic-performance-scroll{overflow-x:hidden;padding-bottom:2px}.historic-performance-panel .section-title{justify-content:space-between}.historic-performance-title-wrap{display:flex;align-items:center;gap:8px}.historic-performance-toggle{min-height:30px}.historic-performance-panel.stale .historic-performance-card{opacity:.46;filter:grayscale(.75)}.historic-performance-panel.stale .historic-performance-metric strong,.historic-performance-panel.stale .historic-performance-metric span,.historic-performance-panel.stale .historic-performance-card-title strong,.historic-performance-panel.stale .historic-performance-card-title span{color:#8ca0b3}.historic-performance-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:8px;min-width:0}.historic-performance-grouped{display:none;min-width:0}.historic-performance-year-group{display:grid;gap:8px}.historic-performance-quarter-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.historic-performance-card{border:1px solid #2a3b4d;border-radius:8px;padding:10px;background:#0c111780;min-width:0}.historic-performance-year-wrap{min-width:0}.historic-performance-card.year-card{background:#46d5a814;border-color:#315f57}.historic-performance-card-title{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:8px}.historic-performance-card-title strong{color:#fff;font-size:14px}.historic-performance-card-title span{color:#8ca0b3;font-size:11px;white-space:nowrap}.historic-performance-metrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px 8px}.historic-performance-metric{min-width:0;text-align:center}.historic-performance-metric.primary{grid-column:span 3;padding-bottom:7px;border-bottom:1px solid rgba(140,160,179,.18)}.historic-performance-metric.secondary{opacity:.68}.historic-performance-metric.collapsed{display:none}.historic-performance-grid.compact .historic-performance-card{padding-top:12px;padding-bottom:12px}.historic-performance-grid.compact .historic-performance-metric.primary{border-bottom:0;padding-bottom:0}.historic-performance-metric.flow{grid-column:span 2}.historic-performance-metric.balance{grid-column:span 3}.historic-performance-metric span{display:block;color:#8ca0b3;font-size:11px;line-height:1.2}.historic-performance-metric strong{display:block;overflow-wrap:anywhere;margin-top:2px;color:#d8dee9;font-size:12px;line-height:1.2;font-variant-numeric:tabular-nums}.historic-performance-metric.primary span{color:#b3c2d0;font-size:11px;font-weight:700;text-transform:uppercase;white-space:nowrap}.historic-performance-card.quarter-card .historic-performance-metric.primary span{display:none}.historic-performance-card.year-card.single-quarter-year .historic-performance-metric.primary span{visibility:hidden}.historic-performance-metric.primary strong{margin-top:4px;font-size:18px;line-height:1.05}.historic-performance-card.year-card .historic-performance-metric.primary strong{font-size:20px}.historic-performance-card.year-card .historic-performance-card-title strong{font-size:20px;font-weight:800;letter-spacing:.01em}.historic-performance-card.quarter-card .historic-performance-card-title strong{font-size:15px;font-weight:700}.historic-performance-metric.secondary span{font-size:10px}.historic-performance-metric.secondary strong{font-size:11px;font-weight:500}.section-title{align-items:center;gap:8px;margin-bottom:14px;color:#fff}.section-title svg{color:#46d5a8}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:900px}th,td{padding:11px 10px;border-bottom:1px solid #223040;text-align:left;font-size:13px;white-space:nowrap}th{color:#8ca0b3;font-weight:600;background:#0f1721}td{color:#d8dee9}.manual-entries-table table{min-width:0}.manual-entries-table th,.manual-entries-table td{white-space:normal}.manual-entries-table th:last-child,.manual-entries-table th:nth-last-child(2),.manual-entries-table td:last-child,.manual-entries-table td:nth-last-child(2){white-space:nowrap}.group-row td{background:#0f1721;color:#8ca0b3;font-weight:700}.group-row-header{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.positive{color:#46d5a8}.negative{color:#ff7d7d}.pill{display:inline-flex;align-items:center;min-height:24px;padding:2px 8px;border-radius:999px;background:#182433;color:#9fb1c2}.pill.calculated{color:#46d5a8;background:#12332b}.pill.pending,.pill.unverified{color:#f5c76b;background:#3a2e15}.pill.error{color:#ff9a9a;background:#3a1919}.freshness{display:inline-flex;align-items:center;min-height:24px;padding:2px 8px;border-radius:6px;background:#182433;color:#9fb1c2}.freshness.current{color:#46d5a8;background:#12332b}.freshness.stale{color:#f5c76b;background:#3a2e15}.freshness.not-calculated{color:#ff9a9a;background:#3a1919}.history-source{display:block;margin-top:4px;color:#9fb1c2;font-size:12px;line-height:1.25}.history-source.available{color:#46d5a8}.history-source.not-calculated{color:#ff9a9a}.import-panel label,.manual-form{display:grid;gap:8px;color:#9fb1c2;margin-bottom:12px}input,select{width:100%;border:1px solid #2d4054;background:#0c1117;color:#d8dee9;border-radius:6px;min-height:38px;padding:8px 10px}.manual-form{grid-template-columns:repeat(2,minmax(0,1fr))}.manual-form button{grid-column:1 / -1}.import-list h3{margin:6px 0 10px;font-size:14px;color:#d8dee9}.import-list ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}.import-list li{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;border:1px solid #223040;border-radius:8px;padding:8px 10px}.import-list li div{display:flex;align-items:center;gap:8px;min-width:0}.import-list-line{color:#8ca0b3;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.import-list button{min-height:30px;padding:4px 10px}.mapping-grid{display:grid;gap:10px}.mapping-row{display:grid;grid-template-columns:130px minmax(120px,.8fr) minmax(160px,1fr) 120px 110px 110px;gap:8px;align-items:center;border-bottom:1px solid #223040;padding-bottom:10px}.mapping-row small{grid-column:2 / -1;color:#8ca0b3}.mapping-url{grid-column:2 / -1}.compact-table table{min-width:1180px}.check{display:flex;gap:8px;align-items:center;color:#9fb1c2}.check input{width:auto;min-height:auto}.asset-class-label{display:inline-flex;align-items:center;gap:6px}.asset-class-icon{width:1.15em;text-align:center}.scope-panel{margin-bottom:12px}.control-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:12px}.control-row .performance-scope-panel{grid-column:span 2}.control-row .scope-panel,.control-row .wide{margin-bottom:0}.control-row-subtle .panel,.control-row-subtle .metric{background:#111a24b8;border-color:#1f2d3c;padding:10px 12px;min-height:64px}.control-row-subtle .panel .section-title h2{font-weight:500;font-size:14px}.control-row-subtle .panel .section-title{margin-bottom:8px}.control-row-subtle .scope-controls{gap:6px}.metric-control{min-height:64px}.metric-control strong{font-size:clamp(16px,1.4vw,20px)}.scope-controls{display:flex;flex-wrap:wrap;gap:10px}.scope-check{min-height:38px;padding:8px 10px;border:1px solid #2d4054;border-radius:6px;background:#0f1721}.alert{display:flex;align-items:center;gap:8px;padding:12px 14px;color:#f5c76b;margin-bottom:12px}.empty,.message{color:#8ca0b3}.issues{margin:0;padding-left:18px;color:#f5c76b}.issues.neutral{color:#8ca0b3}.issues li{margin:8px 0}.benchmark-panel{margin-bottom:12px}.period-tabs{gap:8px;flex-wrap:wrap;margin-bottom:14px}.period-tabs.compact{margin-bottom:0}.period-tabs button.active,button.active{border-color:#46d5a8;color:#46d5a8;background:#10241f}.benchmark-message{font-size:clamp(18px,2vw,28px);line-height:1.35;color:#fff;margin-bottom:14px}.benchmark-message span{color:#f5c76b;font-weight:700}.benchmark-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.cashflow-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}.benchmark-cell{border:1px solid #223040;border-radius:6px;padding:12px;background:#0f1721;min-height:102px}.cashflow-cell{border:1px solid #223040;border-radius:6px;padding:12px;background:#0c111738;min-height:96px}.benchmark-cell.primary{border-color:#46d5a8;background:#10241f}.benchmark-cell p,.benchmark-cell small,.cashflow-cell p,.cashflow-cell small,.method-note{margin:0;color:#8ca0b3;font-size:12px}.benchmark-cell strong,.cashflow-cell strong{display:block;margin:8px 0 4px;font-size:24px}.cashflow-inline{display:flex;gap:14px;flex-wrap:wrap;margin-top:12px;color:#8ca0b3;font-size:13px}.cashflow-inline strong{color:#fff}.method-note{margin-top:10px}.trade-summary{display:flex;gap:14px;flex-wrap:wrap;margin:10px 0 12px;color:#8ca0b3;font-size:13px}.trade-summary strong{color:#fff}.trade-type{display:inline-flex;align-items:center;min-height:24px;padding:2px 8px;border-radius:999px;background:#182433}.trade-type.buy{color:#46d5a8;background:#12332b}.trade-type.sell{color:#ff7d7d;background:#3a1919}.trade-type.security-in{color:#7aa8ff;background:#1b2940}.trade-type.security-out{color:#f5c76b;background:#3a2e15}.trade-type.position-part{color:#d8dee9;background:#2a3442}.inline-toggle{min-height:28px;padding:4px 8px;font-size:12px}.subtable-row td{background:#0f1721;white-space:normal}.subtable-wrap{overflow-x:auto;padding:6px 0 2px}.subtable{min-width:620px}.subtable th,.subtable td{font-size:12px}.chart-title{justify-content:space-between;align-items:center}.chart-title>div{display:flex;align-items:center;gap:8px}.chart-controls{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:12px}.chart-controls.single{justify-content:flex-end}.loading-note{color:#f5c76b;font-size:12px}.contribution-layout{grid-template-columns:minmax(0,1fr);align-items:start}.contribution-mekko{position:relative;min-height:360px}.contribution-mekko-columns{display:flex;align-items:stretch;gap:0;min-height:440px}.contribution-mekko-column-wrap{min-width:0}.contribution-mekko-column{display:flex;flex-direction:column;min-height:440px;border:1px solid #223040;border-radius:0;overflow:hidden;background:#0f1721}.contribution-mekko-column-signed{display:grid;grid-template-rows:minmax(0,1fr) 2px minmax(0,1fr)}.contribution-mekko-half{min-height:0;display:flex}.contribution-mekko-half-positive{flex-direction:column-reverse}.contribution-mekko-half-negative{flex-direction:column}.contribution-mekko-zero-line{background:#d8dee980}.contribution-mekko-segment{flex:1 1 0;width:100%;border:0;border-top:1px solid rgba(12,17,23,.35);padding:8px;text-align:left;color:#0b1220;cursor:default;min-height:0}.contribution-mekko-segment-positive:first-child,.contribution-mekko-segment-negative:first-child,.contribution-mekko-segment:first-child{border-top:0}.contribution-mekko-segment.active{outline:2px solid #fff;outline-offset:-2px}.contribution-mekko-segment-label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;font-weight:700;line-height:1.2}.contribution-mekko-segment-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contribution-mekko-segment-value{margin-left:auto;text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.contribution-mekko-segment-label.small{font-size:11px;font-weight:500}.contribution-mekko-footer{display:grid;gap:2px;margin-top:8px;font-size:12px}.contribution-tooltip{position:absolute;z-index:3;min-width:220px;max-width:320px}.contribution-tooltip-row-active{font-weight:700}.value-map-panel .contribution-mekko{min-height:460px}.value-map-panel .contribution-mekko-columns,.value-map-panel .contribution-mekko-column{min-height:420px}.value-map-selector{padding:10px 12px;min-width:170px;display:grid;gap:6px}.value-map-selector label{font-size:12px;color:#9fb1c2}.value-map-selector select{min-height:34px}.contribution-table table{min-width:980px}.contribution-metrics{margin-bottom:0}html[data-theme=light]{color:#1d2935;background:#f4f7fa}html[data-theme=light] body{background:#f4f7fa}html[data-theme=light] .shell{background:linear-gradient(180deg,rgba(8,127,91,.08),transparent 280px),#f4f7fa}html[data-theme=light] .metric,html[data-theme=light] .panel,html[data-theme=light] .alert{background:#fffffff5;border-color:#d8e1ea}html[data-theme=light] .control-row-subtle .panel,html[data-theme=light] .control-row-subtle .metric{background:#ffffffd1;border-color:#cfdbe8}html[data-theme=light] .icon-button,html[data-theme=light] button,html[data-theme=light] input,html[data-theme=light] select,html[data-theme=light] .scope-check{background:#fff;color:#1d2935;border-color:#b7c5d4}html[data-theme=light] button:hover{border-color:#087f5b}html[data-theme=light] .status-line,html[data-theme=light] th,html[data-theme=light] td,html[data-theme=light] .mapping-row{border-color:#d8e1ea}html[data-theme=light] th,html[data-theme=light] .benchmark-cell{background:#edf2f7}html[data-theme=light] .cashflow-cell{background:#edf2f78c;border-color:#d8e1ea}html[data-theme=light] td,html[data-theme=light] .metric strong,html[data-theme=light] .section-title,html[data-theme=light] .benchmark-message,html[data-theme=light] .status-line strong{color:#0b1220}html[data-theme=light] .status-line,html[data-theme=light] .metric p,html[data-theme=light] .metric span,html[data-theme=light] th,html[data-theme=light] .empty,html[data-theme=light] .message,html[data-theme=light] .trade-summary,html[data-theme=light] .mapping-row small,html[data-theme=light] .benchmark-cell p,html[data-theme=light] .benchmark-cell small,html[data-theme=light] .method-note,html[data-theme=light] .check,html[data-theme=light] .import-panel label,html[data-theme=light] .manual-form{color:#627386}html[data-theme=light] .eyebrow,html[data-theme=light] .metric svg,html[data-theme=light] .section-title svg,html[data-theme=light] .positive{color:#087f5b}html[data-theme=light] .negative{color:#bd3030}html[data-theme=light] .pill,html[data-theme=light] .freshness{background:#edf2f7;color:#43566b}html[data-theme=light] .pill.calculated,html[data-theme=light] .freshness.current{color:#087f5b;background:#dff6ec}html[data-theme=light] .pill.pending,html[data-theme=light] .pill.unverified,html[data-theme=light] .freshness.stale{color:#9a6400;background:#fff1cf}html[data-theme=light] .pill.error,html[data-theme=light] .freshness.not-calculated{color:#bd3030;background:#ffe1e1}html[data-theme=light] .history-source{color:#5f7184}html[data-theme=light] .history-source.available{color:#065f46}html[data-theme=light] .history-source.not-calculated{color:#bd3030}html[data-theme=light] .trade-summary strong{color:#0b1220}html[data-theme=light] .trade-type.buy{color:#087f5b;background:#dff6ec}html[data-theme=light] .trade-type.sell{color:#bd3030;background:#ffe1e1}html[data-theme=light] .trade-type.security-in{color:#245ea8;background:#e1ecff}html[data-theme=light] .trade-type.security-out{color:#9a6400;background:#fff1cf}html[data-theme=light] .trade-type.position-part{color:#233445;background:#dbe5f0}html[data-theme=light] .history-tooltip{background:#fffffffa;border-color:#cfd8e3;color:#233445;box-shadow:0 10px 24px #1f2d3d1f}html[data-theme=light] .history-tooltip-label{color:#0b1220}html[data-theme=light] .history-tooltip-total{border-top-color:#dbe3ec}html[data-theme=light] .history-chart-overlay{background:#ffffff59}html[data-theme=light] .contribution-mekko-column{background:#eef3f8;border-color:#dbe3ec}html[data-theme=light] .contribution-mekko-segment{border-top-color:#dbe3ece6}html[data-theme=light] .contribution-mekko-segment.active{outline-color:#0b1220}html[data-theme=light] .allocation-legend-name{color:#233445}html[data-theme=light] .allocation-legend-value{color:#627386}html[data-theme=light] .mix-impact-panel{background:linear-gradient(130deg,#087f5b14,#3d6eb812 45%,#c982240f),#fffffff5}html[data-theme=light] .mix-kpi,html[data-theme=light] .mix-insights p{background:#ffffffc7;border-color:#d6e1eb}html[data-theme=light] .mix-kpi p{color:#5f7184}html[data-theme=light] .mix-bar-track{background:#e3ebf3}html[data-theme=light] .mix-insights p{color:#233445}html[data-theme=light] .historic-performance-card{background:#ffffffc7;border-color:#d6e1eb}html[data-theme=light] .historic-performance-card.year-card{background:#e2f6ee;border-color:#b8ded1}html[data-theme=light] .historic-performance-card-title strong,html[data-theme=light] .historic-performance-metric strong{color:#0b1220}html[data-theme=light] .historic-performance-card-title span,html[data-theme=light] .historic-performance-metric span{color:#627386}html[data-theme=light] .historic-performance-metric.primary{border-bottom-color:#62738638}html[data-theme=light] .historic-performance-metric.primary span{color:#43566b}html[data-theme=light] .subtable-row td{background:#edf2f7}html[data-theme=light] .group-row td{background:#e6edf5;color:#233445}html[data-theme=light] .period-tabs button.active,html[data-theme=light] button.active,html[data-theme=light] .benchmark-cell.primary,html[data-theme=light] .metric-live-button.active{border-color:#087f5b;color:#087f5b;background:#e2f6ee}html[data-theme=light] .benchmark-message span,html[data-theme=light] .alert,html[data-theme=light] .issues,html[data-theme=light] .loading-note{color:#9a6400}html[data-theme=light] .issues.neutral{color:#627386}.shell{padding:24px var(--shell-x) 32px;background:radial-gradient(circle at 16% 0%,rgba(66,212,156,.12),transparent 34%),linear-gradient(180deg,rgba(122,168,255,.055),transparent 340px),var(--bg)}.shell>*{width:min(100%,1500px);margin-left:auto;margin-right:auto}.auth-shell{display:grid;align-items:center;padding-top:48px;padding-bottom:48px}.auth-card{width:min(100%,430px);margin:0 auto}.auth-card h2{margin-bottom:18px;font-size:22px}.topbar{min-height:54px;padding:8px 0 16px;gap:16px}.topbar>div:first-child{min-width:0}.topbar-actions{padding:5px;border:1px solid var(--border);border-radius:var(--radius);background:color-mix(in srgb,var(--surface) 82%,transparent);box-shadow:var(--shadow-soft)}.topbar-actions>span{max-width:260px;overflow:hidden;color:var(--muted);font-size:13px;text-overflow:ellipsis;white-space:nowrap}.eyebrow{color:var(--accent);font-weight:800;letter-spacing:.08em}h1,h2{color:var(--text-strong)}button,.icon-button,input,select,.scope-check{border-color:var(--border-strong);background:var(--surface-strong);color:var(--text);border-radius:var(--radius-sm);transition:border-color .15s ease,background .15s ease,color .15s ease,box-shadow .15s ease,transform .15s ease}button:hover,.icon-button:hover{border-color:var(--accent-border);background:var(--accent-soft);color:var(--text-strong)}button:active{transform:translateY(1px)}button:focus-visible,input:focus-visible,select:focus-visible,.metric-link:focus-visible{outline:0;border-color:var(--accent);box-shadow:var(--ring)}button:disabled,input:disabled,select:disabled{cursor:not-allowed;opacity:.56}.page-tabs{align-items:center;padding:5px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-soft);box-shadow:var(--shadow-soft)}.page-tabs button,.period-tabs button{min-height:34px;padding:7px 11px;border-color:transparent;background:transparent;color:var(--muted);font-size:13px;font-weight:700}.page-tabs button.active,.period-tabs button.active,button.active{border-color:var(--accent-border);background:var(--accent-soft);color:var(--accent)}.status-line{align-items:center;gap:10px 18px;margin-bottom:14px;padding:10px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-soft);color:var(--muted);font-size:13px}.status-line strong,.status-link-button strong{color:var(--text-strong)}.status-link-button{color:var(--muted)}.metrics-grid{gap:10px;margin-bottom:14px}.metric,.panel,.alert{border-color:var(--border);background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-soft)}.panel{padding:var(--panel-pad)}.metric{min-height:112px;padding:15px 12px;position:relative;overflow:hidden}.metric:before{content:"";position:absolute;inset:0 0 auto;height:2px;background:linear-gradient(90deg,var(--accent),rgba(122,168,255,.4),transparent);opacity:.36}.metric p,.metric span,.benchmark-cell p,.benchmark-cell small,.cashflow-cell p,.cashflow-cell small,.method-note{color:var(--muted)}.metric strong{color:var(--text-strong);font-variant-numeric:tabular-nums}.metric svg,.section-title svg{color:var(--accent)}.metric-portfolio{background:linear-gradient(135deg,#42d49c24,#7aa8ff14),var(--surface);border-color:var(--accent-border)}.metric-live-button{border-color:var(--border)}.metric-live-button.active{border-color:var(--accent-border);background:linear-gradient(135deg,var(--accent-soft),transparent),var(--surface-strong)}.metric-live-abs{color:var(--text);font-variant-numeric:tabular-nums}.layout{gap:14px;margin-bottom:14px}.wide,.scope-panel,.benchmark-panel{margin-bottom:14px}.section-title{min-height:32px;margin-bottom:13px;color:var(--text-strong)}.section-title h2{font-size:15px;font-weight:800}.section-title button{margin-left:auto}.nested-panel,.import-list li,.benchmark-cell,.cashflow-cell,.mix-kpi,.mix-insights p,.historic-performance-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-muted)}.nested-panel{padding:12px;box-shadow:none}.invite-result{margin-top:12px}.breakable-text{word-break:break-all}.table-wrap{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-muted)}table{border-collapse:separate;border-spacing:0}th,td{border-bottom-color:var(--border);color:var(--text);font-variant-numeric:tabular-nums}th{position:sticky;top:0;z-index:1;background:var(--bg-elevated);color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.03em}tbody tr:hover td{background:color-mix(in srgb,var(--surface-strong) 68%,transparent)}tbody tr:last-child td{border-bottom:0}.group-row td,.subtable-row td{background:var(--bg-elevated)}.positive{color:var(--accent)}.negative{color:var(--danger)}.pill,.freshness,.trade-type{font-size:12px;font-weight:700;border:1px solid transparent}.pill,.freshness,.trade-type.position-part{background:var(--surface-muted);color:var(--muted);border-color:var(--border)}.pill.calculated,.freshness.current,.trade-type.buy{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 28%,transparent)}.pill.pending,.pill.unverified,.freshness.stale,.trade-type.security-out{background:color-mix(in srgb,var(--gold) 16%,transparent);color:var(--gold);border-color:color-mix(in srgb,var(--gold) 30%,transparent)}.pill.error,.freshness.not-calculated,.trade-type.sell{background:color-mix(in srgb,var(--danger) 16%,transparent);color:var(--danger);border-color:color-mix(in srgb,var(--danger) 30%,transparent)}.trade-type.security-in{background:color-mix(in srgb,var(--blue) 16%,transparent);color:var(--blue);border-color:color-mix(in srgb,var(--blue) 30%,transparent)}.history-source,.empty,.message{color:var(--muted)}.history-source.available{color:var(--accent)}.history-source.not-calculated,.metric-not-calculated strong{color:var(--danger)}.manual-form{gap:10px}.import-panel label,.manual-form,.value-map-selector label{color:var(--muted)}input,select{background:var(--bg);color:var(--text)}input::placeholder{color:var(--muted-2)}input[type=checkbox]{accent-color:var(--accent)}.scope-controls{gap:8px}.scope-check{align-items:center;background:var(--surface-muted)}.alert{color:var(--gold);border-color:color-mix(in srgb,var(--gold) 34%,var(--border));background:color-mix(in srgb,var(--gold) 9%,var(--surface))}.benchmark-message{margin-top:2px;color:var(--text-strong);font-size:clamp(17px,1.55vw,23px)}.benchmark-message span,.loading-note{color:var(--gold)}.benchmark-cell.primary{border-color:var(--accent-border);background:linear-gradient(135deg,var(--accent-soft),transparent),var(--surface-muted)}.benchmark-cell strong,.cashflow-cell strong,.mix-kpi strong{color:var(--text-strong);font-variant-numeric:tabular-nums}.cashflow-inline,.trade-summary{color:var(--muted)}.cashflow-inline strong,.trade-summary strong{color:var(--text-strong)}.chart-panel{overflow:hidden}.chart-controls{align-items:center}.history-tooltip,.contribution-tooltip{background:var(--surface-strong);border-color:var(--border-strong);color:var(--text);box-shadow:var(--shadow)}.history-tooltip-label{color:var(--text-strong)}.history-tooltip-total{border-top-color:var(--border)}.history-chart-overlay{background:color-mix(in srgb,var(--bg) 34%,transparent)}.allocation-legend{padding-top:12px;border-top:1px solid var(--border)}.allocation-legend-name{color:var(--text)}.allocation-legend-value{color:var(--muted)}.mix-impact-panel{background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 10%,transparent),color-mix(in srgb,var(--blue) 8%,transparent) 48%,color-mix(in srgb,var(--orange) 6%,transparent)),var(--surface)}.mix-bar-track{background:var(--bg-elevated)}.mix-bar-row>span:last-child{color:var(--muted);font-variant-numeric:tabular-nums}.historic-performance-card.year-card{background:linear-gradient(135deg,var(--accent-soft),transparent),var(--surface-muted);border-color:var(--accent-border)}.historic-performance-card-title strong,.historic-performance-metric strong{color:var(--text-strong)}.historic-performance-card-title span,.historic-performance-metric span{color:var(--muted)}.control-row-subtle .panel,.control-row-subtle .metric{background:var(--surface-soft);border-color:var(--border)}.control-row-subtle .panel .section-title h2{color:var(--muted)}.value-map-selector{box-shadow:none}.contribution-mekko-column{border-color:var(--border);background:var(--bg-elevated)}.contribution-mekko-zero-line{background:color-mix(in srgb,var(--text) 46%,transparent)}.contribution-mekko-footer{color:var(--muted)}.contribution-mekko-footer strong{color:var(--text-strong)}@media(max-width:980px){.shell{padding:16px}.topbar{align-items:flex-start;flex-direction:column}.topbar-actions{width:100%;justify-content:flex-start;flex-wrap:wrap}.topbar-actions>span{flex:1 1 140px;max-width:none}.page-tabs{overflow-x:auto;flex-wrap:nowrap;justify-content:flex-start}.page-tabs button{flex:0 0 auto}.metrics-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.layout,.control-row{grid-template-columns:1fr}.historic-performance-grid-desktop{display:none}.historic-performance-grouped{display:grid;gap:10px}.mix-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.mix-bar-row{grid-template-columns:minmax(100px,1fr) minmax(100px,1.6fr) auto}.contribution-mekko-columns,.contribution-mekko-column{min-height:360px}.value-map-panel .contribution-mekko{min-height:340px}.value-map-panel .contribution-mekko-columns,.value-map-panel .contribution-mekko-column{min-height:300px}.value-map-selector{width:100%}.benchmark-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.allocation-legend,.mapping-row{grid-template-columns:1fr}.mapping-row small{grid-column:auto}}@media(max-width:500px){.metrics-grid,.manual-form,.benchmark-grid,.mix-kpi-grid{grid-template-columns:1fr}.topbar-actions .icon-button{width:38px}.topbar-logout-button{flex:1 1 100%}}@media(max-width:620px){.status-line{display:grid;gap:8px}.chart-title{align-items:flex-start;flex-direction:column}.chart-controls{align-items:stretch;flex-direction:column}.period-tabs{overflow-x:auto;flex-wrap:nowrap}.historic-performance-quarter-grid{grid-template-columns:1fr}.historic-performance-card-title{display:block}.historic-performance-card-title span{display:block;margin-top:3px;white-space:normal}.benchmark-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
