:root{--ink:#2b2340;--ink-soft:#b9b0d0;--paper:#fff8ec;--muted:#8a7f99;--yellow:#ffd23f;--blue:#7cc4ff;--pink:#ff6b8b;--green:#5bc97a;--spring:cubic-bezier(.34, 1.56, .64, 1);color:var(--ink);font-family:Rubik,system-ui,sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--ink);overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;height:100%;margin:0}button{font:inherit;color:inherit;cursor:pointer}h1,h2,h3{font-weight:800}.app{background:var(--ink);flex-direction:column;max-width:520px;height:100dvh;margin:0 auto;display:flex;overflow:hidden}.center{justify-content:center;align-items:center;padding:16px}.muted{color:var(--muted)}.small{font-size:13px}p.center{text-align:center}.loader{gap:10px;display:flex}.loader span{background:var(--yellow);border-radius:50%;width:16px;height:16px;animation:.9s ease-in-out infinite loader}.loader span:nth-child(2){background:var(--pink);animation-delay:.15s}.loader span:nth-child(3){background:var(--blue);animation-delay:.3s}.hud{color:#fff;padding:10px 14px 12px}.hud-row{align-items:center;gap:8px;display:flex}.name-btn{color:#fff;text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:10px;min-width:0;padding:0;display:flex}.level-badge{background:var(--yellow);width:40px;height:40px;color:var(--ink);border:3px solid #fff;border-radius:14px;flex-shrink:0;place-items:center;font-size:18px;font-weight:800;display:grid;transform:rotate(-6deg)}.name-col{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.name{white-space:nowrap;text-overflow:ellipsis;font-size:20px;font-weight:800;line-height:1;overflow:hidden}.xp{background:#ffffff26;border-radius:99px;max-width:140px;height:7px;display:block;overflow:hidden}.xp-fill{background:var(--yellow);height:100%;transition:width .8s var(--spring);border-radius:99px;display:block}.stage{color:var(--ink-soft);font-size:11px;font-weight:500}.counter{color:#fff;background:#ffffff1a;border:0;border-radius:999px;align-items:center;gap:6px;padding:6px 12px 6px 8px;font-size:16px;font-weight:700;display:flex}.counter.invite{padding:6px 8px;animation:2.4s ease-in-out infinite nudge}.gauges{justify-content:space-around;margin-top:12px;display:flex}.gauge{--c:var(--green);background:conic-gradient(var(--c) calc(var(--p) * 1%), #fff2 0);width:58px;height:58px;transition:transform .2s var(--spring);border:0;border-radius:50%;padding:5px}.gauge:active{transform:scale(.9)}.gauge.mid{--c:#ffc23f}.gauge.low{--c:#ff5a5f;animation:1.1s ease-in-out infinite wobble}.gauge-in{background:#fff;border-radius:50%;place-items:center;width:100%;height:100%;display:grid}.scene{border-radius:22px 22px 0 0;flex:1;min-height:0;position:relative;overflow:hidden}.room{position:absolute;inset:0}.room-in-right{animation:room-in-right .38s var(--spring)}.room-in-left{animation:room-in-left .38s var(--spring)}.wall,.floor{position:absolute;left:0;right:0}.wall{top:0;bottom:24%}.floor{border-top:4px solid var(--ink);height:24%;bottom:0}.wall-kitchen{background:repeating-linear-gradient(90deg,#ffe3b3 0 24px,#ffd99c 24px 48px)}.floor-kitchen{background:repeating-conic-gradient(#f7efe4 0 25%, #e6d5bf 0 50%) 0 0 / 44px 44px}.wall-bath{background-color:#cdebff;background-image:linear-gradient(#fff9 2px,#0000 2px),linear-gradient(90deg,#fff9 2px,#0000 2px);background-size:34px 34px}.floor-bath{background:repeating-conic-gradient(#fff 0 25%, #a9dcf7 0 50%) 0 0 / 40px 40px}.wall-bedroom{background:radial-gradient(#ffffff2a 2px,#0000 3px) 0 0/30px 30px,#6c6fd8}.floor-bedroom{background:#b57bdb}.wall-games{background:repeating-linear-gradient(135deg,#bde7a6 0 22px,#b0df97 22px 44px)}.floor-games{background:repeating-linear-gradient(90deg,#6cc189 0 60px,#61b47d 60px 120px)}.decor{pointer-events:none;position:absolute}.pet-spot{width:min(66vw,280px,40vh);position:absolute;bottom:5%;left:50%;transform:translate(-50%)}.pet-spot.dim .pet-svg{filter:brightness(.62)saturate(.85)}.pet-svg{cursor:pointer;width:100%;height:auto;transition:filter .7s;display:block;overflow:visible}.tear{transform-box:fill-box;animation:1.6s ease-in infinite tear}.thought{z-index:2;border:3px solid var(--ink);width:62px;height:62px;animation:float 2s ease-in-out infinite, pop-in .4s var(--spring);background:#fff;border-radius:50%;place-items:center;padding:0;display:grid;position:absolute;top:-10%;right:-12%}.thought:after{content:"";border:3px solid var(--ink);background:#fff;border-radius:50%;width:15px;height:15px;position:absolute;bottom:-12px;left:-2px}.thought.mail{animation:float 1.2s ease-in-out infinite, pop-in .4s var(--spring);background:#ffe4ec}.zzz{color:#fff;pointer-events:none;z-index:3;align-items:flex-end;gap:2px;font-weight:800;display:flex;position:absolute;top:-4%;right:4%}.zzz span{-webkit-text-stroke:1px var(--ink);animation:2.4s ease-in-out infinite zzz}.zzz span:first-child{font-size:18px}.zzz span:nth-child(2){font-size:24px;animation-delay:.4s}.zzz span:nth-child(3){font-size:32px;animation-delay:.8s}.foam{pointer-events:none;animation:foam-in .3s var(--spring);z-index:2;background:radial-gradient(circle at 35% 35%,#fff 0 35%,#e8f6ff 65%,#cbe9ff);border:2px solid #9bd0f5;border-radius:50%;position:absolute;transform:translate(-50%,-50%)}.shower{pointer-events:none;z-index:3;position:absolute;inset:0}.shower i{background:#4da3ff;border-radius:6px;width:6px;height:20px;animation:.55s linear infinite rain;position:absolute;top:-24px}.night{opacity:0;pointer-events:none;background:#0e0a2c9e;transition:opacity .7s;position:absolute;inset:0}.night.on{opacity:1}.banner{z-index:4;border:3px solid var(--ink);white-space:nowrap;animation:banner 3s var(--spring) forwards;background:#fff;border-radius:999px;align-items:center;gap:6px;padding:8px 16px;font-weight:800;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.tray{background:var(--paper);border-top:4px solid var(--ink);min-height:132px;padding:12px 16px 10px;overflow:hidden}.tray-in{height:100%;animation:tray-in .35s var(--spring);flex-direction:column;justify-content:center;gap:6px;display:flex}.tray-row{justify-content:center;align-items:center;gap:18px;display:flex}.tray-hint{text-align:center;color:var(--muted);margin:0;font-size:13px;font-weight:500}.tray-hint b{color:var(--ink)}.slot{border:3px solid var(--ink);width:88px;height:88px;box-shadow:0 4px 0 var(--ink);touch-action:none;cursor:grab;transition:transform .15s var(--spring);background:#fff;border-radius:26px;place-items:center;display:grid}.slot:active{transform:scale(.92)}.food-slot{animation:pop-in .35s var(--spring)}.round-btn{border:3px solid var(--ink);width:42px;height:42px;box-shadow:0 3px 0 var(--ink);background:#fff;border-radius:50%;flex-shrink:0;place-items:center;padding:0;display:grid}.round-btn:active{box-shadow:0 1px 0 var(--ink);transform:translateY(2px)}.big-btn{border:3px solid var(--ink);background:var(--yellow);box-shadow:0 4px 0 var(--ink);border-radius:18px;justify-content:center;align-items:center;gap:8px;padding:13px 22px;font-size:17px;font-weight:800;transition:transform 80ms,box-shadow 80ms;display:inline-flex}.big-btn.blue{background:var(--blue)}.big-btn.dark{color:#fff;background:#4b4580}.big-btn.light{background:#fff}.big-btn.small{padding:9px 16px;font-size:15px}.big-btn.wide{width:100%}.big-btn.ready{animation:1s ease-in-out infinite ready}.big-btn:disabled{opacity:.45;box-shadow:0 1px 0 var(--ink);cursor:default;animation:none;transform:translateY(3px)}.big-btn:active:not(:disabled){box-shadow:0 1px 0 var(--ink);transform:translateY(3px)}.games-row{gap:8px}.game-btn{border:3px solid var(--ink);min-width:0;box-shadow:0 4px 0 var(--ink);background:#fff;border-radius:20px;flex-direction:column;flex:1;align-items:center;gap:4px;padding:10px 4px;font-size:12px;font-weight:700;line-height:1.15;display:flex}.game-btn:active{box-shadow:0 1px 0 var(--ink);transform:translateY(3px)}.nav{padding:6px 4px calc(6px + env(safe-area-inset-bottom));background:var(--ink);gap:2px;display:flex}.nav button{color:var(--ink-soft);background:0 0;border:0;border-radius:14px;flex-direction:column;flex:1;align-items:center;gap:2px;padding:6px 0;font-size:11px;font-weight:700;display:flex}.nav button svg{transition:transform .25s var(--spring)}.nav button.active{color:#fff;background:#ffffff1c}.nav button.active svg{transform:translateY(-3px)scale(1.18)}.drag-ghost{z-index:30;pointer-events:none;filter:drop-shadow(0 8px #0000002e);position:fixed;transform:translate(-50%,-60%)scale(1.15)rotate(-6deg)}.particles{z-index:60;pointer-events:none;position:fixed;inset:0;overflow:hidden}.particle{will-change:transform, opacity;line-height:0;display:block;position:absolute}.sheet-backdrop{z-index:20;background:#140f288c;justify-content:center;align-items:flex-end;animation:.2s ease-out fade;display:flex;position:fixed;inset:0}.sheet{width:100%;max-width:520px;max-height:88vh;padding:16px 16px calc(20px + env(safe-area-inset-bottom));border:4px solid var(--ink);background:var(--paper);animation:slide-up .35s var(--spring);border-bottom:0;border-radius:28px 28px 0 0;overflow-y:auto}.sheet-head{align-items:center;gap:10px;margin-bottom:14px;display:flex}.sheet-head h2{flex:1;margin:0;font-size:24px}.chip{border:3px solid var(--ink);background:#fff;border-radius:999px;align-items:center;gap:6px;padding:5px 12px 5px 7px;font-weight:800;display:inline-flex}.tabs{border:3px solid var(--ink);background:#fff;border-radius:16px;gap:6px;margin-bottom:12px;padding:4px;display:flex}.tabs button{color:var(--muted);background:0 0;border:0;border-radius:11px;flex:1;padding:8px;font-weight:800}.tabs button.on{background:var(--yellow);color:var(--ink)}.shop-grid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.shop-item{border:3px solid var(--ink);animation:pop-in .35s var(--spring) both;background:#fff;border-radius:20px;flex-direction:column;align-items:center;gap:6px;padding:8px 6px 10px;font-size:14px;display:flex}.shop-item:nth-child(2){animation-delay:30ms}.shop-item:nth-child(3){animation-delay:60ms}.shop-item:nth-child(4){animation-delay:90ms}.shop-item:nth-child(5){animation-delay:.12s}.shop-item:nth-child(6){animation-delay:.15s}.shop-item:nth-child(n+7){animation-delay:.18s}.shop-item.on{background:#e4f8ec}.shop-item.locked .shop-preview svg{filter:grayscale()opacity(.45)}.shop-preview{width:100%;padding:2px 0 0;position:relative}.lock{border:2px solid var(--ink);background:#fff;border-radius:50%;place-items:center;width:34px;height:34px;display:grid;position:absolute;top:0;right:0}.small-btn{border:2px solid var(--ink);background:#fff;border-radius:12px;justify-content:center;align-items:center;gap:4px;width:100%;padding:7px 6px;font-size:13px;font-weight:800;display:inline-flex}.small-btn.buy{background:var(--yellow)}.small-btn:disabled{opacity:.45;cursor:default}.block{border:3px solid var(--ink);text-align:left;background:#fff;border-radius:20px;width:100%;margin-bottom:12px;padding:14px;display:block}.block h3{align-items:center;gap:8px;margin:0 0 8px;font-size:17px;display:flex}.members{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.member{align-items:center;gap:8px;font-weight:700;display:inline-flex}.avatar{border:3px solid var(--ink);background:var(--blue);border-radius:50%;place-items:center;width:34px;height:34px;font-weight:800;display:grid}.member+.member .avatar{background:var(--pink)}.streak-block{align-items:center;gap:12px;display:flex}.streak-days{font-size:20px;font-weight:800}.note-form textarea,.rename input{border:2px solid var(--ink);width:100%;font:inherit;color:var(--ink);resize:none;-webkit-user-select:text;user-select:text;border-radius:12px;outline:none;padding:9px 12px;font-weight:600}.note-form .small-btn{margin-top:8px}.rename{gap:8px;display:flex}.rename input{flex:1;min-width:0}.rename .small-btn{width:auto;padding:7px 12px}.toggle{align-items:center;gap:10px;font-weight:700;display:flex}.event{border-top:2px dashed #eadfcf;justify-content:space-between;gap:8px;padding:7px 0;font-size:14px;display:flex}.event:first-of-type{border-top:0}.modal-backdrop{z-index:50;background:#140f2899;place-items:center;padding:16px;animation:.2s ease-out fade;display:grid;position:fixed;inset:0}.modal,.panel{border:4px solid var(--ink);background:var(--paper);text-align:center;width:min(88vw,340px);animation:modal-in .45s var(--spring);border-radius:28px;padding:22px 20px}.modal h2,.panel h2{margin:0 0 6px;font-size:24px}.modal p,.panel p{margin:0 0 14px;font-weight:500;line-height:1.4}.gift{cursor:pointer;place-items:center;margin:4px auto 8px;animation:1.6s ease-in-out infinite gift-shake;display:grid}.gift.opened{animation:none}.reward,.panel .result{animation:pop-in .45s var(--spring);justify-content:center;align-items:center;gap:6px;font-size:30px;font-weight:800;display:flex}.level-star{width:120px;animation:star-spin .9s var(--spring);place-items:center;margin:-6px auto 4px;display:grid;position:relative}.level-star span{font-size:30px;font-weight:800;position:absolute;top:46px}.letter{border:3px solid var(--ink);text-align:left;animation:letter-in .6s var(--spring);background:repeating-linear-gradient(#fff 0 26px,#ffe4ec 26px 28px);border-radius:6px 22px;margin:8px 0 16px;padding:18px 16px;transform:rotate(-1.5deg)}.letter-text{white-space:pre-wrap;word-break:break-word;font-size:18px;font-weight:600!important}.letter-from{text-align:right;color:var(--muted);margin:0!important}.onboarding{max-width:520px;height:100dvh;padding:24px 20px calc(24px + env(safe-area-inset-bottom));background:radial-gradient(#ffffff14 2px, transparent 3px) 0 0 / 28px 28px, var(--ink);color:#fff;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;margin:0 auto;display:flex}.onboarding h1{margin:0;font-size:28px}.onboarding .muted{color:var(--ink-soft);margin:0}.egg{cursor:pointer;transform-origin:50% 90%;margin:18px 0 6px}.egg.idle{animation:2.2s ease-in-out infinite egg-idle}.taps{gap:8px;display:flex}.taps span{width:12px;height:12px;transition:background .2s, transform .3s var(--spring);background:#fff3;border-radius:50%}.taps span.on{background:var(--yellow);transform:scale(1.3)}.hint{max-width:300px;margin-top:18px!important}.onboarding-pet{width:min(60vw,240px);animation:pop-in .6s var(--spring)}.swatches{gap:12px;display:flex}.swatch{width:46px;height:46px;transition:transform .25s var(--spring);border:4px solid #fff;border-radius:50%}.swatch.on{border-color:var(--yellow);transform:scale(1.18)}.name-input{width:100%;max-width:320px;font:inherit;color:var(--ink);text-align:center;-webkit-user-select:text;user-select:text;background:#fff;border:3px solid #fff;border-radius:16px;outline:none;padding:13px 16px;font-size:18px;font-weight:700}.chips{flex-wrap:wrap;justify-content:center;gap:6px;max-width:340px;display:flex}.chip-btn{color:#fff;background:0 0;border:2px solid #fff5;border-radius:999px;padding:6px 12px;font-size:14px;font-weight:600}.onboarding .big-btn.wide{max-width:320px;margin-top:6px}.game{z-index:40;background:var(--ink);flex-direction:column;animation:.25s ease-out fade;display:flex;position:fixed;inset:0}.game-bar{color:#fff;align-items:center;gap:12px;padding:10px 14px;display:flex}.game-score{flex:1;font-size:28px;font-weight:800}.game-lives{gap:2px;display:flex}.game-lives .lost{opacity:.25;transition:all .3s var(--spring);transform:scale(.8)}.game-time{font-size:18px;font-weight:800}.game canvas{touch-action:none;flex:1;width:100%;min-height:0;display:block}.game-cover{background:#140f288c;place-items:center;padding:16px;animation:.25s ease-out fade;display:grid;position:absolute;inset:0}.panel-row{justify-content:center;gap:10px;display:flex}.memory-wrap{background:repeating-linear-gradient(135deg,#ffe3b3 0 24px,#ffd99c 24px 48px);flex:1;place-items:center;padding:12px;display:grid}.memory{grid-template-columns:repeat(3,1fr);gap:10px;width:min(100%,340px,56vh);display:grid}.card-front svg{width:72%;height:auto}.card{aspect-ratio:3/4;perspective:600px;background:0 0;border:0;padding:0}.card-inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .45s var(--spring);display:block;position:relative}.card.flipped .card-inner{transform:rotateY(180deg)}.card-back,.card-front{border:3px solid var(--ink);backface-visibility:hidden;box-shadow:0 4px 0 var(--ink);border-radius:16px;place-items:center;display:grid;position:absolute;inset:0}.card-back{background:radial-gradient(#fff5 3px, transparent 4px) 0 0 / 18px 18px, var(--pink)}.card-front{background:#fff;transform:rotateY(180deg)}.card.found .card-front{animation:found .5s var(--spring);background:#e4f8ec}.toast{left:50%;bottom:calc(150px + env(safe-area-inset-bottom));z-index:70;background:var(--ink);color:#fff;text-align:center;max-width:calc(100% - 32px);animation:toast .35s var(--spring);border:3px solid #fff;border-radius:16px;padding:10px 18px;font-size:14px;font-weight:700;position:fixed;transform:translate(-50%)}@keyframes loader{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes wobble{0%,to{transform:rotate(0)}20%{transform:rotate(-8deg)}40%{transform:rotate(8deg)}60%{transform:rotate(0)}}@keyframes nudge{0%,80%,to{transform:scale(1)}88%{transform:scale(1.18)rotate(-8deg)}94%{transform:scale(1.1)rotate(6deg)}}@keyframes float{0%,to{translate:0}50%{translate:0 -6px}}@keyframes pop-in{0%{opacity:0;scale:.4}to{opacity:1;scale:1}}@keyframes zzz{0%,to{opacity:.2;transform:translateY(4px)}50%{opacity:1;transform:translateY(-6px)}}@keyframes tear{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(24px)}}@keyframes foam-in{0%{transform:translate(-50%,-50%)scale(0)}to{transform:translate(-50%,-50%)scale(1)}}@keyframes rain{0%{transform:translateY(0)}to{transform:translateY(110vh)}}@keyframes room-in-right{0%{opacity:0;transform:translate(40%)}to{opacity:1;transform:translate(0)}}@keyframes room-in-left{0%{opacity:0;transform:translate(-40%)}to{opacity:1;transform:translate(0)}}@keyframes tray-in{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes ready{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}@keyframes banner{0%{transform:translate(-50%,-80px)}12%{transform:translate(-50%)}85%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-80px)}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes modal-in{0%{opacity:0;transform:scale(.6)rotate(-4deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes gift-shake{0%,70%,to{transform:rotate(0)scale(1)}75%{transform:rotate(-7deg)scale(1.05)}80%{transform:rotate(6deg)scale(1.05)}85%{transform:rotate(-4deg)}90%{transform:rotate(2deg)}}@keyframes star-spin{0%{transform:scale(0)rotate(-200deg)}to{transform:scale(1)rotate(0)}}@keyframes letter-in{0%{opacity:0;transform:translateY(40px)rotate(6deg)scale(.8)}to{opacity:1;transform:translateY(0)rotate(-1.5deg)scale(1)}}@keyframes egg-idle{0%,60%,to{transform:rotate(0)}70%{transform:rotate(-5deg)}80%{transform:rotate(4deg)}90%{transform:rotate(-2deg)}}@keyframes found{0%{transform:rotateY(180deg)scale(1)}50%{transform:rotateY(180deg)scale(1.12)}to{transform:rotateY(180deg)scale(1)}}@keyframes toast{0%{opacity:0;transform:translate(-50%,20px)scale(.9)}to{opacity:1;transform:translate(-50%)scale(1)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
