/* Layout : coquille de logiciel de bureau. Barre de titre + menus, ruban d'outils contextuel, arborescence des modules à gauche, espace de travail, barre d'état. Sur téléphone, l'arborescence devient un tiroir. */
:root{
  --bg:#E8ECF1;--win:#F6F8FA;--surface:#FFFFFF;--soft:#EEF2F6;--ink:#17222D;--muted:#5D6B78;--line:#D2D9E0;--line2:#BCC6D0;
  --title:#1B3A57;--title-ink:#FFFFFF;--rib:#FBFCFD;
  --accent:#1767C2;--accent-ink:#FFFFFF;--accent-soft:#DCEAFB;--sel:#CFE3FA;--brand:#E2731E;
  --wait:#9A6A00;--wait-bg:#FFF1CC;--asg:#1D5FB4;--asg-bg:#DDEBFC;--pick:#6B3FA6;--pick-bg:#EDE3FA;
  --route:#B4520F;--route-bg:#FDE6D3;--done:#1E7A43;--done-bg:#DBF2E3;--danger:#B42632;--danger-bg:#FBE0E2;--quote:#4F5E6B;--quote-bg:#E6EBF0;
  --map-land:#EEF0E6;--map-water:#B9D4E8;--map-road:#FFFFFF;--map-park:#D7E8C9;
  --f-ui:"Segoe UI",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,Consolas,Menlo,monospace;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#12171D;--win:#181F27;--surface:#1D252F;--soft:#232D38;--ink:#E3E9EF;--muted:#94A3B1;--line:#2C3743;--line2:#3A4754;
  --title:#0E2236;--title-ink:#E8F0F7;--rib:#1A222B;
  --accent:#4C9AF0;--accent-ink:#06192C;--accent-soft:#1D3550;--sel:#24405F;--brand:#F08A3C;
  --wait:#F2C14E;--wait-bg:#3B3216;--asg:#7FB2F3;--asg-bg:#1B3049;--pick:#BC9AF0;--pick-bg:#2E2444;
  --route:#F4A06A;--route-bg:#40281A;--done:#6FD39A;--done-bg:#17372A;--danger:#F2848C;--danger-bg:#41212A;--quote:#AFBDC9;--quote-bg:#26313C;
  --map-land:#1B232B;--map-water:#183248;--map-road:#26313C;--map-park:#1F3127;color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#12171D;--win:#181F27;--surface:#1D252F;--soft:#232D38;--ink:#E3E9EF;--muted:#94A3B1;--line:#2C3743;--line2:#3A4754;
  --title:#0E2236;--title-ink:#E8F0F7;--rib:#1A222B;
  --accent:#4C9AF0;--accent-ink:#06192C;--accent-soft:#1D3550;--sel:#24405F;--brand:#F08A3C;
  --wait:#F2C14E;--wait-bg:#3B3216;--asg:#7FB2F3;--asg-bg:#1B3049;--pick:#BC9AF0;--pick-bg:#2E2444;
  --route:#F4A06A;--route-bg:#40281A;--done:#6FD39A;--done-bg:#17372A;--danger:#F2848C;--danger-bg:#41212A;--quote:#AFBDC9;--quote-bg:#26313C;
  --map-land:#1B232B;--map-water:#183248;--map-road:#26313C;--map-park:#1F3127;color-scheme:dark}
*{box-sizing:border-box}
html,body{height:100%}
body{background:var(--bg);color:var(--ink);font:13.5px/1.45 var(--f-ui);margin:0;padding-inline:0}
button,input,select,textarea{font:inherit;color:inherit}
.app{height:100%;display:grid;grid-template-rows:auto auto 1fr auto;min-height:0}

/* Barre de titre et menus */
.titlebar{background:var(--title);color:var(--title-ink);display:flex;align-items:center;gap:6px;padding:0 16px;height:40px}
.titlebar .logo{display:flex;align-items:center;gap:8px;font-weight:700;letter-spacing:.01em;margin-right:10px;white-space:nowrap}
.titlebar .logo svg{width:22px;height:22px}
.titlebar .logo small{font-weight:400;opacity:.7}
.menubar{display:flex;gap:2px}
.menubar button{background:transparent;border:0;color:var(--title-ink);padding:6px 10px;border-radius:3px;cursor:pointer;opacity:.92}
.menubar button:hover,.menubar button[aria-expanded="true"]{background:rgba(255,255,255,.14)}
.titlebar .sp{flex:1}
.titlebar .who{font-size:12.5px;opacity:.85;white-space:nowrap}
.burger{display:none;background:transparent;border:0;color:var(--title-ink);padding:6px;cursor:pointer}
.burger svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:2}

/* Ruban */
.ribbon{background:var(--rib);border-bottom:1px solid var(--line2);display:flex;gap:0;overflow-x:auto;padding:6px 16px 0;min-height:86px;align-items:stretch}
.rgroup{display:flex;flex-direction:column;border-right:1px solid var(--line);padding:0 8px;flex:0 0 auto}
.rgroup:last-child{border-right:0}
.rgroup .rbtns{display:flex;gap:2px;flex:1;align-items:flex-start}
.rgroup .rlabel{font-size:11px;color:var(--muted);text-align:center;padding:2px 0 4px;white-space:nowrap}
.rbtn{display:flex;flex-direction:column;align-items:center;gap:3px;background:transparent;border:1px solid transparent;border-radius:4px;padding:5px 7px;cursor:pointer;min-width:64px;max-width:86px;font-size:12px;line-height:1.2;text-align:center}
.rbtn svg{width:26px;height:26px}
.rbtn:hover:not(:disabled){background:var(--accent-soft);border-color:var(--line2)}
.rbtn:disabled{opacity:.38;cursor:default}
.rbtn.on{background:var(--accent-soft);border-color:var(--accent)}

