/* Personal site page layout. One composition, two skins:
   light (default) is the poster printed on paper; dark is the poster itself.
   Theme variables are defined here; vendored token files stay untouched.
   The newsletter (cobalt drench) and footer (deep ink) are constants in both.
   Motion system: load choreography on the hero, JS-gated scroll reveals
   (elements are hidden by JS only, so the page is complete without it). */

:root {
  --ease-expo: cubic-bezier(0.16, 1, 0.3, 1);
  --dur-reveal: 700ms;

  /* Constants */
  --ink-deep: #14120F;
  --hair-on-ink: rgba(228, 225, 218, 0.16);

  /* ---- Light theme (default) ---- */
  --s-page: var(--paper);
  --s-strong: var(--ink);          /* headings, labels */
  --s-body: var(--ink-soft);       /* body copy */
  --s-meta: var(--ink-faint);      /* large numerals, decorative meta only */
  --s-meta-strong: var(--ink-soft);/* small meta text that must pass AA */
  --s-hair: var(--paper-edge);
  --s-accent-text: var(--accent);  /* cobalt as text on the page surface */
  --s-focus: var(--accent);
  --s-masthead: rgba(255, 255, 255, 0.97);
  --s-shadow: var(--shadow-card);
  --grain-blend: multiply;
  --grain-opacity: 0.05;

  /* Semantic z scale */
  --z-masthead: 20;
  --z-skip: 30;
}

:root[data-theme="dark"] {
  --s-page: var(--ink-deep);
  --s-strong: var(--paper);
  --s-body: var(--gray-1);
  --s-meta: var(--gray-3);
  --s-meta-strong: var(--gray-2);
  --s-hair: var(--hair-on-ink);
  --s-accent-text: #6C86EA;        /* cobalt that passes AA on ink */
  --s-focus: #6C86EA;
  --s-masthead: rgba(20, 18, 15, 0.96);
  --s-shadow: 0 24px 60px -24px rgba(0, 0, 0, 0.85);
  --grain-blend: screen;
  --grain-opacity: 0.05;
}

html {
  scroll-behavior: smooth;
  scroll-padding-top: 88px;
  background: var(--s-page);
}
/* When Lenis is driving the scroll (it adds .lenis to <html>), hand easing to
   the library so in-page anchor jumps are not double-smoothed. Without Lenis
   this rule never matches and native smooth scroll stands. */
html.lenis { scroll-behavior: auto; }

body {
  background: var(--s-page);
  color: var(--s-body);
  transition: background-color 0.3s var(--ease-out), color 0.3s var(--ease-out);
}

.paper-grain::after {
  mix-blend-mode: var(--grain-blend);
  opacity: var(--grain-opacity);
}

::selection { background: var(--accent); color: var(--paper); }

.skip-link {
  position: fixed;
  top: 0;
  left: 0;
  z-index: var(--z-skip);
  transform: translateY(-110%);
  background: var(--accent);
  color: var(--paper);
  font-family: var(--font-cond);
  font-weight: var(--fw-semi);
  font-size: var(--fs-label);
  letter-spacing: var(--ls-label);
  text-transform: uppercase;
  text-decoration: none;
  padding: 0.8em 1.4em;
  transition: transform var(--dur-base) var(--ease-out);
}
.skip-link:focus-visible { transform: translateY(0); outline: 2px solid var(--paper); outline-offset: -4px; }

/* ---- Masthead ---- */
.masthead {
  position: sticky;
  top: 0;
  z-index: var(--z-masthead);
  background: var(--s-masthead);
  border-bottom: var(--bw-hair) solid transparent;
  transition: border-color var(--dur-base) var(--ease-out), background-color 0.3s var(--ease-out);
}
.masthead--scrolled { border-bottom-color: var(--s-hair); }
.masthead-sentinel { position: absolute; top: 0; height: 1px; width: 1px; }
.masthead__inner {
  max-width: var(--page-max);
  margin: 0 auto;
  padding: var(--sp-4) var(--page-gutter);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-4);
}
.masthead__actions {
  display: flex;
  align-items: center;
  gap: clamp(0.75rem, 2vw, 1.5rem);
}
.wordmark {
  font-family: var(--font-display);
  font-size: 28px;
  line-height: 1;
  color: var(--s-strong);
  letter-spacing: -0.01em;
  text-decoration: none;
}
.wordmark__dot { color: var(--s-accent-text); }
.wordmark:focus-visible { outline: 2px solid var(--s-focus); outline-offset: 4px; }

