/* ============================================================================
   PREVIOUSLY · FREE MOVIES — new top-level section (2026-09-28)
   Golden design: one cream page (#FAF6EE), transparent bordered cards,
   dark ink text everywhere, dark scrims under overlaid text.
   Playfair Display for display, Inter for body.
   ============================================================================ */
/* Playfair Display retired 2026-10-17 (Cream Fleet): display type is Previously Display via --pv-serif. */@font-face{
  font-family:'Inter';font-style:normal;font-weight:100 900;
  font-display:swap;src:url('../fonts/inter-var.woff2') format('woff2');
}*{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);
  font-size:var(--pv-body);line-height:var(--pv-leading-body);
  -webkit-font-smoothing:antialiased;min-height:100vh;
  overflow-x:hidden;
}body.lock{overflow:hidden}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;text-align:left}img{display:block;max-width:100%}:focus{outline:none}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:4px}@keyframes glowSweep{0%{left:-30%}50%{left:94%}100%{left:-30%}
}@media(hover:hover){}/* ============================================================================
   PAGE BODY — 1280px centered, zero sideways scroll
   ============================================================================ */
main{
  max-width:var(--pv-content-max);margin:0 auto;
  padding:0 var(--pv-gutter) 96px;
}/* the uniform search bar lives in the locked slot: right under the hero,
   above the first content block */
main .pv-search{margin-top:var(--pv-s8)}.pv-block{margin-top:var(--pv-s16)}.pv-block__head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:var(--pv-s6)}.pv-kicker{
  font-size:var(--pv-label);font-weight:800;letter-spacing:var(--pv-track-xl);
  text-transform:uppercase;color:var(--pv-red);margin-bottom:var(--pv-s2);
}.pv-block__head h2{
  font-family:var(--pv-serif);font-weight:700;font-size:var(--pv-title);
  line-height:var(--pv-leading-title);letter-spacing:var(--pv-track-tight);
}/* ---- reveal (with the 3.5s safety net in JS) ---- */
.fx .rv{opacity:0;transform:translateY(22px);transition:opacity .6s ease,transform .6s var(--pv-ease)}.fx .rv.in{opacity:1;transform:none}/* ---- editorial lanes: borderless poster tiles ---- */
.pv-cardwrap{min-width:0;overflow:hidden}.pv-lane{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:var(--pv-s6) var(--pv-s4)}/* Hood Classics scroll rail (James 2026-10-01): horizontal left-to-right on
   desktop too — no more tall vertical grid for long lanes. */
.pv-lane--scroll{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(160px,220px);
  grid-template-columns:none;gap:18px;overflow-x:auto;padding:4px 4px 18px;
  scroll-snap-type:x proximity;scrollbar-width:thin}.pv-lane--scroll .pv-tile{scroll-snap-align:start}.pv-tile{
  display:block;text-decoration:none;min-width:0;border-radius:var(--pv-r-sm);
  transition:transform .18s var(--pv-ease);
}@media(hover:hover){.pv-tile:hover{transform:translateY(-3px)}}.pv-tile:active{transform:scale(.98)}.pv-tile__art{
  width:100%;aspect-ratio:2/3;object-fit:cover;border-radius:14px;
  box-shadow:var(--pv-shadow-card);transition:box-shadow .2s ease;
  background:var(--pv-noir-3);
}@media(hover:hover){.pv-tile:hover .pv-tile__art{box-shadow:0 18px 44px rgba(var(--desert-shadow-rgb), .6),0 0 34px rgba(var(--brand-red-rgb), .22)}}.pv-tile__t{
  display:block;margin-top:12px;font-size:14.5px;font-weight:650;line-height:1.35;
  color:var(--desert-ink);white-space:normal;text-overflow:clip;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}.pv-tile__s{
  display:block;margin-top:3px;font-size:12.5px;font-weight:500;color:var(--pv-ivory-dim);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}/* ---- A–Z SEO directory (James 2026-10-07): crawlable catalog + genre browsing ---- */