/* Corps */
.body{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:0}
.tree{background:var(--win);border-right:1px solid var(--line2);overflow:auto;padding:8px 0 16px}
.tree h4{margin:12px 16px 4px;font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.07em}
.tree button{display:flex;align-items:center;gap:9px;width:100%;background:transparent;border:0;border-left:3px solid transparent;padding:6px 16px 6px 13px;cursor:pointer;text-align:left}
.tree button svg{width:18px;height:18px;flex:0 0 auto}
.tree button:hover{background:var(--soft)}
.tree button[aria-current="page"]{background:var(--sel);border-left-color:var(--accent);font-weight:600}
.tree .badge{margin-left:auto;background:var(--danger);color:#fff;border-radius:9px;font-size:11px;padding:0 6px;font-weight:600}
.main{overflow:auto;min-width:0;padding:14px 16px 24px}
.modhead{display:flex;align-items:baseline;gap:12px;justify-content:space-between;flex-wrap:wrap;margin-bottom:10px}
.modhead h1{font-size:19px;font-weight:600;margin:0}
.modhead .crumb{color:var(--muted);font-size:12.5px}

/* Barre d'état */
.statusbar{background:var(--win);border-top:1px solid var(--line2);display:flex;gap:0;font-size:12px;color:var(--muted);overflow-x:auto;white-space:nowrap;padding:0 16px calc(env(safe-area-inset-bottom,0px))}
.statusbar span{padding:4px 12px;border-right:1px solid var(--line)}
.statusbar span:last-child{border-right:0;margin-left:auto}
.statusbar .led{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--muted);margin-right:6px;vertical-align:0}
.statusbar .led.ok{background:#2EAD5F} .statusbar .led.local{background:#E0A100}

/* Éléments génériques */
.pane{background:var(--surface);border:1px solid var(--line2);border-radius:3px;display:flex;flex-direction:column;min-width:0;min-height:0}
.pane-h{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 10px;background:var(--win);border-bottom:1px solid var(--line);font-weight:600;font-size:12.5px}
.pane-b{padding:10px;min-width:0}
fieldset{border:1px solid var(--line2);border-radius:3px;padding:10px 12px 12px;margin:0;min-width:0;background:var(--surface)}
legend{padding:0 6px;font-weight:600;font-size:12.5px;color:var(--accent)}
.row{display:flex;gap:10px;flex-wrap:wrap}
.row>*{flex:1 1 150px;min-width:0}
.row>.fit{flex:0 0 auto}
.stack{display:flex;flex-direction:column;gap:10px}
label{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--muted)}
input,select,textarea{background:var(--surface);border:1px solid var(--line2);border-radius:2px;padding:6px 8px;width:100%;color:var(--ink)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}
input[readonly]{background:var(--soft)}
textarea{min-height:54px;resize:vertical}
:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.check{flex-direction:row;align-items:center;gap:7px;color:var(--ink);font-size:13px}
.check input{width:auto}
.btn{background:var(--soft);border:1px solid var(--line2);border-radius:3px;padding:6px 14px;cursor:pointer;white-space:nowrap}
.btn:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}
.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.btn.primary:hover:not(:disabled){filter:brightness(1.08);background:var(--accent)}
.btn.danger{color:var(--danger)}
.btn.sm{padding:3px 9px;font-size:12px}
.btn:disabled{opacity:.45;cursor:default}
.mono{font-family:var(--f-mono);font-size:12px}
.muted{color:var(--muted)} .small{font-size:12px} .late{color:var(--danger);font-weight:600} .ok{color:var(--done)}
.num{font-variant-numeric:tabular-nums}
a{color:var(--accent)}
.st{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;border-radius:2px;padding:1px 7px;white-space:nowrap}
.st i{width:8px;height:8px;border-radius:50%;background:currentColor}
.s-devis{color:var(--quote);background:var(--quote-bg)} .s-attente{color:var(--wait);background:var(--wait-bg)}
.s-assignee{color:var(--asg);background:var(--asg-bg)} .s-ramassee{color:var(--pick);background:var(--pick-bg)}
.s-route{color:var(--route);background:var(--route-bg)} .s-livree{color:var(--done);background:var(--done-bg)}
.s-annulee,.s-annulee_f{color:var(--danger);background:var(--danger-bg)}
.s-pb{color:var(--danger);background:var(--danger-bg);white-space:normal}   /* problème signalé par le livreur */
.s-md{color:var(--route);background:var(--route-bg)}   /* matière dangereuse */
.md-ic{color:var(--route);font-weight:700}
.md-ch{padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);font-size:15px;align-items:flex-start}
.md-ch>span{display:flex;flex-direction:column;gap:2px} .md-ch small{font-size:12px;color:var(--muted)}
.md-ch.on{border-color:var(--route);background:var(--route-bg)}
.md-ch input{width:22px;height:22px;flex:0 0 auto;margin-top:1px}
.banner.ok-ban{color:var(--done);background:var(--done-bg);border-color:var(--done)}
.banner.md-ban{color:var(--route);background:var(--route-bg);border-color:var(--route)}
.lbl .l-md{background:#000;color:#FFF;font-weight:800;text-align:center;padding:3px 6px;font-size:14px;letter-spacing:.06em}
.paper .w-md{margin:8px 0 0;padding:4px 8px;border:2px solid #000;font-weight:800;text-align:center;letter-spacing:.06em}
.trajet-etat{margin:0 0 8px;line-height:1.4}
.banner.reseau-ban{background:var(--asg-bg);border-color:var(--asg);color:var(--ink);line-height:1.4}
.da>.reseau-ban{margin:6px 8px 0;font-size:14px}
.banner.rappel-ban{display:flex;gap:8px 12px;align-items:center;justify-content:space-between;flex-wrap:wrap;background:var(--wait-bg);border-color:var(--wait);border-left-width:4px}
.rappel-ban .row{flex:0 0 auto;gap:6px} .rappel-ban .row>.btn{flex:0 0 auto;width:auto;white-space:nowrap} .rappel-ban .lnk{font-size:inherit}
.da .rappel-ban{font-size:14px;margin-bottom:0} .da>.rappel-ban{margin:6px 8px 0}
.banner.pb-ban{display:flex;gap:8px;align-items:center;justify-content:space-between;flex-wrap:wrap;color:var(--danger);background:var(--danger-bg);border-color:var(--danger)}
.lvl{font-size:11px;font-weight:700;border:1px solid var(--line2);border-radius:2px;padding:0 5px;color:var(--muted);white-space:nowrap}
.lvl.urg{color:var(--danger);border-color:var(--danger)} .lvl.exp{color:var(--accent);border-color:var(--accent)}
.empty{padding:20px;text-align:center;color:var(--muted);font-size:13px}
.banner{background:var(--wait-bg);color:var(--ink);border:1px solid var(--line2);padding:7px 10px;font-size:12.5px;margin-bottom:10px;border-radius:2px}

/* Grilles de données */
.dg{overflow:auto;background:var(--surface);border:1px solid var(--line2);border-radius:2px;min-height:0}
.dg table{border-collapse:collapse;width:100%;font-size:12.5px}
.dg th{position:sticky;top:0;background:var(--win);text-align:left;font-weight:600;padding:5px 8px;border-bottom:1px solid var(--line2);border-right:1px solid var(--line);white-space:nowrap;z-index:1}
.dg tr.fr th{top:28px;padding:3px 4px;background:var(--soft);font-weight:400}
.dg tr.fr input{padding:2px 5px;font-size:12px;border-radius:2px;min-width:60px}
.dg td{padding:5px 8px;border-bottom:1px solid var(--line);border-right:1px solid var(--line);white-space:nowrap;max-width:260px;overflow:hidden;text-overflow:ellipsis}
.dg td.r,.dg th.r{text-align:right}
.dg tbody tr{cursor:default}
.dg tbody tr:nth-child(even) td{background:color-mix(in srgb,var(--soft) 45%,var(--surface))}
.dg tbody tr:hover td{background:var(--accent-soft)}
.dg tbody tr.sel td{background:var(--sel)}
.dg tbody tr.drag{opacity:.5}
.dg select{padding:1px 4px;font-size:12px;width:auto;max-width:150px}
.dg .stripe{width:4px;padding:0;background:var(--sc)!important}
.qtabs{display:flex;flex-wrap:wrap;gap:0;border-bottom:1px solid var(--line2);background:var(--win)}
.qtabs button{background:transparent;border:0;border-right:1px solid var(--line);padding:7px 12px;cursor:pointer;white-space:nowrap;font-size:12.5px;border-bottom:2px solid transparent;margin-bottom:-1px}
.qtabs button[aria-pressed="true"]{background:var(--surface);border-bottom-color:var(--accent);font-weight:600}
.qtabs b{font-weight:600;color:var(--muted);margin-left:4px}

/* Dispatch */
.dsp{display:grid;gap:10px;grid-template-columns:minmax(0,1fr);min-height:0}
@media (min-width:900px){.dsp{grid-template-columns:250px minmax(0,1fr);grid-template-areas:"drv ord" "drv aux"} .dsp .p-drv{grid-area:drv} .dsp .p-ord{grid-area:ord} .dsp .p-aux{grid-area:aux}}
@media (min-width:1400px){.dsp{grid-template-columns:250px minmax(0,1fr) 380px;grid-template-areas:"drv ord aux"} .main.full{height:100%} .main.full .dsp{height:calc(100% - 4px)}}
.p-ord .dg{border:0;border-radius:0;max-height:62vh}
@media (min-width:1400px){.p-ord .dg{max-height:none;flex:1}}
.drvlist{list-style:none;margin:0;padding:0;overflow:auto}
.drvlist .grp{font-size:11.5px;font-weight:600;color:var(--muted);padding:6px 10px;background:var(--soft);border-bottom:1px solid var(--line);display:flex;justify-content:space-between}
.drvlist li.d{display:grid;grid-template-columns:12px 1fr auto;gap:8px;align-items:center;padding:7px 10px;border-bottom:1px solid var(--line);cursor:pointer}
.drvlist li.d:hover{background:var(--accent-soft)}
.drvlist li.d.sel{background:var(--sel)}
.drvlist li.d.over{outline:2px dashed var(--accent);outline-offset:-3px;background:var(--accent-soft)}
.drvlist .on{width:10px;height:10px;border-radius:50%;background:#2EAD5F;box-shadow:0 0 0 2px color-mix(in srgb,#2EAD5F 25%,transparent)}
.drvlist .off{width:10px;height:10px;border-radius:50%;background:var(--line2)}
.drvlist .nm{min-width:0}
.drvlist .nm b{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.drvlist .nm span{font-size:11.5px;color:var(--muted)}
.drvlist .cnt{font-size:11.5px;background:var(--soft);border:1px solid var(--line2);border-radius:9px;padding:0 7px;font-weight:600}
.drvlist .cnt.unread{background:var(--danger);color:#fff;border-color:var(--danger)}
.auxtabs{display:flex;border-bottom:1px solid var(--line)}
.auxtabs button{flex:1;background:var(--win);border:0;border-right:1px solid var(--line);padding:6px;cursor:pointer;font-size:12.5px}
.auxtabs button[aria-pressed="true"]{background:var(--surface);font-weight:600;box-shadow:inset 0 -2px 0 var(--accent)}
/* Messagerie : onglets Équipe (tout le monde) / Privé ; nom de l'auteur au-dessus des bulles de l'équipe */
.chat-tabs{display:flex;border-bottom:1px solid var(--line)}
.chat-tabs button{flex:1;display:flex;gap:6px;align-items:center;justify-content:center;background:var(--win);color:var(--ink);border:0;border-right:1px solid var(--line);padding:7px 6px;cursor:pointer;font:inherit;font-size:12.5px;min-width:0}
.chat-tabs button:last-child{border-right:0}
.chat-tabs button[aria-selected="true"]{background:var(--surface);font-weight:600;box-shadow:inset 0 -2px 0 var(--accent)}
.chat-tabs .nb{position:static;flex:0 0 auto}
.bub-n{display:block;font-size:11px;font-weight:600;margin-bottom:1px;color:var(--brand)}
.bub.them.disp{border-color:var(--accent)} .bub.them.disp .bub-n{color:var(--accent)}
.map>svg{display:block;width:100%;height:auto}
.lmap{width:100%;height:360px;position:relative;z-index:0;background:#E8ECF1}   /* z-index : les fenêtres et menus restent au-dessus de la carte */
.lmap-tour{height:320px}
.mk{width:100%;height:100%;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font:700 12px/1 var(--f-ui);border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.45);box-sizing:border-box}
.mk-c{background:#2F6FD0}.mk-d{background:#E07A1F}
.mk-drv{background:#2EAD5F;font-size:11px}.mk-drv.sel{background:#1B3A57;outline:3px solid #2EAD5F}
.mk-drv.vieux{opacity:.55}
.mk-drv.pb{background:var(--danger)}   /* problème signalé (bris de camion, accident…) */   /* pas de position en direct : dernier arrêt */
/* Répartition, carte en direct : livreur choisi et jour de son trajet */
.suivi-l{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px}
.suivi-j{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.suivi-j input{width:auto;padding:2px 6px}
.m-land{fill:var(--map-land)} .m-water{fill:var(--map-water)} .m-park{fill:var(--map-park)}
.m-road{stroke:var(--map-road);stroke-width:1.1;fill:none;stroke-linecap:round}
.m-road2{stroke:var(--map-road);stroke-width:.55;fill:none}
.m-lbl{font:2.3px var(--f-ui);fill:var(--muted)}
.m-route{stroke:var(--accent);stroke-width:.45;fill:none;stroke-dasharray:1.2 .8}
.m-route.late{stroke:var(--danger)}
.m-pick{fill:var(--surface);stroke:var(--ink);stroke-width:.45}
.m-drop{fill:var(--brand);stroke:var(--surface);stroke-width:.3}
.m-trail{stroke:var(--pick);stroke-width:.5;fill:none;stroke-dasharray:.6 .6}
.m-pin{fill:#2EAD5F;stroke:#FFFFFF;stroke-width:.45}
.m-pin.selp{fill:var(--accent)}
.m-pintxt{font:700 2px var(--f-ui);fill:#FFFFFF;text-anchor:middle;dominant-baseline:central}
.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:11.5px;color:var(--muted);padding:6px 10px;border-top:1px solid var(--line)}
.dot{width:9px;height:9px;border-radius:50%;display:inline-block;vertical-align:-1px;margin-right:4px}
.chat{display:flex;flex-direction:column;gap:6px;overflow:auto;padding:10px;max-height:340px;min-height:160px;background:var(--soft)}
.bub{max-width:82%;padding:6px 10px;border-radius:10px;font-size:13px;line-height:1.35;word-wrap:break-word}
.bub.me{align-self:flex-end;background:var(--accent);color:var(--accent-ink);border-bottom-right-radius:2px}
.bub.them{align-self:flex-start;background:var(--surface);border:1px solid var(--line);border-bottom-left-radius:2px}
.bub time{display:block;font-size:10.5px;opacity:.75;margin-top:2px}
.chatin{display:flex;gap:6px;padding:8px;border-top:1px solid var(--line)}

/* Fenêtres (dialogues) */
.modal{position:fixed;inset:0;background:rgba(10,18,26,.45);display:flex;align-items:center;justify-content:center;z-index:20;padding:16px}
.dlg{background:var(--win);border:1px solid var(--line2);border-radius:4px;width:100%;max-width:760px;max-height:100%;display:flex;flex-direction:column;box-shadow:0 18px 50px rgba(0,0,0,.3);min-height:0}
.dlg.sm{max-width:520px}
.dlg-t{background:var(--title);color:var(--title-ink);display:flex;align-items:center;justify-content:space-between;padding:7px 8px 7px 14px;border-radius:4px 4px 0 0;font-weight:600;gap:10px}
.dlg-t button{background:transparent;border:0;color:var(--title-ink);cursor:pointer;padding:2px 8px;font-size:16px;border-radius:2px}
.dlg-t button:hover{background:#C42B1C}
.dlg-tabs{display:flex;gap:0;padding:8px 12px 0;border-bottom:1px solid var(--line2);overflow-x:auto}
.dlg-tabs button{background:transparent;border:1px solid transparent;border-bottom:0;padding:5px 12px;cursor:pointer;border-radius:3px 3px 0 0;white-space:nowrap;margin-bottom:-1px}
.dlg-tabs button[aria-pressed="true"]{background:var(--surface);border-color:var(--line2);font-weight:600}
.dlg-b{padding:12px;overflow:auto;background:var(--surface);flex:1;min-height:0}
.dlg-f{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;padding:10px 12px;border-top:1px solid var(--line2);padding-bottom:calc(10px + env(safe-area-inset-bottom,0px))}
.dlg-f .sp{flex:1}
.kv{display:grid;grid-template-columns:max-content 1fr;gap:4px 14px;font-size:13px}
.kv dt{color:var(--muted)} .kv dd{margin:0;min-width:0}
.timeline{list-style:none;margin:0;padding:0}
.timeline li{display:grid;grid-template-columns:16px 1fr auto;gap:10px;padding-bottom:10px;position:relative;color:var(--muted)}
.timeline li::before{content:"";width:10px;height:10px;border-radius:50%;border:2px solid var(--line2);background:var(--surface);margin-top:4px}
.timeline li:not(:last-child)::after{content:"";position:absolute;left:5px;top:17px;bottom:0;width:2px;background:var(--line)}
.timeline li.on{color:var(--ink)} .timeline li.on::before{background:var(--accent);border-color:var(--accent)}
.timeline time{font-family:var(--f-mono);font-size:11.5px;white-space:nowrap}
.breakdown{display:grid;grid-template-columns:1fr auto;gap:3px 12px;font-size:13px}
.breakdown span:nth-child(even){text-align:right;font-variant-numeric:tabular-nums}
.breakdown .tot{font-weight:700;font-size:18px;padding-top:6px;border-top:1px solid var(--line2);margin-top:4px}
.paper{background:#FFFFFF;color:#111820;border:1px solid #9AA6B2;padding:14px;font-size:12.5px}
.paper h5{margin:0 0 6px;font-size:15px}
.paper table{border-collapse:collapse;width:100%}
.paper td,.paper th{border:1px solid #111820;padding:5px 7px;text-align:left;vertical-align:top}
.paper th{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;background:#EEF1F4}
.lbl{border:2px solid #111820;padding:10px;display:grid;gap:8px;background:#FFFFFF;color:#111820;max-width:420px}
.lbl .lh{display:flex;justify-content:space-between;align-items:center;font-weight:700;font-size:16px}
.lbl .svc{background:#111820;color:#FFFFFF;padding:1px 9px;font-size:15px}
.lbl .addrs{display:grid;grid-template-columns:1fr 1fr;gap:10px;font-size:12px;border-block:1px solid #111820;padding-block:7px}
.lbl .addrs b{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.08em}
.lbl svg{width:100%;height:auto;max-height:86px}
.lbl .l-boite{font-size:15px} .lbl .l-info{font-size:12px} .lbl .l-env{font-size:11px;text-align:center}
.w-bc svg{width:190px;height:auto;max-height:60px;margin-top:4px}
.docs-bar{align-items:end;margin-bottom:12px}
.maj-bar{position:fixed;top:8px;left:50%;transform:translateX(-50%);z-index:9999;display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:center;max-width:calc(100% - 24px);box-sizing:border-box;background:#1B3A57;color:#FFFFFF;padding:8px 12px;border-radius:8px;box-shadow:0 6px 24px rgba(0,0,0,.3);font-size:13px}
.maj-bar .btn{flex:0 0 auto}
.seg{display:flex;border:1px solid var(--line2);border-radius:6px;overflow:hidden}
.seg button{flex:1 1 0;border:0;background:var(--surface);color:var(--ink);padding:7px 8px;font-size:13px;cursor:pointer}
.seg button[aria-pressed="true"]{background:var(--accent);color:#fff;font-weight:600}
.hist-bar{display:flex;gap:6px 12px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin:0 0 8px;padding:6px 10px;border:1px solid var(--line);background:var(--surface)}
.hist-bar .row{gap:6px;align-items:center;flex:0 0 auto;flex-wrap:nowrap} .hist-bar .row>*{flex:0 0 auto}
/* Impression : seulement #printRoot (étiquettes ou bordereau), en noir sur blanc, avec la taille de page du document. */
#printRoot{display:none}
@media print{
  body.impression>*:not(#printRoot){display:none!important}
  body.impression{background:#FFFFFF!important;margin:0;padding:0}
  body.impression #printRoot{display:block;color:#000;print-color-adjust:exact;-webkit-print-color-adjust:exact}
  .pr-page{box-sizing:border-box;overflow:hidden;break-after:page;page-break-after:always}
  .pr-page:last-child{break-after:auto;page-break-after:auto}
  .pr-lettre{width:8.5in;height:10.9in;padding:.5in}
  .pr-grille{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:.25in;padding:.3in}
  .pr-4x6{width:4in;height:5.9in;padding:.12in}
  .pr-4x6 .pr-cel{height:100%}
  .pr-cel .lbl{max-width:none;height:100%;box-sizing:border-box;display:flex;flex-direction:column;gap:8px;font-size:13px}
  .pr-cel .lbl .a-to{font-size:15px} .pr-cel .lbl .addrs{font-size:13px} .pr-cel .lbl .l-boite{font-size:20px}
  .pr-cel .lbl svg{max-height:none;margin-top:auto}
  .pr-page .paper{border:0;padding:0;font-size:13px}
}
.pod{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.pod img,.pod .sig-v{height:90px;border:1px solid var(--line2);background:#FFFFFF}
.sig-v{background:#FFFFFF;max-width:100%}   /* signature en traits : fond blanc, même en mode sombre */
.ban-photos{display:flex;gap:8px 12px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.ban-photos .row{flex:0 0 auto;gap:6px} .ban-photos .row>.btn{flex:0 0 auto;width:auto;white-space:nowrap}
.sig{border:1px dashed var(--muted);background:#FFFFFF;touch-action:none;width:100%;height:170px;display:block}

/* Saisie de commande */
.entry{display:grid;gap:12px;grid-template-columns:minmax(0,1fr)}
@media (min-width:1100px){.entry{grid-template-columns:minmax(0,1fr) 320px;align-items:start}.entry .calc{position:sticky;top:0}}
.mods{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:4px 12px}

/* Indicateurs, barres */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px}
.kpi{background:var(--surface);border:1px solid var(--line2);border-radius:2px;padding:8px 12px}
.kpi span{font-size:11.5px;color:var(--muted)}
.kpi b{display:block;font-size:22px;font-weight:600;font-variant-numeric:tabular-nums}
.bars{display:flex;flex-direction:column;gap:7px}
.bar{display:grid;grid-template-columns:minmax(90px,30%) 1fr auto;gap:10px;align-items:center;font-size:12.5px}
.bar .t{height:12px;background:var(--soft);border:1px solid var(--line)}
.bar .t i{display:block;height:100%;background:var(--accent)}
.bar span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.two{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}
.qviews{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px;align-items:center}
.qviews button{border-radius:12px}
.qviews button[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}

/* Portail client */
.portal-top{background:var(--surface);border:1px solid var(--line2);border-top:3px solid var(--brand);padding:10px 14px;display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin-bottom:10px}
.portal-top .ttl{font-weight:700;font-size:16px;flex:1 1 200px}
.ptabs{display:flex;gap:0;border-bottom:1px solid var(--line2);margin-bottom:12px;overflow-x:auto}
.ptabs button{background:transparent;border:0;padding:8px 14px;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap}
.ptabs button[aria-pressed="true"]{border-bottom-color:var(--brand);font-weight:600}

/* App mobile livreur */
.phone-wrap{display:flex;justify-content:center;gap:24px;flex-wrap:wrap;align-items:flex-start}
.phone{width:370px;max-width:100%;height:740px;border:11px solid #0F1418;border-radius:38px;background:var(--bg);overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 50px rgba(0,0,0,.25);position:relative}
.phone .notch{height:22px;background:#0F1418;width:120px;margin:0 auto;border-radius:0 0 14px 14px;flex:0 0 auto}
.ph-head{background:var(--title);color:var(--title-ink);padding:8px 12px;display:flex;align-items:center;gap:8px;justify-content:space-between}
.ph-head select{background:rgba(255,255,255,.12);color:var(--title-ink);border-color:rgba(255,255,255,.25);width:auto;max-width:60%}
.ph-head select option{color:#111820}
.ph-body{flex:1;overflow:auto;padding:10px;min-height:0;display:flex;flex-direction:column;gap:8px}
.ph-nav{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line2);background:var(--surface)}
.ph-nav button{background:transparent;border:0;padding:7px 2px 9px;font-size:11px;display:flex;flex-direction:column;align-items:center;gap:2px;cursor:pointer;color:var(--muted);position:relative}
.ph-nav button svg{width:20px;height:20px}
.ph-nav button[aria-pressed="true"]{color:var(--accent);font-weight:600}
.ph-nav .nb{position:absolute;top:3px;right:22%;background:var(--danger);color:#fff;border-radius:8px;font-size:10px;padding:0 5px}
.seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;border:1px solid var(--line2);border-radius:4px;overflow:hidden}
.seg button{background:var(--surface);border:0;border-right:1px solid var(--line2);padding:6px 4px;cursor:pointer;font-size:12px}
.seg button:last-child{border-right:0}
.seg button[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink);font-weight:600}
.job{background:var(--surface);border:1px solid var(--line2);border-left:4px solid var(--sc);border-radius:4px;padding:9px 10px;display:flex;flex-direction:column;gap:5px;font-size:12.5px}
.job .jh{display:flex;justify-content:space-between;align-items:center;gap:6px}
.job .big{width:100%;padding:9px;font-weight:600}
.phone-side{max-width:340px;font-size:13px;color:var(--muted)}
@media (max-width:599px){ .phone{width:100%;height:auto;min-height:620px;border:0;border-radius:0;box-shadow:none} .phone .notch{display:none} .phone-side{display:none} .main.mob{padding:0} }

/* Menu contextuel et toast */
.ctx{position:fixed;z-index:40;background:var(--surface);border:1px solid var(--line2);box-shadow:0 8px 24px rgba(0,0,0,.2);padding:4px 0;min-width:210px;border-radius:3px}
.ctx button{display:flex;gap:10px;align-items:center;width:100%;background:transparent;border:0;padding:6px 14px;text-align:left;cursor:pointer;font-size:13px}
.ctx button svg{width:16px;height:16px}
.ctx button:hover:not(:disabled){background:var(--accent-soft)}
.ctx button:disabled{opacity:.4}
.ctx hr{border:0;border-top:1px solid var(--line);margin:4px 0}
.ctx .sub{padding:4px 14px;font-size:11.5px;color:var(--muted)}
.toast{position:fixed;right:16px;bottom:calc(36px + env(safe-area-inset-bottom,0px));background:var(--title);color:var(--title-ink);padding:9px 14px;border-radius:3px;font-size:13px;z-index:50;max-width:calc(100% - 32px);box-shadow:0 6px 20px rgba(0,0,0,.25)}

/* Téléphone */
@media (max-width:899px){
  .p-ord{order:-1}
  .burger{display:block}
  .menubar,.titlebar .who{display:none}
  .body{grid-template-columns:minmax(0,1fr)}
  .tree{position:fixed;top:0;bottom:0;left:0;width:270px;z-index:30;transform:translateX(-100%);transition:transform .2s;box-shadow:0 0 30px rgba(0,0,0,.3);padding-top:calc(12px + env(safe-area-inset-top,0px))}
  .tree.open{transform:none}
  .ribbon{min-height:74px;padding-top:4px}
  .rbtn{min-width:58px;font-size:11px} .rbtn svg{width:22px;height:22px}
  .p-ord .dg{max-height:none}
  .statusbar span:nth-child(n+3):not(:last-child){display:none}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
a.btn{text-decoration:none;display:inline-flex;align-items:center;justify-content:center;color:var(--ink)}
/* Applications autonomes */
#appRoot{height:100%}
.nb{position:absolute;top:3px;right:22%;background:var(--danger);color:#fff;border-radius:8px;font-size:10px;padding:0 5px;font-weight:600}
.btn.big{width:100%;padding:11px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:8px}
.btn.big svg{width:20px;height:20px}
button.job{text-align:left;cursor:pointer;width:100%;font:inherit;color:inherit}
button.job:hover{border-color:var(--accent)}
.job .jf{display:flex;justify-content:space-between;align-items:center;gap:8px}
.da{height:100%;max-width:520px;margin:0 auto;display:flex;flex-direction:column;background:var(--bg);border-inline:1px solid var(--line2);min-height:0}
.da-h{background:var(--title);color:var(--title-ink);display:flex;align-items:center;gap:10px;padding:10px 16px;justify-content:space-between}
.da-who{display:flex;flex-direction:column;min-width:0;flex:1}
.da-who b{font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.da-who span{font-size:12px;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.da-h .back{background:transparent;border:0;color:var(--title-ink);font-size:15px;cursor:pointer;padding:4px 6px 4px 0;white-space:nowrap}
.pill{border:1px solid rgba(255,255,255,.45);background:transparent;color:var(--title-ink);border-radius:14px;padding:4px 12px;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap}
.pill.on{background:#2EAD5F;border-color:#2EAD5F;color:#FFFFFF}
.da-b{flex:1;overflow:auto;padding:12px 16px;display:flex;flex-direction:column;gap:10px;min-height:0}
.da-b .chat{max-height:none;flex:1}
.da-nav{display:grid;grid-template-columns:repeat(5,1fr);background:var(--surface);border-top:1px solid var(--line2);padding-bottom:env(safe-area-inset-bottom,0px)}
.da-nav button{background:transparent;border:0;padding:7px 2px 9px;font-size:11px;display:flex;flex-direction:column;align-items:center;gap:2px;cursor:pointer;color:var(--muted);position:relative}
.da-nav svg{width:22px;height:22px}
.da-nav button[aria-pressed="true"]{color:var(--accent);font-weight:600}
.da-login{justify-content:center;padding:24px 16px;gap:18px}
.da-logo{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}
.da-logo svg{width:60px;height:60px}
.da-logo b{font-size:22px}
.cp{min-height:100%;display:flex;flex-direction:column;background:var(--bg)}
.cp-w{max-width:1140px;margin:0 auto;width:100%;padding-inline:16px}
.cp-h{background:var(--surface);border-bottom:3px solid var(--brand);position:sticky;top:env(safe-area-inset-top,0px);z-index:5}
.cp-hin{display:flex;align-items:center;gap:16px;min-height:62px;flex-wrap:wrap;padding-block:6px}
.cp-brand{display:flex;align-items:center;gap:10px}
.cp-brand svg{width:34px;height:34px}
.cp-brand span{display:flex;flex-direction:column;line-height:1.2}
.cp-brand small{color:var(--muted);font-size:12px}
.cp-nav{display:flex;gap:2px;flex:1;overflow-x:auto}
.cp-nav button{background:transparent;border:0;padding:8px 12px;cursor:pointer;border-radius:3px;white-space:nowrap;font-weight:500}
.cp-nav button:hover{background:var(--soft)}
.cp-nav button[aria-pressed="true"]{background:var(--accent-soft);color:var(--accent);font-weight:600}
.cp-user{display:flex;align-items:center;gap:8px;font-size:13px}
.cp-main{flex:1;padding-block:20px 32px}
.cp-t{font-size:20px;margin:0 0 12px;font-weight:600}
.cp-hero{padding:22px 0 20px}
.cp-hero h1{font-size:28px;margin:0 0 6px;text-wrap:balance}
.cp-hero p{color:var(--muted);margin:0}
.cp-f{background:var(--title);color:var(--title-ink);font-size:12.5px;padding-block:14px}
@media (max-width:700px){ .cp-user span{display:none} .cp-nav{order:3;flex-basis:100%;flex-wrap:wrap} .cp-hero h1{font-size:22px} }

[hidden]{display:none!important}
.row>.lvl,.row>.st{flex:0 0 auto}
@media (max-width:699px){.toast{bottom:calc(84px + env(safe-area-inset-bottom,0px));right:16px;left:16px}}
/* ===== Présentation « suite de gestion » ===== */
:root{--rowsel:#CCE8FF;--rowlate:#F9DCD3;--rowquote:#EEF1F4;--chart:#3C78C8;--chart-a:rgba(60,120,200,.28)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--rowsel:#22405F;--rowlate:#4A2A27;--rowquote:#262F38;--chart:#6AA4EE;--chart-a:rgba(106,164,238,.3)}}
:root[data-theme="dark"]{--rowsel:#22405F;--rowlate:#4A2A27;--rowquote:#262F38;--chart:#6AA4EE;--chart-a:rgba(106,164,238,.3)}
.app{grid-template-rows:auto auto auto 1fr auto}
.titlebar{background:var(--win);color:var(--ink);height:32px;border-bottom:1px solid var(--line);position:relative;padding:0 16px;gap:10px}
.titlebar .logo{font-weight:600;font-size:12.5px;margin:0}
.titlebar .logo svg{width:18px;height:18px}
.ctxlabel{color:#FFFFFF;font-size:11.5px;font-weight:600;padding:0 22px;align-self:stretch;display:flex;align-items:center}
.ttl{position:absolute;left:50%;transform:translateX(-50%);font-size:12.5px;color:var(--muted);white-space:nowrap;pointer-events:none}
.tsearch{margin-left:auto;width:220px;max-width:40vw}
.tsearch input{padding:2px 8px;font-size:12px;height:22px;border-radius:2px}
.burger{color:var(--ink)}
.rtabs{display:flex;gap:0;background:var(--win);padding:0 16px;overflow-x:auto;border-bottom:1px solid var(--line2)}
.rtabs button{background:transparent;border:1px solid transparent;border-bottom:0;padding:5px 13px;font-size:12.5px;cursor:pointer;margin-bottom:-1px;white-space:nowrap}
.rtabs button:hover{color:var(--accent)}
.rtabs button.file{background:var(--accent);color:var(--accent-ink);border-radius:0;margin-right:6px}
.rtabs button[aria-selected="true"]{background:var(--rib);border-color:var(--line2);color:var(--accent)}
.rtabs button.ctxtab{color:var(--cc);font-weight:600}
.rtabs button.ctxtab[aria-selected="true"]{color:var(--cc);border-top:2px solid var(--cc)}
.ribbon{min-height:80px;padding:4px 16px 0;border-bottom:1px solid var(--line2)}
.rbtn{min-width:56px;max-width:84px;font-size:11.5px;padding:3px 5px}
.rbtn svg{width:24px;height:24px}
.body{grid-template-columns:236px minmax(0,1fr)}
.side{background:var(--win);border-right:1px solid var(--line2);display:flex;flex-direction:column;min-height:0}
.modpane{flex:1 1 auto;overflow:auto;min-height:120px;background:var(--surface)}
.mp-h{display:flex;align-items:center;justify-content:space-between;padding:7px 12px;font-size:15px;font-weight:600;border-bottom:1px solid var(--line)}
.mp-s{padding:6px 12px 8px}
.mp-l{font-size:11.5px;color:var(--muted);font-weight:600;margin:4px 0 3px}
.mp-r{flex-direction:row;align-items:center;gap:6px;color:var(--ink);font-size:12.5px;padding:2px 0;cursor:pointer}
.mp-r input{width:auto;margin:0}
.mp-a{display:block;background:transparent;border:0;color:var(--accent);padding:2px 0;font-size:12.5px;cursor:pointer;text-align:left}
.mp-a:hover{text-decoration:underline}
.side .tree{position:static;transform:none;width:auto;box-shadow:none;border-right:0;border-top:1px solid var(--line2);flex:0 0 auto;overflow:visible;padding:4px 0 8px;background:var(--win)}
.side .tree button{padding:4px 14px;font-size:13px}
.side .tree button svg{width:18px;height:18px}
.dgwrap{display:flex;flex-direction:column;min-height:0}
.dg table{font-size:12px}
.dg th{padding:3px 6px;font-weight:400;background:var(--win)}
.dg tr.fr th{top:24px;padding:1px 2px}
.dg tr.fr input{padding:1px 4px;height:20px;border-radius:0;border-color:var(--line)}
.dg td{padding:3px 6px}
.dg tbody tr:nth-child(even) td{background:var(--surface)}
.dg tbody tr.late td{background:var(--rowlate)}
.dg tbody tr.quote td{background:var(--rowquote);font-style:italic}
.dg tbody tr:hover td{background:color-mix(in srgb,var(--rowsel) 55%,var(--surface))}
.dg tbody tr.sel td{background:var(--rowsel)}
.dgfoot{font-size:11.5px;color:var(--muted);padding:3px 8px;background:var(--win);border:1px solid var(--line2);border-top:0}
.lnk{background:transparent;border:0;color:var(--accent);cursor:pointer;padding:0;font-size:11.5px;text-decoration:underline}
.p-ord .dgwrap{flex:1;min-height:0}
.p-ord .dgfoot{border-inline:0;border-bottom:0}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:2px;padding:6px}
.tile{display:flex;gap:10px;align-items:flex-start;text-align:left;background:transparent;border:1px solid transparent;border-radius:3px;padding:8px;cursor:pointer}
.tile:hover{background:var(--accent-soft);border-color:var(--line2)}
.tile svg{width:30px;height:30px;flex:0 0 auto}
.tile span{display:flex;flex-direction:column;gap:2px}
.tile small{color:var(--muted);font-size:12px}
.feed{display:flex;flex-direction:column;font-size:12.5px}
.feed div{display:grid;grid-template-columns:auto 8px 1fr;gap:8px;padding:4px 0;border-bottom:1px solid var(--line);align-items:center}
.feed div>span:first-child{white-space:nowrap}
.feed i{width:8px;height:8px;border-radius:50%}
.charts{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.chart{display:block;width:100%;height:auto}
.chart .cg{stroke:var(--line);stroke-width:1}
.chart .cl{font:9.5px var(--f-ui);fill:var(--muted)}
.chart .cb{fill:var(--chart)}
.chart .ca{fill:var(--chart-a)}
.chart .cs{fill:none;stroke:var(--chart);stroke-width:1.5}
@media (max-width:899px){
  .side{position:fixed;top:0;bottom:0;left:0;width:280px;z-index:30;transform:translateX(-100%);transition:transform .2s;box-shadow:0 0 30px rgba(0,0,0,.3);padding-top:env(safe-area-inset-top,0px)}
  .side.open{transform:none}
  .ttl,.tsearch{display:none}
  .body{grid-template-columns:minmax(0,1fr)}
}
/* ===== App livreur ===== */
.da-h{padding:8px 12px;gap:8px}
.da-h .ham,.da-ics button{background:transparent;border:0;color:var(--title-ink);cursor:pointer;padding:4px;border-radius:4px;display:flex}
.da-h .ham svg,.da-ics svg{width:22px;height:22px}
.da-ics{display:flex;gap:2px}
.da-ics button[aria-pressed="true"]{background:rgba(255,255,255,.18)}
.da-t{flex:1;font-size:16px}
.da-status{border:0;text-align:center;padding:4px 10px;cursor:pointer;display:flex;flex-direction:column;font-size:11px;line-height:1.3}
.da-status b{font-size:12px;letter-spacing:.04em}
.da-status.on{background:#8EE07F;color:#13310E}
.da-status.off{background:#E3E7EB;color:#3B4651}
.da-status.pb{background:var(--danger);color:#fff}
.da-b{padding:8px 12px;gap:8px}
.da-search{display:flex;align-items:center;gap:6px;background:var(--soft);border:1px solid var(--line2);border-radius:6px;padding:0 8px}
.da-search svg{width:16px;height:16px;color:var(--muted)}
.da-search input{border:0;background:transparent;padding:7px 0;box-shadow:none}
.legs{display:flex;flex-direction:column;border:1px solid var(--line2);border-radius:3px;overflow:hidden;background:var(--surface)}
.leg{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:6px;align-items:center;background:var(--surface);border:0;border-bottom:1px solid var(--line);border-left:5px solid #9AA4AE;padding:6px 8px 6px 4px;text-align:left;cursor:pointer;font:inherit;color:inherit;width:100%}
.leg:last-child{border-bottom:0}
.leg.sel{background:var(--rowsel);border-left-color:var(--accent)}
.lg-ic{display:flex;flex-direction:column;align-items:center;gap:0;font-size:10px;position:relative}
.lg-n{position:absolute;top:-3px;left:2px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:var(--ink);color:var(--surface);font-size:11px;font-weight:700;line-height:18px;text-align:center;z-index:1}
.da-b>*{flex-shrink:0}
button,a,.leg,.job,label.check{touch-action:manipulation}   /* pas de délai ni de zoom au double toucher */
.natif .lien-web,.site-dedie .lien-web{display:none!important}   /* app native, ou adresse réservée à une app */
.natif .da{border-inline:0;max-width:none}
:root.natif{padding-top:0!important;padding-bottom:0!important}   /* app native : la barre d'état est hors de la page ; le bas est géré par les onglets */
/* Android 15 et plus (bord à bord) : la page passe sous la barre d'état. Bande bleu foncé derrière l'heure et les icônes,
   comme sur iPhone, et le contenu commence dessous. Le bas : les onglets ont déjà la marge env(safe-area-inset-bottom). */
:root.natif.android{padding-top:env(safe-area-inset-top,0px)!important;background:#1B3A57}
.android .modal{padding-top:calc(16px + env(safe-area-inset-top,0px))}
.natif,.natif body{-webkit-tap-highlight-color:transparent;overscroll-behavior:none}
.natif .da-h,.natif .da-tabs,.natif .da-status{-webkit-user-select:none;user-select:none}   /* la liste et la carte gardent leur hauteur : c'est la page qui défile */
.lg-km{font-weight:600;color:var(--accent)}
.da-tri{display:flex;justify-content:space-between;align-items:center;gap:8px;color:var(--muted);padding:0 2px}
.m-tour{fill:none;stroke:var(--accent);stroke-width:.6;stroke-dasharray:1.6 .9;stroke-linejoin:round;stroke-linecap:round}
.lg-ic svg{width:30px;height:30px;stroke-width:2.4}
.lg-ic.c{color:#2F6FD0} .lg-ic.d{color:#E07A1F}
.lg-m{display:flex;flex-direction:column;font-size:12.5px;min-width:0}
.lg-m span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lg-m .lg-adr{white-space:normal;overflow-wrap:anywhere}   /* adresse complète */
.lg-r{display:flex;flex-direction:column;align-items:flex-end;font-size:12px;white-space:nowrap}
.selbar{display:flex;gap:8px;align-items:center;justify-content:center;flex-wrap:wrap;padding:4px 0}
.selpill{border:1px solid var(--danger);color:var(--danger);border-radius:4px;padding:1px 10px;font-size:12px;background:var(--surface)}
.selbar.quiet{opacity:.75}
/* App livreur : une commande par ligne, collecte à gauche et livraison à droite */
.paires{display:flex;flex-direction:column;gap:8px}
.paire{background:var(--surface);border:1px solid var(--line2);border-radius:3px;overflow:hidden}
.paire-h{display:flex;flex-wrap:wrap;gap:0 6px;align-items:baseline;padding:5px 8px;border-bottom:1px solid var(--line);background:var(--win);font-size:12.5px}
.paire-st{margin-left:auto;color:var(--muted);font-size:11.5px}
.paire-c{display:grid;grid-template-columns:1fr 1fr}
.cel{display:flex;flex-direction:column;gap:1px;min-width:0;padding:6px 8px 8px;border:0;border-top:4px solid #2F6FD0;background:var(--surface);text-align:left;font:inherit;font-size:12.5px;color:inherit;cursor:pointer}
.cel.d{border-top-color:#E07A1F}
.cel+.cel{border-left:1px solid var(--line)}
.cel.sel{background:var(--rowsel)}
.cel.fait{border-top-color:var(--line2);color:var(--muted)}
.cel-t{display:flex;align-items:center;gap:4px;font-size:13px}
.cel-t svg{width:20px;height:20px;stroke-width:2.4;flex-shrink:0}
.cel.c .cel-t svg{color:#2F6FD0} .cel.d .cel-t svg{color:#E07A1F}
.cel .lg-n{position:static;flex-shrink:0}
.cel-a{overflow-wrap:anywhere}
/* Fiche d'une commande (app livreur) : collecte à gauche, livraison à droite */
.da-2col{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.da-2col>.pane{min-width:0;overflow-wrap:anywhere}
.da-2col>.pane.c{border-top:4px solid #2F6FD0} .da-2col>.pane.d{border-top:4px solid #E07A1F}   /* nom et adresse complets : la ligne continue en dessous au lieu d'être coupée */
.da-tabs{display:grid;grid-template-columns:repeat(3,1fr);background:var(--surface);border-top:1px solid var(--line2);padding-bottom:env(safe-area-inset-bottom,0px)}
.da-tabs button{background:transparent;border:0;padding:7px 4px 9px;font-size:12px;display:flex;flex-direction:column;align-items:center;gap:2px;cursor:pointer;color:var(--muted)}
.da-tabs svg{width:22px;height:22px}
.da-tabs button[aria-pressed="true"]{color:var(--accent);font-weight:600}
.da{position:relative}
.da-scrim{position:absolute;inset:0;background:rgba(0,0,0,.35);z-index:4}
.da-sheet{position:absolute;left:0;right:0;bottom:0;z-index:5;background:var(--surface);border-radius:14px 14px 0 0;padding:16px 16px calc(16px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px;box-shadow:0 -4px 20px rgba(0,0,0,.25);max-height:92%;overflow:auto}
.da-sheet-t{font-size:16px}
.pb-ch{padding:10px 12px;border:1px solid var(--line);border-radius:8px;font-size:15px}
.pb-ch:has(input:checked){border-color:var(--danger);background:var(--danger-bg)}
.da-sheet .row>.btn{flex:1 1 0}
.da-menu{position:absolute;top:0;bottom:0;left:0;width:78%;max-width:320px;background:var(--surface);z-index:5;display:flex;flex-direction:column;box-shadow:4px 0 20px rgba(0,0,0,.25);overflow:auto}
.dm-h{background:#6D8FB0;color:#FFFFFF;display:flex;gap:10px;align-items:center;padding:16px}
.dm-h svg{width:34px;height:34px}
.dm-h span{display:flex;flex-direction:column}
.dm-h small{opacity:.9}
.da-menu button{display:flex;gap:14px;align-items:center;background:transparent;border:0;border-bottom:1px solid var(--line);padding:13px 16px;font-size:16px;cursor:pointer;text-align:left;color:var(--accent)}
.da-menu button svg{width:26px;height:26px}
/* ===== Portail client ===== */
.cp-home{display:flex;flex-direction:column;gap:2px;max-width:640px}
.cp-link{display:flex;gap:14px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:3px;padding:12px 14px;text-align:left;cursor:pointer}
.cp-link:hover{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 7%,var(--surface))}
.cp-link svg{width:32px;height:32px;flex:0 0 auto}
.cp-link span{display:flex;flex-direction:column}
.cp-link b{color:var(--accent);font-size:15px}
.cp-link small{color:var(--muted)}
.cp-h{border-bottom-width:4px}
.cp-nav button[aria-pressed="true"]{background:transparent;color:var(--brand);box-shadow:inset 0 -3px 0 var(--brand);border-radius:0}

.dg tbody tr.late{color:var(--ink);font-weight:400}
.dg tbody tr.late td.late{color:var(--danger);font-weight:600}

/* iPhone et iPad : un champ de moins de 16 px fait grossir la page quand on le touche (et l'app native ne laisse pas dézoomer).
   À la fin du fichier pour l'emporter sur les champs plus petits (.mono, filtres des grilles). */
@supports (-webkit-touch-callout:none){input,select,textarea,input.mono,.dg tr.fr input,.dg select{font-size:16px}}
