:root{--sand:#f1ece2;--mist:#e2ebe6;--sky:#dde6ec;--cream:#faf6ef;--paper:#fffdf9;--accent:#6f9a8d;--accent-deep:#4f7a6d;--ink:#41504a;--ink-soft:#7b8a83;--gold:#c2ad7e;--shadow:rgba(70,90,80,0.16);--font-script:"Snell Roundhand","Brush Script MT",cursive;--font-serif:Georgia,"Times New Roman",serif}*{box-sizing:border-box;margin:0;padding:0}body,html{min-height:100%}body{font-family:var(--font-serif);color:var(--ink);background:linear-gradient(160deg,var(--mist) 0,var(--sky) 55%,var(--sand) 100%);background-attachment:fixed;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.sky{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:0}.float{position:absolute;bottom:-40px;font-size:1.2rem;opacity:0;animation:rise linear infinite;will-change:transform,opacity}@keyframes rise{0%{transform:translateY(0) rotate(0deg);opacity:0}20%{opacity:.35}80%{opacity:.25}to{transform:translateY(-110vh) rotate(24deg);opacity:0}}.stage{position:relative;z-index:1;min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:clamp(16px,4vw,48px)}.intro{text-align:center;color:var(--ink)}.intro .envelope{font-size:clamp(3rem,12vw,5rem);display:inline-block;animation:fadeUp .7s ease both}.intro h2{font-family:var(--font-script);font-weight:400;font-size:clamp(1.6rem,6vw,2.4rem);margin-top:18px;color:var(--accent-deep);opacity:0;animation:fadeUp .7s ease .35s both}.intro p{margin-top:8px;color:var(--ink-soft);font-style:italic;opacity:0;animation:fadeUp .7s ease .65s both}@keyframes fadeUp{0%{transform:translateY(14px);opacity:0}to{transform:translateY(0);opacity:1}}.card{width:min(640px,100%);background:var(--paper);border-radius:20px;padding:clamp(22px,5vw,46px);box-shadow:0 16px 44px var(--shadow);border:1px solid rgba(194,173,126,.3);position:relative;opacity:0;transform:translateY(18px);animation:cardIn .7s cubic-bezier(.16,1,.3,1) both}.card:before{content:"";position:absolute;inset:12px;border:1.5px dashed rgba(194,173,126,.45);border-radius:12px;pointer-events:none}@keyframes cardIn{to{opacity:1;transform:translateY(0)}}.stamp{position:absolute;top:-14px;right:22px;background:var(--mist);color:var(--accent-deep);font-family:var(--font-serif);font-size:.66rem;letter-spacing:.18em;padding:8px 12px;border-radius:8px;border:1px dashed var(--accent);transform:rotate(3deg);box-shadow:0 3px 10px var(--shadow)}.card .crest,.stamp{text-transform:uppercase}.card .crest{text-align:center;font-size:.7rem;letter-spacing:.32em;color:var(--gold);margin-bottom:6px}.card h1{font-family:var(--font-script);font-weight:400;text-align:center;font-size:clamp(2rem,8vw,3rem);line-height:1.1;color:var(--accent-deep);margin-bottom:4px}.subtitle{text-align:center;font-style:italic;color:var(--ink-soft);margin-bottom:22px;font-size:clamp(.92rem,3.4vw,1.05rem)}.divider{display:flex;align-items:center;gap:12px;color:var(--gold);margin:18px 0}.divider:after,.divider:before{content:"";flex:1 1;height:1px;background:linear-gradient(90deg,transparent,rgba(194,173,126,.55),transparent)}.letter{font-size:clamp(1rem,3.6vw,1.12rem);line-height:1.75;color:var(--ink)}.letter p+p{margin-top:14px}.letter .lead{font-size:1.05em}.sign{margin-top:18px;font-family:var(--font-script);font-size:1.6rem;color:var(--accent-deep);text-align:right}.plea{margin-top:8px;text-align:center}.eyes{font-size:clamp(3rem,14vw,4.5rem);display:inline-block;animation:plead 3s ease-in-out infinite;filter:drop-shadow(0 5px 8px var(--shadow))}@keyframes plead{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.question{font-family:var(--font-serif);font-size:clamp(1.2rem,5vw,1.5rem);color:var(--ink);margin:10px 0 4px}.actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:22px}.btn{font-family:var(--font-serif);font-size:1.05rem;letter-spacing:.02em;padding:14px 30px;border-radius:999px;border:none;cursor:pointer;transition:transform .16s ease,box-shadow .16s ease,background .16s ease;min-width:130px}.btn-yes{background:var(--accent);color:#fff;box-shadow:0 8px 18px rgba(79,122,109,.32)}.btn-yes:hover{transform:translateY(-2px);background:var(--accent-deep);box-shadow:0 10px 22px rgba(79,122,109,.4)}.btn-yes:active{transform:translateY(0)}.btn-no{background:var(--cream);color:var(--ink-soft);border:1.5px solid rgba(123,138,131,.32);position:relative;transition:transform .22s cubic-bezier(.34,1.56,.64,1),box-shadow .16s ease}.btn-no:hover{box-shadow:0 6px 14px var(--shadow)}.yay{text-align:center;animation:cardIn .65s cubic-bezier(.16,1,.3,1) both}.yay .big{font-size:clamp(3.4rem,16vw,5.5rem);animation:fadeUp .65s ease both;display:inline-block}.yay h2{font-family:var(--font-script);font-weight:400;font-size:clamp(2rem,9vw,3rem);color:var(--accent-deep);margin:8px 0}.yay p{color:var(--ink);font-size:clamp(1rem,4vw,1.15rem);line-height:1.7}.ticket{margin:22px auto 0;max-width:380px;background:linear-gradient(135deg,var(--mist),var(--sky));border:1.5px dashed var(--accent);border-radius:14px;padding:20px 22px;text-align:left;box-shadow:0 8px 20px var(--shadow)}.ticket .ticket-title{font-size:.7rem;letter-spacing:.28em;text-transform:uppercase;color:var(--accent-deep);margin-bottom:8px}.ticket ul{list-style:none;font-size:.98rem;line-height:1.85}.ticket li:before{content:"✿ ";color:var(--accent)}.note{margin-top:18px;font-style:italic;color:var(--ink-soft);font-size:.92rem}.confetti{position:fixed;inset:0;pointer-events:none;z-index:5;overflow:hidden}.confetti i{position:absolute;top:-20px;width:8px;height:12px;border-radius:2px;opacity:.8;animation:fall linear forwards}@keyframes fall{0%{transform:translateY(-20px) rotate(0deg);opacity:.9}to{transform:translateY(110vh) rotate(540deg);opacity:.7}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.001ms!important;animation-iteration-count:1!important}.card,.yay{opacity:1;transform:none}}