/* =============================================================================
   QUEUE HOUSE
   Editorial studio site — white field, work first, type and space lead.
   ============================================================================= */

:root {
  --near-black: #231f20;
  --white: #ffffff;
  --cream: #ffffff;
  --gray: #8a8a8a;
  --light-gray: #e8e8e8;
  --wash: #f2f2f2;
  --green: #8fff24;
  --black: #000000;

  --font: "area-normal", "Helvetica Neue", Helvetica, Arial, sans-serif;
  --font-light: "area-normal-light", "area-normal", sans-serif;

  --nav-brand-type: clamp(0.98rem, 3.15vw, 1.72rem);
  /* Shared page + header inset — logo and content share one edge */
  --nav-pad-x: clamp(1.75rem, 7vw, 6.5rem);
  --pad: clamp(1.25rem, 3vw, 2.5rem);
  --pad-x: clamp(1.75rem, 7vw, 6.5rem);
  --nav-logo-h: 1.25rem;
  /* Compact header height (no tagline) — follows measured logo cap height */
  --nav-h: calc(0.9rem + var(--nav-logo-h) + 0.85rem);
  --max: 90rem;

  --ease: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --t: 220ms;
  --t-med: 480ms;
  --t-page: 420ms;

  --work-nav-ease: cubic-bezier(0.65, 0, 0.35, 1);
  --work-nav-dur: 0.78s;
  --work-nav-reveal: 0px;
}

@property --work-nav-reveal {
  syntax: "<length>";
  inherits: true;
  initial-value: 0px;
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html {
  font-size: 16px;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  background: var(--black);
  transition: --work-nav-reveal var(--work-nav-dur) var(--work-nav-ease);
}

html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }

body {
  font-family: var(--font-light), sans-serif;
  font-weight: 300;
  color: var(--near-black);
  background: var(--cream);
  line-height: 1.5;
  /* clip avoids creating a scrollport that breaks position: sticky */
  overflow-x: clip;
  min-height: 100svh;
  display: flex;
  flex-direction: column;
}

img, video { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button, input, textarea {
  font: inherit; color: inherit; border: none; background: none; appearance: none;
}
button { cursor: pointer; }
ul, ol { list-style: none; }

::selection { background: var(--near-black); color: var(--white); }

.page-veil {
  display: none;
}

/* Page rise — leave slides down, enter rises up; nav stays fixed and dissolves */
body.is-page-rise {
  /* Use clip so the layout width doesn’t jump when the scrollbar hides */
  overflow: clip;
  background: var(--cream);
}

body.is-page-rise .site-nav {
  opacity: var(--qh-nav-fade, 1);
  pointer-events: none;
  will-change: opacity;
}

body.is-page-rise main,
body.is-page-rise .work-cats-dock,
body.is-page-rise .site-foot,
body.is-page-rise .project-turn {
  transform: translate3d(0, var(--qh-page-rise, 0px), 0);
  will-change: transform;
  pointer-events: none;
}

/* Timing driven in JS (expo speed-ramp) — no CSS transition */

/* ---------------------------------------------------------------------------
   Home logo load-in — legacy fullscreen styles (kept for fallbacks)
   --------------------------------------------------------------------------- */

html {
  scrollbar-gutter: stable;
}

body.is-logo-intro {
  overflow: hidden;
  background: #000;
}

body.is-logo-intro.is-logo-intro-fade,
body.is-logo-boot.is-logo-intro-fade,
body.is-logo-boot.is-logo-content-in,
body.is-logo-rise {
  background: var(--cream);
}

body.is-logo-boot {
  background: #000;
}

body.is-logo-intro .site-nav--brand .nav-links,
body.is-logo-intro .site-nav--brand .nav-menu-toggle,
body.is-logo-intro .site-nav__tagline {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

@media (min-width: 721px) {
  body.is-logo-intro-reveal .site-nav--brand .nav-links,
  body.is-logo-intro-reveal .site-nav__tagline,
  body.is-logo-rise .site-nav--brand .nav-links,
  body.is-logo-rise .site-nav__tagline {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
  }
}

@media (max-width: 720px) {
  body.is-logo-intro-reveal .site-nav--brand .nav-menu-toggle,
  body.is-logo-rise .site-nav--brand .nav-menu-toggle,
  body.is-logo-content-in .site-nav--brand .nav-menu-toggle,
  body:not(.is-logo-intro):not(.is-logo-rise) .site-nav--brand .nav-menu-toggle {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
  }
}

.logo.is-intro-hidden {
  opacity: 0 !important;
  transition: none !important;
}

.logo.is-intro-handoff {
  opacity: var(--qh-intro-logo, 0) !important;
  transition: none !important;
}

/* Kill competing logo transforms during the intro */
body.is-logo-intro .logo[data-cat-brand] .logo__img,
body.is-logo-intro .logo[data-cat-brand] .logo__paint {
  transition: none !important;
  transform: none !important;
}

/* Black retracts down; homepage rises from below — one shared motion */
body.is-logo-rise {
  overflow: hidden;
}

body.is-logo-rise .site-nav,
body.is-logo-rise .home-hero,
body.is-logo-rise .home-hero-spacer,
body.is-logo-rise .page--home-work,
body.is-logo-rise .work-cats-dock,
body.is-logo-rise .site-foot {
  opacity: 1 !important;
  visibility: visible !important;
  transform: translate3d(0, var(--qh-intro-rise, 100vh), 0);
  will-change: transform;
  pointer-events: none;
  transition: none !important;
}

body.is-logo-rise .home-hero,
body.is-logo-rise .home-hero-spacer,
body.is-logo-rise .page--home-work .work-intro,
body.is-logo-rise .work-grid .piece,
body.is-logo-rise .work-cats-dock,
body.is-logo-rise .site-foot {
  opacity: 1 !important;
  visibility: visible !important;
  transition: none !important;
}

body.is-logo-rise .logo {
  opacity: 1 !important;
}

.logo-intro.is-retract {
  will-change: transform;
  transition: none !important;
}

.logo-intro {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: grid;
  place-items: center;
  background: transparent;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.22s ease;
}

.logo-intro.is-in {
  opacity: 1;
  pointer-events: all;
}

.logo-intro.is-fly {
  pointer-events: none;
}

.logo-intro__scrim {
  position: absolute;
  inset: 0;
  z-index: 0;
  background: #000;
}

.logo-intro__flash {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: #000;
  overflow: hidden;
  pointer-events: none;
}

.logo-intro__flash-media {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  opacity: 0;
  background: #000;
  transition: opacity 70ms ease-out;
  will-change: opacity;
}

.logo-intro__flash-media.is-on {
  opacity: 1;
  filter: brightness(0.92) contrast(1.03);
}

.logo-intro__mark {
  position: relative;
  z-index: 2;
  width: min(46vw, 22rem);
  /* height locked in JS to nav PNG aspect — never changes during intro */
  overflow: visible;
  transform: translate3d(0, 0, 0) scale(1);
  transform-origin: center center;
  will-change: transform, opacity;
  backface-visibility: hidden;
  line-height: 0;
}

.logo-intro__mark.is-blur-in {
  opacity: 0;
}

/* Blur lives on an overflow-clipped shell so soft edges don't bloom into a glow */
.logo-intro__blur {
  position: absolute;
  inset: 0;
  overflow: hidden;
  will-change: filter;
  backface-visibility: hidden;
}

.logo-intro__svg {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  overflow: hidden;
  z-index: 1;
}

.logo-intro__svg path {
  fill: #fff;
}

.logo-intro__raster {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  line-height: 0;
  z-index: 0;
}

.logo-intro__img {
  position: relative;
  z-index: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: fill;
}

.logo-intro__paint {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
  pointer-events: none;
  background: #231f20;
  -webkit-mask-image: url("../assets/queue-logo-h.png?v=1");
  mask-image: url("../assets/queue-logo-h.png?v=1");
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
}

/* White wordmark on the black hold / early fly */
.logo-intro__raster.is-white {
  filter: brightness(0) invert(1);
}

.logo-intro__raster.is-ink {
  filter: none;
  transition: filter 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}

/* Hold page content invisible until the black→cream fade */
body.is-logo-boot .home-hero,
body.is-logo-boot .home-hero-spacer,
body.is-logo-boot .page--home-work .work-intro,
body.is-logo-boot .work-grid .piece,
body.is-logo-boot .work-cats-dock,
body.is-logo-boot .site-foot {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

body.is-logo-content-in .home-hero,
body.is-logo-content-in .home-hero-spacer,
body.is-logo-content-in .page--home-work .work-intro,
body.is-logo-content-in .work-grid .piece,
body.is-logo-content-in .work-cats-dock,
body.is-logo-content-in .site-foot {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition:
    opacity 0.95s cubic-bezier(0.22, 1, 0.36, 1),
    visibility 0s linear;
}

body.is-logo-content-in .page--home-work .work-intro {
  transition-delay: 0.05s;
}

body.is-logo-content-in .work-grid .piece:nth-child(1) { transition-delay: 0.1s; }
body.is-logo-content-in .work-grid .piece:nth-child(2) { transition-delay: 0.18s; }
body.is-logo-content-in .work-grid .piece:nth-child(3) { transition-delay: 0.26s; }
body.is-logo-content-in .work-grid .piece:nth-child(4) { transition-delay: 0.34s; }
body.is-logo-content-in .work-grid .piece:nth-child(5) { transition-delay: 0.42s; }
body.is-logo-content-in .work-grid .piece:nth-child(6) { transition-delay: 0.5s; }
body.is-logo-content-in .work-grid .piece:nth-child(7) { transition-delay: 0.58s; }
body.is-logo-content-in .work-grid .piece:nth-child(8) { transition-delay: 0.66s; }
body.is-logo-content-in .work-grid .piece:nth-child(9) { transition-delay: 0.74s; }
body.is-logo-content-in .work-grid .piece:nth-child(n + 10) { transition-delay: 0.82s; }

body.is-logo-content-in .work-cats-dock {
  transition-delay: 0.35s;
}

body.is-logo-content-in .site-foot {
  transition-delay: 0.55s;
}

@media (prefers-reduced-motion: reduce) {
  .logo-intro,
  .logo-intro__mark,
  body.is-logo-content-in .home-hero,
  body.is-logo-content-in .home-hero-spacer,
  body.is-logo-content-in .page--home-work .work-intro,
  body.is-logo-content-in .work-grid .piece,
  body.is-logo-content-in .work-cats-dock,
  body.is-logo-content-in .site-foot {
    transition: none !important;
  }
}

.site-nav {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 100;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  column-gap: clamp(1rem, 2.5vw, 2rem);
  min-height: 0;
  padding: 0.9rem var(--nav-pad-x) 0.85rem;
  background: transparent;
}

.site-nav__brand {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.3rem;
  min-width: 0;
}

/* Shared brand header (logo + two-line tagline) on every page */
.site-nav--brand {
  /* 1cap = cap-height of Work/Studio/Contact face; JS may refine */
  --nav-logo-h: 1cap;
  font-size: var(--nav-brand-type);
}

.site-nav--brand .logo__img {
  height: var(--nav-logo-h);
  width: auto;
  max-width: none;
  display: block;
}

.site-nav--brand .logo {
  display: block;
  height: auto;
  line-height: 0;
  font-family: var(--font), sans-serif;
  font-size: var(--nav-brand-type);
  font-weight: 500;
}

.logo__word {
  display: inline-block;
  font-family: var(--font), sans-serif;
  font-size: var(--nav-brand-type);
  font-weight: 700;
  letter-spacing: 0.04em;
  line-height: var(--nav-logo-h);
  color: var(--near-black);
  text-transform: uppercase;
  white-space: nowrap;
  transition: padding-left 0.58s cubic-bezier(0.33, 1, 0.28, 1);
}

body[data-home-work="true"] .logo[data-cat-brand],
.logo[data-cat-brand] {
  position: relative;
  display: inline-flex;
  align-items: center;
}

.logo[data-cat-brand] .logo__img {
  position: relative;
  z-index: 0;
  opacity: 1;
  transition:
    transform 0.58s cubic-bezier(0.33, 1, 0.28, 1),
    filter 0.35s ease;
}

/* Color wash only through the H block; base mark has H punched out */
.logo[data-cat-brand] .logo__paint {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
  pointer-events: none;
  background: linear-gradient(
    var(--logo-grad-angle, 90deg),
    var(--logo-c1, #231f20),
    var(--logo-c2, #231f20),
    var(--logo-c3, #231f20)
  );
  -webkit-mask-image: url("../assets/queue-logo-h.png?v=1");
  mask-image: url("../assets/queue-logo-h.png?v=1");
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: left center;
  mask-position: left center;
  opacity: 1;
  will-change: background;
  transition: transform 0.58s cubic-bezier(0.33, 1, 0.28, 1);
}

body[data-home-work="true"] .logo[data-cat-brand].is-hot .logo__img,
body[data-home-work="true"] .logo[data-cat-brand].is-hot .logo__paint {
  transform: translateX(var(--work-cats-dash));
}

/* Intro glide: keep logo indent timing locked to the dash */
body[data-home-work="true"].is-intro-dash .logo[data-cat-brand] .logo__img,
body[data-home-work="true"].is-intro-dash .logo[data-cat-brand] .logo__paint {
  transition: transform 1.2s cubic-bezier(0.45, 0.05, 0.25, 1);
}

.site-nav__tagline {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  width: max-content;
  max-width: 100%;
  margin: 0;
  font-family: var(--font), sans-serif;
  font-size: var(--nav-brand-type);
  font-weight: 500;
  line-height: 1.2;
  color: var(--near-black);
}

.site-nav__tagline-line {
  display: block;
  white-space: nowrap;
}

/* Links sit on the logo row, right-aligned */
.site-nav--brand .nav-links {
  display: flex;
  align-items: flex-start;
  justify-content: flex-end;
  gap: clamp(1.35rem, 2.5vw, 2rem);
  height: auto;
  padding-top: 0;
  margin: 0;
}

.site-nav--brand .nav-links a {
  font-family: var(--font), sans-serif;
  font-size: var(--nav-brand-type);
  font-weight: 500;
  line-height: 1;
  height: auto;
  display: inline-block;
  opacity: 1;
  color: var(--near-black);
  transition: opacity 0.45s var(--ease);
}

/* Dual-tone nav words — base for page, flip revealed with the dropdown wipe */
.nav-ink {
  position: relative;
  display: inline-block;
  color: transparent !important;
}

.nav-ink__base,
.nav-ink__flip {
  display: block;
  color: var(--near-black);
  transition: none;
}

.nav-ink__flip {
  position: absolute;
  left: 0;
  top: 0;
  color: var(--cream);
  pointer-events: none;
  clip-path: inset(
    0
    0
    max(0px, calc(100% - max(0px, var(--work-nav-reveal, 0px) - var(--nav-ink-top, 0px))))
    0
  );
}

.nav-ink-logo {
  position: relative;
  display: inline-flex;
  align-items: center;
}

.nav-ink-logo__base,
.nav-ink-logo__flip {
  display: inline-flex;
  align-items: center;
  position: relative;
}

/*
 * Logo doesn’t use the dual-ink flip layer — CSS mask + clip-path/overflow
 * on that layer turns the H into a solid block or drops it. Nav words still wipe.
 * When the Work sheet is open the whole mark sits in the sheet, so recolor base.
 */
.nav-ink-logo__flip {
  display: none !important;
}

body.is-work-nav-open .nav-ink-logo__base .logo__img {
  filter: brightness(0) invert(1);
}

body.is-work-nav-open .nav-ink-logo__base .logo__paint {
  /* Keep mask; avoid background shorthand wiping the H glyph */
  background-color: transparent !important;
  background-image: linear-gradient(#fff, #fff) !important;
  filter: none !important;
}

/* Cream Work sheet — same triggers as .work-nav-panel cream, not is-nav-logo-light
   (that class falsely trips when the black sheet sits under the mark). */
body.is-work-nav-open.is-home-hero-light .site-nav--brand .nav-ink-logo__base .logo__img,
body.is-work-nav-open.is-project-hero-light .site-nav--brand .nav-ink-logo__base .logo__img,
body.is-work-nav-open.is-nav-links-light .site-nav--brand .nav-ink-logo__base .logo__img,
body.is-work-nav-open.is-home-hero-light .site-nav--brand .logo:not(.nav-ink-logo) .logo__img,
body.is-work-nav-open.is-project-hero-light .site-nav--brand .logo:not(.nav-ink-logo) .logo__img,
body.is-work-nav-open.is-nav-links-light .site-nav--brand .logo:not(.nav-ink-logo) .logo__img {
  filter: none !important;
}

body.is-work-nav-open.is-home-hero-light .site-nav--brand .nav-ink-logo__base .logo__paint,
body.is-work-nav-open.is-project-hero-light .site-nav--brand .nav-ink-logo__base .logo__paint,
body.is-work-nav-open.is-nav-links-light .site-nav--brand .nav-ink-logo__base .logo__paint,
body.is-work-nav-open.is-home-hero-light .site-nav--brand .logo:not(.nav-ink-logo) .logo__paint,
body.is-work-nav-open.is-project-hero-light .site-nav--brand .logo:not(.nav-ink-logo) .logo__paint,
body.is-work-nav-open.is-nav-links-light .site-nav--brand .logo:not(.nav-ink-logo) .logo__paint {
  background-color: transparent !important;
  background-image: linear-gradient(var(--near-black), var(--near-black)) !important;
}

/* Over dark media: base goes white, flip goes dark for the cream sheet */
body.is-home-hero-light .nav-ink__base,
body.is-project-hero-light .nav-ink__base,
body.is-nav-links-light .nav-ink__base {
  color: #fff;
}

body.is-home-hero-light .nav-ink__flip,
body.is-project-hero-light .nav-ink__flip,
body.is-nav-links-light .nav-ink__flip {
  color: var(--near-black);
}

/*
 * Work sheet open: lock nav words to the sheet so they never vanish when the
 * dual-ink wipe undershoots (common on project interiors).
 * Cream sheet → dark words; black sheet → cream words.
 */
body.is-work-nav-open.is-home-hero-light .site-nav--brand .nav-ink__base,
body.is-work-nav-open.is-project-hero-light .site-nav--brand .nav-ink__base,
body.is-work-nav-open.is-nav-links-light .site-nav--brand .nav-ink__base,
body.is-work-nav-open.is-home-hero-light .site-nav--brand .nav-ink__flip,
body.is-work-nav-open.is-project-hero-light .site-nav--brand .nav-ink__flip,
body.is-work-nav-open.is-nav-links-light .site-nav--brand .nav-ink__flip {
  color: var(--near-black) !important;
}

body.is-work-nav-open:not(.is-home-hero-light):not(.is-project-hero-light):not(.is-nav-links-light)
  .site-nav--brand
  .nav-ink__base {
  color: var(--cream) !important;
}

body.is-work-nav-open:not(.is-home-hero-light):not(.is-project-hero-light):not(.is-nav-links-light)
  .site-nav--brand
  .nav-ink__flip {
  color: var(--cream) !important;
  clip-path: inset(0 0 0 0);
}

body.is-work-nav-open.is-home-hero-light .site-nav--brand .nav-ink__flip,
body.is-work-nav-open.is-project-hero-light .site-nav--brand .nav-ink__flip,
body.is-work-nav-open.is-nav-links-light .site-nav--brand .nav-ink__flip {
  clip-path: inset(0 0 0 0);
}

body.is-home-hero-light .nav-ink-logo__base .logo__img,
body.is-project-hero-light .nav-ink-logo__base .logo__img,
body.is-nav-logo-light .nav-ink-logo__base .logo__img {
  filter: brightness(0) invert(1);
}

.nav-menu-toggle {
  display: none;
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  cursor: pointer;
  font-family: var(--font), sans-serif;
  font-size: var(--nav-brand-type);
  font-weight: 500;
  line-height: 1;
  color: var(--near-black);
  transition: color 0.45s var(--ease);
  box-sizing: border-box;
}

.nav-menu-toggle:hover {
  color: rgba(35, 31, 32, 0.55);
}

/* Work index: brand header layout; sticky when paired with --sticky */
.site-nav--home {
  padding-bottom: 0.25rem;
}

.site-nav--home:not(.site-nav--sticky) {
  position: relative;
}

/* Project interiors: keep header pinned while scrolling */
.site-nav--sticky {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  transition: transform 0.38s cubic-bezier(0.4, 0, 0.2, 1);
  will-change: transform;
}

.site-nav--sticky.is-away {
  transform: translate3d(0, -110%, 0);
  pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
  .site-nav--sticky {
    transition: none;
  }

  .site-nav--sticky.is-away {
    transform: none;
    pointer-events: auto;
  }
}

.logo {
  display: inline-flex;
  align-items: center;
  line-height: 1;
  color: var(--near-black);
  text-decoration: none;
}

.logo__img {
  display: block;
  width: auto;
  height: 1.65rem;
  max-width: min(16rem, 52vw);
}

.nav-links {
  display: flex;
  gap: 1.75rem;
  padding-top: 0.35rem;
}

.nav-links a {
  font-size: 0.8125rem;
  font-weight: 300;
  color: var(--near-black);
  opacity: 0.38;
  transition: opacity var(--t) ease;
}

.nav-links a:hover,
.nav-links a.is-active {
  opacity: 1;
}

.nav-links a.is-active {
  font-weight: 500;
}

/* ---------------------------------------------------------------------------
   Type + CTA (forms / about only — not on marketing surfaces)
   --------------------------------------------------------------------------- */

.display {
  font-family: var(--font), sans-serif;
  font-weight: 600;
  letter-spacing: -0.035em;
  line-height: 1.05;
}

.body {
  font-size: 0.9375rem;
  font-weight: 300;
  line-height: 1.55;
}

.body--sm {
  font-size: 0.8125rem;
  color: var(--gray);
  line-height: 1.5;
}

.eyebrow {
  font-size: 0.6875rem;
  font-weight: 300;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--gray);
}

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.7rem 1.2rem;
  border: 1px solid var(--near-black);
  background: transparent;
  color: var(--near-black);
  font-size: 0.75rem;
  font-weight: 300;
  letter-spacing: 0.04em;
  line-height: 1;
  transition:
    background-color var(--t-med) var(--ease),
    color var(--t-med) var(--ease),
    padding var(--t-med) var(--ease-out),
    font-size var(--t-med) var(--ease-out),
    font-weight var(--t-med) var(--ease),
    border-color var(--t-med) var(--ease);
}

.btn:hover,
.btn:focus-visible {
  background: var(--black);
  color: var(--white);
  border-color: var(--black);
  padding: 0.9rem 1.45rem;
  font-size: 0.8125rem;
  font-weight: 600;
}

.btn--view {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  letter-spacing: 0.08em;
  text-transform: lowercase;
  transition:
    color var(--t-med) var(--ease),
    padding var(--t-med) var(--ease-out),
    font-size var(--t-med) var(--ease-out),
    font-weight var(--t-med) var(--ease),
    border-color var(--t-med) var(--ease),
    letter-spacing var(--t-med) var(--ease-out),
    transform var(--t-med) var(--ease-out);
}

.btn--view::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--black);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.45s var(--ease-out);
}

.btn--view:hover,
.btn--view:focus-visible {
  background: transparent;
  color: var(--white);
  border-color: var(--black);
  padding: 0.95rem 1.65rem;
  font-weight: 600;
  letter-spacing: 0.16em;
  transform: translateY(-1px);
}

.btn--view:hover::before,
.btn--view:focus-visible::before {
  transform: scaleX(1);
}

.text-link {
  font-size: 0.8125rem;
  border-bottom: 1px solid transparent;
  transition: border-color var(--t) ease;
}

.text-link:hover { border-bottom-color: var(--near-black); }

/* ---------------------------------------------------------------------------
   Media placeholders — quiet wash fields (swap for image/video)
   --------------------------------------------------------------------------- */

.media {
  position: relative;
  width: 100%;
  height: 100%;
  background: #eceae7;
  overflow: hidden;
}

/* Varied plates so empty states don't read as identical template tiles */
.media--a { background: #e4e0da; }
.media--b { background: #1f1d1c; }
.media--c { background: #c8c4be; }
.media--dark { background: #1c1a1a; }
.media--mid { background: #d9d6d2; }

.media-video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  pointer-events: none;
}

/* Project walkthroughs / stills: full column width, native aspect — no crop */
.project-frame {
  scroll-margin-top: 0.5rem;
  width: 100%;
  background: transparent;
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

.project-frame .media-video,
.project-frame .media-photo {
  width: 100%;
  height: auto;
  min-height: 0;
  display: block;
  object-fit: contain;
  object-position: top center;
  background: #111;
}

.feature__meta {
  font-size: 0.75rem;
  color: var(--gray);
}

/* ---------------------------------------------------------------------------
   HOME — sparse, image-led
   --------------------------------------------------------------------------- */

.home-works {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: clamp(1rem, 2vw, 1.75rem);
  row-gap: clamp(2.25rem, 4.5vh, 3.25rem);
  margin-top: var(--nav-h);
  padding: clamp(2.5rem, 6vh, 4rem) var(--pad-x) 0;
}

.home-break {
  grid-column: 1 / -1;
  margin: clamp(1.5rem, 5vh, 3.5rem) 0 0.25rem;
  font-family: var(--font), sans-serif;
  font-weight: 600;
  font-size: clamp(1.75rem, 4vw, 2.75rem);
  letter-spacing: -0.035em;
  line-height: 1.05;
  color: var(--near-black);
}

.home-break:first-child {
  margin-top: 0;
}

.home-works__item {
  display: block;
  color: var(--near-black);
  text-decoration: none;
}

.home-works__item img {
  width: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  display: block;
  background: #111;
  transition: opacity 0.35s var(--ease);
}

.home-works__name {
  display: block;
  margin-top: 0.7rem;
  font-size: 0.8125rem;
  font-weight: 300;
  letter-spacing: -0.01em;
  line-height: 1.3;
  color: var(--near-black);
}

.home-works__item:hover img,
.home-works__item:focus-visible img {
  opacity: 0.85;
}

.home-works__item:focus-visible {
  outline: none;
}

.home-works__item:focus-visible .home-works__name {
  text-decoration: underline;
  text-underline-offset: 0.2em;
}

.home--paused {
  margin-top: var(--nav-h);
  min-height: calc(100svh - var(--nav-h));
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(3rem, 10vh, 6rem) var(--pad-x);
}

.home-paused {
  margin: 0;
  font-family: var(--font), sans-serif;
  font-weight: 600;
  font-size: clamp(1.5rem, 3.5vw, 2.25rem);
  letter-spacing: -0.03em;
  line-height: 1.1;
  color: var(--near-black);
}

.home-paused__link {
  margin: 1.25rem 0 0;
}

.home-paused__link a {
  font-size: 0.9375rem;
  font-weight: 300;
  color: var(--near-black);
  border-bottom: 1px solid var(--near-black);
  padding-bottom: 0.12rem;
  transition: opacity var(--t) ease;
}

.home-paused__link a:hover {
  opacity: 0.45;
}

.home-more {
  margin: 0;
  padding: clamp(2.5rem, 6vh, 4rem) var(--pad-x) 0;
}

.home-more a {
  font-size: 0.8125rem;
  font-weight: 300;
  color: var(--near-black);
  border-bottom: 1px solid var(--near-black);
  padding-bottom: 0.12rem;
  transition: opacity var(--t) ease;
}

.home-more a:hover {
  opacity: 0.45;
}

.home-end {
  padding: clamp(3.5rem, 10vh, 6rem) var(--pad-x) clamp(3rem, 8vh, 5rem);
}

.home-end__link {
  font-size: 0.875rem;
  font-weight: 300;
  color: var(--near-black);
  border-bottom: 1px solid var(--near-black);
  padding-bottom: 0.12rem;
  transition: opacity var(--t) ease;
}

.home-end__link:hover {
  opacity: 0.45;
}

.show {
  position: relative;
  margin-top: var(--nav-h);
  padding: 0 var(--pad-x);
  width: 100%;
  max-width: none;
  background: transparent;
}

.show__frame {
  position: relative;
  width: 100%;
  height: clamp(28rem, 78vh, 48rem);
  overflow: hidden;
  background: #111;
}

.show--project {
  margin-top: calc(var(--nav-h) + clamp(1.25rem, 3vh, 2.5rem));
  padding-bottom: 3rem;
}

.show--project .show__frame {
  height: clamp(18rem, 48vh, 30rem);
}

.show__stage {
  position: absolute;
  inset: 0;
}

.show__slide {
  position: absolute;
  inset: 0;
  display: block;
  opacity: 0;
  transition: opacity 0.7s var(--ease);
  pointer-events: none;
}

.show__slide.is-active {
  opacity: 1;
  pointer-events: auto;
  z-index: 1;
}

.show__slide img,
.show__slide .show__video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.show__slide--pad-white {
  background: #fff;
}

.show__slide--pad-black {
  background: #000;
}

.show__dots {
  position: absolute;
  left: 50%;
  bottom: 1rem;
  transform: translateX(-50%);
  z-index: 2;
  display: flex;
  align-items: center;
  gap: 0.45rem;
  pointer-events: auto;
}

.show__dot {
  width: 0.45rem;
  height: 0.45rem;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.4);
  cursor: pointer;
  transition: background var(--t) ease, transform var(--t) ease;
}

.show__dot.is-active {
  background: #fff;
  transform: scale(1.15);
}

.show__dot:focus-visible {
  outline: 1px solid #fff;
  outline-offset: 3px;
}

.show__meta {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 1rem;
  padding: 1.25rem 0 2.5rem;
  color: var(--near-black);
  text-align: left;
}

.show__label {
  max-width: min(36rem, 100%);
}

.show__title {
  margin: 0;
  font-family: var(--font), sans-serif;
  font-weight: 600;
  font-size: clamp(1rem, 1.6vw, 1.25rem);
  letter-spacing: 0.01em;
  line-height: 1.3;
  color: var(--near-black);
  text-align: left;
}

.show__desc {
  margin: 0.45rem 0 0;
  font-family: var(--font-light), sans-serif;
  font-weight: 300;
  font-size: 0.8125rem;
  line-height: 1.45;
  color: var(--gray);
  text-align: left;
  max-width: 34em;
}

.show__desc[hidden] {
  display: none;
}

.show__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem 0.85rem;
  margin: 0.45rem 0 0;
  text-align: left;
}

.show__tag {
  font-family: var(--font-light), sans-serif;
  font-weight: 300;
  font-size: 0.75rem;
  letter-spacing: 0.04em;
  color: var(--gray);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color var(--t) ease, color var(--t) ease;
}

.show__tag:hover {
  color: var(--near-black);
  border-bottom-color: var(--near-black);
}

.show__more {
  flex-shrink: 0;
  margin-top: 0.15rem;
}

.page--project-show {
  padding: 0;
  max-width: none;
}

.piece__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem 0.75rem;
  margin: 0.45rem 0 0;
}

.piece__tag {
  font-family: var(--font-light), sans-serif;
  font-weight: 300;
  font-size: 0.75rem;
  letter-spacing: 0.03em;
  color: var(--gray);
  cursor: pointer;
  border-bottom: 1px solid transparent;
  transition: color var(--t) ease, border-color var(--t) ease;
}

.piece__tag:hover,
.piece__tag:focus-visible {
  color: var(--near-black);
  border-bottom-color: var(--near-black);
}

/* ---------------------------------------------------------------------------
   HOME — legacy void / drift (kept for other pages if referenced)
   --------------------------------------------------------------------------- */

.void {
  position: relative;
  margin-top: var(--nav-h);
  padding: 0 var(--pad-x);
  width: 100%;
  max-width: none;
}

.void__media {
  position: relative;
  width: 100%;
  height: clamp(28rem, 78vh, 48rem);
  overflow: hidden;
  background: #111;
}

.void__media .media,
.void__media .media-video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  filter: none;
}

.media--stage {
  background: #1a1817;
}

.void__line {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  z-index: 2;
  margin: 0;
  font-size: clamp(0.875rem, 1.2vw, 1rem);
  font-weight: 300;
  color: rgba(255, 255, 255, 0.88);
  text-align: center;
  max-width: 22rem;
  line-height: 1.55;
  pointer-events: none;
  padding: 0 1rem;
}

.drift {
  position: relative;
  margin: clamp(0.5rem, 2vh, 1.25rem) 0 0;
  width: 100%;
  overflow: hidden;
  padding: clamp(2rem, 4.5vh, 3.25rem) 0 clamp(2.25rem, 5vh, 3.5rem);
  background: #1c1a1b;
  color: #fff;
}

.drift__intro {
  width: 100%;
  max-width: none;
  margin: 0 0 clamp(1.5rem, 3.5vh, 2.25rem);
  padding: 0 var(--pad-x);
}

.drift__intro-title {
  margin: 0 0 0.5rem;
  font-family: var(--font), sans-serif;
  font-size: clamp(1.15rem, 2vw, 1.375rem);
  font-weight: 600;
  letter-spacing: 0.02em;
  line-height: 1.2;
  color: #fff;
}

.drift__intro-body {
  margin: 0;
  max-width: 32rem;
  font-family: var(--font-light), sans-serif;
  font-size: 0.9375rem;
  font-weight: 300;
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.58);
}

.drift__viewport {
  overflow: hidden;
  width: 100%;
  cursor: grab;
  touch-action: pan-y;
}

.drift.is-dragging .drift__viewport {
  cursor: grabbing;
}

.drift__track {
  display: flex;
  width: max-content;
  gap: clamp(1.25rem, 2.5vw, 2rem);
  will-change: transform;
  user-select: none;
}

.drift.is-static .drift__track {
  flex-wrap: nowrap;
  overflow-x: auto;
  width: 100%;
  scrollbar-width: none;
}

.drift.is-static .drift__track::-webkit-scrollbar {
  display: none;
}

.drift.is-static .drift__viewport {
  cursor: default;
}

.drift__card {
  position: relative;
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  gap: 0;
  width: clamp(18rem, 42vw, 32rem);
  color: inherit;
  text-decoration: none;
  overflow: visible;
  background: transparent;
}

.drift__media {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: #0e0d0d;
}

.drift__media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1.02);
  filter: saturate(0.92) brightness(0.92);
  transition:
    transform 0.9s var(--ease-out),
    filter 0.55s ease;
  will-change: transform;
}

.drift__shine {
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background: linear-gradient(
    115deg,
    transparent 35%,
    rgba(255, 255, 255, 0.08) 48%,
    transparent 62%
  );
  transform: translateX(-120%);
  opacity: 0;
}

.drift__media::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 2px;
  z-index: 3;
  background: #fff;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.55s var(--ease-out);
  pointer-events: none;
}

