/* ==========================================================================
   v18 — Avenir Next webfont family
   Font files live beside index.html in the site root. TTF replaces the old
   TTC/native-font fallback so desktop and mobile render the same family.
   ========================================================================== */
@font-face {
  font-family: "Recep Avenir Next";
  src: url("AvenirNext-UltraLight-11.ttf") format("truetype");
  font-style: normal;
  font-weight: 200;
  font-display: swap;
}

@font-face {
  font-family: "Recep Avenir Next";
  src: url("AvenirNext-UltraLightItalic-12.ttf") format("truetype");
  font-style: italic;
  font-weight: 200;
  font-display: swap;
}

@font-face {
  font-family: "Recep Avenir Next";
  src: url("AvenirNext-Regular-08.ttf") format("truetype");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: "Recep Avenir Next";
  src: url("AvenirNext-Italic-05.ttf") format("truetype");
  font-style: italic;
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: "Recep Avenir Next";
  src: url("AvenirNext-Medium-06.ttf") format("truetype");
  font-style: normal;
  font-weight: 500;
  font-display: swap;
}

@font-face {
  font-family: "Recep Avenir Next";
  src: url("AvenirNext-MediumItalic-07.ttf") format("truetype");
  font-style: italic;
  font-weight: 500;
  font-display: swap;
}

@font-face {
  font-family: "Recep Avenir Next";
  src: url("AvenirNext-DemiBold-03.ttf") format("truetype");
  font-style: normal;
  font-weight: 600;
  font-display: swap;
}

@font-face {
  font-family: "Recep Avenir Next";
  src: url("AvenirNext-DemiBoldItalic-04.ttf") format("truetype");
  font-style: italic;
  font-weight: 600;
  font-display: swap;
}

@font-face {
  font-family: "Recep Avenir Next";
  src: url("AvenirNext-Bold-01.ttf") format("truetype");
  font-style: normal;
  font-weight: 700;
  font-display: swap;
}

@font-face {
  font-family: "Recep Avenir Next";
  src: url("AvenirNext-BoldItalic-02.ttf") format("truetype");
  font-style: italic;
  font-weight: 700;
  font-display: swap;
}

@font-face {
  font-family: "Recep Avenir Next";
  src: url("AvenirNext-Heavy-09.ttf") format("truetype");
  font-style: normal;
  font-weight: 800;
  font-display: swap;
}

@font-face {
  font-family: "Recep Avenir Next";
  src: url("AvenirNext-Heavy-09.ttf") format("truetype");
  font-style: normal;
  font-weight: 900;
  font-display: swap;
}

@font-face {
  font-family: "Recep Avenir Next";
  src: url("AvenirNext-HeavyItalic-10.ttf") format("truetype");
  font-style: italic;
  font-weight: 800;
  font-display: swap;
}

@font-face {
  font-family: "Recep Avenir Next";
  src: url("AvenirNext-HeavyItalic-10.ttf") format("truetype");
  font-style: italic;
  font-weight: 900;
  font-display: swap;
}

:root {
  --paper: #faf7ed;
  --ink: #050505;
  --line: rgba(5, 5, 5, 0.72);
  --muted: rgba(5, 5, 5, 0.66);
  --pad: clamp(14px, 1.8vw, 22px);
  --radius: clamp(22px, 2.4vw, 34px);
  --section-space: clamp(72px, 9vw, 124px);
  --desktop-shell: 880px;
  --ease: cubic-bezier(.2,.8,.2,1);
  --font-main: "Recep Avenir Next", "Avenir Next", Avenir, "Helvetica Neue", Helvetica, Arial, sans-serif;
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
  background: var(--paper);
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

body {
  margin: 0;
  min-width: 320px;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font-main);
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  font-synthesis: none;
  overflow-x: hidden;
}

button,
a {
  font: inherit;
}

a {
  color: inherit;
}

button {
  color: inherit;
}

img {
  display: block;
  max-width: 100%;
}

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

.skip-link {
  position: fixed;
  top: 12px;
  left: 12px;
  z-index: 1000;
  transform: translateY(-160%);
  padding: 10px 14px;
  border-radius: 999px;
  background: var(--ink);
  color: var(--paper);
  text-decoration: none;
  font-weight: 700;
  transition: transform .2s ease;
}

.skip-link:focus {
  transform: translateY(0);
}

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

.site-shell {
  position: relative;
  z-index: 1;
  width: min(100%, var(--desktop-shell));
  margin: 0 auto;
  padding: clamp(16px, 2.1vw, 28px) var(--pad) clamp(34px, 6vw, 72px);
}

.masthead {
  width: 100%;
  margin: 0 auto clamp(26px, 4vw, 48px);
}

.masthead-art {
  width: 100%;
  height: auto;
}

.hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.28fr) minmax(280px, .90fr);
  gap: clamp(14px, 1.7vw, 18px);
  align-items: stretch;
}

.portrait-wrap {
  position: relative;
  margin: 0;
  min-width: 0;
  aspect-ratio: 1065 / 939;
  border-radius: var(--radius);
  overflow: hidden;
  background: #d5b48a;
}

.portrait {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 0%;
  image-rendering: auto;
}

.action-stack {
  display: grid;
  grid-template-rows: repeat(7, minmax(0, 1fr));
  gap: clamp(8px, .8vw, 10px);
  min-height: 100%;
}

.action-card {
  position: relative;
  display: flex;
  min-height: 54px;
  align-items: center;
  justify-content: center;
  border: 1.25px solid var(--line);
  border-radius: var(--radius);
  background: transparent;
  overflow: hidden;
  text-decoration: none;
  cursor: pointer;
  isolation: isolate;
  -webkit-tap-highlight-color: transparent;
  transition:
    transform .28s var(--ease),
    background-color .28s var(--ease),
    color .28s var(--ease),
    border-color .28s var(--ease),
    box-shadow .28s var(--ease);
}

.action-card::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--ink);
  transform: scaleY(0);
  transform-origin: 50% 100%;
  transition: transform .34s var(--ease);
}

.action-card--text {
  font-size: clamp(16px, 1.45vw, 22px);
  font-weight: 800;
  letter-spacing: -.025em;
}

.action-card--logo img {
  width: auto;
  max-width: 58%;
  max-height: 54%;
  object-fit: contain;
  transition: filter .28s ease, transform .28s var(--ease);
}

.action-card--catpuf img {
  max-width: 58%;
  max-height: 50%;
}

.action-card--elie img {
  max-width: 44%;
  max-height: 58%;
}

.action-card--shitart img {
  max-width: 64%;
  max-height: 42%;
}

@media (hover: hover) and (pointer: fine) {
  .action-card:hover {
    color: var(--paper);
    border-color: var(--ink);
    transform: translateY(-2px);
    box-shadow: 0 8px 0 rgba(0, 0, 0, .06);
  }

  .action-card:hover::before {
    transform: scaleY(1);
  }

  .action-card--logo:hover img {
    filter: invert(1);
    transform: scale(.98);
  }
}

.action-card:focus-visible,
.language-button:focus-visible,
.dialog-close:focus-visible {
  outline: 3px solid var(--ink);
  outline-offset: 4px;
}

.action-card:active {
  transform: translateY(1px) scale(.995);
}

.statement {
  padding-top: var(--section-space);
  text-align: center;
}

.practice-list {
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  font-size: clamp(26px, 4.3vw, 59px);
  line-height: .99;
  letter-spacing: -.045em;
  font-weight: 850;
}

.practice-list span {
  display: block;
}

.bio {
  width: min(900px, 88%);
  margin: clamp(30px, 4.5vw, 58px) auto 0;
  font-size: clamp(14px, 1.55vw, 19px);
  line-height: 1.34;
  letter-spacing: -.018em;
  color: var(--muted);
}

.bio strong {
  color: var(--ink);
  font-weight: 750;
}

.books {
  padding-top: var(--section-space);
}

.books-head {
  text-align: center;
}

.books-head h2 {
  margin: 0;
  font-size: clamp(48px, 8vw, 104px);
  line-height: .9;
  letter-spacing: -.055em;
  font-weight: 850;
}

.books-head p {
  margin: clamp(18px, 2.5vw, 30px) 0 0;
  font-size: clamp(14px, 1.75vw, 22px);
  line-height: 1.1;
  font-weight: 800;
  letter-spacing: -.025em;
}

.book-list {
  width: min(920px, 100%);
  margin: clamp(56px, 8vw, 100px) auto 0;
  display: grid;
  gap: clamp(64px, 8vw, 104px);
}

.book-group {
  display: grid;
  justify-items: center;
}

.book-logo {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: clamp(116px, 15vw, 180px);
  margin-bottom: clamp(26px, 3.2vw, 38px);
}

.book-logo img {
  width: auto;
  height: auto;
  object-fit: contain;
}

.book-logo--oku img {
  max-height: clamp(120px, 13vw, 160px);
}

.book-logo--kreatif img {
  max-width: min(500px, 78vw);
  max-height: clamp(94px, 12vw, 138px);
}

.book-logo--xi78 img {
  max-width: min(390px, 70vw);
  max-height: clamp(96px, 12vw, 132px);
}

.book-logo--elie img {
  max-height: clamp(120px, 14vw, 174px);
}

.language-grid {
  width: min(660px, 100%);
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(10px, 1.5vw, 16px);
}

.language-button {
  display: flex;
  align-items: center;
  justify-content: center;
  aspect-ratio: 1.15 / 1;
  min-height: 66px;
  border: 1.15px solid var(--line);
  border-radius: clamp(18px, 2vw, 26px);
  background: transparent;
  color: var(--ink);
  text-decoration: none;
  font-size: clamp(17px, 2.1vw, 24px);
  font-weight: 850;
  letter-spacing: -.03em;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: background-color .23s ease, color .23s ease, transform .23s var(--ease);
}

@media (hover: hover) and (pointer: fine) {
  .language-button:hover {
    background: var(--ink);
    color: var(--paper);
    transform: translateY(-2px);
  }
}

.language-button:active {
  transform: translateY(1px) scale(.99);
}

.footer-art {
  width: min(1160px, 100%);
  margin: clamp(80px, 12vw, 150px) auto 0;
}

.footer-art img {
  width: 100%;
  height: auto;
}

.oku-dialog {
  width: min(560px, calc(100% - 28px));
  padding: 0;
  border: 0;
  border-radius: 30px;
  background: var(--paper);
  color: var(--ink);
  box-shadow: 0 24px 80px rgba(0,0,0,.24);
}

.oku-dialog::backdrop {
  background: rgba(0,0,0,.58);
  backdrop-filter: blur(7px);
}

.dialog-card {
  padding: clamp(24px, 5vw, 42px);
}

.dialog-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
}

.dialog-kicker {
  margin: 0 0 5px;
  font-size: 14px;
  font-weight: 850;
  letter-spacing: .1em;
}

.dialog-head h2 {
  margin: 0;
  font-size: clamp(30px, 6vw, 44px);
  line-height: 1;
  letter-spacing: -.045em;
}

.dialog-close {
  flex: 0 0 auto;
  width: 48px;
  height: 48px;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: transparent;
  font-size: 34px;
  line-height: 1;
  cursor: pointer;
}

.dialog-language {
  margin: 18px 0 20px;
  color: var(--muted);
  font-size: 15px;
  font-weight: 650;
}

.volume-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
}

.volume-grid a {
  display: flex;
  min-height: 92px;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--line);
  border-radius: 22px;
  text-decoration: none;
  font-size: 18px;
  font-weight: 850;
  transition: background-color .2s ease, color .2s ease, transform .2s ease;
}

@media (hover: hover) and (pointer: fine) {
  .volume-grid a:hover {
    background: var(--ink);
    color: var(--paper);
    transform: translateY(-2px);
  }
}

.toast {
  position: fixed;
  left: 50%;
  bottom: max(20px, env(safe-area-inset-bottom));
  z-index: 1200;
  transform: translate(-50%, 24px);
  max-width: calc(100% - 28px);
  padding: 12px 18px;
  border-radius: 999px;
  background: var(--ink);
  color: var(--paper);
  font-size: 14px;
  font-weight: 700;
  text-align: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity .22s ease, transform .22s var(--ease);
}

.toast.is-visible {
  opacity: 1;
  transform: translate(-50%, 0);
}

.reveal {
  opacity: 0;
  transform: translateY(22px);
  transition: opacity .7s var(--ease), transform .7s var(--ease);
}

.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

