/* Analyse des ventes · Groupe Saint Léonard
   Rapport paginé A4 paysage : barre d'outils (écran) + feuille 297 × 210 mm (écran, impression, PDF). */
:root{
  --navy:#233588;--navy-ink:#18235c;--navy-tint:#e8ebf5;
  --ink:#1d2330;--ink-2:#4a5160;--muted:#7b818d;
  --rule:#cfd2d8;--rule-2:#e7e8eb;--paper:#ffffff;--stage:#e6e7ea;--field:#f6f6f7;
  --concrete:#a8a8a6;--concrete-2:#d7d7d7;--ochre:#d08a1e;
  --good:#1f6b3a;--bad:#b03a2a;
  /* variables lues par les graphiques */
  --cur:#233588;--prev:#a8a8a6;--prev2:#d7d7d7;--up:#3450b0;--down:#c2452f;--neutral:#d7d7d7;
  --s1:#3450b0;--s2:#d08a1e;--s3:#2f9e7a;--s4:#c2452f;--s5:#7b5cc4;--s6:#4fa3d9;--s7:#5f6470;--s8:#a8a8a6;
  --surface:#ffffff;--surface-2:#f4f5f7;--hair:#e7e8eb;--axis:#bfc2c8;--grid:#ecedef;--accent:#233588;
  --good-ink:#1f6b3a;--bad-ink:#b03a2a;
  --ui:"Segoe UI","Segoe UI Variable Text",system-ui,sans-serif;
  --num:"Bahnschrift","DIN Alternate","Segoe UI",sans-serif;
  color-scheme:light;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--stage);color:var(--ink);font-family:var(--ui);font-size:13px;-webkit-font-smoothing:antialiased}
[hidden]{display:none!important}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--navy);outline-offset:2px}

/* ---------- Barre d'outils (écran uniquement) ---------- */
.toolbar{position:sticky;top:0;z-index:30;background:var(--paper);border-bottom:1px solid var(--rule)}
.tb-row{display:flex;align-items:center;gap:22px;padding:0 24px;height:52px}
.tb-brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--navy-ink);flex:none}
.tb-brand img{height:28px;display:block}
.tb-brand span{font-family:var(--num);font-size:15px;letter-spacing:.2px;border-left:1px solid var(--rule);padding-left:12px}
.tabs{display:flex;gap:2px;height:100%;flex:1;min-width:0;overflow-x:auto}
.tabs button{border:0;background:none;padding:0 12px;height:100%;color:var(--ink-2);font-size:13px;border-bottom:2px solid transparent;white-space:nowrap}
.tabs button:hover{color:var(--navy)}
.tabs button[aria-current="page"]{color:var(--navy);border-bottom-color:var(--navy);font-weight:600}
.tb-actions{display:flex;gap:8px;align-items:center;flex:none}
.btn{border:1px solid var(--rule);background:var(--paper);border-radius:3px;padding:6px 12px;font-size:12.5px;color:var(--ink);white-space:nowrap}
.btn:hover{border-color:var(--navy);color:var(--navy)}
.btn.primary{background:var(--navy);border-color:var(--navy);color:#fff}
.btn.primary:hover{background:var(--navy-ink);color:#fff}
.link{border:0;background:none;padding:0;color:var(--navy);text-decoration:underline;text-underline-offset:2px;font-size:12px}
.tb-back{color:var(--ink-2);font-size:12.5px;text-decoration:none}
.tb-back:hover{color:var(--navy)}

.filterbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px 18px;padding:10px 24px 12px;border-top:1px solid var(--rule-2)}
.field{display:flex;flex-direction:column;gap:3px}
.field>label,.field>.lab{font-size:10.5px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-weight:600}
.field select,.dd>button{appearance:none;border:1px solid var(--rule);background:var(--paper) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%237b818d' stroke-width='1.4'/%3E%3C/svg%3E") no-repeat right 9px center;border-radius:3px;padding:5px 28px 5px 9px;font-size:13px;min-width:92px;text-align:left;height:30px}
.field select:hover,.dd>button:hover{border-color:var(--navy)}
.range{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-2)}
.presets{display:flex;gap:10px;align-items:center;height:30px;padding-left:4px}
.presets .link[aria-pressed="true"]{color:var(--ink);text-decoration:none;font-weight:600}
.dd{position:relative}
.dd .menu{position:absolute;top:calc(100% + 4px);left:0;z-index:40;background:var(--paper);border:1px solid var(--rule);box-shadow:0 8px 24px rgba(20,30,60,.12);padding:6px 0;min-width:220px}
.dd .menu label{display:flex;align-items:center;gap:8px;padding:6px 12px;font-size:13px;cursor:pointer;white-space:nowrap}
.dd .menu label:hover{background:var(--field)}
.dd .menu input{accent-color:var(--navy);margin:0}
.dd .menu .menu-foot{border-top:1px solid var(--rule-2);margin-top:4px;padding:6px 12px 2px;display:flex;justify-content:space-between}
.chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;width:100%}
.chips:empty{display:none}
.chip{display:inline-flex;align-items:center;gap:6px;background:var(--navy-tint);color:var(--navy-ink);border-radius:2px;padding:3px 4px 3px 8px;font-size:12px;max-width:360px}
.chip b{font-weight:600}
.chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chip button{border:0;background:none;color:var(--navy-ink);font-size:14px;line-height:1;padding:0 4px}
.chip button:hover{color:var(--bad)}

