:root{--wine:#5a1214;--wine-2:#7a2226;--cream:#fbf5ec;--tint:#faf5ef;--ink:#1f1a17;--muted:#6f6660;--paper:#fff;--ink-soft:#3b3430;--ink-title:#2a1f1a;--line:#e6d4cd;--wide-track:.3em;--serif:"Playfair Display", Georgia, serif;--script:"Great Vibes", cursive;--sans:"Be Vietnam Pro", system-ui, sans-serif;--title-track:.06em;--label-track:.14em;color:var(--ink);font-family:var(--serif);font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}*,:before,:after{font-variant-numeric:lining-nums!important}.count-box strong,.bank b{font-variant-numeric:lining-nums tabular-nums!important}html{scroll-behavior:smooth;scrollbar-gutter:stable}html.is-locked,html.is-locked body{overflow:hidden}html.is-intro{background:#2c060b}body{background:#efe9e2;margin:0}@media (width>=768px){body{background:radial-gradient(at top,#f6efe8,#e9e0d6)}}img{max-width:100%;display:block}button,input,textarea{font:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit;font-variant-numeric:inherit}a{color:inherit;text-decoration:none}.page{min-height:100vh}.card{background:var(--paper);max-width:480px;margin:0 auto;overflow:hidden;box-shadow:0 0 40px #0000000f}@media (width>=768px){.card{max-width:760px}}@media (width>=1200px){.card{max-width:1180px}}.band{background:var(--tint)}.pc-only{display:none}@media (width>=1200px){.pc-only{display:revert}}.reveal{opacity:0;transition:opacity 1.1s cubic-bezier(.22,1,.36,1),transform 1.1s cubic-bezier(.22,1,.36,1);transform:translateY(28px)}.reveal.in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transition:none;transform:none}}.fx-pulse{animation:2s ease-in-out infinite pulse}.fx-heartbeat{animation:3.6s ease-in-out infinite heartbeat}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}@keyframes heartbeat{0%,45%,to{transform:scale(1)}10%,30%{transform:scale(1.1)}20%{transform:scale(.98)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes wiggle{0%,to{transform:rotate(0)}15%{transform:rotate(-4deg)}32%{transform:rotate(3.5deg)}48%{transform:rotate(-2.5deg)}63%{transform:rotate(1.5deg)}78%{transform:rotate(-.6deg)}}@keyframes swing{0%,to{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}@keyframes blink{50%{opacity:0}}@keyframes fadeIn{0%{opacity:0}}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.fx-pulse,.fx-heartbeat{animation:none}}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-150% 0}}@keyframes sound-ripple{0%{opacity:0;transform:scale(1)}25%{opacity:.55}to{opacity:0;transform:scale(1.6)}}@keyframes fx-bob{50%{transform:translateY(-2px)rotate(-6deg)}}.caps-title{font:400 24px/1.35 var(--serif);text-transform:uppercase;letter-spacing:var(--title-track);text-align:center;margin:0 24px}.quote{font:italic 15px/1.65 var(--serif);text-align:center;color:var(--ink-soft);margin:16px 30px 0}.quote p{margin:0 0 18px}.sec-title{text-align:center;margin-bottom:20px}.sec-title .caps-title{letter-spacing:.08em;color:var(--ink-title);font-size:25px;font-weight:500}@media (width>=1200px){.sec-title .caps-title{font-size:30px}}.sec-kicker{font:32px/1 var(--script);color:var(--wine);background:linear-gradient(100deg, var(--wine) 0%, var(--wine) 35%, #c9a25a 50%, var(--wine) 65%, var(--wine) 100%) 0 0/250% 100%;-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin:-.3em -.35em calc(4px - .3em);padding:.3em .35em;animation:7s linear infinite shimmer;display:block}@media (prefers-reduced-motion:reduce){.sec-kicker{animation:none}}@media (width>=1200px){.sec-kicker{font-size:42px}}.flourish{width:150px;height:15px;color:var(--wine);opacity:.85;margin:10px auto 0;display:block}@media (width>=1200px){.flourish{width:180px;height:18px}}.bow{width:84px;color:var(--wine);margin:12px auto 18px;display:block}.polaroid{background:#fff;margin:0;padding:8px 8px 10px;box-shadow:0 6px 22px #00000024,0 0 0 1px #0000000a}.polaroid img{object-fit:cover;width:100%;height:100%}.btn-outline{font:500 12px var(--sans);text-transform:uppercase;letter-spacing:var(--label-track);border:1.5px solid #fff;border-radius:999px;align-items:center;gap:8px;padding:10px 30px;transition:background .2s;display:inline-flex}.btn-outline:hover{background:#ffffff1f}.btn-solid{background:var(--wine);color:#fff;cursor:pointer;font:500 12px var(--sans);text-transform:uppercase;letter-spacing:var(--label-track);border:0;border-radius:999px;margin-top:18px;padding:11px 30px;box-shadow:0 4px 12px #5a121433}.btn-gift{background:var(--wine);color:#fff;cursor:pointer;font:500 12px var(--sans);text-transform:uppercase;letter-spacing:var(--label-track);border:0;border-radius:999px;align-items:center;gap:9px;margin-top:22px;padding:13px 30px;transition:background .2s,transform .2s,box-shadow .2s;display:inline-flex;box-shadow:0 6px 16px #5a121440}.btn-gift:hover{background:var(--wine-2);transform:translateY(-2px);box-shadow:0 10px 22px #5a121450}.type{display:inline-block;position:relative}.type-ghost{visibility:hidden}.type-live{position:absolute;inset:0}.caret{background:var(--wine);vertical-align:-.1em;width:1px;height:.85em;margin-left:2px;animation:.7s step-end infinite blink;display:inline-block}@media (prefers-reduced-motion:reduce){.caret{animation:none}}.name-type{text-align:center}.name-type .amp{opacity:0;transition:opacity .5s,transform .5s cubic-bezier(.3,1.5,.5,1);display:block;transform:scale(.6)}.name-type .amp.on{opacity:1;transform:none}.countdown{justify-content:center;gap:14px;display:flex}@media (width<=380px){.countdown{gap:10px}}.count-box{background:var(--wine);color:#fff;border-radius:6px;width:64px;padding:11px 0 9px;box-shadow:0 6px 14px #5a121433}.count-box strong{font:600 19px var(--serif);display:block}.count-box span{font:500 8px var(--sans);letter-spacing:var(--label-track);opacity:.85}@media (width>=768px){.count-box{width:76px;padding:14px 0 12px}.count-box strong{font-size:23px}}@media (width>=1200px){.count-box{width:92px;padding:18px 0 14px}.count-box strong{font-size:28px}.count-box span{font-size:10px}}.carousel{padding-bottom:30px;position:relative}.carousel-track{touch-action:pan-y;-webkit-user-select:none;user-select:none;height:290px;position:relative}@media (width>=768px){.carousel-track{height:400px}}@media (width>=1200px){.carousel-track{height:480px}}.slide{object-fit:cover;object-position:50% 25%;cursor:pointer;border-radius:12px;width:62%;height:100%;transition:transform .6s,opacity .6s;position:absolute;top:0;left:50%}.slide.center{z-index:2;transform:translate(-50%);box-shadow:0 10px 22px #00000030}.slide.left{opacity:.75;transform:translate(-128%)scale(.9)}.slide.right{opacity:.75;transform:translate(28%)scale(.9)}.slide.hidden{opacity:0;transform:translate(-50%)scale(.8)}@media (width>=768px) and (width<=1199px){.slide{width:46%}.slide.left{transform:translate(-152%)scale(.88)}.slide.right{transform:translate(52%)scale(.88)}}.car-nav{z-index:3;cursor:pointer;background:#ffffffd9;border:0;border-radius:50%;place-items:center;width:32px;height:32px;display:grid;position:absolute;top:calc(50% - 31px);box-shadow:0 2px 8px #0002}.car-nav.prev{left:10px}.car-nav.next{right:10px}.car-dots{justify-content:center;gap:7px;display:flex;position:absolute;bottom:4px;left:0;right:0}.car-dots span{background:#d6cfc8;border-radius:50%;width:7px;height:7px}.car-dots span.on{background:var(--wine)}.month-card{background:var(--wine);color:#fff;text-align:center;border-radius:18px;margin:-60px 14px 0;padding:24px 16px 20px;position:relative;box-shadow:0 12px 26px #5a121440}.month-card h3{font:400 22px var(--serif);text-transform:uppercase;letter-spacing:var(--title-track);margin:0 0 16px}@media (width>=768px){.month-card{flex-direction:column;justify-content:center;margin:0;display:flex}}@media (width>=1200px){.month-card{padding:34px 26px 28px}.month-card h3{font-size:30px}}.month-grid{grid-template-columns:repeat(7,1fr);row-gap:6px;display:grid}.month-head{font:500 10px var(--sans);letter-spacing:.08em;padding-bottom:6px}.month-day{height:34px;font:14px var(--sans);place-items:center;display:grid;position:relative}@media (width>=1200px){.month-day{height:44px;font-size:16px}}.month-day.is-wedding{color:var(--wine);z-index:0;font-size:13px;font-weight:700}.month-day.is-wedding:before{content:"";z-index:-1;width:40px;height:36px;clip-path:path("M20 36 17 33.3C6.8 24 0 18 0 10.6 0 4.7 4.7 0 10.6 0 14.4 0 17.8 1.7 20 4.5 22.2 1.7 25.6 0 29.4 0 35.3 0 40 4.7 40 10.6 40 18 33.2 24 23 33.3Z");background:#f2c9c9;margin:-15px 0 0 -20px;animation:1.6s ease-in-out infinite beat;position:absolute;top:50%;left:50%}@keyframes beat{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.dock{right:14px;bottom:calc(16px + env(safe-area-inset-bottom));z-index:30;flex-direction:column;gap:10px;display:flex;position:fixed}@media (width>=1200px){.dock{bottom:24px;right:28px}}.dock-btn{width:44px;height:44px;color:var(--wine);cursor:pointer;background:#fffffff2;border:1px solid #e3ddd6;border-radius:50%;place-items:center;padding:0;display:grid;box-shadow:0 4px 14px #00000020}.sound-btn{position:relative}.sound-btn.is-playing:after{content:"";border:1.5px solid var(--wine);pointer-events:none;border-radius:50%;animation:2.2s ease-out infinite sound-ripple;position:absolute;inset:0}.sound-btn.is-playing svg{animation:1.6s ease-in-out infinite fx-bob}@media (prefers-reduced-motion:reduce){.sound-btn.is-playing:after,.sound-btn.is-playing svg{animation:none}}.dock-sheet{background:#fff;border-radius:14px;flex-direction:column;min-width:200px;padding:8px;display:flex;position:absolute;bottom:0;right:calc(100% + 10px);box-shadow:0 10px 30px #0003}.dock-sheet a,.dock-sheet button{text-align:left;font:500 12px var(--sans);text-transform:uppercase;letter-spacing:var(--label-track);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:11px 14px}.dock-sheet a:hover,.dock-sheet button:hover{background:#f6efe9}.toast{bottom:calc(130px + env(safe-area-inset-bottom));background:var(--ink);color:#fff;font:13px var(--sans);z-index:50;border-radius:8px;max-width:calc(100vw - 32px);padding:12px 16px;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #0003}.backdrop,.lightbox{z-index:60;background:#1e1416cc;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.gift-backdrop{animation:.25s both fadeIn}@media (prefers-reduced-motion:reduce){.gift-backdrop{animation:none}}.modal{background:var(--cream);text-align:center;border:1px solid var(--line);outline:1px solid var(--line);outline-offset:-8px;border-radius:4px;width:100%;max-width:440px;max-height:calc(100svh - 32px);padding:50px 14px 18px;animation:.4s cubic-bezier(.2,.8,.25,1) both modalIn;position:relative;overflow-y:auto;box-shadow:0 24px 60px #0000004d}@media (prefers-reduced-motion:reduce){.modal{animation:none}}@media (width<=360px){.modal{padding:48px 12px 16px}}@media (width>=768px){.modal{outline-offset:-10px;max-width:540px;padding:44px 36px 30px}}@media (height<=520px) and (orientation:landscape){.modal{outline-offset:-7px;max-width:680px;padding:20px 22px 14px}}@keyframes modalIn{0%{opacity:0;transform:translateY(18px)scale(.97)}}.modal-close{z-index:1;border:1px solid var(--line);width:34px;height:34px;color:var(--wine);cursor:pointer;background:#fff;border-radius:50%;place-items:center;transition:background .2s,color .2s;display:grid;position:absolute;top:14px;right:14px}.modal-close:hover{background:var(--wine);color:#fff}.modal-head{margin-bottom:18px}.modal-head h3{font:400 21px var(--serif);text-transform:uppercase;letter-spacing:var(--title-track);color:var(--ink);margin:0}.modal-head .flourish{width:130px;height:13px;margin-top:8px}@media (width>=768px){.modal-head{margin-bottom:24px}.modal-head h3{font-size:26px}}@media (height<=520px) and (orientation:landscape){.modal-head{margin-bottom:12px}.modal-head h3{font-size:18px}.modal-head .flourish{display:none}}.modal-kicker{font:30px/1 var(--script);color:var(--wine);margin-bottom:2px;display:block}@media (width>=768px){.modal-kicker{font-size:38px}}@media (height<=520px) and (orientation:landscape){.modal-kicker{font-size:24px}}.modal-note{font:italic 13px/1.6 var(--serif);color:var(--muted);margin:16px 6px 4px}@media (width>=768px){.modal-note{font-size:14px}}@media (height<=520px) and (orientation:landscape){.modal-note{margin-top:10px;font-size:12px}}.bank-grid{flex-direction:column;gap:12px;display:flex}@media (width>=768px){.bank-grid{gap:16px}}@media (height<=520px) and (orientation:landscape){.bank-grid{flex-direction:row}}.bank{text-align:left;border:1px solid var(--line);background:#fff;border-radius:12px;align-items:center;gap:12px;padding:10px;display:flex;box-shadow:0 6px 18px #5a12140f}.bank strong{font:500 16px/1.3 var(--serif);color:var(--ink);white-space:nowrap}.bank b{font:600 15px var(--sans);letter-spacing:.06em;color:var(--wine);font-variant-numeric:tabular-nums}.bank button{background:var(--wine);color:#fff;cursor:pointer;font:500 10px var(--sans);text-transform:uppercase;letter-spacing:.08em;border:0;border-radius:999px;align-items:center;gap:6px;margin-top:6px;padding:8px 14px;transition:background .2s,transform .2s;display:inline-flex;box-shadow:0 4px 10px #5a121433}.bank button:hover{background:var(--wine-2);transform:translateY(-1px)}@media (width<=340px){.bank strong{white-space:normal}}@media (width<=360px){.bank{gap:10px;padding:9px}.bank strong{font-size:15px}.bank b{letter-spacing:.03em;font-size:14px}}@media (width>=768px){.bank{gap:24px;padding:16px 22px 16px 16px}.bank strong{font-size:20px}.bank b{font-size:17px}.bank button{padding:9px 18px;font-size:11px}}@media (height<=520px) and (orientation:landscape){.bank{flex:1;gap:12px;padding:10px}.bank strong{font-size:15px}.bank b{font-size:14px}.bank button{margin-top:4px;padding:6px 12px;font-size:9px}}.bank-qr{border:1px solid var(--line);background:#fff;border-radius:6px;flex:none;width:118px;padding:5px}.bank-qr img{aspect-ratio:1;object-fit:contain;width:100%;display:block}@media (width<=360px){.bank-qr{width:104px;padding:4px}}@media (width>=768px){.bank-qr{width:168px}}@media (height<=520px) and (orientation:landscape){.bank-qr{width:112px;padding:4px}}.bank-info{flex-direction:column;flex:1;align-items:flex-start;gap:5px;min-width:0;display:flex}.bank-tag{flex-wrap:wrap;align-items:center;gap:4px 8px;margin-bottom:2px;display:flex}.bank-role{font:600 10px var(--sans);letter-spacing:var(--label-track);color:#fff;background:var(--wine);border-radius:999px;padding:4px 11px 3px}.bank-name{font:500 12px var(--sans);color:var(--muted);letter-spacing:.04em}.lightbox{touch-action:pan-y;-webkit-user-select:none;user-select:none;background:#0f0b0cf2}.lightbox>button{z-index:1;color:#fff;cursor:pointer;background:0 0;border:0;position:absolute}.lightbox .lb-close{top:16px;right:16px}.lightbox .lb-nav{background:#ffffff1f;border-radius:50%;place-items:center;width:44px;height:44px;transition:background .2s;display:grid;top:calc(50% - 22px)}.lightbox .lb-nav:hover{background:#ffffff38}.lightbox .lb-nav.prev{left:10px}.lightbox .lb-nav.next{right:10px}.lightbox img{object-fit:contain;max-height:84vh}.lightbox span{color:#fff;font:12px var(--sans);letter-spacing:2px;position:absolute;bottom:18px}.falling{z-index:20;pointer-events:none;animation:1.2s ease-out both falling-in;position:fixed;inset:0;overflow:hidden}@media (prefers-reduced-motion:reduce){.falling{display:none}}.falling__item{top:0;left:var(--fx-left);animation:falling-drop var(--fx-duration) linear var(--fx-delay) infinite;will-change:transform, opacity;position:absolute}.falling__sway{animation:falling-sway var(--fx-sway-duration) ease-in-out var(--fx-delay) infinite alternate;will-change:transform;display:block}.falling__sway svg{display:block}.falling__bokeh{background:radial-gradient(circle, var(--fx-tint), transparent 70%);filter:blur(28px);animation:falling-bokeh var(--fx-duration) ease-in-out var(--fx-delay) infinite alternate;will-change:transform;border-radius:50%;position:absolute}@keyframes falling-bokeh{0%{transform:translate(0,0)scale(1)}to{transform:translate3d(var(--fx-x), var(--fx-y), 0) scale(1.35)}}@keyframes falling-in{0%{opacity:0}}@keyframes falling-drop{0%{opacity:0;transform:translateY(-12vh)rotate(0)}8%,88%{opacity:var(--fx-opacity)}to{opacity:0;transform:translate3d(0, 108vh, 0) rotate(var(--fx-spin))}}@keyframes falling-sway{0%{transform:translate3d(calc(var(--fx-drift) * -1), 0, 0)}to{transform:translate3d(var(--fx-drift), 0, 0)}}.intro-screen{z-index:100;color:#fff;text-align:center;place-items:center;padding:24px 0;display:grid;position:fixed;inset:0;overflow:hidden;container-type:inline-size}.intro-screen:before{content:"";background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.012' numOctaves='4' seed='7'/%3E%3CfeColorMatrix values='0 0 0 0 .1  0 0 0 0 0  0 0 0 0 .02  0 0 0 .55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E") 0 0/440px 440px,radial-gradient(at 30% 20%,#8a2230 0,#0000 55%),radial-gradient(at 75% 80%,#3d0a12 0,#0000 60%),radial-gradient(#6e1621 0,#4a0c14 70%,#2c060b 100%);transition:opacity .6s;position:absolute;inset:0}.intro-screen.is-leaving{pointer-events:none}.intro-screen.is-leaving:before{opacity:0}.intro-inner{flex-direction:column;align-items:center;width:100%;display:flex;position:relative}.intro-fade{padding:0 16px;transition:opacity .4s}.is-opening .intro-fade,.is-leaving .intro-fade{opacity:0}.intro-kicker{font:400 clamp(17px, 1.9vw, 26px) var(--serif);letter-spacing:.22em;opacity:0;margin:0;animation:1s ease-out .2s both fadeUp}.intro-kicker+.flourish{aspect-ratio:10;color:#e2c27e;opacity:0;width:clamp(130px,13vw,190px);height:auto;margin-top:12px;animation:1s ease-out .35s both fadeUp}.intro-hint{font:500 clamp(11px, 1vw, 14px) var(--sans);letter-spacing:var(--wide-track);opacity:0;margin:clamp(8px,2vh,20px) 0 0;animation:1s ease-out .9s both fadeUp,2.4s ease-in-out 2s infinite hint}@keyframes hint{0%,to{opacity:1}50%{opacity:.45}}.intro-stage{--stage-max:480px;--w:min(var(--stage-max), 100cqw, (100svh - 110px) / 1.47);width:var(--w);aspect-ratio:100/147;position:relative;container-type:inline-size}@media (width>=768px){.intro-stage{--stage-max:560px}}@media (width>=1200px){.intro-stage{--stage-max:640px}}.intro-heading{flex-direction:column;align-items:center;display:flex;position:absolute;top:12cqw;left:0;right:0}.intro-env{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;height:96cqw;padding:0;animation:1.1s cubic-bezier(.2,.8,.25,1) .6s both fadeUp;position:absolute;bottom:0;left:0;right:0}.intro-env:disabled{cursor:default}.intro-env:focus-visible{outline-offset:8px;border-radius:6px;outline:2px solid #f3d79a}.intro-env .hero{transform-origin:0 0;transition:transform .85s cubic-bezier(.65,0,.35,1);position:absolute;top:-51cqw;left:0;right:0}.intro-env .hero-photo{transition:transform .8s cubic-bezier(.2,.8,.25,1) .4s,visibility 0s .4s}.intro-env .decor{animation:.8s ease-out 1.3s both decorIn}.intro-env .name-tag{animation:.7s cubic-bezier(.3,1.4,.5,1) 1.6s both tagIn}.intro-env:not(:disabled):hover .env-flap{transform:rotateX(16deg)}.intro-screen:not(.is-leaving) .envelope{clip-path:inset(-100cqw -50cqw .4cqw)}@keyframes decorIn{0%{opacity:0;transform:scale(.7)}}@keyframes tagIn{0%{opacity:0;transform:translateY(6cqw)rotate(-6deg)scale(.85)}}.is-closed .seal{animation:2.4s ease-in-out 2s infinite sealPulse}@keyframes sealPulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}@media (prefers-reduced-motion:reduce){.intro-kicker,.intro-hint,.intro-env,.intro-env .decor,.intro-env .name-tag,.is-closed .seal{opacity:1;animation:none}}@media (width>=1200px){.top{grid-template-columns:500px minmax(0,1fr);align-items:center;gap:40px;max-width:1100px;margin:0 auto;padding:30px 40px 44px;display:grid}}.hero-stage{width:100%;max-width:480px;margin:0 auto;container-type:inline-size}@media (width>=768px){.hero-stage{max-width:460px}}@media (width>=1200px){.hero-stage{max-width:500px}}.hero{height:147cqw;position:relative}.envelope{perspective:120cqw;height:113.6cqw;position:absolute;top:5.5cqw;left:10cqw;right:10cqw}.env-back{z-index:1;width:100%;height:68.2cqw;position:absolute;top:45.5cqw;left:0}.env-flap{z-index:5;transform-origin:50% 0;filter:drop-shadow(0 1cqw 1.2cqw #00000040);width:100%;height:40.9cqw;transition:transform .6s cubic-bezier(.4,0,.2,1),z-index 0s .3s;position:absolute;top:45.5cqw;left:0}.is-open .env-flap{z-index:2;transform:rotateX(180deg)}.hero-photo{z-index:3;visibility:hidden;height:81.8cqw;position:absolute;top:0;left:4.5cqw;right:4.5cqw;transform:translateY(88cqw)}.is-open .hero-photo{visibility:inherit;transform:none}.hero-photo img{object-position:50% 15%}.env-front{z-index:4;filter:drop-shadow(0 10px 18px #5a121440);width:100%;height:52.3cqw;position:absolute;bottom:0;left:0}.seal{z-index:6;filter:drop-shadow(0 3px 4px #00000059);place-items:center;width:15cqw;height:15cqw;margin-left:-7.5cqw;display:grid;position:absolute;top:78.9cqw;left:50%}.seal svg{width:100%;height:100%;position:absolute;inset:0}.seal span{font:600 3.4cqw var(--serif);color:#fff6df;letter-spacing:.3cqw;text-shadow:0 1px 1px #6b4a1a;position:relative}.seal i{font:italic 3.2cqw var(--serif);margin:0 .4cqw}.decor{z-index:3;position:absolute}.decor>*{width:100%;height:auto;display:block}.decor-calla{width:31cqw;top:37cqw;right:.5cqw}.decor-calla>*{transform-origin:50% 92%;animation:3.6s ease-in-out infinite wiggle}.decor-cascade{width:29cqw;top:84cqw;left:1cqw}.decor-cascade>*{transform-origin:50% 4%;animation:3.8s ease-in-out .4s infinite dangle}.name-tag{z-index:2;aspect-ratio:200/240;width:43cqw;position:absolute;top:91cqw;right:2cqw}.name-tag>svg{filter:drop-shadow(0 6px 12px #0000002e);will-change:transform;width:100%;height:100%;position:absolute;inset:0}.name-tag p{font:5.8cqw/1.15 var(--script);white-space:nowrap;color:var(--ink-title);min-height:1.15em;margin:0}.name-tag i{font:italic 4.4cqw var(--serif);color:var(--wine);display:block}.lace-content{text-align:center;flex-direction:column;justify-content:center;align-items:center;padding-bottom:2cqw;display:flex;position:absolute;inset:0}.bow-sm{width:10.5cqw;margin:0 auto 1cqw}@keyframes dangle{0%,to{transform:rotate(0)}25%{transform:rotate(4deg)}75%{transform:rotate(-4deg)}}@media (prefers-reduced-motion:reduce){.decor,.decor>*,.name-tag{animation:none}}.intro{text-align:center;padding:0 0 56px}@media (width>=768px){.intro{padding:10px 0 56px}}@media (width>=1200px){.intro{flex-direction:column;align-self:stretch;padding:30px 0 20px;display:flex;position:relative}.intro .intro-eyebrow{margin-top:auto}.intro .intro-count{margin-bottom:auto}.intro-sprig{width:130px;animation-delay:-1s;bottom:-14px;right:-6px}.intro-sprig svg{transform:scaleX(-1)rotate(8deg)}}.big-date{max-width:340px;color:var(--wine);grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;margin:14px auto 28px;padding:0 20px;display:grid}@media (width>=768px){.big-date{max-width:400px}}@media (width>=1200px){.big-date{max-width:440px;margin:10px auto 32px}}.big-date-side{border-top:1px solid #5a121459;border-bottom:1px solid #5a121459;padding:7px 0 6px}.big-date-side span{font:600 12px var(--sans);text-transform:uppercase;letter-spacing:var(--label-track);letter-spacing:.16em;display:block}.big-date-side small{font:italic 14px/1.3 var(--serif);color:var(--ink-soft);margin-top:2px;display:block}@media (width>=1200px){.big-date-side span{font-size:13px}.big-date-side small{font-size:15px}}.big-date-day{font:500 58px/1 var(--serif);letter-spacing:.02em}@media (width>=1200px){.big-date-day{font-size:68px}.top-nav{border-top:1px solid var(--line);border-bottom:1px solid var(--line);justify-content:center;align-items:center;width:fit-content;margin:0 auto;padding:8px 4px;display:flex}.top-nav a,.top-nav button{cursor:pointer;white-space:nowrap;font:500 12px var(--serif);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);background:0 0;border:0;padding:4px 13px;transition:color .25s;position:relative}.top-nav a:after,.top-nav button:after{content:"";background:var(--wine);height:1px;transition:transform .3s;position:absolute;bottom:0;left:13px;right:13px;transform:scaleX(0)}.top-nav a:hover,.top-nav button:hover{color:var(--wine)}.top-nav a:hover:after,.top-nav button:hover:after{transform:scaleX(1)}.top-nav>*+:before{content:"";background:var(--wine);opacity:.4;border-radius:50%;width:4px;height:4px;margin-top:-2px;position:absolute;top:50%;left:-2px}}.date-label{font:500 12px var(--sans);text-transform:uppercase;letter-spacing:var(--label-track);letter-spacing:var(--wide-track);color:var(--wine);justify-content:center;align-items:center;gap:12px;margin:0;display:flex}.date-label:before,.date-label:after{content:"";opacity:.45;background:currentColor;width:36px;height:1px}@media (width>=1200px){.date-label{display:none}.intro-eyebrow{font:500 13px var(--sans);letter-spacing:var(--wide-track);color:var(--wine);margin:0 0 6px}.intro-couple{margin-bottom:26px}.intro-couple p{font:72px/1.12 var(--script);margin:0}.intro-couple .amp{font:italic 40px var(--serif);color:var(--wine)}}.duo{padding-top:44px;padding-bottom:6px}@media (width>=768px){.duo{padding-left:calc(50% - 320px);padding-right:calc(50% - 320px)}}@media (width>=1200px){.duo{grid-template-columns:1fr 1.15fr 1fr;align-items:center;gap:34px 40px;margin:0 auto;padding:64px calc(50% - 510px) 70px;display:grid}.duo .couple{display:contents}}.duo .sec-title{margin-bottom:8px}@media (width>=1200px){.duo .sec-title{order:0;grid-column:1/-1}}.couple{padding:20px 22px 30px;position:relative}@media (width>=768px){.couple{max-width:640px;margin-left:auto;margin-right:auto;padding-top:30px}}.person{align-items:center;gap:12px;display:flex}.person .polaroid{flex:none;width:186px;height:262px}@media (width<=380px){.person .polaroid{width:160px;height:228px}}@media (width>=1200px){.person .polaroid{width:100%;max-width:300px;height:400px}.person{flex-direction:column;gap:18px}}.person-bride .person-name{align-self:flex-start;margin-top:40px}@media (width>=1200px){.person-bride{order:1}}.person-groom{justify-content:flex-end;margin-top:-118px}.person-groom .person-name{align-self:flex-end;margin-bottom:24px}@media (width<=380px){.person-groom{margin-top:-96px}}@media (width>=1200px){.person-groom{flex-direction:column-reverse;order:3;margin-top:0}.person-bride .person-name,.person-groom .person-name{align-self:center;margin:0}}.tilt-l{rotate:-1.5deg}.tilt-r{rotate:1.5deg}.person-name{text-align:center;flex:1}.person-name>span{font:500 11px var(--sans);text-transform:uppercase;letter-spacing:var(--label-track);color:var(--muted);display:block}@media (width>=1200px){.person-name>span{font-size:13px}}.person-name strong{font:400 30px/1.2 var(--script);color:var(--wine);white-space:nowrap;margin-top:4px;display:block}@media (width<=380px){.person-name strong{font-size:26px}}@media (width>=1200px){.person-name strong{font-size:44px}}.chapter{padding:20px 0 40px}.chapter .sec-title{margin-bottom:6px}@media (width>=768px){.chapter{max-width:640px;margin-left:auto;margin-right:auto}}@media (width>=1200px){.chapter .quote{margin-left:0;margin-right:0;font-size:17px}.duo .chapter{order:2;max-width:none;padding:0}.duo .chapter .caps-title{font-size:24px}}.save-date{height:420px;position:relative}.save-date img{object-fit:cover;object-position:50% 42%;width:100%;height:100%}.save-date:after{content:"";background:linear-gradient(#0000004d,#0000 45%);position:absolute;inset:0}.save-date p{z-index:1;text-align:center;font:46px var(--script);color:#fff;text-shadow:0 2px 10px #0006;margin:0;position:absolute;top:16px;left:0;right:0}@media (width>=768px){.save-date{height:clamp(460px,62vw,640px)}}@media (width>=1200px){.save-date{height:640px}.save-date p{font-size:64px;top:26px}}.invitation{text-align:center;padding:44px 0 26px}.invitation .sec-title{margin-bottom:12px}@media (width>=768px){.invitation{max-width:640px;margin-left:auto;margin-right:auto}}@media (width>=1200px){.invitation{max-width:820px;padding-top:70px}}.guest{font:italic 400 24px/1.4 var(--serif);color:var(--wine);letter-spacing:.02em;margin:6px 0 0}@media (width>=1200px){.guest{font-size:28px}}.guest-amp{margin:0 .12em}.sub{max-width:400px;font:14px/1.8 var(--serif);color:var(--ink-soft);margin:12px auto 30px;padding:0 28px}.sub p{text-wrap:balance;margin:0}.sub p+p{margin-top:6px}@media (width>=768px){.sub{font-size:15px}}@media (width>=1200px){.sub{max-width:560px;font-size:17px}}.families{grid-template-columns:1fr 1fr;align-items:start;gap:16px;padding:0 18px;display:grid}.family{text-align:center}.family.from-left:not(.in){transform:translate(-36px)}.family.from-right:not(.in){transform:translate(36px)}.family h4{font:500 13px var(--serif);letter-spacing:var(--label-track);color:var(--ink-title);margin:0}.family .family-parents{margin-top:12px}.family .family-parents:before{content:"";background:var(--wine-2);opacity:.5;width:32px;height:1px;margin:0 auto 12px;display:block}.family p{font:15px/1.6 var(--serif);margin:0}.family small{font:11px/1.5 var(--serif);color:var(--muted);margin-top:10px;display:block}.family small span{display:block}@media (width>=1200px){.family h4{font-size:15px}.family .family-parents{margin-top:16px}.family .family-parents:before{margin-bottom:16px}.family p{font-size:18px}.family small{font-size:13px}}.script-names{margin:34px 0 10px}.script-names p{font:38px/1.15 var(--script);margin:0}@media (width>=1200px){.script-names p{font-size:48px}}.script-names i{font:400 26px/1.2 var(--script);color:var(--wine);display:block}@media (width>=1200px){.script-names i{font-size:32px}}.events{gap:22px;padding:40px 18px 44px;display:grid}@media (width>=768px){.events{grid-template-columns:1fr 1fr;align-items:stretch;gap:26px;padding:56px 28px 60px}}@media (width>=1200px){.events{gap:40px;margin:0 auto;padding:70px calc(50% - 460px) 80px}}.event-wrap{position:relative}.event-wrap+.event-wrap{margin-top:4px}@media (width>=768px){.event-wrap{height:100%}.event-wrap+.event-wrap{margin-top:0}.event-wrap>.event-card{height:100%}}.event-card{--champagne:#ecd3a5;background:var(--wine);color:#fff;text-align:center;border-radius:18px;padding:22px 22px 26px;position:relative;box-shadow:0 10px 24px #5a121440}.event-card:before{content:"";pointer-events:none;border:1px solid #ffffff2b;border-radius:13px;position:absolute;inset:7px}.event-card h3{font:400 clamp(17px, 5.4vw, 21px)/1.35 var(--serif);text-transform:uppercase;letter-spacing:.08em;white-space:nowrap;margin:4px 0 8px}@media (width>=768px) and (width<=1199px){.event-card h3{font-size:17px}}.event-orn{opacity:.55;margin:-2px 0 12px;font-size:16px;line-height:1;display:block}.event-slot{background:#ffffff0a;border:1px solid #fff3;border-radius:12px;padding:14px 12px 12px;position:relative}.event-slot+.event-slot{margin-top:12px}.event-slot p{margin:0}.event-label{font:500 12px var(--serif);letter-spacing:var(--wide-track);color:var(--champagne)}.event-day{grid-template-columns:1fr auto 1fr;align-items:center;gap:14px;max-width:270px;margin:8px auto 6px;display:grid}.event-day strong{font:500 52px/1 var(--serif);letter-spacing:.02em}.event-day-side{border-top:1px solid #ffffff59;border-bottom:1px solid #ffffff59;padding:6px 0 5px}.event-day-side span{font:600 13px var(--serif);letter-spacing:.14em;white-space:nowrap;display:block}.event-day-side small{font:italic 13px/1.3 var(--serif);opacity:.85;white-space:nowrap;margin-top:2px;display:block}.event-lunar{font:italic 12px var(--serif);opacity:.8}.event-at{font:400 13px var(--serif);letter-spacing:var(--wide-track);opacity:.85;margin:18px 0 0}.event-place{font:400 24px var(--serif);margin:6px 0}.event-address{font:12px/1.5 var(--serif);opacity:.85;margin:0 0 18px}.sprig{z-index:2;pointer-events:none;width:clamp(96px,30%,150px);animation:4s ease-in-out infinite float;position:absolute}.sprig svg{width:100%;height:auto;display:block}@media (prefers-reduced-motion:reduce){.sprig{animation:none}}.sprig-l{bottom:-28px;left:-14px}.sprig-r{animation-delay:-2s;bottom:-28px;right:-14px}.sprig-r svg{transform:scaleX(-1)}@media (width>=1200px){.story-block{grid-template-columns:1fr 1fr;align-items:center;gap:50px;max-width:1100px;margin:0 auto;padding:40px 40px 50px;display:grid}}.story-carousel{padding:28px 0 18px;position:relative}@media (width>=768px){.story-carousel{padding:44px 0 26px}}@media (width>=1200px){.story-carousel{border-radius:12px;order:2;padding:0;overflow:hidden}}.story{padding:26px 0 24px}@media (width>=768px){.story{max-width:640px;margin-left:auto;margin-right:auto}}@media (width>=1200px){.story{order:1;max-width:none;padding:0}.story .quote{margin-left:0;margin-right:0;font-size:17px}}.sprig-car{width:clamp(90px,24%,150px);animation-delay:-1s;top:-10px;right:0}.sprig-car svg{transform:scaleX(-1)rotate(-20deg)}.calendar{padding:36px 0 30px;position:relative}.calendar>img{object-fit:cover;object-position:50% 20%;width:100%;height:480px;display:block}@media (width>=768px){.calendar{grid-template-columns:1fr 1fr;align-items:stretch;gap:26px;padding:36px 28px 44px;display:grid}.calendar>img{contain:size;border-radius:18px;height:100%;min-height:320px}}@media (width>=1200px){.calendar{gap:44px;margin:0 auto;padding:60px calc(50% - 480px) 70px}}.album{text-align:center;padding:20px 16px 34px}@media (width>=768px){.album{padding:30px 28px 44px}}.album-stage{max-width:380px;margin:0 auto;position:relative}.album-stage .car-nav{top:calc(50% - 16px)}.album-stage .car-nav.prev{left:-6px}.album-stage .car-nav.next{right:-6px}@media (width>=768px){.album-stage .car-nav.prev{left:-48px}.album-stage .car-nav.next{right:-48px}}.album-photo{aspect-ratio:2/3;cursor:grab;touch-action:pan-y;background:#fff;border:8px solid #fff;border-bottom-width:10px;border-radius:6px;width:100%;padding:0;display:block;position:relative;overflow:hidden;box-shadow:0 10px 26px #00000026,0 0 0 1px #0000000a}.album-photo:active{cursor:grabbing}.album-photo img{object-fit:cover;object-position:50% 25%;pointer-events:none;-webkit-user-select:none;user-select:none;border-radius:3px;width:100%;height:100%;animation:.45s both album-in;position:absolute;inset:0}.album-photo img.from-left{--album-from:-30px}@media (prefers-reduced-motion:reduce){.album-photo img{animation:none}}@keyframes album-in{0%{opacity:0;transform:translateX(var(--album-from,30px))}}.album-count{font:500 12px var(--sans);text-transform:uppercase;letter-spacing:var(--label-track);letter-spacing:var(--wide-track);color:var(--wine);margin:18px 0 0}.album-count span{color:var(--muted);margin:0 .5em}.album-strip{scroll-snap-type:x proximity;scrollbar-width:none;gap:8px;max-width:380px;margin:14px auto 0;padding:6px 4px 8px;display:flex;overflow-x:auto}.album-strip::-webkit-scrollbar{display:none}.album-strip button{aspect-ratio:2/3;cursor:pointer;scroll-snap-align:center;opacity:.6;background:#fff;border:0;border-radius:4px;flex:0 0 48px;padding:2px;transition:opacity .3s,box-shadow .3s;box-shadow:0 2px 8px #0000001f}.album-strip button:hover{opacity:.9}.album-strip button.on{opacity:1;box-shadow:0 0 0 1.5px var(--wine), 0 3px 10px #5a121433}.album-strip img{object-fit:cover;object-position:50% 25%;border-radius:2px;width:100%;height:100%;display:block}.gift{text-align:center;padding:48px 16px 52px}@media (width>=1200px){.gift{padding:70px 40px 80px}}.gift-frame{background:var(--tint);border:1px solid var(--line);outline:1px solid var(--line);outline-offset:-8px;max-width:520px;margin:0 auto;padding:50px 22px 34px;position:relative;box-shadow:0 14px 36px #5a12140f}@media (width>=1200px){.gift-frame{outline-offset:-10px;max-width:640px;padding:60px 56px 46px}}.gift-note{font:italic 15px/1.65 var(--serif);max-width:400px;color:var(--ink-soft);margin:16px auto 0}.gift-bow{width:66px;color:var(--wine);filter:drop-shadow(0 3px 4px #5a121433);z-index:2;margin:0 0 0 -33px;position:absolute;top:-30px;left:50%}@media (width>=1200px){.gift-bow{width:80px;margin-left:-40px;top:-36px}}.gift-sprig{width:clamp(86px,24%,130px);animation-delay:-1.5s;bottom:-26px;right:-18px}.gift-sprig svg{transform:scaleX(-1)}.wishes{text-align:center;padding:48px 0 52px;overflow:hidden}@media (width>=1200px){.wishes{padding:70px 0 80px}}.wish-frame{border:1px solid var(--line);outline:1px solid var(--line);outline-offset:-8px;background:#fff;max-width:520px;margin:22px 16px 0;padding:30px 22px 28px;position:relative;box-shadow:0 14px 36px #5a12140f}@media (width>=768px){.wish-frame{margin:26px auto 0;padding:40px 44px 36px}}.wish-form{text-align:left;flex-direction:column;gap:16px;display:flex}.wish-field{display:block}.wish-label{font:500 11px var(--sans);text-transform:uppercase;letter-spacing:var(--label-track);color:var(--wine-2)}.wish-input{width:100%;font:15px/1.5 var(--sans);color:var(--ink);background:var(--tint);border:1px solid var(--line);resize:none;border-radius:3px;margin-top:8px;padding:12px 14px;transition:border-color .2s,background .2s;display:block}.wish-input::placeholder{color:#b3a59e}.wish-input:focus{border-color:var(--wine-2);outline:none}.wish-error{color:#b3261e;margin:0;font-size:13px}.wish-submit{justify-content:center;align-self:stretch;margin-top:4px}.wish-submit:disabled{opacity:.6;cursor:wait}.wish-sprig-tr{width:clamp(80px,22%,120px);top:-30px;right:-16px}.wish-sprig-tr svg{transform:scaleX(-1)rotate(-25deg)}.wish-sprig-bl{width:clamp(80px,22%,120px);animation-delay:-2s;bottom:-26px;left:-16px}.wish-thanks{padding:10px 0 4px;animation:.5s cubic-bezier(.22,1,.36,1) both wish-pop-in}.wish-check{border:1px solid var(--line);width:64px;height:64px;color:var(--wine);background:radial-gradient(circle at 35% 30%,#fbeee9,#f2d6cd);border-radius:50%;place-items:center;margin:0 auto;animation:.6s cubic-bezier(.34,1.56,.64,1) .1s backwards wish-check-in;display:grid}.wish-thanks-title{font:400 38px/1.2 var(--script);color:var(--wine);margin:18px 0 0}.wish-thanks-note{max-width:340px;font:italic 15px/1.65 var(--serif);color:var(--ink-soft);margin:10px auto 0}.wish-again{cursor:pointer;font:500 11px var(--sans);text-transform:uppercase;letter-spacing:var(--label-track);color:var(--wine-2);text-underline-offset:4px;background:0 0;border:0;margin-top:18px;padding:0;text-decoration:underline}.wish-again:hover{color:var(--wine)}.wish-wall{margin-top:36px}.wish-viewport{flex-direction:column;gap:16px;padding:6px 0 14px;display:flex;overflow:hidden}.wish-track{justify-content:center;padding:0 16px;display:flex}.wish-wall.is-moving .wish-viewport{-webkit-mask-image:linear-gradient(90deg,#0000,#000 3rem calc(100% - 3rem),#0000);mask-image:linear-gradient(90deg,#0000,#000 3rem calc(100% - 3rem),#0000)}.wish-wall.is-moving .wish-track{width:max-content;animation:wish-marquee var(--marquee-duration) linear infinite;justify-content:flex-start;padding:0}.wish-wall.is-moving .wish-track.is-reverse{animation-direction:reverse}@media (hover:hover){.wish-wall.is-moving .wish-viewport:hover .wish-track{animation-play-state:paused}}.wish-wall.is-moving.is-paused .wish-track{animation-play-state:paused}.wish-card{cursor:pointer;text-align:left;border:1px solid var(--line);background:#fff;border-radius:3px;flex-direction:column;flex-shrink:0;width:17rem;height:13.5rem;margin:0 16px 0 0;padding:22px 22px 18px;transition:transform .25s,box-shadow .25s,border-color .25s;display:flex;box-shadow:0 8px 22px #5a12140d}.wish-card:hover,.wish-card:focus-visible{border-color:#d9b9ae;outline:none;transform:translateY(-3px);box-shadow:0 12px 26px #5a121417}@media (width>=768px){.wish-card{width:21rem;height:14.5rem;padding:26px 26px 20px}}.wish-quote{fill:#e2c3bb;width:20px;height:20px}.wish-message{font:italic 16px/1.65 var(--serif);color:var(--ink-soft);white-space:pre-line;overflow-wrap:anywhere;-webkit-line-clamp:4;-webkit-box-orient:vertical;margin:10px 0 0;display:-webkit-box;overflow:hidden}.wish-name{font:400 24px/1.3 var(--script);color:var(--wine);white-space:nowrap;text-overflow:ellipsis;margin-top:auto;padding-top:14px;overflow:hidden}@media (width>=768px){.wish-name{font-size:27px}}.wish-modal{padding:46px 28px 32px}.wish-modal .wish-quote{width:28px;height:28px}.wish-modal .flourish{width:120px;height:12px;margin-top:20px}@media (width>=768px){.wish-modal{padding:52px 48px 38px}}.wish-modal-message{font:italic 17px/1.75 var(--serif);color:var(--ink-soft);white-space:pre-line;overflow-wrap:anywhere;margin:14px 0 0}@media (width>=768px){.wish-modal-message{font-size:19px}}.wish-modal-name{font:400 32px/1.2 var(--script);color:var(--wine);margin:10px 0 0}@media (width>=768px){.wish-modal-name{font-size:38px}}@keyframes wish-marquee{to{transform:translate(-50%)}}@keyframes wish-pop-in{0%{opacity:0;transform:scale(.96)}}@keyframes wish-check-in{0%{transform:rotate(-20deg)scale(0)}}@media (prefers-reduced-motion:reduce){.wish-wall.is-moving .wish-viewport{overflow-x:auto;-webkit-mask-image:none;mask-image:none}.wish-wall.is-moving .wish-track{animation:none}}.footer{height:560px;position:relative}.footer img{object-fit:cover;object-position:50% 10%;width:100%;height:100%}.footer:after{content:"";background:linear-gradient(#00000080,#0000 40%);position:absolute;inset:0}@media (width>=768px){.footer{height:680px}}@media (width>=1200px){.footer{height:720px}}.footer-text{z-index:1;text-align:center;color:#fff;text-shadow:0 2px 10px #0009;position:absolute;top:22px;left:0;right:0}.footer-text h2{font:400 28px var(--serif);margin:0}@media (width>=1200px){.footer-text h2{font-size:42px}}.footer-text p{font:400 14px var(--serif);letter-spacing:var(--title-track);margin:0}.bow-line{color:#fff;opacity:.9;width:56px;margin:8px auto}.decor>*,.sprig,.fx-pulse,.fx-heartbeat,.slide{will-change:transform;backface-visibility:hidden}.offscreen,.offscreen *{animation-play-state:paused!important}.offscreen :is(.decor>*,.sprig,.fx-pulse,.fx-heartbeat,.slide,.name-tag>svg){will-change:auto}
