/* ============================================================
   TYLER VAN DER BERG — Portfolio
   Visual system: IMPECCABLE "Neo Kinpaku"
   Warm-black lacquer · kinpaku gold · verdigris patina ·
   Alumni Sans Pinstripe display + Albert Sans body · flat,
   hairline-bounded, small radii. Tokens mirror
   site/styles/kinpaku-tokens.css verbatim.
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Albert+Sans:wght@400;500;600;700;800&family=Anton&family=Instrument+Serif:ital@0;1&family=Caveat:wght@500;600;700&family=Space+Grotesk:wght@400;500;600&display=swap');

/* ---- Neo Kinpaku tokens (verbatim) ---- */
:root {
  /* Natural earthy palette — Mother Earth / Lucky Dice / Something Blue / The Bay / Walking Vinnie */
  --ks-kinpaku:        #513229;
  --ks-kinpaku-pale:   #6b4638;
  --ks-kinpaku-rich:   #45291f;
  --ks-kinpaku-deep:   #3a2219;
  --ks-patina:         #8aa7bf;
  --ks-patina-pale:    #D8EBF9;
  --ks-patina-deep:    #5f7d95;
  --ks-vermilion:      #513229;

  --ks-lacquer:        #F4F1E2;
  --ks-lacquer-deep:   #ebe6d2;
  --ks-lacquer-raised: #faf8ee;
  --ks-graphite:       #e6e0c9;
  --ks-graphite-2:     #ddd6bc;

  --ks-champagne:      #513229;
  --ks-text:           #574236;
  --ks-text-muted:     #7c6656;
  --ks-text-faint:     #9b8877;
  --ks-text-mute-deep: #6b5647;

  --ks-rule:           oklch(35% 0.03 45 / 0.16);
  --ks-rule-strong:    oklch(35% 0.05 40 / 0.4);

  /* accents */
  --acc-plum:          #3a2219;
  --acc-blue:          #D8EBF9;
  --acc-sage:          #D7D4B1;
  --acc-lilac:         #D8EBF9;
  --acc-chartreuse:    #FCE6B7;
  --acc-cream:         #F4F1E2;

  --display-font:     "Instrument Serif", Georgia, "Times New Roman", serif;
  --ks-font-display:  var(--display-font);
  --script-font:      "Caveat", "Brush Script MT", cursive;
  --ks-font-wordmark: "Instrument Serif", Georgia, serif;
  --ks-font:          "Albert Sans", "Avenir Next", "Helvetica Neue", system-ui, sans-serif;
  --ks-mono:          "Space Grotesk", "SFMono-Regular", monospace;

  --ks-type-display-size:   clamp(3.4rem, 6.5vw, 5.6rem);
  --ks-type-headline-size:  clamp(2.6rem, 4vw, 3.4rem);
  --ks-ease: cubic-bezier(0.2, 0.8, 0.2, 1);

  /* layout */
  --maxw: 1320px;
  --pad:  clamp(20px, 5vw, 80px);
  --blob-sticker: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='400' height='200' viewBox='0 0 400 200' preserveAspectRatio='none'%3E%3Cpath fill='%23000' d='M20 70 C10 30 40 8 90 12 C140 16 180 4 240 8 C300 12 360 2 380 40 C398 74 388 120 384 150 C380 184 340 196 290 192 C230 187 180 198 120 194 C70 191 14 196 10 156 C7 122 26 104 20 70 Z'/%3E%3C/svg%3E");
  --wavy-frame: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='450' viewBox='0 0 300 450' preserveAspectRatio='none'%3E%3Cpath fill='%23000' d='M 18 0 A 18.857142857142858 18.857142857142858 0 0 1 55.714285714285715 0 A 18.857142857142858 18.857142857142858 0 0 1 93.42857142857143 0 A 18.857142857142858 18.857142857142858 0 0 1 131.14285714285714 0 A 18.857142857142858 18.857142857142858 0 0 1 168.85714285714286 0 A 18.857142857142858 18.857142857142858 0 0 1 206.57142857142858 0 A 18.857142857142858 18.857142857142858 0 0 1 244.28571428571428 0 A 18.857142857142858 18.857142857142858 0 0 1 282 0 A 17.25 17.25 0 0 1 300 52.5 A 17.25 17.25 0 0 1 300 87 A 17.25 17.25 0 0 1 300 121.5 A 17.25 17.25 0 0 1 300 156 A 17.25 17.25 0 0 1 300 190.5 A 17.25 17.25 0 0 1 300 225 A 17.25 17.25 0 0 1 300 259.5 A 17.25 17.25 0 0 1 300 294 A 17.25 17.25 0 0 1 300 328.5 A 17.25 17.25 0 0 1 300 363 A 17.25 17.25 0 0 1 300 397.5 A 17.25 17.25 0 0 1 300 432 A 18.857142857142858 18.857142857142858 0 0 1 244.28571428571428 450 A 18.857142857142858 18.857142857142858 0 0 1 206.57142857142856 450 A 18.857142857142858 18.857142857142858 0 0 1 168.85714285714286 450 A 18.857142857142858 18.857142857142858 0 0 1 131.14285714285714 450 A 18.857142857142858 18.857142857142858 0 0 1 93.42857142857142 450 A 18.857142857142858 18.857142857142858 0 0 1 55.71428571428572 450 A 18.857142857142858 18.857142857142858 0 0 1 18 450 A 17.25 17.25 0 0 1 0 397.5 A 17.25 17.25 0 0 1 0 363 A 17.25 17.25 0 0 1 0 328.5 A 17.25 17.25 0 0 1 0 294 A 17.25 17.25 0 0 1 0 259.5 A 17.25 17.25 0 0 1 0 225 A 17.25 17.25 0 0 1 0 190.5 A 17.25 17.25 0 0 1 0 156 A 17.25 17.25 0 0 1 0 121.5 A 17.25 17.25 0 0 1 0 87 A 17.25 17.25 0 0 1 0 52.5 A 17.25 17.25 0 0 1 0 18 Z'/%3E%3C/svg%3E");

  /* which anchor leads the small accents (tweakable: gold | patina) */
  --accent-lead: var(--ks-kinpaku);
}

html.light {
  color-scheme: light;
  --ks-kinpaku-ink:    oklch(56% 0.11 82);
  --ks-patina:         oklch(70% 0.12 188);
  --ks-patina-deep:    oklch(49% 0.08 188);
  --ks-vermilion:      oklch(52% 0.16 35);
  --ks-lacquer:        oklch(97% 0.012 95);
  --ks-lacquer-deep:   oklch(94% 0.014 95);
  --ks-lacquer-raised: oklch(99% 0.008 95);
  --ks-graphite:       oklch(91% 0.012 95);
  --ks-graphite-2:     oklch(88% 0.014 95);
  --ks-champagne:      oklch(18% 0.02 95);
  --ks-text:           oklch(25% 0.018 95);
  --ks-text-muted:     oklch(45% 0.015 95);
  --ks-text-faint:     oklch(55% 0.012 95);
  --ks-text-mute-deep: oklch(65% 0.01 95);
  --ks-rule:           oklch(25% 0.02 95 / 0.12);
  --ks-rule-strong:    oklch(61% 0.085 78 / 0.45);
}

/* ---- Reset ---- */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

body {
  background: var(--ks-lacquer);
  color: var(--ks-text);
  font-family: var(--ks-font);
  font-size: 1.02rem;
  line-height: 1.8;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
  transition: background .5s var(--ks-ease), color .5s var(--ks-ease);
}
img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
::selection { background: var(--ks-kinpaku); color: var(--ks-lacquer-deep); }

/* ---- Faint lacquer grain ---- */
.grain {
  position: fixed; inset: 0; pointer-events: none; z-index: 9000;
  opacity: 0.035;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
body.no-motion .grain { display: none; }

/* ---- warm reskin: serif display, mixed case ---- */
.hero-h1, .work-info h3, .footer h2, .cs-hero h1, .cs-next h3,
.reel-title h1, .cs-section-label h2, .cs-hero .about-statement {
  text-transform: none !important; letter-spacing: -0.005em; font-weight: 400;
}
.brand .wordmark { text-transform: none; letter-spacing: 0.005em; font-size: 1.2rem; font-weight: 400; }

/* ---- helpers ---- */
.wrap { max-width: var(--maxw); margin: 0 auto; padding-left: var(--pad); padding-right: var(--pad); }
.mono { font-family: var(--ks-mono); font-size: 0.72rem; font-weight: 500; letter-spacing: 0.22em; text-transform: uppercase; }
.eyebrow {
  font-family: var(--ks-mono); font-size: 0.7rem; font-weight: 500; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--ks-text-muted); display: inline-flex; align-items: center; gap: 12px;
}
.eyebrow::before { content: ""; width: 26px; height: 1px; background: var(--accent-lead); display: inline-block; }
.gold { color: var(--ks-kinpaku); }
.patina { color: var(--ks-patina); }

/* ============================================================
   NAV
   ============================================================ */
.nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 1000;
  display: flex; align-items: center; justify-content: space-between;
  padding: 15px var(--pad);
  transition: padding .4s var(--ks-ease);
  background: var(--ks-kinpaku);
  border-bottom: 2px solid var(--ks-kinpaku-deep);
}
.nav.scrolled {
  padding-top: 12px; padding-bottom: 12px;
  background: var(--ks-kinpaku);
  border-bottom: 2px solid var(--ks-kinpaku-deep);
}
/* centered name sticker straddling the bar */
.brand { position: absolute; left: 50%; top: 100%; transform: translate(-50%,-46%); z-index: 2; display: flex; align-items: center; gap: 0; background: transparent; padding: 0; border-radius: 0; box-shadow: none; transition: transform .35s var(--ks-ease); }
.brand:hover { transform: translate(-50%,-46%) scale(1.04); }
.brand .wordmark {
  font-family: "Anton", var(--ks-font); font-weight: 400; text-transform: uppercase;
  font-size: 1.5rem; letter-spacing: 0.03em; color: var(--ks-kinpaku); line-height: 1; white-space: nowrap;
  -webkit-text-stroke: 11px var(--acc-cream); paint-order: stroke fill;
  filter: drop-shadow(1px 3px 0 oklch(30% 0.05 40 / 0.22));
}
.nav-links { display: flex; align-items: center; gap: 22px; }
.nav-links a {
  font-family: var(--ks-mono); font-size: 0.72rem; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase;
  color: color-mix(in oklab, var(--acc-cream) 82%, transparent); position: relative; padding: 4px 0; transition: color .3s var(--ks-ease);
}
.nav-links a::after { content: none; }
.nav-links a:hover { color: var(--acc-cream); }
.nav-cta {
  display: inline-flex; align-items: center; gap: 10px;
  font-family: var(--ks-mono); font-size: 0.7rem; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--ks-kinpaku); background: var(--acc-chartreuse); padding: 11px 20px; border: none; border-radius: 100px; white-space: nowrap;
  transition: transform .3s var(--ks-ease), background .3s;
}
.nav-cta:hover { background: var(--acc-cream); transform: translateY(-1px); }
.nav-links a .lchar .lb { color: var(--acc-chartreuse); }

/* ---- mobile nav ---- */
.nav-toggle {
  display: none; margin-left: auto; position: relative; z-index: 3;
  width: 46px; height: 46px; padding: 0; border: none; background: transparent;
  cursor: pointer; align-items: center; justify-content: center; flex-direction: column; gap: 5px;
}
.nav-toggle span {
  display: block; width: 24px; height: 2px; border-radius: 2px; background: var(--acc-cream);
  transition: transform .34s var(--ks-ease), opacity .2s var(--ks-ease);
}
body.menu-open .nav-toggle span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
body.menu-open .nav-toggle span:nth-child(2) { opacity: 0; }
body.menu-open .nav-toggle span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

.mobile-menu {
  position: fixed; inset: 0; z-index: 90; display: flex; flex-direction: column;
  justify-content: center; gap: clamp(16px, 3vh, 26px);
  padding: calc(env(safe-area-inset-top) + 96px) var(--pad) calc(env(safe-area-inset-bottom) + 40px);
  background: var(--acc-plum);
  opacity: 0; visibility: hidden; transform: translateY(-8px);
  transition: opacity .34s var(--ks-ease), transform .34s var(--ks-ease), visibility .34s;
}
body.menu-open .mobile-menu { opacity: 1; visibility: visible; transform: none; }
.mobile-menu a.mm-link {
  font-family: "Anton", var(--ks-font); font-weight: 400; text-transform: uppercase;
  font-size: clamp(2.1rem, 11vw, 3.4rem); line-height: 1; letter-spacing: 0.01em;
  color: var(--acc-cream); padding: 6px 0;
}
.mobile-menu a.mm-link:active { color: var(--acc-chartreuse); }
.mobile-menu .mm-cta {
  margin-top: clamp(18px, 4vh, 34px); align-self: flex-start;
  display: inline-flex; align-items: center; font-family: var(--ks-mono);
  font-size: 0.78rem; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--ks-kinpaku); background: var(--acc-chartreuse);
  padding: 15px 26px; border-radius: 100px;
}
.mobile-menu .mm-foot {
  margin-top: auto; font-family: var(--ks-mono); font-size: 0.68rem; letter-spacing: 0.12em;
  text-transform: uppercase; color: color-mix(in oklab, var(--acc-cream) 55%, transparent);
}
body.no-motion .mobile-menu, body.no-motion .nav-toggle span { transition: none; }
body.menu-open { overflow: hidden; }
/* The bar sits above the panel so the close button stays tappable — drop its
   own background while open so the two don't read as separate bands. */
body.menu-open .nav,
body.menu-open .nav.scrolled { background: transparent; border-bottom-color: transparent; }

@media (max-width: 860px) {
  .nav-links, .nav-cta { display: none; }
  .nav-toggle { display: flex; }
}
@media (min-width: 861px) {
  .mobile-menu { display: none; }
}

/* ============================================================
   BUTTONS — kit-style, 2px radius, min 58px
   ============================================================ */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 12px;
  min-height: 58px; padding: 0 32px; border-radius: 2px; cursor: pointer;
  font-family: var(--ks-font); font-size: 0.96rem; font-weight: 500; letter-spacing: 0.01em;
  border: 1px solid transparent; transition: transform .35s var(--ks-ease), background .35s, color .35s, border-color .35s;
}
.btn-solid { background: var(--ks-kinpaku); color: var(--ks-lacquer-deep); border-color: var(--ks-kinpaku); }
.btn-solid:hover { background: var(--ks-kinpaku-pale); transform: translateY(-2px); }
.btn-ghost { background: transparent; color: var(--ks-kinpaku); border-color: var(--ks-rule-strong); }
.btn-ghost:hover { transform: translateY(-2px); border-color: var(--ks-kinpaku); }
.btn .play { width: 0; height: 0; border-left: 9px solid currentColor; border-top: 6px solid transparent; border-bottom: 6px solid transparent; }

/* ============================================================
   HERO
   ============================================================ */
.hero { position: relative; min-height: auto; display: flex; align-items: center; overflow: hidden;
  padding: clamp(118px,15vh,148px) var(--pad) clamp(48px,7vh,80px);
  background: radial-gradient(70% 60% at 88% 6%, oklch(82% 0.085 340 / 0.35), transparent 62%), radial-gradient(60% 55% at 4% 92%, oklch(88% 0.14 115 / 0.28), transparent 60%), var(--ks-lacquer); }
.hero-grid { width: 100%; max-width: var(--maxw); margin: 0 auto; display: grid; grid-template-columns: 1.02fr 0.98fr; gap: clamp(32px,5vw,80px); align-items: center; }
.hero-lead .eyebrow { margin-bottom: clamp(18px,2.6vh,28px); }
.hero-h1 {
  font-family: var(--ks-font-display); font-weight: 400; letter-spacing: -0.01em;
  font-size: clamp(2.9rem, 6.2vw, 5.6rem); line-height: 1.02; color: var(--ks-champagne);
  margin-bottom: clamp(20px,3vh,30px); max-width: 15ch;
}
.hero-h1 em { font-style: normal; color: var(--ks-kinpaku); }
.hero-lead .hero-lede { max-width: 46ch; color: var(--ks-text-muted); font-size: clamp(1rem,1.2vw,1.15rem); line-height: 1.65; margin-bottom: clamp(26px,3.5vh,38px); }
.hero-actions { display: flex; gap: 14px; flex-wrap: wrap; margin-bottom: clamp(24px,3vh,34px); }
.hero-tags { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; font-family: var(--ks-mono); font-size: 0.7rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ks-text-faint); }
.hero-tags .avail { display: inline-flex; align-items: center; gap: 9px; color: var(--ks-text-muted); }
.hero-tags .avail .pulse { width: 7px; height: 7px; border-radius: 50%; background: var(--ks-patina); box-shadow: 0 0 10px oklch(70% 0.105 190 / 0.7); animation: pulse 2.6s var(--ks-ease) infinite; }
.hero-media { position: relative; z-index: 1; }
.hero-stripes { position: absolute; top: 0; bottom: 0; right: calc(var(--pad) * -1); left: 50%; z-index: 0; pointer-events: none;
  background: repeating-linear-gradient(90deg, var(--acc-lilac) 0 20px, transparent 20px 40px);
  opacity: 0.55; }
.hero-grid { position: relative; z-index: 1; }
.hero-frame { position: relative; z-index: 1; aspect-ratio: 16/9; border-radius: 10px; overflow: hidden; border: 6px solid var(--acc-cream); background: var(--ks-lacquer-deep); box-shadow: 0 22px 46px oklch(34% 0.095 8 / 0.2); transform: rotate(1.4deg); }
.hero-badge { position: absolute; z-index: 3; right: -26px; bottom: -26px; width: 108px; height: 108px; display: grid; place-items: center; background: var(--acc-sage); border-radius: 50%; box-shadow: 0 0 0 5px var(--acc-cream), 0 8px 18px oklch(34% 0.095 8 / 0.18); }
.hero-badge svg { position: absolute; inset: 0; width: 100%; height: 100%; animation: spin 16s linear infinite; }
body.no-motion .hero-badge svg { animation: none; }
@keyframes spin { to { transform: rotate(360deg); } }
.hero-badge text { font-family: var(--ks-mono); font-size: 9.5px; font-weight: 600; letter-spacing: 0.16em; fill: var(--acc-plum); text-transform: uppercase; }
.hero-badge-mark { font-size: 1.5rem; color: var(--acc-plum); }
@media (max-width: 900px) { .hero-badge { right: 10px; bottom: -22px; width: 88px; height: 88px; } }