.drift__more {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  margin: 0;
  padding: 0 0.75rem;
  max-height: 0;
  border: 1px solid transparent;
  font-family: var(--font-light), sans-serif;
  font-size: 0.6875rem;
  font-weight: 300;
  letter-spacing: 0.08em;
  line-height: 1;
  text-transform: lowercase;
  color: #fff;
  opacity: 0;
  overflow: hidden;
  transform: translateY(-0.45rem);
  pointer-events: none;
  transition:
    max-height 0.45s var(--ease-out),
    opacity 0.35s ease,
    transform 0.45s var(--ease-out),
    margin 0.45s var(--ease-out),
    padding 0.45s var(--ease-out),
    border-color 0.35s ease,
    font-weight 0.35s ease;
}

.drift__cap {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  margin-top: 0.7rem;
  padding: 0 0.05rem;
  transition: transform 0.45s var(--ease-out);
}

.drift__title {
  font-family: var(--font-light), sans-serif;
  font-size: 0.9375rem;
  font-weight: 300;
  letter-spacing: 0.01em;
  line-height: 1.25;
  color: rgba(255, 255, 255, 0.88);
  transition:
    color 0.35s ease,
    font-weight 0.35s ease,
    letter-spacing 0.45s var(--ease-out);
}

.drift__desc {
  font-family: var(--font-light), sans-serif;
  font-size: 0.8125rem;
  font-weight: 300;
  line-height: 1.45;
  color: rgba(255, 255, 255, 0.55);
  max-width: 26rem;
  transition: color 0.35s ease;
}

.drift__card:hover .drift__media img,
.drift__card:focus-visible .drift__media img,
.drift__card.is-hot .drift__media img {
  filter: saturate(1.05) brightness(1);
}

.drift__card:hover .drift__media::after,
.drift__card:focus-visible .drift__media::after,
.drift__card.is-hot .drift__media::after {
  transform: scaleX(1);
}

.drift__card:hover .drift__shine,
.drift__card:focus-visible .drift__shine,
.drift__card.is-hot .drift__shine {
  opacity: 1;
  animation: drift-shine 0.9s var(--ease-out) forwards;
}

.drift__card:hover .drift__more,
.drift__card:focus-visible .drift__more,
.drift__card.is-hot .drift__more {
  max-height: 2.25rem;
  margin: 0.75rem 0 0;
  padding: 0.55rem 0.85rem;
  border-color: rgba(255, 255, 255, 0.7);
  font-weight: 600;
  opacity: 1;
  transform: translateY(0);
}

.drift__card:hover .drift__cap,
.drift__card:focus-visible .drift__cap,
.drift__card.is-hot .drift__cap {
  transform: translateY(-0.1rem);
}

.drift__card:hover .drift__title,
.drift__card:focus-visible .drift__title,
.drift__card.is-hot .drift__title {
  font-family: var(--font), sans-serif;
  font-weight: 600;
  letter-spacing: 0.035em;
  color: #fff;
}

.drift__card:hover .drift__desc,
.drift__card:focus-visible .drift__desc,
.drift__card.is-hot .drift__desc {
  color: rgba(255, 255, 255, 0.82);
}

.drift__card:focus-visible {
  outline: 1px solid rgba(255, 255, 255, 0.7);
  outline-offset: 4px;
}

@keyframes drift-shine {
  from { transform: translateX(-120%); }
  to { transform: translateX(120%); }
}

@media (prefers-reduced-motion: reduce) {
  .drift__media img,
  .drift__cap,
  .drift__title,
  .drift__desc,
  .drift__more,
  .drift__media::after {
    transition: none;
  }

  .drift__card:hover .drift__shine,
  .drift__card:focus-visible .drift__shine,
  .drift__card.is-hot .drift__shine {
    animation: none;
    opacity: 0;
  }

  .drift__card:hover .drift__more,
  .drift__card:focus-visible .drift__more,
  .drift__card.is-hot .drift__more {
    max-height: none;
    opacity: 1;
    transform: none;
    margin: 0.65rem 0 0;
    padding: 0.55rem 0.85rem;
    border-color: rgba(255, 255, 255, 0.7);
  }
}

.home-lead {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.2rem;
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0.8rem var(--pad-x) clamp(1.75rem, 4vh, 2.75rem);
}

.home-lead .btn--view {
  margin-top: 1.15rem;
}

/* Uniform 2-col tiles — same outer margins as .void */
.pieces {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(1.5rem, 3vw, 2.5rem) clamp(1.25rem, 2.5vw, 2rem);
  padding: clamp(2rem, 4vh, 3rem) var(--pad-x) clamp(4rem, 8vh, 6rem);
  max-width: var(--max);
  margin: 0 auto;
  align-items: start;
}

.pieces--page {
  padding-left: 0;
  padding-right: 0;
  max-width: none;
}

.piece {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
  color: inherit;
}

.piece:hover .piece__title {
  color: var(--gray);
}

/* Custom tile hovers TBD — mute default title hover on Work except Stage */
body[data-page="work"] .piece:not([data-strobe]):hover .piece__title,
body[data-home-work="true"] .piece:not([data-strobe]):hover .piece__title {
  color: inherit;
}

.piece__media {
  position: relative;
  width: 100%;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--wash);
}

.piece__strobe {
  position: absolute;
  inset: 0;
  z-index: 2;
  opacity: 0;
  pointer-events: none;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  background-color: transparent;
}

.piece.is-strobing .piece__strobe {
  opacity: 1;
}

.piece.is-strobing .piece__media > img,
.piece.is-strobing .piece__media > .media-video,
.piece.is-strobing .piece__media > .media-photo,
.piece.is-strobing .piece__media > .media {
  opacity: 0;
}

.piece__media img,
.piece__media .media-photo,
.piece__media .media-video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.piece--ghost {
  opacity: 0.38;
  pointer-events: none;
}

.piece__cap {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  max-width: 34rem;
  padding-top: 0.15rem;
}

.piece__title {
  font-family: var(--font), sans-serif;
  font-weight: 600;
  font-size: 0.9375rem;
  letter-spacing: -0.02em;
  transition: color var(--t) ease;
}

.piece__desc {
  font-size: 0.8125rem;
  font-weight: 300;
  color: var(--gray);
  line-height: 1.45;
}

/* Full-bleed statement — type only (legacy alias) */
.statement {
  background: var(--black);
  color: var(--white);
  padding: clamp(5rem, 14vh, 9rem) var(--pad-x);
}

.statement__title {
  font-size: clamp(2rem, 4.5vw, 3.75rem);
  max-width: 16ch;
  margin-bottom: 1.25rem;
}

.statement__body {
  font-size: 1rem;
  font-weight: 300;
  color: rgba(255, 255, 255, 0.62);
  max-width: 28rem;
  line-height: 1.55;
}

/* Site footer */
.site-foot {
  background: var(--black);
  color: var(--white);
  padding: clamp(5rem, 14vh, 9rem) var(--pad-x);
}

.site-foot--compact {
  position: relative;
  z-index: 2;
  isolation: isolate;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  gap: clamp(4.5rem, 12vh, 8rem);
  min-height: 0;
  padding: clamp(1.75rem, 3.5vw, 2.75rem) var(--pad-x) clamp(0.75rem, 1.5vw, 1.1rem);
  margin-top: auto;
  margin-bottom: 0;
  flex-shrink: 0;
  background: var(--black);
}

.site-foot__top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem 2.5rem;
}

.site-foot__brand-link {
  display: block;
  flex: 0 0 auto;
  line-height: 0;
}

.site-foot__brand-logo {
  display: block;
  height: var(--nav-logo-h, 1.25rem);
  width: auto;
  max-width: none;
}

.site-foot__meta {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.45rem;
  text-align: right;
}

.site-foot__phone {
  font-family: var(--font), sans-serif;
  font-size: var(--nav-brand-type);
  font-weight: 500;
  letter-spacing: -0.02em;
  line-height: 1;
  color: var(--white);
  text-decoration: none;
  white-space: nowrap;
}

.site-foot__phone:hover,
.site-foot__phone:focus-visible {
  opacity: 0.72;
}

.site-foot__social {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 0.65rem clamp(1.35rem, 2.5vw, 2rem);
  margin: 0;
  font-family: var(--font), sans-serif;
  font-size: var(--nav-brand-type);
  font-weight: 500;
  letter-spacing: -0.02em;
  color: var(--white);
  line-height: 1;
}

.site-foot__social a {
  color: inherit;
  text-decoration: none;
  transition: opacity var(--t) var(--ease);
}

.site-foot__social a:hover,
.site-foot__social a:focus-visible {
  opacity: 0.72;
}

.site-foot__lockup {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.04em;
  width: 100%;
  color: var(--white);
}

.site-foot__year,
.site-foot__tag {
  margin: 0;
  font-family: var(--font);
  font-weight: 700;
  letter-spacing: -0.045em;
  line-height: 0.9;
  text-transform: uppercase;
  white-space: nowrap;
  color: var(--white);
}

.site-foot__year {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.22em;
  width: max-content;
  max-width: 100%;
}

.site-foot__tag {
  display: inline-block;
  width: max-content;
  max-width: 100%;
  text-align: left;
}

.site-foot__bar {
  display: block;
  flex: 0 0 auto;
  width: 0.55em;
  height: 0.11em;
  margin: 0;
  background: currentColor;
  transform: translateY(0.02em);
}

/* Once past the reel, fully remove it so nothing can paint under the footer */
body.is-home-hero-away .home-hero {
  display: none !important;
}

@media (max-width: 640px) {
  .site-foot--compact {
    gap: clamp(2rem, 8vw, 3rem);
    padding-top: 1.5rem;
    padding-bottom: calc(0.85rem + env(safe-area-inset-bottom, 0px));
  }

  .site-foot__top {
    flex-direction: column;
    align-items: flex-start;
    gap: 1.25rem;
  }

  .site-foot__brand-link {
    max-width: none;
  }

  .site-foot__brand-logo {
    height: calc(var(--nav-logo-h, 1.25rem) * 0.95);
  }

  .site-foot__meta {
    align-items: flex-start;
    text-align: left;
    gap: 0.35rem;
  }

  .site-foot__social {
    justify-content: flex-start;
    gap: 0.5rem 1.25rem;
  }

  .site-foot__lockup {
    align-items: flex-start;
    gap: 0.2em;
  }

  .site-foot__year,
  .site-foot__tag {
    width: 100%;
    max-width: 100%;
    white-space: normal;
    text-wrap: balance;
    font-size: clamp(1.65rem, 10.5vw, 2.35rem) !important;
    line-height: 0.95;
  }

  .site-foot__year {
    justify-content: flex-start;
    width: 100%;
  }

  .site-foot__tag {
    text-align: left;
  }
}

.btn--on-dark {
  border-color: rgba(255, 255, 255, 0.55);
  color: var(--white);
}

.btn--on-dark::before {
  background: var(--white);
}

.btn--on-dark:hover,
.btn--on-dark:focus-visible {
  color: var(--black);
  border-color: var(--white);
  font-weight: 600;
}

/* ---------------------------------------------------------------------------
   WORK page shell
   --------------------------------------------------------------------------- */

.page {
  padding: calc(var(--nav-h) + 2.5rem) var(--pad-x) 6rem;
  max-width: var(--max);
  margin: 0 auto;
}


.page--work {
  max-width: none;
  padding-bottom: clamp(4rem, 10vh, 7rem);
}

/* ---------------------------------------------------------------------------
   CATEGORY — dedicated work filters
   --------------------------------------------------------------------------- */

body[data-page="category"] {
  --work-project-inset: clamp(1.25rem, 3.5vw, 2.75rem);
  background: var(--cream);
}

body[data-page="category"] .page--category {
  position: relative;
  z-index: 1;
  max-width: none;
  padding-top: 0;
  padding-right: var(--pad-x);
  padding-bottom: clamp(4rem, 10vh, 7rem);
  padding-left: var(--pad-x);
  background: var(--cream);
}

.cat-head {
  --cat-head-gap: 0.45em;
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  justify-content: flex-start;
  gap: var(--cat-head-gap);
  margin: 0;
  width: 100%;
  max-width: none;
  font-family: var(--font), sans-serif;
  font-size: clamp(1.65rem, 4.6vw, 3.55rem);
  font-weight: 700;
  letter-spacing: -0.04em;
  line-height: 0.95;
  text-transform: uppercase;
  color: var(--black);
  /* Reserve open Work menu height + a little air so title clears the sheet. */
  padding:
    calc(
      var(
        --work-nav-reserve,
        calc(0.9rem + var(--nav-logo-h, 1.25rem) + 0.85rem + var(--work-intro-pad, clamp(2.25rem, 4.5vh, 3.25rem)))
      ) + clamp(1.25rem, 3.2vh, 2rem)
    )
    0
    clamp(4.75rem, 12vh, 8rem);
  box-sizing: border-box;
}

.cat-head__title,
.cat-head__desc {
  margin: 0;
  text-align: left;
  font: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  color: inherit;
}

.cat-head__title {
  flex: 0 0 auto;
  width: auto;
  max-width: none;
  text-wrap: balance;
}

/* Bar between title and subtitle — gap/em sized from display type above */
.cat-head__dash {
  flex: 0 0 auto;
  align-self: flex-start;
  width: 1.75em;
  height: 0.11em;
  margin: calc((1lh - 0.11em) / 2) 0 0;
  background: currentColor;
}

.cat-head__desc {
  flex: 1 1 auto;
  width: auto;
  max-width: min(52vw, 22em);
  text-wrap: balance;
}

body[data-page="category"] .work-grid {
  margin-left: var(--work-project-inset, clamp(1.25rem, 3.5vw, 2.75rem));
  margin-right: var(--work-project-inset, clamp(1.25rem, 3.5vw, 2.75rem));
  width: auto;
}

.work-pager {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.45em;
  width: auto;
  margin: clamp(2.75rem, 6.5vh, 4.5rem) var(--work-project-inset, clamp(1.25rem, 3.5vw, 2.75rem)) 0;
  padding: 0;
  border: 0;
  font-family: var(--font), sans-serif;
  font-size: clamp(1.65rem, 4.6vw, 3.55rem);
  font-weight: 700;
  letter-spacing: -0.04em;
  line-height: 1;
  color: var(--near-black);
}

.work-pager__dash {
  flex: 0 0 auto;
  width: 1.75em;
  height: 0.11em;
  margin: 0;
  background: currentColor;
}

.work-pager__pages {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  align-items: baseline;
  gap: 0.4em;
  margin: 0;
  padding: 0;
  list-style: none;
  font-variant-numeric: tabular-nums;
}

.work-pager__num {
  appearance: none;
  margin: 0;
  padding: 0.2em 0;
  border: 0;
  background: none;
  font: inherit;
  letter-spacing: inherit;
  color: inherit;
  cursor: pointer;
  opacity: 0.38;
  transition: opacity var(--t) var(--ease);
}

.work-pager__num:hover,
.work-pager__num:focus-visible {
  opacity: 1;
  outline: none;
}

.work-pager__num[aria-current="page"] {
  opacity: 1;
  cursor: default;
  font-weight: 700;
}

@media (max-width: 900px) {
  body[data-page="category"] {
    --work-project-inset: 0px;
  }

  .cat-head {
    flex-wrap: wrap;
    align-items: flex-start;
    row-gap: 0.55em;
    width: 100%;
  }

  .cat-head__desc {
    flex-basis: min(100%, 18em);
    max-width: min(100%, 18em);
  }
}

/* ---------------------------------------------------------------------------
   ARCHIVE — column masonry, original aspect ratios, filename captions
   Equal H/V gutters: column-gap === item margin-bottom (--archive-gap).
   Captions hang under media into the gutter. DOM order preserved.
   --------------------------------------------------------------------------- */

.page--archive {
  max-width: none;
  width: 100%;
  margin: 0;
  padding-top: calc(var(--nav-h) + clamp(1.75rem, 4vh, 3rem));
  padding-bottom: clamp(5rem, 14vh, 9rem);
  padding-left: max(var(--nav-pad-x), env(safe-area-inset-left, 0px));
  padding-right: max(var(--nav-pad-x), env(safe-area-inset-right, 0px));
  min-height: calc(100svh - var(--nav-h));
  --archive-gap: clamp(1.65rem, 2.4vw, 2.1rem);
}

.archive-grid {
  column-count: 4;
  column-gap: var(--archive-gap);
  column-fill: balance;
}

.archive-item {
  position: relative;
  margin: 0 0 var(--archive-gap);
  break-inside: avoid;
  page-break-inside: avoid;
  -webkit-column-break-inside: avoid;
  width: 100%;
}

.archive-item__media {
  position: relative;
  width: 100%;
  background: transparent;
}

