:root{--paper:#f5f1e8;--ink:#414b38;--muted:#858675;--gold:#b39b72;--line:#d8d3c3;--serif:'Songti SC','STSong','SimSun',serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0;color:var(--ink);background:#dfdfd3;font-family:var(--serif);-webkit-font-smoothing:antialiased}body:before{content:'';position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at 10% 20%,#f3f0df99,transparent 60%),radial-gradient(ellipse at 95% 95%,#9da58b66,transparent 55%)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:5px}main{position:relative;max-width:540px;margin:0 auto;background:var(--paper);box-shadow:0 0 80px #414b3815;overflow:hidden;padding-bottom:40px;background-image: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='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%239a8d73' opacity='.04' filter='url(%23n)' d='M0 0h160v160H0z'/%3E%3C/svg%3E")}button{border:0;background:none;color:inherit}.symbols{position:absolute;width:0;height:0}.desktop-note{position:fixed;left:max(24px,calc(50% - 530px));top:42%;width:210px;text-align:center}.desktop-note>span{font:10px/1.5 Georgia,serif;letter-spacing:2.5px}.desktop-note p{font-size:22px;letter-spacing:4px}.desktop-note i{font:italic 28px Georgia;color:var(--gold)}.note-line{width:30px;height:1px;background:var(--gold);margin:26px auto}.desktop-note small{font-size:12px;letter-spacing:2px}.draft{font:11px/28px sans-serif;color:#777a69;background:#e9e8dc;text-align:center;letter-spacing:1px}header{height:66px;display:flex;align-items:center;justify-content:space-between;padding:0 30px;border-bottom:1px solid #d8d3c366}.brand{font:18px Georgia;letter-spacing:2px}.brand i{color:var(--gold);font-style:italic}.brand span{font:11px var(--serif);border-left:1px solid var(--line);padding-left:13px;margin-left:9px;letter-spacing:3px}.icon-btn{font:25px Georgia;width:40px;height:40px}.hero{text-align:center;padding:28px 30px 42px}.eyebrow{font:9px/1.7 Georgia,serif;letter-spacing:2.5px;color:var(--muted);margin:0 0 22px}.hero-art{position:relative;margin:25px 0 27px;padding:0 22px}.arch{position:relative;aspect-ratio:.79;border-radius:48% 48% 0 0;border:1px solid #acae96;padding:10px;background:linear-gradient(145deg,#e8e8db,#e1e2d1 55%,#f0e9da);box-shadow:inset 0 0 70px #fff5}.arch-inner{border:1px solid #a7ab9455;border-radius:48% 48% 0 0;position:relative;height:100%;display:flex;align-items:center;flex-direction:column;justify-content:center;padding-top:20px;overflow:hidden}.tiny{font:7px Georgia;letter-spacing:2px}.hero-script{font:italic 40px Georgia;color:#818a70;margin:21px 0 10px}.vow-seal{font-size:17px;border:1px solid #9b8b66;color:#a38e69;width:34px;line-height:34px;transform:rotate(-7deg);margin:2px auto 14px}.hero h1{font-size:35px;font-weight:400;letter-spacing:9px;line-height:1.65;margin:3px 0 20px;padding-left:9px}.cover-note{font:9px sans-serif;color:#8d907e;letter-spacing:1px}.cover-flower{position:absolute;width:180px;height:180px;bottom:-87px;right:-20px;opacity:.3}.branch{position:absolute;width:128px;height:240px;z-index:2;color:#7e896d;pointer-events:none}.branch.left{left:-40px;bottom:-17px;transform:rotate(-23deg)}.branch.right{right:-38px;top:-16px;transform:rotate(155deg)}.vertical{position:absolute;right:3px;top:36%;writing-mode:vertical-rl;letter-spacing:2px;font:7px Georgia}.names{display:flex;justify-content:center;align-items:center;gap:24px;font-size:24px;letter-spacing:3px}.names i{font:italic 28px Georgia;color:var(--gold)}.date{font:19px Georgia;letter-spacing:3px;margin:18px 0 28px}.date b{color:var(--gold);font-weight:400}.date span{font:11px var(--serif);letter-spacing:2px;margin-left:10px}.scroll-hint{font-size:10px;letter-spacing:3px;color:var(--muted)}.scroll-hint span{display:block;margin:15px auto 0;font:19px Georgia;animation:float 2s infinite}.scripture{text-align:center;padding:60px 30px 64px;border-top:1px solid var(--line);margin:0 30px}.fine-cross{font-size:21px;color:var(--gold);margin:4px 0 22px}h2{font-weight:400;font-size:25px;letter-spacing:3px;line-height:1.6;margin:0 0 23px}blockquote{font-size:24px;letter-spacing:3px;line-height:1.9;margin:30px 0 20px}cite{font-style:normal;font-size:10px;letter-spacing:2px;color:var(--muted)}.divider{display:flex;align-items:center;gap:16px;justify-content:center;color:var(--gold);font-size:12px;margin:30px auto}.divider:before,.divider:after{content:'';height:1px;width:39px;background:var(--line)}.body-copy,.section-intro{font-size:13px;line-height:2.3;letter-spacing:1px;color:#747865}.invitation{margin-top:22px}.memories{padding:44px 30px 52px}.section-heading{display:flex;justify-content:space-between;align-items:end}.section-heading .eyebrow{margin-bottom:12px}.section-heading h2{margin:0}.photo-count{font:italic 40px Georgia;color:#adb198;text-align:center;line-height:.9}.photo-count small{display:block;font:7px Georgia;letter-spacing:1px;margin-top:7px}.section-intro{margin:21px 0 25px}.gallery{display:grid;grid-template-columns:1fr 1fr;gap:12px}.photo-tile{position:relative;display:block;aspect-ratio:.78;padding:0;overflow:hidden;background:#e3e3d5;border:1px solid #d4d6c4}.photo-tile:first-child{grid-column:1/-1;aspect-ratio:1.35}.photo-tile:nth-child(3n){background:#e8e1d5}.photo-tile:nth-child(4n){background:#d9ded2}.photo-tile.hidden{display:none}.photo-tile img{width:100%;height:100%;object-fit:cover;transition:transform .7s}.photo-tile:hover img{transform:scale(1.035)}.placeholder{position:absolute;inset:9px;border:1px solid #9aa18455;display:flex;align-items:center;justify-content:center;flex-direction:column}.placeholder svg{width:55%;height:60%;position:absolute;bottom:-10%;right:-10%;opacity:.4}.placeholder b{font:italic 35px Georgia;color:#8c947a;font-weight:400}.placeholder small{font:9px sans-serif;letter-spacing:2px;color:#7c836e;margin-top:12px}.photo-tile:first-child .placeholder b{font-size:48px}.photo-number{position:absolute;bottom:12px;left:12px;background:#f5f1e8c9;font:9px Georgia;padding:5px 8px;letter-spacing:1px}.outline-btn{border:1px solid #aeb19c;width:100%;font-size:12px;letter-spacing:2px;padding:15px;margin-top:19px;display:flex;justify-content:space-between}.photo-note{text-align:center;color:var(--muted);font:10px/1.6 sans-serif;margin:15px 0 0}.second-verse{position:relative;background:#48523f;color:#f0eddd;text-align:center;padding:72px 25px;overflow:hidden}.second-verse .eyebrow,.second-verse cite{color:#cacbb5}.second-verse h2{font-size:22px}.second-verse blockquote{font-size:19px;line-height:2;letter-spacing:2px}.second-verse em{display:block;font-style:normal;font-size:28px;margin-top:20px;letter-spacing:4px}.second-verse p:last-child{color:#d3d4c4;font-size:12px;line-height:2.3;letter-spacing:2px}.verse-flower{position:absolute;width:260px;height:260px;right:-130px;top:10px;opacity:.17}.second-verse .divider:before,.second-verse .divider:after{background:#bdbe9b44}.celebration{padding:66px 30px;text-align:center}.celebration h2{font-size:24px}.date-card{border:1px solid #c2c5ae;padding:27px 30px 0;max-width:285px;margin:34px auto;background:#eeeddf77;position:relative}.date-card:before{content:'';position:absolute;inset:5px;border:1px solid #c2c5ae55;pointer-events:none}.month{font:12px Georgia;letter-spacing:4px}.date-card strong{font:112px/.95 Georgia;display:block;letter-spacing:-6px;margin:15px 0 11px}.date-line{display:flex;justify-content:space-between;font-size:12px;letter-spacing:2px;border-top:1px solid #c2c5ae;border-bottom:1px solid #c2c5ae;padding:12px 0}.date-card p{font-size:11px;letter-spacing:1px;margin:18px 0 22px}.time-info{font-size:11px;border-top:1px solid #c2c5ae;padding:15px 0;color:var(--muted)}.countdown-title{font-size:12px;letter-spacing:2px;margin:35px 0 20px}.countdown{display:flex;align-items:center;justify-content:center;gap:13px}.countdown strong{font:36px Georgia;font-variant-numeric:tabular-nums}.countdown span{display:block;font:8px Georgia;letter-spacing:1px;color:var(--muted);margin-top:9px}.countdown b{align-self:flex-start;font:25px Georgia;color:var(--gold);margin-top:4px}.countdown-note{font:9px sans-serif;color:var(--muted);margin:19px 0 10px}.text-btn{font-size:11px;letter-spacing:1px;text-decoration:underline;text-underline-offset:5px;padding:14px}.location{text-align:center;padding:13px 30px 55px}.location h2{font-size:24px}.venue{border:1px solid var(--line);padding:26px 19px 13px;margin-top:28px}.venue-icon{font:32px Georgia;color:var(--gold)}h3{font-size:25px;font-weight:400;letter-spacing:4px;margin:10px 0}.venue-sub{font-size:13px;letter-spacing:3px;margin:10px}.rule{height:1px;width:36px;background:var(--gold);margin:21px auto}address{font-style:normal;font-size:12px;line-height:2;letter-spacing:1px;color:#747865}.map-preview{display:block;height:255px;position:relative;overflow:hidden;margin-top:24px;background:#e2e8dd}.map-preview img{width:100%;height:100%;object-fit:cover;object-position:50% 27%;filter:saturate(.6)}.map-preview>span{position:absolute;bottom:0;left:0;right:0;padding:12px;font:11px sans-serif;color:#fff;background:#414b38df;letter-spacing:1px}.map-caption{font:9px/1.6 sans-serif;color:var(--muted);margin:10px 0 18px}.primary-btn{padding:17px;background:var(--ink);color:var(--paper);font-size:13px;letter-spacing:3px;display:flex;justify-content:center;gap:25px}.primary-btn span{font:17px Georgia}footer{text-align:center;padding:25px 25px 75px}footer>svg{width:75px;height:100px;transform:rotate(22deg);color:#8e997d}.footer-script{font:italic 23px Georgia;color:var(--gold);margin:18px 0}footer h2{font-size:21px;margin:22px 0}.footer-names{font-size:17px;letter-spacing:3px}.footer-names i{font:italic 23px Georgia;color:var(--gold);margin:0 12px}footer p:not(.footer-script){font-size:11px;letter-spacing:3px;margin:20px}footer small{font-size:9px;letter-spacing:2px;color:var(--muted)}.bottom-nav{position:fixed;z-index:10;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,540px);background:#f5f1e8f5;backdrop-filter:blur(12px);border-top:1px solid #d8d3c3;display:flex;padding:10px 20px max(12px,env(safe-area-inset-bottom));justify-content:space-around}.bottom-nav a{display:flex;align-items:center;gap:7px;font:20px Georgia;min-height:30px}.bottom-nav span{font:11px var(--serif);letter-spacing:2px}.toast{position:fixed;z-index:50;bottom:100px;left:50%;transform:translateX(-50%) translateY(15px);opacity:0;pointer-events:none;background:#343d30ee;color:#fff;padding:16px 22px;font:12px/1.8 sans-serif;width:max-content;max-width:85vw;text-align:center;transition:.25s}.toast.visible{opacity:1;transform:translateX(-50%) translateY(0)}dialog{border:0;background:#20251eee;color:#fff;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;padding:65px 20px 30px;margin:0}dialog::backdrop{background:#20251e}dialog[open]{display:flex;flex-direction:column;align-items:center;justify-content:center}#large-photo{max-width:100%;max-height:72vh;object-fit:contain}.close-photo{position:absolute;right:20px;top:14px;color:white;font:36px Georgia;width:45px;height:45px}.photo-controls{display:flex;gap:45px;align-items:center;font:13px Georgia}.photo-controls button{font:26px Georgia;padding:10px;color:white}#large-caption{font-size:12px}.reveal{opacity:1;transform:none}.animate-reveal{opacity:0;transform:translateY(18px);transition:opacity .8s,transform .8s}.animate-reveal.in-view{opacity:1;transform:none}@keyframes float{50%{transform:translateY(5px)}}@media(min-width:900px){main{margin:24px calc(50% - 270px + 80px) 24px}.bottom-nav{left:calc(50% + 80px)}.hero{padding-top:35px}}@media(max-width:899px){.desktop-note{display:none}}@media(max-width:370px){.hero{padding-left:22px;padding-right:22px}.hero h1{font-size:30px}.hero-script{font-size:32px}.tiny{font-size:6px}.names{font-size:21px;gap:18px}.memories,.celebration,.location{padding-left:22px;padding-right:22px}.countdown{gap:10px}.countdown strong{font-size:31px}h2{font-size:23px}.second-verse h2{font-size:21px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.animate-reveal{opacity:1;transform:none}}
/* Complete photographs retain their original composition. */
.hero{padding:0 0 42px}.poster-cover{display:block;width:100%;padding:0;line-height:0}.poster-cover img{display:block;width:100%;height:auto}.hero-caption{margin:35px 0 17px}.hero .hero-title{font-size:23px;line-height:1.7;font-weight:400;letter-spacing:4px;padding:0;margin:0 0 27px}.hero .scroll-hint{display:block;margin-top:24px}.memories{padding-left:24px;padding-right:24px}.gallery{display:block}.photo-chapter{margin:42px 0}.chapter-heading{text-align:center;margin-bottom:20px}.chapter-heading .eyebrow{font-size:8px;margin-bottom:9px}.chapter-heading h3{font-size:22px;letter-spacing:4px}.chapter-note{font-size:11px;letter-spacing:1px;color:var(--muted);line-height:1.9;margin:12px 0 20px}.chapter-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.photo-tile,.photo-tile:first-child{aspect-ratio:2/3;grid-column:auto;border:0;background:#e8e4db}.photo-tile:first-child{grid-column:1/-1}.photo-tile.landscape{grid-column:1/-1;aspect-ratio:3/2}.photo-tile img{display:block;object-fit:contain}.photo-tile:only-child{grid-column:1/-1}.chapter-1 .photo-tile:first-child,.chapter-2 .photo-tile:first-child{grid-column:auto}.photo-number{left:7px;bottom:7px;font-size:8px;background:#f5f1e8df}.photo-chapter:after{content:'✦';display:block;text-align:center;color:var(--gold);margin-top:35px;font-size:10px}.photo-chapter:last-child:after{display:none}@media(max-width:370px){.hero{padding:0 0 35px}.hero .hero-title{font-size:21px}.memories{padding-left:20px;padding-right:20px}}@media(min-width:900px){.hero{padding-top:0}}
