/* RDV Cannes — APASER / CINÉMALAGASY
   Surcouche graphique non destructive. */

:root {
  --rdv-ivory: #f6efe4;
  --rdv-ivory-soft: #fbf7ef;
  --rdv-graphite: #202124;
  --rdv-graphite-soft: #3b3b3b;
  --rdv-red: #8b1e2d;
  --rdv-red-dark: #651421;
  --rdv-gold: #c5a15a;
  --rdv-gold-soft: rgba(197, 161, 90, .28);
  --rdv-border: rgba(32, 33, 36, .12);
  --rdv-shadow: 0 24px 70px rgba(32, 33, 36, .16);
}

html,
body {
  min-height: 100%;
}

body {
  color: var(--rdv-graphite);
  background:
    radial-gradient(circle at 12% 8%, rgba(139, 30, 45, .08), transparent 28%),
    radial-gradient(circle at 88% 16%, rgba(197, 161, 90, .16), transparent 30%),
    linear-gradient(135deg, var(--rdv-ivory) 0%, var(--rdv-ivory-soft) 48%, #efe4d3 100%) !important;
  font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;
}

body::before,
body::after {
  content: '';
  position: fixed;
  top: 0;
  width: 88px;
  height: 100vh;
  pointer-events: none;
  opacity: .36;
  z-index: 0;
  background-image:
    linear-gradient(180deg, transparent, rgba(139, 30, 45, .16), transparent),
    repeating-linear-gradient(135deg, rgba(197, 161, 90, .36) 0 1px, transparent 1px 16px);
}

body::before {
  left: 0;
}

body::after {
  right: 0;
  transform: scaleX(-1);
}

#main {
  position: relative;
  z-index: 1;
}

#book-appointment-wizard {
  max-width: 1120px;
  margin: 46px auto 36px !important;
  border: 1px solid var(--rdv-border);
  border-radius: 28px;
  overflow: hidden;
  background: rgba(255, 252, 246, .92);
  box-shadow: var(--rdv-shadow);
  backdrop-filter: blur(10px);
}

#book-appointment-wizard .booking-header-bar {
  background:
    linear-gradient(135deg, var(--rdv-graphite) 0%, #2c2525 45%, var(--rdv-red-dark) 100%) !important;
  color: #fff !important;
  border-bottom: 3px solid var(--rdv-gold);
  padding: 28px 34px !important;
}

#book-appointment-wizard .booking-header-bar h1,
#book-appointment-wizard .booking-header-bar h2,
#book-appointment-wizard .booking-header-bar h3,
#book-appointment-wizard .booking-header-bar .company-name,
#book-appointment-wizard .booking-header-bar a {
  color: #fff !important;
}

#book-appointment-wizard .booking-header-bar::after {
  content: 'Cannes 2026 · APASER · CINÉMALAGASY';
  display: inline-block;
  margin-top: 10px;
  padding: 6px 12px;
  border: 1px solid rgba(197, 161, 90, .55);
  border-radius: 999px;
  color: #f7e8c6;
  font-size: 12px;
  letter-spacing: .12em;
  text-transform: uppercase;
}

#book-appointment-wizard .wizard-frame,
#book-appointment-wizard .wizard-content,
#book-appointment-wizard .book-step {
  background: transparent !important;
}

#book-appointment-wizard .wizard-frame {
  padding: 30px 34px 34px;
}

#book-appointment-wizard .wizard-steps {
  border-right: 1px solid rgba(32, 33, 36, .10);
}

#book-appointment-wizard .wizard-steps .wizard-step {
  border-radius: 16px;
  margin-bottom: 10px;
  color: var(--rdv-graphite-soft);
  transition: all .18s ease;
}

#book-appointment-wizard .wizard-steps .wizard-step.active,
#book-appointment-wizard .wizard-steps .wizard-step:hover {
  background: rgba(139, 30, 45, .08);
  color: var(--rdv-red);
}

