/* ============================================================
   Colson Elec — électricien à Bellevigny (85)
   Une seule page responsive :
   - desktop / tablette : >= 768px
   - mobile : < 768px (pensé à 390px)
   ============================================================ */

/* ---------- 1. Design system ---------- */
:root {
  --ink: #0B0B1A;
  --paper: #F4F4EF;
  --yellow: #FFC90A;
  --white: #FFFFFF;
  --ink-2: #3B3B52;
  --muted: #5A5A70;
  --muted-2: #8C8CA0;
  --light-on-dark: #C9C9D6;
  --grey-on-dark: #B9B9C9;
  --ink-soft: #1B1B2E;
  --line-dark: #2A2A40;
  --gold-text: #8A6A00;
  --green: #2BB673;

  --font: 'Bricolage Grotesque', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', Menlo, monospace;
  --hand: 'Kalam', 'Comic Sans MS', cursive;

  /* Gouttière horizontale, contenu max 1520px */
  --gout: max(clamp(20px, 4vw, 56px), calc((100% - 1520px) / 2));
  --sec: clamp(56px, 7vw, 100px);
}

/* ---------- 2. Base ---------- */
* { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
main { overflow-x: clip; }
h1, h2, h3, p, ul, ol, figure, blockquote, dl, dd { margin: 0; }
ul { padding: 0; list-style: none; }
img { display: block; max-width: 100%; }
button { font: inherit; color: inherit; }

a { color: var(--ink); text-decoration: none; }
a:hover { color: var(--gold-text); }

:focus-visible { outline: 2.5px solid currentColor; outline-offset: 3px; }

.sr-only {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0);
  white-space: nowrap; border: 0;
}

.saut {
  position: absolute; left: 12px; top: -60px; z-index: 200;
  background: var(--ink); color: var(--paper);
  padding: 12px 18px; border-radius: 999px; font-weight: 700;
  transition: top .2s;
}
.saut:focus { top: 12px; color: var(--paper); }

/* Surlignage feutre */
.marker {
  background: linear-gradient(177deg, transparent 14%, #FFC90A 14%, #FFC90A 84%, transparent 90%);
  padding: 0 .14em;
  margin: 0 -.04em;
  border-radius: .3em .1em .4em .15em;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}

.pastille { width: 8px; height: 8px; border-radius: 50%; background: var(--yellow); flex: none; display: inline-block; }
.pastille--verte { background: var(--green); }
.pastille--petite { width: 7px; height: 7px; }

.h2 {
  font-weight: 800;
  font-stretch: 85%;
  font-size: clamp(40px, 5vw, 76px);
  line-height: .95;
  letter-spacing: -.045em;
}

@keyframes opulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.8); opacity: .3; } }
@keyframes marq { to { transform: translateX(-50%); } }

/* ---------- 3. Loader ---------- */
.loader {
  display: none;
  position: fixed; inset: 0; z-index: 100;
  background: #FFC90A; color: var(--ink);
  align-items: center; justify-content: center;
  transition: transform .5s cubic-bezier(.7, 0, .2, 1);
}
.loader-actif .loader { display: flex; }
.loader-actif body { overflow: hidden; }
.loader.is-out { transform: translateY(-100%); }

.loader__col { display: flex; flex-direction: column; align-items: center; gap: 21px; }
.loader__ligne { display: flex; align-items: center; gap: 16px; }
.loader__logo {
  width: 64px; height: 64px; border-radius: 16px;
  background: #FFC90A; border: 2.5px solid var(--ink); box-shadow: 4px 4px 0 var(--ink);
  display: flex; align-items: center; justify-content: center;
  font-weight: 800; font-size: 36px; letter-spacing: -.06em;
  transform: rotate(-35deg) scale(.4); opacity: 0;
  transition: transform .8s cubic-bezier(.3, 1.6, .5, 1), opacity .3s;
}
.loader__nom-cache { display: block; overflow: hidden; padding: 4px 0; }
.loader__nom {
  display: block; font-weight: 800; font-size: 46px; letter-spacing: -.045em; line-height: 1.05;
  transform: translateY(115%);
  transition: transform .7s cubic-bezier(.2, .8, .2, 1) .25s;
}
.loader__barre { width: 240px; height: 3px; border-radius: 3px; background: rgba(11, 11, 26, .15); overflow: hidden; }
.loader__barre span {
  display: block; height: 100%; width: 0; background: var(--ink);
  transition: width 1.4s cubic-bezier(.65, 0, .25, 1) .4s;
}
.loader__kalam {
  font: 700 21px var(--hand); transform: rotate(-3deg); opacity: 0;
  transition: opacity .5s .9s;
}
.loader.is-in .loader__logo { transform: rotate(-5deg) scale(1); opacity: 1; }
.loader.is-in .loader__nom { transform: translateY(0); }
.loader.is-in .loader__barre span { width: 100%; }
.loader.is-in .loader__kalam { opacity: 1; }

/* ---------- 4. Composants partagés ---------- */
.badge {
  display: inline-flex; align-items: center; gap: 8px;
  background: #fff; border: 1.5px solid var(--ink); box-shadow: 2px 3px 0 var(--ink);
  transform: rotate(-2.5deg); white-space: nowrap;
  border-radius: 999px; padding: 8px 14px;
  font-weight: 600; font-size: 14px;
}

.hero__titre {
  font-weight: 800; font-stretch: 85%;
  line-height: .92; letter-spacing: -.045em;
}
.hero__chapo { color: var(--ink-2); }

