body.envelope-locked{overflow:hidden}.envelope-intro{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:calc(1rem + env(safe-area-inset-top,0px)) calc(1rem + env(safe-area-inset-right,0px)) calc(1rem + env(safe-area-inset-bottom,0px)) calc(1rem + env(safe-area-inset-left,0px));background-color:#f4eadf;background-image:linear-gradient(#f1e7dac7,#f1e7dac7),url(/assets/textured-white-paper-DnEANzn-.webp);background-position:center;background-size:cover;transition:opacity .7s ease,visibility .7s ease}.envelope-intro--opening{pointer-events:none;animation:envelope-scene-fade .7s ease 4.6s forwards}.envelope-intro__flash{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;pointer-events:none;background-color:#f4eadf;background-image:linear-gradient(#f1e7dac7,#f1e7dac7),url(/assets/textured-white-paper-DnEANzn-.webp);background-position:center;background-size:cover;opacity:0}.envelope-intro--opening .envelope-intro__flash{animation:envelope-flash 1.5s linear 3.8s forwards}.envelope-intro__trigger{position:relative;width:100%;height:100%;padding:0;border:none;background:none;cursor:pointer;font:inherit;color:inherit;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.envelope-intro__trigger:disabled{cursor:default}.envelope-intro__visual{position:absolute;top:calc(50% - 100px);left:50%;display:grid;place-items:center;width:var(--intro-visual-size);height:var(--intro-visual-size);transform:translate(-50%,-50%)}:root{--intro-visual-size: min(105vw, 43.5rem, calc(100dvh - 6rem) )}.envelope-intro__cover,.envelope-intro__gif{display:block;width:100%;max-width:100%;max-height:100%;height:100%;-o-object-fit:contain;object-fit:contain;transition:transform .7s ease,opacity .7s ease}.envelope-intro--opening .envelope-intro__gif{transform:scale(1.03)}.envelope-intro__hint{position:absolute;top:calc(50% - 100px + var(--intro-visual-size) / 2 + .75rem);left:calc(50% + 1vw);z-index:2;margin:0;padding-bottom:.35rem;font-family:var(--font-serif);font-size:clamp(.85rem,3vw,.95rem);letter-spacing:clamp(.1em,1.5vw,.2em);color:#6f1d2b;opacity:.95;animation:hint-pulse-mobile 2.2s ease-in-out infinite;transform:translate(-50%)}.envelope-intro__hint:after{position:absolute;bottom:0;left:50%;width:2rem;height:1px;content:"";background:currentColor;opacity:.5;transform:translate(-50%)}@media (max-width: 767px){.envelope-intro__visual{--intro-visual-size: min( calc(100dvw - 1rem) , calc(100dvh - 6rem) )}.envelope-intro__hint{top:calc(50% - 100px + var(--intro-visual-size) / 2 + .75rem);color:#6f1d2b}}@keyframes hint-pulse-mobile{0%,to{opacity:.55;transform:translate(-50%) translateY(0)}50%{opacity:1;transform:translate(-50%) translateY(-3px)}}@keyframes hint-pulse{0%,to{opacity:.55;transform:translate(-50%,-50%) translateY(0)}50%{opacity:1;transform:translate(-50%,-50%) translateY(-3px)}}.envelope{position:relative;width:min(96vw,58rem);aspect-ratio:1.45;height:auto;overflow:hidden;perspective:1200px;transform-style:preserve-3d}.envelope-intro--opening .envelope{overflow:visible;will-change:auto}.envelope__back{position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid rgba(111,29,43,.2);border-radius:2px;background:repeating-linear-gradient(20deg,rgba(255,255,255,.035) 0,rgba(255,255,255,.035) 1px,transparent 1px,transparent 5px),#f3e5d7}.envelope__pocket{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;border:1px solid rgba(111,29,43,.12);border-radius:2px;background:linear-gradient(160deg,rgba(255,255,255,.16),transparent 52%),#e4cfbc;clip-path:polygon(0 0,50% 47%,100% 0,100% 100%,0 100%);pointer-events:none;transition:opacity .95s ease}.envelope-intro--opening .envelope__pocket{opacity:0}.envelope__flap--top{position:absolute;top:0;left:0;width:100%;height:58%;z-index:4;transform-origin:top center;border-top:1px solid rgba(111,29,43,.16);background:linear-gradient(180deg,rgba(255,255,255,.2),transparent),#f8eee4;clip-path:polygon(0 0,50% 100%,100% 0);transition:transform 1.05s cubic-bezier(.22,1,.36,1);backface-visibility:hidden;transform-style:preserve-3d;will-change:transform}.envelope-intro--opening .envelope__flap--top{transform:rotateX(-178deg)}.envelope__seal{position:absolute;top:58%;left:50%;z-index:10;display:flex;align-items:center;justify-content:center;width:clamp(6rem,26vw,7.5rem);height:clamp(6rem,26vw,7.5rem);border:2px solid rgba(255,239,221,.34);border-radius:47% 53% 51% 49%/52% 46% 54% 48%;background:#6f1d2b;color:#fffaf5f2;font-family:var(--font-serif);font-size:1.35rem;font-style:italic;transform:translate(-50%,-50%);transition:transform 1.05s cubic-bezier(.22,1,.36,1);will-change:transform}.envelope__seal:before,.envelope__seal:after{position:absolute;bottom:-.35rem;content:"";background:#6f1d2b;opacity:0;transform-origin:top center}.envelope__seal:before{left:22%;width:.8rem;height:1.7rem;border-radius:45% 55% 58% 42%/16% 18% 82% 84%;transform:rotate(8deg) scaleY(.2)}.envelope__seal:after{right:18%;width:.55rem;height:1.1rem;border-radius:55% 45% 70% 30%/18% 16% 84% 82%;transform:rotate(-10deg) scaleY(.2)}.envelope__seal span{display:grid;place-items:center;width:70%;height:70%;border:1px solid rgba(255,238,221,.48);border-radius:52% 48% 46% 54%/48% 55% 45% 52%}.envelope-intro__trigger:hover:not(:disabled) .envelope__seal{transform:translate(-50%,-50%) scale(1.06)}.envelope-intro--opening .envelope__seal{animation:seal-melt 1.55s cubic-bezier(.22,1,.36,1) forwards}.envelope-intro--opening .envelope__seal:before,.envelope-intro--opening .envelope__seal:after{animation:wax-drip 1.55s ease-in forwards}@keyframes seal-melt{0%{transform:translate(-50%,-50%) translateY(0) rotateX(0) scale(1);opacity:1}72%{transform:translate(-50%,-50%) translateY(-1.5rem) rotateX(-25deg) scale(1);opacity:1}to{transform:translate(-50%,-50%) translateY(-1.75rem) rotateX(-35deg) scale(1);opacity:0}}@keyframes wax-drip{0%{opacity:0;transform:translateY(-.2rem) scaleY(.2)}35%{opacity:1}72%{opacity:1}to{opacity:0;transform:translateY(1.2rem) scaleY(1)}}@keyframes envelope-flash{0%{opacity:0}52%{opacity:1}to{opacity:0}}@keyframes envelope-scene-fade{to{opacity:0;visibility:hidden}}@media (min-width: 768px){.envelope{width:min(92vw,58rem)}}@media (max-height: 620px){.envelope-intro__trigger{gap:.75rem}.envelope{width:min(88vw,52rem)}}@media (prefers-reduced-motion: reduce){.envelope-intro__hint,.envelope-intro__flash{animation:none}.envelope-intro__gif{transition-duration:.01ms}.envelope__flap--top,.envelope__seal,.envelope__pocket{transition-duration:.01ms!important;transition-delay:0ms!important}.envelope-intro--opening,.envelope-intro--opening .envelope,.envelope-intro--opening .envelope-intro__flash{animation-duration:.01ms!important;animation-delay:0ms!important}}.back-to-top{position:absolute;top:50%;left:calc(1rem + env(safe-area-inset-left,0px));display:inline-flex;align-items:center;justify-content:center;gap:.35rem;min-height:var(--touch-min);padding:.55rem .9rem;border:1px solid var(--color-cream);border-radius:999px;background:var(--color-cream);color:var(--color-bg);font-family:var(--font-serif);font-size:clamp(.95rem,3.5vw,1.1rem);font-weight:700;letter-spacing:.08em;cursor:pointer;-webkit-tap-highlight-color:transparent;transform:translateY(-50%);animation:back-to-top-in .28s ease}.back-to-top:hover{background:transparent;color:var(--color-cream)}.back-to-top:active{transform:translateY(-50%) scale(.97)}.back-to-top__label{text-transform:uppercase}@keyframes back-to-top-in{0%{opacity:0;transform:translateY(calc(-50% + 8px))}to{opacity:1;transform:translateY(-50%)}}@media (prefers-reduced-motion: reduce){.back-to-top{animation:none}}.music-toggle{display:grid;place-items:center;padding:0;border:2px solid rgba(255,248,240,.55);border-radius:999px;background:#111;cursor:pointer;-webkit-tap-highlight-color:transparent}.music-toggle:active{filter:brightness(.92)}.music-toggle--hero{width:clamp(4.75rem,18vw,5.5rem);height:clamp(4.75rem,18vw,5.5rem);margin:1.25rem auto 0}.music-toggle--float{position:fixed;right:calc(1rem + env(safe-area-inset-right,0px));bottom:calc(1rem + env(safe-area-inset-bottom,0px));z-index:60;width:3.25rem;height:3.25rem;animation:music-float-in .28s ease}.music-toggle--float:after{top:auto;bottom:calc(100% + .5rem);transform:translate(-50%,.25rem)}.music-toggle--float:hover:after,.music-toggle--float:focus-visible:after{transform:translate(-50%)}@media (max-width: 767px){.music-toggle--float{bottom:calc(var(--mobile-nav-height) + env(safe-area-inset-bottom,0px) + .85rem)}}.music-toggle__vinyl{display:block;width:100%;height:100%;border-radius:50%;transform-origin:center;animation:vinyl-spin 2.4s linear infinite;animation-play-state:paused;will-change:transform}.music-toggle--playing .music-toggle__vinyl{animation-play-state:running}.music-toggle:after{position:absolute;top:auto;bottom:calc(100% + .5rem);left:50%;width:-moz-max-content;width:max-content;max-width:8rem;padding:.3rem .55rem;border-radius:.2rem;background:#2c2420e6;color:var(--color-text-light);content:attr(data-tooltip);font-family:var(--font-sans);font-size:.75rem;font-weight:300;letter-spacing:.05em;opacity:0;pointer-events:none;transform:translate(-50%,.25rem);transition:opacity .2s ease,transform .2s ease;white-space:nowrap}.music-toggle:hover:after,.music-toggle:focus-visible:after{opacity:1;transform:translate(-50%)}.music-toggle:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}@keyframes vinyl-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes music-float-in{0%{opacity:0;transform:translateY(8px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}@media (prefers-reduced-motion: reduce){.music-toggle__vinyl,.music-toggle--float{animation:none}}.pointer-events-none{pointer-events:none}.\!visible{visibility:visible!important}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.mx-auto{margin-left:auto;margin-right:auto}.mt-2{margin-top:.5rem}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.w-full{width:100%}.max-w-3xl{max-width:48rem}.max-w-\[9rem\]{max-width:9rem}.-rotate-1{--tw-rotate: -1deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-3{--tw-rotate: -3deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-2{--tw-rotate: 2deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-3{--tw-rotate: 3deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.justify-evenly{justify-content:space-evenly}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-y-10{row-gap:2.5rem}.overflow-hidden{overflow:hidden}.border-0{border-width:0px}.border-b{border-bottom-width:1px}.border-white\/45{border-color:#ffffff73}.bg-stone-200{--tw-bg-opacity: 1;background-color:rgb(231 229 228 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.object-contain{-o-object-fit:contain;object-fit:contain}.p-0{padding:0}.pt-5{padding-top:1.25rem}.text-left{text-align:left}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}@font-face{font-family:JF Jin Xuan;src:url(/assets/jf-jinxuan-medium-subset-PsO5mmu9.woff2) format("woff2");font-style:normal;font-weight:500;font-display:swap}@font-face{font-family:Rockwell;src:url(/assets/Rockwell-subset-BSvm3eAN.woff2) format("woff2");font-style:normal;font-weight:400;font-display:swap}:root{--color-bg: #6f1d2b;--color-bg-dark: #6f1d2b;--color-text: #3a2928;--color-text-light: #fff8f0;--color-accent: #bd965f;--color-accent-soft: #edd9c8;--color-cream: #fff8f0;--font-serif: "JF Jin Xuan", Rockwell, serif;--font-display: Rockwell, "JF Jin Xuan", serif;--font-sans: "JF Jin Xuan", Rockwell, serif;--font-body-size: clamp(.95rem, 3.5vw, 1.05rem);--section-padding-y: clamp(3rem, 8vw, 5rem);--section-padding-x: clamp(1rem, 4vw, 1.5rem);--content-max: 40rem;--card-max: 28rem;--touch-min: 2.75rem;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px);--mobile-nav-height: 3.25rem;--edge-bar-height: calc(var(--touch-min) + 1.25rem + var(--safe-top))}*,*:before,*:after{box-sizing:border-box}html{width:100%;overflow-x:hidden;scroll-behavior:smooth;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--safe-top) + 1rem);scroll-padding-bottom:calc(var(--mobile-nav-height) + var(--safe-bottom) + 1rem)}body{margin:0;min-width:320px;overflow-x:hidden;font-family:var(--font-sans);font-weight:300;line-height:1.7;color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased}#root{width:100%;max-width:100%;overflow-x:hidden;min-height:100vh;min-height:100dvh}img{display:block;max-width:100%;height:auto}a{color:inherit}.invitation{overflow-x:hidden;opacity:0;visibility:hidden}.invitation--visible{opacity:1;visibility:visible;animation:invitation-enter .9s ease forwards}@keyframes invitation-enter{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}[data-reveal]{opacity:0;transform:translateY(clamp(1rem,3vw,2rem));transition:opacity .75s cubic-bezier(.22,1,.36,1),transform .75s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}[data-reveal=fade]{transform:none}[data-reveal][data-revealed]{opacity:1;transform:translateY(0);will-change:auto}[data-reveal-delay="1"]{transition-delay:.08s}[data-reveal-delay="2"]{transition-delay:.16s}[data-reveal-delay="3"]{transition-delay:.24s}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}.invitation--visible{animation:none}[data-reveal]{opacity:1;transform:none;transition:none}}.section{position:relative;padding:var(--section-padding-y) var(--section-padding-x);padding-left:calc(var(--section-padding-x) + var(--safe-left));padding-right:calc(var(--section-padding-x) + var(--safe-right));text-align:center;background-color:#f4eadf;background-image:linear-gradient(#f1e7dac7,#f1e7dac7),url(/assets/textured-white-paper-DnEANzn-.webp);background-position:center;background-size:cover}.section+.section:before,.footer:before{position:absolute;top:0;left:50%;z-index:4;content:"囍";padding:0 .45rem;color:var(--color-bg);font-family:var(--font-serif);font-size:1.5rem;line-height:1;transform:translate(-50%,-50%)}.section+.section:after,.footer:after{position:absolute;top:0;right:0;left:0;z-index:3;height:2px;content:"";background-image:linear-gradient(var(--color-bg),var(--color-bg)),linear-gradient(var(--color-bg),var(--color-bg));background-position:left center,right center;background-repeat:no-repeat;background-size:calc(50% - 2.25rem) 100%,calc(50% - 2.25rem) 100%}.section__label{margin:0 0 .5rem;font-family:var(--font-display);font-size:clamp(.75rem,2.5vw,.875rem);letter-spacing:clamp(.12em,1.5vw,.25em);text-transform:uppercase;color:var(--color-accent)}.section__title{margin:0 0 clamp(1.5rem,5vw,2.5rem);font-family:var(--font-serif);font-size:clamp(1.5rem,5vw,2.5rem);font-weight:400;letter-spacing:clamp(.04em,1vw,.08em)}.photostrip-section{position:relative;overflow:visible}.photostrip-grid{padding-top:.75rem}.photostrip-card{transform-origin:center top}.photostrip-card:nth-child(1){transition-delay:.08s}.photostrip-card:nth-child(2){transition-delay:.18s}.photostrip-card:focus-visible{outline-offset:.25rem}.photostrip-photo{isolation:isolate;aspect-ratio:auto;box-shadow:0 .75rem 1.25rem #3a29281f}.photostrip-photo__image{position:relative;z-index:0}.photostrip-flip{position:relative;perspective:1000px}.photostrip-photo--alternate .photostrip-photo__image{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.photostrip-flip .photostrip-photo{backface-visibility:hidden;transition:opacity .45s ease,transform .45s ease}.photostrip-photo--alternate{opacity:0;transform:rotateY(180deg)}.photostrip-flip-hint{position:absolute;bottom:.5rem;right:.5rem;z-index:2;display:none;width:1.75rem;height:1.75rem;place-items:center;border:1px solid rgba(255,255,255,.75);border-radius:50%;background:#3a2928b8;color:#fff;font-size:1.15rem;line-height:1;transition:transform .45s ease}.photostrip-card.is-flipped .photostrip-photo:first-child{opacity:0;transform:rotateY(-180deg)}.photostrip-card.is-flipped .photostrip-photo--alternate{opacity:1;transform:rotateY(0)}.photostrip-card.is-flipped .photostrip-flip-hint{transform:rotate(180deg)}@media (hover: hover) and (pointer: fine){.photostrip-card:hover .photostrip-photo:first-child{opacity:0;transform:rotateY(-180deg)}.photostrip-card:hover .photostrip-photo--alternate{opacity:1;transform:rotateY(0)}}@media (max-width: 47.99rem),(hover: none),(pointer: coarse){.photostrip-flip-hint{display:grid}}@media (prefers-reduced-motion: reduce){.photostrip-card,.photostrip-card img,.photostrip-photo,.photostrip-photo--alternate{transition:none}.photostrip-card{opacity:1;transition:none}}.hero{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(1rem,3vw,1.5rem);min-height:100svh;min-height:100dvh;padding-top:calc(var(--section-padding-y) + var(--safe-top));padding-bottom:calc(var(--section-padding-y) + var(--safe-bottom));padding-left:calc(var(--section-padding-x) + var(--safe-left));padding-right:calc(var(--section-padding-x) + var(--safe-right));overflow:hidden;color:var(--color-text);background-color:#f4eadf;background-image:linear-gradient(#f1e7dac7,#f1e7dac7),url(/assets/textured-white-paper-DnEANzn-.webp);background-position:center;background-size:cover}.hero:before{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:"";pointer-events:none;background:transparent}.hero__rsvp-link{z-index:3;display:inline-flex;align-items:center;justify-content:center;min-height:var(--touch-min);padding:.55rem .9rem;border:1px solid var(--color-cream);border-radius:999px;background:var(--color-cream);color:var(--color-bg);font-size:clamp(.95rem,3.5vw,1.1rem);font-weight:700;letter-spacing:.08em;text-decoration:none;transition:background .2s ease,color .2s ease,transform .15s ease;-webkit-tap-highlight-color:transparent}.hero__header{position:absolute;top:0;left:0;z-index:3;display:flex;align-items:center;justify-content:flex-end;width:100%;min-height:var(--edge-bar-height);padding:var(--safe-top) calc(1rem + var(--safe-right)) 0 calc(1rem + var(--safe-left));background:var(--color-bg)}.hero__rsvp-link:hover{background:transparent;color:var(--color-cream)}.hero__rsvp-link:active{transform:scale(.97)}.hero__image{position:relative;z-index:2;display:block;margin:1.25rem auto 1.5rem;width:100%;max-width:min(100%,24rem);height:auto;aspect-ratio:2 / 3;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center;border:.45rem solid #6f1d2b}@media (max-width: 767px){.hero__image{width:70%}}.hero__content{position:relative;z-index:2;margin:0 auto;padding-top:clamp(1.5rem,5vw,3rem);padding-bottom:clamp(.75rem,2vw,1.25rem);width:100%;max-width:var(--content-max)}.hero__welcome{margin:0 0 .5rem;font-family:var(--font-display);font-size:clamp(1rem,4vw,1.35rem);letter-spacing:.12em;text-transform:uppercase;color:#6f1d2b}.hero__title{margin:0;font-family:var(--font-serif);font-size:clamp(1.5rem,5vw,2.5rem);font-weight:400;letter-spacing:.12em;color:#6f1d2b}.hero__names{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem 1rem;margin:0 0 1rem;font-family:var(--font-serif);font-size:clamp(1.8rem,7.5vw,3.45rem);font-weight:300;line-height:1.25;letter-spacing:clamp(.03em,1vw,.06em);color:var(--color-text)}.hero__person{display:inline-flex;flex-direction:column;align-items:center;gap:.05rem}.hero__person small{font-family:var(--font-display);font-size:.4em;font-weight:400;letter-spacing:.12em;color:var(--color-text)}.hero__and{font-family:var(--font-serif);font-size:.6em;font-style:italic;color:var(--color-text)}.hero__date{margin:0;font-size:clamp(.95rem,3.5vw,1.05rem);letter-spacing:clamp(.06em,1vw,.15em);color:var(--color-text)}.hero__music{display:flex;flex-direction:column;justify-content:center;min-height:4rem;margin-top:.25rem}.hero__music-copy{display:flex;flex-direction:column;gap:.2rem;margin:1.75rem 0 0;color:var(--color-text);font-size:var(--font-body-size);line-height:1.6;letter-spacing:.12em}.story{background:#fff}.story__content{display:flex;flex-direction:column;gap:.2rem;max-width:var(--content-max);margin:0 auto 2rem;font-size:var(--font-body-size);line-height:calc(1.6em + .2rem);letter-spacing:.12em;text-align:center}.story__content p{margin:0;white-space:pre-line}.story__content--spaced{margin-top:2rem}.details__card{width:100%;max-width:var(--card-max);margin:0 auto;padding:clamp(1.25rem,4vw,2rem);text-align:left;background:#fff;border:1px solid var(--color-accent-soft)}.details__row{display:grid;grid-template-columns:1fr;gap:.25rem;padding:.85rem 0;border-bottom:1px solid var(--color-accent-soft);font-size:var(--font-body-size);word-break:break-word}.details__row:last-of-type{border-bottom:none}.details__label{font-size:.85rem;letter-spacing:.08em;color:var(--color-accent)}.details__map-link{display:flex;align-items:center;justify-content:center;width:100%;min-height:var(--touch-min);margin-top:1.25rem;padding:.75rem 1.25rem;background:var(--color-bg-dark);color:var(--color-text-light);font-size:clamp(.85rem,3vw,.9rem);letter-spacing:.08em;text-decoration:none;transition:opacity .25s ease,transform .15s ease;-webkit-tap-highlight-color:transparent}.details__map-link:hover{opacity:.85}.details__map-link:active{transform:scale(.98)}.details__calendar-wrap{width:100%;max-width:var(--card-max);margin:2rem auto 0}.wedding-calendar-link{display:block;color:var(--color-bg);text-decoration:none;-webkit-tap-highlight-color:transparent}.wedding-calendar-link .wedding-calendar{transition:transform .25s ease,filter .25s ease}.wedding-calendar-link:hover .wedding-calendar{filter:drop-shadow(0 .4rem .5rem rgba(58,41,40,.16));transform:translateY(-.2rem)}.wedding-calendar-link:focus-visible{outline:2px solid var(--color-bg);outline-offset:.45rem}.wedding-calendar-link:active .wedding-calendar{transform:scale(.99)}.wedding-calendar-link__label{display:inline-flex;align-items:center;min-height:var(--touch-min);margin-top:.75rem;padding:.35rem 1rem;border-bottom:1px solid currentColor;font-size:clamp(.85rem,3vw,.95rem);letter-spacing:.08em}.wedding-schedule,.wedding-venue{width:100%;max-width:var(--content-max);margin:2rem auto 0;padding:0}.wedding-venue p{margin:0 0 .65rem;font-size:clamp(.95rem,3.5vw,1.05rem);line-height:1.7}.wedding-schedule__date{margin:0 0 1.5rem;color:var(--color-bg);font-size:clamp(1.05rem,3.5vw,1.2rem);font-weight:700}.wedding-schedule__title{margin:0 0 1.75rem;color:var(--color-text);font-family:var(--font-serif);font-size:clamp(1.25rem,4.5vw,1.6rem);font-weight:400;letter-spacing:.08em}.wedding-schedule__title:before,.wedding-schedule__title:after{content:"—";margin:0 .45rem;color:var(--color-accent)}.wedding-schedule__timeline{display:grid;max-width:27rem;margin:0 auto 2rem;padding:0;list-style:none}.wedding-schedule__timeline li{position:relative;display:flex;align-items:center;min-height:8rem}.wedding-schedule__timeline li:nth-child(odd){justify-content:flex-start;padding-right:calc(50% + 2.25rem);text-align:right}.wedding-schedule__timeline li:nth-child(2n){justify-content:flex-end;padding-left:calc(50% + 2.25rem);text-align:left}.wedding-schedule__timeline li:before{position:absolute;top:50%;left:50%;z-index:2;width:.65rem;height:.65rem;border:2px solid #f4eadf;border-radius:50%;content:"";background:var(--color-bg);box-shadow:0 0 0 1px var(--color-bg);transform:translate(-50%,-50%);animation:timeline-dot-pulse 1.8s ease-in-out infinite}.wedding-schedule__timeline li:nth-child(2):before{animation-delay:.35s}.wedding-schedule__timeline li:nth-child(3):before{animation-delay:.7s}@keyframes timeline-dot-pulse{0%,to{opacity:.75;box-shadow:0 0 0 1px var(--color-bg);transform:translate(-50%,-50%) scale(.9)}50%{opacity:1;box-shadow:0 0 0 1px var(--color-bg),0 0 .75rem #6f1d2ba6;transform:translate(-50%,-50%) scale(1.18)}}.wedding-schedule__timeline li:not(:last-child):after{position:absolute;top:50%;width:clamp(2.5rem,12vw,4rem);height:100%;content:""}.wedding-schedule__timeline li:nth-child(odd):after{left:50%;border:2px solid var(--color-accent);border-left:0;border-radius:0 999px 999px 0}.wedding-schedule__timeline li:nth-child(2n):after{right:50%;border:2px solid var(--color-accent);border-right:0;border-radius:999px 0 0 999px}.wedding-schedule__event{display:flex;flex-direction:column;align-items:center;width:100%;line-height:1.4;text-align:center}.wedding-schedule__timeline time{width:100%;color:var(--color-bg);font-family:var(--font-serif);font-size:1.15rem;font-weight:700;text-align:center}.wedding-schedule__timeline strong,.wedding-schedule__timeline span{display:block;width:100%;text-align:center}.wedding-schedule__timeline strong{margin-top:.15rem;font-size:1.05rem;font-weight:500}.wedding-schedule__timeline span{margin-top:.15rem;color:var(--color-accent);font-size:var(--font-body-size)}@media (prefers-reduced-motion: reduce){.wedding-schedule__timeline li:before{animation:none}}.wedding-schedule__photo{display:grid;place-items:center;min-height:12rem;background:transparent;color:var(--color-accent);font-size:.9rem;letter-spacing:.12em}.wedding-venue{text-align:center}.wedding-venue__pin{width:clamp(2.5rem,10vw,3.5rem);margin:0 auto .75rem}.wedding-venue p{margin-bottom:1rem;font-size:clamp(1.15rem,4vw,1.4rem);line-height:1.8}.wedding-venue__info{display:grid;gap:.15rem;width:-moz-max-content;width:max-content;max-width:100%;margin:0 auto 1.75rem}.wedding-venue .wedding-venue__info p{width:100%;margin:0}.wedding-venue__name{color:var(--color-bg);white-space:nowrap}.wedding-venue .wedding-venue__address{font-size:var(--font-body-size);text-align:justify;-moz-text-align-last:justify;text-align-last:justify}.wedding-venue a{display:inline-flex;align-items:center;justify-content:center;min-height:var(--touch-min);padding:.65rem 1rem;background:var(--color-bg);color:var(--color-text-light);text-decoration:none}.wedding-venue__transport-button{min-height:var(--touch-min);margin:0 0 1.5rem;padding:.65rem 1.25rem;border:1px solid var(--color-bg);background:transparent;color:var(--color-bg);font:inherit;letter-spacing:.08em;cursor:pointer;transition:background .2s ease,color .2s ease}.wedding-venue__transport-button:hover,.wedding-venue__transport-button:focus-visible{background:var(--color-bg);color:var(--color-text-light)}.transport-dialog__backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:1rem;background:#2012129e;animation:transport-backdrop-in .22s ease-out both}.transport-dialog{position:relative;width:min(100%,30rem);max-height:calc(100dvh - 2rem);overflow-y:auto;padding:clamp(1.5rem,6vw,2.5rem);background:var(--color-cream);text-align:left;box-shadow:0 1rem 3rem #20121238;animation-duration:.32s;animation-timing-function:cubic-bezier(.22,1,.36,1);animation-fill-mode:both;animation-name:transport-dialog-in}@keyframes transport-backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes transport-dialog-in{0%{opacity:0;transform:translateY(.75rem)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.transport-dialog__backdrop,.transport-dialog{animation:none}}.transport-dialog__close{position:absolute;top:.75rem;right:.75rem;width:var(--touch-min);height:var(--touch-min);border:0;background:transparent;color:var(--color-bg);font-size:1.75rem;line-height:1;cursor:pointer}.transport-dialog__eyebrow{margin:0 0 .25rem;color:var(--color-accent);font-family:var(--font-display);font-size:.8rem;letter-spacing:.16em;text-transform:uppercase}.transport-dialog h3{margin:0 0 1.25rem;color:var(--color-bg);font-family:var(--font-serif);font-size:1.6rem;font-weight:400}.transport-dialog__list{display:grid;gap:1rem}.transport-dialog__list section{padding-top:.85rem;border-top:1px solid var(--color-accent-soft)}.transport-dialog__list h4{margin:0 0 .2rem;color:var(--color-bg);font-size:1rem;font-weight:500}.transport-dialog__list p{margin:0;font-size:var(--font-body-size);line-height:1.65}.transport-dialog__parking-note{display:flex;align-items:flex-start;gap:.35rem;margin-top:.5rem!important}.transport-dialog__parking-note .material-symbols-outlined{flex:0 0 auto;margin-top:.1em;color:var(--color-bg);font-size:1.25em;line-height:1}.transport-dialog__map-link{display:flex;align-items:center;justify-content:center;min-height:var(--touch-min);margin-top:1.5rem;padding:.65rem 1rem;background:var(--color-bg);color:var(--color-text-light);text-decoration:none}.wedding-venue__map{width:100%;aspect-ratio:16 / 9;overflow:hidden;border:1px solid var(--color-accent-soft)}.wedding-venue__map iframe{display:block;width:100%;height:100%;border:0}.wedding-calendar{display:block;pointer-events:none;width:100%;padding:0;border:0;border-radius:0;background:transparent}.rsvp,.rsvp .section__label,.rsvp .section__title{color:var(--color-text)}.rsvp__text{max-width:var(--card-max);margin:0 auto clamp(1.25rem,4vw,2rem);color:var(--color-bg-dark);font-size:var(--font-body-size);line-height:calc(1.6em + .2rem);letter-spacing:.12em}.rsvp__deadline{text-decoration:underline;text-decoration-color:currentColor;text-decoration-thickness:2px;text-underline-offset:.2em}.rsvp__form{width:100%;max-width:40rem;margin:0 auto clamp(1.5rem,4vw,2rem);overflow:hidden;border:1px solid rgba(255,255,255,.12);border-radius:4px;background:var(--color-cream);animation:rsvp-form-glow 2.8s ease-in-out infinite}@keyframes rsvp-form-glow{0%,to{box-shadow:0 0 0 1px #bd965f1f,0 0 .75rem #bd965f29}50%{box-shadow:0 0 0 2px #bd965f4d,0 0 1.5rem #bd965f52}}@media (prefers-reduced-motion: reduce){.rsvp__form{animation:none;box-shadow:0 0 1rem #bd965f33}}.rsvp__iframe{display:block;width:100%;height:clamp(28rem,75vh,42rem);border:0;background:var(--color-cream)}.rsvp__form-fallback{display:flex;align-items:center;justify-content:center;min-height:var(--touch-min);padding:.75rem 1rem;border-top:1px solid var(--color-accent-soft);color:var(--color-bg-dark);font-size:.875rem;letter-spacing:.06em;text-decoration:none;background:#f5e9df}.rsvp__form-fallback:hover{background:var(--color-accent-soft)}.rsvp__form-placeholder{max-width:var(--card-max);margin:0 auto 1.5rem;padding:1rem;border:1px dashed rgba(255,255,255,.35);font-size:.9rem;opacity:.85}.rsvp__form-placeholder code{font-size:.85em;word-break:break-all}.rsvp__contacts{display:flex;flex-direction:column;gap:.75rem;width:100%;max-width:var(--card-max);margin:0 auto}.rsvp__contact-btn{display:flex;align-items:center;justify-content:center;min-height:var(--touch-min);padding:.75rem 1.25rem;border:1px solid rgba(255,255,255,.25);border-radius:2px;color:var(--color-text-light);font-size:clamp(.9rem,3.5vw,1rem);letter-spacing:.05em;text-decoration:none;transition:background .25s ease,transform .15s ease;-webkit-tap-highlight-color:transparent}.rsvp__contact-btn:hover{background:#ffffff1a}.rsvp__contact-btn:active{transform:scale(.98);background:#ffffff26}.footer{position:relative;padding:2rem var(--section-padding-x) calc(2.5rem + var(--safe-bottom));padding-left:calc(var(--section-padding-x) + var(--safe-left));padding-right:calc(var(--section-padding-x) + var(--safe-right));text-align:center;background-color:#f4eadf;background-image:linear-gradient(#f1e7dac7,#f1e7dac7),url(/assets/textured-white-paper-DnEANzn-.webp);background-position:center;background-size:cover;color:var(--color-text);font-family:var(--font-serif);font-size:clamp(1rem,3.5vw,1.1rem);letter-spacing:.08em}.footer__image{width:100%;max-width:var(--content-max);margin:0 auto 1.5rem;-o-object-fit:contain;object-fit:contain}.footer__copy{width:-moz-fit-content;width:fit-content;margin:0 auto}.footer__names{margin:0}.footer__note{margin:.25rem 0 0;font-family:var(--font-sans);font-size:var(--font-body-size);letter-spacing:.1em;opacity:.7}.footer__bar{position:relative;width:100vw;height:var(--edge-bar-height);margin:2rem calc(50% - 50vw) calc(-2.5rem - var(--safe-bottom));background:var(--color-bg)}.mobile-nav{display:none}@media (max-width: 767px){.invitation--visible{padding-bottom:calc(var(--mobile-nav-height) + var(--safe-bottom))}.footer{padding-bottom:calc(2.5rem + var(--mobile-nav-height) + var(--safe-bottom))}.footer__bar{display:none}.mobile-nav{position:fixed;bottom:0;left:0;right:0;z-index:50;display:grid;grid-template-columns:repeat(3,1fr);height:calc(var(--mobile-nav-height) + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:var(--color-bg)}.mobile-nav__link{display:flex;align-items:center;justify-content:center;min-height:var(--touch-min);color:var(--color-text-light);font-size:.875rem;letter-spacing:.12em;text-decoration:none;transition:color .2s ease,background .2s ease;-webkit-tap-highlight-color:transparent}.mobile-nav__link:active{background:#fff8f029;color:var(--color-cream)}}@media (min-width: 480px){.details__row{grid-template-columns:4rem 1fr;gap:.75rem}.rsvp__contacts{flex-direction:row;flex-wrap:wrap;justify-content:center;gap:1rem}.rsvp__contact-btn{flex:1 1 auto;min-width:10rem;max-width:14rem}}@media (min-width: 768px){.story__content{text-align:center}.details__map-link{display:inline-flex;width:auto}.hero__names{gap:.75rem 1.25rem}}@media (max-height: 600px) and (max-width: 767px){.hero{min-height:auto;padding-top:calc(1.5rem + var(--safe-top));padding-bottom:calc(1.5rem + var(--safe-bottom))}.hero__names{font-size:clamp(1.75rem,8vw,2.5rem);margin-bottom:.75rem}}@media (max-width: 359px){.hero__names{flex-direction:column;gap:.15rem}.hero__and{font-size:.75em}}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-sky-400:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(56 189 248 / var(--tw-ring-opacity, 1))}@media (min-width: 640px){.sm\:max-w-\[10rem\]{max-width:10rem}}@media (min-width: 768px){.md\:gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.md\:gap-y-12{row-gap:3rem}}
