:root{
  /* Flyt brand yellow, sampled from the official logo (#FBE200). Pure bright yellow reads
     with strong contrast on the dark canvas — the brand's signature accent. */
  --y:#FBE200; --y2:#E2CC00; --anuva:#CE8900;
  --ink:#1b1b1c; --ink-2:#252527; --ink-3:#323235;
  --line:rgba(255,255,255,0.09); --line-2:rgba(255,255,255,0.16);
  --muted:#9A9A93; --muted-2:#C2C2BC;
  --pos:#45C98A; --neg:#F2737A;
  /* secondary chart accents, kept restrained + colourblind-aware via shape/sign */
  --blue:#6FA8DC; --amber:#E0A03A; --violet:#A99BC4;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{background:var(--ink);color:#ECEAE4;font-family:'Rubik',system-ui,sans-serif;-webkit-font-smoothing:antialiased;min-height:100vh}
body{background:radial-gradient(1200px 600px at 80% -100px,rgba(251,226,0,0.18),transparent 60%),radial-gradient(900px 500px at 10% 110%,rgba(251,226,0,0.08),transparent 60%),var(--ink)}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input{font-family:inherit}
.serif{font-family:'Oswald',Impact,sans-serif;font-weight:600;letter-spacing:0.005em}
.num{font-variant-numeric:tabular-nums lining-nums;font-feature-settings:"tnum"}
.hidden{display:none !important}

/* ---------- top bar ---------- */
.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:16px 28px;border-bottom:1px solid var(--line);position:sticky;top:0;background:rgba(14,14,16,0.9);backdrop-filter:blur(14px);z-index:60}
.brand{display:flex;align-items:center;gap:14px}
.brand-logo{height:30px;width:auto;display:block}
.brand-sep{width:1px;height:26px;background:var(--line-2)}
.brand-text small{display:block;font-size:10px;color:var(--muted-2);font-weight:500;letter-spacing:0.08em;text-transform:uppercase}
.topbar-right{display:flex;align-items:center;gap:16px;font-size:12px;color:var(--muted)}
.signed-in{font-size:12px;color:var(--muted-2);white-space:nowrap}

