/* Self-hosted fonts (SIL Open Font License). Files live in /assets/fonts/. */
@font-face { font-family: "Unbounded"; font-style: normal; font-weight: 200 900; font-display: swap; src: url(/assets/fonts/unbounded-latin-wght-normal.woff2) format("woff2"); }
@font-face { font-family: "Hanken Grotesk"; font-style: normal; font-weight: 100 900; font-display: swap; src: url(/assets/fonts/hanken-grotesk-latin-wght-normal.woff2) format("woff2"); }
/* Emberline Essentials: Atlas. Bright, white-based, kinetic. Display: Unbounded. Body: Hanken Grotesk.
   Layout is locked; colors come from the palette preset (or the pastor's custom colors) as CSS variables. */
:root {
  --display: "Unbounded", "Arial Black", system-ui, sans-serif;
  --body: "Hanken Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;
  --gut: clamp(16px, 4vw, 56px);
  --maxw: 1344px;
  --hh: 72px;
  --ease: cubic-bezier(.2, .8, .2, 1);
  --line: 2px;
}
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: calc(var(--hh) + 24px); }
body {
  margin: 0; background: var(--paper, #fff); color: var(--ink); font: 400 clamp(1.0625rem, 0.4vw + 1rem, 1.1875rem)/1.6 var(--body);
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; overflow-x: clip;
}
img, svg, video { display: block; max-width: 100%; }
img { height: auto; }
a { color: inherit; text-decoration-thickness: .12em; text-underline-offset: .18em; }
p { margin: 0 0 1em; }
h1, h2, h3, h4, ul, ol, dl, dd, figure, blockquote { margin: 0; padding: 0; }
ul, ol { list-style: none; }
button { font: inherit; color: inherit; cursor: pointer; background: none; border: 0; padding: 0; }
:focus-visible { outline: 3px solid var(--ink); outline-offset: 3px; border-radius: 4px; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip { position: fixed; left: 12px; top: -80px; z-index: 300; background: var(--ink); color: var(--paper); padding: .8em 1.2em; border-radius: 10px; font-weight: 700; }
.skip:focus { top: 12px; }
.hp { position: absolute; left: -9999px; height: 0; overflow: hidden; }
.wrap { width: min(var(--maxw), 100% - var(--gut) * 2); margin-inline: auto; }
main:focus { outline: none; }

/* Type ----------------------------------------------------------------- */
.h1, .h2, .h3, .h4 { font-family: var(--display); font-weight: 800; letter-spacing: -.035em; line-height: 1.02; text-wrap: balance; }
.h1 { font-size: clamp(2.35rem, 6.6vw, 6.2rem); }
.h2 { font-size: clamp(2rem, 4.8vw, 4.4rem); }
.h3 { font-size: clamp(1.5rem, 2.6vw, 2.4rem); letter-spacing: -.03em; line-height: 1.08; }
.h4 { font-size: 1.05rem; letter-spacing: -.01em; font-weight: 700; text-transform: uppercase; line-height: 1.2; margin: 0 0 18px; }
.lede { font-size: clamp(1.15rem, 1.1vw + .9rem, 1.45rem); line-height: 1.5; max-width: 40em; color: var(--ink); margin-top: 22px; }
.eyebrow { font: 700 .9rem/1 var(--body); letter-spacing: .14em; text-transform: uppercase; display: flex; align-items: center; gap: 12px; margin: 0 0 20px; }
.eyebrow::before { content: ""; width: 14px; height: 14px; background: var(--accent); border: var(--line) solid var(--ink); border-radius: 50%; flex: none; }
/* *word* in any headline: a marker highlight sweeps in behind it. Text stays ink on the accent. */
em { font-style: normal; background: linear-gradient(var(--accent), var(--accent)) no-repeat 0 90% / 100% .48em; padding: 0 .08em; margin: 0 -.08em; -webkit-box-decoration-break: clone; box-decoration-break: clone; color: var(--accent-ink); }
.js :is(.h1, .h2, .h3, .closing__h) em { background-size: 0% .48em; transition: background-size 1s var(--ease) .35s; }
.js :is(.h1, .h2, .h3, .closing__h).in em, .js .rise em { background-size: 100% .48em; }
.sec-head { margin-bottom: clamp(36px, 5vw, 72px); max-width: 60rem; }

/* Buttons --------------------------------------------------------------- */
.btn {
  --mx: 0px; --my: 0px; display: inline-flex; align-items: center; justify-content: center; gap: .7em; text-decoration: none; text-align: center;
  background: var(--accent); color: var(--accent-ink); border: var(--line) solid var(--ink); border-radius: 999px; padding: 1em 1.7em;
  font: 700 .84rem/1.1 var(--display); letter-spacing: .02em; text-transform: uppercase; cursor: pointer;
  transform: translate(var(--mx), var(--my)); transition: box-shadow .25s var(--ease), translate .25s var(--ease), background .2s, color .2s;
}
.btn:hover { translate: -2px -2px; box-shadow: 4px 4px 0 var(--ink); }
.btn:active { translate: 0 0; box-shadow: 0 0 0 var(--ink); }
.btn--ink { background: var(--ink); color: var(--paper); }
.btn--ink:hover { box-shadow: 4px 4px 0 var(--accent); }
.btn--ghost { background: transparent; color: var(--ink); }
.btn--sm { padding: .78em 1.25em; font-size: .75rem; }
.btn--xl { padding: 1.25em 2.1em; font-size: .95rem; }
.more { display: inline-flex; gap: .6em; align-items: center; font: 700 .9rem var(--display); text-transform: uppercase; letter-spacing: .02em; text-decoration: none; border-bottom: var(--line) solid var(--ink); padding-bottom: 6px; margin-top: 28px; }
.more:hover { background: var(--accent); }

/* Reveal helpers --------------------------------------------------------- */
.js .reveal { opacity: 0; translate: 0 34px; transition: opacity .9s var(--ease), translate 1s var(--ease); }
.js .reveal.in { opacity: 1; translate: 0 0; }
.js .rise { opacity: 0; translate: 0 26px; animation: rise 1s var(--ease) calc(var(--i, 0) * 90ms + .15s) forwards; }
@keyframes rise { to { opacity: 1; translate: 0 0; } }
.reveal-img { overflow: hidden; }
.js .reveal-img { clip-path: inset(100% 0 0 0); transition: clip-path 1.2s var(--ease); }
.js .reveal-img img { scale: 1.18; transition: scale 1.6s var(--ease); }
.js .reveal-img.in { clip-path: inset(0 0 0 0); }
.js .reveal-img.in img { scale: 1; }

/* Header ----------------------------------------------------------------- */
.site-header { position: fixed; inset: 0 0 auto 0; z-index: 100; height: var(--hh); display: flex; align-items: center; justify-content: space-between; padding-inline: var(--gut); transition: transform .5s var(--ease), background .3s, box-shadow .3s; }
.site-header.solid, .inner .site-header { background: color-mix(in srgb, var(--paper) 94%, transparent); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); box-shadow: 0 var(--line) 0 var(--ink); }
.site-header.hide { transform: translateY(-110%); }
.brand { display: inline-flex; align-items: center; gap: 12px; text-decoration: none; position: relative; z-index: 120; }
.brand__mark { width: 34px; height: 34px; transition: rotate .8s var(--ease); }
.brand:hover .brand__mark { rotate: 180deg; }
.brand__name { font: 800 1rem/1 var(--display); letter-spacing: -.02em; text-transform: uppercase; }
.site-header__right { display: flex; align-items: center; gap: 12px; position: relative; z-index: 120; }
.menu-toggle { display: inline-flex; align-items: center; gap: 12px; padding: .8em 1.1em; border: var(--line) solid var(--ink); border-radius: 999px; font: 700 .78rem var(--display); text-transform: uppercase; letter-spacing: .02em; background: var(--paper); }
.menu-toggle:hover { background: var(--accent); }
.menu-toggle__bars { display: grid; gap: 5px; width: 20px; }
.menu-toggle__bars i { display: block; height: 2px; background: var(--ink); transition: transform .45s var(--ease); transform-origin: center; }
.menu-open .menu-toggle__bars i:first-child { transform: translateY(3.5px) rotate(45deg); }
.menu-open .menu-toggle__bars i:last-child { transform: translateY(-3.5px) rotate(-45deg); }
.menu-open .menu-toggle { background: var(--paper); }
.menu-open .site-header { box-shadow: none; background: transparent; backdrop-filter: none; }
.menu-open .hdr-book { visibility: hidden; }

/* Takeover menu: a circle of accent color grows from the button */
.menu { position: fixed; inset: 0; z-index: 90; background: var(--accent); color: var(--accent-ink); clip-path: circle(0 at calc(100% - 64px) 36px); transition: clip-path .9s var(--ease); overflow-y: auto; }
.menu.open { clip-path: circle(160% at calc(100% - 64px) 36px); }
.menu[hidden] { display: none; }
.menu__map { position: absolute; inset: auto 0 0 auto; width: min(1100px, 130vw); aspect-ratio: 1200 / 588; background: var(--ink); opacity: .12; -webkit-mask: url(/assets/img/world-dots.svg) center / 100% 100% no-repeat; mask: url(/assets/img/world-dots.svg) center / 100% 100% no-repeat; pointer-events: none; }
.menu__in { position: relative; min-height: 100%; display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr); gap: clamp(24px, 5vw, 80px); padding: calc(var(--hh) + 36px) var(--gut) 56px; width: min(1500px, 100%); margin-inline: auto; align-items: end; }
.menu__nav ol { display: grid; }
.menu__nav li { overflow: hidden; border-bottom: var(--line) solid color-mix(in srgb, var(--ink) 22%, transparent); }
.menu__nav a { display: flex; align-items: baseline; gap: clamp(14px, 2vw, 30px); padding: clamp(6px, 1.1vh, 14px) 0; text-decoration: none; translate: 0 105%; transition: translate .9s var(--ease) calc(var(--k, 0) * 55ms + .12s), padding-left .4s var(--ease); }
.menu.open .menu__nav a { translate: 0 0; }
.menu__nav .n { font: 700 .95rem var(--display); min-width: 2.2em; }
.menu__nav .t { font: 800 clamp(2rem, 6.2vh + 1vw, 5.6rem)/1 var(--display); text-transform: uppercase; letter-spacing: -.035em; }
.menu__nav a:hover, .menu__nav a:focus-visible { padding-left: 24px; }
.menu__nav a[aria-current="page"] .t { -webkit-text-stroke: 2px var(--ink); color: transparent; }
.menu__book .t::after { content: " \2192"; }
.menu__side { display: grid; gap: 28px; align-content: end; }
.menu__next { display: grid; gap: 4px; background: var(--paper); color: var(--ink); border: var(--line) solid var(--ink); border-radius: 22px; padding: 24px; text-decoration: none; box-shadow: 6px 6px 0 var(--ink); opacity: 0; translate: 0 24px; transition: opacity .6s .35s, translate .9s var(--ease) .35s; }
.menu.open .menu__next, .menu.open .menu__contact { opacity: 1; translate: 0 0; }
.menu__next .k { font: 700 .85rem var(--body); letter-spacing: .14em; text-transform: uppercase; }
.menu__next .c { font: 800 clamp(1.8rem, 3vw, 2.8rem)/1 var(--display); letter-spacing: -.03em; }
.menu__next .d { font: 700 1rem var(--body); }
.menu__next .e { color: var(--muted); }
.menu__contact { display: grid; gap: 8px; font-weight: 700; opacity: 0; translate: 0 24px; transition: opacity .6s .5s, translate .9s var(--ease) .5s; }
.menu__contact ul { display: flex; flex-wrap: wrap; gap: 6px 18px; margin-top: 8px; }
.menu__contact a { text-decoration-thickness: 2px; }
.menu-open .booktab { opacity: 0; pointer-events: none; }
.menu-open .pal { z-index: 80; }

