@import url("title-font.css");
:root{--bg:#123d40;--surface:#1b4948;--gold:#e5c58e;--text:#f7eee0;--muted:#c4d0c0;--line:#658069;--red:#a74433;--serif:"Songti SC","STSong","SimSun",serif;color-scheme:dark;font-synthesis:none}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:44px}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;line-height:1.7}body:has(dialog[open]){overflow:hidden}a{color:inherit;text-decoration:none}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;border:0}button:disabled{cursor:default}button:focus-visible,a:focus-visible{outline:2px solid #ffe4a2;outline-offset:6px}button:active,.primary-btn:active,.outline-btn:active{transform:scale(.98)}button[hidden],[hidden]{display:none!important}.serif{font-family:var(--serif);font-weight:400}.muted{color:var(--muted)}.gold{color:var(--gold)}p,h1,h2,h3,figure{margin:0}img{display:block;max-width:100%}.site-header{max-width:1320px;margin:auto;padding:30px 48px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #39605a}.wordmark{font-size:22px;letter-spacing:4px;color:var(--gold)}.wordmark span{font-family:Arial,sans-serif;font-size:9px;letter-spacing:2px;margin-left:22px;vertical-align:middle}.hero{max-width:1224px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:80px;padding:72px 48px 92px;align-items:center;position:relative}.hero-copy{position:relative;padding:12px 0}.eyebrow{font-size:11px;letter-spacing:4px;color:var(--gold)}h1{font-size:clamp(46px,4.6vw,68px);line-height:1.5;letter-spacing:7px;margin:26px 0 20px}.hero-intro{font-size:14px;color:var(--muted);line-height:2.1;letter-spacing:2px}.couple-names{display:flex;gap:24px;align-items:center;margin:38px 0 25px;font-size:29px;letter-spacing:3px}.couple-names i{font-family:Georgia,serif;color:var(--gold);font-size:22px;font-weight:400}.date-row{display:flex;align-items:center;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:16px 0;gap:24px;max-width:396px}.date-row>div{text-align:center;flex:1}.date-row strong{display:block;font-family:Georgia,serif;font-size:24px;font-weight:400;line-height:1.4}.date-row span{display:block;font-size:10px;letter-spacing:2px;color:var(--muted)}.date-row .date-main{font-family:Georgia,serif;font-size:45px;line-height:1.2;flex:1.7;border-left:1px solid var(--line);border-right:1px solid var(--line);color:var(--gold)}.hero-venue{font-size:11px;margin:16px 0 28px;color:var(--muted)}.primary-btn,.outline-btn{min-height:48px;padding:13px 25px;display:inline-flex;gap:36px;align-items:center;justify-content:center;letter-spacing:2px;background:var(--gold);color:#153b3b;font-size:13px;transition:transform .2s,background .2s}.primary-btn:hover{background:#f1d7a7}.outline-btn{border:1px solid #8b9a80;color:var(--text);background:transparent}.outline-btn:hover{background:#28534e}.scroll-note{display:block;color:var(--muted);font-size:10px;letter-spacing:3px;margin-top:24px}.hero-art{position:relative;padding:10px 20px 0 0}.arch{position:relative;border-radius:260px 260px 0 0;overflow:hidden;border:1px solid #d6b783;box-shadow:0 0 0 9px var(--bg),0 0 0 10px #7b8e70;aspect-ratio:4/5}.hero-photo{width:100%;height:100%;object-fit:cover;transform-origin:50% 30%;animation:breathe 14s ease-in-out infinite alternate}.photo-shade{position:absolute;inset:0;background:linear-gradient(transparent 63%,rgba(10,31,28,.85))}.photo-title{position:absolute;bottom:24px;left:0;right:0;text-align:center;color:#ffe6b2;font-size:56px;letter-spacing:9px;text-shadow:0 2px 12px #372718}.vertical-note{position:absolute;right:-16px;top:34px;writing-mode:vertical-rl;font-size:12px;letter-spacing:6px;color:#d9bd87}.hero-seal{position:absolute;left:-22px;bottom:58px;width:64px;height:70px;display:grid;place-items:center;background:var(--red);border:1px solid #e2b87e;color:#ffe0a6;font-size:36px;transform:rotate(-7deg)}.photo-side-note{position:absolute;right:20px;bottom:-33px;font-size:9px;letter-spacing:3px;color:#c6c9ae}.gold-dust{position:absolute;inset:0;pointer-events:none}.gold-dust i{position:absolute;width:3px;height:3px;background:#ffe0a6;border-radius:50%;animation:dust 7s ease-in-out infinite}.gold-dust i:nth-child(1){left:2%;top:25%}.gold-dust i:nth-child(2){right:0;top:35%;animation-delay:-2s}.gold-dust i:nth-child(3){left:5%;top:70%;animation-delay:-4s}.gold-dust i:nth-child(4){right:12%;top:9%;animation-delay:-1s}.gold-dust i:nth-child(5){right:3%;top:80%;animation-delay:-3s}.letter{border-top:1px solid #426354;padding:82px 24px 30px;text-align:center;background:radial-gradient(ellipse at 50% 45%,#21534c40,transparent 60%)}.seal{display:grid;place-items:center;width:42px;height:46px;background:var(--red);color:#ffe0ac;border:1px solid #deb17b;font-size:25px;margin:0 auto 25px}.letter h2{font-size:32px;margin:20px 0 26px;letter-spacing:3px}.letter-lines{color:var(--muted);font-size:15px;line-height:2.4}.signature{font-size:17px;letter-spacing:3px;color:var(--gold);margin-top:26px}.line-ornament{max-width:290px;display:flex;align-items:center;gap:18px;margin:50px auto 0;color:var(--gold)}.line-ornament::before,.line-ornament::after{content:'';height:1px;background:var(--line);flex:1}.section{max-width:1110px;margin:auto;padding:90px 40px 25px;scroll-margin-top:22px}.section-kicker{color:var(--gold);font-size:10px;letter-spacing:3px;margin-bottom:22px}.section h2{font-size:44px;letter-spacing:4px;line-height:1.6}.us{display:grid;grid-template-columns:1fr 1fr;gap:90px;align-items:center}.us-photo{padding:0;background:#607774;overflow:hidden;border-radius:250px 250px 0 0}.us-photo img{width:100%;height:auto;transition:transform .7s}.image-button:hover img{transform:scale(1.015)}.names-details{display:flex;align-items:center;justify-content:space-between;padding:35px 0 25px;margin-top:20px;border-bottom:1px solid var(--line)}.names-details span{display:block;color:var(--muted);font-size:12px;letter-spacing:3px}.names-details strong{display:block;font-size:29px;letter-spacing:4px;margin-top:4px}.heart-seal{color:var(--gold);font-size:21px}.story-caption{font-size:14px;line-height:2.2;color:var(--muted);padding:26px 0}.section-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:34px}.section-heading .muted{font-size:12px;margin-bottom:10px}.album-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}.album-item:nth-child(even){padding-top:50px}.album-item button{display:block;width:100%;padding:0;overflow:hidden;background:#607774}.album-item img{width:100%;height:330px;object-fit:cover;object-position:center;transition:transform .7s}.album-item:nth-child(2) img{object-position:50% 35%}.album-item button:hover img{transform:scale(1.04)}.photo-label{color:var(--gold);font-size:10px;letter-spacing:2px;margin-top:13px}.journey{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center;padding-top:120px}.event-date{font-size:23px;border-bottom:1px solid var(--line);padding:20px 0}.timeline{display:flex;gap:25px;padding:24px 0 18px}.timeline-dot{margin-top:24px;width:7px;height:7px;flex-shrink:0;background:var(--gold);border-radius:50%;box-shadow:0 0 0 6px #2f594d}.timeline time{font-family:Georgia,serif;font-size:46px;line-height:1.3;color:var(--gold)}.timeline .gold{font-size:14px;margin-top:8px}.timeline .muted{font-size:13px;margin-top:8px}.text-link{display:inline-block;min-height:44px;padding:10px 0;color:var(--gold);font-size:12px;text-decoration:underline;text-underline-offset:5px}.venue{position:relative;background:var(--surface);border:1px solid #85906b;padding:44px 38px;isolation:isolate}.venue::before{content:'';position:absolute;inset:7px;border:1px solid #507361;z-index:-1}.venue h3{font-size:58px;color:var(--gold);letter-spacing:7px;margin-top:14px}.venue-branch{font-size:17px;letter-spacing:3px}.venue-address,.venue-street{color:var(--muted);font-size:14px;margin-top:15px}.venue .primary-btn{width:100%;margin-top:30px;justify-content:space-between}.map-note{font-size:11px;color:var(--muted);margin-top:14px}.homes{grid-column:1/-1}.homes:empty{display:none}.home-row{display:flex;gap:24px;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding:25px 0}.home-row p{font-size:13px;color:var(--muted)}.farewell{text-align:center;padding:90px 24px 130px}.farewell h2{font-size:29px;letter-spacing:3px;margin-bottom:14px}.farewell>.muted{font-size:14px}.footer-actions{display:flex;justify-content:center;gap:16px;margin:35px 0}.footer-date{color:var(--muted);font-size:10px;letter-spacing:3px}dialog{border:1px solid var(--line);color:var(--text);background:#123d40;max-width:calc(100vw - 32px);padding:40px}dialog::backdrop{background:#071f22e8;backdrop-filter:blur(5px)}.close-dialog{position:absolute;right:14px;top:10px;padding:12px;min-height:44px;color:var(--gold);background:transparent;font-size:13px;z-index:1}.photo-dialog{width:100%;height:100%;max-width:none;max-height:none;border:0;background:#0c282c;padding:55px 55px 35px}.photo-dialog[open]{display:flex;align-items:center;justify-content:center}.photo-dialog figure{height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:16px}.photo-dialog img{max-height:calc(100dvh - 140px);max-width:80vw;width:auto;object-fit:contain}.photo-dialog figcaption{color:var(--gold);font-size:13px;letter-spacing:2px;text-align:center}.photo-prev,.photo-next{position:absolute;top:50%;padding:14px;min-width:44px;background:#25464b;color:var(--gold);font-size:22px}.photo-prev{left:8px}.photo-next{right:8px}.share-dialog{width:430px;padding:65px 30px 30px}.share-dialog h2{font-size:25px;margin:16px 0}.share-dialog p:not(.eyebrow){color:var(--muted);font-size:13px;line-height:1.9;margin-bottom:25px}.share-dialog .primary-btn,.share-dialog .outline-btn{width:100%;margin-top:14px}.toast{position:fixed;left:50%;bottom:110px;transform:translateX(-50%);z-index:30;padding:14px 22px;background:#f1dcac;color:#123d40;font-size:14px;max-width:calc(100vw - 40px);box-shadow:0 5px 20px #08252755;text-align:center}.noscript{position:fixed;inset:0;padding:40px;background:var(--bg);z-index:40}.reveal{opacity:1;transform:none}.js-motion .reveal:not(.visible){opacity:0;transform:translateY(22px)}.js-motion .reveal{transition:opacity .8s ease,transform .8s ease}.still .hero-photo,.still .gold-dust i{animation:none}.still .reveal{opacity:1!important;transform:none!important;transition:none!important}.still{scroll-behavior:auto}.still *{scroll-behavior:auto!important}@keyframes breathe{from{transform:scale(1)}to{transform:scale(1.035)}}@keyframes dust{0%,100%{opacity:.1;transform:translateY(10px)}50%{opacity:.85;transform:translateY(-20px)}}
@media(max-width:900px){.hero{gap:40px;padding:55px 32px 70px}.hero-art{padding-right:14px}.hero-copy h1{font-size:44px;letter-spacing:4px}.hero-copy .couple-names{font-size:25px;gap:16px}.date-row{gap:15px}.date-row .date-main{font-size:37px}.date-row strong{font-size:21px}.photo-title{font-size:40px}.section{padding-left:32px;padding-right:32px}.us,.journey{gap:40px}.section h2{font-size:34px}.album-grid{gap:16px}.album-item img{height:260px}.venue{padding:36px 27px}.venue h3{font-size:48px}.section-heading{display:block}.section-heading .muted{margin-top:14px}}
@media(max-width:600px){.site-header{padding:18px 22px;border:0}.wordmark{font-size:19px;letter-spacing:3px}.wordmark span{display:none}.hero{display:flex;flex-direction:column-reverse;gap:30px;padding:24px 28px 44px}.hero-art{width:100%;padding:0 12px;margin:0}.arch{border-radius:200px 200px 0 0}.vertical-note{font-size:10px;letter-spacing:5px;right:-16px;top:24px}.photo-title{font-size:48px;letter-spacing:8px;bottom:18px}.hero-seal{width:44px;height:50px;font-size:27px;left:0;bottom:33px}.photo-side-note{right:13px;bottom:-26px;font-size:8px;letter-spacing:2px}.hero-copy{width:100%;text-align:center;padding-top:0}.hero-copy>.eyebrow{font-size:10px;letter-spacing:3px;margin-top:6px}.hero-copy h1,.hero-intro{display:none}.hero-copy .couple-names{justify-content:center;font-size:28px;gap:23px;margin:13px 0 23px;letter-spacing:3px}.date-row{max-width:340px;margin:auto;gap:20px;padding:14px 0}.date-row .date-main{font-size:39px}.date-row strong{font-size:24px}.date-row span{font-size:9px}.hero-venue{font-size:10px;margin:16px -10px 22px}.hero-copy .primary-btn{min-width:218px}.scroll-note{font-size:9px;margin-top:18px}.letter{padding:60px 22px 14px}.letter h2{font-size:25px;letter-spacing:2px;margin:17px 0 24px}.letter-lines{font-size:13px;line-height:2.4}.signature{font-size:14px;letter-spacing:2px}.seal{width:36px;height:40px;font-size:24px;margin-bottom:22px}.section{padding:60px 24px 0}.section-kicker{font-size:9px;letter-spacing:2px;margin-bottom:16px}.section h2{font-size:31px;letter-spacing:2px}.us{display:flex;flex-direction:column;gap:28px;align-items:stretch}.us-photo{order:1}.section-copy{order:0}.us .names-details{padding:22px 0 20px;margin-top:10px;max-width:340px}.names-details strong{font-size:25px}.names-details span{font-size:11px}.story-caption{font-size:13px;padding:18px 0 0}.section-heading{margin-bottom:25px}.section-heading .muted{font-size:11px}.album-grid{grid-template-columns:repeat(2,1fr);gap:24px 16px}.album-item img{height:225px}.album-item:nth-child(even){padding-top:34px}.photo-label{font-size:9px;letter-spacing:1px}.journey{display:flex;flex-direction:column;align-items:stretch;gap:28px;padding-top:74px}.event-date{font-size:22px;padding:15px 0 21px}.timeline{gap:20px;padding:20px 0 5px}.timeline time{font-size:43px}.timeline .muted{font-size:12px}.venue{padding:30px 27px}.venue h3{font-size:47px;margin-top:12px}.venue-branch{font-size:16px}.venue-address{font-size:13px}.map-note{font-size:10px}.venue .primary-btn{margin-top:25px}.farewell{padding:64px 22px 140px}.farewell h2{font-size:25px;letter-spacing:2px}.farewell>.muted{font-size:12px}.footer-actions{gap:10px;margin:27px 0 30px}.footer-actions .outline-btn{font-size:11px;padding:12px 14px;letter-spacing:1px}.footer-date{font-size:9px;letter-spacing:1px}.photo-dialog{padding:55px 30px 30px}.photo-prev,.photo-next{font-size:18px;min-width:40px;padding:12px 9px}.photo-prev{left:0}.photo-next{right:0}.photo-dialog img{max-width:calc(100vw - 66px)}.photo-dialog figcaption{font-size:11px}.toast{font-size:12px;bottom:100px;white-space:normal;width:max-content}.home-row{align-items:start}.home-row button{flex-shrink:0}}
@media(max-width:360px){.hero{padding-left:26px;padding-right:26px}.photo-title{font-size:39px}.hero-copy .couple-names{font-size:25px;gap:18px}.date-row{gap:14px}.date-row .date-main{font-size:35px}.date-row strong{font-size:20px}.hero-venue{font-size:9px}.album-item img{height:190px}.section h2{font-size:29px}.footer-actions{flex-direction:column}.vertical-note{font-size:9px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.js-motion .reveal:not(.visible){opacity:1;transform:none}}
@media print{.site-header,.primary-btn,.outline-btn,.scroll-note,dialog{display:none!important}.reveal{opacity:1!important;transform:none!important}body{-webkit-print-color-adjust:exact;print-color-adjust:exact}.hero{page-break-after:always}.section,.letter{break-inside:avoid}}

/* Joy, postage and chapter motion — shared with the native invitation. */
.invitation-button{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;background:linear-gradient(115deg,#f3dbae,#dfbd85);border:0.5px solid #f7e5bd;color:#183c38;min-height:57px;box-shadow:0 3.5px 0 #0b302f,0 4px 0 #6c7860;margin:0;text-align:left}.button-seal{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:27.5px;height:30px;font-size:16px;background:#a74433;color:#fff0cb;border-radius:4.5px 2.5px 5px 2.5px;border:0.5px solid #c17350;transform:rotate(-5deg)}.button-copy{display:flex;flex:1;min-width:0;flex-direction:column;gap:2.5px}.button-title{font-size:13.5px;letter-spacing:1.5px;white-space:nowrap}.button-subtitle{font-size:9px;letter-spacing:0.5px;opacity:.75;white-space:nowrap}.button-arrow{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:24px;height:24px;border:0.5px solid #526b5455;border-radius:50%;font-size:14px;line-height:1}.hero-cta{max-width:300px;margin:0}.scroll-note{display:flex;align-items:center;justify-content:center;gap:8px;font-size:9px;letter-spacing:1.5px;color:#b1c3b6;margin-top:21px}.scroll-thread{width:0.5px;height:15px;background:#b29b70;position:relative}.scroll-thread::after{content:'';width:3px;height:3px;border-radius:50%;background:#e5c58e;position:absolute;left:-1px;animation:thread-drop 2.6s ease-in-out infinite}

.stamp-wrap{position:relative;width:50px;height:52px;margin:auto}.joy-stamp{width:47px;height:49px;padding:0;transform:rotate(-7deg);box-shadow:0 0 0 3px #a7443324,0 6px 13px #062c2933;animation:stamp-rock 5s ease-in-out infinite;position:relative;z-index:1}.joy-stamp:active{transform:rotate(0) scale(.9)}.stamp-note{font-size:9.5px;color:#bccabd;letter-spacing:1px;margin:11px 0 20px;min-height:17px}.has-blessing{color:#f0d39f}.stamp-sparks{position:absolute;inset:0;pointer-events:none}.spark-ray{position:absolute;top:50%;left:50%}.spark-glyph{position:absolute;color:#e7b978;font-size:12.5px;animation:stamp-burst 1.2s ease-out both}
.journey-card{border:0.5px solid #7b8a6d;background:#1b4948;border-radius:15px;overflow:hidden;box-shadow:0 9px 25px #072c2925}.journey-greeting{display:flex;gap:6px;justify-content:space-between;align-items:center;padding:16px;background:#214e48;border-bottom:0.5px solid #63816b66}.journey-greeting .eyebrow{font-size:8.5px;letter-spacing:1px}.greeting-title{font-size:15.5px;letter-spacing:0.5px;color:#f4dfb4;margin-top:6px}.postmark{display:flex;align-items:center;justify-content:center;flex-direction:column;flex-shrink:0;width:35px;height:40px;line-height:1.25;border:1px solid #c88b65;outline:0.5px solid #c88b6570;outline-offset:2.5px;color:#e6b086;font-size:12.5px;border-radius:50%;transform:rotate(10deg)}.destination-tabs{display:flex;gap:5px;padding:12px 13px;overflow-x:auto}.destination-tabs button{flex:1;min-width:65px;min-height:42px;padding:9px 5px;border-radius:25px;color:#dce4d2;background:#284e48;border:0.5px solid #728770;font-size:12px;white-space:nowrap}.destination-tabs .selected{background:#e5c58e;color:#173b37;border-color:#e5c58e}.destination-map{width:100%;height:180px;display:block}.destination-details{padding:17px 16px}.destination-details>.eyebrow{font-size:9px;color:#bccaba}.venue-name{font-size:30px;color:#f0d4a3;margin-top:5px;line-height:1.4}.venue-branch{font-size:12.5px;letter-spacing:1px;margin-top:3px}.venue-address{color:#d0d9c9;font-size:12px;margin-top:9px;line-height:1.8}.distance-card{display:flex;align-items:center;gap:7px;justify-content:space-between;border-top:0.5px solid #6b836866;border-bottom:0.5px solid #6b836866;padding:13px 0;margin-top:13px}.distance-card>div{flex:1;min-width:0}.distance-number{font-size:14px;color:#f0d7a6}.distance-note{font-size:9.5px;color:#bdcbbb;margin-top:3.5px}.distance-button{margin:0;flex-shrink:0;background:#35584c;color:#f4dfb2;border:0.5px solid #718768;border-radius:25px;font-size:10.5px;min-height:42px;padding:10px 9px}.distance-button[disabled]{color:#d1c5a9;background:#35584c;opacity:.75}.venue-actions{display:flex;flex-direction:column;gap:11px;margin-top:15px}.route-button{width:100%;box-shadow:0 2.5px 0 #11382f}.copy-address{display:flex;align-items:center;justify-content:center;gap:7.5px;padding:10px;color:#f0dfbd;border-radius:10px;border:0.5px solid #7a8c70;background:#214e46;font-size:12px;min-height:44px;letter-spacing:1px;margin:0}.copy-only{background:#e5c58e;color:#153d3d;border-color:#efd6ab;box-shadow:0 2.5px 0 #12372f}.copy-mark{font-size:16px;line-height:1}.copy-arrow{margin-left:auto;font-size:13px}.map-note{color:#bdccbb;font-size:10.5px;margin-top:11px;line-height:1.8}.journey-card-footer{display:flex;justify-content:space-between;align-items:center;border-top:0.5px dashed #7c8d7077;padding:9px 16px;color:#d7c399;font-size:9.5px;letter-spacing:1.5px}.journey-card-footer .serif{font-size:14px;color:#daab78}
.joy-snow{pointer-events:none;position:fixed;inset:0;overflow:hidden;z-index:3}.snow-piece{position:absolute;top:-35px;color:#e5c58e;font-family:"Songti SC",serif;opacity:0;animation-name:joy-fall;animation-timing-function:linear;animation-iteration-count:infinite;will-change:transform}.snow-piece:nth-child(3n + 1){color:#d6855c}

@keyframes photo-breathe{from{transform:scale(1)}to{transform:scale(1.035)}}@keyframes joy-fall{0%{transform:translate3d(0,-10vh,0) rotate(-25deg);opacity:0}12%{opacity:.36}75%{opacity:.25}100%{transform:translate3d(var(--sway),110vh,0) rotate(170deg);opacity:0}}@keyframes stamp-rock{0%,85%,100%{transform:rotate(-7deg)}90%{transform:rotate(2deg)}95%{transform:rotate(-11deg)}}@keyframes stamp-burst{0%{transform:translateX(15px) scale(.5);opacity:0}20%{opacity:1}100%{transform:translateX(90px) scale(.7);opacity:0}}@keyframes thread-drop{0%,100%{transform:translateY(0);opacity:.35}60%{transform:translateY(14px);opacity:1}}.primary-btn,.outline-btn{border-radius:14px}.invitation-button:hover{transform:translateY(-2px)}.invitation-button:active,.copy-address:active{transform:translateY(2px) scale(.98)}.button-copy{text-align:left}.seal{border-radius:5px 3px 6px 3px}.joy-stamp{display:flex;align-items:center;justify-content:center}.letter .stamp-wrap{margin:auto}.stamp-note{margin:11px 0 30px}.has-blessing{color:#f0d39f}.section-kicker{display:flex;align-items:center;gap:12px}.chapter-number{font-family:var(--serif);display:grid;place-items:center;border:1px solid #a5875c;width:26px;height:26px;border-radius:50%;font-size:14px}.names-details{position:relative;border:0}.names-details::after{content:'';position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,#b36948,#e5c58e,#b36948,transparent);transform:scaleX(0);transition:transform 1.2s .3s}.visible .names-details::after{transform:scaleX(1)}.album-item button{padding:5px;border-radius:5px;background:#e4cfab;transform:rotate(-2deg);position:relative;box-shadow:0 10px 20px #082c3033;overflow:visible}.album-item:nth-child(even) button{transform:rotate(2deg)}.album-item button::before{content:'';position:absolute;z-index:1;top:-5px;left:36%;width:28%;height:13px;background:#c68b566b;transform:rotate(-5deg)}.album-item img{border-radius:2px}.album-item:nth-child(even){transition-delay:.15s}.photo-label{margin-top:15px}.journey{align-items:start}.journey-card .venue-name{font-size:42px;color:#f0d4a3;margin-top:8px;line-height:1.4}.journey-card .venue-address{margin-top:12px;font-size:14px}.journey-card .venue-branch{font-size:17px;letter-spacing:2px}.journey-greeting{padding:22px}.journey-greeting .eyebrow{font-size:10px}.greeting-title{font-size:23px;margin-top:10px}.destination-details{padding:28px}.copy-address{width:100%;font:inherit;font-size:13px;min-height:48px}.copy-arrow{margin-left:auto}.journey-card-footer{font-size:11px;padding:14px 28px}.venue-actions{margin-top:23px}.button-title{font-size:16px}.button-subtitle{font-size:11px}.invitation-button{min-height:72px;gap:14px;padding:13px 16px}.button-seal{width:36px;height:40px;font-size:22px}.button-arrow{width:30px;height:30px;font-size:18px}.postmark{width:40px;height:47px;font-size:16px}.footer-actions .outline-btn{border-radius:40px}.snow-piece{font-size:14px}.hero-art .gold-dust{display:none}.still .joy-snow,.still .stamp-sparks{display:none}.still .joy-stamp,.still .scroll-thread::after{animation:none}.still .names-details::after{transform:scaleX(1);transition:none}.paused .snow-piece,.paused .hero-photo,.paused .joy-stamp,.paused .scroll-thread::after{animation-play-state:paused}
@media(max-width:600px){.hero-cta{margin:0 auto;max-width:285px}.scroll-note{margin-top:28px;font-size:10px}.journey{gap:28px}.journey-greeting{padding:21px 20px}.journey-greeting .eyebrow{font-size:9px}.greeting-title{font-size:20px;letter-spacing:0}.destination-details{padding:23px 21px}.journey-card .venue-name{font-size:38px}.journey-card .venue-branch{font-size:15px;letter-spacing:1px}.journey-card .venue-address{font-size:13px}.journey-card-footer{padding:14px 21px;font-size:10px}.stamp-note{font-size:10px;margin:14px 0 26px}.copy-address{min-height:48px}.section-kicker{font-size:9px}.chapter-number{width:23px;height:23px;font-size:12px}}
@media(prefers-reduced-motion:reduce){.joy-snow,.stamp-sparks{display:none}.names-details::after{transform:scaleX(1)}}
@media(max-width:600px){.journey{align-items:stretch}}
/* Five photo books, followed by the wedding-day timeline. */
.album-books{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:30px}.album-book{display:block;text-align:left;background:transparent;padding:0;margin:0;min-width:0;width:100%;color:#eddbb7;white-space:normal}.book-feature{grid-column:1/-1}.book-photo{display:block;position:relative;overflow:hidden;border:6px solid #e4cfab;border-radius:6px;background:#2a514c}.book-photo img{display:block;width:100%;height:280px;object-fit:cover;transition:transform .6s}.book-feature .book-photo img{height:390px;object-position:50% 45%}.album-book:hover img{transform:scale(1.025)}.book-number{position:absolute;left:12px;top:10px;background:#173d3dd9;border:1px solid #e1c99888;color:#f5deaf;padding:3px 12px;font:20px/1.5 Georgia,serif}.book-open{position:absolute;right:12px;bottom:12px;background:#173d3dea;padding:8px 16px;border-radius:30px;font-size:12px;color:#f4dfb4}.book-label{display:flex;justify-content:space-between;align-items:center;gap:8px;padding-top:13px;line-height:1.6}.book-label .serif{font-size:23px;letter-spacing:2px}.book-count{color:#c7caaa;font-size:12px;white-space:nowrap}.book-subtitle{display:block;font-size:13px;color:#bfcfbf;margin-top:4px}.schedule{max-width:950px}.guest-arrival{border-radius:12px;background:#e9d6af;color:#24463f;padding:24px 28px 0;border:1px solid #f5e4c6;max-width:620px;margin:auto}.arrival-heading{display:flex;align-items:center;justify-content:space-between;font-size:22px;letter-spacing:2px}.arrival-seal{border:1px solid #a74433;color:#a74433;padding:0 5px;font-size:25px;transform:rotate(-6deg)}.arrival-times{display:flex;align-items:center;justify-content:space-around;padding:22px 6px}.arrival-times>div{text-align:center}.arrival-time{display:block;font:48px/1.3 Georgia,serif;color:#163d38;letter-spacing:1px}.arrival-label{display:block;font-size:13px;margin-top:7px}.arrival-thread{color:#a68758;font-size:25px}.arrival-place{display:flex;justify-content:space-between;gap:8px;align-items:center;min-height:52px;border-top:1px dashed #ab916a;background:transparent;color:#27493e;padding:15px 0;font-size:13px;text-align:left}.arrival-place span:last-child{font-size:12px;white-space:nowrap}.schedule-phases{max-width:720px;margin:auto}.schedule-phase{padding-top:45px}.phase-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:25px}.phase-title{font-size:28px;letter-spacing:3px;color:#f0d4a3;display:flex;align-items:center;gap:15px}.phase-number{font:16px/1.4 Georgia,serif;letter-spacing:1px;color:#d2b181;border:1px solid #b9926399;border-radius:50%;width:34px;height:34px;display:flex;align-items:center;justify-content:center}.phase-subtitle{font-size:12px;color:#c0cbb9;margin-top:8px;letter-spacing:1px}.phase-place{flex-shrink:0;min-width:90px;min-height:44px;display:flex;align-items:center;justify-content:center;padding:10px 15px;border:1px solid #8c9775;border-radius:30px;background:#204b45;color:#e9d6ad;font-size:13px}.event-list{list-style:none;margin:0;padding:0}.schedule-event{display:flex;gap:24px;position:relative}.event-clock{width:85px;flex-shrink:0;text-align:right;font:26px/1.4 Georgia,serif;color:#e5c58e;padding-top:1px}.event-clock>*{display:block}.event-clock .event-end{font-size:18px;line-height:1.6}.event-clock .event-time-note{font-size:12px;line-height:1.6;color:#c2cbb9}.event-copy{position:relative;flex:1;min-width:0;padding:0 0 30px 25px;border-left:1px solid #8b987455}.event-copy::before{content:'';position:absolute;width:7px;height:7px;border:3px solid #123d40;border-radius:50%;background:#d3b17a;left:-6px;top:10px;box-shadow:0 0 0 1px #b69a6599}.event-title{font-size:22px;line-height:1.7;color:#f2dec0;margin:0}.event-detail{font-size:14px;line-height:1.9;color:#c8d4c4;margin-top:7px}.event-highlight .event-copy::before{background:#d66f50;box-shadow:0 0 0 4px #a7443330}.event-highlight .event-title,.event-highlight .event-clock{color:#f3d199}.schedule-event:last-child .event-copy{padding-bottom:10px;border-left-color:transparent}.schedule-note{max-width:720px;margin:35px auto 0;padding:25px 0;border-top:1px dashed #8b987455;font-size:13px;line-height:1.9;color:#c4cfbb}.schedule-note .serif{display:block;margin-top:12px;font-size:20px;color:#e8cda0;letter-spacing:3px}.venue-room{font-size:15px;color:#e9cb96;margin-top:10px}.venue-room:empty,.place-note:empty{display:none}.place-note{font-size:12px;color:#d9c196;line-height:1.8;margin-top:10px}
@media(max-width:600px){.album-books{gap:22px 14px}.book-photo{border-width:4px}.book-photo img{height:140px}.book-feature .book-photo img{height:205px}.book-number{left:7px;top:6px;font-size:13px;padding:2px 7px}.book-open{right:7px;bottom:7px;font-size:10px;padding:6px 10px}.book-label{padding-top:9px;gap:4px}.book-label .serif{font-size:17px;letter-spacing:1px}.book-count{font-size:10px}.book-subtitle{font-size:11px}.guest-arrival{padding:16px 16px 0}.arrival-heading{font-size:17px;letter-spacing:1px}.arrival-seal{font-size:20px}.arrival-time{font-size:33px}.arrival-label{font-size:11px}.arrival-times{padding:20px 0}.arrival-place{font-size:11px;min-height:48px;padding:13px 0}.arrival-place span:last-child{font-size:10px}.schedule-phase{padding-top:32px}.phase-title{font-size:22px;letter-spacing:2px;gap:9px}.phase-number{font-size:12px;width:28px;height:28px}.phase-subtitle{font-size:10px;letter-spacing:.3px}.phase-place{font-size:11px;min-width:78px;padding:8px 10px}.phase-heading{gap:10px;margin-bottom:22px}.schedule-event{gap:14px}.event-clock{width:58px;font-size:20px}.event-clock .event-end{font-size:14px}.event-clock .event-time-note{font-size:11px}.event-copy{padding-left:16px;padding-bottom:25px}.event-copy::before{top:9px}.event-title{font-size:17px}.event-detail{font-size:12px;line-height:1.9;margin-top:5px}.schedule-note{font-size:11px}.schedule-note .serif{font-size:17px}}

/* An always-on joy seal and quiet scroll details. */
.joy-emblem{display:flex;align-items:center;gap:9px;color:#d9bd90;flex-shrink:0}.emblem-date{font-size:10px;letter-spacing:2px;writing-mode:vertical-rl}.emblem-seal{position:relative;display:flex;align-items:center;justify-content:center;width:33px;height:36px;background:#9f4032;border:1px solid #daa271;border-radius:5px 2px 5px 2px;color:#ffe1af;font-size:23px;transform:rotate(-7deg)}.emblem-seal::after{content:'';position:absolute;inset:-4px;border:1px solid #c693604d;border-radius:7px 4px 7px 4px;animation:seal-glow 4s ease-in-out infinite}
.book-photo::after{content:'';position:absolute;inset:0;background:linear-gradient(110deg,transparent 32%,#fff5d73b 49%,transparent 66%);transform:translateX(-150%);pointer-events:none}.album-book:active .book-photo{transform:scale(.985)}.book-photo{transition:transform .45s}.book-open{border:1px solid #ead4a744;transition:background .3s}.book-label{position:relative;padding-bottom:8px}.book-label::after{content:'';position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,#ba9163,transparent);transform:scaleX(0);transform-origin:left;transition:transform 1.1s .15s}.section-kicker::after{content:'';display:block;height:1px;flex:1;max-width:80px;background:linear-gradient(90deg,#b29465,transparent);transform:scaleX(0);transform-origin:left;transition:transform 1.2s .2s}.event-highlight .event-copy::before{animation:time-pulse 3.5s ease-in-out infinite}.invitation-button .button-arrow{animation:invite-arrow 4s ease-in-out infinite}.postmark{animation:postmark-sway 8s ease-in-out infinite}.line-ornament{animation:ornament-glow 5s ease-in-out infinite}
@keyframes seal-glow{0%,100%{opacity:.4}50%{opacity:1}}@keyframes book-glint{to{transform:translateX(150%)}}@keyframes time-pulse{0%,100%{box-shadow:0 0 0 3px #a7443330}50%{box-shadow:0 0 0 7px #a7443308}}@keyframes invite-arrow{0%,75%,100%{transform:translate(0,0)}85%{transform:translate(2px,-2px)}}@keyframes postmark-sway{0%,100%{transform:rotate(10deg)}50%{transform:rotate(4deg)}}@keyframes ornament-glow{0%,100%{opacity:.65}50%{opacity:1}}.hero{padding-top:65px}.visible .section-kicker::after,.section-kicker.visible::after,.album-book.visible .book-label::after{transform:scaleX(1)}.album-book.visible .book-photo::after{animation:book-glint 1.5s .2s ease-out both}.photo-enter{animation:photo-arrive .45s ease both}@keyframes photo-arrive{from{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}
.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(540px,100%);padding:32px 20px calc(12px + env(safe-area-inset-bottom));z-index:10;background:linear-gradient(180deg,#123d4000,#123d40eb 42%,#123d40 75%);border:0;box-shadow:none;transition:opacity .38s ease;pointer-events:none}.nav-track{display:flex;position:relative;width:100%;pointer-events:auto}.bottom-nav.nav-quiet{opacity:.28}.bottom-nav:hover,.bottom-nav:focus-within{opacity:1}.bottom-nav a{position:relative;display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:53px;padding:9px 0 5px;background:transparent;color:#a8c0b4;font-size:13px;letter-spacing:3px;transition:color .4s,background .4s}.nav-number{font:9px/1.2 Georgia,serif;letter-spacing:2px;opacity:.55;transition:opacity .4s}.bottom-nav a::before{content:'';position:absolute;top:2px;left:calc(50% - 2px);width:4px;height:4px;background:#e8c287;transform:rotate(45deg);opacity:0;transition:opacity .4s}.bottom-nav a.active{color:#f5dbad;background:radial-gradient(ellipse at 50% 110%,#e5c58e16,transparent 70%)}.bottom-nav a.active::before{opacity:1}.bottom-nav a.active .nav-number{opacity:.95}
@media(max-width:600px){.hero{padding-top:40px}.bottom-nav{left:0;right:0;width:100%;transform:none;padding:30px 16px calc(8px + env(safe-area-inset-bottom))}.bottom-nav a{font-size:12px;letter-spacing:2px;min-height:48px}.nav-number{font-size:8px}}

.paused *,.paused *::before,.paused *::after{animation-play-state:paused!important}
.still *,.still *::before,.still *::after{animation:none!important;transition:none!important}.still .book-label::after,.still .section-kicker::after{transform:scaleX(1)}.still .bottom-nav.nav-quiet{opacity:1}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.bottom-nav.nav-quiet{opacity:1}.book-label::after,.section-kicker::after{transform:scaleX(1)}}

@media(max-width:350px){.greeting-title{font-size:16px}}

/* The silent portrait preserves the original photograph while loading. */
.us-photo{position:relative}.us-photo>img{display:block}.us-photo>.us-motion{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;opacity:0;transition:opacity .24s}.us-photo.motion-playing>.us-motion{opacity:1}@media(prefers-reduced-motion:reduce){.us-photo>.us-motion{display:none}}
/* Transparent botanical connectors between album books. */
.album-books{row-gap:86px}.album-book{position:relative;overflow:visible}.book-feature{margin-bottom:26px}.book-vine{position:absolute;left:0;right:0;bottom:-81px;height:72px;pointer-events:none;opacity:0;transition:opacity 1.2s .25s}.book-vine img{width:100%;height:100%;object-fit:contain}.album-book.visible .book-vine{opacity:.9}.book-vine.vine-reverse{transform:scaleX(-1)}.book-feature .book-vine{bottom:-110px;height:100px}.still .book-vine{opacity:.9}@media(max-width:600px){.album-books{row-gap:50px}.book-feature{margin-bottom:30px}.book-vine{bottom:-46px;height:42px}.book-feature .book-vine{bottom:-79px;height:74px}}@media(prefers-reduced-motion:reduce){.book-vine{opacity:.9;transition:none}}

/* A small embedded Song-style title face. */
.hero-copy h1,.photo-title,.section h2,.letter h2,.farewell h2{font-family:"Wedding Display","Songti SC","STSong",serif;font-weight:400}
.photo-title{bottom:28px;font-size:58px;letter-spacing:7px;line-height:1.4;color:#ffe3a9;text-shadow:0 1px 1px #a2784166,0 3px 11px #0e211bdd}
.title-words{display:flex;align-items:baseline;justify-content:center;gap:10px;padding-bottom:11px}
.title-last{display:inline-block;transform:translateY(5px)}
.title-dedication{display:block;font:9px/1.5 Georgia,serif;letter-spacing:4px;color:#dfc697;padding-left:4px;text-shadow:none}
.section h2{font-size:42px;letter-spacing:1.5px;line-height:1.65;color:#f4e4c7}
.section .story-title{line-height:1.5;letter-spacing:3px}
.story-first,.story-last{display:block}
.story-first{font-size:46px}
.story-last{position:relative;padding-left:42px;margin-top:5px;font-size:55px;color:#eac68e}
.story-last::before{content:'';position:absolute;left:0;top:52%;height:1px;width:25px;background:#bd9b6c}
.title-punctuation{font-size:.56em;color:#c1ae8b;letter-spacing:0}
.letter h2{color:#f1d6ab}
@media(max-width:650px){
 .hero{padding-top:26px}
 .photo-title{bottom:21px;font-size:46px;letter-spacing:4px}
 .title-words{gap:7px;padding-bottom:8px}
 .title-last{transform:translateY(4px)}
 .title-dedication{font-size:8px;letter-spacing:3px}
 .section h2{font-size:28px;letter-spacing:1px}
 .section .story-title{letter-spacing:2px}
 .story-first{font-size:32px}
 .story-last{padding-left:30px;margin-top:5px;font-size:39px}
 .story-last::before{width:18px}
 .letter h2{font-size:23px;letter-spacing:1px}
 .bottom-nav a{font-size:12px;letter-spacing:2px}
}
@media(max-width:360px){.photo-title{font-size:38px}.section h2{font-size:25px}.story-first{font-size:29px}.story-last{font-size:35px;padding-left:25px}.letter h2{font-size:20px}}
