/* AS Bois Jardins — feuille de style
   Police Jost ; palettes claire (paysagisme, merci) et sombre (élagage) : voir :root */
/* Polices hébergées sur le site (SIL Open Font License, voir assets/fonts/OFL-*.txt) — sous-ensemble latin */
@font-face { font-family: "Jost"; font-style: normal; font-weight: 300 400; font-display: swap; src: url("fonts/jost-latin.woff2") format("woff2"); }
@font-face { font-family: "Instrument Serif"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/instrument-serif-latin.woff2") format("woff2"); }

:root {
  --calcaire: #efeee8;
  --encre: #1c231d;
  --olivier: #56642c;
  --pin: #183c31;
  --blanc: #ffffff;

    /* Variantes « pages métier », toutes deux claires et teintées (voir CLAUDE.md) */
  /* Paysagisme et merci : terres du Sud (ocre, terre cuite) */
  --pc-fond: #FFFDFA;
  --pc-alt: #FFFDFA;
  --pc-teinte: #FAF0E8;
  --pc-texte: #3A2618;
  --pc-accent: #9A421D;
  --pc-filet: #EAD3C5;
  /* Élagage : vert du Sud (olivier, sauge) */
  --el-fond: #FDFDFB;
  --el-alt: #FDFDFB;
  --el-teinte: #EEF2E8;
  --el-texte: #1F2A1C;
  --el-accent: #46612C;
  --el-filet: #CFDAC2;

  --accent: var(--olivier);

  --f: "Jost", "Helvetica Neue", Arial, sans-serif;
  --f-titre: "Instrument Serif", Georgia, "Times New Roman", serif;
  --mesure: 64ch;
}
.p-elagage { --accent: var(--pin); }

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0; font-family: var(--f); font-size: 1.0625rem; line-height: 1.6;
  color: var(--encre); background: var(--calcaire);
}
img, video { display: block; max-width: 100%; }
a { color: inherit; }
:focus-visible { outline: 3px solid var(--accent); outline-offset: 3px; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip { position: absolute; left: -999px; top: .5rem; background: var(--encre); color: var(--blanc); padding: .6rem 1rem; z-index: 50; }
.skip:focus { left: .5rem; }

/* ---------- Titres ---------- */
h1, h2, h3 { margin: 0; line-height: 1.05; font-weight: 800; letter-spacing: -0.01em; }
h1 { font-size: clamp(2.6rem, 7vw, 5.4rem); }
h2 { font-size: clamp(1.8rem, 3.6vw, 2.8rem); }
h3 { font-size: 1.15rem; font-weight: 700; line-height: 1.25; }
p { margin: 0 0 1em; max-width: var(--mesure); }

/* =========================================================
   ACCUEIL — vidéo drone plein écran, deux services au centre
   ========================================================= */
.page-ecran { background: #0d110e; color: var(--blanc); font-family: "Jost", var(--f); font-weight: 400; }
.page-ecran a { color: var(--blanc); text-decoration: none; }
.page-ecran a:focus-visible { outline: 1px solid var(--blanc); outline-offset: 6px; }

.ecran__fond { position: fixed; inset: 0; z-index: 0; overflow: hidden; }
.ecran__fond img, .ecran__fond video {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  object-position: 60% 50%; /* garde le grimpeur dans le cadre */
}
/* Voile uniforme ~40 % : lisibilité et netteté atténuée */
/* La vidéo n'apparaît qu'une fois lancée (grand écran) ; l'image reste dessous */
.ecran__fond video { opacity: 0; transition: opacity .6s; }
.ecran__fond video.lecture { opacity: 1; }
/* Sous 800 px : image fixe portrait, grimpeur dans la moitié haute ; les services descendent
   dans le tiers bas, sur un dégradé sombre, pour ne jamais le cacher */
/* Voile sombre léger en dégradé ; sous 800 px, le dégradé du mobile (plus bas) le remplace */
.ecran__fond::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to bottom, rgba(0,0,0,.38) 0%, rgba(0,0,0,.22) 28%, rgba(0,0,0,.34) 55%, rgba(0,0,0,.55) 100%); }
@media (max-width: 799px) {
  .ecran__fond img { object-position: 50% 0%; }
  .ecran__fond video { object-position: 50% 50%; }
  .ecran__fond::after {
    background: linear-gradient(to bottom, rgba(0,0,0,.35) 0%, rgba(0,0,0,0) 20%, rgba(0,0,0,0) 48%, rgba(0,0,0,.5) 64%, rgba(0,0,0,.82) 100%);
  }
}

.ecran { position: relative; z-index: 1; min-height: 100svh; display: flex; align-items: center; justify-content: center; padding: 6rem 1.25rem 3rem; }
.services { display: flex; align-items: stretch; }
.service {
  display: flex; flex-direction: column; align-items: center; text-align: center;
  padding: 1rem clamp(2rem, 5vw, 4.5rem); transition: opacity .5s;
}
.service + .service { border-left: 1px solid rgba(255,255,255,.5); }
.service__mot { font-size: clamp(2.8rem, 5vw, 4.75rem); font-weight: 300; line-height: 1.05; letter-spacing: .005em; white-space: nowrap; }
.service__ligne { margin-top: .6rem; font-size: .85rem; opacity: .85; white-space: nowrap; }
.service__cta { margin-top: 1rem; font-size: .85rem; opacity: 0; transform: translateY(4px); transition: opacity .5s, transform .5s; }

/* Survol / focus : l'autre service s'efface à 40 %, « Découvrir » apparaît */
.services:hover .service:not(:hover),
.services:has(.service:focus-visible) .service:not(:focus-visible) { opacity: .4; }
.service:hover .service__cta, .service:focus-visible .service__cta { opacity: .9; transform: none; }
@media (hover: none) { .service__cta { opacity: .75; transform: none; } }
/* Deux activités posées sur la vidéo, sans fond : noms longs sur deux lignes au plus, même taille,
   alignés en haut ; filet vertical fin et translucide entre les deux ; trait court à la couleur du métier */
.service--paysager { --acc: var(--pc-accent); }
.service--elagage { --acc: var(--el-accent); }
.services:has(.service--paysager) { align-items: stretch; }
.service--paysager, .service--elagage { justify-content: flex-start; width: min(30rem, 42vw); padding-inline: clamp(1.25rem, 2.5vw, 2.75rem); }
.service + .service.service--elagage { border-left: 1px solid rgba(255,255,255,.35); }
.service--paysager .service__mot, .service--elagage .service__mot {
  white-space: normal; text-wrap: balance; font-size: clamp(1.9rem, 2.8vw, 3rem); line-height: 1.08; min-height: 2.16em;
  display: flex; align-items: flex-end; justify-content: center; text-shadow: 0 1px 18px rgba(0,0,0,.35);
}
.service--paysager .service__ligne::before, .service--elagage .service__ligne::before {
  content: ""; display: block; width: 2.75rem; height: 3px; margin: .15rem auto .75rem; border-radius: 2px; background: var(--acc);
  box-shadow: 0 0 0 1px rgba(255,255,255,.18);
}

