/* ==========================================================================
   Pitch deck (/pitch). Visual first: one short headline and one picture,
   number or diagram per slide. Same system as the site: white and ink, one
   blue, hairlines, no gradients or shadows.

   One grid for every slide: the section label at the top, the headline in the
   same place below it, then the visual centred in the space that is left, with
   any source line at the bottom. Everything shares the same left edge.

   Wide screens: each slide is a 16:9 canvas sized in --u (1% of its width).
   Phones: a 9:16 canvas (see the portrait section). Print: 1600×900 pages.
   Device mockups are pre-composed images (scripts/pitch-shots.js).
   ========================================================================== */

:root {
  --u: min(1vw, calc(100vh / 56.25));
  --fs-display: calc(var(--u) * 5.8);
  --fs-h: calc(var(--u) * 4.2);
  --fs-h3: calc(var(--u) * 1.75);
  --fs-big: calc(var(--u) * 4.4);
  --fs-mega: calc(var(--u) * 13);
  --fs-clock: calc(var(--u) * 10);
  --fs-lead: calc(var(--u) * 1.7);
  --fs-body: calc(var(--u) * 1.35);
  --fs-small: calc(var(--u) * 1.1);
  --fs-label: calc(var(--u) * 0.82);
  --s1: calc(var(--u) * 0.5);
  --s2: calc(var(--u) * 0.9);
  --s3: calc(var(--u) * 1.5);
  --s4: calc(var(--u) * 2.3);
  --s5: calc(var(--u) * 3.4);
  --pad-x: calc(var(--u) * 5);
  --pad-y: calc(var(--u) * 3.6);
  --dev-h: calc(var(--u) * 30);
}

html { scroll-snap-type: y mandatory; }
body[data-page="pitch"] { background: var(--bg); counter-reset: slide; }
.slide { break-after: page; }

/* ---------- toolbar ---------- */
.deck-bar {
  position: fixed; top: 12px; right: 12px; z-index: 20;
  display: flex; align-items: center; gap: 4px; padding: 4px;
  background: var(--bg); border: 1px solid var(--line); border-radius: var(--r);
}
.deck-bar .logo { display: none; }
.deck-count { padding: 0 10px; font-size: 0.75rem; color: var(--ink-3); min-width: 64px; text-align: center; }
.deck-link { display: inline-flex; align-items: center; height: 32px; padding: 0 12px; border-radius: var(--r-xs); font-size: 0.82rem; font-weight: 550; color: var(--ink); }
.deck-link:hover { background: var(--bg-2); color: var(--ink); }
.deck-cta { background: var(--ink); color: var(--bg); }
.deck-cta:hover { background: var(--ink-2); color: var(--bg); }
.pdf-phone { display: none !important; }

/* ---------- slide canvas and the shared grid ---------- */
.slide {
  height: 100vh; height: 100svh; scroll-snap-align: start; position: relative;
  display: flex; align-items: center; justify-content: center; background: var(--bg); overflow: hidden;
}
.slide + .slide { border-top: 1px solid var(--line); }
.frame {
  position: relative; z-index: 1; width: calc(var(--u) * 100); height: calc(var(--u) * 56.25);
  padding: var(--pad-y) var(--pad-x) calc(var(--u) * 5.4); display: flex; flex-direction: column;
  counter-increment: slide;
}
.frame::after {
  content: "UbuntuCare · Pre-seed 2026      " counter(slide, decimal-leading-zero) " / " var(--total, "");
  position: absolute; left: var(--pad-x); bottom: calc(var(--u) * 2); white-space: pre;
  font-family: var(--mono); font-size: var(--fs-label); letter-spacing: 0.06em; color: var(--ink-4);
}
.frame > .label:first-child { flex: none; }
.frame > h2, .frame > .head { flex: none; margin-top: var(--s3); }
.frame > .body { flex: 1 1 auto; min-height: 0; margin-top: var(--s4); align-content: center; }
.frame > .src, .frame > .foot, .frame > .kicker-line { flex: none; margin-top: var(--s3); }

