/* KArt styles: transform/opacity only. Reduced motion = final pose. */
.kart{display:inline-block;flex:none;line-height:0;vertical-align:middle}
.kart svg{display:block;width:100%;height:100%;overflow:visible;transform:rotate(var(--kt,0deg))}
.kart svg .i-bob,.kart svg .i-wig,.kart svg .i-ping,.kart svg .i-pulse,.kart svg .i-glint,.kart svg .i-flick,.kart svg .i-sway,.kart svg .i-draw,.kart svg .i-open,.kart svg .i-hop,.kart svg .i-wave,.kart svg .i-sweep,.kart svg .i-drop,.kart svg .i-twitch,.kart svg .i-spin,.kart svg .i-roll,.kart svg .fl,.kart svg .pr,.kart svg .pg{transform-box:fill-box;transform-origin:center}
.kart svg .fl{transform-origin:50% 100%}
.kart svg .i-draw{transform-origin:0 50%}
.kart svg .i-flick{transform-origin:50% 100%}
.kart svg .i-wave{transform-origin:0 50%}

/* entrance: sticker drop */
.kart--enter svg{animation:kart-enter 360ms var(--km-ease-snap,cubic-bezier(.34,1.56,.64,1)) both}
@keyframes kart-enter{from{opacity:0;transform:translateY(-22px) rotate(calc(var(--kt,0deg) - 10deg)) scale(.7)}to{opacity:1;transform:translateY(0) rotate(var(--kt,0deg)) scale(1)}}