@media (max-width: 760px) {
  :root {
    --pad: 12px;
    --radius: 22px;
    --section-space: 72px;
  }

  .site-shell {
    padding-top: 10px;
  }

  .masthead {
    margin-bottom: 22px;
  }

  .hero-grid {
    grid-template-columns: 1fr;
    gap: 14px;
  }

  .portrait-wrap {
    aspect-ratio: 1.12 / 1;
  }

  .action-stack {
    grid-template-rows: none;
    gap: 8px;
  }

  .action-card {
    min-height: 68px;
    border-radius: 22px;
  }

  .action-card--text {
    font-size: 18px;
  }

  .action-card--logo img {
    max-height: 48%;
  }

  .statement {
    padding-inline: 3px;
  }

  .practice-list {
    font-size: clamp(25px, 7.1vw, 42px);
    line-height: .99;
  }

  .bio {
    width: 91%;
    font-size: 13px;
    line-height: 1.27;
  }

  .books-head h2 {
    font-size: clamp(46px, 13vw, 76px);
  }

  .books-head p {
    font-size: clamp(12px, 3.8vw, 16px);
  }

  .book-list {
    gap: 68px;
  }

  .book-logo {
    min-height: 96px;
    margin-bottom: 22px;
  }

  .language-grid {
    gap: 7px;
  }

  .language-button {
    min-height: 58px;
    border-radius: 18px;
    font-size: 17px;
  }

  .footer-art {
    margin-top: 88px;
  }
}

@media (max-width: 430px) {
  .masthead-art {
    width: calc(100% + 8px);
    max-width: none;
    margin-left: -4px;
  }

  .portrait-wrap {
    border-radius: 20px;
  }

  .practice-list {
    font-size: clamp(23px, 7.2vw, 32px);
  }

  .bio {
    font-size: 12px;
  }

  .book-logo--kreatif img {
    max-width: 84vw;
  }

  .language-button {
    aspect-ratio: 1 / 1;
  }

  .volume-grid a {
    min-height: 78px;
    border-radius: 18px;
    font-size: 16px;
  }
}

/* Continuous flower drift ----------------------------------------------------
   Original transparent yapX PNGs only: no opacity changes, filters or scaling.
   Four compositor-friendly elements move with one uninterrupted linear fall. */
.flower-field {
  position: fixed;
  inset: 0;
  z-index: 30;
  overflow: hidden;
  pointer-events: none;
  contain: strict;
  isolation: isolate;
  transform: translateZ(0);
}

.flower-particle {
  position: absolute;
  top: 0;
  left: 0;
  width: var(--flower-width);
  opacity: 1;
  pointer-events: none;
  will-change: transform;
  backface-visibility: hidden;
  contain: layout paint style;
  animation-name: flower-fall-loop;
  animation-duration: var(--fall-duration, 31s);
  animation-delay: var(--fall-delay, 0s);
  animation-timing-function: linear;
  animation-iteration-count: infinite;
  animation-fill-mode: both;
}

.flower-particle__sprite {
  display: block;
  width: 100%;
  height: auto;
  max-width: none;
  opacity: 1;
  filter: none;
  mix-blend-mode: normal;
  user-select: none;
  -webkit-user-drag: none;
  backface-visibility: hidden;
}

.flower-field.is-paused .flower-particle {
  animation-play-state: paused !important;
}

/* Two endpoints only: vertical velocity never changes or pauses mid-screen.
   X positions are supplied in pixels by JS after accounting for each original
   PNG width, keeping the artwork comfortably inside the left/right edges. */
@keyframes flower-fall-loop {
  from {
    transform: translate3d(var(--x-start), -120%, 0) rotate(var(--r-start));
  }
  to {
    transform: translate3d(var(--x-end), calc(100vh + 120%), 0) rotate(var(--r-end));
  }
}

@media (min-width: 761px) {
  .site-shell {
    width: min(calc(100% - 80px), var(--desktop-shell));
  }
}

@media (min-width: 761px) and (max-width: 900px) {
  .hero-grid {
    grid-template-columns: minmax(0, 1.24fr) minmax(240px, .90fr);
    gap: 14px;
  }

  .action-stack {
    gap: 7px;
  }

  .action-card {
    min-height: 46px;
  }

  .action-card--text {
    font-size: 15px;
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
  }

  .reveal {
    opacity: 1;
    transform: none;
  }

  .flower-field {
    display: none;
  }
}


/* -------------------------------------------------------------------------
   Desktop geometry lock — compact, browser-consistent composition.
   The portrait is a true masked grid cell on the LEFT; the seven actions are
   a separate grid cell on the RIGHT. Nothing can flow underneath the buttons.
   Desktop typography and artwork sizes use fixed CSS-pixel values instead of
   viewport-sized clamps so Chrome and Safari keep the same visual scale.
   ------------------------------------------------------------------------- */
@media (min-width: 680px) {
  :root {
    --desktop-shell: 760px;
    --pad: 14px;
    --radius: 24px;
    --section-space: 76px;
  }

  .site-shell {
    width: min(760px, calc(100% - 44px));
    padding: 16px 14px 52px;
  }

  .masthead {
    width: 100%;
    margin: 0 auto 24px;
  }

  .masthead-art {
    width: 100%;
    height: auto;
  }

  .hero-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.5fr) minmax(252px, 1fr);
    grid-template-areas: "portrait actions";
    gap: 12px;
    align-items: stretch;
    width: 100%;
  }

  .portrait-wrap {
    grid-area: portrait;
    position: relative;
    width: 100%;
    height: auto;
    min-width: 0;
    min-height: 372px;
    aspect-ratio: auto;
    align-self: stretch;
    margin: 0;
    border-radius: 24px;
    overflow: hidden;
    clip-path: inset(0 round 24px);
    background: #d5b48a;
    isolation: isolate;
  }

  .portrait {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
    max-width: none;
    object-fit: cover;
    object-position: 50% 0%;
  }

  .action-stack {
    grid-area: actions;
    display: grid;
    grid-template-rows: repeat(7, minmax(0, 1fr));
    gap: 7px;
    width: 100%;
    min-width: 0;
    min-height: 372px;
    align-self: stretch;
  }

  .action-card {
    min-width: 0;
    min-height: 0;
    border-radius: 24px;
  }

  .action-card--text {
    font-size: 15px;
    line-height: 1;
    letter-spacing: -.02em;
  }

  .action-card--logo img {
    max-width: 56%;
    max-height: 52%;
  }

  .action-card--catpuf img {
    max-width: 56%;
    max-height: 48%;
  }

  .action-card--elie img {
    max-width: 42%;
    max-height: 55%;
  }

  .action-card--shitart img {
    max-width: 61%;
    max-height: 40%;
  }

  .statement {
    padding-top: 76px;
  }

  .practice-list {
    font-size: 32px;
    line-height: .99;
  }

  .bio {
    width: 84%;
    margin-top: 32px;
    font-size: 13px;
    line-height: 1.32;
  }

  .books {
    padding-top: 76px;
  }

  .books-head h2 {
    font-size: 58px;
  }

  .books-head p {
    margin-top: 16px;
    font-size: 13px;
  }

  .book-list {
    width: 620px;
    margin-top: 56px;
    gap: 66px;
  }

  .book-logo {
    min-height: 108px;
    margin-bottom: 22px;
  }

  .book-logo--oku img {
    max-height: 118px;
  }

  .book-logo--kreatif img {
    max-width: 390px;
    max-height: 112px;
  }

  .book-logo--xi78 img {
    max-width: 300px;
    max-height: 105px;
  }

  .book-logo--elie img {
    max-height: 125px;
  }

  .language-grid {
    width: 500px;
    gap: 10px;
  }

  .language-button {
    min-height: 68px;
    border-radius: 20px;
    font-size: 17px;
  }

  .footer-art {
    width: 100%;
    margin-top: 82px;
  }
}

/* ==========================================================================
   Professional layout lock v8
   - Desktop content is one 1160px composition in every browser at 100% zoom.
   - Portrait remains a clipped left column; actions remain a separate right
     column and can never flow beneath the portrait.
   - Photo-motion frames are permanently resident layers, eliminating the
     Chromium repaint flash caused by repeatedly swapping one <img> src.
   ========================================================================== */

.portrait-sequence {
  position: absolute;
  inset: 0;
  overflow: hidden;
  border-radius: inherit;
  background: #d5b48a;
  isolation: isolate;
  contain: paint;
}

/* The frames are already decoded before motion starts. They are switched as
   complete opaque frames: no opacity animation, no cross-dissolve, no GPU
   translate layer and therefore no blink/flash between JPEGs in Chromium. */
.portrait-frame {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: 50% 0%;
  opacity: 1;
  visibility: hidden;
  transform: none;
  transition: none;
  pointer-events: none;
}

.portrait-frame.is-active {
  z-index: 2;
  visibility: visible;
  opacity: 1;
}

@media (min-width: 820px) {
  :root {
    --desktop-shell: 1160px;
    --pad: 0px;
    --radius: 30px;
    --section-space: 104px;
  }

  .site-shell {
    width: min(1160px, calc(100% - 56px));
    margin-inline: auto;
    padding: 22px 0 72px;
  }

  .masthead {
    width: 100%;
    margin: 0 auto 34px;
  }

  .masthead-art {
    width: 100%;
    height: auto;
  }

  .hero-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.56fr) minmax(0, 1fr);
    grid-template-areas: "portrait actions";
    gap: 18px;
    width: 100%;
    align-items: stretch;
  }

  .portrait-wrap {
    grid-area: portrait;
    position: relative;
    width: 100%;
    min-width: 0;
    min-height: 0;
    aspect-ratio: 1.12 / 1;
    margin: 0;
    overflow: hidden;
    border-radius: 30px;
    clip-path: inset(0 round 30px);
    background: #d5b48a;
    isolation: isolate;
  }

  .portrait,
  .portrait-sequence {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
  }

  .action-stack {
    grid-area: actions;
    display: grid;
    grid-template-rows: repeat(7, minmax(0, 1fr));
    gap: 10px;
    width: 100%;
    min-width: 0;
    min-height: 0;
    height: 100%;
    align-self: stretch;
  }

  .action-card {
    min-width: 0;
    min-height: 0;
    border-radius: 30px;
  }

  .action-card--text {
    font-size: 19px;
    line-height: 1;
    letter-spacing: -.024em;
  }

  .action-card--logo img {
    max-width: 57%;
    max-height: 52%;
  }

  .action-card--catpuf img {
    max-width: 57%;
    max-height: 49%;
  }

  .action-card--elie img {
    max-width: 43%;
    max-height: 56%;
  }

  .action-card--shitart img {
    max-width: 62%;
    max-height: 41%;
  }

  .statement {
    padding-top: 104px;
  }

  .practice-list {
    font-size: 44px;
    line-height: .99;
  }

  .bio {
    width: 78%;
    margin-top: 40px;
    font-size: 15px;
    line-height: 1.34;
  }

  .books {
    padding-top: 104px;
  }

  .books-head h2 {
    font-size: 78px;
  }

  .books-head p {
    margin-top: 20px;
    font-size: 16px;
  }

  .book-list {
    width: 800px;
    margin-top: 72px;
    gap: 84px;
  }

  .book-logo {
    min-height: 132px;
    margin-bottom: 28px;
  }

  .book-logo--oku img {
    max-height: 148px;
  }

  .book-logo--kreatif img {
    max-width: 490px;
    max-height: 138px;
  }

  .book-logo--xi78 img {
    max-width: 380px;
    max-height: 132px;
  }

  .book-logo--elie img {
    max-height: 160px;
  }

  .language-grid {
    width: 660px;
    gap: 13px;
  }

  .language-button {
    min-height: 78px;
    border-radius: 24px;
    font-size: 20px;
  }

  .footer-art {
    width: 100%;
    margin-top: 110px;
  }
}

/* Mobile is intentionally a separate composition. The portrait/actions stack
   naturally, while falling artwork is kept to the extreme left/right routes
   by JavaScript so the central content area stays clean. */
@media (max-width: 819px) {
  :root {
    --pad: 12px;
    --radius: 22px;
    --section-space: 72px;
  }

  .site-shell {
    width: 100%;
    margin: 0 auto;
    padding: 10px 12px 42px;
  }

  .masthead {
    width: 100%;
    margin: 0 auto 22px;
  }

  .hero-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas: "portrait" "actions";
    gap: 14px;
    width: 100%;
  }

  .portrait-wrap {
    grid-area: portrait;
    position: relative;
    width: 100%;
    min-height: 0;
    aspect-ratio: 1.12 / 1;
    margin: 0;
    overflow: hidden;
    border-radius: 22px;
    clip-path: inset(0 round 22px);
  }

  .action-stack {
    grid-area: actions;
    display: grid;
    grid-template-rows: none;
    gap: 8px;
    min-height: 0;
    height: auto;
  }

  .action-card {
    min-height: 68px;
    border-radius: 22px;
  }

  .action-card--text {
    font-size: 18px;
  }

  .practice-list {
    font-size: clamp(23px, 7.2vw, 38px);
  }

  .bio {
    width: 91%;
    font-size: 13px;
  }

  .books-head h2 {
    font-size: clamp(46px, 13vw, 76px);
  }

  .books-head p {
    font-size: clamp(12px, 3.8vw, 16px);
  }

  .book-list {
    width: 100%;
    gap: 68px;
  }

  .language-grid {
    width: 100%;
    gap: 7px;
  }

  .language-button {
    min-height: 58px;
    border-radius: 18px;
    font-size: 17px;
  }

  .footer-art {
    width: 100%;
    margin-top: 88px;
  }
}

