/* Complete, isolated artwork. Keep legacy dimensions without sprite offsets. */
.world-art.expansion-art{background-size:contain!important;background-position:center!important;background-repeat:no-repeat!important}
.expansion-art.lucy,.expansion-art.clay-pal{object-fit:contain}
.story-single-pose{width:100%;height:100%;aspect-ratio:2/3;max-height:100%;background-size:contain!important;background-position:center bottom!important}
.story-coinbag.expansion-art{background-color:transparent;border:0;border-radius:0;box-shadow:none}
.choice-scene .player-picture>.expansion-art{display:block;width:100%;height:100%}
.portrait.excited .pal-bunny{background-image:url('./assets/expansion-web/15-friend-reactions/poppy-happy.webp')!important}
.portrait.excited .pal-bear{background-image:url('./assets/expansion-web/15-friend-reactions/milo-happy.webp')!important}
.portrait.excited .pal-frog{background-image:url('./assets/expansion-web/15-friend-reactions/clover-happy.webp')!important}
.passport-shop-stamps{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;padding:10px}.passport-shop-stamps>span{width:64px;height:70px}.passport-shop-art{display:block;width:100%;height:100%}.passport-shop-stamps .missing{filter:grayscale(1);opacity:.4}.story-passport .passport-shop-art{width:100%;height:100%;min-height:0}
.mission-picture{display:block;width:90px;height:75px;margin:8px auto}.empty-collection-art{display:block;width:min(250px,80%);height:220px;margin:auto;grid-column:1/-1}.theme-choice>.expansion-art{width:125px;height:100px}.theme-choice[aria-pressed=true]{outline:3px solid #5caf98;outline-offset:2px}
.little-room-decoration{display:block;width:190px;height:70px;margin:0 auto 8px;pointer-events:none}
.bedroom-scene .room-rug{display:block;position:absolute;background:transparent url('./assets/expansion-web/14-room-decor/rug.webp') center/contain no-repeat;box-shadow:none;border:0;left:25%;bottom:10%;width:50%;height:30%;transform:none;pointer-events:none}
.room-new-lamp,.room-new-poster{position:absolute;pointer-events:none}.room-new-lamp{right:4%;bottom:8%;width:10%;height:25%}.room-new-poster{left:80%;top:9%;width:12%;height:27%}.room-bunting.expansion-art{pointer-events:none}.room-display.theme-cushion{width:175px;height:120px}.theme-cushion .display-toys{bottom:30%}
/* Portrait art and toy anchors use the same coordinate space at every width. */
.little-shop.shop-scene{width:min(100%,440px,calc((100svh - 285px)*.666667));height:auto!important;min-height:0!important;max-height:none;aspect-ratio:2/3;flex:none!important;padding:0;background-size:100% 100%;--shop-art:url('./assets/expansion-web/02-portrait-interiors/toys.webp');--shelf-a:34%;--shelf-b:50%;--shelf-c:66%}
.little-shop.shop-color-1,.little-shop.shop-color-6{--shop-art:url('./assets/expansion-web/02-portrait-interiors/bakery.webp');--shelf-a:34%;--shelf-b:52%;--shelf-c:71%}
.little-shop.shop-color-2,.little-shop.shop-color-4{--shop-art:url('./assets/expansion-web/02-portrait-interiors/dumplings.webp');--shelf-a:32%;--shelf-b:52%;--shelf-c:72%}
.little-shop .little-shelf .little-toy{left:43%;height:19%;max-width:37%}.little-shop .little-toy:nth-child(2){left:61%}.little-shop .little-toy:nth-child(3){left:43%}
@media(max-width:760px){.little-shop.shop-scene{width:min(100%,calc((100svh - 220px)*.666667));min-width:190px;background-size:100% 100%}.little-shop .little-shop-friend{left:4%;bottom:4%}}
/* Long forearms reach the edges; the whole image remains intact. */
.story-closeup .story-palm{width:47vw;height:32vw;max-height:380px;top:50%;margin-top:0;translate:0 -50%;background-size:contain;background-position:center;background-repeat:no-repeat;rotate:0deg;transform:none}
.story-closeup .palm-left{left:-1vw;background-image:url('./assets/expansion-web/01-hands/left-squeeze.webp')}
.story-closeup .palm-right{right:-1vw;background-image:url('./assets/expansion-web/01-hands/right-squeeze.webp')}
.scene-release .story-palm{display:block}.scene-release .palm-left{background-image:url('./assets/expansion-web/01-hands/left-release.webp')}.scene-release .palm-right{background-image:url('./assets/expansion-web/01-hands/right-release.webp')}
.story-closeup #story-squeeze{width:min(40vw,280px)}
.story-package>.package-open{background-image:url('./assets/expansion-web/04-package-states/glowing-reveal.webp')!important}
.squish-stage:before{background:transparent url('./assets/expansion-web/19-material-effects/slow-rise-shadow.webp') center/100% auto no-repeat;filter:none;width:clamp(145px,27svh,210px);left:calc(50% - clamp(145px,27svh,210px)/2);height:48px;top:calc(50% + 67px)}
.squish-stage.feel-bouncy:after{content:'';position:absolute;width:75px;height:75px;right:20%;top:15%;background:url('./assets/expansion-web/19-material-effects/jelly-highlight.webp') center/contain no-repeat;opacity:.28;pointer-events:none;z-index:0}
.board-sparkle:after{background:url('./assets/expansion-web/10-celebrations/bubble-burst.webp') center/contain no-repeat}
@media(prefers-reduced-motion:no-preference){
.scene-squeeze .palm-left{animation:expansion-grip-left 2.2s ease-in-out 1.2s both}.scene-squeeze .palm-right{animation:expansion-grip-right 2.2s ease-in-out 1.2s both}
.scene-release .palm-left{animation:expansion-release-left 1.5s ease-out both}.scene-release .palm-right{animation:expansion-release-right 1.5s ease-out both}
@keyframes expansion-grip-left{35%,60%{transform:translateX(6%)}}@keyframes expansion-grip-right{35%,60%{transform:translateX(-6%)}}
@keyframes expansion-release-left{to{transform:translateX(-12%);opacity:0}}@keyframes expansion-release-right{to{transform:translateX(12%);opacity:0}}
}

/* Contextual artwork keeps the actions easy to recognize. */
.trade-picture{display:block;width:min(260px,70%);height:105px;margin:0 auto 6px}
.delivery-picture{display:block;width:150px;height:85px;margin:0 auto}
.trade-mission{display:block;width:42px;height:42px;flex:none}
.shopkeeper.in-scene .shopkeeper-art{width:100%;height:100%}
.shop-scene:has(button:hover) .shopkeeper-art,.shop-scene:has(button:focus-visible) .shopkeeper-art{background-image:url('./assets/expansion-web/07-shopkeeper/offer.webp')!important}
.shop-scene:has(button:active) .shopkeeper-art{background-image:url('./assets/expansion-web/07-shopkeeper/yes.webp')!important}
body:has(.lucy-celebration) .shopkeeper-art{background-image:url('./assets/expansion-web/07-shopkeeper/celebrate.webp')!important}
.parcel-button:active>.art-surprises{background-image:url('./assets/expansion-web/04-package-states/lid-lifted.webp')!important}
.story-closeup:has(#story-squeeze:active) .palm-left{background-image:url('./assets/expansion-web/01-hands/left-stretch.webp')}
.story-closeup:has(#story-squeeze:active) .palm-right{background-image:url('./assets/expansion-web/01-hands/right-stretch.webp')}
.little-shop .little-shop-friend .clay-pal{width:70px;height:85px}
@media(min-width:761px){.little-shop+.little-footer{margin-top:12px}.little-shop+.little-footer .btn{min-height:52px}.little-shop+.little-footer .btn>.world-art{width:36px;height:36px}}
@media(max-width:760px){.little-shop .little-shop-friend .clay-pal{width:55px;height:65px}.trade-mission{display:none}}

.theme-choices{grid-template-columns:repeat(2,minmax(0,1fr))}.theme-choice{min-width:0;max-width:100%;padding:8px}.theme-choice>.expansion-art{width:100%;max-width:125px;margin:auto}.theme-choice strong{display:block;font-size:14px}

.rarity.legendary{color:#76519a;background:linear-gradient(110deg,#ffecb0,#efd6ff,#c7f1e7);border:1px solid #bda068;font-weight:800}.rare-discovery.legendary,.personal-find{background:linear-gradient(110deg,#fff0bf,#efdcff,#d4f3e8);border:2px solid #e5c469;border-radius:18px;text-align:center;color:#76519a;padding:10px;margin:0 0 10px}.personal-find strong,.personal-find span{display:block}.personal-find span{font-size:12px;margin-top:4px}

/* Dumpling Slides: a pastel pipe toy in a bamboo cabinet. */
dialog:has(#dumpling-maze){width:min(560px,calc(100vw - 20px));padding:16px;max-height:calc(100svh - 20px);border:4px solid #fff9ed;box-shadow:0 8px 0 #c4a786,0 18px 45px #59406430}
dialog:has(#dumpling-maze) .modal-top{gap:10px;margin-bottom:6px;align-items:center}
dialog:has(#dumpling-maze) .modal-top h2{font-size:clamp(22px,5.8vw,29px);line-height:1.1;margin:0;outline:none}
dialog:has(#dumpling-maze) .modal-top .icon-button{width:44px;height:44px;min-width:44px;min-height:44px;box-shadow:0 3px #bfaccb}
dialog:has(#dumpling-maze) .modal-top .icon-button:focus:not(:focus-visible){outline:none}
dialog:has(#dumpling-maze) .modal-top .icon-button:focus-visible{outline:3px solid #8865a1;outline-offset:3px}
#dumpling-maze{max-width:480px;margin:auto}
.maze-status{font-size:15px;line-height:1.35;text-align:center;min-height:38px;margin:6px 0 10px;color:#70577f}
.maze-cabinet{position:relative;padding:10px 0 5px;border:6px solid #e9c797;border-radius:27px;background:linear-gradient(100deg,#fff0d6,#fffaeb 45%,#f9e4c5);box-shadow:inset 0 2px 0 #fff9e9,0 4px 0 #c9a97d;isolation:isolate}
.maze-entrances,.maze-prizes,.maze-spouts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;padding:0 10px}
.maze-entry{position:relative;margin:0 3px;border:2px solid #fffaf0;border-radius:17px 17px 9px 9px;background:linear-gradient(#ddf6ed,#a6decb);color:#365c59;min-height:46px;font-weight:900;font-size:20px;box-shadow:inset 0 2px #ffffffa8,0 4px #83b5a6;z-index:2;transition:transform .18s,box-shadow .18s}
.maze-entry:nth-child(2){background:linear-gradient(#ffe8dc,#f3c4b3);box-shadow:inset 0 2px #ffffffa8,0 4px #c99b89}
.maze-entry:nth-child(3){background:linear-gradient(#eee3fc,#d5c1ed);box-shadow:inset 0 2px #ffffffa8,0 4px #ad96c5}
.maze-entry:nth-child(4){background:linear-gradient(#fff2be,#f6dc8b);box-shadow:inset 0 2px #ffffffa8,0 4px #c9ad65}
.maze-entry:after{content:'';position:absolute;left:50%;bottom:-13px;width:26px;height:13px;transform:translateX(-50%);border-radius:0 0 10px 10px;background:linear-gradient(90deg,#78ad9c,#c7eadc 48%,#8ebfae);border:2px solid #effbf3;border-top:0;z-index:-1}
.maze-entry span{margin-left:4px;font-size:16px}
.maze-entry.selected,.maze-entry:enabled:active{transform:translateY(3px);box-shadow:inset 0 3px 5px #73615725,0 1px #98b29e;outline:2px solid #fff9dd;outline-offset:1px}
.maze-entry:disabled{opacity:1}.maze-entry:focus-visible{outline:3px solid #8563a1;outline-offset:3px}
.maze-board{position:relative;height:clamp(185px,34svh,300px);margin:0 10px;background:repeating-linear-gradient(97deg,#b58a5110 0 1px,transparent 1px 21px),radial-gradient(ellipse at center,#fff9e8,#f4e7cc);border-radius:12px;overflow:hidden;box-shadow:inset 0 2px 8px #9f80561c}
.maze-board:before,.maze-board:after{content:'✿';position:absolute;z-index:3;font-size:19px;color:#d0afcd;left:1%;top:24%;text-shadow:0 2px #fff7e2;pointer-events:none}
.maze-board:after{content:'❧';left:auto;right:1%;top:70%;color:#94b69a;font-size:22px}
.maze-world{position:relative;width:100%;height:300%;will-change:transform}
.maze-board svg{width:100%;height:100%;overflow:visible}
.maze-pipes{filter:drop-shadow(2px 3px 2px #65867445)}
.maze-pipes path{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.maze-pipes .pipe-edge{stroke:#8cb9a9;stroke-width:23px}.maze-pipes .pipe-body{stroke:#b0d8c8;stroke-width:20px}.maze-pipes .pipe-light{stroke:#c4e6d7;stroke-width:13px}.maze-pipes .pipe-shine{stroke:#eaf8eec9;stroke-width:3px}
.maze-spouts{height:19px;align-items:start;position:relative;z-index:2}
.maze-spouts i{justify-self:center;width:29px;height:18px;border:2px solid #eef9ed;border-radius:0 0 10px 10px;background:linear-gradient(90deg,#8dbda9,#d3efdf 44%,#98c5b4);box-shadow:0 2px 1px #6e9c8b33}
.maze-prizes{position:relative;align-items:start;min-height:106px;padding-top:3px;padding-bottom:8px;background:linear-gradient(transparent 54%,#f3d8af 55%,#f9e3c3 74%,#d5ae7f 76%,#e9c698 80%,transparent 81%);border-radius:0 0 20px 20px}
.maze-basket{position:relative;min-width:0;text-align:center;display:flex;flex-direction:column;align-items:center;border-radius:15px;padding:0 1px 3px}
.maze-box-art{position:relative;width:100%;max-width:100px;aspect-ratio:1.05;isolation:isolate}
.maze-box-art:after{content:'';position:absolute;left:14%;right:14%;bottom:10%;height:9%;border-radius:50%;background:#775b3730;filter:blur(3px);z-index:-1}
.maze-case,.maze-lid{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;filter:drop-shadow(0 2px 1px #99744820)}
.maze-lid{position:absolute;inset:0;clip-path:ellipse(42% 29% at 50% 40%);visibility:hidden;z-index:5}
.maze-case-prize{position:absolute;top:0;left:12%;width:76%;height:73%;pointer-events:none;z-index:3}
.maze-basket .maze-case-prize .toy{width:100%;height:100%;max-width:none;filter:drop-shadow(0 3px 2px #8b67322b)}
.maze-basket .maze-case-label{position:relative;display:block;min-height:22px;padding:3px 6px;max-width:100%;font-size:10px;font-weight:800;line-height:13px;white-space:normal;text-align:center;color:#79617e}
.maze-basket:not(.opened) .maze-case-label{border-radius:4px 4px 7px 7px;background:#fff2d7;box-shadow:0 2px #cfa978;font-size:13px;min-width:23px;transform:rotate(-5deg);margin-top:-8px;z-index:6}
.maze-basket:not(.opened) .maze-case-label:before{content:'';position:absolute;left:50%;top:-7px;height:8px;border-left:2px solid #bf9966}
.maze-basket.won{background:radial-gradient(ellipse,#fff0b1aa,transparent 72%)}
.maze-basket.won .maze-case-label{color:#684c82;background:#e8d8f2;clip-path:polygon(0 0,100% 0,93% 50%,100% 100%,0 100%,7% 50%);padding:4px 11px;min-width:56px;font-size:11px}
.maze-basket.won.is-gold .maze-case-label{background:#f9dc8b;color:#74521f}
.maze-basket.is-gold .maze-case-prize{filter:drop-shadow(0 0 7px #f2cf7a)}
.maze-sparkles{display:none;position:absolute;inset:-3% 0 auto;font-size:18px;color:#bf8b2a;z-index:4;pointer-events:none}
.maze-basket.opened.is-gold .maze-sparkles{display:block;animation:maze-sparkle 1.5s ease-out both}
.maze-basket.opened .maze-lid{visibility:visible;animation:maze-lid-lift .9s ease-out both}
.maze-basket.opened .maze-case-prize{animation:maze-prize-rise .85s cubic-bezier(.22,.7,.3,1) both}
.maze-steam{position:absolute;inset:0;z-index:4;pointer-events:none}
.maze-steam i{position:absolute;left:25%;top:25%;width:12%;height:28%;border-radius:50%;background:#fffdf3;filter:blur(3px);opacity:0}
.maze-steam i:nth-child(2){left:46%}.maze-steam i:nth-child(3){left:66%}
.maze-basket.opened .maze-steam i{animation:maze-steam 1s ease-out both}.maze-basket.opened .maze-steam i:nth-child(2){animation-delay:.12s}.maze-basket.opened .maze-steam i:nth-child(3){animation-delay:.22s}
.maze-other-prize .maze-case-label{color:#857485}.maze-other-prize .maze-case-prize{opacity:.9}
.maze-tour .maze-prizes,.maze-travel .maze-prizes,.maze-choosing .maze-prizes,.maze-tour .maze-spouts,.maze-travel .maze-spouts,.maze-choosing .maze-spouts{visibility:hidden}
.maze-rider,.maze-demo-bump{position:absolute;width:29px;height:29px;pointer-events:none;z-index:2;border-radius:50%;background:radial-gradient(ellipse at 35% 28%,#f0fff0,#b4ddc5 48%,#82b5a0);box-shadow:inset -2px -3px 4px #75a88b55,0 3px 5px #537d6955;transform:translate(-50%,-50%)}
.maze-rider .toy{visibility:hidden}
.maze-ready,.maze-my-turn{margin-top:14px;min-height:48px!important}
.maze-help{display:flex;align-items:center;justify-content:center;gap:8px;width:max-content!important;max-width:100%;margin:9px auto 0;padding:5px 15px;border:1px solid #ddcde8;border-radius:24px;background:#f2e9f7;text-decoration:none!important;font-size:13px;min-height:40px;color:#76558b}
.maze-help span{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#fff9ef;color:#9571ad;font-size:12px;box-shadow:0 2px #d3bfdc}
.maze-peek,.maze-replay,.maze-skip{min-height:44px}.maze-note{font-size:11px;line-height:1.4;text-align:center;margin:8px 0 0;color:#927b8d}
#dumpling-maze [hidden]{display:none!important}
.maze-demo-heading{display:flex;align-items:center;justify-content:space-between;color:#80609b;font-size:13px;height:30px}
.maze-demo .maze-entry{display:grid;place-items:center}.maze-demo .maze-board{height:clamp(170px,29svh,250px)}
.maze-demo-hand{position:absolute;left:5%;top:0;font-size:34px;filter:drop-shadow(0 3px 2px #80609b33);z-index:4}
.maze-demo-sparkle .maze-case{filter:drop-shadow(0 0 8px #edc44e)}
.maze-demo-confetti{text-align:center;color:#c38e22;font-size:20px;letter-spacing:10px;height:18px}
.maze-launch{margin-top:10px}.maze-launch small{display:block;font-size:12px}.maze-launch .toy{width:48px;height:48px}
@keyframes maze-lid-lift{0%{opacity:1;transform:none}65%{opacity:1;transform:translate(-12%,-39%) rotate(-22deg)}100%{opacity:0;transform:translate(-17%,-48%) rotate(-28deg)}}
@keyframes maze-prize-rise{0%{opacity:0;transform:translateY(25%) scale(.7)}60%{opacity:1;transform:translateY(-9%) scale(1.04,.96)}80%{transform:translateY(1%) scale(.98,1.02)}100%{opacity:1;transform:none}}
@keyframes maze-steam{0%{opacity:0;transform:translateY(0) scale(.7)}25%{opacity:.65}100%{opacity:0;transform:translateY(-160%) scale(1.5)}}
@keyframes maze-sparkle{0%{opacity:0;transform:scale(.6)}35%{opacity:1;transform:scale(1.15)}100%{opacity:.7;transform:scale(1)}}
@media(prefers-reduced-motion:reduce){#dumpling-maze *,#dumpling-maze *:before,#dumpling-maze *:after{animation:none!important;transition:none!important}.maze-basket.opened .maze-lid{visibility:hidden}.maze-other-prize .maze-case-prize{opacity:1}}
@media(max-height:760px){.maze-board{height:clamp(155px,28svh,210px)}.maze-demo .maze-board{height:155px}.maze-status{font-size:13px;min-height:34px}.maze-prizes{min-height:92px}.maze-box-art{max-width:78px}dialog:has(#dumpling-maze){padding:12px}}

.dumpling-games{display:flex;justify-content:center;gap:18px;flex-shrink:0;margin:14px 0}.game-app-icon{display:block;width:clamp(88px,24vw,116px);height:clamp(88px,24vw,116px);padding:0;border:3px solid #fff8ef;border-radius:24%;overflow:hidden;background:#daf2e7;box-shadow:0 5px 0 #b8a1c8,0 8px 14px #71557820;cursor:pointer;flex-shrink:0;touch-action:manipulation}.game-app-icon img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}.game-app-icon.shuffle-launch{margin:14px auto;background:#dac0f2}.dumpling-games .game-app-icon{margin:0}.game-app-icon:hover{filter:brightness(1.04)}.game-app-icon:active{transform:translateY(3px);box-shadow:0 2px 0 #b8a1c8}.game-app-icon:focus-visible{outline:3px solid #75518f;outline-offset:5px}.little-modal:has(#dumpling-maze) .modal-top h2{display:block;font-size:21px}
