:root{--ink:#5b4a63;--ink-soft:#8a7a92;--card:#fffbf7eb;--card-solid:#fffbf7;--pink:#f6a6c1;--pink-deep:#e87fa5;--peach:#ffcfb5;--mint:#b9ead7;--lilac:#d9cbf5;--shadow:0 10px 30px #7850782e;--radius:22px;--font:ui-rounded, "SF Pro Rounded", "Nunito", "Quicksand", system-ui, -apple-system, sans-serif;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{height:100%;font-family:var(--font);color:var(--ink);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;overscroll-behavior:none;background:#f6d9e4;margin:0;overflow:hidden}canvas#scene{touch-action:none;width:100%;height:100%;display:block;position:fixed;inset:0}.hidden{display:none!important}.screen{z-index:20;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}#loading{z-index:50;background:linear-gradient(#fbe3ec,#e7f0ff);transition:opacity .6s}#loading.fade{opacity:0;pointer-events:none}.loader-blob{background:var(--pink);width:64px;height:64px;box-shadow:var(--shadow);border-radius:50%;animation:1.1s ease-in-out infinite blob}@keyframes blob{0%,to{transform:scale(1)translateY(0)}30%{transform:scale(1.15,.85)translateY(8px)}60%{transform:scale(.9,1.12)translateY(-16px)}}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(10px);width:100%;max-width:360px;padding:22px}#login{background:linear-gradient(160deg,#fbe3ec 0%,#e9e3ff 50%,#e1f4ff 100%)}.login-card{text-align:center}.login-egg{font-size:56px;animation:2.4s ease-in-out infinite wobble;display:inline-block}@keyframes wobble{0%,to{transform:rotate(0)}20%{transform:rotate(-8deg)}40%{transform:rotate(6deg)}60%{transform:rotate(-3deg)}}h1{letter-spacing:.5px;margin:8px 0 18px;font-size:28px}input{font:inherit;width:100%;color:var(--ink);-webkit-user-select:text;user-select:text;background:#fff;border:2px solid #eadff0;border-radius:16px;outline:none;padding:13px 16px;font-size:17px}input:focus{border-color:var(--pink)}.btn{font:inherit;color:var(--ink);cursor:pointer;background:#f3ecf7;border:0;border-radius:16px;padding:12px 18px;font-size:16px;font-weight:600;transition:transform .12s}.btn:active{transform:scale(.95)}.btn.primary{background:linear-gradient(180deg, #f8b4cb, var(--pink-deep));color:#fff;box-shadow:0 4px 12px #e87fa566}.btn.ghost{color:var(--ink-soft);background:0 0}.login-card .btn{width:100%;margin-top:12px}.err{color:#d0607e;min-height:1.2em;margin:10px 0 0;font-size:14px}#hud{pointer-events:none;z-index:10;position:fixed;inset:0}#hud>*{pointer-events:auto}.topbar{top:calc(10px + var(--safe-top));align-items:center;gap:8px;display:flex;position:absolute;left:12px;right:12px}.namechip{background:var(--card);box-shadow:var(--shadow);white-space:nowrap;text-overflow:ellipsis;border-radius:999px;align-items:center;gap:6px;max-width:38vw;padding:7px 14px;font-weight:700;display:flex;overflow:hidden}.stage{color:var(--ink-soft);font-size:12px;font-weight:600}.needs{gap:5px;margin-left:auto;display:flex}.need{background:var(--card);width:34px;height:34px;box-shadow:var(--shadow);border-radius:50%;place-items:center;font-size:15px;display:grid;position:relative}.need svg{position:absolute;inset:0;transform:rotate(-90deg)}.need.low{animation:1.4s ease-in-out infinite pulse}@keyframes pulse{50%{transform:scale(1.12)}}.iconbtn{background:var(--card);width:38px;height:38px;box-shadow:var(--shadow);color:var(--ink);border:0;border-radius:50%;font-size:18px}.clock{top:calc(54px + var(--safe-top));color:var(--ink);background:#ffffff8c;border-radius:999px;padding:3px 10px;font-size:13px;font-weight:600;position:absolute;right:14px;pointer-events:none!important}body.night .clock{color:#eae6ff;background:#28285066}.dock{bottom:calc(12px + var(--safe-bottom));background:var(--card);box-shadow:var(--shadow);border-radius:26px;gap:6px;max-width:calc(100vw - 16px);padding:7px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.dock button{cursor:pointer;background:0 0;border:0;border-radius:18px;place-items:center;width:46px;height:46px;font-size:24px;transition:transform .15s,background .2s;display:grid}.dock button:active{transform:scale(.88)}.dock button.active{background:#fde4ee}.dock button.disabled{opacity:.35}@media (width<=360px){.dock button{width:40px;height:42px;font-size:21px}}.tray{bottom:calc(84px + var(--safe-bottom));background:var(--card);box-shadow:var(--shadow);border-radius:22px;gap:8px;padding:10px;animation:.25s ease-out up;display:flex;position:absolute;left:50%;transform:translate(-50%)}.tray button{cursor:grab;touch-action:none;background:#fff;border:0;border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:1px;width:50px;height:58px;font-size:28px;display:flex}.tray button small{height:11px;color:var(--ink-soft);font-size:9px;line-height:11px}@keyframes up{0%{opacity:0;transform:translate(-50%,20px)}}.talkbar{left:10px;right:10px;bottom:calc(84px + var(--safe-bottom));background:var(--card);box-shadow:var(--shadow);border-radius:22px;gap:6px;padding:8px;animation:.25s ease-out up2;display:flex;position:absolute}.talkbar input{flex:1}.talkbar .btn{padding:0 14px}@keyframes up2{0%{opacity:0;transform:translateY(20px)}}.modepanel{left:10px;right:10px;bottom:calc(84px + var(--safe-bottom));background:var(--card);box-shadow:var(--shadow);border-radius:20px;flex-direction:column;gap:3px;padding:8px 12px 4px;animation:.25s ease-out up2;display:flex;position:absolute}.modepanel #mode-done{padding:4px 10px;font-size:14px}.mode-title{text-align:center;font-size:15px;font-weight:700}.mode-body{color:var(--ink-soft);text-align:center;font-size:14px}.mode-body .tricklist{flex-wrap:wrap;justify-content:center;gap:6px;margin:4px 0;display:flex}.mode-body .trick{color:var(--ink);font-size:12px;font:inherit;background:#fff;border:0;border-radius:12px;padding:5px 8px}.mode-body .stars{color:#f5b942;letter-spacing:-1px}.mode-body .row{justify-content:center;align-items:center;gap:8px;display:flex}.progress{background:#f1e7f3;border-radius:6px;height:10px;overflow:hidden}.progress>div{background:linear-gradient(90deg,#b9ead7,#a7d8f5);width:0;height:100%;transition:width .2s}.big-treat{padding:8px 18px;font-size:22px}#gesture{z-index:11;touch-action:none;width:100%;height:100%;position:fixed;inset:0}#bubble-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none!important}.bubble{pointer-events:none;transition:opacity .35s;position:absolute;transform:translate(-50%,-100%)}.bubble .cloud{white-space:nowrap;background:#fff;border-radius:26px;gap:4px;padding:8px 14px;font-size:30px;line-height:1.15;animation:.45s cubic-bezier(.3,1.6,.5,1) pop;display:flex;box-shadow:0 6px 18px #6e508233}.bubble .cloud span{animation:.5s cubic-bezier(.3,1.6,.5,1) both pop;display:inline-block}.bubble .dot{background:#fff;border-radius:50%;position:absolute;box-shadow:0 3px 8px #6e508226}.bubble .d1{width:14px;height:14px;bottom:-14px;left:42%}.bubble .d2{width:8px;height:8px;bottom:-26px;left:38%}.bubble.dream .cloud{background:#e8e2ffeb;font-size:26px}.bubble.dream .dot{background:#e8e2ffeb}.bubble.fade{opacity:0}@keyframes pop{0%{opacity:0;transform:scale(0)}}.saybubble{left:50%;bottom:calc(150px + var(--safe-bottom));max-width:80vw;color:var(--ink);box-shadow:var(--shadow);pointer-events:none;background:#fde4ee;border-radius:18px 18px 4px;padding:9px 14px;font-size:15px;transition:opacity .6s;animation:.3s ease-out up2;position:absolute;transform:translate(-50%)}#toast{top:calc(96px + var(--safe-top));background:var(--card);box-shadow:var(--shadow);opacity:0;white-space:nowrap;text-overflow:ellipsis;border-radius:999px;max-width:92vw;padding:8px 16px;font-size:14px;font-weight:600;transition:opacity .3s;position:absolute;left:50%;overflow:hidden;transform:translate(-50%);pointer-events:none!important}#toast.show{opacity:1}#egg-ui{left:0;right:0;bottom:calc(40px + var(--safe-bottom));z-index:10;pointer-events:none;flex-direction:column;align-items:center;gap:10px;display:flex;position:fixed}.egg-hint{background:var(--card);box-shadow:var(--shadow);border-radius:999px;padding:10px 18px;font-weight:600}.warmth{width:200px;height:12px;box-shadow:var(--shadow);background:#ffffffb3;border-radius:8px;overflow:hidden}#warmth-fill{background:linear-gradient(90deg,#ffd6a5,#ff9bb3);width:0;height:100%;transition:width .3s}#modal{z-index:30;background:#503c5a40}#modal .card{text-align:center;animation:.35s cubic-bezier(.3,1.4,.5,1) pop}.swatches{flex-wrap:wrap;justify-content:center;gap:10px;margin:14px 0;display:flex}.swatch{cursor:pointer;border:3px solid #fff;border-radius:50%;width:40px;height:40px;box-shadow:0 2px 8px #0000001f}.swatch.on{outline:3px solid var(--pink-deep)}.giftbig{margin:8px 0;font-size:64px;animation:2s ease-in-out infinite wobble;display:inline-block}.drawing{background:#fffdf5;border:6px solid #f3d9b1;border-radius:10px;margin:10px auto;padding:18px;font-size:44px;line-height:1.3;display:inline-block;transform:rotate(-2deg);box-shadow:inset 0 0 20px #c8a06426}.gallery{grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:10px;max-height:50vh;margin:12px 0;display:grid;overflow:auto}.gallery .item{background:#fff;border-radius:12px;padding:10px 4px;font-size:26px}.gallery .item small{color:var(--ink-soft);font-size:10px;display:block}.help{text-align:left;max-height:60vh;font-size:14px;line-height:1.5;overflow:auto}.help b{color:var(--pink-deep)}#menu{z-index:25;padding:calc(56px + var(--safe-top)) 12px;background:#503c5a33;justify-content:flex-end;align-items:flex-start;display:flex;position:fixed;inset:0}.menu-card{flex-direction:column;gap:6px;max-width:240px;display:flex}.sparkle-pop{pointer-events:none;font-size:26px;animation:1.6s ease-out forwards floatup;position:absolute}@keyframes floatup{to{opacity:0;transform:translateY(-60px)scale(1.3)}}.combo{color:#fff;text-shadow:0 3px 12px #c85a8c99;pointer-events:none;font-size:30px;font-weight:800;animation:.9s ease-out forwards comboPop;position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)}@keyframes comboPop{0%{opacity:0;transform:translate(-50%,-50%)scale(.4)}25%{opacity:1;transform:translate(-50%,-50%)scale(1.15)}to{opacity:0;transform:translate(-50%,-90%)scale(1)}}.topbar,.dock,.modepanel,.talkbar,.tray{z-index:12}.wetdrop{z-index:30;pointer-events:none;opacity:0;filter:drop-shadow(0 2px 3px #3c6ea040);animation:2.3s ease-in forwards wetdrop;position:fixed}@keyframes wetdrop{0%{opacity:0;transform:scale(.3)}10%{opacity:.95;transform:scale(1.15)}22%{transform:scale(1)}70%{opacity:.85}to{opacity:0;transform:translateY(70px)scaleY(1.25)}}
