:root{--paper:#e5e3df;--ink:#302d28;--accent:#60483b;--surface:#d5d2cb;--light:#f5f4f0;--serif:Georgia,serif;--sans:Arial,sans-serif;--gutter:clamp(20px,4vw,64px);--small:14px;--body:clamp(16px,1.3vw,19px);--lead:clamp(21px,2.1vw,30px);--head:clamp(40px,5.5vw,80px)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:32px}body{margin:0;background:var(--paper);color:var(--ink);font:var(--body)/1.55 var(--sans)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button,a,input,select,textarea,summary{-webkit-tap-highlight-color:transparent}button,summary{cursor:pointer}button{border:0}a,button{transition:opacity .2s,transform .2s}a:hover{opacity:.7}button:active,.primary:active{transform:scale(.98)}:focus-visible{outline:2px solid var(--accent);outline-offset:6px}::selection{background:var(--accent);color:var(--light)}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:400;letter-spacing:-.035em;line-height:1.02;text-wrap:balance}h2{font-size:var(--head);margin-bottom:32px}h3{font-size:var(--lead);margin-bottom:16px}p{text-wrap:pretty}p+p{margin-top:22px}img{display:block;max-width:100%}.skip-link{position:fixed;top:-100px;left:20px;z-index:200;background:var(--ink);color:var(--light);padding:14px}.skip-link:focus{top:12px}.site-header{padding:24px var(--gutter);display:flex;align-items:center;justify-content:space-between;gap:24px}.wordmark{font:36px/1 var(--serif);letter-spacing:-3px}.wordmark span{font-size:25px;padding:0 3px}nav{display:flex;gap:32px;font-size:var(--small)}.nav-rsvp{font-size:var(--small)}.nav-rsvp span{margin-left:14px}.hero{padding:40px var(--gutter) 64px;min-height:calc(100svh - 90px);display:flex;flex-direction:column;justify-content:space-between;gap:38px}.hero h1{font-size:clamp(90px,15.2vw,240px);line-height:.87;letter-spacing:-.05em}.hero-bottom{display:flex;align-items:end;justify-content:space-between;gap:32px;margin-top:32px}.hero-bottom p{font-size:var(--lead);line-height:1.45}.primary,.submit{display:flex;justify-content:space-between;align-items:center;gap:40px;background:var(--accent);color:var(--light);padding:20px 28px;min-height:60px;font-size:var(--body)}.primary:hover,.submit:hover{opacity:.85}.photo-story{padding:0 var(--gutter);display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}.photo-story figure{overflow:hidden}.photo-story img{width:100%;height:100%;aspect-ratio:1.1;object-fit:cover}.section{padding:150px var(--gutter)}.welcome{display:grid;grid-template-columns:1fr 1fr;gap:24px 7%}.welcome h2{grid-column:1 / -1;max-width:900px}.welcome>p{font-size:var(--lead);max-width:39ch}.welcome>p+p{margin:0}.welcome br.desktop{display:none}.signature{grid-column:2;font:var(--lead) var(--serif);margin-top:20px}.day{background:var(--surface)}.section-heading{display:flex;align-items:start;justify-content:space-between;gap:40px}.section-heading>p{max-width:34ch}.timeline{margin-top:80px}.timeline article{max-width:65%;margin-bottom:64px}.timeline article:nth-child(2){margin-left:17%}.timeline article:nth-child(3){margin-left:34%;margin-bottom:0}.timeline .time{font-size:var(--small);margin-bottom:14px;text-transform:lowercase}.timeline h3{font-size:clamp(32px,4vw,60px);margin-bottom:18px}.timeline article>p:last-child{max-width:40ch}.location{display:grid;grid-template-columns:1fr 1.5fr;gap:9%}.venue-facts>p{font:clamp(48px,7vw,100px)/.95 var(--serif);letter-spacing:-.04em}.venue-facts dl{margin:36px 0}.venue-facts dl>div{margin-top:24px}.venue-facts dt{font-size:var(--small)}.venue-facts dd{margin:4px 0 0}.calendar-link,.text-link,.replay-inline{font-size:var(--body);display:inline-block;text-decoration:underline;text-underline-offset:6px}.location-copy{padding-top:8px}.location-copy>p{max-width:40ch}.location-copy h3{margin-bottom:8px}.text-link{margin:28px 0}.text-link span{margin-left:24px}.small-note{font-size:var(--small)}.memory{background:var(--light);display:grid;grid-template-columns:1fr 1.6fr;align-items:center;gap:6%;padding-top:80px;padding-bottom:80px}.memory img{width:100%}.memory p{max-width:26ch}.replay-inline{padding:0;margin-top:28px;background:none;text-align:left}.faq h2{margin-bottom:24px}.faq-list{margin:70px 0 0 34%}details{margin-bottom:22px}summary{display:flex;justify-content:space-between;align-items:center;gap:20px;list-style:none;padding:16px 0;font-size:var(--lead)}summary::-webkit-details-marker{display:none}summary span{font-size:28px}details[open]{background:var(--surface);padding:12px 24px;margin-left:-24px;margin-right:-24px}details[open] summary span{transform:rotate(45deg)}details p{max-width:52ch;padding:8px 0 24px}.rsvp{margin:0 var(--gutter) 120px;padding:64px;display:grid;grid-template-columns:1fr 1.2fr;gap:8%;background:var(--surface)}.rsvp-intro img{width:120px;mix-blend-mode:multiply;margin-top:48px}.rsvp-intro h2{font-size:clamp(40px,4.7vw,70px)}fieldset{border:0;padding:0;margin:0 0 30px}legend{font:var(--lead) var(--serif);margin-bottom:20px}.attendance{display:flex;gap:12px}.attendance label{flex:1;position:relative;cursor:pointer}.attendance input{position:absolute;opacity:0}.attendance span{display:flex;align-items:center;gap:12px;padding:15px;background:var(--paper);min-height:56px}.attendance b{width:14px;height:14px;border:1px solid currentColor;border-radius:50%;order:-1;flex-shrink:0}.attendance input:checked+span{background:var(--ink);color:var(--light)}.attendance input:checked+span b{background:var(--light)}.attendance input:focus-visible+span{outline:2px solid var(--accent);outline-offset:4px}form>label,.form-row label{display:block;margin:22px 0 8px;font-size:var(--small)}input:not([type=radio]):not([type=checkbox]),select,textarea{width:100%;padding:12px 0;background:transparent;border:0;border-bottom:1px solid var(--accent);border-radius:0;font-size:var(--body)}textarea{resize:vertical}::placeholder{color:var(--accent);opacity:1}.form-row{display:grid;grid-template-columns:1.5fr 1fr;gap:20px}form>.consent{display:flex;align-items:start;gap:12px;margin-top:28px}.consent input{margin-top:5px;accent-color:var(--accent);width:18px;height:18px;flex-shrink:0}.consent span{font-size:var(--small)}.submit{width:100%;margin-top:30px}.submit:disabled{opacity:.6;cursor:wait}.form-status{font-size:var(--body);margin-top:18px}.form-status.error{color:#862d25}.form-status.success{background:var(--paper);padding:20px}.privacy-note{font-size:var(--small);margin-top:14px}footer{background:var(--ink);color:var(--paper);padding:64px var(--gutter) 28px;display:flex;flex-direction:column}footer>p{order:-1;margin-bottom:48px}.footer-names{font:clamp(38px,9.5vw,145px)/1.1 var(--serif);letter-spacing:-.04em}footer>div{margin-top:64px;display:flex;justify-content:space-between;gap:30px;font-size:var(--small)}footer button{background:none;color:inherit;font-size:var(--small);padding:0}.intro-active{overflow:hidden}.intro{position:fixed;inset:0;z-index:150;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--paper);perspective:1500px;transition:opacity .5s,visibility .5s}.intro.hidden{opacity:0;visibility:hidden;pointer-events:none}.intro-top{position:absolute;top:28px;left:var(--gutter);right:var(--gutter);display:flex;justify-content:space-between;font-size:var(--small)}.intro-caption{font:var(--lead) var(--serif);margin:0 0 90px}.envelope-stage{width:min(430px,78vw);aspect-ratio:1.53;margin:10px 0 35px;perspective:1600px;display:block;flex-shrink:0;padding:0;border:0;border-radius:0;background:transparent;touch-action:manipulation;overflow:visible;appearance:none;text-align:initial}.envelope-stage:disabled{cursor:default;opacity:1}.envelope{display:block;width:100%;height:100%;position:relative;transform-style:preserve-3d;transform:rotateY(180deg) rotateZ(-3deg)}.envelope-front,.envelope-back{position:absolute;inset:0;backface-visibility:hidden;background:#c5beb2;display:block}.envelope-front{transform:rotateY(180deg);display:flex;align-items:center;justify-content:center;background:#d4cdc1}.envelope-front>span{font:44px var(--serif);text-align:center}.envelope-front small{display:block;font:var(--small) var(--sans);margin-top:16px}.envelope-front>img{position:absolute;top:20px;right:22px;width:48px;mix-blend-mode:multiply;opacity:.35}.envelope-back{transform-style:preserve-3d;overflow:visible}.letter{display:block;position:absolute;inset:14px;background:var(--light);text-align:center;padding-top:50px;font:38px var(--serif);transform:translate3d(0,0,1px)}.letter small{display:block;font:var(--small) var(--sans);margin-top:16px}.pocket{display:block;position:absolute;inset:0;background:#cec5b7;clip-path:polygon(0 0,50% 48%,100% 0,100% 100%,0 100%);transform:translateZ(2px)}.flap{display:block;position:absolute;inset:0;background:#d9d1c4;clip-path:polygon(0 0,100% 0,50% 61%);transform-origin:50% 0;transform:translateZ(3px);backface-visibility:visible}.seal{position:absolute;left:calc(50% - 30px);top:calc(52% - 30px);width:60px;height:60px;border-radius:50%;background:#b6a58e;display:grid;place-items:center;transform:translateZ(4px)}.seal img{width:41px;mix-blend-mode:multiply;opacity:.4}.skip-intro{position:absolute;bottom:24px;font-size:var(--small);background:none;padding:12px}.reveal{opacity:1}.section.visible h2,.section.visible .section-heading,.section.visible .location-copy{animation:rise .75s both}.day.visible .timeline article{animation:rise .8s both}.day.visible .timeline article:nth-child(2){animation-delay:.09s}.day.visible .timeline article:nth-child(3){animation-delay:.18s}.welcome.visible>p,.rsvp.visible form,.memory.visible img,.faq.visible details{animation:rise .9s both;animation-delay:.08s}.faq.visible details:nth-child(2n){animation-delay:.16s}@keyframes rise{from{opacity:.3;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@supports(animation-timeline:view()){.footer-names{animation:name-settle linear both;animation-timeline:view();animation-range:entry 0% entry 100%}.photo-story img{animation:photo-settle linear both;animation-timeline:view();animation-range:entry 0% exit 100%}}@keyframes name-settle{from{transform:scale(.94);transform-origin:left center}to{transform:scale(1);transform-origin:left center}}@keyframes photo-settle{from{transform:scale(1.06)}to{transform:scale(1)}}
@media(max-width:900px){nav{gap:18px}.section{padding-top:100px;padding-bottom:100px}.hero h1{font-size:17vw}.hero{min-height:760px}.rsvp{padding:40px;gap:5%;grid-template-columns:1fr 1.3fr}.attendance{flex-direction:column}.memory{grid-template-columns:1fr}.memory img{margin-top:40px}.location{gap:6%}.welcome>p{font-size:22px}}
@media(max-width:560px){nav{display:none}.site-header{padding-top:22px;padding-bottom:22px}.wordmark{font-size:30px}.hero{padding-top:48px;min-height:0;padding-bottom:48px;gap:32px}.hero h1{font-size:18.4vw;line-height:.98}.hero-bottom{display:block;margin-top:8px}.hero-bottom p{font-size:20px}.primary{margin-top:32px;width:100%}.photo-story{gap:8px;grid-template-columns:1fr 1fr}.photo-story figure:first-child{grid-column:1 / -1}.photo-story figure:first-child img{aspect-ratio:1.15}.photo-story img{aspect-ratio:.85}.section{padding-top:80px;padding-bottom:80px}.welcome{display:block}.welcome h2{font-size:43px}.welcome>p,.welcome>p+p{font-size:20px;margin-top:24px}.welcome p br{display:none}.signature{margin-top:28px}.section-heading{display:block}.section-heading>p{max-width:30ch}.timeline{margin-top:48px}.timeline article{max-width:94%;margin-bottom:48px}.timeline article:nth-child(2){margin-left:4%}.timeline article:nth-child(3){margin-left:8%}.timeline h3{font-size:34px}.timeline .time{font-size:14px}.location{display:flex;flex-direction:column-reverse;gap:48px}.venue-facts>p{font-size:64px}.venue-facts dl{display:grid;grid-template-columns:1fr 1fr;gap:16px}.memory{display:block}.memory h2{font-size:43px}.memory img{margin-top:36px}.faq-list{margin:36px 0 0}summary{font-size:21px}.rsvp{margin:0 var(--gutter) 80px;padding:28px 20px;display:block}.rsvp-intro img{display:none}.rsvp form{margin-top:38px}.attendance{flex-direction:column}.form-row{grid-template-columns:1fr}.form-row label{margin-top:22px}.rsvp-intro h2{font-size:43px}.intro-caption{margin-bottom:80px}.intro-top{font-size:13px}.envelope-front>span{font-size:34px}.envelope-front small{font-size:11px}.envelope-front>img{width:34px;top:14px;right:14px}.letter{font-size:30px;padding-top:32px}.letter small{font-size:12px}footer{padding-top:48px}footer>div{flex-direction:column;gap:20px;margin-top:36px}footer button{text-align:left}.footer-names{font-size:9.2vw}footer>p{margin-bottom:32px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.reveal{opacity:1}}

/* The supplied printed invitation defines the composition and colours. */
:root{--paper:#e5e5e5;--ink:#393022;--accent:#95684c;--surface:#dcdad6;--light:#eeedeb;--gutter:clamp(20px,5.2vw,84px);--head:clamp(38px,4.3vw,64px)}
.site-header{max-width:1600px;margin:auto;padding-top:22px;padding-bottom:22px}.hero{display:block;min-height:0;max-width:1600px;margin:auto;padding:24px var(--gutter) 72px}.invitation-photos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(10px,1.85vw,30px)}.invitation-photos img{width:100%;height:auto;aspect-ratio:500/670;object-fit:contain}.hero h1{width:78%;margin:24px auto 0;line-height:1}.hero h1 img{width:100%;height:auto}.hero-bottom{display:flex;flex-direction:column;align-items:center;gap:28px;margin-top:26px;text-align:center}.hero-bottom p{font-size:clamp(15px,1.55vw,23px);font-style:italic;letter-spacing:.12em;line-height:1.8}.hero .primary{font-size:15px;padding:14px 26px;min-height:48px;gap:38px}.section{max-width:1600px;margin-inline:auto;padding-top:105px;padding-bottom:105px}.welcome{max-width:1100px;display:block;text-align:center;padding-top:80px;padding-bottom:110px}.welcome h2{max-width:none;font-size:clamp(36px,4vw,58px)}.welcome>p,.welcome>p+p{max-width:58ch;margin:22px auto 0;font-size:clamp(18px,1.7vw,24px);line-height:1.65}.signature{font-family:'Snell Roundhand','Apple Chancery',cursive;font-size:clamp(32px,3.5vw,48px);margin-top:32px}.day{background:var(--surface)}.section-heading>p{font-size:17px}.timeline{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:48px;margin-top:56px}.timeline article,.timeline article:nth-child(2),.timeline article:nth-child(3){max-width:none;margin:0}.timeline h3{font-size:clamp(28px,2.7vw,40px)}.timeline .time{color:var(--accent);font-size:14px;text-transform:none}.location{gap:10%}.venue-facts>p{font-size:clamp(48px,6vw,84px)}.memory{background:var(--light)}.faq-list{margin-top:48px}.rsvp{max-width:calc(1440px - 2 * var(--gutter));margin:0 auto 100px;background:var(--surface)}.rsvp-intro h2{font-size:clamp(38px,4vw,58px)}.primary,.submit{background:var(--ink)}footer{background:var(--surface);color:var(--ink);text-align:center;align-items:center}.footer-names{font-family:'Snell Roundhand','Apple Chancery',cursive;font-size:clamp(36px,6.5vw,96px);letter-spacing:-.04em}footer>p{order:0;margin:20px 0 0;color:var(--accent)}footer>div{width:100%}.intro{background:var(--paper)}.intro-caption{color:var(--accent)}.envelope-front{background:#d7d0c4}.envelope-back{background:#beb4a4}.flap{background:#ddd5c9}.pocket{background:#cec3b2}.letter{background:var(--light)}
@media(max-width:900px){.hero{min-height:0}.hero h1{width:90%}.timeline{gap:26px}.section{padding-top:80px;padding-bottom:80px}.rsvp{margin-inline:var(--gutter)}.hero-bottom{margin-top:18px}.hero .primary{margin-top:0}}
@media(max-width:560px){.hero{padding-top:16px;padding-bottom:40px}.invitation-photos{gap:8px}.hero h1{width:100%;margin-top:24px}.hero-bottom{gap:22px;margin-top:20px}.hero-bottom p{font-size:15px;letter-spacing:.04em;max-width:30ch}.hero .primary{width:auto;min-width:210px;margin-top:0}.section{padding-top:64px;padding-bottom:64px}.welcome h2{font-size:38px}.welcome>p,.welcome>p+p{font-size:18px}.timeline{display:block;margin-top:36px}.timeline article,.timeline article:nth-child(2),.timeline article:nth-child(3){margin:0 0 36px;max-width:100%}.timeline article:last-child{margin-bottom:0}.timeline h3{font-size:30px}.location{gap:40px}.rsvp{margin-bottom:64px}.footer-names{font-size:9vw}footer>div{align-items:center}footer button{text-align:center}}

/* The opening is a floating paper object, with engraved details and warm light. */
.intro{background:radial-gradient(ellipse at 50% 42%,#f4f0e8 0%,#e6e2db 48%,#d3cdc4 100%)}
.intro:before{content:'';position:absolute;inset:0;opacity:.11;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%2395684c' filter='url(%23p)' d='M0 0h160v160H0z'/%3E%3C/svg%3E")}
.intro-flourish{position:absolute;width:clamp(100px,15vw,210px);height:auto;left:4%;top:14%;color:#a58b6c;opacity:.45;pointer-events:none;transform:rotate(-12deg)}
.intro-flourish-right{left:auto;top:auto;right:4%;bottom:12%;transform:rotate(168deg)}
.intro-caption{position:relative;font:italic clamp(24px,3vw,38px)/1.2 var(--serif);margin-bottom:85px;color:#73553c}
.envelope-stage{position:relative;width:min(470px,78vw);margin-bottom:32px}
.envelope-shadow{position:absolute;display:block;left:50%;top:calc(100% + 30px);width:85%;height:24px;border-radius:50%;background:#54432d;filter:blur(17px);opacity:.25;transform:translateX(-50%);pointer-events:none}
.envelope-front,.envelope-back{border-radius:3px;box-shadow:0 28px 50px #47332124,0 3px 8px #4733211a}
.envelope-front{background:linear-gradient(135deg,#e9dfcf,#cdbda5);color:#604b36}
.envelope-front:before{content:'';position:absolute;inset:20px;border:1px solid #ac8c6155;outline:1px solid #f9f2e166;outline-offset:4px;pointer-events:none}
.envelope-front>span{font:italic clamp(34px,4vw,52px)/1.2 var(--serif);text-shadow:0 1px 0 #fff8}
.envelope-front small{font:14px var(--sans);letter-spacing:.03em;margin-top:18px}
.envelope-front>img{top:36px;right:36px;width:45px;opacity:.27}
.envelope-back{background:#b8a589}
.pocket{background:linear-gradient(27deg,#d6c5aa 49.5%,#c8b594 50%);filter:drop-shadow(0 -1px 1px #71533422)}
.flap{background:linear-gradient(175deg,#ede3d2,#cdbb9b);box-shadow:inset 0 1px 0 #fff9}
.seal{background:radial-gradient(circle at 35% 28%,#c9a481,#a77656 66%,#875d42);border:3px double #dab99b;border-radius:47% 53% 46% 54% / 51% 46% 54% 49%;box-shadow:0 4px 8px #4e2c2530,inset 0 2px 4px #f0caaa88,inset 0 -3px 5px #62402a55;width:66px;height:66px;left:calc(50% - 33px);top:calc(52% - 33px)}
.seal:after{content:'';position:absolute;inset:5px;border:1px solid #79543766;border-radius:50%}
.seal img{width:39px;opacity:.48;filter:sepia(1)}
.letter{background:#f5efe4;padding:24px 24px 20px;box-shadow:0 1px 7px #48321e24;color:#634b35}
.letter:before{content:'';position:absolute;inset:10px;border:1px solid #bda07c66;pointer-events:none}
.letter-monogram{width:38px;height:35px;object-fit:contain;mix-blend-mode:multiply;opacity:.44;margin:0 auto 14px}
.letter-heading{display:block;font:italic 38px/1.1 var(--serif)}
.letter small{font:13px/1.5 var(--sans);letter-spacing:.05em;margin-top:12px}
.letter-signature{display:block;font:24px/1.4 'Snell Roundhand','Apple Chancery',cursive;margin-top:12px}
.intro-note{position:relative;text-align:center;font:italic 19px/1.5 var(--serif);color:#735d46;margin-top:8px;padding:0 24px}
.intro-note span{display:block;font:13px/1.6 var(--sans);margin-top:12px;color:#796c5b}
.skip-intro{color:#796c5b;min-height:44px}
@keyframes invitation-photo-in{from{opacity:.25;transform:translateY(24px) scale(.98)}to{opacity:1;transform:none}}
@keyframes invitation-title-in{from{opacity:.3;transform:translateY(16px)}to{opacity:1;transform:none}}
.venues{background:#dedbd5}
.venues-heading{display:flex;align-items:start;justify-content:space-between;gap:40px;margin-bottom:48px}
.venues-heading h2{margin:0}.venues-heading>p{max-width:36ch}
.venues-layout{display:grid;grid-template-columns:minmax(0,1.9fr) minmax(260px,1fr);gap:40px;align-items:stretch}
.venue-map{display:block;width:100%;height:520px;min-width:0;border:0;background:#cbc9bf}
.venue-addresses{display:flex;flex-direction:column;justify-content:space-between;gap:32px;padding:12px 0}
.venue-addresses h3{font-size:clamp(26px,2.5vw,36px);line-height:1.15;margin-bottom:16px}
.venue-addresses article>a,.venue-route{display:inline-block;font-size:15px;text-decoration:underline;text-underline-offset:6px;margin-top:20px;min-height:36px}
.venue-route{color:#73553c}
@media(max-width:900px){.venues-heading{display:block}.venues-heading>p{margin-top:24px}.venues-layout{grid-template-columns:1fr}.venue-map{height:440px}.venue-addresses{display:grid;grid-template-columns:1fr 1fr;gap:32px}.venue-route{grid-column:1 / -1}}
@media(max-width:560px){.intro-flourish{width:95px;left:-16px;top:12%;opacity:.35}.intro-flourish-right{left:auto;right:-16px;top:auto;bottom:16%}.intro-caption{font-size:26px;margin-bottom:76px}.envelope-stage{margin-bottom:28px}.envelope-front:before{inset:14px}.envelope-front>img{top:25px;right:25px;width:28px}.envelope-front small{font-size:11px}.envelope-front>span{font-size:34px}.letter{padding:18px 15px 12px}.letter-monogram{width:26px;height:24px;margin-bottom:9px}.letter-heading{font-size:28px}.letter small{font-size:11px;margin-top:9px}.letter-signature{font-size:20px;margin-top:7px}.seal{width:54px;height:54px;left:calc(50% - 27px);top:calc(52% - 27px)}.seal img{width:32px}.intro-note{font-size:17px}.intro-note span{font-size:12px;max-width:29ch;margin:10px auto 0}.venues-heading{margin-bottom:32px}.venue-map{height:380px}.venue-addresses{display:flex;gap:28px}.venues-heading h2{font-size:38px}}
@media(max-height:650px){.intro-caption{margin-bottom:50px}.envelope-stage{width:min(370px,65vw);margin-bottom:16px}.intro-note{font-size:16px}.intro-note span{margin-top:4px}.skip-intro{bottom:4px}}
@media(prefers-reduced-motion:reduce){body.invitation-visible .invitation-photos img,body.invitation-visible .hero h1{animation:none!important}.intro-flourish{opacity:.3}}

/* Copper Correspondence: shared material, typography and stationery proportions. */
@font-face{font-family:Lora;src:url('assets/fonts/Lora-Regular.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Lora;src:url('assets/fonts/Lora-Italic.ttf') format('truetype');font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:'Instrument Sans';src:url('assets/fonts/InstrumentSans-Regular.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
:root{--serif:Lora,Georgia,serif;--sans:'Instrument Sans',Arial,sans-serif;--accent:#8b5b40;--gutter:clamp(22px,5.4vw,82px);--head:clamp(36px,3.8vw,56px);--body:clamp(16px,1.2vw,18px)}
body{background-image:url('assets/stationery-paper.png')}
.site-header{padding-top:26px;padding-bottom:26px}nav{gap:36px}.nav-rsvp{color:var(--accent)}
.site-header a{min-height:40px;display:inline-flex;align-items:center}.wordmark{font-family:var(--serif);font-size:32px;letter-spacing:-2px}
.hero{padding-top:18px;padding-bottom:68px}.hero h1{margin-top:30px}.hero-bottom{gap:28px}.hero-bottom p{font-size:clamp(16px,1.4vw,21px);letter-spacing:.07em}
.hero .primary{background:var(--accent);padding-inline:30px;min-height:52px}
.welcome{max-width:1120px;padding-top:68px;padding-bottom:100px}.welcome h2{font-family:var(--serif);font-size:clamp(36px,3.5vw,52px);line-height:1.15;letter-spacing:-.04em}.welcome>p,.welcome>p+p{max-width:47ch;font-size:clamp(18px,1.5vw,22px);line-height:1.8}.signature{margin-top:36px;color:var(--accent)}
.section-heading{align-items:center}.section-heading h2{margin-bottom:0}.section-heading>p{line-height:1.75}.day{padding-top:84px;padding-bottom:84px;background:#dcd9d3}.timeline{gap:50px;margin-top:58px}.timeline article{position:relative;padding-left:24px}.timeline article:before{content:'';position:absolute;left:0;top:3px;width:5px;height:28px;background:var(--accent)}.timeline .time{font-size:13px;line-height:1.7;max-width:26ch;margin-bottom:20px}.timeline h3{font-size:clamp(25px,2.4vw,34px);line-height:1.2}.timeline article>p:last-child{font-size:16px;line-height:1.8;max-width:30ch}
.location{grid-template-columns:1fr 1.25fr;padding-top:100px;padding-bottom:100px;gap:12%}.venue-facts{padding:35px;background:#dddad4}.venue-facts>p{font-size:clamp(44px,5vw,72px);line-height:1.08}.venue-facts dl{margin:30px 0}.venue-facts dt{color:var(--accent)}.venue-facts dd{line-height:1.6}.calendar-link,.text-link{font-size:15px;line-height:1.7}.location-copy{align-self:center}.location-copy h2{font-size:clamp(35px,3.5vw,52px)}.location-copy h3{font-size:24px;line-height:1.35}.location-copy>p{line-height:1.8}.small-note{color:#665b4d}
.venues{background:#d8d4cc;padding-top:84px;padding-bottom:84px}.venues-heading{align-items:center;margin-bottom:42px}.venues-heading>p{font-size:16px;line-height:1.8}.venues-layout{gap:44px;grid-template-columns:minmax(0,1.8fr) minmax(270px,1fr)}.venue-map{height:480px}.venue-addresses{padding-block:8px}.venue-addresses h3{font-size:clamp(25px,2.3vw,33px);line-height:1.2}.venue-addresses p{font-size:16px;line-height:1.7}.venue-addresses article>a,.venue-route{color:#6d4935;line-height:1.6}
.memory{background:#eeece7;padding-top:88px;padding-bottom:88px;gap:8%}.memory img{mix-blend-mode:multiply}.memory h2{font-size:clamp(35px,3.5vw,52px);line-height:1.15}.memory p{line-height:1.8}.replay-inline{color:var(--accent);font-size:15px;min-height:44px}
.faq{display:grid;grid-template-columns:1fr 1.5fr;gap:10%;padding-top:100px;padding-bottom:100px}.faq>div>p{font-size:16px;line-height:1.8;max-width:25ch}.faq-list{margin:0}.faq summary{font-size:20px;padding:17px 0;line-height:1.5}.faq details{margin-bottom:12px}.faq details p{font-size:16px;line-height:1.8}.faq details[open]{background:#dddad4}
.rsvp{position:relative;background:#edeae4;padding:64px;gap:9%;margin-bottom:88px}.rsvp-intro{padding-top:12px}.rsvp-intro h2{font-size:clamp(36px,3.8vw,54px);line-height:1.15}.rsvp-intro>p{font-size:17px;line-height:1.8}.rsvp-intro img{width:104px;opacity:.55;margin-top:44px}.rsvp legend{font-size:24px;line-height:1.4}.attendance span{background:#e0dbd2;font-size:16px}.attendance input:checked+span{background:#72523d}.rsvp form>label,.rsvp .form-row label{font-size:14px}.rsvp input:not([type=radio]):not([type=checkbox]),.rsvp select,.rsvp textarea{border-color:#a89885}.submit{background:#72523d;min-height:56px}.rsvp .consent span,.privacy-note{font-size:13px;line-height:1.7}
footer{padding-top:60px;padding-bottom:32px;background:#d9d5ce}.footer-names{line-height:1.3}.intro-top{font-family:var(--sans)}.intro-caption{font-family:var(--serif)}.intro-note{line-height:1.7}.intro-note span{font-size:13px}.letter-heading{font-family:var(--serif)}
a:focus-visible,button:focus-visible{outline-color:var(--accent)}.primary:hover,.submit:hover{opacity:1;background:#62432f}nav a:hover,.nav-rsvp:hover{opacity:1;color:#5b3a28}summary:hover{color:var(--accent)}
@media(max-width:1000px){.venues-layout{grid-template-columns:1fr}.venue-map{height:440px}.venue-addresses{display:grid;grid-template-columns:1fr 1fr}.venue-route{grid-column:1 / -1}.rsvp{padding:42px;gap:6%}.faq{gap:7%}.timeline{gap:28px}.timeline article{padding-left:20px}.location{gap:7%}.venue-facts{padding:28px}}
@media(max-width:560px){.site-header{padding-top:16px;padding-bottom:16px}.site-header .nav-rsvp{font-size:13px}.hero{padding-top:14px;padding-bottom:46px}.hero h1{margin-top:20px}.hero-bottom{gap:24px}.hero-bottom p{font-size:15px;line-height:1.9;max-width:29ch}.hero .primary{font-size:15px;min-height:50px}.welcome{padding-top:48px;padding-bottom:64px}.welcome h2{font-size:35px}.welcome>p,.welcome>p+p{font-size:18px;line-height:1.8}.day{padding-top:60px;padding-bottom:60px}.section-heading>p{margin-top:24px}.timeline{margin-top:36px}.timeline article{padding-left:24px;margin-bottom:34px!important}.timeline article:last-child{margin-bottom:0!important}.timeline h3{font-size:28px}.timeline .time{margin-bottom:12px;max-width:none}.location{padding-top:64px;padding-bottom:64px;gap:34px}.venue-facts{padding:28px}.venue-facts>p{font-size:52px}.venue-facts dl{gap:20px}.location-copy h2{font-size:35px}.venues{padding-top:60px;padding-bottom:60px}.venues-heading{margin-bottom:30px}.venues-heading h2{font-size:35px}.venues-layout{gap:30px}.venue-map{height:360px}.venue-addresses{display:flex;gap:30px}.venue-addresses h3{font-size:28px}.memory{padding-top:60px;padding-bottom:60px}.memory h2{font-size:35px}.faq{display:block;padding-top:64px;padding-bottom:64px}.faq-list{margin-top:28px}.faq h2{font-size:35px}.faq>div>p{max-width:30ch}.faq summary{font-size:19px}.rsvp{padding:30px 22px;margin-bottom:64px}.rsvp-intro h2{font-size:35px}.rsvp legend{font-size:22px}.rsvp form{margin-top:32px}footer{padding-top:44px}.footer-names{font-size:9vw}}

/* The envelope and the website share the very same paper surface. */
.intro{background:var(--paper) url('assets/stationery-paper.png') repeat}
.intro:before{display:none}
.envelope-stage{display:block;position:relative;cursor:default}
.envelope-trigger{position:absolute;inset:0;z-index:10;padding:0;background:transparent;border:0;border-radius:3px;cursor:pointer;touch-action:manipulation}
.envelope-trigger:disabled{cursor:default}
.envelope-trigger[hidden]{display:none}
.envelope-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:14px}
button.letter{border:0;border-radius:2px;color:#634b35;cursor:default;appearance:none;touch-action:manipulation;padding:22px 24px 18px;text-align:center;transition:box-shadow .25s}
button.letter:disabled{opacity:1}
.letter-ready button.letter{cursor:pointer}
.letter-ready button.letter:hover{box-shadow:0 10px 32px #48321e30}
.letter-ready button.letter:focus-visible{outline:2px solid var(--accent);outline-offset:6px}
.letter-action{display:block;position:relative;margin:14px auto 0;font:13px/1.5 var(--sans);color:#795236;max-width:250px}
.letter-action>span{margin-left:4px}
.letter-monogram{margin-bottom:10px}
.letter-heading{font-size:34px}
.letter-signature{font-size:22px;margin-top:10px}
.letter-ready .letter-action{animation:letter-invite .65s ease both}
@keyframes letter-invite{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.page-revealing .site-content{position:relative;z-index:160;background:var(--paper) url('assets/stationery-paper.png') repeat;pointer-events:none;will-change:clip-path}
.page-revealing .intro{pointer-events:none}
@media(max-width:560px){button.letter{padding:15px 14px 12px}.letter-monogram{margin-bottom:7px}.letter-heading{font-size:27px}.letter-signature{font-size:18px;margin-top:7px}.letter-action{font-size:12px;line-height:1.4;max-width:180px;margin-top:10px}.letter small{margin-top:7px}.intro-caption{margin-bottom:94px}}
@media(prefers-reduced-motion:reduce){.letter-ready .letter-action{animation:none!important}}
@media(max-width:560px){button.letter{padding:10px 12px}.letter-monogram{display:none}.letter-heading{font-size:clamp(22px,7vw,27px)}.letter small{font-size:11px;margin-top:5px}.letter-signature{font-size:18px;margin-top:5px}.letter-action{font-size:11px;line-height:1.5;max-width:none;margin-top:8px}}
@media(min-width:561px) and (max-height:650px){.letter-monogram{display:none}.letter-heading{font-size:30px}.letter-action{margin-top:10px}button.letter{padding-top:18px;padding-bottom:14px}}

/* Transient left-side navigation sits in the page margin. */
.section-nav[hidden]{display:none}
.section-nav{position:fixed;z-index:120;left:18px;top:50%;transform:translateY(-50%);width:132px;color:var(--ink)}
.section-nav-toggle{display:flex;align-items:center;gap:10px;background:var(--paper);color:var(--accent);font:13px/1.4 var(--sans);padding:12px 8px;min-height:44px;text-align:left;border-radius:0}
.section-nav-symbol{font-size:18px;line-height:1}
.section-nav-panel{display:flex;flex-direction:column;gap:0;padding:12px 8px 12px 16px;background:var(--paper);opacity:0;visibility:hidden;transform:translateX(-12px);transition:opacity .3s ease,transform .4s cubic-bezier(.22,1,.36,1),visibility .3s}
.section-nav.is-visible .section-nav-panel{opacity:1;visibility:visible;transform:none}
.section-nav-panel a{position:relative;display:flex;align-items:center;min-height:42px;padding:7px 4px;font-size:13px;line-height:1.3;color:#746b60;transition:color .2s,transform .25s}
.section-nav-panel a[aria-current=location]{color:var(--accent);transform:translateX(4px)}
.section-nav-panel a[aria-current=location]:before{content:'';position:absolute;left:-11px;top:50%;width:5px;height:5px;border-radius:50%;background:currentColor;transform:translateY(-50%)}
.section-nav-progress{position:absolute;left:0;top:60px;bottom:12px;width:2px;background:#39302214;opacity:0;transition:opacity .3s}
.section-nav.is-visible .section-nav-progress{opacity:1}
.section-nav-progress span{display:block;width:100%;height:100%;background:var(--accent);transform:scaleY(0);transform-origin:top}
/* A single motion system owns the page elements; the envelope keeps its own clock. */
.gsap-scroll-active .site-content *{animation:none!important}
@media(min-width:1200px){:root{--gutter:clamp(154px,11.8vw,194px)}.section-nav{left:16px}.hero .invitation-photos{position:relative}.site-header nav{gap:24px}}
@media(max-width:1199px){.section-nav{top:auto;bottom:20px;left:14px;transform:none;width:142px}.section-nav-toggle{padding:12px 16px;box-shadow:0 4px 20px #39302218}.section-nav-panel{position:absolute;bottom:calc(100% + 10px);left:0;width:178px;max-height:calc(100dvh - 140px);overflow-y:auto;padding:12px 18px;box-shadow:0 5px 28px #39302218;transform:translateX(-12px)}.section-nav-panel a{min-height:44px;font-size:14px}.section-nav-progress{display:none}}
@media(prefers-reduced-motion:reduce){.section-nav-panel,.section-nav-panel a{transition:none!important}.section-nav-panel{transform:none}.section-nav-panel a[aria-current=location]{transform:none}}
.section-nav-symbol{display:block;position:relative;flex-shrink:0;width:18px;height:16px}
.section-nav-symbol:before,.section-nav-symbol:after{content:'';position:absolute;left:0;height:2px;background:currentColor;transition:transform .25s,width .25s}
.section-nav-symbol:before{top:4px;width:18px}.section-nav-symbol:after{bottom:4px;width:12px}
.section-nav.is-visible .section-nav-symbol:after{width:18px}

/* Transparent navigation; its labels float directly over the shared paper. */
.section-nav,.section-nav-toggle,.section-nav-panel{background:transparent;box-shadow:none;backdrop-filter:none}
.section-nav-panel a{color:#62584d}
/* The website has one reveal, from the letter. Async libraries do not replay it. */
body.invitation-visible .invitation-photos img,body.invitation-visible .hero h1{animation:none!important}
html{scrollbar-gutter:stable}
/* Keep the hidden reverse-face assembly out of the front-facing turn. */
.envelope-back{visibility:hidden}
.letter,.pocket,.seal{backface-visibility:hidden;-webkit-backface-visibility:hidden}
.envelope-front,.envelope-back{-webkit-backface-visibility:hidden}

/* A consistent family of stationery cards. */
:root{--card:#f2f0eb;--card-muted:#e5e0d7;--card-radius:20px;--card-gap:28px;--card-padding:clamp(26px,3.5vw,50px)}
main{max-width:1440px;margin:0 auto;padding:10px var(--gutter) 36px;display:grid;gap:var(--card-gap)}
main>.hero,main>.section{width:100%;max-width:none;margin:0;padding:var(--card-padding);border-radius:var(--card-radius);background:var(--card);box-shadow:0 5px 24px #39302208;scroll-margin-top:28px;min-width:0}
main>.hero{background:var(--paper);padding-top:32px;padding-bottom:38px}
.invitation-photos{gap:clamp(8px,1.3vw,20px)}
.invitation-photos img{border-radius:10px}
.hero h1{width:88%;margin-top:24px;mix-blend-mode:normal}
.hero-bottom{margin-top:22px;gap:24px}
.primary,.submit{border-radius:8px}
main>.welcome{padding-top:54px;padding-bottom:54px}
.welcome h2{font-size:clamp(34px,3.1vw,46px)}
.welcome>p,.welcome>p+p{font-size:clamp(17px,1.4vw,21px)}
main>.day{background:#e8e3da}
.timeline{gap:18px;margin-top:36px}
.timeline article,.timeline article:nth-child(2),.timeline article:nth-child(3){padding:24px;background:#f5f2ec;border-radius:12px;margin:0!important;max-width:none}
.timeline article:before{display:none}
.timeline h3{font-size:clamp(23px,2.1vw,30px)}
.timeline .time{font-size:12px;min-height:40px;display:flex;align-items:center;margin-bottom:14px}
.timeline article>p:last-child{font-size:15px;line-height:1.75}
.location{gap:7%}
.venue-facts{border-radius:12px;background:var(--card-muted);padding:28px}
.venue-facts>p{font-size:clamp(38px,4.2vw,60px)}
.location-copy h2{font-size:clamp(32px,3vw,44px)}
.venues-heading{display:block;margin-bottom:30px}
.venues-heading>p{max-width:none;margin-top:20px}
.venues-layout{grid-template-columns:minmax(0,1.5fr) minmax(230px,1fr);gap:24px}
.venue-map{height:460px;border-radius:12px}
.venue-addresses{padding:0;gap:18px}
.venue-addresses article{background:var(--card-muted);padding:24px;border-radius:12px}
.venue-addresses h3{font-size:26px}
.venue-addresses p{font-size:15px}
.venue-addresses article>a{font-size:14px;margin-top:16px}
.venue-route{font-size:14px;margin:0 6px}
.memory{grid-template-columns:1fr 1.4fr;gap:6%}
.memory h2{font-size:clamp(32px,3vw,44px)}
.memory img{border-radius:12px}
.faq{grid-template-columns:1fr 1.4fr;gap:7%}
.faq h2{font-size:clamp(32px,3vw,44px)}
.faq details{padding:0 18px;margin:0 0 12px;background:#e8e4dc;border-radius:12px}
.faq details[open]{padding:0 18px;margin:0 0 12px;background:#e0d9cd}
.faq summary{font-size:18px;line-height:1.5;gap:14px}
.faq details p{font-size:15px}
.rsvp{gap:7%;grid-template-columns:1fr 1.3fr}
.rsvp-intro h2{font-size:clamp(32px,3.2vw,46px)}
.rsvp form{background:#f8f6f1;border-radius:12px;padding:28px;min-width:0}
.rsvp legend{font-size:22px}
.attendance{flex-direction:column}
.attendance span{border-radius:8px}
footer{width:calc(100% - 2 * var(--gutter));max-width:calc(1440px - 2 * var(--gutter));margin:0 auto 32px;padding:42px 32px 28px;border-radius:var(--card-radius);background:#d9d3c8}
.footer-names{font-size:clamp(34px,6vw,80px)}
@media(max-width:1000px){.venues-layout{grid-template-columns:1fr}.venue-map{height:400px}.venue-addresses{display:grid;grid-template-columns:1fr 1fr;gap:18px}.venue-route{grid-column:1 / -1}.memory{grid-template-columns:1fr}.memory img{margin-top:24px}.rsvp{grid-template-columns:1fr}.rsvp-intro img{display:none}.rsvp form{margin-top:28px}.faq{grid-template-columns:1fr}.faq-list{margin-top:28px}.location{grid-template-columns:1fr 1.2fr}.section-nav-toggle,.section-nav-panel{background:transparent;box-shadow:none}}
@media(max-width:560px){:root{--gutter:18px;--card-radius:16px;--card-padding:24px;--card-gap:20px}main{padding-top:0;padding-bottom:24px}main>.hero{padding:14px 12px 26px}.invitation-photos{gap:6px}.invitation-photos img{border-radius:7px}.hero h1{width:100%;margin-top:20px}.hero-bottom{margin-top:16px;gap:20px}.hero-bottom p{font-size:14px}.hero .primary{min-width:0;width:100%;max-width:260px}main>.welcome{padding:34px 24px}.welcome h2{font-size:32px}.welcome>p,.welcome>p+p{font-size:17px}.section-heading h2{font-size:34px}.timeline{display:grid;grid-template-columns:1fr;gap:14px}.timeline article,.timeline article:nth-child(2),.timeline article:nth-child(3){padding:22px}.timeline .time{min-height:0}.timeline h3{font-size:27px}.location{display:flex;flex-direction:column-reverse;gap:28px}.venue-facts{padding:24px}.venue-facts>p{font-size:46px}.venue-facts dl{grid-template-columns:1fr}.location-copy h2,.venues-heading h2,.memory h2,.faq h2,.rsvp-intro h2{font-size:32px}.venue-map{height:340px}.venue-addresses{display:flex;gap:14px}.venue-addresses article{padding:22px}.venue-addresses h3{font-size:26px}.memory img{margin-top:26px}.faq details,.faq details[open]{padding:0 14px}.faq summary{font-size:17px}.rsvp form{padding:22px 16px;margin-top:26px}.rsvp legend{font-size:21px}footer{padding:34px 22px 24px;margin-bottom:26px}.footer-names{font-size:8.5vw}.section-nav-toggle{padding:12px 8px}.section-nav-panel a{color:#4f4437;text-shadow:0 1px 3px var(--paper)}}

.hero-actions{display:flex;align-items:stretch;justify-content:center;flex-wrap:wrap;gap:14px}
.hero-actions .primary,.hero-actions .secondary{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:52px;padding:14px 26px;border-radius:8px;font-size:15px;line-height:1.5;margin:0}
.hero-actions .secondary{background:var(--card-muted);color:var(--ink)}
.hero-actions .secondary:hover{background:#d9d0c2;opacity:1}
.hero:focus{outline:none}
@media(max-width:560px){.hero-actions{width:100%;gap:10px}.hero-actions .primary,.hero-actions .secondary{flex:1 1 200px;width:100%;max-width:280px;min-width:0;min-height:50px;padding:13px 20px}}

/* The names artwork has the same gray ground as the hero. Multiplying
   those identical grays darkens the image into a separate rectangle. */
.hero h1,.hero h1 img{mix-blend-mode:normal;background:transparent;border:0;box-shadow:none}

/* A little more depth for the invitation card; keep the names on the same ground. */
main>.hero{box-shadow:0 12px 36px #39302218,0 2px 6px #3930220a;outline:1px solid #ffffff70;outline-offset:-1px}

/* Connected day timeline: one event per stop, horizontal then vertical on phones. */
.day .timeline{--timeline-gap:22px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--timeline-gap);list-style:none;padding:0;margin:38px 0 0}
.timeline>li{position:relative;min-width:0;padding-top:38px;display:flex}
.timeline>li:before{content:'';position:absolute;z-index:1;left:50%;top:0;width:16px;height:16px;box-sizing:border-box;border:3px solid #e8e3da;border-radius:50%;background:#b9a28b;transform:translateX(-50%);box-shadow:0 0 0 1px #b9a28b;transition:background .25s,box-shadow .25s}
.timeline>li:after{content:'';position:absolute;left:50%;top:7px;width:calc(100% + var(--timeline-gap));height:2px;background:#c7b9a6}
.timeline>li:last-child:after{display:none}
.day .timeline article{width:100%;padding:26px 22px;background:#f5f2ec;border-radius:12px;transition:background .25s,box-shadow .25s,color .25s}
.day .timeline article:before{display:none}
.day .timeline .time{color:#846449;line-height:1.6;letter-spacing:.02em}
.day .timeline h3{transition:color .25s}
.timeline>li:hover:before,.timeline>li:focus-within:before{background:var(--accent);box-shadow:0 0 0 5px #95684c28}
.day .timeline li:hover article,.day .timeline article:focus-visible{background:#e5d7c4;box-shadow:0 6px 20px #6d493518}
.day .timeline li:hover h3,.day .timeline article:focus-visible h3{color:#744b31}
.day .timeline article:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
@media(max-width:760px){.day .timeline{--timeline-gap:18px;grid-template-columns:1fr;margin-top:30px}.timeline>li{padding:0 0 0 32px}.timeline>li:before{left:7px;top:27px;transform:translateX(-50%)}.timeline>li:after{left:6px;top:35px;width:2px;height:calc(100% + var(--timeline-gap))}.day .timeline article{padding:22px}.day .timeline .time{min-height:0;margin-bottom:12px}}
@media(prefers-reduced-motion:reduce){.timeline>li:before,.day .timeline article,.day .timeline h3{transition:none}}

/* Reveal the normal-flow page without swapping positioning modes. */
.site-content{position:relative}
.intro.hidden{transition:none;visibility:hidden;opacity:0}

/* Keep a viewport-sized preview stable before and during the letter expansion.
   Its transform grows from the actual letter rectangle to the full screen. */
.intro-active .site-content{position:fixed;inset:0;width:100%;height:100dvh;overflow:hidden}
.page-revealing .site-content{z-index:160;will-change:transform,clip-path;transform-origin:0 0}

/* Real venue photographs, with a stable hover surface on the event cards. */
.day .timeline article{min-height:280px}
.day .timeline .has-venue-photo{position:relative;overflow:hidden;isolation:isolate}
.timeline-photo{display:block;position:absolute;inset:0;z-index:0;opacity:0;pointer-events:none;transition:opacity .35s ease}
.timeline-photo img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 58%}
.timeline-photo:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#231e1780,#231e17b8)}
.day .has-venue-photo>p,.day .has-venue-photo>h3{position:relative;z-index:1}
.day .timeline li:hover .timeline-photo,.day .has-venue-photo:focus-visible .timeline-photo{opacity:1}
.day .timeline li:hover .has-venue-photo>p,.day .timeline li:hover .has-venue-photo>h3,.day .has-venue-photo:focus-visible>p,.day .has-venue-photo:focus-visible>h3{color:#fffaf1}
.location .venue-feature{grid-column:1 / -1;margin:0;min-width:0}
.venue-feature>img{width:100%;height:clamp(240px,35vw,410px);object-fit:cover;object-position:center 62%;border-radius:12px}
.venue-feature figcaption{margin-top:12px;font-size:14px;line-height:1.6;color:#6d5945}
.location{row-gap:32px}
.venue-address-photo{width:100%;height:auto;aspect-ratio:16/10;object-fit:cover;border-radius:8px;margin-bottom:20px}
.venue-addresses .venue-purpose{font-size:14px;color:#76543b;margin-bottom:14px;line-height:1.5}
.venues .venue-map{height:100%;min-height:540px}
@media(max-width:1000px){.venues .venue-map{height:420px;min-height:0}}
@media(max-width:760px){.day .timeline article{min-height:230px}}
@media(max-width:560px){.location{display:grid;grid-template-columns:1fr;gap:26px}.venue-feature>img{height:240px}.venue-feature figcaption{font-size:13px}.venues .venue-map{height:340px}.venue-address-photo{margin-bottom:18px}.day .timeline .time{font-size:12px;line-height:1.7}}
@media(hover:none){.day .timeline .timeline-photo{opacity:1}.day .timeline .has-venue-photo>p,.day .timeline .has-venue-photo>h3{color:#fffaf1}}
@media(prefers-reduced-motion:reduce){.timeline-photo{transition:none}}

/* Live dates and bilingual controls, keeping the original invitation composition. */
.invitation-photo{position:relative;min-width:0;aspect-ratio:500/670;overflow:hidden;border-radius:10px}
.invitation-photos .invitation-photo>img{width:100%;height:100%;aspect-ratio:auto;object-fit:cover;object-position:center 35%;border-radius:0}
.invitation-date{position:absolute;inset:auto 0 -0.065em;display:block;color:#fff;font:400 clamp(40px,11.8vw,190px)/1 Georgia,serif;text-align:center;letter-spacing:-.055em;pointer-events:none}
.hero h1{position:relative}
.names-tagline{position:absolute;left:15%;right:15%;bottom:4%;height:22%;display:flex;align-items:center;justify-content:center;background:var(--paper);font:500 clamp(7px,1.55vw,23px)/1.2 var(--sans);letter-spacing:.25em;text-transform:uppercase;color:#95684c;white-space:nowrap}
.language-switch{display:flex;align-items:center;justify-content:flex-end;gap:7px}
.language-switch button{display:grid;place-items:center;width:44px;height:40px;padding:8px;background:transparent;border-radius:7px;opacity:.55;transition:opacity .2s,background .2s}
.language-switch button img{width:28px;height:19px;object-fit:cover;border-radius:2px}
.language-switch button[aria-pressed=true]{opacity:1;background:#b69b7b30}
.language-switch button:hover{opacity:1;background:#b69b7b20}
.intro>.language-switch{position:absolute;top:60px;right:var(--gutter);z-index:2}
.hero>.language-switch{margin:0 0 16px}
@media(max-width:560px){.invitation-photo{border-radius:7px}.names-tagline{font-size:clamp(6px,1.7vw,10px);letter-spacing:.16em}.hero>.language-switch{margin-bottom:12px}.intro>.language-switch{top:54px}.letter-action{font-size:10px}.letter-signature{font-size:16px}}
html[lang=en-US] .letter-heading{font-size:clamp(19px,2.5vw,30px)}
@media(max-width:560px){html[lang=en-US] .letter-heading{font-size:19px}}

/* Personal story and the people helping bring the celebration together. */
.our-story .section-heading,.witnesses .section-heading{align-items:start;gap:28px}
.our-story .section-heading h2,.witnesses .section-heading h2{font-size:clamp(32px,3vw,44px);line-height:1.15;max-width:12ch}
.our-story .section-heading>p,.witnesses .section-heading>p{font-size:16px;line-height:1.75;max-width:36ch}
.milestones{list-style:none;margin:36px 0 0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.milestones li{min-width:0;padding:26px;border-radius:12px;background:#e8e3da}
.milestone-date{display:block;color:#76533b;font:14px/1.6 var(--sans);margin-bottom:14px}
.milestones h3{font-size:clamp(24px,2.1vw,30px);line-height:1.25;margin-bottom:16px}
.milestones article>p:last-child{font-size:16px;line-height:1.8;max-width:40ch}
.milestones li:last-child{background:#dfd4c3}
.witness-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin-top:36px}
.witness-profile{min-width:0;background:#e8e3da;border-radius:12px;overflow:hidden}
.witness-portrait{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;object-position:center 38%}
.witness-details{padding:26px}
.witness-role{font-size:14px;line-height:1.5;color:#76533b;margin-bottom:12px}
.witness-details h3{font-size:30px;line-height:1.2;margin-bottom:18px}
.witness-details>p:not(.witness-role){font-size:16px;line-height:1.75;max-width:36ch}
.witness-contact{margin:26px 0 0;display:grid;gap:16px}
.witness-contact>div{min-width:0}
.witness-contact dt{font-size:13px;color:#76533b;margin-bottom:4px}
.witness-contact dd{margin:0;font-size:16px;line-height:1.6;overflow-wrap:anywhere}
.witness-contact a{text-decoration:underline;text-underline-offset:4px}
.witness-note{font-size:14px;line-height:1.7;margin-top:24px;color:#6d5945}
@media(max-width:760px){.our-story .section-heading,.witnesses .section-heading{display:block}.our-story .section-heading>p,.witnesses .section-heading>p{margin-top:22px;max-width:40ch}.milestones{grid-template-columns:1fr}.witness-grid{grid-template-columns:1fr}.witness-profile{display:grid;grid-template-columns:1fr 1.3fr}.witness-portrait{height:100%;aspect-ratio:auto;object-position:center}.witness-details{padding:24px}}
@media(max-width:560px){.our-story .section-heading h2,.witnesses .section-heading h2{font-size:32px;max-width:none}.milestones,.witness-grid{margin-top:28px;gap:14px}.milestones li{padding:22px}.milestones h3{font-size:27px}.witness-profile{display:block}.witness-portrait{height:auto;aspect-ratio:4/3;object-position:center 38%}.witness-details{padding:22px}.witness-details h3{font-size:28px}.witness-note{font-size:13px}}

/* The story follows the wedding party, with a connected milestone timeline. */
.our-story .milestones{--story-gap:24px;grid-template-columns:1fr;gap:var(--story-gap);margin-top:38px}
.our-story .milestones>li{position:relative;display:block;padding:0 0 0 38px;background:transparent;border-radius:0}
.milestones>li:before{content:'';position:absolute;z-index:1;left:7px;top:29px;width:16px;height:16px;box-sizing:border-box;border:3px solid var(--card);border-radius:50%;background:#b9a28b;transform:translateX(-50%);box-shadow:0 0 0 1px #b9a28b;transition:background .25s,box-shadow .25s}
.milestones>li:after{content:'';position:absolute;left:6px;top:37px;width:2px;height:calc(100% + var(--story-gap));background:#c7b9a6}
.milestones>li:last-child:after{display:none}
.milestones article{position:relative;padding:26px;background:#e8e3da;border-radius:12px;transition:background .25s,box-shadow .25s}
.milestones li:last-child article{background:#dfd4c3}
.milestones>li:hover:before,.milestones>li:focus-within:before{background:var(--accent);box-shadow:0 0 0 5px #95684c28}
.milestones article:hover,.milestones article:focus-visible{background:#e0d0bb;box-shadow:0 6px 20px #6d493518}
.milestones article:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
.milestones article>p:last-child{max-width:64ch}
@media(max-width:560px){.our-story .milestones{--story-gap:18px;margin-top:28px}.our-story .milestones>li{padding-left:30px}.milestones article{padding:22px}.milestones>li:before{top:25px}.milestones>li:after{top:33px}}
@media(prefers-reduced-motion:reduce){.milestones>li:before,.milestones article{transition:none}}

/* Our Day shares the outer card surface; its events use warm, darker panels. */
main>.day{background:var(--card)}
.day .timeline article{background:#54473a;color:#f5eee3}
.day .timeline .time{color:#e0c5a3}
.day .timeline h3{color:#fff8ef}
.day .timeline>li:before{border-color:var(--card);background:#a18465;box-shadow:0 0 0 1px #a18465}
.day .timeline>li:after{background:#c7b9a6}
.day .timeline li:hover article,.day .timeline article:focus-visible{background:#66503c;box-shadow:0 6px 20px #49322124}
.day .timeline li:hover h3,.day .timeline article:focus-visible h3{color:#fff8ef}
.day .timeline li:hover .has-venue-photo>p,.day .timeline li:hover .has-venue-photo>h3,.day .has-venue-photo:focus-visible>p,.day .has-venue-photo:focus-visible>h3{color:#fffaf1}
.day .timeline>li:hover:before,.day .timeline>li:focus-within:before{background:var(--accent);box-shadow:0 0 0 5px #95684c28}
@media(hover:none){.day .timeline .has-venue-photo>p,.day .timeline .has-venue-photo>h3{color:#fffaf1}}

/* Match the shared inner-card palette throughout the site. */
.day .timeline article{background:#e8e3da;color:var(--ink)}
.day .timeline .time{color:#76533b}
.day .timeline h3{color:var(--ink)}
.day .timeline li:hover article,.day .timeline article:focus-visible{background:#e0d0bb;box-shadow:0 6px 20px #6d493518}
.day .timeline li:hover h3,.day .timeline article:focus-visible h3{color:#744b31}
.day .timeline li:hover .has-venue-photo>p,.day .timeline li:hover .has-venue-photo>h3,.day .has-venue-photo:focus-visible>p,.day .has-venue-photo:focus-visible>h3{color:#fffaf1}
@media(hover:none){.day .timeline .has-venue-photo>p,.day .timeline .has-venue-photo>h3{color:#fffaf1}}

/* Keep floating section controls clear of cards on phones and tablets. */
@media(max-width:1199px){.section-nav{display:none}}
