/* acts.css
 * Layout patterns for Acts 2-9 + Act 1 split additions.
 *
 * Builds on tokens.css + slides.css. Where a pattern is reused
 * across multiple slide types it lives here once. Where a pattern
 * is bespoke to a single slide it gets a slide- prefix.
 *
 * Visual posture: more breathing room than the v1 Act 1.
 * - Generous max-width on prose
 * - Larger gaps in grids (--sp-6 / --sp-7 default)
 * - Type sized down where the v1 read too dense
 * - Light hairlines (var(--paper-2)) instead of heavy borders
 */

/* ── fit-on-one-page baseline ───────────────────────────────
 *
 * Each slide is sized to viewport height. Slide__inner becomes a
 * flex column so caption strips and footers anchor to the bottom
 * while the main content centers in the remaining space. Body
 * font-size scales fractionally with viewport so dense slides
 * shrink before they overflow.
 */
.slide {
  height: 100vh;
  min-height: auto;
  max-height: 100vh;
  overflow: hidden;
}
.slide__inner {
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: var(--sp-4);
  padding-block: var(--sp-3);
}
.slide__inner > .caption-strip {
  margin-top: auto;
  padding-top: var(--sp-4);
}

/* slide 06 must be allowed to grow taller than viewport */
.slide.slide-brand-read {
  height: auto;
  min-height: 100vh;
  max-height: none;
  overflow: visible;
}
.slide-brand-read .slide__inner {
  height: auto;
  justify-content: flex-start;
}

/* cover slide: full-width inner block, title + footer flush left */
.slide-cover .slide__inner {
  display: grid !important;
  grid-template-rows: 1fr auto;
  grid-template-columns: 1fr;
  align-content: stretch;
  gap: var(--sp-7);
  text-align: left;
  max-width: none !important;
  margin-inline: 0 !important;
  width: 100%;
}

/* cover slide w/ partner lockup: title left, snow peak wordmark right */
.slide-cover--lockup .slide-cover__layout {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
  align-items: center;
  gap: var(--sp-6);
  width: 100%;
  height: 100%;
}
.slide-cover--lockup .slide-cover__title {
  align-self: center;
}
.slide-cover__partner {
  display: grid;
  justify-items: end;
  align-content: center;
}
.sp-wordmark-img {
  /* Use the PNG as a mask so we can color it via background-color.
     This is immune to the slide-entrance `filter` overrides. */
  display: block;
  width: 100%;
  max-width: 560px;
  /* aspect-ratio matches wordmark.png roughly 4.7:1 */
  aspect-ratio: 47 / 10;
  background-color: var(--paper);
  -webkit-mask-image: url('../../Assets/snowpeak%20branding/wordmark.png');
  mask-image: url('../../Assets/snowpeak%20branding/wordmark.png');
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center right;
  mask-position: center right;
}

@media (max-width: 900px) {
  .slide-cover--lockup .slide-cover__layout {
    grid-template-columns: 1fr;
    gap: var(--sp-5);
  }
  .slide-cover__partner { justify-items: start; }
  .sp-wordmark-img {
    max-width: 320px;
    -webkit-mask-position: center left;
    mask-position: center left;
  }
}
.slide-cover .slide-cover__title {
  align-self: center;
  justify-self: start;
  text-align: left;
  margin-left: 0;
}
.slide-cover .slide-cover__footer {
  justify-self: start;
  width: 100%;
  max-width: 720px;
  text-align: left;
}

/* fluid type for prose-heavy bodies — shrinks 14→18px across viewport */
.slide-aspiration__body,
.slide-platform__body,
.slide-howework__body p,
.slide-decision__lede,
.slide-correcting__lede,
.slide-fourcs__lede,
.slide-workshops__lede,
.slide-territories__lede,
.slide-reframe__lede,
.slide-measurement__lede,
.slide-distribution__lede,
.slide-editorial__lede,
.slide-resources__lede,
.slide-anniversary__lede,
.slide-craft__lede,
.slide-runofshow__lede,
.slide-calendar__lede,
.slide-catalog-cost__lede,
.slide-softclose__body,
.slide-next__body {
  font-size: clamp(14px, 1.2vw, 17px);
}

@media (max-height: 800px) {
  /* compact mode for laptop screens — smaller titles + less padding */
  .hero-title { font-size: var(--t-2xl); }
  .slide-concept__title,
  .slide-aspiration__headline,
  .slide-craft__title,
  .slide-pastwork__title,
  .slide-roomlives__title,
  .slide-next__title { font-size: var(--t-2xl); }
  .slide__inner { gap: var(--sp-3); }
}

/* ── TOC (slide 03) ─────────────────────────────────────── */
.slide-toc {}
.slide-toc .slide__inner {
  justify-content: flex-start;
  align-content: start;
  padding-block: clamp(40px, 5vh, 72px) clamp(48px, 6vh, 96px);
}
.slide-toc__head {
  text-align: center;
  margin: 0 auto var(--sp-3);
  max-width: var(--measure-mid);
}
.slide-toc__head .hero-title {
  font-size: var(--t-2xl);
  color: var(--ink);
}
.toc-acts {
  display: grid;
  gap: var(--sp-4);
  max-width: var(--measure-wide);
  margin: 0 auto;
  width: 100%;
}
.toc-act {
  display: grid;
  gap: var(--sp-2);
}
.toc-act__head {
  display: grid;
  grid-template-columns: 44px 1fr;
  gap: var(--sp-4);
  align-items: baseline;
  border-bottom: 1px solid var(--ember);
  padding-bottom: var(--sp-2);
}
.toc-act__roman {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono);
  font-size: var(--t-sm);
  color: var(--ember);
}
.toc-act__title {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: clamp(16px, 1.4vw, 19px);
  letter-spacing: var(--tr-snug);
  color: var(--ink);
}

