/* Shared public investor-room components. Classes only; no inline styles. */
/* Rōvn investor deck. White surfaces, amber accent, Inter. No texture, no imagery. */
:root {
  --surface: #fff;
  --text: #1B1814;
  --ink: #1B1814;
  --muted: #5F5B55;
  --line: #E4E0D8;
  --soft: #F3F1EC;
  --amber: #EB9431;
  --amber-text: #A85F0E;
  --amber-tint: #FDF1E1;
  --toolbar-height: 72px;
}
* { box-sizing: border-box; }
html { scroll-padding-top: 90px; }
body { margin: 0; background: #F4F3F0; color: var(--text); font-family: Inter, Arial, sans-serif; font-size: 18px; line-height: 1.45; -webkit-font-smoothing: antialiased; }
a { color: inherit; text-underline-offset: 4px; }
button, select { font: inherit; }
button, a { touch-action: manipulation; }
button { cursor: pointer; }
a:focus-visible, button:focus-visible, select:focus-visible { outline: 3px solid var(--amber-text); outline-offset: 4px; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); }
.skip { position: fixed; top: -80px; left: 20px; z-index: 50; background: white; padding: 12px; }
.skip:focus { top: 12px; }
img { max-width: 100%; }
ul, ol { margin: 0; padding: 0; list-style: none; }
h1, h2, h3, p { margin: 0; }

.takeaway { margin-top: 24px; font-size: 22px; font-weight: 600; letter-spacing: -.02em; line-height: 1.3; }
.takeaway.smaller { font-size: 17px; font-weight: 500; }
.mini-label, .metric-kind, .lane-label { font-size: 11.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--amber-text); font-weight: 600; }
.lane-index { display: inline-flex; width: 26px; height: 26px; align-items: center; justify-content: center; border-radius: 50%; background: var(--ink); color: white; font-size: 11px; font-weight: 700; flex-shrink: 0; }
.seg-0 { fill: var(--ink); } .seg-1 { fill: var(--amber); } .seg-2 { fill: #C9A27A; } .seg-3 { fill: #8A857D; }
.seg-4 { fill: #F1C689; } .seg-5 { fill: #ADA79E; } .seg-6 { fill: #C2701A; } .seg-7 { fill: #D9D5CD; }
.swatch { display: inline-block; width: 12px; height: 12px; border-radius: 2px; margin-right: 8px; vertical-align: -1px; background: var(--ink); }
.swatch.seg-1, .swatch.amber { background: var(--amber); } .swatch.seg-2 { background: #C9A27A; } .swatch.seg-3 { background: #8A857D; }
.slide h3, .deck-visual h3 { font-size: 19px; font-weight: 650; letter-spacing: -.02em; line-height: 1.25; }

/* 02 Problem */
.case-label { font-size: 15px; font-weight: 600; color: var(--amber-text); margin-bottom: 14px; }
.dept-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 14px; }
.dept { border-top: 2px solid var(--ink); padding-top: 12px; min-width: 0; }
.dept-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
.dept-index { font-size: 12px; color: var(--muted); font-variant-numeric: tabular-nums; }
.dept h3 { font-size: 17px; }
.dept-system { font-size: 12.5px; color: var(--muted); margin-top: 4px; }
.dept-status { margin-top: 12px; font-size: 13px; font-weight: 600; display: flex; align-items: center; gap: 8px; }
.dot { width: 9px; height: 9px; border-radius: 50%; background: var(--amber); display: inline-block; flex-shrink: 0; }
.dot-1 { background: var(--ink); }
.dept-clock { font-size: 11.5px; color: var(--muted); margin-top: 3px; text-transform: uppercase; letter-spacing: .06em; }
.systems-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 22px; }
.systems-label { font-size: 11.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--amber-text); font-weight: 600; margin-right: 6px; }
.systems-row span:not(.systems-label) { border: 1px solid var(--line); border-radius: 999px; padding: 4px 11px; font-size: 12.5px; color: var(--muted); }
.stat-row { display: grid; grid-template-columns: repeat(3, auto); gap: 40px; justify-content: start; margin-top: 22px; }
.stat-row strong { font-size: 38px; letter-spacing: -.04em; font-weight: 700; line-height: 1; }
.stat-row p { font-size: 13.5px; color: var(--muted); margin-top: 6px; }
.problem .takeaway { margin-top: 18px; }

/* 03 Exposure */
.exposure h1 { font-size: 72px; letter-spacing: -.045em; }
.exposure .dek { font-size: 20px; max-width: 1000px; color: var(--text); }
.clocks { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; }
.clock-block { border-top: 2px solid var(--ink); padding-top: 14px; }
.clock-block.target { border-color: var(--amber); }
.clock-num { display: flex; align-items: baseline; gap: 12px; margin: 8px 0 12px; }
.clock-num strong { font-size: 92px; line-height: .95; letter-spacing: -.055em; font-weight: 700; }
.clock-block.target .clock-num strong { color: var(--amber-text); }
.clock-num span { font-size: 22px; color: var(--muted); font-weight: 500; }
.hbar { display: block; width: 100%; height: 26px; }
.bar-today .seg { fill: var(--ink); }
.bar-target .seg { fill: var(--amber); }
.clock-sub { font-size: 13.5px; color: var(--muted); margin-top: 10px; }
.equation { display: flex; flex-wrap: wrap; gap: 12px 26px; margin-top: 30px; font-size: 26px; font-weight: 600; letter-spacing: -.02em; }
.equation span:last-child { color: var(--amber-text); }
.exposure .takeaway { font-size: 18px; font-weight: 500; margin-top: 18px; color: var(--muted); }

