/* =========================================================
   FLATPICKR - FEUILLE ROBUSTE PERSONNALISÉE (VERSION NETTOYÉE)
   - Variables
   - Grille stable
   - Module lundi (.is-monday-slot)
   - Badges créneaux
   - Thèmes clair / sombre / high contrast
   - Responsive + compact
   ========================================================= */

/* ------------------------------
   VARIABLES GLOBALES
   ------------------------------ */
:root {
  /* Couleurs thème clair */
  --fp-color-bg:        #ffffff;
  --fp-color-bg-alt:    #f4f6f7;
  --fp-color-bg-inset:  #eceff1;
  --fp-color-border:    #d2d7dc;
  --fp-color-text:      #253036;
  --fp-color-text-soft: #6a7680;
  --fp-color-accent:    #2a9d8f;
  --fp-color-accent-alt:#17897e;
  --fp-color-slot:      #38d39f;
  --fp-color-slot-hover:#20b87a;
  --fp-color-selected:      #007bff;
  --fp-color-selected-alt:  #38b37a;
  --fp-color-disabled:  #c5cbd0;

  /* Ombres / angles */
  --fp-shadow: 0 6px 28px -4px rgba(0 0 0 / .22),
               0 2px 8px -2px rgba(0 0 0 / .15);
  --fp-radius-xl: 18px;
  --fp-radius-sm: 6px;

  /* Dimensions */
  --fp-cell-size: 46px;
  --fp-cell-size-mobile: 38px;
  --fp-cell-size-compact: 34px;
  --fp-gap: 8px;
  --fp-gap-mobile: 6px;
  --fp-padding-x: 10px;
  --fp-padding-y: 12px;
  --fp-weekday-font-size: 10px;
  --fp-day-font-size: 13px;
  --fp-transition: .18s cubic-bezier(.4,0,.2,1);
  --fp-focus-ring: 0 0 0 3px rgba(42 157 143 / .45);

  /* Alias */
  --fp-bg: var(--fp-color-bg);
  --fp-bg-alt: var(--fp-color-bg-alt);
  --fp-bg-inset: var(--fp-color-bg-inset);
  --fp-border: var(--fp-color-border);
  --fp-text: var(--fp-color-text);
  --fp-text-soft: var(--fp-color-text-soft);
  --fp-accent: var(--fp-color-accent);
  --fp-accent-alt: var(--fp-color-accent-alt);
  --fp-slot: var(--fp-color-slot);
  --fp-slot-hover: var(--fp-color-slot-hover);
  --fp-selected: var(--fp-color-selected);
  --fp-selected-alt: var(--fp-color-selected-alt);
  --fp-disabled: var(--fp-color-disabled);

  /* Badges */
  --fp-badge-bg: #0d6efd;
  --fp-badge-color: #fff;
  --fp-badge-bg-monday: #ffffff;
  --fp-badge-color-monday: #138f68;
}

/* Préférence dark */
@media (prefers-color-scheme: dark) {
  :root:not(.force-light) {
    --fp-color-bg:        #1f2427;
    --fp-color-bg-alt:    #272e33;
    --fp-color-bg-inset:  #2e363b;
    --fp-color-border:    #3d454b;
    --fp-color-text:      #e2e7ea;
    --fp-color-text-soft: #92a1aa;
    --fp-color-disabled:  #3a4349;
    --fp-shadow: 0 10px 36px -6px rgba(0 0 0 / .55),
                 0 3px 10px -2px rgba(0 0 0 / .35);
  }
}

/* High contrast */
.high-contrast {
  --fp-color-slot: #1f955f;
  --fp-color-slot-hover: #15774b;
  --fp-color-accent: #179ed1;
  --fp-focus-ring: 0 0 0 3px rgba(23 158 209 / .55);
}

/* Mode compact déclenché par .fp-compact */
.flatpickr-calendar.fp-compact {
  --fp-cell-size: var(--fp-cell-size-compact);
  --fp-gap: 6px;
  --fp-day-font-size: 12px;
  --fp-weekday-font-size: 9px;
  --fp-padding-x: 8px;
  --fp-padding-y: 10px;
}

