/* freelance-site-internet.ch — gabarit freelance */
:root{
--acc:#0284c7;--acc2:#0369a1;--jaune:#F2C230;
--encre:#1B1A17;--doux:#5E5A52;--fond:#F8F4EC;--fond2:#f0f7fe;--trait:#DDD5C6;
--dis:'Archivo Black','Arial Black',Impact,system-ui,sans-serif;
--txt:'Newsreader',Georgia,'Times New Roman',serif;
--ombre:8px 8px 0 var(--encre);--ombre2:5px 5px 0 var(--encre);

--t-xs:clamp(0.796rem,0.714rem + .12vw,1.014rem);
--t-sm:clamp(0.857rem,0.816rem + .16vw,1.170rem);
--t-md:clamp(1.020rem,0.979rem + .2vw,1.378rem);
--t-lg:clamp(1.224rem,1.122rem + .5vw,1.820rem);
--t-xl:clamp(1.530rem,1.275rem + 1.2vw,2.730rem);
--t-2xl:clamp(1.989rem,1.530rem + 2.2vw,3.900rem);
--t-3xl:clamp(2.448rem,1.734rem + 3.4vw,5.460rem);
--t-4xl:clamp(2.958rem,1.938rem + 4.8vw,7.280rem);
--e1:.35rem;--e2:.7rem;--e3:1.1rem;--e4:1.7rem;--e5:2.6rem;--e6:4rem;--e7:6rem;--e8:9rem;
}

*,*::before,*::after{box-sizing:border-box;margin:0}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{font-family:var(--txt);font-size:18px;line-height:1.6;color:var(--encre);
background:var(--fond);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
font-synthesis-weight:none}
img,svg,video{display:block;max-width:100%;height:auto}
h1,h2,h3,h4{font-family:var(--dis);line-height:1.08;text-wrap:balance;font-weight:400;
letter-spacing:-.01em}
p{text-wrap:pretty}
a{color:inherit}
button,input,select,textarea{font:inherit;color:inherit}
ul,ol{list-style:none;padding:0}

/* Accessibilité : un focus visible, et de la place autour. */
:focus-visible{outline:2.5px solid var(--acc);outline-offset:3px;border-radius:3px}
.fl-saut{position:absolute;left:-9999px;z-index:999}
.fl-saut:focus{left:1rem;top:1rem;background:var(--fond);color:var(--encre);
padding:.7rem 1.1rem;border:2px solid var(--acc);border-radius:8px}

/* Chiffres alignés partout où ils se comparent. */
.fl-num,[class*="__val"],[class*="__prix"],[class*="__montant"]{font-variant-numeric:tabular-nums}

/* ---------- révélation au défilement ----------
   L'etat AU REPOS est visible. La classe .js n'est posee que si le script
   tourne : sans lui, aucun opacity:0 n'existe et la page est complete. Une
   capture d'ecran, un lecteur qui ne defile pas, un robot : tous voient tout.
   (Pas de backtick dans ce commentaire : il vit dans un template literal.) */
.js .fl-rev{opacity:0;transform:translateY(18px);
transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1);
transition-delay:var(--r,0ms)}
.js .fl-rev[data-vu]{opacity:1;transform:none}

/* ---------- bandeau défilant ---------- */
.fl-defile{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.fl-defile__piste{display:flex;gap:2.5rem;width:max-content;animation:fl-defiler 42s linear infinite}
.fl-defile:hover .fl-defile__piste{animation-play-state:paused}
@keyframes fl-defiler{to{transform:translateX(-50%)}}

/* ---------- sections longues : on ne peint que ce qui est à l'écran ---------- */
.fl-bas{content-visibility:auto;contain-intrinsic-size:auto 600px}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;
  transition-duration:.01ms!important;scroll-behavior:auto!important}
  .js .fl-rev{opacity:1;transform:none}
  .fl-defile__piste{animation:none;width:auto;flex-wrap:wrap}
}
html,body{overflow-x:clip}

/* ---------- visuels : socle ---------- */
.fl-visuel{margin:0;position:relative}
.fl-visuel__leg{font-size:.78rem;color:var(--doux);margin-top:.7rem;line-height:1.45}
.fl-visuel__leg strong{color:var(--encre);font-variant-numeric:tabular-nums}

/* ---------- SERP ---------- */
.fl-serp{background:var(--fond);border:1px solid var(--trait);border-radius:14px;padding:.9rem;
box-shadow:0 1px 2px rgba(16,24,40,.04),0 12px 28px -12px rgba(16,24,40,.18),0 40px 70px -40px rgba(16,24,40,.28)}
.fl-serp__barre{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border:1px solid var(--trait);
border-radius:999px;color:var(--doux);margin-bottom:.85rem;background:color-mix(in srgb,var(--encre) 3%,transparent)}
.fl-serp__req{font-size:.83rem;color:var(--encre)}
.fl-serp__liste{display:flex;flex-direction:column;gap:var(--serp-gap,.3rem);--serp-h:4.6rem;--serp-gap:.3rem}
.fl-serp__item{height:var(--serp-h);padding:.6rem .8rem;border-radius:10px;position:relative;overflow:hidden}
.fl-serp__url{font-size:.68rem;color:var(--doux);letter-spacing:.01em}
.fl-serp__titre{font-size:.9rem;color:color-mix(in srgb,var(--acc) 72%,var(--encre));font-weight:560;margin-top:.1rem;
overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fl-serp__desc{display:flex;flex-direction:column;gap:.28rem;margin-top:.4rem}
.fl-serp__desc span{height:.36rem;border-radius:2px;background:color-mix(in srgb,var(--encre) 9%,transparent)}
.fl-serp__desc span:last-child{width:62%}
.fl-serp__item--nous{background:color-mix(in srgb,var(--acc) 8%,transparent);
box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--acc) 26%,transparent)}
.fl-serp__item--nous .fl-serp__titre{color:var(--acc)}
.fl-serp__rang{position:absolute;right:.6rem;top:50%;transform:translateY(-50%);width:1.55rem;height:1.55rem;
border-radius:50%;background:var(--acc);color:#fff;display:grid;place-items:center;font-size:.76rem;font-weight:700;
font-variant-numeric:tabular-nums}
/* Au repos, le client est PREMIER (c'est ce qu'on vend). L'animation rejoue
   seulement la montee : il part trois lignes plus bas et remonte, pendant que
   les trois concurrents, partis une ligne plus haut, redescendent. */
