/* TrackR · styles du module crm (nettoyage, étape 4b) : ses règles, sorties de la base par _local/outils/etape4-ecran/ranger-par-module.js
   sans rien réécrire, dans leur ordre d'origine. Chargé après la base, dans l'ordre fixe des balises d'index.html, avant Givre. */
.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:19px}.pipeline-tabs{display:flex;gap:7px;overflow-x:auto;margin-bottom:20px;padding-bottom:2px}.pipeline-tab{border:1px solid var(--line2);background:var(--surface);border-radius:11px;color:var(--muted);padding:11px 15px;font-size:12px;font-weight:800;white-space:nowrap}.kanban-col{border:1px solid var(--line);background:#12181d;border-radius:15px;min-height:310px;padding:12px}.kanban-head{display:flex;align-items:center;gap:8px;padding:4px 3px 15px}.kanban-title{font-size:12px;font-weight:800;flex:1}.kanban-count{font:700 11px 'Space Grotesk',system-ui,sans-serif;color:var(--muted);background:var(--surface2);padding:3px 8px;border-radius:7px}.kanban-card{background:var(--surface2);border:1px solid #333d46;border-radius:13px;padding:14px;margin-bottom:9px;cursor:grab;transition:.15s}.kanban-card:hover{border-color:#697b6c;transform:translateY(-1px)}.kanban-card:active{cursor:grabbing}.kanban-card.dragging{opacity:.45}.kc-top{display:flex;gap:8px;align-items:center;justify-content:space-between}.kc-name{font-weight:850;font-size:12px;line-height:1.4}.kc-person{font-size:11px;color:var(--muted);margin:5px 0 12px;min-height:13px}.kc-bottom{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:12px;padding-top:10px;border-top:1px solid var(--line);font-size:11px;color:#b0bcc4}.prospect-table{width:100%;border-collapse:collapse}.prospect-table tr:hover td{background:#ffffff04}.prospect-table tr:last-child td{border-bottom:0}.prospect-table .company-name{font-size:12px;font-weight:800}.prospect-table .subline{font-size:10px;color:var(--muted);margin-top:5px}.table-wrap{overflow-x:auto}.click-row{cursor:pointer}
@media(max-width:600px){.toolbar{gap:8px}}
.kc-touch{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.kc-date{display:flex;align-items:center;gap:5px;font-size:10px;color:var(--muted);font-weight:600}
.touch-btn{display:inline-flex;gap:7px;align-items:center;justify-content:center;border:1px solid #aacf5270;background:linear-gradient(120deg,#ccf87817,#c7f36b0b);color:var(--lime);border-radius:9px;min-height:36px;padding:8px 10px;font:800 11px 'DM Sans',system-ui,sans-serif;cursor:pointer;transition:background .15s,border .15s;white-space:nowrap}
.touch-btn:not(:disabled):hover,.touch-btn:not(:disabled):focus-visible{border-color:var(--lime);background:#c7f36b23;outline-offset:2px}
.touch-btn-done{color:#a9c4aa;background:#6dad6512;border-color:#53704f80;cursor:default;opacity:.85}
.touch-btn-drawer{min-height:34px}
@media(max-width:600px){.touch-btn{min-height:42px;font-size:11px}.touch-btn-drawer{width:100%}}
.mobile-pipeline,.mobile-leads{display:none}
@media(max-width:860px){
 .mobile-pipeline,.mobile-leads{display:block}.desktop-pipeline,.desktop-leads{display:none}
 .mobile-home .m-overline,.mobile-pipeline .m-overline,.mobile-leads .m-overline{font-size:10px;font-weight:800;letter-spacing:.12em;color:var(--muted);text-transform:uppercase}
 .m-bottom-space{height:5px}
 .m-pipeline-header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:10px 0 17px}.m-filter-toggle{width:44px;height:44px;flex-shrink:0;display:grid;place-items:center;border:1px solid var(--line2);background:var(--surface2);color:var(--text);border-radius:13px}
 .m-pipeline-switch{display:grid;grid-template-columns:1fr 1fr;gap:5px;background:#1a2226;border:1px solid #2e393d;padding:4px;border-radius:14px;margin-bottom:15px}.m-pipeline-switch button.active{background:#323e36;color:var(--lime);box-shadow:0 1px 8px #0002}
 .m-pipeline-filters{display:none;margin-bottom:18px}.m-pipeline-filters.shown{display:block}.m-pipeline-filters .toolbar{margin:0}.m-list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;gap:9px}
 .m-lead-list{display:grid;gap:10px}.m-lead{min-width:0;background:var(--surface);border:1px solid #2f3a41;border-radius:18px;padding:15px;box-shadow:0 4px 18px #0002}.m-lead:active{border-color:#c7f36b85}.m-lead-head{display:flex;align-items:center;gap:10px}.m-company-logo{background:#313c37;color:var(--lime);display:grid;place-items:center;border-radius:12px;width:40px;height:40px;flex-shrink:0;font-size:14px;font-weight:800}.m-lead-title{display:flex;min-width:0;flex:1;flex-direction:column;gap:4px}.m-lead-tags{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin:12px 0}.m-lead-values{display:flex;justify-content:space-between;gap:10px;align-items:center;border-top:1px solid var(--line);padding:12px 0;color:var(--muted);font-size:10px;min-width:0}.m-lead-values>span:last-child{color:var(--text);font-weight:800;font-family:'Space Grotesk',sans-serif;white-space:nowrap}
 .m-lead-actions{display:flex;align-items:stretch;gap:8px}.m-lead-actions .touch-btn{flex:1;min-width:0;font-size:11px;min-height:46px}.m-call-btn,.m-detail-btn{min-height:46px;border-radius:11px;border:1px solid #3c4b55;background:#29333b;color:#dce9e4;display:flex;align-items:center;justify-content:center;gap:7px;padding:0 12px;font-size:11px;font-weight:750}.m-detail-btn{width:46px;padding:0}
 .mobile-leads .toolbar{margin:0 0 15px}.mobile-leads .field-search{min-width:100%}
}
@media(max-width:390px){.m-lead{padding:13px}.m-lead-actions .touch-btn{font-size:10px;padding:7px 5px}.m-call-btn{padding:0 9px}}
/* 2.30.16 (Pierre : « en mobile quand j'appuie sur un bouton du menu, j'ai un carré bleu qui apparaît ») : pa … */
.m-lead{background:var(--surface);border:1px solid var(--line);box-shadow:0 8px 38px #080c2310;border-radius:22px;color:var(--text)}
.kanban-col,.kanban-card{color:var(--text)}
.kanban-col{background:var(--surface2);border-color:var(--line)}.kanban-card{background:var(--surface);border-color:var(--line)}
.m-company-logo{background:var(--surface2);color:var(--lime)}
.m-lead{background:var(--surface);border-color:var(--line);color:var(--text)}
.m-call-btn,.m-detail-btn,.m-filter-toggle{background:var(--surface2);color:var(--text);border-color:var(--line)}
.m-pipeline-switch{background:var(--surface2);border:1px solid var(--line)}.m-pipeline-switch button.active{background:var(--surface);color:var(--lime)}
.m-lead-values{color:var(--muted)}.m-lead-values>span:last-child{color:var(--text)}
/* V1.3 components re-themed with V2 tokens: the legacy sheet hardcodes dark/lime colours that broke light mod … */
.kanban-card:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}
.pipeline-tab{color:var(--muted)}.pipeline-tab-add{display:inline-flex;align-items:center;gap:6px;border-style:dashed;background:transparent;color:var(--accent)}.pipeline-tab-add:hover{border-color:color-mix(in srgb,var(--accent) 55%,transparent)}
.pipeline-tab-manage{display:inline-flex;align-items:center;gap:6px;background:transparent;color:var(--muted)}.pipeline-tab-manage:hover{color:var(--text)}
.kc-bottom{color:var(--muted)}.prospect-table tr:hover td{background:var(--surface2)}.click-row:focus-visible,.kanban-card:focus-visible,.m-lead:focus-visible{outline:3px solid var(--accent2);outline-offset:2px}
.touch-btn{border-color:color-mix(in srgb,var(--accent) 40%,transparent);background:color-mix(in srgb,var(--accent) 8%,transparent);color:var(--lime)}
.touch-btn:not(:disabled):hover,.touch-btn:not(:disabled):focus-visible{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 15%,transparent)}
.touch-btn-done{color:var(--green);background:color-mix(in srgb,var(--green) 10%,transparent);border-color:color-mix(in srgb,var(--green) 35%,transparent);opacity:1}
.m-lead-place{display:flex;align-items:center;gap:6px;margin:-4px 0 10px;font-size:11px;color:var(--muted);min-width:0}
.pill-stage{color:color-mix(in srgb,var(--pill) 78%,var(--text));background:color-mix(in srgb,var(--pill) 14%,transparent);border-color:color-mix(in srgb,var(--pill) 32%,transparent)}.kanban-sum{margin:-8px 3px 12px;font-size:11px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}
.kanban-add{width:100%;display:flex;align-items:center;justify-content:center;gap:6px;padding:9px;border:1px dashed var(--line2);border-radius:11px;background:transparent;color:var(--muted);font-size:11px;font-weight:700}.kanban-add:hover{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 50%,var(--line2))}
@media(max-width:860px){.m-lead-actions .touch-btn{color:var(--text)}.m-lead-actions .touch-btn-done{color:var(--green)}
}
/* V2.5 — outils CRM : prospects sans contact, tri/actions groupées, doublons, WhatsApp, recherche rapide */
.filter-chip{display:inline-flex;align-items:center;gap:7px;min-height:41px;padding:0 13px;border:1px solid var(--line2);border-radius:11px;background:var(--surface);color:var(--muted);font:inherit;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap}
.filter-chip:hover{color:var(--text)}
.v2-bulk{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:0 0 12px;padding:10px 12px;border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);border-radius:14px;background:color-mix(in srgb,var(--accent) 9%,var(--surface))}.v2-bulk[hidden]{display:none}.v2-bulk .filter-select{min-height:36px;padding-block:7px}
.prospect-table .v2-pick{width:34px;padding-right:0;cursor:default}.prospect-table tr.is-picked td{background:color-mix(in srgb,var(--accent) 7%,transparent)}
.kanban-card{padding:11px 12px;margin-bottom:7px}
.kanban-card .kc-top{align-items:flex-start}.kanban-card .kc-name{font-size:12.5px;line-height:1.3;padding-top:2px}
.kanban-card .kc-person{margin:3px 0 0;min-height:0;font-size:11px}
.kc-meta{display:flex;align-items:center;flex-wrap:wrap;gap:5px 8px;margin-top:8px}.kc-meta .tag{padding:2px 6px;font-size:9.5px}
.kanban-card .kc-bottom{margin-top:8px;padding-top:7px}
.kanban-card .kc-touch{flex-direction:row;align-items:center;justify-content:space-between;gap:6px;margin-top:8px}
.kanban-card .kc-date{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.touch-btn.touch-btn-mini{flex:0 0 auto;width:auto;min-height:26px;padding:4px 9px;border-radius:8px;font-size:10.5px;gap:5px}
.kanban-hide{display:inline-grid;place-items:center;width:24px;height:24px;margin:-4px -4px -4px 0;padding:0;border:0;border-radius:7px;background:transparent;color:var(--subtle);opacity:.55;cursor:pointer}.kanban-col:hover .kanban-hide,.kanban-hide:focus-visible{opacity:1}.kanban-hide:hover{color:var(--text);background:var(--surface2)}
.touch-btn.touch-btn-done{cursor:pointer}
.touch-btn.touch-btn-done:hover{border-color:color-mix(in srgb,var(--green) 60%,transparent)}
/* 2.30.9 · Fiche prospect, « Faites » : un long « Quoi ? » ou une note sans espace (une adresse web…) passe à … */
.m-filter-toggle{position:relative}
/* 2.30.7 · Lien ou fichier d'un élément du Cockpit : ligne du process, choix en trois boutons, fichiers lâché … */
.kanban-col{border-color:var(--glass-edge);box-shadow:var(--glass-hi),var(--glass-shadow);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}
.m-lead,.kanban-card{border-color:var(--glass-edge);box-shadow:var(--glass-hi)}
@media(prefers-reduced-transparency:reduce){
 .kanban-col{-webkit-backdrop-filter:none;backdrop-filter:none}
}
/* 2.30.4 · Champ de « ＋ Nouvelle … », sous son menu, ouvert en choisissant cette option. */
.kc-proj,.m-proj-btn{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 9px;border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line2));border-radius:999px;background:color-mix(in srgb,var(--accent) 10%,var(--surface));color:var(--accent);font:inherit;font-size:11.5px;font-weight:800;cursor:pointer;white-space:nowrap}
.kc-proj.is-new,.m-proj-btn.is-new{border-style:dashed}
.m-proj-btn{height:40px;padding:0 12px;font-size:13px}
/* 2.16 : thème clair / sombre / auto (Paramètres → Apparence) */
@media (max-width:860px){
 .m-pipeline-header{margin:2px 0 12px}.m-pipeline-header .m-overline,.m-pipeline-header h2{display:none}
}
/* 2.20.8 · Kanban : « Créer le devis » / « Ouvrir le projet » sur sa propre ligne (deux boutons ne tiennent pas dans une colonne de 220 px) */
.kanban-card .kc-act{display:flex;margin-top:8px;min-width:0}
.kanban-card .kc-act .kc-proj{max-width:100%;min-width:0;overflow:hidden}
.kanban-card .kc-act+.kc-touch{margin-top:6px}
/* 2.20.9 · Liste des prospects du téléphone : même correction que le Kanban (2.20.8). Le bouton du devis ou du projet a sa ligne,
   sinon « Contact pris » était écrasé à 31 px et passait sous « DV-2026-… ». */
.m-lead-act{display:flex;margin-top:10px;min-width:0}
.m-lead-act .m-proj-btn{max-width:100%;height:34px;overflow:hidden}
.m-lead-act+.m-lead-actions{margin-top:8px}

/* 2.23.4 · CRM : « Nouveau prospect » au bout de la barre des filtres (CRM, Prospects) ; « + » en haut de chaque colonne
   (« en bas, quand la colonne est assez longue, ça devient chiant ») et en tête de la liste d'une étape sur téléphone */
.toolbar .v2-tool-new{margin-left:auto;flex:0 0 auto}
.kanban-new{display:inline-grid;place-items:center;flex:0 0 auto;width:24px;height:24px;margin:-4px 0;padding:0;border:0;border-radius:7px;background:transparent;color:var(--accent);cursor:pointer}
.kanban-new .i,.m-list-add .i{display:block}
.kanban-new:hover,.kanban-new:focus-visible{background:color-mix(in srgb,var(--accent) 14%,transparent)}
.m-list-add{display:inline-grid;place-items:center;width:28px;height:28px;margin-left:8px;padding:0;border:1px solid var(--line2);border-radius:50%;background:var(--surface);color:var(--accent);vertical-align:middle;cursor:pointer}
@media (max-width:860px){.toolbar .v2-tool-new{display:none}}
/* 2.30.20 · « il manque la société à laquelle il appartient » : la personne et sa fonction sous le nom de la … */
.kanban-card .kc-person{overflow-wrap:anywhere}
/* 2.33.2 (Pierre, 02/11 : « une animation dès qu'on signe un prospect (gagné CRM), un truc cool ») : tampon « Signé ! » qui s'écrase,
   gerbe et halo, puis le nom et les montants (winCheer, pipeline.js). Par-dessus l'écran sans le bloquer ; sans mouvement si l'appareil
   le demande (ou le test). */
.v2-signe{position:fixed;inset:0;z-index:9998;display:grid;place-items:center;pointer-events:none;overflow:hidden;background:radial-gradient(ellipse 46% 34% at 50% 50%,color-mix(in srgb,var(--bg) 82%,transparent),color-mix(in srgb,var(--bg) 55%,transparent) 55%,transparent),radial-gradient(circle at 50% 47%,color-mix(in srgb,var(--green) 24%,transparent),transparent 58%);animation:v2SigneIn .3s ease-out both}
.v2-signe.is-out{animation:v2SigneOut .45s ease-in forwards}
.v2-signe-card{position:relative;display:grid;justify-items:center;gap:10px;max-width:min(560px,90vw);text-align:center}
.v2-signe-stamp{position:relative;display:flex;align-items:center;gap:.28em;padding:.16em .46em .2em;border:.085em solid currentColor;border-radius:.26em;color:var(--green);background:color-mix(in srgb,var(--bg) 94%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 18px 50px -18px color-mix(in srgb,var(--green) 70%,transparent),inset 0 0 0 .05em color-mix(in srgb,currentColor 35%,transparent);font:800 clamp(42px,10vw,86px)/1 'Space Grotesk',system-ui,sans-serif;letter-spacing:-.04em;text-transform:uppercase;transform:rotate(-8deg);animation:v2Stamp .55s cubic-bezier(.2,1.3,.35,1) both}
.v2-signe-stamp b{font-weight:800}
.v2-signe-stamp .i{width:.66em;height:.66em}
.v2-signe-stamp::after{content:'';position:absolute;inset:-.28em;border:.05em solid currentColor;border-radius:.46em;opacity:0;animation:v2SigneRing .7s .3s ease-out both}
.v2-signe-who{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-weight:800;font-size:clamp(19px,4.2vw,28px);animation:v2SigneUp .45s .36s ease-out both}
.v2-signe-list{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:14px;animation:v2SigneUp .45s .42s ease-out both}
.v2-signe-amt{color:var(--green);font:800 clamp(16px,3.4vw,22px)/1.2 'Space Grotesk',system-ui,sans-serif;animation:v2SigneUp .45s .48s ease-out both}
.v2-signe-burst{position:absolute;left:50%;top:47%;width:0;height:0}
.v2-signe-burst i{position:absolute;left:-5px;top:-7px;width:10px;height:14px;border-radius:2px;background:var(--c);opacity:0;animation:v2SigneBurst var(--d) .28s cubic-bezier(.12,.75,.3,1) forwards}
.v2-signe-burst i:nth-child(3n){width:8px;height:8px;border-radius:50%}
.v2-signe-burst i:nth-child(5n){width:5px;height:16px}
.v2-signe.is-calm,.v2-signe.is-calm *{animation-duration:.01s!important;animation-delay:0s!important}
@keyframes v2SigneIn{from{opacity:0}}
@keyframes v2SigneOut{to{opacity:0;transform:scale(.98)}}
@keyframes v2Stamp{0%{opacity:0;transform:scale(2.4) rotate(-15deg)}60%{opacity:1;transform:scale(.94) rotate(-8deg)}80%{transform:scale(1.04) rotate(-8deg)}100%{opacity:1;transform:scale(1) rotate(-8deg)}}
@keyframes v2SigneRing{0%{opacity:.85;transform:scale(.92)}100%{opacity:0;transform:scale(1.45)}}
@keyframes v2SigneUp{from{opacity:0;transform:translateY(10px)}}
@keyframes v2SigneBurst{0%{opacity:1;transform:translate(0,0) rotate(0)}70%{opacity:1}100%{opacity:0;transform:translate(var(--x),calc(var(--y) + 14vmin)) rotate(var(--r))}}
