/* ==========================================================================
   JDVC TOOLBOX - ÉCOSYSTÈME BOOKER (Booker Box + add-ons book-*)
   Chargé par booker-box.php :
   - admin : admin_enqueue_scripts (après apps.css / handle jdvc-apps-admin)
   - page de réservation : <link> injecté via le hook jdvc_booking_front_head
   booker-rdv.php n'est volontairement pas concerné (il vit aussi seul, en tant qu'App).

   Conventions :
   - Nouvelles classes préfixées .jdvc-bk-*
   - Styles propres à un écran admin : scopés sous :where(.jdvc-bk-page-{slug}), classe
     ajoutée au <body> par booker-box.php (pages jdvc-booker*). Reproduit le chargement
     conditionnel des anciens <style> sans modifier la spécificité.
   - Règles front des add-ons : sélecteurs d'origine inchangés (tous propres au Booker).
   - Les utilitaires (largeurs, marges…) portent !important : ils remplacent des styles
     inline, qui primaient sur toute règle de classe (ex: .jdvc-input { width:100% }).
   - Les display:none initiaux basculés par jQuery (.show/.hide/.toggle) restent inline.
   - Les valeurs dynamiques (couleurs, pourcentages) passent par une variable CSS inline.
   - Les styles des e-mails restent inline (les clients mail ignorent les CSS externes).
   - Quand admin.css (surcharges globales !important) écrase un style propre au Booker, c'est le
     Booker qui gagne : sélecteurs renforcés regroupés en section 14.
   ========================================================================== */


/* ==========================================================================
   1. UTILITAIRES
   ========================================================================== */
/* Largeurs */
.jdvc-bk-w-500 { width: 500px !important; }
.jdvc-bk-w-600 { width: 600px !important; }
.jdvc-bk-w-15p { width: 15% !important; }
.jdvc-bk-w-25p { width: 25% !important; }
.jdvc-bk-w-45p { width: 45% !important; }
.jdvc-bk-maxw-200 { max-width: 200px !important; }
.jdvc-bk-modal-w-600 { width: min(600px, calc(100% - 40px)) !important; }
.jdvc-bk-modal-w-850 { width: min(850px, calc(100% - 40px)) !important; }

/* Marges */
.jdvc-bk-mt-0  { margin-top: 0 !important; }
.jdvc-bk-mt-15 { margin-top: 15px !important; }
.jdvc-bk-mt-20 { margin-top: 20px !important; }
.jdvc-bk-pull-up { margin-top: -10px !important; }
.jdvc-bk-mb-8  { margin-bottom: 8px !important; }
.jdvc-bk-mb-15 { margin-bottom: 15px !important; }
.jdvc-bk-mb-20 { margin-bottom: 20px !important; }
.jdvc-bk-my-15 { margin-top: 15px !important; margin-bottom: 15px !important; }
.jdvc-bk-ml-25 { margin-left: 25px !important; }
.jdvc-bk-mr-8  { margin-right: 8px !important; }

/* Mise en page */
.jdvc-bk-flex-gap-10 { display: flex !important; gap: 10px !important; }
.jdvc-bk-justify-end { justify-content: flex-end !important; }
.jdvc-bk-inline { display: flex; align-items: center; gap: 8px; }
.jdvc-bk-d-block { display: block !important; }

