:root{--pink: #ff8fb8;--pink-d: #f06595;--blue: #74c0fc;--blue-d: #4dabf7;--yellow: #ffd43b;--yellow-d: #fab005;--green: #69db7c;--green-d: #40c057;--ink: #5a4a6b;--card: #ffffff;--shadow: 0 6px 0 rgba(90, 74, 107, .18), 0 10px 24px rgba(90, 74, 107, .18);--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--btn: 58px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;overflow:hidden;overscroll-behavior:none;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;font-family:"Baloo 2",Comic Sans MS,Chalkboard SE,system-ui,sans-serif;color:var(--ink)}body{background:linear-gradient(180deg,#d0ebff,#ffe3ec 60%,#fff0f6);transition:background .8s}body.night{background:linear-gradient(180deg,#1b1f4b,#3b2f6b 60%,#5f3d7a)}#scene{position:fixed;inset:0;width:100%;height:100%;display:block}button{font-family:inherit;color:inherit;border:none;cursor:pointer;padding:0;background:none}.hidden{display:none!important}.press{animation:press .32s ease-out}@keyframes press{0%{transform:scale(1)}35%{transform:scale(.86)}70%{transform:scale(1.08)}to{transform:scale(1)}}.btn.round{width:var(--btn);height:var(--btn);border-radius:50%;background:var(--card);box-shadow:var(--shadow);font-size:30px;display:grid;place-items:center;flex:none}.btn.round.small{width:46px;height:46px;font-size:22px;opacity:.92}.btn.round.armed{background:#ffe066;animation:wob .5s infinite}@keyframes wob{50%{transform:rotate(-10deg) scale(1.1)}}#hud{position:fixed;inset:0;pointer-events:none;z-index:10}#hud>*{pointer-events:auto}#hud.locked>*{pointer-events:none;opacity:.6;transition:opacity .3s}#hud.locked>.top{opacity:1}.top{position:absolute;left:0;right:0;top:0;padding:calc(var(--safe-top) + 10px) 10px 0;display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap;pointer-events:none!important}.top>*{pointer-events:auto}.bubble{order:3;flex:1 1 100%;margin:0 auto;min-height:68px;background:var(--card);border-radius:24px;box-shadow:var(--shadow);display:flex;align-items:center;gap:6px;padding:6px 10px 6px 6px;position:relative;max-width:420px}.bubble .portrait{width:56px;height:56px;flex:none}.wishes{display:flex;gap:10px;flex-wrap:wrap;flex:1;justify-content:center}.wish{position:relative;width:54px;height:54px;border-radius:16px;background:#fff4f8;border:3px dashed #ffc9de;display:grid;place-items:center;transition:background .3s,border-color .3s}.wish img{width:46px;height:46px;object-fit:contain}.wish .multi{display:flex;flex-wrap:wrap;justify-content:center;width:48px}.wish .multi img{width:23px;height:23px}.wish .badge{position:absolute;right:-4px;bottom:-4px;width:22px;height:22px;border-radius:50%;border:3px solid #fff;box-shadow:0 2px 4px #0003}.wish .wallicon{width:40px;height:40px;border-radius:8px;background-size:22px;border:3px solid #fff;box-shadow:inset 0 0 0 1px #00000014;position:relative}.wish .wallicon span{position:absolute;right:-10px;bottom:-10px;font-size:20px}.wish .flooricon{width:42px;height:30px;border-radius:6px;background-size:28px;transform:perspective(60px) rotateX(35deg);border:2px solid #fff}.wish .check{position:absolute;right:-8px;top:-10px;width:26px;height:26px;border-radius:50%;background:var(--green);color:#fff;font-size:16px;font-weight:800;display:none;place-items:center;box-shadow:0 2px 0 var(--green-d)}.wish.done{background:#ebfbee;border:3px solid var(--green)}.wish.done .check{display:grid}.stars-pill{margin-left:auto;background:var(--card);border-radius:999px;box-shadow:var(--shadow);height:50px;padding:0 12px 0 8px;display:flex;align-items:center;gap:4px;font-size:22px;font-weight:800;flex:none}.stars-pill .giftbar{width:34px;height:12px;border-radius:6px;background:#f1e6f7;overflow:hidden;margin-left:4px}.stars-pill .giftbar i{display:block;height:100%;background:linear-gradient(90deg,#ff8fb8,#ffd43b);transition:width .6s}.stars-pill .gf{font-size:20px}.side{position:absolute;left:14px;top:calc(var(--safe-top) + 82px);transition:top .3s}#hud.with-bubble .side{top:calc(var(--safe-top) + 166px)}.side{display:flex;flex-direction:column;gap:10px}.btn.done{position:relative;align-self:flex-end;margin:0 14px 4px 0;flex:none;width:86px;height:86px;border-radius:50%;background:linear-gradient(180deg,#8ce99a,#51cf66);box-shadow:0 6px #2f9e44,0 12px 24px #2f9e4459;font-size:40px;display:grid;place-items:center;animation:pulse 1.8s infinite}.btn.done small{position:absolute;right:2px;bottom:2px;width:30px;height:30px;border-radius:50%;background:#fff;color:var(--green-d);font-size:18px;font-weight:900;display:grid;place-items:center}@keyframes pulse{50%{transform:scale(1.07)}}.selbar{position:absolute;left:0;top:0;display:flex;gap:8px;padding:6px;background:#ffffff8c;border-radius:999px;backdrop-filter:blur(4px);transition:transform .08s linear}.btn.sel{width:52px;height:52px;font-size:26px}.btn.sel.active{background:#ffe066}.btn.sel.off{filter:grayscale(1);opacity:.7}.bottom{position:absolute;left:0;right:0;bottom:0;pointer-events:none!important;padding:0 0 calc(var(--safe-bottom) + 8px);display:flex;flex-direction:column;gap:8px}.bottom>*{pointer-events:auto}.tabs{display:flex;justify-content:center;gap:8px;padding:0 8px}.tab{width:56px;height:56px;border-radius:18px;background:var(--card);box-shadow:var(--shadow);font-size:30px;display:grid;place-items:center;transition:transform .15s,background .2s}.tab.active{background:#ffe066;transform:translateY(-6px)}.tray{margin:0 8px;background:#ffffffeb;border-radius:26px;box-shadow:var(--shadow);padding:8px 0;display:flex;flex-direction:column;gap:6px;animation:trayIn .25s ease-out;max-height:46vh;overflow-y:auto}@keyframes trayIn{0%{transform:translateY(30px);opacity:0}}.row{display:flex;gap:8px;overflow-x:auto;overflow-y:hidden;padding:4px 12px;scrollbar-width:none;touch-action:pan-x;flex:none}.row::-webkit-scrollbar{display:none}.row.label{padding:0 14px;font-size:20px;height:24px;align-items:center}.card{position:relative;flex:none;width:84px;height:84px;border-radius:22px;background:linear-gradient(180deg,#fff,#fff4f8);box-shadow:0 4px #f3d9e6;display:grid;place-items:center}.card img{width:76px;height:76px;object-fit:contain;pointer-events:none}.card.locked img{filter:grayscale(1) brightness(1.15) opacity(.45)}.lock{position:absolute;right:-2px;bottom:-4px;font-size:26px;pointer-events:none}.blob{flex:none;width:50px;height:50px;border-radius:50%;background:var(--c);box-shadow:inset 0 -5px #0000001f,0 3px #0000001f;border:4px solid #fff}.blob.on,.swatch.on,.chip.on{outline:4px solid #ffd43b;outline-offset:1px;transform:scale(1.06)}.swatch{position:relative;flex:none;width:54px;height:54px;border-radius:14px;background-size:40px;background-color:#fff;border:3px solid #fff;box-shadow:0 3px #0000001f}.swatch.floor{background-size:54px}.swatch.locked{filter:grayscale(.8) opacity(.6)}.swatch .lock{font-size:22px}.chip{flex:none;min-width:54px;height:50px;border-radius:16px;background:#fff;border-bottom:8px solid var(--c);box-shadow:0 3px #0000001a;font-size:26px}#overlay{position:fixed;inset:0;z-index:20;pointer-events:none;display:none}#overlay.show{display:block;pointer-events:auto}.loading{background:linear-gradient(180deg,#d0ebff,#ffe3ec);display:grid!important;place-items:center}.loader{text-align:center}.loader .house{font-size:90px;animation:hop .6s infinite alternate ease-in-out}@keyframes hop{to{transform:translateY(-24px) scale(1.05,.95)}}.loader .dots{display:flex;gap:10px;justify-content:center}.loader .dots i{width:14px;height:14px;border-radius:50%;background:var(--pink);animation:blink .9s infinite}.loader .dots i:nth-child(2){animation-delay:.15s;background:var(--yellow)}.loader .dots i:nth-child(3){animation-delay:.3s;background:var(--blue)}@keyframes blink{50%{transform:scale(.4);opacity:.4}}.menu{background:linear-gradient(180deg,#ffffff26,#fff0f68c)}.menu-box{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:calc(var(--safe-top) + 26px) 16px calc(var(--safe-bottom) + 20px);gap:10px}.title{margin:0;font-size:clamp(38px,11vw,64px);line-height:1;color:#fff;text-shadow:0 4px 0 var(--pink-d),0 8px 0 rgba(90,74,107,.25);letter-spacing:1px;text-align:center;animation:titleBob 3s ease-in-out infinite}.title span{color:var(--yellow)}@keyframes titleBob{50%{transform:translateY(-6px) rotate(-1deg)}}.menu-stars{font-size:26px;font-weight:800;background:#fff;padding:2px 18px;border-radius:999px;box-shadow:var(--shadow)}.menu-buttons{margin-top:auto;display:grid;grid-template-columns:1fr 1fr;gap:14px;width:min(100%,460px)}.menu-btn{border-radius:30px;min-height:112px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:#fff}.menu-btn .ico{font-size:50px;line-height:1}.menu-btn .sub{font-size:22px}.menu-btn.pink{background:linear-gradient(180deg,#ffa8c8,#ff7aa8);box-shadow:0 8px #e64980,0 14px 30px #e649804d}.menu-btn.blue{background:linear-gradient(180deg,#a5d8ff,#74c0fc);box-shadow:0 8px #339af0,0 14px 30px #339af04d}.menu-btn.yellow{background:linear-gradient(180deg,#ffe885,#ffd43b);box-shadow:0 8px #f59f00,0 14px 30px #f59f004d}.menu-btn.grey{background:#dee2e6;box-shadow:0 6px #adb5bd}.menu-btn:first-child{grid-column:1 / -1;min-height:140px}.menu-btn .guests{display:flex;align-items:flex-end}.menu-btn .guests img{width:80px;height:80px;margin:0 -10px;animation:hop .7s infinite alternate ease-in-out}.menu-btn .guests img:nth-child(2){animation-delay:.2s}.menu-btn .guests img:nth-child(3){animation-delay:.4s}.menu-btn .door{font-size:30px;margin-top:-4px}.menu-btn.small{min-height:0;width:96px;height:84px;border-radius:26px}.menu-btn.small .ico{font-size:40px}.menu-btn.tiny{min-height:0;width:64px;height:64px;border-radius:20px}.menu-btn.tiny .ico{font-size:28px}.menu-btn.armed{background:#ff8787}.gear{position:absolute;left:10px;top:calc(var(--safe-top) + 10px);font-size:22px;opacity:.45;width:44px;height:44px;border-radius:50%}.gear.holding{opacity:1;animation:spin 1.5s linear;background:#fff}@keyframes spin{to{transform:rotate(360deg)}}.parents{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(92vw,380px);background:#fff;border-radius:24px;box-shadow:var(--shadow);padding:18px 20px;font-size:17px;line-height:1.4;font-family:system-ui,sans-serif}.parents h2{margin:0 0 10px;font-size:20px}.parents label{display:flex;gap:10px;align-items:center;margin:8px 0}.parents input{width:22px;height:22px}.parents .info{color:#868e96;font-size:14px}.parents .pbtns{display:flex;flex-direction:column;gap:8px;margin-top:10px}.parents .pbtns button{padding:12px;border-radius:14px;background:#f1f3f5;font-size:16px;font-family:system-ui,sans-serif}.parents .pbtns .danger{background:#ffe3e3;color:#c92a2a}.parents .pbtns .ok{background:var(--green);color:#fff}.result{background:#fff0f699;backdrop-filter:blur(3px);display:grid!important;place-items:center}.card-result{width:min(92vw,400px);background:#fff;border-radius:32px;box-shadow:var(--shadow);padding:14px;display:flex;flex-direction:column;align-items:center;gap:10px;animation:popIn .5s cubic-bezier(.2,1.6,.4,1)}@keyframes popIn{0%{transform:scale(.4);opacity:0}}.card-result .photo{position:relative;width:100%;aspect-ratio:4 / 3;border-radius:22px;background:#f8f0fc center / cover;box-shadow:inset 0 0 0 4px #fff,0 4px #f3d9e6}.card-result .who{position:absolute;left:-12px;bottom:-18px;width:96px;height:96px;animation:hop .5s infinite alternate ease-in-out}.wish-row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:6px}.extras{display:flex;gap:10px;font-size:30px;min-height:0}.extra{animation:popIn .5s 1s both cubic-bezier(.2,1.6,.4,1)}.star-row{display:flex;gap:2px;min-height:58px;flex-wrap:wrap;justify-content:center}.big-star{font-size:48px;animation:starIn .5s cubic-bezier(.2,1.8,.4,1);display:inline-block}@keyframes starIn{0%{transform:scale(0) rotate(-180deg)}}.result-btns{display:flex;gap:14px;justify-content:center;align-items:center}.confetti{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:30}.confetti i{position:absolute;top:-20px;width:10px;height:16px;border-radius:3px;animation:fall linear forwards}@keyframes fall{to{transform:translate(var(--x),110vh) rotate(var(--r))}}.gift{background:radial-gradient(circle,#fff3bfe6,#ffd6e8d9);display:grid!important;place-items:center}.gift-wrap{display:flex;flex-direction:column;align-items:center;gap:16px;position:relative}.giftbox{font-size:150px;line-height:1;transform:scale(var(--s, 1));transition:transform .2s;cursor:pointer;animation:giftIdle 1.2s infinite}@keyframes giftIdle{50%{transform:scale(var(--s, 1)) rotate(-4deg)}}.giftbox.shake{animation:shake .4s}@keyframes shake{20%{transform:scale(var(--s)) rotate(-14deg)}60%{transform:scale(var(--s)) rotate(12deg)}}.giftbox.burst{animation:burst .45s forwards}@keyframes burst{to{transform:scale(2.4);opacity:0}}.gift-hint{font-size:50px;animation:tapHint .9s infinite}@keyframes tapHint{50%{transform:translateY(-14px)}}.shine{position:absolute;width:340px;height:340px;top:50%;left:50%;margin:-220px 0 0 -170px;background:repeating-conic-gradient(rgba(255,255,255,.75) 0 10deg,transparent 10deg 30deg);border-radius:50%;animation:spin 8s linear infinite;z-index:-1;mask-image:radial-gradient(circle,#000 30%,transparent 70%);-webkit-mask-image:radial-gradient(circle,#000 30%,transparent 70%)}.prize{display:flex;flex-direction:column;align-items:center;animation:popIn .6s cubic-bezier(.2,1.8,.4,1)}.prize img{width:200px;height:200px;object-fit:contain;filter:drop-shadow(0 10px 10px rgba(0,0,0,.15))}.prize .swatch-big{width:170px;height:170px;border-radius:30px;background-size:60px;border:8px solid #fff;box-shadow:var(--shadow)}.prize .new{font-size:30px;font-weight:800;color:#fff;text-shadow:0 3px 0 var(--pink-d);margin-top:8px}.album{background:linear-gradient(180deg,#fff9db,#ffe3ec);overflow-y:auto;touch-action:pan-y}.album-head{display:flex;align-items:center;gap:12px;padding:calc(var(--safe-top) + 10px) 12px 6px;position:sticky;top:0;z-index:2}.album-title{font-size:40px}.album-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:18px;padding:10px 16px calc(var(--safe-bottom) + 30px)}.album-grid .empty{grid-column:1 / -1;text-align:center;font-size:40px;padding:60px 0;opacity:.6}.polaroid{position:relative;background:#fff;padding:8px 8px 26px;border-radius:8px;box-shadow:0 6px 16px #5a4a6b2e;transform:rotate(var(--tilt))}.polaroid .ph{width:100%;aspect-ratio:4 / 3;background:#eee center / cover;border-radius:4px}.polaroid .who{position:absolute;right:-8px;bottom:-10px;width:54px;height:54px}.photo-view{position:fixed;inset:0;background:#fff9dbf7;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:16px;z-index:5}.big-photo{width:min(94vw,560px);aspect-ratio:4 / 3;background:#fff center / cover;border-radius:14px;border:10px solid #fff;box-shadow:var(--shadow)}.flash{position:fixed;inset:0;background:#fff;z-index:50;pointer-events:none;animation:flash .6s forwards}@keyframes flash{0%{opacity:.95}to{opacity:0}}.toast{position:fixed;left:50%;top:40%;transform:translate(-50%,-50%);font-size:64px;z-index:40;pointer-events:none;animation:toast 1.6s forwards}@keyframes toast{0%{transform:translate(-50%,-50%) scale(0)}20%{transform:translate(-50%,-50%) scale(1.2)}30%{transform:translate(-50%,-50%) scale(1)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-80%)}}@media(max-width:380px){:root{--btn: 50px}.tab{width:50px;height:50px;font-size:26px}.card{width:74px;height:74px}.card img{width:66px;height:66px}.wish{width:46px;height:46px}.wish img{width:40px;height:40px}}@media(min-width:700px){.tray{margin:0 auto;width:640px}}