.hero__visuel { position: relative; }
.hero__photo { overflow: hidden; background: #ddd; border: 9px solid #fff; }
.hero__photo img { width: 100%; height: 100%; object-fit: cover; }
.scotch { position: absolute; transform: rotate(-6deg); }
.sticker {
  position: absolute; border-radius: 50%;
  background: var(--ink); color: var(--yellow);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  line-height: 1; transform: rotate(12deg);
}
.sticker__haut { font-family: var(--hand); font-weight: 700; color: var(--paper); }
.sticker__bas { font-weight: 800; letter-spacing: -.04em; }
.carte-nom {
  position: absolute; background: #fff;
  border: 2px solid var(--ink); transform: rotate(-3deg);
  display: flex; align-items: center;
}
.carte-nom__nom { font-weight: 700; }
.carte-nom__sous, .carte-nom__avis { color: var(--muted); }
.carte-nom__note { font-weight: 800; }
.carte-nom__droite { text-align: right; white-space: nowrap; }

.note-or { font: 700 24px var(--hand); color: var(--gold-text); transform: rotate(-2deg); }

.etiquette {
  background: var(--ink); color: var(--yellow);
  border-radius: 999px; font-weight: 600; font-size: 13px;
  white-space: nowrap; display: inline-block;
}

.svc__lien { color: var(--ink); }
.svc__lien:hover { color: var(--ink); }
.svc__img { overflow: hidden; background: #ddd; }
.svc__img img { width: 100%; height: 100%; object-fit: cover; }
.svc__titre { font-weight: 800; font-stretch: 85%; letter-spacing: -.035em; line-height: 1; }
.svc__desc { line-height: 1.45; color: var(--ink-2); }
.svc__cta { white-space: nowrap; font-weight: 700; font-size: 15px; }
.svc:nth-child(1) { --rd: -3deg;   --rm: -2deg; }
.svc:nth-child(2) { --rd: 2deg;    --rm: 1.5deg; }
.svc:nth-child(3) { --rd: -1.5deg; --rm: -1deg; }
.svc:nth-child(4) { --rd: 2.5deg;  --rm: 2deg; }
.svc:nth-child(5) { --rd: -2deg;   --rm: -1.5deg; }
.svc:nth-child(6) { --rd: 1.5deg;  --rm: 1deg; }

.qui { background: #FFC90A; color: var(--ink); }
.polaroid { position: relative; background: #fff; border-radius: 6px; transform: rotate(-2.5deg); }
.polaroid__scotch { position: absolute; left: 50%; transform: rotate(3deg); }
.polaroid__photo { aspect-ratio: 4 / 3; overflow: hidden; border-radius: 3px; background: #ddd; }
.polaroid__photo img { width: 100%; height: 100%; object-fit: cover; }
.polaroid figcaption { font-family: var(--hand); font-weight: 700; color: var(--ink); }
.qui__p { line-height: 1.55; }
.qui__p--2 { opacity: .85; }
.stats { display: flex; gap: 40px; }
.stat { position: relative; }
.stat__cercle { position: absolute; overflow: visible; pointer-events: none; }
.stat__val { display: block; font-weight: 800; letter-spacing: -.04em; line-height: 1; }
.stat__label { display: block; font-family: var(--mono); font-weight: 500; margin-top: 6px; }

.zone__lead { color: var(--ink-2); }
.zone__aussi { font-size: 15px; line-height: 1.6; color: var(--muted); }
.kalam-aussi { font-family: var(--hand); font-weight: 700; color: var(--ink); }

.poteau { position: relative; }
.poteau__mat {
  position: absolute; left: 50%; bottom: 0; transform: translateX(-50%);
  background: linear-gradient(90deg, #7d7d78, #d4d4ce 45%, #8d8d88);
}
.poteau__ombre { position: absolute; left: 50%; transform: translateX(-50%); border-radius: 50%; background: rgba(11, 11, 26, .15); }
.poteau__tete {
  position: relative; z-index: 2; margin: 0 auto; width: max-content; max-width: 100%;
  background: var(--ink); transform: rotate(-1.5deg);
}
.poteau__tete-in { background: #FFC90A; text-align: center; }
.poteau__nom { display: block; font-weight: 800; font-stretch: 75%; text-transform: uppercase; line-height: 1; }
.poteau__tel { display: block; font-weight: 600; }

.panneau { position: relative; z-index: 1; display: flex; }
.panneau--d { justify-content: flex-start; }
.panneau--g { justify-content: flex-end; }
.panneau__cadre {
  display: block; background: var(--ink);
  clip-path: var(--clip); transform: rotate(var(--rot));
  transition: transform .3s;
}
.panneau__in {
  display: flex; align-items: center; white-space: nowrap;
  background: #fff; clip-path: var(--clip);
}
.panneau__ville { font-weight: 700; font-stretch: 75%; text-transform: uppercase; line-height: 1; }
.panneau__km { font-weight: 600; font-size: 16px; color: var(--ink-2); }
.panneau__temps { background: #FFC90A; border-radius: 999px; font-weight: 700; white-space: nowrap; }


.faq__item { border-top: 2px solid var(--ink); }
.faq__q { font-size: inherit; }
.faq__btn {
  cursor: pointer; width: 100%; background: transparent; border: 0;
  display: flex; justify-content: space-between; align-items: center;
  text-align: left; font-family: var(--font); font-weight: 700; color: var(--ink);
}
.faq__icone {
  flex: none; border-radius: 50%;
  background: var(--ink); color: #fff;
  display: flex; align-items: center; justify-content: center;
}
.faq__icone::before { content: '+'; }
.faq__btn[aria-expanded="true"] .faq__icone { background: #FFC90A; color: var(--ink); }
.faq__r { overflow: hidden; }
.js .faq__r { max-height: 0; }
.faq__r p { line-height: 1.55; color: var(--ink-2); max-width: 600px; }

.contact__boite { position: relative; background: var(--ink); color: var(--paper); }
.sticker-devis {
  position: absolute; border-radius: 50%;
  background: #FFC90A; color: var(--ink);
  border: 2.5px solid var(--ink); box-shadow: 3px 3px 0 var(--ink);
  display: flex; align-items: center; justify-content: center; text-align: center;
  font-family: var(--hand); font-weight: 700; line-height: 1;
  transform: rotate(10deg);
}
.contact__titre { font-size: clamp(40px, 5vw, 72px); }
.form { display: flex; flex-direction: column; gap: 16px; }
.champ {
  width: 100%;
  background: var(--paper); border: 0; border-radius: 14px;
  font-family: var(--font); font-weight: 500; color: var(--ink);
  outline: none;
}
.champ::placeholder { color: #75758A; opacity: 1; }
.champ:focus-visible { box-shadow: 0 0 0 3px #FFC90A; }
textarea.champ { line-height: 1.25; display: block; }
.form__btn {
  cursor: pointer; background: #FFC90A; color: var(--ink);
  border: 0; border-radius: 999px;
  font-family: var(--font); font-weight: 700; font-size: 17px;
  transition: background .2s;
}
.form__btn:hover { background: #fff; }
.form__btn:disabled { cursor: default; }
.infos dt { font-family: var(--mono); font-weight: 500; }



/* ============================================================
   5. DESKTOP / TABLETTE (>= 768px)
   ============================================================ */
@media (min-width: 768px) {
  .only-mobile { display: none !important; }

  [id] { scroll-margin-top: 90px; }

  /* Topbar */
  .topbar {
    background: var(--ink); color: var(--paper); font-size: 14px;
    padding: 9px var(--gout);
    display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap;
  }
  .topbar p { margin: 0; }
  .topbar__msg { display: flex; align-items: center; gap: 8px; }
  .topbar__infos { display: flex; gap: 22px; color: var(--grey-on-dark); flex-wrap: wrap; }

  /* Header */
  .header {
    position: sticky; top: 0; z-index: 20;
    background: rgba(244, 244, 239, .92);
    -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
    border-bottom: 1.5px solid rgba(11, 11, 26, .12);
    padding: 12px var(--gout);
    display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap;
  }
  .logo { display: flex; align-items: center; gap: 12px; line-height: 1; }
  .logo__carre {
    width: 46px; height: 46px; border-radius: 12px;
    background: #FFC90A; border: 2px solid var(--ink);
    display: flex; align-items: center; justify-content: center;
    font-weight: 800; font-size: 26px; letter-spacing: -.06em;
    transform: rotate(-5deg); box-shadow: 3px 3px 0 var(--ink);
  }
  .logo__nom { display: block; font-weight: 800; font-size: 22px; letter-spacing: -.04em; }
  .logo__sous { display: block; font-size: 13px; color: var(--muted); margin-top: 3px; white-space: nowrap; }

  .nav {
    display: flex; align-items: center; gap: 4px; flex-wrap: nowrap;
    background: #fff; border: 1.5px solid rgba(11, 11, 26, .1);
    border-radius: 999px; padding: 5px;
  }
  .nav a {
    padding: 10px 16px; border-radius: 999px;
    font-weight: 600; font-size: 15px; white-space: nowrap;
    transition: background .2s;
  }
  .nav a:hover { background: #FFC90A; color: var(--ink); }

  .header__actions { display: flex; align-items: center; gap: 10px; }
  .btn-devis {
    border: 2px solid var(--ink); border-radius: 999px;
    padding: 11px 18px; font-weight: 700; font-size: 15px; white-space: nowrap;
  }
  .btn-devis:hover { background: var(--ink); color: var(--paper); }
  .btn-appel {
    display: flex; align-items: center; gap: 10px;
    background: var(--ink); color: var(--paper);
    border-radius: 999px; padding: 5px 18px 5px 5px; white-space: nowrap;
  }
  .btn-appel:hover { background: #FFC90A; color: var(--ink); }
  .btn-appel img { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; border: 2px solid #FFC90A; }
  .btn-appel__txt { line-height: 1.1; }
  .btn-appel__petit { display: block; font-size: 12px; opacity: .75; }
  .btn-appel__num { display: block; font-weight: 800; font-size: 17px; letter-spacing: -.02em; }

  /* Hero */
  .hero {
    padding: clamp(36px, 5vw, 80px) var(--gout) var(--sec);
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr));
    gap: clamp(28px, 4vw, 64px);
    align-items: center;
  }
  .hero__texte { display: flex; flex-direction: column; align-items: flex-start; }
  .badge { margin-bottom: 26px; }
  .hero__titre { font-size: clamp(48px, 6.4vw, 100px); }
  .hero__chapo { margin: 26px 0 30px; font-size: 20px; line-height: 1.5; max-width: 500px; }
  .hero__note {
    display: flex; align-items: flex-end; gap: 4px;
    margin: -8px 0 4px 22px;
    font: 700 23px var(--hand); transform: rotate(-3deg);
  }
  .hero__note svg { flex: none; }

  /* Carte compteur */
  .compteur {
    background: var(--ink); color: var(--muted-2);
    border-radius: 28px; padding: clamp(14px, 2.4vw, 28px);
    display: inline-flex; flex-direction: column; gap: 12px;
    box-shadow: 0 40px 80px -40px rgba(11, 11, 26, .7);
    max-width: 100%;
    transform: rotate(-1deg);
    transition: transform .3s, box-shadow .3s;
  }
  .compteur:hover {
    color: var(--muted-2);
    transform: rotate(0deg) translateY(-4px);
    box-shadow: 0 0 0 4px #FFC90A, 0 40px 80px -40px rgba(11, 11, 26, .7);
  }
  .compteur__haut { display: flex; justify-content: space-between; align-items: center; gap: 16px; color: var(--paper); }
  .compteur__label { display: flex; align-items: center; gap: 10px; font-weight: 700; font-size: 16px; white-space: nowrap; }
  .compteur__icone {
    width: 30px; height: 30px; border-radius: 50%;
    background: #FFC90A; color: var(--ink);
    display: flex; align-items: center; justify-content: center; font-size: 16px;
  }
  .compteur__etat { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--grey-on-dark); white-space: nowrap; }

  .rouleaux {
    background: var(--ink-soft); border-radius: 14px;
    padding: clamp(8px, 1.4vw, 14px);
    display: flex; gap: clamp(3px, .5vw, 6px);
    font-size: clamp(24px, 3.3vw, 58px);
    overflow: hidden;
  }
  .rouleau {
    position: relative; flex: none;
    width: .64em; height: 1.15em; border-radius: .08em;
    overflow: hidden; background: var(--paper);
  }
  .rouleau:nth-child(n+9) { background: #FFC90A; }
  .rouleau:nth-child(odd):not(:first-child) { margin-left: .14em; }
  .rouleau::after {
    content: ''; position: absolute; inset: 0; pointer-events: none;
    background: linear-gradient(180deg, rgba(0, 0, 0, .28), transparent 30%, transparent 70%, rgba(0, 0, 0, .28));
  }
  .rouleau__bande {
    display: block;
    transform: translateY(calc(var(--c) * -10%));
    transition: transform calc(1.1s + var(--i) * .12s) cubic-bezier(.2, .8, .2, 1);
  }
  .js .compteur:not(.is-rolled) .rouleau__bande { transform: translateY(0); }
  .rouleau__bande span {
    height: 1.15em;
    display: flex; align-items: center; justify-content: center;
    font-family: var(--mono); font-weight: 500; color: var(--ink); line-height: 1;
  }
  .compteur__bouton {
    background: #FFC90A; color: var(--ink);
    border-radius: 999px; padding: 14px 20px;
    display: flex; justify-content: center; align-items: center; gap: 10px;
    font-weight: 700; font-size: 17px;
  }
  .compteur__fleche { font-size: 20px; }

  .hero__plus { display: flex; flex-wrap: wrap; align-items: center; gap: 20px; margin-top: 26px; }
  .lien-souligne { font-weight: 700; font-size: 17px; border-bottom: 2px solid var(--ink); padding-bottom: 2px; white-space: nowrap; }
  .hero__check { white-space: nowrap; font-size: 15px; font-weight: 500; color: var(--muted); }

  /* Hero : photo */
  .hero__visuel { width: 100%; max-width: 620px; justify-self: end; }
  .hero__photo {
    aspect-ratio: 4 / 5; max-height: min(680px, 78vh); width: 100%;
    border-radius: 10px; transform: rotate(1.8deg);
    box-shadow: 0 30px 60px -30px rgba(11, 11, 26, .55);
  }
  .hero__scotch { top: -14px; left: 36%; width: 124px; height: 34px; background: rgba(255, 201, 10, .8); }
  .hero__sticker { top: 30px; right: -14px; width: 112px; height: 112px; }
  .sticker__haut { font-size: 17px; }
  .sticker__bas { font-size: 34px; }
  .carte-nom {
    left: -12px; bottom: 40px; max-width: 300px;
    border-radius: 14px; padding: 14px 18px;
    box-shadow: 4px 4px 0 var(--ink);
    justify-content: space-between; gap: 12px;
  }
  .carte-nom__nom { font-size: 18px; }
  .carte-nom__sous { font-size: 14px; }
  .carte-nom__note { font-size: 22px; letter-spacing: -.02em; }
  .carte-nom__avis { font-size: 12px; }

  /* Services */
  .services {
    padding: 0 var(--gout) var(--sec);
    display: flex; flex-wrap: wrap; gap: clamp(28px, 4vw, 64px); align-items: flex-start;
  }
  .services__intro {
    position: sticky; top: 110px;
    flex: 1 1 280px; max-width: 400px;
    display: flex; flex-direction: column; gap: 18px;
  }
  .services__note-ligne { margin-top: -10px; }
  .services__lead { font-size: 18px; line-height: 1.5; color: var(--ink-2); }
  .btn-jaune {
    align-self: flex-start;
    background: #FFC90A; color: var(--ink);
    border-radius: 999px; padding: 16px 24px;
    font-weight: 700; font-size: 16px; white-space: nowrap;
  }
  .btn-jaune:hover { background: var(--ink); color: #FFC90A; }

  .services__liste { flex: 2 1 520px; min-width: 0; border-top: 2px solid var(--ink); }
  .svc__lien {
    display: grid;
    grid-template-columns: clamp(72px, 9vw, 120px) minmax(0, 1fr) auto;
    gap: clamp(14px, 2vw, 28px); align-items: center;
    padding: 18px 12px; border-bottom: 2px solid var(--ink);
    transition: background .2s;
  }
  .svc__lien:hover { background: #FFC90A; }
  .svc__img {
    aspect-ratio: 1; border-radius: 6px;
    border: 4px solid #fff;
    box-shadow: 0 8px 16px -8px rgba(11, 11, 26, .45);
    transform: rotate(var(--rd));
  }
  .svc__corps { min-width: 0; }
  .svc__titre-ligne { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
  .svc__titre { font-size: clamp(26px, 3vw, 40px); }
  .svc__titre-ligne .etiquette { padding: 5px 10px; transform: rotate(-4deg); }
  .svc__desc { font-size: 16px; margin-top: 6px; max-width: 560px; }

  /* Qui je suis */
  .qui {
    padding: var(--sec) var(--gout);
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 380px), 1fr));
    gap: clamp(28px, 4vw, 64px); align-items: center;
  }
  .polaroid { padding: 12px 12px 0; box-shadow: 0 30px 50px -30px rgba(11, 11, 26, .6); }
  .polaroid__scotch { top: -16px; width: 130px; height: 34px; margin-left: -65px; background: rgba(244, 244, 239, .75); }
  .polaroid figcaption { font-size: 26px; padding: 12px 6px 14px; }
  .qui__titre { margin-bottom: 20px; font-size: clamp(40px, 5vw, 72px); }
  .qui__p { margin-bottom: 16px; font-size: 18px; max-width: 520px; }
  .qui__p--2 { margin-bottom: 32px; }
  .stats { flex-wrap: wrap; }
  .stat__cercle { left: -20px; top: -18px; width: calc(100% + 40px); height: 84px; }
  .stat__val { font-size: 48px; }
  .stat__label { font-size: 12px; opacity: .8; }

  /* Secteur */
  .zone { padding: var(--sec) var(--gout); }
  .zone__inner { display: flex; flex-wrap: wrap; gap: clamp(32px, 5vw, 72px); align-items: center; }
  .zone__texte { flex: 1 1 300px; display: flex; flex-direction: column; gap: 20px; }
  .zone__lead { font-size: 18px; line-height: 1.5; max-width: 440px; }
  .zone__aussi { max-width: 440px; }
  .kalam-aussi { font-size: 21px; }

  .poteau { padding: 0 0 60px; flex: 1 1 560px; max-width: 620px; margin: 0 auto; }
  .poteau__mat { top: 30px; width: 16px; border-radius: 4px; }
  .poteau__ombre { bottom: -6px; width: 140px; height: 12px; }
  .poteau__tete { padding: 3px; border-radius: 10px; }
  .poteau__tete-in { border-radius: 8px; padding: 14px 26px; }
  .poteau__nom { font-size: clamp(26px, 3vw, 38px); }
  .poteau__tel { font-size: 16px; margin-top: 4px; }

  .panneau { margin-top: 14px; }
  .panneau--d {
    padding-left: calc(50% - 8px);
    --clip: polygon(0 0, calc(100% - 22px) 0, 100% 50%, calc(100% - 22px) 100%, 0 100%);
  }
  .panneau--g {
    padding-right: calc(50% - 8px);
    --clip: polygon(22px 0, 100% 0, 100% 100%, 22px 100%, 0 50%);
  }
  .panneau__cadre { padding: 3px; }
  .panneau__cadre:hover { transform: rotate(0deg) scale(1.04); }
  .panneau__in { gap: 14px; padding: 12px 36px 12px 18px; }
  .panneau--g .panneau__in { padding: 12px 18px 12px 36px; }
  .panneau__ville { font-size: clamp(18px, 2.2vw, 28px); }
  .panneau__temps { padding: 4px 10px; font-size: 13px; }


  /* Questions fréquentes */
  .faq {
    padding: 0 var(--gout) var(--sec);
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr));
    gap: clamp(24px, 4vw, 56px);
  }
  .faq__btn { padding: 22px 0; gap: 20px; font-size: 20px; }
  .faq__icone { width: 36px; height: 36px; font-size: 20px; }
  .faq__btn[aria-expanded="true"] .faq__icone::before { content: '–'; }
  .faq__r { transition: max-height .3s; }
  .js .faq__item.is-open .faq__r { max-height: 200px; }
  .faq__r p { margin: 0 0 22px; font-size: 17px; }

  /* Contact */
  .contact { padding: 0 var(--gout) clamp(40px, 5vw, 72px); }
  .contact__boite {
    border-radius: 32px; padding: clamp(24px, 4vw, 56px);
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 380px), 1fr));
    gap: clamp(28px, 4vw, 56px);
  }
  .sticker-devis { top: -40px; right: clamp(16px, 4vw, 48px); width: 104px; height: 104px; font-size: 21px; }
  .contact__intro { display: flex; flex-direction: column; gap: 28px; }
  .contact__lead { font-size: 18px; line-height: 1.5; opacity: .8; max-width: 420px; }
  .contact__tel {
    align-self: flex-start;
    background: #FFC90A; color: var(--ink);
    border-radius: 999px; padding: 20px 30px;
    font-weight: 800; font-size: clamp(22px, 2.4vw, 30px); letter-spacing: -.02em;
    white-space: nowrap;
  }
  .contact__tel:hover { background: #fff; color: var(--ink); }
  .infos { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; font-size: 15px; line-height: 1.6; opacity: .85; }
  .infos dt { font-size: 11px; opacity: .6; margin-bottom: 4px; }

  .form { background: var(--ink-soft); border-radius: 22px; padding: clamp(20px, 2.5vw, 32px); }
  .champ { padding: 16px 18px; font-size: 17px; }
  textarea.champ { resize: vertical; }
  .form__btn { padding: 18px; }

}

/* Tablette : la navigation passe sur une deuxième ligne */
@media (min-width: 768px) and (max-width: 1239.98px) {
  [id] { scroll-margin-top: 140px; }
  .nav {
    order: 3; flex-basis: 100%;
    background: none; border: 0; border-radius: 0;
    border-top: 1.5px solid rgba(11, 11, 26, .1);
    padding: 10px 0 0; margin-top: 2px;
    gap: 6px; overflow-x: auto;
  }
  .nav a { background: #fff; padding: 9px 14px; }
}


/* ============================================================
   6. MOBILE (< 768px)
   ============================================================ */
@media (max-width: 767.98px) {
  .only-desktop { display: none !important; }

  * { -webkit-tap-highlight-color: transparent; }
  main { padding-top: 64px; }
  [id] { scroll-margin-top: 72px; }
  .menu-open body, body.menu-open { overflow: hidden; }

  /* Loader */
  .loader__col { gap: 17px; }
  .loader__ligne { gap: 13px; }
  .loader__logo { width: 52px; height: 52px; border-radius: 13px; font-size: 29px; }
  .loader__nom { font-size: 36px; }
  .loader__barre { width: 180px; }
  .loader__kalam { font-size: 19px; }

  /* Header fixe */
  .mheader {
    position: fixed; top: 0; left: 0; right: 0; z-index: 55;
    height: 64px; padding: 0 16px;
    display: flex; align-items: center; justify-content: space-between;
    background: rgba(244, 244, 239, .96);
    border-bottom: 1.5px solid rgba(11, 11, 26, .1);
    transition: background .4s, border-color .4s;
  }
  .menu-open .mheader { background: #FFC90A; border-bottom-color: #FFC90A; }
  .mlogo { display: flex; align-items: center; gap: 10px; line-height: 1; }
  .mlogo__carre {
    width: 40px; height: 40px; border-radius: 11px;
    background: #FFC90A; border: 2px solid var(--ink);
    display: flex; align-items: center; justify-content: center;
    font-weight: 800; font-size: 22px; color: var(--ink);
    transform: rotate(-5deg); box-shadow: 2px 2px 0 var(--ink);
  }
  .mlogo__nom { display: block; font-weight: 800; font-size: 19px; letter-spacing: -.04em; color: var(--ink); }
  .mlogo__sous { display: block; font-size: 12px; margin-top: 2px; color: var(--muted); transition: color .4s; }
  .menu-open .mlogo__sous { color: var(--ink-2); }

  .burger {
    cursor: pointer; position: relative; flex: none;
    width: 52px; height: 52px; border-radius: 50%;
    border: 0; padding: 0; background: var(--ink);
  }
  .burger span {
    position: absolute; left: 15px; height: 2.5px; border-radius: 2px;
    transition: all .4s cubic-bezier(.7, 0, .2, 1);
  }
  .burger__l1 { width: 22px; top: 20px; background: var(--paper); }
  .burger__l2 { width: 13px; top: 29px; background: #FFC90A; }
  .menu-open .burger__l1 { top: 25px; transform: rotate(45deg); background: #FFC90A; }
  .menu-open .burger__l2 { top: 25px; width: 22px; transform: rotate(-45deg); }
  .burger:focus-visible { outline-color: var(--ink); }

  .mheader__prog {
    position: absolute; left: 0; bottom: -1.5px;
    height: 3px; width: 0; background: #FFC90A;
  }
  .menu-open .mheader__prog { opacity: 0; }

  /* Menu plein écran */
  .mmenu {
    position: fixed; inset: 0; z-index: 50;
    background: #FFC90A; color: var(--ink);
    padding: 88px 22px 26px;
    display: flex; flex-direction: column; justify-content: space-between;
    overflow-y: auto; overscroll-behavior: contain;
    clip-path: circle(0px at var(--cx, 340px) var(--cy, 32px));
    transition: clip-path .65s cubic-bezier(.7, 0, .2, 1);
    pointer-events: none;
  }
  .menu-open .mmenu { clip-path: circle(160% at var(--cx, 340px) var(--cy, 32px)); pointer-events: auto; }

  .mmenu__lien {
    display: flex; align-items: baseline; gap: 14px;
    border-bottom: 2px solid var(--ink); padding: 13px 0;
    color: var(--ink);
    opacity: 0; transform: translateY(36px);
    transition: opacity .45s, transform .55s cubic-bezier(.2, .8, .2, 1);
  }
  .mmenu__lien:hover { color: var(--ink); }
  .menu-open .mmenu__lien {
    opacity: 1; transform: translateY(0);
    transition-delay: calc(.18s + var(--k) * .06s);
  }
  .mmenu__num { font: 500 12px var(--mono); width: 22px; flex: none; }
  .mmenu__label { font-weight: 800; font-stretch: 85%; font-size: 46px; letter-spacing: -.05em; line-height: .95; }
  .mmenu__note { font: 700 17px var(--hand); transform: rotate(-4deg); margin-left: auto; white-space: nowrap; }

  .mmenu__bas {
    display: flex; flex-direction: column; gap: 10px;
    padding-top: 20px;
    opacity: 0; transform: translateY(24px);
    transition: opacity .5s, transform .6s cubic-bezier(.2, .8, .2, 1);
  }
  .menu-open .mmenu__bas { opacity: 1; transform: translateY(0); transition-delay: .35s; }
  .mmenu__dispo { display: flex; align-items: center; gap: 8px; font-size: 14px; color: var(--ink-2); margin-bottom: 4px; }
  .mmenu__appel {
    background: var(--ink); color: var(--paper);
    border-radius: 20px; padding: 16px 18px;
    display: flex; justify-content: space-between; align-items: center;
  }
  .mmenu__appel:hover { color: var(--paper); }
  .mmenu__appel-label { display: block; font-size: 13px; font-weight: 600; }
  .mmenu__appel-num { display: block; font-weight: 800; font-size: 26px; letter-spacing: -.03em; line-height: 1.1; color: #FFC90A; }
  .mmenu__appel-icone {
    width: 46px; height: 46px; border-radius: 50%;
    background: #FFC90A; color: var(--ink);
    display: flex; align-items: center; justify-content: center; font-size: 20px;
  }
  .mmenu__devis {
    min-height: 54px; border-radius: 999px;
    border: 2px solid var(--ink); background: transparent; color: var(--ink);
    display: flex; align-items: center; justify-content: center;
    font-weight: 700; font-size: 16px;
  }
  .mmenu__devis:hover { color: var(--ink); }

  /* Barre d'action fixe */
  .mbar {
    position: fixed; z-index: 30;
    left: 12px; right: 12px;
    bottom: calc(16px + env(safe-area-inset-bottom, 0px));
    display: grid; grid-template-columns: 1fr 1.25fr; gap: 6px;
    background: var(--ink); border-radius: 999px; padding: 6px;
    box-shadow: 0 18px 36px -12px rgba(11, 11, 26, .55);
    transition: transform .45s cubic-bezier(.7, 0, .2, 1);
  }
  .menu-open .mbar { transform: translateY(140%); }
  .mbar__devis {
    min-height: 54px; border-radius: 999px;
    border: 1.5px solid #3a3a52; background: transparent; color: var(--paper);
    display: flex; align-items: center; justify-content: center;
    font-weight: 700; font-size: 16px;
  }
  .mbar__devis:hover { color: var(--paper); }
  .mbar__appel {
    min-height: 54px; border-radius: 999px;
    background: #FFC90A; color: var(--ink);
    display: flex; align-items: center; justify-content: center; gap: 10px;
    font-weight: 700; font-size: 16px;
    transition: transform .15s;
  }
  .mbar__appel:hover { color: var(--ink); }
  .mbar__appel:active { transform: scale(.97); }
  .mbar__pulse { position: relative; width: 9px; height: 9px; }
  .mbar__pulse::before {
    content: ''; position: absolute; inset: 0; border-radius: 50%;
    background: var(--ink); animation: opulse 1.8s ease-in-out infinite;
  }

  /* Hero */
  .hero { padding: 28px 20px 72px; }
  .badge { padding: 8px 13px; margin-bottom: 28px; }
  .hero__titre { font-size: 47px; line-height: .93; text-wrap: balance; }
  .hero__chapo { margin-top: 20px; font-size: 17px; line-height: 1.55; }
  .hero__visuel { margin: 40px 8px 0; }
  .hero__photo {
    aspect-ratio: 1 / 1.05; border-radius: 8px; border-width: 8px;
    transform: rotate(2deg);
    box-shadow: 0 26px 50px -26px rgba(11, 11, 26, .55);
  }
  .hero__scotch { top: -13px; left: 34%; width: 104px; height: 30px; background: rgba(255, 201, 10, .82); }
  .hero__sticker { top: 22px; right: -14px; width: 92px; height: 92px; gap: 2px; }
  .sticker__haut { font-size: 15px; }
  .sticker__bas { font-size: 28px; }
  .carte-nom {
    left: -14px; bottom: -20px;
    border-radius: 12px; padding: 10px 14px;
    box-shadow: 3px 3px 0 var(--ink);
    gap: 16px;
  }
  .carte-nom__nom { font-size: 16px; }
  .carte-nom__sous { font-size: 12px; }
  .carte-nom__note { font-size: 18px; }
  .carte-nom__avis { font-size: 11px; }

  /* Bandeau défilant */
  .bandeau {
    margin: 0 -20px 72px;
    transform: rotate(-2deg);
    background: #FFC90A;
    border-top: 2px solid var(--ink); border-bottom: 2px solid var(--ink);
    overflow: hidden; padding: 12px 0;
  }
  .bandeau__piste { display: flex; width: max-content; animation: marq 26s linear infinite; }
  .bandeau__piste span {
    display: flex; align-items: center; gap: 18px; padding-right: 18px;
    font-weight: 800; font-stretch: 80%; font-size: 24px; letter-spacing: -.02em;
    text-transform: uppercase; white-space: nowrap;
  }
  .bandeau__piste span::after {
    content: ''; width: 9px; height: 9px; border-radius: 50%; background: var(--ink); flex: none;
  }

  /* Services : carrousel */
  .services { padding: 0 0 72px; }
  .services__intro { padding: 0 20px; margin-bottom: 24px; }
  .services .h2 { font-size: 42px; }
  .services__note-ligne { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin-top: 4px; }
  .note-or { font-size: 21px; display: inline-block; }
  .glissez { font: 500 11px var(--mono); color: var(--muted); white-space: nowrap; }

  .services__liste {
    display: flex; overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
  }
  .services__liste::-webkit-scrollbar { display: none; }
  .services__liste { gap: 18px; padding: 10px 20px 18px; }
  .svc { flex: none; width: 272px; scroll-snap-align: center; display: flex; }
  .svc__lien {
    width: 100%;
    display: flex; flex-direction: column; gap: 14px;
    background: #fff; border: 2px solid var(--ink);
    border-radius: 8px 22px 10px 26px;
    padding: 14px 14px 22px;
    box-shadow: 4px 4px 0 var(--ink);
  }
  .svc__media { position: relative; }
  .svc__img { aspect-ratio: 4 / 3; border-radius: 6px; transform: rotate(var(--rm)); }
  .svc__etiquette-m { position: absolute; top: -6px; right: -4px; padding: 6px 11px; transform: rotate(5deg); }
  .svc__corps { display: contents; }
  .svc__titre-ligne { display: flex; align-items: baseline; gap: 10px; padding: 0 4px; }
  .svc__num { font: 500 12px var(--mono); color: var(--gold-text); }
  .svc__titre { font-size: 26px; }
  .svc__desc { font-size: 15px; padding: 0 4px; }
  .svc__cta {
    align-self: flex-start; margin: 2px 4px 0;
    padding: 0 0 2px; border-bottom: 2px solid var(--ink);
  }

  /* Qui je suis */
  .qui { padding: 72px 20px 76px; }
  .polaroid { padding: 10px 10px 0; margin: 0 6px 44px; box-shadow: 0 26px 44px -26px rgba(11, 11, 26, .6); }
  .polaroid__scotch { top: -14px; width: 110px; height: 30px; margin-left: -55px; background: rgba(244, 244, 239, .78); }
  .polaroid figcaption { font-size: 22px; padding: 10px 4px 12px; }
  .qui__titre { font-size: 38px; margin-bottom: 20px; }
  .qui__p { font-size: 16px; margin-bottom: 12px; }
  .qui__p--2 { margin-bottom: 40px; }
  .stats { padding-left: 12px; }
  .stat__cercle { left: -18px; top: -16px; width: calc(100% + 36px); height: 72px; }
  .stat__val { font-size: 38px; }
  .stat__label { font-size: 11px; }

  /* Secteur */
  .zone { padding: 76px 20px 72px; }
  .zone__titre { font-size: 42px; margin-bottom: 10px; }
  .zone__lead { font-size: 16px; line-height: 1.55; margin-bottom: 40px; }
  .poteau { padding-bottom: 40px; }
  .poteau__mat { top: 24px; width: 13px; border-radius: 3px; }
  .poteau__ombre { bottom: -5px; width: 110px; height: 10px; }
  .poteau__tete { padding: 3px; border-radius: 9px; }
  .poteau__tete-in { border-radius: 7px; padding: 10px 18px; }
  .poteau__nom { font-size: 24px; }
  .poteau__tel { font-size: 13px; margin-top: 3px; }
  .panneau { margin-top: 11px; }
  .panneau--d {
    padding-left: calc(50% - 6px);
    --clip: polygon(0 0, calc(100% - 16px) 0, 100% 50%, calc(100% - 16px) 100%, 0 100%);
  }
  .panneau--g {
    padding-right: calc(50% - 6px);
    --clip: polygon(16px 0, 100% 0, 100% 100%, 16px 100%, 0 50%);
  }
  .panneau__cadre { padding: 2.5px; }
  .panneau__in { gap: 8px; padding: 9px 24px 9px 12px; }
  .panneau--g .panneau__in { padding: 9px 12px 9px 24px; }
  .panneau__ville { font-size: 18px; }
  .panneau__temps { padding: 3px 7px; font-size: 11px; }
  .zone__aussi--m { margin-top: 40px; }
  .kalam-aussi { font-size: 20px; }


  /* Questions fréquentes */
  .faq { padding: 0 20px 72px; }
  .faq__titre { font-size: 36px; line-height: 1; margin-bottom: 24px; }
  .faq__btn { min-height: 60px; padding: 16px 0; gap: 14px; font-size: 17px; }
  .faq__icone { width: 34px; height: 34px; font-size: 18px; transition: transform .3s, background .3s; }
  .faq__btn[aria-expanded="true"] .faq__icone { transform: rotate(45deg); }
  .faq__r { transition: max-height .35s; }
  .js .faq__item.is-open .faq__r { max-height: 180px; }
  .faq__r p { margin: 0 0 18px; font-size: 15px; }

  /* Contact */
  .contact { padding: 36px 12px 32px; }
  .contact__boite {
    border-radius: 28px; padding: 36px 20px 24px;
    display: flex; flex-direction: column; gap: 16px;
  }
  .sticker-devis { top: -34px; right: 18px; width: 88px; height: 88px; font-size: 18px; }
  .contact__intro { display: flex; flex-direction: column; gap: 16px; }
  .contact__titre { font-size: 36px; max-width: 220px; }
  .contact__lead-m { font-size: 15px; line-height: 1.5; color: var(--light-on-dark); }
  .champ { padding: 16px; font-size: 16px; }
  textarea.champ { resize: none; height: calc(3 * 1.25em + 32px); }
  .form__btn { min-height: 56px; padding: 16px; }
  .infos--m {
    display: grid; grid-template-columns: 1fr 1fr; gap: 12px;
    font-size: 13px; line-height: 1.5; color: var(--light-on-dark);
    padding-top: 8px; margin-top: 4px; border-top: 1px solid var(--line-dark);
  }
  .infos--m dt { font-size: 10px; color: var(--muted-2); margin-bottom: 3px; }

  /* Footer */
}

/* Petits écrans : les panneaux restent dans l'écran */
@media (max-width: 389.98px) {
  .panneau--d { padding-left: calc(50% - 20px); }
  .panneau--g { padding-right: calc(50% - 20px); }
}


/* ============================================================
   8. PAGES INTÉRIEURES (pages ville, pages services, mentions)
   Générées par build.js. Réutilisent les composants ci-dessus ;
   ce bloc n'ajoute que ce qui leur est propre.
   ============================================================ */

.nowrap { white-space: nowrap; }
/* le texte réservé aux lecteurs d'écran reste dans sa carte (sinon il déborde du carrousel mobile) */
.svc__titre { position: relative; }

/* Fil d'Ariane */
.fil { font: 500 13px/1.4 var(--mono); color: var(--muted); margin-bottom: 18px; }
.fil ol { display: flex; flex-wrap: wrap; margin: 0; padding: 0; list-style: none; }
.fil li { display: inline-flex; align-items: center; }
.fil li + li::before { content: '›'; margin: 0 8px; color: var(--muted-2); }
.fil a { color: var(--muted); text-decoration: underline; text-decoration-color: rgba(11, 11, 26, .25); text-underline-offset: 3px; }
.fil a:hover { color: var(--ink); text-decoration-color: currentColor; }
.fil [aria-current] { color: var(--ink); }

/* Hero */
.hero--int .hero__titre { text-wrap: balance; overflow-wrap: anywhere; }
.hero-int__sous {
  font: 700 22px/1.25 var(--hand); color: var(--gold-text);
  transform: rotate(-1.5deg); transform-origin: left center; margin-top: 14px;
}
.hero-int__intro { max-width: 560px; }
.hero-int__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 26px; }
.btn-tel {
  display: inline-flex; align-items: center; gap: 12px;
  background: var(--yellow); color: var(--ink);
  border: 2px solid var(--ink); border-radius: 999px; box-shadow: 4px 4px 0 var(--ink);
  padding: 12px 24px 12px 12px;
  font-weight: 800; font-size: 21px; letter-spacing: -.01em; white-space: nowrap;
  transition: transform .15s, box-shadow .15s;
}
.btn-tel:hover { color: var(--ink); transform: translate(-2px, -2px); box-shadow: 6px 6px 0 var(--ink); }
.btn-tel__icone {
  width: 34px; height: 34px; border-radius: 50%; flex: none;
  background: var(--ink); color: var(--yellow);
  display: flex; align-items: center; justify-content: center; font-size: 17px;
}
.btn-ligne { font-weight: 700; font-size: 17px; border-bottom: 2px solid var(--ink); padding-bottom: 2px; }
.hero-int__checks { display: flex; flex-wrap: wrap; gap: 6px 20px; margin-top: 22px; font-size: 15px; font-weight: 500; color: var(--muted); }
.hero-int__checks span { white-space: nowrap; }
.hero-int__visuel .polaroid { transform: rotate(2deg); }
.hero-int__visuel .polaroid__scotch { background: rgba(255, 201, 10, .82); }

/* Blocs */
.bloc__chapo { color: var(--ink-2); line-height: 1.55; }

/* Prestations du service */
.prestas { border-top: 2px solid var(--ink); }
.presta {
  display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 14px; align-items: baseline;
  padding: 16px 8px; border-bottom: 2px solid var(--ink);
}
.presta__num { font: 500 13px var(--mono); color: var(--gold-text); }
.presta__titre { font-weight: 800; font-stretch: 85%; letter-spacing: -.03em; line-height: 1.05; font-size: clamp(22px, 2.3vw, 32px); }
.presta__desc { margin-top: 4px; color: var(--ink-2); font-size: 16px; line-height: 1.45; }

/* À savoir */
.savoir__carte {
  position: relative; background: #fff;
  border: 2px solid var(--ink); border-radius: 8px 26px 10px 30px; box-shadow: 6px 6px 0 var(--ink);
}
.savoir__scotch { top: -15px; left: 50%; margin-left: -62px; width: 124px; height: 32px; background: rgba(255, 201, 10, .82); }
.savoir__note { display: inline-block; font: 700 24px var(--hand); color: var(--gold-text); transform: rotate(-2deg); }
.savoir__titre { font-size: clamp(32px, 3.6vw, 54px); margin: 6px 0 20px; text-wrap: balance; }
.savoir__texte p { line-height: 1.6; color: var(--ink-2); }

/* Ville et alentours */
.local__texte { display: flex; flex-direction: column; align-items: flex-start; }
.local__texte .h2 { text-wrap: balance; }
.local__route {
  display: inline-flex; align-items: center; gap: 8px;
  background: #fff; border: 1.5px solid var(--ink); border-radius: 999px; box-shadow: 2px 2px 0 var(--ink);
  padding: 7px 14px; font: 500 14px/1.3 var(--mono);
}
.local__p { line-height: 1.6; color: var(--ink-2); }
.pastilles { display: flex; flex-wrap: wrap; gap: 8px; }
.pastilles li {
  background: #fff; border: 1.5px solid var(--ink); border-radius: 999px;
  padding: 6px 13px; font-weight: 600; font-size: 15px;
}
.pastilles li:nth-child(odd) { transform: rotate(-1.5deg); }
.pastilles li:nth-child(3n) { background: var(--yellow); transform: rotate(1.5deg); }
.local__aside { display: flex; flex-direction: column; align-items: center; gap: 14px; }
.local__autour { font: 700 21px var(--hand); color: var(--gold-text); transform: rotate(-1.5deg); margin-top: 8px; }
.local__aside .pastilles { justify-content: center; }
.poteau--mini { width: 100%; }
.poteau--mini .panneau { justify-content: center; padding: 0; }
.poteau--mini .panneau__cadre { --clip: polygon(0 0, calc(100% - 22px) 0, 100% 50%, calc(100% - 22px) 100%, 0 100%); }
.poteau--mini .panneau__in { gap: 12px; }

/* Comment ça se passe */
.etapes__liste { display: grid; gap: 18px; margin: 0; padding: 0; list-style: none; }
.etape {
  position: relative; background: #fff;
  border: 2px solid var(--ink); border-radius: 8px 22px 10px 26px;
  padding: 22px 20px 20px;
}
.etape:nth-child(odd) { transform: rotate(-.8deg); }
.etape:nth-child(even) { transform: rotate(.8deg); }
.etape__num {
  width: 44px; height: 44px; border-radius: 50%; margin-bottom: 14px;
  background: var(--yellow); border: 2px solid var(--ink);
  display: flex; align-items: center; justify-content: center;
  font-weight: 800; font-size: 22px;
}
.etape__titre { font-weight: 800; font-stretch: 85%; letter-spacing: -.03em; line-height: 1.05; font-size: 24px; }
.etape__txt { margin-top: 8px; color: var(--ink-2); line-height: 1.5; font-size: 16px; }

/* Questions fréquentes : réponses plus longues que sur l'accueil */
.js .faq--int .faq__item.is-open .faq__r { max-height: 640px; }

/* Pages liées */
.liens-page__titre { font-weight: 800; font-stretch: 85%; letter-spacing: -.035em; line-height: 1; font-size: clamp(26px, 2.6vw, 36px); margin-bottom: 16px; }
.boutons { display: flex; flex-wrap: wrap; gap: 10px; }
.bouton {
  display: inline-flex; align-items: center; min-height: 48px; padding: 10px 18px;
  background: #fff; border: 2px solid var(--ink); border-radius: 999px; box-shadow: 3px 3px 0 var(--ink);
  font-weight: 700; font-size: 16px; line-height: 1.2;
  transition: transform .15s, box-shadow .15s, background .15s;
}
.bouton:hover { color: var(--ink); background: var(--yellow); transform: translate(-1px, -1px); box-shadow: 4px 4px 0 var(--ink); }
.liens-page__mere { margin-top: 22px; }

/* Mes secteurs (pages services) */
.villes-liens { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: 18px; }
.ville-lien {
  position: relative; display: flex; flex-direction: column; align-items: flex-start; gap: 6px;
  background: #fff; border: 2px solid var(--ink); border-radius: 10px; box-shadow: 4px 4px 0 var(--ink);
  padding: 16px 48px 16px 18px; transform: rotate(var(--rot, 0deg));
  transition: transform .2s, background .2s;
}
.ville-lien::after { content: '→'; position: absolute; right: 16px; top: 50%; transform: translateY(-50%); font-weight: 800; font-size: 22px; }
.ville-lien:hover { color: var(--ink); background: var(--yellow); transform: rotate(0deg) translateY(-2px); }
.ville-lien__service { font: 500 12px var(--mono); color: var(--muted); }
.ville-lien__ville { font-weight: 800; font-stretch: 80%; text-transform: uppercase; letter-spacing: -.01em; font-size: 24px; line-height: 1; }
.ville-lien__temps { background: var(--yellow); border-radius: 999px; padding: 3px 9px; font-weight: 700; font-size: 12px; }
.ville-lien:hover .ville-lien__temps { background: #fff; }
.secteurs__aussi { font-size: 15px; line-height: 1.6; color: var(--muted); max-width: 760px; }

/* Ce que je regarde (pages services) */
.expert__grille { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr)); gap: 22px 32px; }
.expert__item { border-top: 2px solid var(--ink); padding-top: 14px; }
.expert__num { font: 500 13px var(--mono); color: var(--gold-text); }
.expert__titre { font-weight: 800; font-stretch: 85%; letter-spacing: -.03em; line-height: 1.05; font-size: clamp(22px, 2.2vw, 28px); margin: 6px 0 10px; }
.expert__item p { color: var(--ink-2); line-height: 1.6; }

/* Quel est votre problème ? (dépannage) */
.problemes__boutons { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 28px; }
.problemes__fiches { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: 18px; }
.fiche {
  background: #fff; border: 2px solid var(--ink); border-radius: 8px 22px 10px 26px;
  padding: 22px; transition: box-shadow .2s;
}
.fiche:target { box-shadow: 0 0 0 4px var(--yellow), 6px 6px 0 var(--ink); }
.fiche__label {
  display: inline-block; background: var(--ink); color: var(--yellow);
  border-radius: 999px; padding: 4px 11px; font-weight: 600; font-size: 13px; transform: rotate(-3deg);
}
.fiche__titre { font-weight: 800; font-stretch: 85%; letter-spacing: -.03em; line-height: 1.05; font-size: 24px; margin: 12px 0 8px; }
.fiche p { color: var(--ink-2); line-height: 1.55; }

/* Pages texte (mentions légales, 404) */
.page-texte__titre { font-size: clamp(40px, 5.2vw, 84px); text-wrap: balance; margin-bottom: 8px; }
.texte-legal { max-width: 760px; }
.texte-legal h2 { font-weight: 800; font-stretch: 85%; letter-spacing: -.03em; line-height: 1.05; font-size: clamp(26px, 2.8vw, 36px); margin: 40px 0 12px; }
.texte-legal p { line-height: 1.65; color: var(--ink-2); font-size: 17px; }
.texte-legal p + p { margin-top: 10px; }
.texte-legal a { text-decoration: underline; text-underline-offset: 3px; }
.texte-legal__maj { margin-top: 40px !important; font: 500 13px var(--mono) !important; color: var(--muted) !important; }
.a-completer { background: rgba(255, 201, 10, .5); border-radius: 3px; padding: 0 4px; color: var(--ink); }
.page-404 .note-or { margin-bottom: 14px; display: inline-block; }
.page-404 .bloc__chapo { margin: 22px 0 26px; max-width: 560px; }
.page-404 .boutons { margin-top: 30px; }

/* Accueil : grille Villes × services */
.grille-villes { border-top: 2px solid var(--ink); padding-top: 22px; }
.grille-villes__titre { font: 700 22px var(--hand); color: var(--gold-text); transform: rotate(-1.5deg); transform-origin: left center; margin-bottom: 14px; }
.grille-villes__ligne { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; padding: 10px 0; border-bottom: 1.5px dashed rgba(11, 11, 26, .25); }
.grille-villes__ville { font-weight: 800; font-stretch: 80%; text-transform: uppercase; letter-spacing: -.01em; font-size: 18px; line-height: 1; min-width: 190px; }
.grille-villes__liens { display: flex; flex-wrap: wrap; gap: 6px; }
.grille-villes__liens a {
  background: #fff; border: 1.5px solid var(--ink); border-radius: 999px;
  padding: 6px 11px; font-weight: 600; font-size: 13px; line-height: 1.2;
  transition: background .15s;
}
.grille-villes__liens a:hover { background: var(--yellow); color: var(--ink); }

/* Pied : pages électricien par ville */

/* ---------- Desktop / tablette ---------- */
@media (min-width: 768px) {
  .hero--int { padding-top: clamp(24px, 3vw, 48px); padding-bottom: clamp(56px, 6vw, 96px); }
  .hero--int .hero__titre { font-size: clamp(40px, 5.2vw, 84px); }
  .hero--int .hero__chapo { margin: 22px 0 28px; font-size: 19px; }
  .hero--int .badge { margin-bottom: 22px; }
  .hero-int__visuel { max-width: 560px; }
  .hero-int__visuel .polaroid { padding: 12px 12px 56px; }
  .hero--int .hero__sticker { width: 104px; height: 104px; top: 26px; }

  .bloc { padding: 0 var(--gout) var(--sec); }
  .bloc__tete { display: flex; flex-direction: column; gap: 16px; }
  .bloc__tete .h2 { text-wrap: balance; }
  .bloc__chapo { font-size: 18px; max-width: 480px; }
  .prestas-bloc, .secteurs, .expert, .problemes { display: grid; gap: clamp(24px, 3vw, 44px); }
  .prestas-bloc { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(28px, 4vw, 72px); align-items: start; }
  .prestas-bloc .bloc__tete { position: sticky; top: 110px; }

  .savoir__carte { padding: clamp(28px, 4vw, 56px); transform: rotate(-.5deg); }
  .savoir__texte { columns: 2; column-gap: clamp(28px, 4vw, 56px); }
  .savoir__texte p { font-size: 17px; break-inside: avoid; margin-bottom: 14px; }

  .local { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(28px, 4vw, 72px); align-items: start; }
  .local__texte { gap: 18px; }
  .local__p { font-size: 17px; max-width: 640px; }
  .poteau--mini { padding: 0 0 64px; max-width: 460px; margin: 0 auto; flex: none; }

  .etapes .h2 { margin-bottom: 30px; }
  .etapes__liste { grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); }

  .liens-page { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 440px), 1fr)); gap: 32px 64px; }

  .faq--int .faq__btn { font-size: 19px; }
  .services--int .h2 { font-size: clamp(36px, 3.8vw, 58px); text-wrap: balance; }

  .contact--int .contact__lead { font-size: 18px; line-height: 1.5; opacity: .85; max-width: 440px; }

  .page-texte { padding-top: clamp(28px, 4vw, 56px); }

  .zone .grille-villes { margin-top: clamp(40px, 5vw, 64px); }
  .grille-villes__liste { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 540px), 1fr)); column-gap: 56px; }
}

/* ---------- Mobile ---------- */
@media (max-width: 767.98px) {
  .fil { font-size: 12px; margin-bottom: 16px; }
  .hero--int { padding: 22px 20px 60px; }
  .hero--int .badge { margin-bottom: 20px; }
  .hero--int .hero__titre { font-size: clamp(33px, 10.2vw, 40px); line-height: .95; }
  .hero-int__sous { font-size: 19px; margin-top: 12px; }
  .hero--int .hero__chapo { margin: 16px 0 22px; font-size: 16px; }
  .btn-tel { font-size: 19px; padding: 10px 20px 10px 10px; }
  .btn-ligne { font-size: 16px; }
  .hero-int__checks { font-size: 14px; margin-top: 18px; }
  .hero-int__visuel { margin: 36px 10px 0; }
  .hero-int__visuel .polaroid { padding: 9px 9px 40px; margin: 0; }
  .hero--int .hero__sticker { width: 84px; height: 84px; top: 14px; right: -10px; }
  .hero--int .sticker__haut { font-size: 14px; }
  .hero--int .sticker__bas { font-size: 24px; }

  .bloc { padding: 0 20px 64px; }
  .bloc__tete { margin-bottom: 22px; }
  .bloc .h2 { font-size: 36px; text-wrap: balance; }
  .bloc__chapo { font-size: 16px; margin-top: 12px; }

  .presta { padding: 14px 4px; grid-template-columns: 30px minmax(0, 1fr); gap: 10px; }
  .presta__titre { font-size: 22px; }
  .presta__desc { font-size: 15px; }

  .services--int .h2 { font-size: 36px; text-wrap: balance; }
  .services--int .services__lead { margin-top: 14px; font-size: 16px; line-height: 1.55; color: var(--ink-2); }

  .savoir__carte { padding: 30px 20px 24px; transform: rotate(-.4deg); box-shadow: 4px 4px 0 var(--ink); }
  .savoir__note { font-size: 21px; }
  .bloc .savoir__titre { font-size: 32px; }
  .savoir__texte p { font-size: 16px; }
  .savoir__texte p + p { margin-top: 12px; }

  .local__aside { margin-top: 44px; }
  .local__route { font-size: 12px; }
  .local__p { font-size: 16px; margin-top: 12px; }
  .pastilles li { font-size: 14px; }
  .poteau--mini { margin: 0 auto; padding-bottom: 52px; max-width: 340px; }
  .poteau--mini .panneau__ville { font-size: 17px; }

  .etapes .h2 { margin-bottom: 22px; }
  .etapes__liste { gap: 14px; }
  .etape { padding: 16px 16px 16px 14px; display: grid; grid-template-columns: 40px minmax(0, 1fr); column-gap: 14px; align-items: start; }
  .etape__num { width: 40px; height: 40px; font-size: 20px; margin: 0; grid-row: span 2; }
  .etape__titre { font-size: 22px; padding-top: 7px; }
  .etape__txt { font-size: 15px; margin-top: 6px; }

  .faq--int .faq__titre { text-wrap: balance; }


  .liens-page > div + div { margin-top: 30px; }
  .liens-page__titre { font-size: 26px; }
  .bouton { font-size: 15px; min-height: 46px; }

  .contact--int .contact__boite { padding-top: 64px; }
  .contact--int .contact__titre { max-width: none; font-size: 34px; text-wrap: balance; }
  .contact--int .contact__lead { font-size: 15px; line-height: 1.5; color: var(--light-on-dark); }

  .ville-lien__ville { font-size: 21px; }

  .page-texte { padding-top: 26px; }
  .page-texte__titre { font-size: clamp(33px, 10.2vw, 40px); }
  .texte-legal p { font-size: 16px; }

  .zone .grille-villes { margin-top: 44px; }
  .grille-villes__ville { min-width: 0; flex-basis: 100%; font-size: 17px; }
  .grille-villes__ligne { padding: 12px 0; gap: 8px; }
  .grille-villes__liens { gap: 5px; }
  .grille-villes__liens a { font-size: 12px; padding: 5px 9px; }

}


/* ---------- 7. Mouvement réduit ---------- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .loader { display: none !important; }
  .bandeau__piste { animation: none; }
  .mbar__pulse::before { animation: none; }
  .rouleau__bande { transition: none !important; }
  .js .compteur:not(.is-rolled) .rouleau__bande { transform: translateY(calc(var(--c) * -10%)); }
}


/* ============================================================
   9. MENU ET PAGES DU MENU (prestations, réalisations, l'entreprise)
   Pages générées par build.js ; l'aperçu des chantiers est aussi sur l'accueil.
   ============================================================ */

/* Menu : page en cours */
.nav a[aria-current="page"] { background: var(--ink); color: var(--paper); }
.nav a[aria-current="page"]:hover { background: var(--ink); color: var(--yellow); }
.mmenu__lien[aria-current="page"] .mmenu__label { text-decoration: underline; text-decoration-thickness: 4px; text-underline-offset: 6px; }

/* Pied : pages du site */

/* Boutons */
.bouton--jaune { background: var(--yellow); }
.bouton--jaune:hover { background: #fff; }

/* Accueil : liens vers les nouvelles pages */
.services__toutes { align-self: flex-start; }
.qui__lien {
  display: inline-block; margin-top: 30px;
  font-weight: 700; font-size: 18px; border-bottom: 2px solid var(--ink); padding-bottom: 2px;
}
.qui__lien:hover { color: var(--ink); border-bottom-color: #fff; }

/* Photos du hero : collage */
.collage {
  position: relative; width: 100%; aspect-ratio: 1 / 1;
  display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); grid-template-rows: repeat(12, minmax(0, 1fr));
}
.collage__photo {
  min-width: 0; min-height: 0; overflow: hidden;
  background: #fff; padding: 8px; border-radius: 6px;
  box-shadow: 0 24px 44px -26px rgba(11, 11, 26, .6);
}
.collage__photo img { width: 100%; height: 100%; object-fit: cover; border-radius: 3px; background: #ddd; }
.collage__photo--1 { grid-column: 1 / 10; grid-row: 1 / 8; transform: rotate(-2deg); }
.collage__photo--2 { grid-column: 5 / 13; grid-row: 6 / 12; transform: rotate(2.5deg); z-index: 2; }
.collage__photo--3 { grid-column: 1 / 6; grid-row: 8 / 13; transform: rotate(-4deg); z-index: 3; }
.collage .hero__sticker { z-index: 4; }


/* Une prestation : photos + texte, en alternance */
.offre { display: grid; align-items: center; }
.offre__photos { position: relative; padding: 0 13% 15% 0; }
.offre__photo { overflow: hidden; background: #fff; }
.offre__photo img { width: 100%; height: 100%; object-fit: cover; background: #ddd; }
.offre__photo--1 {
  aspect-ratio: 4 / 3; padding: 10px; border-radius: 8px; transform: rotate(-1.5deg);
  box-shadow: 0 30px 50px -30px rgba(11, 11, 26, .6);
}
.offre__photo--1 img { border-radius: 4px; }
.offre__photo--2 {
  position: absolute; right: 0; bottom: 0; width: 42%; aspect-ratio: 1;
  padding: 7px; border-radius: 6px; transform: rotate(3deg);
  box-shadow: 0 20px 36px -18px rgba(11, 11, 26, .6);
}
.offre__photo--2 img { border-radius: 3px; }
.offre--inverse .offre__photos { padding: 0 0 15% 13%; }
.offre--inverse .offre__photo--1 { transform: rotate(1.5deg); }
.offre--inverse .offre__photo--2 { right: auto; left: 0; transform: rotate(-3deg); }
.offre__haut { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.offre__num { font: 500 14px var(--mono); color: var(--gold-text); }
.offre__haut .etiquette { padding: 5px 10px; transform: rotate(-3deg); }
.offre__titre { text-wrap: balance; }
.offre__chapo { color: var(--ink-2); line-height: 1.55; max-width: 560px; }
.offre__liste { border-top: 2px solid var(--ink); max-width: 560px; }
.offre__liste li {
  position: relative; padding: 11px 0 11px 36px;
  border-bottom: 1.5px dashed rgba(11, 11, 26, .25);
  font-weight: 600; line-height: 1.35;
}
.offre__liste li::before {
  content: '\2713'; position: absolute; left: 2px; top: 10px;
  width: 23px; height: 23px; border-radius: 50%;
  background: var(--yellow); border: 1.5px solid var(--ink);
  display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 800;
}
.offre__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 26px; }

/* Particuliers / professionnels */
.pour-qui__cartes { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 380px), 1fr)); gap: 24px; }
.pour-qui__carte {
  background: #fff; border: 2px solid var(--ink); border-radius: 10px 26px 12px 30px;
  box-shadow: 6px 6px 0 var(--ink); padding: 14px 14px 26px;
}
.pour-qui__carte:first-child { transform: rotate(-.6deg); }
.pour-qui__carte--jaune { background: var(--yellow); transform: rotate(.6deg); }
.pour-qui__carte figure { aspect-ratio: 16 / 9; overflow: hidden; border-radius: 6px 18px 6px 6px; margin-bottom: 18px; background: #ddd; }
.pour-qui__carte img { width: 100%; height: 100%; object-fit: cover; }
.pour-qui__titre { font-weight: 800; font-stretch: 85%; letter-spacing: -.035em; line-height: 1; font-size: clamp(28px, 3vw, 40px); padding: 0 8px; }
.pour-qui__carte p { padding: 10px 8px 0; line-height: 1.55; color: var(--ink-2); }

/* Engagements */
.garanties__liste { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); gap: 16px; }
.garantie { background: var(--ink); color: var(--paper); border-radius: 18px; padding: 24px 22px; }
.garantie__coche {
  width: 42px; height: 42px; border-radius: 50%; margin-bottom: 16px;
  background: var(--yellow); color: var(--ink);
  display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 20px;
}
.garantie__titre { font-weight: 800; font-stretch: 85%; letter-spacing: -.03em; line-height: 1.05; font-size: 26px; }
.garantie p { margin-top: 8px; color: var(--light-on-dark); line-height: 1.5; font-size: 15.5px; }

/* Aperçu des chantiers (accueil, prestations) */
.apercu__tete { display: flex; justify-content: space-between; align-items: flex-end; gap: 18px 24px; flex-wrap: wrap; }
.apercu__tete .note-or { display: inline-block; margin-top: 8px; }
.apercu__case figure { position: relative; height: 100%; overflow: hidden; border-radius: 10px; background: #ddd; }
.apercu__case img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.2, .8, .2, 1); }
.apercu__case:hover img { transform: scale(1.04); }
.apercu__case figcaption {
  position: absolute; left: 10px; right: 10px; bottom: 10px;
  background: rgba(255, 255, 255, .95); border-radius: 8px; padding: 7px 11px;
  font-size: 13.5px; font-weight: 600; line-height: 1.3; color: var(--ink);
}

/* Bandeau d'appel (bas des pages du menu) */
.appel__boite { position: relative; background: var(--ink); color: var(--paper); display: grid; align-items: center; }
.appel__lead { color: var(--light-on-dark); line-height: 1.5; max-width: 470px; }
.appel__actions { display: flex; flex-direction: column; align-items: flex-start; gap: 16px; }
.appel__tel {
  display: inline-flex; align-items: center; gap: 14px;
  background: var(--yellow); color: var(--ink); border-radius: 999px;
  padding: 12px 28px 12px 12px; font-weight: 800; letter-spacing: -.02em; white-space: nowrap;
  transition: background .2s;
}
.appel__tel:hover { background: #fff; color: var(--ink); }
.appel__tel-icone {
  width: 46px; height: 46px; border-radius: 50%; flex: none;
  background: var(--ink); color: var(--yellow);
  display: flex; align-items: center; justify-content: center; font-size: 20px;
}
.appel__msg { color: var(--paper); font-weight: 700; font-size: 18px; border-bottom: 2px solid var(--yellow); padding-bottom: 2px; }
.appel__msg:hover { color: var(--yellow); }
.appel__infos { font: 500 13px/1.6 var(--mono); color: var(--grey-on-dark); }

/* Avant / après */
.avap__texte .note-or { display: inline-block; margin-bottom: 10px; }
.avap__texte .bloc__chapo { max-width: 480px; }
.avap__cadre {
  position: relative; width: min(100%, 520px); aspect-ratio: 3 / 4; justify-self: center;
  border: 9px solid #fff; border-radius: 10px; overflow: hidden; background: #ddd;
  box-shadow: 0 30px 60px -30px rgba(11, 11, 26, .55); user-select: none; -webkit-user-select: none;
}
.avap__cadre:has(.avap__curseur:focus-visible) { outline: 3px solid var(--ink); outline-offset: 4px; }
.avap__img { position: absolute; inset: 0; }
.avap__img img { width: 100%; height: 100%; object-fit: cover; }
.avap__img--apres { clip-path: inset(0 0 0 var(--pos)); }
.avap__trait { position: absolute; top: 0; bottom: 0; left: var(--pos); width: 3px; margin-left: -1.5px; background: var(--yellow); z-index: 3; pointer-events: none; }
.avap__poignee {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  width: 50px; height: 50px; border-radius: 50%;
  background: var(--yellow); border: 2px solid var(--ink); box-shadow: 3px 3px 0 var(--ink);
  display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 20px; color: var(--ink);
}
.avap__etiquette {
  position: absolute; top: 14px; z-index: 2; pointer-events: none;
  border-radius: 999px; padding: 6px 12px; font: 500 12px var(--mono); text-transform: uppercase; letter-spacing: .04em;
}
.avap__etiquette--avant { left: 14px; background: var(--ink); color: var(--paper); }
.avap__etiquette--apres { right: 14px; background: var(--yellow); color: var(--ink); border: 1.5px solid var(--ink); }
.avap__curseur { display: none; position: absolute; inset: 0; z-index: 4; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: ew-resize; }
.js .avap__curseur { display: block; }

/* Galerie */
.galerie__tete { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.galerie__compte { font: 500 13px var(--mono); color: var(--muted); }
.filtres { display: none; flex-wrap: wrap; gap: 8px; }
.js .filtres { display: flex; }
.filtre {
  cursor: pointer; min-height: 44px; padding: 9px 16px;
  background: #fff; border: 2px solid var(--ink); border-radius: 999px;
  font-family: var(--font); font-weight: 700; font-size: 15px; color: var(--ink);
  transition: background .15s;
}
.filtre:hover { background: var(--yellow); }
.filtre[aria-pressed="true"] { background: var(--ink); color: var(--paper); }
.galerie__grille { display: grid; }
.galerie__case[hidden] { display: none; }
.galerie__lien { display: block; height: 100%; color: var(--ink); }
.galerie__lien:hover { color: var(--ink); }
.galerie__lien figure { display: flex; flex-direction: column; height: 100%; }
.galerie__photo { position: relative; aspect-ratio: 4 / 3; overflow: hidden; border-radius: 10px; background: #ddd; }
.galerie__photo img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.2, .8, .2, 1); }
.galerie__lien:hover .galerie__photo img { transform: scale(1.04); }
.galerie__photo::after {
  content: '+'; position: absolute; top: 10px; right: 10px;
  width: 36px; height: 36px; border-radius: 50%;
  background: var(--yellow); border: 1.5px solid var(--ink);
  display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 22px;
  opacity: 0; transition: opacity .2s;
}
.galerie__lien:hover .galerie__photo::after, .galerie__lien:focus-visible .galerie__photo::after { opacity: 1; }
.galerie__lien figcaption { padding: 12px 2px 0; font-weight: 600; line-height: 1.35; }
.galerie__cat { display: block; font: 500 11px var(--mono); text-transform: uppercase; letter-spacing: .05em; color: var(--gold-text); margin-bottom: 4px; }

/* Visionneuse */
.visionneuse {
  width: 100vw; height: 100vh; height: 100dvh; max-width: none; max-height: none;
  margin: 0; padding: 0; border: 0; background: rgba(11, 11, 26, .97); color: var(--paper);
}
.visionneuse[open] { display: flex; align-items: center; justify-content: center; }
.visionneuse::backdrop { background: rgba(11, 11, 26, .6); }
.visionneuse__figure { display: flex; flex-direction: column; align-items: center; gap: 14px; }
.visionneuse__img { width: auto; height: auto; max-width: 100%; border: 6px solid #fff; border-radius: 6px; background: #222; }
.visionneuse__legende { font-weight: 600; text-align: center; line-height: 1.4; }
.visionneuse__compte { position: absolute; top: 24px; left: 24px; font: 500 13px var(--mono); color: var(--grey-on-dark); }
.visionneuse__btn {
  position: absolute; cursor: pointer; width: 52px; height: 52px; border-radius: 50%;
  border: 0; background: var(--yellow); color: var(--ink);
  display: flex; align-items: center; justify-content: center; font-size: 22px; font-weight: 800;
}
.visionneuse__btn:hover { background: #fff; }
.visionneuse__btn:focus-visible { outline: 3px solid #fff; outline-offset: 3px; }
.visionneuse__fermer { top: 14px; right: 14px; }

/* L'entreprise : portrait */
.portrait { background: var(--yellow); color: var(--ink); display: grid; align-items: center; }
.portrait__texte p { line-height: 1.55; max-width: 560px; }
.portrait__texte p + p { margin-top: 14px; }
.chiffres { display: flex; flex-wrap: wrap; gap: 14px; }
.chiffres li { background: #fff; border: 2px solid var(--ink); border-radius: 14px; box-shadow: 4px 4px 0 var(--ink); padding: 14px 18px; }
.chiffres li:nth-child(2) { transform: rotate(-1.5deg); }
.chiffres li:nth-child(3) { transform: rotate(1deg); }
.chiffres__val { display: block; font-weight: 800; letter-spacing: -.04em; line-height: 1; white-space: nowrap; }
.chiffres__label { display: block; font: 500 12px var(--mono); margin-top: 6px; color: var(--ink-2); }

/* L'entreprise : façon de travailler */
.facon .h2 { margin-bottom: 28px; }
.facon__grille { display: grid; gap: 16px; margin: 0; padding: 0; list-style: none; }
.facon__carte { background: #fff; border: 2px solid var(--ink); border-radius: 14px; padding: 24px 22px; }
.facon__num {
  width: 42px; height: 42px; border-radius: 50%; margin-bottom: 18px;
  background: var(--yellow); border: 2px solid var(--ink);
  display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 20px;
}
.facon__titre { font-weight: 800; font-stretch: 85%; letter-spacing: -.03em; line-height: 1.05; font-size: 24px; }
.facon__carte p { margin-top: 10px; color: var(--ink-2); line-height: 1.55; font-size: 16px; }

/* L'entreprise : du premier appel à la mise en service */
.parcours__liste { position: relative; display: grid; gap: 22px; margin: 0; padding: 0; list-style: none; }
.parcours__liste::before { content: ''; position: absolute; border: 0 dashed var(--ink); }
.parcours__etape { position: relative; }
.parcours__num {
  position: relative; z-index: 1; flex: none;
  width: 52px; height: 52px; border-radius: 50%;
  background: var(--yellow); border: 2px solid var(--ink); box-shadow: 3px 3px 0 var(--ink);
  display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 24px;
}
.parcours__titre { font-weight: 800; font-stretch: 85%; letter-spacing: -.03em; line-height: 1.05; font-size: 24px; }
.parcours__corps p { margin-top: 8px; color: var(--ink-2); line-height: 1.5; font-size: 16px; }
.parcours__photo {
  margin-top: 14px; aspect-ratio: 4 / 3; overflow: hidden; background: #ddd;
  border: 5px solid #fff; border-radius: 8px; box-shadow: 0 14px 26px -16px rgba(11, 11, 26, .55);
  transform: rotate(-1.5deg);
}
.parcours__etape:nth-child(even) .parcours__photo { transform: rotate(1.5deg); }
.parcours__photo img { width: 100%; height: 100%; object-fit: cover; }

/* L'entreprise : secteur, bande de photos */
.secteur-court .boutons { margin-top: 4px; }
.secteur-court .secteurs__aussi { margin-top: 20px; }
.bande-photos { overflow: hidden; }
.bande-photos__tete { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: 14px 24px; }
.bande-photos__piste { display: flex; width: max-content; padding: 6px 0; animation: marq 70s linear infinite; }
.bande-photos__piste:hover { animation-play-state: paused; }
.bande-photos__liste { display: flex; gap: 14px; padding-right: 14px; }
.bande-photos__liste li { flex: none; overflow: hidden; border-radius: 10px; background: #ddd; }
.bande-photos__liste li:nth-child(odd) { transform: rotate(-1deg); }
.bande-photos__liste li:nth-child(even) { transform: rotate(1deg); }
.bande-photos__liste img { width: 100%; height: 100%; object-fit: cover; }

/* ---------- Desktop / tablette ---------- */
@media (min-width: 768px) {
  .offre { grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: clamp(32px, 5vw, 88px); padding: 0 var(--gout) var(--sec); }
  .offre--inverse { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); }
  .offre--inverse .offre__photos { order: 2; }
  .offre__titre { font-size: clamp(36px, 4vw, 60px); }
  .offre__chapo { margin-top: 18px; font-size: 18px; }
  .offre__liste { margin-top: 22px; }
  .offre__liste li { font-size: 17px; }
  .offre__actions { margin-top: 26px; }

  .pour-qui .h2, .garanties .h2 { margin-bottom: 28px; }
  .pour-qui__carte p { font-size: 17px; }

  .apercu { padding: 0 var(--gout) var(--sec); }
  .qui + .apercu { padding-top: var(--sec); }
  .apercu__tete { margin-bottom: 28px; }
  .apercu__grille { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-auto-rows: clamp(170px, 16vw, 250px); gap: 14px; }
  .apercu__case:first-child { grid-column: span 2; grid-row: span 2; }

  .appel { padding: 0 var(--gout) clamp(40px, 5vw, 72px); }
  .appel__boite { border-radius: 32px; padding: clamp(32px, 4.5vw, 64px); grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr)); gap: 28px 56px; }
  .appel__titre { font-size: clamp(40px, 4.6vw, 68px); }
  .appel__lead { margin-top: 16px; font-size: 18px; }
  .appel__tel { font-size: clamp(24px, 2.4vw, 32px); }

  .avap { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(28px, 4vw, 72px); align-items: center; }
  .avap__texte .bloc__chapo { margin-top: 18px; }

  .filtres { margin: 22px 0 26px; }
  .galerie__grille { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 36px 24px; }
  .galerie__lien figcaption { font-size: 16px; }

  .visionneuse__figure { max-width: calc(100vw - 180px); }
  .visionneuse__img { max-height: calc(100vh - 150px); max-height: calc(100dvh - 150px); }
  .visionneuse__legende { font-size: 17px; }
  .visionneuse__prec { left: 24px; top: 50%; transform: translateY(-50%); }
  .visionneuse__suiv { right: 24px; top: 50%; transform: translateY(-50%); }

  .portrait { padding: var(--sec) var(--gout); margin-bottom: var(--sec); grid-template-columns: repeat(auto-fit, minmax(min(100%, 380px), 1fr)); gap: clamp(28px, 4vw, 64px); }
  .portrait__titre { font-size: clamp(40px, 5vw, 72px); margin-bottom: 22px; }
  .portrait__texte p { font-size: 18px; }
  .chiffres { margin-top: 30px; }
  .chiffres__val { font-size: 32px; }

  .facon__grille { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  .parcours .h2 { margin-bottom: 34px; }
  .parcours__liste::before { left: 25px; top: 10px; bottom: 10px; border-left-width: 2px; }
  .parcours__etape { display: grid; grid-template-columns: 52px minmax(0, 1fr); gap: 20px; }
  .parcours__titre { padding-top: 12px; }
  .parcours__photo { max-width: 340px; }

  .bande-photos { padding: 0 0 var(--sec); }
  .bande-photos__tete { padding: 0 var(--gout); margin-bottom: 26px; }
  .bande-photos__liste li { width: 320px; height: 230px; }
}

@media (min-width: 1100px) {
  .facon__grille { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .parcours__liste { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .parcours__liste::before { left: 26px; right: 26px; top: 25px; bottom: auto; border-left-width: 0; border-top-width: 2px; }
  .parcours__etape { display: block; }
  .parcours__num { margin-bottom: 18px; }
  .parcours__titre { padding-top: 0; }
  .parcours__photo { max-width: none; }
}

/* ---------- Mobile ---------- */
@media (max-width: 767.98px) {
  .mmenu__label { font-size: clamp(34px, 11.4vw, 46px); }
  .services__toutes { display: inline-block; margin-top: 14px; }
  .qui__lien { margin-top: 34px; font-size: 17px; }


  .offre { padding: 0 20px 72px; gap: 30px; }
  .offre__photos { margin: 0 4px; }
  .offre__titre { font-size: 36px; }
  .offre__chapo { margin-top: 14px; font-size: 16px; }
  .offre__liste { margin-top: 18px; }
  .offre__liste li { font-size: 15.5px; }
  .offre__actions { margin-top: 22px; }

  .pour-qui .h2, .garanties .h2 { margin-bottom: 20px; }
  .pour-qui__carte { box-shadow: 4px 4px 0 var(--ink); }
  .pour-qui__titre { font-size: 28px; }
  .pour-qui__carte p { font-size: 15.5px; }
  .garantie { padding: 20px 18px; }
  .garantie__titre { font-size: 23px; }

  .apercu { padding: 0 0 64px; }
  .qui + .apercu { padding-top: 64px; }
  .apercu__tete { padding: 0 20px; margin-bottom: 18px; }
  .apercu .h2 { font-size: 36px; }
  .apercu__grille { display: flex; gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding: 4px 20px 10px; }
  .apercu__grille::-webkit-scrollbar { display: none; }
  .apercu__case { flex: none; width: 78%; aspect-ratio: 4 / 3; scroll-snap-align: center; }
  .apercu__case figcaption { font-size: 12.5px; }

  .appel { padding: 40px 12px 32px; }
  .appel__boite { border-radius: 28px; padding: 60px 20px 26px; gap: 22px; }
  .appel__titre { font-size: 36px; text-wrap: balance; }
  .appel__lead { margin-top: 12px; font-size: 15.5px; }
  .appel__tel { font-size: 23px; }
  .appel__msg { font-size: 16px; }

  .avap__texte { margin-bottom: 26px; }
  .avap__cadre { width: 100%; border-width: 7px; }

  .filtres { margin: 16px -20px 20px; padding: 0 20px 6px; flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
  .filtres::-webkit-scrollbar { display: none; }
  .filtre { flex: none; font-size: 14px; padding: 8px 14px; }
  .galerie__grille { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px 12px; }
  .galerie__photo { border-radius: 8px; }
  .galerie__lien figcaption { padding-top: 8px; font-size: 13px; }
  .galerie__cat { font-size: 9.5px; margin-bottom: 3px; }

  .visionneuse__figure { max-width: calc(100vw - 20px); }
  .visionneuse__img { max-height: calc(100vh - 210px); max-height: calc(100dvh - 210px); border-width: 4px; }
  .visionneuse__legende { font-size: 15px; padding: 0 10px; }
  .visionneuse__prec, .visionneuse__suiv { bottom: calc(22px + env(safe-area-inset-bottom, 0px)); }
  .visionneuse__prec { left: calc(50% - 64px); }
  .visionneuse__suiv { right: calc(50% - 64px); }

  .portrait { padding: 64px 20px 68px; margin-bottom: 64px; }
  .portrait__titre { font-size: 38px; margin-bottom: 18px; }
  .portrait__texte p { font-size: 16px; }
  .chiffres { margin-top: 26px; gap: 10px; }
  .chiffres li { padding: 11px 13px; }
  .chiffres__val { font-size: 25px; }
  .chiffres__label { font-size: 11px; }

  .facon__grille { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .facon__titre { font-size: 22px; }
  .facon__carte p { font-size: 15.5px; }

  .parcours .h2 { margin-bottom: 24px; }
  .parcours__liste::before { left: 23px; top: 10px; bottom: 10px; border-left-width: 2px; }
  .parcours__etape { display: grid; grid-template-columns: 48px minmax(0, 1fr); gap: 16px; }
  .parcours__num { width: 48px; height: 48px; font-size: 22px; }
  .parcours__titre { font-size: 22px; padding-top: 11px; }
  .parcours__corps p { font-size: 15.5px; }

  .bande-photos { padding: 0 0 64px; }
  .bande-photos__tete { padding: 0 20px; margin-bottom: 18px; }
  .bande-photos .h2 { font-size: 36px; }
  .bande-photos__liste li { width: 230px; height: 170px; }
}

@media (prefers-reduced-motion: reduce) {
  .bande-photos__piste { animation: none; }
  .apercu__case img, .galerie__photo img { transition: none; }
}

body.menu-open-vis { overflow: hidden; }
/* sticker du collage : des mots plus longs que « 1998 » */
.collage .sticker__haut { font-size: 15px; }
.collage .sticker__bas { font-size: 21px; letter-spacing: -.03em; }
@media (max-width: 767.98px) {
  .hero--int .collage .hero__sticker { width: 98px; height: 98px; }
  .collage .sticker__haut { font-size: 13px; }
  .collage .sticker__bas { font-size: 15.5px; }
}


/* ============================================================
   10. AVIS CLIENTS (AlloVoisins) — accueil et pages intérieures
   ============================================================ */
.temoignages__tete .note-or { display: inline-block; margin-bottom: 6px; }
.temoignages__grille { display: grid; gap: 16px; }
.etoiles { color: var(--yellow); letter-spacing: 2px; font-size: 17px; line-height: 1; white-space: nowrap; }

.avis-note {
  background: var(--ink); color: var(--paper); border-radius: 18px; padding: 26px 24px;
  display: flex; flex-direction: column; align-items: flex-start; gap: 12px;
}
.avis-note__logo { display: inline-flex; background: #fff; border-radius: 10px; padding: 10px 14px; }
.avis-note__logo img { width: 150px; height: auto; }
.avis-note__val { font-weight: 800; font-size: 64px; letter-spacing: -.05em; line-height: .9; margin-top: 8px; }
.avis-note__val span { font-size: 28px; color: var(--grey-on-dark); letter-spacing: -.02em; }
.avis-note .etoiles { font-size: 22px; letter-spacing: 3px; }
.avis-note__nb { color: var(--light-on-dark); font-size: 15px; line-height: 1.45; }
.avis-note__lien { color: var(--yellow); font-weight: 700; font-size: 15px; margin-top: auto; }
.avis-note__lien:hover { color: #fff; }

.avis-bloc { background: #fff; border: 1.5px solid rgba(11, 11, 26, .14); border-radius: 18px; padding: 22px 22px 24px; }
.avis-bloc figure { display: flex; flex-direction: column; gap: 16px; height: 100%; }
.avis-bloc__haut { display: grid; grid-template-columns: 42px minmax(0, 1fr); grid-template-rows: auto auto; column-gap: 12px; row-gap: 4px; align-items: center; }
.avis-bloc__initiale {
  grid-row: span 2; width: 42px; height: 42px; border-radius: 50%;
  background: var(--yellow); color: var(--ink);
  display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 18px;
}
.avis-bloc__nom { font-weight: 700; font-size: 16px; line-height: 1.1; }
.avis-bloc .etoiles { font-size: 14px; }
.avis-bloc blockquote { margin: 0; position: relative; padding-top: 16px; border-top: 1.5px dashed rgba(11, 11, 26, .18); }
.avis-bloc blockquote p { font-size: 16.5px; line-height: 1.55; color: var(--ink-2); }

@media (min-width: 768px) {
  .temoignages { padding: 0 var(--gout) var(--sec); }
  .temoignages__tete { margin-bottom: 30px; }
  .temoignages__grille { grid-template-columns: repeat(auto-fill, minmax(min(100%, 270px), 1fr)); }
  .avis-note { grid-row: span 1; }
}
@media (min-width: 1240px) {
  .temoignages__grille { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 767.98px) {
  .temoignages { padding: 0 0 64px; }
  .temoignages__tete { padding: 0 20px; margin-bottom: 18px; }
  .temoignages .h2 { font-size: 36px; text-wrap: balance; }
  .temoignages__grille {
    display: flex; gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory;
    scrollbar-width: none; padding: 4px 20px 12px;
  }
  .temoignages__grille::-webkit-scrollbar { display: none; }
  .temoignages__grille > li { flex: none; width: 272px; scroll-snap-align: center; }
  .avis-note { padding: 22px 20px; }
  .avis-note__val { font-size: 54px; }
  .avis-bloc blockquote p { font-size: 15.5px; }
}

/* Accueil : note AlloVoisins dans le hero, à côté de « Disponible cette semaine » */
.hero__badges { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 14px; margin-bottom: 26px; }
.hero__badges .badge { margin-bottom: 0; }
.note-hero {
  display: inline-flex; align-items: center; gap: 10px;
  background: #fff; color: var(--ink); border: 1.5px solid var(--ink); box-shadow: 2px 3px 0 var(--ink);
  border-radius: 999px; padding: 8px 15px 8px 13px; transform: rotate(1.5deg);
  transition: transform .2s, box-shadow .2s;
}
.note-hero:hover { color: var(--ink); transform: rotate(0deg) translateY(-2px); box-shadow: 3px 5px 0 var(--ink); }
.note-hero img { height: 19px; width: auto; }
.note-hero__sep { width: 1.5px; height: 18px; background: rgba(11, 11, 26, .2); }
.note-hero__txt { font-size: 14px; font-weight: 500; white-space: nowrap; }
.note-hero__txt strong { font-weight: 800; }
/* étoiles sur fond blanc : un jaune plus soutenu, lisible */
.note-hero .etoiles, .avis-bloc .etoiles { color: #E9A100; }
.note-hero .etoiles { font-size: 15px; letter-spacing: 1px; }
@media (max-width: 767.98px) {
  .hero__badges { margin-bottom: 26px; gap: 10px; }
  .note-hero { padding: 7px 13px 7px 11px; gap: 8px; }
  .note-hero img { height: 16px; }
  .note-hero__txt { font-size: 13px; }
}

/* ============================================================
   11. PIED DE PAGE (toutes les pages)
   ============================================================ */
.pied { background: var(--ink); color: var(--light-on-dark); }
.pied a { color: var(--paper); }
.pied a:hover { color: var(--yellow); }
.pied ul { list-style: none; margin: 0; padding: 0; }
.pied__haut { display: grid; }
.pied__logo { display: inline-flex; align-items: center; gap: 12px; line-height: 1; }
.pied__carre {
  width: 44px; height: 44px; border-radius: 12px; flex: none;
  background: var(--yellow); color: var(--ink); border: 2px solid var(--paper);
  display: flex; align-items: center; justify-content: center;
  font-weight: 800; font-size: 24px; letter-spacing: -.06em; transform: rotate(-5deg);
}
.pied__nom { display: block; font-weight: 800; font-size: 22px; letter-spacing: -.04em; color: var(--paper); }
.pied__sous { display: block; margin-top: 4px; font-size: 13px; color: var(--grey-on-dark); }
.pied__texte { margin-top: 18px; max-width: 320px; font-size: 15px; line-height: 1.55; }
.pied__tel {
  display: inline-flex; align-items: center; gap: 10px; margin-top: 20px;
  background: var(--yellow); border-radius: 999px; padding: 8px 18px 8px 8px;
  font-weight: 800; font-size: 19px; letter-spacing: -.02em; white-space: nowrap;
}
.pied .pied__tel { color: var(--ink); }
.pied .pied__tel:hover { color: var(--ink); background: #fff; }
.pied__tel-icone {
  width: 32px; height: 32px; border-radius: 50%; flex: none;
  background: var(--ink); color: var(--yellow);
  display: flex; align-items: center; justify-content: center; font-size: 15px;
}
.pied__horaires { margin-top: 12px; font: 500 12px var(--mono); color: var(--grey-on-dark); }
.pied__titre { font: 500 11px var(--mono); text-transform: uppercase; letter-spacing: .08em; color: var(--yellow); margin-bottom: 16px; }
.pied__col li + li { margin-top: 10px; }
.pied__col a { font-size: 15px; font-weight: 500; line-height: 1.3; }
.pied__bas {
  display: flex; flex-wrap: wrap; justify-content: space-between; gap: 10px 24px;
  border-top: 1px solid var(--line-dark);
  font: 500 12px/1.6 var(--mono); color: var(--grey-on-dark);
}
.pied__liens { display: flex; gap: 20px; }
.pied__credit {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 6px 10px;
  border-top: 1px solid var(--line-dark);
  font: 500 12px var(--mono); color: var(--grey-on-dark);
}
.pied .pied__credit a { display: inline-flex; align-items: center; gap: 7px; font-family: var(--font); font-size: 14px; }
.pied__credit strong { font-weight: 800; letter-spacing: -.02em; }
.pied__credit-tag { color: var(--muted-2); }

@media (min-width: 768px) {
  .pied { padding: clamp(48px, 5vw, 72px) var(--gout) 0; }
  .pied__haut { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr) minmax(0, 1.2fr) minmax(0, 1.3fr); gap: 40px clamp(28px, 4vw, 64px); padding-bottom: clamp(40px, 4vw, 56px); }
  .pied__bas { padding: 20px 0; }
  .pied__credit { padding: 18px 0 26px; }
}
@media (min-width: 768px) and (max-width: 1099.98px) {
  .pied__haut { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767.98px) {
  .pied { padding: 48px 20px 112px; }
  .pied__haut { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 36px 20px; padding-bottom: 36px; }
  .pied__marque, .pied__col:last-child { grid-column: 1 / -1; }
  .pied__col a { font-size: 14.5px; }
  .pied__bas { flex-direction: column; padding: 18px 0; font-size: 11px; }
  .pied__credit { justify-content: flex-start; padding: 16px 0 0; font-size: 11px; }
}

/* Photo d'Akim (portrait 3:4) : cadrage sur le visage dans les cadres 4:3 */
img[src*="akim-colson-elec"] { object-position: 50% 30%; }

/* ============================================================
   Accès protégé (aperçu privé) — NE FAIT PAS PARTIE DU SITE LIVRÉ
   Écran mot de passe posé devant le site. Voir js/acces.js.
   Se retire d'un bloc avec celui du <head> de chaque page.
   ============================================================ */
html.verrouille { overflow: hidden; }
/* Tout le site est masqué tant que la porte est là. */
html.verrouille body > *:not(.acces) { display: none !important; }

.acces {
  position: fixed; inset: 0; z-index: 1000;
  display: flex; align-items: center; justify-content: center;
  padding: 24px 16px; overflow-y: auto;
  background-color: var(--paper);
  background-image: radial-gradient(rgba(11, 11, 26, .09) 1.2px, transparent 1.2px);
  background-size: 22px 22px;
}
.acces.is-out { opacity: 0; pointer-events: none; transition: opacity .5s ease; }

.acces__carte {
  position: relative; width: min(440px, 100%); margin: auto;
  display: flex; flex-direction: column; align-items: flex-start; gap: 14px;
  padding: clamp(28px, 5vw, 40px) clamp(22px, 4vw, 36px) clamp(22px, 4vw, 30px);
  background: var(--white);
  border: 2.5px solid var(--ink); border-radius: 20px;
  box-shadow: 8px 8px 0 var(--ink);
}
/* « Le site arrive très vite ! » : une étiquette jaune à cheval sur le
   haut de la carte, la première chose qu'on lit. */
.acces__bientot {
  position: absolute; top: 0; right: clamp(16px, 4vw, 28px);
  transform: translateY(-55%) rotate(3deg);
  padding: 7px 14px;
  background: var(--yellow); color: var(--ink);
  border: 2.5px solid var(--ink); border-radius: 10px;
  box-shadow: 3px 3px 0 var(--ink);
  font: 700 18px/1.1 var(--hand); white-space: nowrap;
}
.acces__marque { display: flex; align-items: center; gap: 12px; }
.acces__logo {
  width: 44px; height: 44px; flex: none; border-radius: 12px;
  background: var(--yellow); border: 2.5px solid var(--ink); box-shadow: 3px 3px 0 var(--ink);
  display: flex; align-items: center; justify-content: center;
  font-weight: 800; font-size: 25px; letter-spacing: -.06em;
  transform: rotate(-5deg);
}
.acces__nom { font-weight: 800; font-size: 24px; letter-spacing: -.045em; }
.acces__label {
  display: inline-flex; align-items: center; gap: 9px; margin-top: 8px;
  font: 500 11.5px var(--mono); letter-spacing: .14em; text-transform: uppercase;
  color: var(--muted);
}
.acces__pastille { width: 8px; height: 8px; border-radius: 50%; background: var(--yellow); box-shadow: 0 0 0 2px var(--ink); }
.acces__titre {
  margin: 0; font-weight: 800; letter-spacing: -.045em; line-height: 1;
  font-size: clamp(34px, 7vw, 44px);
}
.acces__texte { color: var(--ink-2); font-size: 15.5px; line-height: 1.5; }

.acces__ligne { display: flex; gap: 10px; width: 100%; margin-top: 6px; }
.acces__champ {
  flex: 1; min-width: 0;
  font: 500 16px var(--font); /* 16px : évite le zoom auto sur iOS */
  color: var(--ink); background: var(--paper);
  border: 2px solid var(--ink); border-radius: 12px;
  padding: 13px 14px; outline: none;
  transition: box-shadow .2s ease;
}
.acces__champ::placeholder { color: var(--muted-2); }
.acces__champ:focus { box-shadow: 0 0 0 3px var(--yellow); }
.acces__btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  flex: none; padding: 0 22px; cursor: pointer;
  font: 700 16px var(--font);
  color: var(--ink); background: var(--yellow);
  border: 2px solid var(--ink); border-radius: 12px;
  box-shadow: 3px 3px 0 var(--ink);
  transition: transform .15s ease, box-shadow .15s ease;
}
.acces__btn:hover { transform: translate(-1px, -1px); box-shadow: 4px 4px 0 var(--ink); }
.acces__btn:active { transform: translate(2px, 2px); box-shadow: 1px 1px 0 var(--ink); }
.acces__erreur { min-height: 1.3em; font-size: 14px; font-weight: 600; color: #C0261B; }
.acces__pied {
  align-self: stretch; padding-top: 14px; border-top: 1px dashed rgba(11, 11, 26, .2);
  font: 500 11.5px var(--mono); color: var(--muted);
}

.acces__carte.secoue { animation: accesSecoue .35s; }
@keyframes accesSecoue {
  10%, 90% { transform: translateX(-1px); }
  20%, 80% { transform: translateX(2px); }
  30%, 50%, 70% { transform: translateX(-4px); }
  40%, 60% { transform: translateX(4px); }
}
@media (prefers-reduced-motion: reduce) {
  .acces.is-out { transition: none; }
  .acces__carte.secoue { animation: none; }
}
@media (max-width: 420px) {
  .acces__ligne { flex-direction: column; }
  .acces__btn { padding: 14px 22px; }
}
