:root{--bg-top:#1f7d55;--bg-bottom:#0c3b2c;--panel:#fff8ea;--red:#e8323c;--gold:#d9a520;--ink:#3a1f14;--muted:#9a6b4f}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background-color:var(--bg-bottom);background-image:radial-gradient(circle at 50% 0%, var(--bg-top), var(--bg-bottom) 70%);color:var(--ink);touch-action:none;-webkit-user-select:none;user-select:none;background-position:50%;background-size:cover;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overflow:hidden}#app{flex-direction:column;gap:8px;max-width:560px;height:100dvh;margin:0 auto;padding:12px 12px 10px;display:flex}#hud{grid-template-columns:1fr 1.2fr;gap:8px;display:grid}#dish,#timer{background:var(--panel);border-radius:14px;box-shadow:0 3px #0003}#dish{flex-direction:column;justify-content:center;min-width:0;padding:6px 12px;display:flex}#dish-level{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:11px}#dish-name{white-space:nowrap;text-overflow:ellipsis;font-size:17px;font-weight:800;overflow:hidden}#timer{--left:1;align-items:center;gap:10px;min-height:52px;padding:4px 14px 4px 10px;display:flex}#kt{transform-origin:50% 85%;flex:none;width:48px;height:48px;margin-top:4px;position:relative}.kt-knob{background:linear-gradient(#ffe08a, var(--gold));border:2px solid #5a2a05;border-radius:5px 5px 2px 2px;width:16px;height:10px;position:absolute;top:-7px;left:50%;transform:translate(-50%)}.kt-face{border:5px solid var(--red);background:#fffdf6;border-radius:50%;position:absolute;inset:0;box-shadow:0 2px #9e1624,inset 0 0 0 1.5px #5a0a1259}.kt-wedge,.kt-ticks{border-radius:50%;position:absolute;inset:1px}.kt-wedge{background:conic-gradient(var(--wedge,#5fc84a) calc(var(--left) * 1turn), transparent 0);opacity:.85}.kt-ticks{background:repeating-conic-gradient(var(--ink) 0 2deg, transparent 2deg 30deg);opacity:.6;-webkit-mask:radial-gradient(circle,#0000 66%,#000 67%);mask:radial-gradient(circle,#0000 66%,#000 67%)}.kt-hand{background:var(--ink);transform-origin:50% 100%;width:3px;height:44%;transform:rotate(calc(var(--left) * 1turn));border-radius:2px;margin-left:-1.5px;position:absolute;bottom:50%;left:50%}.kt-face:after{content:"";background:var(--gold);border:1.5px solid #5a2a05;border-radius:50%;width:9px;height:9px;margin:-4.5px 0 0 -4.5px;position:absolute;top:50%;left:50%}#timer.tick-a #kt{animation:.28s ease-out kt-tick-a}#timer.tick-b #kt{animation:.28s ease-out kt-tick-b}@keyframes kt-tick-a{30%{transform:rotate(-5deg)scale(1.04)}}@keyframes kt-tick-b{30%{transform:rotate(5deg)scale(1.04)}}#timer.low{--wedge:var(--red)}#timer.low #kt{animation:1s linear infinite kt-ring}@keyframes kt-ring{0%,36%,to{transform:rotate(0)}4%,12%,20%,28%{transform:rotate(-9deg)}8%,16%,24%,32%{transform:rotate(9deg)}}#timer.low #timer-text{color:var(--red);animation:.5s ease-in-out infinite alternate pulse}#timer.gain #kt{animation:.5s cubic-bezier(.3,1.8,.5,1) kt-gain}#timer.gain #timer-text{animation:.6s ease-out kt-gain-text}@keyframes kt-gain{40%{transform:scale(1.28)rotate(-8deg)}}@keyframes kt-gain-text{25%{color:#2f9a28;transform:scale(1.22)}}#timer-text{text-align:center;font-variant-numeric:tabular-nums;color:var(--ink);flex:1;font-size:26px;font-weight:800;transition:color .3s}@keyframes pulse{to{transform:scale(1.12)}}#goals{flex-wrap:wrap;justify-content:center;gap:6px;min-height:36px;display:flex}.goal{font-variant-numeric:tabular-nums;background:#fff8eaf0;border-radius:999px;align-items:center;gap:4px;padding:2px 10px 2px 3px;font-size:14px;font-weight:700;transition:background .2s;display:flex}.goal .role{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:10px;font-weight:700}.goal.dish{outline:2px solid var(--gold)}.goal.done{background:#d5f5bf}.goal.locked{opacity:.45}.layer-icon{background:linear-gradient(#e9b77a,#c9803f);border-radius:5px;flex:none;width:22px;height:22px;margin:3px;display:inline-block;box-shadow:inset 0 0 0 3px #94521f}#board{flex:1;width:100%;min-height:0;display:block}#coach{background:var(--panel);border:2px solid var(--gold);text-align:center;border-radius:14px;margin:0;padding:9px 13px;font-size:14px;line-height:1.35;box-shadow:0 3px #0003}#boosters{justify-content:center;gap:10px;display:flex}.booster{touch-action:none;align-items:center;gap:6px;padding:5px 12px 5px 7px;transition:transform .15s,box-shadow .15s,background .15s;display:flex}.booster:hover:not(:disabled){transform:translateY(-2px)}.booster-icon{flex:none;width:32px;height:32px;overflow:visible}.booster .ad-tag{letter-spacing:.06em;text-transform:uppercase;color:#fff;background:var(--gold);border-radius:6px;padding:1px 5px;font-size:10px;font-weight:800}.booster.aiming,.booster.active{background:linear-gradient(#fff1b8,#ffc23a);animation:.7s ease-in-out infinite alternate booster-armed;transform:translateY(-4px)scale(1.07)}.booster.active:disabled{opacity:1}.booster.aiming .ad-tag,.booster.active .ad-tag{background:var(--red)}@keyframes booster-armed{0%{box-shadow:0 0 0 3px #fff,0 0 8px 3px #ffbe28b3,0 4px #00000040}to{box-shadow:0 0 0 3px #fff,0 0 22px 9px #ffbe28f2,0 4px #00000040}}.booster.aiming .icon-rambutan{animation:.5s ease-in-out infinite alternate bomb-sway}.icon-rambutan canvas{display:block}.booster.active .icon-shuffle .toss{animation:.45s ease-in-out infinite alternate wok-toss}@keyframes wok-toss{to{transform:translateY(-5px)rotate(-8deg)}}@keyframes bomb-sway{0%{transform:rotate(-10deg)}to{transform:rotate(10deg)}}#bomb-ghost{pointer-events:none;z-index:50;filter:drop-shadow(0 6px 6px #00000073);width:72px;height:72px;margin:-46px 0 0 -34px;position:fixed;top:0;left:0}#bomb-ghost[hidden]{display:none}#bomb-ghost canvas{animation:.35s ease-in-out infinite alternate bomb-sway;display:block}#bomb-ghost.landing{transition:transform .16s ease-in}#bomb-ghost.landing canvas{animation:none}body.bomb-cursor,body.bomb-cursor *{cursor:none!important}#toolbar{justify-content:center;align-items:center;gap:8px;display:flex}button{font:inherit;color:var(--ink);background:var(--panel);cursor:pointer;border:0;border-radius:12px;padding:9px 14px;font-weight:700;box-shadow:0 3px #00000038}button:active{transform:translateY(2px);box-shadow:0 1px #00000038}button.primary{background:var(--red);color:#fff}button.reward{background:var(--gold);color:#fff}button:disabled{opacity:.6;cursor:not-allowed}#btn-sound{min-width:42px;padding:9px 12px}#btn-sound.off{color:var(--muted);text-decoration:line-through;text-decoration-thickness:2px}#seed{color:#ffffff8c;font-variant-numeric:tabular-nums;font-size:12px}#overlay{background:#081c149e;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0;overflow:hidden}#overlay[hidden]{display:none}#overlay.show{animation:.3s ease-out both backdrop-in}@keyframes backdrop-in{0%{background:#081c1400}}.panel{background:radial-gradient(circle at 50% 0%, #fffdf5, transparent 60%), var(--panel);text-align:center;width:min(100%,380px);box-shadow:0 0 0 4px #fff, 0 0 0 7px var(--gold), 0 14px 36px #0006;border-radius:22px;padding:30px 22px 20px;position:relative}#overlay.show .panel{animation:.55s cubic-bezier(.2,1.5,.4,1) both panel-in}#overlay.lose.show .panel{animation:.55s cubic-bezier(.2,1.5,.4,1) both panel-in,.5s ease-in-out .5s panel-shake}@keyframes panel-in{0%{opacity:0;transform:translateY(60px)scale(.6)rotate(-4deg)}}@keyframes panel-shake{20%,60%{transform:translate(-8px)rotate(-1.5deg)}40%,80%{transform:translate(8px)rotate(1.5deg)}}#overlay-kicker{background:linear-gradient(#ff5a60, var(--red));color:#fff;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;border-radius:8px;margin:0;padding:7px 20px;font-size:12px;font-weight:800;position:absolute;top:-17px;left:50%;transform:translate(-50%);box-shadow:0 3px #9e1624}#overlay.win #overlay-kicker{background:linear-gradient(#5fd35f,#2f9a28);box-shadow:0 3px #1d6b18}#overlay.lose #overlay-kicker{background:linear-gradient(#8a7a70,#5d4f47);box-shadow:0 3px #3a2f29}#overlay.show #overlay-kicker{animation:.45s cubic-bezier(.2,1.6,.4,1) .18s both ribbon-in}@keyframes ribbon-in{0%{opacity:0;transform:translate(-50%,-30px)scale(.6)}}#overlay-hero{place-items:center;height:118px;margin:0 auto 2px;display:grid;position:relative}#overlay-hero:empty{display:none}.hero-rays{background:repeating-conic-gradient(#ffc43a80 0 11deg, transparent 11deg 22.5deg);border-radius:50%;width:230px;height:230px;animation:16s linear infinite rays-spin;position:absolute;-webkit-mask:radial-gradient(circle,#000 22%,#0000 68%);mask:radial-gradient(circle,#000 22%,#0000 68%)}#overlay.lose .hero-rays{background:repeating-conic-gradient(#786e6447 0 11deg, transparent 11deg 22.5deg);animation-duration:40s}@keyframes rays-spin{to{transform:rotate(1turn)}}.hero-dish{animation:.6s cubic-bezier(.2,1.6,.4,1) .2s both hero-in,2.4s ease-in-out .9s infinite hero-bob;position:relative}.hero-dish canvas{filter:drop-shadow(0 8px 6px #3c1e0a59);display:block}#overlay.lose .hero-dish canvas{filter:grayscale(.75)brightness(.95)drop-shadow(0 8px 6px #3c1e0a4d)}#overlay.lose .hero-dish{animation:.6s cubic-bezier(.2,1.6,.4,1) .2s both hero-in,3s ease-in-out .9s infinite hero-sag}@keyframes hero-in{0%{opacity:0;transform:translateY(30px)scale(.3)rotate(-20deg)}}@keyframes hero-bob{50%{transform:translateY(-6px)rotate(2deg)}}@keyframes hero-sag{50%{transform:translateY(3px)rotate(-5deg)}}.hero-alarm{font-size:34px;animation:.5s cubic-bezier(.2,1.6,.4,1) .5s both hero-in,1s linear 1s infinite kt-ring;position:absolute;top:4px;right:-8px}.panel h2{margin:4px 0 6px;font-size:25px;line-height:1.15}#overlay.lose .panel h2{color:var(--red)}.panel h2 .word{white-space:nowrap;display:inline-block}.panel h2 .ch{animation:.5s cubic-bezier(.2,1.8,.4,1) both letter-in;animation-delay:calc(.3s + var(--i) * 28ms);display:inline-block}@keyframes letter-in{0%{opacity:0;transform:translateY(-22px)scale(.3)rotate(-12deg)}}.stars{justify-content:center;align-items:flex-end;gap:4px;height:72px;display:flex}.stars:empty{display:none}.star{color:#e3d6bb;text-shadow:0 2px #c4b393;animation:.55s cubic-bezier(.2,1.8,.4,1) both star-in;animation-delay:calc(.75s + var(--i) * .3s);font-size:54px;line-height:1;position:relative}.star:nth-child(2){font-size:70px;transform:translateY(-8px)}.star.earned{color:#ffc21a;text-shadow:0 3px #a87800,0 0 16px #ffc41ed9}.star.earned:after{content:"";opacity:0;animation:.6s ease-out both star-ring;animation-delay:calc(.95s + var(--i) * .3s);border:3px solid #ffdc5ae6;border-radius:50%;position:absolute;inset:10% 5%}@keyframes star-in{0%{opacity:0;transform:scale(0)rotate(-140deg)}}@keyframes star-ring{0%{opacity:1;transform:scale(.4)}to{opacity:0;transform:scale(1.9)}}.spare-chip{color:#2f7a1f;font-variant-numeric:tabular-nums;background:#e6f6d8;border-radius:999px;align-items:center;gap:6px;margin-top:4px;padding:4px 12px;font-weight:800;animation:.4s 1.5s both row-in;display:inline-flex}.spare-chip b{font-size:18px}#overlay-note{color:var(--muted);margin:10px 0 0;font-size:12px;animation:.4s 1s both fade-in}#overlay-note:empty{display:none}#overlay.intro #overlay-note{color:#8a4a12;background:#fde8c4;border-radius:999px;padding:4px 12px;font-size:13px;font-weight:800;display:inline-block}#overlay.intro #overlay-note:before{content:"⏱️ "}@keyframes fade-in{0%{opacity:0}}.actions{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:16px;display:flex}.actions button{animation:.45s cubic-bezier(.2,1.6,.4,1) both btn-in;animation-delay:calc(var(--after,.75s) + var(--j,0) * 80ms)}.actions button.primary,.actions button.reward{animation:.45s cubic-bezier(.2,1.6,.4,1) both btn-in,1.1s ease-in-out infinite alternate breathe;animation-delay:calc(var(--after,.75s) + var(--j,0) * 80ms), calc(var(--after,.75s) + .5s);padding:11px 22px;font-size:16px;position:relative;overflow:hidden}.actions button.primary:after,.actions button.reward:after{content:"";background:linear-gradient(100deg,#0000,#ffffff8c,#0000);width:40%;animation:2.6s ease-in-out 1.4s infinite glint;position:absolute;top:0;bottom:0;left:-60%;transform:skew(-20deg)}@keyframes btn-in{0%{opacity:0;transform:translateY(16px)scale(.6)}}@keyframes breathe{to{transform:scale(1.06)}}@keyframes glint{0%{left:-60%}40%,to{left:130%}}@keyframes row-in{0%{opacity:0;transform:translate(-18px)}}.recipe{text-align:left;gap:8px;margin-top:8px;display:grid}.recipe-group{animation:.4s cubic-bezier(.2,1.4,.4,1) both row-in;animation-delay:calc(.5s + var(--i) * 90ms);background:#d9a5201a;border-radius:12px;flex-wrap:wrap;align-items:center;gap:6px;padding:5px 8px;display:flex}.recipe-group>strong{text-transform:uppercase;letter-spacing:.05em;width:62px;color:var(--muted);font-size:11px}.recipe-item{font-variant-numeric:tabular-nums;align-items:center;gap:2px;font-weight:700;display:flex}.recipe-item canvas{animation:.4s cubic-bezier(.2,1.8,.4,1) both pop-in;animation-delay:calc(.7s + var(--j,0) * 70ms)}@keyframes pop-in{0%{opacity:0;transform:scale(0)}}.recipe-hint{color:var(--ink);margin:10px 0 0;font-size:13px;animation:.4s .9s both fade-in}#overlay-confetti{pointer-events:none;position:absolute;inset:0}.confetti{opacity:0;width:9px;height:15px;animation:confetti-fall var(--d) var(--delay) cubic-bezier(.3, .4, .6, 1) forwards;border-radius:2px;position:absolute;top:-24px}.confetti.round{border-radius:50%;width:10px;height:10px}@keyframes confetti-fall{0%{opacity:1;transform:translate(0)rotate(0)}85%{opacity:1}to{opacity:0;transform:translate(var(--x), 110vh) rotate(var(--r))}}@media (prefers-reduced-motion:reduce){#overlay *,#overlay :before,#overlay :after{animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}}#praise{z-index:40;pointer-events:none;opacity:0;letter-spacing:.02em;white-space:nowrap;color:var(--praise,#8fe36a);-webkit-text-stroke:7px #4a1408;paint-order:stroke fill;text-shadow:0 5px 0 #4a1408, 0 0 26px var(--praise-glow,#8fe36acc);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:46px;font-style:italic;font-weight:900;position:fixed;top:0;left:0;transform:translate(-50%,-50%)}#praise.t1{--praise:#9be86e;--praise-glow:#8fe36acc}#praise.t2{--praise:#ffbe4a;--praise-glow:#ffb43cd9}#praise.t3{--praise:#ff86c0;--praise-glow:#ff78bee6;font-size:50px}#praise.t4{--praise:#ffe54a;--praise-glow:#ffdc3c;font-size:54px}#praise.show{animation:1.5s cubic-bezier(.2,.9,.3,1) forwards praise-in}#praise.t4.show{animation:1.8s cubic-bezier(.2,.9,.3,1) forwards praise-in,90ms linear .25s 6 praise-shake}@keyframes praise-in{0%{opacity:0;transform:translate(-50%,-50%)scale(0)rotate(-14deg)}16%{opacity:1;transform:translate(-50%,-50%)scale(1.3)rotate(4deg)}28%{transform:translate(-50%,-50%)scale(.92)rotate(-2deg)}40%{transform:translate(-50%,-50%)scale(1.06)rotate(0)}72%{opacity:1;transform:translate(-50%,-62%)scale(1)}to{opacity:0;transform:translate(-50%,-95%)scale(.9)}}@keyframes praise-shake{50%{margin-left:5px}}#notice{z-index:60;background:var(--panel);width:min(100% - 24px,520px);box-shadow:0 0 0 3px var(--gold), 0 10px 30px #0006;border-radius:14px;padding:12px 14px;font-size:13px;line-height:1.4;position:fixed;bottom:12px;left:50%;transform:translate(-50%)}#notice[hidden],#feedback[hidden]{display:none}#notice p{margin:0 0 10px}.notice-actions{justify-content:flex-end;gap:8px;display:flex}#feedback{z-index:55;background:#081c149e;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.feedback-panel{text-align:left}.feedback-panel h2{text-align:center;margin:0 0 8px}.feedback-q{margin:0 0 6px;font-weight:700}.difficulty{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.difficulty button{padding:6px 10px;font-size:13px}.difficulty button.chosen{background:var(--gold);color:#fff}#feedback-text{width:100%;font:inherit;resize:vertical;-webkit-user-select:text;user-select:text;border:2px solid #e2cfa6;border-radius:10px;padding:10px;font-size:14px}#feedback-status{min-height:1em;color:var(--muted);margin:6px 0 0;font-size:13px}.feedback-id{color:var(--muted);-webkit-user-select:text;user-select:text;margin:4px 0 0;font-size:11px}.feedback-consent{color:var(--muted);align-items:center;gap:6px;margin-top:6px;font-size:12px;display:flex}body.preview{touch-action:auto;color:#fff;padding:16px;overflow:auto}body.preview h2{margin:18px 0 8px;font-size:15px}.preview-row{background:var(--panel);border-radius:12px;flex-wrap:wrap;gap:12px;padding:12px;display:flex}.preview-row.gray{filter:grayscale()}.preview-row figure{text-align:center;color:var(--ink);margin:0;font-size:11px}@media (width<=480px){.feedback-label,#seed{display:none}}
