/* Woven wedding stationery: parchment, saffron, terracotta and olive. */
:root{--cream:#f5ecd8;--paper:#fbf4e3;--ink:#39432d;--muted:#65644d;--wine:#4e5b36;--deep:#354226;--gold:#7c5624;--line:#bbab8266;--serif:'Cormorant Garamond',Georgia,serif;--sans:'DM Sans',Arial,sans-serif;--script:'Pinyon Script','Apple Chancery',cursive;color-scheme:light}
html{scrollbar-gutter:stable;scroll-padding-top:30px}
body{background:#eae5d7;color:var(--ink);font-family:var(--sans);font-synthesis:none;-webkit-font-smoothing:antialiased;line-height:1.65}
body:before{content:'';position:fixed;inset:0;z-index:-1;background:repeating-linear-gradient(0deg,#7a693e05 0 1px,transparent 1px 4px);pointer-events:none}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.invitation-shell{position:relative;max-width:640px;margin:auto;background:var(--cream);box-shadow:0 0 65px #60563822;isolation:isolate;overflow:hidden}
.site-header{position:absolute;inset:0 0 auto;min-height:68px;padding:20px 34px;background:transparent;border:0;color:var(--ink);z-index:8}
.monogram{font-size:1.5rem;letter-spacing:.09em}.monogram span{font-size:1.05rem;color:var(--gold)}
.site-header nav{gap:26px}.site-header nav>a{font-size:.875rem}.site-header nav>a:nth-child(2){display:block}.nav-rsvp{padding:0;border:0}
.hero{display:block;position:relative;min-height:850px;padding:116px 40px 285px;margin:0;background:linear-gradient(#efdfb922,#efdfb900 65%),url('/woven-invitation.jpg') center bottom/100% 100% no-repeat;overflow:hidden}
.hero-copy{position:relative;padding:0;text-align:center;z-index:1}
.hero-copy .auspicious{font:italic 1.0625rem/1.5 var(--serif);color:var(--muted);margin:0 0 18px}
.eyebrow{font:500 .75rem/1.8 var(--sans);letter-spacing:.18em;color:var(--gold);margin:0 0 20px}
.hero h1{font-family:var(--serif);font-weight:400;line-height:1.2;letter-spacing:0;color:var(--ink);font-size:1rem;margin-top:26px}
.hero h1 .given-name{display:block;font-size:clamp(2rem,6.7vw,3.1rem);font-weight:400;text-transform:uppercase;letter-spacing:.11em;line-height:1.25;overflow-wrap:anywhere}
.hero h1 .honorific{display:block;font-size:1rem;line-height:1.5;margin-bottom:5px;letter-spacing:.06em}
.hero h1 .surname{display:block;font-size:1.2rem;line-height:1.4;text-transform:uppercase;letter-spacing:.13em;margin-top:5px}
.hero h1 .ampersand{display:block;font:2.8rem/1 var(--script);text-transform:none;color:var(--gold);letter-spacing:0;margin:16px 0 10px}
.invite-line{font:1.15rem/1.5 var(--serif);color:var(--ink);letter-spacing:.025em;max-width:27ch;margin:30px auto 0;text-wrap:balance}
.hero-dates{font:500 .875rem/1.8 var(--sans);letter-spacing:.12em;margin:28px 0 0;color:var(--ink)}
.hero-location{font:1.05rem/1.6 var(--serif);letter-spacing:.06em;color:var(--ink);margin-top:3px}
.section{max-width:none;margin:0;padding:55px 40px}
.invitation-details{text-align:center;background:repeating-linear-gradient(0deg,#7a693e04 0 1px,transparent 1px 4px),var(--paper);border-bottom:1px solid var(--line)}
.date-reveal{max-width:340px;margin:0 auto;border:1px solid #b99550;border-radius:0;background:#faf0d4;box-shadow:none}
.date-reveal-content{min-height:118px;padding:13px 8px;color:var(--ink)}
.date-reveal-content>p{font:500 .75rem/1.7 var(--sans);letter-spacing:.18em;color:var(--gold)}
.date-reveal-content strong{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;font:500 2.8rem/1.1 var(--serif);color:var(--ink);margin:4px 0 7px}
.date-reveal-content strong span{font:500 .875rem/1.5 var(--sans);letter-spacing:.06em}.date-reveal-content>span{font:.875rem/1.5 var(--sans);color:var(--muted)}
.date-reveal-actions{margin:9px auto 0;max-width:340px}.date-reveal-actions p{font-size:.8125rem;color:var(--muted);line-height:1.7}.date-reveal-actions button{font:.875rem/1.5 var(--sans);color:var(--wine);border:0;padding:6px;min-height:40px}.date-reveal-actions button:hover{text-decoration:underline;text-underline-offset:4px}
.countdown{gap:0;margin:27px auto 36px;max-width:360px}.countdown>div{flex:1;min-width:0;padding:0 10px;border-right:1px solid var(--line);max-width:none}.countdown>div:last-child{border:0}.countdown strong{font:500 2.25rem/1.15 var(--serif);color:var(--ink)}.countdown span{font:.75rem/1.5 var(--sans);letter-spacing:.035em;color:var(--muted);overflow-wrap:anywhere}
.hero-venue h2{font-size:2.4rem;color:var(--ink);font-weight:500}.hero-venue>p{font-size:1rem;margin-top:6px}.hero-venue .venue-events{font-size:.875rem;margin-top:16px;color:var(--gold)}.hero-venue .wedding-venue{font:italic 1.0625rem/1.5 var(--serif);color:var(--muted);margin-top:8px}
.itinerary-link{display:block;margin:28px auto 0;color:var(--wine);font-size:.75rem;letter-spacing:.18em;text-decoration:none}.itinerary-link span{display:block;font-size:1.2rem;line-height:1.3}
.section-heading{display:block;text-align:center}.section-heading:after{display:none}.section-heading .eyebrow{margin-bottom:8px}.section-heading h2,.rsvp-intro h2{font:500 2.7rem/1.2 var(--serif);color:var(--ink)}
.celebrations{background:var(--cream)}
.events{display:grid;grid-template-columns:1fr 1fr;gap:20px;border:0;margin-top:35px}
.event{--card-top:#e6be67;--card-bottom:#f2e3b9;position:relative;display:flex;align-items:center;flex-direction:column;text-align:center;min-width:0;padding:32px 20px 35px;border:0!important;color:var(--ink);background:repeating-linear-gradient(0deg,#4335140c 0 1px,transparent 1px 3px),linear-gradient(155deg,var(--card-top),var(--card-bottom))!important;box-shadow:0 5px 12px #6b58330b}
.event:nth-child(2){--card-top:#bac39a;--card-bottom:#e0e0ba}.event:nth-child(3){--card-top:#e2af8c;--card-bottom:#f2d8b8}.event:nth-child(4){--card-top:#bdc6b0;--card-bottom:#e7e2c7}
.event:after{content:'';position:absolute;bottom:0;left:0;right:0;height:9px;background:repeating-linear-gradient(90deg,#626f45 0 2px,transparent 2px 5px,#a9603e 5px 7px,transparent 7px 10px,#ba983e 10px 12px,transparent 12px 15px);border-block:1px solid #a18c4755;opacity:.8}
.event-number{font-size:.75rem;letter-spacing:.1em;color:var(--ink);margin:0 0 20px}.event h3{font:3rem/1.2 var(--script);color:var(--ink);letter-spacing:0;font-weight:400;overflow-wrap:anywhere}
.event-desc{font:1.075rem/1.5 var(--serif);margin:12px 0 0;min-height:3em;color:var(--ink)!important}
.event-date{font:400 1rem/1.55 var(--serif);letter-spacing:.015em;border:0;padding:0;margin:21px 0 4px;max-width:22ch;color:var(--ink)}
.woven-edition .event{color:var(--ink)}
.event-directions{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:44px;padding:8px 0;color:var(--ink);font:500 .8125rem/1.5 var(--sans);text-decoration:underline;text-underline-offset:4px}.event-directions:hover{text-decoration-thickness:2px}
.event-time{font:500 1rem/1.5 var(--sans);letter-spacing:.015em;margin:0 0 19px;color:var(--ink)}
.event-place{font:1rem/1.5 var(--serif);min-height:3em;color:var(--ink)!important}.event button{margin:18px 0 0;padding:7px 0;border:0!important;min-height:44px;color:var(--ink)!important;font-size:.875rem;text-align:center}.event button span{display:none}
.event:hover,.event:focus-within{box-shadow:0 8px 18px #6b583319}
.time-note{font-size:.8125rem;color:var(--muted);text-align:center;margin-top:25px}.event-actions{display:flex;justify-content:center;gap:28px;margin-top:12px}
.text-button{font:.875rem/1.6 var(--sans);color:var(--wine);border-bottom:1px solid #7f895999;padding:8px 0;min-height:42px;white-space:normal}
.welcome{text-align:center;padding-top:24px;padding-bottom:56px;border:0}.welcome h2{font:italic 2.4rem/1.2 var(--serif);color:var(--ink)}.welcome br{display:initial}.welcome>p:not(.eyebrow){font:1rem/1.75 var(--sans);color:var(--muted);max-width:360px;margin:21px auto 0}.ornament{color:var(--gold);margin-top:28px}.ornament:before,.ornament:after{background:var(--line);width:45px}
.rsvp-section{display:block;background:#f9f1df;border-top:1px solid var(--line)}
.rsvp-intro{text-align:center;margin-bottom:30px}.rsvp-intro .eyebrow{margin-bottom:10px}.rsvp-intro>p:not(.eyebrow){font-size:1rem;line-height:1.75;color:var(--muted);max-width:380px;margin:15px auto 0}
.rsvp-card{background:transparent;padding:25px 28px;border:1px solid var(--line);box-shadow:none}
.rsvp-card label,.rsvp-card legend{font-size:.875rem;color:var(--ink);font-weight:500}.rsvp-card label span{color:var(--muted);font-size:.8125rem}
.rsvp-card input:not([type=radio]):not([type=checkbox]),.rsvp-card select,.rsvp-card textarea{background:#fffaf0;border:1px solid #a4a98e;color:var(--ink);font-size:1rem;border-radius:0}
.rsvp-card input::placeholder,.rsvp-card textarea::placeholder{color:#757463}
.choices{gap:8px 18px}.choices label{font-size:.875rem}.choices input{accent-color:var(--wine);flex-shrink:0}
.form-note{font-size:.8125rem;color:var(--muted);line-height:1.7}.form-message{color:#973e37;font-size:.875rem}
.button{font-family:var(--sans);font-size:.875rem;border-radius:0}.primary{background:var(--wine);color:#fff8e6;border-color:var(--wine)}.button:hover{background:var(--deep);color:#fff8e6}
.success h3{font-size:2.5rem;color:var(--ink)}.success p{color:var(--muted)}
.motion-controls{position:relative;inset:auto;transform:none;max-width:100%;width:max-content;margin:24px auto;background:transparent;border:0;border-radius:0;box-shadow:none;backdrop-filter:none;color:var(--muted);padding:0;white-space:normal;z-index:6}.motion-controls button{font-size:.8125rem;padding:9px 14px}.motion-controls button:hover{background:#dedbc888}.motion-controls>span{background:var(--line)}
footer{position:relative;background:#e2dfc7;color:var(--ink);border:0;text-align:center;padding:42px 20px 32px}
footer:after{content:'';position:absolute;bottom:0;left:0;right:0;height:9px;background:repeating-linear-gradient(90deg,#626f45 0 2px,transparent 2px 5px,#a9603e 5px 7px,transparent 7px 10px,#ba983e 10px 12px,transparent 12px 15px)}
.footer-names{font:1.8rem/1.5 var(--serif);text-transform:uppercase;letter-spacing:.08em}.footer-names i{font-family:var(--script);text-transform:none;color:var(--gold);margin:0 .15em}.footer-invitation{font:italic 1.2rem/1.7 var(--serif)!important;color:var(--ink)!important}footer>a{font-size:.8125rem;color:var(--muted);margin-top:25px}
.gold-atmosphere{display:none}.toast{background:var(--deep);color:#fff8e6;bottom:24px}.skip{background:var(--deep);color:var(--paper)}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-color:var(--wine)}
/* A paper cover unfolds from its outer edges, revealing the actual invitation. */
html.entrance-active{scroll-behavior:auto!important}
.entrance{inset:0 auto auto 0;max-width:none;max-height:none;margin:0;padding:0;border:0;background:transparent;color:var(--ink);overflow:visible;isolation:auto;box-shadow:none}
.entrance::backdrop{background:transparent}
.gate-stage{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.gate-scene{position:absolute;inset:0;perspective:1500px;perspective-origin:50% 50%;transform-style:preserve-3d}
.gate-half{position:absolute;top:0;width:50%;height:100%;overflow:visible;opacity:1!important;transition:none!important;transform:none;filter:none!important;transform-style:preserve-3d;will-change:transform}
.gate-left{left:0;transform-origin:left center}.gate-right{right:0;transform-origin:right center}
.door-face{position:absolute;inset:0;background:#f0dfb6;backface-visibility:hidden;-webkit-backface-visibility:hidden;overflow:hidden}
.door-face img{position:absolute;top:0;width:200%;height:100%;max-width:none;object-fit:fill;object-position:center bottom;pointer-events:none;user-select:none}.gate-left img{left:0}.gate-right img{left:-100%}
.gate-left .door-face{border-right:1px solid #6e593022}.gate-right .door-face{box-shadow:inset 1px 0 #fff7e744}
.door-shading{position:absolute;inset:0;opacity:0;pointer-events:none;background:linear-gradient(90deg,#51442d55,#51442d12)}.gate-right .door-shading{background:linear-gradient(-90deg,#51442d55,#51442d12)}
.entrance-copy{position:absolute;inset:0;z-index:4;min-height:0;max-height:none;padding:0;display:block;overflow:visible;text-align:center;text-shadow:none;transition:none!important;transform:none!important}
.cover-titles{position:absolute;top:21%;left:22px;right:22px;color:var(--ink)}
.cover-titles .eyebrow{font-size:.75rem;color:var(--gold);margin:0 0 26px}
.entrance-copy .cover-names{font:400 clamp(1.6rem,6.7vw,2.7rem)/1.25 var(--serif);letter-spacing:.11em;text-transform:uppercase;margin:0}
.cover-names span{display:block}.cover-names i{display:block;font:2.5rem/1.4 var(--script);letter-spacing:0;text-transform:none;color:var(--gold);margin:3px 0}
.cover-titles .cover-date{font:500 .8125rem/1.7 var(--sans);letter-spacing:.12em;margin-top:28px}
.entrance-open{position:absolute;left:50%;top:60%;transform:translate(-50%,-50%);margin:0;min-height:48px;padding:11px 24px;border:1px solid #6a744c;background:#f7edcfdd;color:var(--ink);font:.75rem/1.5 var(--sans);letter-spacing:.15em;box-shadow:none;white-space:nowrap;overflow:visible}
.entrance-open:hover{background:#fff4d8}.entrance-open:after{display:none}.entrance-skip{position:absolute;top:16px;right:20px;padding:8px 4px;min-height:44px;margin:0;background:transparent;border:0;font:.8125rem/1.5 var(--sans);color:var(--ink);text-underline-offset:4px}
.entrance button:focus-visible{outline:2px solid var(--wine);outline-offset:5px}
.entrance.is-opening .gate-left,.entrance.is-opening .gate-right{transform:none;filter:none}.entrance.is-opening .entrance-copy{opacity:1}
html[data-motion=on].invitation-open .hero-copy>*{animation:none}
@media(max-width:540px){.site-header{padding:18px 24px}.hero{min-height:810px;padding:104px 25px 265px}.hero h1 .given-name{font-size:2.1rem;letter-spacing:.09em}.hero h1 .surname{font-size:1.05rem;letter-spacing:.1em}.hero-copy .eyebrow{font-size:.75rem;letter-spacing:.12em}.hero h1{margin-top:22px}.invite-line{font-size:1.125rem}.section{padding:44px 25px}.events{grid-template-columns:1fr;gap:24px}.event{padding:35px 27px 32px}.event h3{font-size:3.3rem}.event-desc{min-height:0;margin-top:8px}.event-place{min-height:0}.event-date{max-width:none}.event-number{margin-bottom:14px}.event-time{margin-bottom:14px}.event button{margin-top:14px}.rsvp-card{padding:24px 18px}.footer-names{font-size:1.3rem;letter-spacing:.06em}.motion-controls{left:auto;right:auto;bottom:auto}.cover-titles{top:20%}.entrance-open{top:61%}.welcome{padding-top:20px}.countdown>div{padding:0 8px}.countdown strong{font-size:2rem}}
@media(max-width:360px){.hero h1 .given-name{font-size:1.85rem}.hero h1 .surname{font-size:1rem}.hero-dates{font-size:.8125rem;letter-spacing:.08em}.section{padding-left:21px;padding-right:21px}.event-actions{gap:18px}.countdown span{font-size:.75rem}.footer-names{font-size:1.12rem}.entrance-copy .cover-names{font-size:1.65rem}.cover-titles .eyebrow{letter-spacing:.1em}}
@media(max-height:600px){.cover-titles{top:13%}.cover-titles .eyebrow{margin-bottom:12px}.entrance-copy .cover-names{font-size:1.7rem}.cover-names i{font-size:1.6rem;line-height:1.1}.cover-titles .cover-date{margin-top:14px}.entrance-open{top:65%}}
@media print{body,.invitation-shell{background:white;color:#222;box-shadow:none}.site-header{display:none}.hero{background:none!important;min-height:0;padding:30px}.section{padding:25px}.events{grid-template-columns:1fr 1fr}.event{break-inside:avoid}.motion-controls{display:none}}
.music-control{position:fixed;right:max(16px,calc((100vw - 640px)/2 + 18px));bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:30}
.music-control[hidden]{display:none}
.music-control button{display:flex;align-items:center;gap:8px;min-height:44px;padding:10px 15px;border:1px solid #8b926f;border-radius:24px;background:#fbf4e3;color:var(--ink);box-shadow:0 3px 16px #39432d22;font:500 .8125rem/1.5 var(--sans);cursor:pointer}
.music-control button:hover{background:#f0e6ca}.music-control svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.music-control button[data-state=playing]{background:var(--wine);color:#fff8e6;border-color:var(--wine)}
@media print{.music-control{display:none}}

.entrance-music-control{position:absolute;right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:6}
.hero-venue>.venue-events{margin:0 0 9px}.venue-directions{display:inline-block;margin-top:12px}.other-venue{margin-top:30px;padding-top:25px;border-top:1px solid var(--line)}.other-venue .venue-events{margin:0 0 8px}.other-venue h3{font:500 1.9rem/1.3 var(--serif);color:var(--ink)}.other-venue>p:last-child{font-size:1rem;margin-top:5px}
