/* =========================================================================
   styles.css - Fluxo de Ocorrencias - pixel art leve, otimizado para TV 50"+
   ========================================================================= */
:root{
  --ink:#161a2e;          /* fundo escuro */
  --ink-2:#222743;        /* paineis */
  --paper:#f6f3ea;        /* "papel" dos cards */
  --paper-2:#efe9d8;
  --paper-line:#ddd6c2;
  --primary:#46467f;
  --primary-d:#33335a;
  --blue:#5e86d6;
  --yellow:#f7c01a;
  --wine:#9c2742;
  --green:#2e8b57;
  --text:#1b1f36;
  --muted:#6b6f86;
  --ok:#2e8b57;
  --atencao:#cf9500;
  --critico:#d23a2e;
  --extremo:#8b1020;
  --line:#0d1024;         /* borda pixel escura */
  --shadow: 5px 5px 0 0 var(--line);
  --shadow-sm: 3px 3px 0 0 var(--line);
  --pix: "Cascadia Code", "Consolas", "Courier New", monospace;
  --sans: "Segoe UI", system-ui, Arial, sans-serif;
}
*{ box-sizing:border-box; }
html,body{ margin:0; padding:0; }
body{
  font-family:var(--sans); color:var(--text); font-size:16px;
  background:
    repeating-linear-gradient(0deg, rgba(255,255,255,.025) 0 2px, transparent 2px 4px),
    radial-gradient(circle at 25% -10%, #2b3160 0%, var(--ink) 62%);
  min-height:100vh; -webkit-font-smoothing:antialiased;
}
.pix{ font-family:var(--pix); }
img{ image-rendering:pixelated; }

/* ---------- Cabecalho ---------- */
.app-header{
  display:flex; align-items:center; gap:20px; flex-wrap:wrap;
  padding:16px 22px; background:var(--ink-2); border-bottom:5px solid var(--line);
}
.brand{
  font-family:var(--pix); color:var(--yellow); font-size:18px; line-height:1.5;
  text-shadow:3px 3px 0 var(--wine); letter-spacing:1px; margin:0;
}
.brand small{ display:block; font-size:9px; color:var(--blue); margin-top:7px; letter-spacing:0; }
.app-logo{ height:48px; width:auto; display:block; flex:0 0 auto; }
.app-logo + .brand{ padding-left:18px; border-left:3px solid var(--line); }
.nav{ display:flex; gap:10px; margin-left:auto; flex-wrap:wrap; }
.nav button{
  font-family:var(--pix); font-size:11px; color:#fff; background:var(--primary);
  border:3px solid var(--line); padding:12px 14px; cursor:pointer;
  box-shadow:var(--shadow-sm); transition:transform .03s, background .15s;
}
.nav button:hover{ background:var(--primary-d); }
.nav button:active{ transform:translate(2px,2px); box-shadow:1px 1px 0 0 var(--line); }
.nav button.active{ background:var(--yellow); color:var(--ink); }
.nav .badge{
  display:inline-block; min-width:18px; margin-left:7px; padding:2px 7px;
  background:var(--wine); color:#fff; border:2px solid var(--line); font-size:11px;
}

main{ padding:20px 22px 30px; max-width:1920px; margin:0 auto; }
.view{ display:none; }
.view.active{ display:block; animation:fade .15s ease; }
@keyframes fade{ from{opacity:0} to{opacity:1} }
h2.section{ font-family:var(--pix); font-size:15px; color:var(--paper); margin:6px 0 18px; }

/* ---------- Barra do painel (TV) ---------- */
.painel-bar{
  display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap;
  background:var(--ink-2); border:4px solid var(--line); box-shadow:var(--shadow);
  padding:12px 22px; margin-bottom:18px;
}
.pb-title{ font-family:var(--pix); font-size:18px; color:var(--paper); letter-spacing:1px; }
.pb-title #pbCount{
  display:inline-block; margin-left:12px; background:var(--yellow); color:var(--ink);
  border:3px solid var(--line); padding:4px 14px; font-size:22px; vertical-align:middle;
}
.pb-clock{ font-family:var(--pix); font-size:30px; color:var(--yellow); text-shadow:2px 2px 0 var(--line); }

