/**
 * Frontend CSS — Annuaire Pro Belgique
 * Design système complet — hommeatoutfaire.be
 *
 * Architecture :
 *   apb-front.css  → Variables CSS uniquement (chargé en premier)
 *   frontend.css   → Composants globaux (ce fichier)
 *   dashboard.css  → Dashboard pro uniquement
 *
 * Règle : jamais de duplication entre ces 3 fichiers.
 *
 * @package AnnuairePro
 */

/* =========================================================================
   Variables locales (fallback si apb-front.css non chargé)
   ========================================================================= */
:root {
    --apb-primary:        #185FA5;
    --apb-primary-dark:   #0C447C;
    --apb-primary-light:  #EBF3FB;
    --apb-accent:         #E6892A;
    --apb-accent-dark:    #C96F15;
    --apb-bg:             #F7F8FA;
    --apb-surface:        #FFFFFF;
    --apb-text:           #1A1A2E;
    --apb-text-muted:     #4B5563;   /* WCAG AAA 7.07:1 sur blanc */
    --apb-muted:          #4B5563;
    --apb-success:        #047857;   /* WCAG AA 4.98:1 sur blanc */
    --apb-danger:         #DC2626;
    --apb-warning:        #E6892A;
    --apb-border:         #E2E6EA;
    --apb-radius:         8px;
    --apb-radius-sm:      4px;
    --apb-radius-lg:      12px;
    --apb-radius-card:    16px;
    --apb-radius-btn:     10px;
    --apb-radius-input:   8px;
    --apb-radius-badge:   6px;
    --apb-space-xs:       4px;
    --apb-space-sm:       8px;
    --apb-space-md:       16px;
    --apb-space-lg:       24px;
    --apb-space-xl:       32px;
    --apb-space-2xl:      48px;
    --apb-shadow:         0 2px 8px rgba(0,0,0,.07);
    --apb-shadow-md:      0 4px 16px rgba(0,0,0,.10);
    --apb-shadow-lg:      0 8px 32px rgba(0,0,0,.13);
    --apb-font:           system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
    --apb-transition:     .17s ease;
}

/* =========================================================================
   Reset box-sizing pour nos composants
   ========================================================================= */
.apb-form *,
.apb-card *,
.apb-badges *,
.apb-contact-form *,
.apb-pro-card *,
.apb-hero *,
.apb-avis * {
    box-sizing: border-box;
}

/* HEADER — supprimé 2026-03-19 (géré par Bricks template ID 91) */

/* =========================================================================
   BOUTONS
   ========================================================================= */
.apb-btn {
    display:         inline-flex;
    align-items:     center;
    justify-content: center;
    gap:             7px;
    padding:         10px 22px;
    border-radius:   var(--apb-radius-btn);
    font-family:     var(--apb-font);
    font-size:       15px;
    font-weight:     600;
    line-height:     1.3;
    text-decoration: none;
    border:          2px solid transparent;
    cursor:          pointer;
    white-space:     nowrap;
    transition:      background var(--apb-transition),
                     color var(--apb-transition),
                     border-color var(--apb-transition),
                     box-shadow var(--apb-transition),
                     transform var(--apb-transition);
    min-height:      44px;
}
.apb-btn:disabled { opacity: .5; cursor: not-allowed; pointer-events: none; }
.apb-btn:active { transform: translateY(1px); }

.apb-btn--primary {
    background: var(--apb-primary);
    color: #fff;
    border-color: var(--apb-primary);
}
.apb-btn--primary:hover:not(:disabled) {
    background: var(--apb-primary-dark);
    border-color: var(--apb-primary-dark);
    box-shadow: 0 4px 14px rgba(24,95,165,.3);
    color: #fff;
}

.apb-btn--accent {
    background: var(--apb-accent);
    color: #fff;
    border-color: var(--apb-accent);
}
.apb-btn--accent:hover:not(:disabled) {
    background: var(--apb-accent-dark);
    border-color: var(--apb-accent-dark);
    box-shadow: 0 4px 14px rgba(230,137,42,.35);
    color: #fff;
}

.apb-btn--outline {
    background: transparent;
    color: var(--apb-primary);
    border-color: var(--apb-primary);
}
.apb-btn--outline:hover:not(:disabled) {
    background: var(--apb-primary-light);
    color: var(--apb-primary);
}

.apb-btn--ghost {
    background: transparent;
    color: var(--apb-muted);
    border-color: var(--apb-border);
}
.apb-btn--ghost:hover:not(:disabled) {
    background: var(--apb-bg);
    color: var(--apb-text);
    border-color: #c4c9d1;
}

.apb-btn--danger {
    background: var(--apb-danger);
    color: #fff;
    border-color: var(--apb-danger);
}

.apb-btn--whatsapp {
    background: #25D366;
    color: #fff;
    border-color: #25D366;
}
.apb-btn--whatsapp:hover:not(:disabled) {
    background: #1daa52;
    border-color: #1daa52;
    color: #fff;
}

.apb-btn--link {
    background: none;
    border-color: transparent;
    color: var(--apb-primary);
    padding: 0;
    font-weight: 500;
    text-decoration: underline;
    cursor: pointer;
    min-height: auto;
}

.apb-btn--sm { padding: 6px 14px; font-size: 13px; min-height: 44px; }
.apb-btn--lg { padding: 13px 28px; font-size: 17px; min-height: 52px; }
.apb-btn--full { width: 100%; justify-content: center; }

/* =========================================================================
   FORMULAIRES
   ========================================================================= */
.apb-form__field {
    margin-bottom: var(--apb-space-md);
}
.apb-form__field label,
.apb-label {
    display: block;
    font-weight: 600;
    font-size: 15px;
    color: var(--apb-text);
    margin-bottom: 6px;
}
.apb-field-hint {
    display: block;
    font-size: 13px;
    color: var(--apb-muted);
    margin: 3px 0 8px;
    line-height: 1.4;
}
.apb-field-error {
    color: var(--apb-danger);
    font-size: 13px;
    margin-top: 3px;
    display: flex;
    align-items: center;
    gap: 4px;
}
.apb-optional  { font-weight: 400; color: var(--apb-muted); font-size: 13px; margin-left: 4px; }
.apb-required  { color: var(--apb-danger); margin-left: 2px; }

/* Inputs / Textarea / Select */
.apb-form__field input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]),
.apb-form__field textarea,
.apb-form__field select,
.apb-input {
    width: 100%;
    padding: 10px 15px;
    border: 1.5px solid var(--apb-border);
    border-radius: var(--apb-radius-input);
    font-size: 15px;
    font-family: var(--apb-font);
    color: var(--apb-text);
    background: #fff;
    transition: border-color var(--apb-transition), box-shadow var(--apb-transition);
    outline: 3px solid transparent;
}
.apb-form__field input:focus:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]),
.apb-form__field textarea:focus,
.apb-form__field select:focus,
.apb-input:focus {
    border-color: var(--apb-primary);
    box-shadow: 0 0 0 3px rgba(24,95,165,.15);
}
.apb-form__field input[readonly],
.apb-form__field textarea[readonly] {
    background: var(--apb-bg);
    color: var(--apb-muted);
    cursor: not-allowed;
}

/* =========================================================================
   CHECKBOXES — sélection catégories
   ========================================================================= */
.apb-categories-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
    gap: 8px;
    margin-top: 8px;
}
.apb-checkbox-label {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 9px 13px;
    border: 1.5px solid var(--apb-border);
    border-radius: var(--apb-radius);
    cursor: pointer;
    font-size: 14px;
    color: var(--apb-text);
    background: #fff;
    transition: border-color var(--apb-transition), background var(--apb-transition);
    user-select: none;
}
.apb-checkbox-label:hover {
    border-color: var(--apb-primary);
    background: var(--apb-primary-light);
}
.apb-checkbox-label input[type="checkbox"] {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    accent-color: var(--apb-primary);
    cursor: pointer;
    margin: 0;
}
.apb-checkbox-label:has(input:checked) {
    border-color: var(--apb-primary);
    background: var(--apb-primary-light);
    color: var(--apb-primary);
    font-weight: 600;
}

/* =========================================================================
   TAGS SUGGESTIONS — boutons cliquables par catégorie
   ========================================================================= */