/* admin (superuser) investor picker */
.admin-picker{display:inline-flex;align-items:center;gap:9px;white-space:nowrap}
.admin-picker .ap-label{font-size:10px;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:var(--muted)}
.admin-picker select{background:var(--ink-2);border:1px solid var(--line-2);border-radius:8px;color:#ECEAE4;font-family:inherit;font-size:12.5px;font-weight:500;padding:8px 11px;max-width:240px;cursor:pointer;transition:border-color .15s}
.admin-picker select:hover{border-color:var(--y)}
.admin-picker select:focus{outline:none;border-color:var(--y)}
.admin-picker select:disabled{opacity:.55;cursor:wait}
.admin-picker .ap-status{font-size:11px;color:var(--muted);font-style:italic;min-width:1px}
.admin-picker .ap-status:empty{display:none}

/* audience toggle */
.aud-toggle{display:inline-flex;background:var(--ink-2);border:1px solid var(--line-2);border-radius:10px;padding:4px}
.aud-btn{padding:9px 16px;font-size:12.5px;font-weight:500;color:var(--muted-2);border-radius:7px;transition:all .15s;white-space:nowrap;display:flex;align-items:center;gap:7px}
.aud-btn.active{background:var(--y);color:#000;font-weight:600}
.aud-btn:hover:not(.active){color:#fff}
.aud-btn .dot{width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.4}
.aud-btn.active .dot{opacity:1;background:var(--ink)}
.logout-btn{padding:8px 13px;border:1px solid var(--line-2);border-radius:6px;font-size:12px;font-weight:500;transition:all .15s}
.logout-btn:hover{background:var(--ink-2);border-color:var(--y)}

/* ---------- login ---------- */
.login{min-height:calc(100vh - 64px);display:flex;align-items:center;justify-content:center;padding:40px}
.login-logo{height:40px;width:auto;display:block;margin-bottom:32px}
.login-form-side{display:flex;align-items:center;justify-content:center;width:100%}
.login-inner{max-width:400px;width:100%}
.login-eyebrow{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--y);margin-bottom:14px;font-weight:600}
.login-title{font-size:38px;margin-bottom:14px;color:#fff}
.login-sub{font-size:14px;color:var(--muted-2);line-height:1.55;margin-bottom:30px}
.field{margin-bottom:14px}
.field label{display:block;font-size:11px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase;margin-bottom:7px;font-weight:500}
.input{width:100%;background:var(--ink-2);border:1px solid var(--line-2);border-radius:8px;padding:14px 16px;color:#fff;font-size:15px;outline:none;transition:all .15s}
.input:focus{border-color:var(--y);background:#000;box-shadow:0 0 0 3px rgba(251,226,0,0.12)}
.input::placeholder{color:#55555c}
.btn-primary{width:100%;background:var(--y);color:#000;font-weight:600;padding:15px 18px;border-radius:8px;font-size:15px;transition:transform .1s,background .15s;display:flex;align-items:center;justify-content:center;gap:9px;margin-top:6px}
.btn-primary:hover{background:var(--y2);transform:translateY(-1px)}
.btn-primary svg{width:16px;height:16px}
.login-err{color:var(--neg);font-size:13px;margin-top:12px;display:none}
.login-err.show{display:block}
.login-foot{margin-top:28px;padding-top:20px;border-top:1px solid var(--line);font-size:12px;color:var(--muted);line-height:1.7}
.login-foot strong{color:var(--muted-2)}

/* ---------- dashboard shell ---------- */
.dash{display:none;max-width:1280px;margin:0 auto;padding:24px 28px 60px}
.dash.show{display:block}
.greet{margin:6px 0 18px}
.greet-head{display:flex;align-items:center;justify-content:space-between;gap:12px}

/* identity strip (individual view) */
.idstrip{display:flex;flex-wrap:wrap;gap:28px;background:var(--ink-2);border:1px solid var(--line);border-radius:14px;padding:20px 24px;margin-bottom:20px}
.ids-cell{flex:1;min-width:150px}
.ids-l{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.ids-v{font-size:19px;font-weight:600;color:#fff;line-height:1.2}
.ids-s{font-size:11.5px;color:var(--muted);margin-top:5px}
/* 3-stat overview bar: even columns separated by hairline dividers */
.kpi-strip{gap:0;padding:22px 26px}
.kpi-strip .ids-cell{padding-left:32px;border-left:1px solid var(--line)}
.kpi-strip .ids-cell:first-child{padding-left:0;border-left:none}
.greet-tag{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--y);font-weight:600;margin-bottom:8px}
.ent-tag{display:inline-block;margin-left:9px;padding:2px 9px;border:1px solid rgba(255,255,255,0.22);border-radius:20px;font-size:10px;letter-spacing:.08em;color:var(--muted);vertical-align:middle}
.greet-title{font-size:30px;line-height:1.1}
.greet-title strong{color:var(--y);font-family:'Oswald',Impact,sans-serif;font-weight:600}
.greet-sub{font-size:13.5px;color:var(--muted-2);max-width:680px;line-height:1.5;margin-top:6px}

/* ---------- sticky context bar ---------- */
.ctx{position:sticky;top:64px;z-index:55;background:rgba(20,20,23,0.92);backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:12px;padding:14px 18px;margin-bottom:22px;display:flex;align-items:center;gap:22px;flex-wrap:wrap;transition:transform .25s ease,opacity .25s ease}
/* tucked away once the user scrolls past the section the as-at slider drives */
.ctx.ctx-tucked{transform:translateY(-160%);opacity:0;pointer-events:none}
.ctx.slider-hidden{display:none}   /* hidden while "Show exit value by year" is expanded */
/* My Share: .ctx is placed inline just above #exitHeroCard inside .exit-zone.
   position:sticky handles the rest — it sticks at the top while scrolling through the exit
   cards and de-sticks naturally when the zone ends (before Operating Performance). */
.exit-zone{display:block}
.ctx-group{display:flex;align-items:center;gap:10px}
.ctx-label{font-size:10.5px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase;font-weight:600}
.seg{display:inline-flex;background:var(--ink);border:1px solid var(--line-2);border-radius:8px;padding:3px}
.seg button{padding:7px 13px;font-size:12px;font-weight:500;color:var(--muted-2);border-radius:6px;transition:all .12s}
.seg button.active{background:var(--y);color:#000;font-weight:600}
.seg button:hover:not(.active){color:#fff}
.ctx-slider{flex:1;min-width:260px;display:flex;flex-direction:column;gap:4px}
.ctx-slider .row{display:flex;align-items:center;gap:12px}
.ctx-slider input[type=range]{-webkit-appearance:none;flex:1;background:transparent;outline:none;height:22px}
input[type=range]::-webkit-slider-runnable-track{height:5px;background:linear-gradient(to right,var(--y) 0%,var(--y) var(--pct,100%),#2a2a30 var(--pct,100%));border-radius:3px}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;background:#fff;border:3px solid var(--y);border-radius:50%;margin-top:-7px;cursor:pointer;box-shadow:0 3px 9px rgba(0,0,0,.4)}
input[type=range]::-moz-range-thumb{width:18px;height:18px;background:#fff;border:3px solid var(--y);border-radius:50%;cursor:pointer}
.ctx-slider .date{font-size:13px;font-weight:600;color:var(--y);font-variant-numeric:tabular-nums;min-width:78px;text-align:right}
.ctx-slider .sub{font-size:10.5px;color:var(--muted)}.ctx-slider .sub:empty{display:none}

.ctx-step{padding:6px 9px;border:1px solid var(--line-2);border-radius:6px;font-size:12px;color:var(--muted-2)}
.ctx-step:hover{color:#fff;border-color:var(--y)}
.today-btn{color:var(--y);font-weight:600;border-color:rgba(251,226,0,0.4)}
.today-btn:hover{background:rgba(251,226,0,0.1);color:var(--y)}
.proj-pill{display:inline-flex;align-items:center;gap:7px;font-size:11px;color:#FFF1A8;background:rgba(251,226,0,0.1);border:1px solid rgba(251,226,0,0.25);padding:6px 11px;border-radius:20px;font-weight:500;white-space:nowrap}
.proj-pill .pdot{width:6px;height:6px;border-radius:50%;background:var(--y)}

/* ---------- generic cards ---------- */
.card{background:var(--ink-2);border:1px solid var(--line);border-radius:14px;padding:22px;margin-bottom:20px}
.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:4px}
.card-title{font-size:16px;font-weight:600;letter-spacing:-0.01em}
.card-sub{font-size:12px;color:var(--muted);line-height:1.5;margin-bottom:16px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}
.grid-2 .card{margin-bottom:0}

/* Section heading (above KPI strip and other full-width groupings) */
.section-head{display:flex;align-items:baseline;gap:14px;margin:4px 0 14px}
.section-label{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--y);font-weight:600}
.section-desc{font-size:11.5px;color:var(--muted);line-height:1.5}

/* KPI strip */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:12px}
.kpis.kpis-5{grid-template-columns:repeat(5,1fr)}
.kpis.kpis-3{grid-template-columns:repeat(3,1fr)}
/* Connected variant — single unified card with internal dividers */
.kpis.kpis-connected{gap:0;border:1px solid var(--line);border-radius:14px;overflow:hidden}
.kpis.kpis-connected .kpi{border:none;border-radius:0;border-right:1px solid var(--line)}
.kpis.kpis-connected .kpi:last-child{border-right:none}
.fc tr.gap td{height:12px;border-bottom:none;background:transparent}
.kpi{background:var(--ink-2);border:1px solid var(--line);border-radius:14px;padding:13px 18px;position:relative;overflow:hidden}
.kpi-label{font-size:11px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin-bottom:6px}
/* one consistent info glyph (KPI labels, chart headers). Soft-filled circle + italic serif "i" so
   it reads as an info marker, not a tappable toggle/button. Hover/focus gives a quiet yellow wash. */
.info-i{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;background:rgba(255,255,255,0.07);color:var(--muted);font-size:9.5px;font-weight:600;font-style:italic;font-family:Georgia,'Times New Roman',serif;line-height:1;cursor:help;vertical-align:middle;transition:background .12s,color .12s;outline:none;user-select:none;text-transform:none}
.info-i:hover,.info-i:focus-visible{background:rgba(251,226,0,0.18);color:var(--y)}

/* floating tooltip (portaled to body — never clipped by card overflow) */
.tip{position:fixed;z-index:200;max-width:300px;background:#0c0c0e;border:1px solid var(--line-2);border-radius:9px;padding:11px 13px;font-size:12px;line-height:1.55;color:var(--muted-2);box-shadow:0 10px 28px rgba(0,0,0,.55);opacity:0;transform:translateY(3px);transition:opacity .12s ease,transform .12s ease;pointer-events:none}
.tip.show{opacity:1;transform:none}
.tip::after{content:'';position:absolute;left:var(--arrow,50%);top:100%;transform:translateX(-50%);border:5px solid transparent;border-top-color:var(--line-2)}
.tip.below::after{top:auto;bottom:100%;border-top-color:transparent;border-bottom-color:var(--line-2)}
.tip:has(.tl){max-width:300px}
.tl-h{font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:7px}
.tl{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
.tl td{padding:2.5px 0;vertical-align:baseline}
.tl .tl-l{color:var(--muted-2);padding-right:14px}
.tl .tl-n{text-align:right;white-space:nowrap;font-family:'Oswald',Impact,sans-serif;color:#fff}
.tl tr.tl-sub td{border-top:1px solid var(--line-2);padding-top:6px}
.tl tr.tl-sub .tl-l{color:#fff}
.tl tr.tl-res td{border-top:1px solid var(--y);padding-top:6px}
.tl tr.tl-res .tl-l{color:#fff;font-weight:600}
.tl tr.tl-res .tl-n{color:var(--y)}
.tl-note{margin-top:9px;font-size:11px;line-height:1.5;color:var(--muted)}
.kpi-val{font-size:22px;font-weight:600;letter-spacing:-0.02em;line-height:1.1}
.kpi-sub{font-size:12px;color:var(--muted-2);line-height:1.4;margin-top:3px}
.pos{color:var(--pos);font-weight:500}.neg{color:var(--neg);font-weight:500}
/* #1: muted styling for expected early-life negative return — not alarm-red */
.ret-muted{color:var(--muted-2);font-weight:500}
/* #5: jargon tooltip anchors — dotted underline signals "hover for definition" */
.jargon-tip{border-bottom:1px dotted var(--muted);cursor:help;display:inline}
.jargon-tip-nodot{cursor:help;display:inline}
/* #7: caption below NAV chart */
.chart-caption{font-size:11.5px;color:var(--muted);margin-top:10px;line-height:1.5}
.cap-crossover{color:var(--muted-2);font-weight:500}

/* ---------- North Star hero ---------- */
.hero{background:linear-gradient(180deg,rgba(251,226,0,0.04) 0%,rgba(251,226,0,0) 60%),var(--ink-2);border:1px solid rgba(251,226,0,0.14);border-radius:16px;padding:26px;margin-bottom:22px}
.hero-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}
.hero-eyebrow{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--y);font-weight:600}
.hero-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:14px}
.hero-leg{background:var(--ink);border:1px solid var(--line);border-radius:12px;padding:20px}
.hero-leg.exit{border-color:var(--line-2)}
.hero-leg .cap{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:8px;display:flex;align-items:center;gap:8px}
.hero-leg .cap b{color:#fff;font-weight:600;letter-spacing:0}
.hero-leg .big{font-size:30px;font-weight:600;letter-spacing:-0.02em;font-family:'Oswald',Impact,sans-serif;font-weight:600}
.hero-leg.hold .big{color:var(--y)}
.hero-leg .meta{font-size:12px;color:var(--muted-2);margin-top:6px}
.hero-leg .bar{display:flex;height:8px;border-radius:5px;overflow:hidden;margin-top:14px;background:#000}
.hero-leg .bar span{display:block;height:100%}
.hero-leg .barkey{display:flex;gap:14px;font-size:10.5px;color:var(--muted);margin-top:7px;flex-wrap:wrap}
.hero-leg .barkey i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px;vertical-align:middle}
/* hold-vs-exit payoff band — exit / hold / difference; difference reddens when exiting early costs you */
.exit-band{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:18px}
.eb-cell{background:var(--ink);border:1px solid var(--line);border-radius:12px;padding:20px;transition:border-color .2s,background .2s}
.eb-cell.eb-cost{border-color:rgba(242,115,122,0.22);background:rgba(242,115,122,0.045)}
.eb-cell.eb-cost .eb-v{color:#E59CA0}
.eb-cell.eb-gain{border-color:rgba(69,201,138,0.24);background:rgba(69,201,138,0.05)}
.eb-cell.eb-gain .eb-v{color:#5BC99A}
.eb-l{font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-bottom:9px}
.eb-l b{color:#fff;font-weight:600;text-transform:none;letter-spacing:0}
.eb-v{font-size:28px;font-weight:600;font-family:'Oswald',Impact,sans-serif;letter-spacing:-0.01em;line-height:1.1}
.eb-s{font-size:11.5px;color:var(--muted);margin-top:7px;line-height:1.4}
/* Cash Distributions: two columns (distribution / yield), each a stack of 3 fixed year blocks */
.cash-cols{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:16px}
.cash-col-h{font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-bottom:10px;line-height:18px;min-height:18px}
.yr-block{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:11px 14px;margin-bottom:8px;border:1px solid rgba(251,226,0,0.4);background:rgba(251,226,0,0.045);border-radius:10px}
.yr-block:last-child{margin-bottom:0}
.yr-block .yr-l{font-size:11.5px;color:var(--muted-2)}
.yr-block .yr-v{font-size:19px;font-weight:600;font-family:'Oswald',Impact,sans-serif;letter-spacing:-0.01em}
@media (max-width:640px){.cash-cols{grid-template-columns:1fr}}

.fc th.sel,.fc td.sel{background:rgba(251,226,0,0.08)}
#exitCalc{margin-top:12px}
.hero-hint{margin-top:8px;text-align:center;font-size:11.5px;color:var(--muted)}
.leg-note{font-size:11px;color:var(--muted);margin-top:8px;line-height:1.4}

/* charts */
.chart-wrap{position:relative;height:280px}
.chart-wrap.tall{height:320px}
.chart-legend{display:flex;gap:14px;font-size:11px;color:var(--muted-2);margin-bottom:12px;flex-wrap:wrap}
.chart-legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:middle}

/* tables */
.tbl-scroll{overflow-x:auto}
table.fc{width:100%;border-collapse:collapse;font-size:12.5px}
table.fc th{text-align:left;font-size:10px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;padding:10px 12px;border-bottom:1px solid var(--line-2);font-weight:600;position:sticky;top:0;background:var(--ink-2);white-space:nowrap}
table.fc th.r,table.fc td.r{text-align:right;font-variant-numeric:tabular-nums}
table.fc td{padding:9px 12px;border-bottom:1px solid var(--line);color:var(--muted-2)}
table.fc td.lbl,table.fc th.lbl{position:sticky;left:0;background:var(--ink-2);color:#fff;font-weight:500;z-index:1;white-space:nowrap}
table.fc tr:hover td{background:rgba(255,255,255,0.02)}
table.fc td.strong{color:#fff;font-weight:600}
/* fixed layout so stacked snapshot tables share identical column widths */
table.fc.snaptbl{table-layout:fixed}
/* compact snapshot tables: tighter rows + value headers wrap to 2 lines so they read easier */
table.fc.snaptbl th{padding:7px 11px}
table.fc.snaptbl td{padding:5px 11px}
table.fc.snaptbl th.r{white-space:normal;vertical-align:bottom;line-height:1.22}
/* compact modifier for wide flow tables (portfolio summary, exit tables) */
table.fc.compact{font-size:11.5px}
table.fc.compact th{padding:6px 10px}
table.fc.compact td{padding:4px 10px}
/* memo rows: context-only, not summation inputs (e.g. the "% of net cash contributed" ratio) */
table.fc tr.memo td{color:var(--muted);font-weight:400}
/* calculation build-up tables: operator gutter (+ / − / =), a sum-rule above subtotals/totals,
   and a brand-yellow tint on the grand total. Shared across the individual tables (My Investment
   Summary, Exit value by year, Investment Summary including Tax Break) and the portfolio tables
   (NAV snapshot, Portfolio summary). */
.calc-op{display:inline-block;width:16px;color:var(--muted);font-weight:600}
table.fc tr.sum-line td{border-top:1px solid var(--line-2)}
table.fc tr.calc-grand td{background:rgba(251,226,0,0.045)}
table.fc tr.calc-grand .calc-op{color:var(--y)}
/* ledger modifier: label + value summaries (My Investment Summary, tax-benefit breakdown).
   Sizes to content so the label and its number read as a tight pair instead of stretching
   to opposite edges of a wide card. The label column absorbs slack; value cols stay compact. */
table.fc.ledger{width:auto}
table.fc.ledger td.r,table.fc.ledger th.r{min-width:124px;padding-left:28px}
/* SS1: the My Investment Summary table flexes to fill the card width, columns evenly distributed
   (label + 12J/12B/Combined) so it reads like the other wide tables instead of stranding content. */
table.fc.summary{width:100%;table-layout:fixed;font-size:11.5px}
table.fc.summary th{padding-top:5px;padding-bottom:5px}
table.fc.summary th.lbl,table.fc.summary td.lbl{width:36%}
/* compact rows so the summary reads as a tight statement, not a sparse list */
table.fc.summary td{padding:3px 10px}
table.fc.summary td[colspan]{padding-top:7px;padding-bottom:2px;font-size:9px}
table.fc.summary .invsum-section{color:var(--muted-2);letter-spacing:.5px;text-transform:uppercase;background:rgba(255,255,255,0.035);border-top:1px solid rgba(251,226,0,0.13)}
table.fc.summary tr:first-child .invsum-section{border-top:none}
/* Partnership Quotient lead row — yellow-tinted; doubles as a legend for the 12J/12B/Combined columns */
table.fc.summary tr.pq-row td{background:rgba(251,226,0,0.06);border-bottom:1px solid rgba(251,226,0,0.18)}
table.fc.summary tr.pq-row td.lbl{background:linear-gradient(rgba(251,226,0,0.06),rgba(251,226,0,0.06)),var(--ink-2)}
table.fc.summary tr.pq-row td.num{color:var(--y)}
table.fc.summary td.placeholder{color:var(--muted)}
table.fc.summary tr.placeholder-row td.lbl{color:var(--muted-2)}
.ph-tag{display:inline-block;margin-left:7px;padding:1px 5px;border:1px solid rgba(251,226,0,0.22);border-radius:5px;color:var(--y);background:rgba(251,226,0,0.06);font-size:8.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;vertical-align:middle}
.placeholder-note{margin-top:7px;font-size:11px;color:var(--muted);line-height:1.4}
/* SS4: Excel-style gray block that decomposes the line above it (the Initial Tax Break).
   A distinct mid-grey annotation panel — clearly subordinate to the table it explains. */
.explain-block{margin-top:18px;background:#34343b;border:1px solid var(--line-2);border-radius:10px;padding:14px 18px;max-width:430px}
.explain-h{font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:600;margin-bottom:10px}
.explain-tbl{width:100%;border-collapse:collapse;font-size:13px}
.explain-tbl td{padding:6px 0}
.explain-tbl td:first-child{color:#fff}
.explain-tbl td.pct{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums;padding-right:20px;width:44px}
.explain-tbl td.num{text-align:right;color:var(--muted-2);font-variant-numeric:tabular-nums}
.explain-tbl tr.res td{border-top:1px solid var(--line-2);padding-top:9px;font-weight:600;color:#fff}
.explain-tbl tr.res td.num{color:#fff}
.snap-cap{font-size:11.5px;color:var(--muted);margin-top:10px;padding:2px 12px 0}
table.fc td.lbl.sub-row{padding-left:28px;color:var(--muted);font-weight:400;font-size:12px}
table.fc td.num.sub-row{color:var(--muted);font-size:12px}

/* collapsible card (open/close) */
.ccard .cc-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:0}
/* a collapsed card is just title (+sub) + toggle — drop the sub's expanded-state bottom gap */
.ccard:not(.open) .cc-head .card-sub{margin-bottom:0}
.cc-right{display:flex;align-items:center;gap:16px;flex-shrink:0}
/* granularity toggle only makes sense when the body is open */
.ccard:not(.open) .cc-extra{display:none}
.cc-toggle{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:500;color:var(--muted-2);white-space:nowrap}
.cc-toggle:hover{color:#fff}
.cc-toggle .chev{transition:transform .2s;color:var(--y)}
.ccard.open .cc-toggle .chev{transform:rotate(90deg)}
.cc-state{font-size:12px;font-weight:600;color:var(--y)}
.cc-body{margin-top:16px}

/* property tiles */
.props{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.prop{background:var(--ink);border:1px solid var(--line);border-radius:10px;padding:16px}
.prop .nm{font-size:14px;font-weight:600;color:#fff;margin-bottom:12px}
.prop .pr{display:flex;justify-content:space-between;font-size:11.5px;color:var(--muted-2);padding:6px 0;border-top:1px solid var(--line)}
.prop .pr span:last-child{color:#fff;font-weight:600;font-variant-numeric:tabular-nums}

/* progressive disclosure — button is a header row inside a .card wrapper */
.disclose{width:100%;text-align:left;background:none;border:none;padding:0;font-size:14px;font-weight:500;color:var(--muted-2);display:flex;align-items:center;gap:10px;transition:color .15s}
.disclose:hover{color:#fff}
.disclose.open{padding-bottom:14px;border-bottom:1px solid var(--line);margin-bottom:18px}
.disclose .chev{transition:transform .2s;color:var(--y)}
.disclose.open .chev{transform:rotate(90deg)}
.disclose-label{flex:1}
.disclose-state{font-size:12px;font-weight:600;color:var(--y)}

/* footer */
.foot{margin-top:30px;padding-top:22px;border-top:1px solid var(--line)}
.foot-brands{display:flex;align-items:center;gap:14px;margin-bottom:14px;color:var(--muted);font-size:12px;flex-wrap:wrap}
.foot-flyt{height:26px;width:auto;opacity:.9}
.foot-anuva{height:36px;width:auto;opacity:.9}
.foot-wink{height:22px;width:auto;opacity:.9}
.foot-brands span{margin-right:8px}
.disclaimer{font-size:11.5px;color:var(--muted);line-height:1.65}
.disclaimer strong{color:var(--muted-2);display:block;margin-bottom:6px;font-size:12px}

.view-portfolio .only-individual{display:none}
.view-individual .only-portfolio{display:none}

@media (max-width:1100px){
  .kpis{grid-template-columns:repeat(2,1fr)}
  .kpis.kpis-5{grid-template-columns:repeat(2,1fr)}
  .kpis.kpis-connected .kpi{border-right:none;border-bottom:1px solid var(--line)}
  .kpis.kpis-connected .kpi:nth-child(odd){border-right:1px solid var(--line)}
  .kpis.kpis-connected .kpi:nth-last-child(-n+2){border-bottom:none}
  .kpis.kpis-connected .kpi:last-child{border-right:none}
  .grid-2{grid-template-columns:1fr}
  .hero-grid{grid-template-columns:1fr}
  .props{grid-template-columns:1fr}
}
@media (max-width:620px){
  .kpis,.kpis.kpis-5{grid-template-columns:1fr}
  .kpis.kpis-connected .kpi{border-right:none;border-bottom:1px solid var(--line)}
  .kpis.kpis-connected .kpi:nth-child(odd){border-right:none}
  .kpis.kpis-connected .kpi:last-child{border-bottom:none}
  .exit-band{grid-template-columns:1fr}
  .topbar{padding:12px 16px}
  .dash{padding:16px}
}
.fade{animation:fade .4s ease}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}

/* ---------- modelling assumptions (basis of preparation) ---------- */
.assump{padding:6px 2px 2px}
.assump-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(248px,1fr));gap:26px 48px}
.assump-grp h4{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--y);font-weight:600;margin-bottom:12px;padding-bottom:9px;border-bottom:1px solid var(--line)}
.assump-row{display:flex;justify-content:space-between;align-items:baseline;gap:18px;padding:7px 0;border-bottom:1px solid rgba(255,255,255,0.045)}
.assump-row:last-of-type{border-bottom:none}
.assump-row .k{font-size:13px;color:var(--muted-2);line-height:1.35}
.assump-row .v{font-size:14px;font-weight:600;color:#ECEAE4;white-space:nowrap}
.assump-stack{padding:8px 0;border-bottom:1px solid rgba(255,255,255,0.045)}
.assump-stack:last-child{border-bottom:none}
.assump-stack .k{display:block;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.assump-stack .v{display:block;font-size:13px;color:var(--muted-2);line-height:1.45}
.assump-note{font-size:11.5px;color:var(--muted);line-height:1.5;margin-top:12px;font-style:italic}
/* 8-Year IRR card */
.irr-headline{display:flex;align-items:baseline;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.irr-pct{font-size:40px;font-weight:700;color:var(--y);line-height:1}
.irr-cap{font-size:12.5px;color:var(--muted-2)}
