:root{--cream:#f7f3eb;--red:#761f2b;--ink:#342724;--muted:#8d8176}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--cream);color:var(--ink);font-family:"Songti SC","Noto Serif CJK SC","STSong",serif}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:3px solid #c0884a;outline-offset:5px}p{line-height:1.95}img{display:block;width:100%;height:100%;object-fit:cover}.top{height:85px;margin:0 6%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #761f2b30;font-size:12px;letter-spacing:2px}.top>a:first-child{font-size:26px;letter-spacing:5px}.top i{font-size:18px;font-weight:normal}.top>a:last-child{margin-right:55px}.top span{font-family:Georgia,serif;font-size:10px}.music{position:fixed;z-index:10;right:24px;top:23px;border:1px solid #a28077;background:#f7f3ebec;border-radius:50%;width:40px;height:40px;color:var(--red);font-size:22px}.music.playing span{display:block;animation:spin 6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.progress{position:fixed;left:0;top:0;z-index:12;height:3px;background:var(--red);width:0}.hero{max-width:1440px;margin:auto;padding:48px 6% 0;display:grid;grid-template-columns:1fr 47%;gap:0 6%;align-items:center}.hero-copy{text-align:center;padding:35px 0}.eyebrow{font-family:Georgia,serif;letter-spacing:3px;font-size:10px;color:var(--red);margin:0 0 28px}.hero .eyebrow{font-size:14px;letter-spacing:8px}.script{font-style:italic;font-size:26px;font-family:Georgia,serif;color:var(--red);margin-bottom:14px}.hero h1{font-size:clamp(30px,3.4vw,55px);font-weight:400;white-space:nowrap;letter-spacing:3px;margin:18px 0}.hero h1 em{font:italic 30px Georgia;display:inline-block;margin:0 10px;color:var(--red)}.hero-rule{width:42px;height:1px;background:var(--red);margin:26px auto}.invitation{font-size:14px;letter-spacing:2px}.hero-date{font-family:Georgia,serif;font-size:25px;letter-spacing:5px;margin:25px 0 3px}.hero-date span{color:#aa8b6a}.small{font-size:11px;letter-spacing:2px}.primary{display:flex;align-items:center;justify-content:space-between;gap:35px;background:var(--red);color:var(--cream);border:1px solid var(--red);padding:17px 24px;font-size:13px;letter-spacing:2px;transition:background .2s}.primary:hover{background:#5e1420}.hero .primary{margin:30px auto 0;width:255px}.hint{font-size:10px;color:var(--muted);letter-spacing:1px}.hero-photo{position:relative;height:min(690px,73vw);min-height:510px}.hero-photo img{object-position:center 47%;border-radius:220px 220px 2px 2px}.photo-label{position:absolute;bottom:24px;left:24px;color:white;font:10px Georgia;letter-spacing:3px}.seal{position:absolute;left:-34px;bottom:50px;width:76px;height:76px;display:grid;place-items:center;background:var(--cream);border:1px solid #b79a71;outline:6px solid var(--cream);border-radius:50%;color:var(--red);font-size:39px;transform:rotate(-10deg)}.hero-bottom{grid-column:1/-1;display:flex;justify-content:space-between;padding:30px 0;border-bottom:1px solid #761f2b30;font-size:10px;letter-spacing:3px}.section{max-width:1280px;margin:auto;padding:110px 7%}h2{font-size:clamp(30px,3.2vw,44px);font-weight:400;line-height:1.6;letter-spacing:4px;margin:15px 0 22px}.letter{display:grid;grid-template-columns:1fr 42%;gap:12%;align-items:center;text-align:center}.letter p{font-size:14px;line-height:2.4}.letter .eyebrow{font-size:10px}.flourish{color:#a08a63;font-size:30px}.signature{font-size:20px;margin-top:30px;letter-spacing:4px}.signature span{font-style:italic;font-family:Georgia;color:var(--red);margin:0 10px}.signature small{font-size:11px;margin-left:12px}.letter-photo{margin:0;transform:rotate(3deg);padding:12px 12px 0;border:1px solid #d9cdbd;background:#fffdf8}.letter-photo img{aspect-ratio:3/4}.letter-photo figcaption{padding:18px 0;font:8px Georgia;letter-spacing:2px}.moments{padding-top:40px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;margin-bottom:35px}.section-heading p{font-size:13px}.section-heading .eyebrow{font-size:10px}.section-heading small{color:var(--muted);font-size:10px}.section-heading h2{font-size:32px;margin-bottom:0}.gallery{display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:start}.shot{position:relative;padding:0;border:0;background:#e8e0d5;overflow:hidden}.shot img{aspect-ratio:4/3;transition:transform .7s}.shot.tall img{aspect-ratio:3/4}.shot:hover img{transform:scale(1.025)}.shot span{position:absolute;bottom:0;left:0;right:0;text-align:left;padding:45px 20px 19px;color:white;background:linear-gradient(transparent,#0008);font-size:12px;letter-spacing:3px}.shot:nth-child(4){margin-top:-58.3%}.sunset{height:600px;position:relative;overflow:hidden}.sunset img{object-position:center 46%}.sunset:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#23110b80,transparent 75%)}.sunset>div{position:absolute;left:12%;top:25%;z-index:1;color:white}.sunset .eyebrow{color:white}.sunset h2{font-size:43px}.details{display:grid;grid-template-columns:1fr 1fr;gap:8%;text-align:center;align-items:center}.big-date{font:100px Georgia;color:var(--red);margin:15px 0}.big-date span{font-size:60px;color:#ba9b7a;margin:0 10px}.details p{font-size:14px;margin:10px 0}.details .eyebrow{font-size:10px}.muted{color:var(--muted)}.time{margin-top:24px;letter-spacing:2px;font-size:12px}.time strong{font:28px Georgia;color:var(--red);margin:0 10px}.countdown{display:flex;gap:20px;justify-content:center;margin:30px 0;font-size:10px;color:var(--muted)}.countdown b{font:25px Georgia;display:block;color:var(--red);margin-bottom:8px}.venue{border:1px solid #b5a18b;padding:38px 28px;position:relative}.venue-mark{display:block;color:var(--red);font-size:32px;margin-bottom:25px}.venue h3{font-size:25px;font-weight:400;letter-spacing:2px;margin:20px 0}.venue h3 span{display:block;font-size:17px;margin:12px 0}.venue .address{font-size:12px;line-height:2}.venue .primary{margin-top:30px;letter-spacing:1px}.venue-actions{display:flex;justify-content:space-between;margin-top:22px;font-size:11px;color:var(--red)}.venue-actions button{border:0;background:none;color:inherit;padding:0}.venue .venue-note{font-size:11px;margin-top:33px;color:var(--muted)}footer{text-align:center;background:var(--red);color:var(--cream);padding:70px 20px 35px}footer .script{color:#d9bf9d;font-size:28px}.footer-names{font-size:27px;letter-spacing:6px}footer p{font-size:12px;letter-spacing:2px}footer span{font:9px Georgia;letter-spacing:3px;display:block;margin-top:40px}footer>a{display:block;font-size:10px;margin-top:30px;opacity:.7}.reveal{transition:opacity .8s,translate .8s}.js .reveal:not(.visible){opacity:0;translate:0 22px}dialog{padding:0;border:0;background:transparent;max-width:94vw;max-height:95dvh;overflow:visible;color:white}dialog::backdrop{background:#17100ff2}dialog img{max-height:85dvh;max-width:90vw;width:auto;object-fit:contain}dialog button{position:absolute;right:0;top:0;background:#0008;color:white;border:0;width:44px;height:44px;font-size:30px}dialog p{text-align:center;font-size:11px}#toast{position:fixed;bottom:35px;left:50%;transform:translateX(-50%);padding:12px 20px;background:#342724;color:white;border-radius:4px;font-size:12px;opacity:0;pointer-events:none;transition:opacity .2s;z-index:20;max-width:90vw}#toast.show{opacity:1}
@media(min-width:1500px){.hero-photo{height:700px}}@media(max-width:700px){.top{height:65px;margin:0 6%}.top span{font-size:8px;letter-spacing:1px}.top>a:last-child{display:none}.top span{margin-right:43px}.music{right:16px;top:16px;width:34px;height:34px;font-size:19px}.hero{padding:26px 7% 0;grid-template-columns:1fr;gap:0}.hero-copy{padding:9px 0 20px}.hero .eyebrow{font-size:10px;letter-spacing:6px;margin-bottom:10px}.hero .script{font-size:20px;margin:8px 0}.hero h1{font-size:32px;margin:12px 0;letter-spacing:2px}.hero h1 em{font-size:24px}.hero-rule{margin:17px auto}.invitation{font-size:11px;margin:12px 0}.hero-date{font-size:22px;margin:15px 0 0}.small{font-size:10px;margin:6px 0}.hero .primary{margin:18px auto 0;padding:13px 20px;width:238px}.hint{font-size:9px;margin-bottom:0}.hero-photo{height:auto;min-height:0;margin:0 13px}.hero-photo img{aspect-ratio:3/4;max-height:570px;border-radius:180px 180px 0 0}.seal{height:59px;width:59px;font-size:30px;left:-23px;bottom:35px}.photo-label{font-size:8px;bottom:20px}.hero-bottom{padding:24px 0;font-size:8px;letter-spacing:1px}.section{padding:70px 8%}.letter{grid-template-columns:1fr;gap:45px}.letter p{font-size:13px}.letter h2{font-size:31px}.letter-photo{max-width:320px;width:90%;justify-self:center}.section-heading{display:block;margin-bottom:25px}.section-heading h2{font-size:27px;letter-spacing:2px}.section-heading>p{font-size:12px}.moments{padding-top:30px}.gallery{gap:12px}.shot span{font-size:9px;padding:25px 10px 12px;letter-spacing:1px}.sunset{height:390px}.sunset img{object-position:58% center}.sunset>div{left:8%;top:13%}.sunset h2{font-size:29px}.sunset .eyebrow{font-size:8px;letter-spacing:2px}.details{grid-template-columns:1fr;gap:40px}.details h2{font-size:31px}.big-date{font-size:85px}.venue{padding:30px 22px}.venue h3{font-size:24px}footer{padding-top:50px}footer .script{font-size:24px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.js .reveal:not(.visible){opacity:1;translate:none}}
.details .big-date{font-size:100px;line-height:1.3;margin:15px 0}@media(max-width:700px){.details .big-date{font-size:85px}}

.hero-countdown{margin:22px auto 0;max-width:270px}.hero .countdown-caption{font-size:10px;letter-spacing:3px;color:var(--muted);margin:0 0 12px}.hero-countdown .countdown{margin:0;gap:0}.hero-countdown .countdown>div{flex:1;min-width:0}.hero-countdown .countdown>div+div{border-left:1px solid #761f2b25}.hero-countdown .countdown b{font-variant-numeric:tabular-nums;margin-bottom:5px;font-size:28px}@media(max-width:700px){.hero-countdown{margin-top:17px;max-width:238px}.hero .countdown-caption{font-size:9px;margin-bottom:9px}.hero-countdown .countdown b{font-size:24px}}

.top>a.brand{font-size:19px;letter-spacing:2px;white-space:nowrap;color:var(--red)}@media(max-width:700px){.top>a.brand{font-size:15px;letter-spacing:1px}}
