:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#d8dee9;background:#0c1117;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;background:#0c1117}button,input,select{font:inherit}.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}.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}.metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,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}.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}.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}.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}.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}.control-row-subtle .panel .section-title h2{font-weight:500}.metric-control{min-height:96px}.metric-control strong{font-size:clamp(18px,1.8vw,24px)}.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:#0f1721;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}.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(320px,.9fr) minmax(0,1.1fr);align-items:start}.contribution-mekko{position:relative;min-height:360px}.contribution-mekko-columns{display:flex;align-items:stretch;gap:10px;min-height:320px}.contribution-mekko-column-wrap{min-width:0}.contribution-mekko-column{display:flex;flex-direction:column;min-height:320px;border:1px solid #223040;border-radius:10px;overflow:hidden;background:#0f1721}.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:first-child{border-top:0}.contribution-mekko-segment.active{outline:2px solid #fff;outline-offset:-2px}.contribution-mekko-segment-label{display:block;font-size:12px;font-weight:700;line-height:1.2}.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] 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:#087f5b}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] .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] .subtable-row td{background:#edf2f7}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}@media(max-width:980px){.metrics-grid,.layout,.control-row{grid-template-columns:1fr}.contribution-mekko-columns,.contribution-mekko-column{min-height:260px}.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}.shell{padding:16px}}@media(max-width:620px){.benchmark-grid{grid-template-columns:1fr}}
