@font-face{font-family:Cormorant;src:url('assets/cormorant.woff') format('woff');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Cormorant;src:url('assets/cormorant-italic.woff') format('woff');font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:Be;src:url('assets/be-vietnam.woff') format('woff');font-weight:400;font-display:swap}
:root{--cream:#fcf7f0;--ink:#5c413d;--wine:#843d4a;--rose:#bc7f8a;--gold:#aa8652;--muted:#8d766a;--line:#ddc7b0;--serif:Cormorant,Georgia,serif;--sans:Be,Arial,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0;background:radial-gradient(ellipse at 5% 10%,#e8c4c645,transparent 45%),radial-gradient(ellipse at 95% 70%,#dec79b45,transparent 45%),#eee4d9;color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.9}body:has(dialog[open]){overflow:hidden}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--wine);outline-offset:5px}h1,h2,h3,p,figure,dl,dd{margin:0}h1,h2,h3{font-weight:400}img,svg{display:block}img{max-width:100%}button{border:0}::selection{background:#ead0ca}strong{font-weight:600}.svg-defs{display:none}main,.masthead,.footer{max-width:680px;margin:auto;background:var(--cream)}main{position:relative;isolation:isolate;box-shadow:0 40px 100px #7f5b4320}.masthead{display:flex;justify-content:space-between;align-items:center;padding:17px 30px 13px;position:relative;z-index:2;border-bottom:1px solid #dbc6b13d}.masthead>span{font-size:9px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}.monogram{font:italic 25px/1 var(--serif);color:var(--wine);letter-spacing:-.07em}.header-date{font-size:9px;letter-spacing:.08em;color:var(--gold)}.reading-progress{position:fixed;top:0;left:0;height:2px;background:linear-gradient(90deg,#d9b58b,#a15f70);width:0;z-index:50}.eyebrow{font-size:9px;letter-spacing:.2em;text-transform:uppercase;line-height:1.9;color:var(--gold)}.section{position:relative;padding:70px 30px}.section-inner{max-width:470px;margin:auto;text-align:center;position:relative;z-index:1}.section h2{font:400 45px/1.05 var(--serif);letter-spacing:-.02em;color:var(--wine);margin:15px 0 26px}.section h2 em{font-weight:400;display:inline-block;color:#a66d79}.section .lotus-mark{width:48px;height:34px;margin:0 auto 24px;color:var(--gold)}.floral{position:relative;isolation:isolate}.floral:before{content:'';position:absolute;inset:0;background:url('assets/floral-embossed.webp') center top/100% auto no-repeat;z-index:-1;pointer-events:none}.hero{padding:31px 36px 42px;text-align:center;overflow:hidden}.hero:before{opacity:.20}.hero-heading{position:relative;z-index:1}.hero-heading>.eyebrow{font-size:9px;letter-spacing:.2em;color:#9b7457}.hero h1{font:400 82px/.86 var(--serif);letter-spacing:-.04em;color:var(--wine);margin:20px 0 17px;text-shadow:0 2px 18px var(--cream)}.hero h1 em{display:block;font-size:91px;color:#ac6876;font-weight:400;margin:0 0 0 15px;line-height:.96;letter-spacing:-.035em}.ornamental-rule{display:flex;justify-content:center;align-items:center;gap:15px;color:var(--gold);margin:21px auto 28px}.ornamental-rule span{width:50px;height:1px;background:linear-gradient(90deg,transparent,#bd9e76)}.ornamental-rule span:last-child{transform:rotate(180deg)}.ornamental-rule svg{width:34px;height:24px}.portrait-composition{width:76%;max-width:365px;margin:0 auto;position:relative}.portrait-frame{width:100%;display:block;padding:9px;background:#fffdf9;border:1px solid #d9bc89;box-shadow:0 15px 45px #7b543526,0 0 0 4px #fffaf044,0 0 0 5px #bfa07866;position:relative;z-index:1}.portrait-frame img{width:100%;height:auto}.portrait-frame:before,.portrait-frame:after{content:'';position:absolute;pointer-events:none;width:27px;height:27px;border:1px solid #ae8b50}.portrait-frame:before{top:-8px;left:-8px;border-right:0;border-bottom:0}.portrait-frame:after{bottom:-8px;right:-8px;border-left:0;border-top:0}.portrait-halo{position:absolute;inset:-24px -32px;background:radial-gradient(ellipse,#d2a98345,transparent 65%);border:1px solid #d2bb9855;border-radius:48% 48% 47% 47%;transform:rotate(-9deg)}.photo-cue{position:absolute;right:17px;bottom:18px;color:white;font-size:9px;text-shadow:0 1px 7px #000;background:#40251e55;border:1px solid #ffffff66;padding:3px 10px;border-radius:20px;opacity:.85}.date-seal{width:82px;height:82px;border-radius:50%;background:linear-gradient(145deg,#fffaf0,#f2dfca);box-shadow:0 3px 18px #92684920,0 0 0 5px #fcf7f0ab;position:absolute;bottom:-21px;right:-29px;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--wine);border:1px solid #b99a6977;outline:1px solid #cdb38a;outline-offset:-5px}.date-seal span{font-size:8px;line-height:1.4;letter-spacing:.1em}.date-seal strong{font:400 34px/.9 var(--serif);margin:3px 0}.portrait-sparkle{position:absolute;fill:#c6a166;width:21px;height:27px;z-index:2;animation:twinkle 4s ease-in-out infinite;pointer-events:none}.sparkle-one{left:-30px;top:20%}.sparkle-two{right:-27px;top:51%;width:14px;animation-delay:1.7s}.host{padding-top:48px;position:relative}.host .eyebrow{font-size:9px}.host h2{font:400 34px/1.3 var(--serif);color:var(--ink);margin-top:7px;letter-spacing:-.02em}.alias-label{font-size:9px;color:var(--muted);margin-top:15px}.alias{font:italic 57px/1.1 var(--serif);color:var(--wine);letter-spacing:-.04em;margin-top:3px}.scroll-invite{display:flex;flex-direction:column;align-items:center;gap:7px;margin:24px auto 0;color:var(--muted);font-size:9px;letter-spacing:.08em;width:fit-content;padding:8px 15px}.scroll-invite svg{width:17px;height:21px;color:var(--gold);animation:float 4s ease-in-out infinite}.welcome{background:linear-gradient(140deg,#f3e1db,#f8ede4 50%,#eedbd8);border-radius:50% 50% 0 0/24px 24px 0 0;padding-top:65px;padding-bottom:58px}.welcome:before{content:'';position:absolute;inset:12px;border:1px solid #fff9ed88;border-radius:50% 50% 0 0/20px 20px 0 0;pointer-events:none}.body-copy{font-size:12px;line-height:2.15;color:#785b52}.body-copy strong{color:var(--wine)}.welcome .ceremony-name{font:italic 44px/1.2 var(--serif);color:var(--wine);margin:22px 0 17px}.ceremony-lines{color:#88674f;font:400 22px/1.45 var(--serif)}.ceremony-lines span{display:block;color:#b18c5c;font-family:var(--sans);font-size:12px;line-height:1.7;margin:5px 0}.fine-rule{height:1px;width:67px;margin:25px auto;background:linear-gradient(90deg,transparent,#b79465,transparent)}.welcome-end{font-size:11px}.date-section{padding-top:63px;padding-bottom:65px}.date-section:before{opacity:.29;background-position:center center}.date-section h2{margin-bottom:25px}.date-card{max-width:390px;margin:0 auto;padding:26px 20px 25px;background:#fffaf4d9;border:1px solid #dec8ad;border-radius:120px 120px 18px 18px;box-shadow:0 12px 35px #8a604b0c,inset 0 0 0 5px #fffdf7}.weekday{font-size:10px;color:var(--muted);letter-spacing:.16em;text-transform:uppercase;margin:7px 0 7px}.date-display{display:flex;align-items:center;justify-content:center;gap:24px}.date-display>b{font:400 115px/1.1 var(--serif);color:var(--wine);letter-spacing:-.06em}.date-display>span{font-size:9px;line-height:2;color:var(--muted)}.date-display strong{display:block;font:400 24px/1.2 var(--serif);color:var(--wine)}.lunar{font:italic 21px/1.4 var(--serif);color:#9b7360}.date-card .fine-rule{margin:20px auto 15px}.start-time{font-size:11px;color:var(--muted)}.start-time strong{font-weight:400;color:var(--wine);font-size:15px;margin-left:5px}.subtle-button{display:inline-flex;align-items:center;gap:8px;font-size:10px;color:var(--wine);padding:9px 15px;border:1px solid #d6bc9e;border-radius:24px;margin-top:17px;min-height:40px;background:#fcf6ed}.subtle-button svg{width:14px;height:14px;stroke-width:1.3}.program-section{background:#fcf8f1;padding-top:62px;padding-bottom:52px}.timeline{list-style:none;padding:6px 4px 0 16px;margin:33px 0 0;text-align:left}.timeline li{position:relative;padding:0 0 27px 25px;border-left:1px solid #d9c2a7}.timeline li:before{content:'';position:absolute;left:-4px;top:7px;width:7px;height:7px;border:1px solid #ae8757;background:#fcf8f1;transform:rotate(45deg)}.timeline time{font-size:10px;letter-spacing:.05em;color:var(--gold);display:block;margin-bottom:6px}.timeline h3{font-family:var(--sans);font-size:12px;line-height:1.9;color:var(--ink);font-weight:400}.timeline p{font-size:11px;color:var(--muted);line-height:1.9;margin-top:4px}.timeline .highlight{background:linear-gradient(120deg,#f2dcd9,#f6e7d8);padding:21px 22px 25px 25px;border-radius:0 25px 25px 0;border-left:1px solid #aa6d77;margin-bottom:0;position:relative}.timeline .highlight:before{background:var(--wine);border-color:var(--wine);top:29px}.highlight h3{font:400 31px/1.3 var(--serif);color:var(--wine);margin:6px 0}.highlight p{max-width:220px;font-size:10px}.highlight svg{position:absolute;right:17px;bottom:19px;width:36px;height:27px;color:#b98f6d;opacity:.55}.location-section{padding-top:66px;padding-bottom:65px;background:#f7eee6}.location-section:before{opacity:.37;background-position:center center}.location-section h2{margin-bottom:26px}.location-card{padding:28px 22px 25px;background:#fffaf3dd;border:1px solid #e2cbb4;border-radius:90px 90px 14px 14px;box-shadow:0 15px 30px #8f645410}.pin-icon{width:26px;height:30px;margin:3px auto 14px;color:var(--gold);stroke-width:1}.street{font:400 29px/1.4 var(--serif);color:var(--wine);margin-bottom:2px}.location-card>p:not(.street){font-size:12px;color:var(--muted)}.primary-button{display:inline-flex;align-items:center;justify-content:center;gap:19px;min-height:45px;padding:10px 22px;border-radius:30px;background:linear-gradient(110deg,#8a4654,#a66673);color:#fffaf1;font-size:10px;box-shadow:0 6px 16px #85414e25;margin-top:23px}.primary-button span{font-size:17px;line-height:1}.location-card small{display:block;font-size:8px;color:var(--muted);line-height:1.9;max-width:235px;margin:17px auto 0}.team-section{padding-top:61px;padding-bottom:58px}.team-section h2{font-size:41px}.team-list{margin-top:34px;text-align:center}.team-list>div{padding:15px 0;border-bottom:1px solid #e3d0be8c}.team-list>div:last-child{border-bottom:0}.team-list dt{font-size:9px;color:var(--muted);letter-spacing:.12em;text-transform:uppercase}.team-list dd{font:400 28px/1.4 var(--serif);color:var(--wine);margin-top:5px}.team-list dd span{color:var(--gold);padding:0 6px}.thanks-section{background:radial-gradient(ellipse at top,#a45f6c88,transparent 70%),#753946;color:#f8e8d8;padding-top:57px;padding-bottom:51px;overflow:hidden;border-radius:50% 50% 0 0/22px 22px 0 0}.thanks-section:before,.thanks-section:after{content:'';position:absolute;width:230px;height:230px;border:1px solid #d9b68a25;border-radius:50%}.thanks-section:before{top:-40px;left:-120px}.thanks-section:after{bottom:-95px;right:-90px}.thanks-section .eyebrow{color:#e3c4a4;font-size:8px}.thanks-section .lotus-mark{color:#dbc09a}.thanks-section h2{font-size:61px;color:#fff2df;line-height:.96;margin:20px 0 25px}.thanks-section h2 em{color:#e5bbb6}.thanks-section .section-inner>p:not(.eyebrow):not(.signature-caption){font-size:10px;line-height:2;color:#e9cfc4}.signature{font:italic 52px/1.2 var(--serif);color:#f5dcbd;margin-top:28px}.signature-caption{font-size:8px;color:#d7b2a2;margin-top:7px}.share-button{background:none;border:1px solid #cda28277;border-radius:30px;font-size:9px;padding:10px 19px;display:inline-flex;gap:17px;color:#f2d8bf;margin-top:25px;min-height:41px}.footer{padding:23px 20px 104px;text-align:center;font-size:8px;letter-spacing:.06em;color:var(--muted)}.footer span{padding:0 10px;color:var(--gold)}.floating-nav{position:fixed;left:50%;bottom:max(15px,env(safe-area-inset-bottom));transform:translate(-50%,15px);display:flex;justify-content:center;gap:5px;padding:6px 10px;max-width:calc(100% - 30px);width:340px;border-radius:38px;z-index:15;background:#fff9f0ed;box-shadow:0 6px 28px #6e453b26,inset 0 0 0 1px #d8bda3aa;backdrop-filter:blur(12px);opacity:0;visibility:hidden;transition:opacity .3s,transform .3s}.floating-nav.visible{opacity:1;visibility:visible;transform:translate(-50%,0)}.floating-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:8px;color:#8c7566;flex:1;min-height:47px;border-radius:27px;padding:5px 4px}.floating-nav svg{width:16px;height:16px;stroke-width:1.3}.floating-nav a.active{background:#eeded5;color:var(--wine)}.ambient{position:fixed;inset:0;max-width:680px;margin:auto;pointer-events:none;z-index:7;overflow:hidden}.ambient i{position:absolute;width:3px;height:3px;left:5%;top:12%;border-radius:50%;background:#ddbc82;box-shadow:0 0 8px 2px #e9cb93a1;animation:glimmer 6s ease-in-out infinite;opacity:0}.ambient i:nth-child(2){left:92%;top:26%;animation-delay:1.7s}.ambient i:nth-child(3){left:8%;top:69%;animation-delay:3.2s}.ambient i:nth-child(4){left:95%;top:84%;animation-delay:4.1s}.ambient i:nth-child(5){left:3%;top:43%;animation-delay:2.8s;width:2px;height:2px}.ambient i:nth-child(6){left:89%;top:56%;animation-delay:.8s;width:2px;height:2px}.ambient i:nth-child(7){left:16%;top:92%;animation-delay:4.7s}.ambient i:nth-child(8){left:84%;top:7%;animation-delay:2.1s}.lightbox{border:0;padding:0;background:none;max-width:94vw;width:fit-content;overflow:visible;max-height:95dvh;color:#fff4e5}.lightbox::backdrop{background:#27171ce8;backdrop-filter:blur(5px)}.lightbox img{display:block;width:auto;height:auto;max-height:76dvh;max-width:92vw;object-fit:contain}.lightbox-top,.lightbox-bottom{display:flex;align-items:center;justify-content:space-between;gap:30px;font-size:10px}.lightbox-top{padding:0 0 10px}.lightbox button{color:#fff4e5;background:none;min-width:44px;min-height:42px;font-size:12px;padding:8px}.lightbox .close-photo{padding-right:0;display:flex;align-items:center;gap:12px}.lightbox-bottom button{font-size:25px;line-height:1}.lightbox-bottom span{font-size:9px;color:#c9b0a3}.toast{position:fixed;left:50%;bottom:100px;transform:translate(-50%,12px);background:#69414a;color:#fff8ef;font-size:11px;line-height:1.8;padding:12px 20px;border-radius:14px;max-width:85vw;width:max-content;opacity:0;pointer-events:none;transition:.25s;z-index:60}.toast.show{opacity:1;transform:translate(-50%,0)}.reveal{opacity:1}.js .reveal{opacity:0;transform:translateY(16px);transition:opacity .85s,transform .85s}.js .reveal.in{opacity:1;transform:none}
@keyframes twinkle{0%,100%{opacity:.35;transform:scale(.8)}50%{opacity:.9;transform:scale(1.05)}}@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}@keyframes glimmer{0%,100%{opacity:0;transform:translateY(10px)}40%{opacity:.7}80%{opacity:0;transform:translateY(-15px)}}
@media(min-width:720px){body{padding-top:28px}.masthead{border-radius:18px 18px 0 0;padding-inline:42px}.hero{padding-top:42px}.hero h1{font-size:100px}.hero h1 em{font-size:110px}.hero .portrait-composition{width:70%;max-width:370px}.host h2{font-size:40px}.hero .alias{font-size:63px}.section{padding-inline:65px}.section h2{font-size:53px}.section .body-copy{font-size:13px}.timeline h3{font-size:13px}.timeline p{font-size:12px}.timeline li{padding-bottom:31px}.highlight h3{font-size:34px}.thanks-section h2{font-size:70px}.footer{border-radius:0 0 18px 18px;margin-bottom:25px;padding-bottom:100px}}
@media(max-width:380px){.masthead{padding-inline:22px}.hero{padding-inline:29px;padding-top:29px}.hero h1{font-size:73px}.hero h1 em{font-size:81px}.portrait-composition{width:86%}.date-seal{width:74px;height:74px;right:-22px;bottom:-20px}.host h2{font-size:30px}.host .alias{font-size:52px}.hero .eyebrow{font-size:8px}.section{padding-inline:25px}.section h2{font-size:40px}.body-copy{font-size:11px}.date-display{gap:18px}.date-display>b{font-size:100px}.lunar{font-size:19px}.date-card{padding-inline:15px}.timeline{padding-left:10px}.timeline li{padding-left:20px}.timeline h3{font-size:11px}.timeline p{font-size:10px}.timeline .highlight{padding-left:20px}.highlight h3{font-size:29px}.street{font-size:26px}.primary-button{padding-inline:18px;font-size:9px}.team-list dd{font-size:25px}.thanks-section h2{font-size:56px}.floating-nav{width:310px}.thanks-section .section-inner>p:not(.eyebrow):not(.signature-caption){font-size:9px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.js .reveal{opacity:1;transform:none}.ambient{display:none}}
/* Keep all original photo pixels visible; the date ornament sits below the image. */
.date-seal{position:relative;right:auto;bottom:auto;width:190px;height:52px;margin:23px auto -16px;flex-direction:row;gap:10px;border-radius:35px;box-shadow:0 4px 16px #92684914;outline-offset:-4px}.date-seal span:first-child{order:2}.date-seal strong{order:1;font-size:31px;margin:0}.date-seal span:last-child{order:3}.date-seal span{font-size:9px}.photo-cue{display:none}.host h2{text-wrap:balance}.host{padding-top:40px}.body-copy{font-size:13px}.welcome-end{font-size:12px}.timeline h3{font-size:13px}.timeline p{font-size:12px}.thanks-section .section-inner>p:not(.eyebrow):not(.signature-caption){font-size:11px}.timeline .highlight h3{font-size:31px}
@media(max-width:380px){.body-copy{font-size:12px}.timeline h3{font-size:12px}.timeline p{font-size:11px}.timeline .highlight h3{font-size:29px}.thanks-section .section-inner>p:not(.eyebrow):not(.signature-caption){font-size:10px}}

/* Softer floral relief and stronger lettering in the opening section. */
.hero h1 em{color:#925161}.hero-heading>.eyebrow{color:#80644b}