/* ---------- type ---------- */
.slide h2, .slide .display { font-size: var(--fs-h); font-weight: 580; letter-spacing: -0.04em; line-height: 1.04; max-width: 24ch; color: var(--ink); text-wrap: balance; }
.slide .display { font-size: var(--fs-display); line-height: 1.0; max-width: 14ch; }
.slide h2 .blue, .slide .blue { color: var(--blue); }
.slide h3 { font-size: var(--fs-h3); font-weight: 600; letter-spacing: -0.02em; line-height: 1.2; color: var(--ink); }
.slide p, .slide li, .slide dt, .slide dd, .slide figcaption { font-size: var(--fs-body); line-height: 1.45; color: var(--ink-2); }
.slide .lead { font-size: var(--fs-lead); line-height: 1.4; color: var(--ink-2); max-width: 30ch; }
.slide .label { font-family: var(--mono); font-size: var(--fs-label); font-weight: 500; letter-spacing: 0.09em; text-transform: uppercase; color: var(--ink-3); line-height: 1.4; }
.slide .label b { color: var(--ink); font-weight: 600; }
.slide .note { font-size: var(--fs-small); color: var(--ink-3); }
.slide .src, .slide .foot { font-family: var(--mono); font-size: var(--fs-label); letter-spacing: 0.02em; color: var(--ink-4); }
.slide .strong { color: var(--ink); font-weight: 600; }
.slide .big-num { font-size: var(--fs-big); font-weight: 620; letter-spacing: -0.05em; line-height: 1; color: var(--ink); }
.slide .mega { font-size: var(--fs-mega); font-weight: 640; letter-spacing: -0.06em; line-height: 0.86; color: var(--ink); font-variant-numeric: tabular-nums; }
.slide .mega.blue { color: var(--blue); }
.slide .mega span { font-size: 0.45em; letter-spacing: -0.03em; color: var(--ink-4); }
.slide .kicker-line { font-size: var(--fs-h3); font-weight: 600; color: var(--ink); letter-spacing: -0.02em; }
.slide b { color: var(--ink); font-weight: 600; }
.slide ul, .slide ol { list-style: none; margin: 0; padding: 0; }
.slide figure { margin: 0; }
.slide a:not(.btn) { color: var(--blue); }
.wordmark .dot, .wordmark .care { fill: var(--blue); }
.slide .tile { --s: calc(var(--u) * 3); }
.slide .tile-sm { --s: calc(var(--u) * 2.4); }
.slide .tile-lg { --s: calc(var(--u) * 4.4); }

/* ---------- grids ---------- */
.g2, .g3, .g4 { display: grid; gap: var(--s4); }
.g2 { grid-template-columns: 1fr 1fr; gap: var(--s5); }
.g3 { grid-template-columns: repeat(3, 1fr); gap: var(--s5); }
.g4 { grid-template-columns: repeat(4, 1fr); }
/* Two halves on one centre line: words on the left, the picture on the right. */
.g-split { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s5); align-items: center; }

/* ---------- cover and close: words left, photo full-bleed right ---------- */
.cover .frame { justify-content: center; }
.cover-text { display: flex; flex-direction: column; gap: var(--s3); max-width: calc(var(--u) * 42); }
.cover-photo { position: absolute; inset: 0 0 0 auto; width: 47%; background: var(--bg-3); }
.cover-photo img { width: 100%; height: 100%; object-fit: cover; }
.title-mark .wordmark { height: calc(var(--u) * 2.4); width: auto; color: var(--ink); }
.cta-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s2); max-width: calc(var(--u) * 36); }
.cta-row .btn { justify-content: center; }

