/* K-Pop Stage: the invite, the Fan pass, the glow-ring photo and Party TV.
   Ambient motion: the beams sweep, the LED pillars chase, the light-stick rows sway and the Debut Crew
   dances. The opening film lives in film.css; ".op-debut" below is its short fallback. */
[data-theme="kpop"] .title, [data-theme="kpop"] .card h2, [data-theme="kpop"] .age-badge b { font-family: "Black Han Sans", Impact, sans-serif; font-weight: 400; font-synthesis: none; }
[data-theme="kpop"] .title { color: #fbf5ff; letter-spacing: .02em; text-transform: uppercase; text-shadow: .045em .045em 0 #ff2e9a, -.035em -.03em 0 rgba(61, 224, 255, .7); }
[data-theme="kpop"] .eyebrow { color: #3de0ff; font-weight: 800; letter-spacing: .18em; text-transform: uppercase; font-size: .78rem; }
[data-theme="kpop"] .card { border-radius: 16px; box-shadow: var(--shadow), inset 0 0 0 1.5px #e8e1f7, inset 0 3px 0 #ff2e9a; }
[data-theme="kpop"] .card h2 { letter-spacing: .02em; }
[data-theme="kpop"] .btn { border-radius: 999px; font-weight: 800; letter-spacing: .03em; box-shadow: 0 0 0 2px rgba(255, 255, 255, .14), 0 6px 18px rgba(255, 46, 154, .3); }
[data-theme="kpop"] .btn, [data-theme="kpop"] .card h2, [data-theme="kpop"] .title, [data-theme="kpop"] .eyebrow { overflow-wrap: anywhere; }

/* the hero's ambient life */
[data-theme="kpop"] .hero-art .kp-bm { transform-box: fill-box; transform-origin: 50% 0; animation: kp-sweep 5.6s ease-in-out infinite alternate; animation-delay: calc(var(--i) * -1.4s); }
[data-theme="kpop"] .hero-art .kp-bar { animation: kp-chase 1.6s steps(2, jump-none) infinite; animation-delay: calc(var(--i) * -.4s); }
[data-theme="kpop"] .hero-art .kp-row { animation: kp-sway 2.4s ease-in-out infinite; }
[data-theme="kpop"] .hero-art .kp-row2 { animation-delay: -.8s; }
[data-theme="kpop"] .hero-art .kp-row1 { animation-delay: -1.6s; }
[data-theme="kpop"] .hero-art .kp-tw { transform-box: fill-box; transform-origin: center; animation: kp-twinkle 2.2s ease-in-out infinite; }
[data-theme="kpop"] .hero-art .kp-tw2 { animation-delay: -.7s; }
[data-theme="kpop"] .hero-art .kp-tw3 { animation-delay: -1.5s; }
[data-theme="kpop"] .hero-art .kp-dance { transform-box: fill-box; transform-origin: 50% 100%; animation: kp-groove 1.2s ease-in-out infinite; }
[data-theme="kpop"] .hero-art .kp-dance2 { animation-delay: -.4s; }
[data-theme="kpop"] .hero-art .kp-dance3 { animation-delay: -.8s; }
[data-theme="kpop"] .critter .cr-eye { transform-box: fill-box; transform-origin: center; animation: kp-blink 5s ease-in-out infinite; animation-delay: calc(var(--i, 0) * -1.1s - .6s); }

/* the kid's photo: the glow ring becomes a magenta-and-cyan LED ring */
[data-theme="kpop"] .kp-circle .kp-win { box-shadow: 0 0 0 3px #fbf5ff, 0 0 0 calc(var(--kp-w) * .05) #ff2e9a, 0 0 0 calc(var(--kp-w) * .075) #3de0ff, 0 0 calc(var(--kp-w) * .18) rgba(255, 46, 154, .55); }

/* the Fan pass: a night-violet ticket with a chrome edge and a light-stick stripe */
[data-theme="kpop"] .ticket { background: linear-gradient(135deg, #1c0f40, #3a1a7a); color: #fbf5ff; border-radius: 14px; box-shadow: 0 12px 28px rgba(23, 10, 58, .4), inset 0 0 0 1.5px #d9def0, inset 0 0 0 4px rgba(255, 46, 154, .5); }
[data-theme="kpop"] .ticket .t-main { border-right: 1.5px dashed rgba(61, 224, 255, .55); }
[data-theme="kpop"] .ticket small { color: #3de0ff; letter-spacing: .22em; font-weight: 800; }
[data-theme="kpop"] .ticket b { font-family: "Black Han Sans", Impact, sans-serif; font-weight: 400; color: #ffffff; text-shadow: .04em .04em 0 #ff2e9a; }
[data-theme="kpop"] .ticket .t-stub { background: repeating-linear-gradient(180deg, #ff2e9a 0 12px, #7b4dff 12px 24px, #3de0ff 24px 36px); }

/* the classic opening (only if the film can't load): the screen flickers on, the beams snap on, the crowd waves */
[data-theme="kpop"] .op-debut.op-run .kp-led { animation: kp-flick 1s .9s linear both; }
[data-theme="kpop"] .op-debut.op-run .kp-bm { transform-box: fill-box; transform-origin: 50% 0; animation: kp-on .25s calc(.3s + var(--i) * .12s) ease-out both, kp-sweep 5.6s 1.2s ease-in-out infinite alternate; }
[data-theme="kpop"] .op-debut.op-run .kp-row { animation: kp-rise .8s 1.6s cubic-bezier(.22, 1, .36, 1) both, kp-sway 2.4s 2.4s ease-in-out infinite; }
[data-theme="kpop"] .op-card { background: rgba(23, 10, 58, .9); color: #fbf5ff; border-radius: 16px; box-shadow: 0 0 0 1.5px #d9def0, 0 0 26px rgba(255, 46, 154, .45), 0 18px 50px rgba(0, 0, 0, .5); }
[data-theme="kpop"] .op-eyebrow { color: #3de0ff; letter-spacing: .16em; text-transform: uppercase; }
[data-theme="kpop"] .op-debut .op-line { font-family: "Black Han Sans", Impact, sans-serif; font-weight: 400; color: #fbf5ff; text-shadow: .05em .05em 0 #ff2e9a; }
[data-theme="kpop"].tv-slide h1, [data-theme="kpop"].tv-slide h2 { font-family: "Black Han Sans", Impact, sans-serif; font-weight: 400; color: #fbf5ff; text-transform: uppercase; text-shadow: .05em .05em 0 #ff2e9a, -.04em -.03em 0 rgba(61, 224, 255, .7); }
[data-theme="kpop"].tv-bd { opacity: .95; }

@keyframes kp-sweep { from { transform: rotate(-7deg); } to { transform: rotate(7deg); } }
@keyframes kp-chase { 0% { opacity: 1; } 100% { opacity: .35; } }
@keyframes kp-sway { 50% { transform: translateX(3px) translateY(-1.5px); } }
@keyframes kp-twinkle { 50% { opacity: .3; transform: scale(.6) rotate(20deg); } }
@keyframes kp-groove { 0%, 100% { transform: translateY(0) rotate(0); } 25% { transform: translateY(-3px) rotate(-4deg); } 50% { transform: translateY(0) rotate(0) scale(1.03, .97); } 75% { transform: translateY(-3px) rotate(4deg); } }
@keyframes kp-blink { 0%, 93%, 100% { transform: scaleY(1); } 95.5% { transform: scaleY(.08); } }
@keyframes kp-flick { 0% { opacity: 0; } 12% { opacity: 1; } 22% { opacity: .15; } 36% { opacity: 1; } 50% { opacity: .4; } 64% { opacity: 1; } 100% { opacity: 1; } }
@keyframes kp-on { from { opacity: 0; } }
@keyframes kp-rise { from { opacity: 0; transform: translateY(24px); } }
@media (prefers-reduced-motion: reduce) {
  [data-theme="kpop"] .hero-art *, [data-theme="kpop"] .critter .cr-eye { animation: none !important; }
}
