/* ============================================================
   Termipest Campo — casca PRÓPRIA do PWA (não usa shared/app.css).
   Otimizada pra campo: alvos grandes (dedo grosso), alto contraste
   (sol), modo escuro pra economizar bateria/OLED.
   ============================================================ */

:root {
  --olive:       #7e8a2e;
  --olive-700:   #5c6420;
  --bg:          #eef0ea;
  --surface:     #ffffff;
  --surface-2:   #f4f5f1;
  --line:        #e4e7dd;
  --text:        #1f2421;
  --text-dim:    #6b7280;
  --danger:      #b3261e;
  --ok:          #2c7a3f;
  --radius:      14px;
  --tap:         52px;   /* altura mínima de toque */
  --safe-top:    env(safe-area-inset-top, 0px);
  --safe-bottom: env(safe-area-inset-bottom, 0px);
}

* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }

html, body {
  margin: 0;
  min-height: 100%;
  background: var(--bg);
  color: var(--text);
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  font-size: 17px;
  line-height: 1.45;
  overscroll-behavior-y: none;
}

.screen { min-height: 100dvh; }
[hidden] { display: none !important; }

/* ── Barra de rede ─────────────────────────────────────────── */
.net-bar {
  position: sticky; top: 0; z-index: 50;
  padding: calc(6px + var(--safe-top)) 12px 6px;
  background: var(--danger); color: #fff;
  font-size: 14px; font-weight: 600; text-align: center;
  letter-spacing: .2px;
}

/* ── Login ─────────────────────────────────────────────────── */
.login {
  display: grid; place-items: center;
  padding: 24px 20px calc(24px + var(--safe-bottom));
}
.login-card {
  width: 100%; max-width: 420px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 28px 22px;
}
.brand { display: flex; align-items: center; gap: 14px; margin-bottom: 26px; }
.brand-logo { border-radius: 12px; }
.brand-text { display: flex; flex-direction: column; }
.brand-text strong { font-size: 20px; letter-spacing: 1px; }
.brand-text span { color: var(--text-dim); font-size: 14px; }

.field { display: block; margin-bottom: 16px; }
.field > span { display: block; margin-bottom: 6px; font-size: 14px; color: var(--text-dim); }
.field input {
  width: 100%; height: var(--tap);
  padding: 0 14px;
  background: var(--surface-2);
  border: 1px solid var(--line);
  border-radius: 10px;
  color: var(--text); font-size: 17px;
}
.field input:focus { outline: 2px solid var(--olive); border-color: var(--olive); }

.pass-wrap { position: relative; display: block; }
.pass-toggle {
  position: absolute; right: 6px; top: 50%; transform: translateY(-50%);
  width: 44px; height: 44px;
  background: none; border: 0; color: var(--text-dim);
  font-size: 20px; cursor: pointer;
}