/* Book banners ---------------------------------------------------------------
   Replaces the former individual book logos with the supplied 1160 x 1374
   artwork. The artwork matches the site's paper tone and keeps its native
   aspect ratio; language controls remain centered underneath. */
.book-list {
  width: 100%;
}

.book-banner {
  width: 50%;
  margin: 0 0 clamp(24px, 3vw, 38px);
}

.book-banner img {
  display: block;
  width: 100%;
  height: auto;
  max-width: none;
  object-fit: contain;
}

@media (max-width: 819px) {
  .book-banner {
    margin-bottom: 22px;
  }
}

/* ========================================================================== 
   Selected worlds / original worlds / recognition — v11
   Content expansion only. Existing portrait, flower, reveal and audio motion
   rules above remain untouched.
   ========================================================================== */

.manifesto {
  width: min(980px, 96%);
  margin: clamp(46px, 6vw, 76px) auto 0;
  font-size: clamp(38px, 6.6vw, 86px);
  line-height: .88;
  letter-spacing: -.06em;
  font-weight: 900;
}

.selected-worlds,
.original-worlds,
.timeline,
.recognition,
.final-contact {
  padding-top: clamp(110px, 13vw, 170px);
}

.section-head {
  text-align: center;
}

.section-kicker {
  margin: 0 0 18px;
  font-size: clamp(11px, 1.15vw, 14px);
  line-height: 1.15;
  letter-spacing: .12em;
  font-weight: 850;
}

.section-head h2 {
  margin: 0;
  font-size: clamp(62px, 10vw, 126px);
  line-height: .78;
  letter-spacing: -.07em;
  font-weight: 900;
}

.section-deck {
  width: min(680px, 82%);
  margin: clamp(28px, 3.4vw, 42px) auto 0;
  color: var(--muted);
  font-size: clamp(14px, 1.45vw, 17px);
  line-height: 1.34;
  letter-spacing: -.02em;
}

.section-deck strong {
  color: var(--ink);
  font-weight: 800;
}

.work-list {
  display: grid;
  gap: clamp(118px, 14vw, 180px);
  margin-top: clamp(74px, 9vw, 112px);
}

.work-case {
  min-width: 0;
}

.work-head {
  display: grid;
  grid-template-columns: minmax(110px, .35fr) minmax(0, 1.65fr);
  gap: 24px;
  align-items: start;
  padding-top: 18px;
  border-top: 1.25px solid var(--line);
}

.work-index {
  margin: 4px 0 0;
  font-size: 12px;
  line-height: 1;
  letter-spacing: .1em;
  font-weight: 850;
}

.work-head h3 {
  margin: 0;
  font-size: clamp(34px, 4.8vw, 62px);
  line-height: .9;
  letter-spacing: -.055em;
  font-weight: 900;
}

.work-head div > p {
  margin: 11px 0 0;
  font-size: clamp(12px, 1.15vw, 15px);
  line-height: 1.15;
  letter-spacing: .02em;
  font-weight: 800;
}

.work-thought {
  width: min(760px, 76%);
  margin: 28px 0 42px auto;
  font-size: clamp(15px, 1.65vw, 20px);
  line-height: 1.35;
  letter-spacing: -.025em;
  color: var(--muted);
}

.work-thought strong {
  color: var(--ink);
  font-weight: 800;
}

.work-gallery {
  display: grid;
  gap: 10px;
}

.work-gallery img {
  width: 100%;
  height: auto;
  max-width: none;
  border-radius: clamp(14px, 1.6vw, 20px);
  object-fit: cover;
  background: rgba(0,0,0,.04);
}

.work-gallery--landscape {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.work-gallery--landscape .work-hero {
  grid-column: 1 / -1;
}

.work-gallery--portrait {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.work-gallery--five img:nth-child(4) {
  grid-column: 1 / 2;
  margin-left: 50%;
}

.work-gallery--five img:nth-child(5) {
  grid-column: 2 / 3;
  margin-left: 50%;
}

.archive-link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  margin-top: clamp(62px, 8vw, 94px);
  padding: 20px 0 0;
  border-top: 1.25px solid var(--line);
}

.archive-link p {
  margin: 0;
  font-size: 12px;
  letter-spacing: .08em;
  font-weight: 850;
}

.archive-link a {
  font-size: clamp(14px, 1.35vw, 17px);
  font-weight: 850;
  text-decoration-thickness: 1px;
  text-underline-offset: 4px;
}

.ip-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-top: clamp(68px, 8vw, 98px);
}

.ip-card {
  position: relative;
  min-height: 430px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: clamp(24px, 3vw, 36px);
  border: 1.25px solid var(--line);
  border-radius: 30px;
  color: var(--ink);
  text-decoration: none;
  background: rgba(250,247,237,.58);
}

.ip-no {
  align-self: flex-start;
  font-size: 12px;
  line-height: 1;
  letter-spacing: .12em;
  font-weight: 850;
}

.ip-card img {
  align-self: center;
  width: auto;
  max-width: 62%;
  max-height: 92px;
  object-fit: contain;
}

.ip-card p {
  margin: 0;
  max-width: 430px;
  color: var(--muted);
  font-size: 15px;
  line-height: 1.34;
  letter-spacing: -.018em;
}

.ip-open {
  font-size: 12px;
  line-height: 1.1;
  letter-spacing: .08em;
  font-weight: 850;
}

.ip-type-logo {
  align-self: center;
  text-align: center;
  font-size: clamp(74px, 9vw, 112px);
  line-height: .68;
  letter-spacing: -.08em;
  font-weight: 900;
}

.ip-type-logo small {
  font-size: .25em;
  letter-spacing: .22em;
}

.timeline-list {
  margin-top: clamp(64px, 8vw, 96px);
  border-top: 1.25px solid var(--line);
}

.timeline-list div {
  display: grid;
  grid-template-columns: minmax(110px, .35fr) minmax(0, 1.65fr);
  gap: 24px;
  align-items: center;
  min-height: 92px;
  padding: 12px 0;
  border-bottom: 1.25px solid var(--line);
}

.timeline-list strong {
  font-size: clamp(18px, 2vw, 25px);
  letter-spacing: -.03em;
}

.timeline-list span {
  font-size: clamp(20px, 3.2vw, 41px);
  line-height: .95;
  letter-spacing: -.045em;
  font-weight: 850;
}

.recognition-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-top: clamp(56px, 7vw, 84px);
}

.recognition-grid > div {
  min-height: 190px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 24px;
  border: 1.25px solid var(--line);
  border-radius: 26px;
}

.recognition-grid strong {
  font-size: clamp(25px, 3vw, 39px);
  line-height: .9;
  letter-spacing: -.05em;
}

.recognition-grid span {
  font-size: 11px;
  line-height: 1.2;
  letter-spacing: .08em;
  font-weight: 800;
}

.recognition-note {
  margin: 28px 0 0;
  text-align: center;
  color: var(--muted);
  font-size: 14px;
}

.recognition-note strong {
  color: var(--ink);
}

.final-contact {
  padding-bottom: clamp(24px, 3vw, 40px);
  text-align: center;
}

.final-contact h2 {
  margin: 0;
  font-size: clamp(50px, 8.7vw, 108px);
  line-height: .82;
  letter-spacing: -.07em;
  font-weight: 900;
}

