@font-face{font-family:"Cormorant Garamond";src:url("vendor/CormorantGaramond.ttf") format("truetype");font-weight:300 700;font-style:normal;font-display:swap}body,button{font-family:"Cormorant Garamond",serif}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#fff6f8}body::before{content:"";position:fixed;inset:-8px;background:url('memories.png') center/cover no-repeat;filter:blur(4px);opacity:.15;pointer-events:none}#scene{position:relative;width:100%;height:100%;touch-action:none;cursor:grab;opacity:0;transition:opacity .8s .15s}body.open #scene{opacity:1}canvas{display:block}#welcome{position:fixed;inset:0;background:#fff6f8;display:grid;place-items:center;transition:opacity .7s ease}#welcome::before{content:"";position:absolute;inset:-8px;background:url('memories.png') center/cover no-repeat;filter:blur(4px);opacity:.12;pointer-events:none}.letter{position:relative;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:28px}.letter img{width:min(240px,48vw);height:auto;object-fit:contain}h1{max-width:520px;font:700 clamp(24px,4vw,36px)/1.35 "Cormorant Garamond",serif;text-align:center;color:#c8102e;margin:28px 0 16px}button{border:0;background:none;font-size:44px;padding:12px;cursor:pointer;transition:transform .2s}button:hover{transform:rotate(-10deg) scale(1.1)}button:focus-visible{outline:2px solid #c8102e;border-radius:15px}body.open #welcome{pointer-events:none;opacity:0}.confetti{position:fixed;left:50%;top:65%;width:6px;height:9px;pointer-events:none;z-index:5;border-radius:2px;animation:burst 1.5s ease-out forwards}@keyframes burst{to{transform:translate(var(--x),var(--y)) rotate(var(--r));opacity:0}}@media(max-width:600px){body::before,#welcome::before{background-size:auto 100%;background-position:center}}@media(prefers-reduced-motion:reduce){#welcome,#scene{transition-duration:.15s!important}.confetti{display:none}}

.flags{position:absolute;inset:0;pointer-events:none;overflow:hidden}.flags span{position:absolute;font-size:clamp(17px,2.3vw,25px);opacity:.65;transform:rotate(var(--tilt));user-select:none}.letter{z-index:1}
.flags img{display:block;width:clamp(24px,2.3vw,34px);height:auto;border-radius:2px}
.flags span{top:-50px!important;opacity:0;animation:flag-fall 13s linear infinite;animation-delay:-2s}.flags span:nth-child(2){animation-duration:16s;animation-delay:-9s}.flags span:nth-child(3){animation-duration:14s;animation-delay:-5s}.flags span:nth-child(4){animation-duration:18s;animation-delay:-13s}.flags span:nth-child(5){animation-duration:15s;animation-delay:-7s}.flags span:nth-child(6){animation-duration:17s;animation-delay:-1s}.flags span:nth-child(7){animation-duration:19s;animation-delay:-16s}.flags span:nth-child(8){animation-duration:16s;animation-delay:-11s}@keyframes flag-fall{0%{opacity:0;transform:translate(0,-30px) rotate(var(--tilt))}8%{opacity:.65}50%{transform:translate(15px,50vh) rotate(calc(var(--tilt) + 12deg))}92%{opacity:.65}100%{opacity:0;transform:translate(-10px,calc(100vh + 80px)) rotate(calc(var(--tilt) - 10deg))}}@media(prefers-reduced-motion:reduce){.flags span{animation:none;opacity:.65;top:var(--static-top,15%)!important}.flags span:nth-child(2n){--static-top:75%}.flags span:nth-child(3n){--static-top:40%}}

h1 span{display:block;white-space:nowrap}h1{max-width:100%;font-size:clamp(22px,5.8vw,36px)}
.bouquet-note{position:fixed;top:clamp(24px,7vh,70px);left:20px;right:20px;margin:0;display:flex;align-items:center;justify-content:center;gap:8px;color:#c8102e;font-size:clamp(17px,3.5vw,21px);font-weight:500;text-align:center;opacity:0;pointer-events:none;transition:opacity .8s .2s;z-index:2}.bouquet-note img{width:38px;height:38px;object-fit:contain;flex-shrink:0}body.open .bouquet-note{opacity:1}
.bouquet-note{font-weight:700}#celebrate{position:relative;isolation:isolate;border-radius:50%}#celebrate::before{content:"";position:absolute;inset:6px;z-index:-1;border-radius:50%;background:radial-gradient(circle,rgba(241,145,174,.3) 0%,rgba(247,183,202,.2) 45%,rgba(255,210,224,0) 72%);box-shadow:0 0 18px rgba(236,144,174,.16)}#celebrate:hover::before,#celebrate:focus-visible::before{background:radial-gradient(circle,rgba(241,145,174,.4),rgba(247,183,202,.22) 48%,transparent 74%)}
.bouquet-note{top:auto;bottom:clamp(24px,7vh,70px)}