/* Theme toggle: editorial text switch, active mode in cobalt */
.theme-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.5em;
  background: none;
  border: var(--bw-hair) solid var(--s-hair);
  border-radius: var(--r-0);
  padding: 0.55em 0.9em;
  cursor: pointer;
  font-family: var(--font-cond);
  font-weight: var(--fw-semi);
  font-size: var(--fs-eyebrow);
  letter-spacing: var(--ls-label);
  text-transform: uppercase;
  color: var(--s-meta-strong);
  transition: border-color var(--dur-base) var(--ease-out), color var(--dur-base) var(--ease-out);
}
.theme-toggle:hover { border-color: var(--s-meta-strong); }
.theme-toggle:focus-visible { outline: 2px solid var(--s-focus); outline-offset: 3px; }
.theme-toggle__sep { color: var(--s-meta); }
:root:not([data-theme="dark"]) .theme-toggle__opt[data-mode="light"],
:root[data-theme="dark"] .theme-toggle__opt[data-mode="dark"] {
  color: var(--s-accent-text);
}

.btn {
  display: inline-block;
  font-family: var(--font-cond);
  font-weight: var(--fw-semi);
  font-size: var(--fs-label);
  letter-spacing: var(--ls-label);
  text-transform: uppercase;
  text-decoration: none;
  cursor: pointer;
  padding: 0.75em 1.6em;
  border: var(--bw-ink) solid var(--accent);
  border-radius: var(--r-0);
  transition:
    background var(--dur-base) var(--ease-out),
    border-color var(--dur-base) var(--ease-out),
    color var(--dur-base) var(--ease-out),
    transform var(--dur-fast) var(--ease-out);
}
.btn:active { transform: translateY(1px); }
.btn--primary { background: var(--accent); color: var(--paper); }
.btn--primary:hover { background: var(--s-strong); border-color: var(--s-strong); color: var(--s-page); }
.btn:focus-visible { outline: 2px solid var(--s-focus); outline-offset: 3px; }

/* ---- Hero: one full fold, poster-scale type ---- */
.hero {
  max-width: var(--page-max);
  margin: 0 auto;
  padding: clamp(3rem, 8vh, 6rem) var(--page-gutter) clamp(2rem, 4vh, 3rem);
  min-height: calc(86dvh - 72px);
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.hero__eyebrow {
  color: var(--s-accent-text);
  margin: 0 0 clamp(1.5rem, 3vw, 2.5rem);
  animation: hero-fade 0.7s var(--ease-expo) both;
}
.hero__grid {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--sp-6);
}
.hero__statement {
  /* The design system's own giant-statement scale: Anton exists for this. */
  font-size: clamp(2.4rem, 11vw, 9rem);
  color: var(--s-strong);
  margin: 0;
}
/* Cobalt overprint block, the poster move. Constant in both themes. */
.hero__accent {
  font-style: normal;
  color: var(--paper);
  background: var(--accent);
  padding: 0 0.12em;
  margin: 0 -0.04em;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}
/* Small factual stack that anchors the hero's right edge at desktop. */
.hero__meta {
  list-style: none;
  margin: 0 0 0.75em;
  padding: 0;
  text-align: right;
  flex-shrink: 0;
  animation: hero-fade 0.8s 0.6s var(--ease-expo) both;
}
.hero__meta li {
  font-family: var(--font-cond);
  font-weight: var(--fw-med);
  font-size: var(--fs-label);
  letter-spacing: var(--ls-label);
  text-transform: uppercase;
  color: var(--s-meta-strong);
  line-height: 2;
}
/* Masked line reveal. Padding/negative-margin keeps descenders unclipped. */
.line {
  display: block;
  overflow: hidden;
  padding-block: 0.09em;
  margin-block: -0.09em;
}
/* Start state comes from the keyframe via fill-mode both, never from the
   base style, so disabled animations leave the headline fully visible. */
