/* Birthday world: layered pixel-art room and garden SVGs with small moving actors and details. */
.scene-exit{animation:sceneOut .55s steps(5,end) forwards}
.birthday-world{position:absolute;inset:0;z-index:7;overflow:hidden;background:#081638;color:#fff5c9;font-family:'Pixelify Sans',sans-serif}
.birthday-world:is([data-time-of-day="morning"],[data-time-of-day="afternoon"]){background:#55bce8}
.birthday-world[hidden],.world-overlay[hidden]{display:none!important}
.mobile-garden-peek,.mobile-cosmos{display:none}
.scene:has(.birthday-world:not([hidden])) .pixel-stars i,.scene:has(.birthday-world:not([hidden])) .cat-pop span{animation-play-state:paused}
.world-art{position:absolute;z-index:2;left:50%;top:49%;width:min(100vw,150vh);aspect-ratio:3/2;max-height:100vh;transform:translate(-50%,-50%)}
@media (pointer: coarse), (max-width: 650px) and (any-pointer: coarse){.birthday-world[data-house-state="outside"] .world-art.outside-state{transform:translate(calc(-50% + var(--mobile-camera-pan-x,0px)),calc(-50% + var(--mobile-camera-pan-y,0px))) scale(var(--mobile-camera-zoom,1));transform-origin:center center}}
.world-art.outside-state,.world-art.interior-state{transition:opacity .42s steps(5,end)}
.world-art.interior-state{background:#594255}
.birthday-world[data-house-state="outside"] .interior-state,.birthday-world[data-house-state="inside"] .outside-state{display:none;visibility:hidden;opacity:0;pointer-events:none}
.birthday-world.house-transitioning .outside-state,.birthday-world.house-transitioning .interior-state{display:block;visibility:visible;pointer-events:none}
.birthday-world.house-entering .outside-state{opacity:0}
.birthday-world.house-entering .interior-state{opacity:1}
.birthday-world.house-leaving .outside-state{opacity:1}
.birthday-world.house-leaving .interior-state{opacity:0}
.world-illustration{display:block;width:100%;height:100%;object-fit:fill;image-rendering:pixelated;user-select:none;pointer-events:none;-webkit-user-drag:none}
.outdoor-illustration,.exterior-house-illustration{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:fill;image-rendering:pixelated;pointer-events:none;user-select:none;-webkit-user-drag:none}
.outdoor-illustration{z-index:2}
.exterior-house-illustration{z-index:3}
.environment-fliers{position:absolute;z-index:2;inset:0;display:block;width:100%;height:100%;overflow:hidden;pointer-events:none}
.outside-state .environment-fliers{z-index:4}
.outside-state .pixel-moon{opacity:0;filter:drop-shadow(0 0 2px #fff2c988) drop-shadow(0 0 4px #d9e8ff66);transition:opacity 2.4s linear,filter 2.4s linear}
.birthday-world:is([data-time-of-day="evening"],[data-time-of-day="night"]) .outside-state .pixel-sun{display:none}
.birthday-world[data-time-of-day="evening"] .outside-state .pixel-moon{opacity:.64}
.birthday-world[data-time-of-day="night"] .outside-state .pixel-moon{opacity:.96}
.birthday-world:is([data-time-of-day="evening"],[data-time-of-day="night"])[data-weather="cloudy"] .outside-state .pixel-moon{opacity:.52}
.birthday-world[data-weather="after-rain"] .outside-state .pixel-moon{filter:drop-shadow(0 0 2px #fff2c988) drop-shadow(0 0 4px #d9e8ff66)}
.night-stars{opacity:0;transition:opacity 2s linear;pointer-events:none}
.night-stars{filter:drop-shadow(0 0 1px #fff4c788)}
.birthday-world:is([data-time-of-day="evening"],[data-time-of-day="night"]) .outside-state .night-stars{opacity:.8}
.birthday-world[data-time-of-day="evening"] .outside-state .night-stars{opacity:.56}
.birthday-world:is([data-time-of-day="evening"],[data-time-of-day="night"])[data-weather="cloudy"] .outside-state .night-stars{opacity:.38}
.libra-constellation{opacity:.88;transition:opacity 2.4s linear}
.libra-lines{fill:none;stroke:#e8eccf;stroke-width:1.5;stroke-linecap:square;opacity:.25}
.libra-star{transform-box:fill-box;transform-origin:center;animation:libra-twinkle 5.2s steps(2,end) infinite alternate;filter:drop-shadow(0 0 1px #fff4bd)}
.libra-alpha,.libra-beta,.libra-gamma,.libra-sigma{fill:#fff5ca;filter:drop-shadow(0 0 1px #fff4bd) drop-shadow(0 0 2px #fff0b744)}
.libra-alpha{animation-delay:-.6s;animation-duration:5.8s}.libra-beta{animation-delay:-2.1s;animation-duration:6.2s}.libra-gamma{animation-delay:-3.4s;animation-duration:5.5s}.libra-sigma{animation-delay:-1.2s;animation-duration:6.6s}
.libra-extension-star{fill:#d6dddc;opacity:.68;animation:libra-extension-twinkle 7s steps(2,end) -2s infinite alternate;filter:drop-shadow(0 0 1px #e9eddd66)}
@keyframes libra-extension-twinkle{from{opacity:.48}to{opacity:.82}}
@keyframes libra-twinkle{from{opacity:.82;transform:scale(.92)}to{opacity:1;transform:scale(1.12)}}
.night-star{transform-box:fill-box;transform-origin:center;animation:star-twinkle 4.8s steps(3,end) infinite alternate}
.star-two{animation-delay:-2.2s;animation-duration:6s}.star-three{animation-delay:-1.1s;animation-duration:5.5s}.star-four{animation-delay:-3.6s;animation-duration:7s}.star-five{animation-delay:-.8s;animation-duration:5s}.star-six{animation-delay:-4.1s;animation-duration:6.5s}.star-seven{animation-delay:-2.8s;animation-duration:5.8s}.star-eight{animation-delay:-1.7s;animation-duration:7.2s}
@keyframes star-twinkle{from{opacity:.52;transform:scale(.82)}to{opacity:1;transform:scale(1.18)}}
.weather-clouds{opacity:0;transition:opacity 16s linear}
.weather-cloud-bank{transform-box:fill-box;transform-origin:center;}
.cloud-bank-one{animation:weather-cloud-drift-left 118s linear infinite alternate}
.cloud-bank-two{animation:weather-cloud-drift-right 146s linear infinite alternate}
.birthday-world[data-weather="cloudy"] .weather-clouds,.birthday-world[data-weather="rain"] .weather-clouds{opacity:.96}
.birthday-world[data-weather="after-rain"] .weather-clouds{opacity:.44}
.birthday-world[data-weather="rain"] .weather-cloud-bank{fill:#71838a;stroke:#4c5e68}
.birthday-world[data-weather="rain"] .weather-cloud-bank [fill="#c1cfbd"],.birthday-world[data-weather="rain"] .weather-cloud-bank [fill="#c8d0bd"]{fill:#99a9a2}
.birthday-world[data-weather="cloudy"] .outside-state .pixel-sun{opacity:.12}
.birthday-world[data-weather="rain"] .outside-state .pixel-sun{opacity:0}
.birthday-world[data-weather="after-rain"] .outside-state .pixel-sun{opacity:.68}
.birthday-world[data-time-of-day="morning"] .outside-state .pixel-sun{opacity:1}
.outside-state .pixel-sun{transition:opacity 16s linear}
.pixel-rain{opacity:0;transition:opacity 5s linear}
.birthday-world[data-weather="rain"] .pixel-rain{opacity:.46}
.birthday-world[data-weather="rain"] .outside-state .bird,
.birthday-world[data-weather="rain"] .outside-state .butterfly{display:none!important}
.rain-streak{animation:pixel-rainfall 2.8s linear infinite}
.rain-two{animation-delay:-.9s}
.rain-three{animation-delay:-1.8s}
.after-rain-rainbow{opacity:0;transition:opacity 18s linear}
.birthday-world[data-weather="after-rain"] .after-rain-rainbow{opacity:.44}
.birthday-world[data-weather="night"] .after-rain-rainbow{opacity:0}
.weather-damp{opacity:0;transition:opacity 8s linear}
.birthday-world[data-weather="rain"] .weather-damp{opacity:.26}
.birthday-world[data-weather="after-rain"] .weather-damp{opacity:.16}
@keyframes weather-cloud-drift-left{to{transform:translateX(-16px)}}
@keyframes weather-cloud-drift-right{to{transform:translateX(100px)}}
@keyframes pixel-rainfall{0%,6%{opacity:0;transform:translateY(-110px)}14%{opacity:.64}82%{opacity:.64;transform:translateY(390px)}96%,100%{opacity:0;transform:translateY(520px)}}
.enter-house-hotspot{position:absolute;z-index:5;left:29.5%;top:43%;width:41%;height:50%;padding:0;border:0;background:transparent;clip-path:polygon(50% 0,100% 31%,100% 70%,50% 100%,0 70%,0 31%);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:#ffe39155}
.garden-telescope{position:absolute;z-index:11;left:73.5%;top:48%;width:8%;height:18%;min-width:52px;min-height:76px;margin:0;padding:0;border:0;background:transparent;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:#ffe39155;filter:drop-shadow(2px 3px 0 #17274488)}
.garden-telescope.is-inactive{filter:grayscale(.48) brightness(.78) drop-shadow(2px 3px 0 #17274488)}
.garden-telescope.is-inactive:hover svg,.garden-telescope.is-inactive:focus-visible svg{transform:none}
.garden-telescope svg{display:block;width:100%;height:calc(100% - 12px);overflow:visible;image-rendering:pixelated;transition:transform .16s steps(3,end)}
.garden-telescope:hover svg,.garden-telescope:focus-visible svg{transform:translateY(-3px)}
.garden-telescope:focus-visible{outline:2px dashed #fff0bd;outline-offset:2px}
.garden-telescope span{position:absolute;left:50%;bottom:0;transform:translateX(-50%);padding:3px 4px;border:1px solid #fff0bd;background:#304b67;color:#fff0bd;font:7px/1.2 'Press Start 2P',monospace;white-space:nowrap;box-shadow:2px 2px #172744}
.enter-house-hotspot:hover,.enter-house-hotspot:focus-visible{outline:4px dashed #fff0a5;outline-offset:-8px;background:#fff2a510}
.house-enter-prompt{position:absolute;z-index:6;left:55%;top:91%;transform:translateX(-50%);padding:4px 5px;border:2px solid #fff0bd;background:#59384f;color:#fff0bd;font:700 clamp(5px,.54vw,7px)/1.2 'Press Start 2P',monospace;white-space:nowrap;box-shadow:2px 2px #1d2945;pointer-events:none}
.leave-house{position:absolute;z-index:10;top:max(12px,env(safe-area-inset-top));left:max(12px,env(safe-area-inset-left));display:none;min-height:44px;padding:9px 12px;border:3px solid #fff0bd;background:#75445a;color:#fff0bd;font:700 clamp(8px,1vw,11px)/1.2 'Press Start 2P',monospace;box-shadow:3px 3px #172744;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:#ffe39155}
.ambient-toggle{position:absolute;z-index:11;top:max(12px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));min-width:44px;min-height:44px;max-width:min(46vw,210px);padding:8px 10px;border:2px solid #fff0bd;background:#304b67dd;color:#fff0bd;box-shadow:2px 2px #172744;font:700 clamp(7px,1vw,10px)/1.35 'Press Start 2P',monospace;text-align:center;cursor:pointer;pointer-events:auto;touch-action:manipulation;-webkit-tap-highlight-color:#ffe39155}
.ambient-toggle:focus-visible{outline:2px dashed #fff0a5;outline-offset:3px}
.ambient-toggle:disabled{opacity:.72;cursor:default}
.philippine-clock{position:absolute;z-index:11;top:max(12px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);display:grid;grid-template-columns:auto auto;justify-content:center;align-items:center;column-gap:3px;padding:6px 8px;border:2px solid #fff0bd;background:#304b67dd;color:#fff0bd;box-shadow:2px 2px #172744;font:700 clamp(7px,.85vw,9px)/1.35 'Press Start 2P',monospace;white-space:nowrap;pointer-events:none;text-shadow:1px 1px #172744}
.philippine-date{grid-column:1/-1;font-size:.78em;line-height:1.25;text-align:center}
.philippine-date-charm{grid-column:1/-1;color:#f4b9a9;font-size:.72em;line-height:1;text-align:center;letter-spacing:1px}
.philippine-date-charm[hidden]{display:none}
.philippine-clock-time{grid-column:1/-1;text-align:center}
.birthday-world[data-house-state="inside"] .leave-house{display:block}
.birthday-world[data-house-state="inside"] .mobile-garden-peek{display:none}
.environment-fliers .bird,.environment-fliers .butterfly,.environment-fliers .firefly{display:none;opacity:0}
.birthday-world[data-time-of-day="morning"] .bird-one,.birthday-world[data-time-of-day="morning"] .bird-two,.birthday-world[data-time-of-day="afternoon"] .bird-one,.birthday-world[data-time-of-day="afternoon"] .bird-two,.birthday-world[data-time-of-day="afternoon"] .bird-three,.birthday-world[data-time-of-day="evening"] .bird-one{display:block;animation:bird-flight 64s steps(20,end) infinite}
.birthday-world[data-time-of-day="evening"] .bird-one{animation-duration:112s}
.birthday-world[data-time-of-day="morning"] .bird-two,.birthday-world[data-time-of-day="afternoon"] .bird-two{animation-delay:-31s;animation-duration:78s}
.birthday-world[data-time-of-day="afternoon"] .bird-three{animation-delay:-57s;animation-duration:96s}
.birthday-world[data-time-of-day="afternoon"] .butterfly{display:block;animation:butterfly-drift 58s steps(14,end) infinite}
.birthday-world[data-time-of-day="afternoon"] .butterfly-two{animation-delay:-28s;animation-duration:72s}
.birthday-world[data-time-of-day="night"] .firefly{display:block;animation:firefly-glow 24s steps(6,end) infinite}
.birthday-world[data-time-of-day="evening"] .firefly{display:block;animation:firefly-glow 24s steps(6,end) infinite}
.birthday-world[data-time-of-day="night"] .firefly-two{animation-delay:-13s;animation-duration:31s}
@keyframes bird-flight{0%,72%,100%{opacity:0;transform:translateX(-70px)}75%{opacity:.82}94%{opacity:.82;transform:translateX(1110px)}97%{opacity:0;transform:translateX(1240px)}}
@keyframes butterfly-drift{0%,82%,100%{opacity:0;transform:translate(0,0)}84%{opacity:.9}95%{opacity:.9;transform:translate(18px,-10px)}98%{opacity:0;transform:translate(21px,-12px)}}
@keyframes firefly-glow{0%,18%,100%{opacity:0}22%{opacity:.9}29%{opacity:.45}35%{opacity:0}}
.world-sprites{position:absolute;z-index:3;inset:0;overflow:hidden;pointer-events:none}
.world-hotspot{position:absolute;z-index:5;display:block;margin:0;padding:0;border:0;border-radius:0;background:transparent;color:transparent;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:#ffe39155}
.world-hotspot:hover,.world-hotspot:focus-visible{outline:3px dashed #fff0a5;outline-offset:2px;background:#fff2a51a}
.hotspot-cake{left:50%;top:56.5%;width:8%;height:8%;clip-path:polygon(0 36%,52% 0,100% 40%,100% 76%,50% 100%,0 67%)}
/* Separate hit regions for the front-most present and the envelope avoid overlap on touch screens. */
.hotspot-gift{left:39%;top:56%;width:8%;height:10%;clip-path:polygon(0 35%,55% 0,100% 35%,100% 75%,45% 100%,0 70%)}
.hotspot-envelope{left:36.3%;top:63.5%;width:6%;height:6.5%;clip-path:polygon(0 35%,50% 0,100% 38%,50% 100%)}
.world-props{position:absolute;z-index:4;inset:0;pointer-events:none;overflow:visible}
.physical-prop{position:absolute;display:block;width:5.35%;aspect-ratio:1;background-image:url("assets/decor/interactive-props.svg");background-size:400% 200%;background-repeat:no-repeat;image-rendering:pixelated;transform-origin:50% 85%}
.prop-gift{left:39.9%;top:57.3%;width:5.4%;background-position:66.667% 0}
.prop-gift .gift-label{position:absolute;left:-92%;right:-92%;top:-1.8em;display:flex;align-items:center;justify-content:center;gap:2px;padding:2px 3px;border:1px solid #8c4a4c;background:#f5d58d;color:#643447;font:700 clamp(4px,.62vw,8px)/1.15 'Press Start 2P',monospace;text-align:center;white-space:nowrap;box-shadow:2px 2px #352747}
.prop-gift .gift-label:after{content:"";position:absolute;left:50%;top:100%;width:2px;height:.75em;background:#f5d58d;box-shadow:1px 0 #8c4a4c}
.gift-glyph{display:inline-block;width:1.4em;height:1.4em;flex:none;image-rendering:pixelated}
.prop-gift i{position:absolute;inset:48% 29% 18%;display:block;opacity:0;background:#fff4b8;clip-path:polygon(0 100%,0 45%,18% 45%,18% 20%,36% 20%,36% 0,58% 0,58% 28%,78% 28%,78% 50%,100% 50%,100% 100%);box-shadow:0 0 8px #fff0a6}
.prop-envelope{left:37.2%;top:64%;width:5.5%;background-position:100% 0}
.prop-envelope b{position:absolute;left:-10%;right:-10%;top:-1.25em;color:#fff0bd;font:700 clamp(6px,.68vw,10px)/1.1 'Press Start 2P',monospace;text-align:center;text-shadow:1px 1px #33284b;white-space:nowrap}
.world-actor{position:absolute;width:5.333%;height:10%;transform-origin:50% 85%}
.world-actor:after{content:"";position:absolute;left:28%;bottom:6%;width:44%;height:7.5%;transform:translateX(0);background:#17233b99;image-rendering:pixelated}
.garden-cats{position:absolute;z-index:9;inset:0;pointer-events:none}
.garden-band{position:absolute;z-index:10;left:.5%;top:74%;width:22.8%;height:23%;min-height:44px;margin:0;padding:0;border:0;background:transparent;cursor:pointer;touch-action:none;-webkit-tap-highlight-color:transparent;filter:drop-shadow(1px 2px 0 #252d4555)}
.garden-band:focus-visible{outline:2px dashed #fff0bd;outline-offset:2px}
.garden-band-art{display:block;width:100%;height:100%;overflow:visible;image-rendering:pixelated;transition:transform .18s steps(3,end)}
.garden-band:active .garden-band-art{transform:translateY(2px)}
.band-person{transform-box:fill-box;transform-origin:50% 100%;animation:band-idle 5.2s steps(3,end) infinite alternate}
.band-person>path{stroke:#292638;stroke-width:1.5;stroke-linejoin:miter}
.person-paul{animation-delay:-1.7s}.person-george{animation-delay:-3.2s}.person-ringo{animation-delay:-.8s}
.band-guitar{transform-box:fill-box;transform-origin:15% 80%}
.band-percussion{transform-box:fill-box;transform-origin:10% 65%}
.band-notes,.band-music-notes{opacity:0;pointer-events:none}
.band-music-notes{position:absolute;left:24%;top:2%;color:#fff0b5;font:700 clamp(11px,2vw,20px)/1 'Press Start 2P',monospace;text-shadow:2px 2px #714c62;white-space:nowrap}
.garden-band.is-playing .band-person{animation:band-bob .48s steps(2,end) infinite alternate}
.garden-band.is-playing .person-paul{animation-delay:-.16s}.garden-band.is-playing .person-george{animation-delay:-.32s}.garden-band.is-playing .person-ringo{animation-delay:-.08s}
.garden-band.is-playing .band-guitar{animation:band-strum .25s steps(2,end) infinite alternate}
.garden-band.is-playing .band-percussion{animation:band-tap .34s steps(2,end) infinite alternate}
.garden-band.is-playing .band-notes{opacity:.85;animation:band-note-glow 1.1s steps(3,end) infinite alternate}
.garden-band.is-playing .band-music-notes{animation:band-notes-float 1.7s steps(4,end) infinite}
@keyframes band-idle{from{transform:translateY(0)}to{transform:translateY(-1px)}}
@keyframes band-bob{from{transform:translateY(0)}to{transform:translateY(-3px)}}
@keyframes band-strum{from{transform:rotate(-4deg)}to{transform:rotate(5deg)}}
@keyframes band-tap{from{transform:rotate(-8deg)}to{transform:rotate(10deg)}}
@keyframes band-note-glow{from{opacity:.38}to{opacity:.92}}
@keyframes band-notes-float{0%{opacity:0;transform:translateY(6px)}25%{opacity:.92}85%{opacity:.82;transform:translateY(-10px)}100%{opacity:0;transform:translateY(-14px)}}
.garden-cat{--cat-outline:#343349;--cat-fur:#c9ad87;--cat-head:#dfc9a8;--cat-paw:var(--cat-fur);--cat-muzzle:#f2e5ca;position:absolute;display:block;appearance:none;width:8%;aspect-ratio:3/2;min-height:44px;margin:0;padding:0;border:0;overflow:visible;background:transparent;cursor:pointer;pointer-events:auto;touch-action:manipulation;-webkit-tap-highlight-color:#ffe39155;filter:drop-shadow(1px 2px 0 #252d4555)}
.garden-cat:focus-visible{outline:2px dashed #fff0bd;outline-offset:2px}
.garden-cat.is-noticed{z-index:12}
.cat-art{display:block;width:100%;height:100%;overflow:visible;image-rendering:pixelated}
.cat-shadow{fill:#172b3b55}.cat-outline{fill:var(--cat-outline)}
.cat-coat{fill:var(--cat-fur)}.cat-legs{fill:var(--cat-paw);stroke:var(--cat-outline);stroke-width:1.4;stroke-linejoin:miter}.cat-face{fill:var(--cat-head)}
.tail-outline{fill:var(--cat-outline)}.tail-color,.cat-color{fill:var(--cat-fur)}
.cat-ear-inner{fill:#d8858a;transform-box:fill-box;transform-origin:center;animation:cat-ear-twitch var(--cat-ear-duration,11s) steps(2,end) var(--cat-ear-delay,0s) infinite}
.cat-eye-open{fill:#302b45;animation:cat-blink-open var(--cat-blink-duration,6s) steps(1,end) var(--cat-blink-delay,0s) infinite}.cat-eye-closed{display:block;fill:#302b45;opacity:0;animation:cat-blink-closed var(--cat-blink-duration,6s) steps(1,end) var(--cat-blink-delay,0s) infinite}
.cat-muzzle{fill:var(--cat-muzzle)}.cat-nose{fill:#d96872}.cat-whiskers{fill:#574c58}
.gigi-tabby{fill:#887b82}.doding-tabby{fill:#a98869}.lucky-stripes{fill:#b85f37}
.chaech-patch{fill:#c96d3d}.chaech-chest{fill:#efa05a}
.candy-chest{fill:#f3ead6}.candy-head-orange{fill:#dc8246}.candy-head-black,.candy-tail-markings{fill:#292b40}
.bopbop-chest,.bopbop-socks,.bopbop-blaze{fill:#f3ead6}.bopbop-mask{fill:#282b40}
.cat-gigi{left:23.5%;top:73%;width:8.7%;--cat-fur:#a99da1;--cat-head:#c8b7ad;--cat-paw:#9c9095;--cat-muzzle:#eadfd1}
.cat-doding{left:32%;top:82%;width:8.4%;--cat-fur:#c9ad87;--cat-head:#dfc9a8;--cat-paw:#b99c79;--cat-muzzle:#f1e1c6}
.cat-lucky{left:73%;top:74%;width:7.5%;--cat-fur:#db8347;--cat-head:#eca15a;--cat-paw:#c86b39;--cat-muzzle:#f5dbb7}
.cat-chaech{left:82%;top:63%;width:7.1%;--cat-fur:#db8246;--cat-head:#eba05a;--cat-paw:#cb6d3c;--cat-muzzle:#f2c084}
.cat-bopbop{left:68.5%;top:87%;width:7.8%;--cat-fur:#292c40;--cat-head:#343349;--cat-paw:#292c40;--cat-muzzle:#f3ead6}
.cat-candy{left:24%;top:60%;width:7.7%;--cat-fur:#f1ead9;--cat-head:#f1ead9;--cat-paw:#f1ead9;--cat-muzzle:#fff0d5}
.cat-gigi .cat-body{--cat-width:1.04;--cat-height:1.06}.cat-doding .cat-body{--cat-width:1.07;--cat-height:1.04}
.cat-gigi .gigi-tabby,.cat-doding .doding-tabby,.cat-lucky .lucky-stripes{opacity:.58}
.cat-chaech .cat-muzzle{fill:#f2c084}
.cat-bopbop .cat-face{fill:#303247}
.garden-cat .cat-body{transform-box:fill-box;transform-origin:50% 100%;animation:cat-breathe var(--cat-breath-duration,7s) steps(2,end) var(--cat-breath-delay,0s) infinite}
.garden-cat .cat-art{transform-box:fill-box;transform-origin:center;transition:transform .2s steps(3,end)}
.garden-cat.faces-left .cat-art{transform:scaleX(-1)}
.garden-cat.is-walking{transition:left var(--cat-walk-duration,2.4s) steps(18,end),top var(--cat-walk-duration,2.4s) steps(18,end)}
.garden-cat.is-walking .cat-body{animation:cat-walk-body .62s steps(2,end) infinite}
.garden-cat.is-walking .cat-tail{animation-duration:.82s}
.garden-cat.is-walking .paw-step-a,.garden-cat.is-walking .paw-step-b{transform-box:fill-box;transform-origin:50% 100%;animation-duration:.42s;animation-iteration-count:infinite;animation-timing-function:steps(2,end)}
.garden-cat.is-walking .paw-step-a{animation-name:cat-paw-step-a}
.garden-cat.is-walking .paw-step-b{animation-name:cat-paw-step-b}
.garden-cat:is(.is-investigating,.is-inspecting) .cat-head{animation:none;transform:translate(-1px,2px) rotate(1deg)}
.garden-cat.is-looking .cat-head{animation:cat-head-look 1.4s steps(4,end) 1}
.garden-cat.is-resting .cat-body{animation:none;transform:scale(var(--cat-width,1),calc(var(--cat-height,1) - .025))}
.garden-cat.is-resting .cat-head{animation:none;transform:translateY(2px) rotate(.5deg)}
.garden-cat.is-loafing .cat-body{animation:none;transform:scale(var(--cat-width,1),calc(var(--cat-height,1) - .03))}
.garden-cat.is-loafing .cat-head{animation:cat-head-look 4.5s steps(3,end) infinite alternate}
.garden-cat.is-grooming .cat-head{animation:cat-groom 1.5s steps(3,end) infinite alternate;transform-box:fill-box;transform-origin:50% 100%}
.garden-cat.is-grooming .paw-step-b:first-child{transform-box:fill-box;transform-origin:50% 100%;animation:cat-groom-paw 1.5s steps(3,end) infinite alternate}
.garden-cat:is(.is-sniffing,.is-sniffing-grass,.is-sniffing-flowers) .cat-head{animation:none;transform:translate(-2px,3px) rotate(1.2deg)}
.garden-cat:is(.is-sitting,.is-watching,.is-watching-butterflies,.is-watching-fireflies) .cat-head{animation:cat-head-look 2.4s steps(4,end) infinite alternate}
.garden-cat.is-looking-at-sky .cat-head{animation:cat-sky-look 3.8s steps(4,end) infinite alternate;transform:translateY(-2px)}
.garden-cat.is-sleeping .cat-body{animation:none;transform:scale(var(--cat-width,1),calc(var(--cat-height,1) - .035))}
.garden-cat.is-sleeping .cat-head{animation:none;transform:translate(-1px,3px) rotate(1deg)}
.garden-cat.is-sleeping .cat-eye-open{opacity:0;animation:none}.garden-cat.is-sleeping .cat-eye-closed{opacity:1;animation:none}
.garden-cat.is-pawing .paw-step-a,.garden-cat.is-pawing .paw-step-b{transform-box:fill-box;transform-origin:50% 100%;animation:cat-paw-at-leaf .8s steps(3,end) infinite alternate}
.garden-cat.is-stretching .cat-legs{transform:translateY(2px)}
.garden-cat.is-stretching .cat-body{animation:cat-stretch 1.25s steps(3,end) both}
.garden-cat.is-nibbling .cat-head{animation:cat-nibble 1.1s steps(3,end) infinite alternate;transform-box:fill-box;transform-origin:50% 100%}
.garden-cat.is-pouncing .cat-body{animation:cat-pounce .62s steps(3,end) both}
@keyframes cat-groom{0%,30%{transform:translate(-2px,3px) rotate(1deg)}65%,100%{transform:translate(1px,1px) rotate(-.6deg)}}
@keyframes cat-groom-paw{from{transform:translate(0,0)}to{transform:translate(-2px,-2px)}}
@keyframes cat-paw-at-leaf{from{transform:translateY(0)}to{transform:translate(-2px,-2px)}}
@keyframes cat-stretch{0%,100%{transform:scale(var(--cat-width,1),var(--cat-height,1))}50%{transform:scale(calc(var(--cat-width,1) + .025),calc(var(--cat-height,1) - .035))}}
@keyframes cat-nibble{from{transform:translate(-1px,2px) rotate(.7deg)}to{transform:translate(1px,3px) rotate(-.5deg)}}
@keyframes cat-pounce{0%,100%{transform:scale(var(--cat-width,1),var(--cat-height,1))}36%{transform:translateY(-2px) scale(calc(var(--cat-width,1) + .025),calc(var(--cat-height,1) - .035))}70%{transform:translateY(1px) scale(calc(var(--cat-width,1) + .02),calc(var(--cat-height,1) + .015))}}
.garden-cat .cat-tail{transform-box:fill-box;transform-origin:85% 90%;animation:cat-tail-idle 9s steps(4,end) infinite}
.cat-gigi .cat-tail{animation-duration:12s}.cat-lucky .cat-tail{animation-duration:7s;animation-delay:-2s}
.cat-chaech .cat-tail{animation-duration:10s;animation-delay:-6s}.cat-bopbop .cat-tail{animation-duration:13s;animation-delay:-3s}.cat-candy .cat-tail{animation-duration:8s;animation-delay:-4s}
.garden-cat .cat-head{transform-box:fill-box;transform-origin:50% 100%;animation:cat-head-look var(--cat-head-duration,14s) steps(3,end) var(--cat-head-delay,0s) infinite}
.cat-bopbop .cat-head{animation-duration:17s}.cat-candy .cat-head{animation-delay:-4s}
.garden-cat.is-noticed .cat-eye-open{opacity:0;animation:none}.garden-cat.is-noticed .cat-eye-closed{opacity:1;animation:none}
.garden-cat.is-noticed .cat-tail{animation:cat-tail-affection .42s steps(3,end) 3 alternate}
.garden-cat.is-noticed .cat-head{animation:none;transform:translateX(1px) rotate(.4deg);transform-box:fill-box;transform-origin:50% 100%}
.garden-cat.is-noticed .cat-legs{transform:translateY(1px)}
.cat-hearts{position:absolute;left:48%;top:4%;opacity:0;color:#ed7782;font:10px/1 'Press Start 2P',monospace;text-shadow:4px 0 #ed7782,-4px 2px #f3bf78;pointer-events:none}
.cat-name-pop,.cat-reaction{position:absolute;left:50%;z-index:5;display:block;width:max-content;max-width:110px;padding:4px 5px;border:1px solid #fff0bd;background:#59384f;color:#fff0bd;font:clamp(8px,1vw,10px)/1.3 'Press Start 2P',monospace;text-shadow:none;white-space:nowrap;opacity:0;pointer-events:none;transform:translate(-50%,3px);transition:opacity .28s steps(3,end),transform .28s steps(3,end)}
.cat-name-pop{bottom:calc(100% + 3px)}.cat-reaction{bottom:calc(100% + 20px);color:#f5d994}
.garden-cat.is-noticed .cat-hearts{animation:cat-heart-float 1.35s steps(5,end) both}
.garden-cat.is-noticed .cat-name-pop,.garden-cat.is-noticed .cat-reaction{opacity:1;transform:translate(-50%,-2px)}
.cat-gigi{--cat-breath-duration:6s;--cat-breath-delay:-3.4s;--cat-head-duration:13s;--cat-head-delay:-8s}
.cat-doding{--cat-breath-duration:6.5s;--cat-breath-delay:-2s;--cat-head-duration:12s;--cat-head-delay:-2s}
.cat-lucky{--cat-breath-duration:4.8s;--cat-breath-delay:-1.5s;--cat-head-duration:9s;--cat-head-delay:-5s}
.cat-chaech{--cat-breath-duration:10s;--cat-breath-delay:-6s;--cat-head-duration:19s;--cat-head-delay:-12s}
.cat-bopbop{--cat-breath-duration:14s;--cat-breath-delay:-10s;--cat-head-duration:24s;--cat-head-delay:-4s}
.cat-candy{--cat-breath-duration:5.2s;--cat-breath-delay:-4.5s;--cat-head-duration:10s;--cat-head-delay:-3s}
.garden-cat .cat-eye-open{animation-duration:var(--cat-blink-duration,8s);animation-delay:var(--cat-blink-delay,0s)}
.garden-cat .cat-ear-inner{animation-duration:var(--cat-ear-duration,13s);animation-delay:var(--cat-ear-delay,0s)}
.cat-gigi{--cat-breath-duration:6s;--cat-breath-delay:-3.4s;--cat-head-duration:13s;--cat-head-delay:-8s;--cat-blink-duration:6s;--cat-blink-delay:-4s;--cat-ear-duration:10s;--cat-ear-delay:-4s}
.cat-doding{--cat-blink-duration:5.5s;--cat-blink-delay:-2s;--cat-ear-duration:9s;--cat-ear-delay:-6s}
.cat-lucky{--cat-blink-duration:6.5s;--cat-blink-delay:-5s;--cat-ear-duration:11s;--cat-ear-delay:-5s}
.cat-chaech{--cat-breath-duration:5.4s;--cat-breath-delay:-2s;--cat-head-duration:12s;--cat-head-delay:-7s;--cat-blink-duration:7s;--cat-blink-delay:-3s;--cat-ear-duration:9.5s;--cat-ear-delay:-5s}
.cat-bopbop{--cat-blink-duration:8s;--cat-blink-delay:-6s;--cat-ear-duration:13s;--cat-ear-delay:-2s}
.cat-candy{--cat-blink-duration:6s;--cat-blink-delay:-3s;--cat-ear-duration:10s;--cat-ear-delay:-7s}
.birthday-world[data-time-of-day="night"] .garden-cat .cat-body{animation-duration:10s}
.birthday-world[data-time-of-day="night"] .garden-cat .cat-tail{animation-duration:16s}
.birthday-world[data-time-of-day="night"] .garden-cat .cat-head{animation-duration:22s}
.birthday-world[data-time-of-day="night"] .garden-cat .cat-eye-open,.birthday-world[data-time-of-day="night"] .garden-cat .cat-eye-closed{animation-duration:12s}
.birthday-world:is([data-time-of-day="evening"],[data-time-of-day="night"]) .garden-cat:is(.is-watching,.is-watching-fireflies) .cat-head{transform:translateY(-2px);animation:cat-sky-look 3.8s steps(4,end) infinite alternate}
@keyframes cat-sky-look{from{transform:translateY(-1px) rotate(-.2deg)}to{transform:translateY(-3px) rotate(.4deg)}}
.birthday-world[data-time-of-day="night"] .garden-cat .cat-ear-inner{animation-duration:18s}
.world-paused .garden-cat,.world-paused .garden-cat *{animation-play-state:paused!important}
.world-paused .garden-band,.world-paused .garden-band *{animation-play-state:paused!important}
.pixel-sprite{position:absolute;z-index:1;inset:0;display:block;width:100%;height:100%;background-image:url("assets/decor/birthday-sprites.svg");background-size:600% 200%;background-repeat:no-repeat;image-rendering:pixelated}
.pixel-sprite:after{content:"";position:absolute;inset:0;background-image:linear-gradient(#302b45 0 0),linear-gradient(#302b45 0 0);background-size:8% 2.5%;background-position:44% 29%,63% 29%;background-repeat:no-repeat;opacity:0;animation:blink 7s steps(1,end) infinite}
.visitor-one{left:47%;top:61%;animation:visitor-roam-one 15s steps(7,end) infinite}
.visitor-two{left:53%;top:66%;animation:visitor-roam-two 18s steps(8,end) -5s infinite}
.visitor-one .pixel-sprite{background-image:url("assets/decor/visitor-bride.svg");animation:visitor-life 7s steps(1,end) infinite;translate:0 0;animation-delay:0s}
.visitor-two .pixel-sprite{background-image:url("assets/decor/birthday-visitor.svg");background-size:300% 100%;animation:visitor-guest-life 7.8s steps(1,end) -2.1s infinite}
.room-mote{position:absolute;width:3px;height:3px;background:#ffe9a1;box-shadow:4px 0 #f5b96b,0 4px #fff1bb;opacity:0;image-rendering:pixelated;animation:mote-rise 13s steps(8,end) infinite}
.mote-one{left:29%;top:50%;animation-delay:-2s}.mote-two{left:71%;top:61%;animation-delay:-8s}
.cake-visual{position:absolute;z-index:1;left:51.25%;top:56.8%;width:6.95%;height:8.2%;overflow:visible;image-rendering:pixelated;transform-origin:50% 90%}
.cake-visual.is-bouncing{animation:cake-bounce .56s steps(5,end)}
.cake-flame{transform-box:fill-box;transform-origin:50% 100%;animation:flame-dance .52s steps(2,end) infinite alternate}
.cake-flame.is-flickering{animation:cake-flare .12s steps(2,end) infinite alternate}
.cake-flame.is-out{animation:none;opacity:0}
.world-whisper{position:absolute;z-index:8;bottom:2vh;left:50%;max-width:90vw;margin:0;transform:translateX(-50%);color:#fff0bd;text-align:center;font-size:clamp(1rem,2.7vw,1.35rem);font-weight:700;text-shadow:2px 2px #112756,0 0 5px #091632;pointer-events:none}
.world-whisper.telescope-notice{z-index:12;padding:7px 9px;border:2px solid #fff0bd;background:#304b67ed;color:#fff0bd;font:700 clamp(6px,1vw,9px)/1.7 'Press Start 2P',monospace;box-shadow:3px 3px #172744;}
.time-of-day-sky-wash,.weather-sky-wash{pointer-events:none;transition:opacity 1.2s linear,fill 1.2s linear}
.time-of-day-sky-wash{fill:#06102d;opacity:0}
.birthday-world[data-time-of-day="morning"] .time-of-day-sky-wash{fill:#8fe6f4;opacity:.08}
.birthday-world[data-time-of-day="afternoon"] .time-of-day-sky-wash{fill:#f1dfaa;opacity:.08}
.birthday-world[data-time-of-day="evening"] .time-of-day-sky-wash{fill:#bb705f;opacity:.13}
.birthday-world[data-time-of-day="night"] .time-of-day-sky-wash{fill:#06102d;opacity:.32}
.weather-sky-wash{fill:#41535e;opacity:0;transition:opacity 14s linear,fill 14s linear}
.birthday-world[data-weather="cloudy"] .weather-sky-wash{fill:#41535e;opacity:.16}
.birthday-world[data-weather="rain"] .weather-sky-wash{fill:#263446;opacity:.3}
.birthday-world[data-weather="after-rain"] .weather-sky-wash{fill:#e1daab;opacity:.08}
.world-overlay{position:absolute;z-index:20;inset:0;display:grid;place-items:center;padding:22px;background:#06143caa;opacity:0;transition:opacity .18s linear}.world-overlay.overlay-in{opacity:1}
.world-overlay.password-flow{place-items:end center;padding:0 0 2vh;background:transparent}.birthday-world:has(+ .world-overlay.password-flow) .world-whisper{opacity:0}.password-flow .overlay-close{display:none}
.world-overlay.memory-album-flow{place-items:center;padding:2vh 2vw;background:#071638c4}
.overlay-paper{position:relative;width:min(660px,88vw);min-height:min(390px,70vh);padding:clamp(30px,6vw,64px);overflow:auto;max-height:80vh;color:#5d3a5c;background-color:#fff0c6;background-image:radial-gradient(#d0837a30 .65px,transparent .8px);background-size:8px 8px;border:6px solid #fff8d7;box-shadow:7px 7px #1d325d}
.overlay-paper:has(.cat-scrapbook){width:min(520px,90vw);min-height:0;padding:clamp(12px,2.8vw,22px);overflow:auto;}
.overlay-paper.password-surface{display:grid;place-items:center;width:auto;min-width:0;min-height:0;max-width:94vw;max-height:94vh;padding:0;overflow:visible;background:transparent;border:0;box-shadow:none}
.overlay-paper.memory-album-surface{display:grid;place-items:center;width:auto;min-width:0;min-height:0;max-width:96vw;max-height:94vh;padding:0;overflow:visible;background:transparent;border:0;box-shadow:none}
.password-panel{position:relative;width:min(300px,78vw);padding:11px clamp(14px,4vw,22px) 10px;border:7px solid #6e3549;background:#e8ad61;color:#56364a;text-align:center;box-shadow:inset 0 0 0 4px #f7d994,inset 0 0 0 7px #a95150,7px 7px 0 #09152e,10px 10px 0 #09152e66}
.password-panel.secret-note-gate{width:min(340px,calc(100vw - 32px))}
.secret-note-gate .gate-form input,.secret-note-gate .gate-unlock{min-height:44px}
.secret-note-gate .gate-unlock{font-size:clamp(.42rem,1.8vw,.55rem)}
.secret-note-gate .gate-back{min-height:40px}
.password-panel:before,.password-panel:after{content:"";position:absolute;width:8px;height:8px;background:#ffe5a1;box-shadow:0 0 0 2px #82404d;pointer-events:none}.password-panel:before{left:8px;top:8px}.password-panel:after{right:8px;bottom:8px}
.password-panel.is-wrong{animation:gate-wrong .38s steps(4,end)}
.gate-lock{display:block;width:20px;height:20px;margin:0 auto 4px;image-rendering:pixelated}
.password-panel .small-kicker{margin:3px 0;font-size:.45rem}
.gate-title{margin:1px 0 5px;color:#73384d;font-family:'Press Start 2P',monospace;font-size:clamp(.56rem,1.8vw,.72rem);line-height:1.35;text-shadow:1px 1px #f6d997}
.gate-copy{max-width:30ch;margin:0 auto 7px;color:#6d4351;font-size:.86rem;line-height:1.18}
.gate-form{display:grid;gap:4px;text-align:left}.gate-form label{color:#74364a;font:700 .43rem 'Press Start 2P',monospace;letter-spacing:.02em}
.gate-form input{width:100%;min-height:31px;padding:4px 7px;border:3px solid #753749;border-radius:0;outline:0;background:#fff0c6;box-shadow:inset 3px 3px #d79660;color:#4b3450;font:700 .98rem 'Pixelify Sans',sans-serif;letter-spacing:.12em;touch-action:manipulation}
.gate-form input:focus{border-color:#315b67;box-shadow:inset 3px 3px #d79660,0 0 0 3px #ffe7a5}
.gate-feedback{min-height:.8em;margin:0;color:#913b4d;font-size:.82rem}
.gate-unlock,.gate-close{min-height:30px;padding:6px 8px;border:3px solid #fff0bd;border-radius:0;background:#41816e;color:#fff2ca;box-shadow:4px 4px #663246;font:700 .46rem 'Press Start 2P',monospace;cursor:pointer;touch-action:manipulation}
.gate-unlock:active,.gate-close:active{transform:translate(2px,2px);box-shadow:2px 2px #663246}
.gate-back{display:block;margin:5px auto 0;padding:3px;border:0;border-bottom:1px dashed #9b5b59;background:none;color:#754452;font:700 .82rem 'Pixelify Sans',sans-serif;cursor:pointer}
.password-reveal{position:relative;padding:3px 0 0}.password-reveal:after{content:"✦";position:absolute;top:-7px;right:18%;color:#fff0ad;text-shadow:2px 2px #c45f64;animation:secret-pop .36s steps(3,end)}
.overlay-close{position:absolute;top:5vh;right:5vw;border:3px solid #fff8d7;background:#d55e61;color:#fff8d7;padding:9px 12px;font-family:'Press Start 2P';font-size:.55rem;box-shadow:3px 3px #1b315d;cursor:pointer;touch-action:manipulation}
.world-overlay:has(.telescope-scene){z-index:30;padding:18px;background:#050b27e8}
.world-overlay:has(.telescope-scene) .overlay-paper{display:grid;place-items:center;width:min(620px,94vw);min-height:0;max-height:94vh;padding:10px;overflow:visible;border:0;background:transparent;box-shadow:none;color:#fff0bd}
.world-overlay:has(.telescope-scene) .overlay-close{top:max(12px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));z-index:2;border:2px solid #d6d8ef;background:#20264c;color:#fff0bd;padding:9px 10px;box-shadow:2px 2px #080d24}
.telescope-scene{display:flex;width:100%;align-items:center;flex-direction:column;gap:12px;text-align:center;font-family:'Press Start 2P',monospace}
.telescope-heading{margin:0;color:#fff0bd;font-size:clamp(.62rem,2vw,1rem);line-height:1.6;text-shadow:3px 3px #4d416b}
.telescope-lens{position:relative;isolation:isolate;display:grid;place-items:center;width:min(62vh,78vw,500px);aspect-ratio:1;overflow:hidden;border:clamp(7px,1.4vw,13px) solid #637d9c;border-radius:50%;background:#08132f;box-shadow:0 0 0 4px #202d50,0 0 0 8px #b6c9d1,0 0 0 12px #425573,0 0 30px #79c6e744,inset 0 0 28px #94d2e233;image-rendering:pixelated}
.telescope-lens:before{position:absolute;z-index:1;inset:0;border-radius:50%;content:"";pointer-events:none;background:radial-gradient(circle,transparent 55%,#06102a55 82%,#050b20bb 100%)}
.lens-stars{position:absolute;inset:0;overflow:hidden}
.lens-stars i{position:absolute;left:var(--sx);top:var(--sy);width:3px;height:3px;background:#fff1bf;box-shadow:3px 0 #fff1bf77,0 3px #8bb9e777;animation:lens-twinkle var(--twinkle) steps(2,end) infinite alternate;animation-delay:var(--delay)}
.lens-discovery{position:absolute;z-index:2;inset:0;display:grid;place-items:center;pointer-events:none}
.telescope-status{position:absolute;z-index:3;left:50%;bottom:12%;transform:translateX(-50%);max-width:80%;margin:0;padding:7px 9px;border:2px solid #afc5d4;background:#121b3be8;color:#fff0bd;font-size:clamp(.42rem,1.45vw,.65rem);line-height:1.7;white-space:nowrap;box-shadow:2px 2px #050b20}
.telescope-special{position:absolute;z-index:4;left:50%;bottom:4%;width:min(84%,330px);transform:translateX(-50%);margin:0;color:#ffe5ef;font:700 clamp(.58rem,1.8vw,.78rem)/1.8 'Pixelify Sans',sans-serif;text-shadow:2px 2px #633b71;animation:astro-gentle-in 2.4s ease both}
.telescope-controls{display:flex;justify-content:center;flex-wrap:wrap;gap:10px}
.telescope-controls button{min-width:140px;min-height:44px;padding:9px 12px;border:2px solid #f3dfae;background:#334765;color:#fff0bd;font:clamp(.48rem,1.5vw,.64rem)/1.4 'Press Start 2P',monospace;box-shadow:3px 3px #080d24;cursor:pointer;touch-action:manipulation}
.telescope-controls button:first-child{background:#755276}
.telescope-controls button:active{transform:translate(2px,2px);box-shadow:1px 1px #080d24}
.astro-moon{position:relative;width:31%;aspect-ratio:1;border-radius:50%;background:#f3e4b5;clip-path:polygon(25% 0,75% 0,75% 7%,90% 7%,90% 20%,100% 20%,100% 75%,90% 75%,90% 90%,75% 90%,75% 100%,25% 100%,25% 90%,10% 90%,10% 75%,0 75%,0 25%,10% 25%,10% 10%,25% 10%);box-shadow:inset -18px -10px #c1b9a1,0 0 22px #fff0b988;animation:astro-drift 7s ease-in-out infinite alternate}
.astro-moon i{position:absolute;left:24%;top:34%;width:12%;height:10%;background:#c8bc9e;box-shadow:45px 25px #d5c8a9,22px 60px #d5c8a9}
.astro-saturn{position:relative;width:29%;aspect-ratio:1;border-radius:50%;background:linear-gradient(145deg,#f3d695 0 32%,#cc9560 33% 61%,#edc87c 62%);box-shadow:0 0 22px #edc87b66;animation:astro-drift 8s ease-in-out infinite alternate}
.astro-saturn:before{position:absolute;left:-38%;top:34%;width:176%;height:36%;content:"";border:8px solid #d6b783;border-left-color:#f0d39b;border-right-color:#997c79;border-radius:50%;transform:rotate(-18deg)}
.astro-saturn i{position:absolute;inset:0;border-radius:50%;background:linear-gradient(transparent 43%,#a87662 44% 53%,transparent 54%);}
.astro-earth{width:34%;filter:drop-shadow(0 0 18px #68b8ef88);animation:astro-drift 6s ease-in-out infinite alternate}
.astro-nebula{width:75%;height:55%;border-radius:50%;background:radial-gradient(ellipse at 38% 48%,#ffb1b277 0 9%,transparent 39%),radial-gradient(ellipse at 64% 50%,#73b8f188 0 14%,transparent 52%),radial-gradient(ellipse at 50% 50%,#9667c8bb 0 12%,transparent 66%);filter:blur(7px);animation:nebula-breathe 5s ease-in-out infinite alternate}
.astro-nebula:after{position:absolute;inset:0;content:"";background:radial-gradient(ellipse at 44% 47%,#ffd99e 0 3px,transparent 5px),radial-gradient(ellipse at 64% 38%,#f0c9ff 0 2px,transparent 4px)}
.astro-libra,.astro-heart{width:62%;overflow:visible}
.astro-libra path,.astro-heart path{fill:none;stroke:#ffe9a8;stroke-width:2;stroke-dasharray:300;stroke-dashoffset:300;animation:constellation-draw 2.3s ease forwards}
.astro-libra circle,.astro-heart circle{fill:#fff4bd;filter:drop-shadow(0 0 5px #ffeaa8);opacity:0;animation:star-form .28s steps(2,end) forwards}
.astro-libra circle:nth-of-type(1){animation-delay:.1s}.astro-libra circle:nth-of-type(2){animation-delay:.45s}.astro-libra circle:nth-of-type(3){animation-delay:.8s}.astro-libra circle:nth-of-type(4){animation-delay:1.05s}.astro-libra circle:nth-of-type(5){animation-delay:1.3s}.astro-libra circle:nth-of-type(6){animation-delay:1.55s}.astro-libra circle:nth-of-type(7){animation-delay:1.8s}
.astro-heart circle:nth-of-type(1){animation-delay:.15s}.astro-heart circle:nth-of-type(2){animation-delay:.45s}.astro-heart circle:nth-of-type(3){animation-delay:.8s}.astro-heart circle:nth-of-type(4){animation-delay:1.1s}.astro-heart circle:nth-of-type(5){animation-delay:1.4s}.astro-heart circle:nth-of-type(6){animation-delay:1.8s}.astro-heart circle:nth-of-type(7){animation-delay:2.15s}.astro-heart circle:nth-of-type(8){animation-delay:2.5s}.astro-heart circle:nth-of-type(9){animation-delay:2.85s}.astro-heart circle:nth-of-type(10){animation-delay:3.2s}
.astro-meteors i,.astro-meteors b{position:absolute;top:25%;left:-30%;width:25%;height:4px;background:#fff6ce;box-shadow:0 0 7px #b9edff;transform:rotate(-32deg);opacity:0;animation:meteor-flight 1.4s steps(8,end) infinite}
.astro-meteors i:nth-child(2){top:40%;animation-delay:.25s}.astro-meteors i:nth-child(3){top:52%;animation-delay:.55s}.astro-meteors i:nth-child(4){top:30%;animation-delay:.85s}.astro-meteors b{top:60%;height:7px;width:36%;animation-delay:1.15s;box-shadow:0 0 12px #ffe8a8}
.astro-shooting{position:absolute;left:47%;top:44%;width:9px;height:9px;background:#fff6d8;box-shadow:0 0 12px #fff1bc;animation:shooting-flight 1.5s steps(9,end) both}
.astro-shooting:before{position:absolute;right:0;top:2px;width:150px;height:4px;content:"";transform:rotate(28deg);transform-origin:right;background:linear-gradient(90deg,transparent,#93d5efaa,#fff2c2);}
.astro-ufo{position:absolute;z-index:2;top:45%;left:42%;width:92px;height:64px;padding:0;border:0;background:transparent;cursor:pointer;pointer-events:auto;touch-action:manipulation;animation:ufo-cross 5s linear infinite}
.astro-ufo i{position:absolute;left:34%;top:4%;width:32%;height:34%;border:4px solid #a7e2e7;border-radius:50% 50% 20% 20%;background:#7995c7}
.astro-ufo b{position:absolute;left:8%;top:35%;width:84%;height:30%;border:4px solid #e7c984;border-radius:50%;background:#78b8a9;box-shadow:0 7px #b68255,0 12px #ffe4a4}
.astro-ufo.is-fleeing{animation:ufo-flee .8s steps(7,end) forwards}
.lens-discovery.is-heart:after{position:absolute;inset:15%;content:"";background:radial-gradient(circle,#fff0bb88 0 2px,transparent 4px);animation:heart-sparkle 1.2s steps(2,end) infinite alternate}
@keyframes lens-twinkle{to{opacity:.25;transform:scale(.65)}}@keyframes astro-drift{to{transform:translate(8px,-9px)}}@keyframes nebula-breathe{to{transform:scale(1.12);opacity:.75}}@keyframes constellation-draw{to{stroke-dashoffset:0}}@keyframes star-form{to{opacity:1;transform:scale(1.35)}}@keyframes meteor-flight{0%{left:-30%;opacity:0}15%{opacity:1}75%{opacity:.8}100%{left:115%;top:75%;opacity:0}}@keyframes shooting-flight{0%{transform:translate(-150px,-100px);opacity:0}18%{opacity:1}100%{transform:translate(180px,135px);opacity:0}}@keyframes ufo-cross{from{transform:translateX(-180px)}to{transform:translateX(180px)}}@keyframes ufo-flee{to{transform:translate(350px,-150px) scale(.65);opacity:0}}@keyframes heart-sparkle{to{opacity:.2;transform:scale(.94)}}@keyframes astro-gentle-in{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}
.telescope-lens{transition:filter .9s ease,background-color .9s ease}
.telescope-lens.is-searching .lens-stars{animation:sky-scan 3.5s ease-in-out infinite alternate}
.telescope-lens.discovery-moon .lens-stars{animation:moon-star-drift 14s linear infinite}
.telescope-scene.is-page-hidden *{animation-play-state:paused!important}
@keyframes sky-scan{from{transform:translate(-3px,2px) scale(1.015)}to{transform:translate(3px,-2px) scale(1.045)}}@keyframes moon-star-drift{to{transform:translate(-8px,4px)}}
.astro-moon{overflow:hidden;background:linear-gradient(135deg,#f7edcb 0 43%,#b7a98e 44% 57%,#eee0b8 58%);box-shadow:inset -17px -9px #aaa28f,0 0 22px #fff0b988;animation:moon-cross 11s ease-in-out infinite alternate}
.astro-moon:after{position:absolute;inset:-2%;content:"";background:#172548;clip-path:polygon(68% 0,100% 0,100% 100%,68% 100%,82% 76%,86% 54%,82% 30%);animation:moon-phase 22s steps(5,end) infinite alternate}
.astro-moon i{z-index:1;left:20%;top:32%;width:12%;height:9%;background:#b8aa8e;box-shadow:46px 26px #c9ba9b,23px 59px #c9ba9b,12px 10px 0 2px #e6d9b6}
@keyframes moon-cross{to{transform:translate(14px,-8px)}}@keyframes moon-phase{to{clip-path:polygon(45% 0,100% 0,100% 100%,45% 100%,72% 74%,80% 52%,72% 28%)}}
.astro-planet{position:relative;aspect-ratio:1;border-radius:50%;image-rendering:pixelated;filter:drop-shadow(0 0 10px #9ac6e255)}
.astro-planet:after{position:absolute;inset:0;border-radius:50%;content:"";background:repeating-linear-gradient(0deg,transparent 0 17%,#10172a22 18% 20%);pointer-events:none}
.astro-mercury{width:20%;clip-path:polygon(25% 0,75% 0,75% 8%,92% 8%,92% 25%,100% 25%,100% 75%,92% 75%,92% 92%,75% 92%,75% 100%,25% 100%,25% 92%,8% 92%,8% 75%,0 75%,0 25%,8% 25%,8% 8%,25% 8%);background:repeating-linear-gradient(25deg,#9b958a 0 8px,#77766f 8px 13px,#b6aa98 13px 19px);animation:mercury-dash 3.5s ease-in-out infinite alternate}
.astro-mercury i{position:absolute;left:25%;top:28%;width:18%;height:14%;background:#696c68;box-shadow:30px 24px #827d73,14px 58px #77736d}
@keyframes mercury-dash{to{transform:translate(28px,-5px)}}
.astro-venus{width:25%;background:repeating-linear-gradient(0deg,#e7c875 0 10px,#f4df9e 10px 17px,#c89051 17px 21px);box-shadow:0 0 18px #f5dc9166;animation:venus-drift 8s ease-in-out infinite alternate}
.astro-venus i{position:absolute;inset:-10%;border-radius:50%;background:repeating-linear-gradient(12deg,transparent 0 16px,#fff2c477 17px 23px,transparent 24px 34px);animation:cloud-roll 6s linear infinite}
@keyframes venus-drift{to{transform:translate(8px,-7px) rotate(8deg)}}@keyframes cloud-roll{to{transform:translateX(12px)}}
.astro-earth{width:28%;overflow:visible;animation:earth-roll 10s ease-in-out infinite alternate}
.astro-earth svg{display:block;width:100%;height:100%}
.astro-earth i{position:absolute;inset:20% 3%;border-radius:50%;background:repeating-linear-gradient(0deg,transparent 0 13px,#dff6ef88 14px 18px,transparent 19px 27px);clip-path:inset(0 round 50%);animation:cloud-roll 8s linear infinite}
@keyframes earth-roll{to{transform:translate(8px,-8px) rotate(7deg)}}
.astro-mars{width:22%;background:repeating-linear-gradient(0deg,#ce7048 0 10px,#9f4d3e 11px 15px,#d78355 16px 23px);box-shadow:0 0 13px #e17b5366;animation:mars-drift 8s ease-in-out infinite alternate}
.astro-mars i{position:absolute;left:28%;top:32%;width:15%;height:12%;background:#713d3b;box-shadow:38px 18px #974637,18px 53px #a84f38}
.astro-mars b{position:absolute;left:100%;top:-20%;width:8%;height:8%;border-radius:50%;background:#cfc3a0;box-shadow:0 0 4px #fff1bd}
@keyframes mars-drift{to{transform:translate(-8px,8px) rotate(-6deg)}}
.astro-jupiter{width:39%;background:repeating-linear-gradient(0deg,#d7b27d 0 9px,#ab7255 10px 15px,#f0d39b 16px 25px,#a36a52 26px 31px);box-shadow:0 0 20px #e2bd7a55;animation:jupiter-drift 12s ease-in-out infinite alternate}
.astro-jupiter i{position:absolute;right:17%;top:53%;width:21%;height:13%;border-radius:50%;background:#b8553e;box-shadow:inset -3px -2px #7e3b3b}
.astro-jupiter b{position:absolute;inset:10% 0;border-radius:50%;background:repeating-linear-gradient(0deg,transparent 0 14px,#fff0ca55 15px 18px,transparent 19px 26px);animation:cloud-roll 9s linear infinite}
@keyframes jupiter-drift{to{transform:translate(6px,-5px) rotate(3deg)}}
.astro-saturn{width:28%;background:repeating-linear-gradient(0deg,#edcf88 0 9px,#bc8c59 10px 14px,#f5dfa4 15px 21px);box-shadow:0 0 22px #edc87b66;animation:saturn-drift 10s ease-in-out infinite alternate}
.astro-saturn:before{left:-40%;top:34%;width:180%;height:35%;border:8px solid #d6b783;border-left-color:#f0d39b;border-right-color:#997c79;animation:saturn-ring 7s ease-in-out infinite alternate}
.astro-saturn i{inset:0;background:linear-gradient(transparent 43%,#a87662 44% 53%,transparent 54%)}
@keyframes saturn-drift{to{transform:translate(12px,-5px) rotate(-4deg)}}@keyframes saturn-ring{to{transform:rotate(-26deg) scaleY(.82)}}
.astro-uranus{width:26%;background:repeating-linear-gradient(0deg,#83c9c7 0 10px,#5ba3b0 11px 16px,#a4ded7 17px 23px);box-shadow:0 0 18px #79d8df77;animation:uranus-drift 9s ease-in-out infinite alternate}
.astro-uranus:before{position:absolute;inset:-13% 25%;content:"";border:3px solid #b7e5df88;border-radius:50%;transform:rotate(24deg)}
.astro-uranus i{position:absolute;inset:16% 0;border-radius:50%;background:repeating-linear-gradient(0deg,transparent 0 18px,#dcffff66 19px 22px,transparent 23px 29px);animation:cloud-roll 9s linear infinite}
@keyframes uranus-drift{to{transform:translate(-7px,7px) rotate(8deg)}}
.astro-neptune{width:25%;background:repeating-linear-gradient(0deg,#3566b3 0 8px,#26448f 9px 14px,#548dd1 15px 21px);box-shadow:0 0 20px #669eff77;animation:neptune-drift 11s ease-in-out infinite alternate}
.astro-neptune i{position:absolute;inset:23% 8%;border-radius:50%;background:repeating-linear-gradient(0deg,transparent 0 12px,#9cccf477 13px 16px,transparent 17px 26px);animation:cloud-roll 8s linear infinite}
@keyframes neptune-drift{to{transform:translate(8px,7px) rotate(-6deg)}}
.astro-meteors i,.astro-meteors b{animation-iteration-count:1;animation-duration:1.5s}
.astro-meteors i:nth-child(1){animation-delay:.15s}.astro-meteors i:nth-child(2){animation-delay:.72s}.astro-meteors i:nth-child(3){animation-delay:1.3s}.astro-meteors i:nth-child(4){animation-delay:1.48s}.astro-meteors b{animation-delay:2.1s}
.astro-meteors:after{position:absolute;left:62%;top:60%;content:"✦";color:#fff4b6;font:18px 'Press Start 2P';opacity:0;animation:meteor-sparkle .7s steps(3,end) 3.65s both}
@keyframes meteor-sparkle{25%{opacity:1;transform:scale(1.35)}100%{opacity:0;transform:scale(.4)}}
.astro-nebula{position:relative;filter:none;clip-path:polygon(18% 17%,38% 17%,38% 8%,59% 8%,59% 14%,78% 14%,78% 23%,91% 23%,91% 42%,97% 42%,97% 62%,84% 62%,84% 79%,64% 79%,64% 91%,36% 91%,36% 85%,18% 85%,18% 72%,7% 72%,7% 43%,15% 43%);background:radial-gradient(ellipse at 38% 48%,#ffb1b2bb 0 9%,transparent 42%),radial-gradient(ellipse at 64% 50%,#73b8f1dd 0 14%,transparent 52%),radial-gradient(ellipse at 50% 50%,#9667c8dd 0 12%,transparent 66%);animation:nebula-breathe 6s ease-in-out infinite alternate}
.astro-nebula i{position:absolute;width:4px;height:4px;background:#fff3c0;box-shadow:65px 44px #fff2c0,128px 22px #e2d1ff,95px 90px #fff2c0;animation:nebula-stars 2s steps(2,end) infinite alternate}
.astro-nebula i:nth-child(2){animation-delay:.6s;transform:translate(30px,42px)}.astro-nebula i:nth-child(3){animation-delay:1s;transform:translate(88px,65px)}.astro-nebula i:nth-child(4){animation-delay:1.4s;transform:translate(130px,28px)}
@keyframes nebula-stars{to{opacity:.2;transform:translate(4px,-3px)}}
.astro-galaxy{position:relative;width:54%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 50% 50%,#fff1bd 0 3%,#f0bd94 4% 9%,transparent 10%),conic-gradient(from 0deg,#ab82d966,#81b8e766,#e6b48377,#be8bde66,#ab82d966);filter:drop-shadow(0 0 14px #a7a1fa77);animation:galaxy-turn 15s linear infinite}
.astro-galaxy:before{position:absolute;inset:13%;content:"";border:8px solid #d8b6edaa;border-left-color:transparent;border-bottom-color:#80b6dfaa;border-radius:50%;transform:rotate(-24deg)}
.astro-galaxy i,.astro-galaxy b{position:absolute;left:8%;top:26%;width:4px;height:4px;background:#fff4c6;box-shadow:110px 44px #fff4c6,50px 110px #fff4c6;animation:galaxy-orbit 5s linear infinite}
.astro-galaxy b{animation-duration:7s;animation-direction:reverse;transform:translate(40px,32px)}
@keyframes galaxy-turn{to{transform:rotate(360deg) scale(1.04)}}@keyframes galaxy-orbit{to{transform:rotate(360deg) translateX(10px)}}
.astro-satellite{position:absolute;left:-14%;top:48%;width:44px;height:36px;animation:satellite-cross 8s linear forwards}
.astro-satellite:before,.astro-satellite:after{position:absolute;top:8px;width:13px;height:19px;content:"";background:repeating-linear-gradient(90deg,#5985aa 0 4px,#b4d2d0 5px 7px);border:2px solid #dfd39e}
.astro-satellite:before{left:-14px}.astro-satellite:after{right:-14px}
.astro-satellite i{position:absolute;left:13px;top:9px;width:17px;height:16px;background:#d4b875;box-shadow:0 0 4px #dff3d0}
.astro-satellite b{position:absolute;left:20px;top:-3px;width:2px;height:12px;background:#fff0b8;animation:blink-light .7s steps(2,end) infinite alternate}
@keyframes satellite-cross{to{transform:translateX(440px);opacity:0}}@keyframes blink-light{to{opacity:.15}}
.astro-shooting i{position:absolute;right:0;top:2px;width:150px;height:4px;background:linear-gradient(90deg,transparent,#93d5efaa,#fff2c2);box-shadow:0 0 6px #fff0bc}
.astro-shooting:after{position:absolute;left:-4px;top:-6px;content:"✦";color:#fff4c6;font:12px 'Press Start 2P';opacity:0;animation:shooting-spark .5s steps(2,end) 1.25s both}
@keyframes shooting-spark{30%{opacity:1;transform:scale(1.3)}100%{opacity:0;transform:scale(.4)}}
.astro-sun{position:relative;width:27%;aspect-ratio:1;background:#ffdc80;clip-path:polygon(25% 0,75% 0,75% 8%,92% 8%,92% 25%,100% 25%,100% 75%,92% 75%,92% 92%,75% 92%,75% 100%,25% 100%,25% 92%,8% 92%,8% 75%,0 75%,0 25%,8% 25%,8% 8%,25% 8%);box-shadow:0 0 26px #ffdf8aaa;animation:sun-pulse 1.2s steps(3,end) infinite alternate}
.astro-sun:before{position:absolute;inset:-16%;content:"";border:6px dashed #ffb65d;clip-path:inherit;animation:solar-flare .8s steps(4,end) infinite alternate}
.astro-sun i{position:absolute;inset:14%;background:radial-gradient(circle at 30% 30%,#fff8cf 0 9%,transparent 11%),linear-gradient(135deg,#fff2ad,#f5a84d)}
.astro-sun b{position:absolute;width:4px;height:4px;background:#fff4be;box-shadow:0 0 7px #ffe38c;animation:spark-out 1.2s steps(3,end) infinite}
.astro-sun b:nth-of-type(1){left:-15%;top:0}.astro-sun b:nth-of-type(2){right:-18%;top:20%;animation-delay:.2s}.astro-sun b:nth-of-type(3){right:-10%;bottom:4%;animation-delay:.4s}.astro-sun b:nth-of-type(4){left:10%;bottom:-15%;animation-delay:.6s}.astro-sun b:nth-of-type(5){left:-18%;top:62%;animation-delay:.8s}.astro-sun b:nth-of-type(6){left:20%;top:-18%;animation-delay:.35s}.astro-sun b:nth-of-type(7){right:18%;top:-16%;animation-delay:.55s}.astro-sun b:nth-of-type(8){right:0;bottom:-17%;animation-delay:.75s}
@keyframes sun-pulse{to{transform:scale(1.05)}}@keyframes solar-flare{to{transform:scale(1.14);opacity:.5}}@keyframes spark-out{to{transform:translate(8px,-7px);opacity:.2}}
.telescope-lens.discovery-sun{filter:brightness(1.14)}
.astro-supernova{position:relative;width:54%;aspect-ratio:1}
.astro-supernova i{position:absolute;left:47%;top:47%;width:8px;height:8px;background:#fff9d6;box-shadow:0 0 12px #fff3c4;animation:supernova-star 2.6s ease both}
.astro-supernova b{position:absolute;inset:20%;border:5px solid #ffe8a6;border-radius:50%;opacity:0;animation:supernova-blast 1.3s steps(6,end) 1.55s both}
.astro-supernova em{position:absolute;inset:5%;border:3px dotted #f4a9c9;border-radius:50%;opacity:0;animation:supernova-dust 2s ease 2s both}
@keyframes supernova-star{0%,35%{opacity:.4;transform:scale(.7)}55%{opacity:1;transform:scale(2.3)}70%{filter:brightness(2)}100%{opacity:.45;transform:scale(.25)}}@keyframes supernova-blast{20%{opacity:1}100%{opacity:0;transform:scale(1.7)}}@keyframes supernova-dust{20%{opacity:.9}100%{opacity:0;transform:scale(1.6)}}
.astro-blackhole{position:relative;width:40%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#050612 0 35%,#0b1031 36% 46%,transparent 48%);filter:drop-shadow(0 0 12px #9581ebaa);animation:blackhole-drift 12s ease-in-out infinite alternate}
.astro-blackhole:before{position:absolute;inset:20% -12%;content:"";border:9px solid #f2bf77;border-left-color:#9a80da;border-right-color:#e87ba8;border-radius:50%;transform:rotate(-25deg);animation:accretion-turn 7s linear infinite}
.astro-blackhole:after{position:absolute;inset:-12%;content:"";border:2px dotted #b9d4ff;border-radius:50%;animation:accretion-turn 20s linear infinite reverse}
@keyframes blackhole-drift{to{transform:translate(7px,-6px)}}@keyframes accretion-turn{to{transform:rotate(335deg)}}
.astro-ufo{animation:ufo-cross 7s linear forwards}
@keyframes ufo-cross{0%{transform:translateX(-210px);opacity:0}8%{opacity:1}42%{transform:translateX(-8px)}58%{transform:translateX(-8px) rotateY(180deg) scale(1.08)}85%{opacity:1}100%{transform:translateX(250px);opacity:0}}
.astro-ufo i{animation:blink-light .65s steps(2,end) infinite alternate}
.astro-ufo b{box-shadow:0 7px #b68255,0 12px #ffe4a4,19px 0 #d9f184,-19px 0 #f5c779}
.astro-space-cat{position:absolute;left:-20%;top:45%;width:60px;height:52px;border:5px solid #d7eef0;border-radius:45%;background:#8fb6cb;box-shadow:0 0 12px #a5e5f2;animation:spacecat-float 8s ease-in-out forwards}
.astro-space-cat:before{position:absolute;inset:7px;border:3px solid #fff2c5;border-radius:40%;content:"";background:#463e56;clip-path:polygon(0 17%,25% 17%,25% 0,42% 0,42% 18%,60% 18%,60% 0,78% 0,78% 19%,100% 19%,100% 82%,78% 82%,78% 100%,22% 100%,22% 82%,0 82%)}
.astro-space-cat i{position:absolute;z-index:1;left:24%;top:36%;width:5px;height:5px;background:#fff1b7;box-shadow:19px 0 #fff1b7}
.astro-space-cat b{position:absolute;left:31%;top:64%;width:30%;height:3px;background:#e9b1a1;box-shadow:-7px 3px #fff0cf,10px 3px #fff0cf}
.astro-space-cat em{position:absolute;right:-28px;top:-20px;color:#fff0b5;font:12px 'Press Start 2P';font-style:normal;animation:cat-wave .8s steps(2,end) 3s 3}
@keyframes spacecat-float{0%{transform:translateX(-80px) translateY(8px)}32%{transform:translateX(120px) translateY(-5px)}47%{transform:translateX(120px) translateY(-5px)}70%{transform:translateX(230px) translateY(8px)}100%{transform:translateX(410px) translateY(-8px);opacity:0}}@keyframes cat-wave{50%{transform:rotate(25deg) translateY(-3px)}}
.astro-alien{position:absolute;z-index:3;left:calc(50% - 48px);top:calc(50% - 60px);width:96px;height:120px;opacity:0;animation:alien-visit 10s ease-in-out both;image-rendering:pixelated;filter:drop-shadow(0 0 8px #b7d5a866)}
.astro-alien svg{display:block;width:100%;height:100%;overflow:visible}
.astro-alien .alien-figure{transform-box:fill-box;transform-origin:center;animation:alien-bob 1.7s ease-in-out 2s 3 alternate}
.astro-alien .alien-wave-arm{transform-box:fill-box;transform-origin:100% 20%;animation:alien-wave .52s steps(3,end) 3.8s 5}
.astro-alien .alien-figure>path:nth-of-type(4){transform-box:fill-box;transform-origin:center;animation:alien-gaze .8s steps(3,end) 2.4s 2 alternate}
@keyframes alien-visit{0%{opacity:0;transform:translateX(-210px) scale(.84)}17%{opacity:1;transform:translateX(-95px) scale(.92)}30%,67%{opacity:1;transform:translateX(0) scale(1)}100%{opacity:0;transform:translateX(230px) scale(.88)}}
@keyframes alien-bob{to{transform:translateY(-5px)}}
@keyframes alien-gaze{to{transform:translateX(2px) scale(1.02)}}
@keyframes alien-wave{0%,100%{transform:rotate(0)}35%{transform:rotate(-18deg)}70%{transform:rotate(12deg)}}
.astro-libra circle{animation:star-form .28s steps(2,end) forwards,constellation-twinkle 1s steps(2,end) 2.7s 2}
.astro-heart circle{animation:star-form .28s steps(2,end) forwards,heart-glint 1s steps(2,end) 4s 3}
@keyframes constellation-twinkle{50%{opacity:.35;filter:drop-shadow(0 0 8px #fff5cb)}}@keyframes heart-glint{50%{opacity:.45;filter:drop-shadow(0 0 10px #ffdced)}}
.astro-sun{animation:sun-appearance 3.6s ease both}
.astro-sun:before{animation:solar-flare .8s steps(4,end) 3}
.astro-sun b{animation-iteration-count:3}
.telescope-lens.discovery-sun{animation:lens-sun-glow 3.6s ease both}
@keyframes sun-appearance{0%{opacity:0;transform:scale(.55)}18%,72%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.9)}}@keyframes lens-sun-glow{0%,100%{filter:brightness(1)}20%,60%{filter:brightness(1.14)}}
.astro-supernova i{animation:supernova-star 2.6s ease both}
@keyframes supernova-star{0%,35%{opacity:.4;transform:scale(.7)}55%{opacity:1;transform:scale(2.3)}70%{filter:brightness(2)}100%{opacity:0;transform:scale(.25)}}
@media(prefers-reduced-motion:reduce){
  .telescope-scene *{animation:none!important;transition:none!important}
  .lens-stars{transform:none!important}
  .astro-libra path,.astro-heart path{stroke-dashoffset:0}
  .astro-libra circle,.astro-heart circle{opacity:1}
  .astro-meteors i,.astro-meteors b{left:20%;opacity:1;animation:none!important}
  .astro-nebula i{opacity:1}
  .astro-satellite{left:30%;opacity:1;transform:none}
  .astro-shooting{opacity:1;transform:none}
  .astro-sun{opacity:1;transform:none}
  .astro-supernova i{opacity:1;transform:none}
  .astro-supernova b,.astro-supernova em{opacity:.65;transform:none}
  .astro-space-cat{left:30%;opacity:1}
  .astro-alien{left:calc(50% - 48px);top:calc(50% - 60px);opacity:1;transform:none}
  .astro-ufo{left:34%;opacity:1}
  .telescope-special{opacity:1}
}
.message-view{text-align:center}.message-view .hand{font-size:2rem;color:#c25775}.message-view h2,.small-view h2{color:#303052;font-family:'Press Start 2P';font-size:clamp(.8rem,2vw,1.2rem);line-height:1.8}.message-view .soft{color:#9b6070;font-size:1rem}.message-view .sign{margin-top:24px}
.overlay-paper:has(.secret-note){display:flex;align-items:center;width:min(620px,90vw);min-height:0;max-height:84vh;padding:clamp(18px,4vw,34px);overflow:auto}
.secret-note{position:relative;width:100%;color:#57384f}
.secret-note-heading{text-align:center;margin:0 auto 14px}
.secret-note-heading .hand{margin:0 0 5px;color:#c25775;font-size:clamp(1.35rem,3vw,1.8rem)}
.secret-note-heading h2{margin:0;color:#303052;font-family:'Press Start 2P',monospace;font-size:clamp(.68rem,1.8vw,.9rem);line-height:1.6}
.secret-note-letter{min-height:120px;padding:14px 16px;border:2px dashed #d49b76;background:#fff8df;color:#5a4051;opacity:0;transform:translateY(12px);white-space:pre-wrap;overflow-wrap:anywhere;cursor:pointer}
.secret-note.is-revealed .secret-note-letter{animation:secret-letter-reveal .55s ease-out .12s both}
.secret-note-letter p{margin:0;font-size:clamp(.98rem,1.45vw,1.08rem);line-height:1.42;white-space:pre-wrap;overflow-wrap:anywhere}
.secret-note-cursor{display:inline-block;margin-left:2px;color:#c25775;animation:secret-note-caret .8s steps(2,end) infinite}
.secret-note-typing-hint{margin:7px 0 0;color:#9b6875;text-align:center;font-size:.82rem}
.secret-note-typing-hint[hidden]{display:none}
.secret-note-back{display:block;visibility:hidden;opacity:0;min-height:44px;margin:14px auto 0;padding:8px 12px;border:3px solid #fff0bb;background:#4a796b;color:#fff4ce;box-shadow:3px 3px #422b45;font:700 .52rem 'Press Start 2P',monospace;cursor:pointer;touch-action:manipulation}
.secret-note.is-complete .secret-note-back{visibility:visible;animation:secret-note-back-reveal .32s ease-out both}
.secret-note-back:active{transform:translate(2px,2px);box-shadow:1px 1px #422b45}
.secret-note-confetti{position:absolute;inset:35% 0 auto;height:0;pointer-events:none}
.secret-note-confetti span{position:absolute;left:12%;color:#e7778a;font-size:1rem;opacity:0}
.secret-note-confetti span:nth-child(2){left:82%;color:#e7b35f;font-size:.85rem}
.secret-note-confetti span:nth-child(3){left:23%;color:#a27bb5;font-size:.7rem}
.secret-note-confetti span:nth-child(4){left:73%;color:#e7778a;font-size:.75rem}
.secret-note.is-revealed .secret-note-confetti span{animation:secret-note-float 1.25s ease-out both}
.secret-note.is-revealed .secret-note-confetti span:nth-child(2){animation-delay:.08s}
.secret-note.is-revealed .secret-note-confetti span:nth-child(3){animation-delay:.16s}
.secret-note.is-revealed .secret-note-confetti span:nth-child(4){animation-delay:.22s}
.hidden-detail{display:inline-block;margin-top:15px;border:0;background:none;color:#b05262;font:700 1rem 'Pixelify Sans',sans-serif;cursor:pointer;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:4px}
.paper-secret{display:none;margin:12px auto 0;color:#c25775;font-size:1.5rem}.paper-secret.is-shown{display:block;animation:secret-pop .28s steps(3,end)}
.album-title{color:#6c375b;font-family:'Press Start 2P';font-size:.8rem}
.memory-album{position:relative;width:min(680px,91vw);perspective:1200px;transform-origin:70% 68%;animation:gift-album-reveal .72s steps(6,end) both}
.memory-book-pages{position:relative;min-height:300px;padding:16px 16px 15px 26px;background:#963f51;border:8px solid #633149;box-shadow:inset 10px 0 #ce685b,10px 12px #09152e;transform:rotateX(2deg);transform-style:preserve-3d}
.memory-album-heading{margin:0 auto 13px;padding-bottom:9px;border-bottom:2px dashed #d58d65;text-align:center;color:#f7dfaa}
.memory-album-heading .album-title{margin:0 0 5px;color:#ffedc0;font-size:clamp(.7rem,2.5vw,.9rem)}
.memory-album-heading span{font-size:1rem;color:#f1c68b}
.memory-page-indicator{display:block;margin-top:5px;color:#ffedc0;font: .42rem 'Press Start 2P',monospace;text-align:right}
.memory-spread{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;align-items:center;gap:5px 12px;min-height:250px;padding:15px 14px 11px;background:#f7e7be;border:4px solid #f5d68f;box-shadow:inset 0 0 0 3px #d49863;transform-origin:left center;transform-style:preserve-3d;backface-visibility:hidden}
.memory-spread:before{content:"";position:absolute;z-index:0;left:50%;top:0;bottom:0;width:5px;background:#d99b65;box-shadow:2px 0 #704052;pointer-events:none}
.memory-photo-frame{position:relative;z-index:1;min-width:0;padding:6px 6px 17px;background:#fff5d9;border:2px solid #d7aa71;box-shadow:3px 4px #704052;pointer-events:none}
.memory-photo-one{transform:rotate(-2deg) translateY(-2px)}
.memory-photo-two{transform:rotate(2.2deg) translateY(3px)}
.memory-print{position:relative;padding:4px 4px 0;background:#fff5d9}
.memory-print img,.memory-print svg{display:block;width:100%;height:auto;max-height:210px;aspect-ratio:auto;object-fit:contain;background:#263451;image-rendering:auto}
.memory-tape{position:absolute;z-index:2;left:37%;top:-7px;width:27%;height:10px;background:#e6bd72ce;box-shadow:0 1px #b67c54;transform:rotate(-3deg)}
.memory-photo-two .memory-tape{left:40%;background:#cf8982c9;transform:rotate(4deg)}
.memory-note{z-index:1;grid-column:1 / -1;display:flex;justify-content:flex-end;align-items:center;min-width:0;margin-right:27px;padding:1px 4px 0;color:#724654;text-align:center;pointer-events:none}
.memory-note span{color:#b56860;font: .38rem 'Press Start 2P',monospace;white-space:nowrap}
.memory-album-turns{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:14px 4px 4px}
.memory-album-turns button,.memory-album-close{padding:8px 11px;border:3px solid #fff0bb;background:#4a796b;color:#fff4ce;box-shadow:3px 3px #422b45;font:700 .53rem 'Press Start 2P',monospace;cursor:pointer;touch-action:manipulation}
.memory-album-turns button{min-height:34px;max-width:48%;line-height:1.55}
.memory-album-turns button:active,.memory-album-close:active{transform:translate(2px,2px);box-shadow:1px 1px #422b45}
.memory-album-turns button:disabled{opacity:.45;cursor:default}
.memory-album-close{display:block;margin:12px auto 0;border-color:#ecc881;background:#ce6c68;color:#fff3cc;font-size:.45rem}
.memory-album-cover{position:absolute;z-index:4;inset:0;display:grid;place-content:center;gap:18px;border:8px solid #633149;background:repeating-linear-gradient(0deg,#a84c54 0 4px,#98404d 4px 8px);box-shadow:inset 8px 0 #d87862,5px 7px #422640;color:#ffe5a6;text-align:center;transform-origin:left center;backface-visibility:hidden;pointer-events:none;animation:memory-cover-open .9s steps(8,end) .12s forwards}
.memory-album-cover.is-open{visibility:hidden}
.memory-album-cover span{font: .78rem/2 'Press Start 2P',monospace;text-shadow:2px 2px #603449}
.memory-album-cover i{font:normal 2rem 'Pixelify Sans',sans-serif;color:#f8d783}
.cat-scrapbook{max-width:100%;color:#603a51;text-align:center;font-family:'Pixelify Sans',sans-serif}
.scrapbook-heading{margin:0 auto 10px;padding-bottom:8px;border-bottom:2px dashed #bd785e;color:#8b4a58}
.scrapbook-heading .album-title{margin:0 0 4px;font-size:clamp(.62rem,2.4vw,.86rem)}
.scrapbook-heading>span{font-size:.95rem;color:#9f6a65}
.scrapbook-spread{position:relative;padding:10px;background:#9c4d50;border:4px solid #72394b;box-shadow:inset 5px 0 #d27b61,4px 5px #593451}
.scrapbook-spread:before{content:"";position:absolute;left:60%;top:0;bottom:0;width:4px;background:#e3a36a;box-shadow:2px 0 #61374c;z-index:1}
.scrapbook-page{position:relative;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(100px,.8fr);align-items:center;gap:12px;min-height:170px;padding:10px;background:#f8e8bc;border:3px solid #f9d98d;box-shadow:inset 0 0 0 2px #d29062}
.cat-photo-mat{position:relative;padding:7px 7px 9px;background:#fff4d1;border:2px solid #b8805a;box-shadow:3px 4px #684053;transform:rotate(-1deg)}
.cat-photo{display:block;width:100%;line-height:0;background:#263451}
.cat-photo img{display:block;width:100%;height:auto;object-fit:contain;background:#263451;image-rendering:auto}
.cat-photo svg{display:block;width:100%;height:auto;aspect-ratio:96/76;image-rendering:pixelated}
.photo-corner{position:absolute;width:9px;height:9px;background:#f0cb79;border:1px solid #ad665d;transform:rotate(45deg)}
.corner-a{left:3px;top:3px}.corner-b{right:3px;bottom:3px}
.cat-caption{padding:4px 5px;color:#754958;text-align:left}
.cat-caption h2{margin:0 0 6px;color:#6c3d55;font:700 clamp(.82rem,2vw,1rem)/1.3 'Pixelify Sans',sans-serif}
.cat-caption p{margin:0 0 8px;font-size:1rem;line-height:1.3;white-space:pre-line;overflow-wrap:anywhere}
.cat-page-number{color:#ad6564;font: .42rem 'Press Start 2P',monospace}
.scrapbook-turns{display:flex;justify-content:space-between;gap:12px;margin:12px 4px 4px}
.scrapbook-turns button,.photo-secret-trigger{padding:7px 9px;border:3px solid #fff0bb;background:#4a796b;color:#fff4ce;box-shadow:3px 3px #65394c;font:700 .55rem 'Press Start 2P',monospace;cursor:pointer;touch-action:manipulation}
.scrapbook-turns button:active,.photo-secret-trigger:active{transform:translate(2px,2px);box-shadow:1px 1px #65394c}
.scrapbook-turns button:disabled{opacity:.45;cursor:default}
.photo-secret-trigger{border-color:#edc887;background:#d16d66;color:#fff4ce;font-size:.43rem}
.cat-scrapbook-secret{margin:10px 0 0;color:#a54861;font-size:1.05rem;font-weight:700}
.cat-scrapbook-secret[hidden]{display:none}
.small-view{color:#593758;text-align:center;font-size:1.2rem}.small-kicker{color:#b05262;font-family:'Press Start 2P';font-size:.62rem;letter-spacing:.08em}
.world-paused .world-actor,.world-paused .world-actor:before,.world-paused .world-actor:after,.world-paused .pixel-sprite,.world-paused .pixel-sprite:before,.world-paused .pixel-sprite:after,.world-paused .room-mote,.world-paused .cake-visual:not(.is-bouncing),.world-paused .cake-flame:not(.is-out),.world-paused .physical-prop,.world-paused .prop-gift i{animation-play-state:paused!important}
.prop-gift.is-shaking,.prop-envelope.is-opening{will-change:transform}.prop-gift.is-shaking{animation:gift-shake .68s steps(7,end)}.prop-gift.is-open{background-position:66.667% 100%;animation:gift-reveal .5s steps(4,end) both}.prop-gift.is-open i{animation:reveal-glint 1.4s steps(4,end) .2s both}.prop-envelope.is-opening{background-position:100% 100%;animation:envelope-lift .55s steps(4,end) both}
@keyframes sceneOut{to{opacity:0;transform:translate(-50%,-65%) scale(.8)}}
@keyframes blink{0%,92%,100%{opacity:0}93%,96%{opacity:1}}
@keyframes visitor-life{0%,8%,24%,53%,58%,100%{background-position:0 0}59%,67%,81%{background-position:20% 0}68%,80%,82%,91%{background-position:40% 0}}
@keyframes visitor-guest-life{0%,12%,26%,54%,60%,100%{background-position:0 0}61%,69%,82%{background-position:50% 0}70%,81%,83%,92%{background-position:100% 0}}
@keyframes visitor-roam-one{0%,13%,25%,100%{transform:translate(0,0)}42%,54%{transform:translate(18px,-10px)}77%,88%{transform:translate(5px,-2px)}}
@keyframes visitor-roam-two{0%,17%,31%,100%{transform:translate(0,0)}47%,60%{transform:translate(-13px,-7px)}82%,92%{transform:translate(-4px,-1px)}}
@keyframes mote-rise{0%,12%{opacity:0;transform:translate(0,0)}22%{opacity:.65}82%{opacity:.45;transform:translate(6px,-24px)}100%{opacity:0;transform:translate(8px,-36px)}}
@keyframes flame-dance{from{transform:scale(.9,1)}to{transform:scale(1.05,.86)}}
@keyframes cake-bounce{0%,100%{transform:translateY(0) scale(1)}35%{transform:translateY(-7%) scale(1.03,1.06)}65%{transform:translateY(1%) scale(1.04,.96)}}
@keyframes cake-flare{from{transform:translateY(-2px) scale(.82,1.18)}to{transform:translateY(1px) scale(1.2,.78)}}
@keyframes tail-swish{from{transform:rotate(-11deg)}to{transform:rotate(13deg)}}
@keyframes cat-breathe{0%,64%,100%{transform:scale(var(--cat-width,1),var(--cat-height,1))}76%,86%{transform:scale(var(--cat-width,1),calc(var(--cat-height,1) + .02))}}
@keyframes cat-tail-idle{0%,62%,100%{transform:rotate(0)}72%{transform:rotate(-3deg)}82%{transform:rotate(2deg)}90%{transform:rotate(0)}}
@keyframes cat-tail-affection{from{transform:rotate(-2deg)}to{transform:rotate(2deg)}}
@keyframes cat-ear-twitch{0%,70%,100%{transform:rotate(0)}76%{transform:rotate(-5deg)}82%{transform:rotate(2deg)}88%{transform:rotate(0)}}
@keyframes cat-blink-open{0%,90%,100%{opacity:1}92%,95%{opacity:0}}
@keyframes cat-blink-closed{0%,90%,100%{opacity:0}92%,95%{opacity:1}}
@keyframes cat-head-look{0%,68%,100%{transform:translateX(0) rotate(0)}76%{transform:translateX(2px) rotate(.8deg)}84%{transform:translateX(-1px) rotate(-.4deg)}91%{transform:translateX(0) rotate(0)}}
/* Short, low-amplitude strolls happen only occasionally; the cats stay on the ground. */
@keyframes cat-walk-body{0%,100%{transform:scale(var(--cat-width,1),var(--cat-height,1))}50%{transform:scale(var(--cat-width,1),calc(var(--cat-height,1) + .012))}}
@keyframes cat-paw-step-a{0%,100%{transform:translateX(-1px)}50%{transform:translateX(2px)}}
@keyframes cat-paw-step-b{0%,100%{transform:translateX(1px)}50%{transform:translateX(-2px)}}
@keyframes cat-heart-float{0%{opacity:0;transform:translate(-50%,5px) scale(.7)}22%{opacity:1}76%{opacity:.9;transform:translate(-50%,-7px) scale(1)}100%{opacity:0;transform:translate(-50%,-11px) scale(.85)}}
@keyframes cat-label-pop{0%,100%{opacity:0;transform:translate(-50%,3px)}12%,82%{opacity:1;transform:translate(-50%,0)}}
@keyframes gift-album-reveal{0%{opacity:0;transform:translate(-8vw,10vh) scale(.2) rotate(8deg)}45%{opacity:1;transform:translate(-2vw,1vh) scale(1.04) rotate(-2deg)}100%{opacity:1;transform:translate(0,0) scale(1) rotate(0)}}
@keyframes memory-cover-open{0%,18%{transform:rotateY(0)}100%{transform:rotateY(-145deg)}}
@keyframes gift-shake{0%,100%{transform:translate(0,0) rotate(0)}18%{transform:translate(-8%,-3%) rotate(-5deg)}38%{transform:translate(8%,0) rotate(5deg)}58%{transform:translate(-5%,-2%) rotate(-3deg)}78%{transform:translate(3%,0) rotate(2deg)}}
@keyframes gift-reveal{0%{transform:translateY(0) scale(1)}65%{transform:translateY(-10%) scale(1.06)}100%{transform:translateY(0) scale(1)}}
@keyframes envelope-lift{0%{transform:translateY(0) rotate(0)}60%{transform:translateY(-10%) rotate(-3deg)}100%{transform:translateY(0) rotate(0)}}
@keyframes secret-letter-reveal{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes secret-note-float{0%{opacity:0;transform:translateY(8px) scale(.7)}20%{opacity:.48}100%{opacity:0;transform:translateY(-28px) scale(1)}}
@keyframes secret-note-caret{50%{opacity:0}}
@keyframes secret-note-back-reveal{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
@keyframes reveal-glint{0%{opacity:0;transform:translateY(6px) scale(.6)}55%{opacity:1;transform:translateY(-5px) scale(1.1)}100%{opacity:.85;transform:translateY(-14px) scale(.8)}}
@keyframes secret-pop{0%{opacity:0;transform:scale(.5)}100%{opacity:1;transform:scale(1)}}
@keyframes gate-wrong{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
@media(max-width:650px){.world-art{top:47%;width:100vw}.world-whisper{bottom:1.2vh;font-size:clamp(.85rem,4vw,1.05rem)}.overlay-paper{min-height:60vh}.overlay-close{top:3vh;right:3vw}.memory-book-pages{min-height:250px;padding:11px 9px 10px 15px}.memory-album-heading span{font-size:.9rem}.memory-spread{min-height:198px;gap:3px 8px;padding:10px 8px 8px}.memory-photo-frame{padding:4px 4px 14px}.memory-print{padding:3px 3px 0}.memory-note span{font-size:.34rem}.memory-album-close{margin-top:9px}.scrapbook-page{grid-template-columns:minmax(0,1.2fr) minmax(90px,.8fr);gap:8px;min-height:145px;padding:7px}.cat-caption h2{font-size:.48rem}.cat-caption p{font-size:.9rem}}
@media(max-width:650px){.world-art{top:47%;width:100vw}.world-whisper{bottom:1.2vh;font-size:clamp(.85rem,4vw,1.05rem)}.overlay-paper{min-height:60vh}.overlay-close{top:3vh;right:3vw}.memory-book-pages{min-height:250px;padding:11px 9px 10px 15px}.memory-album-heading span{font-size:.9rem}.memory-page-indicator{font-size:.38rem}.memory-spread{min-height:198px;gap:3px 8px;padding:10px 8px 8px}.memory-photo-frame{padding:4px 4px 14px}.memory-print{padding:3px 3px 0}.memory-note span{font-size:.34rem}.memory-album-close{margin-top:9px}.scrapbook-page{grid-template-columns:minmax(0,1.2fr) minmax(90px,.8fr);gap:8px;min-height:145px;padding:7px}.cat-caption h2{font-size:.48rem}.cat-caption p{font-size:.9rem}}

/* October 11 monthsary telescope surprise */
.lens-discovery.is-monthsary{pointer-events:auto}

.inside-beatles-picture{pointer-events:auto;cursor:pointer}
.monthsary-envelope{position:relative;display:grid;place-items:center;width:36px;height:27px;padding:0;border:2px solid #ffe7a1;border-radius:2px;background:#e8a94d;color:#fff4c3;font:18px/1 'Press Start 2P',monospace;cursor:pointer;image-rendering:pixelated;box-shadow:0 0 9px 3px #ffda73aa,0 0 25px 8px #ffbb4c66;animation:monthsary-envelope-glow 1.4s steps(3,end) infinite alternate}
.monthsary-envelope:after{position:absolute;inset:-5px;content:"";border:2px dotted #ffe6a466;pointer-events:none}
.monthsary-envelope.is-opening{animation:monthsary-envelope-open .9s steps(5,end) forwards}
.monthsary-light-burst{position:absolute;inset:50% auto auto 50%;z-index:3;width:1px;height:1px;pointer-events:none}
.monthsary-light-burst:before{position:absolute;content:"";inset:-150px;background:radial-gradient(circle,#fff8d5 0,#ffdc76aa 12%,transparent 68%);animation:monthsary-light 1.2s ease-out both}
.monthsary-light-burst i{position:absolute;width:4px;height:4px;background:#fff2a8;box-shadow:0 0 8px #ffca57;transform:rotate(var(--a)) translateX(0);animation:monthsary-particle .8s steps(5,end) both}
.monthsary-light-burst i:nth-child(1){--a:0deg}.monthsary-light-burst i:nth-child(2){--a:45deg}.monthsary-light-burst i:nth-child(3){--a:90deg}.monthsary-light-burst i:nth-child(4){--a:135deg}.monthsary-light-burst i:nth-child(5){--a:180deg}.monthsary-light-burst i:nth-child(6){--a:225deg}.monthsary-light-burst i:nth-child(7){--a:270deg}.monthsary-light-burst i:nth-child(8){--a:315deg}
.world-overlay.monthsary-flow{z-index:40;display:grid;place-items:stretch;padding:0;background:#06102af5;transition:opacity .5s ease}
.world-overlay.monthsary-flow .overlay-paper{display:block;width:100%;height:100%;min-height:0;max-height:none;padding:0;overflow:hidden;border:0;background:transparent;box-shadow:none}
.world-overlay.monthsary-flow>.overlay-close{top:max(14px,env(safe-area-inset-top));right:max(14px,env(safe-area-inset-right));z-index:10;background:#20264cdd}
.monthsary-sky{position:relative;isolation:isolate;display:grid;place-items:center;width:100%;height:100%;min-height:100svh;overflow:hidden;background:radial-gradient(ellipse at 50% 45%,#17285a 0,#091435 52%,#030817 100%);color:#fff0bd}
.monthsary-stars{position:absolute;inset:0;overflow:hidden}
.monthsary-stars i{position:absolute;left:var(--x);top:var(--y);width:3px;height:3px;background:#fff6ce;opacity:0;box-shadow:0 0 8px #fff2b8;animation:monthsary-sky-star .7s steps(2,end) var(--d) both}
.monthsary-burst{position:absolute;left:50%;top:47%;width:1px;height:1px;opacity:0}
.monthsary-burst i{position:absolute;width:4px;height:4px;background:#ffe186;box-shadow:0 0 10px #ffce69;transform:rotate(var(--p)) translateX(var(--q));opacity:.8}
.monthsary-heart{position:absolute;width:min(66vw,62vh,520px);height:auto;overflow:visible;filter:drop-shadow(0 0 12px #ffc978);opacity:0}
.monthsary-heart path{fill:none;stroke:#ffd875;stroke-width:2.4;stroke-linejoin:miter;stroke-dasharray:600;stroke-dashoffset:600}
.monthsary-heart circle{fill:#fff3b3;opacity:0;filter:drop-shadow(0 0 7px #ffe17c)}
.monthsary-sky.is-forming .monthsary-heart{opacity:1}
.monthsary-sky.is-forming .monthsary-heart path{animation:monthsary-heart-draw 3.7s steps(18,end) .45s forwards}
.monthsary-sky.is-forming .monthsary-heart circle{animation:monthsary-star-on .24s steps(2,end) forwards}
.monthsary-sky.is-forming .monthsary-heart circle:nth-of-type(1){animation-delay:.1s}.monthsary-sky.is-forming .monthsary-heart circle:nth-of-type(2){animation-delay:.4s}.monthsary-sky.is-forming .monthsary-heart circle:nth-of-type(3){animation-delay:.7s}.monthsary-sky.is-forming .monthsary-heart circle:nth-of-type(4){animation-delay:1s}.monthsary-sky.is-forming .monthsary-heart circle:nth-of-type(5){animation-delay:1.3s}.monthsary-sky.is-forming .monthsary-heart circle:nth-of-type(6){animation-delay:1.6s}.monthsary-sky.is-forming .monthsary-heart circle:nth-of-type(7){animation-delay:1.9s}.monthsary-sky.is-forming .monthsary-heart circle:nth-of-type(8){animation-delay:2.2s}.monthsary-sky.is-forming .monthsary-heart circle:nth-of-type(9){animation-delay:2.5s}.monthsary-sky.is-forming .monthsary-heart circle:nth-of-type(10){animation-delay:2.8s}.monthsary-sky.is-forming .monthsary-heart circle:nth-of-type(11){animation-delay:3.1s}.monthsary-sky.is-forming .monthsary-heart circle:nth-of-type(12){animation-delay:3.4s}
.monthsary-sky.is-heart-complete .monthsary-burst{opacity:1;animation:monthsary-burst-fade 2.2s ease-out both}
.monthsary-copy{position:absolute;top:76%;width:min(92vw,780px);padding:0 16px;text-align:center;font:clamp(.58rem,2.3vw,1rem)/1.8 'Press Start 2P',monospace;color:#fff0bd;text-shadow:3px 3px #794f76,0 0 14px #ffcf76;opacity:0;transform:translateY(12px)}
.monthsary-copy p{margin:0 0 8px}.monthsary-copy p:first-child{font-size:clamp(.55rem,2.35vw,1rem)}.monthsary-copy p:nth-child(2){font-size:clamp(.68rem,2.8vw,1.2rem);color:#ffe09a}
.monthsary-sky.show-message .monthsary-copy{opacity:1;transform:none;transition:opacity .8s ease,transform .8s ease}
.monthsary-copy .monthsary-extra{display:none;font:700 clamp(.92rem,3vw,1.3rem)/1.6 'Pixelify Sans',sans-serif;color:#e8dcff}
.monthsary-sky.show-extra .monthsary-copy .monthsary-extra{display:block;animation:astro-gentle-in .8s ease both}
.monthsary-test-badge{position:absolute;top:12px;left:12px;z-index:5;padding:7px 9px;border:1px solid #ffe9b4;background:#111c36dd;color:#ffe9b4;font:8px/1.4 'Press Start 2P',monospace;letter-spacing:.04em}
.monthsary-controls{position:absolute;right:14px;bottom:max(14px,env(safe-area-inset-bottom));z-index:5;display:flex;gap:8px;align-items:center}
.monthsary-controls button{min-height:40px;padding:7px 10px;border:2px solid #f3dfae;background:#334765;color:#fff0bd;font:clamp(.42rem,1.3vw,.58rem)/1.4 'Press Start 2P',monospace;box-shadow:2px 2px #080d24;cursor:pointer}
.monthsary-controls .monthsary-test-badge{position:static}
.monthsary-test-flow .monthsary-test-badge{position:static}
@keyframes monthsary-envelope-glow{to{filter:brightness(1.25);box-shadow:0 0 16px 6px #ffda73cc,0 0 34px 12px #ffbb4c99}}
@keyframes monthsary-envelope-open{to{transform:scale(1.7) rotate(-5deg);opacity:.2}}
@keyframes monthsary-light{to{transform:scale(1.3);opacity:0}}
@keyframes monthsary-particle{to{transform:rotate(var(--a)) translateX(52px);opacity:0}}
@keyframes monthsary-sky-star{to{opacity:.72}}
@keyframes monthsary-heart-draw{to{stroke-dashoffset:0}}
@keyframes monthsary-star-on{to{opacity:1}}
@keyframes monthsary-burst-fade{to{opacity:0;transform:scale(1.6)}}
@media(max-width:650px){.monthsary-heart{width:min(86vw,48vh,440px);top:17%}.monthsary-copy{top:64%;width:96vw;padding:0 8px}.monthsary-test-badge{font-size:7px}.monthsary-controls{left:50%;right:auto;transform:translateX(-50%);width:max-content;max-width:96vw;justify-content:center;flex-wrap:wrap}.monthsary-controls button{min-height:38px;font-size:7px}.monthsary-copy p:first-child{font-size:clamp(.5rem,3.1vw,.83rem)}.monthsary-copy p:nth-child(2){font-size:clamp(.64rem,3.5vw,1rem)}}
@media(max-height:520px){.monthsary-heart{width:min(43vh,44vw,310px);top:8%}.monthsary-copy{top:61%}}
@media(prefers-reduced-motion:reduce){.monthsary-envelope,.monthsary-light-burst:before,.monthsary-light-burst i,.monthsary-stars i,.monthsary-heart path,.monthsary-heart circle,.monthsary-burst,.monthsary-copy,.monthsary-extra{animation:none!important;transition:none!important}.monthsary-heart{opacity:1}.monthsary-heart path{stroke-dashoffset:0}.monthsary-heart circle,.monthsary-stars i{opacity:.8}.monthsary-copy{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.scene-exit,.world-actor,.pixel-sprite,.pixel-sprite:before,.pixel-sprite:after,.room-mote,.cake-visual,.cake-flame,.physical-prop,.paper-secret,.password-reveal:after,.password-panel.is-wrong,.memory-album,.memory-album-cover{animation:none!important}.memory-album-cover{display:none}.secret-note-letter{opacity:1;transform:none}.secret-note-confetti{display:none}.world-hotspot,.world-overlay,.world-art,.birthday-world,.time-of-day-sky-wash,.weather-sky-wash{transition:none!important}.environment-fliers *{animation:none!important;transition:none!important}.environment-fliers .pixel-rain{display:none!important}.environment-fliers .bird,.environment-fliers .butterfly,.environment-fliers .firefly{transform:none}.birthday-world[data-time-of-day="morning"] .bird-one,.birthday-world[data-time-of-day="morning"] .bird-two,.birthday-world[data-time-of-day="afternoon"] .bird-one,.birthday-world[data-time-of-day="afternoon"] .bird-two,.birthday-world[data-time-of-day="afternoon"] .bird-three,.birthday-world[data-time-of-day="evening"] .bird-one{opacity:.75}.birthday-world[data-time-of-day="afternoon"] .butterfly,.birthday-world[data-time-of-day="night"] .firefly{opacity:.65}.world-paused *{animation:none!important}}

/* Outdoor cat placement keeps the garden actors clear of one another on phones. */
@media (max-width: 650px) and (orientation: portrait) {
  .cat-candy { left: 27%; top: 65%; width: 8.2%; }
  .cat-chaech { left: 67%; top: 66%; width: 8.2%; }
  .cat-gigi { left: 28%; top: 79%; width: 8.2%; }
  .cat-doding { left: 37%; top: 88%; width: 8.2%; }
  .cat-bopbop { left: 51%; top: 89%; width: 8.2%; }
  .cat-lucky { left: 62%; top: 81%; width: 8.2%; }
}
@media (max-width: 650px) and (orientation: landscape) {
  .garden-band { left: .2%; top: 86%; width: 16.3%; height: 13%; min-height: 44px; }
  .garden-cat { width: 17%; min-height: 44px; }
  .cat-candy { left: 2%; top: 68%; }
  .cat-gigi { left: 17%; top: 77%; }
  .cat-doding { left: 34%; top: 80%; }
  .cat-bopbop { left: 51%; top: 80%; }
  .cat-lucky { left: 68%; top: 77%; }
  .cat-chaech { left: 83%; top: 68%; }
}
@media (prefers-reduced-motion: reduce) and (pointer: fine) {
  .garden-cat, .garden-cat * { animation: none !important; transition: none !important; }
  .garden-cat.is-noticed .cat-hearts,
  .garden-cat.is-noticed .cat-name-pop,
  .garden-cat.is-noticed .cat-reaction { opacity: 1; }
  .garden-cat.is-noticed .cat-eye-open { display: none; }
  .garden-cat.is-noticed .cat-eye-closed { display: block; }
}

@media (max-width: 650px) {
  .cat-caption h2 { font-size: .9rem; }
  .cat-caption p { font-size: .9rem; line-height: 1.3; }
}
