/* BBC Habitat CRM, habillage H1 (11/10/2026) : charte « Ardoise et cobalt », palette Ardoise D1 « bulle cobalt »
   (Mike, 08/10/2026 ; charte/README.md, dernière section ; PROMPT-LOT-HABILLAGE-H1, section 1 bis). Un seul endroit
   définit chaque couleur : assets/jetons.css, chargé avant cette feuille. Les anciens noms (--fond, --carte, --texte, --or, --vert…) restent comme
   alias des nouveaux, pour que les règles écrites avant H1 prennent la palette sans être réécrites une à une.
   Aucune couleur écrite en dur dans les pages PHP ni dans crm.js (test 99-habillage-h1). */

/* ---------- base ---------- */
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:var(--corps);background:var(--canvas);color:var(--ink);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a{color:var(--ink)}
a:hover{color:var(--accent-text)}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
/* titre de page à 22 px partout (charte, page-title), « Bonjour … » compris */
h1{font-family:var(--corps);font-weight:600;font-size:22px;line-height:28px;letter-spacing:-.015em;margin:0}
h2{font-size:15px;margin:0;font-weight:600}
h3{font-size:11px;margin:1.4em 0 .7em;color:var(--ink-2);font-weight:600;text-transform:uppercase;letter-spacing:.06em}
.ico{width:16px;height:16px;flex:none;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
code{background:var(--fill);padding:1px 6px;border-radius:5px;word-break:break-all;font-size:13px;font-family:var(--mono)}

/* libellé de section (charte, label) : 11 px en capitales espacées, texte secondaire */
.libelle,.surtitre{font-size:11px;letter-spacing:.06em;color:var(--ink-2);font-weight:600;text-transform:uppercase}

/* ---------- structure : rail + contenu ---------- */
/* barre latérale : la coque v5 (Mike, 11/10/2026, 21 h 40 ; session-2026-10-11/coque/) : dégradé bleu, textes blancs Geist 900,
   entrée active sur fond blanc ; mêmes jetons que le rail de la console en mode appel. Le blanc sur le haut du dégradé tient
   4,58:1 : rien n'y est éclairci, et aucun texte n'y est en blanc translucide. */
.app{display:grid;grid-template-columns:var(--rail-l) minmax(0,1fr);min-height:100vh;background:var(--canvas)}
.rail{background:linear-gradient(180deg,var(--coque-haut) 0%,var(--coque-milieu) 55%,var(--coque-bas) 100%);color:var(--coque-texte);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}
.rail,.rail .nav a,.rail .nav-groupe summary,.rail .profil b,.rail .profil small,.rail .profil-liens a,.rail .profil-liens button.lien,.rail .apercu-rail label{font-weight:900;letter-spacing:.005em}
.marque{display:flex;align-items:center;gap:0;padding:20px 20px 18px;text-decoration:none;color:var(--coque-texte);font-family:var(--corps);font-size:15.5px;font-weight:900}
/* carré du logo blanc, maison en --coque-logo-maison (dessinée par un masque : la couleur reste un jeton) */
.marque{position:relative}
.marque::before{content:"";width:26px;height:26px;border-radius:7px;flex:none;margin-right:10px;background:var(--surface)}
.marque::after{content:"";position:absolute;left:25.5px;top:50%;width:15px;height:15px;transform:translateY(-50%);background:var(--coque-logo-maison);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 7.5 8 3l5.5 4.5V13a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E") center/15px no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 7.5 8 3l5.5 4.5V13a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E") center/15px no-repeat}
.marque:hover{color:var(--coque-texte)}
.marque .m1,.marque .m2{display:inline;font-size:inherit;line-height:1.2}
.marque .m1{margin-right:.28em}
.nav{display:flex;flex-direction:column;gap:2px;padding:0 12px}
.nav a{display:flex;align-items:center;gap:10px;min-height:38px;padding:7px 12px;border-radius:var(--r-rail);font-size:15px;color:var(--coque-texte);text-decoration:none;line-height:1.3}
.nav a.on{background:var(--surface);color:var(--coque-actif-texte);box-shadow:var(--coque-ombre-actif)}
.nav .compte{margin-left:auto;font-size:12.5px;font-style:normal;color:var(--coque-texte);font-variant-numeric:tabular-nums}
.nav a.on .compte{color:var(--coque-actif-texte)}
.nav-groupe{margin-top:14px;padding-top:8px}
.nav-groupe summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:var(--r-rail);font-size:12px;color:var(--coque-texte)}
.nav-groupe summary::-webkit-details-marker{display:none}
.nav-groupe summary::after{content:"";margin-left:auto;width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform 180ms var(--eo)}
.nav-groupe[open] summary::after{transform:rotate(45deg)}
.nav-groupe a{font-size:15px}
@media (hover:hover) and (pointer:fine){ .nav a:not(.on):hover,.nav-groupe summary:hover{background:var(--coque-survol);color:var(--coque-texte)} }
.rail .bas{margin-top:auto;border-top:1px solid var(--coque-filet);padding:14px 20px 18px;display:flex;flex-direction:column;gap:10px}
.profil{display:flex;gap:11px;align-items:center}
.profil b{display:block;font-size:14px;color:var(--coque-texte)}
.profil small{display:block;color:var(--coque-texte);font-size:12.5px}
/* personne : rond plein, initiales blanches, une couleur fixe par compte (data-personne, assets/jetons.css) */
.avatar{width:34px;height:34px;border-radius:50%;background:var(--personne-7);color:var(--on-accent);display:grid;place-items:center;font-weight:600;font-size:12.5px;flex:none;letter-spacing:.02em;box-shadow:0 0 0 2px rgba(255,255,255,.35)}
.avatar[data-personne]{background:var(--personne)}
.profil-liens{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:13px}
.profil-liens a,.rail .profil-liens button.lien{color:var(--coque-texte);white-space:nowrap;text-decoration:none}
.rail .profil-liens a:hover,.rail .profil-liens button.lien:hover{text-decoration:underline}
/* sur le voile sombre (Mike, 11/10, choix 1) : le blanc à 16 % sous un texte de 12 px tombait à 3,46:1 en bas de la coque */
.son{align-self:flex-start;background:var(--voile-cobalt);border:1px solid var(--coque-filet);color:var(--coque-texte);border-radius:var(--r-rond);padding:2px 11px;font-size:12px;font-weight:700}
.son.on{background:var(--surface);color:var(--coque-actif-texte)}
.apercu-rail label{font-size:12px;color:var(--coque-texte);gap:5px}
.apercu-rail select{font-size:13px;padding:6px 8px;color:var(--ink);font-weight:500}
/* rail en aperçu : signalé sur le rail lui-même */
.rail.apercu{background:repeating-linear-gradient(135deg,var(--coque-bas) 0 14px,var(--coque-haut) 14px 28px);box-shadow:inset -3px 0 0 var(--surface)}
.bandeau-apercu{display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:var(--surface);box-shadow:inset 0 -1px 0 var(--or-bord);color:var(--accent-text);padding:10px var(--marge);font-size:13.5px}
.bandeau-apercu b{font-weight:700}
.bandeau-apercu a{margin-left:auto;color:var(--or-texte);font-weight:600}
.bandeau-sauvegarde{display:flex;align-items:center;gap:10px;background:var(--surface);box-shadow:inset 3px 0 0 var(--danger),inset 0 -1px 0 var(--danger-bord);color:var(--danger);padding:10px var(--marge);font-size:13.5px}
.bandeau-sauvegarde b{font-weight:700}

.contenu{min-width:0;display:flex;flex-direction:column}
.barre{display:flex;align-items:center;gap:14px;padding:12px var(--marge);border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--canvas) 88%,transparent);-webkit-backdrop-filter:saturate(180%) blur(14px);backdrop-filter:saturate(180%) blur(14px);position:sticky;top:0;z-index:20}
.recherche{flex:1;max-width:520px;display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-champ);padding:0 12px;height:var(--control-md);color:var(--ink-3);margin:0}
.recherche:focus-within{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.recherche input{border:0;outline:0;flex:1;background:none;padding:0;min-width:0;font-size:13.5px;box-shadow:none!important}
.page{padding:24px var(--marge) 60px;max-width:1440px;width:100%}
body.seul .page{max-width:none}

/* ---------- en-tête de page : surtitre, titre de 22 px, fil d'Ariane ---------- */
.entete{display:flex;align-items:flex-start;gap:20px 24px;margin-bottom:22px;flex-wrap:wrap}
.entete-g{min-width:0}
.entete .surtitre+h1{margin-top:6px}
.entete .droite{margin-left:auto;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.sous{color:var(--ink-2);font-size:13.5px;margin-top:6px}
.fil{font-size:13.5px;color:var(--ink-2);margin-top:6px}
.fil a{color:var(--accent-text);text-decoration:none}
.fil a:hover{text-decoration:underline}
.fil .sep{margin:0 6px;color:var(--ink-3)}

/* ---------- boutons ---------- */
/* boutons (charte) : principal en accent, un seul par écran ; secondaire en remplissage ; discret. Appui à 0,97. */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--accent);background:var(--accent);color:var(--on-accent);min-height:var(--control-md);padding:6px 14px;border-radius:var(--r-champ);font-weight:500;font-size:13.5px;text-decoration:none;white-space:nowrap;line-height:1.3;
  transition:transform 160ms var(--eo),background-color 150ms ease,border-color 150ms ease,color 150ms ease}
.btn:active,.appel:active{transform:scale(.97)}
.btn .ico{width:15px;height:15px}
.btn.principal,.appel{background:var(--accent);border:1px solid var(--accent);color:var(--on-accent);font-weight:600}
.btn.vert{background:var(--success);border-color:var(--success);color:var(--on-accent)}
.btn.ghost,.btn.secondaire{background:var(--fill);color:var(--ink);border-color:transparent;font-weight:500}
.btn.rouge,.btn.alerte{background:var(--danger);border-color:var(--danger);color:var(--on-accent)}
@media (hover:hover) and (pointer:fine){
  .btn:hover,.btn.principal:hover,.appel:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--on-accent)}
  .btn.vert:hover{background:var(--success-sur-fond);border-color:var(--success-sur-fond)}
  .btn.ghost:hover,.btn.secondaire:hover{background:var(--fill-fort);border-color:transparent;color:var(--ink)}
  .btn.rouge:hover,.btn.alerte:hover{background:var(--danger-sur-fond);border-color:var(--danger-sur-fond);color:var(--on-accent)}
}
.btn.grand{min-height:40px;padding:9px 22px;font-size:14.5px}
.btn.petit{min-height:28px;padding:4px 11px;font-size:13px}
.btn[disabled]{opacity:.5;cursor:default;transform:none}
.appel{display:inline-flex;align-items:center;gap:8px;min-height:var(--control-md);padding:6px 16px;border-radius:var(--r-champ);font-weight:600;font-size:14px;white-space:nowrap;text-decoration:none;transition:transform 160ms var(--eo),background-color 150ms ease}
.appel .ico{width:15px;height:15px;stroke:var(--on-accent);stroke-width:2}
.lien,button.lien{background:none;border:0;padding:0;color:var(--accent-text);text-decoration:underline;text-underline-offset:3px;font-size:13px}
.lien:hover{color:var(--accent)}