/* ---- info ticker ---- */
.ticker { overflow: hidden; background: var(--ks-kinpaku); color: var(--acc-cream); padding: 13px 0; border-top: 2px solid var(--acc-plum); border-bottom: 2px solid var(--acc-plum); }
.ticker-row { display: flex; width: max-content; animation: tickerscroll 34s linear infinite; }
body.no-motion .ticker-row { animation: none; }
@keyframes tickerscroll { to { transform: translateX(-50%); } }
.ticker span { display: inline-block; white-space: nowrap; font-family: "Anton", var(--ks-font); text-transform: uppercase; font-size: 1.15rem; letter-spacing: 0.04em; }
.ticker b { color: var(--acc-chartreuse); font-weight: 400; margin: 0 6px; }
.hero-frame { transform: rotate(1.4deg); }
.hero-frame video { width: 100%; height: 100%; object-fit: cover; display: block; }
.hero-frame-tag { position: absolute; top: 14px; left: 14px; background: color-mix(in oklab, var(--ks-lacquer) 72%, transparent); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); border: 1px solid var(--ks-rule); border-radius: 100px; padding: 7px 13px; color: var(--ks-text-muted); }

/* ---- branded play control, shown only when autoplay is refused ---- */
.has-video-play { position: relative; }
.video-play {
  position: absolute; z-index: 5; top: 50%; left: 50%;
  transform: translate(-50%, -50%) scale(0.9);
  width: 74px; height: 74px; border-radius: 50%; cursor: pointer;
  display: grid; place-items: center; padding: 0;
  background: var(--acc-cream); color: var(--ks-kinpaku);
  border: none; box-shadow: 0 10px 26px oklch(34% 0.095 8 / 0.28);
  opacity: 0; visibility: hidden;
  transition: opacity .3s var(--ks-ease), transform .3s var(--ks-ease), visibility .3s;
}
.show-video-play .video-play { opacity: 1; visibility: visible; transform: translate(-50%, -50%) scale(1); }
.video-play:hover { background: var(--acc-chartreuse); }
.video-play:focus-visible { outline: 2px solid var(--ks-kinpaku); outline-offset: 4px; }
.video-play svg { width: 30px; height: 30px; margin-left: 3px; }
@media (max-width: 560px) { .video-play { width: 62px; height: 62px; } .video-play svg { width: 25px; height: 25px; } }

/* ---- sound toggle on self-hosted reels ---- */
/* Browsers only grant autoplay to muted video, so sound is always opt-in. */
.has-sound-toggle { position: relative; }
.sound-toggle {
  /* bottom-left: the spinning hero badge occupies the bottom-right corner */
  position: absolute; z-index: 4; left: 13px; bottom: 13px;
  display: inline-flex; align-items: center; gap: 9px;
  font-family: var(--ks-mono); font-size: 0.64rem; font-weight: 600;
  letter-spacing: 0.14em; text-transform: uppercase; line-height: 1;
  color: var(--ks-text-muted); cursor: pointer;
  background: color-mix(in oklab, var(--ks-lacquer) 74%, transparent);
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  border: 1px solid var(--ks-rule); border-radius: 100px; padding: 12px 17px;
  transition: background .3s var(--ks-ease), color .3s var(--ks-ease), transform .3s var(--ks-ease);
}
.sound-toggle:hover { background: var(--acc-cream); color: var(--ks-kinpaku); transform: translateY(-1px); }
.sound-toggle:focus-visible { outline: 2px solid var(--ks-kinpaku); outline-offset: 3px; }
.sound-toggle svg { width: 15px; height: 15px; flex: none; }
.sound-toggle .wave { opacity: 0; transition: opacity .25s var(--ks-ease); }
.sound-toggle[aria-pressed="true"] { background: var(--acc-chartreuse); color: var(--ks-kinpaku); border-color: transparent; }
.sound-toggle[aria-pressed="true"] .wave { opacity: 1; }
.sound-toggle .slash { opacity: 1; transition: opacity .25s var(--ks-ease); }
.sound-toggle[aria-pressed="true"] .slash { opacity: 0; }
@media (max-width: 560px) { .sound-toggle { left: 9px; bottom: 9px; padding: 11px 14px; font-size: 0.6rem; } }
@media (max-width: 900px) {
  .hero-grid { grid-template-columns: 1fr; gap: clamp(28px,5vh,40px); }
  .hero-frame { aspect-ratio: 16/9; }
  /* Once the hero stacks, the half-width stripe panel spans the whole page and
     reads as stray page furniture. Tuck it behind the showreel instead. */
  .hero-stripes { display: none; }
  .hero-media::before {
    content: ""; position: absolute; z-index: 0; pointer-events: none;
    top: -16px; bottom: -16px; left: -14px; right: -14px;
    background: repeating-linear-gradient(90deg, var(--acc-lilac) 0 20px, transparent 20px 40px);
    opacity: 0.55;
  }
}

/* ============================================================
   MARQUEE — clients
   ============================================================ */
.marquee-sec { padding: clamp(40px,7vh,80px) 0; border-top: 1px solid var(--ks-rule); border-bottom: 1px solid var(--ks-rule); overflow: hidden; }
.marquee-sec .label { text-align: center; margin-bottom: 28px; color: var(--ks-text-faint); }
.marquee { display: flex; white-space: nowrap; width: max-content; will-change: transform; }
.marquee.row1 { animation: scrollx 40s linear infinite; }
.marquee.row2 { animation: scrollx 32s linear infinite reverse; }
body.no-motion .marquee { animation: none !important; }
@keyframes scrollx { to { transform: translateX(-50%); } }
.marquee .item {
  display: inline-flex; align-items: center; gap: clamp(34px,5vw,72px); padding-right: clamp(34px,5vw,72px);
  font-family: var(--ks-font-display); font-weight: 400; letter-spacing: 0;
  font-size: clamp(2.4rem, 5vw, 5rem); color: var(--ks-champagne); text-transform: uppercase;
}
.marquee .item .star { color: var(--accent-lead); font-family: var(--ks-font); font-weight: 400; font-size: 0.34em; }
.marquee.row2 .item { color: var(--ks-text-faint); }
.marquee.row2 .item .star { color: var(--ks-patina); }

/* ============================================================
   SECTION SHELL
   ============================================================ */
.section { padding: clamp(80px, 12vh, 150px) 0; }
.section-head { display: flex; align-items: baseline; justify-content: space-between; gap: 24px; margin-bottom: clamp(48px,6.5vh,76px); flex-wrap: wrap; }
.section-head h2 {
  font-family: "Anton", var(--ks-font); font-weight: 400; text-transform: uppercase;
  font-size: clamp(2.4rem, 5vw, 4.2rem); line-height: 1.06; color: var(--ks-kinpaku); letter-spacing: 0.01em;
  -webkit-text-stroke: 11px var(--acc-cream); paint-order: stroke fill;
  filter: drop-shadow(1px 2px 0 oklch(34% 0.095 8 / 0.12));
}
.toolkit-sec .section-head h2 { -webkit-text-stroke-color: var(--acc-cream); }
.section-index { display: inline-block; font-family: var(--ks-mono); font-size: 0.66rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--acc-plum); background: var(--acc-chartreuse); padding: 9px 16px; border-radius: 100px; transform: rotate(2deg); box-shadow: 0 0 0 4px var(--acc-cream), 0 6px 14px oklch(34% 0.095 8 / 0.14); align-self: center; }
.section.band .section-index { background: var(--acc-lilac); }
.toolkit-sec .section-index { background: var(--acc-sage); }
#work .section-index { background: var(--acc-blue); color: var(--ks-kinpaku); }
#statics .section-index { background: var(--acc-sage); color: var(--acc-plum); }

/* ---- STATIC WORK ---- */
.statics-intro { max-width: 52ch; color: var(--ks-text-muted); font-size: clamp(1rem,1.2vw,1.15rem); line-height: 1.6; margin-bottom: clamp(30px,5vh,52px); }
.static-group { margin-bottom: clamp(36px,5vh,60px); }
.static-head { display: flex; align-items: baseline; gap: 16px; margin-bottom: 16px; padding-bottom: 12px; border-bottom: 2px solid var(--ks-rule); }
.static-head h3 { font-family: var(--ks-font-display); font-weight: 400; font-size: clamp(1.4rem,2.4vw,2.1rem); color: var(--ks-champagne); line-height: 1; }
.static-head .mono { color: var(--ks-text-faint); margin-left: auto; }
.static-grid { display: grid; gap: 14px; }
.static-grid.g2 { grid-template-columns: repeat(2,1fr); }
.static-grid.g3 { grid-template-columns: repeat(3,1fr); }
.static-grid.g4 { grid-template-columns: repeat(4,1fr); }
.static-grid image-slot { width: 100%; aspect-ratio: 4/5; display: block; border-radius: 14px; overflow: hidden; }
@media (max-width: 760px) { .static-grid.g3, .static-grid.g4 { grid-template-columns: repeat(2,1fr); } }
@media (max-width: 440px) { .static-grid.g2, .static-grid.g3, .static-grid.g4 { grid-template-columns: 1fr; } }

