.mbp-calendar-container {
    background: #ffffff;
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    padding: 20px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    margin: 20px 0;
}

.mbp-legend {
    display: flex;
    gap: 15px;
    margin-bottom: 20px;
    padding-bottom: 15px;
    border-bottom: 1px solid #f3f4f6;
    font-size: 13px;
    font-weight: 600;
}

.mbp-legend-item {
    display: flex;
    align-items: center;
    gap: 6px;
}

.mbp-badge-legend {
    width: 14px;
    height: 14px;
    border-radius: 50%;
    display: inline-block;
}

.mbp-day-full { background-color: var(--mbp-day-full, #ef4444) !important; color: white !important; }
.mbp-day-partial { background-color: var(--mbp-day-partial, #f59e0b) !important; color: white !important; }
.mbp-day-free { background-color: var(--mbp-day-free, #10b981) !important; color: white !important; }

.mbp-calendar-grid-wrapper {
    display: grid;
    grid-template-columns: 320px 1fr;
    gap: 25px;
}

@media (max-width: 768px) {
    .mbp-calendar-grid-wrapper {
        grid-template-columns: 1fr;
    }
}

.mbp-calendar-box {
    background: #f9fafb;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    padding: 15px;
}

.mbp-cal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 12px;
}

.mbp-cal-header h4 {
    margin: 0;
    font-size: 15px;
    font-weight: 700;
    color: #1f2937;
}

.mbp-cal-header button {
    background: #ffffff;
    border: 1px solid #d1d5db;
    border-radius: 6px;
    padding: 4px 10px;
    cursor: pointer;
    font-weight: bold;
}

.mbp-cal-weekdays {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    text-align: center;
    font-size: 11px;
    font-weight: bold;
    color: #6b7280;
    margin-bottom: 8px;
}

.mbp-cal-days-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 4px;
}

.mbp-cal-day {
    aspect-ratio: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    font-weight: 600;
    border-radius: 8px;
    cursor: pointer;
    transition: transform 0.1s, box-shadow 0.1s;
    user-select: none;
}

.mbp-cal-day:hover {
    transform: scale(1.08);
    box-shadow: 0 2px 5px rgba(0,0,0,0.15);
}

.mbp-cal-day.empty {
    cursor: default;
    background: transparent !important;
}

.mbp-cal-day.selected {
    outline: 3px solid #4f46e5;
    outline-offset: -2px;
}

/* Section Heures & Cases du jour */
.mbp-slots-box {
    background: #ffffff;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    padding: 15px;
}

.mbp-slots-box h4 {
    margin-top: 0;
    margin-bottom: 15px;
    color: #1f2937;
    font-size: 16px;
    border-bottom: 2px solid #f3f4f6;
    padding-bottom: 8px;
}

.mbp-slots-container {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    align-items: stretch;
}

.mbp-slot-card {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 16px;
    border-radius: 8px;
    border: 1px solid #e5e7eb;
    transition: background 0.2s;
}

.mbp-slot-card.is-booked {
    background-color: var(--mbp-slot-booked, #fef2f2);
    border-color: var(--mbp-day-full, #fca5a5);
}

.mbp-slot-card.is-free {
    background-color: var(--mbp-slot-free, #f0fdf4);
    border-color: var(--mbp-day-free, #86efac);
}

.mbp-slot-time {
    font-weight: 700;
    font-size: 15px;
    color: #1f2937;
    width: 80px;
}

.mbp-slot-status-badge {
    padding: 4px 12px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 700;
}

.mbp-slot-card.is-booked .mbp-slot-status-badge {
    background: var(--mbp-day-full, #ef4444);
    color: white;
}

.mbp-slot-card.is-free .mbp-slot-status-badge {
    background: var(--mbp-day-free, #10b981);
    color: white;
}

.mbp-slot-details {
    flex-grow: 1;
    margin-left: 20px;
    font-size: 13px;
    color: #374151;
}

/* Modal styles */
.mbp-btn-primary { background: var(--mbp-primary-color, #4f46e5); color: var(--mbp-button-text, #ffffff); padding: 10px 20px; border: none; border-radius: 6px; font-weight: var(--mbp-button-font-weight, 600); font-family: var(--mbp-button-font-family, inherit); font-size: var(--mbp-button-font-size, 15px); cursor: pointer; }
.mbp-modal { display: none; position: fixed; z-index: 99999; left:0; top:0; width:100%; height:100%; background: rgba(0,0,0,0.5); }
.mbp-modal-content { background: white; width: 90%; max-width: 450px; margin: 5% auto; padding: 20px; border-radius: 12px; position: relative; }
.mbp-close { position: absolute; right: 15px; top: 10px; font-size: 24px; cursor: pointer; }
.mbp-step { margin-bottom: 10px; }
.mbp-step label { display: block; font-size: 12px; font-weight: bold; margin-bottom: 3px; }
.mbp-step input, .mbp-step select { width: 100%; padding: 8px; border: 1px solid #ccc; border-radius: 6px; }
.mbp-btn-submit { width: 100%; padding: 10px; background: var(--mbp-primary-color, #4f46e5); color: var(--mbp-button-text, #ffffff); border: none; border-radius: 6px; font-weight: var(--mbp-button-font-weight, 600); font-family: var(--mbp-button-font-family, inherit); font-size: var(--mbp-button-font-size, 15px); margin-top: 10px; cursor: pointer; }

/* Parcours de réservation : date, choix de l'heure, puis formulaire */
.mbp-date-choice { display:flex; align-items:center; flex-wrap:wrap; gap:12px; margin:0 0 18px; padding:14px; background:#f9fafb; border:1px solid #e5e7eb; border-radius:10px; }
.mbp-date-choice input[type="date"] { padding:9px 11px; border:1px solid #d1d5db; border-radius:7px; min-height:40px; }
.mbp-cal-day { border:0; font-family:inherit; }
.mbp-cal-day:disabled { cursor:not-allowed; opacity:.35; }
.mbp-cal-day.mbp-past-day { opacity:.35; cursor:not-allowed; }
.mbp-cal-day.selected { outline:3px solid #1d4ed8; outline-offset:1px; box-shadow:0 0 0 2px #fff inset; }
.mbp-slot-card { width:100%; font-family:inherit; text-align:left; cursor:pointer; }
.mbp-slot-card.is-booked { cursor:not-allowed; opacity:.9; }
.mbp-slot-card.is-selected { outline:3px solid var(--mbp-selected-color, #2563eb); outline-offset:1px; }
.mbp-booking-action { padding:16px; border:1px solid #bfdbfe; border-radius:10px; background:#eff6ff; }
.mbp-booking-action p { margin-top:0; }
.mbp-book-selected-slot { border:0; }
@media (max-width:600px) {
  .mbp-date-choice { align-items:stretch; flex-direction:column; }
  .mbp-date-choice input[type="date"] { width:100%; box-sizing:border-box; }
  .mbp-slot-card { gap:8px; flex-wrap:wrap; padding:10px; }
  .mbp-slot-time { width:auto; min-width:55px; }
  .mbp-slot-details { margin-left:0; }
}

/* Personnalisation depuis Booking Pro > Design & Couleurs */
.mbp-calendar-container {
    color: var(--mbp-table-text, #1f2937);
    font-family: var(--mbp-table-font-family, inherit);
    font-size: var(--mbp-table-font-size, 14px);
}
.mbp-calendar-container .mbp-cal-day,
.mbp-calendar-container .mbp-slot-card,
.mbp-calendar-container .mbp-slot-time,
.mbp-calendar-container .mbp-slot-details,
.mbp-calendar-container .mbp-slot-status-badge,
.mbp-calendar-container .mbp-legend,
.mbp-calendar-container .mbp-date-choice,
.mbp-calendar-container .mbp-slots-box h4 {
    font-family: var(--mbp-table-font-family, inherit);
}
.mbp-calendar-container .mbp-cal-weekdays,
.mbp-calendar-container .mbp-cal-header h4,
.mbp-calendar-container .mbp-slot-time,
.mbp-calendar-container .mbp-slot-details,
.mbp-calendar-container .mbp-slots-box h4 {
    color: var(--mbp-table-text, #1f2937);
}
.mbp-calendar-container .mbp-slot-card { font-size: var(--mbp-table-font-size, 14px); }
.mbp-calendar-container .mbp-cal-day.selected { outline-color: var(--mbp-selected-color, #2563eb); }


/* Afficher les créneaux horaires en deux colonnes pour réduire la hauteur du tableau. */
.mbp-calendar-container .mbp-slots-container {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    align-items: stretch;
}
.mbp-calendar-container .mbp-slot-card {
    min-width: 0;
    width: 100%;
    box-sizing: border-box;
    flex-wrap: wrap;
    justify-content: flex-start;
    gap: 6px 10px;
}
.mbp-calendar-container .mbp-slot-time {
    width: auto;
    min-width: 48px;
}
.mbp-calendar-container .mbp-slot-details {
    margin-left: 0;
}
@media (max-width: 480px) {
    .mbp-calendar-container .mbp-slots-container {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 7px;
    }
    .mbp-calendar-container .mbp-slot-card { padding: 9px; }
    .mbp-calendar-container .mbp-slot-status-badge { padding: 3px 7px; }
}

/* Personnalisation de la typographie des boutons de réservation */
.mbp-calendar-container .mbp-cal-header button { font-family: var(--mbp-button-font-family, inherit); font-size: var(--mbp-button-font-size, 15px); font-weight: var(--mbp-button-font-weight, 600); color: var(--mbp-button-text, #ffffff); background: var(--mbp-primary-color, #4f46e5); border: 0; border-radius: 6px; padding: 7px 12px; cursor: pointer; }
.mbp-calendar-container .mbp-btn-primary, .mbp-calendar-container .mbp-btn-submit { font-family: var(--mbp-button-font-family, inherit); font-size: var(--mbp-button-font-size, 15px); font-weight: var(--mbp-button-font-weight, 600); color: var(--mbp-button-text, #ffffff); background: var(--mbp-primary-color, #4f46e5); }

/* v4.3.9 - verrouillage de la disposition calendrier / heures */
.mbp-calendar-container .mbp-calendar-grid-wrapper {
    display: grid !important;
    grid-template-columns: minmax(280px, 320px) minmax(0, 1fr) !important;
    grid-template-rows: auto !important;
    align-items: start !important;
    gap: 25px !important;
    width: 100% !important;
    box-sizing: border-box !important;
}
.mbp-calendar-container .mbp-calendar-box {
    grid-column: 1 !important;
    grid-row: 1 !important;
    min-width: 0 !important;
    width: 100% !important;
    box-sizing: border-box !important;
}
.mbp-calendar-container .mbp-slots-box {
    grid-column: 2 !important;
    grid-row: 1 !important;
    min-width: 0 !important;
    width: 100% !important;
    box-sizing: border-box !important;
}
.mbp-calendar-container .mbp-cal-weekdays,
.mbp-calendar-container .mbp-cal-days-grid {
    display: grid !important;
    grid-template-columns: repeat(7, minmax(0, 1fr)) !important;
    width: 100% !important;
    box-sizing: border-box !important;
}
.mbp-calendar-container .mbp-cal-days-grid { gap: 4px !important; }
.mbp-calendar-container .mbp-cal-weekdays { gap: 4px !important; }
@media (max-width: 768px) {
    .mbp-calendar-container .mbp-calendar-grid-wrapper {
        grid-template-columns: minmax(0, 1fr) !important;
        grid-template-rows: auto auto !important;
        gap: 15px !important;
    }
    .mbp-calendar-container .mbp-calendar-box {
        grid-column: 1 !important;
        grid-row: 1 !important;
    }
    .mbp-calendar-container .mbp-slots-box {
        grid-column: 1 !important;
        grid-row: 2 !important;
    }
}

/* v4.4.0 - grille des jours indépendante du thème WordPress */
.mbp-calendar-container .mbp-cal-weekdays,
.mbp-calendar-container .mbp-cal-days-grid {
    width: 100%;
    display: grid !important;
    grid-template-columns: repeat(7, minmax(0, 1fr)) !important;
    box-sizing: border-box;
}
.mbp-calendar-container .mbp-cal-weekdays > span,
.mbp-calendar-container .mbp-cal-days-grid > .mbp-cal-day {
    min-width: 0;
    box-sizing: border-box;
}
.mbp-calendar-container .mbp-cal-day {
    margin: 0 !important;
    padding: 0 !important;
    width: 100% !important;
    max-width: none !important;
    min-height: 38px;
}
.mbp-calendar-container .mbp-cal-days-grid .mbp-cal-day.empty {
    visibility: hidden;
}
@media (max-width: 600px) {
    .mbp-calendar-container .mbp-cal-day { min-height: 34px; font-size: 12px; }
}
.mbp-table-choice{margin:16px 0;}
.mbp-table-choice label{display:block;margin-bottom:7px;}
.mbp-calendar-booking-box{width:100%;max-width:420px;padding:10px;border:1px solid #d1d5db;border-radius:8px;background:#fff;box-sizing:border-box;}


/* Parcours guidé en trois étapes : jour, table, puis heures. */
.mbp-calendar-container .mbp-calendar-grid-wrapper.mbp-booking-steps {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch;
    gap: 18px;
    grid-template-columns: minmax(0, 1fr) !important;
}
.mbp-calendar-container .mbp-calendar-box {
    width: 100%;
    box-sizing: border-box;
}
.mbp-calendar-container .mbp-table-choice,
.mbp-calendar-container .mbp-slots-box {
    width: 100%;
    box-sizing: border-box;
    scroll-margin-top: 100px;
}
.mbp-calendar-container .mbp-table-choice label,
.mbp-calendar-container .mbp-table-choice select {
    display: block;
    width: 100%;
    box-sizing: border-box;
}
.mbp-calendar-container .mbp-table-choice select {
    margin-top: 8px;
    min-height: 44px;
    padding: 10px 12px;
}
.mbp-calendar-container .mbp-step-hours { scroll-margin-top: 100px; }

/* v4.4.6 — étapes guidées et messages de chargement visibles */
.mbp-calendar-container .mbp-step-table[style*="display: block"],
.mbp-calendar-container .mbp-step-hours[style*="display: block"] { display: block !important; visibility: visible !important; opacity: 1 !important; }
.mbp-calendar-container .mbp-slots-container { min-height: 44px; }
.mbp-calendar-container .mbp-slot-error { grid-column: 1 / -1; padding: 12px; color: #b91c1c; background: #fef2f2; border-radius: 8px; }
.mbp-calendar-container .mbp-slots-container > p { margin: 0; }