/* 04 Model */
.model-grid { display: grid; grid-template-columns: 1fr 1.05fr 1fr; gap: 26px; align-items: start; }
.lane ol { display: grid; gap: 10px; margin-top: 12px; }
.lane li { display: grid; grid-template-columns: 26px 1fr; gap: 12px; align-items: start; padding: 10px 0 0; border-top: 1px solid var(--line); }
.lane h3 { font-size: 16.5px; }
.lane p { font-size: 13px; color: var(--muted); margin-top: 2px; }
.lane-right .lane-label { text-align: right; }
.core { background: var(--soft); padding: 20px 22px; border-top: 3px solid var(--amber); display: grid; gap: 16px; }
.core-record { display: flex; align-items: center; gap: 14px; }
.record-glyph, .file-glyph { display: inline-block; width: 30px; height: 38px; border: 2px solid var(--ink); border-radius: 3px; position: relative; background: white; flex-shrink: 0; }
.record-glyph::after, .file-glyph::after { content: ''; position: absolute; left: 6px; right: 6px; top: 9px; height: 3px; background: var(--amber); box-shadow: 0 7px 0 var(--ink), 0 14px 0 var(--ink); }
.file-glyph.amber { background: var(--amber); }
.core-record p { font-size: 13px; letter-spacing: .1em; text-transform: uppercase; font-weight: 700; }
.chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.chips span { border-radius: 999px; padding: 5px 11px; font-size: 12.5px; font-weight: 600; background: var(--ink); color: white; }
.humans .chips span { background: white; color: var(--ink); border: 1.5px solid var(--ink); }
.model .takeaway { margin-top: 20px; }