.pv-dir__lede{font-size:14.5px;color:var(--pv-ivory-dim);margin-bottom:var(--pv-s6);max-width:70ch}
.pv-dir__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--pv-s6) var(--pv-s8)}
.pv-dir__col h3{font-size:13px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--pv-red);margin-bottom:10px}
.pv-dir__col ul{list-style:none;display:flex;flex-direction:column;gap:7px}
.pv-dir__col li{font-size:14px;line-height:1.4}
.pv-dir__col li a{color:var(--pv-ivory);text-decoration:none}
.pv-dir__col li a:hover{color:var(--pv-red);text-decoration:underline}
.pv-dir__col li span{color:var(--pv-ivory-dim);font-size:12.5px}
/* ---- genre pills (James 2026-10-07): visible category browsing ---- */
.pv-pills{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:var(--pv-s8)}
.pv-pill{
  min-height:var(--pv-target-min);padding:0 20px;border-radius:4px;
  border:1px solid var(--pv-rule);background:rgba(var(--desert-card-rgb), .04);color:var(--desert-ink);
  font-size:14px;font-weight:600;cursor:pointer;white-space:nowrap;
  transition:background .15s ease,border-color .15s ease,color .15s ease,transform .15s ease;
}
.pv-pill:hover{border-color:var(--pv-red);transform:translateY(-1px)}
.pv-pill.is-active{background:var(--desert-accent);border-color:var(--desert-accent);color:var(--desert-card)}
.pv-pill:focus-visible{outline:2px solid var(--pv-red);outline-offset:2px}
/* ---- genre filter (dropdown fallback, visually hidden — pills are primary) ---- */
.pv-filterrow{display:flex;align-items:center;gap:12px;margin-bottom:var(--pv-s8)}.pv-filterlabel{font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--pv-ivory-dim)}.pv-select{
  min-height:var(--pv-target-min);padding:0 40px 0 16px;border-radius:12px;
  border:1px solid var(--pv-rule);background:rgba(var(--desert-card-rgb), .04);color:var(--pv-ivory);
  font-size:14px;font-weight:600;appearance:none;-webkit-appearance:none;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%232A1C11' stroke-width='2' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;
}.pv-select:focus{outline:2px solid var(--pv-red);outline-offset:2px}.pv-select option{background:var(--desert-card);color:var(--desert-ink)}/* ---- every-show grid: borderless vertical cards ---- */
.pv-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--pv-s8) var(--pv-s6)}.pv-card{
  background:transparent;border:none;text-align:left;border-radius:var(--pv-r-sm);
  transition:transform .18s var(--pv-ease);min-width:0;scroll-margin-top:calc(var(--pv-nav-h) + 90px);
}@media(hover:hover){.pv-card:hover{transform:translateY(-3px)}}.pv-card:active{transform:scale(.98)}.pv-card__art{
  width:100%;aspect-ratio:2/3;object-fit:cover;border-radius:20px;
  box-shadow:var(--pv-shadow-card);transition:box-shadow .2s ease;
}@media(hover:hover){.pv-card:hover .pv-card__art{box-shadow:0 22px 50px rgba(var(--desert-shadow-rgb), .6),0 0 40px rgba(var(--brand-red-rgb), .20)}}.pv-card__t{
  display:block;margin-top:14px;font-size:16px;font-weight:650;line-height:1.35;color:var(--desert-ink);
}.pv-card__s{display:block;margin-top:4px;font-size:13px;color:var(--pv-ivory-dim)}/* ---- honest empty state (never a spinner) ---- */
.pv-empty{
  text-align:center;padding:var(--pv-s16) var(--pv-s6);max-width:520px;margin:0 auto;
}.pv-empty__t{font-family:var(--pv-serif);font-size:var(--pv-h3);font-weight:700}.pv-empty__d{margin-top:var(--pv-s2);color:var(--pv-ivory-dim)}.pv-empty .pv-btn{margin-top:var(--pv-s6)}.pv-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  min-height:var(--pv-target-min);padding:0 30px;border-radius:var(--pv-r-pill);
  font-weight:800;font-size:15px;transition:transform .15s var(--pv-ease),background .18s,border-color .18s;
}.pv-btn:active{transform:scale(.97)}.pv-btn--solid{background:var(--pv-red);color:var(--pv-on-red);box-shadow:var(--pv-shadow-btn)}@media(hover:hover){.pv-btn--solid:hover{background:var(--pv-red-ember)}}.pv-btn--ghost{border:1px solid var(--pv-rule);color:var(--pv-ivory)}@media(hover:hover){.pv-btn--ghost:hover{border-color:rgba(var(--desert-ink-rgb), .5)}}.pv-fineprint{margin-top:var(--pv-s12);font-size:12.5px;color:var(--pv-ivory-faint);line-height:1.7;max-width:640px}/* ============================================================================
   EPISODE MODAL
   ============================================================================ */