/* ---------- Toolbar ---------- */
.toolbar{ display:flex; gap:12px; flex-wrap:wrap; align-items:center; margin-bottom:16px; }
.toolbar input, .toolbar select{
  font-family:var(--sans); font-size:15px; padding:11px 12px; border:3px solid var(--line);
  background:var(--paper); color:var(--text); box-shadow:var(--shadow-sm);
}
.spacer{ flex:1; }
.filtro-emp{ display:inline-flex; gap:12px; flex-wrap:wrap; align-items:center; padding:9px 12px; border:3px solid var(--line); background:var(--paper); box-shadow:var(--shadow-sm); font-size:14px; color:var(--text); }
.filtro-emp strong{ font-weight:700; color:var(--muted); font-size:12px; }
.filtro-emp label{ display:inline-flex; align-items:center; gap:5px; margin:0; font-weight:600; color:var(--text); cursor:pointer; }
.filtro-emp input[type=checkbox]{ width:auto; }
.filtro-data{ display:inline-flex; gap:10px; flex-wrap:wrap; align-items:center; padding:9px 12px; border:3px solid var(--line); background:var(--paper); box-shadow:var(--shadow-sm); font-size:14px; color:var(--text); }
.filtro-data strong{ font-weight:700; color:var(--muted); font-size:12px; }
.filtro-data label{ display:inline-flex; align-items:center; gap:5px; margin:0; font-weight:600; color:var(--text); }
.filtro-data input[type=date]{ width:auto; padding:7px 9px; font-size:14px; }
.legend{ display:flex; gap:16px; flex-wrap:wrap; font-size:13px; color:var(--paper); align-items:center; }
.legend i{ display:inline-block; width:14px; height:14px; border:2px solid var(--line); margin-right:6px; vertical-align:-2px; }
.emp-legend{ display:flex; flex-wrap:wrap; gap:12px 16px; align-items:center; color:var(--paper); font-size:13px; margin:-4px 0 16px; }
.emp-legend i{ display:inline-block; width:14px; height:14px; border:2px solid var(--line); margin-right:6px; vertical-align:-2px; }
.emp-legend .sep{ color:#555a82; }

/* ---------- Botoes ---------- */
.btn{
  font-family:var(--pix); font-size:11px; color:#fff; background:var(--primary);
  border:3px solid var(--line); padding:11px 13px; cursor:pointer; box-shadow:var(--shadow-sm);
  transition:transform .03s, filter .15s;
}
.btn:hover{ filter:brightness(1.08); }
.btn:active{ transform:translate(2px,2px); box-shadow:1px 1px 0 0 var(--line); }
.btn.blue{ background:var(--blue); } .btn.green{ background:var(--green); }
.btn.yellow{ background:var(--yellow); color:var(--ink); } .btn.wine{ background:var(--wine); }
.btn.ghost{ background:#3a3f63; }
.btn.sos{ background:#1f9d8f; }
.btn.sm{ font-size:10px; padding:8px 10px; }

/* ---------- Painel de cards ---------- */
.cards-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(440px,1fr)); gap:20px; }
.card{
  background:var(--paper); border:5px solid var(--line); box-shadow:var(--shadow);
  display:flex; flex-direction:column; position:relative;
}
.card .topbar{ height:12px; }
.card .body{ padding:16px 18px 18px; }
.card-head{ display:flex; align-items:center; gap:14px; margin-bottom:10px; }
.bus{ display:block; flex:0 0 auto; }
.card-head-txt{ min-width:0; flex:1; }
.card .carro{
  font-family:var(--pix); font-size:24px; color:var(--primary); margin:0; line-height:1.4;
  display:flex; flex-wrap:wrap; align-items:baseline; gap:8px;
}
.carro .cod{ white-space:nowrap; }
.carro .segue{ white-space:nowrap; font-size:15px; color:#8a8fb0; }
.empresa{ font-size:14px; color:var(--primary-d); margin:5px 0 0; font-weight:700; }
.card .linha{ font-size:20px; color:var(--muted); margin:2px 0 12px; font-weight:600; }
.card .crono{
  font-family:var(--pix); font-size:38px; text-align:center; padding:12px 6px; margin:8px 0 12px;
  border:4px solid var(--line); background:#fff; letter-spacing:0; white-space:nowrap; overflow:hidden;
}
.crono.ok{ color:var(--ok); } .crono.atencao{ color:var(--atencao); } .crono.critico{ color:var(--critico); }
.crono.extremo{ color:#fff; background:var(--extremo); animation:blink 1s steps(2) infinite; }
.crono.parado{ color:#1d6b3a; background:#d7f0d7; } /* S.O.S. concluido / finalizada: tempo parado */
@keyframes blink{ 50%{ filter:brightness(1.6); } }
/* Acima de 3h: o card inteiro pulsa vermelho suavemente */
.card.extremo{ border-color:var(--extremo); box-shadow:5px 5px 0 0 var(--extremo); animation:cardPulse 2.4s ease-in-out infinite; }
@keyframes cardPulse{ 0%,100%{ background:#f7d7d7; } 50%{ background:#e89a9a; } }

.status-badge{
  display:inline-flex; align-items:center; gap:8px; font-family:var(--pix); font-size:12px;
  color:#fff; padding:8px 12px; border:3px solid var(--line);
}
.status-badge .dot{ width:10px; height:10px; background:#fff; display:inline-block; }
.whats-flag{ display:inline-block; font-size:13px; font-weight:800; letter-spacing:.3px; padding:3px 10px; margin-bottom:8px; border:3px solid var(--line); box-shadow:var(--shadow-sm); }
.whats-flag.ok{ background:var(--green); color:#fff; }
.whats-flag.pend{ background:var(--yellow); color:var(--ink); }
.whats-flag.err{ background:var(--critico); color:#fff; animation:blink 1.1s steps(2) infinite; }
.card .row{ font-size:17px; margin:6px 0; line-height:1.35; word-break:break-word; }
.card .row b{ color:var(--primary-d); }
.card-actions{ display:flex; gap:8px; flex-wrap:wrap; margin-top:12px; align-items:center; }
.status-sel{ font-family:var(--sans); font-size:14px; padding:8px; border:3px solid var(--line); background:#fff; }
.last-event{ font-size:14px; color:var(--muted); margin-top:10px; border-top:2px dotted var(--paper-line); padding-top:9px; }

.empty{
  grid-column:1/-1; text-align:center; color:var(--paper); padding:60px;
  border:3px dashed #555a82; font-family:var(--pix); font-size:15px; line-height:2.2;
}

/* ---------- Formularios ---------- */
.form-card{ background:var(--paper); border:5px solid var(--line); box-shadow:var(--shadow); padding:22px; max-width:1000px; }
.grid2{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.grid3{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:14px; }
label{ display:block; font-size:14px; font-weight:700; color:var(--primary-d); margin:12px 0 6px; }
label small{ font-weight:400; color:var(--muted); }
input[type=text],input[type=number],input[type=date],input[type=time],textarea,select{
  width:100%; padding:11px 12px; border:3px solid var(--line); background:#fff; color:var(--text);
  font-family:var(--sans); font-size:15px;
}
textarea{ min-height:72px; resize:vertical; }
.radio{ display:inline-flex; gap:16px; align-items:center; padding:8px 0; font-size:15px; }
.form-actions{ display:flex; gap:12px; margin-top:18px; flex-wrap:wrap; }
.hint{ font-size:14px; color:var(--muted); margin:0 0 6px; }
.veic-info{ font-size:14px; color:var(--green); font-weight:700; min-height:18px; margin-top:6px; }

/* ---------- Tabelas ---------- */
.table-wrap{ background:var(--paper); border:5px solid var(--line); box-shadow:var(--shadow); overflow:auto; max-height:64vh; }
table{ border-collapse:collapse; width:100%; font-size:15px; }
th,td{ padding:10px 12px; border-bottom:2px solid var(--paper-line); text-align:left; white-space:nowrap; }
th{ position:sticky; top:0; background:var(--primary); color:#fff; font-family:var(--pix); font-size:10px; }
tbody tr:hover{ background:var(--paper-2); }

/* ---------- Subtabs ---------- */
.subtabs{ display:flex; gap:10px; margin-bottom:14px; flex-wrap:wrap; }

/* ---------- Modal ---------- */
.overlay{ display:none; position:fixed; inset:0; background:rgba(10,12,28,.82); z-index:50; padding:24px; overflow:auto; }
.overlay.open{ display:flex; align-items:flex-start; justify-content:center; }
.modal{ background:var(--paper); border:5px solid var(--line); box-shadow:7px 7px 0 0 var(--line); width:100%; max-width:780px; margin:auto; }
.modal-head{ display:flex; align-items:center; gap:12px; padding:16px 18px; background:var(--ink-2); border-bottom:5px solid var(--line); }
.modal-head h3{ font-family:var(--pix); font-size:14px; color:var(--yellow); margin:0; }
.modal-head .x{ margin-left:auto; }
.modal-head .bus{ vertical-align:middle; }
.modal-body{ padding:18px; }
.modal-body .crono{ font-family:var(--pix); font-size:40px; text-align:center; padding:12px; border:4px solid var(--line); background:#fff; margin-bottom:4px; }
.modal-body .crono.extremo{ color:#fff; background:var(--extremo); animation:blink 1s steps(2) infinite; }
.modal-body .crono.parado{ color:#1d6b3a; background:#d7f0d7; }
.modal-body .row{ font-size:15px; margin:5px 0; }
.timeline{ list-style:none; margin:12px 0; padding:0; border-left:4px solid var(--primary); }
.timeline li{ position:relative; padding:7px 0 7px 18px; font-size:14px; }
.timeline li::before{ content:""; position:absolute; left:-9px; top:12px; width:11px; height:11px; background:var(--yellow); border:2px solid var(--line); }
.timeline .t{ color:var(--muted); font-size:12px; }

/* ---------- Rodape + chip de modo ---------- */
.app-footer{ text-align:center; color:#8a8fb0; font-size:13px; padding:20px; }
.app-footer code{ color:var(--blue); }
.modo-chip{ display:inline-block; font-family:var(--pix); font-size:9px; padding:5px 8px; border:2px solid var(--line); background:#3a3f63; color:#cdd3f0; margin-right:9px; }
.modo-chip.on{ background:var(--green); color:#fff; }
.ver-chip{ display:inline-block; font-family:var(--pix); font-size:9px; padding:5px 8px; border:2px solid var(--line); background:var(--blue); color:#fff; margin-right:9px; }

/* ---------- Responsivo: laptop do operador ---------- */
@media (max-width:820px){
  .grid2,.grid3{ grid-template-columns:1fr; }
  .brand{ font-size:14px; } .nav button{ font-size:9px; padding:9px 10px; }
  .app-logo{ height:34px; } .app-logo + .brand{ padding-left:12px; }
  .pb-title{ font-size:14px; } .pb-clock{ font-size:22px; }
  .card .crono{ font-size:32px; } .cards-grid{ grid-template-columns:1fr; }
}
/* ---------- TV grande / 4K: amplia um pouco mais ---------- */
@media (min-width:1800px){
  body{ font-size:18px; }
  .cards-grid{ grid-template-columns:repeat(auto-fill, minmax(520px,1fr)); gap:26px; }
  .card .crono{ font-size:46px; }
  .card .carro{ font-size:30px; }
  .card .linha{ font-size:23px; }
  .card .row{ font-size:19px; }
  .whats-flag{ font-size:15px; }
  .pb-title{ font-size:24px; } .pb-clock{ font-size:40px; }
  .status-badge{ font-size:14px; }
}

/* Identidade independente da demonstração. Nenhum recurso remoto. */
:root{--ink:#141a2b;--ink-2:#1e263c;--primary:#485887;--primary-d:#2e3d66;--blue:#5274b5;--yellow:#f5cd66;--wine:#8f3750;--paper:#f7f6ef;--paper-2:#efeee6;--muted:#5c6277}
body{background:radial-gradient(ellipse at 75% 0,#253250 0,var(--ink) 60%)}
.app-header{padding:19px 28px;gap:16px;border-bottom:1px solid #38415a}
.brand-mark{display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:var(--yellow);color:var(--ink);text-decoration:none;font:bold 30px var(--pix);box-shadow:4px 4px 0 #0d1024}
.brand-mark span{font-size:20px}.brand{font-size:21px;text-shadow:none;letter-spacing:2px}.brand small{font:13px var(--sans);color:#b6c2de;letter-spacing:.3px}
.nav button{font-size:13px;border-width:2px;padding:10px 14px}.nav .badge{font-size:11px}
main{padding:26px 28px 36px;max-width:1800px}.demo-intro{display:flex;gap:20px;align-items:center;justify-content:space-between;flex-wrap:wrap;color:#e6ebfa;margin:4px 0 16px}
.eyebrow{font:11px var(--pix);letter-spacing:1.5px;color:#a9badb;margin:0 0 12px}.live-dot{display:inline-block;width:7px;height:7px;background:#f5cd66;margin-right:6px}
.demo-intro h2{font:600 clamp(25px,3.1vw,44px)/1.12 var(--sans);letter-spacing:-1.3px;margin:0 0 10px}.demo-intro h2 span{color:var(--yellow)}
.demo-intro p:not(.eyebrow){color:#b4c0dc;font-size:14px;line-height:1.6;margin:0}.demo-actions{display:flex;gap:10px;flex-wrap:wrap}.demo-actions .btn{font-size:12px;line-height:1.4;padding:13px}
.demo-tour{flex-basis:100%;border-top:1px solid #38435c;padding-top:14px;font-size:13px}.demo-tour summary{color:#f5cd66;cursor:pointer;width:fit-content}.demo-tour ol{line-height:1.8;color:#d0d9ed;padding-left:20px}
.demo-notice{color:#b3c3df;background:#1b253b;border-left:3px solid var(--yellow);padding:11px 14px;font-size:12px;line-height:1.5;margin:0 0 22px}
.painel-bar{padding:12px 16px;border-width:2px;box-shadow:3px 3px 0 var(--line)}.pb-title{font-size:15px}.pb-title #pbCount{font-size:18px;border-width:2px}.pb-clock{font-size:25px}
.toolbar>input[type=text]{flex:1 1 240px;width:auto;max-width:370px;min-width:0}.toolbar>select{width:auto;max-width:240px}.toolbar input,.toolbar select{border-width:2px;font-size:14px}
.filtro-emp,.filtro-data{border-width:2px;font-size:12px;gap:10px}.legend{font-size:12px;gap:10px}.emp-legend{font-size:12px;color:#b5c1dc}
.cards-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:17px}.card{border-width:3px;max-width:660px}.card .topbar{height:7px}.card .body{padding:15px}.card-head{gap:10px}.card .carro{font-size:25px;letter-spacing:-1px}.card .linha{font-size:16px;margin:5px 0 14px}.card .crono{font-size:34px;border-width:2px;padding:12px 3px}.card .row{font-size:14px;line-height:1.5}.status-badge{font-size:12px;padding:6px 9px;border-width:2px}.btn{border-width:2px}.btn.sm{font-size:11px;padding:8px 9px}.status-sel{border-width:2px;font-size:13px;max-width:100%}.last-event{font-size:12px;line-height:1.5}
.form-card,.table-wrap,.modal{border-width:3px}h2.section{font-size:18px}.form-card{max-width:1080px}.modal-head{flex-wrap:wrap;gap:9px}.modal-head h3{font-size:17px}.modal-head .status-badge{font-size:11px}.modal-body .crono{font-size:36px}.modal-body>div:has(#m-evento){flex-wrap:wrap}.modal-body #m-evento{flex:1;min-width:140px}.modal-body label{margin-top:18px}
th{font-size:12px}input,select,textarea{min-width:0}.app-footer{line-height:2;color:#a3b1cc}.hint{line-height:1.6}.empty{font-size:14px;padding:30px}
:focus-visible{outline:3px solid #df9d19;outline-offset:4px}html{scroll-behavior:smooth}.skip-link{position:absolute;left:12px;top:-60px;background:#fff;color:#111;padding:10px;z-index:100}.skip-link:focus{top:10px}
@media(max-width:820px){main{padding:20px 16px}.app-header{padding:16px;gap:12px}.nav{margin-left:0;width:100%;gap:8px}.nav button{font-size:12px;flex:1;padding:10px 8px}.brand{font-size:20px}.brand small{font-size:12px}.demo-intro h2{font-size:31px}.demo-actions{width:100%}.demo-actions .btn{flex:1}.toolbar>input[type=text],.toolbar>select{max-width:100%;width:100%}.filtro-emp,.filtro-data{width:100%;gap:8px}.cards-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr))}.card{max-width:none}.overlay{padding:12px}.modal-body{padding:14px}.painel-bar{gap:10px}.pb-title{font-size:13px}.pb-clock{font-size:22px}}
@media(min-width:1800px){.cards-grid{grid-template-columns:repeat(4,1fr)}.card .crono{font-size:40px}.card .row{font-size:16px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

@media(min-width:821px) and (max-width:1199px){.cards-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
