/* ============================================================================
   CRM Autech Expert — charte graphique unique du CRM.
   Base reprise À L'IDENTIQUE de C:\RemoteExpert\site\app.css (service technique
   Remote), par décision de Guillaume (24/10/2026 soir) : tout le CRM doit
   ressembler « comme deux gouttes d'eau » à Remote. Voir design/CHARTE-REMOTE.md
   pour la liste des classes à utiliser par les développeurs.
   Ne pas modifier les règles ci-dessous (jusqu'au marqueur « COMPATIBILITÉ »)
   sans les reporter aussi dans Remote : elles doivent rester identiques.

   --accent (bleu ardoise) = TOUTE l'interaction : boutons principaux, sélection, focus, onglets actifs.
   --rouge = UNIQUEMENT danger / erreur / échec / suppression / non lus (+ logo de la marque). Appeler = --appel (vert), raccrocher = --danger. */
:root{
  --nav:#23272e;--nav-ok:#4cc285;--nav-retard:#f0a640;--nav-ko:#ff4d5e;--nav-champ:#31363e;--nav-txt:#e9ebee;--nav-txt2:#a3a9b1;--nav-survol:rgba(255,255,255,.08);
  --accent:#3b5b80;--accent-d:#2d4766;--accent-f:#eaf0f6;--accent-t:#2d4766;--appel:#1e7f49;--appel-d:#17663a;--danger:#c4122f;--danger-d:#9e0e26;
  --fond:#ecece7;--fond2:#f7f7f4;--carte:#fff;--bord:#d3d3cb;--bord2:#e4e4dd;--ombre-c:0 1px 3px rgba(26,29,33,.08),0 1px 1px rgba(26,29,33,.04);
  --txt:#1a1d21;--txt2:#3a3f45;--txt3:#5f656c;
  --vert:#1e7f49;--vert-f:#e6f5ec;--rouge:#e2001a;--rouge-f:#fdecec;--jaune:#a87500;--orange:#b26a00;--orange-f:#fff4e0;
  --bleu:#2a5bd7;--bleu-f:#e9effc;--violet:#6b46c1;--violet-f:#f1ecfb;--cyan:#0e7490;--cyan-f:#e3f3f6;--rose:#be185d;--brun:#8a5a2b;
  --r:12px;--blanc:#fff;--ombre-f:0 8px 32px rgba(16,27,40,.18);--ombre-h:0 14px 30px -12px rgba(26,29,33,.28);
}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--accent:#4b74a6;--accent-d:#3d6390;--accent-f:#1f2a37;--accent-t:#9dbbe0;--appel:#23774a;--appel-d:#1d6b40;--danger:#c93a47;--danger-d:#a8303c;--fond:#101215;--fond2:#1b1f24;--carte:#1f2328;--bord:#3a4048;--bord2:#2d3238;--ombre-c:0 1px 3px rgba(0,0,0,.45);--txt:#e9ebee;--txt2:#c9cdd2;--txt3:#9aa1a9;--vert:#4cc285;--vert-f:#173326;--rouge:#ff4d5e;--rouge-f:#3a1a1e;--jaune:#f5c542;--orange:#f0a640;--orange-f:#3a2c14;--bleu:#7aa2ff;--bleu-f:#1d2740;--violet:#b49cf0;--violet-f:#2a2340;--cyan:#4fd1e0;--cyan-f:#14303a;--rose:#f472b6;--brun:#d6a26a;--ombre-f:0 8px 32px rgba(0,0,0,.5);--ombre-h:0 14px 30px -12px rgba(0,0,0,.6)}}
:root[data-theme=dark]{color-scheme:dark;
  --accent:#4b74a6;--accent-d:#3d6390;--accent-f:#1f2a37;--accent-t:#9dbbe0;--appel:#23774a;--appel-d:#1d6b40;--danger:#c93a47;--danger-d:#a8303c;
  --fond:#101215;--fond2:#1b1f24;--carte:#1f2328;--bord:#3a4048;--bord2:#2d3238;--ombre-c:0 1px 3px rgba(0,0,0,.45);
  --txt:#e9ebee;--txt2:#c9cdd2;--txt3:#9aa1a9;
  --vert:#4cc285;--vert-f:#173326;--rouge:#ff4d5e;--rouge-f:#3a1a1e;--jaune:#f5c542;--orange:#f0a640;--orange-f:#3a2c14;
  --bleu:#7aa2ff;--bleu-f:#1d2740;--violet:#b49cf0;--violet-f:#2a2340;--cyan:#4fd1e0;--cyan-f:#14303a;--rose:#f472b6;--brun:#d6a26a;--ombre-f:0 8px 32px rgba(0,0,0,.5);--ombre-h:0 14px 30px -12px rgba(0,0,0,.6);
}
*{box-sizing:border-box}
[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
html,body{margin:0;height:100%}
body{font-family:Inter,"Segoe UI",Roboto,system-ui,sans-serif;background:var(--fond);color:var(--txt);font-size:14px;line-height:1.45}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
h1{font-size:20px;margin:0}
h2{font-size:15px;margin:0 0 12px}
h3{font-size:13px;margin:0 0 8px;color:var(--txt3);text-transform:uppercase;letter-spacing:.04em;font-weight:600}

/* Layout */
.app{display:flex;min-height:100vh}
.side{width:232px;flex:none;background:var(--nav);color:var(--nav-txt);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.brand{display:flex;gap:10px;align-items:center;padding:18px 16px 14px}
.brand img{width:52px;height:30px;object-fit:contain;background:var(--blanc);border-radius:6px;padding:2px}
.brand b{display:block;font-size:13px;letter-spacing:.01em;white-space:nowrap}
.side .brand>div{min-width:0}.side .brand b{overflow:hidden;text-overflow:ellipsis}
.brand small{color:var(--nav-txt2);font-size:10.5px;letter-spacing:.08em}
.nav{padding:6px 8px;flex:1;overflow:auto}
.nav a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:6px;color:var(--nav-txt);margin-bottom:2px}
.nav a:hover{background:var(--nav-survol)}
.nav a.on{background:var(--accent);color:var(--blanc)}
.nav a .n{margin-left:auto;background:var(--nav-champ);border-radius:999px;padding:0 7px;font-size:11.5px}
/* bulle de notification (nouvelles demandes) : rouge = « non lu », réservé à cet usage */
.nav a .n.alerte{min-width:20px;text-align:center;background:var(--danger);color:var(--blanc);font-weight:700}
/* grosse bulle : Remotes dont le ticket intranet est ouvert (27/10/2026) */
.nav a .n.gros{min-width:28px;height:24px;line-height:24px;padding:0 9px;font-size:13.5px;font-weight:800;box-shadow:var(--ombre-c)}
.nav a.on .n{background:color-mix(in srgb,var(--blanc) 25%,transparent)}
.nav a.on .n.alerte{background:var(--danger);box-shadow:0 0 0 2px color-mix(in srgb,var(--blanc) 35%,transparent)}
.nav svg{width:17px;height:17px;flex:none}
.sync{margin:8px;padding:10px;border-radius:6px;background:var(--nav-champ);font-size:11.5px;color:var(--nav-txt2)}
.sync b{color:var(--nav-txt)}
.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--vert);margin-right:5px}
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.top{display:flex;align-items:center;gap:12px;padding:14px 24px;background:var(--carte);border-bottom:1px solid var(--bord);position:sticky;top:env(safe-area-inset-top,0px);z-index:5}
.top .sp{flex:1}
.burger{display:none}
.user{display:flex;align-items:center;gap:8px;color:var(--txt2)}
.av{width:28px;height:28px;border-radius:50%;background:var(--accent);color:var(--blanc);display:grid;place-items:center;font-weight:600;font-size:12px;flex:none}
.content{padding:24px;width:100%}

/* Composants */
.card{background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);padding:16px;box-shadow:var(--ombre-c)}
.grid{display:grid;gap:16px}
.g4{grid-template-columns:repeat(4,1fr)}
.g2{grid-template-columns:1fr 1fr}
.g32{grid-template-columns:3fr 2fr}
/* Tableau de bord : planning à gauche, KPI 2×2 + parcours dans une colonne étroite */
.g-dash{grid-template-columns:minmax(0,1fr) minmax(260px,340px);align-items:start}
@media (max-width:1100px){.g-dash{grid-template-columns:1fr}}
.dash-plan{min-width:0}
/* tableau de bord : tout sur un écran */
.dash .dash-kpis{margin-bottom:0;gap:12px;grid-template-columns:1fr 1fr}
.dash .kpi{padding:10px 14px}
.dash .kpi .v{font-size:22px;margin-top:0;line-height:1.2}
.dash .kpi .l,.dash .kpi .d{font-size:12px}
.dash .dash-alerte{margin-bottom:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:1100px){.dash .dash-alerte{white-space:normal}}
.dash .g-dash{gap:12px}
.dash .g-dash>.grid{gap:12px}
.dash .g-dash .card{padding:12px 16px}
.dash .g-dash h2{margin-bottom:4px}
.dash .hbar{margin:3px 0;font-size:12.5px}
.dash .g-dash .list-item{padding:3px 0;min-height:44px}
.dash .g-dash .card p.small{margin-top:6px!important;font-size:11.5px}
.dash-plan-hd{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;margin-bottom:10px}
.dash-plan-hd h2{margin:0}
.dash-leg{margin:0}
.ag-riche .ag-grid{min-width:0!important;grid-template-columns:52px minmax(0,1fr)!important}
.ag-riche .ev{padding:6px 10px;font-size:12.5px;line-height:1.35;display:flex;flex-direction:column;gap:2px}
.evr-hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.evr-hd b{font-size:13.5px}
.evr-etat{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.evr-tech{margin-left:auto;font-weight:600}
.evr-l{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.evr-dem{color:var(--txt3);white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
/* lignes jamais écrasées les unes sur les autres : ce qui ne tient pas dans la hauteur du créneau est masqué proprement */
.ag-riche .ev{overflow:hidden}
.ag-riche .ev>*{flex-shrink:0}
/* Agenda, choix du créneau : les RDV déjà posés laissent passer le clic (deux RDV au même horaire = côte à côte) */
.ag.pick .ev{pointer-events:none;opacity:.8}
/* En-tête de case avec bouton vers la fiche concernée (fiche ticket) */
.card-hd{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px;min-height:28px}
@media (pointer:coarse){.card-hd{min-height:44px}}
.card-hd h3{margin:0}
.card-go{display:inline-flex;align-items:center;gap:6px;flex:none}
.card-go svg{width:14px;height:14px;fill:currentColor}
.tk-distrib{font-size:13px;line-height:1.6}
/* Parcours : étape « Commande créée » (verte quand la commande de la tablette est synchronisée) */
.step.done.creee{border-color:var(--vert);color:color-mix(in srgb,var(--vert) 80%,var(--txt));font-weight:700}
.step.attente{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.step-sync{margin-top:2px}
.step-btns{display:flex;flex-wrap:wrap;gap:4px;width:100%}
.step-btns .btn{white-space:normal;text-align:left;line-height:1.25;max-width:100%}
.fc-l{border:0;padding:0;margin:0 0 10px;display:flex;flex-direction:column;gap:6px;max-height:50vh;overflow:auto}
@media (max-width:560px){.fc-l{max-height:none}}
.fc-o{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--bord);border-radius:10px;cursor:pointer;background:var(--carte);transition:border-color .15s,background .15s}
.fc-o:hover{border-color:color-mix(in srgb,var(--accent) 55%,var(--bord))}
.fc-o:has(input:checked){border-color:var(--accent);background:var(--accent-f)}
.fc-o:has(input:focus-visible){box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}
.fc-l .fc-o input{accent-color:var(--accent);margin-top:3px}
.fc-o>span{display:flex;flex-direction:column;gap:2px;min-width:0}
.fc-o .badge{align-self:flex-start}
/* la règle générale « form label:has(input radio) » (min-height 32px, alignement centré) écrasait les lignes dans la liste défilante */
.fc-l>.fc-o{flex:none;min-height:max-content;align-items:flex-start;gap:10px}
/* Panneau « Commande terminée » */
.tm-choix{border:0;padding:0;margin:0 0 14px;display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tm-choix legend{margin-bottom:8px}
.tm-opt{position:relative;display:flex;gap:10px;align-items:center;padding:12px 14px;border:2px solid var(--bord);border-radius:10px;cursor:pointer;background:var(--carte);transition:border-color .15s,background .15s,transform .15s}
.tm-opt:hover{border-color:var(--txt3);transform:translateY(-1px)}
.kv dd .badge{white-space:normal;border-radius:10px;line-height:1.35;padding:3px 8px}
.tm-opt input{position:absolute;opacity:0;pointer-events:none}
.tm-opt>span:last-child{display:grid}
.tm-ic{width:32px;height:32px;border-radius:999px;display:grid;place-items:center;font-weight:800;flex:none;background:var(--fond2);color:var(--txt3)}
.tm-opt.ok:has(input:checked){border-color:var(--vert);background:var(--vert-f)}
.tm-opt.ok:has(input:checked) .tm-ic{background:var(--vert);color:var(--blanc)}
.tm-opt.ko:has(input:checked){border-color:var(--rouge);background:var(--rouge-f)}
.tm-opt.ko:has(input:checked) .tm-ic{background:var(--rouge);color:var(--blanc)}
.tm-opt:has(input:focus-visible){box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}
.tm-info:empty{display:none}
@media (max-width:480px){.tm-choix{grid-template-columns:1fr}}
/* Dictée vocale : micro en bas à droite des champs de commentaire */
.dictee-w{position:relative}
.dictee-w>textarea{resize:vertical;padding-right:68px;min-height:64px}
.dictee-btn{position:absolute;right:20px;bottom:8px;width:44px;height:44px;border-radius:999px;border:1px solid var(--bord);background:var(--carte);color:var(--txt3);display:grid;place-items:center;cursor:pointer;transition:background .15s,color .15s,border-color .15s,transform .15s}
.dictee-btn svg{width:18px;height:18px;fill:currentColor}
.dictee-btn:hover{color:var(--accent-t);border-color:var(--accent);transform:translateY(-1px)}
.dictee-btn:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}
.dictee-btn.on{background:var(--accent);border-color:var(--accent);color:var(--blanc);animation:dictee-pulse 1.4s ease-out infinite}
@keyframes dictee-pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 45%,transparent)}100%{box-shadow:0 0 0 10px transparent}}
@media (prefers-reduced-motion:reduce){.dictee-btn.on{animation:none}}
/* Statut et options des appareils (repris de l'intranet) */
.app-etat{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 10px}
.app-opts{display:flex;flex-wrap:wrap;gap:4px;max-width:340px}
.app-b{font-weight:600;white-space:normal}
.app-nd{background:var(--fond2);color:var(--txt3);box-shadow:inset 0 0 0 1px var(--bord)}
.app-codes{margin-top:4px}
.app-note{white-space:pre-wrap;font-size:13px;background:var(--fond2);border-radius:6px;padding:8px 10px;margin-top:8px}
.app-maj{margin-top:8px}
.app-hist .list-item{cursor:default;align-items:flex-start;flex-wrap:wrap;row-gap:4px}
.app-tab{padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid var(--bord2)}
/* Présence sur les fiches */
#presence-z{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}
#presence-z:empty{display:none}
@media (max-width:760px){.pres-vu{z-index:35}}   /* sous le menu latéral ouvert sur téléphone */
@media (max-width:600px){.toast{bottom:calc(env(safe-area-inset-bottom,0px) + 96px)}}
#presence-z:not(:has(.pres-appel)){margin:0}
.pres-appel{flex:1 1 100%;display:flex;gap:14px;align-items:center;padding:16px 20px;font-size:16px;line-height:1.4;border-radius:12px;background:var(--orange-f);color:color-mix(in srgb,var(--orange) 85%,var(--txt));border:2px solid color-mix(in srgb,var(--orange) 55%,transparent);font-weight:500}
.pres-appel svg{width:26px;height:26px;fill:currentColor;flex:none}
.pres-appel b{font-weight:800}
.pres-vu{position:fixed;right:20px;bottom:calc(env(safe-area-inset-bottom,0px) + 20px);z-index:45;display:inline-flex;gap:12px;align-items:center;max-width:calc(100% - 40px);padding:10px 22px 10px 10px;border-radius:999px;background:var(--accent-f);border:2px solid var(--accent);box-shadow:var(--ombre-f);font-size:16px;color:var(--txt);animation:pres-entree .3s ease both}
@keyframes pres-entree{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.pres-vu{animation:none}}
.pres-vu b{color:var(--accent-t);font-weight:800}
.pres-avs{display:inline-flex}
.pres-avs .av{width:38px;height:38px;font-size:14px;border:2px solid var(--accent-f)}
.pres-avs .av+.av{margin-left:-10px}
/* Réglages : comptes et rôles (administrateurs) */
.reg-info{margin:0 0 12px}
.cpt-intro{margin-top:-6px}
.cpt td{vertical-align:middle}
.cpt-act{text-align:right;white-space:nowrap}
.cpt-off td{color:var(--txt3)}
.cpt-adm{background:var(--accent-f);color:var(--accent-t)}
.cpt-nv{margin-top:10px}
.cpt-chk{display:grid;gap:8px}
.cpt-chk label{display:flex;gap:8px;align-items:center;text-transform:none;letter-spacing:0;font-weight:500;color:var(--txt);cursor:pointer}
.cpt-mdp{font-size:20px;letter-spacing:.08em;text-align:center;user-select:all}
.dash .dash-kpis .kpi .d{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--bord);background:var(--carte);padding:7px 12px;border-radius:6px;cursor:pointer;font-weight:500;white-space:nowrap}
.btn:hover{border-color:var(--txt3)}
.btn.p{background:var(--accent);border-color:var(--accent);color:var(--blanc)}
.btn.p:hover{background:var(--accent-d);border-color:var(--accent-d)}
.btn.s{padding:4px 9px;font-size:12.5px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.kpi .v{font-size:28px;font-weight:700;margin-top:4px}
.kpi .l{color:var(--txt3);font-size:12.5px}
.kpi .d{font-size:12px;color:var(--txt3);margin-top:2px}
.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:11.5px;font-weight:600;white-space:nowrap}
/* Parcours d'un Remote : 8 étapes (succès / échec à l'étape 6) */
.st-nouvelle{background:var(--bleu-f);color:var(--bleu)}
/* nouvelle demande déjà touchée par un technicien (27/10/2026) */
.st-prise{background:var(--accent-f);color:var(--accent-t)}
.st-rdv{background:var(--orange-f);color:color-mix(in srgb,var(--orange) 85%,var(--txt))}
.st-complete{background:var(--cyan-f);color:color-mix(in srgb,var(--cyan) 85%,var(--txt))}
.st-payee{background:var(--violet-f);color:var(--violet)}
.st-encours{background:var(--bleu);color:var(--carte)}
.st-encours::before,.st-rdv::before{content:"";width:6px;height:6px;border-radius:999px;background:currentColor;flex:none}
.st-reussie{background:var(--vert-f);color:color-mix(in srgb,var(--vert) 80%,var(--txt))}
.st-echec{background:var(--rouge-f);color:color-mix(in srgb,var(--rouge) 80%,var(--txt))}
.st-facturee{background:var(--violet);color:var(--carte)}
.st-cloturee{background:var(--fond2);color:var(--txt3);box-shadow:inset 0 0 0 1px var(--bord)}
.step.cur.echec{border-top-style:dashed;border-color:var(--rouge);background:var(--rouge-f);color:color-mix(in srgb,var(--rouge) 80%,var(--txt));border-radius:0 0 6px 6px}
.src{display:inline-block;white-space:nowrap;flex:none;line-height:1.5;font-size:10.5px;font-weight:700;letter-spacing:.04em;padding:1px 6px;border-radius:6px;border:1px solid var(--bord);color:var(--txt2)}
.src.autel{border-color:color-mix(in srgb,var(--accent) 50%,transparent);color:var(--accent-t)}
.src.secretariat{border-color:color-mix(in srgb,var(--bleu) 60%,transparent);color:color-mix(in srgb,var(--bleu) 85%,var(--txt))}
.tk-tbl td>.src+.cp-val{display:flex;width:fit-content}
@media (max-width:760px){.inp{min-height:44px}}
.muted{color:var(--txt3)}
.small{font-size:12.5px}
.mono{font-variant-numeric:tabular-nums;letter-spacing:.02em;font-size:12.5px}
.tblw{position:relative;overflow-x:auto;border:1px solid var(--bord);border-radius:var(--r);background:var(--carte)}
table{width:100%;border-collapse:collapse}
th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--txt3);font-weight:600;padding:10px 12px;border-bottom:1px solid var(--bord);background:var(--fond2);white-space:nowrap}
td{padding:10px 12px;border-bottom:1px solid var(--bord2);vertical-align:top}
tr:last-child td{border-bottom:0}
tr.clic{cursor:pointer}
tr.clic:hover td{background:var(--fond2)}
.tabs{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:14px}
.tab{padding:6px 12px;border-radius:6px;cursor:pointer;border:1px solid transparent;color:var(--txt2);font-weight:500;display:inline-flex;align-items:center;gap:6px}
.tab svg{width:15px;height:15px;flex:none}
.tab:hover{background:var(--carte);border-color:var(--bord)}
.tab.on{background:var(--carte);border-color:var(--accent);color:var(--accent-t)}
@media (max-width:560px){.tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-inline:-16px;padding-inline:16px;padding-block:3px}.tabs::-webkit-scrollbar{display:none}.tab{flex:none}}
.tab .n{color:var(--txt3);font-weight:400;margin-left:3px}
.bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.inp,select.inp,textarea.inp{border:1px solid var(--bord);background:var(--carte);border-radius:6px;padding:7px 10px;width:100%}
.inp:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 20%,transparent)}
.fld{margin-bottom:12px}
.rp-motifs{border:0;padding:0;min-width:0;display:flex;flex-wrap:wrap;gap:8px}
.rp-motifs legend{display:block;width:100%;padding:0;font-size:11.5px;font-weight:600;color:var(--txt3);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}
.fld .rp-opt{display:inline-flex;align-items:center;gap:6px;margin:0;padding:7px 12px;border:1px solid var(--bord);border-radius:999px;background:var(--carte);color:var(--txt);font-size:13.5px;font-weight:500;text-transform:none;letter-spacing:0;cursor:pointer;min-height:44px;transition:border-color .15s,background .15s}
.fld .rp-opt:hover{border-color:var(--txt3)}
.fld .rp-opt:has(input:checked){border-color:var(--accent);background:var(--accent-f);color:var(--accent-t);font-weight:600}
.fld .rp-opt:has(input:focus-visible){box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}
.rp-opt input{accent-color:var(--accent);margin:0}
.fld label{display:block;font-size:11.5px;font-weight:600;color:var(--txt3);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}
.row{display:flex;gap:10px}
.row>*{flex:1;min-width:0}
.alert{border-radius:6px;padding:9px 12px;font-size:13px;margin-bottom:10px;background:var(--orange-f);color:color-mix(in srgb,var(--orange) 75%,var(--txt));border:1px solid color-mix(in srgb,var(--orange) 25%,transparent)}
.alert.info{background:var(--bleu-f);color:var(--bleu);border-color:color-mix(in srgb,var(--bleu) 25%,transparent)}
.kv{display:grid;grid-template-columns:130px 1fr;gap:6px 12px;font-size:13.5px}
.kv dt{color:var(--txt3)}
.kv dd{margin:0;word-break:break-word}
.hd{display:flex;align-items:flex-start;gap:12px;margin-bottom:18px;flex-wrap:wrap}
.hd .sp{flex:1}
.list-item{display:flex;gap:10px;align-items:center;padding:9px 0;border-bottom:1px solid var(--bord2);cursor:pointer}
.list-item:last-child{border-bottom:0}
.list-item[data-act]{min-height:44px}
.list-item:hover .t{color:var(--accent)}
.empty{color:var(--txt3);padding:18px 0;text-align:center}
.hbar{display:flex;align-items:center;gap:10px;margin:7px 0;font-size:13px}
.hbar .lb{width:84px;flex:none;color:var(--txt2)}
.hbar .tr{flex:1;height:10px;background:var(--bord2);border-radius:5px;overflow:hidden}
.hbar .fi{height:100%;background:var(--accent);border-radius:5px}
.hbar .vl{width:70px;text-align:right;font-variant-numeric:tabular-nums}

/* Étapes de statut */
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));margin:0 0 18px}
@media (max-width:560px){.steps{grid-template-columns:repeat(2,1fr)}}
@media (min-width:561px) and (max-width:760px){.steps{grid-template-columns:repeat(3,1fr)}}
.step{padding:8px 10px;border-top:3px solid var(--bord);color:var(--txt3);font-size:12.5px;font-weight:500}
.step.done{border-color:var(--accent);color:var(--txt)}
.step.cur{border-color:var(--accent);color:var(--accent-t);font-weight:700}

/* Agenda */
.ag-wrap{display:flex;gap:16px;align-items:flex-start}
.ag{flex:1;min-width:0;overflow-x:auto;background:var(--carte);border:1px solid var(--bord);border-radius:var(--r)}
.ag-grid{display:grid;grid-template-columns:52px repeat(6,minmax(130px,1fr));min-width:830px}
.ag-h{padding:8px;border-bottom:1px solid var(--bord);border-left:1px solid var(--bord2);font-size:12.5px;font-weight:600;text-align:center;background:var(--fond2)}
.ag-h.today{color:var(--accent)}
.ag-times{position:relative}
.ag-times div{height:var(--px,48px);font-size:11px;color:var(--txt3);text-align:right;padding-right:6px;transform:translateY(-7px)}
.ag-day{position:relative;border-left:1px solid var(--bord2);background:repeating-linear-gradient(to bottom,transparent 0 calc(var(--px,48px) - 1px),var(--bord2) calc(var(--px,48px) - 1px) var(--px,48px))}
.ag-day.today{background-color:color-mix(in srgb,var(--accent) 4%,transparent)}
.ag-day.over{background-color:color-mix(in srgb,var(--accent) 12%,transparent)}
.ev{position:absolute;left:3px;right:3px;border-radius:6px;padding:4px 6px;font-size:11.5px;line-height:1.3;cursor:pointer;overflow:hidden;border-left:3px solid;box-shadow:0 1px 2px color-mix(in srgb,var(--txt) 8%,transparent)}
.ev b{display:block;font-size:12px}
/* Code couleur des RDV : à venir (accent) / en cours d'appel (orange, point qui pulse) / traité (vert) ; divers (violet) */
.ev.et-avenir,.ag-mev.et-avenir{border-color:var(--accent);background:var(--accent-f);color:var(--accent-t)}
.ev.et-encours,.ag-mev.et-encours{border-color:var(--orange);background:var(--orange-f);color:color-mix(in srgb,var(--orange) 80%,var(--txt));box-shadow:0 0 0 2px color-mix(in srgb,var(--orange) 35%,transparent)}
.ev.et-traite,.ag-mev.et-traite{border-color:var(--vert);background:var(--vert-f);color:color-mix(in srgb,var(--vert) 80%,var(--txt))}
.ev-pt{display:inline-block;width:7px;height:7px;border-radius:999px;background:var(--orange);margin-right:4px;vertical-align:middle;animation:tk-pulse 1.5s ease-in-out infinite}
.ev.ev-div,.ag-mev.ev-div{border-color:var(--violet);background:var(--violet-f);color:color-mix(in srgb,var(--violet) 80%,var(--txt));text-align:left;font-family:inherit}
.ev.ev-div.t-conge,.ag-mev.ev-div.t-conge{border-color:var(--txt3);background:var(--fond2);color:var(--txt2)}
.ev.ev-div.g,.ag-mev.ev-div.g{border-left-style:dashed;border-color:var(--txt3);background:var(--fond2);color:var(--txt2)}
.ev-type{display:block;font-size:10.5px;opacity:.85}
.ev-notes{display:block;font-size:10.5px;opacity:.8;white-space:pre-line;overflow:hidden}
.ev:focus-visible,.ag-mev:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}
.ev{transition:transform .2s,box-shadow .2s}
.ev:hover{transform:translateY(-1px)}
.ag-mev{width:100%;border:0;border-left:3px solid var(--txt3);text-align:left}
.ag-leg{display:flex;gap:8px 14px;flex-wrap:wrap;align-items:center;margin:-4px 0 12px;font-size:12px}
.ag-leg-i{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:999px;border:0;font-weight:600}
.ag-leg-i::before{content:"";width:8px;height:8px;border-radius:999px;background:currentColor}
.ag-leg-i.et-encours::before{background:var(--orange);animation:tk-pulse 1.5s ease-in-out infinite}
.ag-leg-i.t-conge{background:var(--fond2);color:var(--txt2)}
.ag-leg-i.g{background:var(--fond2);color:var(--txt2);outline:1px dashed var(--txt3);outline-offset:-1px}
.ag-leg-i.et-avenir{border-color:var(--accent);background:var(--accent-f);color:var(--accent-t)}
.ag-leg-i.et-encours{border-color:var(--orange);background:var(--orange-f);color:color-mix(in srgb,var(--orange) 80%,var(--txt))}
.ag-leg-i.et-traite{border-color:var(--vert);background:var(--vert-f);color:color-mix(in srgb,var(--vert) 80%,var(--txt))}
.ag-leg-i.ev-div{border-color:var(--violet);background:var(--violet-f);color:color-mix(in srgb,var(--violet) 80%,var(--txt))}
.ev.st-rdv{border-color:var(--orange)}
.ev.st-complete{border-color:var(--cyan)}
.ev.st-payee{border-color:var(--violet)}
.ev.st-encours{border-color:var(--bleu);background:var(--bleu-f);color:var(--bleu)}
.ev.st-echec{border-color:var(--rouge);background:var(--rouge-f);color:color-mix(in srgb,var(--rouge) 80%,var(--txt))}
.ev.st-reussie{border-color:var(--vert);background:var(--vert-f);color:color-mix(in srgb,var(--vert) 80%,var(--txt))}
.ev.st-facturee{border-color:var(--violet);background:var(--violet-f);color:var(--violet)}
.ev.st-cloturee{border:0;border-left:3px solid var(--txt3);box-shadow:none;background:var(--fond2);color:var(--txt3)}
.now{position:absolute;left:0;right:0;height:2px;background:var(--accent);z-index:2}
.aplan{width:260px;flex:none}
.chip{background:var(--carte);border:1px dashed var(--txt3);border-radius:6px;padding:8px 10px;margin-bottom:8px;cursor:grab;font-size:12.5px}
.chip:hover{border-color:var(--accent)}

/* Modale — IMPORTANT : réservée aux conteneurs <div class="modal-bg" ... hidden>
   ouverts/fermés via l'attribut [hidden] (voir public/js/salons.js, gestionnaire
   générique [data-modal-open]/[data-modal-close]). Ne JAMAIS poser ces classes
   sur un <dialog> natif : le display:grid ci-dessous est plus prioritaire que le
   display:none par défaut d'un <dialog> non ouvert et le rendrait visible en
   permanence (bug constaté sur l'agenda Remote, voir RemoteAgendaModaleTest). */
.modal-bg{position:fixed;inset:0;background:rgba(10,12,16,.5);display:grid;place-items:center;z-index:50;padding:16px}
.modal{position:relative;background:var(--carte);border-radius:10px;box-shadow:var(--ombre-f);width:min(640px,100%);max-height:90vh;overflow:auto;padding:20px}
.modal-x{flex:none;width:28px;height:28px;padding:0;line-height:1;border:1px solid var(--bord);border-radius:6px;background:var(--carte);color:var(--txt3);cursor:pointer;font-size:14px;display:inline-flex;align-items:center;justify-content:center}
.modal-x:hover{color:var(--txt);background:var(--fond2);border-color:var(--accent)}
.mailbox{max-height:52vh;overflow:auto;white-space:pre-wrap;background:var(--fond2);border:1px solid var(--bord);border-radius:6px;padding:12px;font-size:13px}
.toast{position:fixed;bottom:calc(env(safe-area-inset-bottom,0px) + 20px);left:50%;transform:translateX(-50%);background:var(--nav);color:var(--blanc);padding:10px 16px;border-radius:6px;z-index:60;box-shadow:var(--ombre-f)}

/* Connexion */
.login{min-height:100vh;display:grid;place-items:center;background:var(--nav);padding:16px}
.login .box{background:var(--carte);border-radius:12px;padding:32px;width:min(400px,100%);box-shadow:var(--ombre-f)}
.login .brand{padding:0 0 12px;color:var(--txt)}
.login .brand small{color:var(--txt3)}
/* Mot de passe : œil pour afficher / masquer la saisie (connexion). */
.mdp-oeil{position:relative}
.mdp-oeil input{display:block;width:100%;padding-right:46px!important}
.mdp-oeil input::-ms-reveal,.mdp-oeil input::-ms-clear{display:none}
.mdp-oeil button{position:absolute;right:0;top:50%;transform:translateY(-50%);width:44px;height:44px;display:grid;place-items:center;border:0;background:none;color:var(--txt3);cursor:pointer;border-radius:6px;transition:color .15s,box-shadow .15s}
.mdp-oeil button:hover{color:var(--accent)}
.mdp-oeil button:focus-visible{outline:none;color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}
.mdp-oeil button svg{width:18px;height:18px}
.mdp-oeil .oeil-ferme,.mdp-oeil.visible .oeil-ouvert{display:none}
.mdp-oeil.visible .oeil-ferme{display:block}

@media (max-width:1100px){.g4{grid-template-columns:1fr 1fr}.g32,.g2{grid-template-columns:1fr}.aplan{display:none}}
@media (max-width:760px){
  .side{position:fixed;z-index:40;left:-240px;transition:left .2s}
  .side.open{left:0}
  .burger{display:inline-flex}
  .top{padding:10px 16px}
  .content{padding:16px}
  .user span{display:none}
  .g4{grid-template-columns:1fr 1fr}
  .kv{grid-template-columns:110px 1fr}
}

/* Ajouts version en ligne */
.err{color:var(--danger);font-size:13px;margin:-4px 0 10px;min-height:1em}
.chg{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--nav-txt2)}
.loading{min-height:100vh;display:grid;place-items:center;color:var(--txt3)}
.btn.danger{color:var(--danger)}
.btn.danger:hover{border-color:var(--danger);background:var(--rouge-f)}
.pj{display:flex;flex-wrap:wrap;gap:6px}
.pj a{font-size:12px}
/* Module Tickets (pont intranet) */
.pastille{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:999px;font-size:11.5px;font-weight:600;white-space:nowrap;background:color-mix(in srgb,var(--c,var(--txt3)) 32%,var(--carte));color:var(--txt);border:1px solid color-mix(in srgb,var(--c,var(--txt3)) 70%,var(--carte))}
.pastille::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--c,var(--txt3))}
.tk-bandeau{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:var(--orange-f);color:var(--orange);border:1px solid color-mix(in srgb,var(--orange) 35%,transparent);border-radius:var(--r);padding:10px 14px;margin-bottom:16px;font-weight:600}
.tk-bandeau a{text-decoration:underline}
.chrono{font-variant-numeric:tabular-nums;font-weight:700}
.tk-hist{display:flex;flex-direction:column;gap:8px}
.tk-h{display:flex;gap:10px;align-items:flex-start;font-size:13px}
.tk-h .q{color:var(--txt3);font-size:11.5px;white-space:nowrap;min-width:92px}
.tk-h .com{background:var(--fond2);border:1px solid var(--bord);border-radius:6px;padding:8px 10px;white-space:pre-wrap;overflow-wrap:anywhere;flex:1;min-width:0}
.tk-h .com b{display:block;font-size:12px;margin-bottom:2px}
.tk-h .etat{flex:1;min-width:0;color:var(--txt2)}
/* Pastille trop longue (priorité reprise contenant un texte entier) : réduite avec « … », dépliée au survol ou au clavier (27/10/2026). */
.tk-h .etat .pastille{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;cursor:default}
.tk-h .etat .pastille::before{display:inline-block;margin-right:5px;vertical-align:middle}
.tk-h .etat .pastille:hover,.tk-h .etat .pastille:focus-visible{white-space:normal;overflow-wrap:anywhere;border-radius:10px}
.tk-chips{display:flex;flex-wrap:wrap;gap:6px}
.tk-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--bord);border-radius:999px;padding:3px 4px 3px 10px;font-size:12.5px;background:var(--fond2)}
.tk-chip button{border:0;background:none;cursor:pointer;color:var(--txt3);padding:0 4px}
.tk-res{border:1px solid var(--bord);border-radius:6px;margin-top:6px;max-height:220px;overflow:auto}
.tk-res div{padding:7px 10px;border-bottom:1px solid var(--bord2);cursor:pointer;font-size:13px}
.tk-res div:hover{background:var(--fond2)}
.tk-titre{overflow-wrap:anywhere}
/* Panneau de traitement du ticket (haut de fiche) */
.tk-trait{background:var(--carte);border:1px solid var(--bord);border-left:5px solid var(--accent);border-radius:var(--r);padding:18px 20px;margin-bottom:18px;display:grid;gap:16px}
.tk-trait.appel{border-left-color:var(--vert);background:radial-gradient(circle at 0 0,var(--vert-f),transparent 55%),var(--carte)}
.tk-trait .l{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--txt3);font-weight:600;margin-bottom:4px}
.tk-tr-grille{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.3fr) minmax(220px,1fr);gap:20px;align-items:start}
.tk-tr-cli .nom{font-size:20px;font-weight:700;line-height:1.2;overflow-wrap:anywhere}

.tk-tr-num{font-size:20px;font-weight:600;letter-spacing:.02em;padding:9px 12px}
/* Panneau d'appel (ticket + Remote, 27/10/2026) : tout rectangulaire (8 px comme les champs et le bouton),
   même écart de 12 px entre le numéro, les puces de numéros et le bouton « Appeler ». */
.tk-tr-nums{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.tk-tr-nums .tk-chip{cursor:pointer;padding:4px 12px;color:var(--txt);min-height:44px;max-width:100%;border-radius:8px}
.tk-tr-tel+.tk-tr-act{margin-top:12px}
.tk-tr-nums .tk-chip{flex-wrap:wrap;white-space:normal;text-align:left}.tk-tr-nums .tk-chip .muted{overflow-wrap:anywhere}
.tk-tr-nums .tk-chip.on{border-color:var(--accent);background:var(--accent-f)}
.tk-tr-nums .tk-chip.prio{flex-basis:100%;border-width:2px;border-color:var(--accent);padding:6px 14px}
.tk-tr-nums .tk-chip.prio .mono{font-size:17px;font-weight:800}
.tk-tr-nums .tk-chip.prio .prio-l{flex-basis:100%;font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--accent-t)}
.tk-tr-nums .tk-chip:disabled{cursor:default;opacity:.6}
.tk-tr-act{display:flex;flex-direction:column;gap:8px;align-items:stretch}
.tk-tr-gros{font-size:17px;font-weight:700;padding:14px 18px;justify-content:center}
.tk-tr-fin{background:var(--danger);border-color:var(--danger);color:var(--blanc)}.tk-tr-fin:hover{background:var(--danger-d);border-color:var(--danger-d)}
.btn.p[data-act=tkAppelClient],.btn.p[data-act=rmAppeler]{background:var(--appel);border-color:var(--appel)}
.btn.p[data-act=tkAppelClient]:not(:disabled):hover,.btn.p[data-act=rmAppeler]:not(:disabled):hover{background:var(--appel-d);border-color:var(--appel-d)}
.tk-tr-chrono{display:flex;flex-direction:column;align-items:center}
.tk-tr-chrono .chrono{font-size:40px;line-height:1.1;color:var(--vert)}
.tk-tr-liens{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;font-size:12.5px;color:var(--txt3)}
.tk-tr-liens a{text-decoration:underline;display:inline-flex;align-items:center;min-height:44px;padding:0 4px}
.tk-tr-com{border-top:1px solid var(--bord2);padding-top:14px}
.tk-tr-com-hd{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:6px}
.tk-tr-com-hd .l{margin:0;flex:1}
.tk-tr-com-hd select{width:auto;max-width:100%}
.tk-tr-com textarea:disabled{background:var(--fond2);cursor:not-allowed}
.tk-tr-save{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:6px}
.btn-remote{font-weight:700;border-color:color-mix(in srgb,var(--accent) 45%,var(--bord));color:var(--accent-t)}
.btn-remote:hover{border-color:var(--accent);background:var(--accent-f);transform:translateY(-1px)}
.tk-trait .btn:focus-visible,.tk-tr-nums .tk-chip:focus-visible,.tk-tr-liens a:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}
.tk-tr-gros,.tk-tr-nums .tk-chip{transition:transform .2s,background-color .2s,border-color .2s}
.tk-tr-gros:not(:disabled):hover,.tk-tr-nums .tk-chip:not(:disabled):hover{transform:translateY(-2px)}
.tk-tr-chrono .l::before{content:"";display:inline-block;width:8px;height:8px;border-radius:999px;background:var(--vert);margin-right:6px;vertical-align:middle;animation:tk-pulse 1.5s ease-in-out infinite}
@keyframes tk-pulse{50%{opacity:.35;transform:scale(.8)}}
@media (max-width:1000px){.tk-tr-grille{grid-template-columns:1fr}}
/* Liste des tickets : lignes en cartes séparées, bande de couleur de priorité, bandeaux de groupe colorés, filigrane */
.tk-liste{position:relative;isolation:isolate}
.tk-liste::before{content:"";position:fixed;inset:0 0 0 232px;z-index:-1;pointer-events:none;background:url(../img/logo.png) center 55%/min(640px,60vw) auto no-repeat;opacity:.06;filter:grayscale(1)}
.tk-sec{margin:26px 0 4px;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
.tk-sec:first-child{margin-top:4px}
.tk-sec .muted{text-transform:none;letter-spacing:0;font-weight:400}
.tk-tblw{border:0;background:transparent;border-radius:0;padding:4px 2px}
.tk-tbl{border-collapse:separate;border-spacing:0 8px;margin-top:-4px}
.tk-tbl th{background:transparent;border:0;padding:6px 14px 0}
.tk-tbl tr.tk-row td{background:var(--carte);border-top:1px solid var(--bord);border-bottom:1px solid var(--bord);padding:12px 14px;vertical-align:middle;transition:background-color .2s,border-color .2s,box-shadow .2s}
.tk-tbl tr.tk-row td:first-child{border-left:5px solid var(--p,var(--txt3));border-radius:10px 0 0 10px}
.tk-tbl tr.tk-row td:last-child{border-right:1px solid var(--bord);border-radius:0 10px 10px 0}
.tk-tbl tr.tk-row{transition:transform .2s}
.tk-tbl tr.tk-row:hover{transform:translateY(-2px)}
.tk-tbl tr.tk-row:hover td{background:color-mix(in srgb,var(--p,var(--txt3)) 7%,var(--carte));border-color:color-mix(in srgb,var(--p,var(--txt3)) 35%,var(--bord));box-shadow:0 6px 16px -10px color-mix(in srgb,var(--p,var(--txt3)) 60%,transparent)}
.tk-tbl tr.tk-row:hover td:first-child{border-left-color:var(--p,var(--txt3))}
.tk-ref{font-weight:600;color:var(--txt2);white-space:nowrap}
.tk-neutre{--p:var(--txt3)}
.tk-suj{display:inline-block;margin-top:4px;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.03em;white-space:nowrap;color:color-mix(in srgb,var(--s) 78%,var(--txt));background:color-mix(in srgb,var(--s) 12%,var(--carte));border:1px solid color-mix(in srgb,var(--s) 30%,transparent)}
.tk-tbl tr.tk-grp td{padding:18px 0 0;background:transparent;border:0}
.tk-tbl tr.tk-grp:first-child td{padding-top:4px}
.tk-grp-hd{display:flex;align-items:center;gap:12px;padding:10px 16px;border-radius:10px;border-left:5px solid var(--p);background:color-mix(in srgb,var(--p) 13%,var(--carte));color:var(--txt)}
.tk-grp-hd .nom{font-weight:800;font-size:13.5px;letter-spacing:.05em;text-transform:uppercase;flex:1}
.tk-grp-hd .nom::before{content:"";display:inline-block;width:9px;height:9px;border-radius:999px;background:var(--p);margin-right:10px;vertical-align:1px}
.tk-grp-hd .nb{font-size:12px;font-weight:700;color:color-mix(in srgb,var(--p) 78%,var(--txt));background:var(--carte);border-radius:999px;padding:2px 10px}
.tk-lien{display:inline-flex;align-items:center;min-height:44px;color:inherit}
.tk-tbl tr.tk-row:focus-within td{border-top-color:var(--accent);border-bottom-color:var(--accent)}
.tk-tbl tr.tk-row:focus-within td:last-child{border-right-color:var(--accent)}
@media (max-width:760px){.tk-grp-hd{position:sticky;left:0;width:calc(100vw - 36px)}.tk-liste::before{left:0}.tk-tbl{min-width:820px}.tk-tbl .tk-titre{min-width:200px}.tk-tbl .empty{text-align:left;padding-left:14px}}/* Bouton Agenda de la fiche Remote + mode « choisir le créneau » */
.f-ag-fld{flex:none!important;display:flex;align-items:flex-end}
.btn-agenda{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;width:72px;height:56px;margin-bottom:-2px;border:0;border-radius:6px;background:var(--accent);color:var(--blanc);cursor:pointer;font-weight:700;font-size:11px;letter-spacing:.04em;text-transform:uppercase;box-shadow:0 6px 16px -10px color-mix(in srgb,var(--accent) 45%,transparent);transition:transform .2s,background-color .2s,box-shadow .2s}
.btn-agenda svg{width:28px;height:28px;fill:currentColor}
.btn-agenda:hover{transform:translateY(-2px);background:var(--accent-d);box-shadow:0 10px 22px -12px color-mix(in srgb,var(--accent) 55%,transparent)}
.f-ag-fld .btn-agenda:focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:0 0 0 5px color-mix(in srgb,var(--accent) 25%,transparent)}
.ag-planif{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:14px;padding:12px 16px;border-radius:12px;border:1px solid color-mix(in srgb,var(--accent) 40%,var(--bord));background:radial-gradient(circle at 0 0,color-mix(in srgb,var(--accent) 14%,transparent),transparent 60%),var(--carte)}
.ag-planif svg{width:30px;height:30px;fill:var(--accent);flex:none}
.ag-planif>div{flex:1;min-width:0}
.ag.pick .ag-day{cursor:crosshair}
.ag-fantome{position:absolute;left:3px;right:3px;z-index:3;pointer-events:none;border:2px dashed var(--accent);border-radius:6px;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-t);font-weight:700;font-size:12px;padding:2px 6px}
/* Alerte RDV : bannière forte, fixe, jusqu'à prise en charge */
#alerte-rdv{position:fixed;top:calc(env(safe-area-inset-top,0px) + 12px);left:50%;transform:translateX(-50%);z-index:70;width:min(820px,calc(100% - 32px));max-height:70vh;overflow:auto;animation:ar-entree .25s ease both}
#alerte-rdv .ar-in{display:grid;gap:10px}
/* rappel déplaçable : on l'attrape n'importe où (sauf boutons) ; poignée en haut de chaque carte */
#alerte-rdv{cursor:grab}
#alerte-rdv.libre{animation:none}
#alerte-rdv.deplace{cursor:grabbing;user-select:none}
#alerte-rdv.deplace .ar-rdv{animation:none}
.ar-rdv{position:relative}
.ar-grip{position:absolute;top:8px;left:50%;transform:translateX(-50%);width:36px;height:4px;border-radius:2px;background:color-mix(in srgb,var(--blanc) 45%,transparent);touch-action:none}
.ar-grip::before{content:"";position:absolute;left:50%;top:50%;width:88px;height:44px;transform:translate(-50%,-50%)}
#alerte-rdv .ar-rdv{padding:22px 18px 16px}
.ar-rdv{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:16px 18px;border-radius:14px;color:var(--blanc);background:radial-gradient(circle at 12% 0,color-mix(in srgb,var(--blanc) 10%,transparent),transparent 35%),linear-gradient(135deg,var(--accent),var(--accent-d));box-shadow:var(--ombre-f);animation:ar-halo 1.6s ease-out infinite}
.ar-cloche{width:52px;height:52px;flex:none;border-radius:999px;display:grid;place-items:center;background:color-mix(in srgb,var(--blanc) 18%,transparent)}
.ar-cloche svg{width:30px;height:30px;fill:var(--blanc);animation:ar-cloche 1.2s ease-in-out infinite;transform-origin:50% 10%}
.ar-txt{flex:1;min-width:200px}
.ar-h{font-size:22px;font-weight:800;letter-spacing:-.01em;line-height:1.15}
.ar-h span{font-size:13px;font-weight:600;margin-left:6px}
.ar-d{font-size:14.5px;font-weight:600;margin-top:2px;overflow-wrap:anywhere}
.ar-s{font-size:12.5px;margin-top:2px}
.ar-err{font-size:12.5px;margin-top:6px;font-weight:600;color:var(--danger)}
.ar-act{display:flex;flex-direction:column;align-items:stretch;gap:6px}
.ar-prendre{background:var(--blanc);color:var(--accent-d);border-color:var(--blanc);font-weight:800;font-size:15px;min-height:44px;padding:10px 18px;justify-content:center}
.ar-prendre:hover{background:var(--blanc);border-color:var(--blanc);transform:translateY(-2px)}
.ar-rdv .ar-prendre:focus-visible{border-color:var(--blanc);box-shadow:0 0 0 3px color-mix(in srgb,var(--blanc) 55%,transparent)}
.ar-voir{color:var(--blanc);text-decoration:underline;text-align:center;font-size:13px;min-height:44px;display:flex;align-items:center;justify-content:center}
.ar-rdv .ar-voir:focus-visible{outline:2px solid var(--blanc);outline-offset:2px;box-shadow:none;border-radius:6px}
@keyframes ar-entree{from{opacity:0;transform:translate(-50%,-16px)}to{opacity:1;transform:translate(-50%,0)}}
@keyframes ar-halo{0%{box-shadow:var(--ombre-f),0 0 0 0 color-mix(in srgb,var(--accent) 55%,transparent)}70%{box-shadow:var(--ombre-f),0 0 0 14px color-mix(in srgb,var(--accent) 0%,transparent)}100%{box-shadow:var(--ombre-f),0 0 0 0 color-mix(in srgb,var(--accent) 0%,transparent)}}
@keyframes ar-cloche{0%,100%{transform:rotate(0)}15%{transform:rotate(14deg)}30%{transform:rotate(-12deg)}45%{transform:rotate(8deg)}60%{transform:rotate(-4deg)}75%{transform:rotate(0)}}
@media (max-width:560px){.ar-act{width:100%}.ar-h{font-size:19px}}/* Référentiel (clients, appareils, distributeurs) */
.ech-ok{background:var(--vert-f);color:color-mix(in srgb,var(--vert) 80%,var(--txt))}
.ech-ko{background:var(--rouge-f);color:color-mix(in srgb,var(--rouge) 80%,var(--txt))}
.ech-txt-ko{color:color-mix(in srgb,var(--rouge) 80%,var(--txt));font-weight:700}
.lien-ref{color:var(--accent-t);font-weight:600;text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--accent) 30%,transparent);transition:border-color .2s}
.lien-ref:hover{border-bottom-color:var(--accent)}
@media (pointer:coarse){.lien-ref{display:inline-flex;align-items:center;min-height:44px}}
.tk-tbl tr.tk-row:not(.clic):hover{transform:none}
.tk-tbl tr.tk-row:not(.clic):hover td{box-shadow:none}
.badge-code{background:var(--fond2);border:1px solid var(--bord);color:var(--txt3)}
.hd>.badge{align-self:center}/* Temps réel dans la liste des tickets : technicien en ligne (appel en cours), nouveau ticket */
.tk-live{display:inline-flex;align-items:center;gap:6px;margin:0 0 4px;padding:2px 9px;border-radius:999px;font-family:Inter,"Segoe UI",system-ui,sans-serif;font-size:11px;font-weight:700;white-space:nowrap;color:color-mix(in srgb,var(--vert) 80%,var(--txt));background:var(--vert-f);border:1px solid color-mix(in srgb,var(--vert) 35%,transparent)}
.tk-live .pt{width:8px;height:8px;border-radius:999px;background:var(--vert);animation:tk-pulse 1.5s ease-in-out infinite}
.tk-tbl tr.tk-enligne td{background:color-mix(in srgb,var(--vert) 6%,var(--carte))}
/* Appareil déclaré volé : ligne rouge (27/10/2026). */
.tk-tbl tr.tk-row.app-vole{--p:var(--danger)}
.tk-tbl tr.tk-row.app-vole td{background:color-mix(in srgb,var(--danger) 12%,var(--carte));border-color:color-mix(in srgb,var(--danger) 45%,var(--bord))}
.tk-tbl tr.tk-row.app-vole:hover td{background:color-mix(in srgb,var(--danger) 18%,var(--carte))}
.app-menu-liste .app-menu-vole{color:var(--danger);font-weight:600}
.tk-new{display:inline-block;margin:0 0 4px;padding:2px 9px;border-radius:999px;font-family:Inter,"Segoe UI",system-ui,sans-serif;font-size:11px;font-weight:700;color:var(--blanc);background:var(--accent)}
.tk-tbl tr.tk-nouveau td{animation:tk-arrivee 2.4s ease-out 1}
.tk-ref .tk-live,.tk-ref .tk-new{display:flex;width:max-content}
@keyframes tk-arrivee{from{background:color-mix(in srgb,var(--accent) 16%,var(--carte))}}
/* Bouton « copier » (téléphones, e-mails, S/N, n° de commande, VIN, références) */
.cp-val{display:inline-flex;align-items:center;gap:2px;max-width:100%;overflow-wrap:anywhere;vertical-align:middle}
/* 32 px à la souris (zone compacte à côté du texte), 44 px au tactile */
.cp{display:inline-flex;align-items:center;justify-content:center;flex:none;width:32px;height:32px;padding:0;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--txt3);cursor:pointer;transition:color .2s,background-color .2s,transform .2s}
.cp svg{width:15px;height:15px;fill:currentColor}
.cp:hover{color:var(--accent-t);background:var(--accent-f);transform:translateY(-1px)}
.tk-num-l{display:flex;gap:6px;align-items:center}
.tk-num-l .inp{flex:1;min-width:0}
.cp:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}
.cp.ok{color:color-mix(in srgb,var(--vert) 80%,var(--txt));background:var(--vert-f)}
@media (pointer:coarse){.cp{width:44px;height:44px}}
/* Commande Autel : vérifications automatiques */
.verifs{display:grid;gap:6px}
.verif{display:grid;grid-template-columns:22px 150px minmax(0,1fr);gap:8px;align-items:baseline;font-size:13px;min-width:0;overflow-wrap:anywhere}
.verif.info .pt{background:var(--bleu-f);color:color-mix(in srgb,var(--bleu) 80%,var(--txt))}
.verifs-t{margin-top:14px}
.verif .pt{width:20px;height:20px;border-radius:999px;display:inline-grid;place-items:center;font-size:12px;font-weight:800;align-self:center}
.verif.ok .pt{background:var(--vert-f);color:color-mix(in srgb,var(--vert) 80%,var(--txt))}
.verif.ko .pt{background:var(--rouge-f);color:color-mix(in srgb,var(--rouge) 80%,var(--txt))}
.verif.ko b{color:color-mix(in srgb,var(--rouge) 80%,var(--txt))}
@media (max-width:560px){.verif{grid-template-columns:22px minmax(0,1fr)}.verif .muted{grid-column:2}}
.btn-autel{border-color:color-mix(in srgb,var(--accent) 40%,var(--bord));color:var(--accent-t);font-weight:600}
.btn-autel:hover{border-color:var(--accent);background:var(--accent-f);transform:translateY(-1px)}
/* Collecte automatique : voyant + carte Réglages ; fusion tablette / secrétariat */
.dot.retard{background:var(--orange)}
.dot.ko{background:var(--rouge)}
.sync .dot{background:var(--nav-ok)}.sync .dot.retard{background:var(--nav-retard)}.sync .dot.ko{background:var(--nav-ko)}
.sync-l{display:flex;align-items:center;gap:0;color:var(--nav-txt2);min-height:32px;margin:-6px -6px 0;padding:0 6px;border:1px solid transparent;border-radius:6px;transition:background-color .2s,border-color .2s}.sync-l:hover{background:var(--nav-survol);color:var(--nav-txt)}
@media (pointer:coarse){.sync-l{min-height:44px}}
.sync-l b{margin-right:4px}
.sync-b{padding-left:12px}
.collecte{display:grid;gap:10px}
.col-bot{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--bord);border-radius:10px;background:var(--fond2)}
.col-bot .dot{margin-top:6px;flex:none}
.col-bot.ko{border-color:color-mix(in srgb,var(--rouge) 45%,var(--bord))}
.col-msg{margin-top:4px;color:var(--txt2);overflow-wrap:anywhere}
.fusion{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:10px;padding:8px 10px;border-radius:10px;background:var(--bleu-f)}
.fusion .small{flex:1;min-width:180px}
/* Historique d'une tablette (S/N) : Remotes + tickets */
.histo-t{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:6px}
.h-date{width:70px;flex:none}
.histo .list-item{flex-wrap:wrap;row-gap:4px}.histo .list-item>div{min-width:150px!important}
@media (max-width:560px){.histo .list-item>div{order:3;flex:1 1 100%!important}.histo .list-item>.badge,.histo .list-item>.pastille{margin-left:auto}}
.src.ticket{border-color:color-mix(in srgb,var(--violet) 60%,transparent);color:color-mix(in srgb,var(--violet) 85%,var(--txt))}
/* Avis de fin d'appel + indice de gentillesse */
.av-ctx{margin-top:-6px}
.av-notes{border:0;padding:0;margin:0 0 14px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.av-notes legend{margin-bottom:8px}
.av-note{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:72px;padding:8px 4px;border:1px solid var(--bord);border-radius:10px;background:var(--fond2);cursor:pointer;text-align:center;transition:transform .2s,border-color .2s,background-color .2s}
.av-note:hover{transform:translateY(-2px);border-color:var(--txt3)}
.av-note input{position:absolute;opacity:0;pointer-events:none}
.av-note .n{font-size:22px;font-weight:800;line-height:1}
.av-note .lb{font-size:11.5px;color:var(--txt2)}
.av-note:has(input:checked){border-color:var(--accent);background:var(--accent-f);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 20%,transparent)}
.av-note:has(input:focus-visible){border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}
.av-pied{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.av-pied .av-annuler{margin-left:auto;min-height:32px}
@media (max-width:560px){.av-notes{gap:4px}.av-note .lb{font-size:10.5px}}
.gentil{display:inline-flex;align-items:baseline;gap:4px;padding:1px 8px;border-radius:999px;font-weight:700;font-size:12.5px;white-space:nowrap}
.gentil .nb{font-weight:500;font-size:11.5px}
.gentil.g1,.gentil.g2{background:var(--rouge-f);color:color-mix(in srgb,var(--rouge) 80%,var(--txt))}
.gentil.g3{background:var(--orange-f);color:color-mix(in srgb,var(--orange) 85%,var(--txt))}
.gentil.g4,.gentil.g5{background:var(--vert-f);color:color-mix(in srgb,var(--vert) 80%,var(--txt))}
.tk-tr-gentil{margin-top:4px}
/* Bouton « accueil » de la rubrique (barre du haut) */
.btn-home{flex:none;width:44px;height:44px;padding:0;justify-content:center}
.btn-home svg{width:24px;height:24px;fill:currentColor}
.btn.burger{display:none}
@media (max-width:760px){.btn.burger{display:inline-flex;min-width:44px;min-height:44px;justify-content:center}.btn-home{width:40px;height:40px}.btn-home svg{width:20px;height:20px}}
.btn-home:hover{color:var(--accent-t);border-color:var(--accent)}
/* Agenda : pôles, vues jour / semaine / mois / année (lundi → vendredi) */
.ag-bar .tabs{flex-wrap:wrap}
.ag-titre{text-transform:capitalize}
.ag-pole{display:inline-block;margin-left:4px;padding:0 5px;border-radius:999px;font-size:10.5px;font-weight:700;letter-spacing:.04em;vertical-align:1px}
.ag-pole.p-colmar{background:var(--bleu-f);color:color-mix(in srgb,var(--bleu) 85%,var(--txt))}
.ag-pole.p-lyon{background:var(--violet-f);color:color-mix(in srgb,var(--violet) 85%,var(--txt))}
.ag-mois{flex:1;min-width:0;overflow-x:auto;background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);box-shadow:var(--ombre-c)}
.ag-mois-g{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr));min-width:600px}
.ag-mois-h{padding:8px;text-align:center;font-size:12.5px;font-weight:600;background:var(--fond2);border-bottom:1px solid var(--bord)}
.ag-mois-c{min-height:112px;padding:6px;border-right:1px solid var(--bord2);border-bottom:1px solid var(--bord2);display:flex;flex-direction:column;gap:3px;min-width:0}
.ag-mois-c.hors{background:var(--fond2)}.ag-mois-c.hors .ag-num{color:var(--txt3)}
.ag-mois-c.today{background:color-mix(in srgb,var(--accent) 5%,var(--carte))}
.ag-num{transition:transform .2s,background-color .2s,color .2s;align-self:flex-start;border:0;background:none;font:inherit;font-weight:700;font-size:13px;color:var(--txt);cursor:pointer;padding:2px 6px;border-radius:6px;min-height:28px}
.ag-mois-c.today .ag-num{background:var(--accent);color:var(--blanc)}
.ag-num:hover{background:var(--accent-f)}
.ag-mev{transition:transform .2s,background-color .2s,color .2s;display:block;font-size:11.5px;padding:2px 6px;border-radius:6px;border-left:3px solid var(--txt3);background:var(--fond2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--txt)}
.ag-mev:hover{transform:translateY(-1px)}
.ag-plus{border:0;background:none;font:inherit;font-size:11.5px;color:var(--txt3);text-align:left;cursor:pointer;padding:2px 6px;text-decoration:underline}
.ag-annee{flex:1;min-width:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(230px,100%),1fr));gap:12px}
.ag-an-t{transition:transform .2s,background-color .2s,color .2s;display:flex;justify-content:space-between;align-items:baseline;width:100%;border:0;background:none;font:inherit;font-weight:700;text-transform:capitalize;color:var(--txt);cursor:pointer;padding:0 0 8px;min-height:32px}
.ag-an-t:hover{color:var(--accent-t)}
.ag-an-g{display:grid;grid-template-columns:repeat(5,1fr);gap:3px}
.ag-an-h{font-size:10.5px;text-align:center;color:var(--txt3);font-weight:600}
.ag-an-j{transition:transform .2s,background-color .2s,color .2s;border:0;font:inherit;font-size:11.5px;min-height:28px;border-radius:6px;cursor:pointer;background:var(--fond2);color:var(--txt)}
.ag-an-j.vide{background:none;cursor:default}
.ag-an-j.n1{background:color-mix(in srgb,var(--accent) 18%,var(--carte))}
.ag-an-j.n2{background:color-mix(in srgb,var(--accent) 35%,var(--carte))}
.ag-an-j.n3{background:var(--accent);color:var(--blanc);font-weight:700}
.ag-an-j.today{box-shadow:inset 0 0 0 2px var(--txt)}
.ag-an-j.today:focus-visible{box-shadow:inset 0 0 0 2px var(--txt),0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}
@media (pointer:coarse){.btn-home{min-width:44px;justify-content:center}.ag-num,.ag-an-j,.ag-plus{min-height:44px}.ag-mev{min-height:44px;display:flex;align-items:center}}
.ag-an-j:not(.vide):hover{transform:translateY(-1px)}
.ag-mini{background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);box-shadow:var(--ombre-c);padding:10px}
.checkbox-row{display:flex;align-items:center;gap:8px;font-weight:400}
.bulle-chat{position:fixed;right:20px;bottom:20px;width:52px;height:52px;border-radius:999px;background:var(--accent);color:var(--blanc);display:flex;align-items:center;justify-content:center;font-size:22px;box-shadow:0 6px 18px rgba(0,0,0,.25);z-index:60;text-decoration:none}
.bulle-chat svg{width:24px;height:24px}
.bulle-chat:hover{transform:translateY(-2px)}
.bulle-chat-badge{position:absolute;top:-4px;right:-4px;background:var(--rouge);color:var(--blanc);border-radius:999px;font-size:11px;font-weight:700;padding:2px 6px;min-width:18px;text-align:center}
.presence-puce{display:inline-block;width:8px;height:8px;border-radius:999px;vertical-align:middle}
.presence-puce.presence-en-ligne{background:var(--vert)}
.presence-puce.presence-vu-recemment{background:var(--orange)}
.presence-puce.presence-hors-ligne{background:var(--txt3)}
/* Ticket : résumé du problème mis en avant (haut de fiche) + champs clés du formulaire */
.tk-pb{display:grid;gap:10px;padding-bottom:14px;border-bottom:1px solid var(--bord2)}
.tk-pb-titre{font-size:19px;font-weight:800;line-height:1.25;overflow-wrap:anywhere}
.tk-pb-tags{display:flex;flex-wrap:wrap;gap:8px}
.tk-pb-tag{display:inline-flex;flex-direction:column;gap:1px;padding:6px 10px;border-radius:10px;background:var(--bleu-f);border:1px solid color-mix(in srgb,var(--bleu) 30%,transparent);max-width:100%}
.tk-pb-tag .l{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;font-weight:600;color:color-mix(in srgb,var(--bleu) 80%,var(--txt))}
.tk-pb-tag b{font-size:15px}
.tk-pb-tag.mono b{font-variant-numeric:tabular-nums;letter-spacing:.04em}
.tk-pb-blocs{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:8px}
.tk-pb-bloc{padding:8px 12px;border-radius:10px;background:var(--orange-f);border:1px solid color-mix(in srgb,var(--orange) 30%,transparent);white-space:pre-wrap;overflow-wrap:anywhere;font-size:13.5px}
.tk-pb-bloc .l{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;font-weight:600;color:color-mix(in srgb,var(--orange) 85%,var(--txt));margin-bottom:2px;white-space:normal}
.tk-pb-bloc.vide{background:var(--fond2);border-color:var(--bord2)}
.tk-pb-desig .tk-pb-bloc{background:var(--fond2);border-color:var(--bord);max-height:220px;overflow:auto}
.tk-pb-desig .tk-pb-bloc .l{color:var(--txt3)}
.tk-pb-bloc.vide .l{color:var(--txt3)}
.fld.cle label{color:var(--txt2)}
.fld.cle .inp{border-color:color-mix(in srgb,var(--bleu) 35%,var(--bord));background:color-mix(in srgb,var(--bleu) 4%,var(--carte));font-weight:600}
/* En-têtes de colonnes triables (A→Z / Z→A) */
.th-tri{display:inline-flex;align-items:center;gap:4px;border:0;background:none;padding:2px 4px;margin:-2px -4px;font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;font-weight:inherit;cursor:pointer;border-radius:6px;white-space:nowrap;transition:color .2s,background-color .2s}
.th-tri .fl{font-size:10px;opacity:.55}
.th-tri:hover{color:var(--txt);background:var(--bord2)}
.th-tri:focus-visible{box-shadow:0 0 0 2px var(--accent),0 0 0 5px color-mix(in srgb,var(--accent) 25%,transparent)}
.th-tri.on{color:var(--accent-t)}
.th-tri.on .fl{opacity:1}
@media (pointer:coarse){.th-tri{min-height:44px}}
/* Photos des appareils (vignettes) */
.ph{width:40px;height:40px;flex:none;object-fit:contain;border-radius:6px;background:var(--blanc);border:1px solid var(--bord2)}
.ph-vide{display:inline-grid;place-items:center;background:var(--fond2);color:var(--txt3)}
.ph-vide svg{width:20px;height:20px;fill:currentColor}
.ph.ph-s{width:24px;height:24px}
.ph.ph-l{width:160px;height:160px;border-radius:10px}
.ph-l-wrap{display:flex;justify-content:center;margin-bottom:12px}
.ph-ligne{display:flex;align-items:center;gap:10px;min-width:0}
.ph-ligne>div{min-width:0}
.hbar .lb.ph-ligne{width:auto;min-width:130px;max-width:55%;flex:0 1 auto;gap:6px}
.ph-t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
td .ph-ligne>div{min-width:auto}
.px-nv{margin-top:6px}
.tk-pb-desig:focus-visible{outline:none;border-radius:10px;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}
/* Ticket : case « Suivi » + formulaire « Modifier le ticket » */
.tk-suivi-pied{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
/* Bandeau de la fiche ticket (27/10/2026) : sujet / statut / priorité modifiables en place, enregistrés au choix. */
.tk-bandeau-suivi{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px;margin:0}
.tk-bs-fld{display:grid;gap:2px;margin:0;min-width:0}
.tk-bs-l{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--txt3)}
.tk-bandeau-suivi .inp{min-height:36px;height:36px;padding:0 30px 0 10px;font-size:13px;font-weight:600;max-width:220px;border-radius:8px}
.tk-bs-couleur .inp{border-left:4px solid var(--c,var(--bord))}
.tk-bandeau-suivi select[aria-busy="true"]{opacity:.6}
.tk-bs-etat{align-self:center}
@media (pointer:coarse){.tk-bandeau-suivi .inp{min-height:44px;height:44px}}
@media (max-width:760px){.tk-bandeau-suivi{width:100%}.tk-bs-fld{flex:1 1 140px}.tk-bandeau-suivi .inp{max-width:none;width:100%}}
/* Bandeau homogène (27/10/2026) : tout à la taille du bouton « Partager » (36 px, 13 px semi-gras, coins 8 px),
   y compris les boutons rangés dans des formulaires (Transformer en Remote, Suivre) et le menu « ⋮ ».
   Titres Sujet / Statut / Priorité : lus par les lecteurs d'écran, masqués à l'écran (bulle au survol). */
.tk-fiche .hd-fiche :is(.btn,.pastille,.badge,.src,select.inp){box-sizing:border-box;height:36px;min-height:36px;font-size:13px;font-weight:600;border-radius:8px;vertical-align:middle}
.tk-fiche .hd-fiche .btn{display:inline-flex;align-items:center;gap:6px;padding:0 12px}
.tk-fiche .hd-fiche .tk-etoile.grand{min-height:36px;margin:0}
.tk-fiche .hd-fiche .tk-bs-fld{display:block}
.tk-fiche .hd-fiche .tk-bs-l{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.tk-fiche .hd-fiche .tk-bandeau-suivi{align-items:center}
@media (pointer:coarse){.tk-fiche .hd-fiche :is(.btn,.pastille,.badge,.src,select.inp),.tk-fiche .hd-fiche .tk-etoile.grand{height:44px;min-height:44px}}
/* Listes du bandeau : la règle générale des champs (40 px, 14 px, largeur 100 %) est très spécifique ;
   l'identifiant #tk-suivi l'emporte pour les mettre exactement à la taille des boutons, centrées sur la ligne. */
/* Bandeau en 3 zones : colonnes latérales de même largeur → les listes du centre sont au milieu de la fiche. */
.tk-fiche .hd-fiche.tk-hd3{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:8px}
.tk-hd3>:is(.tk-hd-g,.tk-hd-c,.tk-hd-d){display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
.tk-hd3>.tk-hd-c{justify-content:center}
.tk-hd3>.tk-hd-d{justify-content:flex-end}
.tk-hd3 form{display:inline-flex;margin:0}
.tk-hd3 :is(.tk-hd-g,.tk-hd-c)>.badge{display:inline-flex;align-items:center;height:36px;padding:0 12px;border-radius:999px}
.tk-hd3 .tk-hd-g>.cp-val{min-height:36px;padding:0 2px 0 12px;border:1px solid var(--bord2);background:var(--fond2);color:var(--txt2);border-radius:8px;font-size:13px}
.tk-hd3 .tk-hd-g>.vue-bascule{display:inline-flex;align-items:center;gap:2px;padding:3px;height:36px;border-radius:8px}
.tk-hd3 .tk-hd-g>.vue-bascule .tab.seg{min-height:0;height:28px;padding:0 12px;border-radius:6px;font-size:13px}
@media (max-width:900px){.tk-fiche .hd-fiche.tk-hd3{grid-template-columns:1fr}.tk-hd3>:is(.tk-hd-c,.tk-hd-d){justify-content:flex-start}}
/* Affichage réduit à 90 % sur ordinateur (28/10/2026) : le rendu que l'utilisateur obtenait en dézoomant son
   navigateur à 90 %. Souris seulement (tablettes et téléphones gardent leurs cibles de 44 px), écrans ≥ 1100 px.
   Une hauteur « 100vh » rétrécit elle aussi de 10 % sous zoom : on la compense (100vh ÷ 0,9). Les scripts qui
   positionnent à la souris passent par window.echelleCrm(). La page de connexion n'est pas concernée. */
@media (min-width:1100px) and (pointer:fine){
  html[data-echelle]{zoom:.9;--vh-ecran:calc(100vh / .9)}
  html[data-echelle] .app{min-height:calc(100vh / .9)}
  html[data-echelle] .side{height:calc(100vh / .9)}
  html[data-echelle] .loading{min-height:calc(100vh / .9)}
  html[data-echelle] .chat{height:calc(100vh / .9 - 130px)}
  html[data-echelle] .tc-journal{max-height:calc(100vh / .9 - 40px)}
  html[data-echelle] .vies-boite{max-height:calc(100vh / .9 - 32px)}
}
/* Véhicule du ticket en un seul bloc (28/10/2026) : grille compacte, libellé au-dessus, valeur copiable. */
.tk-veh{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px 24px;margin:0;padding:12px 16px;border:1px solid var(--bord2);border-radius:10px;background:var(--fond2)}
.tk-veh-i{min-width:0}
.tk-veh-i.tk-veh-large{grid-column:span 2}
.tk-veh dt{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--txt3);margin:0 0 2px}
.tk-veh dd{margin:0;display:flex;align-items:center;gap:4px;min-width:0}
.tk-veh dd b{font-size:14px;overflow-wrap:anywhere}
.tk-veh .mono b{font-variant-numeric:tabular-nums;letter-spacing:.04em}
@media (max-width:560px){.tk-veh{grid-template-columns:1fr}.tk-veh-i.tk-veh-large{grid-column:auto}}
/* Fenêtre « Partager » (27/10/2026) : collègues à cocher, bouton « Partager » en bas à droite. */
.dlg-partage{width:min(520px,calc(100vw - 32px))}
.dlg-partage-f{display:grid;gap:12px}
.dlg-partage-outils{display:flex;gap:8px;align-items:center}
.dlg-partage-outils .inp{flex:1;min-width:0}
.dlg-partage-liste{list-style:none;margin:0;padding:4px;max-height:min(52vh,420px);overflow:auto;border:1px solid var(--bord2);border-radius:8px;background:var(--fond2)}
.dlg-partage-liste li{border-radius:6px}
.dlg-partage-liste li:hover{background:var(--carte)}
.dlg-partage-liste .checkbox-row{display:flex;align-items:center;gap:10px;min-height:44px;padding:4px 10px;margin:0;cursor:pointer}
.dlg-partage-liste .checkbox-row .muted{margin-left:auto}
.dlg-partage-pied{display:flex;align-items:center;justify-content:space-between;gap:12px}
/* Titre « Ticket #… » dans le bandeau : numéro à la même taille que « Ticket » ; « Partager » en pictogramme seul. */
.tk-hd-titre{margin:0 4px;font-size:22px;font-weight:800;line-height:36px;white-space:nowrap}
.tk-hd-titre .mono{font-size:inherit;font-weight:800;letter-spacing:.01em}
.tk-fiche .hd-fiche .tk-partager-seul{width:36px;margin:0;padding:0;justify-content:center}
.tk-fiche .hd-fiche .tk-partager-seul svg{width:18px;height:18px}
/* Boutons-pictogrammes carrés (retour, partager, étoile) : sans marge intérieure, icône jamais tassée. */
.tk-fiche .hd-fiche.tk-hd3 :is(.btn-retour,.tk-partager-seul,.tk-etoile-seule){padding:0;justify-content:center}
.tk-fiche .hd-fiche.tk-hd3 :is(.btn-retour,.tk-partager-seul,.tk-etoile-seule) svg{flex:none}
.tk-fiche .hd-fiche.tk-hd3 .tk-partager-seul svg{width:18px;height:18px}
.tk-fiche .hd-fiche.tk-hd3 .tk-etoile-seule svg{width:20px;height:20px}
@media (pointer:coarse){.tk-fiche .hd-fiche .tk-partager-seul{width:44px}}
/* « → Remote » et étoile seule (27/10/2026). */
.tk-fiche .hd-fiche .btn-vers-remote svg{width:20px;height:20px;min-width:20px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.tk-fiche .hd-fiche .tk-etoile-seule{width:36px;padding:0;justify-content:center}
.tk-fiche .hd-fiche .tk-etoile-seule svg{width:20px;height:20px}
@media (pointer:coarse){.tk-fiche .hd-fiche .tk-etoile-seule{width:44px}}
/* Bouton retour : flèche seule agrandie, carré à la hauteur du bandeau (27/10/2026). */
.tk-fiche .hd-fiche .btn-retour{width:36px;padding:0;justify-content:center}
.tk-fiche .hd-fiche .btn-retour svg,.btn-retour svg{width:22px;height:22px;min-width:22px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
@media (pointer:coarse){.tk-fiche .hd-fiche .btn-retour{width:44px}}
/* Fiche Remote : même flèche retour que le ticket (28/10/2026). */
.hd-fiche .btn-retour{width:36px;padding:0;justify-content:center}
.hd-fiche .btn-retour svg{flex:none}
.hd-fiche.rf-hd3{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:10px}
.rf-hd-g,.rf-hd-d{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
.rf-hd-d{justify-content:flex-end}
.rf-hd-c{justify-self:center}
.rf-hd-titre{margin:0;font-size:22px;font-weight:800;line-height:1.1;text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
@media (max-width:760px){.hd-fiche.rf-hd3{grid-template-columns:1fr}.rf-hd-c{justify-self:start}.rf-hd-d{justify-content:flex-start}}
/* Liste Appareils : raccourcis « Update expire dans… » en grand (28/10/2026). */
.app-exp{gap:12px;flex-wrap:wrap}
.app-exp .badge{font-size:17px;font-weight:700;padding:14px 26px;border-radius:12px;min-height:52px;display:inline-flex;align-items:center;text-decoration:none}
.app-exp .badge:hover{border-color:var(--accent);color:var(--accent-t)}
@media (max-width:600px){.app-exp .badge{font-size:15px;padding:12px 16px;flex:1 1 100%;justify-content:center}}
/* Catalogue général à feuilleter, accueil distributeur (28/10/2026). */
/* Page tenue dans la fenêtre (28/10/2026) : statistiques en bandeau compact, le catalogue prend toute la hauteur restante.
   --vh-ecran = hauteur réelle de la fenêtre (corrigée de l'affichage réduit à 90 % sur ordinateur). */
.stat-grid.dist-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:10px}
.dist-stats .stat-card{display:flex;flex-direction:row;align-items:baseline;gap:8px;padding:7px 14px;min-height:0}
.dist-stats .stat-card .stat-value{display:inline;font-size:19px;line-height:1.2}
.dist-stats .stat-card .stat-label{font-size:13px;margin:0}
@media (max-width:700px){.stat-grid.dist-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
.card.cat-livre,[data-style=v2] .card.cat-livre{padding:0;margin:0;background:none;border:0;box-shadow:none}
.cat-hd{display:flex;align-items:baseline;gap:6px 16px;flex-wrap:wrap;margin-bottom:8px}
.cat-hd h2{margin:0;font-size:16px}
.cat-hd .cat-liens{margin-left:auto}
.cat-scene{display:flex;align-items:center;gap:10px}
.card.cat-livre{position:relative}
.cat-plein,.cat-fermer{position:absolute;top:0;right:0;z-index:2;width:38px;height:38px;padding:0;justify-content:center}
.cat-plein svg,.cat-fermer svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
@media (pointer:coarse){.cat-plein,.cat-fermer{width:44px;height:44px}}
/* Fenêtre plein écran (28/10/2026) : tout l'écran, fond sombre, croix en haut à droite. */
.card.cat-livre.plein,[data-style=v2] .card.cat-livre.plein{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;padding:16px 20px;background:rgba(12,14,18,.96)}
.cat-livre.plein .cat-scene{flex:1;height:100%}
.cat-livre.plein .cat-pages img{max-height:calc(var(--vh-ecran,100vh) - 40px)}
.cat-livre.plein .cat-fermer{top:14px;right:14px;width:44px;height:44px;border-radius:50%}
.cat-livre.plein .cat-nav{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.25);color:#fff}
.cat-pages{flex:1;min-width:0;display:flex;justify-content:center;cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.cat-pages img{display:block;max-width:100%;max-height:max(420px,calc(var(--vh-ecran,100vh) - 170px));width:auto;height:auto;box-shadow:0 2px 14px rgba(0,0,0,.18);background:#fff;pointer-events:none}
.cat-pages.double img{max-width:50%}
.cat-pages.double img:first-child{border-right:1px solid rgba(0,0,0,.08)}
.cat-nav{flex:none;width:44px;height:44px;padding:0;justify-content:center;border-radius:50%}
.cat-nav svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.cat-nav:disabled{opacity:.35;cursor:default}
@media (max-width:600px){.cat-scene{gap:6px}.cat-nav{width:40px;height:40px}}
.rf-menu>.rf-menu-btn{width:36px;padding:0;justify-content:center;list-style:none}
.rf-menu>.rf-menu-btn::-webkit-details-marker{display:none}
.rf-menu>.rf-menu-btn svg{flex:none;width:18px;height:18px;fill:currentColor}
.rf-menu .app-menu-liste{min-width:290px}
@media (pointer:coarse){.rf-menu>.rf-menu-btn{width:44px}}
.rf-hd3 .btn-partage.tk-partager-seul{width:36px;height:36px;padding:0;justify-content:center}
.rf-hd3 .btn-partage.tk-partager-seul svg{flex:none;width:18px;height:18px}
@media (pointer:coarse){.rf-hd3 .btn-partage.tk-partager-seul{width:44px;height:44px}}
@media (pointer:coarse){.hd-fiche .btn-retour{width:44px}}
#tk-suivi .tk-bs-fld{display:inline-flex;align-items:center;align-self:center;margin:0;padding:0;height:36px;line-height:0}
#tk-suivi select{display:block;margin:0;box-sizing:border-box;width:auto;max-width:240px;height:36px;min-height:36px;padding:0 30px 0 12px;font-size:13px;font-weight:600;line-height:34px;border-radius:8px;vertical-align:middle}
#tk-suivi .tk-bs-couleur select{border-left:4px solid var(--c,var(--bord))}
@media (pointer:coarse){#tk-suivi select{height:44px;min-height:44px;line-height:42px}#tk-suivi .tk-bs-fld{height:44px}}
@media (max-width:760px){#tk-suivi select{max-width:none;width:100%}#tk-suivi .tk-bs-fld{flex:1 1 140px}}
.tk-pb-hd{display:flex;gap:10px;align-items:flex-start}
.tk-pb-hd .tk-pb-titre{flex:1;min-width:0}
.tk-edit{width:min(860px,100%)}
.ph-ligne .muted.small{white-space:nowrap}
/* QuickSupport (TeamViewer) dans les panneaux d'appel */
.qs{display:grid;gap:8px;padding-top:12px;border-top:1px solid var(--bord2)}
.qs-t{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.qs-t .l{margin:0}
.qs-t select{width:auto;max-width:100%}
.qs-l{display:flex;gap:8px;flex-wrap:wrap}
.qs-l .inp{flex:1 1 220px;min-width:0;font-size:16px;font-weight:600;letter-spacing:.04em}
.qs-hist{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.qs-hist .tk-chip{cursor:pointer;padding:4px 12px;color:var(--txt);min-height:44px;max-width:100%;border-radius:8px;transition:transform .2s,background-color .2s,border-color .2s}
.qs-hist .tk-chip:hover{transform:translateY(-2px)}
/* Agenda : pleine largeur + hauteur adaptée ; deux groupes de choix bien distincts (Pôle / Affichage) */
.content.plein{max-width:none}
.ag-wrap>.ag{flex:1;min-width:0}
.seg{display:inline-flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--bord);border-radius:10px;background:var(--carte);box-shadow:var(--ombre-c)}
.seg-l{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--txt3);padding:0 8px 0 6px;border-right:1px solid var(--bord2);margin-right:2px}
.seg .tab{border:0;border-radius:6px;padding:5px 12px}
.seg .tab:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
@media (max-width:560px){.seg{flex-wrap:wrap;max-width:100%}.seg-l{flex-basis:100%;border-right:0;padding:2px 6px 4px}}
.seg .tab.on{background:var(--accent);color:var(--blanc);border-color:var(--accent)}
.seg .tab:not(.on):hover{background:var(--fond2)}
.ag-bar{gap:12px}
/* Messagerie instantanée */
.chat{display:grid;grid-template-columns:280px minmax(0,1fr) 250px;gap:16px;height:calc(100vh - 130px);min-height:420px}
.chat-liste{background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);box-shadow:var(--ombre-c);padding:12px;overflow:auto}
.chat-lt{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.chat-salon{display:flex;align-items:center;gap:10px;padding:8px;border-radius:10px;color:var(--txt);min-height:52px;transition:background-color .2s}
.chat-salon:hover{background:var(--fond2)}
.chat-salon.on{background:var(--accent-f)}
.chat-av{width:34px;height:34px;flex:none;border-radius:999px;display:grid;place-items:center;font-weight:700;font-size:12px;background:var(--bleu-f);color:color-mix(in srgb,var(--bleu) 85%,var(--txt))}
.chat-av.groupe{background:var(--violet-f);color:var(--violet);font-size:16px}
.chat-sn{flex:1;min-width:0;display:flex;flex-direction:column}
.chat-sn .small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-nl{flex:none;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:var(--danger);color:var(--blanc);font-size:11.5px;font-weight:700;display:grid;place-items:center}
.chat-lt h2{margin:0}
.chat-hd-t{flex:1;min-width:0}
.chat-fil-w{display:flex;flex-direction:column;background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);box-shadow:var(--ombre-c);min-height:0;transition:border-color .2s,box-shadow .2s}
.chat-fil-w.depot{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}
.chat-vide{justify-content:center}
.chat-hd{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--bord2);flex-wrap:wrap}
.chat-retour{display:none}
.chat-fil{flex:1;overflow:auto;padding:14px;display:flex;flex-direction:column;gap:8px;background:var(--fond2)}
.msg{display:flex}
.msg.moi{justify-content:flex-end}
.msg-b{max-width:min(560px,80%);padding:8px 12px;border-radius:12px;background:var(--carte);border:1px solid var(--bord2);overflow-wrap:anywhere}
.msg.moi .msg-b{background:color-mix(in srgb,var(--accent) 9%,var(--carte));border-color:color-mix(in srgb,var(--accent) 25%,var(--bord2))}
.msg-n{display:block;font-size:12px;color:color-mix(in srgb,var(--bleu) 85%,var(--txt))}
.msg-t{white-space:pre-wrap}
.msg-h{display:block;text-align:right;font-size:10.5px;color:var(--txt3);margin-top:2px}
.msg-f img{display:block;max-width:100%;max-height:260px;border-radius:10px;margin-bottom:6px}
.msg-doc{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:10px;border:1px solid var(--bord);background:var(--fond2);color:var(--txt);min-height:44px}
.msg-doc:hover{border-color:var(--accent)}
.msg-doc svg{width:22px;height:22px;flex:none;fill:var(--accent-t)}
.msg-doc>span{display:flex;flex-direction:column;min-width:0}
.chat-form{display:flex;gap:8px;align-items:flex-end;padding:10px 14px 4px}
.chat-form textarea{flex:1;min-width:0;resize:none;max-height:160px}
.chat-pj{flex:none;padding:7px 10px;cursor:pointer;min-width:44px;min-height:44px;justify-content:center}
.chat-pj:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}
.chat-pj svg{width:18px;height:18px;fill:currentColor}
.chat-aide{padding:0 14px 10px}
.sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.cg-membres{border:0;padding:0;margin:0 0 12px;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(180px,100%),1fr));gap:6px}
.cg-membres label{display:flex;gap:8px;align-items:center;min-height:44px;cursor:pointer}
@media (max-width:760px){.chat{grid-template-columns:1fr;height:auto}.chat.ouvert .chat-liste{display:none}.chat:not(.ouvert) .chat-fil-w{display:none}.chat-retour{display:inline-flex}.chat-fil{max-height:60vh;min-height:300px}}
/* Panneau de traitement du ticket v2 : problème + commentaire | poste d'appel */
.tk-trait.tk2{display:block;padding:0;overflow:hidden}
.tk2-g{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,400px)}
.tk2-gauche{display:grid;gap:18px;align-content:start;padding:20px 22px;min-width:0}
.tk2 .tk-pb{padding:0;border:0;gap:12px}
.tk2 .tk-pb-titre{font-size:21px}
.tk2 .tk-pb-desig .tk-pb-bloc{font-size:14.5px;line-height:1.5;max-height:300px;background:var(--carte);border-color:var(--bord)}
.tk-pb-manque{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:6px 6px 6px 12px;border:1px dashed var(--bord);border-radius:10px;font-size:12.5px;color:var(--txt2)}
.tk-pb-manque>span{flex:1;min-width:0}
.tk-pb-manque b{font-weight:600}
.tk2-com{display:grid;gap:10px;padding-top:18px;border-top:1px solid var(--bord2)}
.tk2-com-hd{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.tk2-com-hd .l{margin:0;flex:1}
.tk2-phr{display:flex;gap:6px;overflow-x:auto;scrollbar-width:thin;padding:4px 4px 8px;margin:-4px -4px 0;-webkit-mask-image:linear-gradient(90deg,var(--txt) calc(100% - 32px),transparent);mask-image:linear-gradient(90deg,var(--txt) calc(100% - 32px),transparent)}
.tk2-phr.fin{-webkit-mask-image:none;mask-image:none}
/* Panneau repliable (Journal, Historique de la tablette…) : titre + petite flèche */
.pli>.pli-hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap;cursor:pointer;list-style:none;min-height:32px}
.pli>.pli-hd::-webkit-details-marker{display:none}
.pli-hd .pli-t{margin:0}
.pli-chev{width:18px;height:18px;flex:none;fill:var(--txt3);transition:transform .2s}
.pli[open] .pli-chev{transform:rotate(90deg)}
.pli-hd:hover .pli-chev{fill:var(--accent)}
.pli-ent{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
.pli-corps{margin-top:12px}
.inp.tk2-phr-sel{width:auto;max-width:100%;min-height:44px;margin-bottom:8px;font-size:13px}
.tk2-phr-b{flex:none;max-width:min(300px,100%);min-height:44px;padding:0 14px;border:1px solid var(--bord);border-radius:999px;background:var(--carte);color:var(--txt);font:inherit;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:transform .2s,border-color .2s,background-color .2s}
.tk2-phr-b:not(:disabled):hover{transform:translateY(-2px);border-color:var(--accent);background:var(--accent-f)}
.tk2-phr-b:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}
.tk2-phr-b:disabled{opacity:.55;cursor:not-allowed}
.tk2-com-txt{min-height:96px;resize:none;max-height:320px;overflow-y:auto;font-size:14.5px;line-height:1.5}
.tk2-com textarea:disabled{background:var(--fond2);cursor:not-allowed}
.tk2-save{display:flex;gap:8px;align-items:center;justify-content:flex-end;flex-wrap:wrap}
.tk2-raccourci{margin-right:auto}
.tk2-poste{display:grid;gap:18px;align-content:start;padding:20px;background:var(--fond2);border-left:1px solid var(--bord);min-width:0;transition:background-color .2s}
.tk-trait.appel .tk2-poste{background:color-mix(in srgb,var(--vert) 9%,var(--carte));border-left-color:color-mix(in srgb,var(--vert) 35%,var(--bord))}
.tk2-cli .nom{font-size:19px;font-weight:700;line-height:1.2;overflow-wrap:anywhere}
.tk2-cli{display:grid;gap:3px}
/* Nom du client en tête du panneau, taille calculée pour occuper la largeur (28/10/2026) :
   largeur du panneau (100cqi) ÷ (nb de caractères × ~0,64 em par lettre capitale grasse), entre 17 et 34 px. */
.tk2-cli{container-type:inline-size}
.tk2-cli .nom{font-size:clamp(12px,calc(100cqi / (var(--n,14) * .74)),34px);font-weight:800;line-height:1.15;letter-spacing:-.01em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal}
.tk2-cli a.nom-lien{display:block;color:inherit;text-decoration:none}
.tk2-cli a.nom-lien:hover{color:var(--accent-t);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}
.tk2-cli a.nom-lien:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
.tk2-cli>.btn{justify-self:start}
/* Toujours sur une seule ligne (28/10/2026) : le script en fin de app-layout réduit la police si le nom déborde encore. */
.tk2-poste{padding-top:14px}
.tk2-poste .tk-tr-num{background:var(--carte)}
.tk2-poste .tk-tr-nums .tk-chip{background:var(--carte)}
.tk2-poste .tk-tr-nums .tk-chip.on{background:var(--carte)} /* tous les numéros en blanc (28/10/2026), le choisi garde son contour bleu */
.tk2-poste .tk-tr-gros{width:100%;padding:16px 18px;font-size:18px}
.tk2-poste .qs{padding-top:16px;border-top:1px solid var(--bord)}
.tk2-poste .qs-l .inp{flex:1 1 150px;background:var(--carte)}
@media (max-width:1100px){.tk2-g{grid-template-columns:1fr}.tk2-poste{border-left:0;border-top:1px solid var(--bord)}.tk-trait.appel .tk2-poste{order:-1;border-top:0;border-bottom:1px solid var(--bord)}}
@media (max-width:760px){.tk2-gauche,.tk2-poste{padding:16px}.tk2-raccourci{display:none}}
/* Réglages en accordéon */
.reg-acc{display:grid;gap:10px;max-width:1100px}
.reg-sec{background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);box-shadow:var(--ombre-c);transition:border-color .2s,box-shadow .2s}
.reg-sec.on{border-color:color-mix(in srgb,var(--accent) 35%,var(--bord))}
.reg-h{margin:0;font-size:inherit}
.reg-hd{display:flex;align-items:center;gap:14px;width:100%;min-height:60px;padding:12px 18px;border:0;background:none;color:var(--txt);font:inherit;text-align:left;cursor:pointer;border-radius:var(--r);transition:background-color .2s}
.reg-hd:hover{background:var(--fond2)}
.reg-sec .reg-hd:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--accent),0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}
.reg-t{font-size:16px;font-weight:700;flex:0 1 auto}
.reg-r{flex:1;min-width:0;display:block;text-align:right;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.reg-r .dot{margin-right:6px;vertical-align:middle}
.reg-chev{width:22px;height:22px;flex:none;fill:var(--txt3);transition:transform .2s}
.reg-sec.on .reg-chev{transform:rotate(90deg)}
.reg-c{padding:4px 18px 18px;border-top:1px solid var(--bord2)}
.reg-c>.hd:first-child{margin-top:12px}
.reg-c>p:first-child,.reg-c>.exports-intro:first-child{margin-top:12px!important}
@media (max-width:760px){.reg-hd{flex-wrap:wrap;gap:4px 10px;padding:12px 14px}.reg-r{order:3;flex-basis:100%;justify-content:flex-start;text-align:left}.reg-chev{margin-left:auto}.reg-c{padding:4px 14px 14px}}
/* Suivi des tickets : étoile jaune (pleine = suivi) */
.tk-etoile{display:inline-grid;place-items:center;flex:none;width:32px;height:32px;margin-right:4px;padding:0;border:1px solid transparent;border-radius:6px;background:none;color:var(--txt3);cursor:pointer;vertical-align:middle;transition:color .2s,background-color .2s,transform .2s}
.tk-etoile svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round}
.tk-etoile:hover{color:var(--jaune);background:var(--fond2);transform:translateY(-1px)}
.tk-etoile.on{color:var(--jaune)}
.tk-etoile.on svg{fill:currentColor}
.tk-etoile.grand{display:inline-flex;gap:6px;width:auto;height:auto;min-height:44px;margin:0;padding:6px 12px;border-color:var(--bord);background:var(--carte);color:var(--txt);font-weight:600}
.tk-etoile.grand svg{color:var(--jaune)}
.tk-etoile.grand.on{border-color:color-mix(in srgb,var(--jaune) 55%,var(--bord));background:color-mix(in srgb,var(--jaune) 12%,var(--carte))}
.tk-etoile:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}
@media (pointer:coarse){.tk-etoile{width:44px;height:44px}}
.ic-tel{width:1.15em;height:1.15em;flex:none;fill:currentColor;vertical-align:-.2em;margin-right:.35em}
/* Champs de recherche (loupe, sans texte d'exemple) */
.inp-rech{padding-left:36px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%235f656c' d='M15.5 14h-.79l-.28-.27A6.47 6.47 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:10px center;background-size:18px}
:root[data-theme=dark] .inp-rech{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%239aa1a9' d='M15.5 14h-.79l-.28-.27A6.47 6.47 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/%3E%3C/svg%3E")}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .inp-rech{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%239aa1a9' d='M15.5 14h-.79l-.28-.27A6.47 6.47 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/%3E%3C/svg%3E")}}
/* Fiche véhicule (Autossimo) */
.fv{border:1px solid color-mix(in srgb,var(--bleu) 30%,var(--bord));border-radius:10px;background:var(--bleu-f);padding:12px 14px}
.fv.attente,.fv.vide{padding:10px 14px}
.fv.vide{background:var(--fond2);border-color:var(--bord2)}
.fv-etat{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--txt2)}
.fv-pt{width:8px;height:8px;border-radius:999px;background:var(--bleu);flex:none;animation:tk-pulse 1.5s ease-in-out infinite}
.fv-hd{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.fv-t{font-size:11px;text-transform:uppercase;letter-spacing:.06em;font-weight:700;color:color-mix(in srgb,var(--bleu) 80%,var(--txt))}
.fv-g{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1.5fr);gap:8px 14px}
.fv-c.mono b{overflow-wrap:normal;word-break:keep-all}
.fv-c{display:flex;flex-direction:column;gap:1px;min-width:0}
.fv-c .l{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;font-weight:600;color:color-mix(in srgb,var(--bleu) 70%,var(--txt));margin:0}
.fv-c b{font-size:14.5px;overflow-wrap:anywhere}
.fv-c.mono b{font-variant-numeric:tabular-nums;letter-spacing:.04em}
@media (max-width:900px){.fv-g{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:480px){.fv-g{grid-template-columns:1fr}.fv-c.mono b{overflow-wrap:anywhere}}
/* Fenêtre d'avis : « Le client n'a pas répondu ? » */
.av-nr{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:12px 14px;margin-bottom:16px;border-radius:10px;background:var(--orange-f);border:1px solid color-mix(in srgb,var(--orange) 30%,transparent)}
.av-nr-t{flex:1 1 240px;min-width:0;display:flex;flex-direction:column;gap:2px;color:color-mix(in srgb,var(--orange) 75%,var(--txt))}
.av-nr-t>b{font-size:15px}
.av-nr-t .small{color:var(--txt2);overflow-wrap:anywhere}
.av-nr .btn{flex:none}
.av-nr-b{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.av-nr.on{background:var(--fond2);border-color:var(--bord)}
.av-nr-on{flex:1 1 100%;min-width:0;display:grid;gap:10px}.av-nr-on[hidden],.av-nr [hidden]{display:none}
.av-nr.on .av-nr-t{color:var(--txt)}
.av-notes.off{opacity:.45;filter:grayscale(1)}
.av-notes.off .av-note{cursor:not-allowed}
/* Recherche générale (barre du haut) */
.rg{position:relative;flex:1 1 320px;max-width:460px;min-width:0;margin-left:8px}
.rg .inp{width:100%}
.rg-res{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:50;max-height:min(70vh,560px);overflow:auto;background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);box-shadow:var(--ombre-f);padding:6px}
.rg-g{font-size:11px;text-transform:uppercase;letter-spacing:.06em;font-weight:600;color:var(--txt3);padding:8px 8px 2px}
.rg-l{display:flex;flex-direction:column;gap:1px;padding:7px 10px;border-radius:8px;min-height:44px;justify-content:center;color:var(--txt);transition:background .15s;text-decoration:none}
.rg-l:focus-visible{outline:none;background:var(--accent-f);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}
.rg-l b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rg-l .small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rg-l:hover,.rg-l.on{background:var(--accent-f)}
.rg-l.on b{color:var(--accent-t)}
.rg-vide{padding:10px}
@media (max-width:760px){.rg{flex-basis:100%;max-width:none;margin-left:0;order:5}.top{flex-wrap:wrap}}
/* Partager dans la messagerie */
.top h1{display:flex;align-items:center;gap:10px;min-width:0;font-size:22px}
.top h1 .mono{font-size:inherit;font-weight:inherit}
.btn-partage{flex:none;gap:6px;font-size:12.5px;font-weight:600}
.btn-partage svg{width:16px;height:16px;fill:currentColor}
.btn-partage:hover{border-color:var(--accent);color:var(--accent-t)}
.pt-liste{display:grid;gap:2px;max-height:min(46vh,380px);overflow:auto;border:1px solid var(--bord2);border-radius:10px;padding:6px}
.pt-g{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--txt3);font-weight:600;padding:8px 8px 2px}
.pt-l{display:flex;align-items:center;gap:10px;width:100%;min-height:52px;padding:6px 8px;border:1px solid transparent;border-radius:10px;background:none;color:var(--txt);font:inherit;text-align:left;cursor:pointer;transition:background-color .2s,border-color .2s}
.pt-l:hover,.pt-l:focus-visible{background:var(--fond2);border-color:var(--bord2);outline:none}
.pt-l .chat-av{position:relative}
.msg-lien{color:color-mix(in srgb,var(--bleu) 85%,var(--txt));text-decoration:underline;overflow-wrap:anywhere}
@media (max-width:760px){.btn-partage span{display:none}}
/* Mails types (panneau + Réglages) */
.mt{display:grid;gap:8px;padding-top:16px;border-top:1px solid var(--bord)}
.mt .l{margin:0}
.mt-l{display:flex;gap:8px;flex-wrap:wrap}
.mt-l .inp{flex:1 1 170px;min-width:0;background:var(--carte)}
.mt-go{flex:none}
.mt-info{overflow-wrap:anywhere}
.mt-warn{color:color-mix(in srgb,var(--orange) 75%,var(--txt));font-weight:600}
.mt-reg{display:grid;gap:6px;margin-bottom:12px}
.mt-reg-l{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:8px 10px;border:1px solid var(--bord2);border-radius:10px}
.mt-reg-t{flex:1 1 220px;min-width:0;display:flex;flex-direction:column}
.mt-reg-t .small{overflow-wrap:anywhere}
.mt-reg-l select{width:auto;max-width:100%;flex:0 1 230px}
.mt-ajout-b{cursor:pointer}
.mt-ajout-b:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}
/* Dernier intervenant (listes Tickets / Remotes) */
.tk-interv{white-space:nowrap}
.interv{display:inline-flex;align-items:center;gap:8px;font-weight:600;color:var(--txt2)}
.interv .chat-av{width:26px;height:26px;font-size:10.5px}
/* Corbeille des listes (Remotes, Tickets) */
.td-corb{width:104px;white-space:nowrap;text-align:right}
.btn-corb{min-width:44px;min-height:44px;display:inline-grid;place-items:center;border:1px solid transparent;border-radius:6px;background:none;color:var(--txt3);cursor:pointer;transition:color .2s,background-color .2s,border-color .2s}
.btn-corb svg{width:18px;height:18px;fill:currentColor}
.btn-corb:hover{color:color-mix(in srgb,var(--rouge) 85%,var(--txt));background:var(--rouge-f)}
.btn-corb.conf{min-width:96px;padding:0 10px;font-size:12px;font-weight:700;color:color-mix(in srgb,var(--rouge) 85%,var(--txt));background:var(--rouge-f);border-color:color-mix(in srgb,var(--rouge) 40%,transparent)}
/* Messagerie : réactions rapides */
.msg{flex-direction:column;align-items:flex-start}
.msg.moi{align-items:flex-end}
.msg-b{position:relative;-webkit-user-select:text;user-select:text;-webkit-touch-callout:none}
.msg-rx{display:flex;gap:4px;flex-wrap:wrap;margin-top:3px}
.msg-rx:empty{display:none}
.rx{display:inline-flex;align-items:center;gap:4px;min-height:28px;padding:0 8px;border:1px solid var(--bord);border-radius:999px;background:var(--carte);font:inherit;font-size:13px;cursor:pointer;transition:transform .15s,border-color .15s,background-color .15s}
.rx span{font-size:11.5px;font-weight:600;color:var(--txt2)}
.rx.on{border-color:var(--accent);background:var(--accent-f)}
.rx:hover{transform:translateY(-1px)}
.rx-pop{position:absolute;bottom:calc(100% + 6px);left:0;z-index:20;display:flex;gap:2px;padding:4px;border:1px solid var(--bord);border-radius:999px;background:var(--carte);box-shadow:var(--ombre-f)}
.msg.moi .rx-pop{left:auto;right:0}
.rx-pop button{width:40px;height:40px;border:0;border-radius:999px;background:none;font-size:20px;cursor:pointer;transition:transform .15s,background-color .15s}
.rx-pop button:hover{background:var(--fond2);transform:scale(1.15)}
.rx-pop button:focus-visible{outline:none;background:var(--fond2);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}
.rx:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}
.rx-pop.bas{bottom:auto;top:calc(100% + 6px)}
@media (pointer:coarse){.rx{min-height:44px;padding:0 10px}.rx-pop button{width:44px;height:44px}}
/* Messagerie : colonne Contacts */
.chat-contacts{background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);box-shadow:var(--ombre-c);padding:12px;overflow:auto;min-height:0}
.chat-contacts h2{margin:0 0 2px}
.chat-ct-n{margin-bottom:8px}
.chat-ct{display:flex;align-items:center;gap:10px;width:100%;min-height:52px;padding:6px 8px;border:1px solid transparent;border-radius:10px;background:none;color:var(--txt);font:inherit;text-align:left;cursor:pointer;transition:background-color .2s,border-color .2s}
.chat-ct:hover{background:var(--fond2);border-color:var(--bord2)}
.chat-ct .chat-av{position:relative}
/* Fiche client : Entreprise / Particulier */
.type-client{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.type-client-o{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 14px;border:1px solid var(--bord);border-radius:999px;background:var(--fond2);cursor:pointer;font-weight:600;transition:border-color .2s,background-color .2s}
.type-client-o:has(input:checked){border-color:var(--accent);background:var(--accent-f)}
.type-client-o input{accent-color:var(--accent)}
@media (pointer:coarse){.type-client-o{min-height:44px}}
/* « + » d'un salon : ajout de personnes */
.chat-ajout{position:relative}
.chat-ajout>summary{list-style:none;cursor:pointer;font-weight:700;font-size:16px;min-width:32px;justify-content:center}
.chat-ajout>summary::-webkit-details-marker{display:none}
.chat-ajout-p{position:absolute;right:0;top:calc(100% + 6px);z-index:30;width:min(300px,85vw);max-height:340px;overflow:auto;display:grid;gap:4px;padding:12px;background:var(--carte);border:1px solid var(--bord);border-radius:10px;box-shadow:var(--ombre-f)}
.chat-ajout-l{display:flex;align-items:center;gap:8px;min-height:32px;cursor:pointer}
.chat-ajout-l .muted{margin-left:auto}
@media (pointer:coarse){.chat-ajout-l{min-height:44px}}
.chat-ct-l{display:flex;align-items:center;gap:10px;flex:1;min-width:0;color:inherit;text-decoration:none}
.chat-ct-act{display:flex;gap:4px;flex:none}
.chat-ct-b{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:1px solid var(--bord2);border-radius:8px;background:var(--carte);color:var(--accent);cursor:pointer;transition:background-color .2s,border-color .2s}
.chat-ct-b svg{width:16px;height:16px;fill:currentColor}
.chat-ct-b:hover{border-color:var(--accent);background:var(--accent-f)}
.chat-ct-b:disabled{color:var(--txt3);cursor:not-allowed;opacity:.5;background:none;border-color:var(--bord2)}
@media (pointer:coarse){.chat-ct-b{width:44px;height:44px}}
.chat-pres{position:absolute;right:-1px;bottom:-1px;width:11px;height:11px;border-radius:999px;background:var(--txt3);border:2px solid var(--carte)}
.chat-pres.on{background:var(--vert)}
.chat-ct-st{flex:none;max-width:84px;text-align:right;font-size:11px;line-height:1.25;color:var(--txt3)}
.chat-ct-st.on{color:var(--vert);font-weight:600}
@media (max-width:1180px){.chat{grid-template-columns:280px minmax(0,1fr);grid-template-rows:minmax(0,1fr) minmax(0,42%)}.chat-liste{grid-row:1}.chat-contacts{grid-column:1;grid-row:2}.chat-fil-w{grid-column:2;grid-row:1/3}}
@media (max-width:760px){.chat{grid-template-columns:1fr;grid-template-rows:none}.chat-contacts{max-height:none}.chat-liste,.chat-contacts,.chat-fil-w{grid-column:auto;grid-row:auto}.chat.ouvert .chat-contacts{display:none}}
/* Messagerie : statut des messages, corbeille, emojis */
.msg-st{display:inline-flex;align-items:center;gap:3px;margin-left:8px;color:var(--txt3)}
.msg-st svg{width:14px;height:14px;fill:currentColor}
.msg-st.recu{color:var(--txt2)}
.msg-st.lu{color:color-mix(in srgb,var(--bleu) 85%,var(--txt));font-weight:600}
.chat-salon-w{display:flex;align-items:center;gap:2px;border-radius:10px}
.chat-salon-w .chat-salon{flex:1;min-width:0}
.chat-suppr{flex:none;min-width:44px;min-height:44px;display:grid;place-items:center;border:1px solid transparent;border-radius:10px;background:none;color:var(--txt3);cursor:pointer;opacity:.85;transition:opacity .2s,color .2s,background-color .2s,border-color .2s}
.chat-suppr svg{width:18px;height:18px;fill:currentColor}
.chat-salon-w:hover .chat-suppr,.chat-suppr:focus-visible{opacity:1}
.chat-suppr:hover{color:color-mix(in srgb,var(--rouge) 85%,var(--txt));background:var(--rouge-f)}
.chat-suppr.conf{opacity:1;padding:0 10px;font-size:12px;font-weight:700;color:color-mix(in srgb,var(--rouge) 85%,var(--txt));background:var(--rouge-f);border-color:color-mix(in srgb,var(--rouge) 40%,transparent)}
.chat-form{position:relative}
.chat-emo-w{position:static;flex:none}
.chat-emo{position:absolute;bottom:calc(100% + 8px);left:14px;z-index:30;width:min(340px,calc(100% - 28px));background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);box-shadow:var(--ombre-f);padding:8px}
.chat-emo-tabs{display:flex;gap:4px;overflow-x:auto;padding-bottom:6px;border-bottom:1px solid var(--bord2);margin-bottom:6px}
.chat-emo-tabs button{flex:none;min-height:44px;transition:background-color .2s;padding:0 10px;border:1px solid transparent;border-radius:999px;background:none;color:var(--txt2);font:inherit;font-size:12.5px;cursor:pointer}
.chat-emo-tabs button:not(.on):hover{background:var(--fond2)}
.chat-emo-tabs button.on{background:var(--accent-f);color:var(--txt);border-color:color-mix(in srgb,var(--accent) 30%,transparent);font-weight:600}
.chat-emo-g{display:grid;grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:2px;max-height:220px;overflow:auto}
.chat-emo-g button{min-height:44px;border:0;border-radius:8px;background:none;font-size:22px;line-height:1;cursor:pointer;transition:background-color .15s,transform .15s}
.chat-emo-g button:hover,.chat-emo-g button:focus-visible{background:var(--fond2);transform:translateY(-2px)}
/* Exports CSV (Réglages) */
.exports{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(240px,100%),1fr));gap:10px}
.exports-intro{margin-top:-6px}
/* Historique des appels du panneau Remote */
.rm-hist{display:flex;flex-direction:column;gap:8px;border-top:1px solid var(--bord2);padding-top:14px}
.rm-hist .l{margin-bottom:0}
.export{display:flex;align-items:center;gap:12px;min-height:56px;padding:10px 14px;border:1px solid var(--bord);border-radius:10px;background:var(--fond2);color:var(--txt);transition:transform .2s,border-color .2s,background-color .2s}
.export svg{width:22px;height:22px;flex:none;fill:var(--accent-t)}
.export>span{display:flex;flex-direction:column;min-width:0;overflow-wrap:anywhere}
.export:hover{transform:translateY(-2px);border-color:var(--accent);background:var(--carte)}
.pager{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-top:12px;flex-wrap:wrap}
@media (max-width:760px){.top-mdp{display:none}.top h1{font-size:17px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.top{gap:8px}}
/* Harmonisation charte (revue design 15/10) : transitions, focus visible, cibles tactiles, champs empilés en mobile */
.btn,.tab,.nav a{transition:background-color .2s,border-color .2s,transform .2s}
.btn:focus-visible,a:focus-visible,.tab:focus-visible,[data-act]:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}
@media (pointer:coarse){.btn,.inp,.tab{min-height:44px}.tab{display:inline-flex;align-items:center}}
@media (max-width:560px){.row{flex-direction:column;gap:0}}
@media (prefers-reduced-motion:reduce){*,*::before{animation:none!important;transition:none!important}}

/* =====================================================================
   Refonte V2 — maquette validée « V2 — charte actuelle » (18/10/2026)
   Uniquement les variables de :root (clair et sombre). Animations coupées sous prefers-reduced-motion.
   ===================================================================== */
@keyframes v2-rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes v2-drift{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(28px,-18px) scale(1.07)}}

/* --- Partout : menu latéral --- */
.side{background-image:radial-gradient(380px 240px at 0 0,color-mix(in srgb,var(--accent) 38%,transparent),transparent 70%)}
.nav a{border-radius:10px;transition:background .18s,color .18s,box-shadow .18s}
.nav a.on{font-weight:600;box-shadow:0 8px 20px -8px color-mix(in srgb,var(--accent) 70%,transparent)}
.nav a[href*="messagerie"] .n{background:var(--danger);color:var(--blanc);font-weight:700}
.sync{border-radius:12px;background:color-mix(in srgb,var(--nav-txt) 5%,transparent);border:1px solid color-mix(in srgb,var(--nav-txt) 9%,transparent)}

/* --- Partout : barre du haut translucide --- */
.top{background:color-mix(in srgb,var(--carte) 85%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}

/* --- Partout : cartes (arrondi 14 px, soulèvement au survol, fondu à l'arrivée) --- */
.card{border-radius:14px;transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}
.card:hover{transform:translateY(-3px);box-shadow:var(--ombre-h);border-color:color-mix(in srgb,var(--accent) 35%,var(--bord))}
/* Bug d'affichage (28/10/2026) : une carte déplacée (survol, arrivée) devient le cadre de ses fenêtres « position:fixed »
   (avis d'appel, modales, menus…) qui se retrouvaient coupées dans la carte. Ces cartes ne bougent plus. */
.card:has(.modal-bg,.rf-modal,[role=dialog],.tk-modale,.app-menu,.tk2-poste,.cat-livre):hover{transform:none}
.content.entree .card:has(.modal-bg,.rf-modal,[role=dialog],.tk-modale,.app-menu,.tk2-poste,.cat-livre){animation:none}
.content.entree .card,.content.entree .rw{animation:v2-rise .45s ease both}
.content.entree .card:nth-child(2),.content.entree .rw:nth-child(3){animation-delay:.05s}
.content.entree .card:nth-child(3),.content.entree .rw:nth-child(4){animation-delay:.1s}
.content.entree .card:nth-child(4),.content.entree .rw:nth-child(5){animation-delay:.15s}
.content.entree .card:nth-child(5),.content.entree .rw:nth-child(6){animation-delay:.2s}
.content.entree .card:nth-child(n+6),.content.entree .rw:nth-child(n+7){animation-delay:.25s}

/* --- Panneau d'accueil --- */
.dash2{display:flex;flex-direction:column;gap:16px}
.dash-hd{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:flex-end;justify-content:space-between}
.dash-date{font-size:13px;color:var(--txt3);font-weight:500}
.dash-bjr{margin:2px 0 0;font-size:24px;font-weight:800;letter-spacing:-.02em;line-height:1.2;text-wrap:balance}
.dash-act{display:flex;gap:8px;flex-wrap:wrap}
.dash-act .btn{min-height:44px;padding:0 14px;border-radius:6px;font-weight:600}
.dash-act svg,.da-b svg{width:16px;height:16px}
.dash-alerte2{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;padding:12px 16px;border-radius:12px;background:var(--orange-f);color:color-mix(in srgb,var(--orange) 82%,var(--txt));border:1px solid color-mix(in srgb,var(--orange) 30%,transparent);font-size:13.5px}
.dash-alerte2 .da-ic{width:30px;height:30px;border-radius:999px;flex:none;display:grid;place-items:center;background:color-mix(in srgb,var(--orange) 18%,transparent)}
.dash-alerte2 .da-ic svg{width:16px;height:16px}
.dash-alerte2 .tx{flex:1 1 320px}
.dash-alerte2 a{font-weight:700;text-decoration:underline;display:inline-flex;align-items:center;min-height:44px}
.dash-appel{position:relative;overflow:hidden;display:flex;flex-wrap:wrap;align-items:center;gap:16px 28px;padding:18px 22px;border-radius:var(--r);background:var(--carte);border:1px solid color-mix(in srgb,var(--vert) 40%,var(--bord));box-shadow:var(--ombre-c)}
.dash-appel::before{content:"";position:absolute;inset:0;background:radial-gradient(520px 200px at 0 0,var(--vert-f),transparent 70%);pointer-events:none}
.dash-appel>*{position:relative}
.da-g{display:flex;flex-direction:column;gap:4px;flex:1 1 280px;min-width:0}
.da-l{display:inline-flex;align-items:center;gap:8px;font-size:11.5px;font-weight:700;letter-spacing:.08em;color:color-mix(in srgb,var(--vert) 80%,var(--txt))}
.da-pt{width:8px;height:8px;border-radius:999px;background:var(--vert);animation:tk-pulse 1.5s ease-in-out infinite}
.da-t{font-size:19px;font-weight:800;letter-spacing:-.01em}
.da-s{font-size:13px;color:var(--txt3);display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.da-c{display:flex;flex-direction:column;align-items:center}
.da-c .l{font-size:11px;font-weight:600;letter-spacing:.06em;color:var(--txt3)}
.da-c .chrono{font-size:34px;font-weight:800;color:color-mix(in srgb,var(--vert) 85%,var(--txt));font-variant-numeric:tabular-nums;line-height:1.1}
.da-b{display:flex;gap:8px;flex-wrap:wrap}
.da-b .btn{min-height:44px;padding:0 16px;border-radius:10px;font-weight:600}
.da-b .da-fin{background:var(--appel);border-color:var(--appel);color:var(--blanc);font-weight:700}
.da-b .da-fin:hover{background:var(--appel-d);border-color:var(--appel-d)}
.dash-kpis2{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}
.kpi2{display:flex;flex-direction:column;gap:8px;padding:16px 18px;color:var(--txt)}
.kpi2 .k-hd{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12.5px;color:var(--txt3);font-weight:500}
.kpi2 .k-ic{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;flex:none}
.kpi2 .k-ic svg{width:15px;height:15px}
.k-ic.c-bleu{background:var(--bleu-f);color:var(--bleu)}
.k-ic.c-accent{background:var(--accent-f);color:var(--accent-t)}
.k-ic.c-vert{background:var(--vert-f);color:color-mix(in srgb,var(--vert) 80%,var(--txt))}
.k-ic.c-violet{background:var(--violet-f);color:color-mix(in srgb,var(--violet) 85%,var(--txt))}
.k-ic.c-cyan{background:var(--cyan-f);color:color-mix(in srgb,var(--cyan) 85%,var(--txt))}
.kpi2 .v{font-size:30px;font-weight:800;letter-spacing:-.02em;line-height:1;margin:0}
.kpi2 .v.k-bleu{color:var(--bleu)}
.kpi2 .v.k-vert{color:color-mix(in srgb,var(--vert) 80%,var(--txt))}
.kpi2 .d{font-size:12px;color:var(--txt3);display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}
.k-bar{display:flex;gap:4px;height:6px}
.k-bar>span{border-radius:999px}
.k-bar2{gap:3px;border-radius:999px;overflow:hidden}
.k-bar2>span{border-radius:0}
/* Tableau de bord : tuiles compactes (chiffre à gauche du libellé) pour laisser la hauteur au planning du jour */
.dash2 .kpi2{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:4px 12px;padding:10px 14px}
.dash2 .kpi2 .v{order:-1;flex:none;font-size:24px}
.dash2 .kpi2 .k-hd{flex:1 1 120px;min-width:0}
.dash2 .kpi2 .k-bar,.dash2 .kpi2 .d{flex:1 0 100%}
.dash2 .kpi2 .k-bar{height:4px}
.dash2 .kpi2 .k-ic{width:26px;height:26px;border-radius:8px}
.dash2 .kpi2 .k-ic svg{width:14px;height:14px}
.b-vert{background:var(--vert)}.b-orange{background:var(--orange)}.b-accent{background:var(--accent)}.b-cyan{background:var(--cyan)}
.dash-bas{display:flex;flex-wrap:wrap;gap:18px;align-items:flex-start}
.dash2 .dash-plan{flex:999 1 560px;min-width:0;padding:16px 18px 18px;border-radius:16px}
.dash-droite{flex:1 1 300px;min-width:0;display:flex;flex-direction:column;gap:18px}
.dash-droite .card{padding:16px 18px;border-radius:16px}
.dash-droite.dr-defil{overflow-y:auto;overscroll-behavior:contain;padding:4px 12px 28px;margin:-4px -12px 0;scrollbar-width:thin}
.dash-droite.dr-defil>.card{flex:none}
/* fondu en bas tant qu'il reste des cartes plus bas */
.dash-droite.dr-defil.dr-suite{-webkit-mask-image:linear-gradient(to bottom,var(--txt) calc(100% - 56px),transparent);mask-image:linear-gradient(to bottom,var(--txt) calc(100% - 56px),transparent)}
.dash2 h2{font-size:16px;font-weight:700}
.dash2 .ag{border-radius:12px}
.dash2 .now{box-shadow:0 0 10px color-mix(in srgb,var(--accent) 55%,transparent)}
.dash2 .now::before{content:"";position:absolute;left:-5px;top:-4px;width:10px;height:10px;border-radius:999px;background:var(--accent)}
.dash2 .ev{border-radius:10px;border-left-width:4px}
.dash2 .ev:hover{box-shadow:var(--ombre-h)}
.pc-l{display:grid!important;grid-template-columns:150px minmax(0,1fr) 28px;gap:10px;border-bottom:0!important;border-radius:10px;padding:0 8px!important;min-height:36px;transition:background .18s}
.pc-l:hover{background:var(--fond2)}
.pc-l .badge{justify-self:start}
.pc-l b{text-align:right;font-variant-numeric:tabular-nums}
.pc-bar{height:8px;border-radius:999px;background:var(--bord2);overflow:hidden}
.pc-fi{display:block;height:100%;border-radius:999px}
.pc-nouvelle{background:var(--bleu)}.pc-rdv{background:var(--orange)}.pc-complete{background:var(--cyan)}.pc-reussie{background:var(--vert)}
.pc-echec{background:var(--rouge)}.pc-facturee{background:var(--violet)}.pc-cloturee{background:var(--txt3)}.pc-tous{background:var(--txt3)}
.df-hd{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.df-hd h2{margin:0}
.df-hd a{font-size:12.5px;font-weight:600;display:inline-flex;align-items:center;min-height:44px}
.df-l{border-bottom:0!important;border-radius:10px;padding:4px 8px!important;min-height:44px;transition:background .18s}
.pc-l.list-item[data-act]{min-height:36px}
@media (pointer:coarse){.pc-l.list-item[data-act]{min-height:44px}}
.df-l:hover{background:var(--fond2)}
.df-l:focus-visible,.pc-l:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}
.df-c{flex:1;min-width:0;display:flex;flex-direction:column}
.df-c b{font-size:13.5px}
.df-c .small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.df-q{white-space:nowrap}

/* --- Remotes : onglets segmentés, puces de source, lignes en cartes --- */
.seg-tabs{display:inline-flex;flex-wrap:wrap;gap:4px;padding:4px;border-radius:12px;background:color-mix(in srgb,var(--txt) 6%,transparent);max-width:100%;margin-bottom:14px}
.seg-tabs .tab.seg{display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:0 12px;border:0;border-radius:10px;color:var(--txt2);font-size:13px;font-weight:600;transition:background .18s,color .18s,box-shadow .18s}
.seg-tabs .tab.seg:hover{background:var(--carte);border:0}
.seg-tabs .tab.seg.on{background:var(--carte);color:var(--accent-t);box-shadow:var(--ombre-c),inset 0 0 0 1px color-mix(in srgb,var(--accent) 45%,transparent)}
.seg-tabs .tab.seg:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}
.seg-pt{width:7px;height:7px;border-radius:999px;flex:none}
.seg-tabs .tab .n{font-size:11.5px;font-weight:700;color:var(--txt2);margin-left:0}
.rw-bar .inp-rech{flex:1 1 320px;max-width:520px;min-height:44px;border-radius:6px}
.chips-src{display:flex;gap:6px;flex-wrap:wrap}
.chip-src{min-height:44px;padding:0 14px;border-radius:999px;border:1px solid var(--bord);background:var(--carte);color:var(--txt2);font-size:13px;font-weight:600;cursor:pointer;transition:background .18s,border-color .18s,color .18s}
.chip-src:hover{border-color:var(--txt3)}
.chip-src.on{background:var(--accent);border-color:var(--accent);color:var(--blanc)}
.chip-src:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}
.rw-liste{display:flex;flex-direction:column;gap:6px}
.rw-grp{display:flex;flex-direction:column;gap:8px}
.rw-grp-hd{margin:10px 0 2px;display:flex;align-items:baseline;gap:8px;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--txt3)}
.rw-grp-hd span{font-weight:500;letter-spacing:0;text-transform:none}
.rw-vide{padding:48px 16px;text-align:center;color:var(--txt3);border:1px dashed var(--bord);border-radius:14px}
.rw{--c:var(--txt3);position:relative;display:grid;grid-template-columns:6px minmax(170px,1.2fr) minmax(140px,1fr) minmax(130px,1fr) minmax(80px,.5fr) minmax(150px,auto) 24px;align-items:center;gap:14px;padding:12px 14px 12px 0;border-radius:12px;background:var(--carte);border:1px solid var(--bord);box-shadow:var(--ombre-c);color:var(--txt);overflow:hidden;cursor:pointer;min-width:0;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.rw:hover{transform:translateY(-2px);box-shadow:var(--ombre-h);border-color:color-mix(in srgb,var(--accent) 35%,var(--bord))}
.rw:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}
.rw-bande{align-self:stretch;margin:-12px 0;background:var(--c)}
.rw-nouvelle{--c:var(--bleu)}.rw-rdv{--c:var(--orange)}.rw-complete{--c:var(--cyan)}.rw-reussie{--c:var(--vert)}.rw-echec{--c:var(--rouge)}.rw-facturee{--c:var(--violet)}.rw-cloturee{--c:var(--txt3)}
.rw-c{display:flex;flex-direction:column;gap:3px;min-width:0}
.rw-l1{display:flex;align-items:center;gap:8px;min-width:0}
.rw-l1 b{font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rw-e{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rw-p{font-weight:500;font-size:13px;color:var(--txt2)}
.rw-s{font-size:12px;color:var(--txt3);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rw-s.cp-val{display:flex;align-items:center;gap:4px}
.rw-st{flex-direction:row;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.rw-tech{width:28px;height:28px;border-radius:999px;background:var(--accent-f);color:var(--accent-t);display:grid;place-items:center;font-size:11px;font-weight:700;flex:none}
.rw-go{color:var(--accent-t);opacity:0;transform:translateX(-4px);transition:opacity .2s,transform .2s}
.rw-go svg{width:18px;height:18px}
.rw:hover .rw-go,.rw:focus-visible .rw-go{opacity:1;transform:none}
@media (max-width:1100px){.rw{grid-template-columns:6px minmax(0,1fr) minmax(0,1fr) auto auto}.rw-pre,.rw-go{display:none}}
@media (max-width:760px){.rw{grid-template-columns:6px minmax(0,1fr) auto;gap:10px}.rw-cli,.rw-tkc{display:none}.rw-st{flex-direction:column;align-items:flex-end}}

/* --- Connexion : deux panneaux --- */
.login.lg2{display:flex;place-items:normal;padding:0;background:var(--fond);min-height:100vh}
.lg-g{position:relative;overflow:hidden;flex:0 0 min(760px,53%);box-sizing:border-box;padding:56px clamp(32px,5vw,72px);background:var(--nav);color:var(--nav-txt);display:flex;flex-direction:column;justify-content:space-between;gap:32px}
.lg-g::after{content:"";position:absolute;inset:0;background-image:linear-gradient(color-mix(in srgb,var(--nav-txt) 4%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--nav-txt) 4%,transparent) 1px,transparent 1px);background-size:32px 32px;pointer-events:none}
.lg-orb{position:absolute;border-radius:999px;pointer-events:none;animation:v2-drift 13s ease-in-out infinite}
.lg-orb.o1{right:-200px;top:-200px;width:600px;height:600px;background:radial-gradient(circle,color-mix(in srgb,var(--accent) 50%,transparent) 0%,transparent 65%)}
.lg-orb.o2{left:-220px;bottom:-220px;width:520px;height:520px;background:radial-gradient(circle,color-mix(in srgb,var(--accent) 25%,transparent) 0%,transparent 65%);animation-delay:-6s}
.lg-g>*:not(.lg-orb){position:relative;z-index:1}
.lg-brand{display:flex;align-items:center;gap:14px}
.lg-brand img{width:76px;height:46px;object-fit:contain;background:var(--blanc);border-radius:10px;padding:4px}
.lg-brand b{display:block;font-size:17px;letter-spacing:.02em}
.lg-brand small{font-size:12px;letter-spacing:.16em;color:var(--nav-txt2)}
.lg-mid{display:flex;flex-direction:column;gap:24px}
.lg-pill{display:inline-flex;align-self:flex-start;align-items:center;gap:10px;padding:8px 14px;border-radius:999px;background:color-mix(in srgb,var(--nav-txt) 6%,transparent);border:1px solid color-mix(in srgb,var(--nav-txt) 12%,transparent);font-size:13px}
.lg-pt{width:8px;height:8px;border-radius:999px;background:var(--nav-ok);animation:tk-pulse 1.5s ease-in-out infinite}
.lg-titre{margin:0;font-size:clamp(34px,3.4vw,50px);line-height:1.08;font-weight:800;letter-spacing:-.03em;max-width:580px;text-wrap:balance}
.lg-titre span{color:color-mix(in srgb,var(--accent) 45%,var(--nav-txt))}
.lg-sous{margin:0;font-size:17px;line-height:1.55;color:var(--nav-txt2);max-width:520px}
.lg-feats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-width:610px}
.lg-feat{padding:16px;border-radius:14px;background:color-mix(in srgb,var(--nav-txt) 4%,transparent);border:1px solid color-mix(in srgb,var(--nav-txt) 9%,transparent);display:flex;flex-direction:column;gap:10px;font-size:14px;font-weight:600;transition:background .2s,border-color .2s,transform .2s}
.lg-feat:hover{background:color-mix(in srgb,var(--nav-txt) 8%,transparent);border-color:color-mix(in srgb,var(--nav-txt) 18%,transparent);transform:translateY(-2px)}
.lg-feat svg{width:22px;height:22px;color:color-mix(in srgb,var(--accent) 45%,var(--nav-txt))}
.lg-pied{font-size:13px;color:var(--nav-txt2)}
.lg-d{flex:1;display:flex;align-items:center;justify-content:center;padding:48px 16px;min-width:0}
.lg2 .box{width:min(440px,100%);border:1px solid var(--bord);border-radius:16px;padding:40px;display:flex;flex-direction:column;gap:18px;box-shadow:var(--ombre-f);animation:v2-rise .6s ease both}
.lg2 .box .fld{margin:0}
.lg2 .box .inp{min-height:48px;border-radius:10px;background:var(--fond2);font-size:15px}
.lg2 .box .inp:focus{background:var(--carte)}
.lg-tt h1{margin:0;font-size:26px;font-weight:800;letter-spacing:-.02em}
.lg-tt p{margin:8px 0 0;font-size:14px}
.lg2 .err{margin:0;min-height:0}
.lg2 .err:not(:empty){display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:10px;background:var(--rouge-f);color:color-mix(in srgb,var(--rouge) 80%,var(--txt));font-size:13px;font-weight:500}
.lg-btn{justify-content:center;width:100%;min-height:50px;border-radius:10px;font-size:15px;font-weight:700;gap:10px;box-shadow:0 10px 24px -10px color-mix(in srgb,var(--accent) 60%,transparent);transition:transform .18s,box-shadow .18s,background .18s}
.lg-btn:hover{transform:translateY(-1px)}
.lg-btn svg{width:18px;height:18px}
.lg-note{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:10px;background:var(--fond2);font-size:12px;color:var(--txt3)}
.lg-note svg{width:16px;height:16px;flex:none}
.lg-quit{text-align:center;margin:0}
.lg-quit a{text-decoration:underline;display:inline-flex;align-items:center;min-height:44px}
.lg-mob{display:none;padding:0;color:var(--txt)}
.lg-mob small{color:var(--txt3)}
@media (max-width:900px){.lg-g{display:none}.lg-mob{display:flex}}
@media (max-width:480px){.lg2 .box{padding:28px 20px}}

/* --- Mouvements réduits : aucune animation --- */
@media (prefers-reduced-motion:reduce){
  .content.entree .card,.content.entree .rw,.lg-orb,.lg-pt,.da-pt,.lg2 .box{animation:none}
  .card,.card:hover,.rw,.rw:hover,.lg-feat:hover,.lg-btn:hover{transition:none;transform:none}
}
.dash-plan-hd .ag-leg{margin:0}
.dash-plan-hd .ag-leg-i{min-height:32px;padding:0 12px}
.dash-plan-hd .btn.s{min-height:32px}

/* Réglages → Rapports : formulaire en 3 étapes à gauche, envoi automatique et derniers rapports à droite */
.rap-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,320px);gap:18px;align-items:start;margin-top:14px}
.rap-form{border:1px solid var(--bord);border-radius:var(--r);background:var(--carte);padding:20px 24px}
.rap-h{margin:0 0 4px;font-size:15px;font-weight:700;color:var(--txt);text-transform:none;letter-spacing:0}
.rap-titre{font-size:18px}
.rap-intro{margin:0 0 16px;padding-bottom:16px;border-bottom:1px solid var(--bord2)}
.rap-etape{display:grid;grid-template-columns:28px minmax(0,1fr);gap:14px;padding:16px 0;border-bottom:1px solid var(--bord2)}
.rap-num{width:26px;height:26px;border-radius:50%;background:var(--txt);color:var(--carte);display:grid;place-items:center;font-size:12.5px;font-weight:700;margin-top:1px}
.rap-et{margin:3px 0 12px;font-size:14.5px;font-weight:700}
.rap-seg{margin-bottom:12px}
.rap-dates{max-width:420px}
.rap-dates .fld{margin-bottom:10px}
.rap-per b{font-weight:600}
.rap-dons{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:12px}
.rap-don{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border:1px solid var(--bord);border-radius:10px;background:var(--carte);cursor:pointer;transition:border-color .2s,background-color .2s}
.rap-don:hover{border-color:var(--txt3)}
.rap-don:has(input:checked){border-color:var(--accent);background:var(--accent-f)}
.rap-don:has(input:focus-visible){box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}
.rap-don input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--accent);flex:none}
.rap-don>span{display:flex;flex-direction:column;gap:3px;min-width:0}
.rap-don .badge{align-self:flex-start;margin-top:4px}
.rap-sw{position:relative;display:inline-flex;align-items:center;gap:10px;min-height:44px;cursor:pointer;margin-bottom:8px}
.rap-sw input{position:absolute;opacity:0;width:1px;height:1px}
.rap-sw-i{position:relative;width:40px;height:22px;border-radius:999px;background:var(--bord);flex:none;transition:background-color .2s}
.rap-sw-i::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:var(--blanc);box-shadow:0 1px 2px color-mix(in srgb,var(--nav) 30%,transparent);transition:transform .2s}
.rap-sw input:checked+.rap-sw-i{background:var(--accent)}
.rap-sw input:checked+.rap-sw-i::after{transform:translateX(18px)}
.rap-sw input:focus-visible+.rap-sw-i{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}
.rap-dests{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.rap-dest{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:4px 12px 4px 5px;border:1px solid var(--txt3);border-radius:999px;background:var(--fond2);cursor:pointer;max-width:100%;transition:border-color .2s,opacity .2s}
.rap-dest:hover{border-color:var(--accent)}
.rap-dest>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rap-dest.off{opacity:.55;border-style:dashed;background:none}
.rap-dest.off>span:not(.rap-av){text-decoration:line-through}
.rap-av{width:24px;height:24px;border-radius:50%;background:var(--txt);color:var(--carte);display:grid;place-items:center;font-size:11px;font-weight:700;flex:none}
.rap-dest.off .rap-av{background:var(--txt3)}
.rap-aj{display:flex;gap:8px;align-items:flex-end;max-width:520px;margin-bottom:6px}
.rap-aj .fld{flex:1;margin:0;min-width:0}
.rap-aj .btn{min-height:44px;flex:none}
.rap-aj .inp{min-height:44px}
.rap-sans{margin:0}
.rap-go{padding-top:18px}
.rap-lancer{min-height:44px;padding:10px 22px;font-size:14.5px;font-weight:600}
.rap-ko{color:color-mix(in srgb,var(--rouge) 80%,var(--txt))}
.rap-cote{display:grid;gap:14px}
.rap-bloc{border:1px solid var(--bord);border-radius:var(--r);background:var(--carte);padding:16px 18px}
.rap-bloc .rap-h{margin-bottom:12px}
.rap-auto{display:flex;gap:8px;align-items:flex-start;margin-bottom:8px}
.rap-auto .dot{margin-top:6px;flex:none}
.rap-ligne{color:var(--txt2);margin-top:4px}
.rap-plus{margin:14px 0 0}
.rap-liste{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.rap-li{display:flex;gap:12px;align-items:flex-start;padding:8px 10px;border-radius:10px;color:var(--txt);transition:background-color .2s}
a.rap-li:hover{background:var(--fond2)}
.rap-li.rap-att{opacity:.75}
.rap-li-t{display:flex;flex-direction:column;min-width:0;gap:1px}
.rap-li-t b{font-size:13px}
.rap-pdf{flex:none;width:36px;height:40px;border-radius:6px;display:grid;place-items:center;font-size:10px;font-weight:800;letter-spacing:.03em;color:var(--accent-t);background:var(--accent-f);border:1px solid color-mix(in srgb,var(--accent) 30%,var(--bord))}
.tv-sous{margin:20px 0 6px;font-size:14px;color:var(--txt);text-transform:none;letter-spacing:0;font-weight:700}
@media (prefers-reduced-motion:reduce){.rap-don,.rap-sw-i,.rap-sw-i::after,.rap-dest,.rap-li,.seg-tabs .tab.seg{transition:none}}
@media (max-width:900px){.rap-grid{grid-template-columns:minmax(0,1fr)}}
@media (max-width:560px){.rap-form{padding:16px}.rap-etape{grid-template-columns:minmax(0,1fr);gap:8px}.rap-aj{flex-direction:column;align-items:stretch}.rap-lancer{width:100%;justify-content:center}}
.rap-seg .tab.seg{background:none;cursor:pointer}
.rap-seg .tab.seg.on{background:var(--carte)}
.rap-seg .tab.seg:not(.on){border:0;box-shadow:none;background:none}
.rap-seg .tab.seg:not(.on):hover{background:color-mix(in srgb,var(--txt) 6%,transparent)}

/* Réglages → Mon téléphone (3CX) : application ou navigateur (PWA), choix de chaque technicien */
.tel-modes{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:10px;margin-bottom:12px}
.tel-mode{display:flex;gap:12px;align-items:flex-start;min-height:44px;padding:12px 14px;border:1px solid var(--bord);border-radius:10px;background:var(--carte);cursor:pointer;transition:border-color .2s,background-color .2s}
.tel-mode:hover{border-color:color-mix(in srgb,var(--accent) 55%,var(--bord))}
.tel-mode:has(input:checked){border-color:var(--accent);background:var(--accent-f)}
.tel-mode:has(input:focus-visible){box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}
.tel-mode input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--accent);flex:none}
.tel-mode>span{display:flex;flex-direction:column;gap:2px;min-width:0}
.tel-ko{color:color-mix(in srgb,var(--orange) 85%,var(--txt));margin:0 0 10px}
@media (prefers-reduced-motion:reduce){.tel-mode{transition:none}}
.tel-test{min-height:44px;max-width:100%;white-space:normal;text-align:left}

/* Bulle rouge en bas à droite : messages non lus de la messagerie (sans aperçu) ; rouge = « non lu » */
.chat-bulle{position:fixed;right:20px;bottom:calc(env(safe-area-inset-bottom,0px) + 20px);z-index:46;width:56px;height:56px;border-radius:50%;border:0;display:grid;place-items:center;background:var(--danger);color:var(--blanc);box-shadow:var(--ombre-f);cursor:pointer;transition:transform .2s,background-color .2s}
.chat-bulle svg{width:26px;height:26px}
.chat-bulle:hover{background:var(--danger-d);transform:translateY(-2px)}
.chat-bulle:focus-visible{outline:none;box-shadow:var(--ombre-f),0 0 0 3px var(--carte),0 0 0 6px var(--danger)}
.chat-bulle-n{position:absolute;top:-4px;right:-4px;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:var(--carte);color:color-mix(in srgb,var(--danger) 60%,var(--txt));border:2px solid var(--danger);font-size:11.5px;font-weight:800;line-height:18px;text-align:center}
.chat-bulle.arrive{animation:chat-bulle-arrive .6s ease}
@keyframes chat-bulle-arrive{0%{transform:scale(.6)}50%{transform:scale(1.15)}100%{transform:scale(1)}}
body.avec-bulle .pres-vu{right:90px;max-width:calc(100% - 110px)}
@media (prefers-reduced-motion:reduce){.chat-bulle,.chat-bulle.arrive{transition:none;animation:none}}
@media print{.chat-bulle{display:none}}
@media (max-width:760px){.chat-bulle{z-index:36}}
.mt-go{min-height:44px}
@media (max-width:560px){.mt-go{flex:1 1 140px;justify-content:center}}

/* E-mail non distribué (retour de la boîte noreply) : alerte en tête de page — rouge = échec */
.mail-ko-z{display:grid;gap:8px;margin-bottom:12px}
.mail-ko{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 14px;border:1px solid color-mix(in srgb,var(--rouge) 40%,var(--bord));border-left:4px solid var(--danger);border-radius:10px;background:var(--rouge-f);color:var(--txt)}
.mail-ko b{color:color-mix(in srgb,var(--danger) 70%,var(--txt))}
.mail-ko span{flex:1 1 260px;min-width:0;overflow-wrap:anywhere}
.mail-ko .btn{min-height:44px;flex:none}.av-nr-mail{flex:1 1 100%;min-width:0;margin:0}
.rw-tk{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:0}
.rw-tkn{font-size:12.5px;color:var(--txt2)}
.rw-tk .pastille{flex:none;padding:0 7px;font-size:11px;line-height:16px}

/* Agenda : créneaux fermés aux rendez-vous (avant 9 h, pause 12 h – 14 h) */
.ag-off{position:absolute;left:0;right:0;z-index:0;pointer-events:none;background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--txt) 7%,transparent) 0 6px,transparent 6px 12px),color-mix(in srgb,var(--txt) 4%,transparent)}
.ag .ev{z-index:1}
.ag-fantome.ko{border-style:dashed;border-color:var(--txt3);background:color-mix(in srgb,var(--txt) 8%,transparent);color:var(--txt3);cursor:not-allowed}.av-nr-b{flex:1 1 100%;min-width:0}
.av-nr-b .btn{flex:0 1 auto;min-height:44px;white-space:normal;text-align:center;justify-content:center}
@media (max-width:480px){.av-nr-b .btn{flex:1 1 100%}}
/* bandeau « Appel en cours » affiché en tête de toutes les pages (comme sur le tableau de bord) */
.content>.dash-appel{margin-bottom:14px}

/* Agenda : rendez-vous « toute la journée » en bande au-dessus des heures */
.ag-jr-l{display:flex;align-items:center;justify-content:center;font-size:10.5px;font-weight:700;text-transform:none;letter-spacing:0;padding:0 2px;color:var(--txt3);border-bottom:1px solid var(--bord);background:var(--fond2)}
.ag-jr{display:flex;flex-direction:column;gap:3px;padding:4px;border-left:1px solid var(--bord2);border-bottom:1px solid var(--bord);background:var(--fond2);min-width:0}
.ag-jr-ev{display:flex;flex-direction:column;align-items:flex-start;width:100%;min-width:0;padding:3px 7px;border:0;border-left:3px solid var(--violet);border-radius:6px;background:var(--violet-f);color:color-mix(in srgb,var(--violet) 80%,var(--txt));font:inherit;font-size:11.5px;text-align:left;cursor:pointer;transition:filter .2s}
.ag-jr-ev.t-conge{border-color:var(--txt3);background:var(--carte);color:var(--txt2)}
.ag-jr-ev b,.ag-jr-ev span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ag-jr-ev span{opacity:.8;font-size:10.5px}
.ag-jr-ev:hover{filter:brightness(.97)}
.ag-jr-ev:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.agv-jour{display:flex;gap:10px;align-items:flex-start;min-height:44px;margin:0 0 12px;padding:10px 12px;border:1px solid var(--bord);border-radius:10px;cursor:pointer}
.agv-jour:has(input:checked){border-color:var(--accent);background:var(--accent-f)}
.agv-jour input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--accent);flex:none}
.agv-jour>span{display:flex;flex-direction:column;gap:2px}
.agv-off{opacity:.45}
@media (pointer:coarse){.ag-jr-ev{min-height:44px;justify-content:center}}
@media (prefers-reduced-motion:reduce){.ag-jr-ev{transition:none}}
.agv-jour:has(input:focus-visible){border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}

/* Fiche Remote : journal fusionné avec l'historique du ticket intranet ; état du ticket modifiable */
.jr-hd{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:8px}
.jr-etat{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0;min-width:0;max-width:100%}
.jr-etat .inp{width:auto;max-width:100%;min-height:36px;padding:4px 8px}
.jr-l{padding:6px 0;border-bottom:1px solid var(--bord2)}
.jr-intra{padding-left:10px;border-left:3px solid color-mix(in srgb,var(--accent) 55%,var(--bord))}
.jr-src{display:inline-block;margin-left:4px;padding:0 6px;border-radius:999px;background:var(--accent-f);color:var(--accent-t);font-size:10.5px;font-weight:700}
@media (pointer:coarse){.jr-etat .inp{min-height:44px}}
/* bascule « Remote / Ticket » en tête des fiches */
.seg-tabs.vue-bascule{margin:0;padding:3px}
.vue-bascule .tab.seg{min-height:36px;background:none;cursor:pointer}
.vue-bascule .tab.seg.on{background:var(--carte)}
@media (pointer:coarse){.vue-bascule .tab.seg{min-height:44px}}
/* En-tête des fiches Remote / Ticket : boutons, bascule, étiquettes et état à la même hauteur, mêmes arrondis, même texte */
.hd-fiche{align-items:center;gap:8px}
.hd-fiche>.btn,.hd-fiche>.src,.hd-fiche>.cp-val,.hd-fiche>.badge,.hd-fiche>.pastille,.hd-fiche>.vue-bascule{box-sizing:border-box;height:36px;border-radius:6px;font-size:13px;font-weight:600;vertical-align:middle}
.hd-fiche>.badge,.hd-fiche>.pastille{border-radius:999px}
.hd-fiche>.btn{padding:0 12px}
.hd-fiche>.tk-etoile.grand{min-height:0}
.hd-fiche>.src,.hd-fiche>.badge,.hd-fiche>.pastille{display:inline-flex;align-items:center;padding:0 12px;line-height:1}
.hd-fiche>.src{font-size:11.5px;letter-spacing:.05em;background:var(--fond2);border-color:var(--bord2)}
.hd-fiche>.cp-val{height:auto;min-height:36px;padding:0 2px 0 12px;border:1px solid var(--bord2);background:var(--fond2);color:var(--txt2)}
.hd-fiche>.cp-val .mono,.hd-fiche>.cp-val.mono{font-size:13px}
.hd-fiche>.cp-val .cp{width:30px;height:30px}
.hd-fiche>.vue-bascule{display:inline-flex;align-items:center;gap:2px;padding:3px}
.hd-fiche>.vue-bascule .tab.seg{min-height:0;height:28px;padding:0 12px;border-radius:4px;font-size:13px}
@media (pointer:coarse){
  .hd-fiche>.btn,.hd-fiche>.src,.hd-fiche>.badge,.hd-fiche>.pastille,.hd-fiche>.vue-bascule{height:44px}
  .hd-fiche>.cp-val{min-height:44px}
  .hd-fiche>.vue-bascule .tab.seg{height:38px}
  .hd-fiche>.cp-val .cp{width:38px;height:38px}
}
/* Messagerie sans conversation ouverte : conversations et contacts sur toute la largeur (pas de case vide) */
.chat.sans-fil{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:none}
.chat.sans-fil .chat-liste,.chat.sans-fil .chat-contacts{grid-column:auto;grid-row:auto;max-height:none}
@media (max-width:760px){.chat.sans-fil{grid-template-columns:1fr}}

/* =====================================================================
   COMPATIBILITÉ — écrans existants du CRM Autech Expert (24/10/2026)
   ---------------------------------------------------------------------
   Au-dessus : feuille de style identique à C:\RemoteExpert\site\app.css.
   Ci-dessous : les écrans déjà construits dans crm\resources\views utilisent
   encore d'anciens noms de classe (.button, .card, .table, .stat-card…),
   posés avant la décision de Guillaume du 24/10 au soir. Pour que CHAQUE
   écran existant rende EXACTEMENT comme Remote sans attendre la réécriture
   de chaque vue, ces anciennes classes sont ici habillées avec les mêmes
   variables/valeurs que les classes Remote équivalentes.
   RÈGLE POUR LES DÉVELOPPEURS (voir design/CHARTE-REMOTE.md) : plus aucune
   classe ci-dessous ne doit être utilisée dans du code NEUF — toujours les
   classes Remote d'origine (.btn, .card, .badge .st-xxx, table nu dans un
   .tblw, etc.). Au fur et à mesure qu'un écran est réécrit (tâches
   « Reconstruire à l'identique »), ses anciennes classes sont retirées du
   blade ET de cette section peut être allégée quand plus personne n'en a besoin.
   ===================================================================== */

/* Authentification (resources/views/auth/*, components/guest-layout) */
.auth-page{background:var(--nav);min-height:100vh}
.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;gap:48px;max-width:1100px;margin:auto;padding:32px;flex-wrap:wrap}
.auth-brand{color:var(--nav-txt);max-width:480px}
.auth-brand h1{font-size:clamp(28px,4vw,40px);font-weight:800;letter-spacing:-.02em}
.auth-brand p{color:var(--nav-txt2);font-size:15px;line-height:1.55}
.auth-brand .eyebrow{color:color-mix(in srgb,var(--accent) 55%,var(--nav-txt))}
.auth-card{background:var(--carte);border:1px solid var(--bord);border-radius:16px;box-shadow:var(--ombre-f);padding:32px;max-width:420px;width:100%}
.brand-mark{display:grid;place-items:center;width:52px;height:52px;margin-bottom:18px;border-radius:12px;background:var(--accent);color:var(--blanc);font-weight:800;font-size:22px}
.brand-mark.small{width:40px;height:40px;margin:0;font-size:16px;border-radius:10px}
.eyebrow{margin:0 0 6px;text-transform:uppercase;letter-spacing:.08em;font-size:11px;font-weight:700;color:var(--accent-t)}
.form-stack{display:grid;gap:16px;margin-top:20px}
.form-stack label{display:block;margin-bottom:6px;font-size:12px;font-weight:600;color:var(--txt2)}
.form-stack input[type="email"],.form-stack input[type="password"],.form-stack input[type="search"]{width:100%;min-height:44px;padding:9px 12px;border:1px solid var(--bord);border-radius:6px;color:var(--txt);background:var(--carte)}
.form-stack input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 20%,transparent)}
.checkbox-row{display:flex;align-items:center;gap:8px;min-height:32px;margin:0;font-weight:500;color:var(--txt2)}
.checkbox-row input{width:18px;height:18px;accent-color:var(--accent)}
.field-error{color:var(--danger);margin:6px 0 0;font-size:12.5px}
.text-link{display:inline-block;min-height:44px;padding-top:10px;font-weight:600;color:var(--accent-t);white-space:nowrap}

/* Boutons, cartes, badges, tableaux (toutes les vues) */
.button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:6px;padding:7px 14px;border:1px solid var(--bord);background:var(--carte);color:var(--txt);font-weight:600;cursor:pointer;transition:background-color .2s,border-color .2s}
.button:hover{border-color:var(--txt3)}
.button-primary{background:var(--accent);border-color:var(--accent);color:var(--blanc)}
.button-primary:hover{background:var(--accent-d);border-color:var(--accent-d)}
.button-secondary{background:var(--carte);color:var(--txt);border-color:var(--bord)}
.button.compact,.button.btn.compact{min-height:36px;padding:4px 12px;font-size:12.5px}
.button.danger,a.button.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 45%,var(--bord))}
.button.danger:hover{background:var(--rouge-f)}
.button:disabled{opacity:.45;cursor:not-allowed}

.card{background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);padding:20px;box-shadow:var(--ombre-c)}
.card+.card{margin-top:16px}
/* Cartes posées en grille (rangées de chiffres, colonnes de fiches) : l'écart vient du gap, pas de la marge */
:is(.grid,[style*="display:grid"],[style*="display: grid"])>.card+.card{margin-top:0}

table.table{width:100%;border-collapse:collapse;background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);overflow:hidden}
table.table th,table.table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--bord2)}
table.table th{background:var(--fond2);font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--txt3);font-weight:600}
table.table tr:last-child td{border-bottom:0}
table.table tr:hover td{background:var(--fond2)}

/* Listes « Relations » (distributeurs, clients, groupes, contrats, demandes) :
   chaque ligne prend l'allure d'une ligne Remote (.rw) : carte blanche, bande
   bleue à gauche, même typographie, survol qui soulève. Ligne cliquable via
   tr[data-href] (charte.js). Exigence Guillaume du 25/10. */
.rw-tab-defil{overflow-x:auto;padding:4px 4px 24px;margin:0 -4px}
table.table.rw-tab{border-collapse:separate;border-spacing:0 8px;margin-top:-8px;background:none;border:0;border-radius:0;overflow:visible}
table.table.rw-tab th{background:none;border:0;padding:8px 14px 0;font-size:12px;font-weight:700;letter-spacing:.08em;color:var(--txt3);white-space:nowrap}
table.table.rw-tab th:first-child{padding-left:20px}
table.table.rw-tab td{background:var(--carte);border:0;border-top:1px solid var(--bord);border-bottom:1px solid var(--bord);padding:12px 14px;font-size:13px;font-weight:500;color:var(--txt2);vertical-align:middle;white-space:nowrap;transition:border-color .2s ease}
table.table.rw-tab tr:last-child td{border-bottom:1px solid var(--bord)}
table.table.rw-tab td:first-child{border-left:1px solid var(--bord);border-radius:12px 0 0 12px;box-shadow:inset 6px 0 0 var(--bleu);padding-left:20px;font-size:14.5px;font-weight:700;color:var(--txt)}
table.table.rw-tab td:last-child{border-right:1px solid var(--bord);border-radius:0 12px 12px 0}
table.table.rw-tab td:only-child{background:none;border-radius:14px;box-shadow:none;font-size:13px;font-weight:400;color:var(--txt3);text-align:center;padding:48px 16px;border-style:dashed}
table.table.rw-tab td .muted.small{font-size:12px;color:var(--txt3);font-weight:400;margin-top:3px}
table.table.rw-tab tbody tr{box-shadow:var(--ombre-c);border-radius:12px;transition:transform .2s ease,box-shadow .2s ease}
table.table.rw-tab tbody tr:has(td:only-child){box-shadow:none}
table.table.rw-tab tbody tr:hover td{background:var(--carte)}
table.table.rw-tab tbody tr:has(td:only-child):hover td{background:none}
table.table.rw-tab tbody tr[data-href]{cursor:pointer}
table.table.rw-tab tbody tr[data-href]:hover td{border-color:color-mix(in srgb,var(--accent) 35%,var(--bord))}
table.table.rw-tab tbody tr[data-href]:hover{transform:translateY(-2px);box-shadow:var(--ombre-h)}
table.table.rw-tab tbody tr[data-href]:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}
table.table.rw-tab tbody tr[data-href]:focus-visible td{border-color:var(--accent)}
table.table.rw-tab td:last-child .text-link::after{content:"\2192";display:inline-block;margin-left:6px;opacity:0;transform:translateX(-4px);transition:opacity .2s,transform .2s}
table.table.rw-tab tr[data-href]:is(:hover,:focus-visible) td:last-child .text-link::after{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){table.table.rw-tab td,table.table.rw-tab td .text-link::after,table.table.rw-tab tbody tr,table.table.rw-tab tbody tr:hover{transition:none;transform:none}}

.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:999px;font-size:11.5px;font-weight:600;white-space:nowrap}
.badge-success{background:var(--vert-f);color:color-mix(in srgb,var(--vert) 80%,var(--txt))}
.badge-danger{background:var(--rouge-f);color:color-mix(in srgb,var(--rouge) 80%,var(--txt))}
.badge-info{background:var(--bleu-f);color:color-mix(in srgb,var(--bleu) 85%,var(--txt))}
.badge-warning{background:var(--orange-f);color:color-mix(in srgb,var(--orange) 85%,var(--txt))}
.badge-muted{background:var(--fond2);color:var(--txt3);box-shadow:inset 0 0 0 1px var(--bord)}
.badge-jaune{background:color-mix(in srgb,var(--jaune) 18%,transparent);color:var(--jaune)}

.alert{border-radius:6px;padding:10px 14px;font-size:13px;margin-bottom:12px;background:var(--orange-f);color:color-mix(in srgb,var(--orange) 75%,var(--txt));border-left:4px solid var(--orange)}
.alert-success{background:var(--vert-f);color:color-mix(in srgb,var(--vert) 75%,var(--txt));border-left-color:var(--vert)}
.alert-info{background:var(--bleu-f);color:var(--bleu);border-left-color:var(--bleu)}

/* Mise en page des contenus (page-heading, stats, formulaires, assistants) */
.page-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:24px;flex-wrap:wrap}
.page-heading h1{font-size:22px}
.empty-state{max-width:760px;padding:40px;text-align:center;border:1px dashed var(--bord);border-radius:var(--r);background:var(--carte)}
.empty-icon{display:grid;place-items:center;width:48px;height:48px;margin:0 auto 16px;border-radius:50%;background:var(--vert-f);color:color-mix(in srgb,var(--vert) 80%,var(--txt));font-size:1.3rem;font-weight:800}
.actions-row{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px}
.search-form{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.search-form input[type="search"]{min-width:240px;margin:0}
.fiche-liste{display:grid;grid-template-columns:150px 1fr;gap:8px 14px;margin:0;font-size:13.5px}
.fiche-liste dt{font-weight:600;color:var(--txt3)}
.fiche-liste dd{margin:0}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-bottom:20px}
.stat-card{background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);padding:14px 18px;box-shadow:var(--ombre-c)}
.stat-card .stat-value{display:block;font-size:26px;font-weight:800;color:var(--txt)}
.stat-card .stat-label{color:var(--txt3);font-size:12px}
.wizard-steps{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap}
.wizard-steps .step-pill{padding:5px 12px;border-radius:999px;background:var(--fond2);color:var(--txt3);font-weight:600;font-size:12.5px}
.wizard-steps .step-pill.is-current{background:var(--accent);color:var(--blanc)}
.wizard-step h2{font-size:17px}
.wizard-nav{display:flex;justify-content:space-between;margin-top:8px}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px 18px}
.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--bord);border:1px solid var(--bord);border-radius:var(--r);overflow:hidden}
.calendar-grid .calendar-head{background:var(--fond2);padding:8px;text-align:center;font-size:11.5px;font-weight:600;text-transform:uppercase;color:var(--txt3)}
.calendar-grid .calendar-cell{background:var(--carte);min-height:100px;padding:8px}
.calendar-grid .calendar-cell.is-outside{background:var(--fond2);color:var(--txt3)}
.calendar-grid .calendar-cell .day-number{font-weight:600;font-size:12.5px;margin-bottom:6px}
.calendar-event{display:block;margin-bottom:4px;padding:3px 6px;border-radius:4px;background:var(--rouge-f);color:var(--danger);font-size:11.5px;font-weight:600;text-decoration:none}
.week-block{margin-bottom:18px}
.week-block h3{font-size:14px;margin-bottom:8px;color:var(--txt)}
.offline-section{margin-top:24px}
.offline-cards,.liaisons-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px}
.offline-card,.liaison-card{background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);padding:16px;box-shadow:var(--ombre-c)}
.offline-card p{margin:5px 0;color:var(--txt2)}
.pwa-status{flex:none;padding:6px 12px;border-radius:999px;background:var(--vert-f);color:color-mix(in srgb,var(--vert) 80%,var(--txt));font-size:11.5px;font-weight:700}
.pwa-status.offline{background:var(--rouge-f);color:color-mix(in srgb,var(--rouge) 80%,var(--txt))}
.pwa-status.pending{background:var(--orange-f);color:color-mix(in srgb,var(--orange) 85%,var(--txt))}
.search-resultats{position:absolute;top:calc(100% + 6px);left:0;max-width:520px;width:100%;background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);box-shadow:var(--ombre-f);list-style:none;margin:0;padding:6px;z-index:50}
.search-resultats li a{display:block;padding:8px 10px;border-radius:6px;color:var(--txt);text-decoration:none}
.search-resultats li a:hover{background:var(--fond2)}
/* recherche du haut : aperçu de la correspondance sous le libellé, mot cherché surligné (27/10/2026) */
.search-resultats li a .rg-t{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.search-resultats li a .rg-ap{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;margin-top:2px;font-size:12px;line-height:1.4;color:var(--txt3);overflow:hidden;overflow-wrap:anywhere}
.rg-res.search-resultats{width:max(100%,min(520px,calc(100vw - 32px)));max-width:none}
.search-resultats mark{background:var(--accent-f);color:var(--accent-t);font-weight:700;border-radius:4px;padding:0 1px}
.rg-res.search-resultats li a{min-height:44px;transition:background .15s}

@media (max-width:760px){
  .auth-shell{padding:20px 16px}
  .auth-card{padding:24px 20px}
  .page-heading{flex-direction:column}
  .offline-cards,.liaisons-grid{grid-template-columns:1fr}
  .stat-grid{grid-template-columns:1fr 1fr}
}

/* Portail Salons : grille calendrier desktop / agenda vertical mobile (écart B de la spec). */
.calendrier-table{width:100%;border-collapse:collapse}
.calendrier-table th,.calendrier-table td{border:1px solid var(--bord);padding:6px;vertical-align:top}
.cal-agenda-mobile{display:none}
@media (max-width:760px){
  .cal-grille{display:none}
  .cal-agenda-mobile{display:block}
}
/* Planning équipe (écart B) : tableau timeline tech-co x jours. */
.planning-table{width:100%;border-collapse:collapse;font-size:12.5px}
.planning-table th,.planning-table td{border:1px solid var(--bord);padding:4px 6px;text-align:center;white-space:nowrap}
.planning-table td.conflit{background:var(--rouge-f);font-weight:700;color:var(--rouge)}
/* Logistique : mini Gantt matériel 12 semaines (écart F). */
.gantt-ligne{display:flex;align-items:center;gap:6px;margin-bottom:4px}
.gantt-barre{height:16px;border-radius:4px;background:var(--accent-f)}
.gantt-barre.surreservation{background:var(--rouge-f);outline:1px solid var(--rouge)}

/* =====================================================================
   SYSTÈME DE FORMULAIRES UNIQUE + BARRES DE FILTRES HOMOGÈNES (25/10/2026)
   ---------------------------------------------------------------------
   Exigence de Guillaume : TOUT le site doit avoir des champs identiques
   (hauteur, bordure, police, libellé au-dessus), que la vue utilise les
   classes Remote d'origine (.fld/.inp) ou les anciennes classes posées
   avant le 24/10 (.form-grid, .form-stack, .search-form, label englobant
   directement un champ). Portée volontairement large (tout <form> du
   site) pour que les ~170 écrans en profitent sans réécrire chaque vue.
   Voir design/CHARTE-REMOTE.md §7 pour la règle à suivre dans le code neuf.
   ===================================================================== */

/* 1. Tous les champs natifs ont la même apparence (~40px), même sans .inp.
      Les contrôles spéciaux gardent leur rendu adapté plus bas. */
:is(input,select,textarea):not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="submit"]):not([type="button"]){
  box-sizing:border-box;min-height:40px;width:100%;border:1px solid var(--bord);background:var(--carte);color:var(--txt);
  border-radius:6px;padding:8px 12px;font:inherit;font-size:14px;line-height:1.3;
}
:is(input,select,textarea):not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="submit"]):not([type="button"]):focus{
  outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 20%,transparent)
}
:is(input,select,textarea):disabled{opacity:.6;cursor:not-allowed;background:var(--fond2)}
/* Lecture seule (ex. n° de série et type figés d'un appareil, 27/10/2026) : visiblement non modifiable. */
:is(input,textarea)[readonly]{background:var(--fond2);color:var(--txt2);cursor:default}
:is(input,textarea)[readonly]:focus{border-color:var(--bord);box-shadow:none}
textarea{min-height:88px;height:auto;resize:vertical;padding-top:9px}

/* Select : largeur pleine, flèche personnalisée (jamais la flèche native) */
select{
  appearance:none;-webkit-appearance:none;-moz-appearance:none;cursor:pointer;padding-right:34px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%235f656c' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 10px center;background-size:18px;
}
:root[data-theme="dark"] select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%239aa1a9' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E")}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%239aa1a9' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E")}}

/* Champ fichier : bouton à la charte + nom du fichier natif à côté (pas de bouton gris natif) */
form input[type="file"]{
  width:100%;min-height:40px;border:1px dashed var(--bord);background:var(--fond2);color:var(--txt2);
  padding:5px 10px 5px 5px;cursor:pointer;font-size:13px;display:flex;align-items:center;
}
form input[type="file"]::file-selector-button{
  margin-right:12px;border:0;border-radius:6px;background:var(--accent);color:var(--blanc);
  padding:8px 14px;font:inherit;font-weight:600;font-size:13px;cursor:pointer;transition:background-color .15s;
}
form input[type="file"]::file-selector-button:hover{background:var(--accent-d)}
form input[type="date"],form input[type="datetime-local"],form input[type="time"],form input[type="month"]{cursor:pointer}

/* 2. Libellé TOUJOURS au-dessus du champ, quelle que soit la structure :
      label qui englobe directement le champ, ou label + champ séparés.
      Bloc simple (pas flex) : plus robuste aux espaces/retours à la ligne
      du HTML source que flex-direction:column (évite un retour à la ligne
      parasite entre le texte du libellé et le marqueur obligatoire « * »). */
form label:has(> input):not(:has(> input[type="checkbox"])):not(:has(> input[type="radio"])),
form label:has(> select),
form label:has(> textarea){
  display:block;margin:0;
  font-size:12px;font-weight:600;color:var(--txt2);text-transform:none;letter-spacing:0;cursor:default;
}
form label:has(> input):not(:has(> input[type="checkbox"])):not(:has(> input[type="radio"])) > input,
form label:has(> select) > select,
form label:has(> textarea) > textarea{
  display:block;width:100%;margin-top:6px;
}
.form-grid label,.form-stack label,.fld>label,.fld label:first-child{
  display:block;margin-bottom:6px;font-size:12px;font-weight:600;color:var(--txt2);text-transform:none;letter-spacing:0;
}

/* 3. Grille de formulaire responsive : 2 à 4 colonnes alignées, pleine largeur sur mobile */
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px 20px;align-items:start}
.form-grid.g2{grid-template-columns:repeat(2,1fr)}
.form-grid.g3{grid-template-columns:repeat(3,1fr)}
.form-grid .pleine,.form-grid .col-pleine,.form-grid>.form-actions{grid-column:1/-1}
@media (max-width:760px){.form-grid,.form-grid.g2,.form-grid.g3{grid-template-columns:1fr}}

/* 4. Zone d'actions : Annuler (secondaire) + Enregistrer (primaire), toujours en bas à droite */
.form-actions{display:flex;justify-content:flex-end;align-items:center;gap:10px;margin-top:6px;padding-top:16px;border-top:1px solid var(--bord2)}
.form-stack>.form-actions{margin-top:2px}
@media (max-width:560px){.form-actions{flex-direction:column-reverse;align-items:stretch}.form-actions .btn,.form-actions .button{justify-content:center}}

/* 5. Cases à cocher et radios stylées (jamais la case brute du navigateur) */
form input[type="checkbox"],form input[type="radio"]{width:18px;height:18px;accent-color:var(--accent);flex:none;margin:0;min-height:0}
form label:has(>input[type="checkbox"]),form label:has(>input[type="radio"]){
  display:inline-flex;align-items:center;gap:8px;font-weight:500;color:var(--txt);text-transform:none;letter-spacing:0;cursor:pointer;min-height:32px;
}

/* 6. Champ obligatoire marqué proprement + message d'erreur sous le champ, en rouge charte */
.req{color:var(--danger);margin-left:3px;font-weight:700}
form .err,form .field-error,form small.erreur,form .invalid-feedback{display:block;color:var(--danger);font-size:12.5px;margin-top:4px;min-height:0}
form .is-invalid,form input.is-invalid,form select.is-invalid,form textarea.is-invalid{border-color:var(--danger)}

/* 7. Barre standard. .search-form/.rw-bar restent des alias de transition ;
      le code neuf passe par <x-filtres-barre> et la classe .filtres-barre. */
:is(.filtres-barre,.search-form,.rw-bar){display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 12px;margin:0 0 14px}
:is(.filtres-barre,.search-form,.rw-bar)>:is(input,select){width:auto;flex:1 1 180px;min-width:150px;margin:0}
:is(.filtres-barre,.search-form,.rw-bar)>:is(input[type="search"],input[type="text"]){flex:2 1 240px}
:is(.filtres-barre,.search-form,.rw-bar)>input[type="date"]{flex:1 1 160px}
:is(.filtres-barre,.search-form,.rw-bar)>:is(button,.btn,.button,a.btn,a.button){flex:none;margin:0;min-height:40px}
:is(.filtres-barre,.search-form,.rw-bar)>.fld{flex:1 1 180px;margin:0}
@media (max-width:760px){
  :is(.filtres-barre,.search-form,.rw-bar){align-items:stretch}
  :is(.filtres-barre,.search-form,.rw-bar)>:is(input,select,button,.btn,.button,a.btn,a.button,.fld){flex:1 1 100%;width:100%}
}
@media (pointer:coarse){:is(.filtres-barre,.search-form,.rw-bar)>:is(input,select,button,.btn,.button,a.btn,a.button){min-height:44px}}
/* Rangée d'actions d'une liste : recherche + boutons alignés, même hauteur */
.actions-row{align-items:center}
.actions-row>:is(.filtres-barre,.search-form){flex:1 1 440px;min-width:0;align-items:center;margin:0}
/* Toutes les barres de liste, dans .actions-row ou seules (rw-bar Remote/Salons, filtres Tech-co,
   Utilisateurs…) : champs et boutons alignés à 44 px. Le sélecteur « lignes par page » (.pager) garde son style. */
:is(.filtres-barre,.search-form,.rw-bar):not(.pager *){align-items:center}
:is(.filtres-barre,.search-form,.rw-bar):not(.pager *)>:is(input,select):not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
.actions-row>:is(input,select):not([type="checkbox"]):not([type="radio"]):not([type="hidden"]){min-height:44px;height:44px}
:is(.filtres-barre,.search-form,.rw-bar):not(.pager *)>:is(button,.btn,.button,a.btn,a.button):not(.s,.compact),
.actions-row>:is(.btn,.button,a.btn,a.button):not(.s,.compact),
.actions-row>.colonnes-vue>.button{min-height:44px;height:44px;padding:0 16px;margin:0;font-weight:600;flex:none;justify-content:center}
@media (max-width:760px){
  :is(.filtres-barre,.search-form,.rw-bar):not(.pager *)>:is(button,.btn,.button,a.btn,a.button):not(.s,.compact){flex:1 1 100%}
  .actions-row>:is(.btn,.button,a.btn,a.button):not(.s,.compact),.actions-row>.colonnes-vue{flex:1 1 auto}
  .actions-row>.colonnes-vue>.button{width:100%}
}

/* 8. États vides harmonisés */
.empty-state h3{margin-top:0}
.empty-state p{color:var(--txt3)}

/* =====================================================================
   MENU D'ACTIONS DE LIGNE (tableaux) — 25/10/2026
   ---------------------------------------------------------------------
   Exigence de Guillaume : plus jamais une pile de boutons dans une cellule
   « Actions » (ex. Administration > Utilisateurs). Un seul déclencheur
   compact par ligne (« Actions ▾ ») ouvre un menu déroulant positionné en
   bas de tableau (bascule automatique vers le haut si pas de place en bas,
   voir public/js/charte.js). Composant : resources/views/components/row-actions.blade.php
   ===================================================================== */
.row-actions{position:relative;display:inline-block;text-align:left}
.row-actions>.btn{min-height:32px;padding:5px 10px;font-size:12.5px}
.row-actions-menu{position:absolute;right:0;top:calc(100% + 4px);min-width:240px;max-width:320px;
  background:var(--carte);border:1px solid var(--bord);border-radius:10px;box-shadow:var(--ombre-f);
  padding:6px;z-index:40;display:none;}
.row-actions.open .row-actions-menu{display:block}
.row-actions.ouvre-haut .row-actions-menu{top:auto;bottom:calc(100% + 4px)}
.row-actions-menu a,.row-actions-menu button,.row-actions-menu form>button{
  display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:9px 10px;border-radius:6px;
  border:0;background:none;color:var(--txt);font:inherit;font-size:13px;cursor:pointer;min-height:38px;box-sizing:border-box;}
.row-actions-menu form{margin:0}
.row-actions-menu a:hover,.row-actions-menu button:hover{background:var(--fond2)}
.row-actions-menu a:focus-visible,.row-actions-menu button:focus-visible{outline:none;background:var(--accent-f);box-shadow:inset 0 0 0 2px var(--accent)}
.row-actions-menu .sep{border:0;border-top:1px solid var(--bord2);margin:6px 2px}
.row-actions-menu .danger,.row-actions-menu .danger:hover{color:var(--danger)}
.row-actions-menu .danger:hover{background:var(--rouge-f)}
.row-actions-menu .ic{width:16px;height:16px;flex:none;fill:currentColor}
@media (pointer:coarse){.row-actions>.btn{min-height:40px}.row-actions-menu a,.row-actions-menu button,.row-actions-menu form>button{min-height:44px}}

/* Avatar avec initiales (remplace les pastilles de couleur vides) */
.av-init{width:28px;height:28px;border-radius:50%;display:inline-grid;place-items:center;font-weight:700;font-size:11.5px;color:#fff;flex:none;line-height:1}

/* Notifications (e-mail / SMS) : pastilles lisibles actif/inactif */
.notif-mini{display:inline-flex;gap:4px;flex-wrap:wrap;vertical-align:middle}
.notif-mini .nm{height:22px;padding:0 8px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;white-space:nowrap;background:var(--fond2);color:var(--txt3);box-shadow:inset 0 0 0 1px var(--bord)}
.notif-mini .nm.on{background:var(--vert-f);color:color-mix(in srgb,var(--vert) 80%,var(--txt));box-shadow:none}

/* =====================================================================
   MENU LATÉRAL — RUBRIQUES EN ACCORDÉON AU SURVOL (25/10/2026, version finale)
   ---------------------------------------------------------------------
   Exigence de Guillaume (remplace les versions précédentes) : chaque
   rubrique principale tient sur une seule ligne ; ses sous-rubriques se
   déplient EN DESSOUS au survol (~150 ms, animation douce via grid-rows),
   se replient à la sortie sauf si elles contiennent la page active
   (classe .actif, restent dépliées). Clic sur la rubrique = sa page
   d'accueil. Voir public/js/charte.js ([data-act="nav-groupe"]).
   ===================================================================== */
.nav a .ic{font-size:15px;line-height:1;flex:none}
/* Rubriques "Bientôt" (module pas encore construit pour ce rôle) : même
   ligne/hauteur/espacement que les liens actifs du menu, badge aligné à droite. */
.nav-bientot{display:flex;align-items:center;gap:8px;padding:9px 10px;margin-bottom:2px;color:var(--nav-txt2);font-size:inherit;cursor:default}
.nav-bientot .badge{margin-left:auto;flex:none}
.nav-groupe{margin-bottom:2px}
.nav-groupe>.nav-haut{margin-bottom:0}
.nav-groupe>.nav-haut .car{margin-left:auto;transition:transform .18s;font-size:15px;opacity:.75}
.nav-groupe.open>.nav-haut .car{transform:rotate(90deg)}
.nav-sous{display:grid;grid-template-rows:0fr;transition:grid-template-rows .18s ease;margin-left:6px}
.nav-sous>div{overflow:hidden;min-height:0}
.nav-groupe.open .nav-sous,.nav-groupe:focus-within .nav-sous,.nav-groupe.actif .nav-sous{grid-template-rows:1fr}
.nav-sous a{padding:7px 10px 7px 16px;font-size:13px;color:var(--nav-txt2);margin-bottom:1px}
.nav-sous a:hover{color:var(--nav-txt)}
.nav-sous svg{width:15px;height:15px}
@media (pointer:coarse){.nav-sous a{min-height:40px}}

/* =====================================================================
   « VOIR LE CRM EN TANT QUE » (ADMIN) — 25/10/2026
   ---------------------------------------------------------------------
   Bandeau orange permanent pendant une vue simulée (.bandeau-vue-simulee,
   réutilise .alert) + menu déroulant à côté de l'avatar (.voir-comme-menu,
   même structure que .row-actions). Composants :
   resources/views/components/voir-comme-{bandeau,menu}.blade.php,
   JS : public/js/voir-comme.js.
   ===================================================================== */
.bandeau-vue-simulee{display:flex;align-items:center;justify-content:space-between;gap:12px;
  border-radius:0;margin:0;padding:10px 20px;position:sticky;top:0;z-index:50;border-left:0;
  border-bottom:3px solid var(--orange)}
.bandeau-vue-simulee form{margin:0}
.bandeau-vue-simulee .badge{margin-left:8px}

.voir-comme-menu{position:relative;display:inline-block;text-align:left}
.voir-comme-menu>button svg{width:15px;height:15px;flex:none}
.voir-comme-panel{position:absolute;right:0;top:calc(100% + 4px);width:320px;max-height:70vh;overflow:auto;
  background:var(--carte);border:1px solid var(--bord);border-radius:10px;box-shadow:var(--ombre-f);
  padding:10px;z-index:60;display:none}
.voir-comme-menu.open .voir-comme-panel{display:block}
.voir-comme-titre{margin:2px 2px 8px;font-weight:700;font-size:13px}
.voir-comme-sous-titre{margin:12px 2px 6px;font-size:11.5px;font-weight:600;color:var(--txt3);text-transform:uppercase;letter-spacing:.03em}
.voir-comme-panel form{margin:0}
.voir-comme-item{display:block;width:100%;text-align:left;padding:8px 10px;border-radius:6px;border:0;
  background:none;color:var(--txt);font:inherit;font-size:13px;cursor:pointer;min-height:36px;box-sizing:border-box}
.voir-comme-item:hover{background:var(--fond2)}
.voir-comme-item:focus-visible{outline:none;background:var(--accent-f);box-shadow:inset 0 0 0 2px var(--accent)}
.voir-comme-item.actif{font-weight:700;color:var(--accent)}
.voir-comme-item .muted{font-weight:400;color:var(--txt3)}
.voir-comme-panel .sep{border:0;border-top:1px solid var(--bord2);margin:8px 2px}
.voir-comme-recherche{width:100%;margin-bottom:4px;min-height:34px;font-size:13px}
.voir-comme-liste{max-height:160px;overflow:auto;margin-bottom:4px}
.voir-comme-vide{margin:4px 2px;font-size:12.5px;color:var(--txt3)}
.voir-comme-ecriture{padding:6px 2px 2px}
.voir-comme-ecriture label{display:flex;align-items:center;gap:8px;font-size:13px;cursor:pointer}
@media (pointer:coarse){.voir-comme-item{min-height:44px}}

/* Fiche appareil (ancien CRM) : accordéons « Gestion de l'appareil » */
details.gestion-app>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px}
details.gestion-app>summary::-webkit-details-marker{display:none}
details.gestion-app>summary h3{margin:0}
details.gestion-app>summary::after{content:"▾";color:var(--txt3);transition:transform .2s}
details.gestion-app[open]>summary::after{transform:rotate(180deg)}
.hd>form{display:contents}
/* Utilisateurs (ancien CRM) */
.tbl-utilisateurs .role-form{margin:0}
.tbl-utilisateurs .role-form select.inp{min-width:250px;max-width:280px;height:36px;padding:4px 8px;font-size:13px}
.tbl-utilisateurs td:first-child{width:36px}
@media (pointer:coarse){.tbl-utilisateurs .role-form select.inp{height:44px}}details.gestion-app{padding-top:8px;padding-bottom:8px}
details.gestion-app[open]{padding-bottom:18px}

/* Clients (ancien CRM) : fiche en 2 colonnes qui ne déborde pas sur mobile */
.cli-fiche>.grid,.cli-fiche .card{min-width:0}
.cli-fiche td.mono .cp-val{white-space:nowrap}
.cli-fiche .list-item>.src{flex:none}
@media (max-width:560px){
  .cli-fiche .list-item{flex-wrap:wrap;row-gap:4px}
  .cli-fiche .list-item>div{order:3;flex:1 1 100%!important}
}
/* Mes comptes (3CX, messagerie) */
.mc-page{max-width:820px}
.mc-form{max-width:520px;margin-top:12px}
.mc-court{max-width:160px}
.mc-choix{border:0;padding:0;margin:0;display:grid;gap:6px}
.mc-choix legend{font-weight:600;margin-bottom:4px}
.mc-choix label{display:flex;align-items:center;gap:8px;min-height:32px}
.mc-etat{margin:4px 0 12px}
.mc-actions{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:6px}
.mc-actions form{margin:0}
.mc-actions .btn{min-height:40px}
.mc-avance{border:1px solid var(--bord2);border-radius:var(--r);padding:8px 12px;background:var(--fond2)}
.mc-avance summary{cursor:pointer;font-weight:600;color:var(--txt2)}
.mc-grille{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin-top:8px}
@media (pointer:coarse){.mc-actions .btn,.mc-choix label{min-height:44px}}
/* Accueil Direction commerce */
.dir-kpis{margin-bottom:16px}
.dir-kpis>.card,.dir-grille .card{margin-top:0}
.dir-types .hbar .lb.ph-ligne{width:190px;max-width:45%;flex:none}
.dir-kpis>a.kpi2{text-decoration:none;transition:border-color .2s,transform .2s}
.dir-kpis>a.kpi2:hover{border-color:var(--accent);transform:translateY(-1px)}
.dir-kpis .k-ic svg{width:15px;height:15px;fill:currentColor}
.dir-tend{font-weight:700}
.dir-hausse{color:color-mix(in srgb,var(--vert) 80%,var(--txt))}
.dir-baisse{color:color-mix(in srgb,var(--orange) 85%,var(--txt))}
.dir-stable{color:var(--txt3)}
.dir-jour{margin:12px 0 2px;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--txt3)}
.dir-jour:first-of-type{margin-top:4px}
.dir-grille a.list-item{color:inherit;text-decoration:none}
.dir-rang{width:26px;height:26px;flex:none;display:grid;place-items:center;border-radius:999px;background:var(--fond2);border:1px solid var(--bord);font-size:12px;font-weight:700;color:var(--txt2)}
.dir-types{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:0 28px}
.dir-tech{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-top:16px;padding:10px 14px;border:1px solid var(--bord2);border-radius:var(--r);background:var(--carte)}
@media (max-width:760px){.dir-types{grid-template-columns:1fr}.dir-grille .list-item{flex-wrap:wrap}}
/* Zéro défilement horizontal : aucune fiche ni liste ne doit obliger à faire défiler de gauche à droite.
   Textes longs tronqués (…) avec le texte complet au survol (title, posé aussi par js/charte.js),
   colonnes regroupées dans les vues. Le défilement reste un dernier recours sous 760 px. */
.trunc{display:block;max-width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cell-min{display:flex;flex-direction:column;gap:2px;min-width:0;max-width:260px}
.cell-min>.trunc{max-width:100%}
.trunc-cp{display:flex;align-items:center;min-width:0;max-width:100%;white-space:nowrap}
.trunc-cp>.trunc{flex:0 1 auto}
.th-duo{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
/* Cellules des tableaux en cartes : largeur plafonnée + points de suspension (sauf cellules à menu déroulant) */
:is(table.table.rw-tab,.tk-tbl) td:not(:has(.row-actions,select,.colonnes-vue,form)){max-width:260px;overflow:hidden;text-overflow:ellipsis}
.tk-tbl td{overflow-wrap:anywhere}
.tk-tbl .app-opts{max-width:240px}
.tbl-utilisateurs .role-form select.inp.sel-role{min-width:0;width:190px;max-width:190px;text-overflow:ellipsis}
@media (max-width:1440px){
  :is(table.table.rw-tab,.tk-tbl) td:not(:has(.row-actions,select,.colonnes-vue,form)){max-width:200px}
  .tk-tbl th,.tk-tbl td,table.table.rw-tab th,table.table.rw-tab td{padding-left:10px;padding-right:10px}
  .tk-tbl .app-opts{max-width:200px}
}
.traiter-pop{position:relative}
.traiter-pop>summary{list-style:none;cursor:pointer}
.traiter-pop>summary::-webkit-details-marker{display:none}
.traiter-pop[open]>form{margin-top:8px;width:220px;padding:12px;background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);box-shadow:var(--ombre-f)}
/* Plannings en grille : largeur fixe répartie, noms tronqués (survol = nom complet) */
.planning-fixe{table-layout:fixed}
.planning-fixe .pl-nom{width:150px}
.planning-fixe .pl-total{width:48px}
.planning-fixe th,.planning-fixe td{padding:4px 2px;overflow:hidden;text-overflow:ellipsis}
.planning-techco{table-layout:fixed;width:100%}
.planning-techco th:first-child{width:96px}
.planning-techco td,.planning-techco th{overflow:hidden;min-width:0}
.planning-techco .badge{max-width:100%;overflow:hidden}
/* Formulaires ouverts dans une cellule de tableau : une seule colonne à la largeur de la cellule */
td .form-grid{grid-template-columns:minmax(0,1fr)}
td .form-grid :is(input:not([type="checkbox"]):not([type="radio"]),select,textarea,button){width:100%;min-width:0}
/* Grilles de fiche : une colonne ne peut pas pousser la page au-delà de l'écran */
.grid>*{min-width:0}

/* Réglages : connexions et intégrations */
.cnx-grille{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
.cnx-carte{display:flex;flex-direction:column;gap:8px;color:var(--txt);text-decoration:none;min-width:0;cursor:pointer}
.cnx-carte:focus-visible{outline:none;box-shadow:0 0 0 2px var(--accent),0 0 0 5px color-mix(in srgb,var(--accent) 25%,transparent)}
.cnx-hd{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;min-width:0}
.cnx-nom{font-weight:700;min-width:0;overflow-wrap:anywhere}
.cnx-hd .badge{flex:none;white-space:nowrap}
.cnx-detail{color:var(--txt2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cnx-lien{margin-top:auto;color:var(--accent-t);font-weight:600}
.cnx-carte:hover .cnx-lien{text-decoration:underline}
.cnx-actif{display:flex;align-items:center;gap:8px;font-weight:600}
.cnx-secret{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cnx-coupe{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.tbl-compact th,.tbl-compact td{padding-left:8px;padding-right:8px}
.tbl-compact .app-opts{max-width:180px}
/* Mobile (< 760 px) : les tableaux de liste s'empilent en cartes au lieu de défiler ;
   chaque valeur est précédée du titre de sa colonne (data-label posé par js/charte.js).
   Les en-têtes restent visibles en pastilles pour garder le tri. Plannings et agenda non concernés. */
@media (max-width:760px){
  .tblw:has(> table.tbl-empilable),.rw-tab-defil:has(> table.tbl-empilable),.tk-tblw:has(> table.tbl-empilable){overflow-x:visible}
  table.tbl-empilable,table.tbl-empilable tbody{display:block;width:100%}
  table.tbl-empilable thead,table.tbl-empilable thead tr{display:flex;flex-wrap:wrap;gap:4px 10px;width:100%}
  table.tbl-empilable thead th{display:block;padding:2px 0 !important;border:0}
  table.tbl-empilable thead th:empty,table.tbl-empilable thead th:has(> .sr-only:only-child){display:none}
  table.tbl-empilable tbody tr{display:flex;flex-direction:column;width:100%;margin:0 0 10px;padding:8px 12px;border:1px solid var(--bord);border-radius:12px;background:var(--carte);box-shadow:var(--ombre-c)}
  table.tbl-empilable tbody td{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px;width:100%;max-width:none !important;min-width:0;padding:6px 0 !important;border:0 !important;border-radius:0 !important;box-shadow:none !important;background:none !important;white-space:normal;text-align:left;overflow:visible}
  table.tbl-empilable tbody td+td{border-top:1px solid var(--bord2) !important}
  table.tbl-empilable tbody td[data-label]::before{content:attr(data-label);flex:0 0 100%;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--txt3)}
  table.tbl-empilable tbody td:empty{display:none}
  table.tbl-empilable tbody td:only-child{display:block}
  table.tbl-empilable tbody td:only-child::before{content:none}
  table.tbl-empilable .cell-min,table.tbl-empilable .trunc{max-width:100%}
  table.tbl-empilable .trunc{white-space:normal;overflow-wrap:anywhere}
}@media (max-width:760px){
  table.tbl-empilable{min-width:0 !important}
  table.tbl-empilable tbody tr.tk-row{border-left:5px solid var(--p,var(--txt3))}
  .content a.text-link,.content label{overflow-wrap:anywhere}
}@media (max-width:760px){
  .content input.sr{max-width:1px}
  .content div.badge{white-space:normal;max-width:100%}
  .content p a.text-link{white-space:normal;word-break:break-word}
  .form-grid{grid-template-columns:minmax(0,1fr)}
  .form-grid :is(input:not([type="checkbox"]):not([type="radio"]),select,textarea){min-width:0;max-width:100%}
  .tabs-row{flex-wrap:wrap}
}
@media (max-width:760px){.content a.text-link{white-space:normal;max-width:100%}.content canvas{max-width:100%;height:auto}}

/* Grilles : une carte ne déborde jamais de sa colonne (le contenu se resserre ou se tronque) */
.grid>*{min-width:0}
/* Tableau d'indicateurs (accueil tech-co) : noms sur une ligne, chiffres alignés à droite */
.tbl-indic{width:100%;table-layout:auto}
.tbl-indic th.num,.tbl-indic td.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.tbl-indic td.nom{white-space:nowrap;max-width:240px}
.tbl-indic td.nom .trunc{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}
.tbl-indic td{padding-top:8px;padding-bottom:8px}
/* Formulaires client / distributeur */
.fiche-form{max-width:1040px;display:grid;gap:16px}
.fiche-form-corps{display:grid;gap:16px;margin:0}
.fiche-form .form-section{margin:0}
.fiche-form .form-section h3{margin:0 0 14px}
.fiche-form .fld{margin:0;min-width:0}
.fiche-form .fld .inp{width:100%;min-height:44px}
.fiche-form .fld textarea.inp{min-height:88px}
.fiche-form .lbl{display:block;margin-bottom:6px;font-size:12px;font-weight:600;color:var(--txt2)}
.fiche-form .inp.rempli{animation:champ-rempli 1.6s ease-out}
@keyframes champ-rempli{0%{border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 30%,transparent);background:var(--accent-f)}100%{box-shadow:0 0 0 0 transparent}}
@media (prefers-reduced-motion:reduce){.fiche-form .inp.rempli{animation:none;border-color:var(--accent)}}
.lien-btn{border:0;background:none;padding:6px 0;color:var(--accent-t);font:inherit;font-weight:600;cursor:pointer;min-height:32px}
.lien-btn:hover{text-decoration:underline}
.lien-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
/* Recherche d'entreprise */
.rech-ent{margin:0;border-color:color-mix(in srgb,var(--accent) 35%,var(--bord));background:color-mix(in srgb,var(--accent) 4%,var(--carte))}
.rech-ent>label{display:block;font-size:15px;font-weight:700;color:var(--txt);margin-bottom:8px}
.rech-ent-champ{position:relative}
.rech-ent-champ .inp{width:100%;min-height:50px;font-size:16px}
.rech-ent-aide{margin:8px 0 0}
.rech-ent-etat{margin:4px 0 0;color:var(--txt2);min-height:1em}
.rech-ent-liste{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:40;margin:0;padding:6px;list-style:none;background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);box-shadow:var(--ombre-h,var(--ombre-c));max-height:min(420px,60vh);overflow-y:auto}
.rech-ent-titre{padding:8px 10px 4px;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--txt3)}
.rech-ent-opt{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:9px 10px;border-radius:6px;cursor:pointer}
.rech-ent-opt.crm{grid-template-columns:auto 1fr auto}
.rech-ent-opt .ro-nom{font-weight:600;color:var(--txt);min-width:0;overflow-wrap:anywhere}
.rech-ent-opt .ro-det,.rech-ent-opt .ro-ens{grid-column:1/-1;min-width:0;overflow-wrap:anywhere}
.rech-ent-opt.crm .ro-det{grid-column:2/3}
.rech-ent-opt .ro-act{color:var(--accent-t);font-weight:600;align-self:center;grid-row:1/3;grid-column:3}
.rech-ent-opt.actif,.rech-ent-opt:hover{background:var(--accent-f)}
.rech-ent-vide{padding:10px}
/* Lignes répétables */
.rep-lignes{display:grid;gap:8px}
.rep-ligne{display:flex;gap:8px;align-items:center;min-width:0}
.rep-ligne>.inp{flex:1 1 auto;min-width:0}
.rep-retirer{flex:none;width:44px;height:44px;justify-content:center;font-size:18px;line-height:1}
.contacts-saisie{margin-top:16px}
.contact-ligne{display:grid;grid-template-columns:repeat(5,minmax(0,1fr)) 44px;align-items:end;gap:10px;padding:10px;border:1px solid var(--bord2);border-radius:8px;background:var(--fond2)}
.contact-ligne .fld label{font-size:11.5px}
@media (max-width:900px){.contact-ligne{grid-template-columns:repeat(2,minmax(0,1fr))}.contact-ligne .rep-retirer{justify-self:end;grid-column:2}}
@media (max-width:560px){.contact-ligne{grid-template-columns:1fr}.contact-ligne .rep-retirer{grid-column:1}}
/* Barre d'actions collante en bas du formulaire */
.barre-actions-fixe{position:sticky;bottom:0;z-index:20;display:flex;justify-content:flex-end;gap:10px;padding:12px 16px;margin:0 -2px;background:color-mix(in srgb,var(--carte) 92%,transparent);backdrop-filter:blur(6px);border:1px solid var(--bord);border-radius:var(--r);box-shadow:var(--ombre-c)}
@media (max-width:560px){.barre-actions-fixe{flex-direction:column-reverse}.barre-actions-fixe .button{width:100%}}
/* Reproduction — intranet (raccourcis clavier, statistiques popup, options de contrat, référentiels) */
.kbd-ind{display:inline-block;min-width:18px;padding:0 5px;margin-left:6px;border:1px solid var(--bord);border-radius:4px;background:var(--fond2);color:var(--txt3);font:600 11px/17px ui-monospace,SFMono-Regular,Menlo,monospace;text-align:center;vertical-align:1px}
.btn.p .kbd-ind{background:color-mix(in srgb,var(--blanc) 18%,transparent);border-color:color-mix(in srgb,var(--blanc) 35%,transparent);color:inherit}
.rc-modal{width:min(520px,100%)}
.rc-modal h3{margin:14px 0 4px;font-size:13px;color:var(--txt3);text-transform:uppercase;letter-spacing:.03em}
.rc-table td{padding:6px 4px}
.rc-table .rc-touches{text-align:right;white-space:nowrap}
.grid.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:900px){.grid.g3{grid-template-columns:1fr}}
.opt-colonnes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:start}
@media (max-width:1100px){.opt-colonnes{grid-template-columns:1fr}}
.opt-bloc{display:grid;gap:8px;padding:10px 0;border-top:1px solid var(--bord2)}
.opt-bloc:first-of-type{border-top:0}
.opt-ligne{display:flex;gap:8px;align-items:center;min-width:0}
.opt-ligne>.inp{flex:1 1 auto;min-width:0}
.opt-ligne>.inp.opt-prix{flex:0 0 110px}
.ref-ligne-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ref-ligne-form .inp{min-width:0}
/* Reproduction — Tech-co · Fiche client (grille d'actions, relevé techco §3.34) */
.fc-panneau .fc-nom{text-transform:uppercase;letter-spacing:.02em;margin:0;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.fc-kv{display:grid;grid-template-columns:1fr 1fr;gap:10px 24px;margin:6px 0 14px}
.fc-kv dt{font-size:12.5px;font-weight:600;color:var(--txt3)}
.fc-kv dd{margin:2px 0 0;overflow-wrap:anywhere}
.fc-tache{display:flex;gap:10px;align-items:center;margin-top:10px;padding:10px 12px;border:1px solid var(--bord);border-left:5px solid var(--accent);border-radius:10px;background:var(--fond2)}
.fiche-grille{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:14px}
.fg-btn{display:flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:8px 12px;background:var(--carte);border:1px solid var(--bord);border-radius:10px;color:var(--txt);font:inherit;font-weight:700;cursor:pointer;text-decoration:none;box-shadow:var(--ombre-c);transition:border-color .15s,color .15s}
.fg-btn:hover{border-color:var(--accent);color:var(--accent-t)}
.fg-btn:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}
.fg-n{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--accent);color:var(--blanc);font-size:11.5px;font-weight:700}
.fg-aide{text-align:center;margin:10px 0 0}
.fg-modal{width:min(520px,100%)}
.fg-hd{border-bottom:1px solid var(--bord2);padding-bottom:10px;margin-bottom:12px}
.fg-hd h3{margin:0 0 2px}
.fg-hd p{margin:0}
.fg-vide{border:1px dashed var(--bord);border-radius:10px;padding:20px;text-align:center;color:var(--txt3);font-size:14px;margin-bottom:12px}
.fg-entree{padding:8px 0;border-bottom:1px solid var(--bord2)}
.fg-txt{white-space:pre-line;font-size:13.5px;margin-top:2px}
.fg-liste{margin-bottom:10px}
.fg-form{display:grid;gap:10px;margin-top:12px}
.fg-form .fld{min-width:0}
.fg-form .fld .inp{width:100%;box-sizing:border-box}
.fg-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.fg-act{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}
.fg-histo{display:flex;justify-content:center;align-items:flex-end;gap:22px;min-height:170px;padding:10px 0}
.fg-col{display:flex;flex-direction:column;align-items:center;gap:4px;width:72px;text-align:center}
.fg-barre{display:block;width:64px;border-radius:6px 6px 0 0;background:var(--bord)}
.fg-col.n .fg-barre{background:var(--accent)}
.fg-col.n .small{font-weight:700}
.fc-plus>summary{cursor:pointer;font-weight:600}
.fc-plus{margin-top:16px}
.cl-barre{display:flex;gap:8px;align-items:center;margin-bottom:10px}
.cl-barre .inp-rech{flex:1 1 auto;min-width:0;min-height:44px}
.cl-barre .btn{min-height:44px;font-weight:700}
.cl-deps{margin-bottom:12px}
.cl-dep{min-height:34px;padding:0 13px;display:inline-flex;align-items:center;text-decoration:none}
.cl-liste{display:grid;gap:6px}
.cl-ligne{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--carte);border:1px solid var(--bord);border-left:5px solid var(--bord);border-radius:10px;color:var(--txt);text-decoration:none;min-width:0}
.cl-ligne:hover{border-color:var(--accent)}
.cl-ligne:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}
.cl-ligne.prospect{border-left-color:var(--vert);background:color-mix(in srgb,var(--vert-f) 60%,var(--carte))}
.cl-dept{flex:none;min-width:34px;height:34px;padding:0 6px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;background:var(--accent);color:var(--blanc);font-weight:800;font-size:14px}
.cl-c{display:flex;flex-direction:column;min-width:0;flex:1}
.cl-c b{text-transform:uppercase}
.cl-ca{flex:none;font-weight:700}
.btn.btn-vert{background:var(--vert);border-color:var(--vert);color:var(--blanc);font-weight:700}
.btn.btn-vert:hover{filter:brightness(1.08)}
@media (max-width:760px){.fc-kv,.fg-2{grid-template-columns:1fr}.fiche-grille{grid-template-columns:1fr 1fr}}
/* Reproduction — Support / Tickets (vTickets / vTicket de tickets.js + fenêtres de choix de l'intranet) */
.tk-page{margin-bottom:12px}
.tk-onglets{align-items:center}
.tk-onglets .sp{flex:1}
.tk-onglets .row-actions>.btn{min-height:36px}
.tk-reperes{margin-bottom:14px}
.tk-reperes h3{margin:0 0 6px}
.tk-repere{color:inherit;text-decoration:none}
.tk-repere-ref{flex:none;color:var(--txt3)}
.tk-repere-txt{flex:1;min-width:0}
.tk-repere-txt .t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tk-barre{margin-bottom:6px}
.tk-barre .filtres-barre{flex:1 1 auto;margin:0}
.tk-barre .inp-rech{flex:1 1 280px;max-width:380px}
.tk-barre select.inp{width:auto;max-width:220px}
.tk-avances{margin:0 0 10px}
.tk-avances>summary{cursor:pointer;font-size:13px;color:var(--txt3);padding:4px 0;width:fit-content}
.tk-avances>summary:hover{color:var(--accent-t)}
.tk-avances-f{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;align-items:end;padding:12px;margin-top:6px;border:1px solid var(--bord);border-radius:var(--r);background:var(--carte)}
.tk-avances-f .fld{margin:0}
.tk-liste[aria-busy=true]{opacity:.6;transition:opacity .2s}
.tk-suivi-f{display:inline}
.tk-tbl .tk-act{width:52px;text-align:right}
.tk-epingle{display:block;width:max-content;margin-top:4px;padding:1px 8px;border-radius:999px;font-size:10.5px;font-weight:700;letter-spacing:.03em;color:var(--accent-t);background:var(--accent-f)}
.tk-fiche .hd-fiche>form{display:contents}
.tk-partager{vertical-align:middle;margin-left:8px;display:inline-flex;align-items:center;gap:6px}
.tk-partager svg{width:14px;height:14px;fill:currentColor}
.tk-fiche .tk-trait{margin-bottom:16px}
.tk-fiche .tk2-poste>section.card{border:0;background:none;box-shadow:none;padding:16px 0 0;margin:0;border-top:1px solid var(--bord);border-radius:0}
.tk-fiche .tk2-poste>section.card>h2{font-size:11.5px;font-weight:600;color:var(--txt3);text-transform:uppercase;letter-spacing:.04em;margin:0 0 8px}
.tk-fiche .tk2-cli .l{font-size:11.5px;font-weight:600;color:var(--txt3);text-transform:uppercase;letter-spacing:.04em}
.tk-hd-act{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.tk-retirer{margin-top:10px}
.tk-prod{padding:6px 0;border-bottom:1px solid var(--bord2)}
.tk-prod:last-child{border-bottom:0}
.tk-prod-txt{flex:1;min-width:0}
.tk-prod-l{align-items:center}
.tk-prod-l .app-sn b{font-size:17px;letter-spacing:.3px}
.tk-prod-l .app-sn{display:inline-flex;align-items:center;gap:6px}
.tk-prod-pst.app-opts{max-width:none;margin-top:8px;gap:5px}
.tk-prod-histo{margin-top:8px;padding-top:6px;border-top:1px dashed var(--bord2)}
.tk-prod-histo .pli-t{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--txt2)}
.tk-prod-histo .pli-corps{margin-top:8px}
.tk-g32 .row .fld{flex:1;min-width:0}
.tk-g32{align-items:start}
.tk-g32>.tk-col{align-content:start}
.tk-modale .modal{padding:18px 20px}
.tk-modale .tk-edit{width:min(860px,100%)}
.tk-modale .tk-choix{width:min(896px,100%)}
.tk-modal-hd{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.tk-modal-hd h2{margin:0}
.tk-choix-bar .inp-rech{flex:1 1 260px}
.tk-choix-zone{min-height:120px}
.tk-choix-tbl .app-etat{display:flex;flex-wrap:wrap;gap:4px}
.tk-form{max-width:900px}
.tk-form .row .fld{flex:1;min-width:0}
.tk-form-note{margin-top:0}
.tk-form-pied{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:8px}
.tk-chips-l{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.tk-chips-l .tk-chips{flex:1 1 auto;min-width:0}
.tk-ref-ajout{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin-bottom:14px}
.tk-ref-ajout .fld{margin:0;flex:1 1 220px}
.tk-ref-ajout .fld:nth-child(3){flex:0 1 200px}
.tk-ref-tbl td .pastille{margin-bottom:6px}
.tk-ref-tbl td .inp{min-width:0}
.tk-ref-num{max-width:90px}
.tk-ref-ordre{white-space:nowrap}
.tk-ref-rang{display:inline-block;min-width:22px;font-weight:700}
.tk-ref-deplacer{display:inline}
.tk-ref-act{white-space:nowrap;text-align:right}
.tk-ref-act form{display:inline}
@media (max-width:760px){.tk-barre .inp-rech,.tk-barre select.inp{max-width:none}.tk-ref-act{text-align:left}}

/* Reproduction — Fiche Remote (vFiche de l'ancien CRM Remote) */
.rf-titre{align-items:center;margin-bottom:12px}
#f-traitement .fld label,#f-facturation .fld label,.rf-modal .fld label,.rf-g2 .fld label{display:block;font-size:11.5px;font-weight:600;color:var(--txt3);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}
.rf-modal .fld .rp-opt{display:inline-flex;text-transform:none;letter-spacing:0;font-size:13.5px;font-weight:500;color:var(--txt)}
.rf-titre h1{margin:0}
.hd-fiche form{display:inline-flex;margin:0}
.rf-g2 .card h3{margin-top:0}
.rf-g2 a.list-item,.histo a.list-item{color:inherit;text-decoration:none}
.rf-g2 a.list-item:hover .t{color:var(--accent)}
.rf-g2 .list-item .muted.small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rf-sermi-g{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px}
@media (max-width:560px){.rf-sermi-g{grid-template-columns:1fr}}
.rf-tva-av{background:var(--orange-f);color:color-mix(in srgb,var(--orange) 85%,var(--txt))}
.rf-plus{position:relative;display:inline-block}
.rf-plus>summary{list-style:none;cursor:pointer}
.rf-plus>summary::-webkit-details-marker{display:none}
.rf-plus[open]>form{position:absolute;right:0;top:calc(100% + 4px);z-index:5;background:var(--carte);border:1px solid var(--bord);border-radius:6px;padding:6px;box-shadow:var(--ombre-c);white-space:nowrap}
.rf-plus-bloc{margin-top:10px}
.rf-plus-bloc>summary{cursor:pointer;color:var(--accent-t)}
.rf-paye{display:flex;gap:6px;align-items:center;flex:none;margin:0 0 8px}
.tk-pb-desig .tk-pb-bloc>div{overflow-wrap:anywhere}
.rf-ag-modal{width:min(980px,100%)}
.rf-ag-g{display:grid;gap:2px;font-size:12px}
.rf-ag-j{font-weight:600;color:var(--txt2);text-align:center;padding:4px 0;border-bottom:1px solid var(--bord)}
.rf-ag-h{color:var(--txt3);text-align:right;padding:4px 6px 0 0;font-variant-numeric:tabular-nums}
.rf-ag-c{min-height:28px;border-radius:4px;padding:3px 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.rf-ag-c.libre{border:1px dashed var(--bord);background:var(--carte);color:var(--txt3);cursor:pointer;font:inherit;text-align:left}
.rf-ag-c.libre:hover,.rf-ag-c.libre:focus-visible{border-style:solid;border-color:var(--accent);background:var(--accent-f);color:var(--accent-t)}
.rf-ag-c.pris{background:var(--orange-f);color:color-mix(in srgb,var(--orange) 80%,var(--txt));font-weight:600}
.rf-ag-c.pris.ici{background:var(--accent-f);color:var(--accent-t);outline:1px solid var(--accent)}
.rf-ag-c.ferme{background:repeating-linear-gradient(45deg,var(--fond2),var(--fond2) 4px,transparent 4px,transparent 8px)}
@media (max-width:760px){.rf-ag-g{font-size:11px}.rf-ag-c{padding:2px 3px}}
/* Reproduction — Tech-co · Pilotage (portail, accueil, tableau de bord, pilotage, stats, priorités) */
.tp-hd{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.tp-hd>div:first-child{flex:1;min-width:220px}
.tp-hd h1{margin:0 0 4px}
.tp-hd p{margin:0;color:var(--txt3);font-size:13.5px}
.tp-sous{color:var(--txt3);font-size:13px;margin:0 0 14px}
.tp-onglets{margin-bottom:16px}
.tp-kicker{display:block;margin:0 0 10px;font-size:12px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:var(--accent-t)}
.tp-kicker.vert{color:var(--vert)}.tp-kicker.violet{color:var(--violet)}.tp-kicker.bleu{color:var(--bleu)}.tp-kicker.alerte{color:var(--orange)}
.tp-kicker small{font-weight:600;text-transform:none;letter-spacing:0;color:var(--txt3)}
.tp-vide{border:1px dashed var(--bord);border-radius:10px;padding:20px;text-align:center;color:var(--txt3);font-size:14px}
.tp-bloc{margin-bottom:16px}
.tp-haut{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:16px;align-items:start;margin-bottom:16px}
.tp-bonjour h1{margin:0;font-size:22px}
.tp-bonjour p{margin:4px 0 0;color:var(--txt3)}
.tp-chiffres{font-size:13px;width:100%}
.tp-chiffres th,.tp-chiffres td{padding:6px 5px}
.tp-chiffres th{font-size:11.5px;text-align:right;line-height:1.2;vertical-align:bottom;text-transform:none;letter-spacing:0;background:none;color:var(--txt);font-weight:700;white-space:normal}
.tp-chiffres .tp-nom{max-width:150px}
.tp-tuile h3,.tp-large h3{text-transform:none;letter-spacing:0;color:var(--txt)}
.tp-chiffres th small{display:block;font-weight:500;color:var(--txt3)}
.tp-chiffres th:first-child,.tp-chiffres td:first-child{text-align:left}
.tp-chiffres td{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tp-chiffres td a{color:inherit;text-decoration:none;font-weight:700}
.tp-chiffres td a:hover{color:var(--accent-t);text-decoration:underline}
.tp-chiffres .tp-ret{color:var(--orange);font-size:11px;font-weight:700;margin-left:3px}
.tp-chiffres tr.tp-total td{font-weight:800;border-top:1px solid var(--bord)}
.tp-nom{display:inline-flex;align-items:center;gap:6px;max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}
.tp-pt{width:9px;height:9px;border-radius:2px;flex:none;background:var(--c,var(--accent))}
.tp-note{font-size:12px;color:var(--txt3);margin:8px 0 0}
.tp-graphe{display:grid;grid-template-columns:minmax(120px,170px) 1fr 60px;gap:4px 10px;align-items:center;font-size:13px}
.tp-graphe .tp-barres{display:flex;flex-direction:column;gap:2px}
.tp-graphe .tp-b{height:6px;border-radius:3px;min-width:1px}
.tp-graphe .tp-b.n{background:var(--accent)}.tp-graphe .tp-b.n1{background:color-mix(in srgb,var(--accent) 35%,transparent)}.tp-graphe .tp-b.dv{background:var(--violet)}
.tp-graphe .tp-v{text-align:right;font-weight:700;font-variant-numeric:tabular-nums}
.tp-leg{display:flex;gap:12px;flex-wrap:wrap;font-size:11.5px;color:var(--txt3)}
.tp-leg span::before{content:"";display:inline-block;width:10px;height:8px;border-radius:2px;margin-right:4px;background:var(--c)}
.tp-large{display:flex;align-items:center;gap:16px;flex-wrap:wrap;border-top:5px solid var(--c,var(--accent));text-decoration:none;color:inherit;margin-bottom:14px}
.tp-large h3{margin:0;font-size:18px;font-weight:800}
.tp-large .tp-mil{flex:1;min-width:200px;font-size:13.5px}
.tp-ic{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;flex:none;font-size:22px;background:color-mix(in srgb,var(--c,var(--accent)) 14%,var(--carte));color:var(--c,var(--accent))}
.tp-go{font-weight:700;font-size:13.5px;color:var(--c,var(--accent-t));text-decoration:none;white-space:nowrap}
.tp-go:hover{text-decoration:underline}
.tp-tuiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.tp-tuiles.t3{grid-template-columns:repeat(3,minmax(0,1fr))}
.tp-tuile{display:flex;flex-direction:column;gap:6px;border-top:5px solid var(--c,var(--accent));min-height:190px;color:inherit;text-decoration:none}
.tp-tuile h3{margin:6px 0 2px;font-size:18px;font-weight:800}
.tp-tuile .tp-d{font-size:13px;color:var(--txt3)}
.tp-tuile .tp-f{font-size:13px;font-weight:600}
.tp-tuile .tp-go{margin-top:auto;padding-top:8px}
.tp-pastille{display:inline-flex;align-items:center;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:700;background:var(--c,var(--accent));color:var(--blanc)}
.tp-pastille.doux{background:color-mix(in srgb,var(--c,var(--accent)) 15%,var(--carte));color:var(--c,var(--accent-t))}
.tp-prog{display:grid;grid-template-columns:1fr 46px;gap:2px 8px;align-items:center;font-size:12px}
.tp-prog .tp-tr{height:5px;border-radius:3px;background:var(--bord2);overflow:hidden}
.tp-prog .tp-fi{height:100%;background:var(--c,var(--violet))}
.tp-prog b{text-align:right}
.tp-mini{border-left:4px solid var(--orange);background:var(--orange-f);border-radius:6px;padding:6px 10px;font-size:12.5px;max-width:320px}
.tp-alerte{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:10px 14px;border-radius:10px;background:var(--orange-f);color:color-mix(in srgb,var(--orange) 80%,var(--txt));font-weight:700;font-size:13.5px;margin-bottom:16px}
.tp-alerte a{font-weight:600;color:inherit}
.tp-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}
.tp-actions.t3{grid-template-columns:repeat(3,minmax(0,1fr))}
.tp-big{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-height:110px;text-align:center;font-weight:700;font-size:15px;color:inherit;text-decoration:none}
.tp-big .tp-ic{background:var(--accent);color:var(--blanc);border-radius:8px}
.tp-big:hover,.tp-tuile:hover,.tp-large:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--bord))}
.tp-cpts{border:2px solid var(--accent);border-radius:14px;padding:14px;margin-bottom:16px;background:var(--carte)}
.tp-cpts h2{text-align:center;margin:0 0 12px;font-size:16px;letter-spacing:.5px;text-transform:uppercase}
.tp-cpts-g{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.tp-cpt{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:82px;border-radius:12px;background:var(--c);color:var(--blanc);text-decoration:none;text-align:center;padding:8px}
.tp-cpt b{font-size:30px;line-height:1}
.tp-cpt span{font-size:12.5px;font-weight:700;margin-top:4px}
.tp-cpt:hover{filter:brightness(1.08)}
.tp-row{border:1px solid var(--bord);border-left:5px solid var(--c,var(--bord));border-radius:10px;padding:12px 14px;margin-bottom:8px;background:var(--carte)}
.tp-row.conq{border-left-color:var(--vert);background:linear-gradient(90deg,var(--vert-f),var(--carte) 70%)}
.tp-row .tp-l1{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.tp-row .tp-nb{font-size:22px;font-weight:800;color:var(--vert);line-height:1}
.tp-row .tp-meta{font-size:13px;color:var(--txt3);margin-top:4px}
.tp-row .tp-meta form{display:inline}
.tp-lien-danger{background:none;border:0;padding:0;font:inherit;font-weight:700;color:var(--danger);cursor:pointer}
.tp-lien-danger:hover{text-decoration:underline}
.tp-salon{display:grid;grid-template-columns:58px minmax(0,1fr);gap:12px;align-items:start}
.tp-date{border-radius:8px;background:var(--accent-f);color:var(--accent-t);text-align:center;padding:6px 2px;font-weight:800;line-height:1.1}
.tp-date b{display:block;font-size:20px}
.tp-date small{font-size:11px;text-transform:uppercase}
.tp-chips{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0}
.tp-chip{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--bord);border-radius:999px;padding:2px 9px;font-size:12px;font-weight:600}
.tp-chip::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--c,var(--txt3))}
.tp-btns{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.tp-btns form{display:contents}
.tp-groupe{padding:10px 0;border-bottom:1px solid var(--bord2)}
.tp-groupe:last-of-type{border-bottom:0}
.tp-groupe details{margin:4px 0}
.tp-groupe summary{cursor:pointer;color:var(--accent-t);font-weight:600;font-size:13px}
.tp-sel{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:6px}
.tp-sel select{min-height:36px;max-width:260px}
.tp-histo{display:flex;align-items:flex-end;gap:10px;min-height:210px;padding-top:24px;border-bottom:1px solid var(--bord);overflow:hidden}
.tp-col{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:190px}
.tp-col .tp-val{font-weight:800;font-size:18px;margin-bottom:4px}
.tp-col .tp-barre{width:min(64px,80%);border-radius:4px 4px 0 0;background:var(--c,var(--accent));min-height:2px}
.tp-col .tp-barre.gris{background:color-mix(in srgb,var(--txt3) 45%,transparent)}
.tp-col .tp-duo{display:flex;gap:3px;align-items:flex-end;width:min(64px,80%);justify-content:center}
.tp-col .tp-duo .tp-barre{width:50%}
.tp-noms{display:flex;gap:10px}
.tp-noms>div{flex:1 1 0;min-width:0;text-align:center;font-size:12px;color:var(--txt3);padding-top:6px}
.tp-noms b{display:block;font-size:14px;color:var(--txt2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tp-noms .ok{color:var(--vert);font-weight:700}
.tp-promos{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.tp-promo{display:flex;flex-direction:column;gap:6px;border:1px solid var(--bord);border-radius:10px;padding:8px;background:var(--carte);cursor:pointer;text-align:center;font:inherit;color:inherit}
.tp-promo:hover,.tp-promo:focus-visible{border-color:var(--accent)}
.tp-promo img{width:100%;aspect-ratio:1/1;object-fit:contain;border-radius:6px;background:var(--fond2)}
.tp-promo .tp-ph{width:100%;aspect-ratio:1/1;border-radius:6px;background:var(--fond2);display:grid;place-items:center;font-size:32px}
.tp-promo b{font-size:13.5px}
.tp-promo small{color:var(--txt3);font-weight:600}
.tp-promo-img{max-width:100%;max-height:340px;display:block;margin:0 auto 10px;border-radius:8px}
.tp-form{display:grid;gap:10px}
.tp-form label{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:600;color:var(--txt2)}
.tp-form .tp-fin{display:flex;gap:8px;flex-wrap:wrap}
@media (max-width:1100px){.tp-tuiles{grid-template-columns:repeat(3,minmax(0,1fr))}.tp-promos{grid-template-columns:repeat(2,minmax(0,1fr))}.tp-cpts-g{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:900px){.tp-haut{grid-template-columns:1fr}.tp-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.tp-tuiles,.tp-tuiles.t3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:760px){.tp-tuiles,.tp-tuiles.t3,.tp-actions,.tp-actions.t3,.tp-promos{grid-template-columns:1fr}.tp-cpts-g{grid-template-columns:repeat(2,minmax(0,1fr))}.tp-graphe{grid-template-columns:110px 1fr 46px}.tp-histo,.tp-noms{gap:4px}.tp-col .tp-val{font-size:13px}.tp-noms b{font-size:11px}.tp-noms>div{font-size:10px}.tp-chiffres .muted.small{display:none}.tp-chiffres .tp-nom{max-width:92px}.tp-chiffres th,.tp-chiffres td{padding:5px 3px}.tp-chiffres .tp-ret{display:block;margin:0}.tp-haut>*{min-width:0}}

/* Reproduction — cadre Remote (menu, Tableau de bord, Remotes, Techniciens, Tarifs, Réglages) */
.top h1{flex:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:40%}
.top h1+.rg{flex:1 1 auto;min-width:0;max-width:470px}
.top h1+.rg .inp{width:100%}
.dash-act .btn svg{width:16px;height:16px;flex:none}
.dash-act .btn{display:inline-flex;align-items:center;gap:8px;min-height:44px}
.da-ic svg{width:18px;height:18px}
.sync .sync-l b{margin-right:0}
.rw-bar .chip-src{text-decoration:none}
.rw-bar .row-actions{flex:none}
.tech-dispo{border:0;cursor:pointer;font-family:inherit;min-height:28px}
.tech-dispo:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}
.tech-absent{background:var(--fond2);color:var(--txt3)}
@media (pointer:coarse){.tech-dispo{min-height:44px}}
.tech-cartes .list-item{min-height:36px}
@media (max-width:1100px){.tech-cartes.g4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:760px){.tech-cartes.g4,.tar-marque .g2{grid-template-columns:1fr}}
.tar-marque td{overflow-wrap:anywhere}
summary.reg-hd{list-style:none}
summary.reg-hd::-webkit-details-marker{display:none}
details.reg-sec[open] .reg-chev{transform:rotate(90deg)}
.reg-ok{border-color:var(--vert)!important;box-shadow:0 0 0 2px color-mix(in srgb,var(--vert) 25%,transparent)}
.reg-ko{border-color:var(--danger)!important}
.prio-liste{list-style:none;padding:0;margin:0 0 12px}
.prio-l{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid var(--bord2)}
.prio-n{min-width:24px;text-align:right;color:var(--txt3);font-size:12.5px}
.prio-l .btn.s{min-width:32px;justify-content:center}
@media (pointer:coarse){.prio-l .btn.s{min-width:44px;min-height:44px}}
.reg-c .row .inp{min-width:0}
.opt-colonnes>.card{margin:0}

/* Reproduction — Tech-co · Projets, emailing, contrats */
.pj-retour{margin:0 0 6px}
.pj-vide{border:1px dashed var(--bord);border-radius:10px;padding:22px;text-align:center;color:var(--txt3);font-size:14px;background:var(--carte)}
.pj-barre{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:14px}
.pj-barre .inp-rech,.ct-outils .inp-rech{flex:1;min-width:200px}
.ct-outils{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}
.chip-src b{margin-left:4px}
.pj-grille,.ct-grille{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
@media (max-width:1100px){.pj-grille,.ct-grille{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:760px){.pj-grille,.ct-grille{grid-template-columns:1fr}}
.pj-carte{display:flex;flex-direction:column;gap:8px;text-decoration:none;color:inherit;margin:0;min-width:0}
.pj-carte.bloque{border-left:4px solid var(--orange)}
.pj-tete{display:flex;gap:12px;align-items:flex-start;min-width:0}
.pj-titres{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.pj-nom{font-weight:700;font-size:15.5px;line-height:1.3}
.pj-cat{align-self:flex-start}
.pj-resume{color:var(--txt3);font-size:13px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.pj-vign{width:62px;height:62px;object-fit:cover;border-radius:8px;border:1px solid var(--bord2);flex:none}
.pj-anneau{--p:0;flex:none;width:58px;height:58px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--accent) calc(var(--p)*1%),var(--bord2) 0)}
.pj-anneau b{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--carte);font-size:13px}
.pj-anneau.grand{width:92px;height:92px}
.pj-anneau.grand b{width:72px;height:72px;font-size:20px}
.pj-segments{display:flex;gap:4px}
.pj-seg{flex:1;height:7px;border-radius:4px;background:var(--bord2)}
.pj-seg.s-terminee{background:var(--vert)}
.pj-seg.s-en_cours{background:var(--accent)}
.pj-seg.s-bloquee{background:var(--orange)}
.pj-etat,.pj-date{font-size:13.5px}
.pj-resp{font-size:13px}
.pj-entete{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap}
.pj-entete-c{flex:1;min-width:240px}
.pj-entete-c h1{margin:0 0 6px;font-size:20px}
.pj-badges{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.pj-meta{display:flex;gap:16px;flex-wrap:wrap;font-size:13px}
.pj-photo{width:240px;max-width:100%;max-height:180px;object-fit:contain;border-radius:10px;border:1px solid var(--bord2);background:var(--fond2)}
.pj-frise{display:flex;list-style:none;margin:18px 0;padding:0;gap:0;overflow:hidden}
.pj-frise li{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;position:relative;min-width:0;text-align:center;font-size:12.5px;color:var(--txt3)}
.pj-frise li+li::before{content:"";position:absolute;top:17px;right:50%;width:100%;height:3px;background:var(--bord2);z-index:0}
.pj-frise li.s-terminee+li::before,.pj-frise li.s-terminee::before{background:var(--vert)}
.pj-frise .pj-frise-l{overflow-wrap:anywhere}
.pj-frise li.courante{color:var(--txt);font-weight:700}
.pj-rond{position:relative;z-index:1;width:34px;height:34px;flex:none;border-radius:50%;display:grid;place-items:center;font-weight:700;background:var(--carte);border:2px solid var(--bord);color:var(--txt2)}
.s-terminee>.pj-rond{border-color:var(--vert);background:var(--vert);color:var(--blanc)}
.s-en_cours>.pj-rond,.courante>.pj-rond{border-color:var(--accent);color:var(--accent-t)}
.s-bloquee>.pj-rond{border-color:var(--orange);color:var(--orange)}
.pj-h2{margin:18px 0 10px;font-size:16px}
.pj-etape{display:flex;gap:12px;align-items:flex-start;margin-bottom:10px}
.pj-etape-c{flex:1;min-width:0;margin:0}
.pj-etape.courante .pj-etape-c{border-color:var(--accent)}
.pj-etape.s-bloquee .pj-etape-c{border-color:var(--orange)}
.pj-etape-hd{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pj-b-en_cours{background:var(--accent-f);color:var(--accent-t)}
.pj-b-terminee{background:var(--vert-f);color:var(--vert)}
.pj-b-bloquee{background:var(--orange-f);color:var(--orange)}
.pj-b-a_venir{background:var(--fond2);color:var(--txt3)}
.pj-annot{background:var(--fond2);border-radius:8px;padding:8px 10px;margin:8px 0}
.pj-com{border-left:3px solid var(--bord2);padding:2px 8px;margin:6px 0}
.pj-etape-act{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px;align-items:flex-start}
.pj-etape-act form{margin:0}
.pj-pop>summary{list-style:none;cursor:pointer}
.pj-pop>summary::-webkit-details-marker{display:none}
.pj-pop[open]{flex-basis:100%}
.pj-pop[open]>form{margin-top:8px;padding:10px;border:1px solid var(--bord2);border-radius:8px}
.pj-journal-f{display:flex;gap:8px;align-items:flex-end}
.pj-journal-f textarea{flex:1;min-width:0}
.pj-modale{width:min(560px,100%)}
.pj-photo-ligne{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:6px}
.pj-etapes-edit{list-style:none;padding:0;margin:6px 0;counter-reset:pje}
.pj-etape-l{display:flex;gap:6px;align-items:center;margin-bottom:6px;counter-increment:pje}
.pj-etape-l .inp{flex:1;min-width:0}
.pj-num::before{content:counter(pje);display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--fond2);border:1px solid var(--bord);font-size:12px;font-weight:700}
.pj-etape-l:first-child .pj-num::before{background:var(--accent);border-color:var(--accent);color:var(--blanc)}
.pj-fichier,.em-fichier,.ct-fichier{cursor:pointer;position:relative}
.pj-archiver{align-self:end}
/* Emailing */
.em-onglets{margin-bottom:14px}
.em-etape h2{display:flex;align-items:center;gap:10px;margin-top:0}
.em-num{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--accent);color:var(--blanc);font-size:13px}
.em-src{display:inline-flex;align-items:center;cursor:pointer}
.em-src:has(input:focus-visible){box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}
.em-filtres{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin:12px 0}
@media (max-width:1100px){.em-filtres{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:760px){.em-filtres{grid-template-columns:1fr}}
.em-filtres label{display:flex;flex-direction:column;gap:4px;min-width:0}
.em-filtres :is(input,select){width:100%;min-width:0}
.em-compte{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;background:var(--fond2);border-radius:8px;padding:10px 12px}
.em-liste{display:flex;flex-direction:column;gap:8px;margin:12px 0}
.em-retenus{margin:12px 0 2px;padding-top:10px;border-top:1px dashed var(--bord)}
.em-editeur{border:1px solid var(--bord);border-radius:8px;overflow:hidden;margin:4px 0 6px;background:var(--carte)}
.em-barre{display:flex;flex-wrap:wrap;gap:4px;padding:6px;background:var(--fond2);border-bottom:1px solid var(--bord2)}
.em-zone{min-height:160px;padding:12px;outline:none;overflow-wrap:anywhere}
.em-zone:focus-visible{box-shadow:inset 0 0 0 2px var(--accent)}
.em-apercu{margin-top:12px}
.em-apercu-corps{min-height:120px;max-height:360px;overflow:auto;border:1px solid var(--bord2);border-radius:8px;padding:12px;background:var(--fond2);overflow-wrap:anywhere}
.em-test{display:flex;gap:8px;align-items:flex-end;margin-top:12px;flex-wrap:wrap}
.em-test label{flex:1;min-width:220px;display:flex;flex-direction:column;gap:4px}
.em-act{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.em-act form{margin:0}
.em-hist td .trunc{display:block;max-width:420px}
/* Contrats distributeur */
.ct-pilules{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 8px}
.ct-pilule{display:inline-flex;align-items:center;gap:4px;min-height:32px;padding:0 12px;border-radius:999px;border:1px solid var(--bord);background:var(--carte);color:var(--txt2);font-size:13px;text-decoration:none}
.ct-pilule.warn{background:var(--orange-f);border-color:var(--orange);color:var(--orange)}
.ct-pilule.danger{background:var(--rouge-f);border-color:var(--rouge);color:var(--rouge)}
.ct-pilule.on{box-shadow:0 0 0 2px var(--accent)}
.ct-carte{margin:0;display:flex;flex-direction:column;gap:8px;min-width:0;border-top:4px solid var(--bord)}
.ct-carte.ct-en_cours{border-top-color:var(--vert)}
.ct-carte.ct-echeance_proche{border-top-color:var(--orange)}
.ct-carte.ct-echu{border-top-color:var(--rouge)}
.ct-carte.ct-pas_encore_en_vigueur,.ct-carte.ct-duree_indeterminee{border-top-color:var(--accent)}
.ct-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.ct-hd-t{min-width:0;display:flex;flex-direction:column}
.ct-partenaire{font-weight:700;font-size:15.5px;color:var(--txt);text-decoration:none}
.ct-partenaire:hover{color:var(--accent-t)}
.ct-intitule{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ct-alerte{border:1px solid var(--orange);background:var(--orange-f);color:var(--orange);border-radius:8px;padding:6px 10px;font-size:13px;font-weight:600}
.ct-alerte.danger{border-color:var(--rouge);background:var(--rouge-f);color:var(--rouge)}
.ct-ligne{font-size:13px;color:var(--txt2);background:var(--fond2);border-radius:6px;padding:6px 10px}
.ct-rfa-box{border:1px solid var(--vert);background:var(--vert-f);border-radius:8px;padding:6px 10px;font-size:13px}
.ct-dates{list-style:none;margin:0;padding:0;font-size:13px;display:flex;flex-direction:column;gap:2px}
.ct-reste{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--txt3)}
.ct-barre{display:block;height:5px;border-radius:3px;background:var(--bord2);overflow:hidden}
.ct-barre>span{display:block;height:100%;background:var(--accent)}
.ct-k{display:block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--txt3);margin-bottom:4px}
.ct-synthese{border:1px solid var(--bord2);border-radius:8px;padding:8px 10px;font-size:13px}
.ct-synthese ul{margin:0;padding-left:18px}
.ct-graphe{display:flex;gap:8px;align-items:flex-end}
.ct-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:12px;min-width:0}
.ct-bar{display:block;width:100%;background:var(--vert);border-radius:4px 4px 0 0}
.ct-per{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--bord2);font-size:13px}
.ct-simul{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:13px}
.ct-simul .inp{flex:1;min-width:110px}
.ct-docs{list-style:none;margin:0;padding:0;font-size:13px;display:flex;flex-direction:column;gap:2px;overflow-wrap:anywhere}
.ct-act{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto;padding-top:6px}
.ct-act form{margin:0}
.ct-modale{width:min(780px,100%)}
.ct-fs{border:1px solid var(--bord2);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:6px;min-width:0}
.ct-duree{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ct-duree .pleine{grid-column:1/-1;margin:0}
.ct-palier{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:6px;font-size:13px}
.ct-palier input{width:120px}
.ct-doc{font-size:13px}
.ct-totaux{margin-top:16px}
/* Reproduction — Tech-co · Utilisateurs, imports, MES */
.tcu-intro{max-width:900px}
.tcu-sec{margin-bottom:16px}
.tcu-kick{margin:0 0 4px;font-size:12.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--accent-t)}
.tcu-kick .tcu-nb{color:var(--txt3);font-weight:600}
details.tcu-acc>summary{cursor:pointer;list-style:none}
details.tcu-acc>summary::before{content:'▸ ';color:var(--txt3)}
details.tcu-acc[open]>summary::before{content:'▾ '}
.tcu-ligne{display:flex;align-items:center;gap:12px;padding:10px 12px;margin-top:8px;border:1px solid var(--bord);border-left:5px solid var(--c,var(--bord));border-radius:10px;background:var(--carte);min-width:0}
.tcu-c{flex:1 1 auto;min-width:0}
.tcu-nom{display:flex;align-items:center;gap:6px;min-width:0;flex-wrap:wrap}
.tcu-nom b{max-width:100%}
.tcu-meta{margin-top:2px}
.tcu-act{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;flex:none;max-width:52%}
.tcu-act form{display:contents}
.tcu-act .btn.s{min-height:32px}
.tcu-zones{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px;margin:8px 0}
.tcu-zone{display:grid;gap:2px;padding:8px 10px;border:1px solid var(--bord);border-left:4px solid var(--accent);border-radius:8px;min-width:0}
.tcu-zone b{font-size:12.5px;letter-spacing:.03em}
.tcu-envoi{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px}
@media (max-width:760px){.tcu-ligne{flex-direction:column;align-items:stretch}.tcu-act{max-width:none;justify-content:flex-start}}
@media (pointer:coarse){.tcu-act .btn.s{min-height:44px}}
/* Suivi MES : barre et sous-onglets */
.mes-barre{display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap;margin-bottom:16px}
.mes-barre .mes-titre{margin:0;font-size:18px}
.mes-barre .seg-tabs{margin:0}
.mes-barre .sp{flex:1}
.mes-h2{margin:0 0 4px;font-size:20px}
.mes-haut{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:12px;margin-bottom:12px}
.mes-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.mes-kpi{display:grid;gap:2px;padding:14px;border-top:4px solid var(--k,var(--accent));text-decoration:none;color:inherit;min-width:0}
.mes-kpi b{font-size:30px;line-height:1.1;color:var(--k,var(--accent-t))}
.mes-kpi span{font-size:12.5px;font-weight:600;color:var(--txt2)}
.mes-kpi.k-rouge{--k:var(--rouge)}
.mes-kpi.k-orange{--k:var(--orange)}
.mes-kpi.k-bleu{--k:var(--accent)}
.mes-kpi.k-alerte{--k:var(--txt3)}
.mes-kpi.k-alerte.on{--k:var(--rouge);background:var(--rouge-f)}
.mes-retards{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:12px 14px;min-width:0}
.mes-kick{font-size:11.5px;font-weight:800;letter-spacing:.05em;color:var(--txt3)}
.mes-pers{display:inline-flex;align-items:center;gap:6px;padding:3px 10px 3px 3px;border:1px solid var(--bord);border-radius:999px;font-size:13px;font-weight:600;color:var(--txt);text-decoration:none;max-width:100%}
.mes-pers:hover{border-color:var(--accent)}
.mes-pastille{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:var(--orange);color:var(--blanc);font-size:11.5px;font-weight:800}
.mes-pastille.fort{background:var(--rouge)}
.mes-marques{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px}
.mes-marques .seg-tabs{margin:0}
.mes-marques .sp{flex:1}
.mes-aide{margin-bottom:12px;border-left:4px solid var(--accent)}
.mes-aide p{margin:0 0 6px}
.mes-filtres{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px}
.mes-filtres .filtres-barre{flex:1 1 420px;min-width:0}
.mes-nb{margin-left:auto}
.mes-etat{display:inline-flex;align-items:center;gap:6px}
.mes-pt{width:9px;height:9px;border-radius:50%;background:var(--txt3)}
.mes-etat.e-faite .mes-pt{background:var(--vert)}
.mes-etat.e-a_traiter .mes-pt{background:var(--orange)}
.mes-etat.e-pas_d_infos .mes-pt{background:var(--rouge)}
.mes-etat.on .mes-pt{background:var(--blanc)}
.mes-tbl-w{padding:0;overflow:hidden}
.mes-tbl{table-layout:fixed;width:100%;font-size:13px}
table.table.mes-tbl th{font-size:10.5px;letter-spacing:.03em;white-space:normal;vertical-align:bottom}
table.table.mes-tbl th,table.table.mes-tbl td{padding:8px 5px;vertical-align:top;overflow-wrap:anywhere}
table.table.mes-tbl th:nth-child(1){width:12%}table.table.mes-tbl th:nth-child(2){width:6.5%}table.table.mes-tbl th:nth-child(3){width:6.5%}table.table.mes-tbl th:nth-child(4){width:8.5%}
table.table.mes-tbl th:nth-child(5){width:12%}table.table.mes-tbl th:nth-child(6){width:7.5%}table.table.mes-tbl th:nth-child(7){width:5.5%}table.table.mes-tbl th:nth-child(8){width:8.5%}
table.table.mes-tbl th:last-child{width:40px}
table.table.mes-tbl td:last-child .btn.s{padding:4px 7px}
table.table.mes-tbl th:nth-child(5){width:11.5%}table.table.mes-tbl th:nth-child(6){width:8%}
table.table.mes-tbl td.mes-d{white-space:nowrap;overflow-wrap:normal;font-size:12.5px;letter-spacing:-.01em}
.mes-filtres .chips-src{flex:1 1 100%}
.mes-filtres .chip-src{display:inline-flex;align-items:center;text-decoration:none}
table.table.mes-faites th,table.table.mes-faites td,table.table.mes-comptes th,table.table.mes-comptes td,table.table.mes-journal th,table.table.mes-journal td,table.table.imp-tbl th,table.table.imp-tbl td{padding:8px 6px;white-space:normal;overflow-wrap:anywhere}
.mes-tbl tr.mes-l td:first-child{border-left:4px solid var(--txt3)}
.mes-tbl tr.s-faite td:first-child{border-left-color:var(--vert)}
.mes-tbl tr.s-a_traiter td:first-child{border-left-color:var(--orange)}
.mes-tbl tr.s-pas_d_infos td:first-child{border-left-color:var(--rouge)}
.mes-tbl tr.late td{background:color-mix(in srgb,var(--orange-f) 60%,transparent)}
.mes-tbl tr.late2 td{background:color-mix(in srgb,var(--rouge-f) 70%,transparent)}
.mes-tbl tr.doublon td{box-shadow:inset 0 -2px 0 var(--orange)}
.mes-tbl td .badge{margin:0 4px 4px 0}
.mes-tbl .mes-fiche{margin:0 2px 4px 0}
/* Fiches de mise en service multiples (formulaire MES, 27/10/2026). */
.mes-fichiers{display:grid;gap:8px;margin:12px 0}
.mes-fichiers-t{font-weight:600}
.mes-fichiers-t .muted{font-weight:400}
.mes-fichiers-liste{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.mes-fichiers-liste li{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:8px 12px;border:1px solid var(--bord2);border-radius:10px;background:var(--fond2)}
.mes-fichiers-liste li>a.text-link{flex:1 1 220px;min-width:0;white-space:normal;overflow-wrap:anywhere}
.mes-fichiers-ajout{display:grid;gap:4px}
.mes-tbl a.badge{background:var(--accent-f);color:var(--accent-t);text-decoration:none}
@media (pointer:coarse){.mes-fichiers-liste .btn.s{min-height:44px}.mes-tbl a.badge{min-height:32px;display:inline-flex;align-items:center}}
.mes-tbl .mes-nom .lien-ref{font-weight:700;overflow-wrap:anywhere}
.mes-tbl .mes-age{font-weight:700;color:color-mix(in srgb,var(--rouge) 80%,var(--txt))}
.mes-tbl .mes-col-mes{background:color-mix(in srgb,var(--accent-f) 45%,transparent)}
.mes-obs{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.mes-annee{display:flex;align-items:center;gap:10px}
.mes-annee b{font-size:18px}
.mes-faites-kpis{margin:12px 0}
.mes-faites{table-layout:fixed;width:100%;font-size:13px}
.mes-faites th{font-size:11px;text-transform:uppercase;letter-spacing:.04em}
.mes-faites th:first-child{width:32px}.mes-faites th:nth-child(2){width:18%}.mes-faites th.mes-tot{width:15%}
.mes-faites .num{text-align:center}
.mes-faites .mes-cell{background:color-mix(in srgb,var(--accent) var(--i,0%),transparent);font-weight:700}
.mes-faites .mois-cour{box-shadow:inset 1px 0 0 var(--accent),inset -1px 0 0 var(--accent)}
.mes-tot{white-space:nowrap}
.mes-tot b{display:inline-block;min-width:26px;text-align:right}
.mes-barre-t{display:inline-block;width:calc(100% - 36px);height:6px;border-radius:999px;background:var(--fond2);vertical-align:middle;overflow:hidden}
.mes-barre-t span{display:block;height:100%;background:var(--accent)}
.mes-rel{margin-bottom:16px}
.mes-rel h3{display:flex;align-items:center;gap:8px;margin:0 0 8px}
.mes-regles{margin:0 0 12px;padding-left:20px;color:var(--txt2)}
.mes-regles li{margin-bottom:4px}
.mes-rel-form{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:12px}
.mes-rel-form .inp{flex:0 1 280px;min-width:0}
.mes-alerte-t{color:color-mix(in srgb,var(--rouge) 85%,var(--txt))}
details.mes-acc{margin-top:10px}
details.mes-acc>summary{cursor:pointer;font-weight:600;min-height:32px}
.mes-roles{display:grid;grid-template-columns:110px 1fr;gap:4px 12px;margin:0 0 12px;font-size:13px}
.mes-roles dt{font-weight:700}
.mes-roles dd{margin:0;color:var(--txt2)}
.mes-comptes{table-layout:fixed;width:100%;font-size:13px}
.mes-comptes th:nth-child(1){width:17%}.mes-comptes th:nth-child(2){width:20%}.mes-comptes th:nth-child(4){width:15%}.mes-comptes th:nth-child(5),.mes-comptes th:nth-child(6){width:6%}.mes-comptes th:last-child{width:170px}
.mes-comptes select.inp{width:100%;min-width:0}
.mes-comptes .badge{white-space:normal;text-align:left}
.mes-cpt-act{display:flex;flex-wrap:wrap;gap:6px}
.mes-cpt-act form{display:contents}
.mes-comptes tr.mes-off td{color:var(--txt3)}
.mes-journal{table-layout:fixed;width:100%;font-size:13px}
.mes-journal th:nth-child(1){width:130px}.mes-journal th:nth-child(2){width:14%}.mes-journal th:nth-child(3){width:11%}
/* Imports */
.imp-sec{margin-bottom:16px}
.imp-sec h2{margin:0 0 6px}
.imp-form label{font-weight:600}
.imp-ligne{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:6px 0}
.imp-ligne input[type=file]{flex:1 1 320px;min-width:0}
.imp-promos{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-top:10px}
.imp-promo{display:grid;gap:4px;padding:8px;border:1px solid var(--bord);border-radius:10px;text-align:center;min-width:0}
.imp-promo img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:6px}
.imp-promo-vide{display:grid;place-items:center;aspect-ratio:4/3;font-size:28px;background:var(--fond2);border-radius:6px}
.imp-tbl{table-layout:fixed;width:100%;font-size:13px}
.imp-tbl th{font-size:11px;text-transform:uppercase;letter-spacing:.03em}
.imp-tbl th:nth-child(1){width:9%}.imp-tbl th:nth-child(2){width:17%}.imp-tbl th:nth-child(3){width:13%}.imp-tbl th:nth-child(4){width:12%}.imp-tbl th:nth-child(9){width:5%}
.imp-tbl .num{text-align:center}
@media (max-width:1100px){.mes-haut{grid-template-columns:1fr}}
@media (max-width:760px){.mes-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.mes-tbl,.mes-faites,.mes-comptes,.mes-journal,.imp-tbl{table-layout:auto}.mes-roles{grid-template-columns:1fr}}
/* Fin — Tech-co · Utilisateurs, imports, MES */
a.chip-src,label.chip-src{display:inline-flex;align-items:center;text-decoration:none}
.pj-grille>.card+.card,.ct-grille>.card+.card{margin-top:0}
.ct-synthese summary{display:block;overflow-wrap:anywhere;cursor:pointer;margin-top:4px}
.pj-fichier,.em-fichier,.ct-fichier{display:inline-flex!important;width:auto!important;align-self:flex-start;flex-direction:row!important}

/* Reproduction — Salons (portail Salons : tableau de bord, calendrier, fiche, logistique, formulaires) */
.sa-onglets{display:flex;width:fit-content;margin-bottom:16px}
:is(.sa-bloc,.cell-min,.sa-pcarte-t)>a{align-self:flex-start;max-width:100%}
.sa-tbl a.lien-ref.trunc,.sa-tbl a.sa-nom-salon.trunc{display:inline-block;vertical-align:bottom}
.sa-compteur{min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--danger);color:var(--blanc);font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;margin-left:2px}
.sa-tete{align-items:center;margin-bottom:16px}
.sa-tete h1{font-size:22px;line-height:1.2}
.sa-sous{margin:4px 0 0;color:var(--txt3);font-size:14px;display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.sa-retour-lien{display:inline-flex;align-items:center;min-height:32px;color:var(--txt3);font-size:13px;margin-bottom:2px}
.sa-retour-lien:hover{color:var(--accent-t)}
.sa-ghost{background:transparent;border-color:transparent;color:var(--txt3)}
.sa-ghost:hover{background:var(--fond2);border-color:var(--bord);color:var(--txt)}
.sa-danger-plein{background:var(--danger);border-color:var(--danger);color:var(--blanc)}
.sa-danger-plein:hover{background:var(--danger-d);border-color:var(--danger-d)}
.sa-ic{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;flex:none;color:var(--accent-t);vertical-align:-3px}
.sa-ic svg{width:17px;height:17px;fill:currentColor}
.seg-tabs .tab svg{width:15px;height:15px;fill:currentColor}
.sa-nb{color:var(--txt3);font-weight:500;font-size:13px}
.sa-vide{color:var(--txt2);padding:14px 20px;margin:0}
.sa-vide-carte{text-align:center;padding:40px 20px}
.sa-aide{margin:10px 0 0}
.sa-rappels{margin:12px 0 0;padding-top:12px;border-top:1px solid var(--bord2)}
.sa-bloc-l{display:block}
.sa-nowrap{white-space:nowrap}
.sa-ok{color:color-mix(in srgb,var(--vert) 85%,var(--txt))}
.sa-ko{color:color-mix(in srgb,var(--danger) 85%,var(--txt))}
.sa-droite{display:flex;justify-content:flex-end}
.sa-hd-ligne{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sa-hd-ligne>form{margin:0}
.sa-hd-ligne h2{margin:0}
:is(.sa-hd-ligne,.sa-carte-hd,.sa-sec-hd,.sa-cal-barre)>.sp{flex:1}
.sa-badge-brand{background:var(--accent-f);color:var(--accent-t)}
.sa-badge-info{background:var(--bleu-f);color:var(--bleu)}
.sa-label{display:block;margin-bottom:6px;font-size:12px;font-weight:600;color:var(--txt2)}
/* KPI : trait haut accent, rouge si alerte */
.sa-kpis{margin-bottom:16px}
.sa-kpis-5{grid-template-columns:repeat(5,minmax(0,1fr))}
.sa-kpi{display:flex;flex-direction:column;border-top:3px solid var(--accent);padding:14px 18px;color:var(--txt);transition:border-color .2s,transform .2s}
.sa-kpi:hover{border-top-color:var(--accent-d);transform:translateY(-1px)}
.sa-kpi .v{font-variant-numeric:tabular-nums}
.sa-kpi.alerte{border-top-color:var(--danger)}
.sa-kpi.alerte .v{color:var(--danger)}
@media (max-width:1100px){.sa-kpis-5{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:760px){.sa-kpis-5{grid-template-columns:1fr 1fr}}
/* Grilles */
.sa-g-dash,.sa-g-fiche{grid-template-columns:minmax(0,3fr) minmax(0,2fr);align-items:start}
.sa-col{gap:16px;align-content:start}
@media (max-width:1100px){.sa-g-dash,.sa-g-fiche{grid-template-columns:1fr}}
/* Cartes à en-tête séparé */
.sa-carte{padding:0;overflow:hidden;margin-bottom:16px}
.sa-col>.sa-carte{margin-bottom:0}
.sa-carte-hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:14px 20px;border-bottom:1px solid var(--bord2)}
.sa-carte-hd h2{margin:0;display:flex;align-items:center;gap:8px}
.sa-carte-hd-sep{border-top:1px solid var(--bord2);background:var(--fond2)}
.sa-carte-hd-col{flex-direction:column;align-items:flex-start;gap:2px}
.sa-carte-hd-col p{margin:0}
.sa-carte-perso{border-left:4px solid var(--c)}
/* Ligne salon du tableau de bord */
.sa-ligne{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;padding:12px 20px 12px 16px;border-left:4px solid var(--c,var(--accent));border-bottom:1px solid var(--bord2);color:var(--txt);transition:background-color .15s}
.sa-ligne:last-child{border-bottom:0}
.sa-ligne:hover{background:color-mix(in srgb,var(--c,var(--accent)) 6%,var(--carte))}
.sa-ligne-c{display:flex;flex-direction:column;gap:2px;min-width:0}
.sa-ligne-c b{font-size:14.5px}
.sa-ligne-d{display:flex;flex-direction:column;align-items:flex-end;gap:4px;white-space:nowrap}
.sa-date{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;width:50px;min-height:52px;border:1px solid var(--bord);border-radius:8px;background:var(--carte);line-height:1.05;flex:none}
.sa-date small{font-size:10px;color:var(--txt3);letter-spacing:.03em}
.sa-date b{font-size:19px;font-weight:700}
.sa-nom-salon{font-weight:700;color:var(--txt)}
.sa-nom-salon:hover{color:var(--accent-t)}
/* Avatars d'initiales (couleur de la personne) */
.sa-av{--c:var(--txt3);width:26px;height:26px;border-radius:50%;background:var(--c);color:var(--blanc);display:inline-grid;place-items:center;font-size:10px;font-weight:700;letter-spacing:.02em;flex:none;box-shadow:0 0 0 2px var(--carte);line-height:1}
.sa-av.fonce{color:var(--nav)}
.sa-av.sm{width:22px;height:22px;font-size:9px}
.sa-av.xs{width:18px;height:18px;font-size:8px}
.sa-av.plus{background:var(--fond2);color:var(--txt3);box-shadow:0 0 0 2px var(--carte),inset 0 0 0 1px var(--bord)}
.sa-avs{display:inline-flex;align-items:center}
.sa-avs>.sa-av+.sa-av{margin-left:-6px}
/* Puces de personne */
.sa-chips{display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center}
.sa-chip{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border:1px solid var(--bord);border-radius:999px;background:var(--carte);font-size:12.5px;color:var(--txt);white-space:nowrap;max-width:100%}
a.sa-chip:hover{border-color:var(--c,var(--accent))}
.sa-chip .pt{width:8px;height:8px;border-radius:50%;background:var(--c,var(--txt3));flex:none}
.sa-chip.passe{color:var(--txt3)}
.sa-chip.passe .pt{opacity:.55}
/* Salons par participant */
.sa-parts{display:flex;flex-direction:column;gap:2px}
.sa-part{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(70px,40%) 26px;align-items:center;gap:10px;padding:5px 8px;border-radius:8px;color:var(--txt);min-height:36px}
.sa-part:hover{background:var(--fond2)}
.sa-part.moi{background:var(--accent-f)}
.sa-part.choisi{background:color-mix(in srgb,var(--c) 12%,var(--carte));font-weight:700}
.sa-part-nom{font-size:13.5px}
.sa-part-n{text-align:right;font-variant-numeric:tabular-nums}
.sa-barre{height:8px;border-radius:999px;background:var(--bord2);overflow:hidden}
.sa-barre>span{display:block;height:100%;border-radius:999px;background:var(--c)}
/* Camionnettes */
.sa-vans{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:10px}
@media (max-width:560px){.sa-vans{grid-template-columns:1fr}}
.sa-van{display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;padding:12px 14px;border:1px solid var(--bord);border-left:4px solid var(--bleu);border-radius:10px;background:var(--carte);font:inherit;color:var(--txt);min-width:0}
.sa-van.sud{border-left-color:var(--orange)}
button.sa-van{cursor:pointer;transition:transform .15s,box-shadow .15s}
button.sa-van:hover{transform:translateY(-1px);box-shadow:var(--ombre-c)}
.sa-van.reservee{background:var(--vert-f)}
.sa-van.occupee{background:var(--rouge-f)}
.sa-van form{margin:0}
.sa-van-t{font-size:13.5px}
.sa-van-n{font-size:13px;color:var(--txt2)}
.sa-van-chiffre{font-size:26px;font-weight:700;color:var(--accent-t);border-bottom:2px dotted var(--accent);line-height:1}
.sa-pt{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--bleu);vertical-align:0}
.sa-pt.sud{background:var(--orange)}
/* Modale camionnettes */
.sa-modal-large{width:min(880px,100%)}
.sa-modal{width:min(480px,100%)}
.sa-cam-barre{margin:12px 0 8px}
.sa-cam-mois{min-width:140px;text-align:center}
.sa-cam-resume{margin:4px 0 10px}
.sa-cam-sem,.sa-cam-grille{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.sa-cam-sem span{font-size:11px;font-weight:700;letter-spacing:.06em;color:var(--txt3);padding:4px 6px}
.sa-cam-grille{border:1px solid var(--bord);border-radius:8px;overflow:hidden}
.sa-cam-j{min-height:64px;padding:4px;border-right:1px solid var(--bord2);border-bottom:1px solid var(--bord2);display:flex;flex-direction:column;gap:2px;min-width:0}
.sa-cam-j:nth-child(7n){border-right:0}
.sa-cam-j .n{font-size:12px;font-weight:600}
.sa-cam-j.hors{background:var(--fond2)}
.sa-cam-j.hors .n{color:var(--txt3)}
.sa-cam-j.auj .n{color:var(--accent-t)}
.sa-cam-p{display:flex;align-items:center;gap:4px;font-size:11px;padding:1px 4px;border-radius:4px;background:var(--bleu-f);color:var(--txt);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.sa-cam-p.sud{background:var(--orange-f)}
.sa-cam-p .l{font-size:9.5px;font-weight:800;padding:0 3px;border-radius:3px;background:var(--bleu);color:var(--blanc);flex:none}
.sa-cam-p.sud .l{background:var(--orange)}
.sa-cam-titre{margin:16px 0 6px;color:var(--txt);text-transform:none;letter-spacing:0;font-size:14px}
.sa-cam-liste{border:1px solid var(--bord);border-radius:8px;overflow:hidden}
.sa-cam-ligne{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) minmax(0,1.6fr);gap:10px;padding:10px 14px;border-left:4px solid var(--bleu);border-bottom:1px solid var(--bord2);font-size:13px}
.sa-cam-ligne.sud{border-left-color:var(--orange)}
.sa-cam-ligne:last-child{border-bottom:0}
@media (max-width:560px){.sa-cam-ligne{grid-template-columns:1fr}}
/* Liste des salons */
.sa-filtres{padding:12px 14px;margin-bottom:16px;gap:10px;align-items:center}
.sa-filtres .seg-tabs{margin:0}
.sa-liste td{vertical-align:top}
.sa-col-date{white-space:nowrap}
/* Calendrier */
.sa-cal-barre{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.sa-cal-barre h1{min-width:170px;text-align:center;font-size:22px}
.sa-cal-barre .seg-tabs{margin:0}
.sa-btn-ic{width:40px;justify-content:center;font-size:18px;padding:4px 0}
.sa-leg{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.sa-leg-i{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:3px 12px 3px 6px;border:1px solid var(--bord);border-radius:999px;background:var(--carte);font-size:13px;color:var(--txt)}
.sa-leg-i:first-child{padding-left:12px}
.sa-leg-i:hover{border-color:var(--c,var(--accent))}
.sa-leg-i.on{box-shadow:0 0 0 1.5px var(--c,var(--accent));border-color:var(--c,var(--accent));background:color-mix(in srgb,var(--c,var(--accent)) 8%,var(--carte));font-weight:600}
.sa-cal{padding:0;overflow:hidden}
.sa-cal-sem,.sa-cal-grille{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.sa-cal-sem{border-bottom:1px solid var(--bord);background:var(--fond2)}
.sa-cal-sem span{padding:8px 12px;font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--txt3)}
.sa-cal-j{position:relative;min-height:118px;padding:8px 6px 6px;border-right:1px solid var(--bord2);border-bottom:1px solid var(--bord2);display:flex;flex-direction:column;gap:4px;min-width:0}
.sa-cal-j:nth-child(7n){border-right:0}
.sa-cal-j .n{font-size:13px;font-weight:600;width:24px;height:24px;display:grid;place-items:center;border-radius:50%;margin-left:2px}
.sa-cal-j.hors{background:var(--fond2)}
.sa-cal-j.hors .n{color:var(--txt3);font-weight:400}
.sa-cal-j.auj .n{background:var(--accent);color:var(--blanc)}
.sa-cal-add{position:absolute;top:6px;right:6px;width:24px;height:24px;border-radius:6px;display:grid;place-items:center;color:var(--accent-t);font-weight:700;opacity:0;transition:opacity .15s}
.sa-cal-j:hover .sa-cal-add,.sa-cal-add:focus-visible{opacity:1;background:var(--accent-f)}
@media (pointer:coarse){.sa-cal-add{opacity:.6}}
.sa-ev{display:flex;align-items:center;gap:5px;padding:3px 6px;border-radius:5px;border-left:3px solid var(--c);background:color-mix(in srgb,var(--c) 16%,var(--carte));color:var(--txt);font-size:12.5px;font-weight:550;line-height:1.25;min-width:0;transition:transform .15s}
.sa-ev:hover{transform:translateY(-1px)}
.sa-ev.cont-l{border-left-style:dotted}
.sa-ev-t{overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-width:0}
.sa-ev .sa-avs{flex:none}
/* Planning équipe */
.sa-plan-carte{padding:0;overflow:hidden}
.sa-plan{width:100%;border-collapse:collapse;table-layout:fixed;font-size:12px}
.sa-plan th,.sa-plan td{border-bottom:1px solid var(--bord2);border-left:1px solid var(--bord2);padding:4px 1px;text-align:center;vertical-align:middle;overflow:hidden}
.sa-plan th{background:var(--carte);text-transform:none;letter-spacing:0;color:var(--txt2);font-weight:600;line-height:1.15;padding:6px 1px}
.sa-plan th .l{display:block;font-size:10px;color:var(--txt3);font-weight:400}
.sa-plan .we{background:var(--fond2)}
.sa-plan th.auj{background:var(--accent);color:var(--blanc)}
.sa-plan th.auj .l{color:var(--blanc)}
.sa-plan-nom{width:170px;text-align:left!important;padding-left:12px!important;border-left:0!important}
.sa-plan-total{width:52px}
.sa-plan-p{display:flex;align-items:center;gap:8px;min-width:0}
.sa-case{display:block;width:calc(100% - 4px);max-width:26px;height:26px;margin:0 auto;border-radius:5px;background:var(--c)}
.sa-case.double{background:repeating-linear-gradient(45deg,var(--c) 0 4px,var(--carte) 4px 7px);box-shadow:inset 0 0 0 2px var(--c)}
.sa-case-leg{display:inline-block;width:16px;height:16px;vertical-align:-3px;margin:0 2px}
.sa-plan-pied{margin:0;padding:12px 16px;border-top:1px solid var(--bord2)}
@media (max-width:1100px){.sa-plan-nom{width:120px}}
/* Tableaux internes des cartes */
.sa-tbl{width:100%;border-collapse:collapse}
.sa-tbl th{background:var(--fond2)}
.sa-tbl td{vertical-align:middle}
.sa-act{white-space:nowrap;text-align:right}
.sa-act>*{display:inline-flex;vertical-align:middle}
.sa-act form{margin:0}
.sa-off td{color:var(--txt3)}
/* Fiche salon */
.sa-infos{border-top:3px solid var(--c);padding:18px 20px}
.sa-infos-g{display:grid;grid-template-columns:1fr 1fr;gap:16px 24px;padding-bottom:16px;border-bottom:1px solid var(--bord2)}
@media (max-width:560px){.sa-infos-g{grid-template-columns:1fr}}
.sa-bloc{display:flex;flex-direction:column;gap:2px;min-width:0;font-size:14px}
.sa-bloc-l{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--txt3);margin-bottom:2px}
span.sa-bloc-l.muted,.muted.sa-bloc-l{text-transform:none;letter-spacing:0;font-weight:400;font-size:12px;margin:2px 0 0}
.sa-sous-titre{display:flex;align-items:center;gap:6px;margin:16px 0 10px;color:var(--txt);text-transform:none;letter-spacing:0;font-size:14px}
.sa-pcarte{display:flex;align-items:center;gap:12px;padding:10px 14px;margin-bottom:8px;border-radius:8px;border-left:4px solid var(--c);background:color-mix(in srgb,var(--c) 9%,var(--carte))}
.sa-pcarte-t{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.sa-pcarte-t .small{overflow-wrap:anywhere}
.sa-js{display:inline-flex;gap:4px;flex:none}
.sa-j{font-size:10.5px;font-weight:700;padding:1px 6px;border-radius:999px;background:var(--fond2);color:var(--txt3)}
.sa-j.ok{background:var(--vert-f);color:color-mix(in srgb,var(--vert) 85%,var(--txt))}
.sa-pied-infos{margin:12px 0 0;padding-top:10px;border-top:1px solid var(--bord2)}
.sa-sec{padding:14px 20px;border-bottom:1px solid var(--bord2)}
.sa-sec:last-child{border-bottom:0}
.sa-sec-hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.sa-sec-hd h3{margin:0;display:flex;align-items:center;gap:6px;color:var(--txt);text-transform:none;letter-spacing:0;font-size:14px}
.sa-sec-hd form{margin:0}
.sa-sec-vide{margin:0;font-size:13.5px}
.sa-sec .sa-tbl{margin:0 -20px;width:calc(100% + 40px)}
.sa-sec .sa-tbl th:first-child,.sa-sec .sa-tbl td:first-child{padding-left:20px}
.sa-sec .sa-tbl th:last-child,.sa-sec .sa-tbl td:last-child{padding-right:20px}
.sa-pilule{min-height:30px!important;height:30px;width:auto!important;padding:2px 28px 2px 12px!important;border-radius:999px!important;font-size:12.5px!important;font-weight:600;border:1px solid transparent!important;background-color:var(--bleu-f)!important;color:var(--bleu)!important}
.sa-pilule.st-prepare,.sa-pilule.st-expedie{background-color:var(--orange-f)!important;color:color-mix(in srgb,var(--orange) 85%,var(--txt))!important}
.sa-pilule.st-sur_place,.sa-pilule.st-retourne{background-color:var(--vert-f)!important;color:color-mix(in srgb,var(--vert) 85%,var(--txt))!important}
.sa-pilule.st-annule{background-color:var(--fond2)!important;color:var(--txt3)!important}
.sa-memo{border-top:3px solid var(--orange)}
.sa-note{padding:10px 12px;margin-bottom:8px;border:1px solid var(--bord);border-left:4px solid var(--c);border-radius:8px;background:color-mix(in srgb,var(--orange) 5%,var(--carte))}
.sa-note-hd{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:4px}
.sa-note-hd .sp{flex:1}
.sa-note-hd form{margin:0}
.sa-note-t{white-space:pre-line;overflow-wrap:anywhere;font-size:13.5px}
.sa-note-form{margin-top:10px}
.sa-note-form p{margin:4px 0 8px}
.sa-frise{list-style:none;margin:0;padding:0 0 0 14px;border-left:2px solid var(--bord2);display:flex;flex-direction:column;gap:12px}
.sa-frise li{position:relative;display:flex;flex-direction:column;gap:1px;font-size:13px}
.sa-frise li::before{content:"";position:absolute;left:-20px;top:4px;width:10px;height:10px;border-radius:50%;background:var(--bord);box-shadow:0 0 0 2px var(--carte)}
.sa-accordeon{margin-top:12px}
.sa-accordeon>summary{cursor:pointer;color:var(--txt3);font-size:13px;min-height:32px;display:flex;align-items:center;gap:6px}
.sa-accordeon[open]>summary{margin-bottom:10px}
details.card.sa-accordeon{margin-top:16px}
/* Logistique */
.sa-afaire{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:16px}
@media (max-width:1100px){.sa-afaire{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:760px){.sa-afaire{grid-template-columns:1fr}}
.sa-af{display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid var(--bord);border-left:4px solid var(--orange);border-radius:10px;background:var(--carte);min-width:0}
.sa-af.pret{border-left-color:var(--vert)}
.sa-af-hd{display:flex;align-items:flex-start;gap:10px;min-width:0}
.sa-af-hd .badge{margin-left:auto;flex:none}
.sa-af-l{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.sa-af-ic{width:18px;color:var(--txt3);flex:none}
.sa-gantt{padding:10px 16px 4px;display:flex;flex-direction:column}
.sa-gantt-l{display:grid;grid-template-columns:150px minmax(0,1fr);gap:10px;align-items:center;min-height:36px;border-bottom:1px solid var(--bord2)}
.sa-gantt-tete{min-height:24px;font-size:11px;color:var(--txt3)}
.sa-gantt-nom{display:flex;flex-direction:column;min-width:0;font-size:12.5px;line-height:1.2}
.sa-gantt-piste{position:relative;height:30px}
.sa-gantt-tete .sa-gantt-piste{height:20px}
.sa-gantt-sem{position:absolute;top:2px;font-size:11px;white-space:nowrap;padding-left:3px}
.sa-gantt-trait{position:absolute;top:0;bottom:0;width:1px;background:var(--bord2)}
.sa-gantt-auj{position:absolute;top:0;bottom:0;width:2px;background:var(--accent);opacity:.6}
.sa-gantt-rouge{position:absolute;top:2px;bottom:2px;background:var(--rouge-f);box-shadow:inset 0 0 0 1px var(--danger);border-radius:3px}
.sa-gantt-barre{position:absolute;top:7px;height:16px;min-width:6px;border-radius:4px;background:var(--accent);color:var(--txt);display:flex;align-items:center}
.sa-gantt-barre span{position:absolute;left:calc(100% + 6px);font-size:11.5px;white-space:nowrap;color:var(--txt2)}
@media (max-width:760px){.sa-gantt-l{grid-template-columns:96px minmax(0,1fr)}}
/* Formulaires à sections numérotées */
.sa-form{max-width:980px;padding:20px 22px;margin-bottom:16px}
.sa-form-large{max-width:none}
.sa-form h2{display:flex;align-items:center;gap:8px}
.sa-etape{padding:4px 0 18px;margin-bottom:18px;border-bottom:1px solid var(--bord2)}
.sa-etape:last-of-type{border-bottom:0}
.sa-etape>h2{margin-bottom:14px}
.sa-num{width:24px;height:24px;border-radius:50%;background:var(--accent);color:var(--blanc);display:inline-grid;place-items:center;font-size:12.5px;font-weight:700;flex:none}
.sa-inter{margin:14px 0 8px}
.sa-case-l{display:flex!important;align-items:center;gap:8px;min-height:36px;font-size:14px;color:var(--txt);cursor:pointer}
.sa-case-l.sa-inline{display:inline-flex!important;min-height:0;margin-left:6px}
.sa-opts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.sa-opts-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.sa-opts-2{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:12px}
@media (max-width:1100px){.sa-opts{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.sa-opts,.sa-opts-3,.sa-opts-2{grid-template-columns:1fr}}
form label.sa-opt,.sa-opt{display:flex!important;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--bord);border-radius:10px;background:var(--carte);cursor:pointer;min-width:0;min-height:56px;transition:border-color .15s,background .15s;font-weight:400}
.sa-opt:hover{border-color:color-mix(in srgb,var(--accent) 55%,var(--bord))}
.sa-opt:has(input:checked){border-color:var(--c,var(--accent));background:color-mix(in srgb,var(--c,var(--accent)) 9%,var(--carte));box-shadow:inset 0 0 0 1px var(--c,var(--accent))}
.sa-opt:has(input:disabled){opacity:.7;cursor:not-allowed}
.sa-opt:has(input:focus-visible){box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}
.sa-opt-radio{align-items:flex-start!important}
.sa-opt-radio input{margin-top:3px}
.sa-opt-t{display:flex;flex-direction:column;gap:2px;min-width:0}
.sa-van-opt{border-left:4px solid var(--bleu)}
.sa-van-opt.sud{border-left-color:var(--orange)}
.sa-encadre{border:1px solid var(--bord);border-radius:10px;padding:12px 16px 14px;margin:0 0 16px;min-width:0}
.sa-encadre legend{padding:0 6px;font-weight:700;font-size:13.5px}
.sa-couleurs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px}
.sa-couleurs input[type=color]{width:52px;height:36px;padding:2px;border:1px solid var(--bord);border-radius:6px;background:var(--carte);cursor:pointer}
.sa-pastille{width:28px;height:28px;border-radius:50%;border:2px solid var(--carte);background:var(--c);box-shadow:0 0 0 1px var(--bord);cursor:pointer;padding:0}
.sa-pastille.on,.sa-pastille:focus-visible{box-shadow:0 0 0 2px var(--txt);outline:none}
.sa-actions{position:sticky;bottom:0;z-index:4;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:14px 0 4px;margin-top:4px;background:linear-gradient(to bottom,color-mix(in srgb,var(--carte) 0%,transparent),var(--carte) 30%)}
.sa-actions-statiques{position:static;background:none}
.sa-reglages>.sa-actions{padding:14px 0;background:linear-gradient(to bottom,transparent,var(--fond) 30%)}
.sa-pagination{display:flex;align-items:center;gap:8px;padding:12px 20px;border-top:1px solid var(--bord2)}
.sa-liste-num{padding-left:20px;line-height:1.6}
.sa-col-2{align-items:start}
.participant-row{margin-bottom:8px;padding-bottom:8px;border-bottom:1px dashed var(--bord2)}
@media (max-width:560px){.sa-ligne{grid-template-columns:auto minmax(0,1fr)}.sa-ligne-d{grid-column:2;flex-direction:row;align-items:center;justify-content:space-between}}
/* Reproduction — Tech-co · Planning, agenda, tâches, contacts */
/* Couleurs : accent bleu ardoise pour l'interaction ; urgence des tâches via --danger/--orange/--jaune/--accent ;
   couleur personnelle d'un tech-co passée en --c (style inline, valeur de User::ucolor()). */
.tc-pl-hd{align-items:center;gap:8px}
.tc-pense-bete{background:var(--orange-f);border-color:color-mix(in srgb,var(--orange) 40%,var(--bord));margin-bottom:14px}
.tc-pl-etat{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 10px}
.tc-pl-nav{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.tc-pl-nav .sp{flex:1}
.tc-pl-sem{font-size:15px;margin-left:6px}
.tc-pl-pers{margin-bottom:12px}
.chip-src.tc-pers{border-color:var(--c,var(--bord));border-width:1.5px}
.chip-src.tc-pers.on{background:var(--c,var(--accent));border-color:var(--c,var(--accent));color:var(--blanc)}
.tc-synth{margin-bottom:14px}
.tc-synth>summary{cursor:pointer;list-style:none;display:flex;gap:10px;flex-wrap:wrap;align-items:baseline}
.tc-synth>summary::-webkit-details-marker{display:none}
.tc-synth>summary::before{content:'▸';color:var(--txt3)}
.tc-synth[open]>summary::before{content:'▾'}
.tc-synth>summary b{color:var(--accent-t)}
.tc-synth-t{width:100%;table-layout:fixed;border-collapse:collapse;margin-top:10px;font-size:13px}
.tc-synth-t th{font-size:11.5px;color:var(--txt3);font-weight:600;text-align:left;padding:6px 8px;border-bottom:1px solid var(--bord2)}
.tc-synth-t td{padding:7px 8px;border-bottom:1px solid var(--bord2);overflow:hidden}
.tc-synth-t th:nth-child(1){width:17%}.tc-synth-t th:nth-child(2){width:6%}.tc-synth-t th:nth-child(3){width:17%}.tc-synth-t th:nth-child(4){width:15%}
.tc-synth-t .num{text-align:center}
.tc-synth-t th{white-space:normal;text-transform:none;letter-spacing:0;line-height:1.25;vertical-align:bottom;overflow-wrap:anywhere}
.tc-synth-t .fort{font-weight:700}
.tc-synth-nom{border-left:4px solid var(--c,var(--bord));font-weight:600}
.tc-synth-tot td{font-weight:700;border-bottom:0}
.tc-occ{display:flex;align-items:center;gap:6px;white-space:nowrap}
.tc-occ-b{flex:1;min-width:40px;height:6px;border-radius:999px;background:var(--bord2);overflow:hidden;display:block}
.tc-occ-b>span{display:block;height:100%;background:var(--c,var(--accent));border-radius:999px}
.tc-vert{color:var(--vert);font-weight:700}
.tc-rouge{color:var(--danger);font-weight:700}
.tc-grille{background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);overflow:hidden;margin-bottom:12px}
.tc-grille-l{display:grid;grid-template-columns:minmax(120px,1.3fr) repeat(7,minmax(0,1fr));border-top:1px solid var(--bord2)}
.tc-grille-tete{border-top:0}
.tc-grille-tete>div{padding:8px 6px;font-size:12.5px;font-weight:700;text-align:center;color:var(--txt2)}
.tc-grille-tete>div.dim,.tc-cell.dim{color:var(--accent-t)}
.tc-grille-tete>div.auj{color:var(--accent-t);background:var(--accent-f)}
.tc-grille-nom{padding:10px;border-left:4px solid var(--c,var(--bord));display:flex;flex-direction:column;gap:2px;min-width:0;overflow-wrap:anywhere}
.tc-cell{all:unset;box-sizing:border-box;display:block;padding:6px 5px;border-left:1px solid var(--bord2);min-height:64px;cursor:pointer;min-width:0}
.tc-cell:hover{background:var(--fond2)}
.tc-cell:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.tc-cell.dim{background:color-mix(in srgb,var(--accent-f) 45%,transparent)}
.tc-cell.auj{background:var(--accent-f)}
.tc-els{display:flex;flex-direction:column;gap:4px}
.tc-ev{display:block;border-left:3px solid var(--c,var(--accent));background:color-mix(in srgb,var(--c,var(--accent)) 10%,var(--carte));border-radius:5px;padding:4px 6px;font-size:12px;line-height:1.3;overflow-wrap:anywhere;text-align:left}
.tc-ev-h{display:block;font-weight:700;color:var(--c,var(--accent-t))}
.tc-ev-t{display:block;font-weight:600;color:var(--txt)}
.tc-ev-l{display:block;color:var(--txt3);font-size:11.5px}
.tc-ev.s-salon{border-left-color:var(--violet);background:var(--violet-f)}
.tc-ev.s-tache{border-left-color:var(--orange);background:var(--orange-f)}
.tc-ev.s-visite{border-left-color:var(--vert);background:var(--vert-f)}
.tc-ev.s-prive{border-left-style:dashed;background:var(--fond2)}
.tc-semaine{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin-bottom:12px}
.tc-jour{background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);min-height:220px;display:flex;flex-direction:column;min-width:0}
.tc-jour.auj{border:2px solid var(--accent)}
.tc-jour-hd{display:flex;align-items:center;justify-content:space-between;padding:8px;gap:4px}
.tc-jour-t{all:unset;cursor:pointer;font-weight:700;font-size:13px;color:var(--txt2)}
.tc-jour-t:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.tc-jour.auj .tc-jour-t,.tc-jour.dim .tc-jour-t{color:var(--accent-t)}
.tc-plus{min-width:28px;height:28px;border:1px solid var(--bord);background:var(--carte);border-radius:6px;color:var(--accent);font-weight:700;cursor:pointer}
.tc-plus:hover{border-color:var(--accent);background:var(--accent-f)}
.tc-jour-c{padding:0 8px 8px;flex:1}
.tc-vide{display:block;text-align:center;margin-top:20px}
.tc-leg{display:flex;flex-wrap:wrap;gap:14px;font-size:12.5px;color:var(--txt2);margin:6px 0 16px}
.tc-leg-i{display:inline-flex;align-items:center;gap:6px}
.tc-leg-i::before{content:'';width:4px;height:14px;border-radius:2px;background:var(--accent)}
.tc-leg-i.s-salon::before{background:var(--violet)}.tc-leg-i.s-tache::before{background:var(--orange)}.tc-leg-i.s-visite::before{background:var(--vert)}.tc-leg-i.s-prive::before{background:var(--txt3)}.tc-leg-i.s-outlook::before{background:var(--bleu)}
.tc-modal{width:min(560px,100%)}
.tc-modal-hd{border-bottom:1px solid var(--bord2);padding-bottom:10px;margin-bottom:12px}
.tc-modal-hd h2{margin:0 0 4px}
.tc-modal-hd p{margin:0}
#modal-jour-liste .tc-els{gap:6px;margin-bottom:12px}
.tc-empty{border:1px dashed var(--bord);border-radius:10px;padding:20px;margin-bottom:12px}
.tc-journee{align-self:end;padding-bottom:10px}
.tc-kicker{font-size:12px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:var(--accent-t);margin:0 0 6px}
.tc-kicker-vert{color:var(--vert)}
.tc-kicker-n{margin-top:14px}
.tc-ag-salons{margin-bottom:14px}
.tc-ag-salons-hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.tc-ag-salons-hd .sp{flex:1}
.tc-ag-salons-hd h2{margin:0}
.tc-salon{display:flex;gap:12px;border:1px solid var(--bord2);border-left:4px solid var(--accent);border-radius:8px;padding:10px 12px;margin-bottom:8px;background:var(--carte)}
.tc-salon-date{flex:none;width:58px;text-align:center;background:var(--accent-f);border-radius:8px;padding:6px 2px;color:var(--accent-t);display:flex;flex-direction:column;justify-content:center}
.tc-salon-date b{font-size:17px;line-height:1.1}
.tc-salon-date span{font-size:10.5px;font-weight:800}
.tc-salon-c{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}
.tc-salon-t{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.badge.tc-cpt{background:var(--accent-f);color:var(--accent-t)}
.badge.tc-cpt-proche{background:var(--accent);color:var(--blanc)}
.tc-salon-pers{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}
.tc-pers-pt{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600}
.tc-pers-pt::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--c,var(--txt3))}
.tc-ag-nav{display:flex;gap:6px;margin:0 0 10px}
.tc-mois{margin-bottom:14px}
.tc-mois-g{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}
.tc-mois-h{text-align:center;font-size:11.5px;font-weight:700;color:var(--txt3)}
.tc-mois-c{all:unset;box-sizing:border-box;min-height:58px;border:1px solid var(--bord2);border-radius:7px;padding:4px 5px;display:flex;flex-direction:column;gap:2px;cursor:pointer;min-width:0;background:var(--carte)}
.tc-mois-c:hover{border-color:var(--accent)}
.tc-mois-c:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.tc-mois-c.auj{border:2px solid var(--accent);background:var(--accent-f)}
.tc-mois-n{font-size:12px;font-weight:700}
.tc-mois-ev{display:block;font-size:11px;line-height:1.25;padding:1px 4px;border-radius:4px;background:var(--c,var(--accent));color:var(--blanc);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tc-mois-ev.s-salon{background:var(--accent)}
.tc-ag-ev{display:flex;justify-content:space-between;gap:8px;align-items:center;flex-wrap:wrap}
.tc-intro{margin:0 0 12px;line-height:1.7}
.badge.tc-urg{color:var(--blanc);border:0}
.tc-urg.u4{background:var(--danger)}.tc-urg.u3{background:var(--orange)}.tc-urg.u2{background:var(--jaune)}.tc-urg.u1{background:var(--accent)}.tc-urg.ok{background:var(--vert)}.tc-urg.retard{background:var(--txt);color:var(--carte)}
.tc-compteurs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr)) minmax(0,2fr);gap:10px;margin-bottom:14px}
.tc-compteurs .tc-cpt{border-radius:var(--r);padding:12px 14px;display:flex;flex-direction:column;justify-content:space-between;min-height:86px;background:var(--carte);border:1px solid var(--bord);border-top:4px solid var(--accent)}
.tc-compteurs .tc-cpt b{font-size:28px;line-height:1}
.tc-compteurs .tc-cpt span{font-weight:700;font-size:13px}
.tc-compteurs .tc-cpt.u4{border-top-color:var(--danger)}.tc-compteurs .tc-cpt.u4 b{color:var(--danger)}
.tc-compteurs .tc-cpt.u3{border-top-color:var(--orange)}.tc-compteurs .tc-cpt.u3 b{color:var(--orange)}
.tc-compteurs .tc-cpt.u2{border-top-color:var(--jaune)}.tc-compteurs .tc-cpt.u2 b{color:var(--jaune)}
.tc-compteurs .tc-cpt.u1{border-top-color:var(--accent)}.tc-compteurs .tc-cpt.u1 b{color:var(--accent-t)}
.tc-compteurs .tc-cpt.retard{border-top-color:var(--txt)}
.tc-moy{display:flex;flex-direction:column;justify-content:space-between;gap:6px}
.tc-moy-hd{display:flex;justify-content:space-between;align-items:baseline}
.tc-moy-hd b{font-size:22px}
.tc-moy-b{flex:none;height:8px}
.tc-todo{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,320px);gap:14px;align-items:start}
.tc-todo-g{min-width:0}
.tc-barre{margin-bottom:12px}
.tc-tache{background:var(--carte);border:1px solid var(--bord);border-left:6px solid var(--accent);border-radius:var(--r);padding:12px 14px;margin-bottom:10px}
.tc-tache.u4{border-left-color:var(--danger);background:color-mix(in srgb,var(--danger) 5%,var(--carte))}
.tc-tache.u3{border-left-color:var(--orange);background:color-mix(in srgb,var(--orange) 6%,var(--carte))}
.tc-tache.u2{border-left-color:var(--jaune);background:color-mix(in srgb,var(--jaune) 6%,var(--carte))}
.tc-tache.ok{border-left-color:var(--vert);background:var(--vert-f)}
.tc-tache-hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tc-tache-hd .sp{flex:1}
.tc-tache-t{all:unset;cursor:pointer;font-weight:700;font-size:15px;color:var(--txt);overflow-wrap:anywhere}
.tc-tache-t:hover{color:var(--accent-t);text-decoration:underline}
.tc-tache-t:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.tc-parts{display:flex;flex-wrap:wrap;gap:5px}
.tc-part{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;border:1px solid var(--bord);border-radius:999px;padding:2px 9px;background:var(--carte)}
.tc-part::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--c,var(--txt3))}
.tc-part-ok{color:var(--vert)}
.tc-tache-dates{display:flex;gap:14px;flex-wrap:wrap;margin:6px 0}
.tc-tache-dates .tc-ech{color:var(--txt2)}
.tc-tache-desc{margin:4px 0 8px;font-size:13.5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:pre-line}
.tc-avance{display:flex;align-items:center;gap:10px}
.tc-segs{flex:1;display:grid;grid-template-columns:repeat(10,1fr);gap:3px}
.tc-segs form{display:contents}
.tc-seg{height:14px;border:0;border-radius:3px;background:var(--bord2);cursor:pointer;padding:0}
.tc-seg:hover{background:color-mix(in srgb,var(--accent) 40%,var(--bord2))}
.tc-seg.on{background:var(--accent)}
.tc-tache.ok .tc-seg.on,.tc-detail.ok .tc-seg.on{background:var(--vert)}
.tc-seg:focus-visible,.tc-rond:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.tc-pct{min-width:44px;text-align:right}
.tc-rond{width:30px;height:30px;border-radius:50%;border:2px solid var(--vert);background:var(--carte);color:var(--vert);font-weight:700;cursor:pointer}
.tc-rond.on{background:var(--vert);color:var(--blanc)}
.tc-tache-pied{border-top:1px dashed var(--bord);margin-top:8px;padding-top:6px}
.tc-journal{position:sticky;top:12px;max-height:calc(100vh - 40px);overflow:auto}
.tc-journal h2{margin-top:0}
.tc-hist{border-left:4px solid var(--accent);background:var(--fond2);border-radius:6px;padding:7px 10px;margin-bottom:8px;overflow-wrap:anywhere}
.tc-hist.u4{border-left-color:var(--danger)}.tc-hist.u3{border-left-color:var(--orange)}.tc-hist.u2{border-left-color:var(--jaune)}.tc-hist.ok{border-left-color:var(--vert)}
.tc-hist-hd{display:flex;justify-content:space-between;gap:8px}
.tc-hist-t{font-weight:700;font-size:13px}
.tc-detail-t{margin:6px 0 8px;padding-bottom:8px;border-bottom:3px solid var(--accent)}
.tc-detail.u4 .tc-detail-t{border-bottom-color:var(--danger)}.tc-detail.u3 .tc-detail-t{border-bottom-color:var(--orange)}.tc-detail.u2 .tc-detail-t{border-bottom-color:var(--jaune)}.tc-detail.ok .tc-detail-t{border-bottom-color:var(--vert)}
.tc-detail-dates{display:flex;flex-direction:column;gap:2px;margin-bottom:8px}
.tc-detail-desc{background:var(--fond2);border-radius:8px;padding:10px 12px;white-space:pre-line;font-size:13.5px;overflow-wrap:anywhere;max-height:40vh;overflow:auto}
.tc-detail-part{display:flex;gap:10px;align-items:center}
.tc-detail-ic{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--carte);border:1px solid var(--bord);flex:none}
.tc-part-n2{display:inline-flex;align-items:center;gap:6px}
.tc-part-n2::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--c,var(--txt3))}
.tc-com{display:flex;gap:8px;align-items:flex-end;margin-top:10px}
.tc-com textarea{flex:1}
.tc-detail-act{margin-top:12px}
.tc-apercu{border:1px solid var(--bord);border-radius:var(--r);padding:14px;background:var(--fond2)}
.tc-urgences,.tc-part-choix{border:0;padding:0;margin:6px 0;display:flex;flex-wrap:wrap;gap:8px}
.tc-urgences legend,.tc-part-choix legend{font-size:13px;font-weight:600;color:var(--txt2);margin-bottom:6px;width:100%}
.tc-urg-opt{position:relative;flex:1 1 100px;display:flex;flex-direction:column;align-items:center;gap:4px;border:1.5px solid var(--bord);border-radius:8px;padding:8px;cursor:pointer;font-weight:700;font-size:13px}
.tc-urg-opt input{position:absolute;opacity:0;pointer-events:none}
.tc-urg-pt{width:12px;height:12px;border-radius:50%;background:var(--accent)}
.tc-urg-opt.u4 .tc-urg-pt{background:var(--danger)}.tc-urg-opt.u3 .tc-urg-pt{background:var(--orange)}.tc-urg-opt.u2 .tc-urg-pt{background:var(--jaune)}
.tc-urg-opt:has(input:checked){border-color:var(--accent);background:var(--accent-f);color:var(--accent-t)}
.tc-urg-opt:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}
.tc-date{max-width:220px}
.tc-ech-l{margin:2px 0}
.tc-raccourcis{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.tc-bulle{position:relative;display:inline-flex;align-items:center;gap:6px;border:1.5px solid var(--bord);border-radius:999px;padding:6px 12px;cursor:pointer;font-size:13px;font-weight:600}
.tc-bulle input{position:absolute;opacity:0;pointer-events:none}
.tc-bulle-pt{width:10px;height:10px;border-radius:50%;background:var(--c,var(--txt3))}
.tc-bulle:has(input:checked){border-color:var(--accent);background:var(--accent-f);color:var(--accent-t)}
.tc-bulle:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}
.tc-part-n{width:100%;margin:2px 0 0;color:var(--txt3)}
.tc-range{display:flex;align-items:center;gap:10px}
.tc-range input{flex:1}
.tc-plus-opts>summary{cursor:pointer;color:var(--txt3);font-size:13px}
.tc-rtask{border-left:4px solid var(--accent);gap:10px;align-items:center;padding-left:12px}
.tc-rtask.t-mise_en_service{border-left-color:var(--danger)}.tc-rtask.t-demande_information{border-left-color:var(--vert)}.tc-rtask.t-demande_passage{border-left-color:var(--jaune)}.tc-rtask.t-nouveau_prospect{border-left-color:var(--bleu)}
.tc-rtask-f select.inp{max-width:200px}
.tc-type-pt{width:9px;height:9px;border-radius:2px;margin-right:6px;background:var(--accent)}
.t-mise_en_service .tc-type-pt{background:var(--danger)}.t-demande_information .tc-type-pt{background:var(--vert)}.t-demande_passage .tc-type-pt{background:var(--jaune)}.t-nouveau_prospect .tc-type-pt{background:var(--bleu)}
.chip-src.on .tc-type-pt{background:var(--blanc)}
.tc-ct-barre{display:flex;gap:8px;align-items:flex-start;flex-wrap:wrap;margin-bottom:10px}
.tc-ct-barre>.filtres-barre{flex:1;min-width:0}
.tc-vcf{margin:0}
.tc-vcf label.btn{min-height:44px;display:inline-flex;align-items:center;cursor:pointer;font-size:14px;font-weight:600}
.tc-vcf label.btn:focus-within{outline:2px solid var(--accent);outline-offset:2px}
.tc-vcf label.btn{position:relative;overflow:hidden}
.tc-vcf input[type=file]{position:absolute;inset:0;width:1px!important;height:1px;max-width:1px;opacity:0;clip:rect(0 0 0 0);pointer-events:none}
.tc-ct-chips{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.tc-ct-grp{font-size:12.5px;letter-spacing:.6px;color:var(--txt2);margin:16px 0 8px;display:flex;gap:8px;align-items:center}
.tc-ct{display:flex;gap:12px;background:var(--carte);border:1px solid var(--bord);border-left:4px solid var(--vert);border-radius:var(--r);padding:12px 14px;margin-bottom:8px;cursor:pointer}
.tc-ct:hover{border-color:var(--accent);border-left-color:var(--vert)}
.tc-ct:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.tc-ct-av{flex:none;width:40px;height:40px;border-radius:50%;background:var(--txt);color:var(--carte);display:grid;place-items:center;font-weight:800;font-size:13px}
.tc-ct-c{min-width:0;display:flex;flex-direction:column;gap:3px}
.tc-ct-l1{display:flex;flex-wrap:wrap;gap:6px;align-items:baseline;overflow-wrap:anywhere}
.tc-ct-f{color:var(--txt2);font-weight:600;font-size:13px}
.badge.tc-adm{background:var(--violet-f);color:var(--violet)}
.tc-ct-num{display:flex;flex-wrap:wrap;gap:6px}
.tc-ct-chip{border:1px solid var(--bord);border-radius:999px;padding:3px 10px;font-size:12.5px;font-weight:700;color:var(--txt);text-decoration:none;overflow-wrap:anywhere}
.tc-ct-chip:hover{border-color:var(--accent);color:var(--accent-t)}
.tc-ct-kv{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;margin-bottom:10px;font-size:14px;overflow-wrap:anywhere}
.tc-ct-kv .l{display:block;font-size:12px;font-weight:600;color:var(--txt3)}
.tc-ct-kv .pleine{grid-column:1/-1}
.tc-visible{border:1px solid var(--bord);border-radius:8px;padding:10px 12px;display:flex;gap:10px;align-items:flex-start}
@media (max-width:1100px){.tc-compteurs{grid-template-columns:repeat(5,minmax(0,1fr))}.tc-moy{grid-column:1/-1}.tc-todo{grid-template-columns:1fr}.tc-journal{position:static;max-height:none}.tc-semaine{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:760px){
  .tc-grille-tete{display:none}
  .tc-grille-l{grid-template-columns:1fr}
  .tc-cell{border-left:0;border-top:1px solid var(--bord2);min-height:0}
  .tc-cell .sr-only{position:static;width:auto;height:auto;clip:auto;margin:0 0 4px;display:block;font-weight:700;font-size:12px;color:var(--txt3)}
  .tc-semaine{grid-template-columns:1fr}
  .tc-jour{min-height:0}
  .tc-compteurs{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tc-mois-g{gap:3px}.tc-mois-c{min-height:44px;padding:3px}.tc-mois-ev{font-size:0;height:6px;padding:0}
  .tc-ct-kv{grid-template-columns:1fr}
  .tc-synth-t{table-layout:auto}
}
/* Fin — Tech-co · Planning, agenda, tâches, contacts */
.ct-synthese summary.text-link{white-space:normal;max-width:100%}

/* Reproduction — Tech-co · Matériel (prêts et contrat de prêt, devis, produits, stock promo, camionnettes, démos, dotations, goodies) */
.mat-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:4px 0 12px}
.mat-kpi{display:flex;flex-direction:column;gap:2px;padding:12px 14px;border:1px solid var(--bord);border-left:4px solid var(--k,var(--accent));border-radius:var(--r);background:var(--carte);color:var(--txt);text-decoration:none;min-width:0}
.mat-kpi b{font-size:24px;line-height:1.1;color:var(--k,var(--accent))}
.mat-kpi span{font-size:12.5px;font-weight:600;color:var(--txt2)}
.mat-kpi.k-orange{--k:var(--orange)}.mat-kpi.k-rouge{--k:var(--rouge)}.mat-kpi.k-vert{--k:var(--vert)}
.mat-kpi.pale{opacity:.6}
a.mat-kpi:hover{border-color:var(--k);box-shadow:var(--ombre-c)}
.mat-kpi.on{box-shadow:inset 0 0 0 1px var(--k)}
.mat-bandeau{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;padding:10px 14px;margin-bottom:12px;border:1px dashed var(--bord);border-radius:var(--r);background:var(--carte);font-size:13px}
.mat-bandeau form{display:inline}
.mat-filtres{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:10px 0}
.mat-vide{border:1px dashed var(--bord);border-radius:var(--r);background:var(--carte);padding:22px}
.mat-ligne{display:flex;align-items:center;gap:12px;padding:12px 14px;margin-bottom:8px;border:1px solid var(--bord);border-left:4px solid var(--orange);border-radius:var(--r);background:var(--carte);min-width:0}
.mat-ligne.retard{border-left-color:var(--rouge)}
.mat-ligne.rendu{border-left-color:var(--vert);opacity:.85}
.mat-ligne-c{flex:1;min-width:0;display:grid;gap:2px}
.mat-ligne-c .badge{margin-left:6px}
.mat-ligne-act{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.mat-ligne-act form{display:inline}
/* Contrat de prêt (assistant plein écran) */
.pret-page{max-width:1000px;margin:0 auto}
.pret-barre{position:sticky;top:0;z-index:30;display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;padding:10px 14px;margin:0 0 14px;background:color-mix(in srgb,var(--carte) 94%,transparent);backdrop-filter:blur(6px);border:1px solid var(--bord);border-bottom:3px solid var(--accent);border-radius:var(--r);box-shadow:var(--ombre-c)}
.pret-fermer{width:36px;height:36px;border-radius:50%;text-decoration:none}
.pret-barre-t{display:grid;flex:1 1 200px;min-width:0}
.pret-barre-t b{font-size:15px}
.pret-remise{display:flex;align-items:center;gap:4px;border:0;margin:0;padding:0}
.pret-remise legend{float:left;margin-right:6px;text-transform:uppercase;letter-spacing:.05em}
.pret-remise .tab.seg{cursor:pointer}
.pret-remise .tab.seg:has(input:checked){background:var(--accent);color:var(--blanc);border-color:var(--accent)}
.pret-remise .tab.seg:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}
.pret-barre-act{display:flex;gap:8px;flex-wrap:wrap}
.pret-doc{background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);box-shadow:var(--ombre-c);padding:28px 36px;font-size:14px;line-height:1.55}
.pret-doc p{margin:8px 0}
.pret-entete{display:flex;gap:22px;align-items:center;padding-bottom:14px;border-bottom:3px solid var(--txt);margin-bottom:18px}
.pret-logo{display:grid;line-height:1;text-align:center;font-style:italic}
.pret-logo b{font-size:22px;font-weight:800;color:var(--accent-t)}
.pret-logo small{font-size:11px;color:var(--txt2);margin-bottom:4px}
.pret-societe{font-size:16px;font-style:italic;font-weight:800}
.pret-titre{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}
.pret-titre h1{font-size:24px;font-style:italic;font-weight:800;margin:0}
.pret-num{font-weight:700;white-space:nowrap}
.pret-num span{display:inline-block;min-width:110px;border-bottom:1px solid var(--txt3);padding:0 4px}
.pret-partie{border:1px solid var(--bord);border-left:4px solid var(--accent);border-radius:6px;padding:12px 16px;margin:14px 0}
.pret-k{font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--accent-t);margin:0 0 6px}
.pret-art{display:flex;align-items:center;gap:10px;font-size:15px;font-style:italic;font-weight:800;text-transform:uppercase;margin:24px 0 8px}
.pret-art span{display:inline-grid;place-items:center;min-width:30px;height:20px;padding:0 6px;background:var(--accent);color:var(--blanc);font-size:11px;font-style:italic;border-radius:3px;transform:skewX(-12deg)}
.pret-motif,.pret-rgpd{display:grid;gap:4px;max-width:420px;font-size:12.5px;font-weight:600;color:var(--txt2)}
.outil-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px;margin:10px 0}
.outil-grille form{display:contents}
.outil-tuile{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 8px;border:1px solid var(--bord);border-radius:10px;background:var(--fond2);color:var(--txt);cursor:pointer;text-align:center;font:inherit;min-width:0;position:relative}
.outil-tuile b{font-size:12.5px}
.outil-tuile small{font-size:11px;color:var(--accent-t);font-weight:600}
.outil-tuile:hover{border-color:var(--accent)}
.outil-tuile[aria-pressed=true]{background:var(--accent-f);border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.outil-tuile[aria-pressed=true]::after{content:"✓";position:absolute;top:6px;right:6px;width:20px;height:20px;border-radius:50%;background:var(--accent);color:var(--blanc);font-size:12px;line-height:20px}
.outil-tuile:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.outil-ic{display:inline-grid;place-items:center;width:52px;height:52px;border-radius:10px;background:var(--carte);color:var(--txt);box-shadow:var(--ombre-c);flex:none}
.pret-lignes{display:grid;gap:8px}
.pret-ligne{display:grid;grid-template-columns:2fr 1.4fr 1.4fr 1.4fr 44px;gap:8px;align-items:end;padding:10px;border:1px solid var(--bord2);border-radius:8px;background:var(--fond2)}
.pret-ligne label{display:grid;gap:3px;font-size:11.5px;font-weight:600;color:var(--txt2);min-width:0}
.pret-retirer{width:44px;height:44px;justify-content:center}
.pret-plus{width:100%;justify-content:center;border-radius:999px;margin:8px 0}
.pret-accord{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border:1px solid var(--bord);border-radius:8px;background:var(--fond2);margin:12px 0}
.pret-sigs{margin-top:10px}
.pret-sig{border:1px solid var(--bord);border-radius:8px;padding:12px 14px;display:grid;gap:8px}
.pret-sig label{display:grid;gap:3px;font-size:12px;font-weight:600;color:var(--txt2)}
.pret-note{border-left:4px solid var(--accent);background:var(--fond2);padding:8px 12px;font-size:12.5px;color:var(--txt2);border-radius:4px}
.pret-etat th,.pret-etat td{text-align:center;font-size:12.5px}
.pret-etat th:first-child,.pret-etat td:first-child{text-align:left}
.pret-etat input{width:20px;height:20px}
.pret-photos{border:1px solid var(--bord);border-left:4px solid var(--accent);border-radius:8px;padding:12px 14px;margin:10px 0;display:grid;gap:8px}
.pret-photos h4{margin:0}
.pret-photo-btns{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.pret-photo-btns .btn{justify-content:center;cursor:pointer}
.pret-photo-btns .btn:focus-within{outline:2px solid var(--accent);outline-offset:2px}
.pret-vignettes{display:flex;gap:8px;flex-wrap:wrap}
.pret-vignettes img{width:86px;height:86px;object-fit:cover;border-radius:6px;border:1px solid var(--bord)}
.pret-refs th{font-weight:600;font-size:12.5px;width:44%}
.pret-refs td{font-size:12.5px}
.pret-pied-act{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;border-top:1px solid var(--bord);padding-top:16px;margin-top:22px}
.pret-pied-act .btn{justify-content:center;min-height:44px}
.pret-mentions{border-top:1px solid var(--bord);padding-top:10px;margin-top:16px;text-align:center}
.sig-zone{position:relative;height:110px;border:1px dashed var(--bord);border-radius:8px;background:var(--fond2);color:var(--txt);overflow:hidden}
.sig-zone canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:crosshair}
.sig-zone .sig-img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:var(--carte)}
.sig-zone.sig-active .sig-img{display:none}
.sig-invite{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);border:0;border-radius:8px;padding:8px 14px;background:var(--accent-f);color:var(--accent-t);font:inherit;font-weight:700;cursor:pointer}
.sig-zone.sig-active .sig-invite,.sig-zone.sig-faite .sig-invite{display:none}
.sig-effacer{position:absolute;right:8px;bottom:6px;display:none;border:0;background:none;font-size:12px;cursor:pointer}
.sig-zone.sig-active .sig-effacer{display:block}
.sig-valider{position:absolute;left:8px;bottom:6px;display:none}
.sig-zone.sig-active.sig-faite .sig-valider{display:inline-flex}
/* Devis */
.dv-ligne{display:flex;align-items:center;gap:12px;padding:12px 16px;margin-bottom:8px;border:1px solid var(--bord);border-left:4px solid var(--jaune);border-radius:var(--r);background:var(--carte);color:var(--txt);text-decoration:none;min-width:0}
.dv-ligne:hover{border-color:var(--accent);box-shadow:var(--ombre-c)}
.dv-ligne.st-accepte{border-left-color:var(--vert)}.dv-ligne.st-refuse{border-left-color:var(--txt3)}.dv-ligne.st-envoye{border-left-color:var(--bleu)}
.dv-ligne-c{flex:1;min-width:0;display:grid;gap:2px}
.dv-ligne-c b{font-size:15px}
.dv-num{font-size:20px;margin:0}
.dv-client{font-size:17px;margin:4px 0 0}
.dv-ajout{display:flex;align-items:center;gap:8px;margin:14px 0;padding:6px 6px 6px 12px;border:2px solid var(--accent);border-radius:var(--r);background:var(--carte)}
.dv-ajout .inp{flex:1;border:0;min-width:0;box-shadow:none}
.dv-prod{display:grid;grid-template-columns:minmax(0,1fr) auto auto 36px;gap:12px;align-items:center;padding:10px 12px;margin-bottom:8px;border:1px solid var(--bord);border-radius:8px}
.dv-prod-c{display:grid;gap:2px;min-width:0}
.dv-prod-f{display:flex;gap:8px}
.dv-prod-f label{display:grid;gap:2px;font-size:11px;font-weight:600;color:var(--txt3)}
.dv-prod-f input[name=quantite]{width:80px;text-align:center}
.dv-prod-f input[name=prix_unitaire_ht]{width:110px;text-align:right}
.dv-prod-t{min-width:100px;text-align:right;font-size:15px}
.dv-totaux{display:grid;grid-template-columns:1fr auto;gap:6px 24px;max-width:340px;margin:14px 0 14px auto}
.dv-totaux dd{margin:0;text-align:right}
.dv-totaux .dv-ttc{border-top:2px solid var(--txt);padding-top:8px;font-size:17px}
.dv-totaux .dv-marge{color:var(--violet);font-weight:600}
.dv-act form{display:inline}
/* Produits */
.pr-barre{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:6px 0 14px}
.pr-barre .inp-rech{flex:1 1 100%}
.pr-stock{display:inline-flex;align-items:center;gap:6px;font-size:13px;white-space:nowrap}
.pr-compte{flex:1 1 240px}
.pr-ligne{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:14px;align-items:center;padding:12px 14px;margin-bottom:8px;border:1px solid var(--bord);border-radius:var(--r);background:var(--carte)}
.pr-photo{display:grid;place-items:center;width:64px;height:64px;border:1px solid var(--bord);border-radius:8px;background:var(--fond2);overflow:hidden;font-size:24px}
.pr-photo img{width:100%;height:100%;object-fit:contain;background:var(--carte)}
.pr-c{display:grid;gap:2px;min-width:0}
.pr-t{display:flex;align-items:center;gap:8px;min-width:0}
.pr-t b{font-size:15px}
.pr-achat{color:var(--violet);font-weight:600}
.pr-fichiers{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pr-fichiers form{display:inline}
.pr-fichiers .lien-btn{min-height:28px;padding:2px 0}
.pr-retirer{border:0;background:none;padding:0;cursor:pointer;font-size:12px;color:var(--txt3)}
.pr-prix{display:grid;justify-items:end;gap:4px;text-align:right}
.pr-prix b{font-size:16px}
/* Stock promo & CA AUTEL */
.sp-annee{display:inline-flex;align-items:center;gap:10px;padding:3px;border:1px solid var(--bord);border-radius:999px;background:var(--carte)}
.sp-annee b{font-size:16px;min-width:46px;text-align:center}
.sp-annee .btn{border-radius:50%;min-width:32px;justify-content:center}
.sp-tuiles{margin:8px 0}
.sp-tuile{display:grid;gap:2px;padding:12px 14px;border-radius:8px;background:var(--fond2);min-width:0}
.sp-tuile .l,.sp-kpis .l{font-size:12.5px;font-weight:600;color:var(--txt2)}
.sp-tuile .v,.sp-kpis .v{font-size:24px;line-height:1.2}
.sp-tuile.accent{border-left:4px solid var(--accent)}
.sp-tuile .lien-btn{justify-self:start;min-height:24px;padding:0}
.sp-import{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:10px}
.sp-import form{display:inline}
.sp-import label.button{cursor:pointer}
.sp-import p{flex:1 1 260px;margin:0}
.sp-mois{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 24px;margin:8px 0}
.sp-promo-hd{margin:22px 0 10px;align-items:center}
.sp-promo-hd h2{margin:0}
.sp-kpis .card{display:grid;gap:2px;margin:0}
.sp-filtres{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:14px 0}
.sp-filtres .inp-rech{flex:1 1 220px}
.sp-table .num{text-align:right;white-space:nowrap}
.sp-act{display:flex;gap:6px;justify-content:flex-end}
.sp-act form{display:inline}
/* Camionnettes */
.van-cartes{margin:12px 0}
.van-carte{border-left:4px solid var(--vert);display:grid;gap:6px;justify-items:start;margin:0}
.van-carte.prise{border-left-color:var(--orange)}
.van-carte h2{margin:0;font-size:17px}
.van-etat{margin:0;font-weight:600}
.van-etat.ok{color:color-mix(in srgb,var(--vert) 85%,var(--txt))}
.van-etat.ko{color:color-mix(in srgb,var(--orange) 85%,var(--txt))}
.van-planning .hd{align-items:center}
.van-grille{display:grid;gap:0;font-size:12px}
.van-tete,.van-rang{display:grid;grid-template-columns:64px repeat(28,minmax(0,1fr));align-items:stretch}
.van-tete span{display:grid;justify-items:center;line-height:1.15;padding:4px 0;color:var(--txt3)}
.van-tete span b{color:var(--txt);font-size:12.5px}
.van-tete span.dim b,.van-tete span.dim small{color:var(--accent-t)}
.van-tete span.auj{background:var(--accent-f);border-radius:6px 6px 0 0}
.van-rang{grid-template-rows:42px;border-top:1px solid var(--bord)}
.van-rang>*{grid-row:1}
.van-nom{grid-column:1;display:flex;align-items:center;font-weight:600;white-space:nowrap}
.van-jour{border:0;border-left:1px solid var(--bord2);background:transparent;cursor:pointer;min-width:0;padding:0}
.van-jour:hover{background:var(--accent-f)}
.van-jour.auj{background:color-mix(in srgb,var(--accent-f) 70%,transparent)}
.van-jour.passe{background:repeating-linear-gradient(135deg,transparent 0 5px,var(--fond2) 5px 7px)}
.van-jour:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.van-resa{align-self:center;margin:0 2px;padding:5px 6px;border-radius:5px;background:var(--txt2);color:var(--carte);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;font-size:11.5px;z-index:1}
.van-resa.moi{background:var(--accent)}
.van-leg{display:inline-block;width:12px;height:10px;border-radius:2px;background:var(--txt2);vertical-align:middle;margin:0 4px 0 8px}
.van-leg.moi{background:var(--accent)}
.van-titre{font-size:15px;margin:18px 0 10px}
.van-ligne{display:flex;align-items:center;gap:14px;padding:12px 16px;margin-bottom:8px;border:1px solid var(--bord);border-left:4px solid var(--accent);border-radius:var(--r);background:var(--carte);min-width:0}
.van-dates{display:grid;min-width:56px}
.van-dates b{font-size:16px}
.van-c{flex:1;display:grid;gap:2px;min-width:0}
.van-passees{margin-top:14px}
.van-passees summary{cursor:pointer;font-weight:600;color:var(--accent-t);margin-bottom:10px}
/* Démonstrations */
.demo-kpis .card,.demo-types .card{display:grid;gap:2px;margin:0}
.demo-kpis .v,.demo-types .v{font-size:24px;line-height:1.2}
.demo-kpis .l{font-size:12.5px;font-weight:600;color:var(--txt2)}
.demo-kpis{margin:12px 0}
.demo-type{border-top:4px solid var(--c,var(--accent))}
.demo-type .badge,.demo-badge{justify-self:start;background:color-mix(in srgb,var(--c,var(--accent)) 16%,var(--carte));color:color-mix(in srgb,var(--c,var(--accent)) 80%,var(--txt))}
.t-bva{--c:var(--vert)}.t-adas{--c:var(--orange)}.t-geometrie{--c:var(--violet)}.t-clim{--c:var(--bleu)}
.demo-badge{margin-right:4px}
.demo-equipe{margin:12px 0}
.demo-barre .hbar{margin:0}
.demo-barre-f{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:12px 0}
.demo-barre-f .inp-rech{flex:1 1 260px}
.choix-pilules{display:flex;flex-wrap:wrap;gap:8px;border:0;margin:0;padding:0}
.choix-pilules legend{width:100%;font-size:12.5px;font-weight:600;color:var(--txt2);margin-bottom:4px}
.choix-pilules .pilule{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 14px;border:1px solid var(--bord);border-radius:999px;cursor:pointer;font-weight:600;background:var(--carte)}
.choix-pilules .pilule:has(input:checked){border-color:var(--accent);background:var(--accent-f);color:var(--accent-t)}
.choix-pilules .pilule:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}
.choix-pilules.duo{display:grid;grid-template-columns:1fr 1fr}
.choix-pilules.duo .pilule{border-radius:8px}
/* Dotations */
.dot-techcos{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;margin:12px 0}
.dot-tc{display:grid;gap:2px;padding:8px 12px;border:1px solid var(--bord);border-left:4px solid var(--vert);border-radius:8px;background:var(--carte);color:var(--txt);text-decoration:none;min-width:0}
.dot-tc:hover{border-color:var(--accent)}
.dot-tc.on{background:var(--accent-f);border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.dot-a-signer{color:color-mix(in srgb,var(--orange) 85%,var(--txt))}
.dot-hd{align-items:center;border-bottom:3px solid var(--vert);padding-bottom:8px;margin:16px 0 8px}
.dot-hd h2{margin:0}
.pret-plus-court{margin:4px 0 14px}
.dot-outil{display:grid;grid-template-columns:minmax(160px,1.2fr) minmax(180px,1fr) minmax(0,1.3fr) minmax(0,1.3fr);gap:14px;padding:14px;margin-bottom:10px;border:1px solid var(--bord);border-left:5px solid var(--jaune);border-radius:var(--r);background:var(--carte);align-items:start}
.dot-outil.signe{border-left-color:var(--vert)}
.dot-outil.rendu{border-left-color:var(--txt3);opacity:.8}
.dot-outil-id{display:flex;gap:10px;align-items:flex-start;min-width:0}
.dot-outil-id .outil-ic{width:44px;height:44px}
.dot-liens{display:flex;gap:10px;flex-wrap:wrap}
.dot-liens form{display:inline}
.dot-liens .lien-btn{min-height:24px;padding:2px 0;text-decoration:underline}
.lien-btn.danger{color:color-mix(in srgb,var(--rouge) 80%,var(--txt))}
.dot-sig{display:grid;gap:6px;min-width:0}
.dot-sig h4{margin:0}
.dot-sig-nom{padding:8px 10px;border:1px solid var(--bord);border-radius:6px;font-weight:600}
.dot-sig .sig-img{max-height:80px;object-fit:contain;border:1px dashed var(--bord);border-radius:8px;background:var(--carte)}
.dot-sig .sig-zone{height:80px}
/* Goodies */
.gd-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px;margin:12px 0}
.gd-tuile{display:grid;justify-items:center;gap:6px;padding:14px 10px;border:1px solid var(--bord);border-radius:var(--r);background:var(--carte);text-align:center}
.gd-photo{display:grid;place-items:center;width:72px;height:72px;border-radius:12px;background:var(--fond2);overflow:hidden;font-size:30px}
.gd-photo img{width:100%;height:100%;object-fit:cover}
.gd-photo.petit{width:44px;height:44px;font-size:20px;border-radius:8px}
.gd-tuile form{display:contents}
.gd-techcos{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}
.gd-tc{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--bord);border-radius:var(--r);background:var(--carte);color:var(--txt);font:inherit;text-align:left;cursor:pointer;min-width:0}
.gd-tc:hover{border-color:var(--accent)}
.gd-tc .av-init{width:38px;height:38px;border-radius:8px;font-size:13px}
.gd-tc>span:last-child{display:grid;min-width:0}
.gd-compteurs{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px;margin:6px 0 10px}
.gd-cpt{display:grid;justify-items:center;gap:2px;text-align:center;min-width:0}
.gd-cpt.vide{opacity:.5}
.gd-remise{display:flex;flex-wrap:wrap;align-items:end;gap:10px;margin-top:12px}
.gd-remise label{display:grid;gap:3px;font-size:12.5px;font-weight:600;color:var(--txt2)}
.gd-remise input[type=number]{width:90px}
.gd-moi{margin-top:12px}
@media (max-width:1100px){
  .dot-outil{grid-template-columns:1fr 1fr}
  .pret-ligne{grid-template-columns:1fr 1fr 44px}.pret-ligne label:nth-child(3),.pret-ligne label:nth-child(4){grid-column:span 1}
}
@media (max-width:760px){
  .mat-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .mat-ligne,.van-ligne{flex-wrap:wrap}
  .pret-doc{padding:18px 14px}
  .pret-entete{flex-direction:column;align-items:flex-start}
  .pret-ligne{grid-template-columns:1fr}
  .pret-retirer{justify-self:end}
  .pret-photo-btns,.pret-pied-act{grid-template-columns:1fr}
  .dv-prod{grid-template-columns:1fr 36px}
  .dv-prod-f,.dv-prod-t{grid-column:1}
  .dv-prod-t{text-align:left}
  .pr-ligne{grid-template-columns:48px minmax(0,1fr)}
  .pr-photo{width:48px;height:48px}
  .pr-prix{grid-column:1/-1;grid-template-columns:auto auto 1fr auto;align-items:center;justify-items:start}
  .sp-mois{grid-template-columns:1fr}
  .van-tete,.van-rang{grid-template-columns:44px repeat(28,minmax(0,1fr))}
  .van-tete small{display:none}
  .van-resa{font-size:0;padding:5px 0}
  .dot-outil{grid-template-columns:1fr}
  .choix-pilules.duo{grid-template-columns:1fr}
  .pret-refs,.pret-refs tbody,.pret-refs tr,.pret-refs th,.pret-refs td{display:block;width:auto}
  .pret-refs th{border-bottom:0;padding-bottom:0}
}
@media print{
  .side,.top,.pret-barre,.pret-pied-act,.sig-invite,.sig-effacer,.pret-photo-btns,.pret-plus,.pret-retirer,.outil-tuile[aria-pressed=false],.bulle-chat,.chat-bulle{display:none !important}
  .content{padding:0 !important}
  .pret-doc{border:0;box-shadow:none;padding:0}
}
:is(label.lien-btn,label.btn,label.button){position:relative;overflow:hidden}
:is(label.lien-btn,label.btn,label.button)>input[type=file].sr-only{width:1px !important;height:1px !important;min-width:0 !important;padding:0 !important;border:0 !important;inset:0 auto auto 0}
.dv-prod .dv-prod-f label{flex:none;width:auto}
.dv-prod .dv-prod-f input[name=quantite]{width:80px;min-width:0}
.dv-prod .dv-prod-f input[name=prix_unitaire_ht]{width:110px;min-width:0}
@media (max-width:760px){.dv-prod .dv-prod-f{flex-wrap:wrap;min-width:0}.dv-prod .dv-prod-f label{flex:1 1 100px;min-width:0}.dv-prod .dv-prod-f input[name]{width:100% !important}}
/* Fin — Tech-co · Matériel */

/* Calendrier Salons : filtre par personne en liste compacte + légende réduite aux présents du mois */
.sa-filtre-pers{display:flex;align-items:center;margin:0}
.sa-filtre-pers select.inp{width:auto;min-width:200px;max-width:260px;min-height:40px;height:40px}
.sa-leg-compact{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 12px}
.sa-leg-av{display:inline-flex;border-radius:999px;padding:2px;border:2px solid transparent;transition:border-color .2s,transform .2s}
.sa-leg-av:hover{transform:translateY(-1px);border-color:var(--bord)}
.sa-leg-av.on{border-color:var(--accent)}
/* Création de ticket */
.ts-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:16px;align-items:start}
.ts-col{display:grid;gap:16px;min-width:0}
.ts-col>.card+.card{margin-top:0}
.ts-carte h3{display:flex;align-items:center;gap:10px;margin:0 0 12px}
.ts-num{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:999px;background:var(--accent-f);color:var(--accent-t);font-size:12.5px;font-weight:700;flex:none}
.ts-rech label{font-weight:600}
.ts-rech-champ{position:relative}
.ts-q{width:100%;min-height:52px;height:52px;font-size:16px}
.ts-liste{position:absolute;z-index:30;left:0;right:0;top:calc(100% + 4px);margin:0;padding:6px;list-style:none;background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);box-shadow:var(--ombre-f);max-height:min(440px,60vh);overflow:auto}
.ts-opt{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;align-items:center;padding:9px 10px;border-radius:8px;cursor:pointer}
.ts-opt.actif,.ts-opt:hover{background:var(--accent-f)}
.ts-o-nom{font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ts-o-nom b{font-weight:800;color:var(--accent-t)}
.ts-o-det{grid-column:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ts-o-nb{grid-column:2;grid-row:1 / span 2;color:var(--txt3);white-space:nowrap}
.ts-o-sn{justify-self:start;grid-column:1}
.ts-opt.ajout{border-top:1px solid var(--bord2);margin-top:4px;border-radius:0 0 8px 8px}
/* Choix du distributeur par recherche (x-choix-distributeur) : dans une fenêtre, la liste s'ouvre vers le haut. */
.choix-dist .ts-opt{min-height:44px}
.modal .choix-dist .ts-liste{top:auto;bottom:calc(100% + 4px);max-height:min(260px,45vh)}
.ts-o-ajout{font-weight:700;color:var(--accent-t)}
.ts-vide{padding:10px}
.ts-etat:empty{display:none}
.ts-liens{display:flex;flex-wrap:wrap;gap:4px 18px;margin-top:10px}
.ts-actions{display:flex;gap:8px;margin-top:10px}
.ts-cli-hd{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.ts-cli-nom{display:flex;flex-direction:column;gap:2px;min-width:0;font-size:16px;font-weight:700}
.ts-cli-kv{grid-template-columns:110px minmax(0,1fr)}
.ts-coupe{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;display:inline-block;vertical-align:bottom}
.ts-alerte{margin-top:12px;padding:10px 12px;border-radius:8px;background:color-mix(in srgb,var(--orange) 10%,var(--carte));border:1px solid color-mix(in srgb,var(--orange) 35%,var(--bord));font-size:13px}
.ts-alerte ul{margin:6px 0 0;padding-left:18px}
.ts-alerte li .ts-coupe{max-width:260px}
.ts-sel{display:grid;gap:8px}
.ts-sel>.muted{padding:6px 0}
.tk-chip.ts-sel-outil{display:flex;align-items:center;justify-content:space-between;gap:10px;border-radius:var(--r);padding:8px 8px 8px 10px;cursor:default;background:var(--carte);min-height:0}
.ts-outil-c{display:flex;align-items:center;gap:12px;min-width:0;flex:1}
.ts-outil-c .ph{width:48px;height:48px}
.ts-outil-txt{min-width:0;display:grid;gap:3px}
.ts-outil-type{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--txt2)}
.ts-outil-et{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.ts-outil-veh{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ts-veh-prop{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;padding:8px 10px;border-radius:8px;background:var(--accent-f);font-size:13px}
.ts-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px}
.ts-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 14px}
.ts-form .fld{margin-bottom:12px;min-width:0}
.ts-form .fld .inp{width:100%}
.ts-pied{position:sticky;bottom:0;z-index:20;display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:16px;padding:12px 16px;background:color-mix(in srgb,var(--carte) 92%,transparent);backdrop-filter:blur(6px);border:1px solid var(--bord);border-radius:var(--r);box-shadow:var(--ombre-c)}
.ts-pied .muted{margin-right:auto}
/* la bulle de messagerie flottante (en bas à droite) ne doit pas masquer « Créer le ticket » */
.ts-pied{padding-right:84px}
.ts-m-outils{width:min(860px,100%)}
.ts-m-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px;margin:12px 0}
.ts-m-outil{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid var(--bord);border-radius:var(--r);background:var(--carte);cursor:pointer;transition:border-color .2s,background-color .2s,transform .2s;min-width:0}
.ts-m-outil:hover{border-color:var(--accent);transform:translateY(-1px)}
.ts-m-outil.choisi{border-color:var(--accent);background:var(--accent-f)}
.ts-m-outil input{flex:none;width:18px;height:18px}
.ts-m-pied{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px}
.ts-m-pied .sp{flex:1}
.ts-m-form{width:min(720px,100%)}
.ts-m-client .rech-ent{box-shadow:none;border:0;padding:0;margin:0 0 10px}
.ts-cpville{display:grid;grid-template-columns:110px minmax(0,1fr);gap:0 10px}
.ts-erreur:empty{display:none}
.ts-erreur{color:var(--danger)}
@media (max-width:900px){.ts-grid{grid-template-columns:minmax(0,1fr)}}
@media (max-width:560px){.ts-2,.ts-3{grid-template-columns:minmax(0,1fr)}.ts-pied .muted{display:none}}
@media (prefers-reduced-motion:reduce){.ts-m-outil{transition:none}}
/* Fiche contrat + Documenso */
.ct-attente{background:color-mix(in srgb,var(--orange) 16%,var(--carte));color:color-mix(in srgb,var(--orange) 80%,var(--txt))}
.ct-hd{flex-wrap:wrap;gap:8px}
.ct-hd form{margin:0}
.ct-lignes{width:100%;border-collapse:collapse;font-size:13.5px}
.ct-lignes th,.ct-lignes td{padding:7px 4px;border-bottom:1px solid var(--bord2);text-align:left;vertical-align:top}
.ct-lignes th[scope=row]{color:var(--txt3);font-weight:500;width:34%}
.ct-lignes .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.ct-lignes tfoot th,.ct-lignes tfoot td{border-bottom:0;padding-top:9px}
.ct-frise{list-style:none;margin:4px 0 12px;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.ct-frise li{position:relative;padding-top:20px;text-align:center;font-size:12px;color:var(--txt3);min-width:0}
.ct-frise li .pt{position:absolute;top:0;left:50%;width:14px;height:14px;margin-left:-7px;border-radius:999px;background:var(--carte);border:2px solid var(--bord)}
.ct-frise li:not(:first-child)::before{content:"";position:absolute;top:6px;right:calc(50% + 9px);width:calc(100% - 12px);height:2px;background:var(--bord)}
.ct-frise li.fait{color:var(--txt)}
.ct-frise li.fait .pt{background:var(--vert);border-color:var(--vert)}
.ct-frise li.fait::before{background:var(--vert)!important}
.ct-frise .lb{display:block;font-weight:600;line-height:1.25;overflow-wrap:anywhere}
.ct-frise .dt{display:block;margin-top:2px}
.ct-signataires{display:grid;gap:6px}
.ct-signataire{align-items:flex-start;gap:10px}
.ct-lien{max-width:100%;font-size:12px}
.ct-direct{color:color-mix(in srgb,var(--vert) 80%,var(--txt))}
.ct-simple{margin-top:12px}
.ct-simple summary{cursor:pointer;font-size:13px;color:var(--txt2)}
.ct-apercu{margin-bottom:16px}
.ct-apercu-pdf{width:100%;height:78vh;border:1px solid var(--bord);border-radius:var(--r);background:var(--blanc)}
.ct-modale{position:fixed;inset:0;z-index:60;background:color-mix(in srgb,var(--nav) 45%,transparent);display:grid;place-items:center;padding:16px}
.ct-modale[hidden]{display:none}
.ct-modale-boite{width:min(640px,100%);max-height:90vh;overflow:auto}
.ct-toast{position:fixed;right:20px;bottom:90px;z-index:70;background:var(--vert);color:var(--blanc);padding:10px 16px;border-radius:var(--r);box-shadow:var(--ombre-f);font-weight:600}
.ct-toast[hidden]{display:none}
tr.ct-vient-signe td{background:var(--vert-f)}
.ct-assistant .ct-rech{position:relative}
.ct-sugg{position:absolute;left:0;right:0;top:100%;z-index:30;margin:4px 0 0;padding:4px;list-style:none;background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);box-shadow:var(--ombre-f);max-height:320px;overflow:auto}
.ct-sugg[hidden]{display:none}
.ct-sugg li{padding:8px 10px;border-radius:6px;cursor:pointer;overflow-wrap:anywhere}
.ct-sugg li:hover,.ct-sugg li.on{background:var(--accent-f)}
.ct-appareils{display:grid;gap:6px;max-height:360px;overflow:auto}
.ct-choix{display:flex;align-items:flex-start;gap:10px;padding:8px 10px;border:1px solid var(--bord2);border-radius:var(--r);cursor:pointer;min-width:0}
.ct-choix:has(input:checked){border-color:var(--accent);background:var(--accent-f)}
.ct-choix>span:first-of-type{flex:1;min-width:0;overflow-wrap:anywhere}
.ct-choix .num{white-space:nowrap;font-variant-numeric:tabular-nums}
.ct-cat{border:0;padding:0;margin:0 0 12px;display:grid;gap:6px}
.ct-cat legend{font-weight:700;font-size:13px;margin-bottom:6px;color:var(--txt2)}
.ct-toutes{display:flex;gap:8px;align-items:center;font-size:13px;color:var(--txt3)}
@media (max-width:760px){.ct-frise{grid-template-columns:1fr;text-align:left}.ct-frise li{padding:0 0 0 24px;text-align:left}.ct-frise li .pt{left:0;margin-left:0}.ct-frise li::before{display:none}}
.ct-lignes th,.ct-lignes tfoot th{background:transparent;text-transform:none;letter-spacing:0;font-size:13px}
.ct-lignes tfoot th{color:var(--txt);font-weight:700}

/* Loupe des champs de recherche (.inp-rech), comme l'ancien CRM : la règle commune des champs
   (« Tous les champs natifs… », plus prioritaire) effaçait l'icône et la marge gauche. */
input.inp-rech:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="submit"]):not([type="button"]){padding-left:36px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%235f656c' d='M15.5 14h-.79l-.28-.27A6.47 6.47 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:10px center;background-size:18px}
:root[data-theme=dark] input.inp-rech:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="submit"]):not([type="button"]){background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%239aa1a9' d='M15.5 14h-.79l-.28-.27A6.47 6.47 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/%3E%3C/svg%3E")}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) input.inp-rech:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="submit"]):not([type="button"]){background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%239aa1a9' d='M15.5 14h-.79l-.28-.27A6.47 6.47 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/%3E%3C/svg%3E")}}

/* Messagerie : bulle de réactions à l'appui maintenu / clic droit (jamais affichée en permanence) */
.msg-pick{position:fixed;z-index:60;display:flex;gap:4px;padding:6px 8px;background:var(--carte);border:1px solid var(--bord);border-radius:999px;box-shadow:var(--ombre-f)}
.msg-pick[hidden]{display:none}
.msg-pick form{margin:0}
.msg-pick .rx{font-size:20px;min-width:40px;min-height:40px;border-radius:999px}
.msg-b{-webkit-user-select:text;user-select:text;-webkit-touch-callout:none}
/* Pop-up VIES / registre officiel (fiches client, distributeur, ticket) + badge TVA */
.vies-fond{position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;padding:16px;background:color-mix(in srgb,var(--nav) 45%,transparent)}
.vies-fond[hidden]{display:none}
.vies-boite{width:min(760px,100%);max-height:calc(100vh - 32px);overflow:auto}
.vies-boite h3{margin-top:0}
.vies-section+.vies-section{margin-top:16px;padding-top:12px;border-top:1px solid var(--bord)}
.vies-section h4{margin:0 0 8px}
.vies-table{width:100%;border-collapse:collapse;font-size:13.5px;table-layout:fixed}
.vies-table th{text-align:left;font-size:12px;color:var(--txt3);font-weight:600;padding:6px 8px;border-bottom:1px solid var(--bord)}
.vies-table td{padding:7px 8px;border-bottom:1px solid var(--bord2);overflow-wrap:anywhere;vertical-align:top}
.vies-table th:first-child,.vies-table td:first-child{width:24%}
.vies-table .vies-case{width:88px;text-align:center}
.vies-table input[type=checkbox]{width:20px;height:20px}
.vies-alerte{background:var(--rouge-f);color:color-mix(in srgb,var(--rouge) 80%,var(--txt));border:1px solid color-mix(in srgb,var(--danger) 35%,var(--bord));border-radius:var(--r);padding:10px 12px;margin:0 0 10px;font-weight:600}
.vies-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}
.tva-a-verifier{background:color-mix(in srgb,var(--orange) 16%,var(--carte));color:color-mix(in srgb,var(--orange) 85%,var(--txt))}
@media (max-width:600px){.vies-table th:nth-child(2),.vies-table td:nth-child(2){display:none}.vies-table th:first-child,.vies-table td:first-child{width:34%}}
/* Saisie de ticket : immatriculation en plaque française (illustration : couleurs propres à la plaque, pas la charte) */
.ts-plaque-fld{--plaque-fond:#fff;--plaque-bord:#1b1b1b;--plaque-ue:#003399;--plaque-etoile:#ffcc00;--plaque-texte:#111;margin-bottom:12px}
.ts-plaque{display:flex;align-items:stretch;width:100%;max-width:420px;height:64px;background:var(--plaque-fond);border:3px solid var(--plaque-bord);border-radius:9px;overflow:hidden;box-shadow:0 2px 0 rgba(0,0,0,.18),inset 0 0 0 1px rgba(255,255,255,.6);transition:box-shadow .2s}
.ts-plaque:focus-within{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 35%,transparent)}
.ts-plaque-ue,.ts-plaque-dpt{flex:none;width:42px;background:var(--plaque-ue);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
.ts-plaque-ue b{font:800 17px/1 Arial,Helvetica,sans-serif}
.ts-plaque-etoiles{width:24px;height:24px;fill:var(--plaque-etoile)}
.ts-plaque-saisie{flex:1;min-width:0;border:0;outline:0;background:transparent;text-align:center;font:800 34px/1 "Arial Narrow",Arial,Helvetica,sans-serif;letter-spacing:.06em;color:var(--plaque-texte);text-transform:uppercase;padding:0 6px}
.ts-plaque-saisie.rempli{animation:ts-clignote 1.2s ease-out}
.ts-plaque-etat{margin:6px 0 0;min-height:1.2em;color:var(--txt3)}
.ts-plaque-etat.ok{color:color-mix(in srgb,var(--vert) 80%,var(--txt))}
.ts-plaque-etat.attente{color:var(--accent-t)}
.ts-plaque-etat.alerte{color:color-mix(in srgb,var(--orange) 85%,var(--txt))}
@keyframes ts-clignote{0%{background:color-mix(in srgb,var(--accent) 22%,transparent)}100%{background:transparent}}
@media (max-width:520px){.ts-plaque{height:56px}.ts-plaque-saisie{font-size:26px}.ts-plaque-ue,.ts-plaque-dpt{width:34px}}

/* Saisie de ticket : fenêtre « Un ticket est déjà en cours » */
.ts-m-en-cours{max-width:720px;width:calc(100vw - 32px)}
.ts-en-cours-liste{display:flex;flex-direction:column;gap:10px;max-height:min(60vh,520px);overflow-y:auto;margin:10px 0}
.ts-ec{border:1px solid var(--bord);border-left:4px solid var(--bord2);border-radius:var(--r);padding:12px 14px;background:var(--carte);display:grid;grid-template-columns:1fr auto;gap:4px 12px;align-items:center}
.ts-ec.outil{border-left-color:var(--accent)}
.ts-ec-hd{display:flex;flex-wrap:wrap;gap:6px;align-items:center;grid-column:1}
.ts-ec-titre{grid-column:1;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-ec-det{grid-column:1;display:flex;flex-wrap:wrap;gap:4px 14px}
.ts-ec-act{grid-column:2;grid-row:1/span 3}
.ts-rappel-en-cours{margin:8px 0 0;color:var(--txt3)}
@media (max-width:600px){.ts-ec{grid-template-columns:1fr}.ts-ec-act{grid-column:1;grid-row:auto}}.ts-plaque #immatriculation.ts-plaque-saisie{border:0;border-radius:0;box-shadow:none;background:transparent;height:100%;min-height:0;width:100%;min-width:0;flex:1 1 0;margin:0;font:800 34px/1 "Arial Narrow",Arial,Helvetica,sans-serif;letter-spacing:.06em;color:var(--plaque-texte)}
.ts-plaque #immatriculation.ts-plaque-saisie:focus{outline:0;box-shadow:none;border:0}
@media (max-width:520px){.ts-plaque #immatriculation.ts-plaque-saisie{font-size:26px}}
/* Mails types sur la fiche ticket (modèles Outlook : HTML, pièces jointes, zones remplies) */
.tk-mt-l{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.tk-mt-l select.inp{flex:1 1 260px;min-width:0;width:auto}
.tk-mt-l form{margin:0}
.tk-suivi-pied .tk-mt-cloture{margin-left:auto}
/* Création de ticket — véhicule étranger : case à côté de la plaque, plaque neutre, listes en cascade */
.ts-plaque-ligne{display:flex;flex-wrap:wrap;align-items:flex-start;gap:12px 20px}
.ts-plaque-ligne>.ts-plaque-fld{flex:0 1 auto;min-width:0}
.ts-etranger{display:flex;flex-direction:column;gap:8px;padding-top:26px;min-width:180px}
.ts-etranger-case{display:inline-flex;align-items:center;gap:8px;font-weight:600;cursor:pointer;min-height:44px}
.ts-etranger-case input{width:20px;height:20px;accent-color:var(--accent)}
.ts-etranger .fld{margin:0}
.ts-etranger select.inp{min-width:180px}
.ts-plaque.etrangere .ts-plaque-dpt{display:none}
.ts-plaque.etrangere .ts-plaque-ue b:empty{display:none}
.ts-etranger-listes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px 12px;margin:4px 0 12px;padding:12px;border:1px dashed var(--bord);border-radius:var(--r);background:var(--fond2)}
.ts-etranger-listes[hidden]{display:none}
.ts-etranger-listes .fld{margin:0;min-width:0}
.ts-etranger-listes select.inp,.ts-etranger-listes .ts-v-autre{width:100%}
.ts-etranger-listes .ts-v-autre{margin-top:6px}
@media (max-width:900px){.ts-etranger-listes{grid-template-columns:repeat(2,minmax(0,1fr))}.ts-etranger{padding-top:0}}
@media (max-width:560px){.ts-etranger-listes{grid-template-columns:1fr}}
/* Appel entrant (remontée de fiche 3CX à la sonnerie) */
.ae-hd{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-bottom:16px;border-left:4px solid var(--vert)}
.ae-sonne{width:56px;height:56px;border-radius:999px;display:grid;place-items:center;flex:none;background:var(--vert-f);color:color-mix(in srgb,var(--vert) 80%,var(--txt));animation:ae-pulse 1.6s ease-in-out infinite}
.ae-sonne svg{width:28px;height:28px;fill:currentColor}
@keyframes ae-pulse{0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--vert) 40%,transparent)}50%{box-shadow:0 0 0 10px transparent}}
@media (prefers-reduced-motion:reduce){.ae-sonne{animation:none}}
.ae-qui{flex:1 1 260px;min-width:0}
.ae-qui h1{margin:2px 0 4px;font-size:26px;overflow-wrap:anywhere}
.ae-num{font-size:18px}
.ae-chrono{display:flex;flex-direction:column;align-items:flex-end;font-variant-numeric:tabular-nums}
.ae-chrono b{font-size:22px}
.ae-actions{display:flex;gap:10px;flex-wrap:wrap}
.ae-gros{min-height:52px;padding:0 22px;font-size:16px;font-weight:700}
.ae-transfert{margin-bottom:16px}
.ae-groupes{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.ae-groupe h4{margin:0 0 6px;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--txt3)}
.ae-pers{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--bord2);min-width:0}
.ae-pers-n{flex:1;min-width:0}
.ae-msg{margin:0 0 12px;padding:10px 12px;border-radius:var(--r);display:flex;align-items:center;gap:8px}
.ae-msg.ok{background:var(--vert-f);color:color-mix(in srgb,var(--vert) 80%,var(--txt))}
.ae-msg.info{background:var(--fond2);border:1px solid var(--bord)}
@media (max-width:760px){.ae-chrono{align-items:flex-start}.ae-actions,.ae-gros{width:100%}.ae-gros{justify-content:center}}
/* Journal fusionné ticket + Remote : étiquette d'origine de chaque entrée */
.jr-unifie .jr-src{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:1px 7px;border-radius:999px;border:1px solid var(--bord);color:var(--txt3);background:var(--fond2);vertical-align:1px}
.jr-unifie .jr-src-remote{color:var(--accent-t);border-color:color-mix(in srgb,var(--accent) 35%,var(--bord));background:var(--accent-f)}
.jr-unifie .jr-t{margin-top:2px;overflow-wrap:anywhere}
/* Bulle d'aide « ? » à côté d'un titre (ex. mode d'emploi 3CX dans Réglages › Connexions) */
.aide-titre{display:flex;align-items:center;gap:8px}
.aide-titre h3{margin:0}
.aide-bulle{position:relative}
.aide-bulle>summary{list-style:none;cursor:pointer;width:24px;height:24px;border-radius:999px;display:grid;place-items:center;font-weight:700;font-size:13px;color:var(--accent-t);background:var(--accent-f);border:1px solid color-mix(in srgb,var(--accent) 35%,var(--bord))}
.aide-bulle>summary::-webkit-details-marker{display:none}
.aide-bulle>summary:focus-visible{box-shadow:0 0 0 2px var(--accent)}
.aide-bulle-c{position:absolute;z-index:40;top:32px;left:-8px;width:min(440px,calc(100vw - 48px));padding:14px 16px;background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);box-shadow:var(--ombre-f);font-size:13.5px;line-height:1.5}
.aide-bulle-c ol{margin:8px 0 0;padding-left:18px}
.aide-bulle-c li+li{margin-top:6px}
/* Accueil Secrétariat : propositions au fil de la frappe sous « Un client au téléphone ? » */
.sec-champ{position:relative;min-width:0}
.sec-champ .inp{width:100%}
.sec-sugg{position:absolute;z-index:50;left:0;right:0;top:calc(100% + 4px);margin:0;padding:4px;list-style:none;background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);box-shadow:var(--ombre-f);max-height:min(60vh,420px);overflow-y:auto}
.sec-sugg[hidden]{display:none}
.sec-sugg a{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border-radius:6px;color:inherit;text-decoration:none;min-height:44px;justify-content:center}
.sec-sugg a .n{font-size:14.5px}
.sec-sugg a:hover,.sec-sugg a.on{background:var(--accent-f)}
.sec-sugg .sec-ajout a{flex-direction:row;color:var(--accent-t);font-weight:600;border-top:1px solid var(--bord2);border-radius:0 0 6px 6px}
/* Contacts distributeur (26/10/2026) : page « Contacts » de l'espace distributeur + réglage admin */
.mc-standard{margin:0 0 16px;font-weight:600}
.mc-standard .text-link{min-height:0;padding-top:0}
.mc-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:16px}
.mc-carte{background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);box-shadow:var(--ombre-c);padding:18px;min-width:0;display:flex;flex-direction:column;gap:14px}
.mc-tete{display:flex;align-items:center;gap:14px;min-width:0}
.mc-ini{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;flex:none;color:var(--blanc);font-weight:700;font-size:17px;letter-spacing:.02em}
.mc-id{min-width:0}
.mc-nom{font-size:17px;margin:0;overflow-wrap:anywhere}
.mc-fonction{margin:2px 0 0;color:var(--txt3);font-size:13.5px}
.mc-coord{margin:0;display:flex;flex-direction:column;gap:8px}
.mc-ligne{display:flex;flex-direction:column;gap:2px;min-width:0}
.mc-ligne dt{font-size:11.5px;font-weight:600;color:var(--txt3);text-transform:uppercase;letter-spacing:.04em}
.mc-ligne dd{margin:0;min-width:0}
.mc-coord .text-link{min-height:0;padding-top:0;white-space:normal;overflow-wrap:anywhere}
.mc-carte-vide{border-style:dashed;box-shadow:none}
.mc-vide{margin:0}
a.stat-card{display:block;color:inherit;text-decoration:none;transition:border-color .2s}
a.stat-card:hover,a.stat-card:focus-visible{border-color:var(--accent)}
.rcd-lignes{display:flex;flex-direction:column;gap:6px;margin:12px 0}
.rcd-ligne{display:grid;grid-template-columns:28px minmax(0,1.3fr) minmax(0,1fr);gap:10px;align-items:end}
.rcd-ligne .fld{margin:0;min-width:0}
.rcd-ligne .inp{width:100%}
.rcd-rang{height:38px;display:grid;place-items:center;font-weight:700;color:var(--txt3)}
@media (max-width:640px){.rcd-ligne{grid-template-columns:28px minmax(0,1fr)}.rcd-ligne .fld:last-child{grid-column:2}}

/* Colonnes optionnelles des listes : menu « Colonnes & Vue » retiré (27/10/2026), elles restent masquées comme par défaut. */
[data-colview] [data-col] { display: none; }

/* ===== Fiche appareil : bulles d'état + fenêtres (refonte du 27/10/2026) ===== */
.app-carte{transition:box-shadow .2s ease,transform .2s ease}
.app-carte:hover{box-shadow:var(--ombre-h)}
.app-dlg{width:min(640px,calc(100vw - 32px));max-height:min(86vh,900px);overflow:auto;padding:0 22px 22px;border:1px solid var(--bord2);border-radius:16px;background:var(--carte);color:var(--txt);box-shadow:var(--ombre-f)}
.app-dlg[open]{animation:app-dlg-in .22s cubic-bezier(.2,.8,.3,1)}
.app-dlg::backdrop{background:color-mix(in srgb,var(--nav) 45%,transparent);backdrop-filter:blur(3px)}
@keyframes app-dlg-in{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
.app-dlg-hd{position:sticky;top:0;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 -22px 14px;padding:16px 22px 12px;background:var(--carte);border-bottom:1px solid var(--bord2)}
.app-dlg-hd h3{margin:0}
.app-dlg-x{width:34px;height:34px;border:0;border-radius:50%;background:var(--fond2);color:var(--txt2);font-size:20px;line-height:1;cursor:pointer;transition:background .15s,transform .15s}
.app-dlg-x:hover{background:var(--bord2);transform:rotate(90deg)}
.app-dlg-grille{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}
.app-tuile{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:14px;border:1px solid var(--bord2);border-radius:var(--r);background:var(--fond2)}
.app-tuile-l{display:block;margin-bottom:10px}
.app-tuile-l p{margin:4px 0}
.app-archive{opacity:.85}
.app-lien{color:inherit;text-decoration:none;transition:border-color .15s,transform .15s}
.app-lien:hover{border-color:var(--accent);transform:translateX(2px)}
.app-plier{margin-top:10px}
/* Dates d'une pastille saisies à la main (secrétariat, direction, admin — 27/10/2026). */
.app-dates{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px 10px;width:100%;margin-top:4px;padding-top:10px;border-top:1px dashed var(--bord2)}
.app-dates .fld{flex:1 1 150px;min-width:0;margin:0}
.app-dates .fld label{font-size:12px;color:var(--txt2)}
.app-dates .btn{min-height:35px;justify-content:center}
@media (max-width:760px),(pointer:coarse){.app-dates .btn{min-height:44px}}
@media (max-width:560px){.app-dates .btn{flex:1 1 100%}}
.app-plier>summary{cursor:pointer;color:var(--accent-t);font-weight:600;padding:4px 0}
.app-plier>.form-stack{margin-top:10px}
.app-suppr{margin-top:10px}
.app-sav-f{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.app-sav-f input{flex:1 1 200px;min-width:0}
/* Fenêtre « Carte mère remplacée » : nouveau n° de série (27/10/2026). */
.app-cm-f{display:grid;gap:14px}
.app-cm-f p{margin:0}
.app-cm-pied{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.app-bande{display:flex;flex-wrap:wrap;align-items:center;gap:14px 18px;margin:4px 0 22px;padding:14px 18px;animation:app-bande-in .35s ease both}
.app-bande-id{display:flex;flex-direction:column;gap:2px;min-width:0}
.app-bande-type{font-size:11px;font-weight:700;letter-spacing:.7px;text-transform:uppercase;color:var(--txt3)}
.app-bande .app-sn b{font-size:18px;letter-spacing:.3px}
.app-bande-pst{display:flex;flex-wrap:wrap;gap:6px;flex:1 1 320px;min-width:0}
.app-bande-plus{display:flex;flex-wrap:wrap;gap:6px;margin-left:auto}
.app-pst{font-weight:600}
button.app-pst,.app-puce{font:inherit;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,filter .15s ease}
button.app-pst{font-size:12px;font-weight:600}
button.app-pst:hover,.app-puce:hover{transform:translateY(-1px);box-shadow:var(--ombre-c);filter:brightness(1.03)}
button.app-pst:focus-visible,.app-puce:focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:0 0 0 5px color-mix(in srgb,var(--accent) 25%,transparent)}
.app-puce{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border:1px solid var(--bord2);border-radius:999px;background:var(--fond2);color:var(--txt2);font-size:12.5px}
.app-puce b{color:var(--accent-t)}
.app-puce-note{border-color:color-mix(in srgb,var(--violet) 40%,var(--bord2));background:var(--violet-f);color:color-mix(in srgb,var(--violet) 80%,var(--txt))}
.app-l-type{display:block;font-size:12.5px;font-weight:600;color:var(--txt2)}
@keyframes app-bande-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (max-width:640px){.app-bande-plus{margin-left:0}}
@media (prefers-reduced-motion:reduce){.app-bande,.app-dlg[open]{animation:none}button.app-pst:hover,.app-puce:hover,.app-lien:hover,.app-dlg-x:hover{transform:none}}.app-pst{margin:0;border:0;box-shadow:inset 0 0 0 1px var(--bord)}
.app-pst.ech-ok{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--vert) 40%,transparent)}
button.app-pst:hover{box-shadow:inset 0 0 0 1px currentColor,var(--ombre-c)}
.tk-tbl .ph-ligne .cp-val{white-space:nowrap}
.app-bande-pst{max-width:none}
.app-dlg-x:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}
@media (pointer:coarse){.app-dlg-x{width:44px;height:44px}button.app-pst,.app-puce{min-height:44px}}
/* Menu flèche de la fiche appareil (Modifier / Désactiver / Dupliquer) */
.app-menu{position:relative}
.app-menu>summary{list-style:none;display:inline-flex;align-items:center;justify-content:center;min-width:40px;cursor:pointer}
.app-menu>summary::-webkit-details-marker{display:none}
.app-menu>summary svg{transition:transform .2s ease}
.app-menu[open]>summary svg{transform:rotate(180deg)}
.app-menu-liste{position:absolute;right:0;top:calc(100% + 6px);z-index:30;display:flex;flex-direction:column;min-width:210px;padding:6px;border:1px solid var(--bord2);border-radius:var(--r);background:var(--carte);box-shadow:var(--ombre-f);animation:app-menu-in .16s ease}
.app-menu-liste form{margin:0}
.app-menu-liste a,.app-menu-liste button{display:block;width:100%;padding:9px 12px;border:0;border-radius:8px;background:none;color:var(--txt);font:inherit;font-size:14px;text-align:left;text-decoration:none;cursor:pointer;transition:background .12s}
.app-menu-liste a:hover,.app-menu-liste button:hover,.app-menu-liste a:focus-visible,.app-menu-liste button:focus-visible{background:var(--accent-f);color:var(--accent-t);outline:none}
@keyframes app-menu-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
@media (pointer:coarse){.app-menu-liste a,.app-menu-liste button{min-height:44px}}
@media (prefers-reduced-motion:reduce){.app-menu-liste{animation:none}.app-menu>summary svg{transition:none}}/* Liste Appareils plus compacte (27/10/2026) : pastilles sur une ligne, cellules moins hautes. */
.app-tbl tr.tk-row td{padding-top:7px;padding-bottom:7px}
.tk-tbl.app-tbl .app-opts{max-width:400px;gap:4px}
.app-tbl .ph-ligne .cp-val,.app-tbl .app-l-type{line-height:1.3}
.app-tbl td .cp-btn,.app-tbl td .cp{margin-top:0;margin-bottom:0}.app-tbl .app-pst{padding:1px 7px;font-size:11px}
@media (min-width:1100px){.app-tbl td:nth-child(2){min-width:370px}.tk-tbl.app-tbl .app-opts{max-width:none}}/* Boutons « Accès de connexion » / « Contrats » des fiches : compteur dans le bouton ; fenêtre large pour les tableaux d'accès. */
.app-compteur{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;margin-left:6px;padding:0 6px;border-radius:999px;background:color-mix(in srgb,var(--blanc) 22%,transparent);font-size:12px;font-weight:700}
.app-dlg.app-dlg-l{width:min(900px,calc(100vw - 32px))}
.app-dlg .table{width:100%}/* Pictogramme power : compte Autel lié au n° de série (vert) ou non (gris), 27/10/2026 */
.pw-autel{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;margin-right:6px;padding:0;border:1px solid var(--bord2);border-radius:50%;background:var(--fond2);color:var(--txt3);cursor:pointer;vertical-align:middle;flex:none;transition:transform .15s ease,box-shadow .15s ease,background .15s}
.pw-autel.pw-ok{color:var(--vert);background:var(--vert-f);border-color:color-mix(in srgb,var(--vert) 40%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--vert) 12%,transparent)}
.pw-autel:hover{transform:scale(1.08)}
.pw-autel:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.pw-autel.pw-verif svg{animation:pw-tourne 1s linear infinite}
@keyframes pw-tourne{to{transform:rotate(360deg)}}
.pw-bulle{position:absolute;z-index:60;padding:12px 14px;border:1px solid var(--bord2);border-radius:var(--r);background:var(--carte);color:var(--txt);box-shadow:var(--ombre-f);font-size:13px;animation:app-menu-in .16s ease}
.pw-bulle .pw-t{font-size:10.5px;font-weight:700;letter-spacing:.7px;text-transform:uppercase;color:var(--txt3);margin-bottom:6px}
.pw-bulle .pw-mail{display:flex;align-items:center;gap:8px;font-weight:600;overflow-wrap:anywhere}
.pw-bulle .pw-mail span{flex:1;min-width:0}
.pw-bulle .pw-copier{flex:none;padding:3px 9px;border:1px solid var(--bord2);border-radius:999px;background:var(--fond2);color:var(--accent-t);font:inherit;font-size:12px;cursor:pointer}
.pw-bulle .pw-x{color:var(--txt2)}
.pw-bulle .pw-le{margin-top:6px;font-size:12px;color:var(--txt3)}
@media (pointer:coarse){.pw-autel{width:36px;height:36px}}
@media (prefers-reduced-motion:reduce){.pw-autel.pw-verif svg,.pw-bulle{animation:none}.pw-autel:hover{transform:none}}/* Adresse proposée pendant la frappe (Base Adresse Nationale), 27/10/2026 */
.adr-liste{position:absolute;left:0;right:0;top:100%;z-index:50;margin-top:4px;padding:4px;border:1px solid var(--bord2);border-radius:var(--r);background:var(--carte);box-shadow:var(--ombre-f);animation:app-menu-in .14s ease}
.adr-o{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px;padding:8px 10px;border-radius:8px;cursor:pointer;font-size:13.5px}
.adr-o span{color:var(--txt3);font-size:12.5px}
.adr-o:hover,.adr-o.on{background:var(--accent-f)}
.adr-o:hover b,.adr-o.on b{color:var(--accent-t)}
@media (pointer:coarse){.adr-o{min-height:44px}}
@media (prefers-reduced-motion:reduce){.adr-liste{animation:none}}/* Menu flèche à gauche (fiche Remote : rattacher / séparer un ticket), 27/10/2026 */
.app-menu-g .app-menu-liste{left:0;right:auto;min-width:290px}
.app-menu-form{display:flex;flex-direction:column;gap:6px;padding:8px 10px}
.app-menu-form label{font-size:12.5px;font-weight:600;color:var(--txt2)}
.app-menu-form .inp{flex:1;min-width:0}.app-menu-liste .app-menu-form .btn.p{background:var(--accent);border:1px solid var(--accent);color:var(--blanc);border-radius:8px;padding:4px 12px;text-align:center}
.app-menu-liste .app-menu-form .btn.p:hover{background:var(--accent-d);color:var(--blanc)}
/* Onglets en segments (liste Remote…) moins hauts (27/10/2026) ; 44 px gardés au doigt. */
.seg-tabs .tab.seg{min-height:32px;padding:0 11px}
@media (pointer:coarse){.seg-tabs .tab.seg{min-height:44px}}/* Liste des tickets en lignes fines (27/10/2026) : une ligne par cellule, le détail au survol. */
.tk-tbl tr.tk-row td{padding-top:7px;padding-bottom:7px}
.tk-tbl .tk-1l{max-width:260px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal}
.tk-tbl .tk-titre .tk-1l{max-width:320px}
.tk-tbl .tk-titre .tk-suj{margin-top:2px}
.tk-tbl .tk-nw,.tk-tbl .pastille,.tk-tbl .interv{white-space:nowrap;overflow-wrap:normal}
.tk-tbl .tk-ref .tk-new{margin-right:4px}
@media (max-width:900px){.tk-tbl .tk-1l{max-width:none;white-space:normal}}/* Création en masse : une ligne par n° de série, prête pour la scannette (27/10/2026) */
.masse-sn{border:0;padding:0;margin:0}
.masse-sn legend{font-weight:600;margin-bottom:8px}
.masse-sn-lignes{display:grid;gap:6px;max-height:420px;overflow:auto;padding-right:4px}
.masse-sn-ligne{display:flex;align-items:center;gap:8px}
.masse-sn-n{flex:none;width:26px;text-align:right;font-size:12px;color:var(--txt3)}
.masse-sn-ligne .inp{flex:1;min-width:0}/* Bannière « quelqu'un d'autre modifie cette fiche » (27/10/2026) : grande, rouge, impossible à rater. */
.presence-edition{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:12px;margin:0 0 14px;padding:14px 18px;border-radius:var(--r);background:var(--danger);color:var(--blanc);font-size:15px;font-weight:600;box-shadow:var(--ombre-h);animation:presence-in .25s ease}
.presence-edition b{font-weight:800}
/* « X consulte aussi cette fiche » : barre fixe en bas de l'écran, centrée, bien visible (27/10/2026). */
/* Fiches de création en fenêtre (28/10/2026) : grande fenêtre par-dessus la page (js/fenetre-creation.js). */
.fc-fond{position:fixed;inset:0;z-index:1100;display:grid;place-items:center;padding:2vh 2vw;background:color-mix(in srgb,var(--nav,#1f2a37) 55%,transparent);backdrop-filter:blur(2px)}
.fc-fond[hidden]{display:none}
.fc-boite{display:flex;flex-direction:column;width:min(1180px,100%);height:min(calc(var(--vh-ecran,100vh) - 4vh),1200px);background:var(--fond);border-radius:16px;box-shadow:var(--ombre-f);overflow:hidden}
.fc-hd{display:flex;align-items:center;gap:12px;padding:10px 14px 10px 22px;background:var(--carte);border-bottom:1px solid var(--bord)}
.fc-titre{flex:1;min-width:0;margin:0;font-size:17px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fc-x{flex:none;width:40px;height:40px;border:1px solid var(--bord);border-radius:50%;background:var(--carte);color:var(--txt);font-size:16px;cursor:pointer}
.fc-x:hover,.fc-x:focus-visible{border-color:var(--accent);color:var(--accent-t);outline:none}
.fc-cadre{flex:1;width:100%;border:0;background:var(--fond)}
html.fc-ouverte{overflow:hidden}
.fc-toast{position:fixed;left:50%;top:18px;transform:translateX(-50%);z-index:1200;display:flex;align-items:center;gap:12px;padding:10px 16px;border-radius:12px;background:var(--carte);border:1px solid color-mix(in srgb,var(--vert,#2f855a) 45%,var(--bord));box-shadow:var(--ombre-f);font-weight:600}
.fc-toast a{color:var(--accent-t)}
.fc-toast button{border:0;background:none;color:var(--txt3);cursor:pointer;font-size:14px}
/* Page affichée dans la fenêtre : ni menu, ni barre du haut, ni éléments flottants. */
[data-fenetre] :is(.side,.top,.bulle-chat,.presence-bas,#alerte-rdv,.bandeau-miroir,.voir-comme-bandeau){display:none!important}
[data-fenetre] .content{padding-top:16px}
@media (max-width:700px){.fc-fond{padding:0}.fc-boite{border-radius:0;height:var(--vh-ecran,100vh)}}
/* Site miroir (28/10/2026) : bandeau orange en haut de chaque page. */
.bandeau-miroir{position:sticky;top:0;z-index:60;padding:6px 16px;background:#c2410c;color:#fff;font-size:13px;font-weight:700;letter-spacing:.02em;text-align:center}
.presence-bas{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 18px);transform:translateX(-50%);z-index:45;display:flex;align-items:center;gap:12px;max-width:min(720px,calc(100% - 184px));padding:12px 22px;border-radius:999px;background:var(--accent);color:var(--blanc);font-size:16px;font-weight:500;line-height:1.35;box-shadow:var(--ombre-f);animation:presence-bas-in .25s ease}
@keyframes presence-bas-in{from{opacity:0;translate:0 8px}to{opacity:1;translate:0 0}}
.presence-bas b{font-weight:800}
/* Orange foncé : texte blanc lisible en clair comme en sombre. */
.presence-bas.en-appel{background:color-mix(in srgb,var(--orange) 80%,var(--nav))}
.presence-bas-i{flex:none;width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.presence-bas[hidden]{display:none}
/* Le bas de page reste accessible sous la barre. */
body:has(.presence-bas:not([hidden])) main.content{padding-bottom:96px}
@media (max-width:760px){.presence-bas{left:16px;right:16px;transform:none;max-width:none;bottom:calc(env(safe-area-inset-bottom,0px) + 80px);border-radius:14px;font-size:15px;padding:12px 16px;z-index:35}
  body:has(.presence-bas:not([hidden])) main.content{padding-bottom:170px}}
@media (prefers-reduced-motion:reduce){.presence-bas{animation:none}}
.presence-edition-i{flex:none;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--blanc);color:var(--danger);font-weight:800;font-size:17px}
@keyframes presence-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.presence-edition{animation:none}}/* Liste des Remotes en lignes fines (27/10/2026) */
.rw.rw-fine{min-height:0;padding-top:6px;padding-bottom:6px}
.rw.rw-fine .rw-c{gap:1px}
.rw.rw-fine .rw-1l{display:block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rw.rw-fine .rw-l1{display:flex;align-items:center;gap:6px;min-width:0}
.rw.rw-fine .rw-rdv{font-size:12px;color:var(--accent-t);white-space:nowrap}
.rw.rw-fine .rw-tk{white-space:nowrap}
/* Pastille rouge en haut à gauche des lignes comptées dans la bulle rouge du menu « Remotes » (27/10/2026) :
   nouvelle demande que personne n'a touchée, ou ticket intranet ouvert / rouvert. */
.rw-notif{position:absolute;top:3px;left:3px;z-index:1;width:14px;height:14px;border-radius:999px;background:var(--danger);box-shadow:0 0 0 2px var(--carte);animation:rw-notif-pulse 1.6s ease-out infinite}
@keyframes rw-notif-pulse{0%{box-shadow:0 0 0 2px var(--carte),0 0 0 2px color-mix(in srgb,var(--danger) 55%,transparent)}100%{box-shadow:0 0 0 2px var(--carte),0 0 0 9px transparent}}
@media (prefers-reduced-motion:reduce){.rw-notif{animation:none}}
.rw-notif ~ .rw-veh{padding-left:6px}
/* Même bulle rouge sur les onglets de statut : nombre de Remotes signalés dans l'onglet (27/10/2026). */
.seg-tabs .tab.seg{position:relative}
@media (max-width:560px){.seg-tabs.tabs{overflow:visible}}
.seg-notif{position:absolute;top:-6px;right:-4px;z-index:1;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--danger);color:var(--blanc);font-size:11.5px;font-weight:800;line-height:20px;text-align:center;box-shadow:0 0 0 2px var(--carte)}
/* « Créer un produit » (appareils/creer, 27/10/2026) : fenêtre de l'ancien CRM Remote, centrée dans la page. */
.prod-creer{display:flex;justify-content:center;padding:8px 0 24px}
.prod-carte{width:min(680px,100%);background:var(--carte);border:1px solid var(--bord2);border-radius:var(--r);box-shadow:var(--ombre-f);overflow:visible}
.prod-hd{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px 0}
.prod-hd h1{margin:0;font-size:18px;font-weight:600;color:var(--txt)}
.prod-x{display:grid;place-items:center;width:44px;height:44px;margin:-10px -12px -10px 0;border-radius:6px;color:var(--txt2);text-decoration:none;font-size:15px}
.prod-x:hover,.prod-x:focus-visible{background:var(--fond2);color:var(--txt)}
.prod-intro{margin:6px 20px 0;color:var(--txt3);font-size:14px}
.prod-carte>.alert{margin:12px 20px 0}
.prod-corps{padding:16px 20px 20px}
.prod-g2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}
.prod-g2 .fld{margin:0;min-width:0}
.prod-g2 .prod-plein{grid-column:1/-1;margin:-4px 0 0}
.prod-g2 .fld[hidden]{display:none}
.prod-g2 label,.prod-creer [data-vci-champ] label{display:block;font-weight:500;margin-bottom:6px}
.prod-sep{border:0;border-top:1px solid var(--bord2);margin:18px 0}
.prod-options{border:0;padding:0;margin:14px 0 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 16px}
.prod-options legend{font-weight:500;margin-bottom:6px;padding:0}
.prod-pied{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;background:var(--fond2);border-top:1px solid var(--bord2);border-radius:0 0 var(--r) var(--r)}
.prod-pied kbd{font:inherit;font-size:12px;font-weight:500;opacity:.75;margin-left:6px;background:none;border:0;padding:0;color:inherit}
@media (max-width:560px){.prod-g2,.prod-options{grid-template-columns:minmax(0,1fr)}.prod-vci{max-width:none}.prod-pied kbd{display:none}}
.prod-vci{margin-top:8px;max-width:calc(50% - 8px)}
.prod-pied .btn{min-height:44px}

/* Liste déroulante avec recherche (public/js/select-recherche.js). */
.sr-bloc{position:relative}
.sr-natif{position:absolute!important;inset:0;opacity:0;pointer-events:none}
.sr-bouton{display:flex;align-items:center;gap:8px;width:100%;min-height:44px;padding:8px 12px;border:1px solid var(--bord);border-radius:6px;background:var(--carte);color:var(--txt);font:inherit;text-align:left;cursor:pointer;transition:border-color .15s,box-shadow .15s}
.sr-bouton:hover{border-color:var(--txt3)}
.sr-bouton.vide .sr-txt{color:var(--txt3)}
.sr-txt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sr-chev{display:grid;color:var(--txt3)}
.sr-chev svg{width:16px;height:16px}
.sr-bouton:focus-visible,.sr-bloc.ouvert .sr-bouton{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 20%,transparent)}
.sr-bloc.erreur .sr-bouton{border-color:var(--danger)}
.sr-panneau{position:absolute;z-index:40;left:0;right:0;top:calc(100% + 4px);background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);box-shadow:var(--ombre-f);padding:6px}
.sr-rech{display:flex;align-items:center;gap:8px;padding:0 10px;border:1px solid var(--bord);border-radius:6px;margin-bottom:6px}
.sr-rech svg{width:16px;height:16px;flex:none;color:var(--txt3)}
.sr-rech input{flex:1;min-width:0;border:0!important;box-shadow:none!important;background:none!important;padding:9px 0!important;min-height:0!important;outline:none}
.sr-rech:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 20%,transparent)}
.sr-liste{list-style:none;margin:0;padding:0;max-height:min(320px,50vh);overflow:auto}
/* « + Ajouter » sous la recherche (28/10/2026) : création ponctuelle (client depuis la création de produit). */
.sr-ajouter{display:flex;align-items:center;width:100%;min-height:44px;margin:0 0 6px;padding:10px 12px;border:1px dashed color-mix(in srgb,var(--accent) 45%,var(--bord));border-radius:6px;background:var(--accent-f);color:var(--accent-t);font:inherit;font-weight:700;text-align:left;cursor:pointer}
.sr-ajouter:hover,.sr-ajouter:focus-visible{border-style:solid;border-color:var(--accent);outline:none}
.sr-opt{padding:10px 12px;min-height:44px;border-radius:6px;cursor:pointer;overflow-wrap:anywhere}
.sr-opt:not([aria-disabled="true"]):hover,.sr-opt.actif{background:var(--bord2)}
.sr-opt[aria-selected="true"]{font-weight:600}
.sr-opt[aria-disabled="true"]{cursor:default}

/* ============================================================================
   NOUVEAU STYLE (27/10/2026) — maquettes de design/Autech-*.html, propositions A + B + C, ADOPTÉ POUR TOUS
   (<html data-style="v2"> posé en permanence par app-layout). Aucune structure modifiée : seulement des réglages
   visuels sur les classes existantes. Revenir à l'ancien style = retirer data-style="v2" de app-layout.
   ============================================================================ */

/* A. Finitions douces — couleurs (data-theme est toujours posé par le script du <head>). */
:root[data-style=v2][data-theme=light]{
  --fond:#f4f2eb;--fond2:#f7f6f3;--bord:#ddd8cc;--bord2:#e8e4db;
  --ombre-c:0 1px 2px rgba(26,29,33,.06),0 4px 12px rgba(26,29,33,.04);
}
:root[data-style=v2][data-theme=dark]{
  --fond:#121416;--fond2:#1b1f24;--carte:#1c1f23;--bord:#333a43;--bord2:#2a3038;
  --ombre-c:0 1px 2px rgba(0,0,0,.4);
}
/* A. Rayons homogènes : 8 px boutons et champs, 12 px cartes. */
[data-style=v2] .card{border-radius:12px}
[data-style=v2] .btn,[data-style=v2] .inp,
[data-style=v2] :is(input,select,textarea):not([type="checkbox"]):not([type="radio"]):not([type="range"]){border-radius:8px}
/* A. Titres de section identiques partout : petites capitales 11 px, espacées, gris. */
/* :where() : spécificité nulle pour le h3 générique, les vrais titres à classe (tuiles, fenêtres…) gardent leur style. */
:where([data-style=v2]) h3,[data-style=v2] .tk-trait .l,[data-style=v2] .fv-t{font-size:11px;letter-spacing:.06em;text-transform:uppercase;font-weight:700;color:var(--txt3)}
/* A. Petits boutons à hauteur des champs (44 px au doigt : règle pointer:coarse existante). */
[data-style=v2] .btn.s{min-height:36px;padding:6px 12px;font-size:13px}

/* B. Lisible pendant un appel. Infos véhicule : tuiles neutres étiquetées (au lieu du bleu). */
[data-style=v2] .tk-pb-tag{background:var(--fond2);border-color:var(--bord2);border-radius:8px;padding:8px 12px}
[data-style=v2] .tk-pb-tag .l{color:var(--txt3);font-size:10.5px;letter-spacing:.06em}
/* B. Codes défaut dans le même gris que le bloc véhicule au-dessus (28/10/2026, plus d'orange). */
[data-style=v2] .tk-pb-bloc{background:var(--fond2);border-color:var(--bord2)}
[data-style=v2] .tk-pb-bloc .l{color:var(--txt3)}
/* B. Fiche véhicule Autossimo sur fond bleu ardoise très pâle. */
[data-style=v2] .fv{background:var(--accent-f);border-color:color-mix(in srgb,var(--accent) 25%,var(--bord))}
[data-style=v2] .fv-t{color:var(--accent-t)}
/* B. « Appeler le client » / « Raccroché » : gros bouton pleine largeur. */
[data-style=v2] .tk-tr-gros{min-height:52px;width:100%;border-radius:8px}

/* C. Listes plus nettes : bord gauche 4 px, fond blanc ; groupes sur fond légèrement teinté. */
[data-style=v2] .tk-tbl tr.tk-row td:first-child{border-left-width:4px}
[data-style=v2] .tk-grp-hd{border-left-width:4px;background:color-mix(in srgb,var(--p) 7%,var(--carte));border-radius:8px}
/* C. Pastilles d'état harmonisées : vert pâle + contour vert si actif, gris neutre sinon. */
[data-style=v2] .app-pst{min-height:28px;padding:3px 10px;border-radius:999px}
[data-style=v2] .app-pst.ech-ok{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--vert) 55%,transparent)}
[data-style=v2] .app-nd{background:var(--fond2);color:var(--txt3);box-shadow:inset 0 0 0 1px var(--bord2)}
/* Correctifs de relecture : pastilles compactes dans les tableaux, fiche Autossimo vide neutre, désignation sur fond carte. */
[data-style=v2] .app-tbl .app-pst{min-height:0;padding:1px 7px}
[data-style=v2] .fv.vide{background:var(--fond2);border-color:var(--bord2)}
[data-style=v2] .fv-c .l{color:var(--accent-t)}
[data-style=v2] .tk2 .tk-pb-desig .tk-pb-bloc{background:var(--carte);border-color:var(--bord)}
/* 44 px au doigt : les réglages ci-dessus ne doivent jamais réduire les cibles tactiles. */
@media (pointer:coarse){[data-style=v2] .btn.s,[data-style=v2] button.app-pst{min-height:44px}}

/* ============================================================================
   ÉCRANS DE CONNEXION (27/10/2026) — panneau photo à gauche (couverture du catalogue Autech Expert, sans le
   marquage « catalogue »), carte du formulaire à droite. Le panneau garde ses couleurs fixes (texte clair sur
   photo voilée) en thème clair comme sombre ; la carte suit le thème.
   ============================================================================ */
.cnx-page{margin:0;background:var(--fond)}
.cnx{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:100vh;min-height:100dvh}
.cnx-vitrine{position:relative;display:flex;flex-direction:column;gap:32px;padding:56px clamp(24px,6vw,88px) 40px;color:#fff;overflow:hidden;
  background:linear-gradient(105deg,rgba(15,22,33,.94) 0%,rgba(15,22,33,.82) 45%,rgba(15,22,33,.45) 100%),var(--cnx-photo) center 62%/cover no-repeat,#1b2433}
.cnx-marque{display:flex;align-items:center;gap:14px}
.cnx-logo{display:inline-flex;align-items:center;justify-content:center;width:84px;height:56px;padding:8px;border-radius:12px;background:#fff;box-shadow:0 6px 18px rgba(0,0,0,.25)}
.cnx-logo img{max-width:100%;max-height:100%;object-fit:contain}
.cnx-marque-t{display:grid;gap:2px;line-height:1.15}
.cnx-marque-t b{font-size:17px;letter-spacing:.02em}
.cnx-marque-t small{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.72)}
.cnx-accroche{margin:auto 0;max-width:560px}
.cnx-accroche h1{margin:0;font-size:clamp(34px,4.4vw,58px);line-height:1.04;font-weight:800;letter-spacing:-.025em;color:#fff}
.cnx-accroche h1 span{color:#a9bdd6}
.cnx-accroche p{margin:18px 0 0;font-size:17px;line-height:1.5;color:rgba(255,255,255,.78)}
.cnx-tuiles{list-style:none;margin:32px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.cnx-tuiles li{display:grid;gap:12px;padding:16px;border-radius:12px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);font-weight:700;font-size:14px;line-height:1.3;backdrop-filter:blur(2px)}
.cnx-tuiles svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;color:#c9d6e6}
.cnx-pied{margin:0;font-size:13px;color:rgba(255,255,255,.62)}
.cnx-zone{display:flex;align-items:center;justify-content:center;padding:40px 24px}
.cnx-carte{position:relative;width:min(460px,100%);padding:44px 44px 36px;border-radius:16px;background:var(--carte);border:1px solid var(--bord2);box-shadow:var(--ombre-f)}
.cnx-langue{position:absolute;top:14px;right:14px;margin:0}
.cnx-titre{margin:0;font-size:30px;font-weight:800;letter-spacing:-.02em;color:var(--txt);text-transform:none}
.cnx-intro{margin:8px 0 0;color:var(--txt2);font-size:15px}
.cnx-carte .cnx-form{margin-top:28px;gap:18px}
.cnx-carte .cnx-form label:not(.checkbox-row){font-size:11.5px;letter-spacing:.07em;text-transform:uppercase;font-weight:700;color:var(--txt2)}
.cnx-carte input:not([type="checkbox"]){min-height:50px}
.cnx-ligne{display:flex;align-items:center;justify-content:space-between;gap:10px 16px;flex-wrap:wrap}
.cnx-bouton{display:inline-flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:52px;font-size:16px;font-weight:700;border-radius:10px}
.cnx-bouton svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.cnx-note{display:flex;align-items:center;gap:10px;margin:22px 0 0;padding:12px 14px;border-radius:10px;background:var(--fond2);color:var(--txt3);font-size:13px}
.cnx-note svg{flex:none;width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
/* Autres écrans (mot de passe oublié, réinitialisation, invitation) : titres à la même échelle. */
.cnx-carte>h2{margin:0 0 6px;font-size:26px;font-weight:800;color:var(--txt);text-transform:none;letter-spacing:-.01em}
/* Téléphone et petite tablette : bandeau photo au-dessus, sans les tuiles. */
@media (max-width:900px){
  .cnx{grid-template-columns:1fr;grid-template-rows:auto 1fr}
  .cnx-vitrine{padding:24px 20px 28px;gap:18px;background-position:center 58%}
  .cnx-accroche{margin:0}
  .cnx-accroche h1{font-size:28px}
  .cnx-accroche p{margin-top:8px;font-size:15px}
  .cnx-tuiles,.cnx-pied{display:none}
  .cnx-zone{align-items:flex-start;padding:20px 16px 32px}
  .cnx-carte{padding:32px 20px 24px}
}