/* ============================================================
   estimer.eu — design system unifié (Handover v3, unification visuelle totale).
   Système visuel unique : blanc / bleu royal / marine. Aucun thème Jour/Nuit.
   Police unique auto-hébergée : Inter Variable (WOFF2, 100–900).
   Motion : transform/opacity uniquement. Coupe si prefers-reduced-motion.
   ============================================================ */

@font-face{font-family:"Inter Variable";font-style:normal;font-weight:100 900;font-display:swap;src:url("fonts/inter-variable-latin.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Inter Variable";font-style:normal;font-weight:100 900;font-display:swap;src:url("fonts/inter-variable-latin-ext.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}

:root{
  /* Tokens canoniques imposés (handover v3 §3) — seule source de vérité couleur */
  --color-navy:#071B33;
  --color-blue:#0A67F5;
  --color-blue-hover:#0850C4;
  --color-white:#FFFFFF;
  --color-subtle:#F5F7FA;
  --color-blue-subtle:#EEF3FF;
  --color-text:#071B33;
  --color-text-secondary:#4A5A6B;
  --color-border:#DCE4EE;
  --color-green:#2E7D4F;

  --display: clamp(2.7rem, 7vw, 5.6rem);
  --h2: clamp(1.5rem, 3.4vw, 2.3rem);
  --h3: 1.1rem;
  --body: 0.95rem;
  --small: 0.8rem;
  --micro: 0.7rem;
  --s1:8px; --s2:16px; --s3:24px; --s4:40px; --s5:64px; --s6:96px; --s7:128px;
  --r1:3px; --r2:6px; --r3:10px;
  --maxw: 1180px;
  --read-w: 64ch;       /* mesure de lecture confortable pour la prose */
  --read-lh: 1.62;      /* interligne prose */
  --ease: cubic-bezier(.2,.7,.2,1);
  --mono: "Inter Variable", ui-monospace, Menlo, Consolas, monospace;
  --read: "Inter Variable", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;

  /* Alias legacy -> tokens canoniques, le temps de la migration page par page (§3 addendum).
     Ne pas ajouter de nouvel usage de ces alias ; ils sont supprimés en fin de lot. */
  --bg:var(--color-white); --bg2:var(--color-subtle); --surface:var(--color-white); --surface2:var(--color-subtle);
  --bone:var(--color-white); --graphite:var(--color-navy); --mineral:var(--color-subtle);
  --ink:var(--color-text); --ink-soft:var(--color-text-secondary); --muted:var(--color-text-secondary);
  --line:var(--color-border); --line-strong:var(--color-border);
  --accent:var(--color-blue); --accent-text:var(--color-blue); --accent-ink:var(--color-white);
  --good:var(--color-green); --grain:0;
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  background:var(--bg);color:var(--ink);
  font-family:var(--mono);            /* voix des donnees (la prose passe a --read, cf. bloc V5.0) */
  font-size:var(--body);line-height:1.6;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  position:relative;overflow-x:hidden;
}
/* (grain feTurbulence retiré : rendait un aplat bleu géant sur iOS Safari — bug de rendu SVG
   en background fixed. La profondeur vient des ombres/filets, pas d'un calque plein écran.) */
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--s3);position:relative;z-index:1}

.serif{font-family:var(--read);font-weight:700}
h1,h2{font-family:var(--read);font-weight:700;line-height:1.05;letter-spacing:-.01em}
h1{font-size:var(--display)}
h2{font-size:var(--h2)}
.eyebrow{font-size:var(--micro);letter-spacing:.22em;text-transform:uppercase;color:var(--muted);display:inline-flex;align-items:center;gap:.6em}
.eyebrow::before{content:"";width:22px;height:1px;background:var(--accent);display:inline-block}
.mono-num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}
a{color:inherit}

/* V5.0 fondations DA — la PROSE editoriale adopte la face de lecture (--read) ;
   le mono reste la voix des donnees / labels / preuves. Scope volontairement etroit
   (.hero-center .lede et non .lede) pour NE PAS toucher rapport.html (gele), qui
   partage la classe .lede hors .hero-center. Zero changement de contenu / structure. */
.hero-center .lede, .lead-p, .mech-card p, .src-grid p,
.insufficient, .askbar-msg, .askbar-hint{
  font-family:var(--read); line-height:var(--read-lh); letter-spacing:0;
}

/* nav opaque (PAS de backdrop-filter : iOS Safari le mal-rend en aplat diagonal dans les captures full-page) */
nav{position:sticky;top:0;z-index:30;background:var(--bg);border-bottom:1px solid var(--line)}
nav .wrap{display:flex;align-items:center;justify-content:space-between;height:60px}
.brand{display:flex;align-items:baseline;gap:.5ch;font-weight:600;letter-spacing:-.02em}
.brand b{font-weight:600}
.brand .dot{color:var(--accent-text)}
.brand small{font-size:var(--micro);color:var(--muted);letter-spacing:.12em;text-transform:uppercase;font-weight:400}
.nav-right{display:flex;align-items:center;gap:var(--s2)}
.nav-link{font-size:var(--small);color:var(--muted);text-decoration:none}
.nav-link:hover{color:var(--ink)}
.toggle{border:1px solid var(--line-strong);background:transparent;color:var(--ink);font:inherit;font-size:var(--micro);letter-spacing:.1em;text-transform:uppercase;padding:6px 12px;border-radius:999px;cursor:pointer;display:flex;align-items:center;gap:.5em;transition:border-color .2s var(--ease),color .2s var(--ease)}
.toggle:hover{border-color:var(--accent);color:var(--accent-text)}
.toggle:focus-visible,a:focus-visible,button:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r1)}

.hero{padding:var(--s6) 0 var(--s5)}
.hero-grid{display:grid;grid-template-columns:1.04fr .96fr;gap:var(--s5);align-items:start}
@media(max-width:920px){.hero-grid{grid-template-columns:1fr;gap:var(--s4)}}
.hero h1 .accent{color:var(--accent);font-style:italic}
.hero .lede{margin-top:var(--s3);max-width:46ch;color:var(--ink-soft);font-size:1rem}
.honest-line{margin-top:var(--s3);display:flex;flex-wrap:wrap;gap:.5ch var(--s2);font-size:var(--small);color:var(--muted)}
.honest-line span{display:inline-flex;align-items:center;gap:.55ch}
.honest-line span::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);opacity:.8}

