:root{--scene-w: 400px;--sky-top: #bfe9ff;--sky-bot: #eaf9d8}.stage{position:fixed;top:0;left:0;right:0;bottom:0;transform:translateZ(0);margin:auto;width:min(100vw,69.5vh);height:min(100vh,calc(100vw / .695));display:flex;flex-direction:column;--canopy-back-0:#bfe39a;--canopy-back-1:#9fd07f;--canopy-mid-0:#8fce6e;--canopy-mid-1:#6fb84f;--canopy-front:#7cc457;--ground:#7bbf4f;--ground-edge:#8fd05f;--sky-day:linear-gradient(#a9def7, #cdeeff 35%, #eaf9d8 78%, #dff2c6);background:var(--sky-day);overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;font-family:system-ui,-apple-system,Segoe UI,sans-serif}.scene{position:relative;flex:1 1 auto;overflow:visible}.tree-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.worlds{position:absolute;top:2.5%;left:3%;z-index:6000;display:flex;gap:6px}.world-btn{position:relative;width:clamp(40px,10vw,56px);height:clamp(40px,10vw,56px);border:3px solid rgba(255,255,255,.7);border-radius:16px;background:#ffffff6b;cursor:pointer;touch-action:manipulation;display:grid;place-items:center;box-shadow:0 3px #785a2838;transition:transform .15s cubic-bezier(.34,1.7,.5,1)}.world-btn:active{transform:scale(.9)}.world-btn.active{background:#fff7dd;border-color:#ffd25e;box-shadow:0 3px #d2962880;transform:scale(1.08)}.world-leaf{font-size:clamp(22px,5.5vw,30px);line-height:1;filter:saturate(1.1)}.world-num{position:absolute;bottom:1px;right:4px;font-size:clamp(11px,2.6vw,14px);font-weight:800;color:#6b4a1f;text-shadow:0 1px 0 #fff}.world-dot{position:absolute;top:-4px;right:-4px;width:12px;height:12px;border-radius:50%;background:#ff7aa2;border:2px solid #fff}.thing{position:absolute;transform:translate(-50%,-50%) scale(var(--s, 1));transform-origin:center bottom;cursor:grab;touch-action:none;filter:drop-shadow(0 6px 5px rgba(60,40,20,.22));transition:transform .18s cubic-bezier(.34,1.7,.5,1);will-change:transform}.thing>svg{width:100%;height:100%}.thing:active{cursor:grabbing}.thing.lifted{opacity:0}.thing.pop{animation:pop .36s cubic-bezier(.34,1.7,.5,1)}@keyframes pop{0%{transform:translate(-50%,-50%) scale(calc(var(--s, 1) * 1.35),calc(var(--s, 1) * .7))}55%{transform:translate(-50%,-50%) scale(calc(var(--s, 1) * .9),calc(var(--s, 1) * 1.12))}to{transform:translate(-50%,-50%) scale(var(--s, 1))}}.thing.happy{animation:wiggle .5s ease-in-out 0s 2}.thing.adored{animation:adored .55s cubic-bezier(.34,1.7,.5,1) 0s 3}@keyframes adored{0%,to{transform:translate(-50%,-50%) scale(var(--s, 1)) rotate(0)}25%{transform:translate(-50%,-58%) scale(calc(var(--s, 1) * 1.22)) rotate(-11deg)}75%{transform:translate(-50%,-58%) scale(calc(var(--s, 1) * 1.22)) rotate(11deg)}}@keyframes wiggle{0%,to{transform:translate(-50%,-50%) scale(var(--s, 1)) rotate(0)}25%{transform:translate(-50%,-52%) scale(calc(var(--s, 1) * 1.08)) rotate(-7deg)}75%{transform:translate(-50%,-52%) scale(calc(var(--s, 1) * 1.08)) rotate(7deg)}}.idle{animation:breathe 3.2s ease-in-out infinite}.idle-1{animation:sway 3.8s ease-in-out infinite}.idle-2{animation:breathe 2.7s ease-in-out infinite;animation-delay:-1s}@keyframes breathe{0%,to{transform:translate(-50%,-50%) scale(var(--s, 1))}50%{transform:translate(-50%,-51%) scale(calc(var(--s, 1) * 1.04),calc(var(--s, 1) * .98))}}@keyframes sway{0%,to{transform:translate(-50%,-50%) scale(var(--s, 1)) rotate(-3deg)}50%{transform:translate(-50%,-50%) scale(var(--s, 1)) rotate(3deg)}}.eyes{transform-box:fill-box;transform-origin:center;animation:blink 4.5s infinite}@keyframes blink{0%,92%,to{transform:scaleY(1)}95%{transform:scaleY(.12)}}.thing.homed{filter:drop-shadow(0 4px 4px rgba(60,40,20,.25))}.ghost{position:fixed;transform:translate(-50%,-55%) scale(1.15) rotate(-4deg);pointer-events:none;z-index:9999;filter:drop-shadow(0 12px 10px rgba(40,30,15,.3));animation:grabbed .18s cubic-bezier(.34,1.7,.5,1)}.ghost>svg{width:100%;height:100%}@keyframes grabbed{0%{transform:translate(-50%,-55%) scale(.9) rotate(0)}to{transform:translate(-50%,-55%) scale(1.15) rotate(-4deg)}}.spark{position:fixed;z-index:9998;font-size:clamp(20px,6vw,34px);pointer-events:none;transform:translate(-50%,-50%);animation:floatUp 1.1s ease-out forwards}@keyframes floatUp{0%{opacity:0;transform:translate(-50%,-50%) scale(.4)}25%{opacity:1;transform:translate(-50%,-110%) scale(1.1)}to{opacity:0;transform:translate(-50%,-260%) scale(.8)}}.tray{flex:0 0 auto;max-height:44%;background:linear-gradient(#fff4e0,#ffe6bd);border-top:4px solid #e7b877;box-shadow:0 -6px 14px #78501e2e;padding:1.5% 1.5% 2%;touch-action:none;overflow-y:auto;z-index:5000}.tray-scroll{display:flex;flex-wrap:wrap;justify-content:center;align-content:flex-start;gap:1.5%;padding:2px}.tray-group{display:flex;flex-wrap:wrap;gap:5px;justify-content:center;padding:5px 8px;border-radius:20px;align-items:center}.group-animals{background:#ffe1e8}.group-houses{background:#e2f0d4}.group-foods{background:#ffeccb}.group-decorations{background:#e6e2ff}.tray-item{flex:0 0 auto;width:clamp(44px,11vw,66px);height:clamp(44px,11vw,66px);border:none;background:#ffffffa6;border-radius:18px;padding:6px;cursor:grab;touch-action:none;display:grid;place-items:center;box-shadow:0 3px #966e3c40;animation:bob 2.6s ease-in-out infinite}.tray-item>svg{width:100%;height:100%}.tray-item:nth-child(2){animation-delay:-.4s}.tray-item:nth-child(3){animation-delay:-.8s}.tray-item:nth-child(4){animation-delay:-1.2s}.tray-item:active{transform:scale(.92)}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.stage.season-spring{--canopy-back-0:#d6f0b4;--canopy-back-1:#b9e390;--canopy-mid-0:#a9df86;--canopy-mid-1:#88cd5f;--canopy-front:#95d36c;--ground:#88cd5f;--ground-edge:#a9e072;--sky-day:linear-gradient(#bfe8ff, #d8f2ff 35%, #eafbe0 78%, #dcf3c8)}.stage.season-autumn{--canopy-back-0:#f3cf8e;--canopy-back-1:#e3a95f;--canopy-mid-0:#e8a64f;--canopy-mid-1:#cf7a33;--canopy-front:#dd8a3a;--ground:#c99a52;--ground-edge:#e0b262;--sky-day:linear-gradient(#f7d9a8, #ffe9c6 34%, #ffeccf 74%, #f2dcb0)}.stage.season-winter{--canopy-back-0:#dbe9ee;--canopy-back-1:#bcd2da;--canopy-mid-0:#c6d9de;--canopy-mid-1:#a6c1cb;--canopy-front:#d2e2e6;--ground:#e9f1f4;--ground-edge:#cfe0e6;--sky-day:linear-gradient(#d5e7f4, #e6f1fa 36%, #eef6fb 76%, #e4eef5)}.stage{transition:background 1.1s ease}.stage.night{background:linear-gradient(#141a33,#232c57 40%,#3c3f66 72%,#4a4361)}.tree-svg{transition:opacity .3s ease}.controls{position:absolute;top:2.5%;right:4%;z-index:6000;display:flex;flex-direction:column;align-items:center;gap:8px}.sky-toggle,.mute-toggle{border:none;border-radius:50%;cursor:pointer;touch-action:manipulation;display:grid;place-items:center;line-height:1;transition:transform .2s cubic-bezier(.34,1.7,.5,1)}.sky-toggle{width:clamp(58px,14vw,80px);height:clamp(58px,14vw,80px);font-size:clamp(32px,7.5vw,44px);background:radial-gradient(circle,#fff7cf,#ffe27a 62%,#ffd66433);box-shadow:0 0 24px #ffd26ed9,0 3px 8px #3c281433;animation:sun-invite 3.2s ease-in-out infinite}.sky-toggle:active{transform:scale(.85) rotate(-14deg)}.stage.night .sky-toggle{background:radial-gradient(circle,#fdfbe8,#cfe0ff 62%,#cfe0ff33);box-shadow:0 0 24px #cfe0ffd9,0 3px 8px #1414284d}@keyframes sun-invite{0%,to{transform:scale(1)}50%{transform:scale(1.07)}}.mute-toggle{width:clamp(34px,7.5vw,44px);height:clamp(34px,7.5vw,44px);font-size:clamp(15px,3.6vw,20px);background:#ffffff52;box-shadow:0 2px 6px #3c28142e}.mute-toggle:active{transform:scale(.9)}.stage.night .mute-toggle{background:#e6ecff38}.season-toggle{width:clamp(38px,8.5vw,50px);height:clamp(38px,8.5vw,50px);border:none;border-radius:50%;cursor:pointer;touch-action:manipulation;display:grid;place-items:center;line-height:1;font-size:clamp(19px,4.6vw,26px);background:#fff6;box-shadow:0 2px 7px #3c281433;transition:transform .25s cubic-bezier(.34,1.7,.5,1)}.season-toggle:active{transform:scale(.86) rotate(22deg)}.stage.night .season-toggle{background:#e6ecff38}.share-toggle{width:clamp(34px,7.5vw,44px);height:clamp(34px,7.5vw,44px);border:none;border-radius:50%;cursor:pointer;touch-action:manipulation;display:grid;place-items:center;line-height:1;font-size:clamp(15px,3.6vw,20px);background:#ffffff52;box-shadow:0 2px 6px #3c28142e;transition:transform .2s cubic-bezier(.34,1.7,.5,1)}.share-toggle:active{transform:scale(.9)}.stage.night .share-toggle{background:#e6ecff38}.share-scrim{position:absolute;top:0;right:0;bottom:0;left:0;z-index:9000;background:#1e160c80;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:grid;place-items:center;padding:6%;animation:fade .2s ease}@keyframes fade{0%{opacity:0}to{opacity:1}}.share-panel{width:min(420px,100%);max-height:92%;overflow-y:auto;background:linear-gradient(#fff8ec,#fff);border:3px solid #f0d9a8;border-radius:22px;padding:20px 20px 22px;box-shadow:0 18px 44px #3c281466;user-select:text;-webkit-user-select:text;touch-action:auto;font-family:system-ui,-apple-system,Segoe UI,sans-serif;color:#3a2e1c}.share-title{margin:0 0 4px;font-size:1.3rem}.share-note{margin:0 0 12px;font-size:.86rem;color:#7a6a4c;line-height:1.45}.share-label{display:block;font-weight:700;font-size:.9rem;margin:2px 0 6px}.share-code,.share-in{width:100%;box-sizing:border-box;resize:none;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.8rem;border:2px solid #e7d3a6;border-radius:12px;padding:9px 11px;background:#fffdf7;color:#4a3c22;user-select:text;-webkit-user-select:text}.share-code{height:78px;margin-bottom:10px}.share-in{height:60px}.share-div{height:1px;background:#eedcb6;margin:16px 0}.share-err{color:#c0492b;font-size:.82rem;margin:8px 0 0}.share-row{display:flex;gap:10px;margin-top:12px}.share-btn{flex:1;border:none;border-radius:13px;padding:12px 14px;cursor:pointer;font-size:.95rem;font-weight:700;font-family:inherit;background:#efe3cb;color:#5a4a2c;box-shadow:0 3px #966e3c40;touch-action:manipulation}.share-btn.primary{background:#4e9e4a;color:#fff;box-shadow:0 3px #286e2866}.share-btn:active{transform:translateY(1px)}.share-btn:disabled{opacity:.5;cursor:default}.cloud{position:absolute;z-index:1;width:26%;padding-bottom:12%;background:radial-gradient(closest-side,#ffffffeb,#ffffffbf 70%,#fff0);border-radius:50%;pointer-events:none;opacity:.9;transition:opacity 1s ease}.cloud-1{top:12%;left:-30%;animation:drift 46s linear infinite}.cloud-2{top:22%;left:-30%;transform:scale(.7);animation:drift 64s linear infinite;animation-delay:-30s}.stage.night .cloud{opacity:0}@keyframes drift{0%{transform:translate(0) scale(var(--cs, 1))}to{transform:translate(560%) scale(var(--cs, 1))}}.firefly{position:absolute;width:9px;height:9px;border-radius:50%;background:radial-gradient(circle,#fff8b0,#ffe873 45%,#ffe87300 72%);pointer-events:none;z-index:30;animation:glimmer 3.6s ease-in-out infinite}@keyframes glimmer{0%,to{opacity:.15;transform:translate(0) scale(.8)}50%{opacity:1;transform:translate(10px,-14px) scale(1.15)}}.thing.sleeping{animation:doze 4s ease-in-out infinite;filter:drop-shadow(0 4px 4px rgba(20,20,40,.3)) brightness(.9)}@keyframes doze{0%,to{transform:translate(-50%,-50%) scale(var(--s, 1))}50%{transform:translate(-50%,-49%) scale(calc(var(--s, 1) * 1.03),calc(var(--s, 1) * .97))}}.thing.sleeping:after{content:"z";position:absolute;top:-6%;right:-2%;font-size:clamp(12px,3vw,18px);font-weight:800;color:#ffffffe6;text-shadow:0 1px 2px rgba(0,0,0,.35);animation:zfloat 3s ease-in-out infinite}@keyframes zfloat{0%{opacity:0;transform:translateY(4px) scale(.7)}40%{opacity:1}to{opacity:0;transform:translate(6px,-14px) scale(1.1)}}.thing.glow{filter:drop-shadow(0 0 10px rgba(255,214,120,.9)) drop-shadow(0 6px 5px rgba(60,40,20,.22));animation:lantern 3s ease-in-out infinite}@keyframes lantern{0%,to{filter:drop-shadow(0 0 8px rgba(255,214,120,.7)) drop-shadow(0 6px 5px rgba(60,40,20,.22))}50%{filter:drop-shadow(0 0 15px rgba(255,224,150,1)) drop-shadow(0 6px 5px rgba(60,40,20,.22))}}.thing.fairy{animation:flutter 2.4s ease-in-out infinite}@keyframes flutter{0%,to{transform:translate(-50%,-50%) scale(var(--s, 1)) rotate(0)}25%{transform:translate(-50%,-53%) scale(calc(var(--s, 1) * 1.06),calc(var(--s, 1) * .96)) rotate(-4deg)}50%{transform:translate(-50%,-50%) scale(var(--s, 1)) rotate(0)}75%{transform:translate(-50%,-53%) scale(calc(var(--s, 1) * 1.06),calc(var(--s, 1) * .96)) rotate(4deg)}}.thing.fairy{filter:drop-shadow(0 0 6px rgba(255,200,100,.5)) drop-shadow(0 6px 5px rgba(60,40,20,.22))}.stage.night .thing.fairy{filter:drop-shadow(0 0 12px rgba(255,220,120,.8)) drop-shadow(0 0 8px rgba(200,170,100,.6)) drop-shadow(0 6px 5px rgba(20,20,40,.3));animation:fairy-glow 2s ease-in-out infinite,flutter 2.4s ease-in-out infinite}@keyframes fairy-glow{0%,to{filter:drop-shadow(0 0 12px rgba(255,220,120,.8)) drop-shadow(0 0 8px rgba(200,170,100,.6)) drop-shadow(0 6px 5px rgba(20,20,40,.3))}50%{filter:drop-shadow(0 0 18px rgba(255,230,140,1)) drop-shadow(0 0 12px rgba(220,190,120,.7)) drop-shadow(0 6px 5px rgba(20,20,40,.3))}}@media (prefers-reduced-motion: reduce){*{animation:none!important}}*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overscroll-behavior:none}#root{width:100%;min-height:100%}.onboarding-modal{position:fixed;top:0;left:0;right:0;bottom:0;transform:translateZ(0);background:#649664d9;display:flex;align-items:center;justify-content:center;z-index:9999}.onboarding-content{background:linear-gradient(160deg,#c8e6c9,#a5d6a7);border:2px solid rgba(75,110,75,.4);border-radius:12px;padding:26px 22px 22px;max-width:360px;max-height:80vh;overflow-y:auto;position:relative;box-shadow:0 10px 40px #0000004d}.onboarding-title{color:#2e7d32;font-size:18px;letter-spacing:1px;margin-bottom:14px;text-align:center;font-weight:700}.onboarding-body p{margin-bottom:10px;font-size:13px;line-height:1.55;color:#1b5e20}.onboarding-body strong{color:#1b5e20;font-weight:700}.onboarding-dots{display:flex;justify-content:center;gap:6px;margin:14px 0}.onboarding-dot{width:6px;height:6px;border-radius:50%;background:#4b6e4b4d}.onboarding-dot.active{background:#2e7d32}.onboarding-close{min-height:44px;width:100%;padding:12px;background:linear-gradient(160deg,#66bb6a,#43a047);color:#fff;border:none;border-radius:8px;font-weight:700;font-size:13px;letter-spacing:.5px;cursor:pointer;-webkit-user-select:none;user-select:none}.onboarding-close:active{opacity:.85;transform:scale(.98)}.info-button{position:fixed;top:12px;right:12px;width:44px;height:44px;padding:0;background:#ffffffe6;color:#2e7d32;border:2px solid #66bb6a;border-radius:50%;font-weight:700;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;transition:all .2s;z-index:9998}.info-button:active{transform:scale(.95);background:#66bb6a;color:#fff}