.contact-actions {
  width: min(760px, 100%);
  margin: clamp(42px, 5.2vw, 64px) auto 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.contact-actions a {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 78px;
  padding: 14px 18px;
  border: 1.25px solid var(--line);
  border-radius: 24px;
  text-decoration: none;
  font-size: 15px;
  font-weight: 850;
}

@media (hover: hover) and (pointer: fine) {
  .archive-link a:hover,
  .contact-actions a:hover {
    text-decoration-thickness: 2px;
  }
}

@media (max-width: 819px) {
  .manifesto {
    width: 100%;
    margin-top: 42px;
    font-size: clamp(34px, 11.5vw, 62px);
  }

  .selected-worlds,
  .original-worlds,
  .timeline,
  .recognition,
  .final-contact {
    padding-top: 96px;
  }

  .section-head h2 {
    font-size: clamp(58px, 18vw, 92px);
  }

  .section-deck {
    width: 91%;
    font-size: 13px;
  }

  .work-list {
    gap: 100px;
    margin-top: 64px;
  }

  .work-head,
  .timeline-list div {
    grid-template-columns: 82px minmax(0, 1fr);
    gap: 14px;
  }

  .work-head h3 {
    font-size: clamp(30px, 9.2vw, 48px);
  }

  .work-thought {
    width: calc(100% - 96px);
    margin: 22px 0 30px auto;
    font-size: 14px;
  }

  .work-gallery {
    gap: 6px;
  }

  .work-gallery img {
    border-radius: 11px;
  }

  .work-gallery--portrait {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .work-gallery--portrait.work-gallery--five img:nth-child(4),
  .work-gallery--portrait.work-gallery--five img:nth-child(5) {
    grid-column: auto;
    margin-left: 0;
  }

  .work-gallery--portrait.work-gallery--five img:last-child {
    grid-column: 1 / -1;
    width: calc(50% - 3px);
    justify-self: center;
  }

  .archive-link {
    align-items: flex-start;
    flex-direction: column;
    gap: 12px;
  }

  .ip-grid {
    grid-template-columns: 1fr;
  }

  .ip-card {
    min-height: 350px;
    border-radius: 22px;
  }

  .timeline-list span {
    font-size: clamp(18px, 6.1vw, 29px);
  }

  .recognition-grid {
    grid-template-columns: 1fr;
  }

  .recognition-grid > div {
    min-height: 150px;
    border-radius: 22px;
  }

  .final-contact h2 {
    font-size: clamp(43px, 13.5vw, 72px);
  }

  .contact-actions {
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .contact-actions a {
    min-height: 66px;
    border-radius: 20px;
  }
}

@media (max-width: 430px) {
  .work-head,
  .timeline-list div {
    grid-template-columns: 68px minmax(0, 1fr);
    gap: 10px;
  }

  .work-index {
    font-size: 10px;
  }

  .work-thought {
    width: calc(100% - 78px);
  }
}

/* Selected Worlds accordion - v12 */
.selected-worlds--collapsible{display:block}.selected-worlds-toggle,.work-case>.work-head{list-style:none;cursor:pointer;-webkit-tap-highlight-color:transparent}.selected-worlds-toggle::-webkit-details-marker,.work-case>.work-head::-webkit-details-marker{display:none}.selected-worlds-toggle::marker,.work-case>.work-head::marker{content:""}.selected-worlds-toggle{display:block;text-align:center;padding:clamp(34px,5vw,58px) 0;border-top:1.25px solid var(--line);border-bottom:1.25px solid var(--line)}.selected-worlds-toggle .section-kicker,.selected-worlds-toggle .section-deck{display:block}.selected-worlds-title{display:block;margin:0;font-size:clamp(62px,10vw,126px);line-height:.78;letter-spacing:-.07em;font-weight:900}.selected-worlds-openline{display:flex;align-items:center;justify-content:center;gap:13px;margin-top:clamp(28px,3.6vw,42px);font-size:11px;line-height:1;letter-spacing:.11em;font-weight:850}.selected-worlds-state{display:inline-block}.selected-worlds-state--open{display:none}.selected-worlds[open] .selected-worlds-state--closed{display:none}.selected-worlds[open] .selected-worlds-state--open{display:inline-block}.selected-worlds-mark,.work-toggle-mark{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;border:1.25px solid var(--line);border-radius:999px;font-weight:500}.selected-worlds-mark{width:34px;height:34px;font-size:23px;line-height:1}.selected-worlds-mark::before,.work-toggle-mark::before{content:"+"}.selected-worlds[open] .selected-worlds-mark::before,.work-case[open] .work-toggle-mark::before{content:"-"}.selected-worlds-body{padding-top:clamp(52px,7vw,82px)}.selected-worlds-body .work-list{display:block;margin-top:0;border-bottom:1.25px solid var(--line)}.work-case{min-width:0;border-top:1.25px solid var(--line)}.work-case>.work-head{display:grid;grid-template-columns:minmax(110px,.35fr) minmax(0,1.65fr) 44px;gap:24px;align-items:center;padding:clamp(22px,2.6vw,30px) 0;border-top:0}.work-case>.work-head:focus-visible,.selected-worlds-toggle:focus-visible{outline:2px solid currentColor;outline-offset:8px}.work-index{display:block;margin:0;font-size:12px;line-height:1;letter-spacing:.1em;font-weight:850}.work-title-wrap{display:block;min-width:0}.work-title{display:block;margin:0;font-size:clamp(34px,4.8vw,62px);line-height:.9;letter-spacing:-.055em;font-weight:900}.work-subtitle{display:block;margin-top:11px;font-size:clamp(12px,1.15vw,15px);line-height:1.15;letter-spacing:.02em;font-weight:800}.work-toggle-mark{width:38px;height:38px;font-size:24px;line-height:1;justify-self:end}.work-content{padding:2px 0 clamp(58px,7.5vw,96px)}.work-content .work-thought{margin-top:22px}.work-gallery--two{grid-template-columns:repeat(2,minmax(0,1fr))}.work-gallery--portrait.work-gallery--eight img:nth-child(7){grid-column:1/2;margin-left:50%}.work-gallery--portrait.work-gallery--eight img:nth-child(8){grid-column:2/3;margin-left:50%}.ip-meta{display:block;margin:0 0 14px;color:var(--ink);font-size:10px;line-height:1.25;letter-spacing:.085em;font-weight:850}.ip-card p strong{color:var(--ink);font-weight:800}.ip-card{justify-content:flex-start}.ip-card img{margin:clamp(42px,5vw,64px) auto clamp(42px,4.5vw,58px)}.ip-meta{margin-top:auto}.ip-open{margin-top:24px}@media (hover:hover) and (pointer:fine){.work-case>.work-head:hover .work-title,.selected-worlds-toggle:hover .selected-worlds-openline{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}}@media (max-width:819px){.selected-worlds-toggle{padding:30px 0 34px}.selected-worlds-title{font-size:clamp(58px,18vw,92px)}.selected-worlds-openline{margin-top:26px;font-size:10px}.selected-worlds-mark{width:31px;height:31px;font-size:21px}.selected-worlds-body{padding-top:44px}.work-case>.work-head{grid-template-columns:72px minmax(0,1fr) 34px;gap:12px;padding:20px 0}.work-title{font-size:clamp(27px,8vw,43px)}.work-subtitle{margin-top:7px;font-size:10px}.work-toggle-mark{width:31px;height:31px;font-size:20px}.work-content{padding-bottom:68px}.work-content .work-thought{width:calc(100% - 86px);margin:18px 0 28px auto;font-size:14px}.work-gallery--portrait.work-gallery--eight img:nth-child(7),.work-gallery--portrait.work-gallery--eight img:nth-child(8){grid-column:auto;margin-left:0}.work-gallery--two{gap:6px}.ip-meta{margin-bottom:10px;font-size:9px}.ip-card img{margin:36px auto 38px}.ip-open{margin-top:20px}}@media (max-width:430px){.work-case>.work-head{grid-template-columns:58px minmax(0,1fr) 30px;gap:9px}.work-content .work-thought{width:calc(100% - 67px)}.work-toggle-mark{width:28px;height:28px;font-size:18px}}


/* ==========================================================================
   v13 — always-visible Selected Worlds + podcast feature
   Existing site.js / portrait / flowers / audio motion remain untouched.
   ========================================================================== */
.selected-worlds-static-head {
  cursor: default;
  -webkit-tap-highlight-color: initial;
}

.selected-worlds-static-head:focus-visible {
  outline: none;
}

.podcast-feature {
  padding-top: clamp(110px, 13vw, 170px);
}

.podcast-card {
  display: block;
  width: min(920px, 100%);
  margin: 0 auto;
  color: inherit;
  text-decoration: none;
}

.podcast-card img {
  display: block;
  width: 100%;
  height: auto;
}

@media (max-width: 819px) {
  .podcast-feature {
    padding-top: clamp(78px, 18vw, 112px);
  }
}

/* Books layout — v14 ---------------------------------------------------------
   Desktop/tablet: four books in a clean 2 x 2 grid.
   Mobile: one book per row. The image remains visually half-page sized on
   larger screens because each book owns one half of the grid. */
@media (min-width: 820px) {
  .book-list {
    width: min(1100px, 100%);
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: clamp(40px, 5vw, 72px);
    row-gap: clamp(64px, 7vw, 92px);
    align-items: start;
  }

  .book-group {
    min-width: 0;
  }

  .book-banner {
    width: 100%;
  }

  .book-group .language-grid {
    width: 100%;
  }
}

@media (max-width: 819px) {
  .book-list {
    grid-template-columns: 1fr;
  }

  .book-banner {
    width: 50%;
  }
}

/* ========================================================================== 
   v15 — Original Worlds game posters
   User-supplied game art is the hero. Existing motion/JS remains untouched.
   ========================================================================== */
.ip-grid--visual {
  align-items: start;
  gap: clamp(18px, 2.2vw, 30px);
}

.ip-card--visual {
  min-height: 0;
  display: block;
  padding: 14px;
  border-radius: 30px;
  overflow: hidden;
}

.ip-poster-wrap {
  width: 100%;
  overflow: hidden;
  border-radius: 22px;
  background: rgba(0,0,0,.035);
}

.ip-card--visual .ip-poster {
  display: block;
  width: 100%;
  height: auto;
  max-width: none;
  max-height: none;
  margin: 0;
  aspect-ratio: 1160 / 1590;
  object-fit: cover;
  border-radius: 22px;
}

.ip-copy {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  padding: clamp(22px, 2.4vw, 30px) 8px 10px;
}

.ip-card--visual .ip-no {
  margin: 0 0 15px;
}

.ip-name {
  margin: 0;
  font-size: clamp(34px, 3.8vw, 52px);
  line-height: .86;
  letter-spacing: -.06em;
  font-weight: 900;
}

.ip-card--visual .ip-meta {
  margin: 18px 0 0;
  color: var(--ink);
  font-size: 10px;
  line-height: 1.28;
  letter-spacing: .09em;
  font-weight: 850;
}

.ip-card--visual p {
  margin: 18px 0 0;
  max-width: none;
  color: var(--muted);
  font-size: clamp(14px, 1.2vw, 16px);
  line-height: 1.38;
  letter-spacing: -.018em;
}

.ip-card--visual .ip-open {
  margin-top: 24px;
  font-size: 11px;
  letter-spacing: .09em;
}

@media (max-width: 819px) {
  .ip-grid--visual {
    gap: 58px;
  }

  .ip-card--visual {
    padding: 12px;
    border-radius: 24px;
  }

  .ip-poster-wrap,
  .ip-card--visual .ip-poster {
    border-radius: 18px;
  }

  .ip-copy {
    padding: 20px 7px 8px;
  }

  .ip-name {
    font-size: clamp(38px, 12vw, 58px);
  }

  .ip-card--visual .ip-meta {
    font-size: 9px;
  }

  .ip-card--visual p {
    font-size: 14px;
  }
}

/* ========================================================================== 
   v16/v18 — mobile parity / gesture lock
   - Avenir Next now loads from the root-level TTF webfonts on every device.
   - Vertical scrolling + pinch zoom remain available.
   - Double-tap browser zoom and horizontal page panning are suppressed.
   - Existing site.js motion is untouched.
   ========================================================================== */
html {
  width: 100%;
  max-width: 100%;
  overflow-x: clip;
  overscroll-behavior-x: none;
  touch-action: manipulation;
}

body {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: clip;
  overscroll-behavior-x: none;
  touch-action: pan-y pinch-zoom;
  font-family: var(--font-main);
}

.site-shell {
  max-width: 100%;
  overflow-x: clip;
  touch-action: pan-y pinch-zoom;
}

main,
section,
header,
footer,
nav,
article,
figure,
div {
  min-width: 0;
}

img,
picture,
svg,
video,
canvas {
  max-width: 100%;
}

a,
button,
summary,
[role="button"] {
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
}

img {
  -webkit-user-drag: none;
}

@media (max-width: 819px) {
  html,
  body {
    width: 100%;
    max-width: 100%;
  }

  .site-shell {
    width: 100%;
    max-width: 100%;
    padding-left: max(12px, env(safe-area-inset-left));
    padding-right: max(12px, env(safe-area-inset-right));
  }

  /* Remove the old +8px mobile masthead bleed: it was a common source of
     Safari's sideways rubber-band/pan feeling. */
  .masthead-art {
    width: 100%;
    max-width: 100%;
    margin-left: 0;
  }

  .hero-grid,
  .action-stack,
  .statement,
  .selected-worlds,
  .selected-worlds-body,
  .work-list,
  .work-case,
  .work-content,
  .work-gallery,
  .original-worlds,
  .ip-grid,
  .ip-card,
  .timeline,
  .timeline-list,
  .books,
  .book-list,
  .book-group,
  .language-grid,
  .podcast-feature,
  .podcast-card,
  .recognition,
  .recognition-grid,
  .final-contact,
  .contact-actions,
  .footer-art {
    max-width: 100%;
    min-width: 0;
  }

  .work-case > .work-head,
  .work-title-wrap,
  .work-thought,
  .timeline-list div {
    min-width: 0;
  }

  .work-title,
  .work-subtitle,
  .ip-name,
  .timeline-list span,
  .recognition-grid strong,
  .final-contact h2 {
    overflow-wrap: break-word;
  }

  .work-gallery img,
  .ip-poster-wrap,
  .ip-card--visual .ip-poster,
  .podcast-card img,
  .book-banner img,
  .footer-art img {
    width: 100%;
    max-width: 100%;
  }
}

/* ========================================================================== 
   v17 - full-screen campaign lightbox + performance pass + mobile type guard
   ========================================================================== */
.work-content {
  contain: layout paint;
}

.work-gallery img[data-full] {
  cursor: zoom-in;
  contain: paint;
  -webkit-user-select: none;
  user-select: none;
  -webkit-user-drag: none;
}

.work-gallery img[data-full]:focus-visible {
  outline: 3px solid var(--ink);
  outline-offset: 4px;
}

.ip-poster-wrap,
.book-banner,
.podcast-card,
.footer-art {
  contain: paint;
}

html.is-lightbox-open,
body.is-lightbox-open {
  overscroll-behavior: none;
}

body.is-lightbox-open .flower-particle {
  animation-play-state: paused !important;
}

.site-lightbox {
  position: fixed;
  inset: 0;
  z-index: 12000;
  display: grid;
  grid-template-columns: 74px minmax(0, 1fr) 74px;
  align-items: center;
  gap: 16px;
  padding: 76px 18px 54px;
  background: rgba(250, 247, 237, .985);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity .18s var(--ease), visibility 0s linear .18s;
  contain: layout paint style;
  isolation: isolate;
  overscroll-behavior: contain;
  touch-action: manipulation;
}

.site-lightbox.is-open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition-delay: 0s;
}

.site-lightbox__topbar {
  position: absolute;
  top: max(14px, env(safe-area-inset-top));
  left: max(16px, env(safe-area-inset-left));
  right: max(16px, env(safe-area-inset-right));
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  z-index: 2;
}

.site-lightbox__meta {
  display: flex;
  align-items: baseline;
  gap: 12px;
  min-width: 0;
  font-size: 11px;
  line-height: 1;
  letter-spacing: .09em;
  font-weight: 850;
}

.site-lightbox__title {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.site-lightbox__count {
  flex: 0 0 auto;
  color: var(--muted);
}

.site-lightbox__close,
.site-lightbox__nav {
  appearance: none;
  -webkit-appearance: none;
  border: 1.25px solid var(--line);
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font-main);
  font-size: 10px;
  line-height: 1;
  letter-spacing: .1em;
  font-weight: 850;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}

.site-lightbox__close {
  min-width: 76px;
  height: 38px;
  padding: 0 15px;
  border-radius: 999px;
}

.site-lightbox__nav {
  width: 58px;
  height: 58px;
  padding: 0;
  border-radius: 999px;
  justify-self: center;
}

.site-lightbox__nav:focus-visible,
.site-lightbox__close:focus-visible {
  outline: 3px solid var(--ink);
  outline-offset: 4px;
}

.site-lightbox__stage {
  grid-column: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  min-height: 0;
  width: 100%;
  height: calc(100vh - 130px);
  margin: 0;
}

@supports (height: 100dvh) {
  .site-lightbox__stage {
    height: calc(100dvh - 130px);
  }
}

.site-lightbox__image {
  display: block;
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  border-radius: clamp(12px, 1.3vw, 18px);
  background: rgba(5, 5, 5, .035);
  opacity: 1;
  transition: opacity .12s linear;
  -webkit-user-select: none;
  user-select: none;
  -webkit-user-drag: none;
}

.site-lightbox__image.is-loading {
  opacity: .985;
}

@media (hover: hover) and (pointer: fine) {
  .work-gallery img[data-full]:hover {
    opacity: .965;
  }

  .site-lightbox__close:hover,
  .site-lightbox__nav:hover {
    background: var(--ink);
    color: var(--paper);
  }
}

@media (max-width: 819px) {
  .practice-list,
  .practice-list span,
  .selected-worlds-title,
  .section-head h2,
  .books-head h2,
  .work-title,
  .work-subtitle,
  .ip-name,
  .ip-meta,
  .timeline-list span,
  .recognition-grid strong,
  .recognition-grid span,
  .final-contact h2,
  .contact-actions a {
    max-width: 100%;
    min-width: 0;
    white-space: normal;
    text-wrap: balance;
  }

  .practice-list {
    font-size: clamp(23px, 7.1vw, 32px);
  }

  .section-head h2,
  .selected-worlds-title {
    font-size: clamp(48px, 16vw, 72px);
  }

  #recognition-heading {
    font-size: clamp(32px, 10.6vw, 48px);
    letter-spacing: -.055em;
  }

  .final-contact h2 {
    font-size: clamp(30px, 9.8vw, 44px);
    line-height: .86;
  }

  .work-title {
    font-size: clamp(24px, 7.4vw, 38px);
  }

  #work-amnesty-title {
    font-size: clamp(21px, 6.2vw, 31px);
  }

  .work-subtitle,
  .ip-meta,
  .section-deck,
  .recognition-grid span,
  .contact-actions a {
    overflow-wrap: anywhere;
  }

  .site-lightbox {
    grid-template-columns: 1fr;
    padding: calc(max(58px, env(safe-area-inset-top) + 48px)) 10px calc(max(74px, env(safe-area-inset-bottom) + 62px));
  }

  .site-lightbox__stage {
    grid-column: 1;
    height: calc(100vh - 142px);
  }

  @supports (height: 100dvh) {
    .site-lightbox__stage {
      height: calc(100dvh - 142px);
    }
  }

  .site-lightbox__image {
    max-width: calc(100vw - 20px);
    max-height: 100%;
    border-radius: 12px;
  }

  .site-lightbox__topbar {
    top: max(10px, env(safe-area-inset-top));
    left: max(11px, env(safe-area-inset-left));
    right: max(11px, env(safe-area-inset-right));
  }

  .site-lightbox__meta {
    max-width: calc(100% - 88px);
    gap: 8px;
    font-size: 9px;
  }

  .site-lightbox__close {
    min-width: 70px;
    height: 34px;
    padding: 0 12px;
    font-size: 9px;
  }

  .site-lightbox__nav {
    position: absolute;
    bottom: max(12px, env(safe-area-inset-bottom));
    z-index: 3;
    width: 52px;
    height: 42px;
    border-radius: 999px;
    font-size: 9px;
  }

  .site-lightbox__nav--prev {
    left: max(12px, env(safe-area-inset-left));
  }

  .site-lightbox__nav--next {
    right: max(12px, env(safe-area-inset-right));
  }
}