/* ---- STATIC CAROUSEL ---- */
.carousel { position: relative; margin-top: clamp(28px,5vh,48px); }
.carousel-track { display: flex; gap: 18px; overflow-x: auto; scroll-snap-type: x mandatory; padding: 4px var(--pad) 20px; -webkit-overflow-scrolling: touch; scrollbar-width: none; cursor: grab; }
.carousel-track::-webkit-scrollbar { display: none; }
.carousel-track.dragging { cursor: grabbing; scroll-snap-type: none; }
.cslide { flex: 0 0 auto; scroll-snap-align: center; margin: 0; }
.cslide img { height: clamp(300px, 46vh, 460px); width: auto; display: block; border-radius: 16px; border: 1px solid var(--ks-rule); background: var(--ks-lacquer-raised); object-fit: cover; }
.cslide figcaption { margin-top: 12px; font-family: var(--ks-font-display); font-size: clamp(1.1rem,1.6vw,1.4rem); color: var(--ks-champagne); line-height: 1.1; }
.cslide figcaption span { display: block; font-family: var(--ks-mono); font-size: 0.66rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ks-text-faint); margin-top: 4px; }
.carousel-nav { position: absolute; top: calc(50% - 40px); transform: translateY(-50%); z-index: 4; width: 52px; height: 52px; border-radius: 50%; border: none; background: var(--ks-kinpaku); color: var(--acc-cream); font-size: 1.3rem; cursor: pointer; box-shadow: 0 6px 18px oklch(34% 0.095 8 / 0.22); transition: transform .25s var(--ks-ease), background .25s; }
.carousel-nav:hover { transform: translateY(-50%) scale(1.08); background: var(--ks-kinpaku-pale); }
.carousel-nav.prev { left: clamp(8px,2vw,28px); }
.carousel-nav.next { right: clamp(8px,2vw,28px); }
.carousel-nav[hidden] { display: none; }
@media (max-width: 640px) { .carousel-nav { display: none; } }

/* ---- ABOUT ---- */
.about { display: grid; grid-template-columns: 0.85fr 1.15fr; gap: clamp(40px,6vw,84px); align-items: start; }
.about-portrait { position: relative; border: none; border-radius: 4px 6px 5px 7px / 6px 4px 7px 5px; padding: 15px 15px 15px; background: var(--acc-cream); transform: rotate(-2.4deg); box-shadow: 0 22px 42px oklch(34% 0.095 8 / 0.2); -webkit-mask: none; mask: none; }
.about-portrait image-slot, .about-portrait .portrait-img { position: relative; z-index: 1; width: 100%; aspect-ratio: 2/3; display: block; object-fit: cover; object-position: 50% 28%; border-radius: 2px; -webkit-mask: none; mask: none; }
.about-portrait .tag {
  position: absolute; left: 50%; bottom: 22px; transform: translateX(-50%) rotate(-2deg); z-index: 2; background: oklch(58% 0.13 72); color: var(--acc-cream);
  padding: 9px 26px; border-radius: 100px; font-family: var(--script-font); font-weight: 700; font-size: 1.25rem; letter-spacing: 0; text-transform: none; box-shadow: 0 4px 12px oklch(34% 0.095 8 / 0.2);
}
.about-body p.big {
  font-family: var(--ks-font-display); font-weight: 600; font-size: clamp(1.5rem, 2.4vw, 2.3rem); line-height: 1.15;
  color: var(--ks-champagne); margin-bottom: 30px; text-wrap: pretty;
}
.about-body p.big em { font-style: normal; color: var(--ks-kinpaku); }
.about-body p.sub { color: var(--ks-text-muted); font-size: 1.02rem; line-height: 1.8; max-width: 62ch; margin-bottom: 40px; text-wrap: pretty; }
.disciplines { border-top: 1px solid var(--ks-rule); }
.disciplines .d { display: flex; align-items: baseline; gap: 20px; padding: 18px 0; border-bottom: 1px solid var(--ks-rule); }
.disciplines .d .n { font-family: var(--ks-mono); font-size: 0.72rem; letter-spacing: 0.18em; color: var(--ks-kinpaku); width: 42px; flex: none; }
.disciplines .d .t { font-family: var(--ks-font); font-weight: 600; font-size: clamp(1.05rem,1.5vw,1.3rem); color: var(--ks-champagne); }
.disciplines .d .x { margin-left: auto; color: var(--ks-text-faint); font-size: 0.9rem; line-height: 1.5; text-align: right; max-width: 40ch; }

/* ============================================================
   WORK — alternating rows
   ============================================================ */
.work-list { display: flex; flex-direction: column; }
.work-row {
  position: relative; display: grid; grid-template-columns: 1fr 1fr; gap: clamp(24px,4vw,60px);
  align-items: center; padding: clamp(34px,5vh,60px) 0; border-top: 1px solid var(--ks-rule);
}
.work-row:last-child { border-bottom: 1px solid var(--ks-rule); }
.work-row.rev .work-media { order: 2; }
.work-row.rev .work-info { order: 1; }

.work-media {
  position: relative; aspect-ratio: 16/10; border-radius: 16px; overflow: hidden;
  background: var(--ks-lacquer-raised); border: 1px solid var(--ks-rule);
}
.work-media image-slot, .work-media video, .work-media .ph { position: absolute; inset: 0; width: 100%; height: 100%; }
.work-media .ph { z-index: 0; }
.work-media video { object-fit: cover; opacity: 1; z-index: 1; transition: transform 1.2s var(--ks-ease); transform: scale(1.0); }
.work-row:hover .work-media video { transform: scale(1.03); }
.work-media .ph {
  display: flex; align-items: center; justify-content: center;
  background:
    radial-gradient(120% 120% at 30% 15%, var(--ks-graphite), var(--ks-lacquer-raised));
  color: var(--ks-text-faint); transition: transform 1.2s var(--ks-ease);
}
.work-row:hover .work-media .ph { transform: scale(1.03); }
.work-media .ph .logo { max-width: 54%; max-height: 36%; object-fit: contain; opacity: .95; }
.work-media .ph .glyph { font-family: var(--ks-font-display); font-weight: 300; font-size: clamp(3rem,6vw,6rem); color: var(--ks-champagne); opacity: .16; text-transform: uppercase; }
.work-media iframe.preview-vid {
  position: absolute; inset: 0; width: 100%; height: 100%;
  border: 0; opacity: 0; transition: opacity .6s var(--ks-ease); z-index: 2; pointer-events: none;
  transform: scale(1.0); transition: opacity .6s var(--ks-ease), transform 1.2s var(--ks-ease);
}
.work-media iframe.preview-vid.show { opacity: 1; }
.work-row:hover .work-media iframe.preview-vid.show { transform: scale(1.03); }
.work-media .badge {
  position: absolute; bottom: 12px; left: 12px; z-index: 3;
  font-family: var(--script-font); font-size: 1.15rem; font-weight: 700; letter-spacing: 0; text-transform: none;
  background: var(--acc-cream); padding: 7px 16px; border-radius: 40% 60% 55% 45% / 55% 45% 58% 45%; border: 1px solid var(--ks-rule); color: var(--ks-kinpaku); transform: rotate(-4deg); box-shadow: 0 6px 16px oklch(34% 0.095 8 / 0.14);
}

.work-info .wnum { font-family: var(--ks-mono); font-size: 0.72rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--ks-kinpaku); margin-bottom: 16px; display: block; }
.work-info h3 {
  font-family: var(--ks-font-display); font-weight: 400; text-transform: uppercase; letter-spacing: -0.01em;
  font-size: clamp(2.8rem, 6vw, 5.6rem); line-height: 0.96; color: var(--ks-champagne); margin-bottom: 16px;
  transition: transform .5s var(--ks-ease);
}
.work-row:hover .work-info h3 { transform: translateX(8px); }
.work-info h3 .of { color: var(--ks-text-faint); transition: color .5s; }
.work-row:hover .work-info h3 .of { color: var(--ks-kinpaku); }
.work-info .desc { color: var(--ks-text-muted); max-width: 46ch; font-size: 1rem; line-height: 1.65; margin-bottom: 22px; text-wrap: pretty; }
.work-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 26px; }
.work-tags span { font-family: var(--ks-mono); font-size: 0.62rem; font-weight: 500; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ks-text-muted); border: 1px solid var(--ks-rule); border-radius: 2px; padding: 6px 11px; }
.work-link { display: inline-flex; align-items: center; gap: 12px; font-family: var(--ks-mono); font-size: 0.72rem; font-weight: 500; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ks-champagne); }
.work-link .arr { display: inline-block; transition: transform .4s var(--ks-ease); color: var(--ks-kinpaku); }
.work-row:hover .work-link .arr { transform: translateX(8px); }
.work-link .ln { position: relative; }
.work-link .ln::after { content:""; position:absolute; left:0; bottom:-3px; width:100%; height:1px; background: var(--ks-kinpaku); transform: scaleX(0); transform-origin: left; transition: transform .4s var(--ks-ease); }
.work-row:hover .work-link .ln::after { transform: scaleX(1); }

