@font-face{font-family:Letter;src:url(../assets/fonts/letter.woff2)format("woff2");font-display:swap;font-weight:100 900}:root{color:#30483d;font-synthesis:weight;--ink:#30483d;--soft:#7c8874;--line:#d8d9c8;--paper:#fffdf7;--sage:#afcdb2;background:#f7f4ea;font-family:Letter,Kaiti SC,STKaiti,KaiTi,PingFang SC,Microsoft YaHei,serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:radial-gradient(at 75% 30%,#e8eddf60,#0000 50%),#f7f4ea;min-width:280px;margin:0}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default}button:focus-visible,a:focus-visible{outline-offset:5px;outline:2px solid #739271}h1,h2,p{margin:0}h1:focus,h2:focus{outline:none}button,svg{-webkit-tap-highlight-color:transparent}button{touch-action:manipulation}::selection{background:#dce8cf}svg{display:block}button img{pointer-events:none}.app{min-height:100svh}.site-header{z-index:20;background:#f7f4eaeb;border-bottom:1px solid #d8d9c875;justify-content:space-between;align-items:center;gap:20px;height:86px;padding:0 clamp(20px,5vw,86px);display:flex;position:relative}.brand{white-space:nowrap;letter-spacing:1px;background:0 0;border:0;align-items:center;gap:11px;padding:0;font-size:18px;display:flex}.brand svg{color:#879f74;width:24px;height:26px}.chapter-label{color:#89917d;letter-spacing:2px;align-items:center;gap:13px;font-size:13px;display:flex}.chapter-label span{color:#72846c;font-family:Georgia,serif;font-size:17px}.chapter-label i{background:#c0c7b5;width:22px;height:1px}.header-actions{align-items:center;gap:14px;display:flex}.header-actions button{color:#66765f;background:0 0;border:0;min-height:44px;font-size:13px}.sound-button{align-items:center;gap:6px;display:flex}.sound-button svg{width:20px;height:20px}.motion-button{padding-left:18px;border-left:1px solid var(--line)!important}.eyebrow{letter-spacing:2.6px;color:#8c967d;font-family:Arial,sans-serif;font-size:10px;line-height:1.8;display:block}.primary-button{color:#fffdf0;letter-spacing:1px;background:#718f6d;border:1px solid #789471;border-radius:100px;justify-content:center;align-items:center;gap:32px;min-height:55px;padding:13px 29px;font-size:18px;transition:background .25s,transform .25s,box-shadow .25s;display:inline-flex;box-shadow:0 5px 13px #556e4610}.primary-button:hover:enabled{background:#607f5b;transform:translateY(-2px);box-shadow:0 7px 17px #556e4620}.primary-button:active:enabled{transform:translateY(1px)}.primary-button:disabled{opacity:.75}.primary-button span{font-family:Georgia,serif;font-size:22px}.text-button{color:#76856a;text-underline-offset:6px;background:0 0;border:0;min-height:44px;padding:12px;font-size:14px}.text-button:hover{text-decoration:underline}.stage{text-align:center;flex-direction:column;align-items:center;max-width:1060px;min-height:calc(100svh - 86px);margin:0 auto;padding:50px 28px 45px;animation:.7s both stage-in;display:flex;position:relative}.stage h1{letter-spacing:2px;margin:17px 0 14px;font-size:clamp(35px,4vw,52px);font-weight:400;line-height:1.3}.stage-subtitle{color:#73816a;max-width:600px;min-height:60px;font-size:19px;line-height:1.85}.stage-footer{letter-spacing:1px;color:#919781;margin-top:30px;font-size:13px;display:block}.ambient{pointer-events:none;color:#b5c6a1;z-index:-1;position:absolute}.ambient svg{width:100%;height:100%}.ambient-a{width:14px;top:19%;left:5%;transform:rotate(13deg)}.ambient-b{color:#d9bf81;width:22px;top:49%;right:5%}.ambient-c{color:#d9e2cc;width:38px;bottom:12%;left:6%;transform:rotate(-18deg)}.stage-knocking{text-align:left;grid-template-rows:auto auto auto 1fr;grid-template-columns:1fr 1fr;align-content:center;align-items:start;column-gap:70px;max-width:1030px;min-height:calc(100svh - 86px);padding-top:100px;padding-bottom:80px;display:grid}.opening-heading{grid-area:1/1;align-self:end}.opening-heading h1{letter-spacing:4px;margin-top:26px;margin-bottom:16px;font-size:clamp(44px,4.6vw,58px);line-height:1.34}.opening-dedication{color:#7d876e;letter-spacing:2px;font-size:18px}.door-composition{grid-area:1/2/5;align-self:center;position:relative}.door-art{width:350px;max-width:100%;margin:0 auto;position:relative}.door-art svg{width:100%;overflow:visible}.door-leaf{transform-box:fill-box;transform-origin:0;transition:transform 1s cubic-bezier(.25,.65,.25,1),opacity 1s}.door-art.open .door-leaf{opacity:.35;transform:perspective(600px)rotateY(-75deg)}.door-spark{color:#c3a36b;font-size:21px;position:absolute}.spark-a{font-size:16px;top:22%;left:-2%}.spark-b{top:46%;right:-2%}.spark-c{font-size:12px;top:0;right:16%}.tiny-note{color:#8b967a;font-size:15px;position:absolute;top:39%;right:-45px;transform:rotate(6deg)}.tiny-note span,.tiny-note i{font-style:normal;line-height:1.65;display:block}.tiny-note svg{width:80px;height:48px;margin-left:-30px;transform:rotate(13deg)}.knock-copy{grid-area:2/1;height:100px;margin:28px 0 21px;font-size:19px;line-height:1.85;animation:.9s both copy-in}.stage-knocking>.primary-button{grid-area:3/1;justify-self:start;min-width:226px}.stage-knocking>.stage-footer{grid-area:4/1;margin-top:37px}.continue-link{position:absolute;bottom:20px;left:16px}.stage-knocking .ambient-c{bottom:17%;left:-30px}.doorstep-still-life{justify-content:center;align-items:center;width:min(700px,100%);height:310px;margin:25px 0 8px;display:flex;position:relative}.doorstep-cake{width:350px;transform:rotate(-3deg)}.doorstep-envelope{width:330px;margin-left:-32px;transform:rotate(7deg)translateY(36px)}.still-life-caption{color:#7b846c;font-size:15px;position:absolute;bottom:0}.envelope-art{filter:drop-shadow(0 15px 14px #6d65431b);background:0 0;border:0;width:100%;padding:0;transition:transform .3s;position:relative}.envelope-art:hover{transform:translateY(-4px)}.envelope-art svg{width:100%;overflow:visible}.envelope-flap{transform-origin:50% 45px;transform-box:view-box;transition:transform .7s .1s}.envelope-seal{transition:opacity .3s,transform .6s}.opening .envelope-flap{transform:rotateX(180deg)}.opening .envelope-seal{opacity:0;transform:translateY(20px)}.envelope-letter{z-index:-1;color:#7e846d;background:#fffdf7;border:1px solid #e7e0ce;width:70%;height:130px;padding-top:22px;transition:transform .8s .4s;position:absolute;top:17%;left:15%}.envelope-letter span{font-size:18px}.envelope-letter i{margin-top:16px;font-style:normal;display:block}.opening .envelope-letter{transform:translateY(-140px)}.envelope-composition{width:410px;max-width:90%;margin:70px 0 25px}.stage-envelope .stage-subtitle{min-height:0}.cake-art{width:100%;overflow:visible}.birthday-cake{width:420px;max-width:94%;margin:30px auto 0;position:relative}.cake-hit,.gift-hit{background:0 0;border:0;width:100%;padding:0;transition:transform .25s;display:block}.cake-hit:hover:enabled{transform:translateY(-3px)}.cake-hit:active:enabled{transform:translateY(2px)}.has-bites .number-candle{display:none}.flame{transform-box:fill-box;transform-origin:50% 90%;animation:2.1s ease-in-out infinite alternate flame}.candles-fall .number-candle{transform-box:fill-box;transform-origin:50% 80%;animation:.65s ease-in .18s both candle-away}.candles-fall .candle-right{animation-name:candle-away-right}.birthday-stars{pointer-events:none;position:absolute;inset:0}.birthday-stars span{color:#d0ac68;animation:1.6s ease-out both stars-out;animation-delay:calc(var(--i)*25ms);--angle:calc(var(--i)*16.36deg);font-size:10px;position:absolute;top:35%;left:50%}.cake-progress{color:#8c937c;justify-content:center;align-items:center;gap:8px;height:50px;margin-top:5px;font-size:13px;display:flex}.cake-progress i{background:#cfd6c1;border-radius:50%;width:5px;height:5px;display:block}.cake-progress i.eaten{background:#9cab85}.gift-composition{width:380px;max-width:90%;height:300px;margin-top:34px;position:relative}.gift-hit{z-index:2;width:300px;margin:0 auto;position:relative}.gift-art{width:100%;overflow:visible}.empty-cake{opacity:.7;width:370px;position:absolute;bottom:-10px;left:50%;transform:translate(-50%)}.empty-cake .number-candle{display:none}.gift-lid{transform-origin:170px 132px;transition:transform .9s cubic-bezier(.25,.7,.25,1),opacity .8s}.unwrapped .gift-lid{opacity:.2;transform:translate(-15px,-85px)rotate(-14deg)}.gift-glow{opacity:0;transition:opacity .7s}.unwrapped .gift-glow{opacity:1}.door-art.small{width:230px;margin:25px auto}.final-surprise{text-align:center;flex-direction:column;align-items:center;gap:24px;max-width:660px;margin:75px auto;display:flex}.final-surprise>svg{color:#a8bd93;width:50px}.final-surprise h1{font-size:42px;line-height:1.6}.final-surprise p{color:#6f7c65;font-size:21px;line-height:2}.final-media{object-fit:contain;max-width:100%;max-height:450px}.final-surprise .primary-button{margin-top:30px}.loading-scene{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:30px;min-height:85svh;padding:30px;display:flex}.loading-scene h1{font-size:23px;font-weight:400;line-height:1.7}.loading-clover{color:#a8bf97;width:40px;height:40px;animation:4s linear infinite slow-turn}.scene-letter .site-header{height:72px;position:sticky;top:0}.reading-progress{z-index:24;background:#dee2d3;height:2px;position:fixed;top:72px;left:0;right:0}.reading-progress span{background:#879f74;height:100%;transition:width .1s;display:block}.letter-scene{padding:35px 20px 100px}.letter-meta{letter-spacing:1px;color:#929781;justify-content:space-between;max-width:760px;margin:0 auto 27px;font-size:13px;display:flex}.letter-paper{background:repeating-linear-gradient(0deg,#b8aa7610 0 1px,#0000 1px 5px),#fffdf7;border:1px solid #e9e5d6;border-radius:2px;max-width:760px;margin:auto;padding:65px 75px 35px;position:relative;box-shadow:0 13px 40px #60644a0a,0 1px 3px #77704b16}.paper-heading{letter-spacing:2px;color:#859274;border-bottom:1px solid #e6e1d0;align-items:center;gap:8px;margin-bottom:30px;padding-bottom:29px;font-size:13px;display:flex}.paper-heading svg{color:#99ad83;width:18px;height:18px}.paper-heading i{color:#a1a18b;letter-spacing:1.5px;margin-left:auto;font-family:Georgia,serif;font-size:10px;font-style:normal}.letter-unit{position:relative}.letter-paragraph{letter-spacing:.35px;color:#354b3f;overflow-wrap:anywhere;margin:0 0 16px;font-size:19px;line-height:1.95}.letter-paragraph strong{color:#2d4638;font-weight:700}.letter-paragraph.salutation{margin-bottom:25px;font-size:27px;line-height:1.5}.letter-paragraph.signature,.letter-paragraph.date{text-align:right;margin-top:22px}.letter-paragraph.date{color:#6d7a61;margin-top:0;font-size:16px}.letter-divider{justify-content:center;align-items:center;gap:17px;margin:48px 0;display:flex}.letter-divider span{background:#d9dcca;width:45px;height:1px}.letter-divider svg{color:#bccbb0;width:13px;height:13px}.letter-block-wrap{position:relative}.letter-sticker{width:180px;transform:rotate(var(--sticker-turn));filter:drop-shadow(1px 5px 3px #3c412317);z-index:2;margin:22px -142px 22px auto;position:relative}.letter-sticker img{object-fit:contain;width:100%;height:auto;display:block}.letter-sticker>button{background:0 0;border:0;width:100%;padding:0;transition:transform .25s;display:block;position:relative}.letter-sticker>button:hover{transform:rotate(calc(-1*var(--sticker-turn))) scale(1.04)}.letter-sticker figcaption{text-align:center;color:#97a08a;filter:none;margin-top:8px;font-size:11px}.sticker-zoom{color:#758c69;background:#f7f4ea;border:1px solid #aab799;border-radius:50%;width:25px;height:25px;font-family:Arial,sans-serif;font-size:15px;line-height:23px;position:absolute;bottom:8px;right:2px}.unit-0 .letter-sticker,.unit-10 .letter-sticker{width:140px;margin-right:-110px}.paper-bottom-rule{text-align:center;color:#b0be9b;margin-top:42px}.letter-end{text-align:center;flex-direction:column;align-items:center;gap:20px;padding-top:46px;display:flex}.letter-end>p{color:#7b856e;font-size:17px}.letter-end .text-button{font-size:13px}.ack-stars{color:#b9a16c;font-size:17px;animation:.6s copy-in}.pswp{--pswp-bg:#e9e9df;--pswp-icon-color:#30483d;--pswp-icon-color-secondary:#fffdf4;--pswp-icon-stroke-color:#f5f2e4;--pswp-placeholder-bg:transparent}.pswp__img{object-fit:contain;background:0 0!important}.journey-scene{max-width:1200px;margin:auto;padding:55px 24px 0}.journey-intro{text-align:center}.journey-intro h1{letter-spacing:3px;margin:18px 0 17px;font-size:clamp(35px,4vw,52px);font-weight:400}.journey-intro p{color:#7c866e;font-size:19px;line-height:1.9}.map-panel{background:#e5ede2;border:1px solid #d8e0ce;border-radius:5px;max-width:970px;margin:38px auto 0;position:relative;overflow:hidden;box-shadow:0 9px 24px #60774d0a}.map-caption{letter-spacing:1px;color:#687b5d;border-bottom:1px solid #cbd8c380;justify-content:center;align-items:center;gap:25px;height:60px;font-size:14px;display:flex}.map-caption span{align-items:center;gap:9px;display:flex}.map-caption i{background:#ab8959;border-radius:50%;width:5px;height:5px;display:block}.caption-line{background:#bfcdb7;width:100px;height:1px}.map-viewport{touch-action:pan-y;height:490px;position:relative}.map3d-host{width:100%;height:100%;position:relative;overflow:hidden}.map3d-host canvas{touch-action:none;width:100%;height:100%;display:block}.map-city-overlay{z-index:3;pointer-events:none;position:absolute;inset:0}.map-city-overlay span{white-space:nowrap;color:#687a5e;text-shadow:0 1px #eff3e7;padding:2px 4px;font-size:12px;position:absolute;transform:translate(7px,-22px)}.map-city-overlay .primary-city{color:#3e553c;font-size:15px}.map2d{object-fit:contain;width:100%;height:100%;display:block}.map-mode{letter-spacing:1px;color:#889a7d;pointer-events:none;font-size:11px;position:absolute;top:16px;left:20px}.map-controls{z-index:8;gap:5px;display:flex;position:absolute;bottom:15px;right:17px}.map-controls button{color:#677d5b;background:#f3f5e9e0;border:1px solid #b6c7ac;border-radius:3px;min-width:44px;min-height:44px;padding:8px;font-size:12px}.map-controls button:first-child,.map-controls button:nth-child(2){font-family:Arial,sans-serif}.map-footnote{color:#8b9980;border-top:1px solid #cbd8c380;justify-content:space-between;padding:16px 21px;font-size:11px;line-height:1.6;display:flex}.countdown-area{text-align:center;padding:37px 12px 30px}.countdown{justify-content:center;align-items:center;gap:26px;margin:13px 0 10px;display:flex}.countdown>div{align-items:baseline;gap:7px;display:flex}.countdown strong{color:#536b4f;font-variant-numeric:tabular-nums;min-width:45px;font-family:Georgia,serif;font-size:40px;font-weight:400}.countdown span{color:#8d967e;font-size:12px}.countdown-area>p{color:#969c87;letter-spacing:1px;font-size:12px}.countdown-area>.primary-button{min-height:50px;margin-top:24px;font-size:16px}.countdown-area>.primary-button:disabled{color:#929c82;box-shadow:none;background:#e2e8d9;border-color:#ccd7bf}.finale{text-align:center;max-width:800px;margin:auto;padding:45px 20px 50px;position:relative}.finale-preamble{color:#8b947c;margin:10px 0 85px;font-size:18px;line-height:1.9}.finale-preamble p+p{margin-top:27px}.finale-clover{color:#94aa7d;width:35px;height:35px;margin:0 auto 24px}.finale h2{letter-spacing:3px;margin:25px 0;font-size:clamp(38px,4vw,51px);font-weight:400;line-height:1.55}.finale p{z-index:2;position:relative}.finale-main{color:#627759;font-size:24px;line-height:1.9;margin:25px 0!important}.finale>p{color:#869077;margin:25px 0;font-size:18px;line-height:1.9}.finale-signature{color:#728366;letter-spacing:1px;margin-top:30px;font-size:17px;display:block}.star-ring{pointer-events:none;width:540px;max-width:100%;height:400px;position:absolute;top:240px;left:50%;transform:translate(-50%)}.star-ring span{color:#d2be89;width:9px;position:absolute}.star-ring span:nth-child(3n){color:#b2c69f;width:5px}.star-ring svg{width:100%}.replay-actions{justify-content:center;gap:27px;margin-top:30px;display:flex}.site-footer{color:#969d85;letter-spacing:1px;border-top:1px solid #dadfce;justify-content:center;align-items:center;gap:12px;padding:30px 15px;font-size:12px;display:flex}.site-footer svg{color:#b5c4a1;width:15px;height:15px}.site-footer i{letter-spacing:2px;margin-left:auto;font-family:Georgia,serif;font-size:10px;font-style:normal}.studio-tools{z-index:1000;background:#fffef0ee;border:1px solid #bec4b0;flex-wrap:wrap;gap:5px;max-width:95vw;padding:6px;font-family:Arial,sans-serif;font-size:10px;display:flex;position:fixed;bottom:8px;left:8px}.studio-tools button{background:#fff;border:1px solid #aaa;padding:5px;font-family:Arial,sans-serif;font-size:10px}.studio-tools span{color:#987;padding:5px}@keyframes stage-in{0%{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}@keyframes copy-in{0%{opacity:0}to{opacity:1}}@keyframes ink-arrive{0%{opacity:.45;filter:blur(1px);transform:translateY(3px)}to{opacity:1;filter:none;transform:none}}@keyframes slow-turn{to{transform:rotate(360deg)}}@keyframes flame{0%{transform:rotate(-3deg)scale(.97)}to{transform:rotate(4deg)scale(1.04)}}@keyframes candle-away{to{opacity:0;transform:translate(-60px,28px)rotate(-52deg)}}@keyframes candle-away-right{to{opacity:0;transform:translate(60px,28px)rotate(52deg)}}@keyframes stars-out{0%{opacity:0;transform:rotate(var(--angle)) translateY(-60px) scale(.4)}20%{opacity:1}to{opacity:0;transform:rotate(var(--angle)) translateY(-160px) scale(1)}}@media (min-width:1500px){.stage-knocking{column-gap:95px;max-width:1120px;padding-top:120px}.door-art{width:395px}}@media (max-width:1000px){.tiny-note{right:-10px}.letter-sticker{width:160px;margin-right:-85px}.letter-paper{padding-left:55px;padding-right:55px}.map-viewport{height:430px}.stage-knocking{column-gap:35px;padding-top:80px}.opening-heading h1{font-size:49px}}@media (max-width:760px){.site-header{gap:10px;height:70px;padding:0 20px}.brand{letter-spacing:.5px;gap:8px;font-size:15px}.brand svg{width:21px}.chapter-label{display:none}.header-actions{gap:6px}.sound-button span{display:none}.header-actions button{font-size:11px}.motion-button{padding-left:10px}.stage{min-height:calc(100svh - 70px);padding:40px 22px 38px}.stage h1{letter-spacing:1px;font-size:35px}.eyebrow{letter-spacing:1.9px;font-size:8px}.stage-subtitle{font-size:17px;line-height:1.85}.stage-knocking{text-align:center;align-items:center;gap:0;padding-top:28px;display:flex}.opening-heading h1{letter-spacing:2px;margin:16px 0 10px;font-size:38px;line-height:1.32}.opening-dedication{letter-spacing:1px;font-size:14px}.door-composition{width:100%;margin-top:9px}.door-art{width:235px}.tiny-note{font-size:11px;top:42%;right:calc(50% - 162px)}.tiny-note svg{width:45px;height:30px;margin-left:-12px}.knock-copy{height:64px;margin:8px 0 15px;font-size:16px;line-height:1.8}.primary-button{gap:27px;min-height:50px;padding:12px 25px;font-size:16px}.stage-knocking>.primary-button{min-width:204px}.stage-knocking>.stage-footer{margin-top:23px;font-size:11px}.continue-link{order:7;margin-top:15px;position:static}.stage-knocking .ambient-c{width:24px;bottom:24%;left:13px}.ambient-a{width:10px;top:28%;left:8%}.ambient-b{width:15px;right:6%}.doorstep-still-life{height:270px;margin:25px 0 20px}.doorstep-cake{width:235px;margin-left:-30px}.doorstep-envelope{width:235px;margin-left:-90px;transform:rotate(6deg)translateY(55px)}.envelope-composition{width:330px;margin:58px 0 30px}.birthday-cake{width:360px;margin:34px auto 6px}.cake-progress{font-size:12px}.gift-composition{height:280px;margin-top:20px}.gift-hit{width:280px}.empty-cake{width:320px}.stage-footer{font-size:12px}.letter-scene{padding:23px 12px 70px}.scene-letter .site-header{height:64px}.reading-progress{top:64px}.letter-meta{gap:12px;margin-bottom:19px;padding:0 10px;font-size:11px}.letter-paper{padding:32px 24px 28px}.paper-heading{margin-bottom:25px;padding-bottom:19px;font-size:11px}.paper-heading i{letter-spacing:1px;font-size:8px}.letter-paragraph{letter-spacing:0;margin-bottom:14px;font-size:18px;line-height:1.95}.letter-paragraph.salutation{margin-bottom:23px;font-size:23px}.letter-divider{gap:12px;margin:38px 0}.letter-sticker,.unit-0 .letter-sticker,.unit-10 .letter-sticker{width:min(190px,66%);margin:26px auto 33px}.unit-0 .letter-sticker,.unit-10 .letter-sticker{width:125px;margin-left:auto;margin-right:0}.letter-sticker figcaption{font-size:10px}.letter-end>p{font-size:15px;line-height:1.7}.letter-end{gap:16px;padding:37px 15px 0}.journey-scene{padding:35px 14px 0}.journey-intro h1{margin:14px 0;font-size:37px}.journey-intro p{font-size:17px}.map-panel{margin-top:25px}.map-caption{gap:12px;height:49px;font-size:12px}.caption-line{width:48px}.map-viewport{height:360px}.map-controls{gap:3px;bottom:9px;right:9px}.map-controls button{min-width:44px;min-height:44px;padding:6px;font-size:10px}.map-footnote{gap:12px;padding:11px 12px;font-size:9px}.map-mode{font-size:9px;top:12px;left:13px}.map-city-overlay span{font-size:10px;transform:translate(4px,-20px)}.map-city-overlay .primary-city{font-size:12px}.countdown{gap:14px}.countdown strong{min-width:36px;font-size:32px}.countdown>div{gap:4px}.countdown-area{padding:31px 0 20px}.countdown-area .eyebrow{letter-spacing:2px;font-size:11px}.countdown-area>.primary-button{gap:17px;padding:12px 22px;font-size:14px}.finale{padding:30px 8px}.finale-preamble{margin:20px 0 65px;font-size:16px}.finale h2{letter-spacing:2px;font-size:37px}.finale-main{line-height:1.9;font-size:21px!important}.finale>p{font-size:17px}.finale-signature{font-size:15px}.star-ring{width:320px;height:330px;top:240px}.finale-clover{width:28px;height:28px}.replay-actions{flex-wrap:wrap;gap:9px}.replay-actions .text-button{font-size:13px}.site-footer{gap:8px;padding:23px 3px;font-size:10px}.site-footer i{display:none}.final-surprise{gap:18px;margin:35px auto}.final-surprise h1{font-size:32px}.final-surprise p{font-size:19px}.door-art.small{width:205px;margin:20px auto}}@media (max-width:380px){.opening-heading h1{font-size:34px}.stage-knocking{padding-top:24px}.door-art{width:208px}.tiny-note{right:calc(50% - 150px)}.knock-copy{margin-top:6px}.stage-knocking>.stage-footer{margin-top:19px;font-size:10px}.letter-paragraph{font-size:17px}.letter-paper{padding:27px 21px}.map-viewport{height:330px}.countdown{gap:11px}.countdown strong{font-size:29px}.map-controls{gap:2px}.stage h1{font-size:31px}.stage-subtitle{font-size:16px}}@media (orientation:landscape) and (max-height:550px){.stage{min-height:650px}.stage-knocking{text-align:left;grid-template-columns:1fr 1fr;min-height:540px;padding-top:40px;display:grid}.stage-knocking .door-art{width:240px}.door-composition{grid-area:1/2/5}.opening-heading{grid-column:1}.opening-heading h1{font-size:38px}.tiny-note{display:none}.knock-copy{margin-top:20px}.map-viewport{height:350px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}.birthday-stars{display:none}}.reduced-motion *,.reduced-motion :before,.reduced-motion :after{transition:none!important;animation:none!important}.reduced-motion .birthday-stars{display:none}.reduced-motion .ink-arrive{opacity:1;filter:none;transform:none}.header-actions button,.primary-button{margin-bottom:env(safe-area-inset-bottom,0px)}.site-header{padding-top:env(safe-area-inset-top,0px)}.ink-arrive{animation:none!important}.ink-arrive .letter-sentence{animation:.42s backwards ink-sentence;animation-delay:var(--sentence-delay)}@keyframes ink-sentence{0%{opacity:.35}to{opacity:1}}.reduced-motion .letter-sentence{animation:none!important}.star-ring>span{width:12px;height:12px}.star-ring>span .ring-star{width:100%;height:100%;position:static}.detail-lens{z-index:50;pointer-events:none;background-color:#30483dcc;background-repeat:no-repeat;border:2px solid #f4edcf;border-radius:50%;width:148px;height:148px;position:fixed;box-shadow:0 6px 25px #0006}.detail-lens[hidden]{display:none}@media (hover:none){.detail-lens{display:none}}.brand{min-height:44px}.header-actions button{min-width:44px}.letter-paper:focus{outline:none}@media (min-width:761px) and (max-width:1100px){.letter-sticker,.unit-0 .letter-sticker,.unit-10 .letter-sticker{width:160px;margin-right:0}}.gentle-arrive{animation:.9s both gentle-arrive}@keyframes gentle-arrive{0%{opacity:.4;transform:translateY(5px)}to{opacity:1;transform:none}}.star-ring.gentle-arrive>span{animation:1s backwards gentle-arrive;animation-delay:calc(var(--star-index,0)*60ms)}.gift-composition:before{content:"";pointer-events:none;background:radial-gradient(#f7d99655,#0000 65%);width:320px;height:190px;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.stage-giftReveal .gift-hit{animation:.65s .1s both gift-wiggle}@keyframes gift-wiggle{25%{transform:rotate(-3deg)}60%{transform:rotate(2deg)}to{transform:rotate(0)}}.finale-title{position:relative}.finale-title .star-ring{width:540px;max-width:100%;height:245px;top:-24px}.star-ring.gentle-arrive{animation:none;transform:translate(-50%)}@media (max-width:760px){.finale-title .star-ring{width:320px;height:215px;top:-18px}}.gift-light-arc{stroke-dasharray:310;stroke-dashoffset:310px;transition:stroke-dashoffset .9s .35s}.unwrapped .gift-light-arc{stroke-dashoffset:0}.door-art.open .door-frame{fill-opacity:.07}.door-art.open .door-interior{fill-opacity:.18}.door-frame,.door-interior{transition:fill-opacity .5s}.letter-paper{text-align:left}.scene-doorstep .prop-cake{top:20px}.scene-doorstep .prop-envelope{top:180px}.scene-doorstep .objects-space{height:365px}.objects-space{z-index:6}.scene-envelope:not(.phase-unfold-letter) .paper-carrier{opacity:0}.phase-unfold-letter .paper-carrier{opacity:1}.scene-letter .active-letter .letter-paper{transform-origin:0 0;animation:none}.story-stage{text-align:center;isolation:isolate;max-width:1060px;min-height:calc(100svh - 86px);margin:auto;padding:38px 24px 45px;position:relative}.story-stage[hidden]{display:none}.scene-copy{z-index:3;position:relative}.scene-copy[hidden],.scene-dialogue[hidden]{display:none}.scene-copy h1{letter-spacing:2px;margin:15px 0 12px;font-size:clamp(32px,4vw,47px);font-weight:400;line-height:1.4}.scene-copy p{color:#73816a;min-height:40px;font-size:18px;line-height:1.8}.scene-copy .door-dedication{letter-spacing:3px;color:#7a866c;margin-top:14px;font-size:18px}.objects-space{perspective:900px;width:min(800px,100%);height:410px;margin:0 auto;transition:transform .8s cubic-bezier(.2,.7,.2,1);position:relative}.prop{visibility:hidden;opacity:0;pointer-events:none;will-change:transform;transition:transform .65s cubic-bezier(.22,.72,.2,1),width .65s cubic-bezier(.22,.72,.2,1),opacity .65s,top .65s;position:absolute;top:0;left:50%}.prop button{pointer-events:none}.prop-door{z-index:5;width:330px;transform:translate(-50%)}.prop-door .door-art{width:100%}.door-hit{background:0 0;border:0;border-radius:45% 45% 8px 8px;width:100%;min-height:44px;padding:0;display:block}.door-hit:disabled{opacity:1}.door-hit:hover:enabled .door-leaf{filter:brightness(1.025)}.prop-cake{z-index:3;width:440px;top:90px;transform:translate(-68%)}.prop-envelope{z-index:4;width:180px;top:250px;transform:translate(37%)rotate(8deg)}.prop-gift{z-index:2;width:165px;top:90px;transform:translate(-50%)scale(.7)}.prop-gift .gift-hit{width:100%}.prop-gift .gift-art>ellipse{opacity:0}.floor-light{pointer-events:none;background:radial-gradient(#d5cfb828,#0000 68%);border-radius:50%;width:min(580px,95%);height:85px;position:absolute;bottom:21px;left:50%;transform:translate(-50%)}.scene-knocking .prop-door{visibility:visible;opacity:1;pointer-events:auto}.scene-knocking .prop-door button{pointer-events:auto}.scene-knocking .objects-space{height:410px;margin-top:14px}.scene-knocking .floor-light{background:radial-gradient(#f5d8a037,#0000 66%)}.phase-open-door.scene-knocking .prop-cake{visibility:visible;opacity:1;width:330px;transition-delay:.14s;top:155px;transform:translate(-54%)scale(.55)}.phase-open-door.scene-knocking .prop-envelope{visibility:visible;opacity:1;width:130px;transition-delay:.2s;top:260px;transform:translate(12%)scale(.65)}.phase-open-door .objects-space{transform:scale(1.04)}.scene-doorstep .prop-cake,.scene-doorstep .prop-envelope{visibility:visible;opacity:1}.scene-doorstep .prop-envelope,.scene-doorstep .prop-envelope button{pointer-events:auto}.scene-doorstep .prop-envelope{filter:drop-shadow(0 7px 2px #7c71462b)}.scene-doorstep .prop-door{visibility:visible;opacity:.12;z-index:0;top:-70px;transform:translate(-90%)scale(.92)}.phase-pick-envelope .prop-envelope{width:340px;top:135px;transform:translate(-50%)rotate(0)}.phase-pick-envelope .prop-cake{opacity:.3;transform:translate(-110%)scale(.72)}.scene-envelope .prop-envelope{visibility:visible;opacity:1;z-index:6;pointer-events:auto;width:340px;top:150px;transform:translate(-50%)}.scene-envelope .prop-envelope button{pointer-events:auto}.scene-envelope .prop-cake{visibility:visible;opacity:.18;top:150px;transform:translate(-110%)scale(.7)}.scene-envelope .objects-space{height:365px}.scene-envelope .scene-copy p{min-height:25px}.envelope-art:hover:enabled{transform:translateY(-3px)}.envelope-art:disabled{opacity:1}.opening .envelope-flap{transition-duration:.42s;transition-delay:0s}.opening .envelope-seal{transition-duration:.2s}.paper-carrier{z-index:5;transform-origin:top;visibility:hidden;opacity:0;pointer-events:none;width:760px;height:420px;transition:transform .8s cubic-bezier(.2,.65,.2,1),top .8s,height .8s,opacity .35s;position:absolute;top:332px;left:50%;overflow:hidden;transform:translate(-50%)scale(.35)}.folded-letter{padding:0}.folded-letter .letter-meta,.folded-letter .reading-progress,.folded-letter .letter-end{display:none}.folded-letter .letter-paper{border-radius:3px}.scene-envelope .paper-carrier{visibility:visible;opacity:1}.phase-unfold-letter .paper-carrier{z-index:8;height:720px;transition-delay:.42s;top:175px;transform:translate(-50%)scale(.75)}.phase-unfold-letter .prop-envelope{opacity:.25;transition-delay:.75s;top:250px}.phase-unfold-letter .scene-dialogue{opacity:0;transition:opacity .2s}.phase-unfold-letter .prop-cake{opacity:0}.story-stage.reading{max-width:none;min-height:0;padding:0}.reading .objects-space{visibility:hidden;pointer-events:none;width:0;height:0;position:fixed;top:0;left:0}.scene-letter .prop{opacity:0;visibility:hidden}.reading .paper-carrier{visibility:visible;opacity:1;pointer-events:auto;z-index:1;width:100%;height:auto;transition:none;position:relative;top:auto;left:auto;overflow:visible;transform:none}.scene-letter .letter-paper{transform-origin:50% 0;animation:.42s cubic-bezier(.2,.6,.2,1) both sheet-settle}.phase-fold-letter .paper-carrier{transform-origin:50% 100%;opacity:.15;transition:transform .5s,opacity .5s;transform:translateY(35px)scale(.86)}.scene-cake .prop-cake{visibility:visible;opacity:1;pointer-events:auto;top:15px;transform:translate(-50%)}.scene-cake .prop-cake button{pointer-events:auto}.scene-cake .objects-space{height:340px;margin-top:25px}.scene-cake .prop-gift{visibility:visible;opacity:var(--gift-reveal);top:138px;transform:translate(3%)scale(.8)}.scene-cake .prop-gift .gift-art{clip-path:inset(0 0 14%)}.has-bites .cake-art.candles-fall .number-candle{display:block}.has-bites .cake-art:not(.candles-fall) .number-candle{display:none}.candles-fall .number-candle{animation-duration:.53s;animation-delay:0s}.bite-feedback{animation:.36s both cake-rebound}.bite-crumbs{pointer-events:none;position:absolute;inset:0}.bite-crumbs i{--dx:calc((var(--crumb-i) - 3)*13px);--dy:calc(35px + var(--crumb-i)*4px);background:#ceab7b;border-radius:1px;width:4px;height:3px;animation:.48s ease-out both crumb-scatter;position:absolute;top:60%;left:70%}.scene-giftReveal .prop-cake{visibility:visible;opacity:.75;top:63px;transform:translate(-50%)}.scene-giftReveal .prop-gift{visibility:visible;opacity:1;z-index:4;pointer-events:auto;width:280px;top:0;transform:translate(-50%)}.scene-giftReveal .prop-gift button{pointer-events:auto}.scene-giftReveal .objects-space{height:330px;margin-top:20px}.scene-giftReveal .prop-gift:before{content:"";pointer-events:none;background:radial-gradient(#f3d8a24a,#0000 68%);position:absolute;inset:-20px}.shared-route{pointer-events:none;opacity:0;z-index:1;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.shared-route path{fill:none;stroke:#c3a56e;stroke-width:2px;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1px}.phase-gift-route .shared-route{opacity:.65}.phase-gift-route .shared-route path{animation:1.1s ease-out both route-extend}.phase-gift-route .prop-gift{transform:translate(-50%)scale(.87)}.phase-gift-route .objects-space{transform:scale(1.04)}.scene-journeyMap .map-panel{animation:.6s both map-receive}.scene-dialogue{z-index:9;flex-direction:column;align-items:center;gap:12px;margin-top:0;display:flex;position:relative}.scene-dialogue>p{color:#8b947c;font-size:13px;line-height:1.8}.dialogue-link{color:#6e8967;letter-spacing:1px;text-underline-offset:7px;background:0 0;border:0;min-height:44px;padding:7px 16px;font-size:16px;text-decoration:underline;text-decoration-thickness:1px}.dialogue-link:hover:enabled{color:#355c3c}.dialogue-link:disabled{opacity:.55}.knock-bubble{color:#65745c;background:#fffdf5b3;border:1px solid #d4d8c3;border-radius:12px;width:min(330px,90%);padding:19px 24px 8px;font-size:17px;line-height:1.8;position:relative;box-shadow:0 5px 16px #53613b06}.knock-bubble:before{content:"";background:#fffdf5;border-top:1px solid #d4d8c3;border-left:1px solid #d4d8c3;width:10px;height:10px;position:absolute;top:-6px;left:calc(50% - 6px);transform:rotate(45deg)}.knock-bubble .dialogue-link{font-size:14px}.knock-1 .door-leaf{animation:.82s door-knock-a}.knock-0 .door-leaf{animation:.82s door-knock-b}.phase-open-door .door-leaf{animation:none}.bubble-1{animation:.8s dialogue-breathe-a}.bubble-0{animation:.8s dialogue-breathe-b}.cake-instruction{color:#859175;font-size:14px!important}.scene-dialogue .cake-progress{height:24px;margin:0}.second-door-hit{width:230px;margin:16px auto}.second-door-hit .door-art.small{width:100%}.active-letter .letter-paragraph[data-reveal=pending] .letter-phrase{opacity:0}.active-letter .letter-paragraph[data-reveal=entering] .letter-phrase{animation:.27s ease-out both phrase-write;animation-delay:var(--phrase-delay)}.active-letter .letter-paragraph[data-reveal=done] .letter-phrase{opacity:1;animation:none}.reduced-motion .letter-phrase{opacity:1!important;animation:none!important}.letter-sticker{width:175px;margin:27px -102px 38px auto}.sticker-pencil{color:#b6bc99;pointer-events:none;z-index:-1;width:calc(100% + 30px);position:absolute;bottom:-14px;left:-15px}.sticker-pencil svg{width:100%;height:35px}.unit-0 .scrapbook-001{width:124px;transform:rotate(calc(var(--sticker-turn) + -3deg));margin:26px auto 32px -108px}.scrapbook-002{width:168px;transform:rotate(calc(var(--sticker-turn) + 2deg));margin-left:auto;margin-right:-102px}.unit-10 .scrapbook-003{width:118px;transform:rotate(calc(var(--sticker-turn) + 4deg));margin:31px -85px 26px auto}.scrapbook-004{width:204px;transform:rotate(calc(var(--sticker-turn) + -8deg));margin:30px auto 40px -93px}.scrapbook-005{width:170px;transform:rotate(calc(var(--sticker-turn) + 8deg));margin-right:-109px}.scrapbook-006{width:191px;transform:rotate(calc(var(--sticker-turn) + -2deg));margin:32px auto 37px -98px}.scrapbook-007{width:156px;transform:rotate(calc(var(--sticker-turn) + -11deg));margin:33px auto 39px -74px}.scrapbook-008{width:184px;transform:rotate(calc(var(--sticker-turn) + 7deg));margin-right:-97px}.scrapbook-004 .sticker-pencil,.scrapbook-007 .sticker-pencil{transform:rotate(-9deg)}.letter-sticker figcaption{font-size:10px}.birthday-atmosphere{pointer-events:none;z-index:0;position:fixed;inset:75px 0 0;overflow:hidden}.floating-motif{left:var(--x);width:var(--size);height:var(--size);color:#a8bd9673;animation:motif-rise var(--duration) linear var(--delay) infinite;position:absolute;bottom:-35px}.floating-motif svg{width:100%;height:100%}.motif-0{color:#c5ad745e}.motif-2{color:#af958459}.paper-constellation{color:#bcc4a073;stroke-width:1.2px;width:110px;height:75%;position:absolute;top:8%}.constellation-left{left:max(1%,50% - 560px)}.constellation-right{right:max(1%,50% - 560px)}.birthday-meteor{opacity:0;background:linear-gradient(90deg,#0000,#cbb37c);width:90px;height:1px;animation:21s linear infinite meteor-glide;position:absolute;top:2%;left:25%;transform:rotate(-27deg)}.meteor-two{width:66px;animation-duration:29s;animation-delay:-12s;top:9%;left:72%}.paused *{animation-play-state:paused!important}.birthday-atmosphere.still .floating-motif,.birthday-atmosphere.still .birthday-meteor{display:none}.sprinkle-canvas{pointer-events:none;z-index:25;width:100%;height:100%;position:fixed;inset:0}.letter-paper,.scene-copy{position:relative}.letter-paper{z-index:1}.map2d .route-halo{transform-box:fill-box;transform-origin:50%;animation:5s ease-out infinite flat-route-breathe}@keyframes phrase-write{0%{opacity:0}to{opacity:1}}@keyframes sheet-settle{0%{opacity:.8;transform:translateY(6px)scale(.985)}to{opacity:1;transform:none}}@keyframes cake-rebound{25%{transform:scale(.978)translateY(2px)}65%{transform:scale(1.012)translateY(-1px)}to{transform:none}}@keyframes crumb-scatter{0%{opacity:.65;transform:translate(0)rotate(0)}to{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(135deg)}}@keyframes route-extend{to{stroke-dashoffset:0}}@keyframes map-receive{0%{opacity:.65;transform:translateY(4px)scale(.99)}to{opacity:1;transform:none}}@keyframes door-knock-a{1%,35%,75%{transform:translate(1.6px)rotate(.25deg)}13%,48%,88%{transform:translate(-1px)}}@keyframes door-knock-b{1%,35%,75%{transform:translate(1.6px)rotate(.25deg)}13%,48%,88%{transform:translate(-1px)}}@keyframes dialogue-breathe-a{0%{opacity:.75;transform:translateY(2px)}to{opacity:1;transform:none}}@keyframes dialogue-breathe-b{0%{opacity:.75;transform:translateY(2px)}to{opacity:1;transform:none}}@keyframes motif-rise{0%{opacity:0;transform:translate(0)rotate(-8deg)}12%{opacity:.6}70%{opacity:.4}to{opacity:0;transform:translate(var(--drift),-94svh) rotate(38deg)}}@keyframes meteor-glide{0%,90%{opacity:0;transform:translate(-35px)rotate(-27deg)}92%{opacity:.45}97%{opacity:0;transform:translate(140px,70px)rotate(-27deg)}to{opacity:0}}@keyframes flat-route-breathe{0%{opacity:.38;transform:scale(.7)}80%,to{opacity:0;transform:scale(1.8)}}@media (min-width:761px) and (max-width:1100px){.letter-sticker,.unit-0 .scrapbook-001,.unit-10 .scrapbook-003{margin-left:auto;margin-right:0}.scrapbook-004,.scrapbook-006,.scrapbook-007{margin-left:0;margin-right:auto}.letter-sticker{max-width:195px}}@media (max-width:760px){.story-stage{min-height:calc(100svh - 70px);padding:27px 18px 32px}.scene-copy h1{margin:12px 0 10px;font-size:32px}.scene-copy p{min-height:30px;font-size:16px}.scene-copy .door-dedication{font-size:15px}.scene-knocking .objects-space{height:340px;margin-top:12px}.prop-door{width:265px}.objects-space{height:320px}.prop-cake{width:350px;top:50px;transform:translate(-65%)}.prop-envelope{width:150px;top:188px;transform:translate(14%)rotate(8deg)}.scene-doorstep .prop-door{width:240px;top:-40px;transform:translate(-93%)}.phase-open-door.scene-knocking .prop-cake{width:265px;top:126px}.phase-open-door.scene-knocking .prop-envelope{width:110px;top:210px}.phase-pick-envelope .prop-envelope{width:285px;top:100px;transform:translate(-50%)}.scene-envelope .prop-envelope{width:285px;top:95px}.scene-envelope .objects-space{height:280px}.scene-envelope .prop-cake{top:110px;transform:translate(-100%)scale(.6)}.paper-carrier{top:252px;transform:translate(-50%)scale(.3)}.phase-unfold-letter .paper-carrier{height:940px;top:145px;transform:translate(-50%)scale(.43)}.phase-unfold-letter .prop-envelope{top:200px}.scene-cake .prop-cake{width:min(380px,110%);top:0}.scene-cake .objects-space{height:280px;margin-top:25px}.scene-cake .prop-gift{width:140px;top:103px;transform:translate(2%)scale(.8)}.scene-giftReveal .prop-gift{width:235px;top:0}.scene-giftReveal .prop-cake{width:360px;top:47px}.scene-giftReveal .objects-space{height:270px}.knock-bubble{width:285px;padding:15px 20px 6px;font-size:15px}.dialogue-link{font-size:15px}.scene-dialogue{gap:9px}.paper-constellation{opacity:.35;width:34px}.floating-motif{opacity:.4}.floating-motif:nth-child(n+8){display:none}.birthday-atmosphere{top:64px}.constellation-left{left:0}.constellation-right{right:0}.unit-0 .scrapbook-001{width:106px;transform:rotate(calc(var(--sticker-turn) + -1deg));margin:24px auto 28px -13px}.scrapbook-002{width:151px;transform:rotate(calc(var(--sticker-turn) + 1deg));margin:29px -8px 37px auto}.unit-10 .scrapbook-003{width:109px;transform:rotate(calc(var(--sticker-turn) + 1deg));margin:29px -8px 26px auto}.scrapbook-004{width:181px;transform:rotate(calc(var(--sticker-turn) + -7deg));margin:28px auto 36px -6px}.scrapbook-005{width:156px;transform:rotate(calc(var(--sticker-turn) + 7deg));margin:30px -6px 37px auto}.scrapbook-006{width:174px;transform:rotate(calc(var(--sticker-turn) + -1deg));margin:30px auto 36px -7px}.scrapbook-007{width:139px;transform:rotate(calc(var(--sticker-turn) + -10deg));margin:29px auto 35px 9px}.scrapbook-008{width:165px;transform:rotate(calc(var(--sticker-turn) + 6deg));margin:29px -6px 36px auto}.letter-sticker{max-width:72%}.sticker-pencil{width:calc(100% + 16px);left:-8px}.reading .paper-carrier{top:auto;transform:none}.second-door-hit{width:210px}}@media (max-width:380px){.prop-door{width:228px}.scene-knocking .objects-space{height:289px}.scene-copy h1{font-size:28px}.scene-envelope .prop-envelope{width:260px}.scene-cake .objects-space{height:255px}.scene-giftReveal .objects-space{height:240px}.scene-giftReveal .prop-gift{width:220px}.scene-giftReveal .prop-cake{width:330px}.knock-bubble{width:265px}.paper-carrier{top:240px}}@media (orientation:landscape) and (max-height:550px){.story-stage{min-height:650px}.scene-knocking .objects-space{height:325px}.prop-door{width:260px}.story-stage.reading{min-height:0}.scene-envelope .objects-space{height:300px}}.reduced-motion .prop,.reduced-motion .paper-carrier{transition:none!important}.reduced-motion .birthday-meteor,.reduced-motion .floating-motif{display:none}.reduced-motion .route-halo{opacity:.25;animation:none}.scene-cake .objects-space{height:380px}.phase-light-candle .cake-hit{animation:.28s both cake-rebound}.scene-letter.phase-fold-letter .objects-space{visibility:visible;z-index:0;width:min(800px,100%);height:410px;top:180px;left:50%;transform:translate(-50%)}.scene-letter.phase-fold-letter .prop-cake{visibility:visible;opacity:.6;top:35px;transform:translate(-50%)scale(.75)}.scene-giftReveal .prop-cake{width:400px;top:0}.scene-giftReveal .objects-space{height:345px}.phase-gift-route .gift-light-arc{opacity:0}.door-hit[data-knock="0"] .door-leaf{animation:none}.folded-letter .letter-paragraph .letter-phrase{opacity:0}.door-art.open .door-leaf{animation:none}.scene-letter.phase-fold-letter .objects-space{left:calc(50% - min(400px,50%));transform:none}@media (max-width:760px){.scene-cake .objects-space{height:315px}.scene-doorstep .objects-space{height:300px}.scene-doorstep .prop-cake{top:0}.scene-doorstep .prop-envelope{top:160px}}@media (max-width:380px){.scene-cake .objects-space{height:285px}}@media (max-width:760px){.scene-giftReveal .prop-cake{width:330px;top:0}.scene-giftReveal .objects-space{height:275px}}@media (prefers-reduced-motion:reduce){.letter-phrase{opacity:1!important;animation:none!important}.floating-motif,.birthday-meteor{display:none}.route-halo{opacity:.25;animation:none!important}}.scene-knocking .story-stage{overflow-x:clip}.studio-tools{margin:16px 8px;position:relative;bottom:auto;left:auto}@font-face{font-family:PaperHand;src:url(../assets/fonts/paper-hand.woff2)format("woff2");font-display:swap;font-weight:400}.letter-scene{text-align:left;width:100%;max-width:850px;margin:0 auto;padding:25px 35px 30px;position:relative}.letter-scene .letter-meta{color:#859078;letter-spacing:1px;justify-content:space-between;max-width:760px;margin:0 auto 15px;font-size:13px;display:flex}.paper-deck-frame{isolation:isolate;transform-origin:0 0;touch-action:pan-y pinch-zoom;width:100%;max-width:760px;height:clamp(390px,100svh - 218px,790px);margin:0 auto;position:relative;overflow:visible}.paper-deck-frame .swiper-wrapper{height:100%}.paper-sheet{pointer-events:none;width:100%;height:100%}.paper-sheet[data-current=true]{pointer-events:auto}.paper-deck-frame.swiper{overflow:visible}.paper-deck-frame:focus{outline:none}.paper-deck-frame.swiper-creative .paper-sheet{overflow:visible}.paper-sheet .sheet-motion.letter-paper{transform-origin:50%;text-align:left;background-color:#fffaf0;background-image:radial-gradient(#9e845615 .6px,#0000 .8px),repeating-linear-gradient(0deg,#0000 0 29px,#b7ac8c0c 29px 30px);background-size:5px 7px,auto;border:1px solid #ddd7c4;border-radius:3px;flex-direction:column;width:100%;max-width:none;height:100%;margin:0;padding:0;animation:none;display:flex;position:relative;overflow:visible;box-shadow:0 12px 30px #79674613,0 2px 5px #7967460c}.paper-sheet .paper-heading{color:#93977c;letter-spacing:1px;border-bottom:1px solid #d9d3bf75;flex:0 0 48px;align-items:center;gap:9px;margin:0 28px;padding:0;font-size:12px;display:flex;position:relative}.paper-sheet .paper-heading svg{width:15px;height:15px}.paper-sheet .paper-heading i{letter-spacing:1.5px;margin-left:auto;font:9px Georgia,serif}.paper-reading{overscroll-behavior:contain;scroll-behavior:auto;scrollbar-width:thin;scrollbar-color:#c9c6b49c transparent;touch-action:pan-y pinch-zoom;-webkit-user-select:text;user-select:text;cursor:text;outline:none;flex:1;min-height:0;padding:22px 42px 18px;position:relative;overflow:auto}.paper-reading:focus-visible{outline-offset:-7px;outline:1px dashed #a2b397}.sheet-ink{min-height:100%;transition:opacity .2s;display:flow-root}.paper-sheet[aria-hidden=true] .sheet-ink{opacity:0;pointer-events:none}.paper-block{display:contents}.paper-sheet[aria-hidden=true] .paper-reading{overflow:hidden}.paper-reading .letter-paragraph{letter-spacing:.18px;text-align:left;color:#354c40;overflow-wrap:break-word;margin:0 0 9px;font-family:PaperHand,Letter,Kaiti SC,STKaiti,KaiTi,serif;font-size:22px;font-weight:400;line-height:1.62;position:static}.paper-reading .letter-paragraph strong{font-weight:700}.paper-reading .salutation{margin-bottom:18px;font-size:25px;line-height:1.65}.paper-reading .signature,.paper-reading .date{clear:both;text-align:right;padding-right:10px;font-size:21px}.paper-reading .signature{margin-top:19px}.paper-reading .date{margin-top:2px}.paper-break{clear:both;opacity:.55;align-items:center;gap:10px;height:13px;margin:19px 0;display:flex}.paper-break>span{background:#cbd0b8;flex:1;height:1px}.paper-break svg{color:#a2b092;width:10px;height:10px}.paper-empty{clear:both;height:8px}.sheet-footer{color:#a4a087;letter-spacing:1.6px;border-top:1px solid #ded6bf55;flex:0 0 31px;justify-content:space-between;align-items:center;padding:0 28px;font:9px Georgia,serif;display:flex}.paper-sheet .letter-sticker{float:left;clear:none;shape-outside:inset(0 round 22px);shape-margin:11px;z-index:1;width:145px;max-width:36%;margin:5px 19px 11px 0;position:relative;transform:rotate(-3deg)}.paper-sheet .letter-sticker img{object-fit:contain;filter:drop-shadow(0 4px 3px #72624619);-webkit-user-select:none;user-select:none;-webkit-user-drag:none;background:0 0;border:0;width:100%;max-width:none;height:auto;display:block}.paper-sheet .letter-sticker button{touch-action:manipulation;background:0 0;border:0;width:100%;margin:0;padding:0;display:block}.paper-sheet .letter-sticker button:disabled{opacity:1}.paper-sheet .letter-sticker figcaption{text-align:center;color:#9b9e83;margin-top:5px;font-family:Letter,serif;font-size:9px}.paper-sheet .sticker-pencil{z-index:0;opacity:.55;width:calc(100% + 18px);bottom:-11px;left:-9px}.paper-sheet .sticker-zoom{background:#faf6eacc;font-size:10px;bottom:1px;right:1px}.paper-sheet[data-layout=upper-left] .letter-sticker{shape-outside:ellipse(49% 49% at 50% 50%);width:110px;margin-top:3px;transform:rotate(-5deg)}.paper-sheet[data-layout=right-wrap] .letter-sticker,.paper-sheet[data-layout=upper-right] .letter-sticker{float:right;margin:7px 0 13px 19px;transform:rotate(3deg)}.paper-sheet[data-page="2"] .letter-sticker{shape-outside:ellipse(49% 49% at 50% 50%);width:157px}.paper-sheet[data-page="3"] .letter-sticker{width:155px;transform:rotate(-2deg)}.paper-sheet[data-page="4"] .letter-sticker{shape-outside:ellipse(49% 49% at 50% 50%);width:106px;margin:9px 21px 15px 0;transform:rotate(-4deg)}.paper-sheet[data-page="5"] .letter-sticker{shape-outside:ellipse(49% 49% at 50% 50%);width:136px;transform:rotate(2deg)}.paper-sheet[data-page="6"] .letter-sticker{width:151px;transform:rotate(-3deg)}.paper-sheet[data-page="7"] .letter-sticker{width:160px;transform:rotate(3deg)}.paper-sheet[data-page="8"] .letter-sticker{width:139px;transform:rotate(-4deg)}.paper-drag-edge{z-index:5;cursor:grab;touch-action:pan-y pinch-zoom;-webkit-user-select:none;user-select:none;background:0 0;border:0;width:23px;padding:0;position:absolute;top:50px;bottom:31px}.paper-drag-edge:active{cursor:grabbing}.paper-edge-left{left:0}.paper-edge-right{right:0}.paper-drag-edge:focus-visible{outline-offset:-5px;background:#9bb68b0c;outline:1px dashed #8b9e77}.paper-drag-edge:disabled{cursor:default}.reader-annotation{color:#979b80;letter-spacing:.6px;justify-content:flex-end;align-items:center;gap:10px;max-width:760px;min-height:32px;margin:17px auto 0;font-size:13px;transition:opacity .5s;display:flex}.reader-annotation svg{flex-shrink:0;width:64px;height:21px}.reader-annotation.quiet{opacity:.48}.reader-live{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.paper-reading .letter-end{clear:both;text-align:center;color:#87947a;border-top:1px dashed #b9c3a570;max-width:none;margin:24px 0 5px;padding:19px 0 9px;font-size:15px}.paper-reading .letter-end p{margin:0;font-size:15px;line-height:1.8}.paper-reading .ack-stars{margin:9px 0 0;font-size:13px;display:block}.reader-return{color:#899c80;text-underline-offset:5px;background:0 0;border:0;min-height:40px;margin:14px auto 0;padding:8px;font-size:12px;text-decoration:underline;display:block}.paper-close-control{color:#7f946d;z-index:8;cursor:grab;opacity:.3;touch-action:none;background:linear-gradient(135deg,#0000 49%,#ded7bd70 50%,#eee6ce 55%,#fffaf0 72%);border:0;width:49px;height:49px;padding:0;transition:opacity .3s,filter .3s;position:absolute;bottom:0;right:0}.paper-close-control[data-close-ready=true]{opacity:1;filter:drop-shadow(-2px -2px 2px #6c644219)}.paper-close-control span{font-size:17px;position:absolute;bottom:4px;right:5px}.paper-close-control:focus-visible{outline-offset:-4px;outline:1px dashed #869d73}.paper-close-control:disabled{cursor:default}.paper-deck-frame:not(.swiper-initialized) .swiper-wrapper{display:block}.paper-deck-frame:not(.swiper-initialized) .paper-sheet{z-index:calc(8 - var(--paper-layer,1));position:absolute;inset:0}.paper-deck-frame:not(.swiper-initialized) .paper-sheet .sheet-motion{transform:translate(calc(var(--paper-layer,1)*8px),calc(var(--paper-layer,1)*9px)) scale(calc(1 - var(--paper-layer,1)*.014))}.paper-deck-frame:not(.swiper-initialized) .paper-sheet[data-current=true]{z-index:10}.paper-deck-frame:not(.swiper-initialized) .paper-sheet[data-current=true] .sheet-motion{transform:none}.folded-letter{max-width:none;padding:0}.folded-letter .letter-meta,.folded-letter .reader-annotation,.folded-letter .reader-live{display:none}.folded-letter .paper-deck-frame{height:630px}.folded-letter .sheet-ink{opacity:0}.folded-letter .paper-close-control{display:none}.phase-unfold-letter .paper-carrier{z-index:5;height:670px;overflow:visible}.phase-unfold-letter .prop-envelope{opacity:0;transition-delay:.65s;transform:translate(-50%)translateY(35px)rotate(-5deg)}.scene-envelope .story-stage{overflow:hidden}.scene-letter .paper-carrier{overflow:visible}.scene-letter.phase-fold-letter .paper-carrier{opacity:0;transform-origin:50% 100%;transition:transform .62s cubic-bezier(.3,.65,.3,1),opacity .58s;transform:translate(-26vw,32px)rotate(-4deg)scale(.78)}.scene-letter .story-stage{overflow:hidden}.scene-letter .letter-scene{min-height:calc(100svh - 86px)}.envelope-annotation{color:#8e987c;pointer-events:none;justify-content:center;align-items:center;gap:11px;margin-top:0;font-size:14px;display:flex}.envelope-annotation svg{width:58px;height:40px}.envelope-annotation span{animation:.7s both annotation-arrive}.scene-envelope .envelope-art:hover:enabled{filter:drop-shadow(0 2px 5px #8ba4761a)}@keyframes annotation-arrive{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}@media (max-width:760px){.letter-scene{padding:19px 21px 23px}.letter-scene .letter-meta{letter-spacing:.4px;margin-bottom:13px;font-size:11px}.paper-deck-frame{height:clamp(360px,100svh - 185px,760px)}.paper-sheet .paper-heading{flex-basis:42px;margin:0 19px;font-size:11px}.paper-sheet .paper-heading i{font-size:8px}.paper-reading{padding:17px 25px 18px}.paper-reading .letter-paragraph{letter-spacing:.1px;margin-bottom:8px;font-size:20px;line-height:1.64}.paper-reading .salutation{margin-bottom:17px;font-size:22px}.paper-reading .signature,.paper-reading .date{padding-right:5px;font-size:19px}.paper-break{margin:16px 0}.sheet-footer{flex-basis:29px;padding:0 19px;font-size:8px}.paper-sheet .letter-sticker,.paper-sheet[data-page] .letter-sticker{shape-margin:8px;width:105px;max-width:38%;margin:4px 12px 10px 0}.paper-sheet[data-layout=right-wrap] .letter-sticker,.paper-sheet[data-layout=upper-right] .letter-sticker{margin:5px 0 11px 12px}.paper-sheet[data-page="1"] .letter-sticker,.paper-sheet[data-page="4"] .letter-sticker{width:85px}.paper-sheet[data-page="3"] .letter-sticker{width:110px}.paper-sheet[data-page="7"] .letter-sticker{width:112px}.paper-sheet .letter-sticker figcaption{font-size:8px}.paper-drag-edge{width:17px;top:44px;bottom:29px}.reader-annotation{letter-spacing:.1px;gap:5px;min-height:30px;margin-top:15px;font-size:11px}.reader-annotation svg{width:45px}.paper-close-control{width:43px;height:43px}.paper-close-control span{font-size:15px}.scene-letter .letter-scene{min-height:calc(100svh - 64px)}.folded-letter .paper-deck-frame{height:640px}.phase-unfold-letter .paper-carrier{height:670px}.scene-letter.phase-fold-letter .paper-carrier{transform:translate(-32vw,38px)rotate(-5deg)scale(.8)}}@media (max-width:370px){.letter-scene{padding-left:17px;padding-right:21px}.paper-reading{padding-left:22px;padding-right:22px}.paper-reading .letter-paragraph{font-size:19px}.paper-sheet[data-page] .letter-sticker{width:90px}.paper-sheet[data-page="1"] .letter-sticker,.paper-sheet[data-page="4"] .letter-sticker{width:78px}.reader-annotation{font-size:10px}}@media (max-width:760px){.letter-scene .paper-deck-frame{width:calc(100% - 12px);margin-left:0;margin-right:12px}}@media (orientation:landscape) and (max-height:550px){.paper-deck-frame{height:360px}.letter-scene{padding-top:16px}.scene-letter .letter-scene,.scene-letter .story-stage{min-height:0}.paper-reading .letter-paragraph{font-size:20px}.paper-sheet .letter-sticker{width:125px}.letter-scene .letter-meta{margin-bottom:10px}.scene-letter .site-header{height:52px}.scene-letter .letter-scene{padding:9px 32px 12px}.scene-letter .letter-meta{margin-bottom:7px;font-size:11px}.scene-letter .paper-deck-frame{height:max(180px,100svh - 130px)}.scene-letter .paper-heading{flex-basis:37px}.scene-letter .sheet-footer{flex-basis:25px}.scene-letter .reader-annotation{min-height:24px;margin-top:8px;font-size:11px}.scene-letter .paper-drag-edge{top:38px;bottom:25px}}.reduced-motion .sheet-ink,.reduced-motion .paper-close-control{transition:none}.reduced-motion .envelope-annotation span{animation:none}.reduced-motion .scene-letter.phase-fold-letter .paper-carrier{transform:none}@media (prefers-reduced-motion:reduce){.sheet-ink,.paper-close-control{transition:none}.envelope-annotation span{animation:none}}@font-face{font-family:Keepsake;src:url(../assets/fonts/keepsake.woff2)format("woff2");font-display:swap;font-weight:400}.wish-reveal{isolation:isolate;text-align:center;grid-template-columns:minmax(0,1fr);max-width:440px;height:110px;margin:60px auto 26px;scroll-margin-block:24px;transition:height .68s cubic-bezier(.22,.72,.2,1);display:grid;position:relative}.wish-revealing,.wish-ready{height:346px}.wish-revealing{overflow:hidden}.wish-seed,.wish-surprise-slot{grid-area:1/1;min-width:0}.wish-seed{z-index:2;box-sizing:border-box;flex-direction:column;align-self:start;align-items:center;display:flex;position:relative}.wish-hold-target{place-items:center;width:58px;height:58px;display:grid;position:relative}.wish-hold-star{cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;outline-offset:4px;background:0 0;border:0;width:58px;height:58px;padding:13px;display:block;position:relative}.wish-candy{filter:drop-shadow(0 2px 3px #c5ad7030);transform-origin:50%;width:32px;height:32px;transition:transform .26s,filter .26s;display:block}.wish-idle .wish-hold-star:hover:enabled .wish-candy{transform:translateY(-1.5px)rotate(-4deg)}.wish-hold-star:focus-visible{border-radius:50%;outline:1px dashed #a6b88c}.wish-progress-ring{pointer-events:none;opacity:0;width:58px;height:58px;transition:opacity .18s;position:absolute;inset:0;overflow:visible;transform:rotate(-90deg)}.wish-progress-ring circle{fill:none;stroke:#b8c8a14d;stroke-width:1.5px}.wish-progress-ring circle+circle{stroke:#bd9b56;stroke-width:3px;stroke-dasharray:1;stroke-linecap:round}.wish-holding .wish-progress-ring{opacity:.85}.wish-holding .wish-candy{filter:drop-shadow(0 2px 5px #c69c585c);transform:scale(1.14)rotate(4deg)}.wish-seed>p{letter-spacing:0!important;color:#949d85!important;margin:10px 12px 0!important;font-size:13px!important;line-height:1.9!important}.wish-sending .wish-candy{animation:1s cubic-bezier(.3,.05,.2,1) both wish-star-send}.wish-sending .wish-progress-ring{opacity:0;transition:opacity .3s}.wish-sending .wish-seed>p{opacity:0;transition:opacity .4s}.wish-revealing .wish-seed{opacity:0;visibility:hidden;pointer-events:none}.wish-revealing .wish-candy{opacity:0;transform:translate(45px,-48px)scale(.12)rotate(35deg)}.wish-send-trace{z-index:3;pointer-events:none;opacity:.68;width:min(360px,100%);height:240px;position:absolute;top:0;left:50%;overflow:visible;transform:translate(-50%)}.wish-send-trace path{fill:none;stroke:#c5ad6e;stroke-width:1.1px;stroke-linecap:round;stroke-dasharray:1;animation:1s both wish-trace-send}.wish-send-trace circle{fill:#ebd68e;opacity:0;animation:1.3s .6s both wish-answer}.wish-ready .wish-send-trace{opacity:0;transition:opacity .45s}.wish-reveal .wish-sent-note{z-index:4;pointer-events:none;animation:.6s both wish-note-arrive;position:absolute;top:0;left:12px;right:12px;color:#949d85!important;letter-spacing:.5px!important;margin:0!important;font-size:12px!important;line-height:1.6!important}.wish-surprise-slot{z-index:2;box-sizing:border-box;min-height:346px;padding-top:32px;animation:.68s cubic-bezier(.22,.72,.2,1) both wish-box-arrive;position:relative}.wish-surprise-slot .surprise-widget{margin:0 auto;padding-top:0}.wish-surprise-slot .surprise-invitation{outline-offset:5px}.wish-revealing .wish-surprise-slot .box-front{animation:1s both wish-box-answer}.wish-reduced{transition-duration:.18s}.wish-reduced .wish-candy{transition:none}.wish-reduced.wish-sending .wish-candy,.wish-reduced .wish-send-trace path{animation-duration:.18s}.wish-reduced .wish-send-trace circle{animation-duration:.18s;animation-delay:0s}.wish-reduced .wish-surprise-slot,.wish-reduced .wish-sent-note{animation-duration:.18s}.wish-reduced .wish-seed,.wish-reduced .wish-progress-ring,.wish-reduced .wish-seed>p{transition-duration:.1s}@keyframes wish-star-send{0%{opacity:1;transform:scale(1.14)rotate(4deg)}48%{opacity:1;transform:translate(28px,-29px)scale(.7)rotate(23deg)}to{opacity:0;transform:translate(45px,-48px)scale(.12)rotate(35deg)}}@keyframes wish-trace-send{0%{stroke-dashoffset:1px;opacity:0}18%{opacity:.7}to{stroke-dashoffset:0;opacity:.5}}@keyframes wish-answer{0%{opacity:0;transform-origin:180px 65px;transform:scale(.3)}38%{opacity:1}to{opacity:0;transform-origin:180px 65px;transform:scale(3)}}@keyframes wish-box-arrive{0%{opacity:0;transform:translateY(16px)scale(.91)}to{opacity:1;transform:none}}@keyframes wish-note-arrive{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}@keyframes wish-box-answer{0%{box-shadow:inset 0 2px 3px #fff9,0 0 30px #eac57966}to{box-shadow:inset 0 2px 3px #fff9,0 0 #eac57900}}@media (max-width:600px){.wish-reveal{height:104px;margin-top:45px}.wish-revealing,.wish-ready{height:340px}.wish-seed>p{max-width:320px;margin-top:10px!important;font-size:12px!important}.wish-surprise-slot{min-height:340px;padding-top:28px}.wish-surprise-slot .surprise-widget{margin:0 auto}}.surprise-widget{text-align:center;isolation:isolate;max-width:420px;margin:52px auto 28px;padding:12px 0 4px;position:relative}.surprise-invitation{color:#738368;cursor:pointer;width:280px;height:262px;font:inherit;outline-offset:8px;background:0 0;border:0;flex-direction:column;align-items:center;margin:0 auto;display:flex;position:relative}.surprise-invitation:before{content:"";filter:blur(5px);background:radial-gradient(#53613b1f,#0000 70%);border-radius:50%;width:206px;height:32px;position:absolute;top:176px;left:50%;transform:translate(-50%)}.surprise-invitation:disabled{visibility:hidden}.surprise-invitation>.surprise-box-art{margin-top:42px;transition:transform .5s;transform:perspective(750px)rotateX(-12deg)rotateY(-18deg)scale(.85)}.surprise-invitation:hover:enabled>.surprise-box-art{transform:perspective(750px)rotateX(-16deg)rotateY(-14deg)scale(.87)}.surprise-invitation:hover .box-lid{transform:rotateX(94deg)}.invitation-line{color:#76856b;letter-spacing:.5px;font-size:15px;line-height:1.8;position:absolute;bottom:5px;left:15px;right:15px}.invitation-line svg{opacity:.55;fill:none;stroke:currentColor;stroke-width:1px;width:74px;height:29px;position:absolute;top:-27px;right:12px}.tilt-permission-note{color:#8a947d!important;letter-spacing:0!important;margin:10px 12px 0!important;font-size:12px!important;line-height:1.8!important}.surprise-stage{z-index:1100;isolation:isolate;color:#435740;overscroll-behavior:contain;outline:none;font-family:Letter,Microsoft YaHei,serif;position:fixed;overflow:hidden}.surprise-backdrop{z-index:0;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:linear-gradient(165deg,#faf7eaf5,#edf0ddfa);transition:background .65s,opacity .48s;animation:.6s both surprise-light-in;position:absolute;inset:0}.surprise-spotlight{z-index:1;pointer-events:none;background:radial-gradient(at 50% 37%,#fffbe9a1 0,#0000 57%),radial-gradient(at 50% 89%,#b9c9a93d,#0000 45%);transition:opacity .65s;position:absolute;inset:0}.surprise-masthead{top:max(34px,calc(env(safe-area-inset-top) + 22px));white-space:nowrap;z-index:6;color:#7b8a6c;letter-spacing:2.4px;font-family:Georgia,serif;font-size:10px;position:absolute;left:50%;transform:translate(-50%)}.surprise-close,.surprise-mute{z-index:10;color:#7b8970;font:inherit;cursor:pointer;min-width:44px;min-height:44px;top:max(18px,env(safe-area-inset-top));background:0 0;border:0;padding:5px;line-height:1.2;position:absolute}.surprise-close{align-items:center;gap:8px;display:flex;right:22px}.surprise-close>span{font-family:Georgia,serif;font-size:25px;font-weight:300}.surprise-close i{font-size:12px;font-style:normal}.surprise-mute{font-size:13px;left:22px}.surprise-close:disabled{opacity:.2;cursor:default}.surprise-stars{z-index:2;touch-action:none;outline:none;width:100%;height:100%;transition:opacity .48s;position:absolute;inset:0}.surprise-tether{z-index:4;pointer-events:none;color:#849476;opacity:.38;width:100%;height:100%;transition:opacity .4s;position:absolute;inset:0}.surprise-tether path{fill:none;stroke:currentColor;stroke-width:1.15px;stroke-linecap:round}.surprise-box-position{z-index:3;width:180px;height:150px;transform:translate(-50%,-50%) scale(var(--box-scale,1)) rotate(var(--box-angle,0deg));transform-origin:50%;will-change:transform;transition:opacity .65s,filter .65s;position:absolute}.surprise-box-position:before{content:"";z-index:-1;filter:blur(6px);background:radial-gradient(#4e603527,#0000 70%);border-radius:50%;height:32px;position:absolute;top:152px;left:-35px;right:-35px}.surprise-box-art{width:180px;height:150px;transform-style:preserve-3d;position:relative;transform:perspective(750px)rotateX(-12deg)rotateY(-18deg)}.box-body-face{box-sizing:border-box;backface-visibility:visible;background:#d6dfc9;border:1px solid #a8b898;height:140px;position:absolute;top:10px}.box-front{background:linear-gradient(130deg,#e9eddc,#d2dec2 70%);border-radius:2px;width:180px;left:0;transform:translateZ(42px);box-shadow:inset 0 2px 3px #fff9}.box-back{background:#b7c7a3;width:180px;left:0;transform:translateZ(-42px)}.box-left{background:linear-gradient(90deg,#aebf9a,#c4d1b1);width:84px;left:-42px;transform:rotateY(-90deg)}.box-right{background:linear-gradient(90deg,#c4d1b1,#b8c8a5);width:84px;left:138px;transform:rotateY(90deg)}.box-bottom{background:#a6b990;width:180px;height:84px;top:108px;left:0;transform:rotateX(90deg)}.box-interior{background:radial-gradient(#8e9f7880,#abbc98);border:1px solid #a9b794;width:160px;height:64px;position:absolute;top:103px;left:10px;transform:rotateX(90deg)}.box-rim{box-sizing:border-box;background:#889b6b12;border:8px solid #e6ecd7;width:180px;height:84px;position:absolute;top:-32px;left:0;transform:rotateX(90deg);box-shadow:0 0 0 1px #a9b994,inset 0 0 8px #50643c42}.box-band{background:linear-gradient(90deg,#ead9b4,#fff0d2,#e8d6ac);border-left:1px solid #fff4;border-right:1px solid #b7a17733;width:22px;position:absolute;top:0;bottom:0;left:79px}.box-front>.clover{color:#90a478;filter:drop-shadow(0 1px #fff8);width:42px;height:42px;position:absolute;top:31px;left:69px}.box-front>i{color:#7e8e69;letter-spacing:1.6px;background:#f9f6e6c9;border:1px solid #c5ceae;border-radius:1px;padding:4px 0;font:8px/1.6 Georgia,serif;position:absolute;top:85px;left:54px;right:54px}.box-lid-hinge{width:180px;height:0;transform-style:preserve-3d;position:absolute;top:10px;left:0;transform:translateZ(-42px)}.box-lid{transform-origin:50% 0;width:190px;height:90px;transform-style:preserve-3d;background:linear-gradient(140deg,#f0efd9,#e1e8cc);border:1px solid #a8b994;border-radius:3px;transition:transform .8s cubic-bezier(.2,.72,.18,1);position:absolute;top:0;left:-5px;transform:rotateX(90deg);box-shadow:0 4px #b8c8a1,0 5px 1px #87997044}.lid-open .box-lid{transform:rotateX(195deg)}.lid-back{backface-visibility:hidden;background:linear-gradient(140deg,#e7e8cf,#cdd8b8);border:1px solid #b2c09f;position:absolute;inset:1px;transform:translateZ(-1px)rotateX(180deg)}.lid-band{background:#f1deb8cc;border-inline:1px solid #b79d6244;width:22px;position:absolute;top:0;bottom:0;left:85px}.box-lid>.clover{color:#94a87b;backface-visibility:hidden;width:34px;height:34px;position:absolute;top:19px;left:78px;transform:translateZ(1px)}.box-lid>i{color:#8b986f;letter-spacing:1.7px;text-align:center;backface-visibility:hidden;font:7px Georgia,serif;position:absolute;bottom:9px;left:30px;right:30px;transform:translateZ(1px)}.box-mouth-anchor,.box-mouth-tip{pointer-events:none;width:2px;height:2px;position:absolute;top:8px;left:85px;transform:translateZ(4px)}.box-mouth-tip{top:-10px}.box-hit{z-index:15;cursor:grab;touch-action:none;outline-offset:6px;background:0 0;border:0;width:264px;height:290px;position:absolute;top:-100px;left:-42px}.box-hit:active{cursor:grabbing}.box-hit:disabled{pointer-events:none}.box-hit:focus-visible{outline:1px dashed #7b9466}.box-card-corner{z-index:16;width:90px;height:90px;box-shadow:none;color:#967c45;cursor:pointer;touch-action:none;background:0 0;border:0;padding:0;animation:.6s both card-peek;position:absolute;top:-26px;left:47px;transform:rotate(-8deg)}.card-corner-art{box-sizing:border-box;letter-spacing:2px;background:linear-gradient(140deg,#fff6d9,#dac488);border:1px solid #c0a76d;border-radius:4px;place-items:center;width:56px;height:36px;font:8px Georgia,serif;display:grid;position:absolute;top:27px;left:17px;box-shadow:0 2px 4px #455b3026}.card-corner-art:before{content:"";border:1px solid #b9a37255;border-radius:2px;position:absolute;inset:4px}.box-card-corner:focus-visible{outline:none}.box-card-corner:focus-visible .card-corner-art{outline-offset:4px;outline:2px solid #7b8d61}.surprise-guide{z-index:5;pointer-events:none;text-align:center;color:#667b56;font-family:Keepsake,Letter,serif;transition:opacity .45s;animation:.65s both surprise-note-in;position:absolute;inset:68% 20px auto}.surprise-guide>svg{display:none}.surprise-guide p{letter-spacing:1px;margin:0 0 8px;font-size:19px;line-height:1.6}.star-counter{letter-spacing:2px;color:#859677;font:10px/1.5 Georgia,Letter,serif}.universal-card-position{z-index:7;aspect-ratio:1.56;perspective:1100px;pointer-events:none;width:min(420px,100% - 48px);position:absolute;top:48%;left:50%;transform:translate(-50%,-50%)}.universal-card{box-sizing:border-box;pointer-events:auto;color:#3f5540;width:100%;height:100%;transform-style:preserve-3d;touch-action:none;-webkit-user-select:none;user-select:none;outline-offset:8px;cursor:grab;will-change:transform;background:radial-gradient(at 28% 14%,#fffdf2,#faf5e4 62%,#f3e9cf);border:1px solid #d4bd7e;border-radius:17px;padding:28px 32px;font-family:Keepsake,Letter,Microsoft YaHei,serif;position:relative;box-shadow:0 3px #d7c895,0 5px #e8dcc0,0 25px 50px #26341d3a,inset 0 0 0 7px #fffdf580}.universal-card:before{content:"";pointer-events:none;border:1px solid #b9a76d6b;border-radius:10px;position:absolute;inset:10px}.universal-card:after{content:"";border-radius:inherit;opacity:.25;pointer-events:none;z-index:0;background-image:radial-gradient(#baa97566 .6px,#0000 .6px);background-size:4px 4px;position:absolute;inset:0}.card-emboss{z-index:2;color:#98a77c;align-items:center;gap:8px;display:flex;position:relative}.card-emboss>.clover{filter:drop-shadow(0 1px #fff);width:20px;height:20px}.card-emboss>span{letter-spacing:1.7px;font:8px Georgia,serif}.card-owner{z-index:2;color:#758460;letter-spacing:2px;margin-top:19px;font-size:15px;display:block;position:relative}.universal-card h3{z-index:2;letter-spacing:8px;margin:4px 0 5px;font-size:39px;font-weight:400;line-height:1.3;position:relative}.card-promise{z-index:2;letter-spacing:1px;color:#768362;margin:5px 0 15px;font-size:16px;position:relative}.card-bottom{z-index:3;color:#496243;justify-content:space-between;align-items:center;gap:12px;font-size:15px;display:flex;position:absolute;bottom:27px;left:32px;right:32px}.card-bottom i{letter-spacing:1.5px;color:#9e8752;white-space:nowrap;font:9px Georgia,serif}.card-shine{z-index:1;border-radius:inherit;pointer-events:none;background:radial-gradient(ellipse at var(--shine-x,50%) var(--shine-y,35%),#fffdfa88,transparent 65%);mix-blend-mode:screen;opacity:.65;position:absolute;inset:0}.card-edge{border-radius:inherit;pointer-events:none;border:1px solid #f9efc0b3;position:absolute;inset:-1px;box-shadow:inset 0 1px 2px #fff9}.card-put-away{z-index:5;color:#d6dec5;cursor:grab;touch-action:none;letter-spacing:1px;background:0 0;border:0;justify-content:center;align-items:center;gap:12px;min-width:230px;min-height:64px;font:16px Keepsake,Letter,serif;display:flex;position:absolute;top:calc(100% + 18px);left:50%;transform:translate(-50%)}.card-put-away svg{fill:none;stroke:#cbd6b4;stroke-width:1px;opacity:.65;width:55px;height:28px;position:absolute;top:-17px;left:48px}.card-put-away i{opacity:.7;font:15px Georgia,serif}.card-put-away:disabled{visibility:hidden;pointer-events:none}.card-turn-back{z-index:6;text-align:center;letter-spacing:1px;color:#b9c9a4;pointer-events:none;font-size:13px;position:absolute;bottom:34px;left:20px;right:20px}.phase-flight .surprise-backdrop,.phase-card .surprise-backdrop,.phase-collecting .surprise-backdrop{background:linear-gradient(140deg,#3a4e37f5,#243921f7)}.phase-flight .surprise-spotlight,.phase-card .surprise-spotlight,.phase-collecting .surprise-spotlight{background:radial-gradient(at 50% 48%,#b4b77b3d,#0000 64%)}.phase-flight .surprise-box-position,.phase-card .surprise-box-position,.phase-collecting .surprise-box-position{opacity:.08;filter:blur(2px);pointer-events:none}.phase-flight .surprise-stars,.phase-card .surprise-stars,.phase-collecting .surprise-stars{opacity:0;pointer-events:none}.phase-flight .surprise-close,.phase-card .surprise-close,.phase-collecting .surprise-close,.phase-flight .surprise-mute,.phase-card .surprise-mute,.phase-collecting .surprise-mute{color:#c1cfb2}.phase-flight .surprise-masthead,.phase-card .surprise-masthead,.phase-collecting .surprise-masthead{color:#a4b88e}.phase-collecting .card-put-away{opacity:0;pointer-events:none}.phase-collecting .surprise-backdrop,.phase-closing .surprise-backdrop,.phase-closing .surprise-spotlight{opacity:0}.phase-closing .surprise-box-position,.phase-closing .surprise-stars,.phase-closing .surprise-guide,.phase-closing .surprise-tether,.phase-closing .universal-card-position,.phase-closing .surprise-masthead{opacity:0;pointer-events:none;transition:opacity .48s}.surprise-reduced .box-lid,.surprise-reduced .surprise-backdrop,.surprise-reduced .surprise-stars,.surprise-reduced .surprise-box-position{transition-duration:.1s!important}.surprise-reduced *{animation:none!important}@keyframes surprise-light-in{0%{opacity:0}to{opacity:1}}@keyframes surprise-note-in{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}@keyframes card-peek{0%{opacity:0;transform:translateY(14px)rotate(-8deg)}to{opacity:1;transform:translateY(0)rotate(-8deg)}}@media (max-width:600px){.surprise-widget{margin-top:30px}.surprise-invitation{width:250px;height:250px}.invitation-line{font-size:14px}.tilt-permission-note{font-size:11px!important}.surprise-masthead{letter-spacing:1.5px;top:max(33px,calc(env(safe-area-inset-top) + 20px));font-size:8px}.surprise-close{gap:4px;right:12px}.surprise-close i{font-size:10px}.surprise-mute{font-size:12px;left:12px}.surprise-guide{inset:68% 20px auto}.surprise-guide p{font-size:17px}.universal-card{border-radius:14px;padding:23px}.card-emboss>span{letter-spacing:1px;font-size:6px}.card-emboss>.clover{width:17px;height:17px}.card-owner{letter-spacing:1.5px;margin-top:13px;font-size:14px}.universal-card h3{letter-spacing:6px;margin:4px 0;font-size:33px}.card-promise{margin:5px 0 10px;font-size:14px}.card-bottom{gap:6px;font-size:13px;bottom:22px;left:23px;right:23px}.card-bottom i{letter-spacing:1px;font-size:8px}.card-put-away{font-size:15px;top:calc(100% + 13px)}.card-turn-back{bottom:max(26px,env(safe-area-inset-bottom));font-size:11px}}@media (max-width:350px){.universal-card-position{width:calc(100% - 34px)}.universal-card{padding:19px 20px}.card-owner{margin-top:10px;font-size:13px}.universal-card h3{font-size:29px}.card-promise{font-size:13px}.card-bottom{font-size:12px;bottom:17px;left:20px;right:20px}.card-emboss>span{font-size:5.5px}}@media (orientation:landscape) and (max-height:500px){.surprise-masthead{top:22px}.surprise-guide{text-align:left;width:27%;inset:52% auto auto 4%}.surprise-guide p{margin-bottom:3px;font-size:15px}.surprise-tether{opacity:.23}.universal-card-position{width:min(355px,156dvh - 191.88px);top:45%}.universal-card{padding:18px 24px}.card-owner{margin-top:9px;font-size:12px}.universal-card h3{margin:3px 0;font-size:30px;line-height:1.15}.card-promise{margin:3px 0;font-size:13px}.card-bottom{font-size:12px;bottom:18px;left:24px;right:24px}.card-put-away{min-height:45px;font-size:13px;top:calc(100% + 5px)}.card-turn-back{max-width:120px;font-size:10px;bottom:16px;left:auto;right:16px}}
