.dla-booking {
  --dla-navy: #082E50;
  --dla-blue: #4478A6;
  --dla-orange: #F28705;
  --dla-text: #434E58;
  --dla-line: #E6ECEF;
  --dla-pale: #F8F9FA;
  --dla-light: #F2F9FF;
  width: 100%;
  margin: 0;
  font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color: var(--dla-text);
}
.dla-booking *, .dla-booking *::before, .dla-booking *::after { box-sizing: border-box; }
.dla-booking button { font: inherit; text-transform: none; letter-spacing: normal; }
.dla-booking__app { width: 100%; }
.dla-booking__loading,
.dla-booking__error,
.dla-booking__success {
  width: 100%;
  padding: 22px;
  border: 1px solid var(--dla-line);
  border-radius: 12px;
  background: #fff;
}
.dla-booking__loading { text-align: center; color: var(--dla-blue); font-weight: 700; }
.dla-booking__error strong { color: var(--dla-navy); font-size: 18px; }
.dla-booking__error p { margin: 8px 0 14px; line-height: 1.5; }
.dla-booking__error a { display: inline-block; padding: 10px 14px; border-radius: 8px; background: var(--dla-navy); color: #fff; text-decoration: none; font-weight: 700; }
.dla-booking__success { text-align: center; }
.dla-booking__success-icon { display: grid; place-items: center; width: 48px; height: 48px; margin: 0 auto 12px; border-radius: 50%; background: #EEF8F1; color: #2B7D47; font-size: 24px; font-weight: 800; }
.dla-booking__success h3 { margin: 0; color: var(--dla-navy); font-size: 24px; line-height: 1.2; }
.dla-booking__success-summary { margin: 12px 0 6px; color: var(--dla-navy); font-weight: 750; }
.dla-booking__eyebrow { display: block; margin-bottom: 7px; color: var(--dla-navy); font-size: 10px; font-weight: 800; letter-spacing: 1.2px; text-transform: uppercase; }

/* Mode de rencontre */
.dla-booking__modes {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin: 0;
}
.dla-booking .dla-mode {
  min-width: 0;
  min-height: 44px;
  padding: 8px 10px;
  border: 1px solid var(--dla-line);
  border-radius: 8px;
  background: #fff;
  color: var(--dla-navy);
  box-shadow: none;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  font-size: 13px;
  font-weight: 750;
  cursor: pointer;
  transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
.dla-booking .dla-mode:hover { border-color: var(--dla-blue); background: var(--dla-light); }
.dla-booking .dla-mode.is-selected { border-color: var(--dla-navy); background: var(--dla-navy); color: #fff; }
.dla-mode__icon { width: 16px; height: 16px; flex: 0 0 16px; display: inline-flex; align-items: center; justify-content: center; color: currentColor; }
.dla-mode__icon svg { width: 16px; height: 16px; display: block; stroke: currentColor; fill: none; }

/* Structure calendrier + heures */
.dla-booking__body {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(300px, .92fr);
  gap: 18px;
  align-items: start;
}
.dla-calendar,
.dla-slots {
  min-width: 0;
  background: #fff;
  border: 1px solid var(--dla-line);
  border-radius: 14px;
  padding: 18px;
}
.dla-calendar__section-label,
.dla-slots__eyebrow {
  display: block;
  margin: 0 0 9px;
  color: #6F7C86;
  font-size: 10px;
  line-height: 1.2;
  font-weight: 800;
  letter-spacing: 1.05px;
  text-transform: uppercase;
}
.dla-calendar__nav {
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr) 36px;
  align-items: center;
  gap: 8px;
  margin-bottom: 12px;
}
.dla-calendar__nav strong {
  min-width: 0;
  text-align: center;
  color: var(--dla-navy);
  font-size: 16px;
  line-height: 1.2;
  font-weight: 800;
  text-transform: capitalize;
}
.dla-booking .dla-calendar__nav button {
  width: 36px;
  height: 36px;
  min-width: 36px;
  min-height: 36px;
  padding: 0;
  border: 1px solid var(--dla-line);
  border-radius: 50%;
  background: #fff;
  color: var(--dla-navy);
  box-shadow: none;
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
}
.dla-booking .dla-calendar__nav button:hover:not(:disabled) { border-color: var(--dla-blue); background: var(--dla-light); }
.dla-booking .dla-calendar__nav button:disabled { opacity: .28; cursor: default; }
.dla-calendar__weekdays,
.dla-calendar__grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 4px;
}
.dla-calendar__weekdays { margin-bottom: 4px; }
.dla-calendar__weekdays span {
  min-width: 0;
  text-align: center;
  color: #8A949C;
  font-size: 10px;
  line-height: 1;
  font-weight: 800;
  text-transform: uppercase;
}
.dla-booking .dla-day {
  width: 100%;
  min-width: 0;
  min-height: 40px;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  color: var(--dla-navy);
  box-shadow: none;
  font-size: 13px;
  line-height: 1;
  font-weight: 700;
  cursor: pointer;
  position: relative;
}
.dla-booking .dla-day.is-available { background: #fff; }
.dla-booking .dla-day.is-available:hover { border-color: #D7E3EC; background: var(--dla-light); }
.dla-booking .dla-day.is-selected,
.dla-booking .dla-day.is-selected:hover { border-color: var(--dla-navy); background: var(--dla-navy); color: #fff; }
.dla-booking .dla-day:disabled,
.dla-booking .dla-day.is-empty { border-color: transparent; background: transparent; color: #B2BAC0; cursor: default; }
.dla-day.is-blank { visibility: hidden; }
.dla-calendar__loading { padding: 24px 0; text-align: center; color: #7C8790; font-size: 12px; }

/* Heures */
.dla-slots { display: flex; flex-direction: column; }
.dla-slots__header { padding: 0 0 10px; border-bottom: 1px solid var(--dla-line); }
.dla-slots__header h4 {
  margin: 0;
  color: var(--dla-navy);
  font-size: 14px;
  line-height: 1.35;
  font-weight: 800;
  text-transform: none;
}
.dla-slots__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 7px;
  padding: 12px 0 0;
  align-content: start;
}
.dla-booking .dla-slot {
  min-width: 0;
  min-height: 42px;
  padding: 8px 6px;
  border: 1px solid var(--dla-line);
  border-radius: 8px;
  background: #fff;
  color: var(--dla-navy);
  box-shadow: none;
  font-size: 13px;
  font-weight: 750;
  cursor: pointer;
  transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
.dla-booking .dla-slot:hover { border-color: var(--dla-blue); background: var(--dla-light); }
.dla-booking .dla-slot.is-selected { border-color: var(--dla-blue); background: var(--dla-blue); color: #fff; }
.dla-slots__empty { grid-column: 1 / -1; padding: 12px; border-radius: 8px; background: var(--dla-pale); color: #77838D; font-size: 12px; line-height: 1.45; }

/* Résumé et confirmation */
.dla-booking__selection { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--dla-line); }
.dla-booking__selection > div { margin-bottom: 10px; }
.dla-booking__selection span { display: block; margin-bottom: 3px; color: #7C8790; font-size: 9px; line-height: 1.2; font-weight: 800; letter-spacing: .9px; text-transform: uppercase; }
.dla-booking__selection strong { display: block; color: var(--dla-navy); font-size: 13px; line-height: 1.4; font-weight: 750; }
.dla-booking .dla-booking__confirm {
  width: 100%;
  min-height: 46px;
  padding: 11px 14px;
  border: 0;
  border-radius: 8px;
  background: var(--dla-orange);
  color: #fff;
  box-shadow: none;
  font-size: 13px;
  font-weight: 800;
  cursor: pointer;
}
.dla-booking .dla-booking__confirm:hover:not(:disabled) { filter: brightness(.97); }
.dla-booking .dla-booking__confirm:disabled { opacity: .42; cursor: default; }
.dla-booking .dla-booking__confirm.is-loading { pointer-events: none; opacity: .7; }
.dla-booking__footer { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.dla-booking__footer span { padding: 5px 8px; border: 1px solid var(--dla-line); border-radius: 999px; background: var(--dla-pale); color: #65717B; font-size: 10px; line-height: 1; font-weight: 650; }
.dla-booking button:focus-visible { outline: 3px solid rgba(68,120,166,.25); outline-offset: 2px; }

/* Popup : un vrai petit calendrier compact dans la colonne de réservation. */
.dla-booking--popup { max-width: 100%; }
.dla-booking--popup .dla-booking__app { display: flex; flex-direction: column; gap: 14px; }
.dla-booking--popup .dla-booking__loading { padding: 14px 0; border: 0; background: transparent; }
.dla-booking--popup .dla-booking__body {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.dla-booking--popup .dla-calendar,
.dla-booking--popup .dla-slots {
  padding: 0;
  border: 0;
  border-radius: 0;
}
.dla-booking--popup .dla-slots { padding-top: 12px; border-top: 1px solid var(--dla-line); }
.dla-booking--popup .dla-booking__selection { margin-top: 12px; }
.dla-booking--popup .dla-booking__footer { margin-top: 0; }
.dla-booking--popup .dla-booking__error,
.dla-booking--popup .dla-booking__success { border-radius: 10px; box-shadow: none; }

/* Le shell du modèle Elementor garde le panneau bleu sur ordinateur et concentre le mobile sur la réservation. */
.dla-booking-popup-shell { overflow: hidden; }
.dla-booking-popup-reservation { min-width: 0; }

@media (max-width: 900px) {
  .dla-booking__body { grid-template-columns: 1fr; }
}

@media (max-width: 767px) {
  .dla-booking-popup-shell { max-height: 100dvh; overflow-y: auto; -webkit-overflow-scrolling: touch; }
  .dla-booking-popup-context { display: none !important; }
  .dla-booking-popup-reservation { width: 100% !important; min-height: 100%; justify-content: flex-start !important; }
  .dla-booking--popup .dla-booking__app { gap: 12px; }
  .dla-booking__modes { gap: 6px; }
  .dla-booking .dla-mode { min-height: 44px; padding: 8px 6px; font-size: 12px; }
  .dla-mode__icon, .dla-mode__icon svg { width: 15px; height: 15px; }
  .dla-calendar__nav { grid-template-columns: 34px minmax(0,1fr) 34px; margin-bottom: 10px; }
  .dla-booking .dla-calendar__nav button { width: 34px; height: 34px; min-width: 34px; min-height: 34px; }
  .dla-calendar__weekdays, .dla-calendar__grid { gap: 2px; }
  .dla-booking .dla-day { min-height: 38px; font-size: 12px; }
  .dla-slots__grid { grid-template-columns: repeat(3, minmax(0,1fr)); gap: 6px; }
  .dla-booking .dla-slot { min-height: 44px; font-size: 12px; }
  .dla-booking .dla-booking__confirm { min-height: 48px; }
}

@media (max-width: 420px) {
  .dla-slots__grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .dla-booking .dla-day { min-height: 36px; }
  .dla-calendar__weekdays span { font-size: 9px; }
}

/* ========================================================================== */
/* Elementor natif — réservation en composants séparés (v1.1.7)              */
/* ========================================================================== */
.dla-booking-reservation {
  --dla-navy: #082E50;
  --dla-blue: #4478A6;
  --dla-orange: #F28705;
  --dla-text: #434E58;
  --dla-line: #E6ECEF;
  --dla-pale: #F8F9FA;
  --dla-light: #F2F9FF;
}
.dla-booking-reservation *, .dla-booking-reservation *::before, .dla-booking-reservation *::after { box-sizing: border-box; }
.dla-booking-reservation button { font: inherit; }
.dla-split-kicker {
  margin: 0 0 8px;
  color: var(--dla-orange);
  font-size: 10px;
  font-weight: 800;
  line-height: 1.25;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.dla-split-modes {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 8px;
  width: 100%;
}
.dla-split-mode {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-width: 0;
  min-height: 44px;
  padding: 8px 12px;
  border: 1px solid var(--dla-line);
  border-radius: 6px;
  background: #fff;
  color: var(--dla-navy);
  font-size: 13px;
  font-weight: 700;
  line-height: 1;
  cursor: pointer;
  transition: background .15s ease,border-color .15s ease,color .15s ease;
}
.dla-split-mode.is-selected { background: var(--dla-navy); border-color: var(--dla-navy); color: #fff; }
.dla-split-mode__icon, .dla-split-mode__icon svg { width: 15px; height: 15px; display: block; flex: 0 0 15px; }
.dla-split-mode__icon svg { fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
@media (hover:hover) and (pointer:fine) { .dla-split-mode:not(.is-selected):hover { background: var(--dla-light); } }

.dla-split-calendar { width: 100%; }
.dla-split-calendar__nav {
  display: grid;
  grid-template-columns: 36px minmax(0,1fr) 36px;
  align-items: center;
  gap: 8px;
  margin: 0 0 10px;
}
.dla-split-calendar__nav button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  min-width: 36px;
  min-height: 36px;
  padding: 0;
  border: 1px solid var(--dla-line);
  border-radius: 50%;
  background: #fff;
  color: var(--dla-navy);
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
}
.dla-split-calendar__nav button:disabled { opacity: .28; cursor: default; }
.dla-split-calendar__month {
  display: block;
  min-width: 0;
  color: var(--dla-navy);
  font-size: 15px;
  font-weight: 800;
  line-height: 1.25;
  text-align: center;
  text-transform: capitalize;
}
.dla-split-calendar__weekdays,
.dla-split-calendar__grid {
  display: grid;
  grid-template-columns: repeat(7,minmax(0,1fr));
  gap: 4px;
  width: 100%;
}
.dla-split-calendar__weekdays { margin-bottom: 4px; }
.dla-split-calendar__weekdays span {
  min-width: 0;
  color: #7E8A94;
  font-size: 10px;
  font-weight: 800;
  line-height: 1;
  text-align: center;
}
.dla-split-day {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  min-height: 38px;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 6px;
  background: transparent;
  color: var(--dla-navy);
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
}
button.dla-split-day { cursor: pointer; }
.dla-split-day.is-available { border-color: var(--dla-line); background: #fff; }
.dla-split-day.is-empty { color: #A9B3BC; background: var(--dla-pale); opacity: .75; }
.dla-split-day.is-selected { border-color: var(--dla-navy); background: var(--dla-navy); color: #fff; }
.dla-split-day.is-blank { border: 0; background: transparent; }
@media (hover:hover) and (pointer:fine) { button.dla-split-day.is-available:not(.is-selected):hover { background: var(--dla-light); } }
.dla-split-calendar__loading { grid-column: 1/-1; padding: 18px 0; color: #7E8A94; font-size: 12px; text-align: center; }

.dla-split-slots { width: 100%; }
.dla-split-slots__date {
  margin: 0 0 10px;
  color: var(--dla-navy);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.35;
  text-transform: none;
}
.dla-split-slots__grid {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 7px;
  width: 100%;
}
.dla-split-slot {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  min-height: 40px;
  padding: 6px 8px;
  border: 1px solid var(--dla-line);
  border-radius: 6px;
  background: #fff;
  color: var(--dla-navy);
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  cursor: pointer;
}
.dla-split-slot.is-selected { border-color: var(--dla-blue); background: var(--dla-blue); color: #fff; }
@media (hover:hover) and (pointer:fine) { .dla-split-slot:not(.is-selected):hover { background: var(--dla-light); } }
.dla-split-slots__empty { grid-column: 1/-1; padding: 12px; border: 1px solid var(--dla-line); background: var(--dla-pale); color: var(--dla-text); font-size: 12px; }

.dla-split-summary {
  display: grid;
  gap: 4px;
  width: 100%;
  padding: 12px;
  border: 1px solid var(--dla-line);
  border-radius: 6px;
  background: var(--dla-pale);
}
.dla-split-summary .dla-split-kicker { margin: 0; }
.dla-split-summary__text { color: var(--dla-navy); font-size: 12px; font-weight: 700; line-height: 1.4; }

.dla-split-confirm {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 48px;
  padding: 10px 16px;
  border: 0;
  border-radius: 6px;
  background: var(--dla-orange);
  color: #fff;
  font-size: 13px;
  font-weight: 800;
  line-height: 1.15;
  cursor: pointer;
}
.dla-split-confirm:disabled { opacity: .46; cursor: default; }
.dla-split-confirm.is-loading { opacity: .72; cursor: wait; }

.dla-split-status__error,
.dla-split-status__success {
  width: 100%;
  padding: 16px;
  border: 1px solid var(--dla-line);
  border-radius: 6px;
  background: #fff;
  color: var(--dla-navy);
  font-size: 13px;
  line-height: 1.5;
}
.dla-split-status__success { background: var(--dla-light); }
.dla-split-status__success p { margin: 6px 0 0; }
.dla-booking-reservation.is-booked .dla-reservation-ui { display: none !important; }
.dla-booking-reservation.is-booked .dla-reservation-status { display: block !important; }
.dla-reservation-status { display: none; }

@media (max-width: 1024px) {
  .dla-split-calendar__nav { grid-template-columns: 34px minmax(0,1fr) 34px; }
  .dla-split-calendar__nav button { width: 34px; height: 34px; min-width: 34px; min-height: 34px; }
  .dla-split-slots__grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
}
@media (max-width: 767px) {
  .dla-booking-popup-shell { overflow-y: auto; -webkit-overflow-scrolling: touch; }
  .dla-booking-popup-context { display: none !important; }
  .dla-booking-popup-reservation { width: 100% !important; min-height: 0 !important; }
  .dla-split-mode { min-height: 46px; font-size: 13px; }
  .dla-split-calendar__nav button { width: 40px; height: 40px; min-width: 40px; min-height: 40px; }
  .dla-split-day { min-height: 42px; font-size: 13px; }
  .dla-split-slots__grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .dla-split-slot { min-height: 46px; font-size: 13px; }
  .dla-split-confirm { min-height: 50px; font-size: 14px; }
}
@media (max-width: 360px) {
  .dla-split-modes { grid-template-columns: 1fr; }
  .dla-split-calendar__weekdays, .dla-split-calendar__grid { gap: 2px; }
  .dla-split-day { min-height: 38px; font-size: 12px; }
}