/* ------------------------------
   CALENDAR CONTAINER
   ------------------------------ */
.flatpickr-calendar {
  background: var(--fp-bg);
  color: var(--fp-text);
  border: 1px solid var(--fp-border);
  border-radius: var(--fp-radius-xl);
  box-shadow: var(--fp-shadow);
  font-size: var(--fp-day-font-size);
  position: absolute;
  z-index: 300;
  padding: 10px var(--fp-padding-x) var(--fp-padding-y);
  box-sizing: border-box;
  text-align: center;
  width: auto;
  max-width: 100%;
  min-width: 320px;
  opacity: 0;
  transform: translateY(-8px);
  transition: opacity var(--fp-transition), transform var(--fp-transition);
  will-change: opacity, transform;
}
.flatpickr-calendar.open {
  opacity: 1;
  transform: translateY(0);
}
.flatpickr-calendar.inline {
  position: static;
  opacity: 1;
  transform: none;
  box-shadow: none;
}

/* ------------------------------
   NAV / MOIS
   ------------------------------ */
.flatpickr-months {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 4px 0 6px;
  margin: 0 0 4px;
  user-select: none;
}
.flatpickr-current-month {
  display: flex;
  align-items: center;
  gap: 8px;
}
.flatpickr-prev-month,
.flatpickr-next-month {
  width: 30px;
  height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--fp-accent);
  border-radius: var(--fp-radius-sm);
  cursor: pointer;
  transition: background var(--fp-transition), color var(--fp-transition);
}
.flatpickr-prev-month:hover,
.flatpickr-next-month:hover {
  background: var(--fp-bg-alt);
  color: var(--fp-accent-alt);
}
.flatpickr-prev-month:focus-visible,
.flatpickr-next-month:focus-visible {
  outline: none;
  box-shadow: var(--fp-focus-ring);
}
.flatpickr-monthDropdown-months,
.flatpickr-current-month .numInputWrapper input.cur-year {
  font-size: 13px;
  height: 28px;
  padding: 2px 6px;
  border: 1px solid var(--fp-border);
  border-radius: var(--fp-radius-sm);
  background: #fff;
  color: #222;
  font-weight: 500;
  line-height: 1.2;
  transition: border var(--fp-transition), box-shadow var(--fp-transition);
}
.theme-dark .flatpickr-monthDropdown-months,
.theme-dark .flatpickr-current-month .numInputWrapper input.cur-year {
  background: var(--fp-bg-inset);
  color: var(--fp-text);
}
.flatpickr-monthDropdown-months:focus,
.flatpickr-current-month .numInputWrapper input.cur-year:focus {
  outline: none;
  border-color: var(--fp-accent);
  box-shadow: var(--fp-focus-ring);
}
.flatpickr-current-month .numInputWrapper {
  display: flex;
  align-items: center;
  height: 28px;
}
.flatpickr-current-month .numInputWrapper .arrowUp,
.flatpickr-current-month .numInputWrapper .arrowDown { display: none; }

/* ------------------------------
   WEEKDAYS
   ------------------------------ */
.flatpickr-weekdays { padding: 4px 0 2px; margin: 0 0 4px; }
.flatpickr-weekdaycontainer {
  display: grid;
  grid-template-columns: repeat(7, minmax(0,1fr));
  gap: var(--fp-gap);
}
.flatpickr-weekday {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--fp-weekday-font-size);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--fp-accent);
  user-select: none;
}

/* ------------------------------
   DAYS GRID
   ------------------------------ */
.dayContainer {
  display: grid;
  grid-template-columns: repeat(7, var(--fp-cell-size));
  justify-content: center;
  gap: var(--fp-gap);
  padding: 4px 0 10px;
  overflow: hidden;
}
.flatpickr-days { width: 100%; }

/* ------------------------------
   DAY CELL
   ------------------------------ */