@media (max-width: 390px) {
  .practice-list {
    font-size: clamp(21px, 6.8vw, 27px);
  }

  #recognition-heading {
    font-size: clamp(29px, 9.8vw, 39px);
  }

  .final-contact h2 {
    font-size: clamp(28px, 9.2vw, 37px);
  }

  .work-title {
    font-size: clamp(22px, 7vw, 30px);
  }

  #work-amnesty-title {
    font-size: clamp(20px, 5.8vw, 25px);
  }
}


/* ==========================================================================
   v18 — mobile books + shared rollover + device-independent arrow
   ========================================================================== */

/* Draw the north-east arrow in CSS so it is identical on iOS, Android and
   desktop instead of relying on a font-specific Unicode arrow glyph. */
.ui-arrow {
  position: relative;
  display: inline-block;
  flex: 0 0 auto;
  width: .72em;
  height: .72em;
  margin-left: .28em;
  vertical-align: .01em;
  color: currentColor;
}

.ui-arrow::before {
  content: "";
  position: absolute;
  left: 4%;
  bottom: 10%;
  width: 103%;
  height: 1.5px;
  border-radius: 999px;
  background: currentColor;
  transform: rotate(-45deg);
  transform-origin: left center;
}

.ui-arrow::after {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  width: 54%;
  height: 54%;
  border-top: 1.5px solid currentColor;
  border-right: 1.5px solid currentColor;
}

.ip-open,
.contact-actions a,
.archive-link a {
  display: inline-flex;
  align-items: center;
}

/* Footer/contact cards now use the exact same bottom-up black rollover language
   as the primary menu cards. */
.contact-actions a {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  transition:
    transform .28s var(--ease),
    color .28s var(--ease),
    border-color .28s var(--ease),
    box-shadow .28s var(--ease);
}

.contact-actions a::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--ink);
  transform: scaleY(0);
  transform-origin: 50% 100%;
  transition: transform .34s var(--ease);
}

.contact-actions a:focus-visible {
  outline: 3px solid var(--ink);
  outline-offset: 4px;
}

.contact-actions a:active {
  transform: translateY(1px) scale(.995);
}

@media (hover: hover) and (pointer: fine) {
  .contact-actions a:hover {
    color: var(--paper);
    border-color: var(--ink);
    text-decoration: none;
    transform: translateY(-2px);
    box-shadow: 0 8px 0 rgba(0, 0, 0, .06);
  }

  .contact-actions a:hover::before {
    transform: scaleY(1);
  }

  .contact-actions a:hover .ui-arrow,
  .ip-card--visual:hover .ui-arrow,
  .archive-link a:hover .ui-arrow {
    transform: translate(1px, -1px);
  }
}

.ui-arrow {
  transition: transform .24s var(--ease);
}

/* On phones, each book artwork uses the full content width. Desktop/tablet
   stays in the existing 2 x 2 composition. */
@media (max-width: 819px) {
  .book-group {
    width: 100%;
  }

  .book-banner {
    width: 100%;
    max-width: none;
  }

  .book-banner img {
    width: 100%;
    max-width: 100%;
  }
}


/* v19 — final launch performance polish.
   Defer rendering of deep, static sections until they approach the viewport.
   Visual design and existing motion code remain unchanged. */
@supports (content-visibility: auto) {
  .books,
  .podcast-feature,
  .recognition,
  .final-contact,
  .footer-art {
    content-visibility: auto;
    contain-intrinsic-size: auto 900px;
  }
}


/* ==========================================================================
   v20 — story-led navigation + live typography over text-free artwork
   ========================================================================== */

/* Elegant one-page anchor navigation. */
#this-is-me,
#selected-worlds,
#original-worlds,
#thirty-years,
#books,
#podcast,
#contact {
  scroll-margin-top: clamp(18px, 3vw, 42px);
}

.site-nav-link span {
  position: relative;
  z-index: 1;
}

/* Header artwork now carries live HTML type instead of baked-in pixels. */
.masthead {
  position: relative;
  isolation: isolate;
}

.masthead-copy {
  position: absolute;
  z-index: 2;
  top: 6.8%;
  left: 10%;
  right: 10%;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  color: var(--ink);
  pointer-events: none;
}

.masthead-kicker,
.masthead-role {
  display: block;
  max-width: 100%;
  font-weight: 900;
  white-space: nowrap;
}

.masthead-kicker {
  font-size: clamp(13px, 2.25vw, 25px);
  line-height: 1;
  letter-spacing: -.035em;
}

.masthead-role {
  margin-top: clamp(15px, 2.1vw, 23px);
  font-size: clamp(25px, 4.55vw, 51px);
  line-height: .9;
  letter-spacing: -.055em;
}

/* This Is Me — no service laundry list; story first. */
.statement#this-is-me {
  text-align: left;
}

.this-is-me-kicker {
  margin: 0 0 clamp(24px, 3.2vw, 38px);
}

.statement#this-is-me .manifesto {
  width: min(820px, 100%);
  margin: 0;
  text-align: left;
  font-size: clamp(58px, 8.6vw, 104px);
  line-height: .82;
  letter-spacing: -.072em;
  text-wrap: balance;
}

.statement#this-is-me .bio {
  width: min(690px, 88%);
  margin-left: auto;
  margin-right: 0;
  font-size: clamp(15px, 1.55vw, 19px);
  line-height: 1.42;
  letter-spacing: -.022em;
}

.statement#this-is-me .bio--lead {
  margin-top: clamp(42px, 5vw, 62px);
}

.statement#this-is-me .bio--continuation {
  margin-top: 20px;
}

.bio-signoff {
  width: min(690px, 88%);
  margin: clamp(30px, 4vw, 46px) 0 0 auto;
  padding-top: 20px;
  border-top: 1.25px solid var(--line);
  font-size: clamp(18px, 2vw, 25px);
  line-height: 1.12;
  letter-spacing: -.04em;
  font-weight: 800;
}

/* Books — explain the body of work before the covers. */
.books-head {
  max-width: 900px;
  margin-left: auto;
  margin-right: auto;
}

.books-stats {
  margin-bottom: 0 !important;
}

.books-manifesto {
  width: min(760px, 100%);
  margin: clamp(34px, 4.5vw, 54px) auto 0;
  font-size: clamp(28px, 4.4vw, 52px);
  line-height: .9;
  letter-spacing: -.055em;
  font-weight: 900;
  text-align: center;
  text-wrap: balance;
}

.books-description {
  width: min(720px, 92%);
  margin: clamp(22px, 3vw, 34px) auto 0;
  color: var(--muted);
  font-size: clamp(14px, 1.5vw, 18px);
  line-height: 1.42;
  letter-spacing: -.018em;
  text-align: center;
}

/* Podcast — type is live, searchable and responsive; art is text-free. */
.podcast-feature {
  text-align: center;
}

.podcast-card {
  position: relative;
  overflow: hidden;
  border-radius: clamp(22px, 2.4vw, 34px);
  background: var(--paper);
  isolation: isolate;
  transition: transform .3s var(--ease);
}

.podcast-live-copy {
  position: relative;
  z-index: 2;
  padding: 0 clamp(12px, 3vw, 30px) clamp(20px, 2.8vw, 34px);
  text-align: center;
}

.podcast-live-copy h2 {
  margin: 0;
  font-size: clamp(64px, 11vw, 132px);
  line-height: .78;
  letter-spacing: -.072em;
  font-weight: 900;
}

.podcast-topics {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin: clamp(38px, 5vw, 58px) 0 0;
  font-size: clamp(26px, 4.5vw, 52px);
  line-height: .96;
  letter-spacing: -.045em;
  font-weight: 900;
  text-wrap: balance;
}

.podcast-topics span {
  display: block;
  max-width: 100%;
}

.podcast-art {
  display: block;
  width: 100%;
  height: auto;
  margin-top: clamp(-16px, -1.4vw, -8px);
}

.podcast-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: clamp(24px, 3vw, 38px) 0 clamp(16px, 2vw, 24px);
  padding: 12px 18px;
  border: 1.25px solid var(--line);
  border-radius: 999px;
  font-size: 10px;
  line-height: 1;
  letter-spacing: .11em;
  font-weight: 850;
}

@media (hover: hover) and (pointer: fine) {
  .podcast-card:hover {
    transform: translateY(-3px);
  }

  .podcast-card:hover .podcast-cta {
    background: var(--ink);
    color: var(--paper);
  }
}

/* Contact gains Instagram without becoming a visual afterthought. */
.contact-actions {
  width: min(880px, 100%);
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

/* Footer artwork is text-free; credits are live text placed back on top. */
.footer-art {
  position: relative;
  isolation: isolate;
}

.footer-live-copy {
  position: absolute;
  z-index: 2;
  top: 2.2%;
  left: 21%;
  right: 21%;
  text-align: center;
  color: var(--ink);
  pointer-events: none;
}

.footer-credit,
.footer-copyright {
  margin: 0;
}

.footer-credit {
  font-size: clamp(12px, 1.5vw, 18px);
  line-height: 1.05;
  letter-spacing: -.028em;
  font-weight: 800;
}

.footer-copyright {
  margin-top: 8px;
  font-size: clamp(9px, 1.1vw, 13px);
  line-height: 1.15;
  letter-spacing: -.012em;
  font-weight: 500;
}

@media (max-width: 819px) {
  .masthead-copy {
    top: 6.2%;
    left: 5%;
    right: 5%;
  }

  .masthead-kicker {
    font-size: clamp(10px, 3vw, 15px);
  }

  .masthead-role {
    margin-top: clamp(8px, 2.4vw, 13px);
    font-size: clamp(18px, 6.2vw, 32px);
  }

  .statement#this-is-me {
    padding-inline: 0;
  }

  .statement#this-is-me .manifesto {
    font-size: clamp(42px, 13.3vw, 68px);
    line-height: .84;
  }

  .statement#this-is-me .bio,
  .bio-signoff {
    width: 100%;
    margin-left: 0;
  }

  .statement#this-is-me .bio {
    font-size: clamp(14px, 4vw, 17px);
    line-height: 1.42;
  }

  .books-manifesto {
    font-size: clamp(27px, 9vw, 42px);
  }

  .books-description {
    width: 100%;
    font-size: 14px;
  }

  .podcast-card {
    border-radius: 22px;
  }

  .podcast-live-copy {
    padding-inline: 4px;
  }

  .podcast-live-copy h2 {
    font-size: clamp(56px, 19vw, 90px);
  }

  .podcast-topics {
    margin-top: 28px;
    font-size: clamp(22px, 7.2vw, 34px);
    line-height: .98;
  }

  .podcast-art {
    margin-top: -4px;
  }

  .contact-actions {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .footer-live-copy {
    top: 2.3%;
    left: 18%;
    right: 18%;
  }

  .footer-credit {
    font-size: clamp(9px, 2.5vw, 12px);
  }

  .footer-copyright {
    margin-top: 5px;
    font-size: clamp(7px, 1.9vw, 9px);
  }
}

