/* aftertale.app · Aftertale design system v3. The marketing site is Midnight throughout (with the
   increased-contrast variant); it is a page for the minutes before sleep, and it sits on night photographs. */

:root, .midnight {
  --bg: #121212;
  --bg-raised: #1e1e1e;
  --hairline: #2e2e2e;
  --stroke: #777774;
  --ink: #f4f4f2;
  --ink-muted: #adadaa;
  --ink-faint: #959592;
  --accent: #efb46e;
  --on-accent: #1c1307;
  --fill: rgba(244, 244, 242, 0.14);
  --fill-hover: rgba(244, 244, 242, 0.2);
  --danger: #ff8f7e;
  --glass: rgba(44, 44, 44, 0.66);
  --scrim: rgba(10, 10, 10, 0.72);
  --shadow-cover: 0 12px 32px rgba(0, 0, 0, 0.5);
  --shadow-float: 0 8px 24px rgba(0, 0, 0, 0.45);
  --page-edge: transparent;
}
:root {
  color-scheme: dark;
  --serif: "Iowan Old Style", "Iowan Old Style BT", Charter, "Bitstream Charter", Georgia, serif;
  --sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", system-ui, sans-serif;
  --ease: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-io: cubic-bezier(0.32, 0.72, 0, 1);
  --gutter: 20px;
  --max: 1360px; /* one content edge: the hero, every section and the footer start at the same x */
  --section: 128px; /* one vertical rhythm: the space between sections */
}
.midnight { color-scheme: dark; --page-edge: transparent; color: var(--ink); background: var(--bg); }
@media (prefers-contrast: more) {
  :root, .midnight { --bg: #000; --bg-raised: #141414; --hairline: #4d4d4d; --ink: #fff; --ink-muted: #d6d6d3; --ink-faint: #c4c4c1; --accent: #ffc994; --stroke: #a3a3a0; --fill: rgba(255, 255, 255, 0.26); }
}
@media (min-width: 768px) { :root { --gutter: 40px; } }
@media (max-width: 860px) { :root { --section: 80px; } }

/* ------------------------------------------------------------------ base */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: 24px; }
body {
  margin: 0; background: var(--bg); color: var(--ink);
  font: 400 17px/1.47 var(--sans);
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
  overflow-x: clip;
}
img { display: block; max-width: 100%; }
h1, h2, h3, p, figure, ul, ol { margin: 0; }
ul, ol { padding: 0; list-style: none; }
h1, h2, h3 { text-wrap: balance; font-weight: 700; }
p, li, summary { text-wrap: pretty; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { text-decoration-thickness: 2px; }
::selection { background: var(--accent); color: var(--on-accent); }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 6px; }
button { font: inherit; color: inherit; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
.skip { position: absolute; z-index: 50; left: 16px; top: -64px; padding: 8px 12px; border-radius: 8px; background: var(--ink); color: var(--bg); font: 600 16px/24px var(--sans); text-decoration: none; }
.skip:focus { top: 16px; }
.wrap { width: 100%; max-width: calc(var(--max) + var(--gutter) * 2); margin: 0 auto; padding: 0 var(--gutter); }
/* the lockup: the mark at 1.3x the name's cap height (Iowan's is 0.7em), a third of its height apart, centred on one line */
.wordmark { display: inline-flex; align-items: center; gap: 0.3em; font: 700 28px/32px var(--serif); letter-spacing: -0.2px; color: var(--ink); text-decoration: none; }
.wordmark__mark { flex: none; width: auto; height: 0.9em; }
.wordmark--sm { font-size: 22px; line-height: 28px; }
h2 { font: 700 48px/1.08 var(--serif); letter-spacing: -0.015em; }
.lede { font: 400 18px/28px var(--sans); color: var(--ink-muted); }
.lede a { color: var(--ink); }

/* pre-launch / launch copy, one flag */
.post { display: none; }
html.launch .pre { display: none; }
html.launch .post { display: revert; }
html.launch span.post { display: inline; }

/* ------------------------------------------------------------------ chips and buttons */
.chip {
  height: 36px; padding: 0 14px; border: 0; border-radius: 999px;
  display: inline-flex; align-items: center; gap: 6px; flex: none;
  background: var(--fill); color: var(--ink); font: 500 15px/20px var(--sans); white-space: nowrap;
}
.chip svg { width: 12px; height: 12px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.chip.is-on, .chip[aria-checked="true"] { background: var(--accent); color: var(--on-accent); }
button.chip { cursor: pointer; transition: transform .15s var(--ease); }
/* A chip that can be ticked keeps its final width from the start: the check always holds its space and only fades
   and scales in, while the label (offset to look centred) slides into place. Nothing reflows. */
.chip--check { padding: 0 12px; }
.chip--check svg { opacity: 0; transform: scale(.4); transition: opacity .2s var(--ease), transform .35s var(--ease); }
.chip--check .chip__t { transform: translateX(-9px); transition: transform .35s var(--ease-io); }
.chip--check.is-on svg, .chip--check[aria-checked="true"] svg { opacity: 1; transform: none; transition-delay: .06s; }
.chip--check.is-on .chip__t, .chip--check[aria-checked="true"] .chip__t { transform: none; }
button.chip--check svg, button.chip--check .chip__t { transition: none; }
button.chip--check[aria-checked="true"] { font-weight: 600; }
button.chip:hover { background: var(--fill-hover); }
button.chip[aria-checked="true"]:hover { background: var(--accent); filter: brightness(1.05); }
button.chip:active { transform: scale(0.97); }
/* 44pt hit area around a 36pt chip */
button.chip { position: relative; }
button.chip::after { content: ""; position: absolute; inset: -4px 0; }

.btn {
  height: 44px; padding: 0 20px; border: 0; border-radius: 999px; cursor: pointer; white-space: nowrap; flex: none;
  font: 600 16px/1 var(--sans); background: var(--accent); color: var(--on-accent);
  transition: transform .15s var(--ease), filter .2s var(--ease), opacity .2s var(--ease);
}
.btn:hover { filter: brightness(1.07); }
.btn:active { transform: scale(0.98); }
.btn[aria-busy="true"] { opacity: .72; cursor: progress; }

/* ------------------------------------------------------------------ the CTA slot (waitlist now, App Store at launch) */
.get { width: 100%; max-width: 440px; }
.get__form { position: relative; display: flex; gap: 8px; padding: 6px; border-radius: 999px; background: var(--fill); transition: box-shadow .2s var(--ease); }
.get__form:focus-within { box-shadow: 0 0 0 2px var(--accent); }
.get__form input[type="email"] {
  flex: 1; width: 0; min-width: 0; height: 44px; padding: 0 14px; border: 0; border-radius: 999px; background: transparent;
  font: 400 17px var(--sans); color: var(--ink); caret-color: var(--accent);
}
.get__form input[type="email"]::placeholder { color: var(--ink-muted); opacity: 1; }
.get__form input[type="email"]:focus-visible { outline: none; }
.get__form:has(input[aria-invalid="true"]) { box-shadow: 0 0 0 2px var(--danger); }
.hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.get__note { margin-top: 12px; font: 400 13px/18px var(--sans); color: var(--ink-muted); }
.get__note a { color: var(--ink-muted); margin-left: 2px; }
.get__note a:focus-visible { outline-offset: 1px; border-radius: 3px; }
.get__error { margin-top: 12px; display: flex; gap: 6px; align-items: flex-start; font: 400 13px/18px var(--sans); color: var(--danger); }
.get__error[hidden] { display: none; }
.get__error svg { flex: none; margin-top: 2px; width: 14px; height: 14px; }
.get__done { display: none; align-items: center; gap: 12px; min-height: 56px; font: 400 17px/24px var(--sans); }
.get__done svg { flex: none; width: 24px; height: 24px; color: var(--accent); }
.get[data-state="done"] .get__form, .get[data-state="done"] .get__note, .get[data-state="done"] .get__error { display: none; }
.get[data-state="done"] .get__done { display: flex; }
.get__store { display: none; align-items: center; gap: 24px; }
.badge { display: inline-block; border-radius: 10px; }
.badge img { height: 54px; width: auto; }
.qr { display: none; align-items: center; gap: 12px; }
.qr canvas { width: 72px; height: 72px; padding: 6px; border-radius: 8px; background: #fff; image-rendering: pixelated; }
.qr p { font: 400 13px/18px var(--sans); color: var(--ink-muted); max-width: 12ch; }
@media (min-width: 1024px) and (hover: hover) { .qr { display: flex; } }
html.launch .get__form, html.launch .get__note, html.launch .get__error, html.launch .get__done { display: none !important; }
html.launch .get__store { display: flex; }

/* ------------------------------------------------------------------ hero */
.hero { position: relative; height: max(100svh, 760px); max-height: 1000px; overflow: hidden; background: #0d0c0b; }
.stage { position: absolute; inset: 0; overflow: hidden; }
.scene { position: absolute; left: 0; top: 0; width: var(--cw, 2400px); aspect-ratio: 2736 / 1536; translate: var(--cx, 0px) var(--cy, 0px); }
.scene__photo { width: 100%; height: 100%; object-fit: cover; }
.veil { position: absolute; inset: 0; pointer-events: none;
  background:
    linear-gradient(90deg, rgba(13, 12, 11, 0.94) 0%, rgba(13, 12, 11, 0.84) 30%, rgba(13, 12, 11, 0.36) 48%, rgba(13, 12, 11, 0) 60%),
    linear-gradient(0deg, rgba(13, 12, 11, 0.55) 0%, rgba(13, 12, 11, 0) 22%),
    linear-gradient(180deg, rgba(13, 12, 11, 0.62) 0%, rgba(13, 12, 11, 0) 16%); }

/* the phone's screen in the photograph */
.screen { position: absolute; left: 50.585%; top: 23.958%; width: 16.228%; height: 58.464%; border-radius: 12% / 6%; overflow: hidden; background: #050505; }
.screen__light { position: absolute; inset: 0; z-index: 3; pointer-events: none;
  background:
    linear-gradient(116deg, rgba(255, 255, 255, 0) 34%, rgba(255, 244, 228, .07) 35%, rgba(255, 244, 228, .02) 50%, rgba(255, 255, 255, 0) 51%),
    radial-gradient(120% 70% at 100% 0%, rgba(255, 190, 120, .14), rgba(255, 190, 120, 0) 60%),
    linear-gradient(205deg, rgba(0, 0, 0, 0) 40%, rgba(8, 5, 2, .32) 100%); }
.app { position: absolute; inset: 1.9% 3.5%; overflow: hidden; border-radius: 10% / 4.9%; background: var(--bg); color: var(--ink); }
.app__island { position: absolute; z-index: 4; left: 50%; top: 2.4%; translate: -50% 0; width: 31%; height: 3.6%; border-radius: 99px; background: #000; }
/* each screen is laid out at 390 × 844pt and scaled onto the phone (JS sets --dss, the scale, and --dsx, the inset) */
.ds-screen.at-screen { position: absolute; left: var(--dsx, 0px); top: 0; width: 390px; height: 844px; transform: scale(var(--dss, 0.6)); transform-origin: 0 0; transition: opacity .35s var(--ease-io); }
.ds-screen[data-screen="player"] { opacity: 0; }
.app { transition: background-color .35s var(--ease-io); }
.app.is-playing { background: linear-gradient(180deg, color-mix(in oklab, var(--ptone, #2a2a2a) 50%, var(--bg)) 0%, var(--bg) 70%); }
.app.is-playing .ds-screen[data-screen="home"] { opacity: 0; }
.app.is-playing .ds-screen[data-screen="player"] { opacity: 1; }
.at-art .at-art__img { opacity: 0; transition: opacity .5s var(--ease-io); }
.at-art .at-art__img.on { opacity: 1; }
.at-hero__stack { display: grid; }
.at-hero__stack > .at-hero__body { grid-area: 1 / 1; transition: opacity .22s var(--ease); }
.at-hero__stack > .at-hero__body.is-hidden { opacity: 0; transition-duration: .12s; }
.at-cover__title { transition: opacity .22s var(--ease); }
.at-cover__title.is-hidden { opacity: 0; transition-duration: .12s; }
.at-hero__logline { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
/* the live caption with the word-by-word highlight: read words in ink, the live word in an amber capsule */
.at-caption__line span { color: color-mix(in srgb, var(--ink) 45%, var(--bg)); }
.at-caption__line .on { color: var(--ink); }
.at-caption__line .cur { color: var(--ink); background: rgba(239, 180, 110, .22); box-shadow: 0 0 0 2px rgba(239, 180, 110, .22); border-radius: 4px; }
.at-caption__line { min-height: 84px; }
.at-scrub__track > i { width: calc(var(--pp, 0) * 100%); }
.at-scrub__track > b { left: calc(var(--pp, 0) * 100%); }

/* ------------------------------------------------------------------ the phone screens: the design system's own components
   (copied from the DS bundle.css: HomeScreen with TonightHero, PlayerScreen with PlayerControls), rendered at 390pt
   and scaled onto the phone in the photograph. Tokens below are the DS names. */
.app { --cover-row: 128px; --font-sans: var(--sans); --font-serif: var(--serif); --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px; --space-6: 24px; --space-8: 32px; --space-12: 48px;
  --radius-xs: 4px; --radius-sm: 8px; --radius-md: 16px; --radius-lg: 24px; --radius-pill: 999px; --button-height: 52px; --chip-height: 36px; --tap-min: 44px;
  --mini-player-height: 56px; --play-size: 72px; --action: var(--accent); --on-action: var(--on-accent); --bg-overlay: #2a2a2a; --focus-ring: var(--accent); --gutter: 20px; }
.at-serif { font-family: var(--font-serif); }
.at-muted { color: var(--ink-muted); }
.at-num { font-variant-numeric: tabular-nums; }
.at-section { margin: 0; font: 700 22px/28px var(--font-sans); letter-spacing: 0.2px; }
.at-link { color: var(--accent); font: 400 17px/22px var(--font-sans); text-decoration: none; }
.at-row__head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-4); padding: 0 var(--gutter); margin-bottom: var(--space-3); }
.at-row__scroll { display: flex; gap: var(--space-3); padding: 0 var(--gutter) var(--space-4); overflow: hidden; }
.at-tile { flex: none; width: var(--cover-row); display: flex; flex-direction: column; gap: var(--space-2); }
.at-tile__meta { font: 400 13px/16px var(--font-sans); color: var(--ink-muted); }
.at-large-title { margin: 0; font: 700 34px/41px var(--font-sans); letter-spacing: 0.3px; }
/* Icons: SF Symbols stand-ins, drawn as masks so they take currentColor */
.at-icon { display: inline-block; flex: none; width: 24px; height: 24px; background: currentColor; -webkit-mask: var(--i) center / contain no-repeat; mask: var(--i) center / contain no-repeat; }
.at-icon--sm { width: 16px; height: 16px; }
.at-icon--lg { width: 32px; height: 32px; }
.at-i-play{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M8 5.2v13.6c0 .8.9 1.3 1.6.9l10.8-6.8c.6-.4.6-1.3 0-1.7L9.6 4.3C8.9 3.9 8 4.4 8 5.2z'/%3E%3C/svg%3E")}
.at-i-pause{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='6' y='4.5' width='4.2' height='15' rx='1.3'/%3E%3Crect x='13.8' y='4.5' width='4.2' height='15' rx='1.3'/%3E%3C/svg%3E")}
.at-i-back15{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round' d='M12 3.8a8.2 8.2 0 1 1-7.6 5.1'/%3E%3Cpath fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round' d='M13.6 1.6L11.2 3.8l2.4 2.2'/%3E%3Ctext x='12.2' y='15.6' font-family='Helvetica,Arial,sans-serif' font-size='7.6' font-weight='700' text-anchor='middle'%3E15%3C/text%3E%3C/svg%3E")}
.at-i-fwd15{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round' d='M12 3.8a8.2 8.2 0 1 0 7.6 5.1'/%3E%3Cpath fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round' d='M10.4 1.6l2.4 2.2-2.4 2.2'/%3E%3Ctext x='11.8' y='15.6' font-family='Helvetica,Arial,sans-serif' font-size='7.6' font-weight='700' text-anchor='middle'%3E15%3C/text%3E%3C/svg%3E")}
.at-i-moon{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.2 14.6A8.4 8.4 0 0 1 9.4 3.8a8.6 8.6 0 1 0 10.8 10.8z'/%3E%3C/svg%3E")}
.at-i-bookmark{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round' d='M6.5 3.5h11v17l-5.5-4-5.5 4z'/%3E%3C/svg%3E")}
.at-i-headphones{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round' d='M4 15v-3a8 8 0 0 1 16 0v3'/%3E%3Crect x='3' y='13.5' width='5' height='7.5' rx='2'/%3E%3Crect x='16' y='13.5' width='5' height='7.5' rx='2'/%3E%3C/svg%3E")}
.at-i-book{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round' d='M12 6.5C10 5 7 4.5 3.5 5v13.5c3.5-.5 6.5 0 8.5 1.5 2-1.5 5-2 8.5-1.5V5C17 4.5 14 5 12 6.5zM12 6.5V20'/%3E%3C/svg%3E")}
.at-i-xmark{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round' d='M6.5 6.5l11 11M17.5 6.5l-11 11'/%3E%3C/svg%3E")}
.at-i-search{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round' cx='10.5' cy='10.5' r='6.5'/%3E%3Cpath fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round' d='M15.5 15.5L20.5 20.5'/%3E%3C/svg%3E")}
.at-i-library{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round' x='3.5' y='4' width='4.5' height='16' rx='1'/%3E%3Crect fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round' x='10' y='4' width='4.5' height='16' rx='1'/%3E%3Cpath fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round' d='M16.6 5.2l3.4-.9 3 14.9-3.4.9z'/%3E%3C/svg%3E")}
.at-i-airplay{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round' d='M6 17H4.5a1.5 1.5 0 0 1-1.5-1.5v-10A1.5 1.5 0 0 1 4.5 4h15A1.5 1.5 0 0 1 21 5.5v10a1.5 1.5 0 0 1-1.5 1.5H18'/%3E%3Cpath d='M12 13.5l5 6.5H7z'/%3E%3C/svg%3E")}
.at-i-ellipsis{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='5.5' cy='12' r='1.9'/%3E%3Ccircle cx='12' cy='12' r='1.9'/%3E%3Ccircle cx='18.5' cy='12' r='1.9'/%3E%3C/svg%3E")}
.at-btn { appearance: none; border: 0; display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2); height: var(--button-height); padding: 0 var(--space-6); border-radius: var(--radius-pill); font: 600 17px/22px var(--font-sans); cursor: pointer; white-space: nowrap; text-decoration: none; }
.at-btn--primary { background: var(--action); color: var(--on-action); }
.at-btn--secondary { background: var(--fill); color: var(--ink); }
.at-btn--fill { background: var(--fill); }
.at-icon-btn { appearance: none; border: 0; background: transparent; color: var(--ink); width: var(--tap-min); height: var(--tap-min); border-radius: var(--radius-pill); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; }
.at-icon-btn--glass { background: var(--glass); -webkit-backdrop-filter: blur(24px); backdrop-filter: blur(24px); }
.at-art { position: absolute; inset: 0; background: var(--g, var(--genre-bedtime)); }
.at-art__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.at-cover { position: relative; aspect-ratio: 2 / 3; border-radius: var(--radius-sm); overflow: hidden; background: var(--bg-raised); box-shadow: var(--shadow-cover); isolation: isolate; color: var(--ink); }
.at-cover:has(.at-art__img)::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 56%; z-index: 1; background: linear-gradient(0deg, var(--scrim) 0%, var(--scrim) 40%, rgba(10, 10, 10, 0) 100%); }
.at-cover__text { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: var(--space-3); }
.at-cover__title { margin: 0; font: 700 16px/20px var(--font-serif); text-wrap: balance; }
.at-cover--lg .at-cover__text { padding: var(--space-4); }
.at-cover--lg .at-cover__title { font-size: 24px; line-height: 28px; }
.at-cover::before { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; background: linear-gradient(90deg, rgba(0, 0, 0, 0.32) 0, rgba(255, 255, 255, 0.16) 2.5%, rgba(255, 255, 255, 0) 6%, rgba(0, 0, 0, 0.10) 7.5%, rgba(0, 0, 0, 0) 12%), linear-gradient(180deg, rgba(255, 255, 255, 0.10) 0%, rgba(255, 255, 255, 0) 35%, rgba(0, 0, 0, 0) 70%, rgba(0, 0, 0, 0.14) 100%); }
/* TonightHero: the story's cover standing on a field of its own colour */
.at-hero { position: relative; border-radius: var(--radius-lg); overflow: hidden; isolation: isolate; color: var(--ink); background: linear-gradient(180deg, color-mix(in oklab, var(--tone) 72%, var(--bg)) 0%, color-mix(in oklab, var(--tone) 34%, var(--bg)) 62%, color-mix(in oklab, var(--tone) 22%, var(--bg)) 100%); }
.at-hero__stage { display: flex; justify-content: center; padding: var(--space-8) 0 var(--space-6); }
.at-hero__stage .at-cover { box-shadow: 0 24px 48px rgba(0, 0, 0, 0.55), 0 4px 12px rgba(0, 0, 0, 0.3); }
.at-hero__body { padding: 0 var(--space-6) var(--space-6); display: flex; flex-direction: column; gap: var(--space-2); }
.at-hero__eyebrow { font: 600 13px/18px var(--font-sans); text-transform: uppercase; color: var(--ink-muted); }
.at-hero__title { margin: 0; font: 700 28px/34px var(--font-serif); text-wrap: balance; }
.at-hero__logline { margin: 0; font: 400 16px/21px var(--font-sans); color: var(--ink-muted); }
.at-hero__actions { display: flex; align-items: center; gap: var(--space-3); margin-top: var(--space-2); }
.at-hero__meta { font: 400 13px/18px var(--font-sans); color: var(--ink-muted); }
.at-tabbar { display: flex; justify-content: space-around; align-items: center; height: 64px; padding: 0 var(--space-2); border-radius: var(--radius-pill); background: var(--glass); box-shadow: var(--shadow-float), inset 0 0 0 1px var(--hairline); -webkit-backdrop-filter: blur(32px) saturate(1.6); backdrop-filter: blur(32px) saturate(1.6); }
.at-tab { display: flex; flex-direction: column; align-items: center; gap: 2px; min-width: 72px; font: 500 10px/12px var(--font-sans); color: var(--ink); }
.at-tab[aria-selected="true"] { color: var(--accent); }
/* Player: the background comes from the cover, never from a decorative gradient */
.at-scrub { display: flex; flex-direction: column; gap: var(--space-2); }
.at-scrub__track { position: relative; height: 4px; border-radius: 2px; background: var(--hairline); }
.at-scrub__track > i { position: absolute; inset: 0 auto 0 0; border-radius: 2px; background: var(--ink); }
.at-scrub__track > b { position: absolute; top: 50%; width: 12px; height: 12px; margin: -6px 0 0 -6px; border-radius: 50%; background: var(--ink); }
.at-scrub__times { display: flex; justify-content: space-between; font: 500 12px/16px var(--font-sans); color: var(--ink-muted); font-variant-numeric: tabular-nums; }
.at-transport { display: flex; align-items: center; justify-content: center; gap: var(--space-8); }
.at-player-row { display: flex; align-items: center; justify-content: space-between; }
.at-player-row .at-icon-btn { color: var(--ink-muted); }
.at-play { appearance: none; border: 0; width: var(--play-size); height: var(--play-size); border-radius: 50%; background: var(--accent); color: var(--on-accent); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; }
.at-play .at-icon { width: 32px; height: 32px; }
.at-speed { font: 600 16px/20px var(--font-sans); font-variant-numeric: tabular-nums; }
.at-caption { text-align: center; }
.at-caption__who { font: 600 13px/18px var(--font-sans); color: var(--ink-muted); }
.at-caption__line { margin: var(--space-1) 0 0; font: 400 20px/28px var(--font-serif); }
.at-screen { position: relative; width: 390px; height: 844px; overflow: hidden; background: var(--bg); color: var(--ink); font-family: var(--font-sans); }
.at-status { display: flex; justify-content: space-between; align-items: center; height: 54px; padding: 16px 32px 0 36px; font: 600 16px/20px var(--font-sans); }
.at-status i { display: inline-block; width: 26px; height: 12px; border-radius: 4px; box-shadow: inset 0 0 0 1.5px var(--ink-muted); position: relative; }
.at-status i::after { content: ""; position: absolute; inset: 2px 6px 2px 2px; border-radius: 2px; background: var(--ink); }
.at-dock { position: absolute; left: 16px; right: 16px; bottom: 24px; display: flex; flex-direction: column; gap: var(--space-2); z-index: 5; }
/* A tint taken from the cover (--tone): the player and the story page. Mixed into bg so ink keeps 4.5:1. */
.at-tinted, .at-screen.at-tinted { background: linear-gradient(180deg, color-mix(in oklab, var(--tone) 50%, var(--bg)) 0%, var(--bg) 70%); }

.hero__copy { position: relative; z-index: 2; height: 100%; max-width: 1440px; margin: 0 auto; padding: 0 var(--gutter); display: flex; flex-direction: column; pointer-events: none; }
.hero__copy > * { pointer-events: auto; }
.top { height: 80px; flex: none; display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.top__note { font: 400 13px/18px var(--sans); color: var(--ink); }
.hero__inner { margin: auto 0; width: 100%; max-width: 560px; padding-bottom: 48px; display: flex; flex-direction: column; }
.hero h1 { font: 700 60px/1.02 var(--serif); letter-spacing: -0.02em; }
.hero .lede { margin-top: 24px; max-width: 30em; }
.pick__label { font: 400 15px/20px var(--sans); color: var(--ink-muted); }
.chips { margin-top: 12px; display: flex; flex-wrap: wrap; gap: 8px; }
.hero .get { margin-top: 32px; }
.hear { margin-top: 16px; align-self: flex-start; display: inline-flex; align-items: center; gap: 10px; min-height: 44px; padding: 0; border: 0; background: none; cursor: pointer; color: var(--ink); font: 600 15px/20px var(--sans); }
.hear svg { width: 28px; height: 28px; padding: 9px; border-radius: 50%; background: var(--fill); color: var(--ink); box-sizing: border-box; flex: none; }
.hear svg + svg, .hear.is-playing svg:first-child { display: none; }
.hear.is-playing svg + svg { display: block; background: var(--accent); color: var(--on-accent); }
.hear:hover span { text-decoration: underline; text-underline-offset: 3px; }
.hear:active svg { transform: scale(.94); }
.pick { margin-top: 32px; }

/* ------------------------------------------------------------------ tagline */
.tagline { max-width: calc(var(--max) + var(--gutter) * 2); margin: 0 auto; padding: var(--section) var(--gutter) 0; }
.tagline__text { max-width: 900px; font: 700 60px/1.1 var(--serif); letter-spacing: -0.02em; text-wrap: balance; }
.tagline__lead { display: block; margin-bottom: 8px; }
.tagline .w { color: color-mix(in srgb, var(--ink) 26%, var(--bg)); transition: color .7s var(--ease-io); }
.tagline .w.on { color: var(--ink); }

/* ------------------------------------------------------------------ how it works */
.how { padding: var(--section) 0 0; }
.how h2 { max-width: 16em; font-size: 48px; }
.steps { margin-top: 48px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 48px; }
.step__art { height: 232px; display: flex; align-items: center; }
.step__n { margin-top: 32px; font: 600 15px/20px var(--sans); color: var(--ink-muted); font-variant-numeric: tabular-nums; }
.step h3 { margin-top: 4px; font: 600 20px/28px var(--sans); }
.step h3 + p { margin-top: 8px; font: 400 16px/24px var(--sans); color: var(--ink-muted); max-width: 30em; }
.step__art--chips { flex-direction: column; align-items: flex-start; justify-content: center; gap: 8px; max-width: 400px; }
.step__label { font: 600 13px/18px var(--sans); color: var(--ink-muted); }
.step__chips { display: flex; flex-wrap: wrap; gap: 8px; }
.step__chips + .step__label { margin-top: 8px; }
.notif { width: 100%; max-width: 340px; border-radius: 22px; padding: 12px 14px; background: var(--glass); -webkit-backdrop-filter: blur(20px); backdrop-filter: blur(20px); box-shadow: var(--shadow-float), 0 0 0 1px var(--page-edge); display: grid; grid-template-columns: 38px 1fr; gap: 2px 10px; }
.notif__icon { grid-row: span 2; width: 38px; height: 38px; border-radius: 9px; display: grid; place-items: center; background: #121212; color: #f4f4f2; font: 700 21px/1 var(--serif); font-style: normal; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .12); }
.notif__head { display: flex; justify-content: space-between; align-items: baseline; font: 600 15px/20px var(--sans); }
.notif__head small { font: 400 13px/18px var(--sans); color: var(--ink-muted); }
.notif__body { font: 400 15px/20px var(--sans); }
.page { position: relative; width: 100%; max-width: 340px; padding: 20px; border-radius: 16px; background: var(--bg-raised); box-shadow: 0 0 0 1px var(--page-edge); }
.page__p { font: 400 16px/25px var(--serif); color: var(--ink-faint); }
.page__p + .page__p { margin-top: 10px; }
.page__p--now { color: var(--ink); }
.page__pill { margin-top: 12px; height: 36px; padding: 0 14px 0 12px; border-radius: 999px; display: inline-flex; align-items: center; gap: 6px; background: var(--accent); color: var(--on-accent); font: 600 15px/1 var(--sans); }
.page__pill svg { width: 11px; height: 11px; }

/* ------------------------------------------------------------------ listening moment */
.listen { padding: var(--section) 0 0; }
.listen__grid { display: grid; grid-template-columns: minmax(280px, 380px) minmax(0, 1fr); grid-template-areas: "side main"; gap: 96px; align-items: start; }
.listen__side { grid-area: side; position: sticky; top: 48px; display: grid; gap: 16px; }
.listen__main { grid-area: main; }
.listen__cast { margin-top: 16px; }
.listen__cast-h { font: 600 13px/18px var(--sans); color: var(--ink-muted); }
.listen__cast .cast { margin-top: 12px; flex-direction: column; align-items: flex-start; }
.cast--inline, .listen__cover-top { display: none; }
.cover { position: relative; aspect-ratio: 2 / 3; border-radius: 8px; overflow: hidden; background: var(--tone, #2a2a2a); box-shadow: var(--shadow-cover); }
.cover img { width: 100%; height: 100%; object-fit: cover; }
.cover::after { content: ""; position: absolute; inset: 0; pointer-events: none; z-index: 3;
  background: linear-gradient(90deg, rgba(0, 0, 0, .28) 0, rgba(255, 255, 255, .06) 4%, rgba(0, 0, 0, 0) 12%),
              linear-gradient(180deg, rgba(255, 255, 255, .08), rgba(255, 255, 255, 0) 18%); }
.cover__scrim { position: absolute; inset: 45% 0 0 0; z-index: 1; background: linear-gradient(180deg, rgba(10, 10, 10, 0), var(--scrim)); }
.cover__title { position: absolute; z-index: 2; left: 10px; right: 10px; bottom: 10px; font: 700 16px/20px var(--serif); color: #f4f4f2; text-wrap: balance; }
.cover--lg .cover__title { left: 16px; right: 16px; bottom: 16px; font-size: 22px; line-height: 27px; }
.player { margin-top: 8px; display: flex; align-items: center; gap: 16px; }
.play { width: 72px; height: 72px; flex: none; border: 0; border-radius: 50%; cursor: pointer; display: grid; place-items: center; background: var(--accent); color: var(--on-accent); transition: transform .15s var(--ease), filter .2s var(--ease); }
.play:hover { filter: brightness(1.07); }
.play:active { transform: scale(.96); }
.play svg { width: 26px; height: 26px; }
.play .i-pause, .playing .play .i-play { display: none; }
.playing .play .i-pause { display: block; }
.play[aria-busy="true"] { cursor: progress; opacity: .8; }
.player__label { font: 600 17px/22px var(--sans); }
.player__story { display: none; }
.player__time { font: 400 15px/20px var(--sans); color: var(--ink-muted); font-variant-numeric: tabular-nums; }
.track { height: 4px; border-radius: 4px; background: var(--fill); overflow: hidden; }
.track b { display: block; height: 100%; width: 100%; background: var(--accent); transform: scaleX(var(--p, 0)); transform-origin: left; }
.player__hint { font: 400 13px/18px var(--sans); color: var(--ink-muted); }
.listen h2 { max-width: 14em; }
.listen .lede { margin-top: 16px; max-width: 40em; }
.cast { margin-top: 32px; display: flex; flex-wrap: wrap; gap: 8px; }
.cast li { height: 36px; padding: 0 14px; border-radius: 999px; display: inline-flex; align-items: center; gap: 6px; background: var(--fill); font: 400 15px/20px var(--sans); color: var(--ink-muted); transition: background-color .4s var(--ease-io), color .4s var(--ease-io); }
.cast li b { font-weight: 600; color: var(--ink); transition: color .4s var(--ease-io); }
.cast li.speaking { background: var(--accent); color: var(--on-accent); }
.cast li.speaking b { color: var(--on-accent); }
.passage { position: relative; margin-top: 40px; max-width: 40em; }
.passage p { font: 400 21px/34px var(--serif); color: var(--ink-muted); }
.passage p + p { margin-top: 18px; }
.passage .wd { color: color-mix(in srgb, var(--ink) 45%, var(--bg)); border-radius: 4px; transition: color .18s var(--ease-io), background-color .18s var(--ease-io), box-shadow .18s var(--ease-io); }
.passage.is-idle .wd { color: color-mix(in srgb, var(--ink) 72%, var(--bg)); }
.passage .wd.sp { color: var(--ink); }
.passage .wd.cur { color: var(--ink); background: rgba(239, 180, 110, .22); box-shadow: 0 0 0 3px rgba(239, 180, 110, .22); }
.passage .who { display: block; margin-bottom: 2px; font: 600 13px/18px var(--sans); color: var(--ink-muted); }
.passage p:first-child::first-letter { float: left; font: 700 60px/48px var(--serif); padding: 6px 3px 0 0; margin-left: -2px; color: var(--ink); }
.listen__more { margin-top: 40px; padding-top: 32px; border-top: 1px solid var(--hairline); }
.listen__more[hidden] { display: none; }
.listen__more-h { font: 600 18px/26px var(--sans); }
.listen__more .get { margin-top: 16px; }
.credit { margin-top: 32px; font: 400 13px/18px var(--sans); color: var(--ink-muted); max-width: 40em; }

/* ------------------------------------------------------------------ genres */
.genres { padding: var(--section) 0 0; overflow-x: clip; }
.genres__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 48px 32px; align-items: start; }
.genres__text { padding-right: 16px; }
.genres h2 { max-width: 15em; }
.genres__list { margin: 40px 0 0; display: grid; gap: 14px; }
.genres__list div { display: grid; grid-template-columns: 11em minmax(0, 1fr); gap: 16px; align-items: baseline; }
.genres__list dt { font: 600 15px/20px var(--sans); }
.genres__list dd { margin: 0; font: 400 15px/20px var(--sans); color: var(--ink-muted); }
.genres .lede { margin-top: 16px; max-width: 34em; }
.shelf { display: contents; }
.shelf li { min-width: 0; }
.shelf h3 { margin-top: 14px; font: 600 16px/22px var(--sans); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.shelf h3 + p { min-height: 60px; }
.shelf h3 + p { margin-top: 4px; font: 400 14px/20px var(--sans); color: var(--ink-muted); }
.shelf__note { margin-top: 40px; font: 400 13px/18px var(--sans); color: var(--ink-muted); }

/* ------------------------------------------------------------------ FAQ */
.faq { padding: var(--section) 0; border-top: 1px solid var(--hairline); }
.faq__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 64px; align-items: start; }
.faq__head { position: sticky; top: 48px; }
.faq__head .lede { margin-top: 16px; font-size: 16px; line-height: 24px; }
.faq__head .get { margin-top: 32px; }
.faq__list details { border-bottom: 1px solid var(--hairline); }
.faq__list details:first-child { border-top: 1px solid var(--hairline); }
.faq__list summary { position: relative; display: block; cursor: pointer; padding: 20px 48px 20px 0; font: 600 18px/28px var(--sans); list-style: none; border-radius: 4px; }
.faq__list summary::-webkit-details-marker { display: none; }
.faq__list summary::after { content: ""; position: absolute; right: 4px; top: 50%; width: 20px; height: 20px; margin-top: -10px; background: var(--ink-muted);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5 7.5l5 5 5-5' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5 7.5l5 5 5-5' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
  transition: transform .35s var(--ease-io); }
.faq__list details[open] summary::after { transform: rotate(180deg); }
.faq__list summary:hover { color: var(--ink); }
.faq__list summary:hover::after { background: var(--ink); }
.faq__list details > div { padding: 0 48px 24px 0; }
.faq__list details p { font: 400 16px/24px var(--sans); color: var(--ink-muted); max-width: 62ch; }
.faq__list details p a { color: var(--ink); }
.faq__list details[open] > div { animation: reveal .45s var(--ease) both; }
@keyframes reveal { from { opacity: 0; transform: translateY(-6px); } }

/* ------------------------------------------------------------------ final call to action */
.close { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr); grid-template-areas: "copy photo"; align-items: stretch; min-height: 680px; overflow: hidden; }
.close__copy { grid-area: copy; align-self: center; padding: 96px 64px 96px max(var(--gutter), calc((100vw - var(--max)) / 2)); }
.close .lede { margin-top: 16px; max-width: 26em; }
.close .get { margin-top: 32px; }
.close__frame { grid-area: photo; position: relative; overflow: hidden; margin-bottom: -1px; }
.close__photo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 62% 50%; }

/* ------------------------------------------------------------------ footer */
.foot { padding: 48px 0 64px; border-top: 1px solid var(--hairline); }
.foot__grid { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 16px 40px; align-items: baseline; }
.foot__ai { font: 400 13px/18px var(--sans); color: var(--ink-muted); }
.foot__nav { display: flex; flex-wrap: wrap; gap: 8px 24px; font: 400 13px/18px var(--sans); }
.foot__nav a { color: var(--ink-muted); }
.foot__nav a:hover { color: var(--ink); }
.foot__soon { color: var(--ink-muted); }
.foot__legal { grid-column: 1 / -1; font: 400 13px/18px var(--sans); color: var(--ink-muted); }

/* the landing page footer: the night's last line, then the name, read letter by letter */
.foot.midnight { padding: 80px 0 40px; border-top: 0; overflow: hidden; }
.foot__top { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: 48px 64px; align-items: start; }
.foot__clock { font: 400 24px/32px var(--serif); color: var(--ink); max-width: 18em; text-wrap: pretty; }
.foot__cols { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; }
.foot__h { font: 600 13px/18px var(--sans); color: var(--ink-muted); letter-spacing: 0; }
.foot__cols ul { margin-top: 12px; display: grid; gap: 8px; }
.foot__cols a, .foot__cols .foot__soon { font: 400 15px/20px var(--sans); color: var(--ink); text-decoration: none; }
.foot__cols .foot__soon { color: var(--ink-muted); }
.foot__cols a:hover { text-decoration: underline; }
.foot__mark { margin: 96px 0 0; padding: 0 12px; text-align: center; white-space: nowrap; font: 700 min(21vw, 360px) / 0.8 var(--serif); letter-spacing: -0.01em; font-kerning: normal; user-select: none; }
.foot__mark span { color: var(--ink); transition: color .8s var(--ease-io); }
.foot__mark.is-revealing span:not(.on) { color: color-mix(in srgb, var(--ink) 12%, var(--bg)); }
.foot__base { margin-top: 40px; display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px 24px; font: 400 13px/18px var(--sans); color: var(--ink-muted); }
.foot__sign { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; }
.foot__sign .wordmark { font-size: 17px; line-height: 22px; letter-spacing: 0; }

/* ------------------------------------------------------------------ section motion (JS adds the states; without JS everything is shown) */
.step__art--chips .chip { transition: background-color .3s var(--ease-io), color .3s var(--ease-io); }
.step__art--chips .chip.is-on { animation: tick .34s var(--ease-io); }
@keyframes tick { 40% { transform: scale(.95); } }

/* tonight’s reminder: the banner slides down fully formed, like an iOS banner, and settles */
.notif { position: relative; }
.js .how .notif { opacity: 0; transform: translateY(-24px); }
.js .step.is-notified .notif { animation: banner .56s var(--ease) both; }
@keyframes banner { 0% { opacity: 0; transform: translateY(-24px); } 45% { opacity: 1; } 78% { transform: translateY(2px); } 100% { opacity: 1; transform: none; } }
.js .how .page__p--now .w { color: var(--ink-faint); transition: color .25s var(--ease-io); }
.js .how .page__p--now .w.on { color: var(--ink); }
/* Listen From Here is pressed (a short anticipation, then release), its icon turns to pause, and the paragraph follows */
.js .step.is-pressed .page__pill { animation: press .42s var(--ease-io); }
@keyframes press { 0% { transform: none; } 30% { transform: scale(.93); } 100% { transform: none; } }
/* the covers come off the shelf left to right (stagger 60 ms, under 400 ms in all); each title follows its cover */
.js .shelf .cover, .js .shelf h3, .js .shelf h3 + p { transition: opacity .6s var(--ease), transform .8s var(--ease); transition-delay: calc(var(--i, 0) * 60ms); }
.js .shelf h3, .js .shelf h3 + p { transition-delay: calc(var(--i, 0) * 60ms + 120ms); }
.js .shelf:not(.is-in) .cover { opacity: 0; transform: translateY(32px); }
.js .shelf:not(.is-in) h3, .js .shelf:not(.is-in) h3 + p { opacity: 0; transform: translateY(12px); }
.close__photo { transform: scale(calc(1 + var(--settle, 0) * 0.08)); transform-origin: 70% 40%; will-change: transform; }

/* ------------------------------------------------------------------ privacy notice and 404 */
.doc__top { max-width: calc(720px + var(--gutter) * 2); }
.doc__back { font: 400 15px/20px var(--sans); color: var(--ink-muted); }
.doc { max-width: calc(720px + var(--gutter) * 2); padding-top: 48px; padding-bottom: 96px; }
.doc h1 { font: 700 48px/1.08 var(--serif); letter-spacing: -0.015em; }
.doc__meta { margin-top: 12px; font: 400 13px/18px var(--sans); color: var(--ink-muted); }
.doc .lede { margin-top: 24px; }
.doc h2 { margin-top: 48px; font: 600 20px/28px var(--sans); letter-spacing: 0; }
.doc h2 + p { margin-top: 8px; }
.doc p { font: 400 17px/26px var(--sans); }
.doc p + p { margin-top: 12px; }
.doc a { color: var(--ink); }
.btn--link { display: inline-flex; align-items: center; text-decoration: none; }
.lost { position: relative; min-height: 100svh; overflow: hidden; display: flex; }
.lost__photo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 60% 50%; }
.lost__veil { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(12, 12, 12, 0.92) 0%, rgba(12, 12, 12, 0.6) 45%, rgba(12, 12, 12, 0.1) 75%); }
.lost__copy { position: relative; z-index: 2; max-width: 1440px; display: flex; flex-direction: column; padding-top: 24px; padding-bottom: 64px; }
.lost__inner { margin: auto 0; max-width: 520px; }
.lost h1 { font: 700 60px/1.02 var(--serif); letter-spacing: -0.02em; }
.lost .lede { margin-top: 16px; }
.lost .btn { margin-top: 32px; }

/* ------------------------------------------------------------------ narrower screens */
@media (max-width: 1100px) {
  .hero h1 { font-size: 48px; }
  .listen__grid { grid-template-columns: 260px minmax(0, 1fr); gap: 56px; }
  .genres__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 860px) {
  h2, .how h2 { font-size: 32px; line-height: 38px; }
  .lede { font-size: 17px; line-height: 25px; }
  .hero { height: auto; max-height: none; display: flex; flex-direction: column; background: var(--bg); padding-bottom: 8px; }
  .hero__copy, .hero__inner { display: contents; }
  .top { order: 1; padding: 0 var(--gutter); }
  .hero h1 { order: 2; margin: 16px var(--gutter) 0; }
  .hero .lede { order: 3; margin: 16px var(--gutter) 0; }
  .hero .get { order: 4; margin: 20px var(--gutter) 0; width: auto; }
  .hear { order: 5; margin: 8px var(--gutter) 0; }
  .stage { order: 6; position: relative; inset: auto; height: 560px; flex: none; margin-top: 8px; }
  .pick { order: 7; margin: 4px var(--gutter) 0; }
  .top { height: 64px; }
  .top__note .pre { display: none; }
  .hero h1 { font-size: 36px; line-height: 40px; }
  .chips { flex-wrap: nowrap; overflow-x: auto; margin: 12px calc(var(--gutter) * -1) 0; padding: 4px var(--gutter); scrollbar-width: none; scroll-padding-inline: var(--gutter); }
  .chips::-webkit-scrollbar { display: none; }
  .chips { -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 48px), transparent); mask-image: linear-gradient(90deg, #000 calc(100% - 72px), transparent 100%); }
  .veil { background: linear-gradient(180deg, var(--bg) 0%, rgba(18, 18, 18, 0) 8%, rgba(18, 18, 18, 0) 88%, var(--bg) 100%); }

  .tagline__text { font-size: 36px; line-height: 42px; }

  .steps { grid-template-columns: 1fr; gap: 48px; margin-top: 32px; }
  .step__art { height: auto; }
  .step__n { margin-top: 24px; }

  /* text first; the player docks to the bottom of the screen while the section is in view, like a mini player */
  .listen { padding-bottom: 0; }
  .listen__grid { display: flex; flex-direction: column; align-items: stretch; gap: 0; }
  .listen__main { display: contents; }
  .listen__head { order: 1; display: grid; grid-template-columns: 88px minmax(0, 1fr); gap: 20px; align-items: center; }
  .listen__cover-top { display: block; }
  .listen__cover-top .cover__title, .listen__cover-top .cover__scrim { display: none; }
  .listen .lede { order: 2; }
  .cast--inline { order: 3; display: flex; margin-top: 24px; }
  .listen__cast { display: none; }
  .passage { order: 4; margin-top: 32px; }
  .credit { order: 5; }
  .listen__side {
    order: 6; position: sticky; z-index: 5; bottom: 0;
    margin: 32px calc(var(--gutter) * -1) 0; padding: 12px 16px calc(12px + env(safe-area-inset-bottom, 0px)); border-radius: 20px 20px 0 0;
    display: grid; grid-template-columns: 44px minmax(0, 1fr) auto; grid-template-areas: "cover text play" "track track track"; align-items: center; gap: 8px 12px;
    background: var(--bg-raised); box-shadow: 0 -8px 24px rgba(0, 0, 0, .45), inset 0 1px 0 var(--hairline);
    transition: opacity .3s var(--ease), transform .4s var(--ease), visibility 0s;
  }
  /* the mini player rises in once the story text is on screen, and steps away above it, so it never covers the heading */
  /* before the text reaches the screen the player takes no space; when it arrives it rises in */
  .listen.is-player-away .listen__side { display: none; }
  .listen__side { animation: dock-in .4s var(--ease) both; }
  @keyframes dock-in { from { opacity: 0; transform: translateY(24px); } }
  .listen__side .cover { grid-area: cover; border-radius: 4px; box-shadow: none; }
  .listen__side .cover__title, .listen__side .cover__scrim, .player__hint, .player__label { display: none; }
  .player { display: contents; }
  .player__text { grid-area: text; min-width: 0; }
  .player__story { display: block; font: 600 15px/20px var(--sans); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .player__time { font-size: 13px; line-height: 18px; }
  .play { grid-area: play; width: 48px; height: 48px; }
  .play svg { width: 20px; height: 20px; }
  .track { grid-area: track; height: 3px; margin: 0 4px; }
  .passage p { font-size: 18px; line-height: 28px; }
  .listen h2 { font-size: 28px; line-height: 33px; }

  .genres__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px 16px; }
  .genres__text { display: block; grid-column: 1 / -1; padding: 0; }
  .genres .lede { margin-bottom: 0; }
  /* the seventh story is a wide card: its cover beside its words */
  .shelf li:last-child:nth-child(7) { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 16px; align-items: end; }
  .shelf li:last-child:nth-child(7) .cover { grid-row: span 2; }
  .shelf li:last-child:nth-child(7) h3 { margin-top: 0; align-self: end; }
  .shelf li:last-child:nth-child(7) h3 + p { min-height: 0; align-self: start; }



  .faq__grid { grid-template-columns: minmax(0, 1fr); gap: 32px; }
  .faq__head { position: static; }
  .faq__list summary { font-size: 17px; line-height: 24px; padding: 18px 40px 18px 0; }
  .faq__list details > div { padding-right: 0; }

  .close { display: flex; flex-direction: column; min-height: 0; }
  .close__copy { order: 1; align-self: stretch; padding: 0 var(--gutter) 40px; }
  .close .get { max-width: none; }
  .close__frame { order: 2; height: 360px; }

  .foot__grid { grid-template-columns: 1fr; }
  .foot.midnight { padding-top: 64px; }
  .foot__top { grid-template-columns: 1fr; gap: 40px; }
  .foot__clock { font-size: 20px; line-height: 28px; }
  .foot__cols { grid-template-columns: 1fr 1fr; row-gap: 32px; }
  .foot__cols > div:first-child { grid-row: span 2; }
  .foot__mark { margin-top: 64px; }
  .foot__base { flex-direction: column; }
  .doc h1 { font-size: 36px; line-height: 40px; }
  .lost h1 { font-size: 40px; line-height: 44px; }
  .lost__veil { background: linear-gradient(0deg, rgba(12, 12, 12, 0.94) 0%, rgba(12, 12, 12, 0.7) 50%, rgba(12, 12, 12, 0.3) 100%); }
  .lost__inner { margin: auto 0 0; }
}
@media (max-width: 380px) {
  .get__form { flex-direction: column; border-radius: 24px; }
  .get__form .btn { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; }
  .at-art .at-art__img, .ds-screen, .tagline .w, .passage .wd, .cast li { transition-duration: .2s !important; }
  .listen__side { animation: none; }
  .js .how .notif, .js .shelf .cover, .js .shelf h3, .js .shelf h3 + p, .chip--check svg, .chip--check .chip__t { transform: none !important; }
  .js .step.is-notified .notif, .js .step.is-pressed .page__pill, .step__art--chips .chip.is-on { animation: none !important; }
  .js .how .notif, .js .shelf .cover, .js .shelf h3, .js .shelf h3 + p { transition: opacity .3s linear !important; }
  .js .step.is-notified .notif { opacity: 1; }
  button.chip:active, .btn:active, .play:active { transform: none; }
}
