/* Educomport.fr - feuille de style principale */

:root{
  --bg-dark: oklch(22% 0.06 255);
  --text-light: oklch(96% 0.01 90);
  --accent: oklch(72% 0.13 235);
  --accent-warm: oklch(80% 0.13 195); /* bleu clair du chat du logo, remplace le corail (2026-08-11) */
  --dim: oklch(70% 0.01 90);
  --bg-light: oklch(96% 0.01 90);
  --text-dark: oklch(22% 0.06 255);
  --black: #000;
  --font-heading: 'Fraunces', serif;
  --font-body: 'Work Sans', sans-serif;
}

*{box-sizing:border-box}
.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;
}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--font-body);background:var(--bg-dark);color:var(--text-light)}
img{max-width:100%}
a{color:inherit}

.page{position:relative;overflow-x:hidden}

/* Header */
.site-header{
  display:flex;flex-wrap:nowrap;align-items:center;justify-content:space-between;gap:14px;
  padding:18px clamp(20px,5vw,48px);position:sticky;top:0;z-index:20;
  background:var(--bg-dark);border-bottom:1px solid rgba(255,255,255,.08);
}
.site-header .logo{height:80px;overflow:hidden;display:flex;align-items:center}
.site-header .logo a{display:flex;align-items:center;height:100%}
.site-header .logo img{height:180px;width:auto;object-fit:cover;object-position:center;flex-shrink:0}

.nav-desktop{
  display:flex;flex-wrap:nowrap;align-items:center;gap:clamp(18px,3.4vw,38px);
  font:600 clamp(13px,1.8vw,16px) var(--font-heading);text-transform:uppercase;letter-spacing:.06em;
}
.nav-desktop a{
  color:var(--text-light);text-decoration:none;padding:6px 0;
  border-bottom:2px solid transparent;transition:color .2s ease,border-color .2s ease;
}
.nav-desktop a:hover{color:var(--accent);border-bottom-color:var(--accent)}

.header-actions{display:flex;align-items:center;gap:10px}

.header-phone{
  display:none;align-items:center;gap:8px;text-decoration:none;color:var(--text-light);
  border:1px solid var(--accent);border-radius:8px;padding:9px 16px;white-space:nowrap;
  font:600 14px var(--font-body);letter-spacing:.02em;transition:color .2s ease,border-color .2s ease;
}
.header-phone:hover{color:var(--accent)}
@media (min-width:1081px){.header-phone{display:inline-flex}}

.menu-btn{
  /* Visible à toutes les largeurs depuis le 2026-08-18 : le hamburger porte les liens secondaires
     (Tarifs, Avis, Contact, FAQ) même sur desktop, cf. .nav-mobile .nav-primary plus bas. */
  display:flex;align-items:center;justify-content:center;gap:8px;width:auto;height:44px;
  background:none;border:none;color:var(--text-light);font:600 14px var(--font-body);
  text-transform:uppercase;letter-spacing:.06em;cursor:pointer;padding:0 4px;
}
.menu-btn .icon{font-size:22px}

.btn{
  display:inline-block;padding:16px 28px;border-radius:8px;text-decoration:none;font-weight:700;
  font-size:clamp(12.5px,1.6vw,14px);text-transform:uppercase;letter-spacing:.04em;
  font-family:var(--font-body);border:none;cursor:pointer;
}
.btn-sm{padding:10px 20px}
.btn-accent{background:var(--accent);color:var(--black)}
.hero-content .btn-accent{background:var(--accent)}
.btn-dark{background:var(--bg-dark);color:var(--text-light)}
.btn-light{background:var(--bg-light);color:var(--text-dark)}
.btn-outline{background:transparent;border:1px solid var(--accent);color:var(--text-light)}
.btn-outline-dark{background:transparent;border:1px solid var(--text-dark);color:var(--text-dark)}

