/* =================================================================
   Escape Carotte — Widget de réservation
   Vit dans .booking-container (fond parchemin déjà appliqué)
   v2 — Calendrier mensuel visuel + meilleur contraste
   ================================================================= */

/* Variables locales pour cohérence */
#booking-widget {
  --bw-cream:        #fdf6e3;
  --bw-cream-warm:   #f9efd6;
  --bw-cream-soft:   #fff8ec;
  --bw-ink:          #2d1f0e;
  --bw-ink-soft:     #4a3728;
  --bw-ink-mute:     #6b574a;
  --bw-mute:         #877C6D;
  --bw-gold:         #BD8D4C;
  --bw-gold-dark:    #a87837;
  --bw-gold-light:   #DDB837;
  --bw-border:       rgba(135,124,109,.4);
  --bw-border-soft:  rgba(135,124,109,.22);
  --bw-shadow-gold:  0 4px 12px rgba(189,141,76,.25);

  font-family: 'Poppins', sans-serif;
  color: var(--bw-ink);
  padding: 1.8rem 1.2rem 2rem;      /* horizontal resserré pour libérer de la place au calendrier */
  position: relative;
  min-height: 520px;
}

/* ── Cancel banner ────────────────────────────────────────────── */
.bw-cancel-banner {
  background: #fff3cd;
  border: 1px solid #ffe082;
  color: #6b4f00;
  padding: .85rem 1rem;
  border-radius: 8px;
  margin-bottom: 1.2rem;
  font-size: .92rem;
  display: flex;
  align-items: center;
  gap: .6rem;
  box-shadow: 0 2px 8px rgba(0,0,0,.05);
}
.bw-cancel-icon { font-size: 1.2rem; flex-shrink: 0; }
.bw-cancel-banner .bw-close {
  margin-left: auto;
  background: none;
  border: none;
  font-size: 1.4rem;
  cursor: pointer;
  color: inherit;
  line-height: 1;
  padding: 0 .4rem;
  border-radius: 4px;
  transition: background .15s;
}
.bw-cancel-banner .bw-close:hover { background: rgba(0,0,0,.08); }

/* ── Stepper ─────────────────────────────────────────────────── */
.bw-stepper {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 2rem;
  position: relative;
  padding: 0 1rem;
}
.bw-stepper::before {
  content: '';
  position: absolute;
  top: 18px; left: 14%; right: 14%;
  height: 2px;
  background: rgba(135, 124, 109, .25);
  z-index: 0;
}
.bw-step {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .45rem;
  position: relative;
  z-index: 1;
  flex: 0 0 auto;
}
.bw-step-num {
  width: 38px; height: 38px;
  border-radius: 50%;
  background: var(--bw-cream-warm);
  border: 2px solid rgba(189,141,76,.45);
  display: flex; align-items: center; justify-content: center;
  font-family: 'Playfair Display', serif;
  font-weight: 700;
  font-size: 1.05rem;
  color: var(--bw-mute);
  transition: all .3s;
  box-shadow: 0 1px 3px rgba(0,0,0,.08);
}
.bw-step-label {
  font-size: .74rem;
  font-weight: 500;
  color: var(--bw-mute);
  text-transform: uppercase;
  letter-spacing: .6px;
  text-align: center;
  transition: color .3s;
}
.bw-step.is-active .bw-step-num {
  background: var(--bw-gold);
  border-color: var(--bw-gold);
  color: #fff;
  transform: scale(1.12);
  box-shadow: 0 6px 18px rgba(189,141,76,.4);
}
.bw-step.is-active .bw-step-label {
  color: var(--bw-ink);
  font-weight: 700;
}
.bw-step.is-done .bw-step-num {
  background: #4a3728;
  border-color: #4a3728;
  color: var(--bw-gold-light);
}
.bw-step.is-done .bw-step-num::after { content: '✓'; }
.bw-step.is-done .bw-step-num span { display: none; }
.bw-step.is-done .bw-step-label { color: var(--bw-ink-soft); font-weight: 600; }

/* ── Panneaux ─────────────────────────────────────────────────── */
.bw-panel {
  display: none;
  animation: bwFadeIn .35s ease;
}
.bw-panel.is-active { display: block; }
@keyframes bwFadeIn {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

.bw-panel h3 {
  font-family: 'Playfair Display', serif;
  font-size: 1.35rem;
  color: var(--bw-ink);
  margin: 0 0 1rem;
  letter-spacing: .5px;
  font-weight: 700;
}
.bw-panel .bw-help {
  font-size: .88rem;
  color: var(--bw-ink-mute);
  margin: 0 0 1.2rem;
  line-height: 1.55;
}

/* =================================================================
   STEP 1 : Layout 2 colonnes (Calendar | Slots)
   ================================================================= */
.bw-step1-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 1.2rem;
}
/* Passage mono-colonne plus tôt pour éviter le layout cramped entre 720-880px */
@media (max-width: 880px) {
  .bw-step1-grid {
    grid-template-columns: 1fr;
    gap: 1.2rem;
  }
}
.bw-cal-col, .bw-slots-col {
  min-width: 0; /* permet le shrink en grid */
}