.pv-modal{position:fixed;inset:0;z-index:var(--pv-z-modal);display:flex;align-items:center;justify-content:center;padding:16px;padding-top:max(16px,env(safe-area-inset-top));padding-bottom:max(16px,env(safe-area-inset-bottom))}.pv-modal[hidden]{display:none}.pv-modal__backdrop{position:absolute;inset:0;background:rgba(var(--desert-ink-rgb), .45);backdrop-filter:blur(6px)}.pv-modal__panel{
  position:relative;width:100%;max-width:720px;max-height:92dvh;overflow-y:auto;
  background:var(--desert-bg);border:1px solid rgba(var(--desert-ink-rgb), .12);border-radius:24px;
  padding:28px;
  animation:popIn .12s ease-out;
}@keyframes popIn{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}.pv-modal__x{
  position:absolute;top:14px;right:14px;width:var(--pv-target-min);height:var(--pv-target-min);
  border-radius:var(--pv-r-round);display:flex;align-items:center;justify-content:center;
  background:rgba(var(--desert-ink-rgb), .08);color:var(--pv-ivory);font-size:17px;z-index:2;
}@media(hover:hover){.pv-modal__x:hover{background:rgba(var(--desert-ink-rgb), .16)}}.pv-modal__head{display:flex;gap:20px;align-items:center}.pv-modal__art{width:104px;height:104px;flex:none;border-radius:18px;object-fit:cover;box-shadow:var(--pv-shadow-card)}.pv-modal__who{min-width:0}.pv-modal__who h2{
  font-family:var(--pv-serif);font-weight:700;font-size:clamp(24px,4vw,32px);
  line-height:1.1;letter-spacing:var(--pv-track-tight);
}.pv-modal__hosts{margin-top:6px;color:var(--pv-ivory-dim);font-size:14px}.pv-modal__pitch{margin-top:18px;color:var(--pv-ivory-dim);font-size:15px;line-height:1.65}.pv-modal__epsh{
  margin-top:28px;font-size:var(--pv-label);font-weight:800;
  letter-spacing:var(--pv-track-xl);text-transform:uppercase;color:var(--pv-red);
}.pv-player{
  margin-top:20px;border-radius:16px;overflow:hidden;background:var(--desert-bg);
  border-top:2px solid var(--pv-red);
}
/* James 2026-10-09: bulletproof 16:9 on mobile — the frame NEVER exceeds 16:9
   no matter what the embed does inside it. overflow:hidden crops tall content,
   width:100% gives aspect-ratio a definite base. */
.pv-player__frame{position:relative;width:100%;aspect-ratio:16/9;overflow:hidden;background:#000;min-height:0}
.pv-player__frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.pv-player__t{padding:14px 18px;font-size:14.5px;font-weight:650}/* ---- episode grid: cards, not a list ---- */
.pv-epgrid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));
  gap:22px 16px;margin-top:18px;
}.pv-epcard{
  background:none;border:0;padding:0;font:inherit;color:inherit;text-align:left;
  cursor:pointer;border-radius:14px;
}.pv-epcard:focus-visible{outline:var(--pv-focus-outline);outline-offset:4px}.pv-epcard__thumb{
  position:relative;display:block;aspect-ratio:16/9;border-radius:14px;overflow:hidden;
  background:var(--pv-noir-3);box-shadow:var(--pv-shadow-card);
}.pv-epcard__thumb img{width:100%;height:100%;object-fit:cover;display:block}.pv-epcard__thumb::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,transparent 52%,rgba(var(--desert-ink-rgb), .55));
}.pv-epcard__play{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1;
  width:54px;height:54px;border-radius:50%;background:var(--pv-red);color:var(--pv-on-red);
  display:flex;align-items:center;justify-content:center;box-shadow:var(--pv-shadow-btn);
  opacity:0;transition:opacity .2s ease,background .18s ease;
}.pv-epcard__play svg{width:18px;height:18px;fill:currentColor;margin-left:2px}@media(hover:hover){.pv-epcard:hover .pv-epcard__play,.pv-epcard:focus-visible .pv-epcard__play{opacity:1}.pv-epcard:hover .pv-epcard__play{background:var(--pv-red-ember)}
}@media(hover:none){.pv-epcard__play{opacity:1}}.pv-epcard__t{
  display:-webkit-box;margin-top:10px;font-size:14px;font-weight:650;line-height:1.4;
  color:var(--pv-ivory);-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}.pv-epcard__meta{display:block;margin-top:4px;font-size:12.5px;color:var(--pv-ivory-dim)}.pv-epcard--na{cursor:default}.pv-epcard--na .pv-epcard__thumb img{filter:grayscale(.55) brightness(.55)}.pv-epcard__badge{
  position:absolute;left:10px;bottom:10px;z-index:1;
  font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--desert-card);background:rgba(var(--desert-ink-rgb), .74);padding:7px 12px;border-radius:4px;
  border:1px solid rgba(var(--desert-card-rgb),.3);white-space:nowrap;
}/* ---- seasons: the Previously chapter index. Not pills, not tabs, not a
   dropdown — oversized serif numerals with a signal-red rule underneath.
   Editorial, unmistakable, unmistakably ours. ---- */