.instrument{background:linear-gradient(180deg,var(--surface),var(--bg2));border:1px solid var(--line-strong);border-radius:var(--r3);padding:var(--s3);position:relative;box-shadow:0 1px 0 rgba(255,255,255,.03) inset, 0 30px 60px -40px rgba(0,0,0,.6)}
.instrument::before,.instrument::after{content:"";position:absolute;width:12px;height:12px;border:1px solid var(--accent);opacity:.5}
.instrument::before{top:10px;left:10px;border-right:none;border-bottom:none}
.instrument::after{bottom:10px;right:10px;border-left:none;border-top:none}
.inst-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--s2);padding-bottom:var(--s2);border-bottom:1px solid var(--line)}
.inst-title{font-size:var(--micro);letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.live{display:inline-flex;align-items:center;gap:.5ch;font-size:var(--micro);letter-spacing:.12em;text-transform:uppercase;color:var(--good)}
.live .pulse{width:7px;height:7px;border-radius:50%;background:var(--good);box-shadow:0 0 0 0 var(--good);animation:pulse 2.4s var(--ease) infinite}
@keyframes pulse{0%{transform:scale(1);opacity:1}70%{transform:scale(2.4);opacity:0}100%{opacity:0}}

.steps{display:grid;gap:var(--s2)}
.step{display:grid;gap:6px}
.step-label{display:flex;align-items:center;gap:.6ch;font-size:var(--micro);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.step-num{display:inline-grid;place-items:center;width:18px;height:18px;border:1px solid var(--line-strong);border-radius:50%;font-size:10px;color:var(--accent-text)}
select,input[type=number],input[type=text]{width:100%;font:inherit;color:var(--ink);background:var(--surface2);border:1px solid var(--line-strong);border-radius:var(--r2);padding:12px 14px;appearance:none;transition:border-color .2s var(--ease)}
select:hover,input:hover{border-color:var(--accent)}
.field-select{position:relative}
.field-select::after{content:"\25BE";position:absolute;right:14px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}
.seg{display:flex;border:1px solid var(--line-strong);border-radius:var(--r2);overflow:hidden}
.seg button{flex:1;font:inherit;font-size:var(--small);background:transparent;color:var(--muted);border:none;padding:11px 8px;cursor:pointer;transition:color .2s,background .2s}
.seg button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);font-weight:500}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:var(--s2)}
input[type=range]{width:100%;accent-color:var(--accent);background:transparent}
.unit{position:relative}
.unit input{padding-right:42px}
.unit .u{position:absolute;right:14px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:var(--small)}
.hint{font-size:var(--micro);color:var(--muted);margin-top:2px;line-height:1.5}

.result{margin-top:var(--s3);padding-top:var(--s3);border-top:1px dashed var(--line-strong)}
.result-top{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s2);flex-wrap:wrap}
.big{font-family:var(--read);font-weight:700;font-size:clamp(2.2rem,5vw,3.4rem);line-height:1;letter-spacing:-.01em}
.big .cur{font-size:.5em;color:var(--muted);margin-left:.15em}
.permsq{text-align:right;color:var(--muted);font-size:var(--small)}
.permsq b{color:var(--ink);font-weight:500}

.range{margin-top:var(--s3)}
.range-caption{font-size:var(--micro);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 6px}
.range-track{position:relative;height:8px;border-radius:999px;background:var(--surface2);border:1px solid var(--line);overflow:hidden}
.range-fill{position:absolute;top:0;bottom:0;left:0;width:100%;background:linear-gradient(90deg,transparent,var(--accent),transparent);opacity:.55;transform-origin:left;transform:scaleX(1);transition:transform .5s var(--ease)}
.range-mid{position:absolute;top:-3px;width:2px;height:14px;background:var(--accent);left:50%;transition:left .5s var(--ease)}
.range-labels{display:flex;justify-content:space-between;margin-top:8px;font-size:var(--small);color:var(--muted)}
.range-labels b{color:var(--ink);font-weight:500}

/* Confiance de l'échantillon : jauge à 4 niveaux, purement informative (dérivée du volume DVF déjà calculé). */
.confidence-meter{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:var(--s2)}
.cm-label{font-size:var(--micro);color:var(--muted);letter-spacing:.04em}
.cm-levels{display:flex;gap:4px}
.cm-lvl{font-size:var(--micro);color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:3px 9px;background:var(--surface2);opacity:.5}
.cm-lvl.active{opacity:1;color:var(--accent-ink);background:var(--accent);border-color:var(--accent);font-weight:600}

.src{margin-top:6px;font-size:var(--micro);color:var(--muted);display:flex;flex-wrap:wrap;align-items:flex-start;gap:.6ch;line-height:1.5}
.src::before{content:"\2514";color:var(--accent-text);opacity:.8}
.src b{color:var(--ink-soft);font-weight:500}
.src em{font-style:normal;color:var(--accent-text)}
.src.missing{color:#ff6b6b}
.src.missing::before{content:"\26A0"}
.insufficient{margin-top:var(--s2);font-size:var(--small);color:var(--ink-soft);border:1px dashed var(--line-strong);border-radius:var(--r2);padding:12px 14px}

.chips{display:flex;flex-wrap:wrap;gap:.5ch var(--s1);margin-top:var(--s3)}
.chip{font-size:var(--micro);letter-spacing:.04em;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:5px 10px;background:var(--surface2)}
.chip b{color:var(--ink-soft);font-weight:500}
.demo-flag{position:absolute;top:-1px;right:-1px;font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-ink);background:var(--accent);padding:4px 9px;border-radius:0 var(--r3) 0 var(--r2);font-weight:600}

section{padding:var(--s6) 0;position:relative;z-index:1}
.section-head{max-width:60ch;margin-bottom:var(--s4)}
.section-head .eyebrow{margin-bottom:var(--s2)}
.lead-p{font-size:1.05rem;color:var(--ink-soft);max-width:54ch}
.mech{border-top:1px solid var(--line)}
.mech-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s3)}
@media(max-width:820px){.mech-grid{grid-template-columns:1fr}}
.mech-card{border:1px solid var(--line);border-radius:var(--r2);padding:var(--s3);background:var(--surface)}
.mech-card .k{font-size:var(--micro);letter-spacing:.16em;text-transform:uppercase;color:var(--accent-text);margin-bottom:var(--s2)}
.mech-card h3{font-family:var(--read);font-size:1.5rem;margin-bottom:8px;font-weight:700}
.mech-card p{font-size:var(--small);color:var(--muted)}
.sources{border-top:1px solid var(--line);background:var(--bg2)}
.src-grid{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:var(--s4)}
@media(max-width:820px){.src-grid{grid-template-columns:1fr;gap:var(--s3)}}
.src-grid h3{font-size:var(--micro);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:var(--s2)}
.src-grid p{font-size:var(--small);color:var(--ink-soft)}
.src-grid a{color:var(--accent-text);text-decoration:none;border-bottom:1px solid var(--line-strong)}
footer{border-top:1px solid var(--line);padding:var(--s4) 0}
footer .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:var(--s2);align-items:center;color:var(--muted);font-size:var(--small)}

.reveal{opacity:0;transform:translateY(16px)}
.reveal.in{opacity:1;transform:none;transition:opacity .6s var(--ease),transform .6s var(--ease)}

