/* Harmony Hopz — handcrafted scenes for the five featured games */
.hh-stage.fx{background:#8fdcff}
.fx .scene{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.fx-img{position:absolute;display:block;max-width:none;height:auto;pointer-events:none;user-select:none;-webkit-user-drag:none}
.hero-pair{position:relative;display:inline-block}
.hero-pair .hero-char{position:absolute;right:-34%;bottom:-8%;width:62%;filter:drop-shadow(0 8px 10px rgba(0,0,0,.25));animation:fx-hop 1.6s ease-in-out infinite}
@keyframes fx-hop{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-10px) rotate(3deg)}}
@keyframes fx-bob{0%,100%{transform:translate(-50%,-50%) translateY(0)}50%{transform:translate(-50%,-50%) translateY(-6px)}}
@keyframes fx-nope{0%,100%{transform:translateX(0)}25%{transform:translateX(-8px) rotate(-4deg)}75%{transform:translateX(8px) rotate(4deg)}}
@keyframes fx-drift{from{transform:translateX(0)}to{transform:translateX(-120vw)}}

/* ---------- Dino Stomp ---------- */
.dino-scene{background:linear-gradient(#5fc8ff 0%,#a8e6ff 45%,#ffe3a3 62%)}
.dino-scene .sun{position:absolute;left:8%;top:18%;width:70px;height:70px;border-radius:50%;background:radial-gradient(#fff6b0,#ffd23f);box-shadow:0 0 40px #ffe066}
.dino-scene .volcano{--heat:0;position:absolute;right:4%;bottom:24%;width:38%;max-width:260px;aspect-ratio:1.4;background:linear-gradient(#8a5a44,#5d3a2c);clip-path:polygon(38% 8%,62% 8%,100% 100%,0 100%)}
.dino-scene .lava{position:absolute;left:36%;right:36%;top:6%;height:calc(10% + var(--heat)*40%);background:linear-gradient(#ffdc4a,#ff6a00);border-radius:0 0 40% 40%;transition:height .4s}
.dino-scene .smoke{position:absolute;left:44%;top:-6%;width:22%;aspect-ratio:1;border-radius:50%;background:rgba(255,255,255,.75);animation:fx-smoke 3s ease-out infinite}
.dino-scene .smoke.s2{animation-delay:1.5s}
@keyframes fx-smoke{from{transform:translateY(0) scale(.6);opacity:.9}to{transform:translateY(-90px) scale(1.6);opacity:0}}
.dino-scene .volcano.puff .smoke{animation-duration:.9s}
.dino-scene .volcano.erupt{animation:fx-shake .3s 6}
.dino-scene .volcano.erupt .lava{height:60%;box-shadow:0 -30px 40px 20px #ff8a00}
.dino-scene .palm{position:absolute;bottom:22%;width:16px;height:34%;background:#8b5a2b;border-radius:8px;transform-origin:bottom}
.dino-scene .palm::before{content:"";position:absolute;left:50%;top:-30px;width:150px;height:70px;transform:translateX(-50%);background:radial-gradient(ellipse at 20% 60%,#2f9e44 0 30%,transparent 31%),radial-gradient(ellipse at 80% 60%,#37b24d 0 30%,transparent 31%),radial-gradient(ellipse at 50% 40%,#40c057 0 32%,transparent 33%)}
.dino-scene .p1{left:6%;transform:rotate(-6deg)}.dino-scene .p2{left:22%;height:26%;transform:rotate(4deg)}.dino-scene .p3{right:42%;height:22%;transform:rotate(-3deg)}
.dino-scene .dirt{position:absolute;left:0;right:0;bottom:0;height:24%;background:radial-gradient(ellipse at 30% 0,#e8b26b 0 40%,transparent 41%),linear-gradient(#d9a05b,#b8783d);border-top:6px solid #7cc95a}
.dino-scene.shake{animation:fx-shake .22s}
@keyframes fx-shake{0%,100%{transform:translate(0)}30%{transform:translate(-5px,3px)}60%{transform:translate(5px,-2px)}}
.stomp-lane{position:absolute;left:3%;right:3%;top:118px;height:96px;border-radius:999px;background:rgba(255,255,255,.45);border:4px dashed rgba(255,255,255,.9);overflow:hidden}
.stomp-ring{position:absolute;left:20%;top:50%;width:84px;height:84px;margin-left:-42px;transform:translateY(-50%);border-radius:50%;border:7px solid #ff7a00;background:rgba(255,200,0,.25);display:grid;place-items:end center;box-shadow:0 0 0 5px #fff}
.stomp-ring span{font:700 12px/1 inherit;color:#fff;background:#ff7a00;padding:3px 7px;border-radius:9px;margin-bottom:-12px;letter-spacing:.5px}
.stomp-ring.pulse{animation:fx-ring .35s}
@keyframes fx-ring{50%{transform:translateY(-50%) scale(1.25);box-shadow:0 0 0 12px #ffe066}}
.print{position:absolute;left:-30px;top:50%;width:60px;height:60px;transition:opacity .3s}
.print svg{width:100%;height:100%;fill:#4b7d2a;filter:drop-shadow(0 3px 0 rgba(0,0,0,.2))}
.print.gold svg{fill:#ffb400;transform:scale(1.35);transition:transform .2s}
.print.gone{opacity:0}
.dino-hero{transform:translate(-50%,-100%);transform-origin:50% 100%;filter:drop-shadow(0 12px 8px rgba(0,0,0,.25));animation:fx-sway 1s ease-in-out infinite}
@keyframes fx-sway{0%,100%{transform:translate(-50%,-100%) rotate(-2deg)}50%{transform:translate(-50%,-100%) rotate(2deg)}}
.dino-hero.stomp{animation:fx-stomp .32s}
@keyframes fx-stomp{0%{transform:translate(-50%,-100%) scale(1)}35%{transform:translate(-50%,-100%) translateY(-24px) scale(.96,1.06)}70%{transform:translate(-50%,-100%) scale(1.1,.88)}100%{transform:translate(-50%,-100%) scale(1)}}
.dust{position:absolute;width:38px;height:38px;border-radius:50%;background:#e8c290;transform:translate(-50%,-50%);animation:fx-dust .7s forwards;pointer-events:none}
@keyframes fx-dust{to{transform:translate(calc(-50% + var(--dx)),-90%) scale(2);opacity:0}}

/* ---------- Choo Choo ABC ---------- */
.abc-scene{--scroll:0;background:linear-gradient(#69c9ff,#c9f0ff 60%)}
.abc-scene .cloud{position:absolute;width:120px;height:44px;border-radius:40px;background:#fff;box-shadow:30px -16px 0 6px #fff,-26px -8px 0 0 #fff;transition:transform 1s ease-out;transform:translateX(calc(var(--scroll)*-14px))}
.abc-scene .c1{left:12%;top:24%}.abc-scene .c2{left:58%;top:18%}.abc-scene .c3{left:88%;top:32%}
.abc-scene .hills{position:absolute;left:-50%;right:-50%;transition:background-position 1s ease-out}
.abc-scene .far{bottom:26%;height:34%;background:radial-gradient(ellipse 160px 90px at 50% 100%,#86d36b 98%,transparent) 0 100%/260px 100% repeat-x;background-position-x:calc(var(--scroll)*-30px)}
.abc-scene .near{bottom:14%;height:24%;background:radial-gradient(ellipse 200px 80px at 50% 100%,#4cb944 98%,transparent) 0 100%/320px 100% repeat-x;background-position-x:calc(var(--scroll)*-60px)}
.abc-scene .flowers{position:absolute;left:0;right:0;bottom:0;height:16%;background:radial-gradient(circle,#ff7ac6 0 4px,transparent 5px) 0 0/46px 30px,radial-gradient(circle,#ffd23f 0 4px,transparent 5px) 23px 15px/46px 30px,#3fae3a;background-position-x:calc(var(--scroll)*-80px);transition:background-position 1s ease-out}
.abc-scene .track{position:absolute;left:0;right:0;bottom:14%;height:20px;background:linear-gradient(#777 0 4px,transparent 4px 14px,#777 14px 18px,transparent 18px),repeating-linear-gradient(90deg,#8b5a2b 0 12px,transparent 12px 30px);background-position-x:calc(var(--scroll)*-90px);transition:background-position 1s ease-out}
.abc-sign{position:absolute;right:4%;top:116px;background:#fff;border:5px solid #ff5a5f;border-radius:18px;padding:4px 14px 6px;text-align:center;box-shadow:0 5px 0 rgba(0,0,0,.15);z-index:2}
.abc-sign small{display:block;font-size:12px;font-weight:700;color:#ff5a5f;text-transform:uppercase}
.abc-sign b{font-size:40px;line-height:1;color:#1e90ff}
.abc-train{position:absolute;left:2%;bottom:calc(14% + 10px);display:flex;align-items:flex-end;flex-direction:row-reverse;justify-content:flex-end;gap:4px;z-index:2}
.abc-train.chug{animation:fx-chug .5s}
@keyframes fx-chug{30%{transform:translateX(14px)}60%{transform:translateX(-4px)}}
.abc-engine{position:relative;width:clamp(110px,26vw,190px);filter:drop-shadow(0 6px 4px rgba(0,0,0,.2))}
.abc-cars{display:flex;flex-direction:row-reverse;gap:4px}
.abc-car{position:relative;width:clamp(56px,13vw,92px);height:clamp(48px,10vw,72px);background:var(--car);border-radius:10px;box-shadow:inset 0 -8px 0 rgba(0,0,0,.18);display:flex;align-items:center;justify-content:center;gap:2px;animation:fx-load .5s}
.abc-car b{font-size:clamp(22px,5vw,34px);color:#fff;text-shadow:0 2px 0 rgba(0,0,0,.25)}
.abc-car span{font-size:clamp(16px,3.6vw,26px)}
.abc-car i{position:absolute;bottom:-12px;width:22px;height:22px;border-radius:50%;background:#333;border:4px solid #bbb}
.abc-car .w1{left:8px}.abc-car .w2{right:8px}
@keyframes fx-load{from{transform:translateY(-80px) scale(.6);opacity:0}}
.abc-smoke{position:absolute;right:calc(clamp(110px,26vw,190px)*.62);bottom:100%;width:0;height:0}
.abc-smoke i{position:absolute;width:34px;height:34px;border-radius:50%;background:#fff;opacity:.9;animation:fx-puff 1.4s forwards}
@keyframes fx-puff{to{transform:translate(-40px,-90px) scale(2.4);opacity:0}}
.abc-station{position:absolute;left:0;right:0;top:36%;display:flex;justify-content:center;gap:clamp(10px,3vw,26px);z-index:3}
.crate{width:clamp(88px,24vw,130px);aspect-ratio:1;border:0;border-radius:18px;cursor:pointer;background:repeating-linear-gradient(0deg,#d89a52 0 22%,#c4823c 22% 25%);box-shadow:inset 0 0 0 6px #a8692b,0 7px 0 #7a4a1e;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:inherit;animation:fx-drop .45s backwards;touch-action:manipulation}
.crate b{font-size:clamp(40px,10vw,60px);line-height:1;color:#fff;text-shadow:0 3px 0 #7a4a1e}
.crate span{font-size:clamp(24px,6vw,34px);line-height:1}
.crate:active{transform:translateY(4px);box-shadow:inset 0 0 0 6px #a8692b,0 3px 0 #7a4a1e}
.crate.nope{animation:fx-nope .4s}
.crate.picked{animation:fx-fly .5s forwards}
@keyframes fx-drop{from{transform:translateY(-60px);opacity:0}}
@keyframes fx-fly{to{transform:translate(-30vw,30vh) scale(.3);opacity:0}}
.abc-strip{position:absolute;left:50%;bottom:4px;transform:translateX(-50%);display:flex;flex-wrap:wrap;justify-content:center;gap:2px;width:96%;z-index:3}
.abc-strip span{font-weight:700;font-size:12px;width:18px;height:18px;border-radius:5px;background:rgba(255,255,255,.55);color:#2a7a2a;display:grid;place-items:center}
.abc-strip span.on{background:#ffd23f;color:#5a3a00}

/* ---------- Counting Ducks ---------- */
.duck-scene{background:linear-gradient(#7fd3ff,#d6f3ff 50%)}
.duck-scene .sun{position:absolute;right:8%;top:110px;width:76px;height:76px;border-radius:50%;background:radial-gradient(#fff6b0,#ffd23f);box-shadow:0 0 40px #ffe066;transition:all 1.5s}
.duck-scene .hills{position:absolute;left:-10%;right:-10%;bottom:44%;height:22%;background:radial-gradient(ellipse at 25% 100%,#7ccf5c 50%,transparent 51%),radial-gradient(ellipse at 75% 100%,#62bf4a 55%,transparent 56%)}
.duck-scene .pond{position:absolute;left:-5%;right:-5%;bottom:0;height:46%;background:radial-gradient(ellipse at 50% 0,#5ec8f2,#2f9fd8);border-top:8px solid #9be37d;border-radius:50% 50% 0 0/18% 18% 0 0}
.duck-scene .rip{position:absolute;width:120px;height:26px;border:3px solid rgba(255,255,255,.6);border-radius:50%;animation:fx-rip 3s infinite}
.duck-scene .r1{left:30%;top:30%}.duck-scene .r2{left:68%;top:62%;animation-delay:1.5s}
@keyframes fx-rip{from{transform:scale(.4);opacity:1}to{transform:scale(1.6);opacity:0}}
.duck-scene .pad{position:absolute;width:56px;height:30px;border-radius:50%;background:radial-gradient(circle at 70% 40%,transparent 6px,#3fae3a 7px)}
.duck-scene .pad.a{left:12%;top:70%}.duck-scene .pad.b{left:52%;top:84%}.duck-scene .pad.c{left:86%;top:40%}
.duck-scene .reeds{position:absolute;bottom:38%;width:60px;height:110px;background:linear-gradient(90deg,transparent 20%,#4f9a2e 20% 28%,transparent 28% 46%,#5aac35 46% 54%,transparent 54% 72%,#4f9a2e 72% 80%,transparent 80%)}
.duck-scene .reeds.l{left:2%}.duck-scene .reeds.r{right:3%}
.duck-scene.sunset{background:linear-gradient(#ff9a6b,#ffd29b 50%)}
.duck-scene.sunset .sun{top:40%;background:radial-gradient(#ffe0a0,#ff8a3d)}
.mama{transform:translate(-50%,-80%);filter:drop-shadow(0 8px 6px rgba(0,0,0,.2));z-index:2}
.mama.quack{animation:fx-quack .5s}
.duckling{position:absolute;padding:0;border:0;background:none;cursor:pointer;transform:translate(-50%,-50%);transition:left 1s cubic-bezier(.3,1.3,.6,1),top .9s;z-index:3;touch-action:manipulation}
.duckling .fx-img{position:static;width:100%;animation:fx-paddle 1.6s ease-in-out infinite;animation-delay:var(--bob)}
@keyframes fx-paddle{0%,100%{transform:translateY(0) rotate(-4deg)}50%{transform:translateY(-6px) rotate(4deg)}}
.duckling .num{position:absolute;left:50%;top:-14px;transform:translateX(-50%);width:40px;height:40px;border-radius:50%;background:#ff7a00;color:#fff;font-weight:700;font-size:26px;display:grid;place-items:center;box-shadow:0 0 0 4px #fff;animation:fx-pop .3s}
.duckling.quack,.duckling.wiggle{animation:fx-quack .45s}
.duckling.follow{transition:left 1.4s ease-in,top 1.4s ease-in;width:56px!important}
@keyframes fx-quack{30%{transform:translate(-50%,-60%) scale(1.15) rotate(-6deg)}60%{transform:translate(-50%,-50%) scale(.95) rotate(6deg)}}
.mama.quack{animation:fx-quack2 .5s}
@keyframes fx-quack2{40%{transform:translate(-50%,-86%) rotate(-5deg)}}
@keyframes fx-pop{from{transform:translateX(-50%) scale(0)}}
.duck-count{position:absolute;left:14%;top:122px;transform:translateX(-50%);font-size:64px;font-weight:700;color:#fff;text-shadow:0 4px 0 #ff7a00,0 0 18px rgba(255,122,0,.5);z-index:3}
.duck-count.pop{animation:fx-cpop .3s}
@keyframes fx-cpop{50%{transform:translateX(-50%) scale(1.4)}}
.duck-answers{position:absolute;left:0;right:0;bottom:16px;display:flex;justify-content:center;gap:clamp(6px,2vw,16px);z-index:4}
.egg{width:clamp(54px,15vw,80px);height:clamp(66px,18vw,98px);border:0;border-radius:50% 50% 50% 50%/60% 60% 40% 40%;background:radial-gradient(circle at 35% 30%,#fff,#fff3c4);box-shadow:0 6px 0 #e0b84a,inset 0 -6px 0 rgba(0,0,0,.06);font-family:inherit;cursor:pointer;animation:fx-drop .4s backwards;touch-action:manipulation}
.egg b{font-size:clamp(28px,7vw,42px);color:#ff7a00}
.egg.nope{animation:fx-nope .4s}.egg.yes{background:#ffd23f;transform:scale(1.15)}

/* ---------- Dance Then Freeze ---------- */
.disco-scene{background:radial-gradient(ellipse at 50% 0,#9b5cff,#3a1478 70%);transition:filter .3s}
.disco-scene .ball{position:absolute;left:50%;top:-30px;width:110px;height:110px;margin-left:-55px;border-radius:50%;background:conic-gradient(#fff,#bbb,#fff,#999,#fff,#ccc,#fff);box-shadow:0 0 30px #fff,0 0 80px #c9a0ff;animation:hh-spin 4s linear infinite}
.disco-scene .ball::after{content:"";position:absolute;inset:0;border-radius:50%;background:repeating-linear-gradient(0deg,transparent 0 10px,rgba(0,0,0,.18) 10px 11px),repeating-linear-gradient(90deg,transparent 0 10px,rgba(0,0,0,.18) 10px 11px)}
.disco-scene .beams i{position:absolute;top:0;left:50%;width:120px;height:120%;transform-origin:50% 0;background:linear-gradient(rgba(255,255,255,.35),transparent 80%);clip-path:polygon(45% 0,55% 0,100% 100%,0 100%);animation:fx-beam 4s ease-in-out infinite alternate}
.disco-scene .beams i:nth-child(1){--a:-35deg;background:linear-gradient(rgba(255,90,200,.45),transparent 80%)}
.disco-scene .beams i:nth-child(2){--a:0deg;animation-delay:-1.3s;background:linear-gradient(rgba(90,220,255,.45),transparent 80%)}
.disco-scene .beams i:nth-child(3){--a:35deg;animation-delay:-2.6s;background:linear-gradient(rgba(255,230,90,.45),transparent 80%)}
@keyframes fx-beam{from{transform:translateX(-50%) rotate(calc(var(--a) - 18deg))}to{transform:translateX(-50%) rotate(calc(var(--a) + 18deg))}}
.disco-scene .floor{position:absolute;left:-10%;right:-10%;bottom:0;height:34%;display:grid;grid-template-columns:repeat(6,1fr);grid-template-rows:repeat(4,1fr);gap:4px;padding:4px;background:#1a0a3a;transform:perspective(400px) rotateX(38deg);transform-origin:50% 100%}
.disco-scene .floor i{border-radius:6px;animation:fx-tile 1.88s steps(1) infinite;animation-delay:var(--d)}
@keyframes fx-tile{0%{background:#ff4fb8}25%{background:#ffd23f}50%{background:#3ee0ff}75%{background:#7dff6a}}
.disco-scene .ice{position:absolute;inset:0;background:linear-gradient(160deg,rgba(200,240,255,.55),rgba(140,200,255,.35));opacity:0;transition:opacity .25s;box-shadow:inset 0 0 60px 20px rgba(255,255,255,.8)}
.disco-scene.frozen .ice{opacity:1}
.disco-scene.frozen .floor i,.disco-scene.frozen .beams i,.disco-scene.frozen .ball{animation-play-state:paused}
.crew{position:absolute;left:0;right:0;bottom:8%;height:58%;display:flex;justify-content:center;align-items:flex-end;gap:0;z-index:2;pointer-events:none}
.dancer{position:relative;width:24%;max-width:170px;height:100%;display:flex;align-items:flex-end;justify-content:center}
.dancer .fx-img{position:static;width:100%;max-height:100%;object-fit:contain;filter:drop-shadow(0 10px 6px rgba(0,0,0,.35));transform-origin:50% 100%;animation:fx-groove .94s ease-in-out infinite}
.dancer.d1 .fx-img{animation-delay:-.23s}.dancer.d2 .fx-img{animation-delay:-.47s}.dancer.d3 .fx-img{animation-delay:-.7s}
@keyframes fx-groove{0%,100%{transform:translateY(0) rotate(-4deg)}50%{transform:translateY(-14px) rotate(4deg)}}
.crew.frozen .fx-img{animation-play-state:paused;filter:drop-shadow(0 10px 6px rgba(0,0,0,.35)) saturate(.5) brightness(1.15) hue-rotate(170deg)}
.crew.giggle .fx-img{animation:fx-nope .3s 2}
.dancer.spin .fx-img{animation:fx-spin .6s}.dancer.jump .fx-img{animation:fx-jump .6s}.dancer.wiggle .fx-img{animation:fx-nope .5s}.dancer.sway .fx-img{animation:fx-sway2 .6s}
@keyframes fx-spin{to{transform:rotateY(360deg)}}
@keyframes fx-jump{40%{transform:translateY(-60px) scale(1.05)}}
@keyframes fx-sway2{30%{transform:rotate(-14deg)}70%{transform:rotate(14deg)}}
.groove{position:absolute;left:12%;right:12%;bottom:12px;height:16px;border-radius:9px;background:rgba(255,255,255,.25);overflow:hidden;z-index:3}
.groove i{display:block;height:100%;width:0;background:linear-gradient(90deg,#ff4fb8,#ffd23f,#3ee0ff);transition:width .25s}
.bigword{position:absolute;left:50%;top:40%;transform:translate(-50%,-50%) scale(0);font-weight:700;font-size:clamp(44px,12vw,92px);color:#fff;white-space:nowrap;z-index:4;pointer-events:none;letter-spacing:2px}
.bigword.show{animation:fx-word 1.1s forwards}
.bigword.go{color:#ffd23f;text-shadow:0 5px 0 #ff4fb8}
.bigword.stop{color:#e8fbff;text-shadow:0 5px 0 #2b8bd8,0 0 30px #9fe3ff}
.bigword.yay{color:#7dff6a;text-shadow:0 5px 0 #1e7a3a;font-size:clamp(34px,9vw,64px)}
.bigword.oops{color:#fff;text-shadow:0 5px 0 #ff7a00;font-size:clamp(30px,8vw,56px)}
@keyframes fx-word{0%{transform:translate(-50%,-50%) scale(0) rotate(-8deg)}25%{transform:translate(-50%,-50%) scale(1.15) rotate(3deg)}40%,80%{transform:translate(-50%,-50%) scale(1) rotate(0);opacity:1}100%{transform:translate(-50%,-50%) scale(1);opacity:0}}
.tap-ring{position:absolute;width:30px;height:30px;margin:-15px;border-radius:50%;border:5px solid #ffd23f;animation:fx-tring .6s forwards;pointer-events:none;z-index:3}
@keyframes fx-tring{to{transform:scale(4);opacity:0}}

/* ---------- Wash Wash Bubbles ---------- */
.bath-scene{background:#cdeefc}
.bath-scene .tiles{position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,255,255,.7) 2px,transparent 2px) 0 0/44px 44px,linear-gradient(rgba(255,255,255,.7) 2px,transparent 2px) 0 0/44px 44px,linear-gradient(#bfe8fb,#9fd8f3)}
.bath-scene .window{position:absolute;left:5%;top:110px;width:22%;height:22%;border-radius:14px;background:linear-gradient(#bdf0ff,#fff);border:6px solid #fff;z-index:1}
.bath-scene .mirror{position:absolute;left:50%;top:104px;width:40%;max-width:280px;height:26%;transform:translateX(-50%);border-radius:50% 50% 20px 20px/40% 40% 20px 20px;background:linear-gradient(135deg,#e9fbff,#bfe9ff 60%,#fff);border:7px solid #ffb3d1;z-index:1}
.bath-scene .tiles{z-index:0}
.bath-scene .sink{position:absolute;left:4%;right:4%;bottom:0;height:34%;border-radius:40% 40% 0 0/22% 22% 0 0;background:linear-gradient(#fff,#e7f3f8);box-shadow:inset 0 10px 0 #f6fbfd,0 -4px 0 rgba(0,0,0,.05);z-index:1}
.hands{position:absolute;left:50%;bottom:20%;width:min(78%,520px);transform:translateX(-50%);z-index:3;pointer-events:none}
.hands .fx-img{position:static;width:100%;filter:drop-shadow(0 8px 6px rgba(0,0,0,.15))}
.hands.rub{animation:fx-rub .3s}
@keyframes fx-rub{30%{transform:translateX(calc(-50% - 8px)) rotate(-2deg)}70%{transform:translateX(calc(-50% + 8px)) rotate(2deg)}}
.hands .foam{position:absolute;inset:-6% 4% 10%;opacity:0;transition:opacity .6s;background:radial-gradient(circle at 20% 40%,#fff 0 9%,transparent 10%),radial-gradient(circle at 40% 30%,#fff 0 11%,transparent 12%),radial-gradient(circle at 62% 42%,#fff 0 10%,transparent 11%),radial-gradient(circle at 80% 32%,#fff 0 9%,transparent 10%),radial-gradient(circle at 50% 60%,#fff 0 12%,transparent 13%),radial-gradient(circle at 30% 66%,#f4fbff 0 9%,transparent 10%),radial-gradient(circle at 72% 64%,#f4fbff 0 9%,transparent 10%)}
.hands.sparkle .fx-img{filter:drop-shadow(0 0 16px #fff) brightness(1.06)}
.faucet{position:absolute;left:50%;top:38%;width:110px;height:120px;margin-left:-55px;border:0;background:none;cursor:pointer;z-index:4;touch-action:manipulation}
.faucet .spout{position:absolute;left:10px;right:10px;top:0;height:46px;border-radius:26px 26px 10px 10px;background:linear-gradient(#f2f6f8,#a9b9c2);box-shadow:inset 0 -6px 0 rgba(0,0,0,.1),0 5px 0 rgba(0,0,0,.1)}
.faucet .spout::after{content:"";position:absolute;left:50%;bottom:-18px;width:26px;height:22px;margin-left:-13px;background:#a9b9c2;border-radius:0 0 8px 8px}
.faucet .water{position:absolute;left:50%;top:64px;width:20px;margin-left:-10px;height:0;background:linear-gradient(rgba(120,200,255,.9),rgba(170,225,255,.6));border-radius:10px;transition:height .4s}
.faucet.on .water{height:120px}
.soap{position:absolute;right:6%;bottom:30%;width:76px;height:130px;border:0;background:none;cursor:pointer;z-index:4;touch-action:manipulation}
.soap .pump{position:absolute;left:50%;top:0;width:44px;height:30px;margin-left:-8px;border-radius:8px 8px 0 0;background:#ff8fc0;box-shadow:inset 0 -5px 0 rgba(0,0,0,.12)}
.soap .bottle{position:absolute;left:0;right:0;bottom:0;height:92px;border-radius:22px 22px 16px 16px;background:linear-gradient(90deg,#ff6fae,#ffa6cf);box-shadow:inset 0 -8px 0 rgba(0,0,0,.08);display:grid;place-items:center}
.soap .bottle b{font-size:13px;color:#fff;background:rgba(255,255,255,.3);padding:2px 6px;border-radius:6px}
.soap.press .pump{animation:fx-press .3s}
@keyframes fx-press{50%{transform:translateY(12px)}}
.soap.nope,.faucet.nope,.towel.nope{animation:fx-nope .4s}
.towel{position:absolute;left:5%;bottom:28%;width:84px;height:110px;border:0;border-radius:12px;cursor:pointer;z-index:4;background:repeating-linear-gradient(0deg,#ffd23f 0 14px,#ffe680 14px 28px);box-shadow:0 6px 0 rgba(0,0,0,.12);touch-action:manipulation}
.towel::before{content:"";position:absolute;left:-10px;right:-10px;top:-10px;height:12px;border-radius:6px;background:#c9d6dd}
.towel.swish{animation:fx-swish .6s}
@keyframes fx-swish{50%{transform:translateX(40vw) rotate(10deg)}}
.hint{animation:fx-hint 1s ease-in-out infinite!important}
@keyframes fx-hint{50%{transform:scale(1.12);filter:drop-shadow(0 0 14px #fff)}}
.rduck{right:5%;top:39%;width:clamp(56px,14vw,88px);z-index:4;filter:drop-shadow(0 5px 3px rgba(0,0,0,.2))}
.rduck.quack{animation:fx-quack3 .5s}
@keyframes fx-quack3{40%{transform:translateY(-16px) rotate(-10deg)}}
.germ{position:absolute;width:clamp(52px,13vw,70px);aspect-ratio:1;margin:calc(clamp(52px,13vw,70px)/-2);border:0;cursor:pointer;z-index:5;border-radius:46% 54% 50% 50%/55% 48% 52% 45%;background:radial-gradient(circle at 35% 30%,hsl(var(--hue) 80% 72%),hsl(var(--hue) 70% 45%));box-shadow:0 0 0 4px hsl(var(--hue) 70% 35% / .35);animation:fx-germ 1.2s ease-in-out infinite;touch-action:manipulation}
.germ .eye{position:absolute;top:30%;width:22%;height:24%;border-radius:50%;background:#fff;box-shadow:inset 3px 2px 0 3px #222}
.germ .eye.l{left:22%}.germ .eye.r{right:22%}
.germ .mouth{position:absolute;left:32%;right:32%;top:62%;height:14%;border-radius:0 0 50% 50%;background:#5a1a3a}
.germ.bye{animation:fx-germbye .45s forwards}
@keyframes fx-germ{50%{transform:scale(1.08,.94) rotate(6deg)}}
@keyframes fx-germbye{to{transform:scale(1.6) rotate(40deg);opacity:0}}
.bub{position:absolute;margin:-20px;border:2px solid rgba(255,255,255,.95);border-radius:50%;background:radial-gradient(circle at 30% 30%,rgba(255,255,255,.95) 0 12%,rgba(200,235,255,.35) 13%,rgba(255,170,230,.25));cursor:pointer;z-index:6;animation:fx-rise 4s ease-out forwards;padding:0;touch-action:manipulation}
.bub.popd{animation:fx-burst .2s forwards}
@keyframes fx-rise{to{transform:translateY(calc(var(--rise)*-1)) translateX(20px)}}
@keyframes fx-burst{to{transform:scale(1.6);opacity:0}}
.wash-steps{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);display:flex;gap:6px;margin:0;padding:0;list-style:none;z-index:5}
.wash-steps li{background:rgba(255,255,255,.75);border-radius:999px;padding:4px 10px;font-weight:700;font-size:clamp(12px,3.2vw,16px);color:#4a6a7a;white-space:nowrap}
.wash-steps li.on{background:#ff6fae;color:#fff;transform:scale(1.1)}
@media (prefers-reduced-motion:reduce){.fx *{animation-duration:.01s!important;animation-iteration-count:1!important}.fx .stomp-ring,.fx .print{animation:none!important}}
@media (prefers-reduced-motion:reduce){.fx .bigword.show{animation:none!important;transform:translate(-50%,-50%) scale(1)}}
.hands{bottom:12%;width:min(84%,440px)}
.hands-svg{display:block;width:100%;height:auto;filter:drop-shadow(0 8px 6px rgba(0,0,0,.15))}
.hands-svg .hand rect{fill:#f6c29c;stroke:#d9946b;stroke-width:3}
.hands-svg .hand rect.cuff{fill:#7fd0ff;stroke:#4aa8de}
.hands .foam{inset:-4% 6% 22%}
.hands.sparkle .hands-svg{filter:drop-shadow(0 0 16px #fff) brightness(1.06)}
.bath-scene .sink{height:30%}
.dancer{width:30%;margin:0 -3%}
.crew{bottom:12%;height:62%}

/* ================= character wrappers (so earned accessories move with the character) ================= */
.dino-hero{position:absolute}
.dino-hero .fx-img,.abc-engine .fx-img,.mama .fx-img{position:static;width:100%}
.mama{position:absolute}
.dancer .kidwrap{position:relative;width:100%;transform-origin:50% 100%;animation:fx-groove .94s ease-in-out infinite}
.dancer .fx-img{animation:none!important;max-height:none}
.dancer.d1 .kidwrap{animation-delay:-.23s}.dancer.d2 .kidwrap{animation-delay:-.47s}.dancer.d3 .kidwrap{animation-delay:-.7s}
.crew.frozen .kidwrap{animation-play-state:paused}
.crew.giggle .kidwrap{animation:fx-nope .3s 2}
.dancer.spin .kidwrap{animation:fx-spin .6s}.dancer.jump .kidwrap{animation:fx-jump .6s}.dancer.wiggle .kidwrap{animation:fx-nope .5s}.dancer.sway .kidwrap{animation:fx-sway2 .6s}
/* accessories are hidden until earned and switched on */
.dino-hat,.abc-hat,.mama .crown,.duckling .bow,.dancer .shades,.rduck.extra,.fx .stars,.fx .snowfall,.duck-scene .rainbow,.duck-scene .lily,.confetti-rain,.bath-scene .waves{display:none}

/* ---- Dino rewards ---- */
.r-partyhat .dino-hat{display:block;position:absolute;left:60%;top:-17%;width:24%;aspect-ratio:.75;transform:rotate(14deg);clip-path:polygon(50% 0,100% 100%,0 100%);background:repeating-linear-gradient(-35deg,#ff4f8b 0 12%,#ffd23f 12% 24%,#3ec6ff 24% 36%)}
.r-partyhat .dino-hat::after{content:"";position:absolute;left:50%;top:-2%;width:30%;aspect-ratio:1;margin-left:-15%;border-radius:50%;background:#fff}
.r-sunset .dino-scene{background:linear-gradient(#ff8a5c 0%,#ffb36b 40%,#ffe0a3 62%)}
.r-sunset .dino-scene .sun{top:34%;background:radial-gradient(#ffe7a0,#ff7a3d);box-shadow:0 0 50px #ff9a4d}
.r-sunset .dino-scene .palm::before{filter:hue-rotate(-20deg) brightness(.85)}
.r-night .dino-scene{background:linear-gradient(#0d1b4a 0%,#2a3b8a 50%,#4b4f9a 62%)}
.r-night .dino-scene .sun{background:radial-gradient(circle at 35% 35%,#fff,#dfe6ff);box-shadow:0 0 30px #c9d6ff}
.r-night .dino-scene .dirt{filter:brightness(.7) saturate(.8)}
.r-night .dino-scene .palm{filter:brightness(.6)}
.r-night .stars,.r-night .abc-scene .stars{display:block;position:absolute;inset:0 0 40% 0;background:radial-gradient(circle,#fff 0 1.5px,transparent 2.5px) 0 0/53px 41px,radial-gradient(circle,#fff6b0 0 2px,transparent 3px) 20px 17px/89px 67px;animation:fx-twinkle 2.4s ease-in-out infinite alternate}
@keyframes fx-twinkle{to{opacity:.45}}
.r-sparkprints .print svg{fill:#b44dff;filter:drop-shadow(0 0 6px #e3b3ff) drop-shadow(0 3px 0 rgba(0,0,0,.2))}
.r-rainbow .dust:nth-child(5n){background:#ff4f8b}.r-rainbow .dust:nth-child(5n+1){background:#ffb400}.r-rainbow .dust:nth-child(5n+2){background:#3ec300}.r-rainbow .dust:nth-child(5n+3){background:#1e90ff}.r-rainbow .dust:nth-child(5n+4){background:#a259ff}
.r-rainbow .stomp-ring{border-color:transparent;background:conic-gradient(#ff4f8b,#ffb400,#3ec300,#1e90ff,#a259ff,#ff4f8b) border-box;-webkit-mask:none}
.r-rainbow .stomp-ring span{background:#a259ff}

/* ---- Alphabet Express rewards ---- */
.r-conductor .abc-hat{display:block;position:absolute;left:52%;top:-2%;width:40%;height:14%;border-radius:50% 50% 6px 6px/80% 80% 6px 6px;background:linear-gradient(#2a5bd7,#1d3f9e);box-shadow:inset 0 -6px 0 #ffd23f}
.r-conductor .abc-hat::after{content:"";position:absolute;left:-12%;right:30%;bottom:-24%;height:30%;border-radius:0 0 50% 50%;background:#14306f}
.r-stripes .abc-car{background:repeating-linear-gradient(45deg,var(--car) 0 12px,#fff 12px 18px)}
.r-stripes .abc-car b{text-shadow:0 2px 0 rgba(0,0,0,.45),0 0 6px rgba(0,0,0,.35)}
.r-snow .abc-scene{background:linear-gradient(#a9d8ff,#eef8ff 60%)}
.r-snow .abc-scene .far{filter:saturate(0) brightness(2.1)}
.r-snow .abc-scene .near{filter:saturate(.1) brightness(1.9)}
.r-snow .abc-scene .flowers{background:radial-gradient(circle,#cfe8ff 0 4px,transparent 5px) 0 0/46px 30px,#f4fbff}
.r-snow .snowfall{display:block;position:absolute;inset:0;background:radial-gradient(circle,#fff 0 3px,transparent 4px) 0 0/60px 60px,radial-gradient(circle,#fff 0 2px,transparent 3px) 30px 20px/45px 45px;animation:fx-snow 6s linear infinite}
@keyframes fx-snow{to{background-position:20px 360px,50px 290px}}
.r-gold .abc-engine .fx-img{filter:sepia(1) saturate(4) hue-rotate(-12deg) brightness(1.15)}
.r-gold .abc-engine{filter:drop-shadow(0 0 14px #ffd23f)}
.r-night .abc-scene{background:linear-gradient(#0d1b4a,#2a3b8a 60%)}
.r-night .abc-scene .cloud{opacity:.25}
.r-night .abc-scene .hills,.r-night .abc-scene .flowers{filter:brightness(.55)}
.r-night .abc-car{box-shadow:inset 0 -8px 0 rgba(0,0,0,.18),0 0 18px var(--car)}

/* ---- Duck Pond rewards ---- */
.r-bows .duckling .bow{display:block;position:absolute;left:56%;top:2%;width:34%;aspect-ratio:2;background:radial-gradient(circle at 50% 50%,#ff2f7a 0 18%,transparent 19%),conic-gradient(from 90deg,#ff6fae 0 25%,transparent 0 50%,#ff6fae 0 75%,transparent 0);border-radius:40%}
.r-lilies .duck-scene .lily{display:block;position:absolute;width:26px;height:26px;border-radius:50%;background:radial-gradient(circle,#ffd23f 0 22%,#ff9ad0 23% 60%,transparent 61%);box-shadow:0 0 0 3px #fff6}
.r-lilies .lily.l1{left:14%;top:64%}.r-lilies .lily.l2{left:55%;top:78%}.r-lilies .lily.l3{left:88%;top:34%}
.r-crown .mama .crown{display:flex;position:absolute;left:24%;top:-3%;width:52%;justify-content:space-between;transform:rotate(-6deg)}
.r-crown .mama .crown b{width:19%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#ffb400 0 25%,#fff 26% 62%,transparent 63%)}
.r-crown .mama .crown b:nth-child(2n){background:radial-gradient(circle,#ffb400 0 25%,#ff8fc0 26% 62%,transparent 63%);margin-top:-5%}
.r-sunset .duck-scene{background:linear-gradient(#ff9a6b,#ffd29b 50%)}
.r-sunset .duck-scene .sun{top:40%;background:radial-gradient(#ffe0a0,#ff8a3d)}
.r-sunset .duck-scene .pond{filter:hue-rotate(-14deg) saturate(1.1)}
.r-rainbow .duck-scene .rainbow{display:block;position:absolute;left:12%;right:12%;top:26%;aspect-ratio:2;border-radius:50% 50% 0 0/100% 100% 0 0;background:radial-gradient(circle at 50% 100%,transparent 52%,#a259ff 52% 57%,#1e90ff 57% 62%,#3ec300 62% 67%,#ffd23f 67% 72%,#ff8a1f 72% 77%,#ff4f5f 77% 82%,transparent 82%);opacity:.75}

/* ---- Freeze Dance rewards ---- */
.r-shades .dancer .shades{display:flex;position:absolute;gap:4%;width:34%;height:6%;transform:translateX(-50%)}
.r-shades .dancer .shades b{flex:1;border-radius:40% 40% 50% 50%;background:linear-gradient(135deg,#222 60%,#666);box-shadow:0 0 0 2px #ff4fb8}
.r-shades .d0 .shades{left:63%;top:8%}.r-shades .d1 .shades{left:47%;top:19%}.r-shades .d2 .shades{left:56%;top:21%}.r-shades .d3 .shades{left:50%;top:27%}
.r-pastel .disco-scene .floor i{animation-name:fx-tile2}
@keyframes fx-tile2{0%{background:#ffc6e6}25%{background:#fff1a8}50%{background:#bdefff}75%{background:#d4ffc6}}
.r-confetti .confetti-rain{display:block;position:absolute;inset:-40px 0 0;background:linear-gradient(45deg,#ff4fb8 0 6px,transparent 6px) 0 0/70px 90px,linear-gradient(-30deg,#ffd23f 0 6px,transparent 6px) 25px 30px/80px 110px,linear-gradient(60deg,#3ee0ff 0 6px,transparent 6px) 50px 10px/60px 70px;animation:fx-conf 5s linear infinite}
@keyframes fx-conf{to{background-position:30px 540px,0 660px,60px 420px}}
.disco-scene.frozen .confetti-rain{animation-play-state:paused}
.r-galaxy .disco-scene{background:radial-gradient(circle at 70% 30%,#5b2a9e,#120a33 70%)}
.r-galaxy .disco-scene::before{content:"";position:absolute;inset:0;background:radial-gradient(circle,#fff 0 1.5px,transparent 2.5px) 0 0/47px 39px,radial-gradient(circle,#ffe9a8 0 2px,transparent 3px) 13px 21px/83px 71px,radial-gradient(circle at 20% 25%,#ff9ad0 0 18px,transparent 19px),radial-gradient(circle at 85% 18%,#7fd3ff 0 12px,transparent 13px)}
.r-goldball .disco-scene .ball{background:conic-gradient(#fff3b0,#e0a800,#fff3b0,#c48a00,#fff3b0,#e8b800,#fff3b0);box-shadow:0 0 34px #ffd23f,0 0 90px #ffb400}

/* ---- Bubble Wash rewards ---- */
.r-rainbowbub .bub{border-color:#fff;background:radial-gradient(circle at 30% 30%,#fff 0 12%,transparent 13%),conic-gradient(rgba(255,79,139,.45),rgba(255,210,63,.45),rgba(62,195,0,.45),rgba(30,144,255,.45),rgba(162,89,255,.45),rgba(255,79,139,.45))}
.r-duckfriends .rduck.extra{display:block}
.rduck.e1{right:auto;left:30%;top:56%;width:clamp(40px,10vw,62px);transform:scaleX(-1)}
.rduck.e2{right:22%;top:44%;width:clamp(34px,8vw,52px)}
.r-mint .soap .bottle{background:linear-gradient(90deg,#2fc28a,#8ff0c6)}.r-mint .soap .pump{background:#7be3b6}
.r-mint .bub{background:radial-gradient(circle at 30% 30%,rgba(255,255,255,.95) 0 12%,rgba(190,255,225,.4) 13%,rgba(120,230,190,.25))}
.r-ocean .bath-scene .tiles{background:linear-gradient(90deg,rgba(255,255,255,.35) 2px,transparent 2px) 0 0/44px 44px,linear-gradient(rgba(255,255,255,.35) 2px,transparent 2px) 0 0/44px 44px,linear-gradient(#5fc8f2,#1e7fc4)}
.r-ocean .bath-scene .waves{display:block;position:absolute;left:0;right:0;top:46%;height:40px;z-index:1;background:radial-gradient(circle at 50% 100%,transparent 18px,#bfefff 19px 24px,transparent 25px) 0 0/50px 40px repeat-x;animation:fx-wave 3s linear infinite}
@keyframes fx-wave{to{background-position:50px 0}}
.r-ocean .bath-scene .window{background:linear-gradient(#ffe9a8,#ffb36b)}
.r-goldduck .rduck:not(.extra){filter:sepia(1) saturate(3.5) hue-rotate(-15deg) brightness(1.1) drop-shadow(0 0 12px #ffd23f)}

/* ================= level meter, tray, level-up ================= */
.lv-meter{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:center;background:#fff;border-radius:999px;padding:6px 16px 6px 6px;box-shadow:0 4px 0 rgba(0,0,0,.08);max-width:440px;margin:6px auto}
.lv-badge{width:52px;height:52px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffe680,#ffb400);color:#5a3a00;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1;box-shadow:inset 0 -4px 0 rgba(0,0,0,.12),0 0 0 3px #fff,0 0 0 5px #ffb400;flex:none}
.lv-badge small{font-size:10px;font-weight:700;text-transform:uppercase}.lv-badge b{font-size:24px}
.lv-bar{flex:1;min-width:120px;height:18px;border-radius:9px;background:#eee;overflow:hidden;box-shadow:inset 0 2px 3px rgba(0,0,0,.1)}
.lv-bar i{display:block;height:100%;border-radius:9px;background:linear-gradient(90deg,#3ec300,#ffd23f,#ff4f8b);transition:width .8s}
.lv-next{width:100%;text-align:center;font-weight:700;font-size:14px;color:var(--ink2,#555);margin-top:-4px}
.lv-meter.big{border-radius:24px}
.lv-meter.big .lv-bar i{animation:lv-fill 1.2s ease-out}
@keyframes lv-fill{from{width:0}}
.lv-start{display:flex;flex-direction:column;align-items:center;gap:6px;margin-top:10px}
.hh-tray{z-index:30;background:rgba(255,250,240,.97);gap:10px;padding:16px}
.hh-tray h2{margin:0;font-size:28px}
.tray-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px;width:100%;max-width:640px}
.tray-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:12px 6px;border-radius:20px;border:4px solid #ffe08a;background:#fff;font-family:inherit;cursor:pointer;box-shadow:0 5px 0 rgba(0,0,0,.08);touch-action:manipulation}
.tray-item .ti-ico{font-size:40px;line-height:1.1}
.tray-item .ti-name{font-weight:700;font-size:15px;color:var(--ink,#223);text-align:center}
.tray-item .ti-state{font-size:12px;font-weight:700;color:#3a9a2a}
.tray-item.on{border-color:#3ec300;background:#effbe8}
.tray-item.locked{filter:grayscale(1);opacity:.55;border-style:dashed}
.tray-item.locked .ti-state{color:#777}
.tray-free{margin:2px 0;font-weight:700;font-size:14px;color:#a86a00;text-align:center}
.rbtn.lv-btn{background:#fff3c4}
.lv-up{z-index:40;background:radial-gradient(circle,rgba(255,240,170,.96),rgba(255,180,0,.94));overflow:hidden}
.lv-rays{position:absolute;left:50%;top:40%;width:200vmax;height:200vmax;margin:-100vmax 0 0 -100vmax;background:repeating-conic-gradient(rgba(255,255,255,.35) 0 8deg,transparent 8deg 20deg);animation:hh-spin 14s linear infinite;pointer-events:none}
.lv-title{position:relative;font-size:clamp(46px,13vw,84px);font-weight:700;color:#fff;text-shadow:0 5px 0 #ff4f8b,0 10px 0 rgba(0,0,0,.15);animation:lv-pop .7s cubic-bezier(.3,1.6,.5,1)}
@keyframes lv-pop{from{transform:scale(0) rotate(-12deg)}}
.lv-num{position:relative;width:110px;height:110px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#ffe680);display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1;color:#5a3a00;box-shadow:0 0 0 6px #fff,0 8px 0 6px rgba(0,0,0,.12);animation:lv-pop .8s .15s backwards cubic-bezier(.3,1.6,.5,1)}
.lv-num small{font-size:14px;font-weight:700;text-transform:uppercase}.lv-num b{font-size:56px}
.lv-gift{position:relative;display:flex;align-items:center;gap:12px;background:#fff;border-radius:24px;padding:10px 20px;box-shadow:0 6px 0 rgba(0,0,0,.12);animation:lv-pop .8s .35s backwards cubic-bezier(.3,1.6,.5,1)}
.lv-gift .ti-ico{font-size:52px;line-height:1}
.lv-gift small{display:block;font-size:13px;font-weight:700;color:#a86a00;text-transform:uppercase}
.lv-gift b{font-size:24px;color:var(--ink,#223)}
.lv-up .win-row{position:relative}
.lv-up .tray-free{position:relative;color:#6a4200}
@media (max-width:560px){.rbtn.lv-btn .lbl{display:none}}
@media (prefers-reduced-motion:reduce){.lv-rays,.lv-title,.lv-num,.lv-gift{animation:none!important}}

/* QA fix 2026-11-11: duck, duckling, and train art re-cut so nothing is chopped off.
   The new images have extra room on the right and bottom; these keep the characters the same size
   and keep hats, bows, and crowns lined up exactly where they were. */
.mama .fx-img{width:113.33%;max-width:none;margin:-2% 0 0 -2%}
.duckling .fx-img{width:113.1%;max-width:none;margin:-3.75% 0 0 -3.75%}
.abc-engine .fx-img{width:116.94%;max-width:none;margin:-1.67% 0 0 -1.67%}
