/* ============================================================
   VOINOU · Inscription Lyannaj Karayib (RSVP)
   S'appuie sur site.css (tokens, .btn, .kicker, .page-hero,
   .contact-form, .form-legal). Classes propres préfixées rsvp-.
   ============================================================ */

.opt{font-weight:500;color:var(--ink-65)}
.rsvp-hint{margin-top:7px;font-size:12.5px;line-height:1.5;color:var(--ink-65)}
.rsvp-hero .lead strong{color:var(--blue)}

/* ---------- Mise en page du formulaire ---------- */
.rsvp-layout{background:#fff;padding:56px var(--pad) 72px;display:grid;grid-template-columns:7fr 5fr;gap:56px;align-items:start}
.rsvp-form .btn{align-self:stretch}
.rsvp-form input[aria-invalid="true"],.rsvp-form textarea[aria-invalid="true"]{border-color:var(--red)}
.rsvp-field-error{margin-top:6px;font-size:12.5px;font-weight:600;color:#B42A0E}
.rsvp-form fieldset{border:0;margin:0;padding:0;min-width:0}
.rsvp-form legend{font-size:13px;font-weight:700;color:var(--ink);margin-bottom:7px;padding:0}
.rsvp-guests{display:flex;flex-direction:column;gap:10px}
.rsvp-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.rsvp-submit-row{display:flex;flex-direction:column;gap:12px}

/* Sélecteur du nombre de personnes */
.rsvp-stepper{display:inline-flex;align-items:center;gap:10px}
.rsvp-stepper button{width:48px;height:48px;border-radius:50%;border:1.5px solid rgba(46,57,155,.25);background:#fff;color:var(--blue);font-size:22px;font-weight:700;line-height:1;cursor:pointer;font-family:inherit;display:flex;align-items:center;justify-content:center}
.rsvp-stepper button:disabled{opacity:.35;cursor:not-allowed}
.rsvp-stepper button:not(:disabled):hover{background:rgba(46,57,155,.06)}
.contact-form .rsvp-stepper input{width:72px;text-align:center;font-size:20px;font-weight:800;color:var(--blue);padding:10px 8px;-moz-appearance:textfield}
.rsvp-stepper input::-webkit-outer-spin-button,.rsvp-stepper input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}

/* Focus clavier visible (le site retire l'outline des champs au profit de la bordure) */
.rsvp-page :focus-visible{outline:3px solid rgba(46,57,155,.35);outline-offset:2px}
.contact-form.rsvp-form input:focus-visible,.contact-form.rsvp-form textarea:focus-visible{outline:none}

/* ---------- Messages ---------- */
.rsvp-alert{border-radius:10px;padding:16px 18px;border-left:3px solid var(--blue);background:rgba(46,57,155,.06);font-size:14.5px;line-height:1.6;color:var(--ink)}
.rsvp-alert strong{display:block;font-size:16px;font-weight:800;color:var(--ink);margin-bottom:4px}
.rsvp-alert p+p{margin-top:8px}
.rsvp-alert .actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.rsvp-alert .btn{padding:11px 22px;font-size:14px}
.rsvp-alert-warn{border-left-color:var(--orange);background:rgba(240,132,12,.09)}
.rsvp-alert-error{border-left-color:var(--red);background:rgba(240,60,24,.07)}
.rsvp-alert-ok{border-left-color:var(--green);background:rgba(48,156,60,.08)}
.rsvp-banner{margin-bottom:24px}

/* ---------- Carte événement ---------- */
.rsvp-aside{display:flex;flex-direction:column;gap:20px}
.rsvp-event{border-radius:20px;overflow:hidden;border:1px solid var(--line)}
.rsvp-facts{margin:0;padding:22px 28px;display:flex;flex-direction:column;gap:14px;background:#fff}
.rsvp-facts div{display:grid;grid-template-columns:78px 1fr;gap:12px}
.rsvp-facts dt{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--orange);padding-top:3px}
.rsvp-facts dd{margin:0;font-size:14.5px;line-height:1.5;font-weight:600;color:var(--ink)}
.rsvp-avail{display:flex;align-items:center;gap:10px;padding:14px 28px;background:var(--cream);font-size:13.5px;font-weight:700;color:var(--ink)}
.rsvp-avail::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--green);flex:none}
.rsvp-avail[data-state="limited"]::before{background:var(--orange)}
.rsvp-avail[data-state="full"]::before,.rsvp-avail[data-state="closed"]::before{background:var(--red)}
.rsvp-avail[data-state="loading"]::before{background:rgba(51,41,29,.25)}