/* ============ HERO BARRE UNIQUE (le smart bot = l'entree) ============ */
.hero-center{max-width:720px;margin:0 auto;text-align:center}
.hero-center .eyebrow{justify-content:center}
.hero-center h1{margin-top:var(--s3)}
.hero-center .lede{margin:var(--s3) auto 0;max-width:52ch;color:var(--ink-soft);font-size:1rem}
.askbar{display:flex;align-items:center;gap:8px;margin:var(--s4) auto 0;max-width:600px;background:var(--surface);border:1px solid var(--line-strong);border-radius:16px;padding:7px 7px 7px 16px;box-shadow:0 30px 60px -38px rgba(0,0,0,.7);transition:border-color .2s var(--ease)}
.askbar:focus-within{border-color:var(--accent)}
.askbar-ic{color:var(--accent);font-size:1.15rem;line-height:1;flex:none}
.askbar input{flex:1;min-width:0;border:0;background:transparent;color:var(--ink);font-family:inherit;font-size:16px;padding:11px 2px;outline:none}
.askbar input::placeholder{color:var(--muted)}
.askbar-go{flex:none;border:0;background:var(--accent);color:var(--accent-ink);font-family:inherit;font-weight:600;font-size:.95rem;border-radius:11px;padding:12px 22px;cursor:pointer;transition:transform .15s var(--ease)}
.askbar-go:hover{transform:translateY(-1px)}
.askbar-hint{margin-top:12px;color:var(--muted);font-size:var(--small)}
/* V5.1 hero — CTA secondaire + ligne de preuve (mono) + rassurance (prose). Aucun effet gratuit. */
.hero-secondary{margin-top:var(--s3);display:flex;justify-content:center}
.cta-secondary{font-family:var(--read);font-size:var(--small);color:var(--ink-soft);text-decoration:none;border-bottom:1px solid var(--line-strong);padding-bottom:3px;transition:color .2s var(--ease),border-color .2s var(--ease)}
.cta-secondary:hover{color:var(--accent-text);border-color:var(--accent)}
.proof-line{margin:var(--s3) auto 0;display:flex;flex-wrap:wrap;justify-content:center;gap:.4ch var(--s2);font-family:var(--mono);font-size:var(--micro);letter-spacing:.03em;color:var(--muted);max-width:54ch}
.proof-line span{display:inline-flex;align-items:center;gap:.6ch}
.proof-line span::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--accent);opacity:.85;flex:none}
.trust-line{margin:var(--s2) auto 0;font-family:var(--read);font-size:var(--small);color:var(--muted);text-align:center;max-width:48ch}

/* ===== V5.2 OBJET-HÉROS : carte « rapport-preuve » (serif=titre, mono=données, --read=prose). Aucun effet gratuit. ===== */
.rapport-preview{max-width:620px;margin:var(--s4) auto 0;text-align:left;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r3);padding:var(--s3);box-shadow:0 30px 60px -46px rgba(0,0,0,.5)}
.rapport-preview .result-card{background:none;border:0;box-shadow:none;border-radius:0;padding:0;margin:0;max-width:none}
.rp-head{padding-bottom:var(--s2);border-bottom:1px solid var(--line);margin-bottom:var(--s2)}
.rp-title{font-family:var(--read);font-weight:700;font-size:1.5rem;line-height:1.05;color:var(--ink)}
.rp-sub{font-family:var(--read);font-size:var(--small);color:var(--muted);margin-top:3px;line-height:1.5}
/* labels de section (mono, discret) */
.rp-lbl{font-family:var(--mono);font-size:var(--micro);letter-spacing:.16em;text-transform:uppercase;color:var(--accent-text)}
.rp-sec{padding:var(--s2) 0;border-top:1px solid var(--line)}
.rp-sec:first-of-type{border-top:0;padding-top:6px}
.rp-sec-head{display:flex;justify-content:space-between;align-items:baseline;gap:.6ch var(--s2);flex-wrap:wrap}
.rp-where{font-family:var(--mono);font-size:var(--micro);color:var(--muted)}
/* fourchette dominante */
.rp-range-head{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:clamp(1.5rem,5vw,2.1rem);font-weight:600;color:var(--ink);line-height:1.1;margin-top:8px;letter-spacing:-.01em}
.rp-range-head .rp-dash{color:var(--muted);font-weight:400;margin:0 .12em}
.rp-range-head .cur{font-size:.5em;color:var(--muted);margin-left:.18em;font-weight:400}
.rp-range-head .range{margin-top:0}
.rapport-preview .range{margin-top:10px}
/* repère médian (secondaire, jamais dominant) */
.rp-median{display:flex;align-items:baseline;flex-wrap:wrap;gap:.5ch var(--s2);margin-top:10px;font-family:var(--mono);font-size:var(--small);color:var(--muted)}
.rp-median-k{color:var(--muted)}
.rp-median b{color:var(--ink-soft);font-weight:600}
.rp-median .permsq{display:inline-flex;align-items:baseline;gap:.5ch;text-align:left}
.rp-median .permsq>div:last-child{color:var(--muted);font-size:var(--micro)}
.rp-robust-generic{margin-top:4px}
/* lien profond vers le rapport complet */
.rp-deep{margin-top:var(--s2)}
.rp-deep a{font-family:var(--read);font-size:var(--small);color:var(--accent-text);font-weight:600;text-decoration:none;border-bottom:1px solid var(--line-strong);padding-bottom:2px;transition:border-color .2s var(--ease)}
.rp-deep a:hover{border-color:var(--accent)}
/* placeholder AVANT calcul : sobre, aucun chiffre. Affiché tant que #resultRegion est hidden. */
.rp-placeholder{padding:var(--s3) 0;text-align:center}
#resultRegion:not([hidden]) ~ .rp-placeholder{display:none}
.rp-ph-title{font-family:var(--read);font-weight:700;font-size:1.2rem;color:var(--ink-soft);line-height:1.15}
.rp-ph-sub{font-family:var(--read);font-size:var(--small);color:var(--muted);margin:8px auto 0;max-width:46ch;line-height:1.5}
/* limites (statique, cadre de l'objet) */
.rp-limits{padding-top:var(--s2);border-top:1px solid var(--line);margin-top:var(--s2)}
.rp-lim-text{font-family:var(--read);font-size:var(--small);color:var(--ink-soft);margin-top:5px;line-height:1.5}
.rp-limits .chips{margin-top:var(--s2)}
/* FAIL-CLOSED : si insuffisant / arrondissement, on masque les sections chiffrées -> jamais de « —€ » en héros */
#insufficient:not([hidden]) ~ .rp-sec, #arrondissement:not([hidden]) ~ .rp-sec{display:none}
.askbar-msg{max-width:560px;margin:16px auto 0;text-align:left;color:var(--ink);background:color-mix(in srgb,var(--accent) 12%,transparent);border:1px solid color-mix(in srgb,var(--accent) 38%,transparent);border-radius:var(--r3);padding:12px 15px;font-size:.9rem;line-height:1.5}
.result-card{max-width:600px;margin:var(--s4) auto 0;text-align:left;background:linear-gradient(180deg,var(--surface),var(--bg2));border:1px solid var(--line-strong);border-radius:var(--r3);padding:var(--s3);box-shadow:0 30px 60px -40px rgba(0,0,0,.6)}
.refine{margin-top:var(--s3);border-top:1px dashed var(--line-strong);padding-top:var(--s2)}
.refine>summary{cursor:pointer;color:var(--muted);font-size:var(--small);list-style:none;user-select:none}
.refine>summary:hover{color:var(--ink)}
.refine>summary::-webkit-details-marker{display:none}
.refine>summary::before{content:"+ ";color:var(--accent)}
.refine[open]>summary::before{content:"\2212 "}
.refine-body{margin-top:var(--s2);display:flex;flex-direction:column;gap:12px}
.proof{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--bg2)}
.proof-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s3);padding:var(--s4) 0;text-align:center}
.proof-grid b{display:block;font-family:var(--read);font-weight:700;font-size:clamp(1.7rem,3.4vw,2.6rem);line-height:1;color:var(--ink)}
.proof-grid span{display:block;margin-top:8px;color:var(--muted);font-size:var(--micro);letter-spacing:.04em}
@media(max-width:600px){.proof-grid{grid-template-columns:repeat(2,1fr);gap:var(--s3) var(--s2)}.askbar{flex-wrap:wrap}.askbar input{width:100%;order:1}.askbar-go{width:100%;order:2}.askbar-ic{display:none}}
/* Mobile : moins d'air vertical (96px en haut = trop sur petit écran) */
@media(max-width:600px){
  .hero{padding:var(--s4) 0 var(--s3)}
  section{padding:var(--s4) 0}
  .wrap{padding:0 var(--s2)}
}