.archive-item__media img,
.archive-item__media video {
  width: 100%;
  height: auto;
  display: block;
  object-fit: contain;
}

.archive-item__name {
  position: absolute;
  left: 0;
  right: 0;
  top: 100%;
  margin: 0.35rem 0 0;
  font-family: var(--font), sans-serif;
  font-size: clamp(0.78rem, 1vw, 0.92rem);
  font-weight: 500;
  letter-spacing: 0.01em;
  line-height: 1.25;
  color: var(--black);
  word-break: break-all;
}

@media (max-width: 900px) {
  .page--archive {
    --archive-gap: clamp(1.35rem, 3.2vw, 1.75rem);
  }

  .archive-grid {
    column-count: 2;
  }
}

body[data-home-work="true"] {
  /* Grid shares logo/nav side gutters */
  --work-project-inset: 0px;
  --home-col-gap: clamp(1.25rem, 2.2vw, 1.9rem);
  /* 1cap fallback; JS may set a measured px value after fonts load */
  --nav-logo-h: 1cap;
  --work-cats-dash: 1.85em;
  /* Clear sticky nav only — intro band handles its own breathing room */
  --home-nav-pad: calc(0.9rem + var(--nav-logo-h) + 0.85rem);
  --work-content-top: clamp(1.1rem, 2.8vh, 1.85rem);
  --work-intro-size: clamp(1.4rem, 2.3vw, 1.9rem);
  --work-intro-pad: clamp(3.75rem, 9vh, 6.5rem);
  --work-intro-copy: clamp(1.05rem, 1.35vw, 1.4rem);
  background: var(--white);
}

body[data-home-work="true"] .page--home-work {
  position: relative;
  padding-top: var(--home-nav-pad);
  padding-left: var(--pad-x);
  padding-right: var(--pad-x);
  padding-bottom: clamp(5rem, 12vh, 7.5rem);
  --work-lead-w: min(92rem, 72%);
  --work-mid-w: min(48rem, 72%);
  /* Wide measure — bio runs well into the page */
  --work-intro-w: min(72rem, 88%);
}

/* ---------------------------------------------------------------------------
   Home video header — fixed full-bleed reel; work sheet scrolls over it
   --------------------------------------------------------------------------- */

body[data-home-hero="video"],
body[data-home-hero="flash"],
body[data-home-hero="image"] {
  background: #000;
}

body[data-home-hero="video"] .home-hero,
body[data-home-hero="flash"] .home-hero,
body[data-home-hero="image"] .home-hero {
  position: fixed;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100svh;
  overflow: hidden;
  background: #0c0b0a;
  pointer-events: none;
}

body[data-home-hero="video"] .home-hero__video,
body[data-home-hero="image"] .home-hero__image {
  display: block;
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: var(--hero-pos-x, 50%) var(--hero-pos-y, 50%);
}

body[data-home-hero="flash"] .home-hero__flash {
  position: absolute;
  inset: 0;
  overflow: hidden;
  background: #000;
}

body[data-home-hero="flash"] .home-hero__flash-media {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  opacity: 0;
  background: #000;
  transition: opacity 70ms ease-out;
  will-change: opacity;
}

body[data-home-hero="flash"] .home-hero__flash-media.is-on {
  opacity: 1;
  filter: brightness(0.92) contrast(1.03);
}

body[data-home-hero="flash"] .home-hero__flash-media.is-flash-type {
  display: grid;
  place-items: center;
  background: #050505;
  overflow: hidden;
  transition: opacity 160ms ease-out;
}

body[data-home-hero="flash"] .home-hero__flash-media.is-flash-type.is-on {
  filter: none;
}

body[data-home-hero="flash"] .home-hero__type-organic {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  opacity: 0;
  transform: scale(0.92);
}

body[data-home-hero="flash"] .home-hero__flash-media.is-type-anim .home-hero__type-organic {
  opacity: 1;
  transform: scale(1);
  transition: opacity 700ms ease-out, transform 1.2s cubic-bezier(0.16, 1, 0.3, 1);
}

body[data-home-hero="flash"] .home-hero__type-stage {
  position: relative;
  z-index: 1;
  padding: 0 clamp(1.25rem, 4vw, 3rem);
  max-width: min(92vw, 58rem);
  opacity: 0;
  transform: translate3d(0, 0.7rem, 0) scale(0.96);
  filter: blur(12px);
}

body[data-home-hero="flash"] .home-hero__flash-media.is-type-anim .home-hero__type-stage {
  opacity: 1;
  transform: translate3d(0, 0, 0) scale(1);
  filter: blur(0);
  transition:
    opacity 560ms ease-out,
    transform 980ms cubic-bezier(0.16, 1, 0.3, 1),
    filter 980ms cubic-bezier(0.16, 1, 0.3, 1);
}

body[data-home-hero="flash"] .home-hero__type-line {
  margin: 0;
  color: #fff;
  font-family: var(--font);
  font-weight: 700;
  font-size: clamp(4.25rem, 14vw, 10.5rem);
  letter-spacing: -0.045em;
  line-height: 0.92;
  text-align: center;
  text-wrap: balance;
}

body[data-home-hero="flash"] .home-hero__type-stage.is-phrase .home-hero__type-line {
  font-size: clamp(2.35rem, 6.8vw, 5.25rem);
  letter-spacing: -0.035em;
  line-height: 1.05;
}

body[data-home-hero="flash"] .home-hero__type-motion {
  position: relative;
  display: inline-block;
  white-space: nowrap;
}

body[data-home-hero="flash"] .home-hero__type-uline {
  position: absolute;
  left: 0.01em;
  right: 0.01em;
  top: 0.95em;
  width: auto;
  height: 0.28em;
  overflow: visible;
  color: #fff;
  opacity: 0;
  transform: scaleX(0.28);
  transform-origin: left center;
  pointer-events: none;
}

body[data-home-hero="flash"] .home-hero__flash-media.is-on.is-type-anim .home-hero__type-uline {
  opacity: 1;
  transform: scaleX(1);
  transition: opacity 420ms ease-out 320ms, transform 820ms cubic-bezier(0.16, 1, 0.3, 1) 260ms;
}

@media (max-width: 640px) {
  body[data-home-hero="flash"] .home-hero__type-line {
    font-size: clamp(3.25rem, 18vw, 5.5rem);
  }

  body[data-home-hero="flash"] .home-hero__type-stage.is-phrase .home-hero__type-line {
    font-size: clamp(1.85rem, 9.5vw, 2.75rem);
  }
}

body[data-home-hero="video"] .home-hero-spacer,
body[data-home-hero="flash"] .home-hero-spacer,
body[data-home-hero="image"] .home-hero-spacer {
  position: relative;
  z-index: 0;
  height: 100svh;
  pointer-events: none;
}

body[data-home-hero="video"] .page--home-work,
body[data-home-hero="flash"] .page--home-work,
body[data-home-hero="image"] .page--home-work {
  position: relative;
  z-index: 1;
  background: var(--white);
  /* No extra top pad — equal band padding handles air above & below the copy */
  padding-top: 0;
}

body[data-home-hero="video"] .site-foot,
body[data-home-hero="flash"] .site-foot,
body[data-home-hero="image"] .site-foot {
  position: relative;
  z-index: 2;
}

/* White chrome over dark media: reel, project hero, or sampled images under nav.
   Logo mark + H flip together; Menu follows the links light flag. */
body.is-home-hero-light .site-nav--brand .nav-links a,
body.is-project-hero-light .site-nav--brand .nav-links a,
body.is-nav-links-light .site-nav--brand .nav-links a {
  color: #fff;
}

body.is-home-hero-light .site-nav--brand .nav-menu-toggle,
body.is-project-hero-light .site-nav--brand .nav-menu-toggle,
body.is-nav-links-light .site-nav--brand .nav-menu-toggle {
  color: #fff;
  transition: color 0.35s ease;
}

body.is-home-hero-light .site-nav--brand .nav-menu-toggle:hover,
body.is-project-hero-light .site-nav--brand .nav-menu-toggle:hover,
body.is-nav-links-light .site-nav--brand .nav-menu-toggle:hover {
  color: rgba(255, 255, 255, 0.72);
}

body.is-home-hero-light .site-nav--brand .nav-links a.is-active,
body.is-project-hero-light .site-nav--brand .nav-links a.is-active,
body.is-nav-links-light .site-nav--brand .nav-links a.is-active {
  color: #fff;
}

body.is-home-hero-light .site-nav--brand .nav-links a:hover,
body.is-project-hero-light .site-nav--brand .nav-links a:hover,
body.is-nav-links-light .site-nav--brand .nav-links a:hover {
  color: rgba(255, 255, 255, 0.72);
}

body.is-home-hero-light .site-nav--brand .nav-ink-logo__base .logo__img,
body.is-project-hero-light .site-nav--brand .nav-ink-logo__base .logo__img,
body.is-nav-logo-light .site-nav--brand .nav-ink-logo__base .logo__img,
body.is-home-hero-light .site-nav--brand .logo:not(.nav-ink-logo) .logo__img,
body.is-project-hero-light .site-nav--brand .logo:not(.nav-ink-logo) .logo__img,
body.is-nav-logo-light .site-nav--brand .logo:not(.nav-ink-logo) .logo__img {
  filter: brightness(0) invert(1);
}

/* H block goes white with the mark over dark chrome (incl. mobile load-in) */
body.is-home-hero-light .site-nav--brand .nav-ink-logo__base .logo__paint,
body.is-project-hero-light .site-nav--brand .nav-ink-logo__base .logo__paint,
body.is-nav-logo-light .site-nav--brand .nav-ink-logo__base .logo__paint,
body.is-home-hero-light .site-nav--brand .logo:not(.nav-ink-logo) .logo__paint,
body.is-project-hero-light .site-nav--brand .logo:not(.nav-ink-logo) .logo__paint,
body.is-nav-logo-light .site-nav--brand .logo:not(.nav-ink-logo) .logo__paint {
  background-color: #fff !important;
  background-image: none !important;
  filter: none !important;
}

body[data-home-hero="video"] .site-nav--sticky.is-away,
body[data-home-hero="flash"] .site-nav--sticky.is-away,
body[data-home-hero="image"] .site-nav--sticky.is-away {
  transform: none;
  pointer-events: auto;
}

body[data-home-hero="video"] .site-nav--sticky.is-hero-pin,
body[data-home-hero="flash"] .site-nav--sticky.is-hero-pin,
body[data-home-hero="image"] .site-nav--sticky.is-hero-pin {
  transition: none;
}



/* Intro above the grid — wider into center; no overlay on first pair */
body[data-home-work="true"] .page--home-work .work-cluster {
  --lead-media-h: auto;
  --work-intro-sticky-top: calc(0.9rem + var(--nav-logo-h) + 0.85rem);
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: start;
  row-gap: 0;
}

body[data-home-work="true"] .page--home-work .work-rail {
  position: relative;
  left: auto;
  top: auto;
  z-index: 2;
  display: block;
  width: 100%;
  max-width: none;
  height: auto;
  margin: 0;
  padding: 0;
  pointer-events: none;
}

body[data-home-work="true"] .page--home-work .work-intro-band {
  display: block;
  margin: 0;
  width: 100%;
  /* Equal, modest air — mast centered in the white band */
  --work-intro-band-pad: clamp(4.75rem, 12vh, 8rem);
  padding-top: var(--work-intro-band-pad);
  padding-bottom: var(--work-intro-band-pad);
  transition: padding-top var(--work-nav-dur) var(--work-nav-ease);
}

/* Only grow the top when Work is open so the mast stays clear of the sheet */
body.is-work-nav-open[data-home-work="true"] .page--home-work .work-intro-band {
  padding-top: max(
    var(--work-nav-reserve, var(--work-intro-band-pad)),
    var(--work-intro-band-pad)
  );
}

body[data-home-work="true"] .page--home-work .work-intro {
  position: relative;
  top: auto;
  width: min(75vw, 24em);
  max-width: 24em;
  margin: 0;
  padding: 0;
  text-align: left;
  font-family: var(--font), sans-serif;
  font-size: clamp(1.65rem, 4.6vw, 3.55rem);
  font-weight: 700;
  letter-spacing: -0.04em;
  line-height: 0.95;
  text-transform: uppercase;
  text-wrap: balance;
  color: var(--black);
  pointer-events: auto;
}

body[data-home-work="true"] .page--home-work .work-grid {
  margin-top: 0;
  margin-left: var(--work-project-inset);
  margin-right: var(--work-project-inset);
  width: auto;
}

/* Work nav category panel — half-screen white sheet from page top, under nav */
.nav-work {
  display: inline-flex;
  align-items: flex-start;
  position: relative;
}

.work-nav-panel {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  height: auto;
  z-index: 90;
  display: block;
  /* Full black like the footer — default over cream/white pages */
  background: var(--black);
  color: var(--cream);
  visibility: hidden;
  pointer-events: none;
  clip-path: inset(
    0
    0
    max(0px, calc(100% - min(100%, var(--work-nav-reveal, 0px))))
    0
  );
  transition: visibility 0s linear var(--work-nav-dur);
}

.work-nav-panel.is-open {
  visibility: visible;
  /* Sheet stays non-interactive except the category list so real nav clicks pass through. */
  pointer-events: none;
  transition: visibility 0s linear 0s;
}

.work-nav-panel.is-open .work-cats {
  pointer-events: auto;
}

.work-nav-panel__inner {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  box-sizing: border-box;
  padding: 0;
}

.work-nav-panel .work-cats {
  position: absolute;
  top: calc(var(--work-cats-top, 3rem) + 0.55rem);
  left: var(--work-cats-left, var(--nav-pad-x));
  right: auto;
  display: block;
  width: max-content;
  max-width: min(28rem, 56vw);
  margin: 0;
  transform: none;
}

.work-nav-panel .work-cats__rail {
  position: relative;
}

.work-nav-panel .work-cats__list,
body[data-home-work="true"] .work-nav-panel .work-cats__list {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  /* Midway between the earlier snug list and the oversized bio gap */
  gap: clamp(0.4rem, 1.25vh, 0.65rem);
}

.work-nav-panel .work-cats__list button,
.work-nav-panel .work-cats__list a {
  position: relative;
  margin: 0;
  padding: 0 !important;
  border: 0;
  background: transparent;
  font-family: var(--font), sans-serif;
  font-size: var(--nav-brand-type);
  font-weight: 500;
  letter-spacing: normal;
  line-height: 1;
  color: var(--cream);
  text-align: left;
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  opacity: 0.42;
  transition: opacity 0.28s ease;
  display: block;
}

/* No selected-state emphasis — hover/focus only */
.work-nav-panel .work-cats__list button:hover,
.work-nav-panel .work-cats__list button:focus-visible,
.work-nav-panel .work-cats__list a:hover,
.work-nav-panel .work-cats__list a:focus-visible {
  padding-left: 0 !important;
  opacity: 1;
  color: var(--cream);
}

.work-nav-panel__founded {
  display: none;
}

/* Cream sheet only while chrome is light — i.e. sitting over dark media */
body.is-home-hero-light .work-nav-panel,
body.is-project-hero-light .work-nav-panel,
body.is-nav-links-light .work-nav-panel {
  background: var(--cream);
  color: var(--near-black);
}

body.is-home-hero-light .work-nav-panel .work-cats__list button,
body.is-home-hero-light .work-nav-panel .work-cats__list a,
body.is-project-hero-light .work-nav-panel .work-cats__list button,
body.is-project-hero-light .work-nav-panel .work-cats__list a,
body.is-nav-links-light .work-nav-panel .work-cats__list button,
body.is-nav-links-light .work-nav-panel .work-cats__list a {
  color: var(--near-black);
}

body.is-home-hero-light .work-nav-panel .work-cats__list button:hover,
body.is-home-hero-light .work-nav-panel .work-cats__list button:focus-visible,
body.is-home-hero-light .work-nav-panel .work-cats__list a:hover,
body.is-home-hero-light .work-nav-panel .work-cats__list a:focus-visible,
body.is-project-hero-light .work-nav-panel .work-cats__list button:hover,
body.is-project-hero-light .work-nav-panel .work-cats__list button:focus-visible,
body.is-project-hero-light .work-nav-panel .work-cats__list a:hover,
body.is-project-hero-light .work-nav-panel .work-cats__list a:focus-visible,
body.is-nav-links-light .work-nav-panel .work-cats__list button:hover,
body.is-nav-links-light .work-nav-panel .work-cats__list button:focus-visible,
body.is-nav-links-light .work-nav-panel .work-cats__list a:hover,
body.is-nav-links-light .work-nav-panel .work-cats__list a:focus-visible {
  color: var(--near-black);
}

@media (prefers-reduced-motion: reduce) {
  .work-nav-panel,
  .work-nav-panel.is-open {
    transition-duration: 0.01ms;
  }
}

/* Legacy sticky category chip — unused; kept inert if markup reappears */
body[data-home-work="true"] .work-cats-dock {
  display: none !important;
}

body[data-home-work="true"] .work-cats-dock__slot {
  width: auto;
  max-width: none;
}

body[data-home-work="true"] .work-cats.is-docked {
  --cats-dur: 0.55s;
  --cats-ease: cubic-bezier(0.16, 1, 0.3, 1);
  --cats-stagger: 0.038s;
  pointer-events: auto;
  width: max-content;
  min-width: 7rem;
  max-width: none;
}

body[data-home-work="true"] .work-cats.is-docked .work-cats__list {
  gap: 0;
  padding: 0;
  transition:
    gap var(--cats-dur) var(--cats-ease),
    padding var(--cats-dur) var(--cats-ease);
}

body[data-home-work="true"] .work-cats.is-docked .work-cats__list button {
  position: relative;
  color: var(--near-black);
  max-height: 1.5em;
  overflow: hidden;
  white-space: nowrap;
  line-height: 1.25;
  filter: blur(0);
  transition:
    opacity var(--cats-dur) var(--cats-ease),
    color 0.35s ease,
    filter calc(var(--cats-dur) * 0.85) var(--cats-ease),
    padding-left var(--cats-dur) var(--cats-ease),
    padding-top var(--cats-dur) var(--cats-ease),
    padding-bottom var(--cats-dur) var(--cats-ease),
    max-height var(--cats-dur) var(--cats-ease),
    margin var(--cats-dur) var(--cats-ease),
    letter-spacing var(--cats-dur) var(--cats-ease);
}

/* Footer chip: dash on the active button — draws in from the left */
body[data-home-work="true"] .work-cats.is-docked:not(.is-intro) .work-cats__dash {
  display: none;
}

body[data-home-work="true"] .work-cats.is-docked .work-cats__list button::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  width: 1.5em;
  height: 1.5px;
  background: currentColor;
  transform: translateY(-50%) scaleX(0);
  transform-origin: left center;
  pointer-events: none;
  opacity: 0;
  transition:
    transform 0.5s var(--cats-ease),
    opacity 0.28s ease,
    color 0.35s ease;
}

body[data-home-work="true"] .work-cats.is-docked .work-cats__list button.is-active::before {
  transform: translateY(-50%) scaleX(1);
  opacity: 1;
}

body[data-home-work="true"] .work-cats.is-docked.is-intro .work-cats__list button.is-active::before {
  display: none;
}

/* Collapsed footer: only the active chip — others dissolve in place */
body[data-home-work="true"] .work-cats.is-docked:not(.is-dock-open) .work-cats__list button:not(.is-active) {
  max-height: 0;
  opacity: 0;
  overflow: hidden;
  margin: 0;
  padding-top: 0;
  padding-bottom: 0;
  letter-spacing: 0.04em;
  filter: blur(2.5px);
  pointer-events: none;
}

body[data-home-work="true"] .work-cats.is-docked .work-cats__list button.is-active {
  opacity: 1;
  padding-left: var(--work-cats-dash);
  max-height: none;
  overflow: visible;
  line-height: 1.25;
  filter: blur(0);
  letter-spacing: -0.015em;
  white-space: nowrap;
}

/* Open sheet: clarify in place, bottom-up stagger */
body[data-home-work="true"] .work-cats.is-docked.is-dock-open .work-cats__list {
  gap: clamp(0.28rem, 0.9vh, 0.48rem);
  padding: 0.45rem 0 0.55rem;
}

body[data-home-work="true"] .work-cats.is-docked.is-dock-open .work-cats__list button {
  display: block;
  max-height: none;
  opacity: 0.4;
  overflow: visible;
  pointer-events: auto;
  color: var(--near-black);
  line-height: 1.25;
  filter: blur(0);
  letter-spacing: -0.015em;
}

body[data-home-work="true"] .work-cats.is-docked.is-dock-open .work-cats__list button:nth-child(1) {
  transition-delay: calc(var(--cats-stagger) * 5);
}
body[data-home-work="true"] .work-cats.is-docked.is-dock-open .work-cats__list button:nth-child(2) {
  transition-delay: calc(var(--cats-stagger) * 4);
}
body[data-home-work="true"] .work-cats.is-docked.is-dock-open .work-cats__list button:nth-child(3) {
  transition-delay: calc(var(--cats-stagger) * 3);
}
body[data-home-work="true"] .work-cats.is-docked.is-dock-open .work-cats__list button:nth-child(4) {
  transition-delay: calc(var(--cats-stagger) * 2);
}
body[data-home-work="true"] .work-cats.is-docked.is-dock-open .work-cats__list button:nth-child(5) {
  transition-delay: calc(var(--cats-stagger) * 1);
}
body[data-home-work="true"] .work-cats.is-docked.is-dock-open .work-cats__list button:nth-child(6) {
  transition-delay: 0s;
}

body[data-home-work="true"] .work-cats.is-docked:not(.is-dock-open) .work-cats__list button:nth-child(1) {
  transition-delay: 0s;
}
body[data-home-work="true"] .work-cats.is-docked:not(.is-dock-open) .work-cats__list button:nth-child(2) {
  transition-delay: calc(var(--cats-stagger) * 0.5);
}
body[data-home-work="true"] .work-cats.is-docked:not(.is-dock-open) .work-cats__list button:nth-child(3) {
  transition-delay: calc(var(--cats-stagger) * 1);
}
body[data-home-work="true"] .work-cats.is-docked:not(.is-dock-open) .work-cats__list button:nth-child(4) {
  transition-delay: calc(var(--cats-stagger) * 1.5);
}
body[data-home-work="true"] .work-cats.is-docked:not(.is-dock-open) .work-cats__list button:nth-child(5) {
  transition-delay: calc(var(--cats-stagger) * 2);
}
body[data-home-work="true"] .work-cats.is-docked:not(.is-dock-open) .work-cats__list button:nth-child(6) {
  transition-delay: calc(var(--cats-stagger) * 2.5);
}

body[data-home-work="true"] .work-cats.is-docked.is-dock-open .work-cats__list button.is-active,
body[data-home-work="true"] .work-cats.is-docked.is-dock-open .work-cats__list button.is-hot,
body[data-home-work="true"] .work-cats.is-docked.is-dock-open .work-cats__list button:hover,
body[data-home-work="true"] .work-cats.is-docked.is-dock-open .work-cats__list button:focus-visible {
  opacity: 1;
}

/* Over the reel: chip + expanded list stay white (tracks chip edge, not nav) */
body[data-home-work="true"].is-cats-hero-light .work-cats.is-docked .work-cats__list button,
body[data-home-work="true"].is-cats-hero-light .work-cats.is-docked.is-dock-open .work-cats__list button,
body[data-home-work="true"].is-cats-hero-light .work-cats.is-docked .work-cats__list button.is-active {
  color: #fff;
  transition: color 0.35s ease;
}

body[data-home-work="true"].is-cats-hero-light .work-cats.is-docked .work-cats__list button::before {
  background: currentColor;
}

body[data-home-work="true"].is-cats-hero-light .work-cats.is-docked .work-cats__dash {
  background: #fff;
}

body[data-home-work="true"] .site-nav {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  column-gap: clamp(1rem, 2.5vw, 2rem);
}

body[data-home-work="true"] .site-nav__brand {
  justify-self: start;
  gap: 0.3rem;
}

body[data-home-work="true"] .site-nav--home .nav-links {
  justify-self: end;
  align-self: start;
}

body[data-home-work="true"] .work-grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  column-gap: var(--home-col-gap);
  row-gap: clamp(4.5rem, 9vh, 6.75rem);
  align-items: start;
}

body[data-home-work="true"] .work-grid .piece {
  gap: 0.85rem;
  min-width: 0;
}

/* Default before JS sizes land */
body[data-home-work="true"] .work-grid .piece {
  grid-column: span 6;
}

/* Large / small pair — both landscape; sides alternate in JS */
body[data-home-work="true"] .work-grid .piece--lg {
  grid-column: span 7;
}

body[data-home-work="true"] .work-grid .piece--sm {
  grid-column: span 5;
}

/* Three-up row (every fifth line) */
body[data-home-work="true"] .work-grid .piece--tri {
  grid-column: span 4;
}

/* Right-docked lead */
body[data-home-work="true"] .work-grid .piece--solo,
body[data-home-work="true"] .work-grid .piece--lead {
  grid-column: 1 / -1;
  width: min(100%, var(--work-lead-w, 92rem));
  margin-left: auto;
  margin-right: 0;
}

/* Left-docked follow — same measure as lead, flush with logo */
body[data-home-work="true"] .work-grid .piece--follow {
  grid-column: 1 / -1;
  width: min(100%, var(--work-lead-w, 92rem));
  margin-left: 0;
  margin-right: auto;
}

/* Centered single between pairs */
body[data-home-work="true"] .work-grid .piece--mid {
  grid-column: 3 / span 8;
  width: 100%;
  margin-left: 0;
  margin-right: 0;
}

