/**
 * Chiens Guides en Ballade — Feuille de styles principale
 * Accessibilité WCAG 2.1 niveau AA
 * Thèmes : standard, contraste-eleve, daltonien, sombre
 */
@import url('https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700;800&display=swap');

:root {
    --couleur-primaire: #6366F1;
    --couleur-primaire-hover: #4F46E5;
    --couleur-primaire-claire: #E0E7FF;
    --couleur-secondaire: #10B981;
    --couleur-secondaire-hover: #059669;
    --couleur-secondaire-claire: #D1FAE5;
    --couleur-accent: #F59E0B;
    --couleur-accent-hover: #D97706;
    --couleur-accent-claire: #FEF3C7;
    --couleur-danger: #EF4444;
    --couleur-danger-hover: #DC2626;
    --couleur-danger-claire: #FEE2E2;
    --couleur-info: #3B82F6;
    --couleur-info-claire: #DBEAFE;
    --couleur-fond: #FAFAF9;
    --couleur-fond-alt: #F5F3FF;
    --couleur-surface: #FFFFFF;
    --couleur-surface-hover: #F9FAFB;
    --couleur-texte: #1E1B4B;
    --couleur-texte-secondaire: #6B7280;
    --couleur-texte-inverse: #FFFFFF;
    --couleur-texte-lien: #6366F1;
    --couleur-texte-lien-hover: #4F46E5;
    --couleur-bordure: #E5E7EB;
    --couleur-bordure-forte: #D1D5DB;
    --couleur-focus: #6366F1;
    --ombre-sm: 0 1px 2px rgba(0,0,0,0.05);
    --ombre-md: 0 4px 6px -1px rgba(0,0,0,0.07), 0 2px 4px -2px rgba(0,0,0,0.05);
    --ombre-lg: 0 10px 15px -3px rgba(0,0,0,0.08), 0 4px 6px -4px rgba(0,0,0,0.04);
    --ombre-xl: 0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.06);
    --couleur-header: #6366F1;
    --couleur-header-texte: #FFFFFF;
    --couleur-nav-fond: #FFFFFF;
    --couleur-nav-lien: #374151;
    --couleur-nav-lien-hover-fond: #6366F1;
    --couleur-nav-lien-hover-texte: #FFFFFF;
    --couleur-nav-actif-fond: #10B981;
    --couleur-nav-actif-texte: #FFFFFF;
    --couleur-nav-bordure: #E5E7EB;
    --couleur-footer: #1E1B4B;
    --couleur-footer-texte: #E0E7FF;
    --couleur-footer-lien: #A5B4FC;
    --esp-xs: 0.25rem; --esp-sm: 0.5rem; --esp-md: 1rem; --esp-lg: 1.5rem;
    --esp-xl: 2rem; --esp-2xl: 3rem; --esp-3xl: 4rem;
    --police-titre: 'Nunito', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    --police-corps: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    --taille-base: 16px; --taille-sm: 0.875rem; --taille-lg: 1.125rem; --taille-xl: 1.25rem;
    --taille-h1: 2.25rem; --taille-h2: 1.75rem; --taille-h3: 1.375rem;
    --hauteur-ligne: 1.65;
    --rayon-sm: 0.375rem; --rayon-md: 0.5rem; --rayon-lg: 0.75rem;
    --rayon-xl: 1rem; --rayon-2xl: 1.5rem; --rayon-rond: 9999px;
    --transition-rapide: 150ms cubic-bezier(0.4,0,0.2,1);
    --transition-normale: 250ms cubic-bezier(0.4,0,0.2,1);
    --largeur-max: 1200px; --largeur-etroite: 640px;
}

/* THÈME CONTRASTE ÉLEVÉ */
[data-theme="contraste-eleve"] {
    --couleur-primaire: #1D4ED8; --couleur-primaire-hover: #1E40AF; --couleur-primaire-claire: #DBEAFE;
    --couleur-secondaire: #047857; --couleur-secondaire-hover: #065F46; --couleur-secondaire-claire: #D1FAE5;
    --couleur-accent: #B45309; --couleur-accent-hover: #92400E; --couleur-accent-claire: #FEF3C7;
    --couleur-danger: #B91C1C; --couleur-danger-hover: #991B1B; --couleur-danger-claire: #FEE2E2;
    --couleur-info: #1D4ED8; --couleur-info-claire: #DBEAFE;
    --couleur-fond: #FFFFFF; --couleur-fond-alt: #F3F4F6;
    --couleur-surface: #FFFFFF; --couleur-surface-hover: #F9FAFB;
    --couleur-texte: #000000; --couleur-texte-secondaire: #1F2937;
    --couleur-texte-inverse: #FFFFFF;
    --couleur-texte-lien: #1D4ED8; --couleur-texte-lien-hover: #1E40AF;
    --couleur-bordure: #6B7280; --couleur-bordure-forte: #374151;
    --couleur-focus: #1D4ED8;
    --ombre-sm: 0 0 0 1px #6B7280; --ombre-md: 0 0 0 2px #6B7280;
    --ombre-lg: 0 0 0 2px #374151; --ombre-xl: 0 0 0 3px #374151;
    --couleur-header: #1E3A8A; --couleur-header-texte: #FFFFFF;
    --couleur-nav-fond: #FFFFFF; --couleur-nav-lien: #000000;
    --couleur-nav-lien-hover-fond: #1D4ED8; --couleur-nav-lien-hover-texte: #FFFFFF;
    --couleur-nav-actif-fond: #047857; --couleur-nav-actif-texte: #FFFFFF;
    --couleur-nav-bordure: #374151;
    --couleur-footer: #000000; --couleur-footer-texte: #FFFFFF; --couleur-footer-lien: #93C5FD;
}