@media (prefers-reduced-motion: reduce){
  *{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .reveal{opacity:1;transform:none}
  .live .pulse{box-shadow:none}
}

/* ---------- ENVIRONNEMENT (contexte gratuit de commune ; jamais un prix) ---------- */
.env-band{margin-top:var(--s3);padding-top:var(--s3);border-top:1px solid var(--line)}
.env-head{font-size:var(--small);color:var(--ink-soft);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--s2)}
.env-head small{text-transform:none;letter-spacing:0;color:var(--muted);font-size:var(--micro)}
.env-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s2)}
@media (max-width:560px){.env-grid{grid-template-columns:repeat(2,1fr)}}
.env-cell{background:var(--surface2);border:1px solid var(--line);border-radius:var(--r2);padding:var(--s2);text-align:center}
.env-cell b{display:block;font-size:1.05rem;color:var(--ink);line-height:1.2}
.env-cell span{font-size:var(--micro);color:var(--muted)}
.env-src{margin-top:var(--s2)}

/* ============================================================
   HOME VISUAL RESET — ESTIMER V1 (issue #82, MASTER VISUAL RESET CONTRACT)
   Scoped entirely under body so methode/, sources/, doctrine/,
   pourquoi-ecart.html, tarifs.html, rapport.html, test-sincerite.html and
   prix-m2/* — which consume the :root tokens above directly in their own
   inline <style> blocks — keep rendering byte-identically. Nothing above
   this line is modified or removed. New tokens are additive only.
   Direction : blanc / marine / bleu / gris froids. Aucun beige, aucune
   serif, aucun hero centré. Inter Variable (self-hosted, cf. font-face en tête de fichier).
   ============================================================ */

:root{
  /* Alias legacy -> tokens canoniques §3 (mapping temporaire de migration, cf. règle §3 addendum) */
  --c-white:var(--color-white);
  --c-navy-deep:var(--color-navy);
  --c-navy-line:#293B57;
  --c-blue-action:var(--color-blue);
  --c-blue-action-hover:var(--color-blue-hover);
  --c-blue-subtle:var(--color-blue-subtle);
  --c-slate-secondary:var(--color-text-secondary);
  --c-steel-inverse:#9EB0C7;
  --c-neutral-line:var(--color-border);
  --c-neutral-cool:var(--color-subtle);
  --c-control-border:#7E8CA0;

  --bg-canvas:var(--color-white);
  --bg-subtle:var(--color-subtle);
  --bg-information:var(--color-blue-subtle);
  --bg-inverse:var(--color-navy);
  --text-primary:var(--color-text);
  --text-secondary:var(--color-text-secondary);
  --text-inverse:var(--color-white);
  --text-inverse-secondary:var(--c-steel-inverse);
  --action-primary:var(--color-blue);
  --action-primary-hover:var(--color-blue-hover);
  --border-default:var(--color-border);
  --border-inverse:var(--c-navy-line);
  --border-control:var(--c-control-border);
  --focus-ring:var(--color-blue);

  --sp-4:4px;--sp-8:8px;--sp-12:12px;--sp-16:16px;--sp-24:24px;--sp-32:32px;--sp-48:48px;--sp-64:64px;
  --radius-sm:4px;--radius-md:8px;--radius-lg:14px;
  --container-desktop:1184px;--container-mobile:358px;
  --control-height:60px;--touch-min:44px;
  --focus-width:2px;--focus-offset:2px;
  --shadow-sm:0 1px 2px rgba(7,27,51,.08);
  --shadow-card:0 1px 2px rgba(7,27,51,.06),0 16px 32px -20px rgba(7,27,51,.22);
  --shadow-cta:0 10px 22px -10px rgba(10,103,245,.4);

  --font-sans:"Inter Variable",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;

  /* Corrective pass (founder verdict STRUCTURAL GO / VISUAL NO-GO) : échelle relevée pour plus
     de présence Desktop — supersède la borne "H1 max 40px" de la passe précédente, décision
     fondatrice la plus récente. */
  --fs-eyebrow:12px; --lh-eyebrow:16px;
  --fs-h1:34px; --lh-h1:40px;
  --fs-h2:25px; --lh-h2:31px;
  --fs-h3:19px; --lh-h3:25px;
  --fs-lead:17px; --lh-lead:27px;
  --fs-body:16px; --lh-body:25px;
  --fs-label:14px; --lh-label:20px;
  --fs-meta:14px; --lh-meta:20px;
  --fs-numeric:33px; --lh-numeric:37px;
}
@media(min-width:960px){
  :root{
    --fs-h1:47px; --lh-h1:52px;
    --fs-h2:31px; --lh-h2:37px;
    --fs-h3:21px; --lh-h3:27px;
    --fs-lead:19px; --lh-lead:29px;
    --fs-numeric:42px; --lh-numeric:46px;
  }
}