.nav-mobile{
  /* Petit menu en surimpression du hero (pas un dépliant qui pousse le contenu) : position fixe,
     largeur réduite ancrée à droite, top calculé en JS d'après la hauteur réelle du header
     (initMobileMenu, main.js) pour rester juste sous le header quel que soit l'écran/la page. */
  display:none;flex-direction:column;gap:2px;
  position:fixed;right:clamp(20px,5vw,48px);width:min(240px, calc(100vw - 40px));
  padding:8px 18px 10px;
  background:oklch(22% 0.06 255 / .6);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border:1px solid rgba(255,255,255,.12);border-radius:14px;box-shadow:0 16px 32px rgba(0,0,0,.4);
  font:600 14px var(--font-heading);text-transform:uppercase;letter-spacing:.06em;
  z-index:25;
}
.nav-mobile.is-open{display:flex}
.nav-mobile a{color:var(--text-light);text-decoration:none;padding:10px 2px;border-bottom:1px solid rgba(255,255,255,.08)}
.nav-mobile a:last-child{border-bottom:none}

@media (max-width:1080px){
  .nav-desktop{display:none}
}
@media (min-width:1081px){
  /* Le hamburger reprend seulement les liens absents de .nav-desktop (voir index.html). */
  .nav-mobile .nav-primary{display:none}
}

/* Logo dimensionné en dur (crop d'image via hauteur fixe) : sur petit écran,
   il pousse le bouton "Menu" sur une 2e ligne. On le réduit pour que les deux
   tiennent sur la même ligne. */
@media (max-width:480px){
  .site-header .logo{height:56px}
  .site-header .logo img{height:100px}
}

/* Hero */
.hero{
  position:relative;min-height:clamp(460px,78vw,700px);
  padding:clamp(48px,9vw,100px) clamp(20px,5vw,48px) clamp(30px,7vw,60px);
  display:flex;align-items:flex-end;overflow:hidden;
}
.hero img.hero-bg{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 20%;
  z-index:0;
}
/* Ombre uniquement côté gauche (lisibilité du titre), l'image reste intacte à droite. */
.hero .gradient-1{
  position:absolute;inset:0;z-index:1;opacity:.88;
  background:linear-gradient(90deg,
    var(--bg-dark) 0%,
    var(--bg-dark) 8%,
    var(--bg-dark) 20%,
    transparent 60%
  );
}
.hero-content{position:relative;z-index:2;max-width:640px}
/* Titre ancré au milieu à gauche de l'image, indépendamment du reste du contenu
   (accroche, boutons) qui reste en bas - d'où la position absolute plutôt
   qu'un simple élément de .hero-content. */
.hero-title{
  position:absolute;z-index:2;
  top:50%;transform:translateY(-50%);left:clamp(20px,5vw,48px);right:clamp(20px,5vw,48px);
  max-width:780px;
  font-family:var(--font-heading);font-weight:700;font-size:clamp(26px,6.5vw,88px);
  line-height:.95;letter-spacing:.005em;margin:0;
}
/* Kicker géo/métier (2026-08-26, suite au rapport de la routine de suivi mensuel) : discret,
   au-dessus de l'accroche courte validée le 2026-08-11 - ne la remplace pas, sert le signal
   SEO géo/métier dans le H1 sans toucher au ton emotionnel voulu pour l'accroche. */
.hero-kicker{
  display:block;font:600 13px var(--font-body);text-transform:uppercase;letter-spacing:.1em;
  color:var(--accent);margin-bottom:10px;white-space:normal;
}
.hero-accroche{display:block;white-space:nowrap}
.hero-accroche .hl{color:var(--accent)}
.hero-content .eyebrow{
  font:600 13px var(--font-body);text-transform:uppercase;letter-spacing:.1em;color:var(--accent);
  margin-top:14px;
}
.hero-actions{display:flex;flex-direction:column;align-items:flex-start;gap:14px}

.trust-bar{
  display:flex;justify-content:center;padding:14px clamp(20px,5vw,48px);
  border-bottom:1px solid rgba(255,255,255,.08);
}
.trust-bar-fallback{
  display:flex;align-items:center;gap:10px;color:var(--text-light);text-decoration:none;
  font:600 clamp(13px,1.7vw,15px) var(--font-body);
}
.trust-bar-fallback .stars{color:var(--accent);font-size:15px;letter-spacing:.08em}
.trust-bar-fallback:hover{color:var(--accent)}

