/* OtmRote — folha de estilo única, sem framework.
   Objetivo: densidade de informação e leitura rápida de número, que é o que
   a área comercial faz o dia inteiro.

   IDENTIDADE VISUAL — Otimiza Log (cores extraídas do CSS de otimizalog.com):
     vermelho da marca  #DC2B23   (CTAs do site)
     vermelho escuro    #C02C29 / #B00D09  (logo, estados pressionados)
     grafite            #13151B / #1D2029  (header e blocos escuros do site)
     cinzas             #A8ABB3 / #E4E5E7 / #F1F1F1

   REGRA DE USO DA COR (importante, porque a marca é vermelha):
     - VERMELHO PREENCHIDO = ação. Botão que o usuário clica.
     - VERMELHO EM TEXTO/BORDA = estado de erro.
     Os dois convivem porque são estruturalmente diferentes (fundo sólido com
     texto branco vs. texto colorido sobre fundo claro com borda à esquerda).
     Nunca use vermelho preenchido para comunicar erro — ficaria idêntico a
     um botão e o usuário tentaria clicar.
     - GRAFITE = ênfase de número e total. O vermelho não faz esse papel, senão
     brigaria com o erro e cansaria a leitura de tabela longa. */

/* -------- tipografia da marca (auto-hospedada, sem CDN) --------
   Archivo é a fonte de títulos do site. A de corpo (Acumin Pro) é licenciada
   da Adobe e não pode ser redistribuída, então Archivo cobre os dois papéis.
   Servida daqui de propósito: o app precisa abrir sem internet. */
@font-face{font-family:Archivo;src:url(/static/fonts/archivo-400.woff2) format('woff2');
           font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Archivo;src:url(/static/fonts/archivo-500.woff2) format('woff2');
           font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:Archivo;src:url(/static/fonts/archivo-600.woff2) format('woff2');
           font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:Archivo;src:url(/static/fonts/archivo-700.woff2) format('woff2');
           font-weight:700;font-style:normal;font-display:swap}

:root{
  --marca:#dc2b23; --marca-escura:#b00d09; --marca-fraca:#fdeceb;
  --grafite:#13151b; --grafite-2:#1d2029;
  --tinta:#1d2029; --fraco:#6b7076; --linha:#e4e5e7; --fundo:#f4f4f5;
  --papel:#fff;
  --verde:#1a7f4b; --vermelho:#b00d09; --ambar:#8a6100; --ambar-fundo:#fdf6e3;
  --fonte:Archivo,"Segoe UI",system-ui,sans-serif;
}
*{box-sizing:border-box}
body{margin:0;font:15px/1.5 var(--fonte);color:var(--tinta);background:var(--fundo)}
main{max-width:1280px;margin:0 auto;padding:24px 20px 60px}
h1{font-size:24px;margin:0 0 6px;font-weight:700;letter-spacing:-.2px}
h2{font-size:19px;margin:0 0 10px;font-weight:600}
h3{font-size:16px;margin:0 0 12px;font-weight:600;color:var(--grafite)}
code{font:12px/1.4 Consolas,monospace;background:#eef0f2;padding:1px 5px;border-radius:3px;
     word-break:break-all}
small{color:var(--fraco);font-size:12px}

/* -------- navegação -------- */
nav{display:flex;align-items:center;gap:18px;background:var(--grafite);
    padding:0 20px;height:56px;color:#fff;
    border-bottom:3px solid var(--marca)}
nav a{color:#c8cace;text-decoration:none;font-size:14px;font-weight:500;
      padding:4px 0;border-bottom:2px solid transparent}