body{background:var(--bg-canvas);color:var(--text-primary);font-family:var(--font-sans);font-size:var(--fs-body);line-height:var(--lh-body);-webkit-font-smoothing:antialiased}
body ::selection{background:var(--bg-information)}
/* Repères d'icônes linéaires (SVG en couleur directe — pas de mask-mode ambigu entre navigateurs) */
:root{
  --icon-check:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Ccircle cx='10' cy='10' r='8.5' fill='none' stroke='%230A67F5' stroke-width='1.6'/%3E%3Cpath d='M6.2 10.3l2.6 2.6L14 7.4' fill='none' stroke='%230A67F5' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  --icon-info:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Ccircle cx='10' cy='10' r='8.5' fill='none' stroke='%234A5A6B' stroke-width='1.6'/%3E%3Cline x1='10' y1='9' x2='10' y2='14' stroke='%234A5A6B' stroke-width='1.6' stroke-linecap='round'/%3E%3Ccircle cx='10' cy='6.3' r='1' fill='%234A5A6B'/%3E%3C/svg%3E");
}
body .h-eyebrow{display:inline-flex;align-items:center;font-size:var(--fs-eyebrow);line-height:var(--lh-eyebrow);letter-spacing:.06em;text-transform:uppercase;font-weight:700;color:var(--action-primary);background:var(--bg-information);padding:6px 14px;border-radius:999px}
body h1.h-h1,body h2.h-h2,body h3{font-family:var(--font-sans);font-weight:600;color:var(--text-primary);letter-spacing:0}
body .h-h1-accent{color:var(--action-primary)}
body .h-h1{font-size:var(--fs-h1);line-height:var(--lh-h1);margin-top:var(--sp-16)}
body .h-h2{font-size:var(--fs-h2);line-height:var(--lh-h2)}
body h3{font-size:var(--fs-h3);line-height:var(--lh-h3)}
body .h-lede{font-size:var(--fs-lead);line-height:var(--lh-lead);color:var(--text-secondary);margin-top:var(--sp-16);max-width:44ch}
body .mono-num{font-variant-numeric:tabular-nums}

/* ---------- nav (72px desktop / 60px mobile) — plus de présence, léger relief pour se poser
   au-dessus du bandeau teinté du hero ---------- */
body nav.h-nav{position:sticky;top:0;z-index:30;background:var(--bg-canvas);border-bottom:1px solid var(--border-default);box-shadow:var(--shadow-sm)}
body .h-nav-row{position:relative;display:flex;align-items:center;justify-content:space-between;height:60px}
@media(min-width:960px){body .h-nav-row{height:72px}}
body .h-wordmark{font-weight:600;font-size:22px;letter-spacing:-.01em;text-decoration:none;color:var(--text-primary)}
body .h-wordmark-dot{color:var(--action-primary)}
body .h-nav-link{font-size:var(--fs-label);font-weight:600;color:var(--text-secondary);text-decoration:none}
body .h-nav-link:hover{color:var(--action-primary)}
body .h-nav-cta{display:inline-flex;align-items:center;height:40px;padding:0 20px;background:var(--action-primary);color:var(--text-inverse);font-size:var(--fs-label);font-weight:700;border-radius:var(--radius-md);text-decoration:none;box-shadow:var(--shadow-sm)}
body .h-nav-cta:hover{background:var(--action-primary-hover)}
body a:focus-visible,body button:focus-visible,body input:focus-visible,body summary:focus-visible{outline:var(--focus-width) solid var(--focus-ring);outline-offset:var(--focus-offset);border-radius:var(--radius-sm)}

/* tableau de données plus large que le viewport (finding responsive R10, pages villes) :
   défile horizontalement dans sa propre boîte plutôt que d'élargir toute la page. */
.tbl-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}

/* ---------- menu mobile (finding responsive R10 — aucune maquette mobile fournie pour le
   header, construit en cohérence avec le header desktop) : bascule hamburger < 720px, liens
   + CTA repliés dans un panneau qui s'ouvre sous la barre. ≥720px : liens et CTA toujours
   visibles en ligne, le bouton hamburger est masqué. ---------- */
body .h-nav-burger{display:flex;flex:none;width:40px;height:40px;align-items:center;justify-content:center;border:1px solid var(--border-control);border-radius:var(--radius-sm);background:var(--bg-canvas);cursor:pointer;position:relative}
body .h-nav-burger span{position:absolute;left:9px;right:9px;height:2px;background:var(--text-primary);border-radius:1px}
body .h-nav-burger span:nth-child(1){top:12px}
body .h-nav-burger span:nth-child(2){top:19px}
body .h-nav-burger span:nth-child(3){top:26px}
body .h-nav-links{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;background:var(--bg-canvas);border-bottom:1px solid var(--border-default);box-shadow:var(--shadow-card);padding:var(--sp-8) 0}
body .h-nav-links.open{display:flex}
body .h-nav-links .h-nav-link{padding:var(--sp-12) var(--sp-24)}
body .h-nav-links .h-nav-cta{margin:var(--sp-8) var(--sp-24);justify-content:center}
@media(min-width:720px){
  body .h-nav-burger{display:none}
  body .h-nav-row{flex-wrap:nowrap}
  body .h-nav-links{display:flex!important;position:static;flex-direction:row;align-items:center;gap:var(--sp-32);background:none;border:0;box-shadow:none;padding:0}
  body .h-nav-links .h-nav-link{padding:0}
  body .h-nav-links .h-nav-cta{margin:0}
}

/* ---------- "Comprendre" : sous-menu consolidant Méthode/Sources/Prix au m² (fix(nav):
   consolidate informational links under Comprendre) — un vrai <button>, jamais un lien
   factice ; ouverture/fermeture pilotées par web/nav.js (clic, Échap, clic extérieur) ;
   Entrée/Espace/focus visible/tabulation dans les 3 liens : comportement natif du bouton
   et de l'ordre du DOM, aucun JS supplémentaire requis. ---------- */
body .h-nav-dropdown{position:relative}
body .h-nav-dropdown-btn{display:inline-flex;align-items:center;gap:6px;background:none;border:0;cursor:pointer;font:inherit}
body .h-nav-caret{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid currentColor}
body .h-nav-dropdown-menu{display:flex;flex-direction:column;padding-left:var(--sp-24)}
body .h-nav-dropdown-menu[hidden]{display:none}
body .h-nav-dropdown-link{font-size:var(--fs-label);font-weight:600;color:var(--text-secondary);text-decoration:none;padding:var(--sp-8) var(--sp-24)}
body .h-nav-dropdown-link:hover{color:var(--action-primary)}
@media(min-width:720px){
  /* Panneau positionné sous le bouton, largeur bornée -- ne peut jamais provoquer de
     débordement horizontal, contrairement à un menu plein-largeur. */
  body .h-nav-dropdown-menu{position:absolute;top:100%;left:0;min-width:180px;margin-top:var(--sp-8);background:var(--bg-canvas);border:1px solid var(--border-default);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:var(--sp-8) 0;z-index:40}
  body .h-nav-dropdown-link{padding:var(--sp-8) var(--sp-16)}
}

