@font-face {
  font-family: "FA Helvetica";
  src: url("assets/fonts/helvetica-light-587ebe5a59211.ttf") format("truetype");
  font-style: normal;
  font-weight: 200;
  font-display: swap;
}
@font-face {
  font-family: "FA Helvetica";
  src: url("assets/fonts/helvetica-light-587ebe5a59211.ttf") format("truetype");
  font-style: normal;
  font-weight: 300;
  font-display: swap;
}
@font-face {
  font-family: "FA Helvetica";
  src: url("assets/fonts/Helvetica.ttf") format("truetype");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: "FA Helvetica";
  src: url("assets/fonts/Helvetica.ttf") format("truetype");
  font-style: normal;
  font-weight: 500;
  font-display: swap;
}
@font-face {
  font-family: "FA Helvetica";
  src: url("assets/fonts/Helvetica-Bold.ttf") format("truetype");
  font-style: normal;
  font-weight: 700;
  font-display: swap;
}
@font-face {
  font-family: "FA Helvetica";
  src: url("assets/fonts/Helvetica-Oblique.ttf") format("truetype");
  font-style: italic;
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: "FA Helvetica";
  src: url("assets/fonts/Helvetica-BoldOblique.ttf") format("truetype");
  font-style: italic;
  font-weight: 700;
  font-display: swap;
}

@font-face {
  font-family: "FA Apple Garamond";
  src: url("assets/fonts/AppleGaramond-Light.ttf") format("truetype");
  font-style: normal;
  font-weight: 300;
  font-display: swap;
}
@font-face {
  font-family: "FA Apple Garamond";
  src: url("assets/fonts/AppleGaramond-LightItalic.ttf") format("truetype");
  font-style: italic;
  font-weight: 300;
  font-display: swap;
}
@font-face {
  font-family: "FA Apple Garamond";
  src: url("assets/fonts/AppleGaramond-Regular.ttf") format("truetype");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: "FA Apple Garamond";
  src: url("assets/fonts/AppleGaramond-Italic.ttf") format("truetype");
  font-style: italic;
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: "FA Apple Garamond";
  src: url("assets/fonts/AppleGaramond-Bold.ttf") format("truetype");
  font-style: normal;
  font-weight: 700;
  font-display: swap;
}
@font-face {
  font-family: "FA Apple Garamond";
  src: url("assets/fonts/AppleGaramond-BoldItalic.ttf") format("truetype");
  font-style: italic;
  font-weight: 700;
  font-display: swap;
}

:root {
  --brown: #312726;
  --brown-deep: #241b1a;
  --brown-soft: #443634;
  --cream: #fff8ed;
  --cream-muted: #efe3d5;
  --ink: #1e1917;
  --ink-soft: #6b5f58;
  --light: #fff7ec;
  --light-soft: rgba(255, 248, 237, .68);
  --line-dark: rgba(40, 30, 27, .20);
  --line-light: rgba(255, 248, 237, .20);
  --sans: "FA Helvetica", "Helvetica Neue", Helvetica, Arial, sans-serif;
  --serif: "FA Apple Garamond", "Apple Garamond", Garamond, "Iowan Old Style", Baskerville, "Times New Roman", serif;
  --mx: clamp(24px, 5.4vw, 92px);
  --max: 1560px;
  --gutter: clamp(16px, 1.7vw, 28px);
  --s1: 12px;
  --s2: 19px;
  --s3: 31px;
  --s4: 50px;
  --s5: 81px;
  --s6: 131px;
  --radius: 14px;
  --radius-small: 9px;
  /* Actual outer edge of the centred content shell. Unlike --mx, this also
     follows the 1560px max-width when the viewport is very wide / zoomed out. */
  --shell-edge: max(var(--mx), calc((100vw - var(--max)) / 2));
  --chapter-cut-width: var(--chapter-cut-width);
  /* Horizontal distance used by the S before it reaches the raised plateau. */
  --chapter-cut-curve-run: clamp(53px, 4.78vw, 78px);
  --ease: cubic-bezier(.16,.86,.24,1);
  --ease-soft: cubic-bezier(.22,.61,.36,1);
}

* { box-sizing: border-box; }
html, body { font-synthesis: none; }
html { scroll-behavior: smooth; background: var(--brown); }
body {
  margin: 0;
  min-width: 320px;
  font-family: var(--sans);
  font-synthesis: none;
  color: var(--ink);
  background: var(--brown);
  -webkit-font-smoothing: antialiased;
  text-rendering: geometricPrecision;
  overflow-x: clip;
}


/* ---------------------------------------------------------------------
   Opening loader — editorial, restrained, and tied to critical readiness.
   It protects the first frame from font/video/layout flashes without
   waiting for the entire archive to download.
   --------------------------------------------------------------------- */
html.is-loading,
html.is-loading body {
  overflow: hidden;
}

.site-loader {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: grid;
  place-items: center;
  padding: max(24px, env(safe-area-inset-top)) var(--mx) max(24px, env(safe-area-inset-bottom));
  background: var(--cream);
  color: var(--brown);
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition:
    opacity 680ms var(--ease-soft),
    visibility 0s linear 680ms;
}

.site-loader__inner {
  width: min(560px, 100%);
  display: grid;
  gap: 28px;
}

.site-loader__wordmark {
  font-family: var(--sans);
  font-size: clamp(24px, 3.1vw, 48px);
  font-weight: 300;
  line-height: .95;
  letter-spacing: -.045em;
  text-align: center;
  transform: translateY(0);
  filter: blur(0);
  opacity: 1;
  transition:
    opacity 520ms var(--ease-soft),
    filter 620ms var(--ease-soft),
    transform 620ms var(--ease-soft);
}

.site-loader__progress {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 3ch;
  align-items: center;
  gap: 14px;
}

.site-loader__track {
  position: relative;
  display: block;
  height: 1px;
  overflow: hidden;
  background: color-mix(in srgb, var(--brown) 22%, transparent);
}

.site-loader__bar {
  position: absolute;
  inset: 0;
  transform: scaleX(0);
  transform-origin: left center;
  background: currentColor;
  will-change: transform;
}

.site-loader__count {
  font-family: var(--sans);
  font-size: 11px;
  font-weight: 400;
  line-height: 1;
  letter-spacing: .08em;
  text-align: right;
  font-variant-numeric: tabular-nums;
}

html.loader-leaving .site-loader__wordmark {
  opacity: 0;
  filter: blur(9px);
  transform: translateY(-5px);
}

html.loader-leaving .site-loader__progress {
  opacity: 0;
  transition: opacity 300ms var(--ease-soft);
}

