:root {
  --cream: #fbf7ee;
  --cream-2: #f3ecdd;
  --cream-3: #e9dfcc;
  --paper: #fffdf8;
  --forest: #173d31;
  --forest-2: #214d3d;
  --forest-3: #37624d;
  --sage: #7d957a;
  --terracotta: #d85f35;
  --terracotta-dark: #b94a27;
  --gold: #dca844;
  --ink: #183229;
  --muted: #66756c;
  --line: rgba(23,61,49,.14);
  --shadow-sm: 0 8px 28px rgba(24,50,41,.08);
  --shadow-md: 0 18px 48px rgba(24,50,41,.13);
  --radius-sm: 14px;
  --radius: 22px;
  --radius-lg: 32px;
  --display: Georgia, 'Times New Roman', serif;
  --body: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --container: 1240px;
  --container-small: 820px;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--cream); color: var(--ink); font-family: var(--body); font-size: 17px; line-height: 1.62; -webkit-font-smoothing: antialiased; }
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button, input, textarea, select { font: inherit; }
h1, h2, h3, h4 { margin: 0 0 .55em; font-family: var(--display); color: var(--forest); line-height: 1.08; letter-spacing: -.02em; }
h1 { font-size: clamp(2.7rem, 5.8vw, 5.25rem); font-weight: 500; }
h2 { font-size: clamp(2rem, 3.4vw, 3.15rem); font-weight: 550; }
h3 { font-size: 1.38rem; }
p { margin: 0 0 1em; max-width: 68ch; }
ul { padding-left: 1.2em; }
:focus-visible { outline: 3px solid var(--gold); outline-offset: 4px; }
::selection { background: #f0c976; color: var(--forest); }

.sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }
.skip-link { position: fixed; left: 16px; top: 14px; z-index: 9999; padding: 10px 14px; background: var(--paper); border: 2px solid var(--forest); border-radius: 12px; transform: translateY(-180%); }
.skip-link:focus { transform: translateY(0); }
.container { width: min(100% - 40px, var(--container)); margin-inline: auto; }
.container-small { width: min(100% - 40px, var(--container-small)); margin-inline: auto; }
.padding-section { padding: 88px 0; }
.padding-section-small { padding: 50px 0; }
.section-fond-alt { background: var(--cream-2); }
.texte-centre { text-align: center; }
.texte-centre p { margin-inline: auto; }
.texte-preligne { white-space: pre-line; }
.espace-haut { margin-top: 26px; }
.eyebrow, .hero_intro-label { margin: 0 0 12px; color: var(--terracotta); font-weight: 800; font-size: .78rem; text-transform: uppercase; letter-spacing: .14em; }
.eyebrow-light { color: #f4c86e; }
.lien-souligne, .lien-retour { color: var(--forest-2); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; font-weight: 650; }
.lien-retour { display: inline-flex; gap: 8px;     width: 100%;}
.link-arrow { display: inline-flex; align-items: center; gap: 10px; color: #d95d34; font-weight: 800; font-size: .96rem; white-space: nowrap; }
.link-arrow span { transition: transform .2s ease; }
.link-arrow:hover span { transform: translateX(5px); }

.button { display: inline-flex; align-items: center; justify-content: center; gap: 9px; min-height: 48px; padding: 13px 23px; border: 1.5px solid transparent; border-radius: 999px; background: var(--gold); color: var(--forest); font-family: var(--body); font-size: .96rem; font-weight: 800; line-height: 1.1; cursor: pointer; transition: transform .18s ease, box-shadow .18s ease, background .18s ease, color .18s ease; }
.button:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgba(24,50,41,.13); }
.button-primary { background: var(--terracotta); color: #fff; box-shadow: 0 10px 28px rgba(216,95,53,.25); }
.button-primary:hover, .button-accent:hover { background: var(--terracotta-dark); }
.button-accent { background: var(--terracotta); color: #fff; }
.button-dark { background: var(--forest); color: #fff; }
.button-dark:hover { background: #0e3025; }
.button-light { background: rgba(255,255,255,.91); color: var(--forest); border-color: rgba(255,255,255,.8); }
.button-outline { background: transparent; color: var(--forest); border-color: rgba(23,61,49,.5); }
.button-outline:hover { background: var(--forest); color: #fff; }
.button-small { min-height: 40px; padding: 10px 17px; font-size: .88rem; }
.button-danger { background: #9d3f27; color: #fff; }
.button-largeur { width: 100%; }
.actions-formulaire, .actions-hero { display: flex; flex-wrap: wrap; gap: 12px; }
.actions-hero { margin-top: 28px; }
.actions-centrees { justify-content: center; }

/* Header */
.site-header { position: sticky; top: 0; z-index: 100; background: rgba(255,253,248,.94); border-bottom: 1px solid var(--line); backdrop-filter: blur(14px); }
.site-header_inner { min-height: 84px; display: flex; align-items: center; justify-content: space-between; gap: 28px; }
.site-header_logo { display: inline-flex; align-items: center; gap: 12px; max-width: 230px; color: var(--forest); font-family: var(--display); font-size: 1.22rem; font-weight: 700; line-height: 1.02; }
.site-header_logo-mark { display: grid; place-items: center; width: 44px; height: 44px; flex: 0 0 44px; border-radius: 50%; background: var(--forest); color: #fff; font-family: var(--body); font-size: 1.25rem; box-shadow: inset 0 -5px 10px rgba(0,0,0,.08); }
.site-header_nav { display: flex; align-items: center; justify-content: flex-end; gap: clamp(14px, 2vw, 28px); }
.site-header_nav > a:not(.button) { position: relative; padding: 30px 0 27px; color: #2f473d; font-size: .91rem; font-weight: 700; }
.site-header_nav > a:not(.button)::after { content: ''; position: absolute; left: 50%; bottom: 19px; width: 0; height: 3px; border-radius: 999px; background: var(--gold); transform: translateX(-50%); transition: width .18s ease; }
.site-header_nav > a:not(.button):hover::after, .site-header_nav > a[aria-current="page"]:not(.button)::after { width: 28px; }
.button-don { background: var(--gold); color: var(--forest); }
.nav-toggle { display: none; width: 46px; height: 46px; border: 0; border-radius: 50%; background: var(--forest); padding: 12px; cursor: pointer; }
.nav-toggle_bar { display: block; width: 100%; height: 2px; margin: 5px 0; background: white; border-radius: 999px; }

/* Homepage hero */
.hero-home { padding: 0 0 28px; background: linear-gradient(180deg, #f5efdf 0%, var(--cream) 100%); overflow: hidden; }
.hero-home_grid { min-height: 650px; display: grid; grid-template-columns: minmax(0,.95fr) minmax(430px,1.05fr); gap: 58px; align-items: center; padding-top: 52px; padding-bottom: 42px; }
.hero-home_contenu { position: relative; z-index: 2; }
.hero-home_contenu h1 { max-width: 9ch; margin-bottom: 22px; }
.hero-home_contenu h1 em { color: var(--terracotta); font-style: normal; }
.hero-home_intro { max-width: 590px; color: #485e54; font-size: clamp(1.06rem, 1.5vw, 1.2rem); }
.hero-home_reassurance { display: flex; flex-wrap: wrap; gap: 20px 28px; margin-top: 34px; padding-top: 23px; border-top: 1px solid var(--line); color: #52665d; font-size: .84rem; font-weight: 700; }
.hero-home_visuel { position: relative; min-height: 530px; border-radius: 44px 44px 110px 44px; overflow: hidden; background: linear-gradient(135deg, #91a480, #315a45); box-shadow: var(--shadow-md); isolation: isolate; }
.hero-home_visuel::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 45%, rgba(8,30,22,.55) 100%); z-index: 1; pointer-events: none; }
.hero-home_visuel img { width: 100%; height: 100%; min-height: 530px; object-fit: cover; }
.hero-home_placeholder { min-height: 530px; display: grid; place-content: center; gap: 18px; text-align: center; color: #fff; background: radial-gradient(circle at 65% 25%, rgba(255,255,255,.18), transparent 30%), linear-gradient(140deg, var(--sage), var(--forest)); }
.hero-home_placeholder span { font-size: 5rem; }
.hero-home_placeholder strong { font-family: var(--display); font-size: 2.2rem; line-height: 1.05; }
.hero-animal-card { position: absolute; z-index: 3; left: 26px; bottom: 25px; display: grid; min-width: 250px; padding: 17px 20px; border: 1px solid rgba(255,255,255,.38); border-radius: 18px; background: rgba(255,253,248,.93); color: var(--forest); box-shadow: var(--shadow-sm); backdrop-filter: blur(10px); }
.hero-animal-card_label { color: var(--terracotta); font-size: .68rem; font-weight: 900; text-transform: uppercase; letter-spacing: .1em; }
.hero-animal-card strong { margin: 2px 0; font-family: var(--display); font-size: 1.00rem; }
.hero-animal-card > span:last-child { color: var(--muted); font-size: .86rem; font-weight: 650; }
.hero-home_note { position: absolute; z-index: 3; right: 26px; top: 24px; transform: rotate(3deg); color: white; font-family: cursive; font-size: 1.35rem; line-height: 1.05; text-align: center; text-shadow: 0 2px 12px rgba(0,0,0,.35); }

/* Common sections */
.section-entete { display: flex; align-items: end; justify-content: space-between; gap: 28px; margin-bottom: 36px; }
.section-entete-modern > div > p:last-child { margin-bottom: 0; color: var(--muted); }
.section-entete-modern h2 { margin-bottom: 10px; }

/* Animal cards */
.home-animaux { background: var(--paper); }
.home-animaux_layout { display: grid; grid-template-columns: minmax(0,1fr) 260px; gap: 28px; align-items: stretch; }
.grille-animaux { display: grid; grid-template-columns: repeat(auto-fill, minmax(255px, 1fr)); gap: 24px; }
.grille-animaux-home { grid-template-columns: repeat(3, minmax(0,1fr)); }
.carte-animal { min-width: 0; overflow: hidden; border: 1px solid var(--line); border-radius: var(--radius); background: var(--paper); box-shadow: 0 5px 22px rgba(24,50,41,.05); transition: transform .2s ease, box-shadow .2s ease; }
.carte-animal:hover { transform: translateY(-5px); box-shadow: var(--shadow-md); }
.carte-animal_photo { position: relative; display: block; aspect-ratio: 4/3; overflow: hidden; background: var(--forest); }
.carte-animal_photo img { width: 100%; height: 100%; object-fit: cover; transition: transform .35s ease; }
.carte-animal:hover .carte-animal_photo img { transform: scale(1.035); }
.carte-animal_coeur { position: absolute; top: 14px; right: 14px; display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; background: rgba(255,253,248,.92); color: var(--terracotta); font-size: 1.45rem; box-shadow: var(--shadow-sm); }
.carte-animal_contenu { padding: 21px 22px 23px; }
.carte-animal_title-row { display: flex; align-items: start; justify-content: space-between; gap: 10px; }
.carte-animal_nom { margin: 0; font-size: 1.65rem; }
.carte-animal_meta { margin: 5px 0 10px; color: var(--muted); font-size: .9rem; font-weight: 650; }
.carte-animal_extrait { min-height: 3.2em; margin-bottom: 18px; color: #506159; font-size: .92rem; line-height: 1.55; }
.carte-animal_cta { display: inline-flex; gap: 8px; align-items: center; color: var(--forest); font-weight: 850; font-size: .9rem; }
.carte-animal_cta span { transition: transform .18s ease; }
.carte-animal_cta:hover span { transform: translateX(4px); }
.placeholder-photo { width: 100%; height: 100%; min-height: 150px; display: grid; place-items: center; font-size: 3.5rem; color: rgba(255,255,255,.88); background: radial-gradient(circle at 70% 25%, rgba(255,255,255,.14), transparent 22%), linear-gradient(145deg, var(--sage), var(--forest)); }
.badge { display: inline-flex; align-items: center; padding: 5px 9px; border-radius: 999px; font-size: .67rem; line-height: 1.1; font-weight: 850; white-space: nowrap; }
.badge-disponible { background: #e8f2e4; color: #355d35; }
.badge-reserve { background: #fff0cf; color: #7c581b; }
.badge-adopte { background: #f4e3dc; color: #87432c; }
.home-animaux_callout { position: relative; overflow: hidden; padding: 30px 25px; border-radius: var(--radius); background: linear-gradient(160deg,#edf0e4,#dce6d3); color: var(--forest); }
.home-animaux_callout h3 { margin: 13px 0 12px; font-size: 1.75rem; }
.home-animaux_callout p { color: #506159; font-size: .92rem; }
.home-animaux_callout-paw { font-size: 1.8rem; }
.home-animaux_callout-leaf { position: absolute; right: 19px; bottom: -23px; color: rgba(23,61,49,.18); font-size: 8rem; transform: rotate(20deg); }

/* Adoption journey */
.adoption-steps { position: relative; background: var(--cream-2); }
.adoption-steps_grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 18px; }
.adoption-step { position: relative; display: grid; grid-template-columns: 58px 1fr; gap: 16px; min-height: 190px; padding: 26px 24px 25px 28px; border: 1px solid rgba(23,61,49,.08); border-radius: var(--radius); background: rgba(255,253,248,.72); }
.adoption-step_num { position: absolute; top: -14px; left: 22px; display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: var(--gold); color: var(--forest); font-weight: 900; box-shadow: 0 5px 15px rgba(83,64,24,.15); }
.adoption-step_icon { display: grid; place-items: center; width: 58px; height: 58px; margin-top: 15px; border-radius: 18px; background: #fff; color: var(--terracotta); font-family: var(--display); font-size: 2.3rem; box-shadow: var(--shadow-sm); }
.adoption-step h3 { margin: 13px 0 8px; font-size: 1.55rem; }
.adoption-step p { margin: 0; color: var(--muted); font-size: .92rem; }
.adoption-steps_note { margin: 24px 0 0 auto; color: var(--terracotta); font-family: cursive; font-size: 1.3rem; text-align: right; transform: rotate(-1deg); }

/* Donation */
.donation-banner { background: var(--paper); }
.donation-banner_inner { display: grid; grid-template-columns: .7fr 1.4fr .45fr; gap: 34px; align-items: center; overflow: hidden; min-height: 340px; padding: 42px 48px; border-radius: var(--radius-lg); background: radial-gradient(circle at 85% 15%, rgba(255,255,255,.08), transparent 22%), var(--forest); color: white; box-shadow: var(--shadow-md); }
.donation-banner_art { min-height: 245px; display: flex; flex-direction: column; justify-content: flex-end; padding: 28px; border-radius: 24px; background: linear-gradient(155deg, rgba(255,255,255,.14), rgba(255,255,255,.03)); border: 1px solid rgba(255,255,255,.13); }
.donation-banner_art span { color: #f6c757; font-size: 2.2rem; }
.donation-banner_art strong { margin-top: 10px; font-family: var(--display); font-size: 1.7rem; line-height: 1.1; }
.donation-banner_content h2 { color: white; font-size: clamp(2rem,3vw,3.2rem); }
.donation-banner_content p { color: rgba(255,255,255,.79); }
.donation-banner_seal { display: grid; place-items: center; align-content: center; aspect-ratio: 1; border: 1px dashed rgba(255,255,255,.35); border-radius: 50%; color: #f7d892; text-align: center; transform: rotate(5deg); }
.donation-banner_seal > span { display: block; margin-top: 6px; font-family: cursive; font-size: 1.05rem; line-height: 1.05; }

/* News */
.home-news { background: var(--cream); }
.grille-news { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px,1fr)); gap: 28px; }
.grille-news-home { grid-template-columns: repeat(3,1fr); }
.carte-news { min-width: 0; }
.carte-news-modern { overflow: hidden; border: 1px solid var(--line); border-radius: var(--radius); background: var(--paper); box-shadow: 0 5px 22px rgba(24,50,41,.05); transition: transform .2s ease, box-shadow .2s ease; }
.carte-news-modern:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); }
.carte-news_photo, .actualite-photo { display: block; aspect-ratio: 16/10; margin: 0; overflow: hidden; border-radius: var(--radius-sm); background: var(--cream-2); }
.carte-news-modern .carte-news_photo { border-radius: 0; }
.carte-news_photo img, .actualite-photo img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s ease; }
.carte-news-modern:hover img { transform: scale(1.035); }
.carte-news_body { padding: 20px 22px 24px; }
.carte-news_date { margin: 0 0 7px; color: var(--terracotta); font-size: .75rem; font-weight: 850; text-transform: uppercase; letter-spacing: .06em; }
.carte-news_body h3 { margin-bottom: 18px; font-size: 1.5rem; }
.carte-news_link { color: var(--forest); font-size: .9rem; font-weight: 850; }
.actualite-date { margin-top: 20px; }
.contenu-article { white-space: normal; }

/* Mission strip */
.home-mission { background: #efe6d4; border-top: 1px solid rgba(23,61,49,.08); }
.home-mission_grid { display: grid; grid-template-columns: 1.4fr repeat(3,.8fr); gap: 30px; align-items: center; }
.home-mission_grid h2 { margin: 0; font-size: clamp(1.7rem,2.4vw,2.5rem); }
.home-mission_item { min-height: 120px; display: grid; align-content: center; padding-left: 27px; border-left: 1px solid rgba(23,61,49,.16); }
.home-mission_item > span { font-size: 1.25rem; }
.home-mission_item strong { display: block; margin: 4px 0; color: var(--forest); font-family: var(--display); font-size: 1.5rem; }
.home-mission_item small { color: var(--muted); line-height: 1.35; }

/* Inner pages */
main > .padding-section-small:first-child { padding-top: 65px; }
main > .padding-section-small:first-child h1 { font-size: clamp(2.6rem,5vw,4.4rem); }
.filtres { display: flex; flex-wrap: wrap; gap: 10px; margin: 26px 0 0; }
.etat-vide { padding: 58px 24px; border: 1.5px dashed rgba(23,61,49,.23); border-radius: var(--radius); color: var(--muted); text-align: center; background: rgba(255,255,255,.35); }
.etat-vide p { margin-inline: auto; }

.fiche-detail { display: grid; grid-template-columns: 1.05fr .95fr; gap: 58px; align-items: start; }
.fiche-detail_photo { overflow: hidden; min-height: 540px; aspect-ratio: 4/4.3; border-radius: var(--radius-lg); background: var(--forest); box-shadow: var(--shadow-md); }
.fiche-detail_photo img { width: 100%; height: 100%; object-fit: cover; }
.fiche-detail_liste { list-style: none; padding: 0; margin: 24px 0 30px; border-top: 1px solid var(--line); }
.fiche-detail_liste li { display: flex; justify-content: space-between; gap: 24px; padding: 12px 0; border-bottom: 1px solid var(--line); }
.fiche-detail_liste span:first-child { color: var(--muted); }
.titre-apres-badge { margin-top: 13px; }
.bloc-fiche { margin: 28px 0; padding: 22px 24px; border-radius: var(--radius-sm); background: var(--paper); border: 1px solid var(--line); }
.bloc-fiche h2 { margin-bottom: 8px; font-size: 1.35rem; }

.grille-infos, .grille-actions { display: grid; grid-template-columns: repeat(3,1fr); gap: 24px; }
.carte-info, .carte-aide, .encart-pratique { padding: 28px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--paper); box-shadow: 0 6px 20px rgba(24,50,41,.04); }
.carte-info_numero { display: grid; place-items: center; width: 38px; height: 38px; margin-bottom: 15px; border-radius: 50%; background: var(--gold); color: var(--forest); font-weight: 900; }
.contenu-deux-colonnes { display: grid; grid-template-columns: 1.2fr .8fr; gap: 50px; align-items: start; }
.encart-pratique { background: #eef0e5; }
.grille-aide { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 24px; }
.grille-aide .carte-aide:first-child { grid-column: span 2; background: var(--forest); color: white; }
.grille-aide .carte-aide:first-child h2 { color: white; }

/* Forms / contact / donations */
.champ { margin-bottom: 20px; }
.champ label { display: block; margin-bottom: 6px; font-weight: 800; }
.champ input, .champ select, .champ textarea { width: 100%; padding: 13px 15px; border: 1.5px solid var(--line); border-radius: 13px; background: var(--paper); color: var(--ink); }
.champ textarea { min-height: 145px; resize: vertical; }
.champ input:focus, .champ select:focus, .champ textarea:focus { outline: 3px solid rgba(220,168,68,.3); border-color: var(--gold); }
.champ-piege { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }
.aide-formulaire { margin: 6px 0 0; color: var(--muted); font-size: .88rem; padding-bottom: 20px;}
.textarea-longue { min-height: 240px !important; }
.message-alerte, .message-succes, .message-info { padding: 14px 18px; margin-bottom: 24px; border: 1px solid; border-radius: 14px; }
.message-alerte { background: #f7e5de; color: #73361f; border-color: #dca18a; }
.message-succes { background: #e8f1e4; color: #355a36; border-color: #a8c59e; }
.message-info { background: #fff0cf; color: var(--forest); border-color: #e2c77b; }
.contact-grille { display: grid; grid-template-columns: .8fr 1.2fr; gap: 56px; }
.bloc-don { padding: 48px; border-radius: var(--radius-lg); background: var(--forest); color: white; text-align: center; box-shadow: var(--shadow-md); }
.bloc-don h2 { color: white; }
.bloc-don p { margin-inline: auto; color: rgba(255,255,255,.82); }
.helloasso-wrapper { overflow: hidden; border: 1px solid var(--line); border-radius: var(--radius); background: var(--paper); box-shadow: var(--shadow-sm); }
.helloasso-frame { display: block; width: 100%; min-height: 760px; border: 0; }
.helloasso-wrapper-bouton { max-width: 560px; margin: 0 auto; }
.helloasso-frame-bouton { height: 110px; min-height: 110px; }
.hero_infos-pratiques { display: grid; gap: 2px; margin-top: 30px; padding-top: 20px; border-top: 1px solid var(--line); color: var(--muted); }
.contenu-legal h2 { margin-top: 2rem; font-size: 1.55rem; }
.note-configuration { margin-top: 36px; padding: 17px; border-left: 4px solid var(--gold); background: var(--cream-2); }

/* Auth shared */
.page-auth { display: flex; align-items: center; justify-content: center; min-height: 100vh; padding: 32px 0; }
.auth-card { width: min(100% - 32px,460px); padding: 32px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--paper); box-shadow: var(--shadow-md); }
.auth-card h1 { font-size: 2rem; }
.auth-retour { margin-top: 24px; text-align: center; }
.auth-retour a { color: var(--forest-2); text-decoration: underline; }

/* Footer */
.site-footer { margin-top: 0; padding: 66px 0 22px; background: #2f4c62; color: white; }
.site-footer_grid { display: grid; grid-template-columns: 1.25fr .65fr 1fr 1fr; gap: 42px; }
.site-footer_grid > div { display: flex; flex-direction: column; align-items: flex-start; gap: 9px; }
.site-footer_brand { display: inline-flex; align-items: center; gap: 10px; margin-bottom: 8px; font-family: var(--display); font-size: 1.34rem; font-weight: 700; }
.site-footer_brand-mark { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; background: rgba(255,255,255,.12); }
.site-footer_titre { margin-bottom: 6px; color: white; font-family: var(--body); font-size: .78rem; font-weight: 900; text-transform: uppercase; letter-spacing: .09em; }
.site-footer p, .site-footer span, .site-footer a { color: rgba(255,255,255,.74); font-size: .91rem; }
.site-footer a:hover { color: #f4ca70; }
.site-footer_horaires { white-space: pre-line; line-height: 1.5; }
.site-footer_bas { display: flex; justify-content: space-between; gap: 24px; margin-top: 48px; padding-top: 22px; border-top: 1px solid rgba(255,255,255,.14); color: rgba(255,255,255,.53); font-size: .85rem; }
.site-footer_bas p { margin: 0; color: inherit; }
.site-footer_liens-legaux { display: flex; flex-wrap: wrap; gap: 18px; }

@media (max-width: 1080px) {
  .hero-home_grid { grid-template-columns: 1fr 1fr; gap: 36px; }
  .site-header_nav { gap: 15px; }
  .site-header_nav > a:not(.button) { font-size: .84rem; }
  .home-animaux_layout { grid-template-columns: 1fr; }
  .home-animaux_callout { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 15px 22px; }
  .home-animaux_callout h3, .home-animaux_callout p { margin: 0; }
  .home-animaux_callout .button { grid-column: 2; justify-self: start; }
  .home-animaux_callout-leaf { display: none; }
  .donation-banner_inner { grid-template-columns: .6fr 1.4fr; }
  .donation-banner_seal { display: none; }
  .home-mission_grid { grid-template-columns: 1.2fr repeat(3,.8fr); gap: 18px; }
  .site-footer_grid { grid-template-columns: 1.2fr .7fr 1fr; }
  .site-footer_grid > div:last-child { grid-column: 3; }
}

@media (max-width: 900px) {
  body { font-size: 16px; }
  .site-header_inner { min-height: 72px; }
  .nav-toggle { display: block; }
  .site-header_nav { position: absolute; left: 20px; right: 20px; top: calc(100% + 8px); display: none; flex-direction: column; align-items: stretch; gap: 0; padding: 10px; border: 1px solid var(--line); border-radius: 20px; background: rgba(255,253,248,.98); box-shadow: var(--shadow-md); }
  .site-header_nav.is-open { display: flex; }
  .site-header_nav > a:not(.button) { padding: 12px 14px; font-size: .95rem; border-radius: 0px; }
  .site-header_nav > a:not(.button)::after { display: none; }
  .site-header_nav > a[aria-current="page"]:not(.button), .site-header_nav > a:not(.button):hover { background: var(--cream-2); }
  .site-header_nav .button { margin-top: 5px; width: 100%; }
  .hero-home_grid { grid-template-columns: 1fr; min-height: auto; padding-top: 38px; }
  .hero-home_contenu h1 { max-width: 11ch; }
  .hero-home_visuel { min-height: 500px; order: -1; border-radius: 32px 32px 80px 32px; }
  .hero-home_visuel img, .hero-home_placeholder { min-height: 500px; }
  .grille-animaux-home, .grille-news-home { grid-template-columns: repeat(2,1fr); }
  .adoption-steps_grid { grid-template-columns: 1fr; }
  .adoption-step { min-height: 0; }
  .donation-banner_inner { grid-template-columns: 1fr; padding: 34px; }
  .donation-banner_art { min-height: 170px; }
  .home-mission_grid { grid-template-columns: repeat(3,1fr); }
  .home-mission_grid > div:first-child { grid-column: 1 / -1; }
  .home-mission_item:first-of-type { border-left: 0; padding-left: 0; }
  .fiche-detail, .contact-grille, .contenu-deux-colonnes, .grille-infos, .grille-actions { grid-template-columns: 1fr; }
  .fiche-detail_photo { min-height: 430px; aspect-ratio: 4/3; }
  .grille-aide { grid-template-columns: 1fr; }
  .grille-aide .carte-aide:first-child { grid-column: auto; }
  .site-footer_grid { grid-template-columns: repeat(2,1fr); }
  .site-footer_grid > div:last-child { grid-column: auto; }
}

@media (max-width: 640px) {
  .container, .container-small { width: min(100% - 32px, var(--container)); }
  .padding-section { padding: 62px 0; }
  .padding-section-small { padding: 36px 0; }
  .site-header_logo { max-width: 190px; font-size: 1.04rem; }
  .site-header_logo-mark { width: 39px; height: 39px; flex-basis: 39px; }
  .hero-home_grid { padding-top: 24px; gap: 28px; }
  .hero-home_visuel { min-height: 360px; border-radius: 26px 26px 58px 26px; }
  .hero-home_visuel img, .hero-home_placeholder { min-height: 360px; }
  .hero-home_note { right: 17px; top: 16px; font-size: 1.05rem; }
  .hero-animal-card { left: 14px; right: 14px; bottom: 14px; min-width: 0; }
  .hero-home_reassurance { gap: 12px; flex-direction: column; }
  .actions-hero .button { width: 100%; }
  .section-entete { align-items: flex-start; flex-direction: column; margin-bottom: 28px; }
  .grille-animaux-home, .grille-news-home { grid-template-columns: 1fr; }
  .home-animaux_callout { display: block; }
  .home-animaux_callout h3 { margin: 13px 0 12px; }
  .home-animaux_callout p { margin-bottom: 1em; }
  .home-animaux_callout .button { margin-top: 5px; }
  .donation-banner_inner { padding: 24px; border-radius: 24px; }
  .donation-banner_art { min-height: 140px; }
  .home-mission_grid { grid-template-columns: 1fr; }
  .home-mission_grid > div:first-child { grid-column: auto; }
  .home-mission_item { min-height: 90px; padding: 16px 0 0; border-left: 0; border-top: 1px solid rgba(23,61,49,.16); }
  .fiche-detail_photo { min-height: 340px; }
  .fiche-detail_liste li { align-items: flex-start; }
  .site-footer_grid { grid-template-columns: 1fr; }
  .site-footer_bas { flex-direction: column; }
  .bloc-don { padding: 32px 22px; }
  .helloasso-frame { min-height: 680px; }
}

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

/* =========================================================
   V5 — direction visuelle plus éditoriale et pleine largeur
   La logique PHP / MySQL reste inchangée.
   ========================================================= */
:root {
  --cream: #f7f4ec;
  --cream-2: #eee8db;
  --cream-3: #ded5c3;
  --paper: #fcfbf7;
  --forest: #153f34;
  --forest-2: #1f5343;
  --forest-3: #4f6d61;
  --terracotta: #d95f36;
  --terracotta-dark: #b94b29;
  --gold: #dda63c;
  --ink: #19342c;
  --muted: #63736c;
  --line: rgba(21,63,52,.16);
  --shadow-sm: 0 7px 20px rgba(19,48,40,.06);
  --shadow-md: 0 14px 36px rgba(19,48,40,.10);
  --radius-sm: 2px;
  --radius: 3px;
  --radius-lg: 4px;
  --container: 1640px;
  --container-small: 1040px;

  /* Alias conservés pour l'administration historique. */
  --color-cream-dark: var(--cream-2);
  --color-forest: var(--forest);
  --color-forest-light: var(--forest-3);
  --color-white: var(--paper);
  --color-ligne: var(--line);
  --color-ochre: var(--gold);
  --rayon: 4px;
}

body { font-size: 16px; line-height: 1.58; }
h1 { font-size: clamp(2.2rem, 3.6vw, 3.8rem); line-height: 1.04; }
h2 { font-size: clamp(1.75rem, 2.7vw, 2.75rem); line-height: 1.08; }
h3 { font-size: 1.24rem; }
.container { width: min(calc(100% - 80px), var(--container)); }
.container-small { width: min(calc(100% - 80px), var(--container-small)); }
.padding-section { padding: 72px 0; }
.padding-section-small { padding: 42px 0; }

/* Boutons : plus graphiques, moins "pilules". */
.button { min-height: 44px; padding: 11px 18px; border-radius: 3px; box-shadow: none; }
.button:hover { transform: translateY(-1px); box-shadow: 0 7px 18px rgba(19,48,40,.10); }
.button-small { min-height: 38px; padding: 9px 14px; }
.button-admin { background: transparent; color: var(--forest); border-color: rgba(21,63,52,.34); }
.button-admin:hover { background: var(--forest); color: #fff; }
.badge { border-radius: 2px; padding: 5px 8px; }

/* En-tête. */
.site-header { background: rgba(252,251,247,.97); backdrop-filter: blur(8px); }
.site-header_inner { min-height: 74px; }
.site-header_logo { max-width: 250px; gap: 11px; font-size: 1.18rem; }
.site-header_logo-mark { width: 40px; height: 40px; flex-basis: 40px; border-radius: 0; box-shadow: none; }
.site-header_logo-mark svg, .site-footer_brand-mark svg { width: 25px; height: 25px; fill: currentColor; }
.site-header_nav { gap: clamp(10px, 1.45vw, 22px); }
.site-header_nav > a:not(.button) { padding: 25px 0 23px; font-size: .86rem; }
.site-header_nav > a:not(.button)::after { bottom: 16px; height: 2px; border-radius: 0; }
.nav-toggle { border-radius: 2px; }

/* Accueil : hero réellement pleine largeur. */
.hero-home { padding: 0; background: var(--cream); border-bottom: 1px solid var(--line); }
.hero-home .container { width: 100%; max-width: none; }
.hero-home_grid { min-height: 570px; grid-template-columns: minmax(0, .88fr) minmax(520px, 1.12fr); gap: 0; padding: 0; }
.hero-home_contenu { padding: 62px clamp(38px, 6.5vw, 126px); }
.hero-home_contenu h1 { max-width: 10.5ch; margin-bottom: 20px; font-size: clamp(2.8rem, 4.2vw, 4rem); }
.hero-home_intro { max-width: 620px; font-size: 1.08rem; }
.hero-home_reassurance { margin-top: 28px; padding-top: 18px; gap: 15px 25px; }
.hero-home_visuel { min-height: 570px; border-radius: 0; box-shadow: none; }
.hero-home_visuel img { min-height: 570px; object-position: center 28%; }
.hero-home_note { right: 36px; top: 32px; font-size: 1.1rem; }
.hero-animal-card { left: 28px; bottom: 28px; min-width: 270px; border-radius: 2px; }

/* Titres de sections plus mesurés. */
.section-entete { margin-bottom: 30px; }
.section-entete-modern h2 { margin-bottom: 8px; }
.eyebrow, .hero_intro-label { font-size: .73rem; letter-spacing: .15em;    padding-top: 10px;}

/* Animaux. */
.home-animaux { background: var(--paper); }
.home-animaux_layout { grid-template-columns: minmax(0,1fr) 300px; gap: 38px; }
.grille-animaux { grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 30px; }
.grille-animaux-home { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.carte-animal { border-radius: 0; box-shadow: none; background: transparent; border: 0; border-bottom: 1px solid var(--line); }
.carte-animal:hover { transform: none; box-shadow: none; }
.carte-animal_photo { aspect-ratio: 4/3; border-radius: 0; background: #e8e4da; }
.carte-animal_photo img { object-position: center 20%; }
.carte-animal:hover .carte-animal_photo img { transform: none; }
.carte-animal_coeur { top: 12px; right: 12px; width: 34px; height: 34px; border-radius: 0; box-shadow: none; font-size: 1.2rem; }
.carte-animal_contenu { padding: 18px 0 23px; }
.carte-animal_nom { font-size: 1.48rem; }
.carte-animal_extrait { min-height: 0; }
.home-animaux_callout { padding: 30px; border-radius: 0; border-left: 3px solid var(--gold); background: #e8ece1; }
.home-animaux_callout h3 { font-size: 1.55rem; }
.home-animaux_callout-leaf { display: none; }

/* Parcours d'adoption : plus éditorial, moins de cartes. */
.adoption-steps { background: var(--cream-2); }
.adoption-steps_grid { gap: 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.adoption-step { grid-template-columns: 48px 1fr; min-height: 160px; padding: 28px 32px; border: 0; border-right: 1px solid var(--line); border-radius: 0; background: transparent; }
.adoption-step:last-child { border-right: 0; }
.adoption-step_num { position: static; width: 32px; height: 32px; border-radius: 0; box-shadow: none; grid-column: 1; grid-row: 1; }
.adoption-step_icon { display: none; }
.adoption-step > div { grid-column: 2; grid-row: 1; }
.adoption-step h3 { margin: 0 0 8px; font-size: 1.35rem; }
.adoption-steps_note { margin-top: 18px; font-size: 1.05rem; }

/* Don : un bandeau simple, sans "bloc dans le bloc". */
.donation-banner { padding: 0; background: var(--forest); }
.donation-banner .container { width: min(calc(100% - 80px), var(--container)); }
.donation-banner_inner { min-height: 0; grid-template-columns: 1fr; gap: 0; padding: 54px 0; border-radius: 0; background: transparent; box-shadow: none; }
.donation-banner_art, .donation-banner_seal { display: none; }
.donation-banner_content { display: grid; grid-template-columns: minmax(320px,.9fr) minmax(360px,1.1fr) auto; gap: 34px 56px; align-items: center; }
.donation-banner_content .eyebrow { grid-column: 1 / -1; margin-bottom: -18px; }
.donation-banner_content h2 { margin: 0; max-width: 620px; font-size: clamp(1.9rem, 2.6vw, 2.75rem); }
.donation-banner_content p { margin: 0; max-width: 700px; }
.donation-banner_content .button { justify-self: end; white-space: nowrap; }

/* Actualités : tailles corrigées, grille plus élégante. */
.grille-news { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 34px; }
.grille-news-home { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.carte-news-modern { border-radius: 0; box-shadow: none; background: transparent; border: 0; border-bottom: 1px solid var(--line); }
.carte-news-modern:hover { transform: none; box-shadow: none; }
.carte-news_photo, .actualite-photo { border-radius: 0; }
.carte-news-modern .carte-news_photo { border-radius: 0; }
.carte-news-modern:hover img { transform: none; }
.carte-news_body { padding: 18px 0 24px; }
.carte-news_body h2, .carte-news_body h3 { margin: 0 0 14px; font-size: clamp(1.28rem, 1.7vw, 1.65rem); line-height: 1.13; }
.grille-news:not(.grille-news-home) .carte-news-modern { display: grid; grid-template-columns: minmax(220px, 42%) 1fr; align-items: stretch; border: 1px solid var(--line); }
.grille-news:not(.grille-news-home) .carte-news_photo { min-height: 260px; aspect-ratio: auto; background: #eee9df; }
.grille-news:not(.grille-news-home) .carte-news_photo img { object-fit: contain; }
.grille-news:not(.grille-news-home) .carte-news_body { padding: 30px; align-self: center; }

/* Bande mission, plus discrète. */
.home-mission { background: #ece5d7; }
.home-mission_grid h2 { font-size: clamp(1.65rem, 2.2vw, 2.25rem); }
.home-mission_item { min-height: 95px; }
.home-mission_item strong { font-size: 1.35rem; }

/* Pages internes : plus de largeur, titres raisonnables. */
main > .padding-section-small:first-child { padding-top: 48px; }
main > .padding-section-small:first-child h1 { font-size: clamp(2.15rem, 3vw, 3.05rem); }
main > .padding-section-small:first-child .container-small { max-width: 1180px; }
.texte-centre p { max-width: 760px; }
.filtres .button { border-radius: 2px; }
.etat-vide { border-radius: 0; }

/* Fiche animal : photo jamais recadrée brutalement. */
.fiche-detail { grid-template-columns: minmax(0, 1.08fr) minmax(360px, .92fr); gap: clamp(42px, 5vw, 86px); }
.fiche-detail_photo { min-height: 0; aspect-ratio: auto; border-radius: 0; box-shadow: none; background: #ebe6dc; }
.fiche-detail_photo img { width: 100%; height: auto; max-height: 760px; object-fit: contain; object-position: center top; }
.fiche-detail > div:last-child > h1 { font-size: clamp(2.25rem, 3.3vw, 3.35rem); }
.bloc-fiche { margin: 24px 0; padding: 20px 0; border: 0; border-top: 1px solid var(--line); border-radius: 0; background: transparent; }
.bloc-fiche:last-of-type { border-bottom: 1px solid var(--line); }

/* Adopter / aider / contact : fini les grosses cartes arrondies. */
.grille-infos, .grille-actions { gap: 0; }
.carte-info, .carte-aide, .encart-pratique { border-radius: 0; box-shadow: none; }
.carte-info { border: 0; border-top: 3px solid var(--gold); border-right: 1px solid var(--line); background: transparent; }
.carte-info:last-child { border-right: 0; }
.carte-info h2 { font-size: 1.45rem; }
.carte-info_numero { border-radius: 0; }
.encart-pratique { border: 0; border-left: 3px solid var(--gold); background: #edf0e8; }
.grille-aide { gap: 0; border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.grille-aide .carte-aide { border: 0; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); background: transparent; }
.grille-aide .carte-aide:first-child { background: var(--forest); }

/* Formulaires et dons. */
.champ input, .champ select, .champ textarea { border-radius: 2px; }
.message-alerte, .message-succes, .message-info { border-radius: 2px; }
.bloc-don, .helloasso-wrapper { border-radius: 0; box-shadow: none; }
.auth-card { border-radius: 4px; }

/* Article d'actualité : titre et affiche maîtrisés. */
.actualite-date { margin-top: 16px; }
.actualite-photo { max-height: 720px; background: #eee9df; }
.actualite-photo img { object-fit: contain; }
.contenu-article { font-size: 1.04rem; line-height: 1.72; }

/* Footer. */
.site-footer { padding-top: 54px; }
.site-footer_brand-mark { border-radius: 0; }

@media (max-width: 1180px) {
  .container, .container-small { width: min(calc(100% - 48px), var(--container)); }
  .nav-toggle { display: block; }
  .site-header { position: sticky; }
  .site-header_nav { position: absolute; left: 24px; right: 24px; top: calc(100% + 6px); display: none; flex-direction: column; align-items: stretch; gap: 0; padding: 8px; border: 1px solid var(--line); border-radius: 2px; background: rgba(252,251,247,.99); box-shadow: var(--shadow-md); }
  .site-header_nav.is-open { display: flex; }
  .site-header_nav > a:not(.button) { padding: 11px 12px; font-size: .93rem; }
  .site-header_nav > a:not(.button)::after { display: none; }
  .site-header_nav > a[aria-current="page"]:not(.button), .site-header_nav > a:not(.button):hover { background: var(--cream-2); }
  .site-header_nav .button { width: 100%; margin-top: 5px; }
  .hero-home_grid { grid-template-columns: .9fr 1.1fr; }
  .hero-home_contenu { padding-inline: 46px; }
  .home-animaux_layout { grid-template-columns: 1fr; }
  .home-animaux_callout { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 10px 24px; }
  .home-animaux_callout h3, .home-animaux_callout p { margin: 0; }
  .home-animaux_callout .button { grid-column: 3; grid-row: 1 / 3; }
  .donation-banner_content { grid-template-columns: 1fr auto; }
  .donation-banner_content h2, .donation-banner_content p { grid-column: 1; }
  .donation-banner_content .button { grid-column: 2; grid-row: 2 / 4; }
}

@media (max-width: 900px) {
  .hero-home_grid { grid-template-columns: 1fr; }
  .hero-home_visuel { order: -1; min-height: 440px; }
  .hero-home_visuel img { min-height: 440px; }
  .hero-home_contenu { padding: 44px 32px 52px; }
  .hero-home_contenu h1 { max-width: 12ch; font-size: clamp(2.7rem, 8vw, 4rem); }
  .grille-animaux-home, .grille-news-home { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .adoption-steps_grid { grid-template-columns: 1fr; }
  .adoption-step { border-right: 0; border-bottom: 1px solid var(--line); }
  .adoption-step:last-child { border-bottom: 0; }
  .donation-banner_content { display: block; }
  .donation-banner_content .eyebrow { margin-bottom: 10px; }
  .donation-banner_content p { margin: 16px 0 22px; }
  .grille-news { grid-template-columns: 1fr; }
  .grille-news:not(.grille-news-home) .carte-news-modern { grid-template-columns: minmax(220px, 36%) 1fr; }
  .fiche-detail { grid-template-columns: 1fr; }
  .fiche-detail_photo img { max-height: 680px; }
  .grille-infos { grid-template-columns: 1fr; }
  .carte-info { border-right: 0; border-bottom: 1px solid var(--line); }
}

@media (max-width: 640px) {
  .container, .container-small { width: min(calc(100% - 28px), var(--container)); }
  .padding-section { padding: 54px 0; }
  .padding-section-small { padding: 32px 0; }
  .site-header_inner { min-height: 66px; }
  .site-header_logo { font-size: 1rem; }
  .site-header_logo-mark { width: 36px; height: 36px; flex-basis: 36px; }
  .site-header_nav { left: 14px; right: 14px; }
  .hero-home_visuel { min-height: 340px; }
  .hero-home_visuel img { min-height: 340px; }
  .hero-home_contenu { padding: 36px 20px 42px; }
  .hero-home_contenu h1 { font-size: clamp(2.45rem, 12vw, 3.35rem); }
  .hero-home_note { display: none; }
  .hero-animal-card { left: 14px; right: 14px; bottom: 14px; min-width: 0; }
  .grille-animaux-home, .grille-news-home { grid-template-columns: 1fr; }
  .carte-animal_photo { aspect-ratio: 4/3; }
  .home-animaux_callout { display: block; }
  .home-animaux_callout .button { margin-top: 8px; }
  .donation-banner .container { width: min(calc(100% - 28px), var(--container)); }
  .donation-banner_inner { padding: 42px 0; }
  .grille-news:not(.grille-news-home) .carte-news-modern { display: block; }
  .grille-news:not(.grille-news-home) .carte-news_photo { min-height: 0; aspect-ratio: 16/10; }
  .grille-news:not(.grille-news-home) .carte-news_body { padding: 20px 0 24px; }
  .home-mission_grid { grid-template-columns: 1fr; }
  .home-mission_item { border-left: 0; border-top: 1px solid var(--line); padding: 16px 0 0; }
  .fiche-detail_photo img { max-height: none; }
}

/* =========================================================
   V6 — version finale demandée
   Mise en page plus large, titres mesurés, angles droits,
   photos non recadrées brutalement et fiche animal restructurée.
   ========================================================= */
:root {
  --container: 1720px;
  --container-small: 1220px;
  --radius-sm: 0;
  --radius: 0;
  --radius-lg: 0;
}

body { font-size: 16px; line-height: 1.62; }
.container { width: min(calc(100% - 64px), var(--container)); }
.container-small { width: min(calc(100% - 64px), var(--container-small)); }
h1 { font-size: clamp(2.1rem, 3vw, 3.25rem); line-height: 1.04; }
h2 { font-size: clamp(1.55rem, 2.1vw, 2.25rem); line-height: 1.1; }
h3 { font-size: 1.18rem; }
.padding-section { padding: 58px 0; }
.padding-section-small { padding: 34px 0; }

/* Header : logo officiel + accès administration visible. */
.site-header_inner { min-height: 82px; }
.site-header_logo { display: inline-flex; align-items: center; gap: 12px; width: auto; max-width: 270px; height: auto; }
.site-header_logo-image { display: block; width: 58px; height: 58px; flex: 0 0 58px; object-fit: contain; mix-blend-mode: multiply; }
.site-header_logo-text { max-width: 170px; color: var(--forest); font-family: var(--display); font-size: 1.2rem; font-weight: 750; line-height: 1.02; }
.site-header_nav { gap: clamp(10px, 1.15vw, 18px); }
.site-header_nav > a:not(.button) { padding-block: 29px 26px; font-size: .85rem; }
.site-header_nav .button { border-radius: 0; }
.button, .badge, .nav-toggle, .champ input, .champ select, .champ textarea { border-radius: 0; }

/* Accueil : pleine largeur, mais photo de une maîtrisée. */
.hero-home { padding: 0; }
.hero-home .container { width: min(calc(100% - 64px), var(--container)); max-width: var(--container); }
.hero-home_grid { min-height: 0; grid-template-columns: minmax(0, 1.08fr) minmax(380px, .72fr); gap: clamp(34px, 4vw, 74px); align-items: center; padding: 42px 0; }
.hero-home_contenu { padding: 0; }
.hero-home_contenu h1 { max-width: 14ch; margin-bottom: 18px; font-size: clamp(2.45rem, 3.6vw, 3.7rem); }
.hero-home_intro { max-width: 700px; font-size: 1.04rem; }
.hero-home_visuel { width: 100%; height: 440px; min-height: 0; background: #e9e6dd; overflow: hidden; }
.hero-home_visuel img { width: 100%; height: 100%; min-height: 0; object-fit: contain; object-position: center center; }
.hero-home_visuel::after { display: none; }
.hero-home_note { display: none; }
.hero-animal-card { left: 0; right: 0; bottom: 0; min-width: 0; padding: 13px 16px; background: rgba(21,63,52,.94); border: 0; }
.hero-home_reassurance { margin-top: 24px; padding-top: 16px; }

/* Cartes animaux : ne jamais sacrifier la tête au recadrage. */
.grille-animaux { grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 28px; }
.grille-animaux-home { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.carte-animal { border: 1px solid var(--line); background: var(--paper); }
.carte-animal_photo { height: 280px; aspect-ratio: auto; background: #ece9e1; }
.carte-animal_photo img { object-fit: contain; object-position: center top; }
.carte-animal_contenu { padding: 18px 20px 22px; }
.carte-animal_nom { font-size: 1.32rem; }
.carte-animal_coeur { border: 1px solid var(--line); background: rgba(255,255,255,.92); }
.home-animaux_layout { grid-template-columns: minmax(0, 1fr) 280px; gap: 32px; }
.home-animaux_callout { padding: 26px; }
.home-animaux_callout h3 { font-size: 1.4rem; }

/* Don : ligne éditoriale sobre, sans gros bloc arrondi. */
.donation-banner { border-top: 1px solid rgba(255,255,255,.10); border-bottom: 1px solid rgba(255,255,255,.10); }
.donation-banner_inner { padding: 42px 0; }
.donation-banner_content { grid-template-columns: minmax(280px,.85fr) minmax(360px,1.15fr) auto; gap: 24px 42px; }
.donation-banner_content h2 { font-size: clamp(1.65rem, 2.1vw, 2.15rem); }

/* Actualités : petits blocs séparés avec vraie bordure. */
.grille-news, .grille-news-home { grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 26px; align-items: start; }
.carte-news-modern, .grille-news:not(.grille-news-home) .carte-news-modern { display: block; border: 1px solid var(--line); background: var(--paper); box-shadow: none; }
.carte-news_photo, .grille-news:not(.grille-news-home) .carte-news_photo { display: block; width: 100%; height: 190px; min-height: 0; aspect-ratio: auto; background: #ece9e1; }
.carte-news_photo img, .grille-news:not(.grille-news-home) .carte-news_photo img { width: 100%; height: 100%; object-fit: contain; }
.carte-news_body, .grille-news:not(.grille-news-home) .carte-news_body { padding: 17px 18px 20px; }
.carte-news_body h2, .carte-news_body h3 { margin: 0 0 12px; font-size: 1.22rem; line-height: 1.18; }
.carte-news_date { font-size: .7rem; }
.home-news .section-entete { margin-bottom: 24px; }

/* Pages internes : titres non surdimensionnés. */
main > .padding-section-small:first-child { padding-top: 34px; }
main > .padding-section-small:first-child h1 { font-size: clamp(2rem, 2.7vw, 2.75rem); }
.texte-centre { text-align: left; }
.texte-centre p { margin-left: 0; margin-right: 0; }
.actions-centrees { justify-content: flex-start; }
.carte-info h2, .carte-aide h2, .encart-pratique h2 { font-size: 1.32rem; }

/* Fiche animal : identité en haut, contenus éditoriaux en dessous. */
.animal-page-head { padding: 28px 0 16px; }
.animal-profile { padding: 10px 0 68px; }
.animal-profile_top { display: grid; grid-template-columns: minmax(420px, .95fr) minmax(420px, 1.05fr); gap: clamp(42px, 5vw, 90px); align-items: start; }
.animal-profile_photo { display: flex; align-items: center; justify-content: center; height: min(66vh, 610px); min-height: 420px; overflow: hidden; border: 1px solid var(--line); background: #ece9e1; }
.animal-profile_photo img { display: block; width: 100%; height: 100%; object-fit: contain; object-position: center top; }
.animal-profile_identity { padding-top: 8px; }
.animal-profile_identity h1 { margin: 10px 0 4px; font-size: clamp(2.35rem, 3.2vw, 3.35rem); }
.animal-profile_subtitle { margin: 0 0 24px; color: var(--forest-3); font-family: var(--display); font-size: 1.3rem; }
.animal-profile_specs { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); margin: 24px 0 30px; border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.animal-profile_specs > div { min-height: 76px; padding: 13px 16px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.animal-profile_specs dt { margin-bottom: 3px; color: var(--muted); font-size: .75rem; font-weight: 800; text-transform: uppercase; letter-spacing: .07em; }
.animal-profile_specs dd { margin: 0; color: var(--forest); font-weight: 750; }
.compat { font-weight: 800; }
.animal-profile_sections { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); margin-top: 52px; border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.animal-profile_section { min-height: 100%; padding: 28px 30px 34px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); background: rgba(255,255,255,.28); }
.animal-profile_section h2 { margin: 0 0 14px; font-size: 1.55rem; }
.animal-profile_section p:last-child { margin-bottom: 0; }
.animal-profile_story { background: #f2eee4; }

/* Article d'actualité. */
.actualite-photo { max-height: 620px; border: 1px solid var(--line); background: #ece9e1; }
.actualite-photo img { object-fit: contain; }
.contenu-article { max-width: 920px; margin-inline: auto; font-size: 1rem; }

/* Angles droits partout dans le public. */
.carte-news-modern, .carte-animal, .home-animaux_callout, .adoption-step, .carte-info, .carte-aide, .encart-pratique, .bloc-don, .helloasso-wrapper, .actualite-photo, .animal-profile_photo, .animal-profile_section { border-radius: 0 !important; }

@media (max-width: 1180px) {
  .site-header_logo { max-width: 245px; }
  .site-header_logo-image { width: 52px; height: 52px; flex-basis: 52px; }
  .site-header_logo-text { font-size: 1.08rem; }
  .hero-home_grid { grid-template-columns: minmax(0,1fr) minmax(330px,.72fr); }
  .hero-home_visuel { height: 390px; }
  .home-animaux_layout { grid-template-columns: 1fr; }
  .animal-profile_top { grid-template-columns: 1fr 1fr; gap: 36px; }
}

@media (max-width: 900px) {
  .container, .container-small, .hero-home .container { width: min(calc(100% - 36px), var(--container)); }
  .hero-home_grid { grid-template-columns: 1fr; padding: 30px 0 40px; }
  .hero-home_visuel { order: 0; height: 420px; }
  .hero-home_contenu h1 { font-size: clamp(2.35rem, 7vw, 3.1rem); }
  .grille-animaux-home { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .animal-profile_top { grid-template-columns: 1fr; }
  .animal-profile_photo { height: auto; min-height: 0; max-height: none; }
  .animal-profile_photo img { height: auto; max-height: 680px; }
  .animal-profile_sections { grid-template-columns: 1fr; }
  .animal-profile_section { min-height: 0; }
}

@media (max-width: 640px) {
  .container, .container-small, .hero-home .container { width: min(calc(100% - 24px), var(--container)); }
  .site-header_inner { min-height: 70px; }
  .site-header_logo { max-width: 205px; gap: 9px; }
  .site-header_logo-image { width: 46px; height: 46px; flex-basis: 46px; }
  .site-header_logo-text { max-width: 140px; font-size: .98rem; }
  .hero-home_visuel { height: 330px; }
  .hero-home_contenu h1 { font-size: 2.35rem; }
  .grille-animaux-home { grid-template-columns: 1fr; }
  .carte-animal_photo { height: 300px; }
  .grille-news, .grille-news-home { grid-template-columns: 1fr; }
  .carte-news_photo, .grille-news:not(.grille-news-home) .carte-news_photo { height: 210px; }
  .animal-profile_specs { grid-template-columns: 1fr; }
  .animal-profile_identity h1 { font-size: 2.25rem; }
}

/* =========================================================
   V7 — version complète : contenu historique utile + style sobre
   ========================================================= */
:root {
  --container: 1800px;
  --container-small: 1120px;
}

/* Mise en page générale : presque pleine largeur, sans effet "cartes arrondies". */
.container { width: min(calc(100% - 48px), var(--container)); }
.container-small { width: min(calc(100% - 48px), var(--container-small)); }
.page-intro { padding: 42px 0 28px; border-bottom: 1px solid var(--line); background: var(--cream); }
.page-intro .container > p:last-child { max-width: 840px; color: var(--muted); }
.page-intro h1 { max-width: 22ch; margin: 4px 0 14px; font-size: clamp(2rem, 2.6vw, 2.9rem); }
.page-intro .lien-retour { margin-bottom: 24px; }

/* Header : sous-menus compacts pour éviter une barre trop chargée. */
.site-header_inner { min-height: 78px; gap: 22px; }
.site-header_nav { gap: clamp(9px, .9vw, 15px); }
.site-header_nav > a:not(.button), .nav-group > a { position: relative; display: inline-flex; align-items: center; min-height: 78px; padding: 0; color: #2f473d; font-size: .82rem; font-weight: 750; white-space: nowrap; }
.site-header_nav > a:not(.button)::after, .nav-group > a::after { content: ''; position: absolute; left: 0; right: 0; bottom: 15px; height: 2px; background: transparent; }
.site-header_nav > a[aria-current="page"]:not(.button)::after, .nav-group.is-current > a::after, .nav-group:hover > a::after, .nav-group:focus-within > a::after { background: var(--gold); }
.nav-group { position: relative; display: flex; align-items: center; }
.nav-submenu { position: absolute; z-index: 150; top: calc(100% - 8px); left: -16px; display: none; width: 230px; padding: 8px 0; border: 1px solid var(--line); background: var(--paper); box-shadow: 0 16px 36px rgba(24,50,41,.12); }
.nav-group:hover .nav-submenu, .nav-group:focus-within .nav-submenu { display: block; }
.nav-submenu a { display: block; padding: 10px 15px; color: var(--ink); font-size: .84rem; font-weight: 650; }
.nav-submenu a:hover, .nav-submenu a:focus-visible { background: var(--cream-2); }
.site-header_nav .button { min-height: 38px; padding: 9px 13px; font-size: .78rem; }
.button-admin { background: transparent; border-color: rgba(23,61,49,.45); color: var(--forest); }
.button-admin:hover { background: var(--forest); color: #fff; }

/* Accueil : photo d'ouverture volontairement plus petite. */
.hero-home_grid { grid-template-columns: minmax(0,1.28fr) minmax(340px,.72fr); gap: clamp(36px, 4vw, 80px); padding: 40px 0; }
.hero-home_contenu h1 { max-width: 16ch; font-size: clamp(2.35rem, 3.2vw, 3.5rem); }
.hero-home_visuel { justify-self: end; width: min(100%, 600px); height: 370px; border: 1px solid var(--line); background: #ece9e1; }
.hero-home_visuel img { object-fit: contain; object-position: center center; }
.hero-animal-card { padding: 11px 14px; }

/* Bandeau soutien / fiscalité. */
.home-alert { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); background: #f0e8d8; }
.home-alert_grid { display: grid; grid-template-columns: minmax(0,1.3fr) minmax(240px,.55fr) auto; gap: 38px; align-items: center; padding: 30px 0; }
.home-alert h2 { margin-bottom: 8px; font-size: clamp(1.45rem, 2vw, 2rem); }
.home-alert p { margin-bottom: 0; }
.home-alert_tax { padding-left: 28px; border-left: 1px solid rgba(23,61,49,.2); }
.home-alert_tax strong, .tax-number { display: block; color: var(--terracotta); font-family: var(--display); font-size: clamp(2.5rem, 4vw, 4rem); line-height: .9; }
.home-alert_tax span { display: block; margin-top: 8px; color: var(--forest); font-weight: 800; }
.home-alert_tax small, .fine-print { display: block; margin-top: 8px; color: var(--muted); font-size: .78rem; line-height: 1.45; }
.home-alert_actions { display: flex; min-width: 210px; flex-direction: column; align-items: flex-start; gap: 12px; }

/* Accueil animaux : encarts nets, photos non rognées. */
.home-animaux_layout { grid-template-columns: minmax(0,1fr) 300px; }
.carte-animal, .home-animaux_callout { box-shadow: none; }
.carte-animal:hover { transform: none; box-shadow: 0 8px 24px rgba(24,50,41,.06); }
.carte-animal_photo { height: 250px; }
.carte-animal_photo img { object-fit: contain; object-position: center top; }
.carte-animal_coeur { display: none; }
.home-animaux_callout { border: 1px solid var(--line); background: #edf0e4; }

/* PARTICIPEZ / ADOPTEZ / REJOIGNEZ-NOUS */
.home-three-actions { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); background: var(--paper); }
.home-three-actions_grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); border-left: 1px solid var(--line); border-top: 1px solid var(--line); }
.home-three-actions_grid article { min-height: 220px; padding: 28px 30px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.home-three-actions_grid h2 { margin-bottom: 10px; font-size: 1.45rem; }
.home-three-actions_grid p { color: var(--muted); font-size: .94rem; }
.compact-actions article { min-height: 170px; }

/* Parcours adoption : plus sobre. */
.adoption-steps_grid { gap: 0; border-left: 1px solid var(--line); border-top: 1px solid var(--line); }
.adoption-step { display: block; min-height: 0; padding: 26px 28px; border: 0; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); background: transparent; }
.adoption-step_num { position: static; display: inline-block; width: auto; height: auto; margin-bottom: 12px; background: transparent; color: var(--terracotta); box-shadow: none; font-size: .78rem; letter-spacing: .12em; }
.adoption-step_icon { display: none; }
.adoption-step h3 { margin: 0 0 8px; font-size: 1.25rem; }

/* Infos pratiques sur l'accueil. */
.home-practical { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); background: var(--cream-2); }
.home-practical_grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); border-left: 1px solid var(--line); border-top: 1px solid var(--line); }
.home-practical_grid > a { display: grid; grid-template-columns: 1fr auto; gap: 5px 18px; min-height: 145px; padding: 25px 28px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); background: rgba(255,255,255,.22); }
.home-practical_grid strong { color: var(--forest); font-family: var(--display); font-size: 1.3rem; }
.home-practical_grid span { color: var(--muted); font-size: .9rem; }
.home-practical_grid b { grid-row: 1 / span 2; grid-column: 2; align-self: center; color: var(--forest); }

/* Actualités : vrais petits blocs bordés. */
.grille-news, .grille-news-home { grid-template-columns: repeat(3,minmax(0,1fr)); gap: 24px; }
.carte-news-modern { border: 1px solid var(--line); box-shadow: none; }
.carte-news-modern:hover { transform: none; box-shadow: 0 8px 24px rgba(24,50,41,.06); }
.carte-news_photo { height: 170px; border-bottom: 1px solid var(--line); }
.carte-news_photo img { object-fit: contain; background: #ece9e1; }
.carte-news_body { padding: 16px 18px 18px; }
.carte-news_body h2, .carte-news_body h3 { font-size: 1.12rem; }
.carte-news_body > p:not(.carte-news_date) { margin: 0 0 14px; color: var(--muted); font-size: .88rem; }

/* Fiche animal : gauche photo, droite résumé, puis blocs dessous. */
.animal-profile_top { grid-template-columns: minmax(360px,.8fr) minmax(500px,1.2fr); gap: clamp(42px, 5vw, 88px); }
.animal-profile_photo { width: 100%; max-width: 650px; height: 520px; justify-self: start; }
.animal-profile_identity { max-width: 780px; }
.animal-profile_identity h1 { font-size: clamp(2.1rem, 2.8vw, 3rem); }
.animal-profile_specs { grid-template-columns: repeat(2,minmax(0,1fr)); }
.animal-profile_sections { grid-template-columns: repeat(3,minmax(0,1fr)); }
.animal-profile_section { padding: 26px 28px 30px; }
.animal-profile_section h2 { font-size: 1.35rem; }

/* Pages de contenu / infos pratiques. */
.content-columns { display: grid; grid-template-columns: minmax(0,1.35fr) minmax(300px,.65fr); gap: 70px; align-items: start; }
.content-main { max-width: 900px; }
.content-main h2 { margin-top: 30px; font-size: 1.45rem; }
.content-main h2:first-child { margin-top: 0; }
.content-aside { padding: 24px 0 24px 28px; border-left: 3px solid var(--gold); }
.content-aside h2 { font-size: 1.28rem; }
.content-aside .button + .button { margin-top: 10px; }
.clean-list { display: grid; gap: 8px; padding-left: 20px; }
.notice-line { margin-top: 24px; padding: 16px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }

.practical-list, .help-index { border-top: 1px solid var(--line); }
.practical-row, .help-row { display: grid; grid-template-columns: 1fr auto; gap: 30px; align-items: center; padding: 26px 8px; border-bottom: 1px solid var(--line); }
.practical-row h2, .help-row h2 { margin: 3px 0 8px; font-size: 1.45rem; }
.practical-row p, .help-row p { margin: 0; color: var(--muted); }
.practical-row > span, .help-row > span { color: var(--forest); font-size: 1.4rem; }
.practical-kicker { color: var(--terracotta); font-size: .72rem; font-weight: 850; text-transform: uppercase; letter-spacing: .1em; }
.help-row-featured { background: #f0e8d8; padding-inline: 22px; }

.tariffs-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 0; border-left: 1px solid var(--line); border-top: 1px solid var(--line); }
.tariff-panel { padding: 30px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.tariff-panel h2 { font-size: 1.5rem; }
.tariff-panel dl { margin: 22px 0; }
.tariff-panel dl > div { display: flex; justify-content: space-between; gap: 30px; padding: 10px 0; border-bottom: 1px solid var(--line); }
.tariff-panel dt { color: var(--muted); }
.tariff-panel dd { margin: 0; color: var(--forest); font-weight: 850; }

.adoption-process { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.adoption-process article { padding: 26px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.adoption-process article > span { color: var(--terracotta); font-weight: 900; font-size: .76rem; letter-spacing: .12em; }
.adoption-process h2 { margin: 10px 0; font-size: 1.25rem; }
.adoption-process p { margin: 0; color: var(--muted); font-size: .92rem; }

.tax-banner { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); background: #f0e8d8; }
.tax-banner_grid { display: grid; grid-template-columns: 180px minmax(0,1fr); gap: 40px; align-items: center; padding: 30px 0; }
.tax-banner h2 { margin-bottom: 8px; font-size: 1.55rem; }
.tax-banner p { margin-bottom: 8px; }
.tax-aside .tax-number { margin-bottom: 12px; }

/* Aucun arrondi décoratif sur la partie publique. */
.site-header_nav, .nav-submenu, .hero-home_visuel, .hero-animal-card, .carte-animal, .home-animaux_callout, .adoption-step, .home-practical_grid > a, .carte-news-modern, .carte-news_photo, .animal-profile_photo, .animal-profile_section, .practical-row, .help-row, .tariff-panel, .content-aside, .helloasso-wrapper, .bloc-don, .button, .badge, .champ input, .champ select, .champ textarea { border-radius: 0 !important; }

@media (max-width: 1320px) {
  .site-header_logo-text { display: none; }
  .site-header_logo { max-width: 68px; }
  .site-header_nav { gap: 10px; }
  .site-header_nav > a:not(.button), .nav-group > a { font-size: .78rem; }
  .site-header_nav .button { padding-inline: 10px; }
}

@media (max-width: 1040px) {
  .site-header_logo-text { display: block; }
  .site-header_logo { max-width: 245px; }
  .nav-toggle { display: block; border-radius: 0; }
  .site-header_nav { position: absolute; left: 18px; right: 18px; top: calc(100% + 6px); display: none; flex-direction: column; align-items: stretch; gap: 0; max-height: calc(100vh - 100px); overflow: auto; padding: 8px; border: 1px solid var(--line); background: var(--paper); box-shadow: 0 16px 36px rgba(24,50,41,.12); }
  .site-header_nav.is-open { display: flex; }
  .site-header_nav > a:not(.button), .nav-group > a { min-height: 0; padding: 11px 12px; font-size: .92rem; }
  .site-header_nav > a:not(.button)::after, .nav-group > a::after { display: none; }
  .nav-group { display: block; }
  .nav-submenu { position: static; display: block; width: auto; padding: 0 0 6px 18px; border: 0; box-shadow: none; background: transparent; }
  .nav-submenu a { padding: 7px 12px; color: var(--muted); font-size: .86rem; }
  .site-header_nav .button { width: 100%; margin-top: 5px; }
  .hero-home_grid { grid-template-columns: 1fr; }
  .hero-home_visuel { justify-self: start; width: min(100%, 720px); height: 420px; }
  .home-alert_grid { grid-template-columns: 1fr 1fr; }
  .home-alert_actions { grid-column: 1 / -1; flex-direction: row; align-items: center; }
  .home-three-actions_grid, .home-practical_grid, .adoption-process { grid-template-columns: 1fr 1fr; }
  .content-columns { grid-template-columns: 1fr; gap: 34px; }
  .content-aside { border-left: 0; border-top: 3px solid var(--gold); padding: 22px 0 0; }
  .animal-profile_top { grid-template-columns: 1fr; }
  .animal-profile_photo { max-width: 720px; height: auto; }
  .animal-profile_photo img { height: auto; max-height: 650px; }
}

@media (max-width: 760px) {
  .container, .container-small { width: min(calc(100% - 28px), var(--container)); }
  .hero-home_visuel { height: 330px; }
  .hero-home_contenu h1 { font-size: 2.35rem; }
  .home-alert_grid { grid-template-columns: 1fr; gap: 22px; }
  .home-alert_tax { padding: 20px 0 0; border-left: 0; border-top: 1px solid rgba(23,61,49,.2); }
  .home-alert_actions { grid-column: auto; flex-direction: column; align-items: stretch; }
  .home-alert_actions .button { width: 100%; }
  .home-three-actions_grid, .home-practical_grid, .adoption-process, .tariffs-grid { grid-template-columns: 1fr; }
  .grille-news, .grille-news-home { grid-template-columns: 1fr; }
  .grille-animaux-home { grid-template-columns: 1fr; }
  .animal-profile_specs, .animal-profile_sections { grid-template-columns: 1fr; }
  .tax-banner_grid { grid-template-columns: 1fr; gap: 18px; }
  .tax-banner_grid > div:first-child { border-bottom: 1px solid rgba(23,61,49,.18); padding-bottom: 14px; }
  .page-intro h1 { font-size: 2.15rem; }
}

/* ==========================================================
   V8 — refonte visuelle finale
   Objectifs : largeur maîtrisée, hiérarchie plus calme,
   photos visibles, blocs compacts, très peu d'arrondis.
   ========================================================== */
:root {
  --container: 1480px;
  --container-small: 980px;
  --page-w: min(84vw, var(--container));
  --paper: #fffdf8;
  --cream: #f8f3e8;
  --cream-2: #efe7d6;
  --forest: #163d31;
  --forest-2: #234f40;
  --terracotta: #d95d34;
  --gold: #dca43b;
  --line: rgba(22,61,49,.20);
  --shadow-sm: 0 8px 24px rgba(22,61,49,.07);
  --radius-sm: 4px;
  --radius: 6px;
  --radius-lg: 8px;
}
body { background: var(--cream); font-size: 16px; line-height: 1.58; }
.container { width: var(--page-w); max-width: var(--container); margin-inline: auto; }
.container-small { width: min(78vw, var(--container-small)); margin-inline: auto; }
.padding-section { padding: 66px 0; }
.padding-section-small { padding: 46px 0; }
h1 { font-size: clamp(2.4rem, 4vw, 4rem); line-height: 1.02; }
h2 { font-size: clamp(1.75rem, 2.6vw, 2.65rem); line-height: 1.08; }
h3 { font-size: 1.25rem; }
p { max-width: 72ch; }
.lead { font-size: clamp(1.03rem, 1.3vw, 1.18rem); color: #4f6259; max-width: 62ch; }
.button { border-radius: 3px; box-shadow: none; }
.button:hover { transform: none; box-shadow: none; }
.badge { border-radius: 10px !important; }
.skip-link { border-radius: 3px; }

/* Header plus compact */
.site-header_inner { min-height: 72px; gap: 22px; }
.site-header_logo { max-width: 245px; font-size: 1.16rem; }
.site-header_logo-image { width: 54px !important; height: 54px !important; object-fit: contain; border-radius: 0 !important; background: transparent !important; }
.site-header_nav { gap: clamp(10px, 1.35vw, 22px); }
.site-header_nav > a:not(.button), .nav-group > a { padding-top: 24px !important; padding-bottom: 22px !important; font-size: .86rem !important; }
.nav-submenu { border-radius: 3px !important; box-shadow: 0 14px 32px rgba(22,61,49,.12) !important; }
.button-admin, .button-don { min-height: 38px; padding: 9px 14px; }

/* Page headings */
.page-heading, .page-intro { padding: 52px 0 28px !important; border-bottom: 1px solid var(--line); }
.page-heading h1, .page-intro h1 { max-width: 16ch; margin-bottom: 16px; }
.page-heading .lead, .page-intro > .container > p:last-child { margin-bottom: 0; }

/* Generic editorial hero */
.editorial-hero { padding: 54px 0 48px; border-bottom: 1px solid var(--line); background: #fbf8f0; }
.editorial-hero-soft { background: #f1eadc; }
.editorial-hero-alert { background: #f5ece5; }
.editorial-hero_grid { display: grid; grid-template-columns: minmax(0, .92fr) minmax(420px, 1.08fr); gap: clamp(40px, 6vw, 86px); align-items: center; }
.editorial-hero_copy h1 { max-width: 13ch; margin: 8px 0 18px; }
.editorial-hero_copy .button { margin-top: 10px; }
.editorial-hero_media { position: relative; min-height: 320px; max-height: 455px; border: 1px solid var(--line); overflow: hidden; background: #ebe5d8; }
.editorial-hero_media img { width: 100%; height: 100%; min-height: 320px; max-height: 455px; object-fit: cover; object-position: center; }
.editorial-hero_media .media-caption { position: absolute; left: 0; right: 0; bottom: 0; padding: 12px 16px; background: rgba(19,47,38,.88); color: #fff; font-size: .85rem; }
.photo-fallback { min-height: 100%; display: grid; place-items: center; font-size: 4rem; color: var(--forest); background: linear-gradient(145deg,#eee7d8,#dfe6d8); }

/* Homepage */
.hero-home { padding: 46px 0 52px !important; background: #f4eddf !important; }
.hero-home_grid { min-height: 0 !important; grid-template-columns: minmax(0,.95fr) minmax(480px,1.05fr) !important; gap: clamp(42px,6vw,86px) !important; padding: 0 !important; }
.hero-home_contenu h1 { font-size: clamp(2.8rem,4.4vw,3.45rem) !important; }
.hero-home_visuel { min-height: 420px !important; max-height: 500px; border-radius: 4px !important; box-shadow: none !important; border: 1px solid var(--line); }
.hero-home_visuel img { min-height: 420px !important; height: 100% !important; object-fit: contain !important; background: #ded8cb; }
.hero-home_visuel::after { display: none !important; }
.hero-animal-card { left: 18px !important; bottom: 10px !important; min-width: 220px !important; padding: 12px 15px !important; border-radius: 3px !important; box-shadow: none !important; border: 1px solid var(--line) !important; background: #efefef; }
.hero-home_reassurance { font-size: .8rem !important; gap: 14px 22px !important; }
.home-alert { padding: 34px 0 !important; background: #2f4c62 !important; color: #fff; }
.home-alert_grid { display: grid !important; grid-template-columns: 1.2fr .65fr .6fr !important; gap: 42px !important; align-items: center !important; }
.home-alert h2, .home-alert p { color: #fff !important; }
.home-alert_tax { border-left: 1px solid rgba(255,255,255,.25); padding-left: 28px; }
.home-alert_tax strong { display: block; font-family: var(--display); font-size: 3rem; color: #f2c45f; line-height: 1; }
.home-alert_tax span, .home-alert_tax small { display:block; color:#fff; }
.home-alert_tax small { opacity:.75; margin-top:7px; font-size:.72rem; }
.home-alert_actions { display:flex; flex-direction:column; align-items:flex-start; gap:12px; }
.home-alert .link-arrow { color:#fff; }
.section-entete { display:flex; justify-content:space-between; gap:30px; align-items:end; margin-bottom:30px; }
.section-entete h2 { margin-bottom:7px; }
.home-three-actions { padding: 0 0 58px; }
.home-three-actions_grid { display:grid; grid-template-columns:repeat(3,1fr); border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.home-three-actions_grid > a { padding:32px 34px; border-right:1px solid var(--line); background:#fbf8f0; }
.home-three-actions_grid > a:last-child { border-right:0; }
.home-three-actions_grid h2 { font-size:1.65rem; }
.home-three-actions_grid > a > span:last-child { color:var(--forest); font-weight:800; }
.home-practical_grid { display:grid; grid-template-columns:repeat(3,1fr); border:1px solid var(--line); }
.home-practical_grid a { display:grid; gap:5px; padding:24px; border-right:1px solid var(--line); background:#fffdf8; }
.home-practical_grid a:last-child { border-right:0; }
.home-practical_grid strong { font-family:var(--display); font-size:1.25rem; color:var(--forest); }

/* Animal cards */
.grille-animaux { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; }
.carte-animal { background:#fffdf8; border:1px solid var(--line); border-radius:3px !important; overflow:hidden; box-shadow:none !important; }
.carte-animal_photo { display:block; height:280px; background:#ebe5d8; border-bottom:1px solid var(--line); overflow:hidden; }
.carte-animal_photo img { width:100%; height:100%; object-fit:contain !important; object-position:center !important; }
.carte-animal_contenu { padding:20px 20px 22px; }
.carte-animal_title-row { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.carte-animal_title-row h3, .carte-animal_nom { font-size:1.5rem !important; margin:0; }
.carte-animal_meta { margin:5px 0 10px; font-size:.88rem; color:#52655c; font-weight:700; }
.carte-animal_contenu p { font-size:.92rem; }
.carte-animal_coeur { display:none !important; }

/* Animal detail */
.animal-page-head { padding:34px 0 18px !important; }
.animal-profile { padding:0 0 72px !important; }
.animal-profile_top { display:grid !important; grid-template-columns:minmax(0,1fr) minmax(420px,.85fr) !important; gap:42px !important; align-items:start !important; padding:26px !important; border:1px solid var(--line) !important; background:#fffdf8 !important; }
.animal-profile_photo { height:500px !important; min-height:0 !important; border:0 !important; background:#e9e4d9 !important; }
.animal-profile_photo img { width:100%; height:100%; object-fit:contain !important; object-position:center !important; border-radius:0 !important; }
.animal-profile_identity { padding:10px 10px 10px 0 !important; }
.animal-profile_identity h1 { font-size:clamp(2.5rem,4vw,3.8rem) !important; margin:12px 0 2px !important; }
.animal-profile_subtitle { font-family:var(--display); font-size:1.35rem !important; margin:0 0 20px !important; color:#596a62 !important; }
.animal-profile_specs { display:grid !important; grid-template-columns:1fr 1fr !important; border-top:1px solid var(--line); border-left:1px solid var(--line); margin:18px 0 26px !important; }
.animal-profile_specs > div { display:flex !important; justify-content:space-between; gap:12px; padding:11px 12px !important; border-right:1px solid var(--line); border-bottom:1px solid var(--line); }
.animal-profile_specs dt { font-size:.74rem; text-transform:uppercase; letter-spacing:.08em; color:#65736c; }
.animal-profile_specs dd { margin:0; font-weight:800; text-align:right; }
.compat { display:inline-block; padding:2px 7px; border:1px solid var(--line); border-radius:2px !important; font-size:.78rem; }
.animal-profile_sections { display:grid !important; grid-template-columns:repeat(3,1fr) !important; gap:0 !important; margin-top:34px !important; border:1px solid var(--line); background:#fffdf8; }
.animal-profile_section { min-height:0 !important; padding:28px !important; border-right:1px solid var(--line) !important; background:transparent !important; }
.animal-profile_section:last-child { border-right:0 !important; }
.animal-profile_section h2 { font-size:1.65rem !important; }
.animal-profile_section p:last-child { margin-bottom:0; }

/* News */
.news-list { display:grid; gap:24px; }
.news-row { display:grid; grid-template-columns:320px 1fr; min-height:235px; border:1px solid var(--line); background:#fffdf8; }
.news-row_media { display:grid; place-items:center; background:#ece7dd; border-right:1px solid var(--line); overflow:hidden; }
.news-row_media img { width:100%; height:235px; object-fit:contain; }
.news-row_body { padding:26px 30px; display:flex; flex-direction:column; justify-content:center; }
.news-row_body h2 { font-size:1.75rem; margin:5px 0 9px; }
.news-row_body p { margin-bottom:12px; }
.home-news-list { display:grid; grid-template-columns:repeat(4,1fr); gap:22px; }
.home-news-card { border:1px solid var(--line); background:#fffdf8; }
.home-news-card_media { height:220px; display:grid; place-items:center; background:#ece7dd; border-bottom:1px solid var(--line); overflow:hidden; }
.home-news-card_media img { width:100%; height:100%; object-fit:contain; }
.home-news-card_body { padding:20px; }
.home-news-card_body h3 { font-size:1.00rem; margin:4px 0 8px; padding-bottom: 10px;
    padding-t}
.carte-news_date { font-size:.74rem !important; font-weight:900 !important; letter-spacing:.06em; text-transform:uppercase; color:var(--terracotta) !important;padding-bottom: 10px; }
.article-heading { max-width:1100px; margin-inline:auto; }
.article-heading h1 { max-width:30ch; font-size:clamp(2.4rem,4.1vw,2rem); }
.article-media { max-width:1100px; min-height:280px; max-height:620px; display:grid; place-items:center; background:#ebe6dc; border:1px solid var(--line); overflow:hidden; }
.article-media img { max-width:100%; max-height:620px; width:auto; height:auto; object-fit:contain; }
.article-body { max-width:900px; font-size:1.05rem; }

/* Visual cards & content pages */
.visual-card-grid { display:grid; gap:24px; }
.visual-card-grid-2 { grid-template-columns:repeat(2,1fr); }
.visual-card-grid-3 { grid-template-columns:repeat(3,1fr); }
.visual-card { display:grid; grid-template-columns:42% 58%; min-height:260px; border:1px solid var(--line); background:#fffdf8; }
.visual-card-grid-3 .visual-card { grid-template-columns:1fr; }
.visual-card_media { min-height:240px; background:#ebe6dc; overflow:hidden; }
.visual-card_media img { width:100%; height:100%; object-fit:cover; }
.visual-card_body { padding:24px 26px; }
.visual-card_body h2 { font-size:1.6rem; margin:6px 0 10px; }
.visual-card_body > span:last-child { font-weight:800; color:var(--forest); }
.support-material { padding:46px 0; background:#efe7d6; border-top:1px solid var(--line); }
.support-material_inner { display:flex; gap:50px; align-items:center; justify-content:space-between; }
.support-material_inner > div { max-width:900px; }
.two-col-balanced { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(360px,.85fr); gap:58px; align-items:start; }
.soft-panel { padding:28px; border:1px solid var(--line); border-left:4px solid var(--gold); background:#fffdf8; }
.soft-panel h3 { font-size:1.5rem; }
.alert-panel { border-left-color:var(--terracotta); }
.feature-list { list-style:none; padding:0; margin:24px 0 0; border-top:1px solid var(--line); }
.feature-list li { display:grid; grid-template-columns:150px 1fr; gap:20px; padding:16px 0; border-bottom:1px solid var(--line); }
.feature-list strong { color:var(--forest); }
.info-step { display:grid; grid-template-columns:52px 1fr; gap:20px; padding:22px 0; border-bottom:1px solid var(--line); }
.info-step:first-child { padding-top:0; }
.info-step > span { color:var(--terracotta); font-weight:900; font-size:.82rem; letter-spacing:.08em; }
.info-step h2 { font-size:1.55rem; margin-bottom:8px; }
.info-step p { margin-bottom:0; }
.icon-text-grid { display:grid; grid-template-columns:repeat(3,1fr); border:1px solid var(--line); background:#fffdf8; }
.icon-text-grid article { padding:30px; border-right:1px solid var(--line); }
.icon-text-grid article:last-child { border-right:0; }
.icon-text-grid article > span { font-size:2rem; }
.icon-text-grid h2 { font-size:1.55rem; margin-top:12px; }
.content-band { padding:54px 0; background:#efe7d6; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.content-band_grid { display:grid; grid-template-columns:minmax(0,1.3fr) minmax(320px,.7fr); gap:54px; align-items:center; }
.button-stack { display:flex; flex-wrap:wrap; gap:12px; justify-content:flex-end; }
.tax-mini { display:flex; gap:14px; align-items:flex-start; margin-top:22px; padding-top:20px; border-top:1px solid var(--line); }
.tax-mini strong { font-family:var(--display); font-size:2.1rem; color:var(--terracotta); line-height:1; }

/* Donation */
.tax-highlight { padding:34px 0; background:#efe6d2; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.tax-highlight_inner { display:grid; grid-template-columns:180px 1fr; gap:36px; align-items:center; max-width:1180px; }
.tax-highlight_number { font-family:var(--display); font-size:4.2rem; color:var(--terracotta); }
.tax-highlight h2 { font-size:1.8rem; }
.donation-layout { display:grid; grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr); gap:46px; align-items:start; }
.donation-main { padding:26px; border:1px solid var(--line); background:#fffdf8; }
.donation-side { border:1px solid var(--line); background:#fffdf8; }
.donation-side h3 { padding:20px; margin:0; border-bottom:1px solid var(--line); }
.donation-side a { display:grid; gap:3px; padding:18px 20px; border-bottom:1px solid var(--line); }
.donation-side a:last-child { border-bottom:0; }
.donation-side strong { color:var(--forest); }
.donation-side span { font-size:.88rem; color:#617067; }
.helloasso-wrapper { border-radius:0 !important; border:0 !important; box-shadow:none !important; margin-top:16px; }
.helloasso-wrapper-bouton { min-height:90px !important; background:#f4efe4 !important; border:1px solid var(--line) !important; }

/* Tarifs */
.tariffs-visual-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:30px; }
.tariff-card { display:grid; grid-template-columns:42% 58%; border:1px solid var(--line); background:#fffdf8; }
.tariff-card_media { min-height:430px; background:#ebe6dc; overflow:hidden; }
.tariff-card_media img { width:100%; height:100%; object-fit:contain; }
.tariff-card_body { padding:28px; }
.tariff-card_body h2 { font-size:1.7rem; }
.tariff-card dl { margin:20px 0; border-top:1px solid var(--line); }
.tariff-card dl div { display:flex; justify-content:space-between; padding:11px 0; border-bottom:1px solid var(--line); }
.tariff-card dd { font-weight:900; color:var(--forest); }
.notice-line { margin-top:26px; padding:16px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }

/* Adoption */
.adoption-timeline { display:grid; grid-template-columns:repeat(4,1fr); border:1px solid var(--line); background:#fffdf8; }
.adoption-timeline article { padding:24px; border-right:1px solid var(--line); }
.adoption-timeline article:last-child { border-right:0; }
.adoption-timeline article > span { display:block; color:var(--terracotta); font-weight:900; margin-bottom:10px; }
.adoption-timeline h2 { font-size:1.45rem; }

/* Contact & forms — keep functional, just calmer */
.contact-grille, .contenu-deux-colonnes { gap:52px !important; }
.champ input, .champ textarea, .champ select { border-radius:2px !important; }

/* Footer */
.site-footer { margin-top:0 !important; }
.site-footer_grid { width:var(--page-w); max-width:var(--container); }

@media (max-width: 1180px) {
  .container { width:min(92vw,var(--container)); }
  .editorial-hero_grid, .hero-home_grid { grid-template-columns:1fr 1fr !important; gap:34px !important; }
  .site-header_nav { gap:10px; }
  .site-header_nav > a:not(.button), .nav-group > a { font-size:.8rem !important; }
  .button-admin { display:none; }
  .home-alert_grid { grid-template-columns:1fr 1fr !important; }
  .home-alert_actions { grid-column:1 / -1; }
  .animal-profile_top { grid-template-columns:1fr 1fr !important; }
  .visual-card-grid-3 { grid-template-columns:repeat(2,1fr); }
  .tariffs-visual-grid { grid-template-columns:1fr; }
}

@media (max-width: 900px) {
  .container, .container-small { width:min(92vw,100% - 28px); }
  .padding-section { padding:48px 0; }
  .site-header_inner { min-height:66px; }
  .nav-toggle { display:block !important; border-radius:2px !important; }
  .site-header_nav { display:none; }
  .site-header_nav.is-open { display:flex; position:absolute; left:0; right:0; top:66px; flex-direction:column; align-items:stretch; gap:0; padding:14px 4vw 24px; background:#fffdf8; border-bottom:1px solid var(--line); max-height:calc(100vh - 66px); overflow:auto; }
  .site-header_nav.is-open > a:not(.button), .site-header_nav.is-open .nav-group > a { padding:12px 0 !important; }
  .nav-group { width:100%; }
  .nav-submenu { position:static !important; display:block !important; border:0 !important; box-shadow:none !important; background:#f5f0e5 !important; padding:4px 14px !important; }
  .editorial-hero_grid, .hero-home_grid, .two-col-balanced, .donation-layout, .content-band_grid { grid-template-columns:1fr !important; }
  .editorial-hero_media, .editorial-hero_media img { max-height:380px; }
  .hero-home_visuel { max-height:420px; }
  .home-alert_grid { grid-template-columns:1fr !important; gap:24px !important; }
  .home-alert_tax { border-left:0; padding-left:0; border-top:1px solid rgba(255,255,255,.25); padding-top:20px; }
  .section-entete { align-items:flex-start; flex-direction:column; }
  .grille-animaux, .home-news-list { grid-template-columns:repeat(2,1fr); }
  .home-three-actions_grid, .home-practical_grid, .icon-text-grid, .adoption-timeline { grid-template-columns:1fr; }
  .home-three-actions_grid > a, .home-practical_grid a, .icon-text-grid article, .adoption-timeline article { border-right:0; border-bottom:1px solid var(--line); }
  .home-three-actions_grid > a:last-child, .home-practical_grid a:last-child, .icon-text-grid article:last-child, .adoption-timeline article:last-child { border-bottom:0; }
  .animal-profile_top { grid-template-columns:1fr !important; padding:18px !important; }
  .animal-profile_photo { height:430px !important; }
  .animal-profile_sections { grid-template-columns:1fr !important; }
  .animal-profile_section { border-right:0 !important; border-bottom:1px solid var(--line) !important; }
  .animal-profile_section:last-child { border-bottom:0 !important; }
  .news-row { grid-template-columns:260px 1fr; }
  .visual-card-grid-2, .visual-card-grid-3 { grid-template-columns:1fr; }
  .tariff-card { grid-template-columns:1fr; }
  .tariff-card_media { min-height:320px; }
}

@media (max-width: 640px) {
  h1 { font-size:2.35rem !important; }
  h2 { font-size:1.8rem !important; }
  .site-header_logo-image { width:44px !important; height:44px !important; }
  .site-header_logo-text { font-size:1rem; }
  .hero-home { padding-top:28px !important; }
  .hero-home_contenu h1 { font-size:2.00rem !important;margin-top: 25px; }
  .hero-home_visuel, .hero-home_visuel img { min-height:320px !important; height:320px !important; }
  .hero-animal-card { min-width:0 !important; right:14px; left:14px !important; }
  .grille-animaux, .home-news-list { grid-template-columns:1fr; }
  .carte-animal_photo { height:300px; }
  .animal-profile_photo { height:340px !important; }
  .animal-profile_specs { grid-template-columns:1fr !important; }
  .news-row { grid-template-columns:1fr; }
  .news-row_media { border-right:0; border-bottom:1px solid var(--line); }
  .news-row_media img { height:300px; }
  .visual-card { grid-template-columns:1fr; }
  .visual-card_media { min-height:250px; }
  .feature-list li { grid-template-columns:1fr; gap:4px; }
  .tax-highlight_inner { grid-template-columns:1fr; gap:12px; }
  .tax-highlight_number { font-size:3.2rem; }
  .support-material_inner { align-items:flex-start; flex-direction:column; gap:20px; }
  .button-stack { justify-content:flex-start; }
}

/* =====================================================================
   V9 — cartes animaux, fiche compacte + galerie, visuels éditoriaux
   ===================================================================== */

/* 4 animaux par ligne sur grand écran. */
.grille-animaux,
.grille-animaux-home {
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
  gap: 22px !important;
}

.carte-animal {
  position: relative;
  overflow: visible !important;
  background: #fffdf8;
  border: 1px solid rgba(23,61,49,.19) !important;
  box-shadow: 0 4px 16px rgba(24,50,41,.045) !important;
}

.carte-animal_contenu {
  padding: 24px 18px 18px !important;
}

.carte-animal_contenu h2,
.carte-animal_contenu h3,
.carte-animal_nom {
  margin: 0 0 6px !important;
  font-size: 1.05rem !important;
  line-height: 1.05 !important;
      padding-bottom: 15px;
}

/*
 * La photo originale reste entière (object-fit: contain) et le même visuel,
 * flouté en arrière-plan, remplit les éventuelles bandes latérales.
 * Résultat : aucun grand vide beige et aucune tête coupée.
 */
.carte-animal_photo-v9 {
  position: relative;
  height: 255px !important;
  aspect-ratio: auto !important;
  overflow: visible !important;
  isolation: isolate;
  background: #dcd9cf !important;
  border-bottom: 1px solid var(--line);
}

.carte-animal_photo-v9::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 0;
  background-image: var(--photo-url);
  background-size: cover;
  background-position: center 30%;
  filter: blur(14px) saturate(.8);
  opacity: .48;
  transform: scale(1.035);
}

.carte-animal_photo-v9::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 0;
  background: rgba(245,241,232,.1);
}

.carte-animal_photo-v9 > img {
  position: relative !important;
  z-index: 1;
  width: 100% !important;
  height: 100% !important;
  object-fit: contain !important;
  object-position: center !important;
  padding: 0 !important;
}

.carte-animal_badge-accroche {
  position: absolute;
  z-index: 4;
  right: 12px;
  bottom: -13px;
  margin: 0 !important;
  padding: 5px 9px !important;
  border: 1px solid rgba(23,61,49,.15);
  background: #edf5e9 !important;
  box-shadow: 0 3px 8px rgba(23,61,49,.08);
  font-size: .67rem !important;
  line-height: 1 !important;
  white-space: nowrap;
}

/* Fiche animal : ensemble resserré et galerie. */
.animal-profile-v9 { padding-bottom: 54px; }
.animal-profile_top-v9 {
  display: grid !important;
  grid-template-columns: minmax(0, .92fr) minmax(360px, .78fr) !important;
  gap: 44px !important;
  align-items: start !important;
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
}

.animal-gallery_main {
  height: 475px;
  display: grid;
  place-items: center;
  overflow: hidden;
  border: 1px solid var(--line);
  background: #e9e4d9;
}
.animal-gallery_main img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
}
.animal-gallery_main .placeholder-photo { min-height: 100%; }

.animal-gallery_thumbs {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 8px;
  margin-top: 9px;
}
.animal-gallery_thumb {
  height: 76px;
  padding: 0;
  overflow: hidden;
  border: 2px solid transparent;
  background: #ebe7dd;
  cursor: pointer;
}
.animal-gallery_thumb img { width:100%; height:100%; object-fit:cover; object-position:center; }
.animal-gallery_thumb:hover,
.animal-gallery_thumb.is-active { border-color: var(--terracotta); }

.animal-profile_identity-v9 {
  padding: 6px 0 0 !important;
  border: 0 !important;
  min-width: 0;
}
.animal-profile_titleline {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  padding-bottom: 17px;
  border-bottom: 1px solid var(--line);
}
.animal-profile_identity-v9 h1 {
  margin: 0 0 4px !important;
  font-size: clamp(2.1rem, 3.2vw, 2.15rem) !important;
  line-height: 1 !important;
}
.animal-profile_subtitle { margin: 0 !important; font-size: 1.15rem !important; }
.animal-status-tag { flex: 0 0 auto; margin-top: 5px; font-size: .95rem !important; }

.animal-profile_specs-v9 {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 0 !important;
  margin: 18px 0 22px !important;
  border: 1px solid var(--line);
  border-bottom: 0;
}
.animal-profile_specs-v9 > div {
  min-height: 62px !important;
  display: grid !important;
  grid-template-columns: minmax(85px,.8fr) minmax(0,1.2fr) !important;
  align-items: center;
  gap: 8px;
  padding: 10px 12px !important;
  border: 0 !important;
  border-bottom: 1px solid var(--line) !important;
}
.animal-profile_specs-v9 > div:nth-child(odd) { border-right: 1px solid var(--line) !important; }
.animal-profile_specs-v9 dt { margin: 0 !important; font-size: .67rem !important; }
.animal-profile_specs-v9 dd { margin: 0 !important; font-size: .80rem !important; text-align: right; }
.animal-contact-button { margin-top: 0; }

.animal-profile_sections-v9 {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 18px !important;
  margin-top: 34px !important;
}
.animal-profile_sections-v9 .animal-profile_section {
  min-height: 0 !important;
  padding: 22px !important;
  border: 1px solid var(--line) !important;
  background: #fffdf8 !important;
}
.animal-profile_sections-v9 .animal-profile_section h2 { font-size: 1.45rem !important; margin-bottom: 10px !important; }
.animal-profile_sections-v9 .animal-profile_section p:last-child { margin-bottom: 0; }

/* Les images éditoriales doivent être présentes et vivantes, pas des vignettes timides. */
.editorial-hero_media img,
.visual-card_media img,
.tariff-card_media img {
  object-fit: cover !important;
  object-position: center !important;
}
.editorial-hero_media { min-height: 390px !important; }
.visual-card_media { min-height: 255px !important; }
.tariff-card_media { min-height: 350px !important; }

/* Administration : aperçu propre de la galerie. */
.admin-galerie-existante {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: 14px;
  margin-top: 16px;
}
.admin-galerie-item {
  display: grid;
  gap: 8px;
  padding: 8px;
  border: 1px solid var(--line);
  background: #fff;
  font-size: .82rem;
}
.admin-galerie-item img {
  width: 100%;
  height: 120px;
  object-fit: cover;
}
.admin-galerie-item span { display:flex; gap:7px; align-items:flex-start; }

@media (max-width: 1180px) {
  .grille-animaux,
  .grille-animaux-home { grid-template-columns: repeat(3, minmax(0,1fr)) !important; }
}

@media (max-width: 900px) {
  .grille-animaux,
  .grille-animaux-home { grid-template-columns: repeat(2, minmax(0,1fr)) !important; }
  .animal-profile_top-v9 { grid-template-columns: 1fr !important; gap: 28px !important; }
  .animal-gallery_main { height: 430px; }
  .animal-profile_sections-v9 { grid-template-columns: 1fr !important; }
}

@media (max-width: 640px) {
  .grille-animaux,
  .grille-animaux-home { grid-template-columns: 1fr !important; }
  .carte-animal_photo-v9 { height: 310px !important; }
  .animal-gallery_main { height: 360px; }
  .animal-gallery_thumbs { grid-template-columns: repeat(4, 1fr); }
  .animal-gallery_thumb { height: 70px; }
  .animal-profile_specs-v9 { grid-template-columns: 1fr !important; }
  .animal-profile_specs-v9 > div:nth-child(odd) { border-right: 0 !important; }
  .animal-profile_titleline { flex-direction: column; }
}

/* =========================================================
   V10 — finition des fiches et cartes d'accueil
   ========================================================= */

/* 4 fiches d'animaux sur les grands écrans. */
.grille-animaux,
.grille-animaux-home {
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
  gap: 20px !important;
}
.carte-animal_photo-v9 { height: 240px !important; }
.carte-animal_contenu { padding: 30px 17px 20px !important; }
.carte-animal_nom { font-size: 1.28rem !important; }
.carte-animal_extrait { font-size: .88rem !important; }

/* Grande photo de fiche : animal toujours entier + fond discret issu de la même photo. */
.animal-gallery_main {
  position: relative;
  isolation: isolate;
  height: 500px;
  overflow: hidden;
  background: #ddd8ce;
}
.animal-gallery_main::before {
  content: '';
  position: absolute;
  inset: -20px;
  z-index: 0;
  background-image: var(--gallery-photo);
  background-size: cover;
  background-position: center;
  filter: blur(20px) saturate(.72);
  opacity: .42;
  transform: scale(1.08);
}
.animal-gallery_main::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 0;
  background: rgba(248,245,237,.18);
}
.animal-gallery_main > img {
  position: relative !important;
  z-index: 1;
  display: block !important;
  width: auto !important;
  height: auto !important;
  max-width: 100% !important;
  max-height: 100% !important;
  margin: auto !important;
  object-fit: contain !important;
  object-position: center !important;
}

/* Caractère / besoins / histoire : un bloc par ligne, sur toute la largeur. */
.animal-profile_sections-v9 {
  display: grid !important;
  grid-template-columns: 1fr !important;
  gap: 14px !important;
  border: 0 !important;
}
.animal-profile_sections-v9 .animal-profile_section {
  width: 100%;
  padding: 24px 28px !important;
  border: 1px solid var(--line) !important;
}
.animal-profile_sections-v9 .animal-profile_section h2 {
  font-size: 1.4rem !important;
}

/* Accueil : vraies cartes visuelles pour participer / adopter / rejoindre. */
.home-three-actions { padding: 46px 0 58px !important; background: var(--paper); }
.home-three-actions_grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: 22px;
  border: 0 !important;
}
.home-action-card {
  display: grid;
  grid-template-columns: 42% 58%;
  min-height: 205px;
  overflow: hidden;
  border: 1px solid var(--line) !important;
  background: #fffdf8 !important;
}
.home-action-card_media { min-height: 205px; overflow: hidden; background: #e8e3d9; }
.home-action-card_media img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.home-action-card_body { padding: 22px 24px; display: flex; flex-direction: column; justify-content: center; }
.home-action-card_body h2 { margin: 3px 0 8px; font-size: 1.36rem !important; }
.home-action-card_body p:not(.eyebrow) { margin-bottom: 14px; color: var(--muted); font-size: .9rem; }
.home-action-card_body > span { color: #d95d34; font-size: .88rem; font-weight: 850; }

/* Accueil : infos pratiques avec petite photo et lien explicite. */
.home-practical_grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: 22px;
  border: 0 !important;
}
.home-practical-card {
  display: grid !important;
  grid-template-columns: 130px minmax(0,1fr) !important;
  min-height: 150px !important;
  padding: 0 !important;
  overflow: hidden;
  border: 1px solid var(--line) !important;
  background: #fffdf8 !important;
}
.home-practical-card_media { min-height: 150px; background: #e8e3d9; overflow: hidden; }
.home-practical-card_media img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.home-practical-card_body { display: flex; flex-direction: column; justify-content: center; gap: 5px; padding: 18px 20px; }
.home-practical-card_body strong { font-size: 1.12rem !important; }
.home-practical-card_body span { font-size: .84rem !important; }
.home-practical-card_body b { margin-top: 9px; color: var(--forest); font-size: .82rem; }

@media (max-width: 1320px) {
  .grille-animaux,
  .grille-animaux-home { grid-template-columns: repeat(3, minmax(0,1fr)) !important; }
  .home-action-card { grid-template-columns: 1fr; }
  .home-action-card_media { min-height: 170px; height: 170px; }
}

@media (max-width: 980px) {
  .grille-animaux,
  .grille-animaux-home { grid-template-columns: repeat(2, minmax(0,1fr)) !important; }
  .home-three-actions_grid,
  .home-practical_grid { grid-template-columns: 1fr !important; }
  .home-action-card { grid-template-columns: 220px 1fr; }
  .home-action-card_media { height: auto; min-height: 180px; }
  .home-practical-card { grid-template-columns: 180px 1fr !important; }
  .animal-gallery_main { height: 440px; }
}

@media (max-width: 640px) {
  .grille-animaux,
  .grille-animaux-home { grid-template-columns: 1fr !important; }
  .home-action-card,
  .home-practical-card { grid-template-columns: 1fr !important; }
  .home-action-card_media,
  .home-practical-card_media { height: 190px; min-height: 190px; }
  .animal-gallery_main { height: 360px; }
  .animal-profile_sections-v9 .animal-profile_section { padding: 20px !important; }
}


/* =========================================================
   V10.1 — correctifs fiche animal + cartes icônes accueil
   ========================================================= */

/* Fiche animal : grande photo vraiment entière et centrée. */
.animal-gallery_main {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 14px !important;
}
.animal-gallery_main > img {
  display: block !important;
  width: auto !important;
  height: auto !important;
  max-width: calc(100% - 28px) !important;
  max-height: calc(100% - 28px) !important;
  margin: 0 auto !important;
  flex: 0 0 auto !important;
}

/* Accueil : remplacer les photos des 3 cartes par des icônes en haut. */
.home-action-card--icon {
  display: block !important;
  min-height: 0 !important;
  padding: 24px 24px 22px !important;
}
.home-action-card--icon .home-action-card_media {
  display: none !important;
}
.home-action-card--icon .home-action-card_body {
  display: block !important;
  padding: 0 !important;
}
.home-action-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  margin-bottom: 14px;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: #f3ecdd;
  font-size: 1.4rem;
  line-height: 1;
  font-size: 1.88rem !important;
}
.home-action-card--icon .eyebrow {
  margin-bottom: 8px !important;
}
.home-action-card--icon h2 {
  margin-top: 0 !important;
}

@media (max-width: 980px) {
  .home-action-card--icon {
    padding: 22px 20px !important;
  }
}




/* =========================================================
   V10.4 — visionneuse photo plein écran
   ========================================================= */
.animal-gallery_main-button {
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  height:100%;
  padding:0;
  border:0;
  background:transparent;
  cursor:zoom-in;
  position:relative;
  z-index:1;
}
.animal-gallery_main-button > img {
  display:block !important;
  width:auto !important;
  height:auto !important;
  max-width:calc(100% - 28px) !important;
  max-height:calc(100% - 28px) !important;
  margin:auto !important;
  object-fit:contain !important;
  object-position:center !important;
}
.animal-gallery_zoom-hint {
  position:absolute;
  right:14px;
  bottom:14px;
  z-index:2;
  border:1px solid rgba(23,61,49,.18);
  background:rgba(255,253,248,.94);
  color:var(--forest);
  padding:8px 12px;
  font-size:.82rem;
  font-weight:800;
  cursor:pointer;
  display: none;
}
body.lightbox-open { overflow:hidden; }
.animal-lightbox[hidden] { display:none !important; }
.animal-lightbox {
  position:fixed;
  inset:0;
  z-index:3000;
  display:flex;
  align-items:stretch;
  justify-content:stretch;
}
.animal-lightbox_backdrop {
  position:absolute;
  inset:0;
  background:rgba(5,8,7,.94);
}
.animal-lightbox_viewer {
  position:relative;
  z-index:1;
  width:100%;
  height:100%;
  display:grid;
  grid-template-rows:auto 1fr auto;
  padding:18px 22px 14px;
}
.animal-lightbox_close {
  position:absolute;
  top:18px;
  right:22px;
  z-index:5;
  width:46px;
  height:46px;
  border:1px solid rgba(255,255,255,.25);
  background:rgba(0,0,0,.35);
  color:#fff;
  font-size:2rem;
  line-height:1;
  cursor:pointer;
}
.animal-lightbox_controls {
  display:flex;
  justify-content:center;
  gap:8px;
  min-height:46px;
  padding-right:64px;
}
.animal-lightbox_controls button {
  min-width:48px;
  height:42px;
  padding:0 14px;
  border:1px solid rgba(255,255,255,.22);
  background:rgba(0,0,0,.32);
  color:#fff;
  font-weight:800;
  cursor:pointer;
}
.animal-lightbox_stage {
  min-height:0;
  display:grid;
  grid-template-columns:64px minmax(0,1fr) 64px;
  align-items:center;
  gap:12px;
}
.animal-lightbox_canvas {
  width:100%;
  height:100%;
  min-height:0;
  overflow:hidden;
  display:flex;
  align-items:center;
  justify-content:center;
  cursor:default;
  user-select:none;
}
.animal-lightbox_canvas.is-dragging { cursor:grabbing; }
.animal-lightbox_image {
  display:block;
  max-width:92%;
  max-height:78vh;
  width:auto;
  height:auto;
  object-fit:contain;
  transform:translate(0,0) scale(1);
  transform-origin:center center;
  transition:transform .12s ease-out;
  user-select:none;
  -webkit-user-drag:none;
}
.animal-lightbox_image.is-zoomed { cursor:grab; }
.animal-lightbox_nav {
  width:58px;
  height:72px;
  border:0;
  background:rgba(0,0,0,.28);
  color:#fff;
  font-size:3rem;
  line-height:1;
  cursor:pointer;
}
.animal-lightbox_nav:hover,
.animal-lightbox_controls button:hover,
.animal-lightbox_close:hover { background:rgba(255,255,255,.14); }
.animal-lightbox_thumbs {
  display:flex;
  justify-content:center;
  gap:8px;
  overflow-x:auto;
  padding:10px 0 0;
}
.animal-lightbox_thumb {
  flex:0 0 74px;
  height:58px;
  padding:0;
  border:2px solid transparent;
  background:#222;
  overflow:hidden;
  cursor:pointer;
  opacity:.7;
}
.animal-lightbox_thumb img {
  width:100%;
  height:100%;
  object-fit:cover;
}
.animal-lightbox_thumb.is-active {
  border-color:#fff;
  opacity:1;
}
@media (max-width:760px) {
  .animal-lightbox_viewer { padding:10px 8px 8px; }
  .animal-lightbox_close { top:10px; right:10px; width:42px; height:42px; }
  .animal-lightbox_controls { padding-right:50px; }
  .animal-lightbox_stage { grid-template-columns:42px minmax(0,1fr) 42px; gap:4px; }
  .animal-lightbox_nav { width:40px; height:58px; font-size:2.2rem; }
  .animal-lightbox_image { max-width:96%; max-height:74vh; }
  .animal-lightbox_thumb { flex-basis:62px; height:50px; }
}


/* =========================================================
   V10.5 — visionneuse photo simple et isolée
   ========================================================= */
.photo-viewer[hidden] { display: none !important; }
body.photo-viewer-open { overflow: hidden !important; }
.photo-viewer {
  position: fixed !important;
  inset: 0 !important;
  z-index: 2147483000 !important;
  display: grid !important;
  grid-template-rows: 64px minmax(0,1fr) auto !important;
  width: 100vw !important;
  height: 100vh !important;
  margin: 0 !important;
  padding: 0 !important;
  background: rgba(0,0,0,.96) !important;
  color: #fff !important;
}
.photo-viewer__bar {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  position: relative !important;
  padding: 10px 72px !important;
  background: rgba(0,0,0,.96) !important;
}
.photo-viewer__zoom { display: flex !important; gap: 8px !important; }
.photo-viewer__zoom button,
.photo-viewer__close {
  border: 1px solid rgba(255,255,255,.35) !important;
  background: rgba(255,255,255,.08) !important;
  color: #fff !important;
  height: 42px !important;
  min-width: 48px !important;
  padding: 0 14px !important;
  font: inherit !important;
  font-weight: 700 !important;
  cursor: pointer !important;
}
.photo-viewer__close {
  position: absolute !important;
  right: 18px !important;
  top: 10px !important;
  width: 44px !important;
  min-width: 44px !important;
  padding: 0 !important;
  font-size: 28px !important;
}
.photo-viewer__stage {
  min-height: 0 !important;
  display: grid !important;
  
  align-items: center !important;
  gap: 8px !important;
  padding: 4px 14px 8px !important;
}
.photo-viewer__canvas {
  min-width: 0 !important;
  min-height: 0 !important;
  width: 100% !important;
  height: 100% !important;
  overflow: hidden !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: transparent !important;
  cursor: zoom-in !important;
}
.photo-viewer__canvas.is-zoomed { cursor: grab !important; }
.photo-viewer__canvas.is-dragging { cursor: grabbing !important; }
.photo-viewer__image {
  display: block !important;
  width: auto !important;
  height: auto !important;
  max-width: min(88vw, 1500px) !important;
  max-height: calc(100vh - 160px) !important;
  object-fit: contain !important;
  transform: translate3d(0,0,0) scale(1);
  transform-origin: center center !important;
  user-select: none !important;
  -webkit-user-drag: none !important;
  box-shadow: 0 12px 48px rgba(0,0,0,.45) !important;
}
.photo-viewer__nav {
  width: 56px !important;
  height: 74px !important;
  padding: 0 !important;
  border: 0 !important;
  background: rgba(255,255,255,.08) !important;
  color: #fff !important;
  font-size: 44px !important;
  line-height: 1 !important;
  cursor: pointer !important;
}
.photo-viewer__thumbs {
  display: flex !important;
  justify-content: center !important;
  gap: 8px !important;
  min-height: 0 !important;
  max-height: 82px !important;
  overflow-x: auto !important;
  padding: 8px 16px 12px !important;
  background: rgba(0,0,0,.96) !important;
}
.photo-viewer__thumbs[hidden] { display: none !important; }
.photo-viewer__thumb {
  flex: 0 0 72px !important;
  width: 72px !important;
  height: 56px !important;
  padding: 0 !important;
  border: 2px solid transparent !important;
  background: #222 !important;
  opacity: .72 !important;
  overflow: hidden !important;
  cursor: pointer !important;
}
.photo-viewer__thumb img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
}
.photo-viewer__thumb.is-active {
  border-color: #fff !important;
  opacity: 1 !important;
}
@media (max-width: 700px) {
  .photo-viewer { grid-template-rows: 58px minmax(0,1fr) auto !important; }
  .photo-viewer__bar { padding: 8px 58px !important; }
  .photo-viewer__close { right: 8px !important; top: 8px !important; }
  .photo-viewer__stage { grid-template-columns: 40px minmax(0,1fr) 40px !important; padding: 2px 4px 6px !important; }
  .photo-viewer__nav { width: 38px !important; height: 58px !important; font-size: 34px !important; }
  .photo-viewer__image { max-width: 94vw !important; max-height: calc(100vh - 145px) !important; }
}