/* ---------- hero : gauche 7/12 entrée, droite 5/12 relevé — jamais centré. Bandeau teinté
   plein-large (niveau de surface 0) pour donner de l'ambition au premier viewport Desktop ;
   le panneau de droite est une carte blanche avec ombre (niveau de surface 1) qui se détache
   dessus — deux niveaux de surface maximum visibles à la fois. ---------- */
body .h-hero{background:var(--bg-subtle);padding:var(--sp-48) 0 var(--sp-64)}
body .h-hero-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-32);align-items:start;text-align:left}
body .h-entry,body .h-result{min-width:0}
@media(min-width:960px){
  body .h-hero-grid{grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--sp-48);max-width:var(--container-desktop)}
  /* Résultat réel affiché (Success/Fail-Closed) : le relevé passe de 5/12 à 8/12, l'entrée de 7/12 à 4/12. */
  body .h-hero-grid.has-result{grid-template-columns:minmax(0,4fr) minmax(0,8fr)}
  body .h-hero{padding:var(--sp-64) 0 var(--sp-64)}
}
body .wrap{max-width:var(--container-desktop)}

/* Photo hero (Desktop uniquement) : image d'ambiance à ratio fixe, carte fonctionnelle qui
   chevauche son bord bas de 56px — un montage robuste, indépendant de la hauteur du relevé
   (compact en Aperçu, très haut en Success avec comparables) puisque ni la photo ni le
   chevauchement ne dépendent de cette hauteur. Masquée sur Mobile : aucune superposition. */
body .h-hero-photo{display:none}
@media(min-width:960px){
  body .h-hero-visual{position:relative}
  body .h-hero-photo{display:block;width:100%;height:auto;aspect-ratio:16/10;object-fit:cover;border-radius:var(--radius-lg);box-shadow:0 20px 40px -22px rgba(10,103,245,.35),0 1px 2px rgba(7,27,51,.08)}
  body .h-hero-visual .h-result{position:relative;z-index:1;margin-top:-56px}
}

/* ---------- formulaire — contrôles plus généreux, tension nette saisie/action ---------- */
body .h-form{margin-top:var(--sp-32);max-width:520px}
body .h-form-label{display:block;font-size:var(--fs-label);font-weight:700;color:var(--text-primary);margin-bottom:var(--sp-8)}
body .h-form-input{display:block;width:100%;height:var(--control-height);font:inherit;font-size:17px;color:var(--text-primary);background:var(--bg-canvas);border:1.5px solid var(--border-control);border-radius:10px;padding:0 18px;box-shadow:var(--shadow-sm)}
body .h-form-input::placeholder{color:var(--text-secondary)}
body .h-form-input:focus-visible{outline:var(--focus-width) solid var(--focus-ring);outline-offset:var(--focus-offset)}
body .h-form-help{margin-top:10px;font-size:var(--fs-meta);color:var(--text-secondary)}
body .h-form-submit{margin-top:20px;height:var(--control-height);width:100%;font:inherit;font-size:16.5px;font-weight:700;letter-spacing:.01em;color:var(--text-inverse);background:var(--action-primary);border:0;border-radius:10px;cursor:pointer;padding:0 var(--sp-32);box-shadow:var(--shadow-cta)}
@media(min-width:960px){body .h-form-submit{width:auto;min-width:220px}}
body .h-form-submit:hover{background:var(--action-primary-hover)}
body .h-form-msg{margin-top:var(--sp-16);font-size:var(--fs-label);color:var(--text-primary);background:var(--bg-canvas);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--sp-16);line-height:1.5;box-shadow:var(--shadow-sm)}
body .h-form-msg b{font-weight:700}
body .h-reassurance{margin-top:var(--sp-16);font-size:var(--fs-meta);color:var(--text-secondary)}
body .h-footer-brand{display:flex;flex-direction:column;gap:2px}
body .h-amb-choice{margin:var(--sp-8) var(--sp-8) 0 0;padding:var(--sp-8) var(--sp-12);font:inherit;font-size:var(--fs-meta);border:1px solid var(--border-default);border-radius:var(--radius-sm);background:var(--bg-canvas);color:var(--text-primary);cursor:pointer}
body .h-amb-choice:hover{border-color:var(--border-control)}


/* ---------- Affiner / approfondir (repliés) ---------- */
body .h-refine{margin-top:var(--sp-24);padding-top:var(--sp-16);border-top:1px solid var(--border-default)}
body .h-refine>summary{cursor:pointer;color:var(--text-secondary);font-size:var(--fs-label);list-style:none}
body .h-refine>summary::-webkit-details-marker{display:none}
body .h-refine>summary:hover{color:var(--text-primary)}
body .h-refine-body{margin-top:var(--sp-12);display:flex;flex-direction:column;gap:var(--sp-12)}
body .h-field-select{position:relative}
body .h-field-select input,body .h-row2 input[type=number],body select{width:100%;height:var(--control-height);font:inherit;font-size:16px;color:var(--text-primary);background:var(--bg-canvas);border:1px solid var(--border-control);border-radius:var(--radius-sm);padding:0 var(--sp-16)}
body .h-row2{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-12)}
body .h-seg{display:flex;border:1px solid var(--border-control);border-radius:var(--radius-sm);overflow:hidden;height:var(--control-height)}
body .h-seg button{flex:1;font:inherit;font-size:var(--fs-label);background:var(--bg-canvas);color:var(--text-secondary);border:0;cursor:pointer}
body .h-seg button[aria-pressed=true]{background:var(--action-primary);color:var(--text-inverse);font-weight:600}
body .h-unit{position:relative}
body .h-unit--auto{width:auto}
body .h-unit input{padding-right:40px}
body .h-unit-suffix{position:absolute;right:var(--sp-16);top:50%;transform:translateY(-50%);color:var(--text-secondary);font-size:var(--fs-label)}
body input[type=range]{width:100%;accent-color:var(--action-primary);height:24px}
/* cible tactile ≥24px (finding audit M2) : le curseur natif ~16px est agrandi via les
   pseudo-éléments de poignée, cross-navigateur. */
body input[type=range]::-webkit-slider-thumb{width:24px;height:24px}
body input[type=range]::-moz-range-thumb{width:24px;height:24px;border:0}
/* (bloc « annonce rapport complet » retiré : le rapport existe déjà et reste accessible
   après estimation via le CTA « Voir mon rapport complet » — pas de teasing futur.) */

/* ---------- relevé (colonne droite 5/12) — 4 états, un seul visible. Carte blanche, lumineuse,
   avec un halo bleu très léger en fond (au lieu du bandeau marine massif d'une passe antérieure,
   jugé trop sévère/"tableau documentaire") ; même traitement clair sur les 4 états, y compris
   Fail-Closed, pour une finition équivalente à Success sans jamais paraître une erreur. ---------- */