/* Bandeau bleu clair : rangée de cartes d'avis à faire défiler au doigt/à la molette
   (même mécanique que .partners-scroll plus bas - scroll-snap natif, pas d'auto-défilement).
   Remplace l'ancien bandeau statique "Méthode naturelle..." le 2026-08-18, texte déplacé en
   eyebrow section 01 - voir journal.md. */
.reviews-ticker{background:var(--accent);padding:32px 0}
.reviews-ticker-track{
  display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;
  padding:0 clamp(20px,5vw,48px) 8px;-webkit-overflow-scrolling:touch;
  scrollbar-width:none;-ms-overflow-style:none;
}
.reviews-ticker-track::-webkit-scrollbar{display:none}
.ticker-review-card{
  /* Même teinte que les cartes partenaires (fond sombre + 5% de blanc) reproduite ici en solide,
     plutôt qu'en transparence sur le bandeau bleu clair - sinon l'accent transparaît et change la teinte. */
  flex:0 0 clamp(240px,80vw,320px);scroll-snap-align:start;
  background:color-mix(in srgb, var(--bg-dark) 95%, white 5%);border-radius:8px;padding:20px 22px;
  color:var(--text-light);display:flex;flex-direction:column;gap:8px;transition:background .2s ease;
  font-style:italic;
}
.ticker-review-card:hover{background:color-mix(in srgb, var(--bg-dark) 91%, white 9%)}
.ticker-review-card .stars{color:var(--text-light);font-size:14px;letter-spacing:.08em}
.ticker-review-card .review-text{
  font-size:14px;line-height:1.55;margin:0;
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;
}
.ticker-review-card .review-source{
  font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--dim);
  text-decoration:none;padding:6px 2px;margin:0 -2px;display:inline-block;min-height:24px;
}
.ticker-review-card .review-source:hover{color:var(--text-light);text-decoration:underline}
.review-more{
  background:none;border:none;padding:6px 4px;margin:-6px -4px 0 0;color:var(--text-light);font-weight:700;
  cursor:pointer;font-size:15px;text-decoration:underline;
  align-self:flex-end;min-height:24px;display:inline-flex;align-items:center;
}
.review-more-label{font-size:12px;font-style:italic;font-weight:400;text-decoration:none;margin-right:2px}
.ticker-review-card[data-expanded] .review-more{display:none}
.ticker-review-card[data-expanded] .review-text{
  display:block;-webkit-line-clamp:unset;overflow:visible;
}

/* Sections numérotées avec accordéon */
.section{
  display:flex;flex-wrap:wrap;gap:clamp(20px,5vw,60px);
  padding:clamp(56px,10vw,110px) clamp(20px,5vw,48px);
  border-bottom:1px solid rgba(255,255,255,.08);
}
.section-number{
  flex:0 1 auto;min-width:0;font-family:var(--font-heading);font-weight:700;
  font-size:clamp(40px,10vw,120px);line-height:.8;color:rgba(255,255,255,.38);
}
.section-body{flex:1 1 320px;min-width:0}
.section-body .eyebrow{
  font:600 13px var(--font-body);text-transform:uppercase;letter-spacing:.08em;color:var(--accent);
  margin:0 0 12px;
}
.section-body h2{
  font-family:var(--font-heading);font-weight:700;font-size:clamp(24px,5vw,44px);
  letter-spacing:.02em;margin:0 0 22px;color:var(--text-light);overflow-wrap:break-word;
}
.section-body p{
  font-size:clamp(16px,1.95vw,18px);line-height:1.75;color:var(--dim);max-width:65ch;margin:0 0 18px;
}
.section-body .lede{font-size:clamp(18px,2.4vw,21px);line-height:1.7}
/* Citation mise en avant : blanche, police des titres en italique, bloc centré dans
   la page (max-width 500px) tout en gardant le texte aligné à gauche à l'intérieur.
   Traitement standard pour toute citation du site depuis le 2026-08-19 (à combiner
   avec .lede pour la taille/interligne) - voir notes/charte-marque.md §2. */
