@font-face{font-family:Kalam;font-style:normal;font-weight:300;font-display:swap;src:url(./Kalam-Light-DPABNfw9.ttf)format("truetype")}@font-face{font-family:Kalam;font-style:normal;font-weight:400;font-display:swap;src:url(./Kalam-Regular-ClNdlnkg.ttf)format("truetype")}:root{color:#77505f;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;background:#fbf5f2;font-family:Segoe UI,Arial,sans-serif;font-weight:400}*{box-sizing:border-box}body{min-width:280px;margin:0}button,input{font:inherit}button{cursor:pointer;color:inherit}button:disabled{cursor:default}button:focus-visible,input:focus-visible{outline-offset:6px;outline:2px solid #a7577c}button{-webkit-tap-highlight-color:transparent}main{place-items:center;min-height:100svh;padding:80px 24px 85px;display:grid;overflow:hidden}h1{letter-spacing:-.045em;margin:0 auto;font-family:Georgia,Times New Roman,serif;font-size:clamp(32px,5vw,60px);font-weight:400;line-height:1.22}p{margin:0}.ambient{z-index:-1;background:radial-gradient(at 50% 42%,#fffaf5 0%,#faf1ef 44%,#f1e6ef 100%);position:fixed;inset:0;overflow:hidden}.ambient>i{filter:blur(70px);opacity:.4;background:#f4c9d8;border-radius:50%;width:55vw;min-width:300px;height:55vw;min-height:300px;position:absolute;top:-30%;left:-20%}.ambient>i:nth-child(2){opacity:.3;background:#d9c9ea;top:45%;left:65%}.ambient>i:nth-child(3){opacity:.75;background:#fffdf0;top:20%;left:30%}.orbit{border:1px solid #b9809e14;border-radius:50%;width:75vw;height:75vw;position:absolute;top:calc(50% - 37.5vw);left:12.5vw}.orbit-two{width:86vw;height:86vw;top:calc(50% - 43vw);left:7vw}.waiting-scene{text-align:center;width:100%;max-width:780px}.waiting-scene h1{text-wrap:balance;max-width:740px}.ornament{color:#bb8c9f;justify-content:center;align-items:center;gap:19px;margin-bottom:32px;font-size:15px;display:flex}.ornament span{background:linear-gradient(90deg,#0000,#caa2b4);width:65px;height:1px}.ornament span:last-child{transform:rotate(180deg)}.countdown{justify-content:center;gap:clamp(8px,2vw,20px);margin:42px auto 36px;display:flex}.countdown>div{background:linear-gradient(150deg,#ffffffa3,#fff8fb40);border:1px solid #fffaf9;border-radius:15px;width:clamp(64px,15vw,112px);padding:17px 3px 15px;box-shadow:0 10px 30px #a8759020,inset 0 1px 1px #fff}.countdown span{font-variant-numeric:tabular-nums;color:#956078;font-family:Georgia,serif;font-size:clamp(32px,5vw,49px);font-weight:400}.countdown small{text-transform:uppercase;letter-spacing:.16em;color:#806773;margin-top:9px;font-size:10px;display:block}.fine-rule{background:#cba4b5;width:50px;height:1px;margin:0 auto 26px}.personal-message{white-space:pre-wrap;font-size:clamp(14px,1.8vw,17px);font-weight:400;line-height:1.8}.music-control{z-index:25;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background:#fffaf6c9;border:1px solid #fff;border-radius:30px;align-items:center;gap:10px;min-height:44px;padding:13px 17px;font-size:12px;display:flex;position:fixed;top:22px;right:24px;box-shadow:0 4px 20px #92637b0c}.sound-bars{align-items:center;gap:3px;height:17px;display:flex}.sound-bars i{background:#a66f8a;border-radius:3px;width:2px;height:7px}.sound-bars i:nth-child(2){height:15px}.sound-bars i:nth-child(3){height:11px}.sound-bars.playing i{animation:1s ease-in-out infinite alternate sound}.sound-bars i:nth-child(2){animation-delay:-.6s}.sound-bars i:nth-child(3){animation-delay:-.3s}@keyframes sound{to{transform:scaleY(.4)}}.opening-scene{text-align:center;width:100%;max-width:650px}.heart-area{width:280px;max-width:100%;margin:16px auto 0;position:relative}.heart-button{background:0 0;border:0;width:100%;padding:0 0 15px;font-size:16px}.heart-art{filter:drop-shadow(0 16px 30px #d787aa65);width:230px;margin:auto}.heart-art svg{width:100%;display:block;overflow:visible}.heart-button>span{margin-top:12px;display:block}.sparkles{pointer-events:none;position:absolute;top:40%;left:50%}.sparkles b{color:#c497c8;text-shadow:0 0 8px #fff;font-size:22px;font-weight:400;position:absolute}.sparkles b:nth-child(3n){color:#f0a1bc}.sparkles b:nth-child(4n){color:#fff}.light-ring{border:2px solid #efbad2;border-radius:50%;width:180px;height:180px;animation:1.5s ease-out forwards ring;position:absolute;top:-90px;left:-90px}@keyframes ring{0%{opacity:.7;transform:scale(.5)}to{opacity:0;transform:scale(2.3)}}.return-scene .personal-message{font-size:15px;line-height:1.55}.return-scene .heart-art{width:190px}.bouquet-scene{text-align:center;width:min(100%,720px);position:relative}.bouquet-scene h1{z-index:1;max-width:600px;font-size:clamp(29px,4vw,47px);position:relative}.bouquet-stage{width:100%;margin:22px auto 0}.bouquet-image{object-fit:contain;filter:drop-shadow(0 20px 26px #a36d7e20);width:auto;max-width:100%;height:min(63svh,620px);margin:auto;display:block}.note-position{z-index:2;position:absolute;top:62%;left:57%}.note-button{perspective:700px;background:0 0;border:0;width:112px;padding:0;position:relative}.envelope{background:#f4d9dc;border-radius:3px;width:94px;height:65px;display:block;position:relative;box-shadow:0 5px 12px #78536930}.envelope-pocket{clip-path:polygon(0 0,50% 53%,100% 0,100% 100%,0 100%);z-index:3;background:linear-gradient(145deg,#fff0e7,#f2d4d6);position:absolute;inset:0}.envelope-flap{clip-path:polygon(0 0,100% 0,50% 60%);transform-origin:top;z-index:4;background:#fff1e9;transition:transform .6s;position:absolute;inset:0}.envelope-open .envelope-flap{z-index:1;transform:rotateX(180deg)}.paper-slip{z-index:2;background:#fffaf0;transition:transform .7s .2s;position:absolute;inset:8px}.envelope-open .paper-slip{transform:translateY(-35px)}.seal{z-index:5;font-size:20px;transition:opacity .2s;position:absolute;top:26px;left:36px}.envelope-open .seal{opacity:0}.note-label{background:#fffaf0e8;border:1px solid #fff;border-radius:15px;width:175px;margin-top:12px;margin-left:-40px;padding:9px 10px;font-size:12px;display:block;box-shadow:0 3px 14px #ab7e8d15}.note-button:not(:disabled) .envelope{animation:3s ease-in-out infinite note-breathe}@keyframes note-breathe{50%{transform:translateY(-4px)}}.letter-backdrop{z-index:30;-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);perspective:1400px;background:#77536838;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.letter{text-align:left;color:#9d5e72;scrollbar-color:#d5b2bc transparent;scrollbar-width:thin;transform-origin:50% 80%;background:#fffaf0 repeating-linear-gradient(0deg,#a47d5310 0 .5px,#0000 .5px 4px);border:1px solid #fffef9;border-radius:5px 7px 9px 4px;outline:none;width:min(100%,690px);max-height:89svh;overflow:auto;box-shadow:0 24px 90px #53334135}.letter-toolbar{z-index:2;background:linear-gradient(#fffaf0 70%,#fffaf000);justify-content:flex-end;padding:10px 13px;display:flex;position:sticky;top:0}.letter-toolbar button{background:#f8e9e2;border:1px solid #ead5d5;border-radius:50%;width:44px;height:44px;font-size:28px;line-height:1}.letter article{padding:0 clamp(22px,6vw,65px) 55px;font-family:Kalam,cursive;font-size:clamp(20px,2.5vw,24px);font-weight:300;line-height:1.55}.letter h2{margin:0 0 18px;font-size:1.25em;font-weight:400}.letter-copy{white-space:pre-wrap;overflow-wrap:anywhere}.letter-copy p+p{margin-top:.35em}.signature{text-align:right;margin-top:22px;font-size:1.05em}.final-message{margin:22px auto 0;font-family:Georgia,serif;font-size:clamp(18px,3vw,26px);line-height:1.5}.floating-hearts{pointer-events:none;position:absolute;inset:50% 0 0}.floating-hearts span{position:absolute;top:50%}.dev-panel{z-index:50;background:#fffaf3f5;border:1px solid #dfcbd7;border-radius:10px;max-width:min(340px,100vw - 20px);font-size:12px;position:fixed;bottom:10px;left:10px;box-shadow:0 4px 24px #80507016}.dev-panel summary{cursor:pointer;padding:12px}.dev-panel>div{gap:7px;max-height:50svh;padding:0 12px 12px;display:grid;overflow:auto}.dev-panel button,.dev-panel input{color:#634353;background:#fff;border:1px solid #dac3ce;border-radius:5px;padding:8px}.dev-panel label{gap:5px;display:grid}.dev-panel output{padding:5px 0}@media (width<=480px){main{padding:85px 20px 75px}.waiting-scene h1{font-size:35px}.countdown{margin:32px 0}.personal-message{font-size:14px}.music-control{padding:11px 14px;top:15px;right:15px}.ornament{margin-bottom:24px}.orbit{width:140vw;height:140vw;top:20%;left:-20vw}.orbit-two{width:165vw;height:165vw;top:14%;left:-32.5vw}.bouquet-image{object-fit:contain;width:100%;height:auto;max-height:62svh}.note-position{top:60%;left:57%}.note-button{width:85px}.envelope{width:78px;height:55px}.seal{font-size:18px;top:21px;left:28px}.note-label{width:147px;margin-left:-47px;font-size:11px}.letter-backdrop{padding:12px}.letter{max-height:92svh}.return-scene .personal-message{font-size:14px}.return-scene .heart-art{width:155px}.return-scene .heart-area{margin-top:10px}.heart-button>span{margin-top:4px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}body:has(.letter-backdrop) .music-control{z-index:40;top:10px;left:20px;right:auto}body:has(.letter-backdrop)>#root .music-control{display:none}.letter-toolbar{justify-content:space-between;align-items:center}.letter-toolbar .letter-music{border-radius:24px;width:auto;padding:0 15px;font:12px Segoe UI,sans-serif}.waiting-scene .personal-message{line-height:1.65}.waiting-scene .countdown{margin-top:32px;margin-bottom:24px}.waiting-scene .fine-rule{margin-bottom:18px}.opening-scene{max-width:800px}.heart-heading{text-wrap:balance;max-width:790px;font-size:clamp(32px,4.4vw,56px)}.opening-scene .heart-area{margin-top:28px}.return-scene .personal-message{margin-bottom:25px;line-height:1.6}.return-scene .heart-heading{font-size:clamp(29px,3.8vw,48px)}.return-scene .heart-area{margin-top:18px}.glitter-intro{aspect-ratio:520/440;place-items:center;width:min(90vw,650px);display:grid;position:relative}.glitter-field{filter:drop-shadow(0 0 4px #fff);width:100%;height:100%;position:relative}.glitter-aura{filter:blur(18px);background:radial-gradient(#fffdf7 0%,#f3cade80 38%,#dac8e72b 60%,#0000 72%);border-radius:50%;position:absolute;inset:18%}@media (width<=480px){.waiting-scene .personal-message{font-size:14px;line-height:1.6}.opening-scene .heart-area{margin-top:20px}.return-scene .personal-message{margin-bottom:22px;font-size:14px;line-height:1.6}.return-scene .heart-area{margin-top:14px}}