.line__inner {
  display: block;
  animation: hero-rise 0.9s var(--ease-expo) both;
}
.line:nth-child(1) .line__inner { animation-delay: 0.10s; }
.line:nth-child(2) .line__inner { animation-delay: 0.20s; }
.line:nth-child(3) .line__inner { animation-delay: 0.30s; }
.hero__rule {
  border-top-color: var(--accent);
  width: clamp(56px, 10vw, 120px);
  margin-top: clamp(1.5rem, 3.5vw, 2.75rem);
  transform-origin: left center;
  animation: hero-draw 0.8s 0.55s var(--ease-expo) both;
}
.hero__sub {
  font-family: var(--font-body);
  font-size: var(--fs-lead);
  line-height: var(--lh-snug);
  color: var(--s-body);
  max-width: 42ch;
  margin: clamp(1.25rem, 2.5vw, 2rem) 0 0;
  animation: hero-fade 0.8s 0.7s var(--ease-expo) both;
}

@keyframes hero-rise {
  from { transform: translateY(120%); }
  to   { transform: translateY(0); }
}
@keyframes hero-fade {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes hero-draw {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}
/* Once the entrance completes, JS strips the animations so the hero is plain
   static paint (finished compositor animations can drop out of full-page
   captures). Base states equal final states, so this changes nothing visually. */
.motion-done .hero__eyebrow,
.motion-done .line__inner,
.motion-done .hero__rule,
.motion-done .hero__sub,
.motion-done .hero__meta { animation: none; }

/* ---- Poster rail: the campaign art, big and physical ---- */
.rail {
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
}
.rail::-webkit-scrollbar { display: none; }
.rail__track {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(1.25rem, 2.5vw, 2.25rem);
  width: max-content;
  margin-inline: auto;
  padding: clamp(1.5rem, 4vw, 3rem) var(--page-gutter) clamp(2.5rem, 6vw, 4.5rem);
}
.rail__track img {
  width: clamp(150px, 16vw, 230px);
  height: auto; /* beat the width/height attribute hint so aspect-ratio rules */
  aspect-ratio: 3 / 4;
  object-fit: cover;
  display: block;
  box-shadow: var(--s-shadow);
  transition: transform var(--dur-slow) var(--ease-expo);
}
.rail__track img:nth-child(odd) { transform: rotate(-1.8deg); }
.rail__track img:nth-child(even) { transform: rotate(1.4deg); }
.rail__track img:hover { transform: rotate(0deg) translateY(-8px) scale(1.02); }
.rail__bw { filter: var(--img-filter); }

/* ---- Index ---- */
.index {
  max-width: var(--page-max);
  margin: 0 auto;
  padding: clamp(2rem, 5vw, 4rem) var(--page-gutter) clamp(4rem, 8vw, 7rem);
}
.index__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--sp-4);
  padding-bottom: var(--sp-4);
}
.index__title,
.index__count {
  font-family: var(--font-cond);
  font-weight: var(--fw-semi);
  font-size: var(--fs-label);
  letter-spacing: var(--ls-eyebrow);
  text-transform: uppercase;
  color: var(--s-meta-strong);
  margin: 0;
}

.offer {
  position: relative;
  display: grid;
  grid-template-columns: 4.5rem 1fr minmax(15rem, 21rem) auto;
  align-items: center;
  gap: var(--sp-5);
  padding: clamp(1.5rem, 3vw, 2.25rem) var(--sp-4);
  margin-inline: calc(-1 * var(--sp-4));
  border-top: var(--bw-hair) solid var(--s-hair);
  text-decoration: none;
  color: var(--s-strong);
}
.offer:last-of-type { border-bottom: var(--bw-hair) solid var(--s-hair); }
/* Cobalt sweep: the row floods electric blue from the baseline up. */
.offer::before {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--accent);
  transform: scaleY(0);
  transform-origin: center bottom;
  transition: transform 0.4s var(--ease-expo);
}
.offer > * { position: relative; z-index: 1; }
.offer__num {
  font-family: var(--font-cond);
  font-weight: var(--fw-reg);
  font-size: 1.5rem;
  line-height: 1;
  color: var(--s-meta);
  transition: color 0.3s var(--ease-out);
}
.offer__label {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(2rem, 4.2vw, 3.75rem);
  line-height: 1;
  letter-spacing: 0;
  color: var(--s-strong);
  transition: color 0.3s var(--ease-out), transform 0.4s var(--ease-expo);
}
.offer__desc {
  font-family: var(--font-body);
  font-size: var(--fs-body);
  color: var(--s-body);
  justify-self: start;
  transition: color 0.3s var(--ease-out);
}
.offer__art { display: none; }
.offer__arrow {
  font-family: var(--font-cond);
  font-weight: var(--fw-light);
  font-size: 1.75rem;
  line-height: 1;
  color: var(--s-meta);
  transition: color 0.3s var(--ease-out), transform 0.4s var(--ease-expo);
}
.offer:hover::before,
.offer:focus-visible::before { transform: scaleY(1); }
.offer:hover .offer__label,
.offer:focus-visible .offer__label { color: var(--paper); transform: translateX(0.5rem); }
.offer:hover .offer__desc,
.offer:focus-visible .offer__desc { color: var(--paper); }
.offer:hover .offer__num,
.offer:focus-visible .offer__num { color: var(--paper); }
.offer:hover .offer__arrow,
.offer:focus-visible .offer__arrow { color: var(--paper); transform: translateX(0.75rem); }
.offer:focus-visible { outline: 2px solid var(--s-focus); outline-offset: -2px; }