/* 05 Ownership */
.ownership-grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: 36px; align-items: start; }
.paths { display: grid; gap: 22px; }
.path-nodes { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 10px; position: relative; }
.path-node { padding: 12px 14px; border: 1px solid var(--line); min-height: 88px; display: grid; grid-template-columns: 30px 1fr; gap: 12px; align-items: start; background: white; }
.path-node p { font-size: 13.5px; font-weight: 500; line-height: 1.35; }
.path-node.rebuilt { color: var(--muted); }
.path-node.rebuilt .file-glyph { border-color: #A6A199; }
.path-node.rebuilt .file-glyph::after { background: #A6A199; box-shadow: 0 7px 0 #A6A199, 0 14px 0 #A6A199; }
.rovn-path .path-node { border-color: var(--amber); }
.record-card { border: 2px solid var(--ink); padding: 18px 20px; }
.record-title { font-size: 12px; letter-spacing: .1em; text-transform: uppercase; font-weight: 700; margin-bottom: 8px; }
.record-card > div { display: grid; grid-template-columns: 92px 1fr; gap: 12px; padding: 10px 0; border-top: 1px solid var(--line); font-size: 14px; }
.record-card > div span { color: var(--amber-text); font-weight: 600; }
.career-line { display: flex; flex-wrap: wrap; gap: 8px 22px; margin-top: 24px; padding-top: 14px; border-top: 1px solid var(--line); font-size: 15px; font-weight: 600; }
.career-line span + span::before { content: '→'; color: var(--amber-text); margin-right: 22px; font-weight: 400; }
.ownership .takeaway { margin-top: 14px; }

/* 06 Facility */
.facility-grid { display: grid; grid-template-columns: 1.35fr 1fr; gap: 36px; align-items: start; }
.layers { display: grid; gap: 10px; }
.layer { display: grid; grid-template-columns: 44px 190px 1fr; gap: 16px; align-items: start; padding: 12px 16px; border: 1px solid var(--line); }
.layer-index { font-size: 13px; font-weight: 700; color: var(--amber-text); }
.layer h3 { font-size: 17px; }
.layer p { font-size: 13.5px; color: var(--muted); line-height: 1.4; }
.layer-3 { background: var(--amber-tint); border-color: var(--amber); }
.layer-4 { background: var(--ink); color: white; border-color: var(--ink); }
.layer-4 p, .layer-4 .layer-index { color: #D9D5CD; }
.authority { display: grid; gap: 14px; }
.authority-box { padding: 16px 18px; border: 1px solid var(--line); }
.authority-box ul { display: grid; gap: 6px; margin-top: 10px; font-size: 14px; font-weight: 500; }
.agents-box li::before { content: '→ '; color: var(--amber-text); }
.humans-box { background: var(--soft); border-top: 3px solid var(--ink); }
.humans-box li::before { content: '■ '; color: var(--ink); font-size: 10px; }
.authority-note { margin-top: 12px; font-size: 13px; font-weight: 600; }

/* 07 Pilot */
.phases { display: grid; grid-template-columns: 1fr 1fr 180px; gap: 22px; align-items: stretch; }
.phase { border: 1px solid var(--line); padding: 18px 20px; }
.phase-01 { border-top: 4px solid var(--amber); }
.phase-02 { border-top: 4px solid var(--ink); }
.phase-head { display: grid; grid-template-columns: 44px 1fr auto; gap: 12px; align-items: start; }
.phase-number { font-size: 30px; font-weight: 700; letter-spacing: -.04em; color: var(--amber-text); line-height: 1; }
.phase-02 .phase-number { color: var(--ink); }
.phase-head h3 { font-size: 22px; }
.phase-outcome { font-size: 13px; color: var(--muted); margin-top: 3px; }
.phase-price { font-size: 13px; font-weight: 700; text-align: right; white-space: nowrap; }
.phase ul { margin-top: 14px; display: grid; gap: 7px; font-size: 14px; }
.phase li { padding-left: 16px; position: relative; }
.phase li::before { content: ''; position: absolute; left: 0; top: 8px; width: 7px; height: 7px; background: var(--amber); }
.phase-02 li::before { background: var(--ink); }
.phase-target { background: var(--ink); color: white; padding: 22px 20px; display: flex; flex-direction: column; justify-content: center; }
.phase-target strong { font-size: 44px; letter-spacing: -.045em; font-weight: 700; line-height: 1; color: var(--amber); }
.phase-target span { font-size: 13px; margin-top: 10px; color: #D9D5CD; }

/* 08 Supply */
.supply-grid { display: grid; grid-template-columns: 2.4fr 60px 1fr; gap: 20px; align-items: center; }
.doors { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.door { border: 1px solid var(--line); border-top: 3px solid var(--amber); padding: 16px 18px; min-height: 210px; }
.door-index { font-size: 13px; font-weight: 700; color: var(--amber-text); }
.door h3 { font-size: 19px; margin-top: 8px; }
.door p { font-size: 13.5px; color: var(--muted); margin-top: 10px; line-height: 1.4; }
.supply-arrow { height: 2px; background: var(--ink); position: relative; }
.supply-arrow::after { content: ''; position: absolute; right: -2px; top: -6px; border: 7px solid transparent; border-left: 10px solid var(--ink); }
.supply-result { background: var(--ink); color: white; padding: 22px 22px; min-height: 210px; display: flex; flex-direction: column; justify-content: center; gap: 12px; }
.supply-result h3 { font-size: 20px; }
.supply-result p { font-size: 13.5px; color: #D9D5CD; }
.supply-result .file-glyph { border-color: var(--amber); }

/* 09 Progress */
.metric-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px; }
.metric { border-top: 3px solid var(--amber); padding-top: 12px; }
.metric strong { font-size: 54px; letter-spacing: -.05em; font-weight: 700; line-height: 1; }
.metric p { font-size: 15px; font-weight: 600; margin-top: 10px; line-height: 1.3; }
.metric .metric-kind { display: block; margin-top: 8px; color: var(--muted); }
.progress-bottom { display: grid; grid-template-columns: 1fr 1.3fr; gap: 36px; margin-top: 26px; padding-top: 18px; border-top: 1px solid var(--line); }
.built-row { display: flex; gap: 30px; margin-top: 12px; }
.built-row strong { font-size: 32px; letter-spacing: -.04em; font-weight: 700; display: block; line-height: 1; }
.built-row span { font-size: 13px; color: var(--muted); }
.next ol { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 20px; margin-top: 12px; }
.next li { display: grid; grid-template-columns: 26px 1fr; gap: 10px; align-items: start; font-size: 14px; font-weight: 500; }
.progress .takeaway { margin-top: 16px; }

/* 10 Economics */
.economics h1 { font-size: 50px; }
.econ-grid { display: grid; gap: 22px; }
.econ-row { display: grid; grid-template-columns: 240px 1fr; gap: 24px; align-items: center; }
.econ-head strong { font-size: 52px; letter-spacing: -.05em; font-weight: 700; line-height: 1; display: block; }
.econ-row.rovn .econ-head strong { color: var(--amber-text); }
.econ-head span { font-size: 13px; color: var(--muted); display: block; margin-top: 6px; }
.econ-row .hbar { height: 52px; }
.bar-rovn .seg { fill: var(--amber); }
.legend { display: flex; flex-wrap: wrap; gap: 6px 22px; margin-top: 8px; font-size: 12.5px; grid-column: 2; }
.legend em { font-style: normal; color: var(--muted); margin-left: 6px; }
.units-row { display: flex; gap: 40px; margin-top: 22px; padding-top: 16px; border-top: 1px solid var(--line); }
.units-row strong { font-size: 24px; letter-spacing: -.03em; font-weight: 700; display: block; }
.units-row span { font-size: 12.5px; color: var(--muted); }
.econ-outside { margin-top: 14px; font-size: 13.5px; color: var(--muted); }
.economics .takeaway { margin-top: 10px; }

/* 11 Market */
.market-grid { display: grid; grid-template-columns: 340px 1fr; gap: 40px; align-items: center; }
.rings { width: 340px; height: 340px; display: block; }
.ring-legend { display: grid; gap: 14px; }
.ring-item { display: grid; grid-template-columns: 70px 130px 1fr; gap: 16px; align-items: start; padding-top: 12px; border-top: 1px solid var(--line); }
.ring-item strong { font-size: 32px; letter-spacing: -.04em; font-weight: 700; line-height: 1; }
.ring-item p { font-size: 13.5px; color: var(--muted); line-height: 1.4; }
.ring-3 strong { color: var(--amber-text); }
.context-row { display: flex; gap: 40px; margin-top: 22px; padding-top: 16px; border-top: 1px solid var(--line); }
.context-row strong { font-size: 24px; letter-spacing: -.03em; font-weight: 700; display: block; }
.context-row span { font-size: 12.5px; color: var(--muted); }
.market .takeaway { margin-top: 12px; }

/* 12 Competition */
.competition h1 { font-size: 42px; }
.comp-table { width: 100%; border-collapse: collapse; text-align: left; font-size: 14px; }
.comp-table thead th { font-size: 11.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--amber-text); font-weight: 600; padding: 0 16px 9px 0; }
.comp-table tbody th, .comp-table td { padding: 11px 18px 11px 0; border-top: 1px solid var(--line); vertical-align: top; line-height: 1.35; }
.comp-table tbody th { width: 17%; font-weight: 650; }
.comp-table td:nth-child(2) { width: 27%; color: var(--text); font-weight: 500; }
.comp-table td:last-child { color: var(--muted); }
.comp-table .rovn-row th, .comp-table .rovn-row td { background: var(--amber-tint); border-top: 2px solid var(--amber); color: var(--text); padding-left: 10px; }
.comp-table .rovn-row th { padding-left: 10px; }
.competition .takeaway { margin-top: 14px; }

/* 13 Moat */
.moat-grid { display: grid; grid-template-columns: 1.25fr 1fr; gap: 36px; align-items: start; }
.loop-nodes { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.loop-node { padding: 14px 16px; border: 1px solid var(--line); min-height: 150px; }
.loop-2 { background: var(--amber-tint); border-color: var(--amber); }
.loop-node h3 { font-size: 17px; margin-top: 10px; }
.loop-node p { font-size: 13px; color: var(--muted); margin-top: 8px; line-height: 1.4; }
.loop-return { margin-top: 10px; font-size: 12.5px; color: var(--amber-text); font-weight: 600; text-align: center; border-top: 2px dashed var(--amber); padding-top: 8px; }
.cannot ul { display: grid; gap: 8px; margin-top: 10px; }
.cannot li { display: grid; grid-template-columns: 170px 1fr; gap: 12px; font-size: 13.5px; padding-top: 8px; border-top: 1px solid var(--line); }
.cannot li strong { font-weight: 650; }
.cannot li span { color: var(--muted); }
.incumbents { display: flex; flex-wrap: wrap; gap: 10px 26px; align-items: baseline; margin-top: 18px; padding-top: 12px; border-top: 1px solid var(--line); font-size: 13px; }
.incumbents div strong { font-weight: 650; }
.incumbents div span { color: var(--muted); margin-left: 6px; }
.moat .takeaway { margin-top: 12px; }

/* 14 Team */
.team h1 { font-size: 44px; }
.team .dek { margin-bottom: 18px; color: var(--text); font-weight: 500; }
.founders { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; }
.founder { display: grid; grid-template-columns: 124px 1fr; gap: 18px; align-items: start; }
.founder-portrait { width: 124px; height: 150px; object-fit: cover; object-position: 50% 20%; display: block; }
.founder h3 { font-size: 21px; }
.founder .role { font-size: 11.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--amber-text); font-weight: 600; margin-top: 3px; }
.founder ul { margin-top: 10px; display: grid; gap: 5px; font-size: 13px; line-height: 1.35; }
.founder li { padding-left: 12px; position: relative; }
.founder li::before { content: ''; position: absolute; left: 0; top: 7px; width: 5px; height: 5px; background: var(--amber); }
.origin { margin-top: 16px; padding: 12px 16px; background: var(--soft); border-left: 3px solid var(--amber); font-size: 14px; font-weight: 500; }
.supporting { margin-top: 14px; }
.cap-groups { display: grid; grid-template-columns: 1.6fr 1fr 1fr; gap: 24px; margin-top: 8px; }
.cap-portraits { display: flex; gap: 6px; }
.cap-portrait { width: 44px; height: 52px; object-fit: cover; object-position: 50% 25%; display: block; border-radius: 3px; }
.cap-group h3 { font-size: 15px; margin-top: 8px; }
.cap-group p { font-size: 12.5px; color: var(--muted); margin-top: 4px; line-height: 1.35; }

/* 15 Unlock */
.unlock h1 { font-size: 44px; }
.outcomes { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; }
.outcome { border-top: 3px solid var(--amber); padding-top: 12px; }
.outcome strong { font-size: 60px; letter-spacing: -.055em; font-weight: 700; line-height: 1; color: var(--amber-text); display: block; }
.outcome h3 { font-size: 18px; margin-top: 8px; }
.outcome p { font-size: 13px; color: var(--muted); margin-top: 8px; line-height: 1.4; }
.gates { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; margin-top: 22px; }
.gate { background: var(--soft); padding: 14px 16px; border-top: 2px solid var(--ink); }
.gate h3 { font-size: 16.5px; margin-top: 6px; }
.gate p { font-size: 12.5px; color: var(--muted); margin-top: 6px; line-height: 1.4; }
.round-line { margin-top: 16px; font-size: 14px; font-weight: 600; }

/* 16 Funds */
.funds h1 { font-size: 42px; }
.funds .dek { margin-bottom: 18px; }
.funds-grid { display: grid; grid-template-columns: 1.55fr 1fr; gap: 36px; align-items: start; }
.fund-rows { display: grid; gap: 7px; }
.fund-row { display: grid; grid-template-columns: 230px 1fr 90px; gap: 14px; align-items: center; }
.fund-name h3 { font-size: 13.5px; }
.fund-name p { font-size: 11px; color: var(--muted); line-height: 1.3; }
.fund-bar { display: block; width: 100%; height: 26px; }
.fund-amount strong { font-size: 16px; font-weight: 700; display: block; }
.fund-amount span { font-size: 11.5px; color: var(--muted); }
.fund-phases { display: grid; gap: 10px; }
.fund-phase { display: grid; grid-template-columns: 100px 80px 1fr; gap: 12px; align-items: start; padding-top: 10px; border-top: 1px solid var(--line); }
.fund-phase strong { font-size: 20px; letter-spacing: -.03em; font-weight: 700; }
.fund-phase p { font-size: 12.5px; color: var(--muted); line-height: 1.35; }
.not-bought { margin-top: 16px; padding: 12px 14px; background: var(--soft); font-size: 12.5px; color: var(--muted); line-height: 1.4; }
.not-bought .mini-label { display: block; margin-bottom: 6px; }

/* 17 Closing */
.closing h1 { font-size: 60px; }
.closing .dek { font-size: 20px; color: var(--text); max-width: 900px; }
.closing-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; margin-top: 20px; align-items: start; }
.closing-contact { display: grid; gap: 12px; justify-items: start; }
.founder-email { font-size: 30px; font-weight: 700; letter-spacing: -.03em; text-decoration: none; }
.room-url { font-size: 20px; color: var(--amber-text); text-decoration: none; font-weight: 600; }
.book-link { display: inline-flex; align-items: center; gap: 10px; background: var(--amber); color: var(--ink); padding: 12px 20px; font-weight: 700; text-decoration: none; margin-top: 8px; }
.closing-links { display: grid; gap: 10px; }
.closing-links a { display: flex; justify-content: space-between; align-items: center; padding: 12px 0; border-top: 1px solid var(--line); text-decoration: none; font-weight: 600; font-size: 16px; }
.closing-links a span { color: var(--amber-text); }

/* Appendix */
.source-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 30px; }
.source-grid article { display: grid; grid-template-columns: 26px 1fr; gap: 10px; padding: 7px 0; border-top: 1px solid var(--line); }
.source-id { font-size: 12px; font-weight: 700; color: var(--amber-text); }
.source-grid h3 { font-size: 13px; }
.source-origin { font-size: 11.5px; color: var(--amber-text); font-weight: 600; margin-top: 1px; }
.source-grid p:not(.source-origin) { font-size: 11.5px; color: var(--muted); margin-top: 2px; line-height: 1.3; }
.source-grid a { display: block; font-size: 10.5px; color: var(--muted); overflow-wrap: anywhere; margin-top: 2px; }
.data-table { width: 100%; border-collapse: collapse; font-size: 13.5px; text-align: left; }
.data-table th { font-size: 11.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--amber-text); font-weight: 600; padding: 0 16px 8px 0; }
.data-table td { padding: 8px 16px 8px 0; border-top: 1px solid var(--line); vertical-align: top; line-height: 1.35; }
.data-table td:not(:first-child) { white-space: nowrap; font-variant-numeric: tabular-nums; }
.data-table tr:nth-last-child(2) td, .data-table tr:last-child td { font-weight: 650; }
.market_math .data-table td:not(:first-child) { white-space: normal; }
.market_math .data-table td:last-child { font-weight: 650; white-space: nowrap; }
.formula { margin-top: 14px; font-size: 13.5px; font-weight: 500; }
.assumptions { display: grid; gap: 5px; margin-top: 12px; font-size: 12.5px; color: var(--muted); }
.assumptions li::before { content: '— '; color: var(--amber-text); }
.sources .stage, .model_detail .stage, .market_math .stage { padding-bottom: 66px; }
.sources h1, .model_detail h1, .market_math h1 { font-size: 36px; }
.sources .dek, .model_detail .dek, .market_math .dek { font-size: 15px; margin: 8px 0 16px; }

/* Tablet */
@media screen and (min-width: 701px) and (max-width: 1150px) {
  .stage { min-height: 0; padding: 26px 34px 90px; }
  .slide h1 { font-size: 36px; }
  .cover h1 { font-size: 42px; margin-top: 20px; }
  .exposure h1 { font-size: 52px; }
  .cover .slide-content { min-height: 0; grid-template-columns: 1fr 1fr; gap: 0 30px; }
  .dept-grid { grid-template-columns: repeat(3, 1fr); }
  .founders { grid-template-columns: 1fr; }
  .market-grid { grid-template-columns: 280px 1fr; }
  .rings { width: 280px; height: 280px; }
  .funds-grid, .moat-grid, .facility-grid, .ownership-grid { grid-template-columns: 1fr; }
  .phases { grid-template-columns: 1fr 1fr; }
  .phase-target { grid-column: 1 / -1; flex-direction: row; align-items: center; gap: 18px; }
  .supply-grid { grid-template-columns: 1fr; }
  .supply-arrow { display: none; }
  .clock-num strong { font-size: 70px; }
}

/* Phone */
@media screen and (max-width: 700px) {
  html { scroll-padding-top: calc(var(--toolbar-height) + 10px); }
  body { font-size: 16px; }
  .deck-controls { flex-wrap: wrap; gap: 10px; padding: 10px 14px; }
  .room-link { flex: 1 1 100%; font-size: 18px; }
  .navigation { flex: 1 1 auto; }
  .deck-controls select { max-width: none; flex: 1 1 120px; min-width: 0; }
  .deck-actions { margin-left: auto; }
  .publication-provenance { padding: 0 14px; font-size: 11px; }
  .slides { padding: 12px 10px 30px; gap: 18px; }
  .stage { min-height: 0; padding: 20px 18px 84px; }
  .slide-top { grid-template-columns: 1fr auto; gap: 10px; margin-bottom: 18px; }
  .slide-top .slide-number { grid-column: 2; grid-row: 1; }
  .slide-top > span:not(.slide-number) { grid-column: 1 / -1; grid-row: 2; font-size: 11px; }
  .slide h1 { font-size: 28px; letter-spacing: -.03em; }
  .slide .dek { font-size: 16px; margin: 10px 0 18px; }
  .slide-body { font-size: 15px; }
  .slide h3 { font-size: 17px; }
  .slide footer { position: static; margin-top: 22px; flex-direction: column; align-items: flex-start; gap: 6px; font-size: 11.5px; }
  .stage { padding-bottom: 20px; }
  .takeaway { font-size: 18px; margin-top: 18px; }
  .takeaway.smaller { font-size: 15.5px; }
  .cover .slide-content { display: block; min-height: 0; }
  .cover h1 { font-size: 34px; margin-top: 0; }
  .cover .dek { font-size: 17px; margin: 14px 0 18px; }
  .cover-panel { min-height: 0; padding: 22px 20px; }
  .cover-mark { width: 60%; max-width: 240px; margin: 14px 0 18px; }
  .cover-mantra { font-size: 15px; }
  .cover-round strong { font-size: 32px; }
  .dept-grid { grid-template-columns: 1fr 1fr; gap: 12px; }
  .stat-row { grid-template-columns: 1fr; gap: 14px; }
  .stat-row strong { font-size: 30px; }
  .exposure h1 { font-size: 44px; }
  .exposure .dek { font-size: 16px; }
  .clocks { grid-template-columns: 1fr; gap: 22px; }
  .clock-num strong { font-size: 64px; }
  .equation { font-size: 20px; gap: 6px 14px; }
  .model-grid { grid-template-columns: 1fr; gap: 18px; }
  .lane-right .lane-label { text-align: left; }
  .ownership-grid, .facility-grid, .moat-grid, .funds-grid, .progress-bottom, .closing-grid { grid-template-columns: 1fr; gap: 20px; }
  .path-nodes { grid-template-columns: 1fr; gap: 8px; }
  .path-node { min-height: 0; }
  .career-line { font-size: 14px; gap: 6px 14px; }
  .career-line span + span::before { margin-right: 14px; }
  .layer { grid-template-columns: 34px 1fr; }
  .layer p { grid-column: 1 / -1; }
  .phases { grid-template-columns: 1fr; }
  .phase-head { grid-template-columns: 40px 1fr; }
  .phase-price { grid-column: 1 / -1; text-align: left; }
  .phase-target { flex-direction: row; align-items: center; gap: 16px; }
  .supply-grid { grid-template-columns: 1fr; }
  .doors { grid-template-columns: 1fr; }
  .door, .supply-result { min-height: 0; }
  .supply-arrow { display: none; }
  .metric-grid { grid-template-columns: 1fr 1fr; gap: 16px; }
  .metric strong { font-size: 40px; }
  .built-row { flex-wrap: wrap; gap: 18px; }
  .next ol { grid-template-columns: 1fr; }
  .economics h1 { font-size: 30px; }
  .econ-row { grid-template-columns: 1fr; gap: 8px; }
  .legend { grid-column: 1; }
  .econ-head strong { font-size: 40px; }
  .units-row, .context-row { flex-wrap: wrap; gap: 14px 24px; }
  .market-grid { grid-template-columns: 1fr; gap: 20px; }
  .rings { width: min(100%, 320px); height: auto; margin: auto; }
  .ring-item { grid-template-columns: 60px 1fr; }
  .ring-item p { grid-column: 1 / -1; }
  .comp-table thead { display: none; }
  .comp-table, .comp-table tbody, .comp-table tr, .comp-table th, .comp-table td { display: block; width: auto; }
  .comp-table tr { border-top: 1px solid var(--line); padding: 12px 0; }
  .comp-table tbody th, .comp-table td { border: 0; padding: 3px 0; }
  .comp-table td::before { content: attr(data-label); display: block; font-size: 10.5px; letter-spacing: .08em; text-transform: uppercase; color: var(--amber-text); font-weight: 600; margin-top: 8px; }
  .comp-table .rovn-row th, .comp-table .rovn-row td { padding-left: 10px; padding-right: 10px; border: 0; }
  .comp-table .rovn-row { background: var(--amber-tint); border-top: 2px solid var(--amber); padding: 10px 0; }
  .loop-nodes { grid-template-columns: 1fr; }
  .loop-node { min-height: 0; }
  .cannot li { grid-template-columns: 1fr; gap: 2px; }
  .founders { grid-template-columns: 1fr; gap: 22px; }
  .founder { grid-template-columns: 96px 1fr; gap: 14px; }
  .founder-portrait { width: 96px; height: 116px; }
  .founder ul { font-size: 13.5px; }
  .cap-groups { grid-template-columns: 1fr; gap: 16px; }
  .outcomes, .gates { grid-template-columns: 1fr; gap: 16px; }
  .outcome strong { font-size: 48px; }
  .fund-row { grid-template-columns: 1fr 80px; gap: 6px 14px; }
  .fund-bar { grid-column: 1 / -1; }
  .fund-phase { grid-template-columns: 1fr; gap: 4px; }
  .closing h1 { font-size: 36px; }
  .closing .dek { font-size: 16px; }
  .founder-email { font-size: 22px; overflow-wrap: anywhere; }
  .source-grid { grid-template-columns: 1fr; }
  .data-table thead { display: none; }
  .data-table, .data-table tbody, .data-table tr, .data-table td { display: block; width: auto; }
  .data-table tr { border-top: 1px solid var(--line); padding: 10px 0; }
  .data-table td { border: 0; padding: 2px 0; white-space: normal !important; }
  .data-table td::before { content: attr(data-label); display: block; font-size: 10.5px; letter-spacing: .08em; text-transform: uppercase; color: var(--amber-text); font-weight: 600; margin-top: 6px; }
  .sources h1, .model_detail h1, .market_math h1 { font-size: 26px; }
}
@media screen and (max-width: 360px) {
  .stage { padding: 18px 14px 20px; }
  .slide h1 { font-size: 25px; }
  .cover h1 { font-size: 30px; }
  .exposure h1 { font-size: 38px; }
  .clock-num strong { font-size: 54px; }
  .dept-grid { grid-template-columns: 1fr; }
  .metric-grid { grid-template-columns: 1fr; }
  .founder { grid-template-columns: 1fr; }
  .founder-portrait { width: 120px; height: 140px; }
}
@media (prefers-reduced-motion: reduce) { * { scroll-behavior: auto !important; } }


/* Density pass after the first 1280x720 export */
.problem h1 { font-size: 44px; }
.dept h3 { font-size: 16px; } .dept-status { margin-top: 8px; } .dept-system { font-size: 12px; }
.systems-row { margin-top: 14px; } .stat-row { margin-top: 16px; } .stat-row strong { font-size: 34px; } .problem .takeaway { margin-top: 12px; }
.facility .dek { margin-bottom: 18px; } .layer { padding: 10px 14px; } .layer p { font-size: 13px; } .authority-box ul { font-size: 13.5px; }
.agents-box ul { grid-template-columns: 1fr 1fr; } .facility .takeaway { margin-top: 14px; }
.econ-grid { gap: 14px; } .econ-row .hbar { height: 44px; } .econ-head strong { font-size: 44px; } .units-row { margin-top: 14px; padding-top: 12px; } .econ-outside { margin-top: 8px; font-size: 13px; } .economics .takeaway { margin-top: 6px; }
.market-grid { grid-template-columns: 290px 1fr; gap: 32px; } .rings { width: 290px; height: 290px; } .ring-item strong { font-size: 28px; } .ring-item { padding-top: 9px; gap: 12px; } .ring-legend { gap: 10px; } .context-row { margin-top: 14px; padding-top: 12px; } .market .takeaway { margin-top: 8px; }
.team .dek { margin-bottom: 14px; } .founder ul { font-size: 12.5px; gap: 4px; } .founder-portrait { width: 116px; height: 138px; } .founder { grid-template-columns: 116px 1fr; }
.origin { margin-top: 12px; padding: 9px 14px; font-size: 13.5px; } .supporting { margin-top: 10px; } .cap-portrait { width: 40px; height: 48px; } .cap-group p { font-size: 12px; }
.funds .dek { margin-bottom: 12px; } .fund-rows { gap: 5px; } .fund-row { grid-template-columns: 290px 1fr 80px; gap: 12px; } .fund-name h3 { font-size: 13px; } .fund-name p { font-size: 10.5px; line-height: 1.25; }
.fund-bar { height: 22px; } .fund-amount strong { font-size: 15px; } .fund-phase strong { font-size: 18px; } .not-bought { margin-top: 12px; font-size: 12px; }
.source-grid { gap: 4px 28px; } .source-grid article { padding: 5px 0; } .source-grid h3 { font-size: 12.5px; } .source-origin { font-size: 11px; }
.source-grid p:not(.source-origin) { font-size: 11px; line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.source-grid a { font-size: 10px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.data-table { font-size: 13px; } .data-table td { padding: 6px 14px 6px 0; } .model_detail .formula { margin-top: 10px; } .model_detail .takeaway { margin-top: 8px; }
@media screen and (max-width: 700px) { .source-grid p:not(.source-origin) { display: block; } .source-grid a { white-space: normal; overflow-wrap: anywhere; } .agents-box ul { grid-template-columns: 1fr; } .fund-row { grid-template-columns: 1fr 80px; } .market-grid { grid-template-columns: 1fr; } .rings { width: min(100%, 300px); height: auto; } .founder { grid-template-columns: 96px 1fr; } .founder-portrait { width: 96px; height: 116px; } }

/* Fit pass three: fixed 1280x720 page */
.layers { gap: 8px; } .facility .dek { margin-bottom: 14px; } .facility .takeaway { margin-top: 10px; } .authority { gap: 10px; } .authority-box { padding: 13px 16px; }
.econ-grid { gap: 12px; } .units-row { margin-top: 12px; padding-top: 10px; } .economics .dek { margin-bottom: 20px; }
.market-grid { grid-template-columns: 270px 1fr; gap: 30px; } .rings { width: 270px; height: 270px; } .ring-legend { gap: 8px; } .ring-item { padding-top: 8px; } .context-row { margin-top: 12px; padding-top: 10px; } .market .dek { margin-bottom: 20px; }
.origin { margin-top: 10px; padding: 8px 14px; } .cap-groups { margin-top: 6px; } .founder ul { gap: 3px; } .team .dek { margin-bottom: 12px; }
.fund-rows { gap: 4px; } .fund-bar { height: 20px; } .fund-name p { font-size: 10px; }
.sources h1 { font-size: 32px; } .sources .dek { margin: 6px 0 12px; font-size: 14px; }
.source-grid { gap: 2px 26px; } .source-grid article { padding: 4px 0; grid-template-columns: 22px 1fr; gap: 8px; }
.source-grid h3 { font-size: 12px; } .source-origin { font-size: 10.5px; margin-top: 0; } .source-grid p:not(.source-origin) { font-size: 10.5px; line-height: 1.25; -webkit-line-clamp: 1; } .source-grid a { font-size: 9.5px; margin-top: 1px; }
.source-grid a[href^="https://investors.rovn.to"] { display: none; }

/* Final mobile overrides (must follow every density rule) */
@media screen and (max-width: 700px) { .market-grid { grid-template-columns: 1fr; gap: 18px; } .rings { width: min(100%, 300px); height: auto; margin: auto; } .ring-item { grid-template-columns: 60px 1fr; } .founder { grid-template-columns: 96px 1fr; } .founder-portrait { width: 96px; height: 116px; } .fund-row { grid-template-columns: 1fr 80px; } .agents-box ul { grid-template-columns: 1fr; } }

/* Fit pass four: nowrap links must not widen grid columns; three slides need a few pixels */
.source-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.source-grid article { grid-template-columns: 22px minmax(0, 1fr); }
.source-grid article > div { min-width: 0; }
.econ-grid { gap: 10px; } .units-row { margin-top: 10px; }
.rings { width: 260px; height: 260px; } .market-grid { grid-template-columns: 260px 1fr; }
.founder ul { font-size: 12px; } .origin { margin-top: 8px; }
@media screen and (max-width: 700px) { .market-grid { grid-template-columns: 1fr; } .rings { width: min(100%, 300px); height: auto; } }

/* Fit pass five: longer verified wording */
.comp-table { font-size: 13px; } .comp-table tbody th, .comp-table td { padding: 8px 16px 8px 0; } .competition .dek { margin-bottom: 18px; } .competition .takeaway { margin-top: 10px; }
.source-grid article { padding: 3px 0; } .sources .dek { margin: 4px 0 10px; }
.market_math .data-table { font-size: 12.5px; } .market_math .data-table td { padding: 5px 12px 5px 0; line-height: 1.3; } .market_math .assumptions { margin-top: 8px; gap: 3px; font-size: 12px; } .market_math .formula { margin-top: 8px; font-size: 12.5px; } .market_math .dek { margin: 8px 0 12px; }
@media screen and (max-width: 1150px) { .data-table td:not(:first-child) { white-space: normal; } .market_math .data-table td:last-child { white-space: normal; } .comp-table tbody th { width: 22%; } .comp-table td:nth-child(2) { width: 26%; } .clock-num strong { font-size: 64px; } .equation { font-size: 22px; } }

/* Fit pass six: tablet grids must be allowed to shrink */
.phases { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) 180px; } .phase { min-width: 0; }
@media screen and (max-width: 1150px) { .phases { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } .phase-head { grid-template-columns: 40px 1fr; } .phase-price { grid-column: 1 / -1; text-align: left; white-space: normal; } .data-table, .comp-table { table-layout: fixed; width: 100%; } .data-table td, .comp-table td, .comp-table th { overflow-wrap: anywhere; } }