body[data-home-work="true"] .work-grid .piece__media {
  aspect-ratio: 3 / 2;
  width: 100%;
  overflow: hidden;
  background: transparent;
}

body[data-home-work="true"] .work-grid .piece--lg .piece__media,
body[data-home-work="true"] .work-grid .piece--sm .piece__media,
body[data-home-work="true"] .work-grid .piece--tri .piece__media,
body[data-home-work="true"] .work-grid .piece--solo .piece__media,
body[data-home-work="true"] .work-grid .piece--lead .piece__media,
body[data-home-work="true"] .work-grid .piece--follow .piece__media,
body[data-home-work="true"] .work-grid .piece--mid .piece__media {
  aspect-ratio: 3 / 2;
}

body[data-home-work="true"] .work-grid .piece__shot,
body[data-home-work="true"] .work-grid .piece__shot--main,
body[data-home-work="true"] .work-grid .piece__media > .media-video {
  width: 100%;
  height: 100%;
  aspect-ratio: auto;
  object-fit: cover;
  display: block;
}

body[data-home-work="true"] .work-grid .piece__cap {
  row-gap: 0.15rem;
  padding-top: 0;
  column-gap: 0.85rem;
}

body[data-home-work="true"] .work-grid .piece__title {
  font-size: clamp(1.15rem, 1.45vw, 1.45rem);
  font-weight: 600;
  letter-spacing: -0.015em;
  line-height: 1.3;
  white-space: normal;
  overflow: visible;
  text-overflow: unset;
  padding: 0;
  margin: 0;
}

body[data-home-work="true"] .work-grid .piece__desc {
  font-size: clamp(1.05rem, 1.3vw, 1.3rem);
  font-weight: 500;
  line-height: 1.35;
  max-width: none;
  white-space: normal;
  overflow: visible;
  text-overflow: unset;
  padding: 0;
  margin: 0;
}

body[data-home-work="true"] .work-grid .piece__tag {
  padding: 0.18rem 0.55rem;
  border-radius: 999px;
  background: #e9e6e1;
  color: #6f6f6f;
  font-size: 0.8rem;
  letter-spacing: 0.01em;
  line-height: 1.15;
}

body[data-home-work="true"] .work-cats {
  display: block;
  width: 100%;
  margin: 0;
}

body[data-home-work="true"] .work-cats__rail {
  position: relative;
}

body[data-home-work="true"] .work-cats__dash {
  position: absolute;
  left: 0;
  top: 0;
  z-index: 5;
  width: 1.5em; /* ~3/4 of a double em-dash */
  height: 1.5px;
  margin: 0;
  padding: 0;
  border: 0;
  background: var(--near-black);
  pointer-events: none;
  will-change: transform;
  transition: transform 0.58s cubic-bezier(0.33, 1, 0.28, 1);
}

/* Intro: one long glide from logo → All */
body[data-home-work="true"] [data-work-filter].is-intro .work-cats__dash,
body[data-home-work="true"].is-intro-dash .work-cats__dash {
  transition: transform 1.2s cubic-bezier(0.45, 0.05, 0.25, 1);
}

body[data-home-work="true"] [data-work-filter].is-intro .work-cats__list button {
  transition:
    opacity 0.45s ease,
    padding-left 1.2s cubic-bezier(0.45, 0.05, 0.25, 1);
}

body[data-home-work="true"] .work-cats__list {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: clamp(0.12rem, 0.55vh, 0.3rem);
}

body[data-home-work="true"] .work-cats__list button {
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  font-family: var(--font), sans-serif;
  font-size: var(--work-intro-size);
  font-weight: 500;
  letter-spacing: -0.015em;
  line-height: 1.3;
  color: var(--near-black);
  text-align: left;
  white-space: nowrap;
  cursor: pointer;
  opacity: 0.34;
  padding-left: 0;
  transition:
    opacity 0.35s ease,
    padding-left 0.58s cubic-bezier(0.33, 1, 0.28, 1);
}

body[data-home-work="true"] .work-cats__list button.is-hot,
body[data-home-work="true"] .work-cats__list button.is-active.is-hot {
  opacity: 1;
  padding-left: var(--work-cats-dash);
}

body[data-home-work="true"] .work-cats__list button:hover,
body[data-home-work="true"] .work-cats__list button:focus-visible {
  opacity: 1;
}

@media (max-width: 900px) {
  body[data-home-work="true"] {
    --work-project-inset: 0px;
    --work-intro-w: 100%;
    --work-intro-size: clamp(1.15rem, 3.4vw, 1.45rem);
    --work-intro-pad: clamp(2.5rem, 6vh, 3.75rem);
  }

  body[data-home-work="true"] .work-grid .piece--solo,
  body[data-home-work="true"] .work-grid .piece--lead,
  body[data-home-work="true"] .work-grid .piece--follow {
    width: 100%;
    margin-left: 0;
    margin-right: 0;
  }

  body[data-home-work="true"] .work-grid .piece--mid {
    grid-column: 1 / -1;
  }

  body[data-home-work="true"] .page--home-work .work-intro {
    position: static;
    top: auto;
    width: 100%;
    max-width: none;
    margin-bottom: 0;
  }

  body[data-home-work="true"] .page--home-work .work-intro-band {
    display: block;
  }

  body[data-home-work="true"] .page--home-work .work-rail {
    position: relative;
    left: auto;
    top: auto;
    width: 100%;
    max-width: none;
    height: auto;
    margin: 0;
    pointer-events: auto;
  }

  /* Title + tags share one row; tags align to image right edge */
  body[data-home-work="true"] .work-grid .piece__cap {
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      "title tags"
      "desc  desc";
    row-gap: 0.28rem;
    column-gap: 0.5rem;
  }

  body[data-home-work="true"] .work-grid .piece__tags {
    justify-self: end;
    flex-wrap: nowrap;
    max-width: none;
    gap: 0.28rem;
  }

  body[data-home-work="true"] .work-grid .piece__title {
    font-size: clamp(1.02rem, 2.6vw, 1.22rem);
    line-height: 1.28;
    white-space: normal;
    overflow: visible;
    text-overflow: unset;
    padding: 0;
    margin: 0;
  }

  body[data-home-work="true"] .work-grid .piece__desc {
    font-size: clamp(0.9rem, 2.3vw, 1.02rem);
    line-height: 1.4;
    white-space: normal;
    overflow: visible;
    text-overflow: unset;
    padding: 0;
    margin: 0;
  }

  body[data-home-work="true"] .work-grid .piece__tag {
    padding: 0.2rem 0.5rem;
    font-size: 0.66rem;
    line-height: 1.25;
  }

  body[data-home-work="true"] .work-grid {
    row-gap: clamp(3.375rem, 7.875vh, 4.5rem);
  }

  body[data-home-work="true"] .work-cats-dock {
    max-width: min(18rem, calc(100vw - 2 * var(--nav-pad-x)));
  }
}

/* Category links + drawer footer only appear inside the mobile menu drawer */
.nav-drawer__cats,
.nav-drawer__foot {
  display: none;
}

/* Phone: Menu drawer, full-size type, calm content rhythm */
@media (max-width: 720px) {
  :root {
    --pad-x: 1.2rem;
    --nav-pad-x: var(--pad-x);
    --nav-drawer-type: clamp(1.65rem, 8vw, 2.15rem);
  }

  .site-nav {
    --chrome-inset-x: max(var(--pad-x), env(safe-area-inset-left, 0px));
    padding:
      max(0.85rem, env(safe-area-inset-top, 0px))
      max(var(--pad-x), env(safe-area-inset-right, 0px))
      0.7rem
      var(--chrome-inset-x);
    column-gap: 1rem;
    align-items: center;
  }

  .site-nav__brand,
  .nav-menu-toggle {
    margin: 0;
  }

  .site-nav__brand {
    display: flex;
    flex-direction: row;
    align-items: center;
    height: var(--nav-logo-h);
  }

  .site-nav--brand .logo {
    display: flex;
    align-items: center;
    height: var(--nav-logo-h);
    line-height: 0;
  }

  .site-nav > .nav-links:not(.nav-links--drawer) {
    display: none !important;
  }

  .nav-menu-toggle {
    display: inline-flex;
    position: relative;
    z-index: 120;
    margin-left: auto;
    flex-shrink: 0;
    align-items: center;
    justify-content: flex-end;
    height: var(--nav-logo-h);
    min-height: var(--nav-logo-h);
    min-width: 2.75rem;
    padding: 0;
    line-height: var(--nav-logo-h);
    color: var(--near-black);
  }

  .nav-menu-toggle::before {
    content: "";
    position: absolute;
    inset: -0.85rem -0.55rem;
  }

  /* will-change/transform on sticky nav traps fixed children — clear while open */
  .site-nav.is-menu-open {
    transform: none !important;
    will-change: auto;
  }

  /* Drawer lives on body (see initNavMenu) so it can cover the viewport */
  .nav-links--drawer {
    position: fixed;
    inset: 0;
    z-index: 110;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
    gap: 0.75rem;
    width: 100%;
    min-height: 100svh;
    margin: 0;
    padding:
      calc(var(--nav-h, 3.5rem) + 0.35rem)
      max(var(--pad-x), env(safe-area-inset-right, 0px))
      calc(1.75rem + env(safe-area-inset-bottom, 0px))
      max(var(--pad-x), env(safe-area-inset-left, 0px));
    background: #0c0b0a;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition:
      opacity 0.35s var(--ease),
      visibility 0.35s var(--ease);
  }

  .nav-links--drawer.is-open {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
  }

  .nav-links--drawer .nav-work {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.45rem;
    width: 100%;
    margin-top: auto;
  }

  .nav-links--drawer a {
    font-family: var(--font), sans-serif;
    font-size: var(--nav-drawer-type);
    font-weight: 500;
    line-height: 1.15;
    letter-spacing: -0.02em;
    color: #fff;
    opacity: 1;
  }

  .nav-links--drawer .nav-ink__base,
  .nav-links--drawer .nav-ink__flip {
    color: #fff;
  }

  .nav-links--drawer .nav-ink__flip {
    display: none;
  }

  .nav-links--drawer a.is-active {
    opacity: 1;
  }

  .nav-links--drawer a:hover {
    color: rgba(255, 255, 255, 0.72);
  }

  .nav-links--drawer .nav-drawer__cats {
    display: grid;
    grid-template-rows: 0fr;
    width: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    opacity: 0;
    overflow: hidden;
    pointer-events: none;
    transition:
      grid-template-rows 0.62s cubic-bezier(0.22, 1, 0.36, 1),
      opacity 0.48s cubic-bezier(0.22, 1, 0.36, 1),
      margin-top 0.62s cubic-bezier(0.22, 1, 0.36, 1);
  }

  .nav-links--drawer .nav-drawer__cats-inner {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.45rem;
    min-height: 0;
    overflow: hidden;
    padding-top: 0;
    transition: padding-top 0.62s cubic-bezier(0.22, 1, 0.36, 1);
  }

  .nav-links--drawer .nav-work.is-expanded .nav-drawer__cats {
    grid-template-rows: 1fr;
    opacity: 1;
    margin-top: 0.12rem;
    pointer-events: auto;
  }

  .nav-links--drawer .nav-work.is-expanded .nav-drawer__cats-inner {
    padding-top: 0.12rem;
  }

  .nav-links--drawer .nav-drawer__cats a {
    opacity: 0;
    transform: translateY(-0.55rem);
    transition:
      opacity 0.44s cubic-bezier(0.22, 1, 0.36, 1),
      transform 0.58s cubic-bezier(0.22, 1, 0.36, 1);
  }

  .nav-links--drawer .nav-work.is-expanded .nav-drawer__cats a {
    opacity: 0.72;
    transform: translateY(0);
  }

  .nav-links--drawer .nav-work.is-expanded .nav-drawer__cats a.is-active {
    opacity: 1;
  }

  .nav-links--drawer .nav-work.is-expanded .nav-drawer__cats a:nth-child(1) {
    transition-delay: 0.04s;
  }

  .nav-links--drawer .nav-work.is-expanded .nav-drawer__cats a:nth-child(2) {
    transition-delay: 0.07s;
  }

  .nav-links--drawer .nav-work.is-expanded .nav-drawer__cats a:nth-child(3) {
    transition-delay: 0.1s;
  }

  .nav-links--drawer .nav-work.is-expanded .nav-drawer__cats a:nth-child(4) {
    transition-delay: 0.13s;
  }

  .nav-links--drawer .nav-work.is-expanded .nav-drawer__cats a:nth-child(5) {
    transition-delay: 0.16s;
  }

  .nav-links--drawer .nav-work.is-expanded .nav-drawer__cats a:nth-child(6) {
    transition-delay: 0.19s;
  }

  .nav-links--drawer .nav-work:not(.is-expanded) .nav-drawer__cats a {
    transition-delay: 0s;
  }

  .work-nav-panel {
    display: none !important;
  }

  body.is-nav-menu-open {
    overflow: hidden;
  }

  /* Keep logo + × above the black sheet, same row, locked white on black */
  body.is-nav-menu-open .site-nav {
    z-index: 120;
    align-items: center;
  }

  body.is-nav-menu-open .site-nav__brand {
    display: flex;
    align-items: center;
  }

  body.is-nav-menu-open .site-nav--brand .logo {
    margin-top: 0 !important;
  }

  body.is-nav-menu-open .site-nav--brand .nav-ink-logo__base .logo__img,
  body.is-nav-menu-open .site-nav--brand .logo:not(.nav-ink-logo) .logo__img,
  body.is-nav-menu-open .site-nav--brand .logo__img {
    height: var(--nav-logo-h);
    width: auto;
    filter: brightness(0) invert(1) !important;
  }

  body.is-nav-menu-open .site-nav--brand .nav-ink-logo__base .logo__paint,
  body.is-nav-menu-open .site-nav--brand .logo[data-cat-brand] .logo__paint,
  body.is-nav-menu-open .site-nav--brand .logo:not(.nav-ink-logo) .logo__paint {
    background-color: transparent !important;
    background-image: linear-gradient(#fff, #fff) !important;
    filter: none !important;
  }

  body.is-nav-menu-open .site-nav--brand .logo[data-cat-brand] .logo__img,
  body.is-nav-menu-open .site-nav--brand .logo[data-cat-brand] .logo__paint {
    transform: none;
  }

  body.is-nav-menu-open .site-nav--brand .nav-menu-toggle {
    color: #fff;
    align-self: center;
  }

  body.is-nav-menu-open .site-nav--brand .nav-menu-toggle.is-close {
    display: inline-flex;
    align-items: flex-start;
    justify-content: center;
    height: var(--nav-logo-h);
    overflow: visible;
    font-size: var(--nav-drawer-type);
    line-height: 0.82;
    font-weight: 500;
    letter-spacing: -0.02em;
    transform: translateY(calc(var(--nav-logo-h) * -0.24));
  }

  .nav-drawer__foot {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: clamp(1.75rem, 5vh, 2.5rem);
    width: 100%;
    margin-top: auto;
    padding-top: clamp(1.75rem, 5vh, 2.5rem);
  }

  .nav-drawer__foot .site-foot__meta {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.7rem;
    width: 100%;
    text-align: right;
  }

  .nav-drawer__foot .site-foot__phone {
    font-family: var(--font), sans-serif;
    font-size: var(--nav-drawer-type);
    font-weight: 500;
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.02em;
    line-height: 1.15;
    color: #fff;
    text-decoration: none;
    transition: opacity 0.25s var(--ease);
  }

  .nav-drawer__foot .site-foot__phone:hover,
  .nav-drawer__foot .site-foot__phone:focus-visible {
    opacity: 0.72;
  }

  .nav-drawer__foot .site-foot__social {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 0.55rem 1.35rem;
    margin: 0;
    font-family: var(--font), sans-serif;
    font-size: var(--nav-drawer-type);
    font-weight: 500;
    letter-spacing: -0.02em;
    line-height: 1.15;
    color: rgba(255, 255, 255, 0.72);
  }

  .nav-drawer__foot .site-foot__social a {
    color: inherit;
    text-decoration: none;
    transition: opacity 0.25s var(--ease), color 0.25s var(--ease);
  }

  .nav-drawer__foot .site-foot__social a:hover,
  .nav-drawer__foot .site-foot__social a:focus-visible {
    color: #fff;
    opacity: 1;
  }

  .nav-drawer__foot .site-foot__lockup {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.1em;
    width: 100%;
  }

  .nav-drawer__foot .site-foot__year,
  .nav-drawer__foot .site-foot__tag {
    margin: 0;
    font-family: var(--font), sans-serif;
    font-weight: 500;
    letter-spacing: -0.02em;
    line-height: 1.15;
    text-transform: uppercase;
    text-align: right;
    white-space: normal;
    text-wrap: balance;
    color: #fff;
    font-size: var(--nav-drawer-type);
    width: max-content;
    max-width: 100%;
    align-self: flex-end;
  }

  .nav-drawer__foot .site-foot__year {
    display: inline-flex;
    flex-direction: row;
    align-items: center;
    justify-content: flex-end;
    gap: 0.22em;
    flex-wrap: wrap;
  }

  .nav-drawer__foot .site-foot__bar {
    display: block;
    flex: 0 0 auto;
    width: 0.55em;
    height: 0.11em;
    margin: 0;
    background: currentColor;
  }

  body.is-nav-menu-open .work-cats-dock {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
  }

  @media (prefers-reduced-motion: reduce) {
    .nav-links--drawer .nav-drawer__cats,
    .nav-links--drawer .nav-drawer__cats a {
      transition: none !important;
      transition-delay: 0s !important;
      transform: none !important;
    }

    .nav-links--drawer .nav-work.is-expanded .nav-drawer__cats a {
      opacity: 0.72;
    }

    .nav-links--drawer .nav-work.is-expanded .nav-drawer__cats a.is-active {
      opacity: 1;
    }
  }

  body[data-home-work="true"] {
    --work-intro-size: clamp(1.05rem, 4.35vw, 1.2rem);
    --work-intro-pad: clamp(1.75rem, 4.5vh, 2.5rem);
    --work-intro-copy: clamp(0.95rem, 3.4vw, 1.05rem);
  }

  .page {
    padding-top: calc(var(--nav-h) + 1.15rem);
    padding-right: max(var(--pad-x), env(safe-area-inset-right, 0px));
    padding-bottom: clamp(3rem, 8vh, 4.5rem);
    padding-left: max(var(--pad-x), env(safe-area-inset-left, 0px));
  }

  body[data-page="category"] .cat-head {
    padding-top: calc(var(--nav-h) + clamp(0.85rem, 2.5vh, 1.25rem));
    padding-bottom: clamp(2rem, 5vh, 3rem);
  }

  body[data-page="category"] .page--category {
    padding-bottom: clamp(3rem, 8vh, 4.5rem);
  }

  .page--archive {
    padding-top: calc(var(--nav-h) + 1rem);
    padding-bottom: clamp(3rem, 8vh, 4.5rem);
    min-height: 0;
  }

  .page--contact {
    padding-top: calc(var(--nav-h) + 1.15rem);
    padding-bottom: clamp(3rem, 8vh, 4.5rem);
  }

  body[data-home-work="true"] .page--home-work {
    padding-left: max(var(--pad-x), env(safe-area-inset-left, 0px));
    padding-right: max(var(--pad-x), env(safe-area-inset-right, 0px));
    padding-bottom: calc(3.5rem + env(safe-area-inset-bottom, 0px));
  }

  body[data-home-work="true"] .page--home-work .work-intro-band {
    --work-intro-band-pad: clamp(3.25rem, 8vh, 4.5rem);
    padding-top: var(--work-intro-band-pad);
    padding-bottom: var(--work-intro-band-pad);
  }

  body[data-home-work="true"] .work-grid {
    row-gap: 2.25rem;
  }

  body[data-home-work="true"] .work-grid .piece {
    gap: 0.5rem;
  }

  body[data-home-work="true"] .work-grid .piece--lg .piece__media,
  body[data-home-work="true"] .work-grid .piece--sm .piece__media,
  body[data-home-work="true"] .work-grid .piece--tri .piece__media,
  body[data-home-work="true"] .work-grid .piece--mid .piece__media,
  body[data-home-work="true"] .work-grid .piece--solo .piece__media,
  body[data-home-work="true"] .work-grid .piece--lead .piece__media,
  body[data-home-work="true"] .work-grid .piece--follow .piece__media {
    aspect-ratio: 3 / 2;
    border-radius: 0;
  }

  body[data-home-work="true"] .work-grid .piece__cap {
    row-gap: 0.32rem;
  }

  body[data-home-work="true"] .work-grid .piece__title {
    font-size: 0.98rem;
    line-height: 1.3;
  }

  body[data-home-work="true"] .work-grid .piece__desc {
    font-size: 0.88rem;
    line-height: 1.42;
    max-width: 34ch;
  }

  body[data-home-work="true"] .work-grid .piece__tag {
    padding: 0.18rem 0.48rem;
    font-size: 0.62rem;
  }

  body[data-home-work="true"] .work-cats-dock {
    bottom: calc(0.65rem + env(safe-area-inset-bottom, 0px));
  }

  body[data-home-work="true"] .work-cats.is-docked .work-cats__list button {
    font-size: var(--work-intro-size);
    line-height: 1.32;
  }

  body[data-home-work="true"] .work-cats.is-docked.is-dock-open .work-cats__list {
    gap: 0.3rem;
    padding: 0.35rem 0 0.55rem;
  }
}

@media (max-width: 390px) {
  :root {
    --pad-x: 1rem;
    --nav-pad-x: var(--pad-x);
  }

  body[data-home-work="true"] {
    --work-intro-size: 1.02rem;
    --work-intro-pad: 1.5rem;
  }

  body[data-home-work="true"] .page--home-work .work-intro-band {
    --work-intro-band-pad: 3.25rem;
    padding-top: var(--work-intro-band-pad);
    padding-bottom: var(--work-intro-band-pad);
  }

  body[data-home-work="true"] .work-grid .piece__title {
    font-size: 0.94rem;
  }

  body[data-home-work="true"] .work-grid .piece__desc {
    font-size: 0.84rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  body[data-home-work="true"] .work-cats__dash,
  body[data-home-work="true"] .work-cats__list,
  body[data-home-work="true"] .work-cats__list button,
  body[data-home-work="true"] .work-cats.is-docked .work-cats__list button,
  body[data-home-work="true"] .work-cats.is-docked .work-cats__list button::before,
  body[data-home-work="true"] .work-grid .piece,
  body[data-home-work="true"] .work-grid .piece__media,
  body[data-home-work="true"] .work-grid .piece__shot,
  body[data-home-work="true"] .work-intro,
  body[data-home-work="true"] .site-nav--brand .nav-links a {
    transition: none !important;
    transition-delay: 0s !important;
  }

  body[data-home-work="true"] .work-cats.is-docked:not(.is-dock-open) .work-cats__list button:not(.is-active) {
    filter: none;
    letter-spacing: -0.015em;
  }
}

/* Hover: keep focus piece sharp, mute the rest */
body[data-home-work="true"] .work-grid .piece {
  transition:
    opacity 0.75s var(--ease),
    filter 0.75s var(--ease);
}

body[data-home-work="true"] .work-grid.is-dimming .piece:not(.is-hot),
body[data-home-work="true"] .work-grid:has(.piece:hover) .piece:not(:hover) {
  opacity: 0.34;
  filter: grayscale(0.55);
}

body[data-home-work="true"] .work-grid .piece__media {
  transition: transform 0.85s var(--ease);
}

body[data-home-work="true"] .work-grid .piece__shot {
  transition: opacity 0.28s ease;
}

body[data-home-work="true"] .work-intro {
  transition: opacity 0.6s var(--ease);
}

.work-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: clamp(1.1rem, 2.2vw, 1.85rem);
  row-gap: clamp(3.375rem, 6.75vh, 4.875rem);
}

.work-grid .piece[hidden] {
  display: none;
}

.work-grid .piece {
  gap: 0.7rem;
}

.work-grid .piece__media {
  aspect-ratio: 16 / 10;
  background: transparent;
}

.work-grid .piece__media--duo {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: 0.2rem;
  align-items: end;
  aspect-ratio: auto;
  overflow: visible;
  background: transparent;
}

.work-grid .piece__shot--main,
.work-grid .piece__media--duo > .media-video.piece__shot--main {
  width: 100%;
  min-width: 0;
  aspect-ratio: 3 / 2;
  height: auto;
  object-fit: cover;
  display: block;
}

.work-grid .piece__shot--side {
  width: 100%;
  min-width: 0;
  height: auto;
  aspect-ratio: 5 / 4;
  object-fit: cover;
  display: block;
  align-self: end;
}

.work-grid .piece__cap {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas:
    "title tags"
    "desc  desc";
  column-gap: 0.5rem;
  row-gap: 0;
  align-items: start;
  max-width: none;
  width: 100%;
  padding-top: 0;
}

.work-grid .piece__title {
  grid-area: title;
  font-family: var(--font), sans-serif;
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: -0.015em;
  line-height: 1.3;
  min-width: 0;
  color: var(--near-black);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  /* Bottom padding = room for descenders inside overflow; margin pulls the next line back up */
  padding: 0 0 0.25em;
  margin: 0 0 -0.45em;
}

.work-grid .piece__title em {
  font-family: var(--font-light), sans-serif;
  font-style: italic;
  font-weight: 300;
}

.work-grid .piece__desc {
  grid-area: desc;
  font-size: 0.75rem;
  font-weight: 300;
  line-height: 1.3;
  color: var(--near-black);
  max-width: none;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  padding: 0 0 0.25em;
  margin: 0;
}

.work-grid .piece__tags {
  grid-area: tags;
  justify-self: end;
  align-self: start;
  display: flex;
  flex-wrap: nowrap;
  justify-content: flex-end;
  gap: 0.3rem;
  margin: 0;
  max-width: none;
}

.work-grid .piece__tag {
  display: inline-flex;
  align-items: center;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  border-bottom: none;
  background: #ebe8e3;
  color: #6b6b6b;
  font-size: 0.625rem;
  font-weight: 300;
  letter-spacing: 0.02em;
  line-height: 1.2;
  white-space: nowrap;
}

.work-grid .piece__tag:hover,
.work-grid .piece__tag:focus-visible {
  color: var(--near-black);
  background: #e0ddd7;
  border-bottom: none;
}

.work-head {
  margin-bottom: clamp(1.75rem, 4vh, 2.75rem);
  max-width: none;
}

.work-head__title {
  margin: 0 0 0.75rem;
  font-family: var(--font), sans-serif;
  font-size: clamp(1.5rem, 3.2vw, 2rem);
  font-weight: 600;
  letter-spacing: 0.02em;
  line-height: 1.15;
  color: var(--near-black);
}

.work-head__desc {
  margin: 0 0 1.5rem;
  font-family: var(--font-light), sans-serif;
  font-size: 0.9375rem;
  font-weight: 300;
  line-height: 1.55;
  color: var(--gray);
}

.work-cue {
  position: relative;
  display: block;
  max-width: 100%;
  margin: 0;
  padding: 0;
  overflow: visible;
}

.work-cue--row {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.65rem 1.15rem;
}

.work-cue__plain {
  font-family: var(--font), sans-serif;
  font-weight: 600;
  font-size: 0.8125rem;
  color: var(--near-black);
  letter-spacing: -0.01em;
}

.work-cue__filters {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.65rem 1.15rem;
}

.work-cue__filters button {
  font-family: var(--font-light), sans-serif;
  font-weight: 300;
  font-size: 0.8125rem;
  color: var(--gray);
  line-height: 1.2;
  padding: 0;
  border-bottom: 1px solid transparent;
  transition: color var(--t) ease, border-color var(--t) ease;
}

.work-cue__filters button:hover,
.work-cue__filters button:focus-visible {
  color: var(--near-black);
}

.work-cue__filters button.is-active {
  color: var(--near-black);
  font-weight: 600;
  border-bottom-color: transparent;
}

.work-cue__line {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.35rem 0.45rem;
  margin: 0;
  font-family: var(--font-light), sans-serif;
  font-size: 0.9375rem;
  font-weight: 300;
  letter-spacing: 0;
  line-height: 1.35;
  color: #9b9798;
}

.work-cue__select {
  position: relative;
  display: inline-flex;
  vertical-align: baseline;
  overflow: visible;
}

.work-cue__trigger {
  appearance: none;
  display: inline-flex;
  align-items: baseline;
  gap: 0.32rem;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  font-family: inherit;
  font-size: inherit;
  font-weight: 300;
  letter-spacing: inherit;
  line-height: inherit;
  color: var(--near-black);
  cursor: pointer;
  transition: opacity var(--t) ease;
}

.work-cue__trigger:hover { opacity: 0.7; }

.work-cue__trigger:focus-visible {
  outline: 1px solid var(--near-black);
  outline-offset: 3px;
}

.work-cue__chev {
  display: inline-block;
  width: 0.38rem;
  height: 0.38rem;
  border-right: 1px solid currentColor;
  border-bottom: 1px solid currentColor;
  transform: translateY(-0.12em) rotate(45deg);
  opacity: 0.4;
  transition: transform var(--t) var(--ease-out), opacity var(--t) ease;
}

.work-cue.is-open .work-cue__chev,
.work-cue__select.is-open .work-cue__chev {
  transform: translateY(0.05em) rotate(225deg);
  opacity: 0.7;
}

.work-cue__menu {
  position: absolute;
  left: 0;
  top: calc(100% + 0.35rem);
  z-index: 20;
  min-width: 11rem;
  padding: 0.4rem 0;
  background: var(--cream);
  border: 1px solid var(--light-gray);
}

.work-cue__menu[hidden] { display: none; }

.work-cue__menu button {
  display: block;
  width: 100%;
  text-align: left;
  padding: 0.4rem 0.85rem;
  font-size: 0.8125rem;
  font-weight: 300;
  color: var(--gray);
}

.work-cue__menu button:hover,
.work-cue__menu button:focus-visible {
  color: var(--near-black);
  background: var(--wash);
}

.work-cue__menu button.is-active {
  color: var(--near-black);
  font-weight: 600;
  background: var(--wash);
  outline: none;
}

.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;
}