/* ---- Scroll reveals (classes applied by JS only) ---- */
.reveal-pre {
  opacity: 0;
  transform: translateY(28px);
}
.reveal-in {
  opacity: 1;
  transform: none;
  transition:
    opacity var(--dur-reveal) var(--ease-expo),
    transform var(--dur-reveal) var(--ease-expo);
}
/* Rail art keeps its resting rotation through the reveal. */
.rail__track img.reveal-pre { transform: translateY(28px) rotate(0deg); }
.rail__track img.reveal-in:nth-child(odd) { transform: rotate(-1.8deg); }
.rail__track img.reveal-in:nth-child(even) { transform: rotate(1.4deg); }
.rail__track img.reveal-in:hover { transform: rotate(0deg) translateY(-8px) scale(1.02); }

/* ---- Proof ---- */
.proof__quote {
  max-width: var(--page-max);
  margin: 0 auto;
  padding: clamp(3.5rem, 8vw, 6.5rem) var(--page-gutter);
}
.proof__mark {
  display: block;
  font-family: var(--font-display);
  font-size: clamp(4rem, 8vw, 6rem);
  line-height: 0.5;
  color: var(--s-accent-text);
  margin-bottom: var(--sp-4);
}
.proof__text {
  font-family: var(--font-body);
  font-style: italic;
  font-weight: var(--fw-med);
  font-size: clamp(1.5rem, 2.8vw, 2.5rem);
  line-height: 1.3;
  color: var(--s-strong);
  max-width: 28ch;
  margin: 0 0 var(--sp-5);
  text-wrap: pretty;
}
.proof__cite { font-style: italic; color: var(--s-meta-strong); }

/* ---- Newsletter: the cobalt drench (constant in both themes) ---- */
.newsletter { background: var(--accent); }
.newsletter__inner {
  max-width: var(--page-max);
  margin: 0 auto;
  padding: clamp(4.5rem, 10vw, 8rem) var(--page-gutter);
}
.newsletter__brand {
  font-family: var(--font-body);
  font-style: italic;
  font-size: var(--fs-lead);
  color: var(--paper);
  margin: 0 0 var(--sp-3);
}
.newsletter__title {
  color: var(--paper);
  font-size: clamp(2.5rem, 5.5vw, 4.75rem);
  margin: 0;
}
.rule-red--paper { border-top-color: var(--paper); }
.newsletter .rule-red { margin: var(--sp-5) 0; }
.newsletter__ask {
  font-family: var(--font-body);
  font-style: italic;
  font-size: var(--fs-lead);
  color: var(--paper);
  margin: 0 0 var(--sp-5);
}
.newsletter__form { display: flex; gap: var(--sp-3); flex-wrap: wrap; max-width: 34rem; }
.field {
  flex: 1 1 16rem;
  font-family: var(--font-body);
  font-size: var(--fs-body);
  color: var(--ink);
  background: var(--paper);
  border: var(--bw-ink) solid var(--paper);
  border-radius: var(--r-0);
  padding: 0.75em 1em;
}
.field::placeholder { color: var(--ink-soft); opacity: 1; }
.field:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.btn--ink { background: var(--ink); border-color: var(--ink); color: var(--paper); }
.btn--ink:hover { background: var(--paper); border-color: var(--paper); color: var(--ink); }
.newsletter .btn:focus-visible { outline-color: var(--paper); }

