:root{--night:#101d3a;--ocean:#294f83;--blue:#95bcec;--ivory:#f3f0e8;--gold:#e6c98b;--muted:#b0bfd1;--line:rgba(191,211,232,.19);color-scheme:dark;font-family:Arial,Helvetica,sans-serif;font-synthesis:none}*{box-sizing:border-box}body{margin:0;background:#101d3a;color:var(--ivory);font-size:15px;line-height:1.6;overflow-x:clip}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default;opacity:.35}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--gold);outline-offset:5px}button{touch-action:manipulation}button:active{filter:brightness(1.17)}[hidden]{display:none!important}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:Georgia,'Times New Roman',serif;font-weight:400}em{font-weight:400;color:#c4d7ee}button{border:0}button span{pointer-events:none}.universe{position:fixed;inset:0;z-index:-1;background:radial-gradient(ellipse at 52% 36%,#2b456a 0,transparent 50%),linear-gradient(#101b34,#1a3251 65%,#102832);overflow:hidden}.sky-stars,.fireflies{position:absolute;inset:0}.sky-stars i{position:absolute;width:2px;height:2px;border-radius:50%;background:#e7edf3;opacity:var(--opacity);box-shadow:0 0 5px #d5e6ff;animation:twinkle var(--duration) ease-in-out infinite alternate;animation-delay:var(--delay)}.sky-stars i:nth-child(5n){width:3px;height:3px}.moon{position:absolute;top:17%;right:16%;width:79px;height:79px;border-radius:50%;background:#e9e7d8;box-shadow:0 0 38px #c8d7e132,0 0 115px #c8d7e11c;opacity:.85}.moon:after{content:'';position:absolute;inset:-2px 15px 7px -10px;border-radius:50%;background:#213652}.moon-haze{position:absolute;width:470px;height:130px;right:3%;top:22%;background:radial-gradient(ellipse,#97b6cd15,transparent 70%);transform:rotate(-10deg)}.landscape{position:absolute;bottom:0;width:100%;height:min(82vh,830px);opacity:.87}.vignette{position:absolute;inset:0;background:linear-gradient(90deg,#0b152438,transparent 30%,transparent 75%,#0b152438),linear-gradient(transparent 68%,#091b2b55)}.fireflies i{position:absolute;width:3px;height:3px;background:#e6dba6;border-radius:50%;box-shadow:0 0 12px 3px #dcd69355;animation:firefly 7s infinite alternate ease-in-out;animation-delay:var(--delay)}.app-shell{min-height:100svh;max-width:1560px;margin:auto;padding:0 max(32px,env(safe-area-inset-left)) 0 max(32px,env(safe-area-inset-right));display:flex;flex-direction:column}.site-header{display:flex;align-items:center;justify-content:space-between;height:92px;flex-shrink:0;border-bottom:1px solid var(--line)}.wordmark{display:flex;align-items:center;gap:13px;font-family:Georgia,serif;font-size:20px;letter-spacing:.4px}.brand-star{font-size:35px;color:var(--gold)}.wordmark i{font-size:17px;font-weight:400}.header-right{display:flex;align-items:center;gap:22px}.birthday-date{font-size:10px;letter-spacing:2.2px;color:#c6d0dc}.icon-button{width:44px;height:44px;display:inline-grid;place-items:center;border:1px solid var(--line);border-radius:50%;background:#13284255;font-size:21px;flex-shrink:0}.icon-button:hover{background:#95bcec21}.journey-progress{display:flex;align-items:center;justify-content:center;gap:0;padding:25px 0 5px;min-height:65px}.progress-dot{width:48px;height:44px;background:none;position:relative;display:grid;place-items:center;color:#9aacc0;font-size:9px;letter-spacing:.7px}.progress-dot:before{content:'';position:absolute;top:4px;width:5px;height:5px;border-radius:50%;background:#5c718a}.progress-dot:after{content:'';position:absolute;width:33px;height:1px;background:#62789250;left:32px;top:6px}.progress-dot:last-child:after{display:none}.progress-dot.active{color:var(--gold)}.progress-dot.active:before{background:var(--gold);box-shadow:0 0 11px #f3dba5}.progress-dot.visited:before{background:#b8cee8}.progress-dot:disabled{opacity:.4}main{flex:1;min-width:0;position:relative}.scene{max-width:1000px;margin:0 auto;min-height:calc(100svh - 232px);display:flex;flex-direction:column;align-items:center;padding:20px 0 18px;animation:sceneIn .65s ease both}.scene-heading{text-align:center;max-width:680px;position:relative;z-index:1}.eyebrow{font-size:9px;letter-spacing:2.7px;color:var(--gold);text-transform:uppercase;margin-bottom:14px;line-height:1.9}h1{font-size:clamp(38px,4.8vw,64px);line-height:1.2}h1 em{font-size:1.5em;line-height:1.14;display:inline-block;margin:5px 0 9px}.title-spark{font-size:26px;position:absolute;color:var(--gold);transform:rotate(12deg);margin:5px 0 0 16px}h2{font-size:clamp(35px,4.8vw,57px);line-height:1.2;margin-bottom:16px}h3{font-size:30px}.scene-heading>p:not(.eyebrow){font-size:13px;color:#c0cbd7;max-width:510px;margin:0 auto;line-height:1.8}.welcome-heading .intro{max-width:340px!important}.welcome-world{height:300px;width:min(100%,700px);position:relative;flex:1;min-height:280px;max-height:365px}.star-thread{position:absolute;height:70px;width:1px;left:45%;top:0;background:linear-gradient(transparent,#d5bd8560)}.main-star{position:absolute;left:calc(45% - 58px);top:48px;width:116px;height:116px;background:none;color:#f0dcb0;z-index:2;filter:drop-shadow(0 0 18px #efca7660);transition:transform .25s}.main-star span{font-size:105px;line-height:1;display:inline-block;animation:mainStar 4s ease-in-out infinite}.main-star:before,.main-star:after{content:'';position:absolute;inset:10px;border-radius:50%;border:1px solid #d5bd8526;transform:rotate(20deg)}.main-star:after{inset:-8px;border:1px dashed #d5bd851c}.main-star:hover{transform:scale(1.08)}.star-label{position:absolute;top:169px;left:calc(45% - 65px);width:130px;text-align:center;letter-spacing:1px;font-size:10px;color:#e0d6c1}.little-star{position:absolute;background:none;width:48px;height:48px;color:#becde0;font-size:28px;transition:transform .2s}.little-star:hover,.little-star.touched{color:var(--gold);transform:scale(1.2);text-shadow:0 0 20px #ffe6b5}.s1{left:13%;top:92px}.s2{right:12%;top:15px;font-size:20px}.s3{left:28%;bottom:12px;font-size:22px}.welcome-note{position:absolute;left:10%;bottom:39px;font:15px/1.7 Georgia,serif;color:#c9d5de;transform:rotate(-5deg)}.welcome-note:before{content:'';display:block;width:35px;height:1px;background:#c9d5de5c;margin-bottom:10px}.fox-place{position:relative;flex-shrink:0}.welcome-fox{position:absolute;width:250px;height:280px;right:8%;bottom:-22px}.fox-companion{width:100%;height:100%;position:relative;isolation:isolate}.fox-companion:after{content:'';position:absolute;left:15%;right:15%;height:12%;bottom:4%;border-radius:50%;background:radial-gradient(ellipse,#96b5c53b,transparent 65%);z-index:-1}#foxCanvas{width:100%;height:100%}#foxCanvas canvas{width:100%;height:100%;display:block;touch-action:pan-y}.fox-load{position:absolute;inset:50% 0 auto;text-align:center;color:#bdcddd;font-size:10px}.fox-fallback{background:none;padding:0;position:absolute;inset:0;width:100%;height:100%}.fox-fallback img{width:100%;height:100%;object-fit:contain}.scene-actions{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:16px;margin-top:12px;position:relative;z-index:2}.primary{min-height:48px;min-width:200px;padding:12px 23px;background:var(--ivory);color:#1d3550;border:1px solid #fff7df73;border-radius:3px;font-size:12px;letter-spacing:.2px;display:inline-flex;align-items:center;justify-content:center;gap:28px;box-shadow:0 4px 20px #05152820;transition:background .2s,transform .2s}.primary:hover{background:#e0e9f2;transform:translateY(-2px)}.primary>span:last-child{font-size:19px}.text-button{min-height:44px;padding:8px 12px;background:none;font-size:11px;letter-spacing:.25px;color:#cad9e7}.text-button:hover{color:var(--gold)}.site-footer{display:flex;align-items:center;justify-content:space-between;gap:15px;min-height:74px;border-top:1px solid var(--line);font-size:9px;letter-spacing:1.5px;color:#abbccd;position:relative}.footer-note{font-family:Georgia,serif;font-style:italic;letter-spacing:.6px;font-size:12px}.back-button{padding-left:0}.site-footer:not(:has(.back-button:not([hidden]))) #chapterLabel{margin-right:auto}.guide{display:flex;align-items:center;justify-content:center;gap:12px;max-width:480px;min-height:112px;margin-top:0}.guide .fox-place{width:110px;height:115px}.guide p{font-size:12px;line-height:1.8;max-width:280px;color:#d0dce5;position:relative;padding-left:18px;border-left:1px solid #95bcec45}.quiet-guide{margin-top:0;min-height:94px}.quiet-guide .fox-place{width:93px;height:97px}.garden-world{position:relative;width:100%;height:300px;max-width:810px;margin-top:8px}.garden-art{position:absolute;width:100%;height:100%;inset:0}.garden-object{position:absolute;display:grid;place-items:center;background:none;min-width:56px;min-height:56px;color:#e8d29f}.tree-object{left:17%;top:11%}.flower-object{left:34%;top:58%}.lake-object{left:72%;top:67%}.object-light{font-size:33px;text-shadow:0 0 16px #f0d392b0;transition:transform .3s}.bloom{font-size:46px;color:#bad6ef;text-shadow:0 0 19px #aecfff8a;display:inline-block;transition:transform .9s,color .9s}.garden-object.found .object-light{color:#f4e5bf;transform:translateY(-12px) scale(.8)}.garden-object.found .bloom{transform:rotate(90deg) scale(1.3);color:var(--gold)}.garden-object.found:after{content:'✦';position:absolute;top:-4px;font-size:15px;color:var(--gold);animation:sceneIn .5s both}.garden-object.hinted{filter:drop-shadow(0 0 14px #ffdda0);animation:hintPulse .65s 4}.ripple{position:absolute;inset:17px 0 10px;border-radius:50%;border:1px solid #b2d8ec55}.lake-object.found .ripple{animation:ripple 1.8s ease-out 3}.garden-constellation{position:absolute;top:8%;left:50%;transform:translateX(-50%);color:var(--gold);font-size:30px;white-space:nowrap;animation:sceneIn .9s both}.garden-constellation span{font-size:12px;opacity:.5;vertical-align:middle}.collection-row{display:flex;align-items:center;justify-content:center;gap:24px;flex-wrap:wrap;margin-top:4px}.counter{font-size:10px;letter-spacing:1px;color:#e5d7b9}.memory-lights{display:flex;justify-content:space-around;width:85%;height:26px;margin-top:20px;border-top:1px solid #e0c58c38;transform:rotate(-2deg);color:#e6c98b;font-size:18px}.memory-lights span{position:relative;top:-9px;text-shadow:0 0 10px #e6c98b9c}.memory-track{display:flex;gap:25px;width:100%;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:20px 35px 24px;align-items:flex-start;min-height:292px;overscroll-behavior-x:contain}.memory-track::-webkit-scrollbar{display:none}.memory-card{scroll-snap-align:center;flex:0 0 210px;padding:11px 11px 16px;background:#efede5;border-radius:1px;box-shadow:0 12px 32px #04122055;transform:rotate(-4deg);color:#324357;position:relative;transition:transform .25s}.memory-card:nth-child(2n){transform:rotate(4deg)}.memory-card:nth-child(3n){transform:rotate(-2deg)}.memory-card:hover{transform:rotate(0) translateY(-3px)}.memory-picture{width:100%;height:194px;background:#c3d1de;display:grid;place-items:center;overflow:hidden}.memory-picture img{width:100%;height:100%;object-fit:contain}.memory-card h3{font-size:15px;text-align:center;padding:12px 0 3px;font-style:italic}.memory-card .photo-number{position:absolute;right:12px;bottom:5px;font-size:8px;letter-spacing:1px;opacity:.5}.empty-photo{width:100%;height:100%;min-height:180px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:10px;background:linear-gradient(145deg,#9db4c6,#586f8c);color:#ecf1f4;border:1px solid #c5d1df33}.empty-photo .placeholder-star{font:48px Georgia,serif;opacity:.75}.empty-photo small{font-size:9px;letter-spacing:1px;text-transform:uppercase;opacity:.85}.memory-card:nth-child(2n) .empty-photo{background:linear-gradient(145deg,#9cabb4,#4f6275)}.gallery-controls{display:flex;align-items:center;gap:20px;color:#c8d6e4;font-size:10px;letter-spacing:1px}.gallery-controls .icon-button{background:transparent;width:44px;height:44px;font-size:17px}.letter-stage{position:relative;min-height:280px;width:100%;display:flex;align-items:center;justify-content:center;flex-direction:column}.letter-orbit{position:absolute;top:28px;left:24%;color:#e6c98b99;font-size:28px;transform:rotate(-10deg)}.envelope{width:274px;height:173px;position:relative;background:none;filter:drop-shadow(0 24px 29px #08142166);margin:45px 0 25px;perspective:700px;transition:transform .4s;transform:rotate(-4deg)}.envelope:hover{transform:rotate(0) translateY(-4px)}.envelope-back{position:absolute;inset:0;background:#e4dfd0;border-radius:4px}.envelope-paper{position:absolute;inset:8px 12px 12px;background:#faf7ed;transform:translateY(0);transition:transform .65s .2s}.envelope-front{position:absolute;inset:0;background:linear-gradient(33deg,#ece7db 49.7%,transparent 50%),linear-gradient(-33deg,#e7e1d3 49.7%,transparent 50%);border-radius:4px}.envelope-flap{position:absolute;left:0;right:0;top:0;height:98px;clip-path:polygon(0 0,100% 0,50% 100%);background:#f3eee3;transform-origin:top;transition:transform .5s;z-index:2}.envelope-name{position:absolute;left:25px;bottom:20px;font:italic 21px Georgia,serif;color:#536c87;z-index:3}.envelope-seal{position:absolute;left:calc(50% - 20px);top:77px;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:#8caed2;color:#eaf1f6;font-size:24px;box-shadow:0 2px 3px #24364c22;z-index:4;transition:opacity .3s}.envelope.opening .envelope-flap{transform:rotateX(180deg);z-index:0}.envelope.opening .envelope-seal{opacity:0}.envelope.opening .envelope-paper{transform:translateY(-60px)}.object-instruction{font-size:10px;letter-spacing:1px;color:#c6d4de}.game-counter{margin-top:24px}.game-field{width:100%;height:260px;position:relative;max-width:650px;margin-top:5px;isolation:isolate}.catch-star{position:absolute;width:68px;height:68px;background:none;color:#e8d4a5;font-size:49px;filter:drop-shadow(0 0 13px #e6c98b4d);animation:floatStar 6s ease-in-out infinite alternate;animation-delay:var(--delay);transition:opacity .45s,filter .2s;z-index:1}.catch-star:hover{filter:drop-shadow(0 0 20px #ffe09b99)}.catch-star.collected{opacity:.3;animation:none;transform:scale(.65);pointer-events:none}.game-lines{position:absolute;inset:0;width:100%;height:100%;color:#e6c98b;opacity:.6;pointer-events:none}.game-success{font:italic 20px Georgia,serif;color:#e5d7b9;text-align:center;min-height:32px}.cake-stage{width:100%;height:295px;position:relative;display:grid;place-items:end center;padding-bottom:15px;margin-top:8px;max-width:540px}.cake-halo{position:absolute;inset:10px 30px;background:radial-gradient(ellipse,#e5ce9026,transparent 68%)}.cake{width:240px;height:210px;position:relative;isolation:isolate}.cake-top{position:absolute;top:78px;left:8px;width:224px;height:58px;border-radius:50%;background:radial-gradient(ellipse at 40% 35%,#faf5e7,#d3e4ef 75%);border:1px solid #eaf1f5;z-index:3;box-shadow:inset 0 -4px 10px #6685a033}.cake-body{position:absolute;top:105px;left:8px;width:224px;height:99px;border-radius:0 0 50% 50% / 0 0 25% 25%;background:linear-gradient(90deg,#6386ac,#b8d2e6 35%,#9ebdd7 68%,#6486aa);box-shadow:inset 0 -8px 15px #2b4b7438;z-index:2;overflow:hidden}.icing{position:absolute;top:-10px;left:0;width:100%;height:37px;background:linear-gradient(90deg,#dddcd0,#f5efdf 45%,#d8dedb);border-radius:0 0 48% 48%}.icing:after{content:'';position:absolute;top:10px;left:32px;width:13px;height:36px;background:#eeebdc;border-radius:0 0 12px 12px;box-shadow:65px -5px 0 -3px #eeebdc,125px -3px 0 1px #e8e8dc}.cake-stars{position:absolute;top:32px;left:0;right:0;color:#f7edcd;font-size:27px;text-align:center;text-shadow:0 1px 2px #526e8266}.cake-ribbon{position:absolute;bottom:10px;left:0;right:0;height:10px;border-bottom:3px solid #5f83ab;border-radius:50%;opacity:.7}.cake-plate{position:absolute;bottom:-9px;left:-23px;width:286px;height:44px;border-radius:50%;background:linear-gradient(#f2eee0,#a2b8c9);z-index:1;box-shadow:0 15px 26px #0b19283d;border-bottom:6px solid #7895af}.candles{position:absolute;top:3px;left:65px;display:flex;gap:10px;z-index:4}.candle{position:relative;font:bold 73px Georgia,serif;color:#d6e5f2;-webkit-text-stroke:1px #f4f0dd;line-height:1;text-shadow:2px 2px 0 #7298ba,3px 4px 0 #7298ba;display:block}.flame{position:absolute;top:-20px;left:calc(50% - 5px);width:11px;height:23px;border-radius:50% 50% 50% 50% / 65% 65% 35% 35%;background:radial-gradient(ellipse at 50% 75%,#fffdeb 15%,#f7d48a 45%,#e7aa59 80%);box-shadow:0 0 16px 7px #fbd88e38;transform-origin:bottom;animation:flicker 1.6s infinite alternate}.flame:after{content:'';position:absolute;width:2px;height:5px;background:#56524c;bottom:-5px;left:4px}.candles .candle:nth-child(2) .flame{animation-delay:-.7s}.smoke{position:absolute;left:50%;top:-24px;width:11px;height:40px;border-radius:50%;opacity:0;background:linear-gradient(transparent,#d5d5d478);filter:blur(4px)}.cake-stage.blown .flame{display:none}.cake-stage.blown .smoke{animation:smoke 2s ease-out both}.cake-stage.blowing .flame{animation:flicker .12s infinite alternate;transform:rotate(-25deg) scale(.8)}.wish-lights{position:absolute;inset:0;pointer-events:none}.wish-lights i{position:absolute;width:3px;height:3px;border-radius:50%;background:#d6c896;left:var(--x);top:var(--y);box-shadow:0 0 10px #e6c98b88;opacity:.7}.cake-stage.blown .wish-lights i{animation:wishRise 2.5s ease-out both;animation-delay:var(--delay)}.wish-controls{display:flex;flex-direction:column;align-items:center;margin-top:15px}.hold-button{position:relative;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;min-width:240px}.hold-fill{position:absolute;inset:0;right:auto;width:0;background:#9dbbd1;opacity:.65}.hold-label{position:relative;font-size:12px!important}.wish-result{max-width:520px;text-align:center;margin-top:15px}.wish-result p{font-size:12px;color:#d5dde5;line-height:1.8}.wish-result strong{display:block;font:italic 24px Georgia,serif;color:#e6d2a4;margin:14px 0 5px}.gift-stage{height:285px;position:relative;width:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;max-width:480px;isolation:isolate}.gift-glow{position:absolute;inset:30px 0;background:radial-gradient(ellipse,#d6c08b15,transparent 68%);transition:opacity .8s;opacity:.5}.gift{width:180px;height:190px;background:none;position:relative;filter:drop-shadow(0 16px 20px #08162766);margin-top:40px;transition:transform .3s}.gift:hover{transform:translateY(-4px) rotate(-2deg)}.gift-box{position:absolute;left:15px;right:15px;bottom:20px;height:115px;background:linear-gradient(100deg,#28486c,#375e87 48%,#182f52);border:1px solid #7295b855;border-radius:2px 2px 5px 5px;box-shadow:inset 0 -10px 22px #07152e45}.gift-lid{position:absolute;left:8px;right:8px;bottom:118px;height:25px;background:linear-gradient(100deg,#41688c,#537ea2 45%,#243e65);border:1px solid #9fbad155;border-radius:3px;z-index:3;transition:transform .8s,opacity .8s;transform-origin:20% 50%}.gift-ribbon{position:absolute;bottom:21px;left:calc(50% - 10px);width:20px;height:121px;background:linear-gradient(90deg,#b8c7d1,#d8e2e6,#aebfcb);z-index:4;transition:opacity .4s}.gift-bow{position:absolute;bottom:143px;left:calc(50% - 3px);width:6px;height:12px;background:#c9d7df;z-index:3;transition:transform .8s,opacity .6s}.gift-bow:before,.gift-bow:after{content:'';position:absolute;bottom:0;width:43px;height:27px;border:6px solid #c6d6e0;border-radius:50% 50% 5% 50%;left:-41px;transform:rotate(18deg)}.gift-bow:after{left:0;transform:scaleX(-1) rotate(18deg)}.gift-tag{position:absolute;left:98px;bottom:60px;background:#eee9db;font:italic 12px Georgia,serif;color:#344d6c;padding:7px 12px;transform:rotate(-10deg);z-index:5;border-radius:1px}.gift-stage.opened .gift-lid{transform:translate(-25px,-80px) rotate(-20deg);opacity:.3}.gift-stage.opened .gift-bow{transform:translate(-25px,-80px) rotate(-20deg);opacity:.3}.gift-stage.opened .gift-ribbon{opacity:0}.gift-stage.opened .gift-glow{opacity:1;background:radial-gradient(ellipse,#e7d29c44,transparent 70%)}.gift-stage.opened{height:210px}.gift-stage.opened .object-instruction{display:none}.final-message{text-align:center;max-width:530px;padding:16px 20px 4px;animation:sceneIn .8s ease both}.final-message h3{font-style:italic;color:#dfd0ad;margin-bottom:15px}.final-message p:not(.eyebrow){font-size:13px;color:#cdd9e4;line-height:1.9;white-space:pre-line}.final-closing{font-style:italic;font-family:Georgia,serif;margin-top:16px}.final-message img,.final-message video{max-width:100%;max-height:350px;object-fit:contain;margin:15px 0}.final-actions{flex-direction:column;gap:3px}.toast{position:fixed;bottom:calc(34px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:max-content;max-width:calc(100vw - 36px);z-index:60;background:#eae8de;color:#243c55;border:1px solid #f4eedc80;box-shadow:0 6px 35px #05132670;padding:14px 23px;border-radius:4px;text-align:center;font-size:12px;line-height:1.7;animation:toastIn .3s ease both;pointer-events:none}.burst{position:fixed;pointer-events:none;z-index:70;color:var(--gold);font-size:15px;animation:burst .75s ease-out both;left:var(--left);top:var(--top)}.transition-overlay{position:fixed;inset:0;z-index:80;background:#11223eeb;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:30px}.transition-overlay>p{font:30px/1.5 Georgia,serif;text-align:center;color:var(--ivory)}.transition-overlay .text-button{margin-top:20px}#twentyDots{width:240px;height:135px;position:relative}#twentyDots i{position:absolute;left:var(--x);top:var(--y);width:7px;height:7px;background:#e6c98b;border-radius:50%;box-shadow:0 0 12px 2px #e6c98b55;animation:dotIn .6s ease-out both;animation-delay:var(--delay)}dialog{border:1px solid #b0c8df3b;background:#132842;color:var(--ivory);padding:0;border-radius:6px;box-shadow:0 22px 90px #030c20b3;max-width:calc(100vw - 32px)}dialog::backdrop{background:#061327ca;backdrop-filter:blur(7px)}.small-dialog{width:460px;text-align:center;padding:30px 30px;max-height:88svh;overflow-y:auto}.small-dialog h2{margin:10px 0 16px;font-size:38px}.small-dialog>p:not(.eyebrow){font-size:12px;color:#bfcddd;margin:10px 0 27px}.small-dialog>.primary{width:100%;margin:8px 0}.small-dialog>.text-button{display:block;margin:auto}.dialog-toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:13px 20px;border-bottom:1px solid #29435b27;font-size:9px;letter-spacing:1.8px;flex-shrink:0}.dialog-toolbar .icon-button{border-color:currentColor;background:none;width:44px;height:44px;font-size:26px}.letter-dialog{width:650px;background:#f3f0e8;color:#34475c;max-height:87svh}.letter-dialog[open]{display:flex;flex-direction:column}.letter-scroll{overflow-y:auto;overscroll-behavior:contain;padding:25px 40px 20px;min-height:160px;font:16px/1.95 Georgia,serif}.letter-salutation{font-style:italic;font-size:27px;margin-bottom:22px}.letter-scroll p{margin-bottom:20px;white-space:pre-line}.letter-scroll p.placeholder-copy{color:#788493;font-style:italic}.letter-signature{font-style:italic;text-align:right;padding-top:10px}.letter-bottom{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:4px 14px;border-top:1px solid #29435b27}.letter-bottom .text-button{color:#46627c;font-size:10px}.letter-scroll .reveal-paragraph{animation:letterReveal .55s ease both}.photo-dialog{width:720px;padding-bottom:20px;max-height:92svh;text-align:center}.photo-display{height:min(52svh,490px);margin:20px 28px 10px;display:grid;place-items:center;overflow:hidden}.photo-display img{width:100%;height:100%;object-fit:contain}.photo-display .empty-photo{max-width:400px;height:100%}.photo-dialog h3{font-size:23px;margin:15px 20px 7px}.photo-dialog>p{font-size:12px;max-width:500px;margin:0 auto;padding:0 24px;color:#bccbdd;line-height:1.8;white-space:pre-line}.photo-nav{display:flex;justify-content:center;gap:22px;margin-top:18px}#chapterList{text-align:left}#chapterList button{display:flex;align-items:center;gap:20px;background:none;padding:13px 5px;min-height:48px;width:100%;border-bottom:1px solid var(--line);font:16px Georgia,serif}#chapterList button span{font:9px Arial,sans-serif;color:var(--gold)}.skip-link{position:fixed;top:-80px;left:15px;background:var(--ivory);color:var(--night);padding:10px;z-index:100}.skip-link:focus{top:12px}.noscript{position:fixed;inset:30%;background:#132842;padding:30px;z-index:100}body.modal-open{overflow:hidden}.scene-switching{pointer-events:none}.confetti-star{position:fixed;pointer-events:none;font-size:16px;color:#e6c98b;z-index:45;top:var(--top);left:var(--left);animation:celebration 2.8s ease-out both;animation-delay:var(--delay)}
@keyframes sceneIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes twinkle{to{opacity:.2}}@keyframes firefly{to{transform:translate(15px,-32px);opacity:.15}}@keyframes mainStar{50%{transform:scale(.94);opacity:.83}}@keyframes floatStar{to{transform:translate(10px,-13px) rotate(9deg)}}@keyframes hintPulse{50%{transform:scale(1.2)}}@keyframes ripple{from{transform:scale(.4);opacity:1}to{transform:scale(2.3);opacity:0}}@keyframes flicker{to{transform:rotate(8deg) scale(.93,1.07)}}@keyframes smoke{15%{opacity:.5}to{opacity:0;transform:translate(10px,-70px) scale(2,.6)}}@keyframes wishRise{to{transform:translateY(-200px);opacity:0}}@keyframes toastIn{from{opacity:0;bottom:15px}to{opacity:1}}@keyframes burst{to{transform:translate(var(--dx),var(--dy)) scale(0);opacity:0}}@keyframes dotIn{from{opacity:0;transform:scale(.2) translate(10px,20px)}to{opacity:1;transform:none}}@keyframes letterReveal{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}@keyframes celebration{to{opacity:0;transform:translate(var(--dx),-170px) rotate(80deg)}}
@media(min-width:1200px){.app-shell{padding:0 65px}.welcome-world{min-height:310px}.welcome-heading{margin-top:4px}.landscape{height:87vh}.scene{padding-top:30px}.welcome-fox{right:5%;width:280px;height:310px;bottom:-25px}}
@media(max-width:700px){.app-shell{padding:0 max(19px,env(safe-area-inset-left)) 0 max(19px,env(safe-area-inset-right))}.site-header{height:73px}.wordmark{gap:8px;font-size:16px}.wordmark i{font-size:14px}.brand-star{font-size:29px}.birthday-date{font-size:8px;letter-spacing:1px}.header-right{gap:8px}.journey-progress{min-height:61px;padding:15px 0 4px}.progress-dot{width:37px;height:40px;font-size:8px}.progress-dot:after{width:23px;left:26px}.scene{min-height:calc(100svh - 205px);padding:16px 0 22px}.eyebrow{font-size:8px;letter-spacing:1.8px;margin-bottom:13px}h1{font-size:37px}h1 em{font-size:1.65em;line-height:1.05;margin:10px 0 13px}h2{font-size:38px;line-height:1.13}.scene-heading>p:not(.eyebrow){font-size:12px;max-width:310px}.welcome-heading .intro{max-width:260px!important}.title-spark{font-size:22px;margin-left:7px}.welcome-world{min-height:275px;max-height:360px;width:100%;margin-top:8px}.main-star{left:calc(40% - 48px);width:96px;height:96px;top:38px}.main-star span{font-size:90px}.star-thread{left:40%;height:58px}.star-label{left:calc(40% - 65px);top:145px;font-size:9px}.welcome-fox{width:210px;height:240px;right:-6px;bottom:-14px}.s1{left:3%;top:58px;font-size:23px}.s2{right:5%;top:6px}.s3{left:16%;bottom:17px;font-size:19px}.welcome-note{font-size:12px;left:5%;bottom:49px;line-height:1.8}.primary{min-width:190px;font-size:11px;gap:20px}.scene-actions{gap:8px;margin-top:8px;max-width:100%}.site-footer{min-height:70px;font-size:8px;letter-spacing:.8px;padding-bottom:env(safe-area-inset-bottom)}.footer-note{font-size:10px;max-width:105px;text-align:right}.moon{right:9%;top:18%;width:53px;height:53px;opacity:.45}.landscape{width:180%;left:-40%;height:80vh;opacity:.75}.garden-world{height:245px;margin:7px -10px 0;width:calc(100% + 20px)}.garden-art{object-fit:cover}.tree-object{left:10%;top:9%}.flower-object{left:30%;top:54%}.lake-object{left:70%;top:62%}.garden-art{width:100%;height:100%}.collection-row{gap:5px;margin-top:0}.counter{font-size:9px}.guide{gap:6px;min-height:105px;width:100%}.guide p{font-size:11px;max-width:220px;padding-left:12px}.guide .fox-place{width:95px;height:108px}.memory-track{gap:20px;min-height:282px;padding-left:40px;padding-right:40px;width:calc(100% + 38px);max-width:calc(100vw - env(safe-area-inset-left) - env(safe-area-inset-right))}.memory-card{flex-basis:200px}.memory-picture{height:183px}.quiet-guide{min-height:95px}.quiet-guide .fox-place{width:82px;height:96px}.letter-stage{min-height:260px}.envelope{width:248px;height:160px}.envelope-flap{height:90px}.envelope-seal{top:70px}.letter-orbit{left:5%;top:25px}.game-field{height:255px;width:100%}.catch-star{width:60px;height:60px;font-size:44px}.game-success{font-size:18px;max-width:280px}.cake-stage{height:270px;padding-bottom:15px}.cake{transform:scale(.94)}.cake-stage .wish-lights{inset:0 0 0}.wish-controls{margin-top:10px}.wish-result{padding:0 8px}.wish-result strong{font-size:23px}.gift-stage{height:265px}.final-message{padding:15px 0 4px}.final-message p:not(.eyebrow){font-size:12px}.final-actions .primary{font-size:10px;gap:10px}.letter-scroll{padding:22px 23px 10px;font-size:15px;line-height:1.9}.letter-dialog{max-height:89svh}.letter-salutation{font-size:25px}.dialog-toolbar{padding:9px 16px}.letter-bottom{padding:5px 12px}.letter-bottom .text-button{font-size:9px;padding:8px 5px}.small-dialog{padding:24px 20px}.small-dialog h2{font-size:34px}.photo-display{margin:12px 14px 10px;height:48svh}.small-dialog .dialog-toolbar{padding:0 0 10px}.toast{bottom:calc(20px + env(safe-area-inset-bottom));font-size:11px;padding:13px 18px}.transition-overlay>p{font-size:27px}.garden-constellation{font-size:24px;left:53%}.garden-constellation span{font-size:9px}}
@media(max-width:359px){.birthday-date{font-size:7px;max-width:69px;text-align:right}.wordmark{font-size:14px}.wordmark i{font-size:12px}.brand-star{font-size:25px}.scene-heading h1{font-size:32px}.eyebrow{font-size:7px;letter-spacing:1.3px}.scene-heading h2{font-size:33px}.welcome-fox{width:190px;height:215px;bottom:-4px;right:-15px}.main-star{left:calc(38% - 43px);width:86px;height:86px}.star-thread{left:38%}.star-label{left:calc(38% - 65px);top:137px}.welcome-world{min-height:260px}.guide .fox-place{width:81px;height:98px}.guide p{max-width:175px;font-size:10px}.final-actions .primary{padding:12px 14px;gap:8px}.site-footer{gap:7px}.footer-note{max-width:83px;font-size:9px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.catch-star{animation:none}.fireflies{display:none}.sky-stars i{animation:none}.toast{animation:none}.envelope.opening .envelope-paper{transform:none}}
.fox-fallback img.greet{animation:fallbackGreet .8s ease-in-out both}@keyframes fallbackGreet{35%{transform:rotate(-4deg)}70%{transform:rotate(3deg)}to{transform:none}}
.wordmark{min-height:44px}.star-label{z-index:3}@media(max-width:700px){.journey-progress{margin-inline:-19px}.progress-dot{width:44px;height:44px}.progress-dot:after{left:29px;width:30px}}
html{scrollbar-width:thin;scrollbar-color:#49617b #101d3a}@media(max-width:700px){.progress-dot{flex:0 0 44px}}
.little-star{z-index:4}
/* November refinement: the sky becomes a place, with personal content tools. */
.universe{background:linear-gradient(180deg,#05132694,#081a3566 47%,#071426db),url('assets/starry-sky.jpg') center/cover no-repeat}.landscape,.moon,.moon-haze{display:none}.universe:after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 50% 40%,#84cfe233,transparent 65%);opacity:0;transition:opacity 1.2s}.universe.illuminated:after{opacity:1}.vignette{background:radial-gradient(ellipse at 50% 38%,#0b1c373d,transparent 60%),linear-gradient(0deg,#050f20a6,transparent 65%)}.site-header{border-bottom-color:#bad5ee35}.wordmark{font-size:19px}.wordmark i{font-size:18px;color:#b9d5ef}.edit-gift-button{min-height:44px;background:#b7d8f514;border:1px solid #bbd9f33d;padding:8px 13px;border-radius:3px;font-size:11px;white-space:nowrap}.edit-gift-button:hover{background:#b7d8f52a}.scene-heading>p:not(.eyebrow){color:#dfebf3;text-shadow:0 1px 12px #071327}.eyebrow{text-shadow:0 1px 12px #071327}.welcome-heading{max-width:820px}.welcome-heading h1{font-size:clamp(30px,3.9vw,49px);line-height:1.2}.welcome-heading h1 em.full-name{display:flex;justify-content:center;gap:17px;flex-wrap:wrap;font-size:clamp(48px,6.6vw,85px);margin:12px 0 6px;line-height:1.08}.name-word{font:inherit;line-height:1.15;background:none;color:#dcecff;min-height:44px;padding:0 2px;font-style:italic;text-shadow:0 0 35px #85c7f244;transition:color .4s,text-shadow .4s}.name-word:hover,.name-word.name-awake{color:#f7e4b3;text-shadow:0 0 28px #e6c98b88}.light-name.name-awake{color:#e1f6ff;text-shadow:0 0 15px #c3e8ff,0 0 48px #95bcec}.welcome-heading .name-meaning{font-size:11px!important;color:#e6d6b3!important;min-height:43px;max-width:520px!important;margin:7px auto 8px!important;line-height:1.8!important}.welcome-heading .intro{font-size:12px!important;max-width:350px!important}.title-spark{display:none}.welcome-world{margin-top:7px;min-height:280px}.welcome-fox{filter:drop-shadow(0 9px 15px #0515294d)}.primary{box-shadow:0 5px 25px #03112b45}.leading-light{position:fixed;color:#e6c98b;z-index:65;pointer-events:none;font-size:16px;animation:leadLight .95s ease-in-out both}.memory-picture .empty-photo{background:linear-gradient(145deg,#294f83,#6388ad);color:#e8f1fa}.memory-card:nth-child(2n) .empty-photo{background:linear-gradient(145deg,#34596d,#7490a7)}.memory-card{background:#f4f0e4}.memory-picture .empty-photo small{font-size:8px;letter-spacing:.65px}.gift-stage.opened .gift-lid{transform:translate(-25px,-49px) rotate(-14deg);opacity:.35}.gift-stage.opened .gift-bow{transform:translate(-25px,-49px) rotate(-14deg);opacity:.35}.gift-stage{margin-top:20px}.final-message h3{font-size:34px}.final-message{padding-top:10px}
.cake-stage{height:auto;min-height:0;max-width:650px;padding:0;margin:7px 0 0}.cake-v3{width:min(540px,100%);height:auto;aspect-ratio:720/700;position:relative;transform:none;isolation:isolate}.cake-art{position:relative;width:100%;height:100%;object-fit:contain;display:block;z-index:1;filter:drop-shadow(0 18px 35px #05142e45)}.cake-v3 .candles{top:25%;left:31%;gap:9px;z-index:4}.cake-v3 .candle{font-size:clamp(44px,8vw,78px);color:#d7eaf6;text-shadow:2px 2px 0 #5b95bb,3px 4px 0 #4d719d}.cake-v3 .flame{height:24px;top:-21px}.cake-halo{inset:20px 10px 0;background:radial-gradient(ellipse,#b5d6ea21,transparent 68%)}.wish-lights{z-index:5}.wish-controls{margin-top:8px}.scene[data-scene="5"] .guide{margin-top:5px}.scene[data-scene="5"] .scene-heading h2{margin-bottom:11px}
.game-field{height:290px;max-width:780px}.scorpio-map{height:100%;width:100%;display:block;overflow:visible;filter:drop-shadow(0 0 7px #95bcec66)}.scorpio-map line{stroke:#b6d3ef;stroke-width:1.6;stroke-dasharray:180;stroke-dashoffset:180;animation:constellationDraw 1.6s ease forwards;animation-delay:var(--delay)}.scorpio-map circle{fill:#e9f2fc;animation:constellationGlow 2s ease both;animation-delay:var(--delay)}.scorpio-map .antares{fill:#efbb93;filter:drop-shadow(0 0 7px #efa878)}.scorpio-prompt{position:relative;text-align:center;min-height:50px;width:100%;animation:sceneIn .8s both}.scorpio-prompt>span{font-size:8px;letter-spacing:2px;color:#d4e7f6}.scorpio-prompt small{display:block;font-size:10px;color:#e0d4b7;margin-top:5px}.scorpio-trigger{position:absolute;left:calc(50% - 33px);top:-198px;width:66px;height:66px;background:none;color:#f3dfab;font-size:53px;filter:drop-shadow(0 0 12px #e6c98b99);z-index:5;animation:mainStar 3s ease-in-out infinite}.scorpio-trigger:before{content:'';position:absolute;inset:0;border:1px solid #e6c98b66;border-radius:50%}.game-success{font-size:20px;margin-top:10px;color:#e9dbb8}.birthday-fireworks{position:fixed;inset:0;z-index:95;isolation:isolate;display:grid;place-items:center;padding:22px;background:radial-gradient(ellipse,#16304bcc,#06132aeb);overflow:auto}.birthday-fireworks canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.birthday-reveal{position:relative;text-align:center;max-width:650px;width:100%;padding:25px 0}.birthday-reveal h2{font-size:clamp(30px,4.5vw,48px);line-height:1.25;margin:0 0 10px}.birthday-reveal strong{display:block;font:normal clamp(130px,20vw,220px)/1.1 Georgia,serif;color:#e8d29d;text-shadow:0 0 60px #e6c98b42;margin:0 0 13px}.birthday-reveal>p:not(.eyebrow){font-size:12px;color:#cbdff0;margin:0 0 25px}.birthday-reveal>.text-button{display:block;margin:12px auto 0}.birthday-reveal>.primary{margin:auto}.birthday-fireworks:before{content:'';position:absolute;inset:20%;border:1px solid #e6c98b0f;border-radius:50%;z-index:-1}
.editor-dialog{width:980px;max-height:92svh;overflow:hidden;background:#f3f0e8;color:#29435c;color-scheme:light;border-color:#d9e3e6}.editor-dialog[open]{display:flex;flex-direction:column}.editor-dialog .dialog-toolbar{border-color:#26405523;padding:12px 22px}.editor-tabs{display:flex;justify-content:center;gap:6px;border-bottom:1px solid #26405523;padding:4px 15px;flex-shrink:0}.editor-tabs button{min-height:44px;background:none;padding:10px 20px;font-size:12px;color:#546b80;border-bottom:2px solid transparent}.editor-tabs button.active{color:#214666;border-bottom-color:#739ebf}.editor-scroll{overflow:auto;overscroll-behavior:contain;padding:25px 30px 20px;max-height:calc(92svh - 126px)}.editor-scroll section>h2{font-size:34px;line-height:1.2;margin:0 0 14px}.editor-scroll section>h2 em{color:#577e9d}.editor-scroll section>p{font-size:12px;color:#62758a;line-height:1.8;margin-bottom:20px}.editor-dialog label{display:block;font-size:11px;color:#46617b;margin:12px 0 6px}.editor-dialog input:not([type="range"]),.editor-dialog textarea{display:block;width:100%;max-width:100%;min-width:0;background:#fffdf7;border:1px solid #b8c6d1;color:#28445f;border-radius:3px;padding:11px 12px;font:13px/1.7 Arial,sans-serif;min-height:44px}.editor-dialog textarea{resize:vertical}.editor-dialog input[type="file"]{font-size:10px;line-height:1.5;padding:4px;min-height:46px;background:#e8edf0}.editor-dialog input[type="file"]::file-selector-button{border:0;border-right:1px solid #bacbd6;background:#d2e0ea;color:#2b4d66;min-height:38px;margin-right:8px;padding:6px 10px;font-size:10px}.editor-dialog .primary{background:#274e74;color:#f4f3e9;border-color:#315b83;box-shadow:none;margin-top:18px}.editor-dialog .primary:hover{background:#35628a}.editor-dialog .text-button{color:#426887;font-size:11px}.photo-fields{display:grid;grid-template-columns:1fr 1fr;gap:16px}.photo-field{display:grid;grid-template-columns:90px minmax(0,1fr);gap:14px;border:1px solid #a9becf70;border-radius:4px;padding:12px;background:#e8edf06b;min-width:0}.editor-photo-preview{height:115px;position:sticky;top:5px;min-width:0}.editor-photo-preview img{width:100%;height:100%;object-fit:contain;background:#e0e7ec}.editor-photo-preview .empty-photo{min-height:100%;height:100%;gap:8px}.editor-photo-preview .empty-photo .placeholder-star{font-size:32px}.editor-photo-preview .empty-photo small{font-size:7px;letter-spacing:0;text-align:center;padding:0 5px}.photo-field-form{min-width:0}.photo-field-form label:first-child{margin-top:0}.photo-field-form textarea{min-height:62px;font-size:12px}.editor-feedback{font-size:11px;line-height:1.8;color:#406c66;margin-top:10px;min-height:18px;overflow-wrap:anywhere}.storage-notice{font-size:10px;line-height:1.8;border-top:1px solid #a9becf70;padding-top:15px;margin-top:23px;color:#657a8c}.privacy-note{font-size:10px!important;max-width:560px;margin-top:17px!important}.music-card{display:flex;align-items:center;gap:17px;border:1px solid #a9becf88;background:#dde7ed;padding:16px;border-radius:4px}.music-card>span{font-size:35px;color:#5d85a5}.music-card>div{flex:1;min-width:0}.music-card strong{display:block;font-size:13px;color:#385d7b;overflow-wrap:anywhere}.music-card small{display:block;font-size:10px;color:#6a8295;margin-top:4px}.music-card .icon-button{border-color:#96aec0;background:#c3d7e4;color:#315574}.editor-dialog input[type="range"]{width:100%;min-height:44px;accent-color:#466f95}.gift-checklist{padding:12px 18px;border:1px solid #c0cdd4;background:#e6ecee;border-radius:3px;margin:8px 0}.gift-checklist p{font-size:12px;line-height:1.8;padding:5px 0}.gift-checklist .ready{color:#406861}.gift-checklist .pending{color:#886c40}.gift-mode .draft-control,.gift-mode #editGift{display:none!important}
@keyframes leadLight{0%{opacity:0;transform:scale(.3)}15%{opacity:1}to{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.5)}}@keyframes constellationDraw{to{stroke-dashoffset:0}}@keyframes constellationGlow{from{opacity:0}to{opacity:1}}
@media(max-width:700px){.site-header{height:76px}.birthday-date{display:none}.wordmark{font-size:15px;gap:7px}.wordmark i{font-size:14px}.header-right{gap:7px}.edit-gift-button{font-size:9px;min-width:63px;padding:6px 7px}.wordmark .brand-star{font-size:24px}.welcome-heading h1{font-size:31px}.welcome-heading h1 em.full-name{font-size:clamp(40px,9.8vw,56px);gap:9px;line-height:1.15;margin:12px 0 9px}.welcome-heading .name-meaning{font-size:10px!important;min-height:55px;max-width:290px!important;margin:3px auto 7px!important}.welcome-heading .intro{font-size:11px!important;max-width:260px!important}.welcome-world{min-height:255px;max-height:290px}.welcome-fox{bottom:-14px}.scene-heading{max-width:100%;padding:0 2px}.scene-heading h2{font-size:36px}.cake-v3{width:min(410px,100%)}.cake-v3 .candles{left:31%;top:25%;gap:7px}.cake-v3 .candle{font-size:clamp(44px,10vw,55px)}.cake-stage{margin-top:18px}.cake-v3 .flame{width:10px;height:21px;top:-19px}.wish-controls{margin-top:10px}.game-field{height:235px}.scorpio-trigger{top:-167px;width:60px;height:60px;left:calc(50% - 30px);font-size:46px}.scorpio-prompt>span{font-size:7px;letter-spacing:1.4px}.scorpio-prompt small{font-size:9px}.game-success{font-size:18px;max-width:300px}.birthday-reveal h2{font-size:32px}.birthday-reveal strong{font-size:150px}.birthday-reveal>p:not(.eyebrow){font-size:11px;max-width:270px;margin:0 auto 22px}.final-message h3{font-size:29px}.editor-dialog{max-width:calc(100vw - 20px);max-height:94svh}.editor-dialog .dialog-toolbar{padding:8px 13px;font-size:8px;letter-spacing:1px}.editor-tabs{gap:0;padding:3px 6px}.editor-tabs button{font-size:10px;padding:8px 13px;flex:1;white-space:nowrap}.editor-scroll{padding:20px 15px;max-height:calc(94svh - 119px)}.editor-scroll section>h2{font-size:29px}.editor-scroll section>p{font-size:11px}.photo-fields{grid-template-columns:1fr;gap:14px}.photo-field{grid-template-columns:74px minmax(0,1fr);padding:10px;gap:10px}.editor-photo-preview{height:98px}.editor-dialog label{font-size:10px;margin:9px 0 5px}.editor-dialog input:not([type="range"]),.editor-dialog textarea{font-size:12px;padding:9px 10px}.editor-dialog input[type="file"]{font-size:9px;padding:3px}.editor-dialog input[type="file"]::file-selector-button{font-size:9px;padding:6px 7px;min-height:39px;max-width:95px;overflow:hidden}.editor-feedback{font-size:10px}.editor-dialog .primary{font-size:11px;min-width:180px}.editor-dialog .text-button{font-size:10px}.music-card{padding:12px;gap:10px}.music-card strong{font-size:12px}.music-card small{font-size:9px}.privacy-note{font-size:9px!important}.gift-checklist p{font-size:11px}.gift-stage{margin-top:10px}}
@media(max-width:359px){.wordmark{font-size:13px}.wordmark i{font-size:12px}.wordmark .brand-star{font-size:22px}.header-right{gap:4px}.edit-gift-button{font-size:8px;min-width:57px;padding:6px}.welcome-heading h1{font-size:28px}.welcome-heading h1 em.full-name{font-size:40px;gap:7px}.welcome-heading .name-meaning{max-width:255px!important;min-height:60px}.welcome-fox{bottom:-13px}.editor-tabs button{padding:8px 9px}.photo-field{grid-template-columns:65px minmax(0,1fr);gap:8px;padding:8px}.cake-v3 .candle{font-size:43px}}
@media(prefers-reduced-motion:reduce){.name-word,.universe:after{transition:none}.leading-light{display:none}.scorpio-map line{stroke-dashoffset:0;animation:none}.scorpio-map circle{opacity:1;animation:none}.scorpio-trigger{animation:none}.birthday-reveal strong{text-shadow:none}}
.cake-stage{display:flex;justify-content:center;align-items:center;overflow:hidden}.cake-v3{width:125%;max-width:600px;flex:0 0 auto;aspect-ratio:720/550}.cake-v3 .candles{top:7%;left:31%}.birthday-fireworks{background:radial-gradient(ellipse,#102741f7,#06132afc)}
@media(max-width:700px){.cake-v3{width:125%;max-width:480px}.cake-v3 .candles{top:7%;left:31%}}
.prepared-download{display:flex;width:max-content;max-width:100%;margin-top:15px!important;text-align:center}.editor-dialog .prepared-download{font-size:11px;color:#fffdf2}
/* A blue moon appears only when Eka is touched. */
.blue-moon-effect{position:absolute;top:17%;right:12%;width:clamp(82px,13vw,160px);aspect-ratio:1;border-radius:50%;opacity:0;pointer-events:none;transform:scale(.82);background:radial-gradient(circle at 27% 29%,#c3e7fbcc 0 3%,transparent 3.5%),radial-gradient(circle at 68% 60%,#638ebe83 0 8%,transparent 8.6%),radial-gradient(circle at 40% 72%,#91bbe1b0 0 5%,transparent 5.8%),radial-gradient(circle at 32% 26%,#edfaff,#9fc9ed 36%,#568bc3 70%,#2e5a96 100%);box-shadow:0 0 25px #a6d7ffb0,0 0 80px #6cafff75,0 0 155px #4b85cc38;transition:opacity .7s ease,transform 1s ease;z-index:1}.blue-moon-effect.active{opacity:.95;transform:scale(1)}.welcome-heading .intro{margin-top:24px!important}.quiet-guide{justify-content:center}.quiet-guide p{display:none}
.scene[data-scene="5"]{position:relative}.gift-comments{position:absolute;inset:0;overflow:hidden;z-index:3;pointer-events:none}.flying-wish{position:absolute;top:calc(20% + var(--wish-row) * 9%);left:0;max-width:min(75%,365px);padding:9px 16px;border:1px solid #d8eaff42;border-radius:24px;background:#b7d5ed24;box-shadow:0 6px 22px #08142a25;color:#f5f8fc;font-size:12px;line-height:1.5;white-space:normal;opacity:0;transform:translateX(100vw);animation:flyWish var(--wish-duration) linear both;animation-delay:var(--wish-delay);text-shadow:0 1px 6px #0d1a2a}.flying-wish:nth-child(even){background:#8aabd831}.flying-wish:last-child{font-size:11px}
@keyframes flyWish{0%{opacity:0;transform:translateX(100vw)}8%,80%{opacity:.9}100%{opacity:0;transform:translateX(-110%)}}
@media(max-width:700px){.blue-moon-effect{top:19%;right:6%;width:92px}.welcome-heading .intro{margin-top:20px!important}.flying-wish{font-size:10px;max-width:76%;padding:7px 12px;top:calc(22% + var(--wish-row) * 8%)}.flying-wish:last-child{font-size:9px}}
@media(prefers-reduced-motion:reduce){.blue-moon-effect{transition:none}.gift-comments{position:relative;inset:auto;display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0 20px;overflow:visible}.flying-wish{position:static;max-width:none;opacity:1;transform:none;animation:none;text-align:center}.flying-wish:last-child{grid-column:1/-1}}
.blue-moon-effect.active{transition:none}
.blue-moon-effect{position:fixed;z-index:0}.app-shell{position:relative;z-index:1}
.flying-wish{left:65%;top:var(--wish-top)}@keyframes flyWish{0%{opacity:0;transform:translateX(20%)}8%,80%{opacity:.9}100%{opacity:0;transform:translateX(calc(-100% - 80vw))}}
@media(max-width:700px){.flying-wish{top:var(--wish-top-mobile)}}
@media(prefers-reduced-motion:reduce){.flying-wish{top:auto;transform:none}}

.content-load-notice{position:fixed;z-index:100;left:16px;right:16px;bottom:18px;max-width:520px;margin:auto;padding:14px 18px;background:#edf1f5;color:#18364d;border-radius:6px;font:13px/1.6 Arial,sans-serif;box-shadow:0 5px 30px #0005}

@media (prefers-reduced-motion: no-preference){.flying-wish,.flying-wish:nth-child(n){left:var(--wish-left);top:85%;transform:translateY(0);animation-name:flyWishUp}@keyframes flyWishUp{0%{opacity:0;transform:translateY(20px)}8%,75%{opacity:.9}100%{opacity:0;transform:translateY(-65vh)}}}

.letter-scroll{display:flex;flex-direction:column}.letter-closing{margin-top:auto;align-self:stretch;overflow-wrap:anywhere}

/* Perayaan bintang, kartu surat, dan gulungan hadiah. */
.envelope-back{background:linear-gradient(125deg,#e8e3d8,#faf7ee 50%,#e1e0d6);border:1px solid #e7d39a;box-shadow:inset 0 0 0 5px #ffffff50,0 15px 35px #06132855}.envelope-front{background:linear-gradient(33deg,#ece8dd 49.6%,transparent 50%),linear-gradient(-33deg,#dedfd8 49.6%,transparent 50%)}.envelope-flap{background:linear-gradient(140deg,#fffdf6,#e5e1d7);filter:drop-shadow(0 2px 1px #9e9b8c33)}.envelope-name{font:italic 22px Georgia,serif;color:#4a6683}.envelope-seal{background:radial-gradient(circle at 35% 25%,#e9d9a6,#c3a66d);color:#fff9e9;border:1px solid #f7e5b1;box-shadow:0 2px 7px #172f4555}
.gemini-stars{position:absolute;z-index:0;left:50%;top:50%;width:min(74vh,680px,95vw);height:auto;transform:translate(-50%,-50%);opacity:.27;pointer-events:none}.birthday-fireworks canvas{z-index:1}.birthday-reveal{z-index:2}
.scroll-surprise{display:flex;align-items:center;flex-direction:column;gap:14px;margin:20px auto}.scroll-toggle{min-height:52px;padding:12px 25px;border:1px solid #d5c28f;border-radius:30px;background:linear-gradient(90deg,#e5d5ad,#faf3df,#d8c597);box-shadow:0 8px 25px #050f2266;color:#334c65;font:italic 16px Georgia,serif;transition:transform .25s,box-shadow .25s}.scroll-toggle:hover{transform:translateY(-3px);box-shadow:0 12px 30px #e5cf8a33}.scroll-toggle span{color:#927a48}.scroll-paper{position:relative;width:min(390px,88vw);padding:30px 26px;background:linear-gradient(90deg,#d6c7a4,#f9f3df 9%,#f9f3df 91%,#d6c7a4);border-block:5px solid #b79e6e;border-radius:13px 13px 8px 8px;box-shadow:0 15px 38px #0007;color:#304860;animation:unroll .7s ease both;transform-origin:top}.scroll-paper>span{color:#c4a369;font-size:23px}.final-message .scroll-paper p{color:#304860;font:italic 19px/1.7 Georgia,serif;margin:8px 0 14px}.scroll-paper small{color:#6e7f8b;font:italic 13px Georgia,serif}.scroll-toggle[aria-expanded="true"]{background:#e4dbc9}@keyframes unroll{from{opacity:0;transform:scaleY(.1)}to{opacity:1;transform:scaleY(1)}}
@media(max-width:700px){.gemini-stars{width:min(96vw,480px)}.final-message .scroll-paper p{font-size:16px}.scroll-paper{padding:24px 16px}}
@media(prefers-reduced-motion:reduce){.scroll-paper{animation:none}}

/* Gulungan melompat dari kotak dan terbuka menjadi pesan. */
.scroll-emerge{position:absolute;z-index:8;left:50%;bottom:68px;width:92px;height:38px;display:flex;align-items:center;justify-content:space-between;transform:translate(-50%,0) scale(.45);opacity:0;pointer-events:none;background:linear-gradient(0deg,#d4c29c,#fff9e7 38%,#f2e5c4 80%,#bd9f6d);border:1px solid #ddcb9e;border-radius:8px;box-shadow:0 5px 12px #07132688;color:#b49a67}.scroll-emerge i{display:block;width:11px;height:42px;border-radius:50%;background:linear-gradient(90deg,#9d8052,#f6e7be,#ad9060);box-shadow:0 0 3px #674e31}.scroll-emerge b{font-size:16px;font-weight:400}.gift-revealing .scroll-emerge{animation:scrollLeap 1.35s cubic-bezier(.24,.7,.3,1) both}@keyframes scrollLeap{0%,10%{opacity:0;transform:translate(-50%,0) scale(.35) rotate(-12deg)}20%{opacity:1}54%{opacity:1;transform:translate(-50%,-160px) scale(1.05) rotate(9deg)}78%{opacity:1;transform:translate(-50%,-118px) scale(1) rotate(-3deg)}100%{opacity:0;transform:translate(-50%,-94px) scale(.88) rotate(0)}}
.gift-revealing .scroll-paper{animation:unroll .75s ease 1.12s both}.scroll-surprise{margin-top:20px}.scroll-paper{max-width:calc(100vw - 60px)}.flying-wish{max-width:min(75%,365px,calc(100% - var(--wish-left) - 12px))}
@media(prefers-reduced-motion:reduce){.gift-revealing .scroll-emerge{animation:none;opacity:0}.gift-revealing .scroll-paper{animation:none;opacity:1;transform:none}}