@media (max-width: 880px) {
  .about { grid-template-columns: 1fr; }
  .work-row { grid-template-columns: 1fr; gap: 22px; }
  .work-row.rev .work-media, .work-row.rev .work-info { order: 0; }
}

/* ============================================================
   FOOTER — strongest oxidation accent
   ============================================================ */
.footer { padding: clamp(80px,12vh,150px) 0 50px; position: relative; border-top: 1px solid var(--ks-rule-strong);
  background: var(--acc-plum); color: var(--acc-cream);
  --ks-champagne: var(--acc-cream);
  --ks-text: oklch(96% 0.02 88 / 0.82);
  --ks-text-muted: oklch(96% 0.02 88 / 0.72);
  --ks-text-faint: oklch(96% 0.02 88 / 0.5);
  --ks-rule: oklch(96% 0.02 88 / 0.18);
  --ks-kinpaku: var(--acc-chartreuse);
  --ks-lacquer-deep: var(--acc-plum);
}
.footer::before { content:""; position:absolute; top:-1px; left:0; right:0; height:2px; background: linear-gradient(90deg, transparent, var(--ks-kinpaku) 30%, var(--ks-patina) 70%, transparent); opacity: .8; }
.footer .eyebrow { margin-bottom: 26px; }
.footer h2 {
  font-family: var(--ks-font-display); font-weight: 400; text-transform: uppercase; letter-spacing: -0.01em;
  font-size: clamp(2.2rem, 6.5vw, 5rem); line-height: 0.96; margin-bottom: 40px; color: var(--ks-champagne);
}
.footer h2 a { transition: color .4s var(--ks-ease); }
.footer h2 a:hover { color: var(--ks-kinpaku); }
.footer-grid { display: flex; justify-content: space-between; gap: 30px; flex-wrap: wrap; align-items: flex-end; border-top: 1px solid var(--ks-rule); padding-top: 34px; }
.footer-cols { display: flex; gap: clamp(36px,6vw,84px); flex-wrap: wrap; }
.footer-col .h { font-family: var(--ks-mono); font-size: 0.66rem; font-weight: 500; letter-spacing: 0.18em; text-transform: uppercase; color: var(--ks-text-faint); margin-bottom: 12px; }
.footer-col a { display: block; padding: 4px 0; color: var(--ks-text-muted); transition: color .3s, transform .3s; }
.footer-col a:hover { color: var(--ks-kinpaku); transform: translateX(4px); }
.footer-bottom { display: flex; justify-content: space-between; gap: 16px; margin-top: 56px; color: var(--ks-text-faint); font-family: var(--ks-mono); font-size: 0.66rem; font-weight: 500; letter-spacing: 0.12em; text-transform: uppercase; flex-wrap: wrap; }
.avail { display: inline-flex; align-items: center; gap: 10px; }
.avail .pulse { width: 8px; height: 8px; border-radius: 50%; background: var(--ks-patina); box-shadow: 0 0 12px oklch(70% 0.105 190 / 0.5); animation: pulse 2.6s var(--ks-ease) infinite; }
@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:.45} }
body.no-motion .pulse, body.no-motion .badge-pill .dot { animation: none !important; }

/* ============================================================
   REVEAL + cursor tag
   ============================================================ */
.reveal { transition: opacity .9s var(--ks-ease), transform .9s var(--ks-ease); }
html.js .reveal { opacity: 0; transform: translateY(34px); }
html.js .reveal.in { opacity: 1; transform: none; }
.reveal[data-d="1"] { transition-delay: .08s; }
.reveal[data-d="2"] { transition-delay: .16s; }
.reveal[data-d="3"] { transition-delay: .24s; }
body.no-motion .reveal { opacity: 1 !important; transform: none !important; }

.cursor-tag {
  position: fixed; top: 0; left: 0; z-index: 8000; pointer-events: none;
  background: var(--ks-kinpaku); color: var(--ks-lacquer-deep);
  font-family: var(--ks-mono); font-size: 0.64rem; font-weight: 500; letter-spacing: 0.14em; text-transform: uppercase;
  padding: 9px 15px; border-radius: 2px; transform: translate(-50%,-50%) scale(0); opacity: 0; transition: transform .3s var(--ks-ease), opacity .3s var(--ks-ease); white-space: nowrap;
}
.cursor-tag.show { transform: translate(-50%,-50%) scale(1); opacity: 1; }
body.no-motion .cursor-tag { display: none; }

/* ============================================================
   CASE STUDY
   ============================================================ */
.cs-hero { padding: 140px var(--pad) clamp(30px,5vh,56px); max-width: var(--maxw); margin: 0 auto; }
.cs-back { font-family: var(--ks-mono); font-size: 0.72rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ks-text-muted); display: inline-flex; gap: 10px; align-items: center; margin-bottom: 48px; transition: color .3s; }
.cs-back:hover { color: var(--ks-kinpaku); }
.cs-hero h1 { font-family: var(--ks-font-display); font-weight: 400; text-transform: uppercase; letter-spacing: -0.01em; font-size: clamp(3.6rem,11vw,8rem); line-height: 0.96; color: var(--ks-champagne); margin-bottom: 26px; }
.cs-sub { font-size: clamp(1.1rem,1.8vw,1.5rem); color: var(--ks-text-muted); max-width: 50ch; line-height: 1.45; margin-bottom: 48px; }
.cs-meta { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 24px; border-top: 1px solid var(--ks-rule); border-bottom: 1px solid var(--ks-rule); padding: 26px 0; }
.cs-meta .m .h { font-family: var(--ks-mono); font-size: 0.66rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ks-text-faint); margin-bottom: 8px; }
.cs-meta .m .v { font-weight: 600; font-size: 1rem; color: var(--ks-champagne); }
.cs-stage { margin: clamp(40px,6vh,76px) 0; }
.cs-stage .frame { aspect-ratio: 16/9; border-radius: 4px; overflow: hidden; position: relative; border: 1px solid var(--ks-rule); background: var(--ks-lacquer-deep); }
.cs-stage .frame video { width: 100%; height: 100%; object-fit: cover; }
.cs-stage .frame iframe { width: 100%; height: 100%; border: 0; display: block; }
.cs-stage.vert .frame { aspect-ratio: 9/16; max-width: 400px; margin: 0 auto; }
.cs-block { display: grid; grid-template-columns: 0.36fr 1fr; gap: clamp(30px,5vw,76px); padding: clamp(40px,7vh,84px) 0; border-top: 1px solid var(--ks-rule); }
.cs-block .k { font-family: var(--ks-mono); font-size: 0.72rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--ks-kinpaku); }
.cs-block .body p { font-size: clamp(1.05rem,1.4vw,1.3rem); line-height: 1.6; color: var(--ks-text); margin-bottom: 20px; max-width: 68ch; text-wrap: pretty; }
.cs-block .body p.muted { color: var(--ks-text-muted); }
.cs-list { list-style: none; }
.cs-list li { padding: 14px 0; border-bottom: 1px solid var(--ks-rule); display: flex; gap: 16px; align-items: baseline; }
.cs-list li .num { font-family: var(--ks-mono); color: var(--ks-kinpaku); font-size: 0.72rem; letter-spacing: 0.14em; }
.cs-gallery { display: grid; grid-template-columns: repeat(3,1fr); gap: 14px; padding: clamp(30px,5vh,56px) 0; }
.cs-gallery image-slot { width: 100%; aspect-ratio: 9/16; display: block; border: 1px solid var(--ks-rule); border-radius: 4px; }
.cs-gallery .wide { grid-column: span 3; }
.cs-gallery .wide image-slot { aspect-ratio: 16/9; }
.cs-next { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: clamp(50px,8vh,100px) 0; border-top: 1px solid var(--ks-rule); }
.cs-next .lbl { font-family: var(--ks-mono); font-size: 0.66rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--ks-text-faint); margin-bottom: 14px; }
.cs-next h3 { font-family: var(--ks-font-display); font-weight: 400; text-transform: uppercase; letter-spacing: -0.01em; font-size: clamp(3rem,8vw,7rem); line-height: 0.96; color: var(--ks-champagne); transition: color .4s; }
.cs-next a:hover h3 { color: var(--ks-kinpaku); }
.cs-next .arr { font-size: clamp(2.6rem,6vw,5rem); color: var(--ks-kinpaku); }

@media (max-width: 880px) {
  .cs-meta { grid-template-columns: repeat(2,1fr); }
  .cs-block { grid-template-columns: 1fr; gap: 16px; }
  .cs-gallery { grid-template-columns: 1fr 1fr; }
  .cs-gallery .wide { grid-column: span 2; }
}
@media (max-width: 540px) {
  .cs-gallery, .cs-gallery .wide { grid-template-columns: 1fr; grid-column: span 1; }
}

#tweaks-root { position: relative; z-index: 9500; }