body .h-result{position:relative;border:1px solid var(--border-default);border-radius:var(--radius-lg);background:var(--bg-canvas);padding:var(--sp-32);box-shadow:var(--shadow-card);overflow:hidden}
body .h-result::before{content:"";position:absolute;top:-70px;right:-70px;width:240px;height:240px;background:radial-gradient(circle,var(--bg-information) 0%,rgba(238,243,255,0) 72%);pointer-events:none;z-index:0}
body .h-preview,body .h-loading,body .h-releve{position:relative;z-index:1}
body .h-panel-title{display:flex;align-items:center;gap:var(--sp-12);font-size:var(--fs-h3);font-weight:700;color:var(--text-primary);margin-bottom:var(--sp-20,20px)}
body .h-icon-badge{flex:none;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:var(--bg-information);color:var(--action-primary)}
body .h-icon-badge svg{width:18px;height:18px}
body .h-icon-badge--lg{width:44px;height:44px}
body .h-icon-badge--lg svg{width:22px;height:22px}
body .h-preview-list{list-style:none;margin-top:var(--sp-8);display:grid;gap:var(--sp-16)}
body .h-preview-list li{display:flex;align-items:center;gap:var(--sp-12);padding-bottom:var(--sp-16);border-bottom:1px solid var(--border-default)}
body .h-preview-list li:last-child{border-bottom:0;padding-bottom:0}
body .h-preview-main{display:flex;flex:1;justify-content:space-between;align-items:baseline;gap:var(--sp-12);font-size:var(--fs-label);font-weight:700;color:var(--text-primary)}
body .h-preview-list small{color:var(--text-secondary);font-size:var(--fs-meta);font-weight:400;text-align:right}
body .h-preview-note{margin-top:var(--sp-16);font-size:var(--fs-meta);color:var(--text-secondary)}
body .h-loading-bars{display:flex;gap:var(--sp-8);margin-top:var(--sp-8)}
body .h-loading-bars span{width:9px;height:9px;border-radius:50%;background:var(--action-primary);opacity:.35}
body .h-loading-bars span:nth-child(1){opacity:.85}
body .h-loading-bars span:nth-child(2){opacity:.6}

body .h-rp-where{margin-top:var(--sp-4);font-size:var(--fs-meta);color:var(--text-secondary)}
/* padding-bottom:0 corrige une fuite du sélecteur historique (non scopé) `section{padding:96px 0}` :
   sans cette ligne, chaque <section class="h-rp-sec"> hérite un vide de 96px en bas — c'était la
   cause des grands vides constatés entre les rubriques du relevé. */
body .h-rp-sec{margin-top:var(--sp-16);padding-top:var(--sp-16);padding-bottom:0;border-top:1px solid var(--border-default)}
body .h-rp-body>.h-rp-sec:first-child{margin-top:var(--sp-16);padding-top:var(--sp-16);padding-bottom:0;border-top:1px solid var(--border-default)}
body .h-rp-label{font-size:var(--fs-meta);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-secondary)}
body .h-rp-figure{margin-top:var(--sp-8);font-size:var(--fs-numeric);line-height:var(--lh-numeric);font-weight:700;font-variant-numeric:tabular-nums;color:var(--action-primary)}
body .h-rp-figure .h-rp-dash{color:var(--text-secondary);font-weight:400;margin:0 .2em}
body .h-rp-figure #estCur{font-size:.55em;color:var(--text-secondary);margin-left:.2em;font-weight:400}
body .h-range{margin-top:var(--sp-12)}
body .h-range-track{position:relative;height:6px;border-radius:999px;background:var(--bg-subtle);border:1px solid var(--border-default);overflow:hidden}
body .h-range-fill{position:absolute;top:0;bottom:0;left:0;width:100%;background:var(--bg-information);transform-origin:left}
body .h-range-mid{position:absolute;top:-3px;width:2px;height:12px;background:var(--action-primary);left:50%}
body .h-rp-median{margin-top:var(--sp-8);font-size:var(--fs-label);color:var(--text-secondary)}
body .h-rp-median b{color:var(--text-primary);font-weight:600;font-variant-numeric:tabular-nums}
body .h-rp-perm2{margin-top:var(--sp-4);font-size:var(--fs-meta);color:var(--text-secondary)}
body .h-rp-perm2 b{color:var(--text-primary);font-weight:600}
body .h-src{margin-top:var(--sp-8);font-size:var(--fs-meta);color:var(--text-secondary);line-height:1.5}
body .h-src b{color:var(--text-primary);font-weight:600}
body .h-src a{color:var(--action-primary);text-decoration:none;border-bottom:1px solid var(--border-control)}
body .h-src a:hover{border-color:var(--action-primary)}
/* Niveau de preuve : un seul libellé qualitatif ("Repères solides" / "Repères limités"),
   jamais un score ou une jauge à niveaux. */
body .h-confidence-tag{display:inline-block;margin-top:var(--sp-8);font-size:var(--fs-label);font-weight:700;color:var(--text-primary);background:var(--bg-information);border-radius:var(--radius-sm);padding:4px 12px}

/* ---------- comparables (tableau compact, zéro PII) — zébrage léger + en-tête teinté pour
   lire comme un vrai tableau de produit, pas une liste brute ---------- */
body .h-comp-table-wrap{margin-top:var(--sp-12);overflow-x:auto;border:1px solid var(--border-default);border-radius:var(--radius-md)}
body table.h-comp-table{width:100%;border-collapse:collapse;font-size:var(--fs-meta)}
body table.h-comp-table caption{text-align:left;color:var(--text-secondary);padding:var(--sp-8) var(--sp-12);caption-side:top;font-size:var(--fs-meta);background:var(--bg-subtle);border-bottom:1px solid var(--border-default)}
body table.h-comp-table th,body table.h-comp-table td{text-align:right;padding:var(--sp-8) var(--sp-12);border-bottom:1px solid var(--border-default);font-variant-numeric:tabular-nums;white-space:nowrap}
body table.h-comp-table thead th{color:var(--text-secondary);font-weight:700;text-transform:uppercase;font-size:11px;letter-spacing:.04em;background:var(--bg-subtle)}
body table.h-comp-table th:first-child,body table.h-comp-table td:first-child{text-align:left}
body table.h-comp-table tbody tr:nth-child(even){background:var(--bg-subtle)}
body table.h-comp-table tbody tr:last-child td{border-bottom:0}

body .h-env{margin-top:var(--sp-16);padding-top:var(--sp-16);border-top:1px solid var(--border-default)}
body .h-env .h-rp-label small{text-transform:none;letter-spacing:0;font-weight:400}
body .h-env-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-12);margin-top:var(--sp-8)}
@media(min-width:600px){body .h-env-grid{grid-template-columns:repeat(4,1fr)}}
body .h-env-grid div{background:var(--bg-subtle);border-radius:var(--radius-sm);padding:var(--sp-12);text-align:center}
body .h-env-grid b{display:block;font-size:var(--fs-label);color:var(--text-primary)}
body .h-env-grid span{font-size:11px;color:var(--text-secondary)}

