/* =========================================================
   Dépan'Serrure 89 — feuille de style unique
   Palette reprise du logo : vert anis + gris anthracite.
   Parti pris : le site sert a declencher un appel. Le numero
   reste visible en permanence, l'en-tete est sombre pour le
   detacher, et les tarifs sont traites comme un contenu de
   premier plan, pas comme une note de bas de page.
   ========================================================= */

:root {
  color-scheme: light;

  /* --- couleurs de marque --- */
  --anis: #7A9C08;
  --anis-vif: #97BE0B;
  --anis-fonce: #5E7A05;
  --graphite: #3B3B3D;
  --graphite-fonce: #2A2A2C;

  /* --- surfaces et texte (theme clair) --- */
  --fond: #F7F7F6;
  --surface: #FFFFFF;
  --surface-2: #F0F0EE;
  --encre: #1A1B18;
  --encre-2: #454741;
  --attenue: #6F7268;
  --filet: #E2E2DF;
  --filet-fort: #C6C6C1;

  --accent: var(--anis);
  --accent-texte: var(--anis-fonce);
  --sur-accent: #FFFFFF;

  --barre: #FFFFFF;
  --sur-barre: #1A1B18;
  --barre-attenue: #6F7268;

  --alerte: #C0392B;
  --alerte-fond: #FBEBE9;

  --ombre: 0 1px 2px rgba(26, 27, 24, .05), 0 12px 28px -18px rgba(26, 27, 24, .35);
  --rayon: 4px;
  --mesure: 66ch;
  --largeur: 1120px;
  --gouttiere: clamp(20px, 5vw, 40px);
}

/* =========================================================
   Bases
   ========================================================= */

*, *::before, *::after { box-sizing: border-box; }

html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