/* ---- Footer (constant deep ink in both themes) ---- */
.site-footer { background: var(--ink-deep); border-top: var(--bw-hair) solid var(--hair-on-ink); }
.site-footer__inner {
  max-width: var(--page-max);
  margin: 0 auto;
  padding: clamp(3.5rem, 7vw, 5.5rem) var(--page-gutter) clamp(2rem, 4vw, 3rem);
}
.site-footer__name {
  display: block;
  font-size: clamp(1.25rem, 2.2vw, 1.75rem); /* signature scale, ~1/4 of the original wordmark */
  color: var(--paper);
  text-decoration: none;
  padding-bottom: clamp(1.5rem, 4vw, 2.5rem);
  border-bottom: var(--bw-hair) solid var(--hair-on-ink);
}
.site-footer__dot { color: #6C86EA; }
.site-footer__name:hover .site-footer__dot { color: var(--paper); }
.site-footer__name:focus-visible { outline: 2px solid #6C86EA; outline-offset: 4px; }
.site-footer__row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: var(--sp-5);
  flex-wrap: wrap;
  padding-top: var(--sp-5);
}
.site-footer__links { display: flex; gap: var(--sp-5); flex-wrap: wrap; }
.site-footer__links a {
  font-family: var(--font-cond);
  font-weight: var(--fw-semi);
  font-size: var(--fs-label);
  letter-spacing: var(--ls-label);
  text-transform: uppercase;
  color: var(--gray-2);
  text-decoration: none;
  transition: color var(--dur-base) var(--ease-out);
}
.site-footer__links a:hover { color: var(--paper); }
.site-footer__links a:focus-visible { outline: 2px solid #6C86EA; outline-offset: 3px; }
/* Cognitive Fingerprint sign-off, bottom-right of the footer row. */
.site-footer__cf {
  font-family: var(--font-body);
  font-style: italic;
  font-size: var(--fs-body);
  color: var(--gray-2);
  text-decoration: none;
  transition: color var(--dur-base) var(--ease-out);
}
.site-footer__cf:hover { color: #6C86EA; }
.site-footer__cf:focus-visible { outline: 2px solid #6C86EA; outline-offset: 3px; }

.visually-hidden {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* ---- Responsive ---- */
@media (max-width: 900px) {
  .hero__meta { display: none; }
  .hero { min-height: 0; }
  .rail__track { justify-content: flex-start; }
  .offer {
    grid-template-columns: 2.5rem 1fr auto;
    grid-template-areas:
      "num label art"
      "num desc  art";
    row-gap: var(--sp-2);
    column-gap: var(--sp-4);
  }
  .offer__num { grid-area: num; font-size: 1.125rem; align-self: start; padding-top: 0.35rem; color: var(--s-meta-strong); }
  .offer__label { grid-area: label; }
  .offer__desc { grid-area: desc; }
  .offer__arrow { display: none; }
  .offer__art {
    grid-area: art;
    display: block;
    width: 72px;
    height: 96px;
    align-self: center;
  }
  .offer__art img { width: 100%; height: 100%; object-fit: cover; display: block; }
  .offer__art--bw img { filter: var(--img-filter); }
}

@media (max-width: 720px) {
  html { scroll-padding-top: 72px; }
  .hero { padding-top: clamp(3rem, 8vh, 5rem); }
  .hero__sub { font-size: var(--fs-body); }
  .offer__art { width: 60px; height: 80px; }
  .site-footer__row { flex-direction: column; align-items: flex-start; }
  .btn--primary { padding: 0.75em 1.1em; }
  .theme-toggle { padding: 0.55em 0.7em; }
}

/* ---- Spoke pages ---- */
.crumb {
  display: inline-block;
  font-family: var(--font-cond);
  font-weight: var(--fw-semi);
  font-size: var(--fs-eyebrow);
  letter-spacing: var(--ls-label);
  text-transform: uppercase;
  text-decoration: none;
  color: var(--s-meta-strong);
  margin-bottom: clamp(1.5rem, 4vw, 2.5rem);
  transition: color var(--dur-base) var(--ease-out);
}
.crumb:hover { color: var(--s-accent-text); }
.crumb:focus-visible { outline: 2px solid var(--s-focus); outline-offset: 3px; }

.spoke-hero {
  max-width: var(--page-max);
  margin: 0 auto;
  padding: clamp(2.5rem, 6vh, 4.5rem) var(--page-gutter) clamp(2.5rem, 6vw, 4.5rem);
  display: grid;
  grid-template-columns: minmax(0, 1fr) clamp(240px, 28vw, 380px);
  gap: clamp(2rem, 6vw, 5rem);
  align-items: center;
}
.hero__statement--spoke { font-size: clamp(2.2rem, 7vw, 5rem); }
/* The photomontage as a physical print: white sheet, shadow, slight tilt.
   Reads as a mounted print in both themes. */
.print {
  justify-self: end;
  margin: 0; /* figure UA default margins */
  width: 100%;
  background: #FFFFFF;
  box-shadow: var(--s-shadow);
  transform: rotate(1.6deg);
  animation: hero-fade 0.9s 0.45s var(--ease-expo) both;
}
.print img { display: block; width: 100%; height: auto; }
.motion-done .print { animation: none; }

.spoke-body {
  max-width: var(--page-max);
  margin: 0 auto;
  padding: 0 var(--page-gutter) clamp(3rem, 7vw, 5.5rem);
}
.spoke-section {
  display: grid;
  grid-template-columns: minmax(9rem, 15rem) minmax(0, 1fr);
  gap: clamp(1.5rem, 4vw, 4rem);
  padding: clamp(2.25rem, 5vw, 3.75rem) 0;
  border-top: var(--bw-hair) solid var(--s-hair);
}
.spoke-section__label {
  font-family: var(--font-cond);
  font-weight: var(--fw-semi);
  font-size: var(--fs-label);
  letter-spacing: var(--ls-eyebrow);
  text-transform: uppercase;
  color: var(--s-meta-strong);
  margin: 0;
  padding-top: 0.35em;
}
.spoke-section__body {
  max-width: 58ch;
  margin: 0;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--s-body);
}
.spoke-section__body p { margin: 0 0 1em; }
.spoke-section__body p:last-child { margin-bottom: 0; }
.spoke-section__body strong { color: var(--s-strong); font-weight: var(--fw-semi); }

/* Numbered steps: only for real sequences */
.steps { list-style: none; margin: 0; padding: 0; max-width: 58ch; }
.steps li {
  display: grid;
  grid-template-columns: 3rem minmax(0, 1fr);
  gap: var(--sp-4);
  padding: var(--sp-4) 0;
  border-top: var(--bw-hair) solid var(--s-hair);
}
.steps li:first-child { border-top: 0; padding-top: 0; }
.steps__num {
  font-family: var(--font-cond);
  font-weight: var(--fw-reg);
  font-size: 1.25rem;
  line-height: 1.3;
  color: var(--s-meta);
}
.steps__text { color: var(--s-body); }
.steps__text strong { color: var(--s-strong); font-weight: var(--fw-semi); }

/* Proof page quote list */
.quote-list .proof__quote { padding: clamp(2rem, 5vw, 3.5rem) 0; border-top: var(--bw-hair) solid var(--s-hair); max-width: none; }
.quote-list .proof__quote:first-child { border-top: 0; }
.quote-list .proof__mark { font-size: clamp(3rem, 5vw, 4rem); }
.quote-list .proof__text { font-size: clamp(1.25rem, 2.2vw, 1.9rem); }

/* Testimonials block on spoke pages: reuses .quote-list, page-width container. */
.spoke-quotes {
  max-width: var(--page-max);
  margin: 0 auto;
  padding: 0 var(--page-gutter) clamp(3rem, 7vw, 5.5rem);
}
.spoke-quotes__label { margin: 0 0 var(--sp-2); }

/* CTA band anchor spacing under sticky masthead */
#start { scroll-margin-top: 88px; }

@media (max-width: 900px) {
  .spoke-hero { grid-template-columns: minmax(0, 1fr); }
  .print { justify-self: start; max-width: min(320px, 100%); }
  .spoke-section { grid-template-columns: minmax(0, 1fr); gap: var(--sp-3); }
  .spoke-section__label { padding-top: 0; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .line__inner, .hero__rule, .hero__eyebrow, .hero__sub, .hero__meta, .print { animation: none; }
  .reveal-pre { opacity: 1; transform: none; }
  .rail__track img { transition: none; }
}
