@font-face{font-family:Playfair Display;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/playfair-display-latin-400-normal-CFtfchNt.woff2)format("woff2"),url(/assets/playfair-display-latin-400-normal-DHYHbkg3.woff)format("woff")}@font-face{font-family:Playfair Display;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/playfair-display-latin-500-normal-DIxvyhka.woff2)format("woff2"),url(/assets/playfair-display-latin-500-normal-BScSeVwi.woff)format("woff")}@font-face{font-family:Playfair Display;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/playfair-display-latin-400-italic-LeeEXsx5.woff2)format("woff2"),url(/assets/playfair-display-latin-400-italic-hIeePEuE.woff)format("woff")}@font-face{font-family:Playfair Display;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/playfair-display-vietnamese-400-normal-BV2APVTb.woff2)format("woff2"),url(/assets/playfair-display-vietnamese-400-normal-BbvUAu4N.woff)format("woff")}@font-face{font-family:Playfair Display;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/playfair-display-vietnamese-500-normal-Jyt54flB.woff2)format("woff2"),url(/assets/playfair-display-vietnamese-500-normal-_Z41d-72.woff)format("woff")}@font-face{font-family:Playfair Display;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/playfair-display-vietnamese-400-italic-CD15TOr5.woff2)format("woff2"),url(/assets/playfair-display-vietnamese-400-italic-Cpv4sfwY.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/be-vietnam-pro-latin-400-normal-PpnXBOrz.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-400-normal-bXgqVju9.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/be-vietnam-pro-latin-500-normal-B6LVzGNe.woff2)format("woff2"),url(/assets/be-vietnam-pro-latin-500-normal-BJkVuMHw.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/be-vietnam-pro-vietnamese-400-normal-CRcqvyg1.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-400-normal-BuGn0gnm.woff)format("woff")}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/be-vietnam-pro-vietnamese-500-normal-DREgrEoJ.woff2)format("woff2"),url(/assets/be-vietnam-pro-vietnamese-500-normal-CfdwVo8-.woff)format("woff")}@font-face{font-family:Dancing Script;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/dancing-script-latin-400-normal--YrtvvVF.woff2)format("woff2"),url(/assets/dancing-script-latin-400-normal-BY5FxJb0.woff)format("woff")}@font-face{font-family:Dancing Script;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/dancing-script-vietnamese-400-normal-lz8MlVep.woff2)format("woff2"),url(/assets/dancing-script-vietnamese-400-normal-D2srOv8f.woff)format("woff")}:root{--paper:#fdfbf8;--paper-warm:#fbf3ef;--paper-blush:#f8e9e7;--paper-sage:#f1f4ee;--paper-deep:#efe4dc;--ink:#3a332e;--ink-2:#5c534b;--ink-3:#7b7168;--green:#3c5a46;--green-2:#577a5f;--sage:#a8bba9;--blush:#d79aa5;--blush-2:#c17d8c;--blush-soft:#f6e2e3;--gold:#c2a36b;--line:#3a332e29;--line-soft:#3a332e17;--line-blush:#d79aa561;--shadow-sm:0 2px 12px #60443a12;--shadow-md:0 16px 46px #60443a1a;--shadow-lg:0 34px 96px #60443a2b;--shadow-blush:0 18px 50px #c17d8c29;--serif:"Playfair Display", "Times New Roman", serif;--sans:"Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", sans-serif;--script:"Dancing Script", "Cormorant Garamond", cursive;--shell:1180px;--shell-narrow:760px;--gap:clamp(1.1rem, 3vw, 2rem);--section-y:clamp(4.5rem, 11vw, 9.5rem);--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-soft:cubic-bezier(.4, 0, .2, 1);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{background-color:var(--paper);color:var(--ink);font-family:var(--sans);letter-spacing:.004em;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-image:radial-gradient(60rem 40rem at 8% -6%,#d79aa521,#0000 60%),radial-gradient(52rem 38rem at 104% 4%,#a8bba924,#0000 62%);background-attachment:scroll;margin:0;font-size:clamp(1rem,.96rem + .26vw,1.09rem);font-weight:400;line-height:1.72;overflow-x:hidden}body.is-locked{height:100dvh;overflow:hidden}img,picture,svg,canvas{max-width:100%;display:block}img{height:auto}h1,h2,h3,p,figure,ol,ul{margin:0}p{text-wrap:pretty}button,input,textarea,select{font:inherit;color:inherit}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--green-2);outline-offset:3px;border-radius:2px}::selection{background:var(--blush-soft);color:var(--ink)}.shell{width:min(100% - 2 * var(--gap), var(--shell));margin-inline:auto}.shell--narrow{width:min(100% - 2 * var(--gap), var(--shell-narrow))}.section{padding-block:var(--section-y);position:relative}section[id]{scroll-margin-top:74px}.center{text-align:center}.eyebrow{font-family:var(--sans);letter-spacing:.36em;text-transform:uppercase;color:var(--green);align-items:center;gap:.7em;margin-bottom:.9rem;font-size:.73rem;font-weight:500;display:inline-flex}.cd__num,.tl__time,.events__date,.env__date,.footer__date,.hero__dateline strong,.card__hour,.card__day,.card__lunar{font-family:var(--sans);font-feature-settings:"lnum" 1, "tnum" 1}.center .eyebrow:before,.center .eyebrow:after{content:"";background:var(--line-blush);width:clamp(1.4rem,4vw,2.6rem);height:1px}.h2{font-family:var(--serif);text-wrap:balance;letter-spacing:0;color:var(--ink);margin-bottom:clamp(1.4rem,3vw,2.4rem);font-size:clamp(1.85rem,1.15rem + 2.8vw,3.05rem);font-weight:500;line-height:1.2}.h2 em{color:var(--blush-2);font-style:italic}.prose p{max-width:60ch;color:var(--ink-2)}.ornament{pointer-events:none;-webkit-user-select:none;user-select:none;z-index:0;opacity:.9;position:absolute}.section>.shell,.section>.center{z-index:1;position:relative}.lotus-art{object-fit:contain;width:100%;height:100%;display:block}[data-reveal]{will-change:transform, opacity}html.no-motion [data-reveal],html.no-motion [data-split]{opacity:1!important;clip-path:none!important;transform:none!important}.split-line{display:block;overflow:hidden}.split-word{white-space:pre;display:inline-block}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.btn{--btn-bg:transparent;--btn-fg:var(--ink);--btn-bd:var(--line);--btn-fill:var(--green);--btn-fill-fg:var(--paper);border:1px solid var(--btn-bd);background-color:var(--btn-bg);background-image:linear-gradient(var(--btn-fill), var(--btn-fill));color:var(--btn-fg);font-family:var(--sans);letter-spacing:.2em;text-transform:uppercase;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:color .4s var(--ease-soft), border-color .4s var(--ease-soft), background-size .5s var(--ease-out), transform .4s var(--ease-out);background-position:50% 100%;background-repeat:no-repeat;background-size:100% 0%;border-radius:999px;justify-content:center;align-items:center;gap:.5rem;padding:.92rem 2.1rem;font-size:.74rem;font-weight:500;display:inline-flex;position:relative;overflow:hidden}@media (hover:hover) and (pointer:fine){.btn:hover{color:var(--btn-fill-fg);border-color:var(--btn-fill);background-size:100% 100%}}.btn:focus-visible{color:var(--btn-fill-fg);border-color:var(--btn-fill);background-size:100% 100%}.btn:active{border-color:var(--btn-fill);transform:scale(.97)}.btn--sm{padding:.62rem 1.3rem;font-size:.66rem}.btn--solid{--btn-bg:var(--green);--btn-fg:var(--paper);--btn-bd:var(--green);--btn-fill:var(--ink);--btn-fill-fg:var(--paper)}.btn--ghost{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background-color:#fcfaf7b8}.btn--line{background-color:#0000}.btnrow{flex-wrap:wrap;justify-content:center;gap:.8rem;margin-top:clamp(1.6rem,4vw,2.6rem);display:flex}.topbar{inset-inline:0;z-index:90;transition:background .45s var(--ease-soft), box-shadow .45s var(--ease-soft), transform .6s var(--ease-out);padding:.7rem clamp(.9rem,3vw,2rem);padding-top:max(.7rem, env(safe-area-inset-top));background:#fcfaf700;justify-content:space-between;align-items:center;gap:1rem;display:flex;position:fixed;top:0;transform:translateY(-110%)}.topbar--on{-webkit-backdrop-filter:blur(14px)saturate(1.1);backdrop-filter:blur(14px)saturate(1.1);box-shadow:0 1px 0 var(--line-soft);background:#fcfaf7db;transform:translateY(0)}.topbar__mark{font-family:var(--serif);letter-spacing:.14em;color:var(--green);font-size:1.1rem}.topbar__nav{letter-spacing:.18em;text-transform:uppercase;gap:clamp(1rem,2.4vw,2.2rem);font-size:.72rem;display:none}.topbar__nav a{color:var(--ink-2);padding-block:.2rem;transition:color .3s;position:relative}.topbar__nav a:after{content:"";background:var(--green-2);transform-origin:100%;width:100%;height:1px;transition:transform .4s var(--ease-out);position:absolute;bottom:0;left:0;transform:scaleX(0)}.topbar__nav a:hover{color:var(--green)}.topbar__nav a:hover:after{transform-origin:0;transform:scaleX(1)}.topbar__actions{align-items:center;gap:.55rem;display:flex}@media (min-width:860px){.topbar__nav{display:flex}}.iconbtn{border:1px solid var(--line);cursor:pointer;-webkit-tap-highlight-color:transparent;background:#fcfaf7b8;border-radius:50%;place-items:center;width:38px;height:38px;padding:0;transition:border-color .3s,background .3s;display:grid}.iconbtn:hover{border-color:var(--green-2)}.eq{align-items:flex-end;gap:2px;height:13px;display:flex}.eq i{background:var(--green);border-radius:1px;width:2px;height:4px;transition:height .3s}.iconbtn[aria-pressed=true] .eq i{animation:eqbounce 1s var(--ease-soft) infinite}.iconbtn[aria-pressed=true] .eq i:nth-child(2){animation-delay:.18s}.iconbtn[aria-pressed=true] .eq i:nth-child(3){animation-delay:.36s}.iconbtn[aria-pressed=true] .eq i:nth-child(4){animation-delay:.54s}@keyframes eqbounce{0%,to{height:4px}50%{height:13px}}.form{gap:1.15rem;margin-top:clamp(1.6rem,4vw,2.4rem);display:grid}.field{gap:.45rem;display:grid}.field label,.field__label{letter-spacing:.22em;text-transform:uppercase;color:var(--ink-2);font-size:.7rem}.field input[type=text],.field input[type=number],.field textarea{background:var(--paper);border:1px solid var(--line);border-radius:2px;width:100%;padding:.85rem 1rem;font-weight:400;transition:border-color .3s,box-shadow .3s}.field input:focus,.field textarea:focus{border-color:var(--green-2);outline:none;box-shadow:0 0 0 3px #5a7a5f1f}.field textarea{resize:vertical;min-height:92px}.choices{flex-wrap:wrap;gap:.5rem;display:flex}.choice{cursor:pointer;position:relative}.choice input{opacity:0;cursor:pointer;position:absolute;inset:0}.choice span{border:1px solid var(--line);border-radius:999px;padding:.6rem 1.15rem;font-size:.82rem;transition:background .3s,border-color .3s,color .3s;display:inline-block}.choice input:checked+span{background:var(--green);border-color:var(--green);color:var(--paper)}.choice input:focus-visible+span{outline:2px solid var(--green-2);outline-offset:2px}.form__status{min-height:1.4rem;color:var(--green);font-size:.82rem}.form__status--err{color:#a4454f}.field--hidden{display:none}.intro{z-index:120;padding:var(--gap);background:radial-gradient(60rem 42rem at 50% -8%,#fefaf8 0%,#0000 62%),linear-gradient(168deg,#fdfbf8 0%,#fbf0ec 46%,#f4e6e5 100%);place-items:center;display:grid;position:fixed;inset:0}.intro--gone{pointer-events:none}.intro__stage{perspective:1500px;justify-items:center;gap:clamp(1.5rem,5vw,2.4rem);display:grid}.env{aspect-ratio:3/2;width:min(86vw,450px);transform-style:preserve-3d;position:relative}.env:before{content:"";z-index:0;background:linear-gradient(158deg,#fffdfb 0%,#fbf4f1 100%);border:1px solid #3a332e17;border-radius:7px;position:absolute;inset:0;box-shadow:0 24px 44px #845e5633}.env__card{z-index:-1;background:var(--paper);border:1px solid var(--line-soft);border-radius:4px;width:90%;height:86%;position:absolute;top:6%;left:5%;overflow:hidden;box-shadow:0 10px 26px #60443a24}.env__card-in{text-align:center;align-content:start;justify-items:center;gap:.3rem;height:100%;padding:clamp(.9rem,3.6vw,1.6rem) 1rem 0;display:grid;position:relative}.env__wreath{opacity:.42;z-index:-1;width:56%;position:absolute;top:3%;left:50%;translate:-50%}.env__eyebrow{letter-spacing:.4em;text-transform:uppercase;color:var(--green-2);font-size:.6rem;font-weight:500}.env__names{font-family:var(--serif);letter-spacing:.02em;color:var(--ink);font-size:clamp(1.25rem,4.6vw,1.75rem);font-weight:500;line-height:1.3}.env__names em{font-family:var(--script);color:var(--blush-2);font-style:normal}.env__date{letter-spacing:.34em;color:var(--ink-2);font-size:.72rem}.env__pocket{z-index:3;background:linear-gradient(176deg,#fbf1ed 0%,#f6e8e4 100%);border:1px solid #3a332e14;border-top-color:#c17d8c38;border-radius:0 0 7px 7px;position:absolute;inset:38% 0 0;box-shadow:inset 0 1px #fffc}.env__front{z-index:4;text-align:center;position:absolute;inset:auto 8% 12%}.env__to{letter-spacing:.34em;text-transform:uppercase;color:var(--ink-3);font-size:.6rem}.env__guest{font-family:var(--script);color:var(--green);margin-top:.1rem;font-size:clamp(1.5rem,5.6vw,2.1rem);line-height:1.2}.env__flap{z-index:5;transform-origin:top;clip-path:polygon(0 0,100% 0,50% 100%);filter:drop-shadow(0 4px 8px #845e5642);background:linear-gradient(176deg,#f6e4de 0%,#eed6cf 58%,#e4c9c3 100%);width:100%;height:56%;position:absolute;top:0;left:0}.seal{z-index:6;aspect-ratio:1;cursor:pointer;-webkit-tap-highlight-color:transparent;width:clamp(68px,17vw,86px);transition:transform .4s var(--ease-out), box-shadow .4s var(--ease-soft);background:radial-gradient(circle at 34% 30%,#e8aeb7 0%,#cf8b99 58%,#b9707f 100%);border:0;border-radius:50%;place-items:center;padding:0;display:grid;position:absolute;top:48%;left:50%;translate:-50% -50%;box-shadow:0 8px 18px #9a566457,inset 0 2px 6px #ffffff73}.seal:hover,.seal:focus-visible{transform:scale(1.06);box-shadow:0 12px 26px #9a56646b,inset 0 2px 6px #ffffff73}.seal__art{object-fit:contain;mix-blend-mode:multiply;opacity:.92;width:86%;height:86%}.seal__fallback{font-family:var(--serif);letter-spacing:.08em;color:#fffcfaeb;font-size:1.1rem;position:absolute}.seal__art+.seal__fallback{opacity:0}.intro__hint{letter-spacing:.1em;color:var(--ink-2);text-align:center;animation:hintPulse 3.2s var(--ease-soft) infinite;gap:.15rem;font-size:.72rem;display:grid}.intro__hint-or{color:var(--ink-3);font-size:.66rem}@keyframes hintPulse{0%,to{opacity:.55;transform:translateY(0)}50%{opacity:1;transform:translateY(3px)}}.lightbox{z-index:130;opacity:0;visibility:hidden;transition:opacity .4s var(--ease-soft), visibility .4s;background:#1c1916eb;grid-template-columns:auto 1fr auto;align-items:center;gap:.4rem;padding:clamp(.8rem,3vw,2rem);display:grid;position:fixed;inset:0}.lightbox--on{opacity:1;visibility:visible}.lightbox__stage{touch-action:pan-y;place-items:center;gap:.8rem;height:100%;margin:0;display:grid}.lightbox__stage img{object-fit:contain;max-width:100%;max-height:82dvh;box-shadow:0 30px 80px #00000073}.lightbox__stage figcaption{letter-spacing:.24em;text-transform:uppercase;color:#fcfaf7b8;font-size:.74rem}.lightbox__nav,.lightbox__close{width:44px;height:44px;color:var(--paper);cursor:pointer;background:0 0;border:1px solid #fcfaf74d;border-radius:50%;place-items:center;font-size:1.5rem;line-height:1;transition:background .3s,border-color .3s;display:grid}.lightbox__nav:hover,.lightbox__close:hover{background:#fcfaf724}.lightbox__close{z-index:2;position:absolute;top:clamp(.8rem,3vw,2rem);right:clamp(.8rem,3vw,2rem)}.hero{isolation:isolate;place-items:center;min-height:100svh;display:grid;position:relative;overflow:hidden}.hero__media{z-index:-2;will-change:transform;position:absolute;inset:-8% 0}.hero__media picture{width:100%;height:100%;display:block}.hero__media img{object-fit:cover;object-position:50% 26%;width:100%;height:100%;transform:scale(1.04)}.hero__veil{background:linear-gradient(#fcfaf78c 0%,#fcfaf71f 28%,#2b272447 72%,#2b272485 100%);position:absolute;inset:0}.petals{z-index:-1;pointer-events:none;position:absolute;inset:0}.hero__inner{padding:7rem var(--gap) 8rem;text-align:center;color:var(--paper);text-shadow:0 2px 26px #201a1459;position:relative}.hero__eyebrow{letter-spacing:.52em;text-transform:uppercase;opacity:.92;margin-bottom:clamp(1rem,3vw,1.8rem);font-size:.7rem;font-weight:400}.hero__names{font-family:var(--serif);letter-spacing:0;gap:.1em;font-size:clamp(2.4rem,1.2rem + 8.2vw,6rem);font-weight:400;line-height:1.04;display:grid}.hero__amp{font-family:var(--script);color:var(--blush-soft);font-size:.42em;display:block}.hero__dateline{letter-spacing:.3em;text-transform:uppercase;gap:.45rem;margin-top:clamp(1.4rem,4vw,2.4rem);font-size:.78rem;display:grid}.hero__dateline strong{letter-spacing:.3em;text-transform:none;font-size:clamp(1.1rem,.9rem + 1.1vw,1.45rem);font-weight:400}.hero__dateline span:last-child{letter-spacing:.16em;text-transform:none;opacity:.86;font-size:.66rem}.scrollcue{bottom:calc(1.4rem + env(safe-area-inset-bottom));color:var(--paper);letter-spacing:.3em;text-transform:uppercase;justify-items:center;gap:.5rem;font-size:.6rem;display:grid;position:absolute;left:50%;translate:-50%}.scrollcue i{width:1px;height:46px;animation:cue 2.2s var(--ease-soft) infinite;transform-origin:top;background:linear-gradient(#fcfaf7e6,#fcfaf700)}@media (max-width:760px){.hero{align-content:end}.hero__inner{padding:5rem var(--gap) 7.5rem}.hero__media img{object-position:50% 24%}.hero__veil{background:linear-gradient(#fcfaf76b 0%,#2b272414 22%,#2b27246b 58%,#2b2724ad 100%)}}@keyframes cue{0%{opacity:0;transform:scaleY(0)}35%{opacity:1}to{opacity:0;transform:scaleY(1)}}.countdown{background:linear-gradient(180deg, var(--paper) 0%, var(--paper-blush) 100%)}.countdown__grid{grid-template-columns:repeat(4,1fr);gap:clamp(.4rem,2vw,1.4rem);margin-top:.6rem;display:grid}.cd{background:var(--paper);border:1px solid var(--line-soft);box-shadow:var(--shadow-sm);gap:.3rem;padding:clamp(.9rem,3vw,1.6rem) .3rem;display:grid;position:relative}.cd__num{letter-spacing:.02em;color:var(--green);font-variant-numeric:tabular-nums;font-size:clamp(1.6rem,.9rem + 3.8vw,2.9rem);font-weight:400;line-height:1.1}.cd__lbl{letter-spacing:.28em;text-transform:uppercase;color:var(--ink-2);font-size:.64rem}.countdown__done{font-family:var(--script);color:var(--blush);margin-top:1.4rem;font-size:1.8rem}.letter{background:var(--paper-warm)}.letter__grid{align-items:center;gap:clamp(1.8rem,5vw,4rem);display:grid}.letter__photo{position:relative;overflow:hidden}.letter__photo:after{content:"";pointer-events:none;border:1px solid #fcfaf773;position:absolute;inset:12px}.letter__photo img{aspect-ratio:4/5;object-fit:cover;width:100%}.letter__text p+p{margin-top:1rem}.letter__text p{color:var(--ink-2);max-width:48ch}.letter__sign{font-family:var(--script);color:var(--green);font-size:1.9rem;margin-top:1.6rem!important}@media (min-width:860px){.letter__grid{grid-template-columns:.9fr 1.1fr}}.pair__grid{align-items:center;gap:clamp(2rem,5vw,3rem);margin-top:1rem;display:grid}.person{text-align:center}.person__photo{border-radius:50% 50% 4px 4px/32% 32% 4px 4px;margin:0 0 1.3rem;position:relative;overflow:hidden}.person__photo img{aspect-ratio:3/4;object-fit:cover;width:100%;transition:transform 1.1s var(--ease-out)}.person:hover .person__photo img{transform:scale(1.045)}.person__role{letter-spacing:.4em;text-transform:uppercase;color:var(--blush);font-size:.66rem}.person__name{font-family:var(--serif);margin-top:.2rem;font-size:clamp(1.45rem,1rem + 1.9vw,2.15rem);font-weight:400;line-height:1.25}.person__meta{letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);margin-top:.25rem;font-size:.78rem}.person__parents{color:var(--ink-2);margin-top:.8rem;font-size:.92rem}.pair__amp{width:96px;height:48px;color:var(--blush);margin-inline:auto}@media (min-width:860px){.pair__grid{grid-template-columns:1fr auto 1fr}}.invite{background:linear-gradient(180deg, var(--paper-blush) 0%, var(--paper) 52%);perspective:1600px}.card3d{width:min(100% - 2 * var(--gap), 640px);transform-style:preserve-3d;margin-inline:auto}.card3d__inner{text-align:center;background:var(--paper);border:1px solid var(--line-soft);box-shadow:var(--shadow-md);background-image:radial-gradient(circle at 12% 8%,#e3a9b21a,#0000 42%),radial-gradient(circle at 88% 92%,#afc0b024,#0000 46%);padding:clamp(2.2rem,7vw,3.8rem) clamp(1.4rem,6vw,3.2rem);position:relative;overflow:hidden}.card3d__inner:after{content:"";border:1px solid var(--line-soft);pointer-events:none;position:absolute;inset:12px}.card__families{gap:1.2rem;margin-bottom:2rem;display:grid}.family__title{letter-spacing:.34em;text-transform:uppercase;color:var(--green-2);margin-bottom:.5rem;font-size:.68rem}.family__name{color:var(--ink);font-size:.96rem}.family__addr{color:var(--ink-3);margin-top:.4rem;font-size:.84rem;line-height:1.55}.family__sep span{background:var(--line);width:1px;height:100%;min-height:48px;margin-inline:auto;display:block}.card__announce{letter-spacing:.08em;color:var(--ink-2);font-size:.9rem}.card__announce strong{letter-spacing:.22em;text-transform:uppercase;color:var(--ink);font-weight:500}.card__couple{margin:1.6rem 0}.card__person{font-family:var(--serif);letter-spacing:.01em;font-size:clamp(1.65rem,1.05rem + 2.5vw,2.4rem);line-height:1.22}.card__role{letter-spacing:.26em;text-transform:uppercase;color:var(--ink-3);margin-top:.15rem;font-size:.72rem}.card__amp{font-family:var(--script);color:var(--blush);margin:.5rem 0;font-size:2rem}.card__when p,.card__party p{color:var(--ink-2);font-size:.92rem}.card__hour{letter-spacing:.18em;text-transform:uppercase;margin-top:.5rem;font-weight:500;color:var(--ink)!important}.card__day{letter-spacing:.04em;color:var(--ink)!important}.card__lunar{color:var(--ink-3)!important;font-size:.82rem!important}.card__divider{width:124px;height:62px;margin:1.8rem auto}.card__invite{letter-spacing:.34em;text-transform:uppercase;color:var(--green-2)!important;font-size:.7rem!important}.card__guest{font-family:var(--script);margin:.2rem 0 .9rem;color:var(--green)!important;font-size:2rem!important}.card__venue{font-family:var(--serif);letter-spacing:.1em;margin-top:.9rem;color:var(--ink)!important;font-size:1.55rem!important}.card__hall{font-weight:500;color:var(--ink)!important}.card__addr{font-size:.86rem!important}.card__foot{font-style:italic;font-family:var(--serif);color:var(--ink-2);margin-top:2rem;font-size:1.1rem}@media (min-width:620px){.card__families{grid-template-columns:1fr auto 1fr;align-items:center}}.events{background:var(--paper-sage)}.events__date{letter-spacing:.26em;text-transform:uppercase;color:var(--ink-2);margin-top:-.6rem;margin-bottom:.4rem;font-size:.82rem;font-weight:500}.timeline{gap:clamp(2rem,5vw,3.2rem);margin:0;padding:0 0 0 2.1rem;list-style:none;display:grid;position:relative}.timeline:before{content:"";background:var(--line);transform-origin:top;width:1px;scale:1 var(--tl-progress,1);position:absolute;top:6px;bottom:6px;left:7px}.tl__dot{border:1px solid var(--green-2);background:var(--paper);border-radius:50%;width:15px;height:15px;margin-top:.4rem;position:absolute;left:-2.1rem}.tl__dot:after{content:"";background:var(--blush);border-radius:50%;position:absolute;inset:4px}.tl{position:relative}.tl__time{color:var(--green);letter-spacing:.16em;font-size:1.12rem;font-weight:500}.tl__title{font-family:var(--serif);margin-top:.1rem;font-size:clamp(1.5rem,1.1rem + 1.8vw,2.1rem);font-weight:400}.tl__place{color:var(--ink);margin-top:.3rem}.tl__addr{color:var(--ink-2);font-size:.92rem}.tl__map{letter-spacing:.24em;text-transform:uppercase;color:var(--green-2);border-bottom:1px solid var(--line);margin-top:.7rem;padding-bottom:2px;font-size:.7rem;transition:border-color .3s,color .3s;display:inline-block}.tl__map:hover{color:var(--green);border-color:var(--green)}@media (min-width:860px){.timeline{grid-template-columns:repeat(2,1fr);gap:clamp(2rem,6vw,5rem);max-width:920px;margin-inline:auto;padding:2.8rem 0 0}.timeline:before{width:auto;height:1px;scale:var(--tl-progress,1) 1;transform-origin:0;inset:7px 25% auto}.tl{text-align:center;padding-top:2.4rem}.tl__dot{margin-top:0;top:-2.4rem;left:50%;translate:-50%}}.album__grid{grid-template-columns:repeat(2,1fr);align-items:start;gap:clamp(.5rem,2vw,1.2rem);margin-top:1rem;display:grid}.shot{background:var(--paper-deep);cursor:zoom-in;-webkit-tap-highlight-color:transparent;margin:0;position:relative;overflow:hidden}.shot img{aspect-ratio:2/3;object-fit:cover;width:100%;height:100%;transition:transform 1.2s var(--ease-out), filter .6s}.shot:hover img{transform:scale(1.05)}.shot figcaption{inset-inline:0;color:var(--paper);letter-spacing:.26em;text-transform:uppercase;opacity:0;transition:opacity .45s var(--ease-soft), transform .45s var(--ease-out);background:linear-gradient(#0000,#1e1a168c);padding:2.6rem 1rem .9rem;font-size:.66rem;position:absolute;bottom:0;transform:translateY(8px)}.shot:hover figcaption,.shot:focus-within figcaption{opacity:1;transform:translateY(0)}@media (min-width:860px){.album__grid{gap:clamp(1rem,2.4vw,2rem)}.album__grid .shot:nth-child(2n){margin-top:clamp(2rem,5vw,4.5rem)}}.venue{background:linear-gradient(180deg, var(--paper) 0%, var(--paper-warm) 100%)}.venue__addr{color:var(--ink-2);letter-spacing:.04em}.venue__map{width:min(100% - 2 * var(--gap), 1000px);background:var(--paper);border:1px solid var(--line-soft);box-shadow:var(--shadow-md);cursor:zoom-in;margin:clamp(1.6rem,4vw,2.6rem) auto 0;padding:clamp(.8rem,2.5vw,1.6rem)}.venue__map img{width:100%}.venue__map figcaption{text-align:center;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2);margin-top:.8rem;font-size:.72rem}.rsvp{background:var(--paper-blush)}.rsvp__note{color:var(--ink-2);font-size:.92rem}.wishes__grid{grid-template-columns:1fr;gap:clamp(.8rem,2vw,1.2rem);margin-top:.6rem;display:grid}.wish{background:var(--paper);border:1px solid var(--line-soft);box-shadow:var(--shadow-sm);padding:1.3rem 1.4rem}.wish__text{font-family:var(--serif);color:var(--ink);font-size:1.12rem;font-style:italic;line-height:1.55}.wish__who{letter-spacing:.24em;text-transform:uppercase;color:var(--green-2);margin-top:.7rem;font-size:.68rem}.wishes__empty{background:var(--paper);border:1px solid var(--line-soft);max-width:46ch;box-shadow:var(--shadow-sm);color:var(--ink-2);border-radius:3px;justify-items:center;gap:1rem;margin:1rem auto 0;padding:clamp(1.8rem,5vw,2.8rem) clamp(1.2rem,4vw,2.4rem);display:grid}.wishes__empty p{font-family:var(--serif);color:var(--ink);font-size:1.22rem;font-style:italic;line-height:1.5}.wishes__wreath{opacity:.55;width:clamp(92px,22vw,128px)}@media (min-width:720px){.wishes__grid{grid-template-columns:repeat(2,1fr)}}@media (min-width:1040px){.wishes__grid{grid-template-columns:repeat(3,1fr)}}.footer{padding:clamp(3.4rem, 8vw, 6rem) var(--gap) calc(2.6rem + env(safe-area-inset-bottom));text-align:center;background:var(--green);color:var(--paper-warm)}.footer__mark{opacity:.9;width:128px;height:64px;margin:0 auto 1.4rem}.footer__names{font-family:var(--serif);letter-spacing:.01em;font-size:clamp(1.65rem,1.1rem + 2.3vw,2.5rem);line-height:1.25}.footer__date{letter-spacing:.4em;color:var(--sage);margin-top:.4rem;font-size:.8rem}.footer__thanks{max-width:46ch;font-family:var(--serif);color:#f6efe6db;margin:1.6rem auto 0;font-size:1.08rem;font-style:italic}.footer__top{letter-spacing:.3em;text-transform:uppercase;border-bottom:1px solid #f6efe666;margin-top:2rem;padding-bottom:3px;font-size:.66rem;display:inline-block}.countdown,.letter,.pair,.invite,.events,.venue,.rsvp,.footer{overflow:hidden}.is-open .countdown:before{content:"";opacity:.4;pointer-events:none;background:url(/art/petal-fall.webp) top/cover no-repeat;height:clamp(120px,17vw,200px);position:absolute;inset:0 0 auto;mask-image:linear-gradient(#000 18%,#0000 100%)}.is-open .letter:before{content:"";aspect-ratio:1;opacity:.45;pointer-events:none;background:url(/art/corner-spray.webp) 0 100%/contain no-repeat;width:min(44vw,400px);position:absolute;bottom:-5%;left:-3%}.is-open .pair:before{content:"";aspect-ratio:1;opacity:.3;pointer-events:none;background:url(/art/corner-spray.webp) 100% 0/contain no-repeat;width:min(38vw,340px);position:absolute;top:-2%;right:-4%;transform:scaleX(-1)rotate(180deg)}.pair__amp{position:relative}.is-open .pair__amp:before{content:"";opacity:.4;pointer-events:none;background:url(/art/wreath.webp) 50%/contain no-repeat;position:absolute;inset:-135% -75%}.is-open .card3d__inner:before{content:"";aspect-ratio:1;opacity:.22;pointer-events:none;background:url(/art/wreath.webp) top/contain no-repeat;width:min(52%,264px);position:absolute;top:clamp(18px,3.2vw,34px);left:50%;translate:-50%}.is-open .events:before,.is-open .venue:before,.is-open .rsvp:before,.is-open .wishes:before{content:"";opacity:.55;pointer-events:none;background:url(/art/divider.webp) 50%/contain no-repeat;width:min(76vw,500px);height:clamp(46px,7vw,84px);position:absolute;top:clamp(1.5rem,4vw,3.2rem);left:50%;translate:-50%}.events,.venue,.rsvp,.wishes{padding-top:calc(var(--section-y) + clamp(2.2rem, 5vw, 4rem))}.is-open .footer:before{content:"";opacity:.14;pointer-events:none;background:url(/art/petal-fall.webp) top/cover no-repeat;height:clamp(100px,14vw,170px);position:absolute;inset:0 0 auto;mask-image:linear-gradient(#000,#0000)}.footer>*{z-index:1;position:relative}.env__wreath{pointer-events:none}@media (prefers-reduced-motion:no-preference){.is-open .countdown:before,.is-open .footer:before{animation:26s ease-in-out infinite alternate driftY}}@keyframes driftY{0%{transform:translate(0,0)}to{transform:translate(-2%,8px)}}
