/* Sheet-driven presentation layouts. The established canvas and runtime stay intact. */
.page:has(.revamp) { background: #111114; color: #F0EDE6; }
.page:has(.revamp) h1 { color: #F0EDE6; max-width: 1660px; }
.revamp { font-weight: 500; }
.revamp figure { margin: 0; min-width: 0; }
.revamp figcaption { font-size: 23px; line-height: 1.4; margin-top: 14px; }
.revamp figcaption span { display: block; margin-top: 8px; }
.page .source-note { font-size: 21px; line-height: 1.45; color: var(--orba-text-muted); margin: 12px 0 28px; }
.revamp .eyebrow { display: block; color: var(--orba-cool); font-size: 19px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.revamp p { margin: 12px 0; }
.problem-layout { display: grid; gap: 28px; margin-top: 24px; }
/* Deck story */
.page .problem-layout .problem-media img { height: 360px; }
.problem-media { display: grid; grid-template-columns: repeat(3,1fr); gap: 32px; }
.page .report-figure img { height: 440px; width: 100%; object-fit: cover; object-position: left top; margin: 0; border: 0; }
.page .problem-media .lonely-photo, .page .problem-media .ai-cartoon { display: block; height: 440px; width: 100%; object-fit: contain; margin: 0; border: 0; border-radius: 14px; background: rgba(147,197,253,.035); }
.page .problem-media .lonely-photo { object-fit: cover; }
.image-placeholder { min-height: 190px; background: rgba(147,197,253,.035); border: 1px dashed rgba(147,197,253,.35); border-radius: 14px; padding: 28px; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; gap: 20px; }
.image-placeholder span { font-size: 26px; line-height: 1.3; max-width: 350px; }
.image-placeholder small { color: var(--orba-text-muted); font-size: 18px; }
.solution-elements { display: grid; grid-template-columns: repeat(4,1fr); gap: 24px 28px; }
.solution-element { display: flex; gap: 20px; padding-top: 16px; border-top: 1px solid var(--orba-ring-2); }
.step-number { color: var(--orba-cool); font-size: 20px; padding-top: 6px; }
.page .solution-element h3 { font-size: 28px; line-height: 1.2; margin: 0 0 12px; }
.solution-element p { font-size: 23px; line-height: 1.4; }
.solution-element small { color: var(--tbd-ink); font-size: 19px; }
.blood-draw-frame { height: 340px; overflow: hidden; display: flex; justify-content: center; border-radius: 14px; background: rgba(147,197,253,.035); }
.page .blood-draw-frame img { width: 340px; height: auto; max-height: none; object-fit: contain; align-self: flex-start; margin-top: -110px; border-radius: 0; }
.product-layout { display: grid; gap: 28px; }
.journey-screens { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 32px; }
.screenshot-stage { height: 380px; background: rgba(147,197,253,.03); border: 1px solid var(--orba-ring-2); border-radius: 14px; overflow: hidden; }
.page .screenshot-stage img { height: 100%; width: 100%; object-fit: contain; margin: 0; border: 0; border-radius: 0; }
.revenue-lines { display: grid; grid-template-columns: 1.15fr 1fr 1fr; gap: 40px; margin: 24px 0 18px; }
.page .revenue-lines h2 { margin: 8px 0; font-size: 32px; }
.revenue-lines p { font-size: 23px; }
.revenue-media { display: grid; grid-template-columns: 1.15fr 1fr 1fr; gap: 40px; margin-top: 24px; }
.revenue-media .image-placeholder { height: 200px; }
.page .revenue-media img { display: block; width: 100%; height: 200px; object-fit: cover; object-position: center; margin: 0; border: 0; border-radius: 14px; }
.revenue-media figcaption { font-size: 20px; }
.health-journey { width: 100%; height: 220px; color: #F0EDE6; font: 20px Satoshi, sans-serif; }
.page .revenue-media .source-note { font-size: 17px; margin: 0; }
.revenue-details { display: grid; grid-template-columns: 1.1fr 1fr; gap: 52px; border-top: 1px solid var(--orba-line); padding-top: 14px; font-size: 20px; line-height: 1.35; }
.page .revenue-details h3 { margin: 6px 0 12px; font-size: 26px; }
.page .revenue-details table { font-size: 23px; margin: 10px 0 14px; }
.page .revenue-details td { padding: 8px 10px; }
.page .revenue-details th { font-size: 15px; padding: 8px 10px; }
.working-model dl { display: grid; grid-template-columns: 150px 1fr; gap: 14px 20px; margin: 0; }
.working-model dt { color: var(--orba-cool); }
.working-model dd { margin: 0; }
.page .roadmap-layout h2 { margin: 16px 0 12px; font-size: 28px; }
.roadmap-intro { display: flex; gap: 32px; align-items: baseline; }
.roadmap-intro h2 { flex: 0 0 180px; }
.roadmap-intro p { font-size: 22px; line-height: 1.45; }
.roadmap-target { float: right; font-size: 22px; font-weight: 500; }
.roadmap-columns { display: grid; grid-template-columns: 1.75fr 1fr; gap: 36px; }
.gantt { display: grid; grid-template-columns: 330px 1fr; font-size: 19px; margin-top: 6px; }
.gantt-years { display: grid; grid-template-columns: 9fr 12fr 12fr; color: var(--orba-cool); font-size: 22px; border-bottom: 1px solid var(--orba-line); padding-bottom: 8px; }
.gantt-axis, .gantt-track { display: grid; grid-template-columns: repeat(33,minmax(0,1fr)); }
.gantt-axis { font-size: 13px; text-align: center; padding: 6px 0; }
.gantt-label { min-height: 29px; display: flex; align-items: center; line-height: 1.15; padding-right: 8px; border-bottom: 1px solid var(--orba-ring-1); }
.gantt-label small { font-size: 13px; margin-left: 5px; }
.gantt-track { min-height: 29px; align-items: center; border-bottom: 1px solid var(--orba-ring-1); background: repeating-linear-gradient(to right,transparent 0,transparent calc(100% / 33 - 1px),rgba(243,229,217,.07) calc(100% / 33 - 1px),rgba(243,229,217,.07) calc(100% / 33)); }
.gantt-mark { grid-column: var(--start) / span var(--span); height: 12px; border-radius: 3px; background: var(--orba-cool); margin: 0 2px; }
.gantt-mark.milestone { border-radius: 50%; width: 10px; height: 10px; justify-self: center; background: #6EE7B7; margin: 0; }
.gantt-mark.uncertain { background: transparent; border: 1px dashed var(--tbd-ink); }
.gantt-undated { grid-column: 1 / -1; color: var(--orba-text-muted); font-size: 15px; padding-left: 10px; }
.gantt-undated.uncertain { border: 1px dashed var(--tbd-ink); border-radius: 3px; margin: 3px; color: var(--tbd-ink); }
.uncertain-label { color: var(--tbd-ink); }
.revamp .gantt-key { font-size: 17px; margin-top: 12px; color: var(--orba-text-muted); }
.page .roadmap-phases h3 { font-size: 25px; margin: 8px 0; color: var(--orba-cool); }
.roadmap-phases p { font-size: 20px; line-height: 1.4; margin: 6px 0 10px; }
.roadmap-phases section+section { border-top: 1px solid var(--orba-ring-2); padding-top: 8px; }
.revamp .roadmap-benchmark { border-top: 1px solid var(--orba-line); padding-top: 16px; margin-top: 16px; font-size: 20px; line-height: 1.4; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

.page:has(.roadmap-layout) { padding: 48px 72px 28px; }
.page:has(.roadmap-layout) h1 { margin-bottom: 12px; }
.health-journey text:not([fill]) { fill: currentColor; }

/* Frozen thirteen: growth, people, shipped work, finances and the ask. */
.revamp .data-pending { color: var(--tbd-ink); }
/* Growth: the three numbers in a row, then all seven images as one strip (2 : 3 : 2 so every portrait still is the same width). */
.growth-strip { display: grid; grid-template-columns: 2fr 3fr 2fr; column-gap: 12px; margin-top: 30px; }
.growth-kpi { min-width: 0; border-top: 1px solid var(--orba-line); padding-top: 22px; }
.growth-kpi + .growth-kpi { margin-left: 24px; }
.page .growth-number { display: block; font-size: 112px; line-height: 1.12; margin: 18px 0 0; color: var(--orba-cool); letter-spacing: -.04em; }
.page .growth-number.data-pending { color: var(--tbd-ink); }
.growth-unit { font-size: 25px; margin-top: 0 !important; }
.growth-media { min-width: 0; margin: 30px 0 0; }
.page .growth-media img { display: block; height: 556px; width: 100%; object-fit: cover; object-position: center top; margin: 0; border: 0; border-radius: 7px; }
.page .growth-media img[src*="jeeja"] { object-position: 45% top; }
.growth-interviews { display: grid; grid-template-columns: repeat(3,1fr); gap: 12px; }
.growth-media figcaption { margin-top: 10px; font-size: 18px; line-height: 1.3; color: var(--orba-text-muted); }
.growth-media figcaption b { color: var(--orba-text); font-size: 22px; }
.growth-cadence { display: flex; flex-direction: column; align-items: center; gap: 4px; margin-top: 56px; font-size: 30px; }
.growth-cadence span[aria-hidden] { color: var(--orba-cool); font-size: 26px; }
.team-layout { margin-top: 12px; }
.founder-grid { display: grid; grid-template-columns: repeat(12,minmax(0,1fr)); column-gap: 40px; row-gap: 6px; }
.founder { grid-column: span 3; grid-row: 1 / span 3; display: grid; grid-template-rows: subgrid; min-width: 0; }
.founder-heading { display: grid; grid-template-rows: 280px auto; gap: 14px; align-content: start; }
.page .founder-heading img { width: 100%; height: 280px; margin: 0; object-fit: cover; border-radius: 14px; }
/* The square sources have headroom that a centred wide crop cuts off: set each face's crop by hand (#2565). */
.page .founder-heading img[src*="anton"] { object-position: 50% 35%; }
.page .founder-heading img[src*="zeth"] { object-position: 50% 10%; }
.page .founder-heading img[src*="daniel"] { object-position: 50% 15%; }
.page .founder-heading h2 { min-height: 65px; font-size: 28px; line-height: 1.15; margin: 0 0 8px; }
.founder-heading a, .team-member a { color: var(--orba-cool); text-decoration: none; }
.founder-heading a:hover, .team-member a:hover { text-decoration: underline; }
.founder-role { font-size: 22px; line-height: 1.25; margin: 0 !important; color: var(--orba-text-muted); }
.founder .eyebrow { font-size: 16px; color: var(--orba-text-muted); }
.founder-personal .eyebrow { color: var(--orba-cool); }
.page .founder ul { list-style: none; margin: 6px 0 0; padding: 0; font-size: 20px; line-height: 1.25; }
.page .founder li { position: relative; margin: 0 0 6px; padding: 0 0 0 22px; }
.page .founder li::before { content: ""; position: absolute; left: 2px; top: .52em; width: 8px; height: 8px; border-radius: 50%; background: var(--orba-accent); }
.founder-personal { border-top: 1px solid var(--orba-ring-2); padding-top: 10px; }
/* A4 (#2693): one flat row of four members; the Joined / In talks groups and their labels are gone. */
.team-members-layout { margin-top: 48px; }
.team-members-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); column-gap: 40px; row-gap: 20px; }
.team-member { grid-row: 1 / span 4; display: grid; grid-template-rows: subgrid; min-width: 0; }
.page .team-member img { width: 208px; height: 208px; max-width: 100%; object-fit: cover; margin: 0; border-radius: 0; }
.page .team-member h2 { min-height: 68px; font-size: 28px; line-height: 1.2; margin: 0; }
.page .team-member-role { font-size: 23px; line-height: 1.3; margin: 0; color: var(--orba-text-muted); }
.page .team-member ul { list-style: none; padding: 16px 0 0; margin: 0; border-top: 1px solid var(--orba-ring-2); font-size: 22px; line-height: 1.35; }
.page .team-member li { margin: 0 0 16px; }
.page .founder-heading .linkedin-icon, .page .team-member .linkedin-icon { color: currentColor; margin-left: 4px; }
.financial-layout { margin-top: 36px; }
.financial-stats { display: grid; grid-template-columns: repeat(4,1fr); gap: 30px; }
.financial-stats>div { border-top: 1px solid var(--orba-line); padding-top: 18px; }
.page .financial-stats strong { display: block; font-size: 68px; line-height: 1.2; letter-spacing: -.03em; color: var(--orba-cool); }
.financial-stats span { display: block; font-size: 26px; margin-top: 6px; }
.financial-stats small { display: block; font-size: 18px; color: var(--orba-text-muted); margin-top: 10px; }
.financial-columns { display: grid; grid-template-columns: 2.1fr 1fr; gap: 64px; margin-top: 32px; }
.page .funds-plan h2 { margin: 0; font-size: 34px; }
.page .funds-plan .source-note { font-size: 22px; margin: 8px 0 20px; }
.page .funds-plan table { font-size: 26px; line-height: 1.3; }
.page .funds-plan td { padding: 12px 16px; }
.funds-plan td p { font-size: 21px; color: var(--orba-text-muted); margin: 8px 0 0; }
.funds-plan td:nth-child(2), .funds-plan td:nth-child(3) { white-space: nowrap; }
.allocation-note { font-size: 22px; line-height: 1.4; margin-top: 22px !important; }
.runway-plan { border-left: 1px solid var(--orba-line); padding-left: 36px; }
.runway-plan section { margin-bottom: 32px; }
.runway-plan strong { display: block; font-size: 52px; line-height: 1.2; margin: 12px 0; }
.runway-plan p { font-size: 24px; line-height: 1.4; }
.page .runway-plan .source-note { font-size: 20px; }
.opportunity-layout { margin-top: 26px; }
.opportunity-columns { display: grid; grid-template-columns: 1.05fr 1fr; gap: 50px; margin-top: 24px; }
.page .opportunity-columns h2 { margin: 0 0 12px; font-size: 30px; }
.page .opportunity-columns table { margin: 12px 0; font-size: 21px; line-height: 1.3; }
.page .opportunity-columns td { padding: 12px 10px; }
.page .opportunity-columns th { font-size: 13px; padding: 8px 10px; }
.comparable-businesses td:first-child { width: 190px; }
.comparable-businesses td small { display: block; font-size: 16px; color: var(--orba-text-muted); margin-top: 5px; }
.opportunity-layout a { color: var(--orba-cool); }
.market-case>p { font-size: 21px; line-height: 1.35; margin: 8px 0; }
.market-case .market-caveat { font-size: 18px; color: var(--orba-text-muted); }
/* Competitor landscape */
.landscape-layout { margin-top: 12px; }
.landscape-columns { display: grid; grid-template-columns: 960px 1fr; gap: 56px; align-items: center; }
.landscape-map svg { display: block; width: 960px; height: 720px; font-family: Satoshi, sans-serif; }
.landscape-map .axis { fill: rgba(243,229,217,.72); font-size: 19px; font-weight: 700; letter-spacing: .04em; }
.landscape-map .dot circle { fill: #93C5FD; }
.landscape-map .dot text { fill: #F0EDE6; font-size: 22px; font-weight: 500; }
.landscape-map .dot.orba circle { fill: #FF6A2A; }
.landscape-map .dot.orba text { font-size: 34px; font-weight: 700; }
.landscape-map .cluster { fill: rgba(255,106,42,.06); stroke: rgba(255,106,42,.55); stroke-dasharray: 6 8; }
.landscape-map .cluster-label { fill: #FF6A2A; font-size: 19px; font-weight: 700; letter-spacing: .04em; }
.page .landscape-matrix table { margin: 0; font-size: 28px; line-height: 1.25; }
.page .landscape-matrix th { font-size: 14px; padding: 8px 10px; }
.page .landscape-matrix td { padding: 18px 10px; }
.landscape-matrix td:nth-child(2) { font-variant-numeric: tabular-nums; }
.landscape-matrix td:nth-child(3), .landscape-matrix th:nth-child(3) { text-align: center; width: 150px; }
.landscape-matrix td.no { color: var(--orba-accent); font-weight: 700; }
.landscape-matrix .orba-row td { background: rgba(255,106,42,.12); }
.market-context { border-top: 1px solid var(--orba-ring-2); padding-top: 14px; margin-top: 18px; }
.market-context .eyebrow { font-size: 16px; }
.market-context p { font-size: 20px; line-height: 1.5; margin: 8px 0; }
.market-context small { display: block; font-size: 16px; color: var(--orba-text-muted); }
.founder-commitment { border-top: 1px solid var(--orba-line); padding-top: 18px; margin-top: 24px !important; font-size: 24px; }

/* Cover: brand first, one contact. */
.cover-layout { height: 100%; display: flex; flex-direction: column; }
.cover-content { flex: 1; display: flex; flex-direction: column; justify-content: center; padding-bottom: 60px; }
.cover-brand { display: flex; align-items: center; gap: 36px; }
.cover-brand svg { flex: none; color: var(--orba-text); }
.page .cover-brand h1 { margin: 0; font-size: 164px; line-height: 1.05; letter-spacing: -.045em; }
.page .cover-content h2 { margin: 48px 0 24px; font-size: 62px; line-height: 1.15; font-weight: 500; }
.page .cover-product { margin: 0; font-size: 28px; line-height: 1.5; color: var(--orba-text-muted); }
.page .cover-meta { margin: 0; padding-top: 28px; border-top: 1px solid var(--orba-line); font-size: 25px; line-height: 1.5; color: var(--orba-text-muted); }
.cover-meta a { color: inherit; text-decoration: none; }
.cover-meta a:hover { text-decoration: underline; }

/* Deck business */
.revenue-simple { display: grid; grid-template-columns: 1.15fr 1fr 1fr; gap: 48px; margin-top: 36px; }
.revenue-line { min-width: 0; border-top: 1px solid var(--orba-line); padding-top: 22px; }
.page .revenue-line h2 { margin: 10px 0; font-size: 38px; }
.revenue-line>p { min-height: 108px; font-size: 26px; line-height: 1.4; }
.revenue-line figure { margin: 18px 0 0; }
.page .revenue-line img, .revenue-line .health-journey { display: block; width: 100%; height: 330px; object-fit: cover; margin: 0; border: 0; border-radius: 14px; }
.revenue-line figcaption { margin-top: 12px; font-size: 20px; line-height: 1.3; color: var(--orba-text-muted); }
.revenue-today { grid-column: 1 / -1; border-top: 1px solid var(--orba-line); padding-top: 20px; font-size: 26px; line-height: 1.45; }
.revenue-today p { margin: 0 0 10px; }
.page .growth-media .growth-event-room { object-position: 58% center; }
.growth-media a { display: block; }
.page .funds-plan td { padding: 7px 16px; }
.funds-plan td p { margin-top: 2px; }
.page .funds-plan .source-note { margin-bottom: 12px; }
.runway-plan strong small { font-size: 26px; font-weight: 400; }
.growth-interviews-two { grid-template-columns: repeat(2,1fr); }
.page .revenue-line h2 span { margin-right: 14px; color: var(--orba-cool); font-size: 21px; font-weight: 500; vertical-align: middle; }
.revenue-line>p small { display: block; margin-top: 6px; font-size: 21px; color: var(--orba-text-muted); }
.revenue-simple { grid-template-columns: 1.55fr 1fr 1fr; }
.page .revenue-line img { height: 470px; }
.page .revenue-line .revenue-journey { object-fit: contain; object-position: center; background: #141414; }

/* Deck team and proof */
.gantt.quarters .gantt-years { grid-template-columns: 3fr 4fr 4fr; }
.gantt.quarters .gantt-axis, .gantt.quarters .gantt-track { grid-template-columns: repeat(11,minmax(0,1fr)); }
.gantt.quarters .gantt-axis { font-size: 15px; }
.gantt.quarters .gantt-track { background: repeating-linear-gradient(to right,transparent 0,transparent calc(100% / 11 - 1px),rgba(243,229,217,.07) calc(100% / 11 - 1px),rgba(243,229,217,.07) calc(100% / 11)); }
.gantt-mark.priority { background: var(--orba-accent); }
.gantt-label.priority-label { color: var(--orba-accent); font-weight: 700; }
.gantt-key-priority { color: var(--orba-accent); }
.gantt.quarters { position: relative; }
.gantt.quarters .gantt-track { background: none; }
.gantt.quarters .gantt-track i { grid-row: 1; align-self: stretch; border-left: 1px solid rgba(243,229,217,.12); }
.gantt.quarters .gantt-track .gantt-mark { grid-row: 1; }
.gantt.quarters .gantt-track, .gantt.quarters .gantt-axis { border-right: 1px solid rgba(243,229,217,.12); }
.gantt.quarters .gantt-axis, .gantt.quarters .gantt-head { border-bottom: 1px solid var(--orba-line); }
.gantt.quarters .gantt-axis span { border-left: 1px solid rgba(243,229,217,.12); }
.gantt-now { position: absolute; top: 40px; bottom: 0; left: calc(330px + (100% - 330px) * 0.168); width: 2px; background: #F87171; }
.gantt-now span { position: absolute; top: -22px; left: -18px; font-size: 14px; font-weight: 700; color: #F87171; }
.gantt-key-now { color: #F87171; }
.gantt-mark.tail { opacity: .28; margin-left: -2px; border-radius: 0 3px 3px 0; }
.gantt-key-tail { color: var(--orba-cool); opacity: .4; }
.page .roadmap-phases h2 { margin-top: 0; }
.roadmap-phases p { font-size: 22px; }
.roadmap-columns.full { grid-template-columns: 1fr; }
.roadmap-columns.full .gantt { grid-template-columns: 380px 1fr; font-size: 21px; }
.roadmap-columns.full .gantt-label, .roadmap-columns.full .gantt-track { min-height: 33px; }
.roadmap-columns.full .gantt-now { left: calc(380px + (100% - 380px) * var(--now, 0.168)); top: 78px; }
.gantt-phases { display: grid; grid-template-columns: repeat(11,minmax(0,1fr)); gap: 0; margin-bottom: 8px; }
.gantt-phases span { font-size: 20px; font-weight: 700; color: var(--orba-text); background: rgba(147,197,253,.12); border-bottom: 2px solid var(--orba-cool); padding: 4px 12px; margin-right: 4px; border-radius: 4px 4px 0 0; }
.roadmap-columns.full .gantt { font-size: 26px; margin-top: 20px; }
.roadmap-columns.full .gantt-label, .roadmap-columns.full .gantt-track { min-height: 52px; }
.roadmap-columns.full .gantt-mark { height: 16px; }
.roadmap-columns.full .gantt-mark.milestone { width: 14px; height: 14px; }
.roadmap-columns.full .gantt-axis { font-size: 17px; }

/* 08 What we're building (#2468): what goes in, the engine, what comes out, left to right.
   06-built.md is generated with the same box positions; every wire has its own start and end. */
.system-layout { position: relative; margin-top: 16px; }
.page .system-subtitle { font-size: 32px; margin: 0 0 22px; color: var(--orba-text-muted); }
.system-diagram { position: relative; height: 680px; }
.system-arrows { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; stroke: var(--orba-cool); stroke-width: 2; }
.system-arrows marker path { stroke: var(--orba-cool); stroke-width: 2; }
.system-wire { opacity: .45; }
.system-output { marker-end: url(#system-arrow); }
.page p.system-column { position: absolute; top: 0; margin: 0; color: var(--orba-cool); font-size: 19px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; white-space: nowrap; }
.system-node { position: absolute; --status-color: var(--orba-text-muted); padding: 18px 24px; border: 1px solid var(--orba-ring-2); border-radius: 14px; background: #111114; box-sizing: border-box; }
.system-node.live { --status-color: var(--orba-accent); }
.system-node.planned { border-style: dashed; }
.page .system-node h2 { font-size: 28px; line-height: 1.2; margin: 0; color: var(--orba-text); }
.page .system-node p { font-size: 21px; line-height: 1.35; margin: 0; color: var(--orba-text-muted); }
.system-progress { display: inline-flex; align-items: center; gap: 8px; line-height: 1.2; font-size: 17px; font-weight: 600; color: var(--status-color); }
.system-progress::before { content: '●'; }
.system-node.planned .system-progress::before { content: '○'; }
/* Inputs: two stacks, one chip per source, each chip showing its own status. */
.system-group { left: 0; width: 420px; background: rgba(147,197,253,.03); }
.system-knowledge { top: 50px; height: 232px; }
.system-data { top: 306px; height: 374px; }
.system-group-head { display: flex; align-items: center; gap: 12px; }
.page .system-group h2 { font-size: 22px; }
.page .system-group p { font-size: 18px; margin-top: 8px; }
.system-icon { width: 34px; height: 34px; flex: none; stroke: var(--orba-cool); stroke-width: 2.5; }
.system-chip { position: absolute; left: 20px; width: 380px; height: 44px; display: flex; align-items: center; gap: 10px; padding: 0 16px; border: 1px solid var(--orba-ring-2); border-radius: 10px; background: #16161b; box-sizing: border-box; font-size: 21px; font-weight: 600; color: var(--orba-text); white-space: nowrap; }
.system-chip-data { height: 36px; font-size: 19px; }
.system-chip::before { content: '●'; font-size: 14px; color: var(--orba-accent); }
.system-chip.planned { border-style: dashed; color: var(--orba-text-muted); }
.system-chip.planned::before { content: '○'; color: var(--orba-text-muted); }
/* The engine's box is positioned inline by build-engine-slide.mjs, which draws its wires. */
.system-engine { display: flex; flex-direction: column; gap: 8px; border-color: var(--orba-cool); background: #18202b; }
.page .system-engine h2 { font-size: 52px; }
.system-engine .eyebrow { font-size: 17px; line-height: 1.2; }
.system-engine > .system-progress { margin-top: auto; }
.system-endpoints { position: absolute; right: 0; top: 50px; bottom: 0; width: 460px; display: grid; grid-template-rows: repeat(7, minmax(0, 1fr)); gap: 6px; }
.system-endpoints .system-node { position: relative; display: grid; grid-template-columns: 36px 1fr; align-items: center; column-gap: 16px; padding: 8px 20px; }
.system-endpoints .system-node > div { display: grid; gap: 4px; }
/* Status sits beside the name so it can never fall out of the box. */
.system-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.page .system-endpoints h2 { font-size: 26px; margin: 0; }
.page .system-endpoints p { font-size: 18px; line-height: 1.2; margin: 0; }
.system-endpoints .system-progress { flex: none; font-size: 15px; line-height: 1; }
.page .system-key { display: flex; gap: 28px; align-items: center; font-size: 19px; margin: 20px 0 14px; color: var(--orba-text-muted); }
.system-key span:first-child { color: var(--orba-accent); }

/* Light packets follow the same paths as the connections; SVG endpoints are inset. */
.system-network { display: block; width: 100%; margin: auto 0; overflow: visible; stroke: var(--orba-cool); stroke-width: 1.5; }
.network-links { opacity: .22; }
.system-particles { stroke: #d5eaff; stroke-width: 4; stroke-linecap: round; stroke-dasharray: .5 24.5; filter: drop-shadow(0 0 4px #93c5fd); animation: system-signal 4s linear infinite; animation-delay: var(--delay, 0s); animation-play-state: paused; }
.network-flow { stroke-width: 2.5; stroke-dasharray: .35 99.65; }
.system-layout.is-visible .system-particles { animation-play-state: running; }
/* Nodes fire in a staggered flicker while the slide is visible. */
.network-node { fill: #18202b; animation: network-pulse 2.6s ease-in-out infinite; animation-delay: var(--pulse, 0s); animation-play-state: paused; }
.system-layout.is-visible .network-node { animation-play-state: running; }
@keyframes network-pulse { 0%, 60%, 100% { fill: #18202b; } 30% { fill: var(--orba-cool); } }
@keyframes system-signal { from { stroke-dashoffset: 100; } to { stroke-dashoffset: 0; } }
@media (prefers-reduced-motion: reduce) {
  .system-particles { animation: none; filter: none; opacity: .35; }
  .network-node { animation: none; }
}

/* John's journey: one reading direction, then back to the baseline. */
.product-layout { gap: 24px; }
.journey-route { position: relative; height: 250px; }
.page .journey-steps { display: grid; grid-template-columns: repeat(6,minmax(0,1fr)); gap: 24px; list-style: none; padding: 0; margin: 0; }
.page .journey-steps li { position: relative; margin: 0; padding: 0; min-width: 0; }
.journey-number { display: flex; align-items: center; justify-content: center; width: 48px; height: 48px; border: 1px solid var(--orba-cool); border-radius: 50%; color: var(--orba-cool); font-size: 21px; font-weight: 700; font-variant-numeric: tabular-nums; }
.journey-steps li:last-child .journey-number { background: var(--orba-cool); color: #111114; }
.journey-steps b { display: block; font-size: 27px; line-height: 1.2; margin-top: 18px; }
.journey-steps small { display: block; margin-top: 8px; font-size: 21px; line-height: 1.35; color: var(--orba-text-muted); }
.journey-next { position: absolute; top: 12px; left: 64px; width: calc(100% - 56px); height: 24px; color: var(--orba-cool); }
.journey-route svg path { fill: none; stroke: currentColor; stroke-width: 1.5; vector-effect: non-scaling-stroke; }
.journey-return, .journey-wrap { position: absolute; inset: 0; width: 100%; height: 100%; color: var(--orba-cool); opacity: .55; pointer-events: none; }
.journey-again { position: absolute; bottom: 5px; left: 50%; padding: 0 12px; background: #111114; color: var(--orba-cool); font-size: 18px; }
.product-layout .screenshot-stage { height: 460px; }
.journey-screens figcaption { font-size: 21px; margin-top: 12px; }
.journey-cycle .journey-route { height: 340px; }
.page .journey-cycle .journey-steps { grid-template-columns: repeat(3,minmax(0,1fr)); row-gap: 32px; padding: 0 32px; }
.journey-cycle .journey-steps li { min-height: 162px; padding-right: 56px; }
.journey-cycle .journey-steps li:nth-child(4) { grid-column: 3; grid-row: 2; }
.journey-cycle .journey-steps li:nth-child(5) { grid-column: 2; grid-row: 2; }
.journey-cycle .journey-steps li:nth-child(6) { grid-column: 1; grid-row: 2; }
.journey-cycle .journey-steps li:nth-child(3) .journey-next { display: none; }
.journey-cycle .journey-steps li:nth-child(4) .journey-next, .journey-cycle .journey-steps li:nth-child(5) .journey-next { left: auto; right: calc(100% + 16px); transform: rotate(180deg); }
.journey-cycle .journey-steps b { margin-top: 10px; }
.journey-cycle .journey-again { top: 152px; bottom: auto; left: 32px; }
.journey-cycle .cycle-return { stroke-dasharray: 5 7; }
.journey-cycle .screenshot-stage { height: 370px; }

/* Opportunity (#2562, Anton's design): three stepping stones that ascend left to right. Each stone is a round map
   window on the same geography at a wider zoom: Bangkok pinned → Thailand lit → Asia-Pacific.
   Circle size means the window, never market size (source note says so). The geography is the
   v0.7 world-map path set, drawn once in <defs> and re-framed per window through the viewBox.
   Stage is 1744×820 under the headline; absolute geometry, no scaling. Base state is the settled
   state; the build (animation.css) starts each window and caption from the shared rise. */
.page[data-slide-key="opportunity"] h1 { max-width: none; white-space: nowrap; }
.opportunity-windows { position: relative; height: 820px; margin-top: 5px; }
.opw-defs { position: absolute; width: 0; height: 0; overflow: hidden; }

/* The path between stones: drawn centre to centre, the opaque discs cover the rest. */
.opw-route { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.opw-route path { fill: none; stroke: rgba(243,229,217,.34); stroke-width: 2; stroke-dasharray: 1 10; stroke-linecap: round; }

/* A stone: map window on top, caption beneath, both centred on the same axis. */
.opw-stone { position: absolute; left: var(--x); top: var(--y); width: var(--w); display: flex; flex-direction: column; align-items: center; }
.opw-map { position: relative; width: var(--d); height: var(--d); border-radius: 50%; overflow: hidden; background: #161010; border: 1px solid rgba(243,229,217,.16); }
.opw-map svg { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.opw-geo path { fill: var(--land, rgba(243,229,217,.085)); stroke: var(--coast, rgba(243,229,217,.24)); stroke-width: 1; vector-effect: non-scaling-stroke; stroke-linejoin: round; }
.opw-geo .opw-th { fill: var(--th, rgba(255,106,42,.9)); stroke: var(--th-stroke, #FF6A2A); }
.opw-geo-use { transform-box: view-box; transform-origin: 50% 50%; }
.opw-stone.is-city { --th: rgba(255,106,42,.13); --th-stroke: rgba(255,106,42,.4); --coast: rgba(243,229,217,.15); }
.opw-stone.is-region { --land: rgba(243,229,217,.105); }

/* Markers are drawn in pixel units inside a group that undoes the window's zoom. */
.opw-pin { fill: var(--orba-accent); }
.opw-pin .opw-pin-eye { fill: #161010; }
.opw-pin text { font: 700 21px/1 Satoshi, sans-serif; fill: var(--orba-text); letter-spacing: -.01em; }
.opw-halo { fill: none; stroke: var(--orba-accent); stroke-width: 2; opacity: 0; transform-box: fill-box; transform-origin: center; }
.opw-here { fill: var(--orba-text); stroke: #161010; stroke-width: 2; }
.opw-next { fill: #161010; stroke: var(--orba-cool); stroke-width: 2; }

.opw-cap { display: flex; flex-direction: column; align-items: center; text-align: center; margin-top: 18px; }
.opw-num { font-size: var(--n); font-weight: 900; line-height: .95; letter-spacing: -.04em; color: var(--orba-cool); white-space: nowrap; }
.opw-num small { font-size: 22px; font-weight: 500; letter-spacing: 0; color: var(--orba-text-muted); margin-left: 10px; }
.opw-stone.is-city .opw-num { color: var(--orba-accent); }
.opw-place { display: flex; align-items: baseline; justify-content: center; gap: 14px; margin-top: 10px; font-size: 30px; font-weight: 700; line-height: 1.2; color: var(--orba-text); }
.opw-place .opw-n { font: 500 15px/1 "Geist Mono", monospace; letter-spacing: .16em; color: var(--orba-cool); }
.revamp .opw-what { margin: 6px 0 0; max-width: var(--cw); font-size: 22px; line-height: 1.3; color: var(--orba-text-muted); }
.opw-what .opw-key { display: inline-block; width: 11px; height: 11px; vertical-align: -1px; margin-right: 6px; }
.opw-stone.is-region .opw-num small { font-size: 24px; }

.page .opw-source { position: absolute; left: 88px; right: 88px; bottom: 56px; margin: 0; font-size: 17px; line-height: 1.45; }
/* Spotty glow (design system "spotty" light): one soft dark-orange spot behind the slide's key element,
   diffuse falloff to transparent at 75% like the playground recipe; no hard core. The page isolates, so
   z-index -1 paints above the page ground and below all content. */
.page:has(.opw-glow) { isolation: isolate; }
.opw-glow { position: absolute; z-index: -1; pointer-events: none; transform: translate(-50%, -50%); filter: blur(24px); }
.opw-glow { background: radial-gradient(ellipse 50% 50% at 50% 50%, color-mix(in oklab, #7A2A0E 55%, transparent), transparent 75%); }

/* Use of funds (#2193). */
.funding-layout { margin-top: 40px; font-variant-numeric: tabular-nums; }
.money-columns { grid-template-columns: 1.5fr 1fr; gap: 64px; margin-top: 0; }
.funds-stack { display: flex; height: 64px; margin: 24px 0; overflow: hidden; border-radius: 7px; }
.fund-rd { background: var(--orba-cool); }
.fund-marketing { background: var(--orba-accent); }
.fund-clinic { background: #6EE7B7; }
.fund-legal { background: #C4B5FD; }
.fund-reserve { background: #F0EDE6; }
.fund-key { display: inline-block; width: 14px; height: 14px; margin-right: 12px; border-radius: 2px; }
.page .funding-layout .funds-plan table { font-size: 24px; margin-top: 0; }
.page .funding-layout .funds-plan td { padding: 14px 12px; }
.funding-layout .funds-plan td p { font-size: 20px; margin-top: 4px; }
.funding-layout .runway-plan strong { font-size: 58px; color: var(--orba-cool); }
.funding-layout .runway-plan strong small { font-size: 30px; }
.funding-layout .runway-plan section { margin-bottom: 36px; }
.funding-layout .money-footer { border-top: 1px solid var(--orba-line); padding-top: 20px; margin-top: 28px; font-size: 24px; }

/* Slide 8: subscription prices and annual spend, with fixed photo slots. */

/* 14 Deal (#2566): Orba's cap against same-stage peers' estimated values, then the
   leaders' later rounds off the scale. Peer bars share one linear scale: --max in $M. */
.entry-layout { margin-top: 4px; font-variant-numeric: tabular-nums; }
.entry-chart { --name-w: 330px; --max: 30; --label-w: 170px; }
.entry-row { display: grid; grid-template-columns: var(--name-w) 1fr; align-items: center; min-height: 50px; }
.entry-name b { display: block; font-size: 24px; line-height: 1.05; color: var(--orba-text); }
.entry-name small { display: block; font-size: 17px; line-height: 1.15; color: var(--orba-text-muted); }
.entry-track { position: relative; align-self: stretch; display: flex; align-items: center; margin-right: var(--label-w); }
.entry-bar { display: block; height: 22px; width: calc(var(--v) / var(--max) * 100%); border-radius: 0 4px 4px 0; background: rgba(243,229,217,.32); }
.entry-val { position: absolute; left: calc(var(--v) / var(--max) * 100% + 14px); font-size: 24px; font-weight: 700; color: var(--orba-text); white-space: nowrap; }
.entry-orba { min-height: 58px; }
.entry-orba .entry-name b, .entry-orba .entry-val { color: var(--orba-accent); }
.entry-orba .entry-name b { font-size: 28px; }
.entry-orba .entry-bar { height: 30px; background: var(--orba-accent); }
.entry-peers .entry-track::before { content: ""; position: absolute; top: 0; bottom: 0; left: calc(4.5 / var(--max) * 100%); border-left: 2px dashed color-mix(in srgb, var(--orba-accent) 60%, transparent); }
.entry-eyebrow { margin: 10px 0 2px; padding-top: 8px; border-top: 1px solid var(--orba-ring-2); font-size: 17px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--orba-text-muted); }
.entry-axis { display: grid; grid-template-columns: var(--name-w) 1fr; height: 26px; }
.entry-ticks { position: relative; margin-right: var(--label-w); border-top: 1px solid var(--orba-line); }
.entry-ticks span { position: absolute; top: 4px; left: calc(var(--t) / var(--max) * 100%); transform: translateX(-50%); font-size: 16px; color: var(--orba-text-muted); }
.entry-ticks span:first-child { transform: none; }
/* Leaders are off the scale: equal bars cut by a // gap, so only the labels carry the values. */
.entry-leader .entry-bar { width: 100%; background: color-mix(in srgb, var(--orba-cool) 55%, transparent); }
.entry-leader .entry-val { left: calc(100% + 14px); color: var(--orba-cool); font-size: 28px; }
.entry-cut { position: absolute; left: 88%; padding: 0 6px; background: #111114; color: var(--orba-cool); font-size: 28px; font-weight: 700; letter-spacing: .04em; line-height: 1; }
.entry-terms { margin: 14px 0 0; padding-top: 12px; border-top: 1px solid var(--orba-line); font-size: 24px; line-height: 1.4; color: var(--orba-text); }
.page .entry-note { margin: 8px 0 0; font-size: 18px; line-height: 1.4; color: var(--orba-text-muted); }
.page .entry-note a { color: var(--orba-cool); font-weight: 700; white-space: nowrap; }

/* Cover background photo (#2206). The left fade keeps the type on the plain card; the flat scrim tones the photo down. */
.page:has(.cover-layout) {
  --cover-scrim: .35;
  background:
    linear-gradient(90deg, #0F0C10 0%, #0F0C10 51%, rgba(15,12,16,.7) 58%, rgba(15,12,16,0) 72%),
    linear-gradient(rgba(5,3,8,var(--cover-scrim)), rgba(5,3,8,var(--cover-scrim))),
    url("media/cover-beam-portrait.jpg") right -160px center / auto 100% no-repeat,
    #0F0C10;
}
.page:has(.cover-layout) .cover-meta { border-top-color: rgba(243,229,217,.22); }
/* Logo moves to the top-left corner so it stops reading as a second "O" before "Orba". */
.page .cover-brand svg { position: absolute; top: 64px; left: 88px; width: 84px; height: auto; }




/* Shared notices for figures awaiting confirmation. */
.page .wip-notice { margin: 16px 0; padding: 16px 20px; border-radius: 14px; color: #FF7B72; background: rgba(255,123,114,.08); font-size: 22px; line-height: 1.35; }
.page .wip-notice strong { color: inherit; text-transform: uppercase; font-size: .85em; letter-spacing: .08em; }
.page .wip-notice-small { padding: 12px 16px; font-size: 18px; }
.page .wip-notice-large { padding: 20px 24px; font-size: 24px; }

/* Research appendix (#2268): confidence notes, sources and tables shared by the research slides. */
.page .research-note { margin: 56px 0 0; padding-top: 20px; border-top: 1px solid var(--orba-line); font-size: 21px; line-height: 1.45; color: var(--orba-text-muted); }
.page .comparables-table td:last-child { color: var(--orba-text-muted); }
.research-note a, .comparables-table a { color: var(--orba-cool); }
/* Red star: an estimate or a figure that is not Thailand-specific; the note beside it says which. */
.page .est, .page .est-note { color: #FF7B72; }
.page .comparables-table { margin: 8px 0 0; font-size: 19px; line-height: 1.3; font-variant-numeric: tabular-nums; }
.page .comparables-table td, .page .comparables-table th { padding: 6px 14px; }
.page .valuation-table { margin-top: 20px; font-size: 19px; }
.page .valuation-table td, .page .valuation-table th { padding: 5px 12px; vertical-align: middle; }
.page .valuation-table td:last-child { color: var(--orba-text-muted); font-size: 17px; line-height: 1.3; white-space: nowrap; }
.page .valuation-table td:nth-child(5) { color: var(--orba-text-muted); font-size: 17px; line-height: 1.3; max-width: 290px; }
.page .valuation-table td:nth-child(4) { white-space: nowrap; font-weight: 700; }
.page .valuation-table .valuation-orba td { color: var(--orba-accent); font-weight: 700; }
.page .valuation-table .valuation-orba td:nth-child(5) { color: var(--orba-accent); font-weight: 500; white-space: nowrap; }
.page .valuation-table td:nth-child(2), .page .valuation-table td:nth-child(3) { white-space: nowrap; }
.page .valuation-table .valuation-divider td { padding: 12px 12px 2px; color: var(--orba-text-muted); font-size: 16px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.page .valuation-table .valuation-scale { width: 280px; }
.page .valuation-table .valuation-scale span { display: inline-block; width: 33.33%; font-size: 14px; font-weight: 500; color: var(--orba-text-muted); }
.page .valuation-table .valuation-scale span:nth-child(2) { text-align: center; }
.page .valuation-table .valuation-scale span:last-child { text-align: right; }
.valuation-bar { position: relative; display: block; width: 280px; height: 14px; border-radius: 7px; background: color-mix(in srgb, var(--orba-text-muted) 18%, transparent); }
.valuation-bar::after { content: ""; position: absolute; top: 0; bottom: 0; left: calc(var(--lo) / 60 * 100%); width: max(6px, calc((var(--hi) - var(--lo)) / 60 * 100%)); border-radius: 7px; background: var(--orba-cool); }
.valuation-orba .valuation-bar::after { background: var(--orba-accent); }
.page .valuation-table .valuation-off { font-size: 15px; letter-spacing: .06em; text-transform: uppercase; color: var(--orba-text-muted); }
.page .valuation-table .valuation-leader td:nth-child(4) { color: var(--orba-cool); }
/* A6 carries the leaders' later rounds too (#2566): tighter rows and note so it stays one slide. */
.page[data-slide-key="appendix_comparables"] .valuation-table { margin-top: 12px; }
.page[data-slide-key="appendix_comparables"] .valuation-table td { padding-top: 3px; padding-bottom: 3px; }
.page[data-slide-key="appendix_comparables"] .valuation-table .valuation-divider td { padding-top: 8px; }
.page[data-slide-key="appendix_comparables"] .valuation-benchmarks { margin-top: 10px; font-size: 19px; }
.page[data-slide-key="appendix_comparables"] .research-note { margin-top: 14px; padding-top: 10px; font-size: 18px; line-height: 1.4; }
.page .valuation-benchmarks { margin: 16px 0 0; font-size: 20px; line-height: 1.45; color: var(--orba-text); max-width: 1700px; }
.page .valuation-benchmarks a { color: var(--orba-cool); }

/* Traction: first members' data */
.traction-layout { display: grid; gap: 56px; margin-top: 88px; }
.traction-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 64px; }
.traction-stat { display: grid; align-content: start; gap: 14px; }
.traction-group { border-top: 1px solid var(--orba-line); padding-top: 14px; margin-bottom: 8px; font-size: 19px; font-weight: 700; line-height: 1; letter-spacing: .08em; text-transform: uppercase; color: var(--orba-text-muted); }
.page .traction-stat strong { color: var(--orba-cool); font-family: "Geist Mono", monospace; font-size: 128px; line-height: 1; letter-spacing: -.05em; }
.page .traction-did strong { color: var(--orba-accent); }
.traction-stat span { font-size: 34px; line-height: 1.3; color: #F0EDE6; min-height: 90px; }
.traction-stat small { font-size: 20px; color: var(--orba-text-muted); }
.traction-dots { display: block; width: 100%; height: auto; margin-top: 28px; }
.traction-dots .dot-found { fill: var(--orba-cool); }
.traction-dots .dot-did { fill: var(--orba-accent); }
.traction-dots .dot-off { fill: rgba(240,237,230,.12); }
.page .traction-note { font-size: 19px; margin: 12px 0 0; max-width: 1640px; }

/* Checkup gap (#2536, #2652): the lab-report page and three short statements on top, then the money band:
   "And they already pay" with the two survey spend numbers at the weight of the three problems. */
.gap-grid { display: grid; grid-template-columns: 860px 1fr; gap: 64px; align-items: center; margin-top: 24px; }
.page .gap-report img { display: block; width: 100%; height: auto; margin: 0; border: 1px solid var(--orba-ring-2); border-radius: 14px; }
.gap-notes { display: grid; gap: 40px; }
.page .gap-notes p { display: grid; grid-template-columns: 44px 1fr; column-gap: 14px; align-items: baseline; margin: 0; font-size: 46px; line-height: 1.12; letter-spacing: -.02em; font-weight: 700; color: #F0EDE6; }
.gap-notes p span { color: var(--orba-accent); font-family: "Geist Mono", monospace; font-size: 28px; font-weight: 500; }
.gap-kpiblock { display: grid; margin-top: 36px; }
.page .gap-kpi-lead { margin: 0 0 16px; padding-top: 14px; border-top: 1px solid var(--orba-line); font-size: 19px; font-weight: 700; line-height: 1; letter-spacing: .08em; text-transform: uppercase; color: var(--orba-text-muted); }
.gap-kpis { display: grid; grid-template-columns: 1fr 1fr; gap: 0 64px; align-items: start; }
.gap-kpi { display: grid; grid-template-columns: auto 1fr; align-items: baseline; column-gap: 24px; }
.page .gap-kpi strong { font-family: "Geist Mono", monospace; font-size: 128px; line-height: 1; letter-spacing: -.05em; font-weight: 700; color: var(--orba-cool); font-variant-numeric: tabular-nums; }
.gap-kpi span { font-size: 30px; line-height: 1.25; color: #F0EDE6; }
.gap-kpi span b { color: var(--orba-text); }
.page .gap-kpi-who { margin: 18px 0 0; font-size: 20px; line-height: 1.4; color: var(--orba-text-muted); }
.gap-kpi-who a { color: var(--orba-cool); }

/* 06 Solution (#2657): Superpower's loop in Orba's photos. Five spokes on a ring around the Orba mark,
   labels under the top and bottom photos and outside the side ones; build-thesis-slide.mjs places every
   spoke and arc on the 1744 × 800 stage. The orange arc is the retest. */
.care-loop { position: relative; height: 800px; }
.care-loop-ring { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.care-loop-arc { stroke: var(--orba-line); stroke-width: 2; }
.care-loop-arc.is-retest { stroke: var(--orba-accent); stroke-width: 3; }
.care-loop-ring marker path { fill: none; stroke: var(--orba-text-muted); stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.care-loop-ring marker.is-retest path { stroke: var(--orba-accent); stroke-width: 1.4; }
.page .care-loop-spokes { list-style: none; margin: 0; padding: 0; }
.page .care-loop-spoke { position: absolute; width: 220px; height: 220px; margin: 0; }
.care-loop-tile { display: block; width: 100%; height: 100%; margin: 0; border-radius: 30px; overflow: hidden; border: 1px solid var(--orba-ring-2); background: #000; box-shadow: 0 10px 30px rgba(0,0,0,.35); }
.page .care-loop-tile img { display: block; width: 100%; height: 100%; max-width: none; max-height: none; object-fit: cover; margin: 0; border: 0; border-radius: 0; }
.page .care-loop-label { position: absolute; width: 330px; font-size: 30px; line-height: 1.12; font-weight: 800; color: var(--orba-text); text-wrap: balance; }
.is-below .care-loop-label { left: 50%; top: calc(100% + 16px); translate: -50% 0; text-align: center; }
.is-right .care-loop-label { left: calc(100% + 24px); top: 50%; translate: 0 -50%; }
.is-left .care-loop-label { right: calc(100% + 24px); top: 50%; translate: 0 -50%; text-align: right; }
.page .care-loop-retest { position: absolute; display: flex; align-items: center; justify-content: center; gap: 10px; width: 260px; margin: 0; font-size: 28px; line-height: 52px; font-weight: 800; color: var(--orba-accent); }
.care-loop-retest-icon { width: 30px; height: 30px; stroke: currentColor; stroke-width: 4; stroke-linecap: round; }
.care-loop-hub { position: absolute; display: grid; place-items: center; width: 160px; height: 160px; border-radius: 34px; border: 2px solid var(--orba-accent); background: #0b0a0c; box-shadow: 0 0 60px rgba(255,106,42,.18); }
.care-loop-mark { width: 62%; height: auto; color: var(--orba-text); }
/* The one line on how Orba makes money (#2679) sits under the loop, in the slide's bottom padding, static like the subtitle. */
.page .care-loop-note { position: absolute; left: 88px; right: 88px; bottom: 50px; margin: 0; white-space: nowrap; }
.care-loop-note a { color: var(--orba-cool); }

/* Add-on catalogue (#2316): US dollars in white, baht muted beside them. */
.page .addon-table { margin-top: 28px; font-size: 20px; }
.page .addon-table td, .page .addon-table th { padding: 5px 16px; }
.page .addon-table td { color: var(--orba-text-muted); }
.page .addon-table td:first-child, .page .addon-table td b { color: var(--orba-text); }
.page .addon-table td:nth-child(2) { white-space: nowrap; font-variant-numeric: tabular-nums; }
.page .addon-table a { color: var(--orba-cool); }
.page .addon-table + .research-note { margin-top: 20px; padding-top: 14px; font-size: 19px; }

/* Survey appendix (#2382): eight questions quoted as asked, one bar per answer with its percentage and count, the base (n) above each.
   Subgrid keeps the questions and answer lists level across a row; orange marks the answers slide 4 is built on. */
.survey-layout { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-template-rows: repeat(6, auto); gap: 4px 40px; margin-top: 18px; }
.survey-q { display: grid; grid-row: span 3; grid-template-rows: subgrid; min-width: 0; border-top: 1px solid var(--orba-line); padding: 12px 0 14px; }
.revamp .survey-q .eyebrow { font-size: 14px; color: var(--orba-text-muted); letter-spacing: .06em; }
.page .survey-q h2 { margin: 0; font-size: 19px; line-height: 1.2; letter-spacing: -.01em; color: #F0EDE6; text-wrap: pretty; }
.page .survey-q ul { list-style: none; margin: 2px 0 0; padding: 0; display: grid; align-content: start; gap: 8px; }
.page .survey-q li { margin: 0; }
.survey-text { display: flex; align-items: baseline; gap: 8px; font-size: 17px; line-height: 1.2; }
.survey-text > span { flex: 1 1 auto; min-width: 0; }
.page .survey-text b { color: var(--orba-cool); font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.survey-text small { font-size: 14px; color: var(--orba-text-muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
.survey-bar { display: block; height: 7px; margin-top: 4px; border-radius: 3px; background: rgba(240,237,230,.10); overflow: hidden; }
.survey-bar > span { display: block; height: 100%; width: calc(var(--pct, 0) * 1%); border-radius: 3px; background: var(--orba-cool); }
.page .survey-q li.is-key .survey-text b { color: var(--orba-accent); }
.survey-q li.is-key .survey-bar > span { background: var(--orba-accent); }
.page .survey-caveat { margin: 16px 0 0; padding-top: 12px; border-top: 1px solid var(--orba-line); font-size: 16px; line-height: 1.4; color: var(--orba-text-muted); }

/* 02 Vision (#2391): one horizontal pace-of-aging scale is the whole slide; #2643 adds two role models as portraits joined to their dots (.scale-person-*, .scale-face-ring); #2693 grows the portraits to 144px, so the ring is heavier. */
.vision-scale figure { margin-top: 20px; }
.pace-scale { display: block; width: 1744px; height: auto; overflow: visible; }
.scale-axis { stroke: var(--orba-line); stroke-width: 4; stroke-linecap: round; }
.scale-tick { stroke: var(--orba-line); stroke-width: 4; stroke-linecap: round; }
.scale-tick-avg { stroke: var(--orba-text); stroke-width: 6; }
.scale-num { fill: var(--orba-text-muted); font-family: "Geist Mono", monospace; font-size: 30px; }
.scale-num-avg { fill: var(--orba-text); font-size: 36px; }
.scale-end { fill: var(--orba-text-muted); font-size: 24px; font-weight: 500; }
.scale-callout { fill: var(--orba-cool); font-size: 30px; font-weight: 700; }
.scale-bracket { fill: none; stroke: var(--orba-cool); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.scale-leader { fill: var(--orba-cool); }
.scale-person-line { stroke: var(--orba-cool); stroke-width: 2; stroke-linecap: round; fill: none; opacity: .7; }
.scale-face-ring { fill: none; stroke: var(--orba-cool); stroke-width: 4; }
.scale-person-name { fill: var(--orba-text); font-size: 28px; font-weight: 700; }
.page .scale-credits { font-size: 16px; line-height: 1.4; color: var(--orba-text-muted); margin: 18px 0 0; }
.scale-trail { stroke: var(--orba-accent); stroke-width: 6; stroke-linecap: round; opacity: .55; }
.scale-you-dot { fill: var(--orba-accent); stroke: #111114; stroke-width: 6; }
.scale-you-stem { stroke: var(--orba-accent); stroke-width: 3; }
.scale-you-label { fill: var(--orba-accent); font-size: 34px; font-weight: 700; }
.scale-you { transform: translateX(-396px); }
.vision-scale .scale-captions { margin-top: 40px; max-width: 1240px; }
.vision-scale .scale-captions p { font-size: 32px; line-height: 1.4; }

/* Dense appendix (#2467): the four revenue lines on one table, and Bangkok beside Asia.
   Nothing here is smaller than 17px on the 1920px canvas: the column headings and the sources of the four revenue lines. */
.page:has(.markets-layout), .page:has(.reach-layout) { padding: 40px 72px 20px; }
.page:has(.markets-layout) h1, .page:has(.reach-layout) h1 { margin-bottom: 10px; font-size: 48px; }
.page .markets-table td > b .est, .page .reach-step > b .est { font-size: .6em; vertical-align: super; margin-left: 3px; }
.page .markets-table { table-layout: fixed; margin: 0; font-size: 20px; line-height: 1.3; font-variant-numeric: tabular-nums; }
.page .markets-table th { padding: 6px 16px 6px 0; font-size: 17px; letter-spacing: .04em; white-space: nowrap; }
.page .markets-table th:first-child { width: 12.5%; }
.page .markets-table th:nth-child(2), .page .markets-table th:nth-child(3) { width: 16.5%; }
.page .markets-table th:nth-child(4) { width: 15%; }
.page .markets-table td { padding: 10px 22px 10px 0; border-bottom: 1px solid var(--orba-line); }
.page .markets-table td:last-child { padding-right: 0; }
.page .markets-table td > strong { display: block; font-size: 25px; line-height: 1.2; }
.page .markets-table .markets-proof { font-size: 18px; line-height: 1.3; }
.page .markets-table .markets-proof > strong { display: inline; font-size: inherit; color: var(--orba-accent); }
.markets-reason { color: var(--orba-text); }
.page .markets-unit strong { font-weight: 700; }
.markets-position, .markets-unit, .markets-table small { display: block; }
.markets-position { margin-top: 4px; font-size: 20px; line-height: 1.25; color: var(--orba-text-muted); }
.page .markets-table td > b { display: block; font-size: 38px; line-height: 1.05; letter-spacing: -.03em; color: var(--orba-cool); white-space: nowrap; }
.markets-unit { margin-top: 2px; font-size: 20px; line-height: 1.25; color: var(--orba-text); }
.markets-table small { margin-top: 4px; font-size: 18px; line-height: 1.3; color: var(--orba-text-muted); }
.page .markets-table .markets-proof small { margin-top: 6px; font-size: 17px; line-height: 1.3; }
.markets-table a, .markets-total a, .reach-sources a { color: var(--orba-cool); }
.page .markets-total { margin: 12px 0 0; font-size: 20px; line-height: 1.3; color: var(--orba-text-muted); }
.page .markets-total strong { color: var(--orba-accent); }
.reach-layout { display: grid; grid-template-columns: .88fr 1.12fr; gap: 56px; margin-top: 14px; font-variant-numeric: tabular-nums; }
.reach-column { min-width: 0; border-top: 1px solid var(--orba-line); padding-top: 14px; }
.reach-steps { margin: 8px 0 0; }
.reach-step { display: grid; grid-template-columns: 216px 1fr; column-gap: 20px; align-items: start; padding: 10px 0; border-bottom: 1px solid var(--orba-ring-1); }
.reach-step > b { font-size: 56px; font-weight: 700; line-height: 1; letter-spacing: -.04em; color: var(--orba-text); white-space: nowrap; }
.reach-result > b { color: var(--orba-cool); }
.page .reach-unit { margin: 0; font-size: 23px; line-height: 1.25; color: var(--orba-text); }
.page .reach-detail { margin: 4px 0 0; font-size: 20px; line-height: 1.3; color: var(--orba-text-muted); }
.page .sam-scenarios { width: auto; margin: 14px 0 0; font-size: 22px; font-variant-numeric: tabular-nums; }
.page .sam-scenarios td, .page .sam-scenarios th { padding: 6px 28px 6px 0; }
.page .sam-scenarios th, .page .asia-ranking th { font-size: 17px; letter-spacing: .1em; }
.page .sam-scenarios td:nth-child(3) { color: var(--orba-cool); font-weight: 700; }
.page .sam-goal { margin: 12px 0 0; font-size: 21px; line-height: 1.35; color: var(--orba-accent); }
.page .asia-ranking { table-layout: fixed; margin: 14px 0 0; font-size: 20px; line-height: 1.25; }
.page .asia-ranking th:first-child { width: 15%; }
.page .asia-ranking th:nth-child(2), .page .asia-ranking th:nth-child(4) { width: 11%; }
.page .asia-ranking th:nth-child(3) { width: 14%; }
.page .asia-ranking th:nth-child(5) { width: 9%; }
.page .asia-ranking th { vertical-align: bottom; }
.page .asia-ranking td, .page .asia-ranking th { padding: 6px 12px 6px 0; }
.page .asia-ranking td:nth-child(n+2):nth-child(-n+5), .page .asia-ranking th:nth-child(n+2):nth-child(-n+5) { text-align: center; }
.page .asia-ranking td:nth-child(5) { font-weight: 700; color: var(--orba-text); }
.page .asia-ranking td:last-child { color: var(--orba-text-muted); }
.page .reach-note { margin: 18px 0 0; padding-top: 14px; font-size: 20px; line-height: 1.35; }
.page .reach-sources { margin: 10px 0 0; font-size: 19px; line-height: 1.3; color: var(--orba-text-muted); }
/* 06 Why now (#2563): one big ×11 with the moat under it; Thailand's four search lines are the
   texture behind, longevity in orange, a solid line at each January so the late-2025 take-off reads. */
.trends { --trend: var(--orba-cool); }
.trends .is-hot { --trend: var(--orba-accent); }
.trends svg { display: block; max-width: none; overflow: visible; }
.trends [data-reveal="pop"] { transform-box: fill-box; transform-origin: center; }
.trends-line { fill: none; stroke: var(--trend); stroke-linejoin: round; stroke-linecap: round; }
.trends-now { fill: var(--trend); stroke: #111114; stroke-width: 4; }
.trends-axis { fill: var(--orba-text-muted); font-size: 20px; font-variant-numeric: tabular-nums; }
.trends-year { stroke: var(--orba-line); stroke-width: 2; }
.trends-c { position: relative; display: flow-root; margin-top: 4px; }
.trends-hero { position: absolute; top: 6px; left: 0; z-index: 1; }
.page .trends-hero strong { display: block; font-size: 260px; line-height: .9; font-weight: 900; letter-spacing: -0.05em; color: var(--orba-accent); }
.trends-hero span { display: block; margin-top: 10px; font-size: 30px; color: var(--orba-text-secondary); }
.trends-hero b { color: var(--orba-text); }
/* The hero sits over the year lines; its text boxes mask them. */
.trends-hero > :is(span, p) { width: fit-content; background: #111114; padding-right: 16px; }
.revamp .trends-hero-moat { margin: 26px 0 0; max-width: 620px; font-size: 30px; line-height: 1.3; font-weight: 500; color: var(--orba-text); }
.trends-hero-moat b { color: var(--orba-accent); font-weight: 800; }
.trends-field { margin-top: 160px; }
.trends-texture .trends-line { stroke-width: 5; opacity: .55; }
.trends-texture.is-hot .trends-line { opacity: 1; stroke-width: 6; }
.trends-leader { fill: none; stroke: var(--orba-line); stroke-width: 1.5; }
.trends-end-group.is-hot .trends-leader { stroke: var(--orba-accent); }
.trends-end { fill: var(--orba-text-secondary); font-size: 26px; font-weight: 700; }
.trends-end.is-hot { fill: var(--orba-accent); }
.trends-end-term { font-weight: 500; }
.page .trends-source { margin: 36px 0 0; font-size: 16px; line-height: 1.4; color: var(--orba-text-muted); }
.page .landscape-source { margin: 12px 0 0; font-size: 15px; line-height: 1.35; color: var(--orba-text-muted); }

/* 13 Feature coverage matrix (#2650, #2704): rows = what a member gets in the order of a visit, under
   three section headings; columns = Orba first, then three kinds of Bangkok alternative, each header naming
   its providers. Every cell carries a word beside its mark (Yes / No / Partial / Planned), never colour alone. */
.page .matrix { margin: 0; table-layout: fixed; font-size: 25px; line-height: 1.2; }
.page .matrix th, .page .matrix td { padding: 6px 12px; vertical-align: middle; }
.page .matrix th { font-family: Satoshi, sans-serif; text-transform: none; letter-spacing: 0; font-size: 21px; line-height: 1.15; font-weight: 700; color: var(--orba-text); border-bottom: 1px solid var(--orba-line); }
.page .matrix th small, .page .matrix td small { display: block; font-size: 15px; font-weight: 500; line-height: 1.25; color: var(--orba-text-muted); margin-top: 3px; }
.page .matrix th.m-feature, .page .matrix td.m-feature { width: 576px; text-align: left; }
.page .matrix td.m-feature { font-size: 25px; font-weight: 700; color: var(--orba-text); }
.page .matrix th:not(.m-feature), .page .matrix td:not(.m-feature) { text-align: center; }
.page .matrix td:not(.m-feature) b { display: inline-block; width: 34px; font-weight: 800; }
.page .matrix .m-yes { color: var(--orba-text); }
.page .matrix .m-yes b { color: #6EE7B7; }
.page .matrix .m-no { color: var(--orba-text-muted); }
.page .matrix .m-no b { color: rgba(243,229,217,.45); }
.page .matrix .m-plan { color: var(--orba-accent); }
.page .matrix .m-plan b { color: var(--orba-accent); }
.page .matrix .m-part { color: var(--orba-text); }
.page .matrix .m-part b { color: var(--orba-cool); }
.page .matrix th.m-orba, .page .matrix td:nth-child(2) { background: rgba(255,106,42,.12); }
.page .matrix th.m-orba { color: var(--orba-accent); border-bottom-color: var(--orba-accent); }
.page .matrix tr.m-section th { padding: 8px 12px 4px; border-bottom: 0; background: none; font-family: "Geist Mono", monospace; font-size: 14px; letter-spacing: .14em; text-transform: uppercase; color: var(--orba-cool); font-weight: 500; }
.page .matrix tr.m-price td { padding-top: 12px; border-top: 1px solid var(--orba-line); font-variant-numeric: tabular-nums; color: var(--orba-text); }
.page .matrix tr.m-price td b { display: block; width: auto; font-size: 24px; font-weight: 800; }
.page .matrix-source { margin: 12px 0 0; font-size: 15px; line-height: 1.35; color: var(--orba-text-muted); }

/* #2653 Money: roadmap-with-money variants (slide 11), the final use of funds (13) and appendix A10.
   Generated by build-money-slides.mjs from money-model.json. */
.is-positive { color: #6EE7B7; }
/* Roadmap (11): four money rows under the workstreams, one value per quarter (William chose this over year cards and a chart, 7 Oct). */
.page:has(.roadmap-money) { padding-top: 40px; }
.roadmap-money .roadmap-columns.full .gantt { font-size: 23px; margin-top: 12px; }
.roadmap-money .roadmap-columns.full .gantt-label, .roadmap-money .roadmap-columns.full .gantt-track { min-height: 38px; }
.roadmap-money .roadmap-columns.full .gantt-now { top: 70px; }
.roadmap-money .gantt-money-first { border-top: 2px solid var(--orba-line); margin-top: 8px; }
.roadmap-money .gantt-money > span { grid-row: 1; justify-self: center; align-self: center; }
.roadmap-money .gantt-money { font-variant-numeric: tabular-nums; }
.roadmap-money .gantt-money > span { font-size: 22px; font-weight: 700; color: var(--orba-text); }
.roadmap-money .gantt-money > span.is-positive { color: #6EE7B7; }
.roadmap-money .gantt-money-label { color: var(--orba-cool); }
.roadmap-money .roadmap-benchmark { font-size: 19px; margin-top: 12px; padding-top: 12px; }
.roadmap-benchmark a { color: var(--orba-cool); }
/* Use of funds (13): the aside links to A10. */
/* Appendix A10: quarterly revenue, costs and cash, never animated. */
.pl-layout .pl-intro { margin: 4px 0 12px; }
.page .pl-table { width: 100%; border-collapse: collapse; font-size: 18px; line-height: 1.25; font-variant-numeric: tabular-nums; }
.page .pl-table th, .page .pl-table td { padding: 5px 9px; text-align: right; border-bottom: 1px solid var(--orba-ring-1); }
.page .pl-table thead th { color: var(--orba-cool); font-size: 18px; font-weight: 700; }
.page .pl-table td.pl-label { text-align: left; font-weight: 500; color: var(--orba-text-secondary); }
.page .pl-table tr.total td { font-weight: 700; color: var(--orba-text); border-bottom: 1px solid var(--orba-line); }
.page .pl-table tr.count td { color: var(--orba-text-muted); }
.pl-assumptions { display: grid; grid-template-columns: repeat(4, 1fr); gap: 28px; margin-top: 20px; padding-top: 14px; border-top: 1px solid var(--orba-line); }
.pl-assumptions p { font-size: 18px; line-height: 1.35; color: var(--orba-text-muted); margin: 6px 0 0; }
/* Use of funds variants D, E, F (#2653): bars by share of the raise, text beside them. */
.uof-layout { margin-top: 28px; font-variant-numeric: tabular-nums; }
.uof-bar { display: block; height: 100%; border-radius: 6px; }
.page .uof-table { width: 100%; font-size: 24px; line-height: 1.3; border-collapse: collapse; }
.page .uof-table th, .page .uof-table td { padding: 16px 14px; text-align: left; border-bottom: 1px solid var(--orba-ring-1); vertical-align: middle; }
.page .uof-table thead th { color: var(--orba-cool); font-size: 17px; }
.page .uof-table .uof-amount { text-align: right; white-space: nowrap; }
.page .uof-table .uof-share { width: 400px; white-space: nowrap; }
.uof-table .uof-share .uof-bar { display: inline-block; height: 26px; vertical-align: middle; margin-right: 14px; }
.uof-table .uof-share b { vertical-align: middle; }
.page .uof-table tfoot td { border-top: 1px solid var(--orba-line); border-bottom: 0; font-weight: 700; }
/* #2653: 2028 year columns in A10 */
.page .pl-table th.year, .page .pl-table td.year { border-left: 1px solid var(--orba-line); font-weight: 700; }
.page .pl-table thead th { font-size: 16px; }
.page .uof-table-tight { font-size: 21px; }
.page .uof-table-tight th, .page .uof-table-tight td { padding: 12px 10px; }
.page .uof-table-tight .uof-share { width: 270px; }

/* #2653: use of funds, the donut beside the table and two KPIs under it */
.uof-kpis { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; margin-top: 34px; padding-top: 26px; border-top: 1px solid var(--orba-line); }
.page .uof-kpis strong { display: block; font-size: 64px; line-height: 1.1; letter-spacing: -.03em; color: var(--orba-cool); }
.page .uof-kpis strong.is-positive { color: #6EE7B7; }
.page .uof-kpis span { display: block; font-size: 24px; line-height: 1.35; margin-top: 8px; color: var(--orba-text-secondary); }
.uof-donut-layout { display: grid; grid-template-columns: 460px 1fr; gap: 72px; align-items: center; }
.uof-donut-layout .uof-kpis { grid-column: 1 / -1; }
.uof-donut { width: 440px; height: 440px; display: block; }
.uof-donut circle.seg { fill: none; stroke-width: 58; }
.uof-donut text.big { font-size: 64px; font-weight: 700; fill: var(--orba-text); text-anchor: middle; letter-spacing: -.03em; }
.uof-donut text.small { font-size: 19px; fill: var(--orba-text-muted); text-anchor: middle; }
.uof-donut-table .uof-table-tight .uof-share { width: 260px; }
/* #2706: one line per row, full-figure amounts, the header aligned with its columns, the THB total once in the note */
.page .uof-table th.uof-amount { text-align: right; }
.page .uof-table .uof-line { display: block; font-size: 19px; line-height: 1.3; color: var(--orba-text-muted); margin-top: 2px; }
.page .uof-lines-layout .uof-table { font-size: 24px; }
.page .uof-lines-layout .uof-table th, .page .uof-lines-layout .uof-table td { padding: 9px 12px; }
.page .uof-lines-layout .uof-table .uof-share { width: 340px; }
.uof-lines-layout .uof-kpis { margin-top: 18px; padding-top: 18px; }
.uof-lines-layout .uof-kpis, .uof-lines-layout .uof-note { grid-column: 1 / -1; }
.uof-lines-layout .uof-donut { width: 400px; height: 400px; }
.uof-lines-layout .uof-donut text.big { font-size: 50px; }
.page .uof-note { margin: 14px 0 0; font-size: 19px; }