html.loader-done .site-loader {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

/* Keep the loader contents permanently in their exit state while the
   background itself fades away. This prevents the wordmark from briefly
   returning to opacity: 1 when the leaving state is released. */
html.loader-done .site-loader__wordmark,
html.loader-done .site-loader__progress {
  opacity: 0;
}

html.loader-done .site-loader__wordmark {
  filter: blur(9px);
  transform: translateY(-5px);
}

@media (max-width: 640px) {
  .site-loader__inner { width: min(420px, 100%); gap: 22px; }
  .site-loader__progress { gap: 12px; }
}

@media (prefers-reduced-motion: reduce) {
  .site-loader,
  .site-loader__wordmark,
  .site-loader__progress { transition-duration: 120ms !important; }
}

button, a { font: inherit; }
a { color: inherit; }
img, video { max-width: 100%; }
button { border: 0; padding: 0; background: none; color: inherit; }
figure, p, h1, h2, h3 { margin: 0; }
::selection { background: rgba(117, 85, 72, .22); }

.skip-link {
  position: fixed;
  z-index: 10000;
  left: 16px;
  top: 16px;
  transform: translateY(-160%);
  padding: 10px 14px;
  background: var(--cream);
  color: var(--ink);
}
.skip-link:focus { transform: translateY(0); }
.screen-edge-blur {
  position: fixed;
  inset: 0;
  z-index: 8000;
  pointer-events: none;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  -webkit-mask-image: linear-gradient(to bottom, #000 0%, rgba(0,0,0,.88) 3.5%, rgba(0,0,0,.38) 9%, transparent 17%, transparent 83%, rgba(0,0,0,.38) 91%, rgba(0,0,0,.88) 96.5%, #000 100%);
  mask-image: linear-gradient(to bottom, #000 0%, rgba(0,0,0,.88) 3.5%, rgba(0,0,0,.38) 9%, transparent 17%, transparent 83%, rgba(0,0,0,.38) 91%, rgba(0,0,0,.88) 96.5%, #000 100%);
}
.screen-edge-blur::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(18,12,11,.13) 0%, transparent 12%, transparent 88%, rgba(18,12,11,.13) 100%);
}


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

.section-brown { background: var(--brown); color: var(--light); }
.section-cream { background: var(--cream); color: var(--ink); }
.shell {
  width: min(calc(100% - 2 * var(--mx)), var(--max));
  margin-inline: auto;
}
.meta {
  font-size: clamp(10px, .78vw, 12px);
  line-height: 1.25;
  letter-spacing: .12em;
  text-transform: uppercase;
  font-weight: 500;
}
.serif {
  font-family: var(--serif);
  font-weight: 300;
  font-style: italic;
  letter-spacing: -.02em;
}
.display-title {
  font-size: clamp(48px, 6.8vw, 112px);
  line-height: .93;
  letter-spacing: -.055em;
  font-weight: 400;
}
.display-title--xl { font-size: clamp(58px, 8.6vw, 144px); }
.section-title {
  font-size: clamp(34px, 4.6vw, 76px);
  line-height: 1;
  letter-spacing: -.04em;
  font-weight: 400;
}
.editorial-copy {
  max-width: 44rem;
  font-size: clamp(17px, 1.35vw, 23px);
  line-height: 1.48;
  letter-spacing: -.015em;
}
.micro-note {
  max-width: 37rem;
  color: currentColor;
  opacity: .62;
  font-size: 12px;
  line-height: 1.55;
}
.hairline { height: 1px; background: currentColor; opacity: .2; flex: 1; }
.section-kicker { display: flex; align-items: center; gap: var(--s3); }
.section-kicker--dark { color: var(--ink); }
.quiet-link {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  text-decoration: none;
  font-size: 12px;
  letter-spacing: .08em;
  text-transform: uppercase;
  border-bottom: 1px solid rgba(255,255,255,.24);
  padding-bottom: 8px;
  transition: opacity .25s ease, gap .35s var(--ease);
}
.quiet-link:hover { gap: 20px; }
.quiet-link--light { color: var(--light); }
.quiet-link--dark { color: var(--brown); border-bottom-color: rgba(49,39,38,.24); }
.report-quiet-link { margin-top: var(--s4); }

/* Text reveal: lines are wrapped by JS */
.text-reveal { visibility: hidden; }
.text-reveal.is-prepared { visibility: visible; }
.reveal-line {
  display: block;
  overflow: hidden;
  padding-bottom: .06em;
  margin-bottom: -.06em;
}
.reveal-line > span {
  display: block;
  transform: translateY(118%);
  filter: blur(7px);
  opacity: .05;
  transition: transform .88s var(--ease), filter .88s var(--ease), opacity .62s ease;
  transition-delay: var(--delay, 0ms);
}
.text-reveal.is-visible .reveal-line > span {
  transform: translateY(0);
  filter: blur(0);
  opacity: 1;
}


/* ARCHIVE EDGE NAVIGATION -------------------------------------------------
   Four clean physical archive divider tabs. Each divider is one true closed
   white SVG shape. The S-curve itself terminates at the viewport edge: there is
   no rectangular tail or parallel strip after the curve. No border, shadow,
   extrusion, duplicate edge, or fake seam. Layering comes only from position
   and z-index. */
.archive-nav {
  position: fixed;
  z-index: 9000;
  font-family: var(--sans);
  color: var(--brown);
  pointer-events: none;
}
.archive-nav__tabs { position: relative; }
.archive-tab:nth-child(1) { --archive-stagger: 0ms; --archive-stagger-reverse: 210ms; }
.archive-tab:nth-child(2) { --archive-stagger: 70ms; --archive-stagger-reverse: 140ms; }
.archive-tab:nth-child(3) { --archive-stagger: 140ms; --archive-stagger-reverse: 70ms; }
.archive-tab:nth-child(4) { --archive-stagger: 210ms; --archive-stagger-reverse: 0ms; }
.archive-tab {
  --archive-face: rgba(255,255,255,.90);
  --archive-face-active: #fff;
  --archive-face-muted: rgba(228,225,220,.78);
  --archive-tab-text: var(--brown);
  position: absolute;
  display: block;
  color: var(--archive-tab-text);
  text-decoration: none;
  background: transparent !important;
  border: 0 !important;
  outline: 0;
  box-shadow: none !important;
  pointer-events: auto;
  opacity: .90;
  transform-origin: right center;
  transition: transform .38s var(--ease), opacity .34s var(--ease-soft), color .34s var(--ease-soft);
  will-change: transform;
}
.archive-tab__svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  overflow: hidden;
}
.archive-tab__svg path {
  stroke: none !important;
  fill: #fff;
}
.archive-tab__depth { display: none !important; }
.archive-tab__face path { fill: var(--archive-face); transition: fill .34s var(--ease-soft); }
.archive-tab__content {
  position: absolute;
  z-index: 3;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 11px;
  white-space: nowrap;
}
.archive-tab__number,
.archive-tab__label {
  display: inline-block;
  line-height: 1;
  text-transform: uppercase;
  font-weight: 400;
}
.archive-tab__number { font-size: 9px; letter-spacing: .12em; }
.archive-tab__label { font-size: 7.5px; letter-spacing: .115em; opacity: .68; }
.archive-tab.is-active { opacity: 1; }
.archive-tab.is-active .archive-tab__face path { fill: var(--archive-face-active); }

/* Desktop: four equal long tabs overlap like real file dividers. */
@media (min-width: 1180px) {
  .archive-nav {
    top: 0;
    right: 0;
    width: 54px;
    height: 100dvh;
  }
  .archive-nav__tabs {
    width: 100%;
    height: 100%;
  }
  .archive-tab {
    right: 0;
    width: 54px;
    height: 32vh;
    transform: translateX(0);
  }
  /* Equal size; only vertical offset changes. Each overlaps the next. */
  .archive-tab:nth-child(1) { top: 1vh;  z-index: 11; }
  .archive-tab:nth-child(2) { top: 23vh; z-index: 12; }
  .archive-tab:nth-child(3) { top: 45vh; z-index: 13; }
  .archive-tab:nth-child(4) { top: 67vh; z-index: 14; }

  .archive-tab__svg--desktop { display: block; }
  .archive-tab__svg--mobile { display: none; }
  .archive-tab__content {
    top: 50%;
    left: 31px;
    transform: translate(-50%,-50%) rotate(90deg);
    transform-origin: 50% 50%;
  }

  /* Controlled adaptive contrast. This deliberately avoids mix-blend-mode:
     the only two material states are translucent white on dark sections and
     translucent archive brown on light/cream sections. */
  .archive-tab.archive-tone-light {
    --archive-face: rgba(49,39,38,.14);
    --archive-face-active: rgba(49,39,38,.22);
    --archive-face-muted: rgba(49,39,38,.08);
    --archive-tab-text: rgba(49,39,38,.94);
  }

  .archive-tab.is-active {
    z-index: 30;
    transform: scaleX(1.035);
  }

  /* Same reaction language as the opening Index. */
  .archive-nav__tabs:has(.archive-tab:hover) .archive-tab:not(:hover),
  .archive-nav__tabs:focus-within .archive-tab:not(:focus-visible) {
    opacity: .52;
  }
  .archive-nav__tabs:has(.archive-tab:hover) .archive-tab:not(:hover) .archive-tab__face path,
  .archive-nav__tabs:focus-within .archive-tab:not(:focus-visible) .archive-tab__face path {
    fill: var(--archive-face-muted);
  }
  .archive-tab:hover,
  .archive-tab:focus-visible {
    z-index: 100 !important;
    opacity: 1;
    transform: scaleX(1.09);
    outline: none;
  }
  .archive-tab:hover .archive-tab__face path,
  .archive-tab:focus-visible .archive-tab__face path { fill: var(--archive-face-active); }
  .archive-tab:hover .archive-tab__label,
  .archive-tab:focus-visible .archive-tab__label,
  .archive-tab.is-active .archive-tab__label { opacity: .88; }

  /* Scroll-direction reveal: tabs enter one after another while remaining
     anchored to the viewport edge. Reverse stagger is used on the way out. */
  .archive-nav:not(.is-visible) .archive-tab {
    opacity: 0;
    pointer-events: none;
    transform: translateX(18px) scaleX(.985);
    transition-delay: var(--archive-stagger-reverse);
  }
  .archive-nav.is-visible .archive-tab {
    transition-delay: var(--archive-stagger);
  }
}

/* Touch / iPhone: compact file-divider tabs matching the approved render.
   Each tab is a broad, shallow, independent sheet hanging from the top edge.
   The S transition is confined to the lower corners so there are no stems,
   extrusions or scalloped-header artefacts. */