@media (max-width: 430px) {
  .masthead-role {
    font-size: clamp(16px, 6vw, 25px);
  }

  .podcast-topics {
    font-size: clamp(20px, 6.8vw, 29px);
  }

  .contact-actions a {
    min-height: 62px;
    padding-inline: 10px;
    font-size: 13px;
  }

  .footer-live-copy {
    left: 16%;
    right: 16%;
  }
}

/* ==========================================================================\n   v21 · centered editorial type, stable buttons, instant anchor response\n   ========================================================================== */
.statement#this-is-me,
.statement#this-is-me .manifesto,
.statement#this-is-me .bio,
.bio-signoff,
.selected-worlds-static-head,
.section-head,
.books-head,
.podcast-live-copy,
.final-contact {
  text-align: center;
}

.statement#this-is-me .manifesto {
  width: min(860px, 100%);
  margin-left: auto;
  margin-right: auto;
}

.statement#this-is-me .bio,
.bio-signoff {
  width: min(760px, 94%);
  margin-left: auto;
  margin-right: auto;
}

.statement#this-is-me .bio {
  font-size: clamp(17px, 1.8vw, 21px);
  line-height: 1.48;
}

.bio-signoff {
  font-size: clamp(20px, 2.2vw, 27px);
  line-height: 1.16;
}

.section-deck {
  width: min(760px, 90%);
  font-size: clamp(16px, 1.7vw, 20px);
  line-height: 1.46;
  text-align: center;
}

.books-description {
  width: min(760px, 94%);
  font-size: clamp(16px, 1.7vw, 20px);
  line-height: 1.48;
}

.work-subtitle {
  font-size: clamp(13px, 1.3vw, 16px);
  line-height: 1.25;
}

.work-thought {
  font-size: clamp(16px, 1.75vw, 21px);
  line-height: 1.46;
}

.ip-card p {
  font-size: clamp(16px, 1.45vw, 18px);
  line-height: 1.46;
}

.ip-meta {
  font-size: 11.5px;
  line-height: 1.35;
}

.recognition-note {
  font-size: 16px;
  line-height: 1.4;
}

/* One button language across the site. No hover movement, no image drift. */
.action-card,
.contact-actions a,
.podcast-card,
.podcast-cta,
.language-button {
  will-change: auto;
}

.podcast-card {
  transform: none !important;
}

.podcast-cta {
  width: min(360px, 92%);
  min-height: 78px;
  margin: clamp(30px, 3.8vw, 46px) auto clamp(22px, 2.8vw, 32px);
  padding: 14px 24px;
  border-radius: 24px;
  font-size: 15px;
  line-height: 1.05;
  letter-spacing: -.015em;
  font-weight: 850;
  transition: color .28s var(--ease), background-color .28s var(--ease), border-color .28s var(--ease);
}

@media (hover: hover) and (pointer: fine) {
  .action-card:hover,
  .contact-actions a:hover,
  .podcast-card:hover {
    transform: none !important;
    box-shadow: none !important;
  }

  .action-card--logo:hover img {
    transform: none !important;
  }

  .podcast-card:hover .podcast-cta {
    background: var(--ink);
    color: var(--paper);
    border-color: var(--ink);
  }
}

.action-card:active,
.contact-actions a:active,
.podcast-card:active {
  transform: none !important;
}

/* Open project indicator never uses a dash glyph. */
.work-case[open] .work-toggle-mark::before,
.selected-worlds[open] .selected-worlds-mark::before {
  content: "×";
}

/* Keep anchor targets laid out from first paint so the first menu click has no\n   layout wake up before it can scroll. */
@supports (content-visibility: auto) {
  .books,
  .podcast-feature,
  .recognition,
  .final-contact,
  .footer-art {
    content-visibility: visible;
    contain-intrinsic-size: none;
  }
}

.site-nav-link {
  touch-action: manipulation;
}

@media (max-width: 819px) {
  .statement#this-is-me .bio,
  .bio-signoff,
  .books-description,
  .section-deck {
    width: 100%;
  }

  .statement#this-is-me .bio {
    font-size: clamp(16px, 4.4vw, 18px);
    line-height: 1.5;
  }

  .books-description,
  .section-deck {
    font-size: clamp(15px, 4.1vw, 17px);
    line-height: 1.48;
  }

  .work-subtitle {
    font-size: clamp(12px, 3.4vw, 14px);
  }

  .work-content .work-thought {
    font-size: clamp(15px, 4vw, 17px);
    line-height: 1.46;
  }

  .ip-card p {
    font-size: 16px;
  }

  .ip-meta {
    font-size: 10.5px;
  }

  .podcast-cta {
    width: min(340px, 94%);
    min-height: 70px;
    font-size: 14px;
  }
}

@media (hover: hover) and (pointer: fine) {
  .language-button:hover {
    transform: none !important;
  }
}

.language-button:active {
  transform: none !important;
}

.work-thought {
  margin-left: auto;
  margin-right: auto;
  text-align: center;
}

/* ==========================================================================\n   v22 · unified editorial subcopy system\n   Every explanatory paragraph now shares one visual language.\n   ========================================================================== */
:root {
  --editorial-copy-size: clamp(18px, 1.9vw, 23px);
  --editorial-copy-line: 1.52;
  --editorial-copy-width: 780px;
}

/* Section level explanatory copy */
.statement#this-is-me .bio,
.section-head .section-deck,
.books-head .books-description,
.work-content .work-thought,
.recognition .recognition-note {
  width: min(var(--editorial-copy-width), 94%);
  margin-left: auto;
  margin-right: auto;
  color: var(--muted);
  font-size: var(--editorial-copy-size);
  line-height: var(--editorial-copy-line);
  letter-spacing: -.022em;
  font-weight: 500;
  text-align: center;
  text-wrap: pretty;
}

/* The generic .books-head p rule used to win on specificity. Keep stats bold,
   but make the actual editorial description obey the shared copy system. */
.books-head .books-description {
  margin-top: clamp(26px, 3.3vw, 38px);
  margin-bottom: 0;
  font-size: var(--editorial-copy-size);
  line-height: var(--editorial-copy-line);
  letter-spacing: -.022em;
  font-weight: 500;
  color: var(--muted);
}

/* Give the books statement the same optical centre as its description. */
.books-head .books-manifesto {
  width: min(800px, 96%);
  margin-left: auto;
  margin-right: auto;
  text-align: center;
}

/* Card descriptions use the same rhythm, only a touch smaller so the cards
   stay compact. */
.ip-card--visual p {
  font-size: clamp(17px, 1.55vw, 20px);
  line-height: 1.5;
  letter-spacing: -.02em;
  font-weight: 500;
}

.work-subtitle {
  font-size: clamp(14px, 1.4vw, 17px);
  line-height: 1.3;
}

@media (max-width: 819px) {
  :root {
    --editorial-copy-size: clamp(17px, 4.65vw, 20px);
    --editorial-copy-line: 1.5;
  }

  .statement#this-is-me .bio,
  .section-head .section-deck,
  .books-head .books-description,
  .work-content .work-thought,
  .recognition .recognition-note {
    width: 100%;
    padding-inline: 2px;
  }

  .books-head .books-description {
    margin-top: 24px;
  }

  .ip-card--visual p {
    font-size: clamp(17px, 4.35vw, 19px);
    line-height: 1.5;
  }

  .work-subtitle {
    font-size: clamp(13px, 3.7vw, 15px);
  }
}

/* ========================================================================== 
   v23 · native multilingual system + podcast editorial copy
   All translations are bundled locally in i18n.js. No translation service.
   ========================================================================== */

.locale-switcher {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: clamp(7px, .8vw, 10px);
  direction: ltr;
}

.locale-switcher--top {
  margin: 0 0 clamp(16px, 2vw, 24px);
}

.locale-switcher--footer {
  margin: clamp(88px, 10vw, 132px) 0 clamp(18px, 2.4vw, 30px);
}

.locale-button {
  position: relative;
  isolation: isolate;
  min-width: 0;
  min-height: clamp(48px, 5.2vw, 58px);
  padding: 10px 8px;
  border: 1.25px solid var(--line);
  border-radius: clamp(17px, 1.8vw, 24px);
  background: transparent;
  color: var(--ink);
  overflow: hidden;
  font-family: var(--font-main);
  font-size: clamp(10px, 1vw, 12px);
  line-height: 1.05;
  letter-spacing: .015em;
  font-weight: 800;
  text-align: center;
  white-space: normal;
  overflow-wrap: anywhere;
  cursor: pointer;
  opacity: 1;
  transform: none !important;
  transition: color .25s var(--ease), border-color .25s var(--ease), background-color .25s var(--ease);
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}

.locale-button::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--ink);
  transform: scaleY(0);
  transform-origin: 50% 100%;
  transition: transform .3s var(--ease);
}

.locale-button.is-active,
.locale-button:disabled {
  background: var(--ink);
  border-color: var(--ink);
  color: var(--paper);
  cursor: default;
  opacity: 1;
}

.locale-button.is-active::before,
.locale-button:disabled::before {
  transform: scaleY(1);
}

@media (hover: hover) and (pointer: fine) {
  .locale-button:not(:disabled):hover {
    color: var(--paper);
    border-color: var(--ink);
    transform: none !important;
  }
  .locale-button:not(:disabled):hover::before {
    transform: scaleY(1);
  }
}

.podcast-description {
  width: min(var(--editorial-copy-width), 92%);
  margin: clamp(34px, 4vw, 52px) auto 0;
  color: var(--muted);
  font-size: clamp(19px, 2vw, 24px);
  line-height: 1.52;
  letter-spacing: -.022em;
  font-weight: 500;
  text-align: center;
  text-wrap: pretty;
}

/* Long native headlines must never escape the viewport. */
[data-i18n],
[data-i18n-html] {
  min-width: 0;
}

.action-card--text span,
.selected-worlds-title,
.section-head h2,
.books-head h2,
.books-manifesto,
.podcast-live-copy h2,
.podcast-topics,
.final-contact h2,
.work-title,
.work-subtitle {
  max-width: 100%;
  overflow-wrap: anywhere;
  text-wrap: balance;
}

.action-card--text span {
  width: 92%;
  line-height: 1.02;
  text-align: center;
}

/* Script aware typography. Avenir remains the Latin identity while native
   system faces supply glyphs Avenir Next does not contain. */
html[data-locale="ja"] {
  --font-main: "Recep Avenir Next", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic", "YuGothic", sans-serif;
}
html[data-locale="zh-CN"] {
  --font-main: "Recep Avenir Next", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
}
html[data-locale="ar"] {
  --font-main: "Geeza Pro", "Noto Sans Arabic", Tahoma, Arial, sans-serif;
}

html[data-locale="ja"] .manifesto,
html[data-locale="ja"] .selected-worlds-title,
html[data-locale="ja"] .section-head h2,
html[data-locale="ja"] .books-head h2,
html[data-locale="ja"] .books-manifesto,
html[data-locale="ja"] .podcast-live-copy h2,
html[data-locale="ja"] .podcast-topics,
html[data-locale="zh-CN"] .manifesto,
html[data-locale="zh-CN"] .selected-worlds-title,
html[data-locale="zh-CN"] .section-head h2,
html[data-locale="zh-CN"] .books-head h2,
html[data-locale="zh-CN"] .books-manifesto,
html[data-locale="zh-CN"] .podcast-live-copy h2,
html[data-locale="zh-CN"] .podcast-topics {
  letter-spacing: -.035em;
  line-height: .94;
}

html[data-locale="ar"] .manifesto,
html[data-locale="ar"] .selected-worlds-title,
html[data-locale="ar"] .section-head h2,
html[data-locale="ar"] .books-head h2,
html[data-locale="ar"] .books-manifesto,
html[data-locale="ar"] .podcast-live-copy h2,
html[data-locale="ar"] .podcast-topics,
html[data-locale="ar"] p {
  letter-spacing: 0;
}

/* Preserve the site's composition in RTL while letting the language itself
   read naturally. Galleries and grids do not unexpectedly flip positions. */
