
/* Layout: barre de rôles en haut ; salarié et laveur dans un cadre de téléphone, gestionnaire et back-office en pleine largeur */
:root{
  /* V11 : les variables V10 pointent sur les jetons du design system (clair, sombre et terrain suivent les jetons) */
  --fog:var(--b-bg); --paper:var(--b-surface); --ink:var(--b-ink); --muted:var(--b-ink-2); --line:var(--b-line);
  --accent:var(--b-brand); --accent-ink:var(--b-on-brand); --accent-soft:var(--b-brand-soft); --sun:var(--b-warn-fill);
  --good:var(--b-ok); --warn:var(--b-warn); --bad:var(--b-danger);
  --display:var(--b-font-display); --body:var(--b-font); --mono:var(--b-font-mono);
  --top-bg:var(--b-surface); --top-ink:var(--b-ink); --top-muted:var(--b-ink-2);
}
*{box-sizing:border-box}
body{background:var(--fog);color:var(--ink);font-family:var(--body);font-size:15px;line-height:1.45}
.wrap{max-width:1180px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
h1,h2,h3{font-family:var(--display);margin:0;line-height:1.1;text-wrap:balance}
h2{font-size:1.5rem}h3{font-size:1.1rem}
p{margin:0}
.mono,.num{font-family:var(--mono);font-variant-numeric:tabular-nums}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:3px solid var(--sun);outline-offset:2px}
.muted{color:var(--muted)}
.small{font-size:.82rem}