#book-appointment-wizard label,
#book-appointment-wizard .form-label {
  color: var(--rdv-graphite);
  font-weight: 650;
}

#book-appointment-wizard .form-control,
#book-appointment-wizard .form-select,
#book-appointment-wizard textarea {
  border: 1px solid rgba(32, 33, 36, .18);
  border-radius: 14px;
  background-color: rgba(255, 255, 255, .86);
  box-shadow: none;
}

#book-appointment-wizard .form-control:focus,
#book-appointment-wizard .form-select:focus,
#book-appointment-wizard textarea:focus {
  border-color: var(--rdv-red);
  box-shadow: 0 0 0 .22rem rgba(139, 30, 45, .13);
}

#book-appointment-wizard .btn-primary,
#book-appointment-wizard #book-appointment-submit {
  border: 1px solid var(--rdv-red) !important;
  border-radius: 999px;
  background:
    linear-gradient(135deg, var(--rdv-red), var(--rdv-red-dark)) !important;
  color: #fff !important;
  font-weight: 700;
  letter-spacing: .01em;
  padding: 10px 22px;
  box-shadow: 0 10px 24px rgba(139, 30, 45, .22);
}

#book-appointment-wizard .btn-primary:hover,
#book-appointment-wizard #book-appointment-submit:hover {
  transform: translateY(-1px);
  box-shadow: 0 14px 30px rgba(139, 30, 45, .28);
}

#book-appointment-wizard #available-hours .available-hour {
  border-radius: 999px !important;
  border: 1px solid rgba(139, 30, 45, .22) !important;
  background: #fffaf3 !important;
  color: var(--rdv-red) !important;
  font-weight: 700;
  margin: 5px;
  transition: all .16s ease;
}

#book-appointment-wizard #available-hours .available-hour:hover,
#book-appointment-wizard #available-hours .selected-hour {
  background: var(--rdv-red) !important;
  border-color: var(--rdv-red) !important;
  color: #fff !important;
  box-shadow: 0 10px 20px rgba(139, 30, 45, .22);
}

#book-appointment-wizard .flatpickr-calendar,
.flatpickr-calendar {
  border-radius: 20px !important;
  box-shadow: 0 18px 45px rgba(32, 33, 36, .18) !important;
}

#book-appointment-wizard .text-muted,
#book-appointment-wizard small {
  color: rgba(32, 33, 36, .62) !important;
}

#book-appointment-wizard .alert {
  border-radius: 18px;
}

footer,
#booking-footer {
  color: rgba(32, 33, 36, .58);
}

@media (max-width: 768px) {
  body::before,
  body::after {
    width: 28px;
    opacity: .18;
  }

  #book-appointment-wizard {
    margin: 18px 12px 26px !important;
    border-radius: 22px;
  }

  #book-appointment-wizard .booking-header-bar {
    padding: 24px 22px !important;
  }

  #book-appointment-wizard .wizard-frame {
    padding: 22px 18px 26px;
  }
}

/* Header institutionnel APASER / RFC */
#book-appointment-wizard #header.rdv-cannes-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
  min-height: 188px;
}

#book-appointment-wizard #company-name.rdv-cannes-brandline {
  display: flex !important;
  align-items: center;
  gap: 24px;
  min-width: 0;
}

#book-appointment-wizard .rdv-logo-lockup {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  flex: 0 0 auto;
  min-width: 178px;
  min-height: 92px;
  padding: 14px 18px;
  border: 1px solid rgba(197, 161, 90, .56);
  border-radius: 22px;
  background:
    linear-gradient(135deg, rgba(255, 252, 246, .98), rgba(246, 239, 228, .90));
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.75),
    0 16px 34px rgba(32, 33, 36, .16);
}

#book-appointment-wizard .rdv-brand-logo {
  display: block;
  max-width: 78px;
  max-height: 58px;
  width: auto;
  height: auto;
  object-fit: contain;
}

