/* Vestibule : isolé du site existant. */
body.invitation-pending { overflow: hidden; }
.invitation { position: fixed; inset: 0; z-index: 100000; display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 20px; padding: 24px; overflow-y: auto; color: #f7e9d2; background: radial-gradient(ellipse at 50% 34%, #51202d 0%, #260d17 49%, #10070c 100%); opacity: 1; visibility: visible; transition: opacity 1.3s ease, visibility 1.3s ease; }
.invitation::before { content: ''; position: absolute; inset: 16px; border: 1px solid rgba(211,169,96,.36); pointer-events: none; }
.invitation::after { content: ''; position: absolute; inset: 24px; border: 1px solid rgba(211,169,96,.12); pointer-events: none; }
.invitation.is-leaving { opacity: 0; visibility: hidden; pointer-events: none; }
.invitation-ornament { font: 500 24px 'Cormorant Garamond',serif; letter-spacing: .45em; color: #d9b877; }
.invitation-card { width: min(100%, 720px); padding: clamp(28px,5vw,70px) clamp(24px,6vw,72px); border: 1px solid rgba(217,184,119,.36); background: linear-gradient(140deg,rgba(68,22,37,.9),rgba(19,8,14,.95)); box-shadow: 0 24px 110px #090307aa, inset 0 0 0 7px rgba(217,184,119,.025); text-align: center; position: relative; }
.invitation-card::before,.invitation-card::after { content: '✦'; position: absolute; left: 50%; transform: translateX(-50%); color: #c7a36a; font-size: 16px; }
.invitation-card::before { top: 10px; } .invitation-card::after { bottom: 10px; }
.invitation-overline,.invitation-foot { color: #c9a66e; font: 600 10px 'DM Sans',sans-serif; letter-spacing: .32em; }
.invitation-card h2 { margin: 16px 0; font: 500 clamp(42px,7vw,74px)/1.06 'Cormorant Garamond',serif; color: #f5e6ce; }
.invitation-card h2 em { color: #d9b877; font-weight: 400; }
.invitation-intro { font: italic clamp(19px,2.7vw,25px)/1.5 'EB Garamond',serif; color: #d8c3af; margin: 0 auto 34px; }
#invitation-form label { display: block; margin-bottom: 12px; font: 500 13px 'DM Sans',sans-serif; letter-spacing: .12em; }
#visitor-name { box-sizing: border-box; width: min(100%,380px); border: 1px solid #b9935f; background: #170c12; color: #fff0d6; padding: 16px 20px; text-align: center; font: 24px 'Cormorant Garamond',serif; outline-offset: 5px; }
#visitor-name:focus { outline: 1px solid #e6c88e; }
.invitation-hint { margin: 12px 0 28px; font: 12px/1.5 'DM Sans',sans-serif; color: #bca48e; }
.invitation button { cursor: pointer; border: 1px solid #c7a36a; background: #c5a36a; color: #1a0a10; padding: 16px 23px; font: 600 11px 'DM Sans',sans-serif; letter-spacing: .14em; transition: background .2s,transform .2s; }
.invitation button:hover { background: #e6c88e; transform: translateY(-2px); }
.invitation button span { padding-left: 12px; }
.invitation-response[hidden] { display: none; }
.invitation-response { animation: invitation-reveal .9s both; }
.invitation-address { color: #d9b877; font: 500 clamp(29px,5vw,46px) 'Cormorant Garamond',serif; margin: 0 0 16px; }
.invitation-message { color: #f2e1cf; font: italic clamp(21px,3vw,28px)/1.45 'EB Garamond',serif; margin: 0 auto 22px; max-width: 540px; }
.invitation-signature { color: #bfa47a; font: 10px 'DM Sans',sans-serif; letter-spacing: .22em; margin-bottom: 30px; }
@keyframes invitation-reveal { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
@media (prefers-reduced-motion:reduce) { .invitation,.invitation-response { transition:none;animation:none; } }

/* Le Crimson demeure derrière le rideau de scène pendant le dialogue. */
.invitation {
  isolation: isolate;
  background: #11060b;
  transition: opacity .6s ease;
}
.invitation::before, .invitation::after { z-index: 5; }
.invitation-card { z-index: 4; transition: opacity .65s ease, transform .85s ease; }
.invitation-ornament, .invitation-foot { position: relative; z-index: 4; transition: opacity .5s ease; }
.invitation-stage { position: absolute; inset: 0; z-index: 1; overflow: hidden; pointer-events: none; background: #160810; }
.invitation-drape {
  position: absolute; top: 0; bottom: 0; width: 52%;
  background:
    linear-gradient(90deg, rgba(7,1,5,.7), transparent 8%, rgba(255,184,134,.1) 15%, rgba(0,0,0,.3) 24%, rgba(241,130,119,.11) 33%, rgba(0,0,0,.42) 44%, rgba(255,184,134,.09) 56%, rgba(0,0,0,.35) 68%, rgba(255,184,134,.08) 81%, rgba(7,1,5,.75)),
    repeating-linear-gradient(90deg, #290712 0%, #65172c 9%, #320914 18%, #7b2136 27%, #260711 36%);
  box-shadow: inset 0 0 70px rgba(0,0,0,.75), 0 0 35px rgba(0,0,0,.7);
  will-change: transform;
  transition: transform 2.35s cubic-bezier(.58,0,.2,1);
}
.invitation-drape-left { left: 0; border-right: 5px solid #a47a40; transform-origin: left center; }
.invitation-drape-right { right: 0; border-left: 5px solid #a47a40; transform-origin: right center; }
.invitation-pelmet { position: absolute; top: 0; left: 0; width: 100%; height: 46px; z-index: 2; background: linear-gradient(#3a0a1b,#681c31 60%,#290712); border-bottom: 3px solid #a47a40; box-shadow: 0 8px 30px #080208aa; transition: transform 2.35s ease; }
/* La carte reste devant le velours jusqu'au clic. */
.invitation.is-opening { background: transparent; opacity: 1; visibility: visible; pointer-events: none; }
.invitation.is-opening .invitation-drape-left { transform: translateX(-104%); }
.invitation.is-opening .invitation-drape-right { transform: translateX(104%); }
.invitation.is-opening .invitation-pelmet { transform: translateY(-110%); }
.invitation.is-opening .invitation-card { opacity: 0; transform: translateY(-18px) scale(.98); }
.invitation.is-opening .invitation-ornament, .invitation.is-opening .invitation-foot { opacity: 0; }
.invitation.is-opening::before, .invitation.is-opening::after { opacity: 0; }
body.invitation-recognized .masthead,
body.invitation-recognized main,
body.invitation-recognized .site-footer,
body.invitation-recognized .audio-player,
body.invitation-recognized .grain,
body.invitation-recognized .curtain { filter: none; }
@media (prefers-reduced-motion: reduce) {
  .invitation-drape, .invitation-pelmet { transition-duration: .15s; }
  .invitation.is-opening .invitation-card { transition-duration: .15s; }
}

/* Révélation immédiate du véritable site entre les deux pans :
   aucun fond opaque ne doit subsister sous les rideaux. */
.invitation.is-opening .invitation-stage {
  background: transparent;
}
/* Le décor est déjà visible derrière le velours dès le premier pixel d'ouverture. */
.invitation.is-opening {
  background: transparent;
}