.section-body .lede-quote{
  color:var(--text-light);font-family:var(--font-heading);font-style:italic;
  max-width:65ch;margin:0 auto 36px;text-align:left;
}
.section-body ul{
  font-size:clamp(16px,1.95vw,18px);line-height:1.75;color:var(--dim);max-width:65ch;
  margin:0 0 18px;padding-left:22px;
}
.section-body ul li{margin-bottom:4px}
/* "COMPORTEMENTALISME" est un seul mot sans espace : sur mobile, overflow-wrap
   le coupait en 2 lignes. On force une seule ligne et on laisse le texte
   rétrécir davantage plutôt que de casser le mot. */
#comportementalisme .section-body h2{
  white-space:nowrap;font-size:clamp(15px,5.6vw,44px);
}
.section-body .more{display:block;max-width:65ch}
.section-body .more.is-collapsed{display:none}
/* Intro "DE QUOI PARLE-T-ON ?" : seule section sans .section-number (retiré le
   2026-08-18), centrée en bloc dans sa zone plutôt que collée à gauche sur
   toute la largeur - demande explicite. */
#intro .section-body{max-width:760px;margin:0 auto}
/* Bloc de texte centré dans sa zone tout en gardant le texte aligné à gauche
   (même principe que #intro ci-dessus, réutilisable sur d'autres pages) - demande
   explicite du 2026-08-19 sur education-canine.html. */
.section-body--centered{max-width:760px;margin:0 auto}

.toggle-btn{
  background:none;border:none;color:var(--accent);font-weight:700;text-decoration:none;
  font-size:clamp(13px,1.8vw,15px);text-transform:uppercase;letter-spacing:.04em;cursor:pointer;
  font-family:var(--font-body);padding:0;margin-top:18px;
}
.section-links{
  /* Empilés à gauche, "En savoir plus" en premier puis les liens secondaires en dessous
     (demande explicite du 2026-08-18, remplace l'ancien "En savoir plus" à gauche / liens
     secondaires à droite). */
  display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin-top:18px;
  /* max-width en "ch" doit utiliser la même taille de police que .section-body p pour tomber
     sur la même largeur en pixels (le "ch" dépend de la taille de police de l'élément lui-même). */
  max-width:65ch;font-size:clamp(16px,1.95vw,18px);
}
.section-links-extra{display:flex;flex-direction:column;gap:10px;align-items:flex-start;text-align:left}
.section-links a{
  color:var(--accent);font-weight:700;text-decoration:none;
  font-size:clamp(13px,1.8vw,15px);text-transform:uppercase;letter-spacing:.04em;
}

.chips{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:24px}
.chip{
  border:1px solid rgba(255,255,255,.25);color:var(--dim);padding:7px 16px;
  font-size:clamp(11.5px,1.5vw,13px);text-transform:uppercase;letter-spacing:.04em;
}

/* Tarifs */
.pricing{padding:clamp(56px,10vw,110px) clamp(20px,5vw,48px);border-bottom:1px solid rgba(255,255,255,.08);scroll-margin-top:120px}
.pricing h2{
  font-family:var(--font-heading);font-weight:700;font-size:clamp(28px,5vw,44px);
  letter-spacing:.02em;margin:0 0 12px;text-align:center;
}
.pricing-intro{text-align:center;font-size:clamp(15px,1.9vw,17px);line-height:1.6;max-width:60ch;margin:0 auto 40px}
.pricing-grid{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:auto;gap:16px}
.price-card{
  background:var(--accent);border-radius:8px;padding:28px 22px;display:flex;flex-direction:column;
  justify-content:center;align-items:center;text-align:center;gap:10px;
}
.price-card h3{font-weight:700;font-size:clamp(20px,3vw,30px);color:var(--text-dark);margin:0}
.price-card .price{font-family:var(--font-heading);font-weight:700;font-size:clamp(38px,6vw,52px);color:var(--text-dark)}
.price-note{font-size:clamp(18px,3vw,26px);vertical-align:super;cursor:help}
.price-card p{font-size:clamp(15px,2.1vw,21px);line-height:1.5;color:var(--text-dark);max-width:26ch;margin:0}
.price-card--bilan{grid-column:1;grid-row:1 / span 2}
.price-card--individuel{grid-column:2;grid-row:1}
.price-card--comport{grid-column:2;grid-row:2}
.price-card--collectif{grid-column:1 / span 2;grid-row:3}
.price-card--collectif p{max-width:40ch}
.price-card--kinesiologie{grid-column:1 / span 2;grid-row:4}
.price-card a{color:var(--text-dark);font-weight:700;text-decoration:underline;font-size:15px;text-transform:uppercase;letter-spacing:.04em}
@media (max-width:640px){
  .pricing-grid{grid-template-columns:1fr}
  .price-card--bilan,.price-card--individuel,.price-card--comport,.price-card--collectif,.price-card--kinesiologie{grid-column:1;grid-row:auto}
}
.pricing-note{text-align:center;font-size:clamp(17px,2.3vw,20px);line-height:1.6;margin:28px 0 0}
.pricing-note strong{color:var(--accent)}
.pricing-fees{text-align:center;font-size:15px;line-height:1.6;color:var(--dim);margin:12px 0 0}