/* ---------- Scène et feuille A4 paysage ---------- */
.stage{padding:20px 24px 24px;overflow:hidden}
.stage-inner{transform-origin:top left;width:1122px}
.sheet{position:relative;width:1122px;height:793px;background:var(--paper);box-shadow:0 1px 2px rgba(0,0,0,.08),0 6px 24px rgba(20,30,60,.08);padding:26px 30px 0;display:flex;flex-direction:column;overflow:hidden;transition:opacity .2s}
.sheet.loading{opacity:.5}
.sheet+.sheet{margin-top:24px}

/* En-tête de feuille */
.sh-head{display:flex;align-items:stretch;gap:18px;padding-bottom:12px;border-bottom:2px solid var(--navy)}
.sh-head img{height:46px;align-self:center}
.sh-title{border-left:1px solid var(--rule);padding-left:18px;display:flex;flex-direction:column;justify-content:center;min-width:0;flex:1}
.sh-title h1{margin:0;font-family:var(--num);font-weight:600;font-size:22px;letter-spacing:.2px;color:var(--navy-ink);line-height:1.1}
.sh-title p{margin:4px 0 0;color:var(--ink-2);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sh-period{text-align:right;display:flex;flex-direction:column;justify-content:center;flex:none}
.sh-period strong{font-family:var(--num);font-weight:600;font-size:22px;color:var(--navy-ink);line-height:1.1}
.sh-period span{font-size:11px;color:var(--muted);margin-top:3px}

/* Bandeau d'indicateurs */
.kpis{display:grid;grid-template-columns:1.35fr repeat(5,1fr);border-bottom:1px solid var(--rule);margin-top:0}
.kpi{padding:12px 14px 10px;border-left:1px solid var(--rule-2);min-width:0;position:relative}
.kpi:first-child{border-left:0;padding-left:0}
.kpi .k-lab{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi .k-val{font-family:var(--num);font-size:25px;font-weight:600;color:var(--ink);margin-top:3px;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi .k-val.txt{font-size:19px;padding-top:4px;padding-bottom:2px}
.kpi.main .k-val{font-size:31px;color:var(--navy)}
.kpi .k-cmp{display:flex;flex-direction:column;gap:1px;margin-top:4px;font-size:11.5px;white-space:nowrap}
.kpi .k-n2{font-size:10.5px}
.kpi .k-cmp small{color:var(--muted);font-size:11px}
.kpi .k-spark{height:18px;margin-top:5px}
.up{color:var(--good)}.down{color:var(--bad)}.flat{color:var(--muted)}

/* Grille de contenu */
.sh-body{flex:1;min-height:0;display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:minmax(0,1fr);column-gap:22px;row-gap:14px;padding:14px 0 10px}
.blk{min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.c3{grid-column:span 3}.c4{grid-column:span 4}.c5{grid-column:span 5}.c6{grid-column:span 6}.c7{grid-column:span 7}.c8{grid-column:span 8}.c9{grid-column:span 9}.c12{grid-column:span 12}
.r2{grid-row:span 2}
.blk-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px;border-bottom:1px solid var(--rule);padding-bottom:4px;margin-bottom:6px;flex:none}
.blk-h h2{margin:0;font-size:11px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:var(--navy-ink);white-space:nowrap}
.blk-h .note{font-size:10.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.switch{display:flex;gap:10px;flex:none}
.switch button{border:0;background:none;padding:0;font-size:11px;color:var(--muted)}
.switch button:hover{color:var(--navy)}
.switch button[aria-pressed="true"]{color:var(--navy);font-weight:700;text-decoration:underline;text-underline-offset:3px}
.blk-b{flex:1;min-height:0;position:relative}
.blk-f{font-size:10.5px;color:var(--muted);margin-top:4px;flex:none}
.blk-f .link{font-size:10.5px}

/* Pied de feuille */
.sh-foot{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--rule);padding:6px 0 10px;font-size:9.5px;color:var(--muted);flex:none}
.sh-foot span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Remarques en tête de feuille */
.remarks{display:flex;flex-direction:column;gap:2px;padding:6px 0 0;font-size:10.5px;color:var(--ink-2)}
.remarks div::before{content:"› ";color:var(--ochre);font-weight:700}
.remarks .link{font-size:10.5px}

/* Graphiques */
.chart{position:relative;width:100%}
.chart svg{display:block;width:100%;overflow:visible}
.chart text{font-family:var(--ui)}
.chart .axis text,.chart text.tick{fill:var(--muted);font-size:10px}
.chart .grid line{stroke:var(--grid)}
.chart .baseline{stroke:var(--axis)}
.chart .lbl{fill:var(--ink-2);font-size:10.5px}
.chart .lbl-strong{fill:var(--ink);font-size:11px;font-weight:600}
.chart .hit{fill:transparent;cursor:pointer}
.chart .clickable{cursor:pointer}
.legend{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:10.5px;color:var(--ink-2);margin:0 0 4px}
.legend span{display:inline-flex;align-items:center;gap:5px}
.legend i{display:inline-block;width:10px;height:10px}
.legend i.line{height:2px;width:14px}
.tooltip{position:fixed;z-index:60;pointer-events:none;background:var(--paper);color:var(--ink);border:1px solid var(--rule);box-shadow:0 6px 20px rgba(20,30,60,.16);padding:8px 10px;font-size:12px;min-width:160px;max-width:320px}
.tooltip .tt-title{font-weight:600;margin-bottom:5px;color:var(--navy-ink)}
.tooltip .tt-row{display:flex;align-items:center;gap:10px;justify-content:space-between;margin:2px 0}
.tooltip .tt-row span{display:inline-flex;align-items:center;gap:6px;color:var(--ink-2)}
.tooltip .tt-row b{font-family:var(--num);font-weight:600}
.tooltip .key{width:12px;height:2px;display:inline-block}
.tooltip .tt-note{color:var(--muted);margin-top:5px;font-size:11px}
.tooltip .pos{color:var(--good)}.tooltip .neg{color:var(--bad)}
.empty{padding:30px 10px;text-align:center;color:var(--muted);font-size:12px}

/* Tableaux de feuille */
table.t{width:100%;border-collapse:collapse;font-size:11px;table-layout:fixed}
table.t th{text-align:right;font-weight:600;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.4px;padding:3px 6px;border-bottom:1px solid var(--rule);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
table.t td{text-align:right;padding:3.5px 6px;border-bottom:1px solid var(--rule-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
table.t th:first-child,table.t td:first-child{text-align:left;padding-left:0}
table.t td.txt,table.t th.txt{text-align:left}
table.t tr.total td{font-weight:700;border-top:1px solid var(--ink-2);border-bottom:0;color:var(--ink)}
table.t tr.sub td{color:var(--muted)}
table.t tbody tr.clickable{cursor:pointer}
table.t tbody tr.clickable:hover td{background:var(--field)}
table.t .bar{display:inline-block;height:7px;background:var(--navy);vertical-align:middle;margin-right:6px}
table.t .pos{color:var(--good)}table.t .neg{color:var(--bad)}
.crumbs{display:flex;gap:4px;align-items:center;flex-wrap:wrap;font-size:10.5px;margin:-2px 0 4px;color:var(--muted)}
.crumbs button{border:0;background:none;padding:0;color:var(--navy);text-decoration:underline;text-underline-offset:2px;font-size:10.5px}
.crumbs .here{color:var(--ink);font-weight:600}

/* Mini indicateurs dans un bloc */
.facts{display:grid;grid-template-columns:repeat(2,1fr);column-gap:16px}
.fact{padding:6px 0 7px;border-bottom:1px solid var(--rule-2)}
.fact .f-lab{font-size:10.5px;color:var(--muted)}
.fact .f-val{font-family:var(--num);font-size:18px;font-weight:600;color:var(--ink)}
.fact .f-sub{font-size:10.5px}
.prose{font-size:11px;line-height:1.5;color:var(--ink-2);margin:0}
.prose b{color:var(--ink)}

/* Simulation */
.sliders{display:flex;flex-direction:column;gap:7px}
.slider{display:grid;grid-template-columns:1fr 112px 52px;gap:8px;align-items:center;font-size:11px}
.slider input[type=range]{width:100%;accent-color:var(--navy);margin:0;height:14px}
.slider output{text-align:right;font-family:var(--num);font-weight:600;font-size:12px}
.slider .s-lab{color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.slider-group{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-weight:600;margin-top:6px}

/* Couverture */
.heat{display:grid;gap:2px;font-size:10px}
.heat .cell{height:15px}
.heat .hd{color:var(--muted);text-align:center}
.heat .rl{color:var(--ink-2)}

/* Panneau latéral (tableaux complets, filtres avancés) */
.overlay-back{position:fixed;inset:0;background:rgba(15,20,40,.35);z-index:50}
.overlay{position:fixed;top:0;right:0;bottom:0;width:min(980px,100vw);background:var(--paper);z-index:51;display:flex;flex-direction:column;box-shadow:-12px 0 40px rgba(0,0,0,.18)}
.overlay.narrow{width:min(440px,100vw)}
.ov-h{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 22px;border-bottom:2px solid var(--navy)}
.ov-h h2{margin:0;font-family:var(--num);font-weight:600;font-size:18px;color:var(--navy-ink)}
.ov-tools{display:flex;gap:8px;align-items:center;padding:10px 22px;border-bottom:1px solid var(--rule-2)}
.ov-b{overflow:auto;padding:4px 22px 24px;flex:1}
.search{border:1px solid var(--rule);border-radius:3px;padding:6px 9px;min-width:240px;font-size:12.5px}
table.full{width:100%;border-collapse:collapse;font-size:12px}
table.full th{position:sticky;top:0;background:var(--paper);text-align:right;font-weight:600;color:var(--muted);font-size:10.5px;text-transform:uppercase;letter-spacing:.4px;padding:8px 8px;border-bottom:1px solid var(--rule);cursor:pointer;white-space:nowrap}
table.full th[aria-sort]::after{content:" ↓";color:var(--navy)}
table.full th[aria-sort="ascending"]::after{content:" ↑"}
table.full td{padding:6px 8px;border-bottom:1px solid var(--rule-2);text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
table.full th:first-child,table.full td:first-child,table.full .txt{text-align:left}
table.full td.name{max-width:300px;overflow:hidden;text-overflow:ellipsis}
table.full tr.clickable{cursor:pointer}
table.full tr:hover td{background:var(--field)}
table.full .pos{color:var(--good)}table.full .neg{color:var(--bad)}
table.full .mono{font-family:Consolas,monospace;font-size:11.5px;color:var(--ink-2);white-space:normal}
.pager{display:flex;gap:10px;justify-content:flex-end;align-items:center;padding-top:10px;color:var(--muted);font-size:12px}
.combo{position:relative;margin-bottom:14px}
.combo label{font-size:10.5px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-weight:600;display:block;margin-bottom:4px}
.combo input{width:100%;border:1px solid var(--rule);border-radius:3px;padding:7px 9px}
.combo .list{position:absolute;left:0;right:0;top:100%;margin-top:2px;background:var(--paper);border:1px solid var(--rule);box-shadow:0 10px 28px rgba(20,30,60,.14);max-height:260px;overflow:auto;z-index:5}
.combo .opt{display:flex;justify-content:space-between;gap:10px;padding:6px 10px;cursor:pointer;font-size:12.5px}
.combo .opt:hover{background:var(--field)}
.combo .opt small{color:var(--muted);white-space:nowrap}
.combo .opt.sel{font-weight:600;color:var(--navy)}
.combo .selected{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
.ov-section{font-family:var(--num);font-size:13px;color:var(--navy-ink);margin:18px 0 10px;padding-bottom:4px;border-bottom:1px solid var(--rule)}
.radio-row{display:flex;gap:16px;font-size:13px}
.radio-row label{display:flex;gap:6px;align-items:center}
.radio-row input{accent-color:var(--navy)}

/* Écrans d'attente */
.gate{min-height:100vh;display:grid;place-items:center;text-align:center;color:var(--ink-2)}
.gate img{height:54px;margin-bottom:18px}
.gate a{color:var(--navy);font-weight:600}
.spinner{width:22px;height:22px;border-radius:50%;border:2px solid var(--rule);border-top-color:var(--navy);margin:0 auto 12px;animation:spin .9s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.spinner{animation:none}}

/* Petits écrans : la feuille est mise à l'échelle, la barre se replie */
@media (max-width:900px){
  .tb-row{flex-wrap:wrap;height:auto;padding:8px 14px;gap:8px}
  .tabs{order:3;flex-basis:100%;height:38px}
  .tb-brand span{display:none}
  .filterbar{padding:8px 14px}
  .stage{padding:12px 8px 30px}
}

/* Impression et PDF : une feuille par page A4 paysage */
@page{size:A4 landscape;margin:0}
@media print{
  html,body{background:#fff}
  .toolbar,.overlay,.overlay-back,.tooltip,.switch button:not([aria-pressed="true"]),.blk-f .link,.no-print{display:none!important}
  .switch button[aria-pressed="true"]{text-decoration:none}
  .stage{padding:0;overflow:visible}
  .stage-inner{transform:none!important;width:auto;height:auto!important;margin:0!important}
  .sheet{box-shadow:none;margin:0!important;break-after:page;page-break-after:always;zoom:1.0}
  .sheet:last-child{break-after:auto;page-break-after:auto}
  .sheet.loading{opacity:1}
  *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body.print-pack #stage-screen{display:none!important}
  body:not(.print-pack) #stage-pack{display:none!important}
}

/* Classement des articles */
.btn.small{padding:2px 9px;font-size:11px}
.cls .prose{margin:12px 0}
.cls-status{background:#e9f3ec;color:var(--good);padding:8px 12px;font-size:12.5px;margin-bottom:10px;border-left:3px solid var(--good)}
.cls-warn{background:#fff6e0;color:#8a5a00;padding:8px 12px;font-size:12.5px;margin-top:12px;border-left:3px solid var(--ochre)}
table.full.cls-table td{vertical-align:top;white-space:normal}
table.full.cls-table td.cls-act{white-space:nowrap}
.cls-table td:first-child,.cls-table th:first-child{width:28px}
.cls-table input[type=checkbox]{accent-color:var(--navy)}
.cls-name{font-weight:600;color:var(--ink)}
.cls-meta{font-size:11px;color:var(--muted);margin-top:2px}
.cls-path{font-size:12px;color:var(--navy-ink)}
.cls-sug{max-width:420px}
.cls-act{white-space:nowrap}
.cls-act .link+.link{margin-left:12px}
.cls-badge{display:inline-block;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:0 5px;border-radius:2px}
.cls-badge.strong{background:#e9f3ec;color:var(--good)}
.cls-badge.mid{background:#fff6e0;color:#8a5a00}
.cls-editor{border:1px solid var(--navy);background:#f8f9fc;padding:14px 16px;margin:0 0 14px}
.cls-ed-h{display:flex;gap:12px;align-items:baseline;flex-wrap:wrap;margin-bottom:10px;color:var(--navy-ink)}
.cls-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}
.cls-field{display:flex;flex-direction:column;gap:4px;font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:600}
.cls-field select,.cls-field input{min-width:0;width:100%;text-transform:none;letter-spacing:0;font-weight:400;color:var(--ink)}
.cls-ed-f{display:flex;gap:10px;align-items:center;margin-top:12px;flex-wrap:wrap}
@media (max-width:900px){.cls-grid{grid-template-columns:1fr 1fr}}

/* Tableaux détaillés */
.overlay.wide{width:min(1180px,96vw)}
.ft-panel{display:flex;flex-direction:column;min-height:100%}
.ft-subtitle{margin:12px 0 0;font-size:12px;color:var(--ink-2)}
.ft-stats{display:flex;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);margin:12px 0 0}
.ft-stat{flex:1;padding:8px 14px;border-left:1px solid var(--rule-2);min-width:0}
.ft-stat:first-child{border-left:0;padding-left:0}
.ft-stat span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-weight:600}
.ft-stat strong{display:block;font-family:var(--num);font-size:19px;font-weight:600;color:var(--ink);margin-top:2px;white-space:nowrap}
.ft-stat strong.pos{color:var(--good)}.ft-stat strong.neg{color:var(--bad)}
.ft-wrap{margin-top:8px;flex:1}
table.ft{width:100%;border-collapse:collapse;table-layout:fixed;font-size:12px}
table.ft thead th{position:sticky;top:0;z-index:2;background:var(--paper);text-align:right;font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:600;padding:9px 8px 7px;border-bottom:2px solid var(--navy);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;user-select:none}
table.ft thead th.txt{text-align:left}
table.ft thead th:first-child,table.ft td:first-child{padding-left:0}
table.ft thead th:hover{color:var(--navy)}
table.ft thead th.sorted{color:var(--navy-ink)}
table.ft thead th.sorted span::after{content:" ▼";font-size:8px}
table.ft thead th[aria-sort="ascending"] span::after{content:" ▲"}
table.ft td{padding:7px 8px;border-bottom:1px solid var(--rule-2);text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums;vertical-align:middle;position:relative}
table.ft td.txt{text-align:left}
table.ft td.num{font-family:var(--num);font-size:12.5px}
table.ft td.pos{color:var(--good)}table.ft td.neg{color:var(--bad)}
table.ft .ft-main{padding-top:6px;padding-bottom:6px}
table.ft .ft-name{font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis}
table.ft .ft-sub{font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;margin-top:1px}
table.ft .ft-barwrap{position:absolute;left:8px;right:8px;bottom:3px;height:3px}
table.ft .ft-bar{display:block;height:3px;background:var(--navy);opacity:.35;margin-left:auto}
table.ft tbody tr.clickable{cursor:pointer}
table.ft tbody tr:hover td{background:#f4f6fb}
table.ft tbody tr.clickable:hover .ft-name{color:var(--navy);text-decoration:underline;text-underline-offset:2px}
table.ft tfoot td{position:sticky;bottom:0;background:var(--paper);border-top:2px solid var(--ink-2);border-bottom:0;font-weight:700;padding:9px 8px;z-index:2}
table.ft .ft-empty{padding:30px 0;text-align:center;color:var(--muted)}
.ft-pager{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0 0;color:var(--muted);font-size:12px}
.ft-pages{display:flex;gap:6px}
#ov-tools .switch{gap:14px}
#ov-tools .switch button{font-size:12px}

/* Fiche client */
.tabs .tab-client{color:var(--navy);font-weight:600;max-width:260px;overflow:hidden;text-overflow:ellipsis;border-left:1px solid var(--rule)}
.tabs .tab-client::before{content:"Fiche · ";font-weight:400;color:var(--muted)}
.sh-actions{display:flex;gap:8px;align-items:center;padding:8px 0 0}
.sh-actions .link{margin-left:auto;font-size:11.5px}
table.ft.inv tr.open td{background:#f4f6fb;border-bottom-color:transparent}
table.ft.inv tr.inv-lines td{padding:0 0 10px 18px;background:#f4f6fb;white-space:normal}
.inv-box{border-left:2px solid var(--navy);padding:4px 0 2px 12px}
table.inv-detail{width:100%;border-collapse:collapse;font-size:11.5px;table-layout:auto}
table.inv-detail th{font-size:9.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);font-weight:600;text-align:right;padding:4px 6px;border-bottom:1px solid var(--rule)}
table.inv-detail th.txt,table.inv-detail td.txt{text-align:left}
table.inv-detail td{padding:4px 6px;border-bottom:1px solid var(--rule-2);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
table.inv-detail td.strong{font-weight:700}
table.inv-detail td:nth-child(3){white-space:normal;max-width:340px}
.inv-code{font-family:Consolas,monospace;font-size:10.5px;color:var(--muted)}
.fc-field{display:flex;flex-direction:column;gap:4px;margin-bottom:12px;font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:600;flex:1}
.fc-field input{text-transform:none;letter-spacing:0;font-weight:400;color:var(--ink);width:100%;min-width:0}
.fc-row{display:flex;gap:12px}
.fc-row .fc-field:last-child{flex:0 0 120px}

table.ft tr.ft-group .ft-name{color:var(--navy-ink)}
table.ft .ft-tog{display:inline-block;width:14px;color:var(--navy);font-size:11px}
table.ft tr.ft-group.open td{background:#f4f6fb;border-bottom-color:#e3e7f2}
table.ft tr.ft-child td{background:#fafbfd;font-size:11.5px}
table.ft tr.ft-child td.ft-main{padding-left:22px}
table.ft tr.ft-child .ft-name{font-weight:500}

/* Carte : fond des départements */
.chart .map-base .dep{fill:#eef0f3;stroke:#fff;stroke-width:.9;stroke-linejoin:round}
.chart .map-base .dep.has{fill:var(--navy);stroke:#fff}
.chart .map-base .dep.clickable{cursor:pointer}
.chart .map-base .dep.has:hover{stroke:var(--navy-ink);stroke-width:1.4}
.chart .dep-lbl{fill:#5b6799;font-size:9px;font-weight:600;letter-spacing:.6px;opacity:.75}
.chart .map-lbl{paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round}
.map svg{overflow:hidden;display:block}

/* Légendes de la projection */
.legend i.band{opacity:.3}
.legend i.line.dash{background:repeating-linear-gradient(90deg,currentColor 0 5px,transparent 5px 9px)!important}
.goal{display:flex;gap:14px;align-items:center;margin-top:10px;font-size:11.5px;color:var(--ink-2)}
.goal-in{width:120px;border:1px solid var(--rule);border-radius:4px;padding:3px 7px;font:inherit;background:var(--paper);color:var(--ink);text-align:right}
.note-m{margin-top:8px;font-size:11px;color:var(--muted)}
table.t td small.muted{color:var(--muted);font-size:10.5px}

/* Analyse de prix */
.tabs .tab-prix::before{content:"Prix · "}
table.t i.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:middle}
table.t td.strong{font-weight:700;color:var(--ink)}
table.t td .cell-main{color:var(--ink)}

.kpi .k-cmp>*{max-width:100%;overflow:hidden;text-overflow:ellipsis}
.blk-sub{font-size:10px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--muted);margin:12px 0 4px}
table.t.tight td{padding-top:2px;padding-bottom:2px}
.v3 .tabs button{flex:none}

/* Scénarios par produit (arbre dépliable) */
.ptree-wrap{height:100%;overflow:auto}
table.ptree{width:100%;border-collapse:collapse;font-size:11.5px;table-layout:fixed}
table.ptree th{position:sticky;top:0;z-index:1;background:var(--paper);font-size:9.5px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--muted);text-align:right;padding:5px 6px;border-bottom:1px solid var(--rule);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
table.ptree th.txt{text-align:left}
table.ptree.full th.txt{width:26%}
table.ptree td{padding:4px 6px;border-bottom:1px solid var(--rule-2);text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums;color:var(--ink-2)}
table.ptree td.txt{text-align:left}
table.ptree td.strong{font-weight:700;color:var(--ink)}
table.ptree td.pos{color:var(--good)}table.ptree td.neg{color:var(--bad)}
table.ptree tr.ptotal td{border-bottom:1.5px solid var(--ink-2);font-weight:700;color:var(--ink)}
table.ptree tr.pcan{cursor:pointer}
table.ptree tr.pcan:hover td{background:rgba(52,80,176,.06)}
table.ptree tr.plvl-0 td{font-weight:600;color:var(--ink)}
table.ptree tr.plvl-0 td.strong{font-weight:700}
table.ptree tr.plvl-2 td,table.ptree tr.plvl-3 td,table.ptree tr.plvl-4 td,table.ptree tr.plvl-5 td{font-size:11px}
.pname{display:table-cell}
.ptog{display:inline-block;width:14px;height:14px;margin-right:4px;border:0;background:none;padding:0;vertical-align:middle;position:relative;cursor:pointer}
.ptog::before{content:"";position:absolute;left:4px;top:3px;border-left:5px solid var(--navy);border-top:4px solid transparent;border-bottom:4px solid transparent;transition:transform .18s}
.ptog[aria-expanded="true"]::before{transform:rotate(90deg)}
.ptog.none::before{display:none}
.ptog.busy::before{border-left-color:var(--muted)}
.plab{vertical-align:middle}
.papprox{margin-left:5px;font-size:10px;color:var(--muted);border:1px solid var(--rule);border-radius:3px;padding:0 3px}
.pchip{display:inline-block;min-width:44px;text-align:center;border-radius:10px;padding:1px 6px;font-weight:600;font-size:10.5px;background:rgba(120,128,145,.12);color:var(--ink-2)}
.pchip.pos{background:rgba(31,107,58,.12);color:var(--good)}.pchip.neg{background:rgba(176,58,42,.11);color:var(--bad)}
.nuit table.ptree th{background:#121a3a}
.nuit table.ptree tr.pcan:hover td{background:rgba(125,149,255,.08)}
.nuit .pchip.pos{background:rgba(79,209,139,.14)}.nuit .pchip.neg{background:rgba(255,125,107,.14)}
.overlay table.ptree th{background:var(--paper)}
@media print{.ptree-wrap{overflow:hidden}.ptog{display:none}}
table.ptree.full{table-layout:auto}
table.ptree.full th{white-space:normal;line-height:1.25;vertical-align:bottom}

/* Analyse de prix : sélecteur de vue */
.sh-actions .switch{margin-right:auto}
.sh-actions .switch button{font-size:12px}

/* Objectifs : message d’import */
.sh-actions .obj-status{max-width:46ch;font-size:12px;line-height:1.3}
.sh-actions .obj-status.neg{color:var(--neg,#b42318)}

/* Synthèse : explication automatique de l'écart */
.remarks .explain{line-height:1.45}
.remarks .explain b{color:var(--navy-ink,#1f3a5f)}

/* Rentabilité : curseur de hausse */
.sim-h{display:flex;align-items:center;gap:12px;margin:0 0 8px}
.sim-h input{flex:1}
.sim-h output{font-weight:700;min-width:44px;text-align:right}
.cam-par{margin:6px 0 2px}.cam-par .switch button{font-size:11px}
/* Onglet Emballages : prix d'achat saisi dans le tableau, type sélectionné */
.t input.emb-pa{width:100%;max-width:84px;font:inherit;font-family:var(--num);text-align:right;padding:1px 4px;border:1px solid var(--line,#c9ccd6);border-radius:3px;background:transparent;color:inherit}
.t tr.sel td{background:rgba(35,53,136,.08);font-weight:600}