.work-group {
  margin-bottom: clamp(2.5rem, 6vh, 4rem);
  scroll-margin-top: calc(var(--nav-h) + 1rem);
}

.work-group[hidden] {
  display: none;
}

.work-group__label {
  font-family: var(--font), sans-serif;
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--gray);
  margin: 0 0 1.15rem;
  padding-bottom: 0.65rem;
  border-bottom: 1px solid var(--light-gray);
}

.work-group .pieces--page {
  padding-top: 0;
  padding-bottom: 0;
}

.work-group.is-solo .work-group__label {
  display: none;
}

.piece[hidden] {
  display: none;
}

/* ---------------------------------------------------------------------------
   PROJECT interior
   --------------------------------------------------------------------------- */

.project {
  display: grid;
  grid-template-columns: minmax(15rem, 22rem) minmax(0, 1fr);
  gap: clamp(2rem, 4vw, 4rem);
  height: calc(100vh - var(--nav-h));
  margin-top: var(--nav-h);
  margin-left: 0;
  padding: 0 var(--pad-x);
  overflow: hidden;
}

.project__text,
.project__media {
  height: 100%;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scrollbar-color: var(--light-gray) transparent;
  padding: 1.5rem 0 4rem;
  -webkit-overflow-scrolling: touch;
}

.project--show {
  /* Title top-left, copy flush with image bottom, caption under frame */
  --show-max-h: calc(100svh - var(--nav-h) - 7.5rem);
  --show-rail-w: clamp(15rem, 18vw, 20rem);
  --show-gap-w: clamp(3.5rem, 6vw, 6.5rem);
  --show-frame-ideal: calc(var(--show-max-h) * 2400 / 2196);
  /* Cap frame so the whole stage fits the viewport; avoid % (cyclic on child) */
  --show-frame-w: min(
    var(--show-frame-ideal),
    calc(100vw - (2 * var(--pad-x)) - var(--show-rail-w) - var(--show-gap-w))
  );
  --show-stage-w: calc(var(--show-rail-w) + var(--show-gap-w) + var(--show-frame-w));
  display: block;
  height: auto;
  min-height: 0;
  margin-left: 0;
  padding: 1.5rem var(--pad-x) 2.75rem;
  overflow: visible;
}

.project--show .project__stage {
  display: grid;
  grid-template-columns: var(--show-rail-w) var(--show-frame-w);
  grid-template-rows: auto auto;
  grid-template-areas:
    "rail  frame"
    ".     meta";
  column-gap: var(--show-gap-w);
  row-gap: 0;
  align-items: stretch;
  width: var(--show-stage-w);
  max-width: 100%;
  margin-inline: auto;
  box-sizing: border-box;
}

.project--show .project__rail {
  grid-area: rail;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  gap: 0;
  min-width: 0;
  min-height: 0;
}

.project--show .show--aside {
  display: contents;
}

.project--show .project__head {
  position: relative;
  flex: none;
  max-width: none;
}

.project--show .project__tags {
  position: absolute;
  left: 0;
  bottom: calc(100% + 0.3rem);
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem 0.85rem;
  margin: 0;
  white-space: nowrap;
}

/* Hover-reveal on fine pointers; always visible on touch */
@media (hover: hover) and (pointer: fine) {
  .project--show .project__tags {
    opacity: 0;
    transition: opacity 0.2s ease;
  }

  .project--show .project__head:is(:hover, :focus-within) .project__tags {
    opacity: 1;
  }

  .project--show-static .project__tags,
  .project--show-static .project__head:is(:hover, :focus-within) .project__tags,
  .project--show-lg.project--show-stack .project__tags,
  .project--show-lg.project--show-stack .project__head:is(:hover, :focus-within) .project__tags {
    opacity: 1;
  }
}

.project--show .project__title {
  max-width: none;
  margin: 0;
  font-size: clamp(1.4rem, 2.15vw, 1.8rem);
  line-height: 1.05;
  white-space: nowrap;
  cursor: default;
}

.project--show .project__anchor {
  margin-top: auto;
  max-width: 34em;
  padding: 0;
  /* Optical: cancel half-leading under the last line so type sits on the image edge */
  margin-bottom: -0.28em;
}

.project--show .project__copy {
  max-width: none;
  margin: 0;
}

.project--show .project__lede {
  margin: 0 0 0.85rem;
  font-size: 0.75rem;
  line-height: 1.55;
}

.project--show .project__copy .body {
  margin: 0;
  padding: 0;
  font-size: 0.75rem;
  line-height: 1.55;
}

/* Larger type — shared project interior (AXIO, Arts Council, …) */
.project--show-lg {
  --show-rail-w: clamp(22rem, 34vw, 38rem);
}

.project--show-lg.project--show {
  padding-top: clamp(4.5rem, 12vh, 8rem);
}

.project--show-lg .project__head {
  container-type: normal;
  container-name: project-head;
}

.project--show-lg .project__title {
  white-space: nowrap;
  width: max-content;
  max-width: none;
  font-size: clamp(1.65rem, 2.85vw, 2.85rem);
  line-height: 0.95;
  letter-spacing: -0.05em;
  text-transform: none;
  overflow-wrap: normal;
  word-break: normal;
  hyphens: none;
}

.project--show-lg .project__sub {
  margin: 1.35rem 0 0;
  font-family: var(--font), sans-serif;
  font-weight: 400;
  font-size: 1rem;
  line-height: 1.55;
  color: var(--near-black);
  max-width: none;
  width: auto;
}

.project--show-lg .project__lede {
  font-size: 1.0625rem;
  line-height: 1.5;
  margin-bottom: 1.05rem;
}

.project--show-lg .project__copy .body {
  font-size: 1rem;
  line-height: 1.55;
}

.project--show-lg .project__tags .show__tag,
.project--show-lg .show__tag {
  font-size: 0.8125rem;
}

.project--show-lg .show__meta--aside .show__title {
  font-size: clamp(1.25rem, 2vw, 1.5rem);
}

.project--show-lg .show__meta--aside .show__desc {
  font-size: 1rem;
  min-height: calc(1.5em * 2);
}

/* Lead chrome — title / tag / sub above media (slideshow + static) */
.project--show-lg.project--show-stack:not(.project--show-poster) .project__head {
  grid-area: head;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas:
    "title tag"
    "sub   .";
  column-gap: clamp(1rem, 2vw, 1.75rem);
  row-gap: 0;
  align-self: start;
  width: 100%;
  max-width: none;
  margin-left: 0;
  margin-bottom: clamp(1.75rem, 4.5vh, 3rem);
  position: relative;
}

.project--show-lg.project--show-stack .project__title {
  grid-area: title;
  align-self: baseline;
}

.project--show-lg.project--show-stack .project__tags {
  grid-area: tag;
  position: static;
  left: auto;
  bottom: auto;
  justify-self: end;
  align-self: baseline;
  opacity: 1;
  margin: 0;
}

.project--show-lg.project--show-stack .project__tags .show__tag {
  display: inline-block;
  padding: 0.4rem 0.7rem;
  background: var(--wash);
  color: var(--gray);
  letter-spacing: 0.03em;
  border-bottom: none;
  line-height: 1.2;
}

.project--show-lg.project--show-stack .project__tags .show__tag:hover {
  color: var(--near-black);
  background: var(--light-gray);
  border-bottom: none;
}

.project--show-lg.project--show-stack .project__sub {
  grid-area: sub;
}

.project--show-lg.project--show-stack .project__rail {
  display: contents;
}

.project--show-lg.project--show-stack .project__anchor {
  grid-area: copy;
  align-self: start;
  margin-top: 0;
  margin-bottom: var(--show-stack-gap);
}

/* Stack stage — full content width, media stacked */
.project--show-lg.project--show-stack:not(.project--show-poster) .project__stage {
  width: 100%;
  max-width: 100%;
  margin-inline: 0;
}

/* Slideshow lead stage (AXIO) — title above frame */
.project--show-lg.project--show-stack:not(.project--show-static) .project__stage {
  grid-template-columns: 1fr;
  grid-template-areas:
    "head"
    "hero"
    "copy"
    "frame"
    "meta";
  grid-template-rows: auto auto auto auto auto;
}

.project--show-lg.project--show-stack:not(.project--show-poster) .show__frame,
.project--show-lg.project--show-stack:not(.project--show-poster) .show__meta--aside {
  grid-column: 1 / -1;
}

/* Stage heroes — full content width */
.project--show-lg.project--show-stack .project-spread--hero {
  grid-area: hero;
  grid-column: 1 / -1;
  width: 100%;
  max-width: none;
  margin-left: 0;
  min-width: 0;
  margin-top: 0;
  margin-right: 0;
}

.project--show-lg.project--show-stack:not(.project--show-static) .project-spread--hero {
  margin-bottom: var(--show-stack-gap);
}

.project--show-lg.project--show-stack .project-spread--hero img {
  width: 100%;
  height: auto;
  display: block;
}

/* Optional full-width stack below hero stage (see project-template.html) */
.project--show-stack .show__desc {
  display: none;
}

.project--show-stack {
  --show-stack-gap: clamp(1rem, 2.5vh, 1.75rem);
  /* Same measure for side-by-side gutters and stacked gutters */
  --show-cluster-gap: var(--show-stack-gap);
}

.project--show-stack .show__meta--aside {
  padding-top: 0.5rem;
}

.project--show-stack .show__meta--aside .show__desc {
  min-height: 0;
}

.project--show-stack .project__stack {
  margin-top: var(--show-stack-gap);
  gap: 0;
}

.project--show-stack .project-spread--film {
  margin-bottom: 0;
}

.project--show-stack .project-spread--pair {
  margin-top: var(--show-stack-gap);
}

.project--show-stack .project__stack > .project-spread--pair:first-child {
  margin-top: 0;
}

.project-spread__film {
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: #fff;
}

.project-spread__video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  background: #000;
}

.project--show-stack .project-spread__cap {
  padding-top: 0.5rem;
  padding-bottom: 0;
}

.project-spread__cap .show__title {
  margin: 0;
  font-family: var(--font), sans-serif;
  font-weight: 600;
  font-size: clamp(1.25rem, 2vw, 1.5rem);
  line-height: 1.2;
  color: var(--near-black);
}

/* Product half-width + text pinned right */
.project--show-stack .project-spread--pair {
  display: grid;
  grid-template-columns: minmax(0, 50%) 1fr minmax(0, 33.333%);
  align-items: end;
}

.project--show-stack .project-spread__product {
  grid-column: 1;
  width: 100%;
  min-width: 0;
  align-self: end;
  overflow: hidden;
}

.project--show-stack .project-spread__product img {
  width: 100%;
  height: auto;
  display: block;
}

.project--show-stack .project-spread__text {
  grid-column: 3;
  align-self: end;
  min-width: 0;
  width: 100%;
}

.project--show-stack .project-spread__text .show__title {
  margin: 0;
  font-family: var(--font), sans-serif;
  font-weight: 600;
  font-size: clamp(1.25rem, 2vw, 1.5rem);
  line-height: 1.2;
  color: var(--near-black);
}

.project--show-stack .project-spread__text .body {
  margin: 0;
  font-size: clamp(0.9375rem, 1.35vw, 1rem);
  line-height: 1.55;
  color: var(--near-black);
}

/* Two equal merch plates, caption under the right plate */
.project--show-stack .project-spread--pair-duo {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  column-gap: var(--show-cluster-gap, clamp(0.75rem, 2vh, 1.25rem));
  row-gap: clamp(1.35rem, 3.5vh, 2rem);
  align-items: start;
}

.project--show-stack .project-spread--pair-duo .project-spread__product:nth-child(1) {
  grid-column: 1;
  grid-row: 1;
}

.project--show-stack .project-spread--pair-duo .project-spread__product:nth-child(2) {
  grid-column: 2;
  grid-row: 1;
}

.project--show-stack .project-spread--pair-duo .project-spread__text {
  grid-column: 2;
  grid-row: 2;
  align-self: start;
  width: 100%;
}

.project--show-stack .project-spread--pair-duo .project-spread__product img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  object-position: center;
}

.project--show-stack .project-spread--system {
  margin-top: var(--show-stack-gap);
}

.project--show-stack .project-spread__system-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  column-gap: clamp(0.65rem, 1.2vw, 1rem);
  align-items: stretch;
  width: 100%;
}

.project--show-stack .project-spread__system-cell {
  display: flex;
  align-items: flex-end;
  justify-content: center;
  min-height: clamp(9rem, 20vw, 15rem);
  height: clamp(9rem, 20vw, 15rem);
  overflow: hidden;
}

.project--show-stack .project-spread__system-cell:first-child {
  background: #1c1a1b;
}

.project--show-stack .project-spread__system-cell img {
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  display: block;
  object-fit: contain;
  object-position: center bottom;
}

.project__stack {
  width: 100%;
  display: flex;
  flex-direction: column;
}

.project-spread--duo {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: clamp(1rem, 2vw, 1.75rem);
  row-gap: 0;
}

.project-spread__cell {
  margin: 0;
}

.project-spread__cap {
  padding-top: 0.85rem;
}

.project-spread__frame {
  width: 100%;
  aspect-ratio: 2400 / 2196;
  background: #1c1a1b;
  overflow: hidden;
}

.project-spread__frame img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
  display: block;
}

.project--show .show__frame {
  grid-area: frame;
  width: 100%;
  height: auto;
  aspect-ratio: 2400 / 2196;
  justify-self: stretch;
  /* Same charcoal field as the old home “What we cut” band */
  background: #1c1a1b;
}

/* Single still in the lead frame — no slideshow, no letterbox field */
.project--show-flush .project__still {
  display: contents;
}

.project--show-flush .project__still-media {
  grid-area: frame;
  width: 100%;
  height: auto;
  aspect-ratio: 2400 / 2196;
  justify-self: stretch;
  background: #1c1a1b;
  overflow: hidden;
}

.project--show-flush .project__still-media img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
  display: block;
}

.project--show-flush .project__still-cap {
  grid-area: meta;
  padding-top: 0.5rem;
  margin: 0;
}

.project--show-flush .project__still-cap .show__title {
  margin: 0;
  font-family: var(--font), sans-serif;
  font-weight: 600;
  font-size: clamp(1.25rem, 2vw, 1.5rem);
  line-height: 1.2;
  color: var(--near-black);
}

.project--show-stack .project-spread--aligned {
  width: 100%;
  margin: 0;
}

.project--show-stack .project__stack > .project-spread--aligned + .project-spread,
.project--show-stack .project__stack > .project-spread + .project-spread--aligned {
  margin-top: var(--show-stack-gap);
}

.project--show-stack .project-spread--aligned img,
.project--show-stack .project-spread--aligned .project-spread__video {
  width: 100%;
  height: auto;
  display: block;
  vertical-align: bottom;
  background: transparent;
}

.project--show-stack .project-spread--pair-end .project-spread__product img {
  width: 100%;
  height: auto;
  display: block;
  background: transparent;
}

.project--show-stack .project-spread--duo {
  margin-top: var(--show-stack-gap);
  align-items: start;
  column-gap: var(--show-cluster-gap, clamp(0.75rem, 2vh, 1.25rem));
}

.project--show-stack .project-spread--duo .project-spread__cell {
  margin: 0;
  min-width: 0;
}

.project--show-stack .project-spread--duo .project-spread__cell img {
  width: 100%;
  height: auto;
  display: block;
  vertical-align: bottom;
}

/* Poster-first interiors — full-bleed hero, captions in stack */
.project--show-lg.project--show-stack.project--show-poster .project__head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas:
    "title tag"
    "sub   .";
  grid-area: auto;
  column-gap: clamp(1rem, 2vw, 1.75rem);
  row-gap: 0;
  width: 100%;
  max-width: none;
  margin-bottom: clamp(1.75rem, 4.5vh, 3rem);
  position: relative;
}

.project--show-lg.project--show-stack.project--show-poster .project__title {
  grid-area: title;
  align-self: baseline;
}

.project--show-lg.project--show-stack.project--show-poster .project__tags {
  grid-area: tag;
  position: static;
  left: auto;
  bottom: auto;
  justify-self: end;
  align-self: baseline;
  opacity: 1;
  margin: 0;
}

.project--show-lg.project--show-stack.project--show-poster .project__tags .show__tag {
  display: inline-block;
  padding: 0.4rem 0.7rem;
  background: var(--wash);
  color: var(--gray);
  letter-spacing: 0.03em;
  border-bottom: none;
  line-height: 1.2;
}

.project--show-lg.project--show-stack.project--show-poster .project__tags .show__tag:hover {
  color: var(--near-black);
  background: var(--light-gray);
  border-bottom: none;
}

.project--show-lg.project--show-stack.project--show-poster .project__sub {
  grid-area: sub;
  margin-top: 1.35rem;
  max-width: 50%;
}

.project--show-poster .project__copy--head {
  grid-area: copy;
  margin-top: 1rem;
  max-width: 34em;
}

.project--show-poster .project__copy--head .body {
  margin: 0;
  font-family: var(--font-light), sans-serif;
  font-weight: 300;
  font-size: 1rem;
  line-height: 1.55;
  color: var(--near-black);
}

.project--show-poster .project-spread--square {
  width: 100%;
  max-width: min(36rem, 100%);
  margin: 0;
}

.project--show-poster .project-spread--square img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  object-position: left center;
  display: block;
  vertical-align: bottom;
  background: transparent;
}

.project--show-poster .project-spread--bleed {
  width: 100vw;
  max-width: 100vw;
  margin-left: calc(50% - 50vw);
  overflow: hidden;
  background: transparent;
}

.project--show-poster .project-spread--bleed .project-spread__video {
  width: 100%;
  height: auto;
  display: block;
  vertical-align: bottom;
  background: transparent;
}

.project--show-poster .project-spread--split-23 {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
  column-gap: var(--show-cluster-gap, clamp(0.75rem, 2vh, 1.25rem));
  align-items: start;
}

.project--show-poster .project-spread--split-23 .project-spread__cell {
  margin: 0;
  min-width: 0;
}

.project--show-poster .project-spread--split-23 .project-spread__cell img {
  width: 100%;
  height: auto;
  display: block;
  vertical-align: bottom;
  background: transparent;
}

/* Side-by-side images sized to share one height (set --eq-h-a / --eq-h-b to aspect widths) */
.project--show-poster .project-spread--equal-h {
  display: grid;
  grid-template-columns: minmax(0, var(--eq-h-a, 1fr)) minmax(0, var(--eq-h-b, 1fr));
  column-gap: var(--show-cluster-gap, clamp(0.75rem, 2vh, 1.25rem));
  align-items: start;
}

.project--show-poster .project-spread--equal-h .project-spread__cell {
  margin: 0;
  min-width: 0;
}

.project--show-poster .project-spread--equal-h .project-spread__cell img {
  width: 100%;
  height: auto;
  display: block;
  vertical-align: bottom;
  background: transparent;
}

.project--show-poster .project-spread--flush .project-spread__cell img,
.project--show-poster .project-spread--flush .project-spread__cell .project-spread__video {
  width: 100%;
  height: auto;
  display: block;
  vertical-align: bottom;
  background: transparent;
  object-fit: contain;
  object-position: center;
}

.project--show-poster .project-spread__cell--inset {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: clamp(1rem, 3vw, 2rem);
  box-sizing: border-box;
  background: transparent;
}

.project--show-poster .project-spread__cell--inset .project-spread__video {
  width: 86%;
  max-width: none;
  height: auto;
  display: block;
  background: transparent;
}

.project--show-poster .project-spread--duo .project-spread__cap--row {
  grid-column: 2;
  padding-top: 0.5rem;
}

.project--show-poster .project-spread--duo .project-spread__cap--row.show__full,
.project--show-poster .project-spread--duo > .project-spread__cap--row:last-child {
  grid-column: 1 / -1;
}

.project--show-poster .project-spread--duo .project-spread__cap--row .show__title {
  margin: 0;
  font-family: var(--font), sans-serif;
  font-weight: 600;
  font-size: clamp(1.25rem, 2vw, 1.5rem);
  line-height: 1.2;
  color: var(--near-black);
  max-width: none;
}

/* Caption left, two stacked images right — caption flush with first image bottom */
.project--show-poster .project-spread--stack-end {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  grid-template-rows: auto auto;
  column-gap: var(--show-cluster-gap, clamp(0.75rem, 2vh, 1.25rem));
  row-gap: var(--show-cluster-gap, clamp(0.75rem, 2vh, 1.25rem));
  align-items: start;
  margin-top: var(--show-stack-gap);
}

.project--show-poster .project-spread--stack-end .project-spread__text {
  grid-column: 1;
  grid-row: 1;
  align-self: end;
  min-width: 0;
  padding: 0;
}

.project--show-poster .project-spread--stack-end .project-spread__text .show__title {
  margin: 0;
  font-family: var(--font), sans-serif;
  font-weight: 600;
  font-size: clamp(1.25rem, 2vw, 1.5rem);
  line-height: 1.2;
  color: var(--near-black);
  max-width: none;
}

.project--show-poster .project-spread--stack-end .project-spread__cell--top {
  grid-column: 2;
  grid-row: 1;
  margin: 0;
  min-width: 0;
}

.project--show-poster .project-spread--stack-end .project-spread__cell--bot {
  grid-column: 2;
  grid-row: 2;
  margin: 0;
  min-width: 0;
}