/* ── Calendrier mensuel ──────────────────────────────────────── */
#bw-calendar {
  background: #fff;
  border: 1.5px solid var(--bw-border-soft);
  border-radius: 10px;
  padding: .7rem .55rem .85rem;   /* padding resserré pour limiter l'overflow */
  box-shadow: 0 2px 10px rgba(0,0,0,.06), inset 0 1px 0 rgba(255,255,255,.8);
  overflow: hidden;               /* coupe tout débord éventuel */
}
.bw-cal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: .8rem;
  padding: 0 .2rem;
}
.bw-cal-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--bw-ink);
  letter-spacing: .5px;
  flex: 1;
  text-align: center;
}
.bw-cal-nav {
  width: 32px; height: 32px;
  border: 1.5px solid var(--bw-border);
  background: var(--bw-cream);
  border-radius: 50%;
  font-size: 1.4rem;
  font-weight: 700;
  color: var(--bw-ink-soft);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all .18s;
  line-height: 1;
  padding: 0;
}
.bw-cal-nav:hover:not(:disabled) {
  background: var(--bw-gold);
  border-color: var(--bw-gold);
  color: #fff;
  transform: scale(1.05);
}
.bw-cal-nav:disabled {
  opacity: .3;
  cursor: not-allowed;
}

.bw-cal-weekdays {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 2px;
  margin-bottom: 4px;
  padding: 0 2px;
}
.bw-cal-wd {
  text-align: center;
  font-family: 'Montserrat', sans-serif;
  font-size: .7rem;
  font-weight: 700;
  color: var(--bw-mute);
  text-transform: uppercase;
  letter-spacing: .8px;
  padding: .4rem 0 .2rem;
}

.bw-cal-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 3px;
  padding: 0 2px;
}
.bw-cal-day {
  aspect-ratio: 1 / 1;
  background: var(--bw-cream-warm);
  border: 1.5px solid transparent;
  border-radius: 7px;
  font-family: 'Montserrat', sans-serif;
  font-size: .88rem;
  font-weight: 600;
  color: var(--bw-ink);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .15s, border-color .15s, box-shadow .15s, color .15s;
  padding: 0;
  position: relative;
  min-height: 34px;
  box-sizing: border-box;
}
.bw-cal-day.is-empty {
  background: transparent;
  cursor: default;
  pointer-events: none;
}
/* Pas de transform:scale → évite le débordement sur les bords du calendrier */
.bw-cal-day:not(.is-past):not(.is-empty):hover {
  background: var(--bw-cream-soft);
  border-color: var(--bw-gold);
  box-shadow: 0 2px 8px rgba(189,141,76,.2);
  z-index: 1;
}
.bw-cal-day.is-today {
  background: var(--bw-cream-soft);
  border-color: rgba(189,141,76,.5);
  font-weight: 800;
}
.bw-cal-day.is-today::after {
  content: '';
  position: absolute;
  bottom: 3px;
  left: 50%;
  transform: translateX(-50%);
  width: 4px; height: 4px;
  border-radius: 50%;
  background: var(--bw-gold);
}
.bw-cal-day.is-past {
  background: transparent;
  color: rgba(135,124,109,.5);
  cursor: not-allowed;
  text-decoration: line-through;
}
.bw-cal-day.is-selected {
  background: var(--bw-gold);
  border-color: var(--bw-gold);
  color: #fff;
  box-shadow: 0 3px 10px rgba(189,141,76,.4);
  z-index: 2;
}
.bw-cal-day.is-selected.is-today::after {
  background: #fff;
}

/* Légende calendrier */
.bw-cal-legend {
  display: flex;
  flex-wrap: wrap;
  gap: .8rem 1.2rem;
  justify-content: center;
  margin-top: .9rem;
  font-size: .7rem;
  color: var(--bw-mute);
}
.bw-cal-legend span {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
}
.bw-leg-dot {
  width: 11px; height: 11px;
  border-radius: 50%;
  display: inline-block;
}
.bw-leg-today { background: var(--bw-cream-soft); border: 1.5px solid rgba(189,141,76,.5); }
.bw-leg-sel   { background: var(--bw-gold); }
.bw-leg-past  { background: transparent; border: 1.5px solid rgba(135,124,109,.35); }