body {
  margin: 0;
  background: var(--fond);
  color: var(--encre);
  font-family: "Barlow", "Segoe UI", system-ui, sans-serif;
  font-size: 17px;
  line-height: 1.62;
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 {
  font-family: "Barlow Condensed", "Barlow", system-ui, sans-serif;
  margin: 0;
  line-height: 1.08;
  letter-spacing: 0;
  text-wrap: balance;
  font-weight: 700;
  text-transform: uppercase;
}
h1 { font-size: clamp(2.3rem, 6vw, 3.9rem); }
h2 { font-size: clamp(1.7rem, 3.8vw, 2.4rem); }
h3 { font-size: clamp(1.2rem, 2.4vw, 1.5rem); text-transform: none; }
h4 { text-transform: none; }
p { margin: 0; }

a { color: var(--accent-texte); text-underline-offset: .18em; }
a:hover { text-decoration-thickness: 2px; }

:where(a, button, input, textarea, select, summary):focus-visible {
  outline: 3px solid var(--accent);
  outline-offset: 2px;
  border-radius: 2px;
}

img { max-width: 100%; height: auto; display: block; }

mark.todo {
  background: repeating-linear-gradient(-45deg, #FFE08A, #FFE08A 6px, #FFD25E 6px, #FFD25E 12px);
  color: #4A3200;
  padding: .05em .35em;
  border-radius: 2px;
  font-size: .92em;
  font-weight: 600;
  text-transform: none;
}

/* =========================================================
   Gabarit
   ========================================================= */

.contenant {
  width: 100%;
  max-width: var(--largeur);
  margin-inline: auto;
  padding-inline: var(--gouttiere);
}

.saut-contenu {
  position: absolute; left: -9999px;
  background: var(--accent); color: var(--sur-accent);
  padding: 12px 20px; z-index: 200; font-weight: 700;
}
.saut-contenu:focus { left: 8px; top: 8px; }

/* =========================================================
   Bandeau de disponibilite + en-tete sombre
   ========================================================= */

.bandeau-info {
  background: var(--surface-2);
  color: var(--encre-2);
  border-bottom: 1px solid var(--filet);
  font-size: 14px;
  font-weight: 600;
}
.bandeau-info .contenant {
  display: flex; flex-wrap: wrap; gap: 6px 22px;
  align-items: center; justify-content: center;
  padding-block: 7px; text-align: center;
}

.entete {
  position: sticky; top: 0; z-index: 100;
  background: #FFFFFF;
  color: var(--encre);
  border-bottom: 2px solid var(--anis);
}
.entete-barre { display: flex; align-items: center; gap: 18px; min-height: 82px; }

.logo {
  display: flex; align-items: center; gap: 11px;
  text-decoration: none; color: var(--sur-barre);
  font-family: "Barlow Condensed", sans-serif;
  font-weight: 700; font-size: 1.4rem; text-transform: uppercase;
  margin-right: auto; padding: 6px 0; line-height: 1;
}
.logo img { display: block; height: 52px; width: auto; }
@media (max-width: 560px) { .logo img { height: 40px; } }
.logo .marque { display: block; }
.logo .marque em {
  display: block; font-style: normal;
  font-family: "Barlow", sans-serif;
  font-size: .46em; font-weight: 500; letter-spacing: .1em;
  color: var(--barre-attenue); margin-top: 4px; white-space: nowrap;
}
.logo svg { width: 32px; height: 32px; flex: none; color: var(--anis-vif); }

.nav-principale { display: none; }
@media (min-width: 1120px) { .nav-principale { display: flex; gap: 2px; align-items: center; } }
.nav-principale a {
  color: var(--encre-2); text-decoration: none;
  font-size: 15px; font-weight: 600; padding: 9px 12px;
  border-radius: var(--rayon); white-space: nowrap;
}
.nav-principale a:hover { background: var(--surface-2); opacity: 1; }
.nav-principale a[aria-current="page"] { color: var(--accent-texte); background: var(--surface-2); }

/* Le bouton d'appel est l'element le plus visible du site */
.appel-entete {
  display: inline-flex; align-items: center; gap: 9px;
  background: var(--anis); color: #161A06;
  text-decoration: none; font-weight: 700; font-size: 16px;
  padding: 12px 18px; border-radius: var(--rayon); white-space: nowrap;
}
.appel-entete:hover { background: var(--anis-vif); }
.appel-entete .libelle { display: none; }
@media (min-width: 560px) { .appel-entete .libelle { display: inline; } }

.bouton-menu {
  display: inline-flex; align-items: center; gap: 8px;
  background: none; border: 1px solid var(--filet-fort);
  color: var(--encre); font: inherit; font-size: 15px; font-weight: 600;
  padding: 10px 13px; border-radius: var(--rayon); cursor: pointer;
}
@media (min-width: 1120px) { .bouton-menu { display: none; } }

.menu-mobile { background: #FFFFFF; border-top: 1px solid var(--filet); }
.menu-mobile[hidden] { display: none !important; }
.menu-mobile ul { list-style: none; margin: 0; padding: 8px 0 16px; }
.menu-mobile a {
  display: block; padding: 13px var(--gouttiere);
  color: var(--encre-2); text-decoration: none; font-weight: 600;
  border-bottom: 1px solid var(--filet);
}
.menu-mobile a:hover { background: var(--surface-2); }
.menu-mobile .secondaire a { opacity: .75; font-weight: 400; }

/* =========================================================
   Ouverture
   ========================================================= */

.bandeau { padding: clamp(34px, 6vw, 66px) 0 clamp(28px, 4vw, 48px); }
.surtitre {
  font-size: 13px; font-weight: 700; letter-spacing: .14em;
  text-transform: uppercase; color: var(--accent-texte); margin-bottom: 14px;
}
.bandeau p.accroche {
  font-size: clamp(1.06rem, 2vw, 1.2rem); color: var(--encre-2);
  margin-top: 18px; max-width: 54ch;
}

.actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.bouton {
  display: inline-flex; align-items: center; gap: 9px;
  padding: 15px 24px; border-radius: var(--rayon);
  font-weight: 700; font-size: 17px; text-decoration: none;
  border: 1px solid transparent; cursor: pointer;
}
.bouton-primaire { background: var(--accent); color: #161A06; }
.bouton-primaire:hover { background: var(--anis-vif); }
.bouton-secondaire { background: var(--surface); color: var(--encre); border-color: var(--filet-fort); }
.bouton-secondaire:hover { border-color: var(--accent); }

/* Le numero, traite comme une enseigne */
.numero-geant {
  display: inline-flex; align-items: center; gap: 14px;
  --icone: var(--anis-fonce);
  background: var(--surface); color: var(--encre);
  border: 2px solid var(--anis);
  padding: 16px 24px; border-radius: var(--rayon);
  text-decoration: none; margin-top: 26px;
}
.numero-geant .lib {
  font-size: 12.5px; letter-spacing: .13em; text-transform: uppercase;
  color: var(--attenue); display: block; margin-bottom: 3px;
}
.numero-geant .num {
  font-family: "Barlow Condensed", sans-serif; font-weight: 700;
  font-size: clamp(1.7rem, 4vw, 2.3rem); line-height: 1;
  letter-spacing: .01em; display: block;
}
.numero-geant svg { color: var(--anis-fonce); }
.numero-geant:hover { background: var(--surface-2); border-color: var(--anis-fonce); }

/* =========================================================
   Sections
   ========================================================= */

.section { padding: clamp(38px, 5.5vw, 66px) 0; }
.section-alt { background: var(--surface-2); }
.section-tete { margin-bottom: clamp(22px, 3.5vw, 36px); }
.section-tete p { color: var(--encre-2); margin-top: 12px; max-width: var(--mesure); }

/* Les trois promesses : ce que le visiteur cherche a savoir tout de suite */
.reperes {
  display: grid; gap: 1px;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  background: var(--filet); border: 1px solid var(--filet);
  border-radius: var(--rayon); overflow: hidden;
}
.repere { background: var(--surface); padding: 24px 22px; }
.repere .val {
  font-family: "Barlow Condensed", sans-serif; font-weight: 700;
  font-size: 1.6rem; color: var(--encre); line-height: 1.15; text-transform: uppercase;
}
.repere .lib { color: var(--attenue); font-size: 14.5px; margin-top: 8px; }

/* Cartes de prestation */
.grille-metiers {
  display: grid; gap: 18px;
  grid-template-columns: repeat(auto-fit, minmax(262px, 1fr));
}
.carte-metier {
  display: flex; flex-direction: column; gap: 10px;
  background: var(--surface); border: 1px solid var(--filet);
  border-top: 3px solid var(--filet-fort);
  border-radius: var(--rayon); padding: 24px;
  text-decoration: none; color: inherit; box-shadow: var(--ombre);
}
.carte-metier:hover { border-color: var(--filet-fort); border-top-color: var(--anis); }
.carte-metier h3 { font-size: 1.22rem; }
.carte-metier p { color: var(--attenue); font-size: 15.5px; flex: 1; }
.carte-metier .fleche { color: var(--accent-texte); font-weight: 700; font-size: 15px; }

/* Grille tarifaire — le meilleur atout du site */
.tarifs {
  border: 1px solid var(--filet); border-radius: var(--rayon);
  overflow: hidden; background: var(--surface); box-shadow: var(--ombre);
}
.tarifs-ligne {
  display: flex; flex-wrap: wrap; gap: 8px 20px;
  align-items: baseline; justify-content: space-between;
  padding: 16px 22px; border-bottom: 1px solid var(--filet);
}
.tarifs-ligne:last-child { border-bottom: none; }
.tarifs-ligne .quoi { font-weight: 600; }
.tarifs-ligne .combien {
  font-family: "Barlow Condensed", sans-serif; font-weight: 700;
  font-size: 1.45rem; color: var(--accent-texte); white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.tarifs-ligne .combien small {
  display: block; font-family: "Barlow", sans-serif; font-weight: 500;
  font-size: 11.5px; color: var(--attenue); text-align: right; letter-spacing: .04em;
}
.tarifs-note {
  background: var(--surface-2); padding: 15px 22px;
  font-size: 14.5px; color: var(--encre-2);
}

/* Corps redactionnel */
.prose { max-width: var(--mesure); }
.prose > * + * { margin-top: 1.05em; }
.prose h2 { margin-top: 1.8em; }
.prose h3 { margin-top: 1.4em; }
.prose ul, .prose ol { padding-left: 1.3em; }
.prose li + li { margin-top: .4em; }
.prose li::marker { color: var(--accent); }
.prose strong { font-weight: 700; color: var(--encre); }
.prose table { width: 100%; border-collapse: collapse; }
.prose th, .prose td { text-align: left; padding: 11px 14px; border-bottom: 1px solid var(--filet); }
.prose thead th { background: var(--surface-2); font-size: 14px; }
.tableau-defilant { overflow-x: auto; }

.encart-devis {
  background: var(--surface); border: 1px solid var(--filet);
  border-left: 4px solid var(--accent); border-radius: var(--rayon);
  padding: clamp(22px, 4vw, 30px); margin-top: 42px; box-shadow: var(--ombre);
}
.encart-devis h2 { font-size: 1.5rem; }
.encart-devis p { color: var(--encre-2); margin-top: 10px; max-width: 56ch; }

.ariane { font-size: 14px; color: var(--attenue); padding-top: 20px; }
.ariane ol { list-style: none; display: flex; flex-wrap: wrap; gap: 7px; margin: 0; padding: 0; }
.ariane li:not(:last-child)::after { content: "›"; margin-left: 7px; color: var(--filet-fort); }
.ariane a { color: var(--attenue); }

/* =========================================================
   Formulaire
   ========================================================= */

.formulaire { display: grid; gap: 18px; max-width: 620px; }
.champ { display: flex; flex-direction: column; gap: 7px; }
.champ label { font-weight: 600; font-size: 15px; }
.champ .aide { font-size: 13.5px; color: var(--attenue); }
.champ input, .champ textarea, .champ select {
  font: inherit; padding: 12px 14px;
  border: 1px solid var(--filet-fort); border-radius: var(--rayon);
  background: var(--surface); color: var(--encre); width: 100%;
}
.champ input:focus, .champ textarea:focus, .champ select:focus { border-color: var(--accent); }
.champ textarea { min-height: 140px; resize: vertical; }
.obligatoire { color: var(--alerte); }
.consentement { display: flex; gap: 11px; align-items: flex-start; font-size: 14.5px; color: var(--encre-2); }
.consentement input { width: auto; margin-top: 4px; flex: none; }

/* =========================================================
   Pied de page
   ========================================================= */

.pied {
  background: var(--surface-2); color: var(--encre-2);
  border-top: 1px solid var(--filet);
  padding: clamp(38px, 5vw, 54px) 0 26px;
  margin-top: clamp(46px, 7vw, 80px);
}
.pied-grille { display: grid; gap: 30px; grid-template-columns: repeat(auto-fit, minmax(215px, 1fr)); }
.pied h2 {
  font-size: 12.5px; letter-spacing: .14em; text-transform: uppercase;
  color: var(--attenue); font-weight: 700; margin-bottom: 14px;
  font-family: "Barlow", sans-serif;
}
.pied ul { list-style: none; margin: 0; padding: 0; }
.pied li + li { margin-top: 8px; }
.pied a { color: var(--encre-2); text-decoration: none; }
.pied a:hover { color: var(--accent-texte); text-decoration: underline; }
.pied address { font-style: normal; }

.pied-bas {
  margin-top: 32px; padding-top: 20px;
  border-top: 1px solid var(--filet);
  display: flex; flex-wrap: wrap; gap: 10px 24px; align-items: center;
  font-size: 13.5px; color: var(--barre-attenue);
}
.pied-bas a { color: var(--barre-attenue); }

/* Barre d'appel fixe : sur ce metier, c'est l'element decisif */
.appel-fixe {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 90;
  display: grid; grid-template-columns: 2fr 1fr; gap: 1px;
  background: var(--filet-fort); border-top: 1px solid var(--filet-fort);
  box-shadow: 0 -6px 20px -12px rgba(0, 0, 0, .55);
}
.appel-fixe a {
  background: var(--surface); color: var(--encre); text-decoration: none;
  font-weight: 700; font-size: 15.5px; padding: 15px 10px; text-align: center;
}
.appel-fixe a.principal { background: var(--anis); color: #161A06; }
@media (min-width: 760px) { .appel-fixe { display: none; } }
@media (max-width: 759px) { body { padding-bottom: 56px; } }

/* ---------------------------------------------------------
   Ajustements petits ecrans : sur un depannage, l'essentiel
   doit tenir dans le premier ecran, sans faire defiler.
   --------------------------------------------------------- */
@media (max-width: 620px) {
  .bandeau-info { font-size: 12.5px; }
  .bandeau-info .contenant { gap: 3px 14px; padding-block: 5px; }
  /* la zone est deja repetee dans le corps de page */
  .bandeau-info span:nth-child(2) { display: none; }

  .entete-barre { gap: 10px; min-height: 62px; }
  .logo { font-size: 1.18rem; gap: 8px; }
  .logo svg { width: 26px; height: 26px; }
  .appel-entete { padding: 10px 13px; }
  .bouton-menu { padding: 9px 11px; }
  .bouton-menu svg { margin: 0; }
}
@media (max-width: 400px) {
  /* sous cette largeur, le mot "Menu" fait deborder la barre */
  .bouton-menu { font-size: 0; gap: 0; }
  .bouton-menu svg { width: 20px; height: 20px; }
}