/* ---------- champs de formulaire ---------- */
input,select,textarea{padding:6px 10px;min-height:var(--control-md);border:1px solid var(--line-strong);border-radius:var(--r-champ);background:var(--surface);max-width:100%;font-size:14px;color:var(--ink)}
textarea{padding:8px 10px}
input::placeholder,textarea::placeholder{color:var(--ink-3)}
input[type=checkbox],input[type=radio]{padding:0;min-height:0;accent-color:var(--accent)}
input[type=file]{padding:8px}
textarea{width:100%;resize:vertical}
input:focus,select:focus,textarea:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--focus);outline-offset:2px;box-shadow:none}
label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--ink-2);font-weight:500}
label.coche,.coche{flex-direction:row;align-items:center;gap:7px;font-weight:400;color:var(--texte)}
.aide{font-size:12.5px;color:var(--discret);font-weight:400}
/* état erreur d'un champ */
label.erreur,.champ-erreur{color:var(--rouge);font-weight:600}
label.erreur input,label.erreur select,label.erreur textarea,input.erreur,select.erreur,textarea.erreur{border-color:var(--rouge-champ);color:var(--rouge)}
label.erreur .aide{color:var(--rouge);font-weight:500}
.form{display:flex;flex-direction:column;gap:14px}
.ligne{display:flex;gap:10px;align-items:flex-end;margin:12px 0;flex-wrap:wrap}
.ligne.serre{margin:0}
.ligne.haut{margin-top:16px}
.form-grille{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 16px;max-width:980px}
.form-grille .large{grid-column:1/-1}
fieldset{border:0;padding:0;margin:0}
legend{font-size:13px;font-weight:600;color:var(--texte);padding:0;margin-bottom:8px}
legend small{font-weight:400;color:var(--discret)}
.f-action{background:var(--surface-doux);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px}
.f-grille{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,.8fr);gap:12px}
.f-grille input,.f-grille select,.form-grille input,.form-grille select{width:100%;min-width:0}
.f-grille .large{grid-column:1/-1}
.radios{display:flex;flex-wrap:wrap;gap:8px 18px}
.radios legend{width:100%}
.filtre{border:1px solid var(--line);background:var(--surface);border-radius:var(--r-champ);padding:5px 10px;min-height:var(--control-md);color:var(--ink);font-size:13px;font-weight:400}
label.filtre{flex-direction:row;align-items:center;gap:7px}
/* segment discret (Liste ou Tableau, Ma file…) : remplissage, l'entrée choisie en blanc */
.seg{display:inline-flex;gap:2px;padding:2px;border-radius:9px;background:var(--fill)}
.seg a,.seg button{border:0;background:none;padding:5px 14px;border-radius:7px;font-size:13px;font-weight:500;color:var(--ink-2);text-decoration:none;transition:background-color 150ms ease,color 150ms ease}
.seg .on{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:0 1px 2px rgba(20,32,51,.12)}
@media (hover:hover) and (pointer:fine){ .seg a:not(.on):hover,.seg button:not(.on):hover{color:var(--ink)} }

/* ---------- messages ---------- */
/* alertes et bandeaux (charte) : sur carte blanche, un trait d'état à gauche ; texte en couleur d'état */
.alerte{background:var(--surface);border:1px solid var(--danger-bord);box-shadow:inset 3px 0 0 var(--danger);color:var(--danger);padding:12px 16px;border-radius:var(--r);margin:0 0 14px}
.alerte.petit{padding:7px 12px;font-size:13px;margin:12px 0 0}
.alerte a,.succes a{color:inherit}
.succes{background:var(--surface);border:1px solid var(--success-bord);box-shadow:inset 3px 0 0 var(--success);color:var(--success);padding:12px 16px;border-radius:var(--r);margin:0 0 14px}
.note{color:var(--ink-3);font-size:13px}
.gris{color:var(--discret)}.rouge{color:var(--rouge)}.jour,.item .d.jour,.kcarte .action.jour{color:var(--ink);font-weight:600}.ambre{color:var(--ambre-texte)}.nowrap{white-space:nowrap}.petit{font-size:12.5px}.centre{text-align:center;display:block}

/* ---------- cartes et blocs ---------- */
.bloc,.carte{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--ombre)}
.carte{padding:18px 20px}
.carte.or,.bloc.or{border-color:var(--or-bord)}
.carte.discrete,.bloc.discret{box-shadow:var(--ombre-discrete)}
.etroit{max-width:440px;margin:60px auto}
.moyen{max-width:640px}
.moyen-large{max-width:860px}
.droite-auto{margin-left:auto}
.pad{padding:18px 20px}
.espace{margin-top:20px}
/* titre d'un bloc (charte, section) : 13 px semi-gras, encre */
.bloc>h2,.pad>h2{margin-bottom:10px;font-size:13px;line-height:18px;color:var(--titre-bloc);font-weight:800}
.bloc-t{display:flex;align-items:baseline;gap:10px;padding:13px 20px 11px;border-bottom:1px solid var(--line-doux);flex-wrap:wrap}
.bloc-t h2{font-size:13px;line-height:18px;color:var(--titre-bloc);font-weight:800}
.bloc-t .n{font-size:12.5px;color:var(--discret);font-weight:400}
.bloc-t .lien{margin-left:auto}
.grille{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:20px;align-items:start}
.grille.deux{grid-template-columns:1fr 1fr}
.pile{display:flex;flex-direction:column;gap:20px}
.vide{padding:24px 20px;color:var(--ink-3);text-align:center}
.vide.petit{padding:12px;font-size:13px}
.vide.grand{padding:60px 20px}
section.bloc{padding:18px 20px}
section.bloc>h2{margin-bottom:12px}

/* ---------- pastilles : catégorie, statut, étiquette ---------- */
/* pastilles d'état, règle des cinq couleurs (charte, 08/10) : rouge = en retard ou bloque ; orange = à vérifier ou à valider ;
   bleu = en cours chez le client ou un tiers ; vert = validé ; gris = simple tâche. Texte plein sur son fond à 11 %. */
.tag{font-size:12px;padding:2px 8px;border-radius:var(--r-pastille);background:var(--neutre-soft);color:var(--neutre);font-weight:500;white-space:nowrap;text-decoration:none;display:inline-block;line-height:1.45}
@media (hover:hover) and (pointer:fine){ a.tag:hover{color:var(--ink);background:var(--fill-fort)} }
.tag.vert{background:var(--success-soft);color:var(--success);font-weight:600}
.tag.statut{background:var(--neutre-soft);color:var(--neutre);font-weight:600}
.tag.or,.tag.ambre,.tag.statut.ambre{background:var(--warning-soft);color:var(--warning);font-weight:600}
.tag.rouge,.tag.statut.rouge{background:var(--danger-soft);color:var(--danger);font-weight:600}
.tag.bleu,.tag.violet{background:var(--info-soft);color:var(--info);font-weight:600}
/* posée sur le fond de page, le texte d'état fonce d'un cran (sinon 3,9:1 seulement) */
.sorties .tag.rouge,.entete .tag.rouge{color:var(--danger-sur-fond)}
.sorties .tag.or,.sorties .tag.ambre,.entete .tag.or,.entete .tag.ambre{color:var(--warning-sur-fond)}
.entete .tag.vert{color:var(--success-sur-fond)}
/* catégories de revenus : couleurs de la console */
.tag.cat-tmo{background:var(--tmo-fond);color:var(--tmo-texte);font-weight:600}
.tag.cat-mo{background:var(--mo-fond);color:var(--mo-texte);font-weight:600}
.tag.cat-inter{background:var(--inter-fond);color:var(--inter-texte);font-weight:600}
.tag.cat-sup{background:var(--sup-fond);color:var(--sup-texte);font-weight:600}
.tag.carre{border-radius:var(--r-pastille)}
.tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.badge{font-size:11px;background:var(--neutre-soft);color:var(--neutre);border-radius:var(--r-pastille);padding:2px 8px;font-weight:600}
.badge.ok{background:var(--success-soft);color:var(--success)}
/* marqueur d'urgence : petit carré */
.urg{display:inline-block;width:7px;height:7px;background:var(--gris);flex:none}
.urg.rouge{background:var(--rouge-vif)}.urg.ambre{background:var(--ambre)}.urg.vert{background:var(--vert)}
/* voyants : vert conforme, ambre en attente, rouge bloqué, gris sans objet */
.voyant{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--gris);flex:none;vertical-align:middle}
.voyant.vert{background:var(--vert)}.voyant.ambre{background:var(--ambre)}.voyant.rouge{background:var(--rouge-vif)}
.voyants{display:flex;align-items:center;gap:16px;flex-wrap:wrap;font-size:12.5px;color:var(--ink-2)}
.voyants span{display:inline-flex;align-items:center;gap:7px}
.pastille{width:8px;height:8px;border-radius:50%;flex:none;margin-top:7px;background:var(--accent)}
.pastille.rouge{background:var(--rouge-vif)}

/* ---------- Aujourd'hui ---------- */
.urgence{border:1px solid var(--ligne);border-radius:var(--r);background:var(--carte);overflow:hidden;box-shadow:var(--ombre)}
.urgence .tete{display:flex;align-items:baseline;gap:10px;padding:13px 20px 11px;flex-wrap:wrap;border-bottom:1px solid var(--line-doux)}
.urgence .tete h2{font-size:13px;line-height:18px;color:var(--titre-bloc);font-weight:800}
.urgence .tete .n{color:var(--discret);font-size:12.5px}
.urgence .tete .obj{margin-left:auto;font-size:12.5px;color:var(--rouge);font-weight:600}
.ligne-lead{display:grid;grid-template-columns:118px 1fr auto;gap:16px;align-items:center;padding:14px 20px;border-top:1px solid var(--ligne2);cursor:pointer}
.urgence .tete+.ligne-lead,.urgence .tete+.vide{border-top:0}
@media (hover:hover) and (pointer:fine){ .ligne-lead:hover{background:var(--surface-doux)} }
.chrono{font-family:var(--corps);font-size:22px;line-height:1.1;font-weight:600;letter-spacing:-.01em;color:var(--ink);font-variant-numeric:tabular-nums}
.chrono small{display:block;font-family:var(--corps);font-size:11px;letter-spacing:.06em;text-transform:uppercase;font-weight:600;color:var(--ink-3);margin-top:4px}
.chrono.limite{color:var(--ambre-texte)}.chrono.limite small{color:var(--ambre-texte)}
.chrono.depasse{color:var(--rouge)}.chrono.depasse small{color:var(--rouge)}
.jauge{height:3px;background:var(--ligne2);margin-top:8px;overflow:hidden}
.jauge i{display:block;height:100%;width:0;background:currentColor}
.qui b{font-size:15px;font-weight:600}
.qui .det,.item .det{color:var(--discret);font-size:12.5px;margin-top:2px}
.item{display:flex;gap:12px;align-items:flex-start;padding:12px 20px;border-top:1px solid var(--ligne2);text-decoration:none;color:inherit}
.bloc-t+.item,.item:first-child{border-top:0}
@media (hover:hover) and (pointer:fine){ a.item:hover{background:var(--surface-doux);color:inherit} }
.item .h{width:88px;flex:none;font-weight:600;color:var(--ink);font-size:13.5px;font-variant-numeric:tabular-nums}
.item .h.petit{width:52px;font-weight:400;font-size:12.5px;color:var(--discret)}
.item .c{flex:1;min-width:0}
.item .c b{font-weight:600}
.item .d{font-size:12.5px;color:var(--texte2);white-space:nowrap}
.item .d.rouge{color:var(--rouge);font-weight:600}
.item>.tag{align-self:center}
.chiffres{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:1px;background:var(--line-doux);border-radius:var(--r);overflow:hidden;border:1px solid var(--line);margin:12px 0}
.chiffres div{background:var(--surface);padding:12px 16px}
.chiffres b{font-family:var(--corps);font-weight:600;font-size:20px;letter-spacing:-.01em;display:block;line-height:1.2;font-variant-numeric:tabular-nums}
.chiffres span{font-size:12.5px;color:var(--discret)}

/* ---------- listes et tableaux ---------- */
.outils{display:flex;gap:9px;align-items:center;margin-bottom:16px;flex-wrap:wrap}
.tab-scroll{overflow-x:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--ombre)}
/* même contention, sans habillage de carte : pour un tableau déjà posé dans une carte (bloc.pad),
   qui débordait de son cadre à droite (lien « note » compris) faute de repli (audit du 28/09,
   AUDIT-LOT0.md point 6). */
.tab-scroll-sobre{overflow-x:auto}
.tableau,.tab{width:100%;border-collapse:collapse;font-size:13.5px}
/* Un titre de colonne n'est jamais coupé au milieu d'un mot : une seule ligne, tronquée par une
   ellipse s'il le faut, jamais un repli lettre par lettre (Mike, 29/09, régression constatée en
   prod avec un seul dossier : « ÉNERGI E », « CATÉGO RIE », « PROCHA INE ACTION », « SOUR CE »).
   Sans disposition fixe ni largeur posée (tous les tableaux hors liste-pipeline), ceci ne change
   rien à l'affichage : la colonne s'élargit comme avant, .tab-scroll fait défiler. */
/* tableau dense (charte) : en-tête en capitales espacées sur fond discret, ligne de 40 px, chiffres tabulaires */
.tableau th,.tab th{text-align:left;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);font-weight:600;padding:9px 12px;background:var(--surface-muted);border-bottom:1px solid var(--line);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tableau td,.tab td{padding:10px 12px;height:var(--row);border-bottom:1px solid var(--line-doux);vertical-align:top}
.tableau th:first-child,.tab th:first-child,.tableau td:first-child,.tab td:first-child{padding-left:16px}
.tableau tr:last-child td,.tab tr:last-child td{border-bottom:0}
.tableau tbody tr[data-href]{cursor:pointer}
@media (hover:hover) and (pointer:fine){ .tableau tbody tr:hover td{background:var(--surface-doux)} }
.tableau tr.risque td{background:var(--fond-alerte)}
.tableau a{text-decoration:none;font-weight:500;color:var(--accent-text)}
.liste-pipeline td:first-child a,.liste-dossiers td:first-child a{font-family:var(--mono);font-size:12px;letter-spacing:0}
.tableau .num,.tab .num{text-align:right}
.kv th{width:280px;color:var(--ink-2);background:none;text-transform:none;letter-spacing:0;font-size:13px;font-weight:500;white-space:normal;overflow:visible;text-overflow:clip}
.journal td{font-size:13px}
/* Cellule de tableau à disposition fixe (colonne trop étroite pour son contenu) : une seule ligne,
   tronquée par une ellipse, jamais coupée au milieu d'un mot. Poser un attribut title avec le texte
   complet pour l'info-bulle. Commune à tout le CRM, appliquée aujourd'hui à liste-pipeline. */
