/* ============================================================================
   Magenta Light Studios — Studio site stylesheet
   Dark, premium, cinematic. Magenta brand accent. Mobile-first, accessible.
   Per-film custom themes override --accent via inline style on <body>.
   ========================================================================== */
:root {
  --bg: #08080a;
  --bg-2: #0e0e12;
  --bg-3: #14141a;
  --ink: rgba(238, 238, 240, 0.94);
  --ink-dim: rgba(202, 202, 210, 0.58);
  --ink-faint: rgba(170, 170, 182, 0.34);
  --line: rgba(255, 255, 255, 0.08);
  --line-2: rgba(255, 255, 255, 0.14);
  --accent: #ff2e8e;                 /* MLS magenta */
  --accent-2: #ff7ab8;
  --accent-soft: rgba(255, 46, 142, 0.16);
  --ok: #5ad19a;
  --mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;
  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Helvetica, Arial, sans-serif;
  --serif: "Iowan Old Style", "Times New Roman", Times, Georgia, serif;
  --maxw: 1240px;
  --radius: 6px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
html, body {
  margin: 0; padding: 0;
  background: var(--bg); color: var(--ink);
  font-family: var(--sans); font-size: 16px; line-height: 1.6;
  /* clip (not hidden) prevents horizontal scroll WITHOUT breaking the
     position:sticky tabs bar on film pages. */
  -webkit-font-smoothing: antialiased; overflow-x: clip;
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; }
}

/* Film-grain + magenta vignette overlays */
body::before {
  content: ""; position: fixed; inset: 0; pointer-events: none; z-index: 1;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 0.05 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  opacity: 0.55; mix-blend-mode: screen;
}
body::after {
  content: ""; position: fixed; inset: 0; pointer-events: none; z-index: 2;
  background: radial-gradient(ellipse at 50% -10%, rgba(255, 46, 142, 0.07), transparent 55%);
}

a { color: inherit; }
img { max-width: 100%; }
.wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 28px; position: relative; z-index: 3; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 2px; }

/* ---------------------------------------------------------------- NAV --- */
.site-nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 100;
  /* Three zones so the links are centred on the VIEWPORT, not on whatever is
     left over between the logo and the socials — the side zones are equal
     fractions, so an uneven left/right never drags the centre off. */
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 24px;
  padding: 14px 28px;
  background: rgba(8, 8, 10, 0.78); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
  border-bottom: 1px solid var(--line); transition: background .3s, border-color .3s;
}
.nav-left { justify-self: start; min-width: 0; }
.nav-right { justify-self: end; display: flex; align-items: center; gap: 6px; }
@media (max-width: 640px) { .site-nav { padding: 12px 18px; } }
.site-nav.scrolled { background: rgba(8, 8, 10, 0.95); }
body { padding-top: var(--nav-h, 68px); }
.brand { display: inline-flex; align-items: center; gap: 12px; text-decoration: none; flex-shrink: 0; }
.brand-lockup { display: block; height: 42px; }
.brand-lockup img { height: 100%; width: auto; display: block; }
.footer-brand .brand-lockup { height: 56px; margin-bottom: 10px; }
@media (max-width: 640px) { .brand-lockup { height: 34px; } }
.brand .brand-mark { width: 34px; height: 34px; display: block; }
.brand .brand-mark img, .brand .brand-mark svg { width: 100%; height: 100%; display: block; }
.brand .brand-word {
  font-family: var(--serif); font-size: 17px; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--ink); white-space: nowrap;
}
.brand .brand-word b { color: var(--accent); font-weight: 400; }
.nav-links { display: flex; gap: 22px; align-items: center; justify-self: center; }
.nav-links a {
  /* Sized and coloured to the wordmark beside them: its capitals are 9.3px
     tall in the 42px lockup, which is this font at 12.5px. */
  font-family: var(--mono); font-size: 12.5px; letter-spacing: 0.05em; text-transform: uppercase;
  color: var(--ink); text-decoration: none; transition: color .2s; position: relative; padding: 4px 0;
}
.nav-links a:hover { color: var(--accent); }

/* ---- Header socials (home page) ------------------------------------------
   Icons rather than words so seven accounts still fit beside the links. */
.nav-social { display: flex; align-items: center; gap: 4px; }
.nav-social a { display: inline-flex; padding: 6px; color: var(--ink-dim); transition: color .2s; }
.nav-social a:hover { color: var(--accent); }
.nav-social svg { width: 17px; height: 17px; display: block; fill: currentColor; }
@media (max-width: 920px) { .nav-social { display: none; } }

/* ---- Films dropdown ------------------------------------------------------
   The four film views live behind one bar item. The panel is hidden with
   visibility (not display) so it can fade, and it is anchored to the group so
   it follows the item at any width. */
.nav-group { position: relative; }
.nav-group-btn { display: inline-flex; align-items: center; gap: 6px; background: none;
  border: 0; padding: 6px 0; cursor: pointer; color: var(--ink);
  font-family: var(--mono); font-size: 12.5px; letter-spacing: .05em; text-transform: uppercase; }
.nav-group-btn:hover, .nav-group.open .nav-group-btn { color: var(--accent); }
.nav-caret { width: 0; height: 0; border-left: 4px solid transparent; border-right: 4px solid transparent;
  border-top: 4px solid currentColor; opacity: .7; transition: transform .2s; }
.nav-group.open .nav-caret { transform: rotate(180deg); }
.nav-group.current > .nav-group-btn { color: var(--ink); }
.nav-group.current > .nav-group-btn::after { content: ""; position: absolute; left: 0; right: 14px;
  bottom: 0; height: 1px; background: var(--accent); }
.nav-menu { position: absolute; top: calc(100% + 10px); left: -14px; min-width: 190px;
  display: flex; flex-direction: column; padding: 8px 0; border-radius: 8px;
  background: rgba(8,8,10,.97); border: 1px solid var(--line-2);
  box-shadow: 0 22px 60px rgba(0,0,0,.5);
  opacity: 0; visibility: hidden; transform: translateY(-6px);
  transition: opacity .2s, transform .2s, visibility .2s; z-index: 120; }
