:root {
  --bg:#0d1117;--bg2:#161b22;--bg3:#1c2330;--bg4:#21262d;
  --border:#30363d;--border2:#3d444d;
  --text:#e6edf3;--muted:#7d8590;--muted2:#484f58;
  --gold:#d4a843;--gold2:#f0c060;
  --green:#3fb950;--green-dim:#1a4a26;--green-bg:#0d2818;
  --red:#f85149;--red-dim:#5a1e1e;--red-bg:#2d1414;
  --blue:#58a6ff;--blue-bg:#0d2040;
  --amber:#e3b341;--amber-bg:#2d1f00;
  --mono:'DM Mono',monospace;--sans:'Syne',sans-serif;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);color:var(--text);font-family:var(--mono);font-size:13px;line-height:1.6;min-height:100vh}
body::before{content:'';position:fixed;inset:0;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.03) 2px,rgba(0,0,0,.03) 4px);pointer-events:none;z-index:9999}
.shell{display:flex;min-height:100vh}
.sidebar{width:200px;flex-shrink:0;background:var(--bg2);border-right:1px solid var(--border);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100;overflow-y:auto}
.main{margin-left:200px;flex:1;min-width:0}
.logo-area{padding:20px 16px 16px;border-bottom:1px solid var(--border)}
.logo{font-family:var(--sans);font-size:15px;font-weight:700;color:var(--gold);display:flex;align-items:center;gap:8px}
.logo-dot{width:8px;height:8px;background:var(--gold);border-radius:50%;animation:pulse-gold 2s infinite}
@keyframes pulse-gold{0%,100%{box-shadow:0 0 0 0 rgba(212,168,67,.6)}50%{box-shadow:0 0 0 6px rgba(212,168,67,0)}}
.logo-sub{font-size:10px;color:var(--muted);margin-top:3px;letter-spacing:.05em;text-transform:uppercase}
.nav{padding:12px 0;flex:1}
.nav-section{padding:8px 16px 4px;font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted2)}
.nav-item{display:flex;align-items:center;gap:10px;padding:9px 16px;color:var(--muted);cursor:pointer;font-size:12px;border-left:2px solid transparent;transition:all .15s;user-select:none}
.nav-item:hover{color:var(--text);background:var(--bg3)}
.nav-item.active{color:var(--gold);border-left-color:var(--gold);background:var(--bg3)}
.nav-icon{font-size:14px;width:16px;text-align:center}
.sidebar-stats{padding:14px 16px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:8px}
.ss-row{display:flex;justify-content:space-between;align-items:center}
.ss-label{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.ss-val{font-size:12px;font-weight:500}
.cat-strip{display:flex;gap:1px;height:3px;border-radius:2px;overflow:hidden;margin-top:8px}
.ticker{background:var(--bg3);border-bottom:1px solid var(--border);padding:6px 0;overflow:hidden;font-size:11px}
.ticker-inner{display:flex;gap:32px;white-space:nowrap;animation:scroll-left 50s linear infinite}
@keyframes scroll-left{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.tick-item{display:inline-flex;gap:8px;align-items:center}
.tick-name{color:var(--muted)}.tick-price{color:var(--text);font-weight:500}
.tick-chg.up{color:var(--green)}.tick-chg.dn{color:var(--red)}
.topbar{background:var(--bg2);border-bottom:1px solid var(--border);padding:12px 24px;display:flex;align-items:center;justify-content:space-between;gap:12px;position:sticky;top:0;z-index:50}
.topbar-title{font-family:var(--sans);font-size:16px;font-weight:600;color:var(--text)}
.topbar-meta{font-size:11px;color:var(--muted)}
.badge{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:4px;font-size:10px;font-weight:500;letter-spacing:.04em}
.badge-g{background:var(--green-bg);color:var(--green);border:1px solid var(--green-dim)}
.badge-r{background:var(--red-bg);color:var(--red);border:1px solid var(--red-dim)}
.badge-a{background:var(--amber-bg);color:var(--amber);border:1px solid #4a3500}
.page{padding:24px;display:none;animation:fadein .2s ease}
.page.active{display:block}
@keyframes fadein{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:20px}
.kpi-card{background:var(--bg2);border:1px solid var(--border);border-radius:8px;padding:16px;position:relative;overflow:hidden;transition:border-color .2s}
.kpi-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--accent,var(--gold))}
.kpi-card:hover{border-color:var(--border2)}
.kpi-label{font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.kpi-value{font-family:var(--sans);font-size:22px;font-weight:700;color:var(--text);line-height:1;margin-bottom:6px}
.kpi-sub{font-size:11px;color:var(--muted)}
.kpi-sub.up{color:var(--green)}.kpi-sub.dn{color:var(--red)}.kpi-sub.gold{color:var(--gold)}
.sec-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;padding-bottom:10px;border-bottom:1px solid var(--border)}
.sec-title{font-family:var(--sans);font-size:13px;font-weight:600;color:var(--text);display:flex;align-items:center;gap:8px}
.sec-title::before{content:'';display:inline-block;width:3px;height:14px;background:var(--gold);border-radius:2px}
.controls{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px;align-items:center}
.ctrl-label{font-size:10px;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin-right:2px}
.chip{padding:5px 12px;border-radius:4px;font-size:11px;font-family:var(--mono);border:1px solid var(--border);background:transparent;color:var(--muted);cursor:pointer;transition:all .15s}
.chip:hover{border-color:var(--border2);color:var(--text)}
.chip.on{background:var(--gold);color:#0d1117;border-color:var(--gold);font-weight:500}
.tbl-wrap{background:var(--bg2);border:1px solid var(--border);border-radius:8px;overflow:hidden;overflow-x:auto;margin-bottom:20px}
table{width:100%;border-collapse:collapse;min-width:700px}
thead{background:var(--bg3)}
th{padding:10px 14px;text-align:left;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap;cursor:pointer;user-select:none}
th:hover{color:var(--text)}th.sorted{color:var(--gold)}
td{padding:11px 14px;border-bottom:1px solid var(--border);font-size:12px;white-space:nowrap;vertical-align:middle}
tr:last-child td{border-bottom:none}
tr:hover td{background:var(--bg3)}
.td-up{color:var(--green);font-weight:500}.td-dn{color:var(--red);font-weight:500}
.td-muted{color:var(--muted)}.td-gold{color:var(--gold);font-weight:500}
.pill{display:inline-block;padding:2px 8px;border-radius:3px;font-size:9px;font-weight:500;letter-spacing:.05em;white-space:nowrap}
.pill-h{background:var(--red-bg);color:var(--red);border:1px solid var(--red-dim)}
.pill-m{background:var(--amber-bg);color:var(--amber);border:1px solid #4a3500}
.pill-l{background:var(--green-bg);color:var(--green);border:1px solid var(--green-dim)}
.bar-wrap{display:flex;align-items:center;gap:8px}
.bar-track{flex:1;height:4px;background:var(--bg4);border-radius:2px;overflow:hidden;min-width:60px}
.bar-fill{height:100%;border-radius:2px;transition:width .4s}
.bar-fill.up{background:var(--green)}.bar-fill.dn{background:var(--red)}
.bar-pct{font-size:11px;font-weight:500;min-width:58px;text-align:right;white-space:nowrap}
.bar-pct.up{color:var(--green)}.bar-pct.dn{color:var(--red)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:20px}
.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:20px}
@media(max-width:800px){.grid2{grid-template-columns:1fr}}
.card{background:var(--bg2);border:1px solid var(--border);border-radius:8px;padding:16px}
.donut-wrap{display:flex;align-items:center;gap:16px}
.donut-legend{flex:1;display:flex;flex-direction:column;gap:6px}
.legend-row{display:flex;align-items:center;gap:7px;font-size:11px}
.legend-dot{width:8px;height:8px;border-radius:2px;flex-shrink:0}
.legend-name{color:var(--muted);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.legend-pct{color:var(--text);font-weight:500;min-width:32px;text-align:right}
.alert-box{background:var(--red-bg);border:1px solid var(--red-dim);border-radius:8px;padding:14px 16px;margin-bottom:20px}
.alert-title{font-size:11px;font-weight:600;color:var(--red);margin-bottom:10px;letter-spacing:.06em;text-transform:uppercase}
.alert-row{display:flex;gap:10px;margin-bottom:6px;font-size:11px;align-items:flex-start}
.alert-name{color:var(--red);font-weight:500;min-width:140px;flex-shrink:0}
.alert-msg{color:#d0a0a0}
.rec-box{background:var(--amber-bg);border:1px solid #4a3500;border-radius:8px;padding:14px 16px;margin-bottom:20px}
.rec-title{font-size:11px;font-weight:600;color:var(--amber);margin-bottom:10px;letter-spacing:.06em;text-transform:uppercase}
.rec-row{display:flex;gap:10px;margin-bottom:7px;align-items:flex-start}
.rec-tag{font-size:9px;font-weight:600;padding:2px 7px;border-radius:3px;flex-shrink:0;letter-spacing:.05em}
.tag-exit{background:var(--red-bg);color:var(--red);border:1px solid var(--red-dim)}
.tag-reduce{background:var(--amber-bg);color:var(--amber);border:1px solid #5a3d00}
.tag-hold{background:var(--blue-bg);color:var(--blue);border:1px solid #1a4060}
.tag-add{background:var(--green-bg);color:var(--green);border:1px solid var(--green-dim)}
.tag-switch{background:#1a2040;color:#9ab8ff;border:1px solid #2a3a70}
.rec-text{font-size:11px;color:#c0b080;line-height:1.5}
.stat-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--border);gap:10px}
.stat-row:last-child{border-bottom:none}
.stat-label{font-size:11px;color:var(--muted)}
.stat-note{font-size:10px;color:var(--muted2)}
.stat-val{font-size:13px;font-weight:500;text-align:right}
.chart-box{position:relative;width:100%;height:200px}
.drop-zone{border:1px dashed var(--border2);border-radius:8px;padding:20px;text-align:center;color:var(--muted);cursor:pointer;transition:all .2s;background:var(--bg3);margin-bottom:16px}
.drop-zone:hover{border-color:var(--gold);color:var(--gold);background:#1a1a00}
/* ── Benchmark ── */
.bm-kpi{background:var(--bg3);border:1px solid var(--border);border-radius:6px;padding:10px 12px;position:relative;overflow:hidden}
.bm-kpi::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--bm-accent,var(--gold))}
.bm-kpi-label{font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;margin-bottom:3px}
.bm-kpi-val{font-family:var(--sans);font-size:17px;font-weight:700;margin-bottom:2px}
.bm-kpi-note{font-size:10px;color:var(--muted)}
.bm-verdict{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:4px;font-size:10px;font-weight:600;letter-spacing:.04em}
.bm-beat{background:var(--green-bg);color:var(--green);border:1px solid var(--green-dim)}
.bm-trail{background:var(--red-bg);color:var(--red);border:1px solid var(--red-dim)}
.bm-close{background:var(--amber-bg);color:var(--amber);border:1px solid #5a3d00}
.alpha-box{background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:14px 16px}
.alpha-row{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--border)}
.alpha-row:last-child{border-bottom:none}
.alpha-name{font-size:11px;color:var(--muted);min-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.alpha-cagr{font-size:11px;font-weight:600;min-width:48px;text-align:right}
.alpha-bm{font-size:10px;color:var(--muted);min-width:56px;text-align:right}
.alpha-diff{font-size:11px;font-weight:700;min-width:52px;text-align:right}
.alpha-bar-wrap{flex:1;height:4px;background:var(--bg4);border-radius:2px;overflow:hidden;min-width:40px}
.alpha-bar{height:100%;border-radius:2px;transition:width .5s}
/* ── Health Score ── */
.health-gauge{position:relative;width:180px;height:120px;flex-shrink:0}
.health-gauge svg{display:block;overflow:visible}
.health-gauge-val{position:absolute;bottom:8px;left:0;right:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end}
.health-score-num{font-family:var(--sans);font-size:28px;font-weight:700;line-height:1}
.health-score-lbl{font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-top:2px}
.health-bar-row{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.health-bar-name{font-size:10px;color:var(--muted);min-width:110px}
.health-bar-track{flex:1;height:6px;background:var(--bg4);border-radius:3px;overflow:hidden}
.health-bar-fill{height:100%;border-radius:3px;transition:width .6s}
.health-bar-pts{font-size:10px;font-weight:600;min-width:30px;text-align:right}
/* ── Drill-down ── */
.drill-row{background:var(--bg3);border-top:1px solid var(--border)}
.drill-row td{padding:0!important;border:none!important}
.drill-inner{padding:0 14px 12px;overflow-x:auto}
.drill-table{width:100%;border-collapse:collapse;min-width:500px;margin-top:8px}
.drill-table th{font-size:8px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted2);padding:4px 8px;border-bottom:1px solid var(--border2);white-space:nowrap;text-align:left}
.drill-table td{font-size:11px;padding:6px 8px;border-bottom:1px solid var(--border2);white-space:nowrap}
.drill-table tr:last-child td{border-bottom:none}
.drill-table tr:hover td{background:var(--bg4)}
.ltcg-badge{display:inline-block;padding:1px 6px;border-radius:3px;font-size:8px;font-weight:600;background:var(--green-bg);color:var(--green);border:1px solid var(--green-dim)}
.stcg-badge{display:inline-block;padding:1px 6px;border-radius:3px;font-size:8px;font-weight:600;background:var(--amber-bg);color:var(--amber);border:1px solid #5a3d00}
.expand-btn{cursor:pointer;color:var(--muted);font-size:11px;user-select:none;transition:color .15s}
.expand-btn:hover{color:var(--gold)}
/* ── Tax ── */
.tax-kpi{background:var(--bg3);border:1px solid var(--border);border-radius:6px;padding:10px 12px}
.tax-kpi-label{font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;margin-bottom:4px}
.tax-kpi-val{font-family:var(--sans);font-size:16px;font-weight:700}
.harvest-tag{display:inline-block;padding:1px 6px;border-radius:3px;font-size:8px;font-weight:600;background:var(--blue-bg);color:var(--blue);border:1px solid #1a4060;white-space:nowrap}
/* ── Goal ── */
.goal-scenario-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--border)}
.goal-scenario-row:last-child{border-bottom:none}
.goal-scen-rate{font-size:11px;color:var(--muted);min-width:100px}
.goal-scen-sip{font-family:var(--sans);font-size:15px;font-weight:700;color:var(--gold);min-width:80px}
.goal-scen-bar{flex:1;height:6px;background:var(--bg4);border-radius:3px;overflow:hidden}
.goal-scen-fill{height:100%;border-radius:3px;background:var(--gold);transition:width .5s}
.goal-scen-note{font-size:10px;color:var(--muted);min-width:130px;text-align:right}
.milestone-row{display:flex;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--border)}
.milestone-row:last-child{border-bottom:none}
.milestone-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.milestone-year{font-size:11px;font-weight:600;min-width:40px}
.milestone-corpus{font-size:11px;color:var(--text);flex:1}
.milestone-status{font-size:10px;min-width:90px;text-align:right}

.tl-cell{border-radius:2px;cursor:pointer;transition:transform .1s,filter .1s;position:relative}
.tl-cell:hover{transform:scale(1.15);filter:brightness(1.3);z-index:2}
.tl-cell-empty{background:var(--bg4);border-radius:2px}
.tl-month-label{font-size:9px;color:var(--muted);text-align:center;padding-top:2px}
.tl-year-label{font-size:9px;color:var(--muted2);writing-mode:vertical-rl;text-align:center;padding-right:4px;letter-spacing:.06em;text-transform:uppercase}
.tl-tooltip{position:absolute;background:var(--bg3);border:1px solid var(--border2);border-radius:6px;padding:8px 12px;font-size:11px;pointer-events:none;z-index:1000;display:none;max-width:200px}
.tl-tooltip strong{color:var(--gold);display:block;margin-bottom:3px}
.yr-bar-wrap{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.yr-bar-label{font-size:10px;color:var(--muted);min-width:36px;text-align:right}
.yr-bar-track{flex:1;height:16px;background:var(--bg4);border-radius:3px;overflow:hidden;position:relative}
.yr-bar-fill{height:100%;border-radius:3px;transition:width .5s}
.yr-bar-val{font-size:10px;color:var(--text);font-weight:500;min-width:52px;text-align:right}
.insight-card{background:var(--bg2);border:1px solid var(--border);border-radius:8px;padding:14px;position:relative;overflow:hidden}
.insight-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--ic-accent,var(--gold))}
.insight-label{font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.insight-value{font-family:var(--sans);font-size:19px;font-weight:700;margin-bottom:3px}
.insight-note{font-size:10px;color:var(--muted)}

::-webkit-scrollbar-track{background:var(--bg)}
::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:var(--muted2)}

/* ── Light theme ── */
:root.light {
  --bg:#f0f2f5;--bg2:#ffffff;--bg3:#f6f8fa;--bg4:#eaeef2;
  --border:#d0d7de;--border2:#b0bec5;
  --text:#1a1f2e;--muted:#57606a;--muted2:#8c959f;
  --gold:#9a6f00;--gold2:#c08000;
  --green:#1a7f37;--green-dim:#a8d5b5;--green-bg:#dafbe1;
  --red:#cf222e;--red-dim:#ffb8c2;--red-bg:#fff0ee;
  --blue:#0969da;--blue-bg:#ddf4ff;
  --amber:#9a6700;--amber-bg:#fff8c5;
}
:root.light body{background:var(--bg)}
:root.light body::before{background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.015) 2px,rgba(0,0,0,.015) 4px)}
:root.light .chip.on{color:#fff}
:root.light .pill-h{border-color:#f5b8be}
:root.light .pill-m{border-color:#e8d4a0}
:root.light .bm-beat{border-color:#a8d5b5}
:root.light .bm-trail{border-color:#ffb8c2}
:root.light .bm-close{border-color:#e8d4a0}
:root.light .badge-g{border-color:#a8d5b5}
:root.light .badge-r{border-color:#ffb8c2}
:root.light .badge-a{border-color:#e8d4a0}

/* ── Theme toggle button ── */
.theme-toggle{background:var(--bg3);border:1px solid var(--border);border-radius:6px;padding:6px 10px;cursor:pointer;font-size:14px;color:var(--muted);transition:all .2s;line-height:1;flex-shrink:0}
.theme-toggle:hover{color:var(--text);border-color:var(--border2)}

/* ── Mobile sidebar ── */
.hamburger{display:none;background:none;border:none;cursor:pointer;padding:6px;color:var(--muted);font-size:20px;line-height:1}
.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:99}
.sidebar-overlay.open{display:block}
@media(max-width:768px){
  .hamburger{display:block}
  .sidebar{transform:translateX(-100%);transition:transform .25s ease;z-index:200}
  .sidebar.mobile-open{transform:translateX(0)}
  .main{margin-left:0!important}
  .topbar{padding:10px 14px}
  .page{padding:14px}
  .kpi-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
  .grid2{grid-template-columns:1fr}
  .grid3{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
}

/* ── Rebalancing advisor ── */
.reb-asset-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--border)}
.reb-asset-row:last-child{border-bottom:none}
.reb-asset-name{font-size:12px;font-weight:500;min-width:120px}
.reb-asset-pct{font-size:12px;font-weight:700;color:var(--gold);min-width:36px;text-align:right}
.reb-action-box{background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:14px 16px;margin-top:14px}
.reb-action-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--border);font-size:12px}
.reb-action-row:last-child{border-bottom:none}
.reb-sell{color:var(--red);font-weight:600}
.reb-buy{color:var(--green);font-weight:600}
.reb-hold{color:var(--muted);font-weight:500}

/* ── SIP reminder card ── */
.sip-card{background:linear-gradient(135deg,var(--bg3) 0%,var(--bg2) 100%);border:1px solid var(--gold);border-radius:10px;padding:18px;position:relative;overflow:hidden}
.sip-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--gold),var(--gold2))}
.sip-month-label{font-size:10px;color:var(--gold);letter-spacing:.1em;text-transform:uppercase;margin-bottom:6px}
.sip-amount{font-family:var(--sans);font-size:28px;font-weight:700;color:var(--gold);line-height:1;margin-bottom:4px}
.sip-action-list{margin-top:12px;display:flex;flex-direction:column;gap:8px}
.sip-action-item{display:flex;align-items:flex-start;gap:10px;background:var(--bg4);border-radius:6px;padding:9px 12px;font-size:11px}
.sip-action-icon{font-size:16px;flex-shrink:0}
.sip-action-fund{font-weight:600;color:var(--text);margin-bottom:2px}
.sip-action-amt{color:var(--gold);font-weight:700;font-family:var(--sans)}
.sip-action-reason{color:var(--muted);font-size:10px;line-height:1.4}

/* ── Export CSV button ── */
.export-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;background:var(--bg3);border:1px solid var(--border);border-radius:5px;font-size:11px;font-family:var(--mono);color:var(--muted);cursor:pointer;transition:all .15s}
.export-btn:hover{border-color:var(--gold);color:var(--gold)}

/* ── Wealth Waterfall ── */
.wf-chart-wrap{position:relative;width:100%;overflow-x:auto;padding-bottom:8px}
.wf-svg-container{min-width:600px}
.wf-bar-base{cursor:pointer;transition:opacity .2s}
.wf-bar-base:hover{opacity:.8}
.wf-connector{stroke:var(--border2);stroke-width:1;stroke-dasharray:4 3}
.wf-label-top{font-family:'DM Mono',monospace;fill:var(--text);dominant-baseline:auto}
.wf-label-bot{font-family:'DM Mono',monospace;fill:var(--muted);dominant-baseline:hanging}
.wf-axis-line{stroke:var(--border);stroke-width:1}
.wf-grid-line{stroke:var(--border);stroke-width:1;stroke-dasharray:3 4}
.wf-total-glow{filter:drop-shadow(0 0 6px rgba(212,168,67,.35))}
.wf-breakdown-card{background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:14px 16px}
.wf-bk-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--border)}
.wf-bk-row:last-child{border-bottom:none}
.wf-bk-dot{width:10px;height:10px;border-radius:3px;flex-shrink:0}
.wf-bk-name{font-size:11px;color:var(--muted);flex:1}
.wf-bk-amt{font-size:13px;font-weight:600;min-width:100px;text-align:right}
.wf-bk-pct{font-size:10px;color:var(--muted);min-width:44px;text-align:right}
.wf-tooltip{position:absolute;background:var(--bg3);border:1px solid var(--border2);border-radius:8px;padding:10px 14px;font-size:11px;pointer-events:none;z-index:1000;display:none;min-width:160px}
.wf-tooltip-title{font-weight:600;color:var(--gold);margin-bottom:5px;font-size:12px}
.wf-tooltip-row{display:flex;justify-content:space-between;gap:16px;margin-bottom:3px}
.wf-tooltip-label{color:var(--muted)}
.wf-tooltip-val{font-weight:600;color:var(--text)}
.wf-stat-pill{display:inline-flex;align-items:center;gap:6px;background:var(--bg3);border:1px solid var(--border);border-radius:6px;padding:8px 14px;font-size:11px}
.wf-stat-pill-label{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:9px}
.wf-stat-pill-val{font-family:'Syne',sans-serif;font-size:16px;font-weight:700}

/* ── Portfolio Action Signal ── */
.pas-hero{border-radius:12px;padding:24px 28px;margin-bottom:20px;position:relative;overflow:hidden;border:1px solid var(--border)}
.pas-hero::before{content:'';position:absolute;inset:0;opacity:.07;pointer-events:none}
.pas-hero.green{background:linear-gradient(135deg,var(--green-bg),var(--bg2));border-color:var(--green-dim)}
.pas-hero.green::before{background:var(--green)}
.pas-hero.amber{background:linear-gradient(135deg,var(--amber-bg),var(--bg2));border-color:#4a3500}
.pas-hero.amber::before{background:var(--amber)}
.pas-hero.red{background:linear-gradient(135deg,var(--red-bg),var(--bg2));border-color:var(--red-dim)}
.pas-hero.red::before{background:var(--red)}
.pas-signal-label{font-size:10px;letter-spacing:.14em;text-transform:uppercase;margin-bottom:8px;font-weight:600}
.pas-signal-label.green{color:var(--green)}
.pas-signal-label.amber{color:var(--amber)}
.pas-signal-label.red{color:var(--red)}
.pas-headline{font-family:'Syne',sans-serif;font-size:26px;font-weight:700;line-height:1.2;margin-bottom:6px}
.pas-subline{font-size:12px;color:var(--muted);line-height:1.6}
.pas-score-badge{position:absolute;top:24px;right:28px;width:72px;height:72px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;border:2px solid}
.pas-score-badge.green{background:var(--green-bg);border-color:var(--green)}
.pas-score-badge.amber{background:var(--amber-bg);border-color:var(--amber)}
.pas-score-badge.red{background:var(--red-bg);border-color:var(--red)}
.pas-score-num{font-family:'Syne',sans-serif;font-size:24px;font-weight:700;line-height:1}
.pas-score-num.green{color:var(--green)}
.pas-score-num.amber{color:var(--amber)}
.pas-score-num.red{color:var(--red)}
.pas-score-lbl{font-size:8px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-top:2px}
.pas-action-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;margin-bottom:20px}
.pas-action-card{background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:16px;position:relative;overflow:hidden;transition:border-color .2s}
.pas-action-card:hover{border-color:var(--border2)}
.pas-action-card::before{content:'';position:absolute;top:0;left:0;width:3px;height:100%;border-radius:2px 0 0 2px}
.pas-action-card.urgent::before{background:var(--red)}
.pas-action-card.watch::before{background:var(--amber)}
.pas-action-card.good::before{background:var(--green)}
.pas-action-card.info::before{background:var(--blue)}
.pas-card-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.pas-card-icon{font-size:18px;line-height:1}
.pas-card-tag{font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:2px 7px;border-radius:3px}
.pas-card-tag.urgent{background:var(--red-bg);color:var(--red);border:1px solid var(--red-dim)}
.pas-card-tag.watch{background:var(--amber-bg);color:var(--amber);border:1px solid #4a3500}
.pas-card-tag.good{background:var(--green-bg);color:var(--green);border:1px solid var(--green-dim)}
.pas-card-tag.info{background:var(--blue-bg);color:var(--blue);border:1px solid #1a4060}
.pas-card-title{font-size:12px;font-weight:600;color:var(--text);margin-bottom:4px}
.pas-card-body{font-size:11px;color:var(--muted);line-height:1.6}
.pas-card-metric{font-family:'Syne',sans-serif;font-size:15px;font-weight:700;margin-top:8px}
.pas-card-metric.urgent{color:var(--red)}
.pas-card-metric.watch{color:var(--amber)}
.pas-card-metric.good{color:var(--green)}
.pas-card-metric.info{color:var(--blue)}
.pas-checklist{background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:16px;margin-bottom:20px}
.pas-check-row{display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px solid var(--border);cursor:pointer;transition:background .15s;border-radius:4px}
.pas-check-row:last-child{border-bottom:none}
.pas-check-row:hover{background:var(--bg3)}
.pas-check-box{width:18px;height:18px;border-radius:4px;border:1.5px solid var(--border2);flex-shrink:0;display:flex;align-items:center;justify-content:center;margin-top:1px;transition:all .15s}
.pas-check-box.done{background:var(--green);border-color:var(--green)}
.pas-check-text{flex:1}
.pas-check-title{font-size:12px;font-weight:500;color:var(--text);margin-bottom:2px}
.pas-check-desc{font-size:10px;color:var(--muted);line-height:1.5}
.pas-check-row.checked .pas-check-title{text-decoration:line-through;color:var(--muted)}
.pas-calendar-strip{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px;margin-bottom:20px}
.pas-cal-day{flex-shrink:0;width:52px;text-align:center;background:var(--bg2);border:1px solid var(--border);border-radius:8px;padding:8px 4px;cursor:default}
.pas-cal-day.today{border-color:var(--gold);background:var(--amber-bg)}
.pas-cal-day.has-sip{border-color:var(--blue)}
.pas-cal-day.fy-alert{border-color:var(--red)}
.pas-cal-day-num{font-family:'Syne',sans-serif;font-size:18px;font-weight:700}
.pas-cal-day-label{font-size:8px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-top:2px}
.pas-cal-day-dot{width:6px;height:6px;border-radius:50%;margin:4px auto 0}
.pas-mood-strip{display:flex;gap:10px;margin-bottom:20px;flex-wrap:wrap}
.pas-mood-item{flex:1;min-width:120px;background:var(--bg2);border:1px solid var(--border);border-radius:8px;padding:12px 14px;display:flex;align-items:center;gap:10px}
.pas-mood-icon{font-size:22px;line-height:1;flex-shrink:0}
.pas-mood-label{font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;margin-bottom:2px}
.pas-mood-val{font-size:13px;font-weight:600}