/* Design tokens: change these to restyle the entire template. */
/* Self-hosted fonts (SIL Open Font License 1.1, latin subset from Google Fonts):
   Prata for headings, Raleway for text, Mrs Saint Delafield for monogram and names. */
@font-face{font-family:'Prata';font-style:normal;font-weight:400;font-display:swap;src:url('assets/fonts/prata-regular-latin.woff2') format('woff2')}
@font-face{font-family:'Raleway';font-style:normal;font-weight:300 700;font-display:swap;src:url('assets/fonts/raleway-variable-latin.woff2') format('woff2')}
@font-face{font-family:'Raleway';font-style:italic;font-weight:300 700;font-display:swap;src:url('assets/fonts/raleway-italic-variable-latin.woff2') format('woff2')}
@font-face{font-family:'Mrs Saint Delafield';font-style:normal;font-weight:400;font-display:swap;src:url('assets/fonts/mrs-saint-delafield-latin.woff2') format('woff2')}
:root{--ivory:#f2e2c8;--paper:#e8d2af;--sage:#8b966d;--sage-dark:#52623e;--ink:#44301f;--muted:#715c45;--line:#bfa582;--serif:'Prata',Georgia,'Times New Roman',serif;--sans:'Raleway','Avenir Next',Avenir,'Segoe UI',sans-serif;--script:'Mrs Saint Delafield','Snell Roundhand',cursive;--script-scale:1.3;--amp-before:.18em;--amp-after:.16em;--mono-trail:.5em;--name-amp-before:.26em;--name-amp-after:.26em;--content:1160px;--header:98px}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;color:var(--ink);background:var(--ivory);font:16px/1.7 var(--sans);-webkit-font-smoothing:antialiased}body.invitation-closed{overflow:hidden}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit}button{color:inherit}img{display:block;max-width:100%}button:disabled{cursor:default}a,button,input,select,textarea{outline-offset:6px}:focus-visible{outline:2px solid var(--sage-dark)}[hidden]{display:none!important}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.1}h2{font-size:clamp(2.6rem,4.2vw,4.25rem);letter-spacing:-.035em}h3{font-size:1.6rem}p+p{margin-top:1rem}.section-wrap{max-width:var(--content);padding-inline:30px;margin-inline:auto}.eyebrow{text-transform:uppercase;font:11px/1.6 var(--sans);letter-spacing:.23em;margin-bottom:20px;color:var(--muted)}.small-copy{font-size:12px;line-height:1.7;color:var(--muted)}.button{display:inline-flex;align-items:center;justify-content:center;gap:24px;min-height:52px;padding:12px 36px;border:1px solid transparent;border-radius:5px;background:var(--sage);color:#261e14;font:21px/1.3 var(--serif);text-decoration:none;transition:background .2s,transform .2s,box-shadow .2s}.button:hover{background:#a5aa89;transform:translateY(-2px);box-shadow:0 5px 18px #30241d18}.text-button{border:0;border-bottom:1px solid #ad9270;background:none;padding:7px 0;font-size:13px;text-decoration:none}.text-button:hover{color:var(--sage-dark)}.sr-only,.visually-hidden-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:8px;left:8px;transform:translateY(-160%);z-index:100;background:var(--ivory);padding:8px 20px}.skip-link:focus{transform:translateY(0)}

/* Navigation and photographic opening. */
.site-header{position:absolute;top:0;left:0;width:100%;height:var(--header);padding:0 clamp(24px,5vw,80px);display:flex;align-items:center;justify-content:space-between;z-index:20;color:var(--ivory);border-bottom:1px solid #f7efe314}.brand{display:flex;align-items:center;gap:8px;text-decoration:none;font:calc(38px*var(--script-scale))/1 var(--script);white-space:nowrap}.brand img{width:42px;height:52px;filter:brightness(0) invert(.94)}.site-header nav{display:flex;gap:clamp(20px,3.6vw,60px)}.site-header nav a{font:17px var(--serif);text-decoration:none;position:relative;padding:10px 0}.site-header nav a:after{content:'';position:absolute;bottom:1px;height:1px;background:var(--ivory);width:0;left:0;transition:width .25s}.site-header nav a:hover:after{width:100%}.menu-toggle{display:none}.hero{min-height:780px;min-height:min(880px,100svh);position:relative;display:grid;place-items:center;color:var(--ivory);background:#392717;overflow:hidden}
/* Parallax layer: script.js moves it down at a fraction of the scroll speed. Moving
   down only ever reveals more of the image below, so no extra height is needed. */
.hero-bg{position:absolute;inset:0;background:url('assets/kerzenschein.jpg') center 52%/cover;will-change:transform}.hero-shade{position:absolute;inset:0;background:linear-gradient(180deg,#21160f50,#24190f39 40%,#20140908 85%),linear-gradient(90deg,#1d130d15,#1d130d40 45%,#1d130d10)}.hero-content{position:relative;text-align:center;padding:135px 24px 130px;width:100%;text-shadow:0 2px 22px #1c1109aa}.hero-monogram{display:flex;justify-content:center;align-items:center;gap:16px;margin-bottom:14px}/* Same pieces and line-height as the letter's .paper-monogram, so the letter's name can
   land on exactly these glyph positions (script.js measures them). */
.hero-names{display:inline-flex;align-items:baseline;white-space:nowrap;font:calc(clamp(38px,4.2vw,62px)*var(--script-scale))/1.1 var(--script)}
.hero-names>span{display:inline-block}
.hero-amp{margin:0 var(--name-amp-after) 0 var(--name-amp-before)}.hero-monogram img{width:76px;height:65px;transform:rotate(32deg);filter:brightness(0) invert(.94)}.hero-monogram .sprig-left{transform:scaleX(-1) rotate(32deg)}h1{font-size:clamp(62px,9vw,136px);letter-spacing:-.04em;line-height:1.1;margin-bottom:32px}.wedding-date{display:flex;align-items:center;justify-content:center;gap:20px;font:clamp(23px,2.8vw,36px) var(--serif);letter-spacing:.14em;font-variant-numeric:lining-nums}.wedding-date:before,.wedding-date:after{content:'';height:1px;width:46px;background:#f7efe3a6}.hero-location{font:clamp(18px,2vw,26px) var(--serif);letter-spacing:.03em;font-variant-numeric:lining-nums;margin-top:22px}.hero .button{margin-top:42px;min-width:215px;text-shadow:none}.scroll-cue{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);text-decoration:none;font:24px var(--serif);opacity:.75;padding:8px}

/* Oak split-flap clock: real text, texture, seam and discreet hinges. */
.countdown-section{padding:92px 24px 104px;text-align:center;background:linear-gradient(100deg,#e9cfaaa6,transparent 45%,#e4d1aa66)}.countdown-section .eyebrow{margin-bottom:32px}.countdown{display:flex;justify-content:center;gap:clamp(36px,5.7vw,90px)}.digits{display:flex;gap:3px}.digit{width:clamp(43px,5.1vw,73px);height:clamp(57px,6.5vw,94px);border:1px solid #c2935a;border-radius:5px;background:#e8bf8e url('assets/oak-grain.svg') center/200px 150px;box-shadow:inset 0 1px 1px #fff5dc,0 2px 3px #6b4e2e24;position:relative;display:grid;place-items:center;font:clamp(43px,5vw,70px)/1 var(--serif);font-weight:400;color:#583215;text-shadow:0 1px #fff0ce66;font-variant-numeric:lining-nums tabular-nums;padding-top:.195em}/* Prata's line box sits low below the figures; padding-top (border-box, so the tile
   keeps its size) lowers the digits by .0975em to the optical centre of 3/5/6/8/9. */
.digit:nth-child(2n){background-position:71px 30px}.digit:nth-child(3n){background-position:119px 65px}.digit:before{content:'';position:absolute;left:0;right:0;top:50%;height:1px;background:#79502d99;box-shadow:0 1px #ffebc099;z-index:1}.digit:after{content:'';position:absolute;top:calc(50% - 4px);left:-2px;width:3px;height:8px;border-radius:1px;background:linear-gradient(90deg,#795931,#e2c496,#89683e);box-shadow:calc(clamp(43px,5.1vw,73px) - 1px) 0 #a18354;z-index:2}.digit.is-flipping{animation:flip .42s ease}.clock-group{display:flex;flex-direction:column;align-items:center}
/* Label is centred under its tiles but never widens the column, so the gaps
   between tile groups depend only on .countdown gap (equal on every screen). */
.clock-label{display:flex;align-items:center;justify-content:center;gap:11px;font:21px var(--serif);margin-top:20px;width:0;white-space:nowrap}.clock-label:before,.clock-label:after{content:'';height:1px;width:28px;background:#b79b7b;flex:none}.intro{text-align:center;padding-bottom:110px}.floral-divider{display:flex;align-items:center;justify-content:center;gap:24px;margin:0 auto 35px}.floral-divider>span{height:1px;width:150px;background:var(--line)}.floral-divider img{width:55px;height:65px;transform:rotate(8deg)}.intro .eyebrow{margin-bottom:16px}.lead{max-width:660px;margin:26px auto 48px;color:var(--muted);font-size:16px;line-height:1.95}.photo-triptych{display:grid;grid-template-columns:1fr 1.15fr 1fr;gap:20px;align-items:start}.photo-detail{overflow:hidden;text-align:left}.photo-detail img{height:300px;width:100%;object-fit:cover;transition:transform .7s}.photo-detail:hover img{transform:scale(1.035)}.detail-flowers{margin-top:22px}.detail-flowers img{object-position:0 80%;width:180%;max-width:none}.detail-room img{height:350px;object-position:60% 50%}.detail-candles{margin-top:22px}.detail-candles img{object-position:90% 70%;width:160%;max-width:none;transform:translateX(-25%)}.detail-candles:hover img{transform:translateX(-25%) scale(1.035)}figcaption{font:italic 15px var(--serif);padding-top:15px;color:var(--muted)}

/* Content sections and guest flows. */
.day-section{padding:95px 0;background:#e5d2b3;border-block:1px solid #e1d4c2}.day-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:100px}.day-grid>div>p:not(.eyebrow){max-width:350px;margin-top:25px;color:var(--muted)}.day-grid .venue-name{font:italic 27px var(--serif);color:var(--ink)!important}.timeline{list-style:none;margin:0;padding:10px 0 0}.timeline li{display:grid;grid-template-columns:95px 1fr;gap:25px;position:relative;padding-bottom:40px}.timeline li:last-child{padding-bottom:0}.timeline li:before{content:'';position:absolute;left:108px;top:8px;bottom:-8px;width:1px;background:#beab91}.timeline li:last-child:before{display:none}.timeline li:after{content:'';position:absolute;left:105px;top:6px;width:7px;height:7px;border-radius:50%;background:var(--sage-dark);box-shadow:0 0 0 5px #e5d2b3}.timeline-time{font-size:11px;text-transform:uppercase;letter-spacing:.1em;padding-top:4px}.timeline li>div{padding-left:15px}.timeline h3{font-size:24px}.timeline p{color:var(--muted);font-size:14px;margin-top:12px}.schedule-note{margin-top:45px;text-align:right}.rsvp-section{padding-block:110px}.section-heading{text-align:center;max-width:650px;margin:0 auto 48px}.section-heading>p:not(.eyebrow){margin-top:24px;color:var(--muted)}.rsvp-form{max-width:700px;margin:0 auto;padding:42px 46px;background:#fff5df66;border:1px solid #ded0bd;border-radius:4px}label,legend{font-size:13px}/* 16px minimum: iOS Safari zooms into any focused field below 16px and stays zoomed. */
input:not([type=radio],[type=checkbox],[type=file]),select,textarea{width:100%;background:#fffdf730;border:1px solid #cabbab;border-radius:3px;padding:12px 14px;color:var(--ink);font-size:16px;margin-top:7px;min-height:47px}textarea{resize:vertical}.demo-invitation{padding-bottom:26px;margin-bottom:24px;border-bottom:1px solid var(--line)}.demo-invitation label{font-size:11px;text-transform:uppercase;letter-spacing:.13em}.demo-invitation .small-copy{display:block;margin-top:8px}fieldset{border:0;margin:0;padding:0}fieldset legend{margin-bottom:13px}input[type=radio],input[type=checkbox]{accent-color:var(--sage-dark);width:17px;height:17px;margin:0;flex-shrink:0}.attendance{display:flex;gap:20px;flex-wrap:wrap;margin-bottom:24px}.attendance label,.guest-options label{display:flex;align-items:center;gap:10px;min-height:32px}.person-fields{border-top:1px solid #decebc;padding:24px 0 16px}.person-fields legend{font:italic 22px var(--serif);padding-right:16px;margin:0}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-bottom:16px}.allergy-field{margin-bottom:10px}.guest-options{display:flex;flex-direction:column;gap:12px;margin:8px 0 26px}.guest-options label[hidden]{display:none}.optional{color:var(--muted);font-size:11px;margin-left:5px}.rsvp-form>.button{margin-top:24px;width:100%}.form-note{text-align:center;margin-top:12px}.memories-section{padding:95px 0;background:#cad5b3}.memories-grid{display:grid;grid-template-columns:1fr 1fr;gap:100px;align-items:center}.memories-grid h2{max-width:400px}.memories-grid p{margin-top:24px;max-width:410px;color:#62694f}.memories-grid .button{margin-top:28px}.memories-grid .small-copy{margin-top:14px}.upload-button{font-size:19px;cursor:pointer}.upload-button:has(+input:focus-visible){outline:2px solid var(--sage-dark);outline-offset:6px}.empty-gallery{min-height:300px;border:1px solid #a9b09388;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:25px;background:#f7efe324}.empty-gallery img{width:65px;transform:rotate(12deg)}.empty-gallery p{font:italic 27px/1.3 var(--serif);margin-top:12px}.empty-gallery span{margin-top:20px;font-size:10px;text-transform:uppercase;letter-spacing:.2em;color:#70785c}.media-preview.has-media{display:grid;grid-template-columns:1fr 1fr;gap:12px}.media-item{position:relative;margin:0;background:#f5f1e5;border:1px solid #c6cbb7;padding:8px;overflow:hidden}.media-item img,.media-item video{height:160px;width:100%;object-fit:cover}.media-item figcaption{font:11px var(--sans);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:8px 24px 3px 0}.remove-media{position:absolute;right:7px;top:7px;background:var(--ivory);border:0;border-radius:50%;width:26px;height:26px;line-height:1;font-size:19px}.gifts-section{padding-block:110px}.gift-tabs{display:flex;justify-content:center;gap:30px;margin-bottom:42px}.text-tab{font:18px var(--serif);border:0;border-bottom:1px solid transparent;padding:10px 0;background:none;color:var(--muted)}.text-tab.active{color:var(--ink);border-color:var(--ink)}.gift-list{display:grid;grid-template-columns:repeat(3,1fr);gap:32px}.gift{padding:0 0 0 24px;border-left:1px solid var(--line)}.gift-number{font:italic 30px var(--serif);color:#b8a188;display:block;margin-bottom:20px}.gift h3{font-size:25px}.gift p{font-size:14px;color:var(--muted);margin:16px 0 22px;min-height:48px}.gift .text-button{font-size:12px}.reserved-label{font-size:11px;color:var(--sage-dark);display:block;padding-top:7px}.gift-taken{opacity:.65}.gift-text{font:24px/1.8 var(--serif);text-align:center;max-width:680px;margin:0 auto}.gift-demo{text-align:center;margin-top:35px}.reserve-gift.is-reserved{color:var(--sage-dark)}footer{background:#e5d2b3;padding:65px 24px;text-align:center;border-top:1px solid #ddcebb}/* Script monogram B&P: room around the &, and the final P's swash reaches ~.5em past
   its box, so equal room on the right keeps the visible ink centred. */
.mono-amp{margin:0 var(--amp-after) 0 var(--amp-before)}
.footer-monogram{padding-right:var(--mono-trail)}
.brand>span{padding-right:calc(var(--mono-trail)*.6)}
.footer-monogram{font:calc(55px*var(--script-scale)) var(--script)}footer p{font:16px var(--serif);margin-top:15px}footer>span{font:italic 20px var(--serif);display:block;margin-top:25px}footer .text-button{display:block;margin:30px auto 0;font-size:11px}

/* Native dialogs keep keyboard focus inside the current interaction. */
dialog{width:min(540px,calc(100% - 32px));border:1px solid #cfbba2;border-radius:6px;padding:46px;background:var(--ivory) url('assets/paper.svg');color:var(--ink);box-shadow:0 20px 100px #24170f55;max-height:90svh;overflow:auto}dialog::backdrop{background:#251b12aa;backdrop-filter:blur(5px)}dialog h2{font-size:40px}dialog p:not(.eyebrow){margin:22px 0;color:var(--muted);font-size:14px}dialog label{display:block;margin-top:25px}dialog .button{width:100%;margin-top:20px}dialog .text-button{display:block;margin:20px auto 0}.dialog-close{position:absolute;right:16px;top:12px;border:0;background:none;font-size:28px}.guest-dialog{animation:dialog-enter .45s ease}.guest-dialog .small-copy{font-size:11px}.reply-person{padding:15px 0;border-bottom:1px solid var(--line);font-size:13px}.reply-person strong{display:block;font:22px var(--serif);margin-bottom:5px}.reply-person span{display:block}.noscript-message{position:fixed;inset:auto 15px 15px;z-index:100;background:var(--ivory);padding:15px;text-align:center}
@keyframes flip{0%{transform:perspective(400px) rotateX(0)}45%{transform:perspective(400px) rotateX(-24deg);filter:brightness(.9)}100%{transform:perspective(400px) rotateX(0)}}@keyframes dialog-enter{from{opacity:0;transform:translateY(25px)}to{opacity:1;transform:none}}
@media(min-width:1600px){.hero{min-height:900px}}
@media(max-width:900px){:root{--header:80px}.site-header{padding-inline:28px}.site-header nav{gap:22px}.site-header nav a{font-size:16px}.brand{font-size:calc(32px*var(--script-scale))}.brand img{width:32px}.hero{min-height:740px}.day-grid,.memories-grid{gap:50px}.rsvp-section,.gifts-section{padding-block:85px}.photo-detail img{height:250px}.detail-room img{height:290px}.gift-list{gap:20px}.gift{padding-left:16px}.gift h3{font-size:22px}.clock-label{font-size:19px}.clock-label:before,.clock-label:after{width:17px}}
@media(max-width:640px){html{scroll-padding-top:24px}.section-wrap{padding-inline:24px}h2{font-size:42px}.site-header{height:78px;padding:0 24px}.brand{font-size:calc(30px*var(--script-scale))}.brand img{width:32px;height:40px}.menu-toggle{display:flex;flex-direction:column;justify-content:center;gap:7px;width:44px;height:44px;border:0;background:transparent;color:var(--ivory);z-index:22}.menu-toggle span{height:1px;width:24px;background:currentColor;transition:transform .2s}.menu-toggle[aria-expanded=true] span:first-child{transform:translateY(4px) rotate(45deg)}.menu-toggle[aria-expanded=true] span:last-child{transform:translateY(-4px) rotate(-45deg)}.site-header nav{display:none;position:absolute;top:0;left:0;right:0;background:#302419fa;padding:95px 30px 35px;flex-direction:column;gap:12px;box-shadow:0 8px 25px #21180e33}.site-header nav.is-open{display:flex}.site-header nav a{font:26px var(--serif);padding:10px}.site-header nav a:after{display:none}.brand{z-index:22}.hero{min-height:670px;min-height:92svh;max-height:850px}
.hero-bg{background-position:45% 50%}.hero-content{padding:110px 20px 100px}.hero-monogram{margin-bottom:20px;gap:7px}.hero-monogram img{width:53px;height:49px}.hero-names{font-size:min(calc(42px*var(--script-scale)),10vw)}h1{font-size:clamp(52px,12vw,78px);margin-bottom:26px}.wedding-date{font-size:25px;gap:12px}.wedding-date:before,.wedding-date:after{width:23px}.hero-location{font-size:18px;margin-top:18px}.hero .button{margin-top:35px;min-width:195px}.button{font-size:20px}.hero-shade{background:linear-gradient(180deg,#21160f55,#24190f60 45%,#20140908 95%)}.scroll-cue{bottom:15px}.countdown-section{padding:62px 15px 75px}.countdown-section .eyebrow{font-size:9px;margin-bottom:28px}.countdown{gap:clamp(24px,7.5vw,38px)}.digits{gap:2px}.digit{width:clamp(29px,8.3vw,43px);height:clamp(42px,11vw,57px);font-size:clamp(31px,8.7vw,44px);background-size:160px 110px;border-radius:4px}.digit:after{box-shadow:calc(clamp(29px,8.3vw,43px) - 1px) 0 #a18354;width:2px;height:6px;top:calc(50% - 3px);left:-1px}.clock-label{font-size:15px;gap:5px;margin-top:14px}.clock-label:before,.clock-label:after{width:6px}.floral-divider{gap:20px;margin-bottom:30px}.floral-divider>span{width:85px}.floral-divider img{width:45px;height:55px}.intro{padding-bottom:75px}.intro .eyebrow{font-size:9px}.lead{font-size:14px;margin:24px auto 32px}.photo-triptych{gap:9px;grid-template-columns:1fr 1fr 1fr}.photo-detail img{height:180px}.detail-room img{height:220px}.detail-flowers,.detail-candles{margin-top:20px}figcaption{font-size:11px;line-height:1.4;padding-top:12px}.day-section{padding:65px 0}.day-grid,.memories-grid{grid-template-columns:1fr;gap:45px}.day-grid>div>p:not(.eyebrow){max-width:none}.timeline{padding-left:0}.timeline li{grid-template-columns:73px 1fr;gap:18px}.timeline li:before{left:81px}.timeline li:after{left:78px}.timeline-time{font-size:9px}.timeline h3{font-size:23px}.timeline p{font-size:13px}.schedule-note{text-align:left;font-size:11px;margin-top:32px}.section-heading{margin-bottom:32px}.section-heading>p:not(.eyebrow){font-size:14px}.rsvp-section,.gifts-section{padding-block:75px}.rsvp-form{padding:26px 20px}.field-grid{grid-template-columns:1fr;gap:14px}.attendance{flex-direction:column;gap:8px}.rsvp-form>.button{font-size:20px;padding-inline:15px}.memories-section{padding:65px 0}.memories-grid{gap:35px}.memories-grid p{font-size:14px}.empty-gallery{min-height:260px}.memories-grid .button{font-size:18px;padding-inline:22px}.gift-tabs{gap:24px}.text-tab{font-size:16px}.gift-list{grid-template-columns:1fr;gap:30px}.gift{padding:4px 0 8px 23px}.gift-number{font-size:24px;margin-bottom:12px}.gift h3{font-size:26px}.gift p{min-height:0;margin:12px 0 18px}.gift-text{font-size:21px}.gift-demo{font-size:11px}footer{padding:50px 24px}dialog{padding:35px 25px}dialog h2{font-size:34px}}

@media(max-width:360px){.countdown{gap:22px}
.clock-label:before,.clock-label:after{display:none}
.hero-monogram img{width:40px;height:37px}.digit{width:27px;height:40px;font-size:30px}.digit:after{box-shadow:26px 0 #a18354}.clock-label{font-size:14px;gap:3px}.clock-label:before,.clock-label:after{width:7px}.section-wrap{padding-inline:18px}.photo-detail img{height:150px}.detail-room img{height:190px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