.flatpickr-day {
  position: relative;
  width: var(--fp-cell-size);
  height: var(--fp-cell-size);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--fp-day-font-size);
  font-weight: 500;
  background: var(--fp-bg-inset);
  color: var(--fp-text);
  border-radius: 50%;
  cursor: pointer;
  border: 2px solid transparent;
  line-height: 1;
  margin: 0;
  transition: background var(--fp-transition), color var(--fp-transition),
              transform var(--fp-transition), box-shadow var(--fp-transition);
  box-sizing: border-box;
}
.flatpickr-day:hover { background: var(--fp-bg-alt); }
.flatpickr-day:focus-visible {
  outline: none;
  box-shadow: var(--fp-focus-ring);
}

/* Other months */
.flatpickr-day.prevMonthDay,
.flatpickr-day.nextMonthDay {
  opacity: .38;
  font-weight: 400;
}

/* Disabled */
.flatpickr-day.disabled,
.flatpickr-day.notAllowed,
.flatpickr-day.flatpickr-disabled {
  background: var(--fp-disabled);
  color: var(--fp-text-soft);
  cursor: not-allowed;
  box-shadow: none;
}
.flatpickr-day.disabled:hover { background: var(--fp-disabled); }

/* Slots */
.flatpickr-day.has-slot {
  background: var(--fp-slot);
  color: #fff;
  font-weight: 600;
}
.flatpickr-day.has-slot:hover {
  background: var(--fp-slot-hover);
  box-shadow: 0 0 0 4px rgba(56 211 159 / .25);
}

/* Monday slot (script adds .is-monday-slot) */
.flatpickr-day.is-monday-slot {
  background: var(--fp-slot);
  color: #fff;
  font-weight: 600;
}
.flatpickr-day.is-monday-slot:hover {
  background: var(--fp-slot-hover);
  box-shadow: 0 0 0 4px rgba(56 211 159 / .25);
}

/* Selected */
.flatpickr-day.selected.has-slot,
.flatpickr-day.is-monday-slot.selected {
  background: var(--fp-selected-alt);
  border-color: #2e8e5f;
  color: #fff;
}
.flatpickr-day.selected {
  background: var(--fp-selected);
  color: #fff;
  font-weight: 600;
  border-color: #1c589f;
}

/* Today */
.flatpickr-day.today:not(.selected):not(.has-slot):not(.is-monday-slot) {
  background: var(--fp-bg-alt);
  box-shadow: 0 0 0 2px var(--fp-accent) inset;
  font-weight: 600;
}

/* Hover lift */
.flatpickr-day:not(.disabled):hover { transform: translateY(-2px); }

/* Range support */
.flatpickr-day.inRange {
  background: #164e56;
  color: #fff;
  opacity: .9;
}
.flatpickr-day.startRange,
.flatpickr-day.endRange {
  box-shadow: 0 0 0 3px rgba(255 255 255 / .3);
}

/* ------------------------------
   BADGES CRENEAUX
   ------------------------------ */
.flatpickr-day .slot-badge {
  position: absolute;
  bottom: 3px;
  right: 3px;
  min-width: 18px;
  height: 18px;
  padding: 0 6px;
  border-radius: 12px;
  background: var(--fp-badge-bg);
  color: var(--fp-badge-color);
  font-size: 10px;
  font-weight: 600;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  letter-spacing: .5px;
  pointer-events: none;
  box-shadow: 0 0 0 2px rgba(0 0 0 / .15);
}
.flatpickr-day.has-slot.is-monday-slot .slot-badge,
.flatpickr-day.is-monday-slot .slot-badge {
  background: var(--fp-badge-bg-monday);
  color: var(--fp-badge-color-monday);
  box-shadow: 0 0 0 2px rgba(0 0 0 / .25);
}

/* ------------------------------
   ANIMATIONS
   ------------------------------ */