.pv-seasons{margin-top:26px}.pv-seasons__rail{display:flex;align-items:flex-end;gap:38px;margin-top:2px;flex-wrap:wrap}.pv-season{
  position:relative;background:none;border:0;padding:8px 2px 14px;cursor:pointer;font:inherit;
}.pv-season__num{
  font-family:var(--pv-serif);font-weight:800;font-size:38px;line-height:1;letter-spacing:-.02em;
  color:rgba(var(--desert-ink-rgb), .34);transition:color .22s ease;
}.pv-season::after{
  content:"";position:absolute;left:2px;right:2px;bottom:0;height:3px;border-radius:2px;
  background:var(--pv-red);transform:scaleX(0);transform-origin:left center;
  transition:transform .28s var(--pv-ease);
}.pv-season[aria-pressed="true"] .pv-season__num{color:var(--pv-ivory)}.pv-season[aria-pressed="true"]::after{transform:scaleX(1)}@media(hover:hover){.pv-season:hover .pv-season__num{color:rgba(var(--desert-ink-rgb), .72)}}.pv-season:focus-visible{outline:var(--pv-focus-outline);outline-offset:4px;border-radius:6px}@media(max-width:1023.98px){.pv-epgrid{grid-template-columns:repeat(2,1fr);gap:18px 12px}.pv-season__num{font-size:32px}.pv-seasons__rail{gap:28px}
}.pv-ep__note{font-size:12.5px;color:var(--pv-ivory-dim);margin-top:4px}.pv-ep__note a{color:var(--pv-red);font-weight:600}
/* James 2026-10-08: honest fallback when the YouTube embed fails — the card
   press always leads somewhere real (direct link to the actual video). */
.pv-embedfail{margin-top:10px;padding:12px 14px;border:1px solid rgba(var(--desert-ink-rgb,.18));border-radius:12px;background:rgba(var(--desert-ink-rgb),.05);font-size:13.5px;line-height:1.5;color:var(--pv-ivory)}.pv-embedfail a{font-weight:700;color:var(--pv-red)}/* ============================================================================
   PHONE (under 1024px)
   ============================================================================ */
@media(max-width:1023.98px){
  main{padding:0 var(--pv-gutter-sm) 80px}
  .pv-block{margin-top:var(--pv-s12)}
  .pv-block__head h2{font-size:24px}
  /* lanes become contained snap rails on phone — the rail scrolls inside
     its own bounds; the page never scrolls sideways */
  .pv-lane{
    display:grid;grid-auto-flow:column;grid-auto-columns:minmax(140px,38vw);
    grid-template-columns:none; /* kill the desktop repeat(6,1fr) — without this the explicit template wins and columns size to content */
    gap:14px;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;
  }
  .pv-lane::-webkit-scrollbar{display:none}
  .pv-tile{scroll-snap-align:start}
  .pv-tile__t{font-size:13px}
  .pv-grid{grid-template-columns:repeat(2,1fr);gap:var(--pv-s6) var(--pv-s4)}
  .pv-card__t{font-size:14px}
  .pv-modal__panel{padding:22px 20px}
  .pv-modal__art{width:84px;height:84px}
}
/* Phone (390px): modal becomes a comfortable sheet — tighter chrome,
   title wraps instead of truncating, mini-player title gets 2 lines */
@media (max-width:640px){
  .pv-modal{padding:12px;align-items:flex-end}
  .pv-modal__panel{border-radius:20px 20px 16px 16px;padding:20px 18px 26px;max-height:94dvh}
  .pv-modal__head{gap:14px}
  .pv-modal__art{width:72px;height:72px;border-radius:14px}
  .pv-modal__who{min-width:0;flex:1}
  .pv-modal__who h2{font-size:22px;overflow-wrap:break-word}
  .pv-modal__x{top:10px;right:10px}
  .pv-modal__min{top:10px;right:calc(10px + var(--pv-target-min,44px) + 8px)}
  #pvMini{right:8px;left:8px;width:auto}
  .pv-mini__t{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.35}
}/* ---- reduced motion: hero rotation off, glow off, reveals instant ---- */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .fx .rv{opacity:1;transform:none}
}/* ---- free-forever tag on movie cards ---- */
.pv-card__tag{
  display:inline-block;margin-top:8px;font-size:10.5px;font-weight:800;
  letter-spacing:.14em;text-transform:uppercase;color:var(--pv-red);
}.pv-visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}/* ============ MINIMIZABLE FLOATING PLAYER (fix-list #24, 2026-10-02) ============
   The film keeps playing in a small draggable frame while you browse the
   Free shelf. Pop-out opens a dedicated player window for whole-site roaming. */
