/* Copilot' — feuille de style unique (MAJ-101, 10 octobre 2026).
   1. Jetons : couleurs, rayons et tailles de texte. Les règles s'y réfèrent par var(--…).
   2. Base, composants et écrans (ancienne styles.css).
   3. Ergonomie et écrans ajoutés depuis le 15 septembre (ancienne ergonomics.css).
   L'ordre des parties 2 et 3 est celui d'origine : la cascade est inchangée. Une règle par ligne. */

/* 1. Jetons */
:root{
  /* Encre, papier et fond (définis plus bas dans la partie 2 : --ink, --muted, --paper, --border, --accent, --green) */
  --route:#368a79;      /* vert du tracé, interrupteurs, choix actifs */
  --trail:#417dad;      /* bleu du chemin déjà parcouru */
  --position:#1779db;   /* point bleu de la position */
  --blue-p:#1f4fa3;     /* bleu de la partie P et du centre */
  --stop:#128068;       /* repère d'arrêt sur la carte */
  --target:#e4af20;     /* anneau du prochain arrêt */
  --house:#b14e68;      /* maison localisée (CIDEX) */
  --focus:#3279d5;      /* contour de focus clavier */
  --surface-2:#eef1e9;  /* bouton secondaire, fond de contrôle segmenté */
  --surface-3:#f1f3eb;  /* boutons Passer et Retour */
  --ok-bg:#e1f2eb;      /* choisi, distribué */
  --ok-ink:#15573f;
  --warn-bg:#fce9db;    /* à vérifier, à confirmer */
  --warn-ink:#925022;
  --badge-bg:#fff0c5;   /* pastille de mission */
  --badge-ink:#665016;
  --danger:#b3261e;
  /* Rayons (audit V-02) */
  --radius-s:10px;
  --radius-m:14px;
  --radius-l:20px;
  --radius-xl:28px;
  /* Tailles de texte, échelle iOS (audit V-03) : 12 px minimum, 13 px pour ce qui se lit en roulant */
  --text-caption:12px;
  --text-footnote:13px;
  --text-subhead:15px;
  --text-body:17px;
  --text-title3:20px;
  --text-title2:22px;
  --text-title1:28px;
  --text-large:34px;
  /* Verre (refonte, lot A) : TOUT le verre de l'app se règle ici. Pour économiser la batterie, passer
     --glass-filter à none (plus aucun flou) et/ou monter --glass-bg vers --glass-bg-strong (plus opaque). */
  --glass-bg:rgba(255,254,250,.8);          /* verre clair des fiches et panneaux */
  --glass-bg-strong:rgba(255,254,250,.94);  /* verre presque opaque : bannières, panneaux en roulant */
  --glass-filter:blur(30px) saturate(190%);
  --glass-edge:rgba(255,255,255,.85);       /* filet blanc du bord */
  --glass-sheen:linear-gradient(180deg,rgba(255,255,255,.65) 0%,rgba(255,255,255,.15) 28%,rgba(255,255,255,.25) 100%);
  --glass-shadow:inset 0 1px 1px rgba(255,255,255,.95),0 -6px 32px rgba(22,46,51,.2);
  --glass-control:rgba(255,255,255,.72);    /* boutons ronds posés sur du verre */
  --glass-control-shadow:inset 0 1px 1px rgba(255,255,255,.95),0 2px 8px rgba(24,42,53,.1);
  --radius-sheet:34px;
  /* Mouvements (lot A) : courbe « ressort » d'iOS, durées courtes. Réduire les animations les coupe. */
  --ease-spring:cubic-bezier(.2,.9,.25,1);
  --motion-sheet:.38s;
  --motion-press:.12s;
}