.flatpickr-calendar.animate.open { animation: fpFadeIn .22s cubic-bezier(.23,1,.32,1); }
@keyframes fpFadeIn {
  from { opacity: 0; transform: translateY(-12px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ------------------------------
   HIGH CONTRAST
   ------------------------------ */
.high-contrast .flatpickr-day.has-slot,
.high-contrast .flatpickr-day.is-monday-slot {
  background: #1f955f;
}
.high-contrast .flatpickr-day.has-slot:hover,
.high-contrast .flatpickr-day.is-monday-slot:hover {
  background: #16774b;
}
.high-contrast .flatpickr-weekday { color: #88ecd4; }
.high-contrast .flatpickr-prev-month,
.high-contrast .flatpickr-next-month { color: #26b39a; }

/* ------------------------------
   THEME DARK (.theme-dark force)
   ------------------------------ */
.theme-dark .flatpickr-calendar {
  --fp-bg: #1f2427;
  --fp-bg-alt: #272e2f;
  --fp-bg-inset: #2b3338;
  --fp-border: #3f474d;
  --fp-text: #dde2e5;
  --fp-text-soft: #96a1a9;
  --fp-disabled: #3a4349;
  --fp-shadow: 0 10px 36px -6px rgba(0 0 0 / .50),
               0 3px 10px -2px rgba(0 0 0 / .35);
}
.theme-dark .flatpickr-day { background: #2c3237; }
.theme-dark .flatpickr-day:hover { background: #394147; }
.theme-dark .flatpickr-day.disabled {
  background: #3a4449;
  color: #7d8a92;
}
.theme-dark .flatpickr-day.today:not(.selected):not(.has-slot):not(.is-monday-slot) {
  background: #344148;
}

/* ------------------------------
   REDUCED MOTION
   ------------------------------ */
@media (prefers-reduced-motion: reduce) {
  .flatpickr-calendar,
  .flatpickr-day {
    transition: none !important;
    animation: none !important;
  }
}

/* ------------------------------
   RESPONSIVE
   ------------------------------ */
@media (max-width: 640px) {
  :root {
    --fp-cell-size: var(--fp-cell-size-mobile);
    --fp-gap: var(--fp-gap-mobile);
    --fp-day-font-size: 12px;
    --fp-weekday-font-size: 9px;
    --fp-padding-x: 8px;
    --fp-padding-y: 10px;
  }
  .flatpickr-calendar {
    min-width: 0;
    width: 100%;
    border-radius: 16px;
  }
  .flatpickr-months { flex-wrap: wrap; gap: 6px; }
  .flatpickr-prev-month,
  .flatpickr-next-month { width: 26px; height: 26px; }
  .flatpickr-monthDropdown-months,
  .flatpickr-current-month .numInputWrapper input.cur-year {
    height: 26px;
    font-size: 12px;
  }
}

@media (max-width: 380px) {
  .flatpickr-calendar {
    --fp-cell-size: 32px;
    --fp-gap: 5px;
    --fp-day-font-size: 11px;
    --fp-weekday-font-size: 8.5px;
    --fp-padding-x: 6px;
  }
}

@media (min-width: 1200px) {
  .flatpickr-calendar:not(.fp-compact) { --fp-cell-size: 48px; }
}

/* ------------------------------
   ANTI PARASITES
   ------------------------------ */
.flatpickr-calendar .lunajardim,
.flatpickr-calendar [class*="lunajardim"],
.flatpickr-calendar [id*="lunajardim"] {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

/* Box-sizing interne */
.flatpickr-calendar, .flatpickr-calendar * { box-sizing: border-box; }
/* Jours passés (script) */
.flatpickr-day.past-day {
  background: var(--fp-disabled) !important;
  color: var(--fp-text-soft) !important;
  cursor: default;
  opacity: .85;
  box-shadow: none !important;
  transform: none !important;
}

/* Empêcher le vert de recouvrir un jour passé */
.flatpickr-day.past-day.has-slot,
.flatpickr-day.past-day.is-monday-slot {
  background: var(--fp-disabled) !important;
  color: var(--fp-text-soft) !important;
}

/* Masquer badge sur passé (option) */
.flatpickr-day.past-day .slot-badge {
  display: none;
}

/* … (tout ton CSS existant) … */

/* NEW: jours sans créneau “réel” (type sélectionné) */
.flatpickr-day.no-slot {
  background: var(--fp-disabled) !important;
  color: var(--fp-text-soft) !important;
  box-shadow: none !important;
  cursor: default;
  transform: none !important;
}
.flatpickr-day.no-slot.has-slot { /* sécurité: ne pas cumuler */
  background: var(--fp-disabled) !important;
  color: var(--fp-text-soft) !important;
}