/* ===================== ETMLOG · Painel de Cargas =====================
   Identidade oficial (Manual de Marca v1.1): Inter + JetBrains Mono,
   azul #3370DB, laranja #F27507, azul institucional #082744.
   Estética: sistema operacional / status-LED / leitura tipo painel de aeroporto.
   ==================================================================== */
:root{
  --blue:#3370DB; --blue-light:#3EA5F0; --blue-mid:#2A5EB9;
  --orange:#F27507; --dark:#082744; --darker:#051a30; --darkest:#020f1f;
  --green:#19a957; --yellow:#E6A700; --red:#D93838; --slate:#64748b;
  --prog-blue:#8C9EFF;          /* azul anil — etapa atual das cargas PROGRAMADAS */

  --bg:#0a1d33;                 /* fundo escuro operacional (monitor de parede) */
  --panel:#0e2848;             /* cartões/linhas */
  --panel-2:#10305a;
  --panel-line:rgba(120,160,210,.14);
  --panel-line-strong:rgba(120,160,210,.26);
  --ink:#eaf1fb;
  --ink-soft:#9fb5d5;
  --muted:#6f87aa;
  --text-strong:#fff;              /* texto de maior contraste — vira escuro no tema claro */
  /* Texto de estado. Os tons claros só funcionam sobre fundo escuro: #5fdc97 dá
     1,7:1 e #ff9a9a dá 2,0:1 sobre branco. No tema claro viram tons escuros.
     Use SEMPRE estas variáveis para texto de sucesso/erro sobre o painel —
     branco puro segue valendo apenas sobre fundo colorido sólido (badges). */
  --ok-text:#5fdc97;
  --danger-text:#ff9a9a;
  --accent-text:var(--orange);     /* laranja de marca: legível sobre fundo escuro */
  --info-text:#7cc4ff;
  --warn-text:#ffcf8a;
  --emph-wash-text:#fff;           /* texto sobre lavagem de cor (botão laranja fantasma) */
  /* seções: Programadas (âmbar · espera) × Em andamento (teal · execução) — alto contraste no tema azul */
  --sec-prog-accent:#F5B63C; --sec-prog-wash:rgba(245,182,60,.15); --sec-prog-chip:rgba(245,182,60,.24);
  --sec-exec-accent:#25E3B4; --sec-exec-wash:rgba(37,227,180,.17); --sec-exec-chip:rgba(37,227,180,.26);
  --field-bg:rgba(2,15,31,.5);     /* fundo de campos e superfícies rebaixadas */
  --header-bg:rgba(8,28,60,.82);   /* fundo do cabeçalho fixo */

  --sans:'Inter','Helvetica Neue',Arial,sans-serif;
  --mono:'JetBrains Mono','SFMono-Regular',Menlo,monospace;
  --t:.25s cubic-bezier(.2,.7,.3,1);
  --radius:14px; --radius-sm:9px;
}
*{box-sizing:border-box;-webkit-font-smoothing:antialiased}
html,body{margin:0;height:100%}
body{
  font-family:var(--sans); color:var(--ink);
  background:
    radial-gradient(1200px 600px at 80% -10%,rgba(51,112,219,.16),transparent 60%),
    radial-gradient(900px 500px at -10% 110%,rgba(242,117,7,.07),transparent 55%),
    linear-gradient(180deg,var(--darkest),var(--bg) 40%);
  font-size:15.5px; line-height:1.55;
  background-attachment:fixed;
}
button{font-family:inherit;cursor:pointer;border:0;background:none;color:inherit}
input,select{font-family:inherit}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:rgba(120,160,210,.25);border-radius:20px}
::-webkit-scrollbar-track{background:transparent}

/* ===================== HEADER ===================== */
header.bar{
  position:sticky;top:0;z-index:60;
  background:var(--header-bg);
  backdrop-filter:blur(16px) saturate(160%);
  -webkit-backdrop-filter:blur(16px) saturate(160%);
  border-bottom:1px solid var(--panel-line);
}
.bar-inner{max-width:1920px;margin:0 auto;padding:14px 28px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:18px}
.bar-left{display:flex;align-items:center;gap:24px;justify-self:start}
.bar-left .logo{height:30px;width:auto;color:var(--text-strong);display:block}
.bar-title{justify-self:center;text-align:center;line-height:1}
.bar-title b{font-family:'Space Grotesk','Inter',sans-serif;font-size:24px;font-weight:600;letter-spacing:-.015em;color:var(--text-strong)}
.bar-title b span{color:var(--blue-light);font-weight:400}
.bar-right{justify-self:end;display:flex;align-items:center;gap:14px}
.live{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;color:var(--green);text-transform:uppercase;font-weight:600;padding:3px 9px;border:1px solid rgba(25,169,87,.3);border-radius:30px;background:rgba(25,169,87,.07)}
.live::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 0 0 rgba(25,169,87,.5);animation:pulse 2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(25,169,87,.45)}70%{box-shadow:0 0 0 9px rgba(25,169,87,0)}100%{box-shadow:0 0 0 0 rgba(25,169,87,0)}}
.clock{font-family:var(--mono);font-size:15px;font-weight:600;color:var(--text-strong);letter-spacing:.04em}
.clock small{display:block;font-size:11.5px;color:var(--muted);letter-spacing:.16em;text-transform:uppercase;font-weight:500}

.wrap{max-width:1920px;margin:0 auto;padding:22px 28px 60px}

/* ===================== KPI STRIP ===================== */
.kpis{display:grid;grid-template-columns:repeat(9,1fr);gap:10px;margin-bottom:18px}
.kpi{
  background:linear-gradient(160deg,var(--panel),var(--panel-2));
  border:1px solid var(--panel-line);border-radius:var(--radius-sm);
  padding:13px 14px;text-align:left;position:relative;overflow:hidden;transition:all var(--t);
}
.kpi:hover{border-color:var(--panel-line-strong);transform:translateY(-2px)}
.kpi.active{border-color:var(--orange);box-shadow:0 0 0 1px var(--orange) inset, 0 10px 30px rgba(242,117,7,.12)}
.kpi .num{font-size:33px;font-weight:800;letter-spacing:-.03em;line-height:1;color:var(--text-strong)}
.kpi .lbl{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);margin-top:7px;line-height:1.3}
.kpi .bar{position:absolute;left:0;top:0;bottom:0;width:3px;border-radius:3px}
.kpi[data-k="total"] .bar{background:var(--blue-light)}
.kpi[data-k="coleta"] .bar{background:var(--yellow)}
.kpi[data-k="execucao"] .bar{background:var(--blue)}
.kpi[data-k="cte"] .bar{background:#8b5cf6}
.kpi[data-k="transito"] .bar{background:var(--blue-light)}
.kpi[data-k="agendada"] .bar{background:#0ea5a5}
.kpi[data-k="entregue"] .bar{background:var(--green)}
.kpi[data-k="atraso"] .bar{background:var(--red)}
.kpi[data-k="ocorrencia"] .bar{background:var(--orange)}
.kpi[data-k="atraso"] .num,.kpi[data-k="ocorrencia"] .num{color:var(--text-strong)}

/* ===================== TOOLBAR (search + filters + legend) ===================== */
.toolbar{
  background:linear-gradient(160deg,var(--panel),var(--panel-2));
  border:1px solid var(--panel-line);border-radius:var(--radius);
  padding:14px 16px;margin-bottom:16px;
}
.tb-top{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.search{flex:1;min-width:260px;position:relative}
.search input{
  width:100%;background:var(--field-bg);border:1px solid var(--panel-line-strong);
  border-radius:30px;padding:11px 16px 11px 40px;color:var(--text-strong);font-size:16px;outline:none;transition:border var(--t);
}
.search input:focus{border-color:var(--blue)}
.search input::placeholder{color:var(--muted)}
.search .ic{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--muted)}
.filters{display:flex;gap:9px;flex-wrap:wrap}
.filters select{
  background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:8px;
  padding:9px 12px;color:var(--ink);font-size:14px;outline:none;cursor:pointer;transition:border var(--t);
}
.filters select:focus{border-color:var(--blue)}
.btn-clear{
  font-family:var(--mono);font-size:12.5px;letter-spacing:.06em;color:var(--ink-soft);
  border:1px solid var(--panel-line-strong);border-radius:8px;padding:9px 13px;text-transform:uppercase;transition:all var(--t);
}
.btn-clear:hover{color:var(--text-strong);border-color:var(--orange)}

.tb-bottom{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-top:13px;padding-top:13px;border-top:1px solid var(--panel-line)}
.legend{display:flex;gap:16px;flex-wrap:wrap;align-items:center}
.legend .lg-ttl{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.legend .item{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--ink-soft)}
.legend .dot{width:10px;height:10px;border-radius:3px}
.dot.red{background:var(--red)} .dot.yellow{background:var(--yellow)} .dot.green{background:var(--green)} .dot.blue{background:var(--blue-light)} .dot.gray{background:var(--slate)}
.view-info{margin-left:auto;font-family:var(--mono);font-size:12.5px;color:var(--muted);letter-spacing:.06em}
.view-info b{color:var(--text-strong)}

/* ===================== GROUP HEADERS ===================== */
.group-head{
  display:flex;align-items:center;gap:12px;margin:22px 2px 10px;
}
.group-head .gh-ttl{font-family:var(--mono);font-size:12.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);font-weight:600}
.group-head .gh-line{flex:1;height:1px;background:var(--panel-line)}
.group-head .gh-count{font-family:var(--mono);font-size:12.5px;color:var(--orange);background:rgba(242,117,7,.1);padding:3px 9px;border-radius:20px}

/* ===== Diferenciação das seções: Programadas (espera) × Em andamento (execução) =====
   Cada seção define um trio de tokens (accent/wash/chip) por tema, valores explícitos,
   e os tokens por tema garantem a adaptação em escuro, claro e Copa. */
.cargo-sec.sec-prog{--sec-accent:var(--sec-prog-accent);--sec-wash:var(--sec-prog-wash);--sec-chip:var(--sec-prog-chip)}
.cargo-sec.sec-exec{--sec-accent:var(--sec-exec-accent);--sec-wash:var(--sec-exec-wash);--sec-chip:var(--sec-exec-chip)}
.cargo-sec .gh-ttl{display:inline-flex;align-items:center;color:var(--sec-accent)}
.cargo-sec .gh-ttl::before{content:"";width:9px;height:9px;border-radius:50%;margin-right:11px;flex:none;background:var(--sec-accent);box-shadow:0 0 0 3px var(--sec-chip)}
.cargo-sec.sec-exec .gh-ttl::before{animation:secPulse 2.4s ease-in-out infinite}
@keyframes secPulse{0%,100%{box-shadow:0 0 0 3px var(--sec-chip)}50%{box-shadow:0 0 0 6px transparent}}
.cargo-sec .gh-line{background:linear-gradient(90deg,var(--sec-accent),transparent);opacity:.55}
.cargo-sec .gh-count{color:var(--sec-accent);background:var(--sec-chip);border:1px solid var(--sec-accent)}
/* wash de fundo nas linhas de cada seção — camada plana sobre o gradiente do card (sem color-mix) */
.cargo-sec .rows .row{background:linear-gradient(var(--sec-wash),var(--sec-wash)),linear-gradient(160deg,var(--panel),var(--panel-2))}

/* ===================== COLUMN LABELS ===================== */
.col-labels{
  display:grid;grid-template-columns:var(--grid);gap:14px;padding:0 16px 8px;
  font-family:var(--mono);font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);
}
:root{--grid:minmax(132px,.9fr) minmax(106px,.95fr) minmax(120px,1fr) minmax(150px,1.5fr) minmax(150px,1.5fr) minmax(88px,.85fr) minmax(210px,2.3fr) 44px}

/* ===================== CARGO ROW ===================== */
.rows{display:flex;flex-direction:column;gap:8px}
.row{
  display:grid;grid-template-columns:var(--grid);gap:14px;align-items:center;
  background:linear-gradient(160deg,var(--panel),var(--panel-2));
  border:1px solid var(--panel-line);border-left:4px solid var(--slate);
  border-radius:var(--radius-sm);padding:14px 16px;cursor:pointer;transition:all var(--t);
}
.row:hover{border-color:var(--panel-line-strong);transform:translateX(3px);box-shadow:-6px 8px 26px rgba(2,12,28,.4)}
.row.s-atraso{border-left-color:var(--red)}
.row.s-pendente{border-left-color:var(--yellow)}
.row.s-execucao{border-left-color:var(--blue-light)}
.row.s-realizada{border-left-color:var(--green)}
.row.s-naoiniciado{border-left-color:var(--slate)}

.c-date{font-family:var(--mono);font-size:14px;color:var(--text-strong);font-weight:600;text-align:center}
.c-date small{display:block;font-size:11.5px;color:var(--muted);font-weight:500;letter-spacing:.06em;margin-top:2px}
.c-date .c-dprog{display:block}
.c-date .c-dtransp{display:block;font-family:var(--mono);font-size:11px;color:var(--ink-soft);font-weight:500;letter-spacing:.04em;margin-top:3px}
.c-oc{font-family:var(--mono);font-size:15px;font-weight:700;color:var(--orange);padding-left:16px}
.c-oc small{display:block;font-size:11px;color:var(--muted);font-weight:500;margin-top:2px;letter-spacing:.08em}

.badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:5px 10px;border-radius:30px;white-space:nowrap}
.badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.badge.b-atraso{color:var(--danger-text);background:rgba(217,56,56,.14);border:1px solid rgba(217,56,56,.3)}
.badge.b-pendente{color:#ffd166;background:rgba(230,167,0,.13);border:1px solid rgba(230,167,0,.3)}
.badge.b-execucao{color:#7cc4ff;background:rgba(62,165,240,.13);border:1px solid rgba(62,165,240,.32)}
.badge.b-realizada{color:var(--ok-text);background:rgba(25,169,87,.14);border:1px solid rgba(25,169,87,.32)}
.badge.b-naoiniciado{color:#9fb0c6;background:rgba(100,116,139,.16);border:1px solid rgba(100,116,139,.32)}

.c-payer{font-weight:600;color:var(--text-strong);font-size:15px;line-height:1.25;white-space:normal;overflow-wrap:normal;word-break:normal}
.c-payer small{display:block;font-size:12px;color:var(--muted);font-weight:500;margin-top:2px;text-transform:uppercase;letter-spacing:.06em}
.c-veh .c-fmot{display:block;text-transform:none;color:var(--muted);font-family:var(--mono);font-weight:500;font-size:9px;letter-spacing:.02em;line-height:1.2}
.c-veh .c-fmot b{display:block;color:var(--orange);font-weight:700;font-size:11.5px;letter-spacing:0;margin-top:1px}
.c-veh .c-fmot.c-vserv b{color:var(--green)}

/* abas de topo (Programação · Concluídas · Ocorrências) */
.main-tabs{display:flex;gap:2px;margin-bottom:16px;border-bottom:1px solid var(--panel-line)}
.main-tabs button{font-family:var(--mono);font-size:12.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:600;color:var(--ink-soft);padding:10px 16px;border-bottom:2px solid transparent;transition:all var(--t)}
.main-tabs button:hover{color:var(--text-strong)}
.main-tabs button.active{color:var(--orange);border-bottom-color:var(--orange)}

/* status cancelada + lista de ocorrências */
.badge.b-cancelada{color:var(--danger-text);background:rgba(217,56,56,.14);border:1px solid rgba(217,56,56,.32)}
.row.s-cancelada{border-left-color:var(--red)}
.row.is-cancelled{opacity:.6}
.row.is-cancelled:hover{opacity:.85}
.occ-list{display:flex;flex-direction:column;gap:12px;max-width:920px}
/* barra de filtros da aba Ocorrências */
.occ-bar{background:linear-gradient(160deg,var(--panel),var(--panel-2));border:1px solid var(--panel-line);border-radius:var(--radius);padding:14px 16px;margin-bottom:16px}
.occ-filters{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}
.occ-filters .of{display:flex;flex-direction:column;gap:5px;min-width:150px}
.occ-filters .of.grow{flex:1;min-width:220px}
.occ-filters .of label{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.occ-filters select,.occ-filters input{background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:8px;padding:9px 11px;color:var(--text-strong);font-size:14px;outline:none;font-family:inherit}
.occ-filters select:focus,.occ-filters input:focus{border-color:var(--blue)}
.occ-count{margin-top:12px;font-family:var(--mono);font-size:12px;color:var(--muted);letter-spacing:.04em}
/* card de ocorrência */
.occ .otype{font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--orange)}
.occ-badge{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:3px 9px;border-radius:20px;color:var(--text-strong);background:rgba(120,160,210,.16);border:1px solid var(--panel-line-strong)}
.occ-badge.os-0{color:#ffd166;background:rgba(230,167,0,.13);border-color:rgba(230,167,0,.3)}
.occ-badge.os-1{color:#7cc4ff;background:rgba(62,165,240,.13);border-color:rgba(62,165,240,.32)}
.occ-badge.os-2{color:var(--ok-text);background:rgba(25,169,87,.14);border-color:rgba(25,169,87,.32)}
.occ-badge.os-3{color:var(--danger-text);background:rgba(217,56,56,.14);border-color:rgba(217,56,56,.3)}
/* botão de registrar ocorrência no card */
.c-flag{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}
.occ-btn{width:26px;height:26px;border-radius:7px;display:flex;align-items:center;justify-content:center;background:rgba(242,117,7,.14);border:1px solid rgba(242,117,7,.38);color:var(--orange);transition:all var(--t)}
.occ-btn:hover{background:rgba(242,117,7,.26);transform:translateY(-1px)}
/* botão Histórico da operação no card + selo de não-lidos */
.hist-btn{position:relative;width:26px;height:26px;border-radius:7px;display:flex;align-items:center;justify-content:center;background:rgba(62,165,240,.14);border:1px solid rgba(62,165,240,.38);color:var(--blue-light);transition:all var(--t)}
.hist-btn:hover{background:rgba(62,165,240,.26);transform:translateY(-1px)}
.hist-badge{position:absolute;top:-6px;right:-6px;min-width:16px;height:16px;padding:0 4px;border-radius:20px;background:var(--red);color:#fff;font-family:var(--mono);font-size:9px;font-weight:700;display:flex;align-items:center;justify-content:center;line-height:1;box-shadow:0 0 0 2px var(--panel)}

/* Histórico da operação — modal */
.hist-search{display:flex;gap:8px;align-items:center;padding:12px 26px 0}
.hist-search input{flex:1;background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:30px;padding:9px 14px;color:var(--text-strong);font-size:14px;outline:none}
.hist-search input:focus{border-color:var(--blue)}
#hist-body{background:var(--field-bg)}
.hist-list{display:flex;flex-direction:column;gap:10px;padding:4px 0}
.hist-item{border:1px solid var(--panel-line);border-left:3px solid var(--slate);border-radius:9px;padding:10px 13px;background:var(--panel)}
.hist-item .hi-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:4px}
.hi-autor{font-size:13px;font-weight:700;color:var(--text-strong)}
.hi-date{font-family:var(--mono);font-size:11px;color:var(--muted)}
.hi-tag{margin-left:auto;font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);background:var(--field-bg);border:1px solid var(--panel-line-strong);padding:2px 8px;border-radius:20px}
.hi-body{font-size:14px;color:var(--ink-soft);line-height:1.5;word-break:break-word}
.hi-doc{margin-top:6px;font-size:12.5px;color:var(--blue-light);display:inline-flex;align-items:center;gap:5px}
.hi-body mark{background:rgba(242,117,7,.28);color:var(--text-strong);border-radius:3px;padding:0 2px}
/* diferenciação por tipo */
.hist-item.hi-msg{border-left-color:var(--blue-light);background:linear-gradient(160deg,rgba(62,165,240,.06),var(--panel))}
.hist-item.hi-msg .hi-body{color:var(--text-strong)}
.hist-item.he-ocorrencia{border-left-color:var(--red)}
.hist-item.he-documento{border-left-color:var(--green)}
.hist-item.he-fase,.hist-item.he-programacao,.hist-item.he-inicio,.hist-item.he-conclusao{border-left-color:var(--orange)}
.hist-item.he-cancelamento{border-left-color:var(--red)}
.hist-item.he-auditoria{border-left-color:var(--yellow)}
.hist-foot{display:flex;flex-direction:column;gap:8px;align-items:stretch;position:relative}
.hist-input-row{display:flex;gap:10px;align-items:center}
.hist-foot input{flex:1;background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:30px;padding:11px 16px;color:var(--text-strong);font-size:15px;outline:none}
.hist-foot input:focus{border-color:var(--blue)}

/* ---------- cores por usuário (a mesma pessoa, sempre a mesma cor) ---------- */
.ac-0{--au:var(--orange)}   /* Update automático — o registro do próprio sistema */
/* Registros automáticos: autor sempre em laranja, para separar de gente. */
.hist-item.hi-evt .hi-autor{color:var(--orange);font-weight:700}
.ac-1{--au:#5FA8E8}
.ac-2{--au:#F2872F}
.ac-3{--au:#3BD9C4}
.ac-4{--au:#C88BE8}
.ac-5{--au:#6FD48A}
.ac-6{--au:#F2C14E}
.ac-7{--au:#EF8A8A}
.ac-8{--au:#8C9EFF}
.hist-item.hi-msg{border-left:3px solid var(--au,var(--blue))}
.hist-item.hi-msg .hi-autor{color:var(--au,var(--text-strong));font-weight:700}
.hist-item.hi-eu{background:rgba(120,160,210,.06)}
.hist-item.hi-eu .hi-autor::after{content:'você';font-family:var(--mono);font-size:9px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--muted);border:1px solid var(--panel-line-strong);
  border-radius:4px;padding:1px 4px;margin-left:6px;font-weight:400}

/* dirigida a mim: menção ou resposta */
.hist-item.hi-pra-mim{background:rgba(242,117,7,.09);border-left-color:var(--orange);
  box-shadow:0 0 0 1px rgba(242,117,7,.22) inset}
.hi-flag{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--orange);font-weight:700;margin-bottom:5px}

/* botão responder */
.hi-resp{margin-left:auto;background:none;border:0;padding:3px;color:var(--muted);cursor:pointer;
  border-radius:5px;opacity:0;transition:all var(--t);line-height:0}
.hist-item:hover .hi-resp,.hi-resp:focus-visible{opacity:1}
.hi-resp:hover{color:var(--orange);background:var(--field-bg)}
@media(hover:none){ .hi-resp{opacity:.7} }

/* citação da mensagem respondida */
.hi-cit{border-left:2px solid var(--au,var(--panel-line-strong));background:var(--field-bg);
  border-radius:0 8px 8px 0;padding:6px 10px;margin:0 0 7px;display:flex;flex-direction:column;gap:1px}
.hi-cit-autor{font-size:11.5px;font-weight:700;color:var(--au,var(--ink-soft))}
.hi-cit-txt{font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* menção dentro do texto */
.hi-mencao{color:var(--au,var(--blue-light));font-weight:600;background:rgba(120,160,210,.12);
  border-radius:5px;padding:0 4px}
.hi-mencao.eu{background:rgba(242,117,7,.18);color:var(--orange)}

/* barra "respondendo a" */
.hist-resp-bar{display:flex;align-items:center;gap:10px;background:var(--field-bg);
  border:1px solid var(--panel-line-strong);border-left:3px solid var(--orange);
  border-radius:9px;padding:8px 12px}
.hr-info{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}
.hr-lbl{font-family:var(--mono);font-size:9.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.hr-nome{font-size:13px;font-weight:700;color:var(--text-strong)}
.hr-txt{font-size:12px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hr-x{background:none;border:0;color:var(--muted);font-size:15px;cursor:pointer;padding:4px 6px;border-radius:6px;flex:none}
.hr-x:hover{color:var(--text-strong);background:var(--panel-2)}

/* lista de menção (@) */
.hist-ment{position:absolute;bottom:100%;left:0;right:0;margin-bottom:8px;z-index:5;
  background:var(--panel);border:1px solid var(--panel-line-strong);border-radius:12px;
  box-shadow:0 -8px 30px rgba(0,0,0,.35);overflow:hidden;max-height:260px;overflow-y:auto}
.hm-item{display:flex;align-items:center;gap:10px;width:100%;background:none;border:0;
  padding:10px 13px;cursor:pointer;text-align:left;border-bottom:1px solid var(--panel-line)}
.hm-item:last-child{border-bottom:0}
.hm-item.sel,.hm-item:hover{background:var(--panel-2)}
.hm-av{width:28px;height:28px;border-radius:8px;background:var(--au,var(--blue));color:#08203a;
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex:none}
.hm-nome{font-size:14px;color:var(--text-strong);font-weight:600}
.hm-role{margin-left:auto;font-family:var(--mono);font-size:10px;text-transform:uppercase;
  letter-spacing:.07em;color:var(--muted)}

/* selo do card: @ quando falaram com você */
.hist-badge.hb-mencao{background:var(--orange);color:#fff;font-weight:700}
/* toggle de configurações */
.set-toggle{display:flex;gap:10px;align-items:flex-start;cursor:pointer;font-size:13.5px;color:var(--ink-soft);line-height:1.45}
.set-toggle input{width:18px;height:18px;margin-top:1px;accent-color:var(--orange);flex:none;cursor:pointer}

/* =====================================================================
   AVALIAÇÃO DE MOTORISTAS · estrelas, ranking, bloqueios
   ===================================================================== */
/* botão no card (abaixo do Histórico da operação) */
.aval-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;
  border-radius:7px;border:1px solid var(--panel-line-strong);background:transparent;color:var(--muted);cursor:pointer;transition:all var(--t)}
.aval-btn:hover{color:var(--yellow);border-color:var(--yellow)}
.aval-btn.aval-ok{color:var(--yellow);border-color:rgba(230,167,0,.45)}
/* sem motorista ainda: visível, mas apagado — mostra que a função existe */
.aval-btn.aval-off{color:var(--muted);opacity:.5;border-style:dashed}
.aval-btn.aval-off:hover{opacity:.85;color:var(--orange);border-color:var(--orange)}
.aval-btn.aval-pend{color:var(--orange);border-color:var(--orange);animation:avalPulse 2.4s ease-in-out infinite}
@keyframes avalPulse{0%,100%{box-shadow:0 0 0 0 rgba(242,117,7,.35)}50%{box-shadow:0 0 0 4px rgba(242,117,7,0)}}
.aval-badge{position:absolute;top:-4px;right:-4px;min-width:13px;height:13px;padding:0 3px;border-radius:7px;
  background:var(--orange);color:#fff;font-size:9px;font-weight:700;line-height:13px;text-align:center}

/* estrelas */
.stars{display:inline-flex;gap:6px}
.star{background:none;border:0;padding:0;cursor:pointer;color:var(--panel-line-strong);transition:transform .12s,color var(--t);line-height:0}
.star svg{display:block}
.stars-lg .star svg{width:46px;height:46px}
.stars-sm .star svg{width:20px;height:20px}
.star.on,.star.hover{color:var(--yellow)}
.star:hover{transform:scale(1.12)}
.star:focus-visible{outline:2px solid var(--orange);outline-offset:3px;border-radius:4px}
.av-off{color:var(--panel-line-strong)}

/* formulário de avaliação */
.av-forcado{background:rgba(242,117,7,.12);border:1px solid rgba(242,117,7,.4);border-radius:10px;padding:13px 15px;
  font-size:13.5px;line-height:1.55;color:var(--text-strong);margin-bottom:18px}
.av-antecipada{background:rgba(95,168,232,.10);border:1px solid rgba(95,168,232,.40);border-radius:10px;
  padding:13px 15px;font-size:13.5px;line-height:1.6;color:var(--ink-soft);margin-bottom:18px}
.av-antecipada b{color:var(--text-strong)}
.av-driver{display:flex;align-items:center;gap:13px;padding-bottom:16px;border-bottom:1px solid var(--panel-line)}
.av-av{width:44px;height:44px;border-radius:12px;background:var(--blue);color:#fff;display:flex;align-items:center;
  justify-content:center;font-weight:700;font-size:18px;flex:none}
.av-driver-nome{font-size:16px;font-weight:600;color:var(--text-strong)}
.av-driver-sub{font-size:12.5px;color:var(--ink-soft);font-family:var(--mono)}
.av-geral{display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px 0 6px;text-align:center}
.av-geral .set-lbl{margin:0}
.av-geral-txt{font-size:14px;color:var(--ink-soft);min-height:21px}
.av-geral-txt b{color:var(--yellow);font-size:15px}
/* nota geral = média dos critérios (calculada, não escolhida) */
.av-media{display:flex;align-items:center;gap:16px}
.av-media-n{font-size:46px;font-weight:700;color:var(--text-strong);line-height:1;font-variant-numeric:tabular-nums;min-width:86px;text-align:right}
.av-media-stars .star{cursor:default;color:var(--panel-line-strong)}
.av-media-stars .star:hover{transform:none}
.av-media-stars .star.on{color:var(--yellow)}
.av-media-stars .star.meia{color:var(--yellow);opacity:.45}
.av-media-stars .star svg{width:34px;height:34px}
.av-prog{width:100%;max-width:340px;height:5px;border-radius:3px;background:var(--panel-line);overflow:hidden;margin-top:6px}
.av-prog i{display:block;height:100%;background:var(--yellow);border-radius:3px;transition:width .35s cubic-bezier(.2,.7,.3,1)}
.av-conta{font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--muted);margin-top:2px}
.av-conta.ok{color:var(--green)}
.av-crit.feito>span{color:var(--text-strong)}
.av-crit.falta{background:rgba(242,117,7,.10);border-radius:8px;padding-left:8px;padding-right:8px}
.av-crit.falta>span{color:var(--orange);font-weight:600}
.sect-ttl .av-obr{margin-left:8px}
.av-crits{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px 22px}
.av-crit{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--panel-line)}
.av-crit>span{font-size:13.5px;color:var(--ink-soft)}
.av-obr{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--orange);
  border:1px solid currentColor;border-radius:4px;padding:1px 5px;margin-left:6px}
#av-coment{width:100%;background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:9px;
  padding:11px 13px;color:var(--text-strong);font-family:var(--sans);font-size:14px;outline:none;resize:vertical}
#av-coment:focus{border-color:var(--blue)}
#av-coment.req{border-color:var(--orange)}
.av-bloq-check{padding:12px 14px;border:1px solid rgba(217,56,56,.35);border-radius:10px;background:rgba(217,56,56,.06)}
.av-lock{text-align:center;padding:34px 20px}
.av-lock-ttl{font-size:16px;font-weight:600;color:var(--text-strong);margin-bottom:10px}
.av-lock p{font-size:13.5px;color:var(--ink-soft);line-height:1.6;max-width:440px;margin:0 auto 8px}

/* avaliação já registrada */
.av-done-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}
.av-nota-big{font-size:34px;letter-spacing:2px;color:var(--yellow);line-height:1.1}
.av-nota-txt{font-size:13.5px;color:var(--ink-soft);margin-top:4px}
.av-meta{display:flex;flex-direction:column;gap:3px;text-align:right;font-size:12.5px;color:var(--ink-soft)}
.av-meta b{color:var(--text-strong)}
.av-anulada{color:#E86A6A;font-weight:600}
.av-trecho{margin-top:10px;font-size:13px;color:var(--ink-soft)}
.av-crit-grid{margin-top:18px;padding-top:14px;border-top:1px solid var(--panel-line);display:grid;
  grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px 22px}
.av-crit-row{display:flex;justify-content:space-between;gap:10px;font-size:13px;color:var(--ink-soft)}
.av-crit-row b{color:var(--yellow);letter-spacing:1px}
.av-coment{margin-top:16px;padding:12px 14px;background:var(--field-bg);border-radius:10px;border:1px solid var(--panel-line)}
.av-coment .k{font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft)}
.av-coment p{margin:6px 0 0;font-size:14px;color:var(--text-strong);line-height:1.55;white-space:pre-wrap}
.av-bloq-flag{margin-top:12px;font-size:12.5px;color:#E86A6A;font-weight:600}

/* aba Avaliações · indicadores */
.rk-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:16px}
.rk-kpi{background:linear-gradient(160deg,var(--panel),var(--panel-2));border:1px solid var(--panel-line);
  border-radius:11px;padding:12px 14px;display:flex;flex-direction:column;gap:3px}
.rk-kpi span{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft)}
.rk-kpi b{font-size:22px;color:var(--text-strong);font-weight:600}
.rk-kpi.rk-warn{border-left:3px solid var(--orange)} .rk-kpi.rk-warn b{color:var(--orange)}
.rk-kpi.rk-bad{border-left:3px solid #D93838} .rk-kpi.rk-bad b{color:#E86A6A}

.rk-bar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:8px}
.rk-bar input[type=search]{flex:1;min-width:220px;background:var(--field-bg);border:1px solid var(--panel-line-strong);
  border-radius:9px;padding:9px 13px;color:var(--text-strong);font-size:14px;outline:none}
.rk-bar input[type=search]:focus{border-color:var(--blue)}
.rk-bar select{background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:9px;
  padding:9px 11px;color:var(--text-strong);font-size:13px;outline:none;cursor:pointer}
.rk-bar .rk-export{width:auto;padding:9px 14px;font-size:13px}
.rk-nota-exp{font-size:11.5px;line-height:1.5;margin:0 0 14px}

/* cards do ranking */
.rk-list{display:flex;flex-direction:column;gap:9px}
.rk-card{display:flex;align-items:center;gap:14px;background:linear-gradient(160deg,var(--panel),var(--panel-2));
  border:1px solid var(--panel-line);border-left:3px solid var(--green);border-radius:12px;padding:13px 16px;
  cursor:pointer;transition:all var(--t)}
.rk-card:hover{border-color:var(--panel-line-strong);transform:translateX(2px)}
.rk-card:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.rk-card.rk-bloq{border-left-color:#D93838;opacity:.85}
.rk-card.rk-obs{border-left-color:var(--orange)}
.rk-card.rk-novo{border-left-color:var(--muted)}
.rk-pos{font-family:var(--mono);font-size:13px;color:var(--muted);min-width:24px;text-align:right;flex:none}
.rk-av{width:40px;height:40px;border-radius:11px;background:var(--blue);color:#fff;display:flex;align-items:center;
  justify-content:center;font-weight:700;font-size:16px;flex:none}
.rk-card.rk-bloq .rk-av{background:#8a2f2f}
.rk-main{flex:1;min-width:0}
.rk-nome{font-size:15px;font-weight:600;color:var(--text-strong);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rk-sub{font-size:12.5px;color:var(--ink-soft);margin-top:2px}
.rk-tag{font-size:10.5px;font-weight:600;padding:2px 7px;border-radius:20px;border:1px solid currentColor;white-space:nowrap}
.rk-tag-ok{color:var(--green)} .rk-tag-bad{color:#E86A6A} .rk-tag-warn{color:var(--orange)} .rk-tag-new{color:var(--muted)}
.rk-nota{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex:none}
.rk-stars{color:var(--yellow);font-size:14px;letter-spacing:1px}
.rk-nota b{font-size:19px;color:var(--text-strong)}
.rk-neg{font-size:11px;color:#E86A6A}

/* card expandido do motorista */
.modal.wide{max-width:1080px}
.mot-bloq{background:rgba(217,56,56,.10);border:1px solid rgba(217,56,56,.4);border-radius:11px;padding:14px 16px;margin-bottom:18px}
.mot-bloq-ttl{font-size:15px;font-weight:600;color:#E86A6A;margin-bottom:10px}
.mot-hero{display:flex;gap:26px;align-items:flex-start;flex-wrap:wrap}
.mot-nota{display:flex;flex-direction:column;align-items:center;gap:4px;padding:16px 22px;background:var(--field-bg);
  border:1px solid var(--panel-line);border-radius:12px;flex:none;min-width:150px}
.mot-nota-n{font-size:42px;font-weight:700;color:var(--text-strong);line-height:1}
.mot-crits{flex:1;min-width:280px;display:flex;flex-direction:column;gap:7px}
.mot-crit{display:grid;grid-template-columns:1fr 90px 34px;gap:10px;align-items:center;font-size:12.5px;color:var(--ink-soft)}
.mot-bar{height:5px;border-radius:3px;background:var(--panel-line);overflow:hidden}
.mot-bar i{display:block;height:100%;background:var(--yellow);border-radius:3px;transition:width .5s cubic-bezier(.2,.7,.3,1)}
.mot-crit b{color:var(--text-strong);text-align:right;font-size:12.5px}
.mot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px 20px}
.mot-grid>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.mot-grid span{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-soft)}
.mot-grid b{font-size:13.5px;color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mot-veics{display:flex;gap:10px;flex-wrap:wrap}
.mot-veic{display:flex;align-items:center;gap:9px;padding:9px 13px;background:var(--field-bg);border:1px solid var(--panel-line);border-radius:9px;font-size:13px}
.mot-veic.bloq{border-color:rgba(217,56,56,.45)}
.mot-veic b{color:var(--text-strong);font-family:var(--mono)}
.mot-veic span{color:var(--ink-soft);font-size:12px}
.mot-veic .mot-bv{width:auto;padding:4px 9px;font-size:11.5px}
.mot-busca{width:100%;background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:9px;
  padding:9px 13px;color:var(--text-strong);font-size:13.5px;outline:none;margin-bottom:10px}
.mot-scroll{overflow-x:auto;max-height:330px;overflow-y:auto;border:1px solid var(--panel-line);border-radius:10px}
.mot-tbl{min-width:840px;font-size:12.5px}
.mot-tbl tr.mot-row{cursor:pointer}
.mot-tbl tr.mot-row:hover td{background:rgba(120,160,210,.08)}
.mot-avals{display:flex;flex-direction:column;gap:10px;max-height:380px;overflow-y:auto}
.mot-aval{background:var(--field-bg);border:1px solid var(--panel-line);border-radius:10px;padding:12px 14px}
.mot-aval.anulada{opacity:.6}
.ma-top{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:baseline}
.ma-nota{color:var(--yellow);letter-spacing:1px;font-size:14px}
.ma-nota b{color:var(--text-strong);margin-left:5px}
.ma-sub{font-size:12px;color:var(--ink-soft);margin-top:3px}
.ma-oc{color:var(--orange)} .ma-bl{color:#E86A6A} .ma-an{color:var(--muted)}
.ma-com{margin:8px 0 0;font-size:13.5px;color:var(--text-strong);line-height:1.55;white-space:pre-wrap}
.ma-crits{margin-top:8px;display:flex;gap:12px;flex-wrap:wrap;font-size:11.5px;color:var(--ink-soft)}
.ma-crits b{color:var(--yellow)}
.mot-edic>div,.mot-bloqs .mot-bl{font-size:12.5px;color:var(--ink-soft);padding:9px 0;border-bottom:1px solid var(--panel-line)}
.mot-bloqs .mot-bl p{margin:5px 0 0;color:var(--text-strong)}
.mot-bl-rev{margin-top:5px;color:var(--green)}

/* bloqueio */
.bloq-resumo{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px 18px;
  padding:14px;background:var(--field-bg);border:1px solid var(--panel-line);border-radius:10px}
.bloq-resumo>div{display:flex;flex-direction:column;gap:2px}
.bloq-resumo span{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-soft)}
.bloq-resumo b{font-size:14px;color:var(--text-strong)}
.bloq-veics{display:flex;flex-direction:column;gap:8px}
.bloq-aviso{margin-top:18px;padding:13px 15px;background:rgba(217,56,56,.10);border:1px solid rgba(217,56,56,.4);
  border-radius:10px;font-size:13px;line-height:1.55;color:var(--text-strong)}
#bloq-body textarea,#bloq-body input[type=text],#bloq-body select{width:100%;background:var(--field-bg);
  border:1px solid var(--panel-line-strong);border-radius:9px;padding:10px 12px;color:var(--text-strong);
  font-family:var(--sans);font-size:14px;outline:none}
#bloq-body textarea:focus,#bloq-body input:focus,#bloq-body select:focus{border-color:var(--blue)}

/* alerta de bloqueio (impede a contratação) */
.bloq-alerta{text-align:left}
.bloq-ttl{font-size:17px;font-weight:700;color:#E86A6A;margin-bottom:6px}
.bloq-alerta p{font-size:13.5px;color:var(--ink-soft);line-height:1.55;margin:0 0 12px}
.bloq-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px 16px}
.bloq-grid>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.bloq-grid span{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-soft)}
.bloq-grid b{font-size:13px;color:var(--text-strong);word-break:break-word}
.bloq-orient{margin-top:12px !important;font-size:12.5px !important;color:var(--muted) !important}

@media(max-width:760px){
  .stars-lg .star svg{width:38px;height:38px}
  .rk-card{flex-wrap:wrap}
  .rk-nota{width:100%;flex-direction:row;align-items:center;gap:8px;justify-content:flex-start;padding-left:38px}
  .mot-hero{flex-direction:column}
  .mot-nota{width:100%}
  .av-crits{grid-template-columns:1fr}
  .rk-bar select,.rk-bar .rk-export{flex:1}
}

/* visualizar / baixar anexo */
.btn-ver{display:inline-flex;align-items:center;gap:7px;background:var(--blue);color:#fff;border:0;
  border-radius:8px;padding:8px 14px;font-family:var(--sans);font-size:13.5px;font-weight:600;
  cursor:pointer;transition:all var(--t)}
.btn-ver:hover{filter:brightness(1.12);transform:translateY(-1px)}
.btn-ver svg{flex:none}
.btn-baixar{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;
  background:transparent;color:var(--ink-soft);border:1px solid var(--panel-line-strong);
  border-radius:8px;cursor:pointer;transition:all var(--t)}
.btn-baixar:hover{color:var(--text-strong);border-color:var(--blue);background:var(--field-bg)}

/* administração · backups */
.bk-hero{border:1px solid var(--panel-line);border-radius:12px;padding:16px 18px;background:linear-gradient(160deg,var(--panel),var(--panel-2))}
.bk-hero-ok{border-left:3px solid var(--green)}
.bk-hero-err{border-left:3px solid #D93838}
.bk-none{border-left:3px solid var(--orange)}
/* backup em andamento — barra de progresso */
.bk-hero-run{border-left:3px solid var(--blue-light)}
.bk-run-top{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:12px}
.bk-run-pct{font-size:26px;font-weight:700;color:var(--blue-light);font-variant-numeric:tabular-nums;flex:none}
.bk-prog{height:8px;border-radius:5px;background:var(--field-bg);border:1px solid var(--panel-line);overflow:hidden;position:relative}
.bk-prog i{display:block;height:100%;border-radius:5px;
  background:linear-gradient(90deg,var(--blue),var(--blue-light));
  transition:width .6s cubic-bezier(.2,.7,.3,1)}
/* listras animadas: mostram que ALGO está acontecendo mesmo numa etapa longa */
.bk-prog i::after{content:'';position:absolute;inset:0;border-radius:5px;
  background-image:linear-gradient(115deg,transparent 25%,rgba(255,255,255,.16) 25% 50%,transparent 50% 75%,rgba(255,255,255,.16) 75%);
  background-size:22px 22px;animation:bkStripes 1s linear infinite}
@keyframes bkStripes{from{background-position:0 0}to{background-position:22px 0}}
.bk-prog-wait i{background:linear-gradient(90deg,var(--orange),var(--yellow));animation:bkWait 1.6s ease-in-out infinite}
@keyframes bkWait{0%,100%{opacity:.55}50%{opacity:1}}
@media (prefers-reduced-motion: reduce){
  .bk-prog i::after,.bk-prog-wait i{animation:none}
}
.bk-hero-top{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap}
.bk-hero-ttl{font-size:15px;font-weight:600;color:var(--text-strong)}
.bk-hero-sub{font-size:12.5px;color:var(--ink-soft);margin-top:2px}
.bk-hero p{font-size:13px;color:var(--ink-soft);margin:8px 0 0;line-height:1.5}
.bk-pill{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;padding:4px 10px;border-radius:20px;border:1px solid currentColor;flex:none}
.bk-ok{color:var(--green)} .bk-err{color:#E86A6A} .bk-wait{color:var(--orange)}
.bk-ok-txt{color:var(--green)} .bk-err-txt{color:#E86A6A}
.bk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px 18px;margin-top:14px;padding-top:14px;border-top:1px solid var(--panel-line)}
.bk-grid>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.bk-grid span{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft)}
.bk-grid b{font-size:13.5px;color:var(--text-strong);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bk-grid .bk-wide{grid-column:1/-1}
.bk-grid code{font-size:11px;color:var(--ink-soft);word-break:break-all;white-space:normal}
.bk-alert{margin-top:12px;padding:12px 14px;border-radius:9px;background:rgba(217,56,56,.10);border:1px solid rgba(217,56,56,.35);font-size:13px;color:var(--text-strong);line-height:1.65}
.bk-bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:16px}
.bk-bar .btn-primary,.bk-bar .btn-ghost{width:auto;padding:9px 16px;font-size:13px}
.bk-next{font-size:12.5px;color:var(--ink-soft);margin-left:auto}
.bk-next b{color:var(--text-strong)}
.bk-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.bk-tbl{min-width:760px}
.bk-tbl td{vertical-align:middle;font-size:13px}
#settings-bkp .bk-hero{background:var(--panel-2)}
#settings-bkp .bk-bar{margin-top:14px}
.bk-acts{display:flex;gap:6px;justify-content:flex-end}
.bk-acts .btn-ghost{width:auto;padding:5px 10px;font-size:12px}
.bk-check{margin-top:16px;border:1px solid var(--panel-line);border-radius:12px;padding:16px 18px;background:var(--panel-2)}
.bk-check ul{margin:10px 0 0;padding-left:18px;font-size:13px;color:var(--ink-soft);line-height:1.75}
.bk-check code{font-size:11px;word-break:break-all}
.bk-tabelas{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:6px 16px;margin-top:8px}
.bk-tabelas>div{display:flex;justify-content:space-between;gap:8px;font-size:12.5px;color:var(--ink-soft);padding:4px 0;border-bottom:1px solid var(--panel-line)}
.bk-tabelas b{color:var(--text-strong)}
.bk-log{margin-top:8px;max-height:280px;overflow:auto;background:var(--field-bg);border:1px solid var(--panel-line);border-radius:9px;padding:12px;font-size:11.5px;line-height:1.6;color:var(--ink-soft);white-space:pre-wrap;word-break:break-word}
@media(max-width:760px){
  .bk-next{margin-left:0;width:100%}
  .bk-acts{justify-content:flex-start}
}

/* configurações · alertas sonoros */
.som-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px}
.som-row>label{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);min-width:118px;flex:none}
.som-row input[type=range]{flex:1;min-width:120px;accent-color:var(--orange)}
.som-row select,.som-row input[type=time]{background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:8px;padding:7px 10px;color:var(--text-strong);font-size:13px;outline:none}
.som-row select:focus,.som-row input[type=time]:focus{border-color:var(--blue)}
.som-val{font-size:12.5px;color:var(--ink-soft);min-width:34px}
.btn-ghost.som-test{padding:6px 12px;font-size:12.5px;width:auto}
.som-snooze{align-items:center}
.som-snooze .btn-ghost{padding:6px 11px;font-size:12.5px;width:auto}
.som-snooze .som-ativa{border-color:var(--orange);color:var(--orange)}
.som-cats{display:grid;grid-template-columns:repeat(auto-fill,minmax(212px,1fr));gap:9px 16px;margin:14px 0 12px;padding:12px 0;border-top:1px solid var(--panel-line);border-bottom:1px solid var(--panel-line)}
.som-cats .set-toggle{font-size:13px}
.som-crit{font-style:normal;font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--orange);border:1px solid currentColor;border-radius:4px;padding:0 4px;margin-left:5px;vertical-align:1px}
.som-log{margin-top:10px;max-height:230px;overflow:auto;border:1px solid var(--panel-line);border-radius:9px}
.som-log-row{display:grid;grid-template-columns:64px 1fr 118px 92px;gap:8px;align-items:center;padding:7px 10px;font-size:11.5px;color:var(--ink-soft);border-bottom:1px solid var(--panel-line)}
.som-log-row:last-child{border-bottom:0}
.som-log-row code{font-size:11px;color:var(--text-strong)}
.som-log-row b{font-weight:600;text-align:right}
.som-log-row .sl-reproduzido{color:var(--green)}
.som-log-row .sl-bloqueado,.som-log-row .sl-silenciado{color:var(--orange)}
.som-log-row .sl-duplicado,.som-log-row .sl-agrupado,.som-log-row .sl-ignorado{color:var(--ink-soft)}
/* notificação visual clicável (leva ao item relacionado) */
/* 22/10/2026: o .toast base tem pointer-events:none (para não roubar clique
   da tela enquanto some), e o aviso CLICÁVEL herdava isso — "Clique para
   abrir" e o "Desfazer" do avanço em 1 toque nunca recebiam o toque. */
#toast.clickable{cursor:pointer;box-shadow:0 10px 30px rgba(0,0,0,.35);pointer-events:auto;min-height:var(--etm-alvo,44px);display:flex;align-items:center}
#toast.clickable:hover{filter:brightness(1.08)}
@media(max-width:760px){
  .som-row>label{min-width:100%}
  .som-log-row{grid-template-columns:56px 1fr 78px;}
  .som-log-row span:nth-child(3){display:none}
}

/* aba "Não programadas" (pré-programação) */
.pre-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.pre-card{background:linear-gradient(160deg,var(--panel),var(--panel-2));border:1px solid var(--panel-line);border-left:3px solid var(--prog-blue);border-radius:11px;padding:14px 15px;cursor:pointer;transition:all var(--t)}
.pre-card:hover{border-color:var(--panel-line-strong);transform:translateY(-2px)}
.pre-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.pre-prop{font-family:var(--mono);font-size:13px;font-weight:700;color:var(--prog-blue)}
.pre-cli{font-size:15px;font-weight:600;color:var(--text-strong);line-height:1.25}
.pre-rota{font-size:13.5px;color:var(--ink-soft);margin-top:4px}
.pre-rota b{color:var(--text-strong);font-weight:600}.pre-rota .arr{color:var(--accent-text);font-weight:700}
.pre-meta{font-family:var(--mono);font-size:11.5px;color:var(--muted);margin-top:8px;letter-spacing:.03em}
.pre-fmot{font-size:12px;color:var(--ink-soft);margin-top:6px}.pre-fmot b{color:var(--orange);font-weight:700}
.pre-paste{background:linear-gradient(160deg,rgba(62,165,240,.09),var(--panel-2));border:1px solid var(--panel-line-strong);border-radius:11px;padding:14px 14px 12px;margin-bottom:20px}
.pre-paste label{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--blue-light);margin-bottom:8px}
.pre-paste textarea{width:100%;min-height:92px;background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:8px;padding:10px 12px;color:var(--text-strong);font-size:14px;outline:none;font-family:inherit;resize:vertical}
.pre-paste textarea:focus{border-color:var(--blue)}
.pre-badge{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:3px 8px;border-radius:20px;white-space:nowrap;color:var(--text-strong);background:rgba(120,160,210,.16);border:1px solid var(--panel-line-strong)}
.pre-badge.ps-0{color:#ffd166;background:rgba(230,167,0,.13);border-color:rgba(230,167,0,.3)}
.pre-badge.ps-1{color:#7cc4ff;background:rgba(62,165,240,.13);border-color:rgba(62,165,240,.32)}
.pre-badge.ps-2{color:var(--ok-text);background:rgba(25,169,87,.14);border-color:rgba(25,169,87,.32)}
.pre-badge.ps-3{color:var(--danger-text);background:rgba(217,56,56,.14);border-color:rgba(217,56,56,.3)}
.pre-badge.ps-4{color:#c9a0ff;background:rgba(155,123,240,.14);border-color:rgba(155,123,240,.34)}
.c-route{font-size:14px;color:var(--ink-soft);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.c-route b{color:var(--text-strong);font-weight:600}
.c-route .arr{color:var(--accent-text);font-weight:700}
.c-date .c-mod-wrap{display:block;margin-top:6px;text-align:center}
.c-date .c-mod-wrap i{display:block;font-style:normal;font-family:var(--mono);font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.c-mod{display:inline-flex;align-items:center;gap:6px;padding:4px 10px 4px 8px;border-radius:20px;
  background:var(--mod-tint);border:1px solid var(--mod-bd);
  font-family:var(--sans);font-size:11.5px;font-weight:700;color:var(--text-strong);line-height:1.2;letter-spacing:.01em;white-space:nowrap}
.c-mod::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--mod-c);flex:none;box-shadow:0 0 0 3px var(--mod-tint)}
.mod-0{--mod-c:#3EA5F0;--mod-tint:rgba(62,165,240,.16);--mod-bd:rgba(62,165,240,.45)}
.mod-1{--mod-c:#F2870A;--mod-tint:rgba(242,135,10,.16);--mod-bd:rgba(242,135,10,.45)}
.mod-2{--mod-c:#15C7B4;--mod-tint:rgba(21,199,180,.16);--mod-bd:rgba(21,199,180,.45)}
.mod-3{--mod-c:#9B7BF0;--mod-tint:rgba(155,123,240,.16);--mod-bd:rgba(155,123,240,.45)}
.mod-4{--mod-c:#F368A6;--mod-tint:rgba(243,104,166,.16);--mod-bd:rgba(243,104,166,.45)}
.mod-5{--mod-c:#35C877;--mod-tint:rgba(53,200,119,.16);--mod-bd:rgba(53,200,119,.45)}
.mod-6{--mod-c:#E9B00A;--mod-tint:rgba(233,176,10,.16);--mod-bd:rgba(233,176,10,.45)}
.mod-7{--mod-c:#F0654E;--mod-tint:rgba(240,101,78,.16);--mod-bd:rgba(240,101,78,.45)}
.c-veh{display:flex;flex-direction:column;align-items:stretch;gap:5px;text-align:center;min-width:0}
.veh-pill{font-family:var(--mono);font-size:12.5px;color:var(--ink-soft);background:var(--field-bg);border:1px solid var(--panel-line);border-radius:6px;padding:5px 6px;overflow-wrap:anywhere}

/* timeline */
.tl{display:flex;align-items:center;gap:0;width:100%}
.tl .node{position:relative;flex:1;display:flex;flex-direction:column;align-items:center}
.tl .dot{width:13px;height:13px;border-radius:50%;background:var(--slate);border:2px solid var(--bg);z-index:2;transition:all var(--t)}
.tl .seg{position:absolute;top:5px;left:50%;width:100%;height:3px;background:var(--slate);opacity:.4;z-index:1}
.tl .node:last-child .seg{display:none}
.tl .node.done .dot{background:var(--green)}
.tl .node.done .seg{background:var(--green);opacity:.7}
.tl .node.current .dot{background:var(--blue-light);box-shadow:0 0 0 4px rgba(62,165,240,.25);width:15px;height:15px}
.tl.prog .node.current .dot{background:var(--prog-blue);box-shadow:0 0 0 4px rgba(140,158,255,.30)}
.tl.prog .node.done .dot{background:var(--prog-blue)}
.tl.prog .node.done .seg{background:var(--prog-blue);opacity:.55}
.tl .node.late .dot{background:var(--red);box-shadow:0 0 0 4px rgba(217,56,56,.25);width:15px;height:15px;animation:blink 1.4s infinite}
@keyframes blink{50%{opacity:.45}}
.tl .node .tip{
  position:absolute;bottom:20px;left:50%;transform:translateX(-50%);
  font-family:var(--mono);font-size:11px;white-space:nowrap;color:var(--ink);
  background:var(--darkest);border:1px solid var(--panel-line-strong);padding:4px 8px;border-radius:6px;
  opacity:0;pointer-events:none;transition:opacity var(--t);z-index:5;
}
.tl .node:hover .tip{opacity:1}
.tl-stage{font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--ink-soft);margin-top:7px;text-align:center;text-transform:uppercase}
.tl-wrap{display:flex;flex-direction:column}

.c-flag{display:flex;justify-content:center}
.flag-occ{width:26px;height:26px;border-radius:7px;display:flex;align-items:center;justify-content:center;background:rgba(242,117,7,.16);border:1px solid rgba(242,117,7,.4);color:var(--orange);animation:blink 1.6s infinite}
.flag-ok{color:var(--muted);opacity:.4}

.empty{padding:60px;text-align:center;color:var(--muted);font-family:var(--mono);font-size:15px;letter-spacing:.06em}

/* ===================== MODAL ===================== */
.overlay{
  position:fixed;inset:0;background:rgba(2,9,20,.66);backdrop-filter:blur(4px);
  z-index:80;opacity:0;pointer-events:none;transition:opacity var(--t);
}
.overlay.show{opacity:1;pointer-events:auto}
.modal{
  position:fixed;top:0;right:0;height:100%;width:min(720px,96vw);z-index:90;
  background:linear-gradient(180deg,var(--darker),var(--bg));
  border-left:1px solid var(--panel-line-strong);
  transform:translateX(100%);transition:transform .32s cubic-bezier(.2,.7,.3,1);
  display:flex;flex-direction:column;
}
.modal.show{transform:none}
.m-head{padding:20px 26px;border-bottom:1px solid var(--panel-line);background:var(--field-bg)}
.m-head .top{display:flex;align-items:flex-start;gap:14px}
.m-head .oc{font-family:var(--mono);font-size:24px;font-weight:700;color:var(--accent-text)}
.m-head .ttl{font-size:19px;font-weight:700;color:var(--text-strong);margin-top:2px}
.m-head .sub{font-size:13.5px;color:var(--ink-soft);margin-top:4px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.m-head .sub .arr{color:var(--accent-text)}
/* Engrenagem no cabeçalho de um modal (hoje: configuração do BID ESAB).
   É ela que empurra o bloco para a direita; o ✕ vem colado ao lado. */
.m-gear{margin-left:auto;width:36px;height:36px;border-radius:9px;
  border:1px solid var(--panel-line-strong);color:var(--ink-soft);
  align-items:center;justify-content:center;transition:all var(--t);flex:0 0 auto;cursor:pointer;
  background:transparent}
.m-gear:hover{color:var(--text-strong);border-color:var(--blue);background:rgba(51,112,219,.12)}
.m-gear + .m-close{margin-left:8px}

.m-close{margin-left:auto;width:36px;height:36px;border-radius:9px;border:1px solid var(--panel-line-strong);color:var(--ink-soft);font-size:18px;display:flex;align-items:center;justify-content:center;transition:all var(--t);flex:0 0 auto}
.m-close:hover{color:var(--text-strong);border-color:var(--red);background:rgba(217,56,56,.12)}

.m-timeline{padding:16px 26px 4px}
.m-timeline .tl-stage{margin-top:9px}

.tabs{display:flex;gap:4px;padding:8px 22px 0;border-bottom:1px solid var(--panel-line)}
.tab{font-family:var(--mono);font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);padding:11px 14px;border-bottom:2px solid transparent;transition:all var(--t)}
.tab:hover{color:var(--text-strong)}
.tab.active{color:var(--accent-text);border-bottom-color:var(--orange)}
.tab .pill{display:inline-block;margin-left:6px;background:var(--orange);color:var(--text-strong);font-size:10.5px;border-radius:20px;padding:1px 6px;font-weight:700}

.m-body{flex:1;overflow-y:auto;padding:22px 26px 40px}
.panel{display:none}
.panel.active{display:block;animation:fadein .3s ease}
@keyframes fadein{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

.sect-ttl{font-family:var(--mono);font-size:11.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent-text);margin:0 0 14px;display:flex;align-items:center;gap:10px}
.sect-ttl::after{content:"";flex:1;height:1px;background:var(--panel-line)}
.sect-ttl:not(:first-child){margin-top:28px}
.dl{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--panel-line);border:1px solid var(--panel-line);border-radius:10px;overflow:hidden}
.dl .f{background:var(--panel);padding:12px 14px}
.dl .f.full{grid-column:span 2}
.dl .k{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:5px}
.dl .v{font-size:16px;color:var(--text-strong);font-weight:500;word-break:break-word}
.dl .v.mono{font-family:var(--mono);font-size:15px}
.dl .v a{color:var(--blue-light)}

/* monitoring */
.mon-card{background:var(--panel);border:1px solid var(--panel-line);border-radius:10px;padding:16px 18px;margin-bottom:12px}
.mon-card .label{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.mon-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.contact-note{font-size:13px;color:var(--ink-soft);background:rgba(62,165,240,.08);border:1px solid rgba(62,165,240,.22);border-radius:8px;padding:10px 13px;margin-top:10px;display:flex;gap:9px}
.contact-note b{color:var(--text-strong)}
textarea,.fld input,.fld select{
  width:100%;background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:8px;
  padding:10px 12px;color:var(--text-strong);font-size:15px;outline:none;font-family:inherit;transition:border var(--t);
}
textarea:focus,.fld input:focus,.fld select:focus{border-color:var(--blue)}
.doc-top{background:linear-gradient(160deg,rgba(62,165,240,.09),var(--panel-2));border:1px solid var(--panel-line-strong);border-radius:12px;padding:16px 16px 6px;margin-bottom:24px}
.doc-top-head{display:flex;gap:12px;align-items:flex-start;margin-bottom:14px}
.doc-top-ic{flex:none;width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;background:rgba(62,165,240,.16);border:1px solid rgba(62,165,240,.4);color:var(--blue-light)}
.doc-top-head b{display:block;font-size:15px;font-weight:700;color:var(--text-strong)}
.doc-top-head span{display:block;margin-top:2px;font-size:12.5px;color:var(--ink-soft);line-height:1.4}
.fld input.ocr-filled,.fld select.ocr-filled{border-color:var(--orange);background:rgba(242,117,7,.08);animation:ocrPulse 1.1s ease}
@keyframes ocrPulse{0%{box-shadow:0 0 0 0 rgba(242,117,7,.55)}100%{box-shadow:0 0 0 3px rgba(242,117,7,.16)}}
textarea{resize:vertical;min-height:70px}

/* occurrences */
.occ-list{display:flex;flex-direction:column;gap:10px;margin-bottom:18px}
.occ{background:var(--panel);border:1px solid var(--panel-line);border-left:3px solid var(--orange);border-radius:9px;padding:13px 15px}
.occ .oh{display:flex;align-items:center;gap:10px;margin-bottom:7px;flex-wrap:wrap}
.occ .otype{font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--orange)}
.occ .odate{font-family:var(--mono);font-size:12px;color:var(--muted);margin-left:auto}
.occ .rnc{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;background:rgba(217,56,56,.18);color:var(--danger-text);border:1px solid rgba(217,56,56,.35);padding:2px 7px;border-radius:20px;text-transform:uppercase}
.occ .odesc{font-size:15px;color:var(--ink);margin:4px 0}
.occ .oaction{font-size:13.5px;color:var(--ink-soft)}
.occ .oaction b{color:var(--text-strong);font-weight:600}
.occ .ometa{font-family:var(--mono);font-size:11.5px;color:var(--muted);margin-top:7px;letter-spacing:.04em}
.occ-empty{color:var(--muted);font-family:var(--mono);font-size:13.5px;padding:16px;text-align:center;border:1px dashed var(--panel-line-strong);border-radius:9px}

.fld{margin-bottom:11px}
.fld label{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:5px}
.fld-row{display:grid;grid-template-columns:1fr 1fr;gap:11px}
.chk{display:flex;align-items:center;gap:9px;font-size:14px;color:var(--ink);cursor:pointer;padding:9px 0}
.chk input{width:17px;height:17px;accent-color:var(--orange)}
.btn-add{background:linear-gradient(135deg,var(--orange),#d65c0a);color:var(--text-strong);font-weight:700;font-size:15px;border-radius:9px;padding:12px 18px;width:100%;transition:all var(--t);letter-spacing:.01em}
.btn-add:hover{filter:brightness(1.08);transform:translateY(-1px)}
.new-occ{background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:11px;padding:16px;margin-top:6px}

.m-foot{padding:14px 26px;border-top:1px solid var(--panel-line);background:var(--field-bg);display:flex;gap:10px;align-items:center}
.m-foot .updated{font-family:var(--mono);font-size:12px;color:var(--muted);letter-spacing:.04em}
.m-foot .spacer{flex:1}
.btn-ghost{border:1px solid var(--panel-line-strong);color:var(--ink-soft);border-radius:8px;padding:10px 16px;font-size:14px;font-weight:600;transition:all var(--t)}
.btn-ghost:hover{color:var(--text-strong);border-color:var(--blue)}
.btn-primary{background:var(--blue);color:var(--text-strong);border-radius:8px;padding:10px 18px;font-size:14px;font-weight:700;transition:all var(--t)}
.btn-primary:hover{background:var(--blue-mid)}

.toast{position:fixed;bottom:26px;left:50%;transform:translate(-50%,30px);background:var(--green);color:var(--text-strong);padding:12px 22px;border-radius:30px;font-family:var(--mono);font-size:13.5px;letter-spacing:.06em;opacity:0;pointer-events:none;transition:all var(--t);z-index:120;font-weight:600}
.toast.show{opacity:1;transform:translate(-50%,0)}

/* MacBook Air (13"/15") e telas médias: compacta verticalmente p/ ver mais cargas */
@media(max-width:1512px){
  .bar-inner,.wrap{padding-left:20px;padding-right:20px}
  .kpis{gap:8px;margin-bottom:14px}
  .kpi{padding:11px 12px}
  .kpi .num{font-size:27px}
  .toolbar{padding:12px 14px;margin-bottom:12px}
  .row{padding:12px 16px}
  .rows{gap:7px}
}
@media(max-width:1200px){
  .kpis{grid-template-columns:repeat(5,1fr)}
  :root{--grid:minmax(122px,.82fr) minmax(100px,.9fr) minmax(112px,1fr) minmax(130px,1.4fr) minmax(130px,1.4fr) minmax(80px,.8fr) minmax(175px,1.95fr) 40px}
  .tl-stage,.col-labels .l-veh{display:none}
}
/* ===================== MOBILE ===================== */
@media(max-width:820px){
  /* Cabeçalho do celular: duas linhas simétricas.
     1ª — marca à esquerda (ETMLOG | TMS), à direita só ícones do mesmo
          tamanho: avatar, engrenagem, sino, sair. Nome/perfil e "Início" saem
          (o avatar abre o perfil; a marca volta ao início).
     2ª — o título do módulo, pequeno e alinhado à esquerda, com um filete
          acima, para não disputar com a marca. */
  .bar-inner{grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:0 10px;padding:8px 14px 0;align-items:center}
  .bar-left{gap:10px;grid-column:1;grid-row:1;min-width:0}
  .bar-left .logo{height:22px}
  .bar-left .bar-sep{height:18px;margin:0 8px}
  .bar-left .bar-tms{height:16px}
  .bar-left .live{display:none}
  .bar-right{grid-column:2;grid-row:1;justify-self:end;gap:6px}
  .bar-right .user-chip{padding:0;border:0;background:none;gap:0}
  .bar-right .user-chip>div{display:none}
  .bar-right .user-chip .av{width:34px;height:34px;font-size:12px}
  .bar-right .settings-gear,.bar-right .notif-btn,.bar-right .hbtn{width:34px;height:34px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:9px;font-size:0}
  .bar-right .settings-gear svg,.bar-right .notif-btn svg{width:16px;height:16px}
  /* "Início" vira ícone de casa (pedido do Charles: a marca não é óbvia como
     botão de voltar ao menu de módulos). */
  .bar-right a.hbtn:not(.danger):not(.notif-btn)::before{content:"";width:16px;height:16px;display:block;background:currentColor;
    -webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 11l9-8 9 8'/><path d='M5 10v10h5v-6h4v6h5V10'/></svg>") center/contain no-repeat;
            mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 11l9-8 9 8'/><path d='M5 10v10h5v-6h4v6h5V10'/></svg>") center/contain no-repeat}
  .bar-right .hbtn.danger::before{content:"";width:16px;height:16px;display:block;background:currentColor;
    -webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4'/><path d='M16 17l5-5-5-5'/><path d='M21 12H9'/></svg>") center/contain no-repeat;
            mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4'/><path d='M16 17l5-5-5-5'/><path d='M21 12H9'/></svg>") center/contain no-repeat}
  .bar-right .notif-btn{position:relative}
  .bar-right .notif-badge{top:-4px;right:-4px}
  .bar-title{grid-column:1/-1;grid-row:2;justify-self:stretch;text-align:left;border-top:1px solid var(--panel-line);margin:8px -14px 0;padding:7px 14px}
  .bar-title b{font-size:14px;font-weight:600;letter-spacing:.01em;color:var(--ink-soft)}
  .bar-title b span{font-size:13px}
  .kpis{grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px}
  .kpi{padding:10px 11px}
  .kpi .num{font-size:23px}
  .kpi .lbl{font-size:9px}
  .wrap{padding:14px 12px 50px}
  .toolbar{padding:12px}
  .tb-top{flex-direction:column;align-items:stretch;gap:10px}
  .search{min-width:0}
  .filters{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .filters select{width:100%}
  .btn-clear{width:100%}
  .tb-bottom{flex-direction:column;align-items:flex-start;gap:10px}
  .view-info{margin-left:0}
  .col-labels{display:none}
  .row{grid-template-columns:1fr 1fr;gap:9px 12px;padding:14px 16px;position:relative}
  .row .c-payer,.row .c-route,.row .c-tl{grid-column:1/-1}
  .row .c-veh{justify-self:start}
  .row .c-flag{position:absolute;top:12px;right:12px}
  .modal{width:100vw}
  .m-head{padding:16px 16px}
  .m-body{padding:18px 16px 40px}
  .dl{grid-template-columns:1fr}
  .dl .f.full{grid-column:auto}
  .fld-row{grid-template-columns:1fr}
  .mon-grid{grid-template-columns:1fr}
  .m-foot{flex-wrap:wrap;gap:8px}
  .admin-table{font-size:12.5px}
}
/* Nada pode ser mais largo que a tela: quando as abas do topo (5 botões em
   fonte mono, sem quebra) passavam da borda, o Safari "afastava" a página
   inteira para caber, e tudo ficava ocupando 70% da largura. As abas viram uma
   faixa que rola para o lado, e a página trava na largura do aparelho. */
@media(max-width:820px){
  html,body{overflow-x:hidden;max-width:100vw}
  .wrap{max-width:100vw;overflow-x:clip}
  .main-tabs{overflow-x:auto;overflow-y:hidden;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none;margin-left:-12px;margin-right:-12px;padding:0 12px}
  .main-tabs::-webkit-scrollbar{display:none}
  .main-tabs button{white-space:nowrap;flex:0 0 auto;padding:10px 12px;font-size:11.5px}
  .kpi .lbl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .group-head .gh-ttl{font-size:11px}
}
@media(max-width:480px){
  .kpis{grid-template-columns:repeat(2,1fr)}
  .bar-left .logo{height:24px}
  .bar-title b{font-size:17px}
  .row{grid-template-columns:1fr}
  .row .c-veh{justify-self:stretch}
}

/* O card da programação no celular está logo depois das regras do card em
   lista (".row.opcard-list"), mais abaixo — a ordem no arquivo importa. */

/* ===================== AUTENTICAÇÃO / ADMIN / ESTADO VAZIO ===================== */
.view{display:none}
.view.active{display:block}

/* Login & troca de senha */
.auth-wrap{position:relative;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.auth-card{width:100%;max-width:420px;background:linear-gradient(160deg,var(--panel),var(--panel-2));
  border:1px solid var(--panel-line-strong);border-radius:18px;padding:36px 32px;
  box-shadow:0 30px 80px rgba(2,9,20,.5)}
.auth-card .logo{height:30px;width:auto;margin-bottom:22px}
/* Marca do produto (TMS) no topo da tela — separada do wordmark ETMLOG,
   que fica dentro do cartão. Vive no .auth-wrap, então some junto com a tela. */
.tms-mark{position:absolute;top:34px;left:50%;transform:translateX(-50%);
  height:34px;width:auto;opacity:.95;pointer-events:none}
.auth-card .logo-etm{height:30px;width:auto;display:block;margin:0 0 22px}
@media(max-height:700px){ .tms-mark{display:none} }
@media(max-width:560px){ .tms-mark{height:28px;top:24px} }
/* Abertura: sinal discreto de "estamos verificando", no lugar do login piscando. */
.boot-card{display:flex;flex-direction:column;align-items:center;gap:18px;text-align:center}
.boot-card .logo-etm{height:30px;width:auto;margin:0;opacity:.9}
.boot-spin{width:26px;height:26px;border-radius:50%;border:2.5px solid var(--panel-line-strong);
  border-top-color:var(--orange);animation:boot-gira .7s linear infinite}
@keyframes boot-gira{to{transform:rotate(360deg)}}
.boot-txt{font-size:13px;color:var(--ink-soft)}
@media(prefers-reduced-motion:reduce){ .boot-spin{animation-duration:2.4s} }
.auth-card h1{font-size:21px;font-weight:800;color:var(--text-strong);margin:0 0 4px;letter-spacing:-.02em}
.auth-card .sub{font-size:13.5px;color:var(--ink-soft);margin-bottom:24px}
.auth-field{margin-bottom:15px}
.auth-field label{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.auth-field input{width:100%;background:var(--field-bg);border:1px solid var(--panel-line-strong);
  border-radius:9px;padding:12px 14px;color:var(--text-strong);font-size:15px;outline:none;transition:border var(--t)}
.auth-field input:focus{border-color:var(--blue)}
.auth-btn{width:100%;background:linear-gradient(135deg,var(--orange),#d65c0a);color:var(--text-strong);font-weight:700;
  font-size:15px;border-radius:10px;padding:13px;margin-top:8px;transition:all var(--t)}
.auth-btn:hover{filter:brightness(1.08);transform:translateY(-1px)}
.auth-btn:disabled{opacity:.55;cursor:not-allowed;transform:none}
.auth-msg{margin-top:14px;font-size:13px;padding:10px 12px;border-radius:8px;display:none}
.auth-msg.err{display:block;background:rgba(217,56,56,.14);border:1px solid rgba(217,56,56,.32);color:var(--danger-text)}
.auth-msg.ok{display:block;background:rgba(25,169,87,.14);border:1px solid rgba(25,169,87,.32);color:#7be4a4}
.pw-rules{margin-top:12px;font-size:12px;color:var(--muted);line-height:1.7}
.pw-rules li{display:flex;align-items:center;gap:8px}
.pw-rules li.ok{color:var(--ok-text)}
.pw-rules li::before{content:"○";font-family:var(--mono)}
.pw-rules li.ok::before{content:"●";color:var(--ok-text)}

/* Header do app: chip de usuário + ações */
.user-chip{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--ink-soft)}
.user-chip .av{width:32px;height:32px;border-radius:9px;background:var(--blue);color:var(--text-strong);
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px}
.user-chip b{color:var(--text-strong);font-weight:600}
.user-chip .role{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--orange);background:rgba(242,117,7,.12);padding:2px 7px;border-radius:20px}
/* Serve para <button> e para <a> (o "Início" é um link de verdade, para poder
   abrir em nova aba com o meio do mouse). Daí text-decoration e background. */
.hbtn{border:1px solid var(--panel-line-strong);color:var(--ink-soft);border-radius:8px;
  padding:8px 13px;font-size:12.5px;font-weight:600;transition:all var(--t);display:inline-flex;align-items:center;gap:7px;
  text-decoration:none;background:none;font-family:inherit;cursor:pointer}
.hbtn:hover{color:var(--text-strong);border-color:var(--blue)}
.hbtn.danger:hover{border-color:var(--red);color:var(--text-strong);background:rgba(217,56,56,.12)}

/* Estado vazio */
.empty-state{padding:80px 30px;text-align:center;max-width:560px;margin:40px auto}
.empty-state .ic{width:74px;height:74px;border-radius:20px;margin:0 auto 22px;
  display:flex;align-items:center;justify-content:center;background:rgba(62,165,240,.1);
  border:1px solid rgba(62,165,240,.25);color:var(--blue-light)}
.empty-state h2{font-size:22px;color:var(--text-strong);font-weight:800;margin:0 0 10px;letter-spacing:-.02em}
.empty-state p{font-size:14.5px;color:var(--ink-soft);line-height:1.6}
.empty-state .mono-note{font-family:var(--mono);font-size:12px;color:var(--muted);margin-top:18px;
  background:var(--field-bg);border:1px solid var(--panel-line);border-radius:10px;padding:14px 16px;display:inline-block}

/* Admin de usuários */
.admin-table{width:100%;border-collapse:collapse;font-size:14px;margin-top:6px}
.admin-table th{text-align:left;font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--muted);padding:10px 12px;border-bottom:1px solid var(--panel-line)}
.admin-table td{padding:12px;border-bottom:1px solid var(--panel-line);color:var(--ink)}
.admin-table tr:hover td{background:rgba(2,15,31,.3)}
.role-pill{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;
  padding:3px 9px;border-radius:20px;border:1px solid var(--panel-line-strong);color:var(--ink-soft)}
.role-pill.admin{color:var(--danger-text);border-color:rgba(217,56,56,.35);background:rgba(217,56,56,.1)}
.role-pill.operacao{color:var(--info-text);border-color:rgba(62,165,240,.32);background:rgba(62,165,240,.1)}
.role-pill.comercial{color:var(--warn-text);border-color:rgba(230,167,0,.3);background:rgba(230,167,0,.1)}
.tag-inactive{font-family:var(--mono);font-size:10px;color:var(--muted)}

/* ===================== NOTIFICAÇÃO DE EXCLUSÃO + FADE-IN DE NOVA CARGA ===================== */
.notif-btn{position:relative}
.notif-badge{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;padding:0 4px;border-radius:20px;background:var(--red);color:var(--text-strong);font-family:var(--mono);font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;line-height:1;box-shadow:0 0 0 2px var(--bg)}
@keyframes rowFadeIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
/* Destaque quando uma NOVA carga é programada: pisca 2x suavemente em 5s (verde) */
@keyframes rowNewBlink{
  0%,55%,100%{box-shadow:0 0 0 0 rgba(25,169,87,0);background:linear-gradient(160deg,var(--panel),var(--panel-2))}
  10%,40%{box-shadow:0 0 0 2px rgba(25,169,87,.55), -6px 8px 34px rgba(25,169,87,.22);background:linear-gradient(160deg,rgba(25,169,87,.13),var(--panel-2))}
  25%{box-shadow:0 0 0 0 rgba(25,169,87,0);background:linear-gradient(160deg,var(--panel),var(--panel-2))}
}
.row.is-new{animation:rowFadeIn .5s ease, rowNewBlink 5s ease}

/* ===================== CAIXA DE CONFIRMAÇÃO ===================== */
.confirm-overlay{position:fixed;inset:0;background:rgba(2,9,20,.72);backdrop-filter:blur(4px);z-index:130;display:none;align-items:center;justify-content:center;padding:24px}
.confirm-overlay.show{display:flex}
.confirm-box{width:100%;max-width:380px;background:linear-gradient(160deg,var(--panel),var(--panel-2));border:1px solid var(--panel-line-strong);border-radius:16px;padding:28px 26px;box-shadow:0 30px 80px rgba(2,9,20,.6);text-align:center}
.confirm-msg{font-size:17px;font-weight:600;color:var(--text-strong);margin-bottom:22px;line-height:1.4}
.confirm-extra:empty{display:none}
.confirm-extra{margin:-8px 0 20px}
.confirm-select{width:100%;font-family:inherit;font-size:15px;padding:11px 13px;border-radius:10px;
  background:var(--field-bg);color:var(--text-strong);border:1px solid var(--panel-line-strong)}
.confirm-select:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(51,112,219,.18)}
.confirm-actions{display:flex;gap:12px}
.confirm-btn{flex:1;padding:12px;border-radius:10px;font-size:14.5px;font-weight:700;transition:all var(--t)}
.confirm-btn.no{border:1px solid var(--panel-line-strong);color:var(--ink-soft)}
.confirm-btn.no:hover{color:var(--text-strong);border-color:var(--blue)}
.confirm-btn.yes{background:var(--red);color:var(--text-strong)}
.confirm-btn.yes:hover{filter:brightness(1.08)}
/* A caixa de confirmação nasceu para "Sim, excluir" — daí o vermelho. Quando
   ela é usada para uma escolha comum (trocar perfil), o vermelho comunica
   perigo onde não há. Esta variante deixa o botão neutro. */
.confirm-btn.yes.neutro{background:var(--blue)}

/* ---------- notificação persistente de atualização de carga ---------- */
.upd-overlay{position:fixed;inset:0;background:rgba(2,9,20,.74);backdrop-filter:blur(5px);z-index:125;display:none;align-items:center;justify-content:center;padding:24px}
.upd-overlay.show{display:flex}
.upd-modal{width:100%;max-width:480px;max-height:88vh;display:flex;flex-direction:column;background:linear-gradient(160deg,var(--panel),var(--panel-2));border:1px solid rgba(242,117,7,.45);border-radius:16px;box-shadow:0 30px 90px rgba(2,9,20,.65),0 0 0 1px rgba(242,117,7,.12);overflow:hidden;animation:updPop .28s ease}
@keyframes updPop{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}
.upd-head{display:flex;gap:13px;align-items:flex-start;padding:20px 22px 16px;border-bottom:1px solid var(--panel-line);background:linear-gradient(160deg,rgba(242,117,7,.12),transparent)}
.upd-head-ic{flex:none;width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:rgba(242,117,7,.16);border:1px solid rgba(242,117,7,.4);color:var(--orange);animation:blink 1.8s infinite}
.upd-head-txt b{display:block;font-size:16px;font-weight:700;color:var(--text-strong);letter-spacing:.01em}
.upd-head-txt span{display:block;margin-top:3px;font-size:12.5px;color:var(--ink-soft);line-height:1.45}
.upd-body{padding:16px 20px 20px;overflow-y:auto}
.upd-card{background:var(--panel);border:1px solid var(--panel-line);border-left:3px solid var(--orange);border-radius:11px;padding:15px 16px}
.upd-card + .upd-card{margin-top:14px}
.upd-ident{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.upd-badge{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;font-weight:700;color:var(--orange);background:rgba(242,117,7,.13);border:1px solid rgba(242,117,7,.34);padding:3px 9px;border-radius:20px}
.upd-oc{font-family:var(--mono);font-size:15px;font-weight:700;color:var(--text-strong)}
.upd-route{margin-top:9px;font-size:15px;color:var(--ink-soft)}
.upd-route b{color:var(--text-strong);font-weight:700}
.upd-route .arr{color:var(--accent-text);font-weight:700;margin:0 4px}
.upd-sub{margin:15px 0 9px;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--orange)}
.upd-changes{display:flex;flex-direction:column;gap:8px}
.upd-change{display:flex;gap:11px;align-items:flex-start;background:var(--panel-2);border:1px solid var(--panel-line);border-radius:9px;padding:11px 12px;cursor:pointer;transition:all var(--t)}
.upd-change:hover{border-color:rgba(242,117,7,.4)}
.upd-change:has(.upd-chk:checked){border-color:rgba(25,169,87,.5);background:rgba(25,169,87,.08)}
.upd-chk{flex:none;width:18px;height:18px;margin-top:1px;accent-color:var(--green);cursor:pointer}
.upd-change-txt{font-size:13.5px;color:var(--text-strong);line-height:1.5}
.upd-change-txt b{display:block;font-size:12px;font-weight:600;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.05em;margin-bottom:3px}
.upd-diff{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.upd-de{color:var(--danger-text);text-decoration:line-through;text-decoration-color:rgba(255,154,154,.55)}
.upd-arrow{color:var(--orange);font-weight:700}
.upd-para{color:#7be6a6;font-weight:600}
.upd-ack{width:100%;margin-top:15px}
.upd-ack:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.3)}

/* Destaque quando uma carga é ATUALIZADA: pisca 2x suavemente ao longo de 5s */
@keyframes rowUpdateBlink{
  0%,55%,100%{box-shadow:0 0 0 0 rgba(242,117,7,0);background:linear-gradient(160deg,var(--panel),var(--panel-2))}
  10%,40%{box-shadow:0 0 0 2px rgba(242,117,7,.55), -6px 8px 34px rgba(242,117,7,.22);background:linear-gradient(160deg,rgba(242,117,7,.13),var(--panel-2))}
  25%{box-shadow:0 0 0 0 rgba(242,117,7,0);background:linear-gradient(160deg,var(--panel),var(--panel-2))}
}
.row.is-updated{animation:rowUpdateBlink 5s ease}

/* ===================== TEMA CLARO (fundo predominantemente branco) ===================== */
body.theme-light{
  --bg:#e6edf5;
  --darker:#eaf0f7;
  --darkest:#e0e8f1;
  --panel:#ffffff;
  --panel-2:#f3f6fa;
  --panel-line:rgba(14,35,56,.18);
  --panel-line-strong:rgba(14,35,56,.32);
  --ink:#1b2b40;
  --ink-soft:#3f5570;
  --muted:#566E8A;                 /* era #748bab: 3,5:1 sobre branco, abaixo de AA */
  --accent-text:#A34A00;           /* laranja de LEITURA: o #F27507 dá 2,9:1 sobre branco */
  --text-strong:#0e2338;
  --field-bg:#eef3f9;
  --header-bg:rgba(255,255,255,.88);
  --prog-blue:#4f5bd6;
  --sec-prog-accent:#B4761A; --sec-prog-wash:rgba(180,118,26,.10); --sec-prog-chip:rgba(180,118,26,.15);
  --sec-exec-accent:#0E9E82; --sec-exec-wash:rgba(14,158,130,.11); --sec-exec-chip:rgba(14,158,130,.16);
  --ok-text:#0B6835;               /* 5,9:1 sobre a lavagem verde dos selos */
  --danger-text:#A82323;           /* 5,9:1 sobre a lavagem vermelha dos selos */           /* 5,8:1 sobre branco — mesmo tom já usado em .badge.b-atraso */
  --info-text:#1A5FB4;             /* 5,7:1 sobre a lavagem azul */
  --warn-text:#8A5200;             /* 5,8:1 sobre a lavagem laranja */
  --emph-wash-text:#8A5200;        /* branco sobre laranja claro dava 1,15:1 */
  color:var(--ink);
  background:
    radial-gradient(1100px 560px at 82% -12%,rgba(51,112,219,.10),transparent 60%),
    radial-gradient(820px 460px at -10% 110%,rgba(242,117,7,.06),transparent 55%),
    linear-gradient(180deg,#f5f8fb,#e6edf5 42%);
}
body.theme-light .bar-left .logo{color:#0e2338}
body.theme-light .panel,body.theme-light .card{box-shadow:0 1px 2px rgba(8,39,68,.05),0 8px 22px rgba(8,39,68,.10)}
/* texto branco preservado sobre superfícies coloridas */
body.theme-light .btn-primary,
body.theme-light .btn-add,
body.theme-light .auth-btn,
body.theme-light .toast,
body.theme-light .tab .pill,
body.theme-light .user-chip .av,
body.theme-light .notif-badge,
body.theme-light .confirm-btn.yes{color:#fff}
/* scrollbar clara */
body.theme-light ::-webkit-scrollbar-thumb{background:rgba(20,50,90,.22)}
/* tooltip da timeline permanece escura, com texto claro */
body.theme-light .tl .node .tip{background:#0e2338;color:#fff;border-color:rgba(0,0,0,.18)}
/* selos de status com tom mais escuro para contraste no claro */
body.theme-light .badge.b-atraso{color:var(--danger-text)}
body.theme-light .badge.b-pendente{color:var(--warn-text)}
body.theme-light .badge.b-execucao{color:var(--info-text)}
body.theme-light .badge.b-realizada{color:var(--ok-text)}
body.theme-light .badge.b-naoiniciado{color:var(--muted)}
body.theme-light .role-pill.admin{color:#c02a2a}
body.theme-light .admin-table tr:hover td{background:rgba(20,50,90,.05)}
body.theme-light .sect-ttl{color:var(--accent-text)}
/* engrenagem de configurações */
.settings-gear{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:9px;border:1px solid var(--panel-line-strong);color:var(--ink-soft);transition:all var(--t)}
.settings-gear:hover{color:var(--text-strong);border-color:var(--orange);transform:rotate(35deg)}
.set-group{margin-bottom:22px}
.set-group > .set-lbl{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--orange);margin-bottom:10px;display:block}
.theme-options{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.theme-opt{display:flex;flex-direction:column;gap:8px;align-items:flex-start;padding:14px;border:1px solid var(--panel-line-strong);border-radius:11px;cursor:pointer;transition:all var(--t);background:var(--panel-2)}
.theme-opt:hover{border-color:var(--orange)}
.theme-opt.active{border-color:var(--orange);box-shadow:0 0 0 1px var(--orange) inset}
.theme-opt .swatch{width:100%;height:46px;border-radius:8px;border:1px solid var(--panel-line)}
.theme-opt .swatch.dark{background:linear-gradient(160deg,#0e2848,#0a1d33)}
.theme-opt .swatch.light{background:linear-gradient(160deg,#ffffff,#eef3f9)}
.theme-opt .swatch.malha{position:relative;overflow:hidden;background:linear-gradient(170deg,#0B2340,#15406C)}
.theme-opt .swatch.malha::before{content:'';position:absolute;inset:0;
  background-image:linear-gradient(rgba(150,190,235,.16) 1px,transparent 1px),linear-gradient(90deg,rgba(150,190,235,.16) 1px,transparent 1px);
  background-size:11px 11px;background-position:center;
  -webkit-mask-image:radial-gradient(circle at 50% 55%,#000 30%,transparent 78%);mask-image:radial-gradient(circle at 50% 55%,#000 30%,transparent 78%)}
.theme-opt .swatch.malha::after{content:'';position:absolute;left:50%;top:55%;width:7px;height:7px;margin:-3.5px 0 0 -3.5px;border-radius:50%;
  background:#F2872F;box-shadow:0 0 0 3px rgba(242,135,47,.22),0 0 12px 3px rgba(242,135,47,.55);
  animation:malhaSwatch 3.4s ease-out infinite}
@keyframes malhaSwatch{0%{box-shadow:0 0 0 2px rgba(242,135,47,.30),0 0 10px 2px rgba(242,135,47,.5)}
  70%{box-shadow:0 0 0 12px rgba(242,135,47,0),0 0 14px 4px rgba(242,135,47,.28)}
  100%{box-shadow:0 0 0 2px rgba(242,135,47,0),0 0 10px 2px rgba(242,135,47,.5)}}
.theme-opt .to-name{font-size:14px;font-weight:600;color:var(--text-strong)}
.theme-opt .to-check{font-family:var(--mono);font-size:11px;color:var(--orange);opacity:0}
.theme-opt.active .to-check{opacity:1}

/* =====================================================================
   TEMA · MALHA VIVA
   Inspirado na home do etmlog.com.br: azul náutico profundo, malha
   técnica que não termina na moldura, âmbar como evento raro e quente.
   O movimento é periférico — sentido, não visto. Nada estala, nada salta.
   ===================================================================== */
body.theme-malha{
  --bg:#0B2340;
  --darker:#081B33;
  --darkest:#061426;
  --panel:#102D4F;
  --panel-2:#143761;
  --panel-line:rgba(150,190,235,.14);
  --panel-line-strong:rgba(150,190,235,.26);
  --ink:#E8F0FA;
  --ink-soft:#9FB6D2;
  --muted:#8FA8C4;                 /* era #6E88A8: 3,8:1 sobre o painel */
  --text-strong:#FFFFFF;
  --orange:#F2872F;                     /* âmbar-farol da home */
  --blue-light:#5FA8E8;
  --field-bg:rgba(6,20,38,.55);
  --header-bg:rgba(9,28,52,.86);
  --prog-blue:#8FB4E4;
  --sec-prog-accent:#F5B63C; --sec-prog-wash:rgba(245,182,60,.14); --sec-prog-chip:rgba(245,182,60,.22);
  --sec-exec-accent:#3BD9C4; --sec-exec-wash:rgba(59,217,196,.15); --sec-exec-chip:rgba(59,217,196,.24);
  color:var(--ink);
  background:
    radial-gradient(1250px 620px at 78% -14%,rgba(95,168,232,.17),transparent 62%),
    radial-gradient(900px 520px at -8% 108%,rgba(242,135,47,.09),transparent 56%),
    linear-gradient(180deg,#061426,#0B2340 44%,#123A63 100%);
  background-attachment:fixed;
}

/* --- a malha: linhas finíssimas que atravessam a moldura e derivam --- */
body.theme-malha::before{
  content:'';position:fixed;inset:-60px;z-index:-1;pointer-events:none;
  background-image:
    linear-gradient(rgba(150,190,235,.055) 1px,transparent 1px),
    linear-gradient(90deg,rgba(150,190,235,.055) 1px,transparent 1px);
  background-size:64px 64px;
  -webkit-mask-image:radial-gradient(1200px 700px at 62% 8%,#000 0%,rgba(0,0,0,.55) 45%,transparent 82%);
  mask-image:radial-gradient(1200px 700px at 62% 8%,#000 0%,rgba(0,0,0,.55) 45%,transparent 82%);
  animation:malhaDeriva 62s linear infinite;   /* deriva de sombra, não de engrenagem */
}
@keyframes malhaDeriva{from{transform:translate3d(0,0,0)}to{transform:translate3d(-64px,-64px,0)}}

/* --- poeira luminosa suspensa: nós da rede respirando fora de fase --- */
body.theme-malha::after{
  content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;
  background-image:
    radial-gradient(circle,rgba(95,168,232,.85) 0 1.4px,transparent 2px),
    radial-gradient(circle,rgba(242,135,47,.75) 0 1.4px,transparent 2px),
    radial-gradient(circle,rgba(150,190,235,.55) 0 1.2px,transparent 2px),
    radial-gradient(circle,rgba(95,168,232,.55) 0 1.2px,transparent 2px);
  background-position:14% 24%, 71% 17%, 88% 62%, 33% 78%;
  background-size:100% 100%;
  background-repeat:no-repeat;
  animation:malhaRespira 9s ease-in-out infinite;
  opacity:.9;
}
@keyframes malhaRespira{0%,100%{opacity:.35}50%{opacity:.95}}

/* A atmosfera (malha + poeira) fica em z-index -1: pintada sobre o fundo do body
   e sob todo o conteúdo. NUNCA usar `body > * {position:relative}` aqui — isso
   quebraria o `position:fixed` dos modais e das sobreposições. */

/* --- linha de sinal sob o cabeçalho: um pulso que atravessa e se dissolve --- */
body.theme-malha header.bar{border-bottom:1px solid rgba(150,190,235,.18);overflow:hidden}
body.theme-malha header.bar::after{
  content:'';position:absolute;left:0;bottom:-1px;height:1px;width:34%;
  background:linear-gradient(90deg,transparent,rgba(95,168,232,.15) 18%,var(--orange) 50%,rgba(95,168,232,.15) 82%,transparent);
  box-shadow:0 0 10px 1px rgba(242,135,47,.35);
  animation:malhaSinal 11s cubic-bezier(.45,0,.55,1) infinite;
}
@keyframes malhaSinal{
  0%{transform:translateX(-100%);opacity:0}
  12%{opacity:1}
  76%{opacity:1}
  92%{opacity:0}
  100%{transform:translateX(320%);opacity:0}
}

/* --- o nó tem direito ao brilho pleno: a etapa em execução --- */
body.theme-malha .tl .node.done:last-of-type,
body.theme-malha .kpi.active{box-shadow:0 0 0 1px rgba(242,135,47,.35) inset,0 0 18px -4px rgba(242,135,47,.45)}

/* --- telemetria: rótulos como leitura de instrumento --- */
body.theme-malha .sect-ttl,
body.theme-malha .set-group > .set-lbl{letter-spacing:.18em}
body.theme-malha .c-oc .oc{color:var(--orange)}

/* --- superfícies coloridas mantêm o texto branco --- */
body.theme-malha .btn-primary,
body.theme-malha .btn-add,
body.theme-malha .auth-btn,
body.theme-malha .toast,
body.theme-malha .tab .pill,
body.theme-malha .user-chip .av,
body.theme-malha .notif-badge,
body.theme-malha .confirm-btn.yes{color:#fff}
body.theme-malha ::-webkit-scrollbar-thumb{background:rgba(95,168,232,.30)}

/* Movimento é convite, nunca imposição. */
@media (prefers-reduced-motion: reduce){
  body.theme-malha::before,
  body.theme-malha::after,
  body.theme-malha header.bar::after,
  .theme-opt .swatch.malha::after{animation:none}
  body.theme-malha header.bar::after{opacity:.55;transform:translateX(60%)}
}

/* visualizador de anexo (abre dentro do painel — visualizar não baixa) */
.doc-modal{max-width:1000px}
.doc-body{padding:0;background:#0a0f16;display:flex;align-items:center;justify-content:center;min-height:60vh}
.doc-frame{width:100%;height:72vh;border:0;display:block;background:#525659}
.doc-img-wrap{width:100%;height:72vh;overflow:auto;display:flex;align-items:center;justify-content:center;padding:16px}
.doc-img{max-width:100%;max-height:100%;object-fit:contain;border-radius:8px;
  box-shadow:0 10px 40px rgba(0,0,0,.45);background:#fff}
.btn-baixar{gap:7px;width:auto;padding:8px 14px;font-family:var(--sans);font-size:13.5px;font-weight:600;height:auto}
@media(max-width:760px){
  .doc-frame,.doc-img-wrap{height:62vh}
}

/* rastreabilidade Ploomes no cabeçalho do card (negócio · proposta · venda) */
.m-rastreio{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px}
.m-rastreio .rt-lbl{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.rt-chip{display:inline-flex;align-items:center;gap:6px;background:var(--field-bg);
  border:1px solid var(--panel-line);border-radius:20px;padding:4px 11px;font-size:12px}
.rt-chip .rt-k{color:var(--ink-soft)}
.rt-chip b{color:var(--text-strong);font-family:var(--mono);font-size:12px}

/* hierarquia Proposta / Venda no card (visível sem abrir) */
.c-oc .c-prop{color:var(--ink-soft);font-weight:600}
.c-oc .c-venda{color:var(--orange);font-weight:600}
.c-oc .c-venda.c-venda-canc{color:var(--danger-text);text-decoration:line-through}
.c-oc .c-legado{display:inline-block;color:#e6b800;background:rgba(230,184,0,.12);border:1px solid rgba(230,184,0,.3);
  border-radius:20px;padding:0 7px;font-size:9.5px;letter-spacing:.04em;text-transform:uppercase;width:max-content}
.row.has-venda-canc{box-shadow:inset 3px 0 0 #E86A6A}

/* alertas de rastreio (venda cancelada / card legado) + vínculo manual */
.rt-alert{flex-basis:100%;width:100%;font-size:12.5px;line-height:1.5;border-radius:10px;padding:10px 13px;margin-top:4px}
.rt-alert.rt-canc{color:#ffcaca;background:rgba(217,56,56,.12);border:1px solid rgba(217,56,56,.32)}
.rt-alert.rt-legado{color:var(--ink);background:rgba(230,184,0,.08);border:1px solid rgba(230,184,0,.28)}
.rt-alert b{color:var(--text-strong)}
.rt-link{display:flex;gap:8px;flex-wrap:wrap;margin-top:9px}
.rt-link input{flex:1;min-width:130px;background:var(--field-bg);border:1px solid var(--panel-line-strong);
  border-radius:8px;padding:8px 11px;color:var(--text-strong);font-size:13px;outline:none}
.rt-link input:focus{border-color:var(--blue)}
.rt-link .btn-ghost{width:auto;padding:8px 14px;white-space:nowrap}

/* reprocessar Ploomes (configurações · admin/operação) */
.rp-row{display:flex;gap:10px;flex-wrap:wrap}
.rp-row input{flex:1;min-width:200px;background:var(--field-bg);border:1px solid var(--panel-line-strong);
  border-radius:9px;padding:10px 13px;color:var(--text-strong);font-size:14px;outline:none}
.rp-row input:focus{border-color:var(--blue)}
.rp-row .btn-primary{width:auto;padding:10px 18px}
.rp-res{margin-top:14px;border:1px solid var(--panel-line);border-radius:11px;padding:14px 16px;background:var(--field-bg)}
.rp-res.rp-ok{border-left:3px solid var(--green)}
.rp-res.rp-warn{border-left:3px solid var(--orange)}
.rp-res.rp-err{border-left:3px solid #D93838;color:#E86A6A}
.rp-big{font-size:17px;font-weight:700;color:var(--text-strong);margin-bottom:8px}
.rp-res ul{margin:0;padding-left:18px;font-size:13.5px;color:var(--ink-soft);line-height:1.7}
.rp-res b{color:var(--text-strong)}
.rp-dica{font-size:12.5px;line-height:1.55;color:var(--ink-soft);margin:10px 0 0}
.rp-dica code{font-family:var(--mono);font-size:11.5px;color:var(--orange)}
.rp-diag{margin:10px 0;background:var(--darkest);border:1px solid var(--panel-line);border-radius:8px;
  padding:11px 13px;font-family:var(--mono);font-size:12px;line-height:1.7;color:var(--ink-soft);white-space:pre-wrap;word-break:break-word}

/* ===================== Dados de coleta e entrega ===================== */
.ce-form .ce-sec{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid var(--panel-line)}
.ce-form .ce-sec:last-of-type{border-bottom:0}
.ce-cnpj-row{display:flex;gap:10px;align-items:flex-end}
.ce-cnpj-row .fld{flex:1;margin:0}
/* A lista de clientes flutua sobre o formulário: empurrar o conteúdo para
   baixo faria o botão Consultar fugir do dedo enquanto a pessoa digita. */
.ce-cnpj-fld{position:relative}
.ce-sug{position:absolute;top:100%;left:0;right:0;z-index:60;margin-top:4px;
  max-height:286px;overflow-y:auto;background:var(--panel-2,var(--panel));
  border:1px solid var(--panel-line-strong);border-radius:11px;
  box-shadow:0 18px 44px rgba(2,9,20,.5)}
.ce-sug[hidden]{display:none}
.ce-sug-op{display:flex;gap:11px;align-items:center;width:100%;text-align:left;
  padding:9px 12px;background:transparent;border:0;cursor:pointer;font-family:inherit;
  border-bottom:1px solid var(--panel-line)}
.ce-sug-op:last-child{border-bottom:0}
.ce-sug-op:hover,.ce-sug-op.on{background:rgba(51,112,219,.14)}
.ce-sug-ic{width:28px;height:28px;border-radius:50%;flex:none;display:grid;place-items:center;
  background:var(--blue);color:#fff;font-weight:700;font-size:13px}
.ce-sug-txt{min-width:0}
.ce-sug-txt b{display:block;font-size:13.4px;color:var(--ink);font-weight:600;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ce-sug-sub{display:block;font-family:var(--mono);font-size:11.5px;color:var(--muted);margin-top:1px}
.ce-sug-vazio{padding:13px 14px;font-size:13px;color:var(--ink-soft);line-height:1.5}
.ce-buscar{width:auto;padding:0 16px;white-space:nowrap;height:42px;display:inline-flex;align-items:center;margin:0;flex:none}
.ce-status{font-size:12.5px;margin-top:7px;min-height:18px;display:flex;align-items:center;gap:7px}
.ce-status.ce-ok{color:var(--green)}
.ce-status.ce-erro{color:#E86A6A}
.ce-status.ce-aviso{color:var(--orange)}
.ce-status.ce-loading{color:var(--ink-soft)}
.ce-status .ce-refazer,.ce-status .ce-refazer{background:none;border:0;color:var(--blue-light);cursor:pointer;text-decoration:underline;font-size:12px;padding:0}
.ce-spin{width:12px;height:12px;border:2px solid var(--panel-line-strong);border-top-color:var(--blue);border-radius:50%;display:inline-block;animation:ceSpin .7s linear infinite}
.ce-cep-status{font-size:11.5px;margin-top:4px;min-height:15px;display:flex;align-items:center;gap:6px}
.ce-cep-status.ce-ok{color:var(--green)}
.ce-cep-status.ce-aviso{color:var(--orange)}
.ce-cep-status.ce-loading{color:var(--ink-soft)}
@keyframes ceSpin{to{transform:rotate(360deg)}}
.ce-cad{margin-top:10px}
.ce-cad-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:9px 16px;
  background:var(--field-bg);border:1px solid var(--panel-line);border-radius:10px;padding:13px 15px}
.ce-cad-grid>div{display:flex;flex-direction:column;gap:1px;min-width:0}
.ce-cad-grid span{font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.ce-cad-grid b{font-size:13px;color:var(--text-strong);word-break:break-word}
.ce-mesmo{font-size:13.5px}
.ce-resp{margin-top:14px}
.ce-resp-ttl{font-family:var(--mono);font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--orange);margin-bottom:9px}
.ce-form textarea{width:100%;background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:9px;
  padding:9px 12px;color:var(--text-strong);font-family:var(--sans);font-size:14px;outline:none;resize:vertical}
.ce-form textarea:focus{border-color:var(--blue)}
.ce-actions{display:flex;gap:10px;align-items:center;margin-top:8px}
.ce-actions .btn-primary,.ce-actions .btn-ghost{width:auto;padding:10px 18px}

/* resumo */
.ce-res-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.ce-res-card{background:var(--field-bg);border:1px solid var(--panel-line);border-left:3px solid var(--blue);border-radius:12px;padding:15px 16px}
.ce-res-card:last-child{border-left-color:var(--orange)}
.ce-res-h{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:9px}
.ce-res-nome{font-size:15.5px;font-weight:600;color:var(--text-strong);line-height:1.3}
.ce-res-doc{font-family:var(--mono);font-size:12px;color:var(--ink-soft);margin:2px 0 10px}
.ce-res-end{font-size:13px;color:var(--ink-soft);line-height:1.55}
.ce-tag{display:inline-block;font-size:10px;padding:2px 7px;border-radius:20px;margin-top:6px;font-weight:600}
.ce-tag-cad{background:rgba(51,112,219,.14);color:var(--blue-light)}
.ce-tag-man{background:rgba(242,135,47,.14);color:var(--orange)}
.ce-res-resp{font-size:13px;color:var(--text-strong);margin-top:11px;padding-top:11px;border-top:1px solid var(--panel-line)}
.ce-res-resp b{color:var(--ink-soft);font-weight:600}
.ce-res-obs{font-size:12.5px;color:var(--ink-soft);margin-top:5px;white-space:pre-wrap}
.ce-res-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;flex-wrap:wrap}
@media(max-width:760px){ .ce-res-grid{grid-template-columns:1fr} .ce-cnpj-row{flex-wrap:wrap} .ce-buscar{width:100%} }

/* O aviso de nova versão saiu daqui: virou a Central de atualizações
   (avisos.css). O CSS do modal antigo foi removido junto com o JS que o
   desenhava — estilo órfão só engorda um arquivo que já é grande. */

/* ============================================================================
 * NOVO CARD — Lista (dimensão atual) + Grade (mini-mapa animado por status)
 * ========================================================================== */
/* ---- barra: botão global de sincronizar + seletor lista/grade ---- */
.nc-viewbar{margin-left:auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.gsync{display:inline-flex;align-items:center;gap:7px;font-family:var(--sans);font-size:12.5px;font-weight:500;color:var(--ink-soft);background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:8px;padding:7px 11px;cursor:pointer;transition:all var(--t)}
.gsync:hover{color:var(--text-strong);border-color:var(--orange)}
.gsync svg{width:14px;height:14px}
.gsync .gsync-last{font-family:var(--mono);font-size:9.5px;color:var(--muted)}
@keyframes ncspin{to{transform:rotate(360deg)}}
.gsync.spinning svg{animation:ncspin .8s linear infinite}
.nc-seg{display:inline-flex;background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:10px;padding:4px;gap:3px}
.nc-seg button{display:inline-flex;align-items:center;justify-content:center;color:var(--ink-soft);border:0;background:none;cursor:pointer;padding:7px 10px;border-radius:7px;transition:all var(--t)}
.nc-seg button.on{background:var(--orange);color:#fff}
.nc-seg button svg{width:16px;height:16px}

/* ---- CARD EM LISTA (mesma dimensão do card atual) ---- */
.row.opcard-list{grid-template-columns:minmax(112px,1fr) minmax(116px,1fr) minmax(104px,.85fr) minmax(150px,1.45fr) minmax(140px,1.3fr) minmax(138px,1.3fr) minmax(118px,.95fr) minmax(150px,1.7fr) auto;gap:14px;align-items:stretch;padding:13px 15px}
.row.opcard-list.s-atraso{border-left-color:#FF6B6B}
.row.opcard-list.s-pendente{border-left-color:#3EA5F0}
.row.opcard-list.s-execucao{border-left-color:#22D3EE}
.row.opcard-list.s-realizada{border-left-color:#2FE38C}
.row.opcard-list.s-naoiniciado{border-left-color:#8C9EFF}
.opcard-list .nc-cell{min-width:0;display:flex;flex-direction:column}
.opcard-list .nc-cell>.nc-k{order:-1;margin-bottom:0}
.opcard-list .nc-cell::before,.opcard-list .nc-cell::after{content:"";flex:1 1 0;min-height:6px}
.nc-body{display:flex;flex-direction:column;gap:5px;min-width:0}
.nc-status{gap:8px;align-items:flex-start}
.nc-k{font-family:var(--mono);font-size:9px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);line-height:1.1}
.nc-kk{font-family:var(--mono);font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);display:block;margin-bottom:2px}
.nc-v{font-size:13px;color:var(--ink);font-weight:500;line-height:1.2}
.nc-v.strong{color:var(--text-strong);font-weight:600}
.nc-v.mono{font-family:var(--mono)}
.nc-v.nc-empty,.nc-empty{color:var(--muted);font-style:italic;font-weight:400;font-size:12px}
.nc-muted{color:var(--muted)!important}
.nc-line{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Campo obrigatório ainda em branco. Marca o próprio campo em vez de só
   mostrar um aviso que some: o aviso passa, a borda fica até ser preenchida. */
.campo-faltando{border-color:var(--orange) !important;
  box-shadow:0 0 0 3px rgba(242,117,7,.16) !important}

.nc-bigdate{font-family:var(--mono);font-size:14px;font-weight:600;color:var(--text-strong)}
/* Sem data de transporte, o destaque fica apagado em vez de sumir: a ausência
   tem que ocupar o mesmo espaço da data, senão o card "conserta" sozinho o que
   está faltando e ninguém percebe que falta. */
.nc-bigdate-vazia{color:var(--muted);font-weight:400;font-style:italic;font-size:12.5px}
.nc-mini{display:flex;flex-direction:column;gap:1px}
.nc-arr{color:var(--orange);font-weight:700}
.nc-veh{display:inline-block;font-family:var(--mono);font-size:11px;line-height:1.1;color:var(--ink);background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:6px;padding:4px 9px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}
.nc-sync{font-family:var(--mono);font-size:9px;color:var(--muted);letter-spacing:.02em}
.nc-canc{color:var(--danger-text)!important}
.nc-fincell{border-left:1px solid var(--panel-line);padding-left:14px}
.nc-fin{display:flex;flex-direction:column}
.nc-money{font-family:var(--mono);font-weight:700;font-size:13px}
.nc-money.frete{color:var(--yellow)}.nc-money.serv{color:var(--green)}
.nc-tlwrap{min-width:0}
.nc-stage{font-family:var(--mono);font-size:9px;color:var(--muted);letter-spacing:.04em;text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nc-actcell .nc-body{align-items:center;justify-content:center}
.nc-acts{display:flex;flex-direction:column;gap:6px;align-items:center}

/* ===================== CARD DA PROGRAMAÇÃO NO CELULAR =====================
   O card em lista é uma grade de 9 colunas feita para monitor; no celular ela
   estourava a tela. Este bloco PRECISA vir depois de ".row.opcard-list"
   acima (mesma especificidade: a última regra vence) — na primeira tentativa
   ele estava antes, e o monitor continuou mandando no telefone. Vira um
   cartão de duas colunas: data e identificação, status e cliente, rota em
   linha cheia, veículo, financeiro lado a lado, linha do tempo e as ações em
   fila horizontal com alvo de toque. */
@media(max-width:820px){
  .rows .row.opcard-list{grid-template-columns:1fr 1fr;gap:12px 14px;padding:14px 14px 12px;align-items:start;min-width:0;width:100%}
  .rows .opcard-list .nc-cell::before,.rows .opcard-list .nc-cell::after{display:none}
  .rows .opcard-list .nc-cell>.nc-k{margin-bottom:5px}
  .rows .opcard-list .nc-cell:nth-child(5),           /* Origem → Destino */
  .rows .opcard-list .nc-tlcell,.rows .opcard-list .nc-actcell{grid-column:1/-1}
  .rows .opcard-list .nc-cell:nth-child(5) .nc-body{flex-direction:row;align-items:center;gap:8px;flex-wrap:wrap}
  .rows .opcard-list .nc-cell:nth-child(5) .nc-line{white-space:normal}
  .rows .opcard-list .nc-fincell{border-left:0;padding-left:0}
  .rows .opcard-list .nc-fincell .nc-body{flex-direction:row;gap:16px}
  .rows .opcard-list .nc-bigdate{font-size:16px}
  .rows .opcard-list .nc-v{font-size:13.5px}
  .rows .opcard-list .nc-tlcell{border-top:1px solid var(--panel-line);padding-top:10px}
  .rows .opcard-list .nc-tlcell .nc-k{display:none}
  .rows .opcard-list .nc-actcell{border-top:1px solid var(--panel-line);padding-top:8px}
  .rows .opcard-list .nc-actcell .nc-k{display:none}
  .rows .opcard-list .nc-actcell .nc-body{align-items:stretch}
  .rows .opcard-list .nc-acts{flex-direction:row;justify-content:flex-end;gap:10px}
  .rows .opcard-list .nc-acts button,.rows .opcard-list .nc-acts .flag-ok,.rows .opcard-list .nc-acts .flag-occ{min-width:40px;min-height:40px}
}
@media(max-width:400px){
  .rows .row.opcard-list{gap:10px 10px;padding:12px 12px 10px}
  .rows .opcard-list .nc-cell:nth-child(6),           /* Veículo · Motorista · Placa */
  .rows .opcard-list .nc-fincell{grid-column:1/-1}
  .rows .opcard-list .nc-fincell .nc-body{justify-content:space-between}
}

/* ---- CARD EM GRADE ---- */
.opgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:14px}
.gcard{display:flex;flex-direction:column;background:linear-gradient(160deg,var(--panel),var(--panel-2));border:1px solid var(--panel-line);border-top:3px solid var(--slate);border-radius:var(--radius);overflow:hidden;transition:all var(--t);cursor:pointer}
.gcard:hover{border-color:var(--panel-line-strong);transform:translateY(-3px);box-shadow:0 14px 34px rgba(2,12,28,.5)}
.gcard.s-atraso{border-top-color:#FF6B6B}.gcard.s-pendente{border-top-color:#3EA5F0}.gcard.s-execucao{border-top-color:#22D3EE}.gcard.s-realizada{border-top-color:#2FE38C}.gcard.s-naoiniciado{border-top-color:#8C9EFF}
.gcard.is-cancelled{opacity:.6}.gcard.is-cancelled:hover{opacity:.85}
.gcard.is-new{animation:rowFadeIn .5s ease, rowNewBlink 5s ease}
.gcard.is-updated{animation:rowUpdateBlink 5s ease}
.gcard.has-venda-canc{box-shadow:inset 0 3px 0 #E86A6A}
.gc-top{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:13px 15px 11px}
.gc-idtxt{font-family:var(--mono);font-size:10.5px;color:var(--ink-soft);text-align:right}
.gc-client{padding:12px 15px 3px;font-size:13.5px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gc-client b{color:var(--text-strong)}
.gc-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;padding:12px 15px}
.gc-grid .nc-k{margin-bottom:4px}
.gc-tl{padding:11px 15px;border-top:1px solid var(--panel-line);display:flex;flex-direction:column;gap:8px}
.gc-fin{display:flex;justify-content:space-between;gap:12px;padding:12px 15px;background:rgba(2,15,31,.25);border-top:1px solid var(--panel-line);border-bottom:1px solid var(--panel-line)}.gc-fin .nc-k{margin-bottom:4px}
.gc-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 15px;margin-top:auto}
.foot-acts{display:flex;gap:6px}

/* ---- mini-mapa ---- */
.rmap{position:relative;height:106px;margin:0 15px;border-radius:11px;overflow:hidden;border:1px solid var(--panel-line-strong);--acc:#8C9EFF;background:radial-gradient(80% 120% at 12% 50%,rgba(62,165,240,.16),transparent 55%),radial-gradient(80% 120% at 88% 50%,rgba(242,117,7,.16),transparent 55%),#081a30}
.rmap.st-atraso{--acc:#FF6B6B}.rmap.st-pendente{--acc:#3EA5F0}.rmap.st-execucao{--acc:#22D3EE}.rmap.st-realizada{--acc:#2FE38C}.rmap.st-naoiniciado{--acc:#8C9EFF}
.rmap .grid-bg{position:absolute;inset:0;opacity:.45;background-image:linear-gradient(rgba(120,160,210,.09) 1px,transparent 1px),linear-gradient(90deg,rgba(120,160,210,.09) 1px,transparent 1px);background-size:22px 22px}
.rmap .ring{position:absolute;top:50%;transform:translate(-50%,-50%);border-radius:50%;border:1px solid rgba(120,160,210,.2)}
.rmap svg.path{position:absolute;inset:0;width:100%;height:100%}
.rmap .flow{stroke:var(--acc);filter:drop-shadow(0 0 2px var(--acc))}
.rmap .node{position:absolute;top:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:5px;z-index:3}
.rmap .node.o{left:13%}.rmap .node.d{left:87%}
.rmap .pin{width:13px;height:13px;border-radius:50%;border:2.5px solid #fff;box-shadow:0 0 0 4px rgba(2,15,31,.5),0 0 10px rgba(255,255,255,.4)}
.rmap .node.o .pin{background:#8fb0d6}.rmap .node.d .pin{background:var(--acc)}
.rmap .city{font-family:var(--mono);font-size:10px;font-weight:600;color:#fff;white-space:nowrap;background:rgba(2,15,31,.75);padding:2px 7px;border-radius:20px;border:1px solid var(--panel-line-strong);max-width:15ch;overflow:hidden;text-overflow:ellipsis}
.rmap .truck{position:absolute;top:50%;width:25px;height:25px;transform:translate(-50%,-50%);z-index:4;background:#081a30;border:1.5px solid var(--acc);border-radius:7px;display:flex;align-items:center;justify-content:center}
.rmap .truck svg{width:14px;height:14px;color:var(--acc)}
.rmap .cap{position:absolute;left:0;right:0;bottom:6px;text-align:center;font-family:var(--mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);z-index:3}
/* partículas: comprimento/formato/velocidade próprios por status */
@keyframes flowAtraso{to{stroke-dashoffset:-88}}
@keyframes flowPend{to{stroke-dashoffset:-110}}
@keyframes flowExec{to{stroke-dashoffset:-92}}
@keyframes flowReal{to{stroke-dashoffset:-100}}
@keyframes flowNi{to{stroke-dashoffset:-112}}
.rmap.st-atraso .flow{stroke-dasharray:6 6 2 8;stroke-linecap:round;stroke-width:2.8;animation:flowAtraso 1.4s linear infinite}
.rmap.st-pendente .flow{stroke-dasharray:11 8 3 9 6 8 2 8;stroke-linecap:round;stroke-width:2.6;animation:flowPend 2.0s linear infinite}
.rmap.st-execucao .flow{stroke-dasharray:14 9;stroke-linecap:round;stroke-width:2.6;animation:flowExec 1.7s linear infinite}
.rmap.st-realizada .flow{stroke-dasharray:16 9;stroke-linecap:butt;stroke-width:2.6;animation:flowReal 3.2s linear infinite}
.rmap.st-naoiniciado .flow{stroke-dasharray:2 12;stroke-linecap:round;stroke-width:3.4;animation:flowNi 3.6s linear infinite}
/* movimentos suaves */
@keyframes rmapRing{0%,100%{opacity:.55;transform:translate(-50%,-50%) scale(1)}50%{opacity:.28;transform:translate(-50%,-50%) scale(1.14)}}
.rmap .ring{animation:rmapRing 3.3s ease-in-out infinite}
@keyframes rmapBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-1.5px)}}
.rmap .truck svg{animation:rmapBob 2.1s ease-in-out infinite}
@keyframes rmapGlowAcc{0%,100%{box-shadow:0 0 10px var(--acc)}50%{box-shadow:0 0 20px var(--acc)}}
.rmap .truck{animation:rmapGlowAcc 2.4s ease-in-out infinite}
@keyframes rmapPin{0%,100%{box-shadow:0 0 0 4px rgba(2,15,31,.5),0 0 8px rgba(255,255,255,.35)}50%{box-shadow:0 0 0 4px rgba(2,15,31,.5),0 0 16px rgba(255,255,255,.75)}}
.rmap .pin{animation:rmapPin 2.8s ease-in-out infinite}
@media (prefers-reduced-motion:reduce){.rmap .ring,.rmap .truck,.rmap .truck svg,.rmap .pin{animation:none!important}}

/* responsividade da grade */
@media(max-width:900px){.opgrid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}}
@media(max-width:560px){.opgrid{grid-template-columns:1fr}}

/* ============================================================================
 * Notificações especiais — coachmark (lista/grade) + agradecimento à equipe
 * ========================================================================== */
@keyframes ncPop{from{opacity:0;transform:translateY(-8px) scale(.98)}to{opacity:1;transform:none}}
.coach{position:fixed;z-index:400;animation:ncPop .35s cubic-bezier(.2,.7,.3,1)}
.coach .coach-arrow{position:absolute;top:-7px;width:14px;height:14px;background:linear-gradient(135deg,var(--panel),var(--panel));border-left:1px solid var(--orange);border-top:1px solid var(--orange);transform:rotate(45deg)}
.coach .coach-card{background:linear-gradient(160deg,var(--panel),var(--panel-2));border:1px solid var(--orange);border-radius:12px;padding:15px 16px 14px;box-shadow:0 18px 44px rgba(0,0,0,.55)}
.coach .coach-ico{width:34px;height:34px;border-radius:9px;background:rgba(242,117,7,.14);border:1px solid rgba(242,117,7,.4);color:var(--orange);display:flex;align-items:center;justify-content:center;margin-bottom:10px}
.coach .coach-ico svg{width:18px;height:18px}
.coach .coach-ttl{font-family:var(--sans);font-weight:700;font-size:15px;color:var(--text-strong);margin-bottom:6px}
.coach .coach-txt{font-size:13px;color:var(--ink-soft);line-height:1.5;margin-bottom:12px}
.coach .coach-txt b{color:var(--text-strong)}
.coach .coach-btn{font-family:var(--sans);font-size:13px;font-weight:600;color:#fff;background:linear-gradient(160deg,var(--orange),#d5670a);border:0;border-radius:8px;padding:8px 15px;cursor:pointer;transition:filter var(--t)}
.coach .coach-btn:hover{filter:brightness(1.07)}
@keyframes coachPulse{0%,100%{box-shadow:0 0 0 0 rgba(242,117,7,.55)}50%{box-shadow:0 0 0 7px rgba(242,117,7,0)}}
.nc-seg.coach-pulse{animation:coachPulse 1.6s ease-in-out infinite;border-color:var(--orange)}

.thanks-ovl{position:fixed;inset:0;z-index:500;background:rgba(2,10,22,.66);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:20px;animation:ncPop .3s ease}
.thanks-card{max-width:470px;width:100%;background:linear-gradient(160deg,var(--panel),var(--panel-2));border:1px solid var(--panel-line-strong);border-radius:18px;padding:30px 28px 24px;text-align:center;box-shadow:0 26px 74px rgba(0,0,0,.6);position:relative;overflow:hidden;animation:ncPop .45s cubic-bezier(.2,.7,.3,1)}
.thanks-card::before{content:"";position:absolute;top:-45%;left:-15%;right:-15%;height:70%;background:radial-gradient(closest-side,rgba(242,117,7,.25),transparent);pointer-events:none}
.thanks-badge{position:relative;width:66px;height:66px;border-radius:50%;margin:0 auto 16px;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 32% 28%,#ffc46b,var(--orange));color:#fff;box-shadow:0 12px 34px rgba(242,117,7,.45)}
.thanks-badge svg{width:31px;height:31px}
/* Marca TMS isolada no aviso de apresentação (reconhecimento da nova identidade) */
.thanks-logo{position:relative;display:block;height:56px;width:auto;max-width:78%;margin:6px auto 20px}
@media(max-width:560px){ .thanks-logo{height:44px;margin-bottom:16px} }
.thanks-tag{position:relative;display:inline-block;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--orange);background:rgba(242,117,7,.1);border:1px solid rgba(242,117,7,.32);border-radius:20px;padding:4px 12px;margin-bottom:13px}
.thanks-card h2{position:relative;font-family:var(--sans);font-size:21px;font-weight:700;color:var(--text-strong);margin:0 0 11px}
.thanks-card .thanks-p{position:relative;font-size:14px;color:var(--ink-soft);line-height:1.6;margin:0 0 20px}
.thanks-card .thanks-p b{color:var(--text-strong)}
.thanks-btn{position:relative;font-family:var(--sans);font-size:14px;font-weight:600;color:#fff;background:linear-gradient(160deg,var(--orange),#d5670a);border:0;border-radius:10px;padding:11px 24px;cursor:pointer;transition:filter var(--t)}
.thanks-btn:hover{filter:brightness(1.07)}

/* ============ Usuários · ações, selos e estado de erro ============ */
.usr-acts{text-align:right;white-space:nowrap}
.usr-acts .hbtn{margin-left:6px;padding:6px 11px;font-size:12px}
.usr-acts .hbtn.primary{color:var(--emph-wash-text);border-color:rgba(242,117,7,.5);background:rgba(242,117,7,.14)}
.usr-acts .hbtn.primary:hover{border-color:var(--orange);background:rgba(242,117,7,.24)}
.usr-badge{display:inline-block;font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;
  padding:2px 7px;border-radius:20px;border:1px solid var(--panel-line-strong);color:var(--ink-soft);vertical-align:middle}
.usr-badge.warn{color:var(--warn-text);border-color:rgba(242,117,7,.4);background:rgba(242,117,7,.1)}
.usr-badge.you{color:var(--info-text);border-color:rgba(62,165,240,.35);background:rgba(62,165,240,.1)}
.usr-error{margin-top:10px;padding:16px 18px;border-radius:12px;border:1px solid rgba(217,56,56,.35);
  background:rgba(217,56,56,.08);display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.usr-error b{color:#ffb3b3;font-size:14px}
.usr-error span{color:var(--ink-soft);font-size:13px}
.usr-error .btn-ghost{width:auto;margin-top:6px;padding:8px 14px;font-size:13px}
@media(max-width:640px){ .usr-acts{text-align:left} .usr-acts .hbtn{margin:6px 6px 0 0} }

/* ============ Modal · alterar senha de um usuário ============ */
.pwr-overlay{position:fixed;inset:0;z-index:1200;display:none;align-items:center;justify-content:center;
  padding:22px;background:rgba(2,10,22,.66);backdrop-filter:blur(3px);animation:verFade .18s ease}
.pwr-overlay.show{display:flex}
.pwr-card{width:100%;max-width:440px;background:linear-gradient(160deg,var(--panel),var(--panel-2));
  border:1px solid var(--panel-line-strong);border-radius:16px;padding:22px 22px 20px;
  box-shadow:0 26px 74px rgba(0,0,0,.6);animation:verPop .22s cubic-bezier(.2,.7,.3,1)}
.pwr-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px}
.pwr-oc{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--orange)}
.pwr-ttl{font-size:19px;font-weight:800;color:var(--text-strong);letter-spacing:-.01em;margin-top:2px}
.pwr-close{border:1px solid var(--panel-line-strong);color:var(--ink-soft);width:32px;height:32px;border-radius:9px;
  display:flex;align-items:center;justify-content:center;font-size:15px;transition:all var(--t)}
.pwr-close:hover{color:var(--text-strong);border-color:var(--blue)}
.pwr-who{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border-radius:10px;
  background:var(--field-bg);border:1px solid var(--panel-line);margin-bottom:12px}
.pwr-who b{color:var(--text-strong);font-size:14px}
.pwr-who span{color:var(--ink-soft);font-size:12.5px}
.pwr-note{font-size:12.5px;color:var(--ink-soft);line-height:1.55;border-left:3px solid var(--orange);
  padding:8px 12px;background:rgba(242,117,7,.07);border-radius:0 8px 8px 0;margin-bottom:16px}
.pwr-note b{color:var(--text-strong)}
.pwr-lbl{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--muted);margin-bottom:7px}
.pwr-inrow{display:flex;gap:8px}
.pwr-inrow input{flex:1;min-width:0;background:var(--field-bg);border:1px solid var(--panel-line-strong);
  border-radius:9px;padding:11px 13px;color:var(--text-strong);font-size:14px;font-family:var(--mono)}
.pwr-inrow input:focus{outline:none;border-color:var(--blue)}
.pwr-inrow .btn-ghost{width:auto;padding:10px 13px;font-size:13px;white-space:nowrap}
.pwr-rules{margin:14px 0 6px}
.pwr-msg{min-height:18px;font-size:13px;margin-top:6px}
.pwr-msg.err{color:#ffb3b3}
.pwr-msg.ok{color:#7fe3a9}
.pwr-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}
.pwr-foot .btn-ghost,.pwr-foot .btn-primary{width:auto;padding:10px 18px}
.pwr-foot .btn-primary{background:linear-gradient(160deg,var(--orange),#d5670a);border:0}
@media(max-width:520px){ .pwr-inrow{flex-wrap:wrap} .pwr-inrow input{flex-basis:100%} }

/* Link discreto no login (esqueci a senha / voltar) */
.auth-link{display:block;width:100%;background:none;border:0;margin-top:14px;padding:6px;
  color:var(--ink-soft);font-size:13px;font-weight:600;cursor:pointer;text-align:center;transition:color var(--t)}
.auth-link:hover{color:var(--orange)}

/* ============================ BID ESAB ============================ */
:root{
  --esab-yellow:#FFF500; --esab-black:#1F1A17;
  /* O amarelo da marca só serve como TEXTO sobre fundo escuro: sobre branco ele
     dá 1,15:1 de contraste (ilegível). Por isso o tom de leitura é separado da
     cor de marca, no mesmo padrão de --sec-prog-accent. O amarelo continua
     valendo para preenchimentos sólidos, onde o texto é preto. */
  --esab-accent:#FFF500;                 /* 12,9:1 sobre o painel escuro */
  --esab-aviso:var(--orange);            /* laranja da marca — legível no fundo escuro */
  --esab-wash:rgba(255,245,0,.06);
  --esab-line:rgba(255,245,0,.30);
}
body.theme-light{
  --esab-accent:#7A6100;                 /* 5,9:1 sobre branco · 5,3:1 sobre o fundo claro */
  --esab-aviso:#8A5200;                  /* o laranja puro dá 2,9:1 sobre branco — abaixo de AA */
  --esab-wash:rgba(122,97,0,.07);
  --esab-line:rgba(122,97,0,.30);
}
/* botão de acesso na barra (padrão dos demais, com a marca ESAB) */
.esab-access{display:inline-flex;align-items:center;gap:8px;background:var(--esab-yellow);color:var(--esab-black);
  border:1px solid #d9d000;border-radius:10px;padding:7px 13px;font-size:12.5px;font-weight:800;letter-spacing:.02em;
  cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}
.esab-access:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(255,245,0,.28)}
.esab-access .esab-logo{height:16px;width:auto;display:block}
/* modal ESAB (botão BID no menu): TELA CHEIA e cabeçalho compacto — mesmo
   tratamento do card da carga ESAB (.modal.esab-full). Área útil para operar. */
.esab-modal{width:100vw;border-left:0}
.esab-modal .esab-head{border-top:3px solid var(--esab-yellow);padding:8px 22px}
.esab-modal .esab-head .top{align-items:center}
.esab-brand{display:flex;align-items:center;gap:12px;flex:1;min-width:0}
.esab-brand>div{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.esab-head-logo{height:28px;width:auto;border-radius:5px;flex:none}
.esab-modal .m-head .oc{font-size:15px}
.esab-modal .m-head .ttl{font-size:14px;margin-top:0}
.esab-modal .m-head .sub{font-size:12px;margin-top:0;flex-basis:100%}
.esab-modal .m-gear,.esab-modal .m-close{width:30px;height:30px}
.esab-modal .m-close{font-size:15px}
.esab-modal .m-body{padding:14px 22px 30px}
.esab-modal .m-body>.panel,.esab-modal .m-body>.esab-form{max-width:1180px;margin:0 auto}
.esab-modal .m-foot{padding-top:10px;padding-bottom:10px}
/* faixa "Em desenvolvimento" */
.esab-dev{display:flex;gap:13px;align-items:flex-start;background:rgba(255,245,0,.08);
  border:1px solid rgba(255,245,0,.35);border-left:4px solid var(--esab-yellow);border-radius:12px;padding:14px 16px;margin-bottom:18px}
.esab-dev-ic{font-size:22px;line-height:1}
.esab-dev b{color:var(--text-strong);font-size:14px}
.esab-dev p{margin:5px 0 0;font-size:12.8px;color:var(--ink-soft);line-height:1.5}
.esab-dev-sm{margin:0}
.esab-form .fld-row{display:flex;gap:12px;flex-wrap:wrap}
.esab-form .fld{flex:1;min-width:180px}
.esab-save{background:var(--esab-yellow)!important;color:var(--esab-black)!important;border-color:#d9d000!important;font-weight:800}
/* selo/rótulo com a marca */
.esab-lbl{display:inline-flex;align-items:center;gap:8px}
.esab-lbl-logo{height:15px;width:auto}
/* identificação ESAB no card em lista */
.nc-esab{display:inline-block;background:var(--esab-yellow);color:var(--esab-black);font-family:var(--mono);
  font-size:9.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;border-radius:5px;padding:1px 7px;margin-bottom:4px;width:max-content}
@media(max-width:560px){ .esab-brand{gap:10px} .esab-head-logo{height:24px} .esab-form .fld{min-width:140px} }

/* ---- BID ESAB · cálculo pela tabela oficial ---- */
.esab-loading{padding:26px 4px;color:var(--ink-soft);font-size:13px}
.esab-fonte{background:var(--esab-wash);border:1px solid var(--esab-line);border-left:4px solid var(--esab-accent);
  border-radius:10px;padding:9px 13px;font-size:12.3px;color:var(--ink-soft);margin-bottom:16px}
.es-sec{font-size:11px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--esab-accent);
  margin:20px 0 10px;padding-bottom:5px;border-bottom:1px solid var(--panel-line)}
.es-sub{font-size:12px;font-weight:700;color:var(--ink-soft);margin:12px 0 7px}
.es-add{font-size:12px;padding:5px 12px;margin-top:2px}
.es-item{position:relative;align-items:flex-end}
.es-del{background:none;border:0;color:var(--ink-soft);cursor:pointer;font-size:15px;padding:0 4px 9px;line-height:1}
.es-del:hover{color:var(--red)}
/* tarifa oficial da rota */
.es-rota-info{background:var(--panel-2);border:1px solid var(--panel-line);border-radius:11px;padding:12px 14px;margin-top:4px}
.es-ri-head{font-size:12.5px;color:var(--ink-soft);margin-bottom:9px;display:flex;flex-wrap:wrap;gap:8px;align-items:baseline}
.es-ri-src{font-family:var(--mono);font-size:10.5px;opacity:.75}
.es-ri-nota{margin-top:8px;font-size:11.5px;opacity:.75;font-style:italic}
/* valor editável dentro do rótulo de uma taxa (ex.: taxa de coleta) */
.es-chk .es-chk-valor{width:88px;margin:0 6px;padding:3px 8px;font-size:12.5px;text-align:right;
  background:var(--panel-bg-2,rgba(255,255,255,.04));border:1px solid var(--panel-line,rgba(255,255,255,.12));
  border-radius:6px;color:inherit}
.es-ri-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:9px}
.es-ri-grid>div{display:flex;flex-direction:column;gap:2px}
.es-ri-grid span{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);opacity:.8}
.es-ri-grid b{font-size:13px;color:var(--text-strong)}
.es-ri-alerta{margin-top:10px;font-size:12px;color:var(--esab-aviso);background:rgba(255,160,0,.08);
  border-radius:8px;padding:7px 10px}
.es-taxas{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:8px;margin-bottom:12px}
.es-chk{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-soft);cursor:pointer}
.es-chk b{color:var(--text-strong)}
/* resultado + memória de cálculo */
.es-result{background:var(--esab-wash);border:1px solid var(--esab-line);border-radius:12px;padding:15px 16px}
.es-result-vazio,.es-result-erro{font-size:12.8px;color:var(--ink-soft)}
.es-result-erro{background:rgba(217,56,56,.08);border-color:rgba(217,56,56,.35);color:var(--red)}
.es-result-erro ul{margin:7px 0 0 18px;padding:0}
.es-result-erro p{margin:9px 0 0;color:var(--ink-soft)}
.es-total{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding-bottom:11px;
  border-bottom:1px solid var(--panel-line);margin-bottom:11px}
.es-total span{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}
.es-total b{font-size:25px;font-weight:800;color:var(--esab-accent);font-variant-numeric:tabular-nums}
.es-badges{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:11px}
.es-badge{font-size:11px;color:var(--ink-soft);background:var(--field-bg);
  border:1px solid var(--panel-line);border-radius:20px;padding:3px 11px}
.es-badge b{color:var(--text-strong);margin-left:4px}
.es-badge-src{font-family:var(--mono);opacity:.75}
.es-avisos{font-size:12px;color:var(--esab-aviso);margin-bottom:11px;display:flex;flex-direction:column;gap:3px}
.es-mem-tit{font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px}
/* Larguras fixas por coluna: sem isto o "origem" (fonte na planilha) rouba o
   espaço do "detalhe" e a tabela vira uma coluna de 4 linhas por célula. */
.es-mem{width:100%;border-collapse:collapse;font-size:12px;table-layout:fixed}
.es-mem td{padding:6px 8px;border-bottom:1px solid var(--panel-line);vertical-align:top;overflow-wrap:anywhere}
.es-mem-r{width:21%;color:var(--text-strong)}
.es-mem-d{width:37%;color:var(--ink-soft);font-size:11.4px}
.es-mem-o{width:26%;color:var(--ink-soft);font-size:10.5px;font-family:var(--mono);opacity:.72}
.es-mem-v{width:16%;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--text-strong)}
.es-mem-total td{font-weight:800;border-bottom:0;border-top:2px solid var(--esab-accent);padding-top:8px}
.es-mem-total .es-mem-v{color:var(--esab-accent);font-size:14px}
.es-mem-card{margin-top:10px;background:var(--panel-2);
  border:1px solid var(--panel-line);border-radius:11px;padding:12px 14px;overflow-x:auto}
.es-mem-card .es-mem{min-width:520px}
.es-mem-rodape{margin-top:10px;font-size:11.5px;color:var(--ink-soft)}
/* ---- Card do BID ESAB em TELA CHEIA e compacto -------------------------
   O card de uma carga ESAB é uma tela de operação (BID → CT-e no Bsoft), não
   uma ficha de consulta. Ocupa a janela inteira e encolhe cabeçalho, linha do
   tempo e abas para sobrar área útil. Só se aplica com .esab-full (app.js). */
.modal.esab-full{width:100vw;border-left:0}
.modal.esab-full .m-head{padding:9px 22px 8px}
.modal.esab-full .m-head .top{align-items:center;gap:12px;flex-wrap:wrap}
.modal.esab-full .m-head .top>div:first-child{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;flex:1;min-width:0}
.modal.esab-full .m-head .oc{font-size:15px}
.modal.esab-full .m-head .ttl{font-size:14px;margin-top:0}
.modal.esab-full .m-head .sub{font-size:12.5px;margin-top:0}
.modal.esab-full .m-rastreio{flex-basis:100%;margin-top:2px;gap:6px}
.modal.esab-full .m-rastreio .rt-chip{padding:2px 8px;font-size:11px}
.modal.esab-full .m-rastreio .rt-lbl{font-size:10px}
.modal.esab-full .m-close{width:30px;height:30px;font-size:15px}
.modal.esab-full .m-timeline{padding:6px 22px 0}
.modal.esab-full .m-timeline .tl-stage{margin-top:4px;font-size:10.5px}
.modal.esab-full .tl .dot{width:10px;height:10px}
.modal.esab-full .tabs{padding:2px 18px 0;gap:2px}
.modal.esab-full .tab{font-size:11.5px;padding:7px 11px;letter-spacing:.04em;white-space:nowrap}
.modal.esab-full .m-body{padding:14px 22px 30px}
.modal.esab-full .m-body .panel{max-width:1180px;margin:0 auto}
.modal.esab-full .m-foot{padding-top:10px;padding-bottom:10px}
.m-bsoft{border-color:rgba(242,117,7,.55);color:var(--accent-text)}
.m-bsoft:hover{background:rgba(242,117,7,.12)}
.m-bsoft.enviado{border-color:rgba(25,169,87,.5);color:var(--ok-text)}

/* ---- BID ESAB → Bsoft · pré-cadastro do CT-e -------------------------- */
.bsoft-modal{width:min(820px,96vw)}
.bs-tag{display:inline-block;font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;
  padding:3px 9px;border-radius:20px;border:1px solid var(--panel-line);color:var(--ink-soft);margin:2px 4px 2px 0}
.bs-tag.bs-on,.bs-tag.bs-prod{border-color:rgba(25,169,87,.55);color:var(--ok-text)}
.bs-tag.bs-off{border-color:rgba(217,56,56,.55);color:var(--danger-text)}
.bs-tag.bs-homol{border-color:rgba(240,180,41,.6);color:#f0c04a}
.bs-cfg-status{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:10px}
.bs-homol-banner,.bs-ok-banner,.bs-aviso,.bs-erro,.bs-bloqueio{font-size:12.5px;line-height:1.45;border-radius:10px;padding:9px 12px;margin:0 0 8px;border:1px solid}
.bs-homol-banner{background:rgba(240,180,41,.09);border-color:rgba(240,180,41,.45);color:#f3d27a}
.bs-ok-banner{background:rgba(25,169,87,.09);border-color:rgba(25,169,87,.45);color:var(--ok-text)}
.bs-aviso{background:rgba(240,180,41,.07);border-color:rgba(240,180,41,.35);color:var(--text)}
.bs-erro,.bs-bloqueio{background:rgba(217,56,56,.08);border-color:rgba(217,56,56,.45);color:var(--danger-text)}
.bs-bloqueio{font-weight:600}
.bs-grupo{margin-top:12px}
.bs-grupo-t{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 7px}
.bs-t{width:100%;border-collapse:collapse;font-size:12px}
.bs-t td{padding:5px 8px;border-bottom:1px solid var(--panel-line);vertical-align:top;overflow-wrap:anywhere}
.bs-c{width:30%;font-family:var(--mono);font-size:11.5px;color:var(--text-strong)}
.bs-v{width:30%;color:var(--text-strong);font-variant-numeric:tabular-nums}
.bs-o{width:40%;color:var(--ink-soft);font-size:11px}
.bs-req{color:var(--red);margin-left:3px;font-weight:800}
.bs-vazio{color:var(--ink-soft);opacity:.6}
tr.bs-falta td{background:rgba(217,56,56,.07)}
tr.bs-falta .bs-v{color:var(--danger-text);font-weight:700}
.bs-extras{background:var(--panel-2);border:1px solid var(--panel-line);border-radius:11px;padding:12px 14px}
.bs-extras .fld{margin-bottom:8px}
.bs-dest-res{font-size:11.5px;margin-top:4px;min-height:14px}
.bs-ok{color:var(--ok-text)} .bs-nok{color:var(--danger-text)}
.bs-etapas{display:flex;flex-direction:column;gap:6px}
.bs-et{border:1px solid var(--panel-line);border-radius:10px;background:var(--panel-2);font-size:12.5px}
.bs-et summary{display:flex;gap:10px;align-items:center;padding:8px 12px;cursor:pointer;list-style:none;flex-wrap:wrap}
.bs-et summary::-webkit-details-marker{display:none}
.bs-et summary b{color:var(--text-strong)}
.bs-et-desc{color:var(--ink-soft);font-size:11.5px;flex:1;min-width:0;overflow-wrap:anywhere}
.bs-et-tag{font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;padding:2px 8px;border-radius:20px;border:1px solid var(--panel-line);white-space:nowrap}
.bs-et-ok .bs-et-tag{border-color:rgba(25,169,87,.55);color:var(--ok-text)}
.bs-et-novo .bs-et-tag{border-color:rgba(62,165,240,.6);color:var(--blue-light)}
.bs-et-novo{border-color:rgba(62,165,240,.35)}
.bs-et-bloq .bs-et-tag{border-color:rgba(217,56,56,.55);color:var(--danger-text)}
.bs-et-bloq{border-color:rgba(217,56,56,.4)}
.bs-et-pula .bs-et-tag{opacity:.6}
.bs-et pre{margin:0;padding:8px 12px 10px;font-size:10.5px;line-height:1.4;border-top:1px solid var(--panel-line);overflow:auto;max-height:260px;color:var(--text)}
.es-dest-res{font-size:11.5px;margin-top:4px;min-height:14px}
.bs-json{margin-top:12px;font-size:12px}
.bs-json summary{cursor:pointer;color:var(--ink-soft)}
.bs-json pre{font-size:10.5px;line-height:1.4;background:var(--panel-2);border:1px solid var(--panel-line);border-radius:10px;padding:10px;overflow:auto;max-height:320px}
@media(max-width:600px){ .bs-o{display:none} .bs-c,.bs-v{width:50%} }
/* manutenção da tabela (administrador) */
.es-adm-fonte{font-size:12px;color:var(--ink-soft);margin-bottom:12px}
.es-adm-tit{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);
  margin:16px 0 9px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.es-adm-tit input{flex:1;min-width:150px;font-size:12px;padding:4px 9px}
.es-adm-params{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:9px}
.es-adm-p{display:flex;flex-direction:column;gap:3px}
.es-adm-p label{font-size:10.5px;font-family:var(--mono);color:var(--ink-soft)}
.es-adm-p input{font-size:12px;padding:5px 9px}
.es-adm-tabela{max-height:340px;overflow:auto;border:1px solid var(--panel-line);border-radius:10px}
.es-adm-t{width:100%;border-collapse:collapse;font-size:11.5px}
.es-adm-t th{position:sticky;top:0;background:var(--panel);text-align:left;padding:7px 6px;
  font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);border-bottom:1px solid var(--panel-line)}
.es-adm-t td{padding:4px 6px;border-bottom:1px solid var(--panel-line)}
.es-adm-t input{width:100%;min-width:64px;font-size:11.5px;padding:3px 6px}
.es-adm-t .btn-ghost{font-size:11px;padding:3px 9px}
.es-adm-linha{font-family:var(--mono);color:var(--ink-soft);opacity:.75;text-align:center}
@media(max-width:560px){ .es-taxas{grid-template-columns:1fr} .es-total b{font-size:21px}
  .es-mem-o{display:none} .es-mem-card .es-mem{min-width:380px}
  .es-mem-r{width:30%} .es-mem-d{width:46%} .es-mem-v{width:24%} }


/* ==================== RELATÓRIO MENSAL DE AVALIAÇÃO (RQ 74) ====================
   Identidade ETMLOG: azul institucional #082744, azul #3370DB, laranja #F27507.
   Um CARD por avaliação, e não uma tabela: 19 colunas não cabem numa folha sem
   cortar informação. No card tudo aparece inteiro, agrupado por assunto.
   O documento é o mesmo na tela e no PDF.                                     */
.rel-modal{width:min(1280px,98vw)}
.rel-bar{display:flex;align-items:center;gap:12px;padding:12px 26px;border-bottom:1px solid var(--panel-line);
  background:var(--field-bg);flex-wrap:wrap}
.rel-lbl{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}
.rel-bar select{font-family:inherit;font-size:13px;padding:7px 11px;border-radius:9px;
  background:var(--panel);color:var(--text-strong);border:1px solid var(--panel-line-strong)}
.rel-resumo{font-size:12.5px;color:var(--ink-soft)}
.rel-resumo b{color:var(--text-strong)}
.rel-total{color:var(--muted);margin-left:6px}
.rel-doc{padding:20px 22px 26px}

/* ---- cabeçalho do documento (marca) ---- */
.rel-cab{display:flex;align-items:center;justify-content:space-between;gap:22px;flex-wrap:wrap;
  background:linear-gradient(120deg,#082744,#12457a 62%,#1c5fa8);
  border-radius:14px;padding:18px 24px;color:#fff;
  border-left:6px solid #F27507}
.rel-cab-marca{display:flex;align-items:center;gap:16px;min-width:0}
.rel-logo{height:34px;width:auto;color:#fff;flex:none}
.rel-cab-t{font-size:21px;font-weight:800;letter-spacing:.01em;line-height:1.15}
.rel-cab-s{font-size:12.5px;opacity:.88;margin-top:3px}
.rel-kpis{display:flex;gap:10px;flex-wrap:wrap}
.rel-kpi{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.22);border-radius:11px;
  padding:8px 15px;text-align:center;min-width:96px}
.rel-kpi b{display:block;font-size:19px;font-weight:800;line-height:1.1}
.rel-kpi span{font-size:9.5px;letter-spacing:.09em;text-transform:uppercase;opacity:.85}
.rel-kpi-destaque{background:#F27507;border-color:#F27507;color:#fff}

/* ---- card da avaliação ---- */
.rel-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(430px,1fr));gap:14px;margin-top:16px}
.rc{background:linear-gradient(160deg,var(--panel),var(--panel-2));border:1px solid var(--panel-line);
  border-left:4px solid var(--blue);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:11px}
.rc-inc{border-left-color:var(--orange)}
.rc-top{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.rc-oc{font-family:var(--mono);font-size:15px;font-weight:700;color:var(--accent-text);display:block}
.rc-emis{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.rc-nota{text-align:center;border-radius:10px;padding:5px 13px;flex:none;border:1px solid transparent}
.rc-nota b{display:block;font-size:19px;font-weight:800;line-height:1.1}
.rc-nota span{font-size:8.5px;letter-spacing:.09em;text-transform:uppercase;opacity:.9}
.rc-nota.n-otimo{color:var(--ok-text);background:rgba(25,169,87,.13);border-color:rgba(25,169,87,.3)}
.rc-nota.n-bom{color:var(--info-text);background:rgba(62,165,240,.13);border-color:rgba(62,165,240,.3)}
.rc-nota.n-medio{color:var(--warn-text);background:rgba(242,117,7,.13);border-color:rgba(242,117,7,.3)}
.rc-nota.n-baixo{color:var(--danger-text);background:rgba(217,56,56,.13);border-color:rgba(217,56,56,.3)}

.rc-rota{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center;
  background:var(--field-bg);border-radius:9px;padding:10px 12px}
.rc-ponto{min-width:0}
.rc-nome{display:block;font-size:13px;font-weight:600;color:var(--text-strong);line-height:1.25;
  overflow-wrap:anywhere}
.rc-cid{font-size:11.5px;color:var(--ink-soft)}
.rc-seta{color:var(--orange);font-weight:700;font-size:17px}

.rc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px 12px}
.rc-f{min-width:0}
.rc-w2{grid-column:span 2}
.rc-k{display:block;font-family:var(--mono);font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted);margin-bottom:2px}
.rc-f b{font-size:12.5px;font-weight:600;color:var(--text-strong);line-height:1.25;overflow-wrap:anywhere}
.rc-vazio{color:var(--muted);font-style:italic;font-weight:400;font-size:11.5px}

.rc-crit{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;border-top:1px solid var(--panel-line);padding-top:10px}
.rc-cr{min-width:0}
.rc-cr .rc-k{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rc-estrelas{display:flex;gap:2px}
.rc-estrelas i{width:9px;height:9px;border-radius:50%;background:var(--panel-line-strong);display:block}
.rc-estrelas i.on{background:var(--ok-text)}
.rc-obs{margin:0;font-size:12px;line-height:1.45;color:var(--ink-soft);font-style:italic;
  border-left:3px solid var(--panel-line-strong);padding-left:10px;overflow-wrap:anywhere}
.rc-pe{font-size:11px;color:var(--muted);border-top:1px solid var(--panel-line);padding-top:8px}
.rc-pe b{color:var(--ink-soft)}
.rc-alerta{color:var(--warn-text)}

.rel-pe{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:18px;
  border-top:1px solid var(--panel-line);padding-top:11px;font-size:10.5px;color:var(--muted)}
.rel-rq{font-family:var(--mono)}
.rk-relatorio{border-color:var(--blue)}

/* ------ impressão: o clone em #rel-print é o que vai para o papel ---------- */
@media print{
  body.imprimindo-relatorio>*{display:none!important}
  body.imprimindo-relatorio>#rel-print{display:block!important}
  /* o sprite do logotipo precisa continuar no documento: o <use> aponta para ele */
  body.imprimindo-relatorio>#etm-sprite{display:block!important;position:absolute!important}
  #rel-print{padding:0;background:#fff;color:#0b2038;font-size:8.5pt}
  #rel-print .rel-doc{padding:0}
  /* ---------------- capa ---------------- */
  #rel-print .rel-capa{display:flex;flex-direction:column;justify-content:space-between;
    height:calc(210mm - 18mm);          /* A4 paisagem menos as margens */
    break-after:page;page-break-after:always;
    background:linear-gradient(125deg,#082744 0%,#0f3d6b 45%,#1c5fa8 100%);
    border-radius:12px;color:#fff;padding:26px 34px;position:relative;overflow:hidden}
  #rel-print .rel-capa::after{content:"";position:absolute;right:-90px;bottom:-90px;
    width:340px;height:340px;border-radius:50%;background:rgba(242,117,7,.16)}
  #rel-print .rel-capa-topo{display:flex;align-items:center;justify-content:space-between;position:relative;z-index:1}
  #rel-print .rel-capa-logo{height:40px;width:auto;color:#fff}
  #rel-print .rel-capa-rq{font-family:var(--mono);font-size:9pt;letter-spacing:.18em;
    border:1px solid rgba(255,255,255,.5);border-radius:20px;padding:5px 14px}
  #rel-print .rel-capa-meio{position:relative;z-index:1}
  #rel-print .rel-capa-eyebrow{font-family:var(--mono);font-size:8.5pt;letter-spacing:.28em;
    text-transform:uppercase;color:#F9B36A;margin-bottom:8px}
  #rel-print .rel-capa-t{font-size:34pt;font-weight:800;margin:0;line-height:1.03;letter-spacing:-.01em}
  #rel-print .rel-capa-mes{font-size:17pt;font-weight:600;margin-top:6px;color:#cfe0f2}
  #rel-print .rel-capa-mes::before{content:"";display:block;width:64px;height:4px;border-radius:3px;
    background:#F27507;margin:16px 0 12px}
  #rel-print .rel-capa-kpis{display:flex;gap:12px;margin-top:26px}
  #rel-print .rel-capa-kpis>div{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.24);
    border-radius:11px;padding:11px 20px;text-align:center;min-width:104px}
  #rel-print .rel-capa-kpis b{display:block;font-size:19pt;font-weight:800;line-height:1.1}
  #rel-print .rel-capa-kpis span{font-size:7pt;letter-spacing:.12em;text-transform:uppercase;opacity:.85}
  #rel-print .rel-capa-destaque{background:#F27507!important;border-color:#F27507!important}
  #rel-print .rel-capa-pe{display:flex;justify-content:space-between;align-items:flex-end;
    font-size:8.5pt;line-height:1.5;position:relative;z-index:1;
    border-top:1px solid rgba(255,255,255,.22);padding-top:14px}
  #rel-print .rel-capa-emis{text-align:right;color:#cfe0f2}
  #rel-print .rel-capa-emis span{font-family:var(--mono);font-size:7.5pt;opacity:.8}
  #rel-print .rel-capa,#rel-print .rel-capa-kpis>div,
  #rel-print .rel-capa-destaque{-webkit-print-color-adjust:exact;print-color-adjust:exact}

  #rel-print .rel-cards{display:block;margin-top:8px}
  /* cada linha é um bloco que não parte: 3 cards por linha, quebra previsível */
  #rel-print .rel-linha{display:flex;gap:6px;align-items:stretch;margin-bottom:6px;
    break-inside:avoid;page-break-inside:avoid}
  #rel-print .rel-linha>.rc{flex:1 1 0;min-width:0}
  /* Altura FIXA no papel. Com altura variável a paginação alternava 3 e 6 cards
     por folha e sobrava meia página em branco. Fixa, cabem sempre 2 linhas de 3.
     Nada é perdido: nome e comentário são limitados por linhas, e o .xlsx leva
     todo o conteúdo íntegro. */
  #rel-print .rc{font-size:8.5pt;break-inside:avoid;page-break-inside:avoid;
    height:316px;overflow:hidden;
    background:#fff;border:1px solid #c3cddb;border-left:3px solid #3370DB;border-radius:9px;padding:6px 8px}
  #rel-print .rc-nome{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  #rel-print .rc-pe{margin-top:auto}
  #rel-print .rc>*+*{margin-top:3px}
  #rel-print .rc-inc{border-left-color:#F27507}
  #rel-print .rc-rota{background:#f1f4f9;padding:5px 7px;gap:6px;border-radius:6px}
  #rel-print .rc-nome,#rel-print .rc-f b{color:#0b2038;font-size:9.5px}
  #rel-print .rc-cid{color:#3d4c60;font-size:8.5px}
  /* comentário longo deixava a linha 60% mais alta e a folha perdia uma fileira
     inteira. Duas linhas no papel; o texto completo vai no .xlsx e na tela. */
  /* O card tem altura fixa e é flex: sem `flex:none` o comentário encolhia até
     virar um risco de 4px. Uma linha no papel; inteiro na tela e no .xlsx. */
  #rel-print .rc-obs{color:#3d4c60;font-size:8.5px;padding-left:7px;border-left-color:#c3cddb;
    display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;flex:none}
  #rel-print .rc-crit,#rel-print .rc-pe,#rel-print .rc-rota,#rel-print .rc-grid{flex:none}
  #rel-print .rel-pe{break-inside:avoid;page-break-inside:avoid}
  #rel-print .rc-k{font-size:6.5pt;color:#6a7a8f}
  #rel-print .rc-oc{font-size:10.5pt;color:#B4540A}
  #rel-print .rc-emis{color:#6a7a8f}
  #rel-print .rc-grid{grid-template-columns:repeat(4,1fr);gap:3px 7px}
  #rel-print .rc-w2{grid-column:span 4}
  #rel-print .rc-crit{gap:3px;padding-top:4px;border-top-color:#dde3ec}
  #rel-print .rc-crit .rc-k{font-size:5.7pt;letter-spacing:0}
  #rel-print .rc-estrelas i{width:6px;height:6px;background:#d3dae4}
  #rel-print .rc-estrelas i.on{background:#0B6835}
  #rel-print .rc-nota b{font-size:12pt}
  #rel-print .rc-nota.n-otimo{color:#0B6835;background:#e6f5ec;border-color:#b9e0c9}
  #rel-print .rc-nota.n-bom{color:#1A5FB4;background:#e8f1fb;border-color:#bcd6f2}
  #rel-print .rc-nota.n-medio{color:#8A5200;background:#fdf0e2;border-color:#f2d4ac}
  #rel-print .rc-nota.n-baixo{color:#A82323;background:#fbeaea;border-color:#f0c2c2}
  #rel-print .rc-pe{font-size:7pt;color:#6a7a8f;border-top-color:#dde3ec;padding-top:5px}
  #rel-print .rc-pe b{color:#3d4c60}
  #rel-print .rel-cab{break-inside:avoid;border-radius:9px;padding:8px 13px}
  #rel-print .rel-cab-t{font-size:15pt}
  #rel-print .rel-cab-s{font-size:8pt}
  #rel-print .rel-logo{height:26px}
  #rel-print .rel-kpi{padding:5px 10px;min-width:74px}
  #rel-print .rel-kpi b{font-size:13pt}
  #rel-print .rel-kpi span{font-size:6.5pt}
  #rel-print .rel-pe{font-size:7.5pt;color:#6a7a8f;border-top-color:#dde3ec;margin-top:10px}
  /* sem isto o navegador remove os fundos e a marca some do papel */
  #rel-print .rel-cab,#rel-print .rel-kpi,#rel-print .rel-kpi-destaque,
  #rel-print .rc-nota,#rel-print .rc-rota,#rel-print .rc-estrelas i,
  #rel-print .rc{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  @page{ size:A4 landscape; margin:9mm }
}

/* ============================ CONTROLE FINANCEIRO ============================ */
.fin-wrap{display:flex;flex-direction:column;gap:16px}
.fin-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap}
.fin-title{margin:0;font-size:20px;color:var(--text-strong);font-family:var(--sans)}
.fin-desc{margin:3px 0 0;font-size:13px;color:var(--ink-soft)}
.fin-head-actions{display:flex;gap:8px}
.fin-head-actions .btn-ghost{width:auto;padding:8px 14px}
/* filtros */
.fin-filters{display:flex;flex-direction:column;gap:10px}
.fin-presets{display:flex;gap:7px;flex-wrap:wrap}
.fin-chip{background:var(--field-bg);border:1px solid var(--panel-line);color:var(--ink-soft);border-radius:20px;
  padding:6px 14px;font-size:12.5px;font-weight:600;cursor:pointer;transition:all .12s ease}
.fin-chip:hover{border-color:var(--panel-line-strong);color:var(--ink)}
.fin-chip.on{background:var(--blue);border-color:var(--blue);color:#fff}
.fin-frow{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.fin-frow select,.fin-frow input,.fin-search{background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:9px;
  padding:9px 12px;color:var(--text-strong);font-size:13.5px;outline:none}
.fin-frow .fin-search{flex:1;min-width:200px}
.fin-frow select:focus,.fin-frow input:focus{border-color:var(--blue)}
.fin-frow .fin-sep{color:var(--ink-soft);font-size:12.5px}
.fin-frow .btn-ghost{width:auto;padding:9px 14px}
/* cards de resumo */
.fin-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}
.fin-card{display:flex;gap:12px;align-items:flex-start;background:var(--panel);border:1px solid var(--panel-line);
  border-left:4px solid var(--blue);border-radius:var(--radius);padding:14px 15px;min-width:0}
.fin-card .fc-ic{flex:none;width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:rgba(51,112,219,.12);color:var(--blue)}
.fin-card .fc-ic svg{width:19px;height:19px}
.fin-card .fc-body{min-width:0}
.fin-card .fc-lbl{font-size:11.5px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.05em;font-family:var(--mono)}
.fin-card .fc-val{font-size:20px;font-weight:800;color:var(--text-strong);margin:2px 0;line-height:1.15;word-break:break-word}
.fin-card .fc-delta{font-size:11.5px;margin-top:4px;font-weight:700;color:var(--ink-soft)}
.fin-card .fc-delta.bom{color:var(--green)} .fin-card .fc-delta.ruim{color:var(--red)}
.fin-card .fc-delta-ref{color:var(--ink-soft);font-weight:400;font-size:10.5px}
.fc-ok{border-left-color:var(--green)} .fc-ok .fc-ic{background:rgba(25,169,87,.13);color:var(--green)}
.fc-red{border-left-color:var(--red)} .fc-red .fc-ic{background:rgba(217,56,56,.13);color:var(--red)}
.fc-orange{border-left-color:var(--orange)} .fc-orange .fc-ic{background:rgba(242,117,7,.13);color:var(--orange)}
.fc-blue{border-left-color:var(--blue)}
.fin-delta{font-weight:700;font-size:11.5px}
.fin-delta.flat{color:var(--ink-soft);font-weight:600}
/* semântica: verde = bom, vermelho = ruim — independe de subir/descer */
.fc-delta.bom .fin-delta{color:var(--green)}
.fc-delta.ruim .fin-delta{color:var(--red)}
/* tabela */
.fin-tbl-wrap{overflow:auto;border:1px solid var(--panel-line);border-radius:var(--radius);background:var(--panel)}
.fin-tbl{width:100%;border-collapse:collapse;font-size:13px;min-width:820px}
.fin-tbl thead th{position:sticky;top:0;background:var(--panel);z-index:1;text-align:left;padding:11px 12px;
  font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);border-bottom:1px solid var(--panel-line-strong);white-space:nowrap}
.fin-tbl th.num,.fin-tbl td.num{text-align:right}
.fin-tbl .fin-sortable{cursor:pointer;user-select:none}
.fin-tbl .fin-sortable.sorted{color:var(--blue)}
.fin-tbl .fin-sortable.sorted.asc::after{content:' ▲';font-size:9px}
.fin-tbl .fin-sortable.sorted.desc::after{content:' ▼';font-size:9px}
.fin-tbl tbody td{padding:10px 12px;border-bottom:1px solid var(--panel-line);color:var(--ink);vertical-align:middle}
.fin-tbl tbody tr[data-cid]{cursor:pointer;transition:background .1s ease}
.fin-tbl tbody tr[data-cid]:hover{background:var(--field-bg)}
.fin-tbl td b{color:var(--text-strong)} .fin-tbl td small{display:block;color:var(--ink-soft);font-size:11px;font-family:var(--mono)}
.fin-tbl .fin-rota{color:var(--ink-soft)}
.fin-lucro.pos{color:var(--green);font-weight:700} .fin-lucro.low{color:var(--orange);font-weight:700} .fin-lucro.neg{color:var(--red);font-weight:800}
.fin-late{color:var(--red);font-weight:700} .fin-goto{color:var(--ink-soft);text-align:center;font-size:18px}
.fin-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:10px;font-size:12.5px;color:var(--ink-soft)}
.fin-pg{display:flex;align-items:center;gap:8px} .fin-pg .btn-ghost{width:auto;padding:5px 11px}
/* selos de situação */
.fin-badge{display:inline-block;font-size:10.5px;font-weight:700;padding:2px 9px;border-radius:20px;white-space:nowrap}
.fb-ok{background:rgba(25,169,87,.15);color:var(--green)} .fb-blue{background:rgba(51,112,219,.15);color:var(--blue-light,#3EA5F0)}
.fb-red{background:rgba(217,56,56,.16);color:var(--danger-text)} .fb-gray{background:var(--field-bg);color:var(--ink-soft)}
/* estados */
.fin-skel{padding:26px;text-align:center;color:var(--ink-soft);font-size:13.5px}
.fin-err{padding:16px;border:1px solid rgba(217,56,56,.3);background:rgba(217,56,56,.08);border-radius:12px;color:#ffb4b4;font-size:13px}
/* modal de detalhe */
.fin-mini-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;margin-bottom:16px}
.fmc{background:var(--field-bg);border:1px solid var(--panel-line);border-left:3px solid var(--blue);border-radius:10px;padding:9px 12px;display:flex;flex-direction:column;gap:2px}
.fmc span{font-size:10.5px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em;font-family:var(--mono)}
.fmc b{font-size:15px;color:var(--text-strong)}
.fmc-ok{border-left-color:var(--green)} .fmc-red{border-left-color:var(--red)} .fmc-orange{border-left-color:var(--orange)} .fmc-blue{border-left-color:var(--blue)}
.fin-l-head{display:flex;justify-content:space-between;align-items:center;margin:6px 0 10px}
.fin-l-head h3{margin:0;font-size:15px;color:var(--text-strong)}
.fin-l-add{display:flex;gap:8px} .fin-l-add .btn-primary,.fin-l-add .btn-ghost{width:auto;padding:8px 14px}
.fin-tp{display:inline-block;font-size:10px;font-weight:700;padding:1px 8px;border-radius:5px;text-transform:uppercase}
.fin-tp-receita{background:rgba(25,169,87,.15);color:var(--green)} .fin-tp-custo{background:rgba(242,117,7,.15);color:var(--orange)}
.fin-l-canc{opacity:.5;text-decoration:line-through}
.fin-l-acts{white-space:nowrap;text-align:right}
.btn-mini{background:var(--field-bg);border:1px solid var(--panel-line-strong);color:var(--ink);border-radius:7px;padding:4px 10px;font-size:11.5px;font-weight:600;cursor:pointer;margin-left:5px}
.btn-mini:hover{border-color:var(--blue);color:var(--blue)}
.btn-mini.danger:hover{border-color:var(--red);color:var(--danger-text)}
.fin-form{background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:12px;padding:14px 15px;margin-bottom:14px}
.fin-form-ttl{font-size:13.5px;font-weight:700;color:var(--text-strong);margin-bottom:11px}
.fin-form .fld-row{display:flex;gap:11px;flex-wrap:wrap} .fin-form .fld{flex:1;min-width:150px}
.fin-form-acts{display:flex;justify-content:flex-end;gap:9px;margin-top:6px}
.fin-form-acts .btn-primary,.fin-form-acts .btn-ghost{width:auto;padding:9px 16px}
@media(max-width:640px){ .fin-cards{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))} .fin-card .fc-val{font-size:17px} }
.fin-note{font-size:12.5px;color:var(--ink-soft);background:var(--field-bg);border:1px solid var(--panel-line);
  border-radius:10px;padding:9px 13px} .fin-note b{color:var(--ink)}
.fin-h3{margin:6px 0 2px;font-size:14px;color:var(--text-strong)}
.fin-tblhead{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-top:6px}
.fin-tblhead .fin-frow{margin:0}
.fin-tbl tbody tr[data-mes]{cursor:pointer;transition:background .1s ease}
.fin-tbl tbody tr[data-mes]:hover{background:var(--field-bg)}
.fin-tbl tbody tr.fin-mes-on{background:rgba(51,112,219,.12);box-shadow:inset 3px 0 0 var(--blue)}
.fin-tbl tfoot .fin-tot-row td{position:sticky;bottom:0;background:var(--panel);border-top:2px solid var(--panel-line-strong);font-weight:800;color:var(--text-strong);padding:11px 12px}
/* filtro de cliente no topo (afeta todos os números) */
.fin-topfilter{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.fin-toplbl{font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}
.fin-topfilter select{background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:9px;padding:9px 12px;color:var(--text-strong);font-size:13.5px;outline:none;min-width:220px}
.fin-topfilter select:focus{border-color:var(--blue)}
.fin-escopo{font-size:12.5px;color:var(--ink-soft)} .fin-escopo b{color:var(--ink)}
/* comparativo entre clientes (gráfico SVG) */
.fin-charts-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-top:8px}
.fin-chart-toggles{display:flex;flex-direction:column;gap:7px;align-items:flex-end}
.fin-metric-toggle,.fin-scope-toggle{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.fin-scope-toggle .fin-chip{font-size:11.5px;padding:5px 11px}
.fin-chart-wrap{border:1px solid var(--panel-line);border-radius:var(--radius);background:var(--panel);padding:14px 16px;overflow-x:auto}
.fin-barchart{width:100%;height:auto;min-width:460px;display:block}
.fin-barchart text{font-family:var(--sans)}
.fin-barchart .fbc-lbl{font-size:16px;font-weight:600;fill:var(--text-strong)}
.fin-barchart .fbc-lbl.hl{fill:var(--blue)}
.fin-barchart .fbc-sub{font-size:12.5px;font-weight:400;fill:var(--ink-soft)}
.fin-barchart .fbc-val{font-size:16px;font-weight:800;fill:var(--text-strong)}
.fin-barchart .fbc-val.neg{fill:var(--red)}
.fin-chart-note{margin:8px 0 0;font-size:11.5px;color:var(--ink-soft)}
/* evolução mês a mês */
.fev-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--ink-soft);align-items:center}
.fev-legend .fev-lg{display:inline-flex;align-items:center;gap:5px}
.fev-legend .fev-lg i{width:11px;height:11px;border-radius:3px;display:inline-block}
.fev-chart .fev-axis{stroke:var(--panel-line-strong);stroke-width:1}
.fev-chart .fev-grid{stroke:var(--panel-line);stroke-width:1;stroke-dasharray:3 3}
.fev-chart .fev-tick{font-size:12px;fill:var(--ink-soft)}
.fev-chart .fev-xlbl{font-size:13px;fill:var(--ink-soft)}
.fev-chart .fev-marg{font-size:12px;fill:var(--ink);font-weight:600}
.fev-legend-cli{margin-top:10px}
.fev-chart .fev-hit{cursor:pointer}
.fev-wrap{position:relative}
.fev-tip{position:absolute;z-index:5;pointer-events:none;background:var(--panel);color:var(--text-strong);
  border:1px solid var(--panel-line-strong);border-left-width:4px;border-radius:8px;padding:6px 11px;
  font-size:12.5px;font-weight:700;white-space:nowrap;box-shadow:0 6px 18px rgba(20,50,90,.18)}
.fev-tip[hidden]{display:none}
/* autocompletar (motoristas e empresas) */
.ac-box{position:absolute;z-index:9500;max-height:280px;overflow:auto;background:var(--panel);
  border:1px solid var(--panel-line-strong);border-radius:10px;box-shadow:0 14px 34px rgba(10,30,60,.28);padding:5px}
.ac-item{display:block;width:100%;text-align:left;background:none;border:0;border-radius:7px;
  padding:8px 11px;cursor:pointer;color:var(--ink);font-size:13.5px;line-height:1.3}
.ac-item:hover,.ac-item.sel{background:var(--field-bg)}
.ac-item b{display:block;color:var(--text-strong);font-weight:600}
.ac-item small{display:block;color:var(--ink-soft);font-size:11.5px;font-family:var(--mono);margin-top:1px}
/* contas a receber/pagar (Fase 3) */
.fin-vb{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-soft)}
.fin-vb input{width:56px;background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:8px;padding:6px 8px;color:var(--text-strong);font-size:13px;outline:none}
.fin-conta-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:12px 0}
.fin-conta-toggle{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:10px}
.fin-venc-inp{background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:7px;padding:5px 8px;color:var(--text-strong);font-size:12.5px;outline:none}
.fin-venc-inp:focus{border-color:var(--blue)}
/* calendário de vencimentos */
.cal-nav{display:flex;align-items:center;gap:10px}
.cal-nav .btn-ghost{width:auto;padding:5px 12px;font-size:16px;line-height:1}
.cal-mtitle{font-weight:700;color:var(--text-strong);min-width:110px;text-align:center}
.cal-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--ink-soft);margin:8px 0 10px;align-items:center}
.cal-legend span{display:inline-flex;align-items:center;gap:5px}
.cal-legend .cal-i{width:11px;height:11px;border-radius:3px;display:inline-block}
.cal-i-rec{background:var(--green)} .cal-i-pag{background:#F27507} .cal-i-venc{background:var(--red)} .cal-i-today{background:var(--blue)}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.cal-wd{font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);text-align:center;padding:2px 0}
.cal-cell{min-height:78px;background:var(--panel);border:1px solid var(--panel-line);border-radius:9px;padding:6px 7px;display:flex;flex-direction:column;gap:3px;overflow:hidden}
.cal-cell.cal-out{background:transparent;border-color:transparent}
.cal-cell.cal-has{cursor:pointer;transition:border-color .1s ease,box-shadow .1s ease}
.cal-cell.cal-has:hover{border-color:var(--blue)}
.cal-cell.cal-today{border-color:var(--blue);box-shadow:inset 0 0 0 1px var(--blue)}
.cal-cell.cal-venc{background:rgba(217,56,56,.06);border-color:rgba(217,56,56,.35)}
.cal-cell.cal-sel{box-shadow:0 0 0 2px var(--blue)}
.cal-num{font-size:12.5px;font-weight:700;color:var(--ink)}
.cal-mk{font-size:10.5px;font-weight:700;border-radius:4px;padding:1px 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-rec{background:rgba(25,169,87,.15);color:var(--green)} .cal-pag{background:rgba(242,117,7,.15);color:#F27507} .cal-quit{background:var(--field-bg);color:var(--ink-soft)}
.cal-day-ttl{margin:14px 0 8px;font-weight:700;color:var(--text-strong);font-size:14px}
/* controles globais + sub-abas do financeiro */
.fin-controls{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.fin-controls .fin-ctl{display:flex;align-items:center;gap:7px}
.fin-controls select{background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:9px;padding:8px 11px;color:var(--text-strong);font-size:13.5px;outline:none;min-width:150px}
.fin-controls select:focus{border-color:var(--blue)}
.fin-subnav{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--panel-line-strong);padding-bottom:0;margin-top:4px}
.fin-subtab{background:none;border:0;border-bottom:2px solid transparent;color:var(--ink-soft);font-size:13.5px;font-weight:600;
  padding:9px 12px;cursor:pointer;transition:color .12s ease,border-color .12s ease;margin-bottom:-1px}
.fin-subtab:hover{color:var(--ink)}
.fin-subtab.on{color:var(--blue);border-bottom-color:var(--blue)}
#fin-sub{margin-top:16px;display:flex;flex-direction:column;gap:16px}
/* detalhe de motorista/pagamento (a pagar) */
.fin-mot-col small{display:block;color:var(--ink-soft);font-size:11px}
.fin-mot-btn{margin-top:4px}
tr.fin-row-exp td{border-bottom:0}
.fin-det-tr td{background:var(--field-bg);padding:0}
.fin-mot-det{display:grid;grid-template-columns:220px 1fr;gap:16px;padding:14px 16px;border-bottom:1px solid var(--panel-line)}
.fmd-info{display:flex;flex-direction:column;gap:8px}
.fmd-info>div{display:flex;flex-direction:column;gap:1px}
.fmd-info span{font-family:var(--mono);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft)}
.fmd-info b{font-size:13.5px;color:var(--text-strong)}
.fmd-ttl{font-size:12.5px;font-weight:700;color:var(--text-strong);margin-bottom:9px}
.fmd-form .fld-row{display:flex;gap:10px;flex-wrap:wrap} .fmd-form .fld{flex:1;min-width:130px}
.fmd-acts{display:flex;justify-content:flex-end;margin-top:8px}
.fmd-pag{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:9px 16px}
.fmd-pag>div{display:flex;flex-direction:column;gap:1px}
.fmd-pag span{font-family:var(--mono);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft)}
.fmd-pag b{font-size:13.5px;color:var(--text-strong);word-break:break-word}
.fmd-falta{font-size:12.5px;color:#c0392b;background:rgba(217,56,56,.08);border:1px solid rgba(217,56,56,.28);border-radius:9px;padding:9px 12px}
@media(max-width:640px){ .fin-mot-det{grid-template-columns:1fr} }
@media(max-width:640px){ .cal-cell{min-height:62px;padding:4px 4px} .cal-mk{font-size:9px;padding:0 3px} .cal-num{font-size:11px} }
/* infográfico Receita → Custos → Lucro */
.fin-info{background:var(--panel);border:1px solid var(--panel-line);border-radius:var(--radius);padding:16px 18px}
.fin-info-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.fin-info-head .fin-h3{margin:0}
.fin-info-sub{font-size:12px;color:var(--ink-soft)}
.fin-flow{display:flex;align-items:stretch;gap:10px;flex-wrap:wrap}
.fin-flow-op{display:flex;align-items:center;font-size:26px;font-weight:800;color:var(--ink-soft)}
.fin-flow-block{flex:1;min-width:160px;text-align:left;background:var(--field-bg);border:1px solid var(--panel-line);
  border-left:4px solid var(--blue);border-radius:12px;padding:12px 14px;cursor:pointer;display:flex;flex-direction:column;gap:3px;transition:transform .12s ease,box-shadow .12s ease}
.fin-flow-block:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(20,50,90,.14)}
.fin-flow-block .ffb-k{font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft)}
.fin-flow-block .ffb-v{font-size:21px;font-weight:800;color:var(--text-strong);line-height:1.1}
.fin-flow-block .ffb-s{font-size:12px;color:var(--ink-soft)}
.ffb-rec{border-left-color:#3370DB} .ffb-cus{border-left-color:#F27507} .ffb-luc{border-left-color:#2A5EB9}
.ffb-luc.neg .ffb-v{color:var(--red)} .ffb-luc.neg{border-left-color:var(--red)}
.fin-info-bar{margin-top:16px}
.fin-info-svg{width:100%;height:40px;display:block}
.fin-info-legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:8px;font-size:12px;color:var(--ink-soft)}
.fin-info-legend span{display:inline-flex;align-items:center;gap:6px}
.fin-info-legend i{width:11px;height:11px;border-radius:3px;display:inline-block}
.fin-info-alert{margin:10px 0 0;font-size:12.5px;color:#c0392b;background:rgba(217,56,56,.08);border:1px solid rgba(217,56,56,.28);border-radius:9px;padding:8px 12px}
.fin-info-alert b{color:var(--red)}
@media(max-width:620px){ .fin-flow{flex-direction:column} .fin-flow-op{justify-content:center;font-size:20px} }

/* =========================================================================
   MÓDULO COMERCIAL · Solicitações de informações de carga
   -------------------------------------------------------------------------
   Prefixo .sc- para tudo. Nenhuma regra existente é alterada: a página
   /comercial usa a mesma barra, os mesmos modais e os mesmos botões do
   painel, e só acrescenta o que é dela.
   ========================================================================= */

/* --- indicadores --- */
.sc-ind{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:16px}
.sc-card{background:var(--panel);border:1px solid var(--panel-line);border-radius:11px;
  padding:14px 16px;position:relative;overflow:hidden}
.sc-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--slate)}
.sc-card.azul::before{background:var(--blue)}
.sc-card.azul-claro::before{background:var(--blue-light)}
.sc-card.verde::before{background:var(--green)}
.sc-card.amarelo::before{background:var(--yellow)}
.sc-card.vermelho::before{background:var(--red)}
.sc-card.laranja::before{background:var(--orange)}
.sc-card.cinza::before{background:var(--slate)}
.sc-card-n{font-size:27px;font-weight:800;color:var(--text-strong);letter-spacing:-.02em;line-height:1.1}
.sc-card-l{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-soft);margin-top:5px}

/* --- barra de ações e filtros --- */
.sc-acoes{display:flex;flex-wrap:wrap;gap:12px;align-items:center;background:var(--panel);
  border:1px solid var(--panel-line);border-radius:11px;padding:13px 15px;margin-bottom:14px}
.sc-filtros{display:flex;flex-wrap:wrap;gap:9px;align-items:center;flex:1;min-width:280px}
.sc-filtros input[type=search],.sc-filtros select,.sc-filtros input[type=date]{
  background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:8px;
  padding:9px 11px;color:var(--text-strong);font-size:13.5px;font-family:inherit;outline:none;
  transition:border var(--t)}
.sc-filtros input[type=search]{flex:1;min-width:230px}
.sc-filtros input:focus,.sc-filtros select:focus{border-color:var(--blue)}
.sc-per{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11px;
  letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}
.sc-acoes .btn-ghost{padding:9px 14px;font-size:13px}

/* --- tabela --- */
.sc-lista{background:var(--panel);border:1px solid var(--panel-line);border-radius:11px;overflow-x:auto}
.sc-tab{width:100%;border-collapse:collapse;font-size:13.5px;min-width:980px}
.sc-tab thead th{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--muted);text-align:left;padding:12px 14px;border-bottom:1px solid var(--panel-line);
  white-space:nowrap;font-weight:600}
.sc-tab tbody td{padding:12px 14px;border-bottom:1px solid var(--panel-line);color:var(--ink);vertical-align:top}
.sc-tab tbody tr:last-child td{border-bottom:0}
.sc-tab tbody tr:hover{background:var(--field-bg)}
.sc-tab b{color:var(--text-strong);font-weight:600}
.sc-mono{font-family:var(--mono);font-size:12.5px;white-space:nowrap}
.sc-sub{font-size:12px;color:var(--ink-soft);margin-top:2px}
.sc-urgente{color:var(--danger-text);font-weight:700}
.sc-acoes-td{white-space:nowrap;text-align:right}
.sc-mini{padding:5px 10px !important;font-size:12px !important;margin-left:6px}
.sc-link-ext{color:var(--blue-light);text-decoration:none}
.sc-link-ext:hover{text-decoration:underline}

/* --- selos de status --- */
.sc-selo{display:inline-block;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;
  text-transform:uppercase;font-weight:600;border-radius:20px;padding:3px 9px;white-space:nowrap;
  background:rgba(120,160,210,.14);color:var(--ink-soft);border:1px solid var(--panel-line-strong)}
.sc-selo.aguarda{background:rgba(230,167,0,.16);color:var(--warn-text);border-color:rgba(230,167,0,.38)}
.sc-selo.ok{background:rgba(25,169,87,.16);color:var(--ok-text);border-color:rgba(25,169,87,.38)}
.sc-selo.espera{background:rgba(62,165,240,.14);color:var(--info-text);border-color:rgba(62,165,240,.34)}
.sc-selo.erro{background:rgba(217,56,56,.16);color:var(--danger-text);border-color:rgba(217,56,56,.4)}

/* --- vazio / paginação --- */
.sc-vazio{padding:36px 22px;text-align:center;color:var(--ink-soft);font-size:14px;line-height:1.6}
.sc-vazio.erro{color:var(--danger-text)}
.sc-pag{display:flex;align-items:center;gap:12px;justify-content:center;padding:16px 0 40px}
.sc-pag button[disabled]{opacity:.4;cursor:default}

/* --- modais do módulo --- */
.sc-modal{width:min(760px,96vw)}
.sc-modal-larga{width:min(940px,96vw)}
.sc-modal .m-head{display:flex;align-items:center;gap:14px}
.sc-modal .m-head h3{margin:0;font-size:19px;font-weight:700;color:var(--text-strong)}
.sc-modal .m-head .m-close{margin-left:auto}
.sc-ajuda{font-size:13.5px;color:var(--ink-soft);line-height:1.6;background:rgba(62,165,240,.07);
  border:1px solid rgba(62,165,240,.2);border-radius:9px;padding:12px 14px;margin:0 0 20px}
.sc-ajuda b{color:var(--text-strong)}

/* --- formulários --- */
.sc-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.sc-full{grid-column:1/-1}
.sc-f label{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px}
.sc-f input,.sc-f select,.sc-f textarea{width:100%;background:var(--field-bg);
  border:1px solid var(--panel-line-strong);border-radius:8px;padding:11px 12px;
  color:var(--text-strong);font-size:15px;font-family:inherit;outline:none;transition:border var(--t)}
.sc-f input:focus,.sc-f select:focus,.sc-f textarea:focus{border-color:var(--blue)}
.sc-f input[aria-invalid="true"],.sc-f select[aria-invalid="true"]{border-color:var(--red)}
.sc-erro{display:block;min-height:15px;font-size:12px;color:var(--danger-text);margin-top:5px}
.sc-msg{margin-top:14px;font-size:13.5px;min-height:18px}
.sc-msg.erro{color:var(--danger-text)}
.sc-msg.ok{color:var(--ok-text)}

/* --- caixa do link gerado --- */
.sc-link-box{background:rgba(25,169,87,.08);border:1px solid rgba(25,169,87,.3);
  border-radius:11px;padding:18px}
.sc-link-ok{font-size:15px;font-weight:600;color:var(--ok-text);margin-bottom:14px}
.sc-link-ok b{color:var(--text-strong)}
.sc-link-row{display:flex;gap:9px}
.sc-link-row input{flex:1;background:var(--field-bg);border:1px solid var(--panel-line-strong);
  border-radius:8px;padding:11px 12px;color:var(--text-strong);font-family:var(--mono);
  font-size:12.5px;outline:none}
.sc-link-dica{font-size:12.5px;color:var(--ink-soft);margin-top:11px;line-height:1.55}

/* --- histórico --- */
.sc-hist{display:flex;flex-direction:column;gap:1px;background:var(--panel-line);
  border:1px solid var(--panel-line);border-radius:10px;overflow:hidden}
.sc-hev{display:flex;gap:14px;background:var(--panel);padding:12px 14px;font-size:13.5px}
.sc-hev-t{font-family:var(--mono);font-size:12px;color:var(--muted);white-space:nowrap;flex:0 0 108px}
.sc-hev b{color:var(--text-strong)}

/* --- notificações --- */
.sc-notif{background:var(--panel);border:1px solid var(--panel-line);border-left:3px solid var(--slate);
  border-radius:9px;padding:13px 15px;margin-bottom:10px}
.sc-notif.nova{border-left-color:var(--orange);background:var(--field-bg)}
.sc-notif.erro{border-left-color:var(--red)}
.sc-notif-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:4px}
.sc-notif-h b{color:var(--text-strong);font-size:14.5px}
.sc-notif-h .sc-sub{margin-left:auto;margin-top:0}
.sc-notif-a{margin-top:10px;display:flex;gap:8px;flex-wrap:wrap}
.sc-notif-a .sc-mini{margin-left:0}

/* --- configuração da integração --- */
.sc-cfg{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:6px}
.sc-cfg label{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink-soft)}
.sc-cfg select,.sc-cfg input{width:100%;margin-top:6px;background:var(--field-bg);
  border:1px solid var(--panel-line-strong);border-radius:8px;padding:10px 11px;
  color:var(--text-strong);font-size:14px;font-family:inherit;outline:none}
.sc-cfg select:focus,.sc-cfg input:focus{border-color:var(--blue)}
.sc-cfg .sc-sub{text-transform:none;letter-spacing:0;font-family:var(--sans)}
.sc-cfg code{font-family:var(--mono);font-size:11.5px;color:var(--accent-text)}
.sc-alerta{font-size:13.5px;line-height:1.6;border-radius:9px;padding:12px 14px;margin-bottom:16px;
  background:rgba(230,167,0,.1);border:1px solid rgba(230,167,0,.3);color:var(--warn-text)}
.sc-alerta.erro{background:rgba(217,56,56,.1);border-color:rgba(217,56,56,.32);color:var(--danger-text)}
.sc-alerta.info{background:rgba(62,165,240,.08);border-color:rgba(62,165,240,.24);color:var(--ink)}
.sc-alerta b{color:var(--text-strong)}
.sc-alerta code{font-family:var(--mono);font-size:12.5px}

/* --- telas estreitas --- */
@media(max-width:820px){
  .sc-grid,.sc-cfg{grid-template-columns:1fr}
  .sc-acoes{flex-direction:column;align-items:stretch}
  .sc-filtros{min-width:0}
  .sc-filtros input[type=search]{min-width:0}
  .sc-hev{flex-direction:column;gap:4px}
  .sc-hev-t{flex:none}
}

/* --- seletor de cliente (modal de nova solicitação) --------------------- */
.sc-sel{margin-bottom:20px}
.sc-sel > label{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px}
.sc-sel.escolhido > label,
.sc-sel.escolhido .sc-sel-campo{display:none}
.sc-sel-campo{position:relative;display:flex}
.sc-sel-campo input{width:100%;background:var(--field-bg);border:1px solid var(--panel-line-strong);
  border-radius:8px;padding:11px 40px 11px 12px;color:var(--text-strong);font-size:15px;
  font-family:inherit;outline:none;transition:border var(--t)}
.sc-sel-campo input:focus{border-color:var(--blue)}
.sc-sel-seta{position:absolute;right:2px;top:2px;bottom:2px;width:36px;border:0;background:none;
  color:var(--ink-soft);font-size:13px;cursor:pointer;border-radius:0 8px 8px 0}
.sc-sel-seta:hover{color:var(--text-strong)}

.sc-sel-lista{margin-top:6px;max-height:290px;overflow-y:auto;background:var(--panel);
  border:1px solid var(--panel-line-strong);border-radius:10px;padding:5px}
.sc-op{display:flex;align-items:flex-start;gap:11px;width:100%;text-align:left;background:none;
  border:0;border-radius:8px;padding:10px 11px;cursor:pointer;color:var(--ink);
  font-family:inherit;font-size:14px;transition:background var(--t)}
.sc-op:hover,.sc-op:focus-visible{background:var(--field-bg)}
.sc-op b{display:block;color:var(--text-strong);font-weight:600}
.sc-op .sc-sub{margin-top:1px}
.sc-op-ic{flex:0 0 30px;height:30px;border-radius:8px;display:grid;place-items:center;
  background:rgba(51,112,219,.16);color:var(--blue-light);font-weight:700;font-size:13.5px}
.sc-op-novo{border-bottom:1px solid var(--panel-line);border-radius:8px 8px 0 0;margin-bottom:4px}
.sc-op-novo .sc-op-ic{background:rgba(242,117,7,.18);color:var(--orange);font-size:17px;line-height:1}
.sc-op-parcial{display:inline-block;margin-top:4px;font-family:var(--mono);font-size:10px;
  letter-spacing:.06em;text-transform:uppercase;border-radius:20px;padding:2px 7px;
  background:rgba(230,167,0,.16);color:var(--warn-text);border:1px solid rgba(230,167,0,.34)}
.sc-op-vazio{padding:14px 12px;font-size:13.5px;color:var(--ink-soft);text-align:center}

.sc-sel-atual{display:flex;align-items:center;gap:14px;background:var(--field-bg);
  border:1px solid var(--panel-line-strong);border-left:3px solid var(--orange);
  border-radius:9px;padding:11px 14px}
.sc-sel-atual b{color:var(--text-strong);font-size:15px}
.sc-sel-atual > div{flex:1;min-width:0}
.sc-sel-atual .sc-mini{margin-left:0;flex:none}

/* devolutiva da consulta à Receita, embaixo do campo de CNPJ */
.sc-receita{display:block;font-size:12px;margin-top:5px;line-height:1.45}
.sc-receita.buscando{color:var(--ink-soft)}
.sc-receita.ok{color:var(--ok-text)}
.sc-receita.aviso{color:var(--warn-text)}

/* --- exclusão de solicitações (somente administrador) ------------------- */
.sc-sel-col{width:38px;text-align:center}
.sc-sel-col input{width:16px;height:16px;accent-color:var(--orange);cursor:pointer}
.sc-barra-sel{display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  background:rgba(242,117,7,.1);border:1px solid rgba(242,117,7,.3);
  border-radius:10px;padding:11px 15px;margin-bottom:12px;font-size:13.5px;color:var(--ink)}
.sc-barra-sel b{color:var(--text-strong)}
.sc-barra-sel .sc-mini{margin-left:0}
.sc-barra-sel .sc-mini.perigo,
.btn-ghost.perigo{border-color:rgba(217,56,56,.5);color:var(--danger-text)}
.btn-ghost.perigo:hover{border-color:var(--red);background:rgba(217,56,56,.14);color:var(--text-strong)}
.btn-primary.perigo{background:var(--red)}
.btn-primary.perigo:hover{background:#b62d2d}
.sc-chk-ploomes{margin-top:16px;background:var(--field-bg);border:1px solid var(--panel-line-strong);
  border-radius:9px;padding:11px 14px;align-items:flex-start;font-size:13.5px;line-height:1.5}
.sc-chk-ploomes input{margin-top:2px;flex:none}
.sc-chk-ploomes b{color:var(--text-strong)}

/* --- lista de solicitações em cartões -----------------------------------
   Substitui a tabela de dez colunas, que exigia 980 px e rolava de lado em
   qualquer tela menor que um monitor. O cartão inteiro é clicável: não há
   botão "Detalhes" para caçar, e em telas estreitas o conteúdo só empilha. */
.sc-todos-lbl{display:inline-flex;align-items:center;gap:8px;padding:12px 15px 4px;
  font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-soft);cursor:pointer}
.sc-todos-lbl input{width:16px;height:16px;accent-color:var(--orange);cursor:pointer}
.sc-cards{display:flex;flex-direction:column}
.sc-card-sol{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;cursor:pointer;
  border-top:1px solid var(--panel-line);transition:background var(--t)}
.sc-cards .sc-card-sol:first-child{border-top:0}
.sc-card-sol:hover{background:var(--field-bg)}
.sc-card-sol:focus-visible{outline:2px solid var(--blue);outline-offset:-2px;background:var(--field-bg)}
.sc-card-sol .sc-marca{width:16px;height:16px;accent-color:var(--orange);cursor:pointer;margin-top:3px;flex:none}
.sc-card-corpo{flex:1;min-width:0}
.sc-card-topo{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.sc-card-nome{color:var(--text-strong);font-size:15.5px;font-weight:600;line-height:1.3}
.sc-card-meta{margin-top:4px;font-size:12.5px;color:var(--ink-soft);line-height:1.5;
  overflow-wrap:anywhere}
/* Tentativa do cliente que o formulário recusou: precisa saltar aos olhos, é
   um cliente travado esperando ajuda. */
.sc-card-tentativa{margin-top:7px;padding:6px 9px;border-radius:7px;
  background:rgba(240,166,62,.12);border:1px solid rgba(240,166,62,.35);
  font-size:12.5px;line-height:1.45;color:var(--ink-soft);overflow-wrap:anywhere}
.sc-card-tentativa small{display:block;margin-top:2px;font-family:var(--mono);
  font-size:11px;color:var(--muted)}
.sc-card-pe{margin-top:7px;display:flex;align-items:center;gap:8px 14px;flex-wrap:wrap;
  font-family:var(--mono);font-size:11.5px;color:var(--muted)}
.sc-card-prazo{color:var(--ink-soft)}
.sc-card-crm{color:var(--blue-light)}
.sc-card-pe .sc-mini{margin-left:0;font-family:var(--sans)}
.sc-card-seta{color:var(--muted);font-size:22px;line-height:1;flex:none;align-self:center}
.sc-card-sol:hover .sc-card-seta{color:var(--orange)}

@media(max-width:560px){
  .sc-card-sol{padding:13px 13px}
  .sc-card-seta{display:none}
  .sc-card-nome{font-size:15px}
}
/* BID ESAB · peso considerado no formulário */
.es-peso-cons{padding:10px 12px;border:1px dashed var(--panel-line-strong);border-radius:8px;font-size:14px;min-height:40px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* ===================== MÓDULO COMERCIAL · PÓS-VENDAS (.pv-) =====================
   Painel de satisfação do cliente. Mesmo design system; prefixo .pv- para não
   colidir com as solicitações (.sc-). */
.pv-view[hidden]{display:none}
.pv-topo{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin:4px 0 12px}
.pv-h2{margin:0;font-size:20px;font-weight:700;color:var(--text-strong);letter-spacing:-.01em}
.pv-h3{margin:0;font-size:15px;font-weight:700;color:var(--text-strong)}
.pv-sub{margin:4px 0 0;font-size:13px;color:var(--ink-soft);max-width:720px;line-height:1.5}
.pv-periodo{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:12.5px;color:var(--ink-soft)}
.pv-periodo input{font-size:12.5px;padding:6px 9px}
.pv-canais{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.pv-canal{font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;padding:4px 10px;border-radius:20px;border:1px solid var(--panel-line-strong);color:var(--ink-soft);background:none}
.pv-canal.on{border-color:rgba(25,169,87,.5);color:var(--ok-text)}
.pv-canal.off{border-color:rgba(230,167,0,.5);color:var(--warn-text)}
.pv-canal.pv-link{cursor:pointer}
.pv-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:0 0 14px}
.pv-kpis-mini{grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}
.pv-kpi{background:linear-gradient(160deg,var(--panel),var(--panel-2));border:1px solid var(--panel-line);border-radius:12px;padding:12px 14px;position:relative;overflow:hidden}
.pv-kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--panel-line-strong)}
.pv-kpi.pv-boa::before{background:var(--green)} .pv-kpi.pv-neutra::before{background:var(--yellow)} .pv-kpi.pv-ruim::before{background:var(--red)}
.pv-kpi-v{font-size:28px;font-weight:800;letter-spacing:-.03em;color:var(--text-strong);line-height:1.05}
.pv-kpi-de{font-size:15px;color:var(--ink-soft);font-weight:600}
.pv-kpi-l{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);margin-top:6px}
.pv-kpi-s{font-size:11.5px;color:var(--muted);margin-top:3px}
.pv-graficos{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0 0 12px}
.pv-card{background:var(--panel);border:1px solid var(--panel-line);border-radius:12px;padding:14px 16px;min-width:0}
.pv-card-alerta{border-color:rgba(217,56,56,.35)}
.pv-card-t{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent-text);margin:0 0 10px}
.pv-muted{color:var(--ink-soft);font-weight:400}
.pv-small{font-size:11.5px}
.pv-scroll{max-height:320px;overflow:auto}
.pv-est{color:#F5A524;letter-spacing:1px;font-size:15px;white-space:nowrap}
.pv-est-off{color:rgba(120,160,210,.28)}
.pv-boa{color:var(--ok-text)} .pv-neutra{color:var(--warn-text)} .pv-ruim{color:var(--danger-text)}
.pv-barras{display:flex;flex-direction:column;gap:7px}
.pv-barra-l{display:grid;grid-template-columns:44px 1fr 84px;align-items:center;gap:10px;font-size:12.5px}
.pv-barra-rot{font-family:var(--mono);font-weight:700}
.pv-barra-trilho{height:14px;background:rgba(120,160,210,.12);border-radius:8px;overflow:hidden}
.pv-barra{height:100%;border-radius:8px;background:var(--blue-light);min-width:2px;transition:width .4s ease}
.pv-barra.pv-boa{background:var(--green)} .pv-barra.pv-neutra{background:var(--yellow)} .pv-barra.pv-ruim{background:var(--red)}
.pv-barra-n{text-align:right;color:var(--text-strong);font-variant-numeric:tabular-nums}
.pv-svg{width:100%;height:auto;display:block}
.pv-svg .pv-grid{stroke:rgba(120,160,210,.16);stroke-width:1}
.pv-svg .pv-ax{fill:var(--ink-soft);font-size:10px;font-family:var(--mono)}
.pv-svg .pv-val{fill:var(--text-strong);font-size:10.5px;font-weight:700}
.pv-svg .pv-bar-resp{fill:rgba(62,165,240,.22)}
.pv-svg .pv-linha{fill:none;stroke:var(--orange);stroke-width:2.5;stroke-linejoin:round}
.pv-svg .pv-ponto{fill:var(--orange);stroke:var(--panel);stroke-width:2}
.pv-svg .pv-ponto.pv-boa{fill:var(--green)} .pv-svg .pv-ponto.pv-neutra{fill:var(--yellow)} .pv-svg .pv-ponto.pv-ruim{fill:var(--red)}
.pv-t{width:100%;border-collapse:collapse;font-size:12.5px}
.pv-t th{text-align:left;font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);padding:6px 8px;border-bottom:1px solid var(--panel-line);position:sticky;top:0;background:var(--panel)}
.pv-t td{padding:7px 8px;border-bottom:1px solid var(--panel-line);vertical-align:top}
.pv-row-cli{cursor:pointer} .pv-row-cli:hover td{background:rgba(62,165,240,.06)}
.pv-tag-off{display:inline-block;font-family:var(--mono);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;padding:1px 7px;border-radius:20px;border:1px solid rgba(230,167,0,.5);color:var(--warn-text)}
.pv-item{border:1px solid var(--panel-line);border-left:3px solid var(--panel-line-strong);border-radius:10px;padding:10px 12px;margin-bottom:8px;cursor:pointer;background:var(--panel-2)}
.pv-item:hover{border-color:var(--panel-line-strong)}
.pv-item.pv-boa{border-left-color:var(--green)} .pv-item.pv-neutra{border-left-color:var(--yellow)} .pv-item.pv-ruim,.pv-item-ruim{border-left-color:var(--red)}
.pv-item-top{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:13px;color:var(--text-strong)}
.pv-item-top .pv-muted{margin-left:auto;font-size:11.5px}
.pv-item-rota{font-size:12.5px;color:var(--ink);margin-top:3px}
.pv-arr{color:var(--orange);font-weight:700}
.pv-coment{font-size:12.5px;color:var(--ink);margin-top:6px;line-height:1.45;font-style:italic}
.pv-coment-k{font-style:normal;font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin-right:4px}
.pv-ultimas{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:8px}
.pv-ultimas .pv-item{margin-bottom:0}
.pv-lista-topo{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:18px 0 10px}
.pv-filtros{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.pv-filtros input[type=search]{min-width:240px;font-size:13px;padding:7px 11px}
.pv-filtros select{font-size:13px;padding:7px 9px}
.pv-lista{display:flex;flex-direction:column;gap:6px}
.pv-linha{display:grid;grid-template-columns:minmax(150px,1.2fr) minmax(180px,1.6fr) 110px minmax(130px,1fr) auto;gap:12px;align-items:center;background:linear-gradient(160deg,var(--panel),var(--panel-2));border:1px solid var(--panel-line);border-left:4px solid var(--panel-line-strong);border-radius:10px;padding:10px 14px;cursor:pointer;font-size:13px;color:var(--ink)}
.pv-linha:hover{border-color:var(--panel-line-strong)}
.pv-linha.pv-boa{border-left-color:var(--green)} .pv-linha.pv-neutra{border-left-color:var(--yellow)} .pv-linha.pv-ruim{border-left-color:var(--red)}
.pv-linha b{color:var(--text-strong)}
.pv-l-acoes{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.pv-mini{font-size:11.5px;padding:5px 10px;text-decoration:none;display:inline-flex;align-items:center}
.pv-link{background:none;border:0;color:var(--blue-light);cursor:pointer;font:inherit;font-size:12px;text-decoration:underline;padding:0}
.pv-det-topo{display:flex;gap:18px;align-items:center;padding:12px 14px;border:1px solid var(--panel-line);border-left:4px solid var(--panel-line-strong);border-radius:12px;background:var(--panel-2);margin-bottom:14px}
.pv-det-topo.pv-boa{border-left-color:var(--green)} .pv-det-topo.pv-neutra{border-left-color:var(--yellow)} .pv-det-topo.pv-ruim{border-left-color:var(--red)}
.pv-det-nota{text-align:center;min-width:96px}
.pv-det-num{font-size:40px;font-weight:800;letter-spacing:-.04em;color:var(--text-strong);line-height:1} .pv-det-num span{font-size:16px;color:var(--ink-soft);font-weight:600}
.pv-det-grid .sc-f label{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}
.pv-det-v{font-size:13.5px;color:var(--ink);line-height:1.45}
.pv-resp{border:1px solid var(--panel-line);border-radius:10px;padding:10px 12px;margin-top:10px;background:var(--panel-2)}
.pv-resp-k{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:4px}
.pv-resp-v{font-size:14px;color:var(--text-strong);line-height:1.5;white-space:pre-wrap}
.pv-envios{margin-top:12px;display:flex;flex-direction:column;gap:6px;font-size:13px}
.pv-envio-k{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);display:inline-block;min-width:74px}
.pv-linkbox{display:flex;gap:8px} .pv-linkbox input{flex:1;font-family:var(--mono);font-size:12px}
.pv-reenvio{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:10px}
@media(max-width:900px){ .pv-graficos{grid-template-columns:1fr} .pv-linha{grid-template-columns:1fr 1fr} .pv-l-acoes{grid-column:1/-1;justify-content:flex-start} .pv-reenvio{grid-template-columns:1fr} }
@media(max-width:560px){ .pv-linha{grid-template-columns:1fr} .pv-barra-l{grid-template-columns:40px 1fr 70px} }
/* aviso clicável de clientes sem contato (Pós-vendas) */
.pv-canal-btn{cursor:pointer;background:rgba(230,167,0,.10);text-transform:none;letter-spacing:0;font-family:inherit;font-size:12.5px;font-weight:600;padding:5px 12px;transition:all var(--t)}
.pv-canal-btn:hover{background:rgba(230,167,0,.22);border-color:var(--yellow);color:#fff}
/* rodapé da lista de clientes (Coleta e entrega): contagem + atualizar do Ploomes */
.ce-sug-rodape{position:sticky;bottom:0;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:7px 10px;font-size:11px;color:var(--ink-soft);background:var(--panel);border-top:1px solid var(--panel-line)}
.ce-sug-sync{font:inherit;font-size:11px;font-weight:600;color:var(--blue-light);background:none;border:1px solid var(--panel-line-strong);border-radius:8px;padding:4px 9px;cursor:pointer;white-space:nowrap}
.ce-sug-sync:hover{border-color:var(--blue-light)}

/* linha do "Atualizar do Ploomes" fora do menu suspenso, com barra de progresso */
.ce-sync-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;min-height:24px}
.ce-sync-row .ce-sug-sync{padding:5px 10px}
.ce-sync-row .ce-sug-sync:disabled{opacity:.6;cursor:progress}
.ce-sync-info{font-size:11px;color:var(--muted)}
.ce-prog{display:flex;align-items:center;gap:8px;flex:1;min-width:180px}
.ce-prog[hidden]{display:none}
.ce-prog-trilho{flex:1;height:6px;border-radius:6px;background:rgba(120,160,210,.16);overflow:hidden;position:relative}
.ce-prog-bar{position:absolute;top:0;bottom:0;left:-40%;width:40%;border-radius:6px;background:linear-gradient(90deg,var(--blue),var(--blue-light));animation:ceProg 1.1s ease-in-out infinite}
@keyframes ceProg{0%{left:-40%}100%{left:100%}}
.ce-prog-txt{font-size:11.5px;color:var(--ink-soft);white-space:nowrap}

/* ==================== A PESSOA (ETMPessoa) ====================
   Foto + nome e segundo nome, igual em todo o TMS. Fica aqui, em
   styles.css, porque é a única folha que TODAS as páginas carregam: a
   pessoa aparece na Operação, no Comercial, no JIT e no Financeiro, e se
   cada módulo tivesse a sua cópia elas divergiriam na primeira semana.

   A inicial fica embaixo e a foto por cima: quando a foto não existe, o
   404 apaga o <img> (ouvinte em identidade.js) e a inicial reaparece sem
   piscar buraco nenhum. */
.etm-pessoa{display:inline-flex; align-items:center; gap:8px; min-width:0; vertical-align:middle}
.etm-pessoa-vazia{color:var(--muted,#8da2c0)}
.etm-pessoa-n{display:flex; flex-direction:column; min-width:0; line-height:1.25}
.etm-pessoa-nome{white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.etm-pessoa-sub{font-size:11px; color:var(--muted,#8da2c0); white-space:nowrap; overflow:hidden; text-overflow:ellipsis}

.etm-av{position:relative; flex:0 0 auto; width:26px; height:26px; border-radius:50%; overflow:hidden;
  display:inline-flex; align-items:center; justify-content:center;
  background:var(--blue,#3370DB); color:#fff; font-weight:700; font-size:11px; line-height:1;
  text-transform:uppercase; user-select:none}
.etm-av-ini{position:absolute; inset:0; display:flex; align-items:center; justify-content:center}
.etm-av-img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; border-radius:50%}
.etm-av-p{width:20px; height:20px; font-size:9.5px}
.etm-av-g{width:38px; height:38px; font-size:15px}

/* UF preenchida pelo município (ETMCidades). Precisa PARECER que não se
   digita: igual a um campo normal, a pessoa tenta editar, não consegue e
   conclui que o sistema travou. */
.etm-uf-auto{background:rgba(255,255,255,.03) !important; cursor:default; opacity:.85;
  border-style:dashed !important; text-transform:uppercase}
.etm-uf-auto:focus{outline:none; box-shadow:none}

/* =====================================================================
   TEMA CLARO · sobreposições para os módulos (Qualidade, JIT, Marketing,
   RH, Comercial, Usuários, Central de avisos). O tema é escolhido na tela
   inicial (tema.js) e vale para o sistema inteiro. "html body" na frente
   para vencer as regras específicas de cada módulo sem !important.
   ===================================================================== */
/* texto que era branco fixo sobre painel escuro → tinta forte */
html body.theme-light :is(.q-kpi .n,.q-comp .val,.q-ficha-h .meta b,.q-dl .v,.q-prontidao .item .n,.q-cont b,.q-lista-simples li:hover,
  .q-modal-box h3,.q-topo h2,.q-card h3,.q-tabela th,
  .j-turno .n,.j-veic .rod b,.j-arq .tit,.j-drop b,.j-fontes b,.j-previa .n,.j-mot .nm,.j-nome,
  .rh-anexo .tit,.rh-card-top .id b,.rh-nome,
  .mk-rank-l b,.mk-kpi .n,.mk-card h3,
  .c-ent-card .n,.c-kv div b,.c-cli-card .v,.c-card .t,.c-card .m b,.c-frete > header b,.c-frete > header .val,.c-conta .linhas .v,.c-prp .n b,.c-prp .v,.c-busca-lista button b,.c-ap-lido > div:not(.t):not(.c-ajuda) > b,
  .usr-modal-h h3,.usr-perfil b,.usr-confirm-txt b,.usr-modal-x:hover,.mp-zoom button:hover,
  .av-forte,.av-fechar:hover,.j-arq .acts a:hover,.j-arq .acts button:hover){color:var(--text-strong)}
/* o que fica sobre superfície colorida continua branco */
html body.theme-light :is(.q-side a .badge,.q-heat .c,.rh-card-top .av,.rh-setor,.rh-anexo .acts a.primario,.j-arq .acts .primario,.j-mot .av,.mk-dia.hoje .mk-dia-n,.av-badge,.av-av .av-inicial,.av-chip-f.on,.ind-cen-barra b,.ind-comp-barra span,.toast,.btn-primary,.btn-add){color:#fff}
/* menu lateral, abas e filtros ativos: a lavagem da cor do módulo é clara → texto escuro, ícone na cor */
html body.theme-light :is(.q-side a.on,.q-aba.on,.q-chip.on,.q-chip.on small,.rh-setores .q-chip.on small){color:var(--text-strong)}
html body.theme-light .q-side a:hover{background:rgba(14,35,56,.06);color:var(--text-strong)}
/* campos e caixas que tinham fundo escuro fixo */
html body.theme-light :is(.q-filtros input,.q-filtros select,.q-busca input,.q-modal-box .fld input,.q-modal-box .fld select,.q-modal-box .fld textarea,
  .usr-modal-box .fld input:not([type=radio]):not([type=checkbox]),.usr-modal-box .fld textarea,
  .rh-notas,.rh-copiar,.mk-code,.j-placa,.j-previa div,.c-raw,.av-input,.av-linha,.av-mini,#av-busca){background:var(--field-bg);color:var(--text-strong);border-color:var(--panel-line-strong)}
html body.theme-light :is(.q-filtros input,.q-busca input,.q-modal-box .fld input,.q-modal-box .fld textarea,.rh-notas,.av-input)::placeholder{color:var(--muted)}
html body.theme-light .mk-dia.fora{background:rgba(14,35,56,.05)}
html body.theme-light .c-conta{background:linear-gradient(to top,var(--darkest) 62%,rgba(230,237,245,.92))}
html body.theme-light :is(.q-modal-box,.usr-modal-box,.av-janela,.av-item,.c-busca-lista,.c-notif,.q-busca-res){background:var(--panel);border-color:var(--panel-line-strong);box-shadow:0 18px 44px rgba(8,39,68,.22)}
html body.theme-light :is(.q-modal,.usr-modal,.av-overlay,.av-fundo){background:rgba(8,39,68,.45)}
html body.theme-light .q-side{background:var(--panel);border-right:1px solid var(--panel-line)}
html body.theme-light :is(.q-card,.q-kpi,.rh-card,.mk-card,.mk-kpi,.j-card,.j-veic,.j-arq,.c-card,.c-ent-card,.c-cli-card,.c-frete,.c-prp,.fin-card){background:var(--panel);border-color:var(--panel-line);box-shadow:0 1px 2px rgba(8,39,68,.05),0 8px 22px rgba(8,39,68,.10)}
html body.theme-light .q-tabela td{border-color:var(--panel-line);color:var(--ink)}
html body.theme-light .q-tabela tr:hover td{background:rgba(14,35,56,.05)}
html body.theme-light .rh-stars button{color:rgba(14,35,56,.22)} html body.theme-light .rh-stars button.on,html body.theme-light .rh-stars:hover button,html body.theme-light .rh-stars button:hover{color:#d99a00}
html body.theme-light :is(.q-vazio,.q-sub,.q-dl .k,.c-kv div span,.q-filtros label,.mk-h4){color:var(--muted)}
html body.theme-light .bar-title b{color:var(--text-strong)} html body.theme-light .bar-title span{color:var(--muted)}
html body.theme-light .ind-cen-barra b,html body.theme-light .ind-comp-barra span{text-shadow:0 1px 2px rgba(0,0,0,.35)}
/* botão sol/lua */
.tema-troca{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 11px 0 9px;border:1px solid var(--panel-line-strong);border-radius:9px;background:transparent;color:var(--ink-soft);cursor:pointer;font-size:12.5px;font-weight:600;transition:all var(--t)}
.tema-troca:hover{border-color:var(--orange);color:var(--text-strong)}
.tema-troca svg{width:16px;height:16px}.tema-troca .lua{display:none}
body.theme-light .tema-troca .sol{display:none} body.theme-light .tema-troca .lua{display:block}

/* logotipo no tema claro: letras escuras (também via CSS, sem depender do tema.js) */
body.theme-light img[src^="/etmlog-wordmark.svg"]:not([data-logo-fixo]){content:url("/etmlog-wordmark-escuro.svg")}

/* ---- varredura final do tema claro: tudo que ainda tinha cor fixa do escuro ---- */
/* lavagens da cor do módulo com texto branco → texto escuro */
html body.theme-light :is(.rh-status-sel button.on,.rh-visao button.on,.q-fluxo span.atual){color:var(--text-strong)}
/* selos e tags com texto pastel (feitos para fundo escuro) → tons de leitura */
html body.theme-light :is(.q-tag.red,.q-tag.critica,.q-tag.grave,.q-tag.reprovado,.rh-desc:hover,.rt-alert.rt-canc,.usr-erro-inline,.fin-err,.usr-error b,.pwr-msg.err){color:var(--danger-text)}
html body.theme-light :is(.q-tag.q){color:var(--accent-text)}
html body.theme-light :is(.q-tag.alta,.badge.b-pendente,.occ-badge.os-0,.pre-badge.ps-0,.cal-pag,.pv-est,.bs-tag.bs-homol,.bs-homol-banner){color:var(--warn-text)}
html body.theme-light .pv-canal-btn:hover{color:var(--text-strong)}
/* fundos escuros fixos em tabelas e caixas */
html body.theme-light :is(.fin-tab thead th,.fin-tab tfoot td,.fin-tri-cab,.fin-bal-cab,.gc-fin,.j-drop){background:rgba(14,35,56,.05)}
html body.theme-light .admin-table tr:hover td{background:rgba(14,35,56,.05)}
html body.theme-light .mp-caixa{background:#dfe7f0}
html body.theme-light .mp-credito{color:#1b2b40;background:rgba(255,255,255,.75)}
html body.theme-light .rmap .city{color:#0e2338;background:rgba(255,255,255,.85)}
/* a Operação: tooltips, cards e painéis que ainda usavam branco fixo */
html body.theme-light :is(.panel,.card,.modal,.kpi,.m-body,.set-group){color:var(--ink)}

/* aba "Canceladas em andamento" (Operação) */
.main-tabs .mt-n{display:inline-block;min-width:18px;padding:0 6px;margin-left:4px;border-radius:20px;background:var(--red);color:#fff;font-size:10.5px;font-weight:700;line-height:18px}
.main-tabs .mt-n:empty{display:none}
.sec-canc .group-head .gh-ttl{color:var(--danger-text)}
.canc-aviso{margin:0 0 12px;padding:10px 14px;border-radius:10px;background:rgba(217,56,56,.08);border:1px solid rgba(217,56,56,.3);color:var(--danger-text);font-size:13px;line-height:1.5}

/* lista suspensa de cidades / veículos (cidades.js) */
.etm-sug{position:absolute;z-index:1200;max-height:260px;overflow:auto;background:var(--panel);border:1px solid var(--panel-line-strong);border-radius:9px;box-shadow:0 14px 34px rgba(2,9,20,.45);padding:4px;font-size:13px}
.etm-sug-it{padding:7px 10px;border-radius:6px;cursor:pointer;color:var(--ink);white-space:nowrap}
.etm-sug-it:hover,.etm-sug-it.on{background:rgba(51,112,219,.18);color:var(--text-strong)}
html body.theme-light .etm-sug{box-shadow:0 14px 34px rgba(8,39,68,.2)}
/* campos preenchidos pelo navegador (autofill) ficavam brancos sobre o painel escuro */
input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,textarea:-webkit-autofill,select:-webkit-autofill{
  -webkit-box-shadow:0 0 0 1000px var(--field-bg,#0b1c31) inset !important;-webkit-text-fill-color:var(--text-strong,#fff) !important;caret-color:var(--text-strong,#fff);transition:background-color 9999s ease-out 0s}

/* nenhum valor extrapola o seu campo: quebra em qualquer ponto quando precisa */
.q-dl .v,.c-kv div b,.q-card .fld .v,.rh-campo b,.j-kv b,.mk-kv b{overflow-wrap:anywhere;word-break:break-word;min-width:0}

.nc-parada{opacity:.85}.nc-parada small{font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--warn-text);margin-left:4px}

/* cotações de frete (Operação) */
.main-tabs .mt-pisca:not(:empty){animation:mt-pisca 1.1s ease-in-out infinite}
@keyframes mt-pisca{0%,100%{box-shadow:0 0 0 0 rgba(242,117,7,0);background:var(--red)} 50%{box-shadow:0 0 0 6px rgba(242,117,7,.35);background:var(--orange)}}
.main-tabs button.alerta{border-color:var(--orange)}
.sec-cot .cot-lista{display:grid;grid-template-columns:repeat(auto-fill,minmax(560px,1fr));gap:12px;align-items:start}
.cot-card{background:var(--panel);border:1px solid var(--panel-line-strong);border-radius:12px;padding:10px 12px}
.cot-card.aguardando{border-left:4px solid var(--orange)}
.cot-card.respondida{opacity:.9;border-left:4px solid var(--green)}
.cot-card header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin-bottom:8px}
.cot-card header b{font-size:14px;color:var(--text-strong)} .cot-card header small{color:var(--muted);font-weight:400}
.cot-st{font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;padding:2px 7px;border-radius:20px;background:rgba(242,117,7,.15);color:var(--warn-text);white-space:nowrap}
.cot-card.respondida .cot-st{background:rgba(25,169,87,.15);color:var(--ok-text)}
.cot-meta{font-size:11.5px;color:var(--muted);margin-left:auto;white-space:nowrap}
/* os dados do pedido são "pílulas" do tamanho do texto, lado a lado, sem quebra */
.cot-grid{display:flex;flex-wrap:wrap;gap:6px;margin:0}
.cot-grid>div,.cot-cargas,.cot-obs,.cot-resp{display:inline-flex;flex-direction:column;width:fit-content;max-width:100%;background:rgba(255,255,255,.03);border:1px solid var(--panel-line);border-radius:8px;padding:5px 9px;font-size:12.5px;white-space:nowrap}
.cot-grid>div b{white-space:nowrap}
.cot-cargas,.cot-obs,.cot-resp{margin-top:6px;margin-right:6px;vertical-align:top}
.cot-obs{white-space:normal;max-width:640px}
.cot-card .k{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:2px;white-space:nowrap}
.cot-grid b{color:var(--text-strong)}
.cot-fotos{margin-top:6px;display:flex;gap:6px;flex-wrap:wrap} .cot-fotos img{height:72px;border-radius:8px;border:1px solid var(--panel-line-strong)}
.cot-form{margin-top:10px;display:grid;gap:6px}
.cot-linha{display:grid;grid-template-columns:140px minmax(160px,1fr) 190px;gap:6px}
.cot-form input,.cot-form select,.cot-form textarea{width:100%;background:var(--field-bg);border:1px solid var(--panel-line-strong);border-radius:8px;padding:8px 10px;color:var(--text-strong);font-family:var(--sans);font-size:13px}
.cot-acoes{display:flex;justify-content:flex-end}
.cot-resp b{color:var(--ok-text);font-size:14px} .cot-resp>div{white-space:nowrap}
@media (max-width:700px){.cot-linha{grid-template-columns:1fr}}

.cot-fotos img{cursor:zoom-in}
.cot-admin{margin-top:8px;display:flex;justify-content:flex-end} .cot-excluir{color:var(--red);border-color:rgba(226,74,74,.5);font-size:12px}
.cot-linha.falta input,.cot-linha.falta select{border-color:var(--red);box-shadow:0 0 0 2px rgba(226,74,74,.25)}
.foto-lb{position:fixed;inset:0;z-index:1200;background:rgba(3,10,22,.92);display:none;align-items:center;justify-content:center}
.foto-lb.on{display:flex}
.foto-lb img{max-width:92vw;max-height:86vh;border-radius:10px;box-shadow:0 20px 60px rgba(0,0,0,.6);object-fit:contain}
.foto-lb button{position:absolute;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.2);color:#fff;border-radius:50%;width:44px;height:44px;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center}
.foto-lb button:hover{background:rgba(255,255,255,.18)}
.foto-lb .lb-x{top:16px;right:16px;font-size:18px} .foto-lb .lb-ant{left:16px;top:50%;transform:translateY(-50%)} .foto-lb .lb-prox{right:16px;top:50%;transform:translateY(-50%)}
.foto-lb.uma .lb-ant,.foto-lb.uma .lb-prox{display:none}
.foto-lb .lb-rod{position:absolute;bottom:18px;left:0;right:0;text-align:center;color:#cbd5e1;font-size:13px}

.cot-card .cot-cargas>div,.cot-card .cot-obs>div{white-space:inherit}
@media (max-width:620px){.sec-cot .cot-lista{grid-template-columns:1fr}}
.cot-edit{color:var(--warn-text);font-weight:700}
/* Cotações: abas Pendentes / Respondidas (19/10/2026) */
.sec-cot .cot-abas{display:flex;gap:6px;margin:0 0 12px;border-bottom:1px solid rgba(148,163,184,.25)}
.sec-cot .cot-abas button{background:none;border:0;border-bottom:3px solid transparent;color:inherit;opacity:.7;font:inherit;font-weight:600;padding:8px 14px;cursor:pointer}
.sec-cot .cot-abas button.on{opacity:1;border-bottom-color:#f59e0b}
.sec-cot .cot-abas .n{display:inline-block;min-width:20px;padding:0 6px;margin-left:4px;border-radius:10px;background:rgba(148,163,184,.25);font-size:.8em;text-align:center}
.sec-cot .cot-abas button[data-cot-aba=pendentes] .n{background:#f59e0b;color:#1a1300}

/* chat: botão no card da carga e destaque de cotação aberta pelo chat (19/10/2026) */
.m-head-bts{display:flex;gap:8px;align-items:flex-start;margin-left:auto}
.m-chat{background:transparent;border:1px solid rgba(148,163,184,.4);color:inherit;border-radius:8px;padding:6px 10px;font:inherit;font-size:13px;cursor:pointer;white-space:nowrap}
.m-chat:hover{border-color:#f59e0b}
.cot-admin{gap:8px}
.cot-card.cot-destaque{box-shadow:0 0 0 3px #f59e0b,0 0 24px rgba(245,158,11,.5);transition:box-shadow .3s}

/* cotações da Operação: horas e tempo de resposta (20/10/2026) */
.sec-cot .cot-abas{align-items:center}
.sec-cot .cot-media{margin-left:auto;font-size:13px;opacity:.9;padding:0 6px}
.sec-cot .cot-media b{color:#f59e0b;font-size:15px}
.sec-cot .cot-media small{opacity:.7}
.sec-cot .cot-horas{display:block;font-size:12px;opacity:.85;margin:2px 0}
.sec-cot .cot-horas b.ok{color:#22c55e}.sec-cot .cot-horas b.esp{color:#f59e0b}

/* carga aguardando liberação do cliente (21/10/2026) */
.aviso-cli{background:repeating-linear-gradient(135deg,rgba(245,158,11,.22) 0 10px,rgba(245,158,11,.12) 10px 20px);border:2px solid #f59e0b;color:#fbbf24;font-weight:800;font-size:12px;letter-spacing:.02em;padding:6px 10px;border-radius:8px;margin:0 0 8px;line-height:1.35}
.row.opcard-list .aviso-cli{grid-column:1/-1}
.is-aguard-cli{box-shadow:0 0 0 2px rgba(245,158,11,.55) inset}
#m-aviso-cli .aviso-cli{margin:8px 0 0;font-size:13px}
html.theme-light .aviso-cli{color:#92400e}

/* ===== CARD URGENTE (22/10/2026) ===== */
@keyframes urgPulso{0%,100%{box-shadow:0 0 0 2px #ef4444,0 0 0 0 rgba(239,68,68,.55)}50%{box-shadow:0 0 0 3px #f87171,0 0 22px 6px rgba(239,68,68,.45)}}
@keyframes urgFundo{0%,100%{background-color:rgba(239,68,68,.10)}50%{background-color:rgba(239,68,68,.22)}}
@keyframes urgSirene{0%,100%{transform:rotate(-12deg) scale(1)}50%{transform:rotate(12deg) scale(1.15)}}
.is-urgente{animation:urgPulso 1.1s ease-in-out infinite, urgFundo 1.1s ease-in-out infinite;border-color:#ef4444 !important;position:relative}
.urg-faixa{display:flex;align-items:center;gap:10px;background:linear-gradient(90deg,#b91c1c,#ef4444);color:#fff;border-radius:8px;padding:7px 10px;margin:0 0 8px;font-size:12.5px;line-height:1.3}
.row.opcard-list .urg-faixa{grid-column:1/-1}
.urg-faixa b{letter-spacing:.06em}
.urg-txt{flex:1;min-width:0}
.urg-txt small{display:block;opacity:.85;font-size:11px;margin-top:2px}
.urg-sirene{display:inline-block;animation:urgSirene .6s ease-in-out infinite;font-size:16px}
.urg-acts{display:flex;gap:6px;flex:none}
.urg-resolver{background:#fff;color:#b91c1c;border:0;border-radius:7px;font-weight:800;font-size:12px;padding:6px 10px;cursor:pointer}
.urg-resolver:hover{background:#fee2e2}
.urg-editar{background:rgba(255,255,255,.18);color:#fff;border:0;border-radius:7px;font-size:13px;padding:5px 8px;cursor:pointer}
.urg-btn{color:#f87171}
.urg-btn:hover{color:#fff;background:#dc2626}
.urg-marcar-modal{margin-top:8px;background:transparent;border:1.5px dashed #ef4444;color:#f87171;border-radius:8px;padding:6px 12px;font-weight:700;cursor:pointer;font-size:12.5px}
.urg-marcar-modal:hover{background:rgba(239,68,68,.12)}
#m-aviso-cli .urg-faixa{margin:8px 0 0;font-size:13px}
.sec-urg .gh-ttl{color:#f87171;font-weight:800}
.sec-urg .gh-line{background:linear-gradient(90deg,#ef4444,transparent)}
.sec-urg .gh-count{background:#dc2626;color:#fff}
#urg-flutuante{position:fixed;left:18px;bottom:18px;z-index:9000;background:#dc2626;color:#fff;border:0;border-radius:999px;padding:11px 18px;font-weight:800;font-size:14px;cursor:pointer;animation:urgPulso 1.1s ease-in-out infinite;font-family:inherit}
.urg-ovl{position:fixed;inset:0;z-index:10050;background:rgba(3,10,22,.62);display:flex;align-items:center;justify-content:center;padding:16px}
.urg-box{background:var(--panel,#132e55);color:var(--ink,#fff);border:1px solid rgba(239,68,68,.6);border-radius:14px;padding:20px 20px 16px;width:min(460px,100%);box-shadow:0 20px 60px rgba(0,0,0,.45)}
.urg-box h3{margin:0 0 6px;font-size:17px}
.urg-ref{margin:0 0 10px;font-size:12.5px;opacity:.8}
.urg-mot{margin:0 0 10px;font-size:13px}
.urg-box label{display:block;font-size:12.5px;font-weight:600;margin-bottom:6px}
.urg-box textarea{width:100%;box-sizing:border-box;border-radius:9px;border:1px solid var(--line-strong,rgba(255,255,255,.25));background:rgba(0,0,0,.18);color:inherit;padding:9px 10px;font:inherit;font-size:13.5px;resize:vertical}
.urg-box textarea.urg-erro{border-color:#ef4444}
.urg-btns{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}
.urg-ok-marcar,.urg-ok-resolver{border:0;border-radius:9px;padding:9px 16px;font-weight:800;cursor:pointer;color:#fff;font-family:inherit}
.urg-ok-marcar{background:#dc2626}
.urg-ok-resolver{background:#16a34a}
.urg-ok-marcar:disabled,.urg-ok-resolver:disabled{opacity:.6;cursor:wait}
html.theme-light .is-urgente,body.theme-light .is-urgente{animation:urgPulso 1.1s ease-in-out infinite, urgFundoClaro 1.1s ease-in-out infinite}
@keyframes urgFundoClaro{0%,100%{background-color:#fff5f5}50%{background-color:#fee2e2}}
html.theme-light .urg-box,body.theme-light .urg-box{background:#fff;color:#1b2b40}
html.theme-light .urg-box textarea,body.theme-light .urg-box textarea{background:#f8fafc}
/* quem prefere menos movimento: mantém o vermelho, sem piscar */
@media (prefers-reduced-motion: reduce){.is-urgente,#urg-flutuante{animation:none;box-shadow:0 0 0 3px #ef4444}.urg-sirene{animation:none}}

/* ===== três níveis de prioridade (22/10/2026) =====
   vermelho = o que já existia (pulso rápido); laranja = pulso mais lento;
   amarelo = destaque fixo com brilho suave (não pisca, para não banalizar). */
@keyframes urgPulsoLar{0%,100%{box-shadow:0 0 0 2px #f97316,0 0 0 0 rgba(249,115,22,.5)}50%{box-shadow:0 0 0 3px #fb923c,0 0 18px 4px rgba(249,115,22,.40)}}
@keyframes urgFundoLar{0%,100%{background-color:rgba(249,115,22,.08)}50%{background-color:rgba(249,115,22,.18)}}
@keyframes urgBrilhoAma{0%,100%{box-shadow:0 0 0 2px #eab308}50%{box-shadow:0 0 0 2px #facc15,0 0 12px 2px rgba(234,179,8,.30)}}
.is-urgente.urg-laranja{animation:urgPulsoLar 1.8s ease-in-out infinite, urgFundoLar 1.8s ease-in-out infinite;border-color:#f97316 !important}
.is-urgente.urg-amarelo{animation:urgBrilhoAma 3s ease-in-out infinite;background-color:rgba(234,179,8,.07);border-color:#eab308 !important}
.urg-faixa.urg-f-laranja{background:linear-gradient(90deg,#c2410c,#f97316)}
.urg-faixa.urg-f-amarelo{background:linear-gradient(90deg,#ca8a04,#facc15);color:#1f1300}
.urg-faixa.urg-f-amarelo .urg-sirene{animation:none}
.urg-faixa.urg-f-laranja .urg-sirene{animation-duration:1.1s}
.urg-f-laranja .urg-resolver{color:#c2410c}
.urg-f-amarelo .urg-resolver{color:#854d0e}
.urg-f-amarelo .urg-editar{background:rgba(0,0,0,.12);color:#1f1300}
html.theme-light .is-urgente.urg-laranja,body.theme-light .is-urgente.urg-laranja{animation:urgPulsoLar 1.8s ease-in-out infinite;background-color:#fff7ed}
html.theme-light .is-urgente.urg-amarelo,body.theme-light .is-urgente.urg-amarelo{animation:urgBrilhoAma 3s ease-in-out infinite;background-color:#fefce8}
/* escolha do nível na janela */
.urg-niveis{display:grid;gap:8px;margin:4px 0 12px}
.urg-nv{display:grid;grid-template-columns:28px 1fr;grid-template-rows:auto auto;column-gap:8px;text-align:left;align-items:center;border-radius:10px;padding:9px 11px;cursor:pointer;font-family:inherit;color:inherit;background:rgba(0,0,0,.14);border:2px solid transparent}
.urg-nv span{grid-row:1/3;font-size:20px;line-height:1}
.urg-nv b{font-size:13px;letter-spacing:.03em}
.urg-nv small{font-size:11.5px;opacity:.8}
.urg-nv-vermelho.on{border-color:#ef4444;background:rgba(239,68,68,.16)}
.urg-nv-laranja.on{border-color:#f97316;background:rgba(249,115,22,.16)}
.urg-nv-amarelo.on{border-color:#eab308;background:rgba(234,179,8,.16)}
.urg-nv:not(.on){opacity:.72}
.urg-nv:not(.on):hover{opacity:1}
html.theme-light .urg-nv,body.theme-light .urg-nv{background:#f1f5f9}
/* contador fixo com uma contagem por cor */
#urg-flutuante{display:flex;align-items:center;gap:8px}
#urg-flutuante.urg-flu-laranja{background:#ea580c;animation:urgPulsoLar 1.8s ease-in-out infinite}
#urg-flutuante.urg-flu-amarelo{background:#ca8a04;animation:none;box-shadow:0 0 0 2px #facc15}
.urg-flu-it{background:rgba(0,0,0,.22);border-radius:99px;padding:2px 8px;font-size:13px}
.urg-flu-rot{font-weight:700;font-size:13px}
.sec-urg .gh-ttl{color:#fb923c}
@media (prefers-reduced-motion: reduce){.is-urgente.urg-laranja,.is-urgente.urg-amarelo,#urg-flutuante.urg-flu-laranja{animation:none}}

/* ===== exportação / trechos (22/10/2026) ===== */
.exp-card{margin-top:6px;display:flex;flex-direction:column;gap:3px;font-size:11.5px}
.exp-card>.exp-selo,.exp-card>.exp-bald,.exp-card>.exp-docs-n{display:inline-block;margin-right:6px}
.exp-selo{background:#1d4ed8;color:#fff;font-weight:800;font-size:10.5px;letter-spacing:.05em;padding:2px 7px;border-radius:6px;width:max-content}
.exp-bald{color:#93c5fd;font-weight:700}
.exp-docs-n{color:#fbbf24;font-weight:700}
.exp-docs-n.ok{color:#4ade80}
.exp-tr-l{padding:2px 0 2px 6px;border-left:3px solid #64748b;line-height:1.3}
.exp-tr-l b{display:inline-block;min-width:14px}
.exp-tr-l.st-em_transito{border-color:#3b82f6}.exp-tr-l.st-baldeio{border-color:#f59e0b}.exp-tr-l.st-concluido{border-color:#22c55e;opacity:.8}
.exp-tr-v{font-weight:700;color:#fbbf24}
#tabs .tab.exp-on{color:#93c5fd}
.exp-tab .exp-liga{display:flex;gap:8px;align-items:center;font-size:13.5px;cursor:pointer}
.exp-tab .exp-liga input{width:18px;height:18px}
.exp-aviso{margin:12px 0;padding:9px 12px;border-radius:9px;background:rgba(51,112,219,.12);border:1px solid rgba(51,112,219,.35);font-size:12.5px;line-height:1.4}
.exp-sec-t{margin:16px 0 8px;font-weight:800;font-size:13px;text-transform:uppercase;letter-spacing:.04em;display:flex;justify-content:space-between;gap:10px}
.exp-sec-t span{text-transform:none;letter-spacing:0;font-weight:500;color:var(--muted)}
.exp-tr-card{border:1px solid var(--line-strong,rgba(255,255,255,.2));border-left:4px solid #64748b;border-radius:10px;padding:10px;margin-bottom:10px}
.exp-tr-card.st-em_transito{border-left-color:#3b82f6}.exp-tr-card.st-baldeio{border-left-color:#f59e0b}.exp-tr-card.st-concluido{border-left-color:#22c55e}
.exp-tr-top{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.exp-tr-top input{flex:1;min-width:0}
.exp-tr-n{flex:none;width:26px;height:26px;border-radius:50%;background:#3370db;color:#fff;font-weight:800;display:flex;align-items:center;justify-content:center;font-size:12.5px}
.exp-seta{color:var(--muted)}
.exp-tr-x{flex:none;padding:4px 10px}
.exp-tr-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px}
.exp-docs-l{display:flex;flex-direction:column;gap:4px}
.exp-doc{display:grid;grid-template-columns:20px 1fr 160px;gap:8px;align-items:center;padding:6px 8px;border-radius:8px;background:rgba(0,0,0,.12);font-size:12.5px;cursor:pointer}
.exp-doc.ok{background:rgba(34,197,94,.12)}
.exp-doc.ok span{color:#4ade80}
.exp-doc-obs{font-size:12px;padding:4px 6px}
.exp-cot{border-left:3px solid #3b82f6;padding-left:8px}
html.theme-light .exp-bald,body.theme-light .exp-bald{color:#1d4ed8}
html.theme-light .exp-tr-v,body.theme-light .exp-tr-v,html.theme-light .exp-docs-n,body.theme-light .exp-docs-n{color:#b45309}
html.theme-light .exp-doc,body.theme-light .exp-doc{background:#f1f5f9}
html.theme-light .exp-doc.ok span,body.theme-light .exp-doc.ok span{color:#15803d}
@media (max-width:640px){.exp-doc{grid-template-columns:20px 1fr}.exp-doc-obs{grid-column:2}}

/* ===================== LISTA DA PROGRAMAÇÃO EM NOTEBOOK/TABLET (22/10/2026) =====================
   A linha tem 9 colunas com largura mínima (~1.270 px). Entre o celular
   (≤ 820, cartão de 2 colunas, acima) e o monitor grande ela estourava a
   tela e a página rolava de lado (medido: 1.213 px de conteúdo numa janela
   de 931). Aqui ela vira um cartão de 4 colunas:
     1ª linha: datas · identificação · status · cliente
     2ª linha: rota (2 colunas) · veículo · financeiro
     3ª linha: linha do tempo (3 colunas) · ações                              */
@media (min-width:821px) and (max-width:1360px){
  .rows .row.opcard-list{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 16px;align-items:start;min-width:0;width:100%}
  .rows .opcard-list .nc-cell::before,.rows .opcard-list .nc-cell::after{display:none}
  .rows .opcard-list .nc-cell>.nc-k{margin-bottom:4px}
  .rows .opcard-list .nc-cell:nth-child(5){grid-column:span 2}
  .rows .opcard-list .nc-tlcell{grid-column:span 3;border-top:1px solid var(--panel-line);padding-top:10px}
  .rows .opcard-list .nc-actcell{border-top:1px solid var(--panel-line);padding-top:10px}
  .rows .opcard-list .nc-acts{flex-direction:row;flex-wrap:wrap;justify-content:flex-end;gap:8px}
  .rows .opcard-list .nc-fincell{border-left:0;padding-left:0}
  .rows .opcard-list .nc-line{white-space:normal}
  .col-labels{display:none}
}
/* linha de colunas: a do cabeçalho só faz sentido no layout de 9 colunas */
@media (max-width:1360px){ .col-labels{display:none} }

/* card aberto: o topo quebra linha em vez de empurrar os botões para fora */
@media (max-width:900px){
  .m-head .top{flex-wrap:wrap;gap:8px}
  .m-head-bts{margin-left:0;flex-wrap:wrap}
  .m-timeline{overflow-x:auto}
}

/* ===================== AVANÇO EM 1 TOQUE (programacao-rapido.js) =====================
   Charles, 22/10/2026 — ligado na publicação de 23/10/2026. Botão de próxima etapa no
   cartão da lista. Segue o padrão mobile-first (docs/PADRAO-MOBILE-FIRST.md):
   área de toque de 44 px (.etm-alvo), cores por variável. */
.rap-avancar{display:inline-flex;align-items:center;gap:6px;padding:0 12px;border-radius:10px;cursor:pointer;
  background:var(--sec-exec-wash);border:1px solid var(--sec-exec-accent);color:var(--text-strong);
  font:600 13px/1.15 var(--sans);transition:background var(--t);
  flex:0 0 auto;max-width:100%;justify-content:center;text-align:center}
/* só quando o botão existe: a linha de ações pode quebrar em vez de
   espremer os ícones (sem o botão, nada muda) */
.nc-acts:has(.rap-avancar){flex-wrap:wrap}
/* celular/tablet: botão largo, numa linha própria, ao alcance do polegar */
@media(max-width:820px){ .rows .opcard-list .nc-acts .rap-avancar{flex:1 1 100%} }
/* faixa intermediária (cartão de 4 colunas): ocupa a linha de ações inteira */
@media (min-width:821px) and (max-width:1360px){ .rows .opcard-list .nc-acts .rap-avancar{flex:1 1 100%} }
.rap-avancar span{color:var(--sec-exec-accent);font-weight:800}
.rap-avancar:hover{background:var(--sec-exec-chip)}
.rap-avancar:active{transform:scale(.97)}
.rap-avancar:focus-visible{outline:2px solid var(--blue-light);outline-offset:2px}

/* ===================== AUTOCADASTRO DO MOTORISTA (motorista-autocadastro.js) =====================
   Charles, 23/10/2026: bloco no topo da aba Motorista. As duas formas convivem —
   link para o motorista OU a operação digita, como sempre. */
.mta{border:1px solid var(--panel-line-strong);border-radius:var(--radius-sm);padding:12px 14px;margin:0 0 14px;background:var(--field-bg)}
.mta-recebido{border-color:var(--sec-exec-accent);background:var(--sec-exec-wash)}
.mta-linha{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.mta-linha b{display:block;color:var(--text-strong);font-size:14px}
.mta-linha span{display:block;color:var(--ink-soft);font-size:12.5px;line-height:1.45;margin-top:2px}
.mta-linha em{color:var(--warn-text);font-style:normal}
.mta-feito span{margin:0}
.mta-link{margin:10px 0 0}
.mta-link input{width:100%;background:var(--panel);border:1px solid var(--panel-line-strong);border-radius:8px;padding:10px 12px;color:var(--ink);font:13px var(--mono)}
.mta-acoes{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.mta-acoes .btn-primary,.mta-acoes .btn-ghost{width:auto;flex:0 0 auto}
.mta .mta-cancelar{border-color:rgba(217,56,56,.45);color:var(--danger-text)}
@media(max-width:640px){ .mta-acoes > *{flex:1 1 100%} .mta-linha .btn-add{width:100%} }

/* Cadastro avulso no Bsoft · campo que falta no card do veículo (23/10/2026) */
.bsv-falta select,.bsv-falta input{border-color:var(--danger-text)}
.bs-et .bs-extras select,.bs-et .bs-extras input{min-height:44px}

/* ===== NF-e da carga (23/10/2026) ===== */
.nf-tab .nf-resumo{margin-bottom:10px;font-size:13.5px;color:var(--ink-soft)}
.nf-tab .nf-resumo b{color:var(--text-strong)}
.nf-card{border:1px solid var(--panel-line-strong);border-radius:12px;padding:12px;margin-bottom:10px;background:var(--field-bg)}
.nf-top{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.nf-n{font-weight:800;font-size:15px;color:var(--text-strong)}
.nf-dt{font-size:12.5px;color:var(--ink-soft)}
.nf-fonte{margin-left:auto;font-size:11.5px;color:var(--muted)}
.nf-chave{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px}
.nf-chave code{font-family:var(--mono);font-size:12.5px;letter-spacing:.02em;color:var(--info-text);word-break:break-all}
.nf-partes{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;margin-top:8px;font-size:13px}
.nf-partes small{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.nf-nums{display:flex;gap:6px 14px;flex-wrap:wrap;margin-top:8px;font-size:13px;color:var(--ink)}
.nf-nums .nf-prod{flex-basis:100%;color:var(--ink-soft);font-size:12.5px}
.nf-arq{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px;font-size:13px}
.nf-arq a{display:inline-flex;align-items:center;text-decoration:none}

/* Documentação do transporte · sub-etapas (23/10/2026). Celular primeiro: a
   faixa rola de lado; cada etapa é um alvo de 44 px. */
.doc-sub{display:flex;gap:8px;overflow-x:auto;padding:10px 16px;border-bottom:1px solid var(--panel-line);-webkit-overflow-scrolling:touch;scrollbar-width:none}
.doc-sub[hidden]{display:none}
.doc-sub::-webkit-scrollbar{display:none}
.doc-sub button{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border-radius:999px;border:1px solid var(--panel-line);background:var(--panel-2);color:var(--ink-soft);font:inherit;font-size:13px;font-weight:600;white-space:nowrap;cursor:pointer;touch-action:manipulation}
.doc-sub button.ativo{border-color:var(--blue-light);color:var(--text-strong);background:color-mix(in srgb,var(--blue-light) 14%,transparent)}
.doc-sub .doc-n{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;border:1px solid currentColor;font-size:11px}
.doc-sub .doc-c{font-size:11px;padding:1px 7px;border-radius:999px;background:var(--panel-line);color:var(--text-strong)}

/* Documentação do transporte · as 4 etapas na mesma tela (23/10/2026, 2ª versão:
   títulos alinhados à coluna do conteúdo, cada etapa um bloco próprio). */
#m-body .doc-stack{max-width:1180px;margin:0 auto;display:flex;flex-direction:column;gap:18px;padding-top:4px}
#m-body .doc-sec{scroll-margin-top:12px;background:var(--panel);border:1px solid var(--panel-line);border-radius:16px;padding:18px 20px 20px}
#m-body .doc-sec-cab{display:flex;align-items:center;gap:14px;padding-bottom:14px;margin-bottom:14px;border-bottom:1px solid var(--panel-line)}
#m-body .doc-sec-num{flex:0 0 auto;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--blue);color:#fff;font-weight:800;font-size:15px;line-height:1}
#m-body .doc-sec-tit{font-size:17px;font-weight:700;color:var(--text-strong);line-height:1.25}
#m-body .doc-sec-dica{font-size:12.5px;color:var(--ink-soft);margin-top:2px;line-height:1.35}
#m-body .doc-sec-c > .panel{max-width:none;margin:0;padding-top:0}
#m-body .doc-sec-c > .panel > .sect-ttl:first-child{margin-top:0}
#m-body .doc-sec .mon-card.nfe-bar{margin:0 0 10px}
@media (max-width:640px){
  #m-body .doc-sec{padding:14px 14px 16px;border-radius:14px}
  #m-body .doc-sec-tit{font-size:15.5px}
}

/* Documentos emitidos no BSoft · etapa 4 (fase A, 23/10/2026) */
#m-body .bsdocs{margin:0 0 18px}
#m-body .bsd-card{border:1px solid var(--panel-line);border-radius:12px;padding:12px 14px;margin:0 0 10px;background:var(--panel-2)}
#m-body .bsd-card.ok{border-color:color-mix(in srgb,var(--ok-text) 40%,var(--panel-line))}
#m-body .bsd-card.sug{border-style:dashed}
#m-body .bsd-top{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;font-size:14px;color:var(--text-strong)}
#m-body .bsd-tipo{font-size:11px;font-weight:800;letter-spacing:.08em;padding:3px 8px;border-radius:6px;background:var(--panel-line);color:var(--ink-soft)}
#m-body .bsd-st{font-size:12px;font-weight:700;padding:2px 9px;border-radius:999px;border:1px solid currentColor}
#m-body .bsd-ok{color:var(--ok-text)} #m-body .bsd-pend{color:var(--warn-text)}
#m-body .bsd-lin{font-size:12.5px;color:var(--ink-soft);margin-top:6px;line-height:1.45}
#m-body .bsd-chave code{display:block;margin-top:8px;font-size:12px;word-break:break-all;color:var(--text-strong)}
#m-body .bsd-acoes{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
#m-body .bsd-acoes .btn-ghost,#m-body .bsd-acoes .btn-primary{width:auto;padding:0 14px;display:inline-flex;align-items:center;text-decoration:none}
#m-body details.mdfe-manual{margin-top:16px;border:1px solid var(--panel-line);border-radius:12px;padding:10px 14px}
#m-body details.mdfe-manual > summary{cursor:pointer;font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);min-height:32px;display:flex;align-items:center;gap:8px}

/* ===== COTAÇÃO COM URGÊNCIA (27/10/2026) — aba Cotações da Programação =====
   O Comercial pede urgência na cotação; aqui ela sobe para o topo com a mesma
   faixa e o mesmo pulso do card urgente. */
.cot-n-urg{background:#dc2626 !important;color:#fff !important}
#mt-cot.urg{color:#f87171}
.cot-card.is-urgente > .urg-faixa{margin:0 0 10px}

/* ===== DOCUMENTOS DO MOTORISTA COMPACTOS (27/10/2026) =====
   Pedido do Charles (Mac de 14"): os dois blocos do topo da aba Motorista
   ocupavam a área útil do formulário. Agora: uma barra com título curto e
   botões compactos (Enviar documentos · Reler documentos salvos) e o convite
   ao motorista numa linha fina tracejada. No celular os botões ocupam a
   largura e ficam com 44 px. */
.doc-top{padding:12px 14px 4px}
.doc-barra{display:flex;align-items:center;justify-content:space-between;gap:10px 16px;flex-wrap:wrap;margin-bottom:6px}
.doc-barra-t{display:flex;gap:10px;align-items:center;min-width:0}
.doc-barra-t .doc-top-ic{width:30px;height:30px}
.doc-barra-t b{display:block;font-size:14px;font-weight:700;color:var(--text-strong)}
.doc-barra-t span{display:block;font-size:12px;color:var(--ink-soft);line-height:1.35}
.doc-barra-acoes{display:flex;gap:8px;flex-wrap:wrap}
.doc-mini{display:inline-flex !important;align-items:center;justify-content:center;gap:6px;width:auto !important;min-height:36px;padding:0 14px !important;font-size:13px !important;font-weight:600;border-radius:10px !important;cursor:pointer;margin:0 !important;white-space:nowrap;letter-spacing:0}
.doc-mini:disabled{opacity:.6;cursor:wait}
.doc-mini.girando svg{animation:docGira 1s linear infinite}
@keyframes docGira{to{transform:rotate(360deg)}}
.doc-barra-st{font-size:12px;margin:0 0 10px}
.doc-top .mta{margin:0 0 12px;padding:8px 12px;border-style:dashed;background:transparent}
.mta-fina b{font-size:13px}
.mta-fina span{font-size:12px;margin-top:0}
.mta-criar-btn{border-color:rgba(242,117,7,.55) !important;color:var(--accent-text) !important}
.mta-criar-btn:hover{background:rgba(242,117,7,.10) !important}
@media (max-width:640px){
  .doc-barra-acoes,.doc-barra-acoes .doc-mini{width:100% !important}
  .doc-mini{min-height:44px}
  .mta-linha .mta-criar-btn{width:100% !important}
}
@media (prefers-reduced-motion:reduce){ .doc-mini.girando svg{animation:none} }
/* cada documento numa linha só: nome à esquerda, ações à direita (27/10/2026) */
.doc-top .dl .f.full{display:flex;align-items:center;justify-content:space-between;gap:8px 12px;flex-wrap:wrap;padding:7px 12px}
.doc-top .dl .f.full .k{margin:0;font-size:10.5px}
.doc-top .dl .f.full .v{font-size:13px;gap:6px !important}
.doc-top .dl .f.full .btn-ver{padding:6px 12px;font-size:12.5px}
.doc-top .dl .f.full .btn-baixar,.doc-top .dl .f.full .hbtn{min-height:32px;padding:5px 12px;font-size:12.5px}
@media (max-width:640px){ .doc-top .dl .f.full{flex-direction:column;align-items:flex-start} }

/* GR · etapa em andamento no botão e avisos de aprovado/reprovado (28/10/2026) */
.gr-spin{display:inline-block;width:14px;height:14px;margin-right:8px;vertical-align:-2px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:gr-gira .8s linear infinite}
@keyframes gr-gira{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.gr-spin{animation:none;border-right-color:currentColor;opacity:.6}}
.gr-seg{opacity:.75;font-variant-numeric:tabular-nums;margin-left:6px}
.gr-avisos{position:fixed;right:16px;top:16px;z-index:9999;display:flex;flex-direction:column;gap:10px;max-width:min(420px,calc(100vw - 32px))}
.gr-aviso{background:var(--panel);border:2px solid var(--panel-line);border-radius:14px;padding:14px 16px;box-shadow:0 12px 30px rgba(0,0,0,.35)}
.gr-av-ok{border-color:var(--ok-text)} .gr-av-nok{border-color:var(--danger-text)}
.gr-av-t{font-weight:800;font-size:15px;color:var(--text-strong)}
.gr-av-d{font-size:13px;color:var(--ink-soft);margin-top:4px;line-height:1.4}
.gr-av-a{display:flex;gap:8px;margin-top:10px}
.gr-av-a .btn-primary,.gr-av-a .btn-ghost{width:auto;padding:0 14px}
@media (max-width:640px){.gr-avisos{left:16px;right:16px;top:auto;bottom:16px;max-width:none}}

/* 28/10/2026 — cards recolhíveis da aba Motorista / Veículo */
details.mt-card{border:1px solid var(--panel-line);border-radius:14px;background:var(--panel-2);margin:14px 0;overflow:hidden}
details.mt-card>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:12px;padding:14px 16px;font-weight:700;font-size:16px;color:var(--text-strong);user-select:none}
details.mt-card>summary::-webkit-details-marker{display:none}
details.mt-card>summary::after{content:'';margin-left:auto;width:9px;height:9px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);transition:transform .15s;opacity:.7;flex:none}
details.mt-card[open]>summary::after{transform:rotate(-135deg)}
details.mt-card>summary:hover{background:rgba(255,255,255,.03)}
.mt-card-n{flex:none;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:13px;font-weight:800;background:var(--brand,#f26a1b);color:#fff}
.mt-card-t{flex:none}
.mt-card-st{font-size:12px;font-weight:700;padding:2px 10px;border-radius:999px;display:none}
.mt-card-st.falta{display:inline-block;color:var(--danger-text);border:1px solid rgba(217,56,56,.45)}
.mt-card-c{padding:0 16px 16px}
.mt-card-c>.sect-ttl:first-child{margin-top:4px}

/* 28/10/2026 — cards: subtítulo no título e etapas da Documentação */
.mt-card-t small{display:block;font-size:12.5px;font-weight:500;color:var(--ink-soft);margin-top:2px;letter-spacing:0;text-transform:none}
.mt-card-t{min-width:0}
details.mt-card.doc-sec{scroll-margin-top:8px}
details.mt-card>summary .sect-ttl,details.mt-card .mt-card-t .exp-sec-t{margin:0}
.mt-card-t span{font-weight:500;font-size:13px;color:var(--ink-soft);margin-left:6px}
#m-body details.mt-card.doc-sec{padding:0;border-radius:14px;background:var(--panel-2);margin:0 0 14px}
@media (max-width:640px){ #m-body details.mt-card.doc-sec{padding:0} details.mt-card>summary{padding:12px 14px;font-size:15px} .mt-card-c{padding:0 12px 14px} }
.doc-barra-st:empty{display:none}
