:root{--paper:#faf8f0;--cream:#efecdd;--sage:#a3ab8a;--sage-light:#e3e6d3;--olive:#6d7553;--olive-deep:#4a5232;--ink:#333a24;--line:#c8cdb2;--serif:"Cormorant Garamond",Georgia,serif;--sans:"Be Vietnam Pro",system-ui,sans-serif;--noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E")}*{box-sizing:border-box}html{scroll-behavior:smooth}html,body{overflow-x:clip}body{background:var(--paper);color:var(--ink);font:400 15px/1.65 var(--sans);-webkit-text-size-adjust:100%;margin:0}img{max-width:100%;height:auto;display:block}button,input,textarea,select{font:inherit}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:var(--serif);color:var(--olive-deep);font-weight:500;line-height:1.08}h2{font-size:clamp(2.9rem,6vw,5rem)}a{color:inherit}.wrap{width:min(100% - 36px,1050px);margin-inline:auto}.section{padding:clamp(68px,8vw,105px) 0}html[data-js] main .section{opacity:0;transition:opacity .7s,transform .7s;transform:translateY(26px)}html[data-js] main .section.is-visible{opacity:1;transform:none}@keyframes fade-up{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}html[data-js] main .section .wrap>*{opacity:0}html[data-js] main .section.is-visible .wrap>*{animation:.65s forwards fade-up}html[data-js] main .section.is-visible .wrap>:nth-child(2){animation-delay:.12s}html[data-js] main .section.is-visible .wrap>:nth-child(3){animation-delay:.24s}html[data-js] main .section.is-visible .wrap>:nth-child(4){animation-delay:.36s}html[data-js] main .section.is-visible .wrap>:nth-child(n+5){animation-delay:.48s}::selection{background:var(--sage);color:#fffdf6}.eyebrow{font:600 .72rem/1.5 var(--sans);letter-spacing:.22em;color:var(--olive);margin:0 0 14px}.script-heading{font:italic 500 clamp(3.4rem,8vw,6rem)/1 var(--serif);margin:0 0 30px}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100;background:var(--ink);color:#fff;padding:9px 14px;position:fixed;top:-90px;left:12px}.skip-link:focus{top:0}:where(a,button,input,textarea,select):focus-visible{outline-offset:3px;outline:3px solid #4b6739}section[id]{scroll-margin-top:62px}.topbar{z-index:40;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#faf8f0f2;justify-content:space-between;align-items:center;height:54px;padding:0 max(18px,50vw - 525px);transition:transform .35s;display:flex;position:sticky;top:0}.topbar.is-hidden{transform:translateY(-100%)}.brand{font:600 1.25rem var(--serif);text-decoration:none}.topbar nav{gap:clamp(8px,2vw,24px);display:flex}.topbar nav a{white-space:nowrap;padding:12px 2px;font-size:.75rem;font-weight:600;text-decoration:none;position:relative}.topbar nav a:after{content:"";background:var(--olive);transform-origin:0;height:1px;transition:transform .25s;position:absolute;bottom:9px;left:1px;right:1px;transform:scaleX(0)}.topbar nav a:hover:after,.topbar nav a[aria-current=true]:after{transform:scaleX(1)}.topbar nav a[aria-current=true]{color:var(--olive-deep)}html[data-state=sealed]{overflow:hidden}html[data-state=sealed] .skip-link{visibility:hidden}html[data-state=open] #letter-overlay{display:none}.letter-overlay{z-index:60;isolation:isolate;overscroll-behavior:contain;outline:none;position:fixed;inset:0;overflow:hidden auto}.intro-backdrop{z-index:-1;pointer-events:none;background-color:#f3efe3;background-image:radial-gradient(78% 60% at 50% 46%,#fffdf7 0,#faf7ee 42%,#f1ecdf00 100%),linear-gradient(165deg,#f8f5eb,#e9e4d4);background-position:0 0;background-repeat:repeat;background-size:auto;background-attachment:scroll;background-origin:padding-box;background-clip:border-box;transition:opacity .7s;position:fixed;inset:0}.intro-backdrop:before{content:"";pointer-events:none;background:linear-gradient(112deg,#0000 22%,#fffef880 22.5%,#fffef81f 52%,#0000 52.5%),repeating-linear-gradient(0deg,#9b917709 0 1px,#0000 1px 3px),repeating-linear-gradient(90deg,#9b917707 0 1px,#0000 1px 3px);position:absolute;inset:0}.intro-backdrop:after{content:"";background:var(--noise);opacity:.14;pointer-events:none;mix-blend-mode:multiply;position:absolute;inset:0}.letter-overlay.phase-leaving{pointer-events:none}.intro-botanical-shadow{opacity:.07;filter:grayscale()brightness(.1)blur(11px);pointer-events:none;z-index:-1;width:min(56vw,560px);transition:opacity .6s;position:fixed;top:-120px;right:-120px;transform:rotate(-24deg)}.intro-content{text-align:center;flex-direction:column;justify-content:center;width:min(100% - 40px,640px);min-height:100%;margin:0 auto;padding:clamp(26px,5svh,48px) 0 clamp(18px,3svh,30px);display:flex}.intro-greeting{transition:opacity .45s,transform .6s}.intro-eyebrow{font:500 .62rem/1.5 var(--sans);letter-spacing:.28em;color:var(--olive);margin:0 0 10px}.intro-rule{color:#929879;justify-content:center;align-items:center;gap:12px;margin:4px auto 0;font-size:.65rem;display:flex}.intro-rule:before,.intro-rule:after{content:"";background:linear-gradient(90deg,#0000,#a8ad93);width:34px;height:1px}.intro-rule:after{transform:rotate(180deg)}.intro-stage{padding:clamp(64px,12svh,118px) 0 clamp(34px,5svh,56px);position:relative}.envelope-button{cursor:pointer;perspective:1300px;-webkit-tap-highlight-color:transparent;background:0 0;border:0;width:min(100%,480px);margin:0 auto;padding:0;display:block;position:relative;container-type:inline-size}.envelope-button:focus-visible{outline-offset:26px;border-radius:8px}.envelope-button:disabled{cursor:default}.envelope-scene{aspect-ratio:400/210;width:100%;transform:rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg)) rotate(-3deg);transition:transform .7s cubic-bezier(.22,.68,.25,1),opacity .5s;display:block;position:relative}@keyframes envelope-settle{0%{opacity:0;translate:0 22px}to{opacity:1;translate:0}}.phase-sealed .envelope-scene{animation:1.1s cubic-bezier(.2,.7,.3,1) both envelope-settle}.intro-underlay{z-index:0;background:#fdfaf1 url(/assets/00-nen-giay-5-trang-800w.webp) 50%/cover;border:1px solid #e4decb;position:absolute;inset:-4% 3% 4% -1%;transform:rotate(5deg)translate(8px,6px);box-shadow:0 1px 2px #3a422826,0 10px 22px -8px #3a422838}.intro-underlay:after{content:"";border:1px solid #c4c6aa66;position:absolute;inset:9px}.env-ground{z-index:1;pointer-events:none;transform:translate(var(--shadow-x,0px),var(--shadow-y,0px));transition:transform .7s cubic-bezier(.22,.68,.25,1);position:absolute;inset:0}.env-ground:before{content:"";opacity:.5;filter:blur(3px);background:#2f3823;border-radius:6px;position:absolute;inset:1.5% .5% -1.5%;transform:translateY(3px)}.env-ground:after{content:"";opacity:.3;filter:blur(22px);background:#2f3823;border-radius:12px;transition:opacity .45s,transform .45s;position:absolute;inset:8% -1% -7% 1%;transform:translate(10px,24px)}.env{z-index:2;perspective:900px;border-radius:5px;position:absolute;inset:0}.env-face{pointer-events:none;position:absolute;inset:0}.env-face>svg{width:100%;height:100%;display:block;overflow:visible}.env-back{z-index:1;border-radius:5px;overflow:hidden}.env-back:after{content:"";border-radius:5px;position:absolute;inset:0;box-shadow:inset 0 12px 20px -10px #1d241466}.env-card{z-index:2;text-align:center;color:#f6f2e9;background:0 0;flex-direction:column;justify-content:center;align-items:center;gap:6%;padding:6% 5%;transition:transform 1.05s cubic-bezier(.2,.7,.25,1) 1.05s,box-shadow 1.05s 1.05s;display:flex;position:absolute;inset:2.5% 6% 7%;box-shadow:0 1px 2px #2b332055,0 6px 14px -4px #2b332066}.env-card>.env-card-paper{object-fit:fill;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.env-card small{font:500 clamp(.42rem,1.6vw,.6rem)/1.3 var(--sans);letter-spacing:.26em;color:#e6e2d2}.env-card strong{font:600 clamp(1.15rem,5.4vw,1.9rem)/1 var(--serif);color:#fbf8ef;flex-direction:column;align-items:center;display:flex}.env-card strong em{color:#e6e2d2;font-size:.6em;font-style:italic;font-weight:400;line-height:1.25}.env-card>span{font:500 clamp(.48rem,1.7vw,.64rem)/1.3 var(--sans);letter-spacing:.2em;color:#e6e2d2}.env-card>:not(.env-card-paper){transition:opacity .3s;position:relative}.env-pocket{z-index:3}.env-flap-shadow{z-index:4;transition:opacity .55s .15s,transform .9s .15s}.env-flap{z-index:6;transform-origin:50% 0;height:82.86%;transform-style:preserve-3d;transition:transform 1.15s cubic-bezier(.45,.02,.2,1) .25s,z-index 0s .95s;position:absolute;top:0;left:0;right:0}.flap-face{backface-visibility:hidden;width:100%;height:100%;display:block;position:absolute;inset:0;overflow:visible}.flap-back{transform:rotateX(180deg)}.env-tag{z-index:7;pointer-events:none;position:absolute;inset:0}.env-tag-card{text-align:center;width:64%;min-height:27%;color:var(--olive-deep);background:#f7f3e8 url(/assets/00-nen-giay-5-trang-800w.webp) 50%/cover;border:1px solid #e3dcc7;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:7% 4% 3%;transition:transform .5s cubic-bezier(.4,0,.6,1) 50ms,opacity .4s .1s;display:flex;position:absolute;top:11%;left:8%;transform:rotate(-2.5deg);box-shadow:0 1px 1px #2b332040,1px 4px 7px -2px #2b332052}.env-tag-card:before{content:"";pointer-events:none;border:1px solid #c4c6aa66;position:absolute;inset:4px}.env-tag-card small{font:400 clamp(.85rem,3.8cqw,1.15rem)/1.15 "Great Vibes",var(--serif);color:var(--olive)}.env-tag-card strong{font:italic 600 clamp(.8rem,3.8cqw,1.15rem)/1.25 var(--serif);text-wrap:balance;overflow-wrap:anywhere;min-width:0;max-width:100%}.env-twine{filter:drop-shadow(0 1px .6px #2b33204d);width:100%;height:100%;position:absolute;inset:0;overflow:visible}.env-twine-strands,.env-twine-knot{transition:transform .5s cubic-bezier(.4,0,.6,1),opacity .35s .1s}.envelope-wax{z-index:7;aspect-ratio:320/308;filter:drop-shadow(0 1px 1px #2b332055)drop-shadow(2px 5px 6px #2b332044);width:21%;transition:transform .4s cubic-bezier(.4,0,.6,1),opacity .35s,filter .3s;position:absolute;top:80%;left:50%;transform:translate(-50%,-50%)rotate(-6deg)}.envelope-wax img{object-fit:contain;width:100%;height:100%}.envelope-wax>span{font:400 clamp(1.3rem,5.6vw,2rem)/1 "Great Vibes",var(--serif);color:#768066;text-shadow:0 1px 1px #fffdf2;place-items:center;padding-bottom:3%;display:grid;position:absolute;inset:0}.envelope-wax:after{content:"";pointer-events:none;background:radial-gradient(at 32% 22%,#fffdf54d,#0000 65%);border-radius:50%;position:absolute;inset:12%}@media (hover:hover){.env,.intro-flower{transition:translate .45s}.envelope-button:not(:disabled):hover .env,.envelope-button:not(:disabled):hover .intro-flower{translate:0 -4px}.envelope-button:not(:disabled):hover .env-ground:after{opacity:.36;transform:translate(12px,30px)}.envelope-button:not(:disabled):hover .envelope-wax{filter:drop-shadow(0 2px 1px #2b332055)drop-shadow(3px 8px 8px #2b332044)}}@keyframes hint-pulse{0%{opacity:.85;transform:translate(-50%,-50%)scale(.85)}70%,to{opacity:0;transform:translate(-50%,-50%)scale(1.6)}}.env-hint{z-index:6;aspect-ratio:1;opacity:0;pointer-events:none;border:1.5px solid #fffdf5;border-radius:50%;width:21%;animation:2.8s ease-out 1.6s infinite hint-pulse;position:absolute;top:80%;left:50%}.intro-flower{z-index:8;filter:drop-shadow(6px 10px 8px #2b332042);pointer-events:none;width:44%;position:absolute;bottom:-19%;left:-13%;transform:rotate(-12deg)}@keyframes hint-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.intro-tap{font:500 .58rem/1.5 var(--sans);letter-spacing:.24em;text-transform:uppercase;color:#6f785d;flex-direction:column;align-items:center;gap:6px;margin:20px 0 0;transition:opacity .3s;display:flex}.intro-tap svg{opacity:.8;animation:2.2s ease-in-out infinite hint-bob}.intro-tap-mouse{display:none}@media (hover:hover) and (pointer:fine){.intro-tap-touch{display:none}.intro-tap-mouse{display:inline}}.phase-opening .intro-greeting,.phase-leaving .intro-greeting{opacity:0;transform:translateY(-14px)}.phase-opening .intro-tap,.phase-leaving .intro-tap,.phase-opening .env-hint,.phase-leaving .env-hint{opacity:0;animation:none}.phase-opening .envelope-scene,.phase-leaving .envelope-scene{transform:rotate(0)}.phase-opening .envelope-wax,.phase-leaving .envelope-wax{opacity:0;transform:translate(-50%,-62%)rotate(4deg)scale(1.2)}.phase-opening .env-twine-strands,.phase-leaving .env-twine-strands{opacity:0;transform:translate(9%,-4%)}.phase-opening .env-twine-knot,.phase-leaving .env-twine-knot{opacity:0;transform:translate(14%,-9%)}.phase-opening .env-tag-card,.phase-leaving .env-tag-card{opacity:0;transform:translate(-7%,-14%)rotate(-9deg)scale(1.04)}.phase-opening .env-flap-shadow,.phase-leaving .env-flap-shadow{opacity:0;transform:translateY(-8%)}.phase-opening .env-flap,.phase-leaving .env-flap{z-index:1;transform:rotateX(-178deg)}.phase-opening .env-card,.phase-leaving .env-card{transform:translateY(-66%)rotate(-1deg);box-shadow:0 2px 3px #3a422833,0 18px 34px -10px #3a422859}.phase-leaving .intro-backdrop,.phase-leaving .intro-botanical-shadow,.phase-leaving .intro-footer,.phase-leaving .intro-tap{opacity:0}.phase-leaving .intro-footer,.phase-leaving .intro-tap{transition:opacity .35s}.phase-leaving .env-face,.phase-leaving .env-flap,.phase-leaving .env-ground,.phase-leaving .intro-underlay,.phase-leaving .intro-flower,.phase-leaving .env-tag{opacity:0;transition:opacity .5s 50ms,translate .65s cubic-bezier(.4,0,.6,1);translate:0 28px}.phase-leaving .env-card{transform:translate(var(--fx,0px),var(--fy,0px)) translateY(-66%) rotate(-5deg) scale(var(--sx,1),var(--sy,1));transition:transform .85s cubic-bezier(.35,.55,.2,1),box-shadow .85s;box-shadow:0 6px 9px #303b2733}.phase-leaving .env-card>:not(.env-card-paper){opacity:0}.intro-footer{padding-top:10px}.intro-footer:before{content:"";background:linear-gradient(90deg,#0000,#a8ad93,#0000);width:36px;height:1px;margin:0 auto 22px;display:block}.intro-names{font:italic 500 clamp(1.7rem,5vw,2.4rem)/1.15 var(--serif);color:var(--olive-deep);letter-spacing:-.015em;margin:0}.intro-content h1 span,.hero-footer h1 span{color:var(--olive);font-style:italic}.intro-names span{margin:0 .06em;font-size:.72em}.intro-date{font:500 .68rem/1.5 var(--sans);letter-spacing:.28em;color:var(--olive);margin:12px 0 0}@media (max-height:760px){.intro-content{padding-block:22px 14px}.intro-rule{margin-top:12px}.intro-stage{padding:clamp(48px,9svh,80px) 0 clamp(30px,4svh,44px)}.envelope-button{width:min(92%,400px)}.intro-names{font-size:clamp(1.6rem,5vw,2.1rem)}}@media (max-height:620px){.intro-content{padding-block:16px 10px}.intro-eyebrow{margin-bottom:6px;font-size:.55rem}.intro-rule{margin-top:8px}.intro-stage{padding:44px 0 26px}.envelope-button{width:min(80%,300px)}.intro-tap{margin-top:12px}.intro-names{font-size:1.9rem}.intro-date{margin-top:7px}.intro-footer:before{margin-bottom:14px}}@media (max-height:450px) and (orientation:landscape){.intro-content{padding-block:10px}.intro-stage{padding:28px 0 14px}.envelope-button{width:min(65%,230px)}.intro-tap{gap:3px;margin-top:8px}.intro-footer{padding-top:4px}.intro-footer:before{margin-bottom:8px}.intro-names{font-size:1.5rem}.intro-date{margin-top:5px}}@media (prefers-reduced-motion:reduce){.letter-overlay,.intro-greeting,.envelope-scene,.env-ground,.env-card,.env-flap,.env-flap-shadow,.envelope-wax,.intro-backdrop,.env-tag-card,.env-twine-strands,.env-twine-knot{transition:none!important}.intro-tap svg{animation:none}.envelope-scene{animation:none!important;transform:rotate(-3deg)!important}.env-hint{opacity:0;animation:none}}.hero{text-align:center;padding-top:50px}.guest-greeting{font:italic 1.35rem var(--serif);margin:0}.hero-layout{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);align-items:center;gap:clamp(24px,4vw,60px);margin-top:14px;display:grid}.invitation-art{aspect-ratio:1/1.12;background:linear-gradient(145deg,#fffefa,var(--cream));isolation:isolate;width:100%;margin:0 auto;position:relative;overflow:hidden}.art-envelope{z-index:1;filter:drop-shadow(0 5px 8px #303b2729);width:43%;position:absolute;top:0;left:29%}.art-flower{z-index:6;pointer-events:none;position:absolute}.art-flower-top{width:26%;top:16%;left:8%}.art-flower-bottom{z-index:2;width:20%;top:46%;right:-2%}.art-card{z-index:3;filter:drop-shadow(0 6px 9px #303b2733);position:absolute}.art-card>img{width:100%}.art-name{width:37%;top:20%;left:14%;transform:rotate(-5deg)}.art-day{width:35%;top:20%;right:13%;transform:rotate(4deg)}.art-card-content{text-align:center;color:var(--cream);flex-direction:column;justify-content:center;align-items:center;gap:5px;line-height:1.15;display:flex;position:absolute;inset:18% 14%}.art-card-content small{font:.58rem var(--sans);letter-spacing:.1em}.art-card-content strong{font:600 clamp(1.2rem,3.1vw,2rem)/1.1 var(--serif)}.art-card-content em{font-weight:400}.art-card-content span{font-size:.7rem}.art-day-content{color:var(--ink)}.art-day-content strong{font-size:clamp(2.5rem,6vw,4rem)}.art-polaroid{z-index:5;filter:drop-shadow(0 4px 6px #303b2733);width:28%;position:absolute}.art-polaroid>img{z-index:2;pointer-events:none;width:100%;position:relative}.art-polaroid .photo-space{z-index:1;position:absolute}.art-polaroid .photo-space.has-photo>img{position:absolute;inset:0}.art-photo-one{bottom:2%;left:9%;transform:rotate(-8deg)}.art-photo-one .photo-space{inset:12% 14% 27%}.art-photo-two{width:36%;bottom:4%;right:10%;transform:rotate(7deg)}.art-photo-two .photo-space{inset:14% 12% 29%}.art-countdown{z-index:7;width:26%;position:absolute;top:44%;right:4%}@keyframes art-drift{0%,to{translate:0}50%{translate:0 -7px}}.art-card,.art-polaroid,.art-countdown,.art-flower{animation:6s ease-in-out infinite art-drift}.art-day{animation-delay:1.2s}.art-photo-one{animation-duration:7s;animation-delay:.6s}.art-photo-two{animation-duration:7s;animation-delay:1.8s}.art-countdown{animation-duration:7.5s;animation-delay:2.4s}.art-flower-top{animation-duration:8.5s;animation-delay:3s}.art-flower-bottom{animation-duration:8.5s;animation-delay:4.2s}@media (hover:hover){.art-card,.art-polaroid{transition:scale .35s}.art-card:hover,.art-polaroid:hover{scale:1.03}}.countdown-badge{filter:drop-shadow(0 6px 10px #333a2447);width:100%;position:relative}.countdown-badge>img{width:100%}.countdown-badge-content{color:#f4f2e6;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:4%;padding:12%;display:flex;position:absolute;inset:0}.countdown-badge-content small{font:600 clamp(.45rem,1vw,.62rem)/1 var(--sans);letter-spacing:.22em}.countdown-badge-content strong{font:600 clamp(.72rem,1.7vw,1.15rem)/1 var(--serif);font-variant-numeric:tabular-nums;white-space:nowrap}.countdown-badge-content span{font:400 clamp(.38rem,.9vw,.52rem)/1 var(--sans);letter-spacing:.08em;opacity:.85}.hero-footer h1{font:italic 500 clamp(2.4rem,4vw,3.6rem)/1.15 var(--serif);letter-spacing:.02em;margin:0}.hero-invite{color:#5c6550;max-width:330px;margin:16px auto 0;font-size:.92rem;line-height:1.7}.hero-footer a{font:italic 1.2rem var(--serif);text-underline-offset:4px;margin-top:24px;display:inline-block}.photo-space{color:#3f513b;text-align:center;background:linear-gradient(145deg,#dce3d6,#acbba6 60%,#d6ddce);place-items:center;display:grid;overflow:hidden}.photo-space span{font:500 clamp(.85rem,2vw,1.2rem)/1.35 var(--serif);padding:10px}.photo-space small{font:400 .6rem var(--sans);margin-top:5px;display:block}.photo-space.has-photo{background:#e6e4d6;place-items:stretch stretch}.photo-space.has-photo>img{object-fit:cover;width:100%;height:100%}.art-photo-two .photo-space.has-photo>img{object-position:50% 35%}@media (hover:hover){.portrait .photo-space.has-photo>img,.mini-photo .photo-space.has-photo>img{transition:transform .6s}.portrait .photo-space.has-photo:hover>img,.mini-photo .photo-space.has-photo:hover>img{transform:scale(1.045)}}.couple{padding-top:0}.couple-banner{background:var(--sage-light);text-align:center;padding:75px 0 0}.couple-banner h2{font:italic 500 clamp(2.4rem,6vw,4.2rem)/1.2 var(--serif);margin:0 0 35px}.couple-main-photo{aspect-ratio:2/3;width:min(100%,560px);margin:auto}.couple-portraits{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;max-width:820px;padding-top:70px;display:grid}.portrait-groom{text-align:left;min-width:0}.portrait-bride{text-align:right;min-width:0;margin-top:18%}.portrait .photo-space{aspect-ratio:2/3;border:6px solid #fffdf5;width:100%;box-shadow:0 14px 30px #333a2438}.event{text-align:center}.names-heading{text-transform:uppercase;letter-spacing:.1em;margin:0 auto 35px;font-size:clamp(2.4rem,6vw,4.4rem)}.names-heading span{color:var(--olive);font-size:.6em;font-style:italic;display:block}.ceremony-grid{grid-template-columns:1fr;max-width:480px;margin:auto;display:grid}.ceremony-card{border:1px solid var(--olive);background:#fffefa;padding:35px 26px 40px;position:relative}.ceremony-flower{pointer-events:none;filter:drop-shadow(0 4px 6px #333a242e);width:92px;position:absolute;top:-34px;right:-10px;transform:rotate(14deg)}.ceremony-label{background:var(--olive);color:#fff;width:max-content;max-width:100%;font:600 .8rem var(--sans);border-radius:999px;margin:-54px auto 20px;padding:7px 25px}.ceremony-invite{font:500 1.3rem/1.3 var(--serif);max-width:260px;margin:0 auto 20px}.ceremony-date{justify-content:center;align-items:center;padding:8px 0;display:flex}.ceremony-date span{letter-spacing:.08em;white-space:nowrap;padding-inline:16px;font-size:.72rem;line-height:1.3}.ceremony-date strong{font:500 5rem/.9 var(--serif);color:var(--olive-deep);border-inline:1px solid var(--olive);padding-inline:20px}.ceremony-time{font:500 1.3rem var(--serif);margin:14px 0 0}.ceremony-lunar{color:#6c7665;margin:4px 0 0;font-size:.74rem}.ceremony-venue{text-align:center;max-width:370px;margin:22px auto 0;padding-top:21px}.ceremony-venue:before{content:"";background:var(--olive);width:46px;height:1px;margin:0 auto 17px;display:block}.ceremony-place-label{font:italic 1.05rem var(--serif);color:var(--olive);margin:0 0 3px}.ceremony-hall{font:500 1.32rem/1.35 var(--serif);color:var(--olive-deep);text-wrap:balance;margin:0 0 9px}.ceremony-hall span{color:var(--olive);font-style:italic;font-weight:400}.ceremony-place{font:600 1.4rem/1.3 var(--serif);margin:0 auto}.ceremony-place-brand{max-width:340px;font:700 .9rem/1.5 var(--sans);letter-spacing:.08em;text-wrap:balance}.ceremony-address{max-width:330px;font:500 .73rem/1.6 var(--sans);letter-spacing:.055em;color:#5f6958;text-wrap:balance;margin:10px auto 0}.map-button{border:1px solid var(--olive);color:var(--olive);font:600 .72rem/1 var(--sans);letter-spacing:.14em;border-radius:999px;align-items:center;gap:7px;margin-top:18px;padding:9px 22px;text-decoration:none;transition:background .2s,color .2s;display:inline-flex}.map-button svg{flex:none}a.map-button:hover{background:var(--olive);color:#fff}.calendar-section{background:var(--cream)}.calendar-layout{grid-template-columns:1.15fr .85fr;align-items:center;gap:50px;display:grid}.calendar-paper{text-align:center;background:#fffefa url(/assets/00-nen-giay-5-trang-800w.webp) 50%/cover;padding:clamp(25px,5vw,55px);box-shadow:0 12px 30px #303b2714}.calendar-paper .script-heading{margin-bottom:25px;font-size:clamp(3rem,6vw,5rem)}.calendar{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;display:grid}.calendar .dow{color:var(--olive);font-size:.72rem;font-weight:600}.calendar .day{aspect-ratio:1;place-items:center;font-size:.8rem;display:grid}.calendar .day.mark{color:var(--olive-deep);font-weight:700;position:relative}.calendar .day.mark:before{content:"";background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 21C7 16.6 3 13 3 8.9 3 6.2 5.2 4 7.9 4c1.6 0 3.1.8 4.1 2.1C13 4.8 14.5 4 16.1 4 18.8 4 21 6.2 21 8.9c0 4.1-4 7.7-9 12.1Z' fill='none' stroke='%236d7553' stroke-width='1.4'/%3E%3C/svg%3E") 50%/contain no-repeat;position:absolute;inset:-14%}@keyframes heart-pop{0%{opacity:0;transform:scale(0)}65%{transform:scale(1.22)}to{opacity:1;transform:scale(1)}}html[data-js] .calendar-section.is-visible .calendar .day.mark:before{animation:.7s .55s backwards heart-pop}.calendar .day.blank{visibility:hidden}.calendar-caption{font:italic 1.4rem var(--serif);margin:20px 0 0}.calendar-aside{text-align:center}.mini-photo{width:min(220px,60%);margin:0 auto 18px;position:relative}.mini-photo .photo-space{position:absolute;inset:12% 14% 27%}.mini-photo img{z-index:1;position:relative}.calendar-aside>p{font:italic 2.5rem var(--serif);margin:0 0 15px}.calendar-aside .save-note{font:400 .88rem/1.6 var(--sans);color:#5c6550;max-width:260px;margin:0 auto}.add-calendar{border:1px solid var(--olive);color:var(--olive);font:600 .72rem/1 var(--sans);letter-spacing:.14em;cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:7px;margin-top:16px;padding:10px 24px;transition:background .2s,color .2s;display:inline-flex}.add-calendar:hover{background:var(--olive);color:#fff}.add-calendar svg{flex:none}.timeline-section{text-align:center}.timeline-list{gap:0;max-width:630px;margin:0 auto;display:grid}.timeline-list>div{text-align:left;border-bottom:1px solid var(--line);grid-template-columns:70px 1fr;align-items:center;gap:16px;padding:18px 5px;display:grid}html[data-js] .timeline-section.is-visible .timeline-list>div{animation:.6s backwards fade-up}html[data-js] .timeline-section.is-visible .timeline-list>div:nth-child(2){animation-delay:.18s}html[data-js] .timeline-section.is-visible .timeline-list>div:nth-child(3){animation-delay:.36s}.timeline-list img{object-fit:contain;width:54px;height:54px}.timeline-list strong{font:600 1.5rem/1.1 var(--serif);color:var(--olive-deep);display:block}.timeline-list span{font:600 .78rem/1.4 var(--sans);letter-spacing:.06em;color:var(--olive);margin-top:2px;display:block}.timeline-list p{color:#66715e;margin:3px 0 0;font-size:.83rem}.rsvp{text-align:center;background:var(--cream);padding:clamp(68px,8vw,100px) 0}.rsvp-wrap{max-width:620px}.rsvp h2{margin-bottom:14px}.rsvp-wrap>p:nth-of-type(2){font:500 1.2rem/1.4 var(--serif);max-width:450px;margin:0 auto 30px}#rsvp-form{text-align:left;gap:9px;display:grid}.form-honeypot{opacity:0!important;pointer-events:none!important;width:1px!important;height:1px!important;position:absolute!important;left:-10000px!important}.rsvp-invitee{border:1px solid var(--line);color:var(--olive-deep);font:500 .92rem/1.45 var(--serif);background:#fffefa;border-radius:16px;margin:0 0 4px;padding:11px 14px}#f-side-wrap,#f-transport-wrap{gap:9px;display:grid}#f-side-wrap[hidden],#f-transport-wrap[hidden]{display:none}#rsvp-form>label,#rsvp-form legend,#f-side-wrap label,#f-transport-wrap label{margin:7px 0 0;font-size:.8rem;font-weight:600}#rsvp-form input[type=text],#rsvp-form textarea,#rsvp-form select{border:1px solid var(--olive);width:100%;min-height:46px;color:var(--ink);background:#fff;border-radius:999px;padding:10px 14px;font-size:16px}#rsvp-form textarea{resize:vertical;border-radius:20px}.rsvp-select{min-width:0;position:relative}.rsvp-select[hidden],#rsvp-form .rsvp-select-native{display:none}.rsvp-select-trigger{border:1px solid var(--olive);width:100%;min-height:46px;color:var(--ink);text-align:left;cursor:pointer;background:#fff;border-radius:24px;justify-content:space-between;align-items:center;gap:16px;padding:10px 20px;font-size:16px;display:flex}.rsvp-select-trigger>span{overflow-wrap:anywhere;min-width:0}.rsvp-select-trigger svg{fill:none;stroke:var(--olive-deep);stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;flex:none;transition:transform .18s}.rsvp-select.is-open{z-index:10}.rsvp-select.is-open .rsvp-select-trigger svg{transform:rotate(180deg)}.rsvp-select-trigger:disabled{opacity:.6;cursor:default}.rsvp-select-menu{overscroll-behavior:contain;border:1px solid var(--olive);background:#fffefa;border-radius:18px;max-height:240px;padding:6px;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 22px #303b2726}.rsvp-select-option{cursor:pointer;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;min-height:44px;padding:10px 14px;font-size:16px;line-height:1.5;display:flex}.rsvp-select-option.is-active{background:var(--sage-light)}.rsvp-select-option[aria-selected=true]{color:var(--olive-deep);font-weight:600}#rsvp-form fieldset{border:0;margin:5px 0;padding:0}#rsvp-form fieldset label{align-items:center;gap:5px;margin:5px 16px 5px 0;font-size:.85rem;display:inline-flex}#rsvp-form input[type=radio]{accent-color:var(--olive)}.field-error{color:#a1362a;margin:0;font-size:.77rem}.button{cursor:pointer;border-radius:999px;min-height:46px;padding:10px 24px;font-weight:600;text-decoration:none;transition:transform .2s,background .2s}.button:hover{transform:translateY(-2px)}.button-solid{border:1px solid var(--olive);background:var(--olive);color:#fff}#rsvp-form .button{width:100%;margin-top:10px}.music-toggle{z-index:50;border:1px solid var(--line);width:46px;height:46px;color:var(--olive);cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#fffefad9;border-radius:50%;place-items:center;transition:background .2s,color .2s;display:grid;position:fixed;bottom:18px;right:16px;box-shadow:0 4px 12px #333a2433}.music-toggle.is-playing{background:var(--olive);border-color:var(--olive);color:#fff}.form-status{color:#546247;min-height:1.3em;margin:0;font-size:.82rem}.form-status:not(:empty){animation:.4s fade-up}.form-status.is-ok{color:var(--olive-deep);font-weight:600}.ending{text-align:center;background:var(--olive);color:#fff;padding:70px 0}.ending .eyebrow{color:#e8eddf}.ending h2{font:italic 500 clamp(3.5rem,8vw,6rem) var(--serif);color:var(--paper);margin:0 0 12px}.ending p:nth-of-type(2){font:500 1.25rem var(--serif)}.ending a{text-underline-offset:4px;font-size:.82rem}@media (max-width:700px){.section{padding:65px 0}.hero{padding-top:36px}.hero-layout{grid-template-columns:1fr;gap:0}.invitation-art{aspect-ratio:1/1.28}.art-envelope{width:55%;left:22.5%}.art-flower-top{width:31%;top:16%;left:1%}.art-flower-bottom{width:21%;top:45%;right:-3%}.art-name{width:44%;top:20%;left:6%}.art-day{width:41%;top:21%;right:6%}.art-photo-one{width:36%;bottom:2%;left:5%}.art-photo-two{width:43%;bottom:5%;right:5%}.art-countdown{width:30%;top:53%;right:2%}.art-card-content{gap:2px}.art-card-content small{font-size:.42rem}.art-card-content strong{font-size:clamp(.9rem,4vw,1.35rem)}.art-card-content span{font-size:.55rem}.art-day-content strong{font-size:clamp(2rem,9vw,3rem)}.hero-footer{padding-top:20px}.couple-banner{padding-top:60px}.couple-portraits{gap:12px;padding-top:65px}.calendar-layout{grid-template-columns:1fr;gap:30px}.calendar-aside{text-align:left;grid-template-columns:110px 1fr;align-items:center;gap:0 18px;display:grid}.mini-photo{grid-row:1/4;width:100%}.calendar-aside>p{font-size:2rem}.calendar-aside small{margin:7px 0}}@media (max-width:500px){.topbar{padding-inline:12px}.topbar nav{gap:10px}.topbar nav a{font-size:.67rem}.hero-footer h1{font-size:1.9rem}.portrait .photo-space{border-width:4px}.ceremony-date span{padding-inline:10px;font-size:.66rem}.ceremony-date strong{padding-inline:14px;font-size:4rem}.calendar-paper{padding:26px 18px}.calendar-aside{grid-template-columns:85px 1fr;gap:0 10px}.timeline-list>div{grid-template-columns:46px 1fr;gap:12px}.timeline-list img{width:42px;height:42px}.timeline-list strong{font-size:1.35rem}}@media (max-width:340px){.topbar nav{gap:5px}.topbar nav a{font-size:.62rem}.art-card-content strong{font-size:.78rem}.art-day-content strong{font-size:1.8rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.button{transition:none!important}.button:hover{transform:none}.art-card,.art-polaroid,.art-countdown,.art-flower,.timeline-list>div,.calendar .day.mark:before,.form-status,.couple-main-photo.has-photo>img{animation:none!important}html[data-js] main .section,html[data-js] main .section .wrap>*{opacity:1;transition:none;animation:none;transform:none}.topbar{transition:none}.topbar.is-hidden{transform:none}.topbar nav a:after{transition:none}}
