:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:oklch(98.8% .005 20);--paper:oklch(97.5% .01 45);--blush:oklch(93.5% .035 8);--blush-soft:oklch(96.5% .018 8);--wine:oklch(43% .14 10);--wine-dark:oklch(35% .12 10);--rose:oklch(66% .14 6);--ink:oklch(30% .06 12);--muted:oklch(45% .04 12);--line:oklch(88% .03 12);--stone:oklch(95% .006 30);--stone-dark:oklch(87% .01 30);--font-display:"Playfair Display", "Literata", Georgia, serif;--font-serif:"Literata", Georgia, "Times New Roman", serif;--font-script:"Dancing Script", "Segoe Script", cursive;--font-body:"Be Vietnam Pro", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--content-width:72rem;--ease-out:cubic-bezier(.16, 1, .3, 1);--shadow-soft:0 14px 30px oklch(40% .08 10/.12);--shadow-paper:0 18px 38px oklch(35% .06 20/.14), 0 2px 6px oklch(35% .06 20/.08);--z-petals:0;--z-content:1}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:1.5rem;overflow-x:clip}body{background:var(--bg);min-width:320px;color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:1rem;line-height:1.7;overflow-x:clip}button,a{color:inherit;font:inherit}button{cursor:pointer}a{text-decoration:none}img{max-width:100%;display:block}h1,h2,h3,p{text-wrap:pretty}:focus-visible{outline-offset:4px;outline:3px solid oklch(55% .15 10)}.skip-link{z-index:10;background:var(--wine);color:#fff;border-radius:999px;padding:.7rem 1rem;position:fixed;top:.75rem;left:.75rem;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.divider{color:var(--rose);justify-content:center;align-items:center;gap:.6rem;display:flex}.divider:before,.divider:after{content:"";background:linear-gradient(90deg,#0000,oklch(75% .09 8));width:4.5rem;height:1px}.divider:after{transform:scaleX(-1)}.section-title{color:var(--wine);font-family:var(--font-serif);text-align:center;text-wrap:balance;margin:.9rem 0 0;font-size:clamp(1.6rem,3.2vw,2.15rem);font-weight:400;line-height:1.3}.site-footer{z-index:var(--z-content);color:var(--muted);text-align:center;padding:2rem 1rem 2.5rem;position:relative}.footer-note{font-family:var(--font-script);color:var(--wine);margin:0;font-size:1.35rem}.footer-note span{color:var(--rose)}.site-header{z-index:var(--z-content);width:min(calc(100% - 3rem), var(--content-width));align-items:center;gap:1.5rem;min-height:5.5rem;margin-inline:auto;display:flex;position:relative}.wordmark{color:var(--wine);font-family:var(--font-serif);align-items:center;gap:.7rem;margin-right:auto;font-size:.85rem;line-height:1.25;display:inline-flex}.wordmark-mark{width:2.1rem;height:2.1rem;color:var(--wine)}.site-nav{align-items:center;gap:clamp(1rem,2.6vw,2.2rem);display:flex}.site-nav a{color:var(--wine);font-family:var(--font-serif);padding-block:.4rem;font-size:.86rem;transition:color .18s}.site-nav a[aria-current=page]{text-underline-offset:.35rem;text-decoration:underline;text-decoration-thickness:1px}.site-nav a:hover{color:var(--rose)}.header-cta{background:var(--wine);color:#fff;white-space:nowrap;border-radius:999px;align-items:center;gap:.45rem;min-height:2.75rem;padding:.5rem 1.15rem;font-size:.8rem;font-weight:500;transition:background .18s,transform .18s;display:inline-flex;box-shadow:0 6px 16px oklch(43% .14 10/.22)}.header-cta:hover{background:var(--wine-dark);transform:translateY(-1px)}.hero{isolation:isolate;text-align:center;flex-direction:column;align-items:center;padding:clamp(1.5rem,4vw,3rem) 1.5rem 0;display:flex;position:relative;overflow-x:clip}.hero-halo{z-index:-1;aspect-ratio:1;pointer-events:none;background:radial-gradient(circle at 50% 45%,oklch(95.5% .03 5/.95),oklch(96.5% .022 340/.7) 55%,oklch(97% .02 340/0) 72%);border-radius:50%;width:min(92vw,40rem);position:absolute;top:1rem;left:50%;transform:translate(-50%)}.hero-content{z-index:2;position:relative}.hero h1{flex-direction:column;align-items:center;margin:0;font-weight:400;display:flex}.date{color:var(--wine);font-family:var(--font-display);letter-spacing:-.04em;background:linear-gradient(oklch(50% .16 10),oklch(36% .12 10));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:clamp(5.5rem,15vw,9.5rem);font-style:normal;font-weight:400;line-height:.95;position:relative}.date-blossom{fill:oklch(78% .1 5);filter:drop-shadow(0 2px 3px oklch(50% .12 10/.2));width:.28em;position:absolute;top:38%;right:-.25em}.date-blossom circle{fill:oklch(88% .11 85)}.hero-title-sub{color:var(--wine);font-family:var(--font-serif);margin-top:.4rem;font-size:clamp(1.55rem,3.4vw,2.2rem);line-height:1.25}.hero-copy{color:var(--muted);font-family:var(--font-serif);margin:.9rem auto 0;font-size:.92rem;line-height:1.6}.gifts-section{z-index:var(--z-content);width:min(100% - 2.5rem,62rem);margin-inline:auto;padding:clamp(3.5rem,7vw,5rem) 0 2rem;scroll-margin-top:1rem;position:relative}@media (width<=860px){.site-nav{display:none}}@media (width<=480px){.site-header{gap:.75rem;width:calc(100% - 2rem);min-height:4.5rem}.wordmark{gap:.5rem;font-size:.74rem}.wordmark-mark{width:1.7rem;height:1.7rem}.header-cta{padding-inline:.85rem;font-size:.74rem}.hero{padding-inline:1rem}.hero-copy br{display:none}.gifts-section{width:calc(100% - 2rem)}}.letter-block{width:100%;scroll-margin-top:1rem;position:relative}.envelope-stage{z-index:1;isolation:isolate;perspective:1100px;width:min(100%,48rem);height:21rem;margin:.25rem auto 0;position:relative}.stage-roses{z-index:0;object-fit:cover;object-position:center 72%;pointer-events:none;width:128%;max-width:none;height:25rem;position:absolute;bottom:-2.5rem;left:50%;transform:translate(-50%);-webkit-mask-image:radial-gradient(52% 60% at 50% 58%,#000 62%,#0000 100%);mask-image:radial-gradient(52% 60% at 50% 58%,#000 62%,#0000 100%)}.pedestal{z-index:1;filter:drop-shadow(0 16px 18px oklch(40% .05 20/.14));width:min(74%,34rem);height:5.4rem;position:absolute;bottom:.4rem;left:50%;transform:translate(-50%)}.pedestal-top,.pedestal-side{width:100%;position:absolute;left:0}.pedestal-side{background:linear-gradient(100deg, transparent 20%, oklch(100% 0 0/.55) 32%, transparent 40%), linear-gradient(90deg, var(--stone-dark), var(--stone) 45%, oklch(90% .01 30) 100%);border-radius:0 0 50% 50%/0 0 1.6rem 1.6rem;height:3.9rem;top:1.5rem}.pedestal-top{background:linear-gradient(160deg, transparent 30%, oklch(86% .012 30/.5) 34%, transparent 37%), linear-gradient(20deg, transparent 55%, oklch(86% .012 30/.4) 58%, transparent 61%), radial-gradient(ellipse at 40% 40%, oklch(99.5% .003 30), var(--stone) 70%);border-radius:50%;height:3rem;top:0;box-shadow:inset 0 -2px 4px oklch(80% .012 30/.5)}.ribbon{z-index:2;fill:url(#ribbon-fill);opacity:.88;pointer-events:none;width:min(108%,46rem);height:12rem;position:absolute;bottom:-1.6rem;left:50%;transform:translate(-50%)}.envelope{z-index:3;aspect-ratio:5/3;perspective:1000px;perspective-origin:50% 20%;width:min(66%,25rem);transition:transform .65s var(--ease-out);position:absolute;bottom:2.9rem;left:50%;translate:-50%}.envelope:after{z-index:-1;content:"";filter:blur(4px);height:1.6rem;transition:opacity .65s var(--ease-out), transform .65s var(--ease-out);background:radial-gradient(oklch(35% .08 12/.3),#0000 70%);border-radius:50%;position:absolute;bottom:-.9rem;left:4%;right:4%}.envelope>svg,.envelope-flap,.envelope-sheet-slot{pointer-events:none;position:absolute;overflow:visible}.envelope-back,.envelope-front{width:100%;height:100%;inset:0}.envelope-back{z-index:0}.envelope-front{z-index:2}.envelope-sheet-slot{z-index:1;will-change:transform;height:86%;top:6%;left:6%;right:6%}.envelope-sheet{background:linear-gradient(180deg, oklch(99.5% .004 45), var(--paper));text-align:left;width:100%;height:100%;padding:1.1rem 1.4rem;box-shadow:0 -2px 8px oklch(40% .06 12/.12)}.sheet-to{color:var(--wine);font-family:var(--font-script);margin-bottom:.55rem;font-size:1.35rem;line-height:1.2;display:block}.sheet-line{background:oklch(86% .03 12);height:1px;margin-bottom:.85rem;display:block}.sheet-line--short{width:55%}.envelope-flap{z-index:3;transform-origin:top;width:100%;height:63.4%;transform-style:preserve-3d;will-change:transform;top:0;left:0}.flap-face{backface-visibility:hidden;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.flap-face--back{transform:rotateY(180deg)}.envelope-seal{z-index:4;width:4.3rem;height:4.3rem;top:61%;left:50%;translate:-50% -50%}.envelope-stage:not(.is-open):hover .envelope{transform:translateY(-4px)}.envelope-stage:not(.is-open):hover .envelope:after{opacity:.75;transform:scaleX(.94)}.open-letter{z-index:6;background:var(--wine);color:#fff;min-width:8.5rem;min-height:2.9rem;font-family:var(--font-serif);transition:background .18s ease, transform .2s var(--ease-out);border:0;border-radius:999px;justify-content:center;align-items:center;gap:.75rem;padding:.6rem 1.5rem;font-size:.92rem;display:inline-flex;position:absolute;bottom:1.45rem;left:50%;transform:translate(-50%);box-shadow:0 8px 18px oklch(40% .14 10/.3)}.open-letter:hover{background:var(--wine-dark);transform:translate(-50%,-2px)}.open-letter:active{transform:translate(-50%)scale(.98)}.letter-slot{z-index:3;justify-items:center;margin-top:1.75rem;padding-inline:.5rem;display:grid;position:relative}.letter-slot.is-open{margin-top:-11rem}.envelope-stage.is-letter-out .open-letter{visibility:hidden;opacity:0}.letter-close{z-index:1;width:2.75rem;height:2.75rem;color:var(--wine);animation:letter-line-in .4s var(--ease-out) .9s both;background:oklch(100% 0 0/.7);border:1px solid oklch(88% .03 12);border-radius:50%;place-items:center;transition:background .18s,color .18s;display:grid;position:absolute;top:.9rem;right:.9rem}.letter-close:hover{background:var(--wine);color:#fff}.letter-hint{color:var(--muted);font-family:var(--font-serif);margin:1rem 0 0;font-size:.88rem;font-style:italic}.letter-paper{background:radial-gradient(circle at 15% 20%, oklch(99% .006 45/.9), transparent 45%), radial-gradient(circle at 85% 80%, oklch(96% .015 40/.7), transparent 50%), var(--paper);width:min(100%,37rem);box-shadow:var(--shadow-paper);text-align:left;border-radius:3px;padding:clamp(1.5rem,4vw,2.4rem) clamp(1.4rem,5vw,3rem) 1.8rem;position:relative}.letter-paper:before{content:"";pointer-events:none;border:1px solid oklch(88% .02 40/.7);border-radius:2px;position:absolute;inset:.55rem}.letter-greeting{color:var(--wine);font-family:var(--font-script);margin:0 0 .6rem;font-size:1.75rem;font-weight:500;line-height:1.2}.letter-paper p{color:var(--ink);font-family:var(--font-serif);margin:.55rem 0;font-size:.95rem;line-height:1.75}.letter-paper .letter-signature{color:var(--wine);font-family:var(--font-script);text-align:right;margin:.9rem 0 0;font-size:1.3rem;line-height:1.2}.letter-signature svg{vertical-align:-.1rem;color:var(--rose);display:inline-block}.letter-sprig{pointer-events:none;background:url(/assets/hero-roses.webp) 2% 62%/380% no-repeat;width:9rem;height:9rem;position:absolute;bottom:-2.6rem;left:-3.2rem;transform:rotate(-18deg);-webkit-mask-image:radial-gradient(circle,#000 45%,#0000 70%);mask-image:radial-gradient(circle,#000 45%,#0000 70%)}.gift-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(.75rem,2.5vw,1.75rem);margin:2.25rem 0 0;padding:0;list-style:none;display:grid}.gift-card{background:0 0;border:1px solid #0000;border-radius:1rem;flex-direction:column;align-items:center;gap:.7rem;width:100%;height:100%;padding:.4rem .4rem .9rem;transition:background .22s,border-color .22s;display:flex}.gift-art{aspect-ratio:5/4;place-items:center;width:100%;display:grid}.gift-art img{object-fit:cover;width:100%;height:100%;transition:transform .45s var(--ease-out);-webkit-mask-image:radial-gradient(50% 50%,#000 55%,#0000 100%);mask-image:radial-gradient(50% 50%,#000 55%,#0000 100%)}.gift-card:hover .gift-art img,.gift-card:hover .secret-art{transform:scale(1.05)}.gift-name{color:var(--ink);font-family:var(--font-serif);flex:1;font-size:clamp(.9rem,1.6vw,1.02rem);line-height:1.4}.gift-arrow{background:var(--wine);color:#fff;width:2.6rem;height:2.6rem;transition:background .18s ease, transform .2s var(--ease-out);border-radius:50%;place-items:center;display:grid;box-shadow:0 5px 12px oklch(43% .14 10/.25)}.gift-card:hover .gift-arrow{transform:translate(2px)}.gift-card[aria-pressed=true]{background:var(--blush-soft);border-color:oklch(86% .05 8)}.gift-card[aria-pressed=true] .gift-arrow{background:var(--rose)}.gift-card--secret .gift-arrow{box-shadow:none;background:oklch(80% .015 10)}.gift-card--secret:hover .gift-arrow{background:oklch(72% .02 10);transform:none}.secret-art{width:82%;transition:transform .45s var(--ease-out)}.free-art{width:82%;transition:transform .45s var(--ease-out);overflow:visible}.gift-card:hover .free-art{transform:scale(1.05)rotate(3deg)}.free-art-card{fill:oklch(90% .05 8)}.free-art-inner{fill:oklch(98.5% .008 30);stroke:oklch(86% .04 8);stroke-dasharray:3 3}.free-art-mark{fill:var(--wine);font-family:var(--font-script);font-size:56px;font-weight:600}.free-art-spark{fill:oklch(78% .1 5)}.secret-art-shadow{fill:oklch(60% .03 20/.12)}.secret-art-box{fill:oklch(96% .012 30);stroke:oklch(88% .02 20)}.secret-art-lid{fill:oklch(98% .008 30);stroke:oklch(88% .02 20)}.secret-art-ribbon{fill:oklch(78% .1 5)}.secret-art-lock{fill:oklch(42% .03 20)}.secret-art-shackle{fill:none;stroke:oklch(42% .03 20);stroke-width:3.5px}.gift-footer{text-align:center;flex-direction:column;align-items:center;gap:.9rem;min-height:7.5rem;margin-top:1.4rem;display:flex}.gift-status{color:var(--muted);font-family:var(--font-serif);margin:0;font-size:.9rem}.gift-status strong,.gift-sent strong{color:var(--wine);font-weight:500}.send-gift{background:var(--wine);color:#fff;min-height:2.9rem;font-family:var(--font-serif);animation:letter-line-in .4s var(--ease-out) both;transition:background .18s ease, transform .2s var(--ease-out);border:0;border-radius:999px;align-items:center;gap:.6rem;padding:.6rem 1.5rem;font-size:.92rem;display:inline-flex;box-shadow:0 8px 18px oklch(40% .14 10/.25)}.send-gift:hover{background:var(--wine-dark);transform:translateY(-2px)}.send-gift:active{transform:scale(.98)}.send-gift:disabled{box-shadow:none;cursor:not-allowed;background:oklch(80% .03 10);transform:none}.gift-send-form{flex-direction:column;align-items:center;gap:.9rem;width:min(100%,26rem);display:flex}.wish-input{width:100%;min-height:3rem;color:var(--ink);font-family:var(--font-serif);text-align:center;animation:letter-line-in .4s var(--ease-out) both;background:#fff;border:1px solid oklch(86% .04 8);border-radius:999px;padding:.7rem 1.1rem;font-size:1rem;transition:border-color .18s,box-shadow .18s}.wish-input::placeholder{color:oklch(60% .03 12)}.wish-input:focus{border-color:var(--rose);outline:none;box-shadow:0 0 0 4px oklch(66% .14 6/.18)}.gift-sent{background:var(--blush-soft);width:min(100%,30rem);color:var(--ink);font-family:var(--font-serif);animation:letter-line-in .5s var(--ease-out) both;border:1px solid oklch(88% .04 8);border-radius:1rem;padding:1.25rem 1.5rem;font-size:.92rem}.gift-sent p{margin:.25rem 0 0}.gift-sent-icon{color:var(--rose)}.gift-sent-title{color:var(--wine);font-family:var(--font-display);font-size:1.25rem}.gift-sent .gift-sent-tease{color:var(--muted);border-top:1px dashed oklch(86% .04 8);margin-top:.8rem;padding-top:.8rem}.link-button{min-height:2.75rem;color:var(--wine);text-underline-offset:.25rem;background:0 0;border:0;padding:0 .25rem;font-weight:500;text-decoration:underline}.link-button:hover{color:var(--rose)}.secret-dialog{background:var(--paper);width:min(100% - 2rem,29rem);max-height:min(90dvh,36rem);color:var(--ink);border:0;border-radius:1rem;padding:0;box-shadow:0 20px 50px oklch(25% .06 12/.25)}.secret-dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:oklch(25% .04 12/.45)}.dialog-content{text-align:center;padding:clamp(1.6rem,5vw,2.4rem)}.dialog-lock{background:var(--blush);width:3.5rem;height:3.5rem;color:var(--wine);border-radius:50%;place-items:center;margin:0 auto .8rem;display:grid}.dialog-content .eyebrow{color:var(--rose);letter-spacing:.14em;text-transform:uppercase;margin:0 0 .4rem;font-size:.7rem;font-weight:600}.dialog-content h2{color:var(--wine);font-family:var(--font-display);margin:0;font-size:1.8rem;font-weight:400}.dialog-content>p:not(.eyebrow){color:var(--muted);font-family:var(--font-serif);margin:.8rem 0 1.4rem;line-height:1.75}.dialog-close{background:var(--wine);color:#fff;min-height:2.9rem;font-family:var(--font-serif);border:0;border-radius:999px;padding:.65rem 1.3rem;transition:background .18s}.dialog-close:hover{background:var(--wine-dark)}@media (width<=760px){.gift-grid{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:1.25rem}}@media (width<=540px){.envelope-stage{height:16.5rem}.stage-roses{width:175%;height:19rem;bottom:-2rem}.pedestal{width:88%;height:4.4rem}.pedestal-top{height:2.4rem}.pedestal-side{height:3.2rem;top:1.2rem}.envelope{width:76%;bottom:2.4rem}.envelope-seal{width:3.3rem;height:3.3rem}.envelope-sheet{padding:.8rem 1rem}.sheet-to{font-size:1.1rem}.open-letter{bottom:1.05rem}.letter-slot.is-open{margin-top:-8.5rem}.letter-close{top:.6rem;right:.6rem}.letter-sprig{width:6.5rem;height:6.5rem;left:-2.2rem}.letter-paper p{font-size:.9rem}}@media (prefers-reduced-motion:reduce){.envelope,.envelope:after,.envelope>svg,.open-letter,.gift-card,.gift-art img,.secret-art,.gift-arrow{transition-duration:.01ms!important}}.petal-field{z-index:var(--z-petals);pointer-events:none;contain:strict;position:fixed;inset:0;overflow:hidden}.petal{will-change:transform, opacity;background:linear-gradient(135deg,oklch(82% .1 5/.75),oklch(68% .15 5/.6));border-radius:80% 0;position:absolute;top:-2rem}.petal--tone-1{background:linear-gradient(135deg,oklch(88% .07 5/.7),oklch(76% .12 5/.55))}.petal--tone-2{background:linear-gradient(135deg,oklch(75% .13 5/.6),oklch(60% .17 8/.5))}@keyframes letter-line-in{0%{opacity:0;translate:0 8px}to{opacity:1;translate:0}}.letter-content>*{animation:letter-line-in .55s var(--ease-out) both}.letter-content>:first-child{animation-delay:.7s}.letter-content>:nth-child(2){animation-delay:.75s}.letter-content>:nth-child(3){animation-delay:.9s}.letter-content>:nth-child(4){animation-delay:1.05s}.letter-content>:nth-child(5){animation-delay:1.2s}.letter-content>:nth-child(6){animation-delay:1.35s}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.petal-field{display:none}.letter-content>*{animation:none}}