/* ---- About / Contact page ---- */
.cs-hero .about-statement {
  font-family: var(--ks-font-display); font-weight: 400; text-transform: uppercase; letter-spacing: -0.01em;
  font-size: clamp(1.9rem, 4.2vw, 3.4rem); line-height: 1.08; color: var(--ks-champagne);
  max-width: 20ch; margin-top: 18px; text-wrap: balance;
}
.ac-actions { display: flex; gap: 14px; flex-wrap: wrap; }
.ac-contact { display: grid; grid-template-columns: 1.1fr 0.9fr; gap: clamp(36px,6vw,80px); align-items: start; border-top: 1px solid var(--ks-rule); padding-top: clamp(32px,5vh,52px); margin-bottom: 56px; }
.ac-form { display: flex; flex-direction: column; gap: 20px; max-width: 480px; }
.ac-field { display: flex; flex-direction: column; gap: 8px; }
.ac-field label { font-family: var(--ks-mono); font-size: 0.66rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ks-text-faint); }
.ac-field input, .ac-field textarea {
  background: var(--ks-lacquer-raised); border: 1px solid var(--ks-rule); border-radius: 2px;
  color: var(--ks-text); font-family: var(--ks-font); font-size: 1rem; padding: 14px 16px; width: 100%;
  transition: border-color .3s var(--ks-ease), background .3s;
}
.ac-field textarea { resize: vertical; min-height: 96px; }
.ac-field input:focus, .ac-field textarea:focus { outline: none; border-color: var(--ks-kinpaku); background: var(--ks-graphite); }
.ac-form .btn { align-self: flex-start; margin-top: 4px; }
.ac-note { font-family: var(--ks-mono); font-size: 0.66rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ks-text-faint); }
.ac-side { display: grid; grid-template-columns: 1fr 1fr; gap: 28px 24px; }
@media (max-width: 820px) {
  .ac-contact { grid-template-columns: 1fr; gap: 40px; }
}

/* ---- Video embeds (case study) ---- */
.cs-section-label { display: flex; align-items: baseline; gap: 16px; padding-top: clamp(36px,6vh,72px); margin-bottom: 26px; border-top: 1px solid var(--ks-rule); }
.cs-section-label .k { font-family: var(--ks-mono); font-size: 0.72rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--ks-kinpaku); }
.cs-section-label h2 { font-family: var(--ks-font-display); font-weight: 400; text-transform: uppercase; letter-spacing: -0.01em; font-size: clamp(1.6rem,3.2vw,2.6rem); color: var(--ks-champagne); line-height: 1; }
.cs-section-label .meta { margin-left: auto; font-family: var(--ks-mono); font-size: 0.66rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ks-text-faint); }

.embed { position: relative; overflow: hidden; border-radius: 14px; border: 1px solid var(--ks-rule); background: var(--ks-lacquer-deep); }
.embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; display: block; }
.embed.wide { aspect-ratio: 16/9; max-width: 680px; margin-left: auto; margin-right: auto; }
.embed.is-vert { max-width: min(320px, 78vw); margin-left: auto; margin-right: auto; }
.vgrid .embed, .wgrid .embed { max-width: none; width: 100%; }
.wgrid .embed.wide { max-width: none; }
.embed.vert { aspect-ratio: 9/16; }

.vgrid { display: grid; grid-template-columns: repeat(3,1fr); gap: 14px; padding: 4px 0 clamp(20px,4vh,40px); max-width: 620px; margin: 0 auto; }
@media (max-width: 760px) { .vgrid { grid-template-columns: 1fr 1fr; max-width: 420px; } }
@media (max-width: 460px) { .vgrid { grid-template-columns: 1fr; max-width: 300px; margin: 0 auto; } }

.wgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; padding: 4px 0 clamp(20px,4vh,40px); max-width: 900px; margin: 0 auto; }
@media (max-width: 760px) { .wgrid { grid-template-columns: 1fr; max-width: 520px; } }
.vcap { font-family: var(--ks-mono); font-size: 0.66rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ks-text-faint); margin-top: 10px; }

/* ============================================================
   LETTER-SWAP — per-letter roll on hover (native)
   ============================================================ */
.lswap { display: inline-flex; vertical-align: top; }
.lchar { position: relative; display: inline-block; overflow: hidden; white-space: pre; }
.lchar .la, .lchar .lb { display: block; transition: transform .5s var(--ks-ease); }
.lchar .lb { position: absolute; left: 0; top: 0; transform: translateY(110%); }
.lswap:hover .la, .lswap:focus-visible .la { transform: translateY(-110%); }
.lswap:hover .lb, .lswap:focus-visible .lb { transform: translateY(0); }
.lchar .lb { color: var(--ks-kinpaku); }
body.no-motion .lchar .lb { display: none; }
body.no-motion .lchar .la { transition: none; }

/* ============================================================
   FLIP CARDS — disciplines (native 3D flip)
   ============================================================ */
.flip-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
@media (max-width: 900px) { .flip-grid { grid-template-columns: 1fr 1fr; } }
.flip { perspective: 1300px; height: 272px; outline: none; }
.flip:nth-child(odd), .flip:nth-child(even) { transform: none; }
.h2-script { display: block; font-family: var(--script-font); font-weight: 700; color: var(--ks-kinpaku); font-size: 0.5em; line-height: 1; transform: rotate(-4deg); margin: 0 0 2px 4px; text-transform: none; -webkit-text-stroke: 0 !important; filter: none; }
.about-sticker { top: -20px; right: -14px; background: var(--acc-sage); color: var(--acc-plum); z-index: 4; }

/* ---- feature create line ---- */
.create-line { padding: clamp(20px,3vh,40px) 0 clamp(48px,7vh,80px); text-align: center; }
.create-blob { position: relative; display: inline-block; transform: rotate(-2deg); }
.create-line p { position: relative; z-index: 1; margin: 0; font-family: "Anton", var(--ks-font); font-weight: 400; text-transform: uppercase; font-size: clamp(1.9rem,5vw,4rem); line-height: 1.08; letter-spacing: 0.01em; color: var(--ks-patina-deep); max-width: none;
  -webkit-text-stroke: 14px var(--acc-cream); paint-order: stroke fill;
  filter: drop-shadow(2px 3px 0 oklch(34% 0.095 8 / 0.14)); }
.create-line em { font-family: inherit; font-style: normal; color: var(--ks-kinpaku); }

/* ---- education ---- */
.edu-list { display: grid; gap: 16px; }
.edu { display: flex; gap: 22px; align-items: flex-start; background: var(--ks-lacquer-raised); border: 1px solid var(--ks-rule); border-radius: 20px; padding: clamp(22px,2.4vw,32px); }
.edu-deg { flex: none; width: 62px; height: 62px; border-radius: 18px; display: flex; align-items: center; justify-content: center; background: var(--acc-blue); color: var(--ks-kinpaku); font-family: "Anton", var(--ks-font); font-size: 1.35rem; transform: rotate(-4deg); box-shadow: 0 0 0 4px var(--acc-cream), 0 6px 14px oklch(34% 0.095 8 / 0.14); }
.edu:nth-child(2) .edu-deg { background: var(--acc-sage); }
.edu-body h3 { font-family: var(--ks-font-display); font-weight: 400; font-size: clamp(1.3rem,2vw,1.8rem); color: var(--ks-champagne); line-height: 1.05; margin-bottom: 6px; }
.edu-body p { color: var(--ks-text-muted); font-size: 0.98rem; line-height: 1.55; max-width: 60ch; }
.flip-graphic { flex: none; width: 66px; height: 66px; border-radius: 20px; display: flex; align-items: center; justify-content: center; background: var(--acc-lilac); margin-bottom: auto; transform: rotate(-5deg); box-shadow: 0 0 0 4px var(--acc-cream), 0 7px 16px oklch(34% 0.095 8 / 0.16); }
.flip-graphic svg { width: 40px; height: 40px; display: block; }
.flip-graphic svg * { stroke-width: 5; }
.flip:nth-child(1) .flip-graphic { background: var(--acc-lilac); }
.flip:nth-child(2) .flip-graphic { background: var(--acc-sage); }
.flip:nth-child(3) .flip-graphic { background: var(--acc-chartreuse); }
.flip:nth-child(4) .flip-graphic { background: var(--acc-blue); }
.flip-fbottom { display: flex; flex-direction: column; gap: 7px; }
.flip-inner { position: relative; width: 100%; height: 100%; transform-style: preserve-3d; transition: transform .7s cubic-bezier(0.4, 0.2, 0.2, 1); }
.flip:hover .flip-inner, .flip:focus-visible .flip-inner { transform: rotateY(180deg); }
.flip-front, .flip-back { position: absolute; inset: 0; -webkit-backface-visibility: hidden; backface-visibility: hidden; border: 1px solid var(--ks-rule); border-radius: 16px; padding: 20px; display: flex; flex-direction: column; justify-content: space-between; overflow: hidden; }
.flip-front { background: var(--ks-lacquer-raised); transform: rotateY(0deg) translateZ(2px); }
.flip-front::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: linear-gradient(90deg, var(--ks-kinpaku), transparent); transform: scaleX(0); transform-origin: left; transition: transform .5s var(--ks-ease); }
.flip:hover .flip-front::after { transform: scaleX(1); }
.flip-back { background: linear-gradient(155deg, var(--ks-graphite) 0%, var(--ks-lacquer-raised) 100%); transform: rotateY(180deg) translateZ(2px); border-color: var(--ks-rule-strong); }
.flip-fnum { font-family: var(--ks-mono); font-size: 0.72rem; letter-spacing: 0.18em; color: var(--ks-kinpaku); }
.flip-ftitle { font-family: var(--ks-font-display); font-weight: 400; font-size: clamp(1.15rem, 1.5vw, 1.45rem); color: var(--ks-champagne); line-height: 1.02; text-transform: none; letter-spacing: -0.01em; }
.flip-back p { color: var(--ks-text-muted); font-size: 0.95rem; line-height: 1.5; text-wrap: pretty; }
.flip-bmore { font-family: var(--ks-mono); font-size: 0.66rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ks-text-faint); display: inline-flex; align-items: center; gap: 8px; }
.flip-bmore::before { content: ""; width: 18px; height: 1px; background: var(--ks-kinpaku); }
body.no-motion .flip-inner { transition: none; }