/* Avis */
.reviews-section{padding:clamp(56px,10vw,110px) clamp(20px,5vw,48px);border-bottom:1px solid rgba(255,255,255,.08)}
.reviews-section--tight{padding-top:0}
.stars{color:var(--accent);font-size:22px;letter-spacing:.1em}

/* Partenaires locaux */
.partners-section{padding:clamp(56px,10vw,110px) clamp(20px,5vw,48px);border-bottom:1px solid rgba(255,255,255,.08)}
.partners-section h2{
  font-family:var(--font-heading);font-weight:700;font-size:clamp(28px,5vw,44px);
  letter-spacing:.02em;margin:0 0 12px;text-align:center;
}
.partners-sub{text-align:center;font-size:clamp(15px,1.9vw,17px);color:var(--dim);max-width:60ch;margin:0 auto 32px}
.partners-scroll{
  display:flex;justify-content:safe center;overflow-x:auto;gap:20px;scroll-snap-type:x mandatory;padding-bottom:8px;
  -webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;
}
.partners-scroll::-webkit-scrollbar{display:none}
.partner-card{
  flex:0 0 200px;scroll-snap-align:start;background:rgba(255,255,255,.05);border-radius:8px;
  padding:28px 20px;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:10px;text-align:center;text-decoration:none;transition:background .2s ease;
}
.partner-card:hover{background:rgba(255,255,255,.09)}
.partner-card img{max-width:100%;max-height:60px;width:auto;height:auto;background:#fff;border-radius:4px;padding:6px}
.partner-placeholder{
  width:100%;height:60px;border:1px dashed rgba(255,255,255,.25);border-radius:6px;
  display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--dim);
  text-transform:uppercase;letter-spacing:.04em;
}
.partner-name{font-size:13px;color:var(--dim)}
.partner-name .partner-tag{display:block;font-size:11.5px;color:var(--accent);text-transform:uppercase;letter-spacing:.04em;margin-top:2px}

/* FAQ */
.faq-section{padding:clamp(56px,10vw,110px) clamp(20px,5vw,48px);border-bottom:1px solid rgba(255,255,255,.08)}
.faq-section h2{
  font-family:var(--font-heading);font-weight:700;font-size:clamp(28px,5vw,44px);
  letter-spacing:.02em;margin:0 0 32px;text-align:center;
}
.faq-list{max-width:760px;margin:0 auto;display:flex;flex-direction:column;gap:12px}
.faq-list details{background:rgba(255,255,255,.05);border-radius:8px;padding:18px 24px}
.faq-list summary{font:600 16px var(--font-body);color:var(--text-light);cursor:pointer}
.faq-list .faq-answer{font-size:15px;line-height:1.6;color:oklch(85% 0.01 90);margin-top:12px}
.faq-list .faq-answer ul{margin:10px 0 0;padding-left:20px}
.faq-list .faq-answer li{margin-bottom:6px}

/* CTA contact */
.contact-cta{
  padding:clamp(56px,10vw,130px) clamp(20px,5vw,48px);background:var(--bg-light);color:var(--black);
  display:flex;flex-wrap:wrap-reverse;gap:clamp(24px,5vw,48px);
}
.cta-visual{flex:1 1 380px;display:flex;flex-wrap:wrap;gap:20px;align-items:stretch}
.contact-cta .cta-img{flex:1 1 180px;min-height:220px;display:flex;align-items:center;justify-content:center}
.contact-cta .cta-img img{width:auto;height:100%;min-height:220px;max-height:480px;object-fit:contain}
.cta-map{
  flex:1 1 220px;min-height:220px;max-height:480px;border-radius:8px;overflow:hidden;
  background:var(--bg-light);display:flex;flex-direction:column;
}
.cta-map [data-service-map]{flex:1 1 auto}