.toc-list {
  list-style: none;
  padding: 0;
  margin: 0;
  width: 100%;
  display: grid;
  gap: 0;
}
.toc-row { margin: 0; }
.toc-link {
  display: grid;
  grid-template-columns: 44px minmax(180px, 1fr) minmax(0, 2fr) auto;
  gap: var(--sp-4);
  align-items: baseline;
  padding: var(--sp-2) var(--sp-2);
  border-bottom: 1px solid var(--paper-2);
  text-decoration: none;
  color: var(--ink);
  transition: background var(--dur-1) var(--ease-out),
              color var(--dur-1) var(--ease-out);
}
.toc-act:last-child .toc-link:last-child { border-bottom: 0; }
.toc-link:hover,
.toc-link:focus-visible {
  background: rgba(26, 24, 22, 0.06);
  color: var(--ember);
  outline: none;
}
.toc-num {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono);
  font-size: var(--t-sm);
  color: var(--ink-mute);
}
.toc-link:hover .toc-num,
.toc-link:focus-visible .toc-num { color: var(--ember); }
.toc-name {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: clamp(18px, 1.6vw, 22px);
  letter-spacing: var(--tr-snug);
  line-height: var(--lh-tight);
}
.toc-note {
  font-family: var(--font-sans);
  font-size: clamp(12px, 0.95vw, 14px);
  color: var(--ink-mute);
  line-height: var(--lh-snug);
}
.toc-pages {
  font-family: var(--font-mono);
  text-transform: lowercase;
  letter-spacing: var(--tr-mono-tight);
  font-size: var(--t-xs);
  color: var(--ink-mute);
}

@media (max-width: 900px) {
  .toc-link {
    grid-template-columns: 40px 1fr auto;
  }
  .toc-note { display: none; }
}

/* ── slide 10 (the gap) — paired sides + bridge ────────── */
.slide-gap {}
.slide-gap .slide__inner {
  max-width: 1280px;
  gap: 0;
}
.gap-layout {
  display: grid;
  grid-template-columns: minmax(420px, 0.9fr) minmax(520px, 1.1fr);
  gap: clamp(72px, 8vw, 132px);
  align-items: center;
  width: 100%;
}
.slide-gap__head {
  max-width: 560px;
}
.slide-gap__headline {
  max-width: none;
  font-size: clamp(40px, 4.4vw, 62px);
  line-height: 1.02;
  text-wrap: balance;
}
.slide-gap__lede {
  max-width: 46ch;
  font-size: clamp(17px, 1.25vw, 20px);
  line-height: 1.5;
  color: var(--ink-soft);
  margin: var(--sp-5) 0 0;
}
.gap-process {
  display: grid;
  gap: var(--sp-5);
  width: 100%;
}
.gap-process__label {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono);
  font-size: var(--t-xs);
  color: var(--ink-mute);
  margin: 0;
}
.gap-step {
  border-top: 1px solid var(--ink);
  padding-top: var(--sp-5);
  display: grid;
  grid-template-columns: 48px 1fr;
  gap: var(--sp-6);
  align-items: start;
}
.gap-step__num {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono);
  font-size: var(--t-sm);
  color: var(--ink-mute);
}
.gap-step__title {
  font-family: var(--font-sans);
  font-size: clamp(24px, 2vw, 31px);
  line-height: 1.1;
  font-weight: 500;
  color: var(--ink);
  margin: 0;
}
.gap-step__body {
  font-family: var(--font-sans);
  font-size: clamp(15px, 1.05vw, 17px);
  line-height: 1.45;
  color: var(--ink-soft);
  margin: var(--sp-2) 0 0;
  max-width: 46ch;
}
.slide-gap__body {
  max-width: 42ch;
  font-size: clamp(20px, 1.55vw, 25px);
  line-height: 1.4;
  margin-top: var(--sp-6);
}
.gap-pair {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: var(--sp-6);
  align-items: stretch;
  margin: 0;
  max-width: 1040px;
}
.gap-pair__side {
  display: grid;
  gap: var(--sp-3);
  align-content: start;
  border-top: 1px solid var(--ink);
  padding-top: var(--sp-4);
}
.gap-pair__side:nth-child(1),
.gap-pair__side:nth-child(3) { text-align: left; }
.gap-pair__label {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono);
  font-size: var(--t-xs);
  color: var(--ink-mute);
  margin: 0;
}
.gap-pair__phrase {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: clamp(26px, 2.4vw, 36px);
  line-height: var(--lh-snug);
  color: var(--ink);
  margin: 0;
}
.gap-pair__note {
  font-family: var(--font-sans);
  font-size: clamp(15px, 1.1vw, 17px);
  line-height: var(--lh-prose);
  color: var(--ink-soft);
  margin: 0;
  max-width: 34ch;
}
.gap-pair__bridge {
  display: grid;
  place-items: center;
  min-width: 160px;
}
.gap-pair__bridge span {
  display: inline-block;
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono-tight);
  font-size: var(--t-xs);
  color: var(--ember);
  border-top: 1px solid var(--ember);
  border-bottom: 1px solid var(--ember);
  padding: var(--sp-2) 0;
}

@media (max-width: 900px) {
  .gap-layout { grid-template-columns: 1fr; gap: var(--sp-7); }
  .gap-pair { grid-template-columns: 1fr; gap: var(--sp-5); }
  .gap-pair__bridge { place-items: start; min-width: 0; }
}

/* ── shared lede paragraph (under headers) ─────────────── */
.slide-aspiration__body,
.slide-platform__body,
.slide-howework__body p,
.slide-decision__lede,
.slide-correcting__lede,
.slide-fourcs__lede,
.slide-workshops__lede,
.slide-territories__lede,
.slide-reframe__lede,
.slide-measurement__lede,
.slide-distribution__lede,
.slide-editorial__lede,
.slide-resources__lede,
.slide-anniversary__lede,
.slide-craft__lede,
.slide-runofshow__lede,
.slide-calendar__lede,
.slide-catalog-cost__lede,
.slide-softclose__body,
.slide-next__body {
  font-family: var(--font-sans);
  font-size: var(--t-md);
  line-height: var(--lh-prose);
  color: var(--ink-soft);
  max-width: var(--measure-mid);
  margin: 0 auto var(--sp-6);
}

/* slide-perception__head shares look with other heads */
.slide-perception__head,
.slide-decision__head,
.slide-correcting__head,
.slide-fourcs__head,
.slide-mood__head,
.slide-references__head,
.slide-reframe__head,
.slide-crew__head,
.slide-distribution__head,
.slide-measurement__head,
.slide-territories__head,
.slide-cosponsors__head,
.slide-festivals__head,
.slide-room__head,
.slide-venues__head,
.slide-runofshow__head,
.slide-provides__head,
.slide-outputs__head,
.slide-editorial__head,
.slide-calendar__head,
.slide-catalog-cost__head,
.slide-resources__head,
.slide-anniversary__head,
.slide-softclose__head,
.slide-howework__head,
.slide-sef__head,
.slide-ophelia__head {
  text-align: center;
  margin: 0 auto var(--sp-6);
  max-width: var(--measure-wide);
}