/* ---- vertical cut reveal ---- */
.cut-w { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: 0.14em; margin-bottom: -0.14em; }
.cut-i { display: inline-block; transform: translateY(115%); transition: transform .75s cubic-bezier(0.16, 1, 0.3, 1); }
[data-cut].in .cut-i { transform: translateY(0); }
body.no-motion .cut-i { transform: none; transition: none; }

/* ---- script sticker badge ---- */
.sticker { position: absolute; font-family: var(--script-font); font-weight: 700; font-size: clamp(1.05rem,1.5vw,1.45rem); line-height: 1.05; padding: 11px 20px; border-radius: 42% 58% 52% 48% / 55% 46% 54% 45%; background: var(--acc-chartreuse); color: var(--acc-plum); box-shadow: 0 8px 22px oklch(34% 0.095 8 / 0.18); transform: rotate(-7deg); z-index: 6; white-space: nowrap; }
.hero-sticker { top: -18px; right: -6px; background: var(--acc-lilac); color: var(--acc-plum); }
@media (max-width: 560px) { .hero-sticker { font-size: 1rem; right: 4px; top: -14px; } }

/* ============================================================
   APPROACH — strategy / performance process
   ============================================================ */
.approach-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
@media (max-width: 820px) { .approach-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 480px) { .approach-grid { grid-template-columns: 1fr; } }
.ap { background: var(--ks-lacquer-raised); border: 1px solid var(--ks-rule); border-radius: 20px; padding: clamp(20px,2vw,28px); display: flex; flex-direction: column; gap: 12px; position: relative; overflow: hidden;transition: transform .4s var(--ks-ease); }
.ap:hover { transform: translateY(-4px); }
.ap-n { font-family: var(--ks-mono); font-size: 0.72rem; letter-spacing: 0.18em; color: var(--ks-kinpaku); }
.ap h3 { font-family: var(--ks-font-display); font-weight: 600; text-transform: uppercase; letter-spacing: -0.01em; font-size: clamp(1.15rem,1.6vw,1.5rem); color: var(--ks-champagne); line-height: 1.05; }
.ap p { color: var(--ks-text-muted); font-size: 0.95rem; line-height: 1.6; text-wrap: pretty; }
.ap::after { content: ""; position: absolute; left: 0; top: 0; width: 100%; height: 3px; background: var(--ks-kinpaku); border-radius: 20px 20px 0 0; transform: scaleX(0); transform-origin: left;t; transition: transform .5s var(--ks-ease); }
.ap:hover::after { transform: scaleX(1); }

/* ============================================================
   WARM SECTION — welcoming light band (token re-scope)
   ============================================================ */