.project--show-poster .project-spread--stack-end .project-spread__cell img {
  width: 100%;
  height: auto;
  display: block;
  vertical-align: bottom;
  background: transparent;
}

.project--show-poster .project-spread--third-end {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
  column-gap: var(--show-cluster-gap, clamp(0.75rem, 2vh, 1.25rem));
  align-items: start;
  margin-top: var(--show-stack-gap);
}

.project--show-poster .project-spread--third-end .project-spread__product {
  grid-column: 2;
  width: 100%;
  min-width: 0;
}

.project--show-poster .project-spread--third-end .project-spread__product img {
  width: 100%;
  height: auto;
  display: block;
  vertical-align: bottom;
  background: transparent;
}

.project--show-poster .project-spread--half-end {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  column-gap: var(--show-cluster-gap, clamp(0.75rem, 2vh, 1.25rem));
  align-items: end;
  margin-top: var(--show-stack-gap);
}

.project--show-poster .project-spread--half-end .project-spread__text {
  grid-column: 1;
  align-self: end;
  min-width: 0;
}

.project--show-poster .project-spread--half-end .project-spread__text .show__title {
  margin: 0;
  font-family: var(--font), sans-serif;
  font-weight: 600;
  font-size: clamp(1.25rem, 2vw, 1.5rem);
  line-height: 1.2;
  color: var(--near-black);
  max-width: none;
}

.project--show-poster .project-spread--half-end .project-spread__product {
  grid-column: 2;
  width: 100%;
  min-width: 0;
}

.project--show-poster .project-spread--half-end .project-spread__product img {
  width: 100%;
  height: auto;
  display: block;
  vertical-align: bottom;
  background: transparent;
}

/* Half-width image left, caption right flush to image bottom */
.project--show-poster .project-spread--half-start {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  column-gap: var(--show-cluster-gap, clamp(0.75rem, 2vh, 1.25rem));
  align-items: end;
  margin-top: var(--show-stack-gap);
}

.project--show-poster .project-spread--half-start .project-spread__product {
  grid-column: 1;
  width: 100%;
  min-width: 0;
}

.project--show-poster .project-spread--half-start .project-spread__product img {
  width: 100%;
  height: auto;
  display: block;
  vertical-align: bottom;
  background: transparent;
}

.project--show-poster .project-spread--half-start .project-spread__text {
  grid-column: 2;
  align-self: end;
  min-width: 0;
}

.project--show-poster .project-spread--half-start .project-spread__text .show__title {
  margin: 0;
  font-family: var(--font), sans-serif;
  font-weight: 600;
  font-size: clamp(1.25rem, 2vw, 1.5rem);
  line-height: 1.2;
  color: var(--near-black);
  max-width: none;
}

.project--show-poster .project-spread--three-quarter {
  width: 75%;
  max-width: 75%;
  margin-top: var(--show-stack-gap);
  margin-right: auto;
  margin-left: 0;
}

.project--show-poster .project-spread--three-quarter img {
  width: 100%;
  height: auto;
  display: block;
  vertical-align: bottom;
  background: transparent;
}

.project--show-poster .project-spread--three-quarter-text {
  display: grid;
  grid-template-columns: 75% minmax(0, 1fr);
  column-gap: var(--show-cluster-gap, clamp(0.75rem, 2vh, 1.25rem));
  align-items: end;
  margin-top: var(--show-stack-gap);
  width: 100%;
}

.project--show-poster .project-spread--three-quarter-text .project-spread__product {
  min-width: 0;
  width: 100%;
}

.project--show-poster .project-spread--three-quarter-text .project-spread__product img {
  width: 100%;
  height: auto;
  display: block;
  vertical-align: bottom;
  background: transparent;
}

.project--show-poster .project-spread--three-quarter-text .project-spread__text {
  min-width: 0;
  align-self: end;
}

.project--show-poster .project-spread--three-quarter-text .project-spread__text .show__title {
  margin: 0;
  font-family: var(--font), sans-serif;
  font-weight: 600;
  font-size: clamp(1.05rem, 1.6vw, 1.35rem);
  line-height: 1.25;
  color: var(--near-black);
}

.project--show-poster .project-spread--cap-above {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin-top: var(--show-stack-gap);
}

.project--show-poster .project-spread--cap-above .project-spread__cap {
  padding-top: 0;
  padding-bottom: 0.5rem;
  order: -1;
}

.project--show-poster .project-spread--cap-above img {
  width: 100%;
  height: auto;
  display: block;
  vertical-align: bottom;
  background: transparent;
}

.project--show-poster .project-spread--square + .project-spread,
.project--show-poster .project-spread--bleed + .project-spread,
.project--show-poster .project-spread--split-23 + .project-spread,
.project--show-poster .project-spread--equal-h + .project-spread,
.project--show-poster .project-spread--flush + .project-spread {
  margin-top: var(--show-stack-gap);
}

.project--show-poster {
  --show-stack-gap: clamp(1rem, 2.5vh, 1.75rem);
  --show-cluster-gap: var(--show-stack-gap);
}

.project--show-poster .project__stack {
  margin-top: 0;
  width: 100%;
}

/* ---------------------------------------------------------------------------
   Project hero-bleed — full-bleed hero, light nav, sticky intro (Art & Currency)
   --------------------------------------------------------------------------- */

.project.project--show.project--hero-bleed,
.project--hero-bleed.project--show,
.project--show-lg.project--show.project--hero-bleed {
  margin-top: 0 !important;
  padding-top: 0 !important;
  padding-bottom: clamp(3rem, 8vh, 5rem);
  overflow: visible;
  max-width: none;
  width: 100%;
  /* Keep side padding on the body only — hero must reach the viewport edges */
  padding-left: 0 !important;
  padding-right: 0 !important;
}

.project--hero-bleed .project-hero[data-project-hero],
.project--hero-bleed .project-hero {
  position: relative;
  left: 50%;
  right: auto;
  width: 100vw !important;
  max-width: 100vw !important;
  margin-left: -50vw !important;
  margin-right: 0;
  height: 100svh !important;
  max-height: none !important;
  overflow: hidden;
  background: #1a1816;
}

.project--hero-bleed .project-hero img,
.project--hero-bleed .project-hero video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  display: block;
}

.project--hero-bleed .project-hero-bleed__body {
  padding-top: clamp(1.75rem, 4vh, 2.75rem);
  padding-left: var(--pad-x);
  padding-right: var(--pad-x);
}

/* Pin: sticky title+copy left until first image ends; large cover right */
.project--hero-bleed .project-hero-bleed__pin {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-areas:
    "copy"
    "img";
  gap: var(--show-stack-gap, clamp(1rem, 2.5vh, 1.75rem));
  margin-bottom: var(--show-stack-gap, clamp(1rem, 2.5vh, 1.75rem));
  align-items: start;
  position: relative;
}

@media (min-width: 900px) {
  .project--hero-bleed .project-hero-bleed__pin {
    grid-template-columns: minmax(16rem, 0.4fr) minmax(0, 0.6fr);
    grid-template-areas: "copy img";
    column-gap: var(--show-stack-gap, clamp(1rem, 2.5vh, 1.75rem));
    row-gap: 0;
  }
}

.project--hero-bleed .project-hero-bleed__intro {
  grid-area: copy;
  position: sticky;
  top: 0.85rem;
  z-index: 2;
  align-self: start;
  max-width: 36rem;
}

.project--hero-bleed .project__title,
.project--hero-bleed.project--show-lg.project--show-stack.project--show-poster .project__title {
  grid-area: auto;
  align-self: auto;
  width: auto;
  max-width: none;
  white-space: normal;
  margin: 0 0 1rem;
}

.project--hero-bleed .project__sub,
.project--hero-bleed.project--show-lg.project--show-stack.project--show-poster .project__sub {
  grid-area: auto;
  margin: 0;
  max-width: none;
  width: 100%;
}

/* Description copy matches caption / show__title treatment */
.project--hero-bleed .project__sub,
.project--hero-bleed .project-hero-bleed__lede,
.project--hero-bleed .project-spread__text .body,
.project--hero-bleed .project-spread__cap .show__title {
  margin: 0;
  font-family: var(--font), sans-serif;
  font-weight: 600;
  font-size: clamp(1.25rem, 2vw, 1.5rem);
  line-height: 1.35;
  letter-spacing: normal;
  color: var(--near-black);
}

.project--hero-bleed .project-hero-bleed__lede {
  margin-top: 1.35rem;
}

.project--hero-bleed .project-delivery {
  margin-top: 1.75rem;
  padding-top: 1.35rem;
  border-top: 1px solid color-mix(in srgb, var(--near-black) 12%, transparent);
}

.project-delivery__label {
  margin: 0 0 0.7rem;
  font-family: var(--font-light), sans-serif;
  font-size: 0.6875rem;
  font-weight: 300;
  letter-spacing: 0.12em;
  line-height: 1.2;
  text-transform: uppercase;
  color: var(--gray);
}

.project-delivery__items {
  margin: 0;
  max-width: 22rem;
  font-family: var(--font-light), sans-serif;
  font-weight: 300;
  font-size: clamp(1.05rem, 1.35vw, 1.2rem);
  line-height: 1.55;
  letter-spacing: 0.01em;
  color: var(--near-black);
}

.project-delivery__items span:not(:last-child)::after {
  content: "·";
  margin: 0 0.55em;
  color: color-mix(in srgb, var(--near-black) 32%, transparent);
  font-weight: 300;
}

/* ---------------------------------------------------------------------------
   Filmstrip project rail (Art & Currency prototype: data-project-rail="dock")
   Full-bleed image stack + sticky lower-left title dock + slide-up details
--------------------------------------------------------------------------- */
.project--film {
  --film-gap: clamp(0.5rem, 1.15vh, 0.8rem);
  --film-dock-pad: clamp(1.15rem, 3vh, 1.85rem);
  --show-stack-gap: var(--film-gap);
  --show-cluster-gap: var(--film-gap);
}

.project--film .project-film {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: minmax(0, auto);
}

.project--film .project-film__media,
.project--film .project-film__rail {
  grid-column: 1;
  grid-row: 1;
}

.project--film .project-film__media {
  min-width: 0;
}

.project--film .project-film__rail {
  z-index: 6;
  align-self: stretch;
  pointer-events: none;
  padding: 0 var(--pad-x);
  box-sizing: border-box;
}

.project--film .project-dock,
.project-dock--side {
  position: fixed;
  left: var(--pad-x);
  bottom: var(--film-dock-pad);
  top: auto;
  z-index: 6;
  margin-bottom: 0;
  pointer-events: auto;
  max-width: min(26rem, calc(100vw - (var(--pad-x) * 2)));
  width: max-content;
  padding: 0;
  background: transparent;
  color: var(--white);
  box-shadow: none;
  opacity: 1;
  will-change: opacity;
}

.project--film .project-dock.is-dissolved,
.project-dock--side.is-dissolved {
  pointer-events: none;
}

.project--film .project-dock.is-riding {
  position: fixed;
  top: auto;
  left: var(--pad-x);
  z-index: 90;
  margin-bottom: 0;
  opacity: 1;
  pointer-events: auto;
  transition: bottom 0.55s cubic-bezier(0.22, 1, 0.36, 1);
}

.project-dock--side.is-riding {
  position: fixed;
  top: auto;
  left: var(--pad-x);
  z-index: 90;
  margin-bottom: 0;
  opacity: 1;
  pointer-events: auto;
  /* bottom is clamped every scroll frame — no transition */
  transition: none;
}

.project--film .project-dock__details,
.project-dock--side .project-dock__details {
  appearance: none;
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
  margin: 0;
  padding: 0.7rem 0.35rem 0.7rem 0;
  border: 0;
  background: none;
  cursor: pointer;
  font-family: var(--font), sans-serif;
  font-size: var(--nav-brand-type);
  font-weight: 500;
  letter-spacing: normal;
  line-height: 1;
  color: var(--near-black);
  transition: opacity 0.45s var(--ease), color 0.45s var(--ease);
  min-height: 44px;
  box-sizing: border-box;
}

.project--film .project-dock__details:hover,
.project--film .project-dock__details:focus-visible,
.project-dock--side .project-dock__details:hover,
.project-dock--side .project-dock__details:focus-visible {
  opacity: 0.55;
  outline: none;
}

.project--film .project-dock__mark,
.project-dock--side .project-dock__mark {
  position: relative;
  display: block;
  width: 1.15em;
  height: 1.5px;
  flex-shrink: 0;
  background: currentColor;
  transform-origin: center;
  transition:
    transform 0.55s cubic-bezier(0.22, 1, 0.36, 1),
    height 0.55s cubic-bezier(0.22, 1, 0.36, 1),
    width 0.55s cubic-bezier(0.22, 1, 0.36, 1),
    background-color 0.45s var(--ease);
}

.project--film .project-dock__mark::before,
.project-dock--side .project-dock__mark::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background: currentColor;
  transform: rotate(0deg);
  opacity: 0;
  transition:
    transform 0.55s cubic-bezier(0.22, 1, 0.36, 1),
    opacity 0.35s var(--ease);
}

body.is-project-details-open .project--film .project-dock__mark,
body.is-project-details-open .project-dock--side .project-dock__mark {
  transform: rotate(45deg);
}

body.is-project-details-open .project--film .project-dock__mark::before,
body.is-project-details-open .project-dock--side .project-dock__mark::before {
  opacity: 1;
  transform: rotate(90deg);
}

body.is-project-hero-light .project--film .project-dock__details,
body.is-project-hero-light .project-dock--side .project-dock__details,
body.is-project-details-open:not([data-project-details-mode="side"]) .project--film .project-dock__details,
body.is-project-details-open:not([data-project-details-mode="side"]) .project-dock--side .project-dock__details {
  color: #fff;
}

.project--film .project-hero-bleed__body,
.project--film .project-hero-bleed__pin,
.project--film .project-hero-bleed__intro {
  display: contents;
}

.project--film .project-film__media .project__stack {
  display: flex;
  flex-direction: column;
  gap: var(--film-gap);
  padding: var(--film-gap) 0 0;
  box-sizing: border-box;
}

.project--film.project--hero-bleed {
  padding-bottom: clamp(5rem, 12vh, 9rem) !important;
}

.project--film.project--hero-bleed .project-film__media .project__stack {
  margin-top: 0;
}

.project--film.project--show-stack .project__stack > .project-spread,
.project--film.project--show-stack .project__stack > .project-spread--duo,
.project--film.project--show-stack .project__stack > .project-spread--aligned,
.project--film.project--show-stack .project__stack > .project-spread--half-end,
.project--film.project--show-stack .project__stack > .project-spread--half-start,
.project--film.project--show-stack .project__stack > .project-spread--film,
.project--film.project--show-stack .project__stack > .project-spread--pair,
.project--film.project--show-stack .project__stack > .project-spread--pair-end {
  margin-top: 0;
}

.project--film.project--show-stack .project-spread--duo {
  column-gap: var(--film-gap);
}

/* Slide-up details sheet */
.project-details {
  position: fixed;
  inset: 0;
  z-index: 80;
  display: flex;
  align-items: flex-end;
  justify-content: stretch;
  background: rgba(35, 31, 32, 0.28);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.35s var(--ease);
}

.project-details[hidden] {
  display: none;
}

.project-details.is-open {
  opacity: 1;
  pointer-events: auto;
}

.project-details__sheet {
  --details-band: clamp(1.35rem, 3.2vh, 1.85rem);
  position: relative;
  width: 100%;
  max-height: min(78vh, 46rem);
  overflow: auto;
  background: var(--white);
  color: var(--near-black);
  padding: var(--details-band) var(--pad-x) clamp(2.25rem, 5.5vh, 3.25rem);
  box-sizing: border-box;
  transform: translateY(100%);
  transition: transform 0.55s cubic-bezier(0.22, 1, 0.36, 1);
}

.project-details.is-open .project-details__sheet {
  transform: translateY(0);
}

.project-details__title,
.project-details__delivery-label {
  margin: 0;
  font-family: var(--font), sans-serif;
  font-weight: 600;
  font-size: clamp(1.2rem, 1.7vw, 1.45rem);
  line-height: 1.15;
  letter-spacing: -0.025em;
  color: var(--near-black);
}

.project-details__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  row-gap: 0;
  column-gap: 0;
  align-items: start;
}

.project-details__rule {
  width: 100%;
  height: 1px;
  margin: calc(var(--details-band) / 2) 0;
  padding: 0;
  border: 0;
  background: var(--near-black);
  transform-origin: left center;
}

.project-details__story p {
  margin: 0 0 0.85em;
  font-family: var(--font-light), sans-serif;
  font-weight: 300;
  font-size: clamp(1.05rem, 1.3vw, 1.175rem);
  line-height: 1.5;
  letter-spacing: 0.005em;
  text-align: justify;
  hyphens: auto;
  color: var(--near-black);
}

.project-details__story p:last-child {
  margin-bottom: 0;
}

.project-details__delivery-list {
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
}

.project-details__delivery-list li {
  margin: 0;
  font-family: var(--font-light), sans-serif;
  font-weight: 300;
  font-size: clamp(1.05rem, 1.3vw, 1.175rem);
  line-height: 1.5;
  letter-spacing: 0.005em;
  color: var(--near-black);
}

/* Staggered rise + fade on open */
.project-details__title,
.project-details__delivery-label,
.project-details__rule,
.project-details__story,
.project-details__delivery-list {
  opacity: 0;
  transform: translate3d(0, 0.7rem, 0);
  filter: blur(4px);
  transition:
    opacity 0.55s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.55s cubic-bezier(0.22, 1, 0.36, 1),
    filter 0.55s cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: 0s;
}

.project-details.is-open .project-details__title {
  opacity: 1;
  transform: none;
  filter: none;
  transition-delay: 0.16s;
}

.project-details.is-open .project-details__delivery-label {
  opacity: 1;
  transform: none;
  filter: none;
  transition-delay: 0.2s;
}

.project-details.is-open .project-details__rule {
  opacity: 1;
  transform: none;
  filter: none;
  transition-delay: 0.22s;
}

.project-details.is-open .project-details__story {
  opacity: 1;
  transform: none;
  filter: none;
  transition-delay: 0.26s;
}

.project-details.is-open .project-details__delivery-list {
  opacity: 1;
  transform: none;
  filter: none;
  transition-delay: 0.3s;
}

@media (min-width: 900px) {
  .project-details__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    grid-template-areas:
      "title . delivery-label"
      "rule rule rule"
      "story story delivery-list";
    column-gap: clamp(1.75rem, 3.5vw, 3rem);
    row-gap: 0;
    align-items: start;
  }

  .project-details__title {
    grid-area: title;
    align-self: end;
    padding-right: 0;
  }

  .project-details__delivery-label {
    grid-area: delivery-label;
    align-self: end;
  }

  .project-details__rule {
    grid-area: rule;
  }

  .project-details__story {
    grid-area: story;
    align-self: stretch;
    height: 0;
    min-height: 100%;
    column-count: 2;
    column-gap: clamp(1.75rem, 3.5vw, 3rem);
    column-fill: auto;
  }

  .project-details__delivery-list {
    grid-area: delivery-list;
    align-self: start;
  }
}

@media (prefers-reduced-motion: reduce) {
  .project-details__sheet,
  .project--film .project-dock.is-riding,
  .project--film .project-dock__mark,
  .project--film .project-dock__mark::before {
    transition: none;
  }

  .project-details__title,
  .project-details__delivery-label,
  .project-details__rule,
  .project-details__story,
  .project-details__delivery-list {
    opacity: 1;
    transform: none;
    filter: none;
    transition: none;
  }
}

body.is-project-details-open {
  overflow: hidden;
}

/* ---------------------------------------------------------------------------
   Side details (Art & Currency): full-height left panel that pushes
   nav + film (hero included). Dock stays left-aligned. Content uses the
   same staggered rise/fade as the bottom sheet.
--------------------------------------------------------------------------- */
@property --side-details-w {
  syntax: "<length>";
  inherits: true;
  initial-value: 0px;
}

body[data-project-details-mode="side"] {
  --side-details-w: 0px;
  --side-details-span: 100svh;
  --side-details-dur: 0.75s;
  --side-details-ease: cubic-bezier(0.22, 1, 0.36, 1);
  position: relative;
  transition: --side-details-w var(--side-details-dur) var(--side-details-ease);
}

body.is-project-details-open[data-project-details-mode="side"] {
  --side-details-w: 50vw;
  overflow-x: hidden;
  overflow-y: auto;
}

body[data-project-details-mode="side"] .project-details {
  position: absolute;
  top: 0;
  left: 0;
  right: auto;
  bottom: auto;
  z-index: 90;
  display: block;
  width: var(--side-details-w);
  height: var(--side-details-span, 100svh);
  margin: 0;
  padding: 0;
  align-items: stretch;
  justify-content: stretch;
  background: var(--cream);
  opacity: 1;
  pointer-events: none;
  overflow: hidden;
  box-sizing: border-box;
  transition: none;
}

body[data-project-details-mode="side"] .project-details[hidden] {
  display: block;
  pointer-events: none;
}

body.is-project-details-open[data-project-details-mode="side"] .project-details {
  pointer-events: none;
  /* overflow:hidden kills position:sticky on the sheet */
  overflow: visible;
}

/* Logo stays over the panel; links + work sheet track the pushed column */
body[data-project-details-mode="side"] .site-nav {
  left: 0;
  right: 0;
  width: 100%;
}

body[data-project-details-mode="side"] .work-nav-panel {
  left: var(--side-details-w);
  right: 0;
  width: auto;
  /* Stay under .site-nav (100) so Work/Archive/Studio/Contact stay readable */
  z-index: 90;
  transition: left var(--side-details-dur) var(--side-details-ease);
}

/* Keep primary nav above the Work sheet while it is open */
body.is-work-nav-open .site-nav {
  z-index: 120;
}

/* Dark logo over cream panel when open (override hero-light white mark) */
body.is-project-details-open[data-project-details-mode="side"] .site-nav--brand .nav-ink-logo__base .logo__img,
body.is-project-details-open[data-project-details-mode="side"] .site-nav--brand .logo:not(.nav-ink-logo) .logo__img,
body.is-work-nav-open[data-project-details-mode="side"] .site-nav--brand .nav-ink-logo__base .logo__img,
body.is-work-nav-open[data-project-details-mode="side"] .site-nav--brand .logo:not(.nav-ink-logo) .logo__img {
  filter: none !important;
}

body.is-project-details-open[data-project-details-mode="side"] .site-nav--brand .nav-ink-logo__base .logo__paint,
body.is-project-details-open[data-project-details-mode="side"] .site-nav--brand .logo:not(.nav-ink-logo) .logo__paint,
body.is-work-nav-open[data-project-details-mode="side"] .site-nav--brand .nav-ink-logo__base .logo__paint,
body.is-work-nav-open[data-project-details-mode="side"] .site-nav--brand .logo:not(.nav-ink-logo) .logo__paint {
  opacity: 1 !important;
  background-color: transparent !important;
  background-image: linear-gradient(var(--near-black), var(--near-black)) !important;
  filter: none !important;
}

body[data-project-details-mode="side"] main.project,
body[data-project-details-mode="side"] main.project.project--show,
body[data-project-details-mode="side"] main.project.project--hero-bleed,
body[data-project-details-mode="side"] main.project.project--show.project--hero-bleed {
  margin-left: var(--side-details-w);
  width: calc(100vw - var(--side-details-w));
  max-width: none;
  box-sizing: border-box;
  transition:
    margin-left var(--side-details-dur) var(--side-details-ease),
    width var(--side-details-dur) var(--side-details-ease);
}

/* Prev/next + footer stay full width below the film */
body[data-project-details-mode="side"] .project-turn,
body[data-project-details-mode="side"] .site-foot {
  margin-left: 0;
  width: 100%;
  max-width: none;
}

body[data-project-details-mode="side"] main.project.project--show.project--hero-bleed,
body[data-project-details-mode="side"] main.project.project--hero-bleed {
  overflow-x: hidden;
}

/* Hero tracks the pushed column — kill the full-viewport breakout */
body[data-project-details-mode="side"] .project--hero-bleed .project-hero[data-project-hero],
body[data-project-details-mode="side"] .project--hero-bleed .project-hero {
  left: auto;
  right: auto;
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  transition: height var(--side-details-dur) var(--side-details-ease);
}

body.is-project-details-open[data-project-details-mode="side"] .project--hero-bleed .project-hero[data-project-hero],
body.is-project-details-open[data-project-details-mode="side"] .project--hero-bleed .project-hero {
  height: 52svh !important;
  max-height: 52svh !important;
}

body.is-project-details-open[data-project-details-mode="side"] .project--hero-bleed .project-hero img,
body.is-project-details-open[data-project-details-mode="side"] .project--hero-bleed .project-hero video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
}

/*
 * Side details open: every film image fills the pushed column edge-to-edge.
 * Half / three-quarter / caption-rail layouts collapse to full-bleed media.
 */
body.is-project-details-open[data-project-details-mode="side"] .project-film__media,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project__stack,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread {
  width: 100%;
  max-width: none;
}

body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--half-end,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--half-start,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--pair,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--pair-end,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--pair-duo,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--three-quarter-text,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--stack-end,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--third-end,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--split-23,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--duo,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--duo-match,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--equal-h,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--flush {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: none;
  grid-template-columns: none;
  column-gap: 0;
  row-gap: 0;
  gap: var(--film-gap);
}

body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--half-end .project-spread__text,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--half-start .project-spread__text,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--pair .project-spread__text,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--pair-end .project-spread__text,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--three-quarter-text .project-spread__text,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--stack-end .project-spread__text,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--third-end .project-spread__text,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--split-23 .project-spread__text,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread__cap,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread__cap--row {
  display: none;
}