.js .fl-serp[data-vu] .fl-serp__item--nous{animation:fl-monte 1.5s cubic-bezier(.16,1,.3,1) .25s both;z-index:1}
.js .fl-serp[data-vu] .fl-serp__rang span{animation:fl-rang 1.5s steps(1) .25s both}
@keyframes fl-monte{0%,45%{transform:translateY(calc(3 * (var(--serp-h) + var(--serp-gap))))}100%{transform:translateY(0)}}
.js .fl-serp[data-vu] .fl-serp__item:not(.fl-serp__item--nous){animation:fl-descend 1.5s cubic-bezier(.16,1,.3,1) .25s both}
@keyframes fl-descend{0%,45%{transform:translateY(calc(-1 * (var(--serp-h) + var(--serp-gap))))}100%{transform:translateY(0)}}
@keyframes fl-rang{0%{content:"4"}100%{content:"1"}}

/* ---------- graphique ---------- */
.fl-graph{width:100%}
.fl-gr__svg{width:100%;height:auto;display:block;overflow:visible}
.fl-gr__ligne{stroke:var(--trait);stroke-width:1;stroke-dasharray:2 5}
.fl-gr__h{stop-color:var(--acc);stop-opacity:.26}
.fl-gr__b{stop-color:var(--acc);stop-opacity:0}
.fl-gr__trait{stroke:var(--acc);stroke-width:2.5}
.fl-gr__pt{fill:var(--acc);stroke:var(--fond);stroke-width:3}
.fl-gr__lab{fill:var(--doux);font-size:11px;text-anchor:middle;font-variant-numeric:tabular-nums}
.js .fl-graph .fl-gr__trait{stroke-dasharray:1400;stroke-dashoffset:1400}
.js .fl-graph .fl-gr__aire,.js .fl-graph .fl-gr__pt{opacity:0}
.js .fl-graph[data-vu] .fl-gr__trait{animation:fl-trace 1.9s cubic-bezier(.3,.7,.3,1) forwards}
.js .fl-graph[data-vu] .fl-gr__aire{animation:fl-fondu .9s ease .7s forwards}
.js .fl-graph[data-vu] .fl-gr__pt{animation:fl-fondu .5s ease 1.7s forwards,fl-pulse 2.6s ease-in-out 2.2s infinite}
@keyframes fl-trace{to{stroke-dashoffset:0}}
@keyframes fl-fondu{to{opacity:1}}
@keyframes fl-pulse{0%,100%{r:5}50%{r:6.5}}

/* ---------- nuage de communes ---------- */
.fl-nu__svg{width:100%;height:auto;display:block;max-height:30rem;margin-inline:auto}
.fl-nu__pt{fill:var(--encre);opacity:.17}
.fl-nu__pt--on{fill:var(--acc);opacity:.95}
.js .fl-nuage[data-vu] .fl-nu__pt{animation:fl-poser .5s ease var(--r,0ms) both}
.fl-nu__pt:nth-child(12n+1){--r:0ms}.fl-nu__pt:nth-child(12n+2){--r:55ms}.fl-nu__pt:nth-child(12n+3){--r:110ms}.fl-nu__pt:nth-child(12n+4){--r:165ms}.fl-nu__pt:nth-child(12n+5){--r:220ms}.fl-nu__pt:nth-child(12n+6){--r:275ms}.fl-nu__pt:nth-child(12n+7){--r:330ms}.fl-nu__pt:nth-child(12n+8){--r:385ms}.fl-nu__pt:nth-child(12n+9){--r:440ms}.fl-nu__pt:nth-child(12n+10){--r:495ms}.fl-nu__pt:nth-child(12n+11){--r:550ms}.fl-nu__pt:nth-child(12n+12){--r:605ms}
@keyframes fl-poser{from{opacity:0;transform:translateY(5px)}}
.js .fl-nuage[data-vu] .fl-nu__pt--on{animation:fl-poserOn .6s ease var(--r,0ms) both}
@keyframes fl-poserOn{from{opacity:0;transform:scale(.3)}to{opacity:.95;transform:scale(1)}}