/* Texte */
.jdvc-bk-italic { font-style: italic; }
.jdvc-bk-hint { font-size: 13px; color: #64748b; }
.jdvc-bk-text-muted { color: #64748b; }
.jdvc-bk-text-faint { color: #94a3b8; }
.jdvc-bk-text-disabled { color: #cbd5e1; }
.jdvc-bk-text-primary { color: #3b82f6; }
.jdvc-bk-text-success { color: #15803d; font-weight: 600; }
.jdvc-bk-text-danger { color: #dc2626; }
.jdvc-bk-bg-muted { background: #f1f5f9; }


/* ==========================================================================
   2. COMPOSANTS PARTAGÉS
   ========================================================================== */
/* Libellés */
.jdvc-bk-field-label { display: block; font-weight: 600; margin-bottom: 8px; }
.jdvc-bk-small-label { display: block; font-size: 12px; color: #64748b; margin-bottom: 5px; }
.jdvc-bk-label-top { display: block; margin-top: 15px; font-weight: 600; }
.jdvc-bk-inline-label { display: inline-flex; align-items: center; gap: 10px; font-weight: 600; }

/* Case à cocher + libellé en ligne, avec aide indentée dessous */
.jdvc-bk-check-label { display: flex; align-items: center; gap: 10px; font-weight: 600; cursor: pointer; margin-bottom: 12px; }
.jdvc-bk-check-help { font-size: 12px; color: #64748b; margin: -8px 0 15px 24px; }
.jdvc-bk-note { font-size: 12px; color: #64748b; margin-top: 6px; }
.jdvc-bk-hr { border: 0; border-top: 1px solid #e2e8f0; margin: 15px 0; }

/* Contenu des modales */
.jdvc-bk-modal-section { margin-bottom: 20px; padding-bottom: 15px; border-bottom: 1px solid #e2e8f0; }
.jdvc-bk-modal-label { display: block; font-weight: 600; margin-bottom: 5px; font-size: 13px; color: #334155; }
.jdvc-bk-modal-block { margin-top: 20px; padding-top: 20px; border-top: 1px solid #e2e8f0; margin-bottom: 15px; }
.jdvc-bk-modal-footer { text-align: right; margin-top: 20px; }

/* Bouton au texte rouge WP (priorité sur admin.css : section 14) */
.button.jdvc-bk-btn-danger-text, .button.jdvc-bk-btn-clear { color: #b32d2e; }

/* Encadrés (titres en double classe : priment sur ".jdvc-card h4" d'apps.css, comme l'ancien inline) */
.jdvc-bk-panel { margin-bottom: 20px; padding: 15px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 10px; }
.jdvc-bk-panel .jdvc-bk-panel-title { margin: 0 0 10px 0; font-size: 13px; font-weight: 600; color: #1e293b; text-transform: uppercase; letter-spacing: 0.5px; }
.jdvc-bk-section-sep { margin-top: 15px; padding-top: 15px; border-top: 1px solid #e2e8f0; }
.jdvc-bk-section-sep .jdvc-bk-section-title { margin: 0 0 10px 0; color: #1e293b; }

/* Pastilles */
.jdvc-bk-badge-success { display: inline-flex; align-items: center; gap: 6px; background: #dcfce7; color: #166534; padding: 4px 10px; border-radius: 999px; font-size: 12px; font-weight: 600; }
.jdvc-bk-status-text { margin-left: 8px; font-size: 12px; color: #64748b; }
/* Pastille de couleur dynamique : style="--jdvc-bk-color:#xxxxxx" */
.jdvc-bk-swatch { display: inline-block; width: 12px; height: 12px; border-radius: 50%; background: var(--jdvc-bk-color); margin-right: 5px; vertical-align: middle; }


/* ==========================================================================
   3. BOOKER BOX — ADMIN (ex-admin_head)
   Pages : jdvc-bookers, -dash, -bookings, -config
   (le tableau de bord n'était pas dans la liste d'origine : ajouté volontairement)
   ========================================================================== */
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-booker-box { max-width: 1400px; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; margin:20px 0; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-stat, :where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-card { background: #fff; border: 1px solid #e2e8f0; border-radius: 16px; box-shadow: 0 10px 25px -5px rgba(0,0,0,0.05); }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-stat { padding:22px; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-stat span { display:block; color:#64748b; font-size:13px; margin-bottom:8px; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-stat strong { font-size:30px; color:#0f172a; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-card { padding:22px; margin-bottom:20px; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-card-head { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-bottom:18px; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-card-head h2 { margin:0; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-list { border-top:1px solid #eef2f7; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-row { display:flex; justify-content:space-between; gap:20px; padding:15px 5px; border-bottom:1px solid #eef2f7; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-row strong, :where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-row span { display:block; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-row span, :where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-muted { color:#64748b; font-size:12px; margin-top:4px; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-date { font-weight:600; white-space:nowrap; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-empty { color:#64748b; font-style:italic; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-quick { display:flex; gap:10px; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-search { display:flex; gap:8px; justify-content:flex-end; margin:15px 0; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-search input { min-width:280px; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-table { border:0; box-shadow:none; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-table th { background:#f8fafc; color:#475569; text-transform:uppercase; font-size:11px; letter-spacing:.4px; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-table td, :where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-table th { padding:14px 12px; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-pagination { padding-top:20px; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-modal { display:none; position:fixed; inset:0; z-index:99999; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-modal.is-open { display:flex; align-items:center; justify-content:center; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-modal-backdrop { position:absolute; inset:0; background:rgba(15,23,42,.55); }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-modal-box { position: relative; width: min(650px,calc(100% - 40px)); max-height: calc(100vh - 80px); overflow: auto; background: #fff; border-radius: 16px; box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1); padding: 28px; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-modal-close { position:absolute; right:16px; top:10px; border:0; background:none; font-size:28px; color:#64748b; cursor:pointer; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-top:20px; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-form-grid label { display:flex; flex-direction:column; gap:6px; font-weight:600; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-form-grid input { width:100%; box-sizing:border-box; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-modal-actions { display:grid; grid-template-columns:auto 1fr auto auto; align-items:center; gap:10px; margin-top:25px; padding-top:20px; border-top:1px solid #e2e8f0; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-addons { display:grid; grid-template-columns:repeat(5,1fr); gap:12px; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-addon { display: flex; gap: 14px; align-items: flex-start; padding: 16px; border: 1px solid #e2e8f0; border-radius: 10px; background: #f8fafc; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-addon strong { display:block; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-addon small { display:block; color:#64748b; margin-top:4px; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-addon em { display:block; color:#94a3b8; font-size:11px; margin-top:6px; }
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-addon-empty { padding:15px; background:#f8fafc; border-radius:8px; color:#64748b; }
/* * La configuration native garde son apparence, * mais la Booker Box devient son conteneur officiel. */
:where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-booker-box-native-config .wrap { margin-left:0; }
@media (max-width:900px) {
    :where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-grid, :where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-addons, :where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-form-grid { grid-template-columns:1fr; }
    :where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-card-head, :where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-row { align-items:flex-start; flex-direction:column; }
    :where(.jdvc-bk-page-jdvc-bookers, .jdvc-bk-page-jdvc-bookers-dash, .jdvc-bk-page-jdvc-bookers-bookings, .jdvc-bk-page-jdvc-bookers-config) .jdvc-bb-search { justify-content:flex-start; }
}

/* Carte Add-ons (injectée dans la config du Scheduler) — ex-styles inline */
.jdvc-bb-card-head.jdvc-bk-addons-head { margin-bottom: 15px; border-bottom: none; padding-bottom: 0; }
.jdvc-card h3.jdvc-bk-addons-title { margin: 0; font-size: 16px; }


/* ==========================================================================
   4. BOOKER BOX — TABLEAU DE BORD (jdvc-bookers-dash)
   L'accent reprend la couleur principale du Booker : style="--jdvc-bk-accent:#xxxxxx"
   ========================================================================== */
.jdvc-bk-dash { --jdvc-bk-accent-safe: var(--jdvc-bk-accent, #3b82f6); }

.jdvc-bk-dash-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 16px; margin: 10px 0 20px; }
.jdvc-bk-dash .jdvc-bk-dash-title { margin: 0; padding: 0; font-size: 24px; font-weight: 700; color: #0f172a; }
.jdvc-bk-dash-date { margin: 4px 0 0; color: #64748b; font-size: 14px; }
.jdvc-bk-dash-actions { display: flex; flex-wrap: wrap; gap: 8px; }

/* Bandeau haut : prochain RDV + indicateurs */
.jdvc-bk-dash-top { display: grid; grid-template-columns: minmax(280px, 1fr) 2fr; gap: 20px; margin-bottom: 20px; }

.jdvc-bk-dash-next { position: relative; display: flex; flex-direction: column; align-items: flex-start; gap: 6px; padding: 24px 24px 24px 28px; background: #0f172a; color: #e2e8f0; border-radius: 16px; overflow: hidden; }
.jdvc-bk-dash-next::before { content: ""; position: absolute; top: 0; bottom: 0; left: 0; width: 5px; background: var(--jdvc-bk-accent-safe); }
.jdvc-bk-dash-next-label { font-size: 13px; color: #94a3b8; }
.jdvc-bk-dash-next-time { font-size: 44px; font-weight: 700; line-height: 1; color: #ffffff; font-variant-numeric: tabular-nums; }
.jdvc-bk-dash-next-when { font-size: 14px; color: #cbd5e1; }
.jdvc-bk-dash-next-who { margin: 10px 0 14px; }
.jdvc-bk-dash-next-who strong { display: block; font-size: 16px; color: #ffffff; }
.jdvc-bk-dash-next-who span { font-size: 13px; color: #94a3b8; }
.jdvc-bk-dash-next-empty { margin: 8px 0 14px; color: #cbd5e1; line-height: 1.5; }

.jdvc-bk-dash-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.jdvc-bk-dash-kpi { display: flex; flex-direction: column; justify-content: center; padding: 20px; background: #ffffff; border: 1px solid #e2e8f0; border-radius: 10px; }
.jdvc-bk-dash-kpi span { font-size: 13px; color: #64748b; }
.jdvc-bk-dash-kpi strong { margin: 6px 0 2px; font-size: 30px; line-height: 1.1; color: #0f172a; font-variant-numeric: tabular-nums; }
.jdvc-bk-dash-kpi small { font-size: 12px; color: #94a3b8; }

/* Colonnes */
.jdvc-bk-dash-cols { display: grid; grid-template-columns: 3fr 2fr; gap: 20px; align-items: start; }
.jdvc-bk-dash-side { display: flex; flex-direction: column; }

.jdvc-bk-dash-panel { background: #ffffff; border: 1px solid #e2e8f0; border-radius: 10px; padding: 22px 24px; margin-bottom: 20px; }
.jdvc-bk-dash-panel h2 { margin: 0 0 14px; padding: 0; font-size: 16px; font-weight: 600; color: #0f172a; }
.jdvc-bk-dash-panel-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.jdvc-bk-dash-panel-head a { font-size: 13px; }
.jdvc-bk-dash-empty { margin: 0; color: #64748b; font-style: italic; }

/* Lignes de rendez-vous (agenda du jour + prochains jours) */
.jdvc-bk-dash-slot { display: grid; grid-template-columns: 64px 1fr auto auto; align-items: center; gap: 14px; padding: 12px 10px; border-bottom: 1px solid #f1f5f9; border-radius: 8px; }
.jdvc-bk-dash-slot:last-child { border-bottom: none; }
.jdvc-bk-dash-slot-time { font-weight: 700; color: #0f172a; font-variant-numeric: tabular-nums; }
.jdvc-bk-dash-slot-time small { display: block; font-weight: 400; font-size: 12px; color: #94a3b8; }
.jdvc-bk-dash-slot-main strong { display: block; color: #0f172a; }
.jdvc-bk-dash-slot-main span { font-size: 13px; color: #64748b; }
.jdvc-bk-dash-slot-flag { font-size: 12px; font-weight: 600; color: var(--jdvc-bk-accent-safe); }
.jdvc-bk-dash-slot.is-past { opacity: 0.45; }
.jdvc-bk-dash-slot.is-now { background: #f8fafc; box-shadow: inset 4px 0 0 var(--jdvc-bk-accent-safe); }

.jdvc-bk-dash-day + .jdvc-bk-dash-day { margin-top: 10px; }
.jdvc-bk-dash-day h3 { margin: 0 0 4px; padding: 8px 10px 0; font-size: 13px; font-weight: 600; color: #475569; }

/* Histogramme 7 jours (hauteur : style="--jdvc-bk-h:NN%") */
.jdvc-bk-dash-week { display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px; }
.jdvc-bk-dash-bar { display: flex; flex-direction: column; align-items: center; gap: 6px; }
.jdvc-bk-dash-bar-count { font-size: 12px; font-weight: 600; color: #475569; font-variant-numeric: tabular-nums; }
.jdvc-bk-dash-bar-track { display: flex; align-items: flex-end; width: 100%; max-width: 34px; height: 110px; background: #f1f5f9; border-radius: 8px; overflow: hidden; }
.jdvc-bk-dash-bar-fill { display: block; width: 100%; height: var(--jdvc-bk-h, 0%); background: var(--jdvc-bk-accent-safe); border-radius: 8px 8px 0 0; }
.jdvc-bk-dash-bar-day { font-size: 11px; line-height: 1.3; text-align: center; color: #64748b; }
.jdvc-bk-dash-bar.is-today .jdvc-bk-dash-bar-day { font-weight: 700; color: #0f172a; }

/* Motifs du mois (largeur : style="--jdvc-bk-w:NN%") */
.jdvc-bk-dash-motif { display: grid; grid-template-columns: 1fr auto; gap: 4px 12px; margin-bottom: 12px; }
.jdvc-bk-dash-motif:last-child { margin-bottom: 0; }
.jdvc-bk-dash-motif-name { font-size: 13px; color: #0f172a; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.jdvc-bk-dash-motif-count { font-size: 13px; font-weight: 600; color: #475569; font-variant-numeric: tabular-nums; }
.jdvc-bk-dash-motif-track { grid-column: 1 / -1; height: 6px; background: #f1f5f9; border-radius: 999px; overflow: hidden; }
.jdvc-bk-dash-motif-track span { display: block; height: 100%; width: var(--jdvc-bk-w, 0%); background: var(--jdvc-bk-accent-safe); border-radius: 999px; }

/* Raccourcis add-ons */
.jdvc-bk-dash-shortcuts { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 20px; }

@media (max-width: 1280px) {
    .jdvc-bk-dash-top { grid-template-columns: 1fr; }
}
@media (max-width: 1100px) {
    .jdvc-bk-dash-cols { grid-template-columns: 1fr; }
    .jdvc-bk-dash-kpis { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
    .jdvc-bk-dash-slot { grid-template-columns: 56px 1fr auto; }
    .jdvc-bk-dash-slot-flag { display: none; }
}
@media (prefers-reduced-motion: no-preference) {
    .jdvc-bk-dash-bar-fill, .jdvc-bk-dash-motif-track span { transition: height 0.4s ease, width 0.4s ease; }
}


/* ==========================================================================
   5. ADD-ON CLIENTÈLE (book-clientele.php)
   ========================================================================== */
/* 5.1 Page Base Clients (jdvc-bookers-clients) — ex-<style> de la page */
:where(.jdvc-bk-page-jdvc-bookers-clients) .jdvc-booker-box { max-width: 1200px; margin: 20px 20px 0 0; }
:where(.jdvc-bk-page-jdvc-bookers-clients) .jdvc-bb-search { display: flex; gap: 10px; margin: 15px 0; }
:where(.jdvc-bk-page-jdvc-bookers-clients) .jdvc-bb-search input[type="search"] { width: 320px; }
:where(.jdvc-bk-page-jdvc-bookers-clients) .jdvc-bb-card { background: #fff; border: 1px solid #ccd0d4; box-shadow: 0 10px 25px -5px rgba(0,0,0,0.05); padding: 20px; border-radius: 16px; margin-top: 15px; }
:where(.jdvc-bk-page-jdvc-bookers-clients) .jdvc-bb-table th { font-weight: 600; }
:where(.jdvc-bk-page-jdvc-bookers-clients) .jdvc-bb-pagination { margin-top: 15px; text-align: right; }
:where(.jdvc-bk-page-jdvc-bookers-clients) .jdvc-bb-empty { color: #64748b; font-style: italic; margin: 0; }
/* Styles de la modale Ajax */
:where(.jdvc-bk-page-jdvc-bookers-clients) .jdvc-bb-modal { display: none; position: fixed; inset: 0; z-index: 100000; align-items: center; justify-content: center; }
:where(.jdvc-bk-page-jdvc-bookers-clients) .jdvc-bb-modal.is-open { display: flex; }
:where(.jdvc-bk-page-jdvc-bookers-clients) .jdvc-bb-modal-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,0.5); }
:where(.jdvc-bk-page-jdvc-bookers-clients) .jdvc-bb-modal-box { position: relative; background: #fff; padding: 30px; border-radius: 16px; box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1); z-index: 10; max-height: 90vh; overflow-y: auto; }
:where(.jdvc-bk-page-jdvc-bookers-clients) .jdvc-bb-modal-close { position: absolute; top: 15px; right: 15px; background: none; border: none; font-size: 22px; cursor: pointer; color: #64748b; line-height: 1; }
:where(.jdvc-bk-page-jdvc-bookers-clients) .jdvc-bb-modal-close:hover { color: #0f172a; }
:where(.jdvc-bk-page-jdvc-bookers-clients) .jdvc-bb-form-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 15px; }
:where(.jdvc-bk-page-jdvc-bookers-clients) .jdvc-bb-form-grid label { display: flex; flex-direction: column; font-weight: 500; font-size: 13px; gap: 5px; color: #334155; }
:where(.jdvc-bk-page-jdvc-bookers-clients) .jdvc-bb-form-grid input { width: 100%; padding: 6px 10px; }
:where(.jdvc-bk-page-jdvc-bookers-clients) .jdvc-bb-modal-actions { display: flex; justify-content: space-between; align-items: center; margin-top: 25px; padding-top: 15px; border-top: 1px solid #e2e8f0; }

/* 5.2 Onglet "Booker" de la fiche User Core — ex-styles inline */
.jdvc-bk-uc-title { display: block; margin-bottom: 8px; color: #0f172a; }
.jdvc-bk-uc-history { max-height: 220px; overflow-y: auto; border: 1px solid #e2e8f0; border-radius: 6px; padding: 12px; background: #f8fafc; }
.jdvc-bk-uc-list { margin: 0; padding-left: 18px; }
.jdvc-bk-uc-item { font-size: 13px; padding: 3px 0; }
.jdvc-bk-uc-empty { color: #94a3b8; font-style: italic; margin: 0; }

/* 5.3 Front : verrou "comptes connectés uniquement"
   (l'élément n'existe que si le verrou est actif ; le flou de .wrapper reste inline car conditionnel) */
#jdvc-client-lock { position: fixed; inset: 0; z-index: 99999; background: rgba(255,255,255,0.4); display: flex; align-items: center; justify-content: center; cursor: pointer; }
.jdvc-client-lock-msg { background: #fff; padding: 25px 40px; border-radius: 12px; box-shadow: 0 20px 40px rgba(0,0,0,0.15); font-size: 1.2rem; font-weight: 600; color: #0f172a; text-align: center; border: 1px solid #e2e8f0; transition: transform 0.2s; }
#jdvc-client-lock:hover .jdvc-client-lock-msg { transform: scale(1.02); }


/* ==========================================================================
   6. ADD-ON CRÉDITS (book-credits.php)
   ========================================================================== */
/* Champ en lecture seule mis en valeur (priorité sur admin.css : section 14) */
.jdvc-bk-readonly-value { background: #e2e8f0; cursor: not-allowed; font-weight: 700; color: #0f172a; }


/* ==========================================================================
   7. ADD-ON ÉQUIPE (book-equipe.php)
   ========================================================================== */
/* 7.1 Page Équipe (jdvc-bookers-team) — ex-admin_head */
:where(.jdvc-bk-page-jdvc-bookers-team) .jdvc-booker-team { max-width:1400px; }
:where(.jdvc-bk-page-jdvc-bookers-team) .jdvc-team-card { background: #fff; border: 1px solid #e2e8f0; border-radius: 16px; box-shadow: 0 10px 25px -5px rgba(0,0,0,0.05); padding: 24px; margin: 20px 0; }
:where(.jdvc-bk-page-jdvc-bookers-team) .jdvc-team-card-head { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-bottom:20px; }
:where(.jdvc-bk-page-jdvc-bookers-team) .jdvc-team-card h2 { margin-top:0; }
:where(.jdvc-bk-page-jdvc-bookers-team) .jdvc-team-fields { display:grid; grid-template-columns:repeat(2,1fr); gap:18px; margin-bottom:15px; }
:where(.jdvc-bk-page-jdvc-bookers-team) .jdvc-team-fields label { display:flex; flex-direction:column; gap:6px; font-weight:600; }
:where(.jdvc-bk-page-jdvc-bookers-team) .jdvc-team-fields input[type="text"], :where(.jdvc-bk-page-jdvc-bookers-team) .jdvc-team-fields input[type="email"] { width:100%; }
:where(.jdvc-bk-page-jdvc-bookers-team) .jdvc-team-member { display: flex; align-items: center; gap: 16px; padding: 16px; border: 1px solid #e2e8f0; border-radius: 10px; margin-bottom: 12px; background: #f8fafc; }
:where(.jdvc-bk-page-jdvc-bookers-team) .jdvc-team-avatar { width:40px; height:40px; border-radius:50%; display:flex; align-items:center; justify-content:center; background:var(--team-color); color:#fff; font-weight:700; font-size:16px; flex:none; }
:where(.jdvc-bk-page-jdvc-bookers-team) .jdvc-team-member-main { flex:1; }
:where(.jdvc-bk-page-jdvc-bookers-team) .jdvc-team-member-main strong { display:block; font-size:15px; }
:where(.jdvc-bk-page-jdvc-bookers-team) .jdvc-team-member-main span { color:#64748b; font-size:13px; }
:where(.jdvc-bk-page-jdvc-bookers-team) .jdvc-team-member-actions { display:flex; gap:8px; }
/* Styles Modal Admin Équipe */
:where(.jdvc-bk-page-jdvc-bookers-team) .jdvc-bb-modal { display:none; position:fixed; top:0; left:0; width:100%; height:100%; z-index:100000; align-items:center; justify-content:center; }
:where(.jdvc-bk-page-jdvc-bookers-team) .jdvc-bb-modal.is-open { display:flex; }
:where(.jdvc-bk-page-jdvc-bookers-team) .jdvc-bb-modal-backdrop { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(15,23,42,0.6); backdrop-filter: blur(2px); }
:where(.jdvc-bk-page-jdvc-bookers-team) .jdvc-bb-modal-box { position: relative; background: #fff; border-radius: 16px; padding: 28px; box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1); max-height: 90vh; overflow-y: auto; z-index: 1; }
:where(.jdvc-bk-page-jdvc-bookers-team) .jdvc-bb-modal-close { position:absolute; top:16px; right:16px; background:none; border:none; font-size:24px; cursor:pointer; color:#64748b; line-height:1; }
:where(.jdvc-bk-page-jdvc-bookers-team) .jdvc-bb-modal-close:hover { color:#0f172a; }
:where(.jdvc-bk-page-jdvc-bookers-team) .jdvc-bb-modal-actions { display:flex; justify-content:flex-end; gap:10px; }

/* 7.2 Modale membre — ex-styles inline */
input.regular-text.jdvc-bk-ical-field { width: 100%; background: #f1f5f9; color: #64748b; font-size: 13px; margin-top: 5px; border-color: #e2e8f0; }
.jdvc-bk-member-login { color: #64748b; font-weight: normal; }

/* 7.3 Intervenant dans la modale d'un rendez-vous (Booker Box) */
.jdvc-team-modal-info { margin-top: 18px; padding: 12px 15px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; display: flex; align-items: center; justify-content: space-between; }
.jdvc-bk-info-label { font-weight: 600; color: #334155; font-size: 13px; }
.jdvc-bk-member-chip { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; font-size: 13px; color: #0f172a; }
.jdvc-bk-color-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--team-color); display: inline-block; }
.jdvc-bk-unassigned { color: #94a3b8; font-style: italic; font-size: 13px; }

/* 7.4 Accès JDVC dans User Core */
.jdvc-bk-uc-section { margin-bottom: 15px; padding-bottom: 15px; border-bottom: 1px solid #e2e8f0; }
.jdvc-bk-uc-section-title { display: block; margin-bottom: 6px; }

/* 7.5 Front : choix de l'intervenant (ex-<style> de jdvc_booking_front_head)
   .day-btn.team-disabled s'applique désormais aussi au mode sans équipe de l'add-on Indispo */
#jdvc-team-picker { margin-bottom:25px; }
.jdvc-team-front-btn { display:flex; align-items:center; gap:12px; width:100%; text-align:left; background:#fff; border:1px solid #e2e8f0; padding:12px 15px; border-radius:8px; margin-bottom:8px; cursor:pointer; font-size:1rem; transition:.2s; }
.jdvc-team-front-btn:hover, .jdvc-team-front-btn.active { border-color:var(--primary); box-shadow:0 4px 8px rgba(0,0,0,.05); }
.jdvc-team-front-avatar { width:32px; height:32px; border-radius:50%; display:flex; align-items:center; justify-content:center; background:var(--team-color); color:#fff; font-weight:700; flex:none; }
.jdvc-team-front-name { font-weight:600; }
#jdvc-team-error { display:none; color:#e11d48; background:#fff1f2; border:1px solid #ffe4e6; padding:10px; border-radius:6px; margin-bottom:15px; }
.jdvc-team-select-group { margin-bottom:15px; }
.jdvc-team-select-group label { display:block; margin-bottom:5px; font-size:.9rem; font-weight:500; }
.jdvc-team-select-group select { width:100%; padding:12px; border:1px solid #ccc; border-radius:6px; }
/* Grise et désactive les jours indisponibles pour le membre */
.day-btn.team-disabled { opacity: 0.25 !important; pointer-events: none !important; cursor: not-allowed !important; background-color: #f1f5f9 !important; border-color: #e2e8f0 !important; }


/* ==========================================================================
   8. ADD-ON GROUPES (book-groupes.php)
   ========================================================================== */
/* 8.1 Page Groupes (jdvc-bookers-groupes) — ex-admin_head */
/* Masquer la modale par défaut */
:where(.jdvc-bk-page-jdvc-bookers-groupes) .jdvc-bb-modal { display: none; position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: 100000; /* Au-dessus du menu admin WP */ }
/* Affichage quand la classe .is-open est ajoutée par le JS */
:where(.jdvc-bk-page-jdvc-bookers-groupes) .jdvc-bb-modal.is-open { display: flex; align-items: center; justify-content: center; }
/* Fond sombre cliquable */
:where(.jdvc-bk-page-jdvc-bookers-groupes) .jdvc-bb-modal-backdrop { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.6); }
/* Boîte de contenu */
:where(.jdvc-bk-page-jdvc-bookers-groupes) .jdvc-bb-modal-box { position: relative; background: #fff; /* Gris clair WP admin */ padding: 25px; border-radius: 16px; width: 95%; max-width: 650px; max-height: 90vh; overflow-y: auto; box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1); }
/* Bouton de fermeture "X" */
:where(.jdvc-bk-page-jdvc-bookers-groupes) .jdvc-bb-modal-close { position: absolute; top: 15px; right: 15px; background: none; border: none; font-size: 24px; font-weight: bold; cursor: pointer; color: #50575e; line-height: 1; }
:where(.jdvc-bk-page-jdvc-bookers-groupes) .jdvc-bb-modal-close:hover { color: #d63638; /* Rouge WP */ }

/* 8.2 Encadré des participants (modale d'un rendez-vous) */
.jdvc-bk-group-box { margin-top: 20px; padding: 15px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; }
/* L'ancien inline contenait "margin:top:0" (déclaration invalide, ignorée) : non reproduite */
.jdvc-bk-group-box .jdvc-bk-group-title { margin-bottom: 10px; font-size: 14px; }
.jdvc-bk-group-list { margin: 0; padding-left: 20px; color: #475569; font-size: 13px; line-height: 1.6; }

/* 8.3 Compteur de participants complet (liste des groupes) */
.jdvc-bk-group-full { color: #ef4444; font-weight: bold; }


/* ==========================================================================
   9. ADD-ON IMPORT BOOKLY (book-import-bookly.php)
   ========================================================================== */
/* Tableau d'aperçu (priorité sur admin.css : section 14) */
.widefat.jdvc-bk-table-plain { border: 1px solid #ccd0d4; box-shadow: none; }
.jdvc-bk-status-pill { background: #f1f5f9; padding: 2px 8px; border-radius: 4px; font-size: 11px; }
.jdvc-bk-preview-more { text-align: center; color: #64748b; font-style: italic; margin-top: 10px; }
.jdvc-bk-code-small { font-size: 11px; color: #64748b; }


/* ==========================================================================
   10. ADD-ON JOINDRE (book-joindre.php)
   ========================================================================== */
/* 10.1 Onglet "Avancé" d'un service (bouton × : .jdvc-bk-btn-clear, section 2) */
.jdvc-addon-file-wrap { border: 1px solid #e2e8f0; padding: 15px; border-radius: 10px; margin-bottom: 15px; background: #f8fafc; }

/* 10.2 Pièce jointe dans la modale d'un rendez-vous (Booker Box) */
.jdvc-bk-attachment { background: #f0f9ff; border: 1px solid #bae6fd; padding: 15px; border-radius: 6px; margin-bottom: 20px; display: flex; justify-content: space-between; align-items: center; }
.jdvc-bk-attachment-title { color: #0369a1; display: block; margin-bottom: 5px; }
.jdvc-bk-attachment-text { font-size: 0.9rem; color: #0c4a6e; }

/* 10.3 Front : téléchargement au succès (ex-<style> de jdvc_booking_front_head) */
.jdvc-download-box { margin-top:25px; padding:15px; background:#f8fafc; border:1px solid #cbd5e1; border-radius:8px; display:inline-block; }
.jdvc-download-btn { background:#0f172a; color:#fff; padding:10px 20px; border-radius:6px; text-decoration:none; display:inline-block; margin-top:10px; font-weight:500; transition:0.2s; }
.jdvc-download-btn:hover { background:#1e293b; }
.jdvc-download-title { font-weight: 600; color: #1e293b; }
.jdvc-download-text { font-size: 0.9rem; color: #64748b; }

/* 10.4 Front : champ d'envoi de fichier */
.jdvc-bk-upload-wrap { padding: 15px; background: #f8fafc; border: 1px dashed #cbd5e1; border-radius: 8px; }
.jdvc-bk-required-star { color: #e11d48; }
/* Double classe : prime sur ".input-group input" (comme l'ancien inline) ; border-radius hérité inchangé */
.input-group input.jdvc-bk-file-input { background: #fff; padding: 8px; border: 1px solid #e2e8f0; width: 100%; box-sizing: border-box; }
.jdvc-bk-upload-hint { font-size: 0.8rem; color: #64748b; margin-top: 5px; }


/* ==========================================================================
   11. ADD-ON RÉCURRENCE (book-recurrence.php)
   ========================================================================== */
/* Front : bloc "Répéter" dans le récapitulatif (ex-<style> de jdvc_booking_front_head) */
#jdvc-recurrence-ui { margin-top: 20px; padding-top: 15px; border-top: 1px dashed #cbd5e1; }
.jdvc-recurrence-item { display: flex; justify-content: space-between; align-items: center; padding: 10px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 6px; margin-bottom: 8px; font-size: 0.95rem; }
.jdvc-recurrence-remove { background: none; border: none; color: #e11d48; cursor: pointer; font-size: 1.1rem; padding: 0 5px; line-height: 1; }
/* Double classe : prime sur ".step-title" du <style> de booker-rdv.php, chargé après ce fichier */
.step-title.jdvc-bk-recurrence-title { margin-bottom: 15px; font-size: 1.1rem; }
.jdvc-bk-recurrence-label { display: flex; align-items: center; gap: 8px; font-size: 0.9rem; font-weight: 500; cursor: pointer; color: #475569; }
.jdvc-bk-recurrence-count { width: 55px; padding: 4px 8px; border: 1px solid #cbd5e1; border-radius: 4px; text-align: center; }


/* ==========================================================================
   12. ADD-ON SERVICES (book-services.php)
   ========================================================================== */
/* 12.1 Modales Catégories / Service (display:none reste inline : basculé par jQuery) */
.jdvc-bk-srv-modal { position: fixed; inset: 0; background: rgba(15,23,42,0.6); z-index: 9999; align-items: center; justify-content: center; }
.jdvc-bk-srv-modal-box { background: #fff; padding: 20px; border-radius: 16px; max-height: 90vh; overflow-y: auto; box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1); }
.jdvc-bk-srv-modal-head { display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid #ccc; padding-bottom: 10px; margin-bottom: 15px; }
.jdvc-bk-srv-tabs { border-bottom: 1px solid #ccc; margin-bottom: 15px; padding-bottom: 10px; }
.jdvc-bk-srv-team-list { max-height: 100px; overflow-y: auto; border: 1px solid #ccc; padding: 10px; }

/* 12.2 Front : motifs non assignés à l'intervenant choisi (ex-.css() du JS)
   !important : reproduit la priorité de l'ancien style inline (sur :hover / .active) */
.type-btn.team-disabled { opacity: 0.3 !important; pointer-events: none !important; cursor: not-allowed !important; background-color: #f1f5f9 !important; border-color: #e2e8f0 !important; }


/* ==========================================================================
   13. ADD-ON SHORTCODES (book-shortcodes.php)
   ========================================================================== */
/* 13.1 Admin : carte "Intégration" de la configuration */
.jdvc-bk-shortcode { display: block; padding: 8px; background: #f1f5f9; border-radius: 4px; font-weight: bold; margin-bottom: 4px; }
.jdvc-bk-shortcode-desc { font-size: 12px; color: #475569; }

/* 13.2 Front (pages du thème) — !important : conserve la priorité de l'ancien inline
   face aux styles du thème (boutons, titres, :hover…) */
.jdvc-booker-shortcode-wrapper { width: 100% !important; overflow: hidden !important; }
.jdvc-bk-sc-iframe { width: 100% !important; border: none !important; min-height: 700px !important; }

.jdvc-sc-client-area, .jdvc-sc-gestion-area { font-family: sans-serif !important; }
.jdvc-bk-sc-title { margin-bottom: 20px !important; }
.jdvc-bk-sc-empty { background: #f8fafc !important; border: 1px solid #e2e8f0 !important; padding: 20px !important; border-radius: 8px !important; text-align: center !important; color: #64748b !important; }
.jdvc-bk-sc-alert { color: #b91c1c !important; background: #fef2f2 !important; padding: 12px !important; border-radius: 6px !important; }
.jdvc-bk-sc-list { display: flex !important; flex-direction: column !important; gap: 12px !important; }

.jdvc-bk-sc-row { display: flex !important; justify-content: space-between !important; align-items: center !important; background: #fff !important; border: 1px solid #e2e8f0 !important; padding: 15px !important; border-radius: 8px !important; }
.jdvc-bk-sc-row-shadow { box-shadow: 0 1px 3px rgba(0,0,0,0.05) !important; }
/* Couleur du membre : style="--jdvc-bk-color:#xxxxxx" */
.jdvc-bk-sc-row-member { border-left: 4px solid var(--jdvc-bk-color, #3b82f6) !important; }
.jdvc-bk-sc-row-title { display: block !important; font-size: 1.1rem !important; margin-bottom: 5px !important; }
.jdvc-bk-sc-row-date { color: #64748b !important; font-size: 0.9rem !important; }

.jdvc-client-cancel-btn { background: #fee2e2 !important; color: #ef4444 !important; border: none !important; padding: 8px 15px !important; border-radius: 6px !important; font-weight: 600 !important; cursor: pointer !important; transition: 0.2s !important; }
.jdvc-gestion-open-btn { background: #f1f5f9 !important; color: #0f172a !important; border: 1px solid #cbd5e1 !important; padding: 8px 15px !important; border-radius: 6px !important; font-weight: 600 !important; cursor: pointer !important; }

/* Modale Gestion (display:none reste inline : basculé par jQuery) */
#jdvc-gestion-modal { position: fixed !important; inset: 0 !important; z-index: 99999 !important; align-items: center !important; justify-content: center !important; background: rgba(0,0,0,0.5) !important; }
.jdvc-bk-sc-modal-box { background: #fff !important; width: min(500px, 90%) !important; padding: 30px !important; border-radius: 12px !important; position: relative !important; box-shadow: 0 20px 40px rgba(0,0,0,0.2) !important; }
.jdvc-gestion-close { position: absolute !important; top: 15px !important; right: 15px !important; background: none !important; border: none !important; font-size: 24px !important; cursor: pointer !important; color: #94a3b8 !important; }
.jdvc-bk-sc-loading { text-align: center !important; color: #64748b !important; }
.jdvc-bk-sc-error { color: red !important; }

/* Contenu Ajax de la modale Gestion */
.jdvc-bk-sc-info { background: #f8fafc !important; padding: 15px !important; border-radius: 8px !important; margin-bottom: 20px !important; font-size: 0.95rem !important; }
.jdvc-bk-sc-label { display: block !important; margin-bottom: 5px !important; font-weight: 600 !important; }
.jdvc-bk-sc-input { width: 100% !important; padding: 8px !important; border: 1px solid #cbd5e1 !important; border-radius: 6px !important; }
.jdvc-bk-sc-submit { width: 100% !important; background: #3b82f6 !important; color: #fff !important; border: none !important; padding: 10px !important; border-radius: 6px !important; font-weight: bold !important; cursor: pointer !important; }
.jdvc-bk-sc-modal-actions { border-top: 1px solid #e2e8f0 !important; padding-top: 15px !important; text-align: right !important; }
.jdvc-bk-sc-delete { background: none !important; color: #ef4444 !important; border: none !important; text-decoration: underline !important; cursor: pointer !important; }


/* ==========================================================================
   14. PRIORITÉ SUR ADMIN.CSS
   Les surcharges globales d'admin.css (!important sur champs, boutons WP, .widefat…) écrasaient
   ces styles propres au Booker. Préfixe #wpbody (conteneur principal de l'admin) + !important
   pour repasser devant, boutons compris.
   ========================================================================== */
/* 14.1 Booker Box : tableaux intégrés aux cartes, sans bordure propre */
.jdvc-bk-page-jdvc-bookers #wpbody .jdvc-bb-table,
.jdvc-bk-page-jdvc-bookers-dash #wpbody .jdvc-bb-table,
.jdvc-bk-page-jdvc-bookers-bookings #wpbody .jdvc-bb-table,
.jdvc-bk-page-jdvc-bookers-config #wpbody .jdvc-bb-table { border: 0 !important; box-shadow: none !important; }

/* 14.2 Clientèle : champs de la fiche client */
.jdvc-bk-page-jdvc-bookers-clients #wpbody .jdvc-bb-form-grid input { padding: 6px 10px !important; }

/* 14.3 Crédits : solde en lecture seule */
#wpbody input.jdvc-bk-readonly-value { background-color: #e2e8f0 !important; color: #0f172a !important; }

/* 14.4 Équipe : lien iCal personnel en lecture seule */
#wpbody input.regular-text.jdvc-bk-ical-field { background-color: #f1f5f9 !important; color: #64748b !important; border-color: #e2e8f0 !important; }

/* 14.5 Services / Joindre : boutons au texte rouge ("Supprimer", "×") et champ de fichier grisé */
#wpbody .button.jdvc-bk-btn-danger-text, #wpbody .button.jdvc-bk-btn-danger-text:hover,
#wpbody .button.jdvc-bk-btn-clear, #wpbody .button.jdvc-bk-btn-clear:hover { color: #b32d2e !important; }
#wpbody input.jdvc-bk-bg-muted { background-color: #f1f5f9 !important; }

/* 14.6 Import Bookly : bordure grise du tableau d'aperçu */
#wpbody .widefat.jdvc-bk-table-plain { border: 1px solid #ccd0d4 !important; }


/* ==========================================================================
   15. STATUTS, RÈGLES & NOUVEAUTÉS (Booker Box v9 / Booker de RDV v12)
   ========================================================================== */
/* 15.1 Pastilles de statut : jdvc_booking_status_badge() — admin, fiches clients, espaces front */
.jdvc-bk-status { display: inline-flex; align-items: center; gap: 4px; padding: 2px 9px; border-radius: 999px; font-size: 11px; font-weight: 600; line-height: 1.6; white-space: nowrap; vertical-align: middle; background: #f1f5f9; color: #475569; }
.jdvc-bk-status-pending   { background: #fef3c7; color: #92400e; }
.jdvc-bk-status-confirmed { background: #dbeafe; color: #1e40af; }
.jdvc-bk-status-honored   { background: #dcfce7; color: #166534; }
.jdvc-bk-status-noshow    { background: #ffedd5; color: #9a3412; }
.jdvc-bk-status-cancelled { background: #f1f5f9; color: #64748b; text-decoration: line-through; }
.jdvc-bk-status-rejected  { background: #fee2e2; color: #991b1b; }
.jdvc-bk-status-waitlist  { background: #ede9fe; color: #5b21b6; }
h2 .jdvc-bk-status { font-size: 12px; margin-left: 6px; }

/* 15.2 Liste des rendez-vous : lignes libérées, actions rapides */
.jdvc-bk-row-inactive td { opacity: 0.6; }
.jdvc-bk-row-actions { white-space: nowrap; text-align: right; }
.jdvc-bk-row-actions .button, .jdvc-bk-quick .button { margin-left: 4px; }
.jdvc-bk-quick { display: inline-flex; gap: 4px; }
#wpbody .button.jdvc-bk-act-ok { color: #15803d !important; border-color: #86efac !important; }
#wpbody .button.jdvc-bk-act-ko { color: #b91c1c !important; border-color: #fca5a5 !important; }

/* 15.3 Modale d'un rendez-vous : barre de statut + historique */
.jdvc-bk-status-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin: 10px 0 5px; padding: 12px 14px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 10px; }
.jdvc-bk-status-actions { display: flex; flex-wrap: wrap; gap: 6px; }
#wpbody .jdvc-bk-status-actions .button.is-ok { background: #16a34a !important; border-color: #16a34a !important; color: #fff !important; }
#wpbody .jdvc-bk-status-actions .button.is-ko { color: #b91c1c !important; border-color: #fca5a5 !important; }
.jdvc-bk-status-notify { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: #475569; }
.jdvc-bk-details { margin-top: 15px; border: 1px solid #e2e8f0; border-radius: 8px; background: #fff; }
.jdvc-bk-details > summary { cursor: pointer; padding: 10px 12px; font-weight: 600; font-size: 13px; color: #334155; }
.jdvc-bk-details[open] > summary { border-bottom: 1px solid #e2e8f0; }
.jdvc-bk-log { margin: 0; padding: 8px 12px; max-height: 180px; overflow: auto; list-style: none; font-size: 12px; }
.jdvc-bk-log li { padding: 4px 0; border-bottom: 1px dashed #f1f5f9; }
.jdvc-bk-log li span { color: #94a3b8; margin-right: 6px; font-variant-numeric: tabular-nums; }

/* 15.4 Tableau de bord étayé */
.jdvc-bk-dash-todo { display: grid; grid-template-columns: repeat(auto-fit, minmax(380px, 1fr)); gap: 20px; }
.jdvc-bk-dash-panel-pending { border-left: 4px solid #f59e0b; }
.jdvc-bk-dash-panel-mark { border-left: 4px solid #16a34a; }
.jdvc-bk-count { display: inline-block; min-width: 22px; padding: 1px 7px; margin-left: 6px; border-radius: 999px; background: #0f172a; color: #fff; font-size: 12px; text-align: center; }
.jdvc-bk-dash-cols.jdvc-bk-dash-cols-3 { grid-template-columns: repeat(3, 1fr); }
.jdvc-bk-dash-bilan { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-bottom: 16px; }
.jdvc-bk-dash-bilan div { padding: 10px 6px; background: #f8fafc; border-radius: 8px; text-align: center; }
.jdvc-bk-dash-bilan strong { display: block; font-size: 22px; color: #0f172a; font-variant-numeric: tabular-nums; }
.jdvc-bk-dash-bilan span { font-size: 11px; color: #64748b; }
.jdvc-bk-dash-rates { display: flex; flex-direction: column; gap: 12px; }
.jdvc-bk-dash-rate { display: grid; grid-template-columns: 1fr auto; gap: 4px 12px; font-size: 13px; color: #475569; }
.jdvc-bk-dash-rate strong { color: #0f172a; font-variant-numeric: tabular-nums; }
.jdvc-bk-dash-rate small { grid-column: 1 / -1; }
.jdvc-bk-dash-motif-track span.is-danger { background: #ef4444; }
.jdvc-bk-dash-motif-track span.is-success { background: #16a34a; }
.jdvc-bk-dash-activity { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 0; border-bottom: 1px solid #f1f5f9; font-size: 13px; }
.jdvc-bk-dash-activity:last-child { border-bottom: none; }
.jdvc-bk-dash-slot-flag .jdvc-bk-status { font-size: 10px; }
@media (max-width: 1280px) { .jdvc-bk-dash-cols.jdvc-bk-dash-cols-3 { grid-template-columns: 1fr 1fr; } }
@media (max-width: 900px)  { .jdvc-bk-dash-cols.jdvc-bk-dash-cols-3, .jdvc-bk-dash-todo { grid-template-columns: 1fr; } .jdvc-bk-dash-bilan { grid-template-columns: repeat(2, 1fr); } }

/* 15.5 Modale de création d'un RDV */
.jdvc-bk-check-inline { display: flex !important; flex-direction: row !important; align-items: center; gap: 8px !important; font-weight: 500 !important; }
#jdvc-bb-create-form select { width: 100%; max-width: none; }

/* 15.6 Clientèle : suivi, historique */
.jdvc-bk-client-stats { display: flex; flex-wrap: wrap; gap: 8px; }
.jdvc-bk-client-stats span { padding: 6px 10px; background: #fff; border: 1px solid #e2e8f0; border-radius: 8px; font-size: 12px; color: #475569; }
.jdvc-bk-client-stats span strong { color: #0f172a; margin-right: 3px; }
.jdvc-bk-client-stats span.is-alert { border-color: #fdba74; background: #fff7ed; color: #9a3412; }
.jdvc-bk-history { margin: 0; padding: 6px 12px; max-height: 240px; overflow: auto; list-style: none; }
.jdvc-bk-history li { display: grid; grid-template-columns: 120px 1fr auto; gap: 10px; align-items: center; padding: 6px 0; border-bottom: 1px dashed #f1f5f9; font-size: 12px; }
.jdvc-bk-history li span:first-child { font-variant-numeric: tabular-nums; font-weight: 600; color: #0f172a; }
.jdvc-bk-history li.is-past span:first-child { color: #64748b; font-weight: 400; }
#wpbody #jdvc-client-modal-form textarea#cl_notes { width: 100% !important; }

/* 15.7 Crédits : historique, acompte, encaissement */
.jdvc-bk-credits-log { width: 100%; border-collapse: collapse; font-size: 12px; }
.jdvc-bk-credits-log td { padding: 6px 10px; border-bottom: 1px dashed #f1f5f9; vertical-align: top; }
.jdvc-bk-credits-log td:first-child { white-space: nowrap; color: #64748b; font-variant-numeric: tabular-nums; }
.jdvc-bk-credits-log td.is-plus { color: #15803d; font-weight: 700; white-space: nowrap; }
.jdvc-bk-credits-log td.is-minus { color: #b91c1c; font-weight: 700; white-space: nowrap; }
.jdvc-bk-credits-log-wrap { max-height: 280px; overflow: auto; }
.jdvc-bk-credits-box { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 15px; padding: 10px 14px; background: #f0fdf4; border: 1px solid #bbf7d0; border-radius: 8px; font-size: 13px; }
.jdvc-bk-credits-box strong { color: #166534; }

/* 15.8 Services : suppléments (repeater admin + modale RDV) */
.jdvc-bk-supp-admin { margin: 5px 0 15px; padding: 12px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; }
.jdvc-bk-supp-admin-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.jdvc-bk-supp-row { display: flex; gap: 6px; align-items: center; margin-bottom: 6px; }
#wpbody .jdvc-bk-supp-row input.jdvc-bk-supp-num { width: 90px !important; flex: 0 0 90px; }
.jdvc-bk-supp-box { margin-top: 15px; padding: 10px 14px; background: #eff6ff; border: 1px solid #bfdbfe; border-radius: 8px; font-size: 13px; }
.jdvc-bk-supp-box ul { margin: 6px 0; padding-left: 18px; }
.jdvc-bk-supp-box li span { color: #64748b; }
.jdvc-bk-supp-box em { font-size: 12px; color: #1e40af; }

/* 15.9 Équipe : réactivation automatique */
.jdvc-bk-reactivate { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-left: 12px; font-size: 13px; color: #475569; }
#wpbody .jdvc-bk-reactivate input { width: 70px !important; }

/* 15.10 Front (page de réservation) : suppléments & crédits */
.jdvc-bk-supp-front { margin-bottom: 15px; padding: 12px 14px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 10px; }
.jdvc-bk-supp-title, .jdvc-bk-credits-title { font-size: 0.85rem; font-weight: 600; color: #1e293b; margin-bottom: 8px; }
.jdvc-bk-supp-item { display: grid; grid-template-columns: auto 1fr auto; gap: 8px; align-items: center; padding: 6px 0; cursor: pointer; font-size: 0.92rem; }
.jdvc-bk-supp-item small { color: #64748b; white-space: nowrap; }
.jdvc-bk-credits-front { margin: 5px 0 15px; padding: 12px 14px; background: #f0fdf4; border: 1px solid #bbf7d0; border-radius: 10px; font-size: 0.9rem; }
.jdvc-bk-credits-front small { display: block; color: #64748b; margin-top: 3px; }
.jdvc-bk-credits-choice { display: block; padding: 6px 0; cursor: pointer; }

/* 15.11 Espaces front (shortcodes) : statuts, report, historique */
.jdvc-bk-sc-row-actions { display: flex !important; gap: 8px !important; align-items: center !important; }
.jdvc-client-resched-btn { background: #eff6ff !important; color: #1d4ed8 !important; border: none !important; padding: 8px 15px !important; border-radius: 6px !important; font-weight: 600 !important; text-decoration: none !important; }
.jdvc-bk-sc-row-note { display: block !important; margin-top: 4px !important; font-size: 0.8rem !important; color: #b45309 !important; }
.jdvc-bk-sc-row.jdvc-bk-row-inactive { opacity: 0.6 !important; }
.jdvc-bk-sc-history { margin-top: 20px !important; }
.jdvc-bk-sc-history summary { cursor: pointer !important; font-weight: 600 !important; color: #475569 !important; }
.jdvc-bk-sc-history ul { list-style: none !important; margin: 10px 0 0 !important; padding: 0 !important; }
.jdvc-bk-sc-history li { padding: 6px 0 !important; border-bottom: 1px dashed #e2e8f0 !important; font-size: 0.9rem !important; }
.jdvc-bk-sc-history li span { color: #64748b !important; margin-right: 6px !important; }
.jdvc-bk-sc-modal-actions { display: flex !important; flex-wrap: wrap !important; gap: 8px !important; justify-content: flex-end !important; align-items: center !important; }
.jdvc-bk-sc-modal-actions .jdvc-bk-sc-submit { width: auto !important; padding: 8px 14px !important; }