/* ── Colonne créneaux ────────────────────────────────────────── */
#bw-slots-wrap {
  background: #fff;
  border: 1.5px solid var(--bw-border-soft);
  border-radius: 10px;
  padding: 1rem;
  min-height: 230px;
  box-shadow: 0 2px 10px rgba(0,0,0,.06), inset 0 1px 0 rgba(255,255,255,.8);
  display: flex;
  flex-direction: column;
}
.bw-slots-wrap-empty,
#bw-slots-wrap:has(.bw-slots-placeholder),
#bw-slots-wrap:has(.bw-slots-empty),
#bw-slots-wrap:has(.bw-slots-loading) {
  align-items: center;
  justify-content: center;
}
.bw-slots-placeholder,
.bw-slots-empty {
  text-align: center;
  padding: 1.2rem .8rem;
  color: var(--bw-ink-mute);
}
.bw-placeholder-icon {
  font-size: 2.5rem;
  margin-bottom: .8rem;
  opacity: .65;
}
.bw-slots-placeholder p,
.bw-slots-empty p {
  font-size: .88rem;
  margin: 0 0 .4rem;
  line-height: 1.55;
}
.bw-slots-empty .bw-help {
  font-size: .82rem;
  color: var(--bw-mute);
  margin-top: .5rem;
}
.bw-slots-empty a { color: var(--bw-gold); font-weight: 600; }

.bw-slots-loading {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .8rem;
  padding: 2rem 1rem;
  color: var(--bw-ink-soft);
  font-size: .9rem;
  text-align: center;
}

.bw-slots-info {
  background: var(--bw-cream-soft);
  border: 1px solid rgba(189,141,76,.2);
  border-radius: 6px;
  padding: .55rem .8rem;
  font-size: .82rem;
  color: var(--bw-ink-soft);
  margin-bottom: .8rem;
  text-align: center;
}
.bw-slots-info strong { color: var(--bw-gold-dark); font-weight: 700; }