.apb-tags-suggestions-list {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
.apb-tag-suggestion {
    display: inline-flex;
    align-items: center;
    padding: 8px 16px;
    font-size: 0.938rem;
    font-weight: 500;
    background: var(--apb-primary-light, #EBF3FB);
    color: var(--apb-primary, #185FA5);
    border: 1px solid var(--apb-primary, #185FA5);
    border-radius: 20px;
    cursor: pointer;
    transition: background var(--apb-transition), color var(--apb-transition), transform var(--apb-transition);
    line-height: 1.3;
}
.apb-tag-suggestion:hover {
    background: var(--apb-primary, #185FA5);
    color: #fff;
    transform: scale(1.04);
}
.apb-tag-suggestion:active {
    transform: scale(.96);
}

/* =========================================================================
   RADIO BUTTONS — langue, tarif, etc.
   ========================================================================= */
.apb-radio-group,
.apb-tarif-radios {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 6px;
}
.apb-radio-label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 7px 14px;
    border: 1.5px solid var(--apb-border);
    border-radius: var(--apb-radius-btn);
    background: #fff;
    cursor: pointer;
    font-size: 14px;
    color: var(--apb-text);
    transition: border-color var(--apb-transition), background var(--apb-transition), color var(--apb-transition);
    white-space: nowrap;
    user-select: none;
}
.apb-radio-label:hover {
    border-color: var(--apb-primary);
    background: var(--apb-primary-light);
    color: var(--apb-primary);
}
.apb-radio-label input[type="radio"] {
    width: 15px;
    height: 15px;
    margin: 0;
    flex-shrink: 0;
    accent-color: var(--apb-primary);
    cursor: pointer;
}
.apb-radio-label:has(input[type="radio"]:checked) {
    border-color: var(--apb-primary);
    background: var(--apb-primary-light);
    color: var(--apb-primary);
    font-weight: 600;
}

/* Champs tarif conditionnels */
.apb-tarif-horaire-fields,
.apb-tarif-forfait-fields {
    display: none;
    padding: 14px 16px;
    background: var(--apb-primary-light);
    border-radius: var(--apb-radius);
    border-left: 3px solid var(--apb-primary);
    margin-top: 8px;
}
.apb-tarif-horaire-fields.visible,
.apb-tarif-forfait-fields.visible { display: block; }
.apb-tarif-fourchette {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--apb-space-sm);
}
.apb-tarif-fourchette label {
    font-size: 13px;
    font-weight: 600;
    color: var(--apb-text);
    display: block;
    margin-bottom: 4px;
}
.apb-tarif-fourchette input {
    width: 100%;
    padding: 7px 11px;
    border: 1.5px solid var(--apb-border);
    border-radius: var(--apb-radius-sm);
    font-size: 14px;
    font-family: var(--apb-font);
    outline: 3px solid transparent;
}

/* =========================================================================
   CHAMP TVA avec préfixe BE
   ========================================================================= */
.apb-tva-input-wrapper {
    display: flex;
    align-items: stretch;
    border: 1.5px solid var(--apb-border);
    border-radius: var(--apb-radius-input);
    overflow: hidden;
    transition: border-color var(--apb-transition), box-shadow var(--apb-transition);
}
.apb-tva-input-wrapper:focus-within {
    border-color: var(--apb-primary);
    box-shadow: 0 0 0 3px rgba(24,95,165,.15);
}
.apb-tva-prefix {
    display: flex;
    align-items: center;
    padding: 0 14px;
    background: var(--apb-bg);
    border-right: 1.5px solid var(--apb-border);
    font-weight: 700;
    font-size: 15px;
    color: var(--apb-text);
    white-space: nowrap;
    flex-shrink: 0;
}
.apb-tva-input-wrapper input {
    flex: 1;
    padding: 10px 14px;
    border: none !important;
    outline: 3px solid transparent !important;
    box-shadow: none !important;
    font-size: 15px;
    font-family: var(--apb-font);
    color: var(--apb-text);
    background: #fff;
    min-width: 0;
}
.apb-tva-status {
    font-size: 13px;
    margin-top: 5px;
    min-height: 1.2em;
    font-weight: 500;
}
.apb-tva-status.ok    { color: var(--apb-success); }
.apb-tva-status.error { color: var(--apb-danger); }

/* =========================================================================
   INPUT AVEC PRÉFIXE (Facebook, Instagram, etc.)
   ========================================================================= */
.apb-input-prefix-wrap {
    display: flex;
    align-items: stretch;
    border: 1.5px solid var(--apb-border);
    border-radius: var(--apb-radius-input);
    overflow: hidden;
    transition: border-color var(--apb-transition), box-shadow var(--apb-transition);
}
.apb-input-prefix-wrap:focus-within {
    border-color: var(--apb-primary);
    box-shadow: 0 0 0 3px rgba(24,95,165,.15);
}
.apb-input-prefix {
    padding: 0 12px;
    background: var(--apb-bg);
    border-right: 1.5px solid var(--apb-border);
    display: flex;
    align-items: center;
    font-size: 13px;
    color: var(--apb-muted);
    white-space: nowrap;
    flex-shrink: 0;
}
.apb-input-prefix-wrap input {
    flex: 1;
    border: none !important;
    outline: 3px solid transparent !important;
    box-shadow: none !important;
    padding: 10px 14px;
    font-size: 15px;
    font-family: var(--apb-font);
    color: var(--apb-text);
    min-width: 0;
    background: #fff;
}

/* =========================================================================
   BOUTON "Choisir un fichier" custom
   ========================================================================= */
.apb-file-btn {
    display: inline-flex;
    align-items: center;
    cursor: pointer;
}
.apb-file-btn span {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 9px 18px;
    background: var(--apb-primary-light);
    color: var(--apb-primary);
    border: 1.5px solid var(--apb-primary);
    border-radius: var(--apb-radius-btn);
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    transition: background var(--apb-transition), color var(--apb-transition);
}
.apb-file-btn:hover span {
    background: var(--apb-primary);
    color: #fff;
}
.apb-file-btn input[type="file"] {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
}

/* =========================================================================
   NOTICES / ALERTES
   ========================================================================= */
.apb-notice {
    padding: 13px 18px;
    border-radius: var(--apb-radius);
    margin-bottom: var(--apb-space-md);
    font-size: 14px;
    border-left: 4px solid var(--apb-muted);
    background: var(--apb-bg);
    color: var(--apb-text);
    display: flex;
    align-items: flex-start;
    gap: 8px;
}
.apb-notice--info  { border-color: var(--apb-primary); background: var(--apb-primary-light); color: #1e3a5f; }
.apb-notice--error { border-color: var(--apb-danger);  background: #fef2f2; color: #7f1d1d; }
.apb-notice--warn  { border-color: var(--apb-warning); background: #fffbeb; color: #78350f; }
.apb-form__messages { margin-bottom: var(--apb-space-md); }

/* =========================================================================
   BADGES
   ========================================================================= */
.apb-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin: 6px 0;
}
.apb-badge {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .01em;
    background: color-mix(in srgb, var(--apb-badge-color) 14%, white);
    color: var(--apb-badge-color);
    border: 1px solid color-mix(in srgb, var(--apb-badge-color) 25%, white);
}
.apb-badge--vies    { --apb-badge-color: #047857; }
.apb-badge--cat     { --apb-badge-color: #185FA5; }
.apb-badge--exp     { --apb-badge-color: #7c3aed; }
.apb-badge--super   { --apb-badge-color: #d97706; }
.apb-badge--complet { --apb-badge-color: #0891b2; }

/* =========================================================================
   ÉTOILES (avis)
   ========================================================================= */
.apb-stars {
    display: inline-flex;
    gap: 1px;
    color: var(--apb-warning);
    font-size: 16px;
    line-height: 1;
}

/* .apb-rating-input — supprimé 2026-03-19 (remplacé par widgets Bricks) */

/* =========================================================================
   DISPONIBILITÉ — avviso dans les cartes pro (archive)
   ========================================================================= */
.apb-pro-card__dispo {
    font-size: 13px;
    padding: 6px 10px;
    border-radius: var(--apb-radius-badge, 6px);
    margin-top: 8px;
    line-height: 1.4;
}
.apb-pro-card__dispo--ok {
    background: rgba(4, 120, 87, .08);
    color: #047857;
}
.apb-pro-card__dispo--warn {
    background: rgba(230, 137, 42, .08);
    color: #B45309;
}

/* =========================================================================
   BARRE DE PROGRESSION (score complétude)
   ========================================================================= */
.apb-progress__bar {
    height: 100%;
    background: var(--apb-primary);
    border-radius: 999px;
    transition: width .5s cubic-bezier(.4,0,.2,1);
}
.apb-progress__bar--ok     { background: var(--apb-success); }
.apb-progress__bar--warn   { background: var(--apb-warning); }
.apb-progress__bar--danger { background: var(--apb-danger); }

/* =========================================================================
   BREADCRUMBS (shortcode [apb_breadcrumbs])
   ========================================================================= */
.apb-breadcrumbs { padding: 12px 0; font-size: 13px; line-height: 1.4; }
.apb-breadcrumbs__list { display: flex; flex-wrap: wrap; align-items: center; gap: 0; list-style: none; margin: 0; padding: 0; }
.apb-breadcrumbs__item { display: inline-flex; align-items: center; gap: 0; }
.apb-breadcrumbs__link { color: var(--apb-primary, #185FA5); text-decoration: none; font-weight: 500; }
.apb-breadcrumbs__link:hover { color: var(--apb-primary-dark, #0C447C); text-decoration: underline; }
.apb-breadcrumbs__current { color: var(--apb-text-muted, #6B7280); }
.apb-breadcrumbs__sep { margin: 0 8px; color: var(--apb-border, #E2E6EA); font-size: 16px; }

/* =========================================================================
   CARDS PROFIL (archive)
   ========================================================================= */
.apb-pro-card {
    background: #fff;
    border: 1.5px solid var(--apb-border);
    border-radius: var(--apb-radius-card);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    transition: box-shadow var(--apb-transition), transform var(--apb-transition), border-color var(--apb-transition);
}
.apb-pro-card:hover {
    box-shadow: var(--apb-shadow-lg);
    transform: translateY(-3px);
    border-color: var(--apb-primary, #185FA5);
}
.apb-pro-card--premium {
    border-color: var(--apb-primary, #185FA5);
    box-shadow: 0 0 0 1.5px rgba(24,95,165,.2);
}
.apb-pro-card__photo-wrap { display: block; overflow: hidden; }
.apb-pro-card__photo,
.apb-pro-card__photo--placeholder {
    width: 100%;
    aspect-ratio: 4/3;
    object-fit: cover;
    transition: transform .3s ease;
}
.apb-pro-card__photo--placeholder {
    background: linear-gradient(135deg, var(--apb-primary) 0%, var(--apb-primary-dark) 100%);
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-size: 40px;
    font-weight: 800;
}
.apb-pro-card:hover .apb-pro-card__photo { transform: scale(1.04); }
.apb-pro-card__body {
    padding: 16px 18px;
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.apb-pro-card__badges   { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 2px; }
.apb-pro-card__titre    { font-size: 16px; font-weight: 700; color: var(--apb-text); margin: 0; line-height: 1.3; }
.apb-pro-card__titre a  { color: inherit; text-decoration: none; }
.apb-pro-card__titre a:hover { color: var(--apb-primary); }
.apb-pro-card__commune  { font-size: 13px; color: var(--apb-muted); margin: 0; display: inline-flex !important; align-items: center !important; gap: 5px; flex-wrap: nowrap; line-height: 1; }
.apb-pro-card__commune-pin { flex-shrink: 0; }
.apb-pro-card__commune-name { font-weight: 700 !important; color: var(--apb-text, #1A1A2E) !important; }
.apb-pro-card__rayon {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    font-size: 11px;
    font-weight: 600;
    color: var(--apb-primary, #185FA5);
    background: rgba(24,95,165,.06);
    padding: 2px 8px;
    border-radius: 10px;
    white-space: nowrap;
}
.apb-pro-card__rayon svg { color: var(--apb-primary, #185FA5); flex-shrink: 0; }
.apb-pro-card__note     { display: flex; align-items: center; gap: 5px; font-size: 14px; }
.apb-pro-card__nb-avis  { color: var(--apb-muted); font-size: 12px; }
.apb-pro-card__desc {
    font-size: 14px;
    color: #4b5563;
    flex: 1;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    line-height: 1.5;
}
.apb-pro-card__tarif    { font-size: 12px; color: var(--apb-muted); font-style: italic; margin: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 55%; }
.apb-pro-card__footer   {
    padding: 12px 18px;
    border-top: 1px solid var(--apb-border, #E2E6EA);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    background: var(--apb-bg, #F7F8FA);
    margin-top: auto;
}
.apb-pro-card__footer .apb-btn { flex-shrink: 0; }

/* Grille profils */
.apb-pro-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--apb-space-lg);
}
@media (max-width: 900px) {
    .apb-pro-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}
@media (max-width: 600px) {
    .apb-pro-grid {
        grid-template-columns: 1fr;
        gap: 16px;
    }
    .apb-pro-card__photo,
    .apb-pro-card__photo--placeholder {
        aspect-ratio: 16/9;
    }
}

/* Toolbar archive */
.apb-archive__toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 20px;
}

/* CTA Devenir Pro dans la grille */
.apb-pro-grid__cta-card {
    background: linear-gradient(135deg, #185FA5 0%, #0C447C 100%);
    border-radius: var(--apb-radius-card, 16px);
    padding: 32px 24px;
    color: #fff;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}
.apb-pro-grid__cta-card h3 {
    font-size: 20px;
    font-weight: 800;
    margin-bottom: 8px;
}
.apb-pro-grid__cta-card p {
    font-size: 14px;
    opacity: .85;
    margin-bottom: 20px;
    line-height: 1.5;
}
.apb-btn--accent {
    background: #E6892A;
    color: #fff;
    padding: 12px 24px;
    border-radius: 10px;
    font-size: 15px;
    font-weight: 700;
    text-decoration: none;
    display: inline-block;
    border: none;
    cursor: pointer;
    transition: background .2s;
}
.apb-btn--accent:hover {
    background: #D4781F;
    color: #fff;
}

/* Tarif dans le footer card */
.apb-pro-card__footer .apb-pro-card__tarif {
    margin: 0;
    padding: 0;
    font-size: 13px;
    color: var(--apb-text-muted, #6B7280);
}

/* =========================================================================
   PAGINATION
   ========================================================================= */
.apb-pagination {
    margin-top: var(--apb-space-xl);
    display: flex;
    justify-content: center;
}
.apb-pagination__list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    gap: 5px;
    flex-wrap: wrap;
}
.apb-pagination__list a,
.apb-pagination__list span {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    height: 44px;
    padding: 0 8px;
    border: 1.5px solid var(--apb-border);
    border-radius: var(--apb-radius);
    text-decoration: none;
    color: var(--apb-text);
    font-size: 14px;
    font-weight: 500;
    transition: background var(--apb-transition), border-color var(--apb-transition), color var(--apb-transition);
}
.apb-pagination__list a:hover { background: var(--apb-primary-light); border-color: var(--apb-primary); color: var(--apb-primary); }
.apb-pagination__list .current span,
.apb-pagination__list [aria-current] {
    background: var(--apb-primary);
    border-color: var(--apb-primary);
    color: #fff;
    font-weight: 700;
}

/* =========================================================================
   FORMULAIRE DE CONTACT
   ========================================================================= */
.apb-contact-form {
    background: #fff;
    border: 1.5px solid var(--apb-border);
    border-radius: var(--apb-radius-card);
    padding: var(--apb-space-xl);
    max-width: 560px;
    box-shadow: var(--apb-shadow);
}
.apb-contact-form__login-required {
    display: flex;
    flex-direction: column;
    gap: 12px;
    align-items: stretch;
}
.apb-contact-form__login-required .apb-btn {
    text-align: center;
    justify-content: center;
}
.apb-contact-form__login-required button.apb-btn--outline {
    background: transparent !important;
    color: #fff !important;
    border: 2px solid rgba(255,255,255,.6) !important;
    border-color: rgba(255,255,255,.6) !important;
}
.apb-contact-form__login-required button.apb-btn--outline:hover {
    background: rgba(255,255,255,.15) !important;
    border-color: #fff !important;
    color: #fff !important;
}

/* =========================================================================
   AVIS CLIENTS
   ========================================================================= */
.apb-avis {
    border: 1.5px solid var(--apb-border);
    border-radius: var(--apb-radius-card);
    padding: var(--apb-space-md) var(--apb-space-lg);
    margin-bottom: var(--apb-space-md);
    background: #fff;
    transition: box-shadow var(--apb-transition);
}
.apb-avis:hover { box-shadow: var(--apb-shadow); }
.apb-avis__header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 10px;
    flex-wrap: wrap;
}
.apb-avis__auteur  { font-weight: 700; color: var(--apb-text); }
.apb-avis__date    { color: var(--apb-muted); font-size: 13px; }
.apb-avis__texte   { color: #374151; line-height: 1.65; }
.apb-avis__service { font-size: 13px; color: var(--apb-muted); font-style: italic; margin-top: 6px; }
.apb-avis__reponse {
    margin-top: 14px;
    padding: 12px 16px;
    background: var(--apb-bg);
    border-left: 3px solid var(--apb-primary);
    border-radius: 0 var(--apb-radius) var(--apb-radius) 0;
    font-size: 14px;
}
.apb-avis__reponse-label { font-weight: 700; color: var(--apb-primary); margin-bottom: 4px; font-size: 14px; }

/* =========================================================================
   TAGS / SERVICES
   ========================================================================= */
.apb-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.apb-tag {
    padding: 4px 11px;
    background: var(--apb-primary-light);
    color: var(--apb-primary);
    border-radius: 999px;
    font-size: 13px;
    font-weight: 600;
    border: 1px solid rgba(24,95,165,.15);
}

/* =========================================================================
   TÉLÉPHONE MASQUÉ
   ========================================================================= */
.apb-telephone { display: inline-flex; align-items: center; gap: 6px; }
.apb-telephone__masque { font-family: monospace; letter-spacing: .05em; color: var(--apb-muted); }
.apb-telephone__link {
    color: var(--apb-text);
    text-decoration: none;
    font-weight: 600;
}
.apb-telephone__link:hover { color: var(--apb-primary); text-decoration: underline; }

/* =========================================================================
   HERO — PAGE PROFIL
   ========================================================================= */
.apb-hero {
    background: linear-gradient(135deg, var(--apb-bg) 0%, #fff 100%);
    border: 1.5px solid var(--apb-border);
    border-radius: var(--apb-radius-card);
    padding: var(--apb-space-xl);
    margin-bottom: var(--apb-space-xl);
    box-shadow: var(--apb-shadow);
}
.apb-hero__inner {
    display: flex;
    gap: var(--apb-space-xl);
    align-items: flex-start;
}
.apb-hero__photo-col {
    position: relative;
    flex-shrink: 0;
}
.apb-hero__photo {
    width: 130px;
    height: 130px;
    object-fit: cover;
    border-radius: var(--apb-radius-card);
    border: 3px solid #fff;
    box-shadow: var(--apb-shadow-md);
}
.apb-hero__photo--placeholder {
    width: 130px;
    height: 130px;
    background: linear-gradient(135deg, var(--apb-primary), var(--apb-primary-dark));
    border-radius: var(--apb-radius-card);
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-size: 44px;
    font-weight: 800;
    box-shadow: var(--apb-shadow-md);
}
.apb-hero__premium-ribbon {
    position: absolute;
    bottom: -8px;
    left: 50%;
    transform: translateX(-50%);
    background: linear-gradient(135deg, var(--apb-accent), var(--apb-accent-dark));
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    padding: 3px 11px;
    border-radius: 999px;
    white-space: nowrap;
    box-shadow: 0 2px 6px rgba(230,137,42,.35);
}
.apb-hero__content { flex: 1; min-width: 0; }
.apb-hero__badges  { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.apb-hero__nom     { font-size: 26px; font-weight: 800; color: var(--apb-text); margin: 0 0 6px; line-height: 1.2; }
.apb-hero__localisation {
    display: flex; align-items: center; gap: 6px;
    color: var(--apb-muted); font-size: 14px; margin-bottom: 6px;
}
.apb-hero__note {
    display: flex; align-items: center; gap: 6px;
    font-size: 14px; margin-bottom: 14px;
    font-weight: 600;
}
.apb-hero__nb-avis  { color: var(--apb-muted); font-size: 13px; font-weight: 400; }
.apb-hero__cta      { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 10px; }
.apb-hero__reseaux  { display: flex; gap: 6px; margin-top: 8px; flex-wrap: wrap; }
.apb-reseau {
    display: inline-flex; align-items: center; justify-content: center;
    width: 44px; height: 44px;
    min-width: 44px; min-height: 44px;
    background: var(--apb-bg); border-radius: var(--apb-radius);
    color: var(--apb-muted); font-size: 13px; font-weight: 700;
    text-decoration: none; border: 1px solid var(--apb-border);
    transition: background var(--apb-transition), color var(--apb-transition);
}
.apb-reseau:hover { background: var(--apb-primary-light); color: var(--apb-primary); border-color: var(--apb-primary); }

/* =========================================================================
   INFOS PROFIL (section détails)
   ========================================================================= */
.apb-infos__section {
    margin-bottom: var(--apb-space-xl);
    padding-bottom: var(--apb-space-xl);
    border-bottom: 1px solid var(--apb-border);
}
.apb-infos__section:last-child { border-bottom: none; }
.apb-infos__titre { font-size: 18px; font-weight: 700; color: var(--apb-text); margin: 0 0 var(--apb-space-md); }
.apb-infos__desc  { line-height: 1.75; color: #374151; }
.apb-infos__dl    { display: flex; flex-direction: column; gap: 10px; }
.apb-infos__row   { display: flex; gap: 16px; }
.apb-infos__row dt { width: 170px; flex-shrink: 0; font-weight: 600; color: var(--apb-text); font-size: 14px; }
.apb-infos__row dd { color: #4b5563; font-size: 14px; }

/* =========================================================================
   AVATAR PROFIL ([apb_avatar])
   ========================================================================= */
.apb-avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    overflow: hidden;
    flex-shrink: 0;
    background: var(--apb-primary-light, #EBF3FB);
    border: 3px solid var(--apb-border, #E2E6EA);
}
/* .apb-avatar size modifiers (--lg/--md/--sm) — supprimés 2026-03-19 (jamais utilisés) */
.apb-avatar__img { width: 100%; height: 100%; object-fit: cover; display: block; }
.apb-avatar--placeholder { background: var(--apb-primary, #185FA5); border-color: var(--apb-primary, #185FA5); }
.apb-avatar__initiales {
    color: #fff;
    font-weight: 700;
    font-size: 1.4em;
    line-height: 1;
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

/* =========================================================================
   GALERIE PHOTOS (profil) — [apb_galerie] + ancien .apb-galerie__grid
   ========================================================================= */
/* Nouveau système col-X */
.apb-galerie {
    display: grid;
    gap: 10px;
}
.apb-galerie--col-2 { grid-template-columns: repeat(2, 1fr); }
.apb-galerie--col-3 { grid-template-columns: repeat(3, 1fr); }
.apb-galerie--col-4 { grid-template-columns: repeat(4, 1fr); }

/* Ancien système (rétrocompatibilité dashboard) */
.apb-galerie__grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(170px, 1fr));
    gap: 10px;
}
.apb-galerie__item { display: block; border-radius: var(--apb-radius); overflow: hidden; }
.apb-galerie__img  { width: 100%; aspect-ratio: 4/3; object-fit: cover; transition: transform .25s ease; }
.apb-galerie__item:hover .apb-galerie__img { transform: scale(1.05); }

/* =========================================================================
   RECHERCHE IA
   ========================================================================= */
.apb-recherche-ia { max-width: 720px; margin: 0 auto; }
.apb-recherche-ia__input-wrap {
    display: flex;
    gap: 8px;
    background: #fff;
    border: 2px solid var(--apb-border);
    border-radius: var(--apb-radius-btn);
    padding: 6px 6px 6px 12px;
    transition: border-color var(--apb-transition), box-shadow var(--apb-transition);
}
.apb-recherche-ia__input-wrap:focus-within {
    border-color: var(--apb-primary);
    box-shadow: 0 0 0 4px rgba(24,95,165,.12);
}
.apb-recherche-ia__input {
    flex: 1;
    border: none;
    outline: 3px solid transparent;
    font-size: 16px;
    font-family: var(--apb-font);
    color: var(--apb-text);
    background: transparent;
    min-width: 0;
}
.apb-recherche-ia__input::placeholder { color: var(--apb-muted); }

/* =========================================================================
   PAGE GÉO-LOCALE
   ========================================================================= */
/* .apb-geo-page-header — supprimé 2026-03-19 (legacy geo-pages) */

/* =========================================================================
   ARCHIVE — titre + compteur
   ========================================================================= */
.apb-archive__titre { font-size: 27px; font-weight: 800; margin: 0 0 8px; }
.apb-archive__count { color: var(--apb-primary); font-size: 14px; margin-bottom: 16px; }
.apb-archive__count strong {
    color: var(--apb-primary, #185FA5);
    font-weight: 700;
}
.apb-archive__vide  { text-align: center; padding: 48px 16px; }
.apb-archive__vide p { color: var(--apb-muted); margin-bottom: 16px; }
/* Messages multi-services — matching partiel */
.apb-archive__match-info {
    background: #EBF3FB;
    border: 1px solid #B8D4F0;
    border-radius: 8px;
    padding: 10px 14px;
    margin: -4px 0 16px;
    font-size: 13px;
    line-height: 1.5;
    color: var(--apb-primary, #185FA5);
}
.apb-archive__match-info--full {
    background: #ECFDF5;
    border-color: #A7F3D0;
    color: #065F46;
}
.apb-archive__match-ico { margin-right: 4px; }
.apb-archive__section-complement {
    margin-top: 32px;
    padding-top: 24px;
    border-top: 2px solid var(--apb-border, #E2E6EA);
}
.apb-archive__section-complement h3 {
    font-size: 16px;
    font-weight: 700;
    color: var(--apb-primary, #185FA5);
    margin-bottom: 16px;
}
.apb-archive__complement-vide {
    font-size: 14px;
    color: var(--apb-muted, #6B7280);
}

@media (max-width: 768px) {
    .apb-archive__titre { font-size: 22px; }
    .apb-archive__vide { padding: 32px 16px; }
    .apb-archive__vide p { font-size: 16px !important; }
    .apb-archive__match-info { font-size: 12px; padding: 8px 12px; }
    .apb-archive__section-complement { margin-top: 24px; padding-top: 16px; }
}

/* =========================================================================
   LOADER / SPINNER
   ========================================================================= */
.apb-spinner {
    display: inline-block;
    width: 20px;
    height: 20px;
    border: 2px solid rgba(0,0,0,.12);
    border-top-color: var(--apb-primary);
    border-radius: 50%;
    animation: apb-spin .7s linear infinite;
    vertical-align: middle;
}
@keyframes apb-spin { to { transform: rotate(360deg); } }

/* .apb-sr-only défini dans apb-front.css (source unique) */

/* =========================================================================
   RESPONSIVE GLOBAL
   ========================================================================= */
@media (max-width: 768px) {
    .apb-hero__inner { flex-direction: column; align-items: center; text-align: center; }
    .apb-hero__cta   { justify-content: center; }
    .apb-hero__reseaux { justify-content: center; }
    .apb-hero__photo, .apb-hero__photo--placeholder { width: 100px; height: 100px; }
    .apb-hero__nom   { font-size: 22px; }
    .apb-infos__row  { flex-direction: column; gap: 2px; }
    .apb-infos__row dt { width: auto; }
    .apb-hero        { padding: var(--apb-space-lg); }
}
@media (max-width: 640px) {
    .apb-pro-grid    { grid-template-columns: 1fr; }
    .apb-contact-form { padding: var(--apb-space-lg); }
    .apb-recherche-ia__input-wrap { flex-direction: column; padding: 8px; gap: 6px; }
    .apb-recherche-ia__input { padding: 6px 8px; }
    .apb-btn--lg     { width: 100%; }
    .apb-hero__cta   { flex-direction: column; }
    .apb-galerie__grid { grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); }
}

/* =========================================================================
   STATS BAR — [apb_stats_bar]
   ========================================================================= */
.apb-stats-bar {
    background:      linear-gradient(135deg, var(--apb-primary) 0%, var(--apb-primary-dark) 100%);
    color:           #fff;
    display:         flex;
    justify-content: center;
    align-items:     stretch;
    gap:             0;
    padding:         0;
    border-radius:   var(--apb-radius-card);
    overflow:        hidden;
    box-shadow:      var(--apb-shadow-md);
}
.apb-stats-bar > div {
    flex:            1;
    display:         flex;
    flex-direction:  column;
    align-items:     center;
    justify-content: center;
    gap:             4px;
    padding:         28px 20px;
    font-size:       32px;
    font-weight:     800;
    line-height:     1;
    position:        relative;
    text-align:      center;
}
.apb-stats-bar > div + div::before {
    content:    '';
    position:   absolute;
    left:       0;
    top:        20%;
    bottom:     20%;
    width:      1px;
    background: rgba(255,255,255,.25);
}
.apb-stats-bar > div > span {
    font-size:   13px;
    font-weight: 400;
    opacity:     .85;
    letter-spacing: .02em;
    text-transform: uppercase;
    margin-top:  2px;
}
@media (max-width: 600px) {
    .apb-stats-bar           { flex-direction: column; }
    .apb-stats-bar > div     { padding: 18px 20px; font-size: 26px; }
    .apb-stats-bar > div + div::before {
        top: 0; bottom: auto; left: 20%; right: 20%;
        width: auto; height: 1px;
    }
}

/* =========================================================================
   GRILLE CATÉGORIES HOMEPAGE — [apb_categories_grid]
   ========================================================================= */
/* Override le grid dashboard-only : ici les items sont des liens */
.apb-categories-grid {
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 14px;
    margin-top: 0;
}
.apb-categories-grid__item {
    display:         flex;
    flex-direction:  column;
    align-items:     center;
    gap:             8px;
    padding:         20px 12px 16px;
    background:      #fff;
    border:          1.5px solid var(--apb-border);
    border-radius:   var(--apb-radius-card);
    text-decoration: none;
    color:           var(--apb-text);
    text-align:      center;
    transition:      border-color var(--apb-transition),
                     box-shadow   var(--apb-transition),
                     transform    var(--apb-transition);
}
.apb-categories-grid__item:hover {
    border-color: var(--apb-primary);
    box-shadow:   0 4px 18px rgba(24,95,165,.13);
    transform:    translateY(-3px);
    color:        var(--apb-primary);
}
.apb-categories-grid__icone {
    font-size:   2.2rem;
    line-height: 1;
}
.apb-categories-grid__nom {
    font-size:   .85rem;
    font-weight: 700;
    line-height: 1.2;
}
.apb-categories-grid__count {
    font-size:   .75rem;
    color:       var(--apb-muted);
    font-weight: 500;
}
.apb-categories-grid__item:hover .apb-categories-grid__count {
    color: var(--apb-primary);
    opacity: .75;
}
@media (max-width: 480px) {
    .apb-categories-grid { grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: 10px; }
    .apb-categories-grid__item { padding: 14px 8px 12px; }
    .apb-categories-grid__icone { font-size: 1.8rem; }
}

/* =========================================================================
   CTA PRO — [apb_cta_pro]
   ========================================================================= */
.apb-cta-pro {
    background:    linear-gradient(135deg, #0C447C 0%, #185FA5 60%, #1e6fbf 100%);
    border-radius: var(--apb-radius-card);
    padding:       48px 40px;
    color:         #fff;
    box-shadow:    var(--apb-shadow-lg);
    position:      relative;
    overflow:      hidden;
}
.apb-cta-pro::before {
    content:       '';
    position:      absolute;
    top:           -60px;
    right:         -60px;
    width:         220px;
    height:        220px;
    border-radius: 50%;
    background:    rgba(255,255,255,.06);
    pointer-events: none;
}
.apb-cta-pro__inner {
    display:         flex;
    align-items:     center;
    justify-content: space-between;
    gap:             32px;
    position:        relative;
    z-index:         1;
}
.apb-cta-pro__contenu {
    flex: 1;
    max-width: 560px;
}
.apb-cta-pro__titre {
    font-size:   26px;
    font-weight: 800;
    margin:      0 0 8px;
    line-height: 1.2;
    color:       #fff;
}
.apb-cta-pro__sous-titre {
    font-size:  15px;
    opacity:    .85;
    margin:     0 0 20px;
    color:      rgba(255,255,255,.9);
}
.apb-cta-pro__avantages {
    list-style:  none;
    padding:     0;
    margin:      0;
    display:     flex;
    flex-wrap:   wrap;
    gap:         8px 20px;
}
.apb-cta-pro__avantages li {
    font-size:  14px;
    opacity:    .9;
    display:    flex;
    align-items: center;
    gap:        6px;
}
.apb-cta-pro__avantages li::before {
    content:         '✓';
    display:         inline-flex;
    align-items:     center;
    justify-content: center;
    width:           20px;
    height:          20px;
    border-radius:   50%;
    background:      rgba(255,255,255,.2);
    font-size:       12px;
    font-weight:     700;
    flex-shrink:     0;
}
.apb-cta-pro__actions {
    display:     flex;
    flex-direction: column;
    gap:         12px;
    flex-shrink: 0;
}
.apb-cta-pro__actions .apb-btn--outline {
    border-color: rgba(255,255,255,.5);
    color:        #fff;
}
.apb-cta-pro__actions .apb-btn--outline:hover {
    background:   rgba(255,255,255,.15);
    border-color: #fff;
    color:        #fff;
}
@media (max-width: 760px) {
    .apb-cta-pro             { padding: 32px 24px; }
    .apb-cta-pro__inner      { flex-direction: column; align-items: flex-start; }
    .apb-cta-pro__actions    { flex-direction: row; flex-wrap: wrap; width: 100%; }
    .apb-cta-pro__actions .apb-btn { flex: 1; min-width: 140px; justify-content: center; }
    .apb-cta-pro__titre      { font-size: 21px; }
}
@media (max-width: 480px) {
    .apb-cta-pro             { padding: 24px 16px; }
    .apb-cta-pro__actions .apb-btn { width: 100%; }
}

/* ============================================================
   SYSTÈME D'AVIS — MULTI-CRITÈRES
   ============================================================ */

/* ── Notices ─────────────────────────────────────────────── */
.apb-avis-notice {
    display:       flex;
    align-items:   flex-start;
    gap:           10px;
    padding:       14px 16px;
    border-radius: var(--apb-radius-input, 8px);
    font-size:     14px;
    line-height:   1.5;
    margin-bottom: 16px;
}
.apb-avis-notice svg { flex-shrink: 0; margin-top: 2px; }
.apb-avis-notice--lock {
    background: #f0f4ff;
    border:     1px solid #c7d7f8;
    color:      var(--apb-primary, #185FA5);
}
.apb-avis-notice--info {
    background: #fffbeb;
    border:     1px solid #fde68a;
    color:      #92400e;
}
.apb-avis-notice--success {
    background: #f0fdf4;
    border:     1px solid #bbf7d0;
    color:      #166534;
}

/* ── Formulaire d'avis ───────────────────────────────────── */
.apb-avis-form__titre {
    display:     flex;
    align-items: center;
    gap:         8px;
    font-size:   17px;
    font-weight: 700;
    color:       var(--apb-text, #1A1A2E);
    margin:      0 0 18px;
}

/* ── Critères de notation ────────────────────────────────── */
.apb-criteres-notation {
    background:    #f8fafc;
    border:        1px solid var(--apb-border, #e2e6ea);
    border-radius: var(--apb-radius-input, 8px);
    padding:       16px 18px;
    margin-bottom: 18px;
}
.apb-criteres-notation__intro {
    font-size:   13px;
    color:       var(--apb-text-muted, #6B7280);
    margin:      0 0 14px;
}
.apb-critere-row {
    display:     flex;
    align-items: center;
    gap:         12px;
    padding:     8px 0;
    border-bottom: 1px solid var(--apb-border, #e2e6ea);
}
.apb-critere-row:last-of-type { border-bottom: none; }
.apb-critere-row__label {
    width:       145px;
    flex-shrink: 0;
    font-size:   13px;
    font-weight: 500;
    color:       var(--apb-text, #1A1A2E);
}
.apb-critere-row__val {
    width:       24px;
    text-align:  right;
    font-size:   13px;
    font-weight: 700;
    color:       var(--apb-text-muted, #6B7280);
    flex-shrink: 0;
}

/* ── Star rater (CSS-only, flex-direction row-reverse) ───── */
.apb-stars-rater {
    display:         inline-flex;
    flex-direction:  row-reverse;
    gap:             2px;
    flex:            1;
}
.apb-stars-rater input[type="radio"] { display: none; }
.apb-stars-rater label {
    font-size:   26px;
    line-height: 1;
    color:       #d1d5db;
    cursor:      pointer;
    transition:  color .12s, transform .1s;
    user-select: none;
}
.apb-stars-rater label:hover,
.apb-stars-rater label:hover ~ label                      { color: #F59E0B; transform: scale(1.12); }
.apb-stars-rater input:checked + label,
.apb-stars-rater input:checked + label ~ label            { color: #F59E0B; }
/* Hover override: si hover, masquer l'état checked visuel */
.apb-stars-rater label:hover ~ label                      { color: #F59E0B; }

/* ── Note globale preview ────────────────────────────────── */
.apb-note-globale-preview {
    display:     flex;
    align-items: center;
    gap:         8px;
    margin-top:  14px;
    padding-top: 12px;
    border-top:  2px solid var(--apb-border, #e2e6ea);
}
.apb-note-globale-preview__label {
    font-size:   13px;
    color:       var(--apb-text-muted, #6B7280);
}
.apb-note-globale-preview__etoiles { color: #F59E0B; font-size: 18px; }
.apb-note-globale-preview__val {
    font-size:   18px;
    font-weight: 800;
    color:       var(--apb-text, #1A1A2E);
}

/* ── Liste des avis ──────────────────────────────────────── */
.apb-avis-liste { display: flex; flex-direction: column; gap: 16px; }
.apb-avis-vide  { font-size: 14px; color: var(--apb-text-muted, #6B7280); font-style: italic; margin: 8px 0; }

/* ── Carte d'avis ────────────────────────────────────────── */
.apb-avis-item {
    background:    #fff;
    border:        1px solid var(--apb-border, #e2e6ea);
    border-radius: 12px;
    padding:       18px 20px;
    transition:    box-shadow .2s;
}
.apb-avis-item:hover { box-shadow: 0 4px 16px rgba(0,0,0,.08); }

.apb-avis-item__header {
    display:     flex;
    align-items: flex-start;
    gap:         12px;
    margin-bottom: 14px;
}

/* Avatar initiale */
.apb-avis-item__avatar {
    width:           38px;
    height:          38px;
    border-radius:   50%;
    background:      linear-gradient(135deg, var(--apb-primary, #185FA5), #3b82f6);
    color:           #fff;
    font-size:       16px;
    font-weight:     700;
    display:         flex;
    align-items:     center;
    justify-content: center;
    flex-shrink:     0;
}

.apb-avis-item__meta {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.apb-avis-item__auteur { font-size: 14px; font-weight: 700; color: var(--apb-text, #1A1A2E); }
.apb-avis-item__date   { font-size: 12px; color: var(--apb-text-muted, #6B7280); }
.apb-avis-item__service{
    font-size:     12px;
    color:         var(--apb-text-muted, #6B7280);
    background:    #f1f5f9;
    border-radius: 4px;
    padding:       2px 7px;
    display:       inline-block;
    margin-top:    2px;
}

/* Note globale */
.apb-avis-item__note-globale {
    display:         flex;
    flex-direction:  column;
    align-items:     center;
    gap:             2px;
    flex-shrink:     0;
    background:      #fffbeb;
    border:          1px solid #fde68a;
    border-radius:   8px;
    padding:         6px 12px;
    min-width:       60px;
}
.apb-avis-item__note-num {
    font-size:   20px;
    font-weight: 800;
    color:       #B45309;
    line-height: 1;
}
.apb-avis-item__etoiles {
    font-size: 13px;
    color:     #F59E0B;
    letter-spacing: -1px;
}

/* Barres critères */
.apb-avis-item__criteres {
    display:       flex;
    flex-direction: column;
    gap:           7px;
    background:    #f8fafc;
    border-radius: 8px;
    padding:       12px 14px;
    margin-bottom: 12px;
}
.apb-avis-critere {
    display:     flex;
    align-items: center;
    gap:         10px;
}
.apb-avis-critere__label {
    width:       70px;
    flex-shrink: 0;
    font-size:   12px;
    color:       var(--apb-text-muted, #6B7280);
    font-weight: 500;
}
.apb-avis-critere__bar {
    flex:          1;
    height:        6px;
    background:    #e2e6ea;
    border-radius: 99px;
    overflow:      hidden;
}
.apb-avis-critere__fill {
    height:        100%;
    background:    linear-gradient(90deg, #F59E0B, #FBBF24);
    border-radius: 99px;
    transition:    width .5s ease;
}
.apb-avis-critere__val {
    font-size:  11px;
    font-weight:700;
    color:      #B45309;
    flex-shrink:0;
    width:      28px;
    text-align: right;
}

/* Texte de l'avis */
.apb-avis-item__texte {
    font-size:   14px;
    line-height: 1.6;
    color:       var(--apb-text, #1A1A2E);
    margin:      0 0 0;
}

/* Réponse du pro */
.apb-avis-item__reponse {
    display:       flex;
    align-items:   flex-start;
    gap:           10px;
    background:    #f0f4ff;
    border-left:   3px solid var(--apb-primary, #185FA5);
    border-radius: 0 8px 8px 0;
    padding:       10px 14px;
    margin-top:    12px;
    font-size:     13px;
    color:         #1e3a5f;
}
.apb-avis-item__reponse svg { flex-shrink: 0; margin-top: 2px; color: var(--apb-primary, #185FA5); }
.apb-avis-item__reponse strong { display: block; font-size: 12px; margin-bottom: 3px; }
.apb-avis-item__reponse p { margin: 0; }

/* ── Responsive ──────────────────────────────────────────── */
@media (max-width: 520px) {
    .apb-critere-row__label { width: 110px; }
    .apb-avis-item__header  { flex-wrap: wrap; }
    .apb-avis-item__note-globale { margin-left: auto; }
    .apb-stars-rater label  { font-size: 22px; }
}

/* ── Description placeholder ────────────────────────────── */
.apb-profil__description-empty {
    font-size:  14px;
    color:      var(--apb-text-muted, #6B7280);
    font-style: italic;
    line-height: 1.6;
    margin:     0;
}

/* ── JS : live preview note globale ──────────────────────── */
/* Ces classes sont ajoutées par le JS inline dans class-reviews.php */
.apb-critere-row__val.filled { color: #B45309; }

/* =========================================================================
   POPUP LOGIN / INSCRIPTION — apb-popup
   ========================================================================= */
.apb-popup {
    display:  none;
    position: fixed;
    inset:    0;
    z-index:  9999;
    align-items: center;
    justify-content: center;
    padding:  16px;
}
.apb-popup--open { display: flex; }

.apb-popup__backdrop {
    position: absolute;
    inset:    0;
    background: rgba(0,0,0,.55);
    backdrop-filter: blur(3px);
    -webkit-backdrop-filter: blur(3px);
}

.apb-popup__dialog {
    position:      relative;
    background:    #fff;
    border-radius: 16px;
    box-shadow:    0 20px 60px rgba(0,0,0,.25);
    width:         100%;
    max-width:     480px;
    max-height:    90vh;
    overflow-y:    auto;
    overflow-x:    hidden;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    padding:       32px;
    animation:     apbPopupIn .22s cubic-bezier(.4,0,.2,1) both;
}

@keyframes apbPopupIn {
    from { opacity:0; transform:translateY(20px) scale(.97); }
    to   { opacity:1; transform:none; }
}

.apb-popup__close {
    position:      absolute;
    top:           12px;
    right:         12px;
    width:         36px;
    height:        36px;
    border:        none;
    background:    var(--apb-bg, #F7F8FA);
    border-radius: 50%;
    cursor:        pointer;
    display:       flex;
    align-items:   center;
    justify-content: center;
    font-size:     18px;
    color:         var(--apb-text-muted, #6B7280);
    transition:    background var(--apb-transition), color var(--apb-transition);
    z-index:       2;
    line-height:   1;
    padding:       0;
}
.apb-popup__close:hover {
    background: var(--apb-border, #E2E6EA);
    color:      var(--apb-text, #1A1A2E);
}
.apb-popup__close:focus-visible {
    outline:        2px solid #185FA5;
    outline-offset: 2px;
}

/* Onglets */
.apb-popup__tabs {
    display:   flex;
    gap:       4px;
    margin:    0 0 24px;
    border-bottom: 1.5px solid var(--apb-border, #E2E6EA);
    padding-bottom: 0;
}
.apb-popup__tab {
    flex:          1;
    padding:       10px 8px;
    border:        none;
    background:    transparent;
    font-size:     14px;
    font-weight:   600;
    color:         var(--apb-text-muted, #6B7280);
    cursor:        pointer;
    border-bottom: 2.5px solid transparent;
    margin-bottom: -1.5px;
    transition:    color var(--apb-transition), border-color var(--apb-transition);
    white-space:   nowrap;
    font-family:   var(--apb-font, system-ui, sans-serif);
}
.apb-popup__tab:hover { color: var(--apb-primary, #185FA5); }
.apb-popup__tab--active,
.apb-popup__tab[aria-selected="true"] {
    color:        var(--apb-primary, #185FA5);
    border-bottom-color: var(--apb-primary, #185FA5);
}

/* Panneaux */
.apb-popup__panels { position: relative; }
.apb-popup__panel {
    display:    none;
    animation:  apbFadeIn .18s ease both;
}
.apb-popup__panel--active,
.apb-popup__panel[aria-hidden="false"] { display: block; }

@keyframes apbFadeIn {
    from { opacity:0; }
    to   { opacity:1; }
}

.apb-popup__title {
    font-size:   22px;
    font-weight: 700;
    color:       var(--apb-text, #1A1A2E);
    margin:      0 0 6px;
    line-height: 1.25;
}
.apb-popup__subtitle {
    font-size:  14px;
    color:      var(--apb-text-muted, #6B7280);
    margin:     0 0 20px;
    line-height: 1.5;
}
.apb-popup__links {
    font-size:  13px;
    color:      var(--apb-text-muted);
    margin-top: 14px;
    line-height: 1.6;
}
.apb-popup__links a { color: var(--apb-primary); font-weight: 600; }
.apb-popup__rgpd {
    font-size:    11px;
    color:        var(--apb-text-muted);
    margin:       12px 0 4px;
    line-height:  1.5;
}
.apb-popup__rgpd a { color: var(--apb-primary); text-decoration: underline; }
.apb-popup__switch {
    font-size:  13px;
    color:      var(--apb-text-muted);
    margin-top: 12px;
}
.apb-popup__switch a { color: var(--apb-primary); font-weight: 600; text-decoration: underline; }
.apb-popup__connected { text-align:center; padding:16px; font-size:15px; }

/* Étapes inscription pro */
.apb-popup__etape { display: block; }
.apb-popup__etape--hidden { display: none; }
.apb-popup__etape-header {
    display:     flex;
    align-items: center;
    gap:         10px;
    margin-bottom: 16px;
}
.apb-popup__etape-num {
    display:         inline-flex;
    align-items:     center;
    justify-content: center;
    width:           28px;
    height:          28px;
    background:      var(--apb-primary, #185FA5);
    color:           #fff;
    border-radius:   50%;
    font-size:       13px;
    font-weight:     700;
    flex-shrink:     0;
}
.apb-popup__etape-titre {
    font-size:   15px;
    font-weight: 700;
    color:       var(--apb-text, #1A1A2E);
}

/* Bouton submit popup */
.apb-popup__dialog .apb-btn--primary {
    width:      100%;
    min-height: 48px;
    font-size:  16px;
    justify-content: center;
    margin-top: 4px;
}

/* ── Responsive popup ──────────────────────────────────── */
@media (max-width: 640px) {
    .apb-popup {
        align-items: flex-end;
        padding:     0;
    }
    .apb-popup__dialog {
        max-width:     100%;
        max-height:    92vh;
        border-radius: 20px 20px 0 0;
        padding:       24px 20px 32px;
        animation:     apbPopupSlideUp .25s cubic-bezier(.4,0,.2,1) both;
    }
    .apb-popup__title    { font-size: 19px; }
    .apb-popup__tabs .apb-popup__tab { font-size: 13px; padding: 8px 4px; }
}

@media (max-width: 480px) {
    .apb-popup__dialog { padding: 20px 16px 28px; }
    .apb-popup__title  { font-size: 17px; }
    .apb-popup__dialog .apb-form__field input,
    .apb-popup__dialog .apb-form__field textarea { font-size: 16px; } /* évite zoom iOS */
}

@keyframes apbPopupSlideUp {
    from { opacity:0; transform:translateY(100%); }
    to   { opacity:1; transform:none; }
}

/* =========================================================================
   RESPONSIVE GLOBAL COMPLÉMENTAIRE — 480px
   ========================================================================= */
@media (max-width: 480px) {
    /* Boutons accessibles touch */
    .apb-btn { min-height: 44px; }
    .apb-btn--sm { min-height: 44px; }

    /* Champs de formulaire — évite zoom iOS (font-size >= 16px) */
    .apb-form__field input:not([type="checkbox"]):not([type="radio"]),
    .apb-form__field textarea,
    .apb-form__field select,
    .apb-input { font-size: 16px; }

    /* Catégories grid mobile serré */
    .apb-categories-grid { grid-template-columns: repeat(2, 1fr); gap: 8px; }

    /* Barre de recherche IA — colonne sur mobile */
    .apb-recherche-ia__input-wrap {
        flex-direction: column;
        padding: 8px;
        gap: 6px;
    }
    .apb-recherche-ia__btn { width: 100%; min-height: 48px; }

    /* Contact form */
    .apb-contact-form { padding: 16px; }

    /* Stats bar */
    .apb-stats-bar { flex-direction: column; }

    /* CTA pro */
    .apb-cta-pro { padding: 20px 14px; }
    .apb-cta-pro__actions .apb-btn { width: 100%; }

    /* Accessibility: zone cliquable minimum 44px */
    .apb-pagination__link { min-height: 44px; min-width: 44px; }
}

/* ── Responsive — 360px (ultra-petits écrans) ────────────── */
@media (max-width: 360px) {
    .apb-popup__dialog {
        padding: 16px 12px 24px;
    }
    .apb-popup__tabs .apb-popup__tab {
        font-size: 12px;
        padding: 6px 2px;
    }
    .apb-popup__title {
        font-size: 16px;
    }

    /* Archive grid — single column pleine largeur */
    .apb-pro-grid {
        gap: 12px;
    }

    /* Categories — 2 colonnes compactes */
    .apb-categories-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 6px;
    }
}

/* ── Pagination — touch target minimum 44px partout ──────── */
.apb-pagination__list a,
.apb-pagination__list span {
    min-width: 44px;
    height: 44px;
}

/* ── Utilitaire accessibilité — .apb-sr-only défini dans apb-front.css (source unique) */

.apb-stars-rater label.hovered { color: #FBBF24; }

/* =========================================================================
   Accessibilité — European Accessibility Act (EAA) / WCAG 2.1 AA
   ========================================================================= */

/* ── Skip link (visible au focus uniquement) ──────────── */
.apb-skip-link {
    position:   absolute;
    top:        -100%;
    left:       16px;
    z-index:    100000;
    padding:    12px 24px;
    background: var(--apb-primary, #185FA5);
    color:      #fff;
    font-size:  16px;
    font-weight: 600;
    border-radius: var(--apb-radius-btn, 10px);
    text-decoration: none;
    box-shadow: var(--apb-shadow-md);
}
.apb-skip-link:focus {
    top: 16px;
    outline: 3px solid var(--apb-accent, #E6892A);
    outline-offset: 2px;
}

/* ── Focus visible global ─────────────────────────────── */
.apb-btn:focus-visible,
.apb-procard__cta:focus-visible,
.apb-procard__card:focus-within,
.apb-pagination__link:focus-visible,
.apb-tag:focus-visible,
.apb-badge:focus-visible,
.apb-fav-btn:focus-visible,
.apb-reseau:focus-visible,
.apb-galerie__item:focus-visible,
a[class*="apb-"]:focus-visible,
button[class*="apb-"]:focus-visible {
    outline: 3px solid rgba(24, 95, 165, 0.5);
    outline-offset: 2px;
}

/* Inputs et textarea */
.apb-form__field input:focus-visible,
.apb-form__field textarea:focus-visible,
.apb-form__field select:focus-visible,
input[class*="apb-"]:focus-visible,
textarea[class*="apb-"]:focus-visible,
select[class*="apb-"]:focus-visible {
    outline: 3px solid var(--apb-primary, #185FA5);
    outline-offset: 1px;
    border-color: var(--apb-primary, #185FA5);
}
/* Exclure l'input de la barre AI Search — géré par :focus-within sur .apb-search__bar */
.apb-search__input:focus-visible {
    outline: 3px solid transparent !important;
    border-color: transparent !important;
}

/* ── Contraste amélioré (WCAG AA 4.5:1 minimum) ──────── */
/* #6B7280 sur #FFFFFF = 4.54:1 (juste AA)
   → on passe à #4B5563 = 7.07:1 (passe AAA) */
:root {
    --apb-text-muted: #4B5563;
    --apb-muted:      #4B5563;
}

/* ── Mouvement réduit (WCAG 2.3.3) ────────────────────── */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
}

/* ── Zone cliquable minimum 44×44px (WCAG 2.5.5) ──────── */
.apb-fav-btn,
.apb-procard__badge,
.apb-btn--sm {
    min-height: 44px;
    min-width: 44px;
}

/* =========================================================================
   Geo-pages enrichies — Layout Combo
   ========================================================================= */

.apb-geo { max-width: 1140px; margin: 0 auto; padding: 0 16px 48px; }

/* ── Hero ─────────────────────────────────────────────── */
.apb-geo__hero {
    background: linear-gradient(135deg, var(--apb-primary, #185FA5) 0%, var(--apb-primary-dark, #0C447C) 100%);
    color: #fff;
    border-radius: 0 0 20px 20px;
    padding: 40px 32px;
    margin-bottom: 32px;
}
.apb-geo__h1 { color: #fff; font-size: 32px; font-weight: 800; margin: 0 0 8px; }
.apb-geo__subtitle { opacity: .85; font-size: 16px; margin: 0; }
.apb-geo__stats {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
    margin-top: 24px;
}
.apb-geo__stat {
    background: rgba(255,255,255,.13);
    border-radius: 12px;
    padding: 16px;
    text-align: center;
}
.apb-geo__stat-value { display: block; font-size: 26px; font-weight: 800; }
.apb-geo__stat-value small { font-size: 16px; font-weight: 600; }
.apb-geo__stat-label { display: block; font-size: 13px; opacity: .8; margin-top: 4px; }

/* ── Layout 2 colonnes ────────────────────────────────── */
.apb-geo__layout {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 24px;
    align-items: start;
}

/* ── Card generica ────────────────────────────────────── */
.apb-geo .apb-card {
    background: var(--apb-surface, #fff);
    border: 1px solid var(--apb-border, #E2E6EA);
    border-radius: 16px;
    padding: 24px;
}

/* ── Intro SEO ────────────────────────────────────────── */
.apb-geo__intro p {
    font-size: 16px;
    color: var(--apb-muted, #4B5563);
    line-height: 1.8;
    margin: 0 0 12px;
}
.apb-geo__intro p:last-child { margin-bottom: 0; }
.apb-geo__intro strong { color: var(--apb-text, #1A1A2E); }

/* ── Sections ─────────────────────────────────────────── */
.apb-geo__section { margin-top: 32px; }
.apb-geo__section h2 {
    font-size: 22px;
    font-weight: 700;
    margin-bottom: 16px;
    color: var(--apb-text, #1A1A2E);
}
.apb-geo__section h3 {
    font-size: 17px;
    font-weight: 600;
    margin-bottom: 12px;
}

/* ── Pro cards dans geo-page ──────────────────────────── */
.apb-geo__pros { display: flex; flex-direction: column; gap: 12px; }
.apb-geo__pro {
    display: flex;
    gap: 16px;
    align-items: center;
    transition: border-color .15s;
}
.apb-geo__pro:hover { border-color: var(--apb-primary, #185FA5); }
.apb-geo__pro-photo { flex-shrink: 0; }
.apb-geo__pro-img {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    object-fit: cover;
}
.apb-geo__pro-initials {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    background: var(--apb-primary-light, #EBF3FB);
    color: var(--apb-primary, #185FA5);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 20px;
}
.apb-geo__pro-info { flex: 1; min-width: 0; }
.apb-geo__pro-name {
    font-weight: 700;
    font-size: 16px;
    color: var(--apb-text, #1A1A2E);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
.apb-geo__pro-name:hover { color: var(--apb-primary, #185FA5); }
.apb-geo__pro-meta {
    color: var(--apb-muted, #4B5563);
    font-size: 14px;
    margin: 2px 0 0;
}
.apb-geo__pro-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 6px;
}
.apb-geo__pro-badges .apb-badge {
    font-size: 11px;
    padding: 2px 8px;
    min-height: auto;
    min-width: auto;
}
.apb-badge--nouveau { background: #E0F7F1; color: #0f7864; }
.apb-badge--cat { background: #EBF3FB; color: var(--apb-primary, #185FA5); }
.apb-geo__pro-desc {
    color: var(--apb-muted, #4B5563);
    font-size: 13px;
    line-height: 1.5;
    margin: 4px 0 0;
}
.apb-geo__pro-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 8px;
}
.apb-geo__pro-rating {
    color: var(--apb-accent, #E6892A);
    font-size: 14px;
    font-weight: 600;
}
.apb-geo__pro-avis {
    color: var(--apb-muted, #4B5563);
    font-weight: 400;
    font-size: 13px;
}
.apb-geo__pro-cta {
    color: var(--apb-primary, #185FA5);
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    white-space: nowrap;
}
.apb-geo__pro-cta:hover { text-decoration: underline; }

/* ── FAQ ──────────────────────────────────────────────── */
.apb-geo__faq-item {
    border-bottom: 1px solid var(--apb-border, #E2E6EA);
    padding: 16px 0;
}
.apb-geo__faq-q {
    font-weight: 700;
    font-size: 16px;
    cursor: pointer;
    list-style: none;
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.apb-geo__faq-q::after { content: '+'; font-size: 22px; color: var(--apb-primary, #185FA5); }
.apb-geo__faq-item[open] .apb-geo__faq-q::after { content: '−'; }
.apb-geo__faq-q::-webkit-details-marker { display: none; }
.apb-geo__faq-a {
    color: var(--apb-muted, #4B5563);
    font-size: 15px;
    margin-top: 12px;
    line-height: 1.7;
}
.apb-geo__faq-a a { color: var(--apb-primary, #185FA5); }

/* ── Maillage interne ─────────────────────────────────── */
.apb-geo__maillage {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 24px;
}
.apb-geo__pills { display: flex; flex-wrap: wrap; gap: 8px; }
.apb-geo__pill {
    padding: 8px 16px;
    background: var(--apb-primary-light, #EBF3FB);
    color: var(--apb-primary, #185FA5);
    border-radius: 8px;
    text-decoration: none;
    font-size: 14px;
    font-weight: 500;
    transition: .15s;
}
.apb-geo__pill:hover { background: var(--apb-primary, #185FA5); color: #fff; }

/* ── Sidebar ──────────────────────────────────────────── */
.apb-geo__sidebar { position: sticky; top: 24px; }
.apb-geo__sidebar .apb-card { margin-bottom: 16px; }
.apb-geo__sidebar h3 {
    font-size: 17px;
    font-weight: 700;
    margin-bottom: 12px;
}

/* Tableau récapitulatif */
.apb-geo__recap-dl { margin: 0; }
.apb-geo__recap-row {
    display: flex;
    justify-content: space-between;
    padding: 10px 0;
    border-bottom: 1px solid var(--apb-border, #E2E6EA);
    font-size: 14px;
}
.apb-geo__recap-row:last-child { border-bottom: none; }
.apb-geo__recap-row dt { color: var(--apb-muted, #4B5563); }
.apb-geo__recap-row dd { margin: 0; }

/* CTA inscription pro */
.apb-geo__cta-pro {
    background: var(--apb-accent, #E6892A);
    color: #fff;
    text-align: center;
    border-radius: 16px;
    padding: 28px 20px;
    margin-bottom: 16px;
}
.apb-geo__cta-pro h3 { color: #fff; margin-bottom: 8px; }
.apb-geo__cta-pro p { opacity: .9; font-size: 14px; margin-bottom: 16px; }
.apb-btn--accent-inv {
    display: inline-block;
    background: #fff;
    color: var(--apb-accent, #E6892A);
    font-weight: 700;
    padding: 12px 24px;
    border-radius: var(--apb-radius-btn, 10px);
    text-decoration: none;
    font-size: 15px;
    transition: .15s;
}
.apb-btn--accent-inv:hover { background: #f5f5f5; }

/* Sidebar villes */
.apb-geo__sidebar-list {
    list-style: none;
    padding: 0;
    margin: 0;
}
.apb-geo__sidebar-list li {
    padding: 8px 0;
    border-bottom: 1px solid var(--apb-border, #E2E6EA);
    font-size: 14px;
}
.apb-geo__sidebar-list li:last-child { border-bottom: none; }
.apb-geo__sidebar-list a {
    color: var(--apb-primary, #185FA5);
    text-decoration: none;
    font-weight: 500;
}
.apb-geo__sidebar-list a:hover { text-decoration: underline; }

/* ── Responsive ───────────────────────────────────────── */
@media (max-width: 900px) {
    .apb-geo__layout { grid-template-columns: 1fr; }
    .apb-geo__sidebar { position: static; }
    .apb-geo__stats { grid-template-columns: repeat(2, 1fr); }
    .apb-geo__maillage { grid-template-columns: 1fr; }
}
@media (max-width: 480px) {
    .apb-geo__hero { padding: 28px 16px; }
    .apb-geo__h1 { font-size: 24px; }
    .apb-geo__stats { grid-template-columns: 1fr 1fr; gap: 8px; }
    .apb-geo__stat { padding: 12px; }
    .apb-geo__stat-value { font-size: 22px; }
}

/* =====================================================================
   WooCommerce — Checkout, Cart, My Account, Thank You
   Layout centré + styles cohérents avec le design system APB
   ===================================================================== */

/* Container principal centré — cible large pour Bricks et thèmes classiques */
.woocommerce-checkout .entry-content,
.woocommerce-cart .entry-content,
.woocommerce-account .entry-content,
.woocommerce-order-received .entry-content,
body.woocommerce-checkout .brxe-post-content,
body.woocommerce-cart .brxe-post-content,
body.woocommerce-account .brxe-post-content,
body.woocommerce-checkout #brx-content > .brxe-section > .brxe-container,
body.woocommerce-cart #brx-content > .brxe-section > .brxe-container,
body.woocommerce-account #brx-content > .brxe-section > .brxe-container {
    max-width: 1100px;
    margin: 0 auto;
    padding: 40px 24px;
}

/* Force centrage si Bricks rend directement dans le body sans wrapper */
body.woocommerce-checkout .woocommerce,
body.woocommerce-cart .woocommerce,
body.woocommerce-account .woocommerce {
    max-width: 1100px;
    margin: 0 auto !important;
    padding: 40px 24px;
    float: none !important;
}

/* Centrage du titre h1 checkout */
body.woocommerce-checkout .woocommerce-billing-fields h3,
body.woocommerce-checkout > .woocommerce > h1,
body.woocommerce-checkout .entry-title {
    text-align: left;
}

/* Cacher la notice "ajouté au panier" + bouton "Voir le panier" (on skip le panier) */
body.woocommerce-checkout .woocommerce-message {
    display: none;
}

/* Cacher le checkbox "créer un compte" / conditions (géré autrement) */
.woocommerce-form__label.woocommerce-form__label-for-checkbox.checkbox {
    display: none;
}

/* Titre de page */
.woocommerce-checkout h1,
.woocommerce-cart h1,
.woocommerce-account h1 {
    font-size: 28px;
    font-weight: 700;
    color: var(--color-text, #1A1A2E);
    margin-bottom: 24px;
}

/* Layout checkout : 2 colonnes (billing 55% | commande 45%) */
form.woocommerce-checkout {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    gap: 24px 40px;
    align-items: start;
}

/* Billing + additional fields → colonne gauche */
form.woocommerce-checkout .col2-set {
    grid-column: 1;
    display: block; /* Pas de sous-grid, tout en 1 colonne */
}

form.woocommerce-checkout .col2-set .col-1,
form.woocommerce-checkout .col2-set .col-2 {
    width: 100%;
    float: none;
}

form.woocommerce-checkout .woocommerce-additional-fields {
    grid-column: 1;
}

/* Commande → colonne droite, collée en haut */
form.woocommerce-checkout #order_review_heading {
    grid-column: 2;
    grid-row: 1;
}

form.woocommerce-checkout #order_review {
    grid-column: 2;
    grid-row: 2 / 99;
    position: sticky;
    top: 24px;
}

/* Forcer la largeur des inputs billing */
.woocommerce-billing-fields__field-wrapper .form-row {
    width: 100% !important;
    float: none !important;
    margin-right: 0 !important;
}

/* Prénom + Nom côte à côte */
.woocommerce-billing-fields__field-wrapper .form-row-first,
.woocommerce-billing-fields__field-wrapper .form-row-last {
    width: 48% !important;
    display: inline-block;
    vertical-align: top;
}

.woocommerce-billing-fields__field-wrapper .form-row-first {
    margin-right: 4% !important;
}

/* Inputs WooCommerce */
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select {
    width: 100%;
    padding: 12px 16px;
    border: 1px solid var(--color-border, #E2E6EA);
    border-radius: 8px;
    font-size: 15px;
    color: var(--color-text, #1A1A2E);
    background: var(--color-surface, #FFFFFF);
    transition: border-color .2s;
}

.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row textarea:focus,
.woocommerce form .form-row select:focus {
    border-color: var(--color-primary, #185FA5);
    outline: 3px solid transparent;
    box-shadow: 0 0 0 3px rgba(24, 95, 165, 0.12);
}

.woocommerce form .form-row label {
    font-size: 14px;
    font-weight: 600;
    color: var(--color-text, #1A1A2E);
    margin-bottom: 6px;
    display: block;
}

/* Tableau récapitulatif commande */
.woocommerce-checkout-review-order-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 14px;
}

.woocommerce-checkout-review-order-table th,
.woocommerce-checkout-review-order-table td {
    padding: 12px 16px;
    border-bottom: 1px solid var(--color-border, #E2E6EA);
    text-align: left;
}

.woocommerce-checkout-review-order-table thead th {
    font-weight: 700;
    color: var(--color-text, #1A1A2E);
    background: var(--color-background, #F7F8FA);
}

.woocommerce-checkout-review-order-table .order-total td {
    font-size: 18px;
    font-weight: 700;
    color: var(--color-primary, #185FA5);
}

/* Bouton Commander */
#place_order {
    width: 100%;
    padding: 16px 24px;
    background-color: var(--color-primary, #185FA5);
    color: #FFFFFF;
    font-size: 17px;
    font-weight: 700;
    border: none;
    border-radius: 10px;
    cursor: pointer;
    transition: background-color .2s;
    min-height: 48px;
}

#place_order:hover {
    background-color: var(--color-primary-dark, #0C447C);
}

/* Méthodes de paiement */
.woocommerce-checkout-payment {
    background: var(--color-background, #F7F8FA);
    border-radius: 12px;
    padding: 20px;
    margin-top: 16px;
}

.wc_payment_methods {
    list-style: none;
    padding: 0;
    margin: 0 0 16px;
}

.wc_payment_methods li {
    padding: 12px 0;
    border-bottom: 1px solid var(--color-border, #E2E6EA);
}

.wc_payment_methods li:last-child {
    border-bottom: none;
}

/* Infos complémentaires */
.woocommerce-additional-fields h3 {
    font-size: 17px;
    font-weight: 700;
    margin-top: 24px;
}

/* Cart page */
.woocommerce-cart-form table {
    width: 100%;
    border-collapse: collapse;
}

.woocommerce-cart-form th,
.woocommerce-cart-form td {
    padding: 16px;
    border-bottom: 1px solid var(--color-border, #E2E6EA);
}

.cart_totals {
    max-width: 450px;
    margin-left: auto;
    margin-top: 24px;
}

.cart_totals .wc-proceed-to-checkout a {
    display: block;
    text-align: center;
    padding: 16px;
    background-color: var(--color-primary, #185FA5);
    color: #FFFFFF;
    font-size: 16px;
    font-weight: 700;
    border-radius: 10px;
    text-decoration: none;
    min-height: 48px;
}

.cart_totals .wc-proceed-to-checkout a:hover {
    background-color: var(--color-primary-dark, #0C447C);
}

/* My Account */
.woocommerce-MyAccount-navigation {
    width: 220px;
    float: left;
}

.woocommerce-MyAccount-navigation ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

.woocommerce-MyAccount-navigation li a {
    display: block;
    padding: 10px 16px;
    color: var(--color-text, #1A1A2E);
    text-decoration: none;
    border-radius: 8px;
    font-size: 14px;
    transition: background .2s;
}

.woocommerce-MyAccount-navigation li a:hover,
.woocommerce-MyAccount-navigation li.is-active a {
    background: var(--color-background, #F7F8FA);
    color: var(--color-primary, #185FA5);
    font-weight: 600;
}

.woocommerce-MyAccount-content {
    margin-left: 252px;
}

/* Thank You / Order Received */
.woocommerce-order-received .woocommerce-thankyou-order-received {
    background: #D1FAE5;
    color: #065F46;
    padding: 20px 24px;
    border-radius: 12px;
    font-size: 16px;
    font-weight: 600;
    margin-bottom: 24px;
}

.woocommerce-order-received .woocommerce-order-details {
    background: var(--color-surface, #FFFFFF);
    border: 1px solid var(--color-border, #E2E6EA);
    border-radius: 12px;
    padding: 24px;
}

/* Notices WooCommerce */
.woocommerce-error,
.woocommerce-message,
.woocommerce-info {
    padding: 16px 20px;
    border-radius: 10px;
    margin-bottom: 16px;
    font-size: 14px;
}

.woocommerce-error {
    background: #FEE2E2;
    color: #991B1B;
    border-left: 4px solid #dc2626;
}

.woocommerce-message {
    background: #D1FAE5;
    color: #065F46;
    border-left: 4px solid #059669;
}

.woocommerce-info {
    background: #DBEAFE;
    color: #1E40AF;
    border-left: 4px solid #3B82F6;
}

/* =====================================================================
   WooCommerce Responsive
   ===================================================================== */

@media (max-width: 768px) {
    form.woocommerce-checkout {
        grid-template-columns: 1fr;
    }

    form.woocommerce-checkout .col2-set,
    form.woocommerce-checkout #order_review_heading,
    form.woocommerce-checkout #order_review {
        grid-column: 1;
        grid-row: auto;
    }

    .woocommerce-checkout .col2-set {
        grid-template-columns: 1fr;
    }

    .woocommerce-MyAccount-navigation {
        width: 100%;
        float: none;
        margin-bottom: 20px;
    }

    .woocommerce-MyAccount-navigation ul {
        display: flex;
        flex-wrap: wrap;
        gap: 6px;
    }

    .woocommerce-MyAccount-content {
        margin-left: 0;
    }

    .cart_totals {
        max-width: 100%;
    }
}

@media (max-width: 480px) {
    .woocommerce-checkout .entry-content,
    .woocommerce-cart .entry-content,
    .woocommerce-account .entry-content,
    body.woocommerce-checkout .brxe-post-content,
    body.woocommerce-cart .brxe-post-content {
        padding: 20px 16px;
    }
}