body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--three-quarter,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--square,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--bleed {
  width: 100% !important;
  max-width: none !important;
  margin-left: 0;
  margin-right: 0;
}

body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread__product,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread__cell,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread__cell--inset {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
  display: block;
}

body.is-project-details-open[data-project-details-mode="side"] .project-film__media img,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media video,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread__video {
  width: 100% !important;
  max-width: none !important;
  height: auto;
  display: block;
  object-fit: cover;
  object-position: center center;
}

/* Side-by-side rows (duo / equal-h / pair-duo) stack full-bleed in the film column */
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--duo .project-spread__cell,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--duo-match .project-spread__cell,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--equal-h .project-spread__cell,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--pair-duo .project-spread__product,
body.is-project-details-open[data-project-details-mode="side"] .project-film__media .project-spread--flush .project-spread__cell {
  width: 100% !important;
  max-width: none !important;
  min-width: 0;
  flex: 0 0 auto;
}

body[data-project-details-mode="side"] .project-details__sheet {
  --details-band: clamp(1.5rem, 3.5vh, 2.25rem);
  position: sticky;
  top: var(--nav-h, 4.5rem);
  left: auto;
  width: 100%;
  max-width: none;
  height: calc(100svh - var(--nav-h, 4.5rem));
  min-height: calc(100svh - var(--nav-h, 4.5rem));
  max-height: calc(100svh - var(--nav-h, 4.5rem));
  overflow-x: hidden;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  box-sizing: border-box;
  padding:
    clamp(4.5rem, 12vh, 7.5rem)
    clamp(1.75rem, 3.5vw, 3rem)
    calc(clamp(4.5rem, 11vh, 7rem) + 2.75rem)
    var(--pad-x);
  background: var(--cream);
  color: var(--near-black);
  transform: none;
  transition: none;
  pointer-events: auto;
  box-shadow: none;
  font-family: var(--font), sans-serif;
  font-size: var(--nav-brand-type);
  font-weight: 500;
  line-height: 1.25;
  letter-spacing: normal;
}

body[data-project-details-mode="side"] .project-details:not(.is-open) .project-details__sheet {
  /* Keep sheet mounted so width reveal + stagger can play */
  opacity: 1;
}

body[data-project-details-mode="side"] .project-details.is-open .project-details__sheet {
  transform: none;
  opacity: 1;
  pointer-events: auto;
}

body[data-project-details-mode="side"] .project-details__grid {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-end;
  gap: 0;
  width: 100%;
  max-width: 36rem;
  min-height: 0;
}

body[data-project-details-mode="side"] .project-details__title {
  margin: 0 0 clamp(2.25rem, 5.5vh, 3.5rem);
  font-family: var(--font), sans-serif;
  font-size: var(--nav-brand-type);
  font-weight: 500;
  letter-spacing: normal;
  line-height: 1.25;
  max-width: none;
  align-self: flex-start;
  text-align: left;
  color: var(--near-black);
}

body[data-project-details-mode="side"] .project-details__story {
  max-width: none;
  width: 100%;
  height: auto;
  min-height: 0;
  column-count: 1;
  margin: 0 0 clamp(3rem, 8vh, 5rem);
  align-self: flex-start;
  text-align: left;
}

body[data-project-details-mode="side"] .project-details__story p {
  margin: 0 0 1.15em;
  font-family: var(--font), sans-serif;
  font-size: var(--nav-brand-type);
  font-weight: 500;
  letter-spacing: normal;
  line-height: 1.3;
  text-align: left;
  hyphens: none;
  color: var(--near-black);
}

body[data-project-details-mode="side"] .project-details__story p:last-child {
  margin-bottom: 0;
}

body[data-project-details-mode="side"] .project-details__delivery-label {
  margin: 0 0 clamp(1.15rem, 2.5vh, 1.6rem);
  padding: 0;
  font-family: var(--font), sans-serif;
  font-size: var(--nav-brand-type);
  font-weight: 500;
  letter-spacing: normal;
  line-height: 1.25;
  text-transform: none;
  align-self: flex-start;
  text-align: left;
  color: var(--near-black);
}

body[data-project-details-mode="side"] .project-details__delivery-list {
  gap: 0.35rem;
  margin: 0;
  padding-bottom: clamp(0.75rem, 2vh, 1.25rem);
  align-self: flex-start;
  text-align: left;
}

body[data-project-details-mode="side"] .project-details__delivery-list li {
  margin: 0;
  font-family: var(--font), sans-serif;
  font-size: var(--nav-brand-type);
  font-weight: 500;
  letter-spacing: normal;
  line-height: 1.3;
  text-align: left;
  color: var(--near-black);
}

/* Match bottom-sheet staggered rise + fade (vertical, not sideways) */
body[data-project-details-mode="side"] .project-details__title,
body[data-project-details-mode="side"] .project-details__delivery-label,
body[data-project-details-mode="side"] .project-details__story,
body[data-project-details-mode="side"] .project-details__delivery-list {
  opacity: 0;
  transform: translate3d(0, 0.7rem, 0);
  filter: blur(4px);
  align-self: flex-start;
  justify-self: start;
  text-align: left;
  transition:
    opacity 0.55s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.55s cubic-bezier(0.22, 1, 0.36, 1),
    filter 0.55s cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: 0s;
}

body[data-project-details-mode="side"] .project-details.is-open .project-details__title {
  opacity: 1;
  transform: none;
  filter: none;
  transition-delay: 0.22s;
}

body[data-project-details-mode="side"] .project-details.is-open .project-details__story {
  opacity: 1;
  transform: none;
  filter: none;
  transition-delay: 0.3s;
}

body[data-project-details-mode="side"] .project-details.is-open .project-details__delivery-label {
  opacity: 1;
  transform: none;
  filter: none;
  transition-delay: 0.36s;
}

body[data-project-details-mode="side"] .project-details.is-open .project-details__delivery-list {
  opacity: 1;
  transform: none;
  filter: none;
  transition-delay: 0.42s;
}

/* Side dock: sticky with film-dock-pad, then rides flush with the last image */
body[data-project-details-mode="side"] .project-dock--side {
  left: var(--pad-x);
  bottom: var(--film-dock-pad);
  z-index: 102;
  /* bottom is set on scroll — avoid springing against JS clamp updates */
  transition: none;
}

body.is-project-details-open[data-project-details-mode="side"] .project-dock--side,
body.is-project-details-open[data-project-details-mode="side"] .project-dock--side.is-dissolved,
body.is-project-details-open[data-project-details-mode="side"] .project-dock--side.is-riding {
  z-index: 102;
  pointer-events: auto;
  opacity: 1 !important;
}

body.is-project-details-open[data-project-details-mode="side"] .project-dock--side .project-dock__details {
  color: var(--near-black) !important;
}

@media (min-width: 900px) {
  body[data-project-details-mode="side"] .project-details__grid {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas: none;
  }

  body[data-project-details-mode="side"] .project-details__title,
  body[data-project-details-mode="side"] .project-details__delivery-label,
  body[data-project-details-mode="side"] .project-details__story,
  body[data-project-details-mode="side"] .project-details__delivery-list {
    grid-area: auto;
  }
}

@media (max-width: 899px) {
  body.is-project-details-open[data-project-details-mode="side"] {
    --side-details-w: 100vw;
  }

  body[data-project-details-mode="side"] .project-details__sheet {
    min-height: 0;
    max-height: none;
    justify-content: flex-start;
    padding-top: calc(var(--nav-h, 4.5rem) + clamp(1.5rem, 4vh, 2.5rem));
  }

  body.is-project-details-open[data-project-details-mode="side"] .project-dock--side {
    left: var(--pad-x);
  }
}

.project--hero-bleed .project-hero-bleed__first {
  grid-area: img;
  margin: 0;
  width: 100%;
}

.project--hero-bleed .project-hero-bleed__first img {
  width: 100%;
  height: auto;
  display: block;
}

.project--hero-bleed .project__stack {
  display: flex;
  flex-direction: column;
  /* Parent gap owns vertical rhythm — kill per-spread margin-tops that were doubling it */
  gap: var(--show-stack-gap, clamp(1rem, 2.5vh, 1.75rem));
  margin-top: 0;
}

.project--hero-bleed.project--show-stack .project__stack > .project-spread,
.project--hero-bleed.project--show-stack .project__stack > .project-spread--duo,
.project--hero-bleed.project--show-stack .project__stack > .project-spread--pair,
.project--hero-bleed.project--show-stack .project__stack > .project-spread--film,
.project--hero-bleed.project--show-stack .project__stack > .project-spread--system,
.project--hero-bleed.project--show-stack .project__stack > .project-spread--aligned,
.project--hero-bleed.project--show-stack .project__stack > .project-spread--half-end,
.project--hero-bleed.project--show-stack .project__stack > .project-spread--half-start,
.project--hero-bleed.project--show-stack .project__stack > .project-spread--third-end,
.project--hero-bleed.project--show-stack .project__stack > .project-spread--three-quarter,
.project--hero-bleed.project--show-stack .project__stack > .project-spread--three-quarter-text,
.project--hero-bleed.project--show-stack .project__stack > .project-spread--stack-end,
.project--hero-bleed.project--show-stack .project__stack > .project-spread--cap-above,
.project--hero-bleed.project--show-stack .project__stack > .project-spread--split-23,
.project--hero-bleed.project--show-stack .project__stack > .project-spread--equal-h,
.project--hero-bleed.project--show-stack .project__stack > .project-spread--bleed,
.project--hero-bleed.project--show-stack .project__stack > .project-spread--square {
  margin-top: 0;
}

.project--hero-bleed .project-spread__cap {
  padding-top: 0.65rem;
}

/* Keep header pinned on hero-bleed projects (no auto-hide) */
body[data-hero-nav="light"] .site-nav--sticky.is-away {
  transform: none;
  pointer-events: auto;
}

/* Parked: still fixed, but top tracks the hero bottom via JS */
body[data-hero-nav="light"] .site-nav--sticky.is-hero-pin {
  transition: none;
}

@media (max-width: 720px) {
  .project--hero-bleed .project-hero[data-project-hero],
  .project--hero-bleed .project-hero,
  body[data-project-details-mode="side"] .project--hero-bleed .project-hero[data-project-hero],
  body[data-project-details-mode="side"] .project--hero-bleed .project-hero,
  body.is-project-details-open[data-project-details-mode="side"] .project--hero-bleed .project-hero[data-project-hero],
  body.is-project-details-open[data-project-details-mode="side"] .project--hero-bleed .project-hero {
    height: auto !important;
    max-height: none !important;
    background: transparent;
  }

  .project--hero-bleed .project-hero img,
  .project--hero-bleed .project-hero video,
  body.is-project-details-open[data-project-details-mode="side"] .project--hero-bleed .project-hero img,
  body.is-project-details-open[data-project-details-mode="side"] .project--hero-bleed .project-hero video {
    width: 100%;
    height: auto;
    object-fit: contain;
    object-position: center top;
  }

  .project--hero-bleed .project-hero-bleed__intro {
    position: static;
    max-width: none;
  }
}

/* Body left, half-width product right (Art & Currency logo row) */
.project--show-stack .project-spread--pair-end {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  column-gap: var(--show-cluster-gap, clamp(0.75rem, 2vh, 1.25rem));
  align-items: start;
  margin-bottom: 0;
}

.project--show-stack .project-spread--pair-end .project-spread__text {
  grid-column: 1;
  align-self: end;
  justify-self: start;
  width: 100%;
  max-width: none;
}

.project--show-stack .project-spread--pair-end-start .project-spread__text {
  align-self: start;
}

.project--show-stack .project-spread--pair-end .project-spread__text .body {
  margin: 0;
  padding: 0;
  font-family: var(--font-light), sans-serif;
  font-weight: 300;
  font-size: 1rem;
  line-height: 1.55;
  color: var(--near-black);
  text-align: left;
}

.project--show-stack .project-spread--pair-end .project-spread__text .show__title {
  margin: 0;
  padding: 0;
  font-family: var(--font), sans-serif;
  font-weight: 600;
  font-size: clamp(1.25rem, 2vw, 1.5rem);
  line-height: 1.2;
  color: var(--near-black);
  text-align: left;
}

.project--show-stack .project-spread--pair-end .project-spread__product {
  grid-column: 2;
  justify-self: end;
  width: 100%;
  overflow: visible;
}

.project--show-stack .project-spread--pair-end .project-spread__product .project-spread__cap {
  padding-top: 0.5rem;
}

.project--show-stack .project-spread--pair-end .project-spread__product .project-spread__cap .show__title {
  margin: 0;
  font-family: var(--font), sans-serif;
  font-weight: 600;
  font-size: clamp(1.25rem, 2vw, 1.5rem);
  line-height: 1.2;
  color: var(--near-black);
}

/* Match half-width pair heights (postcard to catalog spread) */
.project--show-stack .project-spread--duo-match .project-spread__cell img {
  width: 100%;
  aspect-ratio: 2408 / 1504;
  height: auto;
  object-fit: cover;
  object-position: center;
}

.project--show-poster .project-spread--hero {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin: 0;
}

.project--show-poster .project-spread__bleed {
  width: 100%;
  max-width: none;
  margin-left: 0;
  overflow: hidden;
  background: transparent;
}

.project--show-poster .project-spread__bleed img {
  width: 100%;
  height: auto;
  display: block;
  vertical-align: bottom;
}

.project--show-poster .project-spread__cap--solo {
  width: 100%;
  max-width: none;
  margin: 0;
  padding-top: 0.5rem;
  text-align: left;
}

.project--show-poster .project-spread__cap--solo .show__title {
  margin: 0;
  max-width: 34em;
}

.project--show-poster .project-spread--hero + .project-spread {
  margin-top: var(--show-stack-gap);
}

.project--show-poster .project-spread__cell .project-spread__cap {
  padding-top: 0.5rem;
}

.project--show-poster .project-spread__cell .project-spread__cap .show__title {
  margin: 0;
  font-family: var(--font), sans-serif;
  font-weight: 600;
  font-size: clamp(1.25rem, 2vw, 1.5rem);
  line-height: 1.2;
  color: var(--near-black);
}

/* Static plates — stacked lockups replace slideshow */
.project--show-static {
  --show-cluster-gap: var(--show-stack-gap, clamp(1rem, 2.5vh, 1.75rem));
}

.project--show-static .project__stage {
  grid-template-columns: 1fr;
  grid-template-areas:
    "head"
    "hero"
    "plate1"
    "plate2"
    "system"
    "merch";
  row-gap: 0;
  column-gap: 0;
}

.project--show-static .project__plate {
  display: contents;
}

.project--show-static .project__plate:nth-of-type(1) .project__plate-media {
  grid-area: plate1;
  margin-bottom: var(--show-stack-gap);
}

.project--show-static .project__plate:nth-of-type(2) .project__plate-media {
  grid-area: plate2;
  margin-bottom: var(--show-stack-gap);
}

.project--show-static .project-spread--aligned {
  grid-area: system;
  grid-column: 1 / -1;
  width: 100%;
  min-width: 0;
  margin-top: var(--show-cluster-gap);
}

.project--show-static .project-spread--hero {
  margin-bottom: var(--show-cluster-gap);
}

.project--show-static .project-spread--hero .project-spread__cap {
  padding-top: 0.5rem;
}

.project--show-static .project-spread--hero .project-spread__cap .show__title {
  margin: 0;
  font-family: var(--font), sans-serif;
  font-weight: 600;
  font-size: clamp(1.25rem, 2vw, 1.5rem);
  line-height: 1.2;
  color: var(--near-black);
  max-width: 50%;
}

.project--show-static .project-spread--pair {
  grid-area: merch;
  margin-top: var(--show-cluster-gap);
}

.project--show-static .project__plate-media {
  width: 100%;
  aspect-ratio: 2400 / 2196;
  overflow: hidden;
  background: #1c1a1b;
}

.project--show-static .project__plate-media img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
  display: block;
}

.project--show-static .project__plate-cap {
  padding-top: 0.5rem;
}

.project--show-static .project__plate-cap .show__title {
  margin: 0;
  font-family: var(--font), sans-serif;
  font-weight: 600;
  font-size: clamp(1.25rem, 2vw, 1.5rem);
  line-height: 1.2;
  color: var(--near-black);
}

.project--show-static .project-spread--aligned img,
.project--show-static .project-spread__product img {
  width: 100%;
  height: auto;
  display: block;
  vertical-align: bottom;
}

.project--show-static .project-spread--pair .project-spread__text .show__title {
  margin: 0;
  font-family: var(--font), sans-serif;
  font-weight: 600;
  font-size: clamp(1.25rem, 2vw, 1.5rem);
  line-height: 1.2;
  color: var(--near-black);
}

.project--show .show__frame--contain .show__slide img,
.project--show .show__frame--contain .show__slide .show__video {
  object-fit: contain;
  object-position: center;
  background: transparent;
}

.project--show .show__frame--contain .show__slide--cover .show__video,
.project--show .show__frame--contain .show__slide--cover img {
  object-fit: cover;
}

.project--show .show__meta--aside {
  grid-area: meta;
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1.25rem 2rem;
  width: 100%;
  margin: 0;
  padding: 0.85rem 0 0;
}

.project--show .show__meta--aside .show__label {
  flex: 1;
  min-width: 0;
}

.project--show .show__meta--aside .show__title {
  line-height: 1.2;
}

.project--show .show__meta--aside .show__desc {
  /* Reserve 2 lines so slide changes don’t nudge the caption band */
  min-height: calc(1.45em * 2);
  margin-top: 0.35rem;
}

.project--show .show__meta--aside .show__dots {
  position: static;
  left: auto;
  bottom: auto;
  transform: none;
  flex-shrink: 0;
  /* Sit on the same band as the title */
  padding-top: 0.35rem;
  padding-bottom: 0;
}

.project--show .show__dots .show__dot {
  background: rgba(35, 31, 32, 0.25);
}

.project--show .show__dots .show__dot.is-active {
  background: var(--near-black);
}

.project--show .show__dots .show__dot:focus-visible {
  outline-color: var(--near-black);
}

.project__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem 0.85rem;
  margin: 0;
}

.project--show .project__copy {
  max-width: none;
  margin-top: 0;
}

.project__lede {
  margin: 0 0 1rem;
  font-family: var(--font), sans-serif;
  font-weight: 600;
  font-size: 0.8125rem;
  line-height: 1.55;
  color: var(--near-black);
}

.project__copy .body {
  margin: 0;
  font-size: 0.8125rem;
}

.project--show .part {
  border-top: 1px solid var(--light-gray);
}

.project__title {
  font-size: clamp(1.75rem, 3vw, 2.35rem);
  text-transform: lowercase;
  margin: 0.25rem 0 0.4rem;
}

/* ---------------------------------------------------------------------------
   Project turn — previous / next above footer
   --------------------------------------------------------------------------- */

.project-turn {
  --turn-reel-h: clamp(5.5rem, 12vw, 7.5rem);
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 2rem;
  padding: clamp(2.5rem, 6vh, 4rem) var(--pad-x) clamp(6rem, 14vh, 9rem);
  background: var(--white);
}

body[data-page="project"] .project-turn {
  margin-top: clamp(4rem, 10vh, 8rem);
  padding-top: clamp(3rem, 7vh, 5rem);
}

.project-turn__link {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  max-width: min(18rem, 42vw);
  font-family: var(--font), sans-serif;
  font-weight: 400;
  font-size: clamp(1.25rem, 2vw, 1.5rem);
  letter-spacing: -0.01em;
  line-height: 1.2;
  text-transform: none;
  color: var(--near-black);
  text-decoration: none;
}

.project-turn__link--next {
  text-align: right;
  align-items: flex-end;
  margin-left: auto;
}

.project-turn__label {
  display: block;
}

.project-turn__name {
  display: block;
  min-height: 1.2em;
  color: var(--gray);
  opacity: 0;
  transform: translateY(0.2em);
  transition:
    opacity 0.35s var(--ease),
    transform 0.4s var(--ease-out);
  pointer-events: none;
}

.project-turn__reel {
  display: block;
  position: relative;
  width: min(100%, 11rem);
  height: var(--turn-reel-h);
  margin-top: 0.45rem;
  overflow: hidden;
  background: transparent;
  opacity: 0;
  transform: translateY(0.25em);
  transition:
    opacity 0.35s var(--ease),
    transform 0.4s var(--ease-out);
  pointer-events: none;
}

.project-turn__link--next .project-turn__reel {
  margin-left: auto;
}

.project-turn__shot {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  opacity: 0;
  transition: opacity 0.28s var(--ease);
}

.project-turn__shot.is-active {
  opacity: 1;
}

.project-turn__link:hover .project-turn__name,
.project-turn__link:focus-visible .project-turn__name,
.project-turn__link:hover .project-turn__reel,
.project-turn__link:focus-visible .project-turn__reel {
  opacity: 1;
  transform: translateY(0);
}

.project-turn__link:hover,
.project-turn__link:focus-visible {
  color: var(--near-black);
  outline: none;
}

/* Asymmetric thumbnail prev/next (data-turn="thumbs") */
.project-turn--thumbs {
  --turn-dash: 1.85em;
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  column-gap: var(--show-stack-gap, clamp(1rem, 2.5vh, 1.75rem));
  row-gap: 0;
  align-items: start;
  padding: clamp(2.5rem, 6vh, 4rem) var(--pad-x) clamp(4rem, 10vh, 6.5rem);
  background: var(--cream);
}

.project-turn__thumb {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  min-width: 0;
  color: var(--near-black);
  text-decoration: none;
}

.project-turn__thumb--lg {
  grid-column: span 7;
}

.project-turn__thumb--sm {
  grid-column: span 5;
}

.project-turn__thumb .project-turn__label {
  position: relative;
  display: block;
  padding-left: var(--turn-dash);
  font-family: var(--font), sans-serif;
  font-size: var(--nav-brand-type);
  font-weight: 500;
  letter-spacing: -0.015em;
  line-height: 1.3;
  color: var(--near-black);
  transition: opacity 0.35s var(--ease), color 0.35s var(--ease);
}

.project-turn__thumb .project-turn__label::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  width: 1.5em;
  height: 1.5px;
  background: var(--near-black);
  transform: translateY(-50%);
  pointer-events: none;
  transition: opacity 0.35s var(--ease);
}

.project-turn__thumb:hover .project-turn__label,
.project-turn__thumb:focus-visible .project-turn__label {
  opacity: 0.45;
}

.project-turn__thumb:hover .project-turn__label::before,
.project-turn__thumb:focus-visible .project-turn__label::before {
  opacity: 0.45;
}

.project-turn__media {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 2;
  overflow: hidden;
  background: #eceae6;
}

.project-turn__thumb--lg .project-turn__media,
.project-turn__thumb--sm .project-turn__media {
  aspect-ratio: 3 / 2;
}

.project-turn__media img,
.project-turn__media .media-video,
.project-turn__media video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}

.project-turn__cap {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  padding-top: 0;
  min-width: 0;
}

.project-turn__thumb .project-turn__title {
  display: block;
  margin: 0;
  font-family: var(--font), sans-serif;
  font-size: clamp(1.15rem, 1.45vw, 1.45rem);
  font-weight: 600;
  letter-spacing: -0.015em;
  line-height: 1.3;
  color: var(--near-black);
}

.project-turn__thumb .project-turn__sub {
  display: block;
  margin: 0;
  font-family: var(--font), sans-serif;
  font-size: clamp(1.05rem, 1.3vw, 1.3rem);
  font-weight: 500;
  line-height: 1.35;
  color: var(--near-black);
}

.project-turn__thumb:focus-visible {
  outline: none;
}

@media (max-width: 700px) {
  .project-turn--thumbs {
    grid-template-columns: 1fr;
    row-gap: var(--show-stack-gap, clamp(1rem, 2.5vh, 1.75rem));
  }

  .project-turn__thumb--lg,
  .project-turn__thumb--sm {
    grid-column: 1 / -1;
  }

  .project-turn__thumb--sm .project-turn__media {
    aspect-ratio: 3 / 2;
  }
}

/* Edge pull-out tabs (data-turn="edge") */
.project-turn--edge {
  --turn-reel-h: clamp(7rem, 14vw, 9.5rem);
  --turn-panel-w: clamp(18rem, 32vw, 24rem);
  --turn-tab-gray: #b7b7b7;
  --turn-peek: 0.85rem;
  position: relative;
  z-index: 5;
  display: block;
  width: 100vw;
  max-width: 100vw;
  margin-left: calc(50% - 50vw);
  height: clamp(13rem, 26vh, 17rem);
  padding: 0;
  background: transparent;
  pointer-events: none;
}

.project-turn__tab {
  pointer-events: auto;
  position: absolute;
  top: 50%;
  display: block;
  width: var(--turn-panel-w);
  max-width: var(--turn-panel-w);
  background: var(--turn-tab-gray);
  color: var(--near-black);
  text-decoration: none;
  box-shadow: 0 10px 32px rgba(35, 31, 32, 0.1);
  transition:
    transform 0.45s var(--ease-out),
    box-shadow 0.35s var(--ease);
}

.project-turn__tab:hover,
.project-turn__tab:focus-visible {
  box-shadow: 0 14px 40px rgba(35, 31, 32, 0.14);
  outline: none;
}

.project-turn__tab--prev {
  left: 0;
  border-radius: 0 0.65rem 0.65rem 0;
  transform: translate(calc(-100% + var(--turn-peek)), -50%);
}

.project-turn__tab--prev:hover,
.project-turn__tab--prev:focus-visible,
.project-turn__tab--prev:focus-within {
  transform: translate(0, -50%);
}