html[dir="rtl"] body { direction: rtl; }
html[dir="rtl"] .hero-grid,
html[dir="rtl"] .action-stack,
html[dir="rtl"] .work-head,
html[dir="rtl"] .work-gallery,
html[dir="rtl"] .ip-grid,
html[dir="rtl"] .book-list,
html[dir="rtl"] .language-grid,
html[dir="rtl"] .recognition-grid,
html[dir="rtl"] .contact-actions,
html[dir="rtl"] .locale-switcher,
html[dir="rtl"] .timeline-list {
  direction: ltr;
}
html[dir="rtl"] .action-card span,
html[dir="rtl"] .statement,
html[dir="rtl"] .selected-worlds-static-head,
html[dir="rtl"] .work-title-wrap,
html[dir="rtl"] .work-thought,
html[dir="rtl"] .section-head,
html[dir="rtl"] .ip-copy,
html[dir="rtl"] .books-head,
html[dir="rtl"] .podcast-card,
html[dir="rtl"] .recognition,
html[dir="rtl"] .final-contact,
html[dir="rtl"] .footer-live-copy {
  direction: rtl;
}

@media (max-width: 980px) {
  .locale-switcher { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (max-width: 819px) {
  .podcast-description {
    width: 100%;
    padding-inline: 2px;
    font-size: clamp(18px, 4.9vw, 21px);
    line-height: 1.5;
  }
  .action-card--text {
    font-size: clamp(14px, 3.8vw, 18px);
  }
  html[data-locale="de"] .action-card--text,
  html[data-locale="ru"] .action-card--text,
  html[data-locale="el"] .action-card--text {
    font-size: clamp(13px, 3.55vw, 17px);
  }
}

@media (max-width: 620px) {
  .locale-switcher {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 7px;
  }
  .locale-button {
    min-height: 48px;
    border-radius: 17px;
    font-size: 11px;
  }
  .locale-switcher--footer {
    margin-top: 76px;
  }
}


/* ========================================================================== 
   v24 — Original Worlds as full editorial chapters
   One world at a time. Large user supplied art, deeper story, zero card grid.
   ========================================================================== */
.original-worlds .section-head {
  margin-bottom: 0;
}

.ip-stack.ip-grid--visual {
  display: block;
  margin-top: clamp(76px, 9vw, 124px);
}

.ip-feature {
  width: 100%;
  padding: 0 0 clamp(108px, 13vw, 176px);
  margin: 0 0 clamp(108px, 13vw, 176px);
  border-bottom: 1.25px solid var(--line);
}

.ip-feature:last-child {
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: 0;
}

.ip-feature-visual {
  display: block;
  width: min(900px, 94%);
  margin: 0 auto;
  color: inherit;
  text-decoration: none;
  border-radius: clamp(24px, 3vw, 38px);
  overflow: hidden;
  background: rgba(0,0,0,.025);
}

.ip-feature-visual .ip-poster-wrap {
  width: 100%;
  margin: 0;
  border-radius: inherit;
}

.ip-feature-visual .ip-poster {
  display: block;
  width: 100%;
  height: auto;
  max-width: none;
  max-height: none;
  margin: 0;
  aspect-ratio: 900 / 1234;
  object-fit: cover;
  border-radius: inherit;
  transition: filter .28s ease;
}

@media (hover:hover) and (pointer:fine) {
  .ip-feature-visual:hover .ip-poster {
    filter: brightness(.965);
  }
}

.ip-feature-copy.ip-copy {
  width: min(900px, 94%);
  margin: 0 auto;
  padding: clamp(38px, 5vw, 62px) 0 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}

.ip-feature .ip-no {
  margin: 0 0 18px;
  font-size: 12px;
  line-height: 1;
  letter-spacing: .14em;
  font-weight: 850;
}

.ip-feature .ip-name {
  margin: 0;
  font-size: clamp(54px, 8.2vw, 112px);
  line-height: .84;
  letter-spacing: -.065em;
  font-weight: 900;
  text-align: center;
}

.ip-feature .ip-meta,
.ip-card--visual .ip-meta {
  display: block;
  width: min(760px, 96%);
  margin: clamp(24px, 2.7vw, 34px) auto 0;
  color: var(--ink);
  font-size: clamp(11px, 1.05vw, 13px);
  line-height: 1.42;
  letter-spacing: .09em;
  font-weight: 850;
  text-align: center;
}

.ip-feature-text {
  width: min(820px, 100%);
  margin: clamp(34px, 4vw, 50px) auto 0;
}

.ip-feature .ip-feature-text p,
.ip-card--visual .ip-feature-text p {
  width: 100%;
  max-width: none;
  margin: 0 auto;
  color: var(--muted);
  font-size: clamp(18px, 1.8vw, 22px);
  line-height: 1.56;
  letter-spacing: -.022em;
  font-weight: 500;
  text-align: center;
}

.ip-feature .ip-feature-text p + p {
  margin-top: clamp(20px, 2.2vw, 28px);
}

.ip-open--button {
  width: min(520px, 100%);
  min-height: 78px;
  margin: clamp(38px, 4.5vw, 54px) auto 0;
  padding: 0 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  border: 1.25px solid var(--line);
  border-radius: 24px;
  color: var(--ink);
  background: rgba(250,247,237,.58);
  text-decoration: none;
  font-size: clamp(13px, 1.15vw, 15px);
  line-height: 1;
  letter-spacing: .09em;
  font-weight: 850;
  transition: background-color .22s ease, color .22s ease;
}

@media (hover:hover) and (pointer:fine) {
  .ip-open--button:hover {
    color: var(--paper);
    background: var(--ink);
  }
  .ip-open--button:hover .ui-arrow::before,
  .ip-open--button:hover .ui-arrow::after {
    border-color: var(--paper);
  }
}

@media (max-width: 819px) {
  .ip-stack.ip-grid--visual {
    margin-top: 64px;
  }

  .ip-feature {
    padding-bottom: 88px;
    margin-bottom: 88px;
  }

  .ip-feature-visual,
  .ip-feature-copy.ip-copy {
    width: 100%;
  }

  .ip-feature-visual,
  .ip-feature-visual .ip-poster-wrap,
  .ip-feature-visual .ip-poster {
    border-radius: 22px;
  }

  .ip-feature-copy.ip-copy {
    padding-top: 30px;
  }

  .ip-feature .ip-no {
    margin-bottom: 14px;
  }

  .ip-feature .ip-name {
    font-size: clamp(48px, 16vw, 76px);
  }

  .ip-feature .ip-meta,
  .ip-card--visual .ip-meta {
    width: 96%;
    margin-top: 22px;
    font-size: 10.5px;
    line-height: 1.45;
  }

  .ip-feature-text {
    width: 100%;
    margin-top: 28px;
  }

  .ip-feature .ip-feature-text p,
  .ip-card--visual .ip-feature-text p {
    font-size: clamp(18px, 5vw, 21px);
    line-height: 1.53;
  }

  .ip-feature .ip-feature-text p + p {
    margin-top: 20px;
  }

  .ip-open--button {
    width: 100%;
    min-height: 76px;
    margin-top: 34px;
    border-radius: 22px;
    font-size: 13px;
  }
}


/* ========================================================================== 
   v25 · corrected world narratives + book descriptions
   ========================================================================== */
.book-copy {
  width: min(94%, 500px);
  margin: 0 auto clamp(24px, 3vw, 34px);
  color: var(--muted);
  font-size: clamp(17px, 1.5vw, 20px);
  line-height: 1.52;
  letter-spacing: -.021em;
  font-weight: 500;
  text-align: center;
  text-wrap: pretty;
}

.book-copy strong {
  color: var(--ink);
  font-weight: 750;
}

@media (min-width: 820px) {
  .book-group {
    align-content: start;
  }
}

@media (max-width: 819px) {
  .book-copy {
    width: 100%;
    margin-bottom: 26px;
    padding-inline: 2px;
    font-size: clamp(17px, 4.55vw, 19px);
    line-height: 1.52;
  }
}


/* ========================================================================== 
   v26 · 27 project Selected Worlds expansion
   ========================================================================== */
.work-gallery--portrait.work-gallery--four {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.work-gallery--portrait.work-gallery--seven img:last-child,
.work-gallery--portrait.work-gallery--ten img:last-child {
  grid-column: 2 / 3;
}

@media (max-width: 700px) {
  .work-gallery--portrait.work-gallery--four {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .work-gallery--portrait.work-gallery--seven img:last-child {
    grid-column: 1 / -1;
    width: calc(50% - 3px);
    justify-self: center;
  }

  .work-gallery--portrait.work-gallery--ten img:last-child {
    grid-column: auto;
    width: auto;
    justify-self: stretch;
  }
}


/* ==========================================================================
   v27 · KARALAMALAR / SCRIBBLES · long form editorial reader
   Lightweight list at rest, one lazily rendered article in the reader.
   ========================================================================== */
.action-stack { grid-template-rows: repeat(8, minmax(0, 1fr)); }

.scribbles-section {
  padding-top: clamp(110px, 13vw, 170px);
  scroll-margin-top: 22px;
}
.scribbles-head { text-align: center; }
.scribbles-manifesto {
  width: min(900px, 94%);
  margin: clamp(34px, 4vw, 54px) auto 0;
  font-size: clamp(34px, 5.7vw, 76px);
  line-height: .93;
  letter-spacing: -.055em;
  font-weight: 900;
  text-wrap: balance;
}
.scribbles-deck {
  width: min(790px, 92%);
  font-size: clamp(18px, 1.95vw, 23px);
  line-height: 1.5;
}
.scribbles-list {
  width: min(1040px, 100%);
  margin: clamp(64px, 8vw, 100px) auto 0;
  border-bottom: 1.25px solid var(--line);
}
.scribble-row {
  appearance: none;
  -webkit-appearance: none;
  width: 100%;
  display: grid;
  grid-template-columns: minmax(120px, .25fr) minmax(0, 1.55fr) minmax(72px, .2fr);
  gap: clamp(16px, 2.4vw, 30px);
  align-items: center;
  min-height: clamp(92px, 9.5vw, 124px);
  padding: clamp(18px, 2.2vw, 28px) clamp(8px, 1.2vw, 16px);
  border: 0;
  border-top: 1.25px solid var(--line);
  background: transparent;
  color: var(--ink);
  font-family: var(--font-main);
  text-align: start;
  cursor: pointer;
  transition: background-color .22s var(--ease), color .22s var(--ease);
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}
.scribble-row__date {
  font-size: 11px;
  line-height: 1.15;
  letter-spacing: .09em;
  font-weight: 800;
  color: var(--muted);
  transition: color .22s var(--ease);
}
.scribble-row__title {
  min-width: 0;
  font-size: clamp(28px, 4.15vw, 54px);
  line-height: .94;
  letter-spacing: -.052em;
  font-weight: 900;
  overflow-wrap: anywhere;
  text-wrap: balance;
}
.scribble-row__read {
  justify-self: end;
  font-size: 10px;
  line-height: 1;
  letter-spacing: .1em;
  font-weight: 850;
}
.scribble-row:focus-visible {
  outline: 3px solid var(--ink);
  outline-offset: 4px;
}
@media (hover:hover) and (pointer:fine) {
  .scribble-row:hover { background: var(--ink); color: var(--paper); }
  .scribble-row:hover .scribble-row__date { color: var(--paper); }
}

html.is-scribble-open,
body.is-scribble-open { overscroll-behavior: none; }
body.is-scribble-open .flower-particle { animation-play-state: paused !important; }

.scribble-lightbox {
  position: fixed;
  inset: 0;
  z-index: 12500;
  display: grid;
  grid-template-columns: 74px minmax(0, 1fr) 74px;
  gap: 16px;
  align-items: stretch;
  padding: 76px 18px 54px;
  background: rgba(250, 247, 237, .992);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity .16s var(--ease), visibility 0s linear .16s;
  contain: layout paint style;
  isolation: isolate;
  overscroll-behavior: contain;
}
.scribble-lightbox.is-open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition-delay: 0s;
}
.scribble-lightbox__topbar {
  position: absolute;
  top: max(14px, env(safe-area-inset-top));
  left: max(16px, env(safe-area-inset-left));
  right: max(16px, env(safe-area-inset-right));
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  z-index: 4;
}
.scribble-lightbox__meta {
  display: flex;
  align-items: baseline;
  gap: 12px;
  min-width: 0;
  font-size: 11px;
  line-height: 1;
  letter-spacing: .09em;
  font-weight: 850;
  color: var(--muted);
}
.scribble-lightbox__close,
.scribble-lightbox__nav {
  appearance: none;
  -webkit-appearance: none;
  border: 1.25px solid var(--line);
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font-main);
  font-size: 10px;
  line-height: 1;
  letter-spacing: .1em;
  font-weight: 850;
  cursor: pointer;
  touch-action: manipulation;
  transition: color .2s var(--ease), background-color .2s var(--ease), border-color .2s var(--ease);
}
.scribble-lightbox__close {
  min-width: 86px;
  height: 38px;
  padding: 0 16px;
  border-radius: 999px;
}
.scribble-lightbox__nav {
  width: 58px;
  height: 58px;
  padding: 0 5px;
  border-radius: 999px;
  align-self: center;
  justify-self: center;
  overflow: hidden;
  text-overflow: ellipsis;
}
.scribble-lightbox__close:focus-visible,
.scribble-lightbox__nav:focus-visible { outline: 3px solid var(--ink); outline-offset: 4px; }
@media (hover:hover) and (pointer:fine) {
  .scribble-lightbox__close:hover,
  .scribble-lightbox__nav:hover { background: var(--ink); color: var(--paper); }
}
.scribble-lightbox__viewport {
  grid-column: 2;
  min-width: 0;
  min-height: 0;
  width: min(1040px, 100%);
  height: calc(100vh - 130px);
  margin: 0 auto;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  scrollbar-gutter: stable;
  border-top: 1.25px solid var(--line);
  border-bottom: 1.25px solid var(--line);
  scroll-behavior: auto;
}
@supports (height: 100dvh) { .scribble-lightbox__viewport { height: calc(100dvh - 130px); } }
.scribble-reader {
  width: min(860px, calc(100% - 56px));
  margin: 0 auto;
  padding: clamp(58px, 7vw, 94px) 0 clamp(90px, 10vw, 130px);
  outline: 0;
  text-align: start;
}
.scribble-reader__date {
  margin: 0 0 clamp(24px, 3vw, 38px);
  color: var(--muted);
  font-size: 11px;
  line-height: 1;
  letter-spacing: .1em;
  font-weight: 850;
}
.scribble-reader__title {
  margin: 0;
  font-size: clamp(48px, 7.3vw, 96px);
  line-height: .86;
  letter-spacing: -.068em;
  font-weight: 900;
  overflow-wrap: anywhere;
  text-wrap: balance;
}
.scribble-reader__lead {
  margin: clamp(38px, 5vw, 64px) 0 0;
  font-size: clamp(24px, 3vw, 37px);
  line-height: 1.18;
  letter-spacing: -.035em;
  font-weight: 750;
  text-wrap: pretty;
}
.scribble-reader__body {
  margin-top: clamp(42px, 5.8vw, 72px);
  font-size: clamp(18px, 1.85vw, 22px);
  line-height: 1.62;
  letter-spacing: -.012em;
  font-weight: 500;
}
.scribble-reader__body p { margin: 0 0 1.45em; }
.scribble-reader__body p:last-child { margin-bottom: 0; }
html[dir="rtl"] .scribble-reader,
html[dir="rtl"] .scribble-row { text-align: start; }

@media (max-width:819px) {
  .action-stack { grid-template-rows: repeat(8, minmax(0, 1fr)); }
  .scribbles-section { padding-top: 96px; }
  .scribbles-manifesto { font-size: clamp(34px, 10.8vw, 54px); }
  .scribbles-deck { width: min(94%, 660px); font-size: clamp(18px, 5vw, 21px); line-height: 1.5; }
  .scribbles-list { margin-top: 58px; }
  .scribble-row {
    grid-template-columns: 84px minmax(0, 1fr);
    gap: 10px 14px;
    min-height: 92px;
    padding: 18px 4px;
  }
  .scribble-row__date { grid-column:1; grid-row:1; font-size:9px; }
  .scribble-row__title { grid-column:2; grid-row:1 / span 2; font-size:clamp(24px, 7.7vw, 36px); }
  .scribble-row__read { grid-column:1; grid-row:2; justify-self:start; font-size:9px; }
  .scribble-lightbox {
    grid-template-columns:1fr;
    padding: calc(max(58px, env(safe-area-inset-top) + 48px)) 10px calc(max(68px, env(safe-area-inset-bottom) + 56px));
  }
  .scribble-lightbox__topbar { top:max(10px, env(safe-area-inset-top)); left:max(11px, env(safe-area-inset-left)); right:max(11px, env(safe-area-inset-right)); }
  .scribble-lightbox__meta { font-size:9px; gap:7px; }
  .scribble-lightbox__close { min-width:72px; height:34px; padding:0 10px; font-size:9px; }
  .scribble-lightbox__viewport { grid-column:1; width:100%; height:calc(100vh - 126px); scrollbar-gutter:auto; }
  @supports (height:100dvh) { .scribble-lightbox__viewport { height:calc(100dvh - 126px); } }
  .scribble-reader { width:calc(100% - 26px); padding:42px 0 92px; }
  .scribble-reader__title { font-size:clamp(38px, 12vw, 60px); line-height:.9; letter-spacing:-.06em; }
  .scribble-reader__lead { margin-top:30px; font-size:clamp(22px, 6.5vw, 29px); line-height:1.2; }
  .scribble-reader__body { margin-top:36px; font-size:clamp(18px, 4.9vw, 21px); line-height:1.58; }
  .scribble-lightbox__nav { position:absolute; bottom:max(10px, env(safe-area-inset-bottom)); z-index:5; width:auto; min-width:72px; height:42px; padding:0 12px; border-radius:999px; font-size:9px; }
  .scribble-lightbox__nav--prev { left:max(12px, env(safe-area-inset-left)); }
  .scribble-lightbox__nav--next { right:max(12px, env(safe-area-inset-right)); }
}
@media (max-width:390px) {
  .scribble-row { grid-template-columns:70px minmax(0,1fr); }
  .scribble-row__title { font-size:clamp(22px, 7.1vw, 30px); }
  .scribble-reader__title { font-size:clamp(34px, 11vw, 49px); }
}

/* v27.1 · Scribble list summaries */
.scribble-row__copy {
  min-width: 0;
  display: grid;
  gap: 10px;
}
.scribble-row__lead {
  display: block;
  max-width: 760px;
  font-size: clamp(15px, 1.45vw, 18px);
  line-height: 1.42;
  letter-spacing: -.015em;
  font-weight: 500;
  color: var(--muted);
  text-wrap: pretty;
  transition: color .22s var(--ease);
}
@media (hover:hover) and (pointer:fine) {
  .scribble-row:hover .scribble-row__lead { color: var(--paper); }
}
@media (max-width: 720px) {
  .scribble-row {
    grid-template-columns: 1fr auto;
    gap: 12px 16px;
    padding-block: 24px;
  }
  .scribble-row__date {
    grid-column: 1 / -1;
  }
  .scribble-row__copy { gap: 8px; }
  .scribble-row__title {
    font-size: clamp(30px, 9.6vw, 44px);
    line-height: .93;
  }
  .scribble-row__lead {
    font-size: clamp(16px, 4.3vw, 18px);
    line-height: 1.42;
  }
  .scribble-row__read { align-self: end; }
}

/* v27.1 mobile structure override after adding summaries */
@media (max-width: 819px) {
  .scribble-row {
    grid-template-columns: 84px minmax(0, 1fr);
    gap: 10px 14px;
    padding: 22px 4px;
  }
  .scribble-row__date { grid-column: 1; grid-row: 1; }
  .scribble-row__copy { grid-column: 2; grid-row: 1 / span 2; }
  .scribble-row__title { grid-column: auto; grid-row: auto; }
  .scribble-row__lead { grid-column: auto; grid-row: auto; }
  .scribble-row__read { grid-column: 1; grid-row: 2; justify-self: start; align-self: end; }
}
@media (max-width: 560px) {
  .scribble-row {
    grid-template-columns: 1fr auto;
    gap: 12px 14px;
    padding-block: 25px;
  }
  .scribble-row__date { grid-column: 1 / -1; grid-row: 1; }
  .scribble-row__copy { grid-column: 1; grid-row: 2; }
  .scribble-row__read { grid-column: 2; grid-row: 2; justify-self: end; align-self: end; }
}

/* v29 · Scribble sharing -------------------------------------------------- */
.scribble-reader__share {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px 28px;
  margin-top: clamp(34px, 4.5vw, 54px);
  padding: 18px 0;
  border-top: 1.25px solid var(--line);
  border-bottom: 1.25px solid var(--line);
}
.scribble-reader__share-label {
  flex: 0 0 auto;
  color: var(--muted);
  font-size: 10px;
  line-height: 1;
  letter-spacing: .12em;
  font-weight: 850;
}
.scribble-reader__share-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
}
.scribble-share-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 36px;
  padding: 0 13px;
  border: 1.25px solid var(--line);
  border-radius: 999px;
  color: var(--ink);
  background: transparent;
  text-decoration: none;
  font-size: 9px;
  line-height: 1;
  letter-spacing: .08em;
  font-weight: 850;
  transition: background .2s var(--ease), color .2s var(--ease), border-color .2s var(--ease), transform .2s var(--ease);
}
.scribble-share-link:focus-visible { outline: 3px solid var(--ink); outline-offset: 3px; }
@media (hover:hover) and (pointer:fine) {
  .scribble-share-link:hover { background: var(--ink); color: var(--paper); border-color: var(--ink); transform: translateY(-1px); }
}
html[dir="rtl"] .scribble-reader__share-links { justify-content: flex-start; }
@media (max-width:560px) {
  .scribble-reader__share { align-items: flex-start; flex-direction: column; gap: 13px; margin-top: 30px; padding: 16px 0; }
  .scribble-reader__share-links { width: 100%; justify-content: flex-start; gap: 7px; }
  .scribble-share-link { min-height: 35px; padding-inline: 12px; }
}