.nav-group.open .nav-menu { opacity: 1; visibility: visible; transform: translateY(0); }
.nav-menu a { padding: 9px 16px; white-space: nowrap; }
.nav-menu a:hover { background: rgba(255,255,255,.06); color: var(--accent); }
.nav-menu a.current::after { display: none; }
html[data-entity="mls"] .nav-menu { background: rgba(255,255,255,.98); }
/* Over the hero the bar is transparent, but the panel still needs a surface. */
body[data-hero-overlay] .site-nav:not(.scrolled) .nav-group-btn { color: #fff; }
body[data-hero-overlay] .site-nav:not(.scrolled) .nav-group-btn:hover,
body[data-hero-overlay] .site-nav:not(.scrolled) .nav-group.open .nav-group-btn { color: #fff; }
body[data-hero-overlay] .site-nav:not(.scrolled) .nav-menu { background: rgba(8,8,10,.97); }
body[data-hero-overlay] .site-nav:not(.scrolled) .nav-menu a { color: rgba(255,255,255,.82); }
body[data-hero-overlay] .site-nav:not(.scrolled) .nav-menu a:hover { color: #fff; }
/* On phones the bar is already a stacked panel, so show the group inline. */
@media (max-width: 920px) {
  .nav-group { width: 100%; }
  .nav-menu { position: static; opacity: 1; visibility: visible; transform: none; min-width: 0;
    background: none; border: 0; box-shadow: none; padding: 0 0 0 14px; }
  .nav-group-btn { display: none; }
}
.nav-links a.current { color: var(--ink); }
.nav-links a.current::after { content: ""; position: absolute; left: 0; right: 0; bottom: -4px; height: 1px; background: var(--accent); }
.nav-toggle { display: none; background: none; border: 1px solid var(--line-2); color: var(--ink); border-radius: 4px; padding: 7px 10px; cursor: pointer; font-size: 16px; line-height: 1; }
@media (max-width: 920px) {
  /* The links panel leaves the grid (it is fixed), so the bar drops to two
     zones — otherwise the toggle would sit in the middle column. */
  .site-nav { grid-template-columns: 1fr auto; }
  .nav-links {
    /* The panel is still a grid child here, so the desktop centring would
       shrink-wrap it to the middle column instead of spanning the bar. */
    justify-self: stretch;
    position: fixed; top: var(--nav-h, 67px); left: 0; right: 0; flex-direction: column; gap: 0;
    background: rgba(10,10,13,0.98); border-bottom: 1px solid var(--line);
    max-height: 0; overflow: hidden; transition: max-height .35s ease; align-items: stretch;
  }
  .nav-links.open { max-height: 80vh; }
  .nav-links a { padding: 16px 28px; border-top: 1px solid var(--line); font-size: 13px; }
  .nav-links a.current::after { display: none; }
  .nav-toggle { display: block; }
}

/* --------------------------------------------------------------- MEDIA --- */
/* Reusable media wrapper used for any hero/poster/card slot. Supports
   <video>, animated <lottie-player>, animated SVG, image, or the built-in
   animated "aurora" canvas. */
.media { position: relative; overflow: hidden; background: #060608; display: block; }
.media > video, .media > img, .media > lottie-player, .media > svg, .media > object { width: 100%; height: 100%; max-width: 100%; max-height: 100%; object-fit: cover; display: block; }
.media.contain > video, .media.contain > img, .media.contain > object { object-fit: contain; }
.media-aurora { position: absolute; inset: 0; }
.media-aurora::before, .media-aurora::after {
  content: ""; position: absolute; inset: -30%;
  background:
    radial-gradient(40% 50% at 25% 30%, rgba(255,46,142,0.55), transparent 60%),
    radial-gradient(45% 55% at 75% 60%, rgba(120,40,200,0.45), transparent 60%),
    radial-gradient(35% 45% at 55% 85%, rgba(255,122,184,0.4), transparent 60%);
  filter: blur(28px); animation: aurora 18s ease-in-out infinite;
}
.media-aurora::after { animation-duration: 26s; animation-direction: reverse; opacity: 0.7; mix-blend-mode: screen; }
@keyframes aurora {
  0%,100% { transform: translate3d(-4%, -2%, 0) rotate(0deg) scale(1.05); }
  33%     { transform: translate3d(5%, 3%, 0)  rotate(8deg) scale(1.15); }
  66%     { transform: translate3d(-2%, 4%, 0) rotate(-6deg) scale(1.1); }
}
.media-aurora .grain {
  position: absolute; inset: 0; opacity: .35; mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='1.1' numOctaves='2'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/></svg>");
}
.media-aurora .scan { position: absolute; inset: 0; background: repeating-linear-gradient(0deg, rgba(0,0,0,0.18) 0 2px, transparent 2px 4px); opacity: .25; }
.media .badge-anim {
  position: absolute; top: 12px; right: 12px; z-index: 4;
  font-family: var(--mono); font-size: 9px; letter-spacing: .14em; text-transform: uppercase;
  color: #fff; background: rgba(0,0,0,.45); border: 1px solid rgba(255,255,255,.18);
  padding: 4px 8px; border-radius: 3px; backdrop-filter: blur(6px);
}

/* --------------------------------------------------------------- HERO --- */
/* Hero carousel (homepage): up to 5 films, autoplay with timer bar, arrows, swipe */
.hero-carousel { position: relative; overflow: hidden; border-bottom: 1px solid var(--line); touch-action: pan-y; }
/* Full width, ~80% of the viewport tall (Universal-style). width:100% keeps it
   full-bleed; max-height caps it so it never dominates the screen. */
.hc-viewport { position: relative; width: 100%; aspect-ratio: 16 / 9; min-height: 380px; max-height: 80vh; }
.hc-slide { position: absolute; inset: 0; opacity: 0; display: flex; align-items: flex-end; pointer-events: none; transition: opacity .7s ease; }
.hc-slide.active { opacity: 1; pointer-events: auto; }
.hc-slide .media { position: absolute; inset: 0; }
/* No broad tint over the image — just a soft fade at the very bottom so the
   CTA and timer bars stay legible. */
.hc-slide::after { content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none;
  background: linear-gradient(180deg, transparent 62%, rgba(8,8,10,0.82) 100%); }
.hc-inner { position: relative; z-index: 3; width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 28px 40px; }
.hc-inner h1, .hc-inner .tagline, .hc-inner .sub { text-shadow: 0 2px 20px rgba(0,0,0,.55); }
.hc-cta { margin-top: 22px; }
/* ghost CTA over the hero image — keep it clearly visible (lighter shade) */
.hc-slide .btn-ghost { background: rgba(255,255,255,.14); border-color: rgba(255,255,255,.6); color: #fff; backdrop-filter: blur(4px); }
.hc-slide .btn-ghost:hover { background: rgba(255,255,255,.26); border-color: #fff; color: #fff; }
.hc-arrow { position: absolute; top: 50%; transform: translateY(-50%); z-index: 6; width: 50px; height: 50px; border-radius: 50%;
  background: rgba(0,0,0,.34); border: 1px solid rgba(255,255,255,.28); color: #fff; font-size: 26px; line-height: 1; cursor: pointer;
  display: flex; align-items: center; justify-content: center; backdrop-filter: blur(6px); transition: background .2s, border-color .2s; }
.hc-arrow:hover { background: var(--accent); border-color: var(--accent); }
.hc-prev { left: 18px; } .hc-next { right: 18px; }
@media (max-width: 640px) { .hc-arrow { width: 40px; height: 40px; font-size: 20px; } .hc-prev { left: 8px; } .hc-next { right: 8px; } }
.hc-bars { position: absolute; bottom: 18px; left: 50%; transform: translateX(-50%); z-index: 6; display: flex; gap: 8px; }
.hc-bar { width: 38px; height: 3px; border-radius: 2px; background: rgba(255,255,255,.3); overflow: hidden; cursor: pointer; padding: 0; border: 0; }
.hc-bar .fill { display: block; height: 100%; width: 0; background: #fff; }
.hc-bar.active .fill.run { width: 100%; transition: width var(--hc-dur, 5s) linear; }
@media (prefers-reduced-motion: reduce) { .hc-slide { transition: none; } .hc-bar .fill { transition: none !important; } }

.hero {
  position: relative; min-height: clamp(440px, 76vh, 760px);
  display: flex; align-items: flex-end; overflow: hidden;
  border-bottom: 1px solid var(--line);
}
.hero .media { position: absolute; inset: 0; }
.hero::after {
  content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none;
  background:
    linear-gradient(180deg, rgba(8,8,10,0.35) 0%, transparent 28%, transparent 45%, rgba(8,8,10,0.92) 92%),
    linear-gradient(90deg, rgba(8,8,10,0.7) 0%, transparent 55%);
}
.hero .hero-inner { position: relative; z-index: 3; width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 28px 64px; }
.hero .eyebrow {
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--accent); display: inline-block; padding: 5px 10px; border: 1px solid var(--accent-soft);
  border-radius: 3px; margin-bottom: 18px; background: rgba(0,0,0,.3);
}
.hero h1 {
  font-family: var(--serif); font-weight: 400; letter-spacing: -0.025em; line-height: 0.98;
  font-size: clamp(40px, 8vw, 104px); margin: 0 0 14px; text-shadow: 0 6px 40px rgba(0,0,0,0.6);
}
.hero .hero-title-logo { max-width: min(620px, 80%); margin-bottom: 14px; }
.hero .tagline { font-family: var(--serif); font-style: italic; color: var(--accent-2); font-size: clamp(18px, 2.4vw, 28px); margin: 0 0 18px; }
.hero .sub { color: var(--ink); max-width: 580px; font-size: 17px; margin: 0 0 28px; text-shadow: 0 2px 18px rgba(0,0,0,0.7); }
.hero .meta { display: flex; gap: 16px; flex-wrap: wrap; align-items: center; margin-top: 22px; font-family: var(--mono); font-size: 11px; letter-spacing: 0.06em; color: var(--ink-dim); }
.hero .meta .pill { border: 1px solid var(--line-2); padding: 3px 9px; border-radius: 3px; }

/* ------------------------------------------------------------- BUTTONS --- */
.cta-row { display: flex; gap: 14px; flex-wrap: wrap; align-items: center; }
.btn {
  display: inline-flex; align-items: center; gap: 10px; cursor: pointer; text-decoration: none;
  font-family: var(--mono); font-size: 12px; letter-spacing: 0.06em; text-transform: uppercase;
  padding: 12px 22px; border-radius: 4px; border: 1px solid transparent; transition: transform .15s, box-shadow .15s, background .2s, border-color .2s, color .2s;
}
.btn-primary { background: var(--accent); color: #fff; }
.btn-primary:hover { transform: translateY(-1px); box-shadow: 0 10px 30px rgba(255,46,142,0.4); }
.btn-ghost { background: rgba(255,255,255,0.02); color: var(--ink); border-color: var(--line-2); }
.btn-ghost:hover { border-color: var(--accent); color: var(--accent); }
.btn-sm { padding: 9px 16px; font-size: 11px; }

/* ------------------------------------------------------------ SECTIONS --- */
.section { padding: 72px 0; position: relative; }
.section.tight { padding: 48px 0; }
.section + .section { border-top: 1px solid var(--line); }
.sec-head { display: flex; align-items: baseline; justify-content: space-between; gap: 20px; margin-bottom: 30px; flex-wrap: wrap; }
.sec-label { font-family: var(--mono); font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--accent); }
.sec-head h2 { font-family: var(--serif); font-weight: 400; font-size: clamp(26px, 3.6vw, 44px); letter-spacing: -0.02em; margin: 6px 0 0; }
.sec-head .sec-link { font-family: var(--mono); font-size: 12px; color: var(--ink-dim); text-decoration: none; text-transform: uppercase; letter-spacing: .05em; white-space: nowrap; }
.sec-head .sec-link:hover { color: var(--accent); }

/* ---------------------------------------------- HOME FILM CAROUSELS --- */
/* The first shelf hugs the hero so its heading rises above the fold on a
   full screen — the hero band itself keeps its full aspect size. Shelves sit
   almost flush with each other: a hairline is all that marks the change from
   one release state to the next. */
#status-sections > .section { padding: 26px 0; }
#status-sections > .section:first-child { padding-top: 20px; }
/* Full-bleed shelf: the heading hangs at the page's left edge and the row
   runs off the right side of the screen with snap and paging arrows. Scrolled
   posters travel on beneath the heading and dissolve into the page colour
   before they reach it. */
.hcar { position: relative; --railw: clamp(240px, 26vw, 430px); }
.hcar__head { position: absolute; left: 0; top: 0; bottom: 0; width: var(--railw);
  z-index: 2; display: flex; flex-direction: column; justify-content: flex-start;
  padding: 0 44px 40px 28px; pointer-events: none; }
/* The dissolve lives entirely inside the rail, so at rest it touches no
   poster — it only acts once a card is pushed under the heading. */
.hcar__head::before { content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(90deg, var(--bg) 0%, var(--bg) 55%, transparent 100%); }
/* Stacked headline: last word drops to its own line in italic, painted with
   the swoosh gradient; a short fading rule and the paging arrows sit under it.
   A serif carries empty space above its capitals, so the heading is pulled up
   by that much — in ems, so it holds at every size — to set the top of the
   first letter on the same line as the top of the first poster. */
.hcar__title { font-family: var(--serif); font-weight: 400; font-size: clamp(44px, 4.8vw, 88px);
  line-height: 1.02; letter-spacing: -0.02em; margin: -0.19em 0 0; }
.hcar__title span { display: block; }
/* The serif carries a lot of built-in leading, so the second line hangs well
   below the first. Pulling it up closes the gap without moving line one. */
.hcar__title b { display: block; margin-top: -0.2em; font-weight: 400; font-style: italic; padding-right: .12em;
  color: #c30276; background: linear-gradient(90deg, #c30276, #622491);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.hcar__rule { display: block; width: 132px; height: 3px; border-radius: 2px; margin: 4px 0 0;
  background: linear-gradient(90deg, #c30276, rgba(98, 36, 145, .12)); }
.hcar__nav { display: flex; gap: 14px; margin-top: 44px; pointer-events: auto; }
.hcar__link { display: inline-block; margin-top: 34px; pointer-events: auto; width: max-content;
  font-family: var(--mono); font-size: 12px; letter-spacing: .12em; text-transform: uppercase;
  color: var(--ink); text-decoration: none; padding-bottom: 4px; border-bottom: 1px solid currentColor; }
.hcar__link:hover { color: var(--accent); }
.hcar__arrow { width: 54px; height: 54px; display: inline-flex; align-items: center; justify-content: center;
  border-radius: 999px; background: none; border: 1px solid var(--line-2); color: var(--ink); cursor: pointer;
  transition: border-color .2s, background .2s, color .2s, opacity .2s; }
.hcar__arrow svg { width: 18px; height: 18px; fill: currentColor; }
.hcar__arrow:hover:not(:disabled) { border-color: var(--accent); background: var(--accent); color: #fff; }
.hcar__arrow:disabled { opacity: .3; cursor: default; }
/* Exactly three posters share the visible run between the heading's rail and
   the right edge; the fourth starts off screen. */
.hcar__row { display: grid; grid-auto-flow: column;
  grid-auto-columns: calc((100vw - var(--railw) - 36px) / 3);
  gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding-bottom: 4px;
  padding-left: var(--railw); scroll-padding-left: var(--railw); padding-right: 12px; }
.hcar__row::-webkit-scrollbar { display: none; }
.scard { scroll-snap-align: start; min-width: 0; }
.scard__poster { position: relative; display: block; aspect-ratio: 2 / 3; border-radius: 8px;
  overflow: hidden; background: var(--bg-3); box-shadow: 0 10px 30px rgba(20,10,20,.10);
  transition: transform .35s, box-shadow .35s; }
.scard:hover .scard__poster { transform: translateY(-6px); box-shadow: 0 24px 50px rgba(20,10,20,.18); }
.scard__poster .media { position: absolute; inset: 0; }
.scard__poster .status-tag {
  position: absolute; top: 12px; left: 12px; z-index: 3; font-family: var(--mono); font-size: 9px;
  letter-spacing: .12em; text-transform: uppercase; padding: 4px 8px; border-radius: 3px; color: #fff;
  background: rgba(0,0,0,0.55); border: 1px solid rgba(255,255,255,0.16); backdrop-filter: blur(6px);
}
.scard__poster .status-tag.s-in-theaters { background: var(--accent); border-color: var(--accent); }
.scard__poster .status-tag.s-at-home    { background: rgba(90,209,154,0.18); border-color: var(--ok); color: var(--ok); }
.scard__title { display: inline-block; margin-top: 16px; font-family: var(--mono); font-size: 13.5px;
  letter-spacing: .06em; text-transform: uppercase; color: var(--ink); text-decoration: none; }
.scard__title:hover { color: var(--accent); }
.scard__meta { font-family: var(--mono); font-size: 11px; letter-spacing: .08em; text-transform: uppercase;
  color: var(--ink-dim); margin-top: 8px; }
.scard__cta { display: flex; gap: 10px; margin-top: 14px; flex-wrap: wrap; }
.pillbtn { font-family: var(--mono); font-size: 11px; letter-spacing: .08em; text-transform: uppercase;
  padding: 10px 18px; border-radius: 999px; text-decoration: none; transition: all .2s; }
.pillbtn--solid { background: var(--accent); color: #fff; }
.pillbtn--solid:hover { background: var(--accent-2, var(--accent)); }
.pillbtn--ghost { border: 1px solid var(--line-2); color: var(--ink); }
.pillbtn--ghost:hover { border-color: var(--accent); color: var(--accent); }
@media (max-width: 900px) {
  /* On phones the heading sits above the row instead of over it. */
  .hcar__head { position: static; width: auto; padding: 0 18px 16px; justify-content: flex-start; }
  .hcar__head::before { display: none; }
  .hcar__row { padding-left: 18px; scroll-padding-left: 18px; padding-right: 18px;
    grid-auto-columns: 70vw; }
}


/* ================= FILM BOILERPLATE PANELS ==============================
   Two-up: the reading column on the left, artwork on the right, credits
   along the foot. Shared by the Home and Synopsis tabs. */
.fb-hero { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr);
  gap: clamp(32px, 5vw, 88px); align-items: start; padding: 18px 0 8px; }
.fb-main { min-width: 0; }
.fb-side { min-width: 0; }
.fb-title { font-family: 'Oswald', var(--sans); font-weight: 600; text-transform: uppercase;
  font-size: clamp(38px, 5.4vw, 84px); line-height: .96; letter-spacing: -.01em;
  margin: 0 0 14px; color: var(--ink); }
/* Optional tagline: smaller than the title and tucked right under it. The
   title keeps its own 14px foot, so with no tagline the release line simply
   moves up and nothing looks missing. */
.fb-tagline { margin: -4px 0 22px; font-family: var(--serif); font-style: italic;
  font-size: clamp(16px, 1.7vw, 22px); line-height: 1.35; color: var(--ink-dim);
  letter-spacing: .01em; }
/* The Synopsis tab opens with air above the heading rather than starting
   hard against the tab bar, and its copy reads at full strength — the shared
   .fb-copy grey is for the shorter blurb on the Home tab. */
.fb-hero--story { padding-top: clamp(30px, 4.6vw, 72px); }
.fb-hero--story .fb-copy p { color: var(--ink); }
.fb-hero--story .fb-copy p:first-child { font-size: clamp(16px, 1.35vw, 20px); line-height: 1.7; }
.fb-title--story { font-size: clamp(32px, 4.4vw, 68px); }
.fb-title--story b { font-weight: 600; color: var(--accent); }
/* Rule, then the status in ink, then the date in the brand gradient. */
.fb-release { display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
  font-family: 'Oswald', var(--sans); font-weight: 600; text-transform: uppercase;
  font-size: clamp(17px, 1.7vw, 28px); letter-spacing: .04em; margin: 0 0 26px; }
.fb-release .rl-rule { width: clamp(38px, 4vw, 62px); height: 3px; background: var(--ink); flex: 0 0 auto; }
.fb-release .rl-words { color: var(--ink); }
.fb-release .rl-date { background: linear-gradient(100deg, #c30276, #7b2ff7);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  color: #c30276; }
.fb-copy p { font-size: clamp(15px, 1.15vw, 18px); line-height: 1.75; color: var(--ink-dim);
  margin: 0 0 16px; max-width: 62ch; }
.fb-actions { display: flex; gap: 14px; flex-wrap: wrap; margin: 30px 0 0; }
/* Squared-off pair: one filled with the brand gradient, one outlined in it
   with the label painted to match. */
.fb-btn { display: inline-block; font-family: var(--mono); font-size: clamp(12px, 1vw, 14px);
  font-weight: 500; letter-spacing: .2em; text-transform: uppercase;
  padding: 20px 40px; text-decoration: none; border-radius: 0; transition: filter .2s, box-shadow .2s; }
.fb-btn--solid { color: #fff; border: 0;
  background: linear-gradient(100deg, #c30276, #7b2ff7); }
.fb-btn--solid > span { color: #fff; }
.fb-btn--solid:hover { filter: brightness(1.12); }
/* Two backgrounds: the page colour clipped to the padding box, the gradient
   to the border box — which paints the border and nothing else. */
.fb-btn--ghost { border: 1px solid transparent;
  background-image: linear-gradient(var(--bg), var(--bg)), linear-gradient(100deg, #c30276, #7b2ff7);
  background-origin: border-box; background-clip: padding-box, border-box; }
.fb-btn--ghost > span {
  background: linear-gradient(100deg, #c30276, #7b2ff7);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  color: #c30276; }
.fb-btn--ghost:hover { box-shadow: 0 0 0 1px #7b2ff7; }
.fb-meta { display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
  margin-top: 38px; padding-top: 22px; border-top: 1px solid var(--line);
  font-family: var(--mono); font-size: 12px; letter-spacing: .06em; color: var(--ink-faint); }
.fb-cert { border: 1px solid var(--line-2); padding: 2px 8px; border-radius: 2px; color: var(--ink-dim); }
.fb-bits i { font-style: normal; opacity: .5; margin: 0 4px; }
.fb-rt { color: var(--accent); }
.fb-rt::before { content: "\25CF"; margin-right: 6px; font-size: 9px; vertical-align: 2px; }
/* The poster is sized from the height left under the header and tab bar, so
   the whole artwork is on screen rather than running off the bottom. Width
   follows from the 2:3 ratio, and the column caps it on narrow screens. */
.fb-side { display: flex; justify-content: center; }
.fb-poster { border: 1px solid var(--line-2); border-radius: 4px; overflow: hidden;
  aspect-ratio: 2 / 3; position: relative; background: var(--bg-3);
  height: min(calc(100vh - var(--nav-h, 68px) - 150px), 760px);
  width: auto; max-width: 100%; flex: 0 1 auto; }
.fb-poster .media { position: absolute; inset: 0; }
.fb-still { border: 1px solid var(--line-2); border-radius: 4px; overflow: hidden;
  aspect-ratio: 16 / 9; position: relative; background: var(--bg-3); }
.fb-still .media { position: absolute; inset: 0; }
.fb-quote { margin: 26px 0 0; padding: 2px 0 2px 20px; border-left: 3px solid var(--accent); }
.fb-quote { font-family: 'Oswald', var(--sans); font-weight: 500; text-transform: uppercase;
  font-size: clamp(17px, 1.6vw, 24px); line-height: 1.3; color: var(--ink); }
.fb-quote cite { display: block; margin-top: 12px; font-family: var(--mono); font-style: normal;
  font-size: 11px; letter-spacing: .18em; color: var(--accent); }
.fb-quote cite a { color: inherit; text-decoration: none; }
.fb-quote cite a:hover { text-decoration: underline; }
/* Credits run the full width beneath both columns. */
.fb-credits { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(4, 1fr);
  margin-top: 54px; padding-top: 26px; border-top: 1px solid var(--line); text-align: center; }
.fb-credit { padding: 4px 14px; }
.fb-credit + .fb-credit { border-left: 1px solid var(--line); }
.fb-credit b { display: block; font-weight: 400; font-size: 15px; color: var(--ink); }
.fb-credit span { display: block; margin-top: 6px; font-family: var(--mono); font-size: 10.5px;
  letter-spacing: .16em; text-transform: uppercase; color: var(--accent); }
@media (max-width: 900px) {
  .fb-hero { grid-template-columns: 1fr; }
  .fb-side { order: -1; }
  .fb-poster { height: auto; width: 100%; max-width: 320px; }
  .fb-credits { grid-template-columns: repeat(2, 1fr); gap: 22px 0; margin-top: 34px; }
  .fb-credit:nth-child(odd) { border-left: 0; }
}

/* ---- Cast grid: hovering a face offers their IMDb page ----------------- */
/* Heading, then the invitation small underneath it. */
.cast-head { margin-bottom: 34px; }
.fb-title--cast { font-size: clamp(32px, 3.6vw, 56px); margin: 0; }
.cast-hint { font-family: var(--mono); font-size: 11.5px; letter-spacing: .2em;
  text-transform: uppercase; color: var(--accent); margin: 10px 0 0; }
.cast-card .portrait { position: relative; overflow: hidden; }
.cast-hover { position: absolute; inset: 0; z-index: 2; display: flex; align-items: center;
  justify-content: center; gap: 8px; background: rgba(6,5,9,.72);
  font-family: var(--mono); font-size: 12px; letter-spacing: .16em; text-transform: uppercase;
  color: #fff; opacity: 0; transition: opacity .25s; }
.cast-card:hover .cast-hover, .cast-card:focus-visible .cast-hover { opacity: 1; }
.cast-card--flat { cursor: default; }


/* ---- Tickets-not-yet-on-sale board ------------------------------------
   Fills the panel: release line, a two-tone headline, the promise, and the
   signup — the site's own newsletter form, so it posts where the rest do. */
.notify { padding: 8px 0 32px; }
.notify__eyebrow { margin: 0 0 18px; font-size: clamp(16px, 1.7vw, 26px); }
.notify__h { font-family: 'Oswald', var(--sans); font-weight: 600; text-transform: uppercase;
  font-size: clamp(46px, 8.2vw, 132px); line-height: .88; letter-spacing: -.01em;
  margin: 0 0 46px; color: var(--ink); }
.notify__h b { display: block; font-weight: 600;
  background: linear-gradient(90deg, #c30276, #7b2ff7);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  color: #c30276; }
.notify__body { display: flex; gap: 26px; align-items: flex-start; margin-bottom: 46px; }
.notify__rule { flex: 0 0 auto; width: 46px; margin-top: 14px;
  border-top: 4px solid var(--accent); border-bottom: 4px solid var(--accent);
  height: 14px; box-sizing: content-box; }
.notify__body p { font-family: 'Oswald', var(--sans); font-weight: 400;
  font-size: clamp(19px, 2.1vw, 34px); line-height: 1.45; color: var(--ink); margin: 0; max-width: 22ch;
  max-width: 34ch; }
.notify__body em { font-style: normal; font-weight: 500; color: var(--accent); }
/* One flush block: field left, button right, no gap between them. */
/* Two classes, so this beats .newsletter's 480px clamp further down. */
.notify__form.newsletter { display: flex; gap: 0; max-width: 900px; width: 100%; margin: 0; flex-wrap: nowrap; }
.notify__form input[type=email] { flex: 1; min-width: 0; background: var(--bg-2);
  border: 1px solid var(--line-2); border-right: 0; color: var(--ink);
  padding: 26px 28px; border-radius: 0; font-size: clamp(15px, 1.3vw, 20px); font-family: var(--mono); }
.notify__form input[type=email]:focus { outline: none; border-color: var(--accent); }
.notify__form button { flex: 0 0 auto; border: 0; cursor: pointer; color: #fff;
  background: linear-gradient(90deg, #c30276, #7b2ff7);
  padding: 26px clamp(28px, 5vw, 68px); border-radius: 0;
  font-family: var(--mono); font-size: clamp(13px, 1.2vw, 18px); letter-spacing: .18em;
  text-transform: uppercase; transition: filter .2s; }
.notify__form button:hover { filter: brightness(1.12); }
.notify__fine { font-family: var(--mono); font-size: 12px; letter-spacing: .14em;
  text-transform: uppercase; color: var(--ink-faint); margin: 16px 0 0; }
@media (max-width: 640px) {
  .notify__form.newsletter { flex-direction: column; }
  .notify__form input[type=email] { border-right: 1px solid var(--line-2); }
  .notify__body { gap: 16px; }
  .notify__rule { width: 32px; }
}

/* ---- Films pages: keep the head, filters and grid close together ------- */
.films-page .page-head { padding: 22px 0 0; }
.films-page .page-head h1 { margin: 0 0 6px; }
.films-page .page-head p { font-size: 15px; }
/* Pills stack on the left, the sort control sits beside them rather than on
   a row of its own. */
.films-page #filters-section { padding: 14px 0 0; }
.films-page #filters-section .wrap { display: grid; grid-template-columns: 1fr auto;
  column-gap: 20px; align-items: center; }
.films-page #entity-bar { grid-column: 1; grid-row: 1; margin: 0 0 8px; }
.films-page #status-bar { grid-column: 1; grid-row: 2; margin: 0; }
.films-page #filter-bar { grid-column: 2; grid-row: 1 / span 2; justify-self: end; margin: 0; }
@media (max-width: 720px) {
  .films-page #filters-section .wrap { grid-template-columns: 1fr; }
  .films-page #filter-bar { grid-column: 1; grid-row: 3; justify-self: start; margin: 14px 0 0; }
}
.films-page #grid-section { padding: 18px 0 56px; }


.watch-h { font-family: 'Oswald', var(--sans); font-weight: 600; text-transform: uppercase;
  font-size: clamp(16px, 1.4vw, 22px); letter-spacing: .04em; margin: 22px 0 14px; color: var(--ink); }
.watch-h:first-of-type { margin-top: 14px; }

/* ---- Screening list: venue, date, time and its own ticket link per row --- */
/* Screenings read as a table: a labelled header row, then one row per date.
   Column count varies with what's filled in, so the track list is handed to
   the grid as --st-cols from film.html. */
.st-h { font-family: 'Oswald', var(--sans); font-weight: 700; text-transform: uppercase;
  font-size: clamp(26px, 3.4vw, 46px); letter-spacing: -.01em; line-height: 1; margin: 0 0 26px; color: var(--ink); }
.st-h em { font-style: normal; background: linear-gradient(100deg, #c30276, #7b2ff7);
  -webkit-background-clip: text; background-clip: text; color: transparent; }
/* One grid for the whole table — header cells and row cells are direct
   children (via display:contents), so a column is exactly as wide in the
   header as in the rows. Two separate grids sized their tracks
   independently and the headings drifted off their columns. */
.stlist { --st-cols: minmax(0, 1.6fr) minmax(0, 1fr) minmax(0, .8fr) auto;
  /* No column gap: cell padding does the spacing instead, so the underlines
     meet and read as one continuous rule across the table. */
  /* Cells stretch to the full row height so their underlines land on one
     line; the content is centred inside each cell instead. */
  display: grid; grid-template-columns: var(--st-cols); column-gap: 0; align-items: stretch; margin-top: 4px; }
.sthead, .strow { display: contents; }
.sthead > span { font-family: var(--mono); font-size: 11px; font-weight: 500; letter-spacing: .18em;
  text-transform: uppercase; color: var(--ink); text-align: center;
  padding: 0 14px 14px; border-bottom: 1px solid var(--line); }
.sthead > span:first-child, .strow > *:first-child { padding-left: 4px; text-align: left; }
.sthead > span:last-child, .strow > *:last-child { padding-right: 4px; }
.strow > * { padding: 22px 14px; border-bottom: 1px solid var(--line);
  display: flex; flex-direction: column; justify-content: center; }
.strow > .st-venue { align-items: flex-start; }
.strow > .st-guest, .strow > .st-date, .strow > .st-time,
.strow > .st-price, .strow > .st-flyer { align-items: center; }
.st-venue b { display: block; font-family: 'Oswald', var(--sans); font-weight: 600;
  text-transform: uppercase; font-size: clamp(15px, 1.3vw, 20px); letter-spacing: .01em; color: var(--ink); }
.st-venue span { display: block; margin-top: 4px; font-family: var(--mono); font-size: 11.5px;
  letter-spacing: .1em; text-transform: uppercase; color: var(--ink-faint); }
.st-guest, .st-date, .st-time, .st-price, .st-flyer { text-align: center; }
.st-guest .st-person { display: block; }
.st-guest .st-person + .st-person { margin-top: 6px; }
.st-guest b { font-family: var(--mono); font-weight: 400; font-size: clamp(12px, 1.05vw, 14px);
  letter-spacing: .1em; text-transform: uppercase; color: var(--ink); }
.st-guest i { display: block; margin-top: 2px; font-style: normal; font-family: var(--mono);
  font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-faint); }
.st-date, .st-time { font-family: var(--mono); font-size: clamp(12px, 1.05vw, 14px);
  letter-spacing: .1em; text-transform: uppercase; color: var(--ink); }
.st-note { display: block; margin-top: 5px; font-size: 11px; letter-spacing: .1em; color: var(--accent); }
/* Price sits over a small "from", as in the handoff. */
.st-price b { display: block; font-family: var(--mono); font-weight: 400;
  font-size: clamp(13px, 1.15vw, 16px); color: var(--ink); }
.st-price span { display: block; margin-top: 2px; font-family: var(--mono); font-size: 10px;
  letter-spacing: .14em; text-transform: uppercase; color: var(--ink-faint); }
/* Centre the button inside a full-width cell — justify-self shrank the cell
   to the button and broke the row rule. */
.st-cta { display: flex; flex-direction: row; align-items: center; justify-content: center; }
.st-cta .fb-btn { padding: 13px 26px; font-size: 11px; letter-spacing: .16em; }
.st-flyer a { font-family: var(--mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase;
  color: var(--accent); border-bottom: 1px solid currentColor; padding-bottom: 2px; }
.st-flyer a b { font-weight: 400; }
.st-soon { font-family: var(--mono); font-size: 11px; letter-spacing: .14em;
  text-transform: uppercase; color: var(--ink-faint); }
@media (max-width: 760px) {
  /* Too many columns for a phone: the header goes away and each screening
     stacks as a card, left-aligned. */
  .sthead { display: none; }
  /* display:contents only makes sense while the table is a table. */
  .stlist { display: block; }
  .strow { display: grid; grid-template-columns: 1fr auto; gap: 10px 16px; align-items: start;
    padding: 18px 4px; border-bottom: 1px solid var(--line); }
  .strow > * { padding: 0; border-bottom: 0; display: block; }
  .st-venue { grid-column: 1 / -1; }
  .st-guest, .st-date, .st-time, .st-price, .st-flyer { grid-column: 1; text-align: left; }
  .st-price b, .st-price span { display: inline; }
  .st-price span { margin-left: 6px; }
  .st-cta { grid-column: 2; grid-row: 2; justify-content: flex-end; }
}

/* --------------------------------------------------- CATEGORY ENTRIES --- */
.cat-entries { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
@media (max-width: 880px) { .cat-entries { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 460px) { .cat-entries { grid-template-columns: 1fr; } }
.cat-entry {
  position: relative; display: block; text-decoration: none; padding: 26px 22px; min-height: 132px;
  border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden;
  background: linear-gradient(160deg, var(--bg-2), var(--bg)); transition: border-color .25s, transform .25s;
}
.cat-entry:hover { border-color: var(--accent); transform: translateY(-3px); }
.cat-entry .num { font-family: var(--mono); font-size: 11px; color: var(--ink-faint); }
.cat-entry h3 { font-family: var(--serif); font-weight: 400; font-size: 22px; margin: 14px 0 4px; }
.cat-entry .count { font-family: var(--mono); font-size: 11px; color: var(--accent); text-transform: uppercase; letter-spacing: .08em; }
.cat-entry::after { content: "→"; position: absolute; right: 18px; bottom: 16px; color: var(--ink-faint); transition: color .2s, transform .2s; }
.cat-entry:hover::after { color: var(--accent); transform: translateX(4px); }

/* -------------------------------------------------------- FILM GRID --- */
.film-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
@media (max-width: 720px)  { .film-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 440px)  { .film-grid { grid-template-columns: 1fr; } }
.film-grid.featured { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 880px) { .film-grid.featured { grid-template-columns: repeat(2, 1fr); } }

.film-card { position: relative; display: flex; flex-direction: column; text-decoration: none; border-radius: var(--radius); overflow: hidden; border: 1px solid var(--line); background: var(--bg-2); transition: border-color .25s, transform .25s, box-shadow .25s; }
.film-card:hover { border-color: var(--accent); transform: translateY(-4px); box-shadow: 0 24px 60px rgba(0,0,0,0.55); }
.film-card .poster { position: relative; aspect-ratio: 2 / 3; }
.film-card.wide .poster { aspect-ratio: 16 / 9; }
.film-card .poster .media { position: absolute; inset: 0; }

.film-card .status-tag {
  display: inline-block; font-family: var(--mono); font-size: 9px;
  letter-spacing: .12em; text-transform: uppercase; padding: 4px 8px; border-radius: 3px; color: #fff;
  /* The release tag wears the brand gradient — the same magenta-to-purple as
     the See Showtimes button, so the two read as one system. */
  background: linear-gradient(100deg, #c30276, #7b2ff7); border: 1px solid transparent;
}
.film-card .status-tag.s-in-theaters { background: linear-gradient(100deg, #c30276, #7b2ff7); border-color: transparent; }
.film-card .status-tag.s-at-home    { background: rgba(90,209,154,0.18); border-color: var(--ok); color: var(--ok); }
/* Ticketing slot: vendor embed renders inside the page, full width */
.tickets-embed { margin-top: 16px; border: 1px solid var(--line); border-radius: 14px; overflow: hidden; background: var(--panel, rgba(0,0,0,0.15)); }
.tickets-embed iframe { display: block; width: 100%; min-height: 660px; border: 0; }
/* Title, then the two tags, then year/rating — sized to just those three. */
.film-card .info { padding: 14px 14px 15px; }
.film-card .info .ftitle { font-family: var(--serif); font-size: 19px; line-height: 1.15; margin: 0 0 10px; }
.film-card .info .ftags { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 9px; }
.film-card .info .fmeta { font-family: var(--mono); font-size: 10.5px; letter-spacing: .04em; color: var(--ink-faint); text-transform: uppercase; }

/* ------------------------------------------------------ FILTER BAR --- */
.filter-bar { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin-bottom: 30px; }
.filter-bar .chip {
  font-family: var(--mono); font-size: 11px; letter-spacing: .05em; text-transform: uppercase;
  padding: 9px 15px; border-radius: 20px; border: 1px solid var(--line-2); background: transparent;
  color: var(--ink-dim); cursor: pointer; transition: all .2s;
}
.filter-bar .chip:hover { color: var(--ink); border-color: var(--ink-dim); }
.filter-bar .chip.active { background: var(--accent); border-color: var(--accent); color: #fff; }
.filter-bar select {
  margin-left: auto; background: var(--bg-2); border: 1px solid var(--line-2); color: var(--ink);
  font-family: var(--mono); font-size: 12px; padding: 9px 12px; border-radius: 4px;
}

/* --------------------------------------------------- FILM SUBPAGE --- */
/* Tall cinematic band: the picture fills the screen down to a strip of the
   page below, so the title over it is the first thing read. */
.film-hero { position: relative; width: 100%; aspect-ratio: 16 / 9;
  /* The header is always a solid bar on these pages, so the band fills what
     is left of the window beneath it. */
  min-height: 320px; height: calc(100vh - var(--nav-h, 68px) - 56px); max-height: 86vh;
  border-bottom: 1px solid var(--line); overflow: hidden; }
.film-hero .media { position: absolute; inset: 0; }
/* Trailer hero: artwork with a play control; the embed replaces it on click. */
.film-hero--trailer { background: #07060a; }
/* Once the trailer is running the bar is a real header again: solid, above
   the picture, and the hero keeps its rule beneath. */
body.trailer-playing .site-nav { background: rgba(8,8,10,0.95); }
html[data-entity="mls"] body.trailer-playing .site-nav { background: rgba(255,255,255,0.96); }
body.trailer-playing .film-hero { border-bottom: 1px solid var(--line); }
body.trailer-playing .fhero-caption { display: none; }
.film-hero iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; display: block; }
.fhero-play { position: absolute; inset: 0; width: 100%; height: 100%; padding: 0; border: 0;
  background: none; cursor: pointer; display: block; }
.fhero-play .media { position: absolute; inset: 0; }
.fhero-still { background: #07060a; }
/* Title over the picture, bottom left. */
.fhero-caption { position: absolute; left: 0; right: 0; bottom: 0; z-index: 3;
  padding: 0 28px 40px; pointer-events: none; }
.fhero-h1 { font-family: var(--sans); font-weight: 600; letter-spacing: -.02em; line-height: 1;
  font-size: clamp(34px, 5.2vw, 78px); margin: 0; color: #fff;
  text-shadow: 0 2px 30px rgba(0,0,0,.55); }
/* The scrim only needs to darken the foot of the frame for that title. */
.film-hero > .fhero-scrim, .fhero-play .fhero-scrim {
  background: linear-gradient(to top, rgba(6,5,9,.72) 0%, rgba(6,5,9,.30) 22%, rgba(6,5,9,0) 52%); }
.fhero-play .fhero-scrim {
  background: linear-gradient(to top, rgba(6,5,9,.72) 0%, rgba(6,5,9,.30) 22%, rgba(6,5,9,0) 52%),
              radial-gradient(52% 52% at 50% 46%, rgba(6,5,9,.30), rgba(6,5,9,0) 72%); }
.film-hero > .fhero-scrim { position: absolute; inset: 0; z-index: 2; pointer-events: none; }
@media (max-width: 640px) { .fhero-caption { padding: 0 18px 26px; } }
.fhero-still img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fhero-scrim { position: absolute; inset: 0;
  background: radial-gradient(60% 60% at 50% 50%, rgba(6,5,9,.34), rgba(6,5,9,.06) 70%); }
.fhero-tri { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  width: 0; height: 0; border-top: 27px solid transparent; border-bottom: 27px solid transparent;
  border-left: 46px solid #fff; filter: drop-shadow(0 4px 18px rgba(0,0,0,.55));
  transition: transform .25s, opacity .25s; opacity: .95; }
.fhero-play:hover .fhero-tri { transform: translate(-50%, -50%) scale(1.12); opacity: 1; }
@media (max-width: 640px) {
  .fhero-tri { border-top-width: 19px; border-bottom-width: 19px; border-left-width: 32px; }
}

/* Title block — sits below the section nav bar, not over the image */
.film-head { padding: 30px 0 6px; }
.film-head .eyebrow { font-family: var(--mono); font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--accent); }
.film-head h1 { font-family: var(--serif); font-weight: 400; letter-spacing: -.02em; line-height: 1; font-size: clamp(34px, 6vw, 76px); margin: 10px 0; }
.film-head .logline { font-family: var(--serif); font-style: italic; color: var(--accent-2); font-size: clamp(16px, 2.2vw, 24px); max-width: 760px; margin: 0 0 20px; }
.film-head .fmeta { display: flex; gap: 14px; flex-wrap: wrap; font-family: var(--mono); font-size: 11px; color: var(--ink-dim); letter-spacing: .05em; align-items: center; }
.film-head .fmeta .pill { border: 1px solid var(--line-2); padding: 3px 9px; border-radius: 3px; }
.film-head .fmeta .rt { color: var(--accent); }
/* First section: title block on the left, details box on the right (persistent).
   The details box is wide and lays out in two columns so it stays short. */
.film-head .fh-grid { display: flex; gap: 44px; align-items: flex-start; }
.film-head .fh-main { flex: 1; min-width: 0; }
.film-head .fh-specs { width: 580px; max-width: 52%; flex-shrink: 0; margin-top: 6px; padding: 22px 26px; }
.film-head .fh-specs .fspec-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 28px; }
.film-head .fh-specs .fspec { display: flex; flex-direction: column; gap: 3px; }
.film-head .fh-specs .fspec span { font-family: var(--mono); font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-faint); }
.film-head .fh-specs .fspec b { font-weight: 500; font-size: 15px; color: var(--ink); }
.film-head .fh-specs .fspec-rt b { color: var(--accent); }
@media (max-width: 880px) {
  .film-head .fh-grid { flex-direction: column; gap: 26px; }
  .film-head .fh-specs { width: 100%; max-width: none; }
}
#panels.section { padding-top: 20px; }   /* sit closer under the title header */

/* Tabs */
/* top tucks 1px under the (higher z-index) main nav so the two bars kiss with no gap */
.tabs-bar { position: sticky; top: calc(var(--nav-h, 67px) - 1px); z-index: 50; background: rgba(8,8,10,0.92); backdrop-filter: blur(14px); border-bottom: 1px solid var(--line); }
.tabs { display: flex; gap: 4px; max-width: var(--maxw); margin: 0 auto; padding: 0 22px; overflow-x: auto; scrollbar-width: none; }
.tabs::-webkit-scrollbar { display: none; }
/* A short section left the page too short to lift the tab bar to the top, so
   choosing it could not snap. The footer supplies most of that room; reserving
   a screen's worth on top of it left short sections (Synopsis) with a much
   wider gap above the footer than Home or Cast. The reserve now sizes to what
   snapping actually needs, so every section ends the same distance above the
   footer. */
#panels { min-height: calc(100vh - var(--nav-h, 68px) - 54px - var(--foot-h, 340px)); }
/* Showtimes keeps the original full reserve — its spacing was right as it was. */
#panels:has(> #showtimes.active) { min-height: calc(100vh - var(--nav-h, 68px) - 54px); }
/* The row scrolls sideways on narrow screens, but that clips any dropdown
   inside it — so where the tabs fit, let the menu escape the bar. */
@media (min-width: 900px) { .tabs { overflow: visible; } }
/* ---- Dropdown inside the tab bar (Social profiles) --------------------- */
.tab-group { position: relative; flex-shrink: 0; display: flex; }
.tab-group-btn { display: inline-flex; align-items: center; gap: 7px; }
.tab-caret { width: 0; height: 0; border-left: 4px solid transparent; border-right: 4px solid transparent;
  border-top: 4px solid currentColor; opacity: .7; transition: transform .2s; }
.tab-group.open .tab-caret { transform: rotate(180deg); }
.tab-group.open > .tab-group-btn { color: var(--ink); }
.tab-menu { position: absolute; top: calc(100% - 2px); left: 6px; min-width: 210px; z-index: 70;
  display: flex; flex-direction: column; padding: 6px 0; border-radius: 8px;
  background: var(--bg-2); border: 1px solid var(--line-2); box-shadow: 0 22px 60px rgba(0,0,0,.35);
  opacity: 0; visibility: hidden; transform: translateY(-6px);
  transition: opacity .2s, transform .2s, visibility .2s; }
.tab-group.open .tab-menu { opacity: 1; visibility: visible; transform: translateY(0); }
.tab-menu a { display: flex; align-items: baseline; gap: 8px; padding: 10px 14px; text-decoration: none;
  font-family: var(--mono); font-size: 12px; letter-spacing: .06em; text-transform: uppercase;
  color: var(--ink); white-space: nowrap; }
.tab-menu a span { font-size: 11px; letter-spacing: .02em; text-transform: none; color: var(--ink-faint); }
.tab-menu a b { margin-left: auto; font-weight: 400; color: var(--ink-faint); }
.tab-menu a:hover { background: var(--bg-3); color: var(--accent); }
.tab-menu a:hover b { color: var(--accent); }
.tab {
  /* Anchors and the dropdown's button both lay out as centred flex boxes, so
     every label sits on the same line. */
  flex-shrink: 0; display: inline-flex; align-items: center;
  background: none; border: 0; border-bottom: 2px solid transparent; cursor: pointer;
  font-family: var(--mono); font-size: 12px; letter-spacing: .08em; text-transform: uppercase;
  color: var(--ink-dim); padding: 16px 18px; transition: color .2s, border-color .2s; text-decoration: none;
}
.tab:hover { color: var(--ink); }
.tab.active { color: var(--accent); border-bottom-color: var(--accent); }
.tab-panel { display: none; animation: fade-in .4s ease; }
.tab-panel.active { display: block; }
@keyframes fade-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }

/* Synopsis / credits */
.split { display: grid; grid-template-columns: 1.6fr 1fr; gap: 50px; }
@media (max-width: 880px) { .split { grid-template-columns: 1fr; gap: 36px; } }
.prose { font-family: var(--serif); font-size: 20px; line-height: 1.6; }
.prose p { margin: 0 0 22px; }
.prose p:first-child::first-letter { font-size: 60px; line-height: .8; float: left; padding: 6px 12px 0 0; color: var(--accent); font-style: italic; }
.factbox { border: 1px solid var(--line); background: var(--bg-2); border-radius: var(--radius); padding: 24px; align-self: start; }
.factbox dl { margin: 0; }
.factbox dt { font-family: var(--mono); font-size: 10px; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-faint); margin-top: 16px; }
.factbox dt:first-child { margin-top: 0; }
.factbox dd { margin: 3px 0 0; font-size: 15px; }
.poster-frame { border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; margin-bottom: 18px; box-shadow: 0 20px 60px rgba(0,0,0,.5); }
.poster-frame .media { aspect-ratio: 2/3; background: #0c0c10; }
.poster-frame .media > img { object-fit: contain; }   /* show the whole poster, never oversized/cropped */

/* Cast grid */
.cast-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 22px; }
@media (max-width: 1200px) { .cast-grid { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 1024px) { .cast-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 720px)  { .cast-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 440px)  { .cast-grid { grid-template-columns: 1fr; } }
/* Portrait-led card: a big face, the name in condensed caps beneath it and
   the role under that, all centred. */
.cast-card { display: block; text-decoration: none; text-align: center;
  border: 1px solid var(--line); border-radius: var(--radius); padding: 14px 14px 20px;
  background: linear-gradient(180deg, var(--bg-2), var(--bg)); transition: border-color .25s, transform .25s; }
.cast-card:hover { border-color: var(--accent); transform: translateY(-2px); }
.cast-card .portrait { position: relative; aspect-ratio: 3/4; border-radius: 3px; overflow: hidden; background: linear-gradient(135deg, #1a1a20, #08080a); margin-bottom: 16px; }
.cast-card .portrait img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.cast-card .portrait .initials { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-family: var(--serif); font-style: italic; font-size: 54px; color: rgba(255,46,142,.4); }
.cast-card .cname { font-family: 'Oswald', var(--sans); font-weight: 600; text-transform: uppercase;
  font-size: clamp(15px, 1.25vw, 20px); line-height: 1.15; letter-spacing: .01em; margin: 4px 0 6px; color: var(--ink); }
.cast-card .crole { font-family: var(--mono); font-size: 11px; color: var(--accent);
  text-transform: uppercase; letter-spacing: .16em; }
.cast-card .imdb-tag { font-family: var(--mono); font-size: 10px; color: var(--ink-faint); margin-top: 10px; opacity: 0; transition: opacity .2s; }
.cast-card:hover .imdb-tag { opacity: 1; color: var(--accent); }

/* Videos */
.video-frame { position: relative; aspect-ratio: 16/9; border-radius: var(--radius); overflow: hidden; border: 1px solid var(--line); background: #000; box-shadow: 0 30px 80px rgba(0,0,0,.5); }
.video-frame iframe, .video-frame video { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.video-placeholder { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; cursor: pointer; }
.video-placeholder .play { width: 72px; height: 72px; border-radius: 50%; border: 2px solid #fff; display: flex; align-items: center; justify-content: center; font-size: 24px; color: #fff; background: rgba(0,0,0,.3); }
.video-placeholder small { font-family: var(--mono); font-size: 11px; color: var(--ink-dim); letter-spacing: .06em; }
.video-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-top: 22px; }
@media (max-width: 720px) { .video-list { grid-template-columns: 1fr 1fr; } }
.video-list .vitem { border: 1px solid var(--line); border-radius: 4px; padding: 14px; background: var(--bg-2); cursor: pointer; transition: border-color .2s; }
.video-list .vitem:hover { border-color: var(--accent); }
.video-list .vitem .vt { font-size: 14px; margin-bottom: 4px; }
.video-list .vitem .vd { font-family: var(--mono); font-size: 11px; color: var(--ink-faint); }

/* Assets tab (Gallery / Key Art / Trailer & Videos / BTS) */
.asset-group { margin-top: 44px; text-align: center; }
.asset-group:first-of-type { margin-top: 10px; }
/* Centered, high-contrast section heading with an accent underline. */
.asset-h { font-family: var(--serif); font-weight: 600; font-size: clamp(22px, 2.4vw, 30px); margin: 0 0 22px;
  text-align: center; color: var(--ink); letter-spacing: .01em; }
.asset-h::after { content: ""; display: block; width: 46px; height: 3px; margin: 12px auto 0;
  background: var(--accent); border-radius: 2px; }
.asset-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; }
.asset-cell { border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; background: var(--bg-2); }
.asset-cell .media { aspect-ratio: 16 / 9; }

/* Asset slideshow — same viewbox as the trailer/YouTube frame (full width, 16:9) */
.asset-show { position: relative; max-width: none; margin: 0 auto; }
.as-track { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none;
  -ms-overflow-style: none; border: 1px solid var(--line); border-radius: var(--radius);
  background: var(--bg-3); box-shadow: 0 24px 70px rgba(0,0,0,.35); }
.as-track::-webkit-scrollbar { display: none; }
.as-slide { flex: 0 0 100%; scroll-snap-align: center; aspect-ratio: 16 / 9; }
.as-slide .media { width: 100%; height: 100%; background: var(--bg-3); }
.as-arrow { position: absolute; top: calc(50% - 22px); z-index: 3; width: 44px; height: 44px; border-radius: 50%;
  border: 1px solid var(--line-2); background: var(--bg-2); color: var(--ink); font-size: 22px; line-height: 1;
  cursor: pointer; display: flex; align-items: center; justify-content: center; box-shadow: 0 8px 28px rgba(0,0,0,.3);
  transition: transform .15s ease, border-color .2s ease; }
.as-arrow:hover { border-color: var(--accent); transform: scale(1.06); }
.as-arrow.prev { left: 12px; } .as-arrow.next { right: 12px; }
.as-dots { display: flex; gap: 9px; justify-content: center; margin-top: 16px; }
.as-dot { width: 9px; height: 9px; border-radius: 50%; border: 0; background: var(--line-2); cursor: pointer; padding: 0;
  transition: background .2s ease, transform .2s ease; }
.as-dot.active { background: var(--accent); transform: scale(1.25); }
@media (max-width: 600px) { .as-arrow { display: none; } }

/* Social showcase (film page Social tab) */
.social-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
@media (max-width: 880px) { .social-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .social-grid { grid-template-columns: 1fr; } }
.spost { display: flex; flex-direction: column; text-decoration: none; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; background: var(--bg-2); transition: border-color .25s, transform .25s, box-shadow .25s; }
.spost:hover { border-color: var(--accent); transform: translateY(-3px); box-shadow: 0 20px 50px rgba(0,0,0,.5); }
.spost .sp-media { position: relative; aspect-ratio: 1 / 1; background: linear-gradient(135deg, #1a1a20, #08080a); }
.spost .sp-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.spost .sp-media.noimg { display: flex; align-items: center; justify-content: center; }
.spost .sp-media .sp-plat { font-family: var(--serif); font-style: italic; font-size: 28px; color: rgba(255,46,142,.45); }
.spost .sp-body { padding: 14px 15px 16px; }
.spost .sp-plat-tag { font-family: var(--mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--accent); margin-bottom: 6px; }
.spost .sp-cap { font-size: 14px; color: var(--ink-dim); margin: 0; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.spost .sp-link { display: inline-block; margin-top: 10px; font-family: var(--mono); font-size: 11px; color: var(--ink-faint); }
.spost:hover .sp-link { color: var(--accent); }

/* Shop (Shopify-powered) */
.shop-sub { color: var(--ink-dim); font-size: 15px; margin: 6px 0 0; }
.shop-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
@media (max-width: 1024px) { .shop-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 720px)  { .shop-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 440px)  { .shop-grid { grid-template-columns: 1fr; } }
.product-card { display: flex; flex-direction: column; text-decoration: none; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; background: var(--bg-2); transition: border-color .25s, transform .25s, box-shadow .25s; }
.product-card:hover { border-color: var(--accent); transform: translateY(-3px); box-shadow: 0 20px 50px rgba(0,0,0,.5); }
.product-card .pc-media { position: relative; aspect-ratio: 1 / 1; background: linear-gradient(135deg, #1a1a20, #08080a); }
.product-card .pc-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.product-card .pc-media.noimg { display: flex; align-items: center; justify-content: center; }
.product-card .pc-media.noimg span { font-family: var(--serif); font-style: italic; font-size: 40px; color: rgba(255,46,142,.4); }
.product-card .pc-body { padding: 14px 15px 16px; display: flex; flex-direction: column; gap: 4px; flex: 1; }
.product-card .pc-title { font-family: var(--serif); font-size: 17px; line-height: 1.2; }
.product-card .pc-price { font-family: var(--mono); font-size: 13px; color: var(--ink-dim); }
.product-card .pc-cta { margin-top: auto; padding-top: 10px; font-family: var(--mono); font-size: 11px; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-faint); }
.product-card:hover .pc-cta { color: var(--accent); }
.shopify-mount { min-height: 80px; }

/* Where to watch */
.watch-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 14px; }
.watch-link { display: flex; align-items: center; justify-content: space-between; gap: 12px; text-decoration: none; border: 1px solid var(--line-2); border-radius: var(--radius); padding: 18px 20px; background: var(--bg-2); transition: border-color .2s, transform .2s; }
.watch-link:hover { border-color: var(--accent); transform: translateY(-2px); }
.watch-link .wname { font-family: var(--serif); font-size: 18px; }
.watch-link .warrow { color: var(--accent); }

/* Showtimes */
.showtimes-bar { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 26px; }
.showtimes-bar input { background: var(--bg-2); border: 1px solid var(--line-2); color: var(--ink); padding: 12px 14px; border-radius: 4px; font-family: var(--mono); font-size: 13px; min-width: 200px; }
.theater { border: 1px solid var(--line); border-radius: var(--radius); padding: 20px 24px; background: var(--bg-2); display: grid; grid-template-columns: 1fr auto; gap: 24px; align-items: center; margin-bottom: 14px; }
@media (max-width: 680px) { .theater { grid-template-columns: 1fr; } }
.theater .tname { font-family: var(--serif); font-size: 18px; }
.theater .taddr { font-family: var(--mono); font-size: 11px; color: var(--ink-faint); }
.theater .times { display: flex; gap: 8px; flex-wrap: wrap; }
.theater .times a { border: 1px solid var(--line-2); border-radius: 3px; padding: 7px 12px; font-family: var(--mono); font-size: 12px; text-decoration: none; color: var(--ink); transition: all .15s; }
.theater .times a:hover { background: var(--accent); border-color: var(--accent); color: #fff; }
.empty-state { border: 1px dashed var(--line-2); border-radius: var(--radius); padding: 40px; text-align: center; color: var(--ink-dim); }

/* Press coverage — editorial article cards */
.press-sub { font-family: var(--mono); font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--ink-faint); margin: 34px 0 14px; }
.press-coverage { display: grid; gap: 14px; }
.press-art { display: grid; grid-template-columns: 200px 1fr; gap: 22px; align-items: stretch; text-decoration: none;
  border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; background: var(--bg-2);
  transition: border-color .25s, transform .25s, box-shadow .25s; }
.press-art:only-child, .press-art { }
.press-art:hover { border-color: var(--accent); transform: translateY(-2px); box-shadow: 0 18px 50px rgba(0,0,0,.45); }
.press-art .pa-thumb { position: relative; background: #0c0c10; min-height: 130px; }
.press-art .pa-thumb img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.press-art .pa-body { padding: 20px 22px; display: flex; flex-direction: column; gap: 6px; }
.press-art .pa-outlet { font-family: var(--mono); font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--accent); }
.press-art .pa-date { color: var(--ink-faint); }
.press-art .pa-title { font-family: var(--serif); font-size: clamp(19px, 2.1vw, 26px); line-height: 1.2; color: var(--ink); }
.press-art .pa-excerpt { font-size: 14px; color: var(--ink-dim); margin: 2px 0 0; }
.press-art .pa-read { margin-top: auto; padding-top: 8px; font-family: var(--mono); font-size: 11px; letter-spacing: .05em; color: var(--ink-faint); }
.press-art:hover .pa-read { color: var(--accent); }
@media (max-width: 640px) { .press-art { grid-template-columns: 1fr; } .press-art .pa-thumb { min-height: 160px; } }

/* Press */
.quote-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
@media (max-width: 720px) { .quote-grid { grid-template-columns: 1fr; } }
.pquote { border-left: 3px solid var(--accent); background: var(--bg-2); border-radius: 0 var(--radius) var(--radius) 0; padding: 24px; font-family: var(--serif); font-style: italic; font-size: 19px; }
.pquote cite { display: block; margin-top: 14px; font-family: var(--mono); font-style: normal; font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-faint); }
.laurels { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 24px; }
.laurel { border: 1px solid var(--line-2); border-radius: 20px; padding: 8px 16px; font-family: var(--mono); font-size: 11px; letter-spacing: .06em; color: var(--ink-dim); }

/* News */
.news-list { display: flex; flex-direction: column; gap: 0; }
.news-item { display: grid; grid-template-columns: 130px 1fr; gap: 24px; padding: 26px 0; border-top: 1px solid var(--line); text-decoration: none; transition: background .2s; }
.news-item:hover { background: rgba(255,255,255,0.015); }
@media (max-width: 640px) { .news-item { grid-template-columns: 1fr; gap: 8px; } }
.news-item .nmeta { font-family: var(--mono); font-size: 11px; color: var(--ink-faint); text-transform: uppercase; letter-spacing: .06em; }
.news-item .ntag { color: var(--accent); }
.news-item h3 { font-family: var(--serif); font-weight: 400; font-size: 22px; margin: 0 0 6px; }
.news-item p { color: var(--ink-dim); font-size: 14px; margin: 0; }

/* Press / news — editorial cards (landing + news page) */
.press-feed { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 24px; }
.press-card { display: flex; flex-direction: column; text-decoration: none; border: 1px solid var(--line);
  border-radius: 16px; overflow: hidden; background: var(--bg-2, rgba(255,255,255,.02));
  transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease; }
.press-card:hover { transform: translateY(-3px); border-color: var(--accent); box-shadow: 0 20px 60px rgba(0,0,0,.28); }
.press-card .pc-thumb { position: relative; aspect-ratio: 16 / 10; background: #0c0c10; }
.press-card .pc-thumb .media { position: absolute; inset: 0; width: 100%; height: 100%; }
.press-card .pc-body { padding: 22px 24px 22px; display: flex; flex-direction: column; gap: 12px; flex: 1; }
/* Outlet and date lead; the label and category drop to a footer row beneath
   a rule, opposite the read link. */
.press-card .pc-meta { display: flex; gap: 9px; align-items: baseline; flex-wrap: wrap;
  font-family: var(--mono); font-size: 11.5px; letter-spacing: .12em; text-transform: uppercase; }
.press-card .pc-outlet { color: var(--ink); font-weight: 500; }
.press-card .pc-dot { color: var(--ink-faint); }
.press-card .pc-date { color: var(--ink-faint); letter-spacing: .1em; }
.press-card .pc-title { font-family: var(--serif); font-weight: 400; font-size: clamp(19px, 1.7vw, 23px);
  line-height: 1.22; margin: 0; color: var(--ink); }
.press-card .pc-excerpt { color: var(--ink-dim); font-size: 14px; line-height: 1.5; margin: 0; }
.press-card .pc-foot { margin-top: auto; padding-top: 16px;
  border-top: 1px solid var(--line); display: flex; align-items: baseline;
  justify-content: space-between; gap: 14px; flex-wrap: wrap; }
.press-card .pc-read { font-family: var(--mono); font-size: 11px; letter-spacing: .14em;
  text-transform: uppercase; color: var(--ink-dim); transition: color .2s; }
.press-card .pc-read b { font-weight: 400; }
.press-card .pc-kind { font-family: var(--mono); font-size: 11px; letter-spacing: .14em;
  text-transform: uppercase; color: var(--accent); text-align: right; }
.press-card:hover .pc-read { color: var(--accent); }

/* Horizontal press rail (left/right scroll when there are many articles) */
.press-rail-wrap { position: relative; }
.press-rail { display: flex; gap: 24px; overflow-x: auto; scroll-snap-type: x mandatory;
  padding: 4px 2px 18px; scrollbar-width: none; -ms-overflow-style: none; scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch; }
.press-rail::-webkit-scrollbar { display: none; }
/* Three across on desktop; the 4th+ scrolls horizontally (never wraps). */
.press-rail > .press-card { flex: 0 0 calc((100% - 48px) / 3); scroll-snap-align: start; }
@media (max-width: 900px) { .press-rail > .press-card { flex-basis: calc((100% - 24px) / 2); } }
@media (max-width: 600px) { .press-rail > .press-card { flex-basis: 86%; } }
.press-rail-arrow { position: absolute; top: calc(50% - 22px); z-index: 3; width: 44px; height: 44px;
  border-radius: 50%; border: 1px solid var(--line-2); background: var(--bg-2); color: var(--ink);
  font-size: 22px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center;
  box-shadow: 0 8px 28px rgba(0,0,0,.22); transition: transform .15s ease, border-color .2s ease, opacity .2s ease; }
.press-rail-arrow:hover { border-color: var(--accent); transform: scale(1.06); }
.press-rail-arrow.prev { left: -10px; }
.press-rail-arrow.next { right: -10px; }
.press-rail-arrow[hidden] { display: none; }
@media (max-width: 640px) { .press-rail-arrow { display: none; } }

/* Closer / CTA band */
.cta-band { text-align: center; padding: 80px 0; }
.cta-band h2 { font-family: var(--serif); font-weight: 400; font-size: clamp(30px, 5vw, 60px); letter-spacing: -.02em; margin: 0 0 14px; }
.cta-band h2 em { font-style: italic; color: var(--accent); }
.cta-band p { color: var(--ink-dim); max-width: 520px; margin: 0 auto 30px; }

/* About / contact prose */
.lede { font-family: var(--serif); font-size: clamp(22px, 3vw, 32px); line-height: 1.4; max-width: 860px; }
.lede em { color: var(--accent); font-style: italic; }
.cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; margin-top: 40px; }
@media (max-width: 760px) { .cols { grid-template-columns: 1fr; } }
.cols .col h3 { font-family: var(--serif); font-weight: 400; font-size: 20px; margin: 0 0 8px; }
.cols .col p { color: var(--ink-dim); font-size: 14px; margin: 0; }

/* --------------------------------------------------- NEWSLETTER FORM --- */
.newsletter { display: flex; gap: 10px; flex-wrap: wrap; max-width: 480px; }
/* Text and email inputs share one shape, so the contact form's name box
   matches the email box under it. */
.newsletter input[type=email], .newsletter input[type=text] { flex: 1; min-width: 200px; background: var(--bg-2); border: 1px solid var(--line-2); color: var(--ink); padding: 13px 15px; border-radius: 4px; font-size: 14px; }
.newsletter input[type=email]:focus, .newsletter input[type=text]:focus { border-color: var(--accent); outline: none; }
.form-note { font-family: var(--mono); font-size: 11px; color: var(--ink-faint); margin-top: 10px; }
.form-note.ok { color: var(--ink); }
.form-note.err { color: var(--accent); }

/* -------------------------------------------------------- POPUP MODAL --- */
.popup-overlay { position: fixed; inset: 0; z-index: 200; background: rgba(4,4,6,0.78); backdrop-filter: blur(6px); display: flex; align-items: center; justify-content: center; padding: 24px; opacity: 0; pointer-events: none; transition: opacity .35s; }
.popup-overlay.show { opacity: 1; pointer-events: auto; }
/* overflow must stay visible so the close button can sit across the corner;
   the media band clips itself instead to keep the rounded top. */
.popup { position: relative; width: 100%; max-width: 460px; background: var(--bg-2); border: 1px solid var(--line-2); border-radius: 10px; overflow: visible; box-shadow: 0 40px 120px rgba(0,0,0,.7); transform: translateY(14px) scale(.98); transition: transform .35s; }
.popup-overlay.show .popup { transform: translateY(0) scale(1); }
.popup .popup-media { height: 130px; position: relative; border-bottom: 1px solid var(--line); border-radius: 10px 10px 0 0; overflow: hidden; }
.popup .popup-media .media { position: absolute; inset: 0; background: #0b0b0f; }
/* The popup shows a logo, not a photo: cover would crop the lockup, so fit the
   whole thing inside with breathing room. */
.popup .popup-media .media > img { object-fit: contain; padding: 20px 26px; box-sizing: border-box; }
.popup .popup-body { padding: 26px 26px 28px; }
.popup h3 { font-family: var(--serif); font-weight: 400; font-size: 26px; margin: 0 0 8px; }
.popup p { color: var(--ink-dim); font-size: 14px; margin: 0 0 18px; }
/* Always-on close: a bright brand-accent circle riding the top-right corner,
   half in and half out of the card, never dimmed or hover-gated. */
.popup .popup-close { position: absolute; top: -15px; right: -15px; z-index: 6; background: var(--accent); border: 2px solid #fff; color: #fff; width: 38px; height: 38px; border-radius: 50%; cursor: pointer; font-size: 20px; font-weight: 600; line-height: 1; opacity: 1; box-shadow: 0 6px 18px rgba(0,0,0,.35); display: flex; align-items: center; justify-content: center; }
.popup .popup-close:hover { transform: scale(1.08); }

/* ------------------------------------------------------------- FOOTER --- */
.site-footer { border-top: 1px solid var(--line); padding: 56px 0 40px; margin-top: 40px; }
.footer-top { display: grid; grid-template-columns: 2fr 0.8fr 1.2fr; gap: 40px; }
@media (max-width: 820px) { .footer-top { grid-template-columns: 1fr; gap: 32px; } }
/* The two labels stand side by side, each with its own accounts. */
.footer-brands { display: grid; grid-template-columns: 1fr 1fr; gap: 32px; align-items: start; }
@media (max-width: 560px) { .footer-brands { grid-template-columns: 1fr; } }
/* Edge lockup built like the Light one: brand wave over the wordmark, with
   FILMS tucked under the wordmark's right edge. Stands in until the real
   glitch-wave logo file arrives. */
.edge-lockup { margin-bottom: 10px; display: flex; flex-direction: column; width: max-content; }
.edge-wave { display: block; width: 148px; height: auto; margin-bottom: 6px; }
.edge-lockup b { font-family: var(--sans); font-weight: 800; font-size: 20px; letter-spacing: .015em;
  text-transform: uppercase; color: var(--ink); line-height: 1.1; }
.edge-lockup i { font-family: var(--sans); font-style: normal; font-weight: 700; font-size: 11.5px;
  letter-spacing: .3em; text-transform: uppercase; color: oklch(0.5 0.24 305);
  align-self: flex-end; margin-top: 2px; }
.social-row--icons a:not([href]) { cursor: default; }
.footer-brand .brand { margin-bottom: 14px; }
.footer-brand p { color: var(--ink-dim); font-size: 13px; max-width: 320px; }
.footer-brand .footer-tagline { color: var(--ink); font-family: var(--serif); font-style: italic; font-size: 15px; margin: 2px 0 6px; }
.footer-col h4 { font-family: var(--mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-faint); margin: 0 0 14px; }
.footer-col a { display: block; color: var(--ink-dim); text-decoration: none; font-size: 13px; padding: 5px 0; transition: color .2s; }
.footer-col a:hover { color: var(--accent); }
.social-row { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 6px; }
.social-row a { font-family: var(--mono); font-size: 12px; color: var(--ink-dim); text-decoration: none; }
.social-row a:hover { color: var(--accent); }
.social-row--icons { gap: 4px; margin-top: 14px; }
.social-row--icons a { display: inline-flex; padding: 7px; color: var(--ink-dim); transition: color .2s; }
.social-row--icons svg { width: 19px; height: 19px; display: block; fill: currentColor; }
.footer-bottom { display: flex; justify-content: space-between; gap: 20px; flex-wrap: wrap; margin-top: 44px; padding-top: 24px; border-top: 1px solid var(--line); font-family: var(--mono); font-size: 11px; color: var(--ink-faint); letter-spacing: .04em; }
.footer-bottom a { color: var(--ink-faint); text-decoration: none; }
.footer-bottom a:hover { color: var(--accent); }

/* ------------------------------------------------------ CONSENT BANNER --- */
.consent { position: fixed; bottom: 16px; left: 16px; right: 16px; z-index: 180; max-width: 720px; margin: 0 auto; background: var(--bg-3); border: 1px solid var(--line-2); border-radius: 10px; padding: 18px 22px; display: flex; gap: 18px; align-items: center; flex-wrap: wrap; box-shadow: 0 20px 60px rgba(0,0,0,.5); transform: translateY(140%); transition: transform .4s; }
.consent.show { transform: translateY(0); }
.consent p { margin: 0; font-size: 13px; color: var(--ink-dim); flex: 1; min-width: 220px; }
.consent .consent-actions { display: flex; gap: 10px; }

/* Page header for catalog/standard pages */
.page-head { padding: 48px 0 8px; }
.page-head .sec-label { margin-bottom: 14px; }
.page-head h1 { font-family: var(--serif); font-weight: 400; font-size: clamp(30px, 5vw, 56px); letter-spacing: -.02em; margin: 0 0 12px; }
.page-head p { color: var(--ink-dim); font-size: 17px; max-width: 620px; margin: 0; }

.skip-link { position: absolute; left: -999px; top: 8px; z-index: 300; background: var(--accent); color: #fff; padding: 10px 16px; border-radius: 4px; text-decoration: none; }
.skip-link:focus { left: 16px; }

/* ============================================================================
   DUAL ENTITY THEMING
   Default (:root, used when data-entity="mef") = dark/cinematic.
   data-entity="mls" = bright/premium (Apple-keynote × A24 × luxury).
   Cinematic hero bands keep a dark scrim + light text in BOTH themes.
   ========================================================================== */
.brand { text-decoration: none; }
.brand-mark { display: block; }
.brand-flap { display: inline-flex; align-items: center; }
/* light logo — dark (MEF / default) theme vars */
.site-nav .ll-logo { --ll-size: 18px; --ll-ink: #f1ece3; --ll-accent: #ff2e8e; --ll-glow: rgba(255,46,142,.6); }

html[data-entity="mls"] {
  --bg: #f6f4f1; --bg-2: #ffffff; --bg-3: #efece8;
  --ink: rgba(22,22,26,0.94); --ink-dim: rgba(40,40,48,0.6); --ink-faint: rgba(40,40,48,0.42);
  --line: rgba(0,0,0,0.1); --line-2: rgba(0,0,0,0.17);
  --accent: #c8155f; --accent-2: #e0518f; --accent-soft: rgba(200,21,95,0.12);
}
html[data-entity="mls"] body::before { display: none; }            /* drop the dark grain on light */
html[data-entity="mls"] body::after { background: radial-gradient(ellipse at 50% -10%, rgba(200,21,95,0.06), transparent 55%); }
html[data-entity="mls"] .site-nav { background: rgba(255,255,255,0.82); }
html[data-entity="mls"] .site-nav.scrolled { background: rgba(255,255,255,0.96); }
html[data-entity="mls"] .tabs-bar { background: rgba(255,255,255,0.9); }
html[data-entity="mls"] .site-nav .ll-logo {
  --ll-ink: #16161a; --ll-accent: #c8155f; --ll-glow: rgba(200,21,95,.45);
}
/* logo mark: drop the dark media backing so the starburst floats on light */
.brand-mark .media { background: transparent; }
html[data-entity="mls"] .brand-mark .media-aurora { filter: saturate(1.1); }
/* darken the navigation buttons on the light theme for contrast/premium feel */
html[data-entity="mls"] .nav-links a, html[data-entity="mls"] .nav-group-btn { color: #000; }
html[data-entity="mls"] .nav-links a:hover { color: var(--accent); }
html[data-entity="mls"] .nav-links a.current { color: #000; }
html[data-entity="mls"] .nav-toggle { color: #000; border-color: rgba(0,0,0,.2); }
/* film-card status tag stays readable on light posters (already dark bg) */
html[data-entity="mls"] .film-card { box-shadow: 0 1px 0 rgba(0,0,0,.03); }
/* smooth theme transition */
body { transition: background .5s ease, color .5s ease; }
/* preview-mode banner */
.preview-banner { position: fixed; bottom: 0; left: 0; right: 0; z-index: 9998; text-align: center;
  background: var(--accent); color: #fff; font-family: var(--mono); font-size: 12px; letter-spacing: .04em;
  padding: 8px 14px; box-shadow: 0 -6px 20px rgba(0,0,0,.3); }
.preview-banner a { color: #fff; text-decoration: underline; }

/* ------------------------------------------- UNIFIED LABELS (Light/Edge) ---
   One site, two labels: entity chips on film/news cards + filter pills. */
.entity-bar { display: flex; gap: 10px; flex-wrap: wrap; margin: 0 0 16px; }
.entity-bar .epill {
  font-family: var(--mono); font-size: 11px; letter-spacing: .1em; text-transform: uppercase;
  padding: 8px 18px; border-radius: 999px; border: 1px solid var(--line);
  background: transparent; color: var(--ink-faint); cursor: pointer;
  transition: border-color .2s, color .2s, background .2s;
}
.entity-bar .epill:hover { border-color: var(--accent); color: var(--ink); }
.entity-bar .epill.active { background: var(--accent); border-color: var(--accent); color: #fff; }
.entity-bar .epill:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

.film-card .entity-tag {
  display: inline-block; font-family: var(--mono); font-size: 9px;
  letter-spacing: .12em; text-transform: uppercase; padding: 4px 9px; border-radius: 999px;
  background: none; border: 1px solid currentColor;
}
/* Each label carries its own end of the brand gradient, matching how the two
   are coloured on the About page: Light magenta, Edge purple. */
.film-card .entity-tag.e-mls { color: #c30276; }
.film-card .entity-tag.e-mef { color: #7b2ff7; border-color: #7b2ff7; }


/* ===================== CINEMATIC HERO (homepage) =========================
   Full-bleed video band per the approved design: height derives from WIDTH
   via the picture's aspect ratio, video is inset over the whole band, and a
   scrim keeps white copy readable. The default master carries baked-in black
   padding; --vhero-zoom pushes it outside the box. A clean per-film upload
   (.vhero__video--clean) plays unscaled. */
.vhero { --vhero-ratio: 2844 / 1188; --vhero-zoom: 1;
  position: relative; display: grid; overflow: hidden; background: #0b0910; padding-bottom: 24px; }
.vhero::before { content: ""; grid-area: 1 / 1; width: 100%; aspect-ratio: var(--vhero-ratio); }
.vhero__video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block;
  transform: scale(var(--vhero-zoom)); transform-origin: center; }
.vhero__video--clean { transform: none; }
/* Slides crossfade; only the visible one is interactive. */
.vhero__slide { position: absolute; inset: 0; opacity: 0; visibility: hidden;
  transition: opacity .7s ease, visibility .7s; }
.vhero__slide.is-active { opacity: 1; visibility: visible; }
/* A film with no hero footage shows its key art instead of borrowing another
   film's video. */
.vhero__still { position: absolute; inset: 0; }
.vhero__still .media { position: absolute; inset: 0; }
.vhero__still .media img { width: 100%; height: 100%; object-fit: cover; }

.vhero__scrim { position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(to bottom, rgba(8,7,10,.45), rgba(8,7,10,0) 110px),
              linear-gradient(to right, rgba(8,7,10,.88) 0%, rgba(8,7,10,.55) 42%, rgba(8,7,10,.05) 78%); }
/* Copy sits in the lower two-thirds of the frame, clear of the floating nav
   and of faces in the upper third of most key art. */
/* Anchored to the true bottom of the band, not the video's grid row — the
   band's extra depth sits below that row, so aligning to the row's end left
   the copy stranded mid-frame. */
.vhero__body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 1;
  width: 100%;
  /* Left padding matches the nav's, so the title starts on the same line as
     the logo. Bottom padding clears the film indicator sitting under it. */
  padding: 64px 28px clamp(88px, 8.5%, 150px); }
@media (max-width: 640px) { .vhero__body { padding-left: 18px; padding-right: 18px; } }
.vhero__copy { max-width: 700px; color: #f4f1f4; }
/* Release line reads as a kicker straight above the title — no chip, and
   close enough to the headline to belong to it. */
.vhero__meta { display: flex; align-items: center; margin: 0 0 6px; }
.vhero__badge { font-family: 'Oswald', var(--sans); font-weight: 500;
  font-size: clamp(15px, 1.5vw, 21px); letter-spacing: .16em; text-transform: uppercase;
  /* The logo swoosh's gradient, sampled left to right off the artwork itself.
     Fill goes transparent so the gradient shows through the glyphs; the solid
     colour stays as the fallback where background-clip:text is unsupported. */
  color: #c30276;
  background: linear-gradient(90deg, #c30276, #931383 50%, #622491);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 1px 8px rgba(0,0,0,.45)); }
/* The status words go white; own fill colour opts them out of the clip. */
.vhero__badge-st { color: #fff; -webkit-text-fill-color: #fff; }
.vhero h1 { font-family: 'Oswald', var(--sans); font-weight: 600; font-size: clamp(48px, 7vw, 96px);
  line-height: .92; letter-spacing: -.02em; text-transform: uppercase; margin: 0 0 18px; color: #fff; }
.vhero__blurb { font-size: 17px; line-height: 1.6; color: rgba(244,241,244,.78); margin: 0 0 28px; max-width: 540px; }
.vhero__actions { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.vbtn { font-family: 'Oswald', var(--mono); font-size: 13px; letter-spacing: .18em;
  text-transform: uppercase; padding: 15px 28px; border-radius: 2px; }
.vbtn--solid { background: #f4f1f4; color: #0b0910; }
.vbtn--solid:hover { background: var(--accent); color: #fff; }
.vbtn--ghost { border: 1px solid rgba(255,255,255,.35); color: #f4f1f4; }
.vbtn--ghost:hover { border-color: #fff; background: rgba(255,255,255,.08); color: #fff; }
@media (max-width: 900px) { .vhero { min-height: 80vh; } }
@media (prefers-reduced-motion: reduce) { .vhero__video { display: none; } }

/* ---- Homepage overlay hero: the film starts at the very top of the page and
   the nav floats over it with no bar, until you scroll away from the hero. --- */
body[data-hero-overlay] { padding-top: 0; }
/* Specificity has to clear `.brand-lockup img` above, or both lockups show. */
.brand-lockup .brand-light { display: none; }
body[data-hero-overlay] .site-nav:not(.scrolled) {
  background: transparent; -webkit-backdrop-filter: none; backdrop-filter: none;
  border-bottom-color: transparent;
}
body[data-hero-overlay] .site-nav:not(.scrolled) .brand-lockup .brand-dark { display: none; }
body[data-hero-overlay] .site-nav:not(.scrolled) .brand-lockup .brand-light { display: block; }
body[data-hero-overlay] .site-nav:not(.scrolled) .nav-links a { color: #fff; }
body[data-hero-overlay] .site-nav:not(.scrolled) .nav-links a:hover,
body[data-hero-overlay] .site-nav:not(.scrolled) .nav-links a.current { color: #fff; }
body[data-hero-overlay] .site-nav:not(.scrolled) .nav-toggle { color: #fff; }
body[data-hero-overlay] .site-nav:not(.scrolled) .nav-social a { color: rgba(255,255,255,.75); }
body[data-hero-overlay] .site-nav:not(.scrolled) .nav-social a:hover { color: #fff; }
/* The open mobile menu needs its own surface — it is no longer sitting on a bar. */
@media (max-width: 920px) {
  body[data-hero-overlay] .site-nav:not(.scrolled) .nav-links.open { background: rgba(8,8,10,.96); }
}
/* Top of the scrim is heavier here so nav links stay legible over bright frames. */
body[data-hero-overlay] .vhero__scrim {
  background: linear-gradient(to bottom, rgba(8,7,10,.72), rgba(8,7,10,0) 190px),
              linear-gradient(to right, rgba(8,7,10,.88) 0%, rgba(8,7,10,.55) 42%, rgba(8,7,10,.05) 78%);
}

/* ---- Hero carousel indicator: each film named, with a line that fills as
   its slide runs. The fill is the rotation timer made visible, so it pauses
   with it rather than drifting on its own clock. -------------------------- */
.vhero__nav { position: absolute; left: 0; right: 0; bottom: 22px; z-index: 3;
  display: flex; gap: 8px; justify-content: center; padding: 0 16px;
  max-width: 1200px; margin: 0 auto; overflow-x: auto; scrollbar-width: none; }
.vhero__nav::-webkit-scrollbar { display: none; }
.vhero__navitem { flex: 1 1 0; min-width: 150px; max-width: 300px; cursor: pointer;
  background: none; border: 0; padding: 0 6px 0; text-align: center; color: #fff;
  display: flex; flex-direction: column; align-items: center; gap: 2px;
  opacity: .55; transition: opacity .3s; }
.vhero__navitem:hover { opacity: .85; }
.vhero__navitem.is-active { opacity: 1; }
.vhero__navtitle { font-family: 'Oswald', var(--sans); font-weight: 600; font-size: clamp(16px, 1.5vw, 21px);
  letter-spacing: .04em; line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.vhero__navdate { font-family: var(--mono); font-size: 11.5px; letter-spacing: .1em;
  text-transform: uppercase; color: rgba(255,255,255,.72); white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.vhero__navbar { display: block; width: 100%; height: 3px; margin-top: 8px;
  background: rgba(255,255,255,.28); border-radius: 2px; overflow: hidden; }
.vhero__navbar i { display: block; width: 100%; height: 100%; background: var(--accent);
  transform: scaleX(0); transform-origin: left; }
/* No transition here: the fill is set every frame from the video's playhead,
   so any easing would lag behind the picture. */
@media (max-width: 700px) {
  .vhero__nav { justify-content: flex-start; }
  .vhero__navitem { min-width: 118px; }
  .vhero__navtitle { font-size: 15px; }
  .vhero__navdate { font-size: 9.5px; }
}
