/* Site styles, shared by every page. */
html { scroll-behavior: smooth; }
/* Doom-green base for every page that doesn't paint its own backdrop. */
body { background: #040d08; }
[hidden] { display: none !important; }
.view { animation: fade .35s ease both; }
@keyframes fade { from { opacity: 0; transform: translateY(12px); } }
.rise { animation: rise .45s ease both; }
@keyframes rise { from { opacity: 0; transform: translateY(18px); } }
/* The page scrolls with src/scrollbar.js's glowing line instead of the native bar. */
html { scrollbar-width: none; }
html::-webkit-scrollbar { display: none; }
::-webkit-scrollbar { width: 10px; }
::-webkit-scrollbar-track { background: #040d08; }
::-webkit-scrollbar-thumb { background: #16301f; border-radius: 0; }
::-webkit-scrollbar-thumb:hover { background: #23503a; }
.scrollbar { position: fixed; top: 0; right: 0; bottom: 0; z-index: 60; width: 14px; cursor: pointer; touch-action: none; }
.scrollbar::before, .scrollbar i { content: ""; position: absolute; top: 0; right: 0; bottom: 0; width: 3px; transition: width .15s; }
.scrollbar::before { background: color-mix(in srgb, var(--bar, #45e07c) 14%, transparent); }
.scrollbar i { background: var(--bar, #45e07c); box-shadow: 0 0 14px var(--bar, #45e07c); transform-origin: top; transform: scaleY(0); }
.scrollbar:hover::before, .scrollbar:hover i, .scrollbar.is-drag::before, .scrollbar.is-drag i { width: 6px; }
@media (pointer: coarse) { .scrollbar { pointer-events: none; } }
/* ---- comic FX: only active while a timeline view is mounted ---- */

.fx-on .panel { opacity: 0; }
.fx-on .panel.in { animation: panelIn .55s cubic-bezier(.22,.9,.28,1.25) both; }
@keyframes panelIn {
  from { opacity: 0; transform: translateY(28px) scale(.94) rotate(var(--tilt, -1.6deg)); }
  to   { opacity: 1; transform: none; }
}

.burst {
  position: absolute; left: 50%; top: 50%; z-index: 5;
  padding: 15px 19px; white-space: nowrap; pointer-events: none;
  font-family: 'Space Grotesk', sans-serif; font-weight: 700; font-size: 13px;
  color: #0b0f1a; background: var(--accent2, #f4a13a);
  clip-path: polygon(50% 0%, 61% 20%, 82% 12%, 79% 35%, 100% 45%, 80% 57%, 92% 78%, 68% 74%, 62% 97%, 47% 80%, 27% 92%, 28% 68%, 5% 66%, 20% 48%, 3% 31%, 26% 28%, 22% 6%, 43% 17%);
  animation: burstPop .9s ease-out forwards;
}
@keyframes burstPop {
  0%   { transform: translate(-50%,-50%) scale(0)    rotate(-25deg); opacity: 0; }
  35%  { transform: translate(-50%,-50%) scale(1.15) rotate(6deg);   opacity: 1; }
  60%  { transform: translate(-50%,-50%) scale(1)    rotate(-3deg);  opacity: 1; }
  100% { transform: translate(-50%,-50%) scale(1.06) rotate(0deg);   opacity: 0; }
}

/* ---- timeline card poster + inline trailer drawer ---- */
/* Timeline card: a true 2:3 poster on the rail side (right of the text on
   left-hand cards), text beside it, and the actions in a bar across the bottom. */
.tl-card { display: grid; grid-template-columns: 104px minmax(0, 1fr); grid-template-areas: "poster body" "foot foot"; }
@media (min-width: 640px) { .tl-card { grid-template-columns: 120px minmax(0, 1fr); } }
@media (min-width: 768px) { .tl-card { grid-template-columns: 100px minmax(0, 1fr); } .panel[data-side="l"] .tl-card { grid-template-columns: minmax(0, 1fr) 100px; grid-template-areas: "body poster" "foot foot"; } }
.tl-card:not(:has(.tl-poster)) { grid-template-columns: minmax(0, 1fr); grid-template-areas: "body" "foot"; }
.tl-poster { grid-area: poster; position: relative; align-self: start; aspect-ratio: 2 / 3; overflow: hidden; }
.tl-poster img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.tl-body { grid-area: body; display: flex; flex-direction: column; padding: 14px 16px; }
@media (min-width: 640px) { .tl-body { padding: 16px 18px; } }
.tl-foot { grid-area: foot; display: flex; align-items: center; justify-content: space-between; gap: 10px 12px; padding: 10px 16px; border-top: 1px solid color-mix(in srgb, var(--ink, #fff) 10%, transparent); }
@media (max-width: 479px) { .tl-foot { padding: 10px 12px; } .tl-foot .list-btn span { display: none; } .tl-foot .list-btn { padding: 6px; } .tl-foot .xp-cue { display: none; } }
.tl-kick { font-size: 11px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: color-mix(in srgb, var(--ink, #fff) 45%, transparent); }
.tl-card .watch-toggle { border-color: color-mix(in srgb, var(--ink, #fff) 18%, transparent); }
/* The open trailer is a full-width stage spanning both sides of the rail. Its
   title card becomes a tab on top of it: same fill, shared border, no seam. */
.xp {
  position: relative; z-index: 1; padding: 14px; border-radius: 0; text-align: left;
  background: color-mix(in srgb, var(--ink, #fff) 5%, var(--bg, #0b0f1a));
  border: 1px solid var(--spot, #fff);
  border-top-left-radius: 0; border-top-right-radius: 0;
  box-shadow: 0 30px 80px -30px color-mix(in srgb, var(--spot, #fff) 45%, transparent);
  animation: fade .25s ease both;
}
@media (min-width: 768px) {
  .panel[data-side="l"] .xp { border-top-right-radius: 20px; }
  .panel[data-side="r"] .xp { border-top-left-radius: 20px; }
}
.panel { scroll-margin-top: 16px; }
.tl-rail > li + li { margin-top: 14px; }
.mal-badge { display: inline-flex; align-items: center; padding: 2px 6px; border-radius: 6px; font-size: 11px; font-weight: 600; color: #8fb3ff; background: rgba(46,81,162,.25); }
.mal-badge:hover { background: rgba(46,81,162,.45); }
.xp-media { position: relative; aspect-ratio: 16 / 9; overflow: hidden; border-radius: 0; background: #000; }
.xp-media img, .preview-frame { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; display: block; object-fit: cover; }
.xp-info { display: grid; gap: 14px 32px; padding: 20px 10px 8px; }
@media (min-width: 768px) { .xp-info { grid-template-columns: minmax(0, 1fr) minmax(0, 1.8fr); align-items: start; } }
.xp-kicker { font-size: 11px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--spot, #fff); }
.xp-title { margin-top: 6px; font-size: 24px; font-weight: 700; line-height: 1.15; color: var(--ink, #fff); }
.xp-summary { font-size: 15px; line-height: 1.7; color: color-mix(in srgb, var(--ink, #fff) 82%, transparent); }
@media (min-width: 768px) {
  .xp-summary { padding-left: 32px; border-left: 1px solid color-mix(in srgb, var(--ink, #fff) 14%, transparent); }
}
.xp-cue-close, .is-open .xp-cue-play { display: none; }
.is-open .xp-cue-close { display: inline; }
.issue-card.is-open, .issue-card.is-open:hover {
  position: relative; z-index: 2; margin-bottom: -1px; cursor: default; opacity: 1;
  background: color-mix(in srgb, var(--ink, #fff) 5%, var(--bg, #0b0f1a));
  border-color: var(--spot, #fff); border-bottom-color: transparent;
  border-bottom-left-radius: 0; border-bottom-right-radius: 0;
}
.preview-skeleton {
  position: absolute; inset: 0;
  background: linear-gradient(100deg, #08180f 30%, #12301f 50%, #08180f 70%);
  background-size: 200% 100%; animation: shimmer 1.2s linear infinite;
}
@keyframes shimmer { to { background-position: -200% 0; } }
.preview-play {
  position: absolute; inset: 0; display: grid; place-items: center; cursor: pointer;
  background: radial-gradient(circle at center, rgba(0,0,0,.15), rgba(0,0,0,.45)); border: 0;
}
.preview-play span {
  display: grid; place-items: center; height: 54px; width: 54px; padding-left: 4px;
  border-radius: 50%; font-size: 20px; color: #0b0f1a;
  background: var(--accent2, #f4a13a); box-shadow: 0 8px 24px -6px rgba(0,0,0,.6);
  transition: transform .15s ease;
}
.preview-play:hover span { transform: scale(1.08); }
/* ---- Kirby Krackle: drifting cosmic energy ---- */
@keyframes krackleFloat {
  from { transform: translate(0, 0) scale(.9); opacity: .2; }
  to   { transform: translate(var(--dx, 12px), var(--dy, -14px)) scale(1.14); opacity: .6; }
}

/* ---- pop-culture emoji stickers (behind content) ---- */
@keyframes stickerDrift {
  from { transform: translate(0, 0) rotate(var(--rot, 0deg)); }
  to   { transform: translate(var(--dx, 14px), var(--dy, -18px)) rotate(calc(var(--rot, 0deg) + 7deg)); }
}

/* ---- comic-book headline ---- */
.comic-headline {
  color: #fff;
  -webkit-text-stroke: 1.5px #0b0f1a;
  text-shadow:
    3px 3px 0 var(--accent, #e2333f),
    6px 6px 0 rgba(0,0,0,.65);
  animation: headlinePop .55s cubic-bezier(.22,.9,.28,1.35) both;
}
@keyframes headlinePop {
  0%   { opacity: 0; transform: translateY(10px) scale(.9) rotate(-2.5deg); }
  70%  { transform: translateY(0) scale(1.04) rotate(.6deg); }
  100% { opacity: 1; transform: none; }
}

/* ---- comic-panel cards ---- */

/* ---- watched toggle + watched-card state ---- */
.watch-toggle {
  border-color: color-mix(in srgb, var(--ink,#fff) 16%, transparent);
  color: color-mix(in srgb, var(--ink,#cbd5e1) 60%, transparent);
  background: color-mix(in srgb, var(--ink,#fff) 3%, transparent);
}
.watch-toggle:hover { color: var(--ink,#fff); border-color: color-mix(in srgb, var(--ink,#fff) 32%, transparent); }
.watch-tick {
  display: grid; place-items: center; height: 15px; width: 15px;
  border-radius: 0; border: 1.5px solid currentColor;
}
.watch-tick svg { width: 10px; height: 10px; opacity: 0; transition: opacity .15s ease; }
.watch-toggle[aria-pressed="true"] {
  color: var(--bg, #0b0f1a);
  background: var(--spot, var(--accent2, #f4a13a));
  border-color: var(--spot, var(--accent2, #f4a13a));
}
.watch-toggle[aria-pressed="true"] .watch-tick { border-color: rgba(11,15,26,.5); }
.watch-toggle[aria-pressed="true"] .watch-tick svg { opacity: 1; }
/* A watched panel recedes a little and picks up an accent edge. */

/* ---- comic-panel number chip ---- */

/* ---- timeline node: glow + impact ripple on reveal ---- */
.node { box-shadow: 0 0 10px var(--accent2, #f4a13a); }
.node::after {
  content: ""; position: absolute; inset: -6px; border-radius: 50%;
  border: 2px solid var(--accent2, #f4a13a); opacity: 0;
}
.fx-on .panel.in .node::after { animation: nodePing .7s ease-out both; }
@keyframes nodePing {
  0%   { opacity: .9; transform: scale(.4); }
  100% { opacity: 0; transform: scale(2.6); }
}

/* ---- Disney+ CTA link ---- */

/* ---- galaxy FX: jet-black starfield for the Star Wars timeline ---- */
/* z-index:-1 (not 0): the .view fade animation leaves the timeline <section>
   with a computed identity transform, which makes it a stacking context —
   so the starfield must sit *behind* it. Its own #000 fill hides the body. */
.galaxy-canvas {
  position: fixed; inset: 0; z-index: -1; display: block;
  width: 100%; height: 100%; pointer-events: none; background: #000;
}
/* Star Wars headline: no comic ink outline — a warm crawl-style glow. */
.galaxy-headline {
  color: var(--accent, #f5c518);
  letter-spacing: .01em;
  text-shadow:
    0 0 20px color-mix(in srgb, var(--accent, #f5c518) 55%, transparent),
    0 2px 26px rgba(0,0,0,.7);
  animation: headlineGlow .6s ease both;
}
@keyframes headlineGlow {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: none; }
}
/* Rows drift up as they enter — a calmer reveal than the comic panel snap. */
.galaxy-on .panel { opacity: 0; }
.galaxy-on .panel.in { animation: galaxyPanelIn .6s cubic-bezier(.22,.9,.28,1) both; }
@keyframes galaxyPanelIn {
  from { opacity: 0; transform: translateY(22px); }
  to   { opacity: 1; transform: none; }
}
.galaxy-on .panel.in .node::after { animation: nodePing .8s ease-out both; }

/* ---- embers FX: dusky drifting motes for Middle-earth ---- */
.embers-canvas {
  position: fixed; inset: 0; z-index: -1; display: block;
  width: 100%; height: 100%; pointer-events: none; background: #0a0806;
}
/* Middle-earth headline: warm gold with a firelit glow (the film-logo look). */
.embers-headline {
  color: var(--accent, #c9a24b);
  letter-spacing: .01em;
  text-shadow:
    0 0 22px color-mix(in srgb, var(--accent, #c9a24b) 60%, transparent),
    0 2px 26px rgba(0,0,0,.7);
  animation: headlineGlow .6s ease both;
}
.embers-on .panel { opacity: 0; }
.embers-on .panel.in { animation: galaxyPanelIn .6s cubic-bezier(.22,.9,.28,1) both; }
.embers-on .panel.in .node::after { animation: nodePing .8s ease-out both; }

/* ---- magic FX: the Great Hall at night for the Wizarding World ---- */
.magic-canvas {
  position: fixed; inset: 0; z-index: -1; display: block;
  width: 100%; height: 100%; pointer-events: none; background: #060814;
}
/* Wizarding World headline: Gryffindor gold, lit like candlelight — it flares
   in on load, then breathes with a slow flame flicker. */
.magic-headline {
  color: var(--accent2, #d3a625);
  letter-spacing: .01em;
  text-shadow:
    0 0 22px color-mix(in srgb, var(--accent2, #d3a625) 62%, transparent),
    0 0 46px color-mix(in srgb, var(--accent2, #d3a625) 30%, transparent),
    0 2px 26px rgba(0,0,0,.7);
  animation: headlineGlow .6s ease both, candleFlicker 5.5s ease-in-out .6s infinite;
}
@keyframes candleFlicker {
  0%, 100% { opacity: 1;   text-shadow: 0 0 22px color-mix(in srgb, var(--accent2, #d3a625) 62%, transparent), 0 0 46px color-mix(in srgb, var(--accent2, #d3a625) 30%, transparent), 0 2px 26px rgba(0,0,0,.7); }
  42%      { opacity: .93; text-shadow: 0 0 18px color-mix(in srgb, var(--accent2, #d3a625) 52%, transparent), 0 0 34px color-mix(in srgb, var(--accent2, #d3a625) 22%, transparent), 0 2px 26px rgba(0,0,0,.7); }
  70%      { opacity: 1;   text-shadow: 0 0 26px color-mix(in srgb, var(--accent2, #d3a625) 70%, transparent), 0 0 54px color-mix(in srgb, var(--accent2, #d3a625) 36%, transparent), 0 2px 26px rgba(0,0,0,.7); }
}
/* Timeline nodes on this fandom glow like little candle flames. */
.magic-on .node {
  box-shadow: 0 0 12px color-mix(in srgb, var(--accent2, #d3a625) 85%, transparent), 0 0 5px rgba(255,244,204,.9);
}
.magic-on .panel { opacity: 0; }
.magic-on .panel.in { animation: galaxyPanelIn .6s cubic-bezier(.22,.9,.28,1) both; }
.magic-on .panel.in .node::after { animation: nodePing .8s ease-out both; }

/* ---- cerebro FX: the Cerebro chamber for the X-Men ---- */
.cerebro-canvas {
  position: fixed; inset: 0; z-index: -1; display: block;
  width: 100%; height: 100%; pointer-events: none; background: #02060f;
}
/* X-Men headline: gold, lit from behind by Cerebro blue; a scan line passes now and then. */
.cerebro-headline {
  color: var(--spot, #f5c518);
  letter-spacing: .01em;
  text-shadow: 0 0 26px rgba(37,99,235,.8), 0 0 60px rgba(37,99,235,.45), 0 2px 24px rgba(0,0,0,.7);
  animation: headlineGlow .6s ease both, cerebroScan 7s ease-in-out .6s infinite;
}
@keyframes cerebroScan {
  0%, 86%, 100% { filter: none; }
  90% { filter: brightness(1.35) drop-shadow(0 0 10px rgba(140,180,255,.6)); }
}
.cerebro-on .node { box-shadow: 0 0 12px rgba(59,130,246,.9), 0 0 4px rgba(230,240,255,.9); }
.cerebro-on .panel { opacity: 0; }
.cerebro-on .panel.in { animation: galaxyPanelIn .6s cubic-bezier(.22,.9,.28,1) both; }
.cerebro-on .panel.in .node::after { animation: nodePing .8s ease-out both; }

/* ---- bridges: a crossover line from a card's rail node to another fandom ---- */
.tl-bridges { display: flex; flex-direction: column; gap: 10px; margin-top: 10px; }
.tl-bridge { --gap: 1rem; display: flex; align-items: center; color: var(--ink, #fff); }
.tl-bridge-line {
  position: relative; flex: 0 0 28px; height: 2px; margin-left: calc(var(--gap) * -1);
  background: linear-gradient(90deg, color-mix(in srgb, var(--spot) 70%, transparent), var(--to));
  opacity: .7; transition: opacity .2s ease;
}
/* the light that travels across, now and then */
.tl-bridge-line::after {
  content: ""; position: absolute; top: -1px; left: 0; width: 34px; height: 3px; border-radius: 0;
  background: linear-gradient(90deg, transparent, #fff, transparent); opacity: 0;
  animation: bridgeRun 4.5s cubic-bezier(.5,0,.3,1) infinite;
}
@keyframes bridgeRun { 0% { left: -34px; opacity: 0; } 10% { opacity: .9; } 32% { left: 100%; opacity: 0; } 100% { left: 100%; opacity: 0; } }
.tl-bridge-pill {
  display: flex; align-items: center; gap: 12px; min-width: 0; max-width: 320px; padding: 9px 12px 9px 14px;
  border: 1px solid color-mix(in srgb, var(--to) 45%, transparent); border-left: 2px solid var(--to); border-radius: 0;
  background: color-mix(in srgb, var(--to) 9%, rgba(6,9,16,.78)); backdrop-filter: blur(6px);
  transition: border-color .2s ease, transform .2s ease;
}
.tl-bridge-txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.tl-bridge-k { display: flex; align-items: center; gap: 8px; font-size: 10px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--to); }
.tl-bridge-k { white-space: nowrap; }
.tl-bridge-via { font-style: normal; font-size: 12px; font-weight: 600; color: var(--to); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tl-bridge-t { font-size: 14px; font-weight: 600; line-height: 1.25; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tl-bridge .tl-no { margin-left: auto; color: var(--to); }
.tl-bridge .ico-chev { width: 14px; height: 14px; flex: none; opacity: .7; transition: transform .2s ease; }
.tl-bridge:hover .tl-bridge-line { opacity: 1; }
.tl-bridge:hover .tl-bridge-pill { border-color: var(--to); transform: translateY(-1px); }
.tl-bridge:hover .ico-chev { transform: translateX(3px); opacity: 1; }
.tl-bridge:focus-visible { outline: none; }
.tl-bridge:focus-visible .tl-bridge-pill { outline: 2px solid var(--to); outline-offset: 2px; }
@media (min-width: 768px) {
  .tl-bridges { margin-top: 0; }
  .tl-bridge { --gap: 2rem; }
  .tl-bridge-line { flex: 1 1 auto; min-width: 40px; }
  .tl-bridges.is-l .tl-bridge { flex-direction: row-reverse; }
  /* Several crossovers on one title: one line from the dot to a bar, the bar joins each pill. */
  .tl-bridges:has(> .tl-bridge + .tl-bridge) { position: relative; gap: 0; }
  .tl-bridges:has(> .tl-bridge + .tl-bridge) .tl-bridge { position: relative; padding-block: 5px; }
  .tl-bridges:has(> .tl-bridge + .tl-bridge) .tl-bridge-line { flex: 0 0 24px; min-width: 0; margin: 0; }
  .tl-bridges:has(> .tl-bridge + .tl-bridge)::before { content: ""; position: absolute; top: 50%; left: -2rem; width: 2rem; height: 2px; margin-top: -1px; background: var(--spot, #cbd5e1); opacity: .55; }
  .tl-bridges:has(> .tl-bridge + .tl-bridge) .tl-bridge::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 2px; background: var(--spot, #cbd5e1); opacity: .55; }
  .tl-bridges:has(> .tl-bridge + .tl-bridge) .tl-bridge:first-child::before { top: 50%; }
  .tl-bridges:has(> .tl-bridge + .tl-bridge) .tl-bridge:last-child::before { bottom: 50%; }
  .tl-bridges.is-l:has(> .tl-bridge + .tl-bridge)::before { left: auto; right: -2rem; }
  .tl-bridges.is-l:has(> .tl-bridge + .tl-bridge) .tl-bridge::before { left: auto; right: 0; }
  .tl-bridges.is-l .tl-bridge-line { margin-left: 0; margin-right: calc(var(--gap) * -1); background: linear-gradient(270deg, color-mix(in srgb, var(--spot) 70%, transparent), var(--to)); }
  .tl-bridges.is-l .tl-bridge-line::after { animation-name: bridgeRunL; }
}
@keyframes bridgeRunL { 0% { left: 100%; opacity: 0; } 10% { opacity: .9; } 32% { left: -34px; opacity: 0; } 100% { left: -34px; opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .tl-bridge-line::after { animation: none; } }

/* ---- fxkit backdrops (src/fxkit.js): shared canvas + row reveal ---- */
.fx-canvas { position: fixed; inset: 0; z-index: -1; display: block; width: 100%; height: 100%; pointer-events: none; }
.fx-on .panel { opacity: 0; }
.fx-on .panel.in { animation: galaxyPanelIn .6s cubic-bezier(.22,.9,.28,1) both; }
.fx-on .panel.in .node::after { animation: nodePing .8s ease-out both; }
/* shared look for scenes without their own: the fandom spot color as the glow */
.fx-headline { color: var(--ink, #fff); text-shadow: 0 0 24px color-mix(in srgb, var(--spot, #fff) 50%, transparent), 0 0 60px color-mix(in srgb, var(--spot, #fff) 22%, transparent), 0 2px 24px rgba(0,0,0,.75); animation: headlineGlow .6s ease both; }
.fx-on .node { box-shadow: 0 0 12px color-mix(in srgb, var(--spot, #fff) 85%, transparent), 0 0 4px rgba(255,255,255,.85); }
@media (prefers-reduced-motion: reduce) { .fx-on .panel { opacity: 1; } .fx-on .panel.in { animation: none; } }
/* DC: cold searchlight white with a cyan edge */
.gotham-headline { color: #eef4ff; text-shadow: 0 0 24px rgba(56,189,248,.45), 0 0 60px rgba(56,189,248,.2), 0 2px 24px rgba(0,0,0,.7); animation: headlineGlow .6s ease both; }
.gotham-on .node { box-shadow: 0 0 12px rgba(56,189,248,.8), 0 0 4px rgba(230,240,255,.9); }
/* Spider-Man: suit red, edged in blue */
.webs-headline { color: #fff1ef; text-shadow: 3px 3px 0 rgba(47,111,224,.65), 0 0 30px rgba(214,40,57,.45), 0 2px 24px rgba(0,0,0,.7); animation: headlineGlow .6s ease both; }
.webs-on .node { box-shadow: 0 0 12px rgba(255,59,74,.8), 0 0 4px rgba(255,240,240,.9); }
/* The Matrix: phosphor green on black */
.rain-headline { color: #c8ffd6; font-family: ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace; letter-spacing: .02em; text-shadow: 0 0 18px rgba(0,255,65,.7), 0 0 44px rgba(0,255,65,.3); animation: headlineGlow .6s ease both; }
.rain-on .node { box-shadow: 0 0 12px rgba(0,255,65,.85), 0 0 4px rgba(220,255,230,.9); }
/* Star Trek: command gold under starlight */
.warp-headline { color: #ffe3a3; letter-spacing: .04em; text-shadow: 0 0 22px rgba(242,177,52,.45), 0 2px 24px rgba(0,0,0,.7); animation: headlineGlow .6s ease both; }
.warp-on .node { box-shadow: 0 0 12px rgba(74,163,223,.85), 0 0 4px rgba(230,240,255,.9); }
/* Jurassic: amber, like the mosquito */
.jungle-headline { color: #ffd98a; text-shadow: 0 0 26px rgba(226,163,58,.45), 0 2px 24px rgba(0,0,0,.8); animation: headlineGlow .6s ease both; }
.jungle-on .node { box-shadow: 0 0 12px rgba(226,163,58,.8), 0 0 4px rgba(255,240,200,.9); }
/* Fast & Furious: hot exhaust orange */
.trails-headline { color: #fff3ea; font-style: italic; text-shadow: 0 0 24px rgba(255,90,31,.55), 4px 0 0 rgba(34,211,238,.35), 0 2px 24px rgba(0,0,0,.7); animation: headlineGlow .6s ease both; }
.trails-on .node { box-shadow: 0 0 12px rgba(255,90,31,.85), 0 0 4px rgba(255,240,230,.9); }
/* Mission: Impossible: the fuse glow */
.fuse-headline { color: #fff1e4; text-shadow: 0 0 22px rgba(244,162,97,.5), 0 2px 24px rgba(0,0,0,.7); animation: headlineGlow .6s ease both; }
.fuse-on .node { box-shadow: 0 0 12px rgba(244,162,97,.85), 0 0 4px rgba(255,245,230,.9); }
/* Bourne: cold steel, red on target */
.surveil-headline { color: #e6edf5; letter-spacing: .03em; text-shadow: 0 0 18px rgba(120,180,230,.3), 0 2px 24px rgba(0,0,0,.7); animation: headlineGlow .6s ease both; }
.surveil-on .node { box-shadow: 0 0 12px rgba(239,68,68,.8), 0 0 4px rgba(255,230,230,.9); }
/* 007: gold, in the dark of the barrel */
.barrel-headline { color: #f3e2a6; letter-spacing: .03em; text-shadow: 0 0 22px rgba(201,162,39,.4), 0 2px 24px rgba(0,0,0,.8); animation: headlineGlow .6s ease both; }
.barrel-on .node { box-shadow: 0 0 12px rgba(201,162,39,.85), 0 0 4px rgba(255,248,225,.9); }

/* ---- family row: sibling fandoms under the header ---- */
.fam { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 16px; }
.fam-k { font-size: 11px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: color-mix(in srgb, var(--ink, #fff) 55%, transparent); margin-right: 4px; }
.fam-card { position: relative; display: inline-flex; flex-direction: column; justify-content: flex-end; width: 150px; height: 64px; padding: 8px 10px; border-radius: 0; overflow: hidden; isolation: isolate; border: 1px solid color-mix(in srgb, var(--fs) 45%, transparent); background: #0b0d12; transition: transform .2s ease, border-color .2s ease; }
.fam-art { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; opacity: .55; transition: opacity .2s ease, transform .3s ease; }
.fam-card::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(to top, rgba(0,0,0,.85), rgba(0,0,0,.1)); }
.fam-card b { font-size: 14px; line-height: 1.1; color: #fff; }
.fam-card small { font-size: 11px; color: color-mix(in srgb, var(--fs) 80%, #fff); }
.fam-card:hover { transform: translateY(-2px); border-color: var(--fs); }
.fam-card:hover .fam-art { opacity: .8; transform: scale(1.05); }

/* ---- a parallel timeline (another continuity) after the main rail ---- */
.tl-branch { display: flex; flex-direction: column; align-items: center; gap: 4px; margin-top: 56px; text-align: center; }
.tl-branch::before { content: ""; width: 1px; height: 36px; margin-bottom: 10px; background: linear-gradient(transparent, var(--spot, currentColor)); opacity: .6; }
.tl-branch span { font-size: 11px; font-weight: 600; letter-spacing: .22em; text-transform: uppercase; }
.tl-branch h2 { font-size: clamp(22px, 3vw, 30px); font-weight: 700; line-height: 1.15; }

/* ---- global polish: crisper type + sharper edges ---- */
body {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
/* Tighter, more deliberate tracking on the display face. */
.font-display { letter-spacing: -0.021em; }
/* Anton is tall and condensed — a hair of tracking keeps the hero from
   reading as cramped, and a soft depth shadow gives it weight without a gradient. */
.font-hero { letter-spacing: .012em; text-shadow: 0 2px 30px rgba(0,0,0,.55); }

/* ---- header nav button (All fandoms / back to timeline) ---- */
.nav-btn {
  display: inline-flex; align-items: center; gap: 8px; height: 40px; padding: 0 14px;
  border-radius: 0; white-space: nowrap;
  font-family: 'Space Grotesk', sans-serif; font-weight: 700; font-size: 12px; letter-spacing: .12em; text-transform: uppercase;
  color: var(--ink, #e2e8f0); background: rgba(0,0,0,.5);
  border: 1px solid color-mix(in srgb, var(--ink, #fff) 30%, transparent);
  transition: color .15s ease, background-color .15s ease, border-color .15s ease;
}
.nav-btn svg { width: 14px; height: 14px; flex: none; }
/* hover inverts, like a lit marquee letter: solid ink, dark text */
.nav-btn:hover { color: #0b0b0b; background: var(--ink, #e2e8f0); border-color: var(--ink, #e2e8f0); }
.nav-btn:focus-visible { outline: 2px solid var(--ink, #e2e8f0); outline-offset: 3px; }
@media (max-width: 639px) {
  .nav-btn { height: 44px; min-width: 44px; justify-content: center; padding: 0 10px; gap: 6px; font-size: 11px; letter-spacing: .05em; }
  .nav-group { gap: 6px; }
  /* wordmark + three buttons only just fit a 375px phone on a 16px gutter */
  header:has(> .nav-group) { gap: 8px; padding-left: 16px; padding-right: 16px; }
}
/* three buttons (fandom pages) don't fit beside the full wordmark: keep just the badge */
@media (max-width: 399px) { header:has(> .nav-group > :nth-child(3)) > a > .font-display { display: none; } }

/* ---- landing hero ---- */
/* The poster wall is busy; a soft dark pool behind the copy keeps it legible. */
/* Title, line and button share one width: the title is sized to sit on one line exactly as wide as the button ("Order to Watch" is ~6.3em wide). */
.hero-copy { position: relative; width: min(100%, 490px); container-type: inline-size; text-align: center; }
.hero-title { white-space: nowrap; font-size: calc(100cqi / 6.35); }
.hero-copy::before {
  content: ""; position: absolute; inset: -60px -80px; z-index: -1; pointer-events: none;
  background: radial-gradient(closest-side, rgba(4,13,8,.85), rgba(4,13,8,0));
}
/* One solid button into the timelines rack (it used to read as a search box). */
.hero-cta {
  display: inline-flex; align-items: center; justify-content: space-between; gap: 16px;
  min-height: 76px; padding: 0 22px 0 26px; border-radius: 0;
  background: #45e07c; color: #04140a;
  font-family: 'Bebas Neue', sans-serif; font-size: 34px; letter-spacing: .06em; line-height: 1;
  box-shadow: 0 18px 40px -18px rgba(69,224,124,.7);
  transition: transform .2s ease, background .2s ease;
}
.hero-cta:hover { transform: translateY(-2px); background: #5cf090; }
.hero-cta > span:first-child { white-space: nowrap; }
@media (max-width: 479px) { .hero-cta { display: flex; gap: 8px; min-height: 64px; font-size: 23px; padding: 0 12px 0 16px; } .hero-cta-meta { font-size: 12px; } }
.hero-cta:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }
.hero-cta-meta { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; font-family: Inter, sans-serif; font-size: 15px; font-weight: 600; letter-spacing: 0; color: #0d4a26; }

/* ---- landing: the Doomsday front page (newsprint) ---- */
.paper {
  --newsprint: #ede3cb; --news-ink: #1d1a14; --news-grey: #5d5442; --news-red: #9a1a12; --news-body: #3a3328; --news-photo: #d8cdb2;
  --mast: 'UnifrakturMaguntia', serif; --wood: 'League Gothic', 'Anton', sans-serif;
  --fell: 'IM Fell English', Georgia, serif; --fell-sc: 'IM Fell English SC', Georgia, serif;
  position: relative; isolation: isolate; width: 100%; max-width: 680px; justify-self: center; color: var(--news-ink);
  padding: 16px 18px 22px;
  background-color: var(--newsprint);
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.35 0 0 0 0 0.28 0 0 0 0 0.15 0 0 0 .16 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E"),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='600' height='600'%3E%3Cfilter id='m'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.012' numOctaves='3' seed='7'/%3E%3CfeColorMatrix values='0 0 0 0 0.5 0 0 0 0 0.36 0 0 0 0 0.14 0 0 0 .5 -.12'/%3E%3C/filter%3E%3Crect width='600' height='600' filter='url(%23m)'/%3E%3C/svg%3E");
  box-shadow: 0 40px 70px -30px rgba(0,0,0,.95), inset 0 0 70px rgba(122,84,32,.32), inset 0 0 14px rgba(110,72,24,.35);
  transform: rotate(-.8deg);
  transition: transform .35s cubic-bezier(.22,.9,.28,1);
}
/* the age of the sheet: a fold across the middle, a coffee ring, foxing */
.paper::before {
  content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; mix-blend-mode: multiply;
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='r'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.035' numOctaves='2' seed='4'/%3E%3CfeDisplacementMap in='SourceGraphic' scale='10'/%3E%3C/filter%3E%3Cg filter='url(%23r)' fill='none' stroke='%23784a1c'%3E%3Ccircle cx='120' cy='120' r='84' fill='%238c5f28' fill-opacity='.05' stroke-opacity='.3' stroke-width='4'/%3E%3Ccircle cx='120' cy='120' r='79' stroke-opacity='.1' stroke-width='9'/%3E%3Cpath d='M58 176 A84 84 0 0 1 70 52' transform='translate(-22 18)' stroke-opacity='.16' stroke-width='3'/%3E%3C/g%3E%3C/svg%3E") right -78px top -70px / 240px no-repeat,
    radial-gradient(circle at 12% 88%, rgba(130,90,40,.18) 0 3px, transparent 6px),
    radial-gradient(circle at 16% 84%, rgba(130,90,40,.12) 0 2px, transparent 4px),
    radial-gradient(circle at 86% 62%, rgba(130,90,40,.12) 0 2px, transparent 5px),
    linear-gradient(transparent calc(50% - 14px), rgba(90,62,24,.08) calc(50% - 1px), rgba(255,250,235,0) 50%, rgba(90,62,24,.05) calc(50% + 1px), transparent calc(50% + 10px)),
    linear-gradient(90deg, transparent calc(50% - 8px), rgba(90,62,24,.05) 50%, transparent calc(50% + 8px));
}
.paper > * { position: relative; }
.paper:hover { transform: rotate(0deg) translateY(-3px); }
@media (min-width: 640px) { .paper { padding: 20px 28px 28px; } }
@media (min-width: 1536px) { .paper { padding: 24px 34px 32px; } .paper-head h2 { font-size: 112px; } .paper-body { font-size: 17px; } }

.paper-strip, .paper-dateline {
  display: flex; justify-content: space-between; align-items: baseline; gap: 10px;
  font-family: var(--fell-sc); font-size: 13px; letter-spacing: .1em; color: var(--news-grey);
}
.paper-strip { padding-bottom: 5px; border-bottom: 1px solid var(--news-ink); }
.paper-mast {
  margin: 6px 0 2px; text-align: center; line-height: 1.05; white-space: nowrap;
  font-family: var(--mast); font-size: clamp(36px, 10vw, 64px);
}
.paper-dateline { padding: 3px 0 4px; border-top: 3px double var(--news-ink); border-bottom: 3px double var(--news-ink); color: var(--news-ink); }
.paper-dateline span:nth-child(2) { color: var(--news-red); letter-spacing: .16em; }
.paper-head { display: block; margin-top: 12px; color: inherit; }
.paper-head h2 {
  font-family: var(--wood); font-weight: 400; text-transform: uppercase; text-align: center;
  font-size: clamp(54px, 15vw, 100px); line-height: .88; letter-spacing: .01em;
}
.paper-head [data-cd] { color: var(--news-red); }
.paper-head:hover h2 { text-decoration: underline; text-decoration-thickness: 3px; text-underline-offset: 6px; }
.paper-head:focus-visible { outline: 2px solid var(--news-ink); outline-offset: 4px; }
.paper-deck {
  margin: 10px auto 0; max-width: 44ch; text-align: center;
  font-family: var(--fell); font-style: italic; font-size: 17px; line-height: 1.35; color: #3a3328;
}
.paper-cols { display: grid; gap: 18px; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--news-ink); }
@media (min-width: 480px) {
  .paper-cols { grid-template-columns: 40% minmax(0, 1fr); gap: 0; }
  .paper-fig { padding-right: 18px; }
  .paper-copy { display: flex; flex-direction: column; padding-left: 18px; border-left: 1px solid var(--news-ink); }
  .paper-btn { margin-top: auto; }
}
.paper-fig { margin: 0; }

/* the photograph: halftone newsprint until you look at it, then it wakes */
.paper-halftone { position: relative; display: block; overflow: hidden; border: 1px solid var(--news-ink); }
.paper-halftone img { display: block; width: 100%; aspect-ratio: 2 / 3; object-fit: cover; filter: grayscale(1) contrast(1.35) brightness(1.08) sepia(.25); }
.paper-halftone .paper-live {
  position: absolute; inset: 0; height: 100%; filter: saturate(1.15) contrast(1.05);
  clip-path: circle(0% at 50% 42%);
  transition: clip-path 1.1s cubic-bezier(.6,0,.2,1);
}
.paper-halftone::after {
  content: ""; position: absolute; inset: 0; mix-blend-mode: multiply; opacity: .55; pointer-events: none;
  background: radial-gradient(circle, rgba(29,26,20,.75) 0 .9px, transparent 1.4px) 0 0 / 4px 4px, rgba(237,227,203,.18);
  transition: opacity 1.1s ease;
}
.paper-fig:hover .paper-live { clip-path: circle(75% at 50% 42%); animation: paper-breathe 7s ease-in-out .9s infinite alternate; }
.paper-fig:hover .paper-halftone::after { opacity: 0; }
@keyframes paper-breathe { from { transform: scale(1); } to { transform: scale(1.06) translateY(-1.5%); } }
/* no hover on touch: the ink spreads as the photo scrolls into view */
@media (hover: none) {
  @supports (animation-timeline: view()) {
    .paper-halftone .paper-live { animation: paper-wake linear both; animation-timeline: view(); animation-range: entry 60% cover 55%; }
    .paper-halftone::after { animation: paper-unprint linear both; animation-timeline: view(); animation-range: entry 60% cover 55%; }
  }
}
@keyframes paper-wake { to { clip-path: circle(75% at 50% 42%); } }
@keyframes paper-unprint { to { opacity: 0; } }
@media (max-width: 479px) { .paper-halftone img { aspect-ratio: 16 / 10; object-position: center 20%; } }
.paper-fig figcaption { margin-top: 6px; font-family: var(--fell); font-style: italic; font-size: 13px; color: var(--news-grey); }

.paper-k { font-family: var(--fell-sc); font-size: 14px; letter-spacing: .12em; }
.paper-clock { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin-top: 6px; border: 1px solid var(--news-ink); }
.paper-clock div { padding: 8px 2px 6px; text-align: center; }
.paper-clock div + div { border-left: 1px solid var(--news-ink); }
.paper-clock span { display: block; font-family: var(--wood); font-size: clamp(34px, 8vw, 44px); line-height: .95; }
.paper-clock small { display: block; margin-top: 3px; font-family: var(--fell-sc); font-size: 12px; letter-spacing: .1em; color: var(--news-grey); }
.paper-body { margin: 14px 0 18px; font-family: var(--fell); font-size: 16px; line-height: 1.45; text-align: justify; hyphens: auto; }
.paper-body::first-letter { float: left; margin: 4px 7px 0 0; font-family: var(--mast); font-size: 56px; line-height: .8; }
.paper-btn {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 50px; padding: 0 16px;
  background: var(--news-ink); color: var(--newsprint);
  font-family: var(--fell-sc); font-size: 17px; letter-spacing: .02em; white-space: nowrap;
  transition: background .2s ease;
}
.paper-btn:hover { background: var(--news-red); }
.paper-btn .ico-chev { transition: transform .2s ease; }
.paper-btn:hover .ico-chev { transform: translateX(4px); }
.paper-btn:focus-visible, .paper-link:focus-visible { outline: 2px solid var(--news-ink); outline-offset: 3px; }
.paper-link { align-self: flex-start; display: inline-block; margin-top: 8px; padding: 6px 0; font-family: var(--fell); font-style: italic; font-size: 16px; text-decoration: underline; text-underline-offset: 3px; }
.paper-link:hover { color: var(--news-red); }
/* beside the hero, the sheet scales with the window's height so it fits on screen */
@media (min-width: 1024px) {
  .paper-head h2 { font-size: clamp(56px, 10vh, 112px); }
  .paper-mast { font-size: clamp(36px, 6vh, 64px); }
  .paper-cols { grid-template-columns: auto minmax(0, 1fr); }
  .paper-fig { width: calc(clamp(170px, 100vh - 610px, 440px) * 2 / 3 + 18px); }
}
@media (min-width: 1024px) and (max-height: 860px) { .paper-deck { display: none; } }
@media (prefers-reduced-motion: reduce) {
  .paper, .paper:hover { transform: none; }
  .paper-btn:hover .ico-chev { transform: none; }
  .paper-fig:hover .paper-live { animation: none; }
}

/* ---- fandoms: the front page (newsprint, same sheet as the landing paper) ---- */
.np-sheet {
  --newsprint: #ede3cb; --news-ink: #1d1a14; --news-grey: #5d5442; --news-red: #9a1a12; --news-body: #3a3328; --news-photo: #d8cdb2;
  --mast: 'UnifrakturMaguntia', serif; --wood: 'League Gothic', 'Anton', sans-serif;
  --fell: 'IM Fell English', Georgia, serif; --fell-sc: 'IM Fell English SC', Georgia, serif;
  position: relative; z-index: 1; isolation: isolate; flex: 1; padding: 14px 16px 28px; color: var(--news-ink);
  background-color: var(--newsprint);
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.35 0 0 0 0 0.28 0 0 0 0 0.15 0 0 0 .16 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E"),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='600' height='600'%3E%3Cfilter id='m'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.012' numOctaves='3' seed='7'/%3E%3CfeColorMatrix values='0 0 0 0 0.5 0 0 0 0 0.36 0 0 0 0 0.14 0 0 0 .5 -.12'/%3E%3C/filter%3E%3Crect width='600' height='600' filter='url(%23m)'/%3E%3C/svg%3E");
  box-shadow: inset 0 0 90px rgba(122,84,32,.3), inset 0 0 14px rgba(110,72,24,.35);
}
/* the coffee ring on the masthead corner */
.np-sheet::before {
  content: ""; position: absolute; top: 0; right: 0; width: 180px; height: 170px; z-index: 1; pointer-events: none; mix-blend-mode: multiply;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='r'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.035' numOctaves='2' seed='4'/%3E%3CfeDisplacementMap in='SourceGraphic' scale='10'/%3E%3C/filter%3E%3Cg filter='url(%23r)' fill='none' stroke='%23784a1c'%3E%3Ccircle cx='120' cy='120' r='84' fill='%238c5f28' fill-opacity='.05' stroke-opacity='.3' stroke-width='4'/%3E%3Ccircle cx='120' cy='120' r='79' stroke-opacity='.1' stroke-width='9'/%3E%3C/g%3E%3C/svg%3E") right -60px top -70px / 240px no-repeat;
}
@media (min-width: 640px) { .np-sheet { padding: 20px 28px 36px; } }
@media (min-width: 1280px) { .np-sheet { padding: 24px 40px 44px; } }

.np-strip, .np-dateline {
  display: flex; justify-content: space-between; align-items: baseline; gap: 10px;
  font-family: var(--fell-sc); font-size: 13px; letter-spacing: .1em; color: var(--news-grey);
}
.np-strip { padding-bottom: 5px; border-bottom: 1px solid var(--news-ink); }
/* the site nav, set as the paper's top strip: ink type, no chrome */
.np-nav { align-items: center; padding-bottom: 4px; }
.np-home { display: inline-flex; align-items: center; gap: 4px; min-height: 40px; color: var(--news-ink); letter-spacing: .08em; font-size: 15px; }
.np-home .stand-tower { width: 26px; height: 26px; margin-left: -6px; color: var(--news-ink); filter: none; }
.np-home:hover { color: var(--news-red); }
.np-home:hover .stand-tower { color: var(--news-red); }
.np-nav .nav-group { gap: 0; }
.np-nav .nav-btn { position: relative; height: 40px; text-transform: none; padding: 0 10px; gap: 6px; border: 0; border-radius: 0; background: none; box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none; color: var(--news-ink); font: 14px/1 var(--fell-sc); letter-spacing: .08em; }
.np-nav .nav-btn + .nav-btn::before { content: ""; position: absolute; left: 0; top: 12px; bottom: 12px; width: 1px; background: var(--news-grey); opacity: .5; }
.np-nav .nav-btn svg { width: 14px; height: 14px; color: var(--news-red); }
.np-nav .nav-btn:hover { background: none; color: var(--news-red); transform: none; }
.np-nav .nav-btn:focus-visible { outline: 2px solid var(--news-ink); outline-offset: -2px; }
@media (max-width: 639px) { .np-nav .nav-btn { height: 44px; padding: 0 14px; } .np-home { min-height: 44px; min-width: 44px; } .np-home span { display: none; } }
.np-date { display: none; }
@media (min-width: 640px) { .np-date { display: inline; } }
.np-mast { display: block; margin: 8px 0 4px; text-align: center; line-height: 1.05; font-family: var(--mast); font-size: clamp(34px, 9vw, 96px); }
.np-mast:hover { color: var(--news-red); }
.np-dateline { padding: 3px 0 4px; border-top: 3px double var(--news-ink); border-bottom: 3px double var(--news-ink); color: var(--news-ink); }
.np-dateline span:nth-child(2) { color: var(--news-red); letter-spacing: .16em; }
@media (max-width: 479px) { .np-dateline span:not(:nth-child(2)) { display: none; } .np-dateline { justify-content: center; } }

.np-front { display: grid; gap: 10px; padding: 18px 0 16px; }
.np-front h1 { margin: 0; font: 400 clamp(60px, 13vw, 168px)/.84 var(--wood); text-transform: uppercase; letter-spacing: .005em; }
.np-lede { margin: 0; max-width: 46ch; font: italic 18px/1.4 var(--fell); color: var(--news-body); }
@media (min-width: 900px) {
  .np-front { grid-template-columns: auto minmax(0, 1fr); gap: 36px; align-items: end; }
  .np-lede { padding-left: 24px; border-left: 1px solid var(--news-ink); }
}

.np-sections { display: flex; align-items: center; gap: 14px; padding: 6px 0; border-top: 1px solid var(--news-ink); border-bottom: 3px double var(--news-ink); }
.np-sections-k { font: italic 15px/1 var(--fell); color: var(--news-grey); white-space: nowrap; }
.np-sections div { display: flex; overflow-x: auto; scrollbar-width: none; }
.np-sections div::-webkit-scrollbar { display: none; }
.np-sections button { position: relative; min-height: 40px; padding: 0 12px; white-space: nowrap; font: 15px/1 var(--fell-sc); letter-spacing: .08em; color: var(--news-ink); }
.np-sections button + button::before { content: ""; position: absolute; left: 0; top: 12px; bottom: 12px; width: 1px; background: var(--news-grey); opacity: .5; }
.np-sections button:hover, .np-sections button[aria-pressed="true"] { color: var(--news-red); }
.np-sections button[aria-pressed="true"] { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 6px; }
.np-sections button:focus-visible { outline: 2px solid var(--news-ink); outline-offset: -2px; }
@media (max-width: 479px) { .np-sections-k { display: none; } .np-sections { margin: 0 -16px; padding-left: 4px; } }

/* the wall: one photo story per fandom */
.np-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px 16px; margin-top: 18px; grid-auto-flow: dense; }
@media (min-width: 640px) { .np-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 26px 22px; } }
@media (min-width: 1000px) { .np-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); } }
@media (min-width: 1400px) { .np-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 30px 24px; } }
@media (min-width: 1800px) { .np-grid { grid-template-columns: repeat(7, minmax(0, 1fr)); } }
@media (min-width: 2200px) { .np-grid { grid-template-columns: repeat(8, minmax(0, 1fr)); } }

.np-story { position: relative; display: flex; flex-direction: column; min-width: 0; padding-top: 10px; border-top: 1px solid var(--news-ink); }
.np-story:focus-visible { outline: 2px solid var(--news-ink); outline-offset: 4px; }
.np-pic { position: relative; display: block; }
.np-photo { position: relative; z-index: 1; display: block; overflow: hidden; aspect-ratio: 3 / 4; border: 1px solid var(--news-ink); background: var(--news-photo); }
.np-photo img { width: 100%; height: 100%; object-fit: cover; }
/* loose clippings tucked behind the photo */
.np-fan { position: absolute; inset: 6% 8%; z-index: 0; }
.np-fan img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border: 1px solid var(--news-ink); opacity: 0; box-shadow: 0 8px 18px -10px rgba(0,0,0,.6); transition: transform .4s cubic-bezier(.2,.7,.2,1), opacity .2s; }
/* your progress, rubber-stamped on the photo */
.np-stamp { position: absolute; z-index: 2; left: 8px; bottom: 10px; padding: 3px 7px; border: 2px solid var(--news-red); color: var(--news-red); background: color-mix(in srgb, var(--newsprint) 88%, transparent); font: 13px/1 var(--fell-sc); letter-spacing: .08em; transform: rotate(-5deg); }
.np-pic .award { top: 8px; right: -6px; }

.np-kicker { margin-top: 9px; font: 12px/1.2 var(--fell-sc); letter-spacing: .1em; color: var(--news-red); }
.np-head { margin-top: 2px; font: 400 clamp(24px, 2.4vw, 32px)/.92 var(--wood); text-transform: uppercase; letter-spacing: .01em; overflow-wrap: anywhere; }
.np-deck { margin-top: 6px; font: italic 17px/1.3 var(--fell); color: var(--news-body); }
.np-cap { margin-top: 5px; font: italic 13px/1.35 var(--fell); color: var(--news-grey); }

/* lead stories: two columns wide, the photo grows to fill two rows */
.np-story.is-lead { grid-column: span 2; }
.np-story.is-lead .np-head { font-size: clamp(34px, 4.6vw, 64px); }
.np-story.is-lead .np-cap { font-size: 14px; }
@media (min-width: 640px) {
  .np-story.is-lead { grid-row: span 2; }
  .np-story.is-lead .np-pic { flex: 1; display: flex; flex-direction: column; min-height: 0; }
  .np-story.is-lead .np-photo { flex: 1; aspect-ratio: auto; min-height: 320px; }
  .np-story.is-lead .np-photo img:first-child { position: absolute; inset: 0; }
}

@media (hover: hover) {
  .np-story:hover { z-index: 3; }
  .np-story:hover .np-head { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 4px; }
  .np-story:hover .np-fan img:nth-child(1), .np-story:focus-visible .np-fan img:nth-child(1) { opacity: 1; transform: translate(-14%, -3%) rotate(-6deg); }
  .np-story:hover .np-fan img:nth-child(2), .np-story:focus-visible .np-fan img:nth-child(2) { opacity: 1; transform: translate(14%, -3%) rotate(6deg); }
}
@media (prefers-reduced-motion: reduce) {
  .np-fan img { transition: none; }
}

/* classifieds box for upcoming fandoms */
/* the front page in sections: a rule, the section name, its count and a way in */
.np-sections-mid { display: flex; align-items: center; padding: 0 6px 0 18px; }
.np-section { margin-top: 34px; }
.np-sec-head { display: flex; align-items: baseline; gap: 14px; padding-bottom: 6px; border-bottom: 3px double var(--news-ink); }
.np-sec-head h2 { margin: 0; font: 400 clamp(34px, 5vw, 60px)/.9 var(--wood); text-transform: uppercase; }
.np-sec-n { font: italic 15px/1 var(--fell); color: var(--news-grey); }
.np-sec-all { margin-left: auto; display: inline-flex; align-items: center; gap: 4px; min-height: 40px; font: 15px/1 var(--fell-sc); letter-spacing: .08em; color: var(--news-red); }
.np-sec-all svg { width: 14px; height: 14px; }
.np-sec-all:hover { text-decoration: underline; text-underline-offset: 5px; }
.np-index { margin-top: 44px; padding-top: 10px; border-top: 3px double var(--news-ink); }
.np-index h2 { margin: 0 0 12px; font: 400 clamp(30px, 4vw, 48px)/.9 var(--wood); text-transform: uppercase; }
.np-index-cols { columns: 2 180px; column-gap: 28px; }
@media (min-width: 900px) { .np-index-cols { columns: 4; } }
.np-index p { break-inside: avoid; margin: 0 0 12px; font: 15px/1.5 var(--fell); }
.np-index b { display: block; font: 400 22px/1 var(--wood); color: var(--news-red); }
.np-index a { display: block; color: var(--news-ink); }
.np-index a:hover { color: var(--news-red); text-decoration: underline; }
.np-soon { align-self: start; padding: 12px; border: 1px solid var(--news-ink); outline: 1px solid var(--news-ink); outline-offset: -5px; }
.np-soon b { display: block; margin-top: 4px; font: 400 26px/1 var(--wood); text-transform: uppercase; }
.np-soon p { margin: 6px 0 0; font: italic 14px/1.35 var(--fell); }

.np-foot { display: flex; justify-content: space-between; margin: 34px 0 0; padding-top: 8px; border-top: 3px double var(--news-ink); font: 15px/1 var(--fell-sc); letter-spacing: .08em; }
.np-foot a { display: inline-flex; align-items: center; gap: 6px; min-height: 40px; }
.np-foot a:hover { color: var(--news-red); }
.np-foot svg { width: 14px; height: 14px; }

/* the night edition: same paper, printed on dark stock with cream ink */
.np-night svg { width: 15px; height: 15px; }
.np-nav .np-night[aria-pressed="true"] svg { color: #f0c14b; }
.np-sheet[data-edition="night"] {
  --newsprint: #17150f; --news-ink: #e6dcc2; --news-grey: #9d927a; --news-red: #e5584a; --news-body: #cfc5ab; --news-photo: #2a261d;
  color-scheme: dark;
  /* grain only: the daytime foxing reads as mould on dark stock */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.9 0 0 0 0 0.85 0 0 0 0 0.7 0 0 0 .07 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
  box-shadow: inset 0 0 120px rgba(0,0,0,.55), inset 0 0 14px rgba(0,0,0,.6);
}
.np-sheet[data-edition="night"]::before { mix-blend-mode: screen; opacity: .35; }
.np-sheet[data-edition="night"] .np-photo img { filter: brightness(.92); }
.np-sheet[data-edition="night"] .np-fan img { box-shadow: 0 8px 18px -8px #000; }

/* ---- the Doomsday page: the MCU issue's colors, a film-leader countdown ---- */
.dd { background: var(--bg); color: var(--ink); overflow: hidden; }
.dd-backdrop {
  position: absolute; inset: 0 0 auto; width: 100%; height: 92vh; object-fit: cover; opacity: .28; pointer-events: none;
  -webkit-mask-image: linear-gradient(#000 25%, transparent); mask-image: linear-gradient(#000 25%, transparent);
}
.dd-hero { display: grid; gap: 32px; align-items: center; padding: 12px 0 8px; }
@media (min-width: 1024px) { .dd-hero { grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 48px; } }
.dd-h1 { margin-top: 10px; font-size: clamp(52px, 8vw, 104px); line-height: .92; text-transform: uppercase; letter-spacing: .01em; color: var(--ink); text-shadow: 0 2px 30px rgba(0,0,0,.55); }
.dd-date { margin-top: 14px; font: 600 15px/1.4 "Space Grotesk", sans-serif; color: var(--sub); }
.dd-clock { margin-top: 26px; gap: 10px 34px; }
.dd-clock dd { font-size: clamp(30px, 4vw, 42px); }
.dd-btns { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.tix {
  display: inline-flex; align-items: center; gap: 10px; min-height: 52px; padding: 0 24px; white-space: nowrap;
  background: var(--spot); color: #04140a; font: 400 22px/1 "Bebas Neue", sans-serif; letter-spacing: .06em;
  transition: transform .2s ease, filter .2s ease;
}
.tix:hover { transform: translateY(-2px); filter: brightness(1.12); }
.tix--ghost { background: transparent; color: var(--ink); border: 1px solid color-mix(in srgb, var(--ink) 30%, transparent); }
.tix--ghost:hover { background: color-mix(in srgb, var(--ink) 8%, transparent); filter: none; }
@media (max-width: 479px) { .dd-btns .tix { width: 100%; justify-content: center; font-size: 20px; padding: 0 14px; } }

/* Academy leader: crosshair, two rings, a wedge that sweeps once a second */
@property --ldr-a { syntax: '<angle>'; inherits: false; initial-value: 0deg; }
.ldr { --film: #e9f5ee; width: 100%; max-width: 640px; justify-self: center; }
.ldr-main {
  position: relative; aspect-ratio: 4 / 3; overflow: hidden; display: grid; place-items: center;
  background: radial-gradient(circle at 50% 50%, #1e2a23, #0b120e 75%);
  border: 1px solid color-mix(in srgb, var(--spot) 35%, transparent);
  box-shadow: 0 50px 90px -40px #000, 0 0 60px -30px var(--spot), inset 0 0 80px rgba(0,0,0,.7);
}
.ldr-main svg { position: absolute; inset: 0; z-index: 2; width: 100%; height: 100%; fill: none; stroke: var(--film); stroke-width: .7; opacity: .75; }
/* crosshair runs edge to edge, like the real leader */
.ldr-main::before, .ldr-main::after { content: ""; position: absolute; z-index: 2; background: var(--film); opacity: .45; }
.ldr-main::before { left: 0; right: 0; top: 50%; height: 1px; }
.ldr-main::after { top: 0; bottom: 0; left: 50%; width: 1px; }
/* The shaded wedge stays inside the circle (r = 44% of the frame height, which is
   22% of this 2x-height square); out in the corners the hand is the edge of the
   next still wiping in. */
.ldr-sweep {
  position: absolute; z-index: 1; left: 50%; top: 50%; width: 150%; aspect-ratio: 1; transform: translate(-50%, -50%);
  -webkit-mask-image: radial-gradient(circle closest-side, #000 43.5%, transparent 44%); mask-image: radial-gradient(circle closest-side, #000 43.5%, transparent 44%);
  background: conic-gradient(rgba(0,0,0,.42) var(--ldr-a), color-mix(in srgb, var(--spot) 18%, transparent) var(--ldr-a) calc(var(--ldr-a) + 1.5deg), transparent 0);
  animation: ldrSweep 1s linear infinite;
}
@keyframes ldrSweep { from { --ldr-a: 0deg; } to { --ldr-a: 360deg; } }
.ldr-num { position: relative; z-index: 3; font: 400 clamp(92px, 20vw, 200px)/1 Anton, sans-serif; color: var(--ink); text-shadow: 0 0 40px color-mix(in srgb, var(--spot) 35%, transparent); }
/* Corner stills: each quarter of the frame, outside the circle, holds an MCU
   film still. The next still sits on top, revealed by a conic mask that follows
   the hand (--rv, set each frame by doomsday.js), so the sweep wipes it in.
   --cx/--cy is the frame's center in the quarter's own coordinates. In a 4:3
   frame a quarter is .667H x .5H, so a circle of radius .46H (just outside the
   outer ring) is an ellipse of 69% x 92% of the quarter. */
.ldr-corner {
  position: absolute; width: 50%; height: 50%; overflow: hidden;
  -webkit-mask-image: radial-gradient(ellipse 69% 92% at var(--cx) var(--cy), transparent 99%, #000 100%);
  mask-image: radial-gradient(ellipse 69% 92% at var(--cx) var(--cy), transparent 99%, #000 100%);
}
.ldr-corner--tl { top: 0; left: 0; --cx: 100%; --cy: 100%; }
.ldr-corner--tr { top: 0; right: 0; --cx: 0%; --cy: 100%; }
.ldr-corner--br { bottom: 0; right: 0; --cx: 0%; --cy: 0%; }
.ldr-corner--bl { bottom: 0; left: 0; --cx: 100%; --cy: 0%; }
.ldr-corner img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: saturate(.7) brightness(.5); }
.ldr-corner img.is-reveal {
  -webkit-mask-image: conic-gradient(from 0deg at var(--cx) var(--cy), #000 var(--rv, 0deg), transparent 0);
  mask-image: conic-gradient(from 0deg at var(--cx) var(--cy), #000 var(--rv, 0deg), transparent 0);
}
.ldr-corner::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: radial-gradient(ellipse 120% 120% at var(--cx) var(--cy), transparent 55%, rgba(0,0,0,.6)); }
.is-live .ldr-corner img { filter: saturate(.9) brightness(.75); }
.ldr-l {
  position: absolute; z-index: 1; bottom: 7%; left: 50%; transform: translateX(-50%); padding: 5px 8px 5px 14px; white-space: nowrap;
  background: #0b120e; font: 700 clamp(11px, 2.2vw, 13px)/1 "Space Grotesk", sans-serif; letter-spacing: .32em; text-transform: uppercase; color: var(--sub);
}
.ldr-l-live, .is-live .ldr-l-wait { display: none; }
.is-live .ldr-l-live { display: inline; color: var(--spot); }
.is-live .ldr-sweep { animation: none; }

/* sections */
.dd-sec { margin-top: 64px; }
.dd-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 16px; padding-bottom: 12px; border-bottom: 1px solid color-mix(in srgb, var(--ink) 14%, transparent); }
.dd-head h2 { font-size: clamp(32px, 4.5vw, 48px); line-height: 1; text-transform: uppercase; color: var(--ink); }
.dd-head > span { font: 700 12px/1 "Space Grotesk", sans-serif; letter-spacing: .16em; text-transform: uppercase; color: var(--sub); }
.dd-more { margin-left: auto; display: inline-flex; align-items: center; gap: 4px; font: 700 12px/1 "Space Grotesk", sans-serif; letter-spacing: .14em; text-transform: uppercase; color: var(--spot); white-space: nowrap; }
.dd-more:hover { text-decoration: underline; }

/* the catch-up list: a poster row, dragged or swiped sideways */
.dd-catch { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(140px, 1fr); gap: 16px; margin-top: 20px; overflow-x: auto; scrollbar-width: none; counter-reset: dd; }
.dd-catch::-webkit-scrollbar { display: none; }
@media (min-width: 1024px) { .dd-catch { grid-auto-columns: calc((100% - 5 * 16px) / 6); } }
.dd-catch a { display: grid; gap: 4px; }
.dd-poster { position: relative; aspect-ratio: 2 / 3; overflow: hidden; background: #0d1510; border-bottom: 3px solid var(--spot); }
.dd-poster img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s; }
.dd-catch a:hover .dd-poster img { transform: scale(1.04); }
.dd-no { position: absolute; top: 6px; left: 6px; padding: 2px 6px; background: rgba(0,0,0,.75); font: 400 13px/1.2 Anton, sans-serif; color: var(--ink); }
.dd-catch b { margin-top: 6px; font: 600 14px/1.25 "Space Grotesk", sans-serif; color: var(--ink); }
.dd-catch small { font-size: 12px; color: var(--sub); }

/* the trailer reel */
.reel-stage { position: relative; margin-top: 20px; aspect-ratio: 16 / 9; overflow: hidden; background: #000; border: 1px solid color-mix(in srgb, var(--ink) 12%, transparent); }
.reel-stage img, .reel-stage iframe { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border: 0; }
.reel-stage img { filter: brightness(.8); }
.reel-play { position: absolute; inset: 0; display: grid; place-items: center; cursor: pointer; background: transparent; border: 0; }
.reel-play span { display: grid; place-items: center; width: 76px; height: 76px; padding-left: 6px; border-radius: 50%; background: var(--spot); color: #04140a; font-size: 28px; transition: transform .2s ease; }
.reel-play:hover span { transform: scale(1.08); }
.reel-cap {
  position: absolute; left: 0; right: 0; bottom: 0; padding: 48px 20px 16px; pointer-events: none;
  background: linear-gradient(transparent, rgba(0,0,0,.85)); font: 400 clamp(24px, 3.4vw, 36px)/1.05 Anton, sans-serif; text-transform: uppercase; color: #fff;
}
.reel-facts { display: flex; flex-wrap: wrap; align-items: center; gap: 0 8px; font: 700 11px/1.4 "Space Grotesk", sans-serif; letter-spacing: .16em; text-transform: uppercase; }
.reel-facts > span + span { padding-left: 8px; border-left: 1px solid color-mix(in srgb, currentColor 45%, transparent); }
.reel-cap .reel-facts { margin-bottom: 6px; color: var(--spot); }
.reel-list { display: grid; gap: 12px; margin-top: 16px; }
@media (min-width: 640px) { .reel-list { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .reel-list { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.reel {
  display: flex; width: 100%; height: 100%; gap: 12px; padding: 8px; text-align: left; cursor: pointer; color: var(--ink);
  background: rgba(255,255,255,.03); border: 1px solid color-mix(in srgb, var(--ink) 10%, transparent); transition: border-color .2s ease, background .2s ease;
}
@media (min-width: 1024px) { .reel { flex-direction: column; } }
.reel:hover { border-color: color-mix(in srgb, var(--ink) 35%, transparent); background: rgba(255,255,255,.06); }
.reel[aria-current="true"] { border-color: var(--spot); }
.reel-thumb { position: relative; flex-shrink: 0; width: 132px; aspect-ratio: 16 / 9; overflow: hidden; background: #000; }
@media (min-width: 1024px) { .reel-thumb { width: 100%; } }
.reel-thumb img { width: 100%; height: 100%; object-fit: cover; filter: brightness(.75); transition: filter .25s ease; }
.reel:hover .reel-thumb img, .reel[aria-current="true"] .reel-thumb img { filter: none; }
.reel-no { position: absolute; top: 4px; left: 4px; padding: 1px 5px; background: rgba(0,0,0,.75); font: 400 12px/1.3 Anton, sans-serif; color: var(--ink); }
.reel-meta { display: flex; min-width: 0; flex-direction: column; gap: 4px; padding: 2px 2px 4px; }
.reel-meta .reel-facts { font-size: 10px; color: var(--sub); }
.reel-name { font: 600 15px/1.25 "Space Grotesk", sans-serif; }

/* the lobby video: plays silently on arrival, sound on the button. Phones and
   laptops get it under the trailers; wide screens hang it in the empty right
   margin, where it stays in view as the page scrolls. */
.lobby { margin: 56px auto 0; max-width: 560px; }
.lobby-case { display: grid; gap: 12px; padding: 14px; background: rgba(4,9,6,.88); border: 1px solid color-mix(in srgb, var(--spot) 30%, transparent); box-shadow: 0 40px 80px -30px #000; }
.lobby-k { font: 700 11px/1 "Space Grotesk", sans-serif; letter-spacing: .18em; text-transform: uppercase; color: var(--sub); }
.lobby-screen { position: relative; aspect-ratio: 16 / 9; overflow: hidden; background: #000; }
.lobby-screen iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.lobby-mute {
  justify-self: start; display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 14px;
  background: var(--spot); color: #04140a; font: 700 12px/1 "Space Grotesk", sans-serif; letter-spacing: .14em; text-transform: uppercase; transition: background-color .2s ease, color .2s ease;
}
.lobby-mute svg { width: 16px; height: 16px; }
.lobby-mute .snd-on, .lobby-mute[aria-pressed="true"] .snd-off { display: none; }
.lobby-mute[aria-pressed="true"] .snd-on { display: inline; }
.lobby-mute[aria-pressed="true"] { background: rgba(255,255,255,.08); color: var(--ink); }
@media (min-width: 1560px) {
  .dd { overflow: clip; } /* hidden would stop the case sticking */
  .lobby { position: absolute; top: 0; bottom: 0; left: 100%; width: calc(50vw - 50% - 8px); max-width: none; margin: 0; }
  .lobby-case { position: sticky; top: 110px; width: min(360px, calc(100% - 48px)); margin: 0 auto; }
}

/* merch */
.dd-merch-grid { display: grid; gap: 16px; margin-top: 20px; }
@media (min-width: 720px) { .dd-merch-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; } }
.dd-merch-card { display: grid; gap: 6px; align-content: start; transition: transform .2s ease; }
.dd-merch-card:hover { transform: translateY(-3px); }
.dd-merch-img { position: relative; display: block; aspect-ratio: 4 / 3; overflow: hidden; background: #f4f6f5; border-bottom: 3px solid var(--spot); }
.dd-merch-img img { position: absolute; inset: 10%; width: 80%; height: 80%; object-fit: contain; }
.dd-merch-k { margin-top: 6px; font: 700 10.5px/1 "Space Grotesk", sans-serif; letter-spacing: .16em; text-transform: uppercase; color: var(--sub); }
.dd-merch-t { font: 600 15px/1.3 "Space Grotesk", sans-serif; color: var(--ink); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.dd-merch-go { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 700; color: var(--spot); }
.dd-credit { margin-top: 40px; text-align: center; font-size: 11px; line-height: 1.5; color: color-mix(in srgb, var(--ink) 35%, transparent); }
.tix:focus-visible, .reel:focus-visible, .reel-play:focus-visible, .dd-catch a:focus-visible, .dd-merch-card:focus-visible, .lobby-mute:focus-visible { outline: 2px solid var(--spot); outline-offset: 3px; }
@media (prefers-reduced-motion: reduce) {
  .ldr-sweep { animation: none; }
  .tix:hover, .reel-play:hover span, .hero-cta:hover, .dd-merch-card:hover { transform: none; }
}

/* ---- Doomsday countdown ---- */
.cd-grid { display: inline-flex; gap: 8px; }
.cd-unit {
  min-width: 60px; padding: 10px 8px 7px;
  border-radius: 0;
  border: 1px solid color-mix(in srgb, var(--cd, #45e07c) 34%, transparent);
  background: linear-gradient(180deg, rgba(255,255,255,.05), rgba(0,0,0,.28));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.07), 0 0 26px -14px var(--cd, #45e07c);
  text-align: center;
}
.cd-num {
  display: block; font-family: 'Space Grotesk', sans-serif; font-weight: 700;
  font-size: 30px; line-height: 1; color: var(--cd, #45e07c);
  text-shadow: 0 0 18px color-mix(in srgb, var(--cd, #45e07c) 55%, transparent);
}
.cd-label {
  display: block; margin-top: 6px; font-size: 10px; line-height: 1;
  letter-spacing: .18em; text-transform: uppercase; color: #94a3b8;
}
/* Seconds tick with a faint breath so the clock reads as live. */
.cd-unit:last-child .cd-num { animation: cdTick 1s steps(1) infinite; }
@keyframes cdTick { 50% { opacity: .78; } }
.cd-grid.is-live .cd-num { animation: none; }
@media (prefers-reduced-motion: reduce) { .cd-unit:last-child .cd-num { animation: none; } }

/* ---- newsstand: each fandom is a magazine cover ---- */
.mag {
  position: relative; display: block; overflow: hidden;
  aspect-ratio: 3 / 4; border-radius: 0;
  background: var(--bg); color: var(--ink);
  box-shadow: 0 1px 0 rgba(255,255,255,.04), 0 20px 44px -26px rgba(0,0,0,.85);
  transition: transform .28s cubic-bezier(.22,.9,.28,1), box-shadow .28s ease;
}
.mag:hover { transform: translateY(-7px) rotate(-.45deg); box-shadow: 0 34px 66px -30px rgba(0,0,0,.92); }
.mag:focus-visible { outline: 2px solid var(--spot); outline-offset: 3px; }
/* the spine down the left edge */
/* skyline: issue name + number */
/* masthead */
/* coverlines */
/* featured "start here" cover story, sitting in the lower third like a cover image */

/* ---- issue interior: the inside pages of each magazine, same palette ---- */
.issue-bg { position: absolute; inset: 0; z-index: 0; background: var(--bg, #040d08); }
/* Bespoke backdrops (starfield, embers, magic, tower canvases) paint behind the section. */
[data-fx]:not([data-fx="comic"]) > .issue-bg, [data-backdrop] > .issue-bg { display: none; }

/* ---- tower backdrop (MCU): static canvases + compositor-only motion ---- */
.tower-scene .tw-layer { position: absolute; will-change: transform; }
.tower-scene .tw-layer > canvas, .tower-scene .tw-layer > div { position: absolute; inset: 0; }
.tw-scrim { position: absolute; inset: 0; background: linear-gradient(to bottom, rgba(2,4,6,.6), rgba(2,4,6,0) 38%); }
@media (max-width: 767px) { .tw-scrim { background: rgba(2,4,6,.45); } }
.tw-beam {
  position: absolute; bottom: 0; transform-origin: 50% 100%;
  background: linear-gradient(to top, rgba(200,230,255,.13), rgba(200,230,255,0) 85%);
  clip-path: polygon(46% 100%, 54% 100%, 100% 0, 0 0);
  animation: twSweep 17s ease-in-out infinite alternate;
}
@keyframes twSweep { from { transform: rotate(-22deg); } to { transform: rotate(18deg); } }
.tw-plane { position: absolute; left: -40px; width: 6px; height: 6px; animation: twFly 70s linear infinite; animation-delay: -24s; }
.tw-plane i { position: absolute; width: 3px; height: 3px; border-radius: 50%; background: #fff; box-shadow: 0 0 6px #fff; animation: twBlink 1.4s steps(1) infinite; }
.tw-plane i + i { left: 9px; background: #ff4d4d; box-shadow: 0 0 6px #ff4d4d; animation-delay: -.7s; }
@keyframes twFly { from { transform: translate3d(0,0,0); } to { transform: translate3d(var(--tw-x),-40px,0); } }
@keyframes twBlink { 0%, 60% { opacity: 1; } 61%, 100% { opacity: .1; } }
.tw-beacon { position: absolute; width: 4px; height: 4px; margin: -2px; border-radius: 50%; background: #ff3b3b; box-shadow: 0 0 8px 2px rgba(255,59,59,.6); animation: twBeacon 2.4s ease-in-out infinite; }
@keyframes twBeacon { 0%, 100% { opacity: .15; } 50% { opacity: 1; } }
.tw-win { position: absolute; background: #ffc47e; opacity: 0; animation: twWin 12s steps(1) infinite; }
@keyframes twWin { 0%, 40% { opacity: 0; } 41%, 90% { opacity: .85; } 91%, 100% { opacity: 0; } }
.tw-logo { position: absolute; color: #c4ecff; filter: drop-shadow(0 0 4px #7fd4ff) drop-shadow(0 0 16px rgba(92,200,255,.75)); animation: twPulse 5s ease-in-out infinite; will-change: opacity; }
.tw-logo svg { width: 100%; height: 100%; fill: currentColor; }
@keyframes twPulse { 0%, 100% { opacity: .82; } 45% { opacity: 1; } 47% { opacity: .55; } 49% { opacity: 1; } }
.tw-trim { position: absolute; inset: 0; overflow: visible; }
.tw-trim path { fill: none; stroke: #fff; stroke-linecap: round; stroke-dasharray: 60 940; stroke-dashoffset: 1000; opacity: .9; animation: twTrim 6s linear infinite; }
@keyframes twTrim { to { stroke-dashoffset: 0; } }
@media (prefers-reduced-motion: reduce) {
  .tw-beam, .tw-plane, .tw-plane i, .tw-beacon, .tw-win, .tw-logo, .tw-trim path { animation: none; }
  .tw-trim, .tw-plane { display: none; }
}
.issue-bg::after {
  content: ""; position: absolute; inset: 0; opacity: .4;
  background-image: radial-gradient(color-mix(in srgb, var(--ink, #fff) 22%, transparent) .6px, transparent .9px);
  background-size: 24px 24px;
}
.issue-ink { color: var(--ink, #f1f5f9); }
.issue-spot { color: var(--spot, #cbd5e1); }
.issue-muted { color: color-mix(in srgb, var(--ink, #f1f5f9) 56%, transparent); }
.issue-faint { color: color-mix(in srgb, var(--ink, #f1f5f9) 40%, transparent); }
.issue-rule { border-color: color-mix(in srgb, var(--ink, #fff) 15%, transparent); }
.issue-title { text-transform: uppercase; line-height: .95; letter-spacing: .01em; }
.issue-card {
  background: color-mix(in srgb, var(--ink, #fff) 9%, var(--bg, #0b0f1a));
  border: 1px solid color-mix(in srgb, var(--spot, #fff) 45%, transparent);
  color: var(--ink, #fff);
  transition: background .2s ease, border-color .2s ease, transform .2s ease;
}
.issue-card:hover {
  background: color-mix(in srgb, var(--ink, #fff) 12%, var(--bg, #0b0f1a));
  border-color: color-mix(in srgb, var(--spot, #fff) 80%, transparent);
}
.issue-card.is-watched { opacity: .72; border-color: color-mix(in srgb, var(--spot, #fff) 40%, transparent); }
.issue-card.is-watched:hover { opacity: 1; }
.issue-num { background: var(--spot, #cbd5e1); color: var(--bg, #0b0f1a); }
.issue-rail {
  width: 3px; border-radius: 3px;
  background: color-mix(in srgb, var(--spot, #cbd5e1) 28%, transparent);
}
.tl-rail > .issue-rail { top: var(--rail-start, 0px); bottom: var(--rail-end, 0px); }
/* Watched: a ticked dot in the ink color, and a solid ink line between watched titles in a row. */
.tl-rail { --rail-done: color-mix(in srgb, var(--ink, #fff) 88%, transparent); }
.issue-rail-done { position: absolute; inset: 0 -1px; background: var(--done, none); }
.rail-live .tl-rail .issue-node.is-seen { background: var(--ink, #fff); box-shadow: 0 0 0 4px var(--bg, #040d08), 0 0 0 5px var(--spot, #cbd5e1); }
.issue-node.is-seen::before { background: var(--rail-done); opacity: 1; }
.issue-node > svg { display: none; position: absolute; inset: 0; fill: none; stroke: var(--bg, #040d08); stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.issue-node.is-seen > svg { display: block; }
/* A stub joins each dot to its card across the gap (gap-x-4 on phones, gap-x-8 from md). */
.tl-rail .issue-node::before { content: ""; position: absolute; top: 50%; left: 100%; width: 1rem; height: 2px; margin-top: -1px; background: var(--spot, #cbd5e1); opacity: .55; }
@media (min-width: 768px) {
  .tl-rail .issue-node::before { width: 2rem; }
  .tl-rail .panel[data-side="l"] .issue-node::before { left: auto; right: 100%; }
}
.issue-node { position: relative; background: var(--spot, #cbd5e1); box-shadow: 0 0 0 4px var(--bg, #040d08); }
/* Scroll-lit rail (src/rail.js): the fill runs down to mid-screen and the dots it passed glow. */
.issue-rail-fill { position: absolute; top: 0; left: 0; right: 0; height: var(--fill, 0px); border-radius: inherit; background: var(--spot, #cbd5e1); box-shadow: 0 0 10px var(--spot, #cbd5e1), 0 0 22px color-mix(in srgb, var(--spot, #cbd5e1) 50%, transparent); }
.rail-live .issue-node { transition: background .3s, box-shadow .3s, transform .3s; }
.rail-live .issue-node:not(.is-lit) { background: color-mix(in srgb, var(--spot, #cbd5e1) 35%, var(--bg, #040d08)); }
.rail-live .issue-node.is-lit { box-shadow: 0 0 0 4px var(--bg, #040d08), 0 0 14px var(--spot, #cbd5e1); transform: scale(1.15); }
/* interactive FX layered over the flat editorial background */
.issuefx-speedlines {
  position: absolute; inset: 0; opacity: 0;
  background: repeating-linear-gradient(180deg, rgba(255,255,255,.55) 0 1.5px, transparent 1.5px 9px);
  -webkit-mask-image: linear-gradient(90deg, #000, transparent 26%, transparent 74%, #000);
  mask-image: linear-gradient(90deg, #000, transparent 26%, transparent 74%, #000);
}
.issue-node::after { content: ""; position: absolute; inset: -6px; border-radius: 50%; border: 2px solid var(--spot, #cbd5e1); opacity: 0; }
.issue-fx-on .panel { opacity: 0; }
.issue-fx-on .panel.in { animation: panelReveal .6s cubic-bezier(.22,.9,.28,1) both; }
.issue-fx-on .panel.in .issue-node::after { animation: nodePing .8s ease-out both; }
@keyframes panelReveal { from { opacity: 0; transform: translateY(22px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  .issue-fx-on .panel { opacity: 1; }
  .issue-fx-on .panel.in, .issue-fx-on .panel.in .issue-node::after { animation: none; }
}
.issue-track { background: color-mix(in srgb, var(--ink, #fff) 12%, transparent); }
.issue-bar { background: var(--spot, #cbd5e1); }
.issue-seg { border: 1px solid color-mix(in srgb, var(--ink, #fff) 14%, transparent); background: color-mix(in srgb, var(--ink, #fff) 4%, transparent); }
.issue-seg-thumb { background: var(--spot, #fff); }
.issue-seg-btn { color: color-mix(in srgb, var(--ink, #fff) 55%, transparent); }
.issue-seg-btn:hover { color: var(--ink, #fff); }
.issue-seg-btn[aria-checked="true"] { color: var(--bg, #0b0f1a); }
.issue-reset { border: 1px solid color-mix(in srgb, var(--ink, #fff) 16%, transparent); color: color-mix(in srgb, var(--ink, #fff) 55%, transparent); }
.issue-reset:hover { border-color: color-mix(in srgb, var(--ink, #fff) 32%, transparent); color: var(--ink, #fff); }
/* Share, lit when progress passes a quarter mark */
.issue-reset.is-hot { border-color: var(--spot); color: var(--bg, #000); background: var(--spot); animation: share-hot 1.2s ease-out 3; }
@keyframes share-hot { from { box-shadow: 0 0 0 0 color-mix(in srgb, var(--spot) 70%, transparent); } to { box-shadow: 0 0 0 10px transparent; } }
@media (prefers-reduced-motion: reduce) { .issue-reset.is-hot { animation: none; } }
/* "which order?" guide — each option is also an order switch */
.og-sum { list-style: none; width: fit-content; }
.og-sum::-webkit-details-marker { display: none; }
.og-sum:hover { color: var(--ink, #fff); }
.og-caret { flex-shrink: 0; transition: transform .2s ease; color: var(--spot, #fff); }
.og[open] .og-caret { transform: rotate(90deg); }
.og-opt { display: block; width: 100%; cursor: pointer; }
.og-opt[aria-pressed="true"] {
  border-color: var(--spot, #fff);
  box-shadow: inset 0 0 0 1px var(--spot, #fff);
}
.og-on { color: var(--spot, #fff); }
.og[open] > div { animation: fade .3s ease both; }
/* "up next" panel + the matching marker on its card in the list */
.cont { border-color: color-mix(in srgb, var(--spot, #fff) 45%, transparent); }
.cont:hover { background: color-mix(in srgb, var(--ink, #fff) 5%, var(--bg, #0b0f1a)); }
.cont-badge { background: var(--spot, #fff); color: var(--bg, #0b0f1a); }
.issue-card.is-next { border-color: var(--spot, #fff); position: relative; }
.issue-card.is-next::before {
  content: "Up next"; position: absolute; z-index: 3; top: -9px; right: 16px;
  padding: 2px 8px; border-radius: 0; background: var(--spot, #fff); color: var(--bg, #0b0f1a);
  font-size: 10px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase;
}
/* keep the pill on the text side, away from the poster */
@media (min-width: 768px) { .panel[data-side="l"] .is-next::before { right: auto; left: 16px; } }
.issue-card.is-flash { animation: nextFlash 1.6s ease-out; }
@keyframes nextFlash {
  0%, 30% { box-shadow: 0 0 0 4px color-mix(in srgb, var(--spot, #fff) 70%, transparent); }
  100% { box-shadow: 0 0 0 14px transparent; }
}
@media (prefers-reduced-motion: reduce) { .issue-card.is-flash, .og[open] > div { animation: none; } }
/* footer: barcode + CTA, pinned to the bottom edge */
/* corner "cover flash" sticker for the pinned issue */
@media (prefers-reduced-motion: reduce) { .mag:hover { transform: none; } }

/* ---- landing backdrop: a tilted wall of every poster we cover ---- */
/* sized by posterwall.js: --pw tile width, inline width = 140vw */
.poster-wall {
  position: absolute; left: 50%; top: 50%;
  display: grid; grid-template-columns: repeat(auto-fill, var(--pw, 110px)); gap: 10px; justify-content: center;
  transform: translate(-50%, -50%) rotate(-8deg);
}
.poster-wall a { display: block; pointer-events: auto; border-radius: 0; opacity: .2; transition: opacity .6s ease, transform .6s ease, box-shadow .6s ease; }
.poster-wall img { display: block; width: 100%; aspect-ratio: 2 / 3; object-fit: cover; border-radius: 0; background: #0a1a12; }
.poster-wall a:hover, .poster-wall a.is-lit {
  opacity: 1; transform: scale(1.08); position: relative; z-index: 1;
  box-shadow: 0 0 0 2px #45e07c, 0 18px 40px -10px rgba(69,224,124,.55);
}
.poster-wall a:hover { transition-duration: .15s; }

/* ---- featured cover: the headline issue gets the front of the rack ---- */
.feat {
  position: relative; display: block; overflow: hidden; border-radius: 0;
  background: var(--bg); color: var(--ink);
  border: 1px solid color-mix(in srgb, var(--spot) 20%, transparent);
  box-shadow: 0 50px 90px -50px rgba(0,0,0,.95);
  transition: border-color .3s ease;
}
.feat:hover { border-color: color-mix(in srgb, var(--spot) 45%, transparent); }
.feat:focus-visible { outline: 2px solid var(--spot); outline-offset: 4px; }
/* print halftone bleeding in from the lower-right corner */
.feat::after {
  content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .5;
  background-image: radial-gradient(color-mix(in srgb, var(--spot) 60%, transparent) 1.1px, transparent 1.7px);
  background-size: 11px 11px;
  -webkit-mask-image: radial-gradient(circle at 100% 100%, #000, transparent 58%);
  mask-image: radial-gradient(circle at 100% 100%, #000, transparent 58%);
}
/* fandom still, fading into the cover color so the masthead stays legible */
/* countdown column */

/* ---- the newsstand: vintage comic-shop palette (oxblood + cream awning, black
   lacquer sign with gold leaf, brass shelves) on warm charcoal. The MCU window
   keeps its own Doom green so it reads as the headline. ---- */
.newsstand {
  --oxblood: #7a1f22; --cream: #efe5cc; --gold: #d9b25c; --brass: #a88a4f; --lacquer: #15110d;
  --stand-bg: radial-gradient(ellipse 90% 60% at 50% 0%, #1f1813, #0c0a08 70%);
  isolation: isolate; /* keeps the street layers below inside the stand, above any FX */
}
/* Street behind the stand: its own gradient (::before) over a hovered fandom's
   timeline color (::after); with backdrop FX both clear so the FX show through.
   standTheme() in app.js sets --th-bg / --th-ink and the is-themed / is-fx classes. */
.newsstand::before, .newsstand::after { content: ""; position: absolute; inset: 0; z-index: -1; transition: opacity .45s ease; }
.newsstand::before { background: var(--stand-bg); }
.newsstand::after {
  opacity: 0; background-color: var(--th-bg, transparent);
  background-image: radial-gradient(color-mix(in srgb, var(--th-ink, #fff) 14%, transparent) .6px, transparent .9px);
  background-size: 24px 24px;
}
/* scalloped hem along the bottom edge */
/* the shop sign hangs centered under the awning; its tower mark + NEWS go home */
.stand-tower { width: 34px; height: 34px; filter: drop-shadow(0 2px 0 rgba(0,0,0,.6)); }
@media (min-width: 640px) {
  .stand-tower { width: 44px; height: 44px; }
}
@media (max-width: 639px) { .stand-tower { width: 24px; height: 24px; }
}

/* The rack: covers stand on shelves; each slot draws its share of the brass
   ledge so a full row reads as one continuous shelf. */
.rack { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 34px 18px; padding: 12px 6px 18px; }
@media (min-width: 768px) { .rack { gap: 40px 28px; padding: 14px 10px 20px; } }
.slot { position: relative; }
.slot::after {
  content: ""; position: absolute; left: -8px; right: -8px; bottom: -11px; height: 4px; border-radius: 0;
  background: linear-gradient(180deg, #e2c27a, #7a5c25); box-shadow: 0 6px 10px -4px rgba(0,0,0,.8);
}

/* Kiosk layout. Phones: window, then the bins as 2-up grids. Tablets: both bins
   side by side under the window. Desktop: the bins flank the window. */

/* the next-issue card: an open slot waiting for the next fandom */

/* Desktop flip bins: covers overlap so only each masthead peeks out (the front
   cover shows in full); hover or focus pulls a cover to the front. */
@media (min-width: 1280px) {
  .stand {
    --side: clamp(190px, min(16vw, (100vh - 330px) / 1.5 + 40px), 250px); /* column = cover + 40px padding */
    --peek: 70px;
    --side2: clamp(160px, (100vw - 660px) / 4 - 20px, 230px); /* two bins a side */
    --cover-h: calc((var(--side) - 40px) * 1.5);
  }
  .bins { display: flex; gap: 12px; align-items: center; align-self: center; }
  .bins > .bin { flex: 0 0 var(--side); }
  .bin { position: relative; align-self: center; display: flex; flex-direction: column-reverse; gap: 0; padding: 14px 20px 26px; }
  .bin .slot { z-index: var(--z); }
  .bin .slot + .slot { margin-bottom: calc(var(--peek) - var(--cover-h)); }
  .bin .slot:focus-within { z-index: 40; }
  .bin .slot::after { display: none; }
  .bin::after { content: ""; position: absolute; left: 8px; right: 8px; bottom: 14px; height: 4px; border-radius: 0; background: linear-gradient(180deg, #e2c27a, #7a5c25); box-shadow: 0 6px 10px -4px rgba(0,0,0,.8); }
  .bin .slot:nth-child(odd) .comic { --tilt: -.8deg; }
  .bin .slot:nth-child(even) .comic { --tilt: .8deg; }
  .bin .comic-mast { font-size: calc(min(34px, calc(var(--side) * .14)) * var(--m)); }
}

/* A comic-book cover: masthead band, full-bleed art with halftone, title-count banner. */
.comic {
  --tilt: 0deg; container-type: inline-size;
  position: relative; display: block; aspect-ratio: 2 / 3; overflow: hidden; border-radius: 0;
  background: var(--bg); color: var(--ink); transform: rotate(var(--tilt));
  box-shadow: 0 0 0 3px #f5f0e1, 0 0 0 4px rgba(0,0,0,.6), 0 26px 40px -18px rgba(0,0,0,.95);
  transition: transform .25s cubic-bezier(.22,.9,.28,1), box-shadow .25s ease;
}
.slot:nth-child(4n+1) .comic { --tilt: -1.6deg; }
.slot:nth-child(4n+2) .comic { --tilt: 1.1deg; }
.slot:nth-child(4n+3) .comic { --tilt: -.6deg; }
.slot:nth-child(4n) .comic { --tilt: 1.7deg; }
a.comic:hover { transform: rotate(0) translateY(-8px) scale(1.03); box-shadow: 0 0 0 3px var(--spot), 0 0 0 4px rgba(0,0,0,.6), 0 34px 50px -18px rgba(0,0,0,.95); }
.comic:focus-visible { outline: 3px solid var(--spot); outline-offset: 5px; }
.comic-art { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; }
/* print halftone over the art */
.comic::before {
  content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; opacity: .35; mix-blend-mode: multiply;
  background-image: radial-gradient(rgba(0,0,0,.6) 1px, transparent 1.6px); background-size: 6px 6px;
}
.comic-mast {
  position: absolute; z-index: 2; left: 0; right: 0; top: 0; padding: 10px 10px 12px;
  background: linear-gradient(180deg, color-mix(in srgb, var(--bg) 78%, transparent) 30%, transparent);
  --m: 1; font-size: calc(clamp(22px, 5.6vw, 34px) * var(--m)); line-height: .9; text-transform: uppercase; color: var(--ink);
  text-shadow: 2px 2px 0 rgba(0,0,0,.55);
}
@media (min-width: 768px) { .comic-mast { font-size: calc(clamp(24px, 2.4vw, 34px) * var(--m)); padding: 12px 12px 16px; } }
/* names up to 16 letters stay on one line, scaled to the cover width (~0.42em per letter) */
.comic-banner {
  position: absolute; z-index: 2; left: 0; right: 0; bottom: 0; padding: 8px 10px 9px;
  background: var(--spot); color: var(--bg);
}
.comic-banner > span:not([class]) { display: block; font: 700 10px "Space Grotesk", sans-serif; letter-spacing: .16em; text-transform: uppercase; }
.comic-banner small { display: flex; justify-content: space-between; gap: 6px; margin-top: 3px; font-size: 11px; font-weight: 600; opacity: .8; }
@media (prefers-reduced-motion: reduce) { a.comic:hover { transform: rotate(var(--tilt)); } }
/* Headlines wrap into even, balanced lines instead of a lonely last word. */
h1, h2 { text-wrap: balance; }
/* Lining, fixed-width figures so stats, ratings and counters never jitter. */
.tnum { font-variant-numeric: tabular-nums; font-feature-settings: "tnum"; }

/* A hairline top highlight reads as a crisp, lit edge on frosted panels. */

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .view, .rise { animation: none; }
  .preview-skeleton, .xp { animation: none; }
  .comic-headline, .node::after { animation: none; }
  .galaxy-headline, .galaxy-on .panel.in { animation: none; }
  .galaxy-on .panel { opacity: 1; }
  .embers-headline, .embers-on .panel.in { animation: none; }
  .embers-on .panel { opacity: 1; }
  .magic-headline, .magic-on .panel.in, .cerebro-headline, .cerebro-on .panel.in { animation: none; }
  .magic-on .panel, .cerebro-on .panel { opacity: 1; }
}

/* ---- timeline: title links to its page; trailer stage "more" button ---- */
.tl-title { color: inherit; text-decoration: none; background-image: linear-gradient(currentColor, currentColor); background-size: 0 1px; background-position: 0 100%; background-repeat: no-repeat; transition: background-size .25s ease; }
.tl-title:hover { background-size: 100% 1px; }
.xp-more {
  display: inline-flex; align-items: center; height: 38px; margin-top: 16px; padding: 0 16px; border-radius: 0;
  font-size: 13px; font-weight: 700; color: var(--bg, #0b0f1a); background: var(--spot, #fff);
  transition: transform .2s ease, filter .2s ease;
}
.xp-more:hover { transform: translateY(-1px); filter: brightness(1.08); }
/* characters in the open title: tap one to suit up (mask transition to their page) */
.xp-chars { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.xp-char {
  display: inline-flex; align-items: center; gap: 8px; min-height: 34px; padding: 3px 12px 3px 3px; border-radius: 0;
  font-size: 12px; color: var(--ink, #fff); border: 1px solid color-mix(in srgb, var(--spot, #fff) 40%, transparent);
  background: color-mix(in srgb, var(--spot, #fff) 8%, transparent); transition: border-color .2s ease, background .2s ease, transform .2s ease;
}
.xp-char img, .xp-char > span { width: 28px; height: 28px; flex: none; border-radius: 50%; object-fit: cover; background: color-mix(in srgb, var(--ink, #fff) 12%, transparent); }
.xp-char b { font-weight: 600; white-space: nowrap; }
.xp-char:hover { border-color: var(--spot, #fff); background: color-mix(in srgb, var(--spot, #fff) 16%, transparent); transform: translateY(-1px); }

/* ---- title page ---- */
.tp-art {
  position: absolute; inset: 0 0 auto 0; height: 620px; z-index: 0; background-size: cover; background-position: center 20%;
  opacity: .32; -webkit-mask-image: linear-gradient(180deg, #000 30%, transparent); mask-image: linear-gradient(180deg, #000 30%, transparent);
}
[data-fx] > .tp-art { opacity: .28; }
.tp-crumbs { display: flex; flex-wrap: wrap; gap: 8px; font-size: 13px; color: color-mix(in srgb, var(--ink, #fff) 55%, transparent); }
.tp-crumbs a { color: var(--spot, #fff); font-weight: 600; }
.tp-crumbs a:hover { text-decoration: underline; }
.tp-head { display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: 20px; margin-top: 22px; align-items: end; }
@media (min-width: 640px) { .tp-head { grid-template-columns: 220px minmax(0, 1fr); gap: 36px; margin-top: 32px; } }
.tp-poster { width: 100%; aspect-ratio: 2 / 3; object-fit: cover; border-radius: 0; box-shadow: 0 30px 60px -24px rgba(0,0,0,.9), 0 0 0 1px color-mix(in srgb, var(--ink, #fff) 12%, transparent); }
@media (max-width: 639px) {
  .tp-head { align-items: start; }
  .tp-head h1 { font-size: 30px; }
}
.tp-tagline { margin-top: 12px; font-size: 15px; font-style: italic; color: color-mix(in srgb, var(--ink, #fff) 75%, transparent); }
/* stays on the site: the main action */
.tp-primary {
  white-space: nowrap; display: inline-flex; align-items: center; gap: 9px; height: 46px; padding: 0 22px 0 18px; border-radius: 0;
  font-size: 15px; font-weight: 700; color: var(--bg, #0b0f1a); background: var(--spot, #fff);
  box-shadow: 0 14px 32px -14px var(--spot, #fff); transition: filter .2s ease, transform .2s ease;
}
.tp-primary svg { width: 16px; height: 16px; }
.tp-primary:hover { filter: brightness(1.08); transform: translateY(-1px); }
/* leaves the site: quieter outline */
.tp-secondary {
  white-space: nowrap; display: inline-flex; align-items: center; gap: 7px; height: 46px; padding: 0 16px; border-radius: 0;
  font-size: 14px; font-weight: 600; color: color-mix(in srgb, var(--ink, #fff) 80%, transparent);
  border: 1px solid color-mix(in srgb, var(--ink, #fff) 18%, transparent); transition: color .2s ease, border-color .2s ease;
}
.tp-secondary:hover { color: var(--ink, #fff); border-color: color-mix(in srgb, var(--ink, #fff) 40%, transparent); }
.tp-trailer {
  position: relative; aspect-ratio: 16 / 9; margin-top: 36px; overflow: hidden; border-radius: 0; background: #000;
  border: 1px solid color-mix(in srgb, var(--ink, #fff) 14%, transparent);
  box-shadow: 0 40px 90px -40px color-mix(in srgb, var(--spot, #fff) 40%, transparent);
}
.tp-trailer > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .75; }
.tp-play {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; gap: 12px; width: 100%; cursor: pointer;
  font-size: 15px; font-weight: 700; color: #fff; background: radial-gradient(circle at center, rgba(0,0,0,.1), rgba(0,0,0,.55));
}
.tp-play span { display: grid; place-items: center; width: 64px; height: 64px; padding-left: 4px; border-radius: 50%; font-size: 22px; color: var(--bg, #0b0f1a); background: var(--spot, #fff); box-shadow: 0 12px 30px -8px rgba(0,0,0,.7); transition: transform .2s ease; }
.tp-play:hover span { transform: scale(1.08); }
.tp-h2 { font-size: 12px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--spot, #fff); }
.tp-label { font-size: 13px; font-weight: 600; color: color-mix(in srgb, var(--ink, #fff) 70%, transparent); }
.tp-body { margin-top: 12px; font-size: 16px; line-height: 1.75; color: color-mix(in srgb, var(--ink, #fff) 85%, transparent); }
/* Franchise request form on /about/ */
.req-form { margin-top: 48px; display: grid; gap: 14px; padding: 22px; border: 1px solid rgba(255,255,255,.1); background: rgba(255,255,255,.03); }
.req-form label { display: grid; gap: 6px; font-size: 13px; font-weight: 600; color: #cbd5e1; }
.req-form input, .req-form textarea { width: 100%; padding: 10px 12px; font: inherit; font-weight: 400; color: #fff; background: rgba(0,0,0,.35); border: 1px solid rgba(255,255,255,.16); border-radius: 0; }
.req-form input:focus, .req-form textarea:focus { outline: 2px solid #45e07c; outline-offset: 1px; }
.req-row { display: flex; align-items: center; gap: 14px; }
.req-status { font-size: 14px; color: #94a3b8; }

/* Recap and ending, each folded behind a spoiler bar */
.tp-recap { display: grid; gap: 10px; }
.tp-recap details { border: 1px solid color-mix(in srgb, var(--ink, #fff) 12%, transparent); background: color-mix(in srgb, var(--ink, #fff) 4%, transparent); padding: 14px 18px; }
.tp-recap summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; cursor: pointer; list-style: none; }
.tp-recap summary::-webkit-details-marker { display: none; }
.tp-recap summary small { font-size: 11px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: color-mix(in srgb, var(--ink, #fff) 50%, transparent); }
.tp-recap details[open] summary small { visibility: hidden; }
.tp-credits { margin-top: 12px; font-size: 14px; color: color-mix(in srgb, var(--ink, #fff) 60%, transparent); }
.tp-nb {
  display: flex; align-items: center; gap: 12px; min-height: 64px; padding: 8px; border-radius: 0;
  background: color-mix(in srgb, var(--ink, #fff) 5%, var(--bg, #0b0f1a));
  border: 1px solid color-mix(in srgb, var(--ink, #fff) 12%, transparent); transition: border-color .2s ease;
}
a.tp-nb:hover { border-color: var(--spot, #fff); }
.tp-nb img { width: 36px; aspect-ratio: 2 / 3; object-fit: cover; border-radius: 0; flex-shrink: 0; }
.tp-nb.is-empty { flex-direction: column; align-items: flex-start; justify-content: center; padding: 8px 12px; opacity: .6; }
.tp-nb-k { display: block; font-size: 10px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--spot, #fff); }
.tp-nb-t { display: block; margin-top: 2px; font-size: 14px; font-weight: 600; line-height: 1.3; color: var(--ink, #fff); }
/* Cast row: no scrollbar; swipe on touch, drag with a mouse (dragScroll in app.js).
   Edges fade only where there is more to see. */
.tp-cast {
  display: grid; grid-auto-flow: column; grid-auto-columns: 128px; gap: 14px; margin-top: 16px;
  overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none; cursor: grab; user-select: none;
  --fl: #000; --fr: #000;
  -webkit-mask-image: linear-gradient(90deg, var(--fl), #000 56px, #000 calc(100% - 56px), var(--fr));
  mask-image: linear-gradient(90deg, var(--fl), #000 56px, #000 calc(100% - 56px), var(--fr));
}
.tp-cast::-webkit-scrollbar { display: none; }
.tp-cast.more-left { --fl: transparent; }
.tp-cast.more-right { --fr: transparent; }
.tp-cast.is-dragging { cursor: grabbing; scroll-snap-type: none; }
.tp-person { scroll-snap-align: start; }
.tp-person img, .tp-person-blank { display: block; width: 100%; aspect-ratio: 2 / 3; object-fit: cover; border-radius: 0; background: color-mix(in srgb, var(--ink, #fff) 8%, var(--bg, #0b0f1a)); }
.tp-person figcaption { margin-top: 8px; }
.tp-person-n { display: block; font-size: 13px; font-weight: 700; line-height: 1.3; color: var(--ink, #fff); }
.tp-person-c { display: block; margin-top: 2px; font-size: 12px; line-height: 1.3; color: color-mix(in srgb, var(--ink, #fff) 55%, transparent); }
.tp-person-cap { display: block; margin-top: 8px; }
button.tp-person { display: block; width: 100%; padding: 0; text-align: left; cursor: pointer; background: none; border: 0; color: inherit; font: inherit; }
button.tp-person img { transition: transform .25s cubic-bezier(.22,.9,.28,1), box-shadow .25s ease; }
button.tp-person:hover img { transform: translateY(-3px); box-shadow: 0 0 0 2px var(--spot, #fff), 0 14px 30px -12px rgba(0,0,0,.8); }
button.tp-person:hover .tp-person-n { color: var(--spot, #fff); }
button.tp-person:focus-visible { outline: none; }
button.tp-person:focus-visible img { box-shadow: 0 0 0 2px var(--spot, #fff); }
.tp-cast.is-dragging button.tp-person { cursor: grabbing; }

/* ---- cast quick view (a dialog inside the title page, so it keeps the fandom palette) ---- */
.pqv { width: min(560px, calc(100vw - 32px)); max-height: min(86vh, 760px); margin: auto; padding: 0; border: 0; background: none; color: var(--ink, #fff); overflow: visible; }
.pqv::backdrop { background: rgba(2,4,8,.72); backdrop-filter: blur(6px); }
.pqv[open] .pqv-card { animation: pqvIn .28s cubic-bezier(.22,.9,.28,1) both; }
@keyframes pqvIn { from { opacity: 0; transform: translateY(12px) scale(.98); } }
.pqv-card {
  position: relative; max-height: min(86vh, 760px); overflow-y: auto; padding: 22px; border-radius: 0;
  background: color-mix(in srgb, var(--ink, #fff) 4%, var(--bg, #0b0f1a));
  border: 1px solid color-mix(in srgb, var(--ink, #fff) 14%, transparent); border-top: 2px solid var(--spot, #fff);
  box-shadow: 0 40px 90px -30px rgba(0,0,0,.9);
}
.pqv-load { padding: 40px 0; text-align: center; font-size: 14px; color: color-mix(in srgb, var(--ink, #fff) 60%, transparent); }
.pqv-x { position: absolute; top: 12px; right: 12px; display: grid; place-items: center; width: 34px; height: 34px; border-radius: 0; color: inherit; background: color-mix(in srgb, var(--ink, #fff) 8%, transparent); transition: background .2s ease; }
.pqv-x:hover { background: color-mix(in srgb, var(--ink, #fff) 16%, transparent); }
.pqv-x svg { width: 14px; height: 14px; }
.pqv-head { display: flex; gap: 18px; align-items: flex-start; padding-right: 36px; }
.pqv-photo { width: 104px; flex: none; aspect-ratio: 2 / 3; object-fit: cover; border-radius: 0; }
.pqv-k { font-size: 11px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--spot, #fff); }
.pqv-name { margin-top: 4px; font-family: 'Space Grotesk', sans-serif; font-size: 26px; font-weight: 700; line-height: 1.1; }
.pqv-head .facts { margin-top: 12px; }
.pqv-card > .stats { margin-top: 18px; padding-top: 16px; border-top: 1px solid color-mix(in srgb, var(--ink, #fff) 12%, transparent); }
.pqv-bio { margin-top: 16px; font-size: 14px; line-height: 1.65; color: color-mix(in srgb, var(--ink, #fff) 78%, transparent);
  display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.pqv-h { margin-top: 18px; font-size: 11px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--spot, #fff); }
.pqv-strip { display: grid; grid-auto-flow: column; grid-auto-columns: 72px; gap: 10px; margin-top: 10px; padding-bottom: 4px; overflow-x: auto; }
.pqv-title img, .pqv-title > span { display: block; width: 100%; aspect-ratio: 2 / 3; object-fit: cover; border-radius: 0; background: color-mix(in srgb, var(--ink, #fff) 8%, transparent); transition: box-shadow .2s ease, transform .2s ease; }
.pqv-title:hover img { transform: translateY(-2px); box-shadow: 0 0 0 2px var(--spot, #fff); }
.pqv-title small { display: block; margin-top: 4px; font-size: 10px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: color-mix(in srgb, var(--ink, #fff) 55%, transparent); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pqv-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 20px; }
.pp-blank { display: grid; place-items: center; aspect-ratio: 2 / 3; border-radius: 0; font: 700 22px 'Space Grotesk', sans-serif; color: color-mix(in srgb, var(--ink, #fff) 50%, transparent); background: color-mix(in srgb, var(--ink, #fff) 8%, var(--bg, #0b0f1a)); }

.pqv-char { display: inline-flex; align-items: center; gap: 6px; transition: opacity .2s ease; }
.pqv-char svg { width: 18px; height: 18px; }
.pqv-char:hover { opacity: .8; text-decoration: underline; text-underline-offset: 3px; }

/* ---- the two dresses of a page: actor (mask off) and hero (mask on) ---- */
.pp-top { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 52px; }
.pp-top .tp-crumbs { margin: 0; min-width: 0; }
.mask-btn {
  display: inline-flex; flex: none; align-items: center; gap: 10px; min-height: 48px; padding: 6px 18px 6px 12px; border-radius: 0;
  color: var(--ink, #fff); border: 1px solid color-mix(in srgb, var(--spot, #fff) 55%, transparent);
  background: color-mix(in srgb, var(--spot, #fff) 8%, var(--bg, #0b0f1a));
  transition: transform .2s ease, border-color .2s ease, background .2s ease;
}
.mask-btn svg { width: 26px; height: 26px; color: var(--spot, #fff); transition: transform .4s cubic-bezier(.6,0,.2,1); }
.mask-btn span { display: flex; flex-direction: column; line-height: 1.15; }
.mask-btn b { font-size: 13px; font-weight: 700; }
.mask-btn small { font-size: 11px; color: color-mix(in srgb, var(--ink, #fff) 60%, transparent); white-space: nowrap; max-width: 160px; overflow: hidden; text-overflow: ellipsis; }
.mask-btn.is-on { color: var(--bg, #0b0f1a); background: var(--spot, #fff); border-color: var(--spot, #fff); box-shadow: 0 10px 30px -12px var(--spot, #fff); }
.mask-btn.is-on svg, .mask-btn.is-on small { color: var(--bg, #0b0f1a); }
.mask-btn:hover { transform: translateY(-2px); border-color: var(--spot, #fff); }
.mask-btn:hover svg { transform: rotate(-12deg) scale(1.1); }
.mask-btn:focus-visible { outline: 2px solid var(--spot, #fff); outline-offset: 3px; }
@media (max-width: 479px) { .mask-btn small { display: none; } .pp-top .tp-crumbs span:nth-last-child(-n+2) { display: none; } }

/* hero version: a full-bleed still with the name set over it */
.hero-banner {
  position: relative; isolation: isolate; display: flex; align-items: flex-end;
  min-height: clamp(380px, 58vh, 600px); margin-top: 14px; margin-inline: calc(50% - 50vw);
  padding: 0 max(20px, calc(50vw - 488px)) 40px; overflow: hidden;
}
.hero-still { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; object-position: center 25%; filter: grayscale(.3) contrast(1.1) brightness(.72); background: color-mix(in srgb, var(--spot, #fff) 10%, var(--bg, #0b0f1a)); }
.hero-banner::after {
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background:
    linear-gradient(to top, var(--bg, #0b0f1a) 2%, color-mix(in srgb, var(--bg, #0b0f1a) 40%, transparent) 45%, transparent 75%),
    linear-gradient(90deg, color-mix(in srgb, var(--bg, #0b0f1a) 80%, transparent), transparent 70%),
    radial-gradient(ellipse at 85% 10%, color-mix(in srgb, var(--spot, #fff) 22%, transparent), transparent 55%);
}
.hero-content { position: relative; max-width: 780px; }
.ch-k { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; font-size: 11px; font-weight: 700; letter-spacing: .22em; text-transform: uppercase; color: var(--spot, #fff); }
.ch-k span { display: inline-flex; align-items: center; gap: 10px; color: color-mix(in srgb, var(--ink, #fff) 75%, transparent); }
.ch-k i { width: 1px; height: 10px; background: currentColor; opacity: .5; }
.ch-name { margin-top: 10px; font-size: clamp(56px, 11vw, 136px); line-height: .88; color: var(--ink, #fff); text-wrap: balance; text-shadow: 0 6px 40px rgba(0,0,0,.55); }
.ch-secret { display: inline-flex; align-items: center; gap: 12px; margin-top: 18px; color: inherit; }
.ch-secret small { font-size: 11px; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: color-mix(in srgb, var(--ink, #fff) 65%, transparent); }
.ch-secret span { width: clamp(120px, 22vw, 200px); height: 20px; border-radius: 0; background: repeating-linear-gradient(-45deg, var(--ink, #fff) 0 6px, color-mix(in srgb, var(--ink, #fff) 80%, transparent) 6px 12px); opacity: .9; transition: opacity .2s ease, transform .2s ease; }
.ch-secret:hover span { opacity: 1; transform: scaleX(1.04); }
.ch-secret:focus-visible { outline: 2px solid var(--spot, #fff); outline-offset: 4px; }
.hero-content .stats { margin-top: 26px; }
.ch-real { margin-left: 12px; font-size: 13px; font-weight: 600; letter-spacing: .02em; text-transform: none; color: var(--ink, #fff); }
.ch-actors { display: flex; flex-wrap: wrap; gap: 18px; margin-top: 16px; }
.ch-actor { display: flex; flex-direction: column; width: 124px; }
.ch-actor img, .ch-actor .pp-blank { width: 100%; aspect-ratio: 2 / 3; object-fit: cover; border-radius: 0; transition: transform .25s ease, box-shadow .25s ease; }
a.ch-actor[href]:hover img { transform: translateY(-3px); box-shadow: 0 0 0 2px var(--spot, #fff), 0 16px 30px -12px rgba(0,0,0,.8); }
.ch-actor b { margin-top: 8px; font-size: 14px; line-height: 1.25; color: var(--ink, #fff); }
.ch-actor small { margin-top: 2px; font-size: 12px; color: color-mix(in srgb, var(--ink, #fff) 55%, transparent); }
@media (max-width: 639px) {
  .ch-actors { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
  .ch-actor { width: auto; }
  .ch-actor b { font-size: 12px; }
  .ch-actor small { font-size: 11px; }
}

/* The redress itself (maskTo in app.js): the new page grows out of a mask
   silhouette centered on the switch while the old one sinks away; the portrait
   and name morph between their two places. */
html.is-masking .pp-visual { view-transition-name: pp-visual; }
html.is-masking .pp-name { view-transition-name: pp-name; }
html.is-masking::view-transition-old(root) { animation: maskSink .95s cubic-bezier(.6,0,.2,1) both; }
html.is-masking::view-transition-new(root) {
  animation: maskReveal .95s cubic-bezier(.6,0,.2,1) both;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='2 5 20 12' preserveAspectRatio='none'%3E%3Cpath d='M2.5 8.2c3-2 6.2-2.4 9.5-.6 3.3-1.8 6.5-1.4 9.5.6.3 4.6-1.6 8.3-5.3 8.3-1.9 0-3.1-1.2-4.2-2.6-1.1 1.4-2.3 2.6-4.2 2.6-3.7 0-5.6-3.7-5.3-8.3Z'/%3E%3C/svg%3E") no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='2 5 20 12' preserveAspectRatio='none'%3E%3Cpath d='M2.5 8.2c3-2 6.2-2.4 9.5-.6 3.3-1.8 6.5-1.4 9.5.6.3 4.6-1.6 8.3-5.3 8.3-1.9 0-3.1-1.2-4.2-2.6-1.1 1.4-2.3 2.6-4.2 2.6-3.7 0-5.6-3.7-5.3-8.3Z'/%3E%3C/svg%3E") no-repeat;
}
html.is-masking::view-transition-group(pp-visual), html.is-masking::view-transition-group(pp-name) { animation-duration: .95s; animation-timing-function: cubic-bezier(.6,0,.2,1); }
html.is-masking::view-transition-old(pp-visual), html.is-masking::view-transition-new(pp-visual) { height: 100%; object-fit: cover; }
@keyframes maskReveal {
  from { -webkit-mask-size: 0 0; mask-size: 0 0; -webkit-mask-position: var(--mx) var(--my); mask-position: var(--mx) var(--my); }
  to { -webkit-mask-size: 520vmax 312vmax; mask-size: 520vmax 312vmax; -webkit-mask-position: calc(var(--mx) - 260vmax) calc(var(--my) - 156vmax); mask-position: calc(var(--mx) - 260vmax) calc(var(--my) - 156vmax); }
}
@keyframes maskSink { to { transform: scale(.94); filter: brightness(.3) saturate(.6); } }

.pp-chars { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.pp-char {
  display: inline-flex; align-items: center; gap: 8px; min-height: 34px; padding: 0 12px 0 10px; border-radius: 0; font-size: 13px; font-weight: 600;
  color: var(--ink, #fff); border: 1px solid color-mix(in srgb, var(--spot, #fff) 45%, transparent); background: color-mix(in srgb, var(--spot, #fff) 8%, transparent);
  transition: border-color .2s ease, background .2s ease;
}
.pp-char svg { width: 18px; height: 18px; color: var(--spot, #fff); }
.pp-char:hover { border-color: var(--spot, #fff); background: color-mix(in srgb, var(--spot, #fff) 16%, transparent); }

/* ---- cast page ---- */
.pp-bio { margin-top: 12px; max-width: 72ch; }
.pp-bio p { font-size: 16px; line-height: 1.75; color: color-mix(in srgb, var(--ink, #fff) 82%, transparent); }
.pp-bio p + p { margin-top: 12px; }
.pp-fandom { margin-top: 48px; }
.pp-fandom-h { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; padding-bottom: 10px; border-bottom: 1px solid color-mix(in srgb, var(--ink, #fff) 14%, transparent); }
.pp-fandom-h h2 { font-family: 'Space Grotesk', sans-serif; font-size: clamp(20px, 3vw, 26px); font-weight: 700; color: var(--spot, #fff); }
.pp-fandom-link { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; color: color-mix(in srgb, var(--ink, #fff) 70%, transparent); transition: color .2s ease; }
.pp-fandom-link:hover { color: var(--spot, #fff); }
.pp-fandom-link svg { width: 14px; height: 14px; }
.pp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: 12px; margin-top: 16px; }
.pp-card {
  display: flex; gap: 14px; padding: 10px; border-radius: 0;
  background: color-mix(in srgb, var(--ink, #fff) 4%, var(--bg, #0b0f1a)); border: 1px solid color-mix(in srgb, var(--ink, #fff) 10%, transparent);
  transition: border-color .2s ease, transform .2s ease;
}
.pp-card:hover { border-color: var(--spot, #fff); transform: translateY(-2px); }
.pp-card > img, .pp-card > .pp-blank { width: 64px; flex: none; aspect-ratio: 2 / 3; object-fit: cover; border-radius: 0; }
.pp-card-b { display: flex; flex-direction: column; gap: 3px; min-width: 0; padding-top: 2px; }
.pp-card-b b { font-size: 15px; line-height: 1.3; color: var(--ink, #fff); }
.pp-card-b small { font-size: 13px; color: color-mix(in srgb, var(--ink, #fff) 60%, transparent); }
.pp-card-m { display: flex; align-items: center; gap: 8px; margin-top: auto; padding-top: 6px; font-size: 12px; color: color-mix(in srgb, var(--ink, #fff) 55%, transparent); }

/* homepage wordmark: gold tower (same as the newsstand sign) */
.gold-mark .stand-tower { width: 30px; height: 30px; margin-right: -6px; /* the tower sits left of its 24-unit box */ color: #d9b25c; filter: drop-shadow(0 2px 0 rgba(0,0,0,.6)); transition: filter .2s ease; }
.gold-mark:hover .stand-tower { filter: drop-shadow(0 2px 0 rgba(0,0,0,.6)) brightness(1.15); }

/* ---- viewer star rating (after "Watched") + sitewide OTW score badge ---- */
.rate { display: inline-flex; }
/* each button is half a star: left halves show the svg's left side, right halves its right side */
.rate button { width: 10px; height: 24px; padding: 2px 0; overflow: hidden; line-height: 0; color: color-mix(in srgb, var(--ink,#fff) 28%, transparent); transition: color .12s ease; }
.rate button svg { width: 20px; height: 20px; fill: currentColor; }
.rate .half-l { padding-left: 2px; width: 12px; }
.rate .half-r { padding-right: 2px; width: 12px; }
.rate .half-r svg { margin-left: -10px; }
.rate button[aria-pressed="true"] { color: var(--spot, #f5c518); }
/* hovering previews the rating up to that star */
@media (hover: hover) {
  .rate:hover button { color: var(--spot, #f5c518); }
  .rate button:hover ~ button { color: color-mix(in srgb, var(--ink,#fff) 28%, transparent); }
}
.rate button:focus-visible { outline: 2px solid color-mix(in srgb, var(--ink,#fff) 50%, transparent); border-radius: 0; }
.otw-badge { display: inline-flex; align-items: center; border-radius: 0; padding: 2px 6px; font-size: 11px; font-weight: 700;
  color: var(--spot, #45e07c); background: color-mix(in srgb, var(--spot, #45e07c) 15%, transparent); }

/* ---- metadata: each fact has its own shape, never a run of separators ---- */
/* icon chip: format (Film/Series) and setting */
.chip {
  display: inline-flex; align-items: center; gap: 5px; height: 22px; padding: 0 8px 0 7px; border-radius: 0;
  border: 1px solid color-mix(in srgb, var(--ink, #fff) 16%, transparent);
  background: color-mix(in srgb, var(--ink, #fff) 4%, transparent);
  font: 600 11px/1 Inter, sans-serif; letter-spacing: .01em; text-transform: none; white-space: nowrap;
  color: color-mix(in srgb, var(--ink, #fff) 72%, transparent);
}
.chip svg { width: 12px; height: 12px; flex: none; opacity: .85; }
.chip > span { overflow: hidden; text-overflow: ellipsis; max-width: 16ch; }
/* boxed issue number, like the mark in a magazine's corner */
.issue-tag {
  display: inline-flex; align-items: center; height: 20px; padding: 0 7px; border-radius: 0;
  border: 1px solid currentColor; font-size: 10px; letter-spacing: .14em; line-height: 1;
}
/* zero-padded order numeral on timeline cards */
.tl-no { font: 700 13px/1 "Space Grotesk", sans-serif; letter-spacing: .04em; color: var(--spot, #fff); }
.meta-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
/* numeral stats under a timeline's name */
.stats { display: flex; flex-wrap: wrap; gap: 10px 30px; }
.stats > div { display: flex; flex-direction: column-reverse; gap: 5px; }
.stats dd { font: 700 26px/1 "Space Grotesk", sans-serif; font-variant-numeric: tabular-nums; color: var(--ink, #fff); }
.stats dt { font-size: 10px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: color-mix(in srgb, var(--ink, #fff) 48%, transparent); }
/* label-over-value facts (title page, trailer drawer) */
.facts { display: flex; flex-wrap: wrap; gap: 12px 28px; margin-top: 14px; }
.facts > div { display: flex; flex-direction: column-reverse; gap: 4px; min-width: 0; }
.facts dt { font-size: 10px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: color-mix(in srgb, var(--ink, #fff) 45%, transparent); }
.facts dd { font-size: 15px; font-weight: 600; color: color-mix(in srgb, var(--ink, #fff) 92%, transparent); }
/* phones: a tidy two-column grid instead of ragged wrapping */
@media (max-width: 639px) { .facts:not(.facts--sm) { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 16px; } }
.facts--sm { gap: 10px 22px; margin-top: 10px; }
.facts--sm dd { font-size: 13px; }
.progress-pct { font: 700 15px/1 "Space Grotesk", sans-serif; margin-left: 8px; color: var(--spot, #fff); }
/* Drawn chevrons sit on the text baseline at the text size. */
.ico-chev { display: inline-block; width: 1em; height: 1em; vertical-align: -.14em; }
.ico-md .ico-chev { width: 1.25em; height: 1.25em; }
.shop-bag { display: inline-flex; }
.shop-bag svg { width: 1.15em; height: 1.15em; margin-top: -.12em; }
.ico-lg .ico-chev { width: 28px; height: 28px; }
@media (min-width: 640px) { .ico-lg .ico-chev { width: 40px; height: 40px; } }

/* ---- newsstand drag to rearrange (standDrag in app.js) ---- */
.newsstand [data-theme] { -webkit-touch-callout: none; -webkit-user-drag: none; }
.newsstand.is-dragging, .newsstand.is-dragging * { cursor: grabbing !important; user-select: none; }
::view-transition-group(*) { animation-duration: .5s; animation-timing-function: cubic-bezier(.2,.8,.2,1); }

/* ---- search (src/search.js) ---- */
.nav-group { display: flex; align-items: center; gap: 8px; }
/* Shelves by kind of fandom: enamel placards hung from a brass rod under the sign.
   The lit one is the shelf on display; hovering swings a placard on its strings. */
/* the two strings each placard hangs from */
.srch {
  --ink: #eef2f0; width: min(640px, calc(100vw - 24px)); max-height: min(70vh, 620px); margin: 12vh auto auto; padding: 0;
  display: none; flex-direction: column; overflow: hidden; border-radius: 0; color: var(--ink);
  background: rgba(12,16,15,.92); -webkit-backdrop-filter: blur(24px) saturate(1.4); backdrop-filter: blur(24px) saturate(1.4);
  border: 1px solid rgba(255,255,255,.1); box-shadow: 0 40px 100px -30px rgba(0,0,0,.9), inset 0 1px 0 rgba(255,255,255,.06);
}
.srch[open] { display: flex; animation: srchIn .18s cubic-bezier(.2,.8,.2,1); }
@keyframes srchIn { from { opacity: 0; transform: translateY(-8px) scale(.985); } }
.srch::backdrop { background: rgba(0,0,0,.55); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); }
.srch-box { display: flex; align-items: center; gap: 12px; padding: 16px 18px; border-bottom: 1px solid rgba(255,255,255,.08); }
.srch-box svg { width: 18px; height: 18px; flex: none; color: rgba(255,255,255,.5); }
.srch-box input { flex: 1; min-width: 0; background: none; border: 0; outline: 0; font: 500 17px Inter, sans-serif; color: var(--ink); }
.srch-box input::placeholder { color: rgba(255,255,255,.38); }
.srch-box input::-webkit-search-cancel-button { display: none; }
.srch-box kbd { padding: 3px 7px; border-radius: 0; font: 600 11px Inter, sans-serif; color: rgba(255,255,255,.5); border: 1px solid rgba(255,255,255,.14); }
.srch-list { overflow-y: auto; padding: 6px 8px 10px; overscroll-behavior: contain; }
.srch-h { padding: 12px 10px 6px; font-size: 10px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: rgba(255,255,255,.42); }
.srch-row { display: flex; align-items: center; gap: 12px; padding: 8px 10px; border-radius: 0; }
.srch-row.is-active { background: rgba(255,255,255,.07); box-shadow: inset 0 0 0 1px rgba(255,255,255,.08); }
.srch-thumb { width: 32px; height: 48px; flex: none; border-radius: 0; object-fit: cover; background: rgba(255,255,255,.06); }
/* fandom: a slice of its cover art with its accent color down the left edge */
.srch-art { position: relative; width: 72px; height: 44px; flex: none; overflow: hidden; border-radius: 0; background: rgba(255,255,255,.06); }
.srch-art img { width: 100%; height: 100%; object-fit: cover; }
.srch-art::after { content: ""; position: absolute; inset: 0 auto 0 0; width: 3px; background: var(--spot); }
.srch-face { display: grid; place-items: center; width: 40px; height: 40px; flex: none; border-radius: 50%; object-fit: cover;
  font: 700 12px Inter, sans-serif; color: rgba(255,255,255,.75); background: rgba(255,255,255,.09); }
.srch-main { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.srch-main b { font-size: 14px; font-weight: 600; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.srch-main small { display: flex; align-items: center; gap: 7px; font-size: 12px; color: rgba(255,255,255,.5); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.srch-tag { padding: 1px 6px; border-radius: 0; font-size: 10px; font-weight: 700; letter-spacing: .06em; color: rgba(255,255,255,.75); background: rgba(255,255,255,.08); }
.srch-empty { padding: 28px 10px; text-align: center; font-size: 14px; color: rgba(255,255,255,.45); }

/* ---- favorite fandom + cross-site awards ---- */
.fav-btn {
  display: inline-flex; align-items: center; gap: 7px; height: 34px; padding: 0 14px 0 11px; border-radius: 0;
  font-size: 12px; font-weight: 700; letter-spacing: .02em; color: color-mix(in srgb, var(--ink, #fff) 75%, transparent);
  border: 1px solid color-mix(in srgb, var(--ink, #fff) 18%, transparent); background: color-mix(in srgb, var(--ink, #fff) 4%, transparent);
  transition: color .2s ease, border-color .2s ease, background .2s ease;
}
.fav-btn svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.6; transition: transform .25s cubic-bezier(.3,1.6,.5,1), fill .2s ease; }
.fav-btn:hover { color: var(--ink, #fff); border-color: color-mix(in srgb, #ff5c7a 60%, transparent); }
.fav-btn[aria-pressed="true"] { color: #ff8da1; border-color: color-mix(in srgb, #ff5c7a 55%, transparent); background: color-mix(in srgb, #ff5c7a 12%, transparent); }
.fav-btn[aria-pressed="true"] svg { fill: #ff5c7a; stroke: #ff5c7a; transform: scale(1.12); }
.award { position: absolute; z-index: 4; top: 10px; right: -6px; display: flex; flex-direction: column; align-items: flex-end; gap: 5px; pointer-events: none; }
.award span { padding: 4px 9px; border-radius: 0; transform: rotate(4deg); box-shadow: 0 6px 14px -6px rgba(0,0,0,.8);
  font: 800 10px/1 Inter, sans-serif; letter-spacing: .1em; text-transform: uppercase; color: #1a1205; background: linear-gradient(180deg, #ffe08a, #e9b949); }
.award .is-fav { transform: rotate(-3deg); color: #fff; background: linear-gradient(180deg, #ff7d93, #e0425f); }
.comic .award { top: auto; bottom: 52px; }
.feat .award { top: 64px; right: -8px; }
.feat .award span { font-size: 11px; padding: 6px 12px; }

/* ---- leaderboard (/top/): the charts ---- */
.lb-k { font-size: 11px; font-weight: 700; letter-spacing: .22em; text-transform: uppercase; color: #45e07c; }
.lb-h1 { margin-top: 6px; font-size: clamp(48px, 9vw, 96px); line-height: .9; letter-spacing: .02em; color: #fff; }
.lb-h2 { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; margin-top: 44px; padding-bottom: 10px; font: 400 clamp(30px, 4vw, 42px)/1 "Bebas Neue", sans-serif; letter-spacing: .04em; color: #f5f0e1; border-bottom: 3px double rgba(245,240,225,.25); }
.lb-h2 small { font: 700 10px/1 "Space Grotesk", sans-serif; letter-spacing: .2em; text-transform: uppercase; color: #c9b98f; }
.lb-wall { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 30px 20px; margin-top: 26px; }
@media (min-width: 640px) { .lb-wall { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 960px) { .lb-wall { grid-template-columns: repeat(5, minmax(0, 1fr)); } }
.lb-wall li { position: relative; }
.lb-wall li:nth-child(4n+1) .comic { --tilt: -1.4deg; } .lb-wall li:nth-child(4n+2) .comic { --tilt: 1deg; }
.lb-wall li:nth-child(4n+3) .comic { --tilt: -.6deg; } .lb-wall li:nth-child(4n) .comic { --tilt: 1.5deg; }
.lb-num { position: absolute; z-index: 2; top: 6px; left: 8px; font-size: 54px; line-height: .9; color: #fff; -webkit-text-stroke: 2px #111; paint-order: stroke fill; text-shadow: 3px 3px 0 #111; }
.lb-cover .comic-banner small { display: flex; justify-content: space-between; gap: 6px; }
.lb-cover .comic-banner b { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.lb-price { position: absolute; z-index: 3; top: -12px; right: -10px; width: 52px; height: 52px; font-size: 19px; }
.lb-chart { display: grid; gap: 8px; margin-top: 18px; }
.lb-chart summary { list-style: none; cursor: pointer; }
.lb-chart summary::-webkit-details-marker { display: none; }
.lb-row { display: grid; grid-template-columns: 40px auto minmax(0, 1fr) auto; align-items: center; gap: 16px; padding: 10px 18px 10px 12px; border-radius: 0;
  color: var(--ink, #fff); background: color-mix(in srgb, var(--bg, #0b0f1a) 86%, transparent); border: 1px solid color-mix(in srgb, var(--ink, #fff) 10%, transparent);
  transition: border-color .2s ease, transform .2s ease; }
.lb-row:hover, details[open] > .lb-row { border-color: color-mix(in srgb, var(--spot, #fff) 60%, transparent); }
.lb-rank { font-size: 34px; line-height: 1; color: var(--spot, #fff); text-align: center; }
.lb-art { position: relative; width: 96px; height: 58px; overflow: hidden; border-radius: 0; background: color-mix(in srgb, var(--ink, #fff) 8%, transparent); box-shadow: 0 0 0 2px #f5f0e1; }
.lb-art img { width: 100%; height: 100%; object-fit: cover; }
.lb-name { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.lb-name b { font-size: 17px; font-weight: 700; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.lb-name small { font-size: 12px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; color: color-mix(in srgb, var(--ink, #fff) 55%, transparent); }
.lb-name .meta-row { font-size: 13px; color: color-mix(in srgb, var(--ink, #fff) 55%, transparent); }
.lb-viewers:empty { display: none; }
.lb-viewers svg { display: inline; width: 11px; height: 11px; margin-right: 3px; vertical-align: -1px; fill: #ff5c7a; }
.lb-val { display: flex; flex-direction: column; align-items: flex-end; gap: 3px; text-align: right; }
.lb-val small { font-size: 11px; font-weight: 600; letter-spacing: .04em; color: color-mix(in srgb, var(--ink, #fff) 45%, transparent); white-space: nowrap; }
.lb-score { font: 400 34px/1 "Bebas Neue", sans-serif; color: var(--spot, #fff); }
.lb-titles { display: grid; gap: 6px; padding: 8px 0 10px 28px; }
.lb-titles .lb-row { grid-template-columns: 30px 40px minmax(0, 1fr) auto; padding: 8px 16px 8px 10px; }
.lb-titles .lb-rank { font-size: 24px; }
.lb-titles .lb-score { font-size: 26px; }
.lb-poster { width: 40px; height: 60px; border-radius: 0; object-fit: cover; background: color-mix(in srgb, var(--ink, #fff) 8%, transparent); }
.lb-more { display: inline-block; margin: 4px 0 0 10px; font-size: 13px; font-weight: 600; color: var(--spot); }
.lb-more:hover { text-decoration: underline; }
@media (max-width: 639px) {
  .lb-row { gap: 10px; padding: 8px 10px 8px 6px; grid-template-columns: 28px auto minmax(0, 1fr) auto; }
  .lb-art { width: 58px; height: 40px; }
  .lb-rank { font-size: 24px; }
  .lb-name b { font-size: 15px; }
  .lb-score { font-size: 28px; }
  .lb-titles { padding-left: 8px; }
  .lb-titles .lb-row { grid-template-columns: 24px 34px minmax(0, 1fr) auto; }
  .lb-poster { width: 34px; height: 51px; }
  .lb-num { font-size: 44px; }
}

/* ---- fandom shop: spotlight rail, hero rail, toolbar, grid ---- */
/* Colors come from the fandom's issue palette (--bg, --ink, --spot). */
.shop-sec { margin-top: 44px; }
.shop-sec-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; padding-bottom: 12px; border-bottom: 1px solid color-mix(in srgb, var(--ink) 14%, transparent); }
.shop-h { font-size: clamp(24px, 3vw, 32px); line-height: 1; text-transform: uppercase; color: var(--ink); letter-spacing: .01em; }
.shop-count { font-size: 13px; color: color-mix(in srgb, var(--ink) 55%, transparent); }

/* scrolling rails */
.rail {
  display: grid; grid-auto-flow: column; gap: 16px; margin-top: 16px; padding: 4px 2px 14px;
  overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory;
}
.rail > * { scroll-snap-align: start; }
.rail--spot { grid-auto-columns: min(560px, 86%); }
.rail--heroes { grid-auto-columns: 168px; gap: 12px; }
.rail-nav { display: flex; gap: 8px; }
.rail-btn {
  display: grid; place-items: center; width: 40px; height: 40px; border-radius: 0; color: var(--ink);
  border: 1px solid color-mix(in srgb, var(--ink) 18%, transparent); background: color-mix(in srgb, var(--ink) 4%, var(--bg));
  transition: border-color .2s ease, background .2s ease;
}
.rail-btn:hover { border-color: var(--spot); background: color-mix(in srgb, var(--spot) 12%, var(--bg)); }
.rail-btn .ico-chev { width: 16px; height: 16px; }
@media (hover: none) { .rail-nav { display: none; } }

/* spotlight card: the product on white beside a dark caption */
.spot {
  display: grid; grid-template-columns: 44% minmax(0, 1fr); overflow: hidden; min-height: 240px; border-radius: 0;
  background: color-mix(in srgb, var(--ink) 6%, var(--bg)); color: var(--ink);
  border: 1px solid color-mix(in srgb, var(--ink) 14%, transparent);
  transition: border-color .2s ease, transform .2s ease;
}
.spot:hover { border-color: var(--spot); transform: translateY(-2px); }
.spot-img { display: grid; place-items: center; padding: 18px; background: #fff; }
.spot-img img { width: 100%; height: 100%; max-height: 220px; object-fit: contain; transition: transform .35s ease; }
.spot:hover .spot-img img { transform: scale(1.05); }
.spot-body { display: flex; flex-direction: column; gap: 10px; padding: 20px 20px 18px; }
.spot-k { font-size: 11px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--spot); }
.spot-title { font-family: 'Space Grotesk', sans-serif; font-weight: 700; font-size: 18px; line-height: 1.25; letter-spacing: -.01em; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.spot-foot { margin-top: auto; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; }
.spot-price { font-family: 'Space Grotesk', sans-serif; font-weight: 700; font-size: 26px; }
.spot-go { display: inline-flex; align-items: center; gap: 6px; min-height: 40px; padding: 0 14px; border-radius: 0; background: var(--spot); color: var(--bg); font-size: 13px; font-weight: 700; }
@media (max-width: 479px) { .spot { grid-template-columns: 1fr; } .spot-img { height: 190px; overflow: hidden; } .spot-img img { max-height: 154px; } }

/* hero filter cards */
.hero-card {
  display: flex; flex-direction: column; align-items: flex-start; gap: 4px; padding: 12px 14px 14px; text-align: left;
  border-radius: 0; color: var(--ink); background: color-mix(in srgb, var(--ink) 4%, var(--bg));
  border: 1px solid color-mix(in srgb, var(--ink) 14%, transparent);
  transition: border-color .2s ease, background .2s ease;
}
.hero-card:hover { border-color: color-mix(in srgb, var(--spot) 60%, transparent); }
.hero-card[aria-pressed="true"] { border-color: var(--spot); background: color-mix(in srgb, var(--spot) 16%, var(--bg)); box-shadow: inset 0 0 0 1px var(--spot); }
.hero-card:focus-visible, .spot:focus-visible, .pc:focus-visible, .rail-btn:focus-visible, .shop-clear:focus-visible { outline: 2px solid var(--spot); outline-offset: 3px; }
.hero-card-thumbs { display: flex; margin-bottom: 8px; }
.hero-card-thumbs img { width: 38px; height: 38px; padding: 3px; border-radius: 50%; object-fit: contain; background: #fff; box-shadow: 0 0 0 2px var(--bg); }
.hero-card-thumbs img + img { margin-left: -10px; }
.hero-card-name { font-family: 'Space Grotesk', sans-serif; font-weight: 700; font-size: 15px; line-height: 1.2; }
.hero-card-n { font-size: 12px; color: color-mix(in srgb, var(--ink) 55%, transparent); }

/* toolbar */
.shop-tools { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; }
.shop-search, .shop-select { position: relative; display: flex; align-items: center; }
.shop-search { flex: 1 1 240px; }
.shop-search svg { position: absolute; left: 14px; width: 16px; height: 16px; color: color-mix(in srgb, var(--ink) 50%, transparent); pointer-events: none; }
.shop-search input, .shop-select select {
  width: 100%; height: 46px; border-radius: 0; color: var(--ink); font-size: 14px;
  background: color-mix(in srgb, var(--ink) 5%, var(--bg)); border: 1px solid color-mix(in srgb, var(--ink) 16%, transparent);
}
.shop-search input { padding: 0 14px 0 40px; }
.shop-search input::placeholder { color: color-mix(in srgb, var(--ink) 45%, transparent); }
.shop-select { flex: 0 1 200px; }
.shop-select select { appearance: none; padding: 0 38px 0 14px; cursor: pointer; }
.shop-select::after {
  content: ""; position: absolute; right: 15px; width: 8px; height: 8px; pointer-events: none; transform: translateY(-2px) rotate(45deg);
  border-right: 2px solid color-mix(in srgb, var(--ink) 60%, transparent); border-bottom: 2px solid color-mix(in srgb, var(--ink) 60%, transparent);
}
.shop-select option { background: var(--bg); color: var(--ink); }
.shop-search input:focus, .shop-select select:focus { outline: none; border-color: var(--spot); box-shadow: 0 0 0 3px color-mix(in srgb, var(--spot) 25%, transparent); }
@media (max-width: 479px) { .shop-select { flex: 1 1 calc(50% - 5px); } }

/* product grid + card */
.shop-grid { display: grid; gap: 16px; margin-top: 18px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 768px) { .shop-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; } }
@media (min-width: 1100px) { .shop-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.pc {
  display: flex; flex-direction: column; overflow: hidden; border-radius: 0; color: var(--ink);
  background: color-mix(in srgb, var(--ink) 5%, var(--bg)); border: 1px solid color-mix(in srgb, var(--ink) 13%, transparent);
  transition: border-color .2s ease, transform .2s ease;
}
.pc:hover { border-color: color-mix(in srgb, var(--spot) 70%, transparent); transform: translateY(-3px); }
.pc-img { position: relative; display: block; aspect-ratio: 1; overflow: hidden; background: #fff; }
.pc-img img { position: absolute; inset: 12px; width: calc(100% - 24px); height: calc(100% - 24px); object-fit: contain; transition: transform .3s ease; }
.pc:hover .pc-img img { transform: scale(1.05); }
.pc-body { display: flex; flex: 1; flex-direction: column; gap: 8px; padding: 12px 14px 14px; }
.pc-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; font-size: 11px; color: color-mix(in srgb, var(--ink) 55%, transparent); }
.pc-meta b { font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--spot); }
.pc-meta b + span { padding-left: 8px; border-left: 1px solid color-mix(in srgb, var(--ink) 25%, transparent); }
.pc-title { font-family: 'Space Grotesk', sans-serif; font-weight: 700; font-size: 14px; line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.pc-foot { margin-top: auto; display: flex; align-items: center; justify-content: space-between; gap: 8px; padding-top: 4px; }
.pc-price { font-family: 'Space Grotesk', sans-serif; font-weight: 700; font-size: 18px; color: var(--ink); }
.pc-check { font-size: 12px; font-weight: 600; color: color-mix(in srgb, var(--ink) 55%, transparent); }
.pc-go { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 700; color: var(--spot); }
@media (max-width: 479px) { .pc-title { font-size: 13px; } .pc-go { font-size: 0; } .pc-go .ico-chev { width: 16px; height: 16px; } }

.shop-empty { margin-top: 18px; padding: 36px 16px; border-radius: 0; text-align: center; color: color-mix(in srgb, var(--ink) 70%, transparent); border: 1px dashed color-mix(in srgb, var(--ink) 22%, transparent); }
.shop-clear { margin-top: 12px; min-height: 40px; padding: 0 16px; border-radius: 0; font-size: 13px; font-weight: 700; background: var(--spot); color: var(--bg); }
@media (prefers-reduced-motion: reduce) { .spot:hover, .pc:hover, .spot:hover .spot-img img, .pc:hover .pc-img img { transform: none; } }

/* fandom fact strip under a timeline header */
.tidbits { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 18px; }
@media (min-width: 768px) { .tidbits { grid-auto-columns: minmax(0, 1fr); grid-auto-flow: column; } }
.tidbit { display: flex; flex-direction: column; gap: 3px; min-width: 0; padding: 12px 14px; border-radius: 0; transition: transform .2s ease; }
a.tidbit:hover { transform: translateY(-2px); }
.tidbit span { font-size: 10px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; }
.tidbit b { font-family: "Bebas Neue", "Space Grotesk", sans-serif; font-weight: 400; font-size: 24px; line-height: 1.05; letter-spacing: .02em; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.tidbit small { font-size: 12px; }

/* nav: icon-only on phones */
@media (max-width: 639px) { .nav-btn--icon span { display: none; } .nav-btn--icon { padding: 0 12px; } }

/* My List button (cards, title pages, list rows) */
.list-btn { display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px 4px 8px; border-radius: 0; font-size: 12px; font-weight: 600; white-space: nowrap;
  color: color-mix(in srgb, var(--ink, #fff) 70%, transparent); border: 1px solid color-mix(in srgb, var(--ink, #fff) 18%, transparent); transition: color .2s ease, border-color .2s ease, background .2s ease; }
.list-btn svg { width: 12px; height: 12px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linejoin: round; }
.list-btn:hover { color: var(--ink, #fff); border-color: var(--spot, #45e07c); }
.list-btn[aria-pressed="true"] { color: var(--bg, #04140a); background: var(--spot, #45e07c); border-color: var(--spot, #45e07c); }
.list-btn[aria-pressed="true"] svg { fill: currentColor; }
.list-btn:focus-visible { outline: 2px solid var(--spot, #45e07c); outline-offset: 2px; }

/* "Optional" chip on skippable titles */
.chip--opt { color: color-mix(in srgb, var(--ink, #fff) 55%, transparent); border-style: dashed; }

/* Essentials only switch */
/* Skip the filler: a big switch under Shop. Off, the track is an outline and
   the knob sits left; on, the track fills with the fandom's spot colour. */
.ess-btn { display: flex; align-items: center; gap: 14px; width: 100%; padding: 8px 18px 8px 8px; border-radius: 0; text-align: left;
  color: var(--ink, #fff); border: 1px solid color-mix(in srgb, var(--spot, #45e07c) 45%, transparent); background: rgba(0,0,0,.45);
  transition: border-color .2s ease, background-color .2s ease; }
.ess-btn:hover { border-color: var(--spot, #45e07c); }
.ess-btn:focus-visible { outline: 2px solid var(--spot, #45e07c); outline-offset: 3px; }
.ess-track { position: relative; flex: none; width: 92px; height: 50px; border-radius: 0; border: 2px solid color-mix(in srgb, var(--spot, #45e07c) 60%, transparent); background: color-mix(in srgb, var(--spot, #45e07c) 8%, transparent); transition: background-color .25s ease, border-color .25s ease; }
.ess-knob { position: absolute; top: 3px; left: 3px; display: grid; place-items: center; width: 40px; height: 40px; border-radius: 0; background: #0d110e; box-shadow: 0 2px 6px rgba(0,0,0,.6); transition: transform .3s cubic-bezier(.3,1.3,.5,1); }
.ess-knob svg { width: 32px; height: 32px; }
.ess-hood { fill: #2f5a35; }
.ess-plate { fill: #b9c2bd; }
.ess-eye { fill: #0d110e; transition: fill .25s ease; }
.ess-line { stroke: #6d7772; stroke-width: .7; }
.ess-text { display: grid; gap: 3px; min-width: 0; }
.ess-text b { font: 400 26px/1 'Bebas Neue', sans-serif; letter-spacing: .04em; }
.ess-text small { font-size: 12px; font-weight: 500; line-height: 1.3; color: color-mix(in srgb, var(--ink, #fff) 65%, transparent); }
.ess-btn[aria-pressed="true"] { border-color: var(--spot, #45e07c); }
.ess-btn[aria-pressed="true"] .ess-track { background: var(--spot, #45e07c); border-color: var(--spot, #45e07c); }
.ess-btn[aria-pressed="true"] .ess-knob { transform: translateX(42px); }
.ess-btn[aria-pressed="true"] .ess-eye { fill: var(--spot, #45e07c); }
@media (prefers-reduced-motion: reduce) { .ess-knob, .ess-track { transition: none; } }

/* My List + calendar rows */
.ml-empty { margin-top: 18px; color: #94a3b8; }
.ml-list { display: grid; gap: 10px; margin-top: 18px; }
.cal-row { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 14px; padding: 10px 14px 10px 10px; border-radius: 0;
  background: color-mix(in srgb, var(--spot, #45e07c) 6%, rgba(8,14,11,.82)); border: 1px solid color-mix(in srgb, var(--spot, #45e07c) 18%, transparent); }
.cal-row { grid-template-columns: auto auto minmax(0, 1fr) auto; }
.ml-poster { display: block; width: 46px; aspect-ratio: 2 / 3; border-radius: 0; object-fit: cover; background: rgba(255,255,255,.06); }
.ml-body { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.ml-fandom { font-size: 10px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--spot, #45e07c); }
.ml-title { font: 700 17px/1.25 "Space Grotesk", sans-serif; color: #fff; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ml-title:hover { text-decoration: underline; text-underline-offset: 3px; }
.ml-body .meta-row { color: #94a3b8; font-size: 13px; }
@media (max-width: 479px) { .cal-row .list-btn span { display: none; } .cal-row .list-btn { padding: 6px; } }
.cal-date { display: flex; flex-direction: column; align-items: center; width: 44px; line-height: 1; }
.cal-date small { font-size: 10px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--spot, #45e07c); }
.cal-date b { margin-top: 4px; font: 400 26px/1 "Bebas Neue", sans-serif; color: #fff; }
.cal-h { margin-top: 34px; font: 400 26px/1 "Bebas Neue", sans-serif; letter-spacing: .04em; color: #e2e8f0; }
.cal-catch { font-size: 12px; color: color-mix(in srgb, var(--spot, #45e07c) 80%, #fff); }
.cal-catch:hover { text-decoration: underline; }

/* site footer links */
.site-foot { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px 20px; }
.site-foot a { text-decoration: underline; text-underline-offset: 3px; }

/* static hub pages: guides, directors, writers (scripts/build-hubs.mjs) */
.hub { background: radial-gradient(1200px 600px at 15% -10%, rgba(19,122,62,.35), transparent 60%), #040d08; color: #cbd5e1; }
.hub-body h2 { margin-top: 40px; font: 400 30px/1.05 "Bebas Neue", sans-serif; letter-spacing: .03em; color: #fff; }
.hub-body p { line-height: 1.7; }
.hub-body a { color: #fff; }
.hub-crumbs { display: flex; flex-wrap: wrap; gap: 8px; font-size: 13px; color: #64748b; }
.hub-crumbs a { color: #94a3b8; } .hub-crumbs a:hover { color: #fff; }
.hub-h1 { margin-top: 6px; font-size: clamp(40px, 7vw, 72px); line-height: .95; color: #fff; }
.hub-meta { margin-top: 12px; font-size: 13px; color: #64748b; }
.hub-answer { margin-top: 20px; padding: 18px 20px; border-left: 3px solid #45e07c; border-radius: 0; background: rgba(69,224,124,.07); font-size: 17px; color: #e2e8f0; }
.hub-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 10px; margin-top: 18px; }
.hub-stats div { padding: 12px 14px; border-radius: 0; background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.08); }
.hub-stats dt { font-size: 10px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: #45e07c; }
.hub-stats dd { margin-top: 4px; font: 600 16px/1.3 "Space Grotesk", sans-serif; color: #fff; }
.hub-cta { margin-top: 22px; }
.hub-body .hub-cta { color: #04140a; }
.hub-list { margin-top: 14px; display: grid; gap: 2px; counter-reset: hub; }
.hub-list li { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; padding: 9px 0; border-bottom: 1px solid rgba(255,255,255,.06); }
ol.hub-list li::before { counter-increment: hub; content: counter(hub, decimal-leading-zero); min-width: 26px; font: 700 12px/1 "Space Grotesk", sans-serif; color: #45e07c; }
.hub-list a { font-weight: 600; } .hub-list a:hover { text-decoration: underline; }
.hub-list span { font-size: 13px; color: #64748b; }
.hub-list em { font-style: normal; color: #94a3b8; }
.hub-tag { font-size: 12px; color: #45e07c !important; }
.hub-faq { margin-top: 12px; display: grid; gap: 8px; }
.hub-faq details { padding: 12px 16px; border-radius: 0; background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.08); }
.hub-faq summary { cursor: pointer; font-weight: 600; color: #fff; }
.hub-faq p { margin-top: 8px; }
.hub-links { margin-top: 12px; display: grid; gap: 8px; }
.hub-links a { text-decoration: underline; text-underline-offset: 3px; }
.hub-person { display: flex; align-items: flex-end; gap: 18px; margin-top: 14px; }
.hub-person img { width: 92px; border-radius: 0; }
.hub-films { margin-top: 14px; display: grid; gap: 8px; }
.hub-film { display: grid; grid-template-columns: 46px minmax(0, 1fr); align-items: center; gap: 14px; }
.hub-film img, .hub-film > span { width: 46px; aspect-ratio: 2 / 3; border-radius: 0; object-fit: cover; background: rgba(255,255,255,.06); }
.hub-film div { display: flex; flex-direction: column; gap: 2px; } .hub-film div > a, .hub-film div { font-weight: 600; color: #fff; }
.hub-film div span { font-size: 13px; font-weight: 400; color: #64748b; }
.hub-grid { margin-top: 20px; display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 14px; }
.hub-grid a { display: flex; flex-direction: column; gap: 6px; }
.hub-grid img, .hub-grid span { width: 100%; aspect-ratio: 2 / 3; border-radius: 0; object-fit: cover; background: rgba(255,255,255,.06); }
.hub-grid b { font-size: 14px; color: #fff; } .hub-grid small { font-size: 12px; color: #64748b; }
.hub-grid a:hover b { text-decoration: underline; }

/* calendar: franchise picker rail (cover tiles) */
.cal-rail { position: relative; display: flex; gap: 10px; margin: 22px -20px 0; padding: 4px 20px 12px; overflow-x: auto; scroll-snap-type: x proximity; scroll-padding-inline: 20px; scrollbar-width: none; cursor: grab; }
/* fade whichever edge has more to scroll (dragScroll sets more-left / more-right) */
.cal-rail.more-right { -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 56px), transparent); mask-image: linear-gradient(90deg, #000 calc(100% - 56px), transparent); }
.cal-rail.more-left { -webkit-mask-image: linear-gradient(90deg, transparent, #000 56px); mask-image: linear-gradient(90deg, transparent, #000 56px); }
.cal-rail.more-left.more-right { -webkit-mask-image: linear-gradient(90deg, transparent, #000 56px, #000 calc(100% - 56px), transparent); mask-image: linear-gradient(90deg, transparent, #000 56px, #000 calc(100% - 56px), transparent); }
.cal-rail::-webkit-scrollbar { display: none; }
@media (min-width: 640px) { .cal-rail { margin-inline: -24px; padding-inline: 24px; scroll-padding-inline: 24px; } }
.cal-pick { position: relative; flex: 0 0 148px; height: 86px; scroll-snap-align: start; display: flex; flex-direction: column; justify-content: flex-end; gap: 1px; padding: 10px 12px; border-radius: 0; overflow: hidden; isolation: isolate;
  border: 1px solid rgba(255,255,255,.1); background: #0b1410; transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease; }
.cal-pick-art { position: absolute; inset: 0; z-index: -1; }
.cal-pick-art img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.7) brightness(.55); transition: filter .3s ease, transform .4s ease; }
.cal-pick-art::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 20%, rgba(0,0,0,.85)); }
.cal-pick--all .cal-pick-art { background: radial-gradient(120% 120% at 0% 0%, rgba(69,224,124,.45), transparent 60%), #0b1410; }
.cal-pick b { font: 400 21px/1 "Bebas Neue", sans-serif; letter-spacing: .03em; color: #fff; }
.cal-pick small { font-size: 11px; font-weight: 600; color: rgba(255,255,255,.6); }
.cal-pick:hover { transform: translateY(-2px); border-color: color-mix(in srgb, var(--spot, #45e07c) 60%, transparent); }
.cal-pick:hover .cal-pick-art img { filter: saturate(1) brightness(.7); transform: scale(1.05); }
.cal-pick[aria-current="true"] { border-color: var(--spot, #45e07c); box-shadow: 0 0 0 1px var(--spot, #45e07c), 0 10px 30px -12px var(--spot, #45e07c); }
.cal-pick[aria-current="true"] .cal-pick-art img { filter: saturate(1) brightness(.75); }
.cal-pick[aria-current="true"] small { color: var(--spot, #45e07c); }
.cal-pick:focus-visible { outline: 2px solid var(--spot, #45e07c); outline-offset: 2px; }

/* calendar: month grid */
.cg { margin-top: 18px; padding: 18px; border-radius: 0; background: rgba(8,14,11,.78); border: 1px solid rgba(255,255,255,.08); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.cg-head { display: flex; align-items: center; gap: 14px; margin-bottom: 14px; }
.cg-month { font: 400 34px/1 "Bebas Neue", sans-serif; letter-spacing: .03em; color: #fff; }
.cg-month span { color: #45e07c; }
.cg-count { font-size: 12px; font-weight: 600; color: #64748b; }
.cg-nav { display: flex; gap: 6px; margin-left: auto; }
.cg-step { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 0; color: #e2e8f0; border: 1px solid rgba(255,255,255,.12); background: rgba(255,255,255,.04); transition: background .2s ease, border-color .2s ease; }
.cg-step:first-child svg { transform: rotate(180deg); }
.cg-step:hover:not(:disabled) { border-color: #45e07c; background: rgba(69,224,124,.1); }
.cg-step:disabled { opacity: .3; cursor: default; }
.cg-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; }
.cg-dow { padding-bottom: 4px; text-align: center; font-size: 10px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: #64748b; }
.cg-cell { position: relative; aspect-ratio: 1 / 1; min-height: 44px; border-radius: 0; overflow: hidden; background: rgba(255,255,255,.035); border: 1px solid rgba(255,255,255,.05); }
@media (min-width: 768px) { .cg-cell { aspect-ratio: auto; height: 96px; } }
.cg-cell.is-out { background: transparent; border-color: transparent; }
.cg-cell.is-past { opacity: .55; }
.cg-cell.is-today { border-color: #45e07c; box-shadow: inset 0 0 0 1px #45e07c; }
.cg-day { position: absolute; top: 6px; left: 8px; z-index: 2; font: 700 12px/1 "Space Grotesk", sans-serif; color: #94a3b8; }
.cg-cell.has-release { border-color: color-mix(in srgb, var(--spot) 55%, transparent); transition: transform .2s ease, box-shadow .2s ease; }
.cg-cell.has-release:hover { transform: translateY(-2px); box-shadow: 0 12px 28px -14px var(--spot); }
.cg-cell.has-release .cg-day { color: #fff; text-shadow: 0 1px 4px rgba(0,0,0,.8); }
.cg-cell img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.cg-cell.has-release::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.35), transparent 35%, transparent 45%, rgba(0,0,0,.9)); }
.cg-title { position: absolute; left: 7px; right: 7px; bottom: 6px; z-index: 2; font-size: 11px; font-weight: 700; line-height: 1.15; color: #fff; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.cg-more { position: absolute; top: 5px; right: 6px; z-index: 2; padding: 1px 5px; border-radius: 0; font-size: 10px; font-weight: 700; color: var(--bg, #04140a); background: var(--spot, #45e07c); }
@media (max-width: 639px) { .cg { padding: 12px; margin-inline: -4px; } .cg-grid { gap: 4px; } .cg-title { display: none; } .cg-month { font-size: 28px; } .cg-count { display: none; } }
.cal-row { scroll-margin: 90px; }
.cal-row.is-flash { animation: cal-flash 1.4s ease; }
@keyframes cal-flash { 0%, 40% { box-shadow: 0 0 0 2px var(--spot, #45e07c); } 100% { box-shadow: 0 0 0 0 transparent; } }

/* timeline: search-facing subtitle, the about-the-order section, footer catalog */
.tl-kw { margin-top: 6px; font-size: 14px; }
.tl-about { margin-top: 48px; padding: 22px 24px; border-radius: 0; }
.tl-about h2 { font: 400 30px/1.05 "Bebas Neue", sans-serif; letter-spacing: .03em; }
.tl-about h3 { margin-top: 22px; font-size: 11px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; }
.tl-answer { margin-top: 10px; font-size: 16px; line-height: 1.7; color: color-mix(in srgb, var(--ink, #fff) 86%, transparent); }
.tl-next { margin-top: 10px; display: grid; gap: 6px; }
.tl-next li { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 4px 16px; padding: 8px 0; border-bottom: 1px solid color-mix(in srgb, var(--ink, #fff) 8%, transparent); }
.tl-next span { font-size: 13px; }
.tl-cal { display: inline-flex; align-items: center; gap: 4px; margin-top: 10px; font-size: 13px; font-weight: 600; }
.tl-faq { margin-top: 10px; display: grid; gap: 8px; }
.tl-faq details { padding: 11px 14px; border-radius: 0; border: 1px solid color-mix(in srgb, var(--ink, #fff) 10%, transparent); }
.tl-faq summary { cursor: pointer; font-weight: 600; }
.tl-faq p { margin-top: 8px; font-size: 14px; line-height: 1.65; }

/* per-title notes (src/notes.js) */
.tl-note { margin-top: 6px; font-size: 13px; line-height: 1.5; }
.hub-list .hub-note { flex-basis: 100%; padding-left: 38px; font-size: 13px; color: #94a3b8; }
ul.hub-list .hub-note { padding-left: 0; }

/* watchlist */
.wl-hero { padding-top: 8px; }
.wl-h1 { font-size: clamp(56px, 9vw, 112px); line-height: .9; color: #fff; }
.wl-stats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 22px; }
@media (min-width: 768px) { .wl-stats { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.wl-stats div { padding: 14px 16px; border-radius: 0; background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.08); }
.wl-stats dt { font-size: 10px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: #45e07c; }
.wl-stats dd { margin-top: 6px; font: 400 30px/1 "Bebas Neue", sans-serif; letter-spacing: .02em; color: #fff; }
.wl-next { position: relative; display: flex; align-items: flex-end; min-height: 340px; margin-top: 26px; border-radius: 0; overflow: hidden; isolation: isolate;
  background: #0b1410; border: 1px solid color-mix(in srgb, var(--spot) 40%, transparent); box-shadow: 0 30px 80px -40px var(--spot); }
.wl-next-bg { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; }
.wl-next::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(4,8,6,.94) 0%, rgba(4,8,6,.75) 45%, rgba(4,8,6,.15) 100%), linear-gradient(0deg, rgba(4,8,6,.8), transparent 50%); }
.wl-next-body { max-width: 560px; padding: 28px; }
.wl-k { font-size: 10px; font-weight: 700; letter-spacing: .22em; text-transform: uppercase; color: var(--spot); }
.wl-fandom { display: block; margin-top: 10px; font-size: 11px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: color-mix(in srgb, var(--spot) 80%, #fff); }
.wl-next-title { margin-top: 4px; font-size: clamp(38px, 5vw, 60px); line-height: .95; color: #fff; }
.wl-meta { display: block; margin-top: 6px; font-size: 13px; color: #a3b1a8; }
.wl-note { margin-top: 10px; font-size: 14px; line-height: 1.6; color: #cbd5d0; }
.wl-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.wl-go { display: inline-flex; align-items: center; gap: 6px; padding: 11px 18px; border-radius: 0; font-weight: 700; background: var(--spot); color: var(--bg, #04140a); }
.wl-btn { padding: 11px 16px; border-radius: 0; font-weight: 600; color: #fff; border: 1px solid rgba(255,255,255,.22); background: rgba(255,255,255,.06); }
.wl-btn:hover { border-color: var(--spot); }
.wl-bar { display: inline-flex; flex-wrap: wrap; gap: 4px; margin-top: 30px; padding: 4px; border-radius: 0; background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.08); }
.wl-bar button { padding: 8px 14px; border-radius: 0; font-size: 13px; font-weight: 600; color: #a3b1a8; }
.wl-bar button[aria-checked="true"] { background: #45e07c; color: #04140a; }
.wl-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 14px; margin-top: 18px; }
@media (min-width: 640px) { .wl-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 900px) { .wl-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); } }
.wl-card { position: relative; display: flex; flex-direction: column; gap: 8px; }
.wl-poster { position: relative; display: block; aspect-ratio: 2 / 3; border-radius: 0; overflow: hidden; background: rgba(255,255,255,.05);
  border: 1px solid color-mix(in srgb, var(--spot) 30%, transparent); transition: transform .25s ease, box-shadow .25s ease; }
.wl-poster img { width: 100%; height: 100%; object-fit: cover; }
.wl-shade { position: absolute; inset: 0; background: linear-gradient(0deg, rgba(0,0,0,.45), transparent 40%); }
.wl-card:hover .wl-poster { transform: translateY(-3px); box-shadow: 0 18px 40px -18px var(--spot); }
.wl-card.is-seen .wl-poster img { filter: grayscale(.8) brightness(.6); }
.wl-seen { position: absolute; left: 8px; top: 8px; padding: 3px 8px; border-radius: 0; font-size: 10px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; background: var(--spot); color: var(--bg, #04140a); }
.wl-card-body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.wl-card-body .wl-fandom { margin-top: 0; font-size: 10px; }
.wl-title { font: 700 15px/1.25 "Space Grotesk", sans-serif; color: #fff; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.wl-title:hover { text-decoration: underline; text-underline-offset: 3px; }
.wl-card .wl-meta { margin-top: 0; font-size: 12px; }
.wl-card-actions { position: absolute; top: 8px; right: 8px; display: flex; gap: 6px; opacity: 0; transition: opacity .2s ease; }
.wl-card:hover .wl-card-actions, .wl-card:focus-within .wl-card-actions { opacity: 1; }
@media (hover: none) { .wl-card-actions { opacity: 1; } }
.wl-icon { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 0; color: #fff; background: rgba(4,8,6,.75); border: 1px solid rgba(255,255,255,.2); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.wl-icon svg { width: 15px; height: 15px; }
.wl-icon:hover { border-color: var(--spot); color: var(--spot); }
.wl-icon[data-wl-watch][aria-pressed="true"] { background: var(--spot); color: var(--bg, #04140a); border-color: var(--spot); }
.wl-empty { margin-top: 24px; }
.wl-empty-h { font-size: 40px; color: #fff; }
.wl-empty-k { margin-top: 18px; font-size: 11px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: #45e07c; }
.wl-empty .wl-card-actions { opacity: 1; }

/* guides: banners, lead story, card grid (scripts/build-hubs.mjs) */
.hub-body .gd-banner { position: relative; display: flex; align-items: flex-end; min-height: 300px; margin: 18px -20px 0; padding: 28px 24px; overflow: hidden; isolation: isolate; border-radius: 0; }
@media (min-width: 640px) { .hub-body .gd-banner { margin-inline: 0; border-radius: 0; border: 1px solid color-mix(in srgb, var(--spot) 35%, transparent); box-shadow: 0 30px 80px -40px var(--spot); } }
.gd-banner img, .gd-lead img { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; }
.gd-banner::before, .gd-lead::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(0deg, rgba(4,8,6,.96) 5%, rgba(4,8,6,.55) 55%, rgba(4,8,6,.2)); }
.gd-banner .hub-h1 { margin-top: 8px; }
.gd-kicker { display: block; font-size: 10px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: color-mix(in srgb, var(--spot, #45e07c) 65%, #fff); }
.hub-body .gd-lead { position: relative; display: flex; align-items: flex-end; min-height: 360px; margin-top: 22px; padding: 28px; overflow: hidden; isolation: isolate; border-radius: 0;
  border: 1px solid color-mix(in srgb, var(--spot) 35%, transparent); box-shadow: 0 30px 80px -40px var(--spot); transition: transform .25s ease; }
.gd-lead:hover { transform: translateY(-3px); }
.gd-lead-body { display: flex; flex-direction: column; gap: 8px; max-width: 560px; }
.gd-lead-body b { font-size: clamp(34px, 5vw, 54px); font-weight: 400; line-height: .95; color: #fff; }
.gd-lead-text { font-size: 15px; line-height: 1.6; color: #cbd5d0; }
.gd-go { align-self: flex-start; margin-top: 6px; padding: 10px 16px; border-radius: 0; font-size: 14px; font-weight: 700; background: var(--spot); color: #04140a; }
.gd-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; margin-top: 14px; }
@media (min-width: 640px) { .gd-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.hub-body .gd-card { display: flex; flex-direction: column; height: 100%; overflow: hidden; border-radius: 0; background: rgba(255,255,255,.035);
  border: 1px solid color-mix(in srgb, var(--spot) 22%, transparent); transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease; }
.gd-card:hover { transform: translateY(-3px); border-color: var(--spot); box-shadow: 0 20px 50px -30px var(--spot); }
.gd-card img, .gd-card > span:first-child { width: 100%; aspect-ratio: 16 / 7; object-fit: cover; background: rgba(255,255,255,.04); }
.gd-card-body { display: flex; flex-direction: column; gap: 6px; padding: 14px 16px 16px; }
.gd-card-body b { font: 700 17px/1.3 "Space Grotesk", sans-serif; color: #fff; }
.gd-card-body small { font-size: 12px; color: #8a9a92; }

/* books, comics and games on the timeline (src/extras.js) */
.xs-switch { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.xs-k { margin-right: 4px; font-size: 11px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: color-mix(in srgb, var(--ink, #fff) 55%, transparent); }
.xs-chip { display: inline-flex; align-items: center; gap: 6px; padding: 6px 11px; border-radius: 0; font-size: 13px; font-weight: 600;
  color: var(--ink, #fff); border: 1px solid color-mix(in srgb, var(--ink, #fff) 18%, transparent); background: color-mix(in srgb, var(--ink, #fff) 5%, transparent); transition: background .2s ease, border-color .2s ease; }
.xs-chip svg { width: 15px; height: 15px; }
.xs-chip small { font-size: 11px; color: color-mix(in srgb, var(--ink, #fff) 55%, transparent); }
.xs-chip:hover { border-color: var(--spot); }
.xs-chip[aria-pressed="true"] { background: var(--spot); border-color: var(--spot); color: var(--bg, #04140a); }
.xs-chip[aria-pressed="true"] small { color: inherit; opacity: .7; }
.xs-chip:focus-visible { outline: 2px solid var(--spot); outline-offset: 2px; }
.tl-xnode { position: relative; display: grid; place-items: center; width: 22px; height: 22px; margin-left: -4px; border-radius: 0; color: var(--spot); background: var(--bg, #04140a); border: 1px solid color-mix(in srgb, var(--spot) 55%, transparent); }
@media (min-width: 768px) { .tl-xnode { margin-left: 0; } }
.tl-xnode svg { width: 13px; height: 13px; }
.tl-extra { padding: 14px 16px; border-style: dashed !important; }
.tl-xkick { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 6px; font-size: 11px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--spot); }
.tl-xkind { display: inline-flex; align-items: center; gap: 6px; }
.tl-xkind svg { width: 13px; height: 13px; }
.tl-xby { margin-top: 2px; font-size: 13px; }

/* site menu drawer (src/menu.js): a sheet of the newspaper (.np-sheet supplies the paper and inks) */
dialog.menu { position: fixed; inset: 0 auto 0 0; z-index: 60; width: min(400px, 90vw); height: 100dvh; max-height: none; margin: 0; padding: 14px 18px 28px; overflow-y: auto; border: 0;
  border-right: 1px solid var(--news-ink); box-shadow: 30px 0 80px -30px rgba(0,0,0,.9); }
dialog.menu::before { display: none; }
dialog.menu[open] { animation: menu-in .28s cubic-bezier(.2,.8,.2,1); }
dialog.menu::backdrop { background: rgba(2,6,4,.6); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); }
@keyframes menu-in { from { transform: translateX(-100%); } to { transform: none; } }
@media (prefers-reduced-motion: reduce) { dialog.menu[open] { animation: none; } }
.menu-mast { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding-bottom: 8px; border-bottom: 3px double var(--news-ink); }
.menu-sign { font: 400 clamp(24px, 7vw, 30px)/1.05 var(--mast); color: var(--news-ink); }
.menu-sign:hover { color: var(--news-red); }
.menu-x { display: grid; place-items: center; flex: none; width: 36px; height: 36px; color: var(--news-ink); border: 1px solid var(--news-ink); }
.menu-x svg { width: 15px; height: 15px; }
.menu-x:hover { color: var(--news-red); border-color: var(--news-red); }
.menu-rule { display: flex; align-items: center; gap: 10px; margin: 16px 0 4px; font: italic 15px/1 var(--fell); color: var(--news-grey); }
.menu-rule::after { content: ""; flex: 1; border-top: 1px solid var(--news-ink); }
.menu-links { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 18px; }
.menu-links a { display: flex; align-items: center; gap: 8px; min-height: 40px; border-bottom: 1px solid color-mix(in srgb, var(--news-ink) 22%, transparent);
  font: 15px/1.15 var(--fell-sc); letter-spacing: .06em; color: var(--news-ink); }
.menu-links svg { width: 14px; height: 14px; flex: none; color: var(--news-red); }
.menu-links a:hover, .menu-links a:focus-visible { color: var(--news-red); }
.menu-shelves { display: grid; }
.shelf summary { display: flex; align-items: center; gap: 10px; min-height: 44px; cursor: pointer; list-style: none; border-bottom: 1px solid color-mix(in srgb, var(--news-ink) 22%, transparent);
  font: 400 22px/1 var(--wood); letter-spacing: .03em; text-transform: uppercase; color: var(--news-ink); }
.shelf summary::-webkit-details-marker { display: none; }
.shelf summary small { font: italic 14px/1 var(--fell); text-transform: none; color: var(--news-grey); }
.shelf summary::after { content: ""; width: 7px; height: 7px; margin-left: auto; border-right: 1.5px solid var(--news-ink); border-bottom: 1.5px solid var(--news-ink); transform: rotate(45deg) translateY(-2px); transition: transform .2s ease; }
.shelf[open] summary { border-bottom-color: var(--news-ink); }
.shelf[open] summary::after { transform: rotate(225deg) translateY(-2px); }
.shelf summary:hover { color: var(--news-red); }
.shelf ul { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px 10px; padding: 12px 0 16px; }
.mini { position: relative; display: flex; flex-direction: column; justify-content: space-between; aspect-ratio: 3 / 4; overflow: hidden;
  color: var(--ink); background: var(--bg); border: 1px solid var(--news-ink); transition: transform .15s ease; }
.mini img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.mini b { position: relative; z-index: 1; padding: 7px 7px 10px; font: 400 17px/.92 "Bebas Neue", sans-serif; letter-spacing: .03em; text-transform: uppercase; overflow-wrap: anywhere; text-shadow: 1px 1px 0 rgba(0,0,0,.5);
  background: linear-gradient(180deg, color-mix(in srgb, var(--bg) 85%, transparent) 40%, transparent); }
.mini small { position: relative; z-index: 1; padding: 4px 7px; font: 700 8px/1 "Space Grotesk", sans-serif; letter-spacing: .14em; text-transform: uppercase; color: var(--bg); background: var(--spot); }
.mini:hover, .mini:focus-visible { transform: translateY(-3px); }
.mini:focus-visible { outline: 2px solid var(--news-red); outline-offset: 3px; }

/* Spin the Rack + Scene Quiz (src/picker.js, src/guess.js): shop-counter objects, not form controls */
@keyframes rk-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes rk-swing { 0% { transform: rotate(0); } 30% { transform: rotate(3.5deg); } 60% { transform: rotate(-2deg); } 100% { transform: rotate(0); } }

/* enamel shop signs hanging from a brass rail */
.rk-signs { display: flex; flex-wrap: wrap; gap: 4px 14px; margin-top: 18px; padding: 0 8px; }
.tin {
  --enamel: #c8372d; --text: #f5f0e1;
  position: relative; flex: none; margin-top: 20px; padding: 10px 17px 8px; border-radius: 0; cursor: pointer;
  font: 400 19px/1 "Bebas Neue", sans-serif; letter-spacing: .07em; color: var(--text); transform-origin: 50% -18px;
  background:
    radial-gradient(circle at 6px 6px, #e9e2cc 1.5px, transparent 2.2px), radial-gradient(circle at calc(100% - 6px) 6px, #e9e2cc 1.5px, transparent 2.2px),
    radial-gradient(circle at 6px calc(100% - 6px), #e9e2cc 1.5px, transparent 2.2px), radial-gradient(circle at calc(100% - 6px) calc(100% - 6px), #e9e2cc 1.5px, transparent 2.2px),
    linear-gradient(165deg, rgba(255,255,255,.2), transparent 45%), var(--enamel);
  box-shadow: inset 0 0 0 2px var(--enamel), inset 0 0 0 3.5px #f5f0e1, 0 10px 18px -10px rgba(0,0,0,.9);
  filter: saturate(.45) brightness(.62); transition: filter .25s ease, transform .25s ease;
}
.tin:nth-child(5n+2) { --enamel: #1f7a72; } .tin:nth-child(5n+3) { --enamel: #d99a1c; --text: #2a1a06; }
.tin:nth-child(5n+4) { --enamel: #2c4796; } .tin:nth-child(5n) { --enamel: #2f8f4e; }
.tin::before { content: ""; position: absolute; top: -20px; left: -9px; right: -9px; height: 5px; border-radius: 0; background: linear-gradient(#f6d784, #a8782a 60%, #5e4210); box-shadow: 0 2px 3px rgba(0,0,0,.6); }
.tin::after { content: ""; position: absolute; top: -15px; left: 16px; right: 16px; height: 15px; border-inline: 2px dotted #b7b2a2; }
.tin:hover { filter: saturate(.8) brightness(.85); transform: rotate(-2deg); }
.tin[aria-pressed="true"] { filter: none; animation: rk-swing .6s ease; box-shadow: inset 0 0 0 2px var(--enamel), inset 0 0 0 3.5px #f5f0e1, 0 0 26px -4px var(--enamel), 0 10px 18px -10px rgba(0,0,0,.9); }
.tin:focus-visible, .tin--select:focus-within { outline: 2px solid #f5f0e1; outline-offset: 3px; }
.tin--select select { position: absolute; inset: 0; width: 100%; opacity: 0; cursor: pointer; }

/* the counter: a pegboard holding stickers, ticket stubs, price tags and the spinner rack */
.rk-counter {
  display: grid; gap: 26px; margin-top: 20px; padding: 22px 18px; border-radius: 0;
  background: radial-gradient(circle, rgba(0,0,0,.55) 2px, transparent 2.6px) 0 0 / 22px 22px, linear-gradient(170deg, #34271a, #1f170e);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.06), inset 0 30px 50px -30px rgba(0,0,0,.8), 0 30px 60px -40px #000;
}
@media (min-width: 860px) { .rk-counter { grid-template-columns: minmax(0, 1fr) 320px; align-items: center; padding: 28px; } }
.rk-controls { display: grid; gap: 20px; }

.rk-stickers { display: flex; flex-wrap: wrap; gap: 10px; filter: drop-shadow(0 5px 6px rgba(0,0,0,.6)); }
.sticker {
  display: grid; place-items: center; width: 78px; height: 78px; padding: 12px; cursor: pointer; text-align: center;
  font: 400 16px/.95 "Bebas Neue", sans-serif; letter-spacing: .03em; color: #121212; background: var(--ink);
  transform: rotate(var(--r)); filter: grayscale(.85) brightness(.55); transition: filter .2s ease, transform .2s cubic-bezier(.3,1.6,.5,1);
}
.sticker--burst { clip-path: polygon(50.0% 0.0%,58.5% 13.0%,71.7% 5.0%,73.7% 20.3%,89.1% 18.8%,84.2% 33.5%,98.7% 38.9%,88.0% 50.0%,98.7% 61.1%,84.2% 66.5%,89.1% 81.2%,73.7% 79.7%,71.7% 95.0%,58.5% 87.0%,50.0% 100.0%,41.5% 87.0%,28.3% 95.0%,26.3% 79.7%,10.9% 81.2%,15.8% 66.5%,1.3% 61.1%,12.0% 50.0%,1.3% 38.9%,15.8% 33.5%,10.9% 18.8%,26.3% 20.3%,28.3% 5.0%,41.5% 13.0%); padding: 20px; }
.sticker--seal { border-radius: 50%; box-shadow: inset 0 0 0 3px var(--ink), inset 0 0 0 4.5px rgba(0,0,0,.45); }
.sticker:hover { filter: grayscale(.3) brightness(.85); }
.sticker[aria-pressed="true"] { filter: none; transform: rotate(var(--r)) scale(1.12); }
.sticker:focus-visible { outline: 2px solid #f5f0e1; outline-offset: 2px; }
@media (max-width: 479px) { .sticker { width: 74px; height: 74px; font-size: 14px; } }

.rk-tickets { display: flex; flex-wrap: wrap; gap: 8px; }
.stub {
  --paper: #efe5cc;
  position: relative; display: flex; flex-direction: column; align-items: flex-start; gap: 2px; min-width: 104px; padding: 8px 16px 8px 22px; cursor: pointer; text-align: left;
  color: #2e2010; background: var(--paper); opacity: .55;
  -webkit-mask: radial-gradient(circle at 0 50%, transparent 7px, #000 7.5px) left / 51% 100% no-repeat, radial-gradient(circle at 100% 50%, transparent 7px, #000 7.5px) right / 51% 100% no-repeat;
  mask: radial-gradient(circle at 0 50%, transparent 7px, #000 7.5px) left / 51% 100% no-repeat, radial-gradient(circle at 100% 50%, transparent 7px, #000 7.5px) right / 51% 100% no-repeat;
  transition: opacity .2s ease, transform .2s ease, background .2s ease;
}
.stub::after { content: ""; position: absolute; left: 12px; top: 5px; bottom: 5px; border-left: 2px dashed rgba(46,32,16,.3); }
.stub small { font: 700 9px/1 "Space Grotesk", sans-serif; letter-spacing: .2em; text-transform: uppercase; color: #a8321f; }
.stub b { font: 400 21px/1 "Bebas Neue", sans-serif; letter-spacing: .04em; }
.stub:hover { opacity: .85; }
.stub[aria-pressed="true"] { --paper: #ffd23f; opacity: 1; transform: rotate(-2deg) translateY(-2px); }
.stub:focus-visible { outline: 2px solid #f5f0e1; outline-offset: 2px; }

.rk-tags { display: flex; flex-wrap: wrap; gap: 12px; }
.tag {
  --r: -4deg; padding: 9px 14px 9px 28px; cursor: pointer; transform: rotate(var(--r));
  font: 700 12px/1 "Space Grotesk", sans-serif; letter-spacing: .12em; text-transform: uppercase; color: #2e2010;
  background: radial-gradient(circle at 13px 50%, #261c11 3.5px, transparent 4px), #cfc3a4;
  clip-path: polygon(14px 0, 100% 0, 100% 100%, 14px 100%, 0 50%); opacity: .6; transition: opacity .2s ease, background .2s ease;
}
.tag span::before { content: "○ "; }
.tag:hover { opacity: .85; }
.tag[aria-pressed="true"] { opacity: 1; color: #fff; background: radial-gradient(circle at 13px 50%, #261c11 3.5px, transparent 4px), #e0452c; }
.tag[aria-pressed="true"] span::before { content: "✓ "; }
.tag:focus-visible { outline: 2px solid #f5f0e1; outline-offset: 3px; }

/* the spinner rack: ten covers around a chrome pole */
.rk-stage { display: grid; justify-items: center; gap: 14px; }
.rk-rack { position: relative; width: 100%; height: 230px; perspective: 900px; display: grid; place-items: center; }
.rk-pole { position: absolute; left: 50%; top: 0; bottom: 14px; width: 6px; translate: -50% 0; border-radius: 0; background: linear-gradient(90deg, #5d6166, #eef1f4 40%, #6f7378); }
.rk-base { position: absolute; left: 50%; bottom: 4px; width: 150px; height: 18px; translate: -50% 0; border-radius: 50%; background: radial-gradient(ellipse, #4a4f55, #0d0f10 70%); }
.rk-spin { position: relative; width: 92px; height: 138px; transform-style: preserve-3d; transition: transform 2.2s cubic-bezier(.15,.7,.1,1); }
.rk-face { position: absolute; inset: 0; border-radius: 0; background: #2a2a2a center / cover; box-shadow: 0 0 0 2px #f5f0e1; transform: rotateY(calc(var(--i) * 36deg)) translateZ(148px); -webkit-backface-visibility: hidden; backface-visibility: hidden; }
.rk-go {
  padding: 13px 30px 11px; border-radius: 0; cursor: pointer;
  font: 400 26px/1 "Bebas Neue", sans-serif; letter-spacing: .08em; color: #fff; background: linear-gradient(#e8473c, #c32a20);
  box-shadow: inset 0 0 0 2px rgba(255,255,255,.18), 0 5px 0 #6e130e, 0 14px 26px -10px rgba(232,71,60,.8); transition: transform .08s ease, box-shadow .08s ease;
}
.rk-go:hover { filter: brightness(1.08); }
.rk-go:active { transform: translateY(4px); box-shadow: inset 0 0 0 2px rgba(255,255,255,.18), 0 1px 0 #6e130e; }
.rk-go:focus-visible { outline: 2px solid #f5f0e1; outline-offset: 4px; }
.rk-count { font-size: 12px; font-weight: 600; letter-spacing: .06em; color: #c9b98f; }
.rk-empty { margin-top: 18px; color: #c9b98f; }

/* the pulled issue: the cover, then the bagged details */
.rk-result:empty { display: none; }
.rk-issue { display: grid; gap: 26px; align-items: center; margin-top: 30px; animation: rk-in .45s ease; }
@media (min-width: 720px) { .rk-issue { grid-template-columns: 230px minmax(0, 1fr); } }
.rk-cover { --tilt: -2.5deg; width: min(230px, 62vw); justify-self: center; }
.rk-bag {
  position: relative; display: flex; flex-direction: column; gap: 10px; padding: 24px; border-radius: 0;
  background: linear-gradient(115deg, rgba(255,255,255,.11), transparent 28%, transparent 72%, rgba(255,255,255,.06)), linear-gradient(90deg, rgba(4,8,6,.95), rgba(4,8,6,.78)), var(--art, none) center / cover, #0b1410;
  border: 1px solid rgba(255,255,255,.16); box-shadow: 0 30px 70px -40px var(--spot);
}
.rk-pulled { font-size: 10px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: color-mix(in srgb, var(--spot) 70%, #fff); }
.rk-pulled a:hover, .rk-title a:hover { text-decoration: underline; }
.rk-title { font-size: clamp(38px, 5vw, 60px); line-height: .95; color: #fff; }
.rk-meta { font-size: 13px; color: #a3b1a8; }
.rk-prices { display: flex; gap: 10px; }
.rk-prices:empty { display: none; }
.price { display: grid; place-items: center; align-content: center; width: 70px; height: 70px; border-radius: 50%; transform: rotate(-8deg); font: 400 23px/1 "Bebas Neue", sans-serif; color: #121212; background: #ffd23f; box-shadow: inset 0 0 0 3px #ffd23f, inset 0 0 0 4px rgba(0,0,0,.35); }
.price small { font: 700 7px/1.1 "Space Grotesk", sans-serif; letter-spacing: .1em; text-transform: uppercase; text-align: center; max-width: 52px; }
.price--rt { transform: rotate(6deg); color: #fff; background: #e0452c; box-shadow: inset 0 0 0 3px #e0452c, inset 0 0 0 4px rgba(0,0,0,.35); }
.rk-bubble { position: relative; max-width: 560px; margin: 4px 0 8px; padding: 12px 16px; border-radius: 0; font-size: 15px; line-height: 1.5; color: #161616; background: #f5f0e1; }
.rk-bubble::after { content: ""; position: absolute; left: 26px; bottom: -11px; border: 12px solid transparent; border-top-color: #f5f0e1; border-bottom: 0; border-left: 0; }
.rk-label { align-self: flex-start; padding: 6px 10px; border-radius: 0; font: 700 11px/1.3 "Space Grotesk", sans-serif; letter-spacing: .08em; text-transform: uppercase; color: var(--bg); background: var(--spot); }
.rk-label a { text-decoration: underline; }
.rk-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 6px; }
.rk-btn { padding: 9px 16px; border-radius: 0; font-size: 14px; font-weight: 700; color: #f5f0e1; border: 2px solid rgba(245,240,225,.7); }
.rk-btn:hover { border-color: #f5f0e1; }
.rk-btn--main { color: #121212; background: #f5f0e1; border-color: #f5f0e1; }

/* Scene Quiz: film cans, marquee bills, a projected screen and ticket-stub answers */
.qz-booth { display: grid; gap: 18px; margin-top: 22px; }
.qz-cans { display: flex; flex-wrap: wrap; gap: 10px; }
.can {
  position: relative; display: grid; place-items: center; width: 84px; height: 84px; border-radius: 50%; cursor: pointer;
  background: radial-gradient(circle, #111 0 8px, #9aa1a8 9px 11px, #4d545b 12px, #8d949b 55%, #4b5157 66%, #c5cbd1 68% 71%, #3d4247 73%);
  box-shadow: 0 8px 14px -8px #000; filter: brightness(.6) saturate(.5); transition: filter .2s ease, transform .3s ease;
}
.can span { position: absolute; left: -6px; right: -6px; top: 50%; padding: 4px 3px 3px; translate: 0 -50%; rotate: -5deg; font: 400 14px/1 "Bebas Neue", sans-serif; letter-spacing: .05em; text-align: center; color: #1d1d1d; background: #efe5cc; box-shadow: 0 2px 4px rgba(0,0,0,.5); }
.can:hover { filter: brightness(.85); transform: rotate(-20deg); }
.can[aria-pressed="true"] { filter: none; transform: rotate(-30deg); background: radial-gradient(circle, #111 0 8px, #f3d17c 9px 11px, #8a6420 12px, #d9ae4f 55%, #7b5718 66%, #ffe7a3 68% 71%, #5a3f10 73%); }
.can[aria-pressed="true"] span { rotate: 25deg; background: #ffd23f; }
.can--select select { position: absolute; inset: 0; width: 100%; border-radius: 50%; opacity: 0; cursor: pointer; }
@media (max-width: 479px) { .can { width: 70px; height: 70px; } .can span { font-size: 12px; } }
.can:focus-visible, .can--select:focus-within { outline: 2px solid #f5f0e1; outline-offset: 3px; }
.qz-bills { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; max-width: 520px; }
.bill {
  display: grid; gap: 3px; padding: 14px 12px 12px; border-radius: 0; cursor: pointer; text-align: center; color: #f5f0e1; background: #140c06;
  background-image: radial-gradient(circle, #ffe08a 2px, transparent 2.6px), radial-gradient(circle, #ffe08a 2px, transparent 2.6px), radial-gradient(circle, #ffe08a 2px, transparent 2.6px), radial-gradient(circle, #ffe08a 2px, transparent 2.6px);
  background-size: 14px 6px, 14px 6px, 6px 14px, 6px 14px; background-position: 4px 2px, 4px calc(100% - 2px), 2px 4px, calc(100% - 2px) 4px; background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;
  box-shadow: inset 0 0 0 1px rgba(255,224,138,.25); filter: brightness(.45) saturate(.4); transition: filter .25s ease;
}
.bill small { font: 700 9px/1 "Space Grotesk", sans-serif; letter-spacing: .22em; text-transform: uppercase; color: #ffd23f; }
.bill b { font: 400 30px/1 "Bebas Neue", sans-serif; letter-spacing: .06em; }
.bill span { font-size: 12px; color: #cdbf9c; }
.bill:hover { filter: brightness(.75); }
.bill[aria-pressed="true"] { filter: none; box-shadow: inset 0 0 0 1px rgba(255,224,138,.5), 0 0 30px -8px #ffb02e; }
.bill:focus-visible { outline: 2px solid #f5f0e1; outline-offset: 3px; }
.qz-marquee { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 22px; border-radius: 0; overflow: hidden; background: #0d0a06; box-shadow: inset 0 0 0 1px rgba(255,224,138,.22); }
.qz-marquee div { padding: 10px 12px; text-align: center; }
.qz-marquee div + div { border-left: 1px dashed rgba(255,224,138,.22); }
.qz-marquee dt { font: 700 9px/1 "Space Grotesk", sans-serif; letter-spacing: .22em; text-transform: uppercase; color: #ffd23f; }
.qz-marquee dd { margin-top: 5px; font: 400 30px/1 "Bebas Neue", sans-serif; color: #fff; text-shadow: 0 0 14px rgba(255,210,63,.45); }
.gq-stage { margin-top: 18px; }
.qz-screen {
  max-width: min(100%, calc(58vh * 16 / 9 + 44px)); margin-inline: auto; padding: 8px 22px; border-radius: 0; background-color: #080808;
  background-image: repeating-linear-gradient(180deg, #d9d2bd 0 9px, transparent 9px 20px), repeating-linear-gradient(180deg, #d9d2bd 0 9px, transparent 9px 20px);
  background-size: 9px 100%, 9px 100%; background-position: 6px 0, calc(100% - 6px) 0; background-repeat: no-repeat;
  box-shadow: 0 30px 70px -40px var(--spot);
}
.qz-frame { position: relative; overflow: hidden; aspect-ratio: 16 / 9; background: #0b0b0b; }
.gq-img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.06); transition: filter .1s linear; filter: blur(22px); }
.qz-frame::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: radial-gradient(ellipse at center, transparent 55%, rgba(0,0,0,.55)); }
.qz-leader { position: absolute; z-index: 1; top: 10px; right: 10px; display: grid; place-items: center; width: 58px; height: 58px; border-radius: 50%; background: conic-gradient(rgba(245,240,225,.9) var(--p), rgba(0,0,0,.55) 0); }
.qz-leader b { display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%; font: 400 24px/1 "Bebas Neue", sans-serif; color: #f5f0e1; background: #0d0d0d; box-shadow: inset 0 0 0 1px rgba(245,240,225,.3); }
.qz-opts { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; max-width: min(100%, calc(58vh * 16 / 9 + 44px)); margin: 14px auto 0; }
@media (min-width: 640px) { .qz-opts { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.stub.qz-opt { opacity: 1; padding: 11px 20px 11px 26px; }
.stub.qz-opt b { font-size: 22px; }
.stub.qz-opt:hover:not(:disabled) { --paper: #fff6dc; transform: translateY(-2px); }
.stub.qz-opt.is-right { --paper: #45e07c; }
.stub.qz-opt.is-wrong { --paper: #f0645a; transform: rotate(.5deg); }
.stub.qz-opt:disabled:not(.is-right):not(.is-wrong) { opacity: .35; }
.qz-card { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; max-width: min(100%, calc(58vh * 16 / 9 + 44px)); margin: 16px auto 0; padding: 14px; border-radius: 0; background: #120d07; box-shadow: inset 0 0 0 1px rgba(255,224,138,.2); animation: rk-in .3s ease; }
.qz-card img { width: 56px; border-radius: 0; box-shadow: 0 0 0 2px #f5f0e1; }
.qz-card > div { flex: 1; display: flex; flex-direction: column; gap: 3px; min-width: 180px; }
.qz-card-k { font: 700 10px/1.2 "Space Grotesk", sans-serif; letter-spacing: .18em; text-transform: uppercase; color: #ffd23f; }
.qz-card-k a:hover, .qz-card-t:hover { text-decoration: underline; }
.qz-card-t { font: 400 28px/1 "Bebas Neue", sans-serif; letter-spacing: .03em; color: #fff; }
.qz-card-y { font-size: 12px; color: #a3a08f; }
.qz-next { font-size: 22px; padding: 11px 22px 9px; }
.qz-end { display: grid; justify-items: center; gap: 8px; padding: 40px 20px; border-radius: 0; text-align: center; background: radial-gradient(ellipse at center, #1d140a, #0a0704 70%); box-shadow: inset 0 0 0 1px rgba(255,224,138,.22); animation: rk-in .4s ease; }
.qz-end-k { font: italic 400 22px/1 Georgia, serif; color: #cdbf9c; }
.qz-end-score { font-size: clamp(72px, 14vw, 128px); line-height: .9; color: #fff; text-shadow: 0 0 40px rgba(255,210,63,.4); }
.qz-end-score small { margin-left: 6px; font-size: .3em; color: #8c826a; }
.qz-end-rank { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 10px; margin-bottom: 14px; font: 700 13px/1 "Space Grotesk", sans-serif; letter-spacing: .2em; text-transform: uppercase; color: #ffd23f; }
.qz-end-rank span { padding: 5px 8px; border-radius: 0; color: #121212; background: #45e07c; letter-spacing: .12em; }
@media (prefers-reduced-motion: reduce) { .tin[aria-pressed="true"], .rk-issue, .qz-card, .qz-end { animation: none; } .rk-spin { transition: none; } }

/* Sideways rows: no scrollbar anywhere. Swipe on touch, drag with a mouse (src/drag.js). */
.rail, .pqv-strip, .np-sections div, .cal-rail, .tp-cast, .gd-table-wrap { scrollbar-width: none; cursor: grab; }
.rail::-webkit-scrollbar, .pqv-strip::-webkit-scrollbar, .cal-rail::-webkit-scrollbar { display: none; }
.is-dragging { cursor: grabbing; scroll-snap-type: none !important; user-select: none; }
.is-dragging * { cursor: grabbing !important; }

/* Long-form guides (scripts/guide-order.mjs): contents box, box-score tables, entries, charts */
.gd-toc { margin-top: 26px; padding: 16px 18px; background: rgba(255,255,255,.035); border: 1px solid rgba(255,255,255,.1); border-top: 3px solid var(--spot, #45e07c); }
.gd-toc b { font: 400 22px/1 "Bebas Neue", sans-serif; letter-spacing: .05em; color: #fff; }
.gd-toc ol { margin-top: 10px; columns: 2 220px; column-gap: 24px; counter-reset: toc; }
.gd-toc li { break-inside: avoid; padding: 4px 0; font-size: 14px; counter-increment: toc; }
.gd-toc li::before { content: counter(toc, decimal-leading-zero) "  "; font: 700 11px "Space Grotesk", sans-serif; color: var(--spot, #45e07c); }
.hub-body .gd-toc a { color: #cbd5e1; } .hub-body .gd-toc a:hover { color: #fff; text-decoration: underline; }
.hub-body h2[id], .gd-entry { scroll-margin-top: 20px; }
.gd-table-wrap { margin-top: 14px; overflow-x: auto; scrollbar-width: none; cursor: grab; }
.gd-table-wrap::-webkit-scrollbar { display: none; }
.gd-table { width: 100%; min-width: 480px; border-collapse: collapse; font-size: 14px; }
.gd-table th { padding: 8px 10px; text-align: left; font: 700 10px/1 "Space Grotesk", sans-serif; letter-spacing: .16em; text-transform: uppercase; color: #94a3b8; border-bottom: 2px solid rgba(245,240,225,.35); }
.gd-table td { padding: 8px 10px; border-bottom: 1px solid rgba(255,255,255,.07); color: #cbd5e1; vertical-align: top; }
.gd-table td:first-child { width: 34px; color: #64748b; }
.gd-table tbody tr:hover td { background: rgba(255,255,255,.03); }
.gd-table a { font-weight: 600; } .gd-table a:hover { text-decoration: underline; }
.gd-table em { font-style: normal; font-size: 11px; color: #64748b; }
.gd-table tr.is-opt td { color: #7c8a84; }
.gd-starts { display: grid; gap: 10px; margin-top: 14px; }
@media (min-width: 640px) { .gd-starts { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.gd-starts div { padding: 14px 16px; background: rgba(255,255,255,.035); border: 1px solid rgba(255,255,255,.08); }
.gd-starts b { font: 400 20px/1 "Bebas Neue", sans-serif; letter-spacing: .05em; color: #45e07c; }
.gd-starts p { margin-top: 6px; font-size: 14px; line-height: 1.6; }
.gd-entry { display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 18px; margin-top: 26px; padding-top: 22px; border-top: 1px solid rgba(255,255,255,.08); }
.gd-entry:not(:has(.gd-entry-art)) { grid-template-columns: minmax(0, 1fr); }
@media (min-width: 640px) { .gd-entry { grid-template-columns: 120px minmax(0, 1fr); gap: 22px; } }
.gd-entry-art img { width: 100%; height: auto; aspect-ratio: 2 / 3; object-fit: cover; box-shadow: 0 0 0 2px #f5f0e1, 0 16px 30px -16px #000; }
.gd-entry-k { font: 700 10px/1.4 "Space Grotesk", sans-serif; letter-spacing: .16em; text-transform: uppercase; color: #45e07c; }
.gd-entry h3 { margin-top: 4px; font: 700 21px/1.25 "Space Grotesk", sans-serif; color: #fff; }
.gd-entry h3 a:hover { text-decoration: underline; }
.gd-entry p { margin-top: 8px; font-size: 15px; }
.gd-why { color: #e2e8f0; } .gd-why b { color: #fff; }
.gd-facts { display: grid; gap: 4px; margin-top: 10px; font-size: 13px; }
.gd-facts div { display: grid; grid-template-columns: 86px minmax(0, 1fr); gap: 10px; }
.gd-facts dt { font: 700 10px/1.9 "Space Grotesk", sans-serif; letter-spacing: .14em; text-transform: uppercase; color: #64748b; }
.gd-facts dd { color: #cbd5e1; } .gd-facts a:hover { text-decoration: underline; }
.gd-chart { margin-top: 18px; padding: 16px 18px 18px; background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.08); }
.gd-chart figcaption { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px 16px; font: 700 11px/1.4 "Space Grotesk", sans-serif; letter-spacing: .12em; text-transform: uppercase; color: #94a3b8; }
.gd-legend { display: inline-flex; align-items: center; gap: 6px; letter-spacing: .06em; }
.gd-legend i { display: inline-block; width: 10px; height: 10px; margin-left: 8px; }
.gd-bars { display: grid; gap: 7px; margin-top: 14px; }
.gd-bars li { display: grid; grid-template-columns: minmax(0, 190px) minmax(0, 1fr) auto; align-items: center; gap: 10px; font-size: 13px; }
@media (max-width: 559px) { .gd-bars li { grid-template-columns: minmax(0, 1fr) auto; } .gd-bar-track { grid-column: 1 / -1; grid-row: 2; } }
.gd-bar-k { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; color: #e2e8f0; }
.gd-bar-k small, .gd-bar-v small { color: #64748b; }
.gd-bar-track { position: relative; height: 14px; background: rgba(255,255,255,.04); }
.gd-bar-track i { position: absolute; left: 0; top: 0; bottom: 0; }
.gd-bar, .gd-legend .gd-bar { background: #45e07c; }
.gd-bar-2, .gd-legend .gd-bar-2 { background: repeating-linear-gradient(135deg, rgba(245,240,225,.5) 0 3px, transparent 3px 6px); outline: 1px solid rgba(245,240,225,.5); }
.gd-bar-track .gd-bar { z-index: 0; opacity: .85; } .gd-bar-track .gd-bar-2 { z-index: 1; }
.gd-bar-v { font: 600 13px "Space Grotesk", sans-serif; color: #fff; text-align: right; white-space: nowrap; }
.gd-plot { display: block; width: 100%; height: auto; margin-top: 12px; overflow: visible; }
.gd-plot-grid line { stroke: rgba(255,255,255,.08); }
.gd-plot-grid text, .gd-plot-tag { font: 600 11px "Space Grotesk", sans-serif; fill: #64748b; }
.gd-plot-tag { fill: #e2e8f0; }
.gd-plot polyline { fill: none; stroke: rgba(69,224,124,.45); stroke-width: 1.5; }
.gd-plot circle { fill: #45e07c; }
.gd-plot circle.is-best { fill: #ffd23f; } .gd-plot circle.is-worst { fill: #f0645a; }
.gd-rank { margin-top: 14px; counter-reset: rank; }
.gd-rank li { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; border-bottom: 1px solid rgba(255,255,255,.06); font-size: 14px; counter-increment: rank; }
.gd-rank li::before { content: counter(rank); min-width: 26px; font: 400 20px/1 "Bebas Neue", sans-serif; color: #45e07c; }
.gd-rank li a { flex: 1; font-weight: 600; } .gd-rank li a:hover { text-decoration: underline; }
.gd-rank li span { color: #94a3b8; }
.gd-crew { display: grid; gap: 8px; margin-top: 14px; }
.gd-crew li { display: grid; gap: 2px; padding: 8px 0; border-bottom: 1px solid rgba(255,255,255,.06); font-size: 14px; }
.gd-crew b { color: #fff; } .gd-crew a:hover { text-decoration: underline; }
.gd-crew span { color: #94a3b8; font-size: 13px; }
.hub-body h2 + p, .hub-body p + p { margin-top: 12px; }
@media (max-width: 559px) { .gd-entry { grid-template-columns: 64px minmax(0, 1fr); gap: 14px; } .gd-entry > div > p:not(.gd-entry-k), .gd-entry .gd-facts { margin-left: -78px; } .gd-entry h3 { min-height: 0; } .gd-facts div { grid-template-columns: 76px minmax(0, 1fr); } }
.tl-guides { display: grid; gap: 6px; margin-top: 12px; } .tl-guides a { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 700; } .tl-guides a:hover { text-decoration: underline; } .tl-guides svg { width: 14px; height: 14px; }

/* ---- phones: rows that wrap into a wall become one swipeable row; controls get finger-sized ---- */
@media (max-width: 639px) {
  .rk-signs, .qz-cans, .fam { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; margin-inline: -16px; padding-inline: 16px; }
  .rk-signs::-webkit-scrollbar, .qz-cans::-webkit-scrollbar, .fam::-webkit-scrollbar { display: none; }
  .rk-signs { padding-top: 22px; padding-bottom: 14px; margin-top: 0; }
  .qz-cans > *, .fam > * { flex: none; }
  .site-foot { gap: 4px 6px; }
  .site-foot a { display: inline-block; padding: 10px 8px; }
}
@media (pointer: coarse) {
  .watch-toggle, .list-btn { min-height: 40px; }
  .list-btn { min-width: 40px; justify-content: center; }
  .rate button { height: 40px; }
  .rate button svg { width: 28px; height: 28px; }
  .rate .half-l, .rate .half-r { width: 16px; }
  .rate .half-r svg { margin-left: -14px; }
}

/* ---- /admin/ (src/admin.js) ---- */
.adm-stats { margin-top: 24px; }
.adm-sec { margin-top: 40px; }
.adm-sec h2 { font: 700 20px/1.2 "Space Grotesk", sans-serif; color: #fff; }
.adm-list { display: grid; gap: 8px; margin-top: 14px; }
.adm-list li { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 14px; border: 1px solid rgba(255,255,255,.1); background: rgba(255,255,255,.03); color: #cbd5e1; font-size: 14px; }
.adm-list b { color: #fff; font-weight: 600; }
.adm-list p { margin-top: 4px; color: #cbd5e1; white-space: pre-wrap; }
.adm-list small { display: block; margin-top: 4px; color: #94a3b8; font-size: 12px; }
.adm-empty { margin-top: 14px; color: #94a3b8; }
.adm-del, .adm-out { min-height: 36px; padding: 6px 12px; border: 1px solid rgba(255,255,255,.2); color: #e2e8f0; font-size: 13px; font-weight: 600; }
.adm-del:hover { border-color: #ef4444; color: #fecaca; }
.adm-out { margin-top: 40px; }

/* ---- title page: where to watch (US, from JustWatch via TMDB) ---- */
.tp-watch { display: grid; gap: 8px; margin-top: 18px; }
.tp-watch-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.tp-watch-k { min-width: 88px; font-size: 11px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: color-mix(in srgb, var(--ink, #fff) 55%, transparent); }
.tp-prov { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 6px 12px 6px 6px; border: 1px solid color-mix(in srgb, var(--ink, #fff) 16%, transparent); background: color-mix(in srgb, var(--ink, #fff) 4%, transparent); font-size: 13px; font-weight: 600; color: var(--ink, #fff); transition: border-color .15s ease; }
.tp-prov img { width: 26px; height: 26px; }
.tp-prov:hover { border-color: var(--spot, #45e07c); }
.tp-watch-src { font-size: 11px; color: color-mix(in srgb, var(--ink, #fff) 40%, transparent); }

/* ---- timeline backdrop stills (src/scrollart.js) ---- */
.scroll-art-wrap { position: sticky; top: 0; z-index: 0; height: 100vh; margin-bottom: -100vh; overflow: hidden; pointer-events: none; }
.scroll-art { position: absolute; inset: 0; background-size: cover; background-position: center 25%; opacity: 0; transition: opacity .9s ease;
  -webkit-mask-image: linear-gradient(180deg, #000 0%, rgba(0,0,0,.55) 55%, transparent 95%); mask-image: linear-gradient(180deg, #000 0%, rgba(0,0,0,.55) 55%, transparent 95%); }
.scroll-art.is-on { opacity: .32; }
[data-fx] > .scroll-art-wrap > .scroll-art.is-on { opacity: .28; }
@media (prefers-reduced-motion: reduce) { .scroll-art { transition: none; } }

/* Homepage below the hero (scripts/home.mjs): dark panels over the fixed poster wall. */
.home-more { position: relative; z-index: 10; max-width: 72rem; margin: 0 auto; padding: 0 20px; display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px; }
.home-sec { background: rgba(4, 9, 6, .88); border: 1px solid rgba(255,255,255,.08); padding: 24px; -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.home-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 18px; }
.home-head h2 { font: 400 clamp(30px, 4vw, 44px)/1 Anton, "Bebas Neue", Impact, sans-serif; letter-spacing: .012em; color: #fff; }
.home-head a { font: 700 12px/1 "Space Grotesk", sans-serif; letter-spacing: .14em; text-transform: uppercase; color: #45e07c; white-space: nowrap; }
.home-head a:hover { text-decoration: underline; }
.home-soon { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(132px, 1fr); gap: 14px; overflow-x: auto; scrollbar-width: none; }
.home-soon::-webkit-scrollbar { display: none; }
.home-soon a, .home-fandoms a { display: grid; gap: 4px; }
.home-poster { aspect-ratio: 2/3; background: #0d1510; border-bottom: 3px solid var(--spot); overflow: hidden; }
.home-poster img, .home-art img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s; }
.home-soon a:hover img, .home-fandoms a:hover img { transform: scale(1.04); }
.home-soon b, .home-fandoms b { margin-top: 6px; font: 600 14px/1.25 "Space Grotesk", sans-serif; color: #fff; }
.home-soon small, .home-fandoms small { font-size: 12px; line-height: 1.35; color: #94a3b8; }
.home-fandoms { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; }
@media (max-width: 1023px) { .home-fandoms { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.home-art { aspect-ratio: 16/9; background: #0d1510; border-bottom: 3px solid var(--spot); overflow: hidden; }
.home-cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px 40px; }
.home-cols h3 { font: 700 12px/1 "Space Grotesk", sans-serif; letter-spacing: .14em; text-transform: uppercase; color: #64748b; margin-bottom: 6px; }
.home-cols li { display: flex; justify-content: space-between; gap: 12px; padding: 10px 0; border-bottom: 1px solid rgba(255,255,255,.06); }
.home-cols a { font-weight: 600; color: #e2e8f0; } .home-cols a:hover { text-decoration: underline; }
.home-cols small { font-size: 13px; color: #64748b; white-space: nowrap; }
.home-foot { position: relative; z-index: 10; max-width: 72rem; margin: 0 auto; padding: 0 20px 40px; color: #94a3b8; }
.home-foot .site-foot { margin-top: 28px; padding: 18px 20px; background: rgba(4, 9, 6, .88); border: 1px solid rgba(255,255,255,.08); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
@media (max-width: 639px) { .home-foot { padding: 0 16px 32px; } .home-more { padding: 0 16px; gap: 18px; } .home-sec { padding: 18px 16px; } .home-fandoms { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; } }
