@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&family=Playfair+Display:ital,wght@0,400;0,500;1,400&family=Parisienne&display=swap');
:root{--ink:#4f285d;--rose:#ac396e}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#fff8fc;color:var(--ink);font:15px/1.65 'DM Sans',sans-serif;overflow-x:hidden}button,input,select{font:inherit;color:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #8933b4;outline-offset:6px}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:'Playfair Display',Georgia,serif;font-weight:400;line-height:1.15}h2{font-size:clamp(42px,5vw,72px)}em{font-weight:400;color:var(--rose)}a{color:inherit}.defs{position:absolute;width:0;height:0}.eyebrow,.edition{font-size:10px;letter-spacing:2.6px}.controls{position:fixed;bottom:16px;right:20px;z-index:100;display:flex;gap:4px;background:#fff9fce6;border:1px solid #e7cfe7;border-radius:40px;padding:5px;backdrop-filter:blur(15px);box-shadow:0 5px 25px #63245512}.controls button{border:0;background:none;border-radius:30px;min-height:44px;padding:9px 15px;font-size:11px}.controls button[aria-pressed=true]{background:#edd5ee}#sparkles,#ambient{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:90}#ambient{z-index:1;overflow:hidden}.mote{position:absolute;width:5px;height:5px;background:white;border-radius:50%;box-shadow:0 0 12px 3px #fff8;animation:drift var(--d) ease-in-out infinite;left:var(--x);top:var(--y);opacity:.6}.cover{position:relative;min-height:100svh;display:flex;align-items:center;flex-direction:column;overflow:hidden;text-align:center;padding:40px 20px 30px;background:radial-gradient(ellipse at 30% 30%,#f8e5fc,transparent 50%),radial-gradient(ellipse at 80% 70%,#ffd0e5,transparent 55%),#ded0f7}.halo{position:absolute;border:1px solid #ffffff6c;border-radius:50%;pointer-events:none}.halo-a{width:700px;height:700px;top:8%;left:calc(50% - 350px)}.halo-b{width:900px;height:900px;top:-3%;left:calc(50% - 450px)}.edition{z-index:2}.cover h1{font-size:clamp(37px,4.3vw,66px);margin:32px 0 16px;z-index:2;letter-spacing:-1.5px}.cover h1 em{color:#a84b8c}.intro-note{font-size:13px;z-index:2;color:#775382}#mail-stage{width:min(500px,95vw);height:330px;position:relative;margin:15px 0 0;z-index:5;display:grid;place-items:center}#envelope-rig{width:350px;height:225px;position:relative;perspective:1200px;transform-style:preserve-3d}.mail-shadow{position:absolute;width:280px;height:25px;bottom:15px;background:#7f42891e;filter:blur(13px);border-radius:50%}.envelope{position:absolute;inset:0;width:100%;height:100%;border:0;background:none;padding:0;perspective:1000px;filter:drop-shadow(0 20px 20px #65257024)}.envelope-back{position:absolute;inset:0;background:#bf77aa;border-radius:8px}.envelope-front{position:absolute;inset:0;clip-path:polygon(0 0,50% 56%,100% 0,100% 100%,0 100%);background:linear-gradient(135deg,#e1a0c3,#f4c6dc);z-index:3;border-radius:5px}.envelope-front:after{content:'';position:absolute;inset:0;clip-path:polygon(0 100%,50% 46%,100% 100%);background:linear-gradient(135deg,#efbad5,#e9a4ca)}.flap{position:absolute;inset:0;background:linear-gradient(150deg,#f6d4e9,#d79bc5);clip-path:polygon(0 0,100% 0,50% 59%);z-index:4;transform-origin:top}.seal{position:absolute;z-index:5;left:calc(50% - 32px);top:42%;width:64px;height:64px;display:grid;place-items:center;border-radius:50%;background:radial-gradient(circle at 30% 20%,#d59ac1,#a65a93);border:5px double #e8b9d5;box-shadow:0 4px 8px #7c2c653d;font:35px 'Parisienne',cursive;color:#fff2fa}.letter{position:absolute;z-index:2;inset:10px 22px;background:linear-gradient(130deg,#fffaff,#fff2f9);border:1px solid #f0d7e8;border-radius:4px;padding:20px 12px;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#692d62;transform-origin:center;box-shadow:0 0 0 8px #fff7fc inset}.letter-top,.letter-bottom{font-size:7px;letter-spacing:2px}.letter-name{font:48px/1.1 'Parisienne';margin:12px 0}.letter-bottom{margin-top:10px}#letter-words{font:italic 16px/1.4 'Playfair Display';min-height:23px;max-width:240px}.messenger{position:absolute;width:95px;height:95px;left:calc(100% - 55px);top:-40px;z-index:8;pointer-events:none}.messenger img,.hero-butterfly img,.journey-butterfly img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 4px 5px #733a6733)}.messenger img{animation:flap 1.6s ease-in-out infinite}.messenger.flying img{animation-duration:.18s}.messenger.resting img{animation-duration:3s}#open-hint{font-size:12px;position:relative;z-index:5}.quiet{background:none;border:0;text-decoration:underline;min-height:44px;font-size:12px;position:relative;z-index:70}.cover-date{font-size:10px;letter-spacing:3px;margin-top:30px;z-index:3}.cover-blooms{position:absolute;inset:0;pointer-events:none}.cover-blooms svg{position:absolute;width:230px;height:230px;color:#d49cd2;filter:drop-shadow(0 10px 15px #85478b18)}.cover-blooms svg:nth-child(1){bottom:-50px;left:-50px;transform:rotate(20deg)}.cover-blooms svg:nth-child(2){top:30%;right:-80px;color:#f4b7d4;width:200px}.cover-blooms svg:nth-child(3){top:18%;left:5%;width:65px;color:#f0a4d0}nav{display:flex;justify-content:space-between;align-items:center;padding:12px 5%;background:#fff5fb}nav a{font:32px 'Parisienne';text-decoration:none}nav a span{font:9px 'DM Sans';margin-left:12px;border:1px solid #ba8bb8;border-radius:50%;padding:5px}nav button{background:none;border:0;font-size:11px;min-height:44px}.scene{position:relative;overflow:hidden}.hero{min-height:850px;text-align:center;padding:65px 20px 50px;background:radial-gradient(ellipse at 50% 45%,#fff5fc,transparent 60%),#f9dcec}.hero h2{font:clamp(100px,17vw,220px)/1 'Parisienne';color:#ae3c78;position:relative;z-index:3;margin:5px 0 0}#blur-copy{margin:25px 0 0;font:italic 26px 'Playfair Display'}.birthday-subtitle{justify-content:center}.hero-one{font:160px/.9 'Playfair Display';color:#af62ac;text-shadow:2px 4px #fff7;position:relative;z-index:2;margin:25px auto 20px}.hero-one span{display:block;font:9px 'DM Sans';letter-spacing:4px;margin:20px 0}.hero-note{font-size:17px;line-height:1.7;position:relative;z-index:3}.hero-note em{font-family:'Playfair Display';font-size:25px}.scroll-cue{display:flex;flex-direction:column;align-items:center;gap:12px;text-decoration:none;font-size:11px;margin-top:38px;position:relative;z-index:3}.scroll-cue span{font-size:25px;animation:bob 2s infinite}.hero-butterfly{position:absolute;width:150px;height:150px;right:20%;top:25%;z-index:3;transform:rotate(-15deg)}.hero-butterfly img{animation:flap 2s infinite}.hero-flowers svg{position:absolute;width:300px;height:300px;bottom:2%;left:-80px;color:#d8b5ed}.hero-flowers svg:nth-child(2){left:auto;right:-50px;bottom:8%;color:#f1a6ce;width:270px}.hero-flowers svg:nth-child(3){left:18%;bottom:-80px;color:#f8cad8;width:190px}.orbit{position:absolute;border:1px solid #c485b733;border-radius:50%;width:580px;height:580px;top:140px;left:calc(50% - 290px)}.journey{background:#e1d3f5}.journey-stage{height:100svh;min-height:650px;position:relative;overflow:hidden;text-align:center;padding:70px 20px;background:#e1d3f5}.journey-text{position:relative;max-width:900px;height:260px;margin:110px auto 0}.journey-text p{position:absolute;inset:0;font:clamp(40px,5.7vw,84px)/1.16 'Playfair Display';display:grid;place-content:center}.journey-text p:not(:first-child){opacity:0}.journey-butterfly{position:absolute;width:120px;height:120px;top:24%;left:16%;z-index:4}.journey-butterfly img{animation:flap .3s infinite}.growing-garden{position:absolute;bottom:-60px;left:0;right:0;height:240px;display:flex;justify-content:center;align-items:flex-end}.growing-garden svg{width:220px;height:220px;flex-shrink:0;transform-origin:50% 100%;color:#e8a0ca}.growing-garden svg:nth-child(2n){color:#bca2e4;width:180px}.growing-garden svg:nth-child(3){color:#f3bddc;width:300px;height:300px}.journey-hint{position:absolute;bottom:25px;left:0;right:0;font-size:9px;letter-spacing:2px;z-index:5;background:#ffffffaa;width:fit-content;margin:auto;padding:7px 14px;border-radius:20px}.wish-garden{padding:90px 20px;text-align:center;background:linear-gradient(#fff2f8,#f9e0f3)}.wish-garden h2{margin:18px 0}.wish-garden>p:not(.eyebrow){font-size:14px}.wish-flowers{display:flex;justify-content:center;gap:60px;margin:45px auto 25px;max-width:700px}.wish-flower{border:0;background:none;position:relative;width:165px;padding:10px;color:#d98cbd}.wish-flower:nth-child(2){color:#b399da}.wish-flower:nth-child(3){color:#ed9fb8}.wish-flower svg{width:100%;aspect-ratio:1;filter:drop-shadow(0 10px 12px #89447720)}.wish-flower span{display:block;margin-top:16px;font-size:13px;color:#71456d}.wish-flower[aria-pressed=true] svg{filter:drop-shadow(0 0 15px #fff) saturate(1.2)}#wish-message{min-height:75px;max-width:550px;margin:15px auto;font:italic 27px/1.4 'Playfair Display';color:#9b3973}.pill{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:50px;background:#8f387d;color:#fff6fb;padding:17px 28px;font-size:13px;min-height:50px;transition:background .2s,transform .2s}.pill:hover:not(:disabled){background:#702966;transform:translateY(-2px)}button:disabled{cursor:default;opacity:.45}#wish-flight img{position:absolute;width:80px;height:80px;pointer-events:none;z-index:8}.details{text-align:center;padding:90px 20px;background:#e5d9f8}.details h2{margin:20px 0 50px}.date-card{max-width:740px;display:grid;grid-template-columns:1fr 1.4fr;margin:auto;background:#fff9fba8;border:1px solid white;border-radius:140px 140px 24px 24px;padding:50px 45px 40px}.date-day{display:flex;flex-direction:column;align-items:center;justify-content:center;border-right:1px solid #d4bddc;gap:10px}.date-day span{font-size:11px;letter-spacing:2px}.date-day strong{font:100px/1 'Playfair Display';color:#a04b91}.venue{align-self:center;padding:0 20px}.venue h3{font-size:36px;margin-bottom:12px}.venue p{font-size:15px}.venue .muted{font-size:12px;margin-top:12px;color:#795e81}.venue a{display:inline-block;font-size:11px;margin-top:15px;padding:10px;text-underline-offset:5px}#countdown-title{font:italic 26px 'Playfair Display';margin:45px 0 20px}.countdown{display:flex;justify-content:center;gap:22px;margin:20px auto}.countdown span{display:flex;flex-direction:column;font-size:9px;letter-spacing:2px;min-width:60px}.countdown b{font:47px/1.4 'Playfair Display';letter-spacing:0;font-variant-numeric:tabular-nums;color:#944a8b}.countdown i{font-style:normal;font-size:22px;align-self:center}.tiny{font-size:11px;line-height:1.7;color:#765879}.rsvp{background:#f7d9e8;display:grid;grid-template-columns:1fr 1fr;gap:80px;padding:100px max(7%,20px)}.rsvp h2{margin:25px 0}.rsvp-copy>p:last-child{font-size:14px;line-height:1.9}.rsvp form{align-self:center;width:100%;max-width:430px;margin:auto}label{display:block;font-size:12px;margin:20px 0 10px}input,select{width:100%;background:#fff7fb;border:1px solid #c9a1bc;border-radius:10px;padding:16px;font-size:15px;min-height:50px}.rsvp .pill{width:100%;margin:25px 0 13px}.rsvp .tiny{text-align:center}footer{text-align:center;background:#f9f0fb;padding:80px 20px 120px}footer p{font:30px/1.4 'Playfair Display'}footer>span{display:block;font:85px 'Parisienne';color:#a3477c;margin:25px}footer small{font-size:9px;letter-spacing:2px}dialog{max-width:480px;width:calc(100% - 32px);padding:40px 30px;background:#fff7fc;color:var(--ink);border:1px solid #dbb8d5;border-radius:25px;text-align:center}dialog::backdrop{background:#42284d88;backdrop-filter:blur(8px)}dialog h2{font-size:40px;margin:20px 0}#message{padding:20px;background:#f0dfef;border-radius:15px;text-align:left;font-size:14px;margin:20px 0}dialog .pill{margin-top:20px}.close{position:absolute;right:15px;top:8px;background:none;border:0;font-size:30px;min-width:44px;min-height:44px}.paused *{animation-play-state:paused!important}.paused .journey-text p{position:relative;opacity:1!important;font-size:32px;margin:30px 0}.paused .journey-text{height:auto;margin-top:35px}.paused .journey-stage{height:auto;min-height:800px}.paused .journey-butterfly{display:none}.paused .growing-garden svg{transform:none!important}#cover[hidden],#invitation[hidden]{display:none!important}@keyframes flap{50%{transform:scaleX(.55) rotate(3deg)}}@keyframes bob{50%{transform:translateY(8px)}}@keyframes drift{50%{transform:translate(30px,-60px);opacity:.2}}
@media(max-width:600px){.controls{right:auto;left:50%;transform:translateX(-50%);bottom:10px;white-space:nowrap}.controls button{font-size:10px;padding:8px 11px}.cover{padding-top:35px;min-height:850px}.cover h1{font-size:37px;letter-spacing:-1px;margin:35px 0 15px}.intro-note{font-size:12px;max-width:260px}.edition{font-size:9px;letter-spacing:2px}#mail-stage{height:310px;margin-top:35px}#envelope-rig{width:280px;height:185px}.seal{width:55px;height:55px;left:calc(50% - 27px);font-size:30px}.messenger{width:80px;height:80px;left:calc(100% - 45px);top:-35px}.letter{inset:8px 16px}.letter-name{font-size:40px}.letter-top,.letter-bottom{font-size:6px;letter-spacing:1.6px}#letter-words{font-size:14px}.cover-blooms svg{width:150px;height:150px}.cover-blooms svg:nth-child(2){width:130px;right:-65px}.cover-blooms svg:nth-child(3){top:33%;left:-15px;width:50px}.cover-date{margin-top:45px}.hero{min-height:790px;padding-top:55px}.hero h2{font-size:135px;margin-top:12px}#blur-copy{font-size:22px}.hero-one{font-size:145px;margin-top:32px}.hero-note{font-size:15px}.hero-note em{font-size:24px}.hero-butterfly{width:100px;height:100px;right:3%;top:27%}.hero-flowers svg{width:170px;height:170px;left:-80px}.hero-flowers svg:nth-child(2){width:170px;right:-85px;bottom:15%}.hero-flowers svg:nth-child(3){width:150px;left:25%}.eyebrow{font-size:8px;letter-spacing:1.7px}.journey-stage{min-height:650px;padding-top:65px}.journey-text{margin-top:110px;height:220px}.journey-text p{font-size:42px}.journey-butterfly{width:80px;height:80px;left:5%}.growing-garden svg{width:130px;height:130px}.growing-garden svg:nth-child(2n){width:110px}.growing-garden svg:nth-child(3){width:180px;height:180px}.growing-garden{bottom:-20px;height:180px}.journey-hint{font-size:7px;bottom:20px}.wish-garden,.details{padding:65px 20px}.wish-garden h2,.details h2{font-size:45px}.wish-flowers{gap:6px;margin-top:35px}.wish-flower{width:105px;padding:5px}.wish-flower span{font-size:11px}#wish-message{font-size:23px;min-height:100px}.date-card{padding:35px 20px 25px;border-radius:90px 90px 20px 20px;grid-template-columns:1fr}.date-day{border-right:0;border-bottom:1px solid #d4bddc;padding-bottom:25px}.date-day strong{font-size:95px}.venue{padding:25px 0 0}.venue h3{font-size:32px}.countdown{gap:10px}.countdown span{min-width:46px;font-size:8px}.countdown b{font-size:35px}.countdown i{font-size:17px}.details .tiny{font-size:10px;max-width:260px;margin:auto}.rsvp{grid-template-columns:1fr;gap:20px;padding:65px 25px;text-align:center}.rsvp h2{font-size:47px}.rsvp form{text-align:left}.rsvp-copy>p:last-child{font-size:13px}footer p{font-size:26px}nav{padding:10px 22px}nav button{font-size:10px}}
.envelope:disabled{opacity:1}.letter[style*="fixed"]{text-align:center}.paused{scroll-behavior:auto}
@media(max-width:600px){.journey-hint{bottom:85px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