/* Book me tab */
.booktab { position: fixed; right: 0; top: 52%; z-index: 70; translate: 0 -50%; background: var(--ink); color: var(--accent); text-decoration: none; writing-mode: vertical-rl; rotate: 180deg; padding: 22px 13px; border-radius: 0 14px 14px 0; font: 700 .8rem var(--display); letter-spacing: .18em; text-transform: uppercase; transition: padding .3s var(--ease), background .2s, color .2s, opacity .3s; border: var(--line) solid var(--ink); border-left: 0; }
.booktab:hover, .booktab:focus-visible { background: var(--accent); color: var(--accent-ink); padding-block: 30px; outline-offset: 6px; }

/* Hero ------------------------------------------------------------------- */
.hero { padding-top: calc(var(--hh) + clamp(8px, 2vh, 28px)); padding-bottom: clamp(28px, 5vh, 64px); min-height: 100svh; display: flex; position: relative; }
.hero__stage { width: min(1500px, 100% - var(--gut) * 2); display: flex; flex-direction: column; justify-content: center; gap: clamp(14px, 2.6vh, 34px); position: relative; }
.hero__eyebrow { font: 700 .9rem/1 var(--body); letter-spacing: .16em; text-transform: uppercase; margin: 0; display: flex; align-items: center; gap: 12px; }
.hero__eyebrow::before { content: ""; width: 14px; height: 14px; background: var(--accent); border: var(--line) solid var(--ink); border-radius: 50%; }
picture { display: contents; }
.ko { position: relative; isolation: isolate; background: #fff; }
.ko__media { position: absolute; inset: 0; overflow: hidden; z-index: 0; background: var(--ink); }
.ko__pan { position: absolute; inset: -8%; animation: pan 28s ease-in-out infinite alternate; will-change: transform; }
.ko__img, .ko__vid { width: 100%; height: 100%; object-fit: cover; filter: contrast(1.14) saturate(1.45) brightness(1.02); }
/* Inner contrast layer: a soft ink wash (strength set by hero.inkLayer in the editor) keeps letters crisp against the white page even when the photo is light. A palette tint on top ties the photo to the brand color. */
.ko__media::before { content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none; mix-blend-mode: multiply; opacity: var(--ink-layer, .16); background: linear-gradient(180deg, #5b6b8a 0%, var(--ink) 100%); }
.ko__media::after { content: ""; position: absolute; inset: 0; z-index: 3; pointer-events: none; mix-blend-mode: soft-light; opacity: .4; background: linear-gradient(120deg, var(--accent) 0%, transparent 62%); }
.ko__vid { position: absolute; inset: 0; }
@keyframes pan { from { transform: scale(1.04) translate3d(-2.5%, 1%, 0); } to { transform: scale(1.2) translate3d(2.5%, -2%, 0); } }
.ko__plate { position: relative; z-index: 1; background: #fff; mix-blend-mode: screen; padding: .04em 0 .03em; }
.ko__name { color: #000; font: 900 var(--fs, 15vw)/.86 var(--display); letter-spacing: 0; text-transform: uppercase; display: flex; flex-direction: column; align-items: flex-start; }
.ln { display: block; width: max-content; white-space: nowrap; translate: var(--sx, 0px) 0; will-change: translate; }
.ln + .ln { margin-top: .01em; }
.ch { display: inline-block; overflow: hidden; vertical-align: top; padding: .045em .11em .02em; margin: 0 -.11em; }
.ch > span { display: inline-block; animation: up 1.15s var(--ease) calc(.25s + var(--i) * 70ms) both; }
@keyframes up { from { transform: translateY(108%); } to { transform: none; } }
.sp { display: inline-block; width: .34em; }
.ko { --sunw: clamp(150px, 29vw, 440px); --stk: clamp(112px, 15.5vw, 224px); }
.ko__sun { position: absolute; z-index: 2; right: 4%; top: var(--sunt, -20%); width: var(--sunw); aspect-ratio: 1; border-radius: 50%; background: var(--accent); mix-blend-mode: multiply; pointer-events: none; translate: 0 var(--sy, 0px); animation: sunin 1.4s var(--ease) .3s both; }
@keyframes sunin { from { opacity: 0; scale: .6; } to { opacity: 1; scale: 1; } }
@supports not (mix-blend-mode: screen) {
  .ko__media, .ko__sun { display: none; }
  .ko__plate { mix-blend-mode: normal; }
  .ko__name { color: var(--ink); }
}
.sticker { position: absolute; z-index: 4; right: calc(4% + (var(--sunw) - var(--stk)) / 2); top: calc(var(--sunt, -20%) + (var(--sunw) - var(--stk)) / 2); translate: 0 var(--sy, 0px); width: var(--stk); aspect-ratio: 1; display: grid; place-items: center; text-decoration: none; border-radius: 50%; background: var(--paper); border: var(--line) solid var(--ink); box-shadow: 5px 5px 0 var(--ink); --mx: 0px; --my: 0px; transform: translate(var(--mx), var(--my)); transition: box-shadow .25s; }
.sticker:hover { box-shadow: 8px 8px 0 var(--accent-text); }
.sticker__ring { position: absolute; inset: 5%; width: 90%; height: 90%; animation: spin 22s linear infinite; }
.sticker__ring text { font: 700 15.5px var(--display); fill: var(--ink); letter-spacing: .02em; }
.sticker__core { width: 38%; aspect-ratio: 1; border-radius: 50%; background: var(--accent); color: var(--accent-ink); display: grid; place-items: center; border: var(--line) solid var(--ink); }
.sticker__core svg { width: 56%; rotate: 8deg; }
@keyframes spin { to { rotate: 360deg; } }
.hero__window { display: none; }
.hero__foot { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; gap: clamp(20px, 4vw, 64px); align-items: start; margin-top: clamp(14px, 2vh, 28px); }
.hero__kicker { font: 700 clamp(1rem, 1.35vw, 1.3rem)/1.3 var(--display); letter-spacing: -.02em; margin: 0; }
.hero__blurb { margin: 0; max-width: 34em; font-size: clamp(1.05rem, .9vw + .8rem, 1.25rem); }
.hero__cta { display: flex; flex-wrap: wrap; gap: 12px; }

/* Statement -------------------------------------------------------------- */
.statement { padding: clamp(72px, 13vh, 150px) 0 clamp(72px, 12vh, 140px); }
.statement__text { font: 600 clamp(1.7rem, 4.3vw, 4rem)/1.28 var(--display); letter-spacing: -.035em; max-width: 24em; text-wrap: pretty; margin: 0; }
.statement__text em { background-size: 100% .5em; }
.js .statement__text em { background-size: 0% .5em; }
.js .statement__text.in em { background-size: 100% .5em; }
.js .statement__text em:nth-of-type(2) { transition-delay: .75s; }
.js .statement__text em:nth-of-type(3) { transition-delay: 1.15s; }
.js .statement__text em:nth-of-type(4) { transition-delay: 1.55s; }

/* The Road ---------------------------------------------------------------- */
.road { padding: clamp(80px, 12vh, 140px) 0 clamp(80px, 12vh, 140px); }
.road__grid { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); gap: clamp(28px, 4vw, 72px); align-items: start; }
.road__mapcol { position: sticky; top: calc(var(--hh) + 20px); z-index: 4; }
.mapcard { position: relative; background: var(--sky); border: var(--line) solid var(--ink); border-radius: 28px; padding: clamp(14px, 2vw, 26px); box-shadow: 8px 8px 0 var(--ink); }
.hud { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 18px; margin-bottom: clamp(8px, 1.4vw, 18px); }
.hud__k { font: 700 .85rem var(--body); letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.hud__v { font: 800 clamp(1.05rem, 1.6vw, 1.5rem) var(--display); letter-spacing: -.03em; }
.hud__m { margin-left: auto; font: 600 .95rem var(--body); font-variant-numeric: tabular-nums; }
.hud__m b { font: 800 1.05rem var(--display); }
.map { position: relative; aspect-ratio: 1200 / 588; }
.map__land { position: absolute; inset: 0; background: var(--ink); opacity: .42; -webkit-mask: url(/assets/img/world-dots.svg) center / 100% 100% no-repeat; mask: url(/assets/img/world-dots.svg) center / 100% 100% no-repeat; }
.map__svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.arc { fill: none; stroke-linecap: round; stroke: var(--ink); }
.arc--ghost { stroke-opacity: .32; stroke-width: 2.4; stroke-dasharray: 1 9; }
.arc--live { stroke-width: 3.8; transition: stroke-width .25s, opacity .25s; }
.arc--halo { stroke: #fff; stroke-width: 9; stroke-opacity: .92; }
.arc--later { stroke-width: 1.6; stroke-opacity: .45; }
.js .arc--live, .js .arc--halo { stroke-dasharray: 1 2; stroke-dashoffset: 1; }
.has-hot .arc--live:not(.is-hot) { opacity: .28; }
.arc--live.is-hot { stroke-width: 6; }
.pin { position: absolute; z-index: 3; width: 24px; height: 24px; margin: -12px 0 0 -12px; display: block; text-decoration: none; outline-offset: 6px; }
.js .pin { opacity: 0; scale: .2; transition: opacity .3s, scale .55s cubic-bezier(.3, 1.8, .4, 1); }
.js .pin.on, .js .pin--home { opacity: 1; scale: 1; }
.pin__dot { position: absolute; inset: 0; border-radius: 50%; background: var(--accent); border: 3px solid var(--ink); transition: scale .3s var(--ease), box-shadow .3s; }
.pin--home .pin__dot { background: var(--ink); border-color: var(--paper); box-shadow: 0 0 0 3px var(--ink); }
.pin.on .pin__dot::after, .pin--home .pin__dot::after { content: ""; position: absolute; inset: -9px; border-radius: 50%; border: 2px solid var(--ink); opacity: 0; animation: ping 2.4s ease-out infinite; }
.pin:not(.on):not(.pin--home) .pin__dot::after { display: none; }
@keyframes ping { 0% { scale: .5; opacity: .6; } 100% { scale: 1.6; opacity: 0; } }
.pin__n { position: absolute; inset: 0; display: grid; place-items: center; font: 800 .68rem/1 var(--display); color: var(--accent-ink); letter-spacing: -.02em; pointer-events: none; }
.pin--later { z-index: 2; width: 16px; height: 16px; margin: -8px 0 0 -8px; }
.pin--later .pin__dot { background: var(--paper); border: 2.5px solid color-mix(in srgb, var(--ink) 55%, transparent); }
.stop--later .stop__date { border-color: color-mix(in srgb, var(--ink) 40%, transparent); }
.stop--later .stop__m { background: color-mix(in srgb, var(--ink) 55%, var(--paper)); }
.pin.is-active { z-index: 6; }
.pin.is-active .pin__dot { scale: 1.45; box-shadow: 0 0 0 5px color-mix(in srgb, var(--accent) 40%, transparent); }
.pin__tip { position: absolute; left: 50%; bottom: calc(100% + 12px); translate: -50% 6px; background: var(--ink); color: var(--paper); border-radius: 10px; padding: 8px 12px; display: grid; gap: 1px; white-space: nowrap; opacity: 0; pointer-events: none; transition: opacity .2s, translate .3s var(--ease); font-size: .95rem; line-height: 1.25; }
.pin__tip b { font: 800 .95rem var(--display); letter-spacing: -.02em; }
.pin__tip i { font-style: normal; font-weight: 600; color: var(--accent); }
.pin:hover .pin__tip, .pin:focus-visible .pin__tip, .pin.is-active .pin__tip, .pin--home:hover .pin__tip { opacity: 1; translate: -50% 0; }
.pin--l .pin__tip { left: auto; right: -6px; translate: 0 6px; }
.pin--l:hover .pin__tip, .pin--l:focus-visible .pin__tip, .pin--l.is-active .pin__tip { translate: 0 0; }
.pin--b .pin__tip { bottom: auto; top: calc(100% + 12px); }
.plane { position: absolute; left: 0; top: 0; z-index: 5; width: 30px; height: 30px; margin: -15px 0 0 -15px; border-radius: 50%; background: var(--ink); color: var(--accent); display: grid; place-items: center; opacity: 0; transition: opacity .3s; pointer-events: none; will-change: transform; }
.plane svg { width: 15px; }
.plane.on { opacity: 1; }
.stops { border-top: var(--line) solid var(--ink); }
.stop { display: grid; grid-template-columns: 76px minmax(0, 1fr); gap: 20px; padding: 26px 14px; margin-inline: -14px; border-bottom: var(--line) solid var(--ink); position: relative; transition: background .3s; scroll-margin-top: 140px; }
.stop::before { content: ""; position: absolute; inset: 0; background: var(--accent); transform-origin: left; transform: scaleX(0); transition: transform .5s var(--ease); z-index: 0; }
.stop > * { position: relative; z-index: 1; }
.stop.is-active::before { transform: scaleX(1); }
.stop__date { width: 76px; border: var(--line) solid var(--ink); border-radius: 14px; overflow: hidden; background: var(--paper); text-align: center; align-self: start; transition: background .4s; }
.stop__m { display: block; background: var(--ink); color: var(--paper); font: 700 .8rem/1 var(--display); letter-spacing: .06em; text-transform: uppercase; padding: 8px 0 7px; }
.stop__d { display: block; font: 800 2rem/1 var(--display); letter-spacing: -.04em; padding: 11px 0 12px; }
.stop.is-reached .stop__date { background: var(--accent); color: var(--accent-ink); }
.stop__city { font: 800 clamp(1.35rem, 2.1vw, 1.9rem)/1.1 var(--display); letter-spacing: -.035em; display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 12px; }
.stop__city span { font: 600 .95rem var(--body); letter-spacing: 0; color: var(--muted); }
.stop.is-active .stop__city span, .stop.is-active .stop__host { color: var(--ink); }
.stop__event { font-weight: 700; margin: 8px 0 2px; }
.stop__host { color: var(--muted); font-size: 1rem; margin: 0; }
.stop__sum { margin: 10px 0 0; max-width: 34em; }
.stop__acts { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 18px; margin-top: 14px; }
.badge { font: 700 .78rem/1 var(--body); letter-spacing: .06em; text-transform: uppercase; border: var(--line) solid var(--ink); border-radius: 999px; padding: .5em .9em; background: var(--paper); }
.badge--almost-full { background: var(--accent); color: var(--accent-ink); }
.badge--invitation-only { background: var(--ink); color: var(--paper); }
.badge--tentative { border-style: dashed; }
.stop__link, .stop__flyer { font: 700 .9rem var(--display); text-transform: uppercase; letter-spacing: .01em; text-decoration: none; border-bottom: var(--line) solid var(--ink); }
.stop__link:hover, .stop__flyer:hover { background: var(--accent); }
.road__empty { border: var(--line) solid var(--ink); border-radius: 24px; padding: clamp(24px, 3vw, 40px); background: var(--paper); box-shadow: 8px 8px 0 var(--accent); display: grid; gap: 12px; justify-items: start; }
.road__empty-k { font: 700 .9rem var(--body); letter-spacing: .14em; text-transform: uppercase; background: var(--accent); color: var(--accent-ink); padding: .5em .9em; border-radius: 999px; margin: 0; }
.road--empty .plane { opacity: 1; animation: orbit 7s linear infinite; }
@keyframes orbit { from { transform: rotate(0deg) translateX(44px) rotate(90deg); } to { transform: rotate(360deg) translateX(44px) rotate(90deg); } }
.road-fail .pin { opacity: 1; scale: 1; }
.road-fail .arc--live, .road-fail .arc--halo { stroke-dasharray: none; stroke-dashoffset: 0; }
.road--empty .map__land { opacity: .3; }

/* Assignments ------------------------------------------------------------ */
.assign { padding: clamp(60px, 10vh, 120px) 0 clamp(60px, 10vh, 120px); }
.arows { border-top: var(--line) solid var(--ink); }
.arow { position: relative; border-bottom: var(--line) solid var(--ink); overflow: hidden; }
.arow::before { content: ""; position: absolute; inset: 0; background: var(--accent); transform: scaleY(0); transform-origin: 50% 100%; transition: transform .6s var(--ease); }
.arow.is-open::before { transform: scaleY(1); }
@media (hover: hover) { .arow:hover::before { transform: scaleY(1); } }
.arow__h { position: relative; }
.arow__btn { display: block; width: 100%; text-align: left; padding: clamp(14px, 2.4vw, 28px) 0; position: relative; }
.arow__line { display: grid; grid-template-columns: clamp(2.4rem, 5vw, 5rem) minmax(0, 1fr) auto 3rem; align-items: center; gap: 0 clamp(8px, 2vw, 28px); }
.arow__n { font: 700 clamp(.85rem, 1.1vw, 1.1rem) var(--display); }
.arow__name { font: 800 clamp(1.9rem, 6.4vw, 6.4rem)/1.02 var(--display); text-transform: uppercase; letter-spacing: -.045em; overflow-wrap: anywhere; }
.arow__tag { font: 700 .88rem var(--body); letter-spacing: .12em; text-transform: uppercase; text-align: right; max-width: 11em; }
.arow__plus { width: 2.6rem; aspect-ratio: 1; border-radius: 50%; border: var(--line) solid var(--ink); background: var(--paper); position: relative; justify-self: end; transition: rotate .5s var(--ease), background .3s; }
.arow__plus::before, .arow__plus::after { content: ""; position: absolute; left: 50%; top: 50%; width: 46%; height: 2px; background: var(--ink); translate: -50% -50%; }
.arow__plus::after { rotate: 90deg; }
.arow.is-open .arow__plus { rotate: 135deg; }
.arow__panel { position: relative; display: grid; grid-template-rows: 0fr; transition: grid-template-rows .75s var(--ease); }
.arow.is-open .arow__panel { grid-template-rows: 1fr; }
html:not(.js) .arow__panel { grid-template-rows: 1fr; }
.arow__clip { overflow: hidden; min-height: 0; }
.js .arow:not(.is-open) .arow__clip { visibility: hidden; transition: visibility 0s .75s; }
.arow__inner { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: clamp(20px, 4vw, 64px); align-items: center; padding-block: 8px clamp(28px, 4vw, 52px); }
.arow__fig { border: var(--line) solid var(--ink); border-radius: 20px; overflow: hidden; aspect-ratio: 16 / 10; background: var(--ink); box-shadow: 8px 8px 0 var(--ink); }
.arow__fig img { width: 100%; height: 100%; object-fit: cover; transition: clip-path 1s var(--ease), scale 1.4s var(--ease); }
.js .arow:not(.is-open) .arow__fig img { clip-path: inset(0 0 100% 0); scale: 1.2; }
.arow__copy p { font-size: clamp(1.1rem, 1.2vw + .8rem, 1.45rem); line-height: 1.5; max-width: 26em; margin-bottom: 26px; }

/* Books as objects --------------------------------------------------------- */
.shelf { padding: clamp(70px, 11vh, 130px) 0; background: linear-gradient(var(--sky), var(--sky)) 0 0 / 100% 100% no-repeat; }
.shelf__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(24px, 3vw, 48px); }
.shelf__item { display: grid; align-content: start; justify-items: center; text-align: center; }
.book { --w: clamp(200px, 18.5vw, 276px); --h: calc(var(--w) * 1.5); --d: 36px; width: 100%; display: grid; place-items: center; padding: 34px 0 30px; position: relative; z-index: 1; }
.book.is-open { z-index: 8; }
.book__scene { position: relative; width: var(--w); height: var(--h); perspective: 1600px; }
.book__tilt { position: absolute; inset: 0; transform-style: preserve-3d; transform: rotateX(var(--rx, 0deg)) rotateY(var(--ry, -26deg)); }
.book__obj { position: absolute; inset: 0; transform-style: preserve-3d; transition: transform 1s var(--ease); }
.book.is-open .book__obj { transform: translateX(calc(var(--w) * .5)); }
.book__back, .book__spine, .book__edge, .book__top, .book__page, .book__pivot, .book__front, .book__inside { position: absolute; }
.book__back { inset: 0; background: color-mix(in srgb, var(--bc, var(--accent)) 60%, #000); transform: translateZ(calc(var(--d) * -.5)); border-radius: 3px 10px 10px 3px; box-shadow: 18px 26px 40px -10px rgba(11, 19, 32, .45); }
.book__spine { top: 0; left: 0; width: var(--d); height: 100%; background: linear-gradient(90deg, color-mix(in srgb, var(--bc, var(--accent)) 75%, #000), var(--bc, var(--accent))); transform: translateX(-50%) rotateY(-90deg); display: grid; place-items: center; overflow: hidden; border-radius: 3px 0 0 3px; }
.book__spine span { writing-mode: vertical-rl; rotate: 180deg; font: 800 .72rem/1 var(--display); text-transform: uppercase; letter-spacing: .04em; white-space: nowrap; color: var(--bt, var(--ink)); max-height: 94%; overflow: hidden; }
.book__edge { top: 3px; bottom: 3px; right: 0; width: calc(var(--d) - 3px); background: repeating-linear-gradient(90deg, #fff 0 2px, #d8dde3 2px 3px); transform: translateX(50%) rotateY(90deg); }
.book__top { left: 3px; right: 3px; top: 0; height: calc(var(--d) - 3px); background: repeating-linear-gradient(0deg, #fff 0 2px, #d8dde3 2px 3px); transform: translateY(-50%) rotateX(90deg); }
.book__page { inset: 3px 3px 3px 0; transform: translateZ(calc(var(--d) * .5 - 3px)); background: #fff; border: var(--line) solid var(--ink); border-left-width: 0; border-radius: 0 8px 8px 0; padding: calc(var(--w) * .07) calc(var(--w) * .07) calc(var(--w) * .06) calc(var(--w) * .09); display: flex; flex-direction: column; container-type: inline-size; text-align: left; backface-visibility: hidden; }
.book__pk { font: 700 4.4cqw var(--display); letter-spacing: .1em; text-transform: uppercase; margin: 0 0 3.5cqw; padding-bottom: 3cqw; border-bottom: 2px solid var(--ink); }
.book__ex { flex: 1; min-height: 0; overflow: hidden; font-size: 5.5cqw; line-height: 1.5; margin: 0 0 3cqw; -webkit-mask-image: linear-gradient(#000 82%, transparent); mask-image: linear-gradient(#000 82%, transparent); }
.book__buy { display: flex; flex-wrap: wrap; gap: 2cqw; }
.book__buy .btn { font-size: 3.5cqw; padding: .9em 1.1em; }
.book__close { font: 700 4.1cqw var(--body); text-decoration: underline; text-underline-offset: .2em; padding: 1.5cqw 1cqw; }
.book__pivot { inset: 0; transform-style: preserve-3d; transform-origin: 0 50%; transform: translateZ(calc(var(--d) * .5)); transition: transform 1.1s var(--ease), opacity .4s; }
.book.is-open .book__pivot { transform: translateZ(calc(var(--d) * .5)) rotateY(-176deg); }
.book__front, .book__inside { inset: 0; backface-visibility: hidden; -webkit-backface-visibility: hidden; border-radius: 3px 10px 10px 3px; overflow: hidden; container-type: inline-size; border: 2px solid var(--ink); }
.book__front { background: var(--bc, var(--accent)); color: var(--bt, var(--ink)); box-shadow: inset 6px 0 0 rgba(255, 255, 255, .22), inset 10px 0 8px -6px rgba(0, 0, 0, .25); }
.book__img { width: 100%; height: 100%; object-fit: cover; }
.book__inside { transform: rotateY(180deg); background: var(--bc, var(--accent)); display: grid; place-items: center; }
.book__inside span { font: 700 5cqw var(--display); text-transform: uppercase; letter-spacing: .1em; color: var(--bt, var(--ink)); opacity: .8; }
.cover { position: absolute; inset: 0; padding: 9cqw 9cqw 8cqw 12cqw; display: flex; flex-direction: column; gap: 4cqw; }
.cover__by { font: 700 4.6cqw/1.2 var(--display); text-transform: uppercase; letter-spacing: .1em; }
.cover__title { font: 800 var(--tl, 13cqw)/1.02 var(--display); text-transform: uppercase; letter-spacing: -.045em; overflow-wrap: anywhere; margin-top: auto; }
.cover__sub { font: 600 5.6cqw/1.28 var(--body); max-width: 16em; }
.cover__art { position: absolute; right: 7cqw; top: 16cqw; width: 30cqw; opacity: .95; }
.cover--2 .cover__art { width: 36cqw; }
.book__hit { position: absolute; inset: 0; z-index: 6; }
.book.is-open .book__hit { pointer-events: none; }
.book:not(.is-open) .book__hit:focus-visible { outline: 3px solid var(--ink); outline-offset: 8px; border-radius: 12px; }
.shelf__meta { max-width: 25rem; }
.shelf__t { font: 800 1.35rem/1.1 var(--display); letter-spacing: -.03em; }
.shelf__s { font-weight: 700; margin: 6px 0 10px; }
.shelf__b { font-size: 1rem; line-height: 1.5; color: var(--ink); margin: 0 0 8px; }
.shelf__y { font: 700 .85rem var(--body); letter-spacing: .12em; color: var(--muted); }

/* Field notes (scroll reel) -------------------------------------------------- */
.reel { position: relative; }
.reel__label { background: #fff; border: var(--line) solid var(--ink); border-radius: 20px; padding: 22px 24px; max-width: 26rem; box-shadow: 6px 6px 0 var(--accent); }
.reel__label .eyebrow { margin-bottom: 12px; }
.reel__label p:last-child { margin: 10px 0 0; font-size: 1rem; line-height: 1.5; }
.reel__label .h3 { font-size: clamp(1.6rem, 2.8vw, 2.4rem); }
.slide { position: relative; margin: 0 0 18px; }
.slide__clip { position: relative; aspect-ratio: 16 / 9; overflow: hidden; }
.slide__img, .slide__img img { width: 100%; height: 100%; object-fit: cover; }
.slide__cap { display: grid; gap: 2px; padding: 12px 0 0; }
.slide__place { font: 700 .85rem var(--body); letter-spacing: .12em; text-transform: uppercase; }
.slide__text { font: 700 1.15rem/1.3 var(--display); letter-spacing: -.02em; }
.reel__count { display: none; }
.reel__label { margin: 0 var(--gut) 24px; }
.js .reel__track { height: calc(var(--n) * 105svh); }
.js .reel__stage { position: sticky; top: 0; height: 100svh; overflow: hidden; background: var(--ink); }
.js .reel__label { position: absolute; z-index: 30; left: var(--gut); top: calc(var(--hh) + 18px); margin: 0; }
.js .reel__slides { position: absolute; inset: 0; }
.js .slide { position: absolute; inset: 0; margin: 0; }
.js .slide__clip { position: absolute; inset: 0; aspect-ratio: auto; transform: translate3d(0, calc((1 - var(--t, 1)) * 100%), 0); will-change: transform; }
.js .slide:first-child .slide__clip { transform: none; }
.js .slide__img { transform: translate3d(0, calc((var(--t, 1) - 1) * 100%), 0) scale(calc(1 + (1 - var(--t, 1)) * .12)); will-change: transform; }
.js .slide:first-child .slide__img { transform: scale(calc(1 + (1 - var(--t, 1)) * .0)); }
.js .slide__cap { position: absolute; z-index: 25; left: var(--gut); bottom: clamp(24px, 6vh, 64px); background: #fff; border: var(--line) solid var(--ink); border-radius: 18px; padding: 16px 20px; max-width: min(34rem, 100% - var(--gut) * 2); box-shadow: 6px 6px 0 var(--accent); opacity: 0; translate: 0 18px; transition: opacity .5s, translate .8s var(--ease); pointer-events: none; }
.js .slide.on .slide__cap { opacity: 1; translate: 0 0; }
.js .reel__count { display: flex; align-items: baseline; gap: 8px; position: absolute; z-index: 30; right: calc(var(--gut) + 28px); bottom: clamp(24px, 6vh, 64px); background: var(--accent); color: var(--accent-ink); border: var(--line) solid var(--ink); border-radius: 999px; padding: 12px 22px; font: 800 1.3rem var(--display); }
.reel__count span { font-size: .9rem; font-weight: 600; }

/* Passport ------------------------------------------------------------------- */
.passport { padding: clamp(70px, 11vh, 130px) 0; position: relative; overflow: hidden; }
.counts { display: flex; flex-wrap: wrap; gap: 18px clamp(28px, 6vw, 96px); margin-bottom: clamp(36px, 6vw, 72px); }
.counts dt { font: 700 .9rem var(--body); letter-spacing: .14em; text-transform: uppercase; }
.counts dd { font: 800 clamp(3.2rem, 9vw, 8rem)/1 var(--display); letter-spacing: -.06em; font-variant-numeric: tabular-nums; }
.counts dd span { display: inline-block; }
.stamps { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0 8px; align-items: start; }
.stamp { width: 100%; max-width: 230px; margin: 0 auto; aspect-ratio: 1; translate: 0 var(--dy, 0px); rotate: var(--r, 0deg); color: var(--ink); }
.stamp--1 { color: var(--accent-text); }
.stamp svg { width: 100%; height: 100%; overflow: visible; }
.stamp__fill { fill: transparent; }
.stamp--bg-accent .stamp__fill { fill: var(--accent); }
.stamp--bg-accent { color: var(--accent-ink); }
.stamp--bg-sky .stamp__fill { fill: var(--sky); }
.st-t { font-family: var(--display); font-weight: 800; fill: currentColor; letter-spacing: .08em; }
.st-y { font-family: var(--display); font-weight: 800; fill: currentColor; letter-spacing: -.02em; }
.stamp__ink { opacity: .94; }
.js .stamp { opacity: 0; }
.js .stamp.in { animation: thunk .7s var(--ease) var(--d, 0ms) both; }
@keyframes thunk { 0% { opacity: 0; scale: 1.9; } 55% { opacity: 1; scale: .93; } 75% { scale: 1.03; } 100% { opacity: 1; scale: 1; } }
.passport__more { text-align: center; }

/* Watch ---------------------------------------------------------------------- */
.watch { padding: clamp(70px, 11vh, 130px) 0; }
.watch__grid { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: clamp(24px, 4vw, 64px); align-items: start; }
.vfeat__k, .vlist__k { font: 700 .88rem var(--body); letter-spacing: .14em; text-transform: uppercase; margin: 0 0 14px; }
.vfeat__frame { position: relative; aspect-ratio: 16 / 9; border: var(--line) solid var(--ink); border-radius: 22px; overflow: hidden; background: var(--ink); box-shadow: 10px 10px 0 var(--accent); }
.vplay { position: absolute; inset: 0; display: block; width: 100%; }
.vplay img { width: 100%; height: 100%; object-fit: cover; transition: scale 1.2s var(--ease); }
.vplay:hover img { scale: 1.05; }
.vplay__btn { position: absolute; left: 50%; top: 50%; translate: -50% -50%; width: clamp(68px, 9vw, 112px); aspect-ratio: 1; border-radius: 50%; background: var(--accent); color: var(--accent-ink); border: var(--line) solid var(--ink); display: grid; place-items: center; box-shadow: 5px 5px 0 var(--ink); transition: scale .3s var(--ease); }
.vplay:hover .vplay__btn { scale: 1.1; }
.vplay__btn svg { width: 42%; translate: 6% 0; }
.vfeat iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.vfeat__t { font: 800 clamp(1.4rem, 2.4vw, 2.2rem)/1.1 var(--display); letter-spacing: -.035em; margin-top: 28px; }
.vfeat__m { color: var(--muted); margin-top: 8px; }
.vlist ul { display: grid; border-top: var(--line) solid var(--ink); }
.vrow { display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: 16px; align-items: center; padding: 14px 0; border-bottom: var(--line) solid var(--ink); text-decoration: none; }
.vrow__img { aspect-ratio: 16 / 10; border-radius: 10px; overflow: hidden; background: var(--sky); border: var(--line) solid var(--ink); }
.vrow__img img { width: 100%; height: 100%; object-fit: cover; }
.vrow__t b { display: block; font: 700 1.02rem/1.25 var(--display); letter-spacing: -.02em; }
.vrow__t i { font-style: normal; color: var(--muted); font-size: .95rem; }
.vrow:hover { background: var(--accent); }
.vlist__links { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 22px; }

/* Closing --------------------------------------------------------------------- */
.closing { position: relative; min-height: min(86svh, 820px); display: grid; align-items: end; overflow: hidden; }
.closing__media { position: absolute; inset: 0; background: var(--ink); }
.closing__media img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 30%; }
.closing__in { position: relative; z-index: 2; margin-block: clamp(24px, 5vw, 72px); background: var(--accent); color: var(--accent-ink); border: var(--line) solid var(--ink); border-radius: 28px; padding: clamp(28px, 4vw, 56px); max-width: 52rem; margin-left: max(var(--gut), calc((100% - var(--maxw)) / 2)); box-shadow: 10px 10px 0 var(--ink); }
.closing__h { font: 800 clamp(2rem, 4.8vw, 4.2rem)/1.03 var(--display); letter-spacing: -.045em; text-wrap: balance; }
.closing__h em { background: linear-gradient(var(--ink), var(--ink)) no-repeat 0 90% / 100% .48em; color: var(--paper); }
.closing__p { font-size: 1.2rem; margin: 22px 0 28px; max-width: 34em; }
.closing .btn { background: var(--ink); color: var(--paper); }
.closing .btn:hover { box-shadow: 4px 4px 0 var(--paper); }

/* Newsletter and footer -------------------------------------------------------- */
.news { padding: clamp(48px, 7vw, 96px) 0; }
.news__in { background: var(--sky); border: var(--line) solid var(--ink); border-radius: 30px; padding: clamp(24px, 4vw, 56px); display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); gap: clamp(24px, 4vw, 64px); align-items: center; box-shadow: 8px 8px 0 var(--ink); }
.news__copy p { margin: 14px 0 0; max-width: 28em; }
.news__row { display: grid; grid-template-columns: 1fr 1.3fr auto; gap: 12px; align-items: end; }
.fld { display: grid; gap: 6px; }
.fld > span { font: 700 .92rem var(--body); }
input, select, textarea { font: inherit; color: var(--ink); background: #fff; border: var(--line) solid var(--ink); border-radius: 14px; padding: .85em 1em; width: 100%; min-height: 3.1rem; }
select { appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--ink) 50%), linear-gradient(135deg, var(--ink) 50%, transparent 50%); background-position: calc(100% - 22px) 52%, calc(100% - 16px) 52%; background-size: 6px 6px; background-repeat: no-repeat; padding-right: 2.6em; }
input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 3px solid var(--ink); outline-offset: 2px; box-shadow: 0 0 0 7px var(--accent); }
.check { display: flex; gap: 12px; align-items: flex-start; margin-top: 16px; font-size: 1rem; line-height: 1.45; }
.check input { width: 22px; height: 22px; min-height: 0; margin-top: 2px; flex: none; accent-color: var(--ink); }
.fld.invalid input, .fld.invalid select, .fld.invalid textarea { border-color: #B3001B; box-shadow: 0 0 0 3px #FFD9DE; }
.fld .err { color: #B3001B; font: 700 .92rem var(--body); }
.form-error { color: #B3001B; font-weight: 700; margin-top: 12px; }
.site-footer { padding: clamp(40px, 6vw, 80px) 0 36px; overflow: hidden; }
.foot__big { font: 900 var(--fs, 9vw)/.9 var(--display); letter-spacing: -.05em; color: var(--ink); white-space: nowrap; width: max-content; margin: 0 0 clamp(28px, 4vw, 56px); text-transform: uppercase; user-select: none; }
.foot__cols { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 32px; border-top: var(--line) solid var(--ink); padding-top: 32px; }
.foot__h { font: 700 .85rem var(--body); letter-spacing: .14em; text-transform: uppercase; margin-bottom: 14px; }
.foot__cols li { margin-bottom: 8px; }
.foot__cols p { font-size: 1rem; margin-bottom: 16px; max-width: 22em; }
.foot__cols a { text-decoration: none; font-weight: 600; border-bottom: 2px solid transparent; }
.foot__cols a:hover { border-bottom-color: var(--ink); }
.foot__cols a.btn { border-bottom: var(--line) solid var(--ink); }
.foot__legal { margin-top: 48px; padding-top: 22px; border-top: 1px solid color-mix(in srgb, var(--ink) 25%, transparent); font-size: .95rem; color: var(--muted); display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px 24px; }
.foot__legal a { color: var(--ink); font-weight: 700; }

/* Inner pages ---------------------------------------------------------------------- */
.phead { padding: calc(var(--hh) + clamp(40px, 8vw, 100px)) 0 clamp(36px, 6vw, 72px); }
.phead .h1 { max-width: 14em; }
.phead .acts { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 34px; }
.phead--thanks { min-height: 78svh; display: grid; align-content: center; }
.phead__in { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: clamp(28px, 5vw, 80px); align-items: end; }
.phead__fig { border: var(--line) solid var(--ink); border-radius: 26px; aspect-ratio: 4 / 5; box-shadow: 12px 12px 0 var(--accent); background: var(--ink); }
.phead__fig img { width: 100%; height: 100%; object-fit: cover; object-position: 60% 30%; }
.story { padding: clamp(24px, 4vw, 60px) 0 clamp(60px, 9vw, 120px); }
.story__in { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: clamp(28px, 5vw, 96px); align-items: start; }
.story__text p { font-size: clamp(1.15rem, 1vw + .95rem, 1.5rem); line-height: 1.55; }
.story__text p:first-child::first-letter { font: 800 4.4em/.8 var(--display); float: left; padding: .06em .12em 0 0; }
.pull { position: sticky; top: 130px; font: 800 clamp(1.8rem, 3.2vw, 3rem)/1.1 var(--display); letter-spacing: -.04em; background: var(--accent); color: var(--accent-ink); border: var(--line) solid var(--ink); border-radius: 26px; padding: clamp(24px, 3vw, 44px); box-shadow: 10px 10px 0 var(--ink); }
.pull p { margin: 0; }
.timeline { padding: clamp(40px, 7vw, 90px) 0; }
.tl { position: relative; padding-left: clamp(24px, 6vw, 56px); margin-left: 12px; --tl: 0; }
.tl::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: color-mix(in srgb, var(--ink) 14%, transparent); border-radius: 4px; }
.tl::after { content: ""; position: absolute; left: 0; top: 0; width: 4px; height: 100%; background: var(--ink); transform-origin: top; transform: scaleY(var(--tl)); border-radius: 4px; }
html:not(.js) .tl { --tl: 1; }
.tl__i { display: grid; grid-template-columns: clamp(86px, 12vw, 190px) minmax(0, 1fr); gap: 22px; padding: clamp(18px, 2.6vw, 34px) 0; position: relative; border-bottom: 1px solid color-mix(in srgb, var(--ink) 18%, transparent); }
.tl__i::before { content: ""; position: absolute; left: calc(clamp(24px, 6vw, 56px) * -1 - 9px); top: calc(clamp(18px, 2.6vw, 34px) + .5em); width: 22px; height: 22px; border-radius: 50%; background: var(--accent); border: 3px solid var(--ink); }
.tl__y { font: 800 clamp(1.5rem, 3.2vw, 3rem)/1 var(--display); letter-spacing: -.05em; }
.tl__i h3 { font: 800 1.35rem/1.15 var(--display); letter-spacing: -.03em; margin-bottom: 6px; }
.tl__i p { margin: 0; max-width: 36em; }
.convict { padding: clamp(40px, 7vw, 90px) 0 clamp(60px, 9vw, 120px); }
.cv { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(16px, 2vw, 28px); }
.cv__i { border: var(--line) solid var(--ink); border-radius: 24px; padding: clamp(22px, 3vw, 40px); background: var(--paper); transition: background .3s, box-shadow .3s, translate .3s; }
.cv__i:hover { background: var(--accent); box-shadow: 8px 8px 0 var(--ink); translate: -4px -4px; }
.cv__n { font: 800 .95rem var(--display); display: block; margin-bottom: 36px; }
.cv__i h3 { font: 800 clamp(1.3rem, 2vw, 1.8rem)/1.1 var(--display); letter-spacing: -.035em; margin-bottom: 10px; }
.cv__i p { margin: 0; }
.music { padding: clamp(60px, 9vw, 110px) 0; }
.albums { display: grid; gap: clamp(32px, 5vw, 72px); }
.album { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1fr); gap: clamp(24px, 5vw, 80px); align-items: center; }
.album:nth-child(even) { grid-template-columns: minmax(0, 1fr) minmax(0, .8fr); }
.album:nth-child(even) .album__cov { order: 2; }
.album__cov { position: relative; aspect-ratio: 1; max-width: 520px; width: 100%; }
.album__cov img { position: relative; z-index: 2; width: 100%; height: 100%; object-fit: cover; border: var(--line) solid var(--ink); border-radius: 12px; }
.album__disc { position: absolute; z-index: 1; right: -14%; top: 6%; width: 88%; aspect-ratio: 1; border-radius: 50%; background: repeating-radial-gradient(circle at 50% 50%, var(--ink) 0 2px, #1b2638 2px 5px); border: var(--line) solid var(--ink); transition: translate .8s var(--ease), rotate 1.4s var(--ease); }
.album__disc::after { content: ""; position: absolute; inset: 34%; border-radius: 50%; background: var(--accent); border: var(--line) solid var(--ink); }
.album:hover .album__disc { translate: 8% 0; rotate: 120deg; }
.album__k { font: 700 .88rem var(--body); letter-spacing: .12em; text-transform: uppercase; margin-bottom: 8px; }
.album h3 { font: 800 clamp(1.8rem, 3.4vw, 3.2rem)/1.04 var(--display); letter-spacing: -.045em; margin-bottom: 12px; }
.album__links { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 8px; }
.tools { padding: clamp(40px, 7vw, 90px) 0 clamp(70px, 10vw, 130px); }
.tool-list { border-top: var(--line) solid var(--ink); }
.tool { display: grid; grid-template-columns: 8rem minmax(0, 1fr) auto 2.4rem; gap: 18px; align-items: center; padding: 22px 8px; border-bottom: var(--line) solid var(--ink); text-decoration: none; transition: background .3s, padding .4s var(--ease); }
.tool:hover { background: var(--accent); padding-inline: 20px; }
.tool__tag { font: 700 .82rem var(--body); letter-spacing: .12em; text-transform: uppercase; border: var(--line) solid var(--ink); border-radius: 999px; padding: .45em .9em; justify-self: start; background: var(--paper); }
.tool__t b { display: block; font: 800 clamp(1.15rem, 1.8vw, 1.6rem)/1.15 var(--display); letter-spacing: -.035em; }
.tool__t i { font-style: normal; color: var(--muted); display: block; margin-top: 4px; }
.tool:hover .tool__t i { color: var(--ink); }
.tool__p { font: 800 1.2rem var(--display); }
.booking { padding: 0 0 clamp(60px, 9vw, 110px); }
.booking__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr); gap: clamp(28px, 5vw, 84px); align-items: start; }
.booking__side { position: sticky; top: calc(var(--hh) + 24px); display: grid; gap: 8px; }
.chips { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 36px; }
.chips li { border: var(--line) solid var(--ink); border-radius: 999px; padding: .55em 1.05em; font-weight: 700; font-size: .98rem; background: var(--paper); }
.steps { display: grid; gap: 20px; margin-bottom: 32px; }
.steps li { display: grid; grid-template-columns: 44px 1fr; gap: 16px; }
.steps li > span { width: 44px; aspect-ratio: 1; border-radius: 50%; background: var(--accent); color: var(--accent-ink); border: var(--line) solid var(--ink); display: grid; place-items: center; font: 800 1.05rem var(--display); }
.steps b { font: 700 1.05rem var(--display); letter-spacing: -.02em; }
.steps p { margin: 4px 0 0; color: var(--ink); font-size: 1.02rem; line-height: 1.5; }
.booking__mail { font-weight: 600; }
.bform { background: var(--paper); border: var(--line) solid var(--ink); border-radius: 28px; padding: clamp(22px, 4vw, 48px); box-shadow: 10px 10px 0 var(--accent); }
.bform__note { margin: 10px 0 24px; color: var(--muted); }
.bform__set { border: 0; padding: 0; margin: 0 0 18px; display: grid; gap: 16px; min-width: 0; }
.bform__set legend { font: 800 1.15rem var(--display); letter-spacing: -.03em; padding: 0 0 14px; }
.fld-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.bform .btn { margin-top: 22px; }
.press { padding: clamp(40px, 7vw, 90px) 0 clamp(70px, 10vw, 130px); }
.kit { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.kit__i { display: grid; gap: 40px; border: var(--line) solid var(--ink); border-radius: 24px; padding: 26px; text-decoration: none; height: 100%; transition: background .3s, box-shadow .3s, translate .3s; }
.kit__i:hover { background: var(--accent); box-shadow: 8px 8px 0 var(--ink); translate: -4px -4px; }
.kit__t b { display: block; font: 800 1.5rem var(--display); letter-spacing: -.04em; }
.kit__t i { font-style: normal; display: block; margin-top: 6px; color: var(--ink); }
.kit__dl { display: inline-flex; gap: 10px; align-items: center; font: 700 .85rem var(--display); text-transform: uppercase; }
.kit__dl svg { width: 20px; }
.tiers { padding: clamp(20px, 4vw, 50px) 0 clamp(50px, 8vw, 100px); }
.tier-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(14px, 2vw, 28px); align-items: stretch; }
.tier { border: var(--line) solid var(--ink); border-radius: 28px; padding: clamp(24px, 3vw, 40px); display: grid; align-content: start; gap: 8px; background: var(--paper); }
.tier--hot { background: var(--accent); color: var(--accent-ink); box-shadow: 10px 10px 0 var(--ink); translate: 0 -14px; }
.js .tier--hot.reveal.in { translate: 0 -14px; }
.tier__n { font: 700 .9rem var(--display); letter-spacing: .06em; text-transform: uppercase; margin: 0; }
.tier__a { margin: 14px 0 0; display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.tier__a b { font: 900 clamp(3rem, 5vw, 4.8rem)/1 var(--display); letter-spacing: -.06em; }
.tier__a span { font-weight: 700; }
.tier__p { min-height: 4.5em; font-size: 1.08rem; }
.tier .btn { justify-self: start; }
.tier--hot .btn { background: var(--ink); color: var(--paper); }
.goes { padding: clamp(20px, 4vw, 50px) 0 clamp(60px, 9vw, 110px); }
.goes__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(16px, 2.4vw, 36px); border-top: var(--line) solid var(--ink); }
.goes__list li { padding-top: 24px; }
.goes__list span { font: 800 .95rem var(--display); }
.goes__list h3 { font: 800 1.7rem/1.1 var(--display); letter-spacing: -.04em; margin: 22px 0 10px; }
.goes__note { margin-top: 36px; color: var(--muted); max-width: 42em; }
.hosted { padding: clamp(40px, 7vw, 90px) 0 clamp(60px, 9vw, 110px); }
.evlist { border-top: var(--line) solid var(--ink); }
.ev { display: grid; grid-template-columns: 76px minmax(0, 1fr) auto; gap: 24px; align-items: center; padding: 26px 0; border-bottom: var(--line) solid var(--ink); }
.ev__date { width: 76px; border: var(--line) solid var(--ink); border-radius: 14px; overflow: hidden; text-align: center; }
.ev__date span { display: block; background: var(--ink); color: var(--paper); font: 700 .8rem var(--display); text-transform: uppercase; padding: 8px 0 7px; }
.ev__date b { display: block; font: 800 2rem/1 var(--display); letter-spacing: -.04em; padding: 11px 0 12px; }
.ev h3 { font: 800 clamp(1.25rem, 2vw, 1.8rem)/1.1 var(--display); letter-spacing: -.035em; }
.ev__meta { color: var(--muted); margin: 6px 0 8px; }
.ev p:last-child { margin: 0; max-width: 40em; }
.empty { border: var(--line) dashed var(--ink); border-radius: 20px; padding: 28px; }
.hosted .h2 em { background-size: 100% .48em; }

/* Demo palette switcher -------------------------------------------------------------- */
.pal { position: fixed; left: 14px; bottom: 14px; z-index: 75; display: flex; align-items: center; gap: 4px; background: #fff; border: var(--line) solid var(--ink); border-radius: 999px; padding: 6px 8px 6px 14px; box-shadow: 4px 4px 0 var(--ink); }
.pal__t { font: 700 .75rem var(--body); letter-spacing: .12em; text-transform: uppercase; margin-right: 6px; }
.pal__b { display: inline-flex; align-items: center; gap: 0; border-radius: 999px; padding: 4px; transition: background .25s, padding .3s var(--ease); font: 700 .8rem var(--display); }
.pal__b i { width: 22px; height: 22px; border-radius: 50%; background: var(--c); border: 2px solid var(--k); display: block; }
.pal__b span { max-width: 0; overflow: hidden; white-space: nowrap; transition: max-width .4s var(--ease), margin .3s; }
.pal__b[aria-pressed="true"] { background: var(--ink); color: var(--paper); padding-right: 12px; }
.pal__b[aria-pressed="true"] span { max-width: 6em; margin-left: 8px; }
.pal__b:hover:not([aria-pressed="true"]) { background: var(--sky); }

/* Cursor ------------------------------------------------------------------------------ */
.cursor { position: fixed; left: 0; top: 0; z-index: 400; pointer-events: none; opacity: 0; transition: opacity .3s; }
.has-cursor .cursor { opacity: 1; }
.cursor__dot { position: absolute; left: -5px; top: -5px; width: 10px; height: 10px; border-radius: 50%; background: var(--ink); border: 2px solid #fff; transition: scale .25s var(--ease); }
.cursor__ring { position: absolute; left: 0; top: 0; width: 0; height: 0; display: grid; place-items: center; }
.cursor__label { position: absolute; width: 84px; height: 84px; margin: -42px 0 0 -42px; border-radius: 50%; background: var(--accent); color: var(--accent-ink); border: var(--line) solid var(--ink); display: grid; place-items: center; font: 700 .72rem var(--display); letter-spacing: .04em; text-transform: uppercase; scale: 0; transition: scale .4s var(--ease); }
.cursor.has-label .cursor__label { scale: 1; }
.cursor.has-label .cursor__dot { scale: 0; }
.has-cursor, .has-cursor a, .has-cursor button, .has-cursor label, .has-cursor summary { cursor: none; }
.has-cursor input, .has-cursor textarea, .has-cursor select { cursor: auto; }
.has-cursor .menu-open, .has-cursor .menu-open * { cursor: auto; }

/* Responsive ----------------------------------------------------------------------------- */
@media (max-width: 1100px) {
  .stamps { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .foot__cols { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kit { grid-template-columns: 1fr; }
}
@media (max-width: 999px) {
  .book.is-open .book__obj { transform: none; }
  .book.is-open .book__pivot { transform: translateZ(calc(var(--d) * .5)) rotateY(-96deg); opacity: 0; pointer-events: none; }
  .book { --w: min(66vw, 280px); }
  .shelf__list { grid-template-columns: 1fr; gap: 24px; }
  .shelf__item { grid-template-columns: 1fr; padding-bottom: 36px; border-bottom: var(--line) solid var(--ink); }
}
@media (max-width: 899px) {
  :root { --hh: 64px; }
  .road__grid, .watch__grid, .story__in, .booking__grid, .news__in, .phead__in { grid-template-columns: minmax(0, 1fr); }
  .road__mapcol { position: sticky; top: calc(var(--hh) + 6px); background: var(--paper); padding: 6px 0 14px; margin-inline: calc(var(--gut) * -1); padding-inline: var(--gut); }
  .mapcard { box-shadow: 4px 4px 0 var(--ink); border-radius: 20px; padding: 12px; }
  .hud__m { margin-left: 0; }
  .hud { margin-bottom: 6px; }
  .pin { width: 18px; height: 18px; margin: -9px 0 0 -9px; }
  .pin__dot { border-width: 2.5px; }
  .plane { width: 24px; height: 24px; margin: -12px 0 0 -12px; }
  .plane svg { width: 12px; }
  .arc--live { stroke-width: 6.5; }
  .arc--halo { stroke-width: 13; }
  .arc--later { stroke-width: 2.6; }
  .arc--live.is-hot { stroke-width: 9; }
  .pin__n { font-size: .56rem; }
  .pin--later { width: 12px; height: 12px; margin: -6px 0 0 -6px; }
  .arc--ghost { stroke-width: 4; stroke-dasharray: 1 12; }
  .stop { grid-template-columns: 62px minmax(0, 1fr); gap: 14px; padding: 20px 12px; margin-inline: -12px; }
  .stop__date { width: 62px; }
  .stop__d { font-size: 1.6rem; }
  .arow__line { grid-template-columns: 2.2rem minmax(0, 1fr) 2.6rem; }
  .arow__tag { display: none; }
  .arow__inner { grid-template-columns: minmax(0, 1fr); }
  .booking__side { position: static; }
  .pull { position: static; }
  .phead__fig { max-width: 520px; }
  .hero__stage { gap: 16px; }
  .ko__sun { top: var(--sunt, -10%); }
  .ko { --sunt: -10%; }
  .hero__window { display: block; border: var(--line) solid var(--ink); border-radius: 22px; overflow: hidden; aspect-ratio: 4 / 4.4; box-shadow: 6px 6px 0 var(--accent); background: var(--ink); }
  .hero__window .reveal-img { height: 100%; }
  .hero__window img { width: 100%; height: 100%; object-fit: cover; }
  .hero__foot { grid-template-columns: 1fr; }
  .hero { min-height: 0; }
  .menu__in { grid-template-columns: 1fr; align-items: start; }
  .menu__side { order: -1; }
  .menu__nav .t { font-size: clamp(2rem, 9vw, 3.4rem); }
  .album, .album:nth-child(even) { grid-template-columns: minmax(0, 1fr); }
  .album:nth-child(even) .album__cov { order: 0; }
  .album__cov { max-width: 380px; width: 80%; }
  .tool { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "tag p" "t t"; gap: 10px 14px; }
  .tool__tag { grid-area: tag; } .tool__t { grid-area: t; } .tool__p { grid-area: p; justify-self: end; } .tool__a { display: none; }
  .tier-list, .goes__list, .cv { grid-template-columns: minmax(0, 1fr); }
  .tier--hot, .js .tier--hot.reveal.in { translate: 0 0; }
  .ev { grid-template-columns: 62px minmax(0, 1fr); }
  .ev .btn { grid-column: 2; justify-self: start; }
  .ev__date { width: 62px; }
  .news__row { grid-template-columns: 1fr; }
  .fld-row { grid-template-columns: 1fr; }
  .stamps { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .pal__t { display: none; }
  .booktab { padding: 16px 9px; font-size: .72rem; top: 46%; }
  .js .reel__label { max-width: calc(100% - var(--gut) * 2); padding: 14px 16px; }
  .js .reel__label p:last-child { display: none; }
  .js .slide__cap { left: var(--gut); right: var(--gut); max-width: none; bottom: 70px; }
  .js .reel__count { right: var(--gut); bottom: 14px; padding: 8px 16px; font-size: 1rem; }
  .closing__in { margin-inline: var(--gut); box-shadow: 6px 6px 0 var(--ink); }
  .counts dd { font-size: clamp(2.8rem, 16vw, 5rem); }
}
@media (max-width: 560px) {
  .stamps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .foot__cols { grid-template-columns: 1fr; }
  .vrow { grid-template-columns: 96px minmax(0, 1fr); }
  .site-header__right .hdr-book { display: none; }
  .brand__name { font-size: .88rem; }
  .btn { padding: 1em 1.4em; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition-duration: .01ms !important; transition-delay: 0s !important; scroll-behavior: auto !important; }
  .js .reveal, .js .rise { opacity: 1; translate: none; }
  .js .reveal-img { clip-path: none; }
  .js .reveal-img img { scale: 1; }
  .js .stamp { opacity: 1; }
  .js em { background-size: 100% .48em !important; }
  .js .pin { opacity: 1; scale: 1; }
  .ko__pan { transform: scale(1.1); }
  .ch > span { transform: none; }
  .menu__nav a { translate: 0 0; }
}

/* Photo treatment, set in the CMS */
.tone-mono img:not(.book__img) { filter: grayscale(1) contrast(1.06); }
.tone-warm img:not(.book__img) { filter: sepia(.28) saturate(1.12) contrast(1.02); }
@media (max-width: 640px) {
  /* Phones: the sun and spinning badge straddle the corner of the photo below the name, so they never cover letters. */
  .ko { --sunw: 132px; --stk: 104px; --sunt: calc(100% + 4px); z-index: 3; }
  .ko__sun { right: 15%; mix-blend-mode: normal; }
  .sticker { right: calc(15% + (var(--sunw) - var(--stk)) / 2); }
}

/* Email consent line, legal pages, empty-state ---------------------------------- */
.consent { margin: 14px 0 0; font-size: .9rem; line-height: 1.45; color: var(--muted); max-width: 46em; }
.foot__links { display: flex; flex-wrap: wrap; gap: 0 22px; margin-top: 24px; }
.foot__links + .foot__legal { margin-top: 8px; }
.foot__links a { display: inline-block; padding: 8px 0; font-weight: 700; text-decoration: none; }
.foot__links a:hover { text-decoration: underline; }
.prose { max-width: 46rem; display: grid; gap: 1rem; font-size: 1.1rem; line-height: 1.65; padding-block: clamp(32px, 6vw, 72px) clamp(56px, 8vw, 110px); }
.prose h2 { font-family: var(--display); font-weight: 800; letter-spacing: -.03em; line-height: 1.1; font-size: clamp(1.3rem, 2.2vw, 1.8rem); margin-top: 1.6rem; }
.prose ul { list-style: disc; padding-left: 1.3rem; display: grid; gap: .4rem; }
.prose a { font-weight: 700; }
.watch-soon { max-width: 42rem; padding-block: 8px 24px; }
.watch-soon .h3 { margin-bottom: 14px; }