/* ---------- 2 story (ink) ---------- */
.slide.ink { background: var(--dark); }
.slide.ink + .slide { border-top: 0; }
.slide.ink h2 { color: #fff; }
.slide.ink .label, .slide.ink .foot { color: #8c8c8c; }
.slide.ink .label b { color: #fff; }
.slide.ink .frame::after { color: #6f6f6f; }
.story { display: grid; grid-template-columns: auto 1fr; gap: var(--s5); align-items: center; }
.slide .clock { font-size: var(--fs-clock); font-weight: 640; letter-spacing: -0.06em; line-height: 0.9; color: #fff; font-variant-numeric: tabular-nums; }
.story h2 { max-width: 22ch; }
.nw { white-space: nowrap; }
.timeline { display: flex; align-items: center; }
.timeline svg { width: 100%; height: auto; max-height: 100%; display: block; }
.timeline .tl-narrow { display: none; }
.tl-gap { fill: rgba(74, 157, 255, 0.16); stroke: #4a9dff; stroke-width: 1.5; stroke-dasharray: 4 4; }
.tl-gap-t { font-family: var(--mono); font-size: 15px; letter-spacing: 0.1em; text-transform: uppercase; fill: #8fc2ff; }
.tl-nursery { fill: #3a3a3a; }
.tl-shift { fill: #fff; }
.tl-in, .tl-lab { font-family: var(--font); font-size: 17px; font-weight: 600; fill: #e8e8e8; }
.tl-lab { font-size: 15px; }
.tl-in.dark { fill: #111; }
.tl-axis { stroke: #555; stroke-width: 1.5; }
.tl-ticks line { stroke: #555; stroke-width: 1.5; }
.tl-ticks text { font-family: var(--mono); font-size: 14px; letter-spacing: 0.06em; text-transform: uppercase; fill: #8c8c8c; }

/* ---------- 3 three visual stats on one baseline ---------- */
.stat3 figure { display: grid; grid-template-rows: calc(var(--u) * 15) auto auto; row-gap: var(--s2); align-content: start; }
.stat3 figure > :first-child { align-self: end; }
.stat3 figcaption { max-width: 22ch; }
.units { display: grid; grid-template-columns: repeat(10, calc(var(--u) * 1.25)); gap: calc(var(--u) * 0.28); transform: scaleY(-1); }
.units i { display: block; width: calc(var(--u) * 1.25); height: calc(var(--u) * 1.25); border-radius: 2px; background: var(--bg-3); }
.units i.on { background: var(--blue); }
.vbars { display: flex; align-items: flex-end; gap: calc(var(--u) * 1.6); height: 100%; }
.vbars > div { height: 100%; width: calc(var(--u) * 6); display: flex; flex-direction: column; justify-content: flex-end; align-items: center; gap: 4px; }
.vb { display: block; width: 100%; height: calc(var(--h) * 0.72); background: var(--bg-3); border-radius: 4px 4px 0 0; order: 1; }
.vb.now { background: var(--ink); }
.vbars b { font-size: var(--fs-small); order: 0; }
.vbars .lab { order: 2; font-family: var(--mono); font-size: var(--fs-label); color: var(--ink-3); }
.law .tile-law { --s: calc(var(--u) * 9); border-radius: calc(var(--u) * 1); }

/* ---------- 4 demand ---------- */
.g-demand { display: grid; grid-template-columns: 1.1fr 1fr; gap: var(--s5); align-items: center; }
.chat { display: grid; gap: var(--s2); }
.msg { background: var(--bg-2); border: 1px solid var(--line); border-radius: 12px 12px 12px 3px; padding: var(--s2) var(--s3); display: flex; flex-direction: column; gap: 2px; }
.msg .who { font-family: var(--mono); font-size: var(--fs-label); letter-spacing: 0.03em; color: var(--ink-3); }
.slide .msg p { color: var(--ink); }
.demand-num { display: flex; flex-direction: column; gap: var(--s2); }
.demand-num .mega { color: var(--blue); }

/* ---------- 5 three cards with the same shape ---------- */
.flow3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s5); align-items: stretch; }
.flow3 li { position: relative; display: grid; grid-template-rows: calc(var(--u) * 4.4) auto 1fr; row-gap: var(--s2); padding: var(--s4) var(--s3); border: 1px solid var(--line); border-radius: var(--r); }
.flow3 li.us { border: 2px solid var(--blue); }
.flow3 li:not(:last-child)::after {
  content: "→"; position: absolute; right: calc(var(--s5) * -0.5); top: 50%; transform: translate(50%, -50%);
  font-size: calc(var(--u) * 2.4); color: var(--ink-3); line-height: 1;
}
.flow3 .mark { display: flex; align-items: center; }
.flow3 .tile { --s: calc(var(--u) * 4.4); }
.flow3 .mark .wordmark { height: calc(var(--u) * 2); width: auto; color: var(--ink); }

/* ---------- 6 illustrations ---------- */
.vigs li { display: flex; flex-direction: column; gap: var(--s1); }
.vigs .vignette { margin-bottom: var(--s2); }
.vigs li > p:not(.label) { max-width: 24ch; }

/* ---------- device mockups (pre-composed images) ---------- */
.dev { display: block; height: auto; }

/* 7 · overview: laptop, tablet and phone standing on one baseline */
.g-tour { display: grid; grid-template-columns: 1fr calc(var(--u) * 17); gap: var(--s5); align-items: center; }
.stage { position: relative; aspect-ratio: 100 / 47.5; }
.stage .dev { position: absolute; bottom: 0; }
.stage .at-laptop { left: 0; width: 77%; }
.stage .at-tablet { right: 13%; width: 23%; }
.stage .at-phone { right: 0; width: 13.5%; }
.legend { display: grid; gap: var(--s3); }
.legend li { display: grid; gap: 2px; padding-top: var(--s2); border-top: 1px solid var(--line); }
.legend b { font-size: var(--fs-h3); letter-spacing: -0.02em; }
.legend li > span:last-child { font-size: var(--fs-small); color: var(--ink-3); }

/* 8, 9 · three phones: edges on the content margins, captions on one line */
.shots { display: grid; grid-template-columns: repeat(3, auto); justify-content: space-between; align-content: center; }
.shots li { display: grid; grid-template-rows: auto auto auto; row-gap: var(--s1); justify-items: start; align-content: start; }
.shots .dev { height: var(--dev-h); width: auto; margin-bottom: var(--s2); }
.shots li > p { max-width: calc(var(--dev-h) * 0.49); }

/* 10 · trust */
.g-trust { display: grid; grid-template-columns: 1fr auto; gap: var(--s5); align-items: center; }
.g-trust .dev { height: calc(var(--u) * 34); width: auto; }
.checks6 { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s3) var(--s4); margin-bottom: var(--s4) !important; }
.checks6 li { display: flex; align-items: center; gap: var(--s2); color: var(--ink); font-weight: 550; }

/* ---------- bars (single series) ---------- */
.bars { display: grid; grid-template-columns: max-content 1fr max-content; gap: var(--s2) var(--s3); align-items: center; }
.bars [role="row"] { display: contents; }
.bars [role="rowheader"] { font-size: var(--fs-body); color: var(--ink); }
.bars b { font-size: var(--fs-body); font-variant-numeric: tabular-nums; text-align: right; }
.track { display: block; height: calc(var(--u) * 1.8); }
.track i { display: block; height: 100%; width: var(--v); min-width: 3px; background: var(--blue); border-radius: 0 4px 4px 0; }

/* ---------- 11 traction ---------- */
.hero-num { display: flex; flex-direction: column; gap: var(--s3); }
.facts3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s3); margin-top: var(--s4) !important; }
.facts3 li { display: flex; flex-direction: column; border-top: 2px solid var(--ink); padding-top: var(--s2); }
.facts3 b { font-size: calc(var(--u) * 2.4); letter-spacing: -0.04em; line-height: 1.1; }
.facts3 span { font-size: var(--fs-small); color: var(--ink-3); }

/* ---------- 12 why now ---------- */
.why4 > div { display: flex; flex-direction: column; gap: var(--s2); }
.why4 .big-num { margin-top: var(--s2); font-size: calc(var(--u) * 3.6); }
.why4 p:not(.big-num) { max-width: 20ch; }

/* ---------- 13 market ---------- */
.mkt { margin: 0 0 var(--s3); display: flex; flex-direction: column; }
.mkt > div { display: flex; justify-content: space-between; align-items: baseline; gap: var(--s3); padding: var(--s2) 0; border-top: 1px solid var(--line); }
.mkt > div:last-child { border-bottom: 2px solid var(--ink); }
.mkt dd { margin: 0; font-size: calc(var(--u) * 2.6); font-weight: 620; letter-spacing: -0.04em; color: var(--ink); }
.mkt .top dd { color: var(--blue); }
.rings { justify-self: center; height: calc(var(--u) * 32); aspect-ratio: 1; }
.rings svg { width: 100%; height: 100%; display: block; }
.rings .r3 { fill: var(--bg-2); stroke: var(--line-2); }
.rings .r2 { fill: var(--blue-50); stroke: var(--blue); stroke-width: 1.5; }
.rings .r1 { fill: var(--blue); }
.rings text { font-family: var(--mono); font-size: 12px; letter-spacing: 0.08em; text-transform: uppercase; fill: var(--ink-3); }
.rings text.t1 { fill: #fff; }

/* ---------- 14 model ---------- */
.model { display: flex; flex-direction: column; justify-content: center; gap: var(--s2); }
.split-bar { display: flex; height: calc(var(--u) * 8); gap: 3px; }
.split-bar .seg { flex: 0 0 calc(var(--w) - 1.5px); min-width: 0; overflow: hidden; display: flex; flex-direction: column; justify-content: center; padding: 0 var(--s3); border-radius: 4px; }
.split-bar .carer { background: var(--ink); }
.split-bar .ours { background: var(--blue); }
.split-bar b { font-size: calc(var(--u) * 2.8); letter-spacing: -0.04em; color: #fff; line-height: 1; }
.split-bar span { font-family: var(--mono); font-size: var(--fs-label); letter-spacing: 0.08em; text-transform: uppercase; color: rgba(255, 255, 255, 0.8); margin-top: 4px; }
:root[data-theme="dark"] .split-bar .carer { background: #3a3a3a; }
.slide .sum { font-size: var(--fs-lead); color: var(--ink-2); }
.row4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--s3); margin-top: var(--s3) !important; padding-top: var(--s3); border-top: 1px solid var(--line); }
.row4 li, .grid2 li { display: flex; align-items: center; gap: var(--s2); font-weight: 550; color: var(--ink); }

/* ---------- 15 club ---------- */
.club-left { display: flex; flex-direction: column; gap: var(--s4); }
.eq { display: flex; align-items: center; gap: var(--s2); }
.eq > span:not(.eq-arrow) { border: 1px solid var(--line-2); border-radius: var(--r); padding: var(--s1) var(--s3); font-size: calc(var(--u) * 2); font-weight: 600; letter-spacing: -0.03em; color: var(--ink); white-space: nowrap; }
.eq .eq-c { background: var(--blue); border-color: var(--blue) !important; color: #fff !important; }
.eq-arrow { font-size: calc(var(--u) * 2); color: var(--ink-3); }
.grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s3) var(--s4); }
.member-card { justify-self: end; width: 100%; max-width: calc(var(--u) * 40); aspect-ratio: 1.586; border-radius: calc(var(--u) * 1.2); background: var(--dark); color: var(--dark-ink); padding: calc(var(--u) * 2.2); display: flex; flex-direction: column; justify-content: space-between; }
:root[data-theme="dark"] .member-card { border: 1px solid var(--line-2); }
.mc-top { display: flex; justify-content: space-between; align-items: center; gap: var(--s2); }
.mc-top .wordmark { height: calc(var(--u) * 1.4); width: auto; color: #fff; }
.mc-top span { font-family: var(--mono); font-size: var(--fs-label); letter-spacing: 0.1em; text-transform: uppercase; color: var(--dark-ink-2); }
.slide .mc-bal { font-size: calc(var(--u) * 4); font-weight: 620; letter-spacing: -0.04em; line-height: 1; color: #fff; }
.slide .mc-sub { color: #8fc2ff; font-size: var(--fs-body); }
.slide .mc-foot { font-family: var(--mono); font-size: var(--fs-label); letter-spacing: 0.08em; text-transform: uppercase; color: var(--dark-ink-2); }

/* ---------- 16 competition ---------- */
.quad { display: flex; align-items: center; justify-content: center; }
.quad svg { height: calc(var(--u) * 34); width: auto; max-width: 100%; overflow: visible; display: block; }
.q-axis { stroke: var(--line-2); stroke-width: 1.5; }
.q-hl { fill: var(--blue-50); }
.q-lab { font-family: var(--mono); font-size: 12px; letter-spacing: 0.06em; fill: var(--ink-3); text-transform: uppercase; }
.q-dot { fill: var(--ink-3); }
.q-us { fill: var(--blue); stroke: var(--bg); stroke-width: 2; }
.q-name { font-family: var(--font); font-size: 17px; fill: var(--ink-2); }
.q-name.us { font-size: 22px; font-weight: 650; fill: var(--ink); }

/* ---------- 17 go to market ---------- */
.gtm { grid-template-columns: 1.45fr 1fr; }
.chan4 { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s4) var(--s4); }
.chan4 li { display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto auto; column-gap: var(--s3); align-items: center; }
.chan4 .tile { grid-row: 1 / 3; }
.chan4 b { font-size: var(--fs-h3); letter-spacing: -0.02em; align-self: end; line-height: 1.2; white-space: nowrap; }
.chan4 span { color: var(--ink-3); font-size: var(--fs-small); align-self: start; }
.beach { background: var(--bg-2); border-radius: var(--r); padding: var(--s4); display: flex; flex-direction: column; gap: var(--s2); }
.slide .beach .mega { font-size: calc(var(--u) * 9); }

/* ---------- 18 team ---------- */
.team { gap: var(--s5); align-items: center; }
.person { display: grid !important; grid-template-columns: calc(var(--u) * 16) 1fr; gap: var(--s3); align-items: center; }
.person img { width: 100%; aspect-ratio: 1; object-fit: cover; object-position: top; border-radius: var(--r); background: var(--bg-3); }
.person figcaption { display: flex; flex-direction: column; gap: var(--s1); }
.person h3 { font-size: calc(var(--u) * 2.4); }

/* ---------- 19 ask ---------- */
.ask { align-items: start; }
.ask > div { display: flex; flex-direction: column; gap: var(--s3); }
.miles { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s3) var(--s4); }
.miles li { display: flex; flex-direction: column; border-top: 2px solid var(--ink); padding-top: var(--s2); }
.miles b { font-size: calc(var(--u) * 3.2); letter-spacing: -0.04em; line-height: 1.05; }
.miles span { font-size: var(--fs-small); color: var(--ink-3); }
.funds { padding-top: var(--s2); border-top: 2px solid var(--ink); }
.funds .track { height: calc(var(--u) * 1.5); }

/* ---------- 21 sources ---------- */
.sources { display: block !important; columns: 2; column-gap: var(--s5); counter-reset: src; }
.sources li { break-inside: avoid; display: grid; grid-template-columns: calc(var(--u) * 2) 1fr; padding: var(--s1) 0; font-size: var(--fs-small); }
.sources li::before { counter-increment: src; content: counter(src); font-family: var(--mono); font-size: var(--fs-label); color: var(--ink-3); padding-top: 0.25em; }

/* ==========================================================================
   Phones and portrait screens: the same deck as a 9:16 story. Each slide is a
   portrait canvas (100u × 177.78u) that fits one screen, swiped one at a time.
   The phone PDF (assets/ubuntucare-pitch-deck-mobile.pdf) prints this layout.
   ========================================================================== */
@media screen and (max-width: 1023.98px), screen and (max-aspect-ratio: 1/1) {
  :root {
    --u: min(1vw, calc(100svh / 177.78));
    --fs-display: calc(var(--u) * 11);
    --fs-h: calc(var(--u) * 8.4);
    --fs-h3: calc(var(--u) * 4.4);
    --fs-big: calc(var(--u) * 9.6);
    --fs-mega: calc(var(--u) * 28);
    --fs-clock: calc(var(--u) * 22);
    --fs-lead: calc(var(--u) * 4.6);
    --fs-body: calc(var(--u) * 4.1);
    --fs-small: calc(var(--u) * 3.5);
    --fs-label: calc(var(--u) * 2.9);
    --s1: calc(var(--u) * 1.4);
    --s2: calc(var(--u) * 2.4);
    --s3: calc(var(--u) * 3.8);
    --s4: calc(var(--u) * 5.4);
    --s5: calc(var(--u) * 7.2);
    --pad-x: calc(var(--u) * 6);
    --pad-y: calc(var(--u) * 10);
    --dev-h: calc(var(--u) * 56);
  }
  .pdf-wide { display: none !important; }
  .pdf-phone { display: inline-flex !important; }
  .deck-bar { top: 10px; right: 10px; }
  .deck-count { display: none; }
  .frame { height: calc(var(--u) * 177.78); padding: var(--pad-y) var(--pad-x) calc(var(--u) * 12); }
  .frame::after { bottom: calc(var(--u) * 5); }
  .slide .tile { --s: calc(var(--u) * 10); }
  .slide .tile-sm { --s: calc(var(--u) * 7.6); }
  .slide .tile-lg { --s: calc(var(--u) * 11.5); }
  .g2, .g3, .g4, .g-split, .gtm, .g-demand, .flow3, .g-trust, .g-tour, .story, .team { grid-template-columns: 1fr; gap: var(--s4); }

  /* cover and close: photo on top, words underneath */
  .cover-photo { inset: 0 0 auto 0; width: 100%; height: 47%; }
  .cover .frame { justify-content: flex-end; padding-bottom: calc(var(--u) * 16); }
  .cover-text { max-width: none; }
  .title-mark .wordmark { height: calc(var(--u) * 6.4); }
  .cta-row { max-width: none; }

  .story { gap: var(--s3); }
  .timeline .tl-wide { display: none; }
  .timeline .tl-narrow { display: block; }

  /* three stats become three rows: picture left, number right */
  .stat3 { gap: var(--s4); }
  .stat3 figure { grid-template-columns: calc(var(--u) * 30) 1fr; grid-template-rows: auto auto; column-gap: var(--s3); row-gap: var(--s1); align-items: end; }
  .stat3 figure > :first-child { grid-row: 1 / 3; height: calc(var(--u) * 26); }
  .stat3 figcaption { align-self: start; font-size: var(--fs-small); }
  .units { grid-template-columns: repeat(10, calc(var(--u) * 2.3)); gap: calc(var(--u) * 0.45); align-self: end; }
  .units i { width: calc(var(--u) * 2.3); height: calc(var(--u) * 2.3); }
  .vbars { gap: calc(var(--u) * 2.4); }
  .vbars > div { width: calc(var(--u) * 11); }
  .law .tile-law { --s: calc(var(--u) * 20); border-radius: calc(var(--u) * 3); }

  .msg:nth-child(4) { display: none; }
  .slide .demand-num .mega { font-size: calc(var(--u) * 22); }

  .flow3 { gap: var(--s4); }
  .flow3 li { grid-template-columns: calc(var(--u) * 12) 1fr; grid-template-rows: auto auto; column-gap: var(--s3); row-gap: 0; padding: var(--s3); align-items: center; }
  .flow3 .mark { grid-row: 1 / 3; }
  .flow3 li.us { grid-template-columns: 1fr; }
  .flow3 li.us .mark { grid-row: auto; margin-bottom: var(--s1); }
  .flow3 li:not(:last-child)::after { content: "↓"; right: 50%; top: auto; bottom: calc(var(--s4) * -0.5); transform: translate(50%, 50%); font-size: calc(var(--u) * 5); }
  .flow3 .tile { --s: calc(var(--u) * 11); }
  .flow3 .mark .wordmark { height: calc(var(--u) * 5.6); }

  .vigs { gap: var(--s3); }
  .vigs li { display: grid; grid-template-columns: calc(var(--u) * 40) 1fr; grid-template-rows: auto auto; column-gap: var(--s3); align-items: center; }
  .vigs .vignette { grid-row: 1 / 3; margin-bottom: 0; }
  .vigs li > .label { align-self: end; }
  .vigs li > p:not(.label) { align-self: start; font-size: var(--fs-small); }

  .stage { width: 100%; }
  .legend { grid-template-columns: repeat(3, 1fr); gap: var(--s2); }
  .legend b { font-size: calc(var(--u) * 4.2); }
  .shots { grid-template-columns: repeat(3, 1fr); justify-content: stretch; gap: var(--s2); }
  .shots .dev { width: 100%; height: auto; }
  .shots li > p { max-width: none; font-size: var(--fs-small); }
  .shots .label { font-size: calc(var(--u) * 2.5); }
  .g-trust .dev { height: auto; width: calc(var(--u) * 60); justify-self: center; }
  .checks6 { margin-bottom: var(--s2) !important; }

  .track { height: calc(var(--u) * 4.4); }
  .funds .track { height: calc(var(--u) * 3.2); }
  .hero-num { flex-direction: row; align-items: flex-end; gap: var(--s3); }
  .hero-num .lead { margin-bottom: var(--s1); font-size: var(--fs-body); }
  .facts3 b { font-size: calc(var(--u) * 6); }
  .why4 { grid-template-columns: 1fr 1fr; gap: var(--s3) var(--s4); }
  .why4 .big-num { font-size: calc(var(--u) * 8); margin-top: 0; }
  .why4 p:not(.big-num) { font-size: var(--fs-small); }
  .mkt dd { font-size: calc(var(--u) * 6.4); }
  .rings { height: auto; width: calc(var(--u) * 70); }
  .rings text, .rings text.t1 { font-size: 15px; }
  .split-bar { height: calc(var(--u) * 20); }
  .split-bar .seg { padding: 0 var(--s2); }
  .split-bar b { font-size: calc(var(--u) * 6.4); }
  .split-bar .carer { flex: 1 1 auto; }
  .split-bar .ours { flex: 0 0 calc(var(--u) * 27); }
  .split-bar span { font-size: calc(var(--u) * 2.3); }
  .row4, .grid2 { grid-template-columns: 1fr 1fr; gap: var(--s2) var(--s3); }

  .eq > span:not(.eq-arrow) { font-size: calc(var(--u) * 4.4); padding: var(--s1) var(--s2); }
  .eq-arrow { font-size: calc(var(--u) * 4.4); }
  .member-card { justify-self: center; max-width: none; width: calc(var(--u) * 74); border-radius: calc(var(--u) * 3); padding: calc(var(--u) * 4.4); }
  .mc-top .wordmark { height: calc(var(--u) * 3.6); }
  .slide .mc-bal { font-size: calc(var(--u) * 8.4); }

  .quad svg { height: auto; width: 100%; max-height: none; }
  .q-lab { font-size: 17px; }
  .q-name { font-size: 24px; }
  .q-name.us { font-size: 28px; }

  .chan4 { grid-template-columns: 1fr; gap: var(--s3); }
  .chan4 b { font-size: var(--fs-h3); }
  .slide .beach .mega { font-size: calc(var(--u) * 20); }
  .beach { padding: var(--s3) var(--s4); }

  .person { grid-template-columns: calc(var(--u) * 30) 1fr; }
  .person h3 { font-size: calc(var(--u) * 5.6); }

  .ask { gap: var(--s4); }
  .miles b { font-size: calc(var(--u) * 7.4); }

  .sources { columns: 1; }
  .sources li { grid-template-columns: calc(var(--u) * 5) 1fr; padding: calc(var(--u) * 0.6) 0; font-size: calc(var(--u) * 3); }
}

/* ---------- print / PDF: one 1600×900 page per slide ---------- */
@page { size: 1600px 900px; margin: 0; }
@media print {
  :root { --u: 16px; }
  html { scroll-snap-type: none; }
  .deck-bar, .skip-link { display: none !important; }
  .slide { width: 1600px; height: 900px; break-after: page; page-break-after: always; border: 0 !important; overflow: hidden; }
  .slide:last-of-type { break-after: auto; page-break-after: auto; }
  * { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}

@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