@media (max-width: 1179px) {
  .archive-nav {
    top: 0;
    left: 0;
    right: 0;
    padding-top: env(safe-area-inset-top, 0px);
    background: transparent;
    opacity: 1;
    visibility: visible;
  }
  .archive-nav::before {
    content: "";
    position: absolute;
    z-index: -1;
    top: 0;
    left: 0;
    right: 0;
    height: env(safe-area-inset-top, 0px);
    background: #fff;
    opacity: 0;
    transition: opacity .28s var(--ease-soft);
  }
  .archive-nav.is-visible::before { opacity: 1; }
  .archive-nav__tabs {
    position: relative;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 3px;
    width: 100%;
    height: 54px;
    padding: 0 5px 2px;
    overflow: visible;
    background: transparent;
  }
  .archive-tab,
  .archive-tab:nth-child(1),
  .archive-tab:nth-child(2),
  .archive-tab:nth-child(3),
  .archive-tab:nth-child(4) {
    --archive-face: #ece8e1;
    --archive-face-active: #fff;
    --archive-face-muted: #ece8e1;
    --archive-tab-text: var(--brown);
    position: relative;
    top: auto;
    left: auto;
    width: 100%;
    height: 54px;
    transform: none;
    overflow: visible;
    background: transparent !important;
  }
  .archive-tab:nth-child(1) { z-index: 11; }
  .archive-tab:nth-child(2) { z-index: 12; }
  .archive-tab:nth-child(3) { z-index: 13; }
  .archive-tab:nth-child(4) { z-index: 14; }

  .archive-tab__svg--desktop { display: none; }
  .archive-tab__svg--mobile {
    display: block;
    overflow: visible;
  }
  .archive-tab__depth { display: none !important; }
  .archive-tab__face path {
    fill: #ece8e1;
    stroke: none !important;
  }
  .archive-tab.is-active .archive-tab__face path,
  .archive-tab:active .archive-tab__face path { fill: #fff; }

  .archive-tab__content {
    top: 11px;
    left: 50%;
    width: calc(100% - 10px);
    transform: translateX(-50%);
    display: flex;
    flex-direction: column;
    gap: 4px;
    text-align: center;
  }
  .archive-tab__number {
    font-size: 8.5px;
    letter-spacing: .11em;
  }
  .archive-tab__label {
    display: block;
    max-width: 92px;
    margin: 0 auto;
    white-space: normal;
    text-wrap: balance;
    font-size: clamp(5.4px, 1.35vw, 6.7px);
    line-height: 1.1;
    letter-spacing: .072em;
    opacity: .64;
  }
  .archive-tab.is-active {
    z-index: 30;
    opacity: 1;
    transform: none;
  }
  .archive-tab.is-active .archive-tab__label { opacity: .82; }
  .archive-tab:active {
    z-index: 100;
    opacity: 1;
    transform: scale(.992);
  }

  /* Each mobile divider enters independently from the top edge. */
  .archive-nav:not(.is-visible) .archive-tab {
    opacity: 0;
    pointer-events: none;
    transform: translateY(-18px) scale(.99);
    transition-delay: var(--archive-stagger-reverse);
  }
  .archive-nav.is-visible .archive-tab {
    transition-delay: var(--archive-stagger);
  }

  /* Landscape phones need the same object, simply shallower. */
  @media (orientation: landscape) and (max-height: 560px) {
    .archive-nav__tabs,
    .archive-tab,
    .archive-tab:nth-child(1),
    .archive-tab:nth-child(2),
    .archive-tab:nth-child(3),
    .archive-tab:nth-child(4) { height: 46px; }
    .archive-nav__tabs { padding-bottom: 1px; }
    .archive-tab__content { top: 8px; gap: 3px; }
    .archive-tab__number { font-size: 8.5px; }
    .archive-tab__label { font-size: 5.6px; line-height: 1.05; max-width: 104px; }
  }
}


/* CHAPTER EDGE / ARCHIVE CUT --------------------------------------------
   A shallow chapter cue, aligned to the same centred field as the site grid.
   Desktop uses a taller, steeper profile and alternates left/right. Mobile
   uses a broader, smoother profile. Labels are short chapter messages rather
   than duplicate section titles. */
.chapter-breath {
  width: 100%;
  height: clamp(96px, 8vw, 128px);
}
.chapter-breath--brown { background: var(--brown); }
.chapter-breath--cream { background: var(--cream); }



.chapter-cut {
  --chapter-cut-h: clamp(52px, 3.4vw, 60px);
  --chapter-curve-run: clamp(82px, 5.2vw, 104px);
  --chapter-start-min: 24px;
  position: relative;
  z-index: 8;
  width: 100%;
  height: var(--chapter-cut-h);
  margin-top: calc(var(--chapter-cut-h) * -1);
  margin-bottom: -4px;
  overflow: hidden;
  pointer-events: none;
}
.chapter-cut::after {
  content: "";
  position: absolute;
  z-index: 0;
  left: 0;
  right: 0;
  bottom: -3px;
  height: 10px;
}
.chapter-cut--cream::after { background: var(--cream); }
.chapter-cut--brown::after { background: var(--brown); }
.chapter-cut__inner {
  position: relative;
  z-index: 1;
  width: 100%;
  height: 100%;
}

/* v68: one continuous SVG edge. No plateau span, no separate rise/fall SVGs,
   and therefore no join that can create a shoulder or sharp point. The path
   itself is recalculated from the real content-grid edge so the geometry from
   v65 stays locked to the image/title grid. */
.chapter-cut__shape {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: block;
  width: 100%;
  height: calc(100% + 5px);
  overflow: visible;
  shape-rendering: geometricPrecision;
}
.chapter-cut__shape path { stroke: none; }
.chapter-cut__shape--desktop { display: block; }
.chapter-cut__shape--mobile { display: none; }
.chapter-cut--right .chapter-cut__shape--desktop {
  transform: scaleX(-1);
  transform-origin: 50% 50%;
}
.chapter-cut--cream .chapter-cut__shape path { fill: var(--cream); }
.chapter-cut--brown .chapter-cut__shape path { fill: var(--brown); }

.chapter-cut__label {
  position: absolute;
  z-index: 3;
  top: 50%;
  bottom: auto;
  font-family: var(--sans);
  font-size: clamp(10px, .78vw, 12px);
  line-height: 1;
  letter-spacing: .12em;
  text-transform: uppercase;
  white-space: nowrap;
  opacity: .60;
  text-align: center;
  transform: translateY(-50%);
}
/* The label now uses the actual visual bump bounds calculated by JS, rather
   than the grid-to-centre span. This places it at the true horizontal centre
   of the bump silhouette while preserving the approved grid geometry. */
.chapter-cut--left .chapter-cut__label {
  left: var(--chapter-label-start, var(--shell-edge));
  width: var(--chapter-label-width, calc(50vw - var(--shell-edge)));
}
.chapter-cut--right .chapter-cut__label {
  right: var(--chapter-label-start, var(--shell-edge));
  width: var(--chapter-label-width, calc(50vw - var(--shell-edge)));
}
.chapter-cut--cream .chapter-cut__label { color: var(--brown); }
.chapter-cut--brown .chapter-cut__label { color: var(--cream); }

@media (max-width: 760px) {
  .chapter-breath { height: 0; }
  .chapter-cut {
    --chapter-cut-h: 30px;
    --chapter-curve-run: clamp(44px, 13.5vw, 58px);
    height: var(--chapter-cut-h);
    margin-top: calc(var(--chapter-cut-h) * -1);
    margin-bottom: -3px;
  }
  .chapter-cut__shape--desktop { display: none; }
  .chapter-cut__shape--mobile {
    display: block;
    left: 0;
    right: 0;
    width: 100%;
    transform: none !important;
  }
  .chapter-cut__label,
  .chapter-cut--left .chapter-cut__label,
  .chapter-cut--right .chapter-cut__label {
    left: 4vw;
    right: 4vw;
    width: auto;
    top: 50%;
    bottom: auto;
    transform: translateY(-50%);
    font-size: 6.4px;
    letter-spacing: .10em;
    text-align: center;
    opacity: .62;
  }
}

/* HERO */
.hero {
  position: relative;
  min-height: 104svh;
  overflow: hidden;
  isolation: isolate;
}
.hero__video,
.music__video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: -4;
  pointer-events: none;
  -webkit-user-select: none;
  user-select: none;
  -webkit-appearance: none;
}

/* Ambient loops are decorative backgrounds, never media players.
   In particular, suppress Safari/iOS native playback chrome when autoplay is
   deferred by power/data policy. The poster remains as the clean fallback. */
