/* Motion timing and compositing: opacity + transform, one reveal layer per item. */
:root { --gate-fade:2.8s; --language-fade:1.3s; --reveal-time:2.2s; --motion-ease:cubic-bezier(.22,.61,.36,1); }
.language-gate { transition:opacity var(--gate-fade) ease,visibility 0s var(--gate-fade); }
.language-gate.is-closing .gate-card { transition:opacity 2.1s ease,transform 2.5s var(--motion-ease);transform:translate3d(0,-12px,0); }
.gate-backdrop { filter:none;animation:gateStill 18s ease-out both; }
@keyframes gateStill { from{transform:scale(1.055)} to{transform:scale(1)} }
.language-gate::before,.language-gate::after { animation-duration:15s; }
.gate-card { animation-duration:2.5s; }
.hero-title .written-letter,.written-letter { animation:quietInk 1.65s var(--letter-delay,0ms) ease both;clip-path:none;filter:none; }
@keyframes quietInk { from{opacity:0;transform:translate3d(0,.1em,0)} to{opacity:1;transform:translate3d(0,0,0)} }
.hero-content { animation:none!important; }
.hero-content.intro-playing>.hero-kicker { animation:quietEntrance 2.3s .1s both; }
.hero-content.intro-playing>.hero-date { animation:quietEntrance 2.3s 1.9s both; }
.hero-content.intro-playing>.hero-countdown { animation:quietEntrance 2.3s 2.1s both; }
.hero-content.intro-playing>.hero-rsvp-note { animation:quietEntrance 2.3s 2.7s both; }
@keyframes quietEntrance { from{opacity:0;transform:translate3d(0,18px,0)} to{opacity:1;transform:translate3d(0,0,0)} }
.hero-picture img { animation-duration:30s;will-change:transform; }
.hero-offscreen .hero-picture img { animation-play-state:paused; }
main { transition:opacity var(--language-fade) ease; }
.site-header { backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(245,240,232,.96); }
.language-choice,.slide-arrow { backdrop-filter:none;-webkit-backdrop-filter:none; }
body::after { backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(23,32,25,.5);transition:opacity 1.2s ease,visibility 1.2s; }
.site-nav { backdrop-filter:none;transform:translate3d(0,-18px,0);transition:opacity 1.2s ease,transform 1.5s var(--motion-ease),visibility 1.2s; }
.site-nav.is-open { transform:translate3d(0,0,0); }
.site-nav a,.site-nav.is-open a { transition:opacity 1.1s ease,transform 1.25s var(--motion-ease),color .4s; }
.site-nav.is-open a { transition-delay:.2s; }
.site-nav.is-open a:nth-child(2){transition-delay:.3s}.site-nav.is-open a:nth-child(3){transition-delay:.4s}.site-nav.is-open a:nth-child(4){transition-delay:.5s}.site-nav.is-open a:nth-child(5){transition-delay:.6s}.site-nav.is-open a:nth-child(6){transition-delay:.7s}
.site-nav:not(.is-open) a { transition-delay:0s; }
.menu-toggle span { transition:transform .85s ease,top .85s ease; }
/* Re-entry is armed only outside a 600px viewport buffer. */
.reveal,.location-content > .reveal { filter:none!important;animation:none!important;transition:opacity var(--reveal-time) var(--motion-ease),transform var(--reveal-time) var(--motion-ease);transition-delay:var(--reveal-delay,0ms); }
.reveal:not(.is-visible) { opacity:0;transform:translate3d(0,36px,0);filter:none!important; }
.reveal.is-visible { opacity:1;transform:translate3d(0,0,0); }

.editorial-copy > * { transition:opacity var(--reveal-time) var(--motion-ease),transform var(--reveal-time) var(--motion-ease); }
.location-photo.reveal:not(.is-visible) { transform:translate3d(0,46px,0); }
.location-slides img { filter:none;transition:transform 8s ease; }
.location-slides figure { transition:opacity 2.8s ease; }
.signature,.menu-art,.footer-monogram { filter:none;animation:gentleBreath 8s ease-in-out infinite; }
@keyframes gentleBreath { 0%,100%{opacity:.8} 50%{opacity:1} }
.section-number { animation:none; }
.timeline-item.is-current .timeline-index { animation:none;box-shadow:none; }
.timeline-index { transition:background 1.2s ease,color 1.2s ease,transform 1.2s ease; }
.ambient-rings i { animation-duration:36s;will-change:transform; }
.rice-field i { animation-duration:calc(28s + var(--n)*.8s);box-shadow:none;will-change:transform,opacity; }
.hero-rsvp-note span:last-child { animation-duration:3.4s; }
.faq-list details[open] p { animation:answerIn 1.2s ease both; }
.sound-bars i { height:17px;transform:scaleY(.3); }
.sound-toggle.is-playing .sound-bars i { animation:soundQuiet 1.3s ease-in-out infinite alternate; }
@keyframes soundQuiet { to{transform:scaleY(1)} }
.motion-sleeping *, .motion-sleeping *::before, .motion-sleeping *::after { animation-play-state:paused!important; }
@media(max-width:700px){ .rice-field i:nth-child(n+19){display:none} .rice-field i{left:calc(var(--n)*5.5%)} }
@media(prefers-reduced-motion:reduce){
 .language-gate,main,.site-nav,.site-nav a,.reveal,.editorial-copy > *,.location-slides figure,.location-slides img { transition:none!important; }
 .reveal:not(.is-visible),.reveal.is-visible { opacity:1;transform:none; }
 .written-letter,.hero-title .written-letter,.hero-content.intro-playing>*,.gate-backdrop,.signature,.menu-art,.footer-monogram,.sound-toggle.is-playing .sound-bars i { animation:none!important;opacity:1;transform:none; }
 .rice-field,.ambient-rings { display:none; }
}
/* Start the continuous portrait movement when the language curtain opens. */
.hero-picture img { animation:portraitAlive 16s ease-in-out infinite alternate; }
@keyframes portraitAlive { from{transform:scale(1.015)} to{transform:scale(1.17)} }
body.lang-pending .hero-picture img,.hero-offscreen .hero-picture img { animation-play-state:paused; }
@media(prefers-reduced-motion:reduce){.hero-picture img{animation:none!important;transform:none}}

.site-footer .footer-heart { color:#111; font-family:Georgia,serif; font-size:30px; line-height:1; text-align:center; margin:42px auto 0; padding-bottom:12px; }

/* Child motion keeps the section reveal independent of the heartbeat. */
.footer-monogram > .heartbeat { display:inline-block; color:inherit; font:inherit; }
.heartbeat { display:inline-block; animation:weddingHeartbeat 3.8s ease-in-out infinite; transform-origin:center; }
@keyframes weddingHeartbeat { 0%,36%,100%{transform:scale(1)} 12%{transform:scale(1.055)} 22%{transform:scale(1.012)} 29%{transform:scale(1.035)} }
.menu-handwriting { white-space:nowrap; }
.menu-art:not(.is-visible) .written-letter { animation:none; opacity:0; transform:translate3d(0,.1em,0); }
.menu-art.is-visible .written-letter { animation:quietInk 1.8s var(--letter-delay) ease both; }
.rice-field i { left:calc(var(--n)*4.15%); animation-delay:calc(var(--n)*-3.7s); }
@media(max-width:700px){.rice-field i{left:calc(var(--n)*5.5%)}}
@media(prefers-reduced-motion:reduce){
 .heartbeat {animation:none!important;}
 .menu-art .written-letter {animation:none!important;opacity:1;transform:none;}
}