#book-appointment-wizard .rdv-brand-logo-rfc {
  max-width: 70px;
}

#book-appointment-wizard .rdv-logo-separator {
  width: 1px;
  height: 48px;
  background: linear-gradient(180deg, transparent, rgba(139, 30, 45, .35), transparent);
}

#book-appointment-wizard .rdv-title-block {
  min-width: 0;
}

#book-appointment-wizard .rdv-main-title {
  display: block;
  color: #fff !important;
  font-size: clamp(30px, 3.1vw, 48px);
  line-height: 1.08;
  font-weight: 300;
  letter-spacing: .01em;
}

#book-appointment-wizard .rdv-subtitle {
  display: inline-block;
  margin-top: 12px;
  color: #ff7590 !important;
  border-right: 0 !important;
  filter: none !important;
  font-size: clamp(17px, 1.8vw, 26px);
  line-height: 1.25;
  font-weight: 700;
  letter-spacing: .045em;
}

#book-appointment-wizard #company-logo {
  display: none !important;
}

@media (max-width: 992px) {
  #book-appointment-wizard #header.rdv-cannes-header {
    flex-direction: column;
    align-items: flex-start;
    min-height: auto;
  }

  #book-appointment-wizard #company-name.rdv-cannes-brandline {
    width: 100%;
  }

  #book-appointment-wizard #steps {
    align-self: flex-end;
  }
}

@media (max-width: 640px) {
  #book-appointment-wizard #company-name.rdv-cannes-brandline {
    flex-direction: column;
    align-items: flex-start;
    gap: 16px;
  }

  #book-appointment-wizard .rdv-logo-lockup {
    min-width: 150px;
    min-height: 78px;
    padding: 12px 14px;
  }

  #book-appointment-wizard .rdv-brand-logo {
    max-width: 64px;
    max-height: 48px;
  }

  #book-appointment-wizard .rdv-main-title {
    font-size: 28px;
  }

  #book-appointment-wizard .rdv-subtitle {
    font-size: 16px;
    letter-spacing: .02em;
  }
}

/* Sous-titre Cannes sur une seule ligne desktop */
#book-appointment-wizard .rdv-subtitle {
  white-space: nowrap;
  max-width: 100%;
}

@media (max-width: 720px) {
  #book-appointment-wizard .rdv-subtitle {
    white-space: normal;
  }
}

/* Lieu choisi dans la page de confirmation */
#rdv-confirm-location {
  padding: 14px 16px;
  border: 1px solid rgba(139, 30, 45, .16);
  border-radius: 16px;
  background: rgba(139, 30, 45, .045);
}

#rdv-confirm-location .fw-bold {
  color: #8B1E2D;
  font-size: 1rem !important;
}

/* Visual markers for Cannes booking calendar */
td.rdv-day-booked,
td.rdv-day-partial {
  position: relative;
  overflow: visible !important;
}

td.rdv-day-booked {
  text-decoration: line-through;
  text-decoration-thickness: 2px;
  text-decoration-color: #8B1E2D;
  opacity: 0.9;
}

td.rdv-day-booked .rdv-day-badge,
td.rdv-day-partial .rdv-day-badge {
  position: absolute;
  left: 50%;
  bottom: 2px;
  transform: translateX(-50%);
  font-size: 8px;
  line-height: 1;
  padding: 2px 4px;
  border-radius: 999px;
  white-space: nowrap;
  font-weight: 700;
  letter-spacing: .03em;
  z-index: 5;
}

td.rdv-day-booked .rdv-day-badge {
  background: #8B1E2D;
  color: #fff;
}

td.rdv-day-partial .rdv-day-badge {
  background: #d8b26a;
  color: #4a2d00;
}

.rdv-calendar-legend {
  margin-top: 12px;
  display: flex;
  gap: 18px;
  align-items: center;
  flex-wrap: wrap;
  font-size: 14px;
  color: #5a5a5a;
}

