/* Courtside: the arena lamps breathe, the crowd's bokeh twinkles, the scoreboard name glows.
   The fallback opening ("courtside", only if the film can't load): the lamps bang on and the name hits
   the board. The film's styles live in film.css. Only transform and opacity animate. */
[data-theme="courtside"] { --ct-orange: #fb8500; --ct-navy: #14213d; --ct-sky: #8ecae6; }
[data-theme="courtside"] .title, [data-theme="courtside"] .card h2, [data-theme="courtside"] .divider, [data-theme="courtside"] .age-badge b { font-family: "Bebas Neue", "Barlow", sans-serif; font-weight: 400; font-synthesis: none; letter-spacing: .03em; }
[data-theme="courtside"] .title { text-shadow: 0 0 22px rgba(251, 133, 0, .35), 0 3px 0 rgba(0, 0, 0, .35); }
[data-theme="courtside"] .eyebrow { font-family: "Barlow", sans-serif; font-weight: 800; letter-spacing: .18em; text-transform: uppercase; font-size: .78rem; }
[data-theme="courtside"] .card { border-radius: 14px; box-shadow: var(--shadow), inset 0 3px 0 var(--ct-orange); }
[data-theme="courtside"] .btn { border-radius: 10px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
[data-theme="courtside"] .divider::before, [data-theme="courtside"] .divider::after { height: 2px; opacity: .9; background: linear-gradient(90deg, transparent, var(--ct-orange)); }
[data-theme="courtside"] .divider::after { background: linear-gradient(90deg, var(--ct-orange), transparent); }

/* hero ambience */
[data-theme="courtside"] .hero-art .ct-bk { animation: cti-tw 3.2s ease-in-out infinite; animation-delay: calc(var(--i) * -.55s); }
[data-theme="courtside"] .hero-art .ct-lamp { animation: cti-tw 4.4s ease-in-out infinite; animation-delay: calc(var(--i) * -1.1s); }
[data-theme="courtside"] .hero-art .ct-cone { animation: cti-cone 5.5s ease-in-out infinite; animation-delay: calc(var(--i) * -1.4s); }
[data-theme="courtside"] .hero-art .ct-hnet { transform-box: fill-box; transform-origin: 50% 0; animation: cti-net 6s ease-in-out infinite; }

/* the kid's photo: a ticket stub with an orange court line (Kid Photo hook, frame "ticket") */
[data-theme="courtside"] .kp-ticket .kp-win { box-shadow: 0 0 0 3px var(--ct-orange), 0 10px 26px rgba(10, 18, 38, .4); }

/* the pass: a courtside credential, navy with a hardwood strip and a ball-orange rule */
[data-theme="courtside"] .ticket { background: linear-gradient(180deg, #1f3460 0%, #14213d 72%, #e2a65f 72%, #c98a45 100%); color: #f7f3ea; border-radius: 12px;
  box-shadow: 0 12px 26px rgba(10, 18, 38, .4), inset 0 0 0 2px rgba(251, 133, 0, .8); }
[data-theme="courtside"] .ticket .t-main { border-right: 2px dashed rgba(247, 243, 234, .4); }
[data-theme="courtside"] .ticket small { color: var(--ct-orange); letter-spacing: .22em; font-weight: 800; }
[data-theme="courtside"] .ticket b { font-family: "Bebas Neue", sans-serif; font-weight: 400; letter-spacing: .04em; color: #fff; }

/* Party TV */
[data-theme="courtside"].tv-slide h1, [data-theme="courtside"].tv-slide h2 { font-family: "Bebas Neue", sans-serif; font-weight: 400; letter-spacing: .04em; text-shadow: 0 0 30px rgba(251, 133, 0, .45); }
[data-theme="courtside"].tv-slide .tv-big { font-family: "Bebas Neue", sans-serif; color: var(--ct-orange); }
[data-theme="courtside"].tv-bd .ct-bk { animation: cti-tw 3.6s ease-in-out infinite; animation-delay: calc(var(--i) * -.6s); }

/* the fallback opening */
[data-theme="courtside"] .op-art svg { overflow: visible; }
[data-theme="courtside"] .op-card { background: rgba(10, 18, 38, .78); color: #f7f3ea; box-shadow: 0 0 0 1px rgba(251, 133, 0, .5), 0 20px 60px rgba(0, 0, 0, .4); }
[data-theme="courtside"] .op-courtside .op-line { color: #f7f3ea; font-family: "Bebas Neue", sans-serif; letter-spacing: .06em; text-shadow: 0 2px 16px rgba(6, 11, 24, .9); }
[data-theme="courtside"] .op-courtside.op-run .ct-lamp, [data-theme="courtside"] .op-courtside.op-run .ct-cone { animation: cti-bang .8s calc(.3s + var(--i) * .22s) linear both; }
[data-theme="courtside"] .op-courtside.op-run .ct-hname { transform-box: fill-box; transform-origin: center; animation: cti-stamp .6s 2.2s cubic-bezier(.2, .9, .3, 1) both; }
[data-theme="courtside"] .op-courtside.op-run .ct-hnet { transform-box: fill-box; transform-origin: 50% 0; animation: cti-swish .6s 1.8s ease-out both; }

@keyframes cti-tw { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }
@keyframes cti-cone { 0%, 100% { opacity: .26; } 50% { opacity: .14; } }
@keyframes cti-net { 0%, 88%, 100% { transform: scaleY(1); } 92% { transform: scaleY(1.18); } 96% { transform: scaleY(.94); } }
@keyframes cti-bang { 0% { opacity: 0; } 12% { opacity: 1; } 22% { opacity: .2; } 36%, 100% { opacity: 1; } }
@keyframes cti-stamp { 0% { opacity: 0; transform: scale(2.4); } 60% { opacity: 1; transform: scale(.92); } 100% { opacity: 1; transform: none; } }
@keyframes cti-swish { 0% { transform: none; } 40% { transform: scaleY(1.3); } 75% { transform: scaleY(.9); } 100% { transform: none; } }
@media (prefers-reduced-motion: reduce) {
  [data-theme="courtside"] .hero-art *, [data-theme="courtside"].tv-bd *, [data-theme="courtside"] .op-art * { animation: none !important; }
}