/* ---------- devis ---------- */
.fl-devis{background:var(--fond);border:1px solid var(--trait);border-radius:12px;padding:1.25rem 1.35rem}
.fl-devis__tete{display:flex;justify-content:space-between;align-items:baseline;
padding-bottom:.7rem;border-bottom:1px solid var(--trait);margin-bottom:.85rem}
.fl-devis__eti{font-size:.76rem;text-transform:uppercase;letter-spacing:.16em;font-weight:700;color:var(--acc)}
.fl-devis__num{font-size:.78rem;color:var(--doux);font-variant-numeric:tabular-nums}
.fl-devis__l{list-style:none;padding:0;margin:0}
.fl-devis__l li{display:flex;justify-content:space-between;gap:1rem;padding:.42rem 0;font-size:.9rem;
border-bottom:1px dotted var(--trait)}
.fl-devis__l b{font-variant-numeric:tabular-nums;color:var(--doux);font-weight:600}
.fl-devis__total{display:flex;justify-content:space-between;align-items:baseline;margin-top:.9rem;
padding-top:.75rem;border-top:2px solid var(--encre)}
.fl-devis__total span{font-size:.8rem;text-transform:uppercase;letter-spacing:.1em;font-weight:700}
.fl-devis__total b{font-size:1.5rem;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.fl-devis__note{margin:.7rem 0 0;font-size:.78rem;color:var(--doux)}
.js .fl-devis[data-vu] .fl-devis__l li{animation:fl-ligne .5s cubic-bezier(.16,1,.3,1) var(--r,0ms) both}
@keyframes fl-ligne{from{opacity:0;transform:translateX(-8px)}}

/* ---------- fenêtre ---------- */
.fl-fen{background:var(--fond);border-radius:12px;overflow:hidden;border:1px solid var(--trait);
box-shadow:0 2px 4px rgba(16,24,40,.04),0 18px 40px -16px rgba(16,24,40,.24),0 48px 90px -50px rgba(16,24,40,.4)}
.fl-fen__barre{display:flex;align-items:center;gap:.3rem;padding:.55rem .75rem;
background:color-mix(in srgb,var(--encre) 5%,transparent);border-bottom:1px solid var(--trait)}
.fl-fen__barre i{width:.5rem;height:.5rem;border-radius:50%;background:color-mix(in srgb,var(--encre) 18%,transparent)}
.fl-fen__url{margin-left:.6rem;font-size:.76rem;color:var(--doux);background:var(--fond);
padding:.1rem .55rem;border-radius:999px;border:1px solid var(--trait)}
.fl-fen__corps{padding:1.1rem}
.fl-fen__nav{display:flex;align-items:center;gap:.4rem;margin-bottom:1rem}
.fl-fen__nav b{width:2.6rem;height:.62rem;border-radius:3px;background:var(--acc)}
.fl-fen__nav u{width:1.5rem;height:.42rem;border-radius:3px;background:color-mix(in srgb,var(--encre) 13%,transparent)}
.fl-fen__h1{height:1.15rem;width:70%;border-radius:4px;background:color-mix(in srgb,var(--encre) 78%,transparent);margin-bottom:.7rem}
.fl-fen__p{height:.45rem;border-radius:3px;background:color-mix(in srgb,var(--encre) 11%,transparent);margin-bottom:.35rem}
.fl-fen__p--court{width:66%;margin-bottom:1rem}
.fl-fen__grille{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin-bottom:1rem}
.fl-fen__grille span{height:3.1rem;border-radius:6px;background:color-mix(in srgb,var(--encre) 8%,transparent)}
.fl-fen__cta{height:1.5rem;width:38%;border-radius:6px;background:var(--acc)}
.js .fl-fen[data-vu] .fl-fen__nav,.js .fl-fen[data-vu] .fl-fen__h1,
.js .fl-fen[data-vu] .fl-fen__p,.js .fl-fen[data-vu] .fl-fen__grille span,
.js .fl-fen[data-vu] .fl-fen__cta{animation:fl-bloc .55s cubic-bezier(.16,1,.3,1) var(--r,0ms) both}
@keyframes fl-bloc{from{opacity:0;transform:translateY(9px) scaleX(.94);transform-origin:left}}

/* ---------- Core Web Vitals ---------- */
.fl-cwv{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}
.fl-cwv__i{text-align:center}
.fl-cwv__svg{width:64px;height:64px;transform:rotate(-90deg)}
.fl-cwv__fond{fill:none;stroke:var(--trait);stroke-width:5}
.fl-cwv__arc{fill:none;stroke:var(--acc);stroke-width:5;stroke-linecap:round;
stroke-dasharray:var(--c);stroke-dashoffset:var(--o)}
.fl-cwv__val{display:block;font-size:1.05rem;font-weight:700;margin-top:.35rem;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.fl-cwv__cle{display:block;font-size:.76rem;text-transform:uppercase;letter-spacing:.13em;color:var(--acc);font-weight:700}
.fl-cwv__quoi{display:block;font-size:.8rem;color:var(--doux);margin-top:.3rem;line-height:1.35}
.js .fl-cwv[data-vu] .fl-cwv__arc{animation:fl-arc 1.5s cubic-bezier(.16,1,.3,1) var(--r,0ms) both}
@keyframes fl-arc{from{stroke-dashoffset:var(--c)}}

/* ---------- carte reelle : contour du canton qui se trace ---------- */
.fl-nu__terre{fill:color-mix(in srgb,var(--acc) 7%,transparent);stroke:color-mix(in srgb,var(--acc) 55%,transparent);stroke-width:1.1;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.fl-nu__terre--on{fill:color-mix(in srgb,var(--acc) 12%,transparent)}
.js .fl-carte .fl-nu__terre{stroke-dasharray:1;stroke-dashoffset:1}
.js .fl-carte[data-vu] .fl-nu__terre{animation:fl-terre 1.6s cubic-bezier(.3,.7,.3,1) forwards}
@keyframes fl-terre{to{stroke-dashoffset:0}}
.fl-carte .fl-nu__pt{opacity:.22}
.fl-carte .fl-nu__pt--on{opacity:.9}

/* ---------- commune mise en evidence dans le nuage ---------- */
.fl-nu__halo{fill:var(--acc);opacity:.18}
.fl-nu__pt--ici{fill:var(--acc);opacity:1;stroke:var(--fond);stroke-width:1.5}
.fl-nu__nom{fill:var(--encre);font-size:11px;font-weight:700;letter-spacing:-.01em}
.js .fl-nuage[data-vu] .fl-nu__halo{animation:fl-halo 2.4s ease-in-out .9s infinite}
.js .fl-nuage[data-vu] .fl-nu__nom{animation:fl-fondu .6s ease .8s both}
@keyframes fl-halo{0%,100%{opacity:.18;r:11}50%{opacity:.05;r:17}}

/* ---------- liste a cocher ---------- */
.fl-coches{list-style:none;padding:0;margin:0;display:grid;gap:.75rem}
.fl-coches__i{display:grid;grid-template-columns:1.5rem minmax(0,1fr);gap:.8rem;align-items:start;line-height:1.45}
.fl-coches__svg{width:1.5rem;height:1.5rem;margin-top:.05em}
.fl-coches__rond{fill:color-mix(in srgb,var(--acc) 10%,transparent);stroke:var(--acc);stroke-width:1.5}
.fl-coches__v{fill:none;stroke:var(--acc);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:20;stroke-dashoffset:0}
.js .fl-coches .fl-coches__v{stroke-dashoffset:20}
.js .fl-coches .fl-coches__i{opacity:0;transform:translateY(8px)}
.js .fl-coches[data-vu] .fl-coches__i{animation:fl-cocheIn .5s cubic-bezier(.16,1,.3,1) var(--r,0ms) both}
.js .fl-coches[data-vu] .fl-coches__v{animation:fl-cocheV .45s ease-out calc(var(--r,0ms) + 280ms) both}
@keyframes fl-cocheIn{to{opacity:1;transform:none}}
@keyframes fl-cocheV{to{stroke-dashoffset:0}}

/* ---------- mots animes ---------- */
.fl-mot{display:inline-block}
.js .fl-mot{opacity:0;transform:translateY(.35em) rotate(1.5deg);
animation:fl-motIn .75s cubic-bezier(.16,1,.3,1) calc(var(--i) * 65ms + 120ms) both}
@keyframes fl-motIn{to{opacity:1;transform:none}}

/* ---------- comparatif ---------- */
.fl-compar{display:grid;gap:.35rem}
.fl-compar__l{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.7fr) minmax(0,1.5fr) minmax(0,1.5fr);gap:1rem;
padding:.85rem 1rem;border-radius:10px;font-size:.9rem;line-height:1.4;align-items:start}
.fl-compar__l--tete{font-size:.76rem;text-transform:uppercase;letter-spacing:.14em;color:var(--doux);font-weight:700;padding-bottom:.4rem}
.fl-compar__l:not(.fl-compar__l--tete){background:color-mix(in srgb,var(--encre) 3.5%,transparent)}
.fl-compar__l--ici{background:color-mix(in srgb,var(--acc) 9%,transparent)!important;box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--acc) 40%,transparent)}
.fl-compar__l b{font-weight:700;display:block}
.fl-compar__l b a{color:var(--acc);text-decoration:none}
.fl-compar__l b a:hover{text-decoration:underline}
.fl-compar__l i{font-style:normal;font-size:.76rem;text-transform:uppercase;letter-spacing:.12em;color:var(--acc);font-weight:700}
.js .fl-compar .fl-compar__l:not(.fl-compar__l--tete){opacity:0;transform:translateX(-10px)}
.js .fl-compar[data-vu] .fl-compar__l{animation:fl-comparIn .5s cubic-bezier(.16,1,.3,1) var(--r,0ms) both}
@keyframes fl-comparIn{to{opacity:1;transform:none}}
@media(max-width:700px){.fl-compar__l{grid-template-columns:minmax(0,1fr) auto}.fl-compar__l--tete{display:none}
.fl-compar__l span:nth-child(2){font-size:.76rem;text-transform:uppercase;letter-spacing:.1em;color:var(--doux);padding-top:.25rem}
.fl-compar__l span:nth-child(3),.fl-compar__l span:nth-child(4){grid-column:1/-1;font-size:.84rem;color:var(--doux)}
.fl-compar__l span:nth-child(3)::before{content:"Point fort · ";font-weight:700;color:var(--acc)}
.fl-compar__l span:nth-child(4)::before{content:"Vigilance · ";font-weight:700;color:var(--encre)}}