.map-label{
  font:600 12px var(--font-body);text-transform:uppercase;letter-spacing:.1em;color:oklch(42% 0.16 235);
  padding:14px 16px 0;flex:0 0 auto;
}
.map-col{display:flex;flex-direction:column}
.map-col .map-label{padding:0 0 10px}
.contact-cta .cta-content{flex:2 1 380px}
.contact-cta .eyebrow{font:600 13px var(--font-body);text-transform:uppercase;letter-spacing:.14em;color:oklch(42% 0.16 235);margin-bottom:18px}
.contact-cta h2{font-family:var(--font-heading);font-weight:700;font-size:clamp(30px,5.5vw,56px);line-height:.95;margin:0 0 26px}
.contact-cta .phone-link{display:block;font-family:var(--font-heading);font-weight:700;font-size:clamp(32px,7vw,64px);color:var(--black);text-decoration:none;letter-spacing:.02em;margin-bottom:20px}
.cta-actions{display:flex;flex-wrap:wrap;gap:14px}

/* Footer */
.site-footer-logo{padding:clamp(12px,2.5vw,20px) clamp(20px,5vw,48px) 0}
.site-footer-logo img{width:100%;height:auto;display:block;opacity:.9}
.site-footer-copyright{padding:8px clamp(20px,5vw,48px) 12px;font-size:clamp(10.5px,1.3vw,12px);color:var(--dim);text-align:center}
.site-footer-legal{padding:0 clamp(20px,5vw,48px) clamp(20px,4vw,28px);font-size:clamp(11px,1.4vw,12.5px);text-transform:uppercase;letter-spacing:.06em;text-align:center}
.site-footer-legal a{color:var(--dim);text-decoration:none;margin:0 9px}
.site-footer-legal a:hover{color:var(--accent)}

/* Boutons flottants : les 3 actions de contact (appel/WhatsApp/mail) sont
   affichées directement en pile verticale, sans toggle - raccourcit le
   parcours vers la prise de contact (voir index.html pour le détail du
   choix). Repliés en rond icône seule par défaut (moins intrusif à
   l'écran), le libellé se révèle au survol/focus. */
.fab-stack{
  position:fixed;bottom:20px;right:20px;z-index:30;display:flex;flex-direction:column;gap:12px;align-items:flex-end;
  opacity:0;transform:translateY(12px);pointer-events:none;transition:opacity .3s ease,transform .3s ease;
}
.fab-stack.is-visible{opacity:1;transform:translateY(0);pointer-events:auto}
.fab{
  width:60px;height:60px;border-radius:30px;overflow:hidden;transition:width .25s ease;
  background:var(--accent-warm);display:flex;align-items:center;text-decoration:none;
  box-shadow:0 8px 24px rgba(0,0,0,.4);
}
.fab .fab-icon{width:60px;height:60px;flex:none;display:flex;align-items:center;justify-content:center}
.fab .fab-label{white-space:nowrap;color:var(--black);font:600 13px var(--font-body);text-transform:uppercase;letter-spacing:.03em;padding-right:18px}
.fab:hover,.fab:focus-visible{width:220px}

/* Pages internes (Contact, Cours collectifs) */
.page-hero{padding:clamp(48px,8vw,90px) clamp(20px,5vw,48px) clamp(36px,6vw,60px)}
.page-hero h1{font-family:var(--font-heading);font-weight:700;font-size:clamp(30px,6vw,64px);line-height:.98;letter-spacing:.005em;margin:0 0 18px;max-width:16ch}
.page-hero h1 span{color:var(--accent)}
.page-hero p{font-size:clamp(16px,2.2vw,19px);line-height:1.6;color:oklch(85% 0.01 90);max-width:56ch;margin:0 0 30px}
.page-hero .actions{display:flex;flex-wrap:wrap;gap:14px}
/* Page avis.html : hero centré (doit passer après les règles ci-dessus, même spécificité,
   pour gagner en cascade - sinon max-width:16ch du h1 reste appliqué). */
