/* ==========================================================
   Sa Pat Pour Toi — Feuille de style
   Direction artistique : nature, douceur, confiance.
   ========================================================== */

:root {
  /* Couleurs */
  --creme: #fbf7f0;
  --papier: #fffdf9;
  --sable: #f3ebdd;
  --sauge-50: #f1f6ef;
  --sauge-100: #e1ecdc;
  --sauge-200: #c7dcc0;
  --sauge-400: #8fb886;
  --sauge-500: #6f9e68;
  --sauge-600: #4e7a47;
  --foret: #46693f;
  --foret-700: #36532f;
  --foret-900: #233623;
  --texte: #3a4838;
  --texte-doux: #66745f;
  --ciel: #d6ecf8;
  --rose: #f4dbe8;
  --soleil: #f7dc96;
  --prune: #8a4f7d;

  /* Typographies */
  --f-titre: "Fraunces", Georgia, serif;
  --f-texte: "Nunito", system-ui, -apple-system, sans-serif;
  --f-main: "Caveat", cursive;

  /* Mise en page */
  --largeur: 1200px;
  --gouttiere: clamp(16px, 4vw, 32px);
  --r-s: 12px;
  --r-m: 20px;
  --r-l: 32px;
  --ombre-s: 0 2px 8px rgba(35, 54, 35, .06);
  --ombre-m: 0 12px 32px -8px rgba(35, 54, 35, .16);
  --ombre-l: 0 30px 60px -20px rgba(35, 54, 35, .25);
  --transition: .3s cubic-bezier(.2, .7, .2, 1);
}

/* ---------- Base ---------- */
*,
*::before,
*::after { box-sizing: border-box; }

html { scroll-behavior: smooth; scroll-padding-top: 100px; overflow-x: clip; }

body {
  margin: 0;
  background: var(--creme);
  color: var(--texte);
  font-family: var(--f-texte);
  font-size: 1.0625rem;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

img, svg { display: block; max-width: 100%; }

a { color: var(--foret); text-underline-offset: 3px; }

p { margin: 0 0 1em; }
p:last-child { margin-bottom: 0; }

h1, h2, h3, h4 {
  margin: 0 0 .5em;
  font-family: var(--f-titre);
  font-weight: 500;
  line-height: 1.15;
  color: var(--foret-900);
  text-wrap: balance;
}

h1 { font-size: clamp(2.4rem, 5.2vw, 4rem); letter-spacing: -.02em; }
h2 { font-size: clamp(1.9rem, 3.6vw, 2.75rem); letter-spacing: -.015em; }
h3 { font-size: 1.3rem; }

/* Mot mis en valeur, écrit « à la main » */
.manuscrit {
  font-family: var(--f-main);
  font-weight: 600;
  font-size: 1.15em;
  color: var(--sauge-500);
  letter-spacing: 0;
}

:focus-visible {
  outline: 3px solid var(--sauge-400);
  outline-offset: 3px;
  border-radius: 6px;
}

.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;
}

.lien-evitement {
  position: absolute; left: 16px; top: -60px; z-index: 100;
  padding: 10px 18px; border-radius: var(--r-s);
  background: var(--foret); color: #fff; text-decoration: none;
}
.lien-evitement:focus { top: 16px; }

/* ---------- Mise en page ---------- */
.conteneur { width: min(100% - 2 * var(--gouttiere), var(--largeur)); margin-inline: auto; }
.conteneur-etroit { width: min(100% - 2 * var(--gouttiere), 820px); margin-inline: auto; }

.section { position: relative; padding-block: clamp(64px, 9vw, 120px); }
.section-serree { padding-block: clamp(48px, 6vw, 80px); }
.fond-papier { background: var(--papier); }
.fond-sauge { background: var(--sauge-50); }
.fond-sable { background: var(--sable); }

.entete-section { max-width: 680px; margin-bottom: clamp(36px, 5vw, 56px); }
.entete-section.centre { margin-inline: auto; text-align: center; }
.entete-section p { color: var(--texte-doux); font-size: 1.125rem; }

.surtitre {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 14px;
  font-size: .8rem;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--sauge-600);
}
.surtitre::before {
  content: "";
  width: 18px; height: 18px;
  background: url("../images/patte-verte.svg") center / contain no-repeat;
}

.chapo { font-size: clamp(1.1rem, 1.6vw, 1.25rem); color: var(--texte-doux); }

.grille-2 { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(32px, 6vw, 88px); align-items: center; }

/* ---------- Boutons ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 14px 26px;
  border: 2px solid transparent;
  border-radius: 999px;
  font: 700 1rem/1.2 var(--f-texte);
  text-decoration: none;
  cursor: pointer;
  transition: background var(--transition), color var(--transition), transform var(--transition), box-shadow var(--transition), border-color var(--transition);
}
.btn .ic { width: 18px; height: 18px; transition: transform var(--transition); }
.btn:hover .ic-fleche { transform: translateX(4px); }

.btn-principal { background: var(--foret); color: #fff; box-shadow: 0 8px 20px -8px rgba(70, 105, 63, .6); }
.btn-principal:hover { background: var(--foret-700); transform: translateY(-2px); box-shadow: 0 14px 28px -10px rgba(70, 105, 63, .6); }

.btn-secondaire { border-color: var(--sauge-200); color: var(--foret); background: var(--papier); }
.btn-secondaire:hover { border-color: var(--sauge-500); background: var(--sauge-50); }

.btn-clair { background: #fff; color: var(--foret-900); }
.btn-clair:hover { background: var(--sauge-50); transform: translateY(-2px); }

.btn-contour-clair { border-color: rgba(255, 255, 255, .6); color: #fff; }
.btn-contour-clair:hover { background: rgba(255, 255, 255, .12); border-color: #fff; }

.groupe-boutons { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 32px; }

.lien-fleche {
  display: inline-flex; align-items: center; gap: 8px;
  font-weight: 700; color: var(--foret); text-decoration: none;
}
.lien-fleche .ic { width: 18px; height: 18px; transition: transform var(--transition); }
.lien-fleche:hover .ic { transform: translateX(4px); }

.ic { width: 24px; height: 24px; flex-shrink: 0; }

/* ---------- En-tête ---------- */
.entete {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(251, 247, 240, .88);
  backdrop-filter: saturate(1.4) blur(12px);
  -webkit-backdrop-filter: saturate(1.4) blur(12px);
  transition: box-shadow var(--transition), background var(--transition);
}
.entete.defile { background: rgba(255, 253, 249, .95); box-shadow: 0 6px 24px -12px rgba(35, 54, 35, .25); }

.entete .conteneur { display: flex; align-items: center; gap: 24px; height: 84px; transition: height var(--transition); }
.entete.defile .conteneur { height: 68px; }
.logo img { transition: width var(--transition); }
.entete.defile .logo img { width: 136px; }

.logo { flex-shrink: 0; }
.logo img { width: 160px; height: auto; mix-blend-mode: multiply; }

.nav { margin-left: auto; }
.nav ul { display: flex; align-items: center; gap: 2px; margin: 0; padding: 0; list-style: none; }
.nav a {
  position: relative;
  display: block;
  padding: 8px 13px;
  border-radius: 999px;
  font-size: .95rem;
  font-weight: 600;
  color: var(--texte);
  text-decoration: none;
  transition: background var(--transition), color var(--transition);
}
.nav a:hover { background: var(--sauge-50); color: var(--foret); }
.nav a[aria-current="page"] { background: var(--sauge-100); color: var(--foret-900); }

.entete .btn { padding: 11px 20px; font-size: .92rem; }

