/* Invitation rhythm: one welcoming cover, then clearly separated guest and family schedules. */
.opening-active,.lightbox-active{overflow:hidden}
.wedding-opening{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:24px;overflow:auto;isolation:isolate}
.opening-wing{position:absolute;inset:0 50% 0 0;background:#777e60;z-index:-2;transition:transform .85s cubic-bezier(.65,0,.25,1)}
.opening-wing-right{inset:0 0 0 50%;background:#858b70}
.opening-wing-left:after,.opening-wing-right:after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 90% 25%,rgba(238,228,214,.2),transparent 70%)}
.opening-atmosphere{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:-1}
.opening-atmosphere i{position:absolute;width:15px;height:15px;left:calc(8% + var(--i)*17%);top:105%;background:url('assets/hydrangea-petal.svg') center/contain no-repeat;opacity:.25;animation:petal-drift calc(17s + var(--i)*2s) linear infinite;animation-delay:calc(var(--i)*-4s)}
.opening-card{position:relative;text-align:center;width:min(100%,475px);padding:44px 38px 34px;background:var(--cream);color:var(--ink);border:1px solid rgba(172,131,60,.45);box-shadow:0 24px 80px #27301b40;overflow:hidden;transition:opacity .5s,transform .8s cubic-bezier(.2,.7,.2,1);animation:cover-arrive .9s cubic-bezier(.2,.7,.2,1) both}
.opening-card:before{content:'';position:absolute;inset:12px;border:1px solid rgba(172,131,60,.22);pointer-events:none}
.opening-card>.eyebrow{position:relative;display:block;font-size:8px;letter-spacing:2px;line-height:1.8}
.opening-flower{position:absolute;width:175px;height:175px;object-fit:contain;pointer-events:none;opacity:.9;z-index:0}
.opening-flower-top{left:-70px;top:-65px;transform:rotate(35deg)}
.opening-flower-bottom{right:-75px;bottom:-65px;transform:rotate(210deg)}
.opening-mark{position:relative;display:block;margin:23px auto 17px;width:38px;height:38px;object-fit:contain}
.opening-card h2{position:relative;font:400 clamp(31px,5vw,42px)/1.2 var(--serif);letter-spacing:-1px;margin:0}
.opening-card h2>span{display:block}.opening-card h2>i{display:block;font-size:23px;line-height:1.3;color:var(--gold);font-weight:400}
.opening-date{font:400 12px/1.7 var(--sans);font-variant-numeric:lining-nums tabular-nums;margin:18px 0}
.opening-rule{width:54px;height:1px;background:var(--gold);opacity:.6;margin:23px auto}
#openingGuest{position:relative;color:var(--gold);font:italic 28px/1.35 var(--serif);overflow-wrap:anywhere;max-width:100%;margin:12px 0 18px}
.opening-times{position:relative;list-style:none;padding:0;margin:0 0 24px;font:400 10px/1.9 var(--sans);font-variant-numeric:lining-nums tabular-nums}
.opening-times li+li{margin-top:3px}
.opening-card .button{position:relative;justify-content:center;min-width:172px;min-height:48px;letter-spacing:.3px}
.opening-card>small{position:relative;display:block;font:italic 12px/1.8 var(--serif);margin-top:16px;opacity:.75}
.wedding-opening.is-opening{pointer-events:none}
.is-opening .opening-card{animation:none;opacity:0;transform:translateY(-18px) scale(1.045)}
.is-opening .opening-atmosphere{opacity:0;transition:opacity .6s}
.is-opening .opening-wing-left{transform:translateX(-100%)}
.is-opening .opening-wing-right{transform:translateX(100%)}
.opening-active .hero-copy,.opening-active .hero-art{animation:none}
.opening-active .music-widget{z-index:140}
.opening-preview{font-size:10px;margin-top:14px;min-height:40px;opacity:.8}
.hero-event-summary{font:400 11px/1.9 var(--sans);font-variant-numeric:lining-nums tabular-nums;color:var(--olive);max-width:460px;margin:18px 0 0;text-wrap:balance}
.art-date[data-range=true]>span:first-child{font-size:clamp(75px,9vw,125px);letter-spacing:-.07em}
.paper-directions{justify-content:center;margin:23px auto 0;min-height:44px;font:400 10px/1.5 var(--sans)}
.event-grid-intro{font:400 11px/1.8 var(--sans);letter-spacing:.4px;margin:32px 0 0;opacity:.85}
.celebration .event-grid{margin-top:20px}
.celebration .event-column{gap:0}
.family-ceremonies{margin-top:32px;border-block:1px solid rgba(238,228,214,.3);color:var(--cream)}
.family-ceremonies summary{display:flex;justify-content:space-between;align-items:center;gap:22px;cursor:pointer;list-style:none;padding:23px 0;min-height:80px}
.family-ceremonies summary::-webkit-details-marker{display:none}
.family-ceremonies summary strong{font:400 23px/1.4 var(--serif);display:block}
.family-ceremonies summary small{font:300 10px/1.8 var(--sans);display:block;opacity:.8;margin-top:5px}
.ceremony-disclosure-icon{display:grid;place-items:center;width:33px;height:33px;border:1px solid #eee4d655;border-radius:50%;font:300 23px/1 var(--sans);flex:none;transition:transform .3s}
.family-ceremonies[open] .ceremony-disclosure-icon{transform:rotate(45deg)}
.ceremony-note{font-size:11px;line-height:1.9;opacity:.85;max-width:690px;padding:3px 0 17px}
.ceremony-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px;padding-bottom:15px}
.ceremony-grid>.ceremony-strip{display:grid;grid-template-columns:26px minmax(0,1fr);align-items:start;gap:8px 15px;min-height:0;margin:0;padding:20px 0;border-top:1px solid #eee4d62e}
.ceremony-grid .ceremony-strip:before{display:none}
.ceremony-grid .ceremony-strip p{font:400 13px/1.9 var(--sans);margin:8px 0}
.ceremony-grid .ceremony-date{grid-column:2;display:block;width:auto;margin:0;font:300 11px/1.9 var(--sans);letter-spacing:0;text-wrap:pretty}
.ceremony-grid .event-number{margin-top:0}
.ceremony-grid .eyebrow{font-size:9px}
.album-grid .album-photo{cursor:zoom-in}
.album-photo:focus-visible{outline:3px solid var(--gold);outline-offset:-5px}
.album-lightbox{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;border:0;padding:45px 70px;margin:0;background:#22291fef;color:var(--cream);z-index:160}
.album-lightbox:not([open]){display:none}
.album-lightbox[open]{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;gap:22px}
.album-lightbox::backdrop{background:#22291ff0}
.album-lightbox figure{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;margin:0;min-width:0;height:100%;overflow:hidden}
.album-lightbox img{display:block;max-width:100%;max-height:calc(100vh - 150px);max-height:calc(100dvh - 150px);width:auto;height:auto;object-fit:contain;touch-action:pan-y}
.album-lightbox figcaption{font:400 12px/1.6 var(--sans);font-variant-numeric:lining-nums tabular-nums;letter-spacing:2px}
.album-lightbox button{display:grid;place-items:center;color:var(--cream);min-width:44px;min-height:44px;border:1px solid #eee4d655;border-radius:50%;font:300 24px/1 var(--sans);background:transparent}
.album-lightbox .lightbox-close{position:absolute;top:15px;right:20px;font-size:29px}
@keyframes petal-drift{from{transform:translate3d(0,0,0) rotate(0deg)}to{transform:translate3d(35px,-115vh,0) rotate(210deg)}}
@keyframes cover-arrive{from{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
@media(hover:hover) and (pointer:fine){.photo-slot{transition:transform .65s cubic-bezier(.2,.7,.2,1)}.photo-main:hover{transform:translateY(-5px) rotate(-.35deg)}.photo-secondary:hover{transform:translateY(-5px) rotate(.35deg)}.opening-card .button:hover{background:var(--olive)}}
@media(max-width:760px){
 .wedding-opening{padding:20px 16px}
 .opening-card{max-width:390px;padding:30px 24px 27px}
 .opening-card h2{font-size:34px}
 .opening-flower{width:155px;height:155px}
 .opening-flower-top{left:-70px;top:-58px}.opening-flower-bottom{right:-75px;bottom:-65px}
 .opening-mark{margin:20px auto 14px;width:34px;height:34px}
 .opening-rule{margin:18px auto}.opening-date{font-size:11px;margin:14px 0}
 #openingGuest{font-size:25px;margin-bottom:16px}.opening-times{font-size:9px;margin-bottom:20px}
 .opening-card>.eyebrow{font-size:7px;letter-spacing:1.5px}
 .opening-card .button{font-size:11px}.opening-card>small{font-size:11px}
 .hero-event-summary{font-size:10px;margin-top:18px;max-width:340px}
 .art-date[data-range=true]>span:first-child{font-size:clamp(60px,20vw,92px)}
 .event-grid-intro{font-size:10px;margin-top:25px}
 .family-ceremonies{margin-top:28px}.family-ceremonies summary strong{font-size:22px}.family-ceremonies summary small{font-size:9px}
 .ceremony-grid{grid-template-columns:1fr;gap:0}
 .ceremony-grid>.ceremony-strip{padding:22px 0}.ceremony-grid .ceremony-strip p{font-size:12px}.ceremony-grid .ceremony-date{font-size:11px;line-height:1.9}
 .album-lightbox{padding:64px 12px 25px}
 .album-lightbox[open]{grid-template-columns:1fr;gap:0}
 .album-lightbox figure{grid-column:1;grid-row:1;height:100%}
 .album-lightbox .lightbox-previous,.album-lightbox .lightbox-next{position:absolute;bottom:20px;width:44px;height:44px;background:#22291f99;z-index:1}
 .album-lightbox .lightbox-previous{left:20px}.album-lightbox .lightbox-next{right:20px}
 .album-lightbox img{max-height:calc(100vh - 175px);max-height:calc(100dvh - 175px)}
 .album-lightbox figcaption{padding-bottom:22px}
}
@media(max-height:700px){.wedding-opening{place-items:start center;padding-block:16px}.opening-card{padding-block:22px}.opening-mark{margin-block:15px 10px}.opening-rule{margin-block:15px}.opening-times{margin-bottom:16px}}
@media(prefers-reduced-motion:reduce){.opening-wing,.opening-card,.opening-atmosphere,.opening-atmosphere i,.ceremony-disclosure-icon,.photo-slot{animation:none!important;transition:none!important}.photo-slot:hover{transform:none!important}}
