/* ============================================================================
   PREVIOUSLY — Live TV · 2026-09-28
   Design language v1.0 (tokens.css) — Noir #0a0a0b, Bone #FFFFFF,
   Signal Red #E10600. No gold anywhere. Previously Display / Inter.
   Borderless editorial rows. Theater-mode player concept.
   ============================================================================ */

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{
  background:var(--pv-noir);color:var(--pv-ivory);
  font-family:var(--pv-sans);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  min-height:100vh;overflow-x:hidden;
}img{display:block;max-width:100%}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;text-align:left}a{color:inherit}::selection{background:var(--pv-red);color:var(--pv-on-red)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,[role="button"]:focus-visible,video:focus-visible,audio:focus-visible{outline:var(--pv-focus-outline);outline-offset:2px;border-radius:6px}/* ---- live dot ---- */
.livedot{
  width:8px;height:8px;border-radius:50%;background:var(--pv-live);flex:none;
  box-shadow:0 0 12px var(--pv-red-glow-lg);
  animation:pulse 2.2s ease-in-out infinite;
}@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.82)}}/* ============================================================================
   CHROME — sticky: brandbar + nav, then the uniform search below it
   ============================================================================ */
.chrome{position:sticky;top:0;z-index:var(--pv-z-nav);
  background:var(--pv-glass);
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
  border-bottom:1px solid var(--pv-rule);
}.brandbar{
  display:flex;align-items:center;gap:14px;
  height:64px;max-width:var(--pv-content-max);margin:0 auto;
  padding:0 var(--pv-gutter);
}.wm{
  font-family:var(--pv-serif);font-weight:800;font-size:22px;letter-spacing:-.02em;
  color:var(--pv-ivory);text-decoration:none;display:flex;align-items:center;gap:9px;
  min-height:var(--pv-target-min);
}.wm .glyph{color:var(--pv-red);letter-spacing:-.14em;font-weight:800}.brand-sep{width:1px;height:22px;background:var(--pv-rule)}.seclabel{
  font-size:11px;font-weight:800;letter-spacing:var(--pv-track-xl);
  text-transform:uppercase;color:var(--pv-red);
  display:flex;align-items:center;gap:8px;white-space:nowrap;
}.brand-actions{margin-left:auto;display:flex;align-items:center;gap:10px}.signin{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:var(--pv-target-min);padding:0 22px;border-radius:var(--pv-r-pill);
  border:1px solid rgba(var(--desert-ink-rgb), .28);color:var(--pv-ivory);
  font-size:13.5px;font-weight:700;letter-spacing:.06em;text-decoration:none;
  transition:border-color .18s ease,background .18s ease;
}@media(hover:hover){.signin:hover{border-color:var(--pv-red);background:rgba(var(--brand-red-rgb), .08)}}/* ---- hamburger (phone) ---- */
.burger{
  display:none;width:var(--pv-target-min);height:var(--pv-target-min);
  align-items:center;justify-content:center;border-radius:12px;
}.burger svg{width:22px;height:22px;stroke:var(--pv-ivory);fill:none;stroke-width:2;stroke-linecap:round}@media(hover:hover){.burger:hover{background:rgba(var(--desert-ink-rgb), .06)}}/* ---- primary nav (desktop bar) ---- */
.pv-nav{max-width:var(--pv-content-max);margin:0 auto;padding:0 var(--pv-gutter)}.pv-nav ul{
  display:flex;gap:4px;list-style:none;overflow-x:auto;scrollbar-width:none;
}.pv-nav ul::-webkit-scrollbar{display:none}.pv-nav a{
  position:relative;display:inline-flex;align-items:center;gap:8px;
  padding:14px 14px;min-height:var(--pv-target-min);
  color:var(--pv-ivory-dim);font-size:12px;font-weight:700;
  letter-spacing:var(--pv-track-md);text-transform:uppercase;text-decoration:none;
  white-space:nowrap;transition:color .18s ease;
}.pv-nav a .nav-ic{display:inline-flex}.pv-nav a .nav-ic svg{width:16px;height:16px}.pv-nav a::after{
  content:"";position:absolute;left:14px;right:14px;bottom:6px;height:2px;
  background:var(--pv-red);border-radius:2px;
  transform:scaleX(0);transform-origin:left;transition:transform .22s var(--pv-ease);
}@media(hover:hover){.pv-nav a:hover{color:var(--pv-ivory)}}.pv-nav a[aria-current="page"]{color:var(--pv-ivory)}.pv-nav a[aria-current="page"]::after{transform:scaleX(1)}.pv-nav .nlive-dot{width:7px;height:7px;border-radius:50%;background:var(--pv-live);
  box-shadow:0 0 10px var(--pv-red-glow-lg);animation:pulse 2.2s ease-in-out infinite}/* ---- phone menu panel ---- */
.menu-panel{
  display:none;border-top:1px solid var(--pv-rule);
  background:var(--pv-noir-2);max-height:70vh;overflow-y:auto;
}.menu-panel.open{display:block}.menu-panel ul{list-style:none;padding:8px}.menu-panel a{
  display:flex;align-items:center;gap:14px;
  min-height:52px;padding:8px 16px;border-radius:12px;
  font-size:15px;font-weight:600;color:var(--pv-ivory);text-decoration:none;
}.menu-panel a .nav-ic{display:inline-flex;color:var(--pv-ivory-dim)}.menu-panel a .nav-ic svg{width:20px;height:20px}.menu-panel a .chev{margin-left:auto;color:var(--pv-ivory-faint);font-size:18px}.menu-panel a[aria-current="page"]{background:rgba(var(--brand-red-rgb), .1);color:var(--pv-ivory)}@media(hover:hover){.menu-panel a:hover{background:rgba(var(--desert-ink-rgb), .05)}}/* ---- uniform search placement (shared component styles in search.css) ---- */
.search-wrap{
  /* 2026-10-01 routing-glitch fix: this bar was position:sticky and followed
     the scroll, sliding OVER the channel lanes. Tiles scrolling beneath it
     were visually hidden ("certain channels aren't showing up") and their
     clicks were swallowed by the bar ("none of them are accessible") — the
     theater stayed on the default KTNV channel, which read as "every click
     loads KTNV". The bar now sits in normal flow at the top of the page and
     can never cover a tile. */
  position:static;
  max-width:var(--pv-content-max);margin:0 auto;
  padding:10px var(--pv-gutter) 6px;
  background:var(--pv-noir);
}.search-wrap .pv-search{pointer-events:auto;position:static}@keyframes sweep{0%{transform:translateX(-34%)}55%,100%{transform:translateX(34%)}}@media(hover:hover){}@media(hover:hover){}/* ============================================================================
   PAGE BODY
   ============================================================================ */
main{max-width:var(--pv-content-max);margin:0 auto;padding:4px var(--pv-gutter) 110px}/* scroll-margin-top clears the sticky site header (~64px) + breathing room, so
   anchor jumps (#theater, #ch-*) never land headings under it. (2026-10-01:
   the search bar is no longer sticky, so its old 218px footprint is gone.) */