.rdv-legend-item {
  display: flex;
  align-items: center;
  gap: 8px;
}

.rdv-legend-dot {
  width: 12px;
  height: 12px;
  border-radius: 999px;
  display: inline-block;
}

.rdv-legend-booked {
  background: #8B1E2D;
}

.rdv-legend-partial {
  background: #d8b26a;
}

/* Calendar availability markers — Cannes 2026 */
#rdv-calendar-info {
  margin: 0 auto 24px;
  max-width: 980px;
  padding: 14px 18px;
  border: 1px solid rgba(139, 30, 45, .18);
  border-radius: 18px;
  background: rgba(139, 30, 45, .055);
  color: #3b3b3b;
  font-size: 15px;
  line-height: 1.55;
}

#rdv-calendar-info strong {
  color: #8B1E2D;
}

.flatpickr-day.rdv-day-full-disabled {
  color: #d8d8d8 !important;
  background: transparent !important;
  border-color: transparent !important;
  cursor: not-allowed !important;
  pointer-events: none !important;
  box-shadow: none !important;
  opacity: .78 !important;
}

.flatpickr-day.rdv-day-booked,
.flatpickr-day.rdv-day-unavailable {
  text-decoration: line-through;
  text-decoration-thickness: 2px;
  text-decoration-color: rgba(139, 30, 45, .7);
}

.flatpickr-day.rdv-day-partial {
  color: #8B1E2D !important;
  border-color: rgba(216, 178, 106, .75) !important;
  background: rgba(216, 178, 106, .14) !important;
  box-shadow: inset 0 0 0 1px rgba(216, 178, 106, .38);
}

.flatpickr-day.rdv-day-booked::after,
.flatpickr-day.rdv-day-unavailable::after,
.flatpickr-day.rdv-day-partial::after {
  content: attr(data-rdv-note);
  position: absolute;
  left: 50%;
  bottom: 2px;
  transform: translateX(-50%);
  display: block;
  padding: 2px 4px;
  border-radius: 999px;
  font-size: 7px;
  line-height: 1;
  font-weight: 800;
  letter-spacing: .02em;
  white-space: nowrap;
  pointer-events: none;
}

.flatpickr-day.rdv-day-booked::after {
  background: #8B1E2D;
  color: #fff;
}

.flatpickr-day.rdv-day-unavailable::after {
  background: #d7d7d7;
  color: #555;
}

.flatpickr-day.rdv-day-partial::after {
  background: #d8b26a;
  color: #402600;
}

.flatpickr-day.rdv-day-booked.selected,
.flatpickr-day.rdv-day-unavailable.selected {
  background: transparent !important;
  color: #d8d8d8 !important;
}

.rdv-calendar-legend {
  margin: 18px auto 0;
  max-width: 980px;
  display: flex;
  gap: 18px;
  align-items: center;
  flex-wrap: wrap;
  font-size: 14px;
  color: #5a5a5a;
}

.rdv-legend-item {
  display: flex;
  align-items: center;
  gap: 8px;
}

.rdv-legend-dot {
  width: 12px;
  height: 12px;
  border-radius: 999px;
  display: inline-block;
}

.rdv-legend-unavailable {
  background: #d7d7d7;
}

.rdv-legend-booked {
  background: #8B1E2D;
}

.rdv-legend-partial {
  background: #d8b26a;
}

/* Remove calendar info box: dates now carry the visual booking status */
#rdv-calendar-info {
  display: none !important;
}

/* Date limits: Cannes meetings are available only May 13–23 */
.flatpickr-day.rdv-day-full-disabled {
  color: #d8d8d8 !important;
  background: transparent !important;
  border-color: transparent !important;
  cursor: not-allowed !important;
  pointer-events: none !important;
  box-shadow: none !important;
  opacity: .78 !important;
}