/* THÈME DALTONIEN */
[data-theme="daltonien"] {
    --couleur-primaire: #2563EB; --couleur-primaire-hover: #1D4ED8; --couleur-primaire-claire: #DBEAFE;
    --couleur-secondaire: #D97706; --couleur-secondaire-hover: #B45309; --couleur-secondaire-claire: #FEF3C7;
    --couleur-accent: #7C3AED; --couleur-accent-hover: #6D28D9; --couleur-accent-claire: #EDE9FE;
    --couleur-danger: #9333EA; --couleur-danger-hover: #7E22CE; --couleur-danger-claire: #F3E8FF;
    --couleur-info: #2563EB; --couleur-info-claire: #DBEAFE;
    --couleur-fond: #FAFAF9; --couleur-fond-alt: #F5F5F4;
    --couleur-surface: #FFFFFF;
    --couleur-texte: #1C1917; --couleur-texte-secondaire: #57534E;
    --couleur-texte-lien: #2563EB; --couleur-texte-lien-hover: #1D4ED8;
    --couleur-bordure: #D6D3D1; --couleur-bordure-forte: #A8A29E;
    --couleur-focus: #2563EB;
    --couleur-header: #2563EB; --couleur-header-texte: #FFFFFF;
    --couleur-nav-lien: #1C1917;
    --couleur-nav-lien-hover-fond: #2563EB;
    --couleur-nav-actif-fond: #D97706; --couleur-nav-actif-texte: #FFFFFF;
    --couleur-footer: #1C1917; --couleur-footer-texte: #F5F5F4; --couleur-footer-lien: #93C5FD;
}

/* THÈME SOMBRE */
[data-theme="sombre"] {
    --couleur-primaire: #818CF8; --couleur-primaire-hover: #A5B4FC; --couleur-primaire-claire: #312E81;
    --couleur-secondaire: #34D399; --couleur-secondaire-hover: #6EE7B7; --couleur-secondaire-claire: #064E3B;
    --couleur-accent: #FBBF24; --couleur-accent-hover: #FCD34D; --couleur-accent-claire: #78350F;
    --couleur-danger: #F87171; --couleur-danger-hover: #FCA5A5; --couleur-danger-claire: #7F1D1D;
    --couleur-info: #60A5FA; --couleur-info-claire: #1E3A8A;
    --couleur-fond: #0F172A; --couleur-fond-alt: #1E293B;
    --couleur-surface: #1E293B; --couleur-surface-hover: #334155;
    --couleur-texte: #F1F5F9; --couleur-texte-secondaire: #94A3B8;
    --couleur-texte-inverse: #0F172A;
    --couleur-texte-lien: #A5B4FC; --couleur-texte-lien-hover: #C7D2FE;
    --couleur-bordure: #334155; --couleur-bordure-forte: #475569;
    --couleur-focus: #818CF8;
    --ombre-sm: 0 1px 2px rgba(0,0,0,0.3); --ombre-md: 0 4px 6px rgba(0,0,0,0.3);
    --ombre-lg: 0 10px 15px rgba(0,0,0,0.3); --ombre-xl: 0 20px 25px rgba(0,0,0,0.4);
    --couleur-header: #1E293B; --couleur-header-texte: #F1F5F9;
    --couleur-nav-fond: #0F172A; --couleur-nav-lien: #CBD5E1;
    --couleur-nav-lien-hover-fond: #818CF8; --couleur-nav-lien-hover-texte: #FFFFFF;
    --couleur-nav-actif-fond: #34D399; --couleur-nav-actif-texte: #0F172A;
    --couleur-nav-bordure: #334155;
    --couleur-footer: #0F172A; --couleur-footer-texte: #CBD5E1; --couleur-footer-lien: #A5B4FC;
}

