/* JOFAMS GO · AR Item Juggling cinematic
   Progressive-enhancement layer: the minigame still works even if this stylesheet is skipped. */
.juggle-overlay{position:fixed;inset:0;z-index:460;display:grid;place-items:center;pointer-events:none;opacity:0;visibility:hidden;overflow:hidden;isolation:isolate;background:radial-gradient(circle at 50% 58%,rgba(15,23,42,.06) 0 24%,rgba(2,8,23,.28) 58%,rgba(2,6,23,.68) 100%);backdrop-filter:saturate(1.12) contrast(1.03);-webkit-backdrop-filter:saturate(1.12) contrast(1.03);transition:opacity .42s ease,visibility .42s step-end}
.juggle-overlay.show{opacity:1;visibility:visible;transition:opacity .42s ease,visibility 0s}
.juggle-overlay.exit{opacity:0;transition:opacity .48s cubic-bezier(.4,0,.2,1)}
.juggle-overlay::before{content:"";position:absolute;inset:-25%;background:radial-gradient(circle,rgba(125,211,252,.16),transparent 34%),conic-gradient(from 30deg,transparent,rgba(56,189,248,.08),transparent 32%,rgba(168,85,247,.07),transparent 65%);animation:juggleAura 6s linear infinite;mix-blend-mode:screen}
.juggle-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(125,211,252,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(125,211,252,.05) 1px,transparent 1px);background-size:42px 42px;mask-image:linear-gradient(to bottom,transparent 5%,#000 35%,#000 70%,transparent 98%);-webkit-mask-image:linear-gradient(to bottom,transparent 5%,#000 35%,#000 70%,transparent 98%);transform:perspective(600px) rotateX(64deg) translateY(36%);transform-origin:center bottom;opacity:.42}
.juggle-stage{position:relative;width:min(92vw,520px);height:min(77vh,720px);min-height:540px;transform:translateY(1vh)}
.juggle-stage::after{content:"";position:absolute;left:50%;bottom:6.5%;width:54%;height:7%;transform:translateX(-50%);border-radius:50%;background:radial-gradient(ellipse,rgba(0,0,0,.52),rgba(0,0,0,.18) 46%,transparent 72%);filter:blur(8px);opacity:.86}
.juggle-hud{position:absolute;z-index:9;top:1.4%;left:50%;transform:translateX(-50%);width:min(88vw,430px);text-align:center;color:white;text-shadow:0 2px 18px rgba(0,0,0,.75)}
.juggle-kicker{display:inline-flex;align-items:center;gap:7px;padding:6px 11px;border:1px solid rgba(186,230,253,.28);border-radius:999px;background:rgba(2,8,23,.46);box-shadow:0 10px 35px rgba(0,0,0,.25),inset 0 1px rgba(255,255,255,.08);font:800 10px/1 system-ui,sans-serif;letter-spacing:.16em;color:#bae6fd}
.juggle-title{margin:10px 0 3px;font:900 clamp(22px,6vw,32px)/1.1 system-ui,sans-serif;letter-spacing:-.04em}.juggle-sub{font:700 12px/1.3 system-ui,sans-serif;color:rgba(255,255,255,.78)}
.juggle-progress{position:absolute;top:14.5%;left:50%;z-index:10;width:min(66vw,310px);height:3px;transform:translateX(-50%);overflow:hidden;border-radius:999px;background:rgba(255,255,255,.16)}
.juggle-progress>i{display:block;width:100%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#38bdf8,#a78bfa,#fbbf24);transform-origin:left center;animation:juggleProgress 5s linear forwards;box-shadow:0 0 16px rgba(56,189,248,.65)}
.juggle-character-shell{position:absolute;z-index:4;left:50%;bottom:7%;width:min(74vw,350px);height:72%;transform:translateX(-50%) translateY(18px) scale(.92);opacity:0;animation:juggleCharacterIn .72s .08s cubic-bezier(.2,.9,.25,1.18) forwards}
.juggle-character{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 18px 24px rgba(0,0,0,.46));-webkit-mask-image:radial-gradient(ellipse 47% 58% at 50% 53%,#000 60%,rgba(0,0,0,.94) 72%,rgba(0,0,0,.25) 88%,transparent 100%);mask-image:radial-gradient(ellipse 47% 58% at 50% 53%,#000 60%,rgba(0,0,0,.94) 72%,rgba(0,0,0,.25) 88%,transparent 100%)}
.juggle-character-shell.hoonmin{animation-name:juggleHoonminBody}.juggle-character-shell.daim{animation-name:juggleDaimBody}.juggle-character-shell.sunsik{animation-name:juggleSunsikBody}
.juggle-items{position:absolute;z-index:6;inset:17% 3% 23%}
.juggle-ball{position:absolute;left:50%;top:52%;width:72px;height:72px;margin:-36px;display:grid;place-items:center;border-radius:24px;background:linear-gradient(145deg,rgba(255,255,255,.96),rgba(224,242,254,.86));border:1px solid rgba(255,255,255,.82);box-shadow:0 13px 32px rgba(2,8,23,.3),0 0 0 5px rgba(125,211,252,.08),inset 0 2px 3px rgba(255,255,255,.9);will-change:transform;overflow:hidden;color:#082f49}
.juggle-ball::after{content:"";position:absolute;inset:4px;border-radius:19px;border:1px solid rgba(14,165,233,.12)}
.juggle-ball .juggle-icon{width:46px;height:46px;display:grid;place-items:center;filter:drop-shadow(0 4px 5px rgba(14,116,144,.15))}.juggle-ball svg{width:42px!important;height:42px!important}.juggle-ball .emoji-fallback{font-size:34px}
.juggle-ball.b1{animation-delay:0s!important}.juggle-ball.b2{animation-delay:-.62s!important}.juggle-ball.b3{animation-delay:-1.24s!important}
.juggle-stage.hoonmin .juggle-ball{animation:hoonminCascade 1.86s cubic-bezier(.35,0,.55,1) infinite}.juggle-stage.hoonmin .b2{animation-name:hoonminCascadeB}.juggle-stage.hoonmin .b3{animation-name:hoonminCascadeC}
.juggle-stage.daim .juggle-ball{animation:daimReverse 1.68s cubic-bezier(.38,.02,.56,1) infinite}.juggle-stage.daim .b2{animation-name:daimReverseB}.juggle-stage.daim .b3{animation-name:daimReverseC}
.juggle-stage.sunsik .juggle-ball{animation:sunsikShower 1.24s linear infinite}.juggle-stage.sunsik .b2{animation-name:sunsikShowerB}.juggle-stage.sunsik .b3{animation-name:sunsikShowerC}
.juggle-ball.heavy{border-radius:20px;animation-timing-function:cubic-bezier(.42,0,.58,1)!important}.juggle-ball.float{border-radius:50%;box-shadow:0 12px 30px rgba(2,8,23,.26),0 0 24px rgba(251,191,36,.25)}.juggle-ball.spin .juggle-icon{animation:itemIconSpin .8s linear infinite}.juggle-ball.leaf .juggle-icon{animation:itemLeaf .72s ease-in-out infinite alternate}.juggle-ball.medal .juggle-icon{animation:itemMedal .5s ease-in-out infinite alternate}
.juggle-trail{position:absolute;z-index:5;left:50%;top:49%;width:76%;height:47%;transform:translate(-50%,-50%);border:1px solid rgba(125,211,252,.16);border-radius:50%;filter:drop-shadow(0 0 7px rgba(56,189,248,.2));opacity:.7;animation:juggleTrailPulse 1.5s ease-in-out infinite}
.juggle-caption{position:absolute;z-index:10;left:50%;bottom:1%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;background:rgba(2,8,23,.62);border:1px solid rgba(255,255,255,.12);color:#e0f2fe;white-space:nowrap;font:800 11px/1 system-ui,sans-serif;box-shadow:0 10px 30px rgba(0,0,0,.26)}.juggle-caption i{width:7px;height:7px;border-radius:50%;background:#38bdf8;box-shadow:0 0 14px #38bdf8;animation:juggleBlink .65s ease-in-out infinite alternate}
.juggle-overlay.exit .juggle-character-shell{animation:juggleCharacterOut .46s ease-in forwards}.juggle-overlay.exit .juggle-ball,.juggle-overlay.exit .juggle-trail{animation-play-state:paused!important;opacity:0;transition:opacity .3s ease,filter .3s ease;filter:blur(8px)}
@keyframes juggleAura{to{transform:rotate(1turn)}}@keyframes juggleProgress{from{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes juggleCharacterIn{to{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}}
@keyframes juggleHoonminBody{0%{opacity:0;transform:translateX(-50%) translateY(26px) scale(.9) rotate(-1.5deg)}24%{opacity:1;transform:translateX(-50%) translateY(0) scale(1.02) rotate(.8deg)}100%{opacity:1;transform:translateX(-50%) translateY(0) scale(1) rotate(-.8deg)}}
@keyframes juggleDaimBody{0%{opacity:0;transform:translateX(-50%) translateY(34px) scale(.88)}30%{opacity:1;transform:translateX(-50%) translateY(-5px) scale(1.03)}60%,100%{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}}
@keyframes juggleSunsikBody{0%{opacity:0;transform:translateX(-50%) translateY(12px) scale(.86) rotate(-2deg)}18%{opacity:1;transform:translateX(-50%) translateY(-4px) scale(1.04) rotate(2deg)}100%{opacity:1;transform:translateX(-50%) translateY(0) scale(1) rotate(-1deg)}}
@keyframes juggleCharacterOut{to{opacity:0;transform:translateX(-50%) translateY(18px) scale(.88);filter:blur(7px)}}
/* Hoonmin: tall, disciplined three-ball cascade */
@keyframes hoonminCascade{0%{transform:translate(-112px,108px) rotate(-8deg) scale(.93)}24%{transform:translate(-70px,-60px) rotate(58deg) scale(1.02)}50%{transform:translate(4px,-136px) rotate(132deg) scale(1.08)}76%{transform:translate(78px,-56px) rotate(208deg) scale(1.02)}100%{transform:translate(114px,108px) rotate(278deg) scale(.93)}}
@keyframes hoonminCascadeB{0%{transform:translate(114px,108px) rotate(12deg)}24%{transform:translate(76px,-48px) rotate(78deg)}50%{transform:translate(-5px,-126px) rotate(150deg)}76%{transform:translate(-78px,-52px) rotate(224deg)}100%{transform:translate(-112px,108px) rotate(292deg)}}
@keyframes hoonminCascadeC{0%{transform:translate(-2px,-128px) rotate(0)}25%{transform:translate(98px,-26px) rotate(85deg)}50%{transform:translate(28px,102px) rotate(174deg)}75%{transform:translate(-98px,-22px) rotate(263deg)}100%{transform:translate(-2px,-128px) rotate(360deg)}}
/* Daim: playful reverse cascade with a center pop */
@keyframes daimReverse{0%{transform:translate(-112px,90px) rotate(0) scale(.9)}32%{transform:translate(-28px,-108px) rotate(-110deg) scale(1.08)}58%{transform:translate(70px,-38px) rotate(-190deg)}100%{transform:translate(112px,92px) rotate(-300deg) scale(.92)}}
@keyframes daimReverseB{0%{transform:translate(110px,88px) rotate(0)}32%{transform:translate(28px,-120px) rotate(120deg) scale(1.08)}58%{transform:translate(-68px,-42px) rotate(210deg)}100%{transform:translate(-112px,90px) rotate(320deg)}}
@keyframes daimReverseC{0%,100%{transform:translate(0,76px) rotate(0) scale(.88)}34%{transform:translate(0,-154px) rotate(160deg) scale(1.12)}67%{transform:translate(0,-28px) rotate(310deg) scale(.98)}}
/* Sunsik: fast shower / orbit loop */
@keyframes sunsikShower{0%{transform:translate(-118px,70px) rotate(0) scale(.88)}25%{transform:translate(-66px,-118px) rotate(105deg) scale(1.05)}53%{transform:translate(64px,-108px) rotate(215deg) scale(1.05)}78%{transform:translate(118px,34px) rotate(300deg)}100%{transform:translate(38px,98px) rotate(380deg) scale(.9)}}
@keyframes sunsikShowerB{0%{transform:translate(38px,98px) rotate(0)}25%{transform:translate(-118px,70px) rotate(110deg)}53%{transform:translate(-66px,-118px) rotate(220deg)}78%{transform:translate(64px,-108px) rotate(310deg)}100%{transform:translate(118px,34px) rotate(390deg)}}
@keyframes sunsikShowerC{0%{transform:translate(118px,34px) rotate(0)}25%{transform:translate(38px,98px) rotate(110deg)}53%{transform:translate(-118px,70px) rotate(220deg)}78%{transform:translate(-66px,-118px) rotate(310deg)}100%{transform:translate(64px,-108px) rotate(390deg)}}
@keyframes itemIconSpin{to{transform:rotate(1turn)}}@keyframes itemLeaf{to{transform:translateY(-4px) rotate(8deg)}}@keyframes itemMedal{to{transform:scale(1.12) rotate(-4deg)}}@keyframes juggleTrailPulse{50%{opacity:.35;transform:translate(-50%,-50%) scale(.95)}}@keyframes juggleBlink{to{opacity:.35;transform:scale(.75)}}
@media (max-height:680px){.juggle-stage{height:94vh;min-height:500px;transform:none}.juggle-hud{top:1%}.juggle-progress{top:13%}.juggle-character-shell{height:70%;bottom:5%}.juggle-items{inset:18% 5% 20%}.juggle-ball{width:62px;height:62px;margin:-31px}.juggle-ball .juggle-icon{transform:scale(.88)}}
@media (prefers-reduced-motion:reduce){.juggle-overlay::before,.juggle-trail,.juggle-caption i{animation:none}.juggle-character-shell{animation:juggleCharacterIn .2s forwards}.juggle-stage .juggle-ball{animation-duration:2.4s!important}}

/* v2 · compact articulated-character pass
   The source character art is a single raster, so an articulated foreground rig is
   layered over it. This gives the AR discovery a real throw/catch gesture while keeping
   the original Jofams illustration intact. */
.juggle-stage{
  width:min(90vw,460px);
  height:min(72vh,660px);
  min-height:500px;
  transform:translateY(2vh);
}
.juggle-stage::after{bottom:8%;width:37%;height:5.5%;filter:blur(6px);opacity:.64}

/* Character was previously ~350px wide. Cap at 180px: visually about one-half. */
.juggle-character-shell{
  bottom:9%;
  width:min(43vw,180px);
  height:51%;
  transform:translateX(-50%) translateY(12px) scale(.96);
}
.juggle-character{
  filter:drop-shadow(0 12px 18px rgba(0,0,0,.40));
  -webkit-mask-image:radial-gradient(ellipse 52% 61% at 50% 53%,#000 65%,rgba(0,0,0,.96) 78%,rgba(0,0,0,.34) 91%,transparent 100%);
  mask-image:radial-gradient(ellipse 52% 61% at 50% 53%,#000 65%,rgba(0,0,0,.96) 78%,rgba(0,0,0,.34) 91%,transparent 100%);
}
.juggle-items{z-index:8;inset:22% 13% 26%}
.juggle-ball{
  width:52px;height:52px;margin:-26px;border-radius:17px;
  box-shadow:0 9px 22px rgba(2,8,23,.27),0 0 0 4px rgba(125,211,252,.07),inset 0 2px 3px rgba(255,255,255,.9)
}
.juggle-ball::after{inset:3px;border-radius:14px}
.juggle-ball .juggle-icon{width:34px;height:34px}
.juggle-ball svg{width:31px!important;height:31px!important}.juggle-ball .emoji-fallback{font-size:25px}
.juggle-trail{z-index:6;top:49%;width:52%;height:35%;opacity:.46}

/* Articulated arm rig ----------------------------------------------------- */
.juggle-arm-rig{
  --sleeve:#25282d;--hand:#f6f6f4;--outline:rgba(0,0,0,.32);
  position:absolute;left:50%;bottom:12%;z-index:7;width:118%;height:58%;
  transform:translateX(-50%);pointer-events:none;filter:drop-shadow(0 5px 5px rgba(0,0,0,.22));
}
.juggle-stage.hoonmin .juggle-arm-rig{--sleeve:#25272b;--hand:#f4f4f1}
.juggle-stage.daim .juggle-arm-rig{--sleeve:#b96822;--hand:#ffd9aa}
.juggle-stage.sunsik .juggle-arm-rig{--sleeve:#247b27;--hand:#dff1bd}
.juggle-arm{position:absolute;top:29%;width:38px;height:92px;transform-origin:50% 10px;will-change:transform}
.juggle-arm.arm-left{left:4%}.juggle-arm.arm-right{right:4%;transform:scaleX(-1)}
.juggle-upper-arm{
  position:absolute;left:5px;top:0;width:29px;height:55px;border:1px solid var(--outline);
  border-radius:18px 18px 16px 16px;background:linear-gradient(110deg,rgba(255,255,255,.16),transparent 35%),var(--sleeve);
  box-shadow:inset 0 2px 2px rgba(255,255,255,.13)
}
.juggle-forearm{
  position:absolute;left:8px;top:39px;width:25px;height:55px;transform-origin:50% 8px;
  border:1px solid var(--outline);border-radius:15px;background:linear-gradient(105deg,rgba(255,255,255,.14),transparent 36%),var(--sleeve);
  will-change:transform
}
.juggle-hand{
  position:absolute;left:50%;bottom:-15px;width:31px;height:32px;transform:translateX(-50%);
  border:1px solid var(--outline);border-radius:48% 48% 44% 44%;background:radial-gradient(circle at 38% 28%,rgba(255,255,255,.56),transparent 28%),var(--hand);
  box-shadow:inset -2px -3px 4px rgba(0,0,0,.08),inset 2px 2px 3px rgba(255,255,255,.26)
}
.juggle-hand::before{content:"";position:absolute;left:4px;top:12px;width:22px;height:4px;border-top:1px solid rgba(0,0,0,.18);border-radius:50%;transform:rotate(-8deg)}
.juggle-catch-glow{position:absolute;left:50%;bottom:-24px;width:37px;height:17px;transform:translateX(-50%);border-radius:50%;background:radial-gradient(ellipse,rgba(125,211,252,.55),rgba(125,211,252,.12) 48%,transparent 72%);opacity:0;filter:blur(2px)}

/* The left/right arms alternate throws. Each personality has a different rhythm. */
.juggle-stage.hoonmin .arm-left{animation:hoonminArmL .93s cubic-bezier(.38,.02,.34,1) infinite}
.juggle-stage.hoonmin .arm-right{animation:hoonminArmR .93s cubic-bezier(.38,.02,.34,1) infinite}
.juggle-stage.hoonmin .arm-left .juggle-forearm{animation:hoonminForeL .93s ease-in-out infinite}
.juggle-stage.hoonmin .arm-right .juggle-forearm{animation:hoonminForeR .93s ease-in-out infinite}
.juggle-stage.hoonmin .juggle-catch-glow{animation:catchBlink .93s ease-in-out infinite}
.juggle-stage.hoonmin .arm-right .juggle-catch-glow{animation-delay:-.465s}

.juggle-stage.daim .arm-left{animation:daimArmL .84s cubic-bezier(.3,.05,.45,1) infinite}
.juggle-stage.daim .arm-right{animation:daimArmR .84s cubic-bezier(.3,.05,.45,1) infinite}
.juggle-stage.daim .arm-left .juggle-forearm{animation:daimForeL .84s ease-in-out infinite}
.juggle-stage.daim .arm-right .juggle-forearm{animation:daimForeR .84s ease-in-out infinite}
.juggle-stage.daim .juggle-catch-glow{animation:catchBlink .84s ease-in-out infinite}
.juggle-stage.daim .arm-right .juggle-catch-glow{animation-delay:-.42s}

.juggle-stage.sunsik .arm-left{animation:sunsikArmL .62s cubic-bezier(.25,.02,.32,1) infinite}
.juggle-stage.sunsik .arm-right{animation:sunsikArmR .62s cubic-bezier(.25,.02,.32,1) infinite}
.juggle-stage.sunsik .arm-left .juggle-forearm{animation:sunsikForeL .62s ease-in-out infinite}
.juggle-stage.sunsik .arm-right .juggle-forearm{animation:sunsikForeR .62s ease-in-out infinite}
.juggle-stage.sunsik .juggle-catch-glow{animation:catchBlink .62s ease-in-out infinite}
.juggle-stage.sunsik .arm-right .juggle-catch-glow{animation-delay:-.31s}

/* compact item trajectories, centered over the newly reduced character */
.juggle-stage.hoonmin .juggle-ball{animation-name:hoonminCascadeSmall}
.juggle-stage.hoonmin .b2{animation-name:hoonminCascadeSmallB}.juggle-stage.hoonmin .b3{animation-name:hoonminCascadeSmallC}
.juggle-stage.daim .juggle-ball{animation-name:daimReverseSmall}.juggle-stage.daim .b2{animation-name:daimReverseSmallB}.juggle-stage.daim .b3{animation-name:daimReverseSmallC}
.juggle-stage.sunsik .juggle-ball{animation-name:sunsikShowerSmall}.juggle-stage.sunsik .b2{animation-name:sunsikShowerSmallB}.juggle-stage.sunsik .b3{animation-name:sunsikShowerSmallC}

@keyframes hoonminArmL{0%,100%{transform:rotate(18deg) translateY(1px)}42%{transform:rotate(-23deg) translateY(-5px)}58%{transform:rotate(-8deg) translateY(-3px)}}
@keyframes hoonminArmR{0%,100%{transform:scaleX(-1) rotate(-18deg) translateY(1px)}42%{transform:scaleX(-1) rotate(23deg) translateY(-5px)}58%{transform:scaleX(-1) rotate(8deg) translateY(-3px)}}
@keyframes hoonminForeL{0%,100%{transform:rotate(17deg)}38%{transform:rotate(-38deg)}58%{transform:rotate(-8deg)}}
@keyframes hoonminForeR{0%,100%{transform:rotate(17deg)}38%{transform:rotate(-38deg)}58%{transform:rotate(-8deg)}}
@keyframes daimArmL{0%,100%{transform:rotate(24deg) translateY(1px)}35%{transform:rotate(-31deg) translateY(-7px)}63%{transform:rotate(-5deg) translateY(-2px)}}
@keyframes daimArmR{0%,100%{transform:scaleX(-1) rotate(-24deg) translateY(1px)}35%{transform:scaleX(-1) rotate(31deg) translateY(-7px)}63%{transform:scaleX(-1) rotate(5deg) translateY(-2px)}}
@keyframes daimForeL{0%,100%{transform:rotate(25deg)}31%{transform:rotate(-48deg)}61%{transform:rotate(-5deg)}}
@keyframes daimForeR{0%,100%{transform:rotate(25deg)}31%{transform:rotate(-48deg)}61%{transform:rotate(-5deg)}}
@keyframes sunsikArmL{0%,100%{transform:rotate(32deg) translateY(2px)}34%{transform:rotate(-39deg) translateY(-7px)}62%{transform:rotate(8deg) translateY(-2px)}}
@keyframes sunsikArmR{0%,100%{transform:scaleX(-1) rotate(-32deg) translateY(2px)}34%{transform:scaleX(-1) rotate(39deg) translateY(-7px)}62%{transform:scaleX(-1) rotate(-8deg) translateY(-2px)}}
@keyframes sunsikForeL{0%,100%{transform:rotate(31deg)}31%{transform:rotate(-58deg)}58%{transform:rotate(6deg)}}
@keyframes sunsikForeR{0%,100%{transform:rotate(31deg)}31%{transform:rotate(-58deg)}58%{transform:rotate(6deg)}}
@keyframes catchBlink{0%,28%,72%,100%{opacity:0;transform:translateX(-50%) scale(.6)}42%,52%{opacity:.92;transform:translateX(-50%) scale(1.15)}}

@keyframes hoonminCascadeSmall{0%{transform:translate(-76px,73px) rotate(-8deg) scale(.92)}24%{transform:translate(-46px,-43px) rotate(58deg)}50%{transform:translate(2px,-96px) rotate(132deg) scale(1.06)}76%{transform:translate(49px,-41px) rotate(208deg)}100%{transform:translate(77px,73px) rotate(278deg) scale(.92)}}
@keyframes hoonminCascadeSmallB{0%{transform:translate(77px,73px) rotate(12deg)}24%{transform:translate(48px,-37px) rotate(78deg)}50%{transform:translate(-2px,-89px) rotate(150deg)}76%{transform:translate(-50px,-40px) rotate(224deg)}100%{transform:translate(-76px,73px) rotate(292deg)}}
@keyframes hoonminCascadeSmallC{0%,100%{transform:translate(-1px,-90px) rotate(0)}25%{transform:translate(65px,-19px) rotate(85deg)}50%{transform:translate(19px,70px) rotate(174deg)}75%{transform:translate(-66px,-17px) rotate(263deg)}}
@keyframes daimReverseSmall{0%{transform:translate(-76px,62px) rotate(0) scale(.9)}32%{transform:translate(-18px,-77px) rotate(-110deg) scale(1.06)}58%{transform:translate(47px,-29px) rotate(-190deg)}100%{transform:translate(76px,63px) rotate(-300deg) scale(.92)}}
@keyframes daimReverseSmallB{0%{transform:translate(75px,61px) rotate(0)}32%{transform:translate(18px,-84px) rotate(120deg) scale(1.06)}58%{transform:translate(-46px,-31px) rotate(210deg)}100%{transform:translate(-76px,62px) rotate(320deg)}}
@keyframes daimReverseSmallC{0%,100%{transform:translate(0,54px) rotate(0) scale(.88)}34%{transform:translate(0,-108px) rotate(160deg) scale(1.1)}67%{transform:translate(0,-20px) rotate(310deg) scale(.98)}}
@keyframes sunsikShowerSmall{0%{transform:translate(-79px,50px) rotate(0) scale(.88)}25%{transform:translate(-44px,-84px) rotate(96deg)}50%{transform:translate(46px,-87px) rotate(190deg) scale(1.04)}75%{transform:translate(79px,9px) rotate(282deg)}100%{transform:translate(-79px,50px) rotate(360deg) scale(.88)}}
@keyframes sunsikShowerSmallB{0%{transform:translate(49px,-80px) rotate(0)}25%{transform:translate(80px,9px) rotate(95deg)}50%{transform:translate(-77px,52px) rotate(190deg)}75%{transform:translate(-45px,-82px) rotate(280deg)}100%{transform:translate(49px,-80px) rotate(360deg)}}
@keyframes sunsikShowerSmallC{0%{transform:translate(80px,8px) rotate(0)}25%{transform:translate(-77px,53px) rotate(94deg)}50%{transform:translate(-45px,-83px) rotate(188deg)}75%{transform:translate(48px,-80px) rotate(279deg)}100%{transform:translate(80px,8px) rotate(360deg)}}

/* Keep compact balance on short phones and landscape AR. */
@media (max-height:620px){
  .juggle-stage{min-height:430px;height:88vh}.juggle-character-shell{width:min(35vw,155px);height:48%;bottom:6%}
  .juggle-items{inset:21% 15% 25%}.juggle-caption{bottom:0}.juggle-hud{top:0}.juggle-progress{top:15%}
}
@media (orientation:landscape) and (max-height:560px){
  .juggle-stage{width:min(66vw,430px);height:94vh;min-height:340px;transform:none}
  .juggle-character-shell{width:min(22vw,145px);height:55%;bottom:3%}
  .juggle-items{inset:18% 18% 22%}.juggle-hud{top:0}.juggle-caption{bottom:0}
}
@media (prefers-reduced-motion:reduce){.juggle-arm,.juggle-forearm,.juggle-catch-glow{animation-duration:1.8s!important}}

/* v3 · Kinetic 2D rig ----------------------------------------------------
   Arms now track the actual animated item positions every frame. The body
   also reacts subtly to the center of mass, so the character reads as one
   performer rather than a static PNG with decorative arms. */
.juggle-character-shell.is-kinetic .juggle-character{
  transform-origin:50% 72%;
  transform:translateY(var(--body-bob,0px)) rotate(var(--body-lean,0deg)) scale(var(--body-breathe,1));
  transition:transform 55ms linear;
  will-change:transform;
}
.juggle-character-shell.is-kinetic .juggle-arm{animation:none!important;transition:none!important}
.juggle-character-shell.is-kinetic .juggle-forearm{animation:none!important;transition:none!important}
.juggle-character-shell.is-kinetic .arm-left{transform:rotate(var(--track-rot,0deg)) translateY(calc(var(--reach,0) * 10px))}
.juggle-character-shell.is-kinetic .arm-right{transform:scaleX(-1) rotate(var(--track-rot,0deg)) translateY(calc(var(--reach,0) * 10px))}
.juggle-character-shell.is-kinetic .juggle-forearm{transform:rotate(var(--fore-rot,0deg)) translateY(calc(var(--reach,0) * 8px));transform-origin:50% 8px}
.juggle-character-shell.is-kinetic .juggle-catch-glow{animation:none!important;opacity:0;transform:translateX(-50%) scale(.55);transition:opacity 90ms ease,transform 90ms ease}
.juggle-character-shell.is-kinetic .juggle-arm.near-catch .juggle-catch-glow{opacity:.95;transform:translateX(-50%) scale(1.15)}
.juggle-character-shell.is-kinetic .juggle-arm.near-catch .juggle-hand{transform:translateX(-50%) scale(1.06) rotate(-5deg)}
.juggle-character-shell.is-kinetic .arm-right.near-catch .juggle-hand{transform:translateX(-50%) scale(1.06) rotate(5deg)}

/* Make the active hand visually pass in front of the torso without making
   the entire rig feel oversized. */
.juggle-character-shell.is-kinetic .juggle-arm{z-index:2}
.juggle-character-shell.is-kinetic .juggle-upper-arm{transform:scaleY(calc(1 + var(--reach,0) * .08));transform-origin:50% 8px}
.juggle-character-shell.is-kinetic .juggle-hand{transition:transform 90ms ease,filter 90ms ease}
.juggle-character-shell.is-kinetic .juggle-arm.near-catch .juggle-hand{filter:brightness(1.08) drop-shadow(0 0 5px rgba(125,211,252,.42))}

/* v4 · TRUE SPRITE RIG --------------------------------------------------
   Body / upper arms / forearms / hands are separate PNG sprites.
   JS drives shoulder and elbow joints with a two-bone IK solve. */
.juggle-character-shell.true-sprite-rig{overflow:visible;width:min(43vw,180px);height:51%;}
.sprite-rig{position:absolute;inset:0;transform:translateY(var(--body-bob,0px)) rotate(var(--body-lean,0deg)) scale(var(--body-breathe,1));transform-origin:50% 73%;will-change:transform;filter:drop-shadow(0 12px 18px rgba(0,0,0,.4))}
.rig-body{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center bottom;user-select:none;-webkit-user-drag:none;pointer-events:none;z-index:2}
.rig-arm{position:absolute;top:52.5%;width:29%;height:24%;transform-origin:50% 9%;will-change:transform;z-index:3;pointer-events:none}
.rig-arm-left{left:7.5%;transform:rotate(var(--shoulder,0deg))}
.rig-arm-right{right:7.5%;transform:rotate(var(--shoulder,0deg))}
.rig-upper{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:contain;object-position:center top;transform-origin:50% 9%;user-select:none;-webkit-user-drag:none}
.rig-fore-joint{position:absolute;left:6%;top:48%;width:92%;height:86%;transform:rotate(var(--elbow,0deg));transform-origin:50% 9%;will-change:transform}
.rig-fore{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:contain;object-position:center top;user-select:none;-webkit-user-drag:none}
.rig-hand{position:absolute;left:10%;top:55%;width:80%;height:78%;object-fit:contain;object-position:center top;transform:rotate(var(--wrist,0deg));transform-origin:50% 18%;will-change:transform;user-select:none;-webkit-user-drag:none}
.rig-catch-glow{position:absolute;left:50%;top:93%;width:66%;height:28%;transform:translate(-50%,-50%) scale(.55);border-radius:50%;background:radial-gradient(ellipse,rgba(125,211,252,.65),rgba(125,211,252,.13) 50%,transparent 74%);filter:blur(2px);opacity:0;transition:opacity 80ms ease,transform 80ms ease}
.rig-arm.near-catch .rig-catch-glow{opacity:.95;transform:translate(-50%,-50%) scale(1.1)}
.rig-arm.near-catch .rig-hand{filter:brightness(1.06) drop-shadow(0 0 5px rgba(125,211,252,.38))}

/* Fine alignment per character. */
.sprite-rig.hoonmin .rig-arm-left{left:7.0%}.sprite-rig.hoonmin .rig-arm-right{right:7.0%}
.sprite-rig.daim .rig-arm-left{left:6.2%}.sprite-rig.daim .rig-arm-right{right:6.2%}
.sprite-rig.sunsik .rig-arm-left{left:6.5%}.sprite-rig.sunsik .rig-arm-right{right:6.5%}

/* The old synthetic CSS arm rig is no longer used in v4. */
.true-sprite-rig .juggle-character,.true-sprite-rig .juggle-arm-rig{display:none!important}
.juggle-character-shell.is-kinetic .sprite-rig{transition:transform 45ms linear}
.juggle-overlay.exit .sprite-rig{filter:blur(6px) drop-shadow(0 10px 16px rgba(0,0,0,.3));opacity:0;transition:opacity .35s ease,filter .35s ease}

@media (max-height:620px){.juggle-character-shell.true-sprite-rig{width:min(35vw,155px);height:48%}}
@media (orientation:landscape) and (max-height:560px){.juggle-character-shell.true-sprite-rig{width:min(22vw,145px);height:55%}}
@media (prefers-reduced-motion:reduce){.sprite-rig{transition:none!important}.rig-arm,.rig-fore-joint,.rig-hand{transition:none!important}}

/* v5 · NATURAL AR PERFORMANCE -------------------------------------------
   Softer joint tracking + whole-body weight transfer.  The character now
   reacts to catches instead of snapping from ball to ball. */
.juggle-character-shell.is-natural-motion{
  transform:translate3d(var(--body-x,0px),0,0);
  transition:none!important;
  will-change:transform;
}
.juggle-character-shell.is-natural-motion .sprite-rig{
  transform:translate3d(0,var(--body-bob,0px),0) rotate(var(--body-lean,0deg)) scale(var(--body-breathe,1));
  transform-origin:50% 79%;
  transition:none!important;
}
.juggle-character-shell.is-natural-motion::after{
  content:"";position:absolute;left:50%;bottom:2.4%;width:58%;height:7.5%;
  transform:translateX(-50%) scaleX(calc(.93 + var(--step-phase, .5) * .08));
  border-radius:50%;background:radial-gradient(ellipse,rgba(0,0,0,.34),rgba(0,0,0,.10) 48%,transparent 74%);
  filter:blur(4px);opacity:.72;z-index:0;pointer-events:none;
}
.juggle-character-shell.is-natural-motion .rig-body{z-index:2}
.juggle-character-shell.is-natural-motion .rig-arm{z-index:3;transition:none!important}
.juggle-character-shell.is-natural-motion .rig-fore-joint,
.juggle-character-shell.is-natural-motion .rig-hand{transition:none!important}
.juggle-character-shell.is-natural-motion .rig-arm.near-catch .rig-catch-glow{
  animation:naturalCatchPulse .22s ease-out both;
}
@keyframes naturalCatchPulse{
  0%{opacity:.12;transform:translate(-50%,-50%) scale(.62)}
  48%{opacity:.88;transform:translate(-50%,-50%) scale(1.05)}
  100%{opacity:.18;transform:translate(-50%,-50%) scale(.74)}
}
/* Micro parallax keeps a pasted-on sprite from feeling locked to the glass. */
.juggle-stage.hoonmin .is-natural-motion{animation:arDriftH 5s cubic-bezier(.45,.05,.55,.95) both}
.juggle-stage.daim .is-natural-motion{animation:arDriftD 5s cubic-bezier(.45,.05,.55,.95) both}
.juggle-stage.sunsik .is-natural-motion{animation:arDriftS 5s cubic-bezier(.45,.05,.55,.95) both}
@keyframes arDriftH{0%,100%{margin-left:0}28%{margin-left:-3px}68%{margin-left:4px}}
@keyframes arDriftD{0%,100%{margin-left:0}32%{margin-left:5px}72%{margin-left:-4px}}
@keyframes arDriftS{0%,100%{margin-left:0}24%{margin-left:-6px}52%{margin-left:5px}78%{margin-left:-3px}}
@media (prefers-reduced-motion:reduce){
  .juggle-character-shell.is-natural-motion{animation:none!important;transform:none!important}
  .juggle-character-shell.is-natural-motion .sprite-rig{transform:none!important}
}

/* v6 · FIXED CHARACTER POSE / ITEM-ONLY JUGGLING -----------------------
   Character is now a single, fixed pose sprite: both hands raised and eyes
   looking upward. Only the procurement items move. This removes the puppet-
   like arm/body motion and keeps the AR composition visually stable. */
.juggle-stage.item-only-juggling .juggle-character-shell.fixed-juggle-pose{
  width:min(39vw,168px)!important;
  height:47%!important;
  left:50%!important;
  bottom:7%!important;
  overflow:visible!important;
  transform:translateX(-50%) translateY(12px) scale(.96)!important;
  transform-origin:50% 100%;
  opacity:0;
  animation:fixedPoseIn .62s .06s cubic-bezier(.18,.88,.3,1.12) forwards!important;
  z-index:5;
}
.fixed-pose-wrap{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:center;pointer-events:none}
.fixed-pose-character{
  display:block;width:100%;height:100%;object-fit:contain;object-position:center bottom;
  user-select:none;-webkit-user-drag:none;pointer-events:none;
  filter:drop-shadow(0 10px 12px rgba(0,0,0,.34));
}
.fixed-pose-shadow{position:absolute;left:50%;bottom:0;width:58%;height:6.5%;transform:translate(-50%,52%);border-radius:50%;background:radial-gradient(ellipse,rgba(0,0,0,.42),rgba(0,0,0,.12) 52%,transparent 75%);filter:blur(4px);z-index:-1}

/* Pull the item orbit slightly upward so it sits naturally above the raised hands. */
.juggle-stage.item-only-juggling .juggle-items{inset:18% 13% 29%!important;z-index:8}
.juggle-stage.item-only-juggling .juggle-ball{width:54px;height:54px;margin:-27px;border-radius:17px}
.juggle-stage.item-only-juggling .juggle-ball .juggle-icon{width:36px;height:36px}
.juggle-stage.item-only-juggling .juggle-ball svg{width:33px!important;height:33px!important}
.juggle-stage.item-only-juggling .juggle-ball .emoji-fallback{font-size:27px}

/* Character remains still. A very small breathing scale is applied to the
   whole sprite only; arms, hands, head and eyes do not move independently. */
.juggle-stage.item-only-juggling .fixed-pose-character{animation:fixedPoseBreath 2.8s ease-in-out infinite}
.juggle-stage.item-only-juggling.hoonmin .fixed-pose-character{animation-duration:3.1s}
.juggle-stage.item-only-juggling.sunsik .fixed-pose-character{animation-duration:2.5s}

.juggle-overlay.exit .fixed-juggle-pose{animation:fixedPoseOut .42s ease-in forwards!important}
.juggle-overlay.exit .fixed-pose-character{animation-play-state:paused!important}

@keyframes fixedPoseIn{
  0%{opacity:0;transform:translateX(-50%) translateY(34px) scale(.88)}
  68%{opacity:1;transform:translateX(-50%) translateY(0) scale(1.01)}
  100%{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}
}
@keyframes fixedPoseOut{
  to{opacity:0;filter:blur(6px);transform:translateX(-50%) translateY(15px) scale(.94)}
}
@keyframes fixedPoseBreath{
  0%,100%{transform:scale(1)}
  50%{transform:scale(1.006)}
}

@media (max-height:680px){
  .juggle-stage.item-only-juggling .juggle-character-shell.fixed-juggle-pose{width:min(34vw,145px)!important;height:45%!important;bottom:6%!important}
  .juggle-stage.item-only-juggling .juggle-items{inset:19% 15% 28%!important}
}
@media (orientation:landscape) and (max-height:560px){
  .juggle-stage.item-only-juggling .juggle-character-shell.fixed-juggle-pose{width:min(20vw,130px)!important;height:51%!important;bottom:3%!important}
  .juggle-stage.item-only-juggling .juggle-items{inset:15% 20% 24%!important}
}
@media (prefers-reduced-motion:reduce){
  .juggle-stage.item-only-juggling .fixed-pose-character{animation:none!important}
}

/* v7 · HOLOGRAPHIC GROUND RING + GOLD ITEM ORBIT -----------------------
   Inspired by the target AR composition: a cyan scan platform anchors the
   fixed character to the camera scene while warm gold trajectories visually
   connect the moving procurement items. */
.juggle-stage.item-only-juggling .fixed-pose-wrap{overflow:visible}
.juggle-stage.item-only-juggling .ar-platform{
  position:absolute;left:50%;bottom:-1.5%;z-index:-1;width:116%;aspect-ratio:2.35/1;
  transform:translateX(-50%) perspective(440px) rotateX(70deg);
  transform-origin:50% 50%;border-radius:50%;pointer-events:none;
  border:3px solid rgba(75,225,255,.82);
  box-shadow:0 0 8px rgba(34,211,238,.85),0 0 26px rgba(34,211,238,.38),inset 0 0 24px rgba(34,211,238,.18);
  opacity:.94;animation:arPlatformPulse 1.9s ease-in-out infinite;
}
.juggle-stage.item-only-juggling .ar-platform::before,
.juggle-stage.item-only-juggling .ar-platform::after{
  content:"";position:absolute;inset:10%;border-radius:50%;border:2px solid rgba(103,232,249,.72);
  box-shadow:0 0 10px rgba(34,211,238,.35);
}
.juggle-stage.item-only-juggling .ar-platform::after{inset:27%;border-width:1.5px;opacity:.72}
.juggle-stage.item-only-juggling .ar-platform>i,
.juggle-stage.item-only-juggling .ar-platform>b,
.juggle-stage.item-only-juggling .ar-platform>em{
  position:absolute;display:block;left:50%;top:50%;width:8px;height:8px;margin:-4px;border-radius:50%;
  background:#d9fbff;box-shadow:0 0 8px #67e8f9,0 0 18px rgba(34,211,238,.9);font-style:normal;
}
.juggle-stage.item-only-juggling .ar-platform>i{transform:translate(-760%,100%)}
.juggle-stage.item-only-juggling .ar-platform>b{transform:translate(700%,-70%)}
.juggle-stage.item-only-juggling .ar-platform>em{transform:translate(130%,340%)}

.juggle-stage.item-only-juggling .juggle-orbit-fx{
  position:absolute;left:50%;top:21%;z-index:7;width:74%;height:45%;transform:translateX(-50%);
  pointer-events:none;filter:drop-shadow(0 0 6px rgba(251,191,36,.38));
}
.juggle-stage.item-only-juggling .gold-orbit{
  position:absolute;left:50%;top:51%;width:96%;height:84%;transform:translate(-50%,-50%) rotate(-8deg);
  border-radius:50%;border:2px solid transparent;
  background:linear-gradient(#0000,#0000) padding-box,
    conic-gradient(from 16deg,transparent 0 8%,rgba(255,239,174,.95) 12%,rgba(245,158,11,.88) 26%,transparent 34% 48%,rgba(255,230,132,.9) 55%,rgba(245,158,11,.75) 68%,transparent 78% 100%) border-box;
  -webkit-mask:linear-gradient(#fff 0 0) padding-box,linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude;
  opacity:.9;animation:goldOrbitSpin 3.2s linear infinite;
}
.juggle-stage.item-only-juggling .gold-orbit.orbit-b{width:83%;height:98%;transform:translate(-50%,-50%) rotate(52deg);opacity:.58;animation-duration:4.1s;animation-direction:reverse}
.juggle-stage.item-only-juggling .gold-orbit.orbit-c{width:108%;height:66%;transform:translate(-50%,-50%) rotate(15deg);opacity:.48;animation-duration:2.7s}
.juggle-stage.item-only-juggling .orbit-spark{
  position:absolute;width:7px;height:7px;border-radius:50%;background:#fff8c5;
  box-shadow:0 0 5px #fff7bf,0 0 12px #fbbf24,0 0 22px rgba(245,158,11,.8);
  animation:orbitSparkTwinkle .72s ease-in-out infinite alternate;
}
.juggle-stage.item-only-juggling .orbit-spark::before,
.juggle-stage.item-only-juggling .orbit-spark::after{content:"";position:absolute;left:50%;top:50%;background:rgba(255,244,180,.9);transform:translate(-50%,-50%);border-radius:99px}
.juggle-stage.item-only-juggling .orbit-spark::before{width:2px;height:18px}.juggle-stage.item-only-juggling .orbit-spark::after{width:18px;height:2px}
.juggle-stage.item-only-juggling .s1{left:8%;top:45%}.juggle-stage.item-only-juggling .s2{left:28%;top:10%;animation-delay:-.2s}.juggle-stage.item-only-juggling .s3{right:12%;top:28%;animation-delay:-.45s}.juggle-stage.item-only-juggling .s4{right:6%;bottom:22%;animation-delay:-.1s}.juggle-stage.item-only-juggling .s5{left:20%;bottom:10%;animation-delay:-.55s}.juggle-stage.item-only-juggling .s6{left:49%;top:2%;animation-delay:-.32s}

/* Lift item cards over the gold trajectories, and warm the halo to match. */
.juggle-stage.item-only-juggling .juggle-items{z-index:9!important}
.juggle-stage.item-only-juggling .juggle-ball{
  border-color:rgba(255,247,214,.92)!important;
  box-shadow:0 10px 28px rgba(2,8,23,.28),0 0 0 4px rgba(251,191,36,.10),0 0 18px rgba(245,158,11,.48),inset 0 2px 3px rgba(255,255,255,.92)!important;
}
.juggle-stage.item-only-juggling .juggle-ball::before{
  content:"";position:absolute;inset:-12px;border-radius:28px;background:radial-gradient(circle,rgba(253,224,71,.16),transparent 64%);z-index:-1;animation:itemGoldBreath 1.05s ease-in-out infinite alternate;
}

@keyframes arPlatformPulse{0%,100%{opacity:.72;filter:brightness(.92)}50%{opacity:1;filter:brightness(1.28)}}
@keyframes goldOrbitSpin{to{rotate:360deg}}
@keyframes orbitSparkTwinkle{0%{opacity:.25;transform:scale(.55) rotate(0)}100%{opacity:1;transform:scale(1.12) rotate(45deg)}}
@keyframes itemGoldBreath{from{opacity:.35;transform:scale(.92)}to{opacity:.9;transform:scale(1.08)}}

.juggle-overlay.exit .ar-platform,.juggle-overlay.exit .juggle-orbit-fx{opacity:0;transition:opacity .34s ease}
@media (max-height:620px){
  .juggle-stage.item-only-juggling .juggle-orbit-fx{top:19%;height:42%;width:67%}
  .juggle-stage.item-only-juggling .ar-platform{width:108%}
}
@media (prefers-reduced-motion:reduce){
  .juggle-stage.item-only-juggling .ar-platform,.juggle-stage.item-only-juggling .gold-orbit,.juggle-stage.item-only-juggling .orbit-spark,.juggle-stage.item-only-juggling .juggle-ball::before{animation:none!important}
}

/* v8 · CENTERED WIDER PLATFORM + SUBTLE CHARACTER SWAY -----------------
   Keep the holographic ring locked to the AR floor while the fixed-pose
   mascot shifts its weight a few pixels left/right.  The average position
   remains exactly centered over the platform. */
.juggle-stage.item-only-juggling .ar-platform{
  width:132%!important;
  aspect-ratio:2.48/1!important;
  bottom:-2.2%!important;
}

/* Keep the visual footprint centered inside the wider ellipse. */
.juggle-stage.item-only-juggling .fixed-pose-character{
  transform-origin:50% 94%;
  animation:fixedPoseCenterSway 3.25s ease-in-out infinite!important;
  will-change:transform;
}
.juggle-stage.item-only-juggling.hoonmin .fixed-pose-character{
  animation-duration:3.5s!important;
}
.juggle-stage.item-only-juggling.daim .fixed-pose-character{
  animation-duration:3.15s!important;
}
.juggle-stage.item-only-juggling.sunsik .fixed-pose-character{
  animation-duration:2.9s!important;
}

/* Shadow follows only part of the weight shift so the feet still feel
   anchored to one point in the real-world scene. */
.juggle-stage.item-only-juggling .fixed-pose-shadow{
  width:64%!important;
  animation:fixedPoseShadowSway 3.25s ease-in-out infinite;
  will-change:transform,opacity;
}
.juggle-stage.item-only-juggling.hoonmin .fixed-pose-shadow{animation-duration:3.5s}
.juggle-stage.item-only-juggling.daim .fixed-pose-shadow{animation-duration:3.15s}
.juggle-stage.item-only-juggling.sunsik .fixed-pose-shadow{animation-duration:2.9s}

@keyframes fixedPoseCenterSway{
  0%,100%{transform:translate3d(0,0,0) rotate(0deg) scale(1)}
  20%{transform:translate3d(-4px,-1px,0) rotate(-.45deg) scale(1.002)}
  50%{transform:translate3d(0,-2px,0) rotate(0deg) scale(1.006)}
  80%{transform:translate3d(4px,-1px,0) rotate(.45deg) scale(1.002)}
}
@keyframes fixedPoseShadowSway{
  0%,100%{transform:translate(-50%,52%) scaleX(1);opacity:.72}
  20%{transform:translate(calc(-50% - 1.5px),52%) scaleX(.985);opacity:.68}
  50%{transform:translate(-50%,52%) scaleX(.97);opacity:.64}
  80%{transform:translate(calc(-50% + 1.5px),52%) scaleX(.985);opacity:.68}
}

@media (max-height:680px){
  .juggle-stage.item-only-juggling .ar-platform{width:124%!important}
}
@media (orientation:landscape) and (max-height:560px){
  .juggle-stage.item-only-juggling .ar-platform{width:116%!important}
}
@media (prefers-reduced-motion:reduce){
  .juggle-stage.item-only-juggling .fixed-pose-character,
  .juggle-stage.item-only-juggling .fixed-pose-shadow{animation:none!important}
}