.block{margin-top:64px;scroll-margin-top:96px}.block-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:24px}.kicker2{
  font-size:11px;font-weight:800;letter-spacing:var(--pv-track-xl);
  text-transform:uppercase;color:var(--pv-red);margin-bottom:8px;
}.block-head h2{
  font-family:var(--pv-serif);font-weight:600;
  font-size:var(--pv-title);letter-spacing:-.01em;line-height:1.05;color:var(--pv-ivory);
}.block-head .count{font-size:13px;color:var(--pv-ivory-dim);font-weight:600;padding-bottom:6px;white-space:nowrap}/* ============================================================================
   THEATER — the player concept. Large stage, honest click-to-play.
   ============================================================================ */
.theater{margin-top:56px}.stage{
  position:relative;aspect-ratio:16/9;max-height:72vh;width:100%;
  border-radius:20px;overflow:hidden;background:var(--desert-bg);
  box-shadow:var(--pv-shadow-card),0 0 90px rgba(var(--brand-red-rgb), .07);
}.stage-logo{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  padding:9%;
}.stage-logo img{max-width:44%;max-height:44%;object-fit:contain;
  filter:drop-shadow(0 10px 40px rgba(var(--desert-shadow-rgb), .8))}.stage-veil{position:absolute;inset:0;
  background:radial-gradient(120% 90% at 50% 8%,rgba(var(--desert-shadow-rgb), .1) 0%,rgba(var(--desert-shadow-rgb), .72) 78%)}.stage-core{
  position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:18px;text-align:center;padding:24px;
}.stage-play{
  width:96px;height:96px;border-radius:50%;background:var(--pv-red);
  display:flex;align-items:center;justify-content:center;flex:none;
  box-shadow:var(--pv-shadow-btn-lg);
  transition:transform .2s var(--pv-ease);
}@media(hover:hover){.stage-play:hover{transform:scale(1.06)}}.stage-play:active{transform:scale(.94)}.stage-play svg{width:34px;height:34px;fill:var(--pv-on-red);margin-left:4px}.stage-name{font-family:var(--pv-serif);font-weight:700;font-size:clamp(24px,3.4vw,40px);color:var(--pv-ivory)}.stage-sub{font-size:14px;color:var(--pv-ivory-dim);max-width:480px;line-height:1.6}/* honest states */
.stage-note{
  position:absolute;inset:0;display:flex;flex-direction:column;gap:14px;
  align-items:center;justify-content:center;text-align:center;padding:32px;
  background:rgba(var(--desert-card-rgb), .86);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
}.stage-note[hidden]{display:none}.stage-note .sn-k{
  font-size:10px;font-weight:800;letter-spacing:var(--pv-track-lg);
  text-transform:uppercase;color:var(--pv-red);
}.stage-note p{max-width:460px;font-size:15px;line-height:1.7;color:var(--pv-ivory-dim)}.stage-note p b{color:var(--pv-ivory)}.stage-note .sn-btn{
  margin-top:6px;display:inline-flex;align-items:center;justify-content:center;
  min-height:var(--pv-target-min);padding:0 26px;border-radius:var(--pv-r-pill);
  background:var(--pv-red);color:var(--pv-on-red);font-weight:800;font-size:14px;
}/* skeleton shimmer while the concept "loads" */
.stage-loading{position:absolute;inset:0;background:var(--desert-card)}.stage-loading[hidden]{display:none}.stage-loading::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(100deg,transparent 30%,rgba(var(--desert-ink-rgb), .06) 50%,transparent 70%);
  animation:shimmer 1.1s linear infinite;
}@keyframes shimmer{from{transform:translateX(-100%)}to{transform:translateX(100%)}}/* badges */
.badge{
  display:inline-flex;align-items:center;gap:7px;
  min-height:30px;padding:0 14px;border-radius:var(--pv-r-pill);
  font-size:10.5px;font-weight:800;letter-spacing:var(--pv-track-md);text-transform:uppercase;
}.badge.live{background:var(--pv-red);color:var(--pv-on-red)}.badge.live i{width:7px;height:7px;border-radius:50%;background:var(--pv-on-red);animation:pulse 1.8s infinite}.badge.off{background:rgba(var(--desert-ink-rgb), .08);color:var(--pv-ivory-dim);border:1px solid var(--pv-rule)}/* now-playing bar under the stage */
.nowbar{
  margin-top:18px;display:flex;align-items:center;gap:18px;flex-wrap:wrap;
}.nowbar .nb-art{
  width:104px;aspect-ratio:16/9;border-radius:12px;flex:none;overflow:hidden;
  background:var(--desert-card);display:flex;align-items:center;justify-content:center;
  box-shadow:var(--pv-shadow-card);
}.nowbar .nb-art.light{background:var(--pv-ivory)}.nowbar .nb-art img{width:100%;height:100%;object-fit:contain;padding:12%}.nowbar .nb-tx{flex:1;min-width:200px}.nowbar .nb-k{font-size:10.5px;font-weight:800;letter-spacing:var(--pv-track-lg);text-transform:uppercase;color:var(--pv-red)}.nowbar .nb-name{font-family:var(--pv-serif);font-size:24px;font-weight:700;margin:4px 0 6px}.nowbar .nb-actions{display:flex;gap:10px;align-items:center}.nb-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-height:var(--pv-target-min);padding:0 22px;border-radius:var(--pv-r-pill);
  border:1px solid rgba(var(--desert-ink-rgb), .28);font-size:13.5px;font-weight:700;
  transition:border-color .18s ease,background .18s ease,color .18s ease;
}@media(hover:hover){.nb-btn:hover{border-color:var(--pv-red)}}.nb-btn.on{background:var(--pv-red);border-color:var(--pv-red);color:var(--pv-on-red)}.nb-btn svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2}.nb-btn svg.fill{fill:currentColor;stroke:none}.nb-btn.on svg{fill:var(--pv-on-red);stroke:var(--pv-on-red)}/* ============================================================================
   CHANNEL LANES — borderless editorial rows
   ============================================================================ */