/* ========================================================================== 
   v31 · compact mobile language selector
   Desktop keeps the full language grid. Mobile opens languages on demand.
   ========================================================================== */
.mobile-locale {
  display: none;
}

@media (max-width: 819px) {
  .locale-switcher--top,
  .locale-switcher--footer {
    display: none;
  }

  .mobile-locale {
    position: relative;
    z-index: 80;
    display: block;
    width: 100%;
    margin: 0 0 14px;
    direction: ltr;
  }

  .mobile-locale-trigger {
    width: 100%;
    min-height: 52px;
    display: grid;
    grid-template-columns: 38px minmax(0, 1fr) 18px;
    align-items: center;
    gap: 12px;
    padding: 6px 14px 6px 7px;
    border: 1.25px solid var(--line);
    border-radius: 999px;
    background: rgba(250, 247, 237, .96);
    color: var(--ink);
    box-shadow: 0 8px 30px rgba(5, 5, 5, .04);
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
    transition: background-color .24s var(--ease), color .24s var(--ease), border-color .24s var(--ease);
  }

  .mobile-locale-trigger:focus-visible {
    outline: 2px solid var(--ink);
    outline-offset: 3px;
  }

  .mobile-locale-code {
    width: 38px;
    height: 38px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: var(--ink);
    color: var(--paper);
    font-size: 10px;
    line-height: 1;
    letter-spacing: .08em;
    font-weight: 900;
  }

  .mobile-locale-label {
    min-width: 0;
    text-align: left;
    font-size: 10px;
    line-height: 1.1;
    letter-spacing: .105em;
    font-weight: 850;
    text-transform: uppercase;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    unicode-bidi: plaintext;
  }

  .mobile-locale-arrow {
    position: relative;
    width: 16px;
    height: 16px;
    justify-self: end;
  }

  .mobile-locale-arrow::before,
  .mobile-locale-arrow::after {
    content: "";
    position: absolute;
    top: 7px;
    width: 8px;
    height: 1.25px;
    background: currentColor;
    transition: transform .28s var(--ease);
  }

  .mobile-locale-arrow::before {
    left: 1px;
    transform: rotate(45deg);
  }

  .mobile-locale-arrow::after {
    right: 1px;
    transform: rotate(-45deg);
  }

  .mobile-locale.is-open .mobile-locale-arrow::before {
    transform: rotate(-45deg);
  }

  .mobile-locale.is-open .mobile-locale-arrow::after {
    transform: rotate(45deg);
  }

  .mobile-locale-panel {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    pointer-events: none;
    transform: translateY(-8px);
    transition: max-height .38s var(--ease), opacity .22s ease, transform .32s var(--ease);
  }

  .mobile-locale.is-open .mobile-locale-panel {
    max-height: 390px;
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
  }

  .mobile-locale-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 7px;
    padding: 9px 0 2px;
    direction: ltr;
  }

  .mobile-locale-grid .locale-button {
    min-height: 43px;
    padding: 8px 7px;
    border-radius: 15px;
    font-size: 10px;
    line-height: 1.05;
  }

  .mobile-locale-grid .locale-button.is-active,
  .mobile-locale-grid .locale-button:disabled {
    box-shadow: inset 0 0 0 1px var(--ink);
  }
}

@media (max-width: 380px) {
  .mobile-locale-trigger {
    grid-template-columns: 36px minmax(0, 1fr) 16px;
    gap: 10px;
    min-height: 50px;
  }
  .mobile-locale-code {
    width: 36px;
    height: 36px;
  }
  .mobile-locale-label {
    font-size: 9px;
    letter-spacing: .085em;
  }
}
