/* TrackR · styles du module stats (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. */
.stats-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;margin-bottom:19px}.chart-bars{display:flex;align-items:end;gap:15px;height:208px;padding:14px 5px 5px;border-bottom:1px solid var(--line2)}.chart-col{display:flex;flex-direction:column;align-items:center;gap:8px;flex:1;min-width:0;height:100%;justify-content:flex-end}.chart-stick{width:min(65%,34px);border-radius:7px 7px 3px 3px;background:linear-gradient(180deg,#c7f36b,#6a9038);min-height:3px;transition:height .3s}.chart-label{font-size:10px;color:var(--muted);margin-bottom:-26px;white-space:nowrap}.stage-track{height:9px;background:var(--surface3);border-radius:12px;overflow:hidden;margin:9px 0 16px}
@media(max-width:860px){.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.stats-grid{gap:9px}.chart-bars{gap:7px}}
.duel-section{margin:25px 0 22px}
.duel-intro{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:16px;flex-wrap:wrap}
.duel-bolt{color:var(--lime);font-size:.72em;display:inline-block;transform:translate(6px,-4px)}
.duel-hero{border:1px solid #3c4950;border-radius:20px;position:relative;overflow:hidden;background:radial-gradient(ellipse at 50% 30%,#384132 0%,#1e2827 42%,#171e24 90%);display:grid;grid-template-columns:minmax(0,1fr) minmax(142px,.8fr) minmax(0,1fr);gap:8px;padding:30px 25px 28px;isolation:isolate}
.duel-hero:before{content:"";position:absolute;z-index:-1;width:240px;height:240px;left:50%;top:-150px;transform:translateX(-50%);border-radius:50%;background:#c7f36b20;filter:blur(35px)}
.duel-person{display:flex;align-items:center;flex-direction:column;gap:7px;min-width:0;text-align:center}
.duel-select{width:100%;max-width:195px;text-align:center;text-align-last:center;background:#27302e;color:var(--text);border:1px solid #45544c;padding:8px 9px;border-radius:10px;font-weight:700;font-size:13px;min-height:39px}
.duel-person-b .duel-select{background:#2a293b;border-color:#44445e}
.duel-count{font:700 clamp(42px,5vw,64px) 'Space Grotesk',system-ui,sans-serif;color:var(--lime);letter-spacing:-.08em;line-height:1.05;margin-top:6px}
.duel-person-b .duel-count{color:var(--violet)}
.duel-mini{font-size:11px;color:#9ca9aa}
.duel-center{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;text-align:center;gap:8px}
.duel-emblem{width:58px;height:58px;border:1px solid #c7f36b5b;border-radius:19px;background:linear-gradient(135deg,#c7f36b33,#202d23);color:var(--lime);display:grid;place-items:center}
.duel-vs{font:800 29px 'Space Grotesk',system-ui,sans-serif;letter-spacing:-.075em;color:#f5f7f1}
.duel-result{font-size:11px;font-weight:800;color:#edf3df;line-height:1.4;max-width:190px}
.duel-details{margin-top:14px}
.duel-table-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(125px,1.2fr) minmax(0,1fr);margin-top:22px;font-size:10px;color:var(--muted);font-weight:800;letter-spacing:.095em;text-transform:uppercase;text-align:center;border-bottom:1px solid var(--line);padding-bottom:11px}
.duel-metric{display:grid;grid-template-columns:minmax(0,1fr) minmax(125px,1.2fr) minmax(0,1fr);align-items:center;column-gap:11px;row-gap:8px;padding:12px 4px;border-bottom:1px solid #28333a}
.duel-metric:last-of-type{border-bottom:0}
.duel-name{display:flex;flex-direction:column;align-items:center;text-align:center;gap:5px;font-size:11px;font-weight:750;line-height:1.35;color:#bfcacf}
.duel-val{font:700 clamp(15px,1.8vw,22px) 'Space Grotesk',system-ui,sans-serif;color:#b8c2c3;letter-spacing:-.035em;font-variant-numeric:tabular-nums}
.duel-val.left{text-align:right}
.duel-val.right{text-align:left}
.duel-val.left.is-winning{color:var(--lime)}
.duel-val.right.is-winning{color:var(--violet)}
.duel-bar{height:7px;background:#242f32;border-radius:99px;overflow:hidden;display:flex}
.duel-bar.a{justify-content:flex-end}
.duel-bar.b{justify-content:flex-start}
.duel-bar.b span{background:var(--violet)}
.duel-disclaimer{font-size:11px;color:var(--muted);line-height:1.7;margin:24px 0 0;border-top:1px solid var(--line);padding-top:16px}
.duel-empty{text-align:center;padding:32px 18px;display:flex;flex-direction:column;align-items:center;gap:11px}
@media(max-width:600px){
 .duel-intro{align-items:flex-start}
 .duel-intro #duel-period{width:100%;max-width:none}
 .duel-hero{grid-template-columns:minmax(0,1fr) 82px minmax(0,1fr);padding:22px 10px;gap:3px;border-radius:17px}
 .duel-emblem{width:41px;height:41px;border-radius:13px}
 .duel-vs{font-size:23px}.duel-center .duel-mini{display:none}
 .duel-select{font-size:11px;padding:5px 2px;min-height:33px;max-width:140px}
 .duel-count{font-size:42px}
 .duel-person .duel-mini{font-size:9px}
 .duel-result{font-size:9px}
 .duel-table-head,.duel-metric{grid-template-columns:minmax(0,1fr) minmax(104px,1.1fr) minmax(0,1fr);column-gap:4px}
 .duel-details{padding:15px 11px}.duel-val{font-size:16px}.duel-name{font-size:10px}
 .duel-metric{padding:12px 1px}.duel-table-head{font-size:9px}
}
@media(max-width:860px){.stats-grid{gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))}
 .duel-section{margin:23px 0}.duel-hero{padding:20px 8px}.duel-details{padding:16px 10px}.duel-metric{min-height:72px}.duel-count{font-size:38px}.duel-table-head,.duel-metric{grid-template-columns:minmax(0,1fr) minmax(108px,1.1fr) minmax(0,1fr)}
 .stats-grid{min-width:0}
}
@media(max-width:390px){.duel-hero{grid-template-columns:minmax(0,1fr) 68px minmax(0,1fr)}.duel-select{max-width:115px}}
/* 2.30.16 (Pierre : « en mobile quand j'appuie sur un bouton du menu, j'ai un carré bleu qui apparaît ») : pa … */.stage-track span{background:var(--grad)}
.stage-track{background:var(--surface3)}
.duel-intro h2{font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;letter-spacing:-.055em}
[data-theme="light"] .duel-hero,[data-theme="light"] .duel-metric,[data-theme="light"] .duel-details{background:var(--surface);border-color:var(--line)}
/* V1.3 components re-themed with V2 tokens: the legacy sheet hardcodes dark/lime colours that broke light mod … */
.chart-stick{background:linear-gradient(180deg,var(--accent2),var(--accent))}
.duel-hero{border-color:var(--line);background:radial-gradient(ellipse at 50% 22%,color-mix(in srgb,var(--accent) 16%,var(--surface)) 0%,var(--surface) 62%)}
.duel-hero:before{background:color-mix(in srgb,var(--accent) 12%,transparent)}
.duel-select,.duel-person-b .duel-select{background:var(--surface2);border-color:var(--line2);color:var(--text)}
.duel-count{color:var(--lime)}.duel-person-b .duel-count{color:var(--accent2)}.duel-val.right.is-winning{color:var(--accent2)}
.duel-mini{color:var(--muted)}.duel-emblem{border-color:color-mix(in srgb,var(--accent) 40%,transparent);background:color-mix(in srgb,var(--accent) 14%,var(--surface));color:var(--lime)}
.duel-vs,.duel-result{color:var(--text)}.duel-metric{border-bottom-color:var(--line)}.duel-name{color:var(--muted)}.duel-val{color:var(--muted)}.duel-bar{background:var(--surface3)}.duel-bar.b span{background:linear-gradient(90deg,var(--accent2),#69b9ff)}
.duel-disclaimer{color:var(--subtle)}
@media(max-width:380px){.chart-label{white-space:normal;width:min-content;height:21px;margin-bottom:-34px;text-align:center;line-height:1.15;font-size:9px}.chart-bars{margin-bottom:8px}}
/* V2.5 — outils CRM : prospects sans contact, tri/actions groupées, doublons, WhatsApp, recherche rapide */
select.duel-select,.duel-person-b select.duel-select{-webkit-appearance:none;appearance:none;background-image:var(--chevron);background-repeat:no-repeat;background-position:right 14px center;background-size:16px 16px;padding-right:40px}
select.duel-select,.duel-person-b select.duel-select{background-position:right 9px center;background-size:14px 14px;padding-left:9px;padding-right:27px}
/* 2.30.9 · Fiche prospect, « Faites » : un long « Quoi ? » ou une note sans espace (une adresse web…) passe à … */
.v2-origin-insight{display:flex;align-items:flex-start;gap:9px;margin:0 0 14px;padding:10px 12px;border-radius:12px;font-size:13px;line-height:1.45;color:var(--text);background:color-mix(in srgb,var(--accent) 9%,var(--surface2))}
.v2-origin-table{display:grid}
.v2-origin-row{display:grid;grid-template-columns:minmax(0,2.2fr) repeat(3,minmax(54px,.6fr)) minmax(90px,1fr);align-items:center;gap:12px;padding:10px 4px;border-bottom:1px solid var(--line);font-size:13px;font-variant-numeric:tabular-nums}
.v2-origin-row>span:not(.v2-origin-name){text-align:right;color:var(--text)}
.v2-origin-headrow{padding-top:0;font-size:10.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--subtle)}
.v2-origin-headrow>span:not(:first-child){text-align:right}.v2-origin-headrow>span:first-child{text-align:left}
.v2-origin-headrow>span:not(.v2-origin-name){color:var(--subtle)}
.v2-origin-name{display:flex;flex-direction:column;gap:6px;min-width:0}
.v2-origin-bar{display:block;height:6px;border-radius:4px;background:var(--surface3)}
.v2-origin-row.is-unknown .v2-origin-bar>span{background:var(--subtle)}
.v2-origin-row:last-child{border-bottom:0}
.v2-origin-note{margin:10px 0 0}
.v2-origin-sub{margin:20px 0 4px;font-size:12px;font-weight:800;letter-spacing:.04em;color:var(--muted)}
@media(max-width:600px){
 .v2-origin-headrow{display:none}
 .v2-origin-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px 10px;padding:12px 2px}
 .v2-origin-name{grid-column:1/-1}
 .v2-origin-row>span:not(.v2-origin-name){text-align:left;display:flex;flex-direction:column;gap:1px;font-weight:750}
 .v2-origin-row>span[data-label]::before{content:attr(data-label);font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--subtle)}
}
/* 2.22.8 · Duel : « bords arrondis stp sur ce tableau ». */
.duel-table{margin-top:18px;border:1px solid var(--line);border-radius:18px;overflow:hidden;background:color-mix(in srgb,var(--surface) 70%,transparent)}
.duel-table .duel-table-head{margin-top:0;padding:12px 12px 10px}
.duel-table .duel-metric{padding-left:12px;padding-right:12px}
.duel-table .duel-metric:last-child{border-bottom:0}

/* 2.23 · Devis signés (page Stats) : quatre chiffres, puis les derniers devis signés (date, « Billit » quand … */
.v2-signed{margin-top:16px}
.v2-signed-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:4px}
.v2-signed-k{display:grid;gap:4px;align-content:start;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--surface2);min-width:0}
.v2-signed-list{margin-top:12px}
/* 2.24.0 · Devis → « Signés » : total des devis signés au-dessus de la liste ; lien depuis la carte des stats … */
.v2-signed-all{margin-top:10px}
.v2-signed-list .v2-qchip.is-billit{--qc:var(--green)}
@media (max-width:860px){.v2-signed-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