/* idles, only while visible */
.kart--idle.is-live .i-bob{animation:ka-bob 2.6s ease-in-out infinite}
.kart--idle.is-live .i-wig{animation:ka-wig 3s ease-in-out infinite}
.kart--idle.is-live .i-ping{animation:ka-ping 2.4s ease-out infinite}
.kart--idle.is-live .i-pulse{animation:ka-pulse 2.2s ease-in-out infinite}
.kart--idle.is-live .i-glint{animation:ka-glint 3s ease-in-out infinite}
.kart--idle.is-live .i-flick{animation:ka-flick 1.3s ease-in-out infinite}
.kart--idle.is-live .i-sway{animation:ka-sway 3.2s ease-in-out infinite}
.kart--idle.is-live .i-draw{animation:ka-draw 3.6s ease-in-out infinite}
.kart--idle.is-live .i-open{animation:ka-open 3.6s ease-in-out infinite}
.kart--idle.is-live .i-hop{animation:ka-hop 2.4s ease-in-out infinite}
.kart--idle.is-live .i-wave{animation:ka-wave 2.6s ease-in-out infinite}
.kart--idle.is-live .i-sweep{animation:ka-sweep 3.4s ease-in-out infinite}
.kart--idle.is-live .i-drop{animation:ka-drop 3s ease-in infinite}
.kart--idle.is-live .i-twitch{animation:ka-twitch 3.2s ease-in-out infinite}
.kart--idle.is-live .i-spin{animation:ka-spin 4s linear infinite}
.kart--idle.is-live .i-roll{animation:ka-roll 3.4s ease-in-out infinite}
.kart--idle.is-live .pg[data-d]{animation-delay:.3s}
@keyframes ka-bob{50%{transform:translateY(-4px)}}
@keyframes ka-wig{25%{transform:rotate(-3deg)}75%{transform:rotate(3deg)}}
@keyframes ka-ping{0%{transform:scale(1)}20%{transform:scale(1.28)}40%,100%{transform:scale(1)}}
@keyframes ka-pulse{50%{transform:scale(1.1)}}
@keyframes ka-glint{0%,60%,100%{opacity:0;transform:scale(.4) rotate(0)}80%{opacity:1;transform:scale(1.15) rotate(45deg)}}
@keyframes ka-flick{0%,100%{transform:scale(1,1) rotate(0)}30%{transform:scale(.94,1.07) rotate(-3deg)}60%{transform:scale(1.04,.95) rotate(3deg)}}
@keyframes ka-sway{0%,100%{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}
@keyframes ka-draw{0%{transform:scaleX(0);opacity:1}40%,85%{transform:scaleX(1);opacity:1}100%{transform:scaleX(1);opacity:0}}
@keyframes ka-open{0%,10%{transform:scale(.78,.7)}35%,85%{transform:scale(1,1)}100%{transform:scale(.78,.7)}}
@keyframes ka-hop{0%,70%,100%{transform:translateY(0)}82%{transform:translateY(-5px)}}
@keyframes ka-wave{50%{transform:scaleX(.92) rotate(2deg)}}
@keyframes ka-sweep{0%,100%{transform:rotate(-8deg)}50%{transform:rotate(8deg)}}
@keyframes ka-drop{0%{transform:translateY(-8px);opacity:0}15%{opacity:1}55%{transform:translateY(30px);opacity:1}60%,100%{transform:translateY(30px);opacity:0}}
@keyframes ka-twitch{0%,80%,100%{transform:translateX(0)}84%{transform:translateX(-2px)}88%{transform:translateX(2px)}92%{transform:translateX(-1px)}}
@keyframes ka-spin{to{transform:rotate(360deg)}}
@keyframes ka-roll{0%,70%,100%{transform:rotate(0)}85%{transform:rotate(12deg) translateY(-4px)}}

/* cues */
.kart.kc-enter svg{animation:kart-enter 360ms var(--km-ease-snap,cubic-bezier(.34,1.56,.64,1)) both}
.kart.kc-pop svg{animation:kc-pop 360ms var(--km-ease-snap,cubic-bezier(.34,1.56,.64,1))}
.kart.kc-shake svg{animation:kc-shake 240ms linear}
.kart.kc-drop svg{animation:kc-drop 520ms cubic-bezier(.3,1.4,.5,1)}
.kart.kc-flip svg{animation:kc-flip 700ms ease-in-out}
.kart.kc-stamp svg{animation:kc-stamp 200ms cubic-bezier(.5,0,.2,1)}
.kart.kc-ping .pg{animation:kc-ping 560ms ease-out}
.kart.kc-print .pr{animation:kc-print 600ms cubic-bezier(.2,.8,.2,1)}
.kart.kc-fill .fl{animation:kc-fill 600ms cubic-bezier(.2,.8,.2,1)}
.kart--dice.kc-flip svg{animation:kc-roll 700ms ease-in-out}
@keyframes kc-pop{50%{transform:rotate(var(--kt,0deg)) scale(1.18)}}
@keyframes kc-shake{0%,100%{transform:translateX(0) rotate(var(--kt,0deg))}25%{transform:translateX(-6px) rotate(var(--kt,0deg))}75%{transform:translateX(6px) rotate(var(--kt,0deg))}}
@keyframes kc-drop{0%{transform:translateY(-40px) rotate(calc(var(--kt,0deg) - 8deg));opacity:0}60%{opacity:1;transform:translateY(4px) rotate(var(--kt,0deg))}100%{transform:translateY(0) rotate(var(--kt,0deg))}}
@keyframes kc-flip{from{transform:perspective(500px) rotateY(0) rotate(var(--kt,0deg))}to{transform:perspective(500px) rotateY(360deg) rotate(var(--kt,0deg))}}
@keyframes kc-roll{0%{transform:translateY(0) rotate(var(--kt,0deg))}35%{transform:translateY(-22px) rotate(calc(var(--kt,0deg) + 270deg))}70%{transform:translateY(0) rotate(calc(var(--kt,0deg) + 560deg))}100%{transform:translateY(0) rotate(calc(var(--kt,0deg) + 720deg))}}
@keyframes kc-stamp{from{transform:scale(1.6) rotate(calc(var(--kt,0deg) + 4deg));opacity:.4}to{transform:scale(1) rotate(var(--kt,0deg));opacity:1}}
@keyframes kc-ping{0%{transform:scale(.6);opacity:.3}40%{transform:scale(1.4);opacity:1}100%{transform:scale(1);opacity:1}}
@keyframes kc-print{from{transform:translateY(34px);opacity:0}to{transform:translateY(0);opacity:1}}
@keyframes kc-fill{from{transform:scaleY(.05)}to{transform:scaleY(1)}}

/* pause + reduced */
.kart-paused .kart,.kart-paused .kart *{animation-play-state:paused!important}
html.km-reduce .kart,html.km-reduce .kart *{animation:none!important;transition:none!important}
@media (prefers-reduced-motion:reduce){.kart,.kart *{animation:none!important;transition:none!important}}
