:root{--paper:#f9f8f2;--green:#46553b;--ink:#313b30;--muted:#707866}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#e8ecdf;color:var(--ink);font-family:"Songti SC","STSong","Noto Serif CJK SC",serif;font-size:16px}button{font:inherit;cursor:pointer}button:focus-visible{outline:2px solid #bfa965;outline-offset:5px}main{max-width:520px;margin:auto;background:var(--paper);box-shadow:0 0 100px #35432b12;overflow:hidden}.desktop-note{position:fixed;left:max(30px,calc(50% - 580px));top:40%;color:#667459}.desktop-note span{font-size:22px;font-style:italic;line-height:1.55;letter-spacing:2px}.desktop-note p{font-size:14px;letter-spacing:3px;margin-top:24px}.desktop-right{position:fixed;right:max(30px,calc(50% - 480px));top:43%;writing-mode:vertical-rl;letter-spacing:4px;font-size:13px;color:#667459;display:flex;gap:30px}.desktop-right span{font-size:15px;letter-spacing:8px}.cover{height:100svh;min-height:680px;max-height:960px;position:relative;color:#ffffe6;overflow:hidden;background:#354832}.cover-photo{width:100%;height:100%;object-fit:cover;object-position:50% 53%;animation:pullback 13s cubic-bezier(.18,.5,.2,1) both}.cover-shade{position:absolute;inset:0;background:linear-gradient(#14251959 0%,#14251912 45%,#10231500 65%,#162714a6 100%)}.cover-top{position:absolute;top:26px;left:26px;right:26px;display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid #ffffe663;padding-bottom:17px;font-size:12px;letter-spacing:2px}.cover-title{position:absolute;top:13%;width:100%;text-align:center;animation:appear 2s .4s both;text-shadow:0 2px 12px #23332250}.cover-title>p{font-size:14px;letter-spacing:4px;margin-bottom:16px}h1{font-size:clamp(46px,11vw,66px);font-weight:400;line-height:1.1;margin:0;letter-spacing:-2px}h1 em{font-weight:400;font-size:1.15em}.cover-names{font-size:18px;margin-top:20px;letter-spacing:3px}.cover-names i{margin:0 10px;font-size:24px}.open-invitation{position:absolute;bottom:44px;left:50%;transform:translateX(-50%);white-space:nowrap;color:#ffffe6;background:none;border:0;border-bottom:1px solid #ffffe680;padding:12px 8px;font-size:15px;letter-spacing:3px}.open-invitation span{margin-left:16px}.replay{position:absolute;bottom:54px;right:20px;background:#25362240;color:#ffffe6;border:1px solid #ffffe64d;border-radius:50%;width:36px;height:36px;font-size:22px}.eyebrow{font-family:Georgia,serif;font-size:12px;letter-spacing:2.8px;color:var(--muted)}.letter{text-align:center;padding:82px 24px 56px}h2{font-size:31px;font-weight:400;line-height:1.65;letter-spacing:3px;margin:24px 0}.little-rule{width:1px;height:42px;background:#a4ae92;margin:28px auto}.poem{line-height:2.2;font-size:16px;margin:24px 0;color:#626957}.signature{font-family:Georgia,serif;font-size:24px;font-style:italic;color:#69765c;margin-top:34px}.signature em{font-size:36px}.moment{padding:24px 38px 62px;text-align:center}.moment figure{margin:0;padding:12px 12px 19px;background:#fff;transform:rotate(-3deg);box-shadow:0 9px 32px #39452812}.moment img{width:100%;display:block;aspect-ratio:2/3;object-fit:cover}.moment figcaption{font-size:11px;letter-spacing:2px;margin-top:18px;color:#68705f}.moment>p{font-size:15px;letter-spacing:2px;margin-top:35px;color:#626957}.details{padding:55px 38px;background:#edf0e5;text-align:center}.details h2{margin:18px 0 25px}.couple{display:flex;align-items:center;justify-content:center;gap:21px;padding-bottom:30px;font-size:20px}.couple i{font:italic 28px Georgia;color:#8c977a}.event-line{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #cbd3bf;padding:21px 0;font-size:16px;gap:18px;text-align:left}.event-line span{color:#68735e}.event-line strong{font-weight:400}.detail-note{font-size:14px;line-height:2;color:#68735e;margin:26px 0 0}.memories{padding:65px 22px 55px}.memories header{text-align:center;margin-bottom:32px}.memories h2{font-size:27px;margin:16px 0}.memories header>p:last-child{font-size:15px;color:#707866}.photo-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.photo-grid button{border:0;padding:0;background:#e4e7dd;display:block;overflow:hidden;min-width:0}.photo-grid img{width:100%;height:100%;aspect-ratio:2/3;object-fit:cover;display:block;transition:transform .6s}.photo-grid button:hover img{transform:scale(1.04)}.photo-grid .wide{grid-column:1/-1}.photo-grid .wide img{aspect-ratio:3/2}.closing{position:relative;color:#fff7e3}.closing>img{display:block;width:100%;aspect-ratio:2/3;object-fit:cover}.closing>div{position:absolute;inset:0;padding:30px;display:flex;flex-direction:column;justify-content:flex-end;background:linear-gradient(transparent 35%,#182224cf)}.closing .eyebrow{color:#e5e9d7;font-size:11px}.closing h2{margin:8px 0;font-size:34px}.closing p:last-child{font-size:15px;line-height:1.8}footer{text-align:center;padding:40px 20px 30px}footer p{font:12px Georgia;letter-spacing:3px;color:#77846b}footer span{display:block;margin:18px 0;font-size:15px;letter-spacing:4px}footer button{font-size:14px;border:0;background:none;color:#74806a;padding:14px}dialog{border:0;padding:0;background:#171d17;color:white;width:min(96vw,780px);max-width:96vw;max-height:94svh;overflow:hidden}dialog::backdrop{background:#101610e8}#large-photo{display:block;width:100%;height:calc(90svh - 65px);object-fit:contain}#close-photo{position:absolute;right:12px;top:10px;color:white;border:0;border-radius:50%;background:#172016aa;width:44px;height:44px;font-size:30px}.photo-controls{display:flex;justify-content:space-between;align-items:center;height:60px;padding:0 20px;font-size:14px}.photo-controls button{background:none;border:0;color:white;font-size:24px;padding:8px 20px}@keyframes pullback{from{transform:scale(1.22)}to{transform:scale(1)}}@keyframes appear{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}@media(max-width:1000px){.desktop-note,.desktop-right{display:none}}@media(max-width:380px){.cover{min-height:620px}.cover-top{font-size:11px;letter-spacing:1px}.cover-title{top:14%}.replay{right:12px;bottom:105px}.details{padding-left:25px;padding-right:25px}h2{font-size:28px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}
/* Invitation details and composed photographic chapters */
.details{padding:62px 32px 0;background:#edf0e5}.details .day-date{font-family:Georgia,serif;font-size:clamp(34px,9vw,47px);letter-spacing:0;margin:18px 0 12px;line-height:1.3}.day-date span{color:#99a185;padding:0 4px}.lunar{font-size:15px;color:#67725b;letter-spacing:1px}.couple{margin-top:32px;gap:34px}.couple>span{min-width:80px}.couple small{font-size:12px;font-weight:400;display:block;letter-spacing:3px;color:#758069;margin-bottom:10px}.banquet{border-top:1px solid #cad3bd;border-bottom:1px solid #cad3bd;padding:22px 0 26px}.banquet .banquet-time{font:44px Georgia,serif;margin:0 0 12px;letter-spacing:3px}.banquet>p:nth-child(2){font-size:18px;letter-spacing:5px;margin:0 0 12px}.banquet>span{font-size:14px;color:#67725b}.toast{font:italic 42px Georgia,serif;margin:33px 0;color:#7c896b}.venue{background:#e4ead9;margin:0 -32px;padding:36px 25px 46px}.venue h3{font-size:25px;font-weight:400;letter-spacing:2px;margin:22px 0 14px}.hall{font-size:18px;margin:16px 0 25px}.venue address{font-style:normal;font-size:16px;line-height:1.9;color:#647158}.memories{padding:65px 0 0}.memories>header{padding:0 22px;margin-bottom:8px}.album-chapter{padding-top:42px}.chapter-heading{padding:0 32px 28px;position:relative}.chapter-heading>span{font:italic 46px Georgia,serif;color:#b3bca4;float:left;margin-right:20px;line-height:1.2}.chapter-heading h3{font-size:22px;font-weight:400;letter-spacing:3px;margin:0 0 10px;padding-top:4px}.chapter-heading p{font:10px Georgia,serif;letter-spacing:1.8px;margin:0;color:#7e8872}.album-photo{margin:0;min-width:0}.album-photo button{display:block;padding:0;width:100%;border:0;background:transparent}.album-photo img{width:100%;height:auto;display:block}.album-photo figcaption{font:10px Georgia,serif;letter-spacing:1.8px;color:#7c836e;line-height:1.6;text-align:center;padding:15px 4px 5px}.white-story .album-spread{display:grid;grid-template-columns:1.15fr 1fr;gap:0 18px;padding:0 28px 60px}.white-story .shot-1{grid-column:1;grid-row:1/3;align-self:start;background:#fff;padding:8px 8px 12px;transform:rotate(-3deg);box-shadow:0 7px 24px #39452815;z-index:1}.white-story .shot-2{grid-column:2;grid-row:1;margin-top:85px;transform:rotate(3deg);padding:6px;background:#fff;box-shadow:0 7px 24px #39452812}.white-story .shot-3{grid-column:1;grid-row:3;width:64%;margin:28px 0 0 17px}.white-story .shot-3 img{border-radius:100px 100px 0 0}.sunset-story{background:#f0ede3;padding-bottom:50px}.sunset-story .album-spread{display:grid;grid-template-columns:1fr 1fr;gap:30px 18px}.sunset-story .shot-1{grid-column:1/-1}.sunset-story .shot-1 figcaption{text-align:right;padding-right:25px}.sunset-story .shot-2{margin-left:29px;margin-top:6px}.sunset-story .shot-3{margin-right:29px;margin-top:78px}.sunset-story .shot-2 img{border-radius:120px 120px 0 0}.joy-story{padding-bottom:46px}.joy-story .album-spread{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding:0 25px}.joy-story .shot-1{grid-column:1/-1;width:90%;margin:0 auto 20px;padding:8px 8px 12px;background:white;transform:rotate(-2deg);box-shadow:0 7px 24px #39452812}.joy-story .shot-2{margin-top:0}.joy-story .shot-3{margin-top:52px}.joy-story .shot-4{grid-column:1/-1;margin:18px -25px 0}.joy-story .shot-5{grid-column:1/-1;width:78%;margin:16px auto 0;padding:8px;background:white;transform:rotate(3deg)}@media(max-width:380px){.chapter-heading{padding-left:22px;padding-right:22px}.chapter-heading h3{font-size:20px;letter-spacing:1px}.chapter-heading p{letter-spacing:.7px}.white-story .album-spread{padding-left:21px;padding-right:21px;gap:0 14px}.white-story .shot-2{margin-top:60px}.venue h3{font-size:23px}}
.guest-section{padding:60px 30px;background:#f9f8f2}.guest-section>h2,.guest-section>.eyebrow,.guest-intro{text-align:center}.guest-section h2{font-size:27px}.guest-intro{font-size:15px;line-height:1.8;color:#69765d}.guest-section form{margin-top:30px}.guest-section label:not(.choice){display:block;font-size:15px;line-height:1.8;margin-bottom:18px}.guest-section input:not([type=radio]),.guest-section textarea{display:block;width:100%;margin-top:8px;border:1px solid #c9d0bd;background:#fffef9;border-radius:3px;padding:12px;line-height:1.5;color:#313b30;font-family:inherit;font-size:16px}.guest-section input:focus,.guest-section textarea:focus{outline:2px solid #819469;outline-offset:2px}.guest-section fieldset{border:0;padding:0;margin:0 0 20px;display:flex;flex-wrap:wrap;gap:16px}.guest-section legend{margin-bottom:12px;font-size:15px}.choice{display:flex;align-items:center;gap:8px;min-height:44px}.choice input{accent-color:#526443;width:18px;height:18px}.privacy-note{font-size:13px;line-height:1.8;color:#737d67}.action-button{display:inline-flex;align-items:center;justify-content:center;min-height:46px;background:#536546;color:#fffdf3;text-decoration:none;border:1px solid #536546;border-radius:2px;padding:12px 20px;font-size:16px;letter-spacing:1px}.action-button:disabled{opacity:.6;cursor:wait}.guest-section form>.action-button{width:100%;margin-top:8px}.text-button{background:none;border:0;color:#536546;text-decoration:underline;text-underline-offset:5px;padding:12px;font-size:14px;cursor:pointer}.form-status{font-size:14px;line-height:1.8;min-height:1em;color:#566946;margin:12px 0}.form-status.error{color:#963e36}.venue-actions{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:23px}.wishes-section{background:#edf0e5}#wish-list{margin-top:30px}#wish-list article{border-top:1px solid #cbd3bf;padding:20px 0}#wish-list article strong{font-size:16px;font-weight:400}#wish-list article time{float:right;font-size:12px;color:#748068}#wish-list article p{font-size:16px;line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere}.floating-actions{position:fixed;z-index:5;top:88px;right:max(14px,calc((100vw - 520px)/2 + 14px));display:flex;flex-direction:column;align-items:flex-end;gap:8px;max-width:calc(100vw - 28px)}.floating-buttons{display:flex;gap:8px}.floating-actions button{width:42px;height:42px;padding:0;display:flex;align-items:center;justify-content:center;border-radius:50%;color:#fffbea;background:#354b3696;border:1px solid #dce7c959;font-size:18px;line-height:1;box-shadow:0 2px 10px #1523161f;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.floating-actions button span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.floating-status{background:#f9f8f2;color:#536546;font-size:13px;padding:0 10px;line-height:1.8;margin:0;text-align:right}.floating-status:empty{display:none}.floating-status.error{color:#963e36}.share-guide{position:fixed;inset:0;z-index:20;background:#1c2a1ce6;color:#fffdf3;display:flex;flex-direction:column;align-items:flex-end;padding:10px 22px 0}.share-guide-arrow{font-size:40px;line-height:1;margin:0 4px 0 0;animation:share-point 1.4s ease-in-out infinite}.share-guide-text{font-size:17px;line-height:1.9;text-align:right;margin-top:12px}.share-guide-text b{font-size:22px;letter-spacing:3px}.share-guide button{align-self:center;margin-top:34px;color:#fffdf3;background:none;border:1px solid #fffdf380;border-radius:30px;padding:11px 28px;font-size:15px;cursor:pointer}@keyframes share-point{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}@media (prefers-reduced-motion:reduce){.share-guide-arrow{animation:none}}#owner-link{display:block;color:#75836a;font-size:13px;padding:10px}#owner-link[hidden],[hidden]{display:none!important}.response-page{padding:40px 22px;min-height:100vh}.response-page h1{line-height:1.6;font-family:inherit;letter-spacing:2px;font-size:32px}.response-page article{padding:20px 0;border-top:1px solid #cad3bd}.response-page article p{line-height:1.8;white-space:pre-wrap;overflow-wrap:anywhere}
/* Native swipe stacks keep the existing photographic spreads compact. */
.photo-stack{display:flex;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain;width:100%;aspect-ratio:2/3;background:#e5e7df;border-radius:0}.photo-stack::-webkit-scrollbar{display:none}.photo-stack.landscape{aspect-ratio:3/2}.album-photo .photo-stack .stack-slide{flex:0 0 100%;min-width:0;width:100%;height:100%;padding:0;scroll-snap-align:start;scroll-snap-stop:always;display:block;border:0;border-radius:0}.album-photo .photo-stack img{width:100%;height:100%;object-fit:contain;border-radius:0!important;aspect-ratio:auto}.photo-stack:focus-visible{outline:2px solid #73855e;outline-offset:3px}.stack-controls{display:flex;align-items:center;justify-content:space-between;gap:4px;min-height:34px;margin-top:4px;color:#67765a}.album-photo .stack-controls button{display:inline-flex;align-items:center;justify-content:center;width:36px;min-width:36px;min-height:36px;border:0;background:none;color:#536546;font:24px Georgia;cursor:pointer}.stack-controls button:disabled{opacity:.25;cursor:default}.stack-controls>span{font-family:Georgia,serif;font-size:12px;white-space:nowrap;letter-spacing:1px}.white-story .shot-3 .photo-stack,.sunset-story .shot-2 .photo-stack{border-radius:120px 120px 0 0}.white-story .shot-2{margin-top:68px}.white-story .album-spread{padding-bottom:38px}.sunset-story{padding-bottom:28px}.joy-story{padding-bottom:26px}
/* Feature the bride's lace-veil portrait in the final frame of chapter 01. */
.white-story .album-spread{grid-template-columns:1.15fr 1fr;gap:28px 20px;padding:0 28px 40px}.white-story .shot-1{grid-column:1;grid-row:1;width:100%;margin:0;padding:8px 8px 12px;transform:rotate(-3deg);align-self:start;box-shadow:0 7px 24px #39452815}.white-story .shot-2{grid-column:2;grid-row:1;width:100%;margin:65px 0 0;padding:6px;transform:rotate(3deg);align-self:start}.white-story .shot-3{grid-column:1/-1;grid-row:2;width:100%;margin:4px 0 0;padding:10px 10px 14px;background:#fff;transform:none;box-shadow:0 8px 28px #39452812}.white-story .shot-3 .photo-stack{border-radius:0;background:#dce0dc}.white-story .shot-3 img{border-radius:0}@media(max-width:380px){.white-story .album-spread{padding-left:22px;padding-right:22px;gap:24px 16px}.white-story .shot-2{margin-top:52px}.white-story .shot-3{margin-top:4px;padding:8px 8px 12px}}
