:root{--ink:#713952;--cream:#fff8e9;--rose:#d66196;--berry:#a44974;--mint:#8dbf9b;--gold:#f4c65f;--motion:250ms;font-family:'Trebuchet MS','Segoe UI',sans-serif;color:var(--ink);background:#fbe3d7;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;min-width:320px;height:100dvh;overflow:hidden}[hidden]{display:none!important}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;border:0;color:inherit;transition:transform .15s,filter .15s}button:focus-visible,a:focus-visible,.board:focus-visible,.world-map:focus-visible{outline:3px solid #6747a8;outline-offset:3px}button:disabled{cursor:default;opacity:.35}button:active:not(:disabled){transform:translateY(2px) scale(.97)}button:hover:not(:disabled){filter:brightness(1.04)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.play-scenery{position:fixed;inset:0;z-index:-1;background:linear-gradient(#fff2dc55,#fff4deaa),url('../assets/candy-world.png') center/cover no-repeat}body[data-world=cocoa] .play-scenery{background-image:linear-gradient(#fff2dc55,#fff4deaa),url('../assets/world-cocoa-cove.png')}body[data-view=map]{background:transparent}body[data-view=map]{isolation:isolate}body[data-view=map]:before{content:'';position:fixed;inset:-40px;z-index:-1;background:linear-gradient(#fff5e966,#ffefdaa0),var(--ambient-art) center/cover;filter:blur(23px)}body[data-view=map] .play-scenery{display:none}
.game-shell{max-width:620px;height:100dvh;margin:auto;padding:max(7px,env(safe-area-inset-top)) 12px max(8px,env(safe-area-inset-bottom));display:flex;flex-direction:column}.topbar{flex:none;display:flex;align-items:center;justify-content:space-between;height:58px;padding:0 7px 5px;gap:20px}.brand{display:block;text-decoration:none;width:112px;line-height:.75;transform:rotate(-5deg);filter:drop-shadow(0 3px 0 #8b3d6920);text-align:center;font-weight:900;letter-spacing:-1.7px}.brand>span{display:block;font-family:'Georgia',serif;font-style:italic;font-size:22px;color:#fff3c7;-webkit-text-stroke:.8px #a94662;paint-order:stroke fill;text-shadow:0 2px #a94662}.brand>strong{display:block;font-size:34px;color:#ffe48c;-webkit-text-stroke:1.3px #a94662;paint-order:stroke fill;text-shadow:0 3px #a94662;position:relative}.brand-spark{position:absolute;color:#fff3c7;font-size:13px;right:-3px;top:-3px;-webkit-text-stroke:0}.top-actions{display:flex;gap:8px}.round-button{height:38px;width:38px;border:2px solid #fffaf0;border-radius:50%;background:linear-gradient(#fffaf1,#ffe4d6);box-shadow:0 3px #b46a8545;font-weight:900;font-size:21px;color:#a85776}main{display:flex;flex:1;min-height:0}.map-view{width:100%;min-height:0;display:flex;flex-direction:column}.world-nav{display:flex;align-items:center;justify-content:center;gap:22px;flex:none;height:54px;padding-bottom:7px}.world-picker{width:190px;text-align:center}.world-picker h1{margin:0 0 5px;font:900 21px/1.1 'Trebuchet MS',sans-serif;letter-spacing:-.6px;color:#81435a;text-shadow:0 1px #fffae9}body[data-world=cocoa] .world-picker h1{color:#754c37}.world-tabs{display:flex;gap:8px;justify-content:center}.world-tab{position:relative;width:10px;height:10px;padding:0;border-radius:50%;background:#9a697641;border:1px solid #fff6e8aa}.world-tab:before{content:'';position:absolute;inset:-10px}.world-tab.active{background:#bb5683;border-color:#fff6e8;box-shadow:0 1px #99557a}.world-arrow{width:32px;height:38px;padding:0;background:none;font-size:40px;line-height:.6;font-family:'Georgia',serif;color:#985870;text-shadow:0 1px #fff5df}.world-arrow:focus-visible{border-radius:12px}.map-stage{flex:1;display:flex;align-items:center;justify-content:center;min-height:0}.world-map{position:relative;flex:none;overflow:hidden;border-radius:22px;isolation:isolate;touch-action:none;user-select:none;-webkit-user-select:none;transform:translateX(var(--drag,0px));box-shadow:0 0 0 2px #fff5df99,0 5px 15px #62393938;transition:transform .13s}.world-painting{display:block;width:100%;height:100%;pointer-events:none}.world-nodes{position:absolute;inset:0;pointer-events:none}.level-node{position:absolute;transform:translate(-50%,-50%);width:max(44px,calc(var(--scene-scale)*175px));height:max(44px,calc(var(--scene-scale)*155px));background:transparent;padding:0;pointer-events:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:calc(var(--scene-scale)*1px);border-radius:36%}.level-number{font-size:calc(var(--scene-scale)*78px);line-height:1;font-weight:900;color:#8e4164;text-shadow:0 1px #fff4c8,0 2px 0 #fff2cc;-webkit-text-stroke:calc(var(--scene-scale)*5px) #fff1d1;paint-order:stroke fill}.cocoa .level-number{color:#754a34}.level-stars{font-size:calc(var(--scene-scale)*30px);line-height:1;letter-spacing:calc(var(--scene-scale)*2px);white-space:nowrap;color:#cfad85;text-shadow:0 1px #fff8db}.level-stars .earned{color:#dc9b24;-webkit-text-stroke:calc(var(--scene-scale)*1.8px) #9f6437;paint-order:stroke fill}.node-hard{position:absolute;top:calc(50% - var(--scene-scale)*78px);right:calc(50% - var(--scene-scale)*73px);display:grid;place-items:center;width:clamp(13px,calc(var(--scene-scale)*37px),21px);height:clamp(13px,calc(var(--scene-scale)*37px),21px);border-radius:5px;background:#9965a5;border:1px solid #fff0c8;color:#fff0c8;box-shadow:0 1px 2px #72435245;font-size:clamp(10px,calc(var(--scene-scale)*26px),16px);line-height:1;transform:rotate(12deg)}.level-node.current .level-number{text-shadow:0 0 12px #fff5b7,0 0 5px #fff5b7,0 2px #fff3ce}.level-node:focus-visible{outline:2px solid #fffbce;outline-offset:-4px;box-shadow:0 0 13px #fff9c6}.level-node:active:not(:disabled){transform:translate(-50%,-50%) scale(.96)}
.play-view{--board-ratio:1;width:min(100%,calc((100dvh - 247px)*var(--board-ratio)));max-width:540px;margin:0 auto;display:flex;flex-direction:column;align-self:flex-start}.level-heading{background:linear-gradient(90deg,#fff6e8c9,#fff5e4aa);border-radius:12px;display:flex;gap:8px;align-items:center;min-height:31px;margin-bottom:5px;padding:0 5px}.level-button{padding:4px 0;background:none;white-space:nowrap;font-size:14px;font-weight:900;color:#944769}.level-name{font-weight:700;color:#945f71;font-size:11px;flex:1;text-align:center}.hard-badge{font-size:8px;padding:3px 5px;background:#956cb0;color:white;border-radius:5px;border:1px solid #fff4dc;font-weight:900;letter-spacing:.5px}.retry-button{flex:none;background:#fff3e2bd;width:29px;height:29px;border:2px solid #fff7e9;border-radius:50%;font-size:23px;line-height:1;color:#a96a81}
.objective-panel{position:relative;display:flex;align-items:center;gap:5px;height:83px;flex:none;margin-bottom:11px;padding:4px 5px 5px 10px;border:3px solid #fffaf0;border-radius:23px 36px 35px 23px;background:linear-gradient(170deg,#fffbea,#ffe0cf);box-shadow:0 4px #cf8aa6,0 6px 0 #fff1e9b0,inset 0 -5px #efc3b4}.objective-panel:before{content:'';position:absolute;top:-3px;left:13px;right:76px;height:9px;border-radius:0 0 70% 30%;background:#fffaf0;pointer-events:none}.goals{flex:1;display:flex;gap:3px;align-items:center;justify-content:space-around;min-width:0}.goal{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;min-width:0;flex:1;padding:0 3px 6px;background:transparent;height:67px}.goal-icon{height:31px;width:35px;flex:none;display:grid;place-items:center;filter:drop-shadow(0 2px 0 #c5988140)}.goal-icon svg{width:35px;height:35px}.goal-text{text-align:center}.goal-value{font-weight:900;font-size:23px;line-height:1;color:#ac4776;font-variant-numeric:tabular-nums;letter-spacing:-.7px;margin-top:1px}.goal-name{font-size:9px;line-height:1.1;font-weight:800;color:#91616e;margin-top:1px}.goal:not([data-goal=score]):not([data-goal=ingredients]) .goal-name{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.goal-progress{height:3px;border-radius:3px;background:#dbaebe7a;position:absolute;bottom:1px;left:20%;right:20%;overflow:hidden}.goal-progress i{display:block;height:100%;background:#d26b96;transition:width .2s}.goal.done .goal-value{color:#66864c}.goal.done .goal-progress i{background:#91b877}.moves{flex:none;position:relative;width:72px;height:76px;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:40% 40% 44% 44%;border:3px solid #fff4d2;background:radial-gradient(ellipse at 33% 17%,#f5a7c4,#e774a5 70%,#cd5791);box-shadow:0 4px #ad4c7c,inset 0 -5px #cf6099,inset 0 2px #fff0d6;transform:rotate(3deg);margin-top:-2px}.moves:before{content:'';position:absolute;width:22px;height:6px;top:5px;left:11px;border-radius:50%;background:#fff3de66;transform:rotate(-17deg)}.moves strong{font-size:42px;line-height:1;color:#fff9d9;letter-spacing:-1.5px;font-variant-numeric:tabular-nums;text-shadow:0 2px #b84c80;transform:rotate(-3deg)}.moves span{font-size:10px;color:#fff7e1;font-weight:900;letter-spacing:.3px;margin-top:1px;transform:rotate(-3deg)}.moves.low{filter:saturate(1.25)}.moves.low strong{animation:move-pulse 1s infinite}
.board-section{width:100%;position:relative}.board-frame{padding:8px;border:3px solid #fff9ec;border-radius:24px;background:linear-gradient(145deg,#fab6d2,#dd8cae);box-shadow:0 5px #a85a8d,0 8px #fff4e85c,0 13px 20px #65315322;position:relative}
.board{width:100%;aspect-ratio:1;position:relative;background:linear-gradient(135deg,#8a8ac7,#7476b3);border:3px solid #9d6d9d;border-radius:16px;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;box-shadow:inset 0 5px 15px #4936674d}.cells,.candies,.effects{position:absolute;inset:0}.cells{display:grid;grid-template-columns:repeat(var(--cols),1fr);grid-template-rows:repeat(var(--rows),1fr)}.cell{margin:2px;border-radius:9px;background:#ffffff0b;border:1px solid #ffffff12;position:relative}.cell:nth-child(even){background:#45376714}.cell.hole{background:#503d5633;border:0;border-radius:16px}.cell.jelly-1{background:#dbb4f066;box-shadow:inset 0 0 0 3px #efcfff55,inset 0 0 9px #fff1}.cell.jelly-2{background:#dda0d899;box-shadow:inset 0 0 0 4px #eccfff8c,inset 0 0 0 7px #dda8dd99}.blocker{position:absolute;inset:8%;border-radius:20%;display:grid;place-items:center}.blocker.frosting{background:linear-gradient(135deg,#fffbe9,#f0d6b4);border:3px solid #fff9e8;box-shadow:0 3px 0 #bca5bd,inset 0 -8px #eec7b0}.blocker.frosting:before{content:'';width:70%;height:70%;border:4px dashed #fffef3;border-radius:50%;box-shadow:inset 0 0 0 3px #f0cba7}.blocker.frosting.hp-2:after,.blocker.frosting.hp-3:after{content:'✿';position:absolute;font-size:36px;color:#f0b1c5;text-shadow:0 2px #d791ac}.blocker.chocolate{background:linear-gradient(135deg,#a26853,#67392e);border:3px solid #bd8061;box-shadow:inset 0 0 0 4px #774131,0 3px #573027}.blocker.chocolate:after{content:'';inset:7%;position:absolute;background:linear-gradient(90deg,transparent 44%,#522d2666 44% 56%,transparent 56%),linear-gradient(transparent 44%,#522d2666 44% 56%,transparent 56%);border:2px solid #d3a07e6b;border-radius:10%}.blocker.lock{background:transparent;border:2px solid #ddd4ec77;z-index:3}.blocker.lock:after{content:'⌑';font-size:46px;color:#fff1c6;text-shadow:0 2px #76527a}.candies{pointer-events:none}.candy{position:absolute;width:calc(100% / var(--cols));height:calc(100% / var(--rows));display:grid;place-items:center;transition:left var(--motion) cubic-bezier(.2,.75,.3,1),top var(--motion) cubic-bezier(.32,.01,.6,1),transform .18s,opacity .2s;will-change:left,top;z-index:2}.candy svg{width:96%;height:96%;overflow:visible;filter:drop-shadow(0 4px 2px #36284c55);transition:transform .18s}.candy:hover svg{transform:scale(1.05)}.candy.selected{z-index:5}.candy.selected:before,.candy.hinted:before,.cell.keyboard-focus:before{content:'';position:absolute;inset:3%;border:3px solid #fff4b0;border-radius:18px;box-shadow:0 0 12px #fffdd099}.candy.selected svg{transform:scale(1.13) rotate(-7deg)}.candy.hinted{animation:hint-wiggle 1s infinite}.candy.new svg{animation:candy-arrive .3s cubic-bezier(.3,1.6,.7,1)}.candy.clearing{animation:candy-pop .24s ease forwards;z-index:6}.candy.invalid{animation:shake .28s}
.candy-motion,.candy-shape{width:100%;height:100%;display:grid;place-items:center}.candy-shape svg{width:96%;height:96%}.delivery-basket{position:absolute;left:6%;right:6%;bottom:-3px;height:25%;z-index:4;pointer-events:none;filter:drop-shadow(0 2px #5e3b4270)}.delivery-basket svg{width:100%;height:100%;overflow:visible}.cell.exit{border-bottom:2px solid #ffdea1}
.effects{pointer-events:none;z-index:10;overflow:visible}.board-announcement{position:absolute;inset:0;pointer-events:none;z-index:20;display:grid;place-items:center;font-size:42px;color:#fff0a6;font-weight:900;opacity:0}.tool-area{position:relative;flex:none}.booster-tray{display:flex;align-items:center;justify-content:center;gap:15px;margin:13px auto 0;padding:7px 13px 5px;width:fit-content;max-width:100%;border-radius:21px;background:linear-gradient(#fff9e7,#f6decd);border:2px solid #fffaf3;box-shadow:0 3px #b7698440,inset 0 -3px #e4baa733}.booster{display:grid;place-items:center;position:relative;background:none;width:45px;height:45px;padding:0;flex:none}.booster-icon{display:grid;place-items:center;width:45px;height:45px;border-radius:15px;background:linear-gradient(#f7dde6,#f0bdd0);border:2px solid #fff7e8;box-shadow:0 2px #d98ca9,inset 0 3px #a95e8025}.booster-icon svg{width:38px;height:38px;filter:drop-shadow(0 2px #8c477b25)}.booster.active .booster-icon{background:linear-gradient(#ffedb0,#f5cb7e);outline:2px solid #bd759d;outline-offset:2px}.booster b{position:absolute;right:-4px;top:-5px;border-radius:45%;background:#fff0bc;min-width:19px;height:19px;display:grid;place-items:center;border:1px solid #d9a97e;font-size:11px;font-weight:900;box-shadow:0 2px #d7a0894d;color:#8a5470}.hint-button .booster-icon{background:linear-gradient(#f5e6ed,#e7cddd)}.tool-info{background:transparent;font-family:'Georgia',serif;font-weight:900;font-size:17px;width:21px;height:34px;margin-left:-5px;opacity:.65}.tool-description{position:absolute;left:0;right:0;top:100%;padding:7px 9px;border:1px solid #fff5e6;border-radius:12px;font-size:11px;font-weight:700;text-align:center;background:#fff0dff5;box-shadow:0 3px 10px #884b5b30;z-index:22}.status-line{font-size:11px;text-align:center;min-height:20px;padding:7px 0 0;font-weight:700;color:#8a546d;text-shadow:0 1px white}.tool-guide>div{display:flex;align-items:center;gap:16px;margin:15px 0}.tool-guide svg{width:44px;height:44px;flex:none}.tool-guide p{margin:0;font-size:12px;line-height:1.5}.tool-guide strong,.tool-guide span{display:block}.tool-guide strong{font-size:14px;color:#9c4a71}.tool-guide span{color:#936777}
dialog{border:4px solid #fffaf0;border-radius:28px;background:linear-gradient(135deg,#fff8e8,#ffe9dc);color:var(--ink);max-width:440px;width:calc(100% - 28px);max-height:90dvh;padding:32px 22px 25px;box-shadow:0 7px #c77695,0 30px 100px #65325955;overflow:auto}dialog::backdrop{background:#47325270;backdrop-filter:blur(5px)}.modal-close{position:absolute;right:12px;top:9px;background:#f9d2df;border:2px solid white;border-radius:50%;width:32px;height:32px;font-size:24px;line-height:1;color:#b06285}.modal-title{font-size:28px;text-align:center;font-weight:900;margin:7px 0 10px}.modal-copy{text-align:center;color:#a57280;font-size:12px;margin:0 0 16px;line-height:1.6}.primary-button{display:inline-flex;align-items:center;justify-content:center;min-width:130px;border:3px solid #fff9e8;border-radius:26px;background:linear-gradient(#f79fbf,#e6679b);box-shadow:0 4px #c45081;color:white;font-weight:900;font-size:15px;padding:11px 18px;text-shadow:0 1px #be5f84}.secondary-button{background:#f9dfda;padding:10px 16px;border-radius:22px;font-size:13px;font-weight:900;border:2px solid white}.modal-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:22px}.result-stars{font-size:47px;color:#ffbd47;text-shadow:0 3px #d29466;text-align:center;letter-spacing:6px;line-height:1.4}.result-stars .empty{color:#e9cdbd}.result-score{text-align:center;font-size:12px;color:#a26c7e}.result-score b{display:block;font-size:35px;font-weight:900;color:#ab567f}.settings-row{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #ecd0d0;padding:15px 0;font-size:14px;font-weight:800}.toggle{width:64px;border-radius:20px;background:#eed3d5;border:2px solid white;font-size:11px;font-weight:900;padding:9px}.toggle.on{background:#a5cd87;color:#456c38}.rules{font-size:12px;line-height:1.5;margin-top:23px;color:#936777}.rules summary{font-weight:900;cursor:pointer;font-size:13px}.rules p{margin:12px 0 0}.busy .board{cursor:wait}.confetti{position:fixed;top:-20px;width:10px;height:16px;background:var(--spark-color);left:var(--x);pointer-events:none;z-index:100;animation:confetti 2.2s ease-in forwards;animation-delay:var(--delay)}
@keyframes candy-arrive{from{opacity:0;transform:translateY(-35px) scale(.7)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes candy-pop{40%{transform:scale(1.3);filter:brightness(1.6)}to{transform:scale(.2);opacity:0}}@keyframes hint-wiggle{0%,100%{transform:rotate(0)}25%{transform:rotate(-7deg) scale(1.06)}75%{transform:rotate(7deg) scale(1.06)}}@keyframes shake{25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}@keyframes move-pulse{50%{transform:scale(1.1)}}@keyframes confetti{to{transform:translateY(110vh) rotate(650deg);opacity:.1}}

@media(max-width:380px){.game-shell{padding-left:9px;padding-right:9px}.topbar{height:49px}.brand{width:105px}.brand>strong{font-size:32px}.brand>span{font-size:21px}.round-button{width:35px;height:35px;font-size:20px}.level-name{font-size:9px}.level-button{font-size:13px}.level-heading{gap:5px}.objective-panel{height:76px;padding-left:5px;gap:2px;margin-bottom:9px}.goal{height:61px}.moves{height:69px}.moves{width:65px}.moves strong{font-size:39px}.goal-value{font-size:21px}.goal-icon,.goal-icon svg{width:32px;height:32px}.board-frame{padding:6px;border-radius:21px}.booster-tray{gap:12px;margin-top:11px;padding:6px 10px 4px}.status-line{min-height:17px;padding-top:5px}.booster,.booster-icon{width:42px;height:42px}.booster-icon svg{width:36px;height:36px}.world-picker h1{font-size:20px}.world-nav{gap:14px;height:50px}.world-map{border-radius:18px}.play-view{width:min(100%,calc((100dvh - 263px)*var(--board-ratio)))}}
@media(min-width:700px){.game-shell{max-width:670px;padding-top:10px}.topbar{height:62px;padding-left:32px;padding-right:32px}.world-nav{height:60px}.world-picker h1{font-size:24px}.world-map{border-radius:25px}.play-view{width:min(540px,calc((100dvh - 294px)*var(--board-ratio)))}.goal-value{font-size:25px}.goal-icon,.goal-icon svg{width:36px;height:36px}}

/* Candy lettering and little collectible stars live inside the painted cakes.
   Only these child layers move; the artwork anchors and touch regions stay put. */
.level-node{gap:calc(var(--scene-scale)*5px);padding-top:calc(var(--scene-scale)*36px);touch-action:none}
.level-node:active:not(:disabled){transform:translate(-50%,-50%)}
.level-node .level-number{height:calc(var(--scene-scale)*76px);display:flex;align-items:center;justify-content:center;gap:0;font:900 calc(var(--scene-scale)*74px)/1 'Trebuchet MS',sans-serif;color:#ab456f;-webkit-text-stroke:calc(var(--scene-scale)*4px) #702849;paint-order:stroke fill;text-shadow:0 1px #ffead6;transform-origin:50% 85%;transition:transform .2s cubic-bezier(.2,1.5,.5,1),filter .18s}
.map-art{position:relative;display:inline-grid;place-items:center;pointer-events:none;user-select:none;-webkit-user-select:none}
.map-art img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0;pointer-events:none}
.map-art.art-ready img{opacity:1}
.map-art.art-ready .map-art-fallback{visibility:hidden}
.map-digit{width:calc(var(--scene-scale)*61px);height:100%}
.map-art-fallback{display:block}
.level-node .level-stars{display:flex;align-items:center;justify-content:center;gap:calc(var(--scene-scale)*2px);line-height:1;letter-spacing:0;font-size:clamp(13px,calc(var(--scene-scale)*47px),18px);height:clamp(13px,calc(var(--scene-scale)*47px),18px);color:#c5aaba;text-shadow:none;transform-origin:50% 50%;pointer-events:none}
.map-star{display:inline-flex;width:1em;height:1em;flex:none;transform-origin:50% 75%}
.star-art{width:100%;height:100%}
.star-art .map-art-fallback{font-size:1em;color:#c0a5b4;-webkit-text-stroke:1px #7f647a;paint-order:stroke fill}
.map-star.earned .map-art-fallback{color:#ffc737;-webkit-text-stroke:1px #975223}
.map-star.earned img{filter:drop-shadow(0 1px 0 #92551f66)}
.map-star.empty img{filter:grayscale(1) sepia(.3) hue-rotate(265deg) saturate(.4) brightness(.86)}
.map-star.empty .art-ready img{opacity:.78}
.level-node.current .level-number{filter:drop-shadow(0 0 3px #fff3a9);text-shadow:none}
.level-node:focus-visible .level-number{animation:map-number-spring .43s both;filter:drop-shadow(0 1px 3px #fff3a9)}
.level-node:focus-visible .map-star{animation:map-star-hop .4s both;animation-delay:calc(var(--star-order)*45ms)}
@media(hover:hover) and (pointer:fine){
  .level-node:hover .level-number{animation:map-number-spring .43s both;filter:drop-shadow(0 1px 3px #fff3a9)}
  .level-node:hover .map-star{animation:map-star-hop .4s both;animation-delay:calc(var(--star-order)*45ms)}
}
.level-node.pressed .level-number{animation:map-number-squish .22s both;filter:drop-shadow(0 1px 2px #ffdf99)}
.level-node.pressed .map-star{animation:map-star-press .22s both;animation-delay:calc(var(--star-order)*20ms)}
.level-node .node-hard{pointer-events:none}
.result-stars{display:flex;justify-content:center;gap:9px;font-size:48px;line-height:1;letter-spacing:0;margin:19px 0 22px;text-shadow:none}
@keyframes map-number-spring{0%{transform:translateY(0) scale(1) rotate(0)}35%{transform:translateY(-3px) scale(1.1,.96) rotate(-5deg)}68%{transform:translateY(-1px) scale(.99,1.06) rotate(3deg)}100%{transform:translateY(-2px) scale(1.04) rotate(-1deg)}}
@keyframes map-number-squish{0%{transform:translateY(1px) scale(1.1,.83) rotate(2deg)}65%{transform:translateY(0) scale(.92,1.04) rotate(-2deg)}100%{transform:translateY(1px) scale(1.04,.9) rotate(0)}}
@keyframes map-star-hop{0%,100%{transform:translateY(0) rotate(0)}45%{transform:translateY(-3px) rotate(-10deg) scale(1.08)}75%{transform:translateY(1px) rotate(7deg)}}
@keyframes map-star-press{0%{transform:scale(.86) rotate(-8deg)}60%{transform:translateY(-2px) scale(1.1) rotate(7deg)}100%{transform:translateY(1px) scale(.96)}}
@media(prefers-reduced-motion:reduce){.level-node .level-number,.level-node .map-star{animation:none!important;transition:none}.level-node.pressed .level-number{transform:scale(1.03,.92)}}

.update-notice{position:fixed;z-index:10;bottom:max(12px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:12px;width:max-content;max-width:calc(100% - 24px);padding:10px 14px;border:2px solid #fff5df;border-radius:20px;background:#fff1dd;box-shadow:0 5px 20px #6a364333;font-size:12px;color:#653f4b}.update-notice[hidden]{display:none}.update-notice button{padding:9px 12px;font-size:12px;white-space:nowrap}.menu-update{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:15px 0;color:#795062;font-size:12px}.menu-update button{padding:9px;font-size:12px}