.bw-slots-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(80px, 1fr));
  gap: .55rem;
}
.bw-slot {
  padding: .7rem .35rem .55rem;
  background: #fff;
  border: 1.5px solid rgba(135,124,109,.3);
  border-radius: 7px;
  font-family: 'Montserrat', sans-serif;
  cursor: pointer;
  transition: all .18s;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .15rem;
}
.bw-slot-time {
  font-weight: 700;
  font-size: 1.05rem;
  color: var(--bw-ink);
  line-height: 1.1;
}
.bw-slot-dur {
  font-size: .68rem;
  color: var(--bw-mute);
  text-transform: uppercase;
  letter-spacing: .5px;
}
.bw-slot:hover:not(:disabled) {
  border-color: var(--bw-gold);
  background: var(--bw-cream-soft);
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(189,141,76,.2);
}
.bw-slot.is-selected {
  background: linear-gradient(135deg, var(--bw-gold), var(--bw-gold-dark));
  border-color: var(--bw-gold);
  color: #fff;
  box-shadow: 0 5px 16px rgba(189,141,76,.4);
  transform: translateY(-1px);
}
.bw-slot.is-selected .bw-slot-time { color: #fff; }
.bw-slot.is-selected .bw-slot-dur { color: rgba(255,255,255,.85); }

/* ── Créneau "dernière minute" (< 1h) : non réservable automatiquement ─ */
.bw-slot.is-last-minute {
  background: #fff8e1;
  border-color: #f0b952;
  border-style: dashed;
  position: relative;
}
.bw-slot.is-last-minute .bw-slot-time {
  color: #8a5a12;
}
.bw-slot.is-last-minute .bw-slot-badge {
  font-size: .62rem;
  font-weight: 700;
  color: #8a5a12;
  text-transform: uppercase;
  letter-spacing: .4px;
  background: rgba(240,185,82,.2);
  padding: 2px 6px;
  border-radius: 4px;
  margin-top: 2px;
  white-space: nowrap;
}
.bw-slot.is-last-minute:hover:not(:disabled) {
  background: #fff2cc;
  border-color: #d89a2e;
  border-style: solid;
  box-shadow: 0 4px 12px rgba(240,185,82,.3);
  transform: translateY(-2px);
}

/* ── Alerte "créneau dernière minute" (encadré téléphone) ─── */
.bw-alert-lastmin {
  background: linear-gradient(135deg, #fff8e1, #fff2cc);
  border: 1.5px solid #f0b952;
  border-radius: 10px;
  padding: .95rem 1rem;
  margin: 0 0 .9rem;
  display: flex;
  gap: .7rem;
  align-items: flex-start;
  box-shadow: 0 3px 12px rgba(240,185,82,.2);
  animation: bwFadeIn .25s ease;
}
.bw-lastmin-icon {
  font-size: 1.6rem;
  flex-shrink: 0;
  line-height: 1.2;
}
.bw-lastmin-body {
  flex: 1;
  min-width: 0;
  font-size: .88rem;
  color: #5a3d0f;
  line-height: 1.5;
}
.bw-lastmin-body strong {
  display: block;
  color: #3d2806;
  font-size: .92rem;
  margin-bottom: .25rem;
}
.bw-lastmin-body p {
  margin: 0;
}
.bw-lastmin-tel {
  color: #8a5a12 !important;
  font-weight: 800;
  text-decoration: none;
  background: rgba(240,185,82,.25);
  padding: 1px 8px;
  border-radius: 4px;
  border: 1px solid rgba(240,185,82,.5);
  white-space: nowrap;
  font-size: 1em;
  transition: background .15s;
}
.bw-lastmin-tel:hover {
  background: rgba(240,185,82,.5);
  text-decoration: underline !important;
}
.bw-alert-lastmin .bw-close {
  background: none;
  border: none;
  font-size: 1.4rem;
  cursor: pointer;
  color: #8a5a12;
  line-height: 1;
  padding: 0 .3rem;
  border-radius: 4px;
  flex-shrink: 0;
  transition: background .15s;
}
.bw-alert-lastmin .bw-close:hover {
  background: rgba(240,185,82,.3);
}

/* =================================================================
   STEP 2 : Form
   ================================================================= */
.bw-selected-recap {
  display: flex;
  align-items: center;
  gap: .6rem;
  background: var(--bw-cream-warm);
  border: 1px solid rgba(189,141,76,.3);
  border-radius: 8px;
  padding: .7rem 1rem;
  margin-bottom: 1.2rem;
  font-size: .9rem;
  color: var(--bw-ink-soft);
  flex-wrap: wrap;
}
.bw-selected-recap strong { color: var(--bw-ink); }
.bw-recap-mini-icon { font-size: 1.1rem; }
.bw-mini-edit {
  margin-left: auto;
  background: transparent;
  border: 1px solid var(--bw-gold);
  color: var(--bw-gold-dark);
  padding: .25rem .8rem;
  border-radius: 6px;
  font-family: 'Montserrat', sans-serif;
  font-size: .72rem;
  font-weight: 600;
  cursor: pointer;
  text-transform: uppercase;
  letter-spacing: .5px;
  transition: all .15s;
}
.bw-mini-edit:hover {
  background: var(--bw-gold);
  color: #fff;
}

.bw-form-row {
  margin-bottom: 1.1rem;
}
.bw-form-row label {
  display: block;
  font-weight: 700;
  font-size: .8rem;
  color: var(--bw-ink-soft);
  margin-bottom: .4rem;
  text-transform: uppercase;
  letter-spacing: .5px;
}
.bw-form-row input[type="text"],
.bw-form-row input[type="email"],
.bw-form-row input[type="tel"],
.bw-form-row select {
  width: 100%;
  padding: .75rem .9rem;
  border: 1.5px solid var(--bw-border);
  border-radius: 7px;
  font-family: inherit;
  font-size: .95rem;
  background: #fff;
  color: var(--bw-ink);
  box-sizing: border-box;
  transition: border-color .2s, box-shadow .2s;
}
.bw-form-row input:focus,
.bw-form-row select:focus {
  outline: none;
  border-color: var(--bw-gold);
  box-shadow: 0 0 0 3px rgba(189,141,76,.18);
}
.bw-form-row input.is-error,
.bw-form-row select.is-error {
  border-color: #c94545;
  background: #fff7f7;
}
.bw-field-error {
  font-size: .78rem;
  color: #c94545;
  margin-top: .3rem;
  display: none;
  font-weight: 500;
}
.bw-field-error.is-visible { display: block; }

.bw-row-double {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .9rem;
}
@media (max-width: 480px) {
  .bw-row-double { grid-template-columns: 1fr; }
}

.bw-price-display {
  background: linear-gradient(135deg, var(--bw-cream-soft), #fff);
  border: 1.5px solid rgba(189,141,76,.35);
  border-radius: 8px;
  padding: 1rem 1.1rem;
  margin-bottom: 1.2rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  box-shadow: 0 2px 8px rgba(189,141,76,.1);
}
.bw-price-detail {
  font-size: .87rem;
  color: var(--bw-ink-mute);
}
.bw-price-detail strong { color: var(--bw-ink); }
.bw-price-total {
  font-family: 'Playfair Display', serif;
  font-size: 1.85rem;
  color: var(--bw-gold-dark);
  font-weight: 700;
  white-space: nowrap;
}

.bw-cgv-row {
  display: flex;
  gap: .7rem;
  align-items: flex-start;
  margin: 1rem 0 .4rem;
  padding: .9rem 1rem;
  background: rgba(255,255,255,.7);
  border-radius: 7px;
  border: 1px solid rgba(135,124,109,.22);
}
.bw-cgv-row input[type="checkbox"] {
  margin-top: .15rem;
  width: 19px; height: 19px;
  cursor: pointer;
  accent-color: var(--bw-gold);
  flex-shrink: 0;
}
.bw-cgv-row label {
  font-size: .87rem;
  color: var(--bw-ink-soft);
  cursor: pointer;
  line-height: 1.5;
}
.bw-cgv-row a { color: var(--bw-gold-dark); font-weight: 600; }
.bw-cgv-row a:hover { text-decoration: underline; }

.bw-rgpd {
  font-size: .73rem;
  color: var(--bw-mute);
  line-height: 1.5;
  margin: .8rem 0 0;
  font-style: italic;
}
.bw-rgpd a { color: var(--bw-gold-dark); }

/* =================================================================
   STEP 3 : Récap
   ================================================================= */
.bw-recap {
  background: #fff;
  border: 1.5px solid rgba(189,141,76,.35);
  border-radius: 10px;
  padding: 1.3rem 1.5rem;
  margin-bottom: 1.5rem;
  box-shadow: 0 3px 12px rgba(0,0,0,.05);
}
.bw-recap-row {
  display: flex;
  justify-content: space-between;
  padding: .6rem 0;
  border-bottom: 1px dashed rgba(135,124,109,.22);
  font-size: .93rem;
  gap: 1rem;
}
.bw-recap-row:last-of-type { border-bottom: none; }
.bw-recap-row .bw-recap-label {
  color: var(--bw-ink-mute);
  font-weight: 500;
  flex-shrink: 0;
}
.bw-recap-row .bw-recap-value {
  color: var(--bw-ink);
  font-weight: 700;
  text-align: right;
  word-break: break-word;
}
.bw-recap-total {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-top: .9rem;
  padding-top: .9rem;
  border-top: 2px solid rgba(189,141,76,.35);
}
.bw-recap-total-label {
  font-family: 'Playfair Display', serif;
  font-size: 1.1rem;
  color: var(--bw-ink-soft);
  font-weight: 600;
}
.bw-recap-total-value {
  font-family: 'Playfair Display', serif;
  font-size: 2.1rem;
  color: var(--bw-gold-dark);
  font-weight: 700;
}

.bw-secure-note {
  display: flex;
  align-items: center;
  gap: .5rem;
  font-size: .82rem;
  color: var(--bw-ink-soft);
  margin-bottom: 1rem;
  padding: .65rem .9rem;
  background: rgba(255,255,255,.7);
  border-radius: 7px;
  border: 1px solid rgba(135,124,109,.18);
}
.bw-secure-note::before { content: '🔒'; font-size: 1rem; }

/* =================================================================
   Boutons
   ================================================================= */
.bw-actions {
  display: flex;
  gap: .8rem;
  justify-content: space-between;
  margin-top: 1.6rem;
}
.bw-btn {
  padding: .9rem 1.6rem;
  border-radius: 7px;
  font-family: 'Montserrat', sans-serif;
  font-weight: 700;
  font-size: .92rem;
  cursor: pointer;
  transition: all .2s;
  border: 1.5px solid transparent;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  letter-spacing: .6px;
  text-transform: uppercase;
}
.bw-btn-primary {
  background: linear-gradient(135deg, var(--bw-gold), var(--bw-gold-dark));
  color: #fff;
  flex: 1;
  box-shadow: 0 4px 12px rgba(189,141,76,.3);
}
.bw-btn-primary:hover:not(:disabled) {
  background: linear-gradient(135deg, var(--bw-gold-dark), #8d6128);
  transform: translateY(-2px);
  box-shadow: 0 7px 20px rgba(189,141,76,.4);
}
.bw-btn-primary:disabled {
  background: #d8c7a3;
  cursor: not-allowed;
  transform: none;
  box-shadow: none;
}
.bw-btn-secondary {
  background: transparent;
  border-color: rgba(135,124,109,.5);
  color: var(--bw-ink-soft);
}
.bw-btn-secondary:hover:not(:disabled) {
  background: rgba(189,141,76,.1);
  border-color: var(--bw-gold);
  color: var(--bw-ink);
}
.bw-btn-pay {
  font-size: 1.05rem;
  padding: 1.05rem 1.5rem;
}

/* =================================================================
   Spinner & overlay
   ================================================================= */
.bw-spinner {
  width: 18px; height: 18px;
  border: 2.5px solid rgba(255,255,255,.35);
  border-top-color: #fff;
  border-radius: 50%;
  animation: bwSpin .7s linear infinite;
  display: inline-block;
}
.bw-spinner.bw-spinner-dark {
  border-color: rgba(189,141,76,.25);
  border-top-color: var(--bw-gold);
}
@keyframes bwSpin { to { transform: rotate(360deg); } }

.bw-loading-overlay {
  position: absolute;
  inset: 0;
  background: rgba(253, 246, 227, .92);
  backdrop-filter: blur(2px);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: .9rem;
  z-index: 10;
  border-radius: inherit;
}
.bw-loading-overlay .bw-spinner {
  width: 44px; height: 44px;
  border-width: 4px;
}
.bw-loading-overlay span {
  font-size: .95rem;
  color: var(--bw-ink-soft);
  font-weight: 600;
}

/* =================================================================
   Alertes globales
   ================================================================= */
.bw-alert {
  padding: .85rem 1rem;
  border-radius: 7px;
  margin: 0 0 1rem;
  font-size: .88rem;
  display: flex;
  gap: .6rem;
  align-items: flex-start;
  line-height: 1.45;
}
.bw-alert-error {
  background: #fdecea;
  border: 1px solid #f5c2c0;
  color: #a02020;
}
.bw-alert-info {
  background: #e8f2ff;
  border: 1px solid #b3d4ff;
  color: #1a4d8a;
}

/* =================================================================
   Vue "MAINTENANCE" — quand booking_enabled = false
   ================================================================= */
.bw-maintenance {
  text-align: center;
  padding: 2.5rem 1.5rem 2.2rem;
  max-width: 640px;
  margin: 0 auto;
}
.bw-maint-icon {
  font-size: 3.4rem;
  margin-bottom: .8rem;
  animation: bwMaintPulse 2.4s ease-in-out infinite;
  display: inline-block;
}
@keyframes bwMaintPulse {
  0%, 100% { transform: rotate(-8deg); }
  50%      { transform: rotate(8deg); }
}
.bw-maint-title {
  font-family: 'Playfair Display', serif !important;
  font-size: clamp(1.3rem, 2.2vw, 1.7rem);
  color: var(--bw-ink) !important;
  margin: 0 0 .8rem !important;
  font-weight: 700;
  letter-spacing: .3px;
  border-bottom: none !important;
  padding-bottom: 0 !important;
}
.bw-maint-msg {
  font-size: 1rem;
  color: var(--bw-ink-soft);
  line-height: 1.6;
  margin: 0 auto 1.8rem;
  max-width: 520px;
}
.bw-maint-contact {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .8rem;
  margin-bottom: 1.6rem;
}
.bw-maint-btn {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  padding: .95rem 1.5rem;
  border-radius: 8px;
  font-family: 'Montserrat', sans-serif;
  font-weight: 700;
  font-size: .95rem;
  text-decoration: none !important;
  letter-spacing: .5px;
  transition: transform .2s, box-shadow .2s, background .2s;
  border: 2px solid transparent;
}
.bw-maint-btn-primary {
  background: linear-gradient(135deg, var(--bw-gold), var(--bw-gold-dark));
  color: #fff !important;
  box-shadow: 0 6px 18px rgba(189,141,76,.35);
}
.bw-maint-btn-primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 26px rgba(189,141,76,.45);
  background: linear-gradient(135deg, var(--bw-gold-dark), #8d6128);
}
.bw-maint-btn-secondary {
  background: var(--bw-cream-warm);
  color: var(--bw-ink-soft) !important;
  border-color: var(--bw-border);
}
.bw-maint-btn-secondary:hover {
  background: var(--bw-cream-soft);
  border-color: var(--bw-gold);
  color: var(--bw-ink) !important;
}
.bw-maint-note {
  font-size: .85rem;
  color: var(--bw-mute);
  font-style: italic;
  margin: 0;
}
@media (max-width: 480px) {
  .bw-maint-btn { width: 100%; justify-content: center; }
  .bw-maint-contact { flex-direction: column; }
}

/* =================================================================
   Surcharges article.css
   ================================================================= */
.article-content #booking-widget,
.article-content #booking-widget p,
.article-content #booking-widget label,
.article-content #booking-widget li,
.article-content #booking-widget div,
.article-content #booking-widget span:not(.bw-cancel-icon):not(.bw-recap-mini-icon) {
  color: inherit;
}
.article-content #booking-widget h3 { color: var(--bw-ink) !important; }
.article-content #booking-widget a {
  color: var(--bw-gold-dark) !important;
}
.article-content #booking-widget strong { color: inherit; }

/* Boutons maintenance : la couleur du bouton gagne sur la règle a:link ci-dessus */
.article-content #booking-widget .bw-maint-btn-primary   { color: #fff !important; }
.article-content #booking-widget .bw-maint-btn-secondary { color: var(--bw-ink-soft) !important; }
.article-content #booking-widget .bw-maint-btn-secondary:hover { color: var(--bw-ink) !important; }
.article-content #booking-widget .bw-maint-title { color: var(--bw-ink) !important; }

/* =================================================================
   Code promo (Step 3)
   ================================================================= */
.bw-promo-wrap {
  margin: 0 0 1.2rem;
}
.bw-promo-form {
  background: rgba(255,255,255,.7);
  border: 1px dashed rgba(189,141,76,.4);
  border-radius: 8px;
  padding: .85rem 1rem 1rem;
}
.bw-promo-label {
  display: block;
  font-weight: 700;
  font-size: .8rem;
  color: var(--bw-ink-soft);
  margin-bottom: .45rem;
  text-transform: uppercase;
  letter-spacing: .5px;
}
.bw-promo-inputgroup {
  display: flex;
  gap: .5rem;
  align-items: stretch;
}
.bw-promo-inputgroup input[type="text"] {
  flex: 1;
  min-width: 0;
  padding: .65rem .85rem;
  border: 1.5px solid var(--bw-border);
  border-radius: 7px;
  font-family: inherit;
  font-size: .95rem;
  background: #fff;
  color: var(--bw-ink);
  text-transform: uppercase;
  letter-spacing: 1px;
  box-sizing: border-box;
  transition: border-color .2s, box-shadow .2s;
}
.bw-promo-inputgroup input[type="text"]:focus {
  outline: none;
  border-color: var(--bw-gold);
  box-shadow: 0 0 0 3px rgba(189,141,76,.18);
}
.bw-promo-apply {
  padding: .65rem 1.2rem;
  background: var(--bw-cream-warm);
  border: 1.5px solid var(--bw-gold);
  color: var(--bw-gold-dark);
  border-radius: 7px;
  font-family: 'Montserrat', sans-serif;
  font-weight: 700;
  font-size: .82rem;
  letter-spacing: .5px;
  text-transform: uppercase;
  cursor: pointer;
  transition: background .18s, color .18s, transform .18s;
  white-space: nowrap;
}
.bw-promo-apply:hover:not(:disabled) {
  background: var(--bw-gold);
  color: #fff;
  transform: translateY(-1px);
}
.bw-promo-apply:disabled {
  opacity: .6;
  cursor: wait;
}
.bw-promo-feedback {
  margin-top: .55rem;
  font-size: .85rem;
  line-height: 1.4;
  min-height: 1px;
}
.bw-promo-error {
  display: flex;
  gap: .45rem;
  align-items: flex-start;
  color: #a02020;
  background: #fdecea;
  border: 1px solid #f5c2c0;
  border-radius: 6px;
  padding: .55rem .75rem;
}
.bw-promo-applied {
  display: flex;
  align-items: center;
  gap: .6rem;
  background: linear-gradient(135deg, #e9f7ea, #d9f0db);
  border: 1.5px solid #8ec999;
  border-radius: 8px;
  padding: .75rem 1rem;
  animation: bwFadeIn .25s ease;
}
.bw-promo-check {
  font-size: 1.2rem;
  line-height: 1;
  flex-shrink: 0;
}
.bw-promo-applied-msg {
  flex: 1;
  font-size: .9rem;
  color: #255a2d;
  font-weight: 500;
  line-height: 1.4;
}
.bw-promo-applied-msg strong {
  color: #174a1f;
  font-weight: 800;
}
.bw-promo-remove {
  background: transparent;
  border: 1px solid #8ec999;
  color: #2a6a34;
  padding: .3rem .7rem;
  border-radius: 5px;
  font-family: 'Montserrat', sans-serif;
  font-size: .72rem;
  font-weight: 700;
  cursor: pointer;
  text-transform: uppercase;
  letter-spacing: .5px;
  transition: background .15s, color .15s;
  flex-shrink: 0;
}
.bw-promo-remove:hover {
  background: #c94545;
  border-color: #c94545;
  color: #fff;
}

/* ── Lignes de récap dédiées code promo ────────────────────────── */
.bw-recap-row.bw-recap-subrow .bw-recap-label,
.bw-recap-row.bw-recap-subrow .bw-recap-value {
  font-weight: 500;
  color: var(--bw-ink-mute);
}
.bw-recap-row.bw-recap-discount-row {
  background: rgba(142,201,153,.12);
  border-bottom: 1px dashed rgba(189,141,76,.22);
  padding: .55rem .7rem;
  margin: 0 -.7rem;
  border-radius: 5px;
}
.bw-recap-row.bw-recap-discount-row .bw-recap-label {
  color: #2a6a34;
  font-weight: 600;
}
.bw-recap-row.bw-recap-discount-row .bw-recap-discount-value {
  color: #2a6a34;
  font-weight: 800;
}

/* =================================================================
   Sélecteur de langue du jeu (step 2)
   ================================================================= */
.bw-gamelang-row {
  background: linear-gradient(135deg, rgba(189,141,76,.06), rgba(221,184,55,.04));
  border: 1px dashed rgba(189,141,76,.35);
  border-radius: 12px;
  padding: .95rem 1rem 1rem;
}
.bw-gamelang-label {
  display: block;
  font-weight: 600;
  color: var(--bw-ink);
  font-size: .95rem;
  margin-bottom: .15rem;
}
.bw-gamelang-help {
  margin: 0 0 .75rem;
  font-size: .82rem;
  color: var(--bw-ink-mute);
  line-height: 1.4;
}
.bw-gamelang-group {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .55rem;
}
.bw-gamelang-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .3rem;
  padding: .65rem .4rem;
  background: #fff;
  border: 2px solid var(--bw-border-soft);
  border-radius: 10px;
  cursor: pointer;
  font-family: inherit;
  color: var(--bw-ink-soft);
  transition: all .18s ease;
  min-height: 72px;
  outline: none;
}
.bw-gamelang-btn:hover {
  border-color: var(--bw-gold);
  background: var(--bw-cream-soft);
  transform: translateY(-1px);
}
.bw-gamelang-btn:focus-visible {
  box-shadow: 0 0 0 3px rgba(189,141,76,.35);
}
.bw-gamelang-btn.is-selected {
  border-color: var(--bw-gold);
  background: linear-gradient(135deg, #fff8ec, #fdf0d6);
  box-shadow: var(--bw-shadow-gold);
  color: var(--bw-ink);
  font-weight: 600;
}
.bw-gamelang-btn.is-selected::after {
  content: '✓';
  position: absolute;
  /* placé visuellement via bouton non-relative → on relatif ici : */
}
.bw-gamelang-btn { position: relative; }
.bw-gamelang-btn.is-selected::after {
  content: '✓';
  position: absolute;
  top: 4px;
  right: 6px;
  font-size: .75rem;
  color: var(--bw-gold-dark);
  font-weight: 700;
}
.bw-gamelang-flag {
  font-size: 1.55rem;
  line-height: 1;
  filter: saturate(1.1);
}
.bw-gamelang-name {
  font-size: .78rem;
  letter-spacing: .2px;
}

/* =================================================================
   Mobile — élargit le widget : tue le double-cadre extérieur,
   le widget devient quasi edge-to-edge pour gagner en lisibilité.
   ================================================================= */
@media (max-width: 600px) {
  /* Cadre extérieur (.booking-container) → quasi edge-to-edge */
  .booking-container {
    margin-left: .35rem !important;
    margin-right: .35rem !important;
    margin-top: 1.4rem !important;
    margin-bottom: 1.4rem !important;
    padding: 0 !important;
    border: none !important;
    border-radius: 12px !important;
    max-width: none !important;
    box-shadow: 0 2px 10px rgba(0,0,0,.12) !important;
    background-image: none !important;  /* cache le bateau-1.png décoratif */
  }
  /* Cache la tête de mort 💀 décorative qui chevauche la bordure (page index/articles) */
  .booking-container::before { display: none !important; }
}
@media (max-width: 480px) {
  #booking-widget { padding: 1.2rem .7rem 1.4rem; }
  .bw-step-label { font-size: .65rem; }
  .bw-step-num { width: 32px; height: 32px; font-size: .9rem; }
  .bw-stepper::before { top: 16px; }
  .bw-actions { flex-direction: column-reverse; gap: .65rem; }
  .bw-btn { width: 100%; }
  .bw-recap-total-value { font-size: 1.75rem; }
  .bw-price-display { flex-direction: column; align-items: flex-start; gap: .5rem; }
  .bw-cal-day { font-size: .82rem; min-height: 34px; }
  .bw-cal-wd { font-size: .65rem; padding: .3rem 0 .15rem; }
  .bw-slots-grid { grid-template-columns: repeat(auto-fill, minmax(72px, 1fr)); }
  .bw-slot-time { font-size: .98rem; }
  .bw-selected-recap { font-size: .85rem; padding: .6rem .8rem; }
  .bw-mini-edit { font-size: .68rem; padding: .2rem .6rem; }
  .bw-promo-inputgroup { flex-direction: column; gap: .5rem; }
  .bw-promo-apply { width: 100%; padding: .7rem; }
  .bw-promo-applied { flex-wrap: wrap; }
  .bw-promo-applied-msg { font-size: .85rem; }
  .bw-gamelang-group { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .bw-gamelang-btn { min-height: 64px; padding: .55rem .4rem; }
  .bw-gamelang-flag { font-size: 1.4rem; }
  .bw-gamelang-name { font-size: .82rem; }
}
@media (max-width: 380px) {
  .bw-cal-day-num { font-size: .78rem; }
}