.page-hero--center{text-align:center}
.page-hero--center h1{max-width:none;margin-left:auto;margin-right:auto}
.page-hero--center p{max-width:56ch;margin-left:auto;margin-right:auto}
.page-hero--center p a{color:var(--accent);text-decoration:underline}
.page-hero--center .actions{justify-content:center}

.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;padding:0 clamp(20px,5vw,48px) clamp(56px,8vw,90px)}
.info-card{background:rgba(255,255,255,.05);border-radius:8px;padding:24px 22px}
/* Espacements verticaux resserrés (moitié, cartes→footer encore réduit à 20px fixe)
   sur les 3 pages de service (education-canine/comportementalisme/kinesiologie-animale) -
   demande explicite du 2026-08-19, scoping via classe body.page-service pour ne pas
   affecter les autres pages qui partagent .page-hero/.section/.info-grid
   (avis/contact/cours-collectifs). */
.page-service .page-hero{padding-bottom:clamp(18px,3vw,30px)}
.page-service .section{padding-top:clamp(28px,5vw,55px);padding-bottom:clamp(28px,5vw,55px)}
.page-service .info-grid{padding-bottom:20px}
.info-card .label{font:600 12px var(--font-body);text-transform:uppercase;letter-spacing:.1em;color:var(--accent);margin-bottom:10px}
.info-card .value{font-size:16px;line-height:1.6;color:oklch(85% 0.01 90)}
.info-card .value a{color:var(--accent)}
.info-card .value ul{margin:0 0 8px;padding-left:20px}
.info-card .value ul:last-child{margin-bottom:0}
.info-card .value li{margin-bottom:4px}
.info-card .value li:last-child{margin-bottom:0}

.form-section{background:var(--bg-light);color:var(--text-dark);padding:clamp(48px,8vw,90px) clamp(20px,5vw,48px);display:flex;flex-wrap:wrap;gap:clamp(32px,6vw,64px)}
.form-section .form-col{flex:1 1 320px}
.form-section h2{font-family:var(--font-heading);font-weight:700;font-size:clamp(26px,4.5vw,38px);letter-spacing:.02em;margin:0 0 14px}
.form-section .form-intro{font-size:15px;line-height:1.6;color:oklch(40% 0.05 255);max-width:48ch;margin:0 0 26px}
.form-section .map-col{flex:1 1 320px;min-height:320px;border-radius:8px;overflow:hidden}
.form-section .map-col iframe{width:100%;height:100%;min-height:320px;border:0}

[data-service-map]{width:100%;height:100%;min-height:220px;background:rgba(0,0,0,.05)}

form.contact-form{display:flex;flex-direction:column;gap:14px;max-width:480px}
form.contact-form[hidden],form.session-form[hidden]{display:none}
form.contact-form input,form.contact-form textarea{
  padding:14px 16px;border:1px solid oklch(80% 0.02 255);border-radius:4px;font-size:16px;font-family:var(--font-body);
}
form.contact-form textarea{resize:vertical}
.honeypot{position:absolute;left:-9999px}
.form-success{background:var(--accent);border-radius:8px;padding:24px;font-weight:700;font-size:16px}
.form-error{color:oklch(50% 0.2 25);font-size:14px}

/* Cours collectifs */
.sessions{display:flex;flex-direction:column;gap:20px;padding:0 clamp(20px,5vw,48px) clamp(56px,10vw,110px)}
.session-card{background:rgba(255,255,255,.05);border-radius:8px;padding:clamp(24px,4vw,36px)}
.session-header{display:flex;flex-wrap:wrap;gap:14px;align-items:baseline;justify-content:space-between;margin-bottom:18px}
.session-header .title{font-family:var(--font-heading);font-weight:700;font-size:clamp(20px,3vw,26px);color:var(--accent)}
.session-header .time{font-size:clamp(13.5px,1.8vw,15px);color:var(--dim);margin-top:4px}
.spots-badge{background:rgba(255,255,255,.1);border-radius:20px;padding:6px 16px;font-size:clamp(11.5px,1.5vw,13px);font-weight:700;color:var(--accent);white-space:nowrap}

