/* ═══════════════════════════════════════════════════════════════════
   KIT « CADRAN » — système unique du site vitrine au funnel à l'app.
   Source : prototype E validé S156e (designs/mesure-2026/e-cadran-parcours.html).
   Une couleur de mesure (teal), une couleur d'alerte (vermillon), l'encre, le papier millimétré.
   Responsive : les composants répondent à la largeur de leur conteneur `.wrap` (container query « page »),
   la barre haute, les panneaux et le chrome démo répondent au viewport.
   ═══════════════════════════════════════════════════════════════════ */

/* ─── 0. tokens ─── */
/* Polices auto-hébergées (ADR-037, RGPD) : Geist et Geist Mono variables, à côté de ce fichier (fonts/LISEZMOI.md).
   URL relatives : le même fichier sert les prototypes et l'app (/kit/kit.css → /kit/fonts/…). */
@font-face{font-family:Geist;src:url(fonts/Geist-Variable.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}
@font-face{font-family:"Geist Mono";src:url(fonts/GeistMono-Variable.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}
:root{
  --bg:#F5F5F1;--card:#FFFFFF;--card2:#F1F1EC;--ink:#131417;--mute:#6E7178;--faint:#A3A6AE;--line:#E3E3DE;
  --acc:#0F766E;--acc2:#14B8A6;--acc-soft:#E6F4F1;--band:rgba(15,118,110,.16);
  --hot:#E4572E;--hot-soft:#FDEDE7;--ocre:#B07C10;--ocre-soft:#FBF3E0;--bleu:#3B5BDB;--bleu-soft:#EEF2FF;--violet:#6B5CA5;
  --fam-brand:#6B5CA5;--fam-bofu:#E4572E;--fam-mofu:#B07C10;--fam-tofu:#0F766E;
  --r:20px;--r2:14px;--sh:0 1px 2px rgba(19,20,23,.04),0 16px 40px -16px rgba(19,20,23,.14);--ease:cubic-bezier(.2,.8,.2,1);
  --grid:linear-gradient(rgba(19,20,23,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(19,20,23,.035) 1px,transparent 1px)}
*{box-sizing:border-box}
html,body{min-height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:Geist,system-ui,sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;background-image:var(--grid);background-size:28px 28px}
.mono{font-family:"Geist Mono",ui-monospace,SFMono-Regular,monospace;font-variant-numeric:tabular-nums}
b{font-weight:600}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;cursor:pointer}
.good{color:var(--acc)}.hotc{color:var(--hot)}.mutc{color:var(--mute)}.ocrec{color:var(--ocre)}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}

[hidden]{display:none!important}

/* ─── 1. chrome : barre haute, marque, menu, boutons ─── */
.wordmark{font-weight:700;letter-spacing:-.02em;font-size:16px;display:inline-flex;align-items:center;color:var(--ink)}
.wordmark i{display:inline-block;width:22px;height:2px;background:var(--ink);vertical-align:middle;margin-right:8px;position:relative}
.wordmark i:after{content:"";position:absolute;left:9px;top:-3px;width:8px;height:8px;border-radius:50%;background:var(--hot)}
.wordmark.lg{font-size:22px}.wordmark.lg i{width:30px;height:3px}.wordmark.lg i:after{left:12px;top:-3px;width:9px;height:9px}
.top{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:12px;padding:12px 28px;background:rgba(245,245,241,.85);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.top .right{margin-left:auto;display:flex;gap:10px;align-items:center}
.chip{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:var(--card);font-size:13px;color:var(--ink)}
.chip .sw{width:10px;height:10px;border-radius:3px;background:#1D4ED8}
.chip.btn-like{cursor:pointer}
.chip.btn-like:hover{border-color:var(--faint)}
.live{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--mute)}
.live .dot{width:8px;height:8px;border-radius:50%;background:var(--acc2);animation:pulse 1.8s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(20,184,166,.5)}70%{box-shadow:0 0 0 9px rgba(20,184,166,0)}100%{box-shadow:0 0 0 0 rgba(20,184,166,0)}}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font-size:11px;font-weight:600;font-family:"Geist Mono",monospace}
.menuwrap{position:relative}
.menu{position:absolute;top:calc(100% + 8px);left:0;min-width:240px;background:var(--card);border:1px solid var(--line);border-radius:var(--r2);box-shadow:var(--sh);padding:8px;display:none;z-index:20}
.menu.on{display:block}
.menu .mt{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);font-weight:600;padding:8px 10px 4px}
.menu a,.menu button{display:block;width:100%;text-align:left;padding:8px 10px;border-radius:8px;font-size:13.5px;border:0;background:none}
.menu a:hover,.menu button:hover{background:var(--card2)}
.menu a.on{background:var(--acc-soft);color:var(--acc)}
.menu .sep{height:1px;background:var(--line);margin:6px 4px}
.btn{display:inline-flex;align-items:center;gap:10px;padding:11px 18px;border-radius:999px;border:1px solid var(--line);background:var(--card);font-weight:500;font-size:13.5px;box-shadow:var(--sh);transition:.25s var(--ease);color:var(--ink)}
.btn:hover{transform:translateY(-1px)}
.btn.primary{background:var(--ink);color:#fff;border-color:var(--ink)}
.btn.danger{color:var(--hot);border-color:var(--hot-soft)}
.btn.sm{padding:7px 12px;font-size:12.5px;box-shadow:none}
.btn.link{border:0;background:none;box-shadow:none;padding:6px 8px;color:var(--mute);text-decoration:underline;text-underline-offset:3px}
.btn small{font-weight:400;color:var(--mute);font-size:12px}
.btn.primary small{color:#fff;opacity:.65}
.btn[disabled]{opacity:.45;pointer-events:none}
kbd{font-family:"Geist Mono",monospace;border:1px solid var(--line);border-radius:6px;padding:1px 6px;font-size:10.5px;color:var(--mute);background:var(--card)}
.seg{display:inline-flex;background:var(--card2);border:1px solid var(--line);border-radius:999px;padding:3px;position:relative}
.seg button{border:0;background:none;padding:5px 12px;border-radius:999px;font-size:12.5px;font-weight:500;color:var(--mute);position:relative;z-index:1;transition:color .2s;white-space:nowrap}
.seg button.on{color:var(--ink)}
.seg .ind{position:absolute;top:3px;bottom:3px;background:var(--card);border-radius:999px;box-shadow:0 1px 3px rgba(0,0,0,.12);transition:left .35s var(--ease),width .35s var(--ease)}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:18px}
.tabs a,.tabs button{padding:10px 14px;border:0;background:none;font-size:13.5px;font-weight:500;color:var(--mute);border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs .on{color:var(--ink);border-bottom-color:var(--hot)}
.crumb{font-size:12.5px;color:var(--mute);display:inline-flex;align-items:center;gap:8px;margin-bottom:14px}
.crumb a{color:var(--ink);font-weight:500;padding:6px 0;margin:-6px 0}
.crumb a:hover{text-decoration:underline;text-underline-offset:3px}

/* ─── 2. texte de lecture ─── */
.eyebrow{font-family:"Geist Mono",monospace;font-size:12px;color:var(--mute);letter-spacing:.02em;text-transform:uppercase;margin:0 0 10px}
.eyebrow b{color:var(--ink);font-weight:500}
.verdict{font-size:clamp(26px,3.4vw,40px);line-height:1.12;letter-spacing:-.025em;font-weight:600;margin:0 0 30px;max-width:900px}
.verdict .num{font-family:"Geist Mono",monospace;font-weight:500}
h2.titre{font-size:22px;letter-spacing:-.02em;font-weight:600;margin:0 0 6px}
p.lead{font-size:16px;color:var(--mute);max-width:60ch;margin:0}
p.lead b{color:var(--ink);font-weight:500}
.note{font-size:11.5px;color:var(--mute);margin:8px 0 0}
.note b{color:var(--ink);font-weight:500}
.k{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);font-weight:600;margin:0 0 6px;display:flex;align-items:center;gap:8px}
.k .go{margin-left:auto;color:var(--faint);font-weight:400;letter-spacing:0;text-transform:none;font-size:12px;opacity:0;transform:translateX(-4px);transition:.25s var(--ease)}
.card:hover .k .go{opacity:1;transform:none}
.rank{font-size:34px;font-weight:500;letter-spacing:-.03em;line-height:1;margin:6px 0 2px}
.rank small{font-size:13px;color:var(--mute);font-weight:400;letter-spacing:0;margin-left:6px}
/* la mesure en ligne : chiffre, fourchette collée, n */
.mes{display:inline-flex;align-items:baseline;gap:6px;font-family:"Geist Mono",monospace;font-variant-numeric:tabular-nums;white-space:nowrap}
.mes b{font-weight:500;font-size:1.15em;color:var(--ink)}
.mes i{font-style:normal;color:var(--mute);font-size:.9em}
.mes i:before{content:"["}.mes i:after{content:"]"}
.mes small{color:var(--faint);font-size:.85em}
.mes.floor b{color:var(--faint)}
.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:500;background:var(--card2);color:var(--mute);white-space:nowrap}
.pill.ok{background:var(--acc-soft);color:var(--acc)}
.pill.ok:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--acc)}
.pill.hot{background:var(--hot-soft);color:var(--hot)}
.pill.ocre{background:var(--ocre-soft);color:var(--ocre)}
.pill.bleu{background:var(--bleu-soft);color:var(--bleu)}
.badge{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--mute)}
.badge:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--faint)}
.badge.brand:before{background:var(--fam-brand)}.badge.bofu:before{background:var(--fam-bofu)}.badge.mofu:before{background:var(--fam-mofu)}.badge.tofu:before{background:var(--fam-tofu)}
.tag{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--hot);border:1px solid var(--hot);border-radius:6px;padding:1px 6px;font-weight:600;vertical-align:middle}
.tag.acc{color:var(--acc);border-color:var(--acc)}.tag.mute{color:var(--mute);border-color:var(--line)}

/* ─── 3. cartes, grilles, animation d'entrée ─── */
.wrap{max-width:1180px;margin:0 auto;padding:36px 28px 120px;container-type:inline-size;container-name:page}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);padding:22px 24px;position:relative}
.card.flat{box-shadow:none}
.card.ink{background:var(--ink);color:#fff;border-color:var(--ink)}
.card.ink .k{color:#9EA1A8}
.grid1{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:18px;margin-bottom:18px}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-bottom:18px}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-bottom:18px}
.grid3.large-mid{grid-template-columns:minmax(0,.9fr) minmax(0,1.3fr) minmax(0,.9fr)}
.grid-side{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:18px;margin-bottom:18px;align-items:start}
.headrow{display:flex;align-items:flex-start;gap:20px}
.headrow .verdict{flex:1}
.rise{opacity:0;transform:translateY(14px);animation:rise .8s var(--ease) forwards}
@keyframes rise{to{opacity:1;transform:none}}
.d1{animation-delay:.05s}.d2{animation-delay:.15s}.d3{animation-delay:.25s}.d4{animation-delay:.35s}.d5{animation-delay:.45s}.d6{animation-delay:.55s}
.foot{font-size:12px;color:var(--faint);margin-top:28px;display:flex;gap:16px;flex-wrap:wrap}
.foot a{text-decoration:underline;text-underline-offset:3px}

/* ─── 4. instruments de mesure ─── */
/* cadran */
.gwrap{position:relative;width:min(100%,420px);margin:0 auto}
.gsvg{width:100%;height:auto;display:block;overflow:visible}
.gsvg .track{fill:none;stroke:#ECECE8;stroke-width:14}
.gsvg .band{fill:none;stroke:var(--band);stroke-width:26;transition:stroke-dasharray 1.4s var(--ease) .6s,stroke-dashoffset 1.4s var(--ease) .6s}
.gsvg .val{fill:none;stroke:var(--acc);stroke-width:14;transition:stroke-dasharray 1.6s var(--ease) .2s}
.gsvg .tick{stroke:#C9CAC4;stroke-width:1.5}.gsvg .tick.major{stroke:#9C9EA0;stroke-width:2}
.gsvg .lab{font-family:"Geist Mono",monospace;font-size:11px;fill:var(--mute)}
.gsvg .needle line{stroke:var(--hot);stroke-width:3;stroke-linecap:round}
.gsvg .needle circle{fill:#fff;stroke:var(--hot);stroke-width:3}
.gsvg .ghost line{stroke:#B7B9B4;stroke-width:2;stroke-dasharray:3 4;stroke-linecap:round}
.gsvg .needle,.gsvg .ghost{transform-origin:160px 160px}
.gcenter{position:absolute;left:0;right:0;top:61%;text-align:center;pointer-events:none}
.gbig{font-family:"Geist Mono",monospace;font-size:62px;font-weight:500;letter-spacing:-.04em;line-height:1;font-variant-numeric:tabular-nums}
.gbig small{font-size:26px;color:var(--mute);margin-left:4px}
.gsub{font-size:13px;color:var(--mute);margin-top:6px}
.gfoot{display:flex;gap:18px;justify-content:center;flex-wrap:wrap;margin-top:6px;font-size:12px;color:var(--mute)}
.gfoot span b{color:var(--ink);font-weight:500}
.legend{display:inline-flex;align-items:center;gap:6px}
.legend i{display:inline-block;width:14px;height:8px;border-radius:2px;background:var(--band)}
.legend i.h{height:2px;background:var(--hot)}
.legend i.g{height:0;border-top:2px dashed #B7B9B4;background:none}
.tip{position:absolute;left:50%;transform:translateX(-50%);bottom:-6px;background:var(--ink);color:#fff;font-size:12px;padding:8px 12px;border-radius:10px;white-space:nowrap;opacity:0;pointer-events:none;transition:.2s}
.gwrap:hover .tip{opacity:1;bottom:2px}
.gauge{display:grid;grid-template-columns:1fr;place-items:center;padding-bottom:16px}
.xl .gwrap{width:min(100%,520px)}.xl .gbig{font-size:84px}
/* règles graduées */
.meters{display:flex;flex-direction:column;gap:14px;justify-content:center}
.meter{display:grid;grid-template-columns:150px 1fr 96px;gap:14px;align-items:center}
.meter .fam{font-weight:500;font-size:13.5px}
.meter .fam small{display:block;color:var(--mute);font-weight:400;font-size:11.5px}
.scale{position:relative;height:34px}
.scale .ticks{position:absolute;left:0;right:0;top:13px;height:8px;background:repeating-linear-gradient(90deg,#D8D8D3 0 1px,transparent 1px 10%)}
.scale .ticks:after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,#B7B9B4 0 1px,transparent 1px 25%),linear-gradient(90deg,transparent calc(100% - 1px),#B7B9B4 0)}
.scale .base{position:absolute;left:0;right:0;top:21px;height:1px;background:#D8D8D3}
.scale .band{position:absolute;top:13px;height:16px;background:var(--band);border-radius:3px;left:var(--lo);width:0;transition:width 1.2s var(--ease) .5s}
.scale.on .band{width:calc(var(--hi) - var(--lo))}
.scale .mark{position:absolute;top:8px;width:3px;height:26px;background:var(--acc);border-radius:2px;left:0;transition:left 1.4s var(--ease) .2s;box-shadow:0 0 0 3px #fff}
.scale.on .mark{left:var(--v)}
.scale .prev{position:absolute;top:10px;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:7px solid #B7B9B4;left:0;transition:left 1.2s var(--ease) .1s;margin-left:-5px}
.scale.on .prev{left:var(--p)}
.mv{text-align:right;font-size:18px;font-weight:500}
.mv .delta{display:inline-block;font-size:11px;padding:2px 7px;border-radius:999px;background:var(--acc-soft);color:var(--acc);margin-left:6px;vertical-align:middle;font-family:Geist;font-weight:600}
.mv .delta.hot{background:var(--hot-soft);color:var(--hot)}
.mv .delta.mut{background:var(--card2);color:var(--mute)}
.mv small{display:block;font-size:11px;color:var(--mute);font-weight:400;margin-top:2px}
.meter.bascule .fam:after{content:"bascule";font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--hot);border:1px solid var(--hot);border-radius:6px;padding:1px 6px;margin-left:8px;vertical-align:middle;font-weight:600}
.xl .meters{gap:22px}.xl .meter{grid-template-columns:200px 1fr 130px}.xl .meter .fam{font-size:17px}.xl .mv{font-size:26px}.xl .scale{height:44px}.xl .scale .ticks{top:18px}.xl .scale .base{top:26px}.xl .scale .band{top:16px;height:20px}.xl .scale .mark{top:10px;height:32px}.xl .scale .prev{top:13px}
/* vu-mètres */
.vu{margin-top:12px}
.vu .hd{display:flex;align-items:baseline;gap:10px;margin-bottom:8px}
.vu .hd b{font-size:14px}
.vu .hd .n{margin-left:auto;font-size:12px;color:var(--mute)}
.vu .hd .v{font-size:20px;font-weight:500}
.segs{display:grid;grid-template-columns:repeat(20,1fr);gap:3px;height:22px}
.segs i{background:#ECECE8;border-radius:3px;transform-origin:bottom}
.segs i.on{background:var(--acc);animation:lit .35s var(--ease) both}
.segs i.on.ci{background:var(--acc2);opacity:.45}
@keyframes lit{from{transform:scaleY(.2);opacity:0}to{transform:scaleY(1);opacity:1}}
.vu .ft{font-size:11.5px;color:var(--mute);margin-top:6px}
.xl .vu .hd b{font-size:17px}.xl .vu .hd .v{font-size:26px}.xl .segs{height:34px}.xl .vu .ft{font-size:13px}
/* huit semaines */
.weeks{display:grid;grid-template-columns:repeat(8,1fr);gap:8px;align-items:end;height:120px;margin-top:56px;padding-bottom:22px;position:relative}
.wk{position:relative;height:100%;display:flex;align-items:flex-end}
.wk .bar{width:100%;background:#DDE9E6;border-radius:6px 6px 3px 3px;height:0;transition:height 1.2s var(--ease);position:relative}
.wk.last .bar{background:var(--acc)}
.wk .whisk{position:absolute;left:50%;width:1.5px;background:var(--ink);opacity:0;transition:opacity .6s 1s;transform:translateX(-50%)}
.wk .whisk:before,.wk .whisk:after{content:"";position:absolute;left:-4px;width:9px;height:1.5px;background:var(--ink)}
.wk .whisk:before{top:0}.wk .whisk:after{bottom:0}
.weeks.on .wk .whisk{opacity:.7}
.wk .lab{position:absolute;bottom:-20px;left:0;right:0;text-align:center;font-size:10.5px;color:var(--faint)}
.wk .pv{position:absolute;top:-30px;left:0;right:0;text-align:center;font-size:11px;color:var(--mute);opacity:0;transition:opacity .5s 1.2s}
.weeks.on .wk .pv{opacity:1}
.wk.cp:after{content:"";position:absolute;top:-16px;left:50%;width:10px;height:10px;border-radius:50%;background:var(--hot);transform:translate(-50%,-100%) scale(0);box-shadow:0 0 0 4px var(--hot-soft)}
.weeks.on .wk.cp:after{animation:pop .5s var(--ease) 1.5s forwards}
@keyframes pop{to{transform:translate(-50%,-100%) scale(1)}}
.wk.cp .cpl{position:absolute;top:-42px;left:50%;transform:translateX(-50%);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--hot);font-weight:600;white-space:nowrap;opacity:0}
.weeks.on .wk.cp .cpl{animation:rise .5s var(--ease) 1.7s forwards}
/* 4.5-3 : une semaine sans relevé (Kit.weeks, {trou:true}) reste vide, hachurée sur toute la hauteur, jamais comblée ;
   la fin d'une mesure arrêtée ({trou:true,arret:true}) aussi, après sa dernière semaine */
.wk.wk-trou .bar{height:100%;background:repeating-linear-gradient(45deg,transparent 0 3px,#C9CAC4 3px 5px);transition:none}
.wk.wk-trou .pv{color:var(--faint)}
.xl .weeks{height:260px;margin-top:80px}.xl .wk .lab{font-size:12px}.xl .wk .pv{font-size:13px}.xl .wk.cp:after{top:-24px}.xl .wk.cp .cpl{font-size:12px;top:-52px}
/* échelle marché */
.rail{position:relative;height:120px;margin-top:10px}
.rail .line{position:absolute;left:0;right:0;top:64px;height:2px;background:#E3E3DE}
.rail .t{position:absolute;top:70px;font-size:10px;color:var(--faint);transform:translateX(-50%)}
.rail .t:first-of-type{transform:none}.rail .t:last-of-type{transform:translateX(-100%)}
.br{position:absolute;top:64px;width:14px;height:14px;border-radius:50%;background:#C5C7C2;border:2px solid #fff;transform:translate(-50%,-50%) scale(0);transition:left 1.3s var(--ease),transform .5s var(--ease);box-shadow:0 1px 3px rgba(0,0,0,.15);left:0}
.rail.on .br{transform:translate(-50%,-50%) scale(1)}
.br.you{background:var(--hot);width:18px;height:18px;z-index:2}
.br.watch{background:var(--ocre)}
.br .nm{position:absolute;top:-26px;left:50%;transform:translateX(-50%);font-size:11px;white-space:nowrap;font-weight:500;color:var(--ink)}
.br .nm small{color:var(--mute);font-weight:400;margin-left:3px}
.br.you .nm{color:var(--hot);top:-30px;font-weight:600}
.br.lo .nm{top:auto;bottom:-26px}
.br .ci{position:absolute;top:50%;height:2px;background:var(--ink);opacity:0;transform:translateY(-50%);transition:opacity .5s 1.4s;left:0}
.rail.on .br .ci{opacity:.25}
.rail.on .br.you .ci{opacity:.5;background:var(--hot)}
.br:hover{z-index:5;transform:translate(-50%,-50%) scale(1.3)}
.xl .rail{height:200px;margin-top:40px}.xl .rail .line{top:100px}.xl .rail .t{top:108px;font-size:12px}.xl .br{top:100px;width:18px;height:18px}.xl .br.you{width:24px;height:24px}.xl .br .nm{font-size:13px;top:-32px}.xl .br.you .nm{top:-38px}.xl .br.lo .nm{bottom:-32px;top:auto}.xl .rank{font-size:52px}
/* points SEO */
.dots{display:grid;grid-template-columns:repeat(10,1fr);gap:6px;margin-top:12px}
.dots i{aspect-ratio:1;border-radius:4px;background:#ECECE8;transform:scale(.4);opacity:0;animation:dot .4s var(--ease) forwards;transition:transform .15s}
.dots i.ok{background:var(--acc)}.dots i.near{background:var(--ocre);opacity:.7}
.dots i:hover{transform:scale(1.25)!important}
@keyframes dot{to{transform:scale(1);opacity:1}}
.xl .dots{gap:8px;max-width:520px}
/* étincelle (sparkline) */
.spark{width:120px;height:32px;vertical-align:middle}
.spark polyline{fill:none;stroke:var(--acc);stroke-width:2;stroke-linecap:round}
.spark circle{fill:var(--acc)}
/* actes */
.acts{display:flex;flex-direction:column;gap:10px;margin-top:8px}
.act{display:grid;grid-template-columns:28px 1fr auto;gap:12px;align-items:center;padding:12px 14px;border-radius:var(--r2);background:var(--card2);border:1px solid transparent}
.act:hover{border-color:var(--line)}
.act .st{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:600;font-family:"Geist Mono",monospace}
.act.ok .st{background:var(--acc-soft);color:var(--acc)}
.act.ok .st svg{width:14px;height:14px;stroke:var(--acc);stroke-width:3;fill:none;stroke-dasharray:24;stroke-dashoffset:24;animation:chk .6s var(--ease) 1.2s forwards}
@keyframes chk{to{stroke-dashoffset:0}}
.act.wait .st{background:var(--bleu-soft);color:var(--bleu);position:relative}
.act.wait .st:after{content:"";position:absolute;inset:-3px;border-radius:50%;border:2px solid var(--bleu);border-right-color:transparent;animation:spin 1.6s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.act.next .st{background:var(--card);color:var(--mute);border:1px dashed var(--faint)}
.act .t{font-weight:500;font-size:13.5px}
.act .t small{display:block;font-weight:400;color:var(--mute);font-size:12px;margin-top:1px}
.ba{display:flex;align-items:center;gap:8px;font-weight:500;font-size:14px;font-family:"Geist Mono",monospace}
.ba .arrow{color:var(--faint)}.ba .after{color:var(--acc)}
.ba .tag{font-family:Geist;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;padding:3px 7px;border-radius:6px;background:var(--acc-soft);color:var(--acc);font-weight:600;border:0}
.ba .tag.w{background:var(--bleu-soft);color:var(--bleu)}
/* sources / occupants */
.srcs{display:flex;flex-direction:column;gap:10px;margin-top:8px}
.src{display:grid;grid-template-columns:1fr 60px;gap:4px 10px;align-items:center;font-size:13px}
.src .n{font-weight:500}.src .n small{margin-left:8px;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;padding:2px 6px;border-radius:5px;background:var(--card2);color:var(--mute);font-weight:600}
.src .p{text-align:right;font-weight:500;font-family:"Geist Mono",monospace}
.src .b{grid-column:1/-1;height:6px;background:var(--card2);border-radius:3px;overflow:hidden}
.src .b i{display:block;height:100%;width:0;background:var(--mute);opacity:.5;border-radius:3px;transition:width 1s var(--ease)}
.src.you .b i{background:var(--hot);opacity:1}
/* preuve avant / après */
.proofc{padding:20px 22px;border-radius:18px;background:var(--card);border:1px solid var(--line);box-shadow:var(--sh)}
.proofc .k{margin-bottom:10px}
.proofc .k .chk{width:18px;height:18px;border-radius:50%;background:var(--acc-soft);display:grid;place-items:center}
.proofc .k .chk svg{width:11px;height:11px;stroke:var(--acc);stroke-width:3;fill:none;stroke-dasharray:24;stroke-dashoffset:24}
.on .proofc .k .chk svg,.proofc.on .k .chk svg{transition:stroke-dashoffset .6s var(--ease) 1.4s;stroke-dashoffset:0}
.proofc .t{font-size:17px;font-weight:600;letter-spacing:-.01em;margin:0 0 6px}
.proofc p{margin:0;color:var(--mute);font-size:13.5px}
.proofc .pill{white-space:normal;line-height:1.4}
.mini{display:flex;gap:6px;align-items:flex-end;height:64px;margin-top:14px}
.mini i{flex:1;background:#DDE9E6;border-radius:4px 4px 2px 2px;height:0;transition:height 1s var(--ease)}
.mini i.a{background:var(--acc)}
.on .mini i,.mini.on i{height:var(--h)}
.mini i.m{background:none;width:1px;flex:0 0 1px;border-left:1px dashed var(--hot);height:100%!important}
.swap{display:inline-grid;height:1em;overflow:hidden;vertical-align:baseline;line-height:1;font-family:"Geist Mono",monospace;font-weight:500}
.swap span{grid-area:1/1;transition:transform .9s var(--ease) .6s,opacity .6s .6s}
.swap .old{color:var(--mute)}.swap .new{transform:translateY(110%);opacity:0;color:var(--acc)}
.on .swap .old,.swap.on .old{transform:translateY(-110%);opacity:0}.on .swap .new,.swap.on .new{transform:none;opacity:1}
/* relevé en direct + registre */
.ticker{padding:0;overflow:hidden}
.thead{display:flex;align-items:center;gap:14px;padding:16px 24px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.thead .k{margin:0}
.thead .prog{flex:1;height:6px;background:#EFEFEB;border-radius:3px;overflow:hidden;max-width:260px;min-width:120px}
.thead .prog i{display:block;height:100%;background:var(--acc);width:0;transition:width .8s var(--ease)}
.thead .cnt{font-size:12px;color:var(--mute)}.thead .cnt b{color:var(--ink);font-weight:500}
.tlist{display:flex;flex-direction:column}
.tl>*{min-width:0}
.tl{display:grid;grid-template-columns:78px 120px minmax(120px,1fr) 140px minmax(100px,1fr);gap:14px;align-items:center;padding:11px 24px;border-bottom:1px solid #F0F0EC;font-size:13px;animation:slide .5s var(--ease)}
.tl.h{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);font-weight:600;animation:none;padding:8px 24px}
.tl.h span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@keyframes slide{from{opacity:0;transform:translateY(-10px);background:#F3FAF8}to{opacity:1;transform:none;background:transparent}}
.tl .t{color:var(--faint);font-size:12px}
.eng{display:inline-flex;align-items:center;gap:7px;font-weight:500;white-space:nowrap}
.eng i{width:8px;height:8px;border-radius:2px;background:#1D4ED8}
.eng.g i{background:#F59E0B}
.tl .q{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tl .q:before{content:"« "}.tl .q:after{content:" »"}
.tl .srcl{color:var(--mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12.5px}
.tl .srcl b{color:var(--hot);font-weight:500}
.tfoot{padding:10px 24px;font-size:11.5px;color:var(--mute);background:#FAFAF8;border-top:1px solid var(--line)}
.registre{display:flex;align-items:center;gap:14px;padding:16px 24px;border-radius:var(--r2);background:var(--ink);color:#fff;overflow:hidden;position:relative}
.registre .rk{font-size:11px;letter-spacing:.08em;text-transform:uppercase;font-weight:600;color:#9EA1A8}
.registre .hash{flex:1;overflow:hidden;white-space:nowrap;font-size:11px;color:#5E6169;mask:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}
.registre .hash span{display:inline-block;animation:mq 40s linear infinite}
@keyframes mq{to{transform:translateX(-50%)}}
.registre .arr{color:#9EA1A8;transition:.2s}.registre:hover .arr{transform:translateX(4px);color:#fff}
/* ligne de question (par question, plancher, verdict par moteur) */
.qrow{display:grid;grid-template-columns:1fr auto auto;gap:10px 16px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.qrow .qt{font-weight:500}
.qrow .qt small{display:block;color:var(--mute);font-weight:400;font-size:12px;margin-top:2px}
.qrow .verd{display:inline-flex;gap:4px;align-items:center}
.qrow .verd i{width:10px;height:10px;border-radius:3px;background:#ECECE8}
.qrow .verd i.ok{background:var(--acc)}.qrow .verd i.no{background:#D8D8D3}.qrow .verd i.na{background:none;border:1px dashed var(--faint)}
.qrow.floor{color:var(--faint)}.qrow.floor .qt{color:var(--faint)}

/* ─── 5. composants d'app : formulaires, listes, tableaux, panneaux, états ─── */
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.field label{font-size:12.5px;font-weight:500}
.field .hint{font-size:11.5px;color:var(--mute)}
.field .err{font-size:12px;color:var(--hot)}
.field.invalid input,.field.invalid textarea{border-color:var(--hot)}
input[type=text],input[type=email],input[type=password],input[type=url],input[type=number],textarea,select{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;outline:0;transition:border-color .15s,box-shadow .15s;width:100%}
input:focus,textarea:focus,select:focus{border-color:var(--acc);box-shadow:0 0 0 3px var(--band)}
textarea{min-height:90px;resize:vertical}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.switch{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-size:13.5px}
.switch i{width:38px;height:22px;border-radius:999px;background:#D8D8D3;position:relative;transition:.2s}
.switch i:after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:.2s;box-shadow:0 1px 2px rgba(0,0,0,.2)}
.switch input{display:none}
.switch input:checked+i{background:var(--acc)}.switch input:checked+i:after{left:19px}
.check{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;cursor:pointer}
.check input{width:16px;height:16px;accent-color:var(--acc)}
/* liste éditable : ajout, retrait, restauration */
.ledit{display:flex;flex-direction:column}
.ledit .row{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.ledit .row .tx{font-weight:500}
.ledit .row .tx small{display:block;color:var(--mute);font-weight:400;font-size:12px}
.ledit .row.retired{color:var(--faint)}.ledit .row.retired .tx{text-decoration:line-through;font-weight:400}
.ledit .row.new{animation:slide .5s var(--ease)}
.ledit .add{display:grid;grid-template-columns:1fr auto;gap:10px;padding:12px 0 0}
.ledit .add input{border-radius:999px;padding:9px 14px}
/* tableau triable */
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{text-align:left;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);font-weight:600;padding:8px 10px;border-bottom:1px solid var(--line);cursor:pointer;user-select:none;white-space:nowrap}
.tbl th.num,.tbl td.num{text-align:right;font-family:"Geist Mono",monospace;font-variant-numeric:tabular-nums}
.tbl th.on{color:var(--ink)}
.tbl th.on:after{content:" ↓";color:var(--hot)}.tbl th.on.asc:after{content:" ↑"}
.tbl td{padding:10px;border-bottom:1px solid #F0F0EC;vertical-align:middle}
.tbl tr:hover td{background:#FAFAF8}
.tbl tr.you td{background:var(--hot-soft)}
.tbl .more{padding:12px 10px;text-align:center}
/* panneau latéral */
.scrim{position:fixed;inset:0;background:rgba(19,20,23,.28);backdrop-filter:blur(2px);opacity:0;pointer-events:none;transition:opacity .25s;z-index:30}
.scrim.on{opacity:1;pointer-events:auto}
.panel{position:fixed;top:0;right:0;bottom:0;width:min(560px,100%);background:var(--card);border-left:1px solid var(--line);box-shadow:-20px 0 60px -30px rgba(19,20,23,.3);transform:translateX(100%);transition:transform .35s var(--ease);z-index:31;display:flex;flex-direction:column}
.panel.on{transform:none}
.panel .ph{display:flex;align-items:center;gap:12px;padding:16px 22px;border-bottom:1px solid var(--line)}
.panel .ph .k{margin:0}
.panel .ph .x{margin-left:auto;border:1px solid var(--line);background:var(--card);border-radius:999px;width:32px;height:32px;display:grid;place-items:center;font-size:14px}
.panel .pb{padding:22px;overflow-y:auto;flex:1}
/* le pied s'appelle .pft : .pf est le bandeau « première fenêtre », dont le fond teal fuyait ici */
.panel .pft{padding:14px 22px;border-top:1px solid var(--line);display:flex;align-items:center;gap:10px;justify-content:flex-end;flex-wrap:wrap}
.raw{font-family:"Geist Mono",monospace;font-size:12px;background:var(--card2);border-radius:12px;padding:14px 16px;white-space:pre-wrap;line-height:1.6;color:var(--ink)}
.raw mark{background:var(--band);color:var(--acc);padding:0 2px;border-radius:3px}
/* états */
.empty{text-align:center;padding:44px 24px;border:1px dashed var(--line);border-radius:var(--r);color:var(--mute);font-size:13.5px}
.empty b{display:block;color:var(--ink);font-size:16px;font-weight:600;margin-bottom:6px}
.empty .btn{margin-top:16px}
.pf{display:flex;align-items:center;gap:14px;padding:14px 18px;border-radius:var(--r2);background:var(--acc-soft);color:var(--acc);font-size:13px;flex-wrap:wrap}
.pf .prog{flex:1;height:6px;background:rgba(15,118,110,.18);border-radius:3px;min-width:120px;overflow:hidden}
.pf .prog i{display:block;height:100%;background:var(--acc);border-radius:3px}
.pf b{font-weight:600}
.lock{position:relative;overflow:hidden}
.lock>*:not(.lockc){filter:blur(4px);opacity:.55;pointer-events:none;user-select:none}
.lockc{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:24px;z-index:2}
.lockc .in{background:var(--card);border:1px solid var(--line);border-radius:var(--r2);box-shadow:var(--sh);padding:18px 20px;max-width:340px}
.lockc .in b{display:block;font-size:15px;margin-bottom:4px}
.lockc .in p{margin:0 0 12px;color:var(--mute);font-size:13px}
.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);background:var(--ink);color:#fff;padding:12px 18px;border-radius:999px;font-size:13px;opacity:0;transition:.3s var(--ease);z-index:40;pointer-events:none;white-space:nowrap}
.toast.on{opacity:1;transform:translate(-50%,0)}
.toast.ok:before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--acc2);margin-right:10px}
.modal{position:fixed;inset:0;display:grid;place-items:center;z-index:35;opacity:0;pointer-events:none;transition:opacity .25s}
.modal.on{opacity:1;pointer-events:auto}
.modal .box{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);padding:24px;width:min(440px,calc(100% - 32px));transform:translateY(10px);transition:transform .3s var(--ease)}
.modal.on .box{transform:none}
.modal .box h3{margin:0 0 6px;font-size:17px;letter-spacing:-.01em}
.modal .box p{margin:0 0 18px;color:var(--mute);font-size:13.5px}
.modal .box .row{display:flex;gap:10px;justify-content:flex-end}
.errpage{text-align:center;padding:80px 24px}
.errpage .ecode{font-family:"Geist Mono",monospace;font-size:64px;letter-spacing:-.04em;color:var(--faint);line-height:1}
.errpage h1{font-size:26px;letter-spacing:-.02em;margin:10px 0 6px}
.errpage p{color:var(--mute);margin:0 0 20px}
/* étapes (onboarding, constructeur) */
.steps{display:flex;gap:6px;align-items:center;margin-bottom:22px;flex-wrap:wrap}
.steps span{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:var(--mute);padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:var(--card)}
.steps span b{font-family:"Geist Mono",monospace;font-weight:500;color:var(--hot);font-size:11px}
.steps span.done{color:var(--acc);border-color:var(--acc-soft);background:var(--acc-soft)}
.steps span.on{color:var(--ink);border-color:var(--ink)}
/* chrome démo (hors app) */
.demo{position:fixed;right:18px;bottom:18px;display:flex;gap:6px;z-index:29;flex-wrap:wrap;justify-content:flex-end;max-width:70vw}
.demo button{font-size:12px;padding:7px 11px;border-radius:999px;border:1px solid var(--line);background:#fff;box-shadow:var(--sh)}
.demo button.on{border-color:var(--acc);color:var(--acc)}
.demo .lbl{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);align-self:center;margin-right:2px}
.demo .tog{color:var(--faint);border-style:dashed}.demo.min>*:not(.tog){display:none}

/* ─── 6. responsive : conteneur « page » (tout ce qui est dans .wrap) ─── */
@container page (max-width:980px){
  .grid1,.grid2,.grid3,.grid3.large-mid,.grid-side{grid-template-columns:minmax(0,1fr)}
  .headrow{flex-direction:column}
}
@container page (max-width:600px){
  .verdict{font-size:24px}
  .card{padding:16px}
  .grid1,.grid2,.grid3{gap:12px;margin-bottom:12px}
  .meter,.xl .meter{grid-template-columns:1fr auto;grid-auto-flow:dense;gap:4px 10px}
  .meter .scale{grid-column:1/-1}
  .xl .meter .fam{font-size:15px}.xl .mv{font-size:20px}.xl .scale{height:40px}.xl .segs{height:26px}
  .xl .gwrap{width:min(100%,320px)}.xl .gbig{font-size:56px}
  .gfoot{gap:10px;font-size:11px}
  .gwrap .tip{white-space:normal;max-width:92%;text-align:center}
  .weeks{gap:5px}.xl .weeks{height:170px;margin-top:64px}.xl .wk .lab{font-size:10px}.xl .wk .pv{font-size:11px}
  .xl .rail{height:170px;margin-top:50px}.xl .rail .line{top:85px}.xl .rail .t{top:92px;font-size:10px}.xl .br{top:85px;width:14px;height:14px}.xl .br.you{width:20px;height:20px}.xl .br .nm{font-size:11px;top:-28px}.xl .br.you .nm{top:-32px}.xl .br.lo .nm{bottom:-28px;top:auto}.xl .rank{font-size:40px}
  .xl .dots{gap:6px}
  .act{grid-template-columns:28px 1fr}.act .ba{grid-column:2;font-size:13px}
  .tl{grid-template-columns:1fr auto}.tl .t,.tl .eng,.tl .srcl{display:none}
  .tl.h span:nth-child(1),.tl.h span:nth-child(2),.tl.h span:nth-child(5){display:none}
  .thead{padding:12px 16px}
  .qrow{grid-template-columns:1fr auto}.qrow .verd{grid-column:1/-1}
  .frow{grid-template-columns:1fr}
  .ledit .row{grid-template-columns:1fr auto}
  .proofc{padding:16px}.proofc .t{font-size:15px}
  .tbl{display:block;overflow-x:auto}
  .foot{gap:10px}
}
/* barre haute, panneaux, chrome : viewport */
@media (max-width:600px){
  .top{flex-wrap:wrap;gap:8px;padding:10px 14px}
  .top .right{margin-left:auto}
  .top .live,.chip .mutc,.top .top-opt{display:none}
  .wrap{padding:22px 14px 90px}
  .demo{display:none}
  .panel .pb{padding:16px}
}

/* ─── 7. coquilles : entrée (auth, porte), barre d'action fixe, choix de questions ─── */
.auth{min-height:100vh;display:grid;place-items:safe center;padding:24px;overflow-y:auto}
.authc{width:min(460px,100%);padding:34px 32px 28px}
.authc .wordmark{margin-bottom:22px}
.authc h1{font-size:26px;letter-spacing:-.025em;font-weight:600;margin:0 0 8px;line-height:1.15}
.authc p.lead{font-size:14px;margin:0 0 20px}
.authc .links{display:flex;gap:14px;flex-wrap:wrap;margin-top:18px;font-size:12.5px;color:var(--mute)}
.authc .links a{text-decoration:underline;text-underline-offset:3px}
.authc .btn{width:100%;justify-content:center}
.msg{padding:10px 14px;border-radius:12px;font-size:13px;margin:0 0 16px;background:var(--card2);color:var(--mute)}
.msg.err{background:var(--hot-soft);color:var(--hot)}
.msg.ok{background:var(--acc-soft);color:var(--acc)}
.code{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin:6px 0 16px}
.code input{text-align:center;font-family:"Geist Mono",monospace;font-size:22px;padding:12px 0;border-radius:12px}
.porte{width:min(680px,100%);text-align:center;padding:44px 40px 36px}
.porte .hello{font-size:13px;color:var(--mute);margin:22px 0 10px;display:flex;align-items:center;justify-content:center;gap:10px}
.porte .hello .ok{width:22px;height:22px;border-radius:50%;background:var(--acc-soft);display:inline-grid;place-items:center}
.porte .hello .ok svg{width:12px;height:12px;stroke:var(--acc);stroke-width:3;fill:none;stroke-dasharray:24;stroke-dashoffset:24;animation:chk .6s var(--ease) .5s forwards}
.porte h1{font-size:clamp(26px,3.6vw,40px);line-height:1.1;letter-spacing:-.025em;font-weight:600;margin:0 0 16px}
.porte .stats{font-family:"Geist Mono",monospace;font-size:12px;letter-spacing:.02em;text-transform:uppercase;color:var(--mute);margin-bottom:22px}
.porte .stats b{color:var(--ink);font-weight:500}
.faits{display:flex;justify-content:center;gap:6px;flex-wrap:wrap;margin:0 0 28px}
.faits span{font-size:12px;color:var(--mute);padding:5px 10px;border:1px solid var(--line);border-radius:999px;opacity:0;transform:translateY(6px);animation:rise .6s var(--ease) forwards;background:var(--bg)}
.faits span b{font-family:"Geist Mono",monospace;color:var(--hot);font-weight:500;margin-right:6px;font-size:11px}
.ctarow{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}
.porte .foot{font-size:12px;color:var(--faint);margin-top:26px;justify-content:center}
.barfix{position:sticky;bottom:0;z-index:6;margin-top:24px;background:rgba(245,245,241,.9);backdrop-filter:blur(14px);border-top:1px solid var(--line);padding:14px 0;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.barfix .prog{flex:1;min-width:140px;height:6px;background:#EFEFEB;border-radius:3px;overflow:hidden}
.barfix .prog i{display:block;height:100%;background:var(--acc);width:0;transition:width .4s var(--ease)}
.barfix .cnt{font-size:13px}.barfix .cnt b{font-family:"Geist Mono",monospace;font-weight:500}
.barfix .note{margin:0;flex-basis:100%}
.qpick{display:grid;grid-template-columns:22px 1fr auto;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line);font-size:13.5px;cursor:pointer}
.qpick input{width:18px;height:18px;accent-color:var(--acc);margin:0}
.qpick .tx{font-weight:500}.qpick .tx small{display:block;color:var(--mute);font-weight:400;font-size:12px}
.qpick.off .tx{color:var(--mute);font-weight:400}
.qpick .badge{font-size:10.5px}
details.fam{margin-bottom:16px}
details.fam summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:10px;padding:10px 0;font-weight:500;border-bottom:1px solid var(--line)}
details.fam summary::-webkit-details-marker{display:none}
details.fam summary .cnt{margin-left:auto;font-family:"Geist Mono",monospace;font-size:12px;color:var(--mute)}
details.fam summary:after{content:"▾";color:var(--faint)}
details.fam[open] summary:after{content:"▴"}
.spin{display:inline-block;width:14px;height:14px;border-radius:50%;border:2px solid var(--acc);border-right-color:transparent;animation:spin 1s linear infinite;vertical-align:middle}
@container page (max-width:600px){.porte{padding:30px 20px 26px}.porte h1{font-size:26px}.ctarow{flex-direction:column}.ctarow .btn{width:100%;justify-content:center}.qpick{grid-template-columns:22px 1fr}.qpick .badge{grid-column:2}}
@media (max-width:600px){.auth{padding:14px}.authc{padding:26px 20px 22px}.code{gap:6px}.code input{font-size:18px;padding:10px 0}}

/* ─── 8. la revue : film en six faits (topbar, rail, scroller, sortie) ─── */
.film{position:fixed;inset:0;background:var(--bg);background-image:var(--grid);background-size:28px 28px;overflow:hidden}
.film .topbar{position:absolute;top:0;left:0;right:0;z-index:10;display:flex;align-items:center;gap:14px;padding:12px 28px;background:rgba(245,245,241,.85);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.film .topbar .fact{margin-left:auto;font-size:12px;color:var(--mute)}
.film .topbar .fact b{font-family:"Geist Mono",monospace;color:var(--ink);font-weight:500}
.film .topbar .skip{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:6px 12px;font-size:12px;color:var(--mute)}
.film .topbar:after{content:"";position:absolute;left:0;bottom:-1px;height:2px;background:var(--hot);width:calc(var(--prog,1)/var(--nfaits,7)*100%);transition:width .4s var(--ease)}
.frail{position:absolute;left:26px;top:50%;transform:translateY(-50%);z-index:10;display:flex;flex-direction:column;gap:14px}
.frail button{width:8px;height:8px;border-radius:50%;border:0;background:#C9CAC4;padding:0;position:relative;transition:.3s var(--ease)}
.frail button.on{background:var(--hot);height:28px;border-radius:4px}
.frail button span{position:absolute;left:18px;top:50%;transform:translateY(-50%);white-space:nowrap;font-size:12px;color:var(--mute);opacity:0;transition:.2s;pointer-events:none}
.frail button:hover span{opacity:1}
.scroller{height:100%;overflow-y:auto;scroll-snap-type:y mandatory;scroll-behavior:smooth;scrollbar-width:none}
.scroller::-webkit-scrollbar{display:none}
.scroller section{height:100%;scroll-snap-align:start;position:relative;display:grid;grid-template-columns:minmax(0,1fr);place-items:center;padding:80px 28px 50px;overflow:hidden;container-type:inline-size;container-name:page}
.cadre{width:min(1080px,100%);position:relative;z-index:2}
.scroller .eyebrow{opacity:0;transform:translateY(10px);transition:.7s var(--ease)}
.on .eyebrow{opacity:1;transform:none}
.scroller h1{font-size:clamp(28px,3.8vw,46px);line-height:1.1;letter-spacing:-.025em;font-weight:600;margin:0 0 22px;max-width:22ch}
.fr{opacity:0;transform:translateY(18px);transition:.8s var(--ease)}
.on .fr{opacity:1;transform:none}
.on .fr.f1{transition-delay:.1s}.on .fr.f2{transition-delay:.25s}.on .fr.f3{transition-delay:.4s}
.film .hint{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);font-size:12px;color:var(--faint);display:flex;flex-direction:column;align-items:center;gap:6px}
.film .hint i{width:1px;height:26px;background:linear-gradient(var(--faint),transparent);animation:down 1.8s infinite}
@keyframes down{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}
.two{display:grid;grid-template-columns:1.1fr 1fr;gap:26px;align-items:center}
.two2{display:grid;grid-template-columns:1fr 1fr;gap:26px;align-items:start}
.sortie{background:var(--ink);color:#fff;border-radius:24px;padding:48px 44px;text-align:center;position:relative;overflow:hidden}
.sortie .eyebrow{color:#9EA1A8}.sortie .eyebrow b{color:#fff}
.sortie h1{color:#fff;max-width:none;margin-left:auto;margin-right:auto}
.sortie p.lead{color:#B8BBC2;margin:0 auto}
.sortie .hash{position:absolute;left:0;right:0;bottom:18px;white-space:nowrap;font-size:11px;color:#3E4149;mask:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}
.sortie .hash span{display:inline-block;animation:mq 40s linear infinite}
.sortie .btn.primary{background:#fff;color:var(--ink);border-color:#fff}
@container page (max-width:600px){
  .scroller h1{font-size:24px;max-width:none;margin-bottom:14px}
  .scroller .eyebrow{font-size:10.5px}
  .two,.two2{grid-template-columns:1fr;gap:18px}
  .sortie{padding:34px 20px 44px;border-radius:18px}.sortie h1{font-size:24px}
}
@media (max-width:600px){
  .film .topbar{padding:10px 14px;gap:10px}
  .film .topbar .chip,.film .topbar .eyebrow{display:none}
  .film .topbar .skip{padding:6px 10px}.film .topbar .skip kbd{display:none}
  .scroller{scroll-snap-type:y proximity}
  .scroller section{height:auto;min-height:100%;padding:64px 16px 36px;place-items:safe center}
  .frail,.film .hint{display:none}
}
@media (max-width:980px){.two,.two2{grid-template-columns:1fr}}

/* ─── 9. plongées (M3) : sujets voisins, courbe quotidienne, sceau, compteurs, filtres, frise, chips ─── */
.plhead{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.plhead .crumb{margin:0}
.voisins{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}
.voisins a{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:var(--card);font-size:12.5px;font-weight:500;color:var(--mute);transition:.2s var(--ease);white-space:nowrap}
.voisins a i{width:8px;height:8px;border-radius:50%;background:var(--faint)}
.voisins a i.ia{background:var(--acc)}.voisins a i.seo{background:var(--ocre)}.voisins a i.marche{background:var(--violet)}.voisins a i.registre{background:var(--ink);display:block;padding:0;border-radius:50%;overflow:visible}/* quatrième collision S161 : le point héritait de la barre .registre (flex, padding) et s'affichait en pavé noir */.voisins a i.actions{background:var(--hot)}
.voisins a b{font-family:"Geist Mono",monospace;font-weight:500;font-size:12px;color:var(--ink)}
.voisins a:hover{border-color:var(--faint);color:var(--ink)}
.voisins a.on{background:var(--ink);border-color:var(--ink);color:#fff}
.voisins a.on b,.voisins a.on i{color:#fff}
.voisins a.on i{box-shadow:0 0 0 2px rgba(255,255,255,.35)}
.voisins a.soon{opacity:.45;pointer-events:none}
.lead .mes b{font-size:1em}
/* courbe quotidienne : la série jour par jour, sa bande, ses trous, sa bascule */
.curve{position:relative;margin-top:10px}
.curve svg{display:block;width:100%;height:auto;overflow:visible}
.curve .band{fill:var(--band);opacity:0;transition:opacity .8s var(--ease) .5s}
.curve.on .band{opacity:1}
.curve .ln{fill:none;stroke:var(--acc);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;transition:stroke-dashoffset .9s var(--ease)}
.curve .pt{fill:var(--acc)}
.curve .cp{fill:#fff;stroke:var(--hot);stroke-width:2.5;transform-box:fill-box;transform-origin:center;transform:scale(0);transition:transform .4s var(--ease) 1s}
.curve.on .cp{transform:scale(1)}
.curve .cpl rect{fill:var(--ink)}.curve .cpl text{fill:#fff;font-family:"Geist Mono",monospace;font-size:10px}
.curve .cpl{opacity:0;transition:opacity .4s 1.1s}.curve.on .cpl{opacity:1}
.curve .ax{stroke:#E3E3DE;stroke-width:1}.curve .gr{stroke:#EDEDE9;stroke-width:1}
.curve text{font-family:"Geist Mono",monospace;font-size:10px;fill:var(--faint)}
.curve .gap rect{fill:url(#hach)}.curve .gap text{fill:var(--mute);font-size:9.5px}
.curve .cur{stroke:var(--ink);stroke-width:1;stroke-dasharray:3 3;opacity:0}
.curve .ctip{position:absolute;top:6px;background:var(--ink);color:#fff;font-family:"Geist Mono",monospace;font-size:11px;line-height:1.5;padding:6px 10px;border-radius:8px;pointer-events:none;opacity:0;transform:translateX(-50%);white-space:nowrap;transition:opacity .12s;z-index:2}
.curve .ctip.on{opacity:1}.curve .ctip .d{color:#9EA1A8}
.curveleg{display:flex;gap:16px;flex-wrap:wrap;margin-top:10px;font-size:11.5px;color:var(--mute)}
.curveleg i{display:inline-block;vertical-align:middle;margin-right:6px;border-radius:2px}
.curveleg .l1{width:16px;height:2px;background:var(--acc)}.curveleg .l2{width:16px;height:9px;background:var(--band)}.curveleg .l3{width:16px;height:9px;background:repeating-linear-gradient(45deg,transparent 0 3px,#C9CAC4 3px 5px)}.curveleg .l4{width:9px;height:9px;border-radius:50%;background:#fff;border:2px solid var(--hot)}
/* règles graduées : rangée cliquable, étiquette de bascule libre */
.meter.pick{cursor:pointer;border-radius:12px;padding:6px 10px;margin:0 -10px;transition:background .15s}
.meter.pick:hover{background:var(--card2)}
.meter.pick.on{background:var(--acc-soft)}
.meter.bascule .fam:after{content:attr(data-cp)}
/* lignes de question : verdict par moteur, cliquable */
.qrow.pick{cursor:pointer;border-radius:10px;padding:12px 10px;margin:0 -10px;transition:background .12s}
.qrow.pick:hover{background:var(--card2)}
.qrow .verds{display:flex;gap:14px;flex-wrap:wrap;align-items:center}
.qrow .verd i.e{width:8px;height:8px;border-radius:2px;background:#1D4ED8;margin-right:4px}
.qrow .verd i.e.g{background:#F59E0B}
.qrow .verd i.pend{background:none;border:1px solid var(--line)}
.qrow .verd small{font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--faint);margin-left:4px}
.qhead{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:6px}
.qhead .k{margin:0}
.qhead .seg{margin-left:auto}
/* le sceau du registre */
.seal{display:inline-flex;flex-direction:column;justify-content:center;gap:2px;padding:14px 24px;border:1.5px solid var(--ink);border-radius:14px;position:relative;text-align:center;background:var(--card)}
.seal:before{content:"";position:absolute;inset:4px;border:1px solid var(--line);border-radius:10px;pointer-events:none}
.seal .s1{font-family:"Geist Mono",monospace;font-size:10.5px;letter-spacing:.22em;text-transform:uppercase}
.seal .s2{font-size:13px;font-weight:600}
.seal .s3{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);margin-top:2px}
/* compteurs */
.counters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.counters .card{padding:14px 18px}
.counters .rank{font-size:30px;margin:0 0 2px}
.counters .k{margin:0}
/* filtres */
.filters{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:18px 0 12px}
.filters .lbl{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);font-weight:600}
.filters .search{margin-left:auto;width:280px;max-width:100%}
input[type=search]{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:999px;padding:8px 14px;outline:0;width:100%;transition:border-color .15s,box-shadow .15s;-webkit-appearance:none}
input[type=search]:focus{border-color:var(--acc);box-shadow:0 0 0 3px var(--band)}
/* frise des fenêtres */
.frise{position:relative;padding-left:26px;margin-top:6px}
.frise:before{content:"";position:absolute;left:8px;top:16px;bottom:16px;width:2px;background:var(--line)}
.fwin{position:relative;margin-bottom:10px}
.fwin .fnode{position:absolute;left:-23px;top:15px;width:12px;height:12px;border-radius:50%;background:var(--card);border:2px solid var(--faint);z-index:1}
.fwin.open .fnode{background:var(--acc);border-color:var(--acc);box-shadow:0 0 0 3px var(--band)}
.fwin.live .fnode{background:var(--acc2);border-color:var(--acc2);animation:pulse 1.8s infinite}
.fclosed{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:1px solid var(--line);background:var(--card);border-radius:var(--r2);padding:11px 18px;font-size:13px;transition:.15s}
.fclosed:hover{border-color:var(--faint)}
/* .fwd, pas .fd : « .fd » est le point de famille de 8 px (M4, S159), il écrasait la date de chaque fenêtre de la frise (sixième collision, attrapée S225) */
.fclosed .fwd{font-weight:600;min-width:150px}
.fclosed .fc{color:var(--mute);font-family:"Geist Mono",monospace;font-size:11.5px}
.fclosed .chev{margin-left:auto;color:var(--faint)}
.fopen{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);overflow:hidden}
.fopen .fbar{display:flex;align-items:baseline;gap:12px;padding:14px 24px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.fbar .fwd{font-weight:600;font-size:14px}
.fbar .fc{font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute)}
.fbar .fcnt{margin-left:auto}
.fbar .pill{margin-left:auto}
.fmore{display:block;width:100%;padding:12px;background:none;border:0;color:var(--acc);font-weight:500;font-size:12.5px}
.fmore:hover{background:#FAFAF8}
.fempty{padding:24px;text-align:center;color:var(--mute);font-size:12.5px}
.tl.pick{cursor:pointer}
.tl.pick:hover{background:#FAFAF8}
.tl .t{white-space:nowrap}
/* chips de sources */
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}
.chips .chip{padding:3px 9px;font-size:11.5px;font-family:"Geist Mono",monospace;gap:6px}
.chips .chip.you{border-color:var(--hot);color:var(--hot);font-weight:500}
.chips .chip.pos{color:var(--faint)}
/* réponse d'un moteur dans le panneau */
.ans{border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin-bottom:12px}
.ans .hd{display:flex;align-items:center;gap:10px;font-weight:600;font-size:13.5px;flex-wrap:wrap}
.ans .hd .pill{margin-left:auto}
.ans .meta{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);margin-top:4px}
.ans .raw{margin-top:10px}
.ans .verd{display:inline-flex;gap:4px;vertical-align:middle;margin-left:6px}
.ans .verd i{width:9px;height:9px;border-radius:2px;background:#ECECE8}
.ans .verd i.ok{background:var(--acc)}.ans .verd i.no{background:#D8D8D3}.ans .verd i.na{background:none;border:1px dashed var(--faint)}
.panel .kicker{font-size:15px;font-weight:600;letter-spacing:-.01em;margin:0 0 4px}
@container page (max-width:600px){
  .plhead{gap:10px}.voisins{margin-left:0;width:100%;overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px}
  .counters{grid-template-columns:repeat(2,minmax(0,1fr))}.counters .rank{font-size:24px}
  .filters .search{margin-left:0;width:100%}
  .qrow .verds{grid-column:1/-1}
  .seg{max-width:100%;overflow-x:auto;scrollbar-width:none}
  .qhead .seg,.filters .seg{margin-left:0}
  .seg::-webkit-scrollbar{display:none}
  .seg button{flex:none}
  .fclosed .fwd{min-width:0}.fbar .fcnt{margin-left:0}
  .frise{padding-left:20px}.fwin .fnode{left:-17px}
  .curve .ctip{font-size:10px}
}
/* lignes d'attente (première fenêtre) : famille, compte au plancher, progression */
/* :not(.act) : la ligne d'attente ne doit pas écraser l'acte « en vérification » (.act.wait, §4) : collision attrapée S161c */
.wait:not(.act){display:flex;flex-direction:column;gap:10px}
.wait .row{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:13px;padding:8px 0;border-bottom:1px solid var(--line)}
.wait .row .prog{width:120px;height:6px;background:#EFEFEB;border-radius:3px;overflow:hidden;flex:none}
.wait .row .prog i{display:block;height:100%;background:var(--acc)}
/* légende des verdicts par relevé */
.vlegend{display:flex;gap:14px;flex-wrap:wrap;font-size:11.5px;color:var(--mute);margin-top:12px}
.vlegend i{display:inline-block;width:10px;height:10px;border-radius:3px;background:#ECECE8;vertical-align:middle;margin-right:5px}
.vlegend i.ok{background:var(--acc)}.vlegend i.no{background:#D8D8D3}.vlegend i.na{background:none;border:1px dashed var(--faint)}.vlegend i.pend{background:none;border:1px solid var(--line)}

/* ─── 10. plongées (M3b) : carte des positions, série de rang, liste SERP, échelle comparée ─── */
.posmap{position:relative;margin-top:12px}
.pmz{position:relative;height:220px;background:var(--card2);border-radius:14px;overflow:hidden}
.pz{position:absolute;top:0;bottom:0}
.pz span{position:absolute;top:10px;left:0;right:0;text-align:center;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);font-weight:600;white-space:nowrap;overflow:hidden;padding:0 4px}
.pz.z1{background:rgba(15,118,110,.13)}.pz.z1 span{color:var(--acc)}
.pz.z2{background:rgba(15,118,110,.06)}.pz.z2 span{color:var(--acc)}
.pz.z3{background:rgba(176,124,16,.08)}.pz.z3 span{color:var(--ocre)}
.pax{position:absolute;left:0;right:0;top:50%;height:1.5px;background:#D8D8D3}
.ptk{position:absolute;bottom:8px;transform:translateX(-50%);font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--faint)}
.pj{position:absolute;width:13px;height:13px;border-radius:4px;background:#C5C7C2;border:2px solid #fff;padding:0;cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.15);transform:translate(-50%,-50%) scale(0);animation:pj .4s var(--ease) forwards;z-index:2;transition:transform .15s}
@keyframes pj{to{transform:translate(-50%,-50%) scale(1)}}
/* .t10, pas .top : « .top » est la barre haute du kit (collante, flex, flou) ; elle habillait les jetons du top 10, le carré de la légende (56 px de large) et les points de la série (collision attrapée S225) */
.pj.t10{background:var(--acc)}.pj.near{background:var(--ocre)}
.pj.mv{box-shadow:0 0 0 3px var(--hot-soft),0 1px 3px rgba(0,0,0,.15)}
.pj:hover,.pj.on{transform:translate(-50%,-50%) scale(1.45)!important;z-index:3}
.pj.on{outline:2px solid var(--hot);outline-offset:1px}
.ptraj{position:absolute;height:0;border-top:1.5px dashed var(--hot);transform:translateY(-50%);z-index:1;width:0;transition:width .6s var(--ease) .5s}
.pmz.on .ptraj{width:var(--w)}
.ptraj:after{content:"";position:absolute;left:-3px;top:-4.5px;border:3.5px solid transparent;border-right:6px solid var(--hot)}
.ptraj.rev:after{left:auto;right:-3px;border-right:none;border-left:6px solid var(--hot)}
.ptraj.gris{border-top-color:#B7B9B4}.ptraj.gris:after{border-right-color:#B7B9B4}.ptraj.gris.rev:after{border-left-color:#B7B9B4;border-right-color:transparent}
.ptip{position:absolute;background:var(--ink);color:#fff;font-size:12px;line-height:1.45;padding:7px 11px;border-radius:9px;pointer-events:none;opacity:0;transform:translate(-50%,-100%);white-space:nowrap;transition:opacity .12s;z-index:5}
.ptip.on{opacity:1}.ptip .d{font-family:"Geist Mono",monospace;color:#9EA1A8}.ptip .d b{color:#fff;font-weight:500}
.pabs{margin-top:12px;font-size:12.5px;color:var(--mute);display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.pabs .btn.link{padding:2px 6px;font-size:12.5px}
.maplegend{display:flex;gap:16px;flex-wrap:wrap;margin-top:12px;font-size:11.5px;color:var(--mute);align-items:center}
.maplegend i{display:inline-block;vertical-align:middle;margin-right:6px}
.maplegend .sq{width:11px;height:11px;border-radius:3px;background:#C5C7C2}.maplegend .sq.t10{background:var(--acc)}.maplegend .sq.near{background:var(--ocre)}
.maplegend .tr{width:16px;height:0;border-top:1.5px dashed var(--hot);vertical-align:3px}.maplegend .tr.gris{border-top-color:#B7B9B4}
/* série de rang : plus bas = mieux */
.rankline svg{display:block;width:100%;height:auto;overflow:visible}
.rankline .ln{fill:none;stroke:var(--ocre);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.rankline .pt{fill:var(--ocre)}.rankline .pt.t10{fill:var(--acc)}
.rankline .ten{stroke:var(--acc);stroke-dasharray:3 3;opacity:.6}
.rankline text{font-family:"Geist Mono",monospace;font-size:10px;fill:var(--faint)}
.rankline .tenl{fill:var(--acc)}
.rankline .gr{stroke:#EDEDE9}
.rankline .gap rect{fill:url(#hach)}
/* liste SERP : qui occupe la première page */
.serp{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--card)}
.serp .row{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid #F0F0EC;font-size:13px}
.serp .row:last-child{border-bottom:0}
.serp .pos{font-family:"Geist Mono",monospace;color:var(--faint);width:24px;flex:none}
.serp .dm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.serp .dm small{margin-left:8px;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;padding:2px 6px;border-radius:5px;background:var(--card2);color:var(--mute);font-weight:600}
.serp .row.you{background:var(--hot-soft)}.serp .row.you .dm{color:var(--hot);font-weight:600}.serp .row.you .pos{color:var(--hot)}
.serp .row .btn{opacity:0;transition:opacity .12s}.serp .row:hover .btn,.serp .row .btn:focus-visible{opacity:1}
@media(hover:none){.serp .row .btn{opacity:1}}
/* échelle marché : sélection, survol comparé */
.br.on{z-index:4;transform:translate(-50%,-50%) scale(1.3)!important;outline:2px solid var(--ink);outline-offset:2px}
.rail.pick .br{cursor:pointer}
.rail .rtip{position:absolute;background:var(--ink);color:#fff;font-size:12px;line-height:1.5;padding:7px 11px;border-radius:9px;pointer-events:none;opacity:0;transform:translate(-50%,-100%);white-space:nowrap;transition:opacity .12s;z-index:6}
.rail .rtip.on{opacity:1}.rail .rtip .d{color:#9EA1A8}.rail .rtip .ok{color:#5FD4C4}.rail .rtip .w{color:#E8B84B}
.rail.names-all .br .nm{display:block}
.rail.dim .br{opacity:.35}.rail.dim .br.you,.rail.dim .br.hot,.rail.dim .br.on{opacity:1}
@container page (max-width:600px){
  .pmz{height:180px}.pz.z2 span,.pz.z3 span{display:none}.pj{width:11px;height:11px}
  .maplegend{gap:10px}
  .rail.names-all .br .nm{display:none}.rail.names-all .br.you .nm,.rail.names-all .br.watch .nm{display:block}
}

/* ─── 11. plongées (M3c) : vos actions, chantiers, atelier, ticket ─── */
/* carte d'action : rang, trait du pilier, titre, méta, pourquoi, bouton */
.acard{display:grid;grid-template-columns:22px 3px minmax(0,1fr) auto auto;gap:14px;align-items:center;padding:14px 16px;border-radius:var(--r2);background:var(--card);border:1px solid var(--line);box-shadow:var(--sh);cursor:pointer;transition:.2s var(--ease);margin-bottom:10px}
.acard:hover{transform:translateY(-1px);border-color:var(--faint)}
.acard .rk{font-family:"Geist Mono",monospace;font-size:14px;color:var(--faint);text-align:center}
.acard .tick{width:3px;align-self:stretch;border-radius:2px;background:var(--faint)}
.tick.contenu,.pd.contenu{background:var(--acc)}.tick.technique,.pd.technique{background:var(--ocre)}.tick.autorite,.pd.autorite{background:var(--violet)}
.acard .t{font-weight:600;font-size:14.5px;min-width:0}
.acard .meta{font-size:12px;color:var(--mute);margin-top:3px;display:flex;gap:6px;flex-wrap:wrap;align-items:center;font-weight:400}
.acard .meta .mono{color:var(--ink)}
.acard .meta .stale{color:var(--ocre)}
.acard .meta .resume{border:1px solid var(--line);border-radius:999px;padding:1px 8px;font-size:11px}
.why{position:relative;width:26px;height:26px;border-radius:50%;border:1px solid var(--line);background:var(--card);font-family:"Geist Mono",monospace;font-size:12px;color:var(--mute);display:grid;place-items:center;padding:0;flex:none}
.why:hover,.why.on{border-color:var(--ink);color:var(--ink)}
.why .pop{position:absolute;z-index:8;top:32px;right:-6px;width:270px;background:var(--ink);color:#fff;border-radius:10px;padding:10px 12px;font-size:12.5px;line-height:1.45;text-align:left;box-shadow:var(--sh);display:none;font-family:Geist,system-ui,sans-serif;font-weight:400}
.why .pop:after{content:"";position:absolute;top:-5px;right:12px;width:10px;height:10px;background:var(--ink);transform:rotate(45deg)}
.why.on .pop{display:block}
/* la bulle ouverte passe devant la carte suivante (S229) : la carte survolée (transform) fait son propre empilement */
.acard:has(.why.on),.acc:has(.why.on){position:relative;z-index:5;overflow:visible}
.pd{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--faint);flex:none}
/* tuiles d'état des chantiers */
.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.tile{display:flex;flex-direction:column;gap:8px;text-decoration:none;color:inherit;transition:.2s var(--ease)}
.tile:hover{transform:translateY(-1px);border-color:var(--faint)}
.tile .th{display:flex;align-items:center;gap:8px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;font-weight:600;color:var(--mute)}
.tile .th .arr{margin-left:auto;color:var(--faint);letter-spacing:0;text-transform:none;transition:.2s}
.tile:hover .th .arr{transform:translateX(3px);color:var(--ink)}
.tile h3{margin:0;font-size:14.5px;font-weight:600}
.tile .rank{margin:0}
.tile .st{font-size:12px;color:var(--mute)}.tile .st b{color:var(--ink);font-weight:500}
.tile .bar{height:6px;border-radius:3px;background:#EFEFEB;overflow:hidden}.tile .bar i{display:block;height:100%;background:var(--acc);width:0;transition:width .8s var(--ease)}
/* ruban des règles (technique) et des cibles (autorité) */
.rstrip{display:flex;gap:4px;flex-wrap:wrap}
.rstrip i{width:11px;height:11px;border-radius:3px;background:#ECECE8;border:1px solid var(--line);transform:scale(.6);opacity:0;animation:pj .35s var(--ease) forwards}
.rstrip i.ok{background:var(--acc);border-color:var(--acc)}.rstrip i.warn{background:var(--ocre);border-color:var(--ocre)}.rstrip i.crit{background:var(--hot);border-color:var(--hot)}.rstrip i.half{background:linear-gradient(90deg,var(--ocre) 50%,#ECECE8 50%)}.rstrip i.won{background:var(--acc);border-color:var(--acc)}
.rstrip i{animation-name:rs}@keyframes rs{to{transform:scale(1);opacity:1}}
.rlegend{display:flex;gap:14px;flex-wrap:wrap;font-size:11.5px;color:var(--mute);margin-top:10px}
.rlegend i{display:inline-block;width:10px;height:10px;border-radius:3px;background:#ECECE8;vertical-align:middle;margin-right:5px;border:1px solid var(--line)}
.rlegend i.ok{background:var(--acc);border-color:var(--acc)}.rlegend i.warn{background:var(--ocre);border-color:var(--ocre)}.rlegend i.crit{background:var(--hot);border-color:var(--hot)}
/* la boucle : deux cellules, anneau de jours */
.loop{display:grid;grid-template-columns:1fr 1fr;padding:0;overflow:hidden}
.loop button{display:flex;align-items:center;gap:12px;padding:14px 18px;text-align:left;border:0;background:none;font:inherit;color:inherit;cursor:pointer;transition:background .12s}
.loop button+button{border-left:1px solid var(--line)}
.loop button:hover{background:#FAFAF8}
.loop .lt{min-width:0}.loop .lt b{display:block;font-weight:600;font-size:13.5px}.loop .lt span{font-size:12px;color:var(--mute)}
.loop .arr{margin-left:auto;color:var(--faint)}
.loop .cnt{display:flex;gap:5px;flex:none}.loop .cnt i{width:10px;height:10px;border-radius:50%;background:#ECECE8;border:1px solid var(--line)}.loop .cnt i.on{background:var(--acc);border-color:var(--acc)}
.ring{width:40px;height:40px;flex:none}
.ring circle{fill:none;stroke-width:3.5}
.ring .bg{stroke:#ECECE8}
.ring .fg{stroke:var(--ocre);stroke-linecap:round;transition:stroke-dashoffset .9s var(--ease)}
.ring text{font:500 9.5px "Geist Mono",monospace;fill:var(--ink)}
.ring.lg{width:76px;height:76px}.ring.lg text{font-size:13px}.ring text.u{font-size:7px;fill:var(--mute)}
/* liste dans un panneau : la boucle, les questions, le journal */
.pit{display:flex;align-items:center;gap:12px;padding:11px 0;border:0;border-bottom:1px solid var(--line);width:100%;text-align:left;background:none;font:inherit;color:inherit;cursor:pointer}
.pit:hover{background:#FAFAF8}
.pit .t{flex:1;min-width:0}.pit .t b{display:block;font-weight:600;font-size:13.5px}.pit .t span{font-size:12px;color:var(--mute)}
.jrow{font-family:"Geist Mono",monospace;font-size:12px;padding:7px 0;border-bottom:1px dashed var(--line);color:var(--ink)}
.sealnote{margin-top:14px;font-size:11.5px;color:var(--mute);display:flex;gap:7px;align-items:center}
.sealnote:before{content:"";width:9px;height:11px;border:1.5px solid var(--mute);border-radius:3px;box-sizing:border-box}
/* accordéon (constats, cibles) */
.acc{border:1px solid var(--line);border-radius:var(--r2);background:var(--card);margin-bottom:8px;overflow:hidden;box-shadow:var(--sh)}
.acc>summary{list-style:none;display:grid;grid-template-columns:14px 30px minmax(0,1fr) auto 18px;gap:12px;align-items:center;padding:14px 16px;cursor:pointer;font-size:14px}
.acc>summary::-webkit-details-marker{display:none}
.acc>summary:hover{background:#FAFAF8}
.acc .rd{width:10px;height:10px;border-radius:50%;background:var(--ocre)}.acc .rd.crit{background:var(--hot)}.acc .rd.ok{background:var(--acc)}.acc .rd.violet{background:var(--violet)}
.acc .rn{font-family:"Geist Mono",monospace;font-size:12px;color:var(--faint)}
.acc .rt{min-width:0}.acc .rt b{font-weight:600}.acc .rt small{color:var(--mute);margin-left:6px;font-size:12px}
.acc .chev{color:var(--faint);transition:.2s;justify-self:end}
.acc[open]>summary .chev{transform:rotate(90deg)}
.acc .body{padding:0 16px 18px 72px;font-size:13.5px}
.acc .body p{margin:0 0 8px}
.acc .body .lvl{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);font-weight:600;margin:18px 0 8px}
.acc .body .lvl small{letter-spacing:0;text-transform:none;font-weight:400}
.acc .body .row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.olist{list-style:none;padding:0;margin:0}
.olist li{display:grid;grid-template-columns:22px 1fr;gap:10px;padding:6px 0;font-size:13.5px}
.olist li .n{font-family:"Geist Mono",monospace;font-size:11px;color:var(--ocre);padding-top:3px}
.rrow{display:grid;grid-template-columns:14px 30px minmax(0,1fr);gap:12px;align-items:center;padding:9px 0;border-top:1px dashed var(--line);font-size:13.5px}
.rrow.pride{background:var(--acc-soft);border-radius:10px;padding:10px 12px;margin:6px -12px 8px;border-top:0}
/* bandes calibrées : la preuve, avant / après */
.bands .axis{display:flex;justify-content:space-between;font-family:"Geist Mono",monospace;font-size:10px;color:var(--faint);margin:0 0 6px 122px}
.brow{display:grid;grid-template-columns:112px 1fr 120px;gap:10px;align-items:center;padding:7px 0}
.brow .lab{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--mute);text-align:right;font-weight:600}
.brow .lab.hot{color:var(--ocre)}.brow .lab.good{color:var(--acc)}
.brow .track{position:relative;height:14px;background:var(--card2);border-radius:7px}
.brow .band{position:absolute;top:0;bottom:0;border-radius:7px;background:rgba(110,113,120,.18);width:0;left:0;transition:width .7s var(--ease) .1s,left .7s var(--ease) .1s}
.brow .band.warm{background:var(--ocre-soft)}.brow .band.cool{background:var(--band)}
.brow .dotm{position:absolute;top:50%;width:9px;height:9px;border-radius:50%;background:var(--ink);transform:translate(-50%,-50%);left:0;transition:left .7s var(--ease) .1s}
.brow .dotm.warm{background:var(--ocre)}.brow .dotm.cool{background:var(--acc)}
.brow .cut{position:absolute;top:-4px;bottom:-4px;width:1.5px;background:var(--ink);opacity:.5}
.brow .cut span{position:absolute;bottom:-17px;transform:translateX(-50%);font-family:"Geist Mono",monospace;font-size:9.5px;color:var(--mute);white-space:nowrap}
.brow .val{font-family:"Geist Mono",monospace;font-size:12.5px;white-space:nowrap}.brow .val small{display:block;font-size:10px;color:var(--mute)}
/* dialogue à options */
.modal .opt{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:12px;margin-bottom:8px;cursor:pointer;font-size:13.5px;text-align:left}
.modal .opt input[type=radio]{margin-top:3px;accent-color:var(--acc)}
.modal .opt b{display:block;font-weight:600}.modal .opt .s{color:var(--mute);font-size:12px}
.modal .opt input[type=date],.modal .opt input[type=text]{margin-top:6px;padding:7px 10px;border-radius:9px}
/* barre d'action de l'atelier (fixe en bas) */
.abar{position:fixed;left:0;right:0;bottom:0;z-index:20;}
body.has-abar .demo{bottom:80px}
.abar{background:rgba(255,255,255,.92);backdrop-filter:blur(14px);border-top:1px solid var(--line)}
.abar .in{max-width:820px;margin:0 auto;display:flex;align-items:center;gap:12px;padding:12px 22px}
.abar .st{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.abar .menuwrap .menu{top:auto;bottom:calc(100% + 8px);left:auto;right:0}
.dots3{width:40px;height:40px;border-radius:12px;border:1px solid var(--line);background:var(--card);display:grid;place-items:center;font-weight:700;letter-spacing:1px}
/* états du squelette éditorial */
.echip{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:5px;font-size:11px;font-weight:700;flex:none;line-height:1;font-family:"Geist Mono",monospace}
.echip.verifiee{background:var(--acc);color:#fff}.echip.verif{background:var(--ocre-soft);color:var(--ocre)}.echip.garder{background:var(--acc-soft);color:var(--acc)}.echip.renforcer{background:var(--ocre);color:#fff}.echip.fusionner{background:#B3261E;color:#fff}.echip.reprendre{background:#8B8478;color:#fff}.echip.creer{background:#fff;color:var(--hot);border:1.1px dashed var(--faint)}
.elegend{display:flex;gap:10px;flex-wrap:wrap;align-items:center;font-size:11.5px;color:var(--mute);margin-top:12px}
.elegend .grp{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;font-weight:600;color:var(--faint);margin-left:6px}
.elegend .it{display:inline-flex;align-items:center;gap:5px}
/* arbre du squelette (carte) */
.tree{display:flex;gap:14px;overflow-x:auto;padding:8px 2px 14px;align-items:flex-start;scrollbar-width:thin}
.tree .pil{flex:0 0 236px;background:var(--card);border:1px solid var(--line);border-radius:var(--r2);padding:12px 12px 8px;box-shadow:var(--sh)}
.tree .pil h4{margin:0;font-size:13.5px;font-weight:600;display:flex;align-items:center;gap:8px}
.tree .pil h4 .fold{margin-left:auto;width:22px;height:22px;border-radius:6px;border:1px solid var(--line);background:var(--card);font-family:"Geist Mono",monospace;font-size:13px;color:var(--mute);display:grid;place-items:center;padding:0}
.tree .pil .m{font-size:11.5px;color:var(--mute);margin:2px 0 8px}
.tree .segb{display:flex;height:4px;border-radius:2px;overflow:hidden;gap:1px;margin-bottom:8px;background:#ECECE8}
.tree .segb i{display:block;height:100%}
.tree .art{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;border:1px solid transparent;font-size:12.5px;cursor:pointer;width:100%;background:none;text-align:left;font-family:inherit;color:inherit}
.tree .art:hover{background:var(--card2)}.tree .art.on{border-color:var(--ink)}
.tree .art .tt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tree .art .q{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute)}
.tree .pil.folded .arts{display:none}
/* explorateur en colonnes */
.cols3{display:grid;grid-template-columns:250px minmax(0,1fr) 290px;border:1px solid var(--line);border-radius:var(--r2);overflow:hidden;background:var(--card)}
.cols3 .col{border-right:1px solid var(--line);min-height:340px;display:flex;flex-direction:column}
.cols3 .col:last-child{border-right:0}
.cols3 .colhd{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);font-weight:600;padding:10px 12px;border-bottom:1px solid var(--line);background:#FAFAF8;display:flex;gap:6px}
.cols3 .colhd .n{margin-left:auto;font-family:"Geist Mono",monospace;font-weight:400;color:var(--mute)}
.prow{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid #F0F0EC;background:none;padding:10px 12px;font:inherit;color:inherit;cursor:pointer}
.prow:hover{background:#FAFAF8}.prow.sel{background:var(--acc-soft)}
.prow .nm{display:flex;align-items:center;gap:8px;font-weight:600;font-size:13px}
.prow .nm .qb{margin-left:auto;font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);font-weight:400}
.prow .meta{font-size:11.5px;color:var(--mute);margin-top:2px}
.prow .mini{display:flex;height:3px;margin-top:6px;border-radius:2px;overflow:hidden;background:#ECECE8}
.arow{display:flex;align-items:center;gap:9px;width:100%;text-align:left;border:0;border-bottom:1px solid #F0F0EC;background:none;padding:9px 12px;font:inherit;color:inherit;cursor:pointer;font-size:13px}
.arow:hover{background:#FAFAF8}.arow.sel{background:var(--acc-soft)}
.arow .tx{flex:1;min-width:0}.arow .tx b{font-weight:500;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.arow .tx small{color:var(--mute);font-size:11.5px}
.arow .m{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);white-space:nowrap}
.fiche{padding:14px}
.fiche h2{font-size:16px;margin:8px 0 4px;letter-spacing:-.01em}
.fiche .path{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);word-break:break-all}
.fiche .rows{margin:12px 0}.fiche .r{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px dashed var(--line);font-size:12.5px}.fiche .r .k2{color:var(--mute)}.fiche .r .v{font-family:"Geist Mono",monospace}
.fiche .empty{padding:30px 12px}
/* frise de cadence */
.friz svg{display:block;width:100%;height:auto}
.cadrow{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:10px;align-items:center;padding:9px 0;border-bottom:1px solid #F0F0EC;font-size:13px;cursor:pointer}
.cadrow:hover{background:#FAFAF8}
.cadrow .w{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute)}
.cadrow .m{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute)}
/* registre des cibles (autorité) */
.lrow,.acc>summary.lrow{display:grid;grid-template-columns:30px minmax(0,1fr) auto auto 18px;gap:12px;align-items:center;padding:12px 14px;cursor:pointer}
.lrow .rk{font-family:"Geist Mono",monospace;font-size:12px;color:var(--faint)}
.lrow .cid{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}.lrow .cid b{font-weight:600;white-space:nowrap}
.lrow .proof{display:flex;align-items:center;gap:8px}
.dstrip{display:inline-flex;gap:3px}.dstrip i{width:8px;height:8px;border-radius:50%;background:#ECECE8;border:1px solid var(--line)}.dstrip i.on{background:var(--violet);border-color:var(--violet)}
.lrow .pn{font-family:"Geist Mono",monospace;font-size:12px}.lrow .pn small{color:var(--mute);font-size:10.5px}
.lrow .cst{display:flex;align-items:center;gap:8px;justify-self:end}
.mchip{font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--mute);background:var(--card2);border-radius:999px;padding:3px 9px;white-space:nowrap}
.kitslot{display:grid;grid-template-columns:150px 1fr;gap:8px 12px;align-items:center;font-size:12px;color:var(--mute);margin:6px 0}
.kitslot i{display:block;height:9px;border-radius:5px;background:repeating-linear-gradient(90deg,#ECECE8 0 6px,transparent 6px 8px)}
/* ticket prestataire */
.ticket .top{position:static}
.ticket .ro{margin-left:auto;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--mute);border:1px solid var(--line);border-radius:999px;padding:4px 10px;background:var(--card2)}
.ticket .wrap{max-width:760px}
.ticket .sec{margin-top:22px}
.ticket .card p{margin:0 0 8px;font-size:13.5px;max-width:62ch}.ticket .card p:last-child{margin-bottom:0}
.plist{list-style:none;padding:0;margin:0}.plist li{font-family:"Geist Mono",monospace;font-size:12px;padding:6px 0;border-bottom:1px dashed var(--line);overflow-wrap:anywhere}.plist li:last-child{border-bottom:0}
.tfootnote{margin-top:26px;padding-top:12px;border-top:1px solid var(--line);font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);line-height:1.9}.tfootnote b{color:var(--ink);font-weight:500}
.raw.code{max-height:280px;overflow:auto;font-size:11.5px;white-space:pre}
.watchbox .row{display:flex;gap:26px;flex-wrap:wrap}
.watchbox .cell .rank{margin:0}
.promise{display:flex;align-items:center;gap:10px;border:1px dashed var(--line);border-radius:var(--r2);padding:12px 16px;font-size:12.5px;color:var(--mute);background:var(--card)}
.promise b{color:var(--ink);font-weight:500}
.excard{position:relative;opacity:.6;pointer-events:none}
.exbadge{position:absolute;top:-10px;right:12px;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ocre);border:1px solid currentColor;border-radius:999px;padding:2px 8px;background:var(--card);font-weight:600}
@container page (max-width:980px){.tiles{grid-template-columns:1fr}.cols3{grid-template-columns:1fr}.cols3 .col{border-right:0;border-bottom:1px solid var(--line);min-height:0}}
@container page (max-width:600px){
  .acard{grid-template-columns:3px minmax(0,1fr) auto;grid-template-areas:"t b w" "t m m" "t x x";gap:8px 10px}
  .acard .rk{display:none}.acard .tick{grid-area:t}.acard .t{grid-area:b}.acard .why{grid-area:w}.acard .btn{grid-area:x;justify-self:end}
  .loop{grid-template-columns:1fr}.loop button+button{border-left:0;border-top:1px solid var(--line)}
  .acc>summary{grid-template-columns:14px minmax(0,1fr) 18px}.acc>summary .rn{display:none}.acc>summary .pill{grid-column:2}.acc .body{padding-left:16px}
  .bands .axis{margin-left:90px}.brow{grid-template-columns:80px 1fr}.brow .val{grid-column:2}
  .lrow,.acc>summary.lrow{grid-template-columns:minmax(0,1fr) 18px}.lrow .rk{display:none}.lrow .proof,.lrow .cst{grid-column:1;justify-self:start}
  .abar .st{display:none}
}
@media (max-width:600px){.abar .in{padding:10px 14px}}

/* sous-titre de page (une ligne fine sous le verdict ; défini page par page en M2 et M3, gravé au kit en M4) */
.sub{font-size:15px;color:var(--mute);margin:-18px 0 26px;max-width:800px}
.sub b{color:var(--ink);font-weight:500}
@container page (max-width:980px){.sub{margin-top:8px}}
/* le point de famille, partout où une question porte sa famille */
.fd{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--faint);flex:none;vertical-align:middle}
.fd.brand{background:var(--fam-brand)}.fd.bofu{background:var(--fam-bofu)}.fd.mofu{background:var(--fam-mofu)}.fd.tofu{background:var(--fam-tofu)}

/* ─── 11b. vos actions servies par l'app (plan 4.5b-5, S229, cadrage docs/cadrage-s221-app-etat-mesure.md) : le plan, les chantiers
   technique et autorité, le ticket prestataire sur les vraies données. Les règles de page des prototypes m3-plongees/actions.html,
   technique.html, autorite.html et prestataire.html reprises ici sous préfixe ac- (leçon S160c : .sec et .switch existent déjà). ─── */
.ac-sec{margin-bottom:26px}
.ac-tabs{overflow-x:auto;scrollbar-width:none}.ac-tabs::-webkit-scrollbar{display:none}
.ac-tabs a{white-space:nowrap;flex:none}
@container page (max-width:600px){.ac-tabs a{padding:10px 10px}}
.ac-top{margin-top:26px}
.ac-pk{margin-top:18px}
.ac-m0{margin:0}
.ac-u{text-decoration:underline;text-underline-offset:3px}
.ac-kx{letter-spacing:0;text-transform:none;font-weight:400;color:var(--mute)}
.verdict .ac-vlink{font:inherit;color:var(--acc);padding:0;border:0;background:none;cursor:pointer;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:5px}
.verdict .ac-vlink.no{color:var(--mute)}
.qhead .ac-meth{margin-left:auto}
.ac-plus{font-family:"Geist Mono",monospace;font-size:11px;align-self:center;margin-left:2px}
.ac-ck{margin:2px 0 0}
.ac-prom{display:grid;gap:8px}
.ac-gate{max-width:620px}
.ac-ul{margin:8px 0 16px;padding-left:18px;font-size:13.5px}.ac-ul li{margin:4px 0}
/* le chantier technique : le ruban des règles, le snippet, la mise en ligne, le ticket */
.ac-strip{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.ac-strip .ac-cnt{font-family:"Geist Mono",monospace;font-size:13px}
.ac-strip .ac-leg{margin:0}
.ac-pre{margin-top:10px}
.ac-row{margin-top:8px}
.ac-urls{margin:0 0 10px;overflow-wrap:anywhere}
.ac-ok{font-family:"Geist Mono",monospace;font-size:11px;color:var(--acc);opacity:0;transition:.25s}.ac-ok.on{opacity:1}
.ac-prof{font-size:12.5px;color:var(--mute);margin:0 0 8px}.ac-prof b{color:var(--ink);font-weight:500}
details.ac-wp>summary,details.ac-kit>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:8px;font-weight:500;font-size:13px;padding:8px 12px;border:1px solid var(--line);border-radius:999px;background:var(--card)}
details.ac-wp>summary::-webkit-details-marker,details.ac-kit>summary::-webkit-details-marker,details.ac-fold>summary::-webkit-details-marker{display:none}
details.ac-wp[open]>summary,details.ac-kit[open]>summary{border-color:var(--ink)}
details.ac-wp .olist{margin-top:10px}
.ac-pride{display:block;margin:4px 0 0}
.why.ac-tip{display:inline-grid;width:20px;height:20px;font-size:11px;vertical-align:middle;margin-left:4px;position:static}
/* la bulle d'une règle s'ouvre sous sa ligne, sur toute sa largeur : accrochée au bouton, elle sortait de l'écran au téléphone */
.rrow:has(.ac-tip){position:relative}
.why.ac-tip .pop{left:0;right:0;width:auto;top:calc(100% - 2px)}.why.ac-tip .pop:after{display:none}
.ac-end{display:flex;align-items:center;gap:14px;margin-top:26px;flex-wrap:wrap}
.ac-switch{margin-left:auto;text-decoration:underline;text-underline-offset:3px;color:var(--mute);font-size:13px}
/* le chantier autorité : l'axe commun des preuves, la traîne, les sources de contexte, le journal, le kit d'outreach à venir */
.ac-axcap{font-size:12px;color:var(--mute);margin:0 0 10px}
.ac-tail{font-size:12.5px;color:var(--mute);margin-top:6px}
.acc .body.ac-tbody{padding-left:16px}
.ac-tbody .mchip{white-space:normal}
.ac-line{margin:0 0 8px}
.ac-ecart{margin-left:auto;color:var(--hot)}
details.ac-kit{margin-top:14px}
.ac-kitin{margin-top:10px;padding:12px 14px;border:1px dashed var(--line);border-radius:12px}
.kitslot i.ac-w60{width:60%}.kitslot i.ac-w75{width:75%}.kitslot i.ac-w85{width:85%}.kitslot i.ac-w95{width:95%}
details.ac-fold{margin-top:14px}
details.ac-fold>summary{list-style:none;cursor:pointer;font-size:13px;color:var(--mute);text-decoration:underline;text-underline-offset:3px;display:inline}
.ac-ctx{display:grid;gap:8px;margin-top:10px}
.ac-ctx .card{padding:12px 16px;font-size:13px}
.ac-ctx .card p{margin:6px 0 0;color:var(--mute)}
.ac-ctxr{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-weight:600}
.ac-pn{margin-left:auto;font-family:"Geist Mono",monospace;font-weight:400;font-size:12px}
.ac-jcard{margin-top:10px}
/* le ticket prestataire : le titre, la ligne de provenance, la copie d'un bloc */
.ac-title{font-size:clamp(22px,3vw,28px);line-height:1.2;letter-spacing:-.02em;font-weight:600;margin:6px 0 10px}
.ac-from{font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);display:flex;gap:8px;flex-wrap:wrap}
.ac-copyrow{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.ac-gone{margin-top:40px}

/* ─── 11c. l'atelier et le chantier contenu servis par l'app (plan 4.5b-6, S230, cadrage docs/cadrage-s221-app-etat-mesure.md, R5) :
   les règles de page des prototypes m3-plongees/atelier.html et contenu.html reprises ici sous préfixe at- (leçon S160c : .sec,
   .chips, .sub, .share, .thin et .title sont des mots courts déjà pris ou trop exposés). ─── */
/* l'atelier : la tête, les trois couches (la preuve, la cause supposée, l'effet), le travail préparé, la barre */
.at-wrap{max-width:860px;padding-bottom:140px}
.at-chips{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.at-chips .pill .pd{margin-right:2px;vertical-align:0}
.mchip.at-stale{color:var(--ocre)}
.at-title{font-size:clamp(22px,3vw,30px);line-height:1.18;letter-spacing:-.02em;font-weight:600;margin:0 0 10px;overflow-wrap:anywhere}
.at-obs{font-size:15px;color:var(--mute);max-width:70ch;margin:0}
.at-meta{margin-top:10px;font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);display:flex;gap:8px;flex-wrap:wrap}
.at-sec{margin-top:26px}
.at-sec .qhead{margin-bottom:8px;flex-wrap:wrap}
.at-tag{margin-left:auto;white-space:normal}
.at-hyp{margin:0;font-size:14px;max-width:70ch}
/* la place du jugement de la page (2.6) : réservée, vide, jamais simulée */
.at-juge{display:flex;gap:12px;align-items:flex-start;margin-top:14px;padding:12px 14px;border:1px dashed var(--line);border-radius:12px}
.at-juge b{display:block;font-weight:600;font-size:13.5px}.at-juge span:not(.pill){font-size:12.5px;color:var(--mute)}
.at-juge .pill{flex:none}
.at-vgrid{display:flex;gap:18px;align-items:center}
.at-vt b{display:block;font-size:15px;font-weight:600}.at-vt span{display:block;font-size:12.5px;color:var(--mute)}
.at-ver{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:12px 0 0}
.at-share{margin-top:12px;border-top:1px dashed var(--line);padding-top:10px;font-size:12.5px;color:var(--mute)}.at-share b{color:var(--ink);font-weight:500}
.at-lead{font-size:13.5px;margin:0 0 8px}.at-lead b{font-weight:600}
.at-bitem{display:grid;grid-template-columns:28px 1fr;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}
.at-bitem:last-of-type{border-bottom:0}
.at-bitem .n{font-family:"Geist Mono",monospace;font-size:11px;color:var(--faint);padding-top:3px}
.at-bitem h4{margin:0;font-size:14px;font-weight:600}.at-bitem p{margin:3px 0 0;font-size:13px;color:var(--mute)}
.at-thin{margin-top:14px;font-size:12.5px;color:var(--mute);display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.at-thin .btn.link{padding:0;font-size:12.5px}
.at-aid{padding-top:6px;padding-bottom:6px}
.at-arow{display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}
.at-aid .at-arow:last-child{border-bottom:0}
.at-ic{width:32px;height:32px;border-radius:9px;background:var(--card2);display:grid;place-items:center;color:var(--mute);font-size:14px}
.at-t b{display:block;font-weight:600;font-size:13.5px}.at-t span{font-size:12px;color:var(--mute)}
.olist.at-steps{padding:4px 0 10px 44px;border-bottom:1px solid var(--line)}
.at-link{width:100%;font-family:"Geist Mono",monospace;font-size:12px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:var(--card2);margin:4px 0 6px}
.qrow.at-qrow{grid-template-columns:minmax(0,1fr) auto}
.at-eng{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);white-space:nowrap}.at-eng b{font-family:Geist,system-ui,sans-serif;font-weight:500;color:var(--ink);margin-right:4px}
.menu .at-danger{color:var(--hot)}
.at-m0b{margin:0 0 10px}
/* le chantier contenu : la barre de l'explorateur, la recherche, la fiche sous la carte, le chemin, les deux cartes du bas */
.headrow.at-headrow .btn{flex:none;margin-top:8px}
/* empilé (≤ 980 px, §6) : la marge du titre, l'écart de la colonne et celle du bouton s'additionnaient (58 px de vide) */
@container page (max-width:980px){.headrow.at-headrow{gap:14px}.headrow.at-headrow .verdict{margin-bottom:0}.headrow.at-headrow .btn{margin-top:0}}
.at-explbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.at-cnt{font-size:12px;color:var(--mute)}
.search.at-search{margin-left:auto;width:280px;max-width:100%}
.tree .art.at-dim{opacity:.35}
/* un pilier garde sa largeur : sans min-width:0, son plus long titre l'élargissait (458 px au lieu de 236) et l'ellipse ne jouait jamais (S230) */
.tree .pil{min-width:0}.tree .art{min-width:0}
@container page (max-width:600px){.tree .pil{flex-basis:84%}}
.at-mapfiche{margin-top:14px;max-width:520px;padding:0}
.at-path{font-size:12.5px;color:var(--mute);margin-top:10px;overflow-wrap:anywhere}.at-path b{color:var(--ink);font-weight:500}
.elegend .at-legr{margin-left:auto}
.grid2.at-charts{align-items:start}
.at-venn svg{display:block;width:100%;max-width:320px;height:auto;margin:6px auto}
.at-venn p{margin:6px 0 0;font-size:13.5px}
.fiche .r .v.at-vtxt{font-family:Geist,system-ui,sans-serif;text-align:right}
a.cadrow{color:inherit;text-decoration:none}
.at-charts .cadrow{grid-template-columns:62px minmax(0,1fr) auto}
/* les segments d'un pilier dans l'explorateur : le prototype les posait en ligne, sans largeur (S230) */
.prow .mini i{display:block;height:100%}
@container page (max-width:600px){
  .at-arow{grid-template-columns:32px minmax(0,1fr)}.at-arow .btn,.at-arow .pill{grid-column:2;justify-self:start}
  .at-vgrid{flex-direction:column;align-items:flex-start}
  .at-tag{margin-left:0}
  .search.at-search{margin-left:0;width:100%}
  .elegend .at-legr{margin-left:0}
  .olist.at-steps{padding-left:0}
}

/* ─── 12. réglages (M4) : sections voisines, quota, méta, avis, listes éditables, propositions, concurrents, facturation, compte, journal, méthode ─── */
.voisins a i.corpus{background:var(--acc)}.voisins a i.motscles{background:var(--ocre)}.voisins a i.concurrents{background:var(--hot)}.voisins a i.facturation{background:var(--violet)}.voisins a i.compte{background:var(--ink)}
/* jauge de quota : se calibre à l'entrée, ocre à 90 %, vermillon au complet */
.quota{display:inline-flex;align-items:center;gap:10px;font-family:"Geist Mono",monospace;font-size:12px;color:var(--mute);white-space:nowrap}
.quota .bar{width:150px;max-width:40vw;height:6px;border-radius:3px;background:#EFEFEB;overflow:hidden;flex:none}
.quota .bar i{display:block;height:100%;border-radius:3px;background:var(--acc);width:0;transition:width .8s var(--ease) .15s}
.quota .bar i.warn{background:var(--ocre)}.quota .bar i.full{background:var(--hot)}
.quota b{color:var(--ink);font-weight:500}
/* ligne de méta mono sous le verdict */
.metaline{display:flex;gap:8px 22px;flex-wrap:wrap;align-items:center;margin:-14px 0 18px;font-family:"Geist Mono",monospace;font-size:12px;color:var(--mute)}
.metaline b{color:var(--ink);font-weight:500}
/* avis : une ligne à filet coloré, une phrase, un bouton */
.notice{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 18px;padding:12px 16px;background:var(--card);border:1px solid var(--line);border-left:3px solid var(--ocre);border-radius:var(--r2);font-size:13.5px;box-shadow:var(--sh)}
.notice.hot{border-left-color:var(--hot)}.notice.acc{border-left-color:var(--acc)}.notice.violet{border-left-color:var(--violet)}
.notice .t{flex:1;min-width:220px}.notice .t b{font-weight:600}
/* en-tête de section : titre, indice mono, filtre, archives */
.shead{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:26px 0 8px}
.shead h3{margin:0;font-size:14.5px;font-weight:600}
.shead .hint{font-family:"Geist Mono",monospace;font-size:11px;color:var(--faint)}
.shead .sp{flex:1}
/* la ligne d'ajout */
.addrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;margin:18px 0 0}
.addrow input[type=text]{border-radius:999px;padding:10px 16px}
/* ligne de question éditable : famille, texte, âge, retirer au survol */
.qedit{display:grid;grid-template-columns:10px minmax(0,1fr) auto auto;gap:12px;align-items:center;padding:10px 10px;border-bottom:1px solid var(--line);font-size:13.5px;border-radius:10px;transition:background .12s}
.qedit:hover{background:var(--card2)}
.qedit .fd{width:8px;height:8px;border-radius:50%;background:var(--faint)}
.qedit .fd.brand{background:var(--fam-brand)}.qedit .fd.bofu{background:var(--fam-bofu)}.qedit .fd.mofu{background:var(--fam-mofu)}.qedit .fd.tofu{background:var(--fam-tofu)}
.qedit .tx{min-width:0}.qedit .tx small{display:block;color:var(--mute);font-size:12px}
.qedit .age{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);white-space:nowrap}
.qedit .rm{opacity:0;transition:opacity .12s}
.qedit:hover .rm,.qedit .rm:focus-visible{opacity:1}
.qedit.new{animation:slide .5s var(--ease)}
.qedit.ro{grid-template-columns:10px minmax(0,1fr) auto}
@media(hover:none){.qedit .rm,.crow .rm,.drow .btn{opacity:1}}
/* archives (panneau) */
.archrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.archrow .tx b{display:block;font-weight:500}.archrow .tx span{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute)}
/* position d'un mot-clé */
.posc{font-family:"Geist Mono",monospace;font-weight:500;font-size:13px;white-space:nowrap}
.posc.top{color:var(--acc)}.posc.abs{color:var(--faint);font-weight:400;font-size:11px}
/* propositions : grappes « même besoin », à cocher */
.cand .row{display:grid;grid-template-columns:18px minmax(0,1fr) auto minmax(0,220px) auto;gap:12px;align-items:center;padding:9px 6px;border-bottom:1px solid var(--line);font-size:13.5px}
.cand .row.member{padding-left:34px;color:var(--mute)}
.cand .row input{width:16px;height:16px;accent-color:var(--acc);margin:0}
.cand label.row{cursor:pointer}
.cand .who{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cand .n{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);white-space:nowrap}
.followbar{display:flex;justify-content:flex-end;align-items:center;gap:12px;flex-wrap:wrap;padding-top:12px;margin-top:6px;border-top:1px solid var(--line)}
.followbar .note{margin:0;flex:1}
/* pastille-lettre : le favicon des prototypes (prod : proxy maison) */
.fav{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:5px;font-size:10px;font-weight:700;color:#fff;flex:none;font-family:"Geist Mono",monospace;text-transform:uppercase;line-height:1}
/* concurrent suivi : ligne dépliable, origine, preuve, propriétés */
.crow{border-bottom:1px solid var(--line)}
.crow .head{display:grid;grid-template-columns:18px minmax(150px,1fr) minmax(0,auto) auto auto auto;gap:12px;align-items:center;padding:11px 8px;font-size:13.5px;border-radius:10px;transition:background .12s}
.crow .src{min-width:0;overflow:hidden;text-overflow:ellipsis}
.crow .head:hover{background:var(--card2)}
.crow .nm{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.crow .nm b{font-weight:600}.crow .nm small{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);margin-left:8px}
.crow .proof{font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);white-space:nowrap}.crow .proof b{color:var(--ink);font-weight:500}
.crow .rm{opacity:0;transition:opacity .12s}.crow .head:hover .rm,.crow .rm:focus-visible{opacity:1}
.crow .props{display:none;padding:4px 8px 14px 38px}
.crow.open .props{display:block}
.crow.open .head{background:var(--card2)}
.prop{display:grid;grid-template-columns:130px minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:7px 0;font-size:13px;border-bottom:1px dashed var(--line)}
.prop .k2{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute)}
.prop .v{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.propadd{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center;margin-top:10px}
.propadd select,.propadd input[type=text]{border-radius:10px;padding:8px 11px;font-size:13px}
/* le terrain mesuré, non suivi */
.drow{display:grid;grid-template-columns:18px minmax(0,1fr) auto auto;gap:12px;align-items:center;padding:9px 6px;border-bottom:1px solid var(--line);font-size:13.5px}
.drow:last-child{border-bottom:0}
.drow .dm{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.drow .pf2{font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);white-space:nowrap}.drow .pf2 b{color:var(--ink);font-weight:500}
.drow .btn{opacity:0;transition:opacity .12s}.drow:hover .btn,.drow .btn:focus-visible{opacity:1}
/* aperçu des mentions avant validation */
.pvbox{background:var(--card2);border-radius:12px;padding:12px 14px;margin:6px 0 14px;font-size:13px}
.pvbox .n{font-family:"Geist Mono",monospace;font-weight:500}
.pvbox .s{display:block;margin-top:8px;padding-left:10px;border-left:2px solid var(--faint);color:var(--mute);font-size:12.5px;line-height:1.5}
/* facturation : la configuration en clair */
.price{font-family:"Geist Mono",monospace;font-size:34px;font-weight:500;letter-spacing:-.03em;line-height:1;margin:10px 0 4px;font-variant-numeric:tabular-nums}
.price small{font-size:13px;color:var(--mute);font-weight:400;letter-spacing:0;margin-left:6px}
.cfg{display:flex;gap:6px 8px;flex-wrap:wrap;margin-top:12px}
.formula{font-family:"Geist Mono",monospace;font-size:12px;color:var(--mute);margin-top:12px;line-height:1.8}
.formula b{color:var(--ink);font-weight:500}
.orghd{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.orghd h3{margin:0;font-size:15px;font-weight:600}
.orghd .meta{margin-left:auto;font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute)}
/* compte : blocs, sessions, gestes rares repliés */
.blk{margin-bottom:18px}
.blk h3{margin:0 0 4px;font-size:14.5px;font-weight:600}
.blk .lead2{font-size:13px;color:var(--mute);margin:0 0 14px;max-width:60ch}
.blk .field{max-width:420px}
.blk .acts2{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:4px}
.sessrow{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.sessrow .dev{min-width:0}
.sessrow .when{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);white-space:nowrap}
.disclose{margin-top:14px;padding-top:14px;border-top:1px dashed var(--line)}
/* journal des nouveautés */
.entry{margin-bottom:14px}
.entry .d{font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute)}
.entry h2{font-size:18px;letter-spacing:-.015em;margin:6px 0 8px;font-weight:600}
.entry p{margin:0 0 10px;font-size:14px;line-height:1.6;max-width:70ch}
.entry p:last-child{margin-bottom:0}
/* méthode : les croyances au banc d'essai */
.refus{margin-bottom:12px}
.refus .croy{font-size:16px;font-weight:600;letter-spacing:-.01em;margin:0 0 8px}
.refus .croy:before{content:"« "}.refus .croy:after{content:" »"}
.refus p{margin:8px 0 0;font-size:13.5px;max-width:70ch}
.refus .preuve{margin-top:10px;padding-top:8px;border-top:1px dashed var(--line);font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute)}
.refus .preuve a{text-decoration:underline;text-underline-offset:3px}
.tag.hot{color:var(--hot);border-color:var(--hot)}.tag.ocre{color:var(--ocre);border-color:var(--ocre)}
.filtre ol{margin:8px 0 0 18px;padding:0;font-size:13.5px;line-height:1.7}
.rdgrid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start}
@container page (max-width:980px){.rdgrid{grid-template-columns:minmax(0,1fr)}}
@container page (max-width:600px){
  .metaline{gap:6px 14px;margin-top:-6px}
  .quota{white-space:normal;flex-wrap:wrap;row-gap:4px}.quota .bar{width:110px}
  .addrow{grid-template-columns:1fr}.addrow .btn{justify-content:center}
  .qedit{grid-template-columns:10px minmax(0,1fr) auto}.qedit .age{grid-column:2}.qedit .rm{opacity:1}
  .qedit.ro{grid-template-columns:10px minmax(0,1fr)}.qedit.ro .age{grid-column:2}
  .cand .row{grid-template-columns:18px minmax(0,1fr) auto}.cand .who,.cand .n{display:none}
  .crow .head{grid-template-columns:18px minmax(0,1fr) auto}.crow .proof,.crow .src{grid-column:2}.crow .rm{opacity:1}.crow .props{padding-left:8px}
  .prop{grid-template-columns:minmax(0,1fr) auto}.prop .k2{grid-column:1/-1}
  .propadd{grid-template-columns:1fr}
  .drow{grid-template-columns:18px minmax(0,1fr) auto}.drow .pf2{grid-column:2}.drow .btn{opacity:1}
  .sessrow{grid-template-columns:minmax(0,1fr) auto}.sessrow .when{grid-column:1}
  .price{font-size:28px}
  .orghd .meta{margin-left:0;width:100%}
}

/* ─── 12b. réglages de la mesure servis par l'app (plan 4.5b-4, S227, cadrage S221 R4) : les pages de section 12 sur les vraies
   données. Préfixe rg- (leçon S160c) ; les composants de la section 12 restent ceux du prototype. ─── */
.rg-wrap{max-width:1040px}
.rg-famleg{display:flex;gap:14px;flex-wrap:wrap;font-size:11.5px;color:var(--mute);margin-top:14px}
.rg-famleg span{display:inline-flex;align-items:center;gap:6px}
.archrow .rg-fd{margin-right:8px}
.note.rg-err{color:var(--hot)}
.card.rg-card2{margin-top:18px}
/* les mots-clés suivis : la table du kit, le départ en mono, retirer au survol ; deux colonnes tombent au téléphone */
/* « .posc.top » du prototype prenait le fond de la barre haute « .top » (septième collision, S227) : le rang au top 10 est .rg-t10 */
.posc.rg-t10{color:var(--acc)}
.tbl td.rg-kw{font-weight:500}
.tbl td.rg-m{font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);white-space:nowrap}
.tbl td.rg-rmc{text-align:right;width:70px}
.tbl td.rg-rmc .rm{opacity:0;transition:opacity .12s}
.tbl tr:hover td.rg-rmc .rm,.tbl td.rg-rmc .rm:focus-visible{opacity:1}
@media(hover:none){.tbl td.rg-rmc .rm{opacity:1}}
.tbl .rg-more button{border:0;background:none;color:var(--acc);font-weight:500;font-size:12.5px;padding:6px 10px}
.rg-search{width:200px;border-radius:999px;padding:7px 13px;font-size:13px}
/* les propositions : grappes, mesure en cours, relance */
.cand .rg-cl{border-top:1px dashed var(--line)}.cand .rg-cl:first-of-type{border-top:0}
.rg-prog{display:flex;align-items:center;gap:12px;margin-top:10px;font-size:13px;color:var(--mute)}
.rg-prog .rg-bar{flex:1;max-width:260px;height:6px;background:#EFEFEB;border-radius:3px;overflow:hidden}
.rg-prog .rg-bar i{display:block;height:100%;background:var(--acc)}
.rg-genl{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:18px}
.rg-genl .t{flex:1;min-width:240px;font-size:13.5px}
.rg-genl .t b{font-weight:600}
/* vos concurrents : la page s'élargit pour la colonne de côté ; le favicon remplace la pastille-lettre une fois chargé */
.rg-wrap.rg-large{max-width:1100px}
.rg-favw{display:inline-grid;place-items:center;width:18px;height:18px;flex:none}
.rg-fav{width:18px;height:18px;border-radius:5px;object-fit:contain}
.rg-side .card{margin-bottom:18px}
.rg-side .prop{grid-template-columns:minmax(0,1fr) auto auto}.rg-side .prop .k2{grid-column:1/-1;padding-top:2px}
.rg-side .propadd{grid-template-columns:1fr}
.rg-side .drow{grid-template-columns:minmax(0,1fr) auto;row-gap:4px}.rg-side .drow .pf2{grid-column:1/-1;white-space:normal;line-height:1.5}
.rg-side .drow .btn{opacity:1}
.crow .props .k.rg-k{margin:14px 0 4px}.crow .props .k.rg-k:first-child{margin-top:4px}
.crow .props .rg-avis{margin:0 0 6px;color:var(--ocre)}
.prop.rg-prop .v{white-space:normal}
.propadd.rg-gradd{grid-template-columns:minmax(0,1fr) auto}
.rg-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--ocre);margin-right:6px;vertical-align:middle}
.rg-lien{text-decoration:underline;text-underline-offset:3px}
.modal .rg-field{margin-bottom:10px;text-align:left}
.modal .rg-field input{width:100%}
/* la méthode et les nouveautés servies par l'app : filtre par verdict, lecture de l'instrument, journal étroit */
.rg-wrap.rg-etroit{max-width:760px}
.rg-mside{position:sticky;top:78px}
.rg-mside .card{margin-bottom:14px}
.rg-vcount{display:flex;flex-direction:column;gap:8px}
.rg-vcount button{display:flex;align-items:center;gap:10px;border:1px solid var(--line);background:var(--card);border-radius:12px;padding:9px 12px;font-size:13px;text-align:left;width:100%}
.rg-vcount button:hover{border-color:var(--faint)}
.rg-vcount button.on{border-color:var(--ink)}
.rg-vcount button b{margin-left:auto;font-family:"Geist Mono",monospace;font-weight:500}
.rg-vcount .tag{flex:none}
.refus.rg-cache{display:none}
.rg-h2{font-size:20px;letter-spacing:-.015em;margin:34px 0 14px;font-weight:600}
.card.rg-lecture{margin-bottom:14px}
.card.rg-lecture h2{font-size:15px;margin:0 0 8px;font-weight:600}
.card.rg-lecture p,.card.rg-lecture li{font-size:13.5px;line-height:1.6;max-width:78ch}
.card.rg-lecture ul{margin:8px 0 0 18px;padding:0}
.rg-jline{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin:0 0 22px;font-size:12.5px;color:var(--mute)}
@container page (max-width:980px){.rg-mside{position:static}}
/* au téléphone, la ligne d'un concurrent : le nom, « détails » et « retirer » sur une ligne, la preuve dessous, repliée */
@container page (max-width:600px){
  .crow .head{grid-template-columns:18px minmax(0,1fr) auto auto}
  .crow .head .rg-vide{display:none}
  .crow .head .pp{grid-row:1;grid-column:3}
  .crow .head .rm{grid-row:1;grid-column:4}
  .crow .head .proof{grid-row:2;grid-column:2/-1;white-space:normal}
  .drow .pf2{white-space:normal}
}
@container page (max-width:600px){.tbl .rg-chs,.tbl .rg-chd{display:none}.tbl td.rg-rmc .rm{opacity:1}.rg-search{width:100%}}

/* ─── 13. staff (M5) : restyle léger de la console interne, flux intact ─── */
.staffchip{background:var(--hot-soft);border-color:var(--hot);color:var(--hot);font-weight:600}
.staffchip .sw{background:var(--hot)}
/* formulaire en ligne : libellés au-dessus, champs courts, bouton en fin */
.sform{display:flex;gap:10px 12px;flex-wrap:wrap;align-items:flex-end;margin:0 0 6px}
.sform label{display:flex;flex-direction:column;gap:4px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--mute);font-weight:600}
.sform label input[type=text],.sform label input[type=email],.sform label input[type=number],.sform label select{min-width:180px;width:auto;font-size:13px;padding:8px 11px;letter-spacing:0;text-transform:none;font-weight:400}
.sform label.chk{flex-direction:row;align-items:center;gap:7px;padding-bottom:10px;text-transform:none;letter-spacing:0;font-size:12.5px;font-weight:500}
.sform .btn{align-self:flex-end}
/* mot de passe affiché une seule fois */
.pw{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:12px 0 0;padding:12px 16px;border:1px solid var(--hot);border-radius:var(--r2);background:var(--hot-soft);font-size:13px}
.pw .k2{font-family:"Geist Mono",monospace;font-size:14px;font-weight:500;user-select:all;padding:4px 10px;background:var(--card);border-radius:8px;border:1px solid var(--line)}
/* bloc d'organisation et ligne de marque du parc */
.orgblk{border-top:1px solid var(--line);padding:14px 0 6px;margin-top:8px}
.orgblk:first-child{border-top:0;padding-top:0;margin-top:0}
.orgblk .oh{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.orgblk .oh b{font-size:14.5px}
.orgblk .oh select{width:auto;font-size:12px;padding:5px 9px;border-radius:9px;max-width:100%}
.orgblk .oh .members{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.srow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 0;border-top:1px dashed var(--line);font-size:13.5px}
.srow .bname{font-weight:600;min-width:120px}
.srow .bdom{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute)}
.srow .sp{margin-left:auto}
.srow .est{font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--mute)}
.srow label.cap{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--mute)}
.srow label.cap input{width:64px;padding:5px 8px;font-size:12px;border-radius:8px}
/* jours de cadence */
.days{display:inline-flex;gap:2px}
.days label{display:flex;flex-direction:column;align-items:center;gap:2px;font-family:"Geist Mono",monospace;font-size:10px;color:var(--mute);padding:2px 4px;cursor:pointer}
.days input{width:14px;height:14px;accent-color:var(--acc);margin:0}
/* ligne de retour client, de relecture */
.frow2{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;padding:11px 0;border-top:1px dashed var(--line);font-size:13.5px}
.frow2 .msgt{flex:1;min-width:220px;white-space:pre-wrap}
.frow2 .meta{font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--mute);margin-top:3px;display:block}
.frow2 .acts3{display:flex;gap:8px;align-items:center;margin-left:auto}
/* questions d'une spec générée, par famille */
.specfam{font-family:"Geist Mono",monospace;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--mute);display:flex;align-items:center;gap:8px;margin:14px 0 4px}
.specq{padding:5px 0 5px 16px;font-size:13px;border-top:1px solid #F0F0EC}
@container page (max-width:600px){
  .sform label input[type=text],.sform label input[type=email],.sform label select{min-width:0;width:100%}.sform label{width:100%}.sform .btn{width:100%;justify-content:center}
  .srow .sp{margin-left:0;flex-basis:100%;height:0}.srow .bname{min-width:0}
  .frow2 .acts3{margin-left:0}
  .orgblk .oh .members{white-space:normal}
}

/* ─── 14. vitrine et funnel (M6) : chrome public, héros et conversation, formulaire progressif, fenêtre d'app, bandes, pied, stepper, tableau inclus, FAQ, document ─── */
.embed .demo{display:none}
/* chrome public : la barre haute sans marque ni moteur, des liens, la langue, se connecter */
.top.pub{padding:14px 28px}
.top.pub .links{display:flex;gap:18px;margin-left:16px}
.top.pub .links a{font-size:13.5px;color:var(--mute);font-weight:500}
.top.pub .links a:hover,.top.pub .links a.on{color:var(--ink)}
.top.pub .lang{font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--faint);display:inline-flex;gap:6px;align-items:center}
.top.pub .lang a{color:var(--faint)}.top.pub .lang a.on{color:var(--ink)}
.top.pub .burger{display:none}
.top.pub .menuwrap .menu{left:auto;right:0}
/* bandeau revenant : l'analyse conservée 30 jours */
.backban{max-width:1180px;margin:18px auto 0;padding:0 28px}
.backban .in{display:flex;gap:12px;align-items:center;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);border-left:3px solid var(--ocre);border-radius:var(--r2);box-shadow:var(--sh);padding:10px 16px;font-size:13px}
.backban .in b{font-weight:600}
.backban .in .btn{margin-left:auto}
/* héros : une phrase, la conversation, la question au visiteur, le champ */
.hero{max-width:900px;margin:0 auto;padding:56px 28px 64px;text-align:center}
.hero h1{font-size:clamp(32px,4.6vw,54px);line-height:1.04;letter-spacing:-.035em;font-weight:600;margin:0 auto 34px;max-width:20ch;text-wrap:balance}
.hero h1 em,.hero .ask em{font-style:normal;color:var(--hot)}
.hero .ask{font-size:clamp(20px,2.6vw,28px);font-weight:600;letter-spacing:-.02em;margin:36px 0 4px;line-height:1.2}
.hero .under{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);margin:18px 0 0;letter-spacing:.01em}
.hero .under b{color:var(--ink);font-weight:500}
/* la conversation : question, réponse d'un moteur, citation surlignée, verdict, annotations */
.convo{position:relative;text-align:left;max-width:760px;margin:0 auto;padding:24px 28px;min-height:230px}
.convo .qbub{display:inline-block;background:var(--ink);color:#fff;border-radius:14px 14px 4px 14px;padding:10px 15px;font-size:14px;min-height:1.3em;margin:0 0 16px;max-width:100%}
.convo .aline{display:flex;gap:12px;align-items:flex-start}
.convo .atext{flex:1;font-size:14px;line-height:1.75;color:#3B3E4E;min-height:96px;min-width:0}
.cit{border-bottom:1.5px solid var(--acc);background:var(--acc-soft);padding:0 2px}
.cit.moi{border-color:var(--hot);background:var(--hot-soft);color:var(--hot);font-weight:600}
.cveil{display:inline-block;border-bottom:1.5px solid var(--acc);background:var(--acc-soft);padding:0 7px;border-radius:5px;color:transparent;text-shadow:0 0 7px rgba(15,118,110,.7);user-select:none;cursor:help;vertical-align:baseline}
.caret{display:inline-block;width:7px;height:15px;background:var(--ink);vertical-align:-2px;margin-left:2px;animation:blink .9s steps(1) infinite}
.qbub .caret{background:#fff}
@keyframes blink{50%{opacity:.25}}
.convo .verdl{font-size:16px;font-weight:600;letter-spacing:-.01em;margin:14px 0 0;min-height:1.4em}
.convo .verdl .ko{color:var(--hot)}
.convo .anno{position:absolute;font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:6px 10px;box-shadow:var(--sh);opacity:0;transform:translateY(6px);transition:.4s var(--ease);white-space:nowrap}
.convo .anno.on{opacity:1;transform:none}
.convo .anno b{color:var(--ink);font-weight:500}
.convo .anno.a1{right:-14px;top:-14px}.convo .anno.a2{left:-14px;bottom:44px}
/* pastille moteur en mono */
.engc{display:inline-flex;align-items:center;gap:6px;font-family:"Geist Mono",monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--line);border-radius:999px;padding:3px 9px;color:var(--mute);background:var(--card);white-space:nowrap;flex:none}
.engc i{width:7px;height:7px;border-radius:50%;background:var(--acc)}.engc.g i{background:var(--ocre)}
/* formulaire progressif : le domaine, puis l'email, rien d'autre (ADR-023 §2) */
.df{max-width:560px;margin:18px auto 0;text-align:left}
.df .row1,.df .more{display:flex;gap:10px}
.df input{flex:1;min-width:0;padding:13px 16px;font-size:15px}
.df .more{max-height:0;overflow:hidden;opacity:0;transition:max-height .45s var(--ease),opacity .35s,margin .45s}
.df.open .more{max-height:160px;opacity:1;margin-top:10px}
.df.open .go{display:none}.df .launch{display:none}.df.open .launch{display:inline-flex}
.df .btn{white-space:nowrap;justify-content:center}
.df .dfnote{font-size:12px;color:var(--mute);margin:10px 0 0;min-height:16px;text-align:center}
.df .dfnote.err{color:var(--hot)}
.df.pulse .row1 input{box-shadow:0 0 0 5px var(--band);border-color:var(--acc)}
/* l'instrument : la fenêtre d'app, ses onglets de marque, ses annotations */
.machine{max-width:1180px;margin:0 auto;padding:60px 28px 70px;text-align:center}
.machine h2{font-size:clamp(26px,3.4vw,40px);letter-spacing:-.03em;line-height:1.08;font-weight:600;margin:0 0 8px;text-wrap:balance}
.machine .msub{font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);margin:0 0 26px}
.wintabs{display:flex;justify-content:center;margin:0 0 16px}
.machwrap{position:relative;max-width:1100px;margin:0 auto}
.win{position:relative;background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);overflow:hidden;text-align:left}
.win .bar{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--card2);border-bottom:1px solid var(--line)}
/* les trois points de la fenêtre ne sont pas le bouton « ··· » de l'atelier (.dots3, §11) : collision attrapée S161h */
.win .bar .dots3{display:flex;gap:5px;width:auto;height:auto;border:0;border-radius:0;background:none;place-items:initial}.win .bar .dots3 i{width:9px;height:9px;border-radius:50%;background:#D6D6D1}
.win .bar .url{margin:0 auto;font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);background:var(--card);border:1px solid var(--line);border-radius:7px;padding:2px 28px}
.win iframe{display:block;width:100%;height:720px;border:0;background:var(--bg)}
.callout{position:absolute;font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);background:var(--card);border:1px solid var(--line);border-left:3px solid var(--hot);border-radius:10px;padding:8px 12px;box-shadow:var(--sh);max-width:220px;text-align:left;z-index:4;opacity:0;transform:translateY(8px);transition:.45s var(--ease)}
.callout.on{opacity:1;transform:none}
.callout b{display:block;font-family:Geist,system-ui,sans-serif;font-size:12.5px;font-weight:600;color:var(--ink);margin-bottom:2px}
.callout.c1{right:-26px;top:140px;border-left-color:var(--acc)}.callout.c2{right:-26px;bottom:180px;border-left-color:var(--violet)}.callout.c3{left:-26px;bottom:-14px}
.apphint{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);margin:14px 0 0}
.apphint b{color:var(--hot);font-weight:500}
/* bandes : la méthode en une ligne, le prix en encre */
.band{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--card)}
.band .in{max-width:1180px;margin:0 auto;padding:18px 28px;display:flex;gap:22px;align-items:baseline;flex-wrap:wrap;font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute)}
.band .in b{color:var(--ink);font-weight:500}
.band .in a.more{margin-left:auto;font-family:Geist,system-ui,sans-serif;font-size:13px;color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.band.ink{background:var(--ink);color:#fff;border-color:var(--ink)}
.band.ink .in{padding:40px 28px;align-items:center;gap:24px}
.band.ink h2{font-size:clamp(22px,2.8vw,32px);letter-spacing:-.025em;line-height:1.12;margin:0;max-width:24ch;font-family:Geist,system-ui,sans-serif;font-weight:600}
.band.ink .pf2{font-family:"Geist Mono",monospace;font-size:11.5px;color:#9EA1A8;margin-top:8px}
.band.ink .pf2 b{color:#fff;font-weight:500}
.band.ink .pf2 a{color:#fff;text-decoration:underline;text-underline-offset:3px}
.band.ink .btn.primary{margin-left:auto;background:#fff;color:var(--ink);border-color:#fff}
/* pied public */
.pfoot{max-width:1180px;margin:0 auto;padding:28px 28px 40px;display:flex;gap:22px;align-items:baseline;flex-wrap:wrap;font-size:12.5px;color:var(--mute)}
.pfoot a:hover{color:var(--ink)}
.pfoot .right{margin-left:auto;font-family:"Geist Mono",monospace;font-size:11px}
/* stepper : moins, la valeur en mono, plus */
.stepper{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;background:var(--card);box-shadow:var(--sh)}
.stepper button{border:0;background:none;width:36px;height:36px;font-size:18px;color:var(--ink);border-radius:999px}
.stepper button:hover{background:var(--card2)}.stepper button[disabled]{color:var(--faint);pointer-events:none}
.stepper output{font-family:"Geist Mono",monospace;font-size:15px;font-weight:500;min-width:56px;text-align:center;font-variant-numeric:tabular-nums}
.confrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center;padding:16px 0;border-bottom:1px solid var(--line)}
.confrow:last-child{border-bottom:0}
.confrow h3{margin:0;font-size:15px;font-weight:600}
.confrow p{margin:3px 0 0;font-size:12.5px;color:var(--mute);max-width:52ch}
.confrow .chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.pricecard{position:sticky;top:84px}
.pricecard .price{font-size:44px;margin:6px 0 2px}
.pricecard .cycle{font-size:12.5px;color:var(--mute);min-height:1.5em}
.pricecard .formula{margin-top:14px;padding-top:14px;border-top:1px dashed var(--line)}
.pricecard .btn{width:100%;justify-content:center;margin-top:18px}
.pricecard .note{text-align:center}
/* tableau « ce qui est inclus » */
.incl .r{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;padding:11px 0;border-bottom:1px dashed var(--line);font-size:13.5px;align-items:baseline}
.incl .r:last-child{border-bottom:0}
.incl .r b{font-family:"Geist Mono",monospace;font-weight:500;font-size:13px;white-space:nowrap}
.incl .r .ok{color:var(--acc)}
.incl .grp{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);font-weight:600;padding:18px 0 6px}
.incl .grp:first-child{padding-top:0}
/* FAQ : une question par ligne */
.faq{border-bottom:1px solid var(--line)}
.faq>summary{list-style:none;display:flex;align-items:center;gap:12px;padding:16px 0;cursor:pointer;font-size:15px;font-weight:600;letter-spacing:-.01em}
.faq>summary::-webkit-details-marker{display:none}
.faq>summary .chev{margin-left:auto;color:var(--faint);transition:.2s}
.faq[open]>summary .chev{transform:rotate(90deg)}
.faq .body{padding:0 0 18px;font-size:14px;color:#3B3E4E;max-width:70ch;line-height:1.65}
/* document de lecture : légal */
.doc{max-width:760px;margin:0 auto;padding:44px 28px 120px}
.doc h1{font-size:clamp(26px,3.4vw,38px);letter-spacing:-.025em;font-weight:600;margin:6px 0 6px;line-height:1.1}
.doc .maj{font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);margin:0 0 30px}
.doc h2{font-size:18px;letter-spacing:-.015em;font-weight:600;margin:30px 0 8px}
.doc p,.doc li{font-size:14.5px;line-height:1.7;color:#2E3036}
.doc a{text-decoration:underline;text-underline-offset:3px}
.doc .note{background:var(--card2);border-radius:var(--r2);padding:12px 16px;font-size:13.5px;margin:10px 0}
.doc .tbl-wrap{overflow-x:auto}
.doc table{width:100%;border-collapse:collapse;font-size:13.5px;margin:10px 0}
.doc th,.doc td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}
.doc th{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--mute)}
.doc .num{font-family:"Geist Mono",monospace}
.doc h2 .num{display:block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);font-weight:500;margin-bottom:2px}
.doc .fcol,.doc .fk{display:none}
@media (max-width:980px){.convo .anno,.callout{display:none}.win iframe{height:600px}}
@media (max-width:600px){
  .top.pub .links,.top.pub .lang{display:none}.top.pub .burger{display:inline-flex}
  .backban{padding:0 16px}.backban .in .btn{margin-left:0}
  .hero{padding:30px 16px 46px}.hero h1{margin-bottom:24px}.convo{padding:18px}.df .row1,.df .more{flex-direction:column}
  .machine{padding:44px 16px 54px}.win iframe{height:520px}.wintabs .seg{display:flex;width:100%}.wintabs .seg button{flex:1;white-space:normal;font-size:12px;line-height:1.25;padding:6px 10px}
  .band .in{padding:16px}.band .in a.more{margin-left:0}.band.ink .in{padding:30px 16px}.band.ink .btn.primary{margin-left:0}
  .pfoot{padding:24px 16px 40px}.pfoot .right{margin-left:0}
  .confrow{grid-template-columns:1fr}.pricecard{position:static}.pricecard .price{font-size:38px}
  .doc{padding:28px 16px 90px}
}

/* ─── 15. funnel (M6b) : la scène du screening (mosaïque du site, panneau de scène, étapes du moteur, file d'attente, « voici votre marché », finale, retour et veille, site très riche, erreur), le constructeur (étapes, cartes par famille, moteurs à prix unitaire, cadence, marché à deux listes, bandeau de prix, passerelle) ─── */
/* la scène : plein écran, la mosaïque du site derrière (une case = une page, allumée par famille), le panneau devant. Pas de flou : le panneau est une carte, la mosaïque recule. */
.stage{position:fixed;inset:0;overflow:hidden}
.stage .kick{position:absolute;left:18px;top:14px;display:flex;align-items:center;gap:14px;z-index:3}
.stage .kick .eyebrow{margin:0}
.mosaic{position:absolute;inset:0;padding:10px;display:grid;gap:3px;justify-content:center;align-content:center;transition:opacity .8s var(--ease),filter .8s var(--ease)}
.mosaic .cell{display:block;border-radius:3px;background:var(--card2);opacity:0;transform:scale(.5)}
.mosaic .cell.on{opacity:1;transform:none;transition:opacity .28s var(--ease),transform .28s var(--ease)}
.mosaic .cell.produit{background:rgba(228,87,46,.45)}
.mosaic .cell.article{background:rgba(15,118,110,.42)}
.mosaic .cell.collection{background:rgba(107,92,165,.42)}
.mosaic .cell.autre{background:var(--line)}
.mosaic.recede{opacity:.3;filter:saturate(.6)}
.mosaic.still .cell{opacity:1;transform:none;transition:none}
.mscale{position:absolute;left:18px;bottom:14px;font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--mute);z-index:3}
.mtick{position:absolute;right:18px;bottom:14px;font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--mute);max-width:46vw;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;z-index:3}
.veil{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;padding:14px}
.scene{pointer-events:auto;text-align:center;max-width:min(640px,94vw);max-height:100%;overflow-y:auto;padding:26px 34px}
.scene .big{font-family:"Geist Mono",monospace;font-size:clamp(56px,9vw,96px);line-height:1;letter-spacing:-.03em;font-weight:500;font-variant-numeric:tabular-nums}
.scene .of{font-size:13.5px;color:var(--mute);margin-top:4px}
.scene .of b{font-family:"Geist Mono",monospace;font-weight:500;color:var(--ink)}
.scene .phase{font-weight:600;font-size:17px;letter-spacing:-.01em;margin-top:12px;min-height:24px}
.scene .eta{display:none;margin-top:10px}
.scene .eta.show{display:inline-flex}
.mlegend{display:flex;gap:14px;justify-content:center;margin-top:12px;font-size:11px;font-family:"Geist Mono",monospace;color:var(--mute);flex-wrap:wrap}
.mlegend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px;vertical-align:1px}
.mlegend b{font-weight:500;color:var(--ink)}
/* les étapes du moteur après la lecture des pages : l'étape en cours bat, le temps qui reste est la somme des étapes mesurées */
.esteps{display:none;text-align:left;margin:12px auto 0;max-width:430px}
.scene.engine .esteps{display:block}
.scene.engine .big,.scene.engine .of,.scene.engine .mlegend,.scene.engine .eta{display:none}
.estep{display:flex;gap:10px;align-items:center;padding:7px 0;font-size:13.5px;color:var(--mute);border-bottom:1px dashed var(--line)}
.estep:last-of-type{border-bottom:0}
.estep i{width:9px;height:9px;border-radius:50%;background:var(--card2);border:1.5px solid var(--line);flex:none}
.estep.done{color:var(--ink)}.estep.done i{background:var(--acc);border-color:var(--acc)}
.estep.cur{color:var(--ink);font-weight:600}.estep.cur i{background:var(--hot);border-color:var(--hot);animation:mpulse 1.4s ease-in-out infinite}
.estep .em{margin-left:auto;font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);white-space:nowrap;font-weight:400}
@keyframes mpulse{0%,100%{opacity:1}50%{opacity:.35}}
.eeta{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);margin-top:12px;text-align:center}
.eeta b{color:var(--ink);font-weight:500}
.ewatch{display:none;margin:12px auto 0;max-width:430px;text-align:left}
.ewatch.on{display:flex}
/* en file : ce qui passe devant, un chrono qui bat, jamais un écran figé */
.qwait{display:none;text-align:left;margin:12px auto 0;max-width:430px}
.scene.file .qwait{display:block}
.scene.file .big,.scene.file .of,.scene.file .mlegend,.scene.file .eta,.scene.file .phase,.scene.file .esteps{display:none}
.qwrow{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:var(--r2);background:var(--card2)}
.qwrow .dot{width:9px;height:9px;border-radius:50%;flex:none;margin-top:7px;background:var(--hot);animation:mpulse 1.4s ease-in-out infinite}
.qwrow.pause .dot{background:var(--ocre);animation:none}
.qwrow .qh{font-weight:600;font-size:16px;line-height:1.3;letter-spacing:-.01em}
.qwrow .qd{font-size:13px;color:var(--mute);margin-top:3px}
.qwrow .qtick{display:block;font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);margin-top:6px}
.qwrow .qtick b{color:var(--ink);font-weight:500}
/* « voici votre marché » : la fiche lue, prouvé / lu sans preuve, corrections inline, le bas collant */
.mkbox{display:none;text-align:left}
.scene.marche{text-align:left;max-width:min(720px,94vw);padding-bottom:0}
.scene.marche .mkbox{display:block}
.scene.marche .big,.scene.marche .of,.scene.marche .phase,.scene.marche .eta,.scene.marche .mlegend,.scene.marche .repline,.scene.marche .confline,.scene.marche .esteps{display:none}
.mkbox .mh{font-size:clamp(23px,3.2vw,30px);letter-spacing:-.025em;line-height:1.1;font-weight:600;margin:8px 0 4px;text-wrap:balance}
.mkbox .msub{color:var(--mute);font-size:13.5px;margin:0 0 12px}
.mince{display:none;margin:0 0 12px}
.mince.on{display:flex}
.mince b{font-family:"Geist Mono",monospace;font-weight:500}
.mrow{display:grid;grid-template-columns:122px minmax(0,1fr);gap:12px;padding:9px 0;border-top:1px dashed var(--line);align-items:start}
.mrow:first-child{border-top:0}
.mrow .k{margin:0;padding-top:5px;flex-direction:column;align-items:flex-start;gap:5px}
.mrow .v{min-width:0}
.stat{display:inline-flex;gap:5px;align-items:center;font-family:"Geist Mono",monospace;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:500}
.stat i{width:6px;height:6px;border-radius:50%;display:inline-block}
.stat.ok{color:var(--acc)}.stat.ok i{background:var(--acc)}
.stat.doute{color:var(--ocre)}.stat.doute i{background:var(--ocre)}
.txt{display:inline-flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.txt .val{font-weight:600;font-size:14.5px}
.txt .val.edited{color:var(--hot)}
.pen{background:none;border:0;color:var(--mute);font:inherit;font-size:11.5px;padding:0;text-decoration:underline dotted;text-underline-offset:3px;cursor:pointer}
.pen:hover{color:var(--hot)}
.medit{display:none;gap:6px;margin-top:6px}
.medit.on{display:flex}
.medit input{flex:1;min-width:0;padding:7px 12px;border-radius:999px}
.fchips{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.fchip{display:inline-flex;gap:5px;align-items:center;border:1px solid var(--line);border-radius:999px;padding:3px 5px 3px 11px;font-size:12.5px;background:var(--card);max-width:100%}
.fchip.fixe{padding-right:11px}
.fchip.anti{color:var(--mute);border-style:dashed}
.fchip.vous{border-color:var(--hot);background:var(--hot-soft)}
.fchip .x{border:0;background:none;color:var(--mute);font-size:13px;line-height:1;padding:0 4px;border-radius:999px;cursor:pointer}
.fchip .x:hover{color:var(--hot);background:var(--hot-soft)}
.fadd{border:1px dashed var(--faint);background:none;border-radius:999px;padding:4px 11px;font:inherit;font-size:12px;color:var(--mute);cursor:pointer}
.fadd:hover{border-color:var(--hot);color:var(--hot)}
.faddbox{display:none;gap:6px;width:100%;margin-top:6px}
.faddbox.on{display:flex}
.faddbox input{flex:1;min-width:0;padding:7px 12px;border-radius:999px}
.mempty{font-size:12.5px;color:var(--mute)}
.mfine{font-size:11.5px;color:var(--mute);margin:12px 0 0;line-height:1.6}
.mfine b{font-family:"Geist Mono",monospace;font-weight:500;color:var(--ink)}
.mphase{display:flex;gap:9px;align-items:flex-start;margin:14px 0 0;padding:10px 12px;border-radius:var(--r2);font-size:12.5px;background:var(--acc-soft);color:var(--ink)}
.mphase .dot{width:8px;height:8px;border-radius:50%;flex:none;margin-top:5px;background:var(--acc)}
.mphase .dot.beat{animation:mpulse 1.4s ease-in-out infinite}
.mphase.pause{background:var(--ocre-soft)}.mphase.pause .dot{background:var(--ocre)}
.mphase.pret{background:var(--hot-soft)}.mphase.pret .dot{background:var(--hot)}
.mphase b{font-weight:600}
.mphase .mt2{display:block;font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--mute);margin-top:2px}
.mfoot{position:sticky;bottom:0;background:var(--card);margin:14px -34px 0;padding:12px 34px 16px;border-top:1px solid var(--line)}
.mfoot .ctarow{justify-content:flex-start}
.ctanote{font-size:11.5px;color:var(--mute);margin:8px 0 0}
.merr{display:none;font-size:12.5px;color:var(--hot);margin:7px 0 0}
.merr.on{display:block}
.confline{display:none;margin-top:12px}
.confline.on{display:inline-flex}
.confline b{font-family:"Geist Mono",monospace;font-weight:500}
/* la finale : les questions en bulles, le sondage en direct, les sections voilées, le podium et les occupants */
.fin{display:none}
.scene.finale .fin{display:block}
.scene.finale .phase,.scene.finale .eta{display:none}
.bulles{display:flex;flex-direction:column;gap:8px;align-items:center;margin-top:14px}
.bulle{background:var(--card);border:1px solid var(--line);border-radius:14px 14px 14px 4px;box-shadow:var(--sh);padding:9px 15px;font-size:13.5px;opacity:0;transform:translateY(8px)}
.bulle.on{opacity:1;transform:none;transition:opacity .35s var(--ease),transform .35s var(--ease)}
.bulle.more{color:var(--mute);background:var(--card2);box-shadow:none}
.sd{display:none;margin-top:16px;text-align:left}
.fin.sonde .sd{display:block}
.sd .sk{margin:0 0 7px;text-align:center}
.sd .sq{font-weight:600;font-size:14.5px;margin:0 0 8px}
.ansbox{background:var(--card);border:1px solid var(--line);border-radius:var(--r2);box-shadow:var(--sh);padding:16px 20px;font-size:13.5px;line-height:1.7;min-height:60px;color:#3B3E4E}
.vline{font-size:12.5px;color:var(--mute);margin-top:10px}
.secs{display:none;text-align:left;margin-top:16px}
.scene.done .secs{display:block}
.secs .sec{background:var(--card);border:1px solid var(--line);border-radius:var(--r2);padding:14px 17px 16px;margin-top:12px;position:relative;overflow:hidden}
.secs .sec.tagged{padding-bottom:38px}
.secs .sec h3{font-size:14px;font-weight:600;margin:0 0 9px;letter-spacing:-.01em;display:flex;gap:8px;align-items:baseline}
.secs .sec h3 .pc{margin-left:auto;font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);font-weight:400;white-space:nowrap}
.covrow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:8px}
.cov{border:1px solid var(--line);border-radius:10px;padding:8px 10px}
.cov .cv{font-family:"Geist Mono",monospace;font-size:22px;display:block;font-weight:500;letter-spacing:-.02em}
.cov .cl{font-size:11px;color:var(--mute);line-height:1.35}
.cov.mes{border-left:3px solid var(--acc)}.cov.ren{border-left:3px solid var(--ocre)}.cov.cre{border-left:3px solid var(--hot)}
.covnote{font-size:11.5px;color:var(--mute);margin:0}
.vq{border:1px solid var(--line);border-radius:10px;padding:9px 11px;margin-bottom:8px}
.vq:last-child{margin-bottom:0}
.vq .qt{font-weight:600;font-size:12.5px;margin:6px 0 3px}
.vq .va{font-size:12px;line-height:1.6;color:#3B3E4E;margin:0}
.veiled{filter:blur(4px);user-select:none;pointer-events:none}
.veiltag{position:absolute;right:10px;bottom:10px;font-family:"Geist Mono",monospace;font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);background:var(--card);border:1px solid var(--line);border-radius:999px;padding:3px 9px;z-index:2}
.secnote{font-size:11.5px;color:var(--mute);line-height:1.55;margin:9px 0 0}
.podium{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}
.pod{border:1px solid var(--line);border-radius:10px;padding:8px 9px 7px;background:var(--bg);min-width:0}
.pod .rk{font-family:"Geist Mono",monospace;font-size:10px;color:var(--faint);letter-spacing:.06em}
/* .podtop, pas .top : « top » est la barre haute du kit (collante, flex), elle écrasait les trois premiers du podium (collision attrapée S161d) */
.pod.podtop .rk{color:var(--hot)}
.pod .nm{display:flex;gap:6px;align-items:center;margin-top:4px;font-size:12.5px;font-weight:600;min-width:0}
.pod .nm span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pod .pv{font-family:"Geist Mono",monospace;font-size:10px;color:var(--mute);margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pod .pv b{font-weight:500;color:var(--ink)}
details.dtbl{margin-top:10px}
details.dtbl summary{list-style:none;cursor:pointer;font-family:"Geist Mono",monospace;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);display:flex;gap:8px;align-items:center}
details.dtbl summary::-webkit-details-marker{display:none}
details.dtbl summary::before{content:"▸";color:var(--hot)}
details.dtbl[open] summary::before{content:"▾"}
details.dtbl .tbl{margin-top:8px;font-size:12.5px}
details.dtbl .tbl th{cursor:default}
.dm{display:flex;gap:7px;align-items:center;min-width:0}
.prov{font-size:11px;color:var(--mute)}
.occ{display:flex;flex-direction:column}
.orow{display:grid;grid-template-columns:minmax(0,1fr) auto 90px;gap:10px;align-items:center;padding:6px 0;border-bottom:1px dashed var(--line);font-size:12.5px}
.orow:last-child{border-bottom:0}
.orow .dm span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nat{display:inline-block;border:1px solid var(--line);border-radius:999px;padding:1px 8px;font-size:10.5px;color:var(--mute);white-space:nowrap;flex:none}
.orow .cnt{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);white-space:nowrap}
.orow .cnt b{font-weight:500;color:var(--ink)}
.orow .bar{height:6px;border-radius:3px;background:var(--card2);overflow:hidden}
.orow .bar i{display:block;height:100%;background:var(--violet);border-radius:3px}
/* le point d'arrivée de la finale (S161 §9, 3a) : l'analyse gratuite se termine, elle ne s'interrompt pas. Ce qui est à vous, ce qui est
   voilé et pourquoi, puis un seul bouton. Classes préfixées fa- (les classes courtes du kit se sont déjà écrasées quatre fois). */
.fa-fin{display:none;text-align:left;margin-top:26px;padding-top:22px;border-top:1px solid var(--ink);scroll-margin-top:8px}
.scene.done .fa-fin{display:block}
.fa-fin .eyebrow{margin:0 0 8px}
.fa-h{font-size:22px;font-weight:600;letter-spacing:-.02em;line-height:1.2;margin:0 0 8px}
.fa-lead{font-size:13.5px;color:var(--mute);line-height:1.55;margin:0 0 16px;max-width:60ch}
.fa-lead b{font-family:"Geist Mono",monospace;font-weight:500;color:var(--ink)}
.fa-cols{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:10px;margin:0 0 18px}
.fa-fin.fa-seul .fa-cols{grid-template-columns:minmax(0,1fr)}.fa-fin.fa-seul .fa-voile{display:none}
.fa-col{border:1px solid var(--line);border-radius:var(--r2);padding:13px 15px 14px;background:var(--card);min-width:0}
.fa-col.fa-voile{background:var(--card2);border-style:dashed}
.fa-k{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--acc);margin:0 0 9px}
.fa-voile .fa-k{color:var(--mute)}
.fa-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px;font-size:13px;line-height:1.45}
.fa-list li{position:relative;padding-left:16px}
.fa-list li::before{content:"";position:absolute;left:0;top:.5em;width:7px;height:7px;border-radius:50%;background:var(--acc)}
.fa-voile .fa-list li::before{background:none;border:1px solid var(--faint)}
.fa-list b{font-family:"Geist Mono",monospace;font-weight:500}
.fa-list a{display:block;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px}
.fa-list a:hover{text-decoration-color:var(--ink)}
.fa-why{font-size:11.5px;color:var(--mute);line-height:1.55;margin:10px 0 0}
.fa-col .repchip{margin-top:12px}
.fa-col .keepline{margin:12px 0 0;padding-top:10px;border-top:1px dashed var(--line)}
/* le pied colle au bas de la carte pendant toute la lecture de la finale : un seul bouton, visible sans défiler, en 375 aussi (interdit n° 8) ; même motif que .mfoot */
.fa-foot,.fa-fine{display:none}
.scene.done .fa-foot,.scene.done .fa-fine{display:block}
.fa-foot{position:sticky;bottom:-26px;z-index:2;background:var(--card);margin:0 -34px;padding:12px 34px 14px;border-top:1px solid var(--line)}
.fa-go{display:flex;justify-content:center;text-align:center;white-space:normal;padding:14px 20px;font-size:14.5px}
.fa-fine{font-size:11.5px;color:var(--mute);line-height:1.55;margin:10px 0 2px;text-align:center}
.repline{display:none;font-size:13px;color:var(--mute);margin:10px 0 0}
.repline b{font-family:"Geist Mono",monospace;font-weight:500;color:var(--ink)}
.scene.reprise .repline{display:block}
.repchip{display:none;margin-top:10px}
.scene.reprise.done .repchip{display:inline-flex}
.repchip b{font-family:"Geist Mono",monospace;font-weight:500;margin-left:4px}
.keepline{display:none;font-size:12px;color:var(--mute);margin:10px 0 0}
.scene.done .keepline{display:block}
.keepline a{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.keepline.kept{color:var(--acc)}
/* site très riche, lecture interrompue : un écran de fin honnête, avec les comptes partiels */
.heavyend{position:absolute;inset:0;z-index:30;display:none;align-items:center;justify-content:center;background:rgba(245,245,241,.94)}
.heavyend.show{display:flex;animation:rise .4s var(--ease)}
.hv{max-width:560px;padding:0 22px;text-align:center}
.hv h2{font-size:clamp(26px,3.6vw,38px);letter-spacing:-.025em;line-height:1.1;font-weight:600;margin:10px 0 8px;text-wrap:balance}
.hv p{color:var(--mute);font-size:14px;margin:0 0 6px}
.hv .mailline{font-size:14px;color:var(--ink)}
.tchips{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin:8px 0 10px}
.tchip{background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--sh);padding:12px 18px;min-width:110px}
.tchip .v{font-family:"Geist Mono",monospace;font-size:24px;font-weight:500}
.tchip .lb{font-size:11px;color:var(--mute)}
/* le constructeur : deux colonnes, les étapes à gauche, la fenêtre d'app à droite (le bureau v8 en première fenêtre), le bandeau de prix en bas */
.build{display:grid;grid-template-columns:minmax(400px,500px) minmax(0,1fr);gap:18px;max-width:1280px;margin:0 auto;padding:18px 28px 140px;align-items:start}
.build .right{position:sticky;top:76px}
.rightlabel{text-align:center;font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);margin-top:9px}
.rightlabel b{color:var(--hot);font-weight:500}
.top .steps{margin:0 0 0 8px}
/* 3.8 (S217) : le pas-à-pas du constructeur m6 s'appelait « .prog », le nom des jauges ; depuis le 17/09 il étirait toutes les jauges .pf .prog, .wait .row .prog, .thead .prog et .barfix .prog à 100 %, quelle que soit leur valeur (bureau en première fenêtre, résultat « 1 réponse sur 5 »). Renommé .bprog (renommer plutôt que neutraliser, S168). */
.bprog{display:flex;gap:5px;margin-bottom:10px}
.bprog i{flex:1;height:3px;border-radius:2px;background:var(--card2)}
.bprog i.on{background:var(--hot)}
.bstep{opacity:.5;transition:opacity .3s;margin-bottom:10px;padding:16px 18px}
.bstep.cur{opacity:1;border-color:var(--ink)}
.bstep.done{opacity:1}
.bstep .shead2{display:flex;align-items:baseline;gap:9px}
.bstep .shead2 .k{margin:0;color:var(--hot)}
.bstep .shead2 .sl{font-weight:600;font-size:15.5px;letter-spacing:-.01em}
.bstep .shead2 .scount{margin-left:auto;font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);white-space:nowrap}
.bstep .shead2 .scount b{color:var(--ink);font-weight:500}
.bstep .vline2{display:none;font-size:12.5px;color:var(--mute);margin-top:5px}
.bstep.done .vline2{display:flex;gap:8px;align-items:baseline}
.bstep .vline2 b{font-family:"Geist Mono",monospace;font-weight:500;color:var(--ink)}
.bstep .edit{margin-left:auto;background:none;border:0;color:var(--hot);font:inherit;font-size:12px;font-weight:600;padding:0;cursor:pointer}
.bstep .body{display:none}
.bstep.cur .body{display:block}
.navrow{display:flex;gap:9px;justify-content:flex-end;margin-top:14px}
.famcards{display:grid;grid-template-columns:1fr;gap:8px;margin-top:10px}
.famcard{border:1px solid var(--line);border-radius:12px;background:var(--bg);padding:9px 10px 8px;min-width:0}
.famcard .fh{display:flex;gap:7px;align-items:center;margin-bottom:4px}
.famcard .fh .badge{font-size:12.5px;text-transform:none;letter-spacing:0;font-weight:600;color:var(--ink)}
.famcard .fh .fc{margin-left:auto;font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--mute);white-space:nowrap}
.famcard .fh .fc b{color:var(--ink);font-weight:500}
.famcard .fall{border:0;background:none;color:var(--mute);font:inherit;font-size:10.5px;padding:0;text-decoration:underline dotted;text-underline-offset:2px;cursor:pointer;white-space:nowrap}
.famcard .fd2{font-size:10.5px;color:var(--mute);margin:-2px 0 5px 15px}
.qlist{max-height:170px;overflow-y:auto}
.qpk{display:grid;grid-template-columns:16px 8px minmax(0,1fr) auto;gap:8px;align-items:center;padding:5px 0;border-bottom:1px dashed var(--line);font-size:12.5px;cursor:pointer}
.qpk:last-child{border-bottom:0}
.qpk input{width:14px;height:14px;accent-color:var(--acc);margin:0}
.qpk .fd{width:8px;height:8px;border-radius:50%;background:var(--faint)}
.qpk .fd.brand{background:var(--fam-brand)}.qpk .fd.bofu{background:var(--fam-bofu)}.qpk .fd.mofu{background:var(--fam-mofu)}.qpk .fd.tofu{background:var(--fam-tofu)}
.qpk .fd.top{background:var(--acc)}
.qpk .qt{min-width:0;overflow-wrap:break-word;color:var(--ink)}
.qpk.off .qt{color:var(--faint);text-decoration:line-through}
.qpk .st{font-family:"Geist Mono",monospace;font-size:10px;color:var(--mute);white-space:nowrap}
.qpk .st.vous{color:var(--hot);letter-spacing:.06em;text-transform:uppercase;font-size:9px}
.engrow{display:grid;grid-template-columns:16px minmax(0,1fr) auto;gap:10px;align-items:center;padding:9px 0;border-bottom:1px dashed var(--line);font-size:13px;cursor:pointer}
.engrow:last-of-type{border-bottom:0}
.engrow input{width:14px;height:14px;accent-color:var(--acc);margin:0}
.engrow .en{font-weight:600}
.engrow .ed{display:block;color:var(--mute);font-size:11.5px;font-weight:400}
.engrow .ed b{font-family:"Geist Mono",monospace;font-weight:500;color:var(--ink)}
.engrow .ep{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);white-space:nowrap;text-align:right}
.engrow .ep.inc{color:var(--acc)}
.cadopts{display:flex;gap:8px;margin-top:12px}
.cadopt{flex:1;border:1px solid var(--line);border-radius:12px;background:var(--card);padding:9px 10px;text-align:left;font:inherit;font-size:12.5px;cursor:pointer;color:var(--ink)}
.cadopt .cn{font-weight:500;display:block;font-family:"Geist Mono",monospace;font-size:12px}
.cadopt .cd{color:var(--mute);font-size:11px}
.cadopt[aria-pressed="true"]{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}
details.pourquoi{border:1px solid var(--line);border-radius:12px;background:var(--card);margin:10px 0 4px}
details.pourquoi summary{list-style:none;cursor:pointer;padding:8px 12px;font-family:"Geist Mono",monospace;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--mute);display:flex;gap:8px;align-items:center}
details.pourquoi summary::-webkit-details-marker{display:none}
details.pourquoi summary::before{content:"ⓘ";font-size:12px;color:var(--hot)}
details.pourquoi .pb2{padding:0 12px 11px;font-size:12.5px;color:#3B3E4E;line-height:1.6}
.cblk{margin-top:12px}
.cblk .bh{display:flex;gap:8px;align-items:baseline;margin:0 0 4px}
.cblk .bh .bn{font-weight:600;font-size:13.5px}
.cblk .bh .bc{margin-left:auto;font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute)}
.cblk .bh .bc b{color:var(--ink);font-weight:500}
.cblk .bd{font-size:11.5px;color:var(--mute);margin:0 0 6px}
.clist{max-height:230px;overflow-y:auto;border:1px solid var(--line);border-radius:12px;padding:4px 10px;background:var(--bg)}
.cpk{display:grid;grid-template-columns:16px 18px minmax(0,1fr) auto;gap:8px;align-items:center;padding:6px 0;border-bottom:1px dashed var(--line);font-size:12.5px;cursor:pointer;min-width:0}
.cpk:last-child{border-bottom:0}
.cpk input{width:14px;height:14px;accent-color:var(--acc);margin:0}
.cpk .cn{font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cpk.off .cn{color:var(--faint);font-weight:400}
.cpk .cp{font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--mute);white-space:nowrap}
.cpk .cp b{font-weight:500;color:var(--ink)}
.cpk .vous{color:var(--hot);letter-spacing:.06em;text-transform:uppercase;font-size:9px}
.gh{font-family:"Geist Mono",monospace;font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--mute);padding:8px 0 2px;display:flex;gap:8px;align-items:baseline}
.gh .gg{margin-left:auto;text-transform:none;letter-spacing:0;color:var(--faint)}
.capline{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:10px;font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute)}
/* le bandeau de prix : encre, fixe, le prix en mono, une seule action principale */
.pricebar{position:fixed;left:0;right:0;bottom:0;z-index:28;background:var(--ink);color:#fff;padding:12px 28px;display:flex;align-items:center;gap:16px;flex-wrap:wrap;box-shadow:0 -10px 34px rgba(19,20,23,.22)}
.pricebar .pk{font-family:"Geist Mono",monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#9EA1A8;line-height:1.4}
/* .pb-d, pas .pd : « pd » est la pastille de pilier de 8 px (M3c), elle réduisait le détail du prix à un point (cinquième collision, attrapée S166) */
.pricebar .pb-d{font-size:12px;color:#C9C8C2;max-width:52ch}
.pricebar .pb-d b{font-family:"Geist Mono",monospace;font-weight:500;color:#fff}
.pricebar .pv{margin-left:auto;font-family:"Geist Mono",monospace;font-size:26px;font-weight:500;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.pricebar .pv small{font-size:11px;color:#9EA1A8;font-weight:400;letter-spacing:0}
/* le prix en deux lignes (S161 §9, 3b) : aujourd'hui 0,00 €, ensuite le prix daté. Deux valeurs de même taille, alignées à droite :
   le 0 € n'est pas un appât, le prix n'est pas caché. Seule la ligne « ensuite » bouge avec les coches (.flash). */
.pb-prix{margin-left:auto;display:grid;grid-template-columns:auto auto minmax(0,auto);column-gap:12px;row-gap:1px;align-items:baseline}
.pb-l{display:contents}
.pb-k{font-family:"Geist Mono",monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#9EA1A8}
.pb-v{font-family:"Geist Mono",monospace;font-size:22px;font-weight:500;letter-spacing:-.02em;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.pb-q{font-size:12px;color:#C9C8C2;min-width:0}
.pb-ens.flash .pb-v{animation:pflash .55s var(--ease)}
.pricebar.pb-sm .pb-auj,.pricebar.pb-sm #pb-q2,.pricebar.pb-sm .pb-ens .pb-k{display:none}
.pricebar .btn.primary{background:#fff;color:var(--ink);border-color:#fff}
.pricebar .btn.ghost{background:transparent;color:#fff;border-color:#3A3D45;box-shadow:none}
.pricebar .pnote{flex-basis:100%;font-family:"Geist Mono",monospace;font-size:10px;color:#9EA1A8;margin:-4px 0 0}
.pricebar .perr{flex-basis:100%;font-size:12px;color:var(--hot);margin:-4px 0 0;display:none}
.pricebar .perr.show{display:block}
.pv.flash{animation:pflash .55s var(--ease)}
@keyframes pflash{0%{color:var(--acc2)}100%{}}
/* la passerelle : la sortie du screening est l'entrée du constructeur */
.passerelle{position:fixed;inset:0;z-index:36;background:var(--bg);background-image:var(--grid);background-size:28px 28px;display:none;align-items:center;justify-content:center;padding:14px}
.passerelle.show{display:flex}
.passerelle .mosaic{opacity:.3;filter:saturate(.6)}
.passerelle .card{position:relative;text-align:center;max-width:min(600px,94vw);padding:30px 38px}
.passerelle h1{font-size:clamp(24px,3.6vw,36px);letter-spacing:-.025em;line-height:1.1;font-weight:600;margin:10px 0 8px;text-wrap:balance}
.passerelle p{font-size:13.5px;color:var(--mute);margin:0 auto 6px;max-width:52ch}
.passerelle p b{font-family:"Geist Mono",monospace;font-weight:500;color:var(--ink)}
.passerelle .row{margin-top:16px}
.passerelle .fine{font-size:11.5px;color:var(--faint);margin:12px auto 0}
.loadline{padding:60px 20px;text-align:center;color:var(--mute);font-family:"Geist Mono",monospace;font-size:11.5px}
@media (max-width:980px){.build{grid-template-columns:minmax(0,1fr);padding:14px 16px 190px}.build .right{position:static}}
@media (max-width:640px){
  .scene{padding:18px 18px}.scene.marche{padding-bottom:0}.mrow{grid-template-columns:1fr;gap:4px}.mrow .k{flex-direction:row;gap:10px;align-items:center;padding-top:0}.mfoot{margin:12px -18px 0;padding:10px 18px 14px}
  .fa-cols{grid-template-columns:minmax(0,1fr)}.fa-h{font-size:20px}.fa-foot{bottom:-18px;margin:0 -18px;padding:10px 18px 12px}.fa-go{padding:12px 16px;font-size:14px}.podium{grid-template-columns:repeat(2,minmax(0,1fr))}.orow{grid-template-columns:minmax(0,1fr) auto}.orow .bar{display:none}.covrow{grid-template-columns:1fr}
  .stage .kick{left:14px;top:10px}.mscale,.mtick{display:none}.veil{padding:46px 10px 12px}.hv h2{font-size:24px}
  .pricebar{padding:10px 16px;gap:10px}.pricebar .pb-d,.pricebar .pnote{display:none}.pricebar .pv{font-size:22px}
  .pb-prix{margin-left:0;flex-basis:100%;grid-template-columns:auto auto minmax(0,1fr);column-gap:10px}.pb-v{font-size:18px}.pb-q{font-size:11.5px}.pricebar .btn{flex:1 1 100%;justify-content:center}
  .cadopts{flex-direction:column}.top .steps{order:3;flex-basis:100%;margin:4px 0 0}.bstep{padding:14px}.navrow{flex-wrap:wrap}
  .passerelle .card{padding:22px 18px}
}
@media (prefers-reduced-motion:reduce){.estep.cur i,.qwrow .dot,.mphase .dot.beat{animation:none}}

/* ─── 16. accueil v2 (S161c) : la home en scènes. Une scène = un écran = une idée : une phrase, un objet, rien d'autre (la grammaire de la revue, §8, portée sur la vitrine). Pas de pile de cartes : l'instrument se pose sur le papier. Classes préfixées vt- (leçon S160c). ─── */
.top.pub .links a.soon,.pfoot .soon,.vt-more.soon,.vt-inklinks a.soon,.doc a.soon{color:var(--faint);cursor:default;text-decoration:none}
.top.pub .right .btn.primary{white-space:nowrap}
/* la scène : pleine hauteur sous la barre, contenu centré, défilement aimanté en option (html.vt-snap, proximité, jamais forcé) */
html.vt-snap{scroll-snap-type:y proximity;scroll-padding-top:64px}
.vt-scene{min-height:calc(100svh - 64px);display:flex;flex-direction:column;justify-content:center;max-width:1180px;margin:0 auto;padding:44px 28px;scroll-snap-align:start;position:relative}
.vt-scene.center{align-items:center;text-align:center}
.vt-eye{font-family:"Geist Mono",monospace;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--mute);margin:0 0 16px}
.vt-say{font-size:clamp(28px,3.7vw,46px);line-height:1.08;letter-spacing:-.03em;font-weight:600;margin:0;max-width:22ch;text-wrap:balance}
.vt-say em{font-style:normal;color:var(--hot)}
.vt-sub{font-size:16px;color:var(--mute);margin:14px 0 0;max-width:50ch;line-height:1.55}
.vt-scene.center .vt-say{max-width:27ch}.vt-scene.center .vt-sub{margin-left:auto;margin-right:auto}
.vt-more{display:inline-block;margin-top:22px;font-size:14px;text-decoration:underline;text-underline-offset:3px}
.vt-scene .fx{opacity:0;transform:translateY(14px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.vt-scene.on .fx{opacity:1;transform:none}
.vt-scene.on .fx.d1{transition-delay:.12s}.vt-scene.on .fx.d2{transition-delay:.26s}
/* scène 1 · héros : le titre décrit, le champ est le geste, rien d'autre à l'écran */
.vt-h1{font-size:clamp(34px,4.8vw,58px);line-height:1.03;letter-spacing:-.035em;font-weight:600;margin:0 auto 18px;max-width:20ch;text-wrap:balance}
.vt-h1 em{font-style:normal;color:var(--hot)}
.vt-lead{font-size:17px;color:var(--mute);max-width:54ch;margin:0 auto;line-height:1.55;text-wrap:balance}
.vt-scene .df{margin-top:30px;width:100%}
.vt-promise{font-size:13px;color:var(--mute);margin:4px auto 0;max-width:66ch;line-height:1.6;text-wrap:balance}
.vt-promise b{color:var(--ink);font-weight:600}
.vt-cue{position:absolute;left:50%;bottom:20px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;font-size:12px;color:var(--faint);background:none;border:0;padding:6px 10px}
.vt-cue:hover{color:var(--ink)}
.vt-cue i{width:1px;height:26px;background:linear-gradient(var(--faint),transparent);animation:down 1.8s infinite}
/* scène 2 · le simulateur : une vraie conversation, trois questions en boucle, la mesure en ligne dessous (plus d'encart posé sur le texte) */
.vt-sim{width:min(820px,100%);margin:34px auto 0;text-align:left}
.vt-sim .convo{max-width:none;margin:0;min-height:0}
.vt-sim .convo .atext{min-height:128px}
.vt-meas{display:flex;gap:6px 18px;flex-wrap:wrap;align-items:center;margin:14px 4px 0;font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);min-height:22px}
.vt-meas span{opacity:0;transition:opacity .5s var(--ease)}.vt-meas.on span{opacity:1}
.vt-meas b{color:var(--ink);font-weight:500}
.vt-dots{margin-left:auto;display:flex;gap:6px}
.vt-dots button{width:26px;height:18px;border:0;padding:0;background:none;position:relative}
.vt-dots button:before{content:"";position:absolute;left:0;right:0;top:7px;height:4px;border-radius:2px;background:#D2D3CD;transition:background .3s}
.vt-dots button.on:before{background:var(--ink)}
/* scène 3 · le dé : cinq relevés qui tombent un par un, puis quarante ; la fourchette se resserre sous les yeux */
.vt-die{display:flex;gap:14px;justify-content:center;margin:26px 0 0}
.vt-die .sq{width:72px;display:flex;flex-direction:column;align-items:center;gap:8px;font-family:"Geist Mono",monospace;font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);background:none;border:0;padding:0}
.vt-die .sq i{width:64px;height:64px;border-radius:16px;border:1.5px dashed var(--faint);display:grid;place-items:center;font-style:normal;font-size:24px;line-height:1;color:transparent;transition:background .45s var(--ease),border-color .45s var(--ease),color .45s var(--ease),box-shadow .3s}
.vt-die .sq.ok i{background:var(--acc);border:1.5px solid var(--acc);color:#fff}
.vt-die .sq.no i{background:var(--hot-soft);border:1.5px solid var(--hot);color:var(--hot)}
.vt-die .sq.ok,.vt-die .sq.no{color:var(--mute)}
.vt-die .sq.cur i{box-shadow:0 0 0 5px var(--band)}
.vt-ext{max-width:640px;margin:16px auto 0;min-height:60px;font-size:14px;line-height:1.7;color:#3B3E4E;transition:opacity .3s}
.vt-ext.sw{opacity:0}
.vt-m40{display:flex;gap:4px;justify-content:center;flex-wrap:wrap;max-width:500px;margin:6px auto 0;min-height:10px}
.vt-m40 i{width:10px;height:10px;border-radius:3px;background:var(--line);transition:background .25s}
.vt-m40 i.ok{background:var(--acc)}.vt-m40 i.no{background:var(--hot)}
.vt-trk{width:min(640px,100%);margin:22px auto 0}
.vt-trk .val{font-family:"Geist Mono",monospace;font-size:16px;font-weight:500;margin:0 0 10px;text-align:center;font-variant-numeric:tabular-nums}
.vt-trk .val small{color:var(--mute);font-weight:400;font-size:11.5px;margin-left:10px}
.vt-trk .bar{position:relative;height:14px;border-radius:7px;background:var(--card2);border:1px solid var(--line)}
.vt-trk .bd{position:absolute;top:-1px;bottom:-1px;border-radius:7px;background:var(--band);left:0;width:100%;transition:left .55s var(--ease),width .55s var(--ease)}
.vt-trk .pt{position:absolute;top:50%;width:10px;height:10px;border-radius:50%;background:var(--acc);transform:translate(-50%,-50%);left:50%;opacity:0;transition:left .55s var(--ease),opacity .3s}
.vt-trk .ax{display:flex;justify-content:space-between;font-family:"Geist Mono",monospace;font-size:10px;color:var(--faint);margin-top:6px}
.vt-close{font-size:14px;color:var(--mute);margin:20px auto 0;max-width:60ch;opacity:0;transition:opacity .6s var(--ease)}
.vt-close.on{opacity:1}
.vt-close button{border:0;background:none;padding:0;margin-left:10px;color:var(--ink);text-decoration:underline;text-underline-offset:3px;font-size:13px}
/* scène 4 · l'instrument : trois lectures derrière un sélecteur, un instrument du kit à la fois, posé sur le papier */
.vt-inst{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:48px;align-items:center;width:100%;margin-top:34px}
.vt-inst .txt{transition:opacity .3s}.vt-inst.sw .txt,.vt-inst.sw .obj{opacity:0}
.vt-inst .txt .vt-say{font-size:clamp(26px,3.2vw,40px)}
.vt-inst .obj{min-height:440px;display:flex;flex-direction:column;justify-content:center;min-width:0;transition:opacity .3s}
.vt-inst .obj .rail{margin:64px 14px 60px}
.vt-inst .obj .rail .t{white-space:nowrap}
.vt-inst .obj .note{margin:0}
.vt-inst .obj .bands .note{margin-top:16px}
.vt-bigba{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap;font-family:"Geist Mono",monospace;font-weight:500;font-size:clamp(40px,5.4vw,68px);letter-spacing:-.04em;line-height:1;margin:0 0 26px}
.vt-bigba .arrow{color:var(--faint);font-size:.55em}.vt-bigba .after{color:var(--acc)}
.vt-bigba small{font-family:Geist,system-ui,sans-serif;font-size:13px;color:var(--mute);font-weight:400;letter-spacing:0}
/* scène 5 · le chemin : trois arrêts sur une ligne, le prix de chacun en grand (les deux gratuits nommés) */
.vt-path{list-style:none;margin:48px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));position:relative;width:100%}
.vt-path:before{content:"";position:absolute;left:0;right:0;top:9px;height:2px;background:var(--line)}
.vt-path li{position:relative;padding:36px 32px 0 0}
.vt-path li:before{content:"";position:absolute;left:0;top:0;width:20px;height:20px;border-radius:50%;background:var(--bg);border:2px solid var(--ink);box-sizing:border-box}
.vt-path li.free:before{background:var(--acc);border-color:var(--acc)}
.vt-path .st{font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);text-transform:uppercase;letter-spacing:.04em}
.vt-path .pr{font-family:"Geist Mono",monospace;font-weight:500;font-size:clamp(32px,4vw,52px);letter-spacing:-.04em;line-height:1.1;margin:6px 0 2px;white-space:nowrap}
.vt-path .pr{font-size:clamp(30px,3.6vw,46px)}.vt-path .pr small{font-family:Geist,system-ui,sans-serif;font-size:13px;color:var(--mute);font-weight:400;letter-spacing:0;margin-left:8px}.vt-path .pr small.pre{margin:0 8px 0 0}
.vt-path li.free .pr{color:var(--acc)}
.vt-path h3{font-size:17px;font-weight:600;letter-spacing:-.01em;margin:12px 0 6px}
.vt-path p{margin:0;font-size:14px;color:var(--mute);max-width:34ch;line-height:1.55}
.vt-after{display:flex;gap:10px 28px;align-items:baseline;flex-wrap:wrap;margin-top:40px;font-size:13.5px;color:var(--mute)}
.vt-after a{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
/* scène 6 · le registre : une scène encre, un seul chiffre, le ruban d'empreintes. Un fait, pas une demande de confiance */
.vt-ink{background:var(--ink);color:#fff;position:relative;overflow:hidden;scroll-snap-align:start}
.vt-ink .vt-scene{scroll-snap-align:none}
.vt-ink .vt-eye,.vt-ink .vt-sub{color:#9EA1A8}
.vt-count{font-family:"Geist Mono",monospace;font-weight:500;font-size:clamp(64px,11vw,148px);letter-spacing:-.06em;line-height:1;margin:0 0 14px;font-variant-numeric:tabular-nums}
.vt-ink .vt-say{font-size:clamp(22px,2.6vw,32px);max-width:30ch}
.vt-cstats{display:flex;gap:10px 34px;justify-content:center;flex-wrap:wrap;margin:34px 0 0;font-family:"Geist Mono",monospace;font-size:12.5px;color:#9EA1A8}
.vt-cstats b{color:#fff;font-weight:500;font-size:15px;margin-right:7px}
.vt-inklinks{display:flex;gap:8px 22px;justify-content:center;flex-wrap:wrap;margin-top:26px;font-size:13.5px}
.vt-inklinks a{color:#fff;text-decoration:underline;text-underline-offset:3px}
.vt-inklinks a.soon{color:#6E7178}
.vt-hashr{position:absolute;left:0;right:0;bottom:26px;overflow:hidden;white-space:nowrap;font-family:"Geist Mono",monospace;font-size:11px;color:#3E4149;mask:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);-webkit-mask:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}
.vt-hashr span{display:inline-block;animation:mq 40s linear infinite}
/* scène 7 · l'étude de cas · scène 10 · les questions : deux colonnes, la phrase à gauche */
.vt-two{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:48px;align-items:center;width:100%}
.vt-two.top{align-items:start}
.vt-two .obj{min-width:0}
.vt-two .obj .weeks{margin-top:64px}
.vt-two .obj .acts{margin:0}
.vt-two .mesl{margin:18px 0 0;font-size:13px;color:var(--mute)}
/* scène 8 · un témoignage à la fois, en grand (zone absente sans accord écrit) */
.vt-quote{max-width:880px;margin:0 auto;text-align:center}
.vt-quote blockquote{margin:0;font-size:clamp(22px,2.7vw,34px);line-height:1.3;letter-spacing:-.02em;font-weight:500;text-wrap:balance;min-height:3.9em;transition:opacity .4s}
.vt-quote .who{display:flex;gap:12px;align-items:center;justify-content:center;margin-top:28px;font-size:14px;text-align:left;transition:opacity .4s}
.vt-quote .who small{display:block;color:var(--mute);font-size:12.5px}
.vt-quote .proof{font-family:"Geist Mono",monospace;font-size:12px;color:var(--mute);margin:14px 0 0;transition:opacity .4s}
.vt-quote .proof b{color:var(--acc);font-weight:500}
.vt-quote.sw blockquote,.vt-quote.sw .who,.vt-quote.sw .proof{opacity:0}
.vt-quote .vt-dots{justify-content:center;margin:26px 0 0}
/* scène 9 · trois portes : trois questions en grand, pas trois boîtes */
.vt-doors{list-style:none;margin:30px 0 0;padding:0;width:100%;border-top:1px solid var(--line)}
.vt-doors li{border-bottom:1px solid var(--line)}
.vt-doors a{display:grid;grid-template-columns:130px minmax(0,1fr) auto;gap:20px;align-items:baseline;padding:24px 4px}
.vt-doors .kd{font-family:"Geist Mono",monospace;font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--mute)}
.vt-doors .qd{font-size:clamp(20px,2.4vw,28px);font-weight:600;letter-spacing:-.02em;line-height:1.2}
.vt-doors .qd small{display:block;font-size:14px;font-weight:400;color:var(--mute);letter-spacing:0;margin-top:6px}
.vt-doors .ar{color:var(--faint);font-size:22px;transition:color .2s}
.vt-doors a:hover .ar{color:var(--hot)}
.vt-doors a.soon{cursor:default}
/* /commencer (S161d) : les sept étapes du moteur qui se jouent, l'aperçu de l'analyse à sélecteur (mosaïque du site, podium, réponse), le repère « vous êtes ici », les leviers du prix */
.vt-size{display:flex;gap:8px 12px;align-items:center;flex-wrap:wrap;margin:0 0 14px;max-width:480px}.vt-size .vt-eye{margin:0;flex-basis:100%}
.vt-szw{font-size:13px;color:var(--mute)}
.vt-exact{font-size:12.5px;color:var(--mute);margin:14px 0 0;max-width:480px}
.vt-esteps{width:100%;max-width:480px;text-align:left}
.vt-esteps .estep{font-size:14.5px;padding:10px 0;transition:color .3s}
.vt-esteps .estep.read{border-bottom:1px solid var(--line)}
.vt-esteps .tot{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-top:4px;padding-top:12px;border-top:1px solid var(--line);font-family:"Geist Mono",monospace;font-size:12px;color:var(--mute)}
.vt-esteps .tot b{font-size:16px;white-space:nowrap}.vt-esteps .estep.read .em{color:var(--ink);font-weight:500}
.vt-esteps .tot b{color:var(--ink);font-weight:500}
.vt-mos{position:relative;height:330px;border-radius:var(--r);overflow:hidden;border:1px solid var(--line);background:var(--card)}
.vt-leg{display:flex;gap:8px 18px;flex-wrap:wrap;margin:14px 0 0;font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute)}
.vt-leg i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:6px;vertical-align:-1px}
.vt-leg b{color:var(--ink);font-weight:500}
.vt-inst .obj .podium{gap:10px;grid-template-columns:repeat(3,minmax(0,1fr))}.vt-inst .obj .pod{padding:12px 12px 10px;background:var(--card)}
.vt-inst .obj .pod .nm{font-size:13.5px}.vt-inst .obj .pod .pv{font-size:10.5px}
.vt-inst .obj .convo{max-width:none;margin:0;min-height:0}.vt-inst .obj .convo .atext{min-height:118px}
.vt-keep{font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);margin:18px 0 0}
.vt-path li.here:after{content:attr(data-here);position:absolute;left:30px;top:1px;font-family:"Geist Mono",monospace;font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--acc);background:var(--bg);padding:0 8px}
.vt-levers{font-size:13.5px;color:var(--mute);margin:0}
.vt-levers b{color:var(--ink);font-weight:500}
/* /tarifs (S161f) : l'accroche du prix, le simulateur en scène (préréglages, lignes compactes, puces moteur à prix, carte d'estimation, le chemin vers l'analyse), l'unité de mesure dessinée */
.vt-entry{font-family:"Geist Mono",monospace;font-size:13px;color:var(--mute);margin:22px 0 0}
.vt-entry b{color:var(--ink);font-weight:500}
.vt-simul{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:40px;align-items:start;width:100%;margin-top:26px}
.vt-simul .confrow{padding:13px 0}
.vt-simul .confrow h3{font-size:15px}
.vt-simul .confrow p{font-size:12.5px;margin-top:2px}
.vt-simul .chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.mchip.eng{cursor:pointer;border:1px solid transparent;font:inherit;font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--ink);background:var(--card2)}
.mchip.eng[aria-pressed="false"]{opacity:.45;text-decoration:line-through}
.mchip.eng:focus-visible{outline:2px solid currentColor;outline-offset:2px}
.vt-agence{font-size:13px;color:var(--mute);margin:14px 0 0}
.vt-agence b{font-family:"Geist Mono",monospace;color:var(--ink);font-weight:500}
.vt-est{padding:24px}
.vt-est .tag{float:right}
.vt-est .price{font-family:"Geist Mono",monospace;font-weight:500;font-size:clamp(36px,4.4vw,52px);letter-spacing:-.04em;line-height:1.05;margin:4px 0 2px;font-variant-numeric:tabular-nums}
.vt-est .price small{font-family:Geist,system-ui,sans-serif;font-size:13px;color:var(--mute);font-weight:400;letter-spacing:0;margin-left:8px}
.vt-est .cycle{font-size:12.5px;color:var(--mute);min-height:1.5em;margin:6px 0 0}
.vt-est .formula{margin-top:14px;padding-top:14px;border-top:1px dashed var(--line);font-size:12px;line-height:1.75;color:var(--mute)}
.vt-est .formula b{color:var(--ink);font-weight:500;font-family:"Geist Mono",monospace}
.vt-real{margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}
.vt-real p{margin:0 0 12px;font-size:13.5px;font-weight:500}
.vt-real .btn{width:100%;justify-content:center}
.vt-mini{display:flex;gap:6px 10px;flex-wrap:wrap;margin:12px 0 0;font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--mute);justify-content:center}
.vt-mini b{color:var(--acc);font-weight:500}
.vt-unit{width:100%;display:flex;flex-direction:column;gap:12px}
.vt-unit .urow{display:grid;grid-template-columns:200px auto minmax(0,1fr);gap:16px;align-items:center;transition:opacity .3s}
.vt-unit .urow.off{opacity:.3}
.vt-unit .urow .five{display:flex;gap:5px}
.vt-unit .urow .five i{width:22px;height:22px;border-radius:6px;background:var(--acc);opacity:0;transform:scale(.6);transition:opacity .35s var(--ease),transform .35s var(--ease)}
.vt-scene.on .vt-unit .urow .five i{opacity:1;transform:none}
.vt-unit .urow .five i:nth-child(2){transition-delay:.07s}.vt-unit .urow .five i:nth-child(3){transition-delay:.14s}.vt-unit .urow .five i:nth-child(4){transition-delay:.21s}.vt-unit .urow .five i:nth-child(5){transition-delay:.28s}
.vt-unit .urow .up{font-family:"Geist Mono",monospace;font-size:12px;color:var(--mute)}
.vt-unit .urow .up b{color:var(--ink);font-weight:500;font-size:14px}
.vt-utot{font-size:14px;color:var(--mute);margin:22px 0 0;padding-top:16px;border-top:1px solid var(--line)}
.vt-utot b{font-family:"Geist Mono",monospace;color:var(--ink);font-weight:500}
.vt-incl2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:40px;align-items:start}
.vt-incl2 .incl .r{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:2px 16px}
.vt-incl2 .incl .r span{flex:1 1 14ch;min-width:0}
.vt-incl2 .incl .r b{flex:0 0 auto;white-space:nowrap;margin-left:auto}
/* /methode (S161g) : les cinq règles à sélecteur (le plancher, la ligne par moteur, le registre), les croyances en accordéon, le chiffre nu barré */
.vt-next{border:0;background:none;padding:0;margin:22px 0 0;font-size:14px;color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.vt-floor{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px 18px;align-items:center;margin-top:26px;padding-top:18px;border-top:1px solid var(--line);font-size:13.5px}
.vt-floor .lab{font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);text-transform:uppercase;letter-spacing:.04em}
.vt-inst .obj .vt-die{justify-content:flex-start;margin:0}
.vt-engs{display:flex;flex-direction:column}
.vt-engs .er{display:grid;grid-template-columns:190px minmax(0,1fr);gap:18px;padding:16px 0;border-bottom:1px dashed var(--line);align-items:start}
.vt-engs .er:last-child{border-bottom:0}
.vt-engs .er p{margin:0;font-size:14px;line-height:1.6;color:#3B3E4E}
.vt-regstats{display:flex;gap:10px 30px;flex-wrap:wrap;margin:18px 0 0;font-family:"Geist Mono",monospace;font-size:12px;color:var(--mute)}
.vt-regstats b{color:var(--ink);font-weight:500;font-size:15px;margin-right:7px}
.vt-croy>summary{font-size:14.5px;gap:14px;padding:10px 0}
.vt-croy>summary .q{flex:1;min-width:0}
.vt-croy>summary .q:before{content:"« "}.vt-croy>summary .q:after{content:" »"}
.vt-croy>summary .tag{flex:none}
.vt-croy .body .preuve{margin-top:10px;padding-top:8px;border-top:1px dashed var(--line);font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute)}
.vt-croy .body .preuve a{text-decoration:underline;text-underline-offset:3px}
.vt-veille{font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);margin:18px 0 0}
.vt-naked{font-family:"Geist Mono",monospace;font-weight:500;letter-spacing:-.05em;line-height:1;margin:34px 0 0;display:flex;flex-direction:column;align-items:center;gap:18px}
.vt-naked .bad{font-size:clamp(44px,7vw,92px);color:#6E7178;position:relative}
.vt-naked .bad:after{content:"";position:absolute;left:-6%;right:-6%;top:52%;height:4px;background:var(--hot);transform:scaleX(0);transform-origin:left;transition:transform .7s var(--ease) .5s}
.vt-scene.on .vt-naked .bad:after{transform:scaleX(1)}
.vt-naked .good{font-size:clamp(44px,7vw,92px);color:#fff}
.vt-naked .good i{font-style:normal;color:var(--acc2)}
.vt-naked small{font-family:"Geist Mono",monospace;font-size:12.5px;letter-spacing:0;color:#9EA1A8;font-weight:400}
/* /demo (S161j) : la fenêtre d'app prend tout l'écran sous la barre ; les espaces et l'étiquette vivent dans sa barre ; un geste arrêté se dit en surimpression */
.vt-scene.vt-demo{justify-content:flex-start;padding:20px 28px 16px;max-width:1360px;height:calc(100svh - var(--vt-barh,64px));min-height:0}
/* la tête de la démo (préférence owner S161k) : le sur-titre, une phrase, les deux espaces ; dessous, l'étiquette de l'espace en clair */
.vt-dhead{display:flex;gap:8px 22px;align-items:center;flex-wrap:wrap;margin:0 0 6px}
.vt-dhead .vt-eye{margin:0;flex-basis:100%}
.vt-dhead h1{font-size:clamp(20px,2.2vw,28px);letter-spacing:-.025em;line-height:1.15;font-weight:600;margin:0 auto 0 0}
.vt-dmeta{font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);margin:0 0 12px}
.vt-dmeta b{color:var(--hot);font-weight:500}.vt-dmeta.real b{color:var(--acc)}
.vt-demo+.vt-cta{margin-top:40px}
.vt-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.vt-demo .win{flex:1;min-height:0;display:flex;flex-direction:column;position:relative}
.vt-demo .win iframe{flex:1;height:auto;min-height:0}
.vt-demo .win .bar{gap:12px;flex-wrap:wrap}
.vt-demo .win .bar .seg button{font-size:12px;padding:4px 11px}
.vt-demo .win .bar .url{margin:0 auto}
.vt-dlab{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);white-space:nowrap}
.vt-dlab b{color:var(--hot);font-weight:500}.vt-dlab.real b{color:var(--acc)}
.vt-dtoast{position:absolute;left:50%;bottom:18px;transform:translate(-50%,10px);opacity:0;pointer-events:none;margin:0;max-width:min(680px,92%);background:var(--ink);color:#fff;border-radius:14px;box-shadow:var(--sh);padding:12px 18px;font-size:13.5px;line-height:1.5;transition:opacity .3s var(--ease),transform .3s var(--ease);z-index:8}
.vt-dtoast.on{opacity:1;transform:translate(-50%,0);pointer-events:auto}
.vt-dtoast b{font-weight:600}.vt-dtoast a{color:#fff;text-decoration:underline;text-underline-offset:3px;margin-left:6px;white-space:nowrap}
/* dans la fenêtre : le bureau garde ses invitations à plonger ; une plongée garde sa tête et voile son corps (jamais un flou muet) */
body.vitrine #brandchip,body.vitrine .avatar{cursor:default}
body.vitrine-veil main.wrap>*:not(.plhead):not(.eyebrow):not(.verdict):not(.sub):not(.vt-veilc){filter:blur(7px);opacity:.55;pointer-events:none;user-select:none}
.vt-veilc{position:sticky;top:96px;z-index:6;height:0;display:flex;justify-content:center;align-items:flex-start}
.vt-veilc .in{margin-top:34px;width:min(440px,92%);background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);padding:22px 24px 20px}
.vt-veilc .k{margin:0 0 6px}
.vt-veilc h3{font-size:22px;font-weight:600;letter-spacing:-.02em;margin:0 0 10px}
.vt-veilc ul{margin:0 0 14px;padding:0 0 0 18px;font-size:14px;line-height:1.7;color:#3B3E4E}
.vt-veilc .t{margin:0 0 14px;font-size:13.5px;color:var(--mute)}.vt-veilc .t b{color:var(--ink);font-weight:600}
.vt-veilc .btn{width:100%;justify-content:center}.vt-veilc .btn.sm{margin-top:8px;border-color:transparent;box-shadow:none;background:none;color:var(--mute)}
/* /ressources (S161l) : le hub (les portes des articles, l'index du glossaire) et le gabarit de lecture (tête, donnée mesurée, colonne de lecture, sources, voir aussi, licence) */
.vt-doors .meta{font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);white-space:nowrap}
.vt-gloss{list-style:none;margin:34px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 40px;width:100%;border-top:1px solid var(--line)}
.vt-gloss li{border-bottom:1px solid var(--line)}
.vt-gloss a{display:flex;justify-content:space-between;gap:12px;align-items:baseline;padding:15px 2px;font-size:16px;font-weight:600;letter-spacing:-.01em}
.vt-gloss a .ar{color:var(--faint);transition:color .2s}.vt-gloss a:hover .ar{color:var(--hot)}
.vt-read{max-width:760px;margin:0 auto;padding:56px 28px 0}
.vt-read .back{font-size:13px;color:var(--mute);text-decoration:underline;text-underline-offset:3px}
.vt-read .vt-eye{margin:22px 0 14px}
.vt-read h1{font-size:clamp(30px,4vw,46px);line-height:1.06;letter-spacing:-.03em;font-weight:600;margin:0 0 20px;text-wrap:balance}
.vt-read .chapo{font-size:19px;line-height:1.55;color:var(--ink);margin:0}
.vt-read .chapo a,.vt-body a{text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--faint)}
.vt-mesure{margin:34px 0 0;padding:22px 24px}
.vt-mesure .say{font-size:15px;font-weight:600;margin:4px 0 14px}
.vt-mesure.missing{border:1.5px dashed var(--faint);background:none;box-shadow:none;color:var(--mute);font-size:13px}
.vt-body{margin:36px 0 0}
.vt-body h2{font-size:22px;letter-spacing:-.02em;font-weight:600;margin:38px 0 10px;line-height:1.2}
.vt-body p,.vt-body li{font-size:16px;line-height:1.72;color:#2E3036}
.vt-body p{margin:0 0 16px}.vt-body ol{margin:0 0 16px;padding-left:22px}.vt-body li{margin-bottom:8px}
.vt-body b{font-weight:600;color:var(--ink)}
.vt-endnotes{margin:44px 0 0;padding-top:22px;border-top:1px solid var(--line)}
.vt-endnotes .k{margin:0 0 8px}
.vt-endnotes ul{margin:0 0 24px;padding-left:18px;font-size:13.5px;line-height:1.65;color:var(--mute)}
.vt-see{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 24px}
.vt-see a{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:6px 13px;font-size:13px;font-weight:500}
.vt-see a:hover{border-color:var(--faint)}
.vt-lic{font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);margin:0 0 56px}
/* scène 11 · le bloc de conversion (le même composant en bas de chaque page) et le pied complet */
.vt-cta{background:var(--ink);color:#fff;scroll-snap-align:start}
.vt-cta .in{max-width:780px;margin:0 auto;padding:60px 28px 64px;text-align:center;min-height:62svh;display:flex;flex-direction:column;justify-content:center}
.vt-cta .what{font-family:"Geist Mono",monospace;font-size:11.5px;color:#9EA1A8;margin:0 0 14px}
.vt-cta h2{font-size:clamp(26px,3.4vw,42px);letter-spacing:-.03em;line-height:1.08;font-weight:600;margin:0 0 6px;text-wrap:balance}
.vt-cta .df{margin:18px auto 0}
.vt-cta .df .dfnote{color:#9EA1A8}.vt-cta .df .dfnote.err{color:#FF9B7D}
.vt-cta .df .btn.primary{background:#fff;color:var(--ink);border-color:#fff}
.vt-cta .vt-promise{color:#9EA1A8}.vt-cta .vt-promise b{color:#fff}
.pfoot.full{display:grid;grid-template-columns:minmax(0,1.5fr) repeat(3,minmax(0,1fr));gap:28px;align-items:start;padding-top:40px}
.pfoot.full .col{display:flex;flex-direction:column;gap:9px}
.pfoot.full .col>b{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);font-weight:600;margin-bottom:3px}
.pfoot.full .col p{margin:8px 0 0;max-width:34ch;line-height:1.55}
.pfoot.full .right{grid-column:1/-1;margin:0;padding-top:18px;border-top:1px solid var(--line)}
@media (max-height:760px) and (min-width:981px){.vt-scene{padding:26px 28px}.vt-h1{font-size:clamp(34px,4.4vw,52px)}.vt-inst .obj{min-height:400px}}
@media (max-width:980px){
  .vt-inst,.vt-two{grid-template-columns:1fr;gap:26px}
  .vt-scene .seg{max-width:100%;overflow-x:auto;scrollbar-width:none}.vt-scene .seg button{white-space:nowrap;flex:none}
  .vt-inst .gwrap .tip{white-space:normal;max-width:92%;text-align:center}
  .vt-inst .obj{min-height:0}
  .vt-path{grid-template-columns:1fr;gap:28px}
  .vt-path:before{left:9px;right:auto;top:0;bottom:0;width:2px;height:auto}
  .vt-path li{padding:0 0 0 42px}
  .vt-engs .er{grid-template-columns:1fr;gap:8px}
  .vt-gloss{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}
  .vt-simul{grid-template-columns:1fr;gap:22px}.vt-incl2{grid-template-columns:1fr;gap:22px}.vt-unit .urow{grid-template-columns:1fr;gap:6px}
  .vt-path li.here:after{position:static;display:block;padding:0;margin:0 0 2px;background:none}
  .vt-inst .obj .podium{grid-template-columns:repeat(2,minmax(0,1fr))}.vt-mos{height:260px}
  .pfoot.full{grid-template-columns:1fr 1fr}
}
@media (max-width:600px){
  .top.pub .right .login{display:none}
  .vt-scene{min-height:calc(100svh - 56px);padding:40px 16px}
  .vt-scene.vt-demo{height:calc(100svh - var(--vt-barh,56px));padding:12px 10px 10px}.vt-dhead h1{font-size:18px}.vt-dmeta{font-size:10.5px}.vt-demo .win .bar .url{display:none}.vt-dlab{margin-left:auto}
  .vt-lead{font-size:16px}.vt-sub{font-size:15px}
  .vt-cue{display:none}
  .vt-sim{margin-top:24px}.vt-dots{margin-left:0}
  .vt-die{gap:8px}.vt-die .sq{width:56px;font-size:9.5px}.vt-die .sq i{width:52px;height:52px;border-radius:13px;font-size:20px}
  .vt-inst .obj .rail{margin:64px 6px 60px}
  .vt-doors a{grid-template-columns:minmax(0,1fr) auto;gap:6px 14px}.vt-doors .kd{grid-column:1/-1}
  .vt-gloss{grid-template-columns:1fr}.vt-read{padding:34px 16px 0}.vt-read .chapo{font-size:17px}.vt-body p,.vt-body li{font-size:15.5px}
  .vt-cta .in{padding:44px 16px 48px}
  .pfoot.full{grid-template-columns:1fr;gap:22px}
}

/* ─── 17. résultat de l'analyse gratuite (S167) : « votre bureau, arrêté au premier relevé ». Les instruments du kit dans l'état première
   fenêtre : le cadran armé (bande sans aiguille), le ruban de sondage (1 relevé posé sur 5, moteurs non relevés en rubans vides), les
   questions du marché en colonnes d'intention, la fourchette qui se resserre, la barre de conversion. Classes préfixées rs-. ─── */
/* le cadran armé, recomposé sans aiguille : le compte au centre de l'anneau, la fourchette en segment de l'anneau fermé par deux butées
   qui portent leur valeur, la graduation réduite à 0 et 100. Avec o.arm.rows, les relevés se posent sous le compte, un ruban par moteur. */
.gwrap.arm{margin-top:14px}
.gwrap.arm .gdial{position:relative}
.gwrap.arm .gcenter{top:53.3%;transform:translateY(-50%)}
.gwrap.arm .gbig small{font-size:24px;margin-left:6px}
.gwrap.arm .gsvg .band{stroke:var(--acc);opacity:.3;stroke-width:14}
.gwrap.arm .cap{stroke:var(--acc);stroke-width:2.5;stroke-linecap:round;opacity:0;transition:opacity .4s var(--ease) 1.7s}
.gwrap.arm .blab{font-family:"Geist Mono",monospace;font-size:12.5px;font-weight:500;fill:var(--acc);opacity:0;transition:opacity .4s var(--ease) 1.8s}
.gwrap.arm.on .cap,.gwrap.arm.on .blab{opacity:1}
.gwrap.arm .gfoot{margin-top:2px}
.gwrap.arm .tip{white-space:normal;width:100%;text-align:center;line-height:1.4}
/* le moteur se NOMME à côté de son ruban, pastille ronde : un carré est toujours un relevé, jamais un moteur (retour owner S167d : « on se perd ») */
.grows{display:grid;gap:5px;justify-content:center;margin-top:12px}
.grows .verd{display:grid;grid-template-columns:74px auto;gap:3px;align-items:center;justify-content:center}
.grows .verd>i{grid-row:1}
.grows .verd{grid-auto-flow:column;grid-auto-columns:10px}
.grows .gl{font-style:normal;font-family:"Geist Mono",monospace;font-size:10px;color:var(--mute);display:inline-flex;align-items:center;gap:5px;justify-content:flex-end;padding-right:5px;white-space:nowrap}
.grows .verd i,.rs-trow .verd i{width:10px;height:10px;border-radius:3px;background:#ECECE8;flex:none}
.grows .gl i.e{width:7px;height:7px;border-radius:50%;background:#1D4ED8;flex:none}.grows .gl i.e.g{background:#F59E0B}
.grows .verd i.ok,.rs-trow .verd i.ok{background:var(--acc)}.grows .verd i.no,.rs-trow .verd i.no{background:#D8D8D3}
.grows .verd i.nm,.rs-trow .verd i.nm{background:var(--ocre)}
.grows .verd i.na,.rs-trow .verd i.na{background:none;border:1px dashed var(--faint)}
.grows .verd i.miss,.rs-trow .verd i.miss{background:none;border:1px solid var(--hot)}
.grows .verd i.pend,.rs-trow .verd i.pend{background:none;border:1px solid var(--line)}
.grows .verd i.landed,.rs-trow .verd i.landed{animation:rsland .35s var(--ease)}
/* le décompte : variante de tête sans cadran. Le compte, les relevés par moteur, la fourchette sur une règle bornée. */
.rs-tally{width:100%;padding:6px 8px 2px}
.rs-tbig{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;font-family:"Geist Mono",monospace;font-size:62px;font-weight:500;letter-spacing:-.04em;line-height:1;font-variant-numeric:tabular-nums}
.rs-tbig small{font-size:26px;color:var(--mute);letter-spacing:-.02em}
.rs-tbig .rs-tsub{font-family:"Geist",sans-serif;font-size:13px;color:var(--mute);letter-spacing:0;font-weight:400;margin-left:6px}
.rs-trows{display:grid;gap:10px;margin:22px 0 36px}
.rs-trow{display:grid;grid-template-columns:150px minmax(0,1fr);gap:12px;align-items:center;font-size:13px}
.rs-trow .verd{display:inline-flex;gap:6px;flex-wrap:wrap}
.rs-trow .verd i{width:20px;height:20px;border-radius:5px}
.rs-trule .bar{position:relative;height:14px;border-radius:7px;background:var(--card2);border:1px solid var(--line);margin-top:24px}
.rs-trule .bd{position:absolute;top:-1px;bottom:-1px;left:0;width:100%;border-radius:4px;background:var(--acc);opacity:0;border-left:2.5px solid var(--acc);border-right:2.5px solid var(--acc);transition:left .9s var(--ease),width .9s var(--ease),opacity .4s}
.rs-trule .bd.on{opacity:1;background:rgba(15,118,110,.3)}
.rs-trule .bd b{position:absolute;top:-22px;font-family:"Geist Mono",monospace;font-size:12.5px;font-weight:500;color:var(--acc);white-space:nowrap}
.rs-trule .bd b.lo{left:0;transform:translateX(-50%)}.rs-trule .bd b.hi{right:0;transform:translateX(50%)}
.rs-trule .ax{display:flex;justify-content:space-between;font-family:"Geist Mono",monospace;font-size:10px;color:var(--faint);margin-top:6px}
.card.rs-tcard{display:block;padding:22px 26px}
@container page (max-width:600px){.rs-trow{grid-template-columns:1fr;gap:6px}.rs-tbig{font-size:52px}}
/* deux états de relevé en plus : nommée sans lien (ocre), relevé manqué (moteur indisponible, vermillon bordé) */
.qrow .verd i.nm,.ans .verd i.nm,.rs-leg i.nm{background:var(--ocre)}
.qrow .verd i.miss,.rs-leg i.miss{background:none;border:1px solid var(--hot)}
.qrow .verd i.e.c{background:var(--ink)}.qrow .verd i.e.m{background:var(--ocre)}
.qrow .verd i.landed{animation:rsland .35s var(--ease)}
@keyframes rsland{from{transform:scale(.2)}60%{transform:scale(1.35)}to{transform:none}}
/* la tête : verdict à gauche, cadran armé à droite */
.rs-head{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:18px 28px;align-items:center;margin-bottom:22px}
.rs-head .verdict{margin:0 0 16px}
.rs-head .gwrap{width:min(100%,340px)}
.rs-head .card.gauge{padding-top:18px}
.rs-head .rs-sub{font-size:15px;color:var(--mute);margin:0 0 18px;max-width:60ch}
.rs-head .rs-sub b{color:var(--ink);font-weight:500}
.rs-acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.rs-acts .btn.kept{color:var(--acc);border-color:var(--acc);background:var(--acc-soft)}
.rs-acts .note{margin:0 0 0 4px}
/* la bande de compteurs : ce qui a été relevé, chaque tuile mène à sa zone */
.rs-count a.card{display:block;transition:transform .25s var(--ease)}
.rs-count a.card:hover{transform:translateY(-1px)}
.rs-count .note{margin-top:2px}
/* une zone : son kicker, sa phrase, son objet */
.rs-zone{margin:0 0 18px;scroll-margin-top:76px}
.rs-zone .rs-say{font-size:20px;font-weight:600;letter-spacing:-.02em;margin:2px 0 4px}
.rs-zone .rs-def{font-size:13px;color:var(--mute);margin:0 0 14px;max-width:72ch}
.rs-zone .rs-def b{color:var(--ink);font-weight:500}
/* le relevé : colonnes de moteurs alignées, en-tête, familles, légende */
.rs-cols{container-type:inline-size;container-name:rs}
.rs-cols .qrow{grid-template-columns:minmax(0,1fr) auto;gap:10px 18px}
.rs-cols .qrow>span:last-child{display:none}
.rs-cols .verds,.rs-colh{display:grid;grid-template-columns:repeat(4,128px);gap:0 10px;align-items:center}
.rs-cols .verd{gap:5px}
.rs-cols .verd i:not(.e){width:15px;height:15px;border-radius:4px}
.rs-cols .verd i.e{margin-right:5px}
.rs-colh span b{display:inline-flex;align-items:center;gap:6px;font-weight:500;color:var(--ink)}
.rs-colh span.off b{color:var(--faint)}
.rs-colh span b i{width:8px;height:8px;border-radius:50%;background:#1D4ED8;flex:none}
.rs-colh span b i.g{background:#F59E0B}.rs-colh span.off b i{background:#D8D8D3}
.rs-cols .verd i.e{display:none}
.rs-cols .verd small{display:none}
.rs-cols .verd.off i:not(.e){border-style:dashed;border-color:var(--line)}
.rs-cols .verd.off i.e{opacity:.35}
.rs-colhrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 18px;align-items:end;padding:0 0 8px;border-bottom:1px solid var(--line)}
.rs-colh span{font-family:"Geist Mono",monospace;font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--mute);display:flex;flex-direction:column;gap:2px}
.rs-colh span.off{color:var(--faint)}
.rs-colh span small{font-size:10px;letter-spacing:0;text-transform:none;color:var(--faint)}
.rs-famh{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin:18px 0 0;padding:0 0 2px}
.rs-famh .badge{font-size:11.5px}
.rs-famh .rs-fcount{font-family:"Geist Mono",monospace;font-size:12px;color:var(--mute)}
.rs-famh .rs-fcount b{color:var(--ink);font-weight:500}
.rs-famh .rs-fcount.zero b{color:var(--hot)}
.rs-leg{display:flex;gap:6px 16px;flex-wrap:wrap;align-items:center;font-size:11.5px;color:var(--mute);margin-top:14px}
.rs-leg span{display:inline-flex;align-items:center;gap:6px}
.rs-leg i{width:10px;height:10px;border-radius:3px;background:#ECECE8;flex:none}
.rs-leg i.ok{background:var(--acc)}.rs-leg i.no{background:#D8D8D3}.rs-leg i.na{background:none;border:1px dashed var(--faint)}.rs-leg i.pend{background:none;border:1px solid var(--line)}
/* le panneau de réponse : le protocole de vérification (ADR-030 D8) */
.rs-proto{margin-top:6px;border:1px solid var(--line);border-radius:14px;padding:12px 16px;font-size:13px}
.rs-proto summary{cursor:pointer;font-weight:600;list-style:none}
.rs-proto summary::-webkit-details-marker{display:none}
.rs-proto summary:after{content:" ▾";color:var(--faint);font-weight:400}
.rs-proto[open] summary:after{content:" ▴"}
.rs-proto ol{margin:10px 0 0;padding-left:18px;color:var(--mute);display:grid;gap:4px}
.rs-off{display:flex;gap:10px;align-items:center;font-size:12.5px;color:var(--mute);border:1px dashed var(--line);border-radius:14px;padding:12px 16px;margin-bottom:12px}
/* concurrents directs et occupants, côte à côte */
.rs-two{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:18px;align-items:start;margin-bottom:18px}
.rs-two .rs-zone{margin:0}
.rs-pair{display:flex;align-items:center;gap:8px;font-weight:500}
.rs-pair small{display:block;font-weight:400;color:var(--faint);font-family:"Geist Mono",monospace;font-size:11px}
.rs-prov{color:var(--mute);font-size:12.5px}.rs-prov b{color:var(--ink);font-weight:500;font-family:"Geist Mono",monospace}
.rs-ext{color:var(--mute);font-size:12px;max-width:34ch}
.rs-two .src .n{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rs-two .src .n small{margin-left:0}
.rs-two .src .g{grid-column:1/-1;font-size:11.5px;color:var(--faint);margin-top:-2px}
/* les questions du marché : quatre colonnes d'intention, le verdict de contenu, les sondées marquées */
.rs-verd{display:flex;gap:10px 22px;flex-wrap:wrap;align-items:baseline;margin:0 0 16px;font-size:13px;color:var(--mute)}
.rs-verd b{font-family:"Geist Mono",monospace;font-weight:500;font-size:22px;color:var(--ink);margin-right:6px;letter-spacing:-.02em}
.rs-verd .v-mes b{color:var(--acc)}.rs-verd .v-ren b{color:var(--ocre)}.rs-verd .v-cre b{color:var(--hot)}
.rs-fams{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px}
.rs-fam h4{margin:0 0 2px;font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px}
.rs-fam h4 .cnt{margin-left:auto;font-family:"Geist Mono",monospace;font-size:12px;color:var(--mute);font-weight:400}
.rs-fam .d{font-size:12px;color:var(--faint);margin:0 0 8px}
.rs-q{display:grid;grid-template-columns:18px minmax(0,1fr);gap:8px;align-items:start;padding:7px 0;border-top:1px solid #F0F0EC;font-size:12.5px;line-height:1.4}
/* S167e : l'observation se donne, l'action reste dans l'app : la question porte le point de sa famille, plus son verdict de contenu */
.rs-q{grid-template-columns:10px minmax(0,1fr)}
.rs-qd{width:7px;height:7px;border-radius:50%;background:var(--faint);margin-top:6px}
.rs-qd.brand{background:var(--fam-brand)}.rs-qd.bofu{background:var(--fam-bofu)}.rs-qd.mofu{background:var(--fam-mofu)}.rs-qd.tofu{background:var(--fam-tofu)}
.rs-q.sonde{font-weight:500}
.rs-q.sonde:after{content:"sondée";grid-column:2;font-family:"Geist Mono",monospace;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--acc);font-weight:400}
.rs-more{margin-top:2px;border:0;background:none;padding:6px 0;font-size:12px;color:var(--mute);text-decoration:underline;text-underline-offset:3px}
/* Google aujourd'hui : trois comptes au-dessus de la carte des positions */
.rs-pos{display:flex;gap:10px 26px;flex-wrap:wrap;align-items:baseline;margin:0 0 14px;font-size:13px;color:var(--mute)}
.rs-pos b{font-family:"Geist Mono",monospace;font-weight:500;font-size:22px;color:var(--ink);margin-right:6px;letter-spacing:-.02em}
.rs-pos .p-top b{color:var(--acc)}.rs-pos .p-near b{color:var(--ocre)}
/* de la photo au film : la même fourchette à 16, 80 puis 320 relevés */
.rs-film{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:18px 36px;align-items:center}
.rs-trk{display:grid;grid-template-columns:150px minmax(0,1fr) 84px;gap:10px 14px;align-items:center;font-family:"Geist Mono",monospace;font-size:12px;color:var(--mute);padding:9px 0}
.rs-trk .lab b{display:block;color:var(--ink);font-weight:500;font-size:13px}
.rs-trk .bar{position:relative;height:14px;border-radius:7px;background:var(--card2);border:1px solid var(--line)}
.rs-trk .bd{position:absolute;top:-1px;bottom:-1px;border-radius:7px;background:var(--band);left:0;width:100%;transition:left .9s var(--ease),width .9s var(--ease)}
.rs-trk.now .bd{background:var(--acc);opacity:.35}
.rs-trk .val{text-align:right;color:var(--ink);font-variant-numeric:tabular-nums}
.rs-trk.calc .val{color:var(--mute)}
.rs-ax{display:grid;grid-template-columns:150px minmax(0,1fr) 84px;gap:0 14px;font-family:"Geist Mono",monospace;font-size:10px;color:var(--faint)}
.rs-ax div{display:flex;justify-content:space-between;grid-column:2}
.rs-adds{display:grid;gap:12px;margin:0;padding:0;list-style:none}
.rs-adds li{display:grid;grid-template-columns:64px minmax(0,1fr);gap:12px;align-items:baseline;font-size:13.5px}
.rs-adds li b{font-family:"Geist Mono",monospace;font-weight:500;font-size:20px;letter-spacing:-.02em;text-align:right}
.rs-adds li span small{display:block;color:var(--mute);font-size:12px}
/* la barre de conversion : collée en bas pendant toute la lecture, un seul bouton */
.rs-bar{position:fixed;left:0;right:0;bottom:0;z-index:28;background:var(--ink);color:#fff;padding:12px 28px;display:flex;align-items:center;gap:8px 18px;flex-wrap:wrap;box-shadow:0 -10px 34px rgba(19,20,23,.22)}
.rs-bar .t{font-size:13.5px;flex:1;min-width:220px}
.rs-bar .t small{display:block;font-family:"Geist Mono",monospace;font-size:10.5px;color:#9EA1A8;margin-top:2px}
.rs-bar .btn.primary{background:#fff;color:var(--ink);border-color:#fff;white-space:nowrap}
body.rs-page .wrap{padding-bottom:150px}
body.rs-page .demo{bottom:92px}
.rs-gone{max-width:460px;margin:80px auto;text-align:center;padding:30px 34px}
.rs-gone .phase{font-weight:600;font-size:18px;margin:6px 0 8px}
.rs-gone p{color:var(--mute);font-size:13.5px;margin:0 0 16px}
/* le ruban se replie selon la largeur de SA carte, pas de la page : colonnes de moteurs en pile, le nom du moteur à côté du ruban */
@container rs (max-width:760px){
  .rs-colhrow{display:none}
  .rs-cols .qrow{grid-template-columns:minmax(0,1fr)}
  .rs-cols .verds{grid-template-columns:minmax(0,1fr);gap:6px 8px}
  .rs-cols .verd small{display:inline;margin-left:8px}
  .rs-cols .verd i.e{display:block;border-radius:50%;margin-right:6px}
  .rs-cols .verd.off i.e{background:#D8D8D3;opacity:1}
}
@container page (max-width:980px){
  .rs-head,.rs-two,.rs-film{grid-template-columns:minmax(0,1fr)}
  .rs-fams{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@container page (max-width:700px){
  .rs-fams{grid-template-columns:1fr}
  .rs-trk,.rs-ax{grid-template-columns:96px minmax(0,1fr) 70px}
  .rs-zone .rs-say{font-size:18px}
}
@media (max-width:600px){
  .rs-bar{padding:10px 16px}
  .rs-bar .t{display:none}
  .rs-bar .btn.primary{width:100%;justify-content:center}
}

/* ─── 18. l'entrée (S191v, plan 3.1, cadrage docs/cadrage-s191v-vitrine-et-entree.md) : de la vitrine au lancement de l'analyse.
   Le fil des trois étapes (vu dès le champ de la vitrine, rappelé à chaque écran), la carte d'entrée et son côté (aperçu fictif
   étiqueté, ce qui rassure), le domaine vérifié avant l'email, le code, le lancement et ses refus datés, l'espace du compte seul.
   Classes préfixées en- (leçon S160c : jamais une classe nue qui en rencontre une autre du kit). ─── */
.en-page{min-height:100vh;display:flex;flex-direction:column}
.en-top{display:flex;align-items:center;gap:12px;padding:16px 28px}
.en-top .right{margin-left:auto;display:flex;gap:14px;align-items:center;font-size:12.5px;color:var(--mute)}
.en-top .right a{text-decoration:underline;text-underline-offset:3px}
.en-main{flex:1;display:grid;grid-template-columns:minmax(0,470px) minmax(0,360px);gap:28px;justify-content:center;align-items:start;padding:20px 28px 90px}
.en-main.solo{grid-template-columns:minmax(0,520px)}
.en-card{padding:28px 30px 24px}
.en-card h1{font-size:26px;letter-spacing:-.025em;font-weight:600;margin:0 0 8px;line-height:1.15;text-wrap:balance;overflow-wrap:anywhere}
.en-card h1 .d{font-family:"Geist Mono",monospace;font-weight:500;letter-spacing:-.02em}
.en-sub{font-size:14px;color:var(--mute);margin:0 0 18px}
.en-sub b{color:var(--ink);font-weight:500}
/* le fil des trois étapes : votre site · votre compte · votre analyse */
.en-fil{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 20px;padding:0;list-style:none}
.en-fil li{display:inline-flex;align-items:center;gap:7px;font-size:12px;color:var(--mute);padding:5px 11px;border-radius:999px;border:1px solid var(--line);background:var(--card);max-width:100%}
.en-fil li b{font-family:"Geist Mono",monospace;font-weight:500;font-size:10.5px;color:var(--faint)}
.en-fil li small{font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.en-fil li.done{color:var(--acc);border-color:var(--acc-soft);background:var(--acc-soft)}
.en-fil li.done b,.en-fil li.done small{color:var(--acc)}
.en-fil li.on{color:var(--ink);border-color:var(--ink)}
.en-fil li.on b{color:var(--hot)}
/* le domaine, vérifié avant tout compte (DNS seulement : aucune requête vers le site) */
.en-dom{display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid var(--line);border-radius:12px;background:var(--card2);font-size:13.5px;margin:0 0 16px;flex-wrap:wrap}
.en-dom .d{font-family:"Geist Mono",monospace;font-weight:500;overflow-wrap:anywhere;min-width:0}
.en-dom .st{margin-left:auto;font-size:12px;color:var(--mute);display:inline-flex;align-items:center;gap:6px}
.en-dom .st .spin{width:12px;height:12px}
.en-dom.ok .st{color:var(--acc)}
.en-dom.ko{background:var(--hot-soft);border-color:var(--hot-soft)}
.en-dom.ko .st{color:var(--hot)}
.en-dom .chg{font-size:12px;color:var(--mute);text-decoration:underline;text-underline-offset:3px;background:none;border:0;padding:0}
.en-dommsg{font-size:12.5px;color:var(--mute);margin:-8px 0 14px}
.en-fix{display:flex;gap:8px;margin:0 0 16px}
.en-fix input{flex:1;min-width:0;font-family:"Geist Mono",monospace}
/* le formulaire : un email, un bouton ; Google s'y ajoute au lancement sans rien recomposer */
.en-form label{display:block;font-size:12.5px;font-weight:500;margin:0 0 6px}
.en-form input[type=email]{width:100%;padding:13px 14px;font-size:15px}
.en-form .btn{width:100%;justify-content:center;margin-top:10px}
.en-form.off{opacity:.45;pointer-events:none}
.en-or{display:flex;align-items:center;gap:10px;color:var(--faint);font-size:12px;margin:14px 0}
.en-or:before,.en-or:after{content:"";flex:1;height:1px;background:var(--line)}
.en-g{width:100%;justify-content:center}
.en-g svg{width:16px;height:16px;flex:none}
.en-err{font-size:12.5px;color:var(--hot);margin:8px 0 0}
/* pourquoi un compte : le bénéfice d'abord, la raison honnête dépliée */
.en-why{margin:18px 0 0;padding:14px 16px;border-radius:12px;background:var(--card2);font-size:13px}
.en-why>p{margin:0}
.en-why details{margin-top:8px}
.en-why summary{cursor:pointer;color:var(--mute);font-size:12.5px;list-style:none;text-decoration:underline;text-underline-offset:3px;display:inline}
.en-why summary::-webkit-details-marker{display:none}
.en-why details p{margin:8px 0 0;color:var(--mute);font-size:12.5px}
.en-cgu{font-size:11.5px;color:var(--mute);margin:16px 0 0}
.en-cgu a{text-decoration:underline;text-underline-offset:3px}
/* le côté : ce que vous recevrez (exemple fictif étiqueté), puis ce qui rassure */
.en-side{display:flex;flex-direction:column;gap:14px}
.en-ap{padding:20px 22px}
.en-ap .fic{display:inline-block;font-family:"Geist Mono",monospace;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ocre);background:var(--ocre-soft);padding:2px 8px;border-radius:999px}
.en-ap h3{font-size:15px;font-weight:600;margin:10px 0 14px;letter-spacing:-.01em}
.en-ap ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:13px}
.en-ap li{display:grid;grid-template-columns:20px minmax(0,1fr);gap:10px;font-size:13px;line-height:1.4}
.en-ap li>b{font-family:"Geist Mono",monospace;color:var(--hot);font-size:11px;font-weight:500;padding-top:2px}
.en-ap li small{display:block;color:var(--mute);font-size:12px;margin-top:2px}
.en-apfoot{font-size:11px;color:var(--faint);margin:14px 0 0}
.en-rel{display:grid;grid-template-columns:repeat(6,12px);gap:4px;margin-top:7px}
.en-rel i{width:12px;height:12px;border-radius:3px;background:#D8D8D3}
.en-rel i.ok{background:var(--acc)}
.en-pairs{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px;font-size:12px;color:var(--mute)}
.en-pairs span{display:inline-flex;align-items:center;gap:6px}
.en-rass{list-style:none;margin:0;padding:14px 18px;border:1px solid var(--line);border-radius:var(--r2);display:flex;flex-direction:column;gap:7px;font-size:12.5px;color:var(--mute)}
.en-rass li{display:grid;grid-template-columns:14px minmax(0,1fr);gap:6px}
.en-rass li:before{content:"✓";color:var(--acc);font-weight:600}
/* le code : la grille .code du kit (§7), le renvoi minuté */
.en-sent{font-size:13px;margin:0 0 14px;padding:10px 14px;border-radius:12px;background:var(--acc-soft);color:var(--acc)}
.en-sent b{font-weight:600;overflow-wrap:anywhere}
.en-resend{font-size:12.5px;color:var(--mute);margin:4px 0 0;display:flex;gap:6px;flex-wrap:wrap}
.en-resend a,.en-resend button{color:var(--ink);text-decoration:underline;text-underline-offset:3px;background:none;border:0;padding:0;font-size:12.5px}
.en-resend .t{font-family:"Geist Mono",monospace}
.code.en-bad input{border-color:var(--hot)}
.code.en-good input{border-color:var(--acc);background:var(--acc-soft)}
/* le lancement : un état à la fois, daté quand il refuse (ADR-031 §6 : jamais un refus muet, jamais un faux succès) */
.en-state{padding:14px 16px;border-radius:12px;font-size:13.5px;margin:0 0 16px;background:var(--card2);line-height:1.5}
.en-state b{font-weight:600}
.en-state.ok{background:var(--acc-soft)}
.en-state.wait{background:var(--ocre-soft)}
.en-state.stop{background:var(--hot-soft)}
.en-state small{display:block;color:var(--mute);font-size:12.5px;margin-top:4px}
.en-quota{display:flex;align-items:center;gap:8px;font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);margin:0 0 16px;flex-wrap:wrap}
.en-quota i{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--acc);margin-right:4px;vertical-align:-1px}
.en-quota i.used{background:#D8D8D3}
.en-quota i.this{background:var(--hot)}
.en-acts{display:flex;gap:10px;flex-wrap:wrap}
.en-acts .btn{flex:1;justify-content:center;min-width:160px}
.en-go{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--mute);margin:14px 0 0}
.en-prog{height:4px;background:#EFEFEB;border-radius:2px;overflow:hidden;margin:14px 0 0}
.en-prog i{display:block;height:100%;width:0;background:var(--acc);transition:width 1.6s var(--ease)}
.en-scene{border:1px dashed var(--faint);border-radius:var(--r2);padding:16px 18px;font-size:12.5px;color:var(--mute);margin-top:16px}
.en-scene b{color:var(--ink);font-weight:500}
/* le champ de la vitrine : le domaine seul, et le fil dessous */
.en-vfil{display:flex;justify-content:center;align-items:center;gap:6px 10px;flex-wrap:wrap;margin:14px 0 0;font-size:12px;color:var(--mute);padding:0;list-style:none}
.en-vfil li{display:inline-flex;gap:6px;align-items:baseline}
.en-vfil li b{font-family:"Geist Mono",monospace;color:var(--hot);font-weight:500;font-size:10.5px}
.en-vfil li small{font-family:"Geist Mono",monospace;color:var(--faint);font-size:10.5px}
.en-vfil li+li:before{content:"→";color:var(--faint);margin-right:4px}
.en-vfree{font-size:12px;color:var(--mute);margin:8px 0 0;text-align:center}
.en-vfree b{color:var(--ink);font-weight:500}
/* l'espace du compte seul : l'app à l'état analyse, à vide (ADR-031 §5 : jamais une antichambre) */
.en-band{display:flex;gap:10px;align-items:center;padding:8px 28px;background:var(--ocre-soft);font-size:12.5px;color:var(--ocre);border-bottom:1px solid var(--line)}
.en-band b{font-weight:600}
.en-band a{margin-left:auto;color:var(--ocre);text-decoration:underline;text-underline-offset:3px}
/* S191y (owner, 01/10) : la bande ne parle que d'un événement d'abonnement, jamais à l'état gratuit ni à l'état mesure ordinaire.
   Ocre : arrêt programmé, conditions à accepter ; vermillon : impayé ; violet : lecture seule. (Le teal du premier mois remboursé est
   retiré avec la garantie : amendement S191z d'ADR-031 §3.)
   Les gestes vont dans .acts ; un geste est un bouton .lk (souligné comme un lien), un lien navigue. */
.en-band.hot{background:var(--hot-soft);color:var(--hot)}.en-band.hot a,.en-band.hot .lk{color:var(--hot)}
.en-band.violet{background:rgba(107,92,165,.1);color:var(--violet)}.en-band.violet a,.en-band.violet .lk{color:var(--violet)}
.en-band .lk{background:none;border:0;padding:0;font:inherit;font-weight:600;color:var(--ocre);text-decoration:underline;text-underline-offset:3px;cursor:pointer;white-space:nowrap}
.en-band .acts{margin-left:auto;display:inline-flex;gap:14px;align-items:center;flex-wrap:wrap}.en-band .acts a{margin-left:0}
@media (max-width:640px){.en-band{flex-wrap:wrap;padding:8px 16px}.en-band .acts{margin-left:0}}
.en-start{display:flex;gap:10px;max-width:620px;margin:0 0 10px}
.en-start input{flex:1;min-width:0;padding:13px 16px;font-size:15px}
.en-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:30px}
.en-tile{padding:16px 18px;font-size:13px;box-shadow:none}
.en-tile p{margin:0;color:var(--mute);font-size:12.5px}
.en-tile .v{font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--faint);margin-top:10px}
.en-tile .v b{color:var(--ink);font-weight:500}
@container page (max-width:880px){.en-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}
@container page (max-width:520px){.en-tiles{grid-template-columns:minmax(0,1fr)}.en-start{flex-direction:column}.en-start .btn{justify-content:center}}
@media (max-width:880px){.en-main{grid-template-columns:minmax(0,520px)}.en-top{padding:12px 16px}}
.en-hide-sm{}
@media (max-width:600px){.en-hide-sm{display:none!important}.en-main{padding:8px 16px 60px}.en-card{padding:22px 18px 20px}.en-card h1{font-size:22px}.en-band{padding:8px 16px}.en-acts .btn{min-width:0;flex-basis:100%}}
/* la home v3 (S191v) : scènes neuves de l'accueil, préfixées vh- (le produit d'abord : le verdict, l'écart à chaque concurrent,
   la fourchette ; neutre par construction ; quatre usages ; comment ça se passe, en quatre marches). */
.vh-fic{display:inline-block;align-self:flex-start;font-family:"Geist Mono",monospace;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ocre);background:var(--ocre-soft);padding:2px 8px;border-radius:999px;margin:0 0 14px}
.live.vh-fact{display:block;text-align:center;margin:20px 0 0;font-size:12.5px}
.live.vh-fact .dot{display:inline-block;vertical-align:middle;margin-right:6px}
.vh-fact a{text-decoration:underline;text-underline-offset:3px;color:var(--mute)}
.vh-gap{width:100%}
.vh-gap .hd{display:grid;grid-template-columns:112px minmax(0,1fr) 150px;gap:14px;font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--faint);text-transform:uppercase;letter-spacing:.04em;margin:0 0 6px}
.vh-gap .hd .ax{display:flex;justify-content:space-between}
.vh-row{display:grid;grid-template-columns:112px minmax(0,1fr) 150px;gap:14px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line);font-size:13px}
.vh-row .nm{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vh-row .trk{position:relative;height:14px}
.vh-row .trk:before{content:"";position:absolute;left:50%;top:-10px;bottom:-10px;width:1px;background:var(--faint)}
.vh-row .bd{position:absolute;top:3px;height:8px;border-radius:4px;background:#D9D9D3}
.vh-row .pt{position:absolute;top:1px;width:12px;height:12px;border-radius:50%;background:var(--ink);transform:translateX(-50%)}
.vh-row.behind .bd{background:rgba(228,87,46,.24)}.vh-row.behind .pt{background:var(--hot)}
.vh-row.ahead .bd{background:rgba(15,118,110,.22)}.vh-row.ahead .pt{background:var(--acc)}
.vh-row .val{font-family:"Geist Mono",monospace;font-size:12px;text-align:right;white-space:nowrap}
.vh-row .val small{display:block;color:var(--mute);font-family:Geist,system-ui,sans-serif;font-size:11.5px}
.vh-gap .note{margin:12px 0 0}
.vh-who{display:flex;flex-direction:column;gap:6px;margin-top:24px}
.vh-who button{display:flex;gap:10px;align-items:baseline;text-align:left;border:1px solid transparent;background:none;border-radius:12px;padding:10px 14px;font-size:14.5px;color:var(--mute);transition:.2s var(--ease)}
.vh-who button b{font-family:"Geist Mono",monospace;font-size:11px;color:var(--faint);font-weight:500}
.vh-who button.on{background:var(--card);border-color:var(--line);color:var(--ink);box-shadow:var(--sh)}
.vh-who button.on b{color:var(--hot)}
.vh-ans{padding:28px 30px;transition:opacity .3s}
.vh-ans.sw{opacity:0}
.vh-ans .who{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);text-transform:uppercase;letter-spacing:.04em;margin:0 0 12px}
.vh-ans .qb{display:inline-block;background:var(--ink);color:#fff;border-radius:14px 14px 4px 14px;padding:10px 15px;font-size:15px;margin:0 0 20px;max-width:100%}
.vh-ans .a{font-size:clamp(18px,2vw,22px);font-weight:600;letter-spacing:-.015em;line-height:1.35;margin:0}
.vh-ans .a .ok{color:var(--acc)}.vh-ans .a .wt{color:var(--bleu)}.vh-ans .a .mono{font-weight:500;letter-spacing:-.02em}
.vh-ans .src{font-size:12px;color:var(--mute);margin:16px 0 0}
.vt-path.vh-four{grid-template-columns:repeat(4,minmax(0,1fr))}
.vt-path.vh-four li{padding-right:22px}
.vt-path.vh-four .pr small{margin-left:6px}
.vt-naked.vh-naked{margin:10px 0 0}
.vt-naked.vh-naked .bad{font-size:clamp(40px,5vw,72px)}
.vt-naked.vh-naked .good{font-size:clamp(30px,3.8vw,54px);color:var(--ink);white-space:nowrap}
.vt-naked.vh-naked .good i{color:var(--acc)}
.vt-naked.vh-naked small{color:var(--mute);font-size:12.5px}
.vh-why{max-width:62ch;margin:30px 0 0;font-size:14px;color:var(--mute);line-height:1.6}
.vh-why b{color:var(--ink);font-weight:600}
/* 4.1b (S218) : la valeur sous l'étiquette d'une action (scène 4), et le repli des actions au téléphone : la règle .act de
   la section 6 ne vaut que dans le conteneur « page » (.wrap), où les scènes de la vitrine ne sont pas. */
.vh-actv{display:block;font-size:12px;margin-top:6px;text-align:right}
@media (max-width:980px){.vt-path.vh-four{grid-template-columns:1fr}.vt-path.vh-four li{padding:0 0 0 42px}}
@media (max-width:600px){.vh-row,.vh-gap .hd{grid-template-columns:82px minmax(0,1fr)}.vh-row .val{grid-column:1 / -1;text-align:left;margin-top:-4px}.vh-gap .hd>span:last-child{display:none}.vh-ans{padding:22px 20px}.vt-scene .act{grid-template-columns:28px minmax(0,1fr)}.vt-scene .act .ba{grid-column:2}.vt-scene .act .vh-actv{text-align:left}}
@media (max-width:360px){.vt-scene .seg button{padding:5px 8px;font-size:12px}}
/* 4.1c (plan 4.1c) : les pages de la vitrine v3 hors accueil, préfixées vp- (aucune règle sur une classe existante).
   Le régime de prix par moteur sous les puces (ADR-033 §2), la date du registre, la note du relevé ChatGPT, ce que « cité »
   veut dire sous les croyances, le formulaire de contact de la confidentialité, l'en-tête du journal. */
.vp-regime{margin:14px 0 0;font-size:12.5px;line-height:1.55;color:var(--mute);max-width:60ch}
.vp-regdate{font-family:"Geist Mono",monospace;font-size:11px;color:#9EA1A8}
.vp-regdate b{color:#fff;font-weight:500}
.vp-enote{margin:8px 0 0 !important;font-size:12.5px !important;line-height:1.55 !important;color:var(--mute) !important}
.vp-cite{margin-top:26px;padding-top:18px;border-top:1px solid var(--line)}
.vp-cite h3{margin:0 0 8px;font-size:15px;font-weight:600}
.vp-cite ul{margin:0;padding-left:18px}
.vp-cite li,.vp-cite p{font-size:13.5px;line-height:1.6;color:#3B3E4E}
.vp-cite p{margin:10px 0 0}
.vp-contact{display:flex;flex-direction:column;gap:8px;max-width:520px;margin:14px 0 6px}
.vp-contact label{font-size:13px;font-weight:500;margin-top:6px}
.vp-contact input[type="email"]{font:inherit;font-size:14px;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;outline:0;width:100%}
.vp-contact input[type="email"]:focus{border-color:var(--acc);box-shadow:0 0 0 3px var(--band)}
.vp-contact input[name="website"]{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.vp-contact .btn{align-self:flex-start;margin-top:8px}
.vp-cnote{min-height:1.4em;margin:2px 0 0;font-size:13px;color:var(--mute)}
.vp-cnote.err{color:var(--hot)}
.vp-journal{max-width:760px}
.vp-journal .entry{scroll-margin-top:80px}
/* la scène dans l'app (S191v, plan 3.2a) : le portrait du §15 (mosaïque, grand compteur) logé sous la barre de l'app ; le lancement
   s'y fond (quota, « vous pouvez fermer ») ; trois phases ; le journal des pages ; la carte de cause et ses issues (dictionnaire
   core/lecture-causes.ts) ; le sondage en direct, relevé par relevé. Classes préfixées sc-. */
.stage.sc-stage{top:61px}
.sc-scene{max-width:min(660px,94vw)}
.sc-head{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);margin:0 0 12px;display:flex;gap:6px 10px;justify-content:center;flex-wrap:wrap}
.sc-head b{color:var(--ink);font-weight:500}
.sc-head i{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--acc);margin-right:3px;vertical-align:0}
.sc-head i.used{background:#D8D8D3}.sc-head i.this{background:var(--hot)}
.sc-ph{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;margin:0 0 16px;padding:0;list-style:none}
.sc-ph li{display:inline-flex;align-items:center;gap:7px;font-size:12px;color:var(--mute);padding:5px 11px;border-radius:999px;border:1px solid var(--line);background:var(--card)}
.sc-ph li b{font-family:"Geist Mono",monospace;font-weight:500;font-size:10.5px;color:var(--faint)}
.sc-ph li.done{color:var(--acc);border-color:var(--acc-soft);background:var(--acc-soft)}.sc-ph li.done b{color:var(--acc)}
.sc-ph li.on{color:var(--ink);border-color:var(--ink)}.sc-ph li.on b{color:var(--hot)}
.sc-ph li.off{opacity:.45}
.sc-ph .ext{font-family:"Geist Mono",monospace;font-size:9.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--ocre);background:var(--ocre-soft);padding:1px 6px;border-radius:999px}
.sc-journal{list-style:none;margin:12px auto 0;padding:0;max-width:420px;text-align:left;min-height:66px}
.sc-journal li{display:flex;gap:10px;align-items:baseline;font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--ink);padding:2px 0;transition:opacity .4s}
.sc-journal li:nth-child(2){opacity:.6}.sc-journal li:nth-child(3){opacity:.3}
.sc-journal li span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}
.sc-journal li em{font-style:normal;font-size:10px;color:var(--mute);flex:none}
.sc-eta{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);margin:10px 0 0}
.sc-eta b{color:var(--ink);font-weight:500}
.sc-fact{text-align:left;margin:14px auto 0;max-width:460px;padding:12px 14px;border-radius:var(--r2);border:1px solid var(--line);font-size:13px}
.sc-fact .k{margin:0 0 6px}
.sc-fact p{margin:0;color:var(--ink);line-height:1.5}
.sc-bots{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:8px;font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute)}
.sc-bots .y{color:var(--acc)}.sc-bots .n{color:var(--hot)}
/* la carte de cause : l'état en étiquette, la phrase du dictionnaire, les issues en gestes */
.sc-cause{text-align:left;margin:14px auto 0;max-width:500px;padding:16px 18px;border-radius:var(--r2);background:var(--card2);font-size:13.5px;line-height:1.5}
.sc-cause.partiel{background:var(--ocre-soft)}
.sc-cause.non_lu{background:var(--hot-soft)}
.sc-cause .et{display:inline-block;font-family:"Geist Mono",monospace;font-size:10px;letter-spacing:.06em;text-transform:uppercase;padding:2px 8px;border-radius:999px;background:var(--card);color:var(--mute);margin:0 0 8px}
.sc-cause.partiel .et{color:var(--ocre)}.sc-cause.non_lu .et{color:var(--hot)}
.sc-cause p{margin:0}
.sc-cause .then{margin-top:10px;padding-top:10px;border-top:1px dashed rgba(19,20,23,.12);color:var(--ink)}
.sc-cause .then b{font-weight:600}
.sc-iss{display:flex;gap:8px 14px;flex-wrap:wrap;align-items:center;margin-top:12px}
.sc-iss .btn{white-space:nowrap}
.sc-iss .btn small{font-family:"Geist Mono",monospace;font-size:10.5px}
.sc-iss a.lk,.sc-iss button.lk{font-size:12.5px;color:var(--ink);text-decoration:underline;text-underline-offset:3px;background:none;border:0;padding:0}
.sc-iss .q{font-size:12px;color:var(--mute);flex-basis:100%}
/* le moteur, en un bloc honnête tant que ses étapes ne sont pas mesurées (3.2b) */
.sc-eng{text-align:left;margin:4px auto 0;max-width:460px}
.sc-eng .t{font-weight:600;font-size:17px;letter-spacing:-.01em;text-align:center;margin:0 0 6px}
.sc-eng .d{font-size:13px;color:var(--mute);text-align:center;margin:0 0 14px}
.sc-bar{height:6px;background:#EFEFEB;border-radius:3px;overflow:hidden}
.sc-bar i{display:block;height:100%;width:0;background:var(--acc);transition:width .9s linear}
.sc-found{display:flex;justify-content:space-between;gap:10px;margin-top:10px;font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute)}
.sc-found b{color:var(--ink);font-weight:500}
/* le sondage en direct : 8 questions × 2 moteurs, un carré = un relevé, la dernière réponse se déroule */
.sc-sond{text-align:left;margin:0 auto;max-width:540px}
.sc-sond .t{font-weight:600;font-size:17px;letter-spacing:-.01em;text-align:center;margin:0 0 4px}
.sc-sond .d{font-size:13px;color:var(--mute);text-align:center;margin:0 0 14px}
.sc-grid{display:grid;grid-template-columns:96px repeat(8,minmax(0,1fr));gap:5px;align-items:center;font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--mute)}
.sc-grid i{display:block;aspect-ratio:1;max-width:22px;border-radius:4px;border:1px solid var(--line);background:none;transition:background .35s var(--ease),border-color .35s}
.sc-grid i.ok{background:var(--acc);border-color:var(--acc)}.sc-grid i.no{background:#D8D8D3;border-color:#D8D8D3}
.sc-grid i.cur{border-color:var(--hot);box-shadow:0 0 0 3px var(--hot-soft)}
.sc-grid .h{text-align:center}
.sc-count{text-align:center;font-size:15px;font-weight:600;margin:14px 0 0}
.sc-count .mono{font-weight:500}
.sc-ans{margin-top:14px;padding:14px 16px;border-radius:var(--r2);background:var(--card2);font-size:13px;line-height:1.65;min-height:118px}
.sc-ans .qq{font-weight:600;margin:0 0 8px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.sc-ans p{margin:0;color:#3B3E4E}
.sc-done{text-align:center}
.sc-done .t{font-size:clamp(22px,3vw,28px);font-weight:600;letter-spacing:-.02em;margin:4px 0 6px;line-height:1.2}
.sc-done .d{font-size:13.5px;color:var(--mute);margin:0 0 16px}
.sc-done .btn{justify-content:center}
.sc-stop{text-align:center}
.sc-stop .t{font-size:20px;font-weight:600;letter-spacing:-.015em;margin:0 0 8px}
.sc-leave{font-size:12px;color:var(--mute);margin:18px 0 0;text-align:center}
.sc-leave b{color:var(--ink);font-weight:500}
.sc-scene.nosite .mlegend,.sc-scene.nosite .sc-journal{display:none}
.sc-scene [data-sc]{display:none}
.sc-scene.lecture [data-sc~="lecture"],.sc-scene.moteur [data-sc~="moteur"],.sc-scene.sondage [data-sc~="sondage"],.sc-scene.pret [data-sc~="pret"],.sc-scene.stop [data-sc~="stop"],.sc-scene.file [data-sc~="file"]{display:block}
.sc-scene.file .qwait{display:block}
@media (max-width:600px){.stage.sc-stage{top:57px}.sc-scene{padding:20px 16px}.sc-grid{grid-template-columns:62px repeat(8,minmax(0,1fr));gap:3px}.sc-cause{padding:14px}.sc-iss .btn{width:100%;justify-content:center}}
/* l'analyse qui se construit (S191v, variante B de 3.2a, « carte blanche » owner) : une seule page, du lancement au résultat.
   À gauche un suivi en quatre étapes (chaque étape finie laisse son résumé, l'étape en cours dit pourquoi) ; à droite les sections
   du résultat, vides puis remplies d'objets concrets (titres de pages, questions, relevés, concurrents). Préfixe ab-. */
.ab-head{max-width:920px;margin:0 0 24px}
.ab-head .verdict{margin:0 0 10px;min-height:1.12em}
.ab-sub{font-size:15px;color:var(--mute);margin:0 0 10px;max-width:760px}
.ab-sub b{color:var(--ink);font-weight:500}
.ab-quota{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);margin:0 0 14px}
.ab-quota i{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--acc)}.ab-quota i.this{background:var(--hot)}
/* 4.2a (S220) : la scène servie par l'app. Une analyse déjà faite sur la fenêtre du quota (gris, comme .en-quota i.used), le
   domaine en encre sur la ligne du quota (le prototype l'écrivait en style= ), le champ de l'écran « Analyser » à la largeur du formulaire. */
.ab-quota i.ab-used{background:#D8D8D3}.ab-quota .ab-qd{color:var(--ink);font-weight:500}
.en-form input.ab-dom{width:100%;padding:13px 14px;font-size:15px}
.ab-prog{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;max-width:560px}
.ab-prog i{display:block;height:5px;border-radius:3px;background:#E7E7E2;overflow:hidden;position:relative}
.ab-prog i b{position:absolute;left:0;top:0;bottom:0;width:0;background:var(--acc);transition:width .7s var(--ease)}
.ab-prog i.ko b{background:var(--hot)}
.ab-grid{display:grid;grid-template-columns:290px minmax(0,1fr);gap:30px;align-items:start}
.ab-track{position:sticky;top:84px}
.ab-step{display:grid;grid-template-columns:28px minmax(0,1fr);gap:12px;padding:13px 0;border-bottom:1px solid var(--line)}
.ab-step:last-of-type{border-bottom:0}
.ab-step .st{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:600;font-family:"Geist Mono",monospace;border:1.5px solid var(--line);color:var(--faint);background:var(--bg);position:relative}
.ab-step.on .st{border-color:var(--bleu-soft);background:var(--bleu-soft);color:var(--bleu)}
.ab-step.on .st:after{content:"";position:absolute;inset:-3px;border-radius:50%;border:2px solid var(--bleu);border-right-color:transparent;animation:spin 1.6s linear infinite}
.ab-step.ok .st{border-color:var(--acc-soft);background:var(--acc-soft);color:var(--acc)}
.ab-step.ko .st{border-color:var(--hot-soft);background:var(--hot-soft);color:var(--hot)}
.ab-step.off{opacity:.45}
.ab-step .nm{font-weight:600;font-size:14px;line-height:1.3}
.ab-step .sm{font-size:12.5px;color:var(--mute);margin-top:3px}
.ab-step .sm b{color:var(--ink);font-weight:500}
.ab-step.ko .sm{color:var(--hot)}
.ab-step .ab-why{display:none;font-size:12.5px;line-height:1.5;background:var(--card2);border-radius:10px;padding:9px 11px;margin-top:9px}
.ab-step.on .ab-why{display:block}
.ab-step .ext{font-family:"Geist Mono",monospace;font-size:9.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--ocre);background:var(--ocre-soft);padding:1px 6px;border-radius:999px;margin-left:4px;vertical-align:1px}
.ab-whym{display:none;grid-column:1/-1;font-size:12.5px;line-height:1.5;background:var(--card2);border-radius:10px;padding:9px 11px;margin:4px 0 0;text-align:left}
.ab-close{font-size:12.5px;color:var(--mute);margin:16px 0 0;line-height:1.5}
.ab-close b{color:var(--ink);font-weight:500}
.ab-sec{margin:0 0 16px;transition:opacity .4s}
.ab-sec.wait{opacity:.6}
.ab-sec .hd{display:flex;align-items:baseline;gap:6px 14px;justify-content:space-between;flex-wrap:wrap;margin:0 0 12px}
.ab-sec .hd h2{font-size:16px;font-weight:600;letter-spacing:-.01em;margin:0}
.ab-sec .hd .n{font-family:"Geist Mono",monospace;font-size:12px;color:var(--mute)}
.ab-sec .hd .n b{color:var(--ink);font-weight:500}
.ab-sec .lead{font-size:13px;color:var(--mute);margin:-4px 0 12px}
.ab-skel{display:flex;flex-direction:column;gap:10px;padding:4px 0}
.ab-skel i{display:block;height:12px;border-radius:6px;background:linear-gradient(90deg,#EDEDE8 0%,#F7F7F3 50%,#EDEDE8 100%);background-size:200% 100%;animation:abshine 1.6s linear infinite}
.ab-skel i:nth-child(2){width:86%}.ab-skel i:nth-child(3){width:72%}.ab-skel i:nth-child(4){width:80%}
.ab-sec:not(.wait) .ab-skel i{animation:none}
@keyframes abshine{to{background-position:-200% 0}}
.ab-skel p{margin:2px 0 0;font-size:12.5px;color:var(--faint)}
.ab-count{display:flex;align-items:baseline;gap:10px;margin:0 0 10px}
.ab-count .big{font-family:"Geist Mono",monospace;font-size:34px;font-weight:500;letter-spacing:-.03em;line-height:1}
.ab-count span{font-size:13px;color:var(--mute)}
.ab-count span b{color:var(--ink);font-weight:500}
.ab-pages{list-style:none;margin:0;padding:0}
.ab-pages li{display:flex;justify-content:space-between;gap:12px;font-size:13px;padding:7px 0;border-bottom:1px dashed var(--line);animation:abin .35s var(--ease)}
.ab-pages li:last-child{border-bottom:0}
.ab-pages li span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ab-pages li em{font-style:normal;font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--mute);flex:none}
@keyframes abin{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.ab-types{display:flex;flex-wrap:wrap;gap:6px 16px;font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);margin:10px 0 0}
.ab-types b{color:var(--ink);font-weight:500}
.ab-bots{margin:12px 0 0;padding:11px 13px;border-radius:12px;background:var(--card2);font-size:13px;line-height:1.5}
.ab-bots small{display:block;margin-top:6px;font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute)}
.ab-bots small .y{color:var(--acc)}.ab-bots small .n{color:var(--hot)}
.ab-cause{margin:12px 0 0;padding:14px 16px;border-radius:12px;font-size:13.5px;line-height:1.5;background:var(--hot-soft)}
.ab-cause.partiel{background:var(--ocre-soft)}
.ab-cause p{margin:0}
.ab-cause .then{margin-top:8px}
.ab-cause .acts2{display:flex;gap:8px 14px;flex-wrap:wrap;align-items:center;margin-top:12px}
.ab-cause .acts2 a,.ab-cause .acts2 button.lk{font-size:12.5px;color:var(--ink);text-decoration:underline;text-underline-offset:3px;background:none;border:0;padding:0}
.ab-cause .acts2 .btn small{font-family:"Geist Mono",monospace;font-size:10.5px}
.ab-leg{display:flex;gap:6px 16px;flex-wrap:wrap;align-items:center;font-size:12px;color:var(--mute);margin:0 0 6px}
.ab-leg i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.ab-leg i.ok{background:var(--acc)}.ab-leg i.no{background:#D8D8D3}.ab-leg i.pe{border:1px solid var(--line)}
.ab-leg i.e{width:8px;height:8px;border-radius:2px;background:#1D4ED8}.ab-leg i.e.g{background:#F59E0B}
.ab-q .qrow .verd i.pend{background:none;border:1px solid var(--line)}
.ab-q .qrow .verd i.cur{box-shadow:0 0 0 3px var(--hot-soft)}
.ab-q .qrow{animation:abin .35s var(--ease)}
.ab-more{font-size:12.5px;color:var(--mute);margin:10px 0 0}
.ab-ans{margin-top:14px;padding:13px 15px;border-radius:12px;background:var(--card2);font-size:13px;line-height:1.65;min-height:96px}
.ab-ans .qq{font-weight:600;margin:0 0 6px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ab-ans p{margin:0;color:#3B3E4E}
.ab-comp{display:flex;flex-direction:column}
.ab-crow{display:grid;grid-template-columns:minmax(0,1fr) 150px auto;gap:14px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line);font-size:13.5px;animation:abin .35s var(--ease)}
.ab-crow:last-child{border-bottom:0}
.ab-crow .nm{display:flex;gap:8px;align-items:center;font-weight:500;min-width:0}
.ab-crow .bar{height:6px;border-radius:3px;background:#EFEFEB;overflow:hidden}
.ab-crow .bar i{display:block;height:100%;background:var(--ink)}
.ab-crow.you .bar i{background:var(--hot)}
.ab-crow .v{font-family:"Geist Mono",monospace;font-size:12px;white-space:nowrap}
.ab-crow.you .nm{color:var(--hot)}
.ab-done{display:flex;gap:16px 24px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:20px 22px}
.ab-done p{margin:0;font-size:14px;max-width:560px}
.ab-done p b{font-weight:600}
.ab-done small{display:block;color:var(--mute);font-size:12.5px;margin-top:4px}
.ab-stop .btn{margin-top:4px}
/* 3.2b (S212b) : les étapes du moteur v3. La durée attendue d'une étape à venir (médiane mesurée), la barre au temps d'une étape
   qui ne montre rien avant sa fin (bleu, ocre au-delà du p90), la fiche en lecture seule, les quatre moments, les concurrents en quatre gestes. */
.ab-step .ab-du{font-family:"Geist Mono",monospace;font-size:11px;font-weight:400;color:var(--faint);margin-left:6px;white-space:nowrap}
.ab-tbar{height:4px;border-radius:2px;background:#EDEDE8;overflow:hidden;margin:14px 0 0}
.ab-tbar>i{display:block;height:100%;width:0;background:var(--bleu);transition:width .6s linear}
.ab-tbar.ab-long>i{background:var(--ocre)}
.ab-tnote{font-size:12.5px;color:var(--mute);margin:7px 0 0;min-height:1.5em}
.ab-fx{color:var(--mute);font-weight:400}
.ab-fiche{margin:12px 0 0;border:1px solid var(--line);border-radius:12px;padding:13px 15px;animation:abin .35s var(--ease)}
.ab-fiche .ab-fk{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);margin:0 0 9px}
.ab-fiche .ab-fk .ab-fx{text-transform:none;letter-spacing:0}
.ab-fiche dl{display:grid;grid-template-columns:118px minmax(0,1fr);gap:6px 14px;margin:0;font-size:13.5px}
.ab-fiche dt{color:var(--mute)}
.ab-fiche dd{margin:0;font-weight:500;min-width:0}
.ab-fiche .ab-fnote{font-size:12.5px;color:var(--mute);margin:10px 0 0}
.ab-fiche .ab-cv{font-family:"Geist Mono",monospace;font-size:10.5px;font-weight:400;color:var(--acc);background:var(--acc-soft);border-radius:999px;padding:1px 7px;margin-left:4px;white-space:nowrap}
.ab-fams{display:flex;flex-direction:column;margin:0 0 2px}
.ab-fam{display:grid;grid-template-columns:150px minmax(0,1fr);gap:4px 14px;align-items:baseline;padding:9px 0;border-bottom:1px dashed var(--line);font-size:13px}
.ab-fam:last-child{border-bottom:0}
.ab-acts{list-style:none;margin:0 0 12px;padding:0}
.ab-acts li{display:grid;grid-template-columns:18px minmax(0,1fr);gap:8px;align-items:center;font-size:13px;padding:4px 0;color:var(--faint)}
.ab-acts li.ab-ok{color:var(--mute)}
.ab-acts li.ab-on{color:var(--ink);font-weight:500}
.ab-acts .ab-m{font-family:"Geist Mono",monospace;font-size:12px;text-align:center;color:var(--acc)}
.ab-acts .ab-m i{display:inline-block;width:10px;height:10px;border-radius:50%;border:2px solid var(--bleu);border-right-color:transparent;animation:spin 1.2s linear infinite;vertical-align:-1px}
.ab-acts li:not(.ab-ok):not(.ab-on) .ab-m{color:var(--faint)}
.ab-noms{display:flex;flex-wrap:wrap;gap:6px}
.ab-nom{display:inline-flex;align-items:center;gap:6px;max-width:100%;border:1px solid var(--line);border-radius:999px;padding:4px 11px;font-size:12.5px;font-weight:500;background:var(--card);animation:abin .35s var(--ease)}
.ab-nom .fav{flex:none}
.ab-nom small{font-family:"Geist Mono",monospace;font-size:10.5px;font-weight:400;color:var(--faint);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ab-nom.ab-lu{border-color:var(--acc-soft);background:var(--acc-soft)}
.ab-nom .ab-ck{color:var(--acc);font-size:11px}
.ab-also{font-size:12.5px;color:var(--mute);line-height:1.55;margin:12px 0 0}
.ab-also b{color:var(--ink);font-weight:500}
.ab-corr{margin-top:12px;padding-top:12px;border-top:1px solid rgba(19,20,23,.08)}
.ab-corr p{margin:0}
.ab-corr .acts2{margin-top:10px}
@media (max-width:900px){.ab-grid{grid-template-columns:minmax(0,1fr);gap:16px}.ab-track{position:static;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
  .ab-step{grid-template-columns:1fr;justify-items:center;text-align:center;border:0;padding:6px 0;gap:6px}.ab-step .nm{font-size:11.5px;font-weight:500}.ab-step .sm,.ab-step .ab-why,.ab-step.on .ab-why,.ab-close,.ab-step .ab-du,.ab-step .ext{display:none}.ab-whym{display:block!important}.ab-step.on .nm{font-weight:600}}
@media (max-width:600px){.ab-crow{grid-template-columns:minmax(0,1fr) auto}.ab-crow .bar{grid-column:1/-1;grid-row:2}.ab-count .big{font-size:28px}.ab-done .btn{width:100%;justify-content:center}
  .ab-fiche dl{grid-template-columns:minmax(0,1fr);gap:0}.ab-fiche dd{margin:0 0 7px}.ab-fam{grid-template-columns:minmax(0,1fr);gap:2px}.ab-cause .acts2 .btn{width:100%;justify-content:center}}

/* ─── 19. le poste de pilotage (S211, plan 3.6, cadrage docs/cadrage-s211-console-exploitation.md, prototype m11-console/) ───
   Classes préfixées cx- (leçon S160c). Page interne : le vocabulaire technique y est permis, l'idiome reste celui de l'app
   (un chiffre en mono, sa fourchette ou son n, un verdict). Couleurs : teal ok, ocre à surveiller ou en pause, vermillon incident, bleu en cours. */
/* le mode courant dans la barre haute */
.cx-live.hot{color:var(--hot)}.cx-live.hot .dot{background:var(--hot)}
.cx-live.ocre{color:var(--ocre)}.cx-live.ocre .dot{background:var(--ocre);animation:none}
.cx-role{font-family:"Geist Mono",monospace;font-size:11.5px;padding:4px 10px;color:var(--mute)}
/* le point d'état des sections voisines */
.voisins a i.cx-ok{background:var(--acc)}.voisins a i.cx-ocre{background:var(--ocre)}.voisins a i.cx-hot{background:var(--hot)}.voisins a i.cx-bleu{background:var(--bleu)}
/* la chaîne : la porte, les étages de la file, la sortie */
.cx-chain{display:grid;grid-template-columns:minmax(0,1fr) 18px minmax(0,1fr) 18px minmax(0,1fr) 18px minmax(0,1fr) 18px minmax(0,1fr);align-items:stretch;gap:0}
.cx-arrow{display:grid;place-items:center;color:var(--faint);font-size:14px}
.cx-stage{background:var(--card2);border:1px solid var(--line);border-radius:var(--r2);padding:14px 14px 12px;min-width:0;display:flex;flex-direction:column;gap:4px}
.cx-stage .k{margin:0 0 2px}.cx-stage .cx-et{margin-left:auto;font-family:"Geist Mono",monospace;font-weight:400;letter-spacing:0;text-transform:none;color:var(--faint);font-size:10.5px}
.cx-stage.hot{border-color:var(--hot);background:var(--hot-soft)}
.cx-stage.pause{border-color:var(--ocre);background:var(--ocre-soft)}
.cx-big{display:flex;align-items:baseline;gap:8px;margin:2px 0 4px}
.cx-big b{font-size:34px;font-weight:500;letter-spacing:-.03em;line-height:1}
.cx-big span{font-size:12px;color:var(--mute)}
.cx-cap{display:flex;gap:3px;flex-wrap:wrap;margin:2px 0 2px}
.cx-cap i{width:12px;height:12px;border-radius:3px;background:#E4E4DF}
.cx-cap i.on{background:var(--acc)}.cx-stage.hot .cx-cap i.on{background:var(--hot)}
.cx-l{margin:0;font-size:12px;color:var(--mute);display:flex;gap:6px;justify-content:space-between}
.cx-l b{color:var(--ink);font-weight:500}.cx-l.hotc b{color:var(--hot)}.cx-l.ocrec b{color:var(--ocre)}
.cx-p{margin:4px 0 0;font-family:"Geist Mono",monospace;font-size:11px;color:var(--ocre);font-weight:500}
.cx-feeds{display:flex;gap:4px;flex-wrap:wrap;margin-top:auto;padding-top:8px}
.cx-feed{font-family:"Geist Mono",monospace;font-size:10.5px;padding:2px 7px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--mute)}
.cx-feed.hot{border-color:var(--hot);color:var(--hot);background:var(--hot-soft)}
/* barres : profondeur de file, analyses du jour */
.cx-bars svg{display:block;width:100%;height:auto;overflow:visible}
.cx-bars text{font-family:"Geist Mono",monospace;font-size:10px;fill:var(--faint)}
.cx-bars .ax{stroke:var(--line)}
.cx-bars .a{fill:var(--acc)}.cx-bars .hi{fill:var(--hot)}.cx-bars .b{fill:#D8D8D3}.cx-bars .fut{fill:#ECECE8}
.cx-bars .thr{stroke:var(--hot);stroke-dasharray:4 4;opacity:.7}.cx-bars .thl{fill:var(--hot)}
.cx-bars .zone{fill:var(--ocre-soft)}.cx-bars .zl{fill:var(--ocre);font-size:10px}
.cx-bars .now{stroke:var(--ink);stroke-dasharray:2 3;opacity:.5}
.cx-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:11.5px;color:var(--mute);margin-top:8px}
.cx-legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:-1px;background:var(--acc)}
.cx-legend i.b{background:#D8D8D3}.cx-legend i.thr{height:0;border-top:2px dashed var(--hot);background:none;width:14px;vertical-align:3px}.cx-legend i.zone{background:var(--ocre-soft);border:1px solid var(--ocre)}
/* les fenêtres d'un client : un carré par jour */
.cx-wins{display:inline-flex;gap:3px;vertical-align:middle}
.cx-wins i{width:11px;height:11px;border-radius:3px;background:var(--acc)}
.cx-wins i.p{background:var(--ocre)}.cx-wins i.x{background:var(--hot)}
.cx-wins i.s{background:repeating-linear-gradient(45deg,var(--acc) 0 2px,var(--acc-soft) 2px 4px)}
.cx-wins i.n{background:none;border:1px dashed var(--line)}
/* la marge par moteur : règle de 50 à 90 %, seuil de 70 %, bande des sept jours */
.cx-mrow{display:grid;grid-template-columns:minmax(0,190px) minmax(0,1fr) 120px;gap:18px;align-items:center;padding:12px 0;border-bottom:1px solid #F0F0EC}
.cx-mrow:last-child{border-bottom:0}
.cx-mn b{display:block;font-size:13.5px;font-weight:600}.cx-mn span{font-size:11px;color:var(--mute)}
.cx-mr{position:relative;height:30px}
.cx-mr:before{content:"";position:absolute;left:0;right:0;top:11px;height:2px;background:var(--line)}
.cx-mr .thr{position:absolute;top:2px;height:20px;border-left:2px dashed var(--hot);opacity:.75}
.cx-mr .band{position:absolute;top:6px;height:12px;background:var(--band);border-radius:6px}
.cx-mrow.bad .cx-mr .band{background:rgba(228,87,46,.18)}
.cx-mr .mk{position:absolute;top:3px;width:3px;height:18px;margin-left:-1.5px;background:var(--acc);border-radius:2px}
.cx-mrow.bad .cx-mr .mk{background:var(--hot)}
.cx-mr .ax{position:absolute;top:21px;font-family:"Geist Mono",monospace;font-size:9.5px;color:var(--faint)}
.cx-mr .a0{left:0}.cx-mr .a1{right:0}.cx-mr .a70{transform:translateX(-50%);color:var(--hot)}
.cx-mv{text-align:right}.cx-mv b{display:block;font-size:18px;font-weight:500}.cx-mv small{font-size:10.5px;color:var(--faint)}
/* prévisionnel contre réel : trois trajectoires, le réel en points */
.cx-plan svg{display:block;width:100%;height:auto;overflow:visible}
.cx-plan text{font-family:"Geist Mono",monospace;font-size:10px;fill:var(--faint)}
.cx-plan .ax{stroke:var(--line)}.cx-plan .gr{stroke:#EDEDE9}
.cx-plan .sc{fill:none;stroke-width:1.5}.cx-plan .sc.central{stroke:var(--ink);opacity:.55}.cx-plan .sc.prudent,.cx-plan .sc.ambitieux{stroke:var(--faint);stroke-dasharray:4 4}
.cx-plan .scl{font-size:10.5px}.cx-plan .scl.central{fill:var(--mute)}
.cx-plan .reel{fill:none;stroke:var(--acc);stroke-width:2.5;stroke-linejoin:round}
.cx-plan .rp{fill:var(--acc);stroke:#fff;stroke-width:1.5}
.cx-plan .now{stroke:var(--ink);stroke-dasharray:2 3;opacity:.45}.cx-plan .nowl{fill:var(--mute)}
/* l'incident : ouvert, acquitté, clos avec sa cause */
.cx-inc{border:1px solid var(--line);border-left:3px solid var(--ocre);border-radius:var(--r2);padding:14px 16px;background:var(--card);margin-bottom:10px}
.cx-inc.crit{border-left-color:var(--hot)}.cx-inc.close{border-left-color:var(--line);background:var(--card2)}
.cx-inc.acq{border-left-style:dashed}
.cx-ih{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.cx-ih b{font-size:14px;font-weight:600}
.cx-kind,.cx-when{font-size:11px;color:var(--faint)}.cx-when{margin-left:auto}
.cx-im{margin:8px 0 0;font-size:13.5px;max-width:78ch}
.cx-cause{margin:10px 0 0;font-size:13.5px;display:flex;gap:10px;align-items:baseline}
.cx-cause span{font-family:"Geist Mono",monospace;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--acc);font-weight:500;flex:none}
.cx-imeta{margin:8px 0 0;font-size:11px;color:var(--mute)}
.cx-iact{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:12px}
/* les contrôles du moniteur extérieur */
.cx-checks{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}
.cx-check{display:grid;grid-template-columns:10px minmax(0,1fr);gap:4px 10px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--card)}
.cx-check i{width:8px;height:8px;border-radius:50%;background:var(--acc);margin-top:5px}
.cx-check.late{border-color:var(--ocre);background:var(--ocre-soft)}.cx-check.late i{background:var(--ocre)}
.cx-check.down{border-color:var(--hot);background:var(--hot-soft)}.cx-check.down i{background:var(--hot)}
.cx-check b{font-family:"Geist Mono",monospace;font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cx-check span{grid-column:2;font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--mute)}
/* le réglage et le chiffre qui le justifie */
.cx-set{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,110px) minmax(0,1.5fr) auto;gap:8px 18px;align-items:center;padding:13px 0;border-bottom:1px solid #F0F0EC}
.cx-set:last-child{border-bottom:0}
.cx-set .nm{font-size:13.5px;font-weight:500}.cx-set .nm code{display:block;font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--faint);font-weight:400;margin-top:2px;overflow-wrap:anywhere}
.cx-set .val{font-family:"Geist Mono",monospace;font-size:16px;font-weight:500}.cx-set .val small{display:block;font-size:10.5px;color:var(--faint);font-weight:400}
.cx-set .just{font-size:12.5px;color:var(--mute)}.cx-set .just b{color:var(--ink);font-weight:500;font-family:"Geist Mono",monospace}
.cx-set .just .meta{display:block;font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--faint);margin-top:3px}
.cx-set .cx-sact{display:flex;gap:6px;justify-content:flex-end}
.cx-set.revoir{background:var(--ocre-soft);margin:0 -14px;padding:13px 14px;border-radius:12px;border-bottom-color:transparent}
/* le motif d'un geste : obligatoire, il entre au journal */
.cx-motif{text-align:left;margin:10px 0 0}.cx-motif span{font-size:12px;font-weight:500}
.cx-motif textarea{width:100%;font:inherit;font-size:13px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;resize:vertical}
.cx-motif textarea:focus{outline:2px solid var(--acc);outline-offset:-1px}
@container page (max-width:980px){
  .cx-chain{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}.cx-arrow{display:none}
}
@container page (max-width:600px){
  .cx-chain{grid-template-columns:minmax(0,1fr)}
  .cx-mrow{grid-template-columns:minmax(0,1fr) auto;gap:6px 12px}.cx-mr{grid-column:1/-1;grid-row:2}
  .cx-set{grid-template-columns:minmax(0,1fr) auto}.cx-set .just{grid-column:1/-1}.cx-set .cx-sact{grid-column:1/-1;justify-content:flex-start}
  .cx-when{margin-left:0;flex-basis:100%}
}
/* en 375, la barre cache .live ; le mode dégradé, lui, reste visible (le mode normal se tait) */
@media (max-width:600px){.top .live.cx-live.hot,.top .live.cx-live.ocre{display:inline-flex;font-size:11px;order:3;flex-basis:100%}}

/* ─── 20. la page de résultat (S212, plan 3.3, cadrage docs/cadrage-s212-resultat-et-marche.md, prototype m9-app/resultat.html) ───
   La suite de la scène B (§18) : même tête, même grille (.ab-grid), mêmes en-têtes de section (.card.ab-sec .hd), mêmes lignes de
   concurrents (.ab-crow) et mêmes carrés de relevés (Kit.qrows). Ajouts préfixés rs3- (leçon S160c) : le sommaire collant à la place
   du suivi d'étapes, la fiche corrigeable, les lignes de la carte avec leur demande, ceux qui prennent la place, la photo et le film. */
body.rs3-page{padding-bottom:40px}
/* un panneau fermé ne laisse pas son ombre sur le bord droit */
body.rs3-page .panel:not(.on){box-shadow:none}
.rs3-rail{position:sticky;top:84px;display:grid;gap:18px}
.rs3-navs{display:flex;flex-direction:column}
.rs3-nav{display:grid;grid-template-columns:28px minmax(0,1fr);gap:12px;padding:11px 0;border-bottom:1px solid var(--line);color:inherit;text-decoration:none}
.rs3-nav:last-child{border-bottom:0}
.rs3-nav .st{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:600;font-family:"Geist Mono",monospace;border:1.5px solid var(--acc-soft);background:var(--acc-soft);color:var(--acc);transition:background .25s var(--ease),color .25s var(--ease),border-color .25s var(--ease)}
.rs3-nav.ko .st{border-color:var(--ocre-soft);background:var(--ocre-soft);color:var(--ocre)}
.rs3-nav .nm{font-weight:600;font-size:14px;line-height:1.3}
.rs3-nav .sm{font-size:12.5px;color:var(--mute);margin-top:3px}
.rs3-nav .sm b{color:var(--ink);font-weight:500;font-family:"Geist Mono",monospace;font-size:12px}
.rs3-nav:hover .nm{color:var(--acc)}
.rs3-nav.on .st{background:var(--ink);border-color:var(--ink);color:#fff}
.rs3-buy{padding:18px 20px}
.rs3-buy .k{margin:0 0 6px}
.rs3-buy .rs3-des{font-family:"Geist Mono",monospace;font-size:30px;font-weight:500;letter-spacing:-.03em;line-height:1.1}
.rs3-buy .rs3-des small{font-size:13px;color:var(--mute);letter-spacing:0;margin-left:4px}
.rs3-buy .rs3-cfg{font-size:12.5px;color:var(--mute);margin:6px 0 14px;line-height:1.5}
.rs3-buy .btn.primary{width:100%;justify-content:center}
.rs3-buy .note{margin:10px 0 0;text-align:center}
.rs3-buy{transition:opacity .3s var(--ease),transform .3s var(--ease)}
.rs3-buy.rs3-off{opacity:0;transform:translateY(6px);pointer-events:none}
.posc.rs3-t10{color:var(--acc)}
.rs3-sec{scroll-margin-top:84px}
/* la ligne de preuve tient la place de la ligne de quota et des quatre barres de la scène : la grille ne bouge pas au clic */
.ab-quota.rs3-meta{margin-bottom:43px}
/* la fiche : ce que nous avons compris de vous, et « Corriger » */
.rs3-dl{display:grid;grid-template-columns:150px minmax(0,1fr);gap:8px 16px;margin:0;font-size:14px}
.rs3-dl dt{color:var(--mute)}
.rs3-dl dd{margin:0;font-weight:500;min-width:0}
.rs3-dl .rs3-dq{display:block;font-size:12.5px;font-weight:400;color:var(--ocre);margin-top:2px}
.rs3-dl .rs3-doubt{text-decoration:underline dotted var(--ocre);text-decoration-thickness:1.5px;text-underline-offset:4px}
.rs3-cv{font-family:"Geist Mono",monospace;font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--acc);background:var(--acc-soft);border-radius:999px;padding:1px 7px;margin-left:6px;vertical-align:1px;font-weight:500}
.rs3-fix{display:flex;gap:10px 18px;align-items:center;flex-wrap:wrap;margin:16px 0 0;padding-top:14px;border-top:1px solid var(--line);font-size:12.5px;color:var(--mute)}
.rs3-fix p{margin:0;flex:1;min-width:220px}
.card.rs3-alert{border-color:var(--ocre);box-shadow:0 0 0 1px var(--ocre),var(--sh)}
.rs3-alertk{display:flex;gap:10px;align-items:baseline;background:var(--ocre-soft);border-radius:12px;padding:11px 14px;margin:0 0 14px;font-size:13.5px;line-height:1.5}
.rs3-alertk b{font-weight:600}
/* les réponses : la légende complète, les groupes par moment, la marque à part */
.rs3-leg{display:flex;gap:6px 16px;flex-wrap:wrap;align-items:center;font-size:12px;color:var(--mute);margin:0 0 4px}
.rs3-leg i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.rs3-leg i.ok{background:var(--acc)}.rs3-leg i.no{background:#D8D8D3}.rs3-leg i.nm{background:var(--ocre)}.rs3-leg i.na{border:1px dashed var(--faint)}.rs3-leg i.miss{border:1px solid var(--hot)}
.rs3-leg i.e{width:8px;height:8px;border-radius:2px;background:#1D4ED8}.rs3-leg i.e.g{background:#F59E0B}
.rs3-gh{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin:18px 0 0;padding-bottom:6px;border-bottom:1px solid var(--line)}
.rs3-gh .n{font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute)}
.rs3-gh .n b{color:var(--ink);font-weight:500}
.rs3-brand{background:var(--card2);border-radius:14px;padding:2px 14px 6px;margin-top:20px}
.rs3-brand .rs3-gh{margin-top:12px}
.rs3-brand .qrow{border-bottom-color:#E6E6E0}
.rs3-brand p.note{margin:8px 0 6px}
.rs3-q .qrow .qt small{color:var(--acc)}
.rs3-q .qrow.pick .qt small:after{content:" →"}
.rs3-miss{font-size:12.5px;color:var(--mute);background:var(--card2);border-radius:10px;padding:9px 12px;margin:12px 0 0}
.rs3-miss b{color:var(--ink);font-weight:500}
/* une réponse gardée, dans le panneau */
.rs3-ans .raw{font-family:"Geist",sans-serif;font-size:13.5px;line-height:1.65}
.rs3-ans .raw mark.me{background:var(--hot-soft);color:var(--hot)}
.rs3-ans .raw mark.nm{background:var(--ocre-soft);color:var(--ocre)}
.rs3-ans .rs3-whyp{font-size:12.5px;color:var(--mute);margin:10px 0 0;line-height:1.5}
.rs3-ans .chips .chip small{color:var(--faint);font-family:"Geist",sans-serif;margin-left:2px}
.rs3-pnote{font-size:12.5px;color:var(--mute);background:var(--card2);border-radius:12px;padding:12px 14px;line-height:1.55;margin:4px 0 0}
/* les concurrents : la preuve sous chaque ligne de la scène ; ceux qui prennent la place, avec leur place */
.ab-crow .rs3-why{grid-column:1/-1;font-size:12.5px;color:var(--mute);margin-top:-6px;line-height:1.5;min-width:0}
.ab-crow .rs3-why q{color:var(--ink);quotes:"« " " »"}
.ab-crow .tag{margin-left:6px}
.rs3-occ{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 14px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.rs3-occ:last-of-type{border-bottom:0}
.rs3-occ .nm{display:flex;gap:8px;align-items:center;font-weight:500;min-width:0;flex-wrap:wrap}
.rs3-occ .pl{grid-column:1;font-size:12.5px;color:var(--mute);min-width:0}
.rs3-occ .btn{grid-column:2;grid-row:1/span 2;align-self:center}
.rs3-more{font-size:12.5px;color:var(--mute);margin:10px 0 0}
/* la carte : chaque question avec sa demande, les 8 posées marquées par leurs carrés */
.rs3-couv{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 6px}
.rs3-couv div{background:var(--card2);border-radius:12px;padding:10px 13px;font-size:12.5px;color:var(--mute);line-height:1.35}
.rs3-couv b{display:block;font-family:"Geist Mono",monospace;font-size:22px;font-weight:500;color:var(--ink);letter-spacing:-.02em}
.rs3-couvn{font-size:12.5px;color:var(--mute);margin:8px 0 0}
.rs3-qr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 16px;align-items:baseline;padding:9px 0;border-bottom:1px dashed var(--line);font-size:13.5px}
.rs3-qr:last-child{border-bottom:0}
.rs3-qr .t{min-width:0}
.rs3-qr .t small{display:block;font-size:12px;color:var(--mute);margin-top:2px}
.rs3-qr .rs3-dem{font-family:"Geist Mono",monospace;font-size:12.5px;text-align:right;white-space:nowrap}
.rs3-qr .rs3-dem small{display:block;font-family:"Geist",sans-serif;font-size:11.5px;color:var(--mute);white-space:normal;max-width:220px;margin-left:auto}
.rs3-qr .rs3-dem.nd{color:var(--faint);font-family:"Geist",sans-serif;font-size:12px}
.rs3-mini{display:inline-flex;gap:3px;vertical-align:0;margin-right:6px}
.rs3-mini i{width:8px;height:8px;border-radius:2px;background:#D8D8D3}
.rs3-mini i.ok{background:var(--acc)}.rs3-mini i.nm{background:var(--ocre)}.rs3-mini i.na{background:none;border:1px dashed var(--faint)}.rs3-mini i.miss{background:none;border:1px solid var(--hot)}
.rs3-qr details{grid-column:1/-1;font-size:12.5px;color:var(--mute)}
.rs3-qr summary{cursor:pointer;list-style:none;display:inline}
.rs3-qr summary::-webkit-details-marker{display:none}
.rs3-qr summary:after{content:" ▾"}
.rs3-qr details[open] summary:after{content:" ▴"}
.rs3-qr details p{margin:4px 0 0}
.rs3-showall{margin:12px 0 0}
/* Google : la demande et la place du jour, en tableau */
.rs3-kw .tbl td:first-child{font-weight:500}
.rs3-kw .tbl .rs3-lead{display:flex;align-items:center;gap:7px;font-family:"Geist Mono",monospace;font-size:12px;color:var(--mute);white-space:nowrap}
.rs3-kw .tbl tr.you .rs3-lead{color:var(--hot)}
.rs3-kwscroll{overflow-x:auto;margin:0 -4px}
/* la photo et le film : ce que la mesure ajoute, dans l'idiome des carrés (un carré = un relevé) */
.rs3-pf{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:14px;margin:4px 0 0}
.rs3-pf>div{border:1px solid var(--line);border-radius:14px;padding:14px 16px}
.rs3-pf>div.rs3-film{border-color:var(--acc-soft);border-top:3px solid var(--acc)}
.rs3-pf .k{margin:0 0 4px}
.rs3-pf .q{font-size:13px;font-weight:500;margin:0 0 10px}
.rs3-rib{display:grid;grid-template-columns:150px auto;gap:6px 10px;align-items:center;font-size:12px;color:var(--mute);margin:5px 0}
.rs3-rib .e{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.rs3-rib .e i{width:8px;height:8px;border-radius:2px;background:#1D4ED8}.rs3-rib .e i.g{background:#F59E0B}.rs3-rib .e i.c{background:var(--ink)}.rs3-rib .e i.m{background:var(--ocre)}
.rs3-rib .sq{display:inline-flex;gap:4px}
.rs3-rib .sq i{width:12px;height:12px;border-radius:3px;background:#D8D8D3}
.rs3-rib .sq i.ok{background:var(--acc)}.rs3-rib .sq i.pend{background:none;border:1px solid #C9C9C3}
.rs3-pf .rs3-pff{font-size:12px;color:var(--mute);margin:10px 0 0}
.rs3-facts{list-style:none;margin:16px 0 0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 22px}
.rs3-facts li{font-size:13.5px;line-height:1.5;padding-left:16px;position:relative}
.rs3-facts li:before{content:"";position:absolute;left:0;top:.55em;width:7px;height:7px;border-radius:2px;background:var(--acc)}
.rs3-facts b{font-weight:600}
.rs3-price{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 28px;align-items:end;margin:20px 0 0;padding-top:18px;border-top:1px solid var(--line)}
.rs3-price .price{margin:0}
.rs3-price .formula{margin:8px 0 0}
.rs3-price .rs3-acts{display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.rs3-price .rs3-acts .note{margin:0;text-align:right}
/* la barre de mobile : le prix et le geste, collés en bas, quand le sommaire passe au-dessus */
.rs3-sharebtn{justify-self:center}
.rs3-share{display:flex;gap:10px 18px;align-items:center;flex-wrap:wrap;margin:18px 0 0;padding-top:16px;border-top:1px dashed var(--line);font-size:12.5px;color:var(--mute)}
.rs3-share p{margin:0;flex:1;min-width:220px}
.rs3-bar{display:none}
@media (max-width:900px){
  .rs3-rail{position:static}
  /* le sommaire passe en rangée sous la tête, comme le suivi d'étapes de la scène en 375 : le ✓ et le nom, sans le résumé */
  .rs3-navs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 6px}
  .rs3-nav{grid-template-columns:1fr;justify-items:center;text-align:center;border:0;padding:4px 0;gap:6px}
  .rs3-nav .nm{font-size:11.5px;font-weight:500}
  .rs3-nav .sm{display:none}
  .ab-quota.rs3-meta{margin-bottom:16px}
  .rs3-buy,.rs3-sharebtn{display:none}
  .rs3-bar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;gap:12px;align-items:center;justify-content:space-between;padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:var(--card);border-top:1px solid var(--line);box-shadow:0 -12px 30px -20px rgba(19,20,23,.25)}
  .rs3-bar .p{font-family:"Geist Mono",monospace;font-size:16px;font-weight:500;white-space:nowrap}
  .rs3-bar .p small{display:block;font-family:"Geist",sans-serif;font-size:11px;color:var(--mute);font-weight:400}
  body.rs3-page{padding-bottom:84px}
  body.rs3-page .demo{bottom:76px}
}
@container page (max-width:600px){
  .rs3-dl{grid-template-columns:minmax(0,1fr);gap:0}.rs3-dl dd{margin:0 0 9px}
  .rs3-couv b{font-size:19px}
  .rs3-qr{grid-template-columns:minmax(0,1fr)}.rs3-qr .rs3-dem{text-align:left}.rs3-qr .rs3-dem small{margin-left:0;max-width:none}
  .rs3-occ{grid-template-columns:minmax(0,1fr)}.rs3-occ .btn{grid-column:1;grid-row:auto;justify-self:start;margin-top:6px}
  .rs3-pf{grid-template-columns:minmax(0,1fr)}.rs3-rib{grid-template-columns:120px auto}
  .rs3-facts{grid-template-columns:minmax(0,1fr)}
  .rs3-price{grid-template-columns:minmax(0,1fr)}.rs3-price .rs3-acts{align-items:stretch}.rs3-price .rs3-acts .btn{justify-content:center}.rs3-price .rs3-acts .note{text-align:left}
}

/* ─── 20b. la page de résultat retenue (S212, revue owner du 05/10) : la composition de m6 (§17, tête validée S167d, zones, barre),
   sur les décisions d'aujourd'hui (compte seul hors marque, ADR-035 ; la fiche et « Corriger », ADR-026 ; le prix du domaine).
   Trois objets neufs, dans l'idiome des carrés : qui les IA citent (une rangée par marque, un carré par question), la demande sous
   chaque question, la demande Google et votre place. ─── */
body.rs3v .rs-q.sonde:after{content:"posée aux IA"}
/* le cadran compte des questions, pas un pourcentage : ses graduations 0 et 100 se taisent (l'anneau reste, l'aiguille viendra avec la mesure) */
body.rs3v .gwrap.arm .gsvg text{display:none}
/* la phrase reste où la scène l'a laissée : la tête s'aligne en haut, pas au milieu du cadran */
body.rs3v .rs-head{align-items:start;margin-top:0}
/* qui les IA citent, sur les questions qui ne vous nomment pas : un carré = une question où l'IA cite la marque (son site en source) */
.rs3-mx{margin:22px 0 0;max-width:520px;display:grid;grid-template-columns:minmax(0,max-content) auto minmax(max-content,1fr);column-gap:12px;align-items:center}
.rs3-mx .k{margin:0 0 8px}
/* S224 (4.3a) : une seule grille pour toutes les rangées. La colonne des noms prend la largeur du plus long (« Vitraux Garnier (vous) »
   ne passe plus sous les carrés, qui restent alignés d'une marque à l'autre) ; un nom trop long pour la carte se coupe en dernier recours.
   S248 (4.8b) : à 375, avec « Semrush AI Visibility Toolkit », la colonne des comptes tombait à 0 px, le compte débordait de
   54 px et la page de résultat défilait en largeur. Deux causes : la colonne des comptes en 1fr (elle seule cède), et le titre et
   la note, qui couvrent toute la grille, versaient leur texte dans les colonnes. Les comptes gardent leur largeur (minmax(max-content,1fr)),
   le titre et la note ne dimensionnent plus rien (width:0, min-width:100%) : c'est le nom qui se coupe. */
.rs3-mx>.k,.rs3-mx>.rs3-mxn{grid-column:1/-1;width:0;min-width:100%}
.rs3-mxr{display:contents}
.rs3-mxr>*{padding:4px 0}
.rs3-mxr .nm{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:500;min-width:0;white-space:nowrap}
.rs3-mxr .nm .rs3-mxt{min-width:0;overflow:hidden;text-overflow:ellipsis}
.rs3-mxr.you .nm{color:var(--hot)}
.rs3-mxr .sq{display:inline-flex;gap:5px}
.rs3-mxr .sq i{width:17px;height:17px;border-radius:4px;background:#ECECE8}
.rs3-mxr .sq i.c{background:var(--ink)}
.rs3-mxr.you .sq i.c{background:var(--acc)}
.rs3-mxr .sq i.x{background:none;border:1px dashed var(--faint)}
.rs3-mxr .v{font-family:"Geist Mono",monospace;font-size:12.5px;color:var(--mute);white-space:nowrap}
.rs3-mxr .v b{color:var(--ink);font-weight:500;font-size:15px}
.rs3-mxr.you .v b{color:var(--hot)}
.rs3-mxr .sq i.landed{animation:rsland .35s var(--ease)}
.rs3-mxn{font-size:11.5px;color:var(--mute);margin:8px 0 0}
/* la fiche en une bande, en tête : ce que nous avons compris, « Corriger » ; ocre quand le site n'est pas lu ou qu'un point est douteux */
.card.rs3-fs{display:flex;gap:8px 16px;align-items:center;flex-wrap:wrap;padding:13px 18px;margin:0 0 18px}
.rs3-fs .k{margin:0;flex-basis:100%}
.rs3-fs .facets{display:flex;flex-wrap:wrap;gap:6px 0;align-items:baseline;font-size:14px;font-weight:500;flex:1;min-width:0}
.rs3-fs .facets span{display:inline}
.rs3-fs .facets span+span:before{content:"·";color:var(--faint);margin:0 9px;font-weight:400}
.rs3-fs .facets .lab{font-weight:400;color:var(--mute);margin-right:5px}
.rs3-fs .rs3-doubt{text-decoration:underline dotted var(--ocre);text-decoration-thickness:1.5px;text-underline-offset:4px}
.rs3-fs .msg{flex-basis:100%;font-size:13px;line-height:1.5;margin:0;color:var(--ink)}
.rs3-fs .msg.o{background:var(--ocre-soft);border-radius:10px;padding:9px 12px}
.rs3-fs .side{display:flex;align-items:center;gap:12px;margin-left:auto}
.rs3-fs .side .note{margin:0}
.card.rs3-fs.alert{border-color:var(--ocre);box-shadow:0 0 0 1px var(--ocre),var(--sh)}
/* la demande sous chaque question : une barre fine (racine de la demande, la plus forte = pleine), le chiffre mensuel en mono */
.rs3-qdem{grid-column:2;display:flex;align-items:center;gap:8px;font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--mute);margin-top:3px}
.rs3-qdem i{display:block;height:4px;border-radius:2px;background:var(--acc);opacity:.6;flex:none;max-width:60%}
.rs3-qdem.nd{color:var(--faint);font-family:"Geist",sans-serif;font-size:11px}
/* Google : la demande de chaque recherche (barre) et votre place dessus (teal en première page, gris au-delà), le site en tête */
.rs3-kwr{display:grid;grid-template-columns:minmax(150px,210px) minmax(0,1fr) 200px;gap:6px 14px;align-items:center;padding:6px 0;border-top:1px solid #F0F0EC;font-size:13px}
.rs3-kwr:first-of-type{border-top:0}
.rs3-kwr .t{font-weight:500;min-width:0}
.rs3-kwr .t small{display:block;font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);font-weight:400}
.rs3-kwr .bar{position:relative;height:16px;display:flex;align-items:center;gap:8px;min-width:0}
.rs3-kwr .bar i{display:block;height:100%;border-radius:4px;background:#D8D8D3;width:0;max-width:calc(100% - 72px);transition:width .7s var(--ease);flex:none}
.rs3-kwr.in .bar i{background:var(--acc)}
.rs3-kwr .bar b{font-family:"Geist Mono",monospace;font-size:12px;font-weight:500;color:var(--acc);white-space:nowrap}
.rs3-kwr .bar span{font-family:"Geist Mono",monospace;font-size:11px;color:var(--faint);white-space:nowrap}
.rs3-kwr .ld{display:flex;align-items:center;gap:7px;font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);min-width:0;white-space:nowrap;overflow:hidden}
.rs3-kwr .ld .fav{flex:none}
.rs3-kwr.you .ld{color:var(--hot)}
.rs3-kwh{display:grid;grid-template-columns:minmax(150px,210px) minmax(0,1fr) 200px;gap:14px;font-family:"Geist Mono",monospace;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);padding:0 0 6px;border-bottom:1px solid var(--line)}
.rs3-kwleg{display:flex;gap:6px 16px;flex-wrap:wrap;font-size:11.5px;color:var(--mute);margin:12px 0 0}
.rs3-kwleg i{display:inline-block;width:14px;height:8px;border-radius:2px;margin-right:6px;vertical-align:0}
.rs3-kwleg i.in{background:var(--acc)}.rs3-kwleg i.out{background:#D8D8D3}
/* de la photo au film : ce que la mesure ajoute à gauche, le prix du domaine et le geste à droite */
.rs3-buyz{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:18px 40px;align-items:center}
.rs3-buyz .rs3-pz{border-left:1px solid var(--line);padding-left:32px}
.rs3-buyz .price{margin:0}
.rs3-buyz .formula{margin:10px 0 0}
.rs3-buyz .rs3-pz .btn.primary{margin-top:16px}
.rs3-buyz .rs3-pz .note{margin:10px 0 0}
body.rs3v .rs-bar .btn.primary small{color:var(--mute);opacity:1}
@container page (max-width:980px){.rs3-buyz{grid-template-columns:minmax(0,1fr)}.rs3-buyz .rs3-pz{border-left:0;padding-left:0;border-top:1px solid var(--line);padding-top:18px}}
@container page (max-width:700px){
  .rs3-kwr,.rs3-kwh{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.rs3-kwr .ld{grid-column:1/-1}.rs3-kwh span:last-child{display:none}
  .rs3-mx{column-gap:8px}.rs3-mxr .sq i{width:15px;height:15px}
  .rs3-fs .side{margin-left:0;flex-basis:100%;justify-content:space-between}
}

/* ─── 20c. la page de résultat en lecture seule (plan 4.3e, S228, prototype m9-app/resultat.html?vue=partage) : « Garder cette
   analyse » en bas de la page, la carte du prototype (m10-emails/m10.css, `.m10-adopt`) reprise ici. Classes pt-. ─── */
.pt-adopt{display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between;padding:18px 22px;margin:18px 0}
.pt-adopt p{margin:0;font-size:14px;max-width:62ch}
.pt-adopt p small{display:block;color:var(--mute);font-size:12.5px;margin-top:4px}
@media (max-width:600px){.pt-adopt{padding:16px}.pt-adopt .btn{width:100%;justify-content:center}}

/* ─── 21. le constructeur et le paiement, version A, non retenue le 05/10 (la B, §22, est validée) (S214, plan 3.4, cadrage docs/cadrage-s214-constructeur-et-paiement.md, prototype
   m9-app/construire.html). La suite de la page de résultat (§20b) : même barre de l'app, même barre collée en bas (.rs-bar, le geste à la
   même place), mêmes zones (.rs-zone .rs-say .rs-def), mêmes colonnes d'intention, même demande sous chaque question. Les objets neufs :
   les IA qui répondent (une rangée par IA, un carré par question, la case est la rangée), le prix construit (prix HT, formule, ce qui
   suit le paiement), la question à cocher ou à remplacer, le concurrent à cocher, le mot-clé à cocher, les deux choix du corpus étendu.
   Classes préfixées cs-, enfants compris (leçons S160c, S211, S212). ─── */
.cs-page .wrap{padding-bottom:170px}
.cs-back{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--mute);margin:-6px 0 8px;padding:6px 0}
.cs-back:hover{color:var(--ink)}
.cs-head{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,1fr);gap:18px 32px;align-items:start;margin-bottom:22px}
.cs-head .verdict{margin:0 0 14px}
.cs-sub{font-size:15px;color:var(--mute);margin:0 0 6px;max-width:60ch}
.cs-sub b{color:var(--ink);font-weight:500}
/* les IA qui répondent : une rangée par IA, un carré par question ; la rangée est la case */
.cs-ia{margin:22px 0 0;max-width:660px}
.cs-ia>.k{margin:0 0 6px}
.cs-iar{display:grid;grid-template-columns:18px 196px minmax(0,1fr) 96px;gap:12px;align-items:center;padding:8px 10px;margin:0 -10px;border-radius:12px;cursor:pointer;transition:background .12s}
.cs-iar:hover{background:var(--card2)}
.cs-iar input{width:16px;height:16px;accent-color:var(--acc);margin:0;cursor:pointer}
.cs-iar .cs-nm{font-size:13.5px;font-weight:500;line-height:1.25;min-width:0}
.cs-iar .cs-nm small{display:block;font-size:11.5px;color:var(--mute);font-weight:400;margin-top:1px}
.cs-iar .cs-nm .cs-was{color:var(--acc)}
.cs-iar .cs-sq{display:flex;flex-wrap:wrap;gap:3px;min-width:0}
.cs-iar .cs-sq i{width:10px;height:10px;border-radius:2px;border:1px dashed #CFCFC9;transition:background .3s var(--ease),border-color .3s var(--ease)}
.cs-iar.on .cs-sq i{border:1px solid var(--acc);background:var(--acc-soft)}
.cs-iar.cs-l .cs-sq i{width:12px;height:12px;border-radius:3px}
.cs-iar .cs-v{font-family:"Geist Mono",monospace;font-size:12.5px;color:var(--mute);text-align:right;white-space:nowrap}
.cs-iar.on .cs-v{color:var(--ink);font-weight:500}
.cs-iar.cs-flash .cs-sq i{animation:rsland .35s var(--ease)}
.cs-cad{display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap;margin:10px 0 0;padding-top:12px;border-top:1px solid var(--line);font-size:12.5px;color:var(--mute)}
.cs-cad .cs-lab{font-weight:500;color:var(--ink);font-size:13px}
.cs-tot{display:flex;align-items:baseline;gap:8px 12px;flex-wrap:wrap;margin:12px 0 0;font-size:12.5px;color:var(--mute)}
.cs-tot b{font-family:"Geist Mono",monospace;font-size:22px;font-weight:500;color:var(--ink);letter-spacing:-.02em}
.cs-tot .cs-calc{font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--faint)}
.cs-leg{display:flex;gap:6px 16px;flex-wrap:wrap;margin:8px 0 0;font-size:11.5px;color:var(--mute)}
.cs-leg i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:-1px}
.cs-leg i.on{border:1px solid var(--acc);background:var(--acc-soft)}.cs-leg i.off{border:1px dashed #CFCFC9}
/* le prix construit : HT, la formule, ce qui suit le paiement ; le geste reste dans la barre collée */
.cs-pz{padding:22px 24px 20px;position:sticky;top:76px}
.cs-pz .price{margin:8px 0 2px}
.cs-pz .price.cs-pop{animation:pflash .55s var(--ease)}
.cs-pz .cs-des{font-size:12px;color:var(--mute);margin:0}
.cs-pz .cs-des b{font-family:"Geist Mono",monospace;font-weight:500;color:var(--ink)}
.cs-pz .formula{margin:12px 0 0}
.cs-pz .cs-max{margin:10px 0 0;font-size:12.5px;color:var(--mute)}.cs-pz .cs-max b{font-family:"Geist Mono",monospace;font-weight:500;color:var(--ink)}
.cs-facts{list-style:none;margin:14px 0 0;padding:14px 0 0;border-top:1px solid var(--line);display:grid;gap:7px;font-size:12.5px;color:var(--mute)}
.cs-facts li{position:relative;padding-left:16px;line-height:1.45}
.cs-facts li:before{content:"";position:absolute;left:0;top:7px;width:7px;height:7px;border-radius:50%;background:var(--acc)}
.cs-facts b{color:var(--ink);font-weight:500}
.cs-pz .cs-tva{font-size:11.5px;color:var(--faint);margin:12px 0 0}
/* les questions : colonnes d'intention, la case ou le remplacement, la demande, les autres formulations */
.cs-fams{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 32px}
.cs-fam h4{margin:0 0 2px;font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px}
.cs-fam h4 .cs-cnt{margin-left:auto;font-family:"Geist Mono",monospace;font-size:12px;color:var(--mute);font-weight:400}
.cs-fam h4 .cs-cnt b{color:var(--ink);font-weight:500}
.cs-fam .cs-fd{font-size:12px;color:var(--faint);margin:0 0 6px}
.cs-q{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:3px 10px;align-items:start;padding:8px 6px;margin:0 -6px;border-top:1px solid #F0F0EC;font-size:13px;line-height:1.4;border-radius:8px}
.cs-q input{width:15px;height:15px;accent-color:var(--acc);margin:2px 0 0;cursor:pointer}
.cs-q .cs-dot{width:7px;height:7px;border-radius:50%;margin:6px 0 0 4px;background:var(--faint)}
.cs-dot.brand{background:var(--fam-brand)}.cs-dot.bofu{background:var(--fam-bofu)}.cs-dot.mofu{background:var(--fam-mofu)}.cs-dot.tofu{background:var(--fam-tofu)}
.cs-q .cs-t{min-width:0;font-weight:500;color:var(--ink)}
.cs-q.off .cs-t{font-weight:400;color:var(--mute)}
.cs-q .cs-meta{grid-column:2/-1;display:flex;flex-wrap:wrap;gap:3px 12px;align-items:center;font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--mute)}
.cs-q .cs-dem{display:inline-flex;align-items:center;gap:7px}
.cs-q .cs-dem i{display:block;height:4px;border-radius:2px;background:var(--acc);opacity:.6}
.cs-q .cs-dem.nd{font-family:"Geist",sans-serif;font-size:11px;color:var(--faint)}
.cs-q .cs-sd{color:var(--acc);letter-spacing:.06em;text-transform:uppercase;font-size:9.5px}
.cs-q .cs-vous{color:var(--hot);letter-spacing:.06em;text-transform:uppercase;font-size:9.5px}
.cs-q .cs-fx{grid-column:2/-1;font-size:11.5px;color:var(--faint);margin-top:1px}
.cs-q .cs-rp{grid-column:3;grid-row:1;border:0;background:none;padding:0;font:inherit;font-size:12px;color:var(--mute);text-decoration:underline;text-underline-offset:3px;opacity:0;transition:opacity .12s;white-space:nowrap;cursor:pointer}
.cs-q:hover .cs-rp,.cs-q .cs-rp:focus-visible{opacity:1}
.cs-q:hover{background:var(--card2)}
.cs-q.cs-new{animation:slide .5s var(--ease)}
.cs-q .cs-rpf{grid-column:2/-1;display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;margin-top:6px}
.cs-q .cs-rpf input{border-radius:999px;padding:8px 14px;font-size:13px;width:auto;height:auto;margin:0}
.cs-fix .cs-q{grid-template-columns:10px minmax(0,1fr) auto}
.cs-more{margin-top:8px;border:0;background:none;padding:0;font-size:12px;color:var(--mute);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.cs-floor{display:flex;align-items:center;gap:10px 16px;flex-wrap:wrap;margin:0 0 16px;padding:11px 14px;border-radius:var(--r2);background:var(--card2);font-size:13px;color:var(--mute)}
.cs-floor b{color:var(--ink);font-weight:500}
.cs-floor .quota{margin-right:4px}
.cs-floor.cs-low{background:var(--ocre-soft)}
.cs-floor.cs-low .btn{margin-left:auto}
.cs-cov{font-size:12.5px;color:var(--mute);margin:16px 0 0;padding-top:12px;border-top:1px dashed var(--line)}
.cs-gone{margin:14px 0 0;font-size:12.5px;color:var(--mute)}
.cs-gone div{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;padding:4px 0}
.cs-gone s{color:var(--faint)}
.cs-gone button{border:0;background:none;padding:0;font:inherit;font-size:12px;color:var(--ink);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.cs-addq{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:center;margin:18px 0 0}
.cs-addq input[type=text]{border-radius:999px;padding:10px 16px}
.cs-addq select{border-radius:999px;padding:9px 12px;width:auto}
/* le corpus étendu : deux choix au paiement (ADR-025 §6.2) */
.cs-ext{margin:20px 0 0;padding:16px 18px;border:1px solid var(--line);border-radius:var(--r2);background:var(--bg)}
.cs-ext>.k{margin:0 0 4px}
.cs-ext>p{font-size:13px;color:var(--mute);margin:0 0 12px;max-width:72ch}
.cs-ext>p b{color:var(--ink);font-weight:500}
.cs-opts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.cs-opt{display:grid;grid-template-columns:18px minmax(0,1fr);gap:4px 10px;align-items:start;padding:13px 15px;border:1px solid var(--line);border-radius:var(--r2);background:var(--card);cursor:pointer;text-align:left;font-size:13px}
.cs-opt input{margin:2px 0 0;accent-color:var(--ink);cursor:pointer}
.cs-opt.on{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}
.cs-opt .cs-ot{font-weight:600}
.cs-opt .cs-op{grid-column:2;font-family:"Geist Mono",monospace;font-size:12.5px;color:var(--ink)}
.cs-opt .cs-od{grid-column:2;font-size:12px;color:var(--mute);line-height:1.45}
.cs-step{display:inline-flex;align-items:center;gap:6px;vertical-align:middle}
.cs-step button{width:26px;height:26px;border-radius:50%;border:1px solid var(--line);background:var(--card);font:inherit;font-size:14px;line-height:1;cursor:pointer;padding:0}
.cs-step button[disabled]{opacity:.35;cursor:default}
.cs-step b{font-family:"Geist Mono",monospace;font-weight:500;min-width:2ch;text-align:center}
/* les concurrents : deux listes, le pair à cocher, l'occupant à cocher (jamais d'avance), le terrain sans case */
.cs-cl .cs-c:first-child{border-top:0}
.cs-c{display:grid;grid-template-columns:18px 18px minmax(0,1fr);gap:3px 10px;align-items:start;padding:9px 0;border-top:1px solid #F0F0EC;font-size:13px;line-height:1.4}
.cs-c input{width:15px;height:15px;accent-color:var(--acc);margin:2px 0 0;cursor:pointer}
.cs-c .fav{margin-top:1px}
.cs-c .cs-cn{min-width:0;font-weight:500}
.cs-c .cs-cn small{font-family:"Geist Mono",monospace;font-size:11px;color:var(--faint);font-weight:400;margin-left:6px}
.cs-c.off .cs-cn{font-weight:400;color:var(--mute)}
.cs-c .cs-pr{grid-column:3;font-size:12px;color:var(--mute)}
.cs-c .cs-pr b{color:var(--ink);font-weight:500;font-family:"Geist Mono",monospace}
.cs-c .cs-ph{grid-column:3;font-size:11.5px;color:var(--faint)}
.cs-c .cs-why{grid-column:3;font-size:11.5px;color:var(--ocre)}
.cs-c .cs-nat{font-family:"Geist Mono",monospace;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--mute);border:1px solid var(--line);border-radius:6px;padding:0 5px;margin-left:6px;vertical-align:1px;white-space:nowrap}
.cs-c .cs-from{font-family:"Geist Mono",monospace;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--acc);margin-left:6px;white-space:nowrap}
.cs-c .cs-from,.cs-c .cs-nat{display:inline-block}
.cs-c.cs-terr{grid-template-columns:18px 18px minmax(0,1fr)}
.cs-c.cs-terr .cs-nb{width:15px;height:15px;margin-top:2px;border-radius:4px;border:1px dashed #D8D8D3}
.cs-c.cs-new{animation:slide .5s var(--ease)}
.cs-capl{margin:0 0 12px}
.cs-addc{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;gap:8px;align-items:center;margin:14px 0 0}
.cs-addc input[type=text]{border-radius:999px;padding:10px 16px}
.cs-nosite{font-size:12px;color:var(--mute);margin:10px 0 0;padding:9px 12px;background:var(--card2);border-radius:10px}
.cs-nosite b{color:var(--ink);font-weight:500}
/* les mots-clés : la demande en barre, teal en première page, la case ; le paquet de dix */
.cs-kw{display:grid;grid-template-columns:18px minmax(150px,240px) minmax(0,1fr);gap:3px 12px;align-items:center;padding:7px 0;border-top:1px solid #F0F0EC;font-size:13px}
.cs-kw input{width:15px;height:15px;accent-color:var(--acc);margin:0;cursor:pointer}
.cs-kw .cs-kt{font-weight:500;min-width:0}
.cs-kw .cs-kt small{display:block;font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);font-weight:400}
.cs-kw.off .cs-kt{font-weight:400;color:var(--mute)}
.cs-kw .cs-kb{display:flex;align-items:center;gap:8px;height:14px;min-width:0}
.cs-kw .cs-kb i{display:block;height:100%;border-radius:4px;background:#D8D8D3;flex:none;max-width:calc(100% - 80px)}
.cs-kw.in .cs-kb i{background:var(--acc)}
.cs-kw .cs-kb b{font-family:"Geist Mono",monospace;font-size:12px;font-weight:500;color:var(--acc);white-space:nowrap}
.cs-kw .cs-kb span{font-family:"Geist Mono",monospace;font-size:11px;color:var(--faint);white-space:nowrap}
.cs-kw .cs-kx{grid-column:2/-1;font-size:11.5px;color:var(--faint)}
.cs-kw .cs-vous{font-family:"Geist Mono",monospace;color:var(--hot);letter-spacing:.06em;text-transform:uppercase;font-size:9.5px;margin-left:6px}
.cs-pack{display:flex;align-items:center;gap:10px 16px;flex-wrap:wrap;margin:0 0 12px;font-size:12.5px;color:var(--mute)}
.cs-pack b{font-family:"Geist Mono",monospace;font-weight:500;color:var(--ink)}
.cs-pack .cs-pk{display:inline-flex;gap:2px}
.cs-pack .cs-pk i{width:7px;height:12px;border-radius:2px;background:#E4E4DF}
.cs-pack .cs-pk i.on{background:var(--acc)}
/* la barre collée : le geste à la même place que sur la page de résultat ; le prix à gauche du bouton */
.rs-bar .cs-bp{font-family:"Geist Mono",monospace;font-size:22px;font-weight:500;letter-spacing:-.02em;white-space:nowrap;font-variant-numeric:tabular-nums}
.rs-bar .cs-bp small{font-size:11px;color:#9EA1A8;font-weight:400;letter-spacing:0;margin-left:5px}
.rs-bar .cs-bp.cs-pop{animation:pflash .55s var(--ease)}
.rs-bar .cs-bw{font-size:12.5px;color:#F3B9A8}
.rs-bar .btn.primary[disabled]{opacity:.5}
/* la page de paiement Stripe, simulée dans le prototype : ce qu'elle montre (prix HT, TVA, email du compte, CGV à cocher) */
.cs-stripe{display:grid;gap:10px;font-size:13px}
.cs-stripe .cs-sl{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 14px;padding:10px 12px;background:var(--card2);border-radius:12px}
.cs-stripe .cs-sl span:nth-child(even){font-family:"Geist Mono",monospace;text-align:right}
.cs-stripe .cs-sl .cs-st{font-weight:600}
.cs-stripe .cs-sf{display:grid;gap:4px}
.cs-stripe .cs-sf label{font-size:12px;color:var(--mute)}
.cs-stripe .cs-sf input{border-radius:10px;padding:9px 12px;font-size:13px}
.cs-stripe .cs-cgv{display:flex;gap:9px;align-items:flex-start;font-size:12.5px;line-height:1.45;cursor:pointer}
.cs-stripe .cs-cgv input{margin:2px 0 0;accent-color:var(--ink)}
.cs-stripe .cs-cgv a{text-decoration:underline;text-underline-offset:3px}
.cs-stripe .cs-err{color:var(--hot);font-size:12px;margin:0}
@container page (max-width:980px){
  .cs-head{grid-template-columns:minmax(0,1fr)}
  .cs-pz{position:static}
}
@container page (max-width:700px){
  .cs-fams,.cs-opts{grid-template-columns:minmax(0,1fr)}
  .cs-iar{grid-template-columns:18px minmax(0,1fr) auto;gap:6px 10px}
  .cs-iar .cs-sq{grid-column:2/-1}
  .cs-iar .cs-v{grid-row:1;grid-column:3}
  .cs-q .cs-rp{opacity:1}
  .cs-q .cs-rpf{grid-template-columns:minmax(0,1fr) auto}
  .cs-q .cs-rpf input{grid-column:1/-1}
  .cs-addq,.cs-addc{grid-template-columns:minmax(0,1fr)}
  .cs-addq .btn,.cs-addc .btn{justify-content:center}
  .cs-kw{grid-template-columns:18px minmax(0,1fr)}
  .cs-kw .cs-kb{grid-column:2}
  .cs-floor.cs-low .btn{margin-left:0;width:100%;justify-content:center}
}
@media (hover:none){.cs-q .cs-rp{opacity:1}}
@media (max-width:600px){
  .cs-page .rs-bar{gap:6px 12px}
  .cs-page .rs-bar .cs-bp{font-size:18px}
  .cs-page .rs-bar .btn.primary{width:auto;flex:1 1 180px;justify-content:center}
}
.cs-two{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:18px 34px;align-items:start}
.cs-two>div>.k{margin:0 0 4px}
.cs-two .cs-bd{font-size:12px;color:var(--mute);margin:0 0 8px}
@container page (max-width:980px){.cs-two{grid-template-columns:minmax(0,1fr)}}

/* ─── 22. le constructeur, version B « SaaS », VALIDÉE owner le 05/10 (S214b, plan 3.4, demande owner du 05/10 : « innovation de design, ultra compréhensif,
   en mode SaaS » ; la version A §21 est gardée). Mêmes règles (cadrage S214, recos validées le 05/10), autre composition : la phrase de
   tête est le formulaire (chaque mot souligné se change), cinq réponses numérotées posées sur le papier, chacune avec son objet propre
   (le parcours d'achat, les IA et ce qu'elles disent déjà de vous, la semaine, la matrice du résultat, les recherches en puces), et le
   récapitulatif vivant à droite : le prix décomposé en barre, les lignes, ce qui se passe après le paiement, le bouton. Classes cv-,
   enfants compris. Couleurs des IA : celles de .eng (§5 : Perplexity bleu, Google ambre), ChatGPT encre, AI Mode ocre. ─── */
:root{--cv-pplx:#1D4ED8;--cv-aio:#F59E0B;--cv-gpt:var(--ink);--cv-aim:var(--ocre)}
.cv-page .wrap{padding-bottom:120px}
.cv-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:40px;align-items:start}
.cv-side{position:sticky;top:76px}
/* la phrase-formulaire */
.cv-hero{padding:6px 0 34px;border-bottom:1px solid var(--line);margin-bottom:34px}
.cv-say{font-size:clamp(26px,3.3vw,40px);line-height:1.3;letter-spacing:-.025em;font-weight:600;margin:6px 0 14px;max-width:30ch}
.cv-chip{display:inline;font:inherit;color:inherit;letter-spacing:inherit;background:var(--acc-soft);border:0;border-bottom:2px dashed var(--acc);border-radius:8px 8px 2px 2px;padding:0 .18em;cursor:pointer;transition:background .15s;-webkit-box-decoration-break:clone;box-decoration-break:clone}
.cv-chip:hover,.cv-chip[aria-expanded="true"]{background:#D3ECE6}
.cv-chip .num{font-family:"Geist Mono",monospace;font-weight:500;letter-spacing:-.03em}
.cv-chip:after{content:"▾";font-size:.42em;vertical-align:.35em;margin-left:.18em;color:var(--acc)}
.cv-chip.cv-pop-on{background:var(--acc-soft)}
.cv-hint{font-size:13.5px;color:var(--mute);margin:0;max-width:62ch}
.cv-hint b{color:var(--ink);font-weight:500}
.cv-pop{position:absolute;z-index:30;min-width:280px;background:var(--card);border:1px solid var(--line);border-radius:var(--r2);box-shadow:var(--sh);padding:8px;font-size:13.5px;font-weight:400;letter-spacing:0;line-height:1.4;display:none}
.cv-pop.cv-on{display:block;animation:rise .25s var(--ease) forwards;opacity:0;transform:translateY(4px)}
.cv-pop .cv-po{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;padding:9px 10px;border:0;background:none;border-radius:10px;font:inherit;text-align:left;cursor:pointer;color:var(--ink)}
.cv-pop .cv-po:hover{background:var(--card2)}
.cv-pop .cv-po small{display:block;color:var(--mute);font-size:11.5px}
.cv-pop .cv-po .cv-pv{font-family:"Geist Mono",monospace;font-size:12px;color:var(--mute);white-space:nowrap}
.cv-pop .cv-po.cv-on .cv-pv{color:var(--ink);font-weight:500}
.cv-pop .cv-ck{width:18px;height:18px;border-radius:50%;border:1.5px solid #CFCFC9;display:grid;place-items:center;font-size:11px;color:#fff}
.cv-pop .cv-po.cv-on .cv-ck{background:var(--acc);border-color:var(--acc)}
/* une réponse numérotée */
.cv-sec{margin:0 0 44px;scroll-margin-top:84px}
.cv-sh{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:4px 14px;align-items:center;margin:0 0 16px}
.cv-n{width:34px;height:34px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font-family:"Geist Mono",monospace;font-size:14px;font-weight:500}
.cv-sh h2{margin:0;font-size:22px;font-weight:600;letter-spacing:-.02em}
.cv-ans{font-family:"Geist Mono",monospace;font-size:12.5px;color:var(--acc);background:var(--acc-soft);border-radius:999px;padding:4px 11px;white-space:nowrap}
.cv-ans.cv-warn{color:var(--ocre);background:var(--ocre-soft)}
.cv-sub{grid-column:2/-1;font-size:13.5px;color:var(--mute);margin:0;max-width:66ch}
.cv-sub b{color:var(--ink);font-weight:500}
.cv-flash{animation:cvflash 1.1s var(--ease)}
@keyframes cvflash{0%{box-shadow:0 0 0 0 rgba(15,118,110,.35)}40%{box-shadow:0 0 0 8px rgba(15,118,110,.12)}100%{box-shadow:0 0 0 0 rgba(15,118,110,0)}}
/* 1 · le volume : un carré par question de la carte, la couleur de son moment ; le plancher marqué */
.cv-vol{display:flex;align-items:center;gap:14px 18px;flex-wrap:wrap;margin:0 0 16px;padding:12px 16px;background:var(--card);border:1px solid var(--line);border-radius:var(--r2)}
.cv-vsq{display:flex;flex-wrap:wrap;gap:3px;flex:1;min-width:200px;position:relative}
.cv-vsq i{width:12px;height:16px;border-radius:3px;background:#ECECE8;transition:background .3s var(--ease)}
.cv-vsq i.cv-on.cv-brand{background:var(--fam-brand)}.cv-vsq i.cv-on.cv-bofu{background:var(--fam-bofu)}.cv-vsq i.cv-on.cv-mofu{background:var(--fam-mofu)}.cv-vsq i.cv-on.cv-tofu{background:var(--fam-tofu)}
.cv-vsq i.cv-fl{margin-left:7px;position:relative}
.cv-vsq i.cv-fl:before{content:"";position:absolute;left:-6px;top:-4px;bottom:-4px;width:2px;background:var(--ink);border-radius:1px}
.cv-vt{font-size:13px;color:var(--mute)}.cv-vt b{font-family:"Geist Mono",monospace;font-weight:500;font-size:18px;color:var(--ink);margin-right:4px}
.cv-low{display:flex;align-items:center;gap:10px 16px;flex-wrap:wrap;margin:0 0 16px;padding:12px 16px;border-radius:var(--r2);background:var(--ocre-soft);font-size:13.5px}
.cv-low b{font-weight:600}.cv-low .btn{margin-left:auto}
/* 1 · le parcours d'achat : quatre colonnes, du besoin à la marque */
.cv-board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.cv-col{min-width:0}
.cv-ch{display:flex;align-items:center;gap:8px;margin:0 0 4px;font-size:13px;font-weight:600}
.cv-ch .cv-cc{margin-left:auto;font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);font-weight:400}
.cv-cd{font-size:11.5px;color:var(--faint);margin:0 0 10px;min-height:2.6em;line-height:1.3}
.cv-step{display:flex;align-items:center;gap:6px;font-family:"Geist Mono",monospace;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);margin:0 0 6px}
.cv-step:after{content:"";flex:1;height:1px;background:var(--line)}
.cv-col:last-child .cv-step:after{display:none}
.cv-qt{position:relative;display:block;width:100%;text-align:left;font:inherit;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 30px 10px 11px;margin:0 0 8px;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s;box-shadow:0 1px 2px rgba(19,20,23,.04)}
.cv-qt:hover{transform:translateY(-1px);border-color:#CFCFC9}
.cv-qt.cv-on{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}
.cv-qt.cv-off{background:transparent;border-style:dashed;box-shadow:none}
.cv-qt.cv-off .cv-qtt{color:var(--mute);font-weight:400}
.cv-qt.cv-fix{cursor:default}.cv-qt.cv-fix:hover{transform:none}
.cv-qt .cv-qx{position:absolute;top:9px;right:9px;width:16px;height:16px;border-radius:50%;border:1.5px solid #CFCFC9;display:grid;place-items:center;font-size:10px;line-height:1;color:#fff;transition:.15s}
.cv-qt.cv-on .cv-qx{background:var(--ink);border-color:var(--ink)}
.cv-qt.cv-fix .cv-qx{display:none}
.cv-qtt{display:block;font-size:12.5px;line-height:1.38;font-weight:500;color:var(--ink)}
.cv-qdm{display:flex;align-items:center;gap:6px;margin-top:7px;font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--mute)}
.cv-qdm i{display:block;height:4px;border-radius:2px;background:var(--acc);opacity:.65;flex:none}
.cv-qdm.nd{font-family:"Geist",sans-serif;font-size:11px;color:var(--faint)}
.cv-qtags{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.cv-qtag{font-family:"Geist Mono",monospace;font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;padding:1px 6px;border-radius:5px;background:var(--card2);color:var(--mute)}
.cv-qtag.cv-sd{background:var(--acc-soft);color:var(--acc)}
.cv-qtag.cv-vous{background:var(--hot-soft);color:var(--hot)}
.cv-qrp{position:absolute;right:8px;bottom:8px;border:0;background:var(--card2);border-radius:999px;padding:2px 9px;font:inherit;font-size:11px;color:var(--ink);cursor:pointer;opacity:0;transition:opacity .12s}
.cv-qt:hover .cv-qrp,.cv-qrp:focus-visible{opacity:1}
.cv-qt.cv-new{animation:slide .5s var(--ease)}
.cv-qadd{display:block;width:100%;border:1px dashed #CFCFC9;background:none;border-radius:12px;padding:9px 11px;font:inherit;font-size:12.5px;color:var(--mute);text-align:left;cursor:pointer}
.cv-qadd:hover{border-color:var(--ink);color:var(--ink)}
.cv-qin{display:grid;gap:6px;border:1px solid var(--ink);border-radius:12px;padding:8px;background:var(--card)}
.cv-qin textarea{font:inherit;font-size:12.5px;border:0;outline:0;resize:none;min-height:54px;padding:2px;background:none}
.cv-qin div{display:flex;gap:6px;justify-content:flex-end}
.cv-qmore{border:0;background:none;padding:7px 0;margin:-5px 0;font:inherit;font-size:12px;color:var(--mute);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.cv-cov{font-size:12.5px;color:var(--mute);margin:10px 0 0}
.cv-gone{font-size:12px;color:var(--mute);margin:8px 0 0}
.cv-gone s{color:var(--faint)}.cv-gone button{border:0;background:none;padding:0;font:inherit;font-size:12px;color:var(--ink);text-decoration:underline;text-underline-offset:3px;cursor:pointer;margin-left:8px}
/* §22 · R2 (S242, plan 4.3f, amendement S237 d'ADR-025 §7) : retirer une question proposée. Préfixe rtq-. Les gestes
   d'une carte vivent dans une bande réservée en pied (jamais par-dessus la demande ni les étiquettes), toujours visibles ;
   sur une carte à cocher, ils sont posés à côté du bouton (un bouton ne se met pas dans un bouton). */
.cv-qt.rtq-has,.rtq-w>.cv-qt{padding-bottom:33px}
.rtq-w{position:relative}
.rtq-acts{position:absolute;left:11px;bottom:8px;display:flex;align-items:center;gap:14px}
.rtq-w>.rtq-acts{bottom:16px}
/* passe tactile (plan 5.4, S249) : les petits gestes gardent leur place, leur zone de toucher atteint 30 px par un padding compensé */
.rtq-a{border:0;background:none;padding:8px 0;margin:-5px 0;font:inherit;font-size:11.5px;line-height:1.2;color:var(--mute);cursor:pointer;text-decoration:underline;text-decoration-color:#CFCFC9;text-underline-offset:3px}
.rtq-a:hover,.rtq-a:focus-visible{color:var(--ink);text-decoration-color:currentColor}
.rtq-a.rtq-out:hover,.rtq-a.rtq-out:focus-visible{color:var(--hot)}
.rtq-ask .rtq-qt{margin:2px 2px 0;font-size:12.5px;line-height:1.38;font-weight:500;color:var(--ink)}
.rtq-ask .rtq-k{margin:0 2px;font-size:11.5px;color:var(--mute)}
.rtq-ask .rtq-k span{color:var(--faint)}
.cv-qin .rtq-rs{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-start}
.rtq-r{border:1px solid var(--line);background:var(--card2);border-radius:999px;padding:4px 10px;font:inherit;font-size:12px;line-height:1.2;color:var(--ink);cursor:pointer;transition:border-color .15s,color .15s,background .15s}
.rtq-r:hover,.rtq-r:focus-visible{border-color:var(--hot);color:var(--hot);background:var(--hot-soft)}
.rtq-r.rtq-nr{background:none;border-style:dashed;color:var(--mute)}
.rtq-r.rtq-nr:hover,.rtq-r.rtq-nr:focus-visible{color:var(--hot);background:var(--hot-soft)}
.rtq-line{margin:12px 0 0;padding:8px 12px 6px;border:1px dashed #CFCFC9;border-radius:12px}
.rtq-lk{margin:0 0 2px;font-family:"Geist Mono",monospace;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--mute)}
.rtq-lk b{color:var(--ink);font-weight:500}
.rtq-it{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:0;padding:6px 0;border-top:1px solid var(--line);font-size:12.5px;line-height:1.38}
.rtq-lk+.rtq-it{border-top:0}
.rtq-t{color:var(--mute);text-decoration:line-through;text-decoration-color:var(--faint);min-width:0}
.rtq-why{font-family:"Geist Mono",monospace;font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;padding:1px 6px;border-radius:5px;background:var(--hot-soft);color:var(--hot);white-space:nowrap}
.rtq-why.rtq-nr{background:var(--card2);color:var(--mute)}
.rtq-it .rtq-a{margin-left:auto}
.rtq-it.cv-new{animation:slide .5s var(--ease)}
/* le corpus étendu, deux choix */
.cv-ext{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:18px 0 0}
.cv-ext>p{grid-column:1/-1;margin:0;font-size:13.5px;color:var(--mute)}.cv-ext>p b{color:var(--ink);font-weight:500}
.cv-eo{display:grid;gap:6px;text-align:left;font:inherit;background:var(--card);border:1px solid var(--line);border-radius:var(--r2);padding:16px 18px;cursor:pointer;transition:border-color .15s,box-shadow .15s}
.cv-eo.cv-on{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}
.cv-eo .cv-et{font-weight:600;font-size:14.5px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.cv-eo .cv-ep{font-family:"Geist Mono",monospace;font-size:20px;font-weight:500;letter-spacing:-.02em}
.cv-eo .cv-ep small{font-size:11px;color:var(--mute);font-weight:400;margin-left:4px}
.cv-eo .cv-ed{font-size:12px;color:var(--mute);line-height:1.45}
.cv-nst{display:inline-flex;align-items:center;gap:6px}
.cv-nst span{width:24px;height:24px;border-radius:50%;border:1px solid var(--line);background:var(--card);display:grid;place-items:center;font-size:14px;line-height:1;cursor:pointer}
.cv-nst span.cv-dis{opacity:.35;cursor:default}
.cv-nst b{font-family:"Geist Mono",monospace;font-weight:500}
/* 2 · les IA : une carte par IA, ce qu'elle dit déjà de vous, son prix, l'interrupteur */
.cv-ias{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.cv-ia{display:grid;grid-template-rows:auto auto 1fr auto;gap:8px;text-align:left;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s;box-shadow:var(--sh)}
.cv-ia:hover{transform:translateY(-1px)}
.cv-ia.cv-on{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink),var(--sh)}
.cv-ia .cv-ih{display:flex;align-items:center;gap:9px}
.cv-ia .cv-ih b{font-size:15px;font-weight:600}
.cv-ia .cv-ih .switch{margin-left:auto}
.cv-ia .cv-ih .switch i{width:34px;height:20px}.cv-ia .cv-ih .switch i:after{width:14px;height:14px}.cv-ia .cv-ih .switch input:checked+i:after{left:17px}
.cv-id{font-size:12.5px;color:var(--mute)}
.cv-dot{width:10px;height:10px;border-radius:3px;flex:none}
.cv-dot.cv-pplx{background:var(--cv-pplx)}.cv-dot.cv-aio{background:var(--cv-aio)}.cv-dot.cv-gpt{background:var(--cv-gpt)}.cv-dot.cv-aim{background:var(--cv-aim)}
.cv-isay{background:var(--card2);border-radius:12px;padding:11px 12px;font-size:12.5px;line-height:1.45}
.cv-isay .cv-ik{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:11.5px;color:var(--mute);margin:0 0 7px}
.cv-isay .cv-ik b{color:var(--ink);font-weight:600}
.cv-isq{display:inline-flex;gap:3px}.cv-isq i{width:11px;height:11px;border-radius:3px;background:#DDDDD8}.cv-isq i.cv-c{background:var(--acc)}
.cv-isay q{display:block;color:var(--ink);quotes:"« " " »"}
.cv-isay q mark{background:var(--hot-soft);color:var(--hot);padding:0 2px;border-radius:3px}
.cv-isay.cv-none{background:none;border:1px dashed var(--line);color:var(--mute)}
.cv-ip{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;font-size:12px;color:var(--mute);padding-top:10px;border-top:1px solid var(--line)}
.cv-ip b{font-family:"Geist Mono",monospace;font-weight:500;color:var(--ink)}
.cv-ip .cv-it{margin-left:auto;font-family:"Geist Mono",monospace;font-size:14px;font-weight:500;color:var(--ink)}
.cv-ia:not(.cv-on) .cv-ip .cv-it{color:var(--mute)}
/* 3 · le rythme : la semaine dessinée */
.cv-rts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.cv-rt{display:grid;gap:10px;text-align:left;font:inherit;background:var(--card);border:1px solid var(--line);border-radius:var(--r2);padding:16px;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s}
.cv-rt:hover{transform:translateY(-1px)}
.cv-rt.cv-on{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}
.cv-rt .cv-rh{display:flex;align-items:baseline;gap:8px;font-size:13.5px;color:var(--mute)}
.cv-rt .cv-rh b{font-family:"Geist Mono",monospace;font-size:28px;font-weight:500;color:var(--ink);letter-spacing:-.03em}
.cv-wk{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.cv-wk i{height:26px;border-radius:6px;background:#EFEFEB;position:relative}
.cv-wk i.cv-on{background:var(--acc)}
.cv-wk i.cv-on:after{content:"";position:absolute;inset:0;margin:auto;width:6px;height:6px;border-radius:50%;background:#fff}
.cv-rd{font-size:12.5px;color:var(--mute)}.cv-rd b{color:var(--ink);font-weight:600}
.cv-rp{font-family:"Geist Mono",monospace;font-size:12px;color:var(--mute)}
.cv-rt.cv-on .cv-rp{color:var(--acc)}
/* 4 · face à qui : la matrice du résultat, un interrupteur par marque */
.cv-mx{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:8px 18px 12px;box-shadow:var(--sh)}
.cv-mxh{display:grid;grid-template-columns:44px minmax(0,1fr) auto 70px;gap:12px;align-items:end;padding:8px 0 8px;border-bottom:1px solid var(--line);font-family:"Geist Mono",monospace;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}
.cv-mxr{display:grid;grid-template-columns:44px minmax(0,1fr) auto 70px;gap:4px 12px;align-items:center;padding:10px 0;border-bottom:1px solid #F0F0EC}
.cv-mxr:last-child{border-bottom:0}
.cv-mxr .switch i{width:34px;height:20px}.cv-mxr .switch i:after{width:14px;height:14px}.cv-mxr .switch input:checked+i:after{left:17px}
.cv-mxr .cv-mn{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;min-width:0;font-weight:500;font-size:13.5px}
.cv-mxr .cv-mn small{font-family:"Geist Mono",monospace;font-size:11px;color:var(--faint);font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cv-mxr .cv-msq{display:inline-flex;gap:4px}
.cv-mxr .cv-msq i{width:15px;height:15px;border-radius:4px;background:#ECECE8}
.cv-mxr .cv-msq i.cv-c{background:var(--ink)}
.cv-mxr.cv-me .cv-msq i.cv-c{background:var(--acc)}
.cv-mxr .cv-mv{font-family:"Geist Mono",monospace;font-size:12px;color:var(--mute);text-align:right;white-space:nowrap}
.cv-mxr .cv-mv b{font-size:15px;color:var(--ink);font-weight:500}
.cv-mxr.cv-me .cv-mn,.cv-mxr.cv-me .cv-mv b{color:var(--hot)}
.cv-mxr.cv-off .cv-mn{color:var(--mute);font-weight:400}.cv-mxr.cv-off .cv-msq{opacity:.45}
.cv-mxr .cv-mp{grid-column:2/-1;font-size:11.5px;color:var(--faint);margin-top:-2px}
.cv-mxr .cv-mw{grid-column:2/-1;font-size:11.5px;color:var(--ocre)}
.cv-mxr .cv-you{font-family:"Geist Mono",monospace;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--hot);text-align:center}
.cv-mxr .cv-tag{font-family:"Geist Mono",monospace;font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;padding:1px 6px;border-radius:5px;background:var(--card2);color:var(--mute);white-space:nowrap}
.cv-mxr .cv-tag.cv-acc{background:var(--acc-soft);color:var(--acc)}
.cv-mxr .cv-nb{width:34px;height:20px;border-radius:999px;border:1px dashed #D8D8D3}
.cv-mxr.cv-new{animation:slide .5s var(--ease)}
.cv-mxk{font-family:"Geist Mono",monospace;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--mute);margin:16px 0 0;padding-top:12px;border-top:1px solid var(--line)}
.cv-mxk+p{font-size:12px;color:var(--faint);margin:2px 0 4px}
.cv-cadd{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;gap:8px;margin:14px 0 4px}
.cv-cadd input{border-radius:999px;padding:9px 15px;font-size:13px}
.cv-cap{display:flex;align-items:center;gap:10px;margin:0 0 12px}
/* 5 · Google : les recherches en puces, le paquet de dix */
.cv-pack{display:flex;align-items:center;gap:10px 16px;flex-wrap:wrap;margin:0 0 14px;font-size:13px;color:var(--mute)}
.cv-pack b{font-family:"Geist Mono",monospace;font-weight:500;color:var(--ink)}
.cv-pk{display:inline-flex;gap:3px}.cv-pk i{width:9px;height:16px;border-radius:3px;background:#E4E4DF}.cv-pk i.cv-on{background:var(--ocre)}
.cv-kws{display:flex;flex-wrap:wrap;gap:8px}
.cv-kc{display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:13px;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:7px 12px 7px 9px;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s;max-width:100%}
.cv-kc:hover{transform:translateY(-1px)}
.cv-kc.cv-on{border-color:var(--ink)}
.cv-kc.cv-off{background:transparent;border-style:dashed;color:var(--mute)}
.cv-kc .cv-kx{width:16px;height:16px;border-radius:50%;border:1.5px solid #CFCFC9;display:grid;place-items:center;font-size:10px;color:#fff;flex:none}
.cv-kc.cv-on .cv-kx{background:var(--ink);border-color:var(--ink)}
.cv-kc .cv-kt{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.cv-kc .cv-kv{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute)}
.cv-kc .cv-kp{font-family:"Geist Mono",monospace;font-size:10.5px;padding:1px 6px;border-radius:5px;background:var(--card2);color:var(--faint);white-space:nowrap}
.cv-kc .cv-kp.cv-in{background:var(--acc-soft);color:var(--acc)}
.cv-kc .cv-kp.cv-vous{background:var(--hot-soft);color:var(--hot)}
.cv-kadd{display:inline-flex;align-items:center;gap:6px;border:1px dashed #CFCFC9;border-radius:999px;padding:3px 4px 3px 12px;background:none}
.cv-kadd input{border:0;outline:0;background:none;font:inherit;font-size:13px;width:200px;padding:4px 0}
.cv-kadd .btn{padding:4px 10px}
.cv-kn{font-size:12px;color:var(--faint);margin:12px 0 0}
/* le récapitulatif vivant */
.cv-rcpt{padding:20px 20px 18px}
.cv-rcpt>.k{margin:0 0 6px}
.cv-price{display:flex;align-items:baseline;gap:6px;margin:0}
.cv-price .cv-pv{font-family:"Geist Mono",monospace;font-size:40px;font-weight:500;letter-spacing:-.04em;line-height:1;font-variant-numeric:tabular-nums}
.cv-price small{font-family:"Geist Mono",monospace;font-size:12px;color:var(--mute)}
.cv-min{font-size:12px;color:var(--mute);margin:6px 0 14px}
.cv-min b{font-family:"Geist Mono",monospace;font-weight:500;color:var(--ink)}
.cv-stack{display:flex;height:12px;border-radius:6px;overflow:hidden;background:#EFEFEB;gap:2px;margin:0 0 12px}
.cv-stack i{display:block;height:100%;transition:flex-grow .6s var(--ease);min-width:3px}
.cv-stack i.cv-base{background:#CFCFC9}.cv-stack i.cv-pplx{background:var(--cv-pplx)}.cv-stack i.cv-aio{background:var(--cv-aio)}.cv-stack i.cv-gpt{background:var(--cv-gpt)}.cv-stack i.cv-aim{background:var(--cv-aim)}.cv-stack i.cv-kw{background:var(--ocre-soft);box-shadow:inset 0 0 0 1px var(--ocre)}
.cv-lines{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.cv-lines li{display:grid;grid-template-columns:10px minmax(0,1fr) auto;gap:8px;align-items:center;font-size:12.5px;padding:5px 6px;margin:0 -6px;border-radius:8px;cursor:pointer}
.cv-lines li:hover{background:var(--card2)}
.cv-lines li i{width:10px;height:10px;border-radius:3px}
.cv-lines li i.cv-base{background:#CFCFC9}.cv-lines li i.cv-pplx{background:var(--cv-pplx)}.cv-lines li i.cv-aio{background:var(--cv-aio)}.cv-lines li i.cv-gpt{background:var(--cv-gpt)}.cv-lines li i.cv-aim{background:var(--cv-aim)}.cv-lines li i.cv-kw{background:var(--ocre-soft);box-shadow:inset 0 0 0 1px var(--ocre)}.cv-lines li i.cv-free{background:none;border:1px dashed var(--faint)}
.cv-lines li span{color:var(--mute);min-width:0}.cv-lines li span b{color:var(--ink);font-weight:500}
.cv-lines li em{font-style:normal;font-family:"Geist Mono",monospace;font-size:12px;white-space:nowrap}
.cv-wkly{display:flex;align-items:baseline;gap:8px;margin:14px 0 0;padding:12px 0 0;border-top:1px solid var(--line);font-size:12.5px;color:var(--mute)}
.cv-wkly b{font-family:"Geist Mono",monospace;font-size:20px;font-weight:500;color:var(--ink);letter-spacing:-.02em}
.cv-tl{list-style:none;margin:14px 0 16px;padding:0;position:relative}
.cv-tl:before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:1px;background:var(--line)}
.cv-tl li{position:relative;padding:0 0 9px 22px;font-size:12.5px;color:var(--mute);line-height:1.4}
.cv-tl li:last-child{padding-bottom:0}
.cv-tl li:before{content:"";position:absolute;left:0;top:4px;width:11px;height:11px;border-radius:50%;background:var(--card);border:2px solid var(--acc)}
.cv-tl li:first-child:before{background:var(--acc)}
.cv-tl li b{color:var(--ink);font-weight:500}
.cv-tl li small{display:block;font-family:"Geist Mono",monospace;font-size:10.5px;color:var(--faint);letter-spacing:.04em;text-transform:uppercase}
.cv-pay{width:100%;justify-content:center;padding:13px 16px;font-size:14.5px}
.cv-trust{display:flex;flex-wrap:wrap;gap:4px 12px;justify-content:center;margin:10px 0 0;font-size:11.5px;color:var(--faint)}
.cv-trust span:before{content:"✓ ";color:var(--acc)}
.cv-pop-num{animation:pflash .55s var(--ease)}
/* la barre du mobile : le prix et le bouton, toujours là */
.cv-mbar{display:none}
@container page (max-width:1080px){.cv-grid{grid-template-columns:minmax(0,1fr) 300px;gap:28px}}
@container page (max-width:900px){
  .cv-grid{grid-template-columns:minmax(0,1fr)}
  .cv-side{position:static}
  .cv-board{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cv-col:nth-child(2) .cv-step:after{display:none}
}
@container page (max-width:640px){
  .cv-board,.cv-ias,.cv-rts,.cv-ext{grid-template-columns:minmax(0,1fr)}
  .cv-step:after{display:none}
  .cv-cd{min-height:0}
  .cv-sh{grid-template-columns:30px minmax(0,1fr)}.cv-n{width:30px;height:30px;font-size:13px}.cv-sh h2{font-size:19px}.cv-ans{grid-column:2;justify-self:start}
  .cv-sub{grid-column:1/-1}
  .cv-mxh{display:none}
  .cv-mxr{grid-template-columns:40px minmax(0,1fr) auto}.cv-mxr .cv-msq{grid-column:2;grid-row:2}.cv-mxr .cv-mv{grid-row:1;grid-column:3}
  .cv-mxr .cv-msq i{width:13px;height:13px}
  .cv-cadd{grid-template-columns:minmax(0,1fr)}
  .cv-kadd{width:100%}.cv-kadd input{flex:1;width:auto;min-width:0}
  .cv-qrp{opacity:1}
  .cv-wk i{height:20px}
}
@media (hover:none){.cv-qrp{opacity:1}}
@media (max-width:900px){
  .cv-mbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:28;background:var(--ink);color:#fff;padding:10px 16px;align-items:center;gap:12px;box-shadow:0 -10px 34px rgba(19,20,23,.22)}
  .cv-mbar .cv-bp{font-family:"Geist Mono",monospace;font-size:19px;font-weight:500;white-space:nowrap}
  .cv-mbar .cv-bp small{font-size:10.5px;color:#9EA1A8;margin-left:4px;font-weight:400}
  .cv-mbar .btn.primary{background:#fff;color:var(--ink);border-color:#fff;margin-left:auto;white-space:nowrap}
  .cv-page .demo{bottom:80px}
}
@media (max-width:360px){.cv-mbar{flex-wrap:wrap;row-gap:8px}.cv-mbar .btn.primary{flex-basis:100%;margin-left:0;justify-content:center}.cv-page .demo{bottom:120px}}

/* ─── 22b. le constructeur B servi par l'app (plan 4.3d, S228) : une réponse manquante ce jour-là (pas d'aperçu IA, moteur sans
   réponse) ne compte ni pour ni contre ; son carré est vide, comme `.rs3-mxr .sq i.x` de la page de résultat. Classes mb-. ─── */
.cv-isq i.mb-x,.cv-mxr .cv-msq i.mb-x{background:none;border:1px dashed var(--faint)}

/* ─── 23. l'app à l'état mesure (plan 4.5b, cadrage docs/cadrage-s221-app-etat-mesure.md) : la barre de la marque et le bureau
   servis par l'app sur les vraies données. Classes ms- (leçon S160c) : les règles de page du prototype m2-bureau/bureau.html
   (.already, .wait, .sub) reprises ici sous préfixe, aucune règle sur une classe existante. ─── */
.ms-fav{width:16px;height:16px;border-radius:4px;flex:0 0 auto;object-fit:contain}
.ms-sub{font-size:15px;color:var(--mute);margin:-18px 0 26px;max-width:760px}
.ms-sub b{color:var(--ink);font-weight:500}
@container page (max-width:980px){.ms-sub{margin-top:8px}}
.ms-already{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0 0 18px}
.ms-already .card{padding:14px 16px;font-size:13px}
.ms-already .k{margin-bottom:4px}
@container page (max-width:600px){.ms-already{grid-template-columns:1fr}}
.ms-wait{display:flex;flex-direction:column;gap:10px}
.ms-wait .row{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:13px;padding:8px 0;border-bottom:1px solid var(--line)}
.ms-wait .row .prog{width:120px;height:6px;background:#EFEFEB;border-radius:3px;overflow:hidden;flex:0 0 auto}
.ms-wait .row .prog i{display:block;height:100%;background:var(--acc)}
.ms-tl-t{color:var(--faint)}
.ms-pend{color:var(--faint);font-size:12px}

/* 4.5b-2 (cadrage S221) : la plongée Présence IA et la revue de la semaine, sur les vraies données. Préfixe ms- (leçon S160c). */
/* une question citée parfois : la case mi-pleine (code 6 de Kit.qrows) */
.qrow .verd i.ms-mi,.vlegend i.ms-mi{background:linear-gradient(90deg,var(--acc) 50%,#D8D8D3 50%)}
/* la présence des aperçus IA, sous les vu-mètres (le .aiona du prototype m3-plongees/ia.html) */
.ms-aiona{margin-top:16px;padding-top:12px;border-top:1px solid var(--line);font-size:12.5px;color:var(--mute);display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ms-aiona b{color:var(--ink);font-weight:500}
.ms-aiona>span{flex:1 1 260px}
/* la revue en surimpression du bureau : le film du kit (§8), au-dessus de la barre, du panneau et du toast */
.ms-film{z-index:50}
.ms-film[hidden]{display:none}
.ms-film .topbar .chip{gap:6px}
.ms-film .sortie .btn{margin:4px}
/* entre 601 et 1199 px, le rail des faits (.frail, à 26 px du bord) recouvrait le titre : la section lui laisse sa place */
@media (min-width:601px) and (max-width:1199px){.ms-film .scroller section{padding-left:64px}}
/* un jour partiel sur la courbe : point creux, hors de la ligne (Kit.curve, seul:true) */
.curve .pt.seul{fill:var(--card);stroke:var(--acc);stroke-width:2}
.curveleg .ms-l5{width:9px;height:9px;border-radius:50%;background:var(--card);border:2px solid var(--acc)}

/* 4.5b-3 (cadrage S221) : le registre, le SEO et le marché sur les vraies données. Préfixe ms- (leçon S160c) : les règles de page
   des prototypes m3-plongees/registre.html, seo.html et marche.html reprises sous préfixe, jamais sur une classe existante nue. */
/* registre : les quatre compteurs et le sceau côte à côte (le .grid-side.cnt du prototype) */
.ms-cnt{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:stretch;margin-bottom:18px}
@container page (max-width:980px){.ms-cnt{grid-template-columns:minmax(0,1fr)}.ms-cnt .seal{width:100%}}
/* la frise : les lignes ne rejouent pas leur entrée à chaque filtre ; une ligne arrivée pendant le relevé glisse */
.ms-reg .tl{animation:none}
.ms-reg .tl.pick{border-bottom:1px solid #F0F0EC}
.ms-reg .tl.ms-fresh{animation:slide .5s var(--ease)}
.ms-reg .fbar .fwd{white-space:nowrap}
.ms-reg .fbar .ms-engs{font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--faint)}
/* une fenêtre manquée par la cadence : montrée, datée, jamais comblée (DESIGN §6) */
.fwin.ms-trou .fnode{border-style:dashed;background:var(--card2)}
.ms-trou-b{padding:8px 18px;border:1px dashed var(--line);border-radius:var(--r2);font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);background:var(--card2)}
/* le panneau d'une réponse ou d'une requête : la tête et le grand chiffre (les .panel .rank, .panel .k du prototype) */
.ms-pdet .rank{margin:6px 0 4px}
.ms-pdet .rank .mono{font-size:38px}
.ms-pdet .k{margin-top:18px}
.ms-pkw{font-size:17px;font-weight:600;letter-spacing:-.01em;margin:0 0 8px}
/* SEO : la liste des requêtes et ses deux cartes voisines (le .grid1.seo du prototype) */
.ms-seo{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:18px;align-items:start;margin-top:18px}
@container page (max-width:980px){.ms-seo{grid-template-columns:minmax(0,1fr)}}
.ms-side{display:grid;gap:18px;min-width:0}
.tbl tr.ms-pick{cursor:pointer}
.tbl tr.ms-pick:focus-visible td{outline:2px solid var(--hot);outline-offset:-2px}
/* un tableau large défile dans sa carte au téléphone (DESIGN §8) */
.ms-tscroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.ms-tscroll .tbl{min-width:560px}
.ms-seo .tbl .spark{width:88px}
.ms-seo .tbl td:first-child{min-width:200px}
/* un mouvement fiable : la requête, puis l'ancien et le nouveau rang (le .mv du prototype : « .mv » est la valeur d'une règle du kit) */
.ms-mv{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.ms-mv .t{font-weight:500;min-width:0}.ms-mv .t small{display:block;color:var(--mute);font-weight:400;font-size:12px}
.ms-mv .ba{font-size:13px}
.ms-notecard{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:18px;font-size:13.5px}
.ms-notecard b{font-weight:600}
.ms-notecard .btn{margin-left:auto}
/* marché : la période du comparatif, l'échelle, la vigie et vos questions de marque */
.ms-period{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 18px}
.ms-period .note{margin:0}
.ms-railc .rail{margin-top:58px;margin-bottom:34px}
.ms-railc .rail .t{white-space:nowrap}
.k .ms-sel{margin-left:auto;letter-spacing:0;text-transform:none;font-weight:400;color:var(--faint)}
.ms-brandbloc .rank{margin-bottom:8px}
.ms-brandbloc p{margin:0;color:var(--mute);font-size:13px;max-width:70ch}
.ms-watch p{margin:0 0 6px;font-size:13.5px}
@container page (max-width:600px){.ms-railc .rail{margin-top:52px}.ms-mv .ba{grid-column:1/-1}}

/* 4.5b-7 (cadrage S221 §8) : la démo de la vitrine. La fenêtre du prototype m8-vitrine/demo.html portait l'app dans une
   iframe, que la CSP de la vitrine refuse : le bureau de l'app y est posé tel quel, dans un cadre qui défile seul ; la barre
   de la marque reste collée en haut du cadre, comme dans l'app. */
.vt-demo .win .ms-demo{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;background:var(--bg);background-image:var(--grid);background-size:28px 28px}
.ms-demo .top{top:0}
.ms-demo-panne{position:absolute;left:50%;top:40%;transform:translateX(-50%);margin:0;background:var(--card);border:1px solid var(--line);border-radius:var(--r2);box-shadow:var(--sh);padding:14px 20px;font-size:13.5px}
.ms-demo-panne a{text-decoration:underline;text-underline-offset:3px;margin-left:6px}
.ms-demo-panne[hidden]{display:none}
/* le verdict dans la fenêtre de la démo (demande owner, S225) : plus petit, replié sur deux lignes, déplié par un geste ;
   la fenêtre se lit d'abord par ses instruments. L'app garde son verdict entier. */
.ms-demo .verdict{font-size:clamp(22px,2.1vw,28px);margin-bottom:8px}
.ms-demo .verdict.ms-replie{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden}
.ms-demo .ms-sub{margin-top:0}
.ms-suite{display:inline-block;margin:0 0 14px;padding:0;border:0;background:none;font:inherit;font-size:13px;color:var(--mute);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.ms-suite:hover{color:var(--ink)}
.ms-suite[hidden]{display:none}
@container page (max-width:600px){.ms-demo .verdict{font-size:20px}}
/* le cadran d'une carte (bureau, démo, prototype m2) : la graduation « 50 » se pose au-dessus du dessin (rayon 166 sur un cadre
   de 320) et chevauchait le titre de la carte ; le cadran descend d'autant (vu sur la démo, S225) */
.card.gauge .gwrap:not(.arm){margin-top:16px}
/* ─── 24. les états de l'abonnement (plan 4.4b, S233, ADR-031 §5 ; prototype m9-app/parametres.html, bloc « Votre mesure », et la
   reprise de m9-app/app.js) : la page de facturation (une carte par espace, le prix HT, la configuration en puces, le geste de
   l'état) et l'écart de la reprise dans son dialogue. La bande d'état reste celle du §18 (.en-band : ocre, vermillon, violet).
   Classes préfixées abo- (leçon S160c). ─── */
.abo-orgs{display:grid;gap:18px;max-width:760px}
.abo-orgs .blk{margin:0}
.abo-orgs .price{margin-top:12px}
.abo-acts{margin-top:16px}
.abo-ecart{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 18px;font-size:13px;padding:12px 14px;background:var(--card2);border-radius:var(--r2)}
.abo-ecart b{text-align:right;font-weight:500}

/* ─── 25. l'espace gratuit (plan 4.5-1, S234, cadrage docs/cadrage-s234-app-etat-analyse-et-parametres.md §3 ; prototype
   m9-app/analyses.html, validé owner le 01/10) : « Mes analyses » à /analyses. Mise en page seulement : le quota (.quota), le
   champ (.en-start), les tuiles de l'état vide (.en-tiles), le tableau (.tbl) et les pastilles (.pill) sont ceux du kit. La 404
   de l'app reprend .errpage et .ctarow. Classes préfixées man- (leçon S160c), enfants compris. ─── */
.man-quota{margin:-10px 0 22px}
.man-sec{margin-top:18px}
.man-scroll{overflow-x:auto}
.man-tbl td{vertical-align:top}
.man-st{white-space:nowrap}
.man-res{font-size:12.5px;color:var(--mute)}
.man-res b{color:var(--ink);font-weight:500;font-family:"Geist Mono",monospace}
.man-cause{display:block;font-size:12px;color:var(--mute);margin-top:2px;max-width:42ch;white-space:normal}
.man-cause button.lk{font:inherit;font-size:12px;color:var(--ink);text-decoration:underline;text-underline-offset:3px;background:none;border:0;padding:0;cursor:pointer}
.man-dom{display:inline-flex;align-items:center;gap:8px;font-weight:500;white-space:nowrap}
.man-acts{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.man-inline{display:inline;margin:0}
.man-404{max-width:640px;margin:0 auto}
/* En petite largeur, une analyse = un bloc (le site et sa date, puis l'état, ce qu'elle a trouvé, les gestes) : le tableau qui
   défile en largeur (§ .tbl) cachait l'état et les gestes hors de l'écran. */
@container page (max-width:600px){
  .man-tbl,.man-tbl tbody{display:block;overflow:visible}
  .man-tbl thead{display:none}
  .man-tbl tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;padding:14px 0;border-bottom:1px solid #F0F0EC}
  .man-tbl tr:last-child{border-bottom:0}
  .man-tbl td{display:block;padding:0;border:0}
  .man-tbl tr:hover td{background:none}
  .man-tbl td:nth-child(2){grid-column:2;grid-row:1;text-align:right}
  .man-tbl td:nth-child(n+3){grid-column:1/-1}
  .man-dom{white-space:normal;overflow-wrap:anywhere}
  .man-acts{justify-content:flex-start}
  .man-tbl td.man-vide{display:none}
}

/* ─── 26. la page unique des paramètres (plan 4.5-2, S234, cadrage docs/cadrage-s234-app-etat-analyse-et-parametres.md ;
   prototype m9-app/parametres.html, validé owner le 01/10) : deux colonnes (vous, notifications, vos données, retours ;
   votre mesure, factures, comment vous travaillez). Mise en page seulement : .blk, .field, .cfg, .mchip, .switch, .seg,
   .price, .formula, .orghd, .tbl, .sessrow, .disclose et la bande .en-band sont ceux du kit. Classes préfixées prm-
   (leçon S160c), enfants compris. ─── */
.prm-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;align-items:start}
.prm-cols>div{display:grid;gap:18px}
.prm-cols .blk{margin:0;scroll-margin-top:84px}
.prm-ligne{display:flex;gap:8px;align-items:center}
.prm-ligne input{flex:1;min-width:0}
.prm-mono{font-size:13px;overflow-wrap:anywhere}
.prm-sw{display:block;margin:0}
.prm-n0{margin:0}
.prm-des{margin:0 6px 0 0}
.prm-scroll{overflow-x:auto}
.prm-mt{margin-top:12px}
.prm-steps{display:grid;gap:10px;margin:10px 0 0}
.prm-steps .field{margin:0}
.prm-prof{display:grid;gap:12px}
/* l'intitulé d'une question du profil ; jamais le .switch du kit (un label lui aussi, en ligne : vu en QA, S234) */
.prm-prof>div>label{font-size:13px;font-weight:500;display:block;margin-bottom:6px}
@container page (max-width:980px){.prm-cols{grid-template-columns:minmax(0,1fr)}}

/* ─── 27. changer ma mesure (plan 4.5-4, S237b, ADR-039 proposée ; R1 du cadrage S217 §6, D2 du cadrage S234 §4 ; prototype
   m9-app/construire-b.html?cas=changer, à revoir par l'owner) : le constructeur B ouvert sur la mesure en cours. Le
   récapitulatif porte deux prix (aujourd'hui, nouveau), le sens du changement et son moment, ce qui change ligne à ligne ;
   les cartes et les questions disent ce qui est mesuré, ajouté, retiré ; un geste fermé dit pourquoi et ce qui l'ouvre,
   jamais un bouton grisé. Le reste (récapitulatif, frise, dialogue, avis) est celui du kit. Classes préfixées chm-
   (leçon S160c), enfants compris. ─── */
.chm-two{display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:start;gap:4px 12px;margin:0}
.chm-two small{display:block;font-family:"Geist Mono",monospace;font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);margin-bottom:4px}
.chm-two .chm-now{font-family:"Geist Mono",monospace;font-size:19px;font-weight:500;color:var(--mute);letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1}
.chm-two .chm-ar{font-family:"Geist Mono",monospace;color:var(--faint);font-size:16px;line-height:1;padding-top:24px}
.chm-two .chm-new .cv-pv{display:block;font-family:"Geist Mono",monospace;font-size:40px;font-weight:500;letter-spacing:-.04em;line-height:1;font-variant-numeric:tabular-nums;white-space:nowrap}
.chm-two .chm-new .chm-ht{display:block;font-family:"Geist Mono",monospace;font-size:12px;color:var(--mute);margin-top:4px}
.chm-two .chm-now{white-space:nowrap}
.chm-sens{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;font-size:12.5px;color:var(--mute);margin:10px 0 14px}
.chm-sens b{font-family:"Geist Mono",monospace;font-weight:500;color:var(--ink)}
.chm-sens .chm-s{font-family:"Geist Mono",monospace;font-size:10px;letter-spacing:.05em;text-transform:uppercase;padding:2px 7px;border-radius:5px;background:var(--card2);color:var(--mute)}
.chm-sens.chm-up .chm-s{background:var(--acc-soft);color:var(--acc)}
.chm-sens.chm-down .chm-s{background:var(--ocre-soft);color:var(--ocre)}
.chm-grand{font-size:12px;color:var(--mute);margin:-6px 0 14px;padding:9px 11px;background:var(--card2);border-radius:10px}
.chm-grand b{font-family:"Geist Mono",monospace;font-weight:500;color:var(--ink)}
/* ce qui change, ligne à ligne : un signe, la phrase, l'écart */
.chm-diff{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:2px}
.chm-diff li{display:grid;grid-template-columns:14px minmax(0,1fr) auto;gap:8px;align-items:baseline;font-size:12.5px;padding:4px 0;border-bottom:1px solid #F0F0EC}
.chm-diff li:last-child{border-bottom:0}
.chm-diff .chm-pm{font-family:"Geist Mono",monospace;font-weight:500;color:var(--acc);text-align:center}
.chm-diff li.chm-m .chm-pm{color:var(--hot)}
.chm-diff li.chm-z .chm-pm{color:var(--faint)}
.chm-diff span{color:var(--mute);min-width:0}.chm-diff span b{color:var(--ink);font-weight:500}
.chm-diff em{font-style:normal;font-family:"Geist Mono",monospace;font-size:12px;white-space:nowrap}
.chm-none{font-size:12.5px;color:var(--mute);margin:14px 0 6px;padding:12px 14px;border:1px dashed var(--line);border-radius:var(--r2);text-align:center}
.chm-none b{color:var(--ink);font-weight:500}
/* le geste fermé : pourquoi, et le geste qui l'ouvre */
.chm-shut{margin:14px 0 0;padding:12px 14px;background:var(--card2);border-radius:var(--r2);font-size:12.5px;color:var(--mute);line-height:1.45}
.chm-shut b{color:var(--ink);font-weight:500}
.chm-shut .btn{margin-top:10px;width:100%;justify-content:center}
/* ce qui est mesuré, ajouté, retiré : sur une question, une IA, un rythme */
.chm-mk{font-family:"Geist Mono",monospace;font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;padding:1px 6px;border-radius:5px;background:var(--card2);color:var(--mute);white-space:nowrap}
.chm-mk.chm-in{background:var(--acc-soft);color:var(--acc)}
.chm-mk.chm-out{background:var(--hot-soft);color:var(--hot)}
.chm-ihm{display:flex;flex-wrap:wrap;gap:4px;margin:-2px 0 0}
/* le dialogue de confirmation : le prélèvement d'aujourd'hui, puis le prix de chaque mois */
.chm-dlg .k{margin:0 0 6px}
.chm-pay{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 18px;font-size:13px;padding:12px 14px;background:var(--card2);border-radius:var(--r2);margin:0 0 10px}
.chm-pay b{text-align:right;font-weight:500;font-family:"Geist Mono",monospace;white-space:nowrap}
.chm-pay .chm-tot{font-weight:600;color:var(--ink)}
.chm-pay .chm-sep{grid-column:1/-1;height:1px;background:var(--line);margin:2px 0}
/* le changement programmé, dans « Votre mesure » des paramètres */
.chm-prog{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 14px;align-items:center;margin:14px 0 0;padding:12px 14px;border:1px solid var(--line);border-left:3px solid var(--ocre);border-radius:var(--r2);font-size:12.5px;color:var(--mute)}
.chm-prog b{color:var(--ink);font-weight:500}
.chm-prog .num{font-family:"Geist Mono",monospace;color:var(--ink)}
@container page (max-width:600px){
  .chm-two .chm-new .cv-pv{font-size:32px}
  .chm-prog{grid-template-columns:minmax(0,1fr)}
}
/* ─── 28. l'équipe (plan 4.5-5, S241, cadrage docs/cadrage-s234-app-etat-analyse-et-parametres.md §17 ; prototype
   m9-app/parametres.html « Équipe », lignes .m9-who de m9.css) : un membre par ligne (nom, adresse, rôle, geste), les
   invitations en attente, le champ d'invitation ; puis la page /invitation/<jeton> (de, pour, rôle). Préfixe eqp-. ─── */
.eqp-liste{display:contents}
.eqp-who{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.eqp-who:last-child{border-bottom:0}
.eqp-who>span:first-child{min-width:0;overflow-wrap:anywhere}
.eqp-who small{display:block;font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);overflow-wrap:anywhere}
.eqp-who .eqp-moi{color:var(--mute);font-weight:400}
.eqp-who select{font-size:12px;padding:4px 8px}
.eqp-who.eqp-att{color:var(--mute)}
.eqp-acts{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.eqp-inv-f{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 0}
.eqp-inv-f input{flex:1 1 200px;width:auto;min-width:0}
.eqp-inv-f select,.eqp-inv-f .btn{flex:0 0 auto;width:auto}
.eqp-n0{margin:0}
.eqp-kv{display:grid;gap:6px;margin:0 0 18px;padding:12px 14px;background:var(--card2);border-radius:var(--r2);font-size:13px}
.eqp-kv>div{display:grid;grid-template-columns:52px minmax(0,1fr);gap:10px}
.eqp-kv dt{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);padding-top:2px}
.eqp-kv dd{margin:0;overflow-wrap:anywhere}
.eqp-kv .mono{font-family:"Geist Mono",monospace;font-size:12px;color:var(--mute)}
.eqp-inv .eyebrow{margin:0 0 8px}
.eqp-inv .note{margin:14px 0 0}
.eqp-inv .notice{margin:0 0 14px}
@container page (max-width:600px){
  .eqp-who{grid-template-columns:minmax(0,1fr) auto}
  .eqp-who .eqp-acts{grid-column:1/-1;justify-content:flex-start}
}

/* ─── 29. la réserve des questions (plan 2.1j, S243 ; 2.1j-3, S246, ADR-036 précision 47 ; prototype m4-reglages/corpus.html) :
   la réserve de la page des questions rangée par famille de l'offre (titre, compte, « dont N à demande prouvée », repliée sauf la
   première, prouvées d'abord, filtre « à demande prouvée »), et « Échanger » quand le quota est plein : la question choisie entre,
   celle qu'elle remplace sort, une seule confirmation. Les lignes sont des .qedit du §12 ; le reste est préfixé ce-, enfants compris
   (leçons S160c et S211). Validée owner le 07/10 (« B carrés et A panneau ») : l'app sert .ce-sqv et le panneau ; la barre (.ce-bar)
   est la variante non retenue, gardée pour mémoire comme le constructeur A. ─── */
.ce-bloc{margin-top:26px}
.ce-prep{margin-top:18px}
.ce-lead{margin:0 0 10px;max-width:76ch}
.ce-masq{margin:12px 0 0}
/* la famille : un accordéon, le nom, le compte, le chevron ; la variante « carrés » pose un carré par question entre les deux */
details.ce-fam{border-bottom:1px solid var(--line)}
details.ce-fam:last-of-type{border-bottom:0}
details.ce-fam>summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:minmax(0,1fr) auto 14px;gap:6px 16px;align-items:center;padding:13px 10px;border-radius:10px;transition:background .12s}
details.ce-fam>summary::-webkit-details-marker{display:none}
details.ce-fam>summary:hover{background:var(--card2)}
details.ce-fam>summary:focus-visible{outline:2px solid var(--acc);outline-offset:-2px}
details.ce-fam>summary:after{content:"▾";grid-column:-2;grid-row:1;justify-self:end;color:var(--faint);font-size:12px}
details.ce-fam[open]>summary:after{content:"▴"}
.ce-fn{font-weight:600;font-size:14.5px;letter-spacing:-.01em;min-width:0}
.ce-fc{font-family:"Geist Mono",monospace;font-size:11.5px;color:var(--mute);text-align:right}
.ce-fc b{color:var(--ink);font-weight:500}
.ce-fc .ce-fp{color:var(--acc);font-weight:500}
/* la tête à carrés se replie d'elle-même (nom, carrés, compte), le chevron reste en haut à droite */
details.ce-fam.ce-sqv>summary{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;position:relative;padding-right:36px}
details.ce-fam.ce-sqv>summary:after{position:absolute;right:12px;top:14px}
details.ce-fam.ce-sqv .ce-fn{flex:0 1 230px}
details.ce-fam.ce-sqv .ce-sq{flex:1 1 200px}
details.ce-fam.ce-sqv .ce-fc{flex:0 1 auto}
.ce-sq{display:flex;flex-wrap:wrap;gap:3px;min-width:0}
.ce-sq i{width:8px;height:8px;border-radius:2px;background:#E6E6E1}
.ce-sq i.ce-p{background:var(--acc)}
.ce-sq i.ce-d{background:transparent;box-shadow:inset 0 0 0 1px #C9CBCF}
.ce-fb{padding:0 0 12px}
.ce-fb .qedit:last-child{border-bottom:0}
/* la demande d'une question : sa barre et son chiffre par mois, « demande non mesurée » en estompé */
.qedit .ce-dm{display:inline-flex;align-items:center;justify-content:flex-end;gap:7px;min-width:122px}
.ce-dm i{display:block;height:4px;border-radius:2px;background:var(--acc);opacity:.65;flex:none}
.qedit .ce-dm.ce-nd{font-family:"Geist",sans-serif;font-size:11.5px;color:var(--faint);white-space:normal}
/* l'échange : la question qui entre (teal), celle qui sort (vermillon, barrée) */
.qedit.ce-on{background:var(--acc-soft)}
.qedit.ce-off{background:var(--hot-soft)}
.qedit.ce-off .tx{text-decoration:line-through;text-decoration-color:var(--hot)}
.qedit.ce-pk .btn.danger{opacity:1}
.ce-in{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 10px;align-items:start;padding:12px 14px;border:1px solid var(--line);border-left:3px solid var(--acc);border-radius:var(--r2);margin:0 0 6px}
.ce-in .chm-mk,.ce-sw .chm-mk,.ce-bs .chm-mk{margin-top:2px;flex:none}
.ce-it b{display:block;font-weight:600;font-size:14px;line-height:1.4}
.ce-it small{display:block;margin-top:4px;font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute)}
.k.ce-og{margin:18px 0 2px}
label.ce-out{display:grid;grid-template-columns:16px minmax(0,1fr) auto;gap:12px;align-items:center;padding:9px 10px;border-bottom:1px solid var(--line);font-size:13.5px;cursor:pointer;border-radius:10px;transition:background .12s}
label.ce-out:hover{background:var(--card2)}
label.ce-out input{margin:0;width:16px;height:16px;accent-color:var(--hot)}
.ce-ot{min-width:0}
.ce-oa{font-family:"Geist Mono",monospace;font-size:11px;color:var(--mute);white-space:nowrap}
label.ce-out.ce-off{background:var(--hot-soft)}
label.ce-out.ce-off .ce-ot{text-decoration:line-through;text-decoration-color:var(--hot)}
.ce-sw{flex:1 1 260px;min-width:0;display:flex;align-items:flex-start;gap:8px;font-size:12.5px;color:var(--mute);line-height:1.45}
.ce-sw b{color:var(--ink);font-weight:500}
.ce-sw.ce-w{color:var(--faint)}
/* la variante « barre », non retenue (07/10) : l'échange se compose sur la page, la barre collée en bas dit ce qui entre et ce qui sort */
.ce-bar{position:fixed;left:0;right:0;bottom:0;z-index:20;background:var(--card);border-top:1px solid var(--line);transform:translateY(110%);transition:transform .35s var(--ease)}
.ce-bar.on{transform:none}
.ce-bi{max-width:1040px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;gap:8px 20px;align-items:center;padding:12px 22px}
.ce-bs{display:flex;align-items:center;gap:8px;min-width:0;font-size:13px}
.ce-bs b{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.ce-bs .ce-bw{color:var(--faint)}
.ce-ba{display:flex;gap:8px;justify-content:flex-end}
body.ce-swapping .wrap{padding-bottom:160px}
body.ce-swapping .demo{bottom:84px}
@container page (max-width:600px){
  details.ce-fam>summary{grid-template-columns:minmax(0,1fr) 14px;padding:12px 6px}
  details.ce-fam>summary .ce-fc{grid-column:1;grid-row:2;text-align:left}
  details.ce-fam.ce-sqv>summary{padding-right:30px}
  details.ce-fam.ce-sqv>summary:after{right:6px;top:13px}
  details.ce-fam.ce-sqv .ce-fn{flex-basis:100%}
  .qedit .ce-dm{min-width:0;justify-content:flex-start}
  .ce-fb .qedit .tx,.qedit.ce-pk .tx{grid-column:2/-1}
  .ce-fb .qedit .fd,.qedit.ce-pk .fd{align-self:start;margin-top:6px}
  .qedit.ce-pk .age{white-space:normal}
}
/* le panneau et la barre sont hors du conteneur « page » : chacun est son propre conteneur (même rendu au téléphone et dans le cadre 375 du kit) */
.panel .pb.ce-pb{container-type:inline-size;container-name:cepb}
.ce-bar{container-type:inline-size;container-name:cebar}
@container cepb (max-width:460px){
  label.ce-out{grid-template-columns:16px minmax(0,1fr);row-gap:3px}
  label.ce-out .ce-oa{grid-column:2}
}
@container cebar (max-width:600px){
  .ce-bi{grid-template-columns:minmax(0,1fr);padding:10px 14px}
  .ce-bs b{white-space:normal}
}