.rail{
  display:grid;grid-template-columns:repeat(5,1fr);gap:26px 22px;
}.chtile{scroll-margin-top:96px;border-radius:18px}.chtile:target .chtile-art{box-shadow:0 0 0 3px var(--pv-red-glow),var(--pv-shadow-card)}.chtile-art{
  position:relative;aspect-ratio:16/9;border-radius:16px;overflow:hidden;
  background:var(--desert-card);
  /* UNIFIED-DESIGN (2026-10-08): logo image well, not a card — the light
     surface stays so dark/light wordmark logos stay legible (measured 40+
     logos: cbsnews247/docplus/waterbear are white-on-transparent and would
     vanish on cream). The thin hairline border unifies it with the design. */
  border:1px solid rgba(var(--desert-ink-rgb), .12);
  display:flex;align-items:center;justify-content:center;
  box-shadow:var(--pv-shadow-card);
  transition:transform .22s var(--pv-ease),box-shadow .22s ease;
}.chtile-art.light{background:var(--desert-card)}/* fixed light surface for dark logos — NOT var(--pv-ivory), which inverts to black in light mode (2026-10-04) */
.chtile-art img{width:100%;height:100%;object-fit:contain;padding:13% 14%}@media(hover:hover){.chtile:hover .chtile-art{transform:translateY(-4px);
    box-shadow:0 24px 54px rgba(var(--desert-shadow-rgb), .6),0 0 0 1px rgba(var(--brand-red-rgb), .22)}
}.chtile:active .chtile-art{transform:scale(.97)}.chtile-badge{position:absolute;top:10px;left:10px;z-index:2}.chtile-meta{padding:13px 4px 0}.chtile-name{display:block;font-size:15px;font-weight:650;color:var(--pv-ivory);line-height:1.35}.chtile-genre{display:block;font-size:12.5px;color:var(--pv-ivory-dim);margin-top:3px}/* search filtering */
.chtile[hidden]{display:none}.block.is-empty{display:none}/* outbound link card (e.g. NewsON) — looks like a tile, never behaves like one.
   Deliberately NOT .chtile: the JS tile handlers and search filter only bind .chtile. */
.chtile-out{display:block;text-decoration:none;color:inherit;border-radius:18px;scroll-margin-top:96px}/* the out-card art well is always dark (#141416) — pin the wordmark to bone,
   never var(--pv-ivory), which inverts to near-black in light mode (2026-10-04) */
.chtile-out .out-word{font-size:30px;font-weight:800;letter-spacing:.02em;color:var(--desert-ink)}.badge.out{background:rgba(var(--desert-ink-rgb), .08);color:var(--desert-ink);border:1px solid rgba(var(--desert-ink-rgb), .25)}@media(hover:hover){.chtile-out:hover .chtile-art{transform:translateY(-4px);
    box-shadow:0 24px 54px rgba(var(--desert-shadow-rgb), .6),0 0 0 1px rgba(var(--brand-red-rgb), .22)}
}.chtile-out:active .chtile-art{transform:scale(.97)}.search-empty{
  margin-top:40px;padding:44px 30px;text-align:center;border-radius:20px;
  background:rgba(var(--brand-red-rgb), .06);border:1px solid rgba(var(--brand-red-rgb), .25);
}.search-empty[hidden]{display:none}.search-empty p{color:var(--pv-ivory-dim);font-size:15px;line-height:1.7}.search-empty b{color:var(--pv-ivory)}/* honesty note */
.note{
  margin-top:64px;padding:22px 26px;border-radius:18px;
  background:rgba(var(--brand-red-rgb), .06);border:1px solid rgba(var(--brand-red-rgb), .22);
  font-size:14px;line-height:1.75;color:var(--pv-ivory-dim);
}.note b{color:var(--pv-red);font-weight:800}.note .fineprint{display:block;margin-top:10px;font-size:12.5px;color:rgba(var(--desert-ink-rgb), .44)}/* reveal */
.fx .rv{opacity:0;transform:translateY(24px);
  transition:opacity .7s ease,transform .7s var(--pv-ease)}.fx .rv.in{opacity:1;transform:none}/* toast */
.toast{
  position:fixed;left:50%;bottom:28px;transform:translate(-50%,20px);
  z-index:var(--pv-z-toast);padding:14px 24px;border-radius:var(--pv-r-pill);
  /* UNIFIED-DESIGN (2026-10-08): cream, not white — single background page */
  background:var(--desert-bg);border:1px solid rgba(var(--brand-red-rgb), .4);
  color:var(--pv-ivory);font-size:14px;font-weight:600;opacity:0;pointer-events:none;
  transition:opacity .25s ease,transform .25s var(--pv-ease);
  box-shadow:var(--pv-shadow-pop);
  max-width:calc(100vw - 48px);text-align:center;
}.toast.show{opacity:1;transform:translate(-50%,0)}/* ============================================================================
   FOOTER (shared component contract — static markup, no-JS safe)
   ============================================================================ */
footer{
  border-top:1px solid var(--pv-rule);
  /* UNIFIED-DESIGN (2026-10-08): transparent footer on the single cream page */
  background:transparent;
}.pv-footer__inner{max-width:var(--pv-content-max);margin:0 auto;padding:56px var(--pv-gutter) 32px}.pv-footer__grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:40px}.pv-footer__brand .wm{font-size:24px}.pv-footer__brand p{margin-top:14px;font-size:14.5px;line-height:1.7;color:var(--pv-ivory-dim);max-width:300px}.pv-footer__col h3{
  font-size:11px;font-weight:800;letter-spacing:var(--pv-track-xl);
  text-transform:uppercase;color:rgba(var(--desert-ink-rgb), .44);margin-bottom:16px;
}.pv-footer__col ul{list-style:none}.pv-footer__col a{
  display:inline-flex;align-items:center;min-height:var(--pv-target-min);
  color:var(--pv-ivory-dim);font-size:14px;text-decoration:none;
  transition:color .16s ease;
}@media(hover:hover){.pv-footer__col a:hover{color:var(--pv-ivory);text-decoration:underline;
  text-decoration-color:var(--pv-red);text-underline-offset:5px}}.pv-footer__legal{
  margin-top:48px;padding-top:24px;border-top:1px solid var(--pv-rule);
  display:flex;gap:8px;flex-wrap:wrap;align-items:center;
  font-size:13px;color:rgba(var(--desert-ink-rgb), .44);
}.pv-footer__legal a{color:var(--pv-ivory-dim);text-decoration:none;
  display:inline-flex;align-items:center;min-height:var(--pv-target-min)}@media(hover:hover){.pv-footer__legal a:hover{color:var(--pv-ivory)}}.pv-footer__legal .sep{opacity:.5}/* ---- FOOTER LAYOUT DIRECTIVE (James, 2026-09-28 — PERMANENT): on laptop/desktop
      the sitemap spreads LEFT-TO-RIGHT — the Sections column flows into three
      horizontal columns instead of one long vertical stack. Phone stays stacked. ---- */
@media(min-width:1024px){
  .pv-footer__grid{grid-template-columns:1.6fr 1fr 1fr 1fr}
  .pv-footer__grid>nav.pv-footer__col:first-of-type ul{columns:3;column-gap:32px}
  .pv-footer__grid>nav.pv-footer__col:first-of-type li{break-inside:avoid}
}/* ============================================================================
   PHONE
   ============================================================================ */
