:root{--ink:#574267;--purple:#8b64aa;--muted:#897894;--cream:#fffaf5;--scroll:0;--scene:0;--font:'Thmanyah Sans',Tahoma,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:80px}body{margin:0;color:var(--ink);font-family:var(--font);background:#f0e7f8;overflow-x:hidden;font-size:18px;line-height:1.8}[hidden]{display:none!important}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible{outline:3px solid #b58447;outline-offset:6px}.svg-library{position:absolute;width:0;height:0;overflow:hidden}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}header{position:absolute;top:0;left:0;width:100%;z-index:20;padding:26px 5vw;display:flex;align-items:center;justify-content:space-between}.wordmark{text-decoration:none;font-size:31px;font-weight:900}.wordmark span{color:#bd9b57;font-size:25px}.sound{position:fixed;left:5vw;top:26px;background:#fff9;border:1px solid #fff;border-radius:30px;color:var(--ink);padding:8px 16px;font-size:12px;backdrop-filter:blur(12px);box-shadow:0 4px 20px #78558f08}.sound>span:first-child{font-size:20px;padding-left:7px}.sound[aria-pressed=true]{background:#eee2f8;border-color:#c5afd8}.progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:30;background:#fff2}.progress i{display:block;height:100%;width:100%;transform:scaleX(var(--scroll));transform-origin:right;background:#9d78b4}.eyebrow{font-size:13px;letter-spacing:1px;font-weight:500;color:#9278a4;margin:0 0 15px}h1,h2,h3,p{margin-top:0}h1,h2{line-height:1.5;font-weight:500}em{font-style:normal;color:var(--purple)}.primary{display:inline-flex;align-items:center;justify-content:center;gap:20px;border:1px solid #9570ae;border-radius:100px;background:#8e6aa9;color:white;box-shadow:0 10px 30px #8e6aa922;padding:12px 32px;text-decoration:none;transition:background .2s,transform .2s;font-weight:700;font-size:16px}.primary:hover{background:#77558f;transform:translateY(-2px)}.opening{position:relative;min-height:760px;height:100svh;display:grid;place-items:center;text-align:center;background:radial-gradient(ellipse at 50% 36%,#fff9ee 0,#f7edf6 30%,#dfdcf7 85%);isolation:isolate;overflow:hidden}.opening-copy{position:relative;z-index:5;transform:translateY(calc(var(--opening-progress,0) * -65px));opacity:calc(1 - var(--opening-progress,0) * .85);padding:60px 20px}h1{font-size:clamp(42px,6vw,82px);margin-bottom:18px;letter-spacing:-1.7px}.soft{color:var(--muted);font-size:18px;margin-bottom:26px}.audio-hint{font-size:11px;color:#9c8ba7;margin:12px 0 0}.moon{width:320px;height:320px;position:absolute;top:14%;left:calc(50% - 160px);border-radius:50%;background:#fff4d6;opacity:.35;box-shadow:0 0 100px 90px #fff5dc66}.cloud{position:absolute;z-index:7;width:650px;height:260px;pointer-events:none;filter:drop-shadow(0 12px 25px #9d88b60e);will-change:transform}.cloud-a{left:-200px;bottom:8%;transform:translate(calc(var(--opening-progress,0) * -260px),calc(var(--opening-progress,0) * -60px))}.cloud-b{right:-210px;bottom:0%;width:720px;transform:translate(calc(var(--opening-progress,0) * 290px),calc(var(--opening-progress,0) * -90px))}.cloud-c{top:11%;left:-240px;width:520px;opacity:.72;transform:translateX(calc(var(--opening-progress,0) * -170px))}.cloud-d{right:-220px;top:20%;width:470px;opacity:.65;transform:translateX(calc(var(--opening-progress,0) * 200px))}.star{position:absolute;z-index:2;color:#b99d6b}.st1{top:22%;right:23%;font-size:45px;transform:rotate(calc(var(--opening-progress,0) * 60deg))}.st2{bottom:32%;left:21%;font-size:23px}.scroll-cue{position:absolute;bottom:25px;z-index:9;text-decoration:none;font-size:12px;color:#9b84aa}.scroll-cue span{display:block;font-size:22px}.sparkles{position:fixed;inset:0;z-index:4;pointer-events:none;overflow:hidden}.sparkle{position:absolute;width:3px;height:3px;border-radius:50%;background:#c4a46c;opacity:.38;transform:translateY(calc(var(--scroll) * -110px))}.character-section{position:relative;height:160svh;min-height:1050px;background:radial-gradient(ellipse at 50% 45%,#fff9f5,#f0e7f8 65%)}.character-stage{height:100svh;min-height:680px;position:sticky;top:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:65px 20px 30px;overflow:hidden}.halo{position:absolute;top:15%;width:min(600px,85vw);height:min(600px,85vw);border:1px solid #c7add54d;border-radius:50%;transform:scale(calc(.85 + var(--scene) * .2));box-shadow:0 0 0 30px #cbb3db09,0 0 0 75px #cbb3db06}.portrait-wrap{position:relative;width:310px;height:46svh;min-height:300px;max-height:460px;transform:translateY(calc((1 - var(--scene)) * 65px)) scale(calc(.88 + var(--scene) * .12));opacity:calc(.3 + var(--scene) * .7);will-change:transform}.portrait-wrap img{position:relative;z-index:2;display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 15px 20px #78558f16)}.portrait-cloud{position:absolute;z-index:3;bottom:-12%;left:-25%;width:150%;height:30%;opacity:.95}.orbit-star{position:absolute;top:15%;right:-25px;color:#ba9d5c;font-size:45px;transform:rotate(calc(var(--scene) * 100deg))}.butterfly{width:65px;height:65px;color:#b79aca;position:absolute}.b1{left:-70px;top:30%;transform:translate(calc(var(--scene) * 40px),calc(var(--scene) * -70px)) rotate(-20deg)}.b2{right:-80px;bottom:8%;width:45px;color:#dfb7be;transform:translate(calc(var(--scene) * -30px),calc(var(--scene) * -30px)) rotate(25deg)}.hello-copy{text-align:center;position:relative;z-index:5;margin-top:20px;transform:translateY(calc((1 - var(--scene)) * 70px));opacity:calc(.15 + var(--scene) * .85)}.hello-copy h2{font-size:clamp(32px,4vw,52px);margin-bottom:8px;font-weight:700}.hello-copy p:last-child{font-size:clamp(20px,2vw,26px);line-height:1.9;margin-bottom:0;font-weight:400}.hello-copy .eyebrow{font-size:11px;margin-bottom:0}.wish-section{position:relative;text-align:center;padding:120px 24px 150px;background:#f0e7f8}.wish-section h2{font-size:clamp(45px,6vw,80px);font-weight:300;margin:20px 0}.wish-section p:last-of-type{font-size:19px;color:var(--muted)}.tiny-star{display:block;font-size:36px;color:#bb9e62;margin-bottom:20px}.wish-butterfly{left:20%;top:45%;transform:rotate(-18deg)}.event-section{position:relative;background:linear-gradient(#f0e7f8,#faedf0 50%,#fff3e8);padding:50px 24px 150px;text-align:center;overflow:hidden}.event-heading h2{font-size:clamp(45px,5vw,68px);margin-bottom:5px}.event-heading>p:last-child{color:var(--muted);font-size:16px}.ticket{position:relative;z-index:2;width:100%;max-width:580px;margin:40px auto;background:#fffdf6;border:1px solid #e5d4db;border-radius:24px;box-shadow:0 25px 60px #b498b017;text-align:right;transform:rotate(-2deg)}.ticket-top{display:flex;justify-content:space-between;padding:18px 28px;border-bottom:1px dashed #d8c7d5;font-size:12px;color:#9c839d}.ticket-top>span:last-child{font-size:22px;line-height:1}.ticket-main{display:grid;grid-template-columns:1fr 1fr;padding:25px 10px;text-align:center}.ticket-main>div+div{border-right:1px solid #eee1e5}.detail-label{font-size:12px;color:#a28a9d}.ticket h3{font-size:47px;line-height:1.5;font-weight:900;margin:4px 0;color:#8f6c9e}.ticket small{font-size:22px;font-weight:400}.ticket-main p{font-size:12px;color:#8f7c8b;margin:0}.ticket-bottom{display:flex;align-items:center;justify-content:space-between;border-top:1px dashed #d8c7d5;padding:19px 28px;font-size:12px;color:#9c839d}.ticket-bottom strong{font-size:23px;font-weight:700;color:#6b5a72}.count{position:relative;z-index:3;margin:55px auto 0}.count>p{font-size:12px;color:#a28a9d}.digits{display:flex;justify-content:center;align-items:flex-start;gap:20px}.digits b{display:block;font-size:34px;font-weight:300;line-height:1.3;font-variant-numeric:tabular-nums}.digits span{font-size:11px;color:#9c839d}.digits i{font-style:normal;color:#bda8bb;font-size:24px}.garden{position:absolute;bottom:0;left:0;right:0;height:140px;overflow:hidden;pointer-events:none}.hill{position:absolute;bottom:-100px;width:80%;height:180px;border-radius:50% 50% 0 0}.hill-back{right:-10%;background:#d9e0d3;transform:rotate(-6deg)}.hill-front{left:-15%;background:#e6ebdf;bottom:-105px;width:110%;transform:rotate(4deg)}.garden-flower{position:absolute;bottom:5px;color:#b89bba;font-size:45px;transform:rotate(calc(var(--scroll) * 80deg))}.f1{left:14%;bottom:18px}.f2{right:20%;color:#e2b3a8;font-size:35px}.f3{left:30%;font-size:20px;color:#ceaa69}.f4{right:8%;bottom:35px;font-size:24px}.rsvp-section{background:linear-gradient(#e6ebdf,#f8f3ec 240px);padding:65px 20px 0}.rsvp{position:relative;max-width:560px;margin:auto;background:#fffcf6;border:1px solid #fff;border-radius:160px 160px 26px 26px;padding:55px 45px 35px;text-align:center;box-shadow:0 15px 60px #96839c12}.envelope-icon{font-size:48px;color:#af8eae;line-height:1.4}.rsvp .eyebrow{font-size:10px;margin:14px 0 8px}.rsvp h2{font-size:34px;font-weight:700;margin-bottom:6px}.rsvp-intro{font-size:15px;color:#a08d9e}.rsvp form{text-align:right;margin-top:26px}.rsvp label{display:block;font-size:13px;margin-bottom:7px;font-weight:500}.rsvp input{width:100%;padding:14px 17px;border:1px solid #e2d7e3;background:#fff;border-radius:15px;color:var(--ink);outline:none;font-size:16px}.rsvp input:focus{border-color:#9d78b4;box-shadow:0 0 0 3px #9d78b41a}.rsvp .primary{width:100%;margin-top:14px}.preview-note{font-size:11px;line-height:1.7;color:#a495a2;text-align:center;margin-top:15px}#status{font-size:14px;text-align:center}iframe{border:0;width:100%;height:355px;display:block}#form-link{font-size:12px}footer{text-align:center;padding:55px 20px 35px;color:#a392a1;font-size:14px}footer strong{font-size:35px;color:#8e6d9f;font-weight:700}footer strong span{font-weight:300}footer p{font-size:11px}footer a{font-size:11px;text-decoration:none}.reveal{transition:opacity .6s,translate .6s}.js .reveal:not(.visible){opacity:0;translate:0 45px}.confetti{position:fixed;top:-20px;width:8px;height:12px;z-index:50;pointer-events:none;animation:fall 3.5s ease-in forwards}@keyframes fall{to{transform:translateY(105vh) rotate(520deg);opacity:0}}@media(min-width:1000px){.portrait-wrap{width:350px}.rsvp-section{padding-top:90px}}@media(max-width:600px){header{padding:20px 23px}.sound{left:20px;top:20px;font-size:11px;padding:6px 12px}.opening{min-height:650px}.opening-copy{padding-bottom:110px}h1{font-size:49px;line-height:1.6}.eyebrow{font-size:11px}.soft{font-size:16px}.cloud-a{width:470px;left:-240px;bottom:12%}.cloud-b{width:510px;right:-260px;bottom:1%}.cloud-c{width:330px;left:-220px;top:11%}.cloud-d{width:320px;right:-230px;top:23%}.st1{right:14%;top:20%;font-size:25px}.st2{left:12%;bottom:28%;font-size:18px}.scroll-cue{bottom:28px}.character-section{min-height:1000px;height:145svh}.character-stage{min-height:650px}.portrait-wrap{width:250px;min-height:300px;height:43svh}.hello-copy{margin-top:14px}.hello-copy h2{font-size:35px}.hello-copy p:last-child{font-size:21px}.b1{left:-24px;width:42px}.b2{right:-28px;width:35px}.orbit-star{right:0;font-size:30px}.wish-section{padding:85px 24px 95px}.wish-section h2{font-size:57px}.wish-section p:last-of-type{font-size:17px}.wish-butterfly{left:9%;top:30%;width:40px}.event-section{padding:35px 22px 140px}.ticket{margin-top:30px}.ticket h3{font-size:39px}.ticket-main{padding:24px 0}.ticket-main p{font-size:11px}.ticket-top,.ticket-bottom{padding:15px 20px}.ticket-bottom strong{font-size:21px}.digits{gap:16px}.rsvp{padding:45px 23px 25px;border-radius:130px 130px 25px 25px}.rsvp h2{font-size:30px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.opening-copy,.cloud,.portrait-wrap,.hello-copy,.halo,.butterfly,.orbit-star{transform:none!important;opacity:1!important}.js .reveal:not(.visible){opacity:1;translate:none}.character-section{height:auto;min-height:0}.character-stage{position:relative;height:auto;min-height:730px}.confetti{display:none}}

