:root{--pink:#f8d7df;--rose:#e8a5b5;--pink-deep:#d4688a;--rosegold:#e6b8b0;--pearl:#fff;--cream:#fff6f2;--ink:#7a2e4a;--ink-soft:#8a4060;--title:#a8466a;--btn:#a8466a;--btn-dark:#9e4262;--glass:#fff6f2db;--veil:#fff6f2db;--glass-edge:#fffc;--shadow:0 18px 50px -18px #7a2e4a59;--display:"Italiana", "Didot", "Bodoni 72", serif;--serif:"Fraunces", "Iowan Old Style", Georgia, serif;--ease:cubic-bezier(.45, 0, .2, 1);--gutter:max(20px, env(safe-area-inset-left,0px));--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;background:var(--pink)}body{min-height:100svh;font-family:var(--serif);color:var(--ink);background:var(--pink);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;font-size:18px;line-height:1.5;overflow-x:hidden}body.locked{overflow:hidden}button,input,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:6px}.display{font-family:var(--display);text-transform:lowercase;font-weight:400;line-height:1.05}.eyebrow{font-family:var(--serif);letter-spacing:.32em;text-transform:uppercase;color:var(--ink-soft);font-size:.86rem;font-weight:700}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.glitter,.confetti{pointer-events:none;width:100%;height:100%;position:fixed;inset:0}.glitter{z-index:0}.confetti{z-index:60}main{z-index:1;position:relative}.scene{position:relative}.stage{place-items:center;height:100svh;display:grid;position:sticky;top:0;overflow:hidden;container-type:inline-size}.section{padding-block:88px;padding-left:var(--gutter);padding-right:max(20px, env(safe-area-inset-right,0px));position:relative}.section-inner{text-align:center;justify-items:center;gap:28px;max-width:560px;margin:0 auto;display:grid}.section-title{color:var(--ink);margin:0;font-size:clamp(3rem,14vw,4.4rem)}.glass{background:var(--glass);border:1px solid var(--glass-edge);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(14px)saturate(1.2);border-radius:28px}.btn{appearance:none;cursor:pointer;letter-spacing:.01em;text-wrap:balance;width:100%;min-height:56px;transition:transform .6s var(--ease), box-shadow .6s var(--ease), background .6s var(--ease);border:0;border-radius:999px;justify-content:center;align-items:center;gap:10px;padding:14px 18px;font-size:1.1rem;font-weight:700;text-decoration:none;display:inline-flex}.btn:active{transform:scale(.97)}.btn-primary{color:var(--pearl);background:linear-gradient(135deg, var(--btn), var(--btn-dark));box-shadow:0 12px 28px -12px #9e4262cc,inset 0 1px #ffffff59}.btn-soft{color:var(--ink);background:var(--pearl);box-shadow:0 10px 24px -14px #7a2e4a80, inset 0 0 0 1px var(--rose)}.btn svg{flex:none;width:22px;height:22px}.music-toggle{z-index:50;right:max(16px, env(safe-area-inset-right,0px));bottom:calc(16px + env(safe-area-inset-bottom,0px));border:1px solid var(--glass-edge);cursor:pointer;width:52px;height:52px;color:var(--ink);background:var(--glass);-webkit-backdrop-filter:blur(10px);box-shadow:var(--shadow);border-radius:50%;place-items:center;display:grid;position:fixed}.music-toggle svg{width:24px;height:24px}.music-toggle .bars{align-items:flex-end;gap:3px;height:18px;display:flex}.music-toggle .bars i{background:var(--pink-deep);width:3px;animation:eq 1s var(--ease) infinite alternate;border-radius:2px}.music-toggle .bars i:nth-child(2){animation-delay:-.4s}.music-toggle .bars i:nth-child(3){animation-delay:-.7s}@keyframes eq{0%{height:4px}to{height:18px}}.garden-stage{container-type:size}.g-canvas{z-index:3;touch-action:pan-y;width:100%;height:100%;position:absolute;inset:0}.g-hero{z-index:2}.g-plaque{z-index:200;pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.disco-sign{text-align:center;justify-items:center;display:grid;position:relative}.disco-hanger{background:#c98e86;width:2px;height:clamp(24px,8svh,80px);position:relative}.disco-hanger:before{content:"";background:linear-gradient(#0000,#c98e86 40%);width:2px;height:100svh;position:absolute;bottom:100%;left:0}.disco-ball{aspect-ratio:1;filter:drop-shadow(0 20px 24px #7a2e4a59);border-radius:50%;height:auto}.disco-glow{aspect-ratio:1;z-index:-1;background:radial-gradient(closest-side,#ffffffb3,#0000);width:360px;max-width:100vw;position:absolute;top:40px}.hero-center{z-index:2;justify-items:center;gap:clamp(18px,4svh,40px);display:grid;position:relative}.disco-light{z-index:1;pointer-events:none;position:absolute;inset:0;overflow:hidden}.disco-spots{position:absolute;inset:0}.disco-spots i.rose{background:radial-gradient(closest-side,#f6d9d3f2,#e6b8b000)}.disco-beams{aspect-ratio:1;background:repeating-conic-gradient(#ffffff47 0deg 4deg,#0000 4deg 30deg);width:240%;position:absolute;top:30%;left:50%;translate:-50% -50%;-webkit-mask:radial-gradient(closest-side,#000 20%,#0000 70%);mask:radial-gradient(closest-side,#000 20%,#0000 70%)}.disco-spots i{animation:spot 3.2s var(--ease) infinite alternate;background:radial-gradient(closest-side,#fffffff2,#fff0);border-radius:50%;position:absolute}@keyframes spot{0%{opacity:.4;transform:translate(-12px)scale(.7)}to{opacity:1;transform:translate(12px)scale(1.1)}}.lockup{color:var(--ink);justify-items:center;margin-top:-10px;display:grid;position:relative}.lockup:before{content:"";z-index:-1;background:radial-gradient(closest-side, var(--veil) 55%, transparent);border-radius:50%;position:absolute;inset:-18% -14%}.lockup-title{justify-items:start;display:grid}.lockup-accent{z-index:1;font-family:var(--serif);letter-spacing:.01em;text-transform:lowercase;margin-bottom:-.32em;margin-left:.2em;font-size:clamp(1.6rem,7.6cqw,2.2rem);font-weight:500;line-height:1;position:relative}.lockup-name{font-family:var(--display);font-weight:400;font-size:calc(clamp(4rem, 19cqw, 5.4rem) * var(--name-scale,1));letter-spacing:-.01em;text-transform:lowercase;margin:0;line-height:.9}.lockup-spark{vertical-align:.6em;fill:currentColor;width:.34em;height:.34em;margin-left:.04em}.lockup-date{letter-spacing:.3em;margin-top:10px;font-size:1rem;font-weight:700}.scroll-hint{z-index:6;bottom:calc(28px + env(safe-area-inset-bottom,0px));color:var(--pearl);text-shadow:0 1px 6px #7a2e4a99;justify-items:center;gap:6px;display:grid;position:absolute;left:50%;translate:-50%}.scroll-hint i{background:linear-gradient(var(--pink-deep), transparent);width:1px;height:36px;animation:drip 2s var(--ease) infinite;transform-origin:top}@keyframes drip{0%{opacity:1;transform:scaleY(0)}70%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(1)}}.balloon{cursor:pointer;touch-action:manipulation;background:0 0;border:0;padding:0;position:absolute}.balloon svg{filter:drop-shadow(0 14px 14px #7a2e4a38);width:100%;height:auto;display:block;overflow:visible}.balloon .bob{animation:bob 5s var(--ease) infinite alternate}@keyframes bob{0%{transform:translateY(-4px)rotate(-2deg)}to{transform:translateY(6px)rotate(2deg)}}.manifesto{max-width:560px;padding-left:var(--gutter);padding-right:max(20px, env(safe-area-inset-right,0px));text-align:center;text-wrap:balance;margin:0;font-size:clamp(2.1rem,9.4vw,3.4rem);font-weight:500;line-height:1.15}.manifesto .accent{color:var(--title);font-style:italic;font-weight:600}.manifesto-bg{background:var(--veil);position:absolute;inset:0}.countdown{grid-template-columns:repeat(4,1fr);gap:10px;width:100%;padding:22px 14px;display:grid}.unit{justify-items:center;gap:2px;display:grid}.digits{font-variant-numeric:tabular-nums lining-nums;height:1.15em;color:var(--ink);font-size:clamp(2.3rem,11vw,3.2rem);font-weight:500;line-height:1.15;display:flex;position:relative;overflow:hidden}.digit{text-align:center;width:.6em;display:block}.unit .label{letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);font-size:.78rem;font-weight:700}.details{gap:14px;width:100%;display:grid}.detail{text-align:left;grid-template-columns:52px 1fr;align-items:center;gap:16px;padding:18px 20px;display:grid}.detail .icon{background:linear-gradient(145deg, var(--pearl), var(--pink));width:52px;height:52px;box-shadow:inset 0 0 0 1px var(--rosegold);color:var(--title);border-radius:50%;place-items:center;display:grid}.detail .icon svg{width:26px;height:26px}.detail .k{letter-spacing:.22em;text-transform:uppercase;color:var(--ink-soft);font-size:.8rem;font-weight:700}.detail .v{min-width:0;font-size:1.28rem;font-weight:600;line-height:1.25}.detail .sub{color:var(--ink-soft);font-size:1rem}.swatches{gap:6px;margin-top:6px;display:flex}.swatches i{border-radius:50%;width:20px;height:20px;box-shadow:inset 0 0 0 1px #7a2e4a2e}.toast-stage{grid-template-rows:1fr auto;align-content:center;gap:4svh;padding-block:8svh 6svh}.giant-type{text-align:center;color:var(--ink);text-shadow:0 0 24px #fff6f2d9;pointer-events:none;font-size:min(25cqw,22svh);line-height:1;position:absolute;top:12svh;left:0;right:0}.clink{align-self:end;place-items:center;width:100%;height:60cqw;max-height:46svh;display:grid;position:relative}.clink-glass{filter:drop-shadow(0 16px 18px #7a2e4a4d);width:min(52cqw,36svh);position:absolute}.clink-glass svg{width:100%;height:auto;overflow:visible}.clink-spark{filter:drop-shadow(0 0 10px #fff);width:40cqw;max-width:220px;position:absolute;top:0}.toast-copy{z-index:2;margin-inline:max(20px, env(safe-area-inset-left,0px));text-align:center;justify-items:center;gap:8px;max-width:480px;padding:18px 22px 22px;display:grid;position:relative}.toast-copy p{max-width:28ch;margin:0;font-size:1.15rem}.toast-copy .section-title{font-size:clamp(2.2rem,9.5cqw,3.8rem)}.petal{background:linear-gradient(135deg, var(--rose), var(--pink-deep));opacity:.85;border-radius:80% 0;width:16px;height:20px;animation:linear infinite fall;position:absolute;top:-40px}@keyframes fall{to{transform:translate(40px,110svh)rotate(540deg)}}.bubble{animation:2.8s ease-in infinite rise}@keyframes rise{0%{opacity:0;transform:translateY(0)}15%{opacity:.9}to{opacity:0;transform:translateY(-120px)}}.actions{gap:12px;width:100%;display:grid}.cal-menu{gap:10px;display:grid;overflow:hidden}.reply{text-align:center;justify-items:center;gap:14px;width:100%;padding:26px 22px;display:grid}.reply-icon{width:52px;height:52px;color:var(--title);background:linear-gradient(145deg, var(--pearl), var(--pink));box-shadow:inset 0 0 0 1px var(--rosegold);border-radius:50%;place-items:center;display:grid}.reply-icon svg{width:26px;height:26px}.reply-text{max-width:26ch;color:var(--ink);margin:0;font-size:1.2rem;font-weight:600;line-height:1.4}.reply-bubble{background:var(--btn);color:var(--pearl);border-radius:18px 18px 4px;justify-self:end;margin-right:8px;padding:10px 16px;font-size:1.1rem;font-weight:700;position:relative;rotate:-2deg;box-shadow:0 10px 20px -10px #9e4262cc}footer{z-index:1;padding-block:40px calc(110px + env(safe-area-inset-bottom,0px));text-align:center;justify-items:center;gap:8px;display:grid;position:relative}footer .signature{font-family:var(--serif);color:var(--ink);font-size:2.4rem;font-style:italic;font-weight:500;line-height:1.1}.welcome{z-index:80;background:radial-gradient(130% 90% at 50% 40%, var(--cream), var(--pink) 75%);place-items:center;display:grid;position:fixed;inset:0;overflow:hidden;container-type:size}.w-hint{bottom:calc(9cqh + env(safe-area-inset-bottom,0px));white-space:nowrap;position:absolute;left:50%;translate:-50%}.w-card-text{text-align:center;justify-items:center;gap:2px;display:grid}.w-name{color:var(--ink);font-size:18cqw;line-height:1}.w-copy{position:absolute;top:12cqh}.w-bottle-btn{cursor:pointer;background:0 0;border:0;margin-top:18cqh;padding:0;position:relative}.w-bottle{transform-origin:50% 90%;width:32cqw;position:relative}.w-bottle-svg{filter:drop-shadow(0 20px 24px #7a2e4a59);width:100%;height:auto;display:block}.w-cork{width:30%;margin-left:-15%;position:absolute;top:-1%;left:50%;overflow:visible}.w-neck{width:0;height:0;position:absolute;top:8%;left:50%}.w-drop{opacity:0;border-radius:50%;position:absolute;top:0;left:0;translate:-50% -50%;box-shadow:0 0 6px #fffc}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.petal,.bubble{display:none}}@media (width>=900px){body{font-size:19px}.section{padding-block:120px}}.place-card{background:var(--cream);box-shadow:0 0 0 1px var(--rosegold), 0 0 0 5px #ffffffb3, var(--shadow);border-radius:14px;justify-items:center;gap:2px;padding:18px 30px 16px;display:grid;position:relative}.place-card .eyebrow{color:var(--ink-soft)}.place-card .display{color:var(--ink);font-size:clamp(2.8rem,13vw,4rem)}.pill{background:var(--cream);box-shadow:0 0 0 1px var(--rosegold), var(--shadow);border-radius:999px;padding:10px 20px}.reserved{color:var(--ink);align-items:center;gap:8px;margin-top:8px;font-size:.95rem;font-weight:600;display:flex}.reserved-swatch{border-radius:50%;flex:none;width:20px;height:20px;position:relative;box-shadow:inset 0 0 0 1px #7a2e4a2e}.reserved-swatch:after{content:"";background:var(--ink);border-radius:1px;height:2px;margin-top:-1px;position:absolute;top:50%;left:-2px;right:-2px;rotate:-45deg}.itinerary{gap:10px;margin:4px 0 0;padding:0;list-style:none;display:grid}.itinerary li{grid-template-columns:5.6em 1fr;align-items:baseline;column-gap:10px;display:grid}.it-day{letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);grid-column:1/-1;margin-top:4px;font-size:.8rem;font-weight:700}.it-time{font-variant-numeric:tabular-nums lining-nums;color:var(--ink);font-weight:700}.it-title{color:var(--ink);font-size:1.15rem;font-weight:600}.it-note{color:var(--ink-soft);grid-column:2;font-style:italic}.footer-kiss{width:92px;height:auto;rotate:-8deg}.welcome{background:radial-gradient(120% 80% at 50% 42%, var(--cream), var(--pink) 55%, var(--rose) 100%)}.w-backdrop:before{content:"";background:radial-gradient(90% 60% at 50% 45%,#fff6f28c,#fff6f200 70%);position:absolute;inset:0}.w-backdrop{pointer-events:none;position:absolute;inset:0;overflow:hidden}.w-spotlight{clip-path:polygon(42% 0,58% 0,88% 100%,12% 100%);filter:blur(18px);opacity:.8;width:110cqw;height:95cqh;animation:spot-breathe 6s var(--ease) infinite alternate;background:linear-gradient(#ffffffbf,#ffffff1f 70%,#0000);position:absolute;top:-10cqh;left:50%;translate:-50%}@keyframes spot-breathe{to{opacity:1;transform:scaleX(1.06)}}.w-floor{background:radial-gradient(closest-side,#ffffffd9,#fff6f259 60%,#0000);border-radius:50%;width:70cqw;height:12cqh;position:absolute;bottom:14cqh;left:50%;translate:-50%}.w-bokeh{opacity:.55;background:radial-gradient(closest-side,#ffffffd9,#fff0);border-radius:50%;animation:linear infinite alternate bokeh-drift;position:absolute}.w-bokeh.rose{background:radial-gradient(closest-side,#f6d9d3e6,#e6b8b000)}@keyframes bokeh-drift{0%{opacity:.35;transform:translate(-10px,14px)scale(.85)}to{opacity:.75;transform:translate(12px,-18px)scale(1.1)}}.w-spark{fill:#fff;filter:drop-shadow(0 0 4px #ffffffe6);animation:twinkle 2.6s var(--ease) infinite;position:absolute}@keyframes twinkle{0%,to{opacity:0;transform:scale(.3)rotate(0)}50%{opacity:1;transform:scale(1)rotate(45deg)}}.w-corner{filter:drop-shadow(0 12px 14px #7a2e4a38);position:absolute}.w-corner>svg{width:100%;height:100%}.w-line{top:calc(12cqh + env(safe-area-inset-top,0px));text-align:center;font-family:var(--display);white-space:nowrap;text-transform:lowercase;color:var(--ink);text-shadow:0 0 18px #fff6f2e6;margin:0;padding-inline:24px;font-size:clamp(1.7rem,8.4cqw,2.6rem);line-height:1.1;position:absolute;left:0;right:0}.scroll-progress{z-index:70;top:env(safe-area-inset-top,0px);transform-origin:0;background:linear-gradient(90deg, var(--rosegold), var(--pink-deep), var(--btn));height:3px;position:fixed;left:0;right:0;box-shadow:0 0 8px #fffc}.scroll-nudge{z-index:65;left:50%;bottom:calc(22px + env(safe-area-inset-bottom,0px));background:var(--cream);box-shadow:0 0 0 1px var(--rosegold), var(--shadow);pointer-events:none;white-space:nowrap;border-radius:999px;align-items:center;gap:8px;padding:10px 18px 10px 20px;display:flex;position:fixed;translate:-50%}.scroll-nudge .eyebrow{color:var(--ink)}.nudge-chevron{fill:none;width:20px;height:20px;stroke:var(--title);stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;animation:nudge-bounce 1.4s var(--ease) infinite}@keyframes nudge-bounce{0%,to{transform:translateY(-2px)}50%{transform:translateY(4px)}}