/* ---------- Page réservation (billet) ---------- */
.rsvp-res{background:#fff;padding:40px var(--pad) 72px}
.rsvp-res-inner{max-width:560px;margin:0 auto;display:flex;flex-direction:column;gap:20px}
.rsvp-ticket{border-radius:24px;overflow:hidden;border:1px solid var(--line)}
.rsvp-ticket-head{padding:24px 28px;color:#fff;background:var(--blue)}
.rsvp-ticket-head.is-waitlisted{background:var(--orange)}
.rsvp-ticket-head.is-checked_in{background:var(--green)}
.rsvp-ticket-head.is-cancelled,.rsvp-ticket-head.is-no_show{background:#6B6258}
.rsvp-ticket-head .sur{font-size:12px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;opacity:.9}
.rsvp-ticket-head .name{font-family:var(--caveat);font-weight:700;font-size:40px;line-height:1;margin-top:4px}
.rsvp-ticket-head .who{margin-top:10px;font-size:16px;font-weight:700}
.rsvp-ticket-head .party{font-size:13.5px;opacity:.9;margin-top:2px}
.rsvp-ticket-body{padding:26px 28px;background:#fff;display:flex;flex-direction:column;gap:18px}
.rsvp-qr{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center}
.rsvp-qr svg{width:min(78vw,280px);height:auto;display:block}
.rsvp-code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:24px;font-weight:700;letter-spacing:.08em;color:var(--blue)}
.rsvp-qr p{font-size:13.5px;line-height:1.55;color:var(--ink-70);max-width:360px}
.rsvp-ticket-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.rsvp-ticket-actions .btn{padding:11px 22px;font-size:14px}
.rsvp-ticket .rsvp-facts{padding:18px 0 0;border-top:1px dashed rgba(51,41,29,.18)}
.rsvp-status-text{font-size:15px;line-height:1.65;color:var(--ink-70)}
.rsvp-status-text strong{color:var(--ink)}
.rsvp-cancel{border-top:1px solid var(--line);padding-top:20px}
.rsvp-cancel h2{font-size:16px;font-weight:800;color:var(--ink)}
.rsvp-cancel p{margin-top:6px;font-size:13.5px;line-height:1.6;color:var(--ink-70)}
.rsvp-cancel .actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.rsvp-cancel .btn{padding:11px 22px;font-size:14px}
.btn-danger{background:#fff;border:1.5px solid rgba(240,60,24,.45);color:#B42A0E}
.rsvp-skeleton{height:420px;border-radius:24px;background:linear-gradient(90deg,#F5F1E8 0%,#FBF8F2 50%,#F5F1E8 100%);background-size:200% 100%;animation:rsvp-shimmer 1.4s linear infinite}
@keyframes rsvp-shimmer{to{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){.rsvp-skeleton{animation:none}}

/* ---------- Lyannaj : accès à l'inscription ---------- */
.ly-rsvp{max-width:720px;margin:30px auto 0;display:flex;align-items:center;justify-content:space-between;gap:18px 24px;flex-wrap:wrap;background:#fff;border:1px solid rgba(46,57,155,.18);border-radius:20px;padding:20px 24px;text-align:left}
.ly-rsvp .sur{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--orange)}
.ly-rsvp .what{margin-top:4px;font-size:16px;font-weight:800;color:var(--blue)}
.ly-rsvp .when{margin-top:2px;font-size:13.5px;color:var(--ink-70)}

/* ---------- Responsive ---------- */
@media (max-width:840px){
  .rsvp-layout{grid-template-columns:1fr;gap:28px;padding-top:32px}
  .rsvp-aside{order:-1}
  .rsvp-facts{padding:18px 22px}
  .rsvp-avail{padding:12px 22px}
}
@media (max-width:560px){
  .rsvp-res{padding-top:24px}
  .rsvp-ticket-head,.rsvp-ticket-body{padding-left:20px;padding-right:20px}
  .ly-rsvp .btn{width:100%}
}

/* ---------- Don HelloAsso (affiché seulement si donationUrl est renseigné) ---------- */
.rsvp-donate{margin-top:20px;padding:22px 24px;border-radius:20px;background:rgba(240,132,12,.08);border:1.5px solid rgba(240,132,12,.35);display:flex;flex-direction:column;gap:10px;align-items:flex-start}
.rsvp-donate .sur{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--orange)}
.rsvp-donate p{font-size:14.5px;line-height:1.6;color:var(--ink-70)}
.rsvp-donate .btn{margin-top:4px}
.rsvp-res-inner .rsvp-donate{margin-top:0}
