/* ==========================================================================
   Primeflix clone — design system
   Faithful recreation of primeflix.ru (Tailwind v4 build + shadcn tokens +
   custom "anime-player" chrome). Dark-only.
   ========================================================================== */

:root {
  /* ---- theme (shadcn HSL triplets, wrapped at usage sites) ---- */
  --background: 220 25% 6%;
  --foreground: 210 40% 98%;
  --card: 220 25% 8%;
  --card-foreground: 210 40% 98%;
  --popover: 220 25% 8%;
  --popover-foreground: 210 40% 98%;
  --primary: 210 40% 98%;
  --primary-foreground: 220 25% 6%;
  --secondary: 220 20% 12%;
  --secondary-foreground: 210 40% 98%;
  --muted: 220 15% 15%;
  --muted-foreground: 215 20% 65%;
  --accent: 270 95% 65%;
  --accent-foreground: 220 25% 6%;
  --destructive: 0 84% 60%;
  --destructive-foreground: 210 40% 98%;
  --border: 220 15% 20%;
  --input: 220 15% 15%;
  --ring: 270 95% 65%;
  --radius: 0.75rem;

  /* ---- player chrome ---- */
  --player-background: 220 25% 4%;
  --player-overlay: 220 25% 8% / 0.9;
  --player-control: 220 15% 15% / 0.8;
  --player-control-hover: 220 15% 20% / 0.9;
  --player-accent: 270 95% 65%;
  --player-accent-hover: 270 95% 70%;
  --player-text: 210 40% 98%;
  --player-text-muted: 215 20% 65%;
  --player-menu-bg: 220 15% 6%;

  --gradient-player: linear-gradient(135deg, #08090d, #0e0e1b);
  --gradient-control: linear-gradient(135deg, #21242ccc, #2b303be6);
  --gradient-accent: linear-gradient(135deg, #a651fb, #c96ef7);
  --shadow-player: 0 25px 50px -12px #040506cc;
  --shadow-control: 0 10px 20px -5px #04050699;
  --shadow-glow: 0 0 30px #a651fb4d;
  --transition-smooth: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  --transition-spring: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);

  --slider-track: 0 0% 70%;
  --slider-range: var(--primary);
  --slider-thumb: 0 0% 90%;
}

/* ---- brand palette ----
   red-300 #ffa3a3 · red-400 #ff6568 · red-500 #fb2c36 · red-600 #e40014
   red-700 #bf000f · red-900 #82181a · yellow-400 #fac800 · yellow-500 #edb200
   green-400 #05df72 · green-500 #00c758 · neutral-800 #262626
   neutral-900 #171717 · neutral-950 #0a0a0a                              */

/* ============================ BASE ============================ */

*, ::before, ::after { box-sizing: border-box; border-width: 0; border-style: solid; }

* { border-color: hsl(var(--border)); }

html { line-height: 1.5; -webkit-text-size-adjust: 100%; -moz-tab-size: 4; tab-size: 4;
  font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", sans-serif;
  -webkit-tap-highlight-color: transparent; }

html, body { overflow-x: hidden; }
body { margin: 0; min-height: 100vh; background-color: #000;
  color: hsl(var(--foreground)); -webkit-font-smoothing: antialiased; }

img, video { display: block; vertical-align: middle; max-width: 100%; height: auto; }
button { font: inherit; color: inherit; background-color: transparent; cursor: pointer; padding: 0; }
button:disabled { cursor: not-allowed; }
a { color: inherit; text-decoration: none; }
h1,h2,h3,h4,h5,h6,p,figure { margin: 0; }
input, select, textarea { font: inherit; color: inherit; background: transparent; }
input::placeholder, textarea::placeholder { color: currentColor; opacity: 0.4; }
input:focus, select:focus, textarea:focus, button:focus { outline: none; }
svg { display: block; }

input:-webkit-autofill { -webkit-text-fill-color: hsl(var(--foreground));
  caret-color: hsl(var(--foreground)); -webkit-box-shadow: inset 0 0 0 1000px transparent; }

/* ============================ FLEX / GRID ============================ */

.flex { display: flex; }            .inline-flex { display: inline-flex; }
.grid { display: grid; }            .block { display: block; }            .hidden { display: none; }
.flex-col { flex-direction: column; } .flex-row { flex-direction: row; }
.flex-wrap { flex-wrap: wrap; }     .flex-nowrap { flex-wrap: nowrap; }
.flex-1 { flex: 1 1 0%; }           .flex-shrink-0, .shrink-0 { flex-shrink: 0; }
.grow { flex-grow: 1; }

.items-center { align-items: center; } .items-start { align-items: flex-start; }
.items-end { align-items: flex-end; }  .items-baseline { align-items: baseline; }
.items-stretch { align-items: stretch; }
.justify-center { justify-content: center; }  .justify-between { justify-content: space-between; }
.justify-around { justify-content: space-around; }  .justify-end { justify-content: flex-end; }
.justify-start { justify-content: flex-start; }
.self-center { align-self: center; }  .self-end { align-self: flex-end; }
.self-start { align-self: flex-start; }
.text-center { text-align: center; }  .text-left { text-align: left; } .text-right { text-align: right; }

.gap-0 { gap: 0; } .gap-0\.5 { gap: 2px; } .gap-1 { gap: 4px; } .gap-1\.5 { gap: 6px; }
.gap-2 { gap: 8px; } .gap-2\.5 { gap: 10px; } .gap-3 { gap: 12px; } .gap-3\.5 { gap: 14px; }
.gap-4 { gap: 16px; } .gap-5 { gap: 20px; } .gap-6 { gap: 24px; } .gap-8 { gap: 32px; }
.gap-10 { gap: 40px; }
.gap-x-1 { column-gap: 4px; } .gap-x-2 { column-gap: 8px; } .gap-x-3 { column-gap: 12px; }
.gap-x-5 { column-gap: 20px; } .gap-y-3 { row-gap: 12px; } .gap-y-7 { row-gap: 28px; }

.grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }

/* ============================ POSITION ============================ */
.relative { position: relative; }  .absolute { position: absolute; }
.fixed { position: fixed; }        .sticky { position: sticky; }
.inset-0 { inset: 0; } .inset-x-0 { left: 0; right: 0; } .inset-y-0 { top: 0; bottom: 0; }
.top-0 { top: 0; } .top-1 { top: 4px; } .top-2 { top: 8px; } .top-3 { top: 12px; }
.top-4 { top: 16px; } .top-6 { top: 24px; } .top-8 { top: 32px; } .top-16 { top: 64px; }
.top-20 { top: 80px; } .top-24 { top: 96px; }
.top-1\/2 { top: 50%; }
.-top-0\.5 { top: -2px; } .-top-1 { top: -4px; } .-top-2 { top: -8px; }
.right-0 { right: 0; } .right-2 { right: 8px; } .right-3 { right: 12px; }
.right-4 { right: 16px; } .right-5 { right: 20px; }
.left-0 { left: 0; } .left-2 { left: 8px; } .left-3 { left: 12px; } .left-4 { left: 16px; }
.bottom-0 { bottom: 0; } .bottom-1 { bottom: 4px; } .bottom-2 { bottom: 8px; }
.bottom-4 { bottom: 16px; } .bottom-5 { bottom: 20px; } .bottom-6 { bottom: 24px; }
.bottom-10 { bottom: 40px; } .bottom-16 { bottom: 64px; } .bottom-20 { bottom: 80px; }
.bottom-24 { bottom: 96px; }

.z-0 { z-index: 0; } .z-10 { z-index: 10; } .z-20 { z-index: 20; } .z-30 { z-index: 30; }
.z-40 { z-index: 40; } .z-50 { z-index: 50; }
.z-\[60\] { z-index: 60; } .z-\[70\] { z-index: 70; } .z-\[100\] { z-index: 100; }
.z-\[110\] { z-index: 110; } .z-\[120\] { z-index: 120; } .z-\[130\] { z-index: 130; }
.z-\[140\] { z-index: 140; } .z-\[200\] { z-index: 200; } .z-\[300\] { z-index: 300; }
.z-[10000] { z-index: 10000; } .z-[10001] { z-index: 10001; } .z-[200000] { z-index: 200000; }

/* ============================ WIDTH / HEIGHT ============================ */
.w-1 { width: 4px; } .w-1\.5 { width: 6px; } .w-2 { width: 8px; } .w-2\.5 { width: 10px; }
.w-3 { width: 12px; } .w-3\.5 { width: 14px; } .w-4 { width: 16px; } .w-5 { width: 20px; }
.w-6 { width: 24px; } .w-7 { width: 28px; } .w-8 { width: 32px; } .w-9 { width: 36px; }
.w-10 { width: 40px; } .w-11 { width: 44px; } .w-12 { width: 48px; } .w-14 { width: 56px; }
.w-16 { width: 64px; } .w-20 { width: 80px; } .w-24 { width: 96px; } .w-28 { width: 112px; }
.w-32 { width: 128px; } .w-36 { width: 144px; } .w-40 { width: 160px; } .w-44 { width: 176px; }
.w-48 { width: 192px; } .w-52 { width: 208px; } .w-56 { width: 224px; } .w-60 { width: 240px; }
.w-64 { width: 256px; } .w-72 { width: 288px; } .w-80 { width: 320px; }
.w-full { width: 100%; } .w-screen { width: 100vw; } .w-auto { width: auto; }
.w-1\/2 { width: 50%; } .w-1\/3 { width: 33.333333%; } .w-2\/3 { width: 66.666667%; }
.w-2\/5 { width: 40%; } .w-3\/5 { width: 60%; } .w-4\/5 { width: 80%; }
.min-w-0 { min-width: 0; } .min-w-[2rem] { min-width: 2rem; }
.w-\[120px\] { width: 120px; } .w-\[140px\] { width: 140px; } .w-\[150px\] { width: 150px; }
.w-\[160px\] { width: 160px; } .w-\[170px\] { width: 170px; } .w-\[180px\] { width: 180px; }
.w-\[190px\] { width: 190px; } .w-\[22\%\] { width: 22%; } .w-\[18\%\] { width: 18%; }
.w-\[15\%\] { width: 15%; } .w-\[95\%\] { width: 95%; } .w-\[5vw\] { width: 5vw; }

.max-w-none { max-width: none; } .max-w-xs { max-width: 20rem; }
.max-w-sm { max-width: 24rem; } .max-w-md { max-width: 28rem; }
.max-w-lg { max-width: 32rem; }
.max-w-xl { max-width: 36rem; } .max-w-2xl { max-width: 42rem; } .max-w-3xl { max-width: 48rem; }
.max-w-4xl { max-width: 56rem; } .max-w-5xl { max-width: 64rem; }
.max-w-6xl { max-width: 72rem; } .max-w-7xl { max-width: 80rem; }
.max-w-\[420px\] { max-width: 420px; } .max-w-\[500px\] { max-width: 500px; }

.h-1 { height: 4px; } .h-1\.5 { height: 6px; } .h-2 { height: 8px; } .h-2\.5 { height: 10px; }
.h-3 { height: 12px; } .h-3\.5 { height: 14px; } .h-4 { height: 16px; } .h-5 { height: 20px; }
.h-6 { height: 24px; } .h-7 { height: 28px; } .h-8 { height: 32px; } .h-9 { height: 36px; }
.h-10 { height: 40px; } .h-11 { height: 44px; } .h-12 { height: 48px; } .h-14 { height: 56px; }
.h-16 { height: 64px; } .h-20 { height: 80px; } .h-24 { height: 96px; } .h-28 { height: 112px; }
.h-32 { height: 128px; } .h-36 { height: 144px; } .h-40 { height: 160px; } .h-44 { height: 176px; }
.h-48 { height: 192px; } .h-52 { height: 208px; } .h-56 { height: 224px; } .h-60 { height: 240px; }
.h-64 { height: 256px; } .h-72 { height: 288px; } .h-80 { height: 320px; }
.h-auto { height: auto; } .h-full { height: 100%; } .h-screen { height: 100vh; }
.h-dvh { height: 100dvh; } .min-h-0 { min-height: 0; }
.min-h-screen { min-height: 100vh; } .min-h-[600px] { min-height: 600px; }
.h-\[88vh\] { height: 88vh; } .h-\[60vh\] { height: 60vh; } .h-\[95vh\] { height: 95vh; }
.h-\[56\.25vw\] { height: 56.25vw; }
.min-w-\[177\.78vh\] { min-width: 177.78vh; }

.aspect-video { aspect-ratio: 16 / 9; }
.aspect-square { aspect-ratio: 1 / 1; }
.aspect-\[2\/3\] { aspect-ratio: 2 / 3; }
.aspect-\[4\/3\] { aspect-ratio: 4 / 3; }
.aspect-\[3\/4\] { aspect-ratio: 3 / 4; }

.object-cover { object-fit: cover; } .object-contain { object-fit: contain; }

/* ============================ SPACING ============================ */
.p-0 { padding: 0; } .p-1 { padding: 4px; } .p-1\.5 { padding: 6px; }
.p-2 { padding: 8px; } .p-2\.5 { padding: 10px; } .p-3 { padding: 12px; }
.p-3\.5 { padding: 14px; } .p-4 { padding: 16px; } .p-5 { padding: 20px; }
.p-6 { padding: 24px; } .p-8 { padding: 32px; }

.px-0 { padding-left: 0; padding-right: 0; }
.px-1 { padding-left: 4px; padding-right: 4px; } .px-1\.5 { padding-left: 6px; padding-right: 6px; }
.px-2 { padding-left: 8px; padding-right: 8px; } .px-3 { padding-left: 12px; padding-right: 12px; }
.px-4 { padding-left: 16px; padding-right: 16px; } .px-5 { padding-left: 20px; padding-right: 20px; }
.px-6 { padding-left: 24px; padding-right: 24px; } .px-8 { padding-left: 32px; padding-right: 32px; }
.px-10 { padding-left: 40px; padding-right: 40px; }

.py-0 { padding-top: 0; padding-bottom: 0; } .py-0\.5 { padding-top: 2px; padding-bottom: 2px; }
.py-1 { padding-top: 4px; padding-bottom: 4px; } .py-1\.5 { padding-top: 6px; padding-bottom: 6px; }
.py-2 { padding-top: 8px; padding-bottom: 8px; } .py-2\.5 { padding-top: 10px; padding-bottom: 10px; }
.py-3 { padding-top: 12px; padding-bottom: 12px; } .py-4 { padding-top: 16px; padding-bottom: 16px; }
.py-5 { padding-top: 20px; padding-bottom: 20px; } .py-6 { padding-top: 24px; padding-bottom: 24px; }
.py-8 { padding-top: 32px; padding-bottom: 32px; } .py-12 { padding-top: 48px; padding-bottom: 48px; }
.py-16 { padding-top: 64px; padding-bottom: 64px; } .py-20 { padding-top: 80px; padding-bottom: 80px; }
.py-24 { padding-top: 96px; padding-bottom: 96px; }
.py-28 { padding-top: 112px; padding-bottom: 112px; } .py-32 { padding-top: 128px; padding-bottom: 128px; }

.pt-2 { padding-top: 8px; } .pt-4 { padding-top: 16px; } .pt-6 { padding-top: 24px; }
.pt-8 { padding-top: 32px; } .pt-16 { padding-top: 64px; } .pt-20 { padding-top: 80px; }
.pt-24 { padding-top: 96px; } .pt-32 { padding-top: 128px; } .pt-36 { padding-top: 144px; }
.pb-0 { padding-bottom: 0; } .pb-2 { padding-bottom: 8px; } .pb-4 { padding-bottom: 16px; }
.pb-6 { padding-bottom: 24px; } .pb-10 { padding-bottom: 40px; } .pb-16 { padding-bottom: 64px; }
.pb-20 { padding-bottom: 80px; } .pb-24 { padding-bottom: 96px; } .pb-28 { padding-bottom: 112px; }
.pb-32 { padding-bottom: 128px; }
.pr-2 { padding-right: 8px; } .pr-4 { padding-right: 16px; } .pl-3 { padding-left: 12px; }
.pl-9 { padding-left: 36px; } .pl-10 { padding-left: 40px; }

.m-0 { margin: 0; } .m-auto { margin: auto; }
.mt-0 { margin-top: 0; } .mt-0\.5 { margin-top: 2px; } .mt-1 { margin-top: 4px; }
.mt-1\.5 { margin-top: 6px; } .mt-2 { margin-top: 8px; } .mt-2\.5 { margin-top: 10px; }
.mt-3 { margin-top: 12px; } .mt-4 { margin-top: 16px; } .mt-5 { margin-top: 20px; }
.mt-6 { margin-top: 24px; } .mt-8 { margin-top: 32px; } .mt-10 { margin-top: 40px; }
.mt-12 { margin-top: 48px; }
.mb-0 { margin-bottom: 0; } .mb-1 { margin-bottom: 4px; } .mb-2 { margin-bottom: 8px; }
.mb-3 { margin-bottom: 12px; } .mb-4 { margin-bottom: 16px; } .mb-5 { margin-bottom: 20px; }
.mb-6 { margin-bottom: 24px; } .mb-8 { margin-bottom: 32px; } .mb-10 { margin-bottom: 40px; }
.ml-0 { margin-left: 0; } .ml-0\.5 { margin-left: 2px; } .ml-1 { margin-left: 4px; }
.ml-2 { margin-left: 8px; } .ml-3 { margin-left: 12px; } .ml-auto { margin-left: auto; }
.mr-0 { margin-right: 0; } .mr-1 { margin-right: 4px; } .mr-2 { margin-right: 8px; }
.mr-auto { margin-right: auto; } .mx-auto { margin-left: auto; margin-right: auto; }
.mx-1 { margin-left: 4px; margin-right: 4px; } .mx-6 { margin-left: 24px; margin-right: 24px; }
.-mt-2 { margin-top: -8px; } .-mt-4 { margin-top: -16px; } .-mt-24 { margin-top: -96px; }
.-mt-32 { margin-top: -128px; } .-mb-px { margin-bottom: -1px; }
.-mx-1 { margin-left: -4px; margin-right: -4px; }
.-mx-4 { margin-left: -16px; margin-right: -16px; } .-mx-6 { margin-left: -24px; margin-right: -24px; }

/* ============================ TYPOGRAPHY ============================ */
.text-xs { font-size: 12px; } .text-sm { font-size: 14px; }
.text-base { font-size: 16px; } .text-lg { font-size: 18px; }
.text-xl { font-size: 20px; } .text-2xl { font-size: 24px; }
.text-3xl { font-size: 30px; } .text-4xl { font-size: 36px; }
.text-5xl { font-size: 48px; } .text-6xl { font-size: 60px; }
.text-\[10px\] { font-size: 10px; } .text-\[11px\] { font-size: 11px; }
.text-\[9px\] { font-size: 9px; }
.font-normal { font-weight: 400; } .font-medium { font-weight: 500; }
.font-semibold { font-weight: 600; } .font-bold { font-weight: 700; }
.font-black { font-weight: 900; }

.leading-none { line-height: 1; } .leading-tight { line-height: 1.25; }
.leading-snug { line-height: 1.375; } .leading-relaxed { line-height: 1.625; }
.tracking-tight { letter-spacing: -0.025em; }
.tracking-wide { letter-spacing: 0.025em; }
.tracking-wider { letter-spacing: 0.05em; }
.tracking-widest { letter-spacing: 0.1em; }

.uppercase { text-transform: uppercase; } .lowercase { text-transform: lowercase; }
.italic { font-style: italic; } .underline { text-decoration: underline; }
.break-words { overflow-wrap: break-word; }
.truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.whitespace-nowrap { white-space: nowrap; }
.whitespace-pre-line { white-space: pre-line; }

.text-white { color: #fff; } .text-black { color: #000; }
.\!text-white { color: #fff !important; }
.\!text-black { color: #000 !important; }
.text-white\/30 { color: rgb(255 255 255 / 0.3); } .text-white\/40 { color: rgb(255 255 255 / 0.4); }
.text-white\/50 { color: rgb(255 255 255 / 0.5); } .text-white\/55 { color: rgb(255 255 255 / 0.55); }
.text-white\/60 { color: rgb(255 255 255 / 0.6); } .text-white\/70 { color: rgb(255 255 255 / 0.7); }
.text-white\/75 { color: rgb(255 255 255 / 0.75); } .text-white\/80 { color: rgb(255 255 255 / 0.8); }
.text-white\/85 { color: rgb(255 255 255 / 0.85); } .text-white\/90 { color: rgb(255 255 255 / 0.9); }
.text-white\/95 { color: rgb(255 255 255 / 0.95); }
.text-red-300 { color: #ffa3a3; } .text-red-400 { color: #ff6568; }
.text-red-500 { color: #fb2c36; } .text-red-600 { color: #e40014; }
.text-green-400 { color: #05df72; } .text-emerald-400 { color: #00d294; }
.text-yellow-400 { color: #fac800; } .text-yellow-500 { color: #edb200; }
.text-player-accent { color: hsl(var(--player-accent)); }
.text-player-text { color: hsl(var(--player-text)); }
.text-player-text-muted { color: hsl(var(--player-text-muted)); }

.line-clamp-1 { display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; }
.line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.line-clamp-3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.line-clamp-4 { display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.line-clamp-6 { display: -webkit-box; -webkit-line-clamp: 6; -webkit-box-orient: vertical; overflow: hidden; }

/* ============================ BACKGROUNDS ============================ */
.bg-black { background-color: #000; } .bg-white { background-color: #fff; }
.bg-transparent { background-color: transparent; }
.bg-black\/30 { background-color: rgb(0 0 0 / 0.3); } .bg-black\/40 { background-color: rgb(0 0 0 / 0.4); }
.bg-black\/50 { background-color: rgb(0 0 0 / 0.5); } .bg-black\/60 { background-color: rgb(0 0 0 / 0.6); }
.bg-black\/70 { background-color: rgb(0 0 0 / 0.7); } .bg-black\/80 { background-color: rgb(0 0 0 / 0.8); }
.bg-black\/85 { background-color: rgb(0 0 0 / 0.85); } .bg-black\/90 { background-color: rgb(0 0 0 / 0.9); }
.bg-black\/95 { background-color: rgb(0 0 0 / 0.95); }
.bg-white\/5 { background-color: rgb(255 255 255 / 0.05); }
.bg-white\/10 { background-color: rgb(255 255 255 / 0.1); }
.bg-white\/15 { background-color: rgb(255 255 255 / 0.15); }
.bg-white\/20 { background-color: rgb(255 255 255 / 0.2); }
.bg-white\/30 { background-color: rgb(255 255 255 / 0.3); }
.bg-white\/40 { background-color: rgb(255 255 255 / 0.4); }
.bg-white\/\[0\.02\] { background-color: rgb(255 255 255 / 0.02); }
.bg-white\/\[0\.03\] { background-color: rgb(255 255 255 / 0.03); }
.bg-white\/\[0\.04\] { background-color: rgb(255 255 255 / 0.04); }
.bg-white\/\[0\.06\] { background-color: rgb(255 255 255 / 0.06); }
.bg-red-500 { background-color: #fb2c36; } .bg-red-600 { background-color: #e40014; }
.bg-red-700 { background-color: #bf000f; }
.bg-red-600\/90 { background-color: rgb(228 0 20 / 0.9); }
.bg-red-500\/20 { background-color: rgb(251 44 54 / 0.2); }
.bg-red-600\/15 { background-color: rgb(228 0 20 / 0.15); }
.bg-neutral-800 { background-color: #262626; } .bg-neutral-900 { background-color: #171717; }
.bg-neutral-950 { background-color: #0a0a0a; }
.bg-neutral-900\/90 { background-color: rgb(23 23 23 / 0.9); }
.bg-neutral-900\/80 { background-color: rgb(23 23 23 / 0.8); }
.bg-gray-900\/95 { background-color: rgb(17 24 39 / 0.95); }
.bg-muted { background-color: hsl(var(--muted)); }
.bg-player-background { background-color: hsl(var(--player-background)); }
.bg-player-control { background-color: hsl(var(--player-control)); }
.bg-player-control-hover { background-color: hsl(var(--player-control-hover)); }
.bg-player-accent { background-color: hsl(var(--player-accent)) !important; }
.bg-player-accent\/20 { background-color: hsl(var(--player-accent) / 0.2) !important; }
.bg-player-menu-bg { background-color: hsl(var(--player-menu-bg)); }
.bg-player-overlay { background-color: hsl(var(--player-overlay)); }
.bg-gradient-player { background-image: var(--gradient-player); }
.bg-gradient-accent { background-image: var(--gradient-accent); }
.bg-green-500 { background-color: #00c758; }

/* ============================ GRADIENTS ============================ */
.bg-gradient-to-t { background-image: linear-gradient(to top, var(--tw-gradient-stops)); }
.bg-gradient-to-b { background-image: linear-gradient(to bottom, var(--tw-gradient-stops)); }
.bg-gradient-to-r { background-image: linear-gradient(to right, var(--tw-gradient-stops)); }
.bg-gradient-to-l { background-image: linear-gradient(to left, var(--tw-gradient-stops)); }
.bg-gradient-to-br { background-image: linear-gradient(to bottom right, var(--tw-gradient-stops)); }
.bg-gradient-to-tl { background-image: linear-gradient(to top left, var(--tw-gradient-stops)); }
.bg-gradient-to-bl { background-image: linear-gradient(to bottom left, var(--tw-gradient-stops)); }

.from-black { --tw-gradient-from: #000; --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(0 0 0 / 0)); }
.from-black\/80 { --tw-gradient-from: rgb(0 0 0 / 0.8); --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(0 0 0 / 0)); }
.from-black\/90 { --tw-gradient-from: rgb(0 0 0 / 0.9); --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(0 0 0 / 0)); }
.from-black\/95 { --tw-gradient-from: rgb(0 0 0 / 0.95); --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(0 0 0 / 0)); }
.from-white { --tw-gradient-from: #fff; --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(255 255 255 / 0)); }
.from-red-500 { --tw-gradient-from: #fb2c36; --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(251 44 54 / 0)); }
.from-red-600 { --tw-gradient-from: #e40014; --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to, rgb(228 0 20 / 0)); }

.via-black { --tw-gradient-stops: var(--tw-gradient-from), #000, var(--tw-gradient-to, rgb(0 0 0 / 0)); }
.via-black\/20 { --tw-gradient-stops: var(--tw-gradient-from), rgb(0 0 0 / 0.2), var(--tw-gradient-to, rgb(0 0 0 / 0)); }
.via-black\/30 { --tw-gradient-stops: var(--tw-gradient-from), rgb(0 0 0 / 0.3), var(--tw-gradient-to, rgb(0 0 0 / 0)); }
.via-black\/40 { --tw-gradient-stops: var(--tw-gradient-from), rgb(0 0 0 / 0.4), var(--tw-gradient-to, rgb(0 0 0 / 0)); }
.via-black\/60 { --tw-gradient-stops: var(--tw-gradient-from), rgb(0 0 0 / 0.6), var(--tw-gradient-to, rgb(0 0 0 / 0)); }
.via-black\/70 { --tw-gradient-stops: var(--tw-gradient-from), rgb(0 0 0 / 0.7), var(--tw-gradient-to, rgb(0 0 0 / 0)); }

.to-transparent { --tw-gradient-to: rgb(0 0 0 / 0); --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); }
.to-black { --tw-gradient-to: #000; }
.to-black\/90 { --tw-gradient-to: rgb(0 0 0 / 0.9); }
.to-red-900 { --tw-gradient-to: #82181a; }

/* ============================ BORDERS / RADIUS ============================ */
.border { border-width: 1px; } .border-0 { border-width: 0; } .border-2 { border-width: 2px; }
.border-4 { border-width: 4px; }
.border-t { border-top-width: 1px; } .border-b { border-bottom-width: 1px; }
.border-l { border-left-width: 1px; } .border-r { border-right-width: 1px; }
.border-t-2 { border-top-width: 2px; } .border-b-2 { border-bottom-width: 2px; }
.border-l-4 { border-left-width: 4px; }
.border-white\/5 { border-color: rgb(255 255 255 / 0.05); }
.border-white\/10 { border-color: rgb(255 255 255 / 0.1); }
.border-white\/15 { border-color: rgb(255 255 255 / 0.15); }
.border-white\/20 { border-color: rgb(255 255 255 / 0.2); }
.border-white\/30 { border-color: rgb(255 255 255 / 0.3); }
.border-white { border-color: #fff; }
.border-black\/10 { border-color: rgb(0 0 0 / 0.1); }
.border-red-500 { border-color: #fb2c36; }
.border-red-500\/50 { border-color: rgb(251 44 54 / 0.5); }
.border-red-500\/40 { border-color: rgb(251 44 54 / 0.4); }
.border-red-600\/40 { border-color: rgb(228 0 20 / 0.4); }
.border-player-accent { border-color: hsl(var(--player-accent)); }
.border-transparent { border-color: transparent; }
.border-b-white\/10 { border-bottom-color: rgb(255 255 255 / 0.1); }

.rounded-none { border-radius: 0; } .rounded-sm { border-radius: 0.25rem; }
.rounded { border-radius: 0.25rem; } .rounded-md { border-radius: 0.5rem; }
.rounded-lg { border-radius: 0.75rem; } .rounded-xl { border-radius: 1rem; }
.rounded-2xl { border-radius: 1.25rem; } .rounded-3xl { border-radius: 1.5rem; }
.rounded-full { border-radius: 9999px; }
.rounded-b-md { border-bottom-left-radius: 0.5rem; border-bottom-right-radius: 0.5rem; }
.rounded-b-lg { border-bottom-left-radius: 0.75rem; border-bottom-right-radius: 0.75rem; }
.rounded-t-xl { border-top-left-radius: 1rem; border-top-right-radius: 1rem; }
.rounded-b-xl { border-bottom-left-radius: 1rem; border-bottom-right-radius: 1rem; }
.rounded-t-md { border-top-left-radius: 0.5rem; border-top-right-radius: 0.5rem; }
.rounded-b-2xl { border-bottom-left-radius: 1.25rem; border-bottom-right-radius: 1.25rem; }

/* ============================ SHADOW ============================ */
.shadow-sm { box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); }
.shadow-md { box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); }
.shadow-lg { box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); }
.shadow-xl { box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); }
.shadow-2xl { box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25); }
.shadow-none { box-shadow: none; }
.shadow-player { box-shadow: var(--shadow-player); }
.shadow-red-900\/40 { box-shadow: 0 10px 15px -3px rgb(130 24 26 / 0.4), 0 4px 6px -4px rgb(130 24 26 / 0.4); }
.shadow-\[0_0_30px_-5px_rgba\(220\,38\,38\,0\.6\)\] { box-shadow: 0 0 30px -5px rgb(220 38 38 / 0.6); }

/* ============================ OVERFLOW / SCROLL ============================ */
.overflow-hidden { overflow: hidden; } .overflow-visible { overflow: visible; }
.overflow-x-auto { overflow-x: auto; } .overflow-y-auto { overflow-y: auto; }
.overflow-x-hidden { overflow-x: hidden; }
.no-scrollbar::-webkit-scrollbar { display: none; }
.no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }
.snap-x { scroll-snap-type: x mandatory; }
.snap-start { scroll-snap-align: start; }
.touch-pan-y { touch-action: pan-y; }

/* ============================ OPACITY / TRANSITIONS ============================ */
.opacity-0 { opacity: 0; } .opacity-60 { opacity: 0.6; } .opacity-70 { opacity: 0.7; }
.opacity-80 { opacity: 0.8; } .opacity-90 { opacity: 0.9; } .opacity-100 { opacity: 1; }
.transition { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; }
.transition-opacity { transition-property: opacity; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; }
.transition-transform { transition-property: transform; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; }
.transition-colors { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; }
.transition-all { transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; }
.transition-smooth { transition: var(--transition-smooth); }
.duration-150 { transition-duration: 150ms; } .duration-200 { transition-duration: 200ms; }
.duration-300 { transition-duration: 300ms; } .duration-500 { transition-duration: 500ms; }
.duration-700 { transition-duration: 700ms; } .duration-1000 { transition-duration: 1000ms; }
.ease-out { transition-timing-function: cubic-bezier(0, 0, 0.2, 1); }
.ease-in-out { transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); }

/* ============================ BLUR ============================ */
.backdrop-blur { backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); }
.backdrop-blur-sm { backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); }
.backdrop-blur-md { backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); }
.backdrop-blur-lg { backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); }
.backdrop-blur-xl { backdrop-filter: blur(24px); -webkit-backdrop-filter: blur(24px); }
.backdrop-blur-\[2px\] { backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(2px); }

/* ============================ CURSOR / POINTER ============================ */
.cursor-pointer { cursor: pointer; } .cursor-default { cursor: default; }
.cursor-not-allowed { cursor: not-allowed; }
.pointer-events-none { pointer-events: none; } .pointer-events-auto { pointer-events: auto; }

/* ============================ TRANSFORM ============================ */
.translate-x-1\/2 { transform: translateX(50%); }
.-translate-x-1\/2 { transform: translateX(-50%); }
.-translate-y-1\/2 { transform: translateY(-50%); }
.-translate-x-1\/2.-translate-y-1\/2 { transform: translate(-50%, -50%); }
.translate-y-0 { transform: translateY(0); } .translate-y-full { transform: translateY(100%); }
.translate-y-4 { transform: translateY(16px); }
.rotate-180 { transform: rotate(180deg); } .-rotate-180 { transform: rotate(-180deg); }
.scale-105 { transform: scale(1.05); } .scale-110 { transform: scale(1.1); }
.scale-\[1\.03\] { transform: scale(1.03); }
.scale-95 { transform: scale(0.95); }

/* ============================ ANIMATIONS ============================ */
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes spin-reverse { 0% { transform: rotate(0); } to { transform: rotate(-360deg); } }
@keyframes spin-forward { 0% { transform: rotate(0); } to { transform: rotate(360deg); } }
@keyframes pulse { 50% { opacity: 0.5; } }
@keyframes ping { 75%, 100% { opacity: 0; transform: scale(2); } }
@keyframes enter { from { opacity: var(--enter-opacity, 0); transform: translate3d(var(--enter-x, 0), var(--enter-y, 0), 0) scale3d(var(--enter-scale, 1), var(--enter-scale, 1), var(--enter-scale, 1)); } }
@keyframes fade-in { from { opacity: 0; } }
@keyframes zoom-in { from { opacity: 0; transform: scale(0.95); } }
@keyframes slide-up { from { opacity: 0; transform: translateY(16px); } }
@keyframes caret-blink { 0%, 70%, 100% { opacity: 1; } 20%, 50% { opacity: 0; } }

.animate-spin { animation: spin 1s linear infinite; }
.animate-pulse { animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; }
.animate-ping { animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; }
.animate-in { animation-duration: 150ms; animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1); animation-name: enter; }
.fade-in { animation: fade-in 0.2s ease-out both; }
.fade-in-0 { animation-name: fade-in; --enter-opacity: 0; }
.fade-in-0 { animation: fade-in 200ms ease-out both; }
.fade-out-0 { animation: fade-in 150ms ease-out reverse both; }
.zoom-in-95 { --enter-scale: 0.95; }
.zoom-in-90 { --enter-scale: 0.9; }
.zoom-in-95.animate-in { animation-name: enter; }
.slide-in-from-bottom-2 { --enter-y: 8px; }
.slide-in-from-top-2 { --enter-y: -8px; }
.slide-in-from-left-2 { --enter-x: -8px; }
.slide-up { animation: slide-up 0.25s cubic-bezier(0.16, 1, 0.3, 1) both; }
.animate-\[spin-forward_0\.7s_ease-out\] { animation: 0.7s ease-out spin-forward; }
.animate-\[spin-reverse_0\.7s_ease-out\] { animation: 0.7s ease-out spin-reverse; }
.animate-caret-blink { animation: 1.25s ease-out infinite caret-blink; }
.spin-once { animation: spin-forward 0.6s ease-out; }

/* ============================ COMPONENTS ============================ */

/* --- Scrollbar for vertical panels (keep visible but styled) --- */
.thin-scroll::-webkit-scrollbar { width: 8px; }
.thin-scroll::-webkit-scrollbar-thumb { background: rgb(255 255 255 / 0.15); border-radius: 8px; }
.thin-scroll::-webkit-scrollbar-track { background: transparent; }

/* --- App background --- */
.app-shell { min-height: 100vh; background: #000; color: #fff; }

/* --- Header --- */
.site-header { position: absolute; top: 0; left: 0; right: 0; z-index: 50; display: flex; align-items: center; justify-content: space-between;
  padding: 16px 24px; background-image: linear-gradient(to bottom, rgb(0 0 0 / 0.8), rgb(0 0 0 / 0.4), transparent);
  background-color: transparent; pointer-events: none; }
.site-header > * { pointer-events: auto; }
@media (min-width: 1024px) { .site-header { padding: 16px 40px; } }

/* --- Nav pill --- */
.nav-pill { display: inline-flex; align-items: center; gap: 6px; padding: 8px 12px; border-radius: 9999px; transition: background-color 150ms; font-size: 14px; }
.nav-pill:hover { background-color: rgb(255 255 255 / 0.1); }
.nav-pill.disabled { opacity: 0.85; cursor: not-allowed; }
.nav-pill.disabled:hover { background-color: transparent; }
.nav-pill.active { background-color: rgb(255 255 255 / 0.1); }
.nav-icon { width: 16px; height: 16px; flex-shrink: 0; }

/* --- Buttons --- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; border-radius: 9999px; font-weight: 600;
  transition: background-color 150ms, color 150ms, border-color 150ms, opacity 150ms, transform 150ms; white-space: nowrap; }
.btn-white { background: #fff; color: #000; }
.btn-white:hover { background: rgb(255 255 255 / 0.9); }
.btn-ghost { background-color: rgb(255 255 255 / 0.1); }
.btn-ghost:hover { background-color: rgb(255 255 255 / 0.2); }
.btn-red { background-color: #e40014; color: #fff; }
.btn-red:hover { background-color: #bf000f; }
.btn-icon { display: inline-flex; align-items: center; justify-content: center; border-radius: 9999px; flex-shrink: 0; transition: background-color 150ms; }

/* --- Row scroller arrows --- */
.row-arrow { width: 40px; height: 40px; border-radius: 9999px; background-color: rgb(0 0 0 / 0.7); display: inline-flex; align-items: center; justify-content: center;
  transition: background-color 150ms; flex-shrink: 0; }
.row-arrow:hover { background-color: rgb(0 0 0 / 0.9); }
.row-heading { display: flex; align-items: center; gap: 8px; }

/* --- Home hero — TOP 10 Today slider (port of the reference U component) --- */
.hero-root { position: relative; width: 100%; height: 88vh; min-height: 600px; overflow: hidden; background: #000; touch-action: pan-y; outline: none; }
.hero-root:focus { outline: none; }
.hero-root:focus-visible { outline: 2px solid rgb(255 255 255 / 0.4); outline-offset: -2px; }

/* Stacked backdrops crossfade in place (no blank slide / wrong image) */
.hero-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 1000ms ease; will-change: opacity; }
.hero-bg.is-active { opacity: 1; }

/* Two layered gradients: bottom fade + left vignette */
.hero-shade { position: absolute; inset: 0; pointer-events: none; }
.hero-shade::before { content: ""; position: absolute; inset: 0; background-image: linear-gradient(to top, #000 0%, rgb(0 0 0 / 0.4) 45%, transparent 100%); }
.hero-shade::after { content: ""; position: absolute; inset: 0; background-image: linear-gradient(to right, rgb(0 0 0 / 0.8) 0%, rgb(0 0 0 / 0.2) 55%, transparent 100%); }

.hero-inner { position: relative; z-index: 10; height: 100%; display: flex; align-items: flex-end; max-width: 48rem; padding: 7rem 1.5rem 8rem; }
.hero-content { width: 100%; }

.hero-title { margin: 0 0 1rem; color: #fff; font-weight: 900; text-transform: uppercase; letter-spacing: -0.025em; line-height: 1.1; }
.hero-title.sz-1 { font-size: 1.5rem; }
.hero-title.sz-2 { font-size: 1.25rem; }
.hero-title.sz-3 { font-size: 1.125rem; }
.hero-title.sz-4 { font-size: 1rem; }

.hero-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 0.75rem; margin: 0 0 1rem; color: rgb(255 255 255 / 0.8); font-size: 0.875rem; }
.hero-rating { display: inline-flex; align-items: center; gap: 0.25rem; }
.hero-star { width: 1rem; height: 1rem; fill: #ef4444; color: #ef4444; }
.hero-genres { display: contents; }
.hero-meta .sep { width: 4px; height: 4px; border-radius: 9999px; background: rgb(255 255 255 / 0.4); flex-shrink: 0; }

.hero-overview { margin: 0 0 1.5rem; max-width: 36rem; color: rgb(255 255 255 / 0.85); font-size: 1rem; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }

.hero-actions { display: flex; align-items: center; gap: 0.75rem; }
.hero-play { display: inline-flex; align-items: center; justify-content: center; width: 2.5rem; height: 2.5rem; border-radius: 9999px; background: #fff; color: #000; font-weight: 600; transition: background-color 150ms; }
.hero-play:hover { background: rgb(255 255 255 / 0.9); }
.hero-play-icon { width: 1.25rem; height: 1.25rem; fill: #000; color: #000; }
.hero-play-label { display: none; }
.hero-more { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.75rem 1.5rem; border-radius: 9999px; background: rgb(255 255 255 / 0.1);
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); color: #fff; font-weight: 600; transition: background-color 150ms; }
.hero-more:hover { background: rgb(255 255 255 / 0.2); }
.hero-more-icon { width: 1rem; height: 1rem; }

.hero-indicators { display: flex; gap: 0.375rem; margin-top: 1.5rem; }
.hero-indicator { height: 4px; width: 1rem; padding: 0; border: 0; border-radius: 9999px; background: rgb(255 255 255 / 0.4); cursor: pointer;
  transition: width 200ms, background-color 200ms; }
.hero-indicator.is-active { width: 2rem; background: #ef4444; }

/* Loading skeleton — same box height as .hero-root so there is no layout jump */
.hero-skel-bg { position: absolute; inset: 0; background: #171717; }
.hero-skel-line { height: 1rem; border-radius: 0.375rem; background: rgb(255 255 255 / 0.1); margin-bottom: 0.9rem; }
.hero-skel-line.lg { height: 2.75rem; width: 72%; }
.hero-skel-line.sm { width: 14rem; }
.hero-skel-btn { height: 2.75rem; width: 9rem; border-radius: 9999px; background: rgb(255 255 255 / 0.1); margin-top: 0.5rem; }

/* Rows overlap the hero's bottom gradient (reference: main -mt-24 z-10) */
.home-rows { position: relative; z-index: 10; margin-top: -6rem; padding-bottom: 6rem; }

@media (min-width: 640px) {
  .hero-play { width: auto; height: auto; gap: 0.5rem; padding: 0.75rem 1.5rem; }
  .hero-play-label { display: inline; }
  .hero-play-icon { width: 1rem; height: 1rem; }
  .hero-title.sz-1 { font-size: 2.25rem; }
  .hero-title.sz-2 { font-size: 1.875rem; }
  .hero-title.sz-3 { font-size: 1.5rem; }
  .hero-title.sz-4 { font-size: 1.25rem; }
}
@media (min-width: 768px) {
  .hero-overview { font-size: 1.125rem; }
  .hero-title.sz-1 { font-size: 3.75rem; }
  .hero-title.sz-2 { font-size: 3rem; }
  .hero-title.sz-3 { font-size: 2.25rem; }
  .hero-title.sz-4 { font-size: 1.875rem; }
}
@media (min-width: 1024px) { .hero-inner { padding-left: 3rem; padding-right: 3rem; } }
@media (max-width: 480px) { .hero-root { height: 80vh; min-height: 480px; } .hero-inner { padding-bottom: 6rem; } }

/* --- Card hover zoom (hover-capable devices only) --- */
@media (hover: hover) {
  .group:hover .group-hover\:scale-\[1\.03\] { transform: scale(1.03); }
  .group\/card:hover .group-hover\/card\:scale-\[1\.03\] { transform: scale(1.03); }
  .group\/card:hover .group-hover\/card\:scale-105 { transform: scale(1.05); }
  .group:hover .group-hover\:scale-105 { transform: scale(1.05); }
  .group:hover .group-hover\:opacity-90 { opacity: 0.9; }
  .group:hover .group-hover\:opacity-100 { opacity: 1; }
  .group\/card:hover .group-hover\/card\:opacity-100 { opacity: 1; }
  .group:hover .group-hover\:translate -none { transform: none; }
  .group\/card:hover .group-hover\/card\:shadow-lg { box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.4); }
}

/* hover micro-helpers (also only meaningful on hover devices) */
.hover\:bg-white\/5:hover { background-color: rgb(255 255 255 / 0.05); }
.hover\:bg-white\/10:hover { background-color: rgb(255 255 255 / 0.1); }
.hover\:bg-white\/20:hover { background-color: rgb(255 255 255 / 0.2); }
.hover\:bg-white\/15:hover { background-color: rgb(255 255 255 / 0.15); }
.hover\:bg-white\/\[0\.04\]:hover { background-color: rgb(255 255 255 / 0.04); }
.hover\:bg-white\/\[0\.06\]:hover { background-color: rgb(255 255 255 / 0.06); }
.hover\:bg-white\/\[0\.08\]:hover { background-color: rgb(255 255 255 / 0.08); }
.hover\:bg-black\/60:hover { background-color: rgb(0 0 0 / 0.6); }
.hover\:bg-black\/70:hover { background-color: rgb(0 0 0 / 0.7); }
.hover\:bg-black\/80:hover { background-color: rgb(0 0 0 / 0.8); }
.hover\:bg-red-600:hover { background-color: #e40014; }
.hover\:bg-red-700:hover { background-color: #bf000f; }
.hover\:bg-red-500:hover { background-color: #fb2c36; }
.hover\:bg-player-control-hover:hover { background-color: hsl(var(--player-control-hover)); }
.hover\:text-white:hover { color: #fff; }
.hover\:text-red-400:hover { color: #ff6568; }
.hover\:border-red-500\/50:hover { border-color: rgb(251 44 54 / 0.5); }
.hover\:opacity-90:hover { opacity: 0.9; }
.hover\:scale-105:hover { transform: scale(1.05); }
.hover\:scale-\[1\.03\]:hover { transform: scale(1.03); }
.hover\:text-player-text:hover { color: hsl(var(--player-text)); }
.hover\:text-player-accent-hover:hover { color: hsl(var(--player-accent-hover)); }

/* --- Dialog overlay / content --- */
.dialog-overlay { position: fixed; inset: 0; z-index: 200; background: rgb(0 0 0 / 0.8); animation: fade-in 150ms ease-out both; }
.dialog-content { position: fixed; left: 50%; top: 50%; z-index: 200; width: 100%; max-width: 32rem; transform: translate(-50%, -50%);
  border: 1px solid hsl(var(--border)); background: hsl(var(--background)); box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.5);
  animation: zoom-in 200ms cubic-bezier(0.16, 1, 0.3, 1) both; color: hsl(var(--foreground)); }

/* --- Dropdown menu --- */
.dropdown-panel { position: absolute; z-index: 60; min-width: 12rem; border: 1px solid rgb(255 255 255 / 0.1);
  background: #171717; color: #fff; border-radius: 0.75rem; padding: 4px; box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.3), 0 8px 10px -6px rgb(0 0 0 / 0.3);
  animation: zoom-in 150ms cubic-bezier(0.16, 1, 0.3, 1) both; }
.dropdown-item { display: flex; align-items: center; gap: 8px; width: 100%; padding: 8px 10px; border-radius: 0.5rem; font-size: 14px; cursor: pointer;
  transition: background-color 150ms; }
.dropdown-item:hover { background-color: rgb(255 255 255 / 0.08); }
.dropdown-item.active { background-color: rgb(255 255 255 / 0.1); }
.dropdown-item[data-highlighted] { background-color: #e40014; }

/* --- Bottom sheet (mobile) --- */
.sheet-backdrop { position: fixed; inset: 0; z-index: 100; background: rgb(0 0 0 / 0.6); animation: fade-in 200ms ease-out both; }
.sheet-panel { position: fixed; left: 0; right: 0; bottom: 0; top: auto; max-height: 85vh; overflow-y: auto; z-index: 110;
  background: #0a0a0a; border: 1px solid rgb(255 255 255 / 0.1); border-bottom: none; border-radius: 1.25rem 1.25rem 0 0; padding: 16px;
  animation: slide-up 250ms cubic-bezier(0.16, 1, 0.3, 1) both; }

/* --- Account drawer (right) --- */
.drawer-backdrop { position: fixed; inset: 0; z-index: 100; background: rgb(0 0 0 / 0.6); animation: fade-in 200ms ease-out both; }
.drawer-panel { position: fixed; top: 0; right: 0; bottom: 0; z-index: 110; width: 100%; max-width: 26rem; background: #0a0a0a;
  border-left: 1px solid rgb(255 255 255 / 0.1); padding: 24px; overflow-y: auto; animation: slide-in-right 250ms cubic-bezier(0.16, 1, 0.3, 1) both; }
@keyframes slide-in-right { from { transform: translateX(100%); } to { transform: translateX(0); } }

/* --- Search timeline row transition --- */
.row-enter { animation: fade-in 200ms ease-out both; }

/* --- Episode list open transition --- */
.ep-open { animation: slide-up 200ms ease-out both; }
.ep-rotated { transform: rotate(180deg); }

/* --- Skeleton shimmer --- */
.skeleton { background: #171717; animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; }

/* --------------------------- PLAYER --------------------------- */
.player-root { position: relative; width: 100%; height: 100%; background-image: var(--gradient-player); box-shadow: var(--shadow-player); overflow: hidden; }
.player-root.fullscreen { background: #000; box-shadow: none; }
.player-root:has(.player-controls.hidden-ctrl) { cursor: none; }

.player-video-wrap { position: relative; z-index: 0; width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; background: #000; }
.player-video { width: 100%; aspect-ratio: 4 / 3; object-fit: contain; background: transparent; }
.player-root.fullscreen .player-video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; }

.player-poster { position: absolute; inset: 0; z-index: 10; background-size: cover; background-position: center; background-repeat: no-repeat; }
.player-loader { position: absolute; inset: 0; z-index: 30; display: flex; align-items: center; justify-content: center; background: rgb(0 0 0 / 0.4); }
.player-loader svg { color: #fff; }

.player-error { position: absolute; inset: 0; z-index: 40; display: none; flex-direction: column; align-items: center; justify-content: center;
  gap: 16px; padding: 24px; text-align: center; background: rgb(0 0 0 / 0.75); }
.player-error.flex { display: flex; }
.player-error.hidden { display: none !important; }
.player-error-icon { color: rgb(255 255 255 / 0.35); }
.player-error-icon svg { width: 48px; height: 48px; }
.player-error-text { color: rgb(255 255 255 / 0.75); font-size: 14px; max-width: 360px; }

.player-controls { position: absolute; bottom: 0; left: 0; right: 0; z-index: 50; pointer-events: none;
  transition: transform 300ms, opacity 300ms; }
.player-controls.visible { transform: translateY(0); opacity: 1; }
.player-controls.hidden-ctrl { transform: translateY(100%); opacity: 0; }
.player-controls .bar-grad { background-image: linear-gradient(to top, rgb(0 0 0 / 0.85), transparent); padding-top: 32px; }

.player-btn { color: hsl(var(--player-accent)); transition: color 150ms; display: inline-flex; align-items: center; justify-content: center;
  flex-shrink: 0; height: 32px; min-width: 32px; padding: 4px; }
.player-btn:hover { color: hsl(var(--player-accent-hover)); }
.player-btn svg { width: 24px; height: 24px; }
@media (min-width: 640px) { .player-btn { height: 36px; min-width: 36px; } .player-btn svg { width: 28px; height: 28px; } }
@media (min-width: 768px) { .player-btn { height: 40px; min-width: 40px; } .player-btn svg { width: 32px; height: 32px; } }
@media (min-width: 1024px) { .player-btn { height: 48px; min-width: 48px; } .player-btn svg { width: 36px; height: 36px; } }

/* only shown on lg+ (rewind/forward live in row on desktop, in center on mobile) */
.only-lg { display: none; }
@media (min-width: 1024px) { .only-lg { display: inline-flex; } }

.seekbar-wrap { width: 95%; margin: 0 auto; pointer-events: auto; }
.seekbar { position: relative; height: 32px; display: flex; align-items: center; cursor: pointer; touch-action: none; }
.seekbar-track { position: relative; width: 100%; height: 6px; border-radius: 9999px; background: hsl(0 0% 100% / 0.2); overflow: visible; transition: height 150ms; }
.seekbar:hover .seekbar-track, .seekbar.dragging .seekbar-track { height: 8px; }
.seekbar-buffer { position: absolute; inset: 0; height: 100%; background: hsl(0 0% 100% / 0.3); border-radius: 9999px; }
.seekbar-range { position: absolute; left: 0; top: 0; bottom: 0; background: hsl(var(--player-accent)); border-radius: 9999px; z-index: 10; }
.seekbar-thumb { position: absolute; top: 50%; width: 16px; height: 16px; border-radius: 9999px; background: hsl(var(--player-accent));
  border: 2px solid hsl(0 0% 100% / 0.7); transform: translate(-50%, -50%); z-index: 20; opacity: 0; pointer-events: none; box-shadow: 0 2px 8px rgb(0 0 0 / 0.4); }
.seekbar:hover .seekbar-thumb, .seekbar.dragging .seekbar-thumb { opacity: 1; }
.seekbar-tip { position: absolute; bottom: calc(100% + 8px); left: 0; padding: 4px 8px; background: rgb(0 0 0 / 0.9); color: #fff;
  font-size: 12px; border-radius: 4px; pointer-events: none; white-space: nowrap; z-index: 30; transform: translateX(-50%); }

.player-time { color: hsl(var(--player-accent)); font-size: 9px; font-weight: 700; white-space: nowrap; margin-left: 8px; flex-shrink: 0; font-variant-numeric: tabular-nums; }
@media (min-width: 640px) { .player-time { font-size: 14px; margin-left: 8px; } }
@media (min-width: 768px) { .player-time { font-size: 16px; } }

.player-bottom-row { display: flex; align-items: center; gap: 2px; width: 95%; margin: 0 auto; min-width: 0; pointer-events: auto; overflow: visible; }

.vol-wrap { display: flex; align-items: center; gap: 4px; flex-shrink: 0; }
.vol-range { display: none; }
@media (min-width: 1024px) { .vol-range { display: block; } }

/* Center overlay (play / rewind / forward) */
.center-overlay { position: absolute; inset: 0; z-index: 20; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: opacity 300ms; }
.center-overlay.off { opacity: 0; pointer-events: none; }
.center-group { display: flex; align-items: center; gap: 32px; pointer-events: auto; }
.center-seek { display: none; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: 9999px;
  background: rgb(0 0 0 / 0.4); color: #fff; transition: background-color 150ms, transform 150ms; }
.center-seek:hover { background: rgb(255 255 255 / 0.15); }
.center-seek svg { width: 24px; height: 24px; }
@media (max-width: 1023px) { .center-seek { display: inline-flex; } }
.big-play { width: 48px; height: 48px; border-radius: 9999px; background: rgb(0 0 0 / 0.5); display: inline-flex; align-items: center; justify-content: center;
  backdrop-filter: blur(4px); transition: background-color 150ms, transform 150ms; }
.big-play:hover { background: rgb(0 0 0 / 0.7); transform: scale(1.05); }
.big-play svg { width: 36px; height: 36px; margin-left: 2px; }

/* Back button */
.player-back { position: fixed; top: 16px; left: 16px; z-index: 60; display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; border-radius: 9999px; background: rgb(0 0 0 / 0.4); backdrop-filter: blur(6px); color: #fff;
  transition: opacity 300ms, background-color 150ms; cursor: pointer; }
.player-back:hover { background: rgb(255 255 255 / 0.12); }
.player-back svg { width: 20px; height: 20px; }
.player-back.off { opacity: 0; pointer-events: none; }

/* Settings panel */
.settings-panel { position: fixed; bottom: 0; left: 0; right: 0; z-index: 10001; width: 100%; height: 60vh; max-height: 100%;
  background-image: var(--gradient-player); border-top: 1px solid hsl(var(--border)); color: hsl(var(--player-text));
  box-shadow: var(--shadow-player); border-radius: 0.75rem 0.75rem 0 0; display: flex; flex-direction: column;
  backdrop-filter: blur(12px); }
.settings-panel.hidden { display: none; }
@media (orientation: landscape) and (min-width: 640px) {
  .settings-panel { border-radius: 0.75rem; width: 50%; max-width: 50%; height: 95%; max-height: 95%; margin-inline: auto; top: 2.5%; bottom: auto; border: 1px solid hsl(var(--border)); }
  .player-root:fullscreen .settings-panel { border-radius: 0.75rem; width: 50%; height: 95%; margin-inline: auto; inset: 2.5% 0 auto; }
}
.settings-head { display: flex; align-items: center; gap: 12px; padding: 8px; flex-shrink: 0; }
.settings-head-icon { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 8px;
  background: hsl(var(--player-accent) / 0.2); color: hsl(var(--player-accent)); }
.settings-head-icon svg { width: 16px; height: 16px; }
.settings-head-text { flex: 1; min-width: 0; }
.settings-head-text h3 { font-size: 14px; font-weight: 600; margin: 0; color: hsl(var(--player-text)); }
.settings-head-text p { font-size: 12px; margin: 0; color: hsl(var(--player-text-muted)); }
.settings-close { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 8px;
  color: hsl(var(--player-text)); transition: background-color 150ms; }
.settings-close:hover { background: hsl(var(--player-control-hover)); }
.settings-close svg { width: 18px; height: 18px; }
.settings-tabs { display: flex; align-items: center; gap: 8px; padding: 8px; margin: 8px; background: hsl(var(--player-control));
  border-radius: 8px; overflow-x: auto; white-space: nowrap; flex-shrink: 0; }
.settings-tab { flex-shrink: 0; padding: 6px 12px; border-radius: 6px; font-size: 14px; font-weight: 500;
  color: hsl(var(--player-text-muted)); transition: color 150ms, background-color 150ms; cursor: pointer; }
.settings-tab:hover { color: hsl(var(--player-text)); background: hsl(var(--player-control-hover)); }
.settings-tab.active { background: hsl(var(--player-accent)); color: #000; }
.settings-body { flex: 1; overflow-y: auto; padding: 8px; min-height: 0; }
.settings-list { display: flex; flex-direction: column; gap: 4px; }
.opt-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px; border-radius: 8px; cursor: pointer;
  background: hsl(var(--player-control)); transition: background-color 150ms; }
.opt-row:hover { background: hsl(var(--player-control-hover)); }
.opt-row.selected { background: hsl(var(--player-accent) / 0.2); border: 1px solid hsl(var(--player-accent)); }
.opt-label { font-size: 14px; color: hsl(var(--player-text)); }
.opt-badge { font-size: 11px; padding: 2px 6px; border-radius: 9999px; background: hsl(var(--player-accent) / 0.2); color: hsl(var(--player-accent)); }
.opt-dot { width: 8px; height: 8px; border-radius: 9999px; background: hsl(var(--player-accent)); }
.settings-note { font-size: 12px; color: hsl(var(--player-text-muted)); padding: 8px; }

/* Bottom sheets (Episodes / Servers) */
.player-sheet { position: absolute; inset: 0; z-index: 10000; display: flex; align-items: flex-end; justify-content: center; }
.player-sheet.hidden { display: none; }
.player-sheet-backdrop { position: absolute; inset: 0; background: rgb(0 0 0 / 0.5); }
.player-sheet-panel { position: relative; width: 100%; max-width: 600px; max-height: 90vh; background: hsl(var(--background));
  border: 1px solid hsl(var(--border)); border-bottom: 0; border-radius: 0.75rem 0.75rem 0 0; display: flex; flex-direction: column;
  overflow: hidden; animation: slide-up 250ms ease-out both; }
.player-sheet-head { display: flex; align-items: center; justify-content: space-between; padding: 16px; border-bottom: 1px solid hsl(var(--border));
  background: hsl(var(--card)); flex-shrink: 0; }
.player-sheet-title { display: flex; align-items: center; gap: 12px; cursor: pointer; user-select: none; }
.player-sheet-title h2 { font-size: 18px; font-weight: 600; margin: 0; }
.player-sheet-chev { color: hsl(var(--muted-foreground)); }
.player-sheet-chev svg { width: 20px; height: 20px; }
.player-sheet-head-right { display: flex; align-items: center; gap: 16px; }
.player-sheet-season { font-size: 17px; font-weight: 500; }
.player-sheet-close { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 8px;
  color: hsl(var(--foreground)); transition: background-color 150ms; }
.player-sheet-close:hover { background: hsl(var(--player-control-hover)); }
.player-sheet-close svg { width: 18px; height: 18px; }
.player-sheet-body { flex: 1; overflow-y: auto; min-height: 0; }
.player-sheet-foot { padding: 16px; border-top: 1px solid hsl(var(--border)); background: hsl(var(--card)); flex-shrink: 0; }
.player-sheet-foot .btn { border-radius: 8px; }
.btn-outline { border: 1px solid hsl(var(--border)); color: hsl(var(--foreground)); background: transparent; }
.btn-outline:hover { background: hsl(var(--player-control-hover)); }
.sheet-loading { display: flex; align-items: center; justify-content: center; padding: 32px 0; }
.season-row { padding: 16px; cursor: pointer; border-bottom: 1px solid hsl(var(--border)); transition: background-color 150ms; }
.season-row:last-child { border-bottom: 0; }
.season-row:hover { background: hsl(var(--player-control-hover)); }
.season-row.selected { border: 2px solid hsl(var(--player-accent)); background: hsl(var(--player-accent) / 0.2); }
.season-name { font-size: 15px; }
.ep-row { padding: 16px; cursor: pointer; border-left: 4px solid hsl(var(--border)); border-bottom: 1px solid hsl(var(--border));
  transition: background-color 150ms; }
.ep-row:last-child { border-bottom: 0; }
.ep-row:hover { background: hsl(var(--player-control-hover)); }
.ep-row.selected { border-left-color: hsl(var(--player-accent)); background: hsl(var(--player-accent) / 0.2); }
.ep-name { font-size: 14px; }

/* Servers sheet */
.servers-panel { position: relative; width: 100%; max-width: 448px; max-height: 90vh; background: hsl(var(--background));
  border: 1px solid hsl(var(--border)); border-bottom: 0; border-radius: 0.75rem 0.75rem 0 0; display: flex; flex-direction: column;
  overflow: hidden; animation: slide-up 250ms ease-out both; }
.servers-head { flex-shrink: 0; border-bottom: 1px solid hsl(var(--border)); background: hsl(var(--card)); }
.servers-head-row { display: flex; align-items: center; justify-content: space-between; padding: 16px; }
.servers-title { display: flex; align-items: center; gap: 12px; }
.servers-title h2 { font-size: 18px; font-weight: 600; margin: 0; }
.servers-count { display: flex; align-items: center; gap: 6px; color: hsl(var(--muted-foreground)); font-size: 14px; }
.servers-live-dot { width: 12px; height: 12px; border-radius: 9999px; background: #22c55e; }
.servers-close { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 8px;
  color: hsl(var(--foreground)); transition: background-color 150ms; }
.servers-close:hover { background: hsl(var(--player-control-hover)); }
.servers-close svg { width: 18px; height: 18px; }
.servers-list { flex: 1; overflow-y: auto; padding: 16px; max-height: calc(90vh - 120px); }
.servers-items { display: flex; flex-direction: column; gap: 8px; }
.server-item { padding: 12px; border-radius: 8px; border: 1px solid transparent; cursor: pointer; background: hsl(var(--player-menu-bg));
  transition: background-color 150ms, border-color 150ms; }
.server-item:hover { background: rgb(255 255 255 / 0.08); }
.server-item.selected { border-color: hsl(var(--player-accent)); background: hsl(var(--player-accent) / 0.2); }
.server-item.connecting { opacity: 0.7; }
.server-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.server-left { display: flex; align-items: center; gap: 10px; min-width: 0; }
.server-flag { width: 20px; height: 16px; object-fit: cover; border-radius: 4px; flex-shrink: 0; }
.server-info { min-width: 0; }
.server-name { font-size: 14px; color: hsl(var(--player-text)); }
.server-lang { font-size: 12px; color: hsl(var(--player-text-muted)); }
.server-status { display: flex; align-items: center; gap: 12px; flex-shrink: 0; }
.server-star { display: inline-flex; align-items: center; justify-content: center; color: #9ca3af; transition: transform 150ms, color 150ms; }
.server-star:hover { transform: scale(1.1); }
.server-star svg { width: 16px; height: 16px; }
.server-star.starred { color: #facc15; }
.server-star.starred svg path { fill: #facc15; }
.server-status-badge { display: flex; align-items: center; gap: 6px; }
.server-dot { width: 8px; height: 8px; border-radius: 9999px; }
.server-dot.valid { background: #22c55e; }
.server-dot.failed { background: #ef4444; }
.server-status-text { font-size: 12px; color: hsl(var(--player-text-muted)); }

.player-menu-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; border-radius: 0.5rem;
  transition: background-color 150ms; }
.player-menu-item:hover { background: hsl(var(--player-control-hover)); }
.player-menu-item.selected { border-left: 4px solid hsl(var(--player-accent)); background: hsl(var(--player-accent) / 0.2); }

/* Captions */
.caption-cue { position: fixed; left: 0; right: 0; display: flex; justify-content: center; padding: 0 16px; pointer-events: none; z-index: 40; }
.caption-cue div { max-width: 56rem; text-align: center; line-height: 1.25; font-weight: 500; border-radius: 4px; padding: 2px 8px; }

/* Toast */
.toast { position: fixed; left: 50%; bottom: 48px; transform: translateX(-50%); z-index: 10000; background: hsl(var(--background));
  border: 1px solid hsl(var(--border)); color: hsl(var(--foreground)); border-radius: 0.75rem; padding: 12px 18px; min-width: 200px; max-width: 420px;
  box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.3); animation: slide-up 200ms ease-out both; }
.toast.destructive { border-color: hsl(var(--destructive)); }
.toast h4 { font-size: 14px; font-weight: 600; }
.toast p { font-size: 12px; color: hsl(var(--muted-foreground)); }

/* Holo underline for active tab */
.tab-underline { padding-bottom: 12px; border-bottom: 2px solid transparent; transition: color 150ms, border-color 150ms; }
.tab-underline.active { color: #fff; font-weight: 600; border-bottom-color: #fff; }

/* Switch */
.switch { position: relative; display: inline-flex; align-items: center; width: 48px; height: 24px; border-radius: 9999px;
  background: #262626; cursor: pointer; transition: background-color 200ms; }
.switch.on { background: #e40014; }
.switch-dot { position: absolute; left: 2px; top: 2px; width: 20px; height: 20px; border-radius: 9999px; background: #fff;
  transition: transform 200ms; }
.switch.on .switch-dot { transform: translateX(24px); }

/* Up-next flyout */
.upnext-cta { font-weight: 600; padding: 12px 20px; border-radius: 9999px; background: hsl(var(--player-accent)); color: hsl(var(--player-text)); }
.upnext-cta:hover { opacity: 0.9; }

/* ----------------------------------- RESPONSIVE ----------------------------------- */
@media (min-width: 640px) {
  .sm\:flex { display: flex; }                    .sm\:hidden { display: none; }
  .sm\:inline { display: inline; }                .sm\:block { display: block; }
  .sm\:grid { display: grid; }
  .sm\:px-6 { padding-left: 24px; padding-right: 24px; }
  .sm\:px-8 { padding-left: 32px; padding-right: 32px; }
  .sm\:py-0 { padding-top: 0; padding-bottom: 0; }
  .sm\:pt-32 { padding-top: 128px; }
  .sm\:pb-20 { padding-bottom: 80px; }
  .sm\:pb-16 { padding-bottom: 64px; }
  .sm\:px-4 { padding-left: 16px; padding-right: 16px; }
  .sm\:gap-2 { gap: 8px; }
  .sm\:gap-3 { gap: 12px; }
  .sm\:gap-4 { gap: 16px; }
  .sm\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sm\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .sm\:items-end { align-items: flex-end; }
  .sm\:h-auto { height: auto; }
  .sm\:h-full { height: 100%; }
  .sm\:w-auto { width: auto; }
  .sm\:w-56 { width: 224px; }
  .sm\:w-48 { width: 192px; }
  .sm\:w-32 { width: 128px; }
  .sm\:w-\[160px\] { width: 160px; }
  .sm\:w-\[170px\] { width: 170px; }
  .sm\:w-\[260px\] { width: 260px; }
  .sm\:max-w-\[420px\] { max-width: 420px; }
  .sm\:aspect-video { aspect-ratio: 16 / 9; }
  .sm\:min-h-\[100vh\] { min-height: 100vh; }
  .sm\:gap-5 { gap: 20px; }
  .sm\:gap-6 { gap: 24px; }
  .sm\:smt { margin-top: 0; }
  .sm\:text-sm { font-size: 14px; }
  .sm\:text-base { font-size: 16px; }
  .sm\:text-lg { font-size: 18px; }
  .sm\:text-xl { font-size: 20px; }
  .sm\:text-2xl { font-size: 24px; }
  .sm\:text-3xl { font-size: 30px; }
  .sm\:text-4xl { font-size: 36px; }
  .sm\:text-6xl { font-size: 60px; }
  .sm\:ml-2 { margin-left: 8px; }
  .sm\:mx-0 { margin-left: 0; margin-right: 0; }
  .sm\:grid-cols-\[160px_1fr\] { grid-template-columns: 160px 1fr; }
}
@media (min-width: 768px) {
  .md\:hidden { display: none; }                  .md\:flex { display: flex; }
  .md\:block { display: block; }                  .md\:grid { display: grid; }
  .md\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .md\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .md\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .md\:grid-cols-\[160px_1fr\] { grid-template-columns: 160px 1fr; }
  .md\:w-\[22\%\] { width: 22%; }
  .md\:w-\[180px\] { width: 180px; }
  .md\:w-\[190px\] { width: 190px; }
  .md\:w-\[300px\] { width: 300px; }
  .md\:grid-cols-\[1fr_280px\] { grid-template-columns: 1fr 280px; }
  .md\:gap-3 { gap: 12px; }
  .md\:px-5 { padding-left: 20px; padding-right: 20px; }
  .md\:py-3 { padding-top: 12px; padding-bottom: 12px; }
  .md\:text-2xl { font-size: 24px; }
  .md\:text-4xl { font-size: 36px; }
  .md\:text-5xl { font-size: 48px; }
  .md\:text-6xl { font-size: 60px; }
  .md\:text-lg { font-size: 18px; }
  .md\:text-base { font-size: 16px; }
  .md\:text-xs { font-size: 12px; }
  .md\:text-sm { font-size: 14px; }
  .md\:px-6 { padding-left: 24px; padding-right: 24px; }
  .md\:mb-0 { margin-bottom: 0; }
  .md\:opacity-0 { opacity: 0; }
  .md\:items-center { align-items: center; }
  .md\:justify-center { justify-content: center; }
  .md\:w-14 { width: 56px; }
  .md\:h-9 { height: 36px; }
  .md\:min-h-0 { min-height: 0; }
  .md\:h-\[40px\] { height: 40px; }
}
@media (min-width: 1024px) {
  .lg\:hidden { display: none; }                  .lg\:flex { display: flex; }
  .lg\:px-10 { padding-left: 40px; padding-right: 40px; }
  .lg\:px-12 { padding-left: 48px; padding-right: 48px; }
  .lg\:px-6 { padding-left: 24px; padding-right: 24px; }
  .lg\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .lg\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .lg\:grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .lg\:w-\[18\%\] { width: 18%; }
  .lg\:grid-cols-\[1fr_280px\] { grid-template-columns: 1fr 280px; }
  .lg\:grid-cols-\[240px_1fr\] { grid-template-columns: 240px 1fr; }
  .lg\:-mx-10 { margin-left: -40px; margin-right: -40px; }
  .lg\:text-base { font-size: 16px; }
  .lg\:mb-0 { margin-bottom: 0; }
  .lg\:min-h-\[88vh\] { min-height: 88vh; }
}
@media (min-width: 1280px) {
  .xl\:w-\[15\%\] { width: 15%; }
  .xl\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .xl\:grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .xl\:grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .xl\:grid-cols-\[1fr_320px\] { grid-template-columns: 1fr 320px; }
}

/* Print-friendly: hide gutters */
@media print {
  .no-print { display: none !important; }
}

/* ============================ HOME / ROWS (home.js) ============================ */

/* Row scroller + arrows */
.row-scroller { display: flex; gap: 12px; overflow-x: auto; scroll-behavior: smooth; -webkit-overflow-scrolling: touch; }
.row-scroller::-webkit-scrollbar { display: none; }
.row-scroller { -ms-overflow-style: none; scrollbar-width: none; }

.row-btn { width: 40px; height: 34px; border-radius: 9999px; background: rgb(255 255 255 / 0.08); align-items: center; justify-content: center;
  color: #fff; transition: opacity 150ms, background-color 150ms; }
.row-btn:hover { background: rgb(255 255 255 / 0.16); }

.divider-line { width: 5px; height: 40px; border-radius: 9999px; background: #e40014; }

/* ============================ DETAIL PAGE (details.js) ============================ */
.detail-page { min-height: 100vh; background: #000; color: #fff; }
.detail-loading { min-height: 100vh; display: flex; align-items: center; justify-content: center; }

/* Full-screen backdrop hero */
.detail-hero { position: relative; width: 100%; min-height: 100vh; overflow: hidden; background: #000; }
.detail-hero-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; }
.detail-hero-shade { position: absolute; inset: 0; pointer-events: none; }
.detail-hero-shade::before { content: ""; position: absolute; inset: 0;
  background-image: linear-gradient(to top, #000 0%, rgb(0 0 0 / 0.6) 42%, transparent 100%); }
.detail-hero-shade::after { content: ""; position: absolute; inset: 0;
  background-image: linear-gradient(to right, rgb(0 0 0 / 0.8) 0%, rgb(0 0 0 / 0.3) 55%, transparent 100%); }

/* Back arrow — replaces the site header on detail pages */
.detail-back { position: absolute; top: 1rem; left: 1rem; z-index: 70; width: 2.75rem; height: 2.75rem;
  border-radius: 9999px; border: 0; background: rgb(0 0 0 / 0.6); backdrop-filter: blur(8px); color: #fff;
  display: flex; align-items: center; justify-content: center; transition: background-color 150ms; }
.detail-back:hover { background: rgb(0 0 0 / 0.85); }
.detail-back .icon { width: 1.5rem; height: 1.5rem; }
@media (min-width: 640px) { .detail-back { top: 1.5rem; left: 1.5rem; } }

/* Background trailer — auto-playing muted "cover" video layer */
.detail-trailer-bg { position: absolute; inset: 0; overflow: hidden; pointer-events: none;
  opacity: 0; transition: opacity 1s ease; }
.detail-trailer-bg.is-ready { opacity: 1; }
.detail-trailer-bg iframe { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%) scale(1.5);
  width: 100vw; height: 56.25vw; min-width: 177.78vh; min-height: 100vh; border: 0; }

/* Floating trailer buttons (mute on the background, close on the modal) */
.trailer-btn { width: 2.75rem; height: 2.75rem; border-radius: 9999px; background: rgb(0 0 0 / 0.6);
  backdrop-filter: blur(8px); color: #fff; display: flex; align-items: center; justify-content: center;
  pointer-events: auto; transition: background-color 150ms; border: 0; }
.trailer-btn:hover { background: rgb(0 0 0 / 0.85); }
.trailer-btn .icon { width: 1.25rem; height: 1.25rem; }
.trailer-btn-top { position: absolute; top: 1rem; right: 1rem; z-index: 70; }

/* Full-screen trailer modal — YouTube native controls (play/pause, volume,
   seek, fullscreen) plus our floating close button */
.detail-trailer-fs { position: fixed; inset: 0; z-index: 300; background: #000;
  display: flex; align-items: center; justify-content: center; }
.detail-trailer-fs.hidden { display: none; }
.detail-trailer-fs iframe { width: 100%; height: 100%; border: 0; }
body.trailer-lock { overflow: hidden; }

/* Watchlist active state */
.detail-pill.is-active { background: rgb(239 68 68 / 0.9); }
.detail-pill.is-active:hover { background: #ef4444; }

.detail-hero-inner { position: relative; z-index: 10; display: flex; align-items: flex-start;
  min-height: 100vh; width: 100%; max-width: 48rem; padding: 20vh 1rem 1rem; }
.detail-content { width: 100%; min-width: 0; }

.detail-logo { width: 100%; max-height: 11rem; object-fit: contain; object-position: left;
  margin-bottom: 1.5rem; filter: drop-shadow(0 4px 30px rgb(0 0 0 / 0.6)); }
.detail-title { margin: 0 0 1rem; font-size: 1.5rem; font-weight: 900; text-transform: uppercase;
  letter-spacing: -0.025em; line-height: 1; overflow-wrap: break-word; }

.detail-tagline { margin: 0 0 0.75rem; color: rgb(255 255 255 / 0.7); font-style: italic; }

.detail-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 0.5rem;
  color: rgb(255 255 255 / 0.8); font-size: 0.75rem; }
.detail-meta .dot { width: 4px; height: 4px; border-radius: 9999px; background: rgb(255 255 255 / 0.4); flex-shrink: 0; }
.detail-meta .star { width: 0.75rem; height: 0.75rem; fill: #ef4444; color: #ef4444; }
.detail-meta-rating { display: inline-flex; align-items: center; gap: 0.25rem; }

.detail-overview { margin: 1rem 0 1.5rem; max-width: 36rem; color: rgb(255 255 255 / 0.85); font-size: 1rem;
  display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }

/* Action bar */
.detail-actions { display: flex; align-items: center; gap: 0.375rem; flex-wrap: nowrap; width: 100%; }
.detail-actions .icon { flex-shrink: 0; }

.detail-btn-play { flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center;
  width: 2.5rem; height: 2.5rem; border-radius: 9999px; background: #fff; color: #000; transition: background-color 150ms; }
.detail-btn-play:hover { background: rgb(255 255 255 / 0.9); }
.detail-btn-play .icon { width: 1.25rem; height: 1.25rem; fill: #000; }
.detail-btn-play .label { display: none; }

.detail-pill { flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; gap: 0.375rem;
  height: 2.5rem; padding: 0 0.6rem; border-radius: 9999px; background: rgb(255 255 255 / 0.1); color: #fff;
  font-weight: 500; font-size: 0.75rem; white-space: nowrap; transition: background-color 150ms; }
.detail-pill:hover { background: rgb(255 255 255 / 0.2); }
.detail-pill .icon { width: 0.875rem; height: 0.875rem; }
.detail-pill.grow { flex: 1 1 0%; min-width: 0; }

.detail-icon-btn { flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center;
  width: 2rem; height: 2rem; border-radius: 9999px; background: rgb(255 255 255 / 0.1); transition: background-color 150ms; }
.detail-icon-btn:hover { background: rgb(255 255 255 / 0.2); }
.detail-icon-btn .icon { width: 0.875rem; height: 0.875rem; }

@media (min-width: 640px) {
  .detail-hero-inner { align-items: flex-end; padding: 8rem 1.5rem 4rem; }
  .detail-logo { width: auto; max-width: 420px; }
  .detail-title { font-size: 2.25rem; }
  .detail-meta { gap: 0.75rem; font-size: 0.875rem; }
  .detail-meta .star { width: 1rem; height: 1rem; }
  .detail-actions { gap: 0.5rem; }
  .detail-btn-play { width: auto; height: auto; gap: 0.5rem; padding: 0.625rem 1rem; }
  .detail-btn-play .icon { width: 1rem; height: 1rem; }
  .detail-btn-play .label { display: inline; font-weight: 600; font-size: 0.75rem; }
  .detail-pill { height: auto; padding: 0.625rem 1rem; font-size: 0.75rem; }
  .detail-pill .icon { width: 1rem; height: 1rem; }
  .detail-pill.grow { flex: 0 0 auto; }
  .detail-icon-btn { width: 2.25rem; height: 2.25rem; }
  .detail-icon-btn .icon { width: 1rem; height: 1rem; }
}
@media (min-width: 768px) {
  .detail-title { font-size: 3.75rem; }
  .detail-overview { font-size: 1.125rem; }
  .detail-actions { gap: 0.75rem; }
  .detail-btn-play { padding: 0.75rem 1.25rem; }
  .detail-btn-play .label { font-size: 1rem; }
  .detail-pill { padding: 0.75rem 1.25rem; font-size: 1rem; }
  .detail-icon-btn { width: 2.5rem; height: 2.5rem; }
}
@media (min-width: 1024px) {
  .detail-hero-inner { padding-left: 3rem; padding-right: 3rem; }
}

/* Detail body sections */
.detail-main { padding-bottom: 5rem; }
.detail-main > * + * { margin-top: 1.5rem; }
@media (min-width: 640px) { .detail-main > * + * { margin-top: 3rem; } }
.detail-section-title { display: flex; align-items: center; gap: 0.5rem; margin: 0 0 1rem; padding: 0 1.5rem; font-size: 1.25rem; font-weight: 700; }
.detail-section-title::before { content: ""; width: 0.25rem; height: 1.25rem; background: #ef4444; border-radius: 0.25rem; }
@media (min-width: 768px) { .detail-section-title { font-size: 1.5rem; } }
@media (min-width: 1024px) { .detail-section-title { padding-left: 2.5rem; padding-right: 2.5rem; } }
.detail-scroller { display: flex; gap: 0.75rem; overflow-x: auto; scroll-behavior: smooth; padding: 0 1.5rem 0.5rem; }
@media (min-width: 1024px) { .detail-scroller { padding-left: 2.5rem; padding-right: 2.5rem; } }

/* Cast */
.detail-cast-item { flex-shrink: 0; width: 120px; text-align: center; }
.detail-cast-avatar { aspect-ratio: 1 / 1; border-radius: 9999px; overflow: hidden; background: rgb(255 255 255 / 0.05); }
.detail-cast-avatar img { width: 100%; height: 100%; object-fit: cover; }
.detail-cast-name { margin-top: 0.5rem; font-size: 0.875rem; font-weight: 600; text-align: center; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; }
.detail-cast-char { font-size: 0.75rem; color: rgb(255 255 255 / 0.6); text-align: center; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; }

/* TV episodes */
.episodes-head { padding: 0 1.5rem; margin-bottom: 1rem; }
@media (min-width: 1024px) { .episodes-head { padding-left: 2.5rem; padding-right: 2.5rem; } }
.episodes-head .detail-section-title { padding: 0; }
.season-select { position: relative; width: 100%; }
@media (min-width: 640px) { .season-select { width: 14rem; } }
.season-select-btn { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; width: 100%; padding: 0.625rem 1rem; font-size: 0.875rem; border-radius: 0.75rem; background: rgb(255 255 255 / 0.05); border: 1px solid rgb(255 255 255 / 0.1); transition: background-color 150ms; color: #fff; }
.season-select-btn:hover { background: rgb(255 255 255 / 0.1); }
.season-menu { position: absolute; z-index: 40; top: 100%; left: 0; margin-top: 0.5rem; width: 100%; max-height: 60vh; overflow-y: auto; }
.ep-search-row { display: flex; align-items: center; gap: 0.5rem; margin-top: 0.75rem; }
.ep-search-wrap { position: relative; flex: 1; }
.ep-search-wrap .icon { position: absolute; left: 0.75rem; top: 50%; transform: translateY(-50%); width: 1rem; height: 1rem; color: rgb(255 255 255 / 0.4); }
.ep-search-input { width: 100%; height: 2.75rem; padding: 0 0.75rem 0 2.25rem; border-radius: 0.75rem; background: rgb(255 255 255 / 0.05); border: 1px solid rgb(255 255 255 / 0.1); color: #fff; font-size: 0.875rem; }
.ep-search-input::placeholder { color: rgb(255 255 255 / 0.4); }
.ep-search-input:focus-visible { outline: none; border-color: rgb(239 68 68 / 0.6); box-shadow: 0 0 0 2px rgb(239 68 68 / 0.2); }
.ep-sort-btn { flex-shrink: 0; width: 2.75rem; height: 2.75rem; border-radius: 0.75rem; background: rgb(255 255 255 / 0.05); border: 1px solid rgb(255 255 255 / 0.1); display: flex; align-items: center; justify-content: center; transition: background-color 150ms; color: #fff; }
.ep-sort-btn:hover { background: rgb(255 255 255 / 0.1); }
.ep-sort-btn .icon { width: 1rem; height: 1rem; }
.ep-list { padding: 0 1.5rem; display: grid; gap: 0.75rem; }
@media (min-width: 1024px) { .ep-list { padding-left: 2.5rem; padding-right: 2.5rem; } }
.ep-skel { height: 6rem; border-radius: 0.5rem; background: rgb(255 255 255 / 0.05); animation: pulse 2s cubic-bezier(.4,0,.6,1) infinite; }

.ep-card { border-radius: 1rem; border: 1px solid rgb(255 255 255 / 0.05); background: rgb(255 255 255 / 0.02); transition: background-color 150ms; overflow: hidden; }
.ep-card:hover { background: rgb(255 255 255 / 0.04); }
.ep-mobile { display: flex; align-items: center; gap: 0.75rem; width: 100%; padding: 0.5rem; text-align: left; color: #fff; }
@media (min-width: 768px) { .ep-mobile { display: none; } }
.ep-mobile-thumb { position: relative; flex-shrink: 0; width: 7rem; aspect-ratio: 16 / 9; border-radius: 0.5rem; overflow: hidden; background: rgb(255 255 255 / 0.05); }
.ep-mobile-thumb img { width: 100%; height: 100%; object-fit: cover; }
.ep-num-badge { position: absolute; bottom: 0.25rem; left: 0.25rem; background: rgb(0 0 0 / 0.8); font-size: 11px; font-weight: 700; padding: 0.125rem 0.375rem; border-radius: 0.25rem; }
.ep-mobile-info { min-width: 0; flex: 1; }
.ep-mobile-name { font-size: 0.875rem; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ep-mobile-name.is-open { white-space: normal; }
.ep-mobile-runtime { font-size: 0.75rem; color: rgb(255 255 255 / 0.5); margin-top: 0.25rem; }
.ep-chevron { width: 1.25rem; height: 1.25rem; flex-shrink: 0; margin-right: 0.25rem; color: rgb(255 255 255 / 0.6); transition: transform 150ms; }
.ep-chevron.is-open { transform: rotate(180deg); }
.ep-desktop { display: none; gap: 1rem; padding: 0.5rem; }
@media (min-width: 768px) { .ep-desktop { display: flex; } }
.ep-thumb { position: relative; flex-shrink: 0; width: 10rem; aspect-ratio: 16 / 9; border-radius: 0.375rem; overflow: hidden; background: rgb(255 255 255 / 0.05); }
@media (min-width: 640px) { .ep-thumb { width: 12rem; } }
.ep-thumb img { width: 100%; height: 100%; object-fit: cover; }
.ep-thumb-badge { position: absolute; top: 0.25rem; left: 0.25rem; background: rgb(0 0 0 / 0.7); font-size: 10px; font-weight: 700; padding: 0.125rem 0.375rem; border-radius: 0.25rem; }
.ep-body { min-width: 0; flex: 1; }
.ep-title-row { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.ep-title { font-size: 0.875rem; font-weight: 600; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; }
@media (min-width: 768px) { .ep-title { font-size: 1rem; } }
.ep-rating { display: inline-flex; align-items: center; gap: 0.25rem; font-size: 0.75rem; color: rgb(255 255 255 / 0.7); }
.ep-rating .star { width: 0.75rem; height: 0.75rem; fill: #ef4444; color: #ef4444; }
.ep-sub { display: flex; gap: 0.5rem; font-size: 0.75rem; color: rgb(255 255 255 / 0.5); margin-top: 0.125rem; }
.ep-overview { font-size: 0.875rem; color: rgb(255 255 255 / 0.7); margin: 0.25rem 0 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ep-actions { display: flex; align-items: center; gap: 0.5rem; margin-top: 0.75rem; }
.ep-play { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.5rem 1rem; border-radius: 9999px; background: #fff; color: #000; font-size: 0.875rem; font-weight: 600; transition: background-color 150ms; }
.ep-play:hover { background: rgb(255 255 255 / 0.9); }
.ep-play .icon { width: 1rem; height: 1rem; fill: #000; }
.ep-dl { width: 2.25rem; height: 2.25rem; border-radius: 9999px; background: rgb(255 255 255 / 0.1); display: flex; align-items: center; justify-content: center; transition: background-color 150ms; color: #fff; }
.ep-dl:hover { background: rgb(255 255 255 / 0.2); }
.ep-dl .icon { width: 1rem; height: 1rem; }
.ep-mobile-body { padding: 0 0.75rem 0.75rem; }
@media (min-width: 768px) { .ep-mobile-body { display: none; } }

/* ============================ SEARCH OVERLAY (search.js) ============================ */
.search-overlay { position: fixed; inset: 0; z-index: 100; display: flex; align-items: flex-start; justify-content: center; padding: 4rem 1rem 0; background: rgb(0 0 0 / 0.7); backdrop-filter: blur(4px); }
.search-panel { width: 100%; max-width: 48rem; max-height: 85vh; display: flex; flex-direction: column; }
.search-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 1rem; }
.search-title { margin: 0; font-size: 1.5rem; font-weight: 700; color: #fff; }
.search-head-actions { display: flex; align-items: center; gap: 0.5rem; }
.search-filter { display: flex; align-items: center; gap: 0.5rem; padding: 0.5rem 1rem; border-radius: 0.375rem; background: rgb(255 255 255 / 0.1); color: #fff; font-size: 0.875rem; font-weight: 500; transition: background-color 150ms; }
.search-filter:hover { background: rgb(255 255 255 / 0.15); }
.search-filter .icon { width: 1rem; height: 1rem; }
.search-close { width: 2.5rem; height: 2.5rem; display: flex; align-items: center; justify-content: center; border-radius: 0.375rem; background: rgb(255 255 255 / 0.1); color: #fff; transition: background-color 150ms; }
.search-close:hover { background: rgb(255 255 255 / 0.15); }
.search-close .icon { width: 1.25rem; height: 1.25rem; }
.search-input-wrap { position: relative; margin-bottom: 1rem; }
.search-input-wrap .search-icon { position: absolute; left: 1rem; top: 50%; transform: translateY(-50%); width: 1.25rem; height: 1.25rem; color: rgb(255 255 255 / 0.6); }
.search-input { width: 100%; background: rgb(23 23 23 / 0.9); border: 1px solid rgb(255 255 255 / 0.1); border-radius: 0.5rem; padding: 0.75rem 3rem; font-size: 1rem; color: #fff; }
.search-input::placeholder { color: rgb(255 255 255 / 0.4); }
.search-input:focus { outline: none; border-color: rgb(255 255 255 / 0.3); }
.search-clear { position: absolute; right: 1rem; top: 50%; transform: translateY(-50%); color: rgb(255 255 255 / 0.6); }
.search-clear:hover { color: #fff; }
.search-clear .icon { width: 1.25rem; height: 1.25rem; }
.search-results { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
.search-results > * + * { margin-top: 0.75rem; }
.search-empty { text-align: center; color: rgb(255 255 255 / 0.4); padding: 3rem 0; font-size: 0.875rem; }
.search-loading { display: flex; align-items: center; justify-content: center; padding: 3rem 0; color: rgb(255 255 255 / 0.6); }
.search-sentinel { display: flex; align-items: center; justify-content: center; padding: 1.5rem 0; color: rgb(255 255 255 / 0.5); font-size: 0.75rem; }
.search-row { background: rgb(23 23 23 / 0.9); border: 1px solid rgb(255 255 255 / 0.05); border-radius: 0.5rem; overflow: hidden; }
.search-row-btn { width: 100%; display: flex; align-items: flex-start; gap: 1rem; padding: 0.75rem; text-align: left; transition: background-color 150ms; color: #fff; }
.search-row-btn:hover { background: rgb(255 255 255 / 0.05); }
.search-row-poster { width: 3.5rem; height: 5rem; flex-shrink: 0; border-radius: 0.25rem; background: #262626; overflow: hidden; }
.search-row-poster img { width: 100%; height: 100%; object-fit: cover; }
.search-row-body { flex: 1; min-width: 0; }
.search-row-title { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.search-row-meta { margin-top: 0.25rem; display: flex; flex-wrap: wrap; align-items: center; gap: 0.25rem 0.75rem; font-size: 0.75rem; color: rgb(255 255 255 / 0.6); }
.search-row-meta .sep { opacity: 0.4; }
.search-row-meta .star { width: 0.75rem; height: 0.75rem; fill: #facc15; color: #facc15; }
.search-row-chevron { color: rgb(255 255 255 / 0.4); margin-top: 0.25rem; flex-shrink: 0; }
.search-row-chevron .icon { width: 1.25rem; height: 1.25rem; }
.search-row-exp { padding: 0.25rem 0.75rem 1rem; }
.search-row-overview { font-size: 0.875rem; color: rgb(255 255 255 / 0.7); line-height: 1.625; margin: 0 0 1rem; }
.search-row-actions { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.search-btn { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.5rem 1rem; border-radius: 9999px; font-size: 0.875rem; font-weight: 600; transition: background-color 150ms; }
.search-btn-primary { background: #fff; color: #000; }
.search-btn-primary:hover { background: rgb(255 255 255 / 0.9); }
.search-btn-primary .icon { width: 1rem; height: 1rem; fill: #000; color: #000; }
.search-btn-ghost { background: rgb(255 255 255 / 0.1); color: #fff; }
.search-btn-ghost:hover { background: rgb(255 255 255 / 0.15); }
.search-btn-ghost .icon { width: 1rem; height: 1rem; }

/* ============================ BROWSE DROPDOWN + MOBILE SHEET (header.js) ============================ */
.browse-dd { position: absolute; right: 0; top: 100%; margin-top: 0.5rem; width: 340px; max-width: calc(100vw - 2rem); max-height: 80vh; border-radius: 1rem; background: rgb(10 10 10 / 0.95); backdrop-filter: blur(12px); border: 1px solid rgb(255 255 255 / 0.1); box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.6); padding: 0.625rem; overflow: hidden; z-index: 60; }
.browse-dd-title { text-align: center; font-size: 0.875rem; font-weight: 600; margin: 0 0 0.5rem; }
.browse-dd-label { font-size: 10px; letter-spacing: 0.1em; color: rgb(255 255 255 / 0.4); margin-bottom: 0.125rem; }
.browse-dd-grid { display: grid; gap: 0.25rem; margin-bottom: 0.375rem; }
.browse-dd-grid.cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.browse-dd-grid.cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.browse-dd-item { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.25rem; padding: 0.5rem 0; border-radius: 0.75rem; border: 1px solid rgb(255 255 255 / 0.1); background: rgb(255 255 255 / 0.03); transition: background-color 150ms; color: #fff; cursor: pointer; }
.browse-dd-item:hover { background: rgb(255 255 255 / 0.1); }
.browse-dd-item.wide { padding: 0.625rem 0; }
.browse-dd-item svg { width: 1rem; height: 1rem; }
.browse-dd-item svg.ic-red { color: #ef4444; }
.browse-dd-item svg.ic-yellow { color: #facc15; }
.browse-dd-item span { font-size: 11px; font-weight: 500; }
.browse-dd-ads { display: flex; align-items: center; justify-content: space-between; border: 1px solid rgb(255 255 255 / 0.1); border-radius: 0.75rem; padding: 0.5rem 0.75rem; }
.browse-dd-ads-label { display: flex; align-items: center; gap: 0.5rem; font-size: 0.75rem; }
.browse-dd-ads-label svg { width: 1rem; height: 1rem; color: rgb(255 255 255 / 0.7); }
.browse-dd-toggle { position: relative; display: inline-flex; align-items: center; height: 1.5rem; width: 3rem; border-radius: 9999px; background: rgb(255 255 255 / 0.15); transition: background-color 150ms; }
.browse-dd-toggle.on { background: #dc2626; }
.browse-dd-toggle .lbl { position: absolute; right: 0.375rem; font-size: 10px; font-weight: 700; color: rgb(255 255 255 / 0.7); }
.browse-dd-toggle.on .lbl { left: 0.375rem; right: auto; color: #fff; }
.browse-dd-toggle .knob { display: inline-block; height: 1.25rem; width: 1.25rem; border-radius: 9999px; background: #fff; transform: translateX(0.125rem); transition: transform 150ms; }
.browse-dd-toggle.on .knob { transform: translateX(1.5rem); }

.browse-sheet-backdrop { position: fixed; inset: 0; z-index: 60; background: rgb(0 0 0 / 0.6); }
.browse-sheet-wrap { position: absolute; left: 0; right: 0; bottom: 5rem; display: flex; justify-content: center; padding: 0 1rem; }
.browse-sheet { width: 80vw; max-height: 85vh; overflow-y: auto; border-top-left-radius: 1rem; border-top-right-radius: 1rem; background: rgb(10 10 10 / 0.95); backdrop-filter: blur(12px); border: 1px solid rgb(255 255 255 / 0.1); box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.6); padding: 1rem; }
.browse-sheet-title { text-align: center; font-size: 0.875rem; font-weight: 600; margin: 0 0 0.75rem; }
.browse-sheet-label { font-size: 10px; letter-spacing: 0.1em; color: rgb(255 255 255 / 0.4); margin-bottom: 0.25rem; }
.browse-sheet-grid { display: grid; gap: 0.5rem; margin-bottom: 0.75rem; }
.browse-sheet-grid.cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.browse-sheet-grid.cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

/* header language toggle (anime routes) */
.lang-toggle { display: flex; align-items: center; border-radius: 9999px; background: rgb(255 255 255 / 0.06); border: 1px solid rgb(255 255 255 / 0.1); padding: 0.125rem; font-size: 10px; font-weight: 700; }
.lang-toggle button { padding: 0.25rem 0.5rem; border-radius: 9999px; text-transform: uppercase; color: rgb(255 255 255 / 0.6); transition: color 150ms, background-color 150ms; }
.lang-toggle button:hover { color: #fff; }
.lang-toggle button.active { background: #dc2626; color: #fff; }

/* header account chip */
.header-account { display: flex; align-items: center; gap: 0.5rem; padding: 0.375rem 0.5rem; border-radius: 9999px; transition: background-color 150ms; }
.header-account:hover { background: rgb(255 255 255 / 0.1); }
.header-account .avatar-chip { display: inline-flex; align-items: center; justify-content: center; width: 1.75rem; height: 1.75rem; border-radius: 9999px; background: rgb(255 255 255 / 0.1); border: 1px solid rgb(255 255 255 / 0.2); overflow: hidden; }
.header-account .avatar-chip svg { width: 1rem; height: 1rem; color: rgb(255 255 255 / 0.8); }

/* ============================ DOWNLOAD DIALOG (download.js) ============================ */
.download-dialog { max-width: 48rem; background: #0a0a0a; color: #fff; padding: 0; max-height: 90vh; overflow-y: auto; border-color: rgb(255 255 255 / 0.1); }
.download-head { padding: 1.5rem 1.5rem 0; }
.download-head-row { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.download-head-row h2 { font-size: 1.5rem; font-weight: 700; margin: 0; }
.download-close { flex-shrink: 0; width: 2.25rem; height: 2.25rem; border-radius: 9999px; background: #ef4444; color: #fff; display: flex; align-items: center; justify-content: center; transition: background-color 150ms; box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.4); }
.download-close:hover { background: #dc2626; }
.download-close svg { width: 1.25rem; height: 1.25rem; }
.download-body { padding: 0 1.5rem 1.5rem; display: flex; flex-direction: column; gap: 1.5rem; }
.download-sec-head { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.75rem; }
.download-sec-icon { width: 2rem; height: 2rem; border-radius: 0.5rem; background: linear-gradient(135deg, #ef4444, #b91c1c); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.download-sec-icon svg { width: 1rem; height: 1rem; color: #000; }
.download-sec-head h4 { font-size: 1.125rem; font-weight: 600; margin: 0; }
.download-field-label { font-size: 0.875rem; color: rgb(255 255 255 / 0.6); margin-bottom: 0.25rem; }
.download-field-label.mb2 { margin-bottom: 0.5rem; }
.download-ep-grid { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.download-ep-chip { min-width: 3rem; padding: 0.5rem 0.75rem; border-radius: 0.5rem; font-size: 0.875rem; font-weight: 600; border: 1px solid rgb(255 255 255 / 0.1); background: rgb(255 255 255 / 0.05); color: rgb(255 255 255 / 0.8); transition: background-color 150ms, border-color 150ms, color 150ms; }
.download-ep-chip:hover { background: rgb(255 255 255 / 0.1); }
.download-ep-chip.active { background: rgb(239 68 68 / 0.2); border-color: #ef4444; color: #f87171; }
.download-grid { display: grid; grid-template-columns: 1fr; gap: 0.75rem; }
@media (min-width: 640px) { .download-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 768px) { .download-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.download-item { display: flex; flex-direction: column; gap: 0.25rem; padding: 1rem; border-radius: 0.75rem; border: 1px solid rgb(255 255 255 / 0.1); background: rgb(0 0 0 / 0.4); transition: background-color 150ms, border-color 150ms; text-align: left; }
.download-item:hover { background: rgb(255 255 255 / 0.06); border-color: rgb(239 68 68 / 0.5); }
.download-item-row { display: flex; align-items: center; justify-content: space-between; }
.download-item-row .lbl { font-size: 1.125rem; font-weight: 700; }
.download-item-row svg { width: 1rem; height: 1rem; color: rgb(255 255 255 / 0.4); transition: color 150ms; }
.download-item:hover .download-item-row svg { color: #f87171; }
.download-item .fmt { font-size: 0.875rem; font-weight: 600; color: rgb(255 255 255 / 0.7); }
.download-item .sz { font-size: 0.75rem; color: rgb(255 255 255 / 0.5); margin-top: 0.25rem; }
.download-sub { display: flex; align-items: center; justify-content: space-between; padding: 1rem; border-radius: 0.75rem; border: 1px solid rgb(255 255 255 / 0.1); background: rgb(0 0 0 / 0.4); transition: background-color 150ms, border-color 150ms; text-align: left; }
.download-sub:hover { background: rgb(255 255 255 / 0.06); border-color: rgb(239 68 68 / 0.5); }
.download-sub .lbl { font-weight: 600; }
.download-sub .lang { font-size: 0.75rem; color: rgb(255 255 255 / 0.5); text-transform: uppercase; }
.download-sub svg { width: 1rem; height: 1rem; color: rgb(255 255 255 / 0.4); transition: color 150ms; }
.download-sub:hover svg { color: #f87171; }
.download-loading { display: flex; align-items: center; justify-content: center; gap: 0.5rem; color: rgb(255 255 255 / 0.7); padding: 2rem 0; font-size: 0.875rem; }
.download-err { color: #f87171; font-size: 0.875rem; padding: 1rem 0; }
.download-none { color: rgb(255 255 255 / 0.6); font-size: 0.875rem; padding: 1rem 0; }
.download-info-card { display: flex; gap: 1rem; background: rgb(255 255 255 / 0.03); border: 1px solid rgb(255 255 255 / 0.1); border-radius: 1rem; padding: 1rem; }
.download-info-card img { width: 6rem; border-radius: 0.5rem; object-fit: cover; flex-shrink: 0; }
@media (min-width: 640px) { .download-info-card img { width: 8rem; } }
.download-info-body { min-width: 0; flex: 1; }
.download-info-body h3 { font-size: 1.25rem; font-weight: 700; margin: 0; }
.download-info-body .yr { color: rgb(255 255 255 / 0.6); font-size: 0.875rem; margin-top: 0.25rem; }
.download-info-body p { color: rgb(255 255 255 / 0.8); font-size: 0.875rem; margin: 0.5rem 0 0; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.download-info-body .chips { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 0.75rem; }
.download-info-body .chips span { font-size: 0.75rem; padding: 0.25rem 0.75rem; border-radius: 9999px; background: rgb(255 255 255 / 0.1); color: rgb(255 255 255 / 0.9); }
.download-ep-wrap { margin-bottom: 0.75rem; }

/* Cover cards */
.card-cover { position: relative; border-radius: 0.5rem; overflow: hidden; background: #171717; flex-shrink: 0;
  box-shadow: 0 8px 20px -8px rgb(0 0 0 / 0.6); }
/* Card dimensions scaled +30% from the previous 176x256 / 160x96 (same aspect ratios) */
.card-size-poster { width: 229px; height: 333px; }
.card-size-wide { width: 208px; height: 125px; }
.card-cover-img { width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0; transition: transform 300ms ease; }
.card-cover:hover .card-cover-img { transform: scale(1.06); }
.card-overlay { position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(to top, rgba(0,0,0,0.92) 0%, rgba(0,0,0,0.25) 45%, rgba(0,0,0,0.05) 70%); }
.card-rating { position: absolute; top: 8px; right: 8px; z-index: 2; display: inline-flex; align-items: center; gap: 3px;
  font-size: 11px; font-weight: 600; color: #fff; background: rgb(0 0 0 / 0.55); border-radius: 9999px; padding: 2px 7px; backdrop-filter: blur(4px); }
.card-title { position: absolute; left: 8px; right: 8px; bottom: 22px; z-index: 2; font-size: 13px; font-weight: 600; color: #fff; line-height: 1.2; }
.card-year { position: absolute; left: 8px; bottom: 8px; z-index: 2; font-size: 11px; color: rgb(255 255 255 / 0.6); }

/* Continue watching */
.thumb-ring { transition: box-shadow 200ms; }
.thumb-ring:hover { box-shadow: 0 0 0 2px #fff, 0 8px 24px -6px rgb(0 0 0 / 0.7); }

/* Continue watching cards (reference layout) */
.w-\[150px\] { width: 150px; }
.bg-white\/5 { background-color: rgb(255 255 255 / 0.05); }
.bg-white\/10 { background-color: rgb(255 255 255 / 0.1); }
.bg-white\/15 { background-color: rgb(255 255 255 / 0.15); }
.bg-black\/70 { background-color: rgb(0 0 0 / 0.7); }
.bg-red-600\/90 { background-color: rgb(228 0 20 / 0.9); }
.text-\[10px\] { font-size: 10px; }
@media (min-width: 640px) {
  .sm\:w-\[260px\] { width: 260px; }
  .sm\:aspect-video { aspect-ratio: 16 / 9; }
}
@media (min-width: 768px) { .md\:w-\[300px\] { width: 300px; } }

/* Disabled API button (non-clickable per requirements) */
.api-disabled { opacity: 0.55; }
.api-disabled:hover { background-color: transparent !important; }

/* ============================ PLAYER PAGE (player.js) ============================ */
body.player-lock { overflow: hidden; height: 100dvh; }

.player-page { min-height: 100dvh; height: 100dvh; overflow: hidden; background: #000; color: #fff; position: relative; }
.video-stage { position: relative; width: 100%; height: 100dvh; background: #000; display: flex; align-items: center; justify-content: center; }
.video-stage video { max-width: 100%; max-height: 100%; width: 100%; height: 100%; object-fit: contain; background: #000; }

.player-title-overlay { position: absolute; top: 1.5rem; left: 0; right: 0; padding: 0 5vw; text-align: center; color: #fff; z-index: 20; transition: opacity 300ms; text-shadow: 0 1px 2px rgb(0 0 0 / 0.9); pointer-events: none; }
.player-title-overlay.off { opacity: 0; }
.player-title-overlay .pt-label { font-size: 0.75rem; letter-spacing: 0.05em; opacity: 0.8; margin-bottom: 0.25rem; }
.player-title-overlay .pt-title { display: flex; align-items: center; justify-content: center; gap: 12px; max-width: 90vw; margin: 0 auto;
  font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.upnext { position: absolute; top: 72px; right: 16px; z-index: 26; display: flex; flex-direction: column; align-items: flex-end; gap: 6px;
  background: rgb(2 2 4 / 0.6); border: 1px solid rgb(255 255 255 / 0.12); border-radius: 0.75rem; padding: 12px 14px; backdrop-filter: blur(6px);
  animation: slide-up 250ms ease-out both; }
.upnext .say { font-size: 11px; color: rgb(255 255 255 / 0.6); letter-spacing: 0.05em; }
.upnext .num { font-size: 14px; font-weight: 600; }
.upnext-cta { display: inline-flex; align-items: center; gap: 8px; margin-top: 4px; padding: 8px 16px; border-radius: 8px;
  background: hsl(var(--player-accent)); color: #000; font-weight: 600; font-size: 14px; transition: background-color 150ms; }
.upnext-cta:hover { background: hsl(var(--player-accent-hover)); }
.upnext-cta svg { width: 16px; height: 16px; }

.vol-range { appearance: none; -webkit-appearance: none; width: 90px; height: 4px; border-radius: 9999px; background: rgb(255 255 255 / 0.25);
  outline: none; cursor: pointer; flex-shrink: 0; }
.vol-range::-webkit-slider-thumb { appearance: none; -webkit-appearance: none; width: 12px; height: 12px; border-radius: 9999px; background: #fff; }
.vol-range::-moz-range-thumb { width: 12px; height: 12px; border: 0; border-radius: 9999px; background: #fff; }
@media (min-width: 640px) { .vol-range { width: 110px; } }

/* ============================ Arbitrary-value utilities ============================ */
/* These bracket utilities are referenced by the page modules but were not covered by
   the base utility layer; without them the hero slider collapsed to zero height. */
.h-\[3px\] { height: 3px; }
.h-\[80vh\] { height: 80vh; }
.h-\[84vh\] { height: 84vh; }
.leading-\[1\.05\] { line-height: 1.05; }
.max-h-\[60vh\] { max-height: 60vh; }
.max-h-\[820px\] { max-height: 820px; }
.max-h-\[85vh\] { max-height: 85vh; }
.max-h-\[880px\] { max-height: 880px; }
.max-h-\[90vh\] { max-height: 90vh; }
.max-w-\[1600px\] { max-width: 1600px; }
.max-w-\[280px\] { max-width: 280px; }
.max-w-\[calc\(100vw-24px\)\] { max-width: calc(100vw - 24px); }
.min-h-\[120px\] { min-height: 120px; }
.min-h-\[520px\] { min-height: 520px; }
.min-h-\[540px\] { min-height: 540px; }
.min-h-\[560px\] { min-height: 560px; }
.min-h-\[60vh\] { min-height: 60vh; }
.min-w-\[180px\] { min-width: 180px; }
.min-w-\[3rem\] { min-width: 3rem; }
.w-\[560px\] { width: 560px; }
.z-\[5\] { z-index: 5; }
.z-\[6\] { z-index: 6; }
.bg-white\/\[0\.07\] { background-color: rgb(255 255 255 / 0.07); }
.bg-white\/\[0\.08\] { background-color: rgb(255 255 255 / 0.08); }
.hover\:bg-white\/\[0\.05\]:hover { background-color: rgb(255 255 255 / 0.05); }
.hover\:bg-white\/\[0\.14\]:hover { background-color: rgb(255 255 255 / 0.14); }
@media (min-width: 768px) { .md\:w-\[210px\] { width: 210px; } }
.bg-red-600\/15 { background-color: rgb(220 38 38 / 0.15); }

/* ============================ BROWSE (browse.js) ============================ */
.browse-main { padding: 5rem 1.5rem 6rem; }
@media (min-width: 1024px) { .browse-main { padding-left: 2.5rem; padding-right: 2.5rem; } }
.browse-title { margin: 0 0 1.5rem; font-size: 1.25rem; font-weight: 700; }

.browse-tabs { margin: 0 -1.5rem 1.25rem; padding: 0 1.5rem; overflow-x: auto; }
@media (min-width: 1024px) { .browse-tabs { margin-left: -2.5rem; margin-right: -2.5rem; padding-left: 2.5rem; padding-right: 2.5rem; } }
.browse-tabs-inner { display: flex; align-items: center; gap: 1.25rem; font-size: 0.875rem; white-space: nowrap; border-bottom: 1px solid rgb(255 255 255 / 0.1); }
.browse-tab { padding: 0 0 0.75rem; background: none; border: 0; color: rgb(255 255 255 / 0.55); transition: color 150ms; cursor: pointer; }
.browse-tab:hover { color: #fff; }
.browse-tab.is-active { color: #fff; font-weight: 600; border-bottom: 2px solid #fff; margin-bottom: -1px; }
.browse-tab-sep { width: 1px; height: 1rem; background: rgb(255 255 255 / 0.15); margin: 0 0.25rem; }

.browse-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.75rem 1.25rem; }
@media (min-width: 768px) { .browse-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .browse-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

.browse-empty { grid-column: 1 / -1; text-align: center; padding: 4rem 0; color: rgb(255 255 255 / 0.55); }
.browse-sentinel { height: 2.5rem; }
.browse-spinner { display: flex; align-items: center; justify-content: center; padding: 1.5rem 0; }
.browse-skeleton-thumb { aspect-ratio: 2 / 3; border-radius: 0.5rem; background: rgb(255 255 255 / 0.05); animation: pulse 2s cubic-bezier(.4,0,.6,1) infinite; }
@media (min-width: 640px) { .browse-skeleton-thumb { aspect-ratio: 16 / 9; } }
.browse-skeleton-line { height: 1rem; margin-top: 0.75rem; width: 66.666%; border-radius: 0.25rem; background: rgb(255 255 255 / 0.05); animation: pulse 2s cubic-bezier(.4,0,.6,1) infinite; }

/* shared media card */
.media-card { display: block; }
.media-card-thumb { position: relative; aspect-ratio: 2 / 3; border-radius: 0.5rem; overflow: hidden; background: rgb(255 255 255 / 0.04); }
@media (min-width: 640px) { .browse-grid .media-card-thumb { aspect-ratio: 16 / 9; } }
.media-card-thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform 300ms; }
.media-card:hover .media-card-thumb img { transform: scale(1.03); }
.media-card-name { margin-top: 0.625rem; font-size: 0.875rem; font-weight: 600; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; }
.media-card-meta { margin-top: 0.25rem; font-size: 0.75rem; color: rgb(255 255 255 / 0.55); display: flex; align-items: center; gap: 0.5rem; }
.media-card-meta .dot { color: rgb(255 255 255 / 0.3); }
.media-card-rating { display: inline-flex; align-items: center; gap: 0.25rem; }
.media-card-rating .star { color: #ef4444; }

/* ===================== PERSONAL PAGES (watchlist / history / party) ===================== */
.personal-main { min-height: 100vh; background: #000; color: #fff; padding: 6rem 1rem 7rem; }
@media (min-width: 640px) { .personal-main { padding-left: 2rem; padding-right: 2rem; } }
@media (min-width: 1024px) { .personal-main { padding-left: 3rem; padding-right: 3rem; } }
.personal-inner { max-width: 80rem; margin: 0 auto; }
.personal-head { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; margin-bottom: 2rem; }
.personal-head-title { display: flex; align-items: center; gap: 0.75rem; }
.personal-head-title .icon { width: 1.5rem; height: 1.5rem; color: #ef4444; }
.personal-head h1 { margin: 0; font-size: 1.5rem; font-weight: 700; }
@media (min-width: 640px) { .personal-head h1 { font-size: 1.875rem; } }
.personal-clear { padding: 0.375rem 0.75rem; border-radius: 9999px; font-size: 0.75rem; background: rgb(255 255 255 / 0.1); color: #fff; transition: background-color 150ms; }
.personal-clear:hover { background: rgb(255 255 255 / 0.2); }
.personal-empty { text-align: center; padding: 5rem 0; color: rgb(255 255 255 / 0.6); }
.plus-badge { display: inline-flex; width: 1.5rem; height: 1.5rem; margin: 0 0.25rem; border-radius: 9999px; background: rgb(255 255 255 / 0.1); align-items: center; justify-content: center; vertical-align: middle; }
.personal-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.75rem; }
@media (min-width: 640px) { .personal-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; } }
@media (min-width: 768px) { .personal-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .personal-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); } }
@media (min-width: 1280px) { .personal-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); } }

.poster-tile { position: relative; border-radius: 0.75rem; overflow: hidden; background: #171717; aspect-ratio: 2 / 3; }
.poster-tile img { width: 100%; height: 100%; object-fit: cover; }
.poster-tile-fallback { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; text-align: center; padding: 0.75rem; font-size: 0.75rem; color: rgb(255 255 255 / 0.4); }
.poster-tile-remove { position: absolute; top: 0.5rem; right: 0.5rem; z-index: 10; width: 2rem; height: 2rem; border-radius: 9999px; background: rgb(0 0 0 / 0.7); color: #fff; display: flex; align-items: center; justify-content: center; transition: background-color 150ms; }
.poster-tile-remove:hover { background: #dc2626; }
.poster-tile-remove .icon { width: 0.875rem; height: 0.875rem; }
.poster-tile-bar { pointer-events: none; position: absolute; left: 0; right: 0; bottom: 0; height: 0.25rem; background: rgb(255 255 255 / 0.1); }
.poster-tile-bar > span { display: block; height: 100%; background: #ef4444; }
.poster-tile-caption { pointer-events: none; position: absolute; left: 0; right: 0; bottom: 0; padding: 0.5rem; background-image: linear-gradient(to top, rgb(0 0 0 / 0.9), transparent); }
.poster-tile-caption p { margin: 0; font-size: 0.75rem; font-weight: 600; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.poster-tile-caption .sub { font-size: 0.625rem; color: rgb(255 255 255 / 0.6); font-weight: 400; }