/* Invitation entrance and progressive motion. Content stays usable without JS. */
body.invitation-locked{overflow:hidden;overscroll-behavior:none}
.invitation-cover{--cover:#681e2c;--cover-deep:#350e19;position:fixed;inset:0;z-index:1000;display:grid;place-items:center;perspective:1600px;color:#f7e7c6;isolation:isolate;overflow:hidden;background:#1b1011;transition:background 1.5s}
.invitation-cover[data-house="trai"]{--cover:#204f45;--cover-deep:#0b2825}
.invitation-cover::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse,#ead5a9aa,transparent 65%);opacity:0;transition:opacity 1s}
.cover-door{position:absolute;top:0;bottom:0;width:50.1%;background:radial-gradient(ellipse at 50% 35%,#ffffff0b,transparent 70%),repeating-linear-gradient(45deg,transparent 0 28px,#d9b87508 28px 29px),linear-gradient(120deg,var(--cover),var(--cover-deep));backface-visibility:hidden;transition:transform 1.8s cubic-bezier(.65,0,.2,1),filter 1.8s;will-change:transform}
.cover-door::after{content:'';position:absolute;inset:22px;border:1px solid #d8b97b66;box-shadow:inset 0 0 0 6px var(--cover),inset 0 0 0 7px #d8b97b33;border-radius:140px 140px 0 0}
.cover-door-left{left:0;transform-origin:left center;border-right:1px solid #e5c58c88}.cover-door-right{right:0;transform-origin:right center}
.cover-content{position:relative;z-index:2;text-align:center;padding:32px 20px;max-width:620px;width:100%;transition:opacity .55s,transform .8s;}
.cover-eyebrow{font:11px var(--font-sans);letter-spacing:5px;text-transform:uppercase;color:#e6cb96;margin-bottom:28px}
.cover-names{font:clamp(36px,6vw,64px)/1.2 var(--font-serif);text-shadow:0 3px 20px #0003}.cover-names span{display:block;font:italic 32px var(--font-serif);color:#d8b97b;margin:9px}
.cover-date{font:12px var(--font-sans);letter-spacing:4px;margin:24px 0;color:#ead9b8}
.cover-seal{width:94px;height:94px;border-radius:50%;border:1px solid #efda9a;background:radial-gradient(circle at 35% 25%,#e2c48a,#ae7a38 80%);color:var(--cover-deep);box-shadow:0 0 0 7px #e6c58c13,0 0 0 8px #e6c58c55,0 10px 40px #0004;cursor:pointer;position:relative;margin:14px auto 20px;display:grid;place-items:center;animation:seal-breathe 3s ease-in-out infinite;transition:transform .3s}
.cover-seal::before{content:'';position:absolute;inset:7px;border:1px solid #754b3288;border-radius:50%}.cover-seal span{font:50px 'Songti SC',serif}.cover-seal:hover{transform:scale(1.08)}.cover-seal:focus-visible,.cover-skip:focus-visible{outline:3px solid #fff;outline-offset:8px}
.cover-hint{font:13px var(--font-sans);letter-spacing:1px;color:#f4e4c4}.cover-guest{font:italic 18px var(--font-serif);margin:16px 0;color:#f9eddb}.cover-skip{position:absolute;bottom:max(24px,env(safe-area-inset-bottom));right:24px;z-index:3;color:#ead9b8;background:transparent;border:0;border-bottom:1px solid #ead9b866;padding:8px;font:12px var(--font-sans);cursor:pointer}
.cover-orbit{position:absolute;width:min(78vw,640px);aspect-ratio:1;border:1px solid #dfc48b19;border-radius:50%;pointer-events:none;box-shadow:0 0 90px #dbbd7c09,inset 0 0 70px #dbbd7c09;animation:orbit-drift 8s ease-in-out infinite}
.invitation-cover.is-opening{background:transparent;pointer-events:none}.is-opening::before{opacity:1}.is-opening .cover-door-left{transform:rotateY(-108deg);filter:brightness(.6)}.is-opening .cover-door-right{transform:rotateY(108deg);filter:brightness(.6)}.is-opening .cover-content,.is-opening .cover-orbit,.is-opening .cover-skip{opacity:0;transform:translateY(-18px) scale(1.06)}
#flower-canvas{z-index:1001;opacity:.85}.motion-reveal{opacity:0;transform:translateY(28px);transition:opacity .9s ease var(--reveal-delay,0ms),transform 1s cubic-bezier(.2,.7,.2,1) var(--reveal-delay,0ms)}.motion-reveal.is-visible{opacity:1;transform:none}
body.invitation-entered .hero-section>.wedding-badge,body.invitation-entered .couple-names-wrap,body.invitation-entered .wedding-dates-badge,body.invitation-entered .hero-photo-container{animation:invitation-rise 1.2s both cubic-bezier(.2,.7,.2,1)}
body.invitation-entered .couple-names-wrap{animation-delay:.12s}body.invitation-entered .wedding-dates-badge{animation-delay:.24s}body.invitation-entered .hero-photo-container{animation-delay:.36s}
.hero-section{background:radial-gradient(ellipse at 15% 20%,#ead5ab36,transparent 55%),linear-gradient(#fff,#faf7f2)}
.hero-photo-container::after{content:'';position:absolute;inset:-3px;border:1px solid #d4af3777;border-radius:inherit;pointer-events:none;animation:frame-glow 5s ease-in-out infinite}.hero-photo-frame::after{content:'';position:absolute;inset:-60%;background:linear-gradient(110deg,transparent 44%,#fff3 49%,transparent 54%);transform:translateX(-70%);animation:photo-gleam 10s ease-in-out infinite;pointer-events:none}
.invitation-card,.event-card,.gift-card,.rsvp-form-card{transition:box-shadow .4s,transform .4s}.invitation-card:hover,.event-card:hover{box-shadow:0 15px 45px #8b6a2420}.section-divider svg{filter:drop-shadow(0 0 7px #c59b2740)}
.motion-progress{position:fixed;top:0;left:0;width:100%;height:3px;background:var(--gold-gradient);z-index:999;transform:scaleX(0);transform-origin:left;pointer-events:none}
@keyframes seal-breathe{50%{box-shadow:0 0 0 12px #e6c58c08,0 0 0 13px #e6c58c33,0 10px 50px #d3ab4f20}}
@keyframes orbit-drift{50%{transform:scale(1.06);opacity:.5}}
@keyframes invitation-rise{from{opacity:0;transform:translateY(25px)}to{opacity:1;transform:none}}
@keyframes frame-glow{50%{box-shadow:0 0 26px #d4af3738}}
@keyframes photo-gleam{0%,65%{transform:translateX(-70%)}90%,100%{transform:translateX(70%)}}
@media(max-width:480px){.cover-door::after{inset:12px;border-radius:100px 100px 0 0}.cover-eyebrow{letter-spacing:3px}.cover-names{font-size:39px}.cover-content{padding-bottom:62px}}
@media(max-height:620px){.cover-eyebrow{margin-bottom:12px}.cover-names{font-size:30px}.cover-names span{font-size:22px;margin:3px}.cover-date{margin:12px}.cover-seal{width:68px;height:68px;margin:10px auto}.cover-seal span{font-size:38px}.cover-guest{margin:8px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.motion-reveal{opacity:1;transform:none}#flower-canvas{display:none}}

.wedding-badge[tabindex="-1"]:focus{outline:none}