@media (prefers-reduced-motion: reduce) {
  .ecran__fond video { display: none; }
}
/* Ordinateur : noms en Instrument Serif, numéro 01 / 02, trait de couleur marqué */
.service__num { display: block; margin-bottom: .6rem; font-size: .9rem; letter-spacing: .12em; opacity: .9; }
@media (min-width: 701px) {
  .service--paysager .service__mot, .service--elagage .service__mot { font-family: var(--f-titre); font-weight: 400; font-size: clamp(2.4rem, 3.6vw, 3.6rem); letter-spacing: 0; line-height: 1; }
  .service--paysager .service__ligne::before, .service--elagage .service__ligne::before { width: 5rem; height: 4px; margin: .9rem auto .8rem; box-shadow: none; }
  /* « Découvrir → » visible dès l'arrivée en pilule fine, rempli de blanc au survol (le survol qui atténue l'autre activité est conservé) */
  .service { cursor: pointer; }
  .service .service__cta { opacity: 1; transform: none; display: inline-block; margin-top: 1.1rem; padding: .45rem 1.1rem; border: 1px solid rgba(255,255,255,.55); border-radius: 999px; transition: background .3s, border-color .3s, color .3s; }
  .service .service__cta::after { content: " →"; }
  .service:hover .service__cta, .service:focus-visible .service__cta { opacity: 1; background: #fff; color: #1c231d; border-color: #fff; }
}
/* Mobile : deux cartes translucides discrètes, faciles à toucher */
@media (max-width: 700px) {
  .service__num { display: none; }
  .services { gap: .7rem; width: 100%; }
  .service.service--paysager, .service.service--elagage {
    width: 100%; display: grid; grid-template-columns: 1fr auto; grid-template-areas: "mot fl" "ligne fl"; align-items: center; text-align: left;
    padding: 1rem 1.1rem; border: 1px solid rgba(255,255,255,.28); border-left: 4px solid var(--acc); border-radius: 18px;
    background: rgba(20,22,18,.22); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  }
  .service + .service.service--elagage { border-top: 1px solid rgba(255,255,255,.28); border-left: 4px solid var(--acc); }
  .service--paysager .service__mot, .service--elagage .service__mot { grid-area: mot; justify-content: flex-start; text-align: left; font-size: 1.55rem; }
  .service--paysager .service__ligne, .service--elagage .service__ligne { grid-area: ligne; margin-top: .25rem; font-size: .85rem; }
  .service--paysager .service__ligne::before, .service--elagage .service__ligne::before { display: none; }
  .service--paysager .service__cta, .service--elagage .service__cta { grid-area: fl; margin: 0 0 0 .8rem; width: 2.4rem; height: 2.4rem; border-radius: 50%; background: rgba(255,255,255,.16); font-size: 0; opacity: 1; transform: none; }
  .service--paysager .service__cta::after, .service--elagage .service__cta::after { content: "→"; display: grid; place-items: center; height: 100%; font-size: 1.15rem; }
}

/* Mention du lieu, en bas au centre */
.ecran__lieu {
  position: absolute; left: 0; right: 0; bottom: 1.5rem; margin: 0 auto; padding: 0 1.25rem;
  max-width: none; text-align: center; font-size: .8rem; font-weight: 400; letter-spacing: .02em; opacity: .85;
}

/* ---------- Fenêtre « Demander un devis » (dialog natif), verre dépoli ---------- */
.devis {
  width: min(36rem, calc(100% - 2rem)); max-height: calc(100dvh - 2rem); padding: 0; border-radius: 2px;
  color: var(--blanc); font-family: "Jost", var(--f); font-weight: 400;
  background: rgba(255,255,255,.14);
  -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px);
  border: 1px solid rgba(255,255,255,.25);
  box-shadow: 0 24px 60px rgba(0,0,0,.3);
  color-scheme: dark; /* listes déroulantes et contrôles natifs en sombre */
}
/* Sans backdrop-filter : fond sombre opaque pour garder la lisibilité */
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .devis { background: rgba(12,16,13,.75); }
}
.devis::backdrop { background: rgba(0,0,0,.25); }
html.devis-ouvert { overflow: hidden; }
.devis__cadre { position: relative; padding: 2.4rem clamp(1.25rem, 4vw, 2.5rem) 2rem; text-shadow: 0 1px 2px rgba(0,0,0,.25); }
.page-ecran .devis a { color: var(--blanc); text-decoration: underline; text-underline-offset: .2em; }
.devis :focus-visible { outline: 2px solid var(--blanc); outline-offset: 2px; }
.devis__fermer {
  position: absolute; top: .8rem; right: .8rem; width: 2.5rem; height: 2.5rem; display: grid; place-items: center;
  background: none; border: 0; color: var(--blanc); cursor: pointer; border-radius: 2px;
}
.devis__fermer svg { width: 1.3rem; height: 1.3rem; }
.devis__fermer:hover { background: rgba(255,255,255,.12); }
.devis__titre { font-family: inherit; font-size: 1.9rem; font-weight: 300; letter-spacing: 0; line-height: 1.1; padding-right: 2.5rem; }
.devis__appel { margin: .6rem 0 1.6rem; font-size: .95rem; opacity: .9; }
.devis__appel a, .devis__retour a { white-space: nowrap; }
.devis__form { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.devis__champ { display: flex; flex-direction: column; gap: .3rem; }
.devis__champ--large { grid-column: 1 / -1; }
.devis__champ label { font-size: .85rem; opacity: .9; }
.devis__champ input, .devis__champ select, .devis__champ textarea {
  font: inherit; font-size: 1rem; color: var(--blanc); background: rgba(255,255,255,.1);
  border: 1px solid rgba(255,255,255,.4); border-radius: 2px; padding: .65rem .75rem; width: 100%;
}
.devis__champ ::placeholder { color: rgba(255,255,255,.6); opacity: 1; }
.devis__champ option { color: var(--blanc); background: #1c231d; }
/* Champs préremplis par le navigateur : pas de fond blanc opaque */
.devis__champ input:-webkit-autofill {
  -webkit-text-fill-color: var(--blanc); caret-color: var(--blanc);
  box-shadow: inset 0 0 0 100px rgba(40,46,42,.9); transition: background-color 9999s;
}
.devis__champ textarea { min-height: 7rem; resize: vertical; }
/* Demande de devis en étapes */
.devis__form fieldset { margin: 0; padding: 0; border: 0; min-width: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; grid-column: 1 / -1; }
.devis__form fieldset[hidden] { display: none; }
.devis__form:not(.en-etapes) fieldset + fieldset { margin-top: 1.6rem; }
.devis__form:not(.en-etapes) .devis__suivant, .devis__form:not(.en-etapes) .devis__precedent, .devis__form:not(.en-etapes) .devis__progression, .devis__form:not(.en-etapes) .devis__etape-compte { display: none; }
.devis__progression { grid-column: 1 / -1; height: 3px; background: color-mix(in srgb, currentColor 18%, transparent); }
.devis__progression-barre { display: block; height: 100%; width: 50%; background: currentColor; transition: width .4s; }
.devis__etape-titre { grid-column: 1 / -1; display: flex; align-items: baseline; gap: .6rem; width: 100%; padding: 0; font-size: 1.15rem; }
.devis__etape-num { display: inline-grid; place-items: center; width: 1.7rem; height: 1.7rem; border: 1px solid currentColor; border-radius: 50%; font-size: .9rem; }
.devis__etape-compte { margin-left: auto; font-size: .8rem; opacity: .75; }
.devis__services { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; }
.devis__carte { position: relative; display: flex; flex-direction: column; gap: .3rem; padding: 1.1rem 1.1rem 1rem; cursor: pointer;
  border: 1px solid color-mix(in srgb, currentColor 35%, transparent); background: color-mix(in srgb, currentColor 4%, transparent); transition: border-color .2s, background .2s; }
.devis__carte input { position: absolute; opacity: 0; pointer-events: none; }
.devis__carte-nom { font-size: 1.45rem; font-weight: 300; line-height: 1.1; }
.devis__carte-detail { font-size: .85rem; opacity: .8; }
.devis__carte:hover { border-color: currentColor; }
.devis__carte:has(input:checked) { border: 2px solid currentColor; padding: calc(1.1rem - 1px) calc(1.1rem - 1px) calc(1rem - 1px); background: color-mix(in srgb, currentColor 10%, transparent); }
.devis__carte:has(input:checked) .devis__carte-nom::after { content: " ✓"; font-size: 1rem; }
.devis__carte:has(input:focus-visible) { outline: 2px solid currentColor; outline-offset: 2px; }
.devis__autre { grid-column: 1 / -1; font-size: .9rem; display: flex; align-items: center; gap: .45rem; cursor: pointer; margin-top: -.4rem; }
.devis__autre input { accent-color: currentColor; }
.devis__prestations[hidden] { display: none; }
.devis__libelle { font-size: .85rem; opacity: .9; }
.devis__facultatif { opacity: .8; }
.devis__puces { display: flex; flex-wrap: wrap; gap: .45rem; }
.devis__puce { position: relative; font-size: .9rem; border: 1px solid color-mix(in srgb, currentColor 40%, transparent); border-radius: 999px; padding: .4rem .85rem; cursor: pointer; }
.devis__puce input { position: absolute; opacity: 0; pointer-events: none; }
.devis__puce[hidden] { display: none; }
.devis__puce:has(input:checked) { background: #fff; color: #1c231d; border-color: #fff; text-shadow: none; }
.page-edito .devis__puce:has(input:checked) { background: var(--p-texte); color: var(--p-fond); border-color: var(--p-texte); }
.devis__puce:has(input:focus-visible) { outline: 2px solid currentColor; outline-offset: 2px; }
.devis__suivant, .devis__precedent { font: inherit; font-size: .95rem; cursor: pointer; padding: .8rem 1.5rem; border-radius: 2px; }
.devis__suivant { grid-column: 1 / -1; justify-self: start; background: var(--blanc); color: var(--encre); border: 1px solid var(--blanc); }
.devis__precedent { background: transparent; color: inherit; border: 1px solid color-mix(in srgb, currentColor 45%, transparent); }
.devis__actions { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: .75rem; }
.page-edito .devis__suivant { background: var(--p-texte); color: var(--p-fond); border-color: var(--p-texte); }
.devis__envoyer {
  justify-self: start; font: inherit; font-size: .95rem; cursor: pointer; text-shadow: none;
  background: var(--blanc); color: var(--encre); border: 1px solid var(--blanc); border-radius: 2px; padding: .8rem 1.5rem;
  transition: background .3s;
}
.devis__envoyer:hover { background: rgba(255,255,255,.85); }
.devis__envoyer:disabled { opacity: .6; cursor: progress; }
.devis__mention { grid-column: 1 / -1; font-size: .78rem; opacity: .85; }
.devis__retour:empty { display: none; }
.devis__retour { font-size: 1.05rem; line-height: 1.5; }
.devis__retour--erreur { margin-top: 1rem; padding: .8rem 1rem; border-left: 2px solid #ff9e8f; background: rgba(120,24,12,.45); font-size: .95rem; }
.devis.envoye .devis__form, .devis.envoye .devis__appel { display: none; }

/* Sous 800 px : services dans le tiers bas (après la règle de base de .ecran) */
@media (max-width: 799px) {
  .ecran { align-items: flex-end; padding: 6rem 1.25rem calc(8rem + env(safe-area-inset-bottom)); }
}
@media (max-width: 700px) {
  .services { flex-direction: column; align-items: center; }
  .service { padding: .85rem 1rem; }
  .service + .service { border-left: 0; border-top: 1px solid rgba(255,255,255,.5); }
  .service__mot { font-size: clamp(2.2rem, 10vw, 2.8rem); }
  .service--paysager, .service--elagage { width: min(22rem, 100%); }
  .service--paysager .service__mot, .service--elagage .service__mot { font-size: clamp(1.75rem, 7.6vw, 2.15rem); min-height: 0; }
  .service--paysager .service__ligne::before, .service--elagage .service__ligne::before { margin: .1rem auto .5rem; }
  .service__ligne { margin-top: .35rem; }
  .service__cta { margin-top: .45rem; }
  .ecran__lieu { bottom: calc(4.4rem + env(safe-area-inset-bottom)); font-size: .78rem; line-height: 1.45; }
  /* Fenêtre devis plein écran sur mobile */
  .devis { width: 100%; height: 100%; max-width: none; max-height: none; margin: 0; border: 0; border-radius: 0; }
  .devis__form { grid-template-columns: 1fr; }
  .devis__form fieldset { grid-template-columns: 1fr; }
}

/* Mouvement réduit : pas de transitions */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; scroll-behavior: auto !important; }
}

/* =========================================================
   PAGES MÉTIER ÉDITORIALES — sobres, épurées, aérées (Jost)
   .page-edito--terre : paysagisme.html, merci.html / .page-edito--olive : elagage.html
   Les couleurs passent par --p-* ; chaque variante les définit.
   ========================================================= */
.page-edito--terre { --p-fond: var(--pc-fond); --p-alt: var(--pc-alt); --p-texte: var(--pc-texte); --p-accent: var(--pc-accent); --p-filet: var(--pc-filet); --p-teinte: var(--pc-teinte); --p-plein-survol: #000; --p-voile: 58,38,24; }
.page-edito--olive { --p-fond: var(--el-fond); --p-alt: var(--el-alt); --p-texte: var(--el-texte); --p-accent: var(--el-accent); --p-filet: var(--el-filet); --p-teinte: var(--el-teinte); --p-plein-survol: #000; --p-voile: 31,42,28; }
.page-edito {
  --marge-pc: clamp(1.25rem, 5vw, 4.5rem);
  background: var(--p-fond); color: var(--p-texte);
  font-family: "Jost", var(--f); font-weight: 400;
}
.page-edito h1, .page-edito h2, .page-edito h3 { font-family: inherit; letter-spacing: 0; }
.page-edito :focus-visible { outline: 2px solid var(--p-texte); outline-offset: 3px; }
.page-edito a { color: inherit; }
.page-edito p { max-width: none; }

/* Boutons */
.bouton {
  display: inline-block; padding: .8rem 1.5rem; font: inherit; font-size: .95rem; line-height: 1.2;
  text-decoration: none; border: 1px solid currentColor; border-radius: 0; cursor: pointer;
  transition: background .3s, color .3s, border-color .3s;
}
.bouton--plein { background: var(--p-texte); border-color: var(--p-texte); color: var(--p-fond) !important; }
.bouton--plein:hover { background: var(--p-plein-survol); border-color: var(--p-plein-survol); }

/* =========================================================
   EN-TÊTE COMMUN (accueil, pages métier, merci)
   Nom à gauche, liens des deux métiers au centre, téléphone et
   bouton devis plein (accent de la page) à droite.
   ========================================================= */
.page-ecran { --marge-pc: clamp(1.25rem, 5vw, 4.5rem); --p-bouton-fond: #fff; --p-bouton-texte: #1c231d; --p-bouton-survol: #e6e3dc; }
/* Boutons devis neutres : couleur du texte de la page, texte en couleur de fond (l'accent ne sert qu'aux détails) */
.page-edito { --p-bouton-fond: var(--p-texte); --p-bouton-texte: var(--p-fond); --p-bouton-survol: #000; }
html:has(.page-edito) { scroll-padding-top: 8.5rem; }
.bandeau-tete {
  position: fixed; z-index: 20; top: 0; left: 0; right: 0;
  display: grid; grid-template-columns: 1fr auto 1fr; grid-template-areas: "nom nav actions"; align-items: center; gap: 1rem 2rem;
  padding: 1.5rem var(--marge-pc); color: #fff;
  transition: background .4s, color .4s, padding .4s, border-color .4s;
  border-bottom: 1px solid transparent;
}
.bandeau-tete a { color: inherit; }
.bandeau-tete__nom { grid-area: nom; justify-self: start; font-size: 1.45rem; font-weight: 400; line-height: 1.1; text-decoration: none; letter-spacing: .005em; white-space: nowrap; }
/* Logo du client (image détourée) avec un fin contour blanc, lisible sur la vidéo et les photos */
.bandeau-tete__nom { display: block; line-height: 0; }
.logo-tete { display: block; height: 5.6rem; width: auto; max-width: none; filter: drop-shadow(0 0 1px #fff) drop-shadow(0 0 1px #fff) drop-shadow(0 0 2px #fff); }
.bandeau-tete__nav { grid-area: nav; display: flex; gap: 2.2rem; }
.bandeau-tete__nav a { font-size: 1rem; text-decoration: none; padding: .3rem 0; text-underline-offset: .45em; text-decoration-thickness: 1px; }
.bandeau-tete__nav a:hover, .bandeau-tete__nav a[aria-current="page"] { text-decoration: underline; }
.bandeau-tete__actions { grid-area: actions; justify-self: end; display: flex; align-items: center; gap: 1.5rem; }
.bandeau-tete__tel { font-size: .98rem; text-decoration: none; white-space: nowrap; }
.bandeau-tete__tel:hover { text-decoration: underline; text-underline-offset: .25em; }
.bandeau-tete__devis {
  display: inline-block; padding: .8rem 1.4rem; font-size: .98rem; line-height: 1.2; white-space: nowrap; text-decoration: none;
  background: var(--p-bouton-fond); color: var(--p-bouton-texte) !important; transition: background .25s;
}
.bandeau-tete__devis:hover { background: var(--p-bouton-survol); }
.bandeau-tete.est-plein, html:not(.js) .page-edito .bandeau-tete {
  background: var(--p-fond); color: var(--p-texte); padding-top: 1rem; padding-bottom: 1rem; border-bottom-color: var(--p-filet);
}
.bandeau-tete :focus-visible, .ouverture :focus-visible { outline-color: #fff; }
.bandeau-tete.est-plein :focus-visible, html:not(.js) .page-edito .bandeau-tete :focus-visible { outline-color: var(--p-texte); }
/* Interrupteur Élagage / Paysagisme : mobile uniquement, dans l'en-tête fixe (toujours visible) */
/* Ordinateur : même pilule, centrée dans l'en-tête, à la place des liens */
.page-edito .bandeau-tete:has(.interrupteur) .bandeau-tete__nav { display: none; }
.interrupteur {
  grid-area: nav; justify-self: center; display: grid; grid-template-columns: 1fr 1fr; padding: 4px; border-radius: 999px;
  background: color-mix(in srgb, currentColor 12%, transparent); border: 1px solid color-mix(in srgb, currentColor 28%, transparent);
}
.interrupteur__option { padding: .5rem 1.4rem; border-radius: 999px; font-size: 1rem; line-height: 1.2; text-align: center; text-decoration: none; white-space: nowrap; transition: background .25s, color .25s; }
.interrupteur__option:not([aria-current]):hover { background: color-mix(in srgb, currentColor 12%, transparent); }
.interrupteur__option[aria-current="page"] { color: #fff !important; }
.interrupteur__option--elagage[aria-current="page"] { background: var(--el-accent); }
.interrupteur__option--paysagisme[aria-current="page"] { background: var(--pc-accent); }
.interrupteur__option:focus-visible { outline: 2px solid currentColor; outline-offset: 1px; }
/* Noms complets sur grand écran, version courte en dessous de 1280 px */
.interrupteur__court { display: none; }
@media (max-width: 1279px) { .interrupteur__long { display: none; } .interrupteur__court { display: inline; } }
@media (min-width: 1280px) { .interrupteur { grid-template-columns: auto auto; } .interrupteur__option { padding-inline: 1.1rem; font-size: .95rem; } }

/* Accueil : en-tête toujours transparent sur la vidéo */
.bandeau-tete--video { text-shadow: 0 1px 10px rgba(0,0,0,.3); }
.bandeau-tete--video .bandeau-tete__devis { text-shadow: none; }

@media (max-width: 800px) {
  /* Mobile : deux lignes compactes — nom + bouton devis, puis les deux métiers (+ téléphone sur l'accueil) */
  .bandeau-tete { grid-template-columns: 1fr auto; grid-template-areas: "nom devis" "nav tel"; gap: .55rem 1rem; padding: .85rem 1.25rem; }
  .bandeau-tete.est-plein, html:not(.js) .page-edito .bandeau-tete { padding-top: .7rem; padding-bottom: .7rem; }
  .bandeau-tete__actions { display: contents; }
  .bandeau-tete__nom { font-size: 1.15rem; }
  .logo-tete { height: 4.6rem; }
  .bandeau-tete__devis { grid-area: devis; justify-self: end; padding: .55rem .95rem; font-size: .88rem; }
  .bandeau-tete__nav { gap: 1.3rem; }
  .bandeau-tete__nav a { font-size: .9rem; padding: .35rem 0; }
  .bandeau-tete__tel { grid-area: tel; justify-self: end; font-size: .88rem; }
  .page-edito .bandeau-tete__tel { display: none; } /* pages métier : barre « Appeler » en bas */
  .page-edito .bandeau-tete:has(.interrupteur) .bandeau-tete__nav { display: none; }
  .interrupteur {
    grid-area: nav; grid-column: 1 / -1; justify-self: start; display: grid; grid-template-columns: 1fr 1fr; padding: 3px; border-radius: 999px;
    background: color-mix(in srgb, currentColor 14%, transparent); border: 1px solid color-mix(in srgb, currentColor 30%, transparent);
  }
  .interrupteur__option { padding: .4rem 1rem; border-radius: 999px; font-size: .9rem; line-height: 1.2; text-align: center; text-decoration: none; white-space: nowrap; transition: background .25s, color .25s; }
  .interrupteur__option[aria-current="page"] { color: #fff !important; }
  .interrupteur__option--elagage[aria-current="page"] { background: var(--el-accent); }
  .interrupteur__option--paysagisme[aria-current="page"] { background: var(--pc-accent); }
  .interrupteur__option:focus-visible { outline: 2px solid currentColor; outline-offset: 1px; }
  /* Noms complets sur deux lignes dans chaque moitié, zone de toucher d'au moins 44 px */
  .interrupteur__long { display: inline; }
  .interrupteur__court { display: none; }
  .interrupteur { justify-self: stretch; width: 100%; border-radius: 22px; }
  .interrupteur__option { display: flex; align-items: center; justify-content: center; min-height: 44px; padding: .35rem .7rem; font-size: .88rem; line-height: 1.15; white-space: normal; text-wrap: balance; border-radius: 18px; }
  html:has(.page-edito) { scroll-padding-top: 10.5rem; }
}

/* Héros plein écran */
.ouverture { position: relative; min-height: 100svh; display: flex; align-items: flex-end; color: #fff; overflow: hidden; }
.ouverture__media { position: absolute; inset: 0; }
.ouverture__media picture { display: contents; }
.ouverture__media img { width: 100%; height: 100%; object-fit: cover; }
.ouverture__media::after {
  content: ""; position: absolute; inset: 0;
  /* léger voile + un peu plus sombre en haut (lisibilité de l'en-tête) et en bas (titre) */
  background: linear-gradient(to bottom, rgba(0,0,0,.38) 0%, rgba(0,0,0,.18) 22%, rgba(0,0,0,.18) 55%, rgba(0,0,0,.45) 100%);
}
.ouverture__texte { position: relative; padding: 0 var(--marge-pc) clamp(3rem, 9vh, 6rem); }
/* Titre du héros : Instrument Serif, en contraste avec Jost */
.page-edito .ouverture h1 { font-family: var(--f-titre); font-weight: 400; font-size: clamp(4rem, 14vw, 13rem); line-height: .9; margin-left: -.03em; letter-spacing: -.01em; }
/* Noms d'activité longs : titre plus petit, sur deux lignes équilibrées */
.page-edito .ouverture h1.ouverture__titre--long { font-size: clamp(3rem, 8.5vw, 8.5rem); max-width: 14ch; text-wrap: balance; }
.ouverture__lieu { margin: 1.3rem 0 0; font-size: 1rem; opacity: .9; }
.ouverture__depuis { margin: 1.1rem 0 0; font-size: .85rem; letter-spacing: .08em; opacity: .9; }
.ouverture__depuis + .ouverture__lieu { margin-top: .3rem; }
.ecran__depuis { white-space: nowrap; }

/* Phrase d'introduction */
.accroche { padding: clamp(2rem, 4.5vw, 3.5rem) var(--marge-pc); text-align: center; }
.accroche p:first-child { margin: 0 auto; max-width: 25ch; text-wrap: balance; font-size: clamp(2rem, 4.4vw, 3.8rem); font-weight: 300; line-height: 1.2; }

.accroche__detail { margin: 2rem auto 0; max-width: 38rem; font-size: 1.05rem; line-height: 1.6; opacity: .75; text-wrap: balance; }

/* Sections */
.section { padding: clamp(1.5rem, 3vw, 2.75rem) var(--marge-pc); max-width: 1440px; margin: 0 auto; }
/* Petit titre de section : filet + titre en couleur d'accent */
.section__tete { margin-bottom: clamp(1rem, 2vw, 1.5rem); padding-top: 1rem; border-top: 1px solid var(--p-filet); }
.section__tete h2, .pratique h2 { font-size: 1rem; font-weight: 400; line-height: 1.4; color: var(--p-accent); }
.pratique > div > h2 { padding-top: 1rem; border-top: 1px solid var(--p-filet); }
.section__tete p { margin: .8rem 0 0; max-width: 34rem; opacity: .75; }

/* Avant / après : curseur de comparaison (souris, doigt, clavier) */
.comparer { position: relative; max-width: 38rem; margin: 0 auto; aspect-ratio: 4 / 3; overflow: hidden; background: var(--p-filet); touch-action: pan-y; user-select: none; -webkit-user-select: none; }
.comparer img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: var(--cadrage, 50% 50%); pointer-events: none; }
.comparer__avant { clip-path: inset(0 calc(100% - var(--pos)) 0 0); }
.comparer__etiquette { position: absolute; top: 1rem; padding: .3rem .7rem; font-size: .85rem; color: #fff; background: rgba(0,0,0,.45); }
.comparer__etiquette--avant { left: 1rem; }
.comparer__etiquette--apres { right: 1rem; }
.comparer__curseur { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: ew-resize; -webkit-appearance: none; appearance: none; }
.comparer__poignee { position: absolute; top: 0; bottom: 0; left: var(--pos); width: 2px; margin-left: -1px; background: #fff; pointer-events: none; }
.comparer__poignee::after {
  content: ""; position: absolute; top: 50%; left: 50%; width: 2.6rem; height: 2.6rem; transform: translate(-50%, -50%);
  border: 2px solid #fff; border-radius: 50%; background: rgba(0,0,0,.25);
}
.comparer__curseur:focus-visible ~ .comparer__poignee::after { outline: 2px solid #fff; outline-offset: 3px; box-shadow: 0 0 0 5px rgba(0,0,0,.5); }

/* Avant / après : section phare, curseur pleine largeur, autres chantiers en vignettes */
.aa .comparer { max-width: none; aspect-ratio: 16 / 9; width: 100%; }
.aa__panneau[hidden] { display: none; }
/* Avant / après en hauteur (photo verticale recalée) */
.aa .comparer.comparer--haut { aspect-ratio: 4 / 5; max-width: 34rem; margin: 0 auto; }
html:not(.js) .aa__panneau + .aa__panneau { margin-top: 1rem; }
.aa__vignettes { position: relative; display: flex; gap: 8px; margin-top: 8px; overflow-x: auto; scrollbar-width: thin; }
html:not(.js) .aa__vignettes { display: none; }
.aa__vignette { flex: 0 0 auto; width: 10rem; padding: 0; border: 0; background: none; color: inherit; font: inherit; text-align: left; cursor: pointer; opacity: .62; transition: opacity .25s; }
.aa__vignette img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; outline: 2px solid transparent; outline-offset: -2px; }
.aa__vignette span { display: block; margin-top: .35rem; font-size: .85rem; line-height: 1.3; }
.aa__vignette:hover { opacity: .9; }
.aa__vignette[aria-pressed="true"] { opacity: 1; }
.aa__vignette[aria-pressed="true"] img { outline-color: var(--p-accent); }

/* Prestations : un bloc par prestation (nom, phrase, grille régulière serrée) */
.presta { display: grid; grid-template-columns: minmax(12rem, 1fr) 4fr; gap: 1rem clamp(1.5rem, 4vw, 3.5rem); align-items: start; padding: clamp(1.25rem, 2.5vw, 2rem) 0; border-top: 1px solid var(--p-filet); }
.section__tete + .presta { border-top: 0; padding-top: 0; }
.presta__nom { font-size: clamp(1.5rem, 2.4vw, 2.1rem); font-weight: 300; line-height: 1.15; }
.presta__phrase { margin: .6rem 0 0; font-size: .98rem; line-height: 1.55; opacity: .8; max-width: 22rem; }
/* Photos plus grandes : 2 colonnes (1 sur mobile) ; avec un nombre impair, la première prend toute la largeur */
.grille-photos { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
.grille-photos figure:first-child:nth-last-child(odd) { grid-column: 1 / -1; aspect-ratio: 21 / 9; }
.grille-photos figure { margin: 0; aspect-ratio: 16 / 10; overflow: hidden; background: var(--p-filet); }
.grille-photos img { width: 100%; height: 100%; object-fit: cover; }
/* Page Élagage : une rangée régulière par prestation (3 ou 4 photos) ; mobile : 2 par rangée,
   la dernière en pleine largeur si le nombre est impair (double classe : passe devant les règles générales du mobile) */
.grille-photos.grille-photos--rangee figure, .grille-photos.grille-photos--rangee figure:first-child:nth-last-child(odd) { grid-column: auto; aspect-ratio: 4 / 5; }
.grille-photos--3 { grid-template-columns: repeat(3, 1fr); }
.grille-photos--4 { grid-template-columns: repeat(4, 1fr); }
/* Page Aménagement paysager : prestations numérotées dans l'ordre du client ;
   avec photos = bloc titre + rangée de photos, sans photo = ligne sobre */
.presta__num { display: block; margin-bottom: .4rem; font-size: .85rem; letter-spacing: .04em; color: var(--p-accent); font-variant-numeric: tabular-nums; }
.presta--sans-photo { grid-template-columns: 1fr; padding-block: clamp(.8rem, 1.6vw, 1.1rem); }
.presta--sans-photo .presta__texte { display: flex; align-items: baseline; gap: 1rem; }
.presta--sans-photo .presta__num { margin: 0; min-width: 2ch; }
.presta--sans-photo .presta__nom { font-size: clamp(1.2rem, 1.9vw, 1.6rem); }
/* Page Élagage : chaque prestation dans un cadre fin à sa couleur, sur un fond teinté à 6 %
   (titres ≥ 6:1 sur ce fond) */
.presta--elagage { --bloc: #46612C; }
.presta--abattage { --bloc: #7A4E2D; }
.presta--forestier { --bloc: #2F4A3A; }
.presta__sous-titre { margin: .5rem 0 0; font-size: .98rem; line-height: 1.5; color: var(--bloc, inherit); }
/* Sous-partie (OLD) dans un bloc : sur toute la largeur, sous les photos */
.presta__sous { grid-column: 1 / -1; margin-top: clamp(1rem, 2vw, 1.5rem); padding-top: clamp(1rem, 2vw, 1.5rem); border-top: 1px solid color-mix(in srgb, var(--bloc) 35%, transparent); max-width: 52rem; font-size: .98rem; line-height: 1.6; }
.presta__sous-nom { margin: 0 0 .6rem; font-size: clamp(1.15rem, 1.6vw, 1.35rem); font-weight: 400; color: var(--bloc); }
.presta__sous p { margin: 0 0 .7rem; }
.presta__sous ul { margin: 0 0 .7rem; padding-left: 1.1rem; }
.presta__sous li { margin-bottom: .35rem; }
.presta__sources { font-size: .85rem; opacity: .85; }
/* Vidéos verticales en petit (taille d'origine 478 × 850, jamais agrandies) */
.presta__videos { grid-column: 2; display: flex; flex-wrap: wrap; gap: 12px; margin-top: 0; }
.presta__videos figure { margin: 0; width: min(11rem, calc(50% - 6px)); }
.presta__videos video { display: block; width: 100%; height: auto; aspect-ratio: 478 / 850; object-fit: cover; border-radius: var(--r-moyen, 16px); background: var(--p-filet); }
@media (max-width: 800px) { .presta__videos { grid-column: 1 / -1; } }
.presta__video { position: relative; }
.presta__videos video { cursor: pointer; }
.presta__video-badge { position: absolute; top: .55rem; left: .55rem; min-height: 2rem; padding: .3rem .7rem; border: 0; border-radius: 999px; background: rgba(20,22,18,.72); color: #fff; font: inherit; font-size: .78rem; line-height: 1.2; letter-spacing: .02em; cursor: pointer; }
.presta__video-badge:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.presta__videos figcaption { margin-top: .45rem; font-size: .85rem; line-height: 1.35; color: var(--bloc, var(--p-accent)); }
.lien-dispo { display: inline-block; color: var(--bloc); font-weight: 400; text-underline-offset: .25em; }
.lien-dispo::after { content: " →"; }
.presta__sources a { color: var(--bloc); text-underline-offset: .2em; }
.presta__sous .grille-photos { margin-top: 1rem; max-width: none; }
.presta__sous + .presta__sous { max-width: none; }
.presta__sous + .presta__sous > p { max-width: 52rem; }
.presta.presta--cadre, .section__tete + .presta.presta--cadre {
  border: 1px solid var(--bloc); border-radius: var(--r-grand, 24px); padding: clamp(1.25rem, 2.5vw, 2rem);
}
.presta--cadre + .presta--cadre { margin-top: clamp(1rem, 2vw, 1.5rem); }
.presta--cadre .presta__nom { color: var(--bloc); }
.presta--cadre { background: color-mix(in srgb, var(--bloc) 6%, var(--p-fond)); }
@media (max-width: 800px) {
  .grille-photos--rangee { grid-template-columns: repeat(2, 1fr); }
  .presta.presta--cadre, .section__tete + .presta.presta--cadre { padding: 1.1rem; }
  .grille-photos.grille-photos--rangee figure, .grille-photos.grille-photos--rangee figure:first-child:nth-last-child(odd) { aspect-ratio: 1 / 1; }
  .grille-photos.grille-photos--rangee figure:last-child:nth-child(odd) { grid-column: 1 / -1; aspect-ratio: 16 / 10; }
}
/* Visionneuse : bouton posé sur chaque photo par app.js */
.photo-agrandir { display: block; width: 100%; height: 100%; padding: 0; border: 0; background: none; cursor: zoom-in; }
.photo-agrandir:focus-visible { outline: 3px solid var(--p-texte); outline-offset: -3px; }
.visionneuse { width: 100vw; height: 100dvh; max-width: none; max-height: none; margin: 0; padding: 0; border: 0; background: rgba(12,12,10,.94); color: #fff; overflow: hidden; }
.visionneuse::backdrop { background: rgba(12,12,10,.94); }
html.visionneuse-ouverte { overflow: hidden; }
.visionneuse__scene { position: absolute; inset: 3.5rem 4.5rem 3.5rem; display: grid; place-items: center; touch-action: pan-y; }
/* Photo entière et centrée, jamais agrandie au-delà de sa taille réelle : taille naturelle (width/height auto)
   bornée par la scène ; positionnement absolu pour que max-height: 100% s'applique (il ne s'appliquait pas dans la grille) */
.visionneuse__img { position: absolute; inset: 0; margin: auto; width: auto; height: auto; max-width: calc(100% - 2rem); max-height: 100%; object-fit: contain; user-select: none; -webkit-user-drag: none; }
.visionneuse__legende { position: absolute; left: 1rem; right: 1rem; bottom: 1rem; display: flex; justify-content: space-between; gap: 1rem; font-size: .9rem; line-height: 1.4; }
.visionneuse__compte { flex: none; opacity: .8; font-variant-numeric: tabular-nums; }
.visionneuse button { position: absolute; display: grid; place-items: center; width: 3rem; height: 3rem; border: 0; border-radius: 50%; background: rgba(255,255,255,.12); color: #fff; cursor: pointer; }
.visionneuse button:hover { background: rgba(255,255,255,.22); }
.visionneuse button:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.visionneuse button svg { width: 1.4rem; height: 1.4rem; }
.visionneuse__fermer { top: .5rem; right: .75rem; }
.visionneuse__prec { left: .75rem; top: 50%; transform: translateY(-50%); }
.visionneuse__suiv { right: .75rem; top: 50%; transform: translateY(-50%); }
@media (max-width: 800px) {
  .visionneuse__scene { inset: 3.75rem 0 8.5rem; }
  .visionneuse__legende { bottom: 4.6rem; }
  .visionneuse__prec, .visionneuse__suiv { top: auto; bottom: 1rem; transform: none; }
  .visionneuse__prec { left: calc(50% - 3.75rem); }
  .visionneuse__suiv { right: calc(50% - 3.75rem); }
}
@media (prefers-reduced-motion: no-preference) {
  .visionneuse__img { transition: opacity .25s, transform .25s; }
  .visionneuse__img.est-sortante { opacity: 0; }
}
.presta__liste { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, 1fr); column-gap: clamp(1.5rem, 3vw, 3rem); }
.presta__liste li { padding: .7rem 0; border-bottom: 1px solid var(--p-filet); font-size: clamp(1.15rem, 1.6vw, 1.4rem); font-weight: 300; }
.presta__liste li:nth-child(-n+2) { border-top: 1px solid var(--p-filet); }
.galerie-phrase { margin: clamp(1rem, 2vw, 1.5rem) auto; max-width: 30ch; text-align: center; font-size: clamp(1.25rem, 2vw, 1.6rem); font-weight: 300; line-height: 1.3; text-wrap: balance; }

/* Avis au style Google : pastille, prénom, logo G, étoiles jaunes */
.g-logo { width: 1.15rem; height: 1.15rem; flex: none; }
.avis__synthese { display: flex; flex-wrap: wrap; align-items: center; gap: .8rem 1.1rem; padding-bottom: clamp(1.25rem, 2.5vw, 1.75rem); margin-bottom: clamp(1.25rem, 2.5vw, 1.75rem); border-bottom: 1px solid var(--p-filet); }
.avis__synthese .g-logo { width: 2.4rem; height: 2.4rem; }
.avis__note { font-size: clamp(3.2rem, 6vw, 4.6rem); font-weight: 300; line-height: .9; }
.avis__detail { display: flex; flex-direction: column; gap: .25rem; }
.avis__etoiles, .avis__etoiles-item { color: #FBBC04; letter-spacing: .08em; }
.avis__etoiles { font-size: 1.45rem; }
.avis__nombre { font-size: 1rem; }
.avis__lien { margin-left: auto; text-underline-offset: .25em; }
.avis__grille { position: relative; list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.avis__item figure { margin: 0; height: 100%; display: flex; flex-direction: column; gap: .6rem; padding: 1.1rem 1.2rem 1.25rem; background: color-mix(in srgb, #fff 55%, transparent); border: 1px solid var(--p-filet); }
.avis__tete { display: flex; align-items: center; gap: .65rem; }
.avis__pastille { display: inline-grid; place-items: center; width: 2.2rem; height: 2.2rem; border-radius: 50%; background: var(--pastille); color: #fff; font-size: 1.05rem; font-weight: 400; flex: none; }
.avis__auteur { font-size: .98rem; }
.avis__tete .g-logo { margin-left: auto; }
.avis__etoiles-item { font-size: 1rem; line-height: 1; }
.avis__item blockquote { margin: 0; font-size: .98rem; line-height: 1.6; }

/* Sous 900 px : avis en bandeau horizontal à faire défiler (6 avis présents, sans défilement automatique) */
@media (max-width: 900px) {
  .avis__grille { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; gap: 1rem; margin: 0 calc(-1 * var(--marge-pc)); padding: 0 var(--marge-pc) .5rem; scroll-padding-inline: var(--marge-pc); scrollbar-width: thin; }
  .avis__item { flex: 0 0 82%; scroll-snap-align: start; }
  .avis__lien { margin-left: 0; flex-basis: 100%; }
  .avis__grille:focus-visible { outline-offset: -2px; }
}

/* Crédit d'impôt : bandeau d'accent, une phrase */
.credit { background: var(--p-teinte); color: var(--p-texte); padding: clamp(1.5rem, 3vw, 2.25rem) var(--marge-pc); border-top: 1px solid var(--p-filet); border-bottom: 1px solid var(--p-filet); }
.credit__chiffre { color: var(--p-accent); white-space: nowrap; }
.credit p { margin: 0 auto; max-width: 60rem; text-align: center; font-size: clamp(1rem, 1.4vw, 1.2rem); font-weight: 400; line-height: 1.5; }

/* Déroulé : 4 étapes sur une ligne */
.deroule { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(1.5rem, 3vw, 3rem); }
.deroule li { border-top: 1px solid var(--p-filet); padding-top: 1rem; }
.deroule__chiffre { display: block; font-size: clamp(2.2rem, 3.5vw, 3rem); font-weight: 300; line-height: 1; color: var(--p-accent); margin-bottom: .7rem; }
.deroule h3 { font-size: 1.15rem; font-weight: 400; line-height: 1.3; }
.deroule p { margin: .4rem 0 0; opacity: .75; }

/* Zone et horaires */
.pratique { display: grid; grid-template-columns: 1.3fr 1fr; gap: clamp(2rem, 5vw, 5rem); align-items: start; }
.pratique .carte { max-width: 36rem; }
.pratique h2 { margin-bottom: 1.4rem; }
.pratique p { margin: 0 0 1.6rem; max-width: 30rem; opacity: .75; }
.pratique__horaires { width: 100%; border-collapse: collapse; border-top: 1px solid var(--p-filet); }
.pratique__horaires th, .pratique__horaires td { padding: .8rem 0; border-bottom: 1px solid var(--p-filet); font-size: 1.15rem; font-weight: 300; text-align: left; }
.pratique__horaires td { text-align: right; font-variant-numeric: tabular-nums; }

/* Carte de la zone d'intervention : SVG statique généré depuis OpenStreetMap, noms en HTML */
.carte { position: relative; margin: 0; }
.carte__cadre { position: relative; }
.carte img { display: block; width: 100%; height: auto; border: 1px solid var(--p-filet); }
.carte__noms { position: absolute; inset: 0; pointer-events: none; }
.carte__nom {
  position: absolute; left: var(--x); top: var(--y); white-space: nowrap; line-height: 1;
  font-size: clamp(.68rem, 1vw, .85rem); transform: translate(.7em, -50%);
  text-shadow: 0 0 3px #fff, 0 0 3px #fff, 0 0 6px #fff;
}
.carte__nom--gauche { transform: translate(calc(-100% - .7em), -50%); }
.carte__nom--haut { transform: translate(-50%, calc(-100% - .55em)); }
.carte__nom--repere { opacity: .75; }
.carte__nom--confirme { font-weight: 400; color: var(--p-texte); font-size: clamp(.78rem, 1.15vw, 1rem); }
.carte__nom--depart { color: var(--p-accent); font-size: clamp(.9rem, 1.4vw, 1.2rem); transform: translate(.9em, -50%); }
.carte__rayon { position: absolute; left: var(--x); top: var(--y); font-size: .8rem; color: var(--p-accent); text-shadow: 0 0 3px #fff, 0 0 3px #fff; transform: translate(.3em, -100%); }
.carte__source { margin-top: .5rem; font-size: .72rem; opacity: .75; }
.pratique .carte { max-width: none; }
@media (max-width: 800px) { .carte__nom--repere { display: none; } }

/* Appel final */
.appel { padding: clamp(1.5rem, 3vw, 2.75rem) var(--marge-pc) clamp(2rem, 4vw, 3.5rem); max-width: 1440px; margin: 0 auto; text-align: center; }
.appel .section__tete { text-align: left; }
.appel__phrase { margin: clamp(1rem, 3vw, 2.5rem) 0 0; font-size: clamp(2.2rem, 5vw, 4.4rem); font-weight: 300; line-height: 1.1; }
.appel__tel { margin: 1.4rem 0 .6rem; font-size: clamp(1.3rem, 2.2vw, 1.8rem); font-weight: 300; }
.appel__tel a { text-decoration: none; border-bottom: 1px solid var(--p-filet); }
.appel__tel a:hover { border-bottom-color: currentColor; }
.appel > p:not(.appel__tel):not(.appel__phrase) { margin: 0 0 2.2rem; opacity: .75; }

/* Passage vers l'autre métier : photo en fond, voile sombre, mot en grand */
.passage {
  position: relative; display: flex; align-items: flex-end; min-height: clamp(13rem, 24vw, 20rem); overflow: hidden;
  padding: clamp(2.5rem, 5vw, 4.5rem) var(--marge-pc); color: #fff !important; text-decoration: none; isolation: isolate;
}
.passage__photo { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s cubic-bezier(.2,.7,.2,1); }
.passage::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(to top, rgba(0,0,0,.72) 0%, rgba(0,0,0,.4) 55%, rgba(0,0,0,.3) 100%); }
.passage__question { display: block; font-size: 1.05rem; }
.passage__mot { display: block; margin-top: .4rem; font-family: var(--f-titre); font-weight: 400; font-size: clamp(3rem, 8vw, 7rem); line-height: .9; }
.passage:hover .passage__photo { transform: scale(1.03); }
.passage:focus-visible { outline: 2px solid #fff; outline-offset: -8px; }
/* Élagage : le palmier et le grimpeur sont légèrement à gauche du centre dans l'image drone */
/* Héros portrait (photos 3:4) affichés en paysage : cadrage vertical choisi pour garder le sujet au-dessus du titre */
.page-edito--olive .ouverture__media img { object-position: 50% 42%; }
/* Téléphone en portrait : image déjà recadrée (…-portrait.webp), centrée */
@media (max-width: 800px) and (orientation: portrait) { .ouverture__media img, .page-edito--olive .ouverture__media img { object-position: 50% 50%; } }

/* Pied */
.pied-sobre { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .6rem 2rem; padding: 2rem var(--marge-pc); font-size: .85rem; }
.pied-sobre p { margin: 0; opacity: .75; }
.pied-sobre__logo { width: 11rem; max-width: 16rem; height: auto; margin-bottom: .6rem; }
.pied-sobre__nav { display: flex; gap: 1.6rem; }
.pied-sobre__nav a { text-decoration: none; }
.pied-sobre__nav a:hover, .pied-sobre__nav a[aria-current] { text-decoration: underline; text-underline-offset: .25em; }
.pied-sobre a { text-underline-offset: .2em; }

/* Bouton « Appeler » fixé en bas (mobile) */
/* Contact fixe : WhatsApp rond flottant sur ordinateur ; barre « Appeler / WhatsApp » sur mobile */
.contact-fixe__appeler { display: none; }
.contact-fixe__whatsapp {
  position: fixed; z-index: 30; right: 1.5rem; bottom: 1.5rem; width: 3.5rem; height: 3.5rem; border-radius: 50%;
  display: grid; place-items: center; background: #25D366; color: #fff !important; text-decoration: none;
  box-shadow: 0 4px 14px rgba(0,0,0,.18); transition: transform .2s, background .2s;
}
.contact-fixe__whatsapp svg { width: 1.9rem; height: 1.9rem; }
.contact-fixe__whatsapp:hover { background: #1ebe5b; transform: scale(1.05); }
.contact-fixe__whatsapp:focus-visible { outline: 2px solid #1f2a1c; outline-offset: 3px; }
.contact-fixe__texte { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
@media (min-width: 801px) { .pied-sobre { padding-right: calc(var(--marge-pc) + 4.5rem); } }

/* Fenêtre devis : verre dépoli clair, teinté par la page */
.page-edito .devis {
  color: var(--p-texte); background: color-mix(in srgb, var(--p-fond) 64%, transparent); border-color: rgba(var(--p-voile),.14);
  color-scheme: light; box-shadow: none;
}
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .page-edito .devis { background: var(--p-fond); }
}
.page-edito .devis::backdrop { background: rgba(var(--p-voile),.25); }
.page-edito .devis__cadre { text-shadow: none; }
.page-edito .devis a { color: var(--p-texte); }
.page-edito .devis :focus-visible { outline-color: var(--p-texte); }
.page-edito .devis__fermer { color: var(--p-texte); }
.page-edito .devis__fermer:hover { background: rgba(var(--p-voile),.06); }
.page-edito .devis__champ input, .page-edito .devis__champ select, .page-edito .devis__champ textarea {
  color: var(--p-texte); background: rgba(255,255,255,.55); border-color: rgba(var(--p-voile),.25);
}
.page-edito .devis__champ ::placeholder { color: rgba(var(--p-voile),.62); }
.page-edito .devis__champ option { color: var(--p-texte); background: #fff; }
.page-edito .devis__champ input:-webkit-autofill { -webkit-text-fill-color: var(--p-texte); caret-color: var(--p-texte); box-shadow: inset 0 0 0 100px #fff; }
.page-edito .devis__envoyer { background: var(--p-texte); color: var(--p-fond); border-color: var(--p-texte); }
.page-edito .devis__envoyer:hover { background: #000; }
.page-edito .devis__retour--erreur { background: #f6e3de; border-left-color: #9b2c1f; color: var(--p-texte); }
.page-edito .devis { text-align: left; }
/* Sans JavaScript ou sans <dialog> : le formulaire s'affiche dans la page */
html:not(.js-dialog) .page-edito .devis {
  display: block; position: static; width: auto; max-width: 40rem; max-height: none; margin: 4rem auto 0;
  background: transparent; -webkit-backdrop-filter: none; backdrop-filter: none; border: 0; box-shadow: none;
}
html:not(.js-dialog) .page-edito .devis__fermer, html:not(.js-dialog) .page-edito .devis__appel { display: none; }

@media (max-width: 800px) {
  .presta { grid-template-columns: 1fr; }
  .aa .comparer { aspect-ratio: 4 / 3; max-height: none; }
  .aa__vignette { width: 7.5rem; }
  .grille-photos { grid-template-columns: repeat(2, 1fr); gap: 6px; }
  .grille-photos figure { aspect-ratio: 1 / 1; }
  .grille-photos figure:first-child:nth-last-child(odd) { aspect-ratio: 16 / 10; }
  .presta__liste { grid-template-columns: 1fr; }
  .presta__liste li:nth-child(2) { border-top: 0; }
  .deroule { grid-template-columns: 1fr 1fr; row-gap: 1.5rem; }
  .pratique { grid-template-columns: 1fr; }
  .pied-sobre { padding-bottom: calc(2rem + 4.5rem + env(safe-area-inset-bottom)); }
  .contact-fixe { position: fixed; z-index: 30; left: 0; right: 0; bottom: 0; display: grid; grid-template-columns: 1fr 1fr; padding-bottom: env(safe-area-inset-bottom); background: var(--p-texte, #1c231d); }
  .contact-fixe__appeler, .contact-fixe__whatsapp {
    position: static; display: flex; align-items: center; justify-content: center; gap: .5rem; width: auto; height: auto; border-radius: 0; box-shadow: none; transform: none;
    padding: 1.05rem 1rem; font-size: 1.05rem; text-decoration: none;
  }
  .contact-fixe__appeler { background: var(--p-texte, #1c231d); color: var(--p-fond, #fff) !important; }
  .contact-fixe__whatsapp { background: #25D366; color: #0b2614 !important; }
  .contact-fixe__whatsapp:hover { transform: none; }
  .contact-fixe__whatsapp svg { width: 1.35rem; height: 1.35rem; }
  .contact-fixe__texte { position: static; width: auto; height: auto; overflow: visible; clip: auto; }
  .contact-fixe a:focus-visible { outline: 2px solid #fff; outline-offset: -5px; }
  .contact-fixe__whatsapp:focus-visible { outline-color: #0b2614; }
}
@media (max-width: 480px) {
}

/* Page de remerciement (merci.html), variante claire */
/* Aménagement paysager : liste régulière des prestations (2 colonnes, 1 sur mobile) */
.presta-liste { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; column-gap: clamp(1.5rem, 4vw, 3.5rem); }
.presta-liste li { display: flex; align-items: baseline; gap: 1rem; padding: .85rem 0; border-bottom: 1px solid var(--p-filet); font-size: clamp(1.05rem, 1.5vw, 1.25rem); font-weight: 300; line-height: 1.35; }
.presta-liste li:nth-child(-n+2) { border-top: 1px solid var(--p-filet); }
.presta-liste .presta__num { margin: 0; min-width: 2ch; flex: none; }
@media (max-width: 800px) { .presta-liste { grid-template-columns: 1fr; } .presta-liste li:nth-child(2) { border-top: 0; } }
/* Nos réalisations : galerie uniforme, légende = prestation */
.realisations__phrase { margin: 0 0 1.5rem; text-align: left; max-width: none; }
.grille-photos.grille-realisations { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.25rem 12px; align-items: start; }
.grille-photos.grille-realisations .realisation, .grille-photos.grille-realisations .realisation:first-child:nth-last-child(odd) { grid-column: auto; aspect-ratio: auto; overflow: visible; background: none; border-radius: 0; }
.grille-realisations .realisation { min-width: 0; height: auto; }
.grille-realisations .photo-agrandir { overflow: hidden; border-radius: var(--r-moyen, 16px); height: auto; }
.grille-realisations .realisation img, .grille-realisations .realisation .photo-agrandir { display: block; width: 100%; aspect-ratio: 4 / 5; }
.grille-realisations .realisation img { height: 100%; object-fit: cover; }
.grille-realisations figcaption { margin-top: .45rem; font-size: .85rem; line-height: 1.35; color: var(--p-accent); }
@media (max-width: 800px) { .grille-photos.grille-realisations { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem 10px; } .grille-photos.grille-realisations .realisation { aspect-ratio: auto; } }
/* Filtrage de la galerie « Nos réalisations » (créé par app.js) */
.filtre-realisations { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0 0 1.25rem; }
.filtre-realisations__pastille { padding: .45rem 1rem; border: 1px solid var(--p-filet); border-radius: 999px; background: #fff; color: var(--p-texte); font: inherit; font-size: .92rem; cursor: pointer; transition: background .2s, border-color .2s, color .2s; }
.filtre-realisations__pastille:hover { border-color: var(--p-accent); }
.filtre-realisations__pastille[aria-pressed="true"] { background: var(--p-accent); border-color: var(--p-accent); color: #fff; }
.filtre-realisations__pastille:focus-visible { outline: 2px solid var(--p-accent); outline-offset: 2px; }
.filtre-realisations__nb { margin-left: .25rem; font-size: .8em; opacity: .75; }
.grille-realisations .realisation[hidden] { display: none; }
@media (max-width: 800px) { .filtre-realisations { flex-wrap: nowrap; overflow-x: auto; margin-inline: calc(-1 * var(--marge-pc)); padding: 0 var(--marge-pc) .35rem; scrollbar-width: none; } .filtre-realisations::-webkit-scrollbar { display: none; } .filtre-realisations__pastille { flex: 0 0 auto; white-space: nowrap; } }
.presta-liste__lien { display: flex; flex-wrap: wrap; align-items: baseline; gap: .2rem .75rem; padding: 0; border: 0; background: none; color: inherit; font: inherit; text-align: left; cursor: pointer; }
.presta-liste__voir { font-size: .82rem; color: var(--p-accent); white-space: nowrap; text-decoration: underline; text-underline-offset: .2em; }
.presta-liste__lien:hover .presta-liste__voir { text-decoration-thickness: 2px; }
.presta-liste__lien:focus-visible { outline: 2px solid var(--p-accent); outline-offset: 3px; border-radius: 4px; }
/* Aménagement paysager : entretien ponctuel ou sous contrat */
.entretien__corps { max-width: 62rem; }
.entretien__intro { margin: 0 0 .8rem; font-size: clamp(1.3rem, 2.2vw, 1.75rem); font-weight: 300; line-height: 1.3; }
.entretien__corps > p { margin: 0 0 1rem; max-width: 44rem; line-height: 1.6; }
.entretien__clients { list-style: none; display: flex; flex-wrap: wrap; gap: .5rem; margin: 1.25rem 0 1.5rem; padding: 0; }
.entretien__clients li { padding: .45rem 1rem; border-radius: 999px; border: 1px solid var(--p-filet); background: var(--p-teinte); color: var(--p-texte); font-size: .95rem; }
.entretien__grille { display: grid; grid-template-columns: 1fr 1.2fr; gap: clamp(1.25rem, 3vw, 2.5rem); align-items: start; margin: 1.25rem 0 0; }
.entretien__bloc h3 { margin: 0 0 .6rem; font-size: 1.15rem; font-weight: 400; color: var(--p-accent); }
.entretien__liste { list-style: none; margin: 0; padding: 0; }
.entretien__liste li { padding: .6rem 0; border-bottom: 1px solid var(--p-filet); line-height: 1.4; }
.entretien__liste li:first-child { border-top: 1px solid var(--p-filet); }
.entretien__modes { display: grid; grid-template-columns: 1fr; gap: .75rem; margin: 0; }
.entretien__credit { margin: 0 0 1.5rem; padding: 1rem 1.25rem; max-width: 44rem; border-radius: var(--r-moyen, 16px); background: var(--p-teinte); line-height: 1.55; }
@media (max-width: 800px) { .entretien__grille { grid-template-columns: 1fr; } }
.entretien__mode { padding: 1.1rem 1.25rem; border: 1px solid var(--p-filet); border-radius: var(--r-moyen, 16px); background: #fff; }
.entretien__mode h3 { margin: 0 0 .35rem; font-size: 1.2rem; font-weight: 400; color: var(--p-accent); }
.entretien__mode p { margin: 0; line-height: 1.5; opacity: .85; }
/* Mentions légales */
.mentions { max-width: 46rem; margin: 0 auto; padding: 8rem var(--marge-pc) 4rem; line-height: 1.6; }
.mentions h1 { font-family: var(--f-titre); font-weight: 400; font-size: clamp(2.8rem, 7vw, 4.5rem); line-height: 1; margin: 0 0 2rem; }
.mentions h2 { margin: 2.2rem 0 .8rem; font-size: clamp(1.3rem, 2vw, 1.6rem); font-weight: 400; color: var(--p-accent); }
.mentions__liste { display: grid; grid-template-columns: minmax(10rem, 14rem) 1fr; gap: .5rem 1.5rem; margin: 0; }
.mentions__liste dt { opacity: .7; }
.mentions__liste dd { margin: 0; }
.mentions a { color: var(--p-accent); text-underline-offset: .2em; }
@media (max-width: 600px) { .mentions { padding-top: 7rem; } .mentions__liste { grid-template-columns: 1fr; gap: 0; } .mentions__liste dd { margin-bottom: .6rem; } }
.ecran__mentions { color: inherit; font-size: .9em; opacity: .85; text-underline-offset: .2em; }
.pied-sobre__nav { flex-wrap: wrap; }
.merci-edito { min-height: 100svh; display: grid; place-items: center; text-align: center; padding: 7rem var(--marge-pc) 5rem; }
.merci-edito h1 { font-size: clamp(2.6rem, 7vw, 5.5rem); font-weight: 300; line-height: 1.05; }
.merci-edito p { margin: 1.4rem auto 2.4rem; max-width: 32rem; font-size: 1.1rem; line-height: 1.6; opacity: .75; }
.merci-edito p a { white-space: nowrap; text-underline-offset: .2em; }

/* Liens de texte en couleur d'accent (détails) */
.page-edito .avis__lien, .page-edito .appel__tel a, .page-edito .pied-sobre a { color: var(--p-accent); }

/* Fond : grain papier très léger (SVG en ligne) et sections alternées en teinte voisine */
.page-edito { --p-grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .077 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E"); }
body.page-edito { background: var(--p-fond); }
.page-edito .section--alt { position: relative; isolation: isolate; }
.page-edito .section--alt::before { content: ""; position: absolute; inset: 0 calc(50% - 50vw); z-index: -1; background: var(--p-grain), var(--p-alt); }

/* Accueil : fenêtre de devis colorée selon le service choisi (texte blanc sur aplats ≥ 6:1) */
.page-ecran .devis { --svc: #fff; --svc-texte: #1c231d; }
.page-ecran .devis:has(input[name=besoin][value=paysagisme]:checked) { --svc: var(--pc-accent); --svc-texte: #fff; }
.page-ecran .devis:has(input[name=besoin][value=elagage]:checked) { --svc: var(--el-accent); --svc-texte: #fff; }
.page-ecran .devis__progression-barre { background: var(--svc); }
.page-ecran .devis__etape-num { background: var(--svc); color: var(--svc-texte); border-color: var(--svc); }
.page-ecran .devis__suivant, .page-ecran .devis__envoyer { background: var(--svc); color: var(--svc-texte); border-color: var(--svc); text-shadow: none; }
.page-ecran .devis__suivant:hover, .page-ecran .devis__envoyer:hover { filter: brightness(1.12); }
.page-ecran .devis__carte { color: #fff; text-shadow: none; }
.page-ecran .devis__carte:has(input[value=paysagisme]) { background: color-mix(in srgb, var(--pc-accent) 62%, transparent); border-color: var(--pc-accent); }
.page-ecran .devis__carte:has(input[value=elagage]) { background: color-mix(in srgb, var(--el-accent) 62%, transparent); border-color: var(--el-accent); }
.page-ecran .devis__carte:has(input[value=paysagisme]:checked) { background: var(--pc-accent); border-color: #fff; }
.page-ecran .devis__carte:has(input[value=elagage]:checked) { background: var(--el-accent); border-color: #fff; }
.page-ecran .devis__puce:has(input:checked) { background: var(--svc); color: var(--svc-texte); border-color: var(--svc); }

/* Formulaire de devis intégré en bas des pages métier (toujours visible) */
.page-edito .devis--integre {
  display: block; position: static; width: auto; max-width: 44rem; max-height: none; margin: 0 auto; padding: 0;
  background: color-mix(in srgb, #fff 60%, transparent); border: 1px solid var(--p-filet); -webkit-backdrop-filter: none; backdrop-filter: none; box-shadow: none;
}
.devis--integre .devis__cadre { padding: clamp(1.25rem, 3vw, 2rem); }
.devis--integre .devis__appel { margin-top: 0; }

/* Boutons d'action en pilule (bords entièrement arrondis) */
.bouton, .bandeau-tete__devis, .devis__envoyer, .devis__suivant, .devis__precedent { border-radius: 999px; }
.bandeau-tete__devis { padding-left: 1.5rem; padding-right: 1.5rem; }
@media (max-width: 800px) {
  .bandeau-tete__devis { padding-left: 1.05rem; padding-right: 1.05rem; }
  /* Barre mobile : deux pilules côte à côte sur un bandeau léger */
  .contact-fixe {
    gap: .55rem; padding: .55rem .75rem calc(.55rem + env(safe-area-inset-bottom));
    background: color-mix(in srgb, var(--p-fond, #141513) 90%, transparent);
    -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
    border-top: 1px solid color-mix(in srgb, var(--p-texte, #fff) 12%, transparent);
  }
  .contact-fixe__appeler, .contact-fixe__whatsapp { border-radius: 999px; padding: .85rem 1rem; }
  .contact-fixe a:focus-visible { outline-offset: 2px; }
}
@media (max-width: 800px) { .page-ecran .contact-fixe__appeler { background: #fff; color: #1c231d !important; } }

/* Fonds blancs : la couleur du métier seulement en détails */
.page-edito .section--alt::before { display: none; }
.page-edito .bandeau-tete { border-top: 3px solid var(--p-accent); }
.page-edito .avis__item figure, .page-edito .devis--integre { background: var(--p-teinte); border-color: transparent; }
.page-edito .presta__liste li::before { content: ""; display: inline-block; width: .45rem; height: .45rem; margin: 0 .7rem .2rem 0; border-radius: 50%; background: var(--p-accent); }
.page-edito .deroule li, .page-edito .section__tete, .page-edito .pratique > div > h2 { border-top-color: var(--p-filet); }
.page-edito .section__tete { border-top-width: 2px; }

/* Poignée de la feuille mobile : invisible hors mobile « application web » */
.devis__poignee { display: none; }

/* Formulaire de devis enrichi : blocs par service, curseurs par paliers, photos */
.devis__bloc-service { grid-column: 1 / -1; display: grid; gap: 1rem; padding: 1rem 1.1rem; border-left: 3px solid color-mix(in srgb, currentColor 30%, transparent); }
.devis__bloc-service[hidden] { display: none; }
.devis__bloc-service[data-bloc="paysagisme"] { border-left-color: var(--pc-accent); }
.devis__bloc-service[data-bloc="elagage"] { border-left-color: var(--el-accent); }
.devis__bloc-titre { margin: 0; font-size: 1.05rem; }
.devis__prestations[hidden] { display: none; }
.devis__curseur { gap: .45rem; }
.devis__curseur input[type=range] {
  -webkit-appearance: none; appearance: none; width: 100%; height: 6px; margin: .6rem 0 .2rem; border-radius: 999px; padding: 0; border: 0;
  background: linear-gradient(to right, currentColor var(--rempli, 0%), color-mix(in srgb, currentColor 22%, transparent) var(--rempli, 0%));
}
.devis__curseur input[type=range]::-webkit-slider-thumb { -webkit-appearance: none; width: 1.4rem; height: 1.4rem; border-radius: 50%; background: currentColor; border: 3px solid #fff; box-shadow: 0 1px 4px rgba(0,0,0,.3); cursor: pointer; }
.devis__curseur input[type=range]::-moz-range-thumb { width: 1.1rem; height: 1.1rem; border-radius: 50%; background: currentColor; border: 3px solid #fff; cursor: pointer; }
.devis__curseur input[type=range]:focus-visible { outline: 2px solid currentColor; outline-offset: 4px; }
.devis__curseur-valeur { font-size: .95rem; }
.devis__alerte, .devis__photos-erreur { grid-column: 1 / -1; margin: 0; padding: .55rem .8rem; font-size: .9rem; border-left: 2px solid #b3261e; background: rgba(179,38,30,.1); }
.devis__alerte[hidden], .devis__photos-erreur[hidden] { display: none; }
.devis__photos-champs { display: grid; gap: .5rem; font-size: .9rem; }
.devis__photos-champs[hidden] { display: none; }
.devis__photos-ajout { position: relative; display: inline-flex; align-items: center; gap: .4rem; align-self: flex-start; padding: .55rem 1.1rem; border: 1px dashed color-mix(in srgb, currentColor 50%, transparent); border-radius: 999px; cursor: pointer; font-size: .92rem; }
.devis__photos-ajout[hidden] { display: none; }
.devis__photos-ajout input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.devis__photos-ajout:has(input:focus-visible) { outline: 2px solid currentColor; outline-offset: 2px; }
.devis__photos-liste { list-style: none; margin: .3rem 0 0; padding: 0; display: grid; gap: .35rem; font-size: .9rem; }
.devis__photos-liste li { display: flex; justify-content: space-between; gap: .8rem; align-items: center; }
.devis__photos-liste button { font: inherit; font-size: .85rem; color: inherit; background: none; border: 0; text-decoration: underline; cursor: pointer; }
.devis__passer { font: inherit; font-size: .9rem; color: inherit; background: none; border: 0; text-decoration: underline; text-underline-offset: .2em; cursor: pointer; padding: .8rem .4rem; }
.devis__actions { align-items: center; }
.devis__carte input[type=checkbox] { position: absolute; opacity: 0; pointer-events: none; }

/* =========================================================
   DIRECTION « APPLICATION WEB » — toutes les pages (body.da-app)
   Rayons : 24 px grands blocs, 16 px cartes et photos, 12 px champs.
   ========================================================= */
.da-app { --r-grand: 24px; --r-moyen: 16px; --r-champ: 12px; --ombre: 0 1px 2px rgba(40,25,15,.06), 0 8px 24px rgba(40,25,15,.08); --ombre-forte: 0 2px 6px rgba(40,25,15,.08), 0 24px 60px rgba(40,25,15,.18); }
/* Photos, carte, avant/après */
.da-app .grille-photos { gap: 12px; }
.da-app .grille-photos figure, .da-app .aa__vignette img, .da-app .carte img { border-radius: var(--r-moyen); }
.da-app .comparer { border-radius: var(--r-grand); }
.da-app .carte img { border: 0; box-shadow: var(--ombre); }
/* Cartes flottantes : avis, formulaire intégré */
.da-app .avis__item figure { border-radius: var(--r-moyen); background: #fff; border: 1px solid var(--p-filet); box-shadow: var(--ombre); }
.da-app .devis--integre { border-radius: var(--r-grand); background: #fff; border: 1px solid var(--p-filet); box-shadow: var(--ombre); }
/* Bandeaux en blocs arrondis, en retrait des bords */
.da-app .credit { margin: clamp(1rem, 2vw, 1.5rem) var(--marge-pc); border: 0; border-radius: var(--r-grand); }
.da-app .passage { margin: 0 var(--marge-pc) clamp(1.5rem, 3vw, 2.5rem); border-radius: var(--r-grand); box-shadow: var(--ombre); }
/* Champs */
.da-app .devis__champ input, .da-app .devis__champ select, .da-app .devis__champ textarea { border-radius: var(--r-champ); }
.da-app .devis__carte { border-radius: var(--r-moyen); }
.da-app .devis__bloc-service { border-left: 0; border-radius: var(--r-moyen); background: color-mix(in srgb, var(--p-teinte) 70%, transparent); }
.da-app .devis__bloc-service[data-bloc="paysagisme"] { box-shadow: inset 4px 0 0 var(--pc-accent); }
.da-app .devis__bloc-service[data-bloc="elagage"] { box-shadow: inset 4px 0 0 var(--el-accent); }
/* Fenêtre de devis */
.da-app .devis:not(.devis--integre) { border-radius: var(--r-grand); box-shadow: var(--ombre-forte); }
.da-app.page-edito .devis:not(.devis--integre) { background: color-mix(in srgb, #fff 82%, transparent); }
/* Accueil : verre sombre sur la vidéo, arrondi et ombre plus marquée */
.da-app.page-ecran .devis { box-shadow: 0 24px 70px rgba(0,0,0,.45); border-color: rgba(255,255,255,.22); }
.da-app.page-ecran .devis__champ input, .da-app.page-ecran .devis__champ textarea { border-radius: var(--r-champ); }
.da-app.page-ecran .devis__bloc-service { background: rgba(255,255,255,.07); }
.da-app.page-ecran .bandeau-tete__devis { box-shadow: 0 6px 20px rgba(0,0,0,.25); }
.da-app.page-ecran .contact-fixe__whatsapp { box-shadow: 0 6px 20px rgba(0,0,0,.25); }
/* Merci : bouton flottant */
.da-app .merci-edito .bouton { box-shadow: var(--ombre); }
/* Barre mobile et interrupteur */
.da-app .interrupteur { box-shadow: var(--ombre); }
@media (max-width: 800px) {
  .da-app .contact-fixe { box-shadow: 0 -6px 24px rgba(40,25,15,.10); border-top: 0; border-radius: var(--r-grand) var(--r-grand) 0 0; }
  .da-app.page-ecran .contact-fixe { box-shadow: 0 -6px 24px rgba(0,0,0,.35); }
  /* Fenêtre de devis en feuille qui monte du bas, avec poignée */
  .da-app .devis:not(.devis--integre) {
    inset: auto 0 0 0; margin: 0; width: 100%; max-width: none; height: auto; max-height: 92dvh; overflow-y: auto;
    border-radius: var(--r-grand) var(--r-grand) 0 0; border: 0;
  }
  .da-app .devis:not(.devis--integre) .devis__cadre { padding-top: 2.1rem; }
  .da-app .devis:not(.devis--integre) .devis__poignee {
    display: block; position: absolute; top: 0; left: 0; right: 3.5rem; height: 2.4rem; touch-action: none; cursor: grab;
  }
  .da-app .devis:not(.devis--integre) .devis__poignee::before {
    content: ""; position: absolute; top: .7rem; left: calc(50% + 1.75rem); width: 2.6rem; height: 5px; margin-left: -1.3rem;
    border-radius: 999px; background: color-mix(in srgb, currentColor 28%, transparent);
  }
}
/* Mouvements doux (désactivés si mouvement réduit) */
@media (prefers-reduced-motion: no-preference) {
  .da-app .grille-photos img, .da-app .aa__vignette img { transition: transform .45s cubic-bezier(.2,.7,.2,1); }
  .da-app .grille-photos figure:hover img { transform: scale(1.04); }
  .da-app .avis__item figure, .da-app .devis__carte, .da-app .bouton, .da-app .bandeau-tete__devis, .da-app .devis__envoyer, .da-app .devis__suivant { transition: transform .25s, box-shadow .25s, background .25s, border-color .25s; }
  .da-app .avis__item figure:hover { transform: translateY(-3px); box-shadow: var(--ombre-forte); }
  .da-app .devis__carte:hover, .da-app .bouton:hover, .da-app .bandeau-tete__devis:hover, .da-app .devis__envoyer:hover, .da-app .devis__suivant:hover { transform: translateY(-1px); }
  .da-app .devis[open]:not(.devis--integre) { animation: da-ouvre .32s cubic-bezier(.2,.7,.2,1); }
  .da-app .devis[open]::backdrop { animation: da-fondu .32s ease; }
  .da-app .devis__etape:not([hidden]) { animation: da-fondu .3s ease; }
  @keyframes da-ouvre { from { opacity: 0; transform: translateY(14px) scale(.98); } }
  @keyframes da-fondu { from { opacity: 0; } }
  @media (max-width: 800px) {
    .da-app .devis[open]:not(.devis--integre) { animation: da-feuille .36s cubic-bezier(.2,.8,.2,1); }
    @keyframes da-feuille { from { transform: translateY(100%); } }
  }
}