.pv-modal__min{
  position:absolute;top:14px;right:calc(14px + var(--pv-target-min,44px) + 8px);
  width:var(--pv-target-min,44px);height:var(--pv-target-min,44px);
  border-radius:var(--pv-r-round,999px);display:flex;align-items:center;justify-content:center;
  background:rgba(var(--desert-ink-rgb), .08);color:var(--pv-ivory);font-size:20px;font-weight:700;z-index:2;
}@media(hover:hover){.pv-modal__min:hover{background:rgba(var(--desert-ink-rgb), .16)}}#pvMini{
  position:fixed;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));
  width:min(320px,86vw);z-index:calc(var(--pv-z-modal,100) + 10);
  background:var(--desert-bg);border-radius:8px;overflow:hidden;
  box-shadow:0 12px 48px rgba(var(--desert-shadow-rgb), .6);border:1px solid rgba(var(--desert-ink-rgb), .12);
}#pvMini[hidden]{display:none}.pv-mini__bar{display:flex;align-items:center;gap:8px;padding:8px 8px 8px 12px;cursor:grab;user-select:none;-webkit-user-select:none;touch-action:none}.pv-mini__t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:700;color:var(--pv-ivory,var(--desert-ink))}.pv-mini__btns{display:flex;gap:4px;flex:none}.pv-mini__b{width:34px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--pv-ivory,var(--desert-ink));background:rgba(var(--desert-ink-rgb), .08);font-size:14px}@media(hover:hover){.pv-mini__b:hover{background:rgba(var(--desert-ink-rgb), .18)}}.pv-mini__body .pv-player__frame{position:relative;aspect-ratio:16/9;background:var(--desert-bg)}.pv-mini__body .pv-player__frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
/* ============ PLAYER FULLSCREEN (James 2026-10-08) ============
   The fs button lives inside .pv-player__frame so it travels with the frame
   between the modal and the mini player — one button serves both. */
.pv-fsbtn{
  position:absolute;top:8px;right:8px;z-index:3;
  width:44px;height:44px;border-radius:12px;
  display:flex;align-items:center;justify-content:center;
  background:rgba(var(--media-scrim-rgb),.55);color:var(--desert-card);border:1px solid rgba(var(--desert-card-rgb),.22);
  cursor:pointer;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);
}
.pv-fsbtn:hover{background:rgba(var(--media-scrim-rgb),.8)}
.pv-fsbtn svg{width:20px;height:20px}
.pv-fsbtn:focus-visible{outline:2px solid var(--desert-card);outline-offset:2px}
/* real fullscreen + pseudo fallback (older iOS) on the frame */
.pv-player__frame:fullscreen,.pv-player__frame:-webkit-full-screen{
  width:100vw;height:100dvh;max-width:none;aspect-ratio:auto;border-radius:0;background:var(--media-black);
}
.pv-player__frame:fullscreen iframe,.pv-player__frame:-webkit-full-screen iframe{
  position:absolute;inset:0;width:100%;height:100%;
}
.pv-player__frame.pv-pseudofs{
  position:fixed;inset:0;z-index:1001;width:100vw;height:100dvh;max-width:none;
  aspect-ratio:auto;border-radius:0;background:var(--media-black);
}
.pv-player__frame.pv-pseudofs iframe{position:absolute;inset:0;width:100%;height:100%}
/* mini player fullscreen: the whole mini goes up so play/restore/close stay reachable */
#pvMini:fullscreen,#pvMini:-webkit-full-screen{
  left:0;right:0;top:0;bottom:0;width:100vw;height:100dvh;max-width:none;border-radius:0;
  display:flex;flex-direction:column;background:var(--media-black);
}
#pvMini:fullscreen .pv-mini__body,#pvMini:-webkit-full-screen .pv-mini__body{flex:1;min-height:0}
#pvMini:fullscreen .pv-mini__body .pv-player__frame,#pvMini:-webkit-full-screen .pv-mini__body .pv-player__frame{
  height:100%;aspect-ratio:auto;
}
#pvMini.pv-pseudofs{
  position:fixed;left:0;right:0;top:0;bottom:0;width:100vw;height:100dvh;max-width:none;border-radius:0;z-index:1001;
  display:flex;flex-direction:column;background:var(--media-black);
}
#pvMini.pv-pseudofs .pv-mini__body{flex:1;min-height:0}
#pvMini.pv-pseudofs .pv-mini__body .pv-player__frame{height:100%;aspect-ratio:auto}
/* ============ AD SLOTS — /free/ (James 2026-10-07) ============
   Uniform color scheme: cream containers, subtle ink borders.
   Slots are placeholders ready for AdSense/Raptive tags.
   NO popups, NO autoplay video with sound, NOTHING covering the player. */