.flatpickr-day.rdv-day-outside,
.flatpickr-day.rdv-day-booked {
  text-decoration: line-through;
  text-decoration-thickness: 2px;
  text-decoration-color: rgba(139, 30, 45, .7);
}

.flatpickr-day.rdv-day-partial {
  color: #8B1E2D !important;
  border-color: rgba(216, 178, 106, .75) !important;
  background: rgba(216, 178, 106, .14) !important;
  box-shadow: inset 0 0 0 1px rgba(216, 178, 106, .38);
}

.flatpickr-day.rdv-day-outside::after,
.flatpickr-day.rdv-day-booked::after,
.flatpickr-day.rdv-day-partial::after {
  content: attr(data-rdv-note);
  position: absolute;
  left: 50%;
  bottom: 2px;
  transform: translateX(-50%);
  display: block;
  padding: 2px 4px;
  border-radius: 999px;
  font-size: 7px;
  line-height: 1;
  font-weight: 800;
  letter-spacing: .02em;
  white-space: nowrap;
  pointer-events: none;
}

.flatpickr-day.rdv-day-outside::after {
  background: #d7d7d7;
  color: #555;
}

.flatpickr-day.rdv-day-booked::after {
  background: #8B1E2D;
  color: #fff;
}

.flatpickr-day.rdv-day-partial::after {
  background: #d8b26a;
  color: #402600;
}

.rdv-legend-outside {
  background: #d7d7d7;
}

/* Final visual refinement for Cannes calendar */
.flatpickr-day.rdv-day-outside {
  color: #cfcfcf !important;
  background: transparent !important;
  border-color: transparent !important;
  cursor: not-allowed !important;
  pointer-events: none !important;
  box-shadow: none !important;
  opacity: .75 !important;
  text-decoration: line-through !important;
  text-decoration-thickness: 2px !important;
  text-decoration-color: rgba(139, 30, 45, .85) !important;
}

.flatpickr-day.rdv-day-outside::after {
  content: "" !important;
  display: none !important;
}

.flatpickr-day.rdv-day-booked {
  color: #8B1E2D !important;
  background: rgba(139, 30, 45, .06) !important;
  border-color: rgba(139, 30, 45, .18) !important;
  cursor: not-allowed !important;
  pointer-events: none !important;
  box-shadow: inset 0 0 0 1px rgba(139, 30, 45, .14) !important;
  opacity: 1 !important;
  text-decoration: none !important;
}

.flatpickr-day.rdv-day-booked::after {
  content: attr(data-rdv-note) !important;
  position: absolute !important;
  left: 50% !important;
  bottom: 2px !important;
  transform: translateX(-50%) !important;
  display: block !important;
  padding: 2px 4px !important;
  border-radius: 999px !important;
  background: #8B1E2D !important;
  color: #fff !important;
  font-size: 7px !important;
  line-height: 1 !important;
  font-weight: 800 !important;
  letter-spacing: .02em !important;
  white-space: nowrap !important;
  pointer-events: none !important;
}

.flatpickr-day.rdv-day-partial {
  color: #8B1E2D !important;
  border-color: rgba(216, 178, 106, .75) !important;
  background: rgba(216, 178, 106, .14) !important;
  box-shadow: inset 0 0 0 1px rgba(216, 178, 106, .38) !important;
  text-decoration: none !important;
}

.flatpickr-day.rdv-day-partial::after {
  content: attr(data-rdv-note) !important;
  position: absolute !important;
  left: 50% !important;
  bottom: 2px !important;
  transform: translateX(-50%) !important;
  display: block !important;
  padding: 2px 4px !important;
  border-radius: 999px !important;
  background: #d8b26a !important;
  color: #402600 !important;
  font-size: 7px !important;
  line-height: 1 !important;
  font-weight: 800 !important;
  letter-spacing: .02em !important;
  white-space: nowrap !important;
  pointer-events: none !important;
}