/* ---------- maillage ---------- */
.fl-ma__svg{width:100%;height:auto;display:block}
.fl-ma__l{stroke:var(--acc);stroke-width:.8;opacity:.3}
.fl-ma__n{fill:var(--acc);opacity:.65}
.fl-ma__n--r{opacity:1}
.fl-ma__t{fill:var(--doux);font-size:9.5px;text-transform:uppercase;letter-spacing:.09em}
.js .fl-maillage[data-vu] .fl-ma__l{animation:fl-fondu3 .5s ease var(--r,0ms) both}
.js .fl-maillage[data-vu] .fl-ma__n{animation:fl-fondu2 .45s ease var(--r,0ms) both}
@keyframes fl-fondu2{from{opacity:0;transform:scale(.2);transform-box:fill-box;transform-origin:center}to{opacity:.65}}
@keyframes fl-fondu3{from{opacity:0}to{opacity:.3}}

@media(prefers-reduced-motion:reduce){
  .js .fl-serp[data-vu] .fl-serp__item--nous,
  .js .fl-graph[data-vu] .fl-gr__trait,.js .fl-graph[data-vu] .fl-gr__aire,.js .fl-graph[data-vu] .fl-gr__pt,
  .js .fl-nuage[data-vu] .fl-nu__pt,.js .fl-nuage[data-vu] .fl-nu__pt--on,
  .js .fl-devis[data-vu] .fl-devis__l li,.js .fl-fen[data-vu] *,
  .js .fl-cwv[data-vu] .fl-cwv__arc,.js .fl-maillage[data-vu] *,
  .js .fl-coches *,.js .fl-mot,.js .fl-compar *,.js .fl-nuage[data-vu] .fl-nu__halo{animation:none!important}
  .js .fl-coches .fl-coches__i,.js .fl-mot,.js .fl-compar .fl-compar__l{opacity:1;transform:none}
  .js .fl-coches .fl-coches__v{stroke-dashoffset:0}
  .js .fl-carte .fl-nu__terre{stroke-dashoffset:0;animation:none!important}
  .js .fl-graph .fl-gr__trait{stroke-dashoffset:0}
  .js .fl-graph .fl-gr__aire,.js .fl-graph .fl-gr__pt{opacity:1}
}
.fl-bloc{width:min(1160px,91vw);margin-inline:auto}
.fl-bloc--serre{width:min(860px,91vw)}
.fl-h1{font-family:var(--dis);font-size:clamp(2.5rem,5.4vw,4.9rem);line-height:.98;letter-spacing:-.02em;margin-bottom:var(--e4);max-width:17ch;text-wrap:balance}
.fl-h1--annexe{font-size:clamp(2.2rem,4.6vw,3.8rem)}
.fl-h1--long{font-size:clamp(2.1rem,4.3vw,3.9rem);max-width:20ch}
.fl-h2{font-family:var(--dis);font-size:var(--t-2xl);line-height:1.05;letter-spacing:-.015em;margin-bottom:var(--e4);max-width:24ch;text-wrap:balance}
.fl-h2::after{content:"";display:block;width:3.2rem;height:.45rem;background:var(--jaune);margin-top:var(--e2)}
.fl-sur{font-family:var(--txt);font-style:italic;font-size:var(--t-md);color:var(--acc);margin-bottom:var(--e3)}
.fl-chapo{font-size:var(--t-lg);line-height:1.5;max-width:56ch;color:color-mix(in srgb,var(--encre) 82%,var(--doux))}
.fl-lead{font-size:var(--t-xl);line-height:1.35;color:var(--encre);margin-bottom:var(--e4)}
.fl-lien{color:var(--acc);text-decoration:none;font-weight:600;display:inline-flex;align-items:center;gap:.4rem;border-bottom:2px solid var(--jaune)}
.fl-lien svg{transition:transform .25s}
.fl-lien:hover svg{transform:translateX(4px)}