/* ── Act 1 split: airy variants ─────────────────────────── */

/* slide 06: catalog grid laid out with more space */
.catalog-grid--airy {
  gap: var(--sp-4) var(--sp-5);
  margin-top: 0;
}

/* slide 07: register grid for press / community / neighborhood */
.slide-perception__head { margin-bottom: var(--sp-7); }

.register-grid--airy {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--sp-7);
  margin-top: var(--sp-5);
}

@media (max-width: 900px) {
  .register-grid--airy { grid-template-columns: 1fr; }
}

.register-col__pull {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-md);
  color: var(--ink);
  border-left: 2px solid var(--ember);
  padding-left: var(--sp-3);
  margin: var(--sp-4) 0 var(--sp-1);
}

.register-col__pull-cite {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono);
  font-size: var(--t-xs);
  color: var(--ink-mute);
  padding-left: var(--sp-3);
}

/* ── ACT 2 ──────────────────────────────────────────────── */

/* slide 12: what we're proposing (dark) */
.slide-aspiration {}
.slide-aspiration .slide__inner {
  align-content: center;
  justify-items: start;
  gap: var(--sp-7);
  max-width: 1040px;
}
.slide-aspiration__head {
  display: grid;
  gap: var(--sp-4);
  max-width: 820px;
}
.slide-aspiration__headline {
  font-family: var(--font-sans);
  font-style: normal;
  font-weight: 500;
  font-size: clamp(46px, 5.2vw, 78px);
  line-height: 0.98;
  letter-spacing: -0.018em;
  text-align: left;
  margin: 0;
  max-width: 15ch;
  color: var(--paper);
}
.aspiration-proof {
  display: grid;
  gap: var(--sp-5);
  max-width: 760px;
}
.aspiration-proof p {
  color: var(--paper-soft);
  margin: 0;
  font-size: clamp(18px, 1.35vw, 22px);
  line-height: var(--lh-prose);
}
.aspiration-steps {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-3);
}
.aspiration-steps span {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono-tight);
  font-size: var(--t-xs);
  color: var(--ember);
  border-top: 1px solid rgba(216, 76, 35, 0.55);
  padding-top: var(--sp-2);
}

/* slide 12: takibi tales platform */
.slide-platform__title { text-align: center; }
.slide-platform__subtitle {
  display: block;
  font-style: italic;
  color: var(--paper-soft);
  font-size: var(--t-xl);
  margin-top: var(--sp-2);
}
.slide-platform__pull {
  text-align: center;
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-2xl);
  line-height: var(--lh-snug);
  max-width: 24ch;
  margin: var(--sp-6) auto var(--sp-6);
  color: var(--ember);
}
.slide-platform__body {
  text-align: center;
  color: var(--paper-soft);
}

/* slide 13: how we work */
.slide-howework__anchor {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-2xl);
  line-height: var(--lh-tight);
  letter-spacing: var(--tr-tight);
  text-align: center;
  max-width: 24ch;
  margin: 0 auto var(--sp-7);
  color: var(--ink);
}
.slide-howework__body {
  max-width: var(--measure-mid);
  margin: 0 auto;
  display: grid;
  gap: var(--sp-5);
}
.slide-howework__principles {
  list-style: none;
  padding: 0;
  margin: var(--sp-7) auto var(--sp-5);
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--sp-7);
  font-family: var(--font-mono);
  font-size: var(--t-sm);
  text-transform: lowercase;
  letter-spacing: var(--tr-mono-tight);
  color: var(--ember);
}

/* slide 14: decision grid */
.slide-decision {}
.decision-grid {
  display: grid;
  gap: 0;
  margin: var(--sp-5) 0;
  border-top: 1px solid var(--paper-2);
}
.decision-row {
  display: grid;
  grid-template-columns: 1.4fr 1fr 2.4fr 1.4fr;
  gap: var(--sp-5);
  padding: var(--sp-5) 0;
  border-bottom: 1px solid var(--paper-2);
  font-size: var(--t-sm);
  color: var(--ink-soft);
  align-items: baseline;
}
.decision-row--head {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono);
  font-size: var(--t-xs);
  color: var(--ink-mute);
  padding: var(--sp-3) 0;
}
.decision-row__job {
  font-family: var(--font-serif);
  font-style: italic;
  color: var(--ember);
  font-size: var(--t-md);
}
.decision-row__name {
  font-family: var(--font-sans);
  font-weight: 600;
  color: var(--ink);
  font-size: var(--t-md);
}
.decision-row__what { line-height: var(--lh-prose); }
.decision-row__cost {
  font-family: var(--font-mono);
  font-size: var(--t-xs);
  color: var(--ink-mute);
  text-transform: lowercase;
  letter-spacing: var(--tr-mono-tight);
}

@media (max-width: 900px) {
  .decision-row { grid-template-columns: 1fr; gap: var(--sp-2); }
  .decision-row--head { display: none; }
}

/* ── concept slide pattern (used 15, 22, 29, 35) ────────── */
.slide-concept {}
.slide-concept__title {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-3xl);
  line-height: var(--lh-tight);
  text-align: center;
  margin: var(--sp-7) auto var(--sp-6);
  max-width: 18ch;
}
.slide-concept__body {
  font-family: var(--font-sans);
  font-size: var(--t-md);
  line-height: var(--lh-prose);
  color: var(--paper-soft);
  max-width: var(--measure-mid);
  margin: 0 auto var(--sp-4);
  text-align: center;
}
.slide-concept__pull {
  text-align: center;
  margin: var(--sp-5) auto var(--sp-3);
  max-width: 36ch;
  color: var(--ember);
}
.slide-concept__footer {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--sp-5);
  margin-top: var(--sp-7);
  font-family: var(--font-mono);
  font-size: var(--t-xs);
  text-transform: lowercase;
  letter-spacing: var(--tr-mono-tight);
  color: var(--paper-mute);
  border-top: 1px solid var(--coal-3);
  padding-top: var(--sp-5);
}
.slide-concept__footer .label {
  display: block;
  color: var(--paper);
  margin-bottom: var(--sp-1);
  letter-spacing: var(--tr-mono);
}