/* Shared ad container: clearly labeled, theme-blended */
.pv-ad-leaderboard,
.pv-ad-incontent,
.pv-ad-sticky {
  position: relative;
  background: transparent;
  border: 1px solid rgba(var(--desert-ink-rgb), .12);
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.pv-ad-leaderboard::before,
.pv-ad-incontent::before,
.pv-ad-sticky::before {
  content: "Advertisement";
  position: absolute;
  top: 6px;
  left: 50%;
  transform: translateX(-50%);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: rgba(var(--desert-ink-rgb), .38);
  pointer-events: none;
}
/* Hide the label once a real ad fills the slot */
.pv-ad-leaderboard.pv-ad-filled::before,
.pv-ad-incontent.pv-ad-filled::before,
.pv-ad-sticky.pv-ad-filled::before {
  display: none;
}
/* Empty slots collapse to zero height — no blank boxes */
.pv-ad-leaderboard:empty,
.pv-ad-incontent:empty {
  display: none;
}

/* 1. Leaderboard under nav — 728x90 desktop */
.pv-ad-leaderboard {
  width: 728px;
  max-width: 100%;
  height: 90px;
  margin: 16px auto;
}

/* 2. Watch layout: player + sticky sidebar */
.pv-watchrow {
  display: flex;
  gap: 20px;
  align-items: flex-start;
  margin-top: 16px;
}
.pv-watchmain {
  flex: 1;
  min-width: 0;
}
.pv-watchside {
  flex: 0 0 300px;
  width: 300px;
}
.pv-ad-sticky {
  width: 300px;
  height: 250px;
  position: sticky;
  top: 76px;
}

/* 3. In-content ad below player */
.pv-ad-incontent {
  width: 100%;
  min-height: 120px;
  margin: 20px 0;
}

/* More-films rail inside modal */
.pv-morelikethis {
  margin-top: 8px;
}
.pv-morelikethis__t {
  font-size: 16px;
  font-weight: 800;
  letter-spacing: -.01em;
  color: var(--desert-ink);
  margin: 0 0 12px;
}

/* Watch layout needs room for player + 300px sticky sidebar */
.pv-modal__panel:has(.pv-watchrow) {
  max-width: 1080px;
}

/* Mobile (390px): leaderboard -> 320x50, sidebar stacks below player */
@media (max-width: 640px) {
  .pv-ad-leaderboard {
    width: 320px;
    height: 50px;
    margin: 12px auto;
  }
  .pv-watchrow {
    flex-direction: column;
  }
  .pv-watchside {
    flex: none;
    width: 100%;
  }
  .pv-ad-sticky {
    position: static;
    width: 300px;
    max-width: 100%;
    height: 250px;
    margin: 0 auto;
  }
}

/* Design-system bridge (2026-10-08): movie posters keep 2/3 art inside ds-media-card; ds-media-card supplies border/radius/type. */
.ds-media-card .pv-card__art,.ds-media-card .pv-tile__art{aspect-ratio:2/3;border-radius:var(--pv-r-media);}
.ds-media-card .ds-media-card__body{display:block;}
/* Thumbnail uniformity (James 2026-10-08): every poster thumbnail inside the
   lanes and the grid renders at an identical 2/3 frame with a cover crop —
   same size, side by side, on every row. Scoped to the content hosts so it
   covers current and future card markup and outranks generic design-system
   img rules (e.g. .ds-media-card img 16/10). */
#lanes img,#allGrid img{width:100%;aspect-ratio:2/3;object-fit:cover;}
@media (max-width:700px){
  .pv-grid{gap:var(--pv-s4) var(--pv-s3);}
  .pv-modal__panel{padding:20px 16px;border-radius:20px;}
  .pv-modal__head{gap:14px;}
  .pv-modal__art{width:84px;height:84px;border-radius:14px;}
}

/* ---- browse bar: genre pills + year/sort/count/clear (James 2026-10-11) ---- */
.pv-browsebar{margin:0 0 var(--pv-s6)}
.pv-pills{display:flex;gap:10px;overflow-x:auto;padding:4px 2px 10px;scrollbar-width:thin;-webkit-overflow-scrolling:touch}
.pv-pills .pv-pill{flex:none;white-space:nowrap}
.pv-browsebar__controls{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-top:6px}
.pv-browsebar__ctl{display:inline-flex;align-items:center;gap:8px}
.pv-browsebar__ctl .pv-filterlabel{margin:0}
.pv-gridcount{margin-left:auto;font-size:13.5px;color:var(--pv-ivory-dim);white-space:nowrap}
.pv-btn--sm{padding:8px 14px;font-size:13px}
@media (max-width:767px){
  .pv-gridcount{margin-left:0;width:100%;order:99}
}

.pv-modal__fulllink{margin:2px 0 10px}.pv-modal__fulllink a{color:var(--brand-red);font-weight:800;font-size:14px;text-decoration:none}.pv-modal__fulllink a:hover{text-decoration:underline}

/* ============ LOADING SKELETONS + SERIES RAIL (2026-10-12) ============
   James: the shelf sat blank while the catalog loaded. Skeleton cards are
   baked into the HTML, so the layout paints instantly and the real cards
   swap in when the data lands — never an empty void. */
.pv-skel{pointer-events:none}
.pv-skel__art{width:100%;aspect-ratio:2/3;border-radius:20px;background-color:rgba(var(--desert-ink-rgb), .13);border:1px solid rgba(var(--desert-ink-rgb), .18);
  background:linear-gradient(100deg,rgba(var(--desert-ink-rgb), .08) 40%,rgba(var(--desert-ink-rgb), .30) 50%,rgba(var(--desert-ink-rgb), .08) 60%);
  background-size:200% 100%;animation:pvSkelPulse 1.2s ease-in-out infinite}
.pv-skel__art--wide{aspect-ratio:4/3;border-radius:16px}
.pv-skel__line{height:13px;border-radius:6px;margin-top:12px;background:rgba(var(--desert-ink-rgb), .24)}
.pv-skel__line--short{width:55%;background:rgba(var(--desert-ink-rgb), .17)}
@keyframes pvSkelPulse{0%{background-position:120% 0}100%{background-position:-80% 0}}
@media (prefers-reduced-motion: reduce){.pv-skel__art{animation:none}}
.pv-skel-note{font-size:13px;color:rgba(var(--desert-ink-rgb), .55);margin:14px 0 0}
.pv-skel-note--grid{grid-column:1 / -1;margin:0;font-size:13.5px;color:rgba(var(--desert-ink-rgb), .62)}
#pvGridMore{height:1px}

/* ---- free TV series rail on the Free landing (James 2026-10-12) ---- */
.pv-seriesrail{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:var(--pv-s6) var(--pv-s4)}
@media (max-width:1023.98px){.pv-seriesrail{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:640px){.pv-seriesrail{grid-template-columns:repeat(2,minmax(0,1fr))}}
.pv-seriescard{display:block;text-decoration:none;min-width:0;border-radius:var(--pv-r-sm);
  transition:transform .18s var(--pv-ease)}
@media(hover:hover){.pv-seriescard:hover{transform:translateY(-3px)}}
.pv-seriescard:active{transform:scale(.98)}
.pv-seriescard__art{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:16px;
  box-shadow:var(--pv-shadow-card);background:var(--pv-noir-3);transition:box-shadow .2s ease}
@media(hover:hover){.pv-seriescard:hover .pv-seriescard__art{box-shadow:0 18px 44px rgba(var(--desert-shadow-rgb), .6),0 0 34px rgba(var(--brand-red-rgb), .22)}}
.pv-seriescard__t{display:block;margin-top:12px;font-size:14.5px;font-weight:650;line-height:1.35;
  color:var(--desert-ink);white-space:normal;text-overflow:clip;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pv-seriescard__s{display:block;margin-top:3px;font-size:12.5px;font-weight:500;color:var(--pv-ivory-dim);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Skeleton veil exemption (2026-10-12): a reveal-blocked section still loading (aria-busy) must show its skeleton, never the blank veil. */
.fx .rv:has([aria-busy="true"]){opacity:1;transform:none;transition:none}

/* polish 2026-10-14: block heads stack on phones instead of squeezing
   the CTA and the filter note into one cramped row. */
@media (max-width:640px){
  .pv-block__head{flex-direction:column;align-items:flex-start;gap:10px}
}

/* polish 2026-10-14b: shelf CTA row stacks on phones; the note span
   loses its inline left margin so the stack aligns. */
@media (max-width:640px){
  .pv-browse-cta{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
  .pv-browse-cta span{margin-left:0!important}
}

/* ============ MOBILE READY-TO-PLAY FEED (James 2026-10-15) ============
   pv-feed.js cards: on phones the movies browse is a vertical stack of
   full-width cards — big 16:9 art with a play button, the film plays in
   the card. One component for /free/ and /free/browse/. House language:
   cream page, ink text, brick red actions, squared corners — no pills. */
@media (max-width:720px){
  #allGrid.pv-grid--feed{display:flex;flex-direction:column;gap:36px}
  .pv-fcard{content-visibility:auto;contain-intrinsic-size:auto 430px;min-width:0}
  .pv-fcard__stage{position:relative;aspect-ratio:16/9;border-radius:16px;overflow:hidden;background:#000;box-shadow:var(--pv-shadow-card)}
  #allGrid .pv-fcard__art{width:100%;height:100%;aspect-ratio:auto;object-fit:cover;object-position:center 22%}
  .pv-fcard__art.is-blocked{filter:grayscale(.6) brightness(.55)}
  .pv-fcard__frame{position:absolute;inset:0;width:100%;height:100%;border:0;background:#000}
  .pv-fcard__play{
    position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:3;
    width:64px;height:64px;border-radius:50%;border:0;cursor:pointer;
    background:var(--pv-red);color:var(--pv-on-red);
    display:flex;align-items:center;justify-content:center;box-shadow:var(--pv-shadow-btn);
    transition:transform .15s var(--pv-ease),background .18s ease;
  }
  .pv-fcard__play:active{transform:translate(-50%,-50%) scale(.94)}
  .pv-fcard__play svg{width:25px;height:25px;fill:currentColor;margin-left:3px}
  .pv-fcard__stage.is-playing .pv-fcard__art,
  .pv-fcard__stage.is-playing .pv-fcard__play,
  .pv-fcard__stage.is-playing .pv-fcard__tag{opacity:0;visibility:hidden}
  .pv-fcard__tag{
    position:absolute;left:10px;bottom:10px;z-index:2;
    font-size:10.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
    color:var(--desert-card);background:rgba(var(--desert-ink-rgb), .74);
    padding:6px 10px;border-radius:4px;border:1px solid rgba(var(--desert-card-rgb),.3);
  }
  .pv-fcard__na{
    position:absolute;left:10px;bottom:10px;z-index:2;
    font-size:10.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
    color:var(--desert-card);background:rgba(var(--desert-ink-rgb), .82);
    padding:6px 10px;border-radius:4px;border:1px solid rgba(var(--desert-card-rgb),.3);
  }
  .pv-fcard__stage .pvprog{position:absolute;left:0;right:0;bottom:0;z-index:2}
  .pv-fcard__body{padding-top:12px}
  .pv-fcard__t{font-family:var(--pv-serif);font-size:19px;font-weight:700;line-height:1.25;letter-spacing:var(--pv-track-tight);color:var(--desert-ink)}
  .pv-fcard__meta{margin-top:3px;font-size:13px;font-weight:600;color:var(--pv-ivory-dim)}
  .pv-fcard__pitch{margin-top:6px;font-size:13.5px;line-height:1.55;color:var(--pv-ivory-dim);
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .pv-fcard__row{display:flex;gap:10px;margin-top:12px}
  .pv-fcard__watch{
    display:inline-flex;align-items:center;justify-content:center;gap:8px;
    min-height:44px;padding:0 22px;border-radius:10px;text-decoration:none;
    background:var(--pv-red);color:var(--pv-on-red);font-weight:800;font-size:14.5px;
    box-shadow:var(--pv-shadow-btn);transition:transform .15s var(--pv-ease),background .18s ease;
  }
  .pv-fcard__watch:active{transform:scale(.97)}
  .pv-fcard__sharebtn{
    display:inline-flex;align-items:center;justify-content:center;gap:8px;
    min-height:44px;padding:0 18px;border-radius:10px;cursor:pointer;
    border:1px solid var(--pv-rule);background:transparent;color:var(--desert-ink);
    font-weight:700;font-size:14.5px;transition:transform .15s var(--pv-ease),border-color .18s ease;
  }
  .pv-fcard__sharebtn:active{transform:scale(.97)}
  .pv-fcard__sharebtn svg{width:17px;height:17px;fill:currentColor}
}