/* RESET */
*,*::before,*::after { margin:0; padding:0; box-sizing:border-box; }
html { font-size: var(--taille-base); scroll-behavior: smooth; }
body {
    font-family: var(--police-corps); line-height: var(--hauteur-ligne);
    color: var(--couleur-texte); background-color: var(--couleur-fond);
    min-height: 100vh; display: flex; flex-direction: column;
    -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
}

/* SKIP LINKS */
.skip-links { position:absolute; top:-100%; left:0; width:100%; background:var(--couleur-primaire); z-index:10000; }
.skip-link { display:block; padding:var(--esp-md); color:var(--couleur-texte-inverse); text-decoration:none; font-weight:700; font-family:var(--police-titre); }
.skip-link:focus { position:static; outline:3px solid var(--couleur-accent); outline-offset:2px; }

/* FOCUS */
*:focus { outline:3px solid var(--couleur-focus); outline-offset:2px; }
*:focus:not(:focus-visible) { outline:none; }
*:focus-visible { outline:3px solid var(--couleur-focus); outline-offset:2px; }

/* HEADER */
header[role="banner"] {
    background: var(--couleur-header); color: var(--couleur-header-texte);
    padding: var(--esp-lg) var(--esp-xl); box-shadow: var(--ombre-md);
    position: relative; z-index: 100;
}
.header-container { max-width:var(--largeur-max); margin:0 auto; display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:var(--esp-md); }
.logo-container { display:flex; align-items:center; gap:var(--esp-md); text-decoration:none; color:inherit; }
.logo-container:hover { opacity:0.95; }
.logo { height:52px; width:52px; border-radius:var(--rayon-lg); flex-shrink:0; }
.site-titre { font-family:var(--police-titre); font-size:1.5rem; font-weight:800; margin:0; letter-spacing:-0.02em; color:var(--couleur-header-texte); }
.site-titre a { color:inherit; text-decoration:none; }
.header-auth { display:flex; gap:var(--esp-sm); align-items:center; }
.header-user-info { display:flex; align-items:center; gap:var(--esp-sm); color:var(--couleur-header-texte); font-weight:600; }
.header-droite { display:flex; align-items:center; gap:var(--esp-lg); flex-wrap:wrap; }

/* SÉLECTEUR DE THÈME */
.theme-selecteur { display:flex; align-items:center; gap:var(--esp-sm); }
.theme-selecteur label { font-size:var(--taille-sm); font-weight:600; color:var(--couleur-header-texte); white-space:nowrap; }
.theme-selecteur select {
    padding:var(--esp-xs) var(--esp-sm); border:2px solid rgba(255,255,255,0.3);
    border-radius:var(--rayon-md); background:rgba(255,255,255,0.15);
    color:var(--couleur-header-texte); font-size:var(--taille-sm); font-family:inherit;
    cursor:pointer; min-height:36px; transition:border-color var(--transition-rapide),background-color var(--transition-rapide);
}
.theme-selecteur select:hover { border-color:rgba(255,255,255,0.6); background:rgba(255,255,255,0.25); }
.theme-selecteur select:focus { outline:3px solid var(--couleur-accent); outline-offset:2px; border-color:rgba(255,255,255,0.8); }
.theme-selecteur select option { background:var(--couleur-surface); color:var(--couleur-texte); }

/* NAVIGATION */
nav[role="navigation"] {
    background:var(--couleur-nav-fond); padding:var(--esp-sm) 0;
    border-bottom:2px solid var(--couleur-nav-bordure); box-shadow:var(--ombre-sm);
    position:sticky; top:0; z-index:90;
}
.nav-container { max-width:var(--largeur-max); margin:0 auto; padding:0 var(--esp-xl); display:flex; align-items:center; justify-content:space-between; }
.nav-liste { list-style:none; display:flex; flex-wrap:wrap; gap:var(--esp-xs); align-items:center; }
.nav-lien {
    color:var(--couleur-nav-lien); text-decoration:none; font-weight:600;
    font-family:var(--police-titre); font-size:var(--taille-sm);
    padding:var(--esp-sm) var(--esp-md); border-radius:var(--rayon-rond);
    transition:background-color var(--transition-rapide),color var(--transition-rapide),transform var(--transition-rapide);
    display:inline-flex; align-items:center; gap:var(--esp-xs); white-space:nowrap;
}
.nav-lien:hover,.nav-lien:focus { background:var(--couleur-nav-lien-hover-fond); color:var(--couleur-nav-lien-hover-texte); transform:translateY(-1px); }
.nav-lien.actif { background:var(--couleur-nav-actif-fond); color:var(--couleur-nav-actif-texte); font-weight:700; }
.nav-toggle {
    display:none; background:none; border:2px solid var(--couleur-bordure);
    border-radius:var(--rayon-md); padding:var(--esp-sm); cursor:pointer;
    color:var(--couleur-texte); min-height:44px; min-width:44px;
    align-items:center; justify-content:center;
}
.nav-toggle svg { width:24px; height:24px; display:block; }
.nav-toggle-fermer { display:none; }
.nav-toggle[aria-expanded="true"] .nav-toggle-ouvrir { display:none; }
.nav-toggle[aria-expanded="true"] .nav-toggle-fermer { display:block; }