/* 2. Base, composants et écrans (ancienne styles.css) */
*{box-sizing:border-box}
:root{--ink:#182a35;--muted:#56656e;--paper:#fffefa;--border:#e5e7df;--accent:#f4c542;--green:#13664d;--shadow:0 10px 45px #233e3320;--font:-apple-system,BlinkMacSystemFont,'SF Pro Text',system-ui,'Segoe UI',sans-serif;font-family:var(--font);color:var(--ink);background:#e6ebdf}
body{margin:0}
button,input,select,textarea{font:inherit}
button,summary,.file-label{cursor:pointer}
button{color:inherit;border:0}
button:disabled{opacity:.45;cursor:default}
button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
[hidden]{display:none!important}
#app{height:100dvh;min-height:560px;position:relative;overflow:hidden}
#map{position:absolute;inset:0}
.brand{position:absolute;top:max(25px,env(safe-area-inset-top));left:32px;display:flex;align-items:center;gap:12px;font-size:25px;font-weight:800;letter-spacing:-1px;z-index:2}
.brand span:not(.brand-icon){display:block;font-size:var(--text-caption);letter-spacing:1.7px;margin-top:4px}
.brand-icon{display:grid;place-items:center;background:var(--accent);width:45px;height:45px;border-radius:15px;font-size:27px;transform:rotate(-15deg)}
.round{border-radius:50%;background:var(--paper);width:44px;height:44px;min-width:44px;font-size:24px;display:grid;place-items:center;box-shadow:0 2px 12px #233e3312}
.panel{position:absolute;z-index:3;left:32px;top:105px;bottom:30px;width:375px;background:var(--paper);padding:29px;border-radius:26px;box-shadow:var(--shadow);overflow:auto;scrollbar-width:thin}
.eyebrow{font-size:var(--text-caption);font-weight:800;letter-spacing:1.7px;color:var(--muted)}
h1{font-size:36px;line-height:1.13;letter-spacing:-1.5px;margin:18px 0}
h2{margin:0;font-size:21px;letter-spacing:-.4px}
.muted{color:var(--muted);line-height:1.5}
.small{font-size:13px}
small{display:block;color:var(--muted);font-size:var(--text-caption);margin-top:5px}
.route-card{display:flex;gap:13px;align-items:center;background:#f0f2e9;padding:16px;border-radius:16px;margin-top:25px}
.route-number{font-size:18px;font-weight:800;background:var(--accent);border-radius:10px;padding:13px 8px}
.route-card strong{font-size:13px}
.stats{display:flex;gap:30px;padding:23px 0}
.stats b{font-size:28px;display:block;letter-spacing:-1px}
.stats span{font-size:var(--text-caption);color:var(--muted)}
.section{padding:16px 0;border-top:1px solid var(--border);font-size:14px}
.section summary{list-style:none;font-weight:600;display:flex;justify-content:space-between}
.section summary::-webkit-details-marker{display:none}
.row{display:flex;align-items:center;gap:10px}
.spread{justify-content:space-between}
.primary,.secondary{width:100%;border-radius:14px;padding:17px 18px;font-weight:750;text-align:center;min-height:52px;margin-top:10px}
.primary{background:var(--accent);display:flex;justify-content:space-between;align-items:center}
.primary span{font-size:22px}
.secondary{background:var(--surface-2)}
.small-button,.mini-button{padding:10px 13px;border-radius:10px;background:var(--surface-2);font-size:12px;font-weight:650}
.mini-button{background:var(--paper);box-shadow:var(--shadow)}
.local-note{text-align:center;font-size:var(--text-caption);color:var(--muted);margin-top:19px}
.notice{font-size:var(--text-caption);line-height:1.55;color:#626d63;background:#f1f3ea;padding:12px;border-radius:10px;margin:10px 0}
.sectors{max-height:220px;overflow:auto}
.sector{display:flex;align-items:center;gap:10px;padding:10px 0;font-size:12px;min-height:44px}
.sector input{width:19px;height:19px;accent-color:var(--green)}
input[type=search],select,textarea,input[type=number]{width:100%;border:1px solid var(--border);background:var(--paper);color:var(--ink);padding:13px;border-radius:11px;margin:7px 0}
textarea{min-height:95px;resize:vertical}
.text-button{font-size:12px;background:none;text-decoration:underline;padding:8px 0}
#loading{position:absolute;inset:0;display:grid;place-items:center;background:var(--paper);z-index:20}
.nav-top{position:absolute;top:max(18px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);width:min(460px,calc(100% - 28px));z-index:3}
.mode-label{border-radius:30px;background:var(--paper);box-shadow:var(--shadow);padding:8px 12px;font-size:var(--text-caption);font-weight:800;letter-spacing:1px}
.guidance{margin-top:10px;display:flex;gap:18px;align-items:center;background:var(--ink);color:white;padding:16px 20px;border-radius:20px;box-shadow:var(--shadow)}
.guidance .round{color:white;background:#ffffff16;box-shadow:none}
.guidance>div{flex:1;min-width:0}
.guidance b{font-size:27px;letter-spacing:-1px}
.guidance p{font-size:12px;color:#dce7e3;margin:4px 0;overflow-wrap:anywhere}
.maneuver{font-size:40px;min-width:38px}
.map-tools{position:absolute;right:25px;top:43%;display:grid;gap:10px}
.nav-bottom{position:absolute;bottom:max(15px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:min(460px,calc(100% - 28px));z-index:3}
.above-card{margin-bottom:9px;font-size:var(--text-caption)}
.above-card>span{background:var(--paper);padding:7px 10px;border-radius:20px;max-width:65%;box-shadow:var(--shadow)}
.destination{background:var(--paper);padding:18px 20px 9px;border-radius:22px;box-shadow:var(--shadow);touch-action:pan-y}
.counter{color:var(--muted);font-size:var(--text-caption);font-variant-numeric:tabular-nums}
.address-row{display:flex;align-items:center;gap:14px;margin:12px 0 7px}
.address-row>strong{font-size:35px;letter-spacing:-1px;max-width:100px;overflow-wrap:anywhere}
.address-row>div{flex:1;min-width:0}
.address-row h2{font-size:18px;line-height:1.2;overflow-wrap:anywhere}
#stop-meta{font-size:var(--text-caption);color:var(--muted);margin-top:5px}
.destination .round{width:32px;min-width:32px;background:transparent;box-shadow:none}
.badges{display:flex;flex-wrap:wrap;gap:6px}
.badge{background:var(--badge-bg);color:var(--badge-ink);border-radius:8px;padding:5px 8px;font-size:var(--text-caption);font-weight:700}
.badge.approx{background:var(--warn-bg);color:var(--warn-ink)}
.destination-actions{display:flex;gap:8px;margin-top:10px;border-top:1px solid var(--border);padding-top:10px}
.delivered{background:var(--green);color:white;border-radius:11px;padding:10px;flex:1;font-weight:700;min-height:44px}
.skip{background:var(--surface-3);border-radius:11px;padding:10px 14px;font-weight:650;min-height:44px}
.icon-button{background:transparent;font-size:24px;width:44px;height:44px}
.swipe-hint{text-align:center;font-size:var(--text-caption);color:var(--muted);padding-top:7px}
.footer-row{display:flex;justify-content:space-between;font-size:var(--text-caption);margin:10px 8px 0;color:var(--muted)}
.footer-row span{background:var(--paper);padding:3px 6px;border-radius:5px}
#toast{position:absolute;z-index:30;top:45%;left:50%;transform:translate(-50%,-50%);background:var(--ink);color:white;padding:15px 23px;border-radius:15px;max-width:90%;box-shadow:var(--shadow);font-size:14px;text-align:center}
dialog{border:0;position:fixed;inset:auto 0 0;margin:0 auto;width:min(520px,100%);max-height:83dvh;border-radius:26px 26px 0 0;background:var(--paper);color:var(--ink);padding:22px 24px max(25px,env(safe-area-inset-bottom));box-shadow:0 -10px 70px #172e3130}
dialog::backdrop{background:#162e3345}
.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:18px}
.sheet-head h2{font-size:22px}
#sheet-body{line-height:1.45}
.list-row{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid var(--border)}
.list-row>div{flex:1}
.list-row b{font-size:14px}
.list-row small{font-size:var(--text-caption)}
.list-scroll{max-height:43dvh;overflow:auto}
.mission-actions{display:flex;flex-wrap:wrap;gap:7px;margin:8px 0}
.mission-actions button{background:var(--surface-2);padding:10px;border-radius:8px;font-size:12px;min-height:44px}
.road-label{color:#64746a;font-size:var(--text-caption);font-weight:550;white-space:nowrap;text-shadow:0 1px 2px white,0 -1px 2px white;pointer-events:none}
.stop-marker{width:14px;height:14px;background:#fff;border:3px solid var(--stop);border-radius:50%;box-shadow:0 1px 5px #13382c40}
.stop-marker.target{background:#fff;border:5px solid var(--target);width:27px;height:27px}
.vehicle{height:34px;width:34px;background:var(--position);color:white;border:3px solid white;border-radius:50%;display:grid;place-items:center;box-shadow:0 0 0 8px #1779db20,0 3px 15px #214c7040;font-size:23px}
.maplibregl-ctrl-attrib{font-size:var(--text-caption)!important;background:#ffffffe0!important}
.maplibregl-ctrl-bottom-right{bottom:0}
.navigation-active .brand{display:none}
@media(max-width:600px){
  .brand{top:max(20px,env(safe-area-inset-top));left:22px;font-size:23px}
  .panel{left:12px;right:12px;top:89px;bottom:16px;width:auto;padding:24px}
  .map-tools{right:15px;top:40%}
  .nav-top{top:max(10px,env(safe-area-inset-top))}
  .nav-bottom{bottom:max(12px,env(safe-area-inset-bottom))}
  .destination{padding:15px 16px 8px}
  .guidance{padding:13px 16px}
  .guidance b{font-size:25px}
  .guidance p{font-size:var(--text-caption)}
}
@media(max-height:690px){
  .guidance{padding:10px 14px}
  .destination{padding:12px 14px 6px}
  .address-row{margin:8px 0 4px}
  .address-row>strong{font-size:27px}
  .swipe-hint,.footer-row{display:none}
  .nav-bottom{bottom:12px}
  .guidance .maneuver{font-size:30px}
  .guidance b{font-size:23px}
}
@media(prefers-reduced-motion:reduce){
  *{scroll-behavior:auto!important;animation:none!important;transition:none!important}
}
#unlock{position:absolute;inset:0;z-index:30;display:grid;place-items:center;background:var(--paper);padding:24px}
#unlock[hidden]{display:none}
.unlock-card{width:100%;max-width:380px}
#unlock-phrase{width:100%;box-sizing:border-box;padding:16px;border:2px solid var(--border);border-radius:14px;background:#fff;color:var(--ink);font-size:17px;margin-top:8px}
#unlock-error{color:var(--danger);min-height:1.4em;font-size:14px;margin:8px 0 0}
.depot-marker{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:var(--blue-p);color:#fff;font-size:18px;font-weight:800;border:2px solid #fff;box-shadow:0 2px 8px #0004}
#start-demo{display:block;margin:10px auto 0}
.search-pill{display:block;margin-top:8px;width:100%;text-align:left;background:var(--paper);color:var(--ink);box-shadow:var(--shadow);border-radius:14px;padding:12px 16px;font-size:15px;font-weight:650;min-height:46px}
.back-button{background:var(--surface-3);border-radius:11px;padding:10px 12px;font-weight:650;min-height:44px}
.back-button:disabled{opacity:.4}
.vehicle-arrow{display:block;transition:transform .25s linear}
.stop-choice{display:flex;gap:12px;align-items:center;width:100%;text-align:left;background:none;color:inherit;padding:12px 6px;border-bottom:1px solid var(--border);min-height:54px}
.stop-choice b{display:block;font-size:15px}
.stop-choice small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.stop-choice.current{background:#fff4c7;border-radius:10px}
.stop-rank{min-width:36px;color:var(--muted);font-weight:700;font-variant-numeric:tabular-nums}
.stop-info{flex:1;min-width:0}
.choice-button{display:inline-grid;place-items:center;width:46px;height:46px;min-width:46px;border-radius:12px;background:var(--surface-2);color:var(--ink);font-size:21px;font-weight:800}
.choice-button.go{background:var(--accent)}
.choice-legend{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px;color:var(--muted);margin:10px 0 4px}
.choice-legend .choice-button{width:30px;height:30px;min-width:30px;font-size:15px;border-radius:9px}
.address-title{display:flex;align-items:flex-start;gap:6px}
.houses-badge{display:inline-grid;place-items:center;min-width:28px;height:21px;padding:0 7px;border-radius:11px;background:var(--blue-p);color:#fff;font-size:12px;font-weight:800;line-height:1;margin-top:3px;flex:none;vertical-align:middle}
.houses-badge[hidden]{display:none}
.zone-picker{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}
.zone-button{display:grid;gap:3px;justify-items:center;padding:12px 6px;border-radius:14px;background:var(--surface-2);color:var(--ink);border:2px solid transparent;min-height:66px}
.zone-button b{font-size:24px;line-height:1}
.zone-button small{font-size:12px;color:var(--muted)}
.zone-button[aria-pressed="true"]{background:var(--accent);border-color:var(--ink)}
.zone-button.add[aria-pressed="true"]{background:var(--blue-p);border-color:var(--blue-p);color:#fff}
.zone-button.add[aria-pressed="true"] small{color:#dfe8ff}
#day-summary{display:block;margin-top:8px;font-size:13px}


/* 3. Ergonomie et écrans ajoutés depuis le 15 septembre (ancienne ergonomics.css) */
/* Ergonomie : les commandes occupent leur place réelle, sans recouvrir leurs voisines. */
:root{--on-accent:#182a35}
#app{min-height:0}
button,summary,.file-label{-webkit-tap-highlight-color:transparent}
textarea:focus-visible,.file-label:focus-within{outline:3px solid var(--focus);outline-offset:3px}
.round,.small-button,.mini-button,.text-button{min-height:44px;min-width:44px;flex-shrink:0}
.brand-icon,.route-number,.choice-button.go{color:var(--on-accent)}
a.primary,a.secondary{display:flex;align-items:center;justify-content:center;text-decoration:none}
a.primary,a.primary:visited{color:var(--on-accent)}
a.secondary,a.secondary:visited{color:var(--ink)}
a:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.brand{right:32px;max-width:375px}
.panel{padding:22px;scroll-padding:16px}
.panel h1{font-size:26px;margin:12px 0;letter-spacing:0}
.setup-intro{margin:8px 0}
.route-card{margin-top:16px;padding:12px}
.route-card small{font-size:12px}
.stats{padding:16px 0;justify-content:space-between;gap:16px}
.stats span{font-size:12px}
.zone-help{font-size:13px;color:var(--muted);line-height:1.4;margin:8px 0}
.zone-button[aria-pressed="true"]{color:var(--on-accent);border-color:var(--ink)}
.zone-button[aria-pressed="true"] small{color:#34434a}
.zone-button.add[aria-pressed="true"]{color:#fff;background:var(--blue-p);border-color:#92b4ef}
.zone-button.add[aria-pressed="true"] small{color:#fff}
.import-section{padding:0}
.import-section summary{min-height:44px;align-items:center;gap:8px}
.import-section[open]{padding-bottom:12px}
.file-label{position:relative;display:inline-flex;align-items:center;justify-content:center;overflow:hidden}
.file-label input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.setup-actions{position:sticky;bottom:-22px;background:var(--paper);padding:8px 0 12px;display:flex;flex-direction:column;border-top:1px solid var(--border)}
.setup-actions .primary,.setup-actions .secondary{margin-top:6px}
#resume:not([hidden]){order:-2;background:var(--accent);color:var(--on-accent)}
.setup-actions:has(#resume:not([hidden])) #start{background:var(--surface-2);color:var(--ink)}
#update{order:-3}
#start-demo{font-size:13px;margin:2px 0 0;line-height:1.4}
.local-note{font-size:var(--text-caption);margin:4px 0 0}
.notice{font-size:12px}
#navigation{position:absolute;inset:0;display:grid;grid-template-rows:auto minmax(80px,1fr) auto;gap:8px;padding:max(10px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(18px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));overflow-y:auto;pointer-events:none;scrollbar-width:thin}
.nav-top,.nav-bottom{position:static;transform:none;width:min(460px,100%);min-width:0;justify-self:center;pointer-events:auto}
.nav-top{grid-row:1}
.nav-bottom{grid-row:3}
.map-tools{position:static;grid-row:2;justify-self:end;align-self:start;display:flex;gap:8px;z-index:4;pointer-events:auto}
.mode-label{font-size:var(--text-caption);letter-spacing:.5px;line-height:1.4;padding:7px 10px}
.guidance{margin-top:6px;padding:10px 14px;gap:12px}
.guidance b{font-size:26px}
.guidance p{font-size:13px;line-height:1.3}
.search-pill{font-size:15px;margin-top:6px;padding:10px 14px}
.above-card{font-size:12px;margin-bottom:6px;gap:6px}
.above-card>span{max-width:none;min-width:0;line-height:1.35}
.above-card .mini-button{font-size:13px;padding:10px;white-space:nowrap}
.destination{padding:12px 14px 9px}
.destination>.row{align-items:baseline;flex-wrap:wrap;gap:4px 10px}
.eyebrow{font-size:var(--text-caption);letter-spacing:1px}
.counter{font-size:12px}
.address-row{gap:10px;margin:8px 0}
.address-row>strong{font-size:32px;max-width:90px;flex-shrink:0}
.address-row h2{font-size:20px;line-height:1.25}
.address-title{flex-wrap:wrap}
#stop-meta{font-size:12px;line-height:1.4}
.destination .round{width:44px;min-width:44px}
.badge{font-size:12px}
.destination-actions{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:6px;margin-top:8px;padding-top:8px}
.destination-actions button{font-size:15px;white-space:nowrap;padding:10px}
#trip-summary{grid-column:2 / -1;margin:0;justify-content:center;min-height:44px}
.large-type #trip-summary{grid-column:1}
.swipe-hint{font-size:var(--text-caption);padding-top:6px}
.footer-row{font-size:var(--text-caption);margin:5px 2px 0;gap:6px}
.vehicle{z-index:2;pointer-events:none}
button,input,select,textarea,summary,.destination{touch-action:manipulation}
.destination{position:relative;user-select:none}
#delivery-feedback{position:absolute;inset:0;pointer-events:none;display:grid;place-items:center;overflow:hidden}
.remittance-logo{position:absolute;font-size:32px;color:var(--route)}
.menu-toggle{display:flex;align-items:center;justify-content:space-between;min-height:44px;gap:12px}
.menu-toggle input{width:44px;height:44px;accent-color:var(--route)}
.stop-choice{flex-wrap:wrap}
.stop-info{flex:1;min-width:0}
.stop-options{flex-basis:100%;display:grid;gap:6px;padding:6px}
.stop-options button{min-height:44px;background:var(--paper);border:1px solid var(--border);border-radius:8px;padding:8px;white-space:normal}
.stop-choice.expanded{background:#fff;color:var(--ink);transition:background .2s}
.stop-choice.expanded>.stop-info,.stop-choice.expanded>.stop-rank{opacity:.5}
#elsewhere>summary,.skipped-summary>summary{min-height:44px;padding:12px 0;cursor:pointer}
#toast{background:var(--ink);color:white;width:max-content;max-width:calc(100% - 32px);line-height:1.5}
dialog{max-width:100%;max-height:calc(100dvh - max(12px,env(safe-area-inset-top)));padding:0;overflow:hidden}
dialog[open]{display:flex;flex-direction:column}
.sheet-head{flex-shrink:0;margin:0;padding:14px 16px 10px;border-bottom:1px solid var(--border);background:var(--paper)}
.sheet-head h2{font-size:21px;overflow-wrap:anywhere;line-height:1.3;min-width:0}
#sheet-body{padding:8px 16px max(24px,env(safe-area-inset-bottom));overflow-y:auto;overscroll-behavior:contain;min-height:0;scroll-padding:12px}
#sheet-body input,#sheet-body select,#sheet-body textarea{font-size:16px}
#sheet-body label{display:block;font-size:14px;font-weight:600;margin-top:10px}
#sheet-body .list-scroll{max-height:none;overflow:visible}
#sheet-body:has(#stop-search){display:flex;flex-direction:column;overflow:hidden}
#stop-search,.choice-legend,#search-count{flex-shrink:0}
#sheet-body #stop-list{overflow-y:auto;min-height:0;overscroll-behavior:contain}
.stop-choice{gap:8px;padding:12px 2px}
.stop-choice b{overflow-wrap:anywhere;line-height:1.35}
.stop-rank{min-width:26px;font-size:12px}
.choice-legend{font-size:13px;gap:6px}
#search-count{font-size:12px;color:var(--muted);margin:8px 0}
.list-row{flex-wrap:wrap}
.list-row>div{min-width:0;overflow-wrap:anywhere}
@media(max-width:600px){
  .brand{top:max(16px,env(safe-area-inset-top));left:20px;right:20px}
  .panel{top:max(82px,calc(env(safe-area-inset-top) + 66px));bottom:max(12px,env(safe-area-inset-bottom));padding:18px}
  .setup-actions{bottom:-18px}
}
@media(max-width:360px){
  .back-label{display:none}
  .destination-actions .back-button{width:44px}
  .address-row>strong{font-size:28px;max-width:72px}
  .address-row h2{font-size:18px}
  .destination{padding:12px}
  .panel h1{font-size:28px}
  .zone-button small{font-size:var(--text-caption)}
}
@media(max-height:690px){
  .panel h1{font-size:26px;margin:8px 0}
  .setup-intro{display:none}
  .route-card{margin-top:10px;padding:8px}
  .route-number{padding:8px}
  .stats{padding:10px 0}
  .stats b{font-size:24px}
  .section{padding-top:10px;padding-bottom:10px}
  .import-section{padding:0}
  .notice{margin:8px 0}
  .guidance .maneuver{font-size:30px}
  .guidance b{font-size:23px}
  .swipe-hint,.footer-row{display:none}
}
@media(min-width:650px) and (max-height:500px){
  #navigation{grid-template-columns:minmax(280px,340px) minmax(80px,1fr);grid-template-rows:auto 1fr;gap:8px 16px}
  .nav-top{grid-column:1;grid-row:1}
  .nav-bottom{grid-column:1;grid-row:2;align-self:end}
  .map-tools{grid-column:2;grid-row:1}
  .guidance{margin-top:4px;padding:6px 12px}
  .guidance p{margin:2px 0}
  .search-pill{margin-top:4px;padding:8px 12px;min-height:44px}
  .above-card{display:flex;margin-bottom:4px}
  .destination{padding:8px 12px}
  .address-row{margin:4px 0}
  .address-row h2{font-size:18px}
  .address-row>strong{font-size:27px}
  .brand{top:12px}
  .panel{top:72px;bottom:12px}
}
@media(max-height:690px){
  .greeting{display:none}
  .panel h1{font-size:22px}
  .route-card small{display:none}
  .route-card{min-height:54px}
}
/* Grand texte : ordre de lecture conservé, actions empilées et défilement possible. */
.large-type .round{width:64px;height:64px;min-width:64px}
.large-type .address-row{display:grid;grid-template-columns:minmax(0,1fr) 64px}
.large-type .address-row>strong{max-width:none;grid-column:1}
.large-type .address-row>div{grid-column:1;grid-row:2}
.large-type #details{grid-column:2;grid-row:1 / 3}
.large-type .destination-actions{grid-template-columns:1fr}
.large-type .destination-actions button{white-space:normal;overflow-wrap:anywhere}
.large-type .destination>.row{flex-direction:column}
.large-type .mode-label{max-width:calc(100% - 74px)}
/* Preparation: independent sections, stable quantity controls and scrolling lists. */
.route-card{background:transparent;border-radius:0;padding:12px 0}
.route-card>div{min-width:0;overflow-wrap:anywhere}
.route-number{min-height:44px;min-width:60px;border-radius:8px}
.prep-sections{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;padding:14px 0 6px}
.prep-sections button{display:grid;grid-template-rows:28px auto auto;justify-items:center;align-items:center;gap:5px;padding:10px 2px;min-width:0;border:1px solid var(--border);border-radius:8px;background:var(--paper);color:var(--ink)}
.prep-sections button>span{font-size:24px}
.prep-sections b{font-size:12px;font-weight:600;overflow-wrap:anywhere}
.prep-sections output{font-size:18px;font-weight:700}
.prep-sections button:hover{border-color:var(--ink)}
.prep-toolbar{display:flex;align-items:center;gap:8px;flex-shrink:0}
.prep-toolbar>span{flex:1;min-width:0;overflow-wrap:anywhere;font-size:14px}
.prep-toolbar .round{border-radius:8px}
.prep-toolbar [aria-pressed="true"]{background:var(--accent);color:var(--on-accent)}
#sheet:has(#prep-search){height:calc(100dvh - max(12px,env(safe-area-inset-top)));width:600px}
#sheet-body:has(#prep-search){display:flex;flex-direction:column;overflow:hidden}
#prep-search,#prep-count,#selection-alert,#reset-confirmation{flex-shrink:0}
#prep-count{font-size:12px;color:var(--muted);margin:10px 0}
#prep-list{overflow-y:auto;min-height:0;overscroll-behavior:contain}
.prep-address{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;min-height:72px;border-bottom:1px solid var(--border);padding:10px 0}
.prep-address>div:first-child{min-width:0;overflow-wrap:anywhere}
.prep-address b{font-size:15px;line-height:1.4}
.prep-address small{display:block;font-size:12px;color:var(--muted);margin-top:4px}
.prep-toggle{position:relative;width:52px;min-height:44px;background:var(--paper);color:var(--ink);border:1px solid var(--border);border-radius:8px;font-size:22px}
.prep-toggle[aria-pressed="true"]{background:var(--ok-bg);border-color:#287157}
.selection-check{font-size:14px;color:var(--ok-ink)}
.quantity{display:grid;grid-template-columns:44px minmax(24px,auto) 44px;align-items:center;border:1px solid var(--border);border-radius:8px;overflow:hidden}
.quantity button{height:44px;width:44px;border:0;border-radius:0;background:var(--paper);color:var(--ink);font-size:22px;padding:0}
.quantity output{padding:0 2px;text-align:center;font-size:16px;font-variant-numeric:tabular-nums}
.quantity:has(output:not(:empty)){max-width:100%}
.press-badge{background:var(--ok-bg);color:var(--ok-ink);font-size:16px;font-weight:700;padding:6px 8px;border-radius:6px}
.review-counts{border-block:1px solid var(--border);padding:4px 0}
#review-route-warning:empty{display:none}
.stop-filters{display:flex;gap:6px;flex-shrink:0;margin:6px 0}
.stop-filters button{min-height:44px;min-width:44px;flex:1;border-radius:8px;background:var(--paper);border:1px solid var(--border)}
.stop-filters [aria-pressed=true]{background:var(--accent);color:var(--on-accent)}
.search-pill{font-size:13px;padding:7px 12px;min-height:44px;margin-top:4px}
.nav-top>.row{gap:6px}
.nav-top #nav-theme{margin-left:auto}
.stop-marker,.stop-marker.target{width:44px;height:44px;border:0;background:transparent;box-shadow:none;padding:0;border-radius:50%;display:grid;place-items:center}
.stop-marker::before{content:'';width:14px;height:14px;background:#fff;border:3px solid var(--stop);border-radius:50%;box-shadow:0 1px 5px #13382c40}
.stop-marker.target{z-index:1}
.stop-marker.target::before{width:27px;height:27px;border:5px solid var(--target)}
.stop-marker.collection-marker::before{content:'📮';width:26px;height:26px;font-size:20px;display:grid;place-items:center;border:0;border-radius:6px}
.stop-marker.target.collection-marker::before{outline:3px solid var(--target)}
.stop-popup{padding-top:44px;min-width:180px;max-width:240px;color:var(--ink);overflow-wrap:anywhere;font-family:inherit}
.stop-popup .popup-close{position:absolute;right:6px;top:4px;width:44px;height:44px;font-size:24px;background:var(--paper);border-radius:8px}
.stop-popup p:empty{display:none}
.stop-popup .secondary{min-height:44px;margin-top:8px;padding:10px}
.stop-popup{padding-top:0;min-width:180px;max-width:260px}
.popup-heading{display:flex;align-items:center;gap:6px;min-height:44px}
.popup-heading b{font-size:15px;font-weight:600;line-height:1.25;flex:1;min-width:0}
.stop-popup .popup-close{position:static;flex:0 0 44px}
.stop-popup p{margin:2px 0}
.stop-popup small{margin:0}
.next-hint{font-size:22px;opacity:.25;max-width:50px;overflow-wrap:anywhere;pointer-events:none}
.next-hint:empty{display:none}
.day-progress{height:3px;margin:0 0 9px;background:#7b998515;mask-image:linear-gradient(to right,transparent,#000 8%,#000 92%,transparent)}
.day-progress>span{display:block;height:100%;width:0;background:#78938780;transition:width .25s}
#observation{position:absolute;inset:0;pointer-events:none;z-index:4}
.overview-marker{width:44px;height:44px;background:transparent;padding:0;display:grid;place-items:center;color:var(--ink)}
.overview-marker>span{background:var(--paper);border:2px solid var(--point-color,var(--route));border-radius:8px;min-width:22px;font-size:12px;padding:2px}
.overview-direction{font-size:18px;color:#226a59;text-shadow:0 1px white;pointer-events:none}
.maplibregl-popup-content{background:var(--paper);border-radius:8px;padding:12px}
.maplibregl-popup-tip{border-top-color:var(--paper)!important}
@media(max-width:360px){
  .mode-label{font-size:var(--text-caption);padding:6px;max-width:calc(100% - 100px)}
}
@media(max-width:360px){
  .prep-address{grid-template-columns:minmax(0,1fr)}
  .prep-address>.quantity,.prep-address>.prep-toggle{justify-self:end}
  .prep-sections b{font-size:var(--text-caption)}
}
/* Version de l'application : présente mais effacée, à côté de « Démo » (audit E-02). */
.app-version{font-size:var(--text-caption);color:var(--muted);opacity:.45;font-variant-numeric:tabular-nums;white-space:nowrap}
/* Aperçu depuis l'accueil (19/09) : loupe à droite de la tournée choisie. */
.route-card .overview-open{margin-left:auto;display:grid;place-items:center;color:var(--ink)}
/* Menu de tournée en liste (MAJ-092) et recherche d'adresse d'une mission (19/09). */
.menu-summary{margin:0 0 10px;color:var(--muted);font-size:14px}
.menu-summary b{color:var(--ink);text-transform:capitalize}
.menu-list{display:flex;flex-direction:column;border-top:1px solid var(--border);margin-bottom:14px}
.menu-row{display:flex;align-items:center;gap:12px;min-height:52px;padding:6px 4px;border:0;border-bottom:1px solid var(--border);background:transparent;color:var(--ink);font:inherit;font-size:16px;text-align:left;cursor:pointer;touch-action:manipulation}
.menu-icon{width:28px;text-align:center;font-size:20px}
.menu-label{flex:1}
.menu-chevron{color:var(--muted);font-size:22px}
.menu-validate{width:100%;margin-bottom:12px}
/* Interrupteur discret, dans le style de l'application (remplace la case à cocher native). */
#sheet-body .menu-switch,.menu-switch{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:44px;margin:0;padding:0 4px;font-size:14px;font-weight:400;color:var(--muted);cursor:pointer;touch-action:manipulation}
.menu-switch input{appearance:none;-webkit-appearance:none;flex:none;position:relative;box-sizing:content-box;width:51px;height:31px;margin:0;border-radius:999px;background:var(--border);background-clip:padding-box;border:7px solid transparent;cursor:pointer;transition:background .2s}
.menu-switch input::before{content:'';position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003;transition:transform .2s}
.menu-switch input:checked{background:var(--route)}
.menu-switch input:checked::before{transform:translateX(20px)}
.menu-switch input:focus-visible{outline:2px solid var(--route);outline-offset:2px}
.menu-validate:disabled{opacity:.45}
.menu-note{margin:-6px 0 10px;font-size:12px;color:var(--muted);text-align:center}
.pace-current{display:flex;flex-direction:column;gap:3px;padding-bottom:10px;border-bottom:1px solid var(--border)}
.pace-current b{font-size:18px}
.pace-current small,.pace-status small,.pace-stats small{display:block;color:var(--muted);font-size:12px;line-height:1.4}
#pace-pause{width:100%;min-height:44px;margin:4px 0 14px}
.pace-status{display:flex;flex-direction:column;gap:4px;padding:12px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.pace-status b{font-size:17px;color:var(--ink)}
.pace-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0}
.pace-stats>div{min-width:0}
.pace-stats b{display:block;margin:3px 0;font-size:16px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.pace-history{border-top:1px solid var(--border)}
.pace-history details{border-bottom:1px solid var(--border);padding:10px 0}
.pace-history summary{cursor:pointer;min-height:32px;font-weight:600}
.pace-history ul{padding-left:18px;font-size:13px;line-height:1.5;overflow-wrap:anywhere}
.cidex-tabs{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--border);margin-bottom:12px;gap:8px}
.cidex-tabs button{min-height:44px;background:transparent;border-bottom:3px solid transparent;color:var(--muted);font-weight:650}
.cidex-tabs button[aria-selected=true]{border-color:var(--green);color:var(--ink)}
#cidex-panel input[type=text]{width:100%;min-height:44px;border:1px solid var(--border);border-radius:8px;padding:10px;background:var(--paper);color:var(--ink)}
#cidex-panel .menu-label{min-width:0;overflow-wrap:anywhere}
.cidex-counter{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:14px 0 8px}
.cidex-counter .quantity{grid-template-columns:44px 44px}
.cidex-member{display:flex;align-items:center;gap:8px;min-height:60px;padding:8px 0;border-bottom:1px solid var(--border)}
#sheet-body .cidex-anchor,#sheet-body .cidex-check{flex:1;display:flex;align-items:center;gap:10px;min-width:0;margin:0;font-weight:500;min-height:44px;cursor:pointer}
.cidex-member input{flex:none;width:22px;height:22px;accent-color:var(--green)}
.cidex-member label span{min-width:0;overflow-wrap:anywhere}
.cidex-member small{font-size:12px}
.cidex-member .round{flex:none;box-shadow:none;border:1px solid var(--border);font-size:22px}
.cidex-destination #address-street{overflow-wrap:anywhere}
.cidex-destination .press-badge{font-size:12px;padding:5px 8px}
.cidex-marker{border-color:var(--trail)}
.house-marker{display:grid;place-items:center;background:var(--paper);color:var(--house);border:2px solid var(--house);width:36px;height:36px;border-radius:50%;font-size:24px;box-shadow:var(--shadow)}
#cidex-error{color:#ad3535}
.mission-result{display:flex;flex-direction:column;align-items:flex-start;gap:1px;min-height:48px;padding:6px 10px;border:1px solid var(--border);border-radius:8px;background:var(--paper);color:var(--ink);text-align:left;touch-action:manipulation}
.mission-result small{color:var(--muted);margin-top:1px}
.guidance{cursor:default}
/* 19/09 : « Modifier le prochain arrêt » à la taille de son texte, recentrage remonté sur la même ligne, à droite. */
.nav-actions{display:flex;align-items:center;gap:8px;margin-top:4px}
.nav-actions .search-pill{width:auto;flex:0 1 auto;margin-top:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav-actions #recenter{margin-left:auto;flex:none}
.map-tools:empty{display:none}
/* Aperçu (19/09) : deux boutons ronds, options repliées dans un panneau qui s'ouvre au toucher. */
.observation-bar{pointer-events:auto;position:absolute;top:max(10px,env(safe-area-inset-top));left:12px;display:flex;gap:8px}
.observation-bar .round{background:var(--paper);box-shadow:var(--shadow);font-size:20px}
#observation-options[aria-expanded=true]{background:var(--route);color:#fff}
.observation-panel{pointer-events:auto;position:absolute;top:calc(max(10px,env(safe-area-inset-top)) + 56px);left:12px;width:min(280px,calc(100% - 24px));background:var(--paper);border-radius:14px;padding:4px 12px;box-shadow:var(--shadow)}
.observation-panel .menu-switch{color:var(--ink);border-bottom:1px solid var(--border)}
.observation-panel .menu-switch:last-child{border-bottom:0}
.overview-dot{width:22px;height:22px;display:grid;place-items:center;background:transparent;border:0;padding:0}
.overview-dot>span{width:9px;height:9px;border-radius:50%;background:var(--point-color,var(--route));box-shadow:0 0 0 2px var(--paper)}
/* Pendant l'Aperçu, l'en-tête de l'accueil laisse la place aux deux boutons. */
body.observing .brand{display:none}
/* Bulle plus légère (19/09) : adresse en 15 px demi-gras, zone en petit dessous. */
.stop-popup{font-size:14px}
.stop-popup .popup-close{font-size:20px}
.stop-popup .popup-meta{display:block;color:var(--muted);font-size:12px;margin-top:-6px}
/* Aperçu : boutons A, B, P à côté de ⌂ et ⚙. */
.observation-parts{display:flex;gap:6px;margin-left:4px}
.observation-parts button{min-width:44px;min-height:44px;border-radius:999px;border:1px solid var(--border);background:var(--paper);color:var(--ink);font-weight:700;box-shadow:var(--shadow);touch-action:manipulation}
.observation-parts button[aria-pressed=true]{background:#e8c65a;border-color:var(--ink)}
/* 19/09 : « Sauvegarde locale · Carte locale » n'apporte rien en tournée ; un échec d'enregistrement reste signalé par un message. */
.footer-row{display:none}
/* 19/09 : colis et recommandés du jour, une ligne par adresse ; formulaire d’ajout aux boutons de l’application. */
.field-label{margin:14px 0 6px;font-size:12px;font-weight:700;letter-spacing:.4px;color:var(--muted);text-transform:uppercase}
#sheet-body>.field-label:first-child{margin-top:0}
.mission-add{margin:0 0 6px;padding:13px 16px;min-height:48px}
.mission-row{min-height:60px}
.mission-row .menu-label{min-width:0;overflow-wrap:anywhere}
.mission-row b{display:block;font-size:16px}
.mission-row small{font-size:13px;margin-top:2px}
.mission-results{max-height:min(34vh,260px);overflow:auto;display:flex;flex-direction:column;gap:4px}
.mission-results:not(:empty){margin-top:6px}
.mission-chip{display:flex;align-items:center;gap:10px;min-height:52px;padding:8px 6px 8px 12px;border:1px solid var(--route);border-radius:11px}
.mission-chip>span{flex:1;min-width:0;overflow-wrap:anywhere}
.mission-chip small{font-size:12px}
.mission-chip .text-button{padding:8px 10px;text-decoration:none;color:var(--route);font-weight:650;font-size:14px}
.segmented{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;border-radius:12px;background:var(--surface-2)}
.segmented button{min-height:44px;border-radius:9px;background:transparent;font-size:15px;font-weight:600;color:var(--muted);touch-action:manipulation}
.segmented button[aria-checked=true]{background:var(--paper);color:var(--ink);box-shadow:0 1px 4px #233e3320}
.mission-quantity{display:flex;align-items:center;justify-content:space-between;margin-top:14px}
.mission-quantity .field-label{margin:0}
.mission-save{justify-content:center;margin-top:18px}
.mission-total b{text-transform:none}
.mission-actions button.confirm{background:var(--warn-bg);color:var(--warn-ink);font-weight:650}
.small-button.confirm{background:var(--warn-bg);color:var(--warn-ink)}
/* 19/09 (MAJ-004) : adresse à vérifier, dans la fiche ⋯. */
.check-block{margin:0 0 12px;padding:10px 12px;border-radius:12px;background:var(--warn-bg);color:#5c3413}
.check-block p{margin:0 0 6px;font-size:14px;line-height:1.4}
.check-block p+p{margin-top:10px}
.check-block .secondary{margin-top:6px;background:var(--paper)}
.check-block .text-button{min-height:0;padding:0 4px;color:inherit}
.check-block input{margin-top:8px}
.check-block #number-form+p,.check-block .secondary+p{margin-top:14px}
/* 19/09 (MAJ-094) : scanner des étiquettes, plein écran au-dessus de tout. */
#scanner{position:fixed;inset:0;z-index:40;background:#000;color:#fff;overflow:hidden}
#scan-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.scan-top{position:absolute;top:max(12px,env(safe-area-inset-top));left:12px;right:12px;display:flex;align-items:center;gap:10px;z-index:2}
.scan-top .round{background:#ffffffe0;color:var(--ink)}
.scan-type{flex:1;background:#ffffff26}
.scan-type button{color:#fff}
.scan-type button[aria-checked=true]{background:#fff;color:var(--ink)}
.scan-count{position:absolute;top:calc(max(12px,env(safe-area-inset-top)) + 58px);left:0;right:0;margin:0;text-align:center;font-weight:700;font-size:15px;text-shadow:0 1px 3px #000;z-index:2}
.scan-frame{position:absolute;left:5%;width:90%;top:32%;height:22%;border:3px solid #fff;border-radius:14px;box-shadow:0 0 0 100vmax #00000059;transition:border-color .15s;z-index:1}
.scan-frame[data-flash=ok]{border-color:#3fb489;box-shadow:0 0 0 100vmax #13664d59}
.scan-frame[data-flash=warn]{border-color:#e0a050}
.scan-frame[data-flash=dup]{border-color:#9aa6ad}
.scan-live-hint{position:absolute;top:calc(54% + 12px);left:16px;right:16px;margin:0;text-align:center;font-size:15px;font-weight:600;text-shadow:0 1px 3px #000;z-index:2}
.scan-live-hint small{display:block;color:#e6ece9;font-size:12px;font-weight:400;margin-top:4px}
.scan-choice{position:absolute;left:12px;right:12px;top:18%;padding:14px;border-radius:16px;background:var(--paper);color:var(--ink);z-index:3;box-shadow:var(--shadow)}
.scan-choice p{margin:0 0 6px;font-size:18px;font-weight:700}
.scan-choice .secondary{margin-top:8px}
.scan-candidate{text-align:left;font-size:16px}
.scan-bottom{position:absolute;left:12px;right:12px;bottom:max(14px,env(safe-area-inset-bottom));z-index:2}
.scan-banner{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;padding:10px 12px;border-radius:12px;font-size:15px;font-weight:650;background:#e3f1ec;color:var(--green)}
.scan-banner>span:first-child{flex:1;min-width:0;overflow-wrap:anywhere}
.scan-banner[data-kind=away]{background:var(--warn-bg);color:var(--warn-ink)}
.scan-banner[data-kind=duplicate]{background:#e6e9eb;color:#44525a}
.scan-banner[data-kind=error]{background:var(--warn-bg);color:var(--warn-ink)}
.scan-actions{display:flex;gap:6px}
.scan-actions .secondary{width:auto;margin:0;min-height:44px;padding:8px 12px;font-size:14px;background:#fff}
.scan-done{justify-content:center;margin:0}
body.scanning{overflow:hidden}
@media(prefers-reduced-motion:reduce){
  .scan-frame{transition:none}
}
/* Icônes dessinées (MAJ-101, audit V-01) : un seul jeu dans la page (#i-…), trait de la couleur du texte, centrées au pixel près.
   Les emojis 📰 📦 ✉️ 📮 📪 restent des emojis. */
.sprite{position:absolute;width:0;height:0;overflow:hidden}
.icon{width:22px;height:22px;display:block;flex:none;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.icon.inline{display:inline-block;width:1.15em;height:1.15em;vertical-align:-.2em;margin-right:6px}
.brand-icon .icon{width:26px;height:26px}
.menu-icon .icon{margin:0 auto}
.depot-marker .icon{width:18px;height:18px;stroke-width:2.2}
.stop-popup .popup-close{display:grid;place-items:center}
.stop-popup .popup-close .icon{width:18px;height:18px}
/* Presse du partageable (21/09) : interrupteur du jour, sous les sections de préparation. */
/* Récapitulatif d'avant départ : rappel discret d'un réglage du jour, sans alarmer. */
/* Choix du type après une lecture (21/09) : deux gros boutons au pouce, rien n'est compté avant. */
.scan-kind-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0}
.scan-kind{top:calc(54% + 16px)}
.scan-kind-buttons button{display:grid;justify-items:center;place-content:center;gap:2px;margin:0;padding:10px 8px;min-height:74px;text-align:center}
.scan-kind-icon{font-size:22px;line-height:1}
.scan-kind-word{font-size:16px;line-height:1.2;overflow-wrap:anywhere}
#scan-kind-address{font-size:17px;font-weight:700;margin:0;text-align:center;overflow-wrap:anywhere}
/* Colis annoncés sans adresse (21/09) : une seule ligne en tête, impossible à rater, jamais un dossier fourre-tout. */
.no-address{border:1px dashed var(--border);border-radius:10px;padding:10px 12px;margin:4px 0 10px}
.no-address small{margin-top:2px}

/* 4. Verre et ressenti iOS (refonte, lot A, 10 octobre 2026) — maquette « Copilot', comme si Apple l'avait développé ».
   Placé en dernier : ces règles priment sur les parties 2 et 3. Valeurs dans les jetons de la partie 1. */
/* Retour immédiat à chaque appui (V-06) : léger enfoncement, sauf les repères de la carte qui sont placés par la carte. */
:where(button,a.primary,a.secondary,.file-label){transition:scale var(--motion-press) ease,filter var(--motion-press) ease}
:where(button,a.primary,a.secondary,.file-label):not(:disabled):not(.stop-marker):not(.overview-marker):not(.overview-dot):active{scale:.97;filter:brightness(.93)}
/* Boutons ronds en verre (fiches, barre de l'Aperçu, outils) ; ceux du bandeau sombre et de la carte d'arrêt gardent leur style. */
.round{background:var(--glass-control);border:1px solid var(--glass-edge);box-shadow:var(--glass-control-shadow);color:var(--ink)}
.prep-toolbar .round{border-radius:50%}
/* Fiche du bas en verre (V-05) : posée à 8 px des bords, poignée, entrée en glissant, fermeture en la tirant vers le bas. */
#sheet{inset:auto 0 max(8px,env(safe-area-inset-bottom)) 0;margin:0 auto;width:min(520px,calc(100% - 16px));max-width:calc(100% - 16px);
  max-height:calc(100dvh - max(20px,env(safe-area-inset-top) + 12px) - max(8px,env(safe-area-inset-bottom)));
  border-radius:var(--radius-sheet);background-color:var(--glass-bg);background-image:var(--glass-sheen);
  -webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);border:1px solid var(--glass-edge);box-shadow:var(--glass-shadow);
  transition:transform var(--motion-sheet) var(--ease-spring)}
#sheet:has(#prep-search){height:calc(100dvh - max(20px,env(safe-area-inset-top) + 12px) - max(8px,env(safe-area-inset-bottom)))}
#sheet[open]{animation:sheet-in var(--motion-sheet) var(--ease-spring)}
#sheet::backdrop{background:rgba(22,46,51,.22)}
#sheet[open]::backdrop{animation:fade-in var(--motion-sheet) ease}
#sheet.dragging{transition:none}
.sheet-grabber{flex:none;width:36px;height:5px;border-radius:3px;background:rgba(24,42,53,.22);margin:8px auto 0}
.sheet-head{background:transparent;border-bottom:0;padding:4px 14px 10px 20px;touch-action:none;cursor:grab}
.sheet-head h2{font-size:24px;line-height:1.2;font-weight:800;letter-spacing:-.5px}
@keyframes sheet-in{from{transform:translateY(105%)}}
@keyframes fade-in{from{opacity:0}}
/* Messages en bannière (V-12) : en haut de l'écran, en verre, glissent depuis le haut ; les touchers passent au travers. */
#toast{position:fixed;z-index:50;top:calc(max(10px,env(safe-area-inset-top)) + 4px);left:50%;transform:translateX(-50%);
  width:min(440px,calc(100% - 24px));max-width:none;padding:12px 16px;border-radius:var(--radius-l);
  background-color:var(--glass-bg-strong);background-image:var(--glass-sheen);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);
  border:1px solid var(--glass-edge);box-shadow:inset 0 1px 1px rgba(255,255,255,.95),0 8px 22px rgba(24,42,53,.16);
  color:var(--ink);font-size:15px;font-weight:600;line-height:1.4;text-align:left;pointer-events:none}
#toast:not([hidden]){animation:banner-in .35s var(--ease-spring)}
#toast.leaving{animation:banner-out .25s ease forwards}
@keyframes banner-in{from{transform:translate(-50%,calc(-100% - 20px));opacity:0}}
@keyframes banner-out{to{transform:translate(-50%,calc(-100% - 20px));opacity:0}}
/* Passage accueil ↔ tournée (V-17) : les panneaux arrivent en glissant au lieu d'apparaître d'un coup. */
#setup:not([hidden]){animation:rise-in .4s var(--ease-spring)}
#navigation:not([hidden]) .nav-top{animation:drop-in .4s var(--ease-spring)}
#navigation:not([hidden]) .nav-bottom{animation:rise-in .45s var(--ease-spring)}
@keyframes rise-in{from{transform:translateY(24px);opacity:0}}
@keyframes drop-in{from{transform:translateY(-24px);opacity:0}}
/* Écran de chargement : le même que l'image de lancement (V-16), pour un démarrage sans flash. */
#loading{display:grid;place-content:center;justify-items:center;gap:18px;color:var(--muted);font-size:15px}
#loading .brand-icon{width:72px;height:72px;border-radius:22px}
#loading .brand-icon .icon{width:40px;height:40px}
/* Réduire la transparence (réglage d'accessibilité de l'iPhone) : verre remplacé par un fond plein. */
@media(prefers-reduced-transparency:reduce){
  :root{--glass-bg:var(--paper);--glass-bg-strong:var(--paper);--glass-filter:none;--glass-control:#fff}
}

/* 5. Navigation (refonte, lot B, 10 octobre 2026) — maquette 2 b : bandeau sombre à deux niveaux, trois boutons ronds,
   carte d'arrêt en verre. Les zones vides laissent passer les gestes vers la carte. */
.nav-top,.nav-bottom{pointer-events:none}
.bandeau,#gps-pill,#return-original,#destination,.above-card>*,.map-tools{pointer-events:auto}
.bandeau{position:relative;border-radius:var(--radius-sheet);overflow:hidden;color:#fff;border:1px solid rgba(255,255,255,.2);
  box-shadow:inset 0 1px 1px rgba(255,255,255,.28),0 12px 30px rgba(24,42,53,.25);-webkit-backdrop-filter:blur(26px) saturate(170%);backdrop-filter:blur(26px) saturate(170%)}
.bandeau .guidance{display:flex;align-items:center;gap:14px;margin:0;padding:20px 20px 16px;border-radius:0;box-shadow:none;
  background-color:rgba(24,42,53,.84);background-image:linear-gradient(180deg,rgba(255,255,255,.14),rgba(255,255,255,0) 60%)}
.bandeau .maneuver{flex:none;display:grid;place-items:center;min-width:0}
.bandeau .maneuver .icon{width:46px;height:46px;stroke-width:2.2}
.guidance-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
#distance{font-size:34px;line-height:38px;font-weight:800;letter-spacing:-1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#guidance-text{margin:0;font-size:17px;line-height:22px;font-weight:600;color:#dce7e3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.guidance-side{flex:none;display:flex;flex-direction:column;align-items:flex-end;padding-left:12px;border-left:1px solid rgba(255,255,255,.18)}
#stop-km{font-size:26px;line-height:30px;font-weight:800;letter-spacing:-.5px;font-variant-numeric:tabular-nums}
#stop-km-label{font-size:13px;color:#dce7e3}
.next-row{display:flex;align-items:center;gap:12px;padding:10px 10px 18px 22px;background:rgba(24,42,53,.64)}
.next-label{flex:none;font-size:13px;font-weight:800;letter-spacing:.8px;color:#dce7e3}
.next-stops{flex:1;min-width:0;display:flex;gap:8px;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#000 0%,#000 62%,rgba(0,0,0,.08) 100%);mask-image:linear-gradient(90deg,#000 0%,#000 62%,rgba(0,0,0,.08) 100%)}
.next-chip{flex:none;padding:4px 10px;border-radius:10px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.22);font-size:17px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.next-chip.has-items{background:rgba(244,197,66,.3);border-color:rgba(244,197,66,.6)}
.next-row .round{flex:none;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.22);box-shadow:none;color:#fff}
.next-row .round[aria-pressed=true]{background:rgba(255,255,255,.3)}
.bandeau-grabber{position:relative;display:block;width:120px;height:44px;margin:-30px auto 0;padding:0;background:transparent;border:0;cursor:pointer}
.bandeau-grabber span{position:absolute;left:50%;bottom:7px;width:36px;height:5px;margin-left:-18px;border-radius:3px;background:rgba(255,255,255,.4)}
.upcoming{background:rgba(24,42,53,.7);padding-bottom:22px}
.upcoming-head{display:flex;align-items:baseline;justify-content:space-between;padding:12px 20px 6px;font-size:13px;font-weight:800;letter-spacing:.8px;color:#dce7e3}
.upcoming-head span+span{font-weight:400;letter-spacing:0;color:#b9c8c2}
.upcoming-list{max-height:min(52dvh,480px);overflow-y:auto;overscroll-behavior:contain;-webkit-mask-image:linear-gradient(180deg,#000 85%,rgba(0,0,0,.05));mask-image:linear-gradient(180deg,#000 85%,rgba(0,0,0,.05))}
.upcoming-row{display:flex;align-items:center;gap:12px;width:100%;min-height:58px;padding:6px 18px 6px 20px;border:0;border-bottom:1px solid rgba(255,255,255,.1);background:transparent;color:#fff;text-align:left}
.upcoming-row>b{min-width:58px;font-size:24px;line-height:28px;letter-spacing:-.6px;font-variant-numeric:tabular-nums}
.upcoming-row>span:nth-child(2){flex:1;min-width:0;display:flex;flex-direction:column}
.upcoming-row .street{font-size:16px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.upcoming-row .numbers{font-size:13px;color:#e8efec;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.upcoming-row small{display:block;margin:0;font-size:12px;color:#b9c8c2}
.upcoming-row .icons{flex:none;font-size:20px;line-height:22px;white-space:nowrap}
.upcoming-row.has-items{background:rgba(244,197,66,.16)}
.upcoming-row.cidex>b{font-size:28px}
/* Sous le bandeau : GPS imprécis (maquette 9) et retour au tracé d'origine (9 b). */
.status-pill{display:flex;align-items:center;gap:8px;width:fit-content;max-width:100%;min-height:36px;margin:0;padding:0 14px;border-radius:18px;font-size:14px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.status-pill.warn{margin:8px auto 0;min-height:40px;padding:0 16px;border-radius:20px;color:#8a4b10;background:rgba(253,236,214,.9);border:1px solid rgba(255,255,255,.85);box-shadow:inset 0 1px 1px rgba(255,255,255,.95),0 6px 16px rgba(24,42,53,.14);-webkit-backdrop-filter:blur(20px) saturate(190%);backdrop-filter:blur(20px) saturate(190%)}
.status-pill.warn::before{content:'';flex:none;width:8px;height:8px;border-radius:4px;background:#e08a2e}
.status-pill.dark{color:#fff;font-size:13px;background:rgba(24,42,53,.76);border:1px solid rgba(255,255,255,.22);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}
.glass-pill{display:inline-flex;align-items:center;gap:6px;margin-top:8px;min-height:46px;padding:0 16px;border-radius:23px;color:var(--ink);font-size:15px;font-weight:700;
  background-color:rgba(246,250,236,.74);background-image:linear-gradient(180deg,rgba(255,255,255,.6),rgba(255,255,255,.08));border:1px solid rgba(255,255,255,.85);
  box-shadow:inset 0 1px 1px rgba(255,255,255,.95),0 8px 18px rgba(24,42,53,.16);-webkit-backdrop-filter:blur(20px) saturate(190%);backdrop-filter:blur(20px) saturate(190%)}
.glass-pill .icon{color:var(--route)}
#return-original{width:auto}
/* Trois boutons ronds sur la carte, à droite : menu, liste des arrêts, recentrer (entouré de bleu quand la carte ne suit plus). */
.map-tools{flex-direction:column;gap:14px;margin-top:8px}
.map-button{width:60px;height:60px;min-width:60px;border-radius:30px;color:var(--ink);
  background-color:rgba(246,250,236,.62);background-image:linear-gradient(180deg,rgba(255,255,255,.6),rgba(255,255,255,.08));border:1px solid rgba(255,255,255,.85);
  box-shadow:inset 0 1px 1px rgba(255,255,255,.95),0 8px 18px rgba(24,42,53,.16);-webkit-backdrop-filter:blur(20px) saturate(190%);backdrop-filter:blur(20px) saturate(190%)}
.map-button .icon{width:26px;height:26px;stroke-width:2.2}
#recenter{color:var(--position)}
#recenter.lost{border:2px solid var(--position);background-color:rgba(246,250,236,.88)}
/* Ligne au-dessus de la carte d'arrêt : démonstration, hors connexion, simulation. */
.above-card{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;font-size:12px}
.above-card>[hidden]{display:none}
#offline-state{margin:0 auto}
/* Carte d'arrêt en verre : numéro et voie, rang discret à droite, missions à gauche, emoji de l'adresse suivante à droite,
   progression au-dessus de « précédente · suivante ». */
.destination{display:flex;flex-direction:column;gap:10px;padding:0 20px 16px;border-radius:var(--radius-sheet);
  background-color:rgba(250,252,242,.78);background-image:linear-gradient(180deg,rgba(255,255,255,.6) 0%,rgba(255,255,255,.12) 45%,rgba(255,255,255,.22) 100%);
  border:1px solid var(--glass-edge);box-shadow:inset 0 1px 1px rgba(255,255,255,.95),0 12px 32px rgba(24,42,53,.16);
  -webkit-backdrop-filter:blur(26px) saturate(190%);backdrop-filter:blur(26px) saturate(190%);transition:background-color .2s}
.card-grabber{display:block;align-self:center;width:120px;height:44px;margin:0 0 -26px;padding:0;background:transparent;border:0;position:relative}
.card-grabber span{position:absolute;left:50%;top:8px;width:36px;height:5px;margin-left:-18px;border-radius:3px;background:rgba(24,42,53,.22)}
.destination .eyebrow{margin-top:6px}
.destination .address-row{display:flex;align-items:center;gap:10px;margin:0}
.destination .address-row>strong{font-size:40px;line-height:44px;font-weight:800;letter-spacing:-1.5px;font-variant-numeric:tabular-nums;max-width:none;flex:none}
.address-main{flex:1;min-width:0}
.destination .address-row h2{font-size:20px;line-height:24px;font-weight:700;letter-spacing:-.4px}
#stop-meta{margin-top:2px;font-size:var(--text-caption);color:var(--muted)}
#stop-meta:empty{display:none}
.destination .counter{flex:none;align-self:center;font-size:13px;font-weight:600;color:#7a868d}
.mission-row{display:flex;align-items:center;gap:6px;min-height:0}
.mission-row:has(#badges:empty):has(#next-hint:empty){display:none}
.destination .badges{flex:1;min-width:0}
.destination .badge{padding:6px 11px;border-radius:11px;background:rgba(255,240,197,.95);color:var(--badge-ink);font-size:15px;font-weight:700;box-shadow:inset 0 1px 1px rgba(255,255,255,.8)}
.destination .badge.press-badge{background:rgba(255,240,197,.95);color:var(--badge-ink)}
.destination .badge.approx{background:rgba(252,233,219,.95);color:var(--warn-ink)}
.destination .next-hint{flex:none;margin-left:auto;font-size:22px;line-height:28px;opacity:.3;max-width:none}
.destination .day-progress{height:5px;margin:4px 0 0;border-radius:3px;background:rgba(24,42,53,.1);mask-image:none;-webkit-mask-image:none;overflow:hidden}
.destination .day-progress>span{border-radius:3px;background:var(--green)}
.destination .swipe-hint{padding:0;font-size:var(--text-caption);color:#56656e}
.destination .destination-actions{display:grid;grid-template-columns:56px minmax(0,1fr) 96px;gap:8px;margin:0;padding:0;border-top:0}
.destination-actions button{min-height:52px;border-radius:26px;font-size:16px}
.destination-actions .back-button{display:grid;place-items:center;padding:0;background:rgba(255,255,255,.65);border:1px solid rgba(255,255,255,.9);box-shadow:inset 0 1px 1px rgba(255,255,255,.95)}
.destination-actions .delivered{background-color:var(--green);background-image:linear-gradient(180deg,rgba(255,255,255,.22),rgba(255,255,255,0) 55%);border:1px solid rgba(255,255,255,.35);color:#fff;font-size:17px;font-weight:750;box-shadow:inset 0 1px 1px rgba(255,255,255,.4),0 6px 16px rgba(19,102,77,.28)}
.destination-actions .skip{background:rgba(255,255,255,.65);border:1px solid rgba(255,255,255,.9);color:var(--ink);font-weight:650;box-shadow:inset 0 1px 1px rgba(255,255,255,.95)}
.destination-actions #trip-summary{grid-column:1 / -1;margin:0;border-radius:26px}
/* Glissement de la carte d'arrêt : au-delà du seuil, la carte se teinte (vert : suivante ; gris : précédente). */
.destination[data-swipe=next]{background-color:rgba(225,242,235,.92)}
.destination[data-swipe=back]{background-color:rgba(233,236,232,.92)}
/* Point bleu avec cône d'orientation, sans halo (V-10). Le cône est dessiné vers la droite, comme l'ancienne flèche. */
.vehicle{width:52px;height:52px;background:transparent;border:0;box-shadow:none;display:grid;place-items:center;font-size:0}
.vehicle-arrow{position:absolute;inset:0;display:block}
.vehicle-arrow svg{display:block;width:100%;height:100%}
.vehicle-dot{position:relative;width:22px;height:22px;border-radius:50%;background:var(--position);border:3.5px solid #fff;box-shadow:0 2px 8px rgba(33,76,112,.35)}
/* Mentions de la carte, lisibles sous la carte d'arrêt (V-19). */
#navigation{padding-bottom:max(30px,calc(env(safe-area-inset-bottom) + 14px))}
.maplibregl-ctrl-bottom-left .maplibregl-ctrl-attrib{margin:0 0 4px 12px;padding:0 4px;background:transparent!important;font-size:var(--text-caption)!important;color:#4f5d52}
.maplibregl-ctrl-attrib a{color:inherit}
/* Bannière sous le bandeau pendant la tournée (maquette 9 b). */
body.navigation-active #toast{top:calc(var(--nav-top-bottom,0px) + 10px)}
/* Très grand texte : numéro et voie passent l'un sous l'autre, actions empilées. */
.large-type .destination .address-row{display:flex;flex-wrap:wrap}
.large-type .address-row>div{grid-column:auto;grid-row:auto}
.large-type #details{grid-column:auto;grid-row:auto}
.large-type .destination .destination-actions{grid-template-columns:1fr}
.large-type .map-button{width:64px;height:64px}
/* Paysage : bandeau et carte d'arrêt à gauche, boutons ronds à droite. */
@media(min-width:650px) and (max-height:500px){
  .bandeau .guidance{padding:10px 14px}
  #distance{font-size:26px;line-height:30px}
  .next-row{padding:6px 8px 12px 16px}
  .destination{gap:6px;padding-bottom:10px}
  .destination .address-row>strong{font-size:30px;line-height:34px}
  .map-tools{gap:10px;margin-top:0}
  .map-button{width:52px;height:52px;min-width:52px}
}
.upcoming-empty{margin:0;padding:14px 20px;font-size:14px;color:#b9c8c2}
/* Petits écrans (iPhone SE) : les trois boutons ronds passent en ligne pour ne jamais recouvrir la carte d'arrêt. */
@media(max-height:700px) and (max-width:649px){
  .map-tools{flex-direction:row;gap:8px;margin-top:6px}
  .map-button{width:48px;height:48px;min-width:48px;border-radius:24px}
  .map-button .icon{width:22px;height:22px}
}
/* 6. Consignes de direction (lot C) : pictogramme (miroir pour la gauche), panneau de route jaune comme sur la maquette. */
.bandeau .maneuver.left .icon{transform:scaleX(-1)}
.road-ref{display:inline-block;margin-left:4px;padding:1px 7px;border-radius:6px;background:var(--accent);color:var(--ink);font-size:17px;line-height:22px;font-weight:800;white-space:nowrap;vertical-align:1px}
#guidance-text{color:#fff;font-size:19px;line-height:24px;font-weight:700}
/* Retours du test visuel (lot B) : bandeau plus couvrant pour le soleil, boutons ronds sous la place de la bannière,
   « Passer » réduit à sa flèche sur les écrans étroits, carte d'arrêt entière en paysage. */
.bandeau .guidance{background-color:rgba(24,42,53,.9)}
.next-row{background:rgba(24,42,53,.8)}
@media(min-height:701px){.map-tools{margin-top:64px}}
@media(max-width:359px){
  .destination .destination-actions{grid-template-columns:52px minmax(0,1fr) 52px}
  .destination-actions .skip{font-size:0;padding:0}
  .destination-actions .skip::after{content:'→';font-size:20px;font-weight:700}
}
@media(min-width:650px) and (max-height:500px){
  #navigation{padding-bottom:max(6px,env(safe-area-inset-bottom))}
  .above-card{margin-bottom:4px}
  .destination .swipe-hint{display:none}
  .card-grabber{margin-bottom:-30px}
  .destination-actions button{min-height:46px}
}
/* 7. Carte sobre (lot C) : noms de rues gris doux, lisibles sur le fond ; cercle d'imprécision du GPS sous le point bleu. */
.road-label{color:#5d6b63;font-weight:600;letter-spacing:.1px;text-shadow:0 0 2px #fff,0 0 2px #fff,0 1px 3px #fff}
.vehicle-accuracy{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);border-radius:50%;background:rgba(224,138,46,.1);border:1.5px dashed rgba(224,138,46,.45);pointer-events:none;z-index:-1}
.vehicle-accuracy[hidden]{display:none}
/* Bandeau : la consigne et son panneau de route passent avant la distance jusqu'à l'arrêt (décision 4 : jamais à la ligne). */
.bandeau .guidance{gap:12px;padding:18px 16px 14px 18px}
.bandeau .maneuver .icon{width:40px;height:40px}
.guidance-side{padding-left:10px}
#stop-km{font-size:22px;line-height:26px}
#stop-km-label{font-size:12px;white-space:nowrap}
#guidance-text{font-size:18px;line-height:23px}
.road-ref{font-size:16px;line-height:21px;padding:0 6px}
/* L'ancienne règle « .guidance>div{flex:1} » partageait la place à parts égales : la colonne de droite prend juste sa taille. */
.bandeau .guidance>.guidance-side{flex:none}

/* 8. Écrans (refonte, lot D, 1re partie) — maquettes 1, 4, 13 et 18 : accueil en verre, fiches de préparation en listes
   groupées façon iOS, dans l'ordre de la tournée. */
:root{--glass-panel:rgba(255,254,250,.66);--done:#13664d}
@media(prefers-reduced-transparency:reduce){:root{--glass-panel:var(--paper)}}
/* Accueil (maquette 1) : panneau en verre, titre centré, tournée dans une carte, tuiles 2 × 2, Démarrer et Démo côte à côte. */
#setup.panel{background-color:var(--glass-panel);background-image:linear-gradient(180deg,rgba(255,255,255,.55) 0%,rgba(255,255,255,.12) 38%,rgba(255,255,255,.2) 100%);
  -webkit-backdrop-filter:blur(26px) saturate(190%);backdrop-filter:blur(26px) saturate(190%);border:1px solid rgba(255,255,255,.75);border-radius:32px;
  box-shadow:inset 0 1px 1px rgba(255,255,255,.95),inset 0 -1px 1px rgba(24,42,53,.05),0 12px 36px rgba(24,42,53,.16)}
.setup-head{display:grid;gap:4px;text-align:center}
.setup-head .eyebrow{font-size:12px;letter-spacing:1px;text-transform:uppercase}
.setup-head h1,.panel .setup-head h1{margin:0;font-size:30px;line-height:34px;font-weight:800;letter-spacing:-.8px}
#setup .route-card{margin-top:14px;padding:10px;gap:12px;border-radius:20px;background:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.8);box-shadow:inset 0 1px 1px rgba(255,255,255,.9)}
#setup .route-card strong{font-size:15px;font-weight:600}
#setup .route-number{border-radius:12px;box-shadow:inset 0 1px 1px rgba(255,255,255,.7)}
#setup .stats{padding:16px 4px 12px}
#setup .stats b{font-size:30px;letter-spacing:-1px;font-variant-numeric:tabular-nums}
#setup .stats span{font-size:13px}
.zone-button{border-radius:20px;border:1px solid rgba(255,255,255,.85);background:rgba(255,255,255,.45);box-shadow:inset 0 1px 1px rgba(255,255,255,.95);min-height:68px}
.zone-button[aria-pressed="true"]{border:1.5px solid rgba(24,42,53,.85);background-color:rgba(244,197,66,.92);background-image:linear-gradient(180deg,rgba(255,255,255,.4),rgba(255,255,255,0) 55%);box-shadow:inset 0 1px 1px rgba(255,255,255,.8),0 4px 12px rgba(158,118,10,.22)}
.zone-button.add:not([aria-pressed="true"]){color:#1f4fa3}
.prep-sections{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:14px 0 8px}
.prep-sections button{grid-template-rows:auto;gap:2px;min-height:64px;padding:8px 6px;border-radius:20px;border:1px solid rgba(255,255,255,.85);background:rgba(255,255,255,.45);box-shadow:inset 0 1px 1px rgba(255,255,255,.95)}
.prep-sections b{font-size:13px;font-weight:600;text-align:center}
.prep-sections button>span{font-size:22px;line-height:26px}
.prep-sections output{font-size:17px;font-weight:800;font-variant-numeric:tabular-nums}
#setup .app-version{display:block;text-align:center;margin-top:2px}
.setup-actions{background:transparent;border-top:0;padding:10px 0 4px}
.start-row{display:flex;gap:8px;align-items:center}
.start-row #start{flex:1;margin:0;min-height:60px;border-radius:30px;padding:0 24px;display:flex;align-items:center;justify-content:space-between;
  background-color:rgba(244,197,66,.94);background-image:linear-gradient(180deg,rgba(255,255,255,.45),rgba(255,255,255,0) 60%);border:1px solid rgba(255,255,255,.6);
  box-shadow:inset 0 1px 1px rgba(255,255,255,.85),0 10px 26px rgba(158,118,10,.3);font-size:17px;font-weight:750}
.start-row .demo-button{flex:none;width:60px;height:60px;min-width:60px;font-size:13px;font-weight:700;color:var(--ink)}
/* Fiches : sur-titre en petites capitales au-dessus du titre, boutons ronds à côté de ✕. */
.sheet-titles{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.sheet-eyebrow{font-size:12px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}
.sheet-actions{display:flex;gap:8px;flex:none}
.sheet-actions:empty{display:none}
.sheet-actions [aria-pressed="true"]{background:var(--accent);color:var(--on-accent)}
.sheet-note{font-size:13px;color:var(--muted);padding:0 6px;margin:0 0 10px;flex-shrink:0}
/* Onglets Colis / Recommandés (contrôle segmenté iOS). */
.segmented{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));padding:4px;border-radius:22px;background:rgba(24,42,53,.07);border:1px solid rgba(255,255,255,.6);margin-bottom:12px;flex-shrink:0}
.segmented button{min-height:44px;border-radius:18px;border:1px solid transparent;background:transparent;color:#3e4c55;font-size:15px;font-weight:600;padding:0 6px}
.segmented button[aria-pressed="true"]{background:rgba(255,255,255,.92);border-color:rgba(255,255,255,.95);color:var(--ink);font-weight:700;box-shadow:inset 0 1px 1px #fff,0 2px 8px rgba(24,42,53,.12)}
.prep-toolbar{margin-bottom:12px}
.prep-toolbar .round{width:50px;height:50px;min-width:50px}
.scan-pill{flex:1;min-height:50px;margin:0;border-radius:25px;display:flex;align-items:center;justify-content:center;gap:8px;font-size:16px;font-weight:750;
  background-color:rgba(244,197,66,.94);background-image:linear-gradient(180deg,rgba(255,255,255,.45),rgba(255,255,255,0) 60%);border:1px solid rgba(255,255,255,.6);
  box-shadow:inset 0 1px 1px rgba(255,255,255,.85),0 6px 16px rgba(158,118,10,.22)}
.scan-pill .icon{width:20px;height:20px}
/* Recherche : champ arrondi avec loupe. */
#sheet-body .search-field{display:flex;align-items:center;gap:8px;min-height:46px;margin:0 0 12px;padding:0 14px;border-radius:23px;background:rgba(24,42,53,.07);border:1px solid rgba(255,255,255,.6);font-weight:400;flex-shrink:0}
.search-field:focus-within{box-shadow:0 0 0 2px rgba(23,121,219,.45)}
.search-field .icon{width:18px;height:18px;color:var(--muted);flex:none}
#sheet-body .search-field input{flex:1;min-width:0;min-height:44px;border:0;background:transparent;padding:0;font-size:16px;color:var(--ink);outline:none;box-shadow:none}
/* Sans adresse : ligne jaune pâle, à placer en tournée. */
#sheet-body .no-address{flex-wrap:nowrap;gap:10px;min-height:56px;padding:4px 6px 4px 14px;margin:0 0 12px;border:1px solid rgba(255,255,255,.85);border-radius:22px;background:rgba(255,240,197,.55);flex-shrink:0}
.no-address .row-icon{font-size:20px;flex:none}
.no-address b{font-size:16px}
.no-address small{display:block;font-size:12px;color:#6b5a22}
.list-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding:0 6px;margin:0 0 8px;flex-shrink:0}
.list-head>span:first-child{font-size:13px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--muted)}
.list-head #prep-count{margin:0;font-size:13px;color:var(--muted)}
/* Liste groupée : fond de verre clair, filets décalés après le numéro d'ordre. */
.grouped{border-radius:22px;background:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.85);box-shadow:inset 0 1px 1px rgba(255,255,255,.95)}
.grouped .prep-address{position:relative;grid-template-columns:26px minmax(0,1fr) auto;gap:10px;min-height:60px;padding:6px 8px 6px 14px;border-bottom:0}
.grouped .prep-address+.prep-address::before{content:"";position:absolute;top:0;left:50px;right:0;height:1px;background:rgba(24,42,53,.07)}
.grouped .prep-address b{font-size:16px;line-height:1.3}
.grouped .prep-address small{margin-top:1px}
.grouped .empty{padding:14px}
.rank{font-size:12px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}
.grouped .prep-toggle{width:52px;min-height:44px;border-radius:14px;border:1px solid rgba(255,255,255,.9);background:rgba(255,255,255,.7);opacity:.45}
.grouped .prep-toggle[aria-pressed="true"]{opacity:1;border:1.5px solid #287157;background:var(--ok-bg)}
/* Quantité : − en verre, + jaune, chiffre en gras. */
.grouped .quantity,.no-address .quantity{grid-template-columns:44px minmax(26px,auto) 44px;gap:2px;border:0;border-radius:0;overflow:visible;background:transparent}
.grouped .quantity button,.no-address .quantity button{border-radius:22px;border:1px solid rgba(255,255,255,.9);background:rgba(255,255,255,.75);font-weight:600}
.grouped .quantity button:last-child,.no-address .quantity button:last-child{border:0;background:var(--accent);font-weight:700;box-shadow:inset 0 1px 1px rgba(255,255,255,.7)}
.grouped .quantity output,.no-address .quantity output{font-size:18px;font-weight:800}
/* Terminé : vert plein, en bas de la fiche, rappelle ce qui est choisi. */
#prep-list{margin-bottom:12px}
#sheet-body .done{flex-shrink:0;width:100%;margin-top:auto;min-height:56px;border-radius:28px;border:1px solid rgba(255,255,255,.35);color:#fff;font-size:17px;font-weight:750;
  background-color:var(--done);background-image:linear-gradient(180deg,rgba(255,255,255,.22),rgba(255,255,255,0) 55%);box-shadow:inset 0 1px 1px rgba(255,255,255,.4),0 8px 20px rgba(19,102,77,.28)}
@media(max-width:360px){
  .setup-head h1,.panel .setup-head h1{font-size:26px;line-height:30px}
  .grouped .prep-address{grid-template-columns:22px minmax(0,1fr);row-gap:4px}
  .grouped .prep-address>.quantity,.grouped .prep-address>.prep-toggle{grid-column:2;justify-self:end}
  .segmented button{font-size:14px}
}
/* Écrans bas (iPhone SE, paysage) : toute la fiche défile, la liste ne se retrouve jamais écrasée ; « Terminé » reste en bas. */
@media(max-height:700px){
  #sheet-body:has(#prep-search){display:block;overflow-y:auto}
  #sheet-body:has(#prep-search) #prep-list{overflow:visible}
  #sheet-body .done{position:sticky;bottom:0;z-index:1;margin-top:12px}
}

/* 9. Écrans (refonte, lot D, 2e partie) — maquettes 5, 6, 17, 19 à 23 et toutes les fiches sans maquette : les mêmes briques
   partout. Listes groupées en verre clair, titres de section en capitales, boutons en pilule, recherche avec loupe. */
#sheet-body .primary,#sheet-body .secondary,#unlock .primary{border-radius:28px;min-height:56px;justify-content:center;gap:8px}
#sheet-body .primary,#unlock .primary{border:1px solid rgba(255,255,255,.6);background-color:rgba(244,197,66,.94);background-image:linear-gradient(180deg,rgba(255,255,255,.45),rgba(255,255,255,0) 60%);
  box-shadow:inset 0 1px 1px rgba(255,255,255,.85),0 8px 20px rgba(158,118,10,.24);font-size:17px}
#sheet-body .secondary{border:1px solid rgba(255,255,255,.9);background:rgba(255,255,255,.6);box-shadow:var(--glass-control-shadow);font-weight:650}
#sheet-body .primary:disabled{box-shadow:none;opacity:.55}
#sheet-body .field-label{margin:16px 0 8px;padding:0 6px;font-size:13px;font-weight:800;letter-spacing:.6px}
#sheet-body .notice{border-radius:16px;background:rgba(255,240,197,.6);color:#5c4a12}
/* Listes groupées : menus, objets du jour, CIDEX, rythme, récapitulatifs. */
#sheet-body .menu-list{margin:0 0 12px;border:1px solid rgba(255,255,255,.85);border-radius:22px;background:rgba(255,255,255,.5);box-shadow:inset 0 1px 1px rgba(255,255,255,.95);overflow:hidden}
#sheet-body .menu-list>*{position:relative}
#sheet-body .menu-list>*+*::before{content:"";position:absolute;top:0;left:14px;right:0;height:1px;background:rgba(24,42,53,.07)}
#sheet-body .menu-list>:has(.menu-icon)+:has(.menu-icon)::before{left:54px}
#sheet-body .menu-row{min-height:56px;padding:6px 14px;border-bottom:0;background:transparent}
#sheet-body .menu-label{font-size:16px;font-weight:600}
#sheet-body .menu-label small{display:block;font-size:13px;font-weight:400;color:var(--muted)}
.menu-chevron{font-size:20px;color:#8c989e}
.chip{flex:none;padding:3px 10px;border-radius:10px;background:rgba(255,240,197,.95);color:#665016;font-size:14px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.progress{height:5px;margin:0 6px 14px;border-radius:3px;background:rgba(24,42,53,.1);overflow:hidden}
.progress>span{display:block;height:100%;border-radius:3px;background:var(--done)}
/* Menu « Ma journée » (maquette 5). */
#sheet-body .menu-summary{margin:-4px 6px 10px;font-size:14px;line-height:1.45}
#sheet-body .menu-card{min-height:52px;margin-top:12px;padding:0 12px 0 16px;border-radius:22px;background:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.85);box-shadow:inset 0 1px 1px rgba(255,255,255,.95);font-size:15px;font-weight:600;color:var(--ink)}
#sheet-body .menu-validate{margin-top:4px}
/* Objets du jour (maquette 19) et ajout (maquette 20). */
.mission-total{margin:0 6px 12px}
#sheet-body .mission-total .menu-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 8px;font-size:15px;color:var(--ink)}
.mission-total .progress{margin:0}
#sheet-body .unknown-list{background:rgba(255,240,197,.75)}
.unknown-list small{color:#6b5a22}
#sheet-body .mission-add{margin:0 0 4px}
#stop-search,#mission-search{width:100%;min-height:46px;padding:0 14px 0 40px;border-radius:23px;border:1px solid rgba(255,255,255,.6);font-size:16px;color:var(--ink);outline:none;
  background:rgba(24,42,53,.07) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2356656E' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='6.5'/%3E%3Cpath d='M16 16l4 4'/%3E%3C/svg%3E") no-repeat 14px 50%/18px}
#stop-search:focus,#mission-search:focus{box-shadow:0 0 0 2px rgba(23,121,219,.45)}
.mission-results:not(:empty){margin-top:10px;gap:0;border-radius:22px;background:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.85);box-shadow:inset 0 1px 1px rgba(255,255,255,.95)}
.mission-result{position:relative;min-height:52px;padding:6px 14px;border:0;border-radius:0;background:transparent}
.mission-result+.mission-result::before{content:"";position:absolute;top:0;left:14px;right:0;height:1px;background:rgba(24,42,53,.07)}
.mission-result b{font-size:16px}
.mission-results .field-label{margin:10px 0 4px}
.mission-chip{border:0;border-radius:18px;background:var(--ok-bg);padding:8px 8px 8px 14px}
#mission-unknown{width:auto;min-height:44px;margin-top:10px;padding:0 16px;font-size:15px}
.segmented button[aria-checked=true]{background:rgba(255,255,255,.92);border-color:rgba(255,255,255,.95);color:var(--ink);font-weight:700;box-shadow:inset 0 1px 1px #fff,0 2px 8px rgba(24,42,53,.12)}
.mission-quantity{min-height:56px;margin-top:12px;padding:0 6px 0 16px;border-radius:22px;background:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.85);box-shadow:inset 0 1px 1px rgba(255,255,255,.95)}
#sheet-body .mission-quantity .field-label{margin:0;padding:0;font-size:16px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--ink)}
/* Pas-à-pas dans toutes les fiches : − en verre, + jaune. */
#sheet-body .quantity{gap:2px;border:0;border-radius:0;overflow:visible;background:transparent}
#sheet-body .quantity button{border-radius:22px;border:1px solid rgba(255,255,255,.9);background:rgba(255,255,255,.75);font-weight:600}
#sheet-body .quantity button:last-child{border:0;background:var(--accent);font-weight:700;box-shadow:inset 0 1px 1px rgba(255,255,255,.7)}
#sheet-body .quantity output{font-size:18px;font-weight:800}
/* Liste des arrêts (maquette 6) : filtres en contrôle segmenté, liste groupée, prochain arrêt surligné. */
#sheet-body .stop-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin:10px 0;padding:4px;border-radius:22px;background:rgba(24,42,53,.07);border:1px solid rgba(255,255,255,.6)}
.stop-filters button{border:1px solid transparent;border-radius:18px;background:transparent;color:#3e4c55;font-weight:600}
.stop-filters [aria-pressed=true]{background:rgba(255,255,255,.92);border-color:rgba(255,255,255,.95);color:var(--ink);font-weight:700;box-shadow:inset 0 1px 1px #fff,0 2px 8px rgba(24,42,53,.12)}
#search-count{padding:0 6px}
.day-results,#elsewhere[open]>.stop-choice:first-of-type{border-radius:22px}
.day-results{background:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.85);box-shadow:inset 0 1px 1px rgba(255,255,255,.95);overflow:hidden}
.day-results>.stop-choice{position:relative;border-bottom:0;padding:8px 8px 8px 14px}
.day-results>.stop-choice+.stop-choice::before{content:"";position:absolute;top:0;left:50px;right:0;height:1px;background:rgba(24,42,53,.07)}
.day-results>.stop-choice.current{background:rgba(255,240,197,.75);border-radius:0}
.stop-choice b{font-size:16px}
.choice-button{width:44px;height:44px;min-width:44px;border-radius:22px;border:1px solid rgba(255,255,255,.9);background:rgba(255,255,255,.75);font-size:22px}
.stop-options button{border-radius:22px;border:1px solid rgba(255,255,255,.9);background:rgba(255,255,255,.8);font-weight:600}
.stop-choice.expanded{background:rgba(255,255,255,.75)}
/* Choisir la tournée (maquette 23). */
.route-choice{display:flex;align-items:center;gap:12px;width:100%;min-height:64px;padding:10px 14px;border:0;background:var(--ok-bg);color:var(--ink);text-align:left}
.route-choice .route-number{flex:none;padding:8px 9px;border-radius:12px;background:var(--accent);font-size:17px;font-weight:800}
.route-choice .icon{flex:none;width:22px;height:22px;color:var(--done);stroke-width:2.6}
/* Scan terminé (maquette 21) : bandeau de quatre cases, total en vert ; un compte vert par adresse. */
.recap-cells{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:6px;border-radius:22px;background:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.85);box-shadow:inset 0 1px 1px rgba(255,255,255,.95);overflow:hidden}
.recap-cell{display:flex;flex-direction:column;align-items:center;gap:1px;padding:10px 2px;text-align:center;min-width:0}
.recap-cell+.recap-cell{border-left:1px solid rgba(24,42,53,.07)}
.recap-cell>span{font-size:18px;line-height:22px}
.recap-cell b{font-size:24px;font-weight:800;font-variant-numeric:tabular-nums}
.recap-cell small{font-size:12px;color:var(--muted)}
.recap-cell.total{background:var(--ok-bg)}
.recap-cell.total>span,.recap-cell.total b{color:var(--done);font-weight:800}
.recap-cell.total small{color:#1c5240;font-weight:700}
.recap-row{display:flex;align-items:center;gap:10px;min-height:54px;padding:6px 14px}
.recap-row>div{flex:1;min-width:0;overflow-wrap:anywhere}
.recap-row b{display:block;font-size:16px}
.recap-row small{font-size:12px;color:var(--muted)}
.count-pill{flex:none;min-width:32px;padding:3px 10px;border-radius:12px;background:var(--ok-bg);color:#1c5240;font-size:15px;font-weight:700;text-align:center}
#sheet-body #scan-back{margin-top:12px}
/* Déverrouillage (maquette 17) : carte en verre, champ arrondi au cadenas, marque en bas. */
#unlock{background:#e3ead6}
.unlock-card{display:flex;flex-direction:column;align-items:center;gap:14px;padding:30px 22px 24px;border-radius:34px;text-align:center;
  background-color:var(--glass-panel);background-image:linear-gradient(180deg,rgba(255,255,255,.6) 0%,rgba(255,255,255,.12) 40%,rgba(255,255,255,.22) 100%);
  border:1px solid rgba(255,255,255,.85);box-shadow:inset 0 1px 1px rgba(255,255,255,.95),0 14px 40px rgba(24,42,53,.18)}
.unlock-card .brand-icon{width:64px;height:64px;border-radius:20px}
.unlock-card h1{margin:6px 0 0;font-size:30px;line-height:34px;font-weight:800;letter-spacing:-.8px}
.unlock-card>p.muted{margin:0;font-size:15px;line-height:21px}
.search-field.unlock-field{width:100%;box-sizing:border-box;display:flex;align-items:center;gap:10px;min-height:54px;padding:0 16px;border-radius:27px;background:rgba(255,255,255,.8);border:1px solid rgba(255,255,255,.95);box-shadow:inset 0 1px 2px rgba(24,42,53,.08)}
.unlock-field:focus-within{box-shadow:0 0 0 2px rgba(23,121,219,.45)}
.unlock-field .icon{width:20px;height:20px;color:var(--muted);flex:none}
#unlock-phrase{flex:1;min-width:0;min-height:44px;margin:0;padding:0;border:0;background:transparent;font-size:17px;outline:none}
#unlock-error{margin:0;min-height:18px}
#unlock .primary{width:100%;min-height:58px;border-radius:29px;margin:0}
.unlock-brand{position:absolute;left:0;right:0;bottom:max(40px,env(safe-area-inset-bottom));margin:0;text-align:center;font-size:12px;font-weight:700;letter-spacing:1.6px;text-transform:uppercase;color:var(--muted)}
@media(max-width:360px){
  .recap-cell small{font-size:10.5px}
  .recap-cell b{font-size:21px}
}
/* CIDEX (maquettes 14 et 14 b) : onglets en contrôle segmenté, nom dans une carte, « ＋ Adresse suivante » jaune, adresses
   groupées, point d'arrêt teinté de vert, position GPS en bleu. */
.cidex-tabs.segmented{gap:0;border-bottom:1px solid rgba(255,255,255,.6)}
.cidex-tabs.segmented button{border-bottom-width:1px}
.cidex-tabs.segmented button[aria-selected=true]{background:rgba(255,255,255,.92);border-color:rgba(255,255,255,.95);color:var(--ink);font-weight:700;box-shadow:inset 0 1px 1px #fff,0 2px 8px rgba(24,42,53,.12)}
.cidex-note{text-align:center;margin:4px 0 12px}
#sheet-body .field-card{display:flex;flex-direction:column;gap:2px;margin:0 0 12px;padding:10px 16px;border-radius:18px;background:rgba(255,255,255,.6);border:1px solid rgba(255,255,255,.9);
  font-size:12px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}
.field-card:focus-within{box-shadow:0 0 0 2px rgba(23,121,219,.45)}
#cidex-panel .field-card input[type=text]{min-height:32px;padding:0;border:0;background:transparent;font-size:17px;font-weight:650;letter-spacing:0;text-transform:none;color:var(--ink);outline:none}
.cidex-counter{margin:4px 6px 8px}
.cidex-counter b{font-size:17px}
.cidex-counter .quantity{grid-template-columns:44px auto}
#sheet-body .cidex-counter .next-address{width:auto;padding:0 14px;font-size:14px;font-weight:700}
#cidex-members .cidex-member{min-height:54px;padding:6px 8px 6px 14px;border-bottom:0}
#cidex-members .cidex-member:has(:checked){background:rgba(54,138,121,.12)}
#cidex-members .cidex-member small{display:block;color:var(--done);font-weight:700}
#cidex-members .cidex-member .round{border:1px solid rgba(255,255,255,.9);background:rgba(255,255,255,.75)}
#sheet-body #cidex-position{color:#1779db}
/* Détail d'un CIDEX en tournée (maquette 22) : trois cases, puis chaque boîte avec ses objets en pastilles et 📍 la maison. */
.recap-cells.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.cidex-detail-list .cidex-member{gap:8px;min-height:58px;padding:6px 8px 6px 0;border-bottom:0}
.cidex-open{flex:1;min-width:0;min-height:46px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:4px;padding:4px 0 4px 14px;border:0;background:transparent;color:var(--ink);text-align:left}
.cidex-open b{font-size:16px;overflow-wrap:anywhere}
.cidex-member.done .cidex-open b{color:var(--muted);text-decoration:line-through}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chips .chip{font-size:13px;font-weight:650;padding:3px 9px}
#sheet-body .house-button{flex:none;width:44px;height:44px;min-width:44px;color:#1779db}
/* Aperçu de la journée (maquette 16) : 🏠, parties dans une pilule de verre, options à droite (sombre une fois ouvert),
   réglages en verre sous les options, résumé en bas. */
.observation-bar{right:12px;align-items:center}
.observation-bar .round{width:52px;height:52px;min-width:52px;background-color:var(--glass-panel);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);border:1px solid rgba(255,255,255,.85);box-shadow:inset 0 1px 1px rgba(255,255,255,.95),0 6px 18px rgba(24,42,53,.14)}
#observation-options{margin-left:auto}
#observation-options[aria-expanded=true]{background:var(--ink);color:#fff}
.observation-parts{flex:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2px;margin:0;padding:4px;border-radius:26px;background-color:var(--glass-panel);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);border:1px solid rgba(255,255,255,.85);box-shadow:inset 0 1px 1px rgba(255,255,255,.95),0 6px 18px rgba(24,42,53,.14)}
.observation-parts[hidden]{display:none}
.observation-parts button{min-height:42px;border-radius:21px;border:0;background:transparent;color:#3e4c55;font-size:16px;font-weight:800;box-shadow:none}
.observation-parts button[aria-pressed=true]{background:var(--accent);color:var(--ink)}
.observation-parts button[data-part=P][aria-pressed=true]{background:var(--blue-p);color:#fff}
.observation-panel{left:auto;right:12px;top:calc(max(10px,env(safe-area-inset-top)) + 64px);width:min(250px,calc(100% - 24px));padding:0;border-radius:22px;overflow:hidden;
  background-color:rgba(255,254,250,.8);background-image:var(--glass-sheen);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);border:1px solid rgba(255,255,255,.85);box-shadow:inset 0 1px 1px rgba(255,255,255,.95),0 10px 28px rgba(24,42,53,.18)}
.observation-panel .menu-switch{min-height:52px;padding:0 12px 0 16px;font-size:15px;font-weight:600;border-bottom-color:rgba(24,42,53,.07)}
.observation-summary{pointer-events:auto;position:absolute;left:12px;right:12px;bottom:max(34px,calc(env(safe-area-inset-bottom) + 24px));display:flex;flex-direction:column;gap:2px;padding:14px 18px;border-radius:24px;
  background-color:rgba(255,254,250,.72);background-image:var(--glass-sheen);-webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter);border:1px solid rgba(255,255,255,.85);box-shadow:inset 0 1px 1px rgba(255,255,255,.95),0 10px 28px rgba(24,42,53,.16)}
.observation-summary b{font-size:20px;font-weight:800;letter-spacing:-.3px}
.observation-summary span{font-size:13px;color:var(--muted)}

/* 10. Nouvelles fonctions (refonte, lot E) — maquettes 1, 4 b, 11, 11 b et 15. */
/* Accueil : ligne « Charger mon véhicule » sous les tuiles. */
.vehicle-open{display:flex;align-items:center;gap:12px;width:100%;min-height:54px;margin:0 0 6px;padding:0 18px;border-radius:20px;border:1px solid rgba(255,255,255,.85);background:rgba(255,255,255,.45);box-shadow:inset 0 1px 1px rgba(255,255,255,.95);color:var(--ink);text-align:left}
.vehicle-open>span{font-size:24px;line-height:26px}
.vehicle-open b{flex:1;font-size:16px;font-weight:700}
.vehicle-open .icon{width:16px;height:16px;color:#8c989e;stroke-width:2.6}
/* Charger mon véhicule (maquette 4 b) : frise pointillée, premier à livrer en vert, dernier en sombre, adresse complète grisée. */
#sheet-body .vehicle-add,#sheet-body .return-button{display:flex;align-items:center;justify-content:center}
#sheet-body .vehicle-add{min-height:48px;margin:0 0 10px;gap:8px;font-size:15px;font-weight:700}
.plus-badge{display:grid;place-items:center;width:24px;height:24px;border-radius:12px;background:var(--accent);font-size:17px;font-weight:800}
.vehicle-list{padding:0 4px}
.vehicle-end{margin:0 0 6px;padding-left:46px;font-size:12px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;color:var(--muted)}
.vehicle-end.first{color:var(--done)}
.vehicle-end.last{margin:6px 0 0}
.vehicle-row{position:relative;display:flex;gap:12px;align-items:center;padding:5px 0}
.vehicle-row::before{content:"";position:absolute;left:15.5px;top:0;bottom:0;width:3px;background:repeating-linear-gradient(180deg,#368a79 0 6px,transparent 6px 11px)}
.vehicle-row.first::before{top:50%}
.vehicle-row.last::before{bottom:50%}
.vehicle-row.first.last::before{display:none}
.vehicle-rank{position:relative;z-index:1;flex:none;display:grid;place-items:center;width:34px;height:30px}
.vehicle-rank::before{content:"";position:absolute;inset:0 2px;border-radius:15px;background:#fff;border:2.5px solid #368a79}
.vehicle-rank{font-size:13px;font-weight:800;color:var(--done)}
.vehicle-rank{isolation:isolate}
.vehicle-rank::before{z-index:-1}
.vehicle-row.first .vehicle-rank{color:#fff}.vehicle-row.first .vehicle-rank::before{background:var(--done);border-color:var(--done);box-shadow:0 0 0 4px rgba(19,102,77,.15)}
.vehicle-row.last:not(.first) .vehicle-rank{color:#fff}.vehicle-row.last:not(.first) .vehicle-rank::before{background:var(--ink);border-color:var(--ink)}
.vehicle-row.full .vehicle-rank{color:#fff}.vehicle-row.full .vehicle-rank::before{background:#c9cfc7;border-color:#c9cfc7;box-shadow:none}
.vehicle-row>button{flex:1;min-width:0;min-height:56px;display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:18px;border:1px solid rgba(255,255,255,.9);background:rgba(255,255,255,.6);box-shadow:inset 0 1px 1px rgba(255,255,255,.95);color:var(--ink);text-align:left;touch-action:manipulation}
.vehicle-row>button>span:first-child{flex:1;min-width:0;display:flex;flex-direction:column;overflow-wrap:anywhere}
.vehicle-row b{font-size:16px}
.vehicle-row small{font-size:12px;color:var(--muted)}
.vehicle-row.full>button{background:rgba(24,42,53,.05);border-color:rgba(24,42,53,.06);box-shadow:none;opacity:.5}
.vehicle-row.full b{text-decoration:line-through}
.vehicle-badge{flex:none;padding:4px 9px;border-radius:10px;background:rgba(255,240,197,.95);color:#665016;font-size:14px;font-weight:800;white-space:nowrap}
.vehicle-badge.partial{background:var(--accent);color:var(--ink)}
.vehicle-row.full .vehicle-badge{background:rgba(19,102,77,.14);color:var(--done)}
/* Fin de tournée (maquette 11) : bilan en 2 × 2, retour au centre en verre avec la maison bleue. */
.recap-cells.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:12px}
.recap-cells.grid-2 .recap-cell:nth-child(3){border-left:0}
.recap-cells.grid-2 .recap-cell:nth-child(n+3){border-top:1px solid rgba(24,42,53,.07)}
.recap-cells.grid-2 .recap-cell b{font-size:26px}
.recap-cells.grid-2 .recap-cell small{font-size:13px}
#sheet-body .return-button{gap:10px;font-size:16px;font-weight:700}
.home-badge{display:grid;place-items:center;width:28px;height:28px;border-radius:9px;background:var(--blue-p);color:#fff}
.home-badge .icon{width:18px;height:18px}
#sheet-body #finish-close{display:block;margin:10px auto 0}
/* Valider la tournée (maquette 11 b) : date et parties en pastilles, une ligne par élément. */
.validate-day{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:0 6px 12px}
.validate-day b{font-size:17px;text-transform:capitalize;margin-right:4px}
.part-pill{padding:2px 10px;border-radius:10px;background:var(--accent);color:var(--ink);font-size:13px;font-weight:800}
.part-pill.part-P{background:var(--blue-p);color:#fff}
.recap-value{flex:none;font-size:16px;font-weight:700;font-variant-numeric:tabular-nums;text-align:right}
.recap-value small{display:block;font-size:12px;font-weight:400;color:var(--muted)}
/* Rythme (maquette 15) : Top 3 rapides et lentes. */
.pace-top{padding:0;list-style:none}
.pace-top li{display:flex;justify-content:space-between;align-items:center;min-height:48px;padding:0 14px;font-size:15px}
.pace-top li b{font-variant-numeric:tabular-nums}
.pace-top{counter-reset:top}
.pace-top li>span::before{counter-increment:top;content:counter(top) ". ";font-weight:700;color:var(--muted)}

/* 11. Corrections de l'audit complet (11 octobre 2026). */
/* Parties de l'aperçu : 44 px au moins sous le doigt (la pilule fait 52 px avec sa marge). */
.observation-parts button{min-height:44px;border-radius:22px}
/* Textes d'exemple des champs (« Numéro et rue ») : gris de l'app, lisible (contraste 5:1), au lieu du gris pâle de Safari. */
input::placeholder,textarea::placeholder{color:var(--muted);opacity:1}

/* 12. Audit visuel, lot V1 (11 octobre 2026) — navigation aux mesures de la maquette (2 b, 2 c, 2 d, 2 e, 8, 9, 9 b, 11). */
#navigation{padding-left:max(8px,env(safe-area-inset-left));padding-right:max(8px,env(safe-area-inset-right))}
.nav-bottom #destination{margin:0 2px}
/* Bandeau : marges 22 / 20 / 18, distance 36 px, consigne 20 px, km 26 px avec l'unité en 15 px. */
.bandeau .guidance{gap:14px;padding:22px 20px 18px 20px}
.bandeau .maneuver .icon{width:44px;height:44px}
#distance{font-size:36px;line-height:40px;letter-spacing:-1px}
#guidance-text{font-size:20px;line-height:26px}
.road-ref{font-size:17px;line-height:22px;padding:1px 7px}
.guidance-side{padding-left:12px}
#stop-km{font-size:26px;line-height:30px;letter-spacing:-.5px}
#stop-km .unit{font-size:15px;font-weight:700;letter-spacing:0;color:#dce7e3}
#stop-km-label{font-size:13px}
.next-row{padding:12px 0 18px 22px}
/* Bandeau compact (à placer, sans flèche) et retour au centre (vert) : ni ENSUITE ni poignée. */
.bandeau.compact .next-row,.bandeau.finish .next-row,.bandeau.compact .bandeau-grabber,.bandeau.finish .bandeau-grabber,.bandeau.compact .upcoming,.bandeau.finish .upcoming{display:none}
.bandeau.finish .guidance{background-color:rgba(19,102,77,.92)}
.bandeau.finish #guidance-text{color:#ddf0e8;font-weight:500;font-size:16px}
.bandeau .maneuver:has(use[href="#i-pin-question"]) .icon{color:#f4a340}
.bandeau.compact #guidance-text{color:#dce7e3;font-size:16px;font-weight:500;white-space:normal}
/* Liste déroulée (maquette 2 c) : ENSUITE laisse sa place, environ quatre adresses, boutons ronds cachés. */
.bandeau.expanded .next-row{display:none}
.upcoming-list{max-height:min(236px,40dvh)}
#navigation:has(.bandeau.expanded) .map-tools{opacity:0;pointer-events:none}
/* Arrêt ajouté (maquette 9 b) : bannière verte, puis « Reprendre le tracé d'origine ». */
.added-banner{pointer-events:auto;display:flex;align-items:center;gap:12px;margin:10px 4px 0;padding:10px 16px;border-radius:22px;
  background:rgba(232,245,239,.92);border:1px solid rgba(255,255,255,.9);box-shadow:inset 0 1px 1px rgba(255,255,255,.95),0 6px 16px rgba(24,42,53,.14);
  -webkit-backdrop-filter:var(--glass-filter);backdrop-filter:var(--glass-filter)}
.added-banner[hidden]{display:none}
.added-banner .ok-dot{flex:none;display:grid;place-items:center;width:30px;height:30px;border-radius:15px;background:var(--done);color:#fff}
.added-banner .ok-dot .icon{width:16px;height:16px;stroke-width:3}
.added-banner b{display:block;font-size:15px;line-height:20px}
.added-banner small{display:block;font-size:13px;color:var(--muted)}
#return-original{margin-left:4px}
/* Carte d'arrêt : pas de « Zone » ; position manquante en rouge et bouton pour la relever (maquette 9). */
#stop-meta:empty{display:none}
.badge.missing{background:rgba(253,226,222,.95);color:#9b2c1f}
.card-position{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:50px;margin:0;border-radius:25px;border:1px solid rgba(255,255,255,.9);
  background:rgba(255,255,255,.7);color:#1779db;font-size:16px;font-weight:700;box-shadow:inset 0 1px 1px rgba(255,255,255,.95)}
.card-position[hidden]{display:none}
#address-street{letter-spacing:-.4px}
/* CIDEX en tournée (maquette 2 e) : 📪 grand, nom 22 px très gras, numéros en 15 px. */
.cidex-destination #address-number{font-size:34px;line-height:40px}
.cidex-destination #address-street{font-size:22px;line-height:26px;font-weight:800}
.cidex-destination #stop-meta{font-size:15px;font-weight:600;color:var(--ink)}
/* Bulle d'une adresse touchée (maquette 2 d) : petite, nom et rang, sans bouton. */
.maplibregl-popup.bubble-popup .maplibregl-popup-content{padding:10px 14px;border-radius:16px}
.bubble-popup b{display:block;font-size:16px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bubble-popup small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bubble-popup small{display:block;font-size:12px;color:var(--muted)}
/* Mentions de la carte : discrètes, 11 px. */
.maplibregl-ctrl-attrib{font-size:11px}

/* 13. Audit visuel, lot V2 — écrans refaits d'après la maquette. Sous-titre des fiches (sous le titre, 13 px gris). */
.sheet-subtitle{font-size:13px;line-height:18px;color:var(--muted)}
.sheet-subtitle[hidden]{display:none}
/* Fiche de l'arrêt (maquette 3). */
.detail-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 12px}
#sheet-body .detail-actions .done{grid-column:span 2;margin:0;min-height:58px;border-radius:29px}
#sheet-body .detail-actions .secondary{margin:0;min-height:58px;border-radius:29px;font-size:17px}
.detail-count{display:flex;align-items:center;gap:12px;min-height:58px;padding:0 8px 0 14px}
.detail-count .row-icon{font-size:22px;flex:none;width:28px;text-align:center}
.detail-count .menu-label{flex:1}
#sheet-body .menu-list>.detail-count+.detail-count::before{left:54px}
#sheet-body .note-card{display:flex;flex-direction:column;gap:6px;margin:0 0 12px;padding:12px 14px;border-radius:22px;background:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.85);box-shadow:inset 0 1px 1px rgba(255,255,255,.95);font-size:13px;font-weight:700;color:var(--muted)}
.note-card:focus-within{box-shadow:0 0 0 2px rgba(23,121,219,.45)}
#sheet-body .note-card textarea{min-height:44px;margin:0;padding:0;border:0;background:transparent;resize:none;font-size:16px;font-weight:400;color:var(--ink);outline:none;box-shadow:none}
.detail-footer{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
#sheet-body .detail-footer .secondary{margin:0;min-height:52px;border-radius:26px;font-size:15px;display:flex;align-items:center;justify-content:center;gap:6px}
.detail-footer .icon{color:#1779db}
#here-unknown:not(:empty){margin:0 0 12px}
/* Vérifier ma tournée (maquette 12). */
.review-card{display:flex;flex-direction:column;gap:10px;margin:0 0 12px;padding:16px;border-radius:22px;background:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.85);box-shadow:inset 0 1px 1px rgba(255,255,255,.95)}
.review-parts{display:flex;align-items:center;gap:8px}
.review-label{font-size:13px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;color:var(--muted)}
.review-parts .part-pill{border-radius:8px;font-size:15px;padding:3px 10px}
.review-path{display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:16px;font-weight:700}
.review-path .arrow{color:#8c989e;font-weight:400}
.review-path .centre{color:#1f4fa3}
.review-total{display:flex;gap:18px;font-size:15px}
.review-total b{font-size:22px;letter-spacing:-.5px}
.review-extra{margin:0;font-size:13px;color:var(--muted)}
.review-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0 0 12px}
.review-tile{display:flex;flex-direction:column;align-items:center;gap:2px;padding:12px 8px;border-radius:20px;background:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.85);box-shadow:inset 0 1px 1px rgba(255,255,255,.95);text-align:center}
.review-tile>span:first-child{font-size:13px;font-weight:600}
.review-tile .emoji{font-size:22px;line-height:26px}
.review-tile b{font-size:17px;font-variant-numeric:tabular-nums}
#sheet-body .review-note{display:flex;align-items:center;gap:10px;margin:0 0 12px;padding:12px 14px;border-radius:18px;background:rgba(255,240,197,.7);border:1px solid rgba(255,255,255,.85);font-size:14px;font-weight:600;color:#665016}
.review-note>span{font-size:20px}
#sheet-body .review-start{min-height:60px;border-radius:30px;justify-content:space-between;padding:0 24px}
/* Saut d'adresses (maquette 10). */
.jump-count{display:flex;align-items:center;gap:14px;margin:0 0 12px;padding:16px;border-radius:22px;background:rgba(253,236,214,.7);border:1px solid rgba(255,255,255,.85)}
.jump-count>b{font-size:44px;line-height:46px;letter-spacing:-1.5px;color:#8a4b10}
.jump-count span b{display:block;font-size:17px}
.jump-count small{display:block;font-size:14px;color:#6b4a22}
.jump-label{min-width:34px;font-size:12px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;color:var(--muted)}
.jump-range .recap-row b{font-size:16px}
#sheet-body .menu-list.jump-range>*+*::before{left:62px}
.jump-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
#sheet-body .jump-actions .secondary{margin-top:8px;min-height:52px}
/* Fin de tournée (maquette 11) : en-tête centré, quatre cartes. */
#sheet.hero .sheet-titles{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
#sheet.hero .sheet-head{position:absolute;top:10px;right:0;z-index:1;padding:0 14px}
.finish-hero{display:flex;flex-direction:column;align-items:center;gap:8px;margin:6px 0 14px;text-align:center}
.finish-check{display:grid;place-items:center;width:64px;height:64px;border-radius:32px;background:var(--done);color:#fff;font-size:30px;font-weight:800;box-shadow:0 8px 20px rgba(19,102,77,.3)}
.finish-hero.warn .finish-check{background:#e08a2e;box-shadow:0 8px 20px rgba(224,138,46,.3)}
.finish-check .icon{width:30px;height:30px;stroke-width:3;color:#fff;stroke:#fff}
.finish-hero>b{font-size:26px;line-height:30px;letter-spacing:-.6px}
.finish-hero>span:not(.finish-check){font-size:15px;color:var(--muted);padding:0 24px}
.finish-cells{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0 0 12px}
.finish-cell{display:flex;flex-direction:column;align-items:center;gap:2px;padding:14px 8px;border-radius:22px;background:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.85);box-shadow:inset 0 1px 1px rgba(255,255,255,.95)}
.finish-cell b{font-size:28px;line-height:32px;letter-spacing:-.8px;font-variant-numeric:tabular-nums;white-space:nowrap}
.finish-cell small{font-size:13px;color:var(--muted)}
/* Valider la tournée (maquette 11 b). */
.validate-day{justify-content:space-between;margin:0 0 12px;padding:12px 16px;border-radius:22px;background:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.85);box-shadow:inset 0 1px 1px rgba(255,255,255,.95)}
.validate-day>span{display:flex;gap:6px}
.validate-day .part-pill{padding:6px 12px;font-size:15px}
.recap-name{font-size:16px}
.ok-tick{color:var(--done);font-weight:800;font-size:18px}
.validate-ok{margin:0 0 12px;padding:0 8px;font-size:14px;font-weight:700;color:var(--done)}
#sheet-body #cancel-validate{min-height:50px}
/* Rythme (maquette 15) : carte verte, progression, trois cartes, Top 3 côte à côte, historique en carte. */
#pace-content{display:flex;flex-direction:column;gap:10px}
#pace-content .pace-status{display:flex;flex-direction:column;align-items:center;gap:4px;margin:0;padding:18px 16px;border-radius:24px;text-align:center;color:#fff;
  background-color:rgba(19,102,77,.9);background-image:linear-gradient(180deg,rgba(255,255,255,.2),rgba(255,255,255,0) 60%);box-shadow:inset 0 1px 1px rgba(255,255,255,.4),0 8px 20px rgba(19,102,77,.28)}
.pace-status .pace-eyebrow{font-size:12px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:#cdebdf}
#pace-content .pace-status b{font-size:34px;line-height:40px;letter-spacing:-1px}
#pace-content .pace-status small{font-size:14px;color:#ddf0e8}
#pace-reason{margin:0;padding:14px 16px;border-radius:22px;background:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.85);font-size:14px}
.pace-progress{display:flex;align-items:center;gap:12px;padding:12px 12px 12px 16px;border-radius:22px;background:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.85);box-shadow:inset 0 1px 1px rgba(255,255,255,.95)}
.pace-progress>div{flex:1;min-width:0;display:flex;flex-direction:column}
.pace-progress b{font-size:17px}
.pace-progress small{font-size:13px;color:var(--muted)}
#sheet-body .pace-pause{flex:none;width:auto;margin:0;min-height:44px;padding:0 16px;border-radius:22px;font-size:15px;font-weight:700}
#pace-content .pace-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0}
#pace-content .pace-stats>div{display:flex;flex-direction:column;align-items:center;gap:2px;padding:12px 6px;border-radius:20px;background:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.85);text-align:center}
#pace-content .pace-stats small{font-size:12px;color:var(--muted)}
#pace-content .pace-stats b{font-size:20px;letter-spacing:-.4px}
.pace-stats .fast b{color:var(--done)}
.pace-stats .slow b{color:#a15a14}
.pace-tops{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.pace-top{display:flex;flex-direction:column;gap:6px;padding:12px 14px;border-radius:20px;background:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.85)}
.pace-top-title{font-size:12px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--muted)}
.pace-top.fast .pace-top-title{color:var(--done)}
.pace-top.slow .pace-top-title{color:#a15a14}
.pace-top ol{margin:0;padding:0;list-style:none;counter-reset:top}
.pace-top li{display:flex;justify-content:space-between;align-items:center;min-height:26px;padding:0;font-size:14px}
.pace-top li>span::before{counter-increment:top;content:counter(top) ". "}
#pace-content .pace-history{display:flex;flex-direction:column;padding:10px 16px;border-radius:22px;background:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.85)}
.pace-history details>summary{min-height:44px;display:flex;align-items:center;font-size:16px}

/* 14. Audit visuel, lot V3 — accueil et fiches aux mesures de la maquette. */
/* Accueil (maquette 1) : « Démarrer » et « Démo » posés sous le panneau, sur la carte. */
#setup[hidden]+.setup-actions{display:none}
.setup-actions{position:absolute;z-index:3;left:32px;width:375px;bottom:max(30px,env(safe-area-inset-bottom));padding:0;background:transparent;border:0}
#setup.panel{bottom:106px}
#app:has(#resume:not([hidden])) #setup.panel,#app:has(#update:not([hidden])) #setup.panel{bottom:170px}
@media(max-width:600px){
  .setup-actions{left:12px;right:12px;width:auto}
  #setup.panel{bottom:max(106px,calc(env(safe-area-inset-bottom) + 76px))}
}
@media(max-width:360px){
  .setup-actions{bottom:10px}
  #setup.panel{bottom:84px}
}
.prep-sections button{min-height:64px;padding:6px;line-height:1.2}
/* Fiches : titres de 26 px ; grandes fiches à 64 px sous l'heure ; « Terminé » toujours en bas. */
.sheet-head h2{font-size:26px;letter-spacing:-.6px}
#sheet:has(#prep-search){height:calc(100dvh - max(64px,calc(env(safe-area-inset-top) + 64px)) - max(8px,env(safe-area-inset-bottom)))}
#sheet:has(#prep-search) #sheet-body{flex:1 1 auto}
#sheet:has(.cidex-tabs){min-height:min(600px,calc(100dvh - 120px))}
#sheet:has(.cidex-tabs) #sheet-body{flex:1 1 auto;display:flex;flex-direction:column}
#cidex-panel{flex:1 1 auto;display:flex;flex-direction:column}
#sheet-body #cidex-new{margin-top:auto}
.scan-pill{white-space:nowrap;padding:0 14px}
/* Liste des arrêts (maquette 6) : état et icônes sur la seconde ligne, prochain arrêt en brun, P en bleu, ✕ sombre,
   actions en pilules côte à côte et « Ajouter au prochain arrêt » jaune. */
.stop-choice.current .stop-state{color:#665016;font-weight:600}
.stop-filters [data-filter=P]{color:#1f4fa3}
.stop-filters [data-filter=P][aria-pressed=true]{color:#1f4fa3}
.choice-button[aria-expanded=true]{background:var(--ink);border-color:var(--ink);color:#fff;font-size:18px}
.stop-choice.expanded>.stop-info,.stop-choice.expanded>.stop-rank{opacity:1}
.stop-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:6px 4px 10px 30px}
.stop-options button{white-space:nowrap;padding:0 10px}
.stop-options button{min-height:44px;margin:0;border-radius:22px;border:1px solid rgba(255,255,255,.95);background:rgba(255,255,255,.92);font-size:14px;font-weight:700;box-shadow:inset 0 1px 1px #fff,0 4px 12px rgba(24,42,53,.14)}
.stop-options .next-stop{grid-column:span 2;border-color:rgba(255,255,255,.6);background-color:rgba(244,197,66,.94);background-image:linear-gradient(180deg,rgba(255,255,255,.45),rgba(255,255,255,0) 60%)}
.stop-icons{white-space:nowrap}
/* Objets du jour (maquette 19) : sans adresse avec son icône en colonne ; adresses remises avec un rond vert. */
.done-dot{flex:none;display:grid;place-items:center;width:24px;height:24px;border-radius:12px;background:var(--done);color:#fff;font-size:13px;font-weight:800}
.mission-row.given .menu-label b{font-weight:600;color:#3e4c55}
#sheet-body .menu-list>.given+.given::before{left:48px}
/* Ajouter un objet (maquette 20) : l'adresse choisie reste dans la liste, surlignée en vert avec ✓. */
.mission-result[aria-checked=true]{background:var(--ok-bg);padding-right:44px}
.mission-result[aria-checked=true]::after{content:"✓";position:absolute;right:16px;top:50%;transform:translateY(-50%);color:var(--done);font-size:20px;font-weight:800}
.mission-result[aria-checked=true] small{color:#3c5a4e}
#sheet-body #mission-unknown{display:inline-flex;align-items:center;justify-content:center;width:auto;min-height:44px;margin:10px 0 0;padding:0 16px}
#sheet-body #mission-unknown[hidden]{display:none}
/* Choisir la tournée (maquette 23) : carte blanche, numéro cerclé de foncé. */
.route-choice{background:rgba(255,255,255,.6)}
.route-choice .route-number{border:1.5px solid rgba(24,42,53,.85)}
/* Menu (maquette 5) : rythme en vert, accueil en bleu. */
#menu-pace .menu-icon{color:var(--done)}
#menu-home .menu-icon{color:#1779db}
/* CIDEX : adresses en gras ; véhicule : titre sur une ligne. */
#cidex-members .cidex-member label span{font-size:16px;font-weight:700}
#sheet:has(#vehicle-list) .sheet-head h2{font-size:23px;white-space:nowrap}
/* Mentions de la carte : 11 px (la règle d'origine imposait la taille des légendes). */
.maplibregl-ctrl-attrib{font-size:11px!important}
@media(max-width:360px){.scan-pill{white-space:normal;font-size:14px;line-height:1.2}}

/* 15. Audit visuel, lot V4 — carte (maquettes 2 b, 16, 17). */
/* Route suivie : étiquette verte ; route du prochain carrefour : panneau jaune. Jamais touchables. */
.road-pill{padding:7px 14px;border-radius:12px;background:#368a79;color:#fff;font-size:17px;font-weight:700;white-space:nowrap;box-shadow:0 4px 12px rgba(19,102,77,.3);pointer-events:none}
.road-shield{padding:2px 7px;border-radius:6px;border:1.5px solid #fff;background:var(--accent);color:var(--ink);font-size:13px;font-weight:800;white-space:nowrap;box-shadow:0 2px 6px rgba(24,42,53,.25);pointer-events:none}
/* Aperçu : légende des parties à droite du résumé, quand les couleurs sont choisies. */
.observation-summary{flex-direction:row;align-items:center;justify-content:space-between;gap:12px}
.observation-summary>div:first-child{display:flex;flex-direction:column;gap:2px;min-width:0}
.observation-legend{flex:none;display:flex;flex-direction:column;gap:2px;font-size:12px;font-weight:700}
.observation-legend[hidden]{display:none}
.observation-legend span{display:flex;align-items:center;gap:6px}
.observation-legend i{display:block;width:18px;height:4px;border-radius:2px}
/* Déverrouillage : fond de carte dessiné (la vraie carte n'est pas encore chargée). */
#unlock{background-color:#e3ead6;background-image:
  linear-gradient(90deg,transparent 22%,#fff1c2 22%,#fff1c2 26%,transparent 26%),
  linear-gradient(180deg,transparent 37%,#fff1c2 37%,#fff1c2 40%,transparent 40%),
  linear-gradient(162deg,transparent 58%,rgba(208,222,195,.8) 58%,rgba(208,222,195,.8) 78%,transparent 78%),
  linear-gradient(20deg,rgba(214,226,201,.75) 0 18%,transparent 18%)}
#guidance-text.tight{font-size:17px;line-height:26px}

/* 16. Retours du facteur (11 octobre 2026). */
/* Police : la même que la maquette partout, y compris sur la carte (MapLibre impose Helvetica / Arial à ses éléments). */
.maplibregl-map,.maplibregl-popup,.maplibregl-ctrl-attrib,.maplibregl-marker{font-family:var(--font)}
/* Pas de barre de défilement visible : on fait défiler au doigt, comme sur l'iPhone. */
*{scrollbar-width:none}
*::-webkit-scrollbar{width:0;height:0;display:none}
/* Bandeau : la poignée est posée dans le bas du bandeau (elle dépassait sous la ligne ENSUITE, laissant voir la carte). */
.bandeau-grabber{position:absolute;left:50%;bottom:0;margin:0;transform:translateX(-50%);z-index:1}
/* Fin de tournée (maquette 11) : pas de ✕, la fiche se ferme en la glissant vers le bas. */
#sheet.hero #close-sheet{display:none}
/* Rythme : sans repère, la même carte verte, plus douce ; Top 3 et historique vides gardent leur place. */
#pace-content .pace-status.waiting{background-color:rgba(19,102,77,.72)}
#pace-content .pace-status.waiting b{font-size:26px;line-height:32px}
.pace-top li.empty{justify-content:flex-start;color:var(--muted);font-size:13px}
.pace-top li.empty::before,.pace-top li.empty>span::before{content:none}
.pace-empty{margin:6px 0 4px;font-size:14px;color:var(--muted)}
.pace-note{padding:0 8px}
.pace-note p{margin:0 0 4px;font-size:12px;line-height:17px;color:var(--muted)}
.pace-status #pace-reason{margin:0;padding:0;border:0;background:none;color:#ddf0e8;font-size:14px}
/* Retour au centre : « Fin de la tournée » tient sur la ligne (maquette 11 : 28 px). */
.bandeau.finish #distance{font-size:28px;line-height:34px}
/* 17. Retours du 11/10 : latence au toucher. Les lignes hors écran des longues listes (900 adresses) ne sont ni
   mises en page ni peintes ; leur hauteur est réservée pour garder le défilement juste. */
.grouped .prep-address{content-visibility:auto;contain-intrinsic-size:auto 60px}
/* Accueil (11/10) : les mentions de la carte n'apparaissent qu'en navigation, pas sous « Démarrer ma tournée ». */
body:not(.navigation-active) .maplibregl-ctrl-attrib{display:none}
/* Barre du scanner : la pilule se resserre pour laisser entiers les deux boutons ronds (remise à zéro coupée à droite). */
.prep-toolbar .scan-pill{min-width:0;padding:0 10px;gap:6px;font-size:15px;overflow:hidden;text-overflow:ellipsis}
.prep-toolbar .round{flex:none}
/* Onglets Colis / Recommandés : chacun sur une ligne, à la même hauteur. */
.segmented button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px;padding:0 4px}
/* « Terminé » des fiches de préparation : un peu plus bas. La fiche est déjà relevée de la zone du geste d'accueil,
   le bas de la liste n'a pas à la compter une seconde fois. */
#sheet-body:has(>.done:last-child){padding-bottom:14px}
/* Position façon Plans : la flèche seule, sans rond ni cadre, posée sur une ombre douce. */
.vehicle{width:46px;height:46px}
.vehicle-arrow svg{overflow:visible;filter:drop-shadow(0 2px 3px rgba(20,48,80,.38))}
/* Fiche de l'arrêt : « Passer → » sur une ligne, la flèche à droite du mot comme « ✓ Distribué ». */
#sheet-body .detail-actions .secondary{white-space:nowrap;padding:0 8px}
/* Liste des arrêts : « Y aller maintenant » entier et centré dans sa bulle (le « t » sortait à droite). */
.stop-options{padding-left:12px}
.stop-options button{display:flex;align-items:center;justify-content:center;text-align:center;padding:0 6px;font-size:13.5px;overflow:hidden}
/* Détail d'un CIDEX : la liste des objets reprend l'allure de la liste des adresses ; hors journée en gris. */
.cidex-objects .cidex-member{gap:8px;min-height:58px;padding:6px 8px 6px 0;border-bottom:0}
.cidex-detail-list .cidex-member.outside .cidex-open b{color:var(--muted)}
.cidex-open small{font-size:13px;color:var(--muted)}
/* Poignées tirables : le doigt reste à l'app, Safari ne défile pas. */
.bandeau-grabber,.card-grabber{touch-action:none}
/* 18. Scanner (maquettes 7 et 7 b, retours du 11/10). En haut, verre sombre : fermer, compte « 📦 · ✉️ », consigne.
   Le cadre de lecture garde sa place (réglage de la lecture) mais n'est plus dessiné que par ses quatre coins jaunes.
   En bas, une fiche de verre clair : adresse lue et deux gros boutons, ou choix d'adresse, puis Ignorer / Terminé. */
#scanner .scan-glass{border:1px solid rgba(255,255,255,.28);background-color:rgba(24,42,53,.55);background-image:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,0));
  -webkit-backdrop-filter:blur(20px) saturate(160%);backdrop-filter:blur(20px) saturate(160%);color:#fff;box-shadow:inset 0 1px 1px rgba(255,255,255,.3)}
#scanner .scan-top{left:14px;right:14px;justify-content:space-between}
#scanner .scan-top .round{width:52px;height:52px;min-width:52px;border-radius:26px}
#scanner .scan-top .round .icon{width:18px;height:18px;stroke-width:2.8}
.scan-tally{display:flex;align-items:center;min-height:44px;padding:0 16px;border-radius:22px;font-size:15px;font-weight:700;white-space:pre}
#scanner .scan-count{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
#scanner .scan-live-hint{top:calc(max(12px,env(safe-area-inset-top)) + 82px);left:24px;right:24px;display:flex;flex-direction:column;align-items:center;gap:2px;
  padding:12px 16px;border-radius:22px;border-color:rgba(255,255,255,.24);font-size:17px;font-weight:700;line-height:1.3;text-shadow:none}
#scanner .scan-live-hint[hidden]{display:none}
#scanner .scan-live-hint small{margin:0;font-size:13px;font-weight:400;color:#dce7e3}
.scan-frame{--corner:#f4c542;border:0;border-radius:14px;box-shadow:0 0 0 100vmax rgba(0,0,0,.22)}
.scan-frame::before{content:"";position:absolute;inset:0;border:5px solid var(--corner);border-radius:14px;transition:border-color .15s;
  -webkit-mask:linear-gradient(90deg,#000 34px,transparent 34px calc(100% - 34px),#000 calc(100% - 34px)),linear-gradient(180deg,#000 34px,transparent 34px calc(100% - 34px),#000 calc(100% - 34px));
  -webkit-mask-composite:source-in;mask:linear-gradient(90deg,#000 34px,transparent 34px calc(100% - 34px),#000 calc(100% - 34px)),linear-gradient(180deg,#000 34px,transparent 34px calc(100% - 34px),#000 calc(100% - 34px));mask-composite:intersect}
.scan-frame[data-flash=ok]{--corner:#3fb489;box-shadow:0 0 0 100vmax rgba(19,102,77,.3)}
.scan-frame[data-flash=warn]{--corner:#e0a050}
.scan-frame[data-flash=dup]{--corner:#c3ccd1}
#scanner .scan-bottom{left:8px;right:8px;bottom:max(8px,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:12px;padding:16px 14px 18px;border-radius:34px;
  background-color:rgba(255,254,250,.82);background-image:linear-gradient(180deg,rgba(255,255,255,.65) 0%,rgba(255,255,255,.15) 40%,rgba(255,255,255,.25) 100%);
  -webkit-backdrop-filter:blur(30px) saturate(190%);backdrop-filter:blur(30px) saturate(190%);border:1px solid rgba(255,255,255,.85);
  box-shadow:inset 0 1px 1px rgba(255,255,255,.95),0 -6px 32px rgba(0,0,0,.3);color:var(--ink)}
#scanner .scan-kind,#scanner .scan-choice{position:static;display:flex;flex-direction:column;gap:12px;padding:0;margin:0;background:none;box-shadow:none;border-radius:0;color:var(--ink)}
#scanner .scan-kind[hidden],#scanner .scan-choice[hidden],#scanner .scan-row>[hidden]{display:none}
.scan-read{display:flex;align-items:center;gap:10px;padding:0 6px}
.scan-read>div{flex:1;min-width:0;display:flex;flex-direction:column}
.scan-read small,.scan-eyebrow{font-size:12px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}
.scan-read-check{flex:none;display:grid;place-items:center;width:34px;height:34px;border-radius:17px;background:var(--done);color:#fff}
.scan-read-check .icon{width:18px;height:18px;stroke-width:3}
#scanner #scan-kind-address{margin:0;font-size:20px;line-height:24px;font-weight:700;letter-spacing:-.4px;text-align:left}
#scanner .scan-kind-buttons{margin:0;gap:8px}
#scanner .scan-kind-buttons button{min-height:84px;gap:4px;border-radius:24px;border:1px solid rgba(255,255,255,.6);background-color:rgba(244,197,66,.94);
  background-image:linear-gradient(180deg,rgba(255,255,255,.45),rgba(255,255,255,0) 60%);color:var(--ink);box-shadow:inset 0 1px 1px rgba(255,255,255,.85),0 6px 16px rgba(158,118,10,.22)}
#scanner .scan-kind-word{font-size:17px;font-weight:750}
#scanner .scan-kind-icon{font-size:28px;line-height:32px}
#scanner .scan-choice{gap:10px}
.scan-choice>.scan-eyebrow,.scan-choice>.scan-title,.scan-choice>.scan-sub{padding:0 6px}
.scan-choice>.scan-eyebrow{color:#8a5a1c;margin-bottom:-8px}
.scan-title{font-size:22px;line-height:26px;letter-spacing:-.4px}
.scan-sub{margin-top:-8px;font-size:13px;color:var(--muted)}
#scan-choices{display:flex;flex-direction:column;gap:10px}
#scanner .scan-candidate{display:flex;align-items:center;gap:12px;min-height:60px;margin:0;padding:0 16px;border-radius:22px;border:1px solid rgba(255,255,255,.9);background:rgba(255,255,255,.7);text-align:left;box-shadow:inset 0 1px 1px rgba(255,255,255,.95)}
.scan-candidate>b{min-width:48px;font-size:22px;font-variant-numeric:tabular-nums}
.scan-candidate>span{flex:1;min-width:0;display:flex;flex-direction:column}
.scan-candidate>span>span{font-size:16px;font-weight:650;overflow-wrap:anywhere}
.scan-candidate small{font-size:12px;color:var(--muted)}
.scan-candidate .icon{width:16px;height:16px;stroke:#8c989e;stroke-width:2.6}
#scanner #scan-none{margin:0;min-height:50px;border-radius:25px;background:rgba(255,255,255,.5)}
#scanner .scan-banner{margin:0;border-radius:18px}
.scan-row{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:8px}
#scanner .scan-row button{margin:0;min-height:50px;border-radius:25px;font-size:15px}
#scanner #scan-skip{border:1px solid rgba(255,255,255,.9);background:rgba(255,255,255,.6);font-weight:650}
#scanner #scan-done{border:1px solid rgba(255,255,255,.35);background-color:var(--done);background-image:linear-gradient(180deg,rgba(255,255,255,.22),rgba(255,255,255,0) 55%);color:#fff;font-weight:750;box-shadow:inset 0 1px 1px rgba(255,255,255,.4)}
@media(prefers-reduced-transparency:reduce){#scanner .scan-glass{background-color:rgba(24,42,53,.92)}#scanner .scan-bottom{background-color:#fffefa}}
/* Petits écrans : les onglets perdent leur emoji pour garder « Recommandés · N » entier. */
@media(max-width:360px){.segment-icon{display:none}}
/* Liste des arrêts (jusqu'à 960 lignes) : même économie que les fiches de préparation. */
.day-results>.stop-choice:not(.expanded){content-visibility:auto;contain-intrinsic-size:auto 60px}