@media(max-width:1023.98px){
  .brandbar{height:56px;padding:0 var(--pv-gutter-sm)}
  .wm{font-size:19px}
  .burger{display:inline-flex}
  .pv-nav{display:none}
  .search-wrap{padding:10px var(--pv-gutter-sm) 6px} /* static now: top offset N/A */
  main{padding:4px var(--pv-gutter-sm) 96px}
  /* phone: clear the sticky site header (~56px) + breathing room */
  .block{margin-top:52px;scroll-margin-top:88px}
  .chtile{scroll-margin-top:88px}
  /* lanes become contained snap rails — the page never scrolls sideways */
  .rail{
    display:grid;grid-auto-flow:column;grid-auto-columns:212px;grid-template-columns:none;gap:16px;
    overflow-x:auto;margin:0 calc(-1 * var(--pv-gutter-sm));
    padding:4px var(--pv-gutter-sm) 16px;
    scroll-snap-type:x proximity;scrollbar-width:none;-webkit-overflow-scrolling:touch;
  }
  .rail::-webkit-scrollbar{display:none}
  .chtile{scroll-snap-align:start}
  /* Bulletproof LIVE pill on phone (James, 2026-10-02 — tile badge must never scale):
     fully self-contained sizing, immune to font/cascade quirks. Desktop 30px badge
     overwhelms 119px-tall mobile art. */
  .chtile-badge{top:8px;left:8px;max-width:calc(100% - 16px);pointer-events:none}
  .chtile-badge .badge{
    display:inline-flex;align-items:center;gap:5px;flex:none;
    height:22px;min-height:0;max-width:100%;padding:0 10px;
    border-radius:999px;box-sizing:border-box;
    font-size:9px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
    line-height:1;white-space:nowrap;overflow:hidden;
  }
  .chtile-badge .badge.live i{width:5px;height:5px;flex:none}
  .nowbar .nb-actions{width:100%}
  .pv-footer__grid{grid-template-columns:1fr 1fr;gap:32px}
  .pv-footer__brand{grid-column:1/-1}
}/* reduced motion: rotation stops, sweeps stop, reveals show */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .fx .rv{opacity:1;transform:none}
  .livedot,.badge.live i,.pv-nav .nlive-dot{animation:none}
}/* HD artwork: phones get the 1280w hero variants instead of the 2K originals */
@media(max-width:1023.98px){
}

/* ============ NOW-PLAYING HERO (Live TV entry redesign, 2026-10-02) ============
   Video plays muted on load — no tap, no landing page, no modal. Sticky on
   phone (below the sticky nav) so it stays visible while scrolling the rails;static on desktop. Tapping a tile loads that channel into the hero. */
.pv-hero{position:sticky;top:var(--pv-nav-h,64px);z-index:40;background:var(--desert-bg)}.pv-hero-stage{position:relative;aspect-ratio:16/9;background:var(--desert-bg);overflow:hidden}.pv-hero-stage video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:var(--desert-bg)}/* World News lane (James, 2026-10-05): official YouTube live embeds */
.pv-hero-stage iframe.pv-hero-yt{position:absolute;inset:0;width:100%;height:100%;border:0;background:var(--desert-bg)}.pv-hero-bar{position:absolute;left:0;right:0;top:0;display:flex;align-items:center;gap:10px;padding:10px 14px;background:linear-gradient(rgba(var(--desert-shadow-rgb), .65),transparent);pointer-events:none;z-index:3}.pv-hero-name{font-weight:700;font-size:15px;color:var(--desert-card);text-shadow:0 1px 8px rgba(var(--desert-shadow-rgb), .8)}.pv-hero-sub{font-size:12.5px;padding:10px 16px 18px;background:transparent;color:var(--desert-ink);margin:0}.pv-hero-sound{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);z-index:5;background:rgba(var(--desert-shadow-rgb), .72);color:var(--desert-card);border:1px solid rgba(var(--desert-card-rgb), .35);border-radius:999px;padding:12px 22px;font:600 15px/1.2 var(--pv-sans);cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.pv-hero-mute{position:absolute;right:12px;bottom:12px;z-index:5;width:44px;height:44px;border-radius:50%;background:rgba(var(--desert-shadow-rgb), .65);border:1px solid rgba(var(--desert-card-rgb), .3);color:var(--desert-card);font-size:19px;cursor:pointer;display:flex;align-items:center;justify-content:center}.pv-hidden{display:none!important}.pv-hero-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;z-index:2}.pv-hero-loading[hidden]{display:none}.pv-spinner{width:44px;height:44px;border-radius:50%;border:3px solid rgba(var(--desert-card-rgb), .15);border-top-color:var(--desert-card);animation:pvspin 1s linear infinite}@keyframes pvspin{to{transform:rotate(360deg)}}.pv-hero-err{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:24px;text-align:center;color:var(--desert-ink);font-size:15px;z-index:2;background:var(--desert-bg)}.pv-hero-err[hidden]{display:none}.pv-hero-trynext{margin-left:10px;padding:10px 18px;border-radius:999px;border:1px solid rgba(var(--desert-card-rgb), .35);background:var(--desert-accent);color:var(--desert-card);font:600 14px/1 -apple-system,system-ui,"Segoe UI",sans-serif;cursor:pointer}.pv-hero-trynext:hover{background:var(--desert-accent)}@media(prefers-reduced-motion:reduce){.pv-spinner{animation:none}
}/* PLAYING tag on the active tile */
.chtile.now .chtile-art{box-shadow:0 0 0 2px var(--pv-red),var(--pv-shadow-card)}.chtile.now .chtile-art::after{content:"PLAYING";position:absolute;bottom:8px;right:8px;z-index:2;background:var(--pv-red);color:var(--desert-card);font:700 10px/1 var(--pv-sans);letter-spacing:.06em;padding:6px 9px;border-radius:999px}/* broken-artwork fallback: channel initial, never a blank dark box */
.chtile-initial{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font:800 44px/1 var(--pv-serif);color:var(--pv-ivory);background:linear-gradient(135deg,var(--desert-pressed),var(--desert-card))}@media(min-width:900px){.pv-hero{position:relative;top:auto}.pv-hero-stage{aspect-ratio:21/9;max-height:62vh}
}/* ============ LIGHT THEME (prefers-color-scheme) — color-only overrides ============ */
@media (prefers-color-scheme: light){
  .signin { border-color: rgba(var(--desert-ink-rgb), .28); }
  .burger:hover { background: rgba(var(--desert-ink-rgb), .06); }
  .menu-panel a:hover { background: rgba(var(--desert-ink-rgb), .05); }
  .stage-loading::after {
    background: linear-gradient(100deg, transparent 30%, rgba(var(--desert-ink-rgb), .06) 50%, transparent 70%);
  }
  .badge.off, .badge.out { background: rgba(var(--desert-ink-rgb), .06); }
  .nb-btn { border-color: rgba(var(--desert-ink-rgb), .28); }
  .chtile:hover .chtile-art,
  .chtile-out:hover .chtile-art {
    box-shadow: 0 24px 54px rgba(var(--desert-ink-rgb), .20), 0 0 0 1px rgba(var(--brand-red-rgb), .22);
  }
  /* NOTE (kept dark by design): .stage is the video stage; .stage-veil is its
     scrim; .pv-hero-bar/.pv-hero-name/.pv-hero-sound/.pv-hero-mute sit on the
     stage; .nowbar .nb-art/.chtile-art/.chtile-initial are tile art wells;
     .search-empty/.note are red tints; .toast resolves via --pv-* tokens. */
}/* ============================================================================
   LAPTOP-FIRST GUIDE LAYOUT (James, 2026-10-03 — "rebuild with laptop in mind")
   Desktop (≥1024px) is a real TV guide: theater (player + scrollable guide
   sidebar) up top, category text-tabs, dense channel grids. Phone rules below
   are untouched.
   ============================================================================ */