.project-turn__tab--next {
  right: 0;
  border-radius: 0.65rem 0 0 0.65rem;
  transform: translate(calc(100% - var(--turn-peek)), -50%);
}

.project-turn__tab--next:hover,
.project-turn__tab--next:focus-visible,
.project-turn__tab--next:focus-within {
  transform: translate(0, -50%);
}

.project-turn__panel {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.45rem;
  width: 100%;
  padding: 1.25rem 1.25rem 1.35rem;
  overflow: hidden;
}

.project-turn--edge .project-turn__name {
  min-height: 0;
  font-size: clamp(1.15rem, 1.8vw, 1.35rem);
  line-height: 1.25;
  color: var(--near-black);
  opacity: 1;
  transform: none;
  white-space: nowrap;
}

.project-turn--edge .project-turn__blurb {
  display: block;
  font-family: var(--font), sans-serif;
  font-weight: 400;
  font-size: 0.875rem;
  line-height: 1.4;
  color: var(--near-black);
  white-space: normal;
}

.project-turn--edge .project-turn__reel {
  width: 100%;
  height: var(--turn-reel-h);
  margin-top: 0.45rem;
  opacity: 1;
  transform: none;
  border-radius: 0.3rem;
  overflow: hidden;
}

.project-turn--edge .project-turn__link--next .project-turn__reel,
.project-turn__tab--next .project-turn__reel {
  margin-left: 0;
}

.project__jumps {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin: 1.5rem 0 1.75rem;
}

.part {
  padding: 1.15rem 0;
  border-top: 1px solid var(--light-gray);
}

.part:last-child { border-bottom: 1px solid var(--light-gray); }

.part__head {
  font-family: var(--font), sans-serif;
  font-weight: 500;
  font-size: 0.9375rem;
  cursor: pointer;
  margin-bottom: 0.45rem;
}

.part__head em {
  font-style: normal;
  font-weight: 300;
  color: var(--gray);
  margin-right: 0.4rem;
}

.part__teaser {
  font-size: 0.875rem;
  cursor: pointer;
}

.part__more {
  max-height: 0;
  opacity: 0;
  overflow: hidden;
  transition: max-height var(--t-med) var(--ease-out), opacity var(--t-med) var(--ease);
}

.part.is-open .part__more {
  max-height: 20rem;
  opacity: 1;
  margin-top: 0.65rem;
}

.part__more .body { font-size: 0.875rem; }

.part--link {
  padding-top: 1.15rem;
}

.part__live {
  display: inline-block;
  font-family: var(--font), sans-serif;
  font-weight: 500;
  font-size: 0.9375rem;
  border-bottom: 1px solid transparent;
  transition: border-color var(--t) ease, color var(--t) ease;
}

.part__live em {
  font-style: normal;
  font-weight: 300;
  color: var(--gray);
  margin-right: 0.4rem;
}

.part__live:hover {
  border-bottom-color: var(--near-black);
}

.project__inner {
  min-height: min-content;
}

.project__media .project__inner {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

/* ---------------------------------------------------------------------------
   STUDIO (about.html)
   --------------------------------------------------------------------------- */

.page--studio {
  max-width: none;
  width: 100%;
  margin: 0;
  /* Clear open Work menu so the mast stays visible under the sheet */
  padding-top: calc(
    var(
      --work-nav-reserve,
      calc(var(--nav-h) + clamp(3.5rem, 8vh, 5.5rem))
    ) + clamp(1.25rem, 3.2vh, 2rem)
  );
  padding-bottom: clamp(6.5rem, 14vh, 10rem);
  padding-left: max(var(--nav-pad-x), env(safe-area-inset-left, 0px));
  padding-right: max(var(--nav-pad-x), env(safe-area-inset-right, 0px));
}

.studio {
  display: flex;
  flex-direction: column;
  gap: clamp(2.75rem, 7vh, 4.5rem);
  width: 100%;
  max-width: none;
  text-align: left;
  font-family: var(--font), sans-serif;
  font-size: var(--nav-brand-type);
  font-weight: 500;
  letter-spacing: -0.02em;
  line-height: 1.25;
  color: var(--near-black);
}

.studio__row {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
  column-gap: clamp(2.5rem, 7vw, 6rem);
  row-gap: clamp(2rem, 4vh, 2.75rem);
  align-items: start;
  width: 100%;
}

.studio__block {
  display: flex;
  flex-direction: column;
  gap: clamp(1.35rem, 3vh, 1.85rem);
  max-width: none;
  min-width: 0;
}

.studio__philosophy-copy {
  max-width: min(42em, 100%);
  text-wrap: balance;
}

.studio__explore {
  display: flex;
  flex-direction: column;
  gap: clamp(1.35rem, 3vh, 1.85rem);
  width: 100%;
  max-width: none;
}

.studio h2,
.studio__block p,
.studio__services {
  margin: 0;
  font: inherit;
  letter-spacing: inherit;
  line-height: inherit;
  color: inherit;
}

.studio h2 {
  font-weight: 700;
  letter-spacing: -0.03em;
  text-transform: uppercase;
}

.studio__mast {
  margin: 0;
  width: auto;
  max-width: 24em;
  text-align: left;
  font-family: var(--font), sans-serif;
  font-weight: 700;
  font-size: clamp(1.65rem, 4.6vw, 3.55rem);
  letter-spacing: -0.04em;
  line-height: 0.95;
  text-transform: uppercase;
  text-wrap: balance;
  color: var(--black);
}

.studio__info-grid {
  display: flex;
  justify-content: space-between;
  align-items: start;
  column-gap: clamp(2.5rem, 4.5vw, 4rem);
  width: 100%;
}

.studio__info-services,
.studio__info-contact,
.studio__info-aside {
  display: flex;
  flex-direction: column;
  gap: clamp(1.35rem, 3vh, 1.85rem);
  min-width: 0;
}

.studio__info-services,
.studio__info-contact {
  flex: 0 0 auto;
}

.studio__info-aside {
  flex: 0 1 24em;
  max-width: 24em;
}

.studio__services-grid {
  display: grid;
  grid-template-columns: max-content max-content;
  column-gap: clamp(2.5rem, 3.25vw, 3.25rem);
  align-items: start;
}

.studio__info-aside p {
  margin: 0;
  max-width: 100%;
  text-wrap: pretty;
}

.studio__contact-stack {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
  min-width: 0;
}

.studio__contact-stack p {
  margin: 0;
}

.studio__address {
  margin: 0;
}

.studio__block a,
.studio__info-grid a {
  color: inherit;
  text-decoration: none;
  transition: opacity var(--t) var(--ease);
}

.studio__block a:hover,
.studio__block a:focus-visible,
.studio__info-grid a:hover,
.studio__info-grid a:focus-visible {
  opacity: 0.55;
}

@media (max-width: 900px) {
  .page--studio {
    padding-top: calc(var(--nav-h, 3.5rem) + clamp(1.15rem, 3vh, 1.75rem));
    padding-right: max(var(--pad-x), env(safe-area-inset-right, 0px));
    padding-bottom: clamp(3.5rem, 9vh, 5.5rem);
    padding-left: max(var(--pad-x), env(safe-area-inset-left, 0px));
  }

  .studio {
    gap: clamp(2.15rem, 5.5vh, 3rem);
  }

  .studio__row {
    grid-template-columns: 1fr;
  }

  .studio__info-grid {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;
    row-gap: clamp(2rem, 5vh, 2.75rem);
    column-gap: 0;
  }

  .studio__info-aside {
    flex: none;
    max-width: none;
    width: 100%;
  }

  .studio__mast {
    width: 100%;
    max-width: 100%;
  }
}

@media (max-width: 720px) {
  .page--studio {
    padding-top: calc(var(--nav-h, 3.5rem) + clamp(1rem, 3vh, 1.5rem));
    padding-right: max(var(--pad-x), env(safe-area-inset-right, 0px));
    padding-bottom: clamp(3rem, 8vh, 4.5rem);
    padding-left: max(var(--pad-x), env(safe-area-inset-left, 0px));
  }

  .studio {
    gap: clamp(2rem, 5vh, 2.75rem);
  }

  .studio__block,
  .studio__explore {
    gap: clamp(1.1rem, 2.5vh, 1.5rem);
  }

}

.studio__rule {
  display: block;
  width: 100%;
  height: 0;
  margin: 0;
  border: 0;
  border-top: 1px solid var(--near-black);
  opacity: 0.22;
}

.studio__services {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
  padding: 0;
  list-style: none;
}

.studio__services li {
  margin: 0;
}

.studio__thumbs.project-turn--thumbs {
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
  background: transparent;
}

.studio__thumbs .project-turn__media .media-video,
.studio__thumbs .project-turn__media video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

@media (max-width: 700px) {
  .studio__services-grid {
    grid-template-columns: 1fr;
    row-gap: 0.65rem;
  }
}

/* ---------------------------------------------------------------------------
   CONTACT
   --------------------------------------------------------------------------- */

.page--contact {
  max-width: none;
  width: 100%;
  margin: 0;
  /* Clear open Work menu so the mast stays visible under the sheet */
  padding-top: calc(
    var(
      --work-nav-reserve,
      calc(var(--nav-h) + clamp(3.5rem, 8vh, 5.5rem))
    ) + clamp(1.25rem, 3.2vh, 2rem)
  );
  padding-bottom: clamp(5rem, 12vh, 8rem);
  padding-left: max(var(--nav-pad-x), env(safe-area-inset-left, 0px));
  padding-right: max(var(--nav-pad-x), env(safe-area-inset-right, 0px));
}

.contact {
  display: block;
  width: 100%;
  max-width: none;
  text-align: left;
  font-family: var(--font), sans-serif;
  font-size: var(--nav-brand-type);
  font-weight: 500;
  letter-spacing: -0.02em;
  line-height: 1.25;
  color: var(--near-black);
}

.contact__split {
  display: grid;
  grid-template-columns: max-content minmax(0, 1fr);
  column-gap: clamp(3rem, 8vw, 7rem);
  row-gap: clamp(2.5rem, 5vh, 3.5rem);
  align-items: stretch;
  width: 100%;
}

.contact__meta {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: clamp(2.5rem, 6vh, 4rem);
  width: max-content;
  max-width: min(34rem, 100%);
  min-width: 0;
  overflow: visible;
  overflow: visible;
}

.contact__meta-top {
  display: flex;
  flex-direction: column;
  gap: clamp(1.35rem, 3vh, 1.85rem);
  min-width: 0;
}

.contact__meta-foot {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  min-width: 0;
}

.contact__mast {
  position: relative;
  display: inline-block;
  margin: 0;
  padding-right: calc(1cap + 0.22em);
  font-family: var(--font), sans-serif;
  font-weight: 700;
  font-size: clamp(1.65rem, 4.6vw, 3.55rem);
  letter-spacing: -0.04em;
  line-height: 1;
  text-transform: uppercase;
  color: var(--black);
  text-decoration: none;
  overflow: visible;
}

.contact__stack {
  display: flex;
  flex-direction: column;
  gap: 0.35em;
  min-width: 0;
}

.contact__line {
  margin: 0;
  font: inherit;
  letter-spacing: inherit;
  line-height: 1.3;
  color: inherit;
  text-decoration: none;
}

a.contact__line {
  display: inline-block;
  transition: opacity 0.25s var(--ease);
}

a.contact__line:hover,
a.contact__line:focus-visible {
  opacity: 0.55;
}

.contact__social {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem clamp(1.25rem, 2.2vw, 1.85rem);
  margin: 0;
  line-height: 1.3;
}

.contact__social a {
  color: inherit;
  text-decoration: none;
  transition: opacity 0.25s var(--ease);
}

.contact__social a:hover,
.contact__social a:focus-visible {
  opacity: 0.55;
}

.contact__arrow {
  position: absolute;
  right: 0;
  top: 0.02em;
  display: block;
  width: 0.92cap;
  height: 0.92cap;
  overflow: visible;
  color: inherit;
  opacity: 0;
  transform: translate(-0.18em, 0.18em) scale(0.4);
  transform-origin: 30% 70%;
  pointer-events: none;
  transition:
    opacity 160ms var(--ease),
    transform 220ms var(--ease);
}

.contact__arrow path {
  fill: currentColor;
}

.contact__mast:hover .contact__arrow,
.contact__mast:focus-visible .contact__arrow {
  opacity: 1;
  transform: none;
}

@media (hover: none) {
  .contact__mast:focus-visible .contact__arrow {
    opacity: 1;
    transform: none;
  }
}

.contact__note {
  margin: 0;
  max-width: 18em;
  font: inherit;
  letter-spacing: inherit;
  line-height: inherit;
  color: inherit;
}

.contact__figure {
  margin: 0;
  width: 100%;
  max-width: 42rem;
  justify-self: end;
  overflow: hidden;
  background: var(--light-gray);
}

.contact__figure img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  object-position: 52% 35%;
}

@media (max-width: 900px) {
  .contact__split {
    grid-template-columns: 1fr;
    align-items: start;
  }

  .contact__meta {
    width: 100%;
    max-width: none;
    min-height: 0;
  }

  .contact__figure {
    justify-self: start;
    max-width: min(28rem, 100%);
  }
}

/* ---------------------------------------------------------------------------
   Responsive
   --------------------------------------------------------------------------- */

@media (max-width: 900px) {
  .pieces,
  .project {
    grid-template-columns: 1fr;
    min-height: 0;
    height: auto;
    margin-left: 0;
    overflow: visible;
  }

  .work-grid {
    grid-template-columns: 1fr;
  }

  body[data-home-work="true"] .work-grid {
    grid-template-columns: 1fr;
  }

  body[data-home-work="true"] .work-grid .piece,
  body[data-home-work="true"] .work-grid .piece--lg,
  body[data-home-work="true"] .work-grid .piece--sm,
  body[data-home-work="true"] .work-grid .piece--tri,
  body[data-home-work="true"] .work-grid .piece--mid,
  body[data-home-work="true"] .work-grid .piece--solo,
  body[data-home-work="true"] .work-grid .piece--lead,
  body[data-home-work="true"] .work-grid .piece--follow {
    grid-column: 1 / -1;
  }

  body[data-home-work="true"] .work-grid .piece--sm .piece__media,
  body[data-home-work="true"] .work-grid .piece--tri .piece__media,
  body[data-home-work="true"] .work-grid .piece--mid .piece__media,
  body[data-home-work="true"] .work-grid .piece--solo .piece__media,
  body[data-home-work="true"] .work-grid .piece--lead .piece__media,
  body[data-home-work="true"] .work-grid .piece--follow .piece__media {
    aspect-ratio: 3 / 2;
  }

  .project--show {
    --pad-x: clamp(1.75rem, 6.5vw, 2.5rem);
    --nav-pad-x: clamp(1.75rem, 6.5vw, 2.5rem);
    height: auto;
    min-height: 0;
    overflow: visible;
    padding: clamp(1.85rem, 5.5vw, 2.5rem) var(--pad-x) clamp(3.25rem, 9vw, 4.5rem);
  }

  .project--show .project__stage {
    --show-frame-w: 100%;
    grid-template-columns: 1fr;
    grid-template-rows: none;
    grid-template-areas:
      "rail-head"
      "frame"
      "meta"
      "rail-anchor";
    row-gap: clamp(1.75rem, 5vw, 2.35rem);
    column-gap: 0;
    width: 100%;
    margin-inline: 0;
  }

  .project--show.project--show-static .project__stage {
    grid-template-areas:
      "head"
      "hero"
      "copy"
      "plate1"
      "plate2"
      "system"
      "merch";
    row-gap: 0;
  }

  .project--show-lg.project--show-stack:not(.project--show-static) .project__stage {
    grid-template-areas:
      "head"
      "hero"
      "frame"
      "meta"
      "copy";
    row-gap: clamp(1.75rem, 5vw, 2.35rem);
  }

  .project--show-lg.project--show-stack .project-spread--hero {
    width: 100%;
    max-width: 100%;
    margin-left: 0;
  }

  .project--show-lg.project--show-stack .project__head {
    width: 100%;
    max-width: 100%;
    margin-left: 0;
    margin-bottom: clamp(1.25rem, 4vw, 1.85rem);
    grid-template-columns: 1fr auto;
    grid-template-areas:
      "title tag"
      "sub   sub";
    column-gap: 1rem;
  }

  .project--show-lg.project--show-stack.project--show-poster .project__head {
    grid-template-columns: 1fr auto;
    grid-template-areas:
      "title tag"
      "sub   sub"
      "copy  copy";
  }

  .project--show-poster .project-spread--split-23,
  .project--show-poster .project-spread--equal-h {
    grid-template-columns: 1fr;
    row-gap: clamp(1rem, 3vw, 1.35rem);
  }

  .project--show-poster .project-spread--third-end {
    grid-template-columns: 1fr;
  }

  .project--show-poster .project-spread--third-end .project-spread__product {
    grid-column: 1;
    max-width: min(20rem, 100%);
    justify-self: end;
  }

  .project--show-poster .project-spread--half-end {
    grid-template-columns: 1fr;
    row-gap: 0.5rem;
  }

  .project--show-poster .project-spread--half-end .project-spread__text {
    grid-column: 1;
    order: -1;
  }

  .project--show-poster .project-spread--half-end .project-spread__product {
    grid-column: 1;
    max-width: min(28rem, 100%);
    justify-self: end;
  }

  .project--show-poster .project-spread--half-start {
    grid-template-columns: 1fr;
    row-gap: 0.5rem;
  }

  .project--show-poster .project-spread--half-start .project-spread__product {
    grid-column: 1;
    max-width: min(28rem, 100%);
    justify-self: start;
  }

  .project--show-poster .project-spread--half-start .project-spread__text {
    grid-column: 1;
  }

  .project--show-poster .project-spread--stack-end {
    grid-template-columns: 1fr;
    grid-template-rows: auto;
  }

  .project--show-poster .project-spread--stack-end .project-spread__text {
    grid-column: 1;
    grid-row: auto;
    align-self: start;
    order: -1;
  }

  .project--show-poster .project-spread--stack-end .project-spread__cell--top,
  .project--show-poster .project-spread--stack-end .project-spread__cell--bot {
    grid-column: 1;
    grid-row: auto;
  }

  .project--show-poster .project-spread--three-quarter {
    width: 100%;
    max-width: 100%;
  }

  .project--show-poster .project-spread--three-quarter-text {
    grid-template-columns: 1fr;
    row-gap: 0.5rem;
  }

  .project--show-poster .project-spread--square {
    max-width: 100%;
  }

  .project--show-lg.project--show-stack .project__title {
    white-space: normal;
    width: 100%;
    font-size: clamp(1.75rem, 8.75cqi, 3rem);
  }

  .project--show-lg.project--show {
    padding-top: clamp(3rem, 10vh, 5.5rem);
  }

  .project--show-static .project__rail {
    margin-bottom: 0;
  }

  .project--show-static .project-spread--hero .project-spread__cap .show__title {
    max-width: 100%;
  }

  .project--show-static .project__plate:nth-of-type(1) .project__plate-cap {
    margin-bottom: clamp(1.25rem, 4vw, 1.75rem);
  }

  .project--show-static .project__plate-media {
    max-height: min(68svh, 22.5rem);
    margin-inline: auto;
  }

  .project--show-static .project-spread__cap--inset {
    padding-inline: 0;
  }

  .project--show .project__rail {
    display: contents;
  }

  .project--show.project--show-static .project__rail {
    display: contents;
  }

  .project--show-static .project-spread--pair {
    row-gap: clamp(1.25rem, 4vw, 1.65rem);
  }

  .project--show .project__head {
    grid-area: rail-head;
    max-width: none;
    width: 100%;
    container-type: inline-size;
  }

  .project--show.project--show-static .project__head,
  .project--show-lg.project--show-stack .project__head {
    grid-area: head;
    container-type: inline-size;
  }

  .project--show-stack .project__stack {
    margin-top: clamp(2rem, 6.5vw, 3.25rem);
    gap: clamp(1.85rem, 5.5vw, 2.75rem);
  }

  .project--show-stack .project-spread--film {
    margin-bottom: 0;
  }

  .project--show-stack .project-spread__cap {
    padding-top: 0.75rem;
  }

  .project--show-stack .project-spread__system-row {
    grid-template-columns: 1fr;
    row-gap: 0.65rem;
  }

  .project--show-stack .project-spread__system-cell {
    height: auto;
    min-height: clamp(8rem, 45vw, 12rem);
  }

  .project--show-stack .project-spread--pair {
    grid-template-columns: 1fr;
    row-gap: clamp(1.25rem, 4vw, 1.65rem);
    align-items: start;
  }

  .project--show-stack .project-spread--pair-end {
    grid-template-columns: 1fr;
  }

  .project--show-stack .project-spread--pair-end .project-spread__text,
  .project--show-stack .project-spread--pair-end .project-spread__product {
    grid-column: 1;
    max-width: none;
  }

  .project--show-stack .project-spread__product,
  .project--show-stack .project-spread__text {
    grid-column: 1;
  }

  .project--show-stack .project-spread--pair-duo {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    row-gap: clamp(1.35rem, 3.5vh, 2rem);
  }

  .project--show-stack .project-spread--pair-duo .project-spread__product:nth-child(1) {
    grid-column: 1;
    grid-row: 1;
  }

  .project--show-stack .project-spread--pair-duo .project-spread__product:nth-child(2) {
    grid-column: 2;
    grid-row: 1;
  }

  .project--show-stack .project-spread--pair-duo .project-spread__text {
    grid-column: 2;
    grid-row: 2;
  }

  .project-spread--duo {
    grid-template-columns: 1fr;
    row-gap: clamp(2.25rem, 5vh, 3rem);
  }

  .project--show-stack .project-spread--duo {
    row-gap: 1.15rem;
  }

  .project--show-poster .project-spread--duo .project-spread__cap--row {
    grid-column: 1;
  }

  .project__stack {
    width: 100%;
    margin-top: clamp(2.5rem, 7vw, 3.5rem);
    gap: clamp(2.25rem, 6.5vw, 3.25rem);
  }

  .project--show-lg .project__sub {
    margin-top: clamp(1rem, 3.5vw, 1.35rem);
    margin-bottom: 0.15rem;
    max-width: 22em;
  }

  .project--show-lg .project__copy .body {
    line-height: 1.62;
  }

  .project--show-lg .show__meta--aside .show__title {
    font-size: clamp(1.05rem, 3.8vw, 1.25rem);
    line-height: 1.3;
  }

  .project--show .project__title {
    font-size: clamp(1.25rem, 5.5vw, 1.65rem);
    white-space: nowrap;
  }

  /* Statement titles: wrap at spaces so nothing clips on small screens */
  .project--show-lg .project__title {
    font-size: clamp(1.75rem, 8.75cqi, 3rem);
    white-space: normal;
    overflow-wrap: normal;
    word-break: normal;
    hyphens: none;
    letter-spacing: -0.045em;
  }

  .project--show .project__anchor {
    grid-area: rail-anchor;
    margin-top: 0;
    margin-bottom: 0;
    max-width: none;
  }

  .project--show.project--show-static .project__anchor,
  .project--show-lg.project--show-stack .project__anchor {
    grid-area: copy;
    align-self: start;
    margin-top: clamp(1.25rem, 4vw, 1.75rem);
  }

  .project--show .project__tags {
    position: static;
    opacity: 1;
    margin: 0 0 0.6rem;
  }

  .project--show .show__frame {
    --show-max-h: none;
    width: 100%;
    height: auto;
    aspect-ratio: 2400 / 2196;
    max-height: min(68svh, 22.5rem);
    margin-inline: auto;
  }

  .project--show-flush .project__still-media {
    max-height: min(68svh, 22.5rem);
    margin-inline: auto;
  }

  .project--show .show__meta--aside {
    width: 100%;
    align-items: flex-start;
    gap: 1rem 1.5rem;
    padding-top: 0.25rem;
  }

  .project--show .show__meta--aside .show__dots {
    padding-top: 0.3rem;
    padding-bottom: 0;
    margin-left: auto;
  }

  .project-turn {
    --turn-reel-h: clamp(4.75rem, 22vw, 6.25rem);
    padding: clamp(2.75rem, 8vw, 3.5rem) var(--pad-x) clamp(5.5rem, 14vw, 7.5rem);
    gap: 1.5rem;
  }

  .project-turn__link {
    max-width: 45%;
  }

  .project-turn--edge {
    --turn-reel-h: clamp(5.5rem, 28vw, 7.5rem);
    --turn-panel-w: min(16.5rem, 68vw);
    --turn-peek: 0.7rem;
    height: clamp(12rem, 36vw, 16rem);
  }

  .void__media {
    height: 55vh;
  }

  .home-break {
    margin-top: clamp(1.75rem, 5vh, 2.75rem);
  }

  .home-works {
    grid-template-columns: 1fr;
  }

  .home-end {
    padding-top: 3rem;
    padding-bottom: 2.75rem;
  }

  .show__frame {
    height: 55vh;
  }

  .show--project .show__frame {
    height: clamp(16rem, 42vh, 24rem);
  }

  .show__meta {
    flex-direction: column;
    align-items: flex-start;
  }

  .project__text,
  .project__media {
    height: auto;
    overflow: visible;
  }

  .project-frame .media-video,
  .project-frame .media-photo {
    min-height: 0;
    height: auto;
  }

}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation: none !important;
    transition-duration: 0.01ms !important;
  }
}


/* Soft media drag / select deterrent — not a security boundary */
img,
picture,
video,
.media-photo,
.piece__shot,
.project-film__media,
.project-hero,
.home-hero__image {
  -webkit-user-drag: none;
  user-select: none;
  -webkit-user-select: none;
}
