/* ══════════════════════════════════════════════════════════════
   MODULE · DESEMPENHO DO MOTORISTA · v0.1.0
   ──────────────────────────────────────────────────────────────
   Estilos do lado consultor (cadastro de motoristas + acesso do
   gestor). Reusa .btn, .field e tokens do design system.
   ══════════════════════════════════════════════════════════════ */

.dsmp-root{ padding:4px 2px 40px; }

/* ── cabeçalho ── */
.dsmp-head{
  display:flex;align-items:flex-start;justify-content:space-between;
  gap:16px;flex-wrap:wrap;margin-bottom:18px;
}
.dsmp-head h1{
  font-family:var(--font-display);font-weight:700;
  font-size:var(--fs-3xl);color:var(--txt);line-height:1.15;
}
.dsmp-head p{ font-size:var(--fs-base);color:var(--sub);margin-top:2px; }
.dsmp-head__acoes{ display:flex;gap:8px;flex-wrap:wrap; }

/* ── banner explicativo ── */
.dsmp-banner{
  display:flex;gap:12px;align-items:flex-start;
  background:var(--accent-soft);border:1px solid rgba(88, 200, 220,.22);
  border-radius:var(--radius-lg);padding:14px 16px;margin-bottom:18px;
}
.dsmp-banner__ico{ font-size:20px;line-height:1; }
.dsmp-banner div{ font-size:var(--fs-base);color:var(--txt);line-height:1.55; }
.dsmp-banner b{ color:var(--primary);font-weight:var(--fw-semibold); }

/* ── resumo de acesso (já acessaram × nunca) ── */
.dsmp-resumo{
  display:flex;flex-wrap:wrap;gap:12px;align-items:stretch;margin-bottom:16px;
}
.dsmp-resumo__card{
  flex:1 1 150px;min-width:130px;
  background:var(--card);border:1px solid var(--borda);
  border-radius:var(--radius-lg);padding:14px 16px;
  display:flex;flex-direction:column;gap:2px;
}
.dsmp-resumo__card--ok{ border-color:rgba(46,158,36,.35);background:var(--ok-soft,var(--accent-soft)); }
.dsmp-resumo__card--mut{ background:var(--bg-soft); }
.dsmp-resumo__n{ font-size:var(--fs-2xl,26px);font-weight:var(--fw-bold);color:var(--txt);line-height:1.1; }
.dsmp-resumo__card--ok .dsmp-resumo__n{ color:var(--primary); }
.dsmp-resumo__lbl{ font-size:var(--fs-sm);color:var(--muted); }
.dsmp-resumo__barwrap{
  flex:2 1 220px;min-width:180px;align-self:center;
  display:flex;flex-direction:column;gap:8px;justify-content:center;padding:0 4px;
}
.dsmp-resumo__bar{
  height:9px;border-radius:99px;background:var(--bg-soft);
  border:1px solid var(--borda-soft);overflow:hidden;
}
.dsmp-resumo__bar i{
  display:block;height:100%;border-radius:99px;
  background:linear-gradient(90deg,var(--primary),var(--accent));
}
.dsmp-resumo__pct{ font-size:var(--fs-sm);color:var(--muted); }

/* ── busca de motoristas ── */
.dsmp-mot-busca{
  display:flex;align-items:center;gap:8px;margin-bottom:14px;
  background:var(--card);border:1px solid var(--borda);
  border-radius:var(--radius-lg);padding:2px 12px;
}
.dsmp-mot-busca__ico{ font-size:15px;opacity:.7; }
.dsmp-mot-busca__inp{
  flex:1;border:none;background:transparent;outline:none;
  font-size:var(--fs-base);color:var(--txt);padding:10px 0;font-family:inherit;
}
.dsmp-mot-busca__inp::placeholder{ color:var(--muted); }

/* ── acesso por linha ── */
.dsmp-mot-ac{ font-size:var(--fs-sm); }
.dsmp-mot-ac--ok{ color:var(--primary);font-weight:var(--fw-medium); }
.dsmp-mot-ac--nunca{ color:var(--muted); }

