:root{
    --primary: #2563eb; --primary-dark: #1d4ed8; --primary-light: #eff6ff;
    --surface: #ffffff; --background: #f0f4f9; --on-surface: #1e293b;
    --on-surface-variant: #475569; --border-color: #e2e8f0; --success: #16a34a;
    --error: #dc2626; --error-light: #fee2e2; --shadow-color-light: rgba(100, 108, 122, 0.08);
    --shadow-color: rgba(100, 108, 122, 0.15);
    --total-bg: #1d4ed8; --hover-row: #f8fafc;
    --barra-h: 60px;
  }
  /* Paleta escura: aplicada automaticamente pela preferência do sistema... */
  @media (prefers-color-scheme: dark){
    :root{
      --primary: #3b82f6; --primary-dark: #93c5fd; --primary-light: #1e3a5f;
      --surface: #1e293b; --background: #0f172a; --on-surface: #e2e8f0;
      --on-surface-variant: #94a3b8; --border-color: #334155; --success: #4ade80;
      --error: #f87171; --error-light: #450a0a; --shadow-color-light: rgba(0,0,0,0.3);
      --shadow-color: rgba(0,0,0,0.5);
      --total-bg: #1e40af; --hover-row: #263449;
    }
  }
  /* ...ou forçada manualmente pelo botão de tema (tem prioridade sobre o sistema). */
  :root[data-theme="light"]{
    --primary: #2563eb; --primary-dark: #1d4ed8; --primary-light: #eff6ff;
    --surface: #ffffff; --background: #f0f4f9; --on-surface: #1e293b;
    --on-surface-variant: #475569; --border-color: #e2e8f0; --success: #16a34a;
    --error: #dc2626; --error-light: #fee2e2; --shadow-color-light: rgba(100, 108, 122, 0.08);
    --shadow-color: rgba(100, 108, 122, 0.15);
    --total-bg: #1d4ed8; --hover-row: #f8fafc;
  }
  :root[data-theme="dark"]{
    --primary: #3b82f6; --primary-dark: #93c5fd; --primary-light: #1e3a5f;
    --surface: #1e293b; --background: #0f172a; --on-surface: #e2e8f0;
    --on-surface-variant: #94a3b8; --border-color: #334155; --success: #4ade80;
    --error: #f87171; --error-light: #450a0a; --shadow-color-light: rgba(0,0,0,0.3);
    --shadow-color: rgba(0,0,0,0.5);
    --total-bg: #1e40af; --hover-row: #263449;
  }
  *{box-sizing:border-box}
  body{
    margin:0; font-family:"Inter", "Segoe UI", system-ui, -apple-system, Arial, sans-serif;
    color:var(--on-surface); background:var(--background);
  }
  .barra{
    background:var(--surface); padding:12px 24px; display:flex; flex-wrap:wrap;
    gap:12px; align-items:center; position:sticky; top:0; z-index:20;
    border-bottom:1px solid var(--border-color); box-shadow:0 2px 10px var(--shadow-color-light);
  }
  .barra h1{font-size:1rem;font-weight:700;margin:0;margin-right:auto;letter-spacing:.5px;color:var(--primary-dark)}
  .barra select, .barra input[type="search"]{padding:8px 14px;border-radius:8px;border:1px solid var(--border-color);font-size:0.875rem;background:var(--surface);color:var(--on-surface);transition:all .2s ease}
  .barra select{min-width:150px}
  .barra input[type="search"]{flex:1 1 200px;min-width:150px;max-width:340px}
  .campo-mes{font-size:.8rem;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
  button{cursor:pointer;border:none;border-radius:8px;padding:9px 16px;font-size:0.875rem;font-weight:600;transition:all .2s ease;font-family:inherit}
  .btn{border:1px solid var(--border-color);background:var(--surface);color:var(--on-surface-variant)}
  .btn:hover, .barra select:hover{border-color:var(--primary);background:var(--primary-light);color:var(--primary-dark)}
  .btn-icone{padding:9px 11px}
  .btn-verde{background:var(--success);color:#fff;border:1px solid var(--success)}
  .btn-verde:hover{filter:brightness(1.1);border-color:var(--success);background:var(--success)}
  .btn-mini{background:transparent;color:var(--error);padding:4px 8px;font-size:1.125rem;line-height:1}
  .btn-mini:hover{background:var(--error-light)}
  /* Menu "Mais" (details/summary nativo) */
  .menu{position:relative}
  .menu>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
  .menu>summary::-webkit-details-marker{display:none}
  .menu[open]>summary{border-color:var(--primary);background:var(--primary-light);color:var(--primary-dark)}
  .menu-pop{position:absolute;right:0;top:calc(100% + 6px);background:var(--surface);border:1px solid var(--border-color);border-radius:10px;box-shadow:0 10px 30px var(--shadow-color);padding:6px;min-width:230px;z-index:30;display:flex;flex-direction:column;gap:2px}
  .menu-pop .btn{width:100%;justify-content:flex-start;text-align:left;border:none;background:transparent;color:var(--on-surface)}
  .menu-pop .btn:hover{background:var(--primary-light);color:var(--primary-dark)}
  :focus-visible{outline:2px solid var(--primary);outline-offset:2px}
  button:focus-visible,.barra select:focus-visible,.barra input:focus-visible,summary:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
  .sync-status{font-size:0.8rem;font-weight:600;min-width:80px;text-align:right}
  .sync-ok{color:var(--success)}
  .sync-saving{color:var(--on-surface-variant)}
  .sync-err{color:var(--error)}
  .folha{max-width:1200px;margin:24px auto;background:var(--surface);box-shadow:0 8px 24px var(--shadow-color);padding:24px 32px;border-radius:12px;}
  .cabecalho{text-align:center;padding-bottom:16px;margin-bottom:16px; border-bottom: 2px solid var(--primary-dark);}
  .cabecalho .titulo{font-size:1.75rem;font-weight:800;letter-spacing:2px;color:var(--primary-dark)}
  .cabecalho .rota{font-size:1rem;font-weight:600;margin-top:8px}
  .cabecalho .cnpj{font-size:0.875rem;color:var(--on-surface-variant);margin-top:6px}
  .ref{text-align:center;font-size:0.875rem;font-weight:700;color:var(--primary);margin:16px 0;text-transform:uppercase;letter-spacing:0.5px}
  .table-wrap{overflow-x:visible}
  @media (max-width:1024px){ .table-wrap{overflow-x:auto} }
  table{width:100%;border-collapse:collapse;font-size:0.875rem;min-width:900px}
  th, td{text-align:left;border-bottom:1px solid var(--border-color)}
  th{background:var(--primary-light);color:var(--primary-dark);padding:12px;font-size:0.75rem;letter-spacing:.5px;text-transform:uppercase;border-bottom:2px solid var(--border-color)}
  #folha thead th{position:sticky;top:var(--barra-h);z-index:6}
  #folha .total-linha td{position:sticky;bottom:0;z-index:6}
  td{padding:0;vertical-align:middle}
  td input{width:100%;border:none;padding:12px;font-size:0.875rem;font-family:inherit;background:transparent;color:var(--on-surface);border-radius:0}
  td input:focus{outline:none;background:var(--primary-light);box-shadow:inset 0 0 0 2px var(--primary);position:relative;z-index:1}
  td input:disabled{color:var(--on-surface-variant)}
  tr:hover td:not(.col-acao){background-color:var(--hover-row)}
  tbody tr.linha-alterada td:first-child{box-shadow:inset 3px 0 0 0 var(--primary)}
  .col-acao{width:50px;text-align:center}
  .col-valor input,.col-tambores input,.col-km input{text-align:right}
  .total-linha td{background:var(--total-bg)!important;color:#fff;font-weight:800;font-size:1rem;padding:12px;border-color:var(--total-bg)}
  .total-linha .lbl{text-align:right;letter-spacing:1px}
  .vazio{text-align:center;color:var(--on-surface-variant);padding:32px;font-style:italic}
  .autocomplete-list{display:none;position:absolute;border:1px solid var(--border-color);background-color:var(--surface);z-index:99;max-height:200px;overflow-y:auto;box-shadow:0 4px 16px var(--shadow-color);border-radius:8px}
  .autocomplete-item{padding:8px 12px;cursor:pointer;font-size:13px}
  .autocomplete-item:hover{background-color:var(--hover-row)}
  .modal-overlay{position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(15, 23, 42, 0.6); display:flex; justify-content:center; align-items:center; z-index:100;}
  .modal-container{background:var(--surface); border-radius:12px; box-shadow:0 10px 30px rgba(0,0,0,0.3); width:90%; max-width:550px; animation: slide-down .3s ease-out;}
  .modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;border-bottom:1px solid var(--border-color);}
  .modal-header h2{margin:0; font-size:1.125rem;}
  .modal-body{padding:24px; max-height:60vh; overflow-y:auto;}
  .modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid var(--border-color);}
  .form-group{margin-bottom:20px;}
  .form-group label{display:block; font-weight:600; font-size:0.875rem; margin-bottom:6px;}
  .form-group input{width:100%;padding:10px 14px;border:1px solid var(--border-color);border-radius:8px;font-size:0.9rem;background:var(--surface);color:var(--on-surface)}
  .regra-localidade-item{display:flex; gap:10px; margin-bottom:10px; align-items:center;}
  .regra-localidade-item input{flex:1;padding:8px 12px;border:1px solid var(--border-color);border-radius:8px;background:var(--surface);color:var(--on-surface)}
  @keyframes slide-down { from { transform: translateY(-30px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
  #app-content, #dashboard-screen, #relatorio-screen, #unauthorized-screen { display: none; }
  #loading-screen{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--background);z-index:150}
  .spinner{width:40px;height:40px;border:4px solid var(--border-color);border-top-color:var(--primary);border-radius:50%;animation:girar .8s linear infinite}
  @keyframes girar{to{transform:rotate(360deg)}}
  #login-screen{display:none;flex-direction:column;gap:20px;justify-content:center;align-items:center;min-height:100vh;background:var(--background);padding:24px}
  .login-titulo{text-align:center}
  .login-titulo h2{color:var(--primary-dark);margin:0 0 8px}
  .login-titulo p{color:var(--on-surface-variant);margin:0;font-size:0.9rem}
  .grid-dashboard { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px; padding: 0 24px 24px; max-width: 1400px; margin: 0 auto; }
  .kpi-row{display:grid;grid-template-columns:repeat(auto-fit, minmax(180px, 1fr));gap:24px;padding:24px;max-width:1400px;margin:0 auto}
  .kpi-card{background:var(--surface);padding:20px 24px;border-radius:12px;box-shadow:0 8px 24px var(--shadow-color)}
  .kpi-label{font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--on-surface-variant);margin-bottom:8px}
  .kpi-value{font-size:1.75rem;font-weight:800;color:var(--on-surface)}
  .chart-card { background: var(--surface); padding: 24px; border-radius: 12px; box-shadow: 0 8px 24px var(--shadow-color); }
  .chart-card h3 { margin-top: 0; margin-bottom: 16px; font-size: 1.1rem; color: var(--on-surface); }
  .toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#1e293b;color:#fff;padding:12px 20px;border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.35);display:flex;align-items:center;gap:16px;z-index:200;font-size:0.9rem}
  .toast-btn{background:transparent;color:#93c5fd;font-weight:700;padding:4px 8px}
  .toast-btn:hover{text-decoration:underline}
  #user-button{display:flex;align-items:center;min-width:32px;min-height:32px}
  /* RELATÓRIO (documento de fechamento A4) */
  #relatorio-screen{background:var(--background);min-height:100vh}
  .relatorio-wrap{display:flex;justify-content:center;padding:24px}
  .relatorio-folha{background:#fff;color:#0f172a;width:210mm;max-width:100%;min-height:297mm;padding:18mm 16mm;box-shadow:0 8px 24px var(--shadow-color);border-radius:4px}
  .rel-topo{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;border-bottom:3px solid #1d4ed8;padding-bottom:14px}
  .rel-empresa .nome{font-size:1.35rem;font-weight:800;letter-spacing:1px}
  .rel-empresa .rota{font-size:.8rem;font-weight:600;color:#334155;margin-top:4px}
  .rel-empresa .doc{font-size:.75rem;color:#64748b;margin-top:3px}
  .rel-selo{text-align:right;font-size:.65rem;color:#94a3b8;white-space:nowrap}
  .rel-selo .tipo{font-size:.8rem;font-weight:800;color:#1d4ed8;letter-spacing:.5px}
  .rel-selo .periodo{font-size:1.05rem;font-weight:800;color:#0f172a;margin:2px 0 4px}
  .rel-resumo{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:18px 0}
  .rel-stat{border:1px solid #e2e8f0;border-radius:8px;padding:10px 12px;background:#f8fafc}
  .rel-stat .lbl{font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#64748b}
  .rel-stat .val{font-size:1.15rem;font-weight:800;margin-top:3px}
  table.rel-tab{width:100%;border-collapse:collapse;font-size:.72rem;margin-top:6px}
  table.rel-tab th{background:#1d4ed8;color:#fff;text-align:left;padding:7px 8px;font-size:.62rem;text-transform:uppercase;letter-spacing:.4px;font-weight:700}
  table.rel-tab td{padding:6px 8px;border-bottom:1px solid #e2e8f0;color:#1e293b}
  table.rel-tab tbody tr:nth-child(even){background:#f8fafc}
  table.rel-tab .num{text-align:right;font-variant-numeric:tabular-nums}
  table.rel-tab tfoot td{border-top:2px solid #1d4ed8;font-weight:800;color:#0f172a;background:#eff6ff}
  .rel-assinaturas{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:52px}
  .rel-assinatura{text-align:center;font-size:.72rem;color:#334155}
  .rel-assinatura .linha{border-top:1px solid #0f172a;margin-bottom:6px;height:0}
  .rel-rodape{margin-top:24px;font-size:.65rem;color:#94a3b8;text-align:center;border-top:1px solid #e2e8f0;padding-top:10px}
  /* RESPONSIVO */
  @media (max-width:900px){
    .folha{margin:16px;padding:20px}
    .kpi-row,.grid-dashboard{padding-left:16px;padding-right:16px}
  }
  @media (max-width:640px){
    .barra{padding:10px 14px;gap:8px}
    .barra h1{flex:1 1 100%;margin-right:0;font-size:.85rem}
    .barra input[type="search"]{flex:1 1 100%;max-width:none}
    .campo-mes{flex:1}
    .campo-mes select{flex:1}
    .folha{margin:12px;padding:14px 12px}
    .cabecalho .titulo{font-size:1.35rem}
    /* Tabela vira lista de cartões */
    table{min-width:0}
    #folha thead{display:none}
    #folha table,#folha tbody,#folha tfoot,#folha tr,#folha td{display:block;width:100%}
    #folha #corpo tr{border:1px solid var(--border-color);border-radius:10px;margin-bottom:12px;padding:6px 12px;background:var(--surface);box-shadow:0 1px 4px var(--shadow-color-light)}
    #folha #corpo td{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px dashed var(--border-color)}
    #folha #corpo td:last-child{border-bottom:none}
    #folha #corpo td[data-label]::before{content:attr(data-label);flex:0 0 auto;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--on-surface-variant)}
    #folha #corpo td input{width:auto;flex:1 1 auto;text-align:right;padding:6px 4px}
    #folha #corpo .col-veiculo input,#folha #corpo .col-localidade input,#folha #corpo .col-produtor input,#folha #corpo .col-obs input,#folha #corpo .col-cod input,#folha #corpo .col-data input{text-align:left}
    #folha #corpo .col-acao{justify-content:flex-end}
    tbody tr.linha-alterada td:first-child{box-shadow:none}
    #folha #corpo tr.linha-alterada{box-shadow:inset 3px 0 0 0 var(--primary),0 1px 4px var(--shadow-color-light)}
    /* Totais como cartão-resumo */
    #folha .total-linha td{position:static}
    #folha .total-linha .lbl,#folha .total-linha .col-acao{display:none}
    #folha .total-linha td[data-label]{display:flex;justify-content:space-between;padding:8px 12px}
    #folha .total-linha td[data-label]::before{content:attr(data-label);font-weight:700}
    #folha .total-linha tr{border-radius:10px;overflow:hidden}
    .vazio{text-align:left}
  }
  @page{size:A4;margin:14mm}
  @media print{
    body{background:#fff}
    .barra,.col-acao,.autocomplete-list,#login-screen,#loading-screen,#dashboard-screen,.modal-overlay,.toast{display:none!important}
    .folha{box-shadow:none;margin:0;max-width:100%;border-radius:0;padding:0}
    .table-wrap{overflow:visible}
    table{min-width:0}
    td input{color:#000!important}
    th{background:#eff6ff!important;color:#1d4ed8!important}
    .total-linha td{background:#1d4ed8!important}
    .relatorio-wrap{padding:0;display:block}
    .relatorio-folha,.relatorio-folha *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
    .relatorio-folha{box-shadow:none;border-radius:0;width:auto;max-width:100%;min-height:0;padding:0}
    table.rel-tab thead{display:table-header-group}
    table.rel-tab tr{break-inside:avoid}
    .rel-assinaturas{break-inside:avoid;margin-top:60px}
  }