/* Fast One Race Day: the checkered flag waves, the grandstand pennants flutter, the start lights glow
   green and the cars rev in place. The classic opening ("raceday") is the fallback if the film can't
   load: the lights go green and the cars zoom in. Only transform and opacity animate. */
[data-theme="racing"] .hero-art .rc-wave, [data-theme="racing"].tv-bd .rc-wave { transform-box: fill-box; transform-origin: 0 50%; animation: rc-wave 1.6s ease-in-out infinite alternate; }
[data-theme="racing"] .hero-art .rc-pen { transform-box: fill-box; transform-origin: 0 100%; animation: rc-pen 1.4s ease-in-out infinite alternate; animation-delay: calc(var(--i) * -.3s); }
[data-theme="racing"] .hero-art .rc-go { animation: rc-glow 2.4s ease-in-out infinite; animation-delay: calc(var(--i) * -.2s); }
[data-theme="racing"] .hero-art .rc-zoom, [data-theme="racing"] .hero-art .rc-zoom2 { animation: rc-rev .5s ease-in-out infinite alternate; }
[data-theme="racing"] .hero-art .rc-zoom2 { animation-delay: -.25s; }
[data-theme="racing"] .hero-art .rc-cloud { animation: rc-drift 12s ease-in-out infinite alternate; }
[data-theme="racing"] .hero-art .rc-cloud2 { animation-duration: 15s; animation-delay: -5s; }
[data-theme="racing"] .hero-art .rc-under { display: none; }
[data-theme="racing"] .card { border-radius: 18px; box-shadow: var(--shadow), inset 0 5px 0 #e63946; }
[data-theme="racing"] .btn { border-radius: 999px; letter-spacing: .02em; }
[data-theme="racing"] .title { font-family: "Racing Sans One", Impact, sans-serif; font-weight: 400; letter-spacing: .01em; text-shadow: .04em .05em 0 #fff, .07em .09em 0 rgba(27, 31, 36, .85); }
[data-theme="racing"] .card h2 { font-family: "Racing Sans One", Impact, sans-serif; font-weight: 400; }
[data-theme="racing"] .eyebrow { color: var(--ink); letter-spacing: .1em; text-transform: uppercase; font-size: .8rem; font-weight: 800; }
[data-theme="racing"] .divider::before, [data-theme="racing"] .divider::after { height: 8px; background: conic-gradient(#1b1f24 25%, #fff 0 50%, #1b1f24 0 75%, #fff 0) 0 0 / 8px 8px; opacity: .9; }
[data-theme="racing"] .btn, [data-theme="racing"] .card h2, [data-theme="racing"] .title, [data-theme="racing"] .eyebrow { overflow-wrap: anywhere; }

/* the kid's photo: a checkered race-number roundel */
[data-theme="racing"] .kp-circle .kp-win { box-shadow: 0 0 0 3px #fff, 0 0 0 calc(var(--kp-w) * .05) #1b1f24, 0 0 0 calc(var(--kp-w) * .06) #e63946; }

/* the Race pass: a paddock pass with a checkered stub and a red racing stripe */
[data-theme="racing"] .ticket { background: linear-gradient(90deg, #fff 0 calc(100% - 14px), #e63946 0); color: #1b1f24; border-radius: 12px; box-shadow: 0 10px 22px rgba(27, 31, 36, .22), inset 0 0 0 2px #1b1f24; }
[data-theme="racing"] .ticket .t-main { border-right: 2px dashed rgba(27, 31, 36, .5); }
[data-theme="racing"] .ticket small { color: #c02634; letter-spacing: .22em; font-weight: 800; }
[data-theme="racing"] .ticket b { font-family: "Racing Sans One", Impact, sans-serif; font-weight: 400; color: #1b1f24; }
[data-theme="racing"] .ticket .t-stub { background: conic-gradient(#1b1f24 25%, #fff 0 50%, #1b1f24 0 75%, #fff 0) 0 0 / 16px 16px; }

/* the classic opening (only if the film can't load) */
[data-theme="racing"] .op-art svg { overflow: visible; }
[data-theme="racing"] .op-art .rc-under { display: inline; }
[data-theme="racing"] .op-card { background: rgba(255, 255, 255, .92); color: var(--cardInk); box-shadow: 0 18px 50px rgba(27, 31, 36, .25); }
[data-theme="racing"] .op-raceday .op-line { color: var(--ink); text-shadow: 0 2px 0 rgba(255, 255, 255, .8); }
[data-theme="racing"] .op-raceday.op-run .rc-go { animation: rc-on .4s 2s linear both, rc-glow 2.4s 2.4s ease-in-out infinite; }
[data-theme="racing"] .op-raceday.op-run .rc-zoom { animation: rc-in 1s 2.3s cubic-bezier(.16, 1, .3, 1) both, rc-rev .5s 3.3s ease-in-out infinite alternate; }
[data-theme="racing"] .op-raceday.op-run .rc-zoom2 { animation: rc-in 1s 2.5s cubic-bezier(.16, 1, .3, 1) both, rc-rev .5s 3.5s ease-in-out infinite alternate; }
[data-theme="racing"] .op-art { transform: scale(1.4); transform-origin: 50% 20%; transition: opacity 1.2s ease, transform 5s cubic-bezier(.33, .05, .2, 1); }
[data-theme="racing"] .op-pal { transform: translateY(40vh) scale(.6); opacity: 0; transition-property: transform, opacity; transition-timing-function: cubic-bezier(.3, 1.5, .5, 1); }
[data-theme="racing"] .op-run .op-art, [data-theme="racing"] .op-run .op-pal { opacity: 1; transform: none; }
[data-theme="racing"] .op-final .op-art, [data-theme="racing"] .op-final .op-pal { opacity: 1; transform: none; transition: none; }
[data-theme="racing"] .critter .cr-eye { transform-box: fill-box; transform-origin: center; animation: rc-blink 5.2s ease-in-out infinite; animation-delay: calc(var(--i, 0) * -1.37s - .6s); }
@media (max-aspect-ratio: 4/5) { [data-theme="racing"] .op-art svg { transform: scale(1.35); transform-origin: 50% 100%; } }

/* Party TV */
[data-theme="racing"].tv-bd { opacity: .92; }

@keyframes rc-wave { from { transform: scaleY(.9) rotate(-3deg); } to { transform: scaleY(1.04) rotate(3deg); } }
@keyframes rc-pen { from { transform: rotate(-8deg); } to { transform: rotate(8deg); } }
@keyframes rc-glow { 50% { opacity: .65; } }
@keyframes rc-rev { from { transform: translateY(0); } to { transform: translateY(-.6px); } }
@keyframes rc-drift { to { transform: translateX(14px); } }
@keyframes rc-on { from { opacity: 0; } }
@keyframes rc-in { from { opacity: 0; transform: translateX(-260px); } }
@keyframes rc-blink { 0%, 93%, 100% { transform: scaleY(1); } 95.5% { transform: scaleY(.08); } }
@media (prefers-reduced-motion: reduce) {
  [data-theme="racing"] .hero-art *, [data-theme="racing"] .critter .cr-eye, [data-theme="racing"] .op-art *, [data-theme="racing"].tv-bd * { animation: none !important; }
}