.tronque{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pages{display:flex;gap:6px;margin-top:12px;flex-wrap:wrap}
.pages a,.pages b{padding:4px 10px;border-radius:var(--r-champ);background:var(--surface);border:1px solid var(--line);text-decoration:none}
.sorties{margin-top:18px;display:flex;gap:8px;flex-wrap:wrap;align-items:center;color:var(--ink-2);font-size:13px}
/* filtre sélectionné : fond d'accent léger et trait intérieur de 1,5 px en accent, jamais un fond cobalt plein */
.sorties .tag.on{background:var(--accent-soft);color:var(--accent-text);box-shadow:inset 0 0 0 1.5px var(--accent)}

/* ---------- pipeline en colonnes ---------- */
/* Sept colonnes n'entrent pas dans une largeur d'écran : le tableau défile horizontalement.
   Colonnes un peu plus étroites, arrêt net sur une colonne, barre de défilement toujours visible,
   pour qu'une colonne coupée au bord droit se lise comme « il y a la suite » (remarque du passage 1). */
.kanban{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(196px,1fr);gap:10px;overflow-x:auto;padding-bottom:12px;align-items:start;
  scroll-snap-type:x proximity;scrollbar-width:thin;scrollbar-color:var(--bord-btn-survol) transparent}
.kanban>.col{scroll-snap-align:start}
.kanban::-webkit-scrollbar{height:10px}
.kanban::-webkit-scrollbar-track{background:var(--fond-panneau);border-radius:999px}
.kanban::-webkit-scrollbar-thumb{background:var(--bord-btn-survol);border-radius:999px}
.col{background:var(--surface-muted);border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column;min-height:420px}
/* trait de 3 px au bord des groupes par phase (charte, couleur de phase) */
.col[data-affiche]{box-shadow:inset 0 3px 0 var(--ph)}
[data-affiche="nouveau"]{--ph:var(--phase-nouveau)}[data-affiche="qualification"]{--ph:var(--phase-qualification)}[data-affiche="prevt"]{--ph:var(--phase-prevt)}
[data-affiche="vt"]{--ph:var(--phase-vt)}[data-affiche="devis"]{--ph:var(--phase-devis)}[data-affiche="closing"]{--ph:var(--phase-closing)}
.col-t{padding:14px 14px 4px;display:flex;align-items:baseline;gap:8px}
.col-t b{font-weight:600;font-size:13.5px;display:flex;align-items:center}.col-t>span{color:var(--ink-3);font-size:12.5px;margin-left:auto;font-variant-numeric:tabular-nums}
.col-t em{font-style:normal;font-size:11px;color:var(--rouge);font-weight:600}
.cartes{padding:10px 14px 14px;display:flex;flex-direction:column;gap:8px;max-height:calc(100vh - 290px);overflow-y:auto}
.kcarte{display:block;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:12px;text-decoration:none;color:inherit;box-shadow:var(--ombre-discrete)}
@media (hover:hover) and (pointer:fine){ .kcarte:hover{border-color:var(--or-bord);color:inherit} }
.kcarte .l1{display:flex;justify-content:space-between;gap:8px}
.kcarte .l1 b{font-weight:600;font-size:13.5px}.kcarte .l1 span{font-size:11.5px;color:var(--discret);white-space:nowrap}
.kcarte .det{font-size:12.5px;color:var(--discret);margin-top:2px}
.kcarte .tags{margin-top:8px}
.kcarte .tag{font-size:11px;padding:2px 8px}
.kcarte .action{margin-top:9px;padding-top:9px;border-top:1px solid var(--line-doux);font-size:12px;color:var(--ink-2);display:flex;gap:6px;align-items:center}
.kcarte .action.retard{color:var(--rouge);font-weight:600}
.kcarte .action .ico{width:13px;height:13px;stroke-width:2}

/* ---------- fiche dossier (le haut de fiche : assets/fidelite.css, lot Fidélité) ---------- */
.coord a{text-decoration:none;color:var(--onglet-texte)}
/* adresse, code postal et commune distingués (PLAN-CRM.md, section 18) */
.coord .adr+.adr{margin-left:-12px}
.coord .adr+.adr::before{content:"";display:inline-block;width:1px;height:12px;margin:0 8px 0 0;background:var(--line-strong);vertical-align:-1px;opacity:.6}
.adresse-separee{display:flex;flex-wrap:wrap;gap:4px 0}
.adresse-separee .adr+.adr::before{content:"";display:inline-block;width:1px;height:12px;margin:0 8px;background:var(--line-strong);vertical-align:-1px;opacity:.6}
.coord a:hover{text-decoration:underline;color:var(--ink)}
.dernieres-modifs .det.gris{color:var(--entete-secondaire)}
/* deux liens de prévisualisation côte à côte (dossier.php, bloc Dimensionnement retenu) : sans
   cette classe, ils collaient l'un à l'autre, faute du display:flex + gap propre à .prochaine
   .boutons ci-dessus (audit du 28/09, AUDIT-LOT0.md point 17). Nom distinct de .boutons pour ne
   pas mettre en ligne les <form> qui, ailleurs (mêmes boutons de la note), doivent rester empilés. */
.boutons-liens{display:flex;gap:8px;flex-wrap:wrap;padding:18px 20px}
.boutons-liens+.note{padding:0 20px 18px}
/* dialogue « Prochaine action » (maquette Fiche-Action-Pour) : le fil du type choisi à droite de la liste, « Pour » */
.type-fil{position:relative;display:block}
.type-fil select{padding-right:120px}
.type-fil .fil-choisi{position:absolute;right:30px;top:50%;transform:translateY(-50%);font-style:normal;font-size:11.5px;font-weight:600;
  background:var(--neutre-soft);color:var(--neutre);padding:2px 8px;border-radius:var(--r-pastille);pointer-events:none;max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.type-fil .fil-choisi:empty{display:none}
.remplace{color:var(--texte2);font-size:13.5px;margin:0}
.pour-action{border:1px solid var(--or-bord);background:var(--accent-soft);border-radius:var(--r);padding:10px 14px}
.pour-ligne{display:flex;align-items:center;gap:8px 10px;flex-wrap:wrap;min-height:34px}
.pour-lib{color:var(--discret);font-size:13px}
.pour-role{font-weight:600}
.pour-selon{color:var(--texte2)}
.pour-personne{min-width:220px;max-width:100%}
.pour-suite{margin:8px 0 0}
.seule-fil{margin:0}
fieldset.action-si-annulee{border:0;padding:0;margin:14px 20px 0;min-width:0}
fieldset.action-si-annulee+*{margin-top:0}
.console-form{display:inline-flex;align-items:center;gap:8px}
.console-form select{font-size:13px;padding:5px 10px;border-radius:var(--r-champ)}
/* onglets de fiche */
/* onglets de la fiche : chacun dans sa bulle, sans bandeau autour (coque v5) ; l'onglet ouvert en matière cobalt, la pastille
   glisse d'une bulle à l'autre (animation a, 180 ms ; .onglets .ind, posée par crm.js) */
.onglets{position:relative;display:flex;gap:8px;margin:20px 0 18px;padding:2px;overflow-x:auto;scrollbar-width:none}
.onglets::-webkit-scrollbar{display:none}
.onglets button{position:relative;z-index:1;flex:none;border:0;background:var(--surface);height:34px;padding:0 14px;border-radius:11px;color:var(--onglet-texte);font-size:13.5px;font-weight:800;letter-spacing:.005em;white-space:nowrap;
  box-shadow:0 0 0 1px var(--onglet-filet),0 1px 2px rgba(20,32,51,.06);transition:background-color 150ms ease,color 150ms ease}
.onglets button span{font-size:12px;font-weight:800;color:var(--onglet-compteur);margin-left:5px;font-variant-numeric:tabular-nums}
.onglets button span.urg{width:7px;height:7px;border-radius:50%;background:var(--warning);vertical-align:1px}
.onglets button.on,.onglets .ind{color:var(--on-accent);background:linear-gradient(180deg,var(--matiere-haut) 0%,var(--matiere-bas) 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.28),0 4px 12px -4px rgba(47,99,216,.7)}
.onglets button.on span{color:var(--on-accent)}
.onglets .ind{position:absolute;z-index:2;top:2px;left:0;height:34px;border-radius:11px;pointer-events:none;transition:transform 180ms var(--eo),width 180ms var(--eo)}
/* la bulle active porte son propre fond ; pendant les 180 ms du glissement seulement (classe en-glisse, crm.js), elle devient
   transparente et laisse voir la pastille qui glisse : au repos, le texte se lit toujours sur son fond */
.onglets.glisse button.on{z-index:3}
.onglets.glisse.en-glisse button.on{background:transparent;box-shadow:none}
@media (hover:hover) and (pointer:fine){ .onglets button:not(.on):hover{background:var(--surface-doux);color:var(--onglet-texte)} }
.panneau{display:none}.panneau.on{display:block}
.champs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:-1px}
.champ{padding:11px 20px;border-top:1px solid var(--ligne2);min-width:0}
/* un mot court de fin (« le ») passait seul à la ligne dans cette colonne étroite (audit du 28/09,
   AUDIT-LOT0.md point 16) ; text-wrap:pretty replie sans laisser d'orphelin, sans toucher au texte
   du libellé (des tests le lisent tel quel, ex. blocVt() dans tests/parcours.js) */
.champ>span{display:block;font-size:12.5px;color:var(--ink-2);text-wrap:pretty}
.champ b{font-weight:500;font-size:14px;overflow-wrap:anywhere}
.champ.large{grid-column:1/-1}.champ textarea.edition{width:100%}
.vide.lecture,.champ .vide,b.vide{color:var(--discret);font-weight:400;font-style:italic;padding:0;text-align:left}
.editable .edition,.editable .edition-actions{display:none}
.editable.en-edition{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.editable.en-edition .edition{display:block;width:100%;margin-top:4px}
.editable.en-edition .edition-actions{display:flex;gap:14px;align-items:center;margin-left:auto}
.editable.en-edition .lecture,.editable.en-edition .bloc-t>.bascule-edition{display:none}
.compl{padding:12px 20px;border-top:1px solid var(--ligne2)}
.bloc-t+.compl{border-top:0}
.compl .l{display:flex;justify-content:space-between;margin-bottom:7px;font-size:13.5px}
.barre-p{height:4px;background:var(--fill);border-radius:2px;overflow:hidden}
.barre-p i{display:block;height:100%;background:var(--vert)}
.barre-p.moy i{background:var(--ambre)}.barre-p.faible i{background:var(--rouge-vif)}
.depot{display:flex;gap:8px;flex-wrap:wrap;padding:12px 20px;border-bottom:1px solid var(--ligne2)}
.depot select{flex:1;min-width:180px}
.depot input[type=file]{flex:1;min-width:180px;padding:7px}
.piece{display:grid;grid-template-columns:22px 1fr;gap:12px;align-items:start;padding:10px 20px;border-top:1px solid var(--ligne2)}
.depot+.piece{border-top:0}
.piece .etat{width:18px;height:18px;border-radius:50%;display:grid;place-items:center;margin-top:1px}
.piece .etat .ico{width:11px;height:11px;stroke:var(--on-accent);stroke-width:3}
.etat.ok{background:var(--vert)}.etat.attente{border:1.5px solid var(--ambre)}.etat.manque{border:1.5px dashed var(--gris)}
.qui2{font-size:12.5px;color:var(--discret);margin-top:2px}
.qui2 a{color:var(--texte2)}
form.inline{display:inline}
.x{background:none;border:0;color:var(--rouge);font-size:17px;line-height:1;padding:0 4px}
.lien-tech{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap;margin-top:10px}
.coches{display:flex;gap:6px 16px;flex-wrap:wrap;max-width:780px}
.liens{margin:12px 0 0;padding-left:18px}
.copie{display:flex;gap:6px;margin-top:6px}.copie input{flex:1}
.danger{margin-top:18px;padding-top:14px;border-top:1px solid var(--ligne2)}
pre.synthese{white-space:pre-wrap;font-size:13px;font-family:var(--mono);background:var(--surface-doux);border:1px solid var(--line);padding:12px 14px;border-radius:var(--r);max-height:420px;overflow:auto}
/* bloc journal : fil d'événements */
.fil-ev{padding:8px 20px 16px}
.ev{display:grid;grid-template-columns:86px 14px 1fr;gap:12px;padding:0}
.ev .t{font-size:12.5px;color:var(--ink-3);text-align:right;padding-top:1px;font-variant-numeric:tabular-nums}
.ev .p{position:relative;display:flex;flex-direction:column;align-items:center}
.ev .p::after{content:"";width:1px;flex:1;background:var(--line);margin-top:2px}
.ev:last-child .p::after{display:none}
.ev .p i{width:10px;height:10px;border-radius:50%;margin-top:4px;background:var(--type-autre);flex:none}
/* gamme accordée des types (charte, 08/10) : elle ne dit jamais un état ; rouge seulement pour une ligne qui bloque */
.ev .p i.t-appel{background:var(--type-appel)}.ev .p i.t-message{background:var(--type-message)}.ev .p i.t-visite{background:var(--type-visite)}
.ev .p i.t-document{background:var(--type-document)}.ev .p i.t-lead{background:var(--type-lead)}.ev .p i.t-releve{background:var(--type-releve)}
.ev .p i.t-autre{background:var(--type-autre)}
.ev .p i.or{background:var(--accent)}.ev .p i.vert{background:var(--success)}.ev .p i.encre{background:var(--ink)}
.ev .p i.rouge{background:var(--surface);box-shadow:inset 0 0 0 2px var(--danger)}
.ev .c{padding-bottom:15px}
.ev .c b{font-weight:600}
.ev .c div{font-size:13px;color:var(--ink-2);overflow-wrap:anywhere}
.fil-ev.echanges-seuls .ev:not(.ech){display:none}

/* ---------- fenêtres ---------- */
/* fenêtres : centrées, entrée par l'échelle de 0,96 à 1 et un fondu (animation f, 200 ms ; sortie plus rapide) */
dialog.fenetre{border:0;border-radius:12px;padding:0;width:min(620px,calc(100vw - 32px));box-shadow:0 24px 64px rgba(20,32,51,.28);color:var(--ink);background:var(--surface)}
dialog.fenetre[open]{animation:fenetre-entre 200ms var(--eo)}
dialog.fenetre::backdrop{background:rgba(20,32,51,.42)}
@keyframes fenetre-entre{from{opacity:0;transform:scale(.96)}}
.f-tete{display:flex;align-items:center;padding:16px 22px;border-bottom:1px solid var(--line-doux)}
.f-tete h2{font-family:var(--corps);font-weight:600;font-size:17px;letter-spacing:-.01em}
.f-tete .x{margin-left:auto;color:var(--ink-3);font-size:22px}
.f-corps{padding:18px 22px;display:flex;flex-direction:column;gap:14px;max-height:70vh;overflow-y:auto}
.f-pied{display:flex;justify-content:flex-end;gap:10px;padding:14px 22px;border-top:1px solid var(--line-doux);background:var(--surface-doux);border-radius:0 0 12px 12px}

/* ---------- notifications ---------- */
/* messages en bas d'écran : ardoise, entrent par le bas (animation e, 260 ms) */
#toast{position:fixed;right:18px;bottom:18px;display:flex;flex-direction:column;gap:8px;z-index:9999}
#toast .t{background:var(--rail-fond);color:var(--on-accent);padding:12px 16px;border-radius:12px;box-shadow:0 14px 34px -12px rgba(10,20,40,.6);max-width:340px;cursor:pointer;animation:entre 260ms var(--eo)}
#toast .t b{color:var(--on-accent)}
#toast .t small{color:var(--onglets-texte)}
@keyframes entre{from{transform:translateY(16px);opacity:0}}

/* ---------- pages sans compte : connexion, technicien ---------- */
/* pages sans compte (connexion, mot de passe oublié…) : fond cobalt, reflet clair en haut à gauche, carte blanche
   (maquette tour3/Connexion-cobalt) ; champs et bouton de 44 px, bouton en matière cobalt */
body.seul{min-height:100vh;background:radial-gradient(1200px 700px at 15% 0%,rgba(255,255,255,.16),transparent 55%),linear-gradient(135deg,var(--cobalt-haut),var(--cobalt-bas));background-attachment:fixed}
body.seul .carte.etroit{border:0;border-radius:16px;padding:28px 28px 24px;box-shadow:0 1px 2px rgba(0,0,0,.2),0 24px 48px -20px rgba(0,0,0,.55)}
body.seul .carte.etroit h1{margin-bottom:6px}
body.seul .etroit{max-width:380px;margin:12vh auto 40px}
body.seul .form label{font-size:13px;color:var(--ink-2)}
body.seul .form input:not([type=checkbox]):not([type=radio]){min-height:var(--control-touch);font-size:16px;border-radius:10px}
body.seul .form .btn{min-height:var(--control-touch);border:0;border-radius:10px;font-size:15px;font-weight:600;
  background:linear-gradient(180deg,var(--matiere-haut),var(--matiere-bas));box-shadow:inset 0 1px 0 rgba(255,255,255,.28),0 6px 14px -6px rgba(47,99,216,.75)}
body.seul > .page > p,body.seul > .page > h1{color:var(--on-accent)}
.top{display:flex;align-items:center;gap:24px;padding:14px 20px;background:var(--surface);border-bottom:1px solid var(--line)}
.top .marque{padding:0;font-family:var(--corps);font-size:16px;color:var(--ink)}
.top .marque::before{width:24px;height:24px}
.top .marque b{display:inline;font-family:var(--corps);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);font-weight:600;margin-left:8px}
.tech .page{max-width:560px;margin:0 auto;padding:20px 16px}
.tech h1{font-size:22px;margin-top:6px}
.tech .coord{color:var(--texte2)}
.tech .depot-tech{margin:12px 0;display:flex;flex-direction:column;gap:10px}
.tech .depot-tech h2{font-size:15px}
.tech .depot-tech.fait{border-color:var(--success-bord)}
.tech input[type=file]{padding:12px}
.num{font-size:11px;letter-spacing:.06em;text-transform:uppercase;font-weight:600;color:var(--ink-2)}

/* ---------- écrans plus étroits ---------- */
@media (max-width:1180px){.fiche-haut{grid-template-columns:1fr}}
@media (max-width:1100px){.grille,.grille.deux{grid-template-columns:1fr}.champs{grid-template-columns:1fr 1fr}}
@media (max-width:800px){
  :root{--marge:16px}
  .app{grid-template-columns:1fr;background:none}
  .rail{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;padding:8px 8px 10px}
  .marque{padding:6px 10px}
  .nav{flex-direction:row;flex-wrap:wrap;padding:0;width:100%}
  .nav a{padding:7px 10px;font-size:13.5px}
  .nav-groupe{margin:0;border:0;padding:0;width:100%}
  .rail .bas{display:none}
  h1{font-size:22px}
  .form-grille,.f-grille,.champs{grid-template-columns:1fr}
  .ligne-lead{grid-template-columns:92px 1fr}.ligne-lead .appel{grid-column:1/-1;justify-content:center}
  .phases{grid-template-columns:repeat(4,minmax(0,1fr))}
  .ev{grid-template-columns:64px 14px 1fr}
  .onglets button{padding:10px 12px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---------- passage 2 : Démarrer, Contacter, colonnes du pipeline ---------- */

/* un seul Démarrer, en haut à droite de la fiche, sélecteur de scénario à côté (10.1) */
.actions-fiche{align-items:center}
.actions-fiche .demarrer{display:flex;align-items:center;gap:8px}
.actions-fiche .demarrer select{max-width:246px}
.demarrer .ico{fill:currentColor;stroke:none}
.ligne-lead .demarrer{white-space:nowrap}

/* fenêtre Contacter : un lien par application, aucune API */
.contacts{display:grid;gap:8px}
.contact-lien{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--bord-btn);border-radius:var(--r);
  text-decoration:none;color:var(--texte);background:var(--carte)}
.contact-lien:hover{border-color:var(--bord-btn-survol);background:var(--fond-doux)}
.contact-lien .ico{width:19px;height:19px;color:var(--dore)}
.contact-lien b{font-weight:600;font-size:14px;display:block}
.contact-lien small{color:var(--discret);font-size:12.5px}

/* phase dans la liste du pipeline (9.7) ; lot Phases (charte, Mike, 08/10) : un point de 8 px à la couleur de la phase
   affichée, devant son nom, dans le Pipeline et sur Aujourd'hui ; le reste de l'apparence vient avec le lot H1 */
.phase{display:inline-block;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap;background:var(--gris-fond);color:var(--gris-texte)}
.pt-phase{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:1px;flex:none}
.pt-phase.ph-nouveau{background:var(--phase-nouveau)}
.pt-phase.ph-qualification{background:var(--phase-qualification)}
.pt-phase.ph-prevt{background:var(--phase-prevt)}
.pt-phase.ph-vt{background:var(--phase-vt)}
.pt-phase.ph-devis{background:var(--phase-devis)}
.pt-phase.ph-closing{background:var(--phase-closing)}

/* Douze colonnes doivent tenir dans la largeur, sinon les dernières, Source et Depuis, sont
   coupées au bord droit. Largeur fixe sur les dix colonnes courtes, le reste va au client et à
   la commune : le tableau ne dépasse jamais, il se resserre. */
.liste-pipeline{font-size:12.5px;table-layout:fixed;width:100%}
/* Régression corrigée le 29/09 (Mike) : overflow-wrap:break-word coupait un mot trop long pour sa
   colonne au milieu, y compris dans un en-tête replié sur deux lignes. Revient à la décision du
   passage 3 : une seule ligne, tronquée par une ellipse, jamais coupée au milieu d'un mot ; le
   texte complet est dans l'attribut title de chaque cellule (info-bulle). th hérite déjà de
   l'ellipse commune (plus haut) ; td la reprend ici, pour toutes les colonnes, y compris Client
   et Commune qui n'ont pas de largeur posée. */
.liste-pipeline th,.liste-pipeline td{padding:9px 7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.liste-pipeline th:first-child,.liste-pipeline td:first-child{padding-left:16px}
/* Dossier : « BBC-AAMMJJ-NNN » tient sur une ligne, environ 106 px de texte, plus 16 px de marge
   à gauche et 7 à droite. À 104 px il en restait 81 et le numéro passait sous le nom du client. */
.liste-pipeline th:nth-child(1),.liste-pipeline td:nth-child(1){width:142px}
.liste-pipeline th:nth-child(3),.liste-pipeline td:nth-child(3){width:48px}
.liste-pipeline th:nth-child(5),.liste-pipeline td:nth-child(5){width:46px}
/* Énergie, Catégorie, Source : un en-tête trop large pour sa colonne se tronque maintenant, il ne
   se replie plus lettre par lettre (audit du 28/09, AUDIT-LOT0.md point 2, régression du 29/09).
   Prochaine action était restée à la largeur d'une colonne voisine d'avant l'ajout de Statut :
   66 px pour un texte du type « Accompagnement MaPrimeRénov', mar. 14:30 ». Mesuré
   (50-passage2.spec.js) : les élargir sans retenue écrasait Client, Commune et Depuis, seules
   colonnes sans largeur posée, sous les 44 px du test. Largeurs choisies pour laisser à ces trois
   colonnes assez de place (mesuré avec un jeu de données réel, cadre à 1144 px). */
.liste-pipeline th:nth-child(6),.liste-pipeline td:nth-child(6){width:80px}
.liste-pipeline th:nth-child(7),.liste-pipeline td:nth-child(7){width:100px}
.liste-pipeline th:nth-child(8),.liste-pipeline td:nth-child(8){width:78px}
.liste-pipeline th:nth-child(9),.liste-pipeline td:nth-child(9){width:146px}
.liste-pipeline th:nth-child(10),.liste-pipeline td:nth-child(10){width:110px}
.liste-pipeline th:nth-child(11),.liste-pipeline td:nth-child(11){width:82px}
.liste-pipeline th:nth-child(12),.liste-pipeline td:nth-child(12){width:72px}
.liste-pipeline .phase{font-size:11.5px;padding:3px 7px}
.tech .releve-tech{margin:12px 0;display:flex;flex-direction:column;gap:10px}
.tech .releve-tech h2{font-size:15px}
/* passage 3 : statut dans la phase, écran Dossiers */
.statut-phase{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:14px}
.statut-phase select{width:auto;max-width:210px}
.liste-dossiers .voyants{font-size:12px;white-space:nowrap}

/* onglet Dimensionnement de la fiche (23/09) : la page de dimensionnement est embarquée telle quelle,
   dans un cadre à elle. Le bouton d'enregistrement ne s'ouvre qu'une fois un calcul remonté. */
.dim-cadre{margin-top:18px}
/* hauteur de départ modeste : le cadre annonce sa vraie hauteur dès qu'il a calculé */
.dim-cadre iframe{display:block;width:100%;border:0;height:520px;background:transparent}
/* ce qui manque au relevé : une liste de travail, pas une alerte du dossier */
.dim-manque{background:var(--ambre-fond);border-left:3px solid var(--ambre);padding:10px 14px;border-radius:0 var(--r-champ) var(--r-champ) 0;
  font-size:12.5px;color:var(--ambre-texte);margin:10px 0}
.dim-manque b{color:var(--ambre-texte)}
.dim-enregistrer{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding-top:14px;border-top:1px solid var(--ligne2)}
.dim-enregistrer .n{flex:1;min-width:220px}
.dim-enregistrer button[disabled]{opacity:.45;cursor:not-allowed}
#dimReprise ul{margin:6px 0 0;padding-left:18px}
#dimDefauts:not(:empty){margin-top:10px}

/* aperçu de la note de dimensionnement (23/09). Le document remis est le PDF produit par le CRM ;
   cette page montre le même HTML, composé par note_dimensionnement_html(). Les styles du document
   sont en ligne, dans le HTML lui-même : ce qui est ici n'habille que la page autour. */
/* centré comme .tech .page (même genre de page étroite) : sans le margin:auto, l'aperçu restait
   calé à gauche, la moitié droite de l'écran vide (audit du 28/09, AUDIT-LOT0.md point 18) */
body.note-dim main.page{max-width:900px;margin:0 auto}
.note-barre{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  padding-bottom:14px;border-bottom:1px solid var(--ligne);margin-bottom:6px;font-size:13px}
.note-aide{font-size:12.5px;color:var(--discret);margin:0 0 18px}
.note-dim-doc{background:#fff;border:1px solid var(--ligne);border-radius:var(--r);padding:30px 34px;color:#111}
.note-dim-doc h1{font-family:var(--titre);font-weight:600;margin:0 0 4px}
.note-dim-doc h2{letter-spacing:.09em;margin:22px 0 6px}
.note-dim-doc p{margin:6px 0}
.note-dim-doc table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;margin:4px 0}
.note-dim-doc table[border="1"] td,.note-dim-doc table[border="1"] th{border:1px solid var(--ligne)}
.note-dim-doc th,.note-dim-doc td{padding:5px 8px;vertical-align:top}
.note-dim-doc th{text-align:left}
@media print{
  body.note-dim{background:#fff}
  body.note-dim .note-barre,body.note-dim .note-aide,body.note-dim #toast{display:none!important}
  body.note-dim main.page{max-width:none;padding:0;margin:0}
  .note-dim-doc{border:0;padding:0;border-radius:0}
  .note-dim-doc table{page-break-inside:auto}
  .note-dim-doc tr{page-break-inside:avoid}
}
/* aperçu : en-tête et pied identiques à ceux de la pièce déposée (note_entete, note_pied).
   Objet du document à gauche, identité de l'entreprise à droite, pas de logo. */
.note-dim-doc .doc-entete{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;
  padding-bottom:10px;border-bottom:1px solid var(--ligne);margin-bottom:6px}
.note-dim-doc .doc-entete-d{text-align:right}
.note-dim-doc .doc-entete .l1{font-size:16px;font-weight:600;color:#1a3028;margin-bottom:2px}
.note-dim-doc .doc-entete .l2{font-size:11.5px;color:var(--discret);line-height:1.5}
.note-dim-doc .doc-pied{margin-top:26px;padding-top:10px;
  font-size:10.5px;color:var(--discret);line-height:1.6}

/* Mandats : l'envoi au client et le retour signé, sur une ligne à part sous le mandat (28/09) */
.mandat-suivi td{padding-top:0;border-top:0}
.mandat-suivi .attente-mandat{margin:0 0 8px;color:var(--rouge);font-size:13px}
.mandat-suivi form{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 8px}
.mandat-suivi form .libelle{min-width:130px}
.mandat-app .btn{margin-left:8px}

/* ---------- Onglet VT au bureau (lot M4a, LOT-M4-VT-BUREAU.md) : apparence actuelle du CRM, au plus simple.
   La refonte remplacera cet habillage ; les règles sont dans app/visites.php et app/releve-vt.php. ---------- */
.vt-bandeau{margin:0 0 18px;flex-wrap:wrap}
.vt-vue{display:none}.vt-vue.on{display:block}
.vt-direct:empty{display:none}
.vt-colonnes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:start}
.vt-colonnes.une{grid-template-columns:minmax(0,1fr);max-width:1100px}
.tab .vt-num{text-align:right;white-space:nowrap}
.pad-l{padding:0 20px 14px}
.vt-lignes{margin:0}
.vt-lignes th{width:42%;text-align:left;color:var(--texte2);text-transform:none;letter-spacing:0;font-size:13px;font-weight:500;white-space:normal;overflow:visible;text-overflow:clip;padding:9px 12px 9px 20px;border-bottom:1px solid var(--ligne2)}
.vt-lignes td{padding:9px 20px 9px 12px}
.vt-lignes td b{font-weight:600}
.vt-lignes td small{display:block;color:var(--discret);font-size:12.5px}
.vt-lignes tr.sous-titre th,.vt-lignes tr.sous-titre td{background:var(--fond-doux)}
.vt-lignes tr.detail th{padding-left:34px;font-weight:400}
.vt-lignes tr.detail td b{font-weight:500}
.vt-lignes tr.ambre td b,.vt-lignes tr.ambre th{color:var(--ambre-texte)}
.vt-lignes tr.texte td{color:var(--texte2);padding-left:20px}
.vt-validation .boutons{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.vt-validation p{margin:0}
.vt-attente{color:var(--ambre-texte);font-weight:600}
.vt-refusee{color:var(--rouge);font-weight:600}
.vt-lien{display:flex;gap:14px;align-items:center;flex-wrap:wrap;font-size:13px}
.vt-temps{list-style:none;margin:0;padding:6px 20px 12px;border-top:1px solid var(--ligne2)}
.vt-temps li{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;padding:7px 0;border-bottom:1px solid var(--ligne2)}
.vt-temps li:last-child{border-bottom:0}
.vt-temps li b{min-width:110px;font-weight:600}
.vt-temps li small{color:var(--discret);font-size:12.5px}
.vt-temps li .h{margin-left:auto;color:var(--texte2);font-size:13px}
.vt-temps li.cours b{color:var(--or-texte)}
.vt-temps li.fait b{color:var(--vert)}
.vt-temps li.alerte b,.vt-temps li.avis b{color:var(--ambre-texte)}
.vt-temps li.avis.traite b{color:var(--discret)}
.vt-journee td{vertical-align:middle}
.vt-journee td small{display:block;color:var(--discret);font-size:12.5px}
.vt-journee td.h{width:60px;font-weight:600;color:var(--texte2)}
.vt-journee tr.cette td{background:var(--fond-doux)}
.vt-pieces tr.niveau td{background:var(--fond-doux)}
.vt-pieces tr.total td{font-weight:600;border-top:1px solid var(--ligne)}
.vt-pieces td.ambre,.vt-facades td.ambre{color:var(--ambre-texte);font-weight:600}
.vt-facades td small{display:block;color:var(--discret);font-size:12.5px}
.vt-facades tr.total td{font-weight:600}
details.vt-piece>summary{cursor:pointer;list-style:none}
details.vt-piece>summary::-webkit-details-marker{display:none}
details.vt-piece>summary h2::before{content:"+ ";color:var(--discret)}
details.vt-piece[open]>summary h2::before{content:"− "}
.vt-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;padding:14px 20px 18px}
.vt-photos figure{margin:0;min-width:0}
.vt-photos img,.vt-photos .vide-photo{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--r-champ);background:var(--gris-fond)}
.vt-photos .impossible .vide-photo{display:grid;place-items:center;background:var(--ambre-fond);color:var(--ambre-texte);font-size:12.5px;font-weight:600;text-align:center;padding:8px}
.vt-photos figcaption{font-size:12.5px;color:var(--texte2);margin-top:5px;line-height:1.35}
.vt-photos figcaption span{display:block;color:var(--discret)}
.vt-a-valider{border-color:var(--rouge-bord);margin-bottom:20px}
.vt-a-valider .bloc-t h2{color:var(--rouge)}
.vt-a-valider .bloc-t .obj{margin-left:auto;font-size:12.5px;color:var(--rouge);font-weight:600}
@media (max-width:1100px){.vt-colonnes{grid-template-columns:1fr}}
/* lot M4c : verdict, écarts, Complété au bureau, fenêtres « Modifier » (apparence actuelle, au plus simple) */
.vt-verdict{margin:4px 20px 12px;padding:10px 14px;border-radius:var(--r-champ);background:var(--fond-doux);border:1px solid var(--ligne2)}
.vt-verdict b{display:block;font-weight:600}
.vt-verdict small{display:block;color:var(--texte2);font-size:12.5px;margin-top:2px}
.vt-verdict.vert{background:var(--vert-fond);border-color:var(--vert-bord)}.vt-verdict.vert b{color:var(--vert)}
.vt-verdict.rouge{background:var(--rouge-fond);border-color:var(--rouge-bord)}.vt-verdict.rouge b{color:var(--rouge)}
.vt-verdict.ambre{background:var(--ambre-fond);border-color:var(--ambre-bord,var(--ligne2))}.vt-verdict.ambre b{color:var(--ambre-texte)}
.vt-ecarts th{text-align:left;color:var(--texte2);font-weight:500;text-transform:none;letter-spacing:0;font-size:13px;padding:8px 12px 8px 20px}
.vt-ecarts thead th{font-size:12px;color:var(--discret)}
.vt-ecarts td{padding:8px 20px 8px 12px}
.vt-ecarts tr.ecart td b::after{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--ambre-texte);margin-left:6px;vertical-align:middle}
.vt-ecarts tr.eligibilite th,.vt-ecarts tr.eligibilite td b{color:var(--rouge);font-weight:600}
.vt-ecarts .identique{color:var(--discret)}
.vt-identiques>summary{display:flex;justify-content:space-between;cursor:pointer;list-style:none;padding:9px 20px;font-size:13px;color:var(--texte2);border-top:1px solid var(--ligne2)}
.vt-identiques>summary::-webkit-details-marker{display:none}
.vt-bloque{margin:4px 0 10px;color:var(--texte2);font-size:13px;background:var(--fond-doux);border-radius:var(--r-champ);padding:8px 12px}
.vt-modifier{display:flex;justify-content:flex-end}
.champs-fenetre{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px}
.champs-fenetre label small{display:block;color:var(--discret);font-size:12px;font-weight:400}
.carte.prochaine .sous-action{color:var(--texte2);font-size:13px;margin-top:2px}
@media (max-width:640px){.champs-fenetre{grid-template-columns:1fr}}
/* lot M4e : l'import du PDF d'un sous-traitant (maquette Fiche-VT-Import), au plus simple */
.vt-import-tete{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.vt-import-pages{margin-left:auto;display:flex;gap:4px}
.vt-import-page{min-width:28px;height:28px;border-radius:7px;border:1px solid var(--ligne);background:var(--carte);color:var(--texte2);font:inherit;font-size:13px;cursor:pointer}
.vt-import-page.on{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.vt-import-image img{display:block;width:100%;height:auto;border:1px solid var(--ligne2);border-radius:var(--r-champ);background:var(--surface)}
.vt-import-groupe{padding:0 20px 8px}
.vt-import-gt{display:flex;justify-content:space-between;align-items:baseline;padding:10px 0 4px;border-bottom:1px solid var(--ligne2)}
.vt-import-ligne{display:grid;grid-template-columns:minmax(150px,1fr) minmax(0,2fr) auto;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid var(--ligne2)}
.vt-import-valeur{display:flex;flex-wrap:wrap;gap:6px}
.vt-import-valeur select,.vt-import-valeur input{min-width:0}
.vt-import-p{font-size:12.5px;color:var(--discret);white-space:nowrap}
input.mini{width:58px}
.vt-import-pied{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 20px 16px}
.vt-import-pied .note{margin-right:auto}
@media (max-width:640px){.vt-import-ligne{grid-template-columns:1fr}}
/* Administration, Chiffrage (M4b, corrections du 05/10) : une carte par groupe de réglages, au plus simple */
input.court{width:112px}
.rc-carte .vt-lignes th{padding-left:0}
.rc-carte .vt-lignes td{padding-right:0}
.rc-bareme{width:auto;margin:4px 0 12px}
.rc-bareme td,.rc-bareme th{padding:7px 12px}
.rc-bareme th{text-transform:none;letter-spacing:0;font-size:12.5px;color:var(--texte2)}
.rc-vigueur{margin:2px 0 12px}
.rc-form{margin-top:6px;padding-top:14px;border-top:1px solid var(--ligne2)}
.rc-champs+.rc-champs{margin-top:10px}
.rc-lib{font-size:13px;color:var(--texte2);font-weight:500;margin:10px 0 6px}
.rc-historique{margin-top:8px}
.rc-historique>summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--texte2);padding:6px 0}
.rc-historique small{display:block}

/* lot Prochaines actions : Aujourd'hui de l'administrateur, menu « Pour » (maquette Aujourdhui-Pour-Admin ; survol réservé aux
   souris, contour de focus visible au clavier, passe design du 07/10, 20 h 40) */
.menu-pour{position:relative;margin-left:8px}
.menu-pour>summary{list-style:none;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--bord-btn);border-radius:10px;padding:5px 12px;
  font-size:13px;cursor:pointer;background:var(--carte);color:var(--texte2);white-space:nowrap}
.menu-pour>summary::-webkit-details-marker{display:none}
.menu-pour>summary b{color:var(--texte);font-weight:600}
.menu-pour>summary::after{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg);margin-left:4px}
.menu-pour[open]>summary{border-color:var(--accent)}
.menu-liste{position:absolute;right:0;top:calc(100% + 6px);z-index:30;min-width:230px;background:var(--carte);border:1px solid var(--ligne);border-radius:12px;
  box-shadow:var(--ombre-pop);padding:6px;display:flex;flex-direction:column}