nav a:hover{color:#fff;border-bottom-color:var(--marca)}
nav .marca{display:flex;align-items:center;padding:0;border:0;margin-right:6px}
nav .marca:hover{border-bottom-color:transparent}
nav .marca img{height:19px;display:block}
nav .espaco{flex:1}
nav .quem{color:#a8abb3;font-size:13px}

/* -------- blocos -------- */
.cartao{background:var(--papel);border:1px solid var(--linha);border-radius:8px;
        padding:18px;margin-bottom:18px}
.duas{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
       gap:14px;margin-bottom:18px}
.card{background:var(--papel);border:1px solid var(--linha);border-radius:8px;
      padding:16px;font-size:13px;color:var(--fraco)}
.card .num{display:block;font-size:26px;font-weight:700;color:var(--grafite);
           line-height:1.1;margin-bottom:4px;font-variant-numeric:tabular-nums}
.card.link{text-decoration:none;transition:border-color .12s}
.card.link:hover{border-color:var(--marca)}
.card.link .num{font-size:15px;text-transform:uppercase;letter-spacing:.5px;
                color:var(--marca)}
.rolagem{overflow-x:auto}

/* -------- formulários -------- */
label{display:block;margin-bottom:12px;font-size:13px;color:var(--fraco)}
input,select{display:block;width:100%;margin-top:4px;padding:8px 10px;font-size:14px;
             font-family:var(--fonte);
             border:1px solid var(--linha);border-radius:5px;background:#fff;
             color:var(--tinta)}
input:focus,select:focus{outline:2px solid var(--marca-fraca);border-color:var(--marca)}
input.uf{text-transform:uppercase}
.grade{display:grid;grid-template-columns:2fr .6fr 2fr .6fr;gap:14px}
.grade + .grade{grid-template-columns:1fr 1fr 1fr}
label.check{display:flex;align-items:center;gap:8px;align-self:end;
            padding-bottom:10px;flex-wrap:wrap}
label.check input{width:auto;margin:0;accent-color:var(--marca)}
label.check small{width:100%;margin-left:26px}
.linha-form{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.linha-form input{width:auto;flex:1;margin:0}
button,.botao{display:inline-block;background:var(--marca);color:#fff;border:0;
              padding:9px 18px;border-radius:5px;font-size:14px;font-weight:600;
              font-family:var(--fonte);cursor:pointer;text-decoration:none;
              transition:background .12s}
button:hover,.botao:hover{background:var(--marca-escura)}

/* -------- tabelas -------- */
table{border-collapse:collapse;width:100%;font-size:13px}
.dados th{background:#f1f1f2;text-align:left;padding:8px 10px;font-weight:600;
          border-bottom:2px solid var(--linha);white-space:nowrap}
.dados td{padding:7px 10px;border-bottom:1px solid var(--linha)}
.dados tbody tr:hover{background:#fafafb}
.n{text-align:right;font-variant-numeric:tabular-nums}
.destaque{font-weight:700;color:var(--grafite)}
.ref td{padding:5px 8px;font-size:13px;border-bottom:1px solid var(--linha)}
.ref td:nth-child(odd){color:var(--fraco);width:15%}
.calculo td{padding:9px 10px;border-bottom:1px solid var(--linha)}
.calculo .total td{font-size:17px;font-weight:700;color:var(--grafite);
                   border-top:2px solid var(--marca);border-bottom:0}
.calculo .obs{color:var(--fraco);font-size:12px}
.linha-erro{background:var(--marca-fraca)}
.linha-aviso td{background:var(--ambar-fundo);color:var(--ambar);font-size:12px;
                padding:4px 10px}

/* -------- grade de edição -------- */
.grade-edit input.celula{width:96px;padding:4px 6px;font-size:12px;text-align:right}
.grade-edit td.chave{font-weight:600;white-space:nowrap;background:#fafafb}
.grade-edit .retorno{display:block;font-size:11px;margin-top:2px}
.ok{color:var(--verde)} .erro{color:var(--vermelho)}

/* -------- avisos -------- */
.ajuda{color:var(--fraco);font-size:13px;margin:6px 0}
.aviso{color:var(--ambar);background:var(--ambar-fundo);padding:8px 10px;
       border-radius:5px;font-size:13px}
.erro-bloco{border-left:4px solid var(--vermelho);color:var(--vermelho)}
.msg-erro{color:var(--vermelho);font-size:12px}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.chip{background:var(--marca-fraca);color:var(--marca-escura);padding:3px 10px;
      border-radius:12px;font-size:12px;font-weight:600}
.chip.alerta{background:var(--ambar-fundo);color:var(--ambar)}
.tag{font-size:11px;padding:2px 7px;border-radius:3px;white-space:nowrap}
.tag-trava{background:#e6f4ec;color:var(--verde)}
.tag-base{background:var(--ambar-fundo);color:var(--ambar)}
.passos{margin:6px 0 0 18px;font-size:13px;color:var(--fraco)}
.paginacao{display:flex;gap:10px;margin-bottom:20px}

/* -------- indicador HTMX -------- */
.htmx-indicator{display:none;margin-left:12px;color:var(--fraco);font-size:13px}
.htmx-request .htmx-indicator,.htmx-request.htmx-indicator{display:inline}

/* -------- login -------- */
.tela-login{display:flex;align-items:center;justify-content:center;min-height:100vh}
.login{width:340px}
.login .marca-login{display:block;height:30px;margin:2px auto 10px}
.login h1{color:var(--grafite);margin-bottom:0;font-size:21px;text-align:center}
.login .ajuda{text-align:center;margin-bottom:16px}
.login button{width:100%;margin-top:8px}

footer{text-align:center;color:var(--fraco);font-size:12px;padding:26px 20px}
footer .marca-rodape{height:15px;opacity:.5;margin-bottom:7px}

/* -------- ações em linha de tabela (admin de usuários) -------- */
.acoes-linha{display:flex;gap:6px;flex-wrap:wrap}
.acoes-linha form{margin:0}
button.mini{padding:4px 10px;font-size:12px}
.tag-bloqueado{background:var(--marca-fraca);color:var(--marca-escura);font-weight:600}

/* ============================================================
   RESPONSIVO
   O time comercial cota do celular em visita a cliente. A regra aqui é:
   tabela de número NUNCA vira card empilhado — comparar 11 veículos exige
   ver as linhas alinhadas. Tabela rola na horizontal; o resto empilha.
   ============================================================ */
@media(max-width:900px){
  .duas,.grade,.grade + .grade{grid-template-columns:1fr}
}
@media(max-width:640px){
  main{padding:16px 12px 40px}
  h1{font-size:20px} h2{font-size:17px}
  body{font-size:14px}

  /* navegação: rola na horizontal em vez de espremer ou quebrar linha */
  nav{height:auto;gap:14px;padding:0 12px;overflow-x:auto;white-space:nowrap;
      -webkit-overflow-scrolling:touch;min-height:52px}
  nav::-webkit-scrollbar{display:none}
  nav .marca img{height:16px}
  nav .espaco{flex:0 0 4px}
  nav .quem{display:none}          /* o nome de quem está logado não paga o espaço */

  .cartao{padding:14px}
  .cards{grid-template-columns:1fr 1fr;gap:10px}
  .card{padding:12px} .card .num{font-size:21px}

  /* alvo de toque: 44px é o mínimo confortável com o dedo */
  input,select{padding:11px 10px;font-size:16px}   /* 16px evita zoom no iOS */
  button,.botao{padding:12px 18px;width:100%;text-align:center}
  .acoes{flex-direction:column}
  .acoes-linha button.mini{width:auto;padding:7px 12px}
  .linha-form{flex-direction:column;align-items:stretch}
  .linha-form input{width:100%}

  /* tabelas: rolam na horizontal, com dica visual de que há mais conteúdo */
  .rolagem{overflow-x:auto;-webkit-overflow-scrolling:touch;
           background:linear-gradient(90deg,var(--papel) 60%,rgba(255,255,255,0)),
                      linear-gradient(270deg,var(--papel) 60%,rgba(255,255,255,0)) 100% 0,
                      linear-gradient(90deg,rgba(19,21,27,.10),rgba(19,21,27,0)),
                      linear-gradient(270deg,rgba(19,21,27,.10),rgba(19,21,27,0)) 100% 0;
           background-repeat:no-repeat;background-size:36px 100%,36px 100%,14px 100%,14px 100%;
           background-attachment:local,local,scroll,scroll}
  .dados th,.dados td{padding:7px 8px}
  .ref td:nth-child(odd){width:auto}

  .sugestoes{max-height:210px}
  .chips{gap:6px} .chip{font-size:11px}
  .tarja{padding:10px 12px;font-size:13px}
  .tarja .botao{margin:8px 0 0;display:block}
}

/* -------- tarjas de alerta (piso ANTT defasado) -------- */
.tarja{background:var(--marca-fraca);border-left:4px solid var(--marca);
       padding:12px 16px;border-radius:6px;margin-bottom:18px;font-size:14px}
.tarja .botao{margin-left:10px;padding:5px 14px;font-size:13px}
.tarja-alerta{background:var(--ambar-fundo);border-left-color:var(--ambar);
              color:var(--ambar)}
.tarja-erro{background:var(--marca-fraca);border-left-color:var(--vermelho);
            color:var(--vermelho)}
.ok-bloco{background:#e6f4ec;border-left:4px solid var(--verde);color:var(--verde);
          padding:10px 14px;border-radius:5px;font-size:13px}
.sobe{color:var(--vermelho)} .desce{color:var(--verde)}
.acoes{display:flex;gap:12px;margin-top:16px}
button.secundario{background:#6b7076} button.secundario:hover{background:var(--grafite-2)}

/* -------- autocompletar de cidade (cadastro local) -------- */
.caixa-sugestoes{position:relative}
.sugestoes{position:absolute;z-index:50;left:0;right:0;top:2px;margin:0;padding:0;
           list-style:none;background:#fff;border:1px solid var(--linha);
           border-radius:6px;box-shadow:0 6px 18px rgba(19,21,27,.14);
           max-height:280px;overflow-y:auto}
.sugestoes li{padding:7px 10px;cursor:pointer;border-bottom:1px solid #f1f1f2;
              font-size:13px;color:var(--tinta)}
.sugestoes li:last-child{border-bottom:0}
.sugestoes li:hover{background:var(--marca-fraca)}
.sugestoes small{display:block;color:var(--fraco);font-size:11px;margin-top:1px}
.uf-tag{display:inline-block;background:var(--marca-fraca);color:var(--marca-escura);
        border-radius:3px;padding:0 5px;font-size:11px;font-weight:700;
        margin-left:4px}
.sugestao-vazia{padding:7px 10px;color:var(--fraco);font-size:12px;font-style:italic}
