/* Red Carpet Premiere: the searchlights sweep, the marquee bulbs chase, flashes pop on the press line.
   The classic opening ("premiere", only if the film can't load): the searchlights swing up, the bulbs
   chase on, the name lights up and the flashes go off. Only transform and opacity animate; reduced
   motion shows the finished night, still. */
[data-theme="premiere"] .hero-sky .hero-art { overflow: visible; }
[data-theme="premiere"] .hero-art .pm-beam { transform-box: fill-box; transform-origin: 50% 100%; animation: pm-sweep 8s ease-in-out infinite alternate; animation-delay: calc(var(--i) * -2.1s); }
[data-theme="premiere"] .hero-art .pm-chase { animation: pm-chase 1.2s linear infinite; animation-delay: calc(var(--i) * -.4s); }
[data-theme="premiere"] .hero-art .pm-fl { transform-box: fill-box; transform-origin: center; opacity: 0; animation: pm-pop 5.2s ease-out infinite; animation-delay: calc(var(--i) * -1.9s); }
[data-theme="premiere"] .hero-art .twinkle { animation: pm-tw 3.4s ease-in-out infinite; animation-delay: calc(var(--i) * -.45s); }
[data-theme="premiere"] .card { border-radius: 10px; }
[data-theme="premiere"] .btn { border-radius: 6px; letter-spacing: .06em; text-transform: uppercase; font-weight: 800; }
[data-theme="premiere"] .title { letter-spacing: .01em; text-shadow: 0 0 26px rgba(255, 196, 110, .38), 0 2px 0 rgba(0, 0, 0, .4); }
[data-theme="premiere"] .eyebrow { letter-spacing: .2em; text-transform: uppercase; font-size: .8rem; }
[data-theme="premiere"] .btn, [data-theme="premiere"] .card h2, [data-theme="premiere"] .title, [data-theme="premiere"] .eyebrow { overflow-wrap: anywhere; }

/* the classic opening */
[data-theme="premiere"] .op-art svg { overflow: visible; }
[data-theme="premiere"] .op-card:not(.fm-cta) { background: rgba(11, 10, 13, .78); box-shadow: 0 0 0 1px rgba(212, 166, 64, .45), 0 22px 60px rgba(193, 18, 31, .25); }
[data-theme="premiere"] .op-premiere .op-line { color: var(--ink); text-shadow: 0 2px 16px rgba(0, 0, 0, .9); }
[data-theme="premiere"] .op-premiere.op-run .pm-beam { animation: pm-swing 1.6s .2s cubic-bezier(.2, .8, .2, 1) both, pm-sweep 8s 1.8s ease-in-out infinite alternate; }
[data-theme="premiere"] .op-premiere.op-run .pm-chase { animation: pm-on .5s calc(1.6s + var(--i) * .18s) linear both, pm-chase 1.2s calc(2.4s + var(--i) * -.4s) linear infinite; }
[data-theme="premiere"] .op-premiere.op-run .pm-name { animation: pm-lit 1.1s 2.6s linear both; }
[data-theme="premiere"] .op-premiere.op-run .pm-fl { animation: pm-pop 2.6s calc(3.2s + var(--i) * .35s) ease-out both; }
[data-theme="premiere"] .op-art { transform: scale(1.4); transform-origin: 50% 30%; transition: opacity 1.2s ease, transform 5s cubic-bezier(.33, .05, .2, 1); }
[data-theme="premiere"] .op-run .op-art, [data-theme="premiere"] .op-final .op-art { opacity: 1; transform: none; }
[data-theme="premiere"] .op-final .op-art { transition: none; }
@media (max-aspect-ratio: 4/5) { [data-theme="premiere"] .op-art svg { transform: scale(1.3); transform-origin: 50% 100%; } }

/* Party TV backdrop */
[data-theme="premiere"].tv-bd .pm-chase { animation: pm-chase 1.5s linear infinite; animation-delay: calc(var(--i) * -.5s); }
[data-theme="premiere"].tv-bd .pm-beam { transform-box: fill-box; transform-origin: 50% 100%; animation: pm-sweep 10s ease-in-out infinite alternate; animation-delay: calc(var(--i) * -3s); }

@keyframes pm-sweep { from { transform: rotate(-6deg); } to { transform: rotate(6deg); } }
@keyframes pm-swing { from { opacity: 0; transform: rotate(-40deg); } }
@keyframes pm-chase { 0%, 30% { opacity: 1; } 34%, 100% { opacity: .28; } }
@keyframes pm-on { 0% { opacity: 0; } 30% { opacity: 1; } 50% { opacity: .2; } 100% { opacity: 1; } }
@keyframes pm-lit { 0% { opacity: 0; } 12% { opacity: 1; } 22% { opacity: .2; } 36% { opacity: 1; } 50% { opacity: .5; } 64%, 100% { opacity: 1; } }
@keyframes pm-pop { 0%, 86% { opacity: 0; transform: scale(.3); } 88% { opacity: 1; transform: scale(1.15); } 100% { opacity: 0; transform: scale(1); } }
@keyframes pm-tw { 0%, 100% { opacity: 1; } 50% { opacity: .3; } }
@media (prefers-reduced-motion: reduce) {
  [data-theme="premiere"] .hero-art *, [data-theme="premiere"] .op-art *, [data-theme="premiere"].tv-bd * { animation: none !important; }
  [data-theme="premiere"] .hero-art .pm-fl { opacity: 0; }
}
