:root{--ink:#2b1d14;--paper:#fbf3e2;--paper-2:#f1e2c4;--gold:#e0b14a;--gold-deep:#a8761f;--jade:#4f8a5b;--jade-deep:#2f5d3a;--red:#b8392a;--shadow:0 6px 18px #140a0473;--font:"Trebuchet MS", "Segoe UI", system-ui, sans-serif;--display:"Palatino Linotype", "Book Antiqua", Palatino, Georgia, serif}*{box-sizing:border-box}html,body{height:100%;font-family:var(--font);color:var(--ink);-webkit-user-select:none;user-select:none;touch-action:none;background:#1d1410;margin:0;overflow:hidden}#app,#app canvas{width:100%;height:100%;display:block;position:fixed;inset:0}#app canvas{cursor:default}#app canvas.pointer{cursor:pointer}#ui{pointer-events:none;position:fixed;inset:0}#ui button{pointer-events:auto;font-family:var(--font)}.hidden{display:none!important}#hud{justify-content:space-between;align-items:flex-start;gap:10px;display:flex;position:absolute;top:12px;left:12px;right:12px}.panel{border:2px solid var(--gold-deep);box-shadow:var(--shadow);background:linear-gradient(#fbf3e2f2,#f1e2c4f2);border-radius:14px;align-items:center;gap:14px;padding:6px 12px;display:flex}.stat{flex-direction:column;align-items:center;min-width:54px;display:flex}.stat .label,.results .label{letter-spacing:1.5px;text-transform:uppercase;color:#7a5a3a;font-size:10px}.stat .value{font-family:var(--display);font-size:24px;font-weight:700;line-height:1.1}.combo .value{color:var(--red);transition:transform .15s}.combo.hot .value{animation:.6s ease-in-out infinite alternate pulse}.hud-center{flex-direction:column;gap:4px;min-width:220px;padding:6px 16px 9px}.mood-title{letter-spacing:1px;color:var(--jade-deep);font-size:12px;font-weight:700}.mood-bar{background:#5a3d28;border:2px solid #3b2718;border-radius:8px;width:100%;height:14px;overflow:hidden}#mood-fill{background:linear-gradient(90deg,#7fc56b,#b6db6a);border-radius:6px;width:100%;height:100%;transition:width .35s,background .35s}#mood-fill.mid{background:linear-gradient(90deg,#e3b23c,#f0cf5c)}#mood-fill.low{background:linear-gradient(90deg,#c8402e,#e46a3a);animation:.8s infinite blink}.icon-btn{border:2px solid var(--gold-deep);cursor:pointer;background:#fff7e6;border-radius:10px;width:36px;height:36px;font-size:17px}.icon-btn:hover{background:#ffe9b8}#toast{font-family:var(--display);color:#fff4d6;text-shadow:0 2px #6b3d14,0 0 18px #ffbe50cc;opacity:0;white-space:nowrap;font-size:26px;font-weight:700;transition:opacity .3s;position:absolute;top:84px;left:50%;transform:translate(-50%)}#toast.show{opacity:1;animation:.5s cubic-bezier(.2,1.6,.4,1) toastIn}#hint{color:#fbeacb;white-space:nowrap;box-shadow:var(--shadow);background:#2b1d14d1;border-radius:20px;padding:8px 16px;font-size:14px;animation:1.6s ease-in-out infinite alternate hintBob;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}#world-layer{position:absolute;inset:0;overflow:hidden}.anchor{will-change:transform;position:absolute;top:0;left:0}.bubble{box-shadow:var(--shadow);background:#fffdf6;border:3px solid #4a3220;border-radius:22px;flex-direction:column;align-items:center;gap:3px;padding:5px 8px 7px;transition:opacity .25s;animation:.35s cubic-bezier(.2,1.7,.4,1) popIn;display:flex;position:absolute;transform:translate(-50%,-100%)}.bubble:before,.bubble:after{content:"";background:#fffdf6;border:3px solid #4a3220;border-radius:50%;position:absolute}.bubble:before{width:14px;height:14px;bottom:-15px;left:46%}.bubble:after{width:8px;height:8px;bottom:-26px;left:41%}.bubble .who{letter-spacing:1px;color:#7a5a3a;text-transform:uppercase;font-size:10px;font-weight:700}.bubble .dishes{gap:4px;display:flex}.bubble .dish{background:#f3e6cc;border-radius:12px;justify-content:center;align-items:center;width:52px;height:52px;display:flex;position:relative}.bubble .dish img{width:50px;height:50px}.bubble .dish.done{background:#cfe8bf}.bubble .dish.done img{opacity:.45;filter:grayscale(.6)}.bubble .dish.done:after{content:"✓";color:#2f7d32;text-shadow:0 0 4px #fff;font-size:30px;font-weight:700;position:absolute}.bubble .patience{background:#e2d3b4;border-radius:4px;width:100%;height:7px;overflow:hidden}.bubble .patience .fill{background:#6cc04a;border-radius:4px;width:100%;height:100%}.bubble.urgent{border-color:#b8392a;animation:.4s ease-in-out infinite shake}.bubble.leaving{opacity:0}.popup{font-family:var(--display);white-space:nowrap;color:#fff4d6;text-shadow:0 2px #6b3d14,0 0 10px #00000080;font-size:24px;font-weight:700;animation:1.3s ease-out forwards floatUp;position:absolute;transform:translate(-50%,-50%)}.popup.bad{color:#ffb4a4;text-shadow:0 2px #6b1d14,0 0 10px #00000080}.popup.small{font-size:17px}.popup.big{color:#ffe27a;font-size:32px}.emote{filter:drop-shadow(0 2px 2px #0006);font-size:34px;animation:1.4s ease-out forwards emote;position:absolute;transform:translate(-50%,-50%)}.screen{pointer-events:auto;background:radial-gradient(#1e120a73,#140a04cc);justify-content:center;align-items:center;padding:16px;display:flex;position:absolute;inset:0}.card{background:linear-gradient(180deg, var(--paper), var(--paper-2));border:3px solid var(--gold-deep);text-align:center;border-radius:20px;width:100%;max-width:560px;padding:26px 32px;animation:.45s cubic-bezier(.2,1.4,.4,1) popIn;position:relative;box-shadow:0 20px 60px #0009}.card:before{content:"";pointer-events:none;border:1.5px solid #a8761f80;border-radius:14px;position:absolute;inset:7px}.card h1,.card h2{font-family:var(--display);color:var(--jade-deep);margin:0}.card h1{letter-spacing:1px;font-size:40px}.card h2{font-size:32px}.sub{color:#8a5a2a;margin:4px 0 16px;font-style:italic}.small{color:#8a6a4a;margin:10px 0 0;font-size:12px}.howto{text-align:left;margin:0 0 18px;padding:0;font-size:14px;line-height:1.35;list-style:none}.howto li{align-items:flex-start;gap:10px;margin:8px 0;display:flex}.howto li span{text-align:center;flex:none;width:24px;font-size:18px}.big-btn{color:#fffbe9;cursor:pointer;background:linear-gradient(#5fa36b,#3d7a49);border:2px solid #2a5532;border-radius:14px;padding:12px 28px;font-size:19px;font-weight:700;transition:transform .1s;box-shadow:0 4px #24482b,0 8px 18px #0000004d}.big-btn:hover{transform:translateY(-2px)}.big-btn:active{transform:translateY(2px);box-shadow:0 2px #24482b}.link-btn{color:#8a5a2a;cursor:pointer;background:0 0;border:none;margin:12px auto 0;font-size:14px;text-decoration:underline;display:block}.loadbar{background:#e2d3b4;border-radius:6px;height:12px;margin-top:10px;overflow:hidden}#load-fill{background:linear-gradient(90deg,#5fa36b,#b6db6a);width:0;height:100%;transition:width .2s}.results{grid-template-columns:repeat(4,1fr);gap:8px;margin:6px 0 20px;display:grid}.results>div{background:#ffffff8c;border-radius:12px;flex-direction:column;padding:8px 4px;display:flex}.results .value{font-family:var(--display);font-size:26px;font-weight:700}.alt-btn{color:var(--ink);border:2px solid var(--gold-deep);cursor:pointer;background:#fff7e6;border-radius:12px;margin:12px auto 0;padding:9px 22px;font-size:16px;font-weight:700;display:block}.alt-btn:hover:not(:disabled){background:#ffe9b8}.alt-btn:disabled{opacity:.55;cursor:default}.res-buttons .big-btn,.res-buttons .alt-btn{margin:0 auto}.res-buttons{flex-direction:column;align-items:center;gap:10px;display:flex}.days-card{max-width:620px}.days-list{touch-action:pan-y;grid-template-columns:repeat(3,1fr);gap:10px;max-height:62vh;margin:4px 0 6px;padding:2px 4px 6px;display:grid;overflow-y:auto}.ring-title{text-align:left;font-family:var(--display);color:var(--gold-deep);letter-spacing:1px;border-bottom:1px solid #a8761f59;grid-column:1/-1;margin-top:6px;font-size:15px;font-weight:700}.day-tile{border:2px solid var(--gold-deep);cursor:pointer;min-height:92px;color:var(--ink);font-family:var(--font);background:linear-gradient(#fffdf4,#f6e7c4);border-radius:14px;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;transition:transform .1s;display:flex}.day-tile:hover:not(:disabled){transform:translateY(-2px)}.day-tile.cleared{background:linear-gradient(#f3fbe9,#dcefc6)}.day-tile.locked{opacity:.5;cursor:default;filter:grayscale(.5)}.day-tile.endless{flex-direction:row;grid-column:1/-1;justify-content:center;gap:14px;min-height:64px}.day-num{font-family:var(--display);color:var(--jade-deep);font-size:26px;font-weight:700}.day-name{font-size:13px;font-weight:700;line-height:1.15}.day-stars{letter-spacing:1px;color:#c9b48a;font-size:16px}.day-stars .on{color:#e9a92a;text-shadow:0 1px #8a5a12}.day-stars.small{color:#8a6a4a;font-size:12px}.ring-label{color:var(--gold-deep);letter-spacing:1.5px;text-transform:uppercase;margin:0 0 2px;font-size:13px}.intro-card h2{margin-bottom:10px;font-size:34px}.intro-teach{text-align:left;background:#fff9;border-radius:14px;justify-content:center;align-items:center;gap:12px;margin:0 0 12px;padding:10px 14px;font-size:16px;display:flex}#intro-icon{flex:none;font-size:34px}.intro-goal{color:var(--red);margin:6px 0 8px;font-size:19px;font-weight:700}.intro-stars{text-align:left;margin:0 auto 10px;padding:0;font-size:14px;list-style:none;display:inline-block}.intro-stars li{margin:4px 0}.intro-stars .st{color:#e9a92a;text-shadow:0 1px #8a5a12;width:48px;display:inline-block}.intro-guest{color:var(--jade-deep);min-height:1em;margin:0 0 12px;font-weight:700}.intro-progress{background:#e2d3b4;border-radius:2px;width:60%;height:4px;margin:14px auto 0;overflow:hidden}#intro-bar{background:var(--jade);width:0;height:100%}.res-stars{justify-content:center;gap:14px;margin:4px 0 14px;display:flex}.res-star{flex-direction:column;align-items:center;width:110px;display:flex}.big-star{color:#0000;-webkit-text-stroke:2px #b8a27a;font-size:54px;line-height:1}.res-star.on .big-star{color:#f2b632;-webkit-text-stroke:2px #8a5a12;animation:.5s cubic-bezier(.2,1.8,.4,1) both starPop;animation-delay:inherit}.res-star{animation:none}.star-label{color:#6a5236;margin-top:4px;font-size:12px;line-height:1.2}.res-star:not(.on) .star-label{opacity:.6}.res-tip{color:#7a3020;background:#fdeee4;border:1px solid #e8b9a2;border-radius:12px;margin:0 0 10px;padding:8px 12px;font-size:14px}.res-unlock{color:var(--jade-deep);min-height:1em;margin:0 0 14px;font-weight:700}@keyframes starPop{0%{opacity:0;transform:scale(.2)rotate(-30deg)}}.goal{justify-content:center;align-items:center;gap:12px;margin-top:2px;font-size:16px;font-weight:700;display:flex}.goal.near #goal-text{color:var(--red);animation:.5s ease-in-out infinite alternate pulse}.goal.bump #goal-text{animation:.35s ease-out goalBump}.goal-time{font-variant-numeric:tabular-nums;align-items:center;gap:5px;display:inline-flex}.goal-time.low{color:var(--red)}.goal-ring{--p:1;background:conic-gradient(var(--jade) calc(var(--p) * 360deg), #e2d3b4 0);border-radius:50%;width:16px;height:16px}.goal-time.low .goal-ring{background:conic-gradient(var(--red) calc(var(--p) * 360deg), #e2d3b4 0)}@keyframes goalBump{40%{transform:scale(1.3)}}.guide-hand{pointer-events:none;filter:drop-shadow(0 3px 3px #00000073);font-size:40px;animation:.9s ease-in-out infinite guideTap;position:absolute;transform:translate(-50%,-20%)}@keyframes guideTap{50%{transform:translate(-50%,10%)scale(.9)}}.bubble.target{box-shadow:0 0 0 4px #f2b63299, var(--shadow);border-color:#f2b632}#hud{top:max(12px, env(safe-area-inset-top))}#hint{bottom:max(14px, env(safe-area-inset-bottom))}.bubble.vip{box-shadow:0 0 0 3px #f2b6328c, var(--shadow);background:#fff8e2;border-color:#d39a1c}.bubble .crown{filter:drop-shadow(0 2px 1px #00000059);font-size:22px;position:absolute;top:-20px;left:50%;transform:translate(-50%)}.bubble .patience.hidden-bar{height:13px;position:relative;overflow:visible}.bubble .patience.hidden-bar:after{content:attr(data-q);text-align:center;color:#fffdf6;font-size:12px;font-weight:700;line-height:13px;position:absolute;inset:0}.icon-btn.tea.ready{background:#ffe9b8;border-color:#c98a1c;animation:.6s ease-in-out infinite alternate pulse;box-shadow:0 0 12px #f2b632e6}.icon-btn.tea.active{border-color:var(--jade);background:#d8f0d0}.icon-btn.tea:disabled:not(.active){opacity:.45}#tea-overlay{pointer-events:none;opacity:0;background:radial-gradient(#ffdc9600 45%,#ffc46e61 100%);transition:opacity .5s;position:absolute;inset:0}#tea-overlay.on{opacity:1}.rush{color:#fff4d6;background:#b8392a;border-radius:12px;padding:1px 9px;font-size:13px;font-weight:700;animation:.45s ease-in-out infinite alternate pulse}.day-tile{position:relative}.day-leaf{font-size:14px;position:absolute;top:4px;right:6px}.alt-btn.gentle{border-color:var(--jade);color:var(--jade-deep)}@keyframes popIn{0%{opacity:0;transform:translate(-50%,-100%)scale(.3)}}.card{animation-name:cardIn}@keyframes cardIn{0%{opacity:0;transform:scale(.85)}}@keyframes floatUp{0%{opacity:0;transform:translate(-50%,-30%)scale(.6)}15%{opacity:1;transform:translate(-50%,-60%)scale(1.15)}to{opacity:0;transform:translate(-50%,-200%)scale(1)}}@keyframes emote{0%{opacity:0;transform:translate(-50%)scale(.2)}20%{opacity:1;transform:translate(-50%,-60%)scale(1.25)}75%{opacity:1;transform:translate(-50%,-90%)scale(1)}to{opacity:0;transform:translate(-50%,-130%)scale(.9)}}@keyframes shake{0%,to{transform:translate(-50%,-100%)rotate(0)}25%{transform:translate(-52%,-100%)rotate(-3deg)}75%{transform:translate(-48%,-100%)rotate(3deg)}}@keyframes pulse{to{transform:scale(1.18)}}@keyframes blink{50%{opacity:.55}}@keyframes toastIn{0%{transform:translate(-50%)scale(.4)}}@keyframes hintBob{to{transform:translate(-50%)translateY(-4px)}}@media (width<=520px){#hud{flex-wrap:wrap;top:8px;left:8px;right:8px}.hud-center{flex-basis:100%;order:3}.stat .label{letter-spacing:.5px;font-size:10px}#toast{font-size:20px;top:120px}}@media (width<=760px){.stat .value{font-size:18px}.stat{min-width:40px}.hud-center{min-width:120px}.mood-title{font-size:10px}.panel{gap:8px;padding:4px 8px}.icon-btn{width:40px;height:40px;font-size:16px}.bubble .dish,.bubble .dish img{width:36px;height:36px}.card h1{font-size:30px}#hint{white-space:normal;text-align:center;max-width:92vw;font-size:12px}.results{grid-template-columns:repeat(2,1fr)}}@media (width<=520px){#hud{top:max(8px, env(safe-area-inset-top))}.days-list{grid-template-columns:repeat(2,1fr)}.res-star{width:92px}.big-star{font-size:44px}.intro-card h2{font-size:28px}}@media (prefers-reduced-motion:reduce){.icon-btn.tea.ready,.rush,.bubble.urgent,#mood-fill.low,#hint,.combo.hot .value,.goal.near #goal-text,.guide-hand{animation:none!important}.bubble.urgent{border-width:4px}}
