@font-face{font-family:editorial;src:url(../media/ppeditorialnew_ultralight_bf644b21500d0c0_20260701032609_fm0g3-s.p.2x_5a4u_p9kvf.otf)format("opentype");font-display:swap}@font-face{font-family:editorial Fallback;src:local(Arial);ascent-override:106.99%;descent-override:36.47%;line-gap-override:12.16%;size-adjust:82.25%}.bRFhZq_className{font-family:editorial,editorial Fallback}.bRFhZq_variable{--font-editorial:"editorial", "editorial Fallback"}
@font-face{font-family:pinyon;src:url(../media/pinyon_script-s.p.0tya5e72k-4bw.ttf)format("truetype");font-display:swap}@font-face{font-family:pinyon Fallback;src:local(Arial);ascent-override:110.78%;descent-override:49.31%;line-gap-override:0.0%;size-adjust:77.93%}.ZZtyhG_className{font-family:pinyon,pinyon Fallback}.ZZtyhG_variable{--font-pinyon:"pinyon", "pinyon Fallback"}
@font-face{font-family:ballet;src:url(../media/ballet-s.0q_xnu1kh5la4.ttf)format("truetype");font-display:swap}@font-face{font-family:ballet Fallback;src:local(Arial);ascent-override:172.53%;descent-override:117.56%;line-gap-override:0.0%;size-adjust:65.5%}.S2zS8G_className{font-family:ballet,ballet Fallback}.S2zS8G_variable{--font-ballet:"ballet", "ballet Fallback"}
@font-face{font-family:Taviraj;src:url(/fonts/taviraj.ttf)format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Hepta Slab;src:url(/fonts/ea8cadoyU_jkHdalebHv42llhA.woff2)format("woff2");font-weight:200;font-style:normal;font-display:swap}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ink:#665b4e;--muted:#8d7d69;--cream:#f7f5f0;--line:#c6baaa}*{box-sizing:border-box}html{scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:#b7ac9d #f7f5f0}body{color:var(--ink);-webkit-font-smoothing:antialiased;background:#fff;margin:0;font-family:Taviraj,Georgia,serif;font-size:14px}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}a{color:inherit;text-underline-offset:4px}button:focus-visible,a:focus-visible{outline-offset:5px;outline:2px solid #6e5d46}p,h1,h2,h3,figure,blockquote{margin:0;font-weight:400}img{display:block}::selection{color:#463c31;background:#ded3c2}.wedding-shell{background:#eeece6;min-height:100svh;padding:0 12px}.wedding{isolation:isolate;background:var(--cream);width:100%;max-width:420px;margin:0 auto;position:relative;overflow:clip;box-shadow:0 0 70px #574b3a0a;container-type:inline-size}.wedding section,.wedding footer{isolation:isolate;position:relative}.photo,.decor{position:relative;overflow:hidden}.photo img{object-fit:cover}.decor{pointer-events:none}.decor img{object-fit:contain}.viewport-image{opacity:0;transition:opacity .45s;display:block;position:absolute;inset:0}.viewport-image.is-visible{opacity:1}.section-texture{z-index:-2;inset:0;position:absolute!important}.section-texture img{object-fit:cover}.paper-section{background:#f8f6f2}.script{font-family:var(--font-pinyon),cursive;font-weight:400}.ballet{font-family:var(--font-ballet),cursive;font-weight:400}.eyebrow{letter-spacing:.18em;font-size:clamp(9px,2.45cqw,10.3px);line-height:1.8}.flourish{color:#a5947e;justify-content:center;align-items:center;gap:14px;width:55%;margin:20px auto;font-size:20px;display:flex}.flourish span{background:linear-gradient(90deg,#0000,#b5a58e);width:38%;height:1px}.flourish span:last-child{transform:rotate(180deg)}.hero{aspect-ratio:420/746;color:#81745f;overflow:hidden}.hero-portrait{width:52%;height:67.2%;position:absolute;top:20%;left:43.8%;-webkit-mask-image:url(/images/phong-nhung/hero-frame.png);mask-image:url(/images/phong-nhung/hero-frame.png);-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-source-type:alpha;mask-mode:alpha}.hero-ribbon{text-align:center;background:#fffdf8f5;border-radius:42px 0 90px 90px;width:38.4%;height:64%;padding-top:49%;position:absolute;top:7.8%;left:4%}.hero h1{font-family:var(--font-editorial),Georgia,serif;letter-spacing:.045em;text-transform:uppercase;font-size:5.1cqw;line-height:1.25}.hero h1 span{display:block}.hero h1 i{color:#b09a7d;margin:5% 0;font-size:4cqw;font-style:normal;display:block}.hero-medallion{aspect-ratio:1;border:5px solid #fffdf8;border-radius:50%;width:94%;height:auto;position:absolute;bottom:1%;left:3%}.hero-medallion img{object-position:50% 38%}.hero-lettering{aspect-ratio:692/450;z-index:2;width:57%;position:absolute;top:11%;left:1%}.hero-date{text-align:center;width:100%;font-family:var(--font-editorial),Georgia,serif;letter-spacing:.23em;color:#625a48;font-size:4.7cqw;position:absolute;bottom:7.3%}.scroll-hint{letter-spacing:.18em;justify-content:center;align-items:center;gap:12px;width:100%;min-height:24px;font-size:7px;text-decoration:none;display:flex;position:absolute;bottom:1.9%;left:0}.scroll-hint>span:last-child{font-size:16px}.keepsake{aspect-ratio:420/776;overflow:hidden}.keepsake-eyebrow{text-align:center;width:100%;font-size:2.4cqw;position:absolute;top:8%;left:0}.keepsake-botanical{opacity:.9;width:55%;height:51%;position:absolute;top:7%;left:-8%;transform:rotate(-13deg)}.envelope{aspect-ratio:600/719;width:76%;position:absolute;top:28%;left:21%;transform:rotate(10deg)}.envelope-back{z-index:0;position:absolute;inset:0}.polaroid{z-index:1;background:#fff;width:70%;height:82%;padding:6px 6px 25px;position:absolute;top:-13%;left:13%;transform:rotate(-2deg);box-shadow:0 3px 12px #5d503b14}.polaroid>.photo{width:100%;height:100%}.polaroid>p{text-align:center;color:#fff;text-shadow:0 1px 4px #0004;width:100%;font-size:13cqw;position:absolute;bottom:13%;left:0;transform:rotate(-9deg)}.envelope-front{aspect-ratio:771/550;z-index:2;width:100%;position:absolute;bottom:0;left:0}.photo-strip{background:#fff;grid-template-rows:1fr 1fr 1fr;gap:5px;width:22%;height:41%;padding:5px;display:grid;position:absolute;top:43%;left:12%;transform:rotate(-16deg);box-shadow:1px 3px 8px #635a4530}.date-tag{aspect-ratio:500/994;width:31%;position:absolute;top:58%;left:53%;transform:rotate(8deg)}.tag-paper{position:absolute;inset:0}.date-tag>div:last-child{height:44%;font-family:var(--font-editorial),serif;flex-direction:column;justify-content:center;align-items:center;gap:0;font-size:7.8cqw;line-height:1;display:flex;position:absolute;top:9%;left:14%;right:18%}.date-tag small{border-block:1px solid #baa88c;margin:4% 0;padding:4% 0;font-size:5.4cqw}.keepsake-bottom{text-align:center;letter-spacing:.07em;width:100%;font-size:2.8cqw;position:absolute;bottom:4.6%}.invitation{text-align:center;min-height:234.76cqw;padding:11% 6% 20%;overflow:hidden}.family-row{grid-template-columns:1fr 1fr;gap:16px;font-size:clamp(10px,2.7cqw,11.5px);line-height:1.9;display:grid}.family-row .eyebrow{margin-bottom:10px}.family-person{margin-top:8px}.family-address{text-wrap:pretty;max-width:98%;margin:6px auto 0;font-size:clamp(9px,2.35cqw,10px);font-style:italic;line-height:1.85}.invitation-names{margin:8% 0 3%;font-size:15cqw;line-height:1.05}.invitation-names>span{margin:-3% auto -2%;font-size:8cqw;line-height:1.1;display:block}.invitation .flourish{margin:4% auto}.invitation-label{margin-top:5%;font-size:2.9cqw}.guest-name{margin:4% -3% 2%;font-size:9.5cqw;line-height:1.4}.invitation-copy{font-size:3.25cqw;line-height:1.95}.wedding-date{margin:9% 0 4%;font-size:3.3cqw}.wedding-date>p{letter-spacing:.14em;text-transform:uppercase}.wedding-date>div{justify-content:center;align-items:center;gap:7%;margin:2% 0;display:flex}.wedding-date span{border-block:1px solid var(--line);width:29%;padding:3% 0;font-size:3cqw}.wedding-date strong{font-family:var(--font-editorial),serif;font-size:19cqw;font-weight:400;line-height:1.3}.lunar-date{font-size:clamp(10px,2.7cqw,11.5px);font-style:italic}.venue-prefix{letter-spacing:.14em;margin-top:8%;font-size:2.3cqw}.venue-name{font-family:var(--font-editorial),Georgia,serif;margin:4% 0;font-size:7.6cqw;line-height:1.4}.venue-room{letter-spacing:.08em;margin:-1% auto 4%;font-size:3.5cqw}.venue-address{max-width:95%;margin:auto;font-size:clamp(11px,2.9cqw,12.3px);line-height:1.9}.map-link{background:#faf8f1b3;border:1px solid #b7a48b;border-radius:30px;justify-content:center;align-items:center;gap:12px;min-height:44px;margin-top:7%;padding:9px 23px;font-size:12px;text-decoration:none;transition:background .2s;display:inline-flex}.map-link:hover{background:#eae2d6}.map-link svg{width:19px;height:19px}.invitation-flower{z-index:-1;opacity:.45;width:40%;height:28%;position:absolute;bottom:-6%;right:-14%;transform:rotate(-25deg)}.timeline-section{min-height:340.24cqw;padding:0 8% 10%;overflow:hidden}.timeline-portrait{aspect-ratio:420/510;width:119.05%;margin-left:-9.525%;-webkit-mask-image:linear-gradient(#000 78%,#0000);mask-image:linear-gradient(#000 78%,#0000)}.timeline-portrait img{object-position:50% 32%}.timeline-heading{text-align:center;margin-top:-1%}.timeline-heading h2{font-size:17cqw;line-height:1.25}.timeline-heading .eyebrow{font-size:2.7cqw}.timeline{margin:12% 0 4%;padding:0;list-style:none;position:relative}.timeline:before{content:"";background:#b5a58f;width:1px;position:absolute;top:4%;bottom:3%;left:50%}.timeline li{align-items:center;gap:12%;width:100%;min-height:29cqw;font-size:3.15cqw;line-height:1.8;display:flex;position:relative}.timeline li:before{content:"";box-sizing:content-box;background:#958169;border:3px solid #f7f5f0;border-radius:50%;width:7px;height:7px;position:absolute;left:calc(50% - 3px);transform:translate(-3px)}.timeline time{font-family:var(--font-editorial),serif;font-size:8.7cqw;line-height:1.4}.event-period{font-family:var(--font-editorial),serif;font-size:5.1cqw;line-height:1.6;display:block}.timeline .event-icon{width:34%;height:22cqw}.timeline li>div:last-child{width:44%}.timeline .event-left{text-align:right;flex-direction:row-reverse}.timeline .event-right .event-icon{margin-left:5%}.timeline .event-left .event-icon{margin-right:5%}.timeline p{max-width:100%;font-size:3cqw}.dresscode{text-align:center;margin-top:12%}.dresscode h3{font-size:15.5cqw;line-height:1.4}.dresscode>p{margin-top:1%;font-size:3.2cqw}.swatches{justify-content:center;gap:13px;margin:8% auto 6%;display:flex}.swatches span{background:#f3ecdd;border:1px solid #7b664512;border-radius:50%;width:35px;height:35px;box-shadow:0 2px 4px #7360430d}.swatches span:nth-child(2){background:#d6c7ad}.swatches span:nth-child(3){background:#8c7764}.swatches span:nth-child(4){background:#34332e}.dresscode small{font-size:2.65cqw;font-style:italic;line-height:1.8}.story{text-align:center;min-height:267.38cqw;padding:13% 6% 14%}.story>h2{margin:4% -5% 5%;font-size:13cqw;line-height:1.4}.countdown{justify-content:center;margin:6% 0 13%;display:flex}.countdown>div{border-right:1px solid #cbbfac;width:24%;padding:0 2%}.countdown>div:last-child{border:0}.countdown span{font-family:var(--font-editorial),serif;font-variant-numeric:tabular-nums;font-size:11cqw;line-height:1.2;display:block}.countdown small{letter-spacing:.12em;margin-top:10%;font-size:2.6cqw;display:block}.story-photos{align-items:center;gap:5%;width:100%;padding:2% 1% 3%;display:flex}.story-photos .photo{aspect-ratio:170/285;border:5px solid #fff;width:49%;transform:rotate(-5deg);box-shadow:0 2px 8px #5e4d3514}.story-photos .photo:last-child{border-radius:46% 46% 0 0;margin-top:13%;transform:rotate(5deg)}.story-name-row{justify-content:center;align-items:center;gap:10%;margin:12% 0 6%;font-size:11cqw;display:flex}.story-name-row .ballet{font-size:10cqw}.story blockquote{text-wrap:pretty;margin:7% 3%;font-size:clamp(12px,3.15cqw,13.3px);line-height:2.1}.story-signature{letter-spacing:.12em;margin-top:8%;font-size:2.25cqw;line-height:2}.album-section{text-align:center;min-height:306.45cqw;padding:13% 5% 12%}.album-section h2{margin-top:2%;font-size:17cqw;line-height:1.5}.album-subtitle{margin:0 0 10%;font-size:2.9cqw;font-style:italic}.album-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.album-photo{aspect-ratio:180/195;background:#e3ded5;border:0;padding:0;position:relative;overflow:hidden}.album-photo img{object-fit:cover;object-position:50% 30%;transition:transform .6s}.album-photo:hover img{transform:scale(1.035)}.album-photo-0{border-top-left-radius:48%}.album-photo-1{border-top-right-radius:48%}.photo-number{color:#fff;font-family:var(--font-editorial),serif;text-shadow:0 1px 4px #0008;font-size:13px;position:absolute;bottom:7px;left:9px}.album-footer{font-family:var(--font-editorial),serif;letter-spacing:.15em;margin-top:9%;font-size:3.5cqw}.album-footer span{color:#a18a6d;margin:0 3%;display:inline-block}.closing-portrait{aspect-ratio:420/744;overflow:hidden}.closing-portrait>.photo{position:absolute;inset:0}.closing-portrait .photo img{object-position:50% 50%}.closing-overlay{text-align:center;color:#fff;background:linear-gradient(#0000 55%,#2d291d7a);flex-direction:column;justify-content:flex-end;padding:8% 4% 11%;display:flex;position:absolute;inset:0}.closing-overlay .eyebrow{letter-spacing:.17em;font-size:2cqw}.closing-overlay .script{font-size:15cqw;line-height:1.6}.closing-overlay>p:last-child{font-family:var(--font-editorial),serif;letter-spacing:.18em;text-transform:uppercase;font-size:4cqw}.thank-you{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:125cqw;padding:13% 5% 12%;display:flex}.thank-you-script{color:#73634e;margin-left:-3%;font-size:17.5cqw;line-height:2}.thank-you-message{font-size:3.1cqw;line-height:2}.thank-you .flourish{margin:7% auto 5%}.thank-you-names{font-family:var(--font-editorial),serif;letter-spacing:.05em;font-size:7cqw}.thank-you-names span{font-family:var(--font-pinyon),cursive;margin:0 8px}.thank-you-date{letter-spacing:.15em;margin-top:4%;font-size:3cqw}.thank-you small{letter-spacing:.25em;margin-top:10%;font-size:2cqw}.scroll-control,.music-control{z-index:10;right:max(16px,env(safe-area-inset-right));color:#877158;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fbf7efed;border:1px solid #c4b29a9c;border-radius:50%;place-items:center;width:46px;height:46px;font-size:27px;transition:background .2s;display:grid;position:fixed;box-shadow:0 3px 16px #5b48321a}.scroll-control{bottom:calc(max(20px,env(safe-area-inset-bottom)) + 58px)}.music-control{bottom:max(20px,env(safe-area-inset-bottom))}.scroll-control:hover,.music-control:hover{background:#e9e0d3}.scroll-control svg,.music-control svg{width:25px;height:25px}.photo-dialog{color:#fff;z-index:30;overscroll-behavior:contain;background:#201d19ed;border:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;padding:0;position:fixed;inset:0}.photo-dialog::backdrop{background:#201d19ed}.lightbox-content{flex-direction:column;justify-content:center;align-items:center;width:min(94vw,800px);height:100%;margin:auto;padding:55px 0 14px;display:flex}.lightbox-image{flex:1;width:100%;min-height:0;position:relative}.lightbox-image img{object-fit:contain}.lightbox-close{top:max(10px,env(safe-area-inset-top));color:#fff;background:0 0;border:1px solid #ffffff50;border-radius:50%;width:44px;height:44px;font-size:30px;line-height:1;position:absolute;right:16px}.lightbox-navigation{color:#ede7dc;justify-content:center;align-items:center;gap:24px;padding:8px 0;font-size:12px;display:flex}.lightbox-navigation button{color:#fff;background:0 0;border:0;width:44px;height:44px;font-size:23px}@media (max-width:460px){.wedding-shell{background:var(--cream);padding:0}.wedding{box-shadow:none}.scroll-control,.music-control{width:44px;height:44px;right:12px}.music-control{bottom:max(14px,env(safe-area-inset-bottom))}.scroll-control{bottom:calc(max(14px,env(safe-area-inset-bottom)) + 54px)}}@media (min-width:800px){.scroll-control,.music-control{right:calc(50% - 270px)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}