/* CONTENU PRINCIPAL */
main { flex:1; max-width:var(--largeur-max); width:100%; margin:0 auto; padding:var(--esp-xl); }

/* TITRES */
h1,h2,h3,h4 { font-family:var(--police-titre); line-height:1.25; color:var(--couleur-texte); }
h1 { font-size:var(--taille-h1); font-weight:800; margin-bottom:var(--esp-lg); color:var(--couleur-primaire); letter-spacing:-0.03em; }
h2 { font-size:var(--taille-h2); font-weight:700; margin-top:var(--esp-xl); margin-bottom:var(--esp-lg); color:var(--couleur-primaire); letter-spacing:-0.02em; }
h3 { font-size:var(--taille-h3); font-weight:700; margin-top:var(--esp-lg); margin-bottom:var(--esp-md); }

/* TEXTE ET LIENS */
p { margin-bottom:var(--esp-md); max-width:70ch; }
a { color:var(--couleur-texte-lien); text-decoration:underline; text-underline-offset:2px; transition:color var(--transition-rapide); }
a:hover { color:var(--couleur-texte-lien-hover); }

/* HERO */
.hero {
    background:linear-gradient(135deg, var(--couleur-primaire), #8B5CF6);
    color:var(--couleur-texte-inverse); padding:var(--esp-3xl) var(--esp-xl);
    text-align:center; position:relative; overflow:hidden; margin:-2rem -2rem 0 -2rem;
}
.hero::before { content:''; position:absolute; top:-50%; right:-20%; width:500px; height:500px; border-radius:50%; background:rgba(255,255,255,0.05); pointer-events:none; }
.hero::after { content:''; position:absolute; bottom:-30%; left:-10%; width:400px; height:400px; border-radius:50%; background:rgba(255,255,255,0.04); pointer-events:none; }
.hero-contenu { max-width:700px; margin:0 auto; position:relative; z-index:1; }
.hero h2 { font-size:2.5rem; font-weight:800; color:var(--couleur-texte-inverse); margin-top:0; margin-bottom:var(--esp-md); letter-spacing:-0.03em; }
.hero p { font-size:var(--taille-xl); opacity:0.92; margin:0 auto var(--esp-xl); max-width:600px; }
.hero-actions { display:flex; gap:var(--esp-md); justify-content:center; flex-wrap:wrap; }
.hero .bouton { font-size:var(--taille-lg); padding:var(--esp-md) var(--esp-xl); }

/* BOUTONS */
button,.bouton {
    padding:var(--esp-sm) var(--esp-lg); border:none; border-radius:var(--rayon-rond);
    font-size:var(--taille-base); font-weight:700; font-family:var(--police-titre);
    cursor:pointer; text-decoration:none; display:inline-flex; align-items:center;
    justify-content:center; gap:var(--esp-sm); min-height:44px; min-width:44px;
    line-height:1.2; transition:background-color var(--transition-rapide),transform var(--transition-rapide),box-shadow var(--transition-rapide);
}
button:hover,.bouton:hover { transform:translateY(-1px); box-shadow:var(--ombre-md); }
button:active,.bouton:active { transform:translateY(0); box-shadow:var(--ombre-sm); }
.bouton-primaire { background:var(--couleur-primaire); color:var(--couleur-texte-inverse); }
.bouton-primaire:hover,.bouton-primaire:focus { background:var(--couleur-primaire-hover); color:var(--couleur-texte-inverse); }
.bouton-secondaire { background:var(--couleur-secondaire); color:var(--couleur-texte-inverse); }
.bouton-secondaire:hover,.bouton-secondaire:focus { background:var(--couleur-secondaire-hover); color:var(--couleur-texte-inverse); }
.bouton-danger { background:var(--couleur-danger); color:var(--couleur-texte-inverse); }
.bouton-danger:hover,.bouton-danger:focus { background:var(--couleur-danger-hover); color:var(--couleur-texte-inverse); }
.bouton-accent { background:var(--couleur-accent); color:#1E1B4B; }
.bouton-accent:hover,.bouton-accent:focus { background:var(--couleur-accent-hover); color:#1E1B4B; }
.bouton-outline { background:transparent; color:var(--couleur-texte-inverse); border:2px solid currentColor; }
.bouton-outline:hover,.bouton-outline:focus { background:rgba(255,255,255,0.15); color:var(--couleur-texte-inverse); }
.bouton-outline-couleur { background:transparent; color:var(--couleur-primaire); border:2px solid var(--couleur-primaire); }
.bouton-outline-couleur:hover,.bouton-outline-couleur:focus { background:var(--couleur-primaire); color:var(--couleur-texte-inverse); }
.bouton-blanc { background:var(--couleur-texte-inverse); color:var(--couleur-primaire); font-weight:700; }
.bouton-blanc:hover,.bouton-blanc:focus { background:var(--couleur-primaire-claire); color:var(--couleur-primaire-hover); }
.bouton-petit { padding:var(--esp-xs) var(--esp-md); font-size:var(--taille-sm); min-height:36px; min-width:36px; }
.bouton-grand { padding:var(--esp-md) var(--esp-xl); font-size:var(--taille-lg); }

/* CARTES */
.carte {
    background:var(--couleur-surface); border-radius:var(--rayon-xl);
    box-shadow:var(--ombre-md); padding:var(--esp-xl); margin-bottom:var(--esp-lg);
    border:1px solid var(--couleur-bordure);
    transition:box-shadow var(--transition-normale),transform var(--transition-normale);
}
.carte:hover { box-shadow:var(--ombre-lg); }
.carte-titre { font-family:var(--police-titre); font-size:var(--taille-h3); font-weight:700; margin-bottom:var(--esp-md); color:var(--couleur-primaire); }
.carte-lien { text-decoration:none; color:inherit; display:block; }
.carte-lien:hover .carte { box-shadow:var(--ombre-xl); transform:translateY(-2px); }
.grille-cartes { display:grid; grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); gap:var(--esp-lg); margin-bottom:var(--esp-xl); }

/* FORMULAIRES */
.formulaire { background:var(--couleur-surface); padding:var(--esp-xl); border-radius:var(--rayon-xl); box-shadow:var(--ombre-md); margin-bottom:var(--esp-xl); border:1px solid var(--couleur-bordure); }
.champ-formulaire { margin-bottom:var(--esp-lg); }
.label-formulaire { display:block; font-weight:700; font-family:var(--police-titre); margin-bottom:var(--esp-sm); color:var(--couleur-texte); font-size:var(--taille-base); }
.requis { color:var(--couleur-danger); font-weight:bold; }
.description-champ { font-size:var(--taille-sm); color:var(--couleur-texte-secondaire); margin-bottom:var(--esp-sm); }
input[type="text"],input[type="email"],input[type="password"],input[type="tel"],
input[type="number"],input[type="date"],input[type="time"],input[type="url"],
input[type="search"],select,textarea {
    width:100%; padding:var(--esp-md); border:2px solid var(--couleur-bordure);
    border-radius:var(--rayon-lg); font-size:var(--taille-base); font-family:inherit;
    background:var(--couleur-surface); color:var(--couleur-texte);
    transition:border-color var(--transition-rapide),box-shadow var(--transition-rapide); min-height:44px;
}
input:focus,select:focus,textarea:focus { border-color:var(--couleur-focus); box-shadow:0 0 0 3px rgba(99,102,241,0.15); }
input[aria-invalid="true"],select[aria-invalid="true"],textarea[aria-invalid="true"] { border-color:var(--couleur-danger); box-shadow:0 0 0 3px rgba(239,68,68,0.1); }
.champ-erreur input,.champ-erreur select,.champ-erreur textarea { border-color:var(--couleur-danger); }
.message-erreur { color:var(--couleur-danger); font-size:var(--taille-sm); margin-top:var(--esp-sm); font-weight:600; }

/* MESSAGES D'ALERTE */
.message-info,.message-succes,.message-erreur-bloc,.message-avertissement {
    padding:var(--esp-lg); border-radius:var(--rayon-lg); margin-bottom:var(--esp-lg);
    border-left:4px solid; font-weight:500;
}
.message-info { background:var(--couleur-info-claire); border-color:var(--couleur-info); color:var(--couleur-texte); }
.message-succes { background:var(--couleur-secondaire-claire); border-color:var(--couleur-secondaire); color:var(--couleur-texte); }
.message-erreur-bloc,.message-erreur[role="alert"] {
    background:var(--couleur-danger-claire); border-color:var(--couleur-danger); color:var(--couleur-texte);
    padding:var(--esp-lg); border-radius:var(--rayon-lg); margin-bottom:var(--esp-lg);
    border-left:4px solid var(--couleur-danger); font-weight:500;
}
.message-avertissement { background:var(--couleur-accent-claire); border-color:var(--couleur-accent); color:var(--couleur-texte); }

/* ENCARTS */
.encart-securite { background:var(--couleur-accent-claire); border:2px solid var(--couleur-accent); border-radius:var(--rayon-xl); padding:var(--esp-xl); margin:var(--esp-xl) 0; }
.encart-securite h3 { color:var(--couleur-accent-hover); margin-top:0; }
.encart-securite p { max-width:none; }
.encart-securite .encart-actions { display:flex; flex-wrap:wrap; gap:var(--esp-md); justify-content:center; margin-top:var(--esp-md); }
.encart-mes-ballades { background:var(--couleur-secondaire-claire); border-left:4px solid var(--couleur-secondaire); border-radius:var(--rayon-xl); padding:var(--esp-xl); margin-bottom:var(--esp-xl); }
.encart-mes-ballades h3 { color:var(--couleur-secondaire-hover); margin-top:0; margin-bottom:var(--esp-md); }
.encart-mes-inscriptions { background:var(--couleur-info-claire); border-left:4px solid var(--couleur-info); border-radius:var(--rayon-xl); padding:var(--esp-xl); margin-bottom:var(--esp-xl); }
.encart-mes-inscriptions h3 { color:var(--couleur-info); margin-top:0; margin-bottom:var(--esp-md); }

/* LISTES COMPACTES */
.liste-compacte { list-style:none; padding:0; margin:0; }
.liste-compacte li {
    padding:var(--esp-md); background:var(--couleur-surface); border-radius:var(--rayon-lg);
    margin-bottom:var(--esp-sm); display:flex; justify-content:space-between; align-items:center;
    flex-wrap:wrap; gap:var(--esp-sm); transition:box-shadow var(--transition-rapide);
}
.liste-compacte li:hover { box-shadow:var(--ombre-sm); }
.liste-compacte .meta-info { font-size:var(--taille-sm); color:var(--couleur-texte-secondaire); }
.liste-compacte .actions { display:flex; gap:var(--esp-sm); }

/* BADGES */
.badge {
    display:inline-flex; align-items:center; gap:var(--esp-xs);
    padding:var(--esp-xs) var(--esp-sm); border-radius:var(--rayon-rond);
    font-size:0.75rem; font-weight:700; font-family:var(--police-titre);
    text-transform:uppercase; letter-spacing:0.05em;
}
.badge-foret { background:#D1FAE5; color:#065F46; }
.badge-plage { background:#DBEAFE; color:#1E3A8A; }
.badge-parc { background:#FEF3C7; color:#92400E; }
.badge-cani_parc { background:#EDE9FE; color:#5B21B6; }
.badge-autre { background:#F3F4F6; color:#374151; }
.badge-statut-ouverte { background:#D1FAE5; color:#065F46; }
.badge-statut-complete { background:#DBEAFE; color:#1E3A8A; }
.badge-statut-annulee { background:#FEE2E2; color:#991B1B; }

/* IMAGES */
img { max-width:100%; height:auto; border-radius:var(--rayon-lg); }
.image-chien,.image-ballade { width:100%; height:200px; object-fit:cover; border-radius:var(--rayon-lg); margin-bottom:var(--esp-md); }

/* MEDIAS */
.media-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:var(--esp-md); margin:var(--esp-xl) 0; }
.media-item { position:relative; border:1px solid var(--couleur-bordure); border-radius:var(--rayon-lg); overflow:hidden; transition:box-shadow var(--transition-rapide); }
.media-item:hover { box-shadow:var(--ombre-lg); }
.media-item img,.media-item video { width:100%; height:200px; object-fit:cover; display:block; border-radius:0; }
.media-legende { padding:var(--esp-sm) var(--esp-md); font-size:var(--taille-sm); background:var(--couleur-surface); }

/* RÉACTIONS */
.reactions-bar { display:flex; gap:var(--esp-sm); flex-wrap:wrap; margin:var(--esp-md) 0; }
.reaction-btn {
    background:var(--couleur-surface); border:2px solid var(--couleur-bordure);
    border-radius:var(--rayon-rond); padding:var(--esp-sm) var(--esp-md);
    cursor:pointer; font-size:var(--taille-base); display:inline-flex;
    align-items:center; gap:var(--esp-xs); transition:all var(--transition-rapide); min-height:44px;
}
.reaction-btn:hover,.reaction-btn:focus { border-color:var(--couleur-primaire); background:var(--couleur-primaire-claire); }
.reaction-btn.active { border-color:var(--couleur-primaire); background:var(--couleur-primaire-claire); font-weight:700; }
.reaction-count { font-weight:600; font-size:var(--taille-sm); color:var(--couleur-texte-secondaire); }

/* PUBLICITÉS */
.contenu-avec-pub { display:flex; gap:var(--esp-xl); align-items:flex-start; }
.contenu-principal-zone { flex:1; min-width:0; display:flex; flex-direction:column; }
.bloc-intro { order:1; } .encart-securite { order:2; } .bloc-grille { order:3; }
.pub-zone-laterale { flex-shrink:0; width:300px; }
.publicite { background:var(--couleur-fond-alt); border:1px solid var(--couleur-bordure); border-radius:var(--rayon-lg); padding:var(--esp-lg); margin-bottom:var(--esp-lg); text-align:center; }
.publicite.pub-haut,.publicite.pub-bas { max-width:100%; margin-left:auto; margin-right:auto; }
.publicite.pub-lateral { position:sticky; top:calc(60px + var(--esp-xl)); max-width:300px; }
.pub-media { max-width:100%; height:auto; border-radius:var(--rayon-md); display:block; }
.pub-contenu { margin-top:var(--esp-sm); font-size:var(--taille-sm); color:var(--couleur-texte-secondaire); }
.pub-contenu p { margin:0; }
.publicite a { text-decoration:none; color:inherit; display:block; }
.publicite a:hover .pub-media { opacity:0.9; }
.publicite a:focus { outline:3px solid var(--couleur-focus); outline-offset:2px; }

/* PAGINATION */
.section-dernieres-ballades { margin-top:var(--esp-2xl); }
.pagination-container { margin-top:var(--esp-xl); text-align:center; }
.pagination-info { margin-bottom:var(--esp-md); font-weight:600; color:var(--couleur-texte-secondaire); font-size:var(--taille-sm); }
.pagination-boutons { display:flex; justify-content:center; gap:var(--esp-xs); flex-wrap:wrap; align-items:center; }
.pagination-pages { display:flex; gap:0.2rem; align-items:center; }
.pagination-ellipsis { padding:0 var(--esp-sm); color:var(--couleur-texte-secondaire); }
.pagination-boutons .bouton:disabled,.pagination-boutons .bouton[aria-disabled="true"] { opacity:0.4; cursor:not-allowed; transform:none; }
.pagination-boutons .bouton:disabled:hover,.pagination-boutons .bouton[aria-disabled="true"]:hover { transform:none; box-shadow:none; }
.pagination-boutons .bouton[aria-current="page"] { font-weight:800; }

/* COMMENTAIRES */
.commentaire { background:var(--couleur-surface); border:1px solid var(--couleur-bordure); border-radius:var(--rayon-lg); padding:var(--esp-lg); margin-bottom:var(--esp-md); }
.commentaire-auteur { font-weight:700; font-family:var(--police-titre); color:var(--couleur-primaire); }
.commentaire-date { font-size:var(--taille-sm); color:var(--couleur-texte-secondaire); }

/* FILTRES */
.formulaire-filtres { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:var(--esp-md); align-items:end; }
.formulaire-filtres .champ-formulaire { margin-bottom:0; }
.filtres-actions { display:flex; gap:var(--esp-sm); align-items:flex-end; }

/* PAGES DE CONTENU */
.page-contenu { max-width:800px; }
.page-contenu .carte { margin-bottom:var(--esp-xl); }
.page-contenu p { font-size:var(--taille-lg); line-height:1.8; max-width:none; }

/* CONTENEUR ÉTROIT */
.conteneur-etroit { max-width:var(--largeur-etroite); margin:0 auto; }

/* FOOTER */
footer[role="contentinfo"] { background:var(--couleur-footer); color:var(--couleur-footer-texte); padding:var(--esp-2xl) var(--esp-xl); margin-top:auto; }
.footer-container { max-width:var(--largeur-max); margin:0 auto; display:grid; grid-template-columns:1fr 1fr; gap:var(--esp-xl); }
.footer-section h4 { font-family:var(--police-titre); font-weight:700; color:var(--couleur-texte-inverse); margin-bottom:var(--esp-md); font-size:var(--taille-base); }
.footer-lien { color:var(--couleur-footer-lien); text-decoration:underline; text-underline-offset:2px; }
.footer-lien:hover,.footer-lien:focus { color:var(--couleur-texte-inverse); }
.footer-links { list-style:none; padding:0; margin:0; }
.footer-links li { margin-bottom:var(--esp-sm); }
.footer-bottom { grid-column:1/-1; border-top:1px solid rgba(255,255,255,0.15); padding-top:var(--esp-lg); margin-top:var(--esp-md); font-size:var(--taille-sm); text-align:center; opacity:0.8; }

/* MODALE ACCESSIBLE */
.dialog-overlay { display:none; position:fixed; inset:0; background:rgba(0,0,0,0.6); z-index:10001; align-items:center; justify-content:center; backdrop-filter:blur(4px); }
.dialog-overlay.dialog-ouvert { display:flex; }
.dialog-boite { background:var(--couleur-surface); border-radius:var(--rayon-xl); box-shadow:var(--ombre-xl); padding:var(--esp-xl); max-width:480px; width:90%; position:relative; border:1px solid var(--couleur-bordure); }
.dialog-titre { font-family:var(--police-titre); font-size:var(--taille-h3); font-weight:700; margin:0 0 var(--esp-md) 0; color:var(--couleur-texte); }
.dialog-message { margin:0 0 var(--esp-xl) 0; line-height:1.6; color:var(--couleur-texte); }
.dialog-boutons { display:flex; gap:var(--esp-md); justify-content:flex-end; flex-wrap:wrap; }

/* BANNIÈRE DÉMO */
.banniere-demo { background:var(--couleur-accent-claire); border:2px solid var(--couleur-accent); padding:var(--esp-md) var(--esp-xl); text-align:center; font-weight:600; color:var(--couleur-texte); }

/* SR-ONLY */
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.sr-only-focusable:focus { position:static; width:auto; height:auto; overflow:visible; clip:auto; white-space:normal; }

/* UTILITAIRES */
.flex { display:flex; } .flex-wrap { flex-wrap:wrap; } .flex-col { flex-direction:column; }
.items-center { align-items:center; } .justify-center { justify-content:center; } .justify-between { justify-content:space-between; }
.gap-xs { gap:var(--esp-xs); } .gap-sm { gap:var(--esp-sm); } .gap-md { gap:var(--esp-md); } .gap-lg { gap:var(--esp-lg); }
.text-center { text-align:center; } .text-sm { font-size:var(--taille-sm); } .text-lg { font-size:var(--taille-lg); }
.font-bold { font-weight:700; }
.mt-0 { margin-top:0; } .mt-md { margin-top:var(--esp-md); } .mt-lg { margin-top:var(--esp-lg); } .mt-xl { margin-top:var(--esp-xl); }
.mb-0 { margin-bottom:0; } .mb-sm { margin-bottom:var(--esp-sm); } .mb-md { margin-bottom:var(--esp-md); }
.mb-lg { margin-bottom:var(--esp-lg); } .mb-xl { margin-bottom:var(--esp-xl); }
.w-full { width:100%; }

/* ANIMATION LOGO */
@keyframes logo-pulse { 0%,100%{transform:scale(1);} 50%{transform:scale(1.03);} }
.logo-anime { animation:logo-pulse 4s ease-in-out infinite; }

/* RESPONSIVE */
@media(max-width:1024px) {
    .contenu-avec-pub { flex-direction:column; }
    .pub-zone-laterale { width:100%; max-width:600px; margin:0 auto; }
    .publicite.pub-lateral { position:static; max-width:100%; }
    .footer-container { grid-template-columns:1fr; }
}
@media(max-width:768px) {
    :root { --taille-base:15px; --taille-h1:1.75rem; --taille-h2:1.5rem; --taille-h3:1.25rem; }
    header[role="banner"] { padding:var(--esp-md); }
    .header-container { flex-direction:column; text-align:center; gap:var(--esp-sm); }
    .header-droite { flex-direction:column; gap:var(--esp-sm); }
    .theme-selecteur { flex-direction:column; gap:var(--esp-xs); }
    .nav-toggle { display:flex; }
    .nav-liste { display:none; flex-direction:column; width:100%; gap:var(--esp-xs); padding-top:var(--esp-sm); }
    .nav-liste.nav-ouverte { display:flex; }
    .nav-lien { width:100%; justify-content:center; padding:var(--esp-md); }
    main { padding:var(--esp-lg) var(--esp-md); }
    .grille-cartes { grid-template-columns:1fr; }
    .formulaire-filtres { grid-template-columns:1fr; }
    .hero { padding:var(--esp-xl) var(--esp-md); margin:-1.5rem -1rem 0 -1rem; }
    .hero h2 { font-size:1.75rem; }
    .hero p { font-size:var(--taille-base); }
    .publicite { padding:var(--esp-md); margin:var(--esp-md) 0; }
    .pagination-boutons { gap:0.2rem; }
    .bouton-petit { padding:var(--esp-xs) var(--esp-sm); font-size:0.8rem; min-width:2rem; min-height:2rem; }
}
@media(max-width:480px) {
    .header-auth { flex-direction:column; width:100%; }
    .header-auth .bouton { width:100%; }
    .hero-actions { flex-direction:column; }
    .hero .bouton { width:100%; }
    .footer-container { text-align:center; }
}

@media(prefers-contrast:high) {
    :root { --couleur-bordure:#000; --couleur-bordure-forte:#000; }
    button,.bouton { border:2px solid #000; }
}
@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; }
}
@media(min-width:1400px) { :root { --taille-base:18px; } }