form.session-form{display:flex;flex-wrap:wrap;gap:12px}
form.session-form input{
  flex:1 1 150px;min-width:0;padding:13px 14px;border:1px solid rgba(255,255,255,.25);border-radius:6px;
  background:transparent;color:var(--text-light);font-size:clamp(14px,1.8vw,15px);font-family:var(--font-body);
}
form.session-form input[name="name"]{flex-basis:180px}
form.session-form .btn{background:var(--accent);color:var(--text-dark);border-radius:6px;padding:13px 24px;font-size:clamp(12.5px,1.6vw,14px)}
.session-error{flex-basis:100%;color:oklch(65% 0.2 25);font-size:clamp(12.5px,1.6vw,14px)}
.session-success{background:var(--accent);color:var(--text-dark);border-radius:8px;padding:20px;font-weight:700}

.session-card.is-full .spots-badge{background:rgba(255,255,255,.08);color:var(--dim)}
.session-full-note{margin:0;font-size:clamp(14px,1.8vw,15px);line-height:1.6;color:var(--dim)}
.session-full-note a{color:var(--accent);font-weight:700;text-decoration:underline}

.sessions-empty{
  background:var(--accent);color:var(--text-dark);border-radius:8px;padding:clamp(28px,5vw,44px);
  max-width:560px;margin:0 auto;text-align:center;display:flex;flex-direction:column;gap:14px;align-items:center;
}
.sessions-empty p{margin:0;font-size:clamp(15px,2vw,17px);line-height:1.6}
.sessions-empty .btn{margin-top:6px}

/* Newsletter cours collectifs */
.newsletter-section{background:var(--bg-light);color:var(--text-dark);padding:clamp(48px,8vw,90px) clamp(20px,5vw,48px)}
.newsletter-card{max-width:640px;margin:0 auto;text-align:center}
.newsletter-card h2{font-family:var(--font-heading);font-weight:700;font-size:clamp(22px,3.4vw,28px);margin:0 0 12px;color:var(--text-dark)}
.newsletter-card p{font-size:clamp(15px,1.9vw,17px);line-height:1.6;color:oklch(40% 0.05 255);margin:0 0 22px}
.newsletter-form{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}
.newsletter-form input[type="email"]{
  flex:1 1 220px;min-width:0;padding:13px 14px;border:1px solid oklch(80% 0.02 255);border-radius:6px;
  background:#fff;color:var(--text-dark);font-size:clamp(14px,1.8vw,15px);font-family:var(--font-body);
}
.newsletter-form .btn{border-radius:6px;padding:13px 24px;font-size:clamp(12.5px,1.6vw,14px)}
.newsletter-note{font-size:12px;color:oklch(40% 0.05 255);margin:10px 0 0}
.newsletter-success{background:var(--accent);color:var(--text-dark);border-radius:8px;padding:16px;font-weight:700;margin-top:16px}
.newsletter-error{color:oklch(65% 0.2 25);font-size:clamp(12.5px,1.6vw,14px);margin-top:12px}

@media (max-width:1080px){
  .site-header{flex-wrap:wrap}
}

/* Mentions légales / Confidentialité */
.legal-content{padding:0 clamp(20px,5vw,48px) clamp(56px,9vw,100px);max-width:70ch}
.legal-content h2{
  font-family:var(--font-heading);font-weight:700;font-size:clamp(20px,3vw,26px);
  margin:36px 0 12px;color:var(--accent);
}
.legal-content h2:first-child{margin-top:0}
.legal-content p{font-size:clamp(15px,1.9vw,17px);line-height:1.75;color:var(--dim);margin:0 0 14px}
.legal-content ul{margin:0 0 14px;padding-left:22px;color:var(--dim)}
.legal-content li{font-size:clamp(15px,1.9vw,17px);line-height:1.75;margin-bottom:6px}
.legal-content a{color:var(--accent)}
.legal-content em{color:var(--text-light);font-style:normal;font-weight:600;background:rgba(255,255,255,.08);padding:1px 6px;border-radius:3px}