/* ── mood grid (slides 16, 26, 33) ──────────────────────── */
.mood-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--sp-6);
  margin: var(--sp-5) 0 var(--sp-6);
}
.mood-tile { display: grid; gap: var(--sp-3); margin: 0; }
.mood-tile__image {
  aspect-ratio: 4 / 3;
  background: var(--paper-2);
  display: grid;
  place-items: center;
  position: relative;
}
.mood-tile__num {
  position: absolute;
  top: var(--sp-2);
  left: var(--sp-3);
  font-family: var(--font-mono);
  font-size: var(--t-xs);
  letter-spacing: var(--tr-mono);
  color: var(--ink-mute);
}
.mood-tile__cap {
  font-family: var(--font-sans);
  font-size: var(--t-sm);
  line-height: var(--lh-snug);
  color: var(--ink-soft);
  display: grid;
  gap: 2px;
}
.mood-tile__cap strong {
  color: var(--ink);
  font-weight: 500;
}
.mood-tile__cap span {
  color: var(--ink-mute);
  font-size: var(--t-xs);
}

@media (max-width: 900px) {
  .mood-grid { grid-template-columns: repeat(2, 1fr); }
}

/* ── reference pair (slide 17) ──────────────────────────── */
.reference-pair {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-7);
  margin: var(--sp-5) 0 var(--sp-6);
}
.reference-col__title {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-lg);
  margin: 0 0 var(--sp-3);
  color: var(--ember);
}
.reference-col__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: var(--sp-3);
  font-size: var(--t-sm);
  line-height: var(--lh-prose);
  color: var(--ink-soft);
}
.reference-col__list strong { color: var(--ink); }
.link-soft {
  font-family: var(--font-mono);
  font-size: var(--t-xs);
  color: var(--ink-mute);
  letter-spacing: var(--tr-mono-tight);
}

@media (max-width: 900px) {
  .reference-pair { grid-template-columns: 1fr; }
}

/* ── reframe pair (slide 18) ────────────────────────────── */
.reframe-pair {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-6);
  margin: var(--sp-5) 0 var(--sp-6);
}
.reframe-col {
  border: 1px solid var(--paper-2);
  border-radius: 2px;
  padding: var(--sp-5);
  background: var(--paper);
}
.reframe-col--accent {
  border-color: var(--ember);
  background: rgba(26, 24, 22, 0.04);
}
.reframe-col__title {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono);
  font-size: var(--t-xs);
  color: var(--ink-mute);
  margin: 0 0 var(--sp-3);
}
.reframe-col--accent .reframe-col__title { color: var(--ember); }
.reframe-col__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: var(--sp-2);
  font-size: var(--t-sm);
  line-height: var(--lh-prose);
  color: var(--ink-soft);
}
.reframe-col__list strong { color: var(--ink); }

@media (max-width: 900px) {
  .reframe-pair { grid-template-columns: 1fr; }
}

/* ── crew patterns (slide 19, 27) ───────────────────────── */
.crew-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-7);
  margin: var(--sp-5) 0;
}
.crew-tri {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--sp-6);
  margin: var(--sp-5) 0;
}
.crew-col__title {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-lg);
  margin: 0 0 var(--sp-3);
  color: var(--ember);
}
.crew-col__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: var(--sp-3);
  font-size: var(--t-sm);
  line-height: var(--lh-prose);
  color: var(--ink-soft);
}
.crew-col__list strong { color: var(--ink); font-weight: 500; }
.crew-col__list--timeline li {
  display: grid;
  grid-template-columns: 100px 1fr;
  gap: var(--sp-3);
  align-items: baseline;
}
.t-tag {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono);
  font-size: var(--t-xs);
  color: var(--ember);
}
.kindlings-timeline {
  margin: var(--sp-6) auto;
  max-width: var(--measure-wide);
  display: grid;
  gap: var(--sp-3);
  border-top: 1px solid var(--paper-2);
  padding-top: var(--sp-5);
}
.kindlings-timeline__row {
  display: grid;
  grid-template-columns: 140px 1fr;
  gap: var(--sp-4);
  font-size: var(--t-sm);
  color: var(--ink-soft);
}

@media (max-width: 900px) {
  .crew-grid, .crew-tri { grid-template-columns: 1fr; }
}

/* ── distribution channel flow (slide 20) ───────────────── */
.channel-flow {
  display: grid;
  gap: var(--sp-3);
  margin: var(--sp-5) auto;
  max-width: var(--measure-wide);
  border-top: 1px solid var(--paper-2);
  padding-top: var(--sp-5);
}
.channel-flow__row {
  display: grid;
  grid-template-columns: 200px auto 1fr;
  gap: var(--sp-4);
  align-items: baseline;
  font-family: var(--font-mono);
  font-size: var(--t-sm);
  color: var(--ink-soft);
}
.channel-flow__src {
  text-transform: lowercase;
  letter-spacing: var(--tr-mono-tight);
  color: var(--ember);
}
.channel-flow__arrow { color: var(--ink-mute); }
.channel-flow__dest { letter-spacing: var(--tr-mono-tight); }

.slide-distribution__premiere {
  margin: var(--sp-6) auto 0;
  max-width: var(--measure-mid);
  font-family: var(--font-sans);
  font-size: calc(var(--t-sm) * 0.6);
  line-height: var(--lh-prose);
  color: var(--ink-soft);
  text-align: center;
}
.slide-distribution__premiere strong { color: var(--ink); }

/* ── measure tables (slides 21, 28, 34) ─────────────────── */
.measure-table {
  display: grid;
  margin: var(--sp-5) 0;
  border-top: 1px solid var(--paper-2);
}
.measure-row {
  display: grid;
  grid-template-columns: 2fr 1.4fr 1fr 2fr;
  gap: var(--sp-4);
  padding: var(--sp-4) 0;
  border-bottom: 1px solid var(--paper-2);
  font-size: var(--t-sm);
  color: var(--ink-soft);
  align-items: baseline;
  line-height: var(--lh-snug);
}
.measure-row:has(> span:nth-child(3):last-child) {
  grid-template-columns: minmax(260px, 1.4fr) minmax(190px, 0.85fr) minmax(360px, 1.75fr);
}
.measure-row--head {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono);
  font-size: var(--t-xs);
  color: var(--ink-mute);
  padding: var(--sp-3) 0;
}
.measure-row--accent {
  background: rgba(26, 24, 22, 0.04);
  border-bottom-color: var(--ember);
}
.measure-row--accent span:first-child { color: var(--ember); font-weight: 500; }

/* slide 28 (Kindlings outputs) uses 3-col measure table */
.outputs-col .measure-row {
  grid-template-columns: 1.6fr 1fr 1.4fr;
}