.menu-liste a{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;color:var(--texte);text-decoration:none;font-size:13.5px}
.menu-liste a span{margin-left:auto;color:var(--discret);font-variant-numeric:tabular-nums}
.menu-liste a.on{font-weight:600;background:var(--accent-soft);color:var(--accent-text)}
.menu-liste hr{border:0;border-top:1px solid var(--ligne2);margin:4px 6px}
@media (hover:hover) and (pointer:fine){ .menu-liste a:hover{background:var(--fond-doux)} .menu-liste a.on:hover{background:var(--or-fond)} .menu-pour>summary:hover{border-color:var(--bord-btn-survol)} }
.reactivations .item{align-items:center}
.reactivations .item .btn{flex:none}
/* Pipeline et Dossiers : « + N » quand d'autres fils sont ouverts */
.plus-fils{display:inline-block;margin-left:6px;font-size:11.5px;font-weight:600;color:var(--or-texte);background:var(--or-fond);border-radius:var(--r-pastille);padding:0 7px;line-height:1.6}

/* ---------- onglet Devis (lot D1 ; app/vue-devis.php) : trois colonnes des maquettes, couleurs du CRM ---------- */
.dv-grille{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.55fr) minmax(0,1fr);gap:20px;align-items:start}
.dv-corps{padding:14px 20px 18px;display:flex;flex-direction:column;gap:12px}
.bloc-t .droite,.dv-repris .droite{margin-left:auto}
.dv-etat{background:var(--fond-doux);border:1px solid var(--ligne);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:2px}
.dv-etat b{font-size:15px}.dv-etat small{color:var(--discret);font-size:12.5px}
.dv-etat.ok{background:var(--vert-fond);border-color:var(--success-bord)}.dv-etat.ok b{color:var(--vert-survol)}
.dv-etat.cours{background:var(--ambre-fond);border-color:var(--warning-bord)}.dv-etat.cours b{color:var(--ambre-texte)}
.dv-etat.ko{background:var(--rouge-fond);border-color:var(--rouge-bord)}.dv-etat.ko b{color:var(--rouge)}
.dv-seg{display:flex;width:100%}.dv-seg button{flex:1;padding:8px 6px}.dv-seg button[disabled]{opacity:.45;cursor:not-allowed}
.dv-frise{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.dv-frise li{display:grid;grid-template-columns:20px 1fr auto;gap:10px;align-items:start}
.dv-frise .pt{width:18px;height:18px;border-radius:50%;border:1.5px solid var(--ligne-forte);display:flex;align-items:center;justify-content:center;margin-top:1px}
.dv-frise .pt .ico{width:12px;height:12px;stroke:var(--on-accent)}
.dv-frise li.fait .pt{background:var(--vert);border-color:var(--vert)}
.dv-frise li.cours .pt{border-color:var(--ambre);box-shadow:inset 0 0 0 3px var(--surface);background:var(--ambre)}
.dv-frise li.cours b{color:var(--ambre-texte)}
.dv-frise li.ko .pt{border-color:var(--rouge-vif);background:var(--rouge-vif)}
.dv-frise li:not(.fait):not(.cours):not(.ko) b{font-weight:400;color:var(--texte2)}
.dv-frise div{display:flex;flex-direction:column}.dv-frise small{color:var(--discret);font-size:12px}
.dv-frise time{font-size:12px;color:var(--discret);font-variant-numeric:tabular-nums}
.dv-st{font-size:12.5px;font-weight:600;color:var(--discret);margin:4px 0 0}.dv-st small{font-weight:400}
.dv-docs{list-style:none;margin:0;padding:0}
.dv-docs li{padding:8px 0;border-top:1px solid var(--ligne2);display:flex;flex-wrap:wrap;gap:2px 8px;align-items:baseline}
.dv-docs li:first-child{border-top:0}.dv-docs small{color:var(--discret);font-size:12px}.dv-docs .bloc-s{flex-basis:100%}
.dv-attente{flex-basis:100%;font-style:normal;font-size:12px;color:var(--ambre-texte)}
.dv-choix{display:flex;flex-direction:column;gap:6px}.dv-lib{font-size:12.5px;color:var(--discret)}
.dv-rib b.vide{color:var(--ambre-texte);font-weight:500}
.dv-rib-f{display:grid;gap:8px;margin-top:8px}.dv-rib-f label{display:flex;flex-direction:column;font-size:12.5px;gap:3px}
.dv-bloque{color:var(--rouge);font-size:13px;display:flex;align-items:center;gap:6px;margin:0}.dv-bloque .ico{width:14px;height:14px}
.dv-large{width:100%}
.dv-repris{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin:0;color:var(--discret);font-size:13px}.dv-repris b{color:var(--texte)}
.dv-lignes{list-style:none;margin:0;padding:0}
.dv-lignes li{display:grid;grid-template-columns:1fr auto auto;gap:6px 14px;padding:10px 0;border-top:1px solid var(--ligne2);align-items:start}
.dv-lignes li:first-child{border-top:0}
.dv-lignes li>div{display:flex;flex-direction:column}.dv-lignes small{color:var(--discret);font-size:12px}
.dv-lignes .m{text-align:right;font-variant-numeric:tabular-nums}
.dv-edit summary,.dv-ajout summary{list-style:none;cursor:pointer}.dv-edit summary::-webkit-details-marker,.dv-ajout summary::-webkit-details-marker{display:none}
.dv-edit summary .ico{width:16px;height:16px;color:var(--discret)}
.dv-edit[open]{grid-column:1/-1}.dv-edit form,.dv-ajout form{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;margin-top:8px}
.dv-edit label,.dv-ajout label{display:flex;flex-direction:column;font-size:12.5px;gap:3px}
.dv-ajout summary{display:inline-flex;align-items:center;gap:6px}.dv-ajout .note{flex-basis:100%;margin:0}
.dv-totaux{background:var(--fond-doux);border:1px solid var(--ligne);border-radius:10px;padding:12px 14px;display:grid;grid-template-columns:1fr 1fr;gap:4px 24px}
.dv-totaux dl{margin:0;display:grid;grid-template-columns:1fr auto;gap:4px 10px;font-size:13px}
.dv-totaux dt{color:var(--discret)}.dv-totaux dd{margin:0;text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.dv-net{grid-column:1/-1;display:flex;align-items:baseline;gap:10px;border-top:1px solid var(--ligne);padding-top:10px;margin:6px 0 0}
.dv-net b{font-size:15px}.dv-net small{color:var(--discret);font-size:12.5px}.dv-net strong{margin-left:auto;font-size:16px;font-variant-numeric:tabular-nums}
.dv-ctrl ul{list-style:none;margin:0;padding:6px 20px 12px}
.dv-ctrl li{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;padding:8px 0;border-top:1px solid var(--ligne2);font-size:13.5px}
.dv-ctrl li:first-child{border-top:0}
.dv-ctrl .pt{width:18px;height:18px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center}
.dv-ctrl .pt .ico{width:12px;height:12px}
.dv-ctrl li.ok .pt{background:var(--vert-fond);color:var(--vert)}.dv-ctrl li.ko .pt{background:var(--rouge-fond);color:var(--rouge)}
.dv-ctrl .note{font-size:12.5px}.dv-ko{color:var(--rouge);font-size:12.5px}
.dv-ctrl li .btn{margin-left:auto}
.dv-ctrl li .dv-tx{flex:1 1 0;min-width:0}
.dv-ctrl>.dv-ajout{padding:0 20px 14px}
.dv-icones{display:flex;gap:6px}.dv-icones a{display:inline-flex;width:32px;height:32px;align-items:center;justify-content:center;border:1px solid var(--ligne);border-radius:8px;color:var(--texte)}
.dv-icones .ico{width:16px;height:16px}
.dv-apercu .bloc-t>div{display:flex;flex-direction:column}
.dv-page{position:relative;margin:14px 16px 16px;background:var(--fond-panneau);border-radius:10px;min-height:280px;display:flex;align-items:center;justify-content:center;padding:14px}
.dv-page img{max-width:100%;box-shadow:0 1px 4px rgba(0,0,0,.18);background:var(--surface)}
.dv-p{position:absolute;top:50%;transform:translateY(-50%);border:0;background:var(--carte);width:30px;height:30px;border-radius:50%;box-shadow:var(--ombre);font-size:18px;line-height:1;cursor:pointer}
.dv-p[data-pas="-1"]{left:6px}.dv-p[data-pas="1"]{right:6px}.dv-p[disabled]{opacity:.35;cursor:default}
.dv-num{position:absolute;right:10px;bottom:10px;background:var(--sombre);color:var(--on-accent);font-size:12px;padding:3px 9px;border-radius:999px;font-variant-numeric:tabular-nums}
.dv-versions ul{list-style:none;margin:0;padding:8px}
.dv-versions li{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px}
.dv-versions li.on{background:var(--fond-doux)}
.dv-versions a{display:flex;flex-direction:column;color:inherit;text-decoration:none;flex:1}
.dv-versions small{color:var(--discret);font-size:12px}.dv-versions em{font-style:normal;font-size:12px;color:var(--discret)}
.dv-versions a.dv-tel{flex:none;display:inline-flex}
.dv-mode{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px;font-size:13.5px}
.dv-ouvrir{list-style:none;margin:0;padding:0;border-top:1px solid var(--ligne2)}
.dv-ouvrir li{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--ligne2)}
.dv-ouvrir li b{flex:1}.dv-tel{display:inline-flex;color:var(--discret)}.dv-tel .ico{width:16px;height:16px}
.dv-copie{display:grid;grid-template-columns:1fr auto;gap:2px 8px;background:var(--fond-doux);border:1px solid var(--ligne);border-radius:10px;padding:8px 12px;align-items:center}
.dv-copie span{grid-column:1;font-size:12px;color:var(--discret)}
.dv-copie input{grid-column:1;border:0;background:none;padding:0;font-weight:600;font-size:13.5px;min-width:0}
.dv-copie button{grid-column:2;grid-row:1/3}
.dv-rac{display:grid;gap:8px}
/* lot Factures (maquette Fiche-Devis-Facture) : la carte « Factures » de l'onglet Devis */
.dv-fact li{grid-template-columns:1fr auto auto;align-items:center}
.dv-fact .btn.ghost{background:var(--surface);color:var(--accent);border:1px solid var(--ligne);font-weight:500}
.dv-crayon{border:0;background:none;padding:6px;border-radius:8px;color:var(--discret);display:inline-flex;cursor:pointer;transition:transform 120ms ease-out,background-color 150ms ease}
.dv-crayon .ico{width:15px;height:15px}.dv-crayon:active{transform:scale(.97)}
@media (hover:hover) and (pointer:fine){.dv-crayon:hover{background:var(--fond-doux);color:var(--texte)}}
.dv-axo{margin:0}.dv-axo .coche{align-items:flex-start}.dv-axo .coche span{display:flex;flex-direction:column}.dv-axo small{color:var(--discret);font-size:12px;font-weight:400}
.dv-fa-versions{display:flex;flex-direction:column;gap:2px}.dv-fa-versions .dv-versions-t{display:flex;align-items:baseline;gap:8px}
.dv-fa-versions ul{padding:4px 0 0}.dv-fa-versions li{padding:8px 10px}.dv-fa-versions li>span{display:flex;flex-direction:column;flex:1}
.dv-fa-versions li.on{background:var(--bleu-fond,var(--fond-doux))}
/* lot Factures (maquette Tiers-Ace) : les cartes « Factures à Ace » et « Facture à Ace » de la fiche du délégataire */
.fa-kpi{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:2px 14px 10px}
.fa-kpi div{background:var(--fond-doux);border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:1px}
.fa-kpi span{font-size:11.5px;color:var(--discret)}.fa-kpi b{font-size:15px;font-variant-numeric:tabular-nums}
.fa-liste{list-style:none;margin:0 14px;padding:0}
.fa-liste li{padding:10px 0;border-top:1px solid var(--ligne2);display:flex;flex-direction:column;gap:6px}
.fa-t{display:grid;grid-template-columns:auto 1fr auto;gap:2px 8px;align-items:baseline}.fa-t small{color:var(--discret);font-size:12px}.fa-t .m{font-variant-numeric:tabular-nums;font-weight:600}
.fa-etats{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.fa-etat{font-size:11.5px;border:1px solid var(--ligne);border-radius:8px;padding:2px 8px;color:var(--discret)}.fa-etat.ok{color:var(--vert-survol);border-color:var(--success-bord);background:var(--vert-fond)}.fa-etat.ok::before,.fa-etat.fait::before{content:"✓ ";color:var(--vert-survol)}
.fa-form{display:flex;flex-direction:column;gap:10px;padding:0 16px 14px}.fa-form label{display:flex;flex-direction:column;gap:3px;font-size:12.5px;color:var(--discret)}
.fa-form label.coche{flex-direction:row;color:var(--texte)}.fa-form .coche span{display:flex;flex-direction:column}.fa-form .coche small{color:var(--discret);font-size:11.5px}
.fa-form .seg{width:100%}.fa-radio{flex:1;display:flex!important;align-items:center;justify-content:center;position:relative;padding:6px;border-radius:7px;cursor:pointer;font-size:13px;color:var(--ink-2)!important}
.fa-radio input{position:absolute;opacity:0;pointer-events:none}.fa-radio:has(input:checked){background:var(--surface);color:var(--ink)!important;font-weight:600;box-shadow:0 1px 2px rgba(20,32,51,.12)}
.fa-sous{font-size:12.5px;color:var(--discret);margin:2px 0 0}
.fa-dossiers{list-style:none;margin:0;padding:0}.fa-dossiers li{display:flex;gap:8px;align-items:flex-start;padding:8px 0;border-top:1px solid var(--ligne2)}.fa-dossiers li:first-child{border-top:0}
.fa-dossiers .coche{flex:1}.fa-dossiers .m{font-variant-numeric:tabular-nums;font-weight:600;font-size:13px}.fa-vide{display:block}
.fa-calcul{display:grid;grid-template-columns:1fr auto;gap:3px 10px;margin:0;font-size:13px;border-top:1px solid var(--ligne2);padding-top:8px}.fa-calcul dt,.fa-calcul dd{margin:0}.fa-calcul dd{text-align:right;font-variant-numeric:tabular-nums}
.fa-egal{color:var(--vert-survol);font-size:12px;text-align:right}.fa-ecart{color:var(--rouge);font-size:12px;text-align:right}
.fa-actions{display:flex;gap:8px;margin-top:4px}.fa-actions .btn{flex:1;justify-content:center}.fa-actions .ico{width:15px;height:15px}
@media (max-width:1180px){.dv-grille{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr)}.dv-grille>.pile:last-child,.dv-acrobat{grid-column:1/-1}}
@media (max-width:800px){.dv-grille{grid-template-columns:1fr}.dv-totaux{grid-template-columns:1fr}}

/* === M4 bis, 2 bis d : avis de la visite non traités, en tête de la fiche (maquette Fiche-Avis) et dans l'Aujourd'hui de
   l'administrateur (maquette Aujourdhui-Admin-Avis) === */
.avis-visite{margin:0 0 14px;border-radius:12px;background:var(--ambre-fond);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ambre) 30%,transparent);overflow:hidden}
.avis-visite .ar{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:4px 14px;padding:10px 14px;min-height:50px}
.avis-visite .ar+.ar{box-shadow:inset 0 1px 0 color-mix(in srgb,var(--ambre) 22%,transparent)}
.avis-visite .at{min-width:0;display:flex;flex-direction:column;gap:2px}
.avis-visite .at b{font-size:13.5px;line-height:18px}
.avis-visite .at small{font-size:12px;line-height:16px;color:var(--discret)}
.avis-visite .tm{font-size:12px;color:var(--discret);font-variant-numeric:tabular-nums;white-space:nowrap}
.avis-visite .ab{display:flex;align-items:center;gap:10px}
.avis-visite form.inline{margin:0}
@media (max-width:720px){.avis-visite .ar{grid-template-columns:1fr}.avis-visite .ab{flex-wrap:wrap}}
.pastille.ambre{background:var(--ambre)}
.avis-visites{margin-bottom:20px}