/* ── topo: toggle ativos/inativos + busca ── */
.dsmp-mot-topo{
  display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-bottom:12px;
}
.dsmp-segstatus{
  display:inline-flex;background:var(--bg-soft);border:1px solid var(--borda);
  border-radius:99px;padding:3px;gap:2px;flex:0 0 auto;
}
.dsmp-segstatus button{
  border:none;background:transparent;cursor:pointer;
  font:inherit;font-size:var(--fs-sm);color:var(--sub);
  padding:7px 16px;border-radius:99px;display:inline-flex;align-items:center;gap:6px;
  transition:background .15s,color .15s;
}
.dsmp-segstatus button b{
  font-weight:var(--fw-bold);
  background:var(--card);border-radius:99px;padding:1px 8px;font-size:var(--fs-xs);
  color:var(--sub);border:1px solid var(--borda-soft);
}
.dsmp-segstatus button.is-on{ background:var(--primary);color:#fff; }
.dsmp-segstatus button.is-on b{ background:rgba(255,255,255,.22);color:#fff;border-color:transparent; }
.dsmp-mot-topo .dsmp-mot-busca{ flex:1 1 260px;margin-bottom:0; }

/* linha de contexto (acesso / aviso de inativos) */
.dsmp-mot-accinfo{
  font-size:var(--fs-sm);color:var(--sub);
  background:var(--bg-soft);border:1px solid var(--borda-soft);
  border-radius:var(--radius);padding:9px 14px;margin-bottom:12px;
}
.dsmp-mot-accinfo b{ color:var(--txt);font-weight:var(--fw-semibold); }

/* tag de vínculo na linha do motorista (2026-08-24) — freelancer sai da
   contagem de ativos e precisa ser reconhecível na lista */
.dsmp-tag-fl{
  display:inline-block;vertical-align:middle;margin-left:6px;
  font-size:var(--fs-xs);font-weight:var(--fw-semibold);line-height:1;
  color:var(--sub);background:var(--bg-soft);
  border:1px solid var(--borda-soft);border-radius:99px;padding:3px 8px;
}

/* paginador */
.dsmp-pager{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin-top:14px;flex-wrap:wrap;
}
.dsmp-pager__info{ font-size:var(--fs-sm);color:var(--muted); }
.dsmp-pager__b{
  border:1px solid var(--borda);background:var(--card);cursor:pointer;
  font:inherit;font-size:var(--fs-sm);color:var(--txt);
  padding:8px 16px;border-radius:var(--radius);transition:background .15s;
}
.dsmp-pager__b:hover:not(:disabled){ background:var(--bg-soft); }
.dsmp-pager__b:disabled{ opacity:.4;cursor:default; }

.dsmp-vazio-inline{
  text-align:center;color:var(--muted);font-size:var(--fs-base);
  padding:32px 16px;background:var(--card);
  border:1px solid var(--borda);border-radius:var(--radius-lg);
}

/* ── tabela ── */
.dsmp-tab{
  width:100%;border-collapse:collapse;background:var(--card);
  border:1px solid var(--borda);border-radius:var(--radius-lg);overflow:hidden;
}
.dsmp-tab thead th{
  text-align:left;font-size:var(--fs-2xs);font-weight:var(--fw-bold);
  letter-spacing:.07em;text-transform:uppercase;color:var(--sub);
  background:var(--bg-soft);padding:11px 14px;border-bottom:1px solid var(--borda);
}
.dsmp-tab tbody td{
  padding:12px 14px;border-bottom:1px solid var(--borda-soft);
  font-size:var(--fs-base);color:var(--txt);vertical-align:middle;
}
.dsmp-tab tbody tr:last-child td{ border-bottom:none; }
.dsmp-tab tbody tr:hover{ background:var(--bg-soft); }
.dsmp-tr--off{ opacity:.55; }
.dsmp-tab__acoes{ white-space:nowrap; }

.dsmp-mot-nome{ font-weight:var(--fw-semibold);color:var(--txt); }
.dsmp-mot-sub{ font-size:var(--fs-sm);color:var(--muted);margin-top:2px; }

.dsmp-cred{
  font-family:var(--font-mono);font-size:var(--fs-sm);
  background:var(--info-soft);color:var(--primary);
  padding:3px 8px;border-radius:var(--radius-sm);font-weight:var(--fw-semibold);
}
.dsmp-mut{ color:var(--muted);font-size:var(--fs-sm); }

.dsmp-rodape{ font-size:var(--fs-sm);color:var(--muted);margin-top:10px; }

/* ── badges de situação ── */
.dsmp-badge{
  display:inline-block;font-size:var(--fs-2xs);font-weight:var(--fw-bold);
  letter-spacing:.05em;text-transform:uppercase;
  padding:4px 9px;border-radius:20px;white-space:nowrap;
}
.dsmp-bg-ok  { background:var(--ok-bg);  color:var(--ok);   }
.dsmp-bg-warn{ background:var(--warn-bg);color:var(--warn); }
.dsmp-bg-info{ background:var(--info-bg);color:var(--info); }
.dsmp-bg-crit{ background:var(--crit-bg);color:var(--crit); }
.dsmp-bg-mut { background:var(--neutral-bg);color:var(--neutral); }

/* ── botões-link inline ── */
.dsmp-link{
  background:none;border:none;cursor:pointer;
  font-family:var(--font-ui);font-size:var(--fs-sm);font-weight:var(--fw-semibold);
  color:var(--accent-dark);padding:4px 6px;border-radius:var(--radius-sm);
}
.dsmp-link:hover{ background:var(--accent-soft); }
.dsmp-link--mut{ color:var(--sub); }
.dsmp-link--mut:hover{ background:var(--neutral-bg); }
.dsmp-link + .dsmp-link{ margin-left:2px; }

/* ── modais ── */
.dsmp-modal-hint{
  font-size:var(--fs-base);color:var(--sub);line-height:1.55;margin-bottom:14px;
}
.dsmp-field-sub{
  display:block;font-size:var(--fs-sm);color:var(--muted);margin-top:4px;line-height:1.45;
}

/* ── revelar credenciais ── */
.dsmp-rev{
  background:var(--bg-soft);border:1px solid var(--borda);
  border-radius:var(--radius);padding:6px 14px;
}
.dsmp-rev-linha{
  display:flex;align-items:center;gap:10px;
  padding:10px 0;border-bottom:1px solid var(--borda-soft);
}
.dsmp-rev-linha:last-child{ border-bottom:none; }
.dsmp-rev-lbl{
  font-size:var(--fs-2xs);font-weight:var(--fw-bold);letter-spacing:.06em;
  text-transform:uppercase;color:var(--sub);min-width:118px;
}
.dsmp-rev-val{
  font-family:var(--font-mono);font-size:var(--fs-lg);font-weight:var(--fw-bold);
  color:var(--primary);background:var(--gold-soft);
  padding:5px 12px;border-radius:var(--radius-sm);letter-spacing:.04em;flex:1;
}
.dsmp-rev-aviso{
  font-size:var(--fs-sm);color:var(--warn);line-height:1.5;
  margin-top:12px;padding:9px 12px;background:var(--warn-bg);
  border-radius:var(--radius-sm);
}

/* ── card do gestor ── */
.dsmp-card{
  background:var(--card);border:1px solid var(--borda);
  border-radius:var(--radius-lg);padding:22px;max-width:560px;
}
.dsmp-card__status{ display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px; }
.dsmp-card__txt{
  font-size:var(--fs-base);color:var(--txt);line-height:1.6;margin-bottom:18px;
}
.dsmp-card__txt a{ color:var(--accent-dark);font-weight:var(--fw-semibold); }
.dsmp-card__txt b{ color:var(--primary);font-weight:var(--fw-semibold); }

/* ── responsivo ── */
@media (max-width:680px){
  .dsmp-head{ flex-direction:column; }
  .dsmp-tab{ display:block;overflow-x:auto;white-space:nowrap; }
}

/* ══════════════════════════════════════════════════════════════
   TELA · COMPARATIVO DE MOTORISTAS (gestor)
   ══════════════════════════════════════════════════════════════ */
.dsmp-root .cmp-filtros{
  display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:18px;
}
.dsmp-root .cmp-presets{
  display:inline-flex;gap:3px;background:var(--bg-soft);
  border:1px solid var(--borda);border-radius:var(--radius-md,10px);padding:3px;
}
.dsmp-root .cmp-preset{
  border:0;background:transparent;border-radius:8px;padding:8px 14px;cursor:pointer;
  font-family:var(--font-ui);font-weight:var(--fw-semibold);font-size:var(--fs-sm);
  color:var(--sub);transition:background .15s,color .15s,box-shadow .15s;
}
.dsmp-root .cmp-preset.is-on{ background:var(--card);color:var(--primary);box-shadow:0 1px 3px rgba(0,0,0,.12); }
.dsmp-root .cmp-range{ display:inline-flex;align-items:center;gap:8px; }
.dsmp-root .cmp-range input[type=date]{
  border:1px solid var(--borda);border-radius:var(--radius-sm);padding:7px 9px;
  font-size:var(--fs-sm);color:var(--txt);background:var(--card);
}
.dsmp-root .cmp-busca{
  flex:1;min-width:180px;border:1px solid var(--borda);border-radius:var(--radius-sm);
  padding:8px 12px;font-size:var(--fs-base);color:var(--txt);background:var(--card);
}
/* ── Multi-select (todos por padrão, desmarca o que não quer) ── */
.dsmp-root .dsmp-ms{ position:relative; display:inline-flex; min-width:190px; max-width:240px; }
.dsmp-root .dsmp-ms-btn{
  width:100%; display:flex; align-items:center; justify-content:space-between; gap:8px;
  border:1px solid var(--borda); border-radius:var(--radius-sm); background:var(--card);
  padding:8px 12px; font-size:var(--fs-base); color:var(--txt); cursor:pointer;
  font-family:var(--font-ui); transition:border-color .15s,box-shadow .15s;
}
.dsmp-root .dsmp-ms-btn:hover{ border-color:var(--primary); }
.dsmp-root .dsmp-ms--ativo .dsmp-ms-btn{ border-color:var(--primary); box-shadow:0 0 0 1px var(--primary) inset; }
.dsmp-root .dsmp-ms-lbl{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dsmp-root .dsmp-ms-seta{ color:var(--muted); font-size:12px; flex:none; }
.dsmp-root .dsmp-ms-pop{
  position:absolute; top:calc(100% + 6px); left:0; z-index:1200;
  width:min(320px,86vw); display:flex; flex-direction:column; overflow:hidden;
  background:var(--card); border:1px solid var(--borda); border-radius:var(--radius-md,10px);
  box-shadow:0 12px 32px rgba(0,0,0,.22);
}
.dsmp-root .dsmp-ms-pop[hidden]{ display:none; }
.dsmp-root .dsmp-ms-pop--dir{ left:auto; right:0; }
.dsmp-root .dsmp-ms-acts{ display:flex; gap:6px; padding:8px; border-bottom:1px solid var(--borda); }
.dsmp-root .dsmp-ms-acts button{
  flex:1; border:1px solid var(--borda); background:var(--bg-soft); border-radius:8px;
  padding:6px 8px; font-size:var(--fs-sm); font-weight:var(--fw-semibold); color:var(--sub); cursor:pointer;
}
.dsmp-root .dsmp-ms-acts button:hover{ color:var(--primary); border-color:var(--primary); }
.dsmp-root .dsmp-ms-search{
  margin:8px 8px 4px; border:1px solid var(--borda); border-radius:var(--radius-sm);
  padding:7px 10px; font-size:var(--fs-sm); color:var(--txt); background:var(--bg-soft);
}
.dsmp-root .dsmp-ms-list{ overflow-y:auto; padding:4px; }
.dsmp-root .dsmp-ms-opt{
  display:flex; align-items:flex-start; gap:9px; padding:7px 9px; border-radius:8px; cursor:pointer;
}
.dsmp-root .dsmp-ms-opt:hover{ background:var(--bg-soft); }
.dsmp-root .dsmp-ms-opt input{ margin-top:3px; flex:none; accent-color:var(--primary); }
.dsmp-root .dsmp-ms-opt-txt{ display:flex; flex-direction:column; line-height:1.2; }
.dsmp-root .dsmp-ms-opt-txt b{ font-weight:var(--fw-semibold); font-size:var(--fs-sm); color:var(--txt); }
.dsmp-root .dsmp-ms-opt-txt small{ font-size:var(--fs-xs,11px); color:var(--muted); }
.dsmp-root .dsmp-ms-vazio{ padding:14px; text-align:center; color:var(--muted); font-size:var(--fs-sm); }
/* ── Projeção de Economia ── */
.dsmp-root .prj-lever{ display:inline-flex; align-items:center; gap:8px; border:1px solid var(--borda);
  background:var(--card); border-radius:var(--radius-sm); padding:5px 10px; }
.dsmp-root .prj-lever-lbl{ font-size:var(--fs-sm); color:var(--sub); font-weight:var(--fw-semibold); }
.dsmp-root .prj-lever-btn{ width:24px; height:24px; border:1px solid var(--borda); background:var(--bg-soft);
  border-radius:6px; cursor:pointer; font-weight:700; color:var(--sub); line-height:1; }
.dsmp-root .prj-lever-btn:hover{ border-color:var(--primary); color:var(--primary); }
.dsmp-root .prj-lever-v{ min-width:42px; text-align:center; font-weight:700; font-family:var(--font-display); }
.dsmp-root .prj-lever input[type=range]{ width:110px; accent-color:var(--primary); }
.dsmp-root .prj-sim-aviso{ background:#fff8e6; border:1px solid #f4d98b; color:#7a5a12;
  border-radius:var(--radius-sm); padding:9px 13px; font-size:var(--fs-sm); margin-bottom:14px; }
.dsmp-root .prj-meta-in{ width:74px; text-align:right; border:1px solid var(--borda); border-radius:6px;
  padding:5px 8px; font-size:var(--fs-sm); color:var(--txt); background:var(--card); font-family:var(--font-ui); }
.dsmp-root .prj-meta-in:focus{ outline:none; border-color:var(--primary); box-shadow:0 0 0 2px rgba(91,61,245,.15); }
.dsmp-root .prj-meta-in.is-sim{ border-color:var(--primary); background:#f3f0ff; font-weight:700; color:var(--primary); }
/* média (realizado) editável + botão 🎯 atingir meta */
.dsmp-root .prj-real-wrap{ display:inline-flex; align-items:center; gap:6px; justify-content:flex-end; }
.dsmp-root .prj-media-in{ width:66px; text-align:right; border:1px solid var(--borda); border-radius:6px;
  padding:5px 8px; font-size:var(--fs-sm); color:var(--txt); background:var(--card); font-family:var(--font-ui); }
.dsmp-root .prj-media-in:focus{ outline:none; border-color:var(--primary); box-shadow:0 0 0 2px rgba(91,61,245,.15); }
.dsmp-root .prj-media-in.is-sim{ border-color:#0b8a3e; background:#eafaf0; font-weight:700; color:#0b8a3e; }
.dsmp-root .prj-atingir{ border:1px solid var(--borda); background:var(--bg-soft); border-radius:6px; cursor:pointer;
  width:26px; height:26px; line-height:1; padding:0; font-size:13px; flex:none; transition:border-color .12s, background .12s; }
.dsmp-root .prj-atingir:hover:not(:disabled){ border-color:#0b8a3e; background:#eafaf0; }
.dsmp-root .prj-atingir:disabled{ opacity:.3; cursor:not-allowed; }
.dsmp-root .prj-row--sim td{ background:rgba(91,61,245,.04); }
.dsmp-root .prj-total td{ border-top:2px solid var(--borda); font-weight:700; }
.dsmp-root .prj-bars{ display:flex; flex-direction:column; gap:7px; margin-top:6px; }
.dsmp-root .prj-bar-row{ display:grid; grid-template-columns:180px 1fr 92px; align-items:center; gap:12px; }
.dsmp-root .prj-bar-lbl{ font-size:var(--fs-sm); color:var(--txt); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dsmp-root .prj-bar-track{ position:relative; height:16px; background:var(--bg-soft); border-radius:8px; overflow:visible; }
.dsmp-root .prj-bar-fill{ height:100%; border-radius:8px; min-width:2px; transition:width .2s; }
.dsmp-root .prj-bar-meta{ position:absolute; top:-3px; bottom:-3px; width:2px; background:#11181c; transform:translateX(-1px); }
.dsmp-root .prj-bar-val{ font-size:var(--fs-sm); font-weight:700; text-align:right; font-family:var(--font-display); }
.dsmp-root .prj-bar-val small{ color:var(--muted); font-weight:400; }
.dsmp-root .prj-bars-leg{ display:flex; gap:16px; margin-top:12px; font-size:var(--fs-sm); color:var(--sub); }
.dsmp-root .prj-bars-leg i{ display:inline-block; width:11px; height:11px; border-radius:3px; margin-right:5px; vertical-align:-1px; }
.dsmp-root .prj-bars-leg .prj-leg-meta{ width:2px; height:13px; border-radius:0; background:#11181c; }
@media (max-width:620px){ .dsmp-root .prj-bar-row{ grid-template-columns:110px 1fr 74px; } }
/* barra Meta×realizado embutida na tabela */
.dsmp-root .prj-inbar-cell{ width:160px; min-width:140px; vertical-align:middle; }
.dsmp-root .prj-inbar{ position:relative; height:13px; background:var(--bg-soft); border-radius:7px; overflow:visible; }
.dsmp-root .prj-inbar-fill{ height:100%; border-radius:7px; min-width:2px; transition:width .18s; }
.dsmp-root .prj-inbar-meta{ position:absolute; top:-3px; bottom:-3px; width:2px; background:#11181c; transform:translateX(-1px); border-radius:1px; }
.dsmp-root .prj-total .prj-inbar{ height:15px; }
.dsmp-root .cmp-kpis{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));
  gap:12px;margin-bottom:16px;
}
/* 5 cards numa linha só (quebra só em telas estreitas) */
.dsmp-root .cmp-kpis--5{ grid-template-columns:repeat(5,1fr); }
@media (max-width:1024px){ .dsmp-root .cmp-kpis--5{ grid-template-columns:repeat(3,1fr); } }
@media (max-width:620px){ .dsmp-root .cmp-kpis--5{ grid-template-columns:repeat(2,1fr); } }
.dsmp-root .cmp-kpi{
  background:var(--card);border:1px solid var(--borda);
  border-radius:var(--radius-lg);padding:14px 16px;
}
.dsmp-root .cmp-kpi-top{ display:flex;align-items:center;gap:7px;margin-bottom:9px; }
.dsmp-root .cmp-kpi-ico{ font-size:15px;line-height:1; }
.dsmp-root .cmp-kpi-lbl{
  font-size:var(--fs-2xs);font-weight:var(--fw-bold);letter-spacing:.05em;
  text-transform:uppercase;color:var(--sub);line-height:1.2;
}
.dsmp-root .cmp-kpi-val{ font-family:var(--font-display);font-weight:700;font-size:var(--fs-2xl);color:var(--txt);line-height:1.05; }
.dsmp-root .cmp-kpi-sub{ font-size:var(--fs-sm);color:var(--muted);margin-top:4px; }
/* Card fundido Condução · Segurança */
.dsmp-root .cmp-kpi-duo{ display:flex;align-items:center;gap:10px; }
.dsmp-root .cmp-kpi-duo-i{ display:flex;flex-direction:column;line-height:1.05; }
.dsmp-root .cmp-kpi-duo-i b{ font-family:var(--font-display);font-weight:700;font-size:var(--fs-2xl); }
.dsmp-root .cmp-kpi-duo-i small{ font-size:var(--fs-xs,11px);color:var(--muted);margin-top:2px;text-transform:lowercase; }
.dsmp-root .cmp-kpi-duo-sep{ width:1px;align-self:stretch;background:var(--borda);margin:2px 0; }
.dsmp-root .cmp-scope-nota{ margin:2px 0 12px;font-size:var(--fs-sm); }
.dsmp-root .cmp-scope-nota span[title]{ text-decoration:underline dotted;cursor:help; }
.dsmp-root .cmp-panel{
  background:var(--card);border:1px solid var(--borda);
  border-radius:var(--radius-lg);padding:18px;margin-bottom:16px;
}

/* distribuição das notas */
.dsmp-root .cmp-distrib{ }
.dsmp-root .cmp-distrib-tit{
  font-size:var(--fs-2xs);font-weight:var(--fw-bold);letter-spacing:.07em;
  text-transform:uppercase;color:var(--sub);margin-bottom:10px;
}
.dsmp-root .cmp-distrib-bar{
  display:flex;height:18px;border-radius:6px;overflow:hidden;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.05);
}
.dsmp-root .cmp-distrib-seg{ height:100%; }
.dsmp-root .cmp-distrib-seg:not(:last-child){ box-shadow:inset -1px 0 0 rgba(255,255,255,.4); }
.dsmp-root .cmp-distrib-legs{ display:flex;flex-wrap:wrap;gap:16px;margin-top:11px; }
.dsmp-root .cmp-distrib-leg{ display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-sm);color:var(--txt); }
.dsmp-root .cmp-distrib-leg i{ width:10px;height:10px;border-radius:3px;display:inline-block; }
.dsmp-root .cmp-distrib-leg b{ font-weight:var(--fw-bold); }

/* tabelão */
/* Cabeçalho congelado: o wrap vira o container de rolagem (vertical +
   horizontal) e o thead cola no topo. Borda/raio migram do table pro wrap. */
.dsmp-root .cmp-tab-wrap{
  overflow:auto; max-height:calc(100vh - 140px); margin-bottom:8px;
  border:1px solid var(--borda); border-radius:var(--radius-lg);
}
.dsmp-root .cmp-tab{ width:100%;min-width:720px;border:0;border-radius:0;overflow:visible; }
.dsmp-root .cmp-tab thead th{
  position:sticky; top:0; z-index:4;
  background:var(--bg-soft); box-shadow:0 1px 0 var(--borda);
}
.dsmp-root .cmp-th{ cursor:pointer;user-select:none;white-space:nowrap; }
.dsmp-root .cmp-th:hover{ color:var(--primary); }
.dsmp-root .cmp-th--num{ text-align:right; }
.dsmp-root .cmp-num{ text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap; }
.dsmp-root .cmp-mini{
  display:inline-block;width:54px;height:7px;border-radius:4px;background:var(--borda);
  vertical-align:middle;margin-right:7px;overflow:hidden;
}
.dsmp-root .cmp-mini-fill{ display:block;height:100%;border-radius:4px; }
.dsmp-root .cmp-mini-val{ font-variant-numeric:tabular-nums; }
.dsmp-root .cmp-nota{
  display:inline-block;min-width:34px;text-align:center;color:#fff;font-weight:var(--fw-bold);
  font-family:var(--font-display);padding:3px 8px;border-radius:7px;
}
.dsmp-root .cmp-flag{
  font-size:var(--fs-2xs);font-weight:var(--fw-semibold);color:#9A6A00;background:#FBF0D2;
  padding:1px 7px;border-radius:999px;margin-left:6px;white-space:nowrap;
}
.dsmp-root .cmp-tab tbody td{ vertical-align:middle; }

/* linha clicável + coluna de rank */
.dsmp-root .cmp-row{ cursor:pointer; }
.dsmp-root .cmp-th--rank,
.dsmp-root .cmp-tab .cmp-rank{ width:38px;text-align:center;color:var(--muted);font-variant-numeric:tabular-nums; }
.dsmp-root .cmp-tab .cmp-rank{ font-weight:var(--fw-bold); }

/* ── Drawer do motorista (renderiza fora do .dsmp-root) ── */
.fb-drawer .cmp-dw-sec{ padding:18px 0;border-bottom:1px solid var(--borda-soft); }
.fb-drawer .cmp-dw-sec:first-child{ padding-top:4px; }
.fb-drawer .cmp-dw-sec:last-child{ border-bottom:0; }
.fb-drawer .cmp-dw-cap{
  font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  color:var(--sub);margin-bottom:12px;
}
.fb-drawer .cmp-dw-banda{ font-family:var(--font-display);font-weight:700;font-size:18px;margin-bottom:14px; }
.fb-drawer .cmp-dw-bar{ margin-bottom:12px; }
.fb-drawer .cmp-dw-bar:last-child{ margin-bottom:0; }
.fb-drawer .cmp-dw-bar-top{ display:flex;justify-content:space-between;font-size:14px;color:var(--txt);margin-bottom:5px; }
.fb-drawer .cmp-dw-bar-top b{ font-variant-numeric:tabular-nums; }
.fb-drawer .cmp-dw-track{ height:9px;border-radius:5px;background:var(--borda);overflow:hidden; }
.fb-drawer .cmp-dw-track span{ display:block;height:100%;border-radius:5px; }
.fb-drawer .cmp-dw-grid{ display:grid;grid-template-columns:repeat(2,1fr);gap:14px 24px; }
.fb-drawer .cmp-dw-grid .l{ font-size:12px;color:var(--muted);margin-bottom:2px; }
.fb-drawer .cmp-dw-grid .v{ font-family:var(--font-display);font-weight:700;font-size:17px;color:var(--txt); }
.fb-drawer .cmp-dw-ev{ display:flex;justify-content:space-between;align-items:center;padding:9px 0;border-bottom:1px dashed var(--borda-soft); }
.fb-drawer .cmp-dw-ev:last-child{ border-bottom:0; }
.fb-drawer .cmp-dw-ev-l{ font-size:14px;color:var(--txt); }
.fb-drawer .cmp-dw-ev-v{ font-variant-numeric:tabular-nums;font-weight:700;color:var(--txt); }
.fb-drawer .cmp-dw-ev-v i{ font-style:normal;font-weight:400;color:var(--muted);font-size:12px;margin-left:3px; }
.fb-drawer .cmp-dw-aviso{
  margin-top:14px;font-size:13px;color:#9A6A00;background:#FBF0D2;border-radius:8px;padding:10px 12px;
}

/* dois painéis de barra lado a lado (notas + composição) */
.dsmp-root .cmp-pansel{ display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px; }
.dsmp-root .cmp-pansel .cmp-panel{ margin-bottom:0; }
@media (max-width:900px){ .dsmp-root .cmp-pansel{ grid-template-columns:1fr; } }

/* mini-barra de composição (coluna Condução) */
.dsmp-root .cmp-compcell{ display:inline-flex;align-items:center;gap:8px;justify-content:flex-end; }
.dsmp-root .cmp-compbar{
  display:inline-flex;width:96px;height:9px;border-radius:5px;overflow:hidden;
  background:var(--borda);box-shadow:inset 0 0 0 1px rgba(0,0,0,.04);
}
.dsmp-root .cmp-compbar span{ height:100%; }
.dsmp-root .cmp-compbar span + span{ box-shadow:inset 1px 0 0 rgba(255,255,255,.5); }

/* distribuição das notas como chips de contagem (distinto da barra) */
.dsmp-root .cmp-nchips{ display:flex;flex-wrap:wrap;gap:10px; }
.dsmp-root .cmp-nchip{
  display:flex;align-items:center;gap:9px;flex:1 1 0;min-width:96px;
  background:var(--bg-soft);border:1px solid var(--borda-soft);border-radius:10px;padding:10px 12px;
}
.dsmp-root .cmp-nchip-bar{ width:4px;align-self:stretch;min-height:30px;border-radius:3px; }
.dsmp-root .cmp-nchip-n{ font-family:var(--font-display);font-weight:700;font-size:var(--fs-xl);color:var(--txt);line-height:1; }
.dsmp-root .cmp-nchip-l{ font-size:var(--fs-sm);color:var(--sub); }

/* ════ leitura consultiva — matriz 2×2 (econômico × seguro) ════ */
.dsmp-root .cmp-ins-head{ font-size:var(--fs-base);color:var(--txt);line-height:1.5;margin-bottom:16px; }
.dsmp-root .cmp-ins-head b{ font-weight:var(--fw-bold); }
.dsmp-root .cmp-ins-head em{ font-style:normal;font-weight:var(--fw-bold); }
/* Segmentos da frota — chips limpos (sem stripe de canto vivo) */
.dsmp-root .cmp-seg{ display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:14px; }
@media (max-width:1100px){ .dsmp-root .cmp-seg{ grid-template-columns:repeat(3,1fr); } }
@media (max-width:680px){ .dsmp-root .cmp-seg{ grid-template-columns:repeat(2,1fr); } }
.dsmp-root .cmp-seg-cell{ background:var(--bg-soft);border:1px solid var(--borda);border-radius:var(--radius-md);padding:12px 14px;display:flex;flex-direction:column;gap:5px; }
.dsmp-root .cmp-seg-n{ font-family:var(--font-display);font-weight:700;font-size:var(--fs-2xl);line-height:1;color:var(--txt); }
.dsmp-root .cmp-seg-l{ display:flex;align-items:center;gap:7px;font-size:var(--fs-sm);color:var(--sub);line-height:1.2; }
.dsmp-root .cmp-seg-dot{ width:8px;height:8px;border-radius:50%;flex:0 0 8px; }

/* Rankings top 3 — cartões limpos */
.dsmp-root .cmp-ins-row2{ display:grid;grid-template-columns:1fr 1fr;gap:12px; }
@media (max-width:820px){ .dsmp-root .cmp-ins-row2{ grid-template-columns:1fr; } }
.dsmp-root .cmp-rank{ background:var(--bg-soft);border:1px solid var(--borda);border-radius:var(--radius-md);padding:14px 16px; }
.dsmp-root .cmp-rank-tag{ font-size:var(--fs-2xs);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:.04em;color:var(--sub);margin-bottom:8px; }
.dsmp-root .cmp-rank-tag span{ display:block;text-transform:none;letter-spacing:0;font-weight:var(--fw-normal);color:var(--muted);margin-top:2px; }
.dsmp-root .cmp-rank-row{ display:flex;align-items:center;gap:10px;padding:7px 0;border-top:1px solid var(--borda); }
.dsmp-root .cmp-rank-row:first-of-type{ border-top:0; }
.dsmp-root .cmp-rank-pos{ width:20px;height:20px;border-radius:50%;background:var(--bg);color:var(--sub);font-size:var(--fs-2xs);font-weight:var(--fw-bold);display:flex;align-items:center;justify-content:center;flex:0 0 20px; }
.dsmp-root .cmp-rank-nome{ flex:1;min-width:0;font-size:var(--fs-sm);color:var(--txt);font-weight:var(--fw-medium);white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.dsmp-root .cmp-rank-val{ font-family:var(--font-display);font-weight:700;font-size:var(--fs-lg);font-variant-numeric:tabular-nums; }
.dsmp-root .cmp-rank-vazio{ color:var(--muted);font-size:var(--fs-sm);padding:7px 0; }
.dsmp-root .cmp-ins-foot{ margin-top:13px;font-size:var(--fs-sm);color:var(--muted); }

/* medalhas no ranking (top-3) — emoji */
.dsmp-root .cmp-rank-n{ color:var(--muted);font-weight:var(--fw-bold);font-variant-numeric:tabular-nums; }
.dsmp-root .cmp-medal{ font-size:18px;line-height:1; }

/* drawer: leitura consultiva + detalhamento de cada nota */
.fb-drawer .cmp-dw-leitura{
  font-size:14px;color:var(--txt);line-height:1.5;margin:2px 0 4px;
  padding:12px 14px 12px 16px;border-radius:10px;box-shadow:inset 4px 0 0 0 var(--borda);
  background:var(--bg-soft);font-weight:500;
}
.fb-drawer .cmp-dw-leitura--ok{   box-shadow:inset 4px 0 0 0 var(--ok);   background:var(--ok-bg); }
.fb-drawer .cmp-dw-leitura--warn{ box-shadow:inset 4px 0 0 0 var(--warn); background:var(--warn-bg); }
.fb-drawer .cmp-dw-leitura--crit{ box-shadow:inset 4px 0 0 0 var(--crit); background:var(--crit-bg); }
.fb-drawer .cmp-dw-metric{ display:flex;justify-content:space-between;align-items:baseline;margin-bottom:9px;font-size:14px;color:var(--txt); }
.fb-drawer .cmp-dw-metric b{ font-family:var(--font-display);font-size:22px;font-variant-numeric:tabular-nums; }
.fb-drawer .cmp-dw-segbar{ display:flex;height:14px;border-radius:7px;overflow:hidden;background:var(--borda); }
.fb-drawer .cmp-dw-segbar span{ height:100%; }
.fb-drawer .cmp-dw-segbar span + span{ box-shadow:inset 1px 0 0 rgba(255,255,255,.5); }
.fb-drawer .cmp-dw-legs{ display:flex;flex-wrap:wrap;gap:12px;margin-top:10px; }
.fb-drawer .cmp-dw-leg{ display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--txt); }
.fb-drawer .cmp-dw-leg i{ width:9px;height:9px;border-radius:3px;display:inline-block; }
.fb-drawer .cmp-dw-leg b{ font-variant-numeric:tabular-nums; }
.fb-drawer .cmp-dw-sub{ margin-top:11px;font-size:12.5px;color:var(--muted); }
.fb-drawer .cmp-dw-loads{ margin-top:12px; }
.fb-drawer .cmp-dw-load{ display:flex;align-items:center;gap:9px;padding:8px 0;border-bottom:1px dashed var(--borda-soft); }
.fb-drawer .cmp-dw-load:last-child{ border-bottom:0; }
.fb-drawer .cmp-dw-load-dot{ width:9px;height:9px;border-radius:3px;flex:none; }
.fb-drawer .cmp-dw-load-l{ flex:1;font-size:14px;color:var(--txt); }
.fb-drawer .cmp-dw-load-l em{ display:block;font-style:normal;font-size:12px;color:var(--muted);margin-top:1px; }
.fb-drawer .cmp-dw-load-v{ font-family:var(--font-display);font-weight:700;font-variant-numeric:tabular-nums;color:var(--txt); }
.fb-drawer .cmp-dw-note{ margin-top:12px;font-size:12.5px;color:var(--muted);line-height:1.5; }
.fb-drawer .cmp-dw-note b{ color:var(--txt);font-weight:600; }
.fb-drawer .cmp-dw-okline{ font-size:14px;color:var(--ok);font-weight:600;background:var(--ok-bg);border-radius:9px;padding:11px 13px; }
.fb-drawer .cmp-dw-cells{ display:grid;grid-template-columns:repeat(2,1fr);gap:12px; }
.fb-drawer .cmp-dw-cell{ background:var(--bg-soft);border-radius:10px;padding:11px 13px; }
.fb-drawer .cmp-dw-cell .l{ font-size:12px;color:var(--muted);margin-bottom:3px; }
.fb-drawer .cmp-dw-cell .v{ font-family:var(--font-display);font-weight:700;font-size:18px;color:var(--txt);font-variant-numeric:tabular-nums; }
/* ════════════════════════════════════════════════════════════
   MAPA DE OCORRÊNCIAS  (porte do padrão Segurança Viária / Print)
   ════════════════════════════════════════════════════════════ */
.dsmp-root .sv-mapa-head h2 { font-size: 1.4rem; margin: 0 0 2px; color: #1D3B3A; }
.dsmp-root .sv-mapa .sv-sub { color: #6b7280; font-size: .9rem; margin: 0 0 16px; }
.dsmp-root .sv-mapa .sv-mut { color: #9ca3af; font-size: .8rem; }

/* Filtros */
.dsmp-root .sv-mapa-filtros {
  background: #fff; border: 1px solid #e5e7eb; border-radius: 12px;
  padding: 14px 18px; margin-bottom: 16px;
}
.dsmp-root .sv-mapa-slider-wrap { margin-bottom: 14px; }
.dsmp-root .sv-mapa-slider-wrap > label {
  display: block; font-weight: 600; font-size: .82rem; color: #374151; margin-bottom: 8px;
}
.dsmp-root .sv-mapa-slider-wrap > label span { color: #05AB34; font-weight: 700; }
.dsmp-root .sv-mapa-slider { position: relative; height: 30px; }
.dsmp-root .sv-mapa-slider-track {
  position: absolute; left: 9px; right: 9px; top: 50%; height: 6px;
  transform: translateY(-50%); border-radius: 3px;
  background: linear-gradient(90deg,#16a34a,#eab308,#f97316,#dc2626);
}
.dsmp-root .sv-mapa-slider-track::before,
.dsmp-root .sv-mapa-slider-track::after {
  content: ''; position: absolute; top: -1px; bottom: -1px;
  background: #fff; opacity: .78; border-radius: 3px;
}
.dsmp-root .sv-mapa-slider-track::before { left: 0; width: var(--a, 0%); }
.dsmp-root .sv-mapa-slider-track::after  { left: var(--b, 100%); right: 0; }
.dsmp-root .sv-mapa-slider input[type=range] {
  position: absolute; left: 0; top: 0; width: 100%; height: 30px; margin: 0;
  -webkit-appearance: none; appearance: none; background: transparent; pointer-events: none;
}
.dsmp-root .sv-mapa-slider input[type=range]::-webkit-slider-thumb {
  -webkit-appearance: none; pointer-events: auto;
  width: 18px; height: 18px; border-radius: 50%; background: #fff;
  border: 2px solid #1D3B3A; cursor: pointer; box-shadow: 0 1px 4px rgba(0,0,0,.35);
}
.dsmp-root .sv-mapa-slider input[type=range]::-moz-range-thumb {
  pointer-events: auto; width: 18px; height: 18px; border-radius: 50%;
  background: #fff; border: 2px solid #1D3B3A; cursor: pointer;
}
.dsmp-root .sv-mapa-filtros-row { display: flex; gap: 14px; align-items: flex-end; flex-wrap: wrap; }
.dsmp-root .sv-mapa-filtros-row label {
  display: flex; flex-direction: column; gap: 4px;
  font-size: .78rem; font-weight: 600; color: #374151;
}
.dsmp-root .sv-mapa-filtros-row select,
.dsmp-root .sv-mapa-filtros-row input[type=text],
.dsmp-root .sv-mapa-filtros-row input[type=date] {
  border: 1px solid #d1d5db; border-radius: 8px; padding: 7px 10px;
  font-size: .88rem; background: #fff; min-width: 160px;
}
.dsmp-root .sv-mapa-filtros-row input[type=date] { min-width: 150px; }
.dsmp-root .sv-mapa-filtros .cmp-presets { margin-bottom: 12px; }
.dsmp-root .sv-mapa-busca { flex: 1; }
.dsmp-root .sv-mapa-busca input { width: 100%; }
.dsmp-root .sv-btn { border: none; border-radius: 8px; padding: 8px 18px; font-weight: 600; font-size: .88rem; cursor: pointer; }
.dsmp-root .sv-btn-primary { background: #1D3B3A; color: #fff; }
.dsmp-root .sv-btn-primary:hover { background: #142a29; }

/* Grid mapa | tabela */
.dsmp-root .sv-mapa-grid { display: grid; grid-template-columns: 1.45fr 1fr; gap: 16px; align-items: stretch; }
@media (max-width: 980px) { .dsmp-root .sv-mapa-grid { grid-template-columns: 1fr; } }
.dsmp-root .sv-mapa-col-mapa { display: flex; flex-direction: column; gap: 8px; }
.dsmp-root .sv-mapa-canvas { height: 580px; border-radius: 12px; overflow: hidden; border: 1px solid #e5e7eb; z-index: 0; }
.dsmp-root .sv-mapa-erro { padding: 40px; text-align: center; color: #dc2626; }

/* Legenda */
.dsmp-root .sv-mapa-legenda { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: .74rem; color: #4b5563; }
.dsmp-root .sv-leg-grad { width: 120px; height: 9px; border-radius: 5px; background: linear-gradient(90deg, rgb(22,163,74), rgb(234,179,8), rgb(220,38,38)); }
.dsmp-root .sv-leg-lbl { color: #6b7280; }
.dsmp-root .sv-leg-sep { width: 1px; height: 16px; background: #e5e7eb; margin: 0 4px; }
.dsmp-root .sv-mapa-legenda i { display: inline-block; width: 11px; height: 11px; margin-right: 4px; vertical-align: middle; }

/* Tabela de detalhe */
.dsmp-root .sv-mapa-col-tab { display: flex; flex-direction: column; background: #fff; border: 1px solid #e5e7eb; border-radius: 12px; overflow: hidden; }
.dsmp-root .sv-mapa-tab-head { padding: 10px 14px; border-bottom: 1px solid #eef0f2; font-size: .82rem; color: #374151; font-weight: 600; background: #fafbfb; }
.dsmp-root .sv-mapa-tab-scroll { overflow: auto; max-height: 600px; }
.dsmp-root .sv-mapa-tab { width: 100%; border-collapse: collapse; font-size: .82rem; }
.dsmp-root .sv-mapa-tab thead th {
  position: sticky; top: 0; background: #f3f4f6; z-index: 1;
  text-align: left; padding: 8px 10px; font-size: .72rem; text-transform: uppercase;
  letter-spacing: .03em; color: #6b7280; border-bottom: 1px solid #e5e7eb;
}
.dsmp-root .sv-mapa-tab th.num, .dsmp-root .sv-mapa-tab td.num { text-align: right; }
.dsmp-root .sv-mapa-tab tbody td { padding: 8px 10px; border-bottom: 1px solid #f1f2f4; }
.dsmp-root .sv-mapa-tab tbody tr { cursor: pointer; transition: background .12s; }
.dsmp-root .sv-mapa-tab tbody tr:hover { background: #f0fdf4; }
.dsmp-root .sv-mapa-tab tbody tr.is-ativa { background: #dcfce7; box-shadow: inset 3px 0 0 #05AB34; }
.dsmp-root .sv-mapa-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 7px; vertical-align: middle; }
.dsmp-root .sv-mapa-vazio { text-align: center; color: #9ca3af; padding: 28px 12px; }

/* Marcadores / clusters / tooltip — GLOBAIS (Leaflet renderiza fora do root) */
.sv-pt-wrap, .sv-clu-wrap { background: transparent !important; border: 0 !important; }
.sv-pt { display: block; border-radius: 50%; border: 2px solid #fff; box-shadow: 0 1px 4px rgba(0,0,0,.45); }
.sv-pt-foco { animation: sv-pt-bounce 1.2s ease; }
@keyframes sv-pt-bounce { 0%,100% { transform: scale(1); } 30% { transform: scale(1.8); } 60% { transform: scale(1.2); } }
.sv-clu { border-radius: 50%; color: #fff; font-weight: 700; font-size: .82rem; text-align: center; border: 2px solid #fff; box-shadow: 0 2px 8px rgba(0,0,0,.35); }
.leaflet-tooltip.sv-mapa-tip { font-size: .78rem; line-height: 1.35; }

/* ════════════════════════════════════════════════════════════
   CTA na SIDEBAR · "Abrir app do motorista" (injetado pelo módulo)
   Regra GLOBAL — o CTA vive na sidebar, fora de .dsmp-root.
   ════════════════════════════════════════════════════════════ */
.sidebar__acao-wrap { padding: 0 16px 10px; }
.sidebar__acao {
  display: flex; align-items: center; gap: 9px;
  width: 100%; box-sizing: border-box;
  padding: 9px 13px; border-radius: 10px;
  background: rgba(5,171,52,.12);
  color: #cdf4d9; font-weight: 600; font-size: 12.5px; letter-spacing: .1px;
  text-decoration: none; border: 1px solid rgba(5,171,52,.34);
  transition: background .15s ease, border-color .15s ease, color .15s ease;
}
.sidebar__acao:hover { background: rgba(5,171,52,.2); border-color: rgba(5,171,52,.6); color: #eafff1; }
.sidebar__acao:active { transform: scale(.99); }
.sidebar__acao-ico { font-size: 16px; line-height: 1; flex-shrink: 0; }
.sidebar__acao-lbl { line-height: 1; }

/* ── "i" didático: como a nota é formada (Comparativo) ── */
.cmp-info-i{
  display:inline-flex;align-items:center;justify-content:center;
  width:22px;height:22px;border-radius:50%;border:1px solid var(--borda);
  background:var(--card);color:var(--sub);font:700 12px var(--font-ui,sans-serif);
  cursor:pointer;vertical-align:middle;margin-left:8px;padding:0;transition:.15s;
}
.cmp-info-i:hover{ color:var(--primary);border-color:var(--primary); }
.cmp-info{
  background:var(--card);border:1px solid var(--borda);
  border-radius:var(--radius-lg);padding:16px 18px;margin-bottom:18px;
}
.cmp-info-grid{ display:grid;grid-template-columns:1fr 1fr;gap:12px; }
.cmp-info-card{ background:var(--accent-soft);border-radius:10px;padding:12px 14px; }
.cmp-info-h{
  display:flex;align-items:center;gap:8px;
  font:700 14px var(--font-display);color:var(--txt);margin-bottom:5px;
}
.cmp-info-peso{
  font:700 12px var(--font-ui,sans-serif);background:var(--card);color:var(--primary);
  padding:2px 9px;border-radius:999px;
}
.cmp-info-card p{ font-size:13px;color:var(--sub);line-height:1.45; }
.cmp-info-foot{ margin-top:12px;font-size:var(--fs-base);color:var(--txt);line-height:1.5; }
@media (max-width:560px){ .cmp-info-grid{ grid-template-columns:1fr; } }

/* ══════════════════════════════════════════════════════════════
   TELAS GERENCIAIS v1 · Visão Geral · Ranking · Calibragem
   Prefixo .dfr- (desempenho frota). Reusa tokens do design system.
   ══════════════════════════════════════════════════════════════ */

/* período */
.dfr-bar{ display:flex;gap:6px;align-items:center; }
.dfr-preset{
  border:1px solid var(--borda);background:var(--card);color:var(--sub);
  font:var(--fw-semibold) var(--fs-sm)/1 var(--font-ui,inherit);
  padding:8px 12px;border-radius:var(--radius-md);cursor:pointer;
}
.dfr-preset:hover{ border-color:var(--accent);color:var(--primary); }
.dfr-preset.is-on{ background:var(--primary);border-color:var(--primary);color:#fff; }

/* KPIs */
.dfr-kpis{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:12px;margin-bottom:18px;
}
.dfr-kpi{
  background:var(--card);border:1px solid var(--borda);border-radius:var(--radius-lg);
  padding:14px 16px;display:flex;flex-direction:column;gap:3px;
}
.dfr-kpi__lbl{ font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.06em;color:var(--sub);font-weight:var(--fw-bold); }
.dfr-kpi__val{ font-family:var(--font-display);font-weight:700;font-size:var(--fs-2xl);color:var(--txt);line-height:1.1; }
.dfr-kpi__val small{ font-size:var(--fs-sm);color:var(--muted);font-weight:600; }
.dfr-kpi__sub{ font-size:var(--fs-2xs);color:var(--muted); }
.dfr-kpi__stars{ margin-top:2px; }
.dfr-kpi--nota{ border-width:1px;border-left-width:4px; }
.dfr-nota-ok{   border-left-color:var(--ok); }
.dfr-nota-warn{ border-left-color:var(--warn); }
.dfr-nota-crit{ border-left-color:var(--crit); }
.dfr-nota-mut{  border-left-color:var(--borda); }

/* estrelas */
.dfr-stars{ display:inline-flex;gap:1px;line-height:1; }
.dfr-star{ color:var(--borda);font-size:15px; }
.dfr-star.on{ color:var(--gold,#d1a950); }

/* paineis + grid */
.dfr-grid2{ display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px; }
.dfr-panel{
  background:var(--card);border:1px solid var(--borda);border-radius:var(--radius-lg);
  padding:16px 18px;margin-bottom:16px;
}
.dfr-panel__h{
  font-family:var(--font-display);font-weight:700;font-size:var(--fs-lg);color:var(--txt);margin-bottom:10px;
}
.dfr-panel__h .dsmp-mut{ font-weight:500;font-size:var(--fs-sm); }

/* gráfico de evolução */
.dfr-chart{ width:100%; }
.dfr-svg{ width:100%;height:auto;display:block; }
.dfr-grid{ stroke:var(--borda-soft);stroke-width:1;stroke-dasharray:3 4; }
.dfr-axis{ fill:var(--muted);font:600 9px var(--font-ui,sans-serif); }
.dfr-xlbl{ fill:var(--muted);font:600 9px var(--font-ui,sans-serif);text-anchor:middle; }
.dfr-area{ fill:url(#dfrGrad);stroke:none; }
.dfr-line{ fill:none;stroke:var(--accent);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round; }
.dfr-dot{ fill:#fff;stroke:var(--accent);stroke-width:2; }
.dfr-dotlbl{ fill:var(--primary);font:700 10px var(--font-ui,sans-serif);text-anchor:middle; }
.dfr-chart__vazio{ color:var(--muted);font-size:var(--fs-sm);padding:24px 0;text-align:center; }

/* quadrantes */
.dfr-quad{ display:grid;grid-template-columns:1fr 1fr;gap:10px; }
.dfr-q{ border-radius:var(--radius-md);padding:14px;border:1px solid var(--borda);background:var(--bg-soft); }
.dfr-q__n{ font-family:var(--font-display);font-weight:700;font-size:var(--fs-2xl);line-height:1; }
.dfr-q__l{ font-size:var(--fs-sm);color:var(--sub);margin-top:4px; }
.dfr-q--bom{    border-left:4px solid var(--ok); }
.dfr-q--gastao{ border-left:4px solid var(--warn); }
.dfr-q--corre{  border-left:4px solid #a142f4; }
.dfr-q--dupla{  border-left:4px solid var(--crit); }

/* composição */
.dfr-comp__bar{ display:flex;height:18px;border-radius:999px;overflow:hidden;background:var(--bg-soft);border:1px solid var(--borda); }
.dfr-comp__bar span{ display:block;height:100%; }
.dfr-comp__leg{ display:flex;flex-wrap:wrap;gap:12px;margin-top:12px; }
.dfr-comp__item{ font-size:var(--fs-sm);color:var(--sub);display:inline-flex;align-items:center;gap:6px; }
.dfr-comp__item i{ width:11px;height:11px;border-radius:3px;display:inline-block; }
.dfr-comp__item b{ color:var(--txt); }

/* ranking */
.dfr-rkfiltros{ display:flex;align-items:center;gap:14px;margin-bottom:12px;flex-wrap:wrap; }
.dfr-busca{
  border:1px solid var(--borda);background:var(--card);border-radius:var(--radius-md);
  padding:9px 12px;font-size:var(--fs-base);min-width:240px;color:var(--txt);
}
.dfr-busca:focus{ outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(2,157,102,.14); }
.dfr-tabwrap{ overflow-x:auto; }
.dfr-tab{ min-width:880px; }
.dfr-tab th.dfr-r,.dfr-tab td.dfr-r{ text-align:right; }
.dfr-tab th.dfr-c,.dfr-tab td.dfr-c{ text-align:center; }
.dfr-tab th.dfr-l,.dfr-tab td.dfr-l{ text-align:left; }
.dfr-sort{ cursor:pointer;user-select:none;white-space:nowrap; }
.dfr-sort:hover{ color:var(--primary); }
.dfr-motbtn{
  background:none;border:none;padding:0;cursor:pointer;color:var(--primary);
  font:var(--fw-semibold) var(--fs-base)/1.2 inherit;text-align:left;
}
.dfr-motbtn:hover{ text-decoration:underline; }
.dfr-tag{
  display:inline-block;margin-left:8px;font-size:var(--fs-2xs);font-weight:700;
  background:var(--warn-bg);color:var(--warn);padding:2px 7px;border-radius:999px;vertical-align:middle;
}
.dfr-nota{ font-family:var(--font-display);font-weight:700;font-size:var(--fs-lg); }
.dfr-nota.dfr-nota-ok{ color:var(--ok); }
.dfr-nota.dfr-nota-warn{ color:var(--warn); }
.dfr-nota.dfr-nota-crit{ color:var(--crit); }
.dfr-nota.dfr-nota-mut{ color:var(--muted); }

/* drawer do motorista */
.dfr-mhead{ display:flex;align-items:center;gap:16px;margin-bottom:14px;flex-wrap:wrap; }
.dfr-mnota{ font-family:var(--font-display);font-weight:700;font-size:34px;line-height:1;display:flex;flex-direction:column;gap:4px; }
.dfr-mnota.dfr-nota-ok{ color:var(--ok); } .dfr-mnota.dfr-nota-warn{ color:var(--warn); }
.dfr-mnota.dfr-nota-crit{ color:var(--crit); } .dfr-mnota.dfr-nota-mut{ color:var(--muted); }
.dfr-mnota span{ font-size:14px; }
.dfr-mmeta{ display:flex;flex-direction:column;gap:6px; }
.dfr-pilares{ display:grid;grid-template-columns:1fr 1fr;gap:14px; }
.dfr-mb__top{ display:flex;justify-content:space-between;font-size:var(--fs-sm);color:var(--sub);margin-bottom:4px; }
.dfr-mb__top b{ color:var(--txt); }
.dfr-mb__track{ height:8px;background:var(--bg-soft);border-radius:999px;overflow:hidden; }
.dfr-mb__fill{ display:block;height:100%;border-radius:999px; }
.dfr-fill-ok{ background:var(--ok); } .dfr-fill-warn{ background:var(--warn); }
.dfr-fill-crit{ background:var(--crit); } .dfr-fill-mut{ background:var(--muted); }
.dfr-inds{ display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px; }
.dfr-ind{ background:var(--bg-soft);border-radius:var(--radius-md);padding:10px 12px; }
.dfr-ind__l{ font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.05em;color:var(--sub);font-weight:700; }
.dfr-ind__v{ font-family:var(--font-display);font-weight:700;font-size:var(--fs-lg);color:var(--txt); }
.dfr-ind__s{ font-size:var(--fs-2xs);color:var(--muted); }

/* calibragem */
.dfr-slider{ margin-bottom:14px; }
.dfr-slider__top{ display:flex;justify-content:space-between;font-size:var(--fs-base);color:var(--sub);margin-bottom:6px; }
.dfr-slider__top b{ color:var(--primary);font-weight:700; }
.dfr-slider__sub{ font-size:var(--fs-sm);color:var(--muted);margin-top:4px; }
.dfr-slider__sub b{ color:var(--sub);font-weight:700; }
.dfr-slider input[type=range]{ width:100%;accent-color:var(--accent);height:4px; }
.dfr-pesos-acoes{ display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-top:18px; }

@media (max-width:900px){
  .dfr-grid2{ grid-template-columns:1fr; }
  .dfr-pilares{ grid-template-columns:1fr; }
}

/* corte semanal */
.dfr-presets{ display:flex;gap:6px; }
.dfr-semwrap{ display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-sm);color:var(--sub);font-weight:var(--fw-semibold); }
.dfr-semsel{
  border:1px solid var(--borda);background:var(--card);color:var(--txt);
  border-radius:var(--radius-md);padding:7px 10px;font-size:var(--fs-sm);cursor:pointer;
}
.dfr-semsel:focus{ outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(2,157,102,.14); }
.dfr-bar{ flex-wrap:wrap;gap:10px; }

/* ── redesenho v2: dispersão · destaques · distribuição · foco · pódio ── */
.dfr-xcap{ fill:var(--muted);font:600 10px var(--font-ui,sans-serif);text-anchor:middle; }

/* mapa de dispersão econômico × segurança */
.dfr-scatterwrap{ display:grid;grid-template-columns:1fr 240px;gap:18px;align-items:center; }
.dfr-scatter{ width:100%;height:auto; }
.dfr-qbg--bom{ fill:rgba(2,157,102,.08); }
.dfr-qbg--gastao{ fill:rgba(232,164,0,.09); }
.dfr-qbg--corre{ fill:rgba(161,66,244,.08); }
.dfr-qbg--dupla{ fill:rgba(219,68,55,.08); }
.dfr-qframe{ fill:none;stroke:var(--borda); }
.dfr-qline{ stroke:var(--borda);stroke-dasharray:4 4; }
.dfr-axt{ fill:var(--muted);font:600 11px var(--font-ui,sans-serif);text-anchor:middle; }
.dfr-pt{ stroke:#fff;stroke-width:1.5;cursor:pointer;transition:r .1s; }
.dfr-pt:hover{ r:7; }
.dfr-pt--bom{ fill:#029d66; } .dfr-pt--gastao{ fill:#e8a400; }
.dfr-pt--corre{ fill:#a142f4; } .dfr-pt--dupla{ fill:#db4437; }
.dfr-qleg{ display:flex;flex-direction:column;gap:9px; }
.dfr-qleg__i{ font-size:var(--fs-sm);color:var(--sub);display:flex;align-items:center;gap:8px; }
.dfr-qleg__i b{ color:var(--txt);font-weight:700;min-width:22px; }
.dfr-qd{ width:12px;height:12px;border-radius:3px;flex:none; }
.dfr-qd--bom{ background:#029d66; } .dfr-qd--gastao{ background:#e8a400; }
.dfr-qd--corre{ background:#a142f4; } .dfr-qd--dupla{ background:#db4437; }
.dfr-qleg__hint{ font-size:var(--fs-2xs);color:var(--muted);margin-top:4px;line-height:1.4; }

/* destaques */
.dfr-dlist{ display:flex;flex-direction:column;gap:8px; }
.dfr-dcard{ display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:var(--bg-soft);border:1px solid var(--borda);border-radius:var(--radius-md);padding:10px 12px;cursor:pointer; }
.dfr-dcard:hover{ border-color:var(--accent); }
.dfr-dcard__pos{ font-size:20px;flex:none;width:24px;text-align:center; }
.dfr-dcard__main{ flex:1;min-width:0; }
.dfr-dcard__nome{ font-weight:var(--fw-semibold);color:var(--txt);white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.dfr-dcard__stars{ margin-top:3px;display:flex;align-items:center;gap:8px;flex-wrap:wrap; }
.dfr-dcard__nota{ font-family:var(--font-display);font-weight:700;font-size:var(--fs-xl);flex:none; }
.dfr-dcard__nota.dfr-nota-ok{ color:var(--ok); } .dfr-dcard__nota.dfr-nota-warn{ color:var(--warn); }
.dfr-dcard__nota.dfr-nota-crit{ color:var(--crit); } .dfr-dcard__nota.dfr-nota-mut{ color:var(--muted); }
.dfr-chip{ font-size:var(--fs-2xs);font-weight:700;padding:2px 8px;border-radius:999px; }
.dfr-chip--warn{ background:var(--warn-bg);color:var(--warn); }
.dfr-chip--crit{ background:var(--crit-bg);color:var(--crit); }

/* distribuição por classificação */
.dfr-dist{ display:flex;flex-direction:column;gap:9px; }
.dfr-dist__row{ display:grid;grid-template-columns:92px 1fr 92px;align-items:center;gap:10px; }
.dfr-dist__track{ height:14px;background:var(--bg-soft);border:1px solid var(--borda);border-radius:999px;overflow:hidden; }
.dfr-dist__fill{ display:block;height:100%;border-radius:999px; }
.dfr-dist__n{ text-align:right;font-weight:700;color:var(--txt); }
.dfr-dist__n small{ color:var(--muted);font-weight:500;font-size:var(--fs-2xs); }

/* onde focar */
.dfr-foco{ display:flex;flex-direction:column; }
.dfr-foco__row{ display:grid;grid-template-columns:1.3fr 1fr auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--borda-soft); }
.dfr-foco__row:last-child{ border-bottom:none; }
.dfr-foco__h{ font-weight:var(--fw-semibold);color:var(--txt);display:flex;align-items:center;gap:8px; }
.dfr-foco__ico{ font-size:15px; }
.dfr-foco__mot{ background:none;border:none;padding:0;cursor:pointer;color:var(--primary);font:var(--fw-semibold) var(--fs-base)/1.2 inherit;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.dfr-foco__mot:hover{ text-decoration:underline; }
.dfr-foco__v{ text-align:right;font-weight:700;color:var(--txt);white-space:nowrap; }
.dfr-foco__v small{ display:block;font-weight:500;color:var(--muted);font-size:var(--fs-2xs); }
.dfr-foco__none{ grid-column:2 / 4;text-align:right;color:var(--muted);font-size:var(--fs-sm); }

/* pódio (ranking) */
.dfr-podio{ display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px; }
.dfr-pod{ display:flex;flex-direction:column;align-items:center;gap:5px;padding:16px 12px;background:var(--card);border:1px solid var(--borda);border-radius:var(--radius-lg);cursor:pointer; }
.dfr-pod:hover{ border-color:var(--accent); }
.dfr-pod--0{ border-top:3px solid #d1a950; }
.dfr-pod--1{ border-top:3px solid #9aa0a6; }
.dfr-pod--2{ border-top:3px solid #cd7f32; }
.dfr-pod__m{ font-size:24px;line-height:1; }
.dfr-pod__nome{ font-weight:var(--fw-semibold);color:var(--txt);text-align:center; }
.dfr-pod__nota{ font-family:var(--font-display);font-weight:700;font-size:28px;line-height:1; }
.dfr-pod__nota.dfr-nota-ok{ color:var(--ok); } .dfr-pod__nota.dfr-nota-warn{ color:var(--warn); } .dfr-pod__nota.dfr-nota-crit{ color:var(--crit); }

/* célula de nota com barra (ranking) */
.dfr-pos{ color:var(--muted);font-weight:700; }
.dfr-notacell{ display:flex;align-items:center;gap:8px;justify-content:flex-end; }
.dfr-notabar{ width:52px;height:8px;background:var(--bg-soft);border-radius:999px;overflow:hidden;display:inline-block;flex:none; }
.dfr-notabar i{ display:block;height:100%; }

@media (max-width:900px){
  .dfr-scatterwrap{ grid-template-columns:1fr; }
  .dfr-podio{ grid-template-columns:1fr; }
}

/* ════ v3 · padrão Segurança Viária (dsv-) ════ */
.dsv-loader{ padding:40px;text-align:center;color:var(--muted); }
.dsv-chart__vazio{ padding:28px;text-align:center;color:var(--muted);font-size:var(--fs-sm); }

/* filtros */
.dsv-ctrls{ display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end;background:var(--card);border:1px solid var(--borda);border-radius:16px;padding:14px 18px;margin-bottom:16px;box-shadow:0 6px 18px -12px rgba(0,0,0,.22); }
.dsv-ctrl{ display:flex;flex-direction:column;gap:5px; }
.dsv-ctrl__lbl{ font-size:var(--fs-2xs);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted); }
.dsv-ctrl select{ padding:9px 14px;border:1px solid var(--borda);border-radius:10px;background:#fff;color:var(--txt);font-size:var(--fs-sm);min-width:200px;height:38px;cursor:pointer;transition:border-color .12s,box-shadow .12s; }
.dsv-ctrl select:focus{ outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(2,157,102,.15); }
.dsv-ctrl--chk{ flex-direction:row;align-items:center;gap:8px;font-size:var(--fs-sm);color:var(--sub);cursor:pointer;padding-bottom:8px; }
.dsv-ctrl--chk input{ width:16px;height:16px;accent-color:var(--accent); }

/* KPI cards */
.dsv-kpis{ display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px; }
.dsv-card{ background:var(--card);border:1px solid var(--borda);border-left:3px solid var(--borda);border-radius:var(--radius-lg);padding:14px 16px; }
.dsv-card--nota{ border-left-color:var(--gold,#d1a950); } .dsv-card--crit{ border-left-color:var(--crit); }
.dsv-card--warn{ border-left-color:var(--warn); } .dsv-card--info{ border-left-color:var(--accent); } .dsv-card--ok{ border-left-color:var(--ok); }
.dsv-card__head{ display:flex;align-items:center;gap:8px;margin-bottom:6px; }
.dsv-card__ico{ font-size:16px; } .dsv-card__lbl{ font-size:var(--fs-2xs);font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--muted); }
.dsv-card__val{ font-family:var(--font-display);font-weight:700;font-size:26px;color:var(--txt);line-height:1.1; }
.dsv-card__sub{ font-size:var(--fs-2xs);color:var(--muted);margin-top:4px; }
.dsv-delta{ font-weight:700; } .dsv-delta.is-bom,.dsv-up{ color:var(--ok); } .dsv-delta.is-ruim,.dsv-down{ color:var(--crit); }

/* painel */
.dsv-panel{ background:var(--card);border:1px solid var(--borda);border-radius:var(--radius-lg);padding:16px 18px;margin-bottom:16px; }
.dsv-panel__h{ font-weight:var(--fw-semibold,600);color:var(--txt);font-size:var(--fs-base);margin-bottom:12px;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap; }
.dsv-grid2{ display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start; }

/* leitura da semana */
.dsv-leitura{ background:var(--card);border:1px solid var(--borda);border-left:3px solid var(--accent);border-radius:var(--radius-lg);padding:0;margin-bottom:16px;overflow:hidden; }
.dsv-leitura__h{ width:100%;display:flex;align-items:center;gap:10px;padding:14px 18px;background:none;border:none;cursor:pointer;text-align:left; }
.dsv-leitura__t{ font-weight:var(--fw-semibold,600);color:var(--txt);font-size:var(--fs-base); }
.dsv-leitura__t::before{ content:'💡 '; }
.dsv-leitura__hint{ color:var(--muted);font-size:var(--fs-sm);flex:1; }
.dsv-leitura__chev{ color:var(--muted);transition:transform .15s; }
.dsv-leitura.is-closed .dsv-leitura__chev{ transform:rotate(-90deg); }
.dsv-leitura.is-closed .dsv-leitura__body{ display:none; }
.dsv-leitura__body{ padding:0 18px 16px; }
.dsv-leitura__obs{ list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px; }
.dsv-leitura__obs li{ position:relative;padding-left:18px;color:var(--sub);font-size:var(--fs-sm);line-height:1.5; }
.dsv-leitura__obs li::before{ content:'›';position:absolute;left:2px;color:var(--accent);font-weight:700; }
.dsv-leitura__obs b{ color:var(--txt); }
.dsv-leitura__at{ margin-top:12px;padding:10px 12px;background:var(--warn-bg,#fff6e0);border-radius:var(--radius-md);font-size:var(--fs-sm);color:var(--txt); }
.dsv-leitura__at b{ display:block;margin-bottom:3px; } .dsv-leitura__at p{ margin:0;color:var(--sub); }

/* evolução */
.dsv-mtabs{ display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px; }
.dsv-mtab{ padding:5px 12px;border:1px solid var(--borda);border-radius:999px;background:var(--bg-soft);color:var(--sub);font-size:var(--fs-sm);cursor:pointer; }
.dsv-mtab.is-on{ background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600; }
.dsv-readout{ margin-top:10px;padding:9px 12px;background:var(--bg-soft);border-radius:var(--radius-md);font-size:var(--fs-sm);color:var(--sub);min-height:20px; }
.dsv-readout b{ color:var(--txt); }
.dsv-grid{ stroke:#e6e9e8;stroke-width:1;stroke-dasharray:4 4; }
.dsv-axis{ fill:var(--muted);font-size:11px; } .dsv-cval{ font-size:12px;font-weight:700;text-anchor:middle; }
.dsv-pt{ cursor:pointer;transition:r .1s; } .dsv-pt:hover{ r:7.5; }

/* eventos por tipo */
.dsv-tipos{ display:flex;flex-direction:column;gap:12px; }
.dsv-tipo{ display:flex;gap:10px; } .dsv-tipo__dot{ width:10px;height:10px;border-radius:3px;margin-top:5px;flex:none; }
.dsv-tipo__main{ flex:1;min-width:0; }
.dsv-tipo__top{ display:flex;justify-content:space-between;align-items:baseline; }
.dsv-tipo__nome{ font-weight:var(--fw-semibold,600);color:var(--txt);font-size:var(--fs-sm); } .dsv-tipo__v{ font-weight:700;color:var(--txt); }
.dsv-tipo__bar{ height:8px;background:var(--bg-soft);border-radius:999px;overflow:hidden;margin:5px 0; } .dsv-tipo__bar span{ display:block;height:100%;border-radius:999px; }
.dsv-tipo__foot{ display:flex;justify-content:space-between;font-size:var(--fs-2xs);color:var(--muted); }
.dsv-tipo__delta.is-up{ color:var(--ok); } .dsv-tipo__delta.is-down{ color:var(--crit); }

/* concentração / pareto */
.dsv-toolbar{ display:flex;gap:18px;flex-wrap:wrap;margin-bottom:12px; }
.dsv-chips{ display:flex;gap:6px;flex-wrap:wrap; }
.dsv-chip2{ padding:4px 11px;border:1px solid var(--borda);border-radius:999px;background:var(--bg-soft);color:var(--sub);font-size:var(--fs-sm);cursor:pointer; }
.dsv-chip2.is-on{ background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600; }
.dsv-par__resumo{ font-size:var(--fs-sm);color:var(--sub);margin:0 0 8px; } .dsv-par__resumo b{ color:var(--txt); }
.dsv-par__meta{ height:10px;background:var(--bg-soft);border-radius:999px;overflow:hidden;margin-bottom:14px; } .dsv-par__fill{ display:block;height:100%;background:linear-gradient(90deg,var(--ok),var(--accent));border-radius:999px; }
.dsv-par__lista{ display:flex;flex-direction:column;gap:8px; }
.dsv-par__row{ display:grid;grid-template-columns:24px minmax(120px,1.4fr) 2fr auto;gap:10px;align-items:center; }
.dsv-par__pos{ font-weight:700;color:var(--muted);text-align:center; }
.dsv-par__nome{ background:none;border:none;text-align:left;cursor:pointer;color:var(--primary);font-weight:600;font-size:var(--fs-sm);display:flex;flex-direction:column;line-height:1.25;padding:0; }
.dsv-par__nome small{ color:var(--muted);font-weight:500; } .dsv-par__nome:hover{ text-decoration:underline; }
.dsv-par__bar{ height:14px;background:var(--bg-soft);border-radius:999px;overflow:hidden; } .dsv-par__bar span{ display:block;height:100%;border-radius:999px; }
.dsv-par__v{ text-align:right;font-weight:700;color:var(--txt);white-space:nowrap; } .dsv-par__v small{ display:block;color:var(--muted);font-weight:500;font-size:var(--fs-2xs); }

/* dispersão */
.dsv-scatterwrap{ display:grid;grid-template-columns:1fr 240px;gap:18px;align-items:center; } .dsv-svg{ width:100%;height:auto; }
.dsv-qbg--bom{ fill:rgba(2,157,102,.08); } .dsv-qbg--gastao{ fill:rgba(232,164,0,.09); } .dsv-qbg--corre{ fill:rgba(161,66,244,.08); } .dsv-qbg--dupla{ fill:rgba(219,68,55,.08); }
.dsv-qframe{ fill:none;stroke:var(--borda); } .dsv-qline{ stroke:var(--borda);stroke-dasharray:4 4; } .dsv-axt{ fill:var(--muted);font:600 11px sans-serif;text-anchor:middle; }
.dsv-pt2{ stroke:#fff;stroke-width:1.5;cursor:pointer; } .dsv-pt2:hover{ r:7; }
.dsv-pt2--bom{ fill:#029d66; } .dsv-pt2--gastao{ fill:#e8a400; } .dsv-pt2--corre{ fill:#a142f4; } .dsv-pt2--dupla{ fill:#db4437; }
.dsv-qleg{ display:flex;flex-direction:column;gap:9px;font-size:var(--fs-sm);color:var(--sub); } .dsv-qleg b{ color:var(--txt); }
.dsv-qleg div{ display:flex;align-items:center;gap:8px; } .dsv-qd{ width:12px;height:12px;border-radius:3px; }
.dsv-qd--bom{ background:#029d66; } .dsv-qd--gastao{ background:#e8a400; } .dsv-qd--corre{ background:#a142f4; } .dsv-qd--dupla{ background:#db4437; }

/* distribuição */
.dsv-dist{ display:flex;flex-direction:column;gap:16px;padding:6px 0; }
.dsv-dist__row{ display:grid;grid-template-columns:96px 1fr 92px;align-items:center;gap:12px; }
.dsv-dist__lbl .dsv-star{ font-size:15px; }
.dsv-dist__track{ height:20px;background:var(--bg-soft);border:1px solid var(--borda);border-radius:999px;overflow:hidden; } .dsv-dist__track span{ display:block;height:100%;border-radius:999px; }
.dsv-dist__n{ text-align:right;font-weight:700;color:var(--txt);font-size:var(--fs-base); } .dsv-dist__n small{ color:var(--muted);font-weight:500; }
.dsv-dfill-s5{ background:#16a34a; } .dsv-dfill-s4{ background:#7cc014; } .dsv-dfill-s3{ background:#f5c518; } .dsv-dfill-s2{ background:#f5821f; } .dsv-dfill-s1{ background:#e02424; }

/* composição */
.dsv-comp__bar{ display:flex;height:26px;border-radius:8px;overflow:hidden;margin-bottom:10px; } .dsv-comp__bar span{ display:block;height:100%; }
.dsv-comp__leg{ display:flex;flex-wrap:wrap;gap:14px;font-size:var(--fs-sm);color:var(--sub); } .dsv-comp__leg span{ display:flex;align-items:center;gap:6px; } .dsv-comp__leg i{ width:11px;height:11px;border-radius:3px; } .dsv-comp__leg b{ color:var(--txt); }

/* pódio + ranking */
.dsv-podio{ display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px; }
.dsv-pod{ display:flex;flex-direction:column;align-items:center;gap:5px;padding:16px;background:var(--card);border:1px solid var(--borda);border-radius:var(--radius-lg);cursor:pointer; }
.dsv-pod:hover{ border-color:var(--accent); } .dsv-pod--0{ border-top:3px solid #d1a950; } .dsv-pod--1{ border-top:3px solid #9aa0a6; } .dsv-pod--2{ border-top:3px solid #cd7f32; }
.dsv-pod__m{ font-size:24px; } .dsv-pod__nome{ font-weight:600;color:var(--txt);text-align:center; } .dsv-pod__nota{ font-family:var(--font-display);font-weight:700;font-size:26px; }
.dsv-rk-tools{ display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px; }
.dsv-busca,.dsv-rk-tools select{ padding:8px 12px;border:1px solid var(--borda);border-radius:var(--radius-md);background:var(--bg-soft);color:var(--txt);font-size:var(--fs-sm); } .dsv-busca{ flex:1;min-width:180px; }
.dsv-tabwrap{ overflow-x:auto;border:1px solid var(--borda);border-radius:var(--radius-lg); }
.dsv-tab{ width:100%;border-collapse:collapse;font-size:var(--fs-sm); }
.dsv-tab th,.dsv-tab td{ padding:9px 10px;text-align:left;border-bottom:1px solid var(--borda-soft,#eee); } .dsv-tab th.num,.dsv-tab td.num{ text-align:right; }
.dsv-tab thead th{ background:var(--bg-soft);color:var(--muted);font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.03em;position:sticky;top:0; }
.dsv-tab tbody tr:hover{ background:var(--bg-soft); } .dsmp-tr--off{ opacity:.6; }
.dsv-pos{ color:var(--muted);font-weight:700; }
.dsv-rk-nome{ background:none;border:none;text-align:left;cursor:pointer;color:var(--primary);font-weight:600;display:flex;flex-direction:column;line-height:1.25;padding:0;font-size:var(--fs-sm); } .dsv-rk-nome small{ color:var(--muted);font-weight:500; } .dsv-rk-nome:hover{ text-decoration:underline; }
.dsv-notacell{ display:flex;align-items:center;gap:8px;justify-content:flex-end; } .dsv-notabar{ width:50px;height:8px;background:var(--bg-soft);border-radius:999px;overflow:hidden; } .dsv-notabar i{ display:block;height:100%; }
.dsv-tag{ display:inline-block;margin-left:6px;font-size:var(--fs-2xs);background:var(--bg-soft);color:var(--muted);padding:1px 6px;border-radius:999px; }
.dsv-spark{ width:88px;height:26px;display:inline-block;vertical-align:middle; } .dsv-spark-vazio{ color:var(--muted); }

/* notas/estrelas/fills */
.dsv-nota-ok{ color:var(--ok); } .dsv-nota-warn{ color:var(--warn); } .dsv-nota-crit{ color:var(--crit); } .dsv-nota-mut{ color:var(--muted); }
.dsv-fill-ok{ background:var(--ok); } .dsv-fill-warn{ background:var(--warn); } .dsv-fill-crit{ background:var(--crit); } .dsv-fill-mut{ background:var(--muted); }
.dsv-stars{ display:inline-flex;gap:1px; } .dsv-star{ color:#d8d8d8;font-size:13px; } .dsv-star.on{ color:#d1a950; }

/* drawer */
.dsv-mhead{ display:flex;align-items:center;gap:16px;margin-bottom:14px; }
.dsv-mnota{ font-family:var(--font-display);font-weight:700;font-size:36px;display:flex;flex-direction:column;align-items:center;line-height:1; } .dsv-mnota span{ font-size:14px;margin-top:4px; }
.dsv-pilares{ display:flex;flex-direction:column;gap:10px; }
.dsv-mb__top{ display:flex;justify-content:space-between;font-size:var(--fs-sm);color:var(--sub);margin-bottom:4px; } .dsv-mb__top b{ color:var(--txt); }
.dsv-mb__track{ height:10px;background:var(--bg-soft);border-radius:999px;overflow:hidden; } .dsv-mb__track span{ display:block;height:100%;border-radius:999px; }
.dsv-inds{ display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px; }
.dsv-ind{ background:var(--bg-soft);border-radius:var(--radius-md);padding:9px 11px; } .dsv-ind__l{ font-size:var(--fs-2xs);color:var(--muted); } .dsv-ind__v{ font-weight:700;color:var(--txt); } .dsv-ind__s{ font-size:var(--fs-2xs);color:var(--muted); }

/* calibragem */
.dsv-banner{ background:var(--bg-soft);border:1px solid var(--borda);border-radius:var(--radius-md);padding:12px 14px;font-size:var(--fs-sm);color:var(--sub);margin-bottom:16px;line-height:1.5; }
.dsv-slider{ margin-bottom:12px; } .dsv-slider__top{ display:flex;justify-content:space-between;font-size:var(--fs-sm);color:var(--sub);margin-bottom:5px; } .dsv-slider__top b{ color:var(--txt); }
.dsv-slider input[type=range]{ width:100%; } .dsv-slider__sub{ font-size:var(--fs-sm);color:var(--sub);margin-top:5px; } .dsv-slider__sub b{ color:var(--txt); }
.dsv-pesos-acoes{ display:flex;justify-content:space-between;align-items:center;margin-top:16px; }

@media (max-width:980px){ .dsv-kpis{ grid-template-columns:repeat(2,1fr); } .dsv-grid2{ grid-template-columns:1fr; } .dsv-scatterwrap{ grid-template-columns:1fr; } .dsv-podio{ grid-template-columns:1fr; } }

/* ══ KM & CONSUMO DIÁRIO (tela diario) ═══════════════════════ */
.dsmp-root .dv-visao{ display:flex;gap:0;border:1px solid var(--borda,#e2e6e5);border-radius:10px;overflow:hidden; }
.dsmp-root .dv-visao-btn{
  border:0;background:#fff;padding:8px 14px;font:inherit;font-size:13px;
  cursor:pointer;color:var(--txt-mut,#66716f);white-space:nowrap;
}
.dsmp-root .dv-visao-btn + .dv-visao-btn{ border-left:1px solid var(--borda,#e2e6e5); }
.dsmp-root .dv-visao-btn.is-on{ background:var(--verde-900,#1d3b3a);color:#fff;font-weight:600; }

.dsmp-root .dv-graficos{
  display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:16px;
}
@media (max-width:1100px){ .dsmp-root .dv-graficos{ grid-template-columns:1fr; } }
.dsmp-root .dv-graficos svg{ width:100%;height:auto;display:block; }

/* eixos/vazios dos gráficos (mesmas classes do svgLinhaPro da Seg. Viária) */
.dsmp-root .chart-axis{ font-size:11px;fill:#8a9491; }
.dsmp-root .chart-empty{ padding:26px;text-align:center;color:var(--txt-mut,#66716f);font-size:13px; }
#dvDrawerDetalhe .chart-axis{ font-size:11px;fill:#8a9491; }
#dvDrawerDetalhe .chart-empty{ padding:26px;text-align:center;color:#66716f;font-size:13px; }
#dvDrawerDetalhe svg{ width:100%;height:auto;display:block; }

.dsmp-root .dv-chip, #dvDrawerDetalhe .dv-chip{
  display:inline-block;padding:2px 8px;margin:1px 2px 1px 0;border-radius:999px;
  background:#eef2f1;color:#3c4a48;font-size:11.5px;white-space:nowrap;
}
.dsmp-root .dv-chip--mais{ background:#dfe6e4;font-weight:600; }
.dsmp-root .dv-chips{ max-width:260px; }
#dvDrawerDetalhe .dv-tab-detalhe td{ vertical-align:top; }
.dsmp-root .dv-kml{ font-weight:600; }

/* ══ Qualidade de telemetria (nota v2) ═══════════════════════ */
.dsmp-root .cmp-flag--defeito{
  background:#fee2e2;color:#b91c1c;border:1px solid #fecaca;
}
.dsmp-root .cmp-row--defeito td{ opacity:.62; }
.dsmp-root .cmp-row--defeito .cmp-flag--defeito{ opacity:1; }

/* ══ Quadrantes clicáveis + km nos mini-rankings ═════════════ */
.dsmp-root button.cmp-seg-cell{
  font:inherit;text-align:left;cursor:pointer;border:1px solid transparent;
  background:inherit;border-radius:10px;transition:border-color .12s, box-shadow .12s;
}
.dsmp-root button.cmp-seg-cell:hover{ border-color:var(--borda,#d8dedd); }
.dsmp-root button.cmp-seg-cell.is-on{
  border-color:var(--verde-900,#1d3b3a);box-shadow:0 0 0 2px rgba(29,59,58,.12);
}
.dsmp-root .cmp-rank-km{
  margin-left:auto;margin-right:10px;font-size:11.5px;color:var(--txt-mut,#66716f);white-space:nowrap;
}

/* ══ Filtro de período (padrão da casa) + readout dos gráficos ══ */
.dsmp-root .dsmp-fper{ position:relative; }
.dsmp-root .dsmp-fper-btn{
  display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:13.5px;
  padding:9px 14px;border:1.5px solid var(--verde-900,#1d3b3a);border-radius:10px;
  background:#fff;color:var(--txt,#22302e);cursor:pointer;font-weight:600;
}
.dsmp-root .dsmp-fper-seta{ font-size:11px;color:var(--txt-mut,#66716f); }
.dsmp-root .dsmp-fper-pop{
  position:absolute;z-index:60;top:calc(100% + 8px);left:0;width:320px;
  background:#fff;border:1px solid var(--borda,#e2e6e5);border-radius:14px;
  box-shadow:0 12px 32px rgba(20,14,32,.16);padding:14px;
}
.dsmp-root .dsmp-fper-chips{ display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px; }
.dsmp-root .dsmp-fper-chip{
  font:inherit;font-size:13px;padding:9px 10px;border:1px solid var(--borda,#e2e6e5);
  border-radius:10px;background:#f7f9f8;cursor:pointer;text-align:center;
}
.dsmp-root .dsmp-fper-chip:hover{ border-color:var(--verde-900,#1d3b3a); }
.dsmp-root .dsmp-fper-chip.is-on{ background:var(--verde-900,#1d3b3a);color:#fff;border-color:var(--verde-900,#1d3b3a);font-weight:600; }
.dsmp-root .dsmp-fper-chips .dsmp-fper-chip:last-child{ grid-column:1 / -1; }
.dsmp-root .dsmp-fper-range{ display:flex;gap:10px;margin-bottom:12px; }
.dsmp-root .dsmp-fper-range label{ flex:1;font-size:11px;color:var(--txt-mut,#66716f);text-transform:uppercase;letter-spacing:.03em;display:flex;flex-direction:column;gap:4px; }
.dsmp-root .dsmp-fper-range input{ font:inherit;font-size:13px;padding:7px 8px;border:1px solid var(--borda,#e2e6e5);border-radius:8px; }
.dsmp-root .dsmp-fper-foot{ display:flex;justify-content:space-between;gap:8px; }

.dsmp-root .dv-readout{
  margin-top:8px;padding:8px 12px;border-top:1px dashed var(--borda,#e2e6e5);
  font-size:13px;color:var(--txt,#22302e);min-height:20px;
}
.dsmp-root .dv-ro-delta{ font-weight:600;font-size:12px; }
.dsmp-root .dv-ro-delta.is-up{ color:#0b6b27; }
.dsmp-root .dv-ro-delta.is-down{ color:#b91c1c; }
.dsmp-root .sv-ev-pt.is-hot circle:last-of-type{ stroke-width:4.5; }

/* ══ Rodada 17/07: legibilidade dos gráficos ══
   O svgLinhaPro tem viewBox 900px: se o container estica muito, os rótulos
   ficam gigantes; se encolhe demais, ficam ilegíveis. Solução: largura-teto
   por gráfico (render sempre ~660px → fonte previsível) + lado a lado em tela
   larga, empilhado (centrado, mesma largura-teto) em tela menor. */
.dsmp-root .dv-graficos{ grid-template-columns:1fr 1fr;gap:18px; }
@media (max-width:1180px){ .dsmp-root .dv-graficos{ grid-template-columns:1fr; } }
.dsmp-root .dv-graficos .chart-wrap{ max-width:660px;width:100%;margin:0 auto; }

/* estrelas (régua 0–5 = 60% condução + 40% segurança) */
.dsmp-root .cmp-stars{ display:inline-flex;gap:1px;vertical-align:-1px;margin-left:6px; }
.dsmp-root .cmp-star{ position:relative;display:inline-block;font-size:13px;width:1em;height:1.1em;line-height:1; }
.dsmp-root .cmp-star em{ font-style:normal;color:#dcdfde;position:absolute;inset:0; }
.dsmp-root .cmp-star i{ font-style:normal;color:#d1a950;position:absolute;inset:0;overflow:hidden;white-space:nowrap;z-index:1; }
.dsmp-root .cmp-stars--lg .cmp-star{ font-size:20px; }

/* pódio (fusão do Ranking) */
.dsmp-root .cmp-podio{ display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:16px; }
.dsmp-root .cmp-pod{
  font:inherit;display:flex;flex-direction:column;align-items:center;gap:6px;
  padding:18px 14px;border-radius:14px;background:#fff;cursor:pointer;
  border:1px solid var(--borda,#e2e6e5);transition:transform .12s, box-shadow .12s;
}
.dsmp-root .cmp-pod:hover{ transform:translateY(-2px);box-shadow:0 8px 20px rgba(20,14,32,.10); }
.dsmp-root .cmp-pod--0{ border-color:#e5c56b;background:linear-gradient(180deg,#fffdf5,#fff); }
.dsmp-root .cmp-pod-medal{ font-size:30px;line-height:1; }
.dsmp-root .cmp-pod-nome{ font-weight:700;font-size:14px;text-align:center;color:var(--txt,#22302e); }
.dsmp-root .cmp-pod-notas{ font-size:12.5px;color:var(--txt-mut,#66716f); }
.dsmp-root .cmp-pod-km{ font-size:12px;color:var(--txt-mut,#66716f); }
@media (max-width:900px){ .dsmp-root .cmp-podio{ grid-template-columns:1fr; } }

/* cadastro rico + alertas CNH */
.dsmp-root .cmp-cad{ font-size:11px;margin-top:1px; }
.dsmp-root .cmp-cnh-crit{ color:#b91c1c; }
.dsmp-root .cmp-cnh-warn{ color:#b45309; }

/* ══ Filial (de-para painel Sascar, casado por nome) · 20/07 ══ */
.dsmp-root .cmp-filial{ font-weight:600;color:#3a4a47; }
.dsmp-root .cmp-filial--na{ font-weight:500;color:#b7791f;font-style:italic; }
.dsmp-root .cmp-filial-upd{ font-size:11.5px; }

/* Seletor de filial (Comparativo + KM & Consumo) */
.dsmp-root .dv-sel-filial{ cursor:pointer;min-width:180px;max-width:260px; }

/* Botão "tela cheia" nos gráficos diários + container do modal · 20/07 */
.dsmp-root .cmp-distrib-tit{ position:relative; }
.dsmp-root .dv-graf-exp{
  float:right;border:1px solid var(--borda);background:#fff;color:#5a6a67;
  width:26px;height:26px;border-radius:7px;cursor:pointer;line-height:1;
  font-size:15px;display:inline-flex;align-items:center;justify-content:center;
  transition:background .15s,color .15s,border-color .15s;
}
.dsmp-root .dv-graf-exp:hover{ background:var(--verde-900,#1d3b3a);color:#fff;border-color:transparent; }
.dv-graf-full{ width:100%; }
.dv-graf-full svg{ width:100%;height:auto;display:block; }
.dv-graf-full .chart-wrap{ max-width:none;width:100%;margin:0; }

/* Parâmetros · inputs de premiação/diesel · 20/07 */
.dsmp-root .dsv-pargrid{ display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px; }
.dsmp-root .dsv-parinp{ display:flex;flex-direction:column;gap:5px;font-size:12.5px;color:#5a6a67;font-weight:600; }
.dsmp-root .dsv-parinp input{ border:1px solid var(--borda,#e2e6e5);border-radius:9px;padding:9px 11px;font-size:15px;font-weight:700;color:#1a2b28;font-variant-numeric:tabular-nums; }
.dsmp-root .dsv-parinp input:focus{ outline:none;border-color:var(--verde-900,#1d3b3a); }

/* ── Parâmetros: inputs com sufixo ── */
.dsmp-root .dsv-parinp__box{ position:relative;display:flex;align-items:center; }
.dsmp-root .dsv-parinp__box input{ flex:1;width:100%;border:1px solid var(--borda,#e2e6e5);border-radius:9px;padding:9px 11px;font-size:15px;font-weight:700;color:#1a2b28;font-variant-numeric:tabular-nums;background:var(--card,#fff); }
.dsmp-root .dsv-parinp__box input:focus{ outline:none;border-color:var(--verde-900,#1d3b3a);box-shadow:0 0 0 3px rgba(29,59,58,.08); }
.dsmp-root .dsv-parinp__box i{ position:absolute;right:11px;font-style:normal;font-size:12px;font-weight:700;color:#8a9a97;pointer-events:none; }

/* ── Parâmetros: editores de lista (metas por modelo / diesel) ── */
.dsmp-root .dsv-edit{ display:flex;flex-direction:column;gap:6px;margin-bottom:12px; }
.dsmp-root .dsv-edit-vazio{ font-size:13px;color:#8a9a97;padding:10px 2px;font-style:italic; }
.dsmp-root .dsv-edit-row{ display:flex;align-items:center;gap:10px;padding:9px 12px;background:var(--bg-soft,#f6f8f7);border:1px solid var(--borda,#e9edec);border-radius:10px; }
.dsmp-root .dsv-edit-row__k{ flex:1;font-weight:600;color:#1a2b28;font-size:14px; }
.dsmp-root .dsv-edit-row__v{ font-weight:700;color:#1d3b3a;font-variant-numeric:tabular-nums;font-size:14px; }
.dsmp-root .dsv-edit-del{ border:none;background:transparent;cursor:pointer;font-size:15px;padding:2px 6px;border-radius:7px;opacity:.55;transition:opacity .15s,background .15s; }
.dsmp-root .dsv-edit-del:hover{ opacity:1;background:rgba(194,65,12,.1); }
.dsmp-root .dsv-edit-del:disabled{ opacity:.3;cursor:default; }
.dsmp-root .dsv-edit-add{ display:flex;gap:8px;align-items:center;flex-wrap:wrap; }
.dsmp-root .dsv-edit-inp{ border:1px solid var(--borda,#e2e6e5);border-radius:9px;padding:9px 11px;font-size:14px;font-weight:600;color:#1a2b28;background:var(--card,#fff);min-width:0; }
.dsmp-root .dsv-edit-inp:focus{ outline:none;border-color:var(--verde-900,#1d3b3a);box-shadow:0 0 0 3px rgba(29,59,58,.08); }
.dsmp-root .dsv-edit-add > .dsv-edit-inp:first-child{ flex:1; }
.dsmp-root .dsv-edit-inp--num{ width:96px;flex:0 0 auto;font-variant-numeric:tabular-nums; }

/* ── Parâmetros: cabeçalhos de tema e grid 3-col ── */
.dsmp-root .dsv-sec{ display:flex;align-items:baseline;gap:10px;font-size:16px;font-weight:700;color:#1a2b28;margin:22px 2px 12px; }
.dsmp-root .dsv-sec:first-of-type{ margin-top:6px; }
.dsmp-root .dsv-sec span{ font-size:12.5px;font-weight:500;color:#8a9a97; }
.dsmp-root .dsv-pargrid--3{ grid-template-columns:repeat(3,minmax(0,1fr)); }
@media (max-width:820px){ .dsmp-root .dsv-pargrid--3{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:520px){ .dsmp-root .dsv-pargrid--3{ grid-template-columns:1fr; } }
.dsmp-root .dsv-salvar-bar{ margin:18px 0 6px;padding-top:14px;border-top:1px solid var(--borda,#e9edec); }
.dsmp-root .dsv-salvar-bar .btn{ min-width:190px; }

/* select do editor herda o visual dos inputs */
.dsmp-root select.dsv-edit-inp{ appearance:none;-webkit-appearance:none;cursor:pointer;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path d='M2 4l4 4 4-4' fill='none' stroke='%238a9a97' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/></svg>");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px; }

/* ── Parâmetros: correções v20260720l ── */
/* esconde as setinhas nativas do input number (sobrepunham o sufixo) */
.dsmp-root .dsv-parinp__box input[type=number]{ -moz-appearance:textfield; appearance:textfield; }
.dsmp-root .dsv-parinp__box input[type=number]::-webkit-outer-spin-button,
.dsmp-root .dsv-parinp__box input[type=number]::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
.dsmp-root .dsv-edit-inp[type=number]{ -moz-appearance:textfield; appearance:textfield; }
.dsmp-root .dsv-edit-inp[type=number]::-webkit-outer-spin-button,
.dsmp-root .dsv-edit-inp[type=number]::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
/* títulos de seção: separa o subtítulo do título */
.dsmp-root .dsv-sec span::before{ content:'·';margin-right:9px;color:#c5cecc;font-weight:400; }
.dsmp-root .dsv-pargrid--2{ grid-template-columns:repeat(2,minmax(0,1fr)); }
@media (max-width:520px){ .dsmp-root .dsv-pargrid--2{ grid-template-columns:1fr; } }
/* lista de metas rola quando tem muitos modelos */
.dsmp-root #metaLista{ max-height:290px;overflow-y:auto;padding-right:4px; }

/* ── Parâmetros: meta editável inline (v20260720m) ── */
.dsmp-root .dsv-edit-metabox{ position:relative;display:flex;align-items:center;width:132px;flex:0 0 auto; }
.dsmp-root .dsv-edit-metainp{ width:100%;border:1px solid var(--borda,#e2e6e5);border-radius:8px;padding:6px 42px 6px 10px;font-size:14px;font-weight:700;color:#1d3b3a;font-variant-numeric:tabular-nums;background:var(--card,#fff);text-align:right;-moz-appearance:textfield;appearance:textfield; }
.dsmp-root .dsv-edit-metainp::-webkit-outer-spin-button,
.dsmp-root .dsv-edit-metainp::-webkit-inner-spin-button{ -webkit-appearance:none;margin:0; }
.dsmp-root .dsv-edit-metainp:focus{ outline:none;border-color:var(--verde-900,#1d3b3a);box-shadow:0 0 0 3px rgba(29,59,58,.08); }
.dsmp-root .dsv-edit-metainp--ok{ border-color:#0b8a3e;box-shadow:0 0 0 3px rgba(11,138,62,.15); }
.dsmp-root .dsv-edit-metabox i{ position:absolute;right:9px;font-style:normal;font-size:11px;font-weight:700;color:#8a9a97;pointer-events:none; }

/* ── Editor de meta por modelo: botão + modal (v20260720q) ── */
.dsmp-root .dsv-edit-metabtn{ display:inline-flex;align-items:center;gap:6px;border:1px solid var(--borda,#e2e6e5);background:var(--card,#fff);border-radius:8px;padding:6px 11px;font-size:14px;font-weight:700;color:#1d3b3a;font-variant-numeric:tabular-nums;cursor:pointer;transition:border-color .12s,background .12s;flex:0 0 auto; }
.dsmp-root .dsv-edit-metabtn:hover{ border-color:var(--verde-900,#1d3b3a);background:var(--bg-soft,#f6f8f7); }
.dsmp-root .dsv-edit-pen{ font-size:12px;opacity:.5; }
.dsmp-root .dsv-edit-metabtn:hover .dsv-edit-pen{ opacity:1; }
.meta-ed .meta-ed-atalho{ margin-top:12px;width:100%;justify-content:center;font-weight:600; }
.meta-ed .meta-ed-hist{ margin-top:16px; }
.meta-ed .meta-ed-hist-cap{ font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:#8a9a97;margin-bottom:8px; }
.meta-ed #mePhist .dsv-edit-row{ margin-bottom:6px; }

/* ── Pódio refinado + filial (v20260720t) ── */
.dsmp-root .cmp-pod{ position:relative; }
.dsmp-root .cmp-pod-pos{ position:absolute;top:9px;left:11px;font-size:11px;font-weight:800;letter-spacing:.02em;color:#b9a24a; }
.dsmp-root .cmp-pod--1{ border-color:#c7ccd2;background:linear-gradient(180deg,#fbfcfd,#fff); }
.dsmp-root .cmp-pod--1 .cmp-pod-pos{ color:#8a929c; }
.dsmp-root .cmp-pod--2{ border-color:#d8b892;background:linear-gradient(180deg,#fdf9f4,#fff); }
.dsmp-root .cmp-pod--2 .cmp-pod-pos{ color:#b07d4e; }
.dsmp-root .cmp-pod--0{ box-shadow:0 2px 10px rgba(214,175,66,.12); }
.dsmp-root .cmp-pod-filial{ font-size:11.5px;font-weight:600;color:#6b7180;background:var(--bg-soft,#f4f6f5);border-radius:20px;padding:2px 10px;margin-top:-1px; }

/* ── Toggle de métrica no gráfico do drawer (KM/Litros/Média) ── */
.dsmp-root .dv-graf-head{ display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px;flex-wrap:wrap; }
.dsmp-root .dv-mtoggle{ display:inline-flex;gap:2px;background:var(--bg-soft,#eef2f1);border-radius:9px;padding:2px; }
.dsmp-root .dv-mbtn{ border:none;background:transparent;cursor:pointer;font:inherit;font-size:12.5px;font-weight:600;color:#66716f;padding:5px 12px;border-radius:7px;transition:background .12s,color .12s; }
.dsmp-root .dv-mbtn.is-on{ background:#fff;color:#1a2b28;box-shadow:0 1px 3px rgba(20,14,32,.12); }

/* ── Parâmetros: painel slim de prêmio + dispersão por modelo (v20260720u) ── */
.dsmp-root .dsv-panel--slim{ padding:14px 18px; }
.dsmp-root .dsv-slim-row{ display:flex;align-items:center;gap:20px;flex-wrap:wrap; }
.dsmp-root .dsv-slim-campo{ flex:0 0 auto;min-width:220px; }
.dsmp-root .dsv-slim-nota{ flex:1 1 300px;margin:0;font-size:12.5px;line-height:1.5; }
.dsmp-root .dsv-edit-disp{ color:#8a9a97;font-weight:600;font-size:12.5px; }
.dsmp-root .dsv-edit-metabtn{ gap:5px; }
@media (max-width:560px){ .dsmp-root .dsv-slim-row{ flex-direction:column;align-items:stretch; } }

/* ── Parâmetros · matriz de eventos ─────────────────────────── */
.dsmp-root .dsv-eventos{ display:flex;flex-direction:column;gap:14px; }
.dsmp-root .dsv-ev-cat__h{
  font-size:var(--fs-sm);font-weight:var(--fw-semibold);text-transform:uppercase;
  letter-spacing:.04em;color:var(--muted);margin:0 0 6px 2px;
}
.dsmp-root .dsv-ev-row{
  display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;
  background:var(--card);border:1px solid var(--borda);border-radius:var(--radius-md,10px);
  padding:11px 14px;margin-bottom:8px;transition:opacity .15s,background .15s;
}
.dsmp-root .dsv-ev-row.is-off{ opacity:.55;background:var(--bg-soft); }
.dsmp-root .dsv-ev-row.is-indisp{ opacity:.6;background:var(--bg-soft);border-style:dashed; }
.dsmp-root .dsv-ev-rot{ font-weight:var(--fw-semibold);color:var(--txt);font-size:14px; }
.dsmp-root .dsv-ev-ajuda{ font-size:var(--fs-sm);color:var(--muted);margin-top:2px;line-height:1.4;max-width:52ch; }
.dsmp-root .dsv-ev-badge{
  display:inline-block;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;
  color:#92400e;background:#fef3c7;border-radius:6px;padding:1px 6px;margin-left:6px;vertical-align:middle;
}
/* toggle */
.dsmp-root .dsv-ev-toggle{ display:inline-flex;cursor:pointer; }
.dsmp-root .dsv-ev-toggle input{ position:absolute;opacity:0;width:0;height:0; }
.dsmp-root .dsv-ev-sw{
  width:38px;height:22px;border-radius:22px;background:#cbd5e1;position:relative;transition:background .15s;flex:none;
}
.dsmp-root .dsv-ev-sw::after{
  content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;
  background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);transition:transform .15s;
}
.dsmp-root .dsv-ev-toggle input:checked + .dsv-ev-sw{ background:var(--primary); }
.dsmp-root .dsv-ev-toggle input:checked + .dsv-ev-sw::after{ transform:translateX(16px); }
.dsmp-root .dsv-ev-toggle input:disabled + .dsv-ev-sw{ opacity:.5;cursor:not-allowed; }
/* campos peso/limiar */
.dsmp-root .dsv-ev-campos{ display:flex;align-items:flex-end;gap:10px; }
.dsmp-root .dsv-ev-campo{ display:flex;flex-direction:column;gap:3px; }
.dsmp-root .dsv-ev-campo > span{ font-size:11px;color:var(--muted);font-weight:500; }
.dsmp-root .dsv-ev-campo input{
  width:72px;padding:6px 8px;border:1px solid var(--borda);border-radius:8px;
  background:var(--card);color:var(--txt);font-size:14px;text-align:right;
}
.dsmp-root .dsv-ev-campo input:focus{ outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(88,200,220,.18); }
.dsmp-root .dsv-ev-limbox{ display:flex;align-items:center;gap:5px; }
.dsmp-root .dsv-ev-limbox i{ font-style:normal;font-size:var(--fs-sm);color:var(--muted); }
.dsmp-root .dsv-ev-semlim{ font-size:var(--fs-sm);color:var(--muted);align-self:center;padding-bottom:6px; }
@media (max-width:640px){
  .dsmp-root .dsv-ev-row{ grid-template-columns:auto 1fr;row-gap:10px; }
  .dsmp-root .dsv-ev-campos{ grid-column:1 / -1;justify-content:flex-start; }
}

/* percentuais nos quadrantes (Comparativo + Visão) */
.dsmp-root .cmp-seg-pct{ font-style:normal;font-size:12px;font-weight:600;color:var(--muted);margin-left:3px; }
.dsmp-root .dsv-qpct{ color:var(--muted);font-weight:600;font-size:11px;margin:0 2px; }

/* ── Prova de Conceito ─────────────────────────────────────── */
.dsmp-root .poc-cohort{ display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin-bottom:10px; }
.dsmp-root .poc-cohort-info{ font-size:13px;color:var(--txt); }
.dsmp-root .poc-lista{ display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:4px;max-height:280px;overflow:auto;border:1px solid var(--borda-soft);border-radius:10px;padding:6px; }
.dsmp-root .poc-mot{ display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;cursor:pointer;font-size:13px; }
.dsmp-root .poc-mot:hover{ background:var(--bg-soft); }
.dsmp-root .poc-mot.is-on{ background:#f3eefb; }
.dsmp-root .poc-mot-nome{ flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.dsmp-root .poc-mot-fil{ font-size:11px;color:var(--muted);white-space:nowrap; }
.dsmp-root .poc-freeze{ display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:12px; }
.dsmp-root .poc-per{ font-size:13px;color:var(--muted);display:flex;align-items:center;gap:5px; }
.dsmp-root .poc-marcos{ display:flex;flex-direction:column;gap:6px; }
.dsmp-root .poc-marco-row{ display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;padding:10px 12px;background:var(--card);border:1px solid var(--borda);border-radius:10px; }
.dsmp-root .poc-marco-tit{ font-size:14px; }
.dsmp-root .poc-marco-mini{ font-size:12px;color:var(--muted);white-space:nowrap; }
.dsmp-root .poc-cmp-sel{ display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin-bottom:12px;font-size:13px;color:var(--muted); }
.dsmp-root .poc-cmp-sel select{ margin-left:4px; }
.dsmp-root .poc-flat{ color:var(--muted); }
@media (max-width:640px){ .dsmp-root .poc-marco-row{ grid-template-columns:1fr auto;row-gap:6px; } .dsmp-root .poc-marco-mini{ white-space:normal; } }

/* Prova de Conceito — grade/atribuição de top driver */
.dsmp-root .poc-topbar{ display:flex;flex-wrap:wrap;gap:12px;align-items:center;font-size:13px;color:var(--muted); }
.dsmp-root .poc-topbar select{ margin-left:4px; }
.dsmp-root .poc-atrib{ display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:13px;color:var(--muted);
  margin:10px 0;padding:8px 10px;background:var(--bg-soft);border:1px solid var(--borda-soft);border-radius:10px; }
.dsmp-root .poc-mot-fil{ font-size:11px;color:var(--primary);white-space:nowrap;font-weight:500; }

/* ── Editor de meta (modal fora do .dsmp-root: estilos escopados em .meta-ed) ── */
.meta-ed { color:#1f2937; }
.meta-ed .dsv-pargrid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
@media (max-width:560px){ .meta-ed .dsv-pargrid { grid-template-columns:1fr 1fr; } }
.meta-ed .dsv-parinp { display:flex; flex-direction:column; gap:5px; font-size:12px; color:#6b7280; font-weight:600; }
.meta-ed .dsv-parinp__box { position:relative; display:flex; align-items:center; }
.meta-ed .dsv-parinp__box input { flex:1; width:100%; border:1px solid #e4e4e7; border-radius:9px; padding:9px 11px; font-size:15px; font-weight:700; color:#1f2430; background:#fff; font-variant-numeric:tabular-nums; }
.meta-ed .dsv-parinp__box input:focus { outline:none; border-color:#381D54; box-shadow:0 0 0 3px rgba(56,29,84,.12); }
.meta-ed .dsv-parinp__box i { position:absolute; right:11px; font-style:normal; font-size:12px; font-weight:700; color:#9ca3af; pointer-events:none; }
.meta-ed .meta-ed-atalho { margin-top:12px; width:100%; justify-content:center; font-weight:600;
  background:#f3eefb; border:1px solid #e2d8f2; color:#381D54; border-radius:10px; padding:10px; cursor:pointer; transition:background .15s; }
.meta-ed .meta-ed-atalho:hover { background:#e9dff7; }
.meta-ed .meta-ed-hist { margin-top:18px; }
.meta-ed .meta-ed-hist-cap { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:#9ca3af; margin-bottom:8px; }
.meta-ed .dsv-edit-row { display:flex; align-items:center; gap:10px; padding:9px 12px; background:#faf9fc; border:1px solid #eee9f5; border-radius:10px; margin-bottom:6px; }
.meta-ed .dsv-edit-row__k { flex:1; font-weight:600; color:#1f2430; font-size:13.5px; }
.meta-ed .dsv-edit-row__v { font-weight:700; color:#381D54; font-variant-numeric:tabular-nums; font-size:13.5px; }
.meta-ed .dsv-edit-del { border:none; background:transparent; cursor:pointer; font-size:15px; padding:2px 6px; border-radius:7px; opacity:.55; transition:opacity .15s, background .15s; }
.meta-ed .dsv-edit-del:hover { opacity:1; background:rgba(194,65,12,.1); }
.meta-ed .dsv-edit-vazio { font-size:13px; color:#9ca3af; padding:10px 2px; font-style:italic; }
.meta-ed .dsmp-mut { color:#9ca3af; font-size:12px; line-height:1.5; }

/* autocomplete: garantir que o input com datalist mantém o visual do app */
.dsmp-root input[list]::-webkit-calendar-picker-indicator { opacity:.4; }

/* Fechamento de competência (Premiação) */
.prm-fechar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:4px 0 12px;padding:11px 16px;
  border:1px solid #E6E2D6;border-radius:12px;background:#FBFAF5}
.prm-fechar-ok{font-weight:700;color:#0b8a3e;font-size:14px}
.prm-fechar-lb{color:#5C6A68;font-size:14px}
.prm-fechar-motivo{color:#8a5a00;background:#FFF4E0;border:1px solid #F2D89B;border-radius:8px;
  padding:5px 10px;font-size:12.5px;font-weight:600;line-height:1.35}
.prm-fechar .btn{margin-left:auto}
.prm-fechar .btn[disabled]{opacity:.5;cursor:not-allowed}
.prm-fator{display:inline-block;margin-left:5px;font-size:11px;font-weight:700;color:#8a5a00;
  background:#FFF4E0;border:1px solid #F2D89B;border-radius:6px;padding:1px 5px;cursor:help;vertical-align:middle}

/* ══════════════════════════════════════════════════════════════
   TOP DRIVER · recorte, grade read-only, atribuição redesenhada
   e sessão de Treinamentos.  (add 20260727)
   ══════════════════════════════════════════════════════════════ */
.dsmp-root .td-recorte{ color:var(--primary);font-weight:500; }

/* grade read-only do top driver (Acompanhamento) */
.dsmp-root .td-grade .td-grade-hd{ display:flex;align-items:center;gap:12px;margin-bottom:12px; }
.dsmp-root .td-grade-ico{ font-size:26px;line-height:1; }
.dsmp-root .td-grade-nome{ font-weight:var(--fw-bold,700);font-size:var(--fs-lg,18px);color:var(--txt); }
.dsmp-root .poc-lista--ro{ grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); }
.dsmp-root .poc-mot--ro{ cursor:default;background:#faf9fc;border:1px solid var(--borda-soft); }
.dsmp-root .poc-mot--ro:hover{ background:#f3eefb; }
.dsmp-root .poc-mot-ini{ width:26px;height:26px;flex:0 0 26px;border-radius:50%;background:var(--primary);color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px; }

/* atribuição redesenhada — buscar + marcar + atribuir */
.dsmp-root .poc-assign{ display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:10px; }
.dsmp-root .poc-assign #pocBusca{ flex:1 1 220px;max-width:320px; }
.dsmp-root .poc-assign-to{ display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-left:auto;
  background:var(--bg-soft);border:1px solid var(--borda-soft);border-radius:12px;padding:6px 10px; }
.dsmp-root .poc-assign-badge{ font-size:13px;color:var(--txt); }
.dsmp-root .poc-assign-badge b{ color:var(--primary); }
.dsmp-root .poc-assign-arrow{ color:var(--muted);font-weight:700; }
.dsmp-root .poc-lista--assign{ max-height:340px; }
.dsmp-root .poc-assign-foot{ margin-top:10px;font-size:13px;color:var(--muted);display:flex;gap:10px;align-items:center;flex-wrap:wrap; }
.dsmp-root .poc-assign-foot b{ color:var(--primary); }

/* ── Treinamentos ── */
.dsmp-root .trn-form{ display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end; }
.dsmp-root .trn-fld{ display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted); }
.dsmp-root .trn-fld span{ font-weight:var(--fw-semibold,600); }
.dsmp-root .trn-fld--mot{ flex:1 1 260px; }
.dsmp-root .trn-fld--mot select{ width:100%; }
.dsmp-root .trn-fld input[type=text]{ min-width:220px; }
.dsmp-root .trn-fld--data input{ }
/* aviso discreto no campo de motorista: ativo, mas sem telemetria recente */
.dsmp-root .trn-mot-dica{ font-size:11px;color:var(--warn,#b26a00);font-weight:var(--fw-semibold,600);line-height:1.3; }
.dsmp-root .trn-add{ margin-bottom:1px; }

/* Candidato em teste — mesma caixa do app, adaptada à largura do desktop. */
.dsmp-root .trn-teste-wrap{ margin-top:14px;padding-top:14px;border-top:1px dashed var(--borda-soft); }
.dsmp-root .trn-teste__abrir{ border:1px dashed var(--borda-soft);background:transparent;border-radius:var(--radius);
  padding:9px 13px;font-size:var(--fs-sm);color:var(--muted);cursor:pointer;font-weight:var(--fw-semibold,600); }
.dsmp-root .trn-teste__abrir:hover{ border-color:var(--primary);color:var(--primary); }
.dsmp-root .trn-teste{ margin-top:12px;background:var(--bg-soft);border:1px solid var(--borda-soft);
  border-radius:var(--radius-lg);padding:14px;display:flex;flex-direction:column;gap:10px; }
.dsmp-root .trn-teste[hidden]{ display:none; }
.dsmp-root .trn-teste__t{ font-weight:var(--fw-bold);font-size:13.5px;color:var(--primary); }
.dsmp-root .trn-teste__f{ display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end; }
.dsmp-root .trn-teste__s{ font-size:11.5px;color:var(--muted);line-height:1.4;max-width:640px; }

/* ── Controle de relatórios de treinamento ── */
.dsmp-root .trn-ctrl-filtros{ display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin-bottom:14px; }
.dsmp-root .trn-ctrl-resumo{ display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px; }
.dsmp-root .trn-ctrl-card{ flex:1 1 150px;min-width:130px;background:var(--bg-soft);border:1px solid var(--borda-soft);border-radius:var(--radius-lg);padding:12px 14px;display:flex;flex-direction:column;gap:2px; }
.dsmp-root .trn-ctrl-card .n{ font-size:22px;font-weight:var(--fw-bold);color:var(--txt);line-height:1.1; }
.dsmp-root .trn-ctrl-card .l{ font-size:var(--fs-sm);color:var(--muted); }
.dsmp-root .trn-ctrl-card.is-warn{ border-color:var(--warn,#c2410c); }
.dsmp-root .trn-ctrl-card.is-warn .n{ color:var(--warn,#c2410c); }
.dsmp-root .trn-ctrl-scroll{ overflow:auto;max-height:60vh;border-radius:var(--radius); }
.dsmp-root .trn-ctrl-tab thead th{ position:sticky;top:0;z-index:1; }
.dsmp-root .trn-ctrl-tab td{ font-size:var(--fs-sm);vertical-align:top; }
.dsmp-root .trn-parecer{ max-width:280px;white-space:normal;color:var(--sub); }
.dsmp-root .trn-av{ display:inline-block;padding:2px 8px;border-radius:99px;font-size:var(--fs-xs);font-weight:var(--fw-semibold,600);white-space:nowrap; }
.dsmp-root .trn-av-ok{ background:var(--ok-soft,#e6f4ea);color:var(--ok,#0b8a3e); }
.dsmp-root .trn-av-mid{ background:var(--info-soft,#e8eefb);color:var(--primary); }
.dsmp-root .trn-av-bad{ background:#fbe9e7;color:#c2410c; }
.dsmp-root .gt-bar{ display:inline-block;vertical-align:middle;width:90px;height:8px;background:var(--bg-soft);border:1px solid var(--borda-soft);border-radius:99px;overflow:hidden;margin-right:8px; }
.dsmp-root .gt-bar i{ display:block;height:100%;background:linear-gradient(90deg,var(--primary),var(--accent));border-radius:99px; }
.dsmp-root .gt-barn{ font-weight:var(--fw-semibold,600);color:var(--txt); }
.dsmp-root .trn-ctrl-card.is-ok{ border-color:#0b8a3e; }
.dsmp-root .trn-ctrl-card.is-ok .n{ color:#0b8a3e; }
/* abas do Gestor de Treinamentos */
.dsmp-root .gt-tabs{ display:flex;gap:8px;margin:6px 0 14px; }
.dsmp-root .gt-tabs button{ border:1px solid var(--borda-soft);background:var(--bg-soft);color:var(--muted);
  font-family:inherit;font-weight:600;font-size:var(--fs-sm);padding:7px 16px;border-radius:99px;cursor:pointer; }
.dsmp-root .gt-tabs button.is-on{ background:var(--primary);color:#fff;border-color:var(--primary); }
/* treinamentos por semana */
.dsmp-root .gt-sem{ display:flex;align-items:flex-end;gap:10px;height:150px;padding:14px 8px 0; }
.dsmp-root .gt-sem-col{ flex:1 1 0;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end; }
.dsmp-root .gt-sem-bar{ width:100%;max-width:44px;min-height:8px;background:linear-gradient(180deg,var(--primary),var(--accent));
  border-radius:8px 8px 0 0;position:relative;display:flex;align-items:flex-start;justify-content:center; }
.dsmp-root .gt-sem-bar span{ position:absolute;top:-18px;font-size:12px;font-weight:700;color:var(--txt); }
.dsmp-root .gt-sem-lb{ font-size:11px;color:var(--muted);white-space:nowrap; }

.dsmp-root .trn-grp{ margin-bottom:18px; }
.dsmp-root .trn-grp-hd{ font-weight:var(--fw-semibold,600);color:var(--txt);font-size:var(--fs-base);
  margin-bottom:10px;display:flex;align-items:center;gap:8px; }
.dsmp-root .trn-grp-n{ background:var(--neutral-bg);color:var(--neutral);border-radius:20px;
  font-size:11px;font-weight:700;padding:2px 8px; }

.dsmp-root .trn-card{ border:1px solid var(--borda-soft);border-radius:14px;padding:14px 16px;margin-bottom:10px;background:#fff; }
.dsmp-root .trn-card--em_andamento{ border-color:#c4b5fd;box-shadow:0 0 0 1px #ede9fe inset; }
.dsmp-root .trn-card-hd{ display:flex;justify-content:space-between;align-items:flex-start;gap:12px; }
.dsmp-root .trn-card-nome{ font-weight:var(--fw-bold,700);color:var(--txt);font-size:15px; }
.dsmp-root .trn-card-sub{ font-size:12.5px;color:var(--muted);margin-top:2px; }
.dsmp-root .trn-card-when{ font-size:12px;color:var(--muted);margin-top:6px; }
.dsmp-root .trn-badge{ font-size:11px;font-weight:700;letter-spacing:.03em;padding:4px 10px;border-radius:20px;white-space:nowrap; }
.dsmp-root .trn-bg-live{ background:#ede9fe;color:#6d28d9; }
.dsmp-root .trn-bg-wait{ background:var(--warn-bg);color:var(--warn); }
.dsmp-root .trn-bg-done{ background:var(--ok-bg);color:var(--ok); }

.dsmp-root .trn-comp{ margin-top:12px;border-top:1px dashed var(--borda-soft);padding-top:10px; }
.dsmp-root .trn-comp-hd{ display:flex;justify-content:space-between;font-size:11px;color:var(--muted);
  text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px; }
.dsmp-root .trn-mxs{ display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px; }
.dsmp-root .trn-mx{ background:var(--bg-soft);border-radius:10px;padding:8px 10px; }
.dsmp-root .trn-mx-lb{ font-size:11px;color:var(--muted);margin-bottom:3px; }
.dsmp-root .trn-mx-vl{ font-size:14px;font-weight:600;color:var(--txt);display:flex;align-items:center;gap:6px;flex-wrap:wrap; }
.dsmp-root .trn-mx-a{ color:var(--muted); }
.dsmp-root .trn-mx-arr{ color:var(--muted);font-weight:400; }
.dsmp-root .trn-mx-b{ color:var(--txt); }
.dsmp-root .trn-up{ color:#0b8a3e;font-weight:700;font-size:12.5px; }
.dsmp-root .trn-down{ color:#c2410c;font-weight:700;font-size:12.5px; }
.dsmp-root .trn-flat{ color:var(--muted);font-weight:700; }
.dsmp-root .trn-comp-note{ margin-top:8px;font-size:12px; }
.dsmp-root .trn-card-acoes{ margin-top:12px;display:flex;gap:8px;flex-wrap:wrap; }

/* Carimbo discreto de última sincronização com a Sascar (add 20260728) */
.dsmp-root .dsmp-sync{ white-space:nowrap; }
.dsmp-root .dsmp-sync b{ font-weight:600; color:var(--txt); }
.dsmp-root .dsmp-sync--velho{ color:var(--warn); }
.dsmp-root .dsmp-sync--velho b{ color:var(--warn); }

/* Destaque de rodagem muito baixa no ranking (nota com amostra fraca) — add 20260728 */
.dsmp-root .cmp-kmbaixo{ color:var(--warn); font-weight:600; white-space:nowrap; }

/* relatório do instrutor no card de treinamento (paridade com o app) */
.dsmp-root .trn-rel{ margin-top:9px;padding-top:9px;border-top:1px dashed var(--borda-soft);display:flex;flex-direction:column;gap:5px; }
.dsmp-root .trn-rel-i{ font-size:12.5px;line-height:1.45;color:var(--txt); }
.dsmp-root .trn-rel-i b{ font-weight:700;color:var(--muted); }
.dsmp-root .trn-rel-i--mut{ color:var(--muted);font-size:12px; }

/* ── Calibração da nota de segurança (Parâmetros) ───────────── */
.dsmp-root .dsv-parinp select{ border:1px solid var(--borda,#e2e6e5);border-radius:9px;padding:9px 11px;font-size:15px;font-weight:700;color:#1a2b28;background:#fff; }
.dsmp-root .dsv-parinp select:focus{ outline:none;border-color:var(--verde-900,#1d3b3a); }
.dsmp-root .dsv-cal-acao{ display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px; }
.dsmp-root .dsv-cal-acao .dsmp-mut{ font-size:12.5px;flex:1 1 260px; }
.dsmp-root .dsv-cal-out:not(:empty){ margin-top:12px;padding-top:12px;border-top:1px dashed var(--borda,#e2e6e5); }
.dsmp-root .dsv-cal-aviso{ background:#fdf3e3;border:1px solid #e8c98a;border-radius:10px;padding:10px 12px;font-size:13px;color:#7a4b10;font-weight:600;margin-bottom:12px; }

/* ── Recorte vazio no Comparativo / dia em andamento ────────── */
.dsmp-root .cmp-vazio{ display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#fdf3e3;border:1px solid #e8c98a;border-radius:12px;padding:12px 14px;margin-bottom:14px; }
.dsmp-root .cmp-vazio b{ font-size:14px;color:#7a4b10; }
.dsmp-root .cmp-vazio span{ font-size:12.5px;color:#8a6230;flex:1 1 280px; }
.dsmp-root .dsmp-sync-parc{ color:#0e7490;font-weight:700; }

/* ── Veículo em uso no treino em andamento (desktop) ────────── */
.dsmp-root .trn-veic{ display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:8px;padding:8px 11px;border-radius:10px;background:#eef6f8;border:1px solid #cfe4ea; }
.dsmp-root .trn-veic-lbl{ font-size:11px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:#0e7490; }
.dsmp-root .trn-veic-i{ font-size:12.5px;color:#0e5f70; }
.dsmp-root .trn-veic-i b{ font-variant-numeric:tabular-nums;letter-spacing:.4px;font-size:13.5px; }
.dsmp-root .trn-veic--vazio{ background:#f6f6f4;border-color:#e4e4e0; }
.dsmp-root .trn-veic--vazio .trn-veic-lbl,.dsmp-root .trn-veic--vazio .trn-veic-i{ color:var(--muted,#6b7280); }
.dsmp-root .trn-veic-dif{ color:#8a5a00; }
.dsmp-root .trn-veic-ed{ margin-left:auto;border:0;background:none;padding:0 2px;font-size:12.5px;font-weight:700;color:#0e7490;text-decoration:underline;cursor:pointer; }

/* ── Agendamentos: filtros, motivo de cancelamento e status ─── */
.dsmp-root .trn-filtros{ margin-bottom:12px; }
.dsmp-root .trn-motivo{ margin-top:8px;padding:8px 11px;border-radius:10px;font-size:12.5px;background:#fbf3dd;border:1px solid #e8d9a8;color:#7a5a10; }
.dsmp-root .trn-motivo--canc{ background:#fbeae3;border-color:#ebc7b6;color:#9a3412; }
.dsmp-root .trn-bg-canc{ background:#fbeae3;color:#9a3412; }
.dsmp-root .trn-card--cancelado{ opacity:.82; }

/* ══════════════════════════════════════════════════════════════
   VISÃO GERAL ESTRATÉGICA
   Combo distância × média, roscas com tabela de filiais e o
   filtro cruzado dentro do próprio card.
   ══════════════════════════════════════════════════════════════ */
.dsmp-root .dsv-panel__h--acao{ display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap; }
.dsmp-root .dsv-gran{ display:inline-flex;border:1px solid var(--borda,#e2e6e5);border-radius:999px;overflow:hidden;background:#fff;flex:none; }
.dsmp-root .dsv-gran button{ border:0;background:none;cursor:pointer;padding:6px 15px;font:700 12.5px var(--font-ui);color:#5a6a67;transition:.15s; }
.dsmp-root .dsv-gran button + button{ border-left:1px solid var(--borda,#e2e6e5); }
.dsmp-root .dsv-gran button:hover{ background:#f2f5f4; }
.dsmp-root .dsv-gran button.is-on{ background:var(--primary);color:#fff; }
.dsmp-root .dsv-vgscroll,.fb-drawer .dsv-vgscroll{ overflow-x:auto;padding-bottom:6px; }
.dsmp-root .dsv-vghov,.fb-drawer .dsv-vghov{ fill:transparent; }
.dsmp-root .dsv-vghov:hover,.fb-drawer .dsv-vghov:hover{ fill:#0b556010; }

.dsmp-root .dsv-vgt-wrap{ margin-top:12px;overflow-x:auto;border-top:1px solid var(--borda,#e2e6e5);padding-top:10px; }
.dsmp-root .dsv-vgt{ width:100%;border-collapse:collapse;font:500 12.5px var(--font-ui);font-variant-numeric:tabular-nums; }
.dsmp-root .dsv-vgt th,.dsmp-root .dsv-vgt td{ padding:6px 9px;white-space:nowrap; }
.dsmp-root .dsv-vgt thead th{ color:#8a9096;font-weight:700;font-size:11.5px;border-bottom:1px solid var(--borda,#e2e6e5); }
.dsmp-root .dsv-vgt tbody tr + tr td{ border-top:1px dashed #eef1f0; }
.dsmp-root .dsv-vgt .num{ text-align:right; }
.dsmp-root .dsv-vgt__nm{ position:sticky;left:0;background:#fff;text-align:left;font-weight:700;color:#1a2b28;z-index:1; }
.dsmp-root .dsv-vgt__nm i{ display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:7px;vertical-align:middle; }

/* Rosca e tabela lado a lado só cabem com o card largo. Em dois por linha,
   a tabela ficava com 240px e os números saíam da tela: abaixo de 1500px os
   dois cards passam a ocupar a linha inteira, um embaixo do outro. */
.dsmp-root .dsv-grid2--vg{ grid-template-columns:1fr; }
@media (min-width:1500px){ .dsmp-root .dsv-grid2--vg{ grid-template-columns:1fr 1fr; } }
.dsmp-root .dsv-vgcard{ display:grid;grid-template-columns:minmax(220px,280px) minmax(0,1fr);gap:22px;align-items:start; }
@media (max-width:760px){ .dsmp-root .dsv-vgcard{ grid-template-columns:1fr; } }
.dsmp-root .dsv-vgrosca{ display:flex;flex-direction:column;align-items:center;gap:10px; }
.dsmp-root .dsv-vgfat{ cursor:pointer;transition:opacity .15s,transform .15s;transform-origin:100px 100px; }
.dsmp-root .dsv-vgfat:hover{ transform:scale(1.03); }
.dsmp-root .dsv-vgfat.is-dim{ opacity:.28; }
.dsmp-root .dsv-vgleg{ display:flex;flex-direction:column;gap:3px;width:100%; }
.dsmp-root .dsv-vgleg-i{ display:flex;align-items:center;gap:8px;width:100%;border:0;background:none;cursor:pointer;padding:5px 8px;border-radius:8px;font:500 12.5px var(--font-ui);color:#3c4c49;text-align:left; }
.dsmp-root .dsv-vgleg-i:hover{ background:#f2f5f4; }
.dsmp-root .dsv-vgleg-i.is-on{ background:#e9f2ef;font-weight:700; }
.dsmp-root .dsv-vgleg-i i{ width:10px;height:10px;border-radius:3px;flex:none; }
.dsmp-root .dsv-vgleg-i span{ flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.dsmp-root .dsv-vgleg-i b{ font-variant-numeric:tabular-nums; }
.dsmp-root .dsv-vgleg-i small{ color:#8a9096;width:34px;text-align:right;font-variant-numeric:tabular-nums; }

.dsmp-root .dsv-vgfil{ min-width:0;display:flex;flex-direction:column; }
/* sete linhas visíveis e o resto rola: com vinte filiais a tabela esticava o
   card e empurrava o gráfico da linha de cima */
.dsmp-root .dsv-vgfil-rol{ max-height:298px;overflow-y:auto;overflow-x:hidden;border-bottom:1px solid var(--borda,#e2e6e5); }
.dsmp-root .dsv-vgfil-rol::-webkit-scrollbar{ width:8px; }
.dsmp-root .dsv-vgfil-rol::-webkit-scrollbar-thumb{ background:#cfd6d4;border-radius:8px; }
.dsmp-root .dsv-vgfil-pe{ display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:8px;min-height:18px;font-size:12px; }
.dsmp-root .dsv-vgfilt{ width:100%;border-collapse:collapse;font:500 12.5px var(--font-ui);font-variant-numeric:tabular-nums;table-layout:fixed; }
.dsmp-root .dsv-vgfilt th:first-child,.dsmp-root .dsv-vgfilt td:first-child{ width:54%; }
.dsmp-root .dsv-vgfilt th:nth-child(2),.dsmp-root .dsv-vgfilt td:nth-child(2){ width:28%; }
.dsmp-root .dsv-vgfilt th:nth-child(3),.dsmp-root .dsv-vgfilt td:nth-child(3){ width:18%; }
/* Nome de filial é longo ("SÃO PAULO - CORREIOS"). Quebra por PALAVRA: com
   overflow-wrap anywhere e a coluna estreita, o nome virava uma letra por
   linha, na vertical. */
.dsmp-root .dsv-vgfilt td:first-child{ white-space:normal;word-break:normal;overflow-wrap:break-word;line-height:1.22;padding-right:6px; }

.dsmp-root .dsv-vgfilt th{ position:sticky;top:0;z-index:2;background:#fff;text-align:left;color:#8a9096;font-weight:700;font-size:11px;padding:6px 9px;border-bottom:1px solid var(--borda,#e2e6e5);white-space:nowrap; }
.dsmp-root .dsv-vgfilt th.num,.dsmp-root .dsv-vgfilt td.num{ text-align:right; }
.dsmp-root .dsv-vgfilt td{ padding:7px 9px;border-top:1px dashed #eef1f0;position:relative; }
.dsmp-root .dsv-vgfil-r{ cursor:pointer;transition:background .15s; }
.dsmp-root .dsv-vgfil-r:hover{ background:#f6f8f7; }
.dsmp-root .dsv-vgfil-r.is-on{ background:#e9f2ef; }
.dsmp-root .dsv-vgfil-r.is-on td{ font-weight:700; }
.dsmp-root .dsv-vgbar{ position:absolute;left:6px;right:auto;top:50%;transform:translateY(-50%);height:18px;background:var(--primary);opacity:.12;border-radius:4px;pointer-events:none;max-width:calc(100% - 12px); }
.dsmp-root .dsv-vgfilt td.num b{ position:relative;z-index:1; }
.dsmp-root .dsv-vglimpar{ margin-left:auto;border:0;background:none;padding:0;font:700 12.5px var(--font-ui);color:var(--primary);text-decoration:underline;text-underline-offset:2px;cursor:pointer; }

/* ── Visão Geral · filtro cruzado, setas da série e drawer do intervalo ── */
.dsmp-root .dsv-xchips{ display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:-4px 0 14px; }
.dsmp-root .dsv-xchips-lbl{ font:700 11px var(--font-ui);letter-spacing:.5px;text-transform:uppercase;color:#8a9096; }
.dsmp-root .dsv-xchip{ display:inline-flex;align-items:center;gap:7px;border:1px solid var(--primary);background:#e9f2ef;color:var(--primary);border-radius:999px;padding:4px 10px 4px 12px;font:700 12.5px var(--font-ui);cursor:pointer; }
.dsmp-root .dsv-xchip i{ font-style:normal;font-size:11px;opacity:.65; }
.dsmp-root .dsv-xchip:hover i{ opacity:1; }
.dsmp-root .dsv-xlimpar{ border:0;background:none;padding:0 2px;font:700 12.5px var(--font-ui);color:var(--primary);text-decoration:underline;text-underline-offset:2px;cursor:pointer; }

.dsmp-root .dsv-vgseta{ margin-left:5px;font-size:11px;cursor:default;position:relative; }
.dsmp-root .dsv-vgseta.is-up{ color:#0b8a3e; }
.dsmp-root .dsv-vgseta.is-down{ color:#c2410c; }
.dsmp-root .dsv-vgseta.is-flat{ color:#9ca3af; }
.dsmp-root .dsv-vgseta::after{
  content:attr(data-var);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%) translateY(4px);
  background:#1a2b28;color:#fff;padding:6px 10px;border-radius:8px;font:600 11.5px var(--font-ui);white-space:nowrap;
  opacity:0;pointer-events:none;transition:.16s var(--ease-out,cubic-bezier(.16,1,.3,1));box-shadow:0 6px 18px rgba(0,0,0,.22);z-index:5; }
.dsmp-root .dsv-vgseta::before{
  content:"";position:absolute;bottom:calc(100% + 3px);left:50%;transform:translateX(-50%) translateY(4px);
  border:5px solid transparent;border-top-color:#1a2b28;opacity:0;pointer-events:none;transition:.16s;z-index:5; }
.dsmp-root .dsv-vgseta:hover::after,.dsmp-root .dsv-vgseta:hover::before{ opacity:1;transform:translateX(-50%) translateY(0); }

.dsmp-root .dsv-vghov,.fb-drawer .dsv-vghov{ cursor:pointer; }
.dsmp-root .dsv-vgdw-linha,.fb-drawer .dsv-vgdw-linha{ background:#f4f7f6;border-radius:10px;padding:11px 14px;font-size:13.5px;color:#3c4c49;margin-bottom:16px; }
.dsmp-root .dsv-vgdw-sec,.fb-drawer .dsv-vgdw-sec{ font:700 11.5px var(--font-ui);letter-spacing:.6px;text-transform:uppercase;color:#8a9096;margin:0 0 8px; }
.dsmp-root .dsv-vgdw-tab,.fb-drawer .dsv-vgdw-tab{ margin-bottom:20px; }
.dsmp-root .dsv-vgdw-tab th,.fb-drawer .dsv-vgdw-tab th{ position:static; }
.dsmp-root .dsv-vgdw-g2,.fb-drawer .dsv-vgdw-g2{ display:grid;grid-template-columns:1fr 1fr;gap:20px; }
@media (max-width:760px){ .dsmp-root .dsv-vgdw-g2,.fb-drawer .dsv-vgdw-g2{ grid-template-columns:1fr; } }
.dsmp-root .dsv-vgext-i,.fb-drawer .dsv-vgext-i{ display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:8px 0;border-bottom:1px dashed #eef1f0; }
.dsmp-root .dsv-vgext-n,.fb-drawer .dsv-vgext-n{ font:700 13px var(--font-ui);color:#1a2b28;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.dsmp-root .dsv-vgext-f,.fb-drawer .dsv-vgext-f{ grid-column:1;font-size:11.5px;color:#8a9096; }
.dsmp-root .dsv-vgext-i b,.fb-drawer .dsv-vgext-i b{ grid-row:1/3;align-self:center;font-size:16px;font-variant-numeric:tabular-nums; }

/* ── Multi-select: rodapé com contador e Aplicar ────────────── */
.dsmp-root .dsmp-ms-rodape,.fb-drawer .dsmp-ms-rodape{ display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;border-top:1px solid var(--borda,#e2e6e5);background:#fafbfa; }
.dsmp-root .dsmp-ms-conta,.fb-drawer .dsmp-ms-conta{ font:600 12px var(--font-ui);color:#8a9096; }
.dsmp-root .dsmp-ms-aplicar,.fb-drawer .dsmp-ms-aplicar{ border:0;background:var(--primary);color:#fff;border-radius:8px;padding:7px 18px;font:700 12.5px var(--font-ui);cursor:pointer;transition:.15s; }
.dsmp-root .dsmp-ms-aplicar:hover,.fb-drawer .dsmp-ms-aplicar:hover{ filter:brightness(1.1); }
.dsmp-root .dsv-vgdw,.fb-drawer .dsv-vgdw{ padding:2px 0 8px; }
.dsmp-root .dsv-vgext,.fb-drawer .dsv-vgext{ display:flex;flex-direction:column; }

/* ── Tabela da casa (drawer do intervalo) ───────────────────── */
.dsmp-root .dsv-tc-wrap,.fb-drawer .dsv-tc-wrap{ overflow:auto;border:1px solid var(--borda,#e2e6e5);border-radius:12px;background:#fff; }
.dsmp-root .dsv-tc,.fb-drawer .dsv-tc{ width:100%;border-collapse:collapse;font:500 13px var(--font-ui);font-variant-numeric:tabular-nums; }
.dsmp-root .dsv-tc thead th,.fb-drawer .dsv-tc thead th{
  position:sticky;top:0;z-index:2;background:#f7f9f8;text-align:left;cursor:pointer;user-select:none;
  font:700 10.5px var(--font-ui);letter-spacing:.7px;text-transform:uppercase;color:#8a9096;
  padding:10px 12px;border-bottom:1px solid var(--borda,#e2e6e5);white-space:nowrap; }
.dsmp-root .dsv-tc thead th:hover,.fb-drawer .dsv-tc thead th:hover{ color:var(--primary); }
.dsmp-root .dsv-tc thead th.is-ord,.fb-drawer .dsv-tc thead th.is-ord{ color:var(--primary); }
.dsmp-root .dsv-tc thead th i,.fb-drawer .dsv-tc thead th i{ font-style:normal;margin-left:4px;font-size:9px; }
.dsmp-root .dsv-tc th.num,.fb-drawer .dsv-tc th.num,.dsmp-root .dsv-tc td.num,.fb-drawer .dsv-tc td.num{ text-align:right; }
.dsmp-root .dsv-tc td,.fb-drawer .dsv-tc td{ padding:9px 12px;border-top:1px solid #f1f4f3;position:relative;vertical-align:middle; }
.dsmp-root .dsv-tc tbody tr:hover td,.fb-drawer .dsv-tc tbody tr:hover td{ background:#f7faf9; }
.dsmp-root .dsv-tc-n,.fb-drawer .dsv-tc-n{ display:block;font-weight:700;color:#1a2b28;line-height:1.25; }
.dsmp-root .dsv-tc-s,.fb-drawer .dsv-tc-s{ display:block;font-size:11px;color:#8a9096;margin-top:1px; }
.dsmp-root .dsv-tc-bar,.fb-drawer .dsv-tc-bar{ position:absolute;right:8px;top:50%;transform:translateY(-50%);height:21px;border-radius:5px;background:var(--primary);opacity:.2;pointer-events:none;max-width:calc(100% - 16px); }
.dsmp-root .dsv-tc td.num b,.fb-drawer .dsv-tc td.num b{ position:relative;z-index:1;font-size:13.5px; }
.dsmp-root .dsv-tc-pe,.fb-drawer .dsv-tc-pe{ padding:8px 2px 0;font:500 11.5px var(--font-ui);color:#8a9096; }

/* ══════════════════════════════════════════════════════════════
   FAROL DE ATINGIMENTO
   Um ponto por motorista por dia, colorido pelo atingimento da
   meta de média daquele dia. O acendimento em cascata só roda na
   primeira pintura e ao entrar/sair da tela cheia: repetir a cada
   letra digitada na busca vira ruído.
   ══════════════════════════════════════════════════════════════ */
.dsmp-root .dsv-fr{ display:flex;flex-direction:column;gap:12px; }
.dsmp-root .dsv-fr-acoes{ display:flex;align-items:center;gap:8px; }
.dsmp-root .dsv-fr-btn{ border:1px solid var(--borda,#e2e6e5);background:#fff;border-radius:999px;padding:6px 15px;font:700 12.5px var(--font-ui);color:#5a6a67;cursor:pointer;transition:.15s;white-space:nowrap; }
.dsmp-root .dsv-fr-btn:hover{ border-color:var(--primary);color:var(--primary);background:#f2f7f5; }

.dsmp-root .dsv-fr-top{ display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap; }
.dsmp-root .dsv-fr-leg{ display:flex;gap:8px;flex-wrap:wrap; }
.dsmp-root .dsv-fr-chip{ display:inline-flex;align-items:center;gap:7px;border:1px solid var(--borda,#e2e6e5);background:#fff;border-radius:999px;padding:5px 12px;font:600 12.5px var(--font-ui);color:#3c4c49;cursor:pointer;transition:.15s; }
.dsmp-root .dsv-fr-chip i{ width:10px;height:10px;border-radius:50%;flex:none; }
.dsmp-root .dsv-fr-chip b{ font-variant-numeric:tabular-nums;color:#8a9096; }
.dsmp-root .dsv-fr-chip:hover{ border-color:#c3cecb;background:#f7faf9; }
.dsmp-root .dsv-fr-chip.is-on{ border-color:var(--primary);background:#e9f2ef; }
.dsmp-root .dsv-fr-chip.is-on b{ color:var(--primary); }
/* legenda apagada: a cor sai do farol e o chip fica com a bolinha vazia, do
   mesmo jeito que a bolinha da grade fica */
.dsmp-root .dsv-fr-chip.is-apagado{ color:#a3adaa;background:#fafbfa; }
.dsmp-root .dsv-fr-chip.is-apagado i{ background:transparent !important;box-shadow:inset 0 0 0 1.5px #cfd6d4; }
.dsmp-root .dsv-fr-chip.is-apagado b{ color:#b6bebc; }
/* "sem rodagem" não é botão: já é a luz apagada, não há o que apagar */
.dsmp-root .dsv-fr-chip.is-fixo{ cursor:default;background:#fafbfa;color:#8a9096; }
.dsmp-root .dsv-fr-chip.is-fixo:hover{ border-color:var(--borda,#e2e6e5);background:#fafbfa; }
.dsmp-root .dsv-fr-busca{ flex:0 1 260px;min-width:150px; }
/* A busca cabe NA LINHA dos filtros. Com base 280 e piso 190 ela
   nao conseguia encolher o bastante e quebrava para uma linha so
   dela, gastando altura para nada. Os seletores tambem passam a
   encolher, e o wrap continua valendo como ultimo recurso. */
.dsmp-root .dsv-fr-filtros .dsv-fr-ms{ min-width:140px; }

.dsmp-root .dsv-fr-wrap{ overflow:auto;border:1px solid var(--borda,#e2e6e5);border-radius:12px;background:#fff;max-height:520px; }
.dsmp-root .dsv-fr-wrap::-webkit-scrollbar{ width:9px;height:9px; }
.dsmp-root .dsv-fr-wrap::-webkit-scrollbar-thumb{ background:#cfd6d4;border-radius:8px; }
/* separate + border-spacing 0: com border-collapse a coluna fixa perde a
   borda ao rolar, porque a borda pertence à célula que saiu da tela */
.dsmp-root .dsv-fr-tab{ width:100%;border-collapse:separate;border-spacing:0;font:500 13px var(--font-ui);font-variant-numeric:tabular-nums; }
.dsmp-root .dsv-fr-tab thead th{ position:sticky;top:0;z-index:3;background:#f7f9f8;text-align:left;padding:8px 6px;border-bottom:1px solid var(--borda,#e2e6e5);font:700 10.5px var(--font-ui);letter-spacing:.6px;text-transform:uppercase;color:#8a9096;white-space:nowrap;cursor:pointer;user-select:none; }
.dsmp-root .dsv-fr-tab thead th:hover{ color:var(--primary); }
.dsmp-root .dsv-fr-tab thead th.is-ord{ color:var(--primary); }
.dsmp-root .dsv-fr-tab thead th i{ font-style:normal;margin-left:3px;font-size:9px; }
.dsmp-root .dsv-fr-tab th.num,.dsmp-root .dsv-fr-tab td.num{ text-align:right;padding-right:10px; }
.dsmp-root .dsv-fr-tab td{ padding:4px 6px;border-top:1px solid #f1f4f3; }
.dsmp-root .dsv-fr-tab td.num b{ font-size:12px; }
.dsmp-root .dsv-fr-tab tbody tr:hover td{ background:#f7faf9; }

.dsmp-root .dsv-fr-nm{ position:sticky;left:0;z-index:2;background:#fff;text-align:left;width:238px;min-width:238px;max-width:238px;padding-left:14px;box-shadow:1px 0 0 #eef1f0; }
/* nome numa linha só: quebrando em duas, doze linhas passavam de 700px e a
   grade virava um bloco alto demais para a última seção da tela */
.dsmp-root .dsv-fr-nm .dsv-tc-n,.dsmp-root .dsv-fr-nm .dsv-tc-s{ white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.dsmp-root .dsv-fr-nm .dsv-tc-n{ font-size:12.5px; }
.dsmp-root .dsv-fr-nm .dsv-tc-s{ font-size:10.5px; }
.dsmp-root td.dsv-fr-nm[data-nm]{ cursor:pointer; }
.dsmp-root td.dsv-fr-nm[data-nm]:hover .dsv-tc-n{ color:var(--primary);text-decoration:underline;text-underline-offset:2px; }
/* totais fixos na direita: com trinta dias a grade rola na horizontal e o km,
   a média e o atingimento precisam ficar sempre à vista */
.dsmp-root .dsv-fr-t{ position:sticky;z-index:2;background:#fff; }
.dsmp-root .dsv-fr-t1{ right:var(--fr-t1,128px);box-shadow:-1px 0 0 #eef1f0;width:76px;min-width:76px; }
.dsmp-root .dsv-fr-t2{ right:var(--fr-t2,62px);width:66px;min-width:66px; }
.dsmp-root .dsv-fr-t3{ right:0;width:62px;min-width:62px; }
.dsmp-root .dsv-fr-tab thead th.dsv-fr-t{ z-index:4;background:#f7f9f8; }
.dsmp-root .dsv-fr-tab tbody tr:hover td.dsv-fr-t{ background:#f7faf9; }
.dsmp-root .dsv-fr-c.is-fds{ background:#fafbfb; }
.dsmp-root .dsv-fr-tab thead th.dsv-fr-nm{ z-index:4;background:#f7f9f8; }
.dsmp-root .dsv-fr-tab tbody tr:hover td.dsv-fr-nm{ background:#f7faf9; }

.dsmp-root .dsv-fr-tab th.dsv-fr-d{ width:27px;text-align:center;padding:7px 1px 8px;line-height:1.15;cursor:default; }
.dsmp-root .dsv-fr-tab th.dsv-fr-d[data-dia]{ cursor:pointer; }
.dsmp-root .dsv-fr-tab th.dsv-fr-d[data-dia]:hover{ background:#eef3f1; }
.dsmp-root .dsv-fr-tab th.dsv-fr-d[data-dia]:hover span{ color:var(--primary); }
.dsmp-root .dsv-fr-d span{ display:block;font-size:10.5px;color:#3c4c49;letter-spacing:0; }
.dsmp-root .dsv-fr-d small{ display:block;font-size:8px;font-weight:600;color:#c0c7c5; }
.dsmp-root .dsv-fr-tab th.dsv-fr-d.is-fds{ background:#f1f5f4; }

.dsmp-root .dsv-fr-c{ text-align:center;padding:3px 1px; }
.dsmp-root .dsv-fr-c i{ display:block;width:12px;height:12px;border-radius:50%;margin:0 auto;background:#dfe4e2;transition:transform .16s var(--ease-out,cubic-bezier(.16,1,.3,1)),box-shadow .16s; }
.dsmp-root .dsv-fr-c.is-ok i{ background:#1E9E57;box-shadow:0 0 0 2px rgba(30,158,87,.14); }
.dsmp-root .dsv-fr-c.is-perto i{ background:#E9B949;box-shadow:0 0 0 2px rgba(233,185,73,.18); }
.dsmp-root .dsv-fr-c.is-baixo i{ background:#DB5A4B;box-shadow:0 0 0 2px rgba(219,90,75,.15); }
/* dia sem rodagem: farol apagado, menor e sem halo, para não competir com
   quem rodou */
.dsmp-root .dsv-fr-c.is-off i{ width:6px;height:6px;background:#e4e9e8;box-shadow:none; }
/* luz apagada pela legenda: a lâmpada continua ali, só não acesa. Fica o anel
   vazio, que não se confunde com o ponto cheio e miúdo de "sem rodagem" */
.dsmp-root .dsv-fr-c.is-mudo i{ background:transparent;box-shadow:inset 0 0 0 1.5px #dde3e1; }
.dsmp-root .dsv-fr-c.is-mudo[data-d]:hover i{ box-shadow:inset 0 0 0 1.5px #b9c2bf; }
.dsmp-root .dsv-fr-c[data-d]{ cursor:pointer; }
.dsmp-root .dsv-fr-c[data-d]:hover i{ transform:scale(1.45); }

/* acendimento: a bolinha entra pequena e apagada e "acende" em cascata pela
   linha. `scale` (propriedade própria) e não `transform`, senão a animação
   com fill forwards trava o transform do hover */
.dsmp-root .dsv-fr.is-acende .dsv-fr-c i{ opacity:0;scale:.5;animation:dsvFarolAcende .44s var(--ease-out,cubic-bezier(.16,1,.3,1)) forwards; }
@keyframes dsvFarolAcende{ from{ opacity:0;scale:.5; } 60%{ opacity:1; } to{ opacity:1;scale:1; } }

.dsmp-root .dsv-fr-pe{ display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:2px; }

/* Tela cheia: o painel sai do fluxo e ocupa a janela. Fica abaixo do drawer
   (--z-drawer), senão o detalhe do dia abriria por trás do farol. */
.dsmp-root .dsv-fr.is-cheia{ position:fixed;inset:0;z-index:8000;background:#fff;padding:18px 24px 14px;gap:14px;overflow:hidden;animation:dsvFarolCheia .3s var(--ease-out,cubic-bezier(.16,1,.3,1)); }
.dsmp-root .dsv-fr.is-cheia .dsv-fr-wrap{ max-height:none;flex:1 1 auto;min-height:0; }
@keyframes dsvFarolCheia{ from{ opacity:0;transform:scale(.988); } to{ opacity:1;transform:none; } }
body.dsv-fr-lock{ overflow:hidden; }

@media (prefers-reduced-motion:reduce){
  .dsmp-root .dsv-fr.is-acende .dsv-fr-c i{ animation:none;opacity:1;scale:1; }
  .dsmp-root .dsv-fr.is-cheia{ animation:none; }
}

/* distribuição do dia no drawer do farol: três blocos, um por faixa */
.dsmp-root .dsv-fdist,.fb-drawer .dsv-fdist{ display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:6px; }
@media (max-width:620px){ .fb-drawer .dsv-fdist{ grid-template-columns:1fr; } }
.dsmp-root .dsv-fdist-i,.fb-drawer .dsv-fdist-i{ display:grid;grid-template-columns:auto auto 1fr auto;align-items:center;gap:9px;border:1px solid var(--borda,#e2e6e5);border-radius:12px;padding:11px 14px;background:#fff; }
.dsmp-root .dsv-fdist-i i,.fb-drawer .dsv-fdist-i i{ width:11px;height:11px;border-radius:50%; }
.dsmp-root .dsv-fdist-i b,.fb-drawer .dsv-fdist-i b{ font:700 20px var(--font-display);color:#1a2b28;font-variant-numeric:tabular-nums; }
.dsmp-root .dsv-fdist-i span,.fb-drawer .dsv-fdist-i span{ font-size:12.5px;color:#5a6a67; }
.dsmp-root .dsv-fdist-i small,.fb-drawer .dsv-fdist-i small{ font:700 12.5px var(--font-ui);color:#8a9096;font-variant-numeric:tabular-nums; }

/* eventos do dia: sem bolinha de cor, só o número e o rótulo */
.dsmp-root .dsv-fdist--ev,.fb-drawer .dsv-fdist--ev{ grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); }
.dsmp-root .dsv-fdist--ev .dsv-fdist-i,.fb-drawer .dsv-fdist--ev .dsv-fdist-i{ grid-template-columns:auto 1fr; }
.dsmp-root .dsv-fdist-i b.is-crit,.fb-drawer .dsv-fdist-i b.is-crit{ color:#C2410C; }

/* jornada do dia */
.dsmp-root .dsv-fjor,.fb-drawer .dsv-fjor{ display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px; }
.dsmp-root .dsv-fjor > div,.fb-drawer .dsv-fjor > div{ border:1px solid var(--borda,#e2e6e5);border-radius:12px;padding:11px 14px;background:#fff; }
.dsmp-root .dsv-fjor small,.fb-drawer .dsv-fjor small{ display:block;font:600 10.5px var(--font-ui);letter-spacing:.6px;text-transform:uppercase;color:#8a9096;margin-bottom:3px; }
.dsmp-root .dsv-fjor b,.fb-drawer .dsv-fjor b{ font:700 19px var(--font-display);color:#1a2b28;font-variant-numeric:tabular-nums; }

/* o combo tem altura fixa no atributo; dentro do drawer ele escala e sobrava
   uma faixa vazia embaixo */
.fb-drawer .dsv-vgdw-graf svg{ width:100%;height:auto;display:block; }
.fb-drawer .dsv-vgdw-graf{ margin:0 0 2px; }

/* composição do km por faixa: empilhada horizontal fina, percentual na
   legenda e nunca dentro da barra (regra 7 do CLAUDE.md) */
.dsmp-root .dsv-fcomp-bar,.fb-drawer .dsv-fcomp-bar{ display:flex;height:20px;border-radius:10px;overflow:hidden;background:var(--borda,#e2e6e5);margin-bottom:12px; }
.dsmp-root .dsv-fcomp-bar span,.fb-drawer .dsv-fcomp-bar span{ height:100%; }
.dsmp-root .dsv-fcomp-bar span + span,.fb-drawer .dsv-fcomp-bar span + span{ box-shadow:inset 1px 0 0 rgba(255,255,255,.55); }
.dsmp-root .dsv-fcomp-leg,.fb-drawer .dsv-fcomp-leg{ display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:6px 18px; }
.dsmp-root .dsv-fcomp-i,.fb-drawer .dsv-fcomp-i{ display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:9px;font-size:12.5px;color:#3c4c49;padding:3px 0; }
.dsmp-root .dsv-fcomp-i i,.fb-drawer .dsv-fcomp-i i{ width:10px;height:10px;border-radius:3px; }
.dsmp-root .dsv-fcomp-i b,.fb-drawer .dsv-fcomp-i b{ font-variant-numeric:tabular-nums;color:#1a2b28; }
.dsmp-root .dsv-fcomp-i small,.fb-drawer .dsv-fcomp-i small{ width:36px;text-align:right;color:#8a9096;font-weight:700;font-variant-numeric:tabular-nums; }
.dsmp-root .dsv-vgdw-sec .dsmp-mut,.fb-drawer .dsv-vgdw-sec .dsmp-mut{ text-transform:none;letter-spacing:0;font-weight:500;font-size:11.5px;margin-left:4px; }

/* linha que abre: filial mostra os motoristas dela, motorista mostra as
   placas. A filha usa a mesma grade de colunas, recuada e sem barra, para o
   olho não perder o alinhamento dos números */
.dsmp-root .dsv-tc-pai,.fb-drawer .dsv-tc-pai{ cursor:pointer; }
.dsmp-root .dsv-tc-pai > td:first-child,.fb-drawer .dsv-tc-pai > td:first-child{ padding-left:29px; }
.dsmp-root .dsv-tc-ca,.fb-drawer .dsv-tc-ca{ position:absolute;left:12px;top:50%;margin-top:-7px;font-style:normal;color:#a3adaa;font-size:10px;line-height:1;transition:transform .16s;transform-origin:center; }
.dsmp-root .dsv-tc-pai:hover .dsv-tc-ca,.fb-drawer .dsv-tc-pai:hover .dsv-tc-ca{ color:var(--primary); }
.dsmp-root .dsv-tc-pai.is-aberto .dsv-tc-ca,.fb-drawer .dsv-tc-pai.is-aberto .dsv-tc-ca{ transform:rotate(90deg);color:var(--primary); }
.dsmp-root .dsv-tc-pai.is-aberto > td,.fb-drawer .dsv-tc-pai.is-aberto > td{ background:#f2f7f5; }
.dsmp-root .dsv-tc-fl > td,.fb-drawer .dsv-tc-fl > td{ background:#fbfcfc;border-top:1px dashed #eef1f0;padding-top:6px;padding-bottom:6px; }
.dsmp-root .dsv-tc-fl > td:first-child,.fb-drawer .dsv-tc-fl > td:first-child{ padding-left:34px; }
.dsmp-root .dsv-tc-fl:hover > td,.fb-drawer .dsv-tc-fl:hover > td{ background:#f7faf9; }
.dsmp-root .dsv-tc-fn,.fb-drawer .dsv-tc-fn{ display:block;font-weight:600;font-size:12.5px;color:#3c4c49;line-height:1.25; }
.dsmp-root .dsv-tc-fl td.num b,.fb-drawer .dsv-tc-fl td.num b{ font-weight:600;font-size:12.5px; }
.dsmp-root .dsv-tc-carga,.fb-drawer .dsv-tc-carga{ font-size:12px;color:#8a9096; }

/* filtros do farol: modelo, placa e busca na mesma linha */
.dsmp-root .dsv-fr-filtros{ display:flex;align-items:center;gap:14px;flex-wrap:wrap; }
.dsmp-root .dsv-fr-f{ display:flex;align-items:center;gap:8px; }
.dsmp-root .dsv-fr-f > span:first-child{ font:700 10.5px var(--font-ui);letter-spacing:.7px;text-transform:uppercase;color:#8a9096; }
.dsmp-root .dsv-fr-ms{ display:inline-block;min-width:170px; }
.dsmp-root .dsv-fr-filtros .dsv-fr-busca{ margin-left:auto; }
.dsmp-root .dsv-fr-grade{ display:flex;flex-direction:column;gap:12px;min-height:0; }
.dsmp-root .dsv-fr.is-cheia .dsv-fr-grade{ flex:1 1 auto; }

/* ── Gestor de Treinamentos · indicador clicável e coluna de ação ── */
.dsmp-root .cmp-kpi--clic{ cursor:pointer;transition:border-color .15s,box-shadow .15s; }
.dsmp-root .cmp-kpi--clic:hover{ border-color:var(--primary);box-shadow:0 2px 10px rgba(0,0,0,.06); }
.dsmp-root .dsv-tc-ac,.fb-drawer .dsv-tc-ac{ width:96px;text-align:right;white-space:nowrap; }
.dsmp-root .dsv-tc thead th.dsv-tc-ac,.fb-drawer .dsv-tc thead th.dsv-tc-ac{ cursor:default; }
.dsmp-root .dsv-tc-btn,.fb-drawer .dsv-tc-btn{ border:1px solid var(--borda,#e2e6e5);background:#fff;border-radius:999px;padding:4px 11px;font:700 11.5px var(--font-ui);color:#5a6a67;cursor:pointer;transition:.15s;white-space:nowrap; }
.dsmp-root .dsv-tc-btn:hover,.fb-drawer .dsv-tc-btn:hover{ border-color:var(--primary);color:var(--primary);background:#f2f7f5; }
/* a tabela ao lado da rosca de instrutores tem quatro colunas, não três */
.dsmp-root .dsv-vgfilt--4 th:first-child,.dsmp-root .dsv-vgfilt--4 td:first-child{ width:38%; }
.dsmp-root .dsv-vgfilt--4 th:nth-child(2),.dsmp-root .dsv-vgfilt--4 td:nth-child(2){ width:20%; }
.dsmp-root .dsv-vgfilt--4 th:nth-child(3),.dsmp-root .dsv-vgfilt--4 td:nth-child(3){ width:21%; }
.dsmp-root .dsv-vgfilt--4 th:nth-child(4),.dsmp-root .dsv-vgfilt--4 td:nth-child(4){ width:21%; }
/* card da rosca de instrutores: sem legenda solta, a rosca fica centrada na
   altura da tabela e a cor entra na coluna do nome */
.dsmp-root .dsv-vgcard--gt{ grid-template-columns:minmax(180px,220px) minmax(0,1fr);align-items:center; }
@media (max-width:760px){ .dsmp-root .dsv-vgcard--gt{ grid-template-columns:1fr; } }
.dsmp-root .dsv-vgcard--gt .dsv-vgrosca{ gap:0; }
.dsmp-root .dsv-vgfil-cor{ display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:8px;vertical-align:baseline;flex:none; }
.dsmp-root .dsv-vgfilt--5 th:first-child,.dsmp-root .dsv-vgfilt--5 td:first-child{ width:29%; }
.dsmp-root .dsv-vgfilt--5 th:nth-child(2),.dsmp-root .dsv-vgfilt--5 td:nth-child(2){ width:15%; }
.dsmp-root .dsv-vgfilt--5 th:nth-child(3),.dsmp-root .dsv-vgfilt--5 td:nth-child(3){ width:9%; }
.dsmp-root .dsv-vgfilt--5 th:nth-child(4),.dsmp-root .dsv-vgfilt--5 td:nth-child(4){ width:16%; }
.dsmp-root .dsv-vgfilt--5 th:nth-child(5),.dsmp-root .dsv-vgfilt--5 td:nth-child(5){ width:16%; }
.dsmp-root .dsv-vgfilt--5 th:nth-child(6),.dsmp-root .dsv-vgfilt--5 td:nth-child(6){ width:15%; }
/* rosca de categoria: nome, treinos e percentual */
.dsmp-root .dsv-vgfilt--3g th:first-child,.dsmp-root .dsv-vgfilt--3g td:first-child{ width:52%; }
.dsmp-root .dsv-vgfilt--3g th:nth-child(2),.dsmp-root .dsv-vgfilt--3g td:nth-child(2){ width:28%; }
.dsmp-root .dsv-vgfilt--3g th:nth-child(3),.dsmp-root .dsv-vgfilt--3g td:nth-child(3){ width:20%; }
/* os dois cards de composição dividem a tela ao meio */
.dsmp-root .dsv-grid2--gt{ display:grid;grid-template-columns:1fr 1fr;gap:0; }
@media (max-width:1180px){ .dsmp-root .dsv-grid2--gt{ grid-template-columns:1fr; } }
/* filha larga: o parecer do instrutor ocupa a linha inteira, com a mesma
   sangria da filha de grade */
.dsmp-root .dsv-tc-flx,.fb-drawer .dsv-tc-flx{ padding-left:34px !important;padding-right:16px; }
.dsmp-root .dsv-tc-flx .dsv-tc-fn,.fb-drawer .dsv-tc-flx .dsv-tc-fn{ white-space:pre-wrap;font-weight:500;color:#3c4c49;max-width:900px; }
.dsmp-root .dsv-tc-flx .dsv-tc-s,.fb-drawer .dsv-tc-flx .dsv-tc-s{ margin-top:5px; }

/* Card de rosca em MEIA tela (avaliação e mecânica lado a lado). O desenho
   nasceu para painel inteiro: com metade da largura a rosca comia a tabela e
   o rótulo longo quebrava em três linhas, deixando as linhas de alturas
   diferentes. Aqui a rosca encolhe e o nome ganha reticências. */
.dsmp-root .dsv-vgcard--meia{ grid-template-columns:150px minmax(0,1fr);gap:18px;align-items:start; }
/* a rosca desce a altura do cabeçalho da tabela, para os dois blocos
   começarem na mesma linha */
.dsmp-root .dsv-vgcard--meia .dsv-vgrosca{ padding-top:30px; }
/* os dois cards têm contagens diferentes de categoria; esticando os painéis a
   linha fica com a mesma altura dos dois lados */
.dsmp-root .dsv-grid2--gt{ align-items:stretch; }
.dsmp-root .dsv-grid2--gt > .dsv-panel{ height:100%;display:flex;flex-direction:column; }
.dsmp-root .dsv-grid2--gt > .dsv-panel > .dsv-vgcard{ flex:1 1 auto; }
.dsmp-root .dsv-vgcard--meia .dsv-vgrosca svg{ width:150px;height:150px; }
.dsmp-root .dsv-vgcard--meia .dsv-vgfilt td:first-child{ white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3; }
.dsmp-root .dsv-vgcard--meia .dsv-vgfilt td:first-child span{ display:inline-block;max-width:calc(100% - 20px);overflow:hidden;text-overflow:ellipsis;vertical-align:bottom; }
/* quatro linhas visíveis dos dois lados, e o resto rola. A tabela aqui também
   é a legenda da rosca, então ela precisa ter a mesma altura nos dois cards */
.dsmp-root .dsv-vgcard--meia .dsv-vgfil-rol{ max-height:174px;overflow-y:auto; }
.dsmp-root .dsv-vgcard--meia .dsv-vgfil-rol::-webkit-scrollbar{ width:7px; }
.dsmp-root .dsv-vgcard--meia .dsv-vgfil-rol::-webkit-scrollbar-thumb{ background:#cfd6d4;border-radius:8px; }
.dsmp-root .dsv-vgcard--meia .dsv-vgfilt td{ padding-top:9px;padding-bottom:9px; }
@media (max-width:1180px){ .dsmp-root .dsv-vgcard--meia{ grid-template-columns:150px minmax(0,1fr); } }
.dsmp-root .dsv-tc-btn + .dsv-tc-btn,.fb-drawer .dsv-tc-btn + .dsv-tc-btn{ margin-left:5px;padding:4px 9px; }
.dsmp-root .dsv-tc-btn.is-ok,.fb-drawer .dsv-tc-btn.is-ok{ border-color:#1E9E57;color:#1E9E57; }
.dsmp-root .dsv-tc-ac,.fb-drawer .dsv-tc-ac{ width:132px; }

/* ── Conferência com a Sascar (2026-08-25) ──────────────────────────
   Fila de divergência entre o cadastro do app e o obterMotoristas da
   Sascar. Antes disso o problema só aparecia quando o motorista abria
   o app, via "Ainda sem dados de telemetria" e reclamava. */
.dsmp-exc{ border-left:3px solid var(--accent); }
.dsmp-exc__ok{
  font-size:var(--fs-base);color:var(--txt);
  background:var(--bg-soft);border:1px solid var(--borda-soft);
  border-radius:var(--radius);padding:10px 14px;
}
.dsmp-exc__causa{
  display:inline-block;font-size:var(--fs-sm);line-height:1.45;
  border-left:3px solid var(--borda);padding-left:10px;
}
.dsmp-exc__causa.is-dup{ border-left-color:var(--gold); }
.dsmp-exc__causa.is-sascar{ border-left-color:var(--danger); }
.dsmp-exc__causa.is-novo{ border-left-color:var(--accent); }

/* diagnóstico da busca sem resultado (2026-08-25) — vive dentro do
   .cmp-vazio, então segue a paleta âmbar de aviso daquele bloco */
.dsmp-root .cmp-vazio-diag{
  display:flex;flex-direction:column;gap:6px;flex-basis:100%;
  margin-top:4px;padding-top:10px;border-top:1px solid #e8c98a;
}
.dsmp-root .cmp-vazio-diag__l{ font-size:12.5px;color:#7a4b10;line-height:1.5; }
.dsmp-root .cmp-vazio-diag__l b{ font-size:12.5px; }

/* ── Cadastro de Motoristas · tabela rica ───────────────────────
   A tela deixou de ser uma lista de cartões e passou a usar o
   cabeçalho filtrável da casa (core/tabela-filtros.js), que já traz
   a linguagem visual das outras tabelas longas. O que entra aqui é
   só o que é desta tela: as células de duas linhas, os selos de
   situação e o rótulo de quem está fora da fila de cobrança. */
/* ── Tabela larga: a navegação fica no TOPO ────────────────────
   A barra de rolagem nativa vive no rodapé da caixa. Numa tabela de
   10 colunas e 50 linhas ela fica abaixo da dobra, e quem está lendo
   o cabeçalho não descobre que existe coluna à direita. Por isso a
   barra sai de cena, as setas sobem para junto da busca, a primeira
   coluna fica presa (o nome do motorista é a chave da linha e não
   pode sumir no deslize) e o degradê marca só a borda direita. À
   esquerda o corte fica embaixo da coluna presa, e sombrear ali só
   escureceria o nome. Mesmo padrão da tabelaProd com `larga: true`. */
.dsmp-tab-wrap{ overflow-x:auto; scrollbar-width:none; -ms-overflow-style:none; position:relative; }
.dsmp-tab-wrap::-webkit-scrollbar{ height:0; width:0; }
.dsmp-tab-wrap.tem-mais::after{
  content:''; position:sticky; float:right; top:0; right:0;
  width:34px; height:100%; margin-left:-34px; pointer-events:none;
  background:linear-gradient(to right, rgba(255,255,255,0), var(--superficie, #fff));
}
.dsmp-tab--rica{ min-width:1180px; }
.dsmp-tab--rica tbody td{ vertical-align:top; }
.dsmp-tab--rica thead th:first-child,
.dsmp-tab--rica tbody td:first-child{
  position:sticky; left:0; z-index:3; background:var(--superficie, #fff);
  box-shadow:1px 0 0 var(--borda);
}
.dsmp-tab--rica thead th:first-child{ z-index:4; background:var(--bg-soft, #f8fafc); }

.dsmp-setas{ display:inline-flex; gap:4px; align-items:center; }
.dsmp-setas button{
  width:30px; height:30px; border-radius:8px; cursor:pointer;
  border:1px solid var(--borda); background:var(--superficie, #fff);
  color:var(--texto-2, #4b5563); font-size:15px; line-height:1;
  transition:color 120ms ease, border-color 120ms ease, opacity 120ms ease;
}
.dsmp-setas button:hover:not(:disabled){ color:var(--accent); border-color:var(--accent); }
.dsmp-setas button:disabled{ opacity:.35; cursor:default; }

/* ── Barra de status do RH e contadores de acesso ──────────────
   Os contadores eram uma frase embaixo da barra: diziam o número e
   não levavam a lugar nenhum. Viraram botão, então o número e a
   lista dele são a mesma coisa. E o status do RH virou caixa de
   seleção ADITIVA, começando só em Ativo: em vez de descontar 69
   pessoas de um total e explicar o desconto numa nota, quem quiser
   ver demitido marca a caixa e vê. */
.dsmp-mot-barra{
  display:flex; align-items:center; justify-content:space-between;
  gap:14px; flex-wrap:wrap; margin:10px 0 4px;
}
.dsmp-rh{ display:flex; align-items:center; gap:7px; flex-wrap:wrap; }
.dsmp-rh__lbl{
  font-size:10.5px; font-weight:700; letter-spacing:.05em;
  text-transform:uppercase; color:var(--muted);
}
.dsmp-rh__aviso{ font-size:12px; color:#8A5A12; }
.dsmp-chk{
  display:inline-flex; align-items:center; gap:6px; cursor:pointer;
  border:1px solid var(--borda); border-radius:999px; padding:4px 11px 4px 8px;
  background:var(--superficie, #fff); font-size:12.5px; color:var(--texto-2, #4b5563);
  transition:border-color 120ms ease, background 120ms ease, color 120ms ease;
  user-select:none;
}
.dsmp-chk:hover{ border-color:var(--accent); }
.dsmp-chk input{ margin:0; accent-color:var(--accent); cursor:pointer; }
.dsmp-chk b{ font-variant-numeric:tabular-nums; }
.dsmp-chk.is-on{
  border-color:var(--accent); background:rgba(2,157,102,.08); color:var(--texto, #1f2937);
}

.dsmp-acc{ display:inline-flex; gap:6px; align-items:center; flex-wrap:wrap; }
.dsmp-acc__bt{
  border:1px solid var(--borda); border-radius:999px; padding:5px 13px;
  background:var(--superficie, #fff); cursor:pointer; font:inherit; font-size:12.5px;
  color:var(--texto-2, #4b5563); white-space:nowrap;
  transition:border-color 120ms ease, background 120ms ease, color 120ms ease;
}
.dsmp-acc__bt b{ font-weight:700; font-variant-numeric:tabular-nums; color:var(--texto, #1f2937); }
.dsmp-acc__bt:hover{ border-color:var(--accent); }
.dsmp-acc__bt.is-on{ border-color:var(--accent); background:rgba(2,157,102,.1); color:var(--texto, #1f2937); }
.dsmp-acc__bt--falta b{ color:#8A5A12; }
.dsmp-acc__bt--falta.is-on{ border-color:#C99A3A; background:#FDF3E3; }

.dsmp-mot-fonte{ font-size:12px; margin:2px 0 10px; }

@media (max-width: 900px){
  .dsmp-mot-barra{ align-items:flex-start; flex-direction:column; gap:8px; }
}
.dsmp-sub{
  display:block; font-size:11.5px; color:var(--muted);
  margin-top:2px; font-weight:400; line-height:1.4;
}
.dsmp-cod{
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:12.5px; background:var(--bg-soft); border:1px solid var(--borda);
  border-radius:6px; padding:2px 7px; white-space:nowrap;
}
.dsmp-bdg{
  display:inline-block; font-size:10.5px; font-weight:700; letter-spacing:.03em;
  text-transform:uppercase; border-radius:6px; padding:3px 8px; white-space:nowrap;
}
.dsmp-bdg--ok{ background:#E7F0EA; color:#1F7A4D; }
.dsmp-bdg--warn{ background:#FDF3E3; color:#8A5A12; }
.dsmp-bdg--crit{ background:#FDECEA; color:#A8362B; }
.dsmp-bdg--neu{ background:var(--bg-soft); color:var(--muted); }
.dsmp-lnk{
  border:0; background:none; padding:2px 6px; cursor:pointer;
  color:var(--primary); font-size:12.5px; font-family:inherit; white-space:nowrap;
}
.dsmp-lnk:hover{ text-decoration:underline; }
.dsmp-fora{ color:#8A5A12; }

/* ══════════════════════════════════════════════════════════════
   CABEÇALHO FILTRÁVEL E PAGINAÇÃO DO CORE
   ══════════════════════════════════════════════════════════════
   O core/tabela-filtros.js gera três famílias de classe, e elas não
   chegam aqui da mesma forma:

   · .gmed-aud-th* (o cabeçalho) mora em css/modules/gmedia.css
     ESCOPADO em `.gmedia`, então NÃO alcança este módulo. Sem as
     regras abaixo o cabeçalho aparece como texto solto com um
     botão de funil cru: filtra e ordena, mas não parece cabeçalho.
   · .gmed-aud-pop* (o popover) e .fb-pag* (a paginação) moram lá
     SEM escopo, num <link> global do index.html. Todo módulo que
     usa o core herda essa dependência invisível: no dia em que o
     gmedia.css for escopado ou sair do index.html, o popover e a
     barra de paginação ficam sem estilo em todo mundo.

   As regras abaixo são cópia das de lá (mesmo caminho já adotado
   em fretes.css), então não mudam a aparência de ninguém e deixam
   este módulo de pé sozinho.

   ATENÇÃO ao escopo: o popover é anexado ao document.body pelo
   core, FORA do .dsmp-root. Escopá-lo aqui faria a regra nunca
   casar. Por isso o popover fica global, e cabeçalho e paginação,
   que vivem dentro da tabela, vão escopados.
   ══════════════════════════════════════════════════════════════ */
.dsmp-root .gmed-aud-th{ display:flex; align-items:center; gap:2px; padding:5px 8px; }
.dsmp-root th.num .gmed-aud-th{ justify-content:flex-end; }
.dsmp-root .gmed-aud-th__lbl{
  border:0; background:none; padding:0; cursor:pointer; font:inherit;
  color:inherit; letter-spacing:inherit; text-transform:inherit;
  display:inline-flex; align-items:center; gap:4px; white-space:nowrap;
}
.dsmp-root .gmed-aud-th__lbl:hover{ color:var(--accent, #029d66); }
.dsmp-root .gmed-aud-th__lbl i{ font-style:normal; font-size:8.5px; color:var(--accent, #029d66); }
.dsmp-root .gmed-aud-th__f{
  border:0; background:none; cursor:pointer; padding:2px 4px; border-radius:5px;
  line-height:1; font-size:11px; color:var(--muted); opacity:.55;
}
.dsmp-root .gmed-aud-th__f:hover{ opacity:1; color:var(--accent, #029d66); background:rgba(2,157,102,.1); }
.dsmp-root .gmed-aud-th__f.is-on{ opacity:1; color:#fff; background:var(--accent, #029d66); }

.gmed-aud-pop{
  position:absolute; z-index:1200; width:244px; background:#fff;
  border:1px solid var(--borda, #e5e7eb); border-radius:11px;
  box-shadow:0 12px 30px -10px rgba(15,23,42,.35); padding:11px;
  font-family:Barlow, -apple-system, "Segoe UI", Roboto, sans-serif; font-size:13px;
}
.gmed-aud-pop__tit{
  font-size:10.5px; font-weight:700; letter-spacing:.05em;
  text-transform:uppercase; color:#6b7280; margin-bottom:8px;
}
.gmed-aud-pop__busca input, .gmed-aud-pop__faixa input{
  width:100%; height:30px; padding:0 9px;
  border:1px solid var(--borda, #d1d5db); border-radius:7px; font:inherit; font-size:12.5px;
}
.gmed-aud-pop__busca input:focus, .gmed-aud-pop__faixa input:focus{
  outline:2px solid var(--accent, #029d66); outline-offset:1px;
}
.gmed-aud-pop__faixa{ display:flex; gap:8px; }
.gmed-aud-pop__faixa label{ flex:1; font-size:10.5px; font-weight:700; text-transform:uppercase; color:#6b7280; }
.gmed-aud-pop__lista{ max-height:210px; overflow-y:auto; margin-top:7px; display:flex; flex-direction:column; }
.gmed-aud-pop__item{
  display:flex; align-items:center; gap:7px; padding:5px 4px;
  border-radius:6px; cursor:pointer; font-size:12.5px;
}
.gmed-aud-pop__item:hover{ background:var(--bg-soft, #f3f4f6); }
.gmed-aud-pop__item span{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.gmed-aud-pop__acoes{ display:flex; gap:7px; margin-top:10px; }
.gmed-aud-pop__acoes button{
  flex:1; height:30px; border-radius:7px; cursor:pointer;
  border:1px solid var(--borda, #d1d5db); background:#fff;
  font:inherit; font-size:12.5px; font-weight:600; color:var(--texto-2, #4b5563);
}
.gmed-aud-pop__acoes button:hover{ border-color:var(--accent, #029d66); color:var(--accent, #029d66); }
.gmed-aud-pop__acoes button.is-primary{
  background:var(--accent, #029d66); border-color:var(--accent, #029d66); color:#fff;
}

.dsmp-root .fb-pag{
  display:flex; align-items:center; justify-content:space-between;
  gap:12px; flex-wrap:wrap; padding:9px 2px 2px;
}
.dsmp-root .fb-pag__cnt{ font-size:12px; color:var(--muted); font-variant-numeric:tabular-nums; }
.dsmp-root .fb-pag__cnt b{ color:var(--texto, #1f2937); }
.dsmp-root .fb-pag__nav{ display:inline-flex; align-items:center; gap:4px; }
.dsmp-root .fb-pag__btn{
  min-width:28px; height:28px; padding:0 7px;
  border:1px solid var(--borda, #e5e7eb); border-radius:7px; background:#fff;
  color:var(--texto-2, #4b5563); font-size:12px; font-weight:600;
  font-variant-numeric:tabular-nums; cursor:pointer;
  transition:color 120ms ease, border-color 120ms ease, background 120ms ease;
}
.dsmp-root .fb-pag__btn:hover:not(:disabled){
  color:var(--accent, #029d66); border-color:var(--accent, #029d66); background:rgba(2,157,102,.06);
}
.dsmp-root .fb-pag__btn:disabled{ opacity:.4; cursor:default; }
.dsmp-root .fb-pag__btn.is-on{ color:#fff; background:var(--accent, #029d66); border-color:var(--accent, #029d66); }
.dsmp-root .fb-pag__gap{ padding:0 2px; color:var(--muted); font-size:12px; }

/* ── Botão "i" do título ───────────────────────────────────────
   A explicação de como o acesso funciona é leitura de uma vez só.
   Como faixa fixa acima da tabela, ela empurrava o trabalho para
   baixo todo dia para repetir o que o usuário já sabia. */
.dsmp-i{
  display:inline-flex; align-items:center; justify-content:center;
  width:21px; height:21px; margin-left:8px; vertical-align:middle;
  border:1px solid var(--borda); border-radius:50%;
  background:var(--superficie, #fff); color:var(--muted);
  font-family:inherit; font-size:12px; font-weight:700; font-style:italic;
  line-height:1; cursor:pointer;
  transition:color 120ms ease, border-color 120ms ease, background 120ms ease;
}
.dsmp-i:hover{ color:var(--accent); border-color:var(--accent); }
.dsmp-i.is-on{ color:#fff; background:var(--accent); border-color:var(--accent); }

.dsmp-seg__lbl{
  font-size:10.5px; font-weight:700; letter-spacing:.05em;
  text-transform:uppercase; color:var(--muted); margin-right:2px;
  align-self:center;
}

/* ── [hidden] precisa vencer o display do módulo ───────────────
   CASO REAL (28/08): o texto de ajuda continuou aparecendo depois
   de virar o botão "i". O JS marcava `banner.hidden = true`, e o
   atributo estava lá, mas `.dsmp-banner{ display:flex }` é seletor
   de classe (0,1,0) e vence o `[hidden]{ display:none }` da folha
   do navegador (0,0,1). O elemento seguia visível.

   Vale para todo elemento desta tela que nasce escondido e tem
   display próprio: o banner, as setas, a barra de status e a
   paginação. O `!important` é proposital: `hidden` quer dizer "não
   renderize", e isso não pode depender de quem escreveu a regra de
   layout depois. */
.dsmp-root [hidden],
.dsmp-banner[hidden],
.dsmp-setas[hidden],
.dsmp-mot-barra[hidden],
.dsmp-pager[hidden]{ display:none !important; }

/* ── Abastecimentos ────────────────────────────────────────────
   Os KPIs usam o padrão cmp-kpi da Visão Geral (mesma classe, mesma
   cara). Aqui fica só o que é desta tela. */
.dsmp-tab--abs{ min-width:1150px; }

/* ── Linha de navegação da tabela ──────────────────────────────
   As setas nasceram lá em cima, ao lado da busca. Estavam longe
   demais: quem está lendo a tabela e percebe que falta coluna
   procura o controle PERTO da tabela, não a três blocos de
   distância. Agora elas dividem a linha imediatamente acima do
   cabeçalho com a procedência do dado, encostadas na borda
   direita, que é justamente o lado onde as colunas se escondem. */
.dsmp-root .dsmp-tabnav{
  display:flex; align-items:center; justify-content:space-between;
  gap:12px; flex-wrap:wrap; margin:8px 0 6px; min-height:22px;
}
.dsmp-root .dsmp-tabnav .dsmp-mot-fonte{ margin:0; }
.dsmp-root .dsmp-tabnav .dsmp-setas{ margin-left:auto; }

/* ── Linha de navegação do FAROL ───────────────────────────────
   Mesma regra das outras tabelas largas: o controle fica colado no
   topo da GRADE, encostado na borda direita, que é o lado onde os
   dias se escondem. No farol o passo é de uma semana e encaixa na
   coluna do dia (core/tabela-nav.js), senão o deslize corta a
   bolinha no meio e desalinha o cabeçalho da célula. */
.dsmp-root .dsv-fr-nav,
.prd .dsv-fr-nav{
  display:flex; justify-content:flex-end; align-items:center;
  margin:0 0 6px; min-height:22px;
}
.dsmp-root .dsv-fr-nav__s,
.prd .dsv-fr-nav__s{ display:inline-flex; gap:4px; align-items:center; }
.dsmp-root .dsv-fr-nav__s[hidden],
.prd .dsv-fr-nav__s[hidden]{ display:none !important; }
.dsmp-root .dsv-fr-nav button,
.prd .dsv-fr-nav button{
  width:30px; height:28px; border-radius:8px; cursor:pointer;
  border:1px solid var(--borda,#e2e6e5); background:#fff;
  color:#5a6a67; font:700 15px/1 var(--font-ui);
  transition:color 120ms ease, border-color 120ms ease, opacity 120ms ease;
}
.dsmp-root .dsv-fr-nav button:hover:not(:disabled),
.prd .dsv-fr-nav button:hover:not(:disabled){ color:var(--primary); border-color:var(--primary); }
.dsmp-root .dsv-fr-nav button:disabled,
.prd .dsv-fr-nav button:disabled{ opacity:.35; cursor:default; }

/* A linha de navegação leva também o "Tela cheia" no Painel: os dois
   são ações sobre a mesma grade, e o botão sozinho numa faixa acima
   dos filtros gastava uma linha inteira da tela. */
.dsmp-root .dsv-fr-nav,
.prd .dsv-fr-nav{ gap:8px; }
.dsmp-root .dsv-fr-nav .dsv-fr-btn,
.prd .dsv-fr-nav .dsv-fr-btn{ margin-left:auto; }
.dsmp-root .dsv-fr-nav .dsv-fr-btn + .dsv-fr-nav__s,
.prd .dsv-fr-nav .dsv-fr-btn + .dsv-fr-nav__s{ margin-left:0; }

/* ── Bandeirinha de ocorrência no Comparativo ──────────────────
   Acende ao lado do nome enquanto o MOMENTO do episódio estiver
   dentro do período filtrado, que foi o pedido. O número é em
   LITROS, não em contagem: "3 ocorrências" não move ninguém,
   "112 L que saíram sem passar pelo motor" move. */
.dsmp-root .cmp-bandeira{
  display:inline-flex; align-items:center; gap:4px; vertical-align:middle;
  border:1px solid #DB5A4B; background:#FDECEA; color:#A8362B;
  border-radius:999px; padding:1px 8px 1px 6px; margin-left:2px;
  font:700 11px var(--font-ui); cursor:pointer; white-space:nowrap;
  transition:filter 120ms ease;
}
.dsmp-root .cmp-bandeira:hover{ filter:brightness(.96); }
.dsmp-root .cmp-bandeira__i{ font-size:12px; line-height:1; }
.dsmp-root .cmp-bandeira.is-crit{ border-color:#DB5A4B; background:#FDECEA; color:#A8362B; }

/* Card de litros apontando ocorrência no recorte (07/09): contorno
   vermelho e fundo vermelho pastel, na paleta da bandeira crítica.
   Acende sempre que algum motorista do recorte tem bandeira. */
.dsmp-root .cmp-kpi.is-ocor{ border-color:#DB5A4B; background:#FDECEA; box-shadow:inset 0 0 0 1px #F3B7B0; }
.dsmp-root .cmp-kpi.is-ocor .cmp-kpi-lbl{ color:#A8362B; }
.dsmp-root .cmp-kpi-alerta{ color:#A8362B; font-weight:700; }
/* drawer das divergencias: a tabela e a .dsv-tc do farol, ja estilizada em .fb-drawer */
.fb-drawer .cmp-ocd-intro{ margin:0 0 12px; font-size:13px; line-height:1.5; }
.fb-drawer .cmp-ocd .dsv-tc td{ white-space:nowrap; }
.fb-drawer .cmp-ocd .dsv-tc td:first-child .dsv-tc-n{ white-space:normal; }
.fb-drawer .cmp-ocd .dsv-tc td.dsv-tc-flx{ white-space:normal; }
.dsmp-root .cmp-kpi-sub2{ display:block; margin-top:3px; color:var(--muted); font-weight:400; }
.dsmp-root .cmp-kpi-cob{ font-size:11px; opacity:.85; }
.dsmp-root .cmp-kpi.is-ocor.cmp-kpi--clic:hover{ border-color:#A8362B; box-shadow:0 2px 10px rgba(219,90,75,.18); }


/* ── Curva do nível no drawer de possíveis divergências (08/09) ── */
.fb-drawer .cmp-nv { display: block; margin-top: 10px; padding: 10px 6px 4px; background: #fff; border: 1px solid var(--borda-soft); border-radius: 10px; }
.fb-drawer .cmp-nv svg { display: block; width: 100%; height: auto; }
.fb-drawer .cmp-nv-leg { display: flex; flex-wrap: wrap; gap: 6px 16px; padding: 6px 8px 2px; font-size: 12px; color: var(--muted); white-space: normal; }
.fb-drawer .cmp-nv-leg span { display: inline-flex; align-items: center; gap: 6px; }
.fb-drawer .cmp-nv-leg i { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }
.fb-drawer .cmp-nv-leg .cmp-nv-n { margin-left: auto; }
.fb-drawer .cmp-nv-vazio { margin-top: 8px; font-size: 12px; color: var(--muted); font-style: italic; }

/* ── Abastecimentos · fontes (29/09/2026) ──────────────────────
   Badge de arquivo e a linha de cobertura por fonte/base que fica
   junto da procedência, logo acima da tabela. */
.dsmp-bdg--info{ background:#E8F1F8; color:#1F5D8A; }
.dsmp-cob-linha{ margin-top:4px; font-size:12px; line-height:1.7; }
.dsmp-cob{ display:inline-block; white-space:nowrap; }
.dsmp-cob b{ color:var(--text); }

/* ── Parâmetros · regras do fechamento (29/09/2026) ─────────── */
.dsmp-root .dsv-pargrid--4{ grid-template-columns:repeat(4,minmax(0,1fr)); }
.dsmp-root .dsv-fch-toggles{ display:flex; flex-direction:column; gap:6px; margin:12px 0; }
.dsmp-root .dsv-fch-tog{ display:flex; align-items:center; gap:8px; font-size:13px; cursor:pointer; }
.dsmp-root .dsv-fch-tog input{ width:16px; height:16px; accent-color:var(--primary); }
@media (max-width:900px){ .dsmp-root .dsv-pargrid--4{ grid-template-columns:repeat(2,minmax(0,1fr)); } }

/* ── Premiação · regras do fechamento e Bomba × Sascar (29/09/2026) ── */
.prm-fator--zero{ color:#A8362B; background:#FDECEA; border-color:#f3c9c4; }
.prm-fator--bomba{ color:#1F5D8A; background:#E8F1F8; border-color:#c9dcec; }
.dsmp-root .cmp-kpis--4{ grid-template-columns:repeat(4,1fr); }
@media (max-width:1024px){ .dsmp-root .cmp-kpis--4{ grid-template-columns:repeat(2,1fr); } }
.dsmp-root .prm-bomba{ margin-top:26px; }
.dsmp-root .prm-bomba__h h2{ font-size:16px; margin:0 0 2px; }
.dsmp-root .prm-bomba__h p{ margin:0 0 10px; font-size:12px; }
.dsmp-root .prm-bomba-tab td{ vertical-align:top; }

/* ── Sidebar · grupos retráteis do Desempenho (29/09/2026) ─────
   A legenda do shell vira botão; fora do .dsmp-root porque a sidebar
   é do shell. Item oculto usa classe (o [hidden] perde para display). */
.sidebar__caption.dsmp-grupo{ display:flex; align-items:center; justify-content:space-between; gap:8px; cursor:pointer; user-select:none; }
.sidebar__caption.dsmp-grupo:hover{ color:var(--sidebar-text, inherit); opacity:1; }
.sidebar__caption.dsmp-grupo .dsmp-grupo__seta{ font-size:11px; opacity:.75; transition:transform .15s ease; }
.sidebar__caption.dsmp-grupo.is-fechado .dsmp-grupo__seta{ transform:rotate(-90deg); }
.sidebar__item.dsmp-grupo-oculto{ display:none !important; }

/* ── Ouvidoria (01/10/2026) ── */
.dsmp-root .ouv-seg{ margin-bottom:14px; }
.dsmp-root .ouv-sel{
  border:1px solid var(--borda);border-radius:var(--radius-md,10px);background:var(--card);
  color:var(--txt);font:inherit;font-size:var(--fs-sm);padding:8px 10px;
}
.dsmp-root .ouv-tab td{ vertical-align:top; }
.dsmp-root .ouv-tr{ cursor:pointer; }
.dsmp-root .ouv-td-msg{ max-width:420px;white-space:normal;line-height:1.35; }
.dsmp-root .ouv-cat{ font-size:var(--fs-2xs);font-weight:var(--fw-bold);letter-spacing:.05em;text-transform:uppercase;color:var(--primary);white-space:nowrap; }
.dsmp-root .ouv-cat--denuncia{ color:var(--crit); }
.dsmp-root .ouv-cat--reclamacao{ color:#C2410C; }
.dsmp-root .dsmp-vazio-inline{ color:var(--muted);font-size:var(--fs-sm);padding:6px 2px; }
.ouv-dr{ display:flex;flex-direction:column;gap:16px; }
.ouv-dr-top{ display:flex;align-items:center;gap:12px;flex-wrap:wrap; }
.ouv-dr-bl{ background:var(--bg-soft);border:1px solid var(--borda-soft,#eee);border-radius:var(--radius-lg);padding:12px 14px; }
.ouv-dr-bl--resp{ border-left:3px solid var(--accent); }
.ouv-dr-t{ font-size:var(--fs-2xs);font-weight:var(--fw-bold);letter-spacing:.06em;text-transform:uppercase;color:var(--sub);margin-bottom:6px; }
.ouv-dr-x{ font-size:var(--fs-base);color:var(--txt);line-height:1.5;white-space:pre-wrap; }
.ouv-ta{ width:100%;box-sizing:border-box;border:1px solid var(--borda);border-radius:var(--radius-md,10px);padding:10px 12px;font:inherit;font-size:var(--fs-base);color:var(--txt);background:var(--card);resize:vertical; }
.ouv-dr-err{ margin-top:8px;color:var(--crit);font-size:var(--fs-sm);font-weight:600; }
.ouv-dr-err[hidden]{ display:none; }
.ouv-dr-acoes{ display:flex;gap:8px;flex-wrap:wrap; }
.ouv-log-i{ padding:7px 0;border-bottom:1px solid var(--borda-soft,#eee); }
.ouv-log-i:last-child{ border-bottom:none; }
.ouv-log-q{ font-size:var(--fs-xs,11px);color:var(--muted); }
.ouv-log-d{ font-size:var(--fs-sm);color:var(--txt);margin-top:2px;white-space:pre-wrap; }
/* 05/10: conversa do chamado na gaveta */
.ouv-conv{ display:flex;flex-direction:column;gap:8px; }
.ouv-bl{ max-width:88%;border-radius:var(--radius-lg);padding:10px 13px;background:#fff;border:1px solid var(--borda-soft,#eee); }
.ouv-bl--mot{ align-self:flex-start;border-top-left-radius:4px; }
.ouv-bl--emp{ align-self:flex-end;border-left:3px solid var(--accent);background:var(--accent-soft,rgba(46,158,36,.07));border-top-right-radius:4px; }
.ouv-bl-t{ font-size:var(--fs-2xs);font-weight:var(--fw-bold);letter-spacing:.06em;text-transform:uppercase;color:var(--sub);margin-bottom:4px; }
.ouv-bl-x{ font-size:var(--fs-base);color:var(--txt);line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere; }
.ouv-tr--retorno td:first-child{ box-shadow:inset 3px 0 0 #C2410C; }
.dsmp-root .ouv-tr--anon .dsmp-mut{ font-style:italic; }
.dsmp-root .ouv-cat--critica{ color:#C2410C; }

/* ══════════════════════════════════════════════════════════════
   14/10/2026 · Treinamentos e Mapa de Ocorrências: respiro e alinhamento
   ══════════════════════════════════════════════════════════════ */
/* Avaliação e Estado mecânico: os dois cards se encostavam (gap 0) e o par
   colava no card de baixo. Mesmo espaço do resto da tela (16px). */
.dsmp-root .dsv-grid2--gt{ gap:16px;margin-bottom:16px; }
.dsmp-root .dsv-grid2--gt > .dsv-panel{ margin-bottom:0; }
/* rosca do card em meia tela um pouco maior, com o miolo do _vgRosca compacto */
.dsmp-root .dsv-vgcard--meia{ grid-template-columns:170px minmax(0,1fr);gap:22px; }
.dsmp-root .dsv-vgcard--meia .dsv-vgrosca{ padding-top:22px; }
.dsmp-root .dsv-vgcard--meia .dsv-vgrosca svg{ width:170px;height:170px; }
@media (max-width:1180px){ .dsmp-root .dsv-vgcard--meia{ grid-template-columns:170px minmax(0,1fr); } }

/* Mapa de Ocorrências: a tabela passava do fim do mapa. Mapa e legenda mandam na
   altura; a tabela ocupa as duas linhas (mesmo topo do mapa, mesmo fim da legenda)
   e rola por dentro. */
.dsmp-root .sv-mapa-grid{ grid-template-rows:auto auto;column-gap:16px;row-gap:8px; }
.dsmp-root .sv-mapa-col-mapa{ display:contents; }
.dsmp-root .sv-mapa-canvas{ grid-column:1;grid-row:1; }
.dsmp-root .sv-mapa-legenda{ grid-column:1;grid-row:2; }
.dsmp-root .sv-mapa-col-tab{ grid-column:2;grid-row:1 / span 2;contain:size;min-height:0; }
.dsmp-root .sv-mapa-tab-scroll{ flex:1 1 auto;min-height:0;max-height:none; }
@media (max-width:980px){
  .dsmp-root .sv-mapa-col-tab{ grid-column:1;grid-row:3;contain:none; }
  .dsmp-root .sv-mapa-tab-scroll{ max-height:600px; }
}