@media (max-width: 900px) {
  .measure-row { grid-template-columns: 1fr; gap: var(--sp-1); }
  .measure-row--head { display: none; }
  .outputs-col .measure-row { grid-template-columns: 1fr; }
}

/* ── correcting pair (slide 23) ─────────────────────────── */
.correcting-pair {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-6);
  margin: var(--sp-5) 0 var(--sp-6);
}
.correcting-col {
  padding: var(--sp-5);
  border: 1px solid var(--paper-2);
  border-radius: 2px;
}
.correcting-col--accent {
  border-color: var(--ember);
  background: rgba(26, 24, 22, 0.03);
}
.correcting-col__title {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-lg);
  margin: 0 0 var(--sp-3);
  color: var(--ember);
}
.correcting-col__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: var(--sp-2);
  font-size: var(--t-sm);
  line-height: var(--lh-prose);
  color: var(--ink-soft);
}

@media (max-width: 900px) {
  .correcting-pair { grid-template-columns: 1fr; }
}

/* ── four C's grid (slide 24) ───────────────────────────── */
.fourcs-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-6);
  margin: var(--sp-5) 0 var(--sp-6);
  max-width: var(--measure-wide);
  margin-left: auto;
  margin-right: auto;
}
.fourcs-tile {
  padding: var(--sp-5);
  border: 1px solid var(--paper-2);
  border-radius: 2px;
}
.fourcs-tile__count {
  font-family: var(--font-mono);
  font-size: var(--t-md);
  letter-spacing: var(--tr-mono);
  color: var(--ember);
  margin: 0 0 var(--sp-2);
}
.fourcs-tile__name {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-xl);
  margin: 0 0 var(--sp-3);
  color: var(--ink);
}
.fourcs-tile__body {
  font-size: var(--t-sm);
  line-height: var(--lh-prose);
  color: var(--ink-soft);
  margin: 0;
}

@media (max-width: 900px) {
  .fourcs-grid { grid-template-columns: 1fr; }
}

/* ── workshop grid (slide 25) ───────────────────────────── */
.workshop-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--sp-5);
  margin: var(--sp-5) auto;
  max-width: var(--measure-wide);
}
.workshop-card {
  padding: var(--sp-5);
  border: 1px solid var(--coal-3);
  background: var(--coal-2);
  border-radius: 2px;
}
.workshop-card__title {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-lg);
  margin: 0 0 var(--sp-2);
  color: var(--ember);
}
.workshop-card__body {
  font-size: var(--t-sm);
  line-height: var(--lh-prose);
  color: var(--paper-soft);
  margin: 0;
}

.slide-workshops__title {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-2xl);
  line-height: var(--lh-tight);
  text-align: center;
  margin: var(--sp-6) auto var(--sp-4);
  color: var(--paper);
  max-width: 22ch;
}
.slide-workshops__lede {
  text-align: center;
  color: var(--paper-soft);
  max-width: var(--measure-mid);
  margin: 0 auto var(--sp-6);
  font-size: var(--t-md);
  line-height: var(--lh-prose);
}

@media (max-width: 900px) {
  .workshop-grid { grid-template-columns: 1fr; }
}

/* ── outputs pair (slide 28) ────────────────────────────── */
.outputs-pair {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-6);
  margin: var(--sp-5) 0;
}
.outputs-col__title {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-lg);
  margin: 0 0 var(--sp-4);
  color: var(--ember);
}
.outputs-col__group {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono);
  font-size: var(--t-xs);
  color: var(--ink-mute);
  margin: var(--sp-4) 0 var(--sp-2);
}
.outputs-col__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: var(--sp-2);
  font-size: var(--t-sm);
  line-height: var(--lh-prose);
  color: var(--ink-soft);
}
.outputs-col__note {
  margin: var(--sp-4) 0 0;
  font-size: var(--t-xs);
  font-style: italic;
  color: var(--ink-mute);
}

@media (max-width: 900px) {
  .outputs-pair { grid-template-columns: 1fr; }
}

/* ── territory grid (slide 30) ──────────────────────────── */
.territory-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--sp-5);
  margin: var(--sp-5) 0 var(--sp-6);
}
.territory-tile {
  padding: var(--sp-5);
  border: 1px solid var(--paper-2);
  border-radius: 2px;
}
.territory-tile__title {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-md);
  margin: 0 0 var(--sp-2);
  color: var(--ember);
  line-height: var(--lh-snug);
}
.territory-tile__body {
  font-size: var(--t-sm);
  line-height: var(--lh-prose);
  color: var(--ink-soft);
  margin: 0;
}

@media (max-width: 900px) {
  .territory-grid { grid-template-columns: 1fr; }
}

/* ── co-sponsor pair + aside (slide 31) ─────────────────── */
.cosponsor-pair {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-6);
  margin: var(--sp-5) 0;
}
.cosponsor-col__title {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-lg);
  margin: 0 0 var(--sp-3);
  color: var(--ember);
}
.cosponsor-col__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: var(--sp-3);
  font-size: var(--t-sm);
  line-height: var(--lh-prose);
  color: var(--ink-soft);
}
.cosponsor-aside {
  border-top: 1px solid var(--paper-2);
  padding-top: var(--sp-5);
  margin: var(--sp-6) 0;
}
.cosponsor-aside__title {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono);
  font-size: var(--t-xs);
  color: var(--ink-mute);
  margin: 0 0 var(--sp-3);
}
.cosponsor-aside__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: var(--sp-3);
  font-size: var(--t-sm);
  color: var(--ink-soft);
}

@media (max-width: 900px) {
  .cosponsor-pair { grid-template-columns: 1fr; }
}

/* ── festival flow (slide 32) ───────────────────────────── */
.festival-flow {
  display: grid;
  gap: var(--sp-3);
  margin: var(--sp-5) auto;
  max-width: var(--measure-wide);
  text-align: center;
}
.festival-flow__node {
  padding: var(--sp-4);
  border: 1px solid var(--paper-2);
  border-radius: 2px;
}
.festival-flow__node--tier1 {
  border-color: var(--ember);
  background: rgba(26, 24, 22, 0.04);
}
.festival-flow__node--parallel {
  border-style: dashed;
}
.festival-flow__tier {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono);
  font-size: var(--t-xs);
  color: var(--ink-mute);
  margin: 0 0 var(--sp-1);
}
.festival-flow__node--tier1 .festival-flow__tier { color: var(--ember); }
.festival-flow__names {
  font-family: var(--font-sans);
  font-size: var(--t-sm);
  color: var(--ink);
  margin: 0;
  line-height: var(--lh-snug);
}
.festival-flow__arrow {
  color: var(--ink-mute);
  font-family: var(--font-mono);
  font-size: var(--t-md);
}