.section.warm {
  --ks-lacquer:        oklch(93.5% 0.022 83);
  --ks-lacquer-raised: oklch(97% 0.016 85);
  --ks-lacquer-deep:   oklch(20% 0.02 60);
  --ks-graphite:       oklch(90% 0.02 84);
  --ks-champagne:      oklch(24% 0.02 60);
  --ks-text:           oklch(30% 0.018 60);
  --ks-text-muted:     oklch(44% 0.018 60);
  --ks-text-faint:     oklch(56% 0.016 60);
  --ks-rule:           oklch(28% 0.02 60 / 0.16);
  --ks-rule-strong:    oklch(56% 0.11 74 / 0.5);
  --ks-kinpaku:        oklch(56% 0.13 72);
  background: var(--ks-lacquer);
  color: var(--ks-text);
  border-top: 1px solid oklch(56% 0.11 74 / 0.35);
}
.section.band { background: var(--ks-lacquer-raised); border-top: 1px solid var(--ks-rule); border-bottom: 1px solid var(--ks-rule); }
/* ---- CV email gate ---- */
.cv-gate { position: fixed; inset: 0; z-index: 9600; display: none; align-items: center; justify-content: center; padding: 24px; background: oklch(20% 0.02 60 / 0.55); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.cv-gate.open { display: flex; }
.cv-gate-card { position: relative; width: min(440px, 100%); background: var(--ks-lacquer-raised); border: 1px solid var(--ks-rule); border-radius: 22px; padding: clamp(28px,4vw,40px); box-shadow: 0 30px 70px oklch(20% 0.02 60 / 0.3); }
.cv-gate-card .eyebrow { margin-bottom: 12px; }
.cv-gate-card h3 { font-family: var(--ks-font-display); font-weight: 400; font-size: clamp(1.6rem,3vw,2.1rem); line-height: 1.05; color: var(--ks-champagne); margin-bottom: 10px; }
.cv-gate-card p { color: var(--ks-text-muted); font-size: 0.95rem; line-height: 1.5; margin-bottom: 20px; }
.cv-gate-card form { display: flex; flex-direction: column; gap: 12px; }
.cv-gate-card input { font-family: var(--ks-font); font-size: 1rem; padding: 14px 16px; border-radius: 12px; border: 1px solid var(--ks-rule-strong); background: var(--ks-lacquer); color: var(--ks-champagne); }
.cv-gate-card input:focus { outline: none; border-color: var(--ks-kinpaku); }
.cv-gate-card .btn { width: 100%; }
.cv-gate-err { color: var(--ks-kinpaku); font-size: 0.82rem; margin: 8px 0 0 !important; }
.cv-gate-close { position: absolute; top: 14px; right: 16px; background: none; border: none; font-size: 1.6rem; line-height: 1; color: var(--ks-text-faint); cursor: pointer; transition: color .2s; }
.cv-gate-close:hover { color: var(--ks-champagne); }
.section.warm .about-portrait { box-shadow: 0 20px 50px oklch(20% 0.02 60 / 0.14); }

/* ============================================================
   ABOUT PAGE — playful refresh
   ============================================================ */
.about-hero { position: relative; padding: clamp(120px,16vh,160px) var(--pad) clamp(30px,5vh,56px); max-width: var(--maxw); margin: 0 auto; overflow: hidden; }
.about-hero .cs-back { margin-bottom: 26px; }
.about-hero-stripes { position: absolute; top: 0; right: 0; width: 40%; height: 100%; z-index: 0; pointer-events: none;
  background: repeating-linear-gradient(90deg, var(--acc-lilac) 0 18px, transparent 18px 36px); opacity: 0.45;
  -webkit-mask: linear-gradient(180deg,#000 0 60%,transparent 100%); mask: linear-gradient(180deg,#000 0 60%,transparent 100%); }
.about-hero-inner { position: relative; z-index: 1; }
.about-hero .eyebrow { margin-bottom: 20px; }
.about-hero h1 { font-family: "Anton", var(--ks-font); font-weight: 400; text-transform: uppercase; letter-spacing: 0.005em; font-size: clamp(2.6rem,7vw,5.6rem); line-height: 1.14; color: var(--ks-kinpaku); max-width: 16ch; -webkit-text-stroke: 0; }
.about-hero h1 em { font-style: normal; color: var(--acc-plum); }
.about-hero .lede { margin-top: 22px; max-width: 48ch; font-size: clamp(1.05rem,1.4vw,1.3rem); line-height: 1.5; color: var(--ks-text-muted); }

/* service sticker cards */
.svc-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 16px; }
.svc { position: relative; background: var(--ks-lacquer-raised); border: 1px solid var(--ks-rule); border-radius: 18px; padding: 26px 24px 24px; transition: transform .35s var(--ks-ease); }
.svc:hover { transform: translateY(-5px) rotate(-1deg); }
.svc .chip { display: inline-flex; align-items: center; justify-content: center; width: 46px; height: 46px; border-radius: 14px; font-family: "Anton", var(--ks-font); font-size: 1.1rem; color: var(--acc-plum); transform: rotate(-6deg); box-shadow: 0 0 0 4px var(--acc-cream); margin-bottom: 18px; }
.svc:nth-child(5n+1) .chip { background: var(--acc-lilac); }
.svc:nth-child(5n+2) .chip { background: var(--acc-sage); }
.svc:nth-child(5n+3) .chip { background: var(--acc-chartreuse); }
.svc:nth-child(5n+4) .chip { background: var(--acc-blue); }
.svc:nth-child(5n+5) .chip { background: var(--acc-lilac); }
.svc h3 { font-family: var(--ks-font-display); font-weight: 400; font-size: 1.4rem; color: var(--ks-champagne); margin-bottom: 8px; letter-spacing: -0.01em; }
.svc p { color: var(--ks-text-muted); font-size: 0.95rem; line-height: 1.55; }

/* quick facts sticker row */
.facts { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; padding: clamp(20px,3vh,32px) 0 0; }
.fact { font-family: "Anton", var(--ks-font); text-transform: uppercase; font-size: clamp(0.95rem,1.4vw,1.2rem); letter-spacing: 0.02em; color: var(--acc-plum); background: var(--acc-cream); padding: 12px 22px; border-radius: 100px; box-shadow: 0 0 0 4px var(--acc-sage), 0 6px 14px oklch(34% 0.095 8 / 0.14); }
.fact:nth-child(2) { box-shadow: 0 0 0 4px var(--acc-lilac), 0 6px 14px oklch(34% 0.095 8 / 0.14); transform: rotate(-2deg); }
.fact:nth-child(3) { box-shadow: 0 0 0 4px var(--acc-chartreuse), 0 6px 14px oklch(34% 0.095 8 / 0.14); transform: rotate(1.5deg); }
.fact:nth-child(4) { box-shadow: 0 0 0 4px var(--acc-blue), 0 6px 14px oklch(34% 0.095 8 / 0.14); transform: rotate(-1deg); }
.about-portrait .about-sticker2 { position: absolute; top: -18px; left: -16px; z-index: 3; font-family: var(--script-font); font-weight: 700; font-size: 1.2rem; color: var(--acc-plum); background: var(--acc-chartreuse); padding: 8px 18px; border-radius: 46% 54% 52% 48% / 58% 46% 54% 42%; transform: rotate(-8deg); box-shadow: 0 6px 14px oklch(34% 0.095 8 / 0.16); }

/* ============================================================
   TOOLKIT — playful physics band (dark, compact)
   ============================================================ */
.toolkit-sec {
  padding: clamp(56px,8vh,90px) 0 0; background: var(--ks-graphite); color: var(--ks-text);
  border-top: 1px solid var(--ks-rule); position: relative;
}
.toolkit-sec::before { content: ""; position: absolute; inset: 0; pointer-events: none; opacity: 0.6;
  background-image: radial-gradient(oklch(30% 0.02 40 / 0.09) 1px, transparent 1px); background-size: 26px 26px; }
.gravity-stage { position: relative; width: 100%; height: clamp(240px, 32vh, 340px); margin-top: clamp(12px,1.6vh,22px); overflow: hidden; }
.gpill {
  position: absolute; top: 0; left: 0; will-change: transform;
  display: inline-flex; align-items: center; justify-content: center;
  padding: 14px 26px; border-radius: 999px; white-space: nowrap; user-select: none;
  font-family: var(--ks-font-display); font-weight: 600; text-transform: uppercase; letter-spacing: 0.01em;
  font-size: clamp(1rem, 1.8vw, 1.5rem); cursor: grab;
}
.gpill.p-gold { background: var(--ks-kinpaku); color: var(--acc-cream); }
.gpill.p-patina { background: var(--acc-sage); color: var(--acc-plum); }
.gpill.p-line { background: var(--acc-lilac); color: var(--acc-plum); border: none; }
/* reduced-motion / no-JS fallback: static centered cluster */
.gravity-stage.static { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; justify-content: center; height: auto; padding: 20px var(--pad) 10px; }
.gravity-stage.static .gpill { position: static; transform: none !important; cursor: default; }

/* ============================================================
   SHOWREEL page — 3D scroll-tilt card reveal
   ============================================================ */
.reel-wrap { position: relative; min-height: 180vh; }
.reel-sticky { position: sticky; top: 0; height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: flex-start; gap: clamp(16px,3vh,32px); perspective: 1100px; padding: 128px var(--pad) 40px; overflow: hidden; background: var(--ks-lacquer); }
.reel-stripes { position: absolute; inset: 0; z-index: 0; pointer-events: none; background: repeating-linear-gradient(90deg, var(--acc-lilac) 0 22px, transparent 22px 44px); opacity: 0.3; -webkit-mask: radial-gradient(120% 90% at 50% 50%, transparent 40%, #000 100%); mask: radial-gradient(120% 90% at 50% 50%, transparent 40%, #000 100%); }
.reel-eyebrow { margin-bottom: 14px; }
.reel-title { position: relative; z-index: 1; text-align: center; margin-bottom: 0; will-change: transform; }
.reel-title h1 { font-family: "Anton", var(--ks-font); font-weight: 400; text-transform: uppercase; letter-spacing: 0.01em; font-size: clamp(2.6rem, 6.5vw, 5.4rem); line-height: 1.02; color: var(--ks-kinpaku); }
.reel-title h1 em { font-style: normal; color: var(--acc-plum); }
.reel-card {
  position: relative; z-index: 1;
  width: min(880px, 88vw, calc((100svh - 372px) * 16 / 9)); height: auto; box-sizing: content-box; aspect-ratio: 16/9; flex: none;
  border: 10px solid var(--acc-cream); background: var(--ks-lacquer-deep);
  border-radius: 20px; padding: 0; transform-style: preserve-3d; will-change: transform;
  box-shadow: 0 30px 70px oklch(34% 0.095 8 / 0.28);
}
.reel-card .inner { width: 100%; height: 100%; border-radius: 10px; overflow: hidden; background: #000; }
.reel-sticker { position: absolute; z-index: 4; top: -22px; right: -14px; background: var(--acc-chartreuse); color: var(--acc-plum); }
.reel-card video, .reel-card iframe { width: 100%; height: 100%; object-fit: cover; border: 0; display: block; }
.reel-hint { position: absolute; bottom: 16px; left: 50%; transform: translateX(-50%); font-family: var(--ks-mono); font-size: 0.66rem; letter-spacing: 0.22em; text-transform: uppercase; color: var(--ks-text-faint); }
@media (max-height: 620px) { .reel-hint { display: none; } }

/* ============================================================
   CASE STUDY — scroll-expansion immersive hero (sticky)
   ============================================================ */
.expand-hero { position: relative; height: 210vh; --p: 0; }
@media (max-width: 768px) { .expand-hero { height: 180vh; } }
.expand-sticky { position: sticky; top: 0; height: 100svh; overflow: hidden; display: flex; align-items: center; justify-content: center; }
.expand-bg { position: absolute; inset: 0; z-index: 0; opacity: calc(1 - var(--p));
  background: radial-gradient(120% 100% at 50% 40%, var(--ks-graphite) 0%, var(--ks-lacquer) 60%, var(--ks-lacquer-deep) 100%); }
.expand-media {
  position: relative; z-index: 2; overflow: hidden; border-radius: calc(20px - var(--p) * 14px);
  width: calc(40vw + var(--p) * 56vw); height: calc(46vh + var(--p) * 46vh);
  max-width: 96vw; max-height: 88svh; border: 1px solid var(--ks-rule);
  box-shadow: 0 30px 80px rgba(0,0,0,0.45);
}
.expand-media video, .expand-media iframe { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border: 0; display: block; }
.expand-media .ph { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: radial-gradient(120% 120% at 30% 15%, var(--ks-graphite), var(--ks-lacquer-deep)); }
.expand-media .ph img { max-width: 44%; max-height: 46%; object-fit: contain; }
.expand-scrim { position: absolute; inset: 0; z-index: 3; pointer-events: none; background: linear-gradient(180deg, transparent 60%, oklch(4% 0.004 95 / 0.5) 100%); opacity: calc(1 - var(--p)); }
.expand-titles {
  position: absolute; z-index: 4; left: 0; right: 0; top: 50%; text-align: center; pointer-events: none;
  transform: translateY(calc(-50% - var(--p) * 7vh)); opacity: calc(1 - var(--p) * 1.7);
  padding: 0 var(--pad);
}
.expand-titles h1 { font-family: "Anton", var(--ks-font); font-weight: 400; text-transform: uppercase; letter-spacing: 0.01em; font-size: clamp(3rem, 9vw, 7rem); line-height: 0.98; color: var(--ks-kinpaku); -webkit-text-stroke: 15px var(--acc-cream); paint-order: stroke fill; filter: drop-shadow(2px 4px 0 oklch(34% 0.095 8 / 0.16)); }
.expand-titles h1 .of { color: var(--acc-plum); }
.expand-hint { position: absolute; z-index: 4; bottom: 6vh; left: 50%; transform: translateX(-50%); opacity: calc(1 - var(--p) * 2.4); font-family: var(--ks-mono); font-size: 0.66rem; letter-spacing: 0.22em; text-transform: uppercase; color: var(--ks-text-faint); display: flex; flex-direction: column; align-items: center; gap: 8px; }
.expand-hint .ln { width: 1px; height: 30px; background: linear-gradient(var(--ks-text-faint), transparent); }
body.no-motion .expand-hero { height: auto; }
body.no-motion .expand-sticky { position: relative; height: auto; padding: 120px 0 40px; }
body.no-motion .expand-media { width: min(96vw, 1200px); height: auto; aspect-ratio: 16/9; margin: 0 auto; }
body.no-motion .expand-titles { position: relative; transform: none; opacity: 1; margin-bottom: 30px; }
body.no-motion .expand-hint { display: none; }

.cs-intro { padding-top: clamp(40px, 7vh, 90px); }
.cs-intro .cs-back { margin-bottom: 30px; }
