@font-face{font-family:Fredoka;src:url('./assets/fonts/fredoka-var.woff2') format('woff2');font-weight:300 700;font-display:swap}
@font-face{font-family:Nunito;src:url('./assets/fonts/nunito-var.woff2') format('woff2');font-weight:200 900;font-display:swap}
:root{--cream:#fff7e8;--ink:#344d39;--green:#245c42;--orange:#d94d2b;--peach:#ffdfc5;--purple:#775694;--ease:cubic-bezier(.16,1,.3,1)}
*{box-sizing:border-box}html{min-height:100%;background:var(--cream)}body{margin:0;color:var(--ink);font-family:Nunito,sans-serif;-webkit-tap-highlight-color:transparent}button,input{font:inherit}button{cursor:pointer;border:0;color:inherit;touch-action:manipulation}button:disabled{cursor:wait;opacity:.5}button:focus-visible,input:focus-visible{outline:3px solid var(--purple);outline-offset:5px}button{transition:transform .2s var(--ease),background .2s var(--ease)}button:active{transform:scale(.95)}svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}::selection{background:var(--peach);color:var(--green)}.icon-defs{position:absolute;width:0;height:0;overflow:hidden}.app{max-width:1600px;min-height:100svh;margin:auto;padding:20px 42px 16px;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px}.made-for{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:800}.mini-flower{font-size:36px;color:#df734b;line-height:1}.utilities{display:flex;gap:8px}.icon-button{display:grid;place-items:center;border-radius:50%;width:46px;height:46px;background:#f3eadb}.icon-button svg{width:21px;height:21px}.icon-button[aria-pressed=true]{background:#e2e9d7}main{display:flex;flex:1;flex-direction:column;align-items:center}.intro{text-align:center;margin:5px 0 0;z-index:1}.intro h1{font:500 clamp(38px,4.2vw,66px)/1.03 Fredoka,sans-serif;letter-spacing:-.025em;margin:0;line-height:1.06}.intro h1>span{color:var(--orange)}.title-dot{display:inline-block;transform:rotate(10deg);color:#e29c20}.intro p{font-size:16px;font-weight:650;margin:12px 0 0;color:#67705b}.playground{width:100%;position:relative;min-height:285px;height:clamp(285px,40vh,435px);flex:1;isolation:isolate}.floor{position:absolute;left:12%;right:12%;height:28%;bottom:9%;background:#f4e5ba;border-radius:50%;z-index:-1}.floor:after{content:'';position:absolute;inset:12% 11%;border-radius:50%;background:#faedca}.sun{position:absolute;left:15%;top:13%;width:69px;height:69px;border-radius:50%;background:#f8cb54;transform:rotate(-12deg);display:flex;align-items:center;justify-content:center;gap:12px}.sun>span{width:5px;height:7px;background:#886638;border-radius:50%;margin-top:-5px}.sun i{position:absolute;left:28px;top:39px;width:15px;height:8px;border-bottom:2px solid #886638;border-radius:0 0 15px 15px}.stage-star{position:absolute;stroke:none;z-index:-1}.star-a{left:9%;bottom:28%;width:25px;height:25px;color:#c4d5a5;transform:rotate(-15deg)}.star-b{right:18%;top:14%;width:40px;height:40px;color:#e1c4de;transform:rotate(15deg)}.star-c{right:9%;bottom:31%;width:22px;height:22px;color:#e7a77b;transform:rotate(-10deg)}#scene{display:block;width:100%;height:100%;outline:none}.fruit-targets{position:absolute;inset:0;pointer-events:none}.fruit-target{position:absolute;background:transparent;pointer-events:auto;border-radius:45%;width:23%;height:72%;top:13%;font-size:0}.fruit-target:nth-child(1){left:14%}.fruit-target:nth-child(2){left:39%;width:22%;top:3%;height:83%}.fruit-target:nth-child(3){right:14%}.tap-hint{position:absolute;bottom:0;width:100%;text-align:center;font-size:14px;font-weight:700;color:#72745e;margin:0;pointer-events:none}.game-cue{position:absolute;top:8%;left:50%;transform:translateX(-50%);color:var(--purple);font:600 30px Fredoka;text-align:center;pointer-events:none;white-space:nowrap;z-index:2}.game-cue:empty{display:none}.app.is-frozen .game-cue{background:#e7dcee;padding:10px 22px;border-radius:25px}.app.is-frozen .floor{background:#e7dcee}.loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:10px;font-size:15px;background:var(--cream);z-index:5}.loading[hidden]{display:none}.loading-dot{width:12px;height:12px;border-radius:50%;background:var(--orange);animation:breathe 1s ease-in-out infinite alternate}.scene-error{position:absolute;inset:15% 10%;background:var(--cream);text-align:center;padding:50px 20px;z-index:6}.scene-error button{background:var(--green);color:white;padding:15px 25px;border-radius:50px}.controls{margin:25px 0 0}.main-controls{display:flex;gap:12px;align-items:center;justify-content:center}.start-button,.freeze-button{display:flex;align-items:center;justify-content:center;gap:12px;border-radius:40px;min-height:60px;font-size:20px;font-weight:800;padding:14px 29px;white-space:nowrap}.start-button{background:var(--green);color:#fffdf2;box-shadow:0 6px 14px #245c4219}.start-button svg{width:24px;height:24px}.freeze-button{background:#f0e5f3;color:#694c82;font-size:17px;padding:15px 24px}.freeze-button[aria-pressed=true]{background:#775694;color:#fff}.tempo{display:flex;align-items:center;justify-content:center;gap:5px;margin-top:16px;font-size:13px;font-weight:800}.tempo>span{color:#737461;margin-right:7px}.tempo button{border-radius:20px;padding:8px 14px;min-height:36px;background:transparent}.tempo button[aria-pressed=true]{background:#e5ecd8;color:#315a37}.cast-section{text-align:center;margin-top:22px}.cast-section>p{font-size:14px;font-weight:800;margin:0 0 8px}.cast{display:flex;gap:10px;justify-content:center}.fruit-choice{display:flex;flex-direction:column;align-items:center;justify-content:center;width:92px;min-height:95px;background:transparent;border-radius:24px;padding:5px 6px 9px;font-size:12px;font-weight:800}.fruit-choice img{width:60px;height:60px;object-fit:contain;transition:transform .22s var(--ease)}.fruit-choice[aria-pressed=true]{background:#f7dfb5}.fruit-choice[aria-pressed=true] img{transform:translateY(-3px) rotate(-6deg)}.cast-section .fruit-choice:disabled{opacity:.5}footer{display:flex;align-items:center;gap:8px;color:#777562;font-size:12px;font-weight:700;margin-top:26px}footer svg{width:16px;height:16px;color:#a28059}.footer-note{margin-left:auto}.burst{position:absolute;pointer-events:none;color:#e9a32a;font:600 30px Fredoka;z-index:4;animation:burst .8s var(--ease) forwards}.burst svg{width:18px;height:18px;stroke:none}dialog{border:0;background:var(--cream);border-radius:32px;padding:32px;width:min(420px,calc(100% - 32px));color:var(--ink);box-shadow:0 24px 100px #344d3933}dialog::backdrop{background:#283d345c}dialog h2{font:500 30px Fredoka;margin:8px 0}dialog>p{color:#72745e;font-size:15px}.close{position:absolute;top:15px;right:15px;width:36px;height:36px}.setting-row{display:flex;align-items:center;justify-content:space-between;margin-top:25px;font-size:15px;font-weight:750}.setting-row small{display:block;font-size:13px;font-weight:500;color:#72745e;margin-top:4px}input[type=range]{width:100%;accent-color:var(--green);min-height:42px}input[type=checkbox]{width:24px;height:24px;accent-color:var(--green)}.settings-note{line-height:1.5;margin:25px 0}dialog .start-button{width:100%;font-size:16px;min-height:50px}.gentle .burst{animation:none;display:none}.gentle .sun{transform:none}@keyframes breathe{to{opacity:.4}}@keyframes burst{0%{opacity:1;transform:translateY(0) scale(.8)}100%{opacity:0;transform:translateY(-85px) scale(1.3)}}
@media(hover:hover) and (pointer:fine){button:hover{filter:brightness(.97)}.fruit-choice:hover img{transform:translateY(-6px) rotate(6deg)}}
@media(min-width:1600px){.app{padding-top:30px}.intro{margin-top:20px}}
@media(max-width:700px){.app{padding:12px 16px max(12px,env(safe-area-inset-bottom));min-height:100svh}.topbar{gap:5px}.made-for{font-size:12px;gap:6px}.mini-flower{font-size:29px}.utilities{gap:5px}.icon-button{width:40px;height:40px}.icon-button svg{width:19px;height:19px}.intro{margin-top:23px}.intro h1{font-size:43px;line-height:1.04}.intro h1>span{display:block}.intro p{font-size:14px;margin-top:10px}.playground{min-height:260px;height:34vh;max-height:380px;width:calc(100% + 32px)}.floor{left:2%;right:2%;bottom:10%;height:24%}.sun{left:6%;top:12%;width:43px;height:43px;gap:8px}.sun>span{width:3px;height:5px}.sun i{left:17px;top:24px;width:10px;height:6px}.star-b{right:8%;top:9%;width:26px;height:26px}.star-a{left:4%;bottom:21%;width:16px;height:16px}.star-c{right:4%;bottom:27%;width:16px;height:16px}.fruit-target:nth-child(1){left:1%;width:29%}.fruit-target:nth-child(2){left:31%;width:38%}.fruit-target:nth-child(3){right:1%;width:29%}.game-cue{font-size:25px;top:1%}.tap-hint{font-size:12px;bottom:-1px}.controls{margin-top:22px;width:100%}.main-controls{gap:8px}.start-button{min-height:56px;font-size:18px;padding:13px 21px;gap:8px}.freeze-button{min-height:56px;font-size:14px;padding:13px 17px;gap:7px}.freeze-button svg{width:19px;height:19px}.tempo{margin-top:12px;font-size:12px}.tempo button{padding:8px 12px}.cast-section{margin-top:19px;width:100%}.cast-section>p{font-size:13px}.cast{gap:1px;justify-content:space-between}.fruit-choice{width:calc(100% / 6);min-height:77px;font-size:9px;border-radius:18px;padding:4px 1px 8px}.fruit-choice img{width:47px;height:49px}footer{margin-top:18px;font-size:10px;justify-content:center}.footer-note{display:none}}
@media(max-width:370px){.intro h1{font-size:37px}.start-button{font-size:16px;padding:12px 18px}.freeze-button{font-size:13px;padding:12px}.made-for{font-size:11px}.app{padding-inline:12px}.fruit-choice img{width:41px}.playground{min-height:240px}}
@media(max-height:720px) and (min-width:701px){.app{padding-top:12px}.intro h1{font-size:42px}.intro p{margin-top:5px}.playground{min-height:225px;height:32vh}.controls{margin-top:15px}.cast-section{margin-top:10px}.fruit-choice{min-height:75px}.fruit-choice img{height:45px}footer{margin-top:10px}}
@media(max-height:520px) and (orientation:landscape){.app{min-height:100svh;display:grid;grid-template-columns:1fr 280px;padding:10px 18px}.topbar{grid-column:1/-1}.intro{position:absolute;left:24px;top:66px;text-align:left;margin:0}.intro h1{font-size:29px}.intro p{font-size:12px}main{display:contents}.playground{grid-column:1;grid-row:2/5;width:100%;height:calc(100svh - 105px);min-height:230px;max-height:none}.controls{grid-column:2;grid-row:2;margin:18px 0 0;align-self:end}.main-controls{flex-direction:column;gap:8px}.start-button,.freeze-button{min-height:44px;font-size:15px;width:205px}.tempo{gap:1px;font-size:10px}.tempo>span{display:none}.cast-section{grid-column:2;grid-row:3;margin:15px 0 0}.cast{flex-wrap:wrap;width:230px;margin:auto;justify-content:center}.fruit-choice{width:65px;min-height:59px;font-size:9px}.fruit-choice img{height:35px;width:40px}.cast-section>p{font-size:12px}footer{grid-column:1/-1;margin-top:8px}.sun{display:none}.game-cue{top:18%}.tap-hint{font-size:11px}.fruit-target:nth-child(1){left:0;width:30%}.fruit-target:nth-child(2){left:32%;width:36%}.fruit-target:nth-child(3){right:0;width:30%}}
#scene{position:absolute;inset:0}
.tempo>span,footer{color:#6d705d}
.squeal-bubble{position:absolute;z-index:4;pointer-events:none;transform:translateX(-50%) rotate(-7deg);background:#f8d576;color:#63361f;padding:10px 15px;border-radius:48% 44% 42% 38%;font:600 clamp(16px,2.4vw,27px)/1 Fredoka,sans-serif;white-space:nowrap;animation:squeal-pop 1.1s ease-out both}
.gentle .squeal-bubble{animation:none;transform:translateX(-50%)}
@keyframes squeal-pop{0%{opacity:0;transform:translateX(-50%) scale(.45) rotate(-14deg)}12%{opacity:1;transform:translateX(-50%) scale(1.18) rotate(8deg)}28%,58%{transform:translateX(-50%) scale(1) rotate(-7deg)}42%,72%{opacity:1;transform:translateX(-50%) scale(1.08) rotate(6deg)}100%{opacity:0;transform:translate(-50%,-24px) scale(.9) rotate(-4deg)}}
.game-cue{top:0}
.app{height:100svh;min-height:700px}main{min-height:0}.playground{flex:1 1 auto}
@media(max-width:700px){.app{min-height:775px}.playground{min-height:235px;max-height:none}}
@media(max-height:520px) and (orientation:landscape){.app{height:auto;min-height:100svh}.playground{min-height:230px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.burst{display:none}}