/* ── room (slide 33) — mood-grid above + validation aside ─ */
.validation-panel {
  border-top: 1px solid var(--paper-2);
  padding-top: var(--sp-5);
  margin: var(--sp-6) 0 var(--sp-3);
  max-width: var(--measure-wide);
  margin-left: auto;
  margin-right: auto;
}
.validation-panel__title {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono);
  font-size: var(--t-xs);
  color: var(--ink-mute);
  margin: 0 0 var(--sp-3);
}
.validation-panel__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: var(--sp-3);
  font-size: var(--t-sm);
  color: var(--ink-soft);
}
.validation-panel__list strong { color: var(--ink); font-weight: 500; }

/* ── Ways of Being (35-38) ──────────────────────────────── */
.venue-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--sp-5);
  margin: var(--sp-5) 0;
}
.venue-card {
  padding: var(--sp-5);
  border: 1px solid var(--paper-2);
  border-radius: 2px;
}
.venue-card__name {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-lg);
  margin: 0 0 var(--sp-1);
  color: var(--ember);
}
.venue-card__when {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono-tight);
  font-size: var(--t-xs);
  color: var(--ink-mute);
  margin: 0 0 var(--sp-3);
}
.venue-card__body {
  font-size: var(--t-sm);
  line-height: var(--lh-prose);
  color: var(--ink-soft);
  margin: 0;
}
.venue-popup {
  margin: var(--sp-5) auto;
  max-width: var(--measure-mid);
  font-size: var(--t-sm);
  color: var(--ink-soft);
  text-align: center;
}
.venue-popup strong { color: var(--ink); font-weight: 500; }

@media (max-width: 900px) {
  .venue-grid { grid-template-columns: 1fr; }
}

.runofshow-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(220px, 300px);
  gap: var(--sp-7);
  align-items: start;
  margin-top: var(--sp-5);
}
.ros-flow {
  display: grid;
  gap: var(--sp-2);
  margin: 0;
  max-width: none;
}
.ros-flow__row {
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: var(--sp-4);
  padding: var(--sp-3) var(--sp-4);
  border: 1px solid var(--paper-2);
  border-radius: 2px;
  align-items: baseline;
  font-size: var(--t-sm);
  color: var(--ink-soft);
}
.ros-flow__row--accent {
  background: rgba(26, 24, 22, 0.04);
  border-color: var(--ember);
}
.ros-flow__step {
  font-family: var(--font-serif);
  font-style: italic;
  color: var(--ember);
}
.ros-flow__what { color: var(--ink-soft); }
.ros-flow__arrow {
  text-align: center;
  font-family: var(--font-mono);
  color: var(--ink-mute);
}
.capture-aside {
  border-top: 1px solid var(--paper-2);
  padding-top: var(--sp-4);
  margin: 0;
  max-width: none;
}
.capture-aside__title {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono);
  font-size: var(--t-xs);
  color: var(--ink-mute);
  margin: 0 0 var(--sp-2);
}
.capture-aside__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: var(--sp-2);
  font-size: var(--t-sm);
  color: var(--ink-soft);
}
@media (max-width: 900px) {
  .runofshow-layout { grid-template-columns: 1fr; }
}

.provides-pair {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-7);
  margin: var(--sp-5) 0 var(--sp-6);
}
.provides-col__title {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-lg);
  margin: 0 0 var(--sp-3);
  color: var(--ember);
}
.provides-col__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: var(--sp-3);
  font-size: var(--t-sm);
  line-height: var(--lh-prose);
  color: var(--ink-soft);
}

@media (max-width: 900px) {
  .provides-pair { grid-template-columns: 1fr; }
}

/* ── Sef + Ophelia (39, 40) ─────────────────────────────── */
.slide-sef__body {
  display: grid;
  gap: var(--sp-5);
  max-width: var(--measure-mid);
  margin: var(--sp-5) auto var(--sp-6);
  font-size: var(--t-md);
  line-height: var(--lh-prose);
  color: var(--ink-soft);
}
.slide-sef__body p { margin: 0; }
.slide-sef__footer {
  border-top: 1px solid var(--paper-2);
  padding-top: var(--sp-5);
  display: grid;
  gap: var(--sp-2);
  font-family: var(--font-mono);
  font-size: var(--t-xs);
  text-transform: lowercase;
  letter-spacing: var(--tr-mono-tight);
  color: var(--ink-soft);
}
.slide-sef__footer .label {
  display: inline-block;
  min-width: 110px;
  color: var(--ember);
  letter-spacing: var(--tr-mono);
  text-transform: uppercase;
}

.slide-ophelia__pull {
  text-align: center;
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-xl);
  line-height: var(--lh-snug);
  color: var(--ink);
  max-width: var(--measure-mid);
  margin: var(--sp-5) auto var(--sp-3);
}
.slide-ophelia__body {
  text-align: center;
  font-size: var(--t-md);
  line-height: var(--lh-prose);
  color: var(--ink-soft);
  max-width: var(--measure-mid);
  margin: var(--sp-5) auto;
}

.slide-ophelia__title {
  margin: 0;
  display: block;
  line-height: 1;
}
.slide-ophelia__wordmark {
  display: block;
  width: 100%;
  max-width: 480px;
  height: auto;
}

/* ── Past work + room-this-lives-in (41, 42) ────────────── */
.slide-pastwork__title,
.slide-roomlives__title {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-3xl);
  text-align: center;
  margin: var(--sp-5) auto;
  color: var(--paper);
}
.pastwork-grid,
.roomlives-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--sp-5);
  margin: var(--sp-5) 0 var(--sp-6);
}
.pastwork-tile,
.roomlives-tile { display: grid; gap: var(--sp-3); margin: 0; }
.pastwork-tile__image,
.roomlives-tile__image {
  aspect-ratio: 4 / 3;
  background: var(--coal-2);
  display: grid;
  place-items: center;
  position: relative;
  border: 1px solid var(--coal-3);
}
.pastwork-tile__num,
.roomlives-tile__num {
  position: absolute;
  top: var(--sp-2);
  left: var(--sp-3);
  font-family: var(--font-mono);
  font-size: var(--t-xs);
  letter-spacing: var(--tr-mono);
  color: var(--paper-mute);
}
.pastwork-tile__cap,
.roomlives-tile__cap {
  font-family: var(--font-sans);
  font-size: var(--t-sm);
  line-height: var(--lh-snug);
  color: var(--paper-soft);
  display: grid;
  gap: 2px;
}
.pastwork-tile__cap strong,
.roomlives-tile__cap strong {
  color: var(--paper);
  font-weight: 500;
}
.pastwork-tile__cap span,
.roomlives-tile__cap span {
  color: var(--paper-mute);
  font-size: var(--t-xs);
}
.roomlives-aside {
  max-width: var(--measure-wide);
  margin: var(--sp-5) auto;
  font-size: var(--t-sm);
  line-height: var(--lh-prose);
  color: var(--paper-soft);
  text-align: center;
  font-style: italic;
}