.hero__video::-webkit-media-controls,
.music__video::-webkit-media-controls,
.hero__video::-webkit-media-controls-enclosure,
.music__video::-webkit-media-controls-enclosure,
.hero__video::-webkit-media-controls-panel,
.music__video::-webkit-media-controls-panel,
.hero__video::-webkit-media-controls-start-playback-button,
.music__video::-webkit-media-controls-start-playback-button,
.hero__video::-webkit-media-controls-overlay-play-button,
.music__video::-webkit-media-controls-overlay-play-button {
  display: none !important;
  -webkit-appearance: none !important;
  opacity: 0 !important;
  pointer-events: none !important;
}
.hero__brown-veil,
.music__veil {
  position: absolute;
  inset: 0;
  z-index: -3;
  background: rgba(49, 39, 38, .58);
}
.hero__matte-transition {
  position: absolute;
  z-index: -2;
  left: 0;
  right: 0;
  bottom: 0;
  height: 48svh;
  background: linear-gradient(to bottom, rgba(49,39,38,0), rgba(49,39,38,.72) 46%, var(--brown) 96%);
  pointer-events: none;
}
.hero__shell {
  min-height: 100svh;
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  column-gap: var(--gutter);
  grid-template-rows: 1fr;
  padding-block: clamp(64px, 9vh, 112px) clamp(76px, 10vh, 122px);
}
.hero__identity {
  grid-column: 3 / 11;
  align-self: center;
  text-align: center;
}
.hero__identity .meta { opacity: .88; margin-bottom: var(--s3); color: #fff; }
.hero-morph {
  position: relative;
  min-height: 1.1em;
  margin: 0;
  font-size: clamp(56px, 8.7vw, 148px);
  line-height: .9;
  letter-spacing: -.062em;
  font-weight: 400;
  cursor: default;
  perspective: 900px;
  color: #ffffff;
}
.hero-morph__word {
  position: absolute;
  inset: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  white-space: nowrap;
}
.hero-morph__target { opacity: 0; }
.hero-glyph {
  display: inline-block;
  will-change: transform, opacity, filter;
  transform-origin: 50% 70%;
}
.hero-glyph.space { width: .26em; }
.hero__sub {
  margin-top: var(--s3);
  font-size: clamp(13px, 1vw, 16px);
  letter-spacing: .035em;
  opacity: .88;
  color: #fff;
}

/* INDEX */
/*
  Warm cream archive plates inside the brown index field. The cards stay
  intentionally simple: silhouette, spacing and type do the work. No inner
  rules, hover underlines, shadows, glows or decorative extrusion.
*/
.index {
  position: relative;
  z-index: 6;
  margin-top: clamp(-225px, -14vw, -142px);
  padding: 0 0 clamp(110px, 13vw, 190px);
  background: transparent;
}
.index__shell {
  min-height: clamp(620px, 72svh, 810px);
  padding-top: var(--s3);
  display: flex;
  flex-direction: column;
}
.index-divider {
  height: 1px;
  width: 100%;
  margin-top: 0;
  background: rgba(255,248,237,.18);
}
.index-stack {
  width: min(100%, 1280px);
  margin: auto;
  display: grid;
  gap: 0;
  perspective: 1200px;
}
.index-card {
  --stack-offset: 0px;
  position: relative;
  isolation: isolate;
  display: grid;
  grid-template-columns: 66px minmax(0, 1fr) minmax(230px, auto);
  align-items: center;
  gap: 25px;
  min-height: 118px;
  padding: 27px 34px;
  border: 1px solid rgba(49,39,38,.16);
  border-radius: 20px;
  background: rgba(255,248,237,.94);
  color: var(--brown);
  text-decoration: none;
  opacity: 0;
  left: var(--stack-offset);
  transform: translateY(18px) scale(.994);
  transform-origin: 50% 50%;
  transition:
    opacity 1.05s var(--ease),
    transform .88s var(--ease),
    background-color .32s var(--ease-soft),
    border-color .32s var(--ease-soft);
  box-shadow: none !important;
}
.index-card + .index-card { margin-top: -7px; }
.index-card:nth-child(1) { z-index: 4; --stack-offset: -24px; }
.index-card:nth-child(2) { z-index: 3; --stack-offset: -8px; }
.index-card:nth-child(3) { z-index: 2; --stack-offset: 8px; }
.index-card:nth-child(4) { z-index: 1; --stack-offset: 24px; }
.index-card::before,
.index-card::after { content: none; }
.index-card.is-visible { opacity: 1; transform: translateY(0) scale(1); }
.index-stack:has(.index-card:hover) .index-card:not(:hover),
.index-stack:has(.index-card:focus-visible) .index-card:not(:focus-visible) {
  opacity: .88;
}
.index-card:hover,
.index-card:focus-visible {
  z-index: 20;
  transform: translateX(5px) translateY(-3px) scale(1.002);
  background: var(--cream);
  border-color: rgba(49,39,38,.27);
  outline: none;
}
.index-card__number {
  font-size: 12px;
  letter-spacing: .08em;
  opacity: .56;
}
.index-card__title {
  font-size: clamp(27px, 2.55vw, 40px);
  letter-spacing: -.04em;
  line-height: .98;
}
.index-card__meta {
  font-size: 9px;
  letter-spacing: .11em;
  text-transform: uppercase;
  opacity: .58;
  text-align: right;
  white-space: nowrap;
}

/* SHARED PROJECT INTRO */
.project-intro {
  display: grid;
  grid-template-columns: repeat(12, minmax(0,1fr));
  column-gap: var(--gutter);
  padding-top: clamp(92px, 11vw, 170px);
  padding-bottom: clamp(72px, 8vw, 124px);
}
.project-intro__title { grid-column: 1 / 8; }
.project-intro__title .meta { margin-bottom: var(--s2); }
.project-intro__copy { grid-column: 9 / 13; display: grid; align-content: end; gap: var(--s3); }

/* PHOTO CARDS */
.photo-card,
.video-card,
.qr-frame,
.report-card {
  --tiltX: 0deg;
  --tiltY: 0deg;
  --lift: 0px;
  --scale3d: 1;
  transform: perspective(1100px) translate3d(0, var(--lift), 0) rotateX(var(--tiltX)) rotateY(var(--tiltY)) scale(var(--scale3d));
  transform-style: preserve-3d;
  transition: transform .34s var(--ease), opacity .72s var(--ease), filter .72s var(--ease);
  will-change: transform;
  box-shadow: none !important;
}
.photo-card[data-reveal-card] { opacity: 0; transition-delay: var(--queued-delay, 0ms); transform: perspective(1100px) translate3d(0, 32px, 0) rotateX(0deg) rotateY(0deg) scale(.985); filter: blur(5px); }
.photo-card[data-reveal-card].is-visible { opacity: 1; transition-delay: 0ms; transform: perspective(1100px) translate3d(0, var(--lift), 0) rotateX(var(--tiltX)) rotateY(var(--tiltY)) scale(var(--scale3d)); filter: blur(0); }
.image-button { display: block; width: 100%; cursor: zoom-in; }
.image-button img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
  border-radius: var(--radius-small);
}
.image-button--transparent {
  min-height: 270px;
  display: grid;
  place-items: center;
  padding: clamp(24px, 4vw, 62px);
}
.image-button--transparent img { max-height: 340px; object-fit: contain; }
.caption-row {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  margin-top: 9px;
  padding-top: 9px;
  border-top: 1px solid currentColor;
  opacity: .58;
  font-size: 9px;
  line-height: 1.3;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.caption-chip {
  position: absolute;
  left: 10px;
  bottom: 10px;
  z-index: 3;
  padding: 7px 9px;
  border: 1px solid rgba(255,248,237,.22);
  border-radius: 999px;
  background: rgba(35, 27, 25, .58);
  color: var(--light);
  font-size: 8px;
  line-height: 1;
  letter-spacing: .1em;
  text-transform: uppercase;
  backdrop-filter: blur(5px);
  -webkit-backdrop-filter: blur(5px);
}
.overlap-card { position: relative; }
.overlap-card.is-hovered { z-index: 50 !important; }

/* PORSCHE */
.porsche { padding-bottom: clamp(90px, 12vw, 170px); }
.porsche-grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0,1fr));
  column-gap: var(--gutter);
  row-gap: clamp(56px, 7vw, 108px);
  align-items: start;
}
.porsche-shot--a { grid-column: 1 / 8; }
.porsche-shot--b { grid-column: 8 / 13; margin-top: 7vw; }
.porsche-shot--c { grid-column: 1 / 5; }
.porsche-shot--d { grid-column: 5 / 9; margin-top: 4vw; }
.porsche-shot--e { grid-column: 9 / 13; }
.porsche-shot--f { grid-column: 1 / 7; }
.porsche-shot--g { grid-column: 7 / 13; margin-top: 5vw; }
.porsche-shot--h { grid-column: 1 / 5; }
.porsche-shot--i { grid-column: 5 / 9; margin-top: 4vw; }
.porsche-shot--j { grid-column: 9 / 13; }
.porsche-shot--k { grid-column: auto; }
.porsche-closing {
  padding-top: clamp(70px, 8vw, 120px);
  display: grid;
  grid-template-columns: repeat(12, minmax(0,1fr));
  column-gap: var(--gutter);
  row-gap: clamp(30px, 4vw, 56px);
  align-items: start;
}
.porsche-closing .porsche-shot--k {
  grid-column: 1 / 5;
  width: 100%;
  max-width: none;
}
.porsche-closing .services-block {
  grid-column: 1 / 11;
  padding-top: 0;
}
.services-block { padding-top: 0; }
.porsche-closing .services-lead { max-width: 34rem; }
.porsche-closing .editorial-copy { max-width: 48rem; }
.services-lead {
  max-width: 12ch;
  margin-top: var(--s4);
  font-size: clamp(34px, 4.4vw, 70px);
  line-height: 1.02;
  letter-spacing: -.045em;
  font-weight: 400;
}
.technical-list { margin-top: var(--s4); }
.technical-list > div {
  display: grid;
  grid-template-columns: minmax(110px, 1.5fr) minmax(0, 5fr);
  gap: var(--gutter);
  padding: 13px 0;
  border-top: 1px solid currentColor;
  border-color: rgba(255,248,237,.18);
}
.technical-list > div:last-child { border-bottom: 1px solid currentColor; border-color: rgba(255,248,237,.18); }
.technical-list span { font-size: 9px; letter-spacing: .1em; text-transform: uppercase; opacity: .56; }
.technical-list strong { font-size: 12px; font-weight: 400; }
.services-list { max-width: 820px; margin-left: auto; }
.services-list > div { border-color: var(--line-dark); }
.services-list > div:last-child { border-color: var(--line-dark); }
.services-block .editorial-copy { margin-top: var(--s4); max-width: 46rem; }
.services-block .editorial-copy + .editorial-copy { margin-top: var(--s3); }
.services-block .micro-note { margin-top: var(--s4); max-width: 38rem; }