@media(min-width:1024px){
  /* ---- theater: player + guide side by side ---- */
  .pv-hero.pv-theater{position:static;z-index:auto;background:transparent;margin-top:32px}
  .pv-theater-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:32px;align-items:start}
  .pv-theater-player{min-width:0}
  .pv-theater-player .pv-hero-stage{border-radius:var(--pv-r-card);box-shadow:var(--pv-shadow-card)}
  .pv-theater-player .pv-hero-sub{padding:14px 4px 0;background:transparent;font-size:14px}

  /* ---- guide sidebar ---- */
  .pv-guide{
    position:sticky;top:96px;max-height:calc(100vh - 120px);
    display:flex;flex-direction:column;min-height:0;
    /* UNIFIED-DESIGN (2026-10-08): transparent module on the single cream page —
       keeps the thin hairline border per the approved Golden mockup. */
    background:transparent;border:1px solid var(--pv-rule);
    border-radius:var(--pv-r-card);overflow:hidden;
  }
  .pv-guide-head{
    display:flex;align-items:center;justify-content:space-between;
    padding:16px 18px;border-bottom:1px solid var(--pv-rule);flex:none;
  }
  .pv-guide-head h2{
    font-family:var(--pv-serif);font-size:22px;font-weight:700;
    letter-spacing:-.01em;color:var(--pv-ivory);margin:0;
  }
  .pv-guide-live{
    display:inline-flex;align-items:center;gap:7px;
    font-size:var(--pv-label);font-weight:800;letter-spacing:.14em;text-transform:uppercase;
    color:var(--pv-ivory-dim);
  }
  .pv-guide-live i{width:7px;height:7px;border-radius:50%;background:var(--pv-live);animation:pv-guide-pulse 2s ease-in-out infinite}
  @keyframes pv-guide-pulse{0%,100%{opacity:1}50%{opacity:.35}}
  .pv-guide-list{overflow-y:auto;padding:8px;scrollbar-width:thin;flex:1;min-height:0}
  .pv-guide-genre{
    font-size:var(--pv-label);font-weight:800;letter-spacing:.18em;text-transform:uppercase;
    color:rgba(var(--desert-ink-rgb), .44);margin:0;padding:14px 10px 8px;
  }
  .pv-guide-genre:first-child{padding-top:8px}
  .pv-guide-row{
    display:flex;align-items:center;gap:12px;width:100%;
    padding:9px 10px;border:0;border-radius:12px;background:transparent;
    cursor:pointer;text-align:left;color:inherit;font:inherit;
  }
  .pv-guide-row:hover{background:rgba(var(--desert-ink-rgb), .05)}
  .pv-guide-row.is-active{background:rgba(var(--brand-red-rgb), .12);box-shadow:inset 0 0 0 1px rgba(var(--brand-red-rgb), .4)}
  .pv-guide-logo{
    width:64px;height:36px;flex:none;border-radius:8px;overflow:hidden;
    /* logo image well — pinned light like the channel tiles so dark AND light
       wordmarks stay legible; the thin border keeps the unified module look */
    background:var(--desert-card);border:1px solid rgba(var(--desert-ink-rgb), .12);
    display:flex;align-items:center;justify-content:center;
  }
  .pv-guide-logo img{width:100%;height:100%;object-fit:contain;padding:4px}
  .pv-guide-meta{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
  .pv-guide-name{
    font-size:14px;font-weight:600;color:var(--pv-ivory);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .pv-guide-sub{
    font-size:12px;color:var(--pv-ivory-dim);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .pv-guide-row .badge{flex:none}

  /* ---- category text tabs (no pills) ---- */
  .pv-catnav{
    display:flex;gap:28px;margin:40px 0 8px;padding:0 4px;
    border-bottom:1px solid var(--pv-rule);
  }
  .pv-catnav a{
    font-size:12px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;
    color:var(--pv-ivory-dim);text-decoration:none;padding:0 2px 12px;position:relative;
  }
  .pv-catnav a::after{
    content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;
    background:var(--pv-red);transform:scaleX(0);transform-origin:left;transition:transform .2s;
  }
  .pv-catnav a:hover{color:var(--pv-ivory)}
  .pv-catnav a:hover::after{transform:scaleX(1)}

  /* ---- denser channel grids on wide screens ---- */
  .rail{grid-template-columns:repeat(5,1fr);gap:24px 20px}
  .block-head h2{font-size:clamp(26px,2.6vw,34px)}
}/* 6-column grids on very wide laptops */
@media(min-width:1440px){
  .rail{grid-template-columns:repeat(6,1fr)}
}/* Guide hidden on phone — the rails are the phone guide (unchanged) */
@media(max-width:1023.98px){
  .pv-guide{display:none}
  .pv-catnav{display:none}
}/* Streams tab in the category nav — off-page link, styled distinct */
@keyframes pv-dot-pulse{0%{box-shadow:0 0 0 0 rgba(var(--brand-red-rgb), .55)}70%{box-shadow:0 0 0 10px rgba(var(--brand-red-rgb), 0)}100%{box-shadow:0 0 0 0 rgba(var(--brand-red-rgb), 0)}}.pv-catnav a.catnav-streams{color:var(--pv-red,var(--brand-red-deep));font-weight:800;display:inline-flex;align-items:center;gap:7px}.pv-catnav a.catnav-streams i{width:8px;height:8px;border-radius:50%;background:var(--pv-red,var(--brand-red-deep));animation:pv-dot-pulse 2s infinite}

/* ============================================================================
   IMMERSIVE CINEMA BAND (2026-10-12 expansion) — the theater becomes a
   full-bleed dark TV room on the cream page: bigger stage, ambient glow,
   dark guide with channel numbers + real ON NOW lines, and a now bar with
   remote controls. Palette stays Bible: noir, bone, Signal Red.
   ============================================================================ */
.pv-cinema{
  position:relative;width:100vw;margin-left:calc(50% - 50vw);
  background:#0a0a0b;color:#FFFFFF;overflow:hidden;
  padding:30px 0 34px;margin-top:6px;
}
.pv-cinema::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(58% 46% at 30% 0%,rgba(236,70,52,.16) 0%,rgba(236,70,52,0) 70%),
    radial-gradient(40% 34% at 88% 12%,rgba(236,70,52,.08) 0%,rgba(236,70,52,0) 70%);
}
.pv-cinema-in{position:relative;max-width:var(--pv-content-max);margin:0 auto;padding:0 var(--pv-gutter)}
.pv-cinema .pv-hero.pv-theater{margin-top:0}
.pv-cinema .pv-theater-player .pv-hero-stage{
  aspect-ratio:16/9;max-height:none;border-radius:18px;background:#000;
  box-shadow:0 34px 90px rgba(0,0,0,.65),0 0 0 1px rgba(255,255,255,.09),0 0 110px rgba(236,70,52,.10);
}
.pv-cinema .pv-theater-player .pv-hero-sub{color:rgba(255,255,255,.62);font-size:13.5px;padding:12px 4px 0}
.pv-hero-now{
  margin-left:auto;font-size:12.5px;font-weight:600;color:rgba(255,255,255,.92);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:52%;
  text-shadow:0 1px 8px rgba(0,0,0,.8);
}
.pv-hero-now[hidden]{display:none}
/* ---- dark guide ---- */
.pv-cinema .pv-guide{
  background:rgba(255,255,255,.045);border-color:rgba(255,255,255,.14);
  box-shadow:0 24px 60px rgba(0,0,0,.45);
}
.pv-cinema .pv-guide-head{border-bottom-color:rgba(255,255,255,.12)}
.pv-cinema .pv-guide-head h2{color:#FFFFFF}
.pv-cinema .pv-guide-live{color:rgba(255,255,255,.55)}
.pv-cinema .pv-guide-genre{color:rgba(255,255,255,.42)}
.pv-cinema .pv-guide-row:hover{background:rgba(255,255,255,.07)}
.pv-cinema .pv-guide-row.is-active{background:rgba(236,70,52,.16);box-shadow:inset 0 0 0 1px rgba(236,70,52,.5)}
.pv-cinema .pv-guide-name{color:#FFFFFF}
.pv-cinema .pv-guide-sub{color:rgba(255,255,255,.52)}
.pv-guide-num{
  flex:none;width:38px;font-size:10.5px;font-weight:800;letter-spacing:.08em;
  color:rgba(255,255,255,.48);font-variant-numeric:tabular-nums;
}
.pv-guide-now{
  display:flex;align-items:center;gap:6px;
  font-size:11.5px;font-weight:600;color:rgba(255,255,255,.85);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.pv-guide-now[hidden]{display:none}
.pv-guide-now::before{
  content:"";flex:none;width:6px;height:6px;border-radius:50%;
  background:var(--pv-live,#E10600);animation:pulse 1.8s infinite;
}
/* ---- now bar + remote ---- */
.pv-nowbar{
  margin-top:22px;display:flex;align-items:center;gap:20px;flex-wrap:wrap;
}
.pv-nowbar-logo{
  width:118px;aspect-ratio:16/9;border-radius:12px;flex:none;overflow:hidden;
  background:var(--desert-card);border:1px solid rgba(255,255,255,.16);
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 14px 34px rgba(0,0,0,.5);
}
.pv-nowbar-logo img{width:100%;height:100%;object-fit:contain;padding:10%}
.pv-nowbar-meta{flex:1;min-width:230px}
.pv-nowbar-k{
  display:flex;align-items:center;gap:10px;
  font-size:11px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;
  color:rgba(255,255,255,.6);
}
.pv-nowbar-chnum{color:#E10600}
.pv-nowbar-name{
  font-family:var(--pv-serif);font-weight:700;letter-spacing:-.01em;
  font-size:clamp(24px,2.6vw,34px);line-height:1.08;color:#FFFFFF;margin:6px 0 5px;
}
.pv-nowbar-now{font-size:14.5px;font-weight:600;color:rgba(255,255,255,.92)}
.pv-nowbar-now[hidden]{display:none}
.pv-nowbar-sub{font-size:13.5px;color:rgba(255,255,255,.55);margin-top:3px}
.pv-remote{display:flex;gap:10px;align-items:center;margin-left:auto}
.pv-remote-btn{
  width:54px;height:54px;border-radius:50%;flex:none;
  display:flex;align-items:center;justify-content:center;
  border:1px solid rgba(255,255,255,.28);color:#FFFFFF;background:rgba(255,255,255,.05);
  transition:border-color .18s ease,background .18s ease,transform .12s ease;
}
.pv-remote-btn svg{width:24px;height:24px}
.pv-remote-btn:active{transform:scale(.93)}
@media(hover:hover){.pv-remote-btn:hover{border-color:#E10600;background:rgba(236,70,52,.14)}}
/* NEW rail tag */
#sec-new .chtile-art::after{
  content:"NEW";position:absolute;top:10px;right:10px;z-index:2;
  font:800 9.5px/1 var(--pv-sans);letter-spacing:.14em;color:#FFFFFF;
  background:rgba(10,10,11,.72);border:1px solid rgba(236,70,52,.65);
  padding:5px 8px;border-radius:999px;
}
/* fullscreen stage keeps the video contained */
.pv-hero-stage:fullscreen{background:#000}
.pv-hero-stage:fullscreen video,.pv-hero-stage:fullscreen iframe.pv-hero-yt{width:100%;height:100%}
/* phone: cinema band tightens, remote wraps under the meta */
@media(max-width:1023.98px){
  .pv-cinema{padding:16px 0 22px;margin-top:2px}
  .pv-cinema-in{padding:0 var(--pv-gutter-sm)}
  .pv-cinema .pv-theater-player .pv-hero-stage{border-radius:12px}
  .pv-nowbar{gap:14px;margin-top:16px}
  .pv-nowbar-logo{width:92px}
  .pv-remote{margin-left:0}
  .pv-remote-btn{width:50px;height:50px}
  .pv-hero-now{display:none}
}

/* ============================================================================
   BIBLE CONFORMANCE PASS (2026-10-12) — James: "make sure it fits our design
   bible." The generations above speak the retired Sep-28 "Noir / Playfair /
   Signal Red #E10600" language. This block re-speaks the page in Bible
   (bible.css): Previously Display serif, Bible red #E10600, paper surfaces, hairline
   rules, rectangular badges — NO pills, no glass, no gradient glows.
   The video stage itself stays dark (a cinema stage is black by nature);
   its frame, the guide, the now bar, controls, badges, rails and tabs are
   Bible. Category labels NEVER wrap (James, 2026-10-12): one line each,
   the row scrolls horizontally where it cannot fit.
   ============================================================================ */
:root{
  --pv-serif:'Previously Display',Georgia,'Times New Roman',serif;
  --pv-red:var(--bible-red);
  --pv-live:var(--bible-red);
  --pv-red-glow:rgba(192,57,27,.35);
  --pv-red-glow-lg:rgba(192,57,27,.55);
}
/* ---- masthead search: no dark block — a paper Bible search box ---- */
.search-wrap{background:transparent;padding:10px 0 6px}
.pv-search__bar{
  border-radius:12px;background:var(--bible-card);
  border:1px solid var(--bible-rule);
  box-shadow:0 12px 32px rgba(33,25,16,.10);
  -webkit-backdrop-filter:none;backdrop-filter:none;
}
.pv-search__bar:focus-within{
  border-color:var(--bible-red);
  box-shadow:0 0 0 3px rgba(192,57,27,.25),0 12px 32px rgba(33,25,16,.10);
}
.pv-search__icon{color:var(--bible-ink-dim)}
.pv-search__bar:focus-within .pv-search__icon{color:var(--bible-red)}
.pv-search__input{color:var(--bible-ink)}
.pv-search__input::placeholder{color:var(--bible-ink-dim)}
.pv-search__meta{color:var(--bible-ink-dim)}
.pv-search__meta strong{color:var(--bible-ink)}
.pv-search__results{background:var(--bible-card);border-color:var(--bible-rule);border-radius:14px}
.pv-search__retry{border-radius:8px}
/* ---- badges: rectangular, Bible red (the site's LIVE language) ---- */
.badge{border-radius:4px}
.badge.live{background:var(--bible-red)}
.badge.off{background:rgba(33,25,16,.06);border-color:var(--bible-rule);color:var(--bible-ink-dim)}
/* ---- cinema band: the full-bleed noir room becomes the paper page ---- */
.pv-cinema{background:transparent}
.pv-cinema::before{display:none}
.pv-cinema .pv-theater-player .pv-hero-stage{
  border-radius:14px;background:#000;
  box-shadow:0 0 0 1px rgba(33,25,16,.9),0 30px 90px rgba(33,25,16,.25);
}
.pv-cinema .pv-theater-player .pv-hero-sub{color:var(--bible-ink-dim)}
/* ---- guide sidebar: a paper TV-guide panel, not dark glass ---- */
.pv-cinema .pv-guide{
  background:var(--bible-card);border-color:var(--bible-rule);
  box-shadow:0 18px 50px rgba(33,25,16,.10);
}
.pv-cinema .pv-guide-head{border-bottom-color:var(--bible-rule)}
.pv-cinema .pv-guide-head h2{color:var(--bible-ink)}
.pv-cinema .pv-guide-live{color:var(--bible-ink-dim)}
.pv-cinema .pv-guide-live i{background:var(--bible-red)}
.pv-cinema .pv-guide-genre{color:var(--bible-ink-dim)}
.pv-cinema .pv-guide-row:hover{background:rgba(33,25,16,.045)}
.pv-cinema .pv-guide-row.is-active{
  background:rgba(192,57,27,.09);
  box-shadow:inset 0 0 0 1px rgba(192,57,27,.45);
}
.pv-cinema .pv-guide-name{color:var(--bible-ink)}
.pv-cinema .pv-guide-sub{color:var(--bible-ink-dim)}
.pv-cinema .pv-guide-logo{border-color:var(--bible-rule)}
.pv-guide-num{color:var(--bible-red);white-space:nowrap;width:auto;min-width:46px}
.pv-guide-now{color:var(--bible-ink-soft)}
.pv-guide-now::before{background:var(--bible-red)}
/* ---- now bar + remote: paper furniture, rectangular controls ---- */
.pv-nowbar-logo{
  background:var(--bible-card);border-color:var(--bible-rule);border-radius:10px;
  box-shadow:0 12px 30px rgba(33,25,16,.12);
}
.pv-nowbar-k{color:var(--bible-ink-dim)}
.pv-nowbar-chnum{color:var(--bible-red)}
.pv-nowbar-name{color:var(--bible-ink)}
.pv-nowbar-now{color:var(--bible-ink)}
.pv-nowbar-sub{color:var(--bible-ink-dim)}
.pv-remote-btn{
  border-radius:12px;border-color:rgba(33,25,16,.30);
  color:var(--bible-ink);background:var(--bible-card);
}
@media(hover:hover){.pv-remote-btn:hover{border-color:var(--bible-red);background:rgba(192,57,27,.07);color:var(--bible-red)}}
/* ---- stage overlays: Bible scrims, no blur, no pills ---- */
.pv-hero-sound{
  border-radius:10px;background:rgba(20,10,4,.80);
  -webkit-backdrop-filter:none;backdrop-filter:none;
}
.pv-hero-mute{border-radius:12px}
.pv-hero-trynext{border-radius:10px;background:var(--bible-red)}
.pv-hero-trynext:hover{background:var(--bible-red-deep)}
.stage{border-radius:14px}
.stage-note{-webkit-backdrop-filter:none;backdrop-filter:none}
.stage-note .sn-btn{border-radius:10px;background:var(--bible-red)}
.nb-btn{border-radius:10px}
/* ---- category nav: ONE line per label — scroll, never wrap (James) ---- */
.pv-catnav{
  flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;
  -webkit-overflow-scrolling:touch;
}
.pv-catnav::-webkit-scrollbar{display:none}
.pv-catnav a{white-space:nowrap;flex:0 0 auto}
@media(max-width:1023.98px){
  .pv-catnav{display:flex;margin:26px 0 4px}
}
/* ---- category nav base styles — ALL widths (fix 2026-10-13) ----
   The tab styling for .pv-catnav lives inside the min-width:1024px block,
   but the max-width block above re-displays the nav on phones — so
   phones got raw underlined links running together with no spacing.
   These base rules carry the same tab styling to every width (values
   identical to the desktop set, so desktop rendering is unchanged). */
.pv-catnav{gap:28px;border-bottom:1px solid var(--pv-rule)}
.pv-catnav a{
  font-size:12px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;
  color:var(--pv-ivory-dim);text-decoration:none;padding:0 2px 12px;position:relative;
}
.pv-catnav a::after{
  content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;
  background:var(--pv-red);transform:scaleX(0);transform-origin:left;transition:transform .2s;
}
@media(max-width:1023.98px){ .pv-catnav{gap:22px} }
/* ---- section blocks: newspaper rule above each, like .b-block ---- */
.block{border-top:1px solid var(--bible-rule);padding-top:38px}
/* ---- channel tiles: Bible card shadow language, rectangular tags ---- */
.chtile-art{
  border-radius:14px;border-color:var(--bible-rule);
  box-shadow:0 10px 28px rgba(33,25,16,.10);
}
@media(hover:hover){
  .chtile:hover .chtile-art,
  .chtile-out:hover .chtile-art{
    box-shadow:0 22px 48px rgba(33,25,16,.20),0 0 0 1px rgba(192,57,27,.25);
  }
}
.chtile.now .chtile-art::after{border-radius:4px;background:var(--bible-red)}
#sec-new .chtile-art::after{border-radius:4px;border-color:rgba(192,57,27,.65)}
@media(max-width:1023.98px){
  .chtile-badge .badge{border-radius:4px}
}
/* ---- notes, empty state, toast: Bible red tints, no pills ---- */
.note{background:rgba(192,57,27,.05);border-color:rgba(192,57,27,.25);border-radius:14px}
.note b{color:var(--bible-red)}
.search-empty{background:rgba(192,57,27,.05);border-color:rgba(192,57,27,.25);border-radius:14px}
.toast{border-radius:12px;border-color:rgba(192,57,27,.4)}

/* ============ BADGE DIET (2026-10-13 — James: the pills were "doing too
   much… that's all I can see is just those overlays") ============
   ONE badge per thumbnail, small and quiet, one corner (top-left).
   Priority: PLAYING > LIVE > NEW. PLAYING replaces LIVE on the playing
   tile (the LIVE pill hides, the PLAYING tag takes its corner); NEW
   hides whenever a LIVE badge rides the same art and yields to PLAYING
   on the playing tile. NEW survives only alone, at the same reduced
   size, keeping its dark pill. Presentation-level: the renderer emits
   the same markup; these rules decide what shows. Guide rows and the
   hero bar are not thumbnails and are untouched. */
.chtile-badge{top:8px;left:8px}
.chtile-badge .badge{height:20px;min-height:0;padding:0 8px;gap:4px;font-size:8.5px;letter-spacing:.1em;border-radius:4px}
.chtile-badge .badge.live i{width:5px;height:5px}
.chtile.now .chtile-badge{display:none}
.chtile.now .chtile-art::after{top:8px;left:8px;right:auto;bottom:auto;padding:5px 8px;font-size:8.5px;border-radius:4px}
#sec-new .chtile-art::after{top:8px;left:8px;right:auto;padding:5px 8px;font-size:8.5px;border-radius:4px}
#sec-new .chtile-art:has(> .chtile-badge)::after{display:none}
#sec-new .chtile.now .chtile-art::after{content:"PLAYING";display:block;background:var(--pv-red);border-color:transparent;color:var(--desert-card)}
/* Who's Live blocked-embed panel (livetv.js showStreamerBlocked) */
.pv-hero-err:has(.wl-err-note){flex-wrap:wrap;gap:10px 6px}
.wl-err-note{flex-basis:100%;font-size:12.5px;opacity:.72}
a.pv-hero-trynext{text-decoration:none}

/* ==== LIVE TV BUILD 2026-10-17 — house component states ====
   Honest channel states (see livetv.js PVLiveState): chips, never pills;
   silver carries information, red is the signal. */
.badge{display:inline-flex;align-items:center;gap:6px;font-size:9.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;padding:4px 8px;border-radius:3px;background:rgba(0,0,0,.72);border:1px solid #2C2C2C;color:#A5ACAF}
.badge i{width:6px;height:6px;border-radius:50%;background:#7E858B;flex:none}
.badge.st-onair{color:#FFFFFF;border-color:rgba(225,6,0,.55)}
.badge.st-onair i{background:#E10600}
.badge.st-up{color:#A5ACAF}
.badge.st-up i{background:#A5ACAF}
.badge.st-avail{color:#7E858B}
.badge.st-issue{color:#FF6B64;border-color:rgba(225,6,0,.55)}
.badge.st-issue i{background:#E10600}
.pv-guide-live{color:#A5ACAF !important;font-size:11px;letter-spacing:1.6px;text-transform:uppercase}
#nbNext{color:#A5ACAF;font-size:12.5px;margin-top:2px}
#nbNext:empty{display:none}
.pv-favhost{position:relative}
.pv-fav{position:absolute;top:8px;right:8px;z-index:5;width:34px;height:34px;border-radius:50%;background:rgba(0,0,0,.72);border:1px solid #2C2C2C;color:#A5ACAF;font-size:16px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer}
.pv-fav.on{color:#E10600;border-color:rgba(225,6,0,.55)}
.pv-fav:focus-visible{outline:2px solid #E10600;outline-offset:2px}
.pv-mine-note{color:#7E858B;font-size:12px;letter-spacing:.4px;margin:2px 0 10px}
.pv-wl-fresh{color:#7E858B;font-size:11.5px;letter-spacing:1.2px;text-transform:uppercase;margin-top:6px}
#chPip{font-size:11px;font-weight:800;letter-spacing:.08em}
/* Marathon 400 only — no synthesized bold on display headings */
h1,h2,h3{font-weight:400}
/* Page title zone (replaces the retired shared masthead styles, 2026-10-17) */
.lt-head{background:#000;padding:26px 20px 18px;border-bottom:1px solid #2C2C2C}
.lt-head .wrap{max-width:1280px;margin:0 auto}
.lt-head .kicker{color:#E10600;font-size:11.5px;font-weight:800;letter-spacing:.3em;text-transform:uppercase;display:flex;gap:8px;margin:0}
.lt-head h1{font-family:'Previously Display',Georgia,serif;font-weight:400;font-size:clamp(38px,6vw,58px);line-height:1.02;color:#FFFFFF;margin:8px 0 16px}
.lt-head .meta-row{display:flex;align-items:center;gap:14px;margin-top:14px;color:#A5ACAF;font-size:12.5px;letter-spacing:.4px}
.lt-head .lib-stamp b{color:#FFFFFF}
.lt-head .pv-fresh-badge{display:inline-flex;align-items:center;gap:7px;font-size:10.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#A5ACAF;border:1px solid #2C2C2C;border-radius:3px;padding:5px 9px;background:#101010}
.lt-head .pv-fresh-badge .dot{width:7px;height:7px;border-radius:50%;background:#E10600}
/* Logo wells: neutral house silver (2026-10-17). The well stays light-valued
   by design — the measured logo set includes dark marks that vanish on dark
   wells and white marks that vanish on cream — but the warm cream tint is
   retired: silver is the house metal. */
.chtile-art,.chtile-art.light{background:#C9CDD1}
@media (max-width:480px){.chtile-badge .badge{font-size:8.5px;padding:3px 6px;letter-spacing:.1em}}

/* ============================================================================
   LIVE TV FIXES (James, 2026-10-17)
   1) Guide head: the status claim moves to its own row under the title —
      it can never crowd or collide with "Guide" again — and gains the
      pulsing red dot the guide-live CSS always expected (the markup/JS
      never rendered the <i> it was styled for, so it is drawn in CSS).
   2) Player/guide zone type: Marathon ('Previously Display') ships at
      weight 400 ONLY; the 700 requests below were synthesizing a faux
      bold that read as the retired serif. Channel name + guide title
      now render at true 400.
   3) Category tabs: display state for switched-off rails + active tab.
   ============================================================================ */
.pv-cinema .pv-guide-head{flex-wrap:wrap;row-gap:5px}
.pv-cinema .pv-guide-head h2{font-weight:400}
.pv-cinema .pv-guide-live{flex:1 1 100%;min-width:0}
.pv-cinema .pv-guide-live::before{
  content:"";width:7px;height:7px;border-radius:50%;flex:none;
  background:#E10600;box-shadow:0 0 6px 1px rgba(225,6,0,.55);
  animation:pv-dot-pulse 2s ease-out infinite;
}
@media (prefers-reduced-motion:reduce){
  .pv-cinema .pv-guide-live::before{animation:none}
}
.pv-cinema .pv-nowbar-name{font-weight:400}
#livetvApp section.pv-cat-off{display:none!important}
@media(min-width:1024px){
  .pv-catnav a.is-active{color:#FFFFFF}
  .pv-catnav a.is-active::after{transform:scaleX(1)}
}