@media (max-width: 900px) {
  .pastwork-grid, .roomlives-grid { grid-template-columns: repeat(2, 1fr); }
}

/* ── editorial card grid (slide 43) ─────────────────────── */
.editorial-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--sp-4);
  margin: var(--sp-5) 0 var(--sp-6);
}
.editorial-card {
  padding: var(--sp-4);
  border: 1px solid var(--paper-2);
  border-radius: 2px;
}
.editorial-card__name {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-md);
  margin: 0 0 var(--sp-1);
  color: var(--ember);
}
.editorial-card__writer {
  font-size: var(--t-xs);
  color: var(--ink);
  margin: 0 0 var(--sp-1);
}
.editorial-card__note {
  font-size: var(--t-xs);
  color: var(--ink-mute);
  margin: 0;
  line-height: var(--lh-snug);
}

@media (max-width: 1100px) { .editorial-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 800px)  { .editorial-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 500px)  { .editorial-grid { grid-template-columns: 1fr; } }

/* ── Japanese craft tri (slide 44) ──────────────────────── */
.slide-craft__title {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-3xl);
  text-align: center;
  margin: var(--sp-5) auto var(--sp-5);
  color: var(--paper);
  max-width: 18ch;
  line-height: var(--lh-tight);
}
.slide-craft__lede {
  text-align: center;
  max-width: var(--measure-wide);
  margin: 0 auto var(--sp-6);
  font-size: var(--t-md);
  line-height: var(--lh-prose);
  color: var(--paper-soft);
}
.slide-craft__lede strong { color: var(--paper); }
.craft-tri {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--sp-6);
  margin: var(--sp-5) 0;
}
.craft-col__title {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-md);
  color: var(--ember);
  margin: 0 0 var(--sp-3);
}
.craft-col__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: var(--sp-2);
  font-size: var(--t-sm);
  line-height: var(--lh-prose);
  color: var(--paper-soft);
}

@media (max-width: 900px) {
  .craft-tri { grid-template-columns: 1fr; }
}

/* ── Calendar decision (slide 29) ───────────────────────── */
.slide-calendar .slide__inner {
  max-width: 1220px;
  gap: var(--sp-5);
}
.slide-calendar__head {
  max-width: 900px;
}
.slide-calendar__lede {
  max-width: 68ch;
  margin: 0 auto;
  text-align: center;
}
.calendar-decision {
  display: grid;
  grid-template-columns: minmax(360px, 0.9fr) minmax(520px, 1.1fr);
  gap: clamp(56px, 6vw, 96px);
  align-items: stretch;
  margin-top: var(--sp-7);
}
.calendar-now {
  border-top: 2px solid var(--ink);
  padding-top: var(--sp-5);
  display: grid;
  align-content: start;
  gap: var(--sp-4);
}
.calendar-now__date,
.calendar-next__date {
  font-family: var(--font-mono);
  font-size: var(--t-xs);
  letter-spacing: var(--tr-mono);
  color: var(--ink-mute);
  text-transform: uppercase;
  margin: 0;
}
.calendar-now__title {
  font-family: var(--font-sans);
  font-size: clamp(44px, 4.2vw, 70px);
  line-height: 1;
  font-weight: 500;
  color: var(--ink);
  margin: 0;
}
.calendar-now__body {
  font-family: var(--font-sans);
  font-size: clamp(18px, 1.25vw, 21px);
  line-height: 1.5;
  color: var(--ink-soft);
  margin: 0;
}
.calendar-next {
  display: grid;
  gap: var(--sp-4);
}
.calendar-next__item {
  border-top: 1px solid var(--paper-3);
  padding-top: var(--sp-4);
  display: grid;
  gap: var(--sp-2);
}
.calendar-next__item h3 {
  font-family: var(--font-sans);
  font-size: clamp(23px, 1.8vw, 30px);
  line-height: 1.12;
  font-weight: 500;
  color: var(--ink);
  margin: 0;
}
.calendar-next__item p:not(.calendar-next__date) {
  font-size: clamp(14px, 1vw, 16px);
  line-height: 1.45;
  color: var(--ink-soft);
  margin: 0;
}

@media (max-width: 900px) {
  .calendar-decision { grid-template-columns: 1fr; }
}

/* ── catalog cost table (slide 46) ──────────────────────── */
.catalog-cost-table {
  display: grid;
  margin: var(--sp-5) 0 var(--sp-3);
  border-top: 1px solid var(--paper-2);
}
.catalog-cost-row {
  display: grid;
  grid-template-columns: 2fr 1.6fr 1.2fr 1.6fr;
  gap: var(--sp-4);
  padding: var(--sp-4) 0;
  border-bottom: 1px solid var(--paper-2);
  font-size: var(--t-sm);
  color: var(--ink-soft);
  align-items: baseline;
}
.catalog-cost-row--head {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono);
  font-size: var(--t-xs);
  color: var(--ink-mute);
  padding: var(--sp-3) 0;
}
.catalog-cost-row--accent {
  background: rgba(26, 24, 22, 0.03);
  border-bottom-color: var(--ember);
}
.cc-piece {
  display: grid;
  gap: 2px;
  font-family: var(--font-serif);
  font-style: italic;
  color: var(--ink);
  font-size: var(--t-md);
}
.cc-meta {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono-tight);
  font-size: var(--t-xs);
  font-style: normal;
  color: var(--ink-mute);
}
.catalog-cost-footer {
  margin: var(--sp-3) 0 var(--sp-5);
  font-family: var(--font-mono);
  text-transform: lowercase;
  letter-spacing: var(--tr-mono-tight);
  font-size: var(--t-xs);
  color: var(--ink-mute);
  text-align: center;
}