/* ARCHIVE BRIDGE */
.archive-bridge { height: 58svh; }
.archive-bridge__sticky {
  position: sticky;
  top: 0;
  min-height: 58svh;
  display: grid;
  align-content: center;
}
.archive-bridge__words {
  position: relative;
  min-height: 1.1em;
  margin-top: var(--s2);
  font-size: clamp(64px, 10vw, 170px);
  line-height: .9;
  letter-spacing: -.065em;
  font-weight: 400;
}
.archive-bridge__words > span { position: absolute; inset: 0 auto auto 0; will-change: transform, opacity, filter; }
.archive-bridge__words { cursor: default; perspective: 900px; }
.archive-glyph { display: inline-block; will-change: transform, opacity, filter; transform-origin: 50% 72%; }
.archive-glyph.space { width: .25em; }
.archive-bridge__kuru { opacity: 0; filter: blur(8px); transform: translateY(16px); }

/* KURU */
.kuru { padding-bottom: clamp(100px, 12vw, 180px); }
.kuru__intro { padding-top: clamp(28px, 4vw, 44px); padding-bottom: clamp(52px, 6vw, 92px); align-items: end; }
.kuru__eyebrow { grid-column: 1 / 4; }
.kuru__copy-block { grid-column: 4 / 13; }
.kuru__copy-block .editorial-copy { max-width: 52rem; }
.kuru-stack {
  position: relative;
  min-height: clamp(820px, 66vw, 1020px);
  margin-top: clamp(12px, 2vw, 30px);
}
.kuru-card { position: absolute; width: min(54vw, 760px); }
.kuru-card--1 { left: 0; top: 1%; transform-origin: center; rotate: -3deg; z-index: 1; }
.kuru-card--2 { left: 50%; top: 25%; translate: -50% 0; rotate: 2.2deg; z-index: 2; }
.kuru-card--3 { right: 0; top: 49%; rotate: -2.1deg; z-index: 3; }
.kuru-card .image-button img { border: 1px solid rgba(255,248,237,.12); }
.kuru-notes { margin-top: clamp(40px, 5vw, 72px); }
.technical-sheet--dark { color: var(--light); }
.kuru-notes .micro-note { margin-top: var(--s3); }
.film-reward { margin-top: clamp(100px, 12vw, 180px); }
.video-card { margin-top: var(--s4); }
.video-card video { display: block; width: 100%; border-radius: var(--radius); background: #0c0a09; }

/* ODYSSEY */
.odyssey { padding-bottom: clamp(110px, 14vw, 210px); }
.odyssey__title-block { padding-top: clamp(94px, 12vw, 180px); padding-bottom: clamp(72px, 8vw, 124px); }
.odyssey__title-block .meta { margin-bottom: var(--s3); }
.odyssey-pair {
  display: grid;
  grid-template-columns: repeat(12, minmax(0,1fr));
  column-gap: var(--gutter);
  align-items: start;
}
.odyssey-pair .odyssey-card:first-child { grid-column: 1 / 8; }
.odyssey-pair .odyssey-card:last-child { grid-column: 8 / 13; margin-top: 8vw; }
.odyssey-narrative {
  display: grid;
  grid-template-columns: repeat(12, minmax(0,1fr));
  column-gap: var(--gutter);
  padding-block: clamp(100px, 13vw, 190px);
}
.odyssey-narrative .meta { grid-column: 2 / 4; align-self: start; padding-top: 11px; }
.narrative-copy {
  grid-column: 5 / 12;
  font-size: clamp(30px, 3.7vw, 62px);
  line-height: 1.06;
  letter-spacing: -.045em;
  font-weight: 400;
}
.odyssey-triptych {
  display: grid;
  grid-template-columns: repeat(12, minmax(0,1fr));
  column-gap: var(--gutter);
  row-gap: clamp(50px, 6vw, 90px);
  align-items: start;
}
.odyssey-triptych .odyssey-card--wide { grid-column: 1 / 9; }
.odyssey-triptych .odyssey-card:nth-child(2) { grid-column: 1 / 5; }
.odyssey-triptych .odyssey-card:nth-child(3) { grid-column: 5 / 9; margin-top: 5vw; }
.odyssey-triptych .odyssey-card:nth-child(4) { grid-column: 9 / 13; margin-top: 10vw; }
.sketch-studies {
  display: grid;
  grid-template-columns: repeat(12, minmax(0,1fr));
  column-gap: var(--gutter);
  row-gap: var(--s4);
  align-items: start;
}
.sketch-studies__title { grid-column: 1 / 13; }
.sketch-card { border: 1px solid var(--line-dark); border-radius: var(--radius); overflow: hidden; background: #f8efe3; }
.sketch-card:first-of-type { grid-column: 1 / 7; }
.sketch-card:last-of-type { grid-column: 7 / 13; margin-top: 5vw; }
.sketch-card .caption-row { margin: 0; padding: 10px 14px 12px; }
.odyssey-notes { margin-top: clamp(100px, 12vw, 170px); }
.technical-list--light > div { border-color: var(--line-dark); }
.technical-list--light > div:last-child { border-color: var(--line-dark); }
.report-reward {
  margin-top: clamp(110px, 14vw, 200px);
  display: grid;
  grid-template-columns: repeat(12, minmax(0,1fr));
  column-gap: var(--gutter);
  align-items: end;
}
.report-reward > div { grid-column: 1 / 10; position: relative; z-index: 2; padding-right: clamp(18px, 2vw, 34px); }
.report-reward__title { margin-top: var(--s2); max-width: 12.4ch; overflow: visible; font-size: clamp(36px, 5vw, 78px); line-height: 1; letter-spacing: -.05em; font-weight: 400; }
.report-card {
  grid-column: 10 / 13;
  position: relative;
  z-index: 1;
  min-height: 330px;
  padding: var(--s3);
  border: 1px solid var(--line-dark);
  border-radius: var(--radius);
  text-decoration: none;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.report-card__meta { font-size: 9px; letter-spacing: .1em; text-transform: uppercase; opacity: .55; }
.report-card__big { font-size: clamp(46px, 5vw, 78px); line-height: .88; letter-spacing: -.055em; }
.report-card__action { font-size: 11px; text-transform: uppercase; letter-spacing: .08em; }

/* COLLECTION */
.collection { padding-top: clamp(100px, 12vw, 170px); padding-bottom: clamp(86px, 10vw, 145px); overflow: clip; }
.collection__head {
  display: grid;
  grid-template-columns: repeat(12,minmax(0,1fr));
  column-gap: var(--gutter);
  align-items: end;
}
.collection__head > div { grid-column: 1 / 8; }
.collection__head > p { grid-column: 9 / 13; }
.collection-stage {
  --group-rx: 0deg;
  --group-ry: 0deg;
  position: relative;
  width: min(calc(100% - 2 * var(--mx)), var(--max));
  height: clamp(900px, 88vw, 1280px);
  margin: clamp(86px, 9vw, 138px) auto 0;
  isolation: isolate;
  transform: perspective(1500px) rotateX(var(--group-rx)) rotateY(var(--group-ry));
  transform-style: preserve-3d;
  transition: transform .38s var(--ease-soft);
}
.collection-card {
  position: absolute;
  z-index: 2;
  width: var(--w);
  left: var(--x);
  top: var(--y);
  --final-rotation: var(--r);
  --card-opacity: 0;
  --card-tx: 0px;
  --card-ty: 0px;
  --card-scale: .18;
  --card-rotation: 0deg;
  --card-blur: 9px;
  opacity: var(--card-opacity);
  border-radius: var(--radius);
  translate: 0 0;
  transform: perspective(1100px) translate3d(var(--card-tx), calc(var(--card-ty) + var(--lift, 0px)), 0) rotate(var(--card-rotation)) rotateX(var(--tiltX, 0deg)) rotateY(var(--tiltY, 0deg)) scale(var(--card-scale)) scale(var(--scale3d, 1));
  filter: blur(var(--card-blur));
  transform-style: preserve-3d;
  transition: transform 1.08s var(--ease), opacity .78s ease, filter .86s var(--ease);
  will-change: transform, translate, opacity, filter;
}
.collection-card .image-button {
  border-radius: var(--radius);
  overflow: hidden;
  clip-path: inset(0 round var(--radius));
}
.collection-card .image-button img {
  display: block;
  max-height: 390px;
  object-fit: contain;
  border-radius: var(--radius);
  clip-path: inset(0 round var(--radius));
}
.collection-card .caption-chip { font-size: 7px; }
.collection-card.is-collection-settled {
  --card-opacity: 1;
  --card-tx: 0px;
  --card-ty: 0px;
  --card-scale: 1;
  --card-blur: 0px;
  --card-rotation: var(--final-rotation);
  transition: transform .34s var(--ease), opacity .58s ease, filter .58s ease;
  animation: collection-orbit var(--orbit-duration, 19s) ease-in-out var(--orbit-delay, 0s) infinite;
}
@keyframes collection-orbit {
  0%, 100% { translate: 0 0; }
  25% { translate: var(--orbit-x, 10px) calc(var(--orbit-y, 8px) * -1); }
  50% { translate: calc(var(--orbit-x, 10px) * -0.7) var(--orbit-y, 8px); }
  75% { translate: calc(var(--orbit-x, 10px) * 0.45) calc(var(--orbit-y, 8px) * 0.65); }
}

/* MUSIC */
.music {
  position: relative;
  min-height: 96svh;
  color: var(--light);
  overflow: clip;
  isolation: isolate;
  padding-block: clamp(110px, 13vw, 190px);
}
.music__veil { background: rgba(49,39,38,.64); }
.music__sticky {
  position: relative;
  min-height: calc(96svh - clamp(220px, 26vw, 380px));
  display: grid;
  grid-template-columns: repeat(12, minmax(0,1fr));
  column-gap: var(--gutter);
  align-items: center;
}
.music__copy { grid-column: 1 / 8; }
.music__title {
  margin-top: var(--s2);
  font-size: clamp(56px, 7.8vw, 128px);
  line-height: .86;
  letter-spacing: -.06em;
  font-weight: 400;
}
.music__title em { display: block; font-family: var(--serif); font-style: italic; font-weight: 300; font-synthesis: none; font-size: .72em; margin-top: .12em; letter-spacing: -.035em; }
.music__copy .editorial-copy { margin-top: var(--s4); max-width: 34rem; }
.music__qr-stack {
  grid-column: 9 / 13;
  justify-self: center;
  width: min(100%, 355px);
  display: grid;
  gap: 14px;
}
.qr-frame {
  width: 100%;
  padding: 14px;
  border: 1px solid rgba(255,248,237,.24);
  border-radius: 18px;
  background: rgba(255,248,237,.08);
  backdrop-filter: blur(14px) saturate(118%);
  -webkit-backdrop-filter: blur(14px) saturate(118%);
  text-decoration: none;
  opacity: 0;
  filter: blur(7px);
  transform: perspective(1100px) translateY(calc(30px + var(--lift, 0px))) rotateX(var(--tiltX, 0deg)) rotateY(var(--tiltY, 0deg)) scale(.965) scale(var(--scale3d, 1));
  transition: transform .9s var(--ease), opacity .72s ease, filter .82s var(--ease), border-color .34s ease;
}
.qr-frame__code { background: var(--cream); border-radius: 11px; padding: 10px; }
.qr-frame__code img { display: block; width: 100%; height: auto; }
.qr-frame__caption { display: flex; justify-content: space-between; gap: 14px; padding: 11px 5px 2px; font-size: 8px; letter-spacing: .08em; text-transform: uppercase; }
.playlist-button {
  min-height: 46px;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 13px 20px 12px;
  border: 1px solid rgba(255,248,237,.24);
  border-radius: 14px;
  background: rgba(255,248,237,.085);
  -webkit-backdrop-filter: blur(14px) saturate(118%);
  backdrop-filter: blur(14px) saturate(118%);
  color: var(--light);
  text-decoration: none;
  font-family: var(--sans);
  font-size: clamp(10px, .78vw, 12px);
  line-height: 1;
  letter-spacing: .12em;
  text-transform: uppercase;
  opacity: 0;
  transform: translateY(10px);
  transition: opacity .52s ease .15s, transform .7s var(--ease) .15s, background-color .34s ease, border-color .34s ease;
}
.qr-frame.is-revealed + .playlist-button {
  opacity: 1;
  transform: translateY(0);
}
@media (hover: hover) and (pointer: fine) {
  .playlist-button:hover {
    background: rgba(255,248,237,.14);
    border-color: rgba(255,248,237,.38);
    transform: translateY(-2px);
  }
}
.playlist-button:focus-visible {
  outline: 1px solid rgba(255,248,237,.72);
  outline-offset: 4px;
}

/* TIMELINE */
.timeline {
  position: relative;
  height: 540svh;
  padding-top: 0;
}
.timeline-pin {
  position: sticky;
  top: 0;
  height: 100svh;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  background: var(--cream);
}
.timeline__header {
  flex: 0 0 auto;
  padding-top: clamp(54px, 6vw, 86px);
  padding-bottom: var(--s3);
  border-bottom: 1px solid var(--line-dark);
}
.timeline-stage {
  position: relative;
  flex: 1 1 auto;
  min-height: 0;
}
.timeline-left-station {
  position: absolute;
  inset: 0;
  z-index: 5;
  display: grid;
  grid-template-columns: repeat(12,minmax(0,1fr));
  column-gap: var(--gutter);
  align-items: center;
  pointer-events: none;
}
.timeline-left-station__inner { grid-column: 1 / 5; }
.timeline-year {
  font-family: var(--sans);
  font-synthesis: none;
  font-size: clamp(98px, 13vw, 205px);
  line-height: .82;
  letter-spacing: -.085em;
  font-weight: 400;
  position: relative;
  perspective: 900px;
}
.timeline-year-glyph {
  display: inline-block;
  will-change: transform, opacity, filter;
  transform-origin: 50% 65%;
}
.timeline-rule { width: 100%; height: 1px; background: var(--line-dark); margin: var(--s4) 0 var(--s2); }
.timeline-left-label {
  font-family: var(--sans);
  font-synthesis: none;
  font-size: 14px;
  letter-spacing: .01em;
  line-height: 1.2;
  opacity: .68;
  transition: opacity .42s ease, transform .58s var(--ease), filter .5s ease;
}
.timeline-chapter {
  position: absolute;
  inset: 0;
  height: 100%;
  min-height: 0;
  display: grid;
  grid-template-columns: repeat(12,minmax(0,1fr));
  column-gap: var(--gutter);
  align-items: center;
  padding-block: clamp(54px, 6vw, 90px);
  opacity: 1;
  visibility: visible;
  pointer-events: none;
}
.timeline-chapter__right {
  grid-column: 7 / 13;
  align-self: center;
  will-change: transform, opacity, filter;
}
.timeline-chapter__right h3 {
  margin-top: var(--s2);
  font-family: var(--sans);
  font-synthesis: none;
  font-size: clamp(36px, 5vw, 80px);
  line-height: .98;
  letter-spacing: -.05em;
  font-weight: 400;
  max-width: 12ch;
}
.timeline-chapter__right .editorial-copy {
  margin-top: var(--s3);
  max-width: 38rem;
  font-family: var(--sans);
  font-synthesis: none;
  font-size: clamp(17px, 1.35vw, 22px);
  line-height: 1.42;
}
.timeline-fields {
  grid-column: 1 / 13;
  align-self: end;
  margin-top: clamp(50px, 6vw, 90px);
  padding-top: var(--s2);
  border-top: 1px solid var(--line-dark);
  display: grid;
  grid-template-columns: 2fr repeat(4, 1fr);
  gap: var(--gutter);
  font-size: 9px;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.timeline-fields b { font-weight: 400; opacity: .45; margin-right: 8px; }

/* PROFILE */
.profile { padding-block: clamp(100px, 12vw, 180px) clamp(110px, 13vw, 200px); }
.surfboards-intro {
  display: grid;
  grid-template-columns: repeat(12,minmax(0,1fr));
  column-gap: var(--gutter);
  align-items: end;
}
.surfboards-intro > div { grid-column: 1 / 7; }
.surfboards-intro > p { grid-column: 9 / 13; }
.surfboards-grid {
  margin-top: clamp(60px, 7vw, 110px);
  display: grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: var(--gutter);
}
.surfboard-card .image-button {
  aspect-ratio: 3 / 4;
  display: grid;
  place-items: center;
  overflow: hidden;
  border-radius: var(--radius-small);
  background: rgba(12,9,8,.18);
}
.surfboard-card .image-button img { width: 100%; height: 100%; object-fit: contain; }
.surfboard-card:nth-child(3) .image-button img { transform: scale(1.065); transform-origin: center; }
.profile-main {
  margin-top: clamp(130px, 16vw, 240px);
  display: grid;
  grid-template-columns: repeat(12,minmax(0,1fr));
  column-gap: var(--gutter);
  row-gap: clamp(36px, 4.5vw, 68px);
  align-items: start;
}
.profile-portrait {
  grid-column: 1 / 5;
  grid-row: 1 / 3;
  align-self: start;
}
.profile-portrait .image-button {
  aspect-ratio: 4 / 5;
  overflow: hidden;
  border-radius: var(--radius-small);
  background: rgba(12,9,8,.14);
}
.profile-portrait .image-button img { width: 100%; height: 100%; object-fit: cover; }
.profile-main__title {
  grid-column: 6 / 13;
  grid-row: 1;
  min-width: 0;
  overflow: visible;
  align-self: end;
}
.profile-main__title .display-title {
  max-width: none;
  overflow: visible;
  font-size: clamp(52px, 6.25vw, 106px);
  line-height: .96;
  white-space: normal;
}
.profile-role {
  margin-top: var(--s3);
  font-size: 11px;
  letter-spacing: .1em;
  text-transform: uppercase;
  opacity: .68;
}
.profile-main__copy {
  grid-column: 6 / 13;
  grid-row: 2;
  display: grid;
  gap: var(--s3);
  align-content: start;
  max-width: 54rem;
}
.profile-copy { font-size: clamp(20px, 1.8vw, 29px); line-height: 1.48; letter-spacing: -.02em; }
.profile-notes { margin-top: clamp(100px, 12vw, 170px); }
.profile-notes .quiet-link { margin-top: var(--s4); }

/* CORRESPONDENCE */
.correspondence { padding-block: clamp(110px, 14vw, 210px) 42px; }
.correspondence__title {
  margin-top: var(--s3);
  max-width: 15ch;
  font-size: clamp(52px, 7.9vw, 128px);
  line-height: .9;
  letter-spacing: -.06em;
  font-weight: 400;
}
.correspondence__title em { display: block; font-size: .66em; line-height: .96; margin-top: .12em; font-weight: 300; }
.correspondence__copy {
  margin-top: var(--s5);
  max-width: 46rem;
  font-size: clamp(17px, 1.5vw, 24px);
  line-height: 1.5;
}
.correspondence-links { margin-top: clamp(90px, 12vw, 180px); }
.correspondence-links a {
  display: grid;
  grid-template-columns: 1.5fr 8fr;
  align-items: center;
  gap: var(--gutter);
  padding: 20px 0;
  border-top: 1px solid var(--line-dark);
  text-decoration: none;
}
.correspondence-links a:last-child { border-bottom: 1px solid var(--line-dark); }
.correspondence-links span { font-size: 9px; letter-spacing: .1em; text-transform: uppercase; opacity: .55; }
.correspondence-links strong { font-size: clamp(15px, 1.5vw, 22px); font-weight: 400; overflow-wrap: anywhere; transform-origin: left center; transition: transform .42s var(--ease), letter-spacing .42s var(--ease); }
.correspondence-links a { transition: padding-left .42s var(--ease), opacity .32s ease; }
.correspondence-links a:hover { padding-left: 6px; }
.correspondence-links a:hover strong { transform: scale(1.008); letter-spacing: .003em; }
.site-footer {
  margin-top: clamp(100px, 12vw, 180px);
  padding-top: 18px;
  display: flex;
  justify-content: space-between;
  border-top: 1px solid var(--line-dark);
  font-size: 9px;
  letter-spacing: .09em;
  text-transform: uppercase;
}
.site-footer a { text-decoration: none; }

/* LIGHTBOX */
.lightbox {
  position: fixed;
  z-index: 9999;
  inset: 0;
  display: grid;
  place-items: center;
  background: rgba(16,12,11,.96);
  color: var(--light);
  opacity: 0;
  visibility: hidden;
  transition: opacity .3s ease, visibility .3s ease;
}
.lightbox.is-open { opacity: 1; visibility: visible; }
.lightbox__stage {
  width: min(1280px, calc(100vw - 176px));
  height: calc(100dvh - 104px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  overflow: hidden;
}
.lightbox__stage img {
  display: block;
  width: auto !important;
  height: auto !important;
  max-width: min(100%, calc(100vw - 224px));
  max-height: calc(100dvh - 152px);
  min-width: 0;
  min-height: 0;
  aspect-ratio: auto;
  object-fit: contain !important;
  object-position: 50% 50%;
}
.lightbox__close, .lightbox__nav {
  position: absolute;
  z-index: 2;
  color: var(--light);
  cursor: pointer;
  opacity: .75;
  transition: opacity .2s ease, transform .25s var(--ease);
}
.lightbox__close { right: 28px; top: 22px; font-size: 36px; font-weight: 200; }
.lightbox__nav { top: 50%; transform: translateY(-50%); width: 54px; height: 54px; display: grid; place-items: center; border: 1px solid rgba(255,248,237,.38); border-radius: 50%; background: rgba(16,12,11,.44); font-size: 46px; line-height: .7; }
.lightbox__nav--prev { left: 34px; }
.lightbox__nav--next { right: 34px; }
.lightbox__nav:hover, .lightbox__close:hover { opacity: 1; }
.lightbox__nav--prev:hover { transform: translate(-3px,-50%); }
.lightbox__nav--next:hover { transform: translate(3px,-50%); }
.lightbox__count { position: absolute; bottom: 20px; font-size: 9px; letter-spacing: .12em; text-transform: uppercase; opacity: .55; }
body.lightbox-open { overflow: hidden; }

/* Responsive ------------------------------------------------------------ */
@media (max-width: 980px) {
  :root { --mx: clamp(22px, 4.7vw, 46px); --gutter: 18px; }
  .hero__identity { grid-column: 2 / 12; }
  .project-intro__title { grid-column: 1 / 8; }
  .project-intro__copy { grid-column: 8 / 13; }
  .index-card { grid-template-columns: 48px minmax(0,1fr); }
  .index-card__meta { display: none; }
  .collection-stage { height: 900px; }
  .music__qr-stack { grid-column: 8 / 13; }
  .music__copy { grid-column: 1 / 8; }
  .timeline-left-station__inner { grid-column: 1 / 6; }
  .timeline-chapter__right { grid-column: 7 / 13; }
}

@media (max-width: 760px) {
  :root { --mx: 22px; --gutter: 14px; }
  .display-title { font-size: clamp(46px, 15vw, 82px); }
  .hero__shell { grid-template-columns: repeat(4, minmax(0,1fr)); padding-top: 78px; }
  .hero__identity { grid-column: 1 / 5; }
  .hero-morph { font-size: clamp(46px, 13.8vw, 78px); }
  .index { padding-bottom: 90px; }
  .index { margin-top: -92px; }
  .index-card { min-height: 86px; padding: 17px 18px; grid-template-columns: 42px minmax(0,1fr); border-radius: 16px; }
  .index-card:nth-child(1) { --stack-offset: -10px; }
  .index-card:nth-child(2) { --stack-offset: -3px; }
  .index-card:nth-child(3) { --stack-offset: 3px; }
  .index-card:nth-child(4) { --stack-offset: 10px; }
  .index-card + .index-card { margin-top: -6px; }
  .index-card__title { font-size: 21px; }
  .project-intro { grid-template-columns: repeat(4,minmax(0,1fr)); row-gap: var(--s4); padding-top: 92px; padding-bottom: 70px; }
  .project-intro__title, .project-intro__copy { grid-column: 1 / 5; }
  .porsche-grid { grid-template-columns: repeat(4,minmax(0,1fr)); row-gap: 56px; }
  .porsche-grid .porsche-shot { grid-column: 1 / 5 !important; margin-top: 0 !important; }
  .services-lead { max-width: none; }
  .technical-list > div { grid-template-columns: 1fr 2.2fr; }
  .archive-bridge { height: 48svh; }
  .archive-bridge__sticky { min-height: 48svh; }
  .archive-bridge__words { font-size: clamp(58px, 17vw, 94px); }
  .kuru__eyebrow, .kuru__copy-block { grid-column: 1 / 5; }
  .kuru-stack { min-height: 760px; }
  .kuru-card { width: 70vw; max-width: 390px; }
  .kuru-card--1 { left: 0; right: auto; top: 4%; translate: 0 0; }
  .kuru-card--2 { left: 15%; right: auto; top: 28%; translate: 0 0; }
  .kuru-card--3 { left: 28%; right: auto; top: 51%; translate: 0 0; }
  .odyssey-pair, .odyssey-triptych, .sketch-studies, .report-reward, .odyssey-narrative { grid-template-columns: repeat(4,minmax(0,1fr)); }
  .odyssey-pair .odyssey-card, .odyssey-triptych .odyssey-card, .sketch-card, .report-reward > div, .report-card { grid-column: 1 / 5 !important; margin-top: 0 !important; }
  .odyssey-pair, .odyssey-triptych, .sketch-studies { row-gap: 56px; }
  .odyssey-narrative .meta { grid-column: 1 / 5; padding: 0 0 var(--s2); }
  .narrative-copy { grid-column: 1 / 5; font-size: clamp(30px, 8.5vw, 48px); }
  .report-card { margin-top: 48px !important; min-height: 260px; }
  .collection__head { grid-template-columns: repeat(4,minmax(0,1fr)); row-gap: var(--s4); }
  .collection__head > div, .collection__head > p { grid-column: 1 / 5; }
  .collection-stage {
    height: auto;
    margin-top: var(--s5);
    display: grid;
    grid-template-columns: repeat(2, minmax(0,1fr));
    gap: 36px 16px;
  }
  .collection-card {
    position: relative;
    inset: auto !important;
    width: auto !important;
    opacity: 1 !important;
    filter: none !important;
    transform: rotate(var(--r)) scale(1) !important;
    animation: none !important;
    translate: 0 0 !important;
  }
  .collection-card:nth-child(3n) { margin-top: 34px; }
  .music { min-height: auto; padding-block: 96px 110px; }
  .music__sticky { position: relative; min-height: auto; grid-template-columns: repeat(4,minmax(0,1fr)); row-gap: 72px; }
  .music__copy, .music__qr-stack { grid-column: 1 / 5; }
  .music__qr-stack { width: min(78vw, 330px); justify-self: center; margin-inline: auto; }
  .qr-frame { width: 100%; }
  .qr-frame.is-revealed { opacity: 1; filter: none; transform: none; }
  .timeline { height: auto; }
  .timeline-pin { position: relative; height: auto; overflow: visible; }
  .timeline-stage { position: relative; display: block; }
  .timeline-left-station { display: none; }
    .timeline-chapter { position: relative; inset: auto; height: auto; min-height: auto; visibility: visible !important; opacity: 1 !important; filter: none !important; transform: none !important; pointer-events: auto; display: block; padding-block: 76px; border-bottom: 1px solid var(--line-dark); }
  .timeline-chapter::before { content: attr(data-year); display: block; margin-bottom: 20px; font-family: var(--sans); font-size: clamp(72px, 23vw, 120px); line-height: .84; letter-spacing: -.085em; }
  .timeline-chapter__right { grid-column: 1 / 5; }
  .timeline-chapter__right h3 { max-width: none; }
  .timeline-fields { grid-column: 1 / 5; grid-template-columns: 1fr 1fr; row-gap: 16px; margin-top: 42px; }
  .timeline-fields > span { grid-column: 1 / 3; }
  .surfboards-intro, .profile-main { grid-template-columns: repeat(4,minmax(0,1fr)); row-gap: var(--s4); }
  .surfboards-intro > div, .surfboards-intro > p, .profile-portrait, .profile-main__title, .profile-main__copy { grid-column: 1 / 5; grid-row: auto; }
  .profile-main__title .display-title { font-size: clamp(46px, 14.5vw, 78px); line-height: .98; }
  .surfboards-grid { grid-template-columns: 1fr; gap: 52px; }
  .surfboard-card .image-button { aspect-ratio: auto; }
  .surfboard-card .image-button img { width: 100%; height: auto; }
  .correspondence__title { font-size: clamp(40px, 10.8vw, 64px); line-height: .92; letter-spacing: -.065em; max-width: 100%; }
  .correspondence-links a { grid-template-columns: 1fr; }
  .correspondence-links strong { grid-column: 1; grid-row: 2; padding-top: 4px; }
  .porsche-closing { grid-template-columns: repeat(4,minmax(0,1fr)); row-gap: var(--s4); padding-top: clamp(54px, 8vw, 80px); }
  .porsche-closing .porsche-shot--k { grid-column: 1 / 5; width: 100%; max-width: none; justify-self: stretch; }
  .porsche-closing .services-block { grid-column: 1 / 5; }
  .lightbox__stage { width: calc(100vw - 32px); height: calc(100vh - 130px); padding: 10px; }
  .lightbox__stage img { max-width: calc(100vw - 44px); max-height: calc(100vh - 162px); }
  .lightbox__nav { top: auto; bottom: 30px; transform: none; }
  .lightbox__nav--prev { left: 28px; }
  .lightbox__nav--next { right: 28px; }
}

@media (hover: none), (pointer: coarse) {
  .photo-card, .video-card, .qr-frame, .report-card { --tiltX: 0deg !important; --tiltY: 0deg !important; --lift: 0px !important; --scale3d: 1 !important; }
}

@media (prefers-reduced-motion: reduce) {
  .archive-nav,
  .archive-tab { transition-duration: .01ms !important; }

  .timeline { height: auto; }
  .timeline-pin { position: relative; height: auto; overflow: visible; }
  .timeline-stage { display: block; }
  .timeline-left-station { display: none; }
  .timeline-chapter { position: relative; inset: auto; height: auto; min-height: auto; visibility: visible !important; opacity: 1 !important; filter: none !important; transform: none !important; pointer-events: auto; border-bottom: 1px solid var(--line-dark); }
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
  .text-reveal { visibility: visible; }
  .reveal-line > span { transform: none; filter: none; opacity: 1; }
  .index-card { opacity: 1; transform: translateY(0) scale(1); }
  .collection-card { opacity: 1; filter: none; transform: rotate(var(--r)) scale(1); animation: none !important; translate: 0 0 !important; }
  .qr-frame { opacity: 1; filter: none; transform: none; }
  .screen-edge-blur { backdrop-filter: none; -webkit-backdrop-filter: none; }
}

.kuru-title-morph { visibility: hidden; perspective: 900px; }
.kuru-title-morph.is-ready { visibility: visible; }
.kuru-title-glyph { display: inline-block; will-change: transform, opacity, filter; transform-origin: 50% 75%; }
.kuru-title-glyph.space { width: .25em; }

.video-card { transform: none !important; transition: none !important; will-change: auto; }

.qr-frame.is-revealed { opacity: 1; filter: blur(0); transform: perspective(1100px) translateY(var(--lift, 0px)) rotateX(var(--tiltX, 0deg)) rotateY(var(--tiltY, 0deg)) scale(1) scale(var(--scale3d, 1)); }


.surfboard-card:nth-child(3) .image-button { overflow: hidden; border-radius: var(--radius-small); }
.surfboard-card:nth-child(3) .image-button img { width: 106%; max-width: none; margin-left: -3%; transform: scale(1.025); transform-origin: center; }

@media (max-width: 760px) {
  .screen-edge-blur { backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); -webkit-mask-image: linear-gradient(to bottom, #000 0%, rgba(0,0,0,.55) 8%, transparent 17%, transparent 83%, rgba(0,0,0,.55) 92%, #000 100%); mask-image: linear-gradient(to bottom, #000 0%, rgba(0,0,0,.55) 8%, transparent 17%, transparent 83%, rgba(0,0,0,.55) 92%, #000 100%); }
  .collection-stage { transform: none !important; }
}

@media (max-width: 760px) { .qr-frame.is-revealed { opacity: 1 !important; filter: none !important; transform: none !important; } }
@media (prefers-reduced-motion: reduce) {
  .qr-frame.is-revealed { opacity: 1 !important; filter: none !important; transform: none !important; }
  .playlist-button { opacity: 1 !important; transform: none !important; transition: none !important; }
}

/* v6 index alignment refinement */
.index-kicker { flex: 0 0 auto; }
.index-stack { flex: 0 0 auto; }
.index-divider { flex: 0 0 auto; }