/* === M4 bis, 2 bis f : une seule barre « Adresse », la liste de la BAN sous elle (maquettes Nouveau-Adresse et
   Nouveau-Adresse-Choisie) === */
.ban-sug{position:absolute;left:0;right:0;top:100%;z-index:30;margin-top:4px;padding:4px;border-radius:12px;background:var(--carte);box-shadow:0 12px 32px rgba(0,0,0,.14),0 0 0 1px var(--rail-bord);max-height:360px;overflow:auto}
.ban-sug[hidden]{display:none}
.ban-sug button[role=option]{display:grid;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;padding:8px 10px;border:0;border-radius:8px;background:transparent;text-align:left;font:inherit;color:var(--texte);cursor:pointer}
.ban-sug button[role=option]:hover,.ban-sug button[aria-selected=true]{background:var(--fond-doux)}
.ban-sug svg{width:16px;height:16px;fill:none;stroke:var(--discret);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.ban-sug b{display:block;font-size:13.5px;font-weight:600}
.ban-sug small{display:block;font-size:12px;color:var(--discret)}
.ban-sug em{font-style:normal;font-size:11.5px;color:var(--discret)}
.ban-sug .hf{margin:4px 4px 2px;padding:7px 6px 3px;border-top:1px solid var(--rail-bord);font-size:12px;line-height:16px;color:var(--discret)}
.ban-sug .hf .garder{border:0;background:none;padding:0;font:inherit;font-weight:600;color:var(--texte);cursor:pointer;text-decoration:underline}
input.ban-rempli{background:color-mix(in srgb,var(--success) 6%,var(--surface))}

/* === M4 bis : « Demander un complément » (maquette Fiche-VT-Complement) === */
dialog.fenetre.vt-complement-feuille{width:min(860px,calc(100vw - 32px))}
.vt-complement-feuille .f-tete small{display:block;color:var(--discret);font-size:12.5px}
.vt-complement-feuille .cpl-corps{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:12px;max-height:min(66vh,620px)}
.vt-complement-feuille .cpl{overflow:auto;border:1px solid var(--rail-bord);border-radius:12px;padding:10px 14px}
.vt-complement-feuille .cpl-t{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px}
.vt-complement-feuille .cpl-t span{font-size:12.5px;color:var(--discret)}
.vt-complement-feuille .cpl h4{margin:10px 0 2px;font-size:11.5px;font-weight:600;color:var(--discret)}
.vt-complement-feuille .cpl label{display:grid;grid-template-columns:16px minmax(0,1fr) auto;gap:0 10px;align-items:center;padding:6px 0;border-top:1px solid var(--rail-bord);cursor:pointer}
.vt-complement-feuille .cpl h4+label{border-top:0}
.vt-complement-feuille .cpl label b{font-weight:500;font-size:13px}
.vt-complement-feuille .cpl label em{font-style:normal;font-size:11.5px;color:var(--discret)}
.vt-complement-feuille .cpl-m{display:flex;flex-direction:column;gap:10px;border:1px solid var(--rail-bord);border-radius:12px;padding:10px 14px}
.vt-complement-feuille .cpl-m textarea{width:100%;min-height:120px}
@media (max-width:760px){.vt-complement-feuille .cpl-corps{grid-template-columns:1fr;max-height:none}}
.vt-complement ul{list-style:none;margin:6px 0 0;padding:0}
.vt-complement li{display:flex;justify-content:space-between;gap:10px;padding:5px 0;border-top:1px solid var(--rail-bord);font-size:13px}
.vt-complement li em{font-style:normal;font-size:12px;font-weight:600;color:var(--ambre-texte)}
.vt-complement li.fait em{color:var(--vert)}

/* ---------- comptes et sécurité : connexion en deux temps, Mon compte (lot Comptes et sécurité) ---------- */
.profil-liens form{display:inline;margin:0}
.profil-liens button.lien{color:var(--discret);text-decoration:none;font-size:13px}
.profil-liens button.lien:hover{color:var(--texte)}
.form .mdp-oublie{align-self:flex-start}
.connexion-code .note .lien{margin-left:4px}
.codes-secours{display:grid;grid-template-columns:repeat(2,max-content);gap:8px 28px;margin:4px 0 16px;padding:0;list-style:none}
.codes-secours code{font-size:15px;letter-spacing:.06em}
/* « Autres actions » de la fiche (administrateur) : un menu qui s'ouvre sous son bouton */
.autres-actions{position:relative}
.autres-actions>summary{list-style:none;cursor:pointer}
.autres-actions>summary::-webkit-details-marker{display:none}
.autres-actions .menu{position:absolute;right:0;top:calc(100% + 6px);z-index:20;background:var(--carte);border:1px solid var(--ligne);border-radius:var(--r);box-shadow:var(--ombre);padding:10px 14px;display:flex;flex-direction:column;gap:10px;min-width:260px;transform-origin:top right}
.autres-actions .menu form{margin:0}
.autres-actions .menu .lien{text-align:left;font-size:14px;color:var(--texte);text-decoration:none}
.autres-actions .menu .lien:hover{text-decoration:underline}
/* Registre des traitements (lecture) */
.registre-texte{max-width:1180px}
.registre-texte h2{font-size:17px;margin:22px 0 8px}.registre-texte h2:first-child{margin-top:0}
.registre-texte p,.registre-texte li{max-width:80ch;line-height:1.55}
.tab.registre td,.tab.registre th{white-space:normal;vertical-align:top;font-size:13px;line-height:1.45;min-width:110px}
.badge{white-space:nowrap}
.connexion-code .note .lien{display:block;margin:6px 0 0}
/* Mon compte, sur un téléphone : chaque appareil sur ses lignes, « Retirer » à portée de pouce */
@media (max-width:640px){
  table.appareils tr:first-child{display:none}
  table.appareils,table.appareils tbody,table.appareils tr,table.appareils td{display:block;width:auto}
  table.appareils tr{padding:10px 0;border-top:1px solid var(--ligne)}
  table.appareils tr:nth-child(2){border-top:0}
  table.appareils td{border:0;padding:2px 14px;white-space:normal}
  table.appareils td[data-lib]::before{content:attr(data-lib) " : "}
}

/* ---------- lot H2b : l'Aujourd'hui du télépro, version A2 (maquette Aujourdhui-File2) ---------- */
.chiffres-jour{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:16px}
.chiffres-jour .chiffre{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;border:1px solid var(--ligne);border-radius:var(--r);background:var(--carte);box-shadow:var(--ombre);padding:14px 18px;cursor:pointer;color:var(--ink);font:inherit}
.chiffres-jour .chiffre b{font-size:28px;line-height:1.1;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.chiffres-jour .chiffre span{font-size:14px;font-weight:600}
.chiffres-jour .chiffre small{font-size:12.5px;color:var(--ink-2)}
@media (hover:hover) and (pointer:fine){ .chiffres-jour .chiffre:hover{border-color:var(--accent)} }
.appel-suivant-pile{margin-bottom:16px}
.appel-suivant{display:flex;flex-direction:column;gap:4px;padding:18px 22px}
.appel-suivant .tete{display:flex;align-items:baseline;gap:12px}
.appel-suivant .tete .n{margin-left:auto;font-size:12.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.appel-suivant .attente{font-size:13px;color:var(--ink-2);font-weight:600}
.appel-suivant.retard .attente{color:var(--rouge)}
.appel-suivant .nom{font-size:22px;line-height:1.25;font-weight:700;letter-spacing:-.01em;margin-top:4px}
.appel-suivant .type{font-size:13.5px;font-weight:600;color:var(--accent-text)}
.appel-suivant .coord{font-size:13.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.appel-suivant dl{display:grid;grid-template-columns:150px 1fr;gap:6px 16px;margin:12px 0 4px;font-size:14px}
.appel-suivant dt{font-size:12px;font-weight:700;color:var(--titre-bloc);padding-top:2px}
.appel-suivant dd{margin:0;color:var(--ink)}
.appel-suivant .boutons{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px}
.appel-suivant .touche{margin-left:auto;font-size:12.5px;color:var(--ink-2)}
.appel-suivant kbd{font-family:var(--mono);font-size:11.5px;border:1px solid var(--ligne);border-bottom-width:2px;border-radius:5px;padding:1px 6px;background:var(--surface)}
.ma-file .bloc-t{flex-wrap:wrap}
.ma-file .seg{margin-left:auto}
.ma-file .seg span{font-variant-numeric:tabular-nums;color:var(--ink-2);margin-left:4px}
.groupe-file{padding:12px 20px 6px;font-size:12px;font-weight:700;color:var(--titre-bloc);border-top:1px solid var(--line-doux)}
.ligne-file{display:grid;grid-template-columns:56px 112px minmax(0,1fr) auto 32px;gap:12px;align-items:center;padding:10px 20px;border-top:1px solid var(--ligne2);cursor:pointer}
.groupe-file+.ligne-file{border-top:0}
.ligne-file .h{font-variant-numeric:tabular-nums;font-weight:600;color:var(--ink)}
.ligne-file .qui b{display:block;font-weight:600}
.ligne-file .qui .det{font-size:12.5px;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ligne-file .type{font-size:12.5px;color:var(--ink-2);white-space:nowrap}
.pastille-file{justify-self:start;font-size:11.5px;font-weight:600;border-radius:999px;padding:2px 8px;white-space:nowrap}
.pastille-file.retard{background:var(--danger-soft);color:var(--danger-sur-fond)}
.pastille-file.attente{background:var(--fill);color:var(--ink-2)}
.rond-tel{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;border:1px solid var(--ligne);color:var(--ink-2)}
.rond-tel .ico{width:14px;height:14px}
@media (hover:hover) and (pointer:fine){ .ligne-file:hover{background:var(--fill)} .rond-tel:hover{color:var(--accent-text);border-color:var(--accent)} }
.suite-a2{grid-template-columns:minmax(0,1fr)}
.suite-a2>.pile{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
@media (max-width:900px){
  .chiffres-jour{grid-template-columns:1fr}
  .appel-suivant dl{grid-template-columns:1fr}
  .ligne-file{grid-template-columns:48px minmax(0,1fr) 32px}
  .ligne-file .pastille-file,.ligne-file .type{display:none}
  .suite-a2>.pile{grid-template-columns:1fr}
}

/* ---------- lot H2b : Pipeline (maquettes Pipeline-Liste et Pipeline-Phases, tour 5) ---------- */
/* la frise des six phases sert de filtre : tuiles sans barre, point de couleur de la phase, nombre en grand */
.frise-filtre{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin-bottom:14px}
.frise-filtre .tuile{display:flex;flex-direction:column;gap:4px;padding:10px 14px;border-radius:12px;background:var(--surface);border:1px solid var(--onglet-filet);text-decoration:none;color:var(--ink);min-width:0}
.frise-filtre .tuile span{font-size:12.5px;font-weight:600;color:var(--onglet-texte);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.frise-filtre .tuile b{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}
.frise-filtre .tuile.on{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);background:var(--accent-soft)}
@media (hover:hover) and (pointer:fine){ .frise-filtre .tuile:not(.on):hover{border-color:var(--line-strong)} }
.barre-filtres{flex-wrap:wrap}
.barre-filtres .recherche{min-width:200px}
.plus-filtres,.choix-colonnes{position:relative}
.plus-filtres>summary,.choix-colonnes>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center}
.plus-filtres>summary::-webkit-details-marker,.choix-colonnes>summary::-webkit-details-marker{display:none}
.plus-filtres .menu,.choix-colonnes .menu{position:absolute;left:0;top:calc(100% + 6px);z-index:20;background:var(--carte);border:1px solid var(--ligne);border-radius:var(--r);box-shadow:var(--ombre);padding:12px 14px;display:flex;flex-direction:column;gap:10px;min-width:260px}
.choix-colonnes .menu{left:auto;right:0;gap:6px}
.choix-colonnes{margin-left:auto}
.vues-enregistrees{display:flex;gap:8px;flex-wrap:wrap;margin:-4px 0 14px}
.vues-enregistrees .tag{text-decoration:none;font-size:13px;padding:5px 12px;background:var(--surface);border:1px solid var(--onglet-filet);color:var(--onglet-texte)}
.vues-enregistrees .tag b{font-variant-numeric:tabular-nums;margin-left:4px}
.vues-enregistrees .tag.on{background:var(--accent-soft);color:var(--accent-text);border-color:var(--accent)}
/* vue groupée par phase : un groupe par phase, trait de la couleur de la phase ; À surveiller et Sortis à droite */
.vue-phases{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;align-items:start}
.vue-phases .groupes{display:flex;flex-direction:column;gap:12px}
.groupe-phase{background:var(--carte);border:1px solid var(--ligne);border-radius:var(--r);box-shadow:var(--ombre);overflow:hidden;border-top:3px solid var(--ph,var(--line-strong))}
.groupe-t{display:flex;align-items:center;gap:10px;padding:11px 18px}
.groupe-t b{font-size:14px;font-weight:700}
.groupe-t .n{font-variant-numeric:tabular-nums;color:var(--ink-2);font-size:13px}
.groupe-t .lien{margin-left:auto;font-size:13px}
.ligne-phase{display:grid;grid-template-columns:minmax(0,2.2fr) 70px minmax(0,1.3fr) minmax(0,1.8fr) minmax(0,1fr) 44px;gap:12px;align-items:center;padding:9px 18px;border-top:1px solid var(--ligne2);text-decoration:none;color:var(--ink);font-size:13px}
.ligne-phase .qui b{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ligne-phase .qui small{display:block;color:var(--ink-2);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ligne-phase .pers,.ligne-phase .depuis{color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ligne-phase .depuis{text-align:right;font-variant-numeric:tabular-nums}
@media (hover:hover) and (pointer:fine){ .ligne-phase:hover{background:var(--fill)} }
.a-cote{display:flex;flex-direction:column;gap:12px}
.a-cote .item{display:flex;gap:12px;align-items:baseline;text-decoration:none;color:var(--ink)}
.a-cote .item .n{min-width:28px;text-align:right;font-variant-numeric:tabular-nums;font-size:16px}
@media (max-width:1100px){ .vue-phases{grid-template-columns:1fr} .frise-filtre{grid-template-columns:repeat(4,minmax(0,1fr))} }
@media (max-width:700px){
  .frise-filtre{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ligne-phase{grid-template-columns:minmax(0,1fr) auto}
  .ligne-phase .cat,.ligne-phase .st,.ligne-phase .pers,.ligne-phase .act{display:none}
}

/* lot H2a : alertes avant l'appel (Civilité manquante, Source inconnue), en tête de la carte Prochaine action, texte d'état
   sur fond blanc */
.prochaine .alertes-appel{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.prochaine .alertes-appel span{background:var(--surface);color:var(--danger-sur-fond);font-size:12.5px;font-weight:700;border-radius:999px;padding:3px 10px}
/* une carte « Appel suivant », une ligne ou un groupe de la file marqués hidden restent cachés (leur display l'emportait) */
.appel-suivant-pile [hidden],.ma-file [hidden]{display:none!important}
/* lot avant production 3 bis : la vue Enveloppe de l'onglet VT, Murs à gauche, les autres cartes empilées à droite, Photos sur toute la largeur */
.vt-colonnes.une:has(> .vt-env){max-width:none}
.vt-env{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:start}
.vt-env-d{display:flex;flex-direction:column;gap:20px;min-width:0}
.vt-env-p{grid-column:1/-1;min-width:0}
@media (max-width:1100px){.vt-env{grid-template-columns:1fr}}
/* lot avant production 3 bis : le bouton qui résout une ligne en rouge (contrôles du devis, critères et gages de la Pré-VT) */
.dv-ctrl li .dv-par-admin{margin-left:auto;font-size:12.5px;color:var(--ink-3,var(--gris))}
.dv-ctrl li .dv-reg-msg{flex-basis:100%;font-size:12.5px;color:var(--ink-2,var(--gris))}.dv-ctrl li .dv-reg-msg:empty{display:none}.dv-ctrl li .dv-reg-msg.err{color:var(--rouge)}
.cr-l.avec-b{flex-wrap:wrap}
.cr-l .cr-b{margin-left:auto}
/* lot avant production 3 bis, 1 b : l'aperçu du devis pendant sa fabrication (squelette, jamais une image cassée), ou indisponible */
.dv-page img:not([src]){display:none}
.dv-page .dv-perdu{display:none;font-size:13px;color:var(--ink-2,var(--gris));text-align:center;max-width:260px}
.dv-apercu.perdu .dv-page .dv-perdu{display:block}
.dv-apercu.charge .dv-page::after{content:"";width:62%;aspect-ratio:210/297;border-radius:4px;background:linear-gradient(100deg,var(--surface) 30%,var(--fond-panneau) 50%,var(--surface) 70%);background-size:300% 100%;animation:dv-reflet 1.5s linear infinite}
@keyframes dv-reflet{from{background-position:100% 0}to{background-position:0 0}}
@media (prefers-reduced-motion:reduce){.dv-apercu.charge .dv-page::after{animation:none}}
/* bloc 6, lot 1 : Dossiers, la colonne Pose, « À encaisser », les pastilles pâles des aides qui ne concernent pas le dossier, la vue Par étape */
/* lot 6 (H2c, contraste mesuré dans les deux thèmes) : seule la pastille pâlit ; le sigle reste lisible (encre 3, 4,5:1 au moins dans les deux thèmes) */
.liste-dossiers .voyants.pale{color:var(--ink-3)}
.liste-dossiers .voyants.pale .voyant{opacity:.35}
.liste-dossiers td.pose{white-space:nowrap;color:var(--ink-2)}
.liste-dossiers td.num,.liste-dossiers th.num,.ds-l .num,.ds-e .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.liste-dossiers small.rouge{color:var(--danger-sur-fond)}
.ds-etapes{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;align-items:start}
.ds-groupes{display:flex;flex-direction:column;gap:12px}
.ds-groupe{padding:12px 16px}
.ds-gt{display:flex;align-items:baseline;gap:12px}
.ds-gt h2{font-size:15px;margin:0;display:flex;gap:8px;align-items:baseline}.ds-gt h2 b{font-variant-numeric:tabular-nums;color:var(--ink-2);font-weight:600}
.ds-gt .rouge{color:var(--danger-sur-fond);font-size:13px}
.ds-l{display:grid;grid-template-columns:1.4fr 1.2fr 1.6fr 110px 90px;gap:10px;align-items:center;padding:9px 0;border-top:1px solid var(--ligne);color:inherit;text-decoration:none}
.ds-l .nm{display:flex;flex-direction:column}.ds-l small{color:var(--ink-2)}
.ds-l .pose{color:var(--ink-2);font-size:13px}
.ds-cote{display:flex;flex-direction:column;gap:12px}
.ds-sur,.ds-enc{padding:12px 16px}
.ds-sur h2,.ds-enc h2{font-size:15px;margin:0 0 6px;display:flex;justify-content:space-between;align-items:baseline}
.ds-enc h2 small{font-weight:400;color:var(--ink-2);font-size:12px}
.ds-s{display:flex;gap:12px;align-items:flex-start;padding:8px 0;border-top:1px solid var(--ligne);color:inherit;text-decoration:none}
.ds-s .n{font-size:20px;font-variant-numeric:tabular-nums;min-width:26px}
.ds-s span{display:flex;flex-direction:column}.ds-s small{color:var(--ink-2)}
.ds-e{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-top:1px solid var(--ligne)}
.ds-e span{display:flex;flex-direction:column}.ds-e small{color:var(--ink-2)}
.ds-e.tot{font-size:15px}
@media (max-width:1100px){.ds-etapes{grid-template-columns:1fr}.ds-l{grid-template-columns:1fr auto}.ds-l .aides,.ds-l .pose{display:none}}