@media (max-width: 900px) {
  .catalog-cost-row { grid-template-columns: 1fr; gap: var(--sp-1); }
  .catalog-cost-row--head { display: none; }
}

/* ── resources table (slide 47) ─────────────────────────── */
.resources-table {
  display: grid;
  margin: var(--sp-5) 0;
  border-top: 1px solid var(--paper-2);
}
.resources-row {
  display: grid;
  grid-template-columns: 1.4fr 2fr 2fr 2fr 1.6fr;
  gap: var(--sp-3);
  padding: var(--sp-4) 0;
  border-bottom: 1px solid var(--paper-2);
  font-size: var(--t-sm);
  color: var(--ink-soft);
  align-items: baseline;
  line-height: var(--lh-snug);
}
.resources-row--head {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono);
  font-size: var(--t-xs);
  color: var(--ink-mute);
  padding: var(--sp-3) 0;
}
.rr-name {
  font-family: var(--font-serif);
  font-style: italic;
  color: var(--ember);
  font-size: var(--t-md);
}

@media (max-width: 900px) {
  .resources-row { grid-template-columns: 1fr; gap: var(--sp-1); }
  .resources-row--head { display: none; }
}

/* ── anniversary tri (slide 48) ─────────────────────────── */
.anniversary-tri {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--sp-6);
  margin: var(--sp-5) 0 var(--sp-6);
}
.anniversary-block {
  padding: var(--sp-5);
  border: 1px solid var(--paper-2);
  border-radius: 2px;
}
.anniversary-block__title {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-md);
  margin: 0 0 var(--sp-3);
  color: var(--ember);
}
.anniversary-block p {
  font-size: var(--t-sm);
  line-height: var(--lh-prose);
  color: var(--ink-soft);
  margin: 0;
}

@media (max-width: 900px) {
  .anniversary-tri { grid-template-columns: 1fr; }
}

/* ── shape of next (slide 49) ───────────────────────────── */
.slide-next {}
.slide-next__head {
  display: grid;
  gap: var(--sp-5);
  max-width: 760px;
}
.slide-next__title {
  text-align: left;
  font-family: var(--font-serif);
  font-style: italic;
  font-size: clamp(44px, 5vw, 72px);
  line-height: var(--lh-tight);
  margin: 0;
  color: var(--paper);
  max-width: 14ch;
}
.slide-next__spike {
  text-align: center;
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-2xl);
  line-height: var(--lh-snug);
  color: var(--ember);
  max-width: 28ch;
  margin: var(--sp-5) auto;
}
.slide-next__body {
  text-align: left;
  color: var(--paper-soft);
  max-width: 54ch;
  margin: 0;
  font-size: clamp(17px, 1.25vw, 20px);
  line-height: var(--lh-prose);
}
.next-options {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-5);
  margin: 0;
  max-width: 900px;
}
.next-option {
  padding: var(--sp-5) var(--sp-5) var(--sp-6);
  border: 1px solid var(--coal-3);
  border-radius: 2px;
  background: rgba(28, 26, 22, 0.88);
}
.next-option__title {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-lg);
  margin: 0 0 var(--sp-1);
  color: var(--paper);
}
.next-option__when {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono-tight);
  font-size: var(--t-xs);
  color: var(--paper-mute);
  margin: 0 0 var(--sp-3);
}
.next-option__body {
  font-size: var(--t-sm);
  line-height: var(--lh-prose);
  color: var(--paper-soft);
  margin: 0;
}

@media (max-width: 900px) {
  .next-options { grid-template-columns: 1fr; }
}

/* ── soft close (slide 50) ──────────────────────────────── */
.slide-softclose__body {
  text-align: center;
}
.contact-panel {
  border-top: 1px solid var(--paper-2);
  border-bottom: 1px solid var(--paper-2);
  padding: var(--sp-5) 0;
  margin: var(--sp-5) auto;
  max-width: var(--measure-wide);
  display: grid;
  gap: var(--sp-3);
}
.contact-row {
  display: grid;
  grid-template-columns: 1.4fr 1.2fr 1.6fr;
  gap: var(--sp-4);
  font-family: var(--font-mono);
  font-size: var(--t-xs);
  text-transform: lowercase;
  letter-spacing: var(--tr-mono-tight);
  color: var(--ink-soft);
}
.contact-row__name { color: var(--ink); }
.contact-row__org { color: var(--ember); }
.contact-row__addr { text-align: right; }
.ophelia-wordmark {
  display: inline-block;
  height: 1.4em;
  width: auto;
  vertical-align: -0.32em;
  margin-top: -0.1em;
}
.followup-list {
  list-style: none;
  padding: 0;
  margin: var(--sp-5) auto;
  max-width: var(--measure-mid);
  display: grid;
  gap: var(--sp-3);
  font-size: var(--t-sm);
  line-height: var(--lh-prose);
  color: var(--ink-soft);
  text-align: center;
  font-style: italic;
}

@media (max-width: 900px) {
  .contact-row { grid-template-columns: 1fr; }
  .contact-row__addr { text-align: left; }
}

/* ── closing image (slide 51) ───────────────────────────── */
.slide-closing__frame {
  flex: 1;
  min-height: 50vh;
  background: linear-gradient(180deg, var(--coal-2), var(--coal));
  display: grid;
  place-items: end;
  padding: var(--sp-5);
  position: relative;
  border: 1px solid var(--coal-3);
  margin: var(--sp-5) 0;
}
.slide-closing__caption {
  font-family: var(--font-mono);
  text-transform: lowercase;
  letter-spacing: var(--tr-mono-tight);
  font-size: var(--t-xs);
  color: var(--paper-mute);
}
.slide-closing__quote {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--t-lg);
  line-height: var(--lh-snug);
  color: var(--paper);
  max-width: 36ch;
  margin: var(--sp-4) auto var(--sp-1);
  text-align: right;
  padding-right: var(--sp-7);
}
.slide-closing__cite {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: var(--tr-mono);
  font-size: var(--t-xs);
  color: var(--paper-mute);
  text-align: right;
  padding-right: var(--sp-7);
  margin: 0 0 var(--sp-7);
}
.slide-closing__signoff {
  font-family: var(--font-mono);
  text-transform: lowercase;
  letter-spacing: var(--tr-mono-tight);
  font-size: var(--t-xs);
  color: var(--paper-mute);
  text-align: center;
  margin: 0;
}
