/* Vector invitation: even checker strips, open layouts and reflective details. */
:root{--check-size:24px}

h1,h2,h3{letter-spacing:0;word-spacing:.04em}
p,address,label,legend,summary,.text-link{word-spacing:.025em}
h2,h3,p,address{overflow-wrap:break-word}
.cover{position:relative;background:var(--paper);padding:var(--check-size);overflow:hidden}
.cover::before,.cover::after{content:'';position:absolute;top:0;bottom:0;width:var(--check-size);background:repeating-linear-gradient(to bottom,var(--wine) 0 var(--check-size),var(--paper) var(--check-size) calc(2 * var(--check-size)));pointer-events:none}
.cover::before{left:0}
.cover::after{right:0}
.cover-sheet{min-height:calc(100svh - 140px);padding:36px 56px 25px;background:var(--paper);display:grid;grid-template-rows:auto 1fr auto;gap:15px;text-align:center;isolation:isolate}
.cover-heading{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding-top:6px}
.cover-heading .eyebrow{font-size:12px;letter-spacing:.16em}
.cover-heading>span{font-size:18px;line-height:1.3}
.cover-caption{font-size:15px}
.cover-center{display:flex;justify-content:center;align-items:center;position:relative;padding:10px 0;transform-origin:center;animation:cover-arrival 1.25s cubic-bezier(.2,.7,.25,1) both}
.floating-dice{width:min(610px,61vw,67svh);animation:invitation-float 7s ease-in-out infinite;transform-origin:center}
.sticker{position:relative;isolation:isolate;display:block;overflow:visible;touch-action:pan-y}
.sticker img{display:block;width:100%;height:auto;filter:drop-shadow(0 10px 7px #46322720);user-select:none;-webkit-user-drag:none}
.sticker-foil{position:absolute;inset:0;pointer-events:none;background:linear-gradient(110deg,transparent 28%,#ffffff00 40%,#faffdf88 45%,#fff 49%,#fff6 52%,#ffe3fc77 55%,transparent 64%);background-size:300% 100%;background-position:180% 50%;-webkit-mask:var(--sticker-mask,url('/assets/dados-gj.svg')) center/contain no-repeat;mask:var(--sticker-mask,url('/assets/dados-gj.svg')) center/contain no-repeat;mix-blend-mode:screen;opacity:0}
.sticker.is-gleaming .sticker-foil{opacity:.94;animation:sticker-shine 1.4s ease-in-out both}
.cover-bottom{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:18px;padding-bottom:5px}
.cover-date{font-family:var(--display);font-size:29px;letter-spacing:.11em;line-height:1.1}
.scroll-invitation{display:flex;flex-direction:column;align-items:center;gap:12px;font-size:11px;letter-spacing:.11em;padding:5px 15px;min-height:49px}
.scroll-invitation:hover{color:var(--brown)}
.scroll-line{height:23px;width:1px;background:var(--wine);transform-origin:top;animation:scroll-pulse 2.5s ease-in-out infinite}
.names-section{background:var(--cream);padding-top:42px;padding-bottom:42px}
.names-frame{text-align:center;padding:50px 30px 32px}
.names-frame>.eyebrow{font-size:12px;letter-spacing:.14em}
.couple-names{font-family:var(--gothic);font-weight:400;font-size:clamp(96px,13.5vw,220px);line-height:1.06;margin:35px auto 24px;letter-spacing:-.015em;word-spacing:0}
.name-word{display:inline-block;position:relative;white-space:nowrap}
.name-edge{position:absolute;inset:0;pointer-events:none;color:transparent;-webkit-text-fill-color:transparent;-webkit-text-stroke:1.1px #fff9da;filter:drop-shadow(0 0 4px #fff2c6);-webkit-mask-image:linear-gradient(110deg,transparent 40%,#000 49%,#000 52%,transparent 61%);mask-image:linear-gradient(110deg,transparent 40%,#000 49%,#000 52%,transparent 61%);-webkit-mask-size:300% 100%;mask-size:300% 100%;-webkit-mask-position:180% 50%;mask-position:180% 50%;animation:name-glint 7s ease-in-out infinite}
.names-second-line{display:block;white-space:nowrap}
.names-second-line .name-edge{animation-delay:1s}
.name-ampersand{font-family:var(--display);font-size:.49em;display:inline-block;margin-right:.17em;color:var(--rose);vertical-align:15%}
.names-message{font-size:17px;line-height:1.65}
.names-details{display:flex;justify-content:center;align-items:center;gap:40px;padding-top:32px;margin-top:35px;border-top:1px solid #6f223444}
.names-details p{display:flex;flex-direction:column;gap:5px;font-size:14px;margin:0}
.names-divider{font-size:23px;color:var(--rose)}
.story-grid{gap:60px}
.story h2>span{margin-top:14px}
.story-copy .story-star{font-size:36px;margin-bottom:22px}
.checker-edges{position:relative}
.checker-edges::before,.checker-edges::after{content:'';position:absolute;top:0;bottom:0;width:22px;background:repeating-linear-gradient(to bottom,var(--pink) 0 22px,var(--wine) 22px 44px);pointer-events:none}
.checker-edges::before{left:0}
.checker-edges::after{right:0}
.detail-grid{gap:20px;border:0}
.detail-card{border:0;border-top:1px solid #6f223455;padding:30px 24px}
.detail-card:last-child{border:0;border-top:1px solid #6f223455}
.detail-card:nth-child(2){background:transparent}
.detail-card:hover{background:transparent}
.detail-card h3{word-spacing:.07em}
.details .section-heading:after{content:'';display:block;background:repeating-conic-gradient(var(--wine) 0 25%,var(--paper) 0 50%) 0 0/28px 28px;width:56px;height:56px;flex:0 0 56px;align-self:flex-start}
.schedule-intro .schedule-tag{border:0;position:relative;padding-left:37px}
.schedule-tag:before{content:'';position:absolute;top:10px;left:0;width:22px;height:22px;background:repeating-conic-gradient(var(--pink) 0 25%,var(--olive) 0 50%) 0 0/22px 22px}
.map-frame{padding:0;border:0;background:transparent;box-shadow:none;position:relative;transform:none}
.map-caption,.map-frame>p{background:var(--cream);color:var(--wine)}
.map-frame>p{border-top:1px solid #6f223433}
.rsvp-grid{gap:65px;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr)}
.rsvp-grid>*{min-width:0;max-width:100%}
#rsvp-form{width:100%;min-width:0;max-width:100%;padding:0;background:transparent;border:0}
#rsvp-form fieldset{min-inline-size:0}
#rsvp-form input:not([type=radio]),#rsvp-form select,#rsvp-form textarea{min-width:0;max-width:100%;box-sizing:border-box}
.rsvp{color:#fff}
#rsvp-form input:not([type=radio]),#rsvp-form select,#rsvp-form textarea{color:#fff;border-color:#ffffff80}
#rsvp-form input::placeholder,#rsvp-form textarea::placeholder{color:#fff;opacity:1}
#rsvp-form select{color-scheme:dark}
#rsvp-form option{color:#fff;background:var(--wine)}
#rsvp-form .attendance-options label{border-color:#ffffff80}
#rsvp-form .attendance-options label:has(:checked){color:#fff;border-color:var(--wine)}
#rsvp-form .attendance-options label:has(:checked) input{accent-color:#fff}
#rsvp-form .button{color:#fff}
#rsvp-form .form-submit:hover{background:var(--wine);filter:brightness(1.1)}
.attendance-options>label,.attendance-options>label>span{min-width:0;white-space:normal}
.rsvp-dice.floating-dice{width:min(290px,85%);margin:35px 0 0;background:none;border:0;padding:0}
.rsvp-copy h2{font-size:clamp(50px,6.4vw,100px)}
.rsvp .attendance-options{grid-template-columns:1fr}
.field-help{font-size:13px;line-height:1.5;margin:-4px 0 14px}
.child-help{margin-top:-14px;margin-bottom:26px}
.rsvp-copy .rsvp-explanation{max-width:350px}
.footer-dice{width:150px;transform:rotate(8deg);margin:37px auto 0}
.footer-dice img{filter:none}
.footer-heading{padding-top:20px;letter-spacing:0;word-spacing:.02em}
.footer-top{gap:22px}
.site-footer{position:relative;background-image:url("/assets/zebra-texture-gj.svg");background-size:cover;background-position:center;background-repeat:no-repeat}
.form-help{line-height:1.7}
.section-marker{word-spacing:.04em}
.lead{word-spacing:.02em}
.signature{word-spacing:.09em}



@keyframes cover-arrival{0%{transform:scale(.4);opacity:0}
72%{transform:scale(1.035);opacity:1}
100%{transform:scale(1);opacity:1}
}

@keyframes invitation-float{0%,100%{transform:translateY(3px) rotate(-2deg)}
50%{transform:translateY(-12px) rotate(1.5deg)}
}

@keyframes sticker-shine{0%{background-position:180% 50%;opacity:0}
18%{opacity:.95}
80%{opacity:.95}
100%{background-position:-80% 50%;opacity:0}
}

@keyframes name-glint{0%,10%{-webkit-mask-position:180% 50%;mask-position:180% 50%;opacity:0}
14%{opacity:1}
35%{-webkit-mask-position:-80% 50%;mask-position:-80% 50%;opacity:1}
40%,100%{-webkit-mask-position:-80% 50%;mask-position:-80% 50%;opacity:0}
}

@keyframes name-glint-hover{from{-webkit-mask-position:180% 50%;mask-position:180% 50%;opacity:1}
to{-webkit-mask-position:-80% 50%;mask-position:-80% 50%;opacity:1}
}

@keyframes scroll-pulse{0%,100%{transform:scaleY(.6);opacity:.4}
50%{transform:scaleY(1);opacity:1}
}

@media(max-width:1100px){.story-grid{gap:35px}
.detail-grid{gap:12px}
.rsvp-grid{gap:40px}
.rsvp-copy h2{font-size:6.3vw}
.names-details{gap:25px}
}

@media(max-width:900px){.rsvp-grid{grid-template-columns:minmax(0,1fr);gap:40px}
.rsvp-copy h2{font-size:clamp(49px,9vw,80px)}
.rsvp-copy .rsvp-explanation{max-width:520px}
}

@media(max-width:760px){:root{--check-size:16px}
.cover-sheet{min-height:calc(100svh - 108px);padding:36px 20px 24px;gap:12px}
.cover-heading .eyebrow{font-size:10px;letter-spacing:.08em}
.cover-heading>span{font-size:16px}
.cover-caption{font-size:13px}
.floating-dice{width:min(100%,460px);max-height:none}
.cover-center{padding:20px 0}
.cover-bottom{gap:17px}
.cover-date{font-size:26px}
.scroll-invitation{font-size:9px;letter-spacing:.05em;padding:5px 0}
.names-section{padding:25px 20px}
.names-frame{padding:36px 18px 29px}
.names-frame>.eyebrow{font-size:10px;letter-spacing:.07em}
.couple-names{font-size:clamp(65px,19.5vw,145px);line-height:1.08;margin:29px -5px 23px;letter-spacing:-.01em}
.name-edge{-webkit-text-stroke:1px #fff9da}
.name-ampersand{font-size:.48em;margin-right:.1em}
.names-message{font-size:15px;line-height:1.8}
.names-details{flex-direction:column;gap:15px;margin-top:28px;padding-top:25px}
.names-details p{font-size:13px;gap:3px}
.names-divider{font-size:17px;line-height:1}
.story-grid{gap:30px}
.story h2{font-size:clamp(53px,12vw,80px);word-spacing:.055em;letter-spacing:0}
.story h2 br:last-of-type{display:inline}
.story h2>span{margin-left:.05em;display:inline}
.story-copy .lead{font-size:23px}
.story-copy>p:not(.lead){font-size:16px}
.story-copy .signature{font-size:24px;word-spacing:.07em}
.checker-edges::before,.checker-edges::after{width:12px;background:repeating-linear-gradient(to bottom,var(--pink) 0 12px,var(--wine) 12px 24px)}
.countdown-section h2{font-size:34px;word-spacing:.07em}
.countdown-section .section-marker{padding:0 5px}
.detail-grid{gap:21px}
.detail-card h3{font-size:33px;padding-right:20px}
.details .section-heading:after{width:42px;height:14px;background-size:28px 28px;margin-top:25px}
.schedule h2{font-size:60px;word-spacing:.06em}
.schedule h2 br:last-of-type{display:inline}
.schedule h2 span{display:inline}
.timeline h3{font-size:30px;word-spacing:.07em}
.timeline p{font-size:15px;line-height:1.65}
.location-grid{gap:43px}
.location h2{font-size:57px;word-spacing:.06em}
.map-frame{padding:0;border:0;background:transparent;box-shadow:none;position:relative;transform:none}
.map-frame>p{font-size:10px;gap:10px}
.map-frame iframe{height:330px}
.rsvp-grid{grid-template-columns:minmax(0,1fr);gap:38px}
.rsvp-dice.floating-dice{width:min(240px,76%);margin:30px auto 5px}
.rsvp-copy h2{font-size:clamp(49px,12.7vw,80px);letter-spacing:0}
.rsvp .attendance-options{grid-template-columns:1fr}
.attendance-options label{font-size:14px;padding:12px}
.field-help{font-size:13px}
#rsvp-form label{line-height:1.6}
.form-help{font-size:12px}
.rsvp .section-marker{align-items:flex-start}
.rsvp .section-marker span:first-child{max-width:220px}
.footer-dice{width:120px;margin-top:35px}
.footer-heading{font-size:clamp(62px,15.5vw,115px);line-height:1.07;padding-top:18px;word-spacing:.01em}
.faq-heading h2{font-size:39px;word-spacing:.07em}
.section-heading h2{font-size:53px;word-spacing:.055em}
}

@media(max-width:360px){.cover-heading .eyebrow{font-size:9px}
.cover-sheet{padding-left:15px;padding-right:15px}
.scroll-invitation{font-size:8px}
.names-section{padding-left:15px;padding-right:15px}
.names-frame{padding-left:15px;padding-right:15px}
.couple-names{font-size:18.5vw}
.rsvp-copy h2{font-size:12.7vw}
}

@media(max-height:600px) and (min-width:761px){.cover-sheet{min-height:500px}
.floating-dice{width:390px}
.cover{min-height:548px}
}




/* Full-width dividers use an even number of complete squares. */
.checker{--band-square:calc(100vw / 64);height:var(--band-square);background:repeating-linear-gradient(to right,var(--wine) 0 var(--band-square),var(--paper) var(--band-square) calc(2 * var(--band-square)))}

.footer-checker{background:repeating-linear-gradient(to right,var(--wine) 0 var(--band-square),var(--pink) var(--band-square) calc(2 * var(--band-square)))}

@media(max-width:760px){.checker{--band-square:calc(100vw / 24)}
}


/* Subtle, consistent corner radii on interface controls and boxed content. */
:root{--radius-control:.5rem;--radius-panel:.75rem}
.button,button,input:not([type=radio]),select,textarea,.attendance-options label{border-radius:var(--radius-control)}
.detail-card,.map-frame,.schedule-tag{border-radius:var(--radius-panel)}
.map-frame{overflow:hidden}
dialog{border-radius:1rem}
.mobile-nav{border-radius:0 0 var(--radius-panel) var(--radius-panel)}

/* The opening shares the itinerary's deep olive, with light typography. */
.site-header,.mobile-nav,.cover,.cover-sheet{background:var(--olive);color:var(--cream)}
.site-header{border-bottom-color:#bec59155}
.site-header .monogram{color:var(--pink)}
.site-header .button.small{border-color:var(--sage);color:var(--cream);background:transparent}
.site-header .button.small:hover{background:var(--cream);color:var(--olive)}
.menu-toggle{color:var(--cream)}
.cover::before,.cover::after{background:repeating-linear-gradient(to bottom,var(--cream) 0 var(--check-size),var(--olive) var(--check-size) calc(2 * var(--check-size)))}
.cover-heading .eyebrow{color:var(--sage)}
.cover-heading>span,.cover-date{color:var(--pink)}
.cover .scroll-line{background:var(--sage)}
.cover .scroll-invitation:hover{color:var(--pink)}

/* Two equal, nonshrinking groups make the marquee loop without a gap. */
.ribbon{padding:15px 0;overflow:hidden}
.ribbon .ribbon-track{display:flex;align-items:center;width:max-content;max-width:none;gap:0;line-height:1.5;animation:ribbon-continuous 34s linear infinite;will-change:transform}
.ribbon .ribbon-group{display:flex;align-items:center;justify-content:space-around;flex:0 0 auto;min-width:100vw;gap:clamp(24px,3vw,44px);padding:0 clamp(12px,1.5vw,22px)}
.ribbon .ribbon-item,.ribbon .ribbon-star{display:block;flex:0 0 auto;padding:0;white-space:nowrap}

@keyframes ribbon-continuous{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(max-width:760px){.ribbon{padding:13px 0}.ribbon .ribbon-track{font-size:23px}.ribbon .ribbon-group{gap:25px;padding:0 12.5px}}


/* Avoid background animation work while the page is not visible. */
.page-hidden .floating-dice,.page-hidden .name-edge,.page-hidden .scroll-line,.page-hidden .ribbon .ribbon-track{animation-play-state:paused}

/* Supplied camouflage stays continuous within each pink section. */
.story,.rsvp{background-color:var(--pink);background-image:url('/assets/pink-camo-gj.svg');background-position:center;background-size:cover;background-repeat:no-repeat}

/* A two-sided keychain: long readable rests and a short, continuous turn. */
.keychain-scene{width:min(235px,70%);aspect-ratio:620/1000;margin:36px auto 8px;perspective:1100px}
.keychain-swing{width:100%;height:100%;transform-style:preserve-3d;transform-origin:50% 8%;animation:keychain-sway 6s ease-in-out infinite}
.keychain-rotor{position:relative;width:100%;height:100%;transform-style:preserve-3d;animation:keychain-turn 12s cubic-bezier(.45,0,.3,1) infinite}
.keychain-face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.keychain-front{--sticker-mask:url('/assets/keychain-front.svg');transform:rotateY(0deg) translateZ(1px)}
.keychain-back{--sticker-mask:url('/assets/keychain-back.svg');transform:rotateY(180deg) translateZ(1px)}
.keychain-face img{filter:drop-shadow(0 10px 9px #46322730)}
.keychain-face .sticker-foil{animation:keychain-glint 12s ease-in-out infinite}
.keychain-back .sticker-foil{animation-delay:6s}
.keychain-scene.motion-waiting .keychain-swing,.keychain-scene.motion-waiting .keychain-rotor,.keychain-scene.motion-waiting .sticker-foil,
.page-hidden .keychain-swing,.page-hidden .keychain-rotor,.page-hidden .keychain-face .sticker-foil{animation-play-state:paused}

@keyframes keychain-turn{0%,32%{transform:rotateY(0deg)}42%,82%{transform:rotateY(180deg)}92%,100%{transform:rotateY(360deg)}}
@keyframes keychain-sway{0%,100%{transform:rotate(-5deg) translateY(0)}50%{transform:rotate(5deg) translateY(-7px)}}
@keyframes keychain-glint{0%,8%{background-position:180% 50%;opacity:0}10%{opacity:.9}21%{background-position:-80% 50%;opacity:.8}23%,100%{background-position:-80% 50%;opacity:0}}
.footer-sign{width:min(860px,100%);margin:30px auto 42px}
.footer-sign img{display:block;width:100%;height:auto}
@media(max-width:900px){.keychain-scene{width:min(190px,65%);margin-top:28px}}
@media(max-width:760px){.footer-sign{margin:24px auto 32px}}


/* Locally hosted EB Garamond, with real regular, bold and italic faces. */
@font-face{font-family:'EB Garamond';src:url('/assets/eb-garamond-normal-400.woff') format('woff');font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:'EB Garamond';src:url('/assets/eb-garamond-normal-700.woff') format('woff');font-style:normal;font-weight:700;font-display:swap}
@font-face{font-family:'EB Garamond';src:url('/assets/eb-garamond-italic-400.woff') format('woff');font-style:italic;font-weight:400;font-display:swap}
@font-face{font-family:'EB Garamond';src:url('/assets/eb-garamond-italic-700.woff') format('woff');font-style:italic;font-weight:700;font-display:swap}
@font-face{font-family:'Forsaken';src:url('/assets/forsaken-ampersand.woff') format('woff');font-style:normal;font-weight:400;font-display:swap;unicode-range:U+0026}
:root{--body:'EB Garamond',Georgia,serif;--ui:var(--body);--script:'Forsaken',cursive;--lime:#d8f366}
body{font-size:18px}
button,input,select,textarea,label,legend,summary,.button,.text-link,.desktop-nav,.mobile-nav,.eyebrow,.meta-label,.section-marker,.names-details,.cover-bottom,.countdown small,.footer-top,.footer-bottom,.map-caption,.map-frame>p,.schedule-tag,.timeline-number,.card-note{font-family:var(--ui)}
.story-copy>p:not(.lead),.detail-card p:not(.card-highlight),.timeline p,.location-note,.faq-list details p,.rsvp-copy>p.rsvp-explanation{font-size:18px;line-height:1.65}
.names-message{font-size:20px}
.cover-caption{font-size:18px}
.field-help,.form-help{font-size:16px;line-height:1.6}

/* Both signposts end exactly at the section's dividing line. */
.site-footer .footer-sign-grounded{width:100%;margin:62px 0 0;border-bottom:1px solid #efe3cd55;line-height:0}
.footer-sign-grounded img{display:block;width:min(860px,100%);height:auto;margin:0 auto -1px}
.footer-bottom{position:relative;z-index:1;border-top:0}

/* One uninterrupted ribbon passes behind a transparent sticker layer. */
.ribbon{position:relative;display:block;isolation:isolate;overflow:visible;padding:15px 0;z-index:2}
.ribbon .ribbon-lane{position:relative;z-index:0;min-width:0;width:100%;overflow:hidden;animation:none!important;white-space:normal}
.ribbon .ribbon-track{font-family:var(--display);font-size:29px;line-height:1.5;white-space:nowrap}
.ribbon .ribbon-group{min-width:100vw;width:max-content}
.ribbon .ribbon-rings{position:absolute;z-index:2;top:50%;left:50%;width:clamp(180px,19vw,270px);transform:translate(-50%,-50%) rotate(-7deg);animation:none!important;pointer-events:none;background:none}
.ribbon-rings img{display:block;width:100%;height:auto;filter:drop-shadow(0 7px 5px #4d511233)}
@media(max-width:760px){
 .story-copy>p:not(.lead),.detail-card p:not(.card-highlight),.timeline p,.location-note,.faq-list details p,.rsvp-copy>p.rsvp-explanation{font-size:17px}
 .names-message{font-size:18px}.cover-caption{font-size:16px}
 .field-help,.form-help{font-size:15px}
 .ribbon{padding:13px 0}
 .ribbon .ribbon-track{font-size:23px}
 .ribbon .ribbon-rings{width:170px}
 .site-footer .footer-sign-grounded{margin-top:48px}
}


/* Carry the cream of the names section through its checker divider. */
.names-section+.checker{background:repeating-linear-gradient(to right,var(--wine) 0 var(--band-square),var(--cream) var(--band-square) calc(2 * var(--band-square)))}

/* Real bold font files, with restrained emphasis on practical details. */
strong,b{font-weight:700}
.eyebrow,.meta-label,.section-marker,.names-details,.schedule-tag,.card-note{font-family:var(--body)}
.eyebrow,.meta-label{font-weight:700}
.names-details p{font-size:16px;line-height:1.65;gap:7px}
.names-details .meta-label{font-size:14px;letter-spacing:.04em}
.names-details p>span:last-child{font-weight:400}
.names-details strong{font-weight:700}
.section-marker{font-size:13px;letter-spacing:.045em}
.section-marker>span:first-child{font-weight:700}
.section-marker>span:last-child{font-weight:400}
.schedule-tag{font-weight:400}
@media(max-width:760px){
 .names-details p{font-size:15px}
 .names-details .meta-label{font-size:13px}
 .section-marker{font-size:12px;letter-spacing:.015em}
 .cover-heading .eyebrow{max-width:100%;font-size:11px;line-height:1.6}
 .cover-caption{max-width:27ch;line-height:1.5}
 .footer-top{align-items:flex-start}
 .footer-top>span{max-width:23ch}
}

/* Ephemeral stars live in their own layer, behind the protected countdown. */
.countdown-section{position:relative;isolation:isolate}
/* Texture opacity lives in the SVGs; checker pseudo-elements stay independent. */
.countdown-section{background-image:url("/assets/leopard-texture-gj.svg")}
.questions{background-image:url("/assets/leopard-texture-wine-gj.svg")}
.countdown-section{background-size:max(100%,960px) auto;background-position:center top;background-repeat:repeat-y}
/* Accordion height may change; texture scale and origin depend only on section width. */
.questions{background-size:max(100%,960px) auto;background-position:center top;background-repeat:repeat-y}
.countdown-stars{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.countdown-section>.section-marker,.countdown-section>h2,.countdown-section>.countdown,.countdown-section>.count-caption{position:relative;z-index:1}
.countdown-star{position:absolute;display:block;object-fit:contain;opacity:0;pointer-events:none;user-select:none;filter:drop-shadow(0 0 7px #d8f36626)}
.countdown-star.is-ready{animation:countdown-star-bloom var(--star-life,4200ms) cubic-bezier(.2,.65,.3,1) both}
@keyframes countdown-star-bloom{
 0%{opacity:0;transform:scale(0) rotate(var(--star-turn,0deg))}
 18%{opacity:1;transform:scale(1.06) rotate(var(--star-turn,0deg))}
 32%,70%{opacity:1;transform:scale(1) rotate(var(--star-turn,0deg))}
 100%{opacity:0;transform:scale(.7) rotate(var(--star-turn,0deg))}
}

@media(max-width:760px){.countdown-section{padding-top:72px;padding-bottom:90px}}

/* Subtle flame artwork on the cover and itinerary; navigation stays solid green. */
.flame-surface{isolation:isolate;background-color:var(--olive)}
.schedule.flame-surface{position:relative}
.flame-viewport{position:absolute;inset:0;overflow:hidden;border-radius:inherit;z-index:-1;pointer-events:none}
.flame-art{position:absolute;inset:-76px 0;background:var(--olive) url('/assets/flame-gj.svg') center/cover no-repeat;transform:translate3d(0,var(--flame-offset,0px),0)}
.flame-surface.is-flame-visible>.flame-viewport>.flame-art{will-change:transform}
.cover.flame-surface .cover-sheet{background:transparent}


/* Forsaken ampersands and selected lime accents from the supplied artwork. */
.ampersand{font-family:var(--script);font-size:.78em;font-weight:400;font-style:normal;font-synthesis:none;display:inline-block;line-height:1.15;letter-spacing:0;text-transform:none;vertical-align:-.03em}
.monogram .ampersand{font-family:var(--script);font-size:.7em;line-height:1.15;margin:0 .06em;padding:0;color:var(--pink);vertical-align:baseline}
.name-ampersand.ampersand{font-family:var(--script);font-size:.5em;line-height:1.15;vertical-align:12%;margin-right:.12em}
.ribbon .ampersand{display:inline-block;padding:0;font-size:.82em}
.story h2>span,.story-copy .lead>strong,.story-copy .signature,.rsvp-copy h2{color:var(--lime)}
body{font-synthesis:none}
p em,address em,.field-help em{font-style:italic}
.story-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr)}
.schedule-grid{grid-template-columns:minmax(0,.9fr) minmax(0,1.3fr)}
.location-grid,.questions{grid-template-columns:minmax(0,.9fr) minmax(0,1.15fr)}
.story-grid>*,.schedule-grid>*,.location-grid>*,.questions>*{min-width:0}
@media(max-width:760px){
 .story-grid,.schedule-grid,.location-grid,.questions{grid-template-columns:minmax(0,1fr)}
 .rsvp-copy h2{font-size:clamp(46px,12vw,80px)}
 .signature{max-width:100%;line-height:1.35}
 #rsvp-form input:not([type=radio]),#rsvp-form select,#rsvp-form textarea{font-size:18px}
}

/* The Forsaken face is restricted to U+0026, so every text family shares its ampersand. */
:root{--body:'Forsaken','EB Garamond',Georgia,serif;--gothic:'Forsaken',UnifrakturMaguntia,Georgia,serif;--display:'Forsaken','Pirata One',Georgia,serif}

/* Supplied script for body emphasis. */
@font-face{font-family:'Wellington Script';src:url('/assets/wellington-script.woff') format('woff');font-weight:400;font-style:normal;font-display:swap}
p em,p i,address em,address i,.field-help em{font-family:'Wellington Script',var(--body);font-style:normal;font-weight:400;font-size:2.35em;line-height:.75;letter-spacing:0;word-spacing:normal}
.names-section{position:relative;isolation:isolate;--lace-height:clamp(58px,7vw,112px);padding-top:calc(var(--lace-height) + 28px);padding-bottom:calc(var(--lace-height) + 28px)}
.names-section::before,.names-section::after{content:'';position:absolute;left:0;right:0;height:var(--lace-height);background:url('/assets/encaje-gj.svg') center top/auto 100% repeat-x;pointer-events:none;z-index:-1}
.names-section::before{top:0}
.names-section::after{bottom:0;transform:scaleY(-1)}
.names-section+.checker{display:none}
.names-frame{padding-top:22px;padding-bottom:22px}
.names-second-line{display:flex;align-items:baseline;justify-content:center;gap:.13em}
.names-second-line .name-ampersand{padding:0;margin:0;vertical-align:baseline}
button.keychain-scene{display:block;padding:0;border:0;background:transparent;color:inherit;border-radius:16px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.keychain-swing,.keychain-rotor{display:block}
.keychain-scene.is-manual .keychain-swing{animation:none;transform:none}
.keychain-scene.is-manual .keychain-rotor{animation:none;transform:rotateY(0deg);transition:transform .65s ease}
.keychain-scene.is-manual.is-flipped .keychain-rotor{transform:rotateY(180deg)}
.form-trap{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.submission-status:empty{display:none}
.submission-status{margin-top:16px;line-height:1.5;color:#fff}
.form-submit[disabled]{opacity:.65;cursor:wait}
@media(max-width:760px){.names-frame{padding-left:0;padding-right:0}.couple-names{font-size:clamp(74px,15vw,114px)}.names-details{flex-wrap:wrap;gap:20px}}