body .h-rp-meta .h-rp-label:not(:first-child){margin-top:var(--sp-16)}
body .h-rp-deep{margin-top:var(--sp-16);padding-top:var(--sp-16);border-top:1px solid var(--border-default)}
body .h-rp-deep a{font-size:var(--fs-label);font-weight:600;color:var(--action-primary);text-decoration:none;border-bottom:1px solid var(--border-control)}

/* fail-closed : produit complet, pas un bandeau d'erreur — masque le reste du relevé quand visible */
body .h-failclosed{font-size:var(--fs-body)}
body .h-fc-reason{margin-top:var(--sp-12);color:var(--text-secondary);line-height:1.5}
body #insufficient:not([hidden]) ~ .h-rp-body,body #arrondissement:not([hidden]) ~ .h-rp-body{display:none}

/* ---------- bandeau de confiance ---------- */
/* ---------- vraie zone de réassurance : icônes en badge, titre + sous-titre factuel,
   3 colonnes sur Desktop — plus une simple ligne de texte fine ---------- */
body .h-trustband{padding:0;border-top:1px solid var(--border-default);border-bottom:1px solid var(--border-default);background:var(--bg-subtle)}
body .h-trustband-row{display:grid;grid-template-columns:1fr;gap:var(--sp-24);padding:var(--sp-32) 0}
@media(min-width:700px){body .h-trustband-row{grid-template-columns:repeat(3,1fr)}}
body .h-trust-item{display:flex;align-items:center;gap:var(--sp-16)}
body .h-trust-item b{display:block;font-size:var(--fs-label);font-weight:700;color:var(--text-primary)}
body .h-trust-item small{display:block;margin-top:2px;font-size:var(--fs-meta);color:var(--text-secondary)}

/* ---------- sections documentaires — rythme alterné blanc/gris-froid pour un vrai langage
   de blocs (jamais plus de deux niveaux de surface visibles à la fois) ---------- */
body section.h-perimetre,body section.h-methode-section,body section.h-limites,body section.h-sources{padding:var(--sp-64) 0;border-top:1px solid var(--border-default)}
body section.h-methode-section,body section.h-sources{background:var(--bg-subtle)}
body .h-stat-grid{margin-top:var(--sp-32);display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-32)}
@media(min-width:600px){body .h-stat-grid{grid-template-columns:repeat(4,1fr)}}
body .h-stat-grid b{display:block;font-size:var(--fs-numeric);line-height:var(--lh-numeric);font-weight:700;color:var(--text-primary);font-variant-numeric:tabular-nums}
body .h-stat-grid span{display:block;margin-top:var(--sp-8);font-size:var(--fs-meta);color:var(--text-secondary)}

body .h-steps{list-style:none;margin-top:var(--sp-32);display:grid;gap:var(--sp-16)}
@media(min-width:960px){body .h-steps{grid-template-columns:repeat(3,1fr);gap:var(--sp-24)}}
body .h-steps li{display:flex;gap:var(--sp-16);background:var(--bg-canvas);border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:var(--sp-24);box-shadow:var(--shadow-sm)}
body .h-step-num{flex:none;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:var(--bg-information);color:var(--action-primary);font-size:var(--fs-label);font-weight:700}
body .h-steps h3{margin-bottom:var(--sp-8)}
body .h-steps p{font-size:var(--fs-label);color:var(--text-secondary)}

body .h-lede-sec{margin-top:var(--sp-8);font-size:var(--fs-lead);color:var(--text-secondary);max-width:60ch}
body .h-limit-list{margin-top:var(--sp-32);display:grid;gap:var(--sp-12);max-width:74ch}
body .h-limit-list li{display:flex;align-items:flex-start;gap:var(--sp-12);padding:var(--sp-16);background:var(--bg-canvas);border:1px solid var(--border-default);border-radius:var(--radius-md);font-size:var(--fs-body);color:var(--text-secondary)}
body .h-limit-list li::before{content:"";width:20px;height:20px;flex:none;margin-top:2px;background:var(--icon-info) no-repeat center/contain}

body .h-source-grid{margin-top:var(--sp-32);display:grid;gap:var(--sp-24)}
@media(min-width:960px){body .h-source-grid{grid-template-columns:repeat(2,1fr)}}
body .h-source-card{position:relative;border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:var(--sp-24);background:var(--bg-canvas);box-shadow:var(--shadow-sm)}
body .h-source-card::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--action-primary);border-radius:var(--radius-lg) var(--radius-lg) 0 0}
body .h-source-card h3{font-size:var(--fs-h3)}
body .h-source-card p{margin-top:var(--sp-8);font-size:var(--fs-label);color:var(--text-secondary)}
body .h-source-card p b{color:var(--text-primary)}
body .h-source-card a{color:var(--action-primary);text-decoration:none;border-bottom:1px solid var(--border-control)}
body .h-faq-grid{margin-top:var(--sp-32);display:grid;gap:var(--sp-16)}
@media(min-width:960px){body .h-faq-grid{grid-template-columns:repeat(2,1fr)}}
body .h-faq-grid>div{background:var(--bg-canvas);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--sp-24)}
body .h-faq-grid h3{margin-bottom:var(--sp-8);font-size:var(--fs-h3)}
body .h-faq-grid p{font-size:var(--fs-label);color:var(--text-secondary)}

/* ---------- footer marine — clôture affirmée : filet d'accent bleu, plus de respiration,
   hiérarchie wordmark/texte/liens plus nette (toujours sans CTA marketing) ---------- */
body footer.h-footer{background:var(--bg-inverse);color:var(--text-inverse);padding:var(--sp-48) 0;border-top:3px solid var(--action-primary)}
body .h-footer-row{display:flex;flex-direction:column;gap:var(--sp-24);align-items:flex-start}
@media(min-width:960px){body .h-footer-row{flex-direction:row;align-items:flex-end;justify-content:space-between}}
body .h-wordmark--inverse{display:block;color:var(--text-inverse);font-weight:700;font-size:var(--fs-h2);letter-spacing:-.01em;margin-bottom:var(--sp-8)}
body .h-footer-text{font-size:var(--fs-label);color:var(--text-inverse-secondary);max-width:52ch;line-height:1.6}
/* le sélecteur générique nav{background:...} (système "mécanisme exposé", legacy) cible
   tout élément <nav>, y compris ce nav sémantique de liens de pied de page — neutralisé
   explicitement ici plutôt que de renommer la balise (aucun changement de contenu). */
body .h-footer-links{display:flex;gap:var(--sp-24);background:none;border:0;position:static}
body .h-footer-links a{font-size:var(--fs-label);font-weight:600;color:var(--text-inverse-secondary);text-decoration:none}
body .h-footer-links a:hover{color:var(--text-inverse)}

@media (prefers-reduced-motion: reduce){
  body *{animation:none!important;transition:none!important}
}