/* top */
.top{background:var(--top-bg);color:var(--top-ink);position:sticky;top:env(safe-area-inset-top,0px);z-index:10}
.brand{color:var(--top-ink)}
.top .wrap{display:flex;align-items:center;gap:16px;padding-block:10px;flex-wrap:wrap}
.brand{font-family:var(--display);font-weight:800;font-size:1.3rem;margin-right:8px}
.roles{display:flex;gap:4px;flex-wrap:wrap}
.roles button{background:transparent;border:1px solid transparent;color:var(--top-muted);padding:7px 12px;border-radius:999px;font-weight:600;font-size:.88rem}
.roles button[aria-selected="true"]{background:#E6EFED;color:#132624}
.sample{margin-left:auto;font-size:.75rem;color:#9DB1AD;font-family:var(--mono)}

.stage{padding-block:28px 56px}
.split{display:grid;grid-template-columns:400px 1fr;gap:40px;align-items:start}
@media (max-width:900px){.split{grid-template-columns:1fr}}
.side{display:grid;gap:14px;max-width:56ch;min-width:0}
.side h2{font-size:1.7rem}
.side ol{margin:0;padding-left:20px;display:grid;gap:6px;color:var(--muted)}

/* phone */
.phone{width:100%;max-width:390px;margin:0 auto;background:var(--paper);border:1px solid var(--line);border-radius:34px;padding:14px;box-shadow:0 18px 40px -24px rgba(10,30,28,.45)}
.screen{border-radius:24px;background:var(--fog);min-height:640px;overflow:hidden;display:flex;flex-direction:column}
.bar{display:flex;align-items:center;gap:10px;padding:14px 16px;background:var(--paper);border-bottom:1px solid var(--line)}
.bar .back{border:0;background:transparent;font-size:1.2rem;padding:0 4px}
.bar b{font-family:var(--display);font-size:1.05rem}
.body{padding:16px;display:grid;gap:12px;align-content:start;flex:1}
.card{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:14px;display:grid;gap:8px}
.btn{border:1.5px solid var(--ink);background:transparent;border-radius:999px;padding:11px 16px;font-weight:700;text-align:center}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.btn.ghost{border-color:var(--line)}
.btn.danger{border-color:var(--bad);color:var(--bad)}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.row{display:flex;justify-content:space-between;align-items:center;gap:10px}
.pill{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 9px;font-size:.75rem;font-weight:600;background:var(--accent-soft);color:var(--ink);white-space:nowrap}
.pill.sun{background:color-mix(in srgb,var(--sun) 30%,transparent)}
.pill.bad{background:color-mix(in srgb,var(--bad) 18%,transparent)}
.pill.warn{background:color-mix(in srgb,var(--warn) 22%,transparent)}
.pill.line{background:transparent;border:1px solid var(--line)}
.pill.wrap,.cand .pill{white-space:normal;max-width:100%}
.cand{min-width:0;max-width:100%;box-sizing:border-box;overflow-wrap:anywhere}
.balance{background:var(--accent);color:var(--accent-ink);border:0}
.balance .big{font-family:var(--mono);font-size:2.2rem;font-weight:500}
.gauge{height:8px;border-radius:4px;background:color-mix(in srgb,var(--line) 70%,transparent);overflow:hidden}
.gauge i{display:block;height:100%;background:var(--accent);border-radius:4px}
.balance .gauge{background:rgba(255,255,255,.25)}.balance .gauge i{background:var(--accent-ink)}
.opt{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;text-align:left;background:var(--paper);border:1.5px solid var(--line);border-radius:14px;padding:12px}
.opt[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft)}
.opt .code{font-family:var(--mono);font-size:.75rem;color:var(--accent);font-weight:500}
.seg{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.seg button{border:1.5px solid var(--line);background:var(--paper);border-radius:10px;padding:8px 4px;font-size:.8rem;font-weight:600}
.seg button[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft)}
.prov{display:grid;gap:8px;text-align:left;background:var(--paper);border:1.5px solid var(--line);border-radius:16px;padding:14px;width:100%}
.prov:hover{border-color:var(--accent)}
.prov .name{font-weight:700;font-size:1rem}
.stars{color:var(--sun);letter-spacing:1px}
.price{font-family:var(--mono);font-size:1.25rem;font-weight:500}
.crit{font-size:.75rem;color:var(--muted);background:var(--paper);border:1px dashed var(--line);border-radius:10px;padding:8px 10px}
.photos{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.ph{aspect-ratio:1;max-width:100%;border-radius:8px;display:grid;place-items:end start;padding:5px;font-size:.62rem;font-weight:600;color:#fff;
  background:linear-gradient(160deg,#6c7f7c,#2f403e)}
.ph.after{background:linear-gradient(160deg,#3fb59a,#0c5a4a)}
.ph.client{background:linear-gradient(160deg,#c8826f,#7a3324)}
.ph.empty{background:transparent;border:1.5px dashed var(--line);color:var(--muted);place-items:center;padding:0}
textarea{font:inherit;width:100%;border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--paper);color:var(--ink);min-height:70px}
select,input[type=number],input[type=text]{border:1px solid var(--line);border-radius:10px;padding:9px 10px;background:var(--paper);color:var(--ink);width:100%}
.ratebtns{display:flex;gap:6px;justify-content:center}
.ratebtns button{font-size:1.8rem;border:0;background:transparent;color:var(--line);padding:0 2px}
.ratebtns button.on{color:var(--sun)}
.toast{background:var(--ink);color:var(--fog);border-radius:12px;padding:10px 12px;font-size:.85rem}
.tabbar{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);background:var(--paper)}
.tabbar button{border:0;background:transparent;padding:10px 4px;font-size:.75rem;font-weight:600;color:var(--muted)}
.tabbar button[aria-current="page"]{color:var(--accent)}

/* desk */
.desk{display:grid;gap:20px}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
@media (max-width:820px){.kpis{grid-template-columns:1fr 1fr}}
.kpi{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:14px 16px;display:grid;gap:4px}
.kpi .v{font-family:var(--mono);font-size:1.6rem;font-variant-numeric:tabular-nums}
.panel{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:18px;display:grid;gap:14px;min-width:0}
.cols{display:grid;grid-template-columns:1.6fr 1fr;gap:20px;align-items:start}
@media (max-width:900px){.cols{grid-template-columns:1fr}}
.tw{overflow-x:auto;position:relative}
table{border-collapse:collapse;width:100%;font-size:.88rem}
th,td{padding:9px 10px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}
th{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600}
td.n,th.n{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}
td input[type=number]{width:84px;padding:5px 8px;text-align:right;font-family:var(--mono)}
.ladder{display:grid;gap:6px}
.ladder div{display:grid;grid-template-columns:70px 1fr;gap:10px;align-items:center;font-size:.85rem;padding:6px 8px;border-radius:8px}
.ladder .here{background:var(--accent-soft);font-weight:600}
.dispute{display:grid;gap:12px}
.dlist button{display:grid;gap:2px;text-align:left;width:100%;background:transparent;border:0;border-bottom:1px solid var(--line);padding:10px 4px}
.dlist button[aria-current="true"]{background:var(--accent-soft)}
input[type=range]{width:100%;accent-color:var(--accent)}
.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:.78rem;color:var(--muted)}
.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.prov[aria-disabled="true"]{opacity:.55;cursor:not-allowed;background:color-mix(in srgb,var(--line) 25%,var(--paper))}
.prov[aria-disabled="true"]:hover{border-color:var(--line)}
.part{font-weight:700;color:var(--good)}
.choice{display:grid;gap:6px}
.choice label{display:flex;gap:8px;align-items:flex-start;font-size:.88rem}
.choice input{margin-top:3px;accent-color:var(--accent)}
.split2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ratebtns button[aria-pressed="true"],.ratebtns button.on{color:var(--sun)}
.photos.p4{grid-template-columns:repeat(4,1fr)}
pre.csv{margin:0;font-family:var(--mono);font-size:.72rem;line-height:1.5;background:var(--fog);border:1px solid var(--line);border-radius:10px;padding:10px;overflow-x:auto;white-space:pre;max-width:100%}
.form{display:grid;gap:10px;border:1px dashed var(--line);border-radius:12px;padding:12px}
.form .grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.form label{display:grid;gap:4px;font-size:.82rem}
.err{color:var(--bad);font-size:.82rem}
.camp{display:grid;gap:4px;border-bottom:1px solid var(--line);padding-bottom:10px}
.camp:last-child{border-bottom:0;padding-bottom:0}
.facts2{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:.85rem}
.facts2 dt{color:var(--muted)}.facts2 dd{margin:0}
td input.cap{width:72px}
/* V3 : sites, règlement, délégations, kit de preuve */
input[type=email],input[type=time]{border:1px solid var(--line);border-radius:10px;padding:9px 10px;background:var(--paper);color:var(--ink);width:100%}
.sitebar{display:flex;gap:8px;flex-wrap:wrap}
.sitebar button{display:grid;gap:2px;text-align:left;border:1.5px solid var(--line);background:var(--paper);border-radius:12px;padding:10px 12px;min-width:0;flex:1 1 180px}
.sitebar button[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft)}
.subnav{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:10px}
.subnav button{border:1.5px solid var(--line);background:var(--paper);border-radius:999px;padding:7px 12px;font-size:.85rem;font-weight:600}
.subnav button[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft)}
.wk{display:grid;gap:10px;border:1px solid var(--line);border-radius:12px;padding:12px}
.wk .row{flex-wrap:wrap}
.rsec{border:1px solid var(--line);border-radius:12px;padding:12px;display:grid;gap:10px;margin:0;min-width:0}
.rsec legend{font-family:var(--display);font-weight:600;padding:0 6px}
.rule{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;align-items:center;border-bottom:1px dashed var(--line);padding-bottom:8px}
.rule:last-child{border-bottom:0;padding-bottom:0}
.rule > label:first-child{display:grid;gap:4px;font-size:.88rem}
.rule label.inline{display:flex;gap:8px;align-items:center;font-size:.88rem}
.rule .proof{display:flex;gap:6px;align-items:center;font-size:.75rem;color:var(--muted);white-space:nowrap}
.rule input[type=checkbox],.choice input,.days input{accent-color:var(--accent)}
@media (max-width:520px){.rule{grid-template-columns:1fr}}
.days{display:flex;gap:6px;flex-wrap:wrap}
.days label{display:flex;gap:4px;align-items:center;border:1px solid var(--line);border-radius:999px;padding:3px 9px;font-size:.8rem}
.resp{border-left:4px solid var(--warn);background:color-mix(in srgb,var(--warn) 12%,transparent);border-radius:8px;padding:10px 12px;font-size:.88rem}
.log{display:grid;gap:4px;font-size:.8rem;margin:0;padding:0;list-style:none}
.log li{display:grid;grid-template-columns:auto 1fr;gap:10px;border-bottom:1px solid var(--line);padding:5px 0}
.log li:last-child{border-bottom:0}
.check{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:.85rem}
.check li{display:grid;grid-template-columns:22px 1fr;gap:6px;align-items:start}
.check .ok{color:var(--good);font-weight:700}
.check .todo{color:var(--muted)}
.timer{font-family:var(--mono);font-size:1.6rem;font-variant-numeric:tabular-nums}
.rread{display:grid;gap:8px}
.rread h4{margin:0;font-family:var(--display);font-size:.95rem}
.rread ul{margin:0;padding-left:18px;font-size:.85rem;display:grid;gap:2px}
.btnrow{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.btn.sm{padding:6px 12px;font-size:.82rem}
.cand{display:grid;gap:6px;border:1px solid var(--line);border-radius:12px;padding:12px}
.cand.bad{border-color:color-mix(in srgb,var(--bad) 45%,var(--line))}
.motif{color:var(--bad);font-size:.82rem}
.radio3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
@media (max-width:620px){.radio3{grid-template-columns:1fr}}
.radio3 label{display:grid;gap:2px;border:1.5px solid var(--line);border-radius:12px;padding:10px;font-size:.85rem;cursor:pointer}
.radio3 label:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
.radio3 input{accent-color:var(--accent)}
.mw{background:var(--accent-soft);border-color:var(--accent)}
.consent{display:grid;gap:8px}
.consent label{display:flex;gap:8px;align-items:flex-start;font-size:.85rem}
.consent input{margin-top:3px;accent-color:var(--accent)}
/* V4 : tunnel d'inscription, cockpit commercial, opportunités, disponibilités */
input[type=date],input[type=search],input[type=tel]{border:1px solid var(--line);border-radius:10px;padding:9px 10px;background:var(--paper);color:var(--ink);width:100%;font:inherit}
.split.wide{grid-template-columns:minmax(0,1fr) 320px}
@media (max-width:900px){.split.wide{grid-template-columns:1fr}}
.steps8{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:4px;list-style:none;margin:0;padding:0}
.steps8 button{width:100%;border:0;border-top:4px solid var(--line);background:transparent;text-align:left;padding:6px 2px 0;font-size:.72rem;color:var(--muted);display:grid;gap:2px}
.steps8 button.done{border-top-color:color-mix(in srgb,var(--accent) 50%,var(--line));color:var(--ink)}
.steps8 button[aria-current="step"]{border-top-color:var(--accent);color:var(--ink);font-weight:700}
.steps8 button[disabled]{cursor:not-allowed}
@media (max-width:640px){.steps8 .lbl{display:none}}
.results{display:grid;gap:6px;margin:0;padding:0;list-style:none}
.results button{width:100%;display:flex;justify-content:space-between;gap:8px;align-items:center;text-align:left;border:1px solid var(--line);background:var(--paper);border-radius:10px;padding:8px 10px}
.results button:hover{border-color:var(--accent)}
.siterow{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;align-items:end;border:1px solid var(--line);border-radius:12px;padding:10px}
.siterow label{display:grid;gap:4px;font-size:.82rem}
.pill.good{background:color-mix(in srgb,var(--good) 20%,transparent)}
.gauge.mark{position:relative;overflow:visible;height:10px}
.gauge.mark i{border-radius:4px}
.gauge.mark b{position:absolute;top:-4px;width:2px;height:18px;background:var(--ink)}
.ticks{position:relative;height:16px;font-size:.72rem;color:var(--muted)}
.ticks span{position:absolute;top:0;white-space:nowrap}
.ctl{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.ctl label{display:grid;gap:4px;font-size:.82rem}
.ctl output{font-family:var(--mono);font-weight:500}
tr[aria-current="true"] td{background:var(--accent-soft)}
td .btn.sm{white-space:nowrap}
.result{border:2px solid var(--accent);border-radius:16px;padding:16px;display:grid;gap:10px;background:var(--paper)}
.result.warn{border-color:var(--warn)}
.oppgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px}
.oppgrid label{display:grid;gap:4px;font-size:.8rem}
.chk{display:flex;gap:6px;flex-wrap:wrap}
.chk label{display:flex;gap:6px;align-items:center;border:1px solid var(--line);border-radius:999px;padding:4px 10px;font-size:.82rem}
.chk input{accent-color:var(--accent)}
.alert{border-left:4px solid var(--bad);background:color-mix(in srgb,var(--bad) 10%,transparent);border-radius:8px;padding:10px 12px;font-size:.88rem}
/* V7 : notifications, recherche, créneaux, missions, pilotage, carte */
.nlist{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:.82rem}
.nlist li{display:grid;gap:2px;border-left:3px solid var(--accent);padding:2px 0 2px 8px}
.nlist.next li{border-left-color:var(--line);color:var(--muted)}
.pulse{width:12px;height:12px;border-radius:50%;background:var(--accent);flex:none;animation:pulse 1.2s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.7)}}
@media (prefers-reduced-motion:reduce){.pulse{animation:none}}
.slots legend{padding:0 4px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.chk label.ko{opacity:.6}
h4.sub{margin:0;font-family:var(--display);font-size:.98rem}
.wk.opp{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--paper))}
.kpis.k6{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:820px){.kpis.k6{grid-template-columns:repeat(2,minmax(0,1fr))}}
.kpi .v .small{font-size:.9rem}
.alerts{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.al{display:grid;gap:6px;border:1px solid var(--line);border-left:4px solid var(--line);border-radius:10px;padding:10px 12px;min-width:0}
.al.sev3{border-left-color:var(--bad)}.al.sev2{border-left-color:var(--warn)}
.al.done{opacity:.75;border-left-color:var(--good)}
.map{width:100%;height:auto;max-width:420px;justify-self:center;display:block}
.map .fr{fill:color-mix(in srgb,var(--accent) 8%,var(--paper));stroke:var(--line);stroke-width:1.5}
.map circle{stroke:var(--paper);stroke-width:2}
.map text{fill:var(--ink);font-size:11px;font-family:var(--body);font-weight:600}
.z-g{fill:var(--good);background:var(--good)}.z-o{fill:var(--warn);background:var(--warn)}.z-r{fill:var(--bad);background:var(--bad)}.z-n{fill:var(--line);background:var(--line)}
.metro{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}
.mz{border-radius:10px;padding:8px 10px;display:grid;gap:2px;border:1px solid var(--line);border-left-width:6px}
.mz.z-g{background:var(--paper);border-left-color:var(--good)}.mz.z-o{background:var(--paper);border-left-color:var(--warn)}.mz.z-r{background:var(--paper);border-left-color:var(--bad)}
.legend .dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:-1px}
.advhead{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;text-align:left;background:transparent;border:0;padding:0}
.advhead .mono{font-size:1.4rem;color:var(--accent)}
/* V8 : tableaux empilés sur téléphone, groupes repliables, confirmations en ligne, cartes de prix */
.form .choice label{display:flex;gap:8px;align-items:flex-start}
.form .choice label input{margin-top:3px}
@media (max-width:640px){
  .top{position:static}
  .roles button{padding:6px 9px;font-size:.8rem}
  table.stack thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  table.stack,table.stack tbody,table.stack tr,table.stack td{display:block;width:100%}
  table.stack tr{border:1px solid var(--line);border-radius:12px;padding:6px 10px;margin-bottom:8px}
  table.stack td{border:0;padding:4px 0;white-space:normal;display:flex;justify-content:space-between;gap:12px;text-align:right}
  table.stack td::before{content:attr(data-l);color:var(--muted);font-size:.78rem;text-align:left;flex:none;max-width:45%}
  table.stack td.n{font-family:var(--mono)}
  table.stack td .btnrow{justify-content:flex-end}
}
.grp{border:1px solid var(--line);border-radius:12px;padding:10px 12px;display:grid;gap:8px}
.grp > button.advhead{font-weight:700}
.confirm{border:1.5px solid var(--warn);border-radius:12px;padding:10px 12px;display:grid;gap:8px;background:color-mix(in srgb,var(--warn) 8%,var(--paper))}
.lavcards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:10px}
.lavcard{border:1px solid var(--line);border-radius:12px;padding:10px;display:grid;gap:8px;background:var(--paper)}
.lavcard .pf{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.lavcard label{display:grid;gap:3px;font-size:.8rem}
.lavcard input{width:100%;font-family:var(--mono);text-align:right}
.warnline{color:var(--warn);font-size:.78rem}
.okline{color:var(--good);font-size:.78rem}
.searchres{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.searchres button{width:100%;text-align:left;display:flex;justify-content:space-between;gap:8px;border:1px solid var(--line);background:var(--paper);border-radius:10px;padding:7px 10px}
.docv{border-left:4px solid var(--accent);padding:8px 12px;display:grid;gap:6px;background:var(--paper);border-radius:8px}
.resa{display:grid;gap:4px;text-align:left;width:100%;background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:12px}
.navsel{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.navsel select{width:auto;max-width:100%}
.bo-search{max-width:420px;width:100%}
.lvl{display:inline-flex;gap:3px;align-items:center;margin-left:6px;vertical-align:middle}
.lvl i{width:8px;height:8px;border-radius:50%;border:1.5px solid var(--accent);display:inline-block}
.lvl i.on{background:var(--accent)}
.fcard{grid-template-columns:auto 1fr auto}
details summary{cursor:pointer}
/* V9 : pastilles qui passent à la ligne, montants insécables, litiges empilés sur téléphone, tableaux qui se replient */
.row > .num{white-space:nowrap}
.phone .pill{white-space:normal;max-width:100%}
.log li{align-items:start}
.log li > .pill{align-self:start;justify-self:start}
.log .pill{white-space:normal}
.log li > .num{white-space:nowrap}
.cols.c12{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}
@media (max-width:900px){.cols.c12{grid-template-columns:1fr}}
table.wrap td,table.wrap th{white-space:normal}
tr.hi td{background:var(--accent-soft)}
.fiche{border:2px solid var(--accent)}
/* =====================================================================
   Brume · design tokens & composants V11
   Fichier autonome : aucune police, icône ou bibliothèque externe.
   Compatible page HTML unique + vanilla JS.
   - Jetons : :root (clair), sombre via prefers-color-scheme ET [data-theme]
   - Mode terrain (laveur, plein soleil) : [data-contrast="high"]
   - Composants préfixés .b-  (aucune collision avec le prototype V10)
   - Base appliquée seulement sous .b-app (intégration progressive)
   Contrastes vérifiés : review/tests_v7/harness/ds_2_contrast.mjs
   ===================================================================== */

/* ---------- 1. Jetons : thème clair ---------- */
:root{
  color-scheme: light;
  /* Neutres « porcelaine » légèrement bleu-vert */
  --b-bg:        #F3F6F5;   /* fond de page */
  --b-surface:   #FFFFFF;   /* cartes */
  --b-surface-2: #EAF0EE;   /* creux, champs, piste de jauge */
  --b-raised:    #FFFFFF;   /* feuilles, toasts */
  --b-ink:       #0E2321;   /* texte principal          16,4:1 sur surface */
  --b-ink-2:     #455A57;   /* texte secondaire         7,4:1 */
  --b-ink-3:     #5E726F;   /* indications, légendes    5,1:1 (4,7:1 sur bg) */
  --b-line:      #DCE5E2;   /* séparateurs décoratifs (non porteurs de sens) */
  --b-line-strong:#7E918D;  /* bord de champ, case      3,3:1 (≥ 3 composant) */

  /* Marque : « lagon » (eau profonde) */
  --b-brand:      #0A6B5F;  /* boutons, liens           6,4:1 avec blanc */
  --b-brand-hover:#08594F;
  --b-brand-press:#06483F;
  --b-on-brand:   #FFFFFF;
  --b-brand-soft: #DDF1EC;  /* fond sélection */
  --b-brand-ink:  #07564C;  /* texte sur brand-soft     7,3:1 */
  --b-brand-2:    #0F5F73;  /* fin du dégradé « eau » (bleu pétrole) */

  /* Accent chaleureux : « abricot » (jamais pour un état) */
  --b-warm:       #E58A4E;  /* décor, illustrations, étoiles */
  --b-warm-soft:  #FCEBDD;
  --b-warm-ink:   #8A3F10;  /* texte sur warm-soft      6,5:1 */

  /* Vapeur / info */
  --b-info:       #1C6788;  /* texte info               6,3:1 */
  --b-info-soft:  #E1F0F7;

  /* Sémantique (rouge réservé aux urgences) */
  --b-ok:         #17703F;  --b-ok-soft:   #E2F3E8;  /* 6,1:1 sur surface */
  --b-warn:       #8A5300;  --b-warn-soft: #FFF0D2;  /* 6,3:1 sur surface */
  --b-warn-fill:  #F0B23A;  /* jauge, point */
  --b-on-warn-fill:#0E2321; /* seul texte admis sur warn-fill */
  --b-danger:     #B42318;  --b-danger-soft:#FDE7E4; /* 6,6:1 sur surface */
  --b-on-danger:  #FFFFFF;
  --b-toast-accent:#7FE3CB; /* icône sur toast (fond = ink) */
  --b-swipe-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h13M13 6l6 6-6 6'/%3E%3C/svg%3E");

  /* Sévérités back-office */
  --b-sev-crit:   #B42318;  --b-sev-crit-soft:#FDE7E4;
  --b-sev-high:   #A34A00;  --b-sev-high-soft:#FFE9D6;
  --b-sev-med:    #7A5A00;  --b-sev-med-soft: #FFF3CC;
  --b-sev-low:    #45607A;  --b-sev-low-soft: #E6EDF4;

  /* Dégradés subtils */
  --b-grad-water: linear-gradient(135deg, var(--b-brand) 0%, var(--b-brand-2) 100%);
  --b-grad-mist:  radial-gradient(120% 70% at 0% 0%, rgba(60,199,168,.16), transparent 60%),
                  radial-gradient(90% 60% at 100% 0%, rgba(43,143,179,.12), transparent 60%);
  --b-grad-warm:  linear-gradient(135deg, #FFF6EE 0%, #FCE6D4 100%);
  --b-steam:      radial-gradient(closest-side, rgba(255,255,255,.28), rgba(255,255,255,0));

  /* Typographie : piles système (SF Pro, Roboto, Segoe UI Variable) */
  --b-font: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI Variable Text", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --b-font-display: ui-rounded, "SF Pro Rounded", -apple-system, BlinkMacSystemFont, "Segoe UI Variable Display", "Segoe UI", Roboto, sans-serif;
  --b-font-mono: ui-monospace, "SF Mono", "Cascadia Mono", "Roboto Mono", Menlo, Consolas, monospace;
  --b-fs-xs:  0.875rem;  /* 14 px : bureau dense uniquement (BO), jamais sur mobile */
  --b-fs-sm:  1rem;      /* 16 px : plancher mobile (légendes, badges) */
  --b-fs-md:  1.0625rem; /* 17 px : corps */
  --b-fs-lg:  1.25rem;   /* 20 px : titre de carte */
  --b-fs-xl:  1.5rem;    /* 24 px : titre d'écran */
  --b-fs-2xl: 2rem;      /* 32 px : montant */
  --b-fs-3xl: 2.75rem;   /* 44 px : montant héros / plaque */
  --b-fs-4xl: clamp(2.5rem, 5vw + 1rem, 4rem); /* site */
  --b-lh-tight: 1.15; --b-lh: 1.45; --b-lh-loose: 1.6;
  --b-fw-regular: 400; --b-fw-medium: 500; --b-fw-semi: 600; --b-fw-bold: 700; --b-fw-black: 800;

  /* Espacements (grille 4) */
  --b-s-1: 4px;  --b-s-2: 8px;  --b-s-3: 12px; --b-s-4: 16px; --b-s-5: 20px;
  --b-s-6: 24px; --b-s-8: 32px; --b-s-10: 40px; --b-s-12: 48px; --b-s-16: 64px;
  --b-gutter: 16px;  /* marge latérale mobile */

  /* Rayons */
  --b-r-sm: 10px; --b-r-md: 14px; --b-r-lg: 20px; --b-r-xl: 28px; --b-r-pill: 999px;

  /* Ombres douces teintées (élévation plutôt que bordures) */
  --b-sh-1: 0 1px 2px rgba(14,35,33,.06), 0 1px 1px rgba(14,35,33,.04);
  --b-sh-2: 0 6px 16px -6px rgba(14,35,33,.12), 0 2px 4px rgba(14,35,33,.05);
  --b-sh-3: 0 18px 40px -12px rgba(14,35,33,.22), 0 4px 10px rgba(14,35,33,.06);
  --b-sh-brand: 0 10px 24px -10px rgba(10,107,95,.55);
  --b-hairline: inset 0 0 0 1px rgba(14,35,33,.04);

  /* Focus */
  --b-focus: #1C6788;
  --b-focus-ring: 0 0 0 2px var(--b-surface), 0 0 0 4px var(--b-focus);

  /* Mouvement */
  --b-ease: cubic-bezier(.2,.8,.2,1);
  --b-ease-out: cubic-bezier(.16,1,.3,1);
  --b-ease-spring: cubic-bezier(.34,1.4,.64,1);
  --b-t-fast: 120ms; --b-t: 200ms; --b-t-slow: 320ms; --b-t-xslow: 600ms;

  /* Cibles */
  --b-hit: 44px; --b-hit-lg: 56px; --b-tabbar-h: 64px;
}

/* ---------- 2. Jetons : thème sombre ---------- */
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    color-scheme: dark;
    --b-bg:#0A1413; --b-surface:#12201E; --b-surface-2:#1A2B28; --b-raised:#1C302D;
    --b-ink:#E8F1EF; --b-ink-2:#B0C3BF; --b-ink-3:#8FA6A1; --b-line:#243633; --b-line-strong:#6A827D;
    --b-brand:#3CC7A8; --b-brand-hover:#5AD5B9; --b-brand-press:#2FB094; --b-on-brand:#04231D;
    --b-brand-soft:#123A33; --b-brand-ink:#7FE3CB; --b-brand-2:#2AA3C4;
    --b-warm:#F2A877; --b-warm-soft:#3A2618; --b-warm-ink:#F7C39E;
    --b-info:#7CC8EA; --b-info-soft:#12303D;
    --b-ok:#5ACF92; --b-ok-soft:#123423; --b-warn:#F3BD55; --b-warn-soft:#3A2C0E; --b-warn-fill:#F3BD55; --b-on-warn-fill:#231700;
    --b-danger:#FF8A7A; --b-danger-soft:#3D1A16; --b-on-danger:#2A0703; --b-toast-accent:#0A6B5F; --b-swipe-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2304231D' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h13M13 6l6 6-6 6'/%3E%3C/svg%3E");
    --b-sev-crit:#FF8A7A; --b-sev-crit-soft:#3D1A16; --b-sev-high:#FFA868; --b-sev-high-soft:#3A2413;
    --b-sev-med:#F3CF6A; --b-sev-med-soft:#352C10; --b-sev-low:#A9C2DA; --b-sev-low-soft:#1C2A37;
    --b-grad-water: linear-gradient(135deg, #0E5A50 0%, #0D4A5C 100%);
    --b-grad-mist: radial-gradient(120% 70% at 0% 0%, rgba(60,199,168,.12), transparent 60%),
                   radial-gradient(90% 60% at 100% 0%, rgba(42,163,196,.10), transparent 60%);
    --b-grad-warm: linear-gradient(135deg, #2E2016 0%, #3A2618 100%);
    --b-sh-1: 0 1px 0 rgba(255,255,255,.03) inset, 0 1px 2px rgba(0,0,0,.4);
    --b-sh-2: 0 1px 0 rgba(255,255,255,.04) inset, 0 8px 20px -8px rgba(0,0,0,.6);
    --b-sh-3: 0 1px 0 rgba(255,255,255,.05) inset, 0 24px 48px -12px rgba(0,0,0,.7);
    --b-sh-brand: 0 10px 24px -12px rgba(60,199,168,.45);
    --b-hairline: inset 0 0 0 1px rgba(255,255,255,.05);
    --b-focus:#7CC8EA;
  }
}
:root[data-theme="dark"]{
  color-scheme: dark;
  --b-bg:#0A1413; --b-surface:#12201E; --b-surface-2:#1A2B28; --b-raised:#1C302D;
  --b-ink:#E8F1EF; --b-ink-2:#B0C3BF; --b-ink-3:#8FA6A1; --b-line:#243633; --b-line-strong:#6A827D;
  --b-brand:#3CC7A8; --b-brand-hover:#5AD5B9; --b-brand-press:#2FB094; --b-on-brand:#04231D;
  --b-brand-soft:#123A33; --b-brand-ink:#7FE3CB; --b-brand-2:#2AA3C4;
  --b-warm:#F2A877; --b-warm-soft:#3A2618; --b-warm-ink:#F7C39E;
  --b-info:#7CC8EA; --b-info-soft:#12303D;
  --b-ok:#5ACF92; --b-ok-soft:#123423; --b-warn:#F3BD55; --b-warn-soft:#3A2C0E; --b-warn-fill:#F3BD55; --b-on-warn-fill:#231700;
  --b-danger:#FF8A7A; --b-danger-soft:#3D1A16; --b-on-danger:#2A0703; --b-toast-accent:#0A6B5F; --b-swipe-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2304231D' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h13M13 6l6 6-6 6'/%3E%3C/svg%3E");
  --b-sev-crit:#FF8A7A; --b-sev-crit-soft:#3D1A16; --b-sev-high:#FFA868; --b-sev-high-soft:#3A2413;
  --b-sev-med:#F3CF6A; --b-sev-med-soft:#352C10; --b-sev-low:#A9C2DA; --b-sev-low-soft:#1C2A37;
  --b-grad-water: linear-gradient(135deg, #0E5A50 0%, #0D4A5C 100%);
  --b-grad-mist: radial-gradient(120% 70% at 0% 0%, rgba(60,199,168,.12), transparent 60%),
                 radial-gradient(90% 60% at 100% 0%, rgba(42,163,196,.10), transparent 60%);
  --b-grad-warm: linear-gradient(135deg, #2E2016 0%, #3A2618 100%);
  --b-sh-1: 0 1px 0 rgba(255,255,255,.03) inset, 0 1px 2px rgba(0,0,0,.4);
  --b-sh-2: 0 1px 0 rgba(255,255,255,.04) inset, 0 8px 20px -8px rgba(0,0,0,.6);
  --b-sh-3: 0 1px 0 rgba(255,255,255,.05) inset, 0 24px 48px -12px rgba(0,0,0,.7);
  --b-sh-brand: 0 10px 24px -12px rgba(60,199,168,.45);
  --b-hairline: inset 0 0 0 1px rgba(255,255,255,.05);
  --b-focus:#7CC8EA;
}

/* ---------- 3. Mode terrain (laveur, plein soleil / gants) ---------- */
[data-contrast="high"]{
  --b-ink-2: var(--b-ink); --b-ink-3: var(--b-ink-2);
  --b-line: var(--b-line-strong);
  --b-fs-md: 1.125rem;  /* 18 px */
  --b-fs-lg: 1.375rem;  /* 22 px */
  --b-hit: 56px;
}
:root[data-theme="dark"] [data-contrast="high"],
:root[data-theme="dark"][data-contrast="high"]{
  --b-bg:#000000; --b-surface:#0E1716; --b-surface-2:#16221F; --b-ink:#FFFFFF; --b-ink-2:#D9E6E3; --b-ink-3:#C0D2CE;
  --b-brand:#46E0BC; --b-brand-hover:#6BEACB; --b-on-brand:#00140F; --b-line-strong:#8FA6A1;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]) [data-contrast="high"],
  :root:not([data-theme="light"])[data-contrast="high"]{
    --b-bg:#000000; --b-surface:#0E1716; --b-surface-2:#16221F; --b-ink:#FFFFFF; --b-ink-2:#D9E6E3; --b-ink-3:#C0D2CE;
    --b-brand:#46E0BC; --b-brand-hover:#6BEACB; --b-on-brand:#00140F; --b-line-strong:#8FA6A1;
  }
}

/* ---------- 4. Base (seulement sous .b-app) ---------- */
.b-app{
  font-family: var(--b-font); font-size: var(--b-fs-md); line-height: var(--b-lh);
  color: var(--b-ink); background: var(--b-bg);
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
  font-variant-numeric: tabular-nums;
}
.b-app *, .b-app *::before, .b-app *::after{ box-sizing: border-box; }
.b-app :where(h1,h2,h3,h4,p,ul,ol,dl,dd,figure){ margin: 0; }
.b-app :where(button,input,select,textarea){ font: inherit; color: inherit; }
.b-app :where(button){ cursor: pointer; }
.b-app :where(a){ color: var(--b-brand); text-underline-offset: 3px; }
.b-app :where(img,svg){ display: block; max-width: 100%; }
.b-app :focus-visible{ outline: 3px solid var(--b-focus); outline-offset: 2px; border-radius: inherit; }
.b-app :focus:not(:focus-visible){ outline: none; }
.b-sr{ position:absolute!important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.b-skip{ position:absolute; left:8px; top:-60px; z-index:100; background:var(--b-ink); color:var(--b-bg); padding:12px 16px; border-radius:var(--b-r-sm); }
.b-skip:focus{ top:8px; }

/* Typographie utilitaire */
.b-h1{ font-family:var(--b-font-display); font-size:var(--b-fs-xl); font-weight:var(--b-fw-black); line-height:var(--b-lh-tight); letter-spacing:-.01em; }
.b-h2{ font-family:var(--b-font-display); font-size:var(--b-fs-lg); font-weight:var(--b-fw-bold); line-height:1.25; }
.b-h3{ font-size:var(--b-fs-md); font-weight:var(--b-fw-semi); }
.b-display{ font-family:var(--b-font-display); font-size:var(--b-fs-4xl); font-weight:var(--b-fw-black); line-height:1.02; letter-spacing:-.025em; }
.b-amount{ font-family:var(--b-font-display); font-size:var(--b-fs-2xl); font-weight:var(--b-fw-black); letter-spacing:-.02em; line-height:1; font-variant-numeric: tabular-nums; white-space:nowrap; }
.b-amount--xl{ font-size:var(--b-fs-3xl); }
.b-meta{ font-size:var(--b-fs-sm); color:var(--b-ink-2); }
.b-hint{ font-size:var(--b-fs-sm); color:var(--b-ink-3); }
.b-eyebrow{ font-size:var(--b-fs-sm); font-weight:var(--b-fw-semi); color:var(--b-brand-ink); letter-spacing:.02em; }
.b-mono{ font-family:var(--b-font-mono); }
.b-stack{ display:grid; gap:var(--b-s-4); align-content:start; }
.b-stack--sm{ gap:var(--b-s-2); } .b-stack--lg{ gap:var(--b-s-6); }
.b-row{ display:flex; align-items:center; gap:var(--b-s-3); }
.b-row--between{ justify-content:space-between; }
.b-icon{ width:24px; height:24px; flex:none; stroke:currentColor; fill:none; stroke-width:1.75; stroke-linecap:round; stroke-linejoin:round; }
.b-icon--sm{ width:20px; height:20px; } .b-icon--lg{ width:32px; height:32px; }

/* ---------- 5. Composants ---------- */

/* 5.1 Boutons */
.b-btn{
  --_bg: var(--b-surface); --_fg: var(--b-ink); --_sh: var(--b-sh-1);
  display:inline-flex; align-items:center; justify-content:center; gap:var(--b-s-2);
  min-height:var(--b-hit); min-width:var(--b-hit); padding:0 var(--b-s-5);
  border:0; border-radius:var(--b-r-md); background:var(--_bg); color:var(--_fg);
  font-size:var(--b-fs-md); font-weight:var(--b-fw-bold); line-height:1.1; text-decoration:none;
  box-shadow:var(--_sh), var(--b-hairline);
  transition: background var(--b-t-fast) var(--b-ease), transform var(--b-t-fast) var(--b-ease), box-shadow var(--b-t) var(--b-ease);
  -webkit-tap-highlight-color: transparent; touch-action: manipulation;
}
.b-btn:hover{ --_bg: var(--b-surface-2); }
.b-btn:active{ transform: scale(.98); }
.b-btn--primary{ --_bg: var(--b-brand); --_fg: var(--b-on-brand); --_sh: var(--b-sh-brand); }
.b-btn--primary:hover{ --_bg: var(--b-brand-hover); }
.b-btn--primary:active{ --_bg: var(--b-brand-press); }
.b-btn--soft{ --_bg: var(--b-brand-soft); --_fg: var(--b-brand-ink); --_sh: none; }
.b-btn--ghost{ --_bg: transparent; --_fg: var(--b-brand); --_sh: none; box-shadow:none; padding:0 var(--b-s-3); }
.b-btn--ghost:hover{ --_bg: var(--b-brand-soft); }
.b-btn--danger{ --_bg: var(--b-danger); --_fg: var(--b-on-danger); --_sh: none; }
.b-btn--lg{ min-height:var(--b-hit-lg); font-size:var(--b-fs-lg); border-radius:var(--b-r-lg); padding:0 var(--b-s-6); }
.b-btn--xl{ min-height:72px; font-size:var(--b-fs-lg); border-radius:var(--b-r-xl); }
.b-btn--block{ width:100%; }
.b-btn--icon{ padding:0; width:var(--b-hit); border-radius:var(--b-r-pill); }
.b-btn[disabled], .b-btn[aria-disabled="true"]{ --_bg: var(--b-surface-2); --_fg: var(--b-ink-2); --_sh:none; cursor:not-allowed; transform:none; }
.b-btn .b-btn__sub{ display:block; font-size:var(--b-fs-sm); font-weight:var(--b-fw-medium); opacity:.9; }
.b-btn--stacked{ flex-direction:column; gap:2px; padding-block:var(--b-s-2); }

/* Barre d'action collée (zone du pouce) */
.b-cta{
  position:sticky; bottom:0; z-index:5; display:grid; gap:var(--b-s-2);
  padding: var(--b-s-3) var(--b-gutter) calc(var(--b-s-3) + env(safe-area-inset-bottom));
  margin: 0 calc(var(--b-gutter) * -1);
  background: linear-gradient(to top, var(--b-bg) 70%, transparent);
}
.b-cta__note{ text-align:center; font-size:var(--b-fs-sm); color:var(--b-ink-2); }

/* 5.2 Cartes */
.b-card{ background:var(--b-surface); border-radius:var(--b-r-lg); padding:var(--b-s-5); box-shadow:var(--b-sh-2), var(--b-hairline); }
.b-card--flat{ box-shadow:var(--b-hairline); }
.b-card--sunken{ background:var(--b-surface-2); box-shadow:none; }
.b-card--hero{ border-radius:var(--b-r-xl); padding:var(--b-s-6); }
.b-card--link{ display:block; color:inherit; text-decoration:none; transition: transform var(--b-t) var(--b-ease), box-shadow var(--b-t) var(--b-ease); }
.b-card--link:hover{ transform: translateY(-2px); box-shadow: var(--b-sh-3); }
.b-card__head{ display:flex; align-items:center; justify-content:space-between; gap:var(--b-s-3); margin-bottom:var(--b-s-3); }

/* 5.3 Tuiles d'état (grandes cartes visuelles) */
.b-state{
  position:relative; overflow:hidden; display:grid; gap:var(--b-s-2);
  border-radius:var(--b-r-xl); padding:var(--b-s-6); color:var(--b-ink);
  background: var(--b-surface); box-shadow: var(--b-sh-2), var(--b-hairline);
}
.b-state__icon{ width:48px; height:48px; border-radius:16px; display:grid; place-items:center; background:var(--b-brand-soft); color:var(--b-brand-ink); }
.b-state__title{ font-family:var(--b-font-display); font-size:var(--b-fs-lg); font-weight:var(--b-fw-bold); line-height:1.2; }
.b-state--ok   .b-state__icon{ background:var(--b-ok-soft); color:var(--b-ok); }
.b-state--warn .b-state__icon{ background:var(--b-warn-soft); color:var(--b-warn); }
.b-state--info .b-state__icon{ background:var(--b-info-soft); color:var(--b-info); }
.b-state--urgent{ box-shadow: inset 4px 0 0 var(--b-danger), var(--b-sh-2); }
.b-state--urgent .b-state__icon{ background:var(--b-danger-soft); color:var(--b-danger); }
.b-state--celebrate{ background: var(--b-grad-warm); }
/* Choix d'état (Dernier nettoyage : <1 mois / 1-3 / >3) */
.b-choice{ display:grid; grid-template-columns:repeat(auto-fit, minmax(96px,1fr)); gap:var(--b-s-3); }
.b-choice > button, .b-choice > label{
  display:grid; justify-items:center; gap:var(--b-s-2); min-height:96px; padding:var(--b-s-4) var(--b-s-2);
  border:0; border-radius:var(--b-r-lg); background:var(--b-surface); color:var(--b-ink);
  box-shadow: var(--b-sh-1), inset 0 0 0 1.5px var(--b-line);
  font-weight:var(--b-fw-semi); font-size:var(--b-fs-sm); text-align:center; line-height:1.25;
  transition: box-shadow var(--b-t-fast) var(--b-ease), background var(--b-t-fast) var(--b-ease);
}
.b-choice > [aria-pressed="true"], .b-choice > [aria-checked="true"], .b-choice > label:has(input:checked){
  background:var(--b-brand-soft); color:var(--b-brand-ink); box-shadow: inset 0 0 0 2px var(--b-brand);
}

/* 5.4 Calendrier horizontal défilant */
.b-cal{ display:flex; gap:var(--b-s-2); overflow-x:auto; scroll-snap-type:x mandatory; padding:var(--b-s-1) var(--b-gutter) var(--b-s-3); margin:0 calc(var(--b-gutter) * -1); scrollbar-width:none; overscroll-behavior-x:contain; }
.b-cal::-webkit-scrollbar{ display:none; }
.b-cal__day{
  scroll-snap-align:start; flex:0 0 64px; min-height:84px; display:grid; justify-items:center; align-content:center; gap:2px;
  border:0; border-radius:var(--b-r-lg); background:var(--b-surface); color:var(--b-ink); box-shadow:var(--b-sh-1), var(--b-hairline);
}
.b-cal__dow{ font-size:var(--b-fs-sm); color:var(--b-ink-2); font-weight:var(--b-fw-medium); }
.b-cal__num{ font-family:var(--b-font-display); font-size:var(--b-fs-xl); font-weight:var(--b-fw-bold); line-height:1; }
.b-cal__dot{ width:6px; height:6px; border-radius:50%; background:transparent; }
.b-cal__day--tour .b-cal__dot{ background:var(--b-brand); }
.b-cal__day[aria-pressed="true"]{ background:var(--b-ink); color:var(--b-bg); box-shadow:var(--b-sh-2); }
.b-cal__day[aria-pressed="true"] .b-cal__dow{ color:inherit; opacity:.8; }
.b-cal__day[aria-pressed="true"] .b-cal__dot{ background:var(--b-brand); box-shadow:0 0 0 2px var(--b-ink); }
.b-cal__day[disabled]{ opacity:.45; box-shadow:none; background:transparent; }

/* 5.5 Tuiles horaires */
.b-slots{ display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:var(--b-s-3); }
.b-slot{
  position:relative; display:grid; gap:4px; align-content:start; min-height:88px; padding:var(--b-s-4);
  border:0; border-radius:var(--b-r-lg); text-align:left; background:var(--b-surface); color:var(--b-ink);
  box-shadow: var(--b-sh-1), inset 0 0 0 1.5px var(--b-line);
}
.b-slot__time{ font-family:var(--b-font-display); font-size:var(--b-fs-lg); white-space:nowrap; font-weight:var(--b-fw-bold); }
.b-slot__price{ font-size:var(--b-fs-sm); color:var(--b-ink-2); font-weight:var(--b-fw-semi); }
.b-slot--tour{ background: var(--b-surface); box-shadow: var(--b-sh-2), inset 0 0 0 2px color-mix(in srgb, var(--b-brand) 45%, transparent); }
.b-slot--tour::after{ content:""; position:absolute; inset:0; border-radius:inherit; background:var(--b-grad-mist); pointer-events:none; }
.b-slot[aria-pressed="true"]{ background:var(--b-brand); color:var(--b-on-brand); box-shadow:var(--b-sh-brand); }
.b-slot[aria-pressed="true"] .b-slot__price{ color:inherit; }
.b-slot[disabled]{ opacity:.5; box-shadow:none; background:var(--b-surface-2); }
.b-slot--wide{ grid-column:1 / -1; }

/* 5.6 Carte portefeuille + jauge de budget */
.b-wallet{
  position:relative; overflow:hidden; isolation:isolate; border-radius:var(--b-r-xl); padding:var(--b-s-6);
  background:var(--b-grad-water); color:#FFFFFF; box-shadow:var(--b-sh-3);
  display:grid; gap:var(--b-s-3); min-height:180px;
}
.b-wallet::before, .b-wallet::after{ content:""; position:absolute; z-index:-1; border-radius:50%; background:var(--b-steam); }
.b-wallet::before{ width:260px; height:260px; right:-80px; top:-120px; }
.b-wallet::after{ width:180px; height:180px; left:-60px; bottom:-110px; opacity:.6; }
.b-wallet__label{ font-size:var(--b-fs-sm); font-weight:var(--b-fw-semi); opacity:.92; }
.b-wallet__amount{ font-family:var(--b-font-display); font-size:var(--b-fs-3xl); font-weight:var(--b-fw-black); line-height:1; letter-spacing:-.02em; }
.b-wallet__amount small{ font-size:var(--b-fs-lg); font-weight:var(--b-fw-semi); opacity:.85; }
.b-wallet__foot{ display:flex; justify-content:space-between; gap:var(--b-s-3); font-size:var(--b-fs-sm); opacity:.95; }
.b-gauge{ --v: 50; position:relative; height:12px; border-radius:var(--b-r-pill); background:var(--b-surface-2); overflow:hidden; }
.b-gauge::after{ content:""; position:absolute; inset:0 auto 0 0; width:calc(var(--v) * 1%); border-radius:inherit; background:var(--b-brand); transition:width var(--b-t-xslow) var(--b-ease-out); }
.b-wallet .b-gauge{ background:rgba(255,255,255,.25); }
.b-wallet .b-gauge::after{ background:#FFFFFF; }
.b-gauge--warn::after{ background:var(--b-warn-fill); }
.b-gauge--danger::after{ background:var(--b-danger); }

/* Anneau de budget (gestionnaire) : conic-gradient, valeur dans --v */
.b-ring{ --v: 54; --size: 168px; --track: var(--b-surface-2); --fill: var(--b-brand);
  width:var(--size); height:var(--size); border-radius:50%; display:grid; place-items:center; flex:none;
  background: radial-gradient(closest-side, var(--b-surface) 78%, transparent 79% 100%), conic-gradient(var(--fill) calc(var(--v) * 1%), var(--track) 0);
}
.b-ring__in{ text-align:center; display:grid; gap:2px; }
.b-ring__val{ font-family:var(--b-font-display); font-size:var(--b-fs-2xl); font-weight:var(--b-fw-black); line-height:1; }

/* Histogramme mensuel */
.b-hist{ display:grid; grid-auto-flow:column; grid-auto-columns:1fr; align-items:end; gap:var(--b-s-2); height:160px; padding-top:var(--b-s-4); }
.b-hist__bar{ --h: 50; position:relative; display:grid; grid-template-rows:1fr auto; height:100%; gap:var(--b-s-2); text-align:center; font-size:var(--b-fs-sm); color:var(--b-ink-2); }
.b-hist__bar > i{ align-self:end; display:block; height:calc(var(--h) * 1%); border-radius:8px 8px 4px 4px; background:color-mix(in srgb, var(--b-brand) 30%, var(--b-surface-2)); transition:height var(--b-t-xslow) var(--b-ease-out); }
.b-hist__bar--now > i{ background:var(--b-brand); }
.b-hist__bar--now{ color:var(--b-ink); font-weight:var(--b-fw-bold); }

/* Jauge de santé de site (3 segments) */
.b-health{ display:grid; grid-template-columns:repeat(3,1fr); gap:4px; width:96px; }
.b-health > i{ height:8px; border-radius:4px; background:var(--b-surface-2); }
.b-health[data-level="1"] > i:nth-child(-n+1){ background:var(--b-danger); }
.b-health[data-level="2"] > i:nth-child(-n+2){ background:var(--b-warn-fill); }
.b-health[data-level="3"] > i{ background:var(--b-ok); }

/* 5.7 Stepper animé (suivi en direct) */
.b-stepper{ --p: 50; display:grid; gap:var(--b-s-3); }
.b-stepper__track{ position:relative; height:8px; border-radius:var(--b-r-pill); background:var(--b-surface-2); overflow:hidden; }
.b-stepper__fill{ position:absolute; inset:0 auto 0 0; width:calc(var(--p) * 1%); border-radius:inherit; background:var(--b-brand); transition:width var(--b-t-xslow) var(--b-ease-out); }
.b-stepper__fill::after{ content:""; position:absolute; inset:0; background:linear-gradient(90deg, transparent, rgba(255,255,255,.55), transparent); transform:translateX(-100%); animation:b-flow 1.8s var(--b-ease) infinite; }
.b-stepper__steps{ display:grid; grid-template-columns:repeat(4,1fr); gap:var(--b-s-1); list-style:none; padding:0; margin:0; }
.b-stepper__steps li{ display:grid; justify-items:center; gap:4px; text-align:center; font-size:var(--b-fs-sm); color:var(--b-ink-3); }
.b-stepper__steps li::before{ content:""; width:14px; height:14px; border-radius:50%; background:var(--b-surface); box-shadow: inset 0 0 0 2px var(--b-line-strong); }
.b-stepper__steps li[data-s="done"]{ color:var(--b-ink-2); }
.b-stepper__steps li[data-s="done"]::before{ background:var(--b-brand); box-shadow:none; }
.b-stepper__steps li[aria-current="step"]{ color:var(--b-ink); font-weight:var(--b-fw-bold); }
.b-stepper__steps li[aria-current="step"]::before{ background:var(--b-brand); box-shadow:0 0 0 4px color-mix(in srgb, var(--b-brand) 25%, transparent); animation:b-pulse 1.6s var(--b-ease) infinite; }
@keyframes b-flow{ to{ transform:translateX(100%); } }
@keyframes b-pulse{ 0%,100%{ box-shadow:0 0 0 3px color-mix(in srgb, var(--b-brand) 30%, transparent); } 50%{ box-shadow:0 0 0 8px color-mix(in srgb, var(--b-brand) 0%, transparent); } }

/* Stepper d'inscription (points) */
.b-dots{ display:flex; gap:6px; } .b-dots > i{ height:6px; flex:1; border-radius:3px; background:var(--b-surface-2); }
.b-dots > i[data-s="done"], .b-dots > i[aria-current="step"]{ background:var(--b-brand); }

/* 5.8 Feuille (mobile) / panneau latéral (bureau) */
.b-scrim{ position:fixed; inset:0; z-index:40; background:rgba(6,20,18,.48); backdrop-filter:blur(2px); animation:b-fade var(--b-t) var(--b-ease); }
.b-sheet{
  position:fixed; z-index:41; left:0; right:0; bottom:0; max-height:92dvh; display:flex; flex-direction:column;
  background:var(--b-raised); color:var(--b-ink); border-radius:var(--b-r-xl) var(--b-r-xl) 0 0; box-shadow:var(--b-sh-3);
  padding-bottom:env(safe-area-inset-bottom); animation:b-up var(--b-t-slow) var(--b-ease-out);
}
.b-sheet::before{ content:""; width:40px; height:5px; border-radius:3px; background:var(--b-line-strong); opacity:.6; margin:10px auto 0; flex:none; }
.b-sheet__head{ display:flex; align-items:center; justify-content:space-between; gap:var(--b-s-3); padding:var(--b-s-3) var(--b-s-5); }
.b-sheet__body{ overflow:auto; padding:0 var(--b-s-5) var(--b-s-5); display:grid; gap:var(--b-s-4); }
.b-sheet__foot{ padding:var(--b-s-3) var(--b-s-5) var(--b-s-5); display:grid; gap:var(--b-s-2); }
@media (min-width: 900px){
  .b-sheet{ left:auto; top:0; width:min(520px, 100vw); max-height:none; border-radius:var(--b-r-xl) 0 0 var(--b-r-xl); animation-name:b-left; }
  .b-sheet::before{ display:none; }
  .b-sheet__head{ padding-top:var(--b-s-6); }
}
.b-sheet.b-sheet--inline{ position:relative; inset:auto; z-index:auto; animation:none; max-height:none; width:auto; border-radius:var(--b-r-xl); }
@keyframes b-fade{ from{ opacity:0; } }
@keyframes b-up{ from{ transform:translateY(100%); } }
@keyframes b-left{ from{ transform:translateX(100%); } }

/* 5.9 Liste type messagerie (notifications, alertes, BO) */
.b-list{ list-style:none; margin:0; padding:0; display:grid; background:var(--b-surface); border-radius:var(--b-r-lg); box-shadow:var(--b-sh-1), var(--b-hairline); overflow:hidden; }
.b-list__item{ display:grid; grid-template-columns:auto 1fr auto; gap:var(--b-s-3); align-items:center; min-height:64px; padding:var(--b-s-3) var(--b-s-4); color:inherit; text-decoration:none; background:none; border:0; width:100%; text-align:left; }
.b-list__item + .b-list__item{ box-shadow: inset 0 1px 0 var(--b-line); }
.b-list__item:hover{ background:var(--b-surface-2); }
.b-list__item[aria-current="true"], .b-list__item[aria-selected="true"]{ background:var(--b-brand-soft); box-shadow: inset 3px 0 0 var(--b-brand); }
.b-list__item[aria-current="true"] .b-list__meta, .b-list__item[aria-selected="true"] .b-list__meta{ color:var(--b-ink-2); } /* ink-3 interdit sur brand-soft (4,3:1) */
.b-list__item--unread .b-list__title::after{ content:""; display:inline-block; width:8px; height:8px; margin-left:8px; border-radius:50%; background:var(--b-brand); vertical-align:middle; }
.b-list__title{ font-weight:var(--b-fw-semi); line-height:1.3; }
.b-list__sub{ font-size:var(--b-fs-sm); color:var(--b-ink-2); line-height:1.35; overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.b-list__meta{ font-size:var(--b-fs-sm); color:var(--b-ink-3); text-align:right; white-space:nowrap; }
.b-avatar{ width:44px; height:44px; border-radius:50%; display:grid; place-items:center; flex:none; font-weight:var(--b-fw-bold); background:var(--b-brand-soft); color:var(--b-brand-ink); }
.b-avatar--warm{ background:var(--b-warm-soft); color:var(--b-warm-ink); }

/* 5.10 Badges (statut et sévérité) : forme + texte, jamais la couleur seule */
.b-badge{ display:inline-flex; align-items:center; gap:6px; min-height:28px; padding:2px 10px; border-radius:var(--b-r-pill);
  font-size:var(--b-fs-sm); font-weight:var(--b-fw-semi); line-height:1.2; white-space:nowrap; background:var(--b-surface-2); color:var(--b-ink-2); }
.b-badge::before{ content:""; width:8px; height:8px; border-radius:50%; background:currentColor; flex:none; }
.b-badge--plain::before{ display:none; }
.b-badge--brand{ background:var(--b-brand-soft); color:var(--b-brand-ink); }
.b-badge--ok{ background:var(--b-ok-soft); color:var(--b-ok); }
.b-badge--warn{ background:var(--b-warn-soft); color:var(--b-warn); }
.b-badge--info{ background:var(--b-info-soft); color:var(--b-info); }
.b-badge--danger, .b-badge--crit{ background:var(--b-sev-crit-soft); color:var(--b-sev-crit); }
.b-badge--crit::before{ border-radius:2px; transform:rotate(45deg); }               /* losange = critique */
.b-badge--high{ background:var(--b-sev-high-soft); color:var(--b-sev-high); }
.b-badge--high::before{ border-radius:0; clip-path:polygon(50% 0,100% 100%,0 100%); } /* triangle = haute */
.b-badge--med{ background:var(--b-sev-med-soft); color:var(--b-sev-med); }
.b-badge--low{ background:var(--b-sev-low-soft); color:var(--b-sev-low); }
.b-badge--low::before{ background:transparent; box-shadow: inset 0 0 0 2px currentColor; } /* cercle vide = info */
.b-badge--warm{ background:var(--b-warm-soft); color:var(--b-warm-ink); }
.b-count{ min-width:22px; height:22px; padding:0 6px; border-radius:11px; display:inline-grid; place-items:center; font-size:.8125rem; font-weight:var(--b-fw-bold); background:var(--b-danger); color:var(--b-on-danger); }

/* 5.11 Pastilles / segments / champs / interrupteurs */
.b-chip{ display:inline-flex; align-items:center; gap:6px; min-height:var(--b-hit); padding:0 var(--b-s-4); border:0; border-radius:var(--b-r-pill);
  background:var(--b-surface); color:var(--b-ink); font-weight:var(--b-fw-semi); font-size:var(--b-fs-sm); box-shadow:var(--b-sh-1), inset 0 0 0 1.5px var(--b-line); }
.b-chip[aria-pressed="true"]{ background:var(--b-brand-soft); color:var(--b-brand-ink); box-shadow: inset 0 0 0 2px var(--b-brand); }
.b-chips{ display:flex; gap:var(--b-s-2); flex-wrap:wrap; }
.b-chips--scroll > *{ flex:none; }
.b-chip{ white-space:nowrap; }
.b-chips--scroll{ flex-wrap:nowrap; overflow-x:auto; scrollbar-width:none; margin:0 calc(var(--b-gutter) * -1); padding:2px var(--b-gutter); }
.b-seg{ display:grid; grid-auto-flow:column; grid-auto-columns:1fr; gap:4px; padding:4px; border-radius:var(--b-r-md); background:var(--b-surface-2); }
.b-seg > button{ min-height:44px; border:0; border-radius:calc(var(--b-r-md) - 4px); background:transparent; font-weight:var(--b-fw-semi); font-size:var(--b-fs-sm); color:var(--b-ink-2); }
.b-seg > button[aria-pressed="true"], .b-seg > button[aria-selected="true"]{ background:var(--b-surface); color:var(--b-ink); box-shadow:var(--b-sh-1); }
.b-field{ display:grid; gap:6px; }
.b-field > label, .b-label{ font-weight:var(--b-fw-semi); font-size:var(--b-fs-sm); }
.b-input{ min-height:52px; width:100%; padding:0 var(--b-s-4); border:0; border-radius:var(--b-r-md); background:var(--b-surface); color:var(--b-ink);
  font-size:var(--b-fs-md); box-shadow: inset 0 0 0 1.5px var(--b-line-strong); transition:box-shadow var(--b-t-fast) var(--b-ease); }
.b-input:focus{ outline:none; box-shadow: inset 0 0 0 2px var(--b-brand), 0 0 0 4px color-mix(in srgb, var(--b-brand) 22%, transparent); }
.b-input[aria-invalid="true"]{ box-shadow: inset 0 0 0 2px var(--b-danger); }
.b-field__err{ color:var(--b-danger); font-size:var(--b-fs-sm); font-weight:var(--b-fw-semi); }
.b-check{ display:grid; grid-template-columns:28px 1fr; gap:var(--b-s-3); align-items:start; min-height:var(--b-hit); padding:var(--b-s-2) 0; cursor:pointer; }
.b-check input{ width:24px; height:24px; margin:2px 0 0; accent-color:var(--b-brand); }
.b-switch{ position:relative; width:52px; height:32px; flex:none; appearance:none; -webkit-appearance:none; margin:0; border-radius:16px; background:var(--b-line-strong); cursor:pointer; transition:background var(--b-t) var(--b-ease); }
.b-switch::after{ content:""; position:absolute; top:3px; left:3px; width:26px; height:26px; border-radius:50%; background:#FFFFFF; box-shadow:var(--b-sh-1); transition:transform var(--b-t) var(--b-ease-spring); }
.b-switch:checked{ background:var(--b-brand); }
.b-switch:checked::after{ transform:translateX(20px); }
.b-radio-card{ display:grid; grid-template-columns:auto 1fr auto; gap:var(--b-s-3); align-items:center; padding:var(--b-s-4); border-radius:var(--b-r-lg); background:var(--b-surface); box-shadow: inset 0 0 0 1.5px var(--b-line); cursor:pointer; }
.b-radio-card:has(input:checked){ background:var(--b-brand-soft); box-shadow: inset 0 0 0 2px var(--b-brand); }
.b-radio-card input{ width:22px; height:22px; accent-color:var(--b-brand); margin:0; }

/* Récapitulatif minimal + détail replié */
.b-recap{ display:grid; gap:0; }
.b-recap__row{ display:grid; grid-template-columns:28px 1fr auto; gap:var(--b-s-3); align-items:center; min-height:56px; }
.b-recap__row + .b-recap__row{ box-shadow: inset 0 1px 0 var(--b-line); }
.b-pay{ display:grid; gap:var(--b-s-2); padding:var(--b-s-4); border-radius:var(--b-r-lg); background:var(--b-surface-2); }
.b-pay__line{ display:flex; justify-content:space-between; gap:var(--b-s-3); }
.b-pay__line > :last-child, .b-pay__total > :last-child{ white-space:nowrap; text-align:right; }
.b-pay__total{ display:flex; justify-content:space-between; align-items:baseline; gap:var(--b-s-3); padding-top:var(--b-s-2); box-shadow: inset 0 1px 0 var(--b-line-strong); font-weight:var(--b-fw-bold); }
.b-fold > summary{ list-style:none; display:flex; align-items:center; justify-content:space-between; min-height:var(--b-hit); cursor:pointer; color:var(--b-brand); font-weight:var(--b-fw-semi); }
.b-fold > summary::-webkit-details-marker{ display:none; }
.b-fold > summary::after{ content:""; width:10px; height:10px; border-right:2px solid currentColor; border-bottom:2px solid currentColor; transform:rotate(45deg) translateY(-3px); transition:transform var(--b-t) var(--b-ease); }
.b-fold[open] > summary::after{ transform:rotate(-135deg); }

/* 5.12 Toasts */
.b-toasts{ position:fixed; z-index:60; left:var(--b-gutter); right:var(--b-gutter); bottom:calc(var(--b-tabbar-h) + 12px + env(safe-area-inset-bottom)); display:grid; gap:var(--b-s-2); justify-items:center; pointer-events:none; }
.b-toast{ pointer-events:auto; display:flex; align-items:center; gap:var(--b-s-3); width:min(100%, 440px); min-height:56px; padding:var(--b-s-3) var(--b-s-3) var(--b-s-3) var(--b-s-4);
  border-radius:var(--b-r-lg); background:var(--b-ink); color:var(--b-bg); box-shadow:var(--b-sh-3); animation:b-toast var(--b-t-slow) var(--b-ease-spring); }
.b-toast__msg{ flex:1; font-weight:var(--b-fw-medium); }
.b-toast__act{ min-height:var(--b-hit); padding:0 var(--b-s-3); border:0; border-radius:var(--b-r-sm); background:transparent; color:inherit; font-weight:var(--b-fw-bold); text-decoration:underline; text-underline-offset:3px; }
.b-toast .b-icon{ color:var(--b-toast-accent); }
.b-toast--static{ position:relative; animation:none; }
@keyframes b-toast{ from{ transform:translateY(16px) scale(.96); opacity:0; } }

/* 5.13 États vides illustrés */
.b-empty{ display:grid; justify-items:center; text-align:center; gap:var(--b-s-3); padding:var(--b-s-8) var(--b-s-5); }
.b-empty__art{ width:144px; height:112px; color:var(--b-brand); }
.b-empty__art .b-art-soft{ fill:var(--b-brand-soft); }
.b-empty__art .b-art-warm{ fill:var(--b-warm); }
.b-empty__art .b-art-line{ stroke:currentColor; fill:none; stroke-width:2.5; stroke-linecap:round; stroke-linejoin:round; }
.b-empty__title{ font-family:var(--b-font-display); font-size:var(--b-fs-lg); font-weight:var(--b-fw-bold); }
.b-empty__text{ color:var(--b-ink-2); max-width:32ch; }

/* 5.14 Squelettes de chargement */
.b-skel{ display:block; border-radius:var(--b-r-sm); background:var(--b-surface-2); position:relative; overflow:hidden; min-height:16px; }
.b-skel::after{ content:""; position:absolute; inset:0; transform:translateX(-100%); background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--b-surface) 70%, transparent), transparent); animation:b-flow 1.4s var(--b-ease) infinite; }
.b-skel--text{ height:16px; width:70%; } .b-skel--title{ height:24px; width:50%; } .b-skel--card{ height:120px; border-radius:var(--b-r-lg); }
.b-skel--circle{ width:44px; height:44px; border-radius:50%; }

/* 5.15 Barre d'onglets (bas d'écran) */
.b-tabbar{ position:sticky; bottom:0; z-index:10; display:grid; grid-auto-flow:column; grid-auto-columns:minmax(0,1fr); min-height:var(--b-tabbar-h);
  padding-bottom:env(safe-area-inset-bottom); background:color-mix(in srgb, var(--b-raised) 92%, transparent); backdrop-filter:saturate(1.4) blur(12px); box-shadow: 0 -1px 0 var(--b-line); }
.b-tabbar a, .b-tabbar button{ display:grid; justify-items:center; align-content:center; gap:2px; min-width:0; padding:0 2px; white-space:nowrap; letter-spacing:-.01em; min-height:var(--b-tabbar-h); border:0; background:none; color:var(--b-ink-2); font-size:var(--b-fs-sm); font-weight:var(--b-fw-medium); text-decoration:none; }
.b-tabbar [aria-current="page"]{ color:var(--b-brand); font-weight:var(--b-fw-semi); }

/* 5.16 App bar / navigation bureau */
.b-appbar{ display:flex; align-items:center; justify-content:space-between; gap:var(--b-s-3); min-height:64px; padding:0 var(--b-gutter); }
.b-sidenav{ display:grid; gap:4px; align-content:start; padding:var(--b-s-4); }
.b-sidenav a{ display:flex; align-items:center; gap:var(--b-s-3); min-height:44px; padding:0 var(--b-s-3); border-radius:var(--b-r-md); color:var(--b-ink-2); font-weight:var(--b-fw-semi); text-decoration:none; }
.b-sidenav a:hover{ background:var(--b-surface-2); color:var(--b-ink); }
.b-sidenav a[aria-current="page"]{ background:var(--b-brand-soft); color:var(--b-brand-ink); }
.b-kbd{ display:inline-grid; place-items:center; min-width:24px; height:24px; padding:0 6px; border-radius:6px; font-family:var(--b-font-mono); font-size:.8125rem; background:var(--b-surface-2); color:var(--b-ink-2); box-shadow: inset 0 -1px 0 var(--b-line-strong); }

/* 5.17 Laveur : tournée plein écran, carte à balayer, appareil photo, tuiles de suppléments */
.b-deck{ display:grid; grid-auto-flow:column; grid-auto-columns:100%; gap:var(--b-s-4); overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; }
.b-deck::-webkit-scrollbar{ display:none; }
.b-deck > *{ scroll-snap-align:center; }
.b-plate{ display:inline-flex; align-items:center; gap:10px; padding:8px 16px 8px 8px; border-radius:10px; background:#FFFFFF; color:#0B0B0B;
  box-shadow: inset 0 0 0 2px #0B0B0B; font-family:var(--b-font-mono); font-weight:var(--b-fw-bold); font-size:var(--b-fs-2xl); letter-spacing:.06em; }
.b-plate::before{ content:"F"; display:grid; place-items:center; width:28px; align-self:stretch; border-radius:6px; background:#1D4ED8; color:#FFFFFF; font-size:1rem; letter-spacing:0; }
.b-arrive{ position:relative; width:100%; min-height:88px; border:0; border-radius:var(--b-r-xl); background:var(--b-brand); color:var(--b-on-brand);
  font-family:var(--b-font-display); font-size:var(--b-fs-xl); font-weight:var(--b-fw-black); box-shadow:var(--b-sh-brand); display:flex; align-items:center; justify-content:center; gap:var(--b-s-3); }
.b-arrive::after{ content:""; position:absolute; inset:-6px; border-radius:calc(var(--b-r-xl) + 6px); box-shadow:0 0 0 3px color-mix(in srgb, var(--b-brand) 40%, transparent); animation:b-ring 2s var(--b-ease) infinite; pointer-events:none; }
@keyframes b-ring{ 0%{ opacity:1; transform:scale(.98);} 100%{ opacity:0; transform:scale(1.06);} }
.b-camera{ position:relative; aspect-ratio:3/4; border-radius:var(--b-r-xl); overflow:hidden; background:linear-gradient(160deg,#25302E,#0B1110); color:#FFFFFF; }
.b-camera__ghost{ position:absolute; inset:18% 8% 26%; width:84%; color:rgba(255,255,255,.9); }
.b-camera__ghost path{ fill:none; stroke:currentColor; stroke-width:2.5; stroke-dasharray:8 6; stroke-linecap:round; stroke-linejoin:round; }
.b-camera__hint{ position:absolute; top:16px; left:16px; right:16px; display:flex; justify-content:space-between; gap:8px; font-weight:var(--b-fw-semi); }
.b-camera__hint > span{ padding:6px 12px; border-radius:var(--b-r-pill); background:rgba(0,0,0,.55); }
.b-camera__shoot{ position:absolute; left:50%; bottom:20px; transform:translateX(-50%); width:76px; height:76px; border-radius:50%; border:0; background:#FFFFFF; box-shadow:0 0 0 6px rgba(255,255,255,.35); }
.b-tiles{ display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:var(--b-s-3); }
@media (min-width: 420px){ .b-tiles{ grid-template-columns:repeat(3, minmax(0,1fr)); } }
.b-tile{ position:relative; display:grid; gap:6px; align-content:start; justify-items:start; min-height:112px; padding:var(--b-s-4); border:0; border-radius:var(--b-r-lg); text-align:left;
  background:var(--b-surface); color:var(--b-ink); box-shadow: var(--b-sh-1), inset 0 0 0 1.5px var(--b-line); font-weight:var(--b-fw-semi); }
.b-tile__price{ font-size:var(--b-fs-sm); color:var(--b-ink-2); font-weight:var(--b-fw-semi); }
.b-tile[aria-pressed="true"]{ background:var(--b-brand-soft); color:var(--b-brand-ink); box-shadow: inset 0 0 0 3px var(--b-brand); }
.b-tile[aria-pressed="true"]::after{ content:""; position:absolute; top:12px; right:12px; width:22px; height:22px; border-radius:50%;
  background: var(--b-brand) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5 9-10'/%3E%3C/svg%3E") center/14px no-repeat; }
.b-stepper-num{ display:inline-flex; align-items:center; gap:4px; border-radius:var(--b-r-pill); background:var(--b-surface); box-shadow:var(--b-hairline); }
.b-stepper-num button{ width:var(--b-hit); height:var(--b-hit); border:0; border-radius:50%; background:transparent; font-size:1.25rem; font-weight:var(--b-fw-bold); color:inherit; }

/* 5.18 Inscriptions : « entreprise trouvée », dépôt de pièces */
.b-found{ display:grid; grid-template-columns:auto 1fr; gap:var(--b-s-3); align-items:center; padding:var(--b-s-4); border-radius:var(--b-r-lg); background:var(--b-ok-soft); color:var(--b-ink); animation:b-pop var(--b-t-slow) var(--b-ease-spring); }
.b-found__check{ width:40px; height:40px; border-radius:50%; display:grid; place-items:center; background:var(--b-ok); color:var(--b-surface); }
.b-found__check path{ stroke-dasharray:24; stroke-dashoffset:24; animation:b-draw 420ms var(--b-ease-out) 160ms forwards; }
@keyframes b-pop{ from{ transform:scale(.94); opacity:0; } }
@keyframes b-draw{ to{ stroke-dashoffset:0; } }
.b-drop{ display:grid; justify-items:center; gap:var(--b-s-2); padding:var(--b-s-6); border-radius:var(--b-r-lg); text-align:center; background:var(--b-surface); box-shadow: inset 0 0 0 2px var(--b-line-strong); outline-offset:4px; }
.b-drop[data-over="true"]{ background:var(--b-brand-soft); box-shadow: inset 0 0 0 2px var(--b-brand); }
.b-doc{ display:grid; grid-template-columns:56px 1fr auto; gap:var(--b-s-3); align-items:center; padding:var(--b-s-3); border-radius:var(--b-r-lg); background:var(--b-surface); box-shadow:var(--b-sh-1), var(--b-hairline); }
.b-doc__thumb{ width:56px; height:72px; border-radius:8px; background:var(--b-surface-2); }
.b-doc__scan{ position:relative; overflow:hidden; }
.b-doc__scan::after{ content:""; position:absolute; left:0; right:0; height:30%; top:-30%; background:linear-gradient(to bottom, transparent, color-mix(in srgb, var(--b-brand) 35%, transparent)); animation:b-scan 1.4s var(--b-ease) infinite; }
@keyframes b-scan{ to{ top:100%; } }

/* 5.19 Mise en page */
.b-screen{ min-height:100dvh; display:flex; flex-direction:column; background:var(--b-bg); background-image:var(--b-grad-mist); background-repeat:no-repeat; background-size:100% 420px; }
.b-screen__body{ flex:1; padding:var(--b-s-2) var(--b-gutter) var(--b-s-6); display:grid; gap:var(--b-s-5); align-content:start; }
.b-split{ display:grid; grid-template-columns: minmax(280px, 380px) minmax(0,1fr); min-height:100dvh; }
.b-split__list{ border-right:1px solid var(--b-line); overflow:auto; }
.b-desk{ display:grid; grid-template-columns: 248px minmax(0,1fr); min-height:100dvh; }
@media (max-width: 899px){ .b-split, .b-desk{ grid-template-columns: minmax(0,1fr); } .b-split__list{ border-right:0; } }
.b-grid{ display:grid; gap:var(--b-s-5); grid-template-columns:repeat(auto-fit, minmax(min(100%, 280px), 1fr)); }
.b-table{ width:100%; border-collapse:collapse; font-size:var(--b-fs-sm); }
.b-table th{ text-align:left; font-weight:var(--b-fw-semi); color:var(--b-ink-2); padding:var(--b-s-3) var(--b-s-4); }
.b-table td{ padding:var(--b-s-3) var(--b-s-4); box-shadow: inset 0 1px 0 var(--b-line); vertical-align:middle; }
.b-table tr:hover td{ background:var(--b-surface-2); }


/* 5.20 Ajouts V11 §10 : puce pulsée, glisser pour confirmer, bannière hors ligne, densité bureau, aperçu de document */
.b-live{ position:relative; display:inline-block; width:10px; height:10px; border-radius:50%; background:var(--b-brand); flex:none; }
.b-live::after, .b-cal__day--tour .b-cal__dot::after{ content:""; position:absolute; inset:0; border-radius:50%; background:var(--b-brand); animation:b-live 1.8s var(--b-ease-out) infinite; }
.b-cal__day--tour .b-cal__dot{ position:relative; }
@keyframes b-live{ from{ transform:scale(1); opacity:.65; } to{ transform:scale(2.8); opacity:0; } }

.b-swipe{ --p:0; position:relative; height:76px; border-radius:38px; background:var(--b-brand-soft); box-shadow: inset 0 0 0 2px var(--b-brand); overflow:hidden; }
.b-swipe::before{ content:""; position:absolute; inset:0 auto 0 0; width:calc(38px + var(--p) * (100% - 38px) / 100); border-radius:38px; background:color-mix(in srgb, var(--b-brand) 22%, transparent); }
.b-swipe__label{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; gap:10px; padding-left:64px; color:var(--b-brand-ink);
  font-family:var(--b-font-display); font-size:var(--b-fs-md); font-weight:var(--b-fw-black); pointer-events:none; white-space:nowrap; }
.b-swipe__label::after{ content:"›››"; letter-spacing:2px; opacity:.7; animation:b-nudge 1.6s var(--b-ease) infinite; }
@keyframes b-nudge{ 50%{ transform:translateX(6px); opacity:1; } }
.b-swipe input{ -webkit-appearance:none; appearance:none; position:absolute; top:0; bottom:0; left:6px; width:calc(100% - 12px); height:100%; margin:0; background:transparent; cursor:grab; touch-action:pan-y; }
.b-swipe input::-webkit-slider-runnable-track{ height:76px; background:transparent; }
.b-swipe input::-webkit-slider-thumb{ -webkit-appearance:none; width:64px; height:64px; margin-top:6px; border-radius:50%; background:var(--b-brand) var(--b-swipe-arrow) center/28px no-repeat; box-shadow:var(--b-sh-brand); }
.b-swipe input::-moz-range-track{ height:76px; background:transparent; }
.b-swipe input::-moz-range-thumb{ width:64px; height:64px; border:0; border-radius:50%; background:var(--b-brand) var(--b-swipe-arrow) center/28px no-repeat; box-shadow:var(--b-sh-brand); }
.b-swipe input:focus-visible{ outline:3px solid var(--b-focus); outline-offset:4px; border-radius:38px; }
.b-swipe[data-done="true"]{ background:var(--b-brand); }
.b-swipe[data-done="true"] .b-swipe__label{ color:var(--b-on-brand); padding-left:0; }
.b-swipe[data-done="true"] .b-swipe__label::after{ content:none; }
.b-swipe[data-done="true"] input{ visibility:hidden; }

.b-banner{ display:flex; align-items:center; gap:var(--b-s-3); min-height:48px; padding:var(--b-s-2) var(--b-gutter); background:var(--b-warn-soft); color:var(--b-warn); font-weight:var(--b-fw-semi); font-size:var(--b-fs-sm); }
.b-banner--info{ background:var(--b-info-soft); color:var(--b-info); }
.b-banner .b-banner__act{ margin-left:auto; }

@media (min-width: 900px){
  .b-dense{ --b-fs-sm:.875rem; --b-fs-md:.9375rem; --b-fs-lg:1.125rem; --b-fs-xl:1.375rem; font-size:var(--b-fs-md); }
  .b-dense .b-list__item{ min-height:56px; padding-block:var(--b-s-2); }
  .b-dense .b-badge{ min-height:24px; }
}

.b-paper{ color-scheme:light; --b-ink:#0E2321; --b-ink-2:#455A57; --b-ink-3:#5E726F; --b-surface:#FFFFFF; --b-surface-2:#EAF0EE; --b-line:#DCE5E2; --b-line-strong:#7E918D;
  --b-brand:#0A6B5F; --b-brand-ink:#07564C; --b-brand-soft:#DDF1EC; --b-on-brand:#FFFFFF; --b-ok:#17703F; --b-ok-soft:#E2F3E8; --b-warm-ink:#8A3F10; --b-warm-soft:#FCEBDD;
  background:#FFFFFF; color:var(--b-ink); border-radius:6px; box-shadow:0 1px 2px rgba(0,0,0,.08), 0 16px 40px -16px rgba(0,0,0,.35); }

.b-timeline{ list-style:none; margin:0; padding:0; display:grid; gap:0; }
.b-timeline > li{ position:relative; display:grid; grid-template-columns:72px 1fr auto; gap:var(--b-s-3); align-items:start; padding:var(--b-s-2) 0 var(--b-s-2) 20px; }
.b-timeline > li::before{ content:""; position:absolute; left:4px; top:16px; width:10px; height:10px; border-radius:50%; background:var(--b-surface); box-shadow: inset 0 0 0 2px var(--b-brand); }
.b-timeline > li::after{ content:""; position:absolute; left:8px; top:28px; bottom:-8px; width:2px; background:var(--b-line); }
.b-timeline > li:last-child::after{ display:none; }
.b-timeline > li[data-s="ok"]::before{ background:var(--b-ok); box-shadow:none; }
.b-timeline time{ font-family:var(--b-font-mono); color:var(--b-ink-2); font-size:var(--b-fs-sm); }

/* ---------- 6. Réduction des animations ---------- */
@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{ animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; scroll-behavior:auto !important; }
  .b-stepper__fill::after, .b-skel::after, .b-arrive::after, .b-doc__scan::after, .b-live::after, .b-cal__day--tour .b-cal__dot::after{ display:none; }
  .b-found__check path{ stroke-dashoffset:0; }
}
/* Contraste renforcé demandé par le système */
@media (prefers-contrast: more){
  :root{ --b-ink-2: var(--b-ink); --b-line: var(--b-line-strong); }
}
/* Mode couleurs forcées (Windows) : garder les repères */
@media (forced-colors: active){
  .b-btn, .b-card, .b-slot, .b-tile, .b-chip, .b-cal__day, .b-list{ border:1px solid CanvasText; }
  .b-gauge::after, .b-stepper__fill, .b-ring{ forced-color-adjust:none; }
}
/* ===== V10 simplifiée : feuilles, pastilles de résumé, créneaux, suivi en direct, app laveur, boîte d'exceptions, contrat ===== */
.screen{position:relative;overflow:clip;min-height:700px}
.phone .body{padding-bottom:20px}
.cta{position:sticky;bottom:0;z-index:3;display:grid;gap:6px;padding:10px 0 4px;background:var(--fog);box-shadow:0 -10px 12px -8px var(--fog)}
.cta .btn{width:100%}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chips button{border:1.5px solid var(--line);background:var(--paper);border-radius:999px;padding:6px 11px;font-size:.8rem;font-weight:600;max-width:100%;text-align:left}
.chips button[disabled]{cursor:default;opacity:1}
.chips button:not([disabled]):hover{border-color:var(--accent)}
.etat3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.etat3 button{border:1.5px solid var(--line);background:var(--paper);border-radius:14px;padding:16px 4px;font-weight:700;font-size:.95rem}
.etat3 button:hover,.etat3 button[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft)}
.slotcard{display:grid;gap:3px;text-align:left;width:100%;background:var(--paper);border:1.5px solid var(--line);border-radius:14px;padding:12px}
.slotcard:hover{border-color:var(--accent)}
.dayrow{display:grid;grid-template-columns:86px 1fr;gap:8px;align-items:center;border-bottom:1px solid var(--line);padding:6px 0}
.dayrow:last-child{border-bottom:0}
.tslots{display:flex;gap:6px;flex-wrap:wrap}
.tslots button{border:1.5px solid var(--line);background:var(--paper);border-radius:10px;padding:7px 9px;font-size:.82rem;font-weight:600;min-width:58px;position:relative}
.tslots button.wait::after{content:"";position:absolute;top:4px;right:4px;width:6px;height:6px;border-radius:50%;background:var(--muted)}
.tslots button.ok{border-color:color-mix(in srgb,var(--good) 55%,var(--line))}
.tslots button[disabled]{opacity:.4;text-decoration:line-through}
dl.recap{display:grid;grid-template-columns:auto 1fr auto;gap:8px 10px;margin:0;align-items:center;font-size:.88rem}
dl.recap dt{color:var(--muted)}
dl.recap dd{margin:0;min-width:0;overflow-wrap:anywhere}
dl.recap .mod{border:0;background:transparent;color:var(--accent);font-weight:700;font-size:.8rem;padding:2px 0}
.sheet-bg{position:fixed;inset:0;background:rgba(6,20,18,.45);z-index:30}
.sheet{position:fixed;z-index:31;right:0;top:0;bottom:0;width:min(560px,100vw);background:var(--paper);color:var(--ink);display:flex;flex-direction:column;box-shadow:-12px 0 40px -20px rgba(0,0,0,.5)}
.screen .sheet-bg{position:absolute}
.screen .sheet{position:absolute;top:auto;left:0;right:0;bottom:0;width:auto;max-height:88%;border-radius:20px 20px 0 0}
.sheet-h{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line)}
.sheet-h h3{font-size:1.05rem}
.sheet-h .x{border:0;background:transparent;font-size:1.5rem;line-height:1;padding:0 6px;color:var(--ink)}
.sheet-b{padding:14px 16px;overflow:auto;display:grid;gap:12px;align-content:start;grid-auto-rows:max-content;flex:1}
.sheet-f{padding:12px 16px;border-top:1px solid var(--line);display:grid;gap:8px}
.sheet-f .btn{width:100%}
@media (max-width:640px){.sheet{width:100vw;top:auto;max-height:92vh;border-radius:18px 18px 0 0}}
details.fold{border-top:1px solid var(--line);padding-top:8px}
details.fold > summary{font-weight:600;font-size:.88rem;color:var(--accent);list-style:none}
details.fold > summary::-webkit-details-marker{display:none}
details.fold > summary::before{content:"+ ";font-family:var(--mono)}
details.fold[open] > summary::before{content:"− "}
.foldb{display:grid;gap:10px;padding-top:10px}
details.demo{border:1px dashed var(--line);border-radius:12px;padding:10px 12px;background:var(--paper)}
details.demo > summary{font-weight:700;font-size:.85rem;color:var(--muted)}
details.demo .btnrow{margin-top:10px}
.switch{display:flex;gap:10px;align-items:flex-start;font-size:.9rem}
.switch input{appearance:none;-webkit-appearance:none;flex:none;width:40px;height:24px;border-radius:999px;background:var(--line);position:relative;margin:0;cursor:pointer;transition:background .15s}
.switch input::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:var(--paper);transition:left .15s}
.switch input:checked{background:var(--accent)}
.switch input:checked::after{left:19px}
.switch input:disabled{opacity:.6;cursor:not-allowed}
.track ol{list-style:none;margin:6px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;font-size:.7rem;font-weight:600;color:var(--muted)}
.track li{border-top:4px solid var(--line);padding-top:4px;overflow-wrap:anywhere}
.track li.done{border-top-color:color-mix(in srgb,var(--good) 55%,var(--line));color:var(--ink)}
.track li.cur{border-top-color:var(--good);color:var(--ink)}
.stars5{display:flex;gap:4px}
.stars5 button{font-size:2rem;line-height:1;border:0;background:transparent;color:var(--line);padding:0 2px}
.stars5 button.on{color:var(--sun)}
.critrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;font-size:.85rem}
.critrow .mini{display:flex}
.critrow .mini button{border:0;background:transparent;color:var(--line);font-size:1.15rem;padding:0 1px}
.critrow .mini button.on{color:var(--sun)}
.tags{display:flex;gap:6px;flex-wrap:wrap}
.tags button{border:1.5px solid var(--line);background:var(--paper);border-radius:999px;padding:5px 10px;font-size:.8rem}
.tags button[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft)}
.pickrow{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;text-align:left;width:100%;background:var(--paper);border:1.5px solid var(--line);border-radius:12px;padding:10px 12px}
.pickrow[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft)}
.pickrow .dot{width:16px;height:16px;border-radius:50%;border:2px solid var(--line)}
.pickrow[aria-pressed="true"] .dot{border:5px solid var(--accent)}
.redcard{border-color:color-mix(in srgb,var(--bad) 55%,var(--line));background:color-mix(in srgb,var(--bad) 7%,var(--paper))}
.thumbs{display:grid;grid-template-columns:1fr 1fr;gap:8px}
ul.plain{margin:0;padding-left:18px;display:grid;gap:6px}
.bell{margin-left:auto;border:0;background:transparent;font-size:1.15rem;position:relative;padding:2px 6px;color:var(--ink)}
.bell b{position:absolute;top:-4px;right:-2px;background:var(--bad);color:#fff;border-radius:999px;font-size:.62rem;padding:1px 5px;font-family:var(--body)}
.tabbar.t4{grid-template-columns:repeat(4,1fr)}
.tabbar button{min-height:52px;position:relative}
.tabbar button b.n{position:absolute;top:6px;left:calc(50% + 14px);background:var(--accent);color:var(--accent-ink);border-radius:999px;font-size:.62rem;padding:0 5px}
/* Laveur : terrain d'abord */
.btn-xl{min-height:56px;font-size:1.06rem;font-weight:700;width:100%;border-radius:16px}
.nextcard{border:2px solid var(--accent);border-radius:18px;background:var(--paper);padding:16px;display:grid;gap:10px}
.nextcard h3{font-size:1.15rem;line-height:1.25}
.segs{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:4px}
.segs button{border:0;background:transparent;border-radius:9px;padding:9px 4px;font-weight:700;font-size:.8rem}
.segs button[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink)}
.mcard{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:14px;display:grid;gap:6px}
.mcard.is-conflict{opacity:.6}
.lavhead{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--paper);border-bottom:1px solid var(--line)}
.lavhead b{font-family:var(--display)}
.weekrow{display:flex;justify-content:space-between;gap:8px;font-size:.86rem;border-bottom:1px solid var(--line);padding:7px 0;flex-wrap:wrap}
.weekrow:last-child{border-bottom:0}
.tbar{display:flex;align-items:center;gap:8px;padding:12px 14px;background:var(--top-bg);color:var(--top-ink)}
.tbar button{border:0;background:transparent;color:var(--top-ink);font-weight:700}
.tstatus{display:flex;align-items:center;gap:8px;font-weight:700;font-size:.95rem}
.tstatus .pulse{background:#3d8bfd}
.tprog{display:grid;gap:4px;font-size:.85rem}
.plate{font-family:var(--mono);font-size:2rem;font-weight:500;letter-spacing:.04em;text-align:center;border:2px solid var(--ink);border-radius:10px;padding:8px;background:var(--paper)}
.cam{display:grid;gap:8px;border:1.5px dashed var(--line);border-radius:14px;padding:12px;background:var(--paper)}
.cam .shots{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.supp-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.tile{display:grid;gap:4px;align-content:start;text-align:left;min-height:96px;border:1.5px solid var(--line);background:var(--paper);border-radius:12px;padding:8px;font-size:.78rem;font-weight:600;overflow-wrap:anywhere}
.tile[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft)}
.tile .net{font-weight:500;color:var(--muted);font-size:.72rem}
.qty{display:flex;align-items:center;gap:6px}
.qty button{border:1.5px solid var(--line);background:var(--paper);border-radius:8px;width:30px;height:30px;font-weight:700}
.chkline{display:grid;grid-template-columns:22px 1fr auto;gap:8px;align-items:center;font-size:.88rem;border-bottom:1px solid var(--line);padding:8px 0}
.chkline:last-child{border-bottom:0}
.chkline .ok{color:var(--good);font-weight:700}
.chkline .todo{color:var(--muted)}
.lvlpill{font-family:var(--display);font-weight:800;font-size:1.6rem;border-radius:14px;padding:10px 14px;background:var(--accent-soft);justify-self:start}
.bars{display:flex;align-items:flex-end;gap:6px;height:64px}
.bars i{flex:1;background:color-mix(in srgb,var(--accent) 45%,var(--line));border-radius:4px 4px 0 0;min-height:4px}
.bars i.cur{background:var(--accent)}
.badges{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;max-width:100%}
.badges span{flex:none;border:1px solid var(--line);border-radius:12px;padding:8px 10px;font-size:.78rem;background:var(--paper);display:grid;gap:2px}
.badges span.off{opacity:.55}
.acctrow{display:grid;grid-template-columns:1fr auto;gap:2px 10px;text-align:left;width:100%;background:var(--paper);border:0;border-bottom:1px solid var(--line);padding:12px 4px}
.acctrow:last-child{border-bottom:0}
.acctrow .v{grid-column:1;color:var(--muted);font-size:.8rem}
.acctrow::after{content:"›";grid-row:1/3;grid-column:2;align-self:center;font-size:1.3rem;color:var(--muted)}
/* Back-office : boîte d'exceptions */
.kpistrip{display:flex;flex-wrap:wrap;gap:4px 18px;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:10px 14px}
.kpistrip button{border:0;background:transparent;display:grid;text-align:left;padding:0}
.kpistrip .l{font-size:.72rem;color:var(--muted)}
.kpistrip .v{font-family:var(--mono);font-size:1.15rem}
.kpistrip .v.low{color:var(--warn)}
.alrow{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px 12px;align-items:center;border:1px solid var(--line);border-left:4px solid var(--line);border-radius:10px;padding:8px 12px;background:var(--paper);min-height:56px}
.alrow.sev3{border-left-color:var(--bad)}.alrow.sev2{border-left-color:var(--warn)}
.alrow .acts{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.alrow .menu{grid-column:1/-1;display:flex;gap:6px;flex-wrap:wrap;border-top:1px dashed var(--line);padding-top:8px}
@media (max-width:760px){.alrow{grid-template-columns:minmax(0,1fr);gap:6px}.alrow>.pill{justify-self:start}.alrow .acts{grid-column:1/-1;justify-content:flex-start}}
.filters{display:flex;gap:6px;flex-wrap:wrap}
.filters button{border:1.5px solid var(--line);background:var(--paper);border-radius:999px;padding:5px 11px;font-size:.82rem;font-weight:600}
.filters button[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft)}
.tip{border:1px solid var(--line);background:var(--paper);border-radius:50%;width:22px;height:22px;font-size:.75rem;font-weight:700;padding:0}
table.ctrl td{white-space:normal;vertical-align:top}
.st-ok{color:var(--good);font-weight:700}.st-warn{color:var(--warn);font-weight:700}.st-bad{color:var(--bad);font-weight:700}
.dealrow{display:grid;grid-template-columns:minmax(0,1.4fr) auto minmax(0,1.6fr) auto;gap:6px 12px;align-items:center;border-bottom:1px solid var(--line);padding:10px 0}
.dealrow:last-child{border-bottom:0}
@media (max-width:760px){.dealrow{grid-template-columns:minmax(0,1fr) auto}.dealrow .nx{grid-column:1/-1}}
.stagebar{display:flex;gap:4px;flex-wrap:wrap}
.stagebar button{border:1.5px solid var(--line);background:var(--paper);border-radius:999px;padding:5px 10px;font-size:.8rem;font-weight:600}
.stagebar button[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft)}
.dots6{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:.75rem;color:var(--muted)}
.dots6 i{width:10px;height:10px;border-radius:50%;border:2px solid var(--line);display:inline-block}
.dots6 i.on{background:var(--accent);border-color:var(--accent)}
.kstep{border:1px solid var(--line);border-left:4px solid var(--line);border-radius:12px;padding:12px 14px;display:grid;gap:10px;background:var(--paper)}
.kstep[data-state="sent"]{border-left-color:var(--warn)}.kstep[data-state="done"]{border-left-color:var(--good)}
.kstep h4{margin:0;font-family:var(--display);font-size:1rem;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
/* Gestionnaire : 6 rubriques */
.gwrap{display:grid;grid-template-columns:220px minmax(0,1fr);gap:24px;align-items:start}
.gnav{display:grid;gap:4px;position:sticky;top:76px}
.gnav button{text-align:left;border:0;background:transparent;border-radius:10px;padding:10px 12px;font-weight:600;color:var(--muted)}
.gnav button[aria-current="page"]{background:var(--paper);color:var(--ink);box-shadow:inset 3px 0 0 var(--accent)}
.gnavsel{display:none}
@media (max-width:900px){.gwrap{grid-template-columns:1fr}.gnav{display:none}.gnavsel{display:grid;gap:4px}}
.todo{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.todo li{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;border:1px solid var(--line);border-radius:10px;padding:8px 12px;background:var(--paper);font-size:.9rem}
.sitecards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:10px}
.sitecard{display:grid;gap:4px;text-align:left;border:1px solid var(--line);border-radius:14px;padding:12px;background:var(--paper)}
.sitecard:hover{border-color:var(--accent)}
.blk{border:1px solid var(--line);border-radius:14px;padding:14px;display:grid;gap:8px;background:var(--paper)}
.blk .row h4{margin:0;font-family:var(--display)}
.kv{display:grid;grid-template-columns:minmax(0,190px) minmax(0,1fr);gap:4px 14px;font-size:.88rem;margin:0}
.kv dt{color:var(--muted)}.kv dd{margin:0;overflow-wrap:anywhere}
@media (max-width:520px){.kv{grid-template-columns:1fr}.kv dd{margin-bottom:6px}}
.savebar{position:sticky;bottom:0;padding:10px 0;background:linear-gradient(to top,var(--fog) 70%,transparent);display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.tabs3{display:flex;gap:6px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.tabs3 button{border:0;background:transparent;border-bottom:3px solid transparent;padding:8px 10px;font-weight:700;color:var(--muted)}
.tabs3 button[aria-selected="true"]{border-bottom-color:var(--accent);color:var(--ink)}
.prog4{display:flex;gap:6px;align-items:center;font-size:.8rem;color:var(--muted)}
.prog4 i{flex:1;height:5px;border-radius:3px;background:var(--line)}
.prog4 i.on{background:var(--accent)}
.ins{max-width:640px;margin:0 auto;display:grid;gap:14px}
.sugg{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.sugg button{width:100%;text-align:left;border:1px solid var(--line);background:var(--paper);border-radius:10px;padding:7px 10px;display:flex;justify-content:space-between;gap:8px}
.ocr{border-left:4px solid var(--good);background:var(--paper);border-radius:8px;padding:8px 12px;font-size:.85rem;display:grid;gap:4px}
.ocr.bad{border-left-color:var(--bad)}.ocr.warn{border-left-color:var(--warn)}
.upl{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--paper)}
button.mod{border:0;background:transparent;color:var(--accent);font-weight:700;font-size:inherit;padding:2px 0;cursor:pointer;text-align:left;font-family:inherit}
button.mod:hover{text-decoration:underline}
.sheet-f .row .btn{width:auto;flex:0 0 auto}
.tw b.mono,.plate{white-space:nowrap}
.sheet-f .switch{font-size:.9rem}

/* V10.2 : feuille large (contrôle des pièces) en plein écran à 390 px : le tableau garde presque toute la hauteur */
@media (max-width:640px){.sheet.wide{top:0;max-height:none;height:100%;border-radius:0}.sheet.wide .sheet-f{padding:8px 16px;gap:6px}}

/* ===================================================================
   V11 : direction artistique validée (design_system_v11.md)
   Les classes V10 encore utilisées prennent l'apparence des composants .b-*
   (élévation plutôt que bordure, 16 px minimum sur mobile, cibles de 44 px).
   =================================================================== */
html{background:var(--b-bg)}
body{margin:0;background:var(--b-bg);color:var(--b-ink);font-family:var(--b-font);font-size:var(--b-fs-md);line-height:var(--b-lh);font-variant-numeric:tabular-nums}
h1,h2,h3,h4{font-family:var(--b-font-display);letter-spacing:-.01em}
h2{font-size:var(--b-fs-xl);font-weight:800}h3{font-size:var(--b-fs-lg);font-weight:700}
.small,.legend,.err,.warnline,.okline,.motif,.crit{font-size:var(--b-fs-sm)}
.muted{color:var(--b-ink-2)}
.mono,.num{font-family:var(--b-font);font-variant-numeric:tabular-nums}
.mono.code,.plate,code,kbd{font-family:var(--b-font-mono)}
:focus-visible{outline:3px solid var(--b-focus);outline-offset:2px}
a{color:var(--b-brand)}
.b-icon{display:inline-block;vertical-align:middle}

/* ---- barre du prototype (choix de l'espace) ---- */
.top{background:color-mix(in srgb,var(--b-bg) 90%,transparent);backdrop-filter:blur(10px);color:var(--b-ink);box-shadow:0 1px 0 var(--b-line);position:sticky;top:0;z-index:20}
.top .wrap{gap:10px 14px;padding-block:8px}
.brand{display:inline-flex;align-items:center;gap:10px;color:var(--b-ink);font-family:var(--b-font-display);font-weight:800;font-size:1.25rem;margin-right:4px}
.logo{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;background:var(--b-grad-water);color:#fff}
.roles{display:flex;gap:6px;flex-wrap:wrap}
.roles button{min-height:44px;padding:0 14px;border:0;border-radius:var(--b-r-pill);background:transparent;color:var(--b-ink-2);font-weight:600;font-size:var(--b-fs-sm);box-shadow:none}
.roles button:hover{background:var(--b-surface-2);color:var(--b-ink)}
.roles button[aria-selected="true"]{background:var(--b-brand-soft);color:var(--b-brand-ink);box-shadow:inset 0 0 0 2px var(--b-brand)}
.top .theme{margin-left:auto}
.sample{margin-left:0;font-size:var(--b-fs-sm);color:var(--b-ink-2);font-family:var(--b-font)}
@media (max-width:899px){
  .top{position:sticky}
  .top .wrap{flex-wrap:nowrap;display:grid;grid-template-columns:auto 1fr auto;padding-block:6px}
  .roles{grid-column:1/-1;grid-row:2;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -16px;padding:0 16px 2px}
  .roles::-webkit-scrollbar{display:none}
  .roles button{flex:none;padding:0 12px}
  .sample{grid-column:2;grid-row:1;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
  .top .theme{grid-column:3;grid-row:1;margin-left:0}
}

.stage{padding-block:24px 56px}
.split{grid-template-columns:408px minmax(0,1fr);gap:40px}
.side{gap:16px}
.side h2{font-size:var(--b-fs-xl)}
.side > p.small.muted.mono{font-family:var(--b-font);font-weight:600;color:var(--b-brand-ink);letter-spacing:0}

/* ---- téléphone : plein écran sous 900 px, cadre de maquette au-dessus ---- */
.phone{max-width:408px;background:var(--b-bg);border:0;border-radius:40px;padding:0;box-shadow:var(--b-sh-3),0 0 0 8px var(--b-surface),0 0 0 9px var(--b-line);margin:9px auto;overflow:hidden}
.screen{border-radius:0;background:var(--b-bg);background-image:var(--b-grad-mist);background-repeat:no-repeat;background-size:100% 380px;min-height:760px}
@media (max-width:899px){
  .stage{padding-top:0}
  .split{grid-template-columns:minmax(0,1fr);gap:24px}
  .phone{max-width:none;border-radius:0;box-shadow:none;margin:0 -16px;width:auto}
  .screen{min-height:calc(100dvh - 104px)}
}
.bar{background:transparent;border:0;min-height:64px;padding:8px 16px;gap:8px}
.bar b{font-family:var(--b-font-display);font-size:var(--b-fs-xl);font-weight:800;line-height:1.15}
.bar .back,.ibtn{display:inline-grid;place-items:center;width:44px;height:44px;flex:none;border:0;border-radius:var(--b-r-pill);background:transparent;color:var(--b-brand);padding:0}
.bar .back:hover,.ibtn:hover{background:var(--b-brand-soft)}
.body{padding:4px 16px 24px;gap:20px}
.phone .body{padding-bottom:24px}

/* ---- cartes : ombre douce, pas de bordure ---- */
.card,.panel,.blk,.kpi,.mcard,.resa,.sitecard,.lavcard,.cand,.grp,.wk,.rsec,.kstep,.nextcard,.result,.al,.alrow,.todo li,.upl,.docv,.ocr,.siterow,.form,.kpistrip{
  background:var(--b-surface);border:0;border-radius:var(--b-r-lg);box-shadow:var(--b-sh-2),var(--b-hairline)}
.card{padding:var(--b-s-5);gap:10px}
.panel{padding:var(--b-s-6);gap:16px}
.blk,.mcard,.resa,.sitecard,.lavcard,.cand,.grp,.wk,.kstep{padding:var(--b-s-4)}
.rsec{padding:16px}
.rsec legend{font-family:var(--b-font-display);font-size:var(--b-fs-md);font-weight:700}
.form{box-shadow:inset 0 0 0 1.5px var(--b-line)}
.al,.alrow{border-left:0;box-shadow:var(--b-sh-1),var(--b-hairline)}
.al.sev3,.alrow.sev3{box-shadow:inset 4px 0 0 var(--b-sev-crit),var(--b-sh-1)}
.al.sev2,.alrow.sev2{box-shadow:inset 4px 0 0 var(--b-sev-high),var(--b-sh-1)}
.al.done{box-shadow:inset 4px 0 0 var(--b-ok),var(--b-sh-1)}
.kstep[data-state="sent"]{box-shadow:inset 4px 0 0 var(--b-warn-fill),var(--b-sh-1)}.kstep[data-state="done"]{box-shadow:inset 4px 0 0 var(--b-ok),var(--b-sh-1)}
.ocr{box-shadow:inset 4px 0 0 var(--b-ok),var(--b-sh-1)}.ocr.warn{box-shadow:inset 4px 0 0 var(--b-warn-fill),var(--b-sh-1)}.ocr.bad{box-shadow:inset 4px 0 0 var(--b-danger),var(--b-sh-1)}
.docv{box-shadow:inset 4px 0 0 var(--b-brand),var(--b-sh-1)}
.redcard{background:var(--b-surface);box-shadow:inset 4px 0 0 var(--b-danger),var(--b-sh-2)}
.fiche{box-shadow:inset 0 0 0 2px var(--b-brand),var(--b-sh-2);border:0}
.alert{border-left:0;border-radius:var(--b-r-md);background:var(--b-danger-soft);color:var(--b-ink);font-size:var(--b-fs-sm);box-shadow:inset 4px 0 0 var(--b-danger)}
.resp{border-left:0;border-radius:var(--b-r-md);background:var(--b-warn-soft);color:var(--b-ink);font-size:var(--b-fs-sm);box-shadow:inset 4px 0 0 var(--b-warn-fill)}
.confirm{border:0;border-radius:var(--b-r-lg);background:var(--b-warn-soft);box-shadow:inset 0 0 0 1.5px var(--b-warn-fill)}
.crit{border:0;background:var(--b-surface-2);border-radius:var(--b-r-md);color:var(--b-ink-2)}
.mw{background:var(--b-brand-soft);box-shadow:inset 0 0 0 2px var(--b-brand)}
.wk.opp{background:var(--b-brand-soft);box-shadow:inset 0 0 0 2px var(--b-brand)}

/* ---- boutons ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--b-hit);min-width:var(--b-hit);padding:0 var(--b-s-5);border:0;border-radius:var(--b-r-md);background:var(--b-surface);color:var(--b-ink);font-size:var(--b-fs-md);font-weight:700;line-height:1.15;box-shadow:var(--b-sh-1),var(--b-hairline);transition:background var(--b-t-fast) var(--b-ease),transform var(--b-t-fast) var(--b-ease);text-decoration:none;touch-action:manipulation}
.btn:hover{background:var(--b-surface-2)}
.btn:active{transform:scale(.98)}
.btn.primary{background:var(--b-brand);color:var(--b-on-brand);box-shadow:var(--b-sh-brand)}
.btn.primary:hover{background:var(--b-brand-hover)}
.btn.ghost{background:transparent;color:var(--b-brand);box-shadow:none;padding:0 var(--b-s-3)}
.btn.ghost:hover{background:var(--b-brand-soft)}
.btn.soft{background:var(--b-brand-soft);color:var(--b-brand-ink);box-shadow:none}
.btn.danger{background:var(--b-surface);color:var(--b-danger);box-shadow:inset 0 0 0 1.5px var(--b-danger)}
.btn[disabled],.btn[aria-disabled="true"]{opacity:1;background:var(--b-surface-2);color:var(--b-ink-2);box-shadow:none;cursor:not-allowed;transform:none}
.btn.sm{min-height:44px;padding:0 14px;font-size:var(--b-fs-sm)}
.btn.ghost.sm{padding:0 10px}
.btn.lg,.cta .btn.primary,.sheet-f .btn.primary{min-height:var(--b-hit-lg);font-size:var(--b-fs-lg);border-radius:var(--b-r-lg)}
.btn .sub{display:block;font-size:var(--b-fs-sm);font-weight:500;opacity:.9}
.btn.stacked{flex-direction:column;gap:2px;padding-block:8px}
.btn-xl{min-height:72px;font-size:var(--b-fs-lg);border-radius:var(--b-r-xl)}
button.mod,dl.recap .mod{min-height:44px;padding:0 6px;font-size:var(--b-fs-sm);color:var(--b-brand);font-weight:700}
.tip{width:44px;height:44px;border:0;border-radius:50%;background:var(--b-surface-2);font-size:var(--b-fs-sm)}
.btnrow{gap:8px}
.cta{background:linear-gradient(to top,var(--b-bg) 70%,transparent);box-shadow:none;padding:12px 0 4px;gap:8px}
.cta .small.muted,.cta__note{text-align:center}

/* ---- pastilles = badges ---- */
.pill{min-height:28px;padding:2px 10px;font-size:var(--b-fs-sm);font-weight:600;line-height:1.2;border-radius:var(--b-r-pill);background:var(--b-brand-soft);color:var(--b-brand-ink);gap:6px}
.pill::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor;flex:none}
.pill.good{background:var(--b-ok-soft);color:var(--b-ok)}
.pill.warn,.pill.sun{background:var(--b-warn-soft);color:var(--b-warn)}
.pill.bad{background:var(--b-danger-soft);color:var(--b-danger)}
.pill.bad::before{border-radius:2px;transform:rotate(45deg)}
.pill.line{background:var(--b-surface-2);color:var(--b-ink-2);border:0}
.pill.line::before{background:transparent;box-shadow:inset 0 0 0 2px currentColor}
.pill.info{background:var(--b-info-soft);color:var(--b-info)}
.pill.warm{background:var(--b-warm-soft);color:var(--b-warm-ink)}
.pill.plain::before{display:none}

/* ---- champs ---- */
input[type=text],input[type=email],input[type=tel],input[type=number],input[type=date],input[type=time],input[type=search],input[type=password],select,textarea{
  min-height:52px;border:0;border-radius:var(--b-r-md);background:var(--b-surface);color:var(--b-ink);font-size:var(--b-fs-md);padding:0 var(--b-s-4);box-shadow:inset 0 0 0 1.5px var(--b-line-strong);font-family:inherit}
textarea{padding:12px var(--b-s-4);min-height:96px;line-height:1.5}
input:focus,select:focus,textarea:focus{outline:none;box-shadow:inset 0 0 0 2px var(--b-brand),0 0 0 4px color-mix(in srgb,var(--b-brand) 22%,transparent)}
input[aria-invalid="true"]{box-shadow:inset 0 0 0 2px var(--b-danger)}
td input[type=number],td input.cap,.lavcard input{min-height:44px;padding:0 8px}
label.small,.form label,.ctl label,.siterow label,.lavcard label,.oppgrid label,.rule > label:first-child{font-size:var(--b-fs-sm);font-weight:600}
input[type=checkbox],input[type=radio]{width:22px;height:22px;accent-color:var(--b-brand);flex:none}
.consent label,.choice label,.chk label,.rule label.inline,.days label,.form .choice label{min-height:44px;font-size:var(--b-fs-sm);align-items:center}
.consent label{align-items:flex-start;padding:6px 0}
.switch{min-height:44px;align-items:center;font-size:var(--b-fs-md)}
.switch input{width:52px;height:32px;background:var(--b-line-strong)}
.switch input::after{top:3px;left:3px;width:26px;height:26px;background:#fff;box-shadow:var(--b-sh-1);transition:left var(--b-t) var(--b-ease-spring)}
.switch input:checked::after{left:23px}
.radio3 label{min-height:56px;border:0;box-shadow:inset 0 0 0 1.5px var(--b-line);font-size:var(--b-fs-sm)}
.radio3 label:has(input:checked){box-shadow:inset 0 0 0 2px var(--b-brand);background:var(--b-brand-soft)}
.chk label{border:0;box-shadow:inset 0 0 0 1.5px var(--b-line);padding:0 14px}
.days label{border:0;box-shadow:inset 0 0 0 1.5px var(--b-line);padding:0 12px}
.err{color:var(--b-danger);font-weight:600}
.warnline{color:var(--b-warn)}.okline{color:var(--b-ok)}
.motif{color:var(--b-warn)}

/* ---- sélecteurs : pastilles, segments, filtres ---- */
.chips button,.tags button,.filters button,.subnav button,.stagebar button,.sitebar button,.seg button,.segs button,.tabs3 button,.etat3 button,.ratebtns button,.results button,.searchres button,.sugg button{min-height:44px;font-size:var(--b-fs-sm)}
.chips button,.tags button,.filters button,.subnav button,.stagebar button{border:0;border-radius:var(--b-r-pill);padding:0 var(--b-s-4);background:var(--b-surface);color:var(--b-ink);font-weight:600;box-shadow:var(--b-sh-1),inset 0 0 0 1.5px var(--b-line)}
.chips button[aria-pressed="true"],.tags button[aria-pressed="true"],.filters button[aria-pressed="true"],.subnav button[aria-pressed="true"],.stagebar button[aria-pressed="true"]{background:var(--b-brand-soft);color:var(--b-brand-ink);box-shadow:inset 0 0 0 2px var(--b-brand)}
.subnav{border-bottom:0;padding-bottom:0}
.seg,.segs{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;padding:4px;border:0;border-radius:var(--b-r-md);background:var(--b-surface-2)}
.seg{grid-template-columns:none}
.seg button,.segs button{border:0;border-radius:10px;background:transparent;color:var(--b-ink-2);font-weight:600;padding:4px}
.seg button[aria-pressed="true"],.segs button[aria-pressed="true"]{background:var(--b-surface);color:var(--b-ink);box-shadow:var(--b-sh-1)}
.tabs3{border-bottom:0;gap:4px;padding:4px;border-radius:var(--b-r-md);background:var(--b-surface-2);flex-wrap:wrap}
.tabs3 button{border:0;border-radius:10px;padding:0 14px;color:var(--b-ink-2)}
.tabs3 button[aria-selected="true"]{background:var(--b-surface);color:var(--b-ink);box-shadow:var(--b-sh-1)}
.sitebar button{border:0;box-shadow:var(--b-sh-1),inset 0 0 0 1.5px var(--b-line)}
.sitebar button[aria-pressed="true"]{background:var(--b-brand-soft);box-shadow:inset 0 0 0 2px var(--b-brand)}
.opt,.pickrow,.prov{border:0;border-radius:var(--b-r-lg);box-shadow:var(--b-sh-1),inset 0 0 0 1.5px var(--b-line);min-height:56px;padding:12px 16px}
.opt[aria-pressed="true"],.pickrow[aria-pressed="true"]{background:var(--b-brand-soft);box-shadow:inset 0 0 0 2px var(--b-brand)}
.pickrow .dot{width:22px;height:22px;border:2px solid var(--b-line-strong)}
.pickrow[aria-pressed="true"] .dot{border:7px solid var(--b-brand)}
.results button,.searchres button,.sugg button{border:0;box-shadow:inset 0 0 0 1.5px var(--b-line);border-radius:var(--b-r-md);padding:8px 14px}
.etat3 button{border:0;box-shadow:var(--b-sh-1),inset 0 0 0 1.5px var(--b-line);border-radius:var(--b-r-lg);min-height:72px}
.etat3 button[aria-pressed="true"]{background:var(--b-brand-soft);box-shadow:inset 0 0 0 2px var(--b-brand)}
details.fold{border-top:0;padding-top:0}
details.fold > summary{min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:var(--b-fs-md);color:var(--b-brand)}
details.fold > summary::before{content:none}
details.fold > summary::after{content:"";flex:none;width:10px;height:10px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-3px);transition:transform var(--b-t) var(--b-ease)}
details.fold[open] > summary::after{transform:rotate(-135deg)}
details summary{min-height:44px}
details.demo{border:0;border-radius:var(--b-r-lg);background:var(--b-surface-2);padding:8px 16px 12px}
details.demo > summary{display:flex;align-items:center;font-size:var(--b-fs-sm);color:var(--b-ink-2)}
.legend{color:var(--b-ink-2)}

/* ---- tableaux ---- */
table{font-size:var(--b-fs-sm)}
th{font-size:var(--b-fs-sm);text-transform:none;letter-spacing:0;color:var(--b-ink-2)}
th,td{border-bottom:0;box-shadow:inset 0 -1px 0 var(--b-line);padding:10px 12px}
td.n,th.n{font-family:var(--b-font)}
.tw{border-radius:var(--b-r-md)}
@media (max-width:640px){table.stack tr{border:0;box-shadow:var(--b-sh-1),var(--b-hairline);border-radius:var(--b-r-lg);padding:8px 14px}table.stack td{box-shadow:none}table.stack td::before{font-size:var(--b-fs-sm)}}

/* ---- divers V10 en tailles V11 ---- */
.kpi .v,.kpistrip .v,.price,.timer,.balance .big{font-family:var(--b-font-display);font-weight:800;letter-spacing:-.02em}
.kpistrip .l,.kpi .l{font-size:var(--b-fs-sm)}
.facts2,.kv,dl.recap,.log,.check,.nlist,.choice label,.ladder div,.rule > label:first-child,.rule label.inline,.weekrow,.chkline,.todo li,.critrow{font-size:var(--b-fs-sm)}
.track ol,.tile,.tile .net,.badges span,.dots6,.steps8 button,.ticks,.map text,.prog4,.acctrow .v,.bell b{font-size:var(--b-fs-sm)}
.steps8 button{min-height:44px}
.acctrow{min-height:56px}
.ph{font-size:var(--b-fs-sm);border-radius:var(--b-r-md)}
pre.csv{font-size:var(--b-fs-sm)}
.qty button{width:44px;height:44px;border:0;border-radius:50%;background:var(--b-surface);box-shadow:var(--b-hairline)}
.stars5 button,.critrow .mini button,.ratebtns button{min-width:44px;min-height:44px;color:var(--b-line-strong)}
.stars5 button.on,.critrow .mini button.on,.ratebtns button.on{color:var(--b-warm)}
.gauge{height:12px;border-radius:var(--b-r-pill);background:var(--b-surface-2)}
.gauge i{background:var(--b-brand);border-radius:inherit}
.lvl i{width:10px;height:10px}
.toast{background:var(--b-ink);color:var(--b-bg);border-radius:var(--b-r-lg);padding:12px 16px;font-size:var(--b-fs-md);font-weight:500;box-shadow:var(--b-sh-3);min-height:56px;display:flex;align-items:center;gap:12px}
.toast.float{animation:b-toast var(--b-t-slow) var(--b-ease-spring)}
.sheet-bg{background:rgba(6,20,18,.48);backdrop-filter:blur(2px);animation:b-fade var(--b-t) var(--b-ease)}
.sheet{background:var(--b-raised);box-shadow:var(--b-sh-3);border-radius:var(--b-r-xl) 0 0 var(--b-r-xl);animation:b-left var(--b-t-slow) var(--b-ease-out)}
.screen .sheet,.sheet.bottom{border-radius:var(--b-r-xl) var(--b-r-xl) 0 0;animation:b-up var(--b-t-slow) var(--b-ease-out)}
.screen .sheet::before{content:"";width:40px;height:5px;border-radius:3px;background:var(--b-line-strong);opacity:.6;margin:10px auto 0;flex:none}
@media (max-width:640px){.sheet{border-radius:var(--b-r-xl) var(--b-r-xl) 0 0;animation-name:b-up}}
.sheet-h{border-bottom:0;padding:12px 20px}
.sheet-h h3{font-size:var(--b-fs-lg)}
.sheet-h .x{flex:none;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;font-size:0;color:var(--b-brand)}
.sheet-h .x::before{content:"";width:24px;height:24px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round'%3E%3Cpath d='M6.5 6.5l11 11M17.5 6.5l-11 11'/%3E%3C/svg%3E") center/24px no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round'%3E%3Cpath d='M6.5 6.5l11 11M17.5 6.5l-11 11'/%3E%3C/svg%3E") center/24px no-repeat}
.sheet-h .x:hover{background:var(--b-brand-soft)}
.sheet-b{padding:4px 20px 20px;gap:16px}
.sheet-f{border-top:0;padding:12px 20px 20px}
.tabbar{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);grid-template-columns:none;min-height:var(--b-tabbar-h);border-top:0;background:color-mix(in srgb,var(--b-raised) 92%,transparent);backdrop-filter:saturate(1.4) blur(12px);box-shadow:0 -1px 0 var(--b-line);position:sticky;bottom:0;z-index:6;padding-bottom:env(safe-area-inset-bottom)}
.tabbar button{display:grid;justify-items:center;align-content:center;gap:2px;min-height:var(--b-tabbar-h);font-size:var(--b-fs-sm);font-weight:500;color:var(--b-ink-2);white-space:nowrap;padding:0 2px}
.tabbar button[aria-current="page"]{color:var(--b-brand);font-weight:600}
.tabbar button b.n{top:6px;left:calc(50% + 10px);background:var(--b-danger);color:var(--b-on-danger);font-size:.8125rem;min-width:22px;height:22px;display:grid;place-items:center;padding:0 6px;border-radius:11px}
.gnav button{min-height:44px;display:flex;align-items:center;gap:12px;border-radius:var(--b-r-md);color:var(--b-ink-2)}
.gnav button[aria-current="page"]{background:var(--b-brand-soft);color:var(--b-brand-ink);box-shadow:none}
.lavhead,.tbar{background:transparent;border:0;min-height:64px}
.tbar{color:var(--b-ink)}.tbar button{color:var(--b-brand);min-height:44px}
.plate{display:inline-flex;align-items:center;gap:10px;justify-content:center;padding:8px 16px 8px 8px;border-radius:10px;background:#FFFFFF;color:#0B0B0B;border:0;box-shadow:inset 0 0 0 2px #0B0B0B;font-family:var(--b-font-mono);font-weight:700;font-size:var(--b-fs-2xl);letter-spacing:.06em}
.plate::before{content:"F";display:grid;place-items:center;width:28px;align-self:stretch;border-radius:6px;background:#1D4ED8;color:#FFFFFF;font-size:1rem;letter-spacing:0}
.plate.foreign::before{content:"?";background:#5E726F}
.balance{background:var(--b-grad-water);color:#fff}

/* ---- densité bureau : back-office et commercial (≥ 900 px uniquement) ---- */
@media (min-width:900px){
  .b-dense .small,.b-dense table,.b-dense th,.b-dense .legend,.b-dense .facts2,.b-dense .kv,.b-dense .log,.b-dense .pill,.b-dense .b-meta,.b-dense .b-hint,.b-dense .b-list__sub,.b-dense .b-list__meta{font-size:.875rem}
  .b-dense .pill{min-height:24px}
}

/* ===================================================================
   V11 : composants ajoutés au prototype
   =================================================================== */
.v11-top{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:64px;padding:8px 16px}
.v11-top .b-meta{margin:0}
.v11-top h2{font-size:var(--b-fs-xl);font-weight:800;line-height:1.15}
.v11-hello{display:grid;gap:2px}
.bellbtn{position:relative}
.bellbtn .b-count{position:absolute;top:-2px;right:-2px}
.b-pay .b-meta{min-width:0}
.b-pay__line > :first-child{min-width:0}
.recap-txt{min-width:0;overflow-wrap:anywhere}
.slot-day{font-weight:600}
.v11-stack{display:grid;gap:var(--b-s-3)}
.v11-note{display:flex;gap:10px;align-items:flex-start;color:var(--b-ink-2);font-size:var(--b-fs-sm)}
.v11-note .b-icon{flex:none;margin-top:1px}
.v11-photoguide{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.v11-photoguide > div{display:grid;gap:6px;padding:12px;border-radius:var(--b-r-md);background:var(--b-surface-2);font-size:var(--b-fs-sm)}
.v11-photoguide b{display:flex;gap:6px;align-items:center}
.v11-ph{aspect-ratio:4/3;border-radius:10px;display:grid;place-items:end start;padding:6px;color:#fff;font-weight:600;font-size:var(--b-fs-sm);background:linear-gradient(160deg,#6c7f7c,#2f403e)}
.v11-ph.after{background:linear-gradient(160deg,#3fb59a,#0c5a4a)}
.v11-ph.warm{background:linear-gradient(160deg,#c8826f,#7a3324)}
.b-choice > button{cursor:pointer}
.b-cal__day{cursor:pointer}
.b-slot{cursor:pointer}
.b-slot .b-badge{justify-self:start}
.b-slot__sub{font-size:var(--b-fs-sm);color:var(--b-ink-2)}
.b-slot[aria-pressed="true"] .b-slot__sub{color:inherit}
.b-slot--tour .b-slot__time,.b-slot--tour .b-slot__price,.b-slot--tour .b-slot__sub{position:relative;z-index:1}
.b-celebrate-check{width:72px;height:72px}
.b-state .b-meta{margin:0}
.phone .b-tabbar{position:sticky;bottom:0}
.phone .b-cta{margin:0 -16px}
.b-cta .b-btn{width:100%}
.screen > .b-tabbar{margin-top:auto}
.b-list > li{display:block}
.b-list__item > span:nth-child(2){min-width:0}
.b-wallet .b-gauge{position:relative}
.wx-banner{display:flex;gap:10px;align-items:center}
.b-swipe{touch-action:pan-y}
.sev-dot{display:inline-block;width:10px;height:10px;border-radius:50%}
.v11-kbd-help{display:flex;flex-wrap:wrap;gap:8px 14px;color:var(--b-ink-2);font-size:var(--b-fs-sm)}
.v11-kbd-help span{display:inline-flex;gap:6px;align-items:center}
.v11-mail{width:100%;min-height:240px;line-height:1.55}
.v11-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.v11-steps li{display:grid;gap:4px;padding:14px;border-radius:var(--b-r-lg);background:var(--b-surface);box-shadow:var(--b-sh-1),var(--b-hairline)}
.v11-steps li b{display:flex;gap:8px;align-items:center}
.v11-steps li .n{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--b-surface-2);color:var(--b-ink-2);font-weight:800;flex:none}
.v11-steps li[data-s="done"] .n{background:var(--b-ok);color:var(--b-surface)}
.v11-steps li[aria-current="step"]{box-shadow:inset 0 0 0 2px var(--b-brand),var(--b-sh-2)}
.v11-steps li[aria-current="step"] .n{background:var(--b-brand);color:var(--b-on-brand)}
@media (max-width:899px){.v11-steps{grid-template-columns:minmax(0,1fr)}}
.v11-photos3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
@media (max-width:640px){.v11-photos3{grid-template-columns:repeat(2,minmax(0,1fr))}}
.v11-photo{position:relative;aspect-ratio:4/3;border-radius:var(--b-r-md);overflow:hidden;background:linear-gradient(160deg,#5E726F,#2B3A38);color:#fff;margin:0}
.v11-photo span{position:absolute;left:6px;right:6px;bottom:6px;padding:4px 8px;border-radius:8px;background:rgba(0,0,0,.62);font-family:var(--b-font-mono);font-size:var(--b-fs-sm);line-height:1.3}
.v11-two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px}
@media (max-width:1100px){.v11-two{grid-template-columns:minmax(0,1fr)}}
.v11-paper{padding:24px;display:grid;gap:12px;font-size:var(--b-fs-sm);line-height:1.45}
.v11-docthumb{display:grid;gap:5px;padding:8px 7px;align-content:start}
.v11-docthumb i{height:3px;background:#DCE5E2;display:block}
.v11-docthumb i:first-child{height:4px;background:#0A6B5F;border-radius:2px;width:60%}
.b-doc__thumb.b-paper{box-shadow:0 1px 2px rgba(0,0,0,.12)}
.v11-legend{display:flex;gap:16px;flex-wrap:wrap}
.v11-legend span{display:inline-flex;align-items:center;gap:6px}
.v11-legend i{width:12px;height:12px;border-radius:3px;display:inline-block}
.v11-grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:20px}
.offline-dot{display:inline-block}
@media (prefers-reduced-motion: reduce){.toast.float{animation:none}}
.b-mono{white-space:nowrap}
.v11-photoguide > div{align-content:start}
/* ---- Gestionnaire V11 : barre latérale + contenu ; pastilles de rubriques sous 900 px ---- */
.g-desk{display:grid;grid-template-columns:248px minmax(0,1fr);gap:0;border-radius:var(--b-r-xl);overflow:hidden;background:var(--b-bg);box-shadow:var(--b-sh-3),0 0 0 1px var(--b-line);min-height:760px}
.g-side{background:var(--b-surface);box-shadow:1px 0 0 var(--b-line);display:flex;flex-direction:column}
.g-brand{display:flex;align-items:center;gap:10px;padding:20px 20px 12px;font-family:var(--b-font-display);font-weight:800;font-size:1.25rem}
.g-content{padding:24px 28px 40px;display:grid;gap:24px;align-content:start;min-width:0;background-image:var(--b-grad-mist);background-repeat:no-repeat;background-size:100% 360px}
.g-mobnav{display:none}
.b-sidenav a{cursor:pointer}
@media (max-width:899px){
  .g-desk{grid-template-columns:minmax(0,1fr);border-radius:0;box-shadow:none;margin:0 -16px;min-height:0}
  .g-side{display:none}.g-mobnav{display:block}
  .g-content{padding:12px 16px 32px}
  .g-site .g-hide-m{display:none}
}
.g-site{grid-template-columns:auto minmax(0,1fr) auto auto}
@media (max-width:899px){.g-site{grid-template-columns:auto minmax(0,1fr) auto !important}}
.g-content .panel h3{font-size:var(--b-fs-lg)}
input.b-switch{width:52px;height:32px;accent-color:auto}
.b-check input[type=checkbox]{width:24px;height:24px}
.g-content .b-ring{--size:112px !important}
.g-content .b-card.b-row{gap:16px !important}
.g-content .b-amount{font-size:clamp(1.5rem,2.2vw,2rem)}
.g-content,.body,.panel,.side{grid-template-columns:minmax(0,1fr)}
@media (max-width:640px){.inv-item{grid-template-columns:auto minmax(0,1fr)}.inv-item > .btnrow{grid-column:2}}
.v11-tunnel{max-width:560px;width:100%;margin:0 auto}
.panel .b-cta{position:static;background:none;margin:0;padding:8px 0 0}
/* ---- Laveur V11 : mode terrain (sombre + fort contraste proposés en tournée) ---- */
.phone[data-contrast="high"]{color-scheme:dark;
  --b-bg:#000000; --b-surface:#0E1716; --b-surface-2:#16221F; --b-raised:#1C302D; --b-ink:#FFFFFF; --b-ink-2:#D9E6E3; --b-ink-3:#C0D2CE; --b-line:#8FA6A1; --b-line-strong:#8FA6A1;
  --b-brand:#46E0BC; --b-brand-hover:#6BEACB; --b-brand-press:#2FB094; --b-on-brand:#00140F; --b-brand-soft:#123A33; --b-brand-ink:#7FE3CB; --b-brand-2:#2AA3C4;
  --b-warm:#F2A877; --b-warm-soft:#3A2618; --b-warm-ink:#F7C39E; --b-info:#7CC8EA; --b-info-soft:#12303D; --b-ok:#5ACF92; --b-ok-soft:#123423; --b-warn:#F3BD55; --b-warn-soft:#3A2C0E; --b-warn-fill:#F3BD55; --b-on-warn-fill:#231700;
  --b-danger:#FF8A7A; --b-danger-soft:#3D1A16; --b-on-danger:#2A0703; --b-toast-accent:#0A6B5F; --b-focus:#7CC8EA;
  --b-sev-crit:#FF8A7A; --b-sev-crit-soft:#3D1A16;
  --b-grad-mist:radial-gradient(120% 70% at 0% 0%, rgba(60,199,168,.12), transparent 60%), radial-gradient(90% 60% at 100% 0%, rgba(42,163,196,.10), transparent 60%);
  --b-grad-warm:linear-gradient(135deg, #2E2016 0%, #3A2618 100%);
  --b-sh-1:0 1px 0 rgba(255,255,255,.03) inset, 0 1px 2px rgba(0,0,0,.4); --b-sh-2:0 1px 0 rgba(255,255,255,.04) inset, 0 8px 20px -8px rgba(0,0,0,.6); --b-sh-3:0 1px 0 rgba(255,255,255,.05) inset, 0 24px 48px -12px rgba(0,0,0,.7); --b-sh-brand:0 10px 24px -12px rgba(60,199,168,.45); --b-hairline:inset 0 0 0 1px rgba(255,255,255,.08);
  --b-swipe-arrow:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2300140F' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h13M13 6l6 6-6 6'/%3E%3C/svg%3E");
  background:var(--b-bg); color:var(--b-ink); font-size:var(--b-fs-md)}
.phone[data-contrast="high"] .screen{background-color:var(--b-bg);color:var(--b-ink)}
.tour-top{display:grid;gap:10px;padding:8px 16px 0}
.tour-top .b-row{min-height:44px}
.deck-dots{display:flex;justify-content:center;gap:6px}
.deck-dots i{width:8px;height:8px;border-radius:50%;background:var(--b-line-strong)}
.deck-dots i[aria-current="true"]{width:24px;border-radius:4px;background:var(--b-brand)}
.veh{display:grid;gap:16px;padding:24px;border-radius:var(--b-r-xl);background:var(--b-surface);box-shadow:var(--b-sh-2),var(--b-hairline)}
.big-num{font-family:var(--b-font-display);font-size:2.25rem;font-weight:800;line-height:1;white-space:nowrap}
.b-tile{cursor:pointer}
.b-camera__shoot{cursor:pointer}
.v11-tunnel .grid,.v11-tunnel .form .grid{grid-template-columns:minmax(0,1fr)}.v11-tunnel .form{box-shadow:none;padding:0;background:none}
/* ===== Back-office V11 (ds/admin.html) ===== */
.b-sidenav a .b-count{ margin-left:auto; }
.b-count--soft{ background:var(--b-surface-2); color:var(--b-ink-2); }
.a-split{ display:grid; grid-template-columns:340px minmax(0,1fr); min-height:760px; min-width:0; }
.a-list{ background:var(--b-surface); box-shadow:1px 0 0 var(--b-line); display:flex; flex-direction:column; min-width:0; }
.a-list__head{ padding:16px 16px 8px; display:grid; gap:10px; }
.a-list .b-list{ border-radius:0; box-shadow:none; }
.a-list .b-list__item{ grid-template-columns:minmax(0,1fr) auto; align-items:start; }
.a-list .b-list__title{ display:block; }
.a-keys{ margin-top:auto; padding:12px 16px; display:flex; flex-wrap:wrap; gap:8px 14px; color:var(--b-ink-2); box-shadow:0 -1px 0 var(--b-line); font-size:var(--b-fs-sm); }
.a-keys span{ display:inline-flex; align-items:center; gap:6px; }
.a-dossier{ padding:20px 28px 28px; display:grid; gap:20px; align-content:start; min-width:0; background-image:var(--b-grad-mist); background-repeat:no-repeat; background-size:100% 260px; }
.a-head{ display:flex; gap:16px; align-items:flex-start; justify-content:space-between; flex-wrap:wrap; }
.a-actions{ display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.a-checks{ width:100%; border-collapse:collapse; }
.a-checks th{ text-align:left; font-weight:600; color:var(--b-ink-2); padding:8px 12px; font-size:var(--b-fs-sm); }
.a-checks td{ padding:12px; box-shadow:inset 0 1px 0 var(--b-line); vertical-align:middle; }
.a-checks td:first-child{ width:34%; }
.a-ok{ color:var(--b-ok); font-weight:600; display:inline-flex; gap:6px; align-items:center; }
.a-warn{ color:var(--b-warn); font-weight:600; display:inline-flex; gap:6px; align-items:center; }
.a-photos{ display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:12px; }
.a-photo{ position:relative; aspect-ratio:4/3; border-radius:var(--b-r-md); overflow:hidden; background:linear-gradient(160deg,#5E726F,#2B3A38); color:#fff; }
.a-photo svg{ position:absolute; inset:18% 14%; width:72%; height:64%; opacity:.5; }
.a-photo span{ position:absolute; left:6px; right:6px; bottom:6px; padding:4px 8px; border-radius:8px; background:rgba(0,0,0,.62); font-family:var(--b-font-mono); font-size:var(--b-fs-sm); line-height:1.3; }
.a-two{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:20px; }
.a-mail{ width:100%; min-height:220px; padding:14px 16px; border:0; border-radius:var(--b-r-md); background:var(--b-surface); color:var(--b-ink); box-shadow:inset 0 0 0 1.5px var(--b-line-strong); font:inherit; line-height:1.55; resize:vertical; }
.a-mail:focus{ outline:none; box-shadow:inset 0 0 0 2px var(--b-brand), 0 0 0 4px color-mix(in srgb, var(--b-brand) 22%, transparent); }
.a-steps{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:12px; }
.a-steps li{ display:grid; gap:4px; padding:14px; border-radius:var(--b-r-lg); background:var(--b-surface); box-shadow:var(--b-sh-1), var(--b-hairline); }
.a-steps li b{ display:flex; gap:8px; align-items:center; }
.a-steps li .n{ width:28px; height:28px; border-radius:50%; display:grid; place-items:center; background:var(--b-surface-2); color:var(--b-ink-2); font-weight:800; flex:none; }
.a-steps li[data-s="done"] .n{ background:var(--b-ok); color:var(--b-surface); }
.a-steps li[aria-current="step"]{ box-shadow: inset 0 0 0 2px var(--b-brand), var(--b-sh-2); }
.a-steps li[aria-current="step"] .n{ background:var(--b-brand); color:var(--b-on-brand); }
.a-kpis{ display:grid; grid-template-columns:repeat(4, minmax(0,1fr)); gap:16px; }
.a-kpi{ padding:16px 18px; border-radius:var(--b-r-lg); background:var(--b-surface); box-shadow:var(--b-sh-1), var(--b-hairline); display:grid; gap:4px; }
.a-auto{ grid-template-columns:auto minmax(0,1fr) auto auto !important; }
@media (max-width: 1100px){ .a-two{ grid-template-columns:minmax(0,1fr); } .a-kpis{ grid-template-columns:repeat(2, minmax(0,1fr)); } }
@media (max-width: 899px){
  .a-split{ grid-template-columns:minmax(0,1fr); min-height:0; }
  .a-list{ box-shadow:0 1px 0 var(--b-line); }
  .a-keys{ display:none; }
  .a-dossier{ padding:16px; }
  .a-steps{ grid-template-columns:minmax(0,1fr); }
  .a-photos{ grid-template-columns:repeat(2, minmax(0,1fr)); }
  .a-checks thead{ display:none; } .a-checks td{ display:block; width:auto!important; box-shadow:none; padding:4px 0; } .a-checks tr{ display:block; padding:10px 0; box-shadow:inset 0 1px 0 var(--b-line); }
}
.bo-desk .a-split{background:var(--b-bg);border-radius:var(--b-r-lg);overflow:hidden;box-shadow:var(--b-sh-1),var(--b-hairline)}
.bo-desk .a-list .b-list__item[aria-selected="true"]{background:var(--b-brand-soft,var(--b-surface-2));box-shadow:inset 3px 0 0 var(--b-brand)}
.bo-desk .kpistrip{margin-bottom:4px}
.bo-search{position:relative;min-width:min(420px,100%)}
@media (max-width:899px){.bo-search{min-width:0;width:100%}.bo-desk .a-split{border-radius:var(--b-r-md)}}
.a-list .b-list__sub{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.a-list .b-list__item{padding-block:10px}
@media (max-width:1399px){.bo-desk .a-two{grid-template-columns:minmax(0,1fr)}}
.a-dossier{grid-template-columns:minmax(0,1fr)}.a-checks th,.a-checks td{white-space:normal;overflow-wrap:anywhere}.a-head > div{min-width:0}
@media (min-width:900px) and (max-width:1399px){.bo-desk .a-split{grid-template-columns:300px minmax(0,1fr)}.bo-desk .a-dossier{padding:20px}}
.a-steps li{min-width:0;overflow-wrap:break-word;hyphens:auto}
@media (min-width:900px){.bo-desk .a-list > .b-list{max-height:620px;overflow:auto}}
/* ===== Commercial V11 (ds/commercial.html) ===== */
.v11-pipe{display:grid;gap:16px;background-image:var(--b-grad-mist);background-repeat:no-repeat;background-size:100% 200px}
.v11-pipe__kpis{display:flex;flex-wrap:wrap;gap:12px 32px}.v11-pipe__kpis > div{display:grid;gap:2px}
.v11-cols{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.v11-col h3{font-size:var(--b-fs-sm);font-weight:700;margin:0 0 8px;padding:0 4px}
.v11-col ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.v11-deal{display:grid;gap:6px;width:100%;text-align:left;padding:12px;border:0;font:inherit;color:inherit;cursor:pointer;min-height:44px}
.v11-deal[aria-current="true"]{box-shadow:inset 0 0 0 2px var(--b-brand),var(--b-sh-2)}
.v11-deal .b-badge{justify-self:start}
.v11-fiche{display:grid;grid-template-columns:300px minmax(0,1fr);background:var(--b-surface);border-radius:var(--b-r-lg);box-shadow:var(--b-sh-1),var(--b-hairline);overflow:hidden}
.v11-fiche__side{padding:20px;display:grid;gap:14px;align-content:start;box-shadow:1px 0 0 var(--b-line);min-width:0}
.v11-fiche__main{padding:20px 24px 28px;display:grid;gap:18px;align-content:start;min-width:0;background-image:var(--b-grad-mist);background-repeat:no-repeat;background-size:100% 220px;background-color:var(--b-bg)}
.v11-kbar{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.v11-kbar button{display:grid;gap:2px;width:100%;text-align:left;padding:10px 0 4px;border:0;background:none;font:inherit;color:var(--b-ink);cursor:pointer;box-shadow:inset 0 4px 0 var(--b-line);min-height:44px}
.v11-kbar li[data-s="done"] button,.v11-kbar li[aria-current="step"] button{box-shadow:inset 0 4px 0 var(--b-brand)}
.v11-kbar li[aria-current="step"] b{color:var(--b-brand)}
.v11-grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}
.v11-paper{display:grid;gap:12px;align-content:start;padding:28px;background:var(--b-surface);border-radius:var(--b-r-md);box-shadow:var(--b-sh-2),var(--b-hairline);min-width:0}
.v11-paper .logo{width:24px;height:24px;border-radius:6px;display:grid;place-items:center;background:var(--b-brand);color:var(--b-on-brand)}
.v11-paper__pilot{padding:12px 14px;border-radius:var(--b-r-md);background:var(--b-brand-soft,var(--b-surface-2));margin:0}
.v11-fiche .kstep{padding:16px;border-radius:var(--b-r-lg);background:var(--b-surface);box-shadow:var(--b-sh-1),var(--b-hairline);display:grid;gap:10px}
@media (max-width:1100px){.v11-cols{grid-template-columns:repeat(5,minmax(200px,1fr));overflow-x:auto;padding-bottom:8px;scroll-snap-type:x mandatory}.v11-col{scroll-snap-align:start}}
@media (max-width:899px){.v11-fiche{grid-template-columns:minmax(0,1fr)}.v11-fiche__side{box-shadow:0 1px 0 var(--b-line)}.v11-fiche__main{padding:16px}.v11-kbar{grid-template-columns:repeat(5,minmax(88px,1fr));overflow-x:auto}.v11-grid2{grid-template-columns:minmax(0,1fr)}.v11-paper{padding:18px}}
.v11-col,.v11-col li,.v11-deal{min-width:0}.v11-deal .b-badge{white-space:normal;max-width:100%;height:auto;min-height:24px}.v11-deal > span:first-child{gap:6px}.v11-deal b{overflow-wrap:anywhere}
.b-kv{display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px 16px;margin:0}.b-kv dt{color:var(--b-ink-2)}.b-kv dd{margin:0;min-width:0;overflow-wrap:anywhere}
.v11-fiche .kpis{grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}.v11-fiche .kpi .v{font-size:1.5rem;white-space:nowrap}
@media (max-width:899px){.bo-desk .b-kbd{display:none}}

/* ===== V11 Préparation restitution (DA V11 : élévation, 16 px mobile, cibles 44 px, couleur jamais seule) ===== */
:root{ --rs-ref:#3F7FB8; --rs-tem:#C8692E; --rs-pre:#14907A; }
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){ --rs-ref:#5B93D0; --rs-tem:#D07A40; --rs-pre:#239F84; } }
:root[data-theme="dark"]{ --rs-ref:#5B93D0; --rs-tem:#D07A40; --rs-pre:#239F84; }
.rs-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:16px}
.rs-tile{display:grid;gap:6px;align-content:start}
.rs-tile .b-amount{font-size:2rem}
.rs-tile--warn{box-shadow:var(--b-sh-2),inset 4px 0 0 var(--b-warn-fill)}
.rs-tile--danger{box-shadow:var(--b-sh-2),inset 4px 0 0 var(--b-danger)}
.rs-bar{display:flex;flex-wrap:wrap;gap:8px}
.rs-veh{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 16px;align-items:center;width:100%;min-height:72px;text-align:left;border:0;background:transparent;font:inherit;color:inherit;cursor:pointer;padding:12px 16px}
.rs-veh + .rs-veh{box-shadow:inset 0 1px 0 var(--b-line)}
.rs-veh:hover{background:var(--b-surface-2)}
.rs-veh__main{display:grid;gap:2px;min-width:0}
.rs-veh__sub{color:var(--b-ink-2);overflow-wrap:anywhere}
.rs-veh__next{font-weight:600}
.rs-list{display:grid;border-radius:var(--b-r-lg);background:var(--b-surface);box-shadow:var(--b-sh-2);overflow:hidden}
.rs-dmg{display:grid;grid-template-columns:96px minmax(0,1fr);gap:12px;align-items:start}
@media (max-width:420px){.rs-dmg{grid-template-columns:72px minmax(0,1fr)}}
.rs-thumb{position:relative;aspect-ratio:4/3;border-radius:var(--b-r-md);background:linear-gradient(160deg,#3A4A47,#17211F);overflow:hidden}
.rs-thumb::after{content:"";position:absolute;left:var(--x,30%);top:var(--y,35%);width:var(--w,34%);height:var(--h,24%);border:2px dashed #FFD27A;border-radius:40%}
.rs-thumb--none::after{display:none}
.rs-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px}
.rs-photo{display:grid;align-content:end;gap:2px;min-height:88px;padding:8px;border-radius:var(--b-r-md);background:linear-gradient(160deg,#3A4A47,#17211F);color:#FFFFFF;position:relative;overflow:hidden}
.rs-photo b{font-weight:600}
.rs-photo--dmg::before{content:"";position:absolute;left:56%;top:10%;width:30%;height:28%;border:2px dashed #FFD27A;border-radius:40%}
.rs-rule{font-family:var(--b-font-mono);overflow-wrap:anywhere}
.rs-frise{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.rs-frise li{display:flex}
.rs-frise button,.rs-frise span.rs-step{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:8px 14px;border-radius:var(--b-r-pill);border:0;font:inherit;background:var(--b-surface-2);color:var(--b-ink)}
.rs-frise [data-s="done"]{background:var(--b-ok-soft);color:var(--b-ink)}
.rs-frise [data-s="now"]{background:var(--b-brand-soft);color:var(--b-brand-ink);font-weight:600}
.rs-rows{display:grid;gap:0}
.rs-row{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1.4fr) auto;gap:8px 16px;align-items:center;padding:12px 0;box-shadow:inset 0 -1px 0 var(--b-line)}
.rs-row--head{color:var(--b-ink-2);font-weight:600}
.rs-row > *{min-width:0;overflow-wrap:anywhere}
@media (max-width:760px){.rs-row{grid-template-columns:minmax(0,1fr)}.rs-row--head{display:none}.rs-row [data-l]::before{content:attr(data-l) " : ";color:var(--b-ink-2)}}
.rs-chart{display:grid;gap:12px}
.rs-groups{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:16px}
.rs-grp{display:grid;gap:6px}
.rs-bars{display:flex;align-items:flex-end;gap:2px;height:140px;padding-bottom:0;box-shadow:inset 0 -1px 0 var(--b-line-strong)}
.rs-bars i{flex:1;display:block;border-radius:4px 4px 0 0;min-height:2px;height:calc(var(--h) * 1%)}
.rs-bars i.ref{background:var(--rs-ref)}.rs-bars i.tem{background:var(--rs-tem)}.rs-bars i.pre{background:var(--rs-pre)}
.rs-legend{display:flex;flex-wrap:wrap;gap:12px 20px}
.rs-legend span{display:inline-flex;align-items:center;gap:8px}
.rs-legend i{width:14px;height:14px;border-radius:4px;display:inline-block}
.rs-line svg{width:100%;height:auto;display:block}
.rs-line .grid{stroke:var(--b-line);stroke-width:1}
.rs-line .m{fill:none;stroke:var(--rs-pre);stroke-width:2}
.rs-line .e{fill:none;stroke:var(--rs-ref);stroke-width:2;stroke-dasharray:6 5}
.rs-line text{fill:var(--b-ink-2);font-size:16px}
.rs-line svg{max-width:520px}
.rs-reading{display:grid;gap:8px;margin:0;padding-left:20px}
.rs-letter{width:100%;min-height:280px;font:inherit;line-height:1.5;padding:12px;border-radius:var(--b-r-md);border:1.5px solid var(--b-line-strong);background:var(--b-surface);color:var(--b-ink)}
.rs-big{font-size:1.375rem;line-height:1.4;font-weight:600;padding:16px;border-radius:var(--b-r-lg);background:var(--b-surface-2)}
.rs-quotes{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:16px}
.rs-cal{display:grid;gap:20px}
.rs-cal__m{display:grid;gap:8px}
.rs-ms{display:inline-flex;align-items:center;gap:4px;min-height:32px;padding:2px 10px;border-radius:var(--b-r-pill);background:var(--b-surface-2);font-weight:600}
.rs-ms[data-k="D"]{background:var(--b-brand-soft);color:var(--b-brand-ink)}.rs-ms[data-k="J"]{background:var(--b-warn-soft);color:var(--b-ink)}.rs-ms[data-k="R"]{background:var(--b-info-soft);color:var(--b-ink)}
.rs-paper{display:grid;gap:8px;padding:20px;border-radius:var(--b-r-lg);background:#FFFFFF;color:#0E2321;box-shadow:var(--b-sh-2)}
.rs-paper .muted2{color:#455A57}
.rs-pages{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:16px}
.rs-code{font-family:var(--b-font-mono);white-space:pre-wrap;overflow-wrap:anywhere;padding:12px;border-radius:var(--b-r-md);background:var(--b-surface-2);margin:0}
.rs-q{display:grid;gap:8px;border:0;padding:0;margin:0}
.rs-q .b-seg{max-width:520px}
.rs-err-line{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 0;box-shadow:inset 0 -1px 0 var(--b-line)}
.rs-cap-top{display:flex;justify-content:space-between;gap:8px;align-items:center}
.rs-qc{display:flex;gap:8px;align-items:center;padding:12px 16px;border-radius:var(--b-r-md);background:var(--b-warn-soft);color:var(--b-ink);font-weight:600}
.rs-qc--ok{background:var(--b-ok-soft)}
.rs-dense .rs-row{padding:8px 0}
.rep-desk .b-tabbar{position:sticky;bottom:0}
.rs-amt{white-space:normal;overflow-wrap:anywhere;line-height:1.25}
.rs-tile .b-amount{white-space:normal;overflow-wrap:anywhere}
.g-content .b-stack > *, .g-content .b-card{min-width:0}
/* ===== V11.2 : zones cliquables ≥ 44 px (cases à cocher, interrupteurs, curseurs, liens d'accord) sans changer le dessin ni la mise en page ===== */
#stage input[type=checkbox]:not(.b-switch):not(.switch input){ -webkit-appearance:none; appearance:none; box-sizing:content-box; width:24px; height:24px; min-width:0; margin:-10px; border:10px solid transparent; border-radius:14px; flex:none;
  background:var(--b-surface) padding-box; box-shadow:inset 0 0 0 2px var(--b-line-strong); cursor:pointer; vertical-align:middle; transition:background-color var(--b-t-fast) var(--b-ease), box-shadow var(--b-t-fast) var(--b-ease); }
#stage input[type=checkbox]:not(.b-switch):not(.switch input):checked{ background:var(--b-brand) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 18px 18px no-repeat padding-box; box-shadow:inset 0 0 0 2px var(--b-brand); }
#stage input[type=checkbox]:not(.b-switch):not(.switch input):disabled{ opacity:.5; cursor:not-allowed; }
#stage input[type=checkbox]:not(.b-switch):not(.switch input):focus-visible{ outline:none; box-shadow:inset 0 0 0 3px var(--b-focus); }
#stage .b-check input[type=checkbox]{ margin:-8px -10px -10px; }
#stage .b-switch, #stage .switch input{ box-sizing:content-box; width:52px; height:32px; margin:-6px; border:6px solid transparent; border-radius:22px; background-clip:padding-box; }
#stage .switch input::after{ top:3px; left:3px; }
#stage .switch input:checked::after{ left:23px; }
#stage .b-switch:focus-visible, #stage .switch input:focus-visible{ outline:none; box-shadow:0 0 0 3px var(--b-focus) inset; }
#stage input[type=range]{ min-height:44px; }
#stage .b-check a, #stage label a.b-link-hit{ display:inline-block; padding-block:12px; margin-block:-12px; }
/* V11.2 : filtres de « À décider » qui passent à la ligne dans la colonne de 340 px (plus rien de coupé) */
.a-filters{ flex-wrap:wrap; gap:8px; }
.a-filters .b-chip{ flex:none; }
/* V12.5 · référentiel R1.0 : codes de vue, niveaux de preuve, décisions, écarts de facture */
.rs-code-line{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0}
.rs-proof{display:grid;gap:12px}
.rs-proof__main{display:grid;gap:4px}
.rs-proof__others{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr))}
.rs-proof__tile{display:grid;gap:4px;padding:12px;border-radius:var(--b-r-md);background:var(--b-surface-2);min-width:0}
.rs-lvl{font-family:var(--b-font-mono);letter-spacing:.02em;font-size:1rem}
.rs-dec{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.rs-calc{overflow-wrap:anywhere}
.rs-ecarts{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));margin:0;padding:0;list-style:none}
.rs-ecarts li{display:grid;gap:2px;padding:12px;border-radius:var(--b-r-md);background:var(--b-surface-2);min-width:0}
.rs-form-err{color:var(--b-danger)}
/* ===== V12 : contrôles obligatoires, véhicules et Carnet d'état, Services+, densité (jetons du design system V11 uniquement) ===== */
.v12-ask{box-shadow:inset 4px 0 0 var(--b-warm),var(--b-sh-2)}
.v12-counts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.v12-counts>span{display:grid;gap:2px;justify-items:start}
.b-list__item.v12-ci{grid-template-columns:minmax(0,1fr) auto auto;align-items:center}
@media (max-width:560px){.b-list__item.v12-ci{grid-template-columns:minmax(0,1fr) auto}.b-list__item.v12-ci>button{grid-column:1/-1;justify-self:start}.v12-counts{grid-template-columns:repeat(2,minmax(0,1fr))}}
.v12-contract{gap:12px;align-items:flex-start}
.v12-vehs{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.v12-veh{display:grid;gap:8px}
.v12-type{max-width:280px;min-width:0;margin:0}
.v12-type .b-input{min-height:44px}
.b-list__item.v12-sl{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;cursor:pointer}
.v12-tires{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.b-slot .v12-offer{color:var(--b-warm-ink);font-weight:600}
.b-slot[aria-pressed="true"] .v12-offer{color:inherit}
.v12-switch{cursor:pointer}
.v12-switch input:disabled+span{opacity:.75}
.v12-gauge{display:grid;gap:6px;margin-top:4px}
.v12-gauge__bar{position:relative;height:12px;border-radius:999px;background:linear-gradient(90deg,var(--b-warn-fill) 0 18%,var(--b-ok) 18% 62%,var(--b-warn-fill) 62% 77%,var(--b-danger) 77% 100%)}
.v12-gauge__bar i{position:absolute;top:-4px;width:4px;height:20px;border-radius:2px;background:var(--b-ink);transform:translateX(-2px)}
.v12-gauge__txt{display:flex;gap:8px;align-items:flex-start;margin:0;font-size:var(--b-fs-sm)}
.v12-gauge[data-l="green"] .v12-gauge__txt{color:var(--b-ok)}.v12-gauge[data-l="orange"] .v12-gauge__txt{color:var(--b-warn)}.v12-gauge[data-l="red"] .v12-gauge__txt{color:var(--b-danger)}
.phone[data-contrast="high"] .sheet{color:var(--b-ink)} /* V12 : feuilles ouvertes en mode terrain (relevé, Services+) lisibles */
/* ===== V12.1 (retours de Vianney du 02/11) ===== */
/* Laveur : cadre d'un vrai téléphone (390 × 844) sur ordinateur ; défilement à l'intérieur ; feuilles dans le cadre */
@media (min-width:901px){
  .split.split--device{grid-template-columns:390px minmax(0,1fr)}
  .phone.phone--device{width:390px;max-width:390px;height:min(844px, calc(100vh - 120px));position:sticky;top:108px;display:flex;flex-direction:column;border-radius:44px}
  .phone.phone--device > .screen{position:static;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:thin}
  .phone.phone--device .screen .sheet,.phone.phone--device .screen .sheet-bg{position:absolute}
  .phone.phone--device .screen .sheet{max-height:88%}
}
/* Montants qui ne débordent pas de leur case (ex. budget 12 970 €) */
.b-amount,.rs-amt{overflow-wrap:anywhere;min-width:0}
.g-kpi .b-amount,.b-card .b-amount{font-size:clamp(1.25rem, 4.2vw, 2rem)}
/* Bloc « texte long » des retours qualité : pas de débordement */
.v121-wrap,.v121-wrap *{overflow-wrap:anywhere;min-width:0;white-space:normal}
/* Galerie de réalisations du laveur */
.v121-gal{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.v121-gal figure{margin:0;display:grid;gap:4px}
.v121-gal .ph{min-height:96px;display:grid;place-items:center;border-radius:var(--b-r-md);background:var(--b-surface-2, var(--b-surface));border:1px solid var(--b-line);color:var(--b-ink-2, var(--b-ink));text-align:center;padding:8px}
.v121-gal figcaption{font-size:var(--b-fs-sm, 1rem)}
/* Comparaison des formules (salarié) */
.v121-cmp{display:grid;gap:12px}
.v121-cmp ul{margin:0;padding-left:20px}
/* Consignes spécifiques d'un site (laveur) */
.v121-spec{border-left:4px solid var(--b-warn-fill, var(--b-warn));padding:12px 16px;background:var(--b-raised);border-radius:var(--b-r-md)}
.v121-spec li{font-size:1.125rem;font-weight:600;line-height:1.4}
/* Statut du véhicule pendant un convoyage */
.v121-steps{display:flex;gap:8px;flex-wrap:wrap;list-style:none;margin:0;padding:0}
.v121-steps li{padding:6px 12px;border-radius:999px;border:1px solid var(--b-line);min-height:44px;display:flex;align-items:center}
.v121-steps li[data-on="1"]{background:var(--b-brand-soft, var(--b-surface));border-color:var(--b-brand);font-weight:700}
/* Pastille de notifications : 16 px minimum */
.b-badge-count,.notif-count,.b-dot-count{font-size:1rem !important;min-width:24px;min-height:24px}
/* Plan de prévention / facture : en-tête avec logos */
.v121-logos{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.v121-logo{display:inline-flex;align-items:center;gap:8px;font-weight:800;color:#0A6B5F}
.v121-logo i{width:28px;height:28px;border-radius:8px;background:#0A6B5F;display:inline-block}
.v121-logo--client{color:#273B7A}.v121-logo--client i{background:#273B7A;border-radius:50%}
/* Entités du groupe */
.v121-ent{display:grid;gap:8px}
@media (min-width:700px){.v121-ent{grid-template-columns:repeat(3,minmax(0,1fr))}}
.v121-ent .b-card{min-width:0}
/* Horaires de site par jour */
.v121-hours{display:grid;gap:8px}
.v121-hours .v121-day{display:grid;grid-template-columns:72px minmax(0,1fr);gap:8px;align-items:center}
.v121-hours input{min-width:0}
/* Accueil gestionnaire : le montant du budget reste dans sa case */
.v11-grid3 > .b-card.b-row{flex-wrap:wrap;min-width:0}
.v11-grid3 > .b-card.b-row > .b-stack{min-width:0;flex:1 1 120px}
.v11-grid3 .b-amount{font-size:clamp(1.25rem, 1.9vw, 1.75rem);white-space:nowrap}
.bellbtn .b-count{font-size:1rem;min-width:24px;height:24px;border-radius:12px;padding:0 6px}
.phone .rread, .phone .rread *{font-size:1rem}
.b-list__item--unread .b-list__meta, .b-list__item--unread .b-list__sub{color:var(--b-ink)}
.phone .b-list .b-list__meta{color:var(--b-ink)}
/* Laveur : carte de mission (ex. « Intégrale intérieur seul + contrôles ») sans débordement */
.phone article[aria-label^="Mission"]{min-width:0;overflow-wrap:anywhere}
.phone article[aria-label^="Mission"] > *{min-width:0;max-width:100%}
.phone article[aria-label^="Mission"] .b-badge{white-space:normal;text-align:left;max-width:100%}
.phone article[aria-label^="Mission"] .b-row > span{min-width:0}
/* ===== V12.1 · décisions finales du 03/11 ===== */
/* Abonnement Restitution : analyse floutée (texte remplacé, inerte, masqué aux lecteurs d'écran), carte d'aperçu */
.v121b-blur{filter:blur(6px);user-select:none;pointer-events:none;opacity:.75;max-height:520px;overflow:hidden;-webkit-mask-image:linear-gradient(#000 60%, transparent);mask-image:linear-gradient(#000 60%, transparent)}
@media (prefers-reduced-transparency: reduce){ .v121b-blur{opacity:.5} }
.v121b-tease .b-eyebrow{display:flex;align-items:center;gap:6px}
.v121b-tease .b-amount{color:var(--b-ink)}
/* Alerte de trésorerie du lundi : barres de solde et plancher */
.v121b-tre--gel{border:2px solid var(--b-danger)}
.v121b-bars{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.v121b-bars li{display:grid;grid-template-columns:minmax(0,9rem) minmax(0,1fr) auto;gap:4px 12px;align-items:center}
.v121b-bars li > .b-meta{grid-column:1 / -1}
.v121b-bars__l{font-size:1rem}
.v121b-bars__t{position:relative;height:12px;border-radius:999px;background:var(--b-surface-2)}
.v121b-bars__t i{position:absolute;inset:0 auto 0 0;border-radius:999px;background:var(--b-ok)}
.v121b-bars__t i[data-low="1"]{background:var(--b-danger)}
.v121b-bars__t s{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--b-ink);text-decoration:none}
@media (max-width:520px){ .v121b-bars li{grid-template-columns:minmax(0,1fr) auto} .v121b-bars__t{grid-column:1 / -1;grid-row:2} }
/* Laveur hors ligne : bandeau et file visible */
.v121b-off{flex:none;align-items:flex-start;padding-top:12px;padding-bottom:12px;font-size:1rem}
.v121b-off__q summary{min-height:44px;display:flex;align-items:center;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.v121b-off__q ol{margin:4px 0 0;padding-left:20px;display:grid;gap:4px;font-weight:400}
.v121b-off__q li{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.b-radio-card:has(input:disabled){background:var(--b-surface-2);border-style:dashed;cursor:not-allowed}
.b-kv dd.b-mono{white-space:normal;overflow-wrap:anywhere}
/* Recette 03/11 : barre d'onglets du cadre téléphone, hors des coins arrondis */
@media (min-width:901px){ .phone.phone--device .b-tabbar{padding-inline:8px;padding-bottom:12px;border-radius:0 0 44px 44px} }
/* Recette 03/11 : raccourcis clavier inutiles au doigt (et sous 16 px) masqués sur mobile ; champ fichier à 44 px de haut */
@media (max-width:600px){ .b-kbd, .b-hint--kbd, .a-keys{display:none} }
input[type=file]{min-height:44px;padding-block:8px}
@media (max-width:600px){ .foldb .b-table th, .foldb .b-table td{white-space:normal} .foldb .b-table{min-width:0;width:100%} }
/* ===== V12.3 front : états d'erreur, connexion par code, file hors ligne, agenda (jetons b-, texte ≥ 16 px, cibles ≥ 44 px) ===== */
.fx-err{display:grid;gap:10px;padding:16px;outline:none;min-width:0}
.fx-err:focus-visible{box-shadow:inset 4px 0 0 var(--b-danger), 0 0 0 3px var(--b-focus, var(--b-brand))}
.fx-err__head{gap:12px;align-items:center;flex-wrap:nowrap}
.fx-err__head .b-state__icon{flex:none}
.fx-err__head .b-state__title{margin:0;min-width:0;overflow-wrap:anywhere}
.fx-err__text,.fx-err p{margin:0;font-size:1rem;color:var(--b-ink);overflow-wrap:anywhere}
.fx-code{font-size:1rem;color:var(--b-ink-2);overflow-wrap:anywhere}
.fx-acts{display:flex;flex-wrap:wrap;gap:8px}
.fx-acts .b-btn{min-height:44px}
.fx-login{max-width:520px}
.fx-login .b-state{display:grid;gap:8px;padding:16px}
.fx-login .b-state__title{font-size:1.25rem;margin:0}
.fx-desk-login{display:grid;justify-items:start}
.fx-wire .b-kv dd{overflow-wrap:anywhere}
.fx-tease .fx-acts .b-btn{white-space:normal}
.fx-url{white-space:normal;min-width:0;background:var(--b-surface-2);border-radius:var(--b-r-md);padding:10px 12px;margin:0;font-size:1rem;overflow-wrap:anywhere;word-break:break-all;user-select:all}
.fx-feed .b-hint{margin:0}
.fx-op{display:block;font-size:1rem}
.v121b-off__q li{align-items:center}
.v121b-off__q li .b-badge{white-space:normal}
.fx-why{font-weight:400;font-size:1rem}
.fx-now{justify-self:start;min-height:44px}
.fx-rej{margin:0 0 12px}
.fx-rej__list{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.fx-rej__list li{padding-top:12px;box-shadow:inset 0 1px 0 var(--b-line)}
.fx-rej__list li:first-child{padding-top:0;box-shadow:none}
.fx-demo{margin-top:20px}
.screen .fx-err{margin:12px 16px}
.screen .body .fx-err{margin:0 0 12px}
.screen > .fx-rej,.screen .fx-rej,.screen .fx-err,.screen .v121b-off{flex:none}
/* Décisions 20 et 21 */
.d20-lever .b-kv{display:grid;grid-template-columns:minmax(0,1fr);gap:2px 0}
.d20-lever .b-kv dt{color:var(--b-ink-2);font-size:1rem}
.d20-lever .b-kv dd{margin:0 0 8px;overflow-wrap:anywhere}
.screen .d21-avail,.d21-avail{flex:none;display:grid;gap:8px;padding:16px}
.desist-pen{display:grid;gap:6px;padding:14px 16px}
.fx-code--block{display:block;margin-top:4px}

/* Production : la barre des rôles du prototype n'existe pas */
header.top{display:none!important}