.menu-bouton {
  display: none;
  margin-left: auto;
  width: 46px; height: 46px;
  border: 0; border-radius: 50%;
  background: var(--sauge-100);
  color: var(--foret-900);
  cursor: pointer;
}
.menu-bouton span {
  display: block; width: 20px; height: 2px; margin: 4px auto;
  background: currentColor; border-radius: 2px;
  transition: transform var(--transition), opacity var(--transition);
}
.menu-bouton[aria-expanded="true"] span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.menu-bouton[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.menu-bouton[aria-expanded="true"] span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

/* ---------- Emplacements photo ---------- */
.photo {
  position: relative;
  display: grid;
  place-items: center;
  overflow: hidden;
  background:
    radial-gradient(circle at 25% 20%, rgba(255, 255, 255, .7), transparent 45%),
    linear-gradient(145deg, var(--sauge-100), var(--sable));
  border-radius: var(--r-l);
  aspect-ratio: 4 / 5;
}
.photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.photo-legende {
  display: inline-flex; align-items: center; gap: 8px;
  max-width: 80%;
  padding: 8px 16px;
  border-radius: 999px;
  background: rgba(255, 255, 255, .85);
  color: var(--texte-doux);
  font-size: .85rem;
  font-weight: 600;
  text-align: center;
  line-height: 1.35;
}
.photo-legende .ic { width: 16px; height: 16px; }
.photo::before {
  content: "";
  position: absolute;
  inset: 0;
  background: url("../images/patte-blanche.svg") 0 0 / 46px repeat;
  opacity: .25;
  transform: rotate(-12deg) scale(1.4);
}
.forme-organique { border-radius: 58% 42% 46% 54% / 46% 52% 48% 54%; }
.photo-paysage { aspect-ratio: 16 / 10; }
.photo-carre { aspect-ratio: 1; }

/* ---------- Hero accueil ---------- */
.hero { position: relative; padding-block: clamp(40px, 6vw, 80px) clamp(64px, 8vw, 110px); overflow: hidden; }
.hero::before {
  content: "";
  position: absolute;
  width: 720px; height: 720px;
  right: -200px; top: -240px;
  border-radius: 50%;
  background: radial-gradient(circle, var(--sauge-100) 0%, transparent 65%);
  z-index: -1;
}
.hero .grille-2 { grid-template-columns: 1.1fr .9fr; }
.hero h1 .manuscrit { display: block; font-size: 1.25em; line-height: 1; margin-top: .05em; }
.hero .chapo { max-width: 520px; margin-top: 20px; }

.preuves {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 22px;
  margin: 36px 0 0;
  padding: 24px 0 0;
  list-style: none;
  border-top: 1px solid var(--sauge-200);
  font-size: .92rem;
  font-weight: 600;
  color: var(--texte-doux);
}
.preuves li { display: inline-flex; align-items: center; gap: 8px; }
.preuves .ic { width: 20px; height: 20px; color: var(--sauge-500); }

.hero-visuel { position: relative; }
.hero-visuel .photo { width: 100%; box-shadow: var(--ombre-l); }
.carte-flottante {
  position: absolute;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 18px;
  border-radius: var(--r-m);
  background: var(--papier);
  box-shadow: var(--ombre-m);
  font-size: .9rem;
  line-height: 1.35;
  animation: flotte 6s ease-in-out infinite;
}
.carte-flottante strong { display: block; color: var(--foret-900); font-size: .98rem; }
.carte-flottante span { color: var(--texte-doux); }
.carte-flottante .pastille { width: 44px; height: 44px; }
.carte-flottante.haut { left: -32px; top: 14%; }
.carte-flottante.bas { right: -20px; bottom: 10%; animation-delay: -3s; }
.carte-flottante .avatars { display: flex; }
.carte-flottante .avatars i {
  width: 30px; height: 30px; margin-left: -8px;
  border: 2px solid var(--papier); border-radius: 50%;
}
.carte-flottante .avatars i:first-child { margin-left: 0; background: var(--ciel); }
.carte-flottante .avatars i:nth-child(2) { background: var(--rose); }
.carte-flottante .avatars i:nth-child(3) { background: var(--sauge-200); }

@keyframes flotte {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}

.deco { position: absolute; pointer-events: none; z-index: 0; }
.deco-feuille { width: 54px; opacity: .7; }
.deco-patte { width: 48px; opacity: .55; }

/* Pastille icône */
.pastille {
  display: grid;
  place-items: center;
  width: 56px; height: 56px;
  border-radius: 50%;
  background: var(--sauge-100);
  color: var(--foret);
  flex-shrink: 0;
}
.pastille .ic { width: 24px; height: 24px; }
.pastille.ciel { background: var(--ciel); color: #2f6a8a; }
.pastille.rose { background: var(--rose); color: var(--prune); }
.pastille.soleil { background: var(--soleil); color: #7d5b12; }
.pastille.sable { background: var(--sable); color: #7b5c3a; }

/* ---------- Bienfaits ---------- */
.bienfaits {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 16px;
  margin: 0; padding: 0; list-style: none;
}
.bienfait {
  padding: 28px 20px;
  border-radius: var(--r-m);
  background: var(--papier);
  border: 1px solid var(--sauge-100);
  text-align: center;
  transition: transform var(--transition), box-shadow var(--transition);
}
.bienfait:hover { transform: translateY(-4px); box-shadow: var(--ombre-m); }
.bienfait .pastille { margin: 0 auto 16px; }
.bienfait h3 { font-size: 1.08rem; margin: 0 0 6px; }
.bienfait p { font-size: .92rem; color: var(--texte-doux); line-height: 1.5; }

/* ---------- Bloc présentation ---------- */
.citation {
  position: relative;
  margin: 32px 0 0;
  padding: 24px 28px 24px 32px;
  border-left: 4px solid var(--sauge-400);
  border-radius: 0 var(--r-m) var(--r-m) 0;
  background: var(--sauge-50);
  font-family: var(--f-main);
  font-size: 1.6rem;
  line-height: 1.3;
  color: var(--foret);
}

.signature-linda { font-family: var(--f-main); font-size: 2rem; color: var(--sauge-500); margin-top: 8px; }

/* ---------- Cartes animaux ---------- */
.animaux { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.animal {
  position: relative;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border-radius: var(--r-l);
  background: var(--papier);
  box-shadow: var(--ombre-s);
  transition: transform var(--transition), box-shadow var(--transition);
}
.animal:hover { transform: translateY(-6px); box-shadow: var(--ombre-m); }
.animal .photo { aspect-ratio: 4 / 3.2; border-radius: 0; }
.animal .photo { background: linear-gradient(180deg, var(--teinte, var(--sauge-100)), var(--papier)); }
.animal-corps { padding: 24px 26px 28px; display: flex; flex-direction: column; flex: 1; }
.animal-nom { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.animal h3 { font-size: 1.6rem; margin: 0; }
.animal .race { font-size: .9rem; color: var(--texte-doux); }
.etiquette {
  align-self: flex-start;
  display: inline-block;
  margin: 12px 0 14px;
  padding: 5px 12px;
  border-radius: 999px;
  background: var(--teinte, var(--sauge-100));
  color: var(--foret-900);
  font-size: .75rem;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.animal .accroche { font-family: var(--f-titre); font-size: 1.1rem; color: var(--foret-900); line-height: 1.4; }
.animal .competences {
  display: flex; flex-wrap: wrap; gap: 6px;
  margin: auto 0 0; padding: 18px 0 0; list-style: none;
}
.animal .competences li {
  padding: 4px 10px;
  border: 1px solid var(--sauge-200);
  border-radius: 999px;
  font-size: .8rem;
  font-weight: 600;
  color: var(--texte-doux);
}
.teinte-ciel { --teinte: var(--ciel); }
.teinte-rose { --teinte: var(--rose); }
.teinte-sauge { --teinte: var(--sauge-200); }

/* ---------- Publics ---------- */
.publics { display: grid; grid-template-columns: repeat(6, 1fr); gap: 20px; }
.public {
  grid-column: span 2;
  padding: 32px 28px;
  border-radius: var(--r-l);
  background: var(--papier);
  border: 1px solid var(--sauge-100);
  transition: transform var(--transition), box-shadow var(--transition);
}
.public:nth-child(4), .public:nth-child(5) { grid-column: span 3; }
.public:hover { transform: translateY(-4px); box-shadow: var(--ombre-m); }
.public .pastille { margin-bottom: 18px; }
.public h3 { font-size: 1.2rem; }
.public p { color: var(--texte-doux); font-size: .98rem; }

.puces-publics { display: flex; flex-wrap: wrap; gap: 10px; margin: 0; padding: 0; list-style: none; }
.puces-publics li {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 10px 18px;
  border-radius: 999px;
  background: var(--papier);
  border: 1px solid var(--sauge-200);
  font-weight: 600;
  font-size: .95rem;
}
.puces-publics .ic { width: 18px; height: 18px; color: var(--sauge-500); }

/* ---------- Étapes / approche ---------- */
.etapes {
  counter-reset: etape;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
  margin: 0; padding: 0; list-style: none;
}
.etape {
  position: relative;
  padding: 32px 26px 28px;
  border-radius: var(--r-m);
  background: var(--papier);
  box-shadow: var(--ombre-s);
}
.etape::before {
  counter-increment: etape;
  content: "0" counter(etape);
  position: absolute;
  top: 22px; right: 24px;
  font-family: var(--f-titre);
  font-size: 2.4rem;
  line-height: 1;
  color: var(--sauge-100);
}
.etape .pastille { margin-bottom: 18px; }
.etape h3 { font-size: 1.25rem; }
.etape p { font-size: .95rem; color: var(--texte-doux); }

/* ---------- Liste à coches ---------- */
.coches { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px 32px; margin: 0; padding: 0; list-style: none; }
.coches li { display: flex; gap: 12px; align-items: flex-start; font-size: 1.05rem; }
.coches .ic {
  width: 26px; height: 26px; padding: 5px;
  border-radius: 50%;
  background: var(--sauge-100);
  color: var(--foret);
  margin-top: 1px;
}

/* ---------- Bandeau photo ---------- */
.bandeau {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  border-radius: var(--r-l);
  padding: clamp(48px, 7vw, 88px) clamp(28px, 6vw, 72px);
  color: #fff;
  background: #3b3f26 url("../images/bandeau-fleurs.jpg") 70% center / cover no-repeat;
}
.bandeau::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(100deg, rgba(30, 44, 28, .9) 0%, rgba(30, 44, 28, .7) 45%, rgba(30, 44, 28, .1) 100%);
}
.bandeau h2 { color: #fff; max-width: 560px; }
.bandeau h2 .manuscrit { color: var(--soleil); }
.bandeau p { max-width: 500px; font-size: 1.15rem; color: rgba(255, 255, 255, .88); }

/* ---------- En-tête de page intérieure ---------- */
.page-entete { position: relative; padding-block: clamp(48px, 7vw, 96px) clamp(40px, 5vw, 64px); overflow: hidden; }
.page-entete::after {
  content: "";
  position: absolute;
  width: 520px; height: 520px;
  right: -160px; top: -220px;
  z-index: -1;
  border-radius: 50%;
  background: radial-gradient(circle, var(--sauge-100), transparent 65%);
}
.page-entete h1 { max-width: 820px; }
.page-entete .chapo { max-width: 640px; }

.fil-ariane { margin-bottom: 18px; font-size: .88rem; color: var(--texte-doux); }
.fil-ariane ol { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; list-style: none; }
.fil-ariane li:not(:last-child)::after { content: "›"; margin-left: 8px; color: var(--sauge-400); }
.fil-ariane a { color: inherit; text-decoration: none; }
.fil-ariane a:hover { color: var(--foret); text-decoration: underline; }

/* ---------- Qualités du chien médiateur ---------- */
.qualites { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; margin: 0; padding: 0; list-style: none; counter-reset: q; }
.qualites li {
  padding: 24px 22px;
  border-radius: var(--r-m);
  background: var(--papier);
  border: 1px solid var(--sauge-100);
  font-size: .98rem;
  line-height: 1.55;
}
.qualites li::before {
  counter-increment: q;
  content: counter(q);
  display: grid;
  place-items: center;
  width: 34px; height: 34px;
  margin-bottom: 14px;
  border-radius: 50%;
  background: var(--foret);
  color: #fff;
  font-weight: 800;
  font-size: .9rem;
}
.qualites strong { color: var(--foret); }

/* ---------- Engagements bien-être ---------- */
.engagements { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; margin: 0; padding: 0; list-style: none; }
.engagements li { display: flex; gap: 16px; align-items: flex-start; padding: 22px; border-radius: var(--r-m); background: var(--papier); }
.engagements h3 { font-size: 1.08rem; margin-bottom: 4px; }
.engagements p { font-size: .95rem; color: var(--texte-doux); }
.engagements .pastille { width: 46px; height: 46px; }
.engagements .pastille .ic { width: 22px; height: 22px; }

/* ---------- Puces d'activités ---------- */
.activites { display: flex; flex-wrap: wrap; gap: 10px; margin: 28px 0 0; padding: 0; list-style: none; }
.activites li { padding: 8px 16px; border-radius: 999px; background: var(--teinte, var(--sauge-100)); font-weight: 600; font-size: .92rem; color: var(--foret-900); }
.activites li:nth-child(2) { --teinte: var(--ciel); }
.activites li:nth-child(3) { --teinte: var(--rose); }
.activites li:nth-child(4) { --teinte: var(--soleil); }
.activites li:nth-child(5) { --teinte: var(--sable); }

/* ---------- FAQ ---------- */
.faq { display: grid; gap: 12px; }
.faq details {
  border-radius: var(--r-m);
  background: var(--papier);
  border: 1px solid var(--sauge-100);
  transition: box-shadow var(--transition);
}
.faq details[open] { box-shadow: var(--ombre-s); }
.faq summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 20px 24px;
  font-family: var(--f-titre);
  font-size: 1.12rem;
  color: var(--foret-900);
  cursor: pointer;
  list-style: none;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary .ic {
  width: 30px; height: 30px; padding: 6px;
  border-radius: 50%;
  background: var(--sauge-100);
  color: var(--foret);
  transition: transform var(--transition);
}
.faq details[open] summary .ic { transform: rotate(180deg); }
.faq .reponse { padding: 0 24px 22px; color: var(--texte-doux); }

/* ---------- Qui suis-je ---------- */
.anime { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin: 0; padding: 0; list-style: none; }
.anime li {
  display: flex; align-items: center; gap: 14px;
  padding: 18px 20px;
  border-radius: var(--r-m);
  background: var(--papier);
  font-weight: 600;
  color: var(--foret-900);
  line-height: 1.4;
}
.anime .pastille { width: 42px; height: 42px; }
.anime .pastille .ic { width: 20px; height: 20px; }

.grande-citation {
  max-width: 900px;
  margin: 0 auto;
  font-family: var(--f-titre);
  font-size: clamp(1.5rem, 3vw, 2.2rem);
  font-weight: 400;
  font-style: italic;
  line-height: 1.35;
  text-align: center;
  color: var(--foret-900);
}
.grande-citation::before {
  content: "“";
  display: block;
  font-size: 4em;
  line-height: .6;
  color: var(--sauge-200);
}
.grande-citation footer { margin-top: 18px; font-family: var(--f-main); font-style: normal; font-size: 1.5rem; color: var(--sauge-500); }

.certifs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.certif {
  padding: 30px 28px;
  border-radius: var(--r-l);
  background: var(--papier);
  border: 1px solid var(--sauge-100);
}
.certif .pastille { margin-bottom: 18px; }
.certif h3 { font-size: 1.3rem; margin-bottom: 8px; }
.certif p { color: var(--texte-doux); font-size: .97rem; }

/* ---------- Contact ---------- */
.contact-grille { display: grid; grid-template-columns: .85fr 1.15fr; gap: clamp(24px, 4vw, 48px); align-items: start; }
/* Empêche les colonnes de s'élargir au-delà de l'écran (textes longs, liste déroulante) */
.contact-grille > *, .champs > *, .coordonnees li > div, .localisation-carte > div { min-width: 0; }
.coordonnees, .localisation-carte { overflow-wrap: anywhere; }

.carte-coordonnees {
  position: sticky;
  top: 108px;
  padding: 36px 32px;
  border-radius: var(--r-l);
  background: var(--foret);
  color: rgba(255, 255, 255, .88);
  overflow: hidden;
}
.carte-coordonnees::after {
  content: "";
  position: absolute;
  width: 180px; height: 180px;
  right: -40px; bottom: -40px;
  background: url("../images/patte-blanche.svg") center / contain no-repeat;
  opacity: .08;
  transform: rotate(-20deg);
}
.carte-coordonnees h2 { color: #fff; font-size: 1.7rem; }
.coordonnees { display: grid; gap: 22px; margin: 28px 0 0; padding: 0; list-style: none; }
.coordonnees li { display: flex; gap: 16px; align-items: flex-start; }
.coordonnees .pastille { width: 46px; height: 46px; background: rgba(255, 255, 255, .12); color: #fff; }
.coordonnees .pastille .ic { width: 20px; height: 20px; }
.coordonnees small { display: block; font-size: .8rem; text-transform: uppercase; letter-spacing: .1em; color: rgba(255, 255, 255, .6); }
.coordonnees a, .coordonnees span { color: #fff; font-weight: 600; text-decoration: none; }
.coordonnees a:hover { text-decoration: underline; }
.reseaux { display: flex; gap: 10px; margin-top: 30px; }
.reseaux a {
  display: grid; place-items: center;
  width: 44px; height: 44px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .12);
  color: #fff;
  transition: background var(--transition), transform var(--transition);
}
.reseaux a:hover { background: rgba(255, 255, 255, .25); transform: translateY(-2px); }
.reseaux .ic { width: 20px; height: 20px; }

.formulaire {
  padding: clamp(28px, 4vw, 44px);
  border-radius: var(--r-l);
  background: var(--papier);
  box-shadow: var(--ombre-m);
}
.formulaire h2 { font-size: 1.7rem; }
.formulaire > p { color: var(--texte-doux); }
.champs { display: grid; grid-template-columns: 1fr 1fr; gap: 18px 20px; margin-top: 24px; }
.champ { display: grid; gap: 6px; }
.champ-large { grid-column: 1 / -1; }
.champ label { font-size: .9rem; font-weight: 700; color: var(--foret-900); }
.champ label .facultatif { font-weight: 400; color: var(--texte-doux); }
.champ input,
.champ select,
.champ textarea {
  width: 100%;
  padding: 13px 16px;
  border: 1.5px solid var(--sauge-200);
  border-radius: var(--r-s);
  background: var(--creme);
  font: inherit;
  font-size: 1rem;
  color: var(--texte);
  transition: border-color var(--transition), background var(--transition), box-shadow var(--transition);
}
.champ select {
  min-width: 0;
  text-overflow: ellipsis;
  appearance: none;
  background-image: url("../images/chevron.svg");
  background-repeat: no-repeat;
  background-position: right 14px center;
  background-size: 18px;
  padding-right: 44px;
}
.champ textarea { min-height: 150px; resize: vertical; }
.champ input:hover, .champ select:hover, .champ textarea:hover { border-color: var(--sauge-400); }
.champ input:focus, .champ select:focus, .champ textarea:focus {
  outline: none;
  border-color: var(--sauge-500);
  background: #fff;
  box-shadow: 0 0 0 4px var(--sauge-100);
}
.consentement { display: flex; gap: 12px; align-items: flex-start; font-size: .88rem; color: var(--texte-doux); line-height: 1.5; }
.consentement input { width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--foret); flex-shrink: 0; }
.formulaire button[type="submit"] { width: 100%; margin-top: 24px; padding-block: 16px; }
.formulaire button[disabled] { opacity: .7; cursor: wait; }
.piege { display: none !important; }
.message-form { display: none; margin-top: 18px; padding: 14px 18px; border-radius: var(--r-s); font-weight: 600; }
.message-form.succes { display: block; background: var(--sauge-100); color: var(--foret-900); }
.message-form.erreur { display: block; background: #fbe4e1; color: #8a2f22; }

.localisation-carte {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 24px;
  align-items: center;
  padding: 32px;
  border-radius: var(--r-l);
  background: var(--sauge-50);
}
.localisation-carte .pastille { width: 72px; height: 72px; background: var(--foret); color: #fff; }
.localisation-carte .pastille .ic { width: 32px; height: 32px; }
.localisation-carte h3 { margin-bottom: 4px; }
.localisation-carte p { color: var(--texte-doux); }

/* ---------- Appel à l'action final ---------- */
.appel {
  position: relative;
  overflow: hidden;
  padding: clamp(48px, 6vw, 72px) clamp(24px, 5vw, 64px);
  border-radius: var(--r-l);
  background: var(--sauge-100);
  text-align: center;
}
.appel h2 { max-width: 640px; margin-inline: auto; }
.appel p { max-width: 560px; margin-inline: auto; color: var(--texte); font-size: 1.1rem; }
.appel .groupe-boutons { justify-content: center; }
.appel .deco-patte { opacity: .35; }

/* ---------- Mentions légales ---------- */
.texte-legal h2 { font-size: 1.5rem; margin-top: 2em; }
.texte-legal h2:first-child { margin-top: 0; }

/* ---------- Pied de page ---------- */
.pied { margin-top: clamp(64px, 9vw, 120px); padding: 72px 0 28px; background: var(--foret-900); color: rgba(255, 255, 255, .72); font-size: .95rem; }
.pied-grille { display: grid; grid-template-columns: 1.5fr 1fr 1fr 1.2fr; gap: 40px; }
.pied .marque { font-family: var(--f-main); font-size: 2.2rem; color: #fff; line-height: 1; margin-bottom: 14px; }
.pied h3 { margin-bottom: 16px; font-family: var(--f-texte); font-size: .8rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--sauge-200); }
.pied ul { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.pied a { color: rgba(255, 255, 255, .85); text-decoration: none; }
.pied a:hover { color: #fff; text-decoration: underline; }
.pied .reseaux { margin-top: 20px; }
.pied-bas {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 12px;
  margin-top: 56px;
  padding-top: 24px;
  border-top: 1px solid rgba(255, 255, 255, .12);
  font-size: .85rem;
  color: rgba(255, 255, 255, .55);
}
.pied-bas a { color: inherit; }

/* ---------- Apparition au défilement ---------- */
.js .apparait { opacity: 0; transform: translateY(24px); transition: opacity .7s ease, transform .7s cubic-bezier(.2, .7, .2, 1); }
.js .apparait.visible { opacity: 1; transform: none; }

/* ==========================================================
   Responsive
   ========================================================== */
@media (max-width: 1100px) {
  .menu-bouton { display: block; }
  .entete .btn { display: none; }
  .nav {
    position: absolute;
    inset: 100% 0 auto 0;
    margin: 0;
    padding: 12px var(--gouttiere) 28px;
    background: var(--papier);
    box-shadow: 0 24px 40px -16px rgba(35, 54, 35, .25);
    transform: translateY(-12px);
    opacity: 0;
    visibility: hidden;
    transition: opacity var(--transition), transform var(--transition), visibility var(--transition);
  }
  .nav.ouvert { opacity: 1; visibility: visible; transform: none; }
  .nav ul { flex-direction: column; align-items: stretch; gap: 4px; }
  .nav a { padding: 14px 18px; font-size: 1.05rem; border-radius: var(--r-s); }
  .nav .nav-cta { display: block; margin-top: 10px; }
  .nav .nav-cta a { background: var(--foret); color: #fff; text-align: center; }

  .bienfaits { grid-template-columns: repeat(3, 1fr); }
  .etapes { grid-template-columns: repeat(2, 1fr); }
  .qualites { grid-template-columns: repeat(2, 1fr); }
  .pied-grille { grid-template-columns: 1fr 1fr; }
}

@media (min-width: 1101px) {
  .nav .nav-cta { display: none; }
}

@media (max-width: 860px) {
  .grille-2,
  .hero .grille-2,
  .contact-grille { grid-template-columns: 1fr; }
  .hero-visuel { max-width: 460px; margin-inline: auto; width: 100%; }
  .carte-flottante.haut { left: -8px; }
  .carte-flottante.bas { right: -8px; }
  .inverse-mobile > :first-child { order: 2; }
  .animaux { grid-template-columns: 1fr; max-width: 480px; margin-inline: auto; }
  .publics { grid-template-columns: 1fr 1fr; }
  .public, .public:nth-child(4), .public:nth-child(5) { grid-column: span 1; }
  .public:last-child { grid-column: 1 / -1; }
  .anime, .certifs { grid-template-columns: 1fr; }
  .engagements, .coches { grid-template-columns: 1fr; }
  .carte-coordonnees { position: relative; top: auto; }
}

@media (max-width: 600px) {
  body { font-size: 1rem; }
  .entete .conteneur { height: 72px; }
  .logo img { width: 128px; }
  .bienfaits { grid-template-columns: 1fr 1fr; }
  .bienfait:last-child { grid-column: 1 / -1; }
  .etapes, .qualites, .publics { grid-template-columns: 1fr; }
  .champs { grid-template-columns: 1fr; }
  .groupe-boutons .btn { width: 100%; }
  .carte-flottante { font-size: .8rem; padding: 10px 14px; }
  .carte-flottante .pastille { width: 36px; height: 36px; }
  .localisation-carte { grid-template-columns: 1fr; text-align: center; justify-items: center; }
  .pied-grille { grid-template-columns: 1fr; }
  .deco { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  .js .apparait { opacity: 1; transform: none; }
}

/* ==========================================================
   ÉLÉMENTS À REMPLACER
   Toutes les infos surlignées en jaune sont à compléter.
   Une fois tout remplacé, cette règle peut rester : elle ne s'applique plus.
   ========================================================== */
.a-remplacer {
  padding: 1px 6px;
  border: 1.5px dashed #c99a00;
  border-radius: 6px;
  background: #fff3bf;
  color: #5c4500 !important;
  font-family: ui-monospace, "SFMono-Regular", Menlo, monospace;
  font-size: .85em;
  font-weight: 700;
  letter-spacing: 0;
  white-space: nowrap;
}
a[href*="NUMERO_DE_TELEPHONE"],
a[href*="ADRESSE_EMAIL"],
a[href^="LIEN_PAGE_"] { outline: 2px dashed #c99a00; outline-offset: 3px; }

.avis-maquette {
  position: fixed;
  left: 16px;
  bottom: 16px;
  z-index: 90;
  display: flex;
  align-items: flex-start;
  gap: 12px;
  max-width: 360px;
  padding: 14px 16px;
  border: 1.5px dashed #c99a00;
  border-radius: var(--r-m);
  background: #fff8d6;
  color: #4d3a00;
  font-size: .85rem;
  line-height: 1.45;
  box-shadow: var(--ombre-m);
}
.avis-maquette strong { display: block; margin-bottom: 2px; }
.avis-maquette button {
  flex-shrink: 0;
  width: 28px; height: 28px;
  border: 0; border-radius: 50%;
  background: rgba(0, 0, 0, .08);
  color: inherit;
  font-size: 1.1rem;
  line-height: 1;
  cursor: pointer;
}

/* ==========================================================
   ANIMATIONS & EFFETS
   ========================================================== */

.hero, .page-entete { isolation: isolate; }

/* Barre de progression de lecture */
.progression {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 60;
  height: 3px;
  background: linear-gradient(90deg, var(--sauge-400), var(--foret));
  transform: scaleX(0);
  transform-origin: left;
}

/* Bouton retour en haut */
.haut-de-page {
  position: fixed;
  right: 20px;
  bottom: 20px;
  z-index: 40;
  display: grid;
  place-items: center;
  width: 48px; height: 48px;
  border-radius: 50%;
  background: var(--foret);
  color: #fff;
  box-shadow: var(--ombre-m);
  opacity: 0;
  visibility: hidden;
  transform: translateY(12px);
  transition: opacity var(--transition), transform var(--transition), visibility var(--transition), background var(--transition);
}
.haut-de-page.visible { opacity: 1; visibility: visible; transform: none; }
.haut-de-page:hover { background: var(--foret-700); transform: translateY(-3px); }

/* Hero : bulles de couleur qui dérivent doucement */
.bulles { position: absolute; inset: 0; z-index: -1; pointer-events: none; }
.bulles span {
  position: absolute;
  border-radius: 50%;
  filter: blur(50px);
  opacity: .55;
  animation: derive 18s ease-in-out infinite alternate;
}
.bulles span:nth-child(1) { width: 320px; height: 320px; left: -80px; top: 10%; background: var(--ciel); }
.bulles span:nth-child(2) { width: 260px; height: 260px; left: 38%; bottom: -60px; background: var(--rose); animation-duration: 22s; animation-delay: -6s; }
.bulles span:nth-child(3) { width: 220px; height: 220px; right: 6%; top: 4%; background: var(--soleil); opacity: .4; animation-duration: 26s; animation-delay: -12s; }
@keyframes derive {
  0%   { transform: translate(0, 0) scale(1); }
  50%  { transform: translate(40px, -30px) scale(1.1); }
  100% { transform: translate(-30px, 20px) scale(.95); }
}

/* Hero : la photo « respire » */
.hero-visuel .forme-organique { animation: respire 14s ease-in-out infinite; }
@keyframes respire {
  0%, 100% { border-radius: 58% 42% 46% 54% / 46% 52% 48% 54%; }
  50%      { border-radius: 46% 54% 56% 44% / 54% 44% 56% 46%; }
}

/* Hero : trait de pinceau sous « autrement » */
.souligne { position: relative; display: inline-block; }
.souligne .trait {
  position: absolute;
  left: 0; bottom: -.05em;
  width: 100%; height: .3em;
  overflow: visible;
}
.souligne .trait path {
  fill: none;
  stroke: var(--soleil);
  stroke-width: 7;
  stroke-linecap: round;
  stroke-dasharray: 240;
  stroke-dashoffset: 240;
  animation: trace 1.2s .6s cubic-bezier(.6, 0, .2, 1) forwards;
}
.hero h1 .manuscrit.souligne { display: inline-block; }
@keyframes trace { to { stroke-dashoffset: 0; } }

/* Chiffres clés */
.chiffres {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  margin: 0;
  padding: clamp(24px, 4vw, 40px);
  border-radius: var(--r-l);
  background: var(--foret);
  color: #fff;
}
.chiffres > div {
  display: flex;
  flex-direction: column-reverse;
  align-items: center;
  gap: 4px;
  padding: 8px 16px;
  text-align: center;
}
.chiffres > div + div { border-left: 1px solid rgba(255, 255, 255, .15); }
.chiffres dt { font-size: .92rem; color: rgba(255, 255, 255, .75); }
.chiffres dd { margin: 0; font-family: var(--f-titre); font-size: clamp(2.2rem, 4vw, 3rem); line-height: 1; color: var(--soleil); }

/* Bandeau défilant */
.defilant {
  overflow: hidden;
  padding: 22px 0;
  border-block: 1px solid var(--sauge-100);
  background: var(--papier);
  mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.defilant-piste {
  display: flex;
  width: max-content;
  animation: defile 45s linear infinite;
}
.defilant-piste > div { display: flex; align-items: center; gap: 32px; padding-right: 32px; }
.defilant:hover .defilant-piste { animation-play-state: paused; }
.defilant span { font-family: var(--f-titre); font-size: clamp(1.3rem, 2.4vw, 1.8rem); font-style: italic; color: var(--foret); white-space: nowrap; }
.defilant img { width: 22px; opacity: .6; }
@keyframes defile { to { transform: translateX(-50%); } }

/* Traces de pattes qui avancent */
.traces {
  position: relative;
  height: 90px;
  width: min(100% - 2 * var(--gouttiere), 760px);
  margin: 0 auto -20px;
}
.js .traces.apparait { opacity: 1; transform: none; }
.traces img {
  position: absolute;
  width: 26px;
  top: 30px;
  opacity: 0;
  transform: rotate(90deg) scale(.6);
}
.traces img:nth-child(odd) { top: 52px; }
.traces.visible img { animation: pas .5s ease-out forwards; }
.traces img:nth-child(1) { left: 0%; animation-delay: 0.00s; }
.traces img:nth-child(2) { left: 11.5%; animation-delay: 0.22s; }
.traces img:nth-child(3) { left: 23%; animation-delay: 0.44s; }
.traces img:nth-child(4) { left: 34.5%; animation-delay: 0.66s; }
.traces img:nth-child(5) { left: 46%; animation-delay: 0.88s; }
.traces img:nth-child(6) { left: 57.5%; animation-delay: 1.10s; }
.traces img:nth-child(7) { left: 69%; animation-delay: 1.32s; }
.traces img:nth-child(8) { left: 80.5%; animation-delay: 1.54s; }
.traces img:nth-child(9) { left: 92%; animation-delay: 1.76s; }
@keyframes pas {
  to { opacity: .55; transform: rotate(90deg) scale(1); }
}

/* Vagues entre les sections colorées */
.fond-sauge,
.fond-papier { margin-block: 40px; }
.fond-sauge::before, .fond-sauge::after,
.fond-papier::before, .fond-papier::after {
  content: "";
  position: absolute;
  left: 0; right: 0;
  height: 40px;
  background: inherit;
  pointer-events: none;
  -webkit-mask: url("../images/vague.svg") center / 100% 100% no-repeat;
  mask: url("../images/vague.svg") center / 100% 100% no-repeat;
}
.fond-sauge::before, .fond-papier::before { top: -39px; }
.fond-sauge::after, .fond-papier::after { bottom: -39px; transform: scale(-1, -1); }

/* Apparition en cascade (délai posé par le JS) */
.js .apparait { transition-delay: var(--delai, 0s); }

/* Micro-interactions */
.bienfait:hover .pastille,
.etape:hover .pastille,
.public:hover .pastille,
.certif:hover .pastille { animation: fretille .6s ease; }
@keyframes fretille {
  0%, 100% { transform: rotate(0); }
  25% { transform: rotate(-10deg) scale(1.08); }
  75% { transform: rotate(8deg) scale(1.08); }
}
.animal .photo img { transition: transform .6s cubic-bezier(.2, .7, .2, 1); }
.animal:hover .photo img { transform: scale(1.06); }
.animal:hover .etiquette { transform: rotate(-2deg); }
.etiquette { transition: transform var(--transition); }
.faq details[open] .reponse { animation: deplie .35s ease; }
@keyframes deplie { from { opacity: 0; transform: translateY(-6px); } }

/* En-tête des pages intérieures : halo qui dérive */
.page-entete::after { animation: derive 20s ease-in-out infinite alternate; }

@media (max-width: 860px) {
  .chiffres { grid-template-columns: 1fr 1fr; row-gap: 20px; }
  .chiffres > div:nth-child(3) { border-left: 0; }
}
@media (max-width: 600px) {
  .traces { display: none; }
  .haut-de-page { right: 14px; bottom: 14px; width: 44px; height: 44px; }
  .avis-maquette { left: 12px; right: 12px; bottom: 12px; max-width: none; }
}

@media (prefers-reduced-motion: reduce) {
  .bulles span, .hero-visuel .forme-organique, .defilant-piste, .page-entete::after { animation: none !important; }
  .souligne .trait path { stroke-dashoffset: 0; }
  .traces img { opacity: .55; transform: rotate(90deg); }
}

/* ==========================================================
   COMPLÉMENTS — décorations, cartes, témoignages, formulaire…
   ========================================================== */

/* Transitions douces entre les pages (navigateurs compatibles) */
@view-transition { navigation: auto; }

/* Positions des décorations (rotate est indépendant de la parallaxe) */
.deco-appel-1 { left: 6%; top: 18%; }
.deco-appel-2 { right: 8%; bottom: 16%; rotate: 25deg; }
.deco-bienvenue { right: 5%; top: 60px; rotate: 25deg; }
.deco-compagnons { right: 12%; top: 70px; rotate: 30deg; }

.entete-section.entete-avec-lien {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: flex-end;
  gap: 20px;
  max-width: none;
}
.entete-avec-lien > div { max-width: 620px; }
.sans-haut { padding-top: 0; }
.bandeau .surtitre { color: var(--soleil); }
.bandeau .surtitre::before { filter: brightness(2.2); }
.centre-flex { justify-content: center; }

/* Cartes animaux entièrement cliquables */
.lien-carte { color: inherit; text-decoration: none; }
.lien-carte::after { content: ""; position: absolute; inset: 0; z-index: 1; border-radius: inherit; }
.lien-carte:focus-visible { outline: none; }
.animal:has(.lien-carte:focus-visible) { outline: 3px solid var(--sauge-400); outline-offset: 4px; }
.animal-nom > .ic { width: 22px; height: 22px; color: var(--sauge-500); transition: transform var(--transition); }
.animal:hover .animal-nom > .ic { transform: translateX(4px); }

/* Témoignages */
.temoignages { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.temoignage {
  position: relative;
  display: flex;
  flex-direction: column;
  margin: 0;
  padding: 36px 30px 28px;
  border-radius: var(--r-l);
  background: var(--papier);
  box-shadow: var(--ombre-s);
}
.temoignage .guillemet {
  position: absolute;
  top: 6px; right: 24px;
  font-family: var(--f-titre);
  font-size: 5.5rem;
  line-height: 1;
  color: var(--sauge-100);
}
.temoignage blockquote { flex: 1; margin: 0 0 24px; font-family: var(--f-titre); font-size: 1.12rem; line-height: 1.55; color: var(--foret-900); }
.temoignage figcaption { display: flex; align-items: center; gap: 14px; font-size: .9rem; color: var(--texte-doux); }
.temoignage figcaption strong { display: block; color: var(--foret-900); }
.temoignage .pastille { width: 44px; height: 44px; }
.temoignage .pastille .ic { width: 20px; height: 20px; }

@media (max-width: 860px) {
  .temoignages { grid-template-columns: 1fr; max-width: 520px; margin-inline: auto; }
}

/* Formulaire : erreurs par champ, compteur, succès */
.erreur-champ { min-height: 0; font-size: .82rem; font-weight: 600; color: #a33a2b; }
.erreur-champ:empty { display: none; }
.champ.invalide input,
.champ.invalide select,
.champ.invalide textarea { border-color: #c4553f; background: #fdf3f1; }
.champ.invalide input:focus,
.champ.invalide select:focus,
.champ.invalide textarea:focus { box-shadow: 0 0 0 4px #f6d9d3; }
.pied-champ { display: flex; justify-content: space-between; gap: 12px; }
.compteur-car { margin-left: auto; font-size: .8rem; color: var(--texte-doux); font-variant-numeric: tabular-nums; }
.compteur-car.limite { color: #a33a2b; font-weight: 700; }
.consentement.invalide { color: #a33a2b; }

.formulaire.envoye > :not(.form-succes) { display: none; }
.form-succes { text-align: center; padding: 24px 0; animation: deplie .5s ease; }
.form-succes[hidden] { display: none; }
.form-succes .pastille { width: 72px; height: 72px; margin: 0 auto 18px; background: var(--foret); color: #fff; }
.form-succes .pastille .ic { width: 34px; height: 34px; }
.form-succes p { color: var(--texte-doux); margin-bottom: 24px; }

/* Page 404 */
.page-404 { padding-block: clamp(80px, 12vw, 160px); }
.page-404 h1 { margin-inline: auto; }
.page-404 .chapo { margin-inline: auto; }
.traces-404 { display: flex; justify-content: center; gap: 18px; margin-bottom: 28px; }
.traces-404 img { width: 30px; opacity: 0; rotate: -90deg; animation: pas-404 .5s ease-out forwards; }
.traces-404 img:nth-child(2) { animation-delay: .25s; translate: 0 14px; }
.traces-404 img:nth-child(3) { animation-delay: .5s; }
.traces-404 img:nth-child(4) { animation-delay: .75s; translate: 0 14px; }
@keyframes pas-404 { to { opacity: .6; } }

@media (prefers-reduced-motion: reduce) {
  @view-transition { navigation: none; }
  .traces-404 img { opacity: .6; }
}

/* ==========================================================
   ACCESSIBILITÉ — bouton, panneau de réglages
   ========================================================== */
.bouton-a11y {
  display: grid;
  place-items: center;
  width: 46px; height: 46px;
  flex-shrink: 0;
  border: 2px solid var(--sauge-200);
  border-radius: 50%;
  background: var(--papier);
  color: var(--foret);
  cursor: pointer;
  transition: background var(--transition), border-color var(--transition), transform var(--transition);
}
.bouton-a11y:hover, .bouton-a11y[aria-expanded="true"] { background: var(--sauge-100); border-color: var(--sauge-500); }
.bouton-a11y .ic { width: 26px; height: 26px; }

.panneau-a11y {
  position: fixed;
  top: 92px;
  right: max(16px, calc((100vw - var(--largeur)) / 2));
  z-index: 70;
  width: min(380px, calc(100vw - 32px));
  max-height: calc(100vh - 110px);
  overflow-y: auto;
  padding: 24px;
  border-radius: var(--r-m);
  background: var(--papier);
  box-shadow: var(--ombre-l);
  border: 1px solid var(--sauge-100);
  animation: deplie .25s ease;
}
.panneau-a11y[hidden] { display: none; }
.panneau-entete { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 6px; }
.panneau-entete h2 { display: flex; align-items: center; gap: 10px; margin: 0; font-size: 1.35rem; }
.panneau-entete .ic { color: var(--sauge-500); }
.panneau-a11y .fermer {
  width: 36px; height: 36px;
  border: 0; border-radius: 50%;
  background: var(--sauge-50);
  color: var(--foret-900);
  font-size: 1.4rem; line-height: 1;
  cursor: pointer;
}
.panneau-intro { font-size: .9rem; color: var(--texte-doux); }

.reglage-taille { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 0; border-block: 1px solid var(--sauge-100); margin-top: 14px; }
.taille { display: flex; align-items: center; gap: 8px; }
.taille button {
  min-width: 46px; height: 40px;
  border: 2px solid var(--sauge-200);
  border-radius: var(--r-s);
  background: var(--papier);
  color: var(--foret-900);
  font: 800 1rem var(--f-texte);
  cursor: pointer;
}
.taille button:hover:not(:disabled) { background: var(--sauge-50); border-color: var(--sauge-500); }
.taille button:disabled { opacity: .4; cursor: not-allowed; }
.taille output { min-width: 58px; text-align: center; font-weight: 700; font-variant-numeric: tabular-nums; }

.interrupteurs { display: grid; gap: 4px; padding: 10px 0 16px; }
.interrupteur { display: flex; align-items: center; gap: 14px; padding: 10px 6px; border-radius: var(--r-s); cursor: pointer; }
.interrupteur:hover { background: var(--sauge-50); }
.interrupteur input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.interrupteur .piste {
  position: relative;
  flex-shrink: 0;
  width: 46px; height: 26px;
  border-radius: 999px;
  background: #b9c4b5;
  transition: background var(--transition);
}
.interrupteur .piste::after {
  content: "";
  position: absolute;
  top: 3px; left: 3px;
  width: 20px; height: 20px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 1px 3px rgba(0, 0, 0, .25);
  transition: transform var(--transition);
}
.interrupteur input:checked + .piste { background: var(--foret); }
.interrupteur input:checked + .piste::after { transform: translateX(20px); }
.interrupteur input:focus-visible + .piste { outline: 3px solid var(--sauge-400); outline-offset: 2px; }
.interrupteur strong { display: block; font-size: .95rem; color: var(--foret-900); }
.interrupteur small { display: block; font-size: .8rem; color: var(--texte-doux); line-height: 1.35; }
.panneau-a11y .reinitialiser { width: 100%; }

.lien-bouton {
  padding: 0;
  border: 0;
  background: none;
  color: inherit;
  font: inherit;
  text-decoration: underline;
  cursor: pointer;
}
.lien-bouton[hidden] { display: none; }
.liens-legaux { display: flex; flex-wrap: wrap; gap: 6px 18px; }

/* ==========================================================
   BANDEAU COOKIES
   ========================================================== */
.bandeau-cookies {
  position: fixed;
  left: 50%;
  bottom: 20px;
  z-index: 95;
  width: min(560px, calc(100vw - 32px));
  padding: 24px 26px;
  border-radius: var(--r-m);
  background: var(--papier);
  box-shadow: var(--ombre-l);
  border: 1px solid var(--sauge-100);
  transform: translateX(-50%);
  animation: monte .4s ease;
}
@keyframes monte { from { opacity: 0; transform: translate(-50%, 20px); } }
.bandeau-cookies h2 { font-size: 1.25rem; margin-bottom: 6px; }
.bandeau-cookies p { font-size: .95rem; color: var(--texte-doux); }
.actions-cookies { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 18px; }
.actions-cookies .btn { padding-block: 12px; }
@media (max-width: 600px) {
  .bouton-a11y { width: 42px; height: 42px; margin-left: auto; }
  .bouton-a11y + .btn + .menu-bouton { margin-left: 0; }
  .panneau-a11y { top: 80px; }
}
@media (max-width: 1100px) {
  .bouton-a11y { margin-left: auto; }
  .menu-bouton { margin-left: 8px; }
}

/* ==========================================================
   MODES D'ACCESSIBILITÉ
   ========================================================== */

/* Grand texte : l'en-tête s'adapte (le menu peut passer sur deux lignes) */
.a11y-grand-texte .entete .conteneur { height: auto; min-height: 84px; flex-wrap: wrap; padding-block: 8px; }
.a11y-grand-texte .nav ul { flex-wrap: wrap; }
.a11y-grand-texte .bienfaits { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.a11y-grand-texte .chiffres { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }

/* Contraste renforcé */
.a11y-contraste {
  --creme: #ffffff;
  --papier: #ffffff;
  --sable: #f3eee4;
  --sauge-50: #f2f7f1;
  --sauge-100: #e2ede0;
  --sauge-400: #2f5d29;
  --sauge-500: #2f5d29;
  --sauge-600: #24491f;
  --foret: #1c3818;
  --foret-700: #112610;
  --foret-900: #000000;
  --texte: #111111;
  --texte-doux: #262626;
}
.a11y-contraste body { background: #fff; }
.a11y-contraste a:not(.btn) { text-decoration: underline; }
.a11y-contraste .bienfait,
.a11y-contraste .public,
.a11y-contraste .etape,
.a11y-contraste .certif,
.a11y-contraste .temoignage,
.a11y-contraste .animal,
.a11y-contraste .faq details,
.a11y-contraste .qualites li,
.a11y-contraste .engagements li,
.a11y-contraste .anime li,
.a11y-contraste .formulaire,
.a11y-contraste .citation,
.a11y-contraste .localisation-carte,
.a11y-contraste .panneau-a11y,
.a11y-contraste .bandeau-cookies { border: 2px solid #1c3818; }
.a11y-contraste .champ input,
.a11y-contraste .champ select,
.a11y-contraste .champ textarea,
.a11y-contraste .btn-secondaire,
.a11y-contraste .bouton-a11y,
.a11y-contraste .taille button { border-color: #1c3818; }
.a11y-contraste .bandeau::before { background: rgba(10, 20, 9, .9); }
.a11y-contraste .chiffres dt,
.a11y-contraste .carte-coordonnees,
.a11y-contraste .carte-coordonnees small,
.a11y-contraste .pied,
.a11y-contraste .pied a,
.a11y-contraste .pied-bas { color: #fff; }
.a11y-contraste .photo-legende { background: #fff; color: #000; border: 2px solid #000; }
.a11y-contraste .defilant span { color: #000; }
.a11y-contraste :focus-visible { outline: 4px solid #000; box-shadow: 0 0 0 7px #ffd400; }
.a11y-contraste .bulles,
.a11y-contraste .deco,
.a11y-contraste .photo::before { display: none; }

/* Police très lisible (Atkinson Hyperlegible) */
.a11y-police body,
.a11y-police h1, .a11y-police h2, .a11y-police h3, .a11y-police h4,
.a11y-police .btn, .a11y-police input, .a11y-police select, .a11y-police textarea, .a11y-police button,
.a11y-police .faq summary, .a11y-police blockquote, .a11y-police .defilant span, .a11y-police .chiffres dd {
  font-family: "Atkinson Hyperlegible", Verdana, sans-serif !important;
  font-style: normal !important;
}
.a11y-police .manuscrit,
.a11y-police .citation,
.a11y-police .signature-linda,
.a11y-police .pied .marque,
.a11y-police .grande-citation footer {
  font-family: "Atkinson Hyperlegible", Verdana, sans-serif !important;
  font-size: 1em;
  font-weight: 700;
}

/* Espacement du texte (critère WCAG 1.4.12) */
.a11y-espacement body { letter-spacing: .06em; word-spacing: .16em; line-height: 1.9; }
.a11y-espacement p, .a11y-espacement li { line-height: 1.9; }
.a11y-espacement p { margin-bottom: 1.6em; }
.a11y-espacement h1, .a11y-espacement h2, .a11y-espacement h3 { line-height: 1.4; letter-spacing: .02em; }

/* Liens soulignés */
.a11y-liens a:not(.btn),
.a11y-liens .lien-bouton { text-decoration: underline !important; text-decoration-thickness: 2px !important; text-underline-offset: 4px; }
.a11y-liens .btn { outline: 2px solid currentColor; outline-offset: 2px; }

/* Arrêt des animations */
.a11y-animations *,
.a11y-animations *::before,
.a11y-animations *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
.a11y-animations .apparait { opacity: 1 !important; transform: none !important; }
.a11y-animations .souligne .trait path { stroke-dashoffset: 0; }
.a11y-animations .traces img, .a11y-animations .traces-404 img { opacity: .55; }
.a11y-animations .defilant-piste { transform: none; }
.a11y-animations::view-transition-old(root),
.a11y-animations::view-transition-new(root) { animation: none; }

/* ==========================================================
   FINITIONS — direction artistique & confort
   ========================================================== */

/* Grain de papier très léger : donne de la chaleur aux fonds unis */
body {
  background-image: url("../images/grain.svg");
  background-size: 240px;
}
.a11y-contraste body { background-image: none; }

/* Couleurs de marque jusque dans les détails */
::selection { background: var(--sauge-200); color: var(--foret-900); }
html { scrollbar-color: var(--sauge-400) var(--creme); accent-color: var(--foret); caret-color: var(--foret); }

/* Lignes de texte mieux équilibrées (pas de mot seul en fin de paragraphe) */
p, li, blockquote, figcaption { text-wrap: pretty; hyphens: manual; }

/* Liens dans les textes : soulignement qui se dessine au survol */
main p a:not(.btn):not(.lien-fleche),
.reponse a, .texte-legal a, .consentement a {
  text-decoration: none;
  background: linear-gradient(currentColor, currentColor) 0 100% / 100% 1px no-repeat;
  transition: background-size var(--transition);
}
main p a:not(.btn):not(.lien-fleche):hover,
.reponse a:hover, .texte-legal a:hover, .consentement a:hover { background-size: 100% 2px; }

/* Boutons : effet d'appui */
.btn:active, .bouton-a11y:active, .taille button:active { transform: translateY(1px) scale(.98); }

/* Contact : « Et ensuite ? » */
.ensuite {
  margin-top: 30px;
  padding-top: 24px;
  border-top: 1px solid rgba(255, 255, 255, .18);
}
.ensuite h3 { margin-bottom: 14px; font-size: 1.15rem; color: #fff; }
.ensuite ol { counter-reset: ensuite; display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; }
.ensuite li { position: relative; padding-left: 40px; font-size: .95rem; line-height: 1.5; }
.ensuite li::before {
  counter-increment: ensuite;
  content: counter(ensuite);
  position: absolute;
  left: 0; top: -2px;
  display: grid;
  place-items: center;
  width: 28px; height: 28px;
  border-radius: 50%;
  background: var(--soleil);
  color: var(--foret-900);
  font-weight: 800;
  font-size: .85rem;
}

/* ==========================================================
   IMPRESSION — une page propre, sans menus ni boutons
   ========================================================== */
@media print {
  @page { margin: 1.5cm; }
  body { background: #fff; color: #000; font-size: 11pt; }
  .entete, .pied, .haut-de-page, .progression, .avis-maquette, .bandeau-cookies,
  .panneau-a11y, .menu-bouton, .bouton-a11y, .groupe-boutons, .defilant, .traces, .bulles, .deco,
  .formulaire, .carte-flottante, .lien-evitement, .fil-ariane { display: none !important; }
  .section, .section-serree, .page-entete, .hero { padding: 12pt 0 !important; }
  .fond-sauge, .fond-papier, .fond-sable { background: none !important; margin: 0 !important; }
  .fond-sauge::before, .fond-sauge::after, .fond-papier::before, .fond-papier::after { display: none; }
  .apparait { opacity: 1 !important; transform: none !important; }
  .grille-2, .hero .grille-2 { grid-template-columns: 1fr !important; }
  .photo { display: none; }
  .bienfait, .etape, .public, .certif, .temoignage, .animal, .qualites li, .engagements li, .faq details {
    break-inside: avoid; box-shadow: none !important; border: 1px solid #999;
  }
  .faq details .reponse { display: block; }
  .carte-coordonnees { background: none; color: #000; border: 1px solid #999; }
  .carte-coordonnees h2, .carte-coordonnees a, .carte-coordonnees span, .carte-coordonnees small,
  .ensuite h3 { color: #000 !important; }
  .bandeau { background: none; color: #000; padding: 0; }
  .bandeau::before { display: none; }
  .bandeau h2, .bandeau p { color: #000; }
  .chiffres { background: none; color: #000; border: 1px solid #999; }
  .chiffres dt, .chiffres dd { color: #000; }
  main a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 9pt; color: #555; }
}