/* ── Botões ────────────────────────────────────────────────── */
.btn {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: var(--tap); padding: 0 20px;
  border: 1px solid transparent; border-radius: 10px;
  font-size: 17px; font-weight: 600; cursor: pointer;
  background: var(--surface-2); color: var(--text);
}
.btn:active { transform: scale(.98); }
.btn-lg { width: 100%; height: 56px; font-size: 18px; margin-top: 8px; }
.btn-primary { background: var(--olive); color: #15170c; border-color: var(--olive-700); }
.btn-primary:disabled { opacity: .55; cursor: default; }
.btn-ghost { background: transparent; border-color: var(--line); color: var(--text-dim); }

.msg { margin: 14px 2px 0; min-height: 20px; font-size: 14px; color: var(--danger); }
.msg.ok { color: var(--ok); }

/* ── App ───────────────────────────────────────────────────── */
.topbar {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px; padding: calc(12px + var(--safe-top)) 16px 12px;
  background: var(--surface); border-bottom: 1px solid var(--line);
  position: sticky; top: 0; z-index: 20;
}
.topbar-id { display: flex; align-items: center; gap: 12px; min-width: 0; }
.avatar {
  width: 42px; height: 42px; flex: 0 0 42px;
  display: grid; place-items: center; border-radius: 50%;
  background: var(--olive); color: #15170c; font-weight: 700; font-size: 18px;
  text-transform: uppercase;
}
.topbar-text { display: flex; flex-direction: column; min-width: 0; }
.topbar-text strong { font-size: 16px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.role { font-size: 13px; color: var(--text-dim); text-transform: capitalize; }

.tabs { display: flex; gap: 4px; padding: 8px 12px 0; background: var(--surface); border-bottom: 1px solid var(--line); }
.tab {
  min-height: 44px; padding: 0 16px;
  background: none; border: 0; border-bottom: 3px solid transparent;
  color: var(--text-dim); font-size: 16px; font-weight: 600; cursor: pointer;
}
.tab-active { color: var(--text); border-bottom-color: var(--olive); }

.content { padding: 20px 16px calc(28px + var(--safe-bottom)); }
.tab-panel { animation: fade .2s ease; }
@keyframes fade { from { opacity: 0; } to { opacity: 1; } }

.placeholder { text-align: center; padding: 48px 20px; color: var(--text-dim); }
.placeholder-icon { font-size: 56px; }
.placeholder h2 { color: var(--text); margin: 12px 0 8px; }
.placeholder p { max-width: 32ch; margin: 0 auto 10px; }
.placeholder .hint { font-size: 13px; opacity: .8; }

/* ── Lista do dia (C9.1) ───────────────────────────────────── */
.list-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.list-info { font-size: 14px; color: var(--text-dim); }
.btn-sm { min-height: 40px; padding: 0 14px; font-size: 15px; }

.cache-banner {
  margin-bottom: 14px; padding: 10px 12px;
  background: rgba(224, 83, 61, .14); border: 1px solid rgba(224, 83, 61, .4);
  border-radius: 10px; color: #f1a99c; font-size: 14px; text-align: center;
}

.os-list { display: flex; flex-direction: column; gap: 12px; }
.os-card {
  display: block; width: 100%; text-align: left;
  background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--radius); padding: 14px 16px; cursor: pointer; color: var(--text);
}
.os-card:active { transform: scale(.99); }
.os-card-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.os-num { font-weight: 700; font-size: 16px; }
.os-status { font-size: 12px; font-weight: 700; padding: 3px 10px; border-radius: 999px; white-space: nowrap; }
.st-prev   { background: rgba(145,155,49,.18);  color: #c5cf7e; }
.st-exec   { background: rgba(91,191,99,.18);   color: #8fe096; }
.st-warn   { background: rgba(224,168,61,.18);  color: #e8c074; }
.st-cancel { background: rgba(224,83,61,.18);   color: #f1a99c; }
.os-serv { margin-top: 6px; font-size: 16px; }
.os-meta { display: flex; gap: 16px; margin-top: 8px; font-size: 14px; color: var(--text-dim); }
.os-end { margin-top: 6px; font-size: 14px; color: var(--text-dim); }

.empty { text-align: center; padding: 40px 20px; color: var(--text-dim); }
.loading { text-align: center; padding: 40px 20px; color: var(--text-dim); }

/* ── Detalhe (C9.1) ────────────────────────────────────────── */
.det-titulo { font-size: 17px; }
.det-sec { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 14px 16px; margin-bottom: 14px; }
.det-sec-titulo { margin: 0 0 10px; font-size: 13px; text-transform: uppercase; letter-spacing: .6px; color: var(--olive); }
.det-sub { margin: 12px 0 6px; font-size: 14px; color: var(--text-dim); }
.det-row { display: flex; justify-content: space-between; gap: 14px; padding: 6px 0; border-top: 1px solid var(--line); }
.det-row:first-of-type { border-top: 0; }
.det-rot { color: var(--text-dim); font-size: 15px; }
.det-val { font-size: 15px; text-align: right; }
.det-text { margin: 6px 0; font-size: 15px; line-height: 1.5; }
.det-link { display: inline-block; margin-top: 8px; color: var(--olive); font-weight: 600; text-decoration: none; }
.det-list { margin: 4px 0; padding-left: 20px; }
.det-list li { padding: 2px 0; font-size: 15px; }
.det-empty { color: var(--text-dim); list-style: none; margin-left: -20px; }
.ctx-item { padding: 8px 0; border-top: 1px solid var(--line); }
.ctx-meta { font-size: 13px; color: var(--text-dim); }
.ctx-text { font-size: 15px; margin-top: 2px; }
.det-foot { margin-top: 18px; text-align: center; font-size: 13px; color: var(--text-dim); opacity: .85; }

/* ── Sync chip / fila (C9.2) ────────────────────────────────── */
.sync-chip {
  position: sticky; top: 0; z-index: 15;
  padding: 8px 14px; text-align: center;
  background: var(--surface-2); color: var(--text-dim);
  font-size: 14px; font-weight: 600; cursor: pointer;
  border-bottom: 1px solid var(--line);
}
.sync-chip.has-erro { background: rgba(224,83,61,.18); color: #f1a99c; }

/* ── Execução: checkin/checkout (C9.2) ──────────────────────── */
.exec-action { display: flex; gap: 10px; align-items: center; margin: 8px 0; }
.exec-km {
  flex: 1 1 90px; max-width: 130px; height: var(--tap);
  padding: 0 12px; background: var(--surface-2); border: 1px solid var(--line);
  border-radius: 10px; color: var(--text); font-size: 16px;
}
.exec-km:focus { outline: 2px solid var(--olive); }
.exec-action .btn { flex: 1 1 auto; }

/* ── Fotos (C9.2) ───────────────────────────────────────────── */
.foto-bloco { padding: 10px 0; border-top: 1px solid var(--line); }
.foto-bloco:first-child { border-top: 0; }
.foto-bloco-titulo { font-size: 15px; font-weight: 600; margin-bottom: 8px; }
.foto-grid { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.foto-thumb { position: relative; width: 76px; height: 76px; border-radius: 8px; overflow: hidden; border: 1px solid var(--line); }
.foto-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.foto-chip { position: absolute; right: 3px; bottom: 3px; font-size: 11px; font-weight: 700; padding: 1px 6px; border-radius: 999px; }
.foto-chip.ok   { background: rgba(91,191,99,.9);  color: #0c1f0e; }
.foto-chip.fila { background: rgba(224,168,61,.9); color: #2a1d05; }
.foto-acao { display: flex; gap: 8px; align-items: center; }
.foto-cats { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.cat-select {
  flex: 1 1 auto; height: 44px; padding: 0 10px;
  background: var(--surface-2); border: 1px solid var(--line);
  border-radius: 10px; color: var(--text); font-size: 15px;
}

/* ── Slot de foto obrigatória (C9.3) ───────────────────────── */
.foto-bloco-titulo { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.slot-chip { font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 999px; white-space: nowrap; }
.slot-chip.ok    { background: rgba(91,191,99,.18);  color: #8fe096; }
.slot-chip.falta { background: rgba(224,168,61,.18); color: #e8c074; }

/* ── Assinatura / finalização ──────────────────────────────── */
.det-ok   { color: var(--ok); font-weight: 700; text-align: center; padding: 8px; }
.det-warn { color: #e8c074; text-align: center; }
.pend-list { margin: 10px 0; }
.pend-item { padding: 8px 0; border-top: 1px solid var(--line); }
.pend-desc { font-size: 14px; margin-bottom: 6px; }
/* Checklist do "Verificar" (pré-Finalizar) */
.verif-slot { margin: 6px 0 2px; }
.verif-list { display: flex; flex-direction: column; gap: 4px; margin: 6px 0; }
.verif-item { font-size: 14px; padding: 3px 0; }
.verif-item.is-ok { color: var(--ok); }
.verif-item.is-no { color: #e8c074; font-weight: 600; }

/* ── Modal ─────────────────────────────────────────────────── */
.modal {
  position: fixed; inset: 0; z-index: 100;
  background: rgba(0,0,0,.6); display: flex; align-items: flex-end; justify-content: center;
  padding: 0;
}
.modal-card {
  width: 100%; max-width: 520px; max-height: 92dvh; overflow-y: auto;
  background: var(--surface); border: 1px solid var(--line);
  border-radius: 18px 18px 0 0; padding: 22px 18px calc(22px + var(--safe-bottom));
}
.modal-titulo { margin: 0 0 12px; font-size: 19px; }
.termo { background: var(--surface-2); border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; font-size: 13px; line-height: 1.5; color: var(--text-dim); }
.termo p { margin: 0 0 8px; }
.termo p:last-child { margin-bottom: 0; }
.termo-link { display: inline-block; margin: 8px 2px 2px; font-size: 13px; font-weight: 600; color: var(--olive); text-decoration: none; }
.termo-versao { font-size: 12px; color: var(--text-dim); margin: 6px 2px 14px; }
.chk { display: flex; align-items: flex-start; gap: 10px; font-size: 15px; margin-bottom: 16px; cursor: pointer; }
.chk input { width: 22px; height: 22px; flex: 0 0 22px; margin-top: 1px; accent-color: var(--olive); }
.assina-head { display: flex; align-items: center; justify-content: space-between; margin: 4px 0 6px; font-size: 14px; color: var(--text-dim); }
.assina-canvas {
  width: 100%; height: 180px; background: #fff; border: 1px solid var(--line);
  border-radius: 10px; touch-action: none; display: block;
}
.modal-actions { display: flex; gap: 10px; margin-top: 16px; }
.modal-actions .btn { flex: 1; }

/* ── Toast ─────────────────────────────────────────────────── */
.toast {
  position: fixed; left: 50%; bottom: calc(20px + var(--safe-bottom)); transform: translateX(-50%) translateY(20px);
  z-index: 200; padding: 12px 18px; border-radius: 10px;
  background: var(--surface-2); color: var(--text); border: 1px solid var(--line);
  font-size: 15px; font-weight: 600; opacity: 0; pointer-events: none; transition: opacity .2s, transform .2s;
  max-width: 88vw; text-align: center;
}
.toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }
.toast.erro { background: var(--danger); color: #fff; border-color: transparent; }

/* ── Meu Dia / Diário (C9.4) ───────────────────────────────── */
.field textarea {
  width: 100%; padding: 10px 14px; min-height: 60px; resize: vertical;
  background: var(--surface-2); border: 1px solid var(--line);
  border-radius: 10px; color: var(--text); font-size: 16px; font-family: inherit;
}
.field textarea:focus { outline: 2px solid var(--olive); border-color: var(--olive); }
.abast-wrap { display: flex; flex-direction: column; gap: 6px; margin-bottom: 8px; }
.abast-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 12px; background: var(--surface-2); border: 1px solid var(--line); border-radius: 10px; }
.abast-info { font-size: 15px; }

/* ── Resultado da visita (C9.5) ────────────────────────────── */
.res-botoes { display: flex; flex-direction: column; gap: 10px; margin-top: 8px; }
.res-botoes .btn { width: 100%; }
.res-botoes .btn.sel { outline: 3px solid var(--olive-700); box-shadow: 0 0 0 5px rgba(94,100,32,.18); }
.res-toggle { display: flex; gap: 10px; margin: 6px 0 10px; }
.res-toggle .btn { flex: 1; }
.res-toggle .btn.sel { background: var(--olive); color: #15170c; border-color: var(--olive-700); }
.det-hint { font-size: 14px; color: var(--ok); text-align: center; margin-top: 4px; padding: 6px 0; }

/* ============================================================
   TEMA CLARO — ajustes de contraste (Fase 2) + Agenda do dia
   Regras adicionadas no fim vencem por ordem de fonte.
   ============================================================ */

/* Texto branco em cima do olive (botões/realces) — contraste no claro */
.btn-primary,
.tab.tab-active,
.res-toggle .btn.sel { color: #fff; }
.avatar { color: #fff; }

/* Chips de status — versões claras (antes eram claro-sobre-escuro) */
.st-prev   { background: #eaf1fb; color: #2c5aa0; }
.st-exec   { background: #fff3d6; color: #8a5d05; }
.st-warn   { background: #fff3d6; color: #8a5d05; }
.st-cancel { background: #fdeceb; color: #b3261e; }
.det-warn  { color: #b3261e; }
.slot-chip.ok    { background: #e7f4e8; color: #2c7a3f; }
.slot-chip.falta { background: #fff3d6; color: #8a5d05; }

/* ── Agenda do dia — cabeçalho + filtros ───────────────────── */
.ag-head { display:flex; justify-content:space-between; align-items:flex-end; gap:12px; margin:6px 0 12px; }
.ag-title { font-size:21px; font-weight:800; line-height:1.1; margin:0; }
.ag-sub { font-size:13px; color:var(--text-dim); margin-top:3px; }
.ag-filters { display:flex; gap:8px; overflow-x:auto; padding:0 0 14px; -webkit-overflow-scrolling:touch; }
.ag-chip { flex:none; border:1px solid var(--line); background:var(--surface); color:var(--text-dim);
  border-radius:999px; padding:8px 15px; font-size:14px; font-weight:700; cursor:pointer; }
.ag-chip.on { background:var(--olive); border-color:var(--olive); color:#fff; }

/* ── Card da OS (compacto, escaneável) ─────────────────────── */
.oscard { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius);
  padding:14px; margin-bottom:12px; cursor:pointer; }
.oscard.next { border:1.5px solid var(--olive); }
.oc-top { display:flex; justify-content:space-between; align-items:center; }
.oc-time { font-size:22px; font-weight:800; letter-spacing:-.5px; }
.oc-cod { font-size:12px; color:var(--text-dim); font-weight:700; margin-top:10px; }
.oc-cli { font-size:17px; font-weight:800; line-height:1.15; }
.oc-serv { font-size:14px; margin-top:3px; }
.oc-addr { font-size:13px; color:var(--text-dim); margin-top:6px; line-height:1.35; }
.oc-flag { font-size:13px; font-weight:700; margin-top:10px; padding:7px 10px; border-radius:9px; }
.flag-amber { background:#fff3d6; color:#8a5d05; }
.flag-red   { background:#fdeceb; color:#b3261e; }
.flag-green { background:#e7f4e8; color:#2c7a3f; }
.oc-acts { display:flex; gap:8px; margin-top:12px; }
.oc-acts .btn { flex:1; min-height:44px; font-size:14px; }

/* Produtos utilizados (F3 · consumo registrado em campo) */
.prod-list { display:flex; flex-direction:column; gap:8px; margin-bottom:10px; }
.prod-item { border:1px solid var(--linha,#e3e3d8); border-radius:10px; padding:10px 12px; }
.prod-top { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.prod-nome { font-weight:600; }
.prod-meta { color:#6b6f5e; font-size:13px; margin-top:2px; }
.prod-obs { font-size:13px; margin-top:4px; }
.prod-item .btn-sm { margin-top:8px; }
.prod-qrow { display:flex; align-items:center; gap:8px; }
.prod-qrow input { flex:1; }
.prod-unidade { color:#6b6f5e; font-size:14px; min-width:32px; }
.prod-dil{font-size:12.5px;color:var(--olive-d,#6f7726);background:#f0f3dc;border:1px solid #d7dcb0;border-radius:8px;padding:7px 10px;margin-bottom:8px}
.prod-dose-row{display:flex;gap:8px}
.prod-dose-row .field{flex:1}
.calda-grupo{border:1px solid var(--line,#cfcdb8);border-radius:12px;padding:10px;margin-bottom:10px;background:rgba(145,155,49,.06)}
.calda-head{font-size:13px;font-weight:700;color:var(--olive,#5a6b1e);margin-bottom:8px}

/* ── Fase B · Ficha da Proposta no campo ─────────────────────── */
.ficha-sec{background:#fff;border:1px solid var(--line,#e4e2d6);border-radius:12px;padding:12px 14px;margin:0 0 12px}
.ficha-sec h3{font-size:14px;margin:0 0 10px;color:var(--olive-d,#6f7726)}
.ficha-sec .field{margin-bottom:9px}
.ficha-sec textarea{width:100%;border:1px solid var(--line,#cfcdb8);border-radius:8px;padding:8px 10px;font:inherit}
.ficha-sec select{width:100%;border:1px solid var(--line,#cfcdb8);border-radius:8px;padding:8px 10px;font:inherit;background:#fff}
.chips{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.chip-check{display:flex;align-items:center;gap:8px;font-size:14px;line-height:1.2;border:1px solid var(--line,#cfcdb8);border-radius:12px;padding:11px 12px;background:#fafaf4;cursor:pointer;min-height:48px;text-align:left}
.chip-check input{width:20px;height:20px;flex:none;margin:0}
@media (max-width:340px){.chips{grid-template-columns:1fr}}
.reserv-row{display:flex;flex-wrap:wrap;gap:6px;align-items:flex-end;border-top:1px dashed var(--line,#e4e2d6);padding-top:8px;margin-top:8px}
.reserv-row .field{flex:1;min-width:80px;margin:0}
.ficha-actions{display:flex;gap:10px;justify-content:flex-end;margin:6px 0 24px}
.ficha-actions .btn{flex:1}
.grid-thumbs{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:8px}
.grid-thumbs .thumb img{width:100%;height:70px;object-fit:cover;border-radius:8px;border:1px solid var(--line,#e4e2d6)}
.grid-thumbs .thumb span{display:block;font-size:10px;color:#7a7a68;text-align:center}
.assin-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 0;border-bottom:1px solid var(--line,#eee)}

/* ── Card "Seguro do veículo" no Meu Dia (sinistro/guincho) ──── */
.seg-veic-box .seg-sos-btn{display:block;text-align:center;background:#c0392b;color:#fff;font-weight:800;font-size:15px;border-radius:12px;padding:14px;margin:10px 0 4px;text-decoration:none;box-shadow:0 2px 6px rgba(192,57,43,.3)}
.seg-veic-box .seg-sos-btn:active{transform:translateY(1px)}
.seg-veic-box .seg-sos-tel{text-align:center;font-size:13px;color:var(--text-dim,#6b7280);margin:0 0 8px;font-variant-numeric:tabular-nums}
.seg-veic-box .seg-passo{background:var(--surface-2,#f4f5f1);border-radius:10px;padding:8px 12px;margin-top:6px}
.seg-veic-box .seg-passo h4{margin:0 0 4px}
.seg-veic-box .seg-steps{margin:0;padding-left:18px;font-size:13px;color:var(--text,#1f2421)}
.seg-veic-box .seg-steps li{margin:3px 0}