/* boutons : rectangle a bordure 2 px et ombre dure — l'inverse de la pilule */
.fl-btn{display:inline-flex;align-items:center;gap:.6rem;padding:.9rem 1.5rem;border:2px solid var(--encre);font-family:var(--txt);
font-weight:600;font-size:var(--t-md);text-decoration:none;color:var(--encre);background:var(--fond);box-shadow:var(--ombre2);
transition:transform .15s,box-shadow .15s}
.fl-btn:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--encre)}
.fl-btn:active{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--encre)}
.fl-btn--jaune{background:var(--jaune)}
.fl-btn--bleu{background:var(--acc);color:#fff}
.fl-btn--grand{padding:1.05rem 1.8rem;font-size:var(--t-lg)}
.fl-wa{display:inline-flex;align-items:center;gap:.55rem;padding:.9rem 1.5rem;border:2px solid var(--encre);background:#fff;
color:var(--encre);text-decoration:none;font-weight:600;font-size:var(--t-md);box-shadow:var(--ombre2);transition:transform .15s,box-shadow .15s}
.fl-wa:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--encre);background:#DCF7E6}
.fl-wa__ico{color:#128C3E}
.fl-wa--grand{padding:1.05rem 1.8rem;font-size:var(--t-lg)}

/* en-tete : une ligne, bordure basse epaisse */
.fl-tete{background:var(--fond);border-bottom:3px solid var(--encre);position:sticky;top:0;z-index:40}
.fl-tete__int{display:flex;align-items:center;gap:var(--e3);min-height:4.6rem;flex-wrap:wrap;width:min(1360px,95vw)}
.fl-marque{display:flex;flex-direction:column;text-decoration:none;color:var(--encre);margin-right:auto;line-height:1.1}
.fl-marque b{font-family:var(--dis);font-size:1.15rem;letter-spacing:-.01em}
.fl-marque i{font-style:italic;font-size:.85rem;color:var(--doux)}
.fl-nav{display:flex;gap:.1rem;flex-wrap:wrap}
.fl-nav a{padding:.4rem .6rem;text-decoration:none;color:var(--encre);font-size:var(--t-sm);font-weight:600;border-bottom:2px solid transparent}
.fl-nav a:hover{border-bottom-color:var(--jaune)}
.fl-nav__cms{color:var(--doux)!important;font-weight:400!important;font-style:italic}
.fl-tel{font-weight:700;text-decoration:none;color:var(--encre);white-space:nowrap;font-variant-numeric:tabular-nums}
.fl-tete__cta{padding:.55rem 1rem;font-size:var(--t-sm);box-shadow:3px 3px 0 var(--encre)}
.fl-burger{display:none;border:2px solid var(--encre);background:var(--fond);padding:.35rem .9rem;font:inherit;font-weight:700;cursor:pointer;box-shadow:3px 3px 0 var(--encre)}
.fl-burger[aria-expanded="true"]{background:var(--jaune);transform:translate(2px,2px);box-shadow:1px 1px 0 var(--encre)}
.fl-nav__pied{display:none}
html.menu-ouvert{overflow:hidden}
html.menu-ouvert .fl-barre{display:none!important}
.fl-barre{transition:transform .3s cubic-bezier(.16,1,.3,1)}
html.cta-visible .fl-barre{transform:translateY(120%)} /* un CTA est deja a l'ecran : la barre s'efface */ /* le panneau porte deja WhatsApp + devis : pas de doublon */

.fl-ariane ol{display:flex;flex-wrap:wrap;gap:.4rem;font-size:var(--t-sm);color:var(--doux);margin-bottom:var(--e3);font-style:italic}
.fl-ariane li+li::before{content:"→";margin-right:.4rem}
.fl-ariane a{color:var(--doux);text-decoration:none}
.fl-ariane a:hover{color:var(--acc)}

/* hero clair, devis + tampon */
.fl-hero{padding:var(--e3) 0 var(--e6);background:var(--fond);position:relative}
.fl-hero--annexe{padding-bottom:var(--e4)}
.fl-hero__int{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:var(--e6);align-items:start}
.fl-hero__act{display:flex;gap:.8rem;flex-wrap:wrap;margin:var(--e5) 0 var(--e3)}
.fl-hero__sous{font-style:italic;color:var(--doux);font-size:var(--t-sm);margin:0}
.fl-hero__vis{position:relative;padding-top:var(--e4)}
.fl-hero__vis .fl-devis{border:2px solid var(--encre);border-radius:0;box-shadow:var(--ombre);background:#fff;padding:var(--e4)}
.fl-tampon{position:absolute;right:-1rem;top:-.4rem;z-index:2;transform:rotate(6deg);background:var(--jaune);color:var(--encre);
font-family:var(--dis);font-size:var(--t-xs);text-transform:uppercase;letter-spacing:.12em;padding:.55rem 1rem;border:2px solid var(--encre);box-shadow:3px 3px 0 var(--encre)}
.fl-devis__total b{font-family:var(--dis);font-size:var(--t-xl)}
.fl-devis__eti{color:var(--acc)}

/* bandeau de competences */
.fl-bande{background:var(--encre);color:var(--fond);padding:var(--e3) 0;border-block:3px solid var(--encre)}
.fl-bande__mot{font-family:var(--dis);font-size:var(--t-xl);display:inline-flex;align-items:center;gap:2rem;white-space:nowrap;letter-spacing:-.01em}
.fl-bande__mot i{font-style:normal;color:var(--jaune);font-size:.7em}

.fl-texte,.fl-services,.fl-vitesse,.fl-etapes,.fl-refus,.fl-maillage,.fl-faq,.fl-cms,.fl-tarifs,.fl-zones{padding:var(--e7) 0}
.fl-texte p{font-size:var(--t-md);margin-bottom:var(--e3);color:color-mix(in srgb,var(--encre) 84%,var(--doux))}
.fl-texte .fl-lead{font-size:var(--t-xl);color:var(--encre)}
.fl-prose h2{font-family:var(--dis);font-size:var(--t-lg);margin:var(--e5) 0 var(--e2)}
.fl-manque{color:var(--acc);font-style:italic}

/* services : liste de definitions + note collante en pointilles */
.fl-services{background:var(--fond2);border-block:3px solid var(--encre)}
.fl-services__int{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:var(--e6);align-items:start}
.fl-dl{margin:0}
.fl-dl__i{padding:var(--e3) 0;border-top:2px solid var(--encre)}
.fl-dl dt{font-family:var(--dis);font-size:var(--t-lg);margin-bottom:.3rem;letter-spacing:-.01em}
.fl-dl dd{margin:0;color:var(--doux);font-size:var(--t-md)}
.fl-services__plus{margin-top:var(--e4)}
.fl-note{background:#fff;border:2px dashed var(--encre);padding:var(--e4);position:sticky;top:6rem;box-shadow:var(--ombre)}
.fl-note__t{font-family:var(--dis);font-size:var(--t-lg);margin-bottom:var(--e2)}
.fl-note p{color:var(--doux);margin-bottom:var(--e3)}

/* vitesse */
.fl-vitesse__int{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--e6);align-items:center}
.fl-vitesse__p{font-size:var(--t-md);color:var(--doux)}
.fl-vitesse__vis{border:2px solid var(--encre);padding:var(--e4);background:#fff;box-shadow:var(--ombre)}
.fl-cwv__val{font-family:var(--dis)}

/* CMS */
.fl-cms{background:var(--fond2);border-block:3px solid var(--encre)}
.fl-cms__int{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--e4)}
.fl-cms__b{background:#fff;border:2px solid var(--encre);padding:var(--e4);box-shadow:var(--ombre2)}
.fl-cms__b--contre{background:#FFF1D6}
.fl-cms__b h3{font-family:var(--dis);font-size:var(--t-md);margin-bottom:var(--e2)}
.fl-cms__b ul{padding-left:1.1em;color:var(--doux);list-style:square}
.fl-cms__b li{margin-bottom:.4rem}
.fl-cms__note{margin-top:var(--e4);font-style:italic;color:var(--doux)}

/* trois temps : cartes a ombre dure, numero en cartouche */
.fl-frise{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--e5)}
.fl-frise li{background:#fff;border:2px solid var(--encre);padding:var(--e5) var(--e4) var(--e4);position:relative;box-shadow:var(--ombre)}
.fl-frise__n{position:absolute;top:-1.1rem;left:var(--e4);background:var(--jaune);border:2px solid var(--encre);font-family:var(--dis);
width:2.2rem;height:2.2rem;display:grid;place-items:center;font-size:var(--t-md)}
.fl-frise h3{font-family:var(--dis);font-size:var(--t-lg);margin-bottom:var(--e2)}
.fl-frise p{color:var(--doux);font-size:var(--t-md)}

/* refus */
.fl-refus{background:var(--encre);color:var(--fond)}
.fl-refus .fl-h2{color:var(--fond)}
.fl-refus__l li{position:relative;padding-left:2.4rem;margin-bottom:var(--e3);font-size:var(--t-lg);line-height:1.4}
.fl-refus__l li::before{content:"✕";position:absolute;left:0;top:0;color:var(--jaune);font-family:var(--dis);font-size:1.2em}
.fl-refus__note{margin-top:var(--e4);color:rgba(248,244,236,.6);font-style:italic}

/* tarifs a la ligne */
.fl-prix li{padding:var(--e4) 0;border-top:2px solid var(--encre)}
.fl-prix li:last-child{border-bottom:2px solid var(--encre)}
.fl-prix__t{display:flex;justify-content:space-between;align-items:baseline;gap:var(--e3);flex-wrap:wrap}
.fl-prix__nom{font-family:var(--dis);font-size:var(--t-lg)}
.fl-prix__val{font-family:var(--dis);font-size:var(--t-lg);color:var(--acc);white-space:nowrap}
.fl-prix p{margin:.5rem 0 0;color:var(--doux)}
.fl-tarifs__note{margin:var(--e5) 0 var(--e4);color:var(--doux);font-style:italic}

/* maillage : liens en etiquettes */
.fl-maillage{background:var(--fond2);border-block:3px solid var(--encre)}
.fl-maillage__vis{border:2px solid var(--encre);background:#fff;padding:var(--e4);margin-bottom:var(--e5);box-shadow:var(--ombre2)}
.fl-maille+.fl-maille{margin-top:var(--e5)}
.fl-maille h3{font-family:var(--txt);font-style:italic;font-weight:400;font-size:var(--t-md);color:var(--doux);margin-bottom:var(--e2)}
.fl-maille__l{display:flex;flex-wrap:wrap;gap:.45rem;margin:0}
.fl-maille__l a{border:2px solid var(--encre);background:#fff;padding:.35rem .8rem;text-decoration:none;color:var(--encre);font-size:var(--t-sm);font-weight:600;transition:transform .12s,box-shadow .12s}
.fl-maille__l a:hover{transform:translate(-2px,-2px);box-shadow:3px 3px 0 var(--encre);background:var(--jaune)}
.fl-maillage__tout{margin-top:var(--e5)}

/* FAQ ouverte */
.fl-faq__l{display:grid;gap:var(--e4)}
.fl-qr{border-left:4px solid var(--jaune);padding-left:var(--e3)}
.fl-qr__q{font-family:var(--dis);font-size:var(--t-lg);margin-bottom:.4rem;line-height:1.2}
.fl-qr__r{color:var(--doux);margin:0}

/* zones */
.fl-zones__t{margin-top:var(--e6)}
.fl-zones__t em{font-style:italic;font-family:var(--txt);font-size:var(--t-sm);color:var(--doux)}
.fl-zones__l{display:flex;flex-wrap:wrap;gap:.35rem;margin:0}
.fl-zones__l a{border:1px solid var(--encre);padding:.25rem .7rem;text-decoration:none;color:var(--encre);font-size:var(--t-sm)}
.fl-zones__l a:hover{background:var(--jaune)}

/* contact : centre, WhatsApp en premier */
.fl-contact{background:var(--fond);padding:var(--e8) 0;border-top:3px solid var(--encre)}
.fl-contact__h2{font-size:var(--t-3xl)}
.fl-contact__p{font-size:var(--t-lg);color:var(--doux);max-width:60ch}
.fl-contact__direct{display:flex;flex-direction:column;gap:var(--e3);margin:var(--e5) 0;align-items:flex-start}
.fl-coord{display:flex;flex-direction:column;text-decoration:none;color:var(--encre);border-top:2px solid var(--encre);padding:.8rem 0;width:100%}
.fl-coord__lab{font-style:italic;font-size:var(--t-sm);color:var(--doux)}
.fl-coord__val{font-family:var(--dis);font-size:var(--t-lg)}
.fl-contact__form{background:#fff;border:2px solid var(--encre);padding:var(--e5);box-shadow:var(--ombre)}
.fl-contact__note{font-size:var(--t-sm);color:var(--doux);font-style:italic;margin-top:var(--e3)}
.fl-champ{margin-bottom:var(--e3);display:flex;flex-direction:column}
.fl-champ label{font-weight:600;margin-bottom:.35rem;font-size:var(--t-sm)}
.fl-champ input,.fl-champ select,.fl-champ textarea{font-size:var(--t-md);padding:.8rem .9rem;border:2px solid var(--encre);width:100%;background:var(--fond);border-radius:0}
.fl-champ input:focus,.fl-champ select:focus,.fl-champ textarea:focus{outline:none;background:#fff;box-shadow:4px 4px 0 var(--jaune)}
.fl-champ--accord label{flex-direction:row;display:flex;gap:.5rem;font-weight:400;font-style:italic;color:var(--doux);align-items:flex-start}
.fl-champ--accord input{width:auto;margin-top:.3rem}
.fl-champ--envoi button{width:100%;background:var(--encre);color:var(--fond);border:2px solid var(--encre);padding:1rem;font-family:var(--dis);font-size:var(--t-md);cursor:pointer;box-shadow:var(--ombre2);transition:transform .15s,box-shadow .15s}
.fl-champ--envoi button:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--jaune)}
.fl-hors{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.fl-etat{min-height:1.3em;font-size:var(--t-sm);margin-top:.6rem;font-style:italic}
.fl-etat[data-etat="ok"]{color:#15803D}
.fl-etat[data-etat="ko"]{color:#B91C1C}

/* (ancien pied retire : voir « pied unique du gabarit ») */
.fl-barre{display:none;position:fixed;bottom:0;left:0;right:0;z-index:60;gap:.5rem;padding:.6rem;background:var(--fond);border-top:3px solid var(--encre)}
.fl-barre a{flex:1;text-align:center;padding:.8rem;text-decoration:none;font-weight:700;font-size:var(--t-sm);border:2px solid var(--encre);color:var(--encre)}
.fl-barre__wa{background:#DCF7E6}
.fl-barre__cta{background:var(--jaune)}

/* pages ville / canton / plateforme : fiche cartonnee, cartes de communes */
.fl-fiche{border:2px solid var(--encre);background:#fff;padding:var(--e4);box-shadow:var(--ombre)}
.fl-fiche__dl{margin:var(--e3) 0 0}
.fl-fiche__dl>div{display:grid;grid-template-columns:7rem minmax(0,1fr);gap:.8rem;padding:.55rem 0;border-top:1px solid var(--trait);font-size:var(--t-sm)}
.fl-fiche__dl dt{font-style:italic;color:var(--doux)}
.fl-fiche__dl dd{margin:0;font-weight:600;line-height:1.4}
.fl-fiche__dl dd a{color:var(--acc)}
.fl-fiche__tete{display:flex;align-items:center;gap:var(--e3);margin-bottom:var(--e2)}
.fl-fiche__mono{font-family:var(--dis);font-size:2.3rem;width:4rem;height:4rem;display:grid;place-items:center;background:var(--jaune);border:2px solid var(--encre);box-shadow:3px 3px 0 var(--encre);flex:0 0 auto}
.fl-fiche__mono--logo svg{width:60%;height:60%;fill:var(--encre)}
.fl-fiche__nom{font-family:var(--dis);font-size:var(--t-xl);line-height:1.05}
.fl-fiche__sous{font-style:italic;color:var(--doux)}
.fl-fiche__chiffres{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--e3);margin-top:var(--e3);padding-top:var(--e3);border-top:2px solid var(--encre)}
.fl-fiche__chiffres b{display:block;font-family:var(--dis);font-size:var(--t-2xl);line-height:1;color:var(--acc);font-variant-numeric:tabular-nums}
.fl-fiche__chiffres b.fl-fiche__txt{font-size:var(--t-lg);color:var(--encre)}
.fl-fiche__chiffres span{display:block;font-size:var(--t-xs);color:var(--doux);margin-top:.35rem;font-style:italic;line-height:1.35}
.fl-local,.fl-autour,.fl-communes-z,.fl-audit,.fl-compar-z,.fl-cmsloc{padding:var(--e7) 0}
.fl-local__int,.fl-audit__int{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:var(--e6);align-items:start}
.fl-local__p,.fl-audit__p,.fl-compar__p{color:var(--doux);margin-bottom:var(--e4);max-width:60ch}
.fl-local .fl-coches,.fl-audit .fl-coches{font-size:var(--t-md)}
.fl-note--jaune{background:var(--jaune);border-style:solid;position:static}
.fl-note--jaune p{color:var(--encre)}
.fl-note--fixe{position:static}
.fl-note__prix{font-family:var(--dis);font-size:var(--t-2xl);margin-bottom:var(--e2)!important;line-height:1}
.fl-communes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--e3)}
.fl-commune{display:flex;flex-direction:column;gap:.15rem;padding:var(--e3) var(--e4);border:2px solid var(--encre);background:#fff;text-decoration:none;color:var(--encre);
box-shadow:4px 4px 0 var(--encre);transition:transform .15s,box-shadow .15s,background .15s}
.fl-commune:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--encre);background:var(--jaune)}
.fl-commune__npa{font-style:italic;color:var(--acc);font-size:var(--t-sm)}
.fl-commune b{font-family:var(--dis);font-size:var(--t-lg);line-height:1.1;font-weight:400}
.fl-commune i{font-style:italic;color:var(--doux);font-size:var(--t-xs)}
.fl-autour,.fl-audit{background:var(--fond2);border-block:3px solid var(--encre)}
.fl-autour__suite,.fl-communes__suite{margin-top:var(--e5)}
.fl-cadre{border:2px solid var(--encre);background:#fff;padding:var(--e4);box-shadow:var(--ombre)}
.fl-compar__l--ici{background:color-mix(in srgb,var(--jaune) 45%,#fff)!important;box-shadow:inset 0 0 0 2px var(--encre)}
.fl-compar__l:not(.fl-compar__l--tete){border-radius:0}

/* page 404 */
.fl-404__code{font-family:var(--dis);font-size:clamp(5rem,16vw,12rem);line-height:.9;letter-spacing:-.04em;color:var(--fond2);-webkit-text-stroke:3px var(--encre);position:relative;display:inline-block;margin-bottom:var(--e4)}
.fl-404__tampon{position:absolute;left:calc(100% - 1rem);top:.6rem;transform:rotate(8deg);font-size:var(--t-sm);white-space:nowrap}
/* pied unique du gabarit */
/* pied : carte de visite + index */
.fl-pied{background:var(--fond2);border-top:3px solid var(--encre);padding:var(--e6) 0 var(--e4);color:var(--encre)}
.fl-pied__int{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.7fr);gap:var(--e6);align-items:start}
.fl-visite{background:#fff;border:2px solid var(--encre);box-shadow:var(--ombre);padding:var(--e4);transform:rotate(-1.2deg)}
.fl-visite__nom{font-family:var(--dis);font-size:var(--t-lg);margin-bottom:var(--e2)}
.fl-visite__txt{font-style:italic;color:var(--doux);margin-bottom:var(--e3)}
.fl-visite .fl-coord{border-top:1px solid var(--trait);padding:.5rem 0}
.fl-visite .fl-coord__val{font-size:var(--t-md)}
.fl-pied__listes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--e4)}
.fl-pied__listes p{font-family:var(--dis);font-size:var(--t-sm);margin-bottom:.5rem;padding-bottom:.3rem;border-bottom:2px solid var(--encre)}
.fl-pied__listes a{display:block;color:var(--encre);text-decoration:none;padding:.2rem 0;border-bottom:1px dotted var(--trait);font-size:var(--t-sm)}
.fl-pied__listes a:hover{color:var(--acc)}
.fl-pied__bas{margin-top:var(--e5);font-style:italic;font-size:var(--t-sm);color:var(--doux)}
.fl-pied__bas a{color:inherit}
@media(max-width:900px){.fl-pied__int,.fl-pied__listes{grid-template-columns:minmax(0,1fr)}.fl-visite{transform:none}}

@media(max-width:1400px){.fl-tel{display:none}}
@media(max-width:1000px){
.fl-hero__int,.fl-services__int,.fl-vitesse__int,.fl-local__int,.fl-audit__int{grid-template-columns:minmax(0,1fr)}
.fl-communes{grid-template-columns:repeat(2,minmax(0,1fr))}
.fl-note{position:static}
.fl-cms__int,.fl-frise{grid-template-columns:minmax(0,1fr)}
.fl-frise{gap:var(--e5)}
.fl-pied__haut{grid-template-columns:repeat(2,minmax(0,1fr))}
/* menu mobile : panneau papier sous l'en-tete */
.fl-nav{display:flex;flex-direction:column;flex-wrap:nowrap;position:fixed;top:4.6rem;left:0;right:0;bottom:0;background:var(--fond);border-top:3px solid var(--encre);padding:var(--e3) 4.5vw var(--e7);overflow-y:auto;
transform:translateY(-12px);opacity:0;visibility:hidden;transition:transform .3s cubic-bezier(.16,1,.3,1),opacity .25s,visibility 0s .3s;z-index:39}
.fl-nav[data-ouvert]{transform:none;opacity:1;visibility:visible;transition:transform .3s cubic-bezier(.16,1,.3,1),opacity .25s}
.fl-nav>a{font-family:var(--dis);font-size:var(--t-lg);padding:.95rem 0;border-bottom:1px solid var(--trait);border-left:0}
.fl-nav>a:hover{border-bottom-color:var(--jaune)}
.fl-nav>.fl-nav__cms{font-family:var(--txt)!important;font-style:italic;font-size:var(--t-md)!important;color:var(--doux)!important;padding:.6rem 0 .6rem 1rem}
.fl-nav__pied{display:grid;gap:.7rem;margin-top:var(--e5)}
.fl-nav__pied .fl-btn,.fl-nav__pied .fl-wa{justify-content:center}
.fl-nav__tel{font-family:var(--dis);font-size:var(--t-lg);color:var(--encre);text-decoration:none;display:flex;flex-direction:column;margin-bottom:var(--e2)}
.fl-nav__tel i{font-family:var(--txt);font-style:italic;font-size:var(--t-sm);color:var(--doux)}
.fl-burger{display:block}
.fl-tel,.fl-tete__cta{display:none}
}
@media(max-width:640px){
body{padding-bottom:4.6rem}
.fl-hero{padding:var(--e3) 0 var(--e6)}
.fl-hero__act{flex-direction:column;align-items:stretch}
.fl-hero__act .fl-btn,.fl-hero__act .fl-wa{justify-content:center;text-align:center}
.fl-btn__ville{display:none}
.fl-h1{font-size:clamp(2.1rem,9.5vw,3rem)}
.fl-tampon{right:0;top:-.2rem;font-size:.75rem;padding:.4rem .7rem}
.fl-maille__l a,.fl-zones__l a{padding:.45rem .8rem}
.fl-pied__listes a{padding:.45rem 0}
.fl-ariane a,.fl-ariane li{display:inline-block;padding:.3rem 0}
.fl-burger{min-height:44px}
.fl-pied__bas a,.fl-lien{display:inline-block;padding:.4rem 0}
.fl-fiche__dl>div{grid-template-columns:minmax(0,1fr)}
.fl-communes{grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem}
.fl-commune{padding:var(--e2) var(--e3)}
.fl-commune b{font-size:var(--t-md)}
.fl-fiche__dl>div{gap:.15rem}
.fl-barre{display:flex}
.fl-texte,.fl-services,.fl-vitesse,.fl-etapes,.fl-refus,.fl-maillage,.fl-faq,.fl-cms,.fl-tarifs,.fl-zones,.fl-contact{padding:var(--e6) 0}
.fl-contact__form{padding:var(--e4);box-shadow:var(--ombre2)}
@media(max-width:640px){
/* __CIBLES_TACTILES__ — cibles tactiles : 40 px de haut au minimum.
   ⚠️ Mesure a 390 px (tools/audit_mobile.py) : fil d'Ariane 30 px, liens de
   tableau 19 px, liens du comparateur 15 a 21 px. Sous le seuil de 32 px, et
   loin des 44 px recommandes par Apple : ce sont des liens qu'on rate au doigt.
   min-height et non padding : le padding depend de la taille du texte, qui
   varie d'un bloc a l'autre — c'est pourquoi un padding de .3rem deja pose sur
   le fil d'Ariane le laissait a 30 px. */
.fl-ariane a,.fl-ariane li,
.fl-compar__l a,
.fl-fiche dd a{display:inline-flex;align-items:center;min-height:40px}
}