/* ============================================================
 * TORRE — styles.css
 * 1) Tokens do tema "Hero Gamer" (garimpo fiel do site, torre-tema.md §5)
 * 2) Tokens extras da Torre (torre-design.md §4.2)
 * 3) Componentes da espec (torre-design.md §3) — só consomem var(--*)
 * Zero framework, zero CDN. Fontes locais (public/fonts/).
 * ============================================================ */

/* ---------- Fonte Orbitron (local, 3 pesos) ---------- */
@font-face {
  font-family: "Orbitron"; font-weight: 400; font-display: swap;
  src: url("fonts/orbitron-400.woff2") format("woff2");
}
@font-face {
  font-family: "Orbitron"; font-weight: 700; font-display: swap;
  src: url("fonts/orbitron-700.woff2") format("woff2");
}
@font-face {
  font-family: "Orbitron"; font-weight: 800; font-display: swap;
  src: url("fonts/orbitron-800.woff2") format("woff2");
}

/* ============================================================
 * TOKENS — Tema "Hero Gamer" (Rede Virtual NET), extraído 1:1
 * ============================================================ */
:root {
  /* ---------- Cores: fundo ---------- */
  --cor-fundo:            #050b14;
  --cor-fundo-2:          #08101b;
  --cor-fundo-painel:     #0a0f1a;
  --cor-fundo-painel-2:   #0f1722;
  --cor-fundo-vidro:      rgba(5, 11, 20, 0.95);
  --cor-trilho:           #1a2634;

  /* ---------- Cores: acentos ---------- */
  --cor-acento:           #ff4d1d;
  --cor-acento-hover:     #ff6a3d;
  --cor-acento-claro:     #ff8e1d;
  --cor-ciano:            #00ffea;
  --cor-ciano-2:          #00f3ff;
  --cor-vermelho:         #ff3333;
  --cor-amarelo:          #ffc107;
  --cor-roxo:             #8b5cf6;

  /* ---------- Cores: texto ---------- */
  --cor-texto:            #ffffff;
  --cor-texto-suave:      #8faab9;
  --cor-texto-mudo:       rgba(230, 244, 255, 0.72);
  --cor-texto-fraco:      #8292a6;
  --cor-sobre-acento:     #111827;

  /* ---------- Bordas ---------- */
  --cor-borda-vidro:      rgba(255, 255, 255, 0.10);
  --cor-borda-vidro-fraca:rgba(255, 255, 255, 0.05);
  --cor-borda-acento:     var(--cor-acento);

  /* ---------- Gradientes ---------- */
  --grad-fundo:   linear-gradient(180deg, #050b14 0%, #08101b 100%);
  --grad-glow:    radial-gradient(circle at 20% 50%, rgba(0,255,234,0.05) 0%, transparent 50%);
  --grad-energia: linear-gradient(90deg, #ff4d1d, #ff8e1d);
  --grad-shine:   linear-gradient(120deg, transparent, rgba(255,255,255,0.6), transparent);

  /* ---------- VIDRO (glassmorphism laranja) ---------- */
  --vidro-bg:         linear-gradient(135deg, rgba(255,77,29,0.20), rgba(255,140,0,0.20));
  --vidro-bg-hover:   linear-gradient(135deg, rgba(255,77,29,0.32), rgba(255,140,0,0.32));
  --vidro-borda:      var(--cor-acento);
  --vidro-blur:       blur(10px);
  --vidro-bg-neutro:  rgba(255,255,255,0.05);

  /* ---------- Glows / sombras ---------- */
  --glow-acento:       0 0 20px rgba(255,77,29,0.20);
  --glow-acento-forte: 0 0 28px rgba(255,77,29,0.38);
  --glow-barra:        0 0 10px #ff4d1d;
  --glow-ciano:        0 0 18px rgba(0,255,234,0.25);
  --glow-texto:        0 0 8px rgba(255,77,29,0.80);
  --sombra-painel:     0 4px 20px rgba(0,0,0,0.40);
  --sombra-imagem:     drop-shadow(0 10px 20px rgba(0,0,0,0.6));

  /* ---------- Tipografia ---------- */
  --fonte-titulo: "Orbitron", "Segoe UI", Roboto, sans-serif;
  --fonte-corpo:  "Barlow", "Inter", system-ui, sans-serif;
  --fonte-mono:   "IBM Plex Mono", "JetBrains Mono", "Cascadia Mono", Consolas, monospace;
  --peso-titulo:  800;
  --peso-preco:   900;

  /* ---------- Raios / chanfros ---------- */
  --raio-sm: 4px;
  --raio-md: 8px;
  --raio-lg: 14px;
  --raio-barra: 2px;
  --chanfro-8:  polygon(8px 0, 100% 0, 100% calc(100% - 8px), calc(100% - 8px) 100%, 0 100%, 0 8px);
  --chanfro-10: polygon(10px 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%, 0 10px);
  --chanfro-6:  polygon(6px 0, 100% 0, 100% calc(100% - 6px), calc(100% - 6px) 100%, 0 100%, 0 6px);

  /* ---------- Transições ---------- */
  --transicao:       0.25s cubic-bezier(0.4, 0, 0.2, 1);
  --transicao-barra: 0.4s cubic-bezier(0.22, 1, 0.36, 1);

  /* ============================================================
   * Tokens extras da Torre (torre-design.md §4.2)
   * ============================================================ */
  --estado-saudavel:   var(--cor-ciano);
  --estado-atencao:    var(--cor-amarelo);
  --estado-iniciando:  var(--cor-acento);
  --estado-fora:       var(--cor-vermelho);
  --estado-indefinido: var(--cor-texto-fraco);
  --glow-saudavel:  0 0 12px rgba(0,255,234,.35);
  --glow-atencao:   0 0 12px rgba(255,193,7,.35);
  --glow-iniciando: 0 0 12px rgba(255,77,29,.40);
  --glow-fora:      0 0 8px rgba(255,51,51,.25);
  --vidro-perigo-bg:       linear-gradient(135deg, rgba(255,51,51,.20), rgba(189,3,3,.20));
  --vidro-perigo-bg-hover: linear-gradient(135deg, rgba(255,51,51,.32), rgba(189,3,3,.32));
  --glow-perigo:        0 0 20px rgba(255,51,51,.22);
  --glow-texto-perigo:  0 0 8px rgba(255,51,51,.80);
  --sombra-recorte:        drop-shadow(0 0 10px rgba(255,77,29,.30));
  --sombra-recorte-forte:  drop-shadow(0 0 14px rgba(255,77,29,.45));
  --sombra-recorte-perigo: drop-shadow(0 0 10px rgba(255,51,51,.30));
  --grad-energia-amarela: linear-gradient(90deg, #ffc107, #ff9800);
  --glow-barra-amarela:   0 0 10px #ffc107;
  --terminal-fundo: #030810;
  --veu-fundo:      rgba(5,11,20,.72);
  --topo-altura:    64px;
  --largura-max:    1280px;
}

/* ============================================================
 * BASE — camada 0: o palco (fundo do hero, 100% CSS)
 * ============================================================ */
*, *::before, *::after { box-sizing: border-box; }

html { height: 100%; }

body {
  margin: 0;
  min-height: 100%;
  background-color: var(--cor-fundo);
  background-image: var(--grad-glow), var(--grad-fundo);
  background-attachment: fixed;
  color: var(--cor-texto);
  font-family: var(--fonte-corpo);
  font-size: 0.95rem;
  line-height: 1.5;
  overflow-x: hidden;
}

h1, h2, h3, h4, p, ul, ol, figure { margin: 0; }
[hidden] { display: none !important; } /* vence o display dos componentes */
ul, ol { padding: 0; list-style: none; }
a { color: var(--cor-ciano); text-decoration: none; }
a:hover { text-decoration: underline; }
button { font: inherit; color: inherit; }
strong { color: var(--cor-texto); }
code { font-family: var(--fonte-mono); }

/* Ações com aparência de link continuam sendo controles nativos de teclado. */
.acao-link {
  display: inline;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--cor-ciano);
  cursor: pointer;
  text-align: inherit;
  text-decoration: none;
}
.acao-link:hover { text-decoration: underline; }

/* Navegação lateral: os estilos também servem ao rail/gaveta móvel. */
.sidebar__marca {
  position: relative;
  padding: 0 0 7px;
  border: 0;
  background: transparent;
  color: var(--cor-texto);
  font-family: var(--fonte-titulo);
  font-size: 1.15rem;
  font-weight: 800;
  letter-spacing: 2px;
  text-transform: uppercase;
  white-space: nowrap;
  cursor: pointer;
}
.sidebar__item {
  display: flex;
  width: 100%;
  min-height: 36px;
  align-items: center;
  gap: 9px;
  padding: 8px;
  border: 0;
  clip-path: var(--chanfro-6);
  color: var(--cor-texto-suave);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.5px;
  text-align: left;
  white-space: nowrap;
  cursor: pointer;
}
.sidebar__item--peca { padding-block: 7px; font-size: 0.7rem; }
.sidebar__item:hover { background: rgba(255,255,255,0.06) !important; color: #ff9800 !important; }
.sidebar__item:focus-visible,
.sidebar__marca:focus-visible {
  outline: none;
  box-shadow: inset 0 0 0 2px var(--cor-ciano);
}
.sidebar__fundo { display: none; }

/* Foco visível (elementos SEM chanfro) */
:focus-visible {
  outline: 2px solid var(--cor-ciano);
  outline-offset: 2px;
}

/* Barra de rolagem discreta, no clima */
* { scrollbar-width: thin; scrollbar-color: var(--cor-trilho) transparent; }
*::-webkit-scrollbar { width: 10px; height: 10px; }
*::-webkit-scrollbar-thumb { background: var(--cor-trilho); border-radius: 5px; }
*::-webkit-scrollbar-track { background: transparent; }

::selection { background: rgba(255,77,29,.45); color: #fff; }

/* ---------- utilidades ---------- */
.sr-only {
  position: absolute; width: 1px; height: 1px; margin: -1px;
  padding: 0; border: 0; clip: rect(0 0 0 0); overflow: hidden; white-space: nowrap;
}

.pular-link {
  position: absolute; left: 16px; top: -48px; z-index: 2000;
  padding: 8px 14px; background: var(--cor-fundo-painel-2);
  border: 1px solid var(--cor-ciano); border-radius: var(--raio-sm);
  color: var(--cor-ciano); transition: top var(--transicao);
}
.pular-link:focus { top: 12px; }

.mono { font-family: var(--fonte-mono); color: var(--cor-texto-suave); }

.eyebrow {
  font-family: var(--fonte-corpo);
  font-size: 0.7rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 1.2px;
  color: var(--cor-texto-fraco);
}
.eyebrow--secao { color: var(--cor-ciano); margin-bottom: 16px; }
.eyebrow--perigo { color: var(--cor-vermelho); margin-bottom: 16px; }
.eyebrow--trilha { color: var(--cor-texto-suave); margin-bottom: 12px; }
.eyebrow--trilha a { color: var(--cor-ciano); }

.titulo-contorno {
  color: transparent;
  -webkit-text-stroke: 1px #fff;
}

.esqueleto {
  display: inline-block;
  min-width: 3ch; min-height: 1em;
  color: transparent !important;
  background: var(--cor-trilho);
  border-radius: var(--raio-sm);
  animation: esqueleto-respira 1.8s ease-in-out infinite;
  user-select: none;
}

/* ============================================================
 * TOPO — camada 1 esticada, sticky, o conteúdo rola por baixo
 * ============================================================ */
.topo {
  position: sticky; top: 0; z-index: 500;
  display: flex; align-items: center; gap: 16px;
  min-height: var(--topo-altura);
  padding-block: 8px;
  padding-inline: max(24px, calc((100% - var(--largura-max)) / 2 + 24px));
  background: var(--cor-fundo-vidro);
  -webkit-backdrop-filter: var(--vidro-blur);
  backdrop-filter: var(--vidro-blur);
  border-bottom: 1px solid var(--cor-trilho);
}

.topo__marca {
  position: relative;
  font-family: var(--fonte-titulo);
  font-weight: 800; font-size: 1.25rem;
  letter-spacing: 2px; text-transform: uppercase;
  color: var(--cor-texto);
  padding-bottom: 6px;
}
.topo__marca:hover { text-decoration: none; }

.topo__energia {
  position: absolute; left: 0; bottom: 0;
  width: 48px; height: 2px;
  background: var(--grad-energia);
  box-shadow: var(--glow-barra);
  border-radius: var(--raio-barra);
}

.topo__saude { display: flex; gap: 8px; flex-wrap: wrap; margin-right: auto; }

.chip-saude {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 6px 12px;
  background: var(--vidro-bg-neutro);
  border: 1px solid var(--cor-borda-vidro);
  clip-path: var(--chanfro-8);
  white-space: nowrap;
  flex-shrink: 0;
}
.chip-saude__nome {
  font-size: 0.7rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 1.2px;
  color: var(--cor-texto-mudo);
}
.chip-saude__valor {
  font-family: var(--fonte-mono);
  font-size: 0.72rem;
  color: var(--cor-texto-suave);
}

.topo__cta { flex-shrink: 0; }

/* ============================================================
 * CONTEÚDO / AJUDA CONTEXTUAL
 * ============================================================ */
.conteudo {
  width: 100%;
  max-width: var(--largura-max);
  margin-inline: auto;
  padding: 24px;
}
.conteudo:focus { outline: none; }

.ajuda-torre {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 6px;
  margin: 0 0 14px;
}
.ajuda-torre__gatilho {
  display: inline-flex;
  min-height: 30px;
  align-items: center;
  gap: 7px;
  padding: 5px 9px;
  border: 1px solid var(--cor-borda-vidro);
  background: var(--vidro-bg-neutro);
  clip-path: var(--chanfro-6);
  color: var(--cor-texto-suave);
  font-family: var(--fonte-mono);
  font-size: 0.68rem;
  cursor: pointer;
}
.ajuda-torre__gatilho:hover { border-color: rgba(0,255,234,.36); color: var(--cor-texto); }
.ajuda-torre__tempo { color: var(--cor-texto-fraco); }
.ajuda-torre__seta { margin-left: 2px; color: var(--cor-ciano); }
.ajuda-torre__conteudo {
  width: min(440px, 100%);
  padding: 10px 12px;
  border: 1px solid var(--cor-borda-vidro);
  background: rgba(5, 11, 20, .92);
  color: var(--cor-texto-suave);
  font-size: .76rem;
  line-height: 1.45;
  clip-path: var(--chanfro-8);
}
.ajuda-torre__conteudo .acao-link { margin-top: 6px; font-size: .74rem; }
.ajuda-contextual {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: -4px 0 16px;
  padding: 9px 12px;
  border-left: 2px solid var(--cor-ciano);
  background: rgba(0,255,234,.045);
  color: var(--cor-texto-suave);
  font-size: .78rem;
  line-height: 1.5;
}
.ajuda-contextual__rotulo {
  flex: 0 0 auto;
  padding-top: 1px;
  color: var(--cor-ciano);
  font-family: var(--fonte-mono);
  font-size: .65rem;
  font-weight: 700;
  letter-spacing: .7px;
  text-transform: uppercase;
}

/* ============================================================
 * ESTADOS — semáforo neon central (data-estado)
 * ============================================================ */
[data-estado="saudavel"]   { --estado-cor: var(--estado-saudavel);   --estado-glow: var(--glow-saudavel); }
[data-estado="atencao"]    { --estado-cor: var(--estado-atencao);    --estado-glow: var(--glow-atencao); }
[data-estado="iniciando"]  { --estado-cor: var(--estado-iniciando);  --estado-glow: var(--glow-iniciando); }
[data-estado="fora"]       { --estado-cor: var(--estado-fora);       --estado-glow: var(--glow-fora); }
[data-estado="indefinido"] { --estado-cor: var(--estado-indefinido); --estado-glow: none; }

.ponto-estado {
  display: inline-block; flex-shrink: 0;
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--estado-cor, var(--cor-texto-fraco));
  box-shadow: var(--estado-glow, none);
}
.ponto-estado--mini { width: 6px; height: 6px; }
.ponto-estado--led { width: 9px; height: 9px; }

/* só o PONTO anima nos estados transitórios/de alerta */
[data-estado="iniciando"] .ponto-estado,
.ponto-estado[data-estado="iniciando"] { animation: pulso-iniciando 1.6s ease-in-out infinite; }
[data-estado="atencao"] .ponto-estado,
.ponto-estado[data-estado="atencao"] { animation: pulso-atencao 2.8s ease-in-out infinite; }

.selo-estado {
  display: inline-flex; align-items: center; gap: 8px;
  white-space: nowrap;
  font-size: 0.7rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 1px;
  color: var(--estado-cor, var(--cor-texto-suave));
}

.barrinha-estado {
  display: inline-block; flex-shrink: 0;
  width: 4px; height: 18px;
  transform: skewX(-15deg);
  background: var(--estado-cor, var(--cor-texto-fraco));
  box-shadow: var(--estado-glow, none);
}

.selo-formato {
  font-size: 0.62rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 1px;
  padding: 3px 8px;
  border: 1px solid rgba(0,255,234,.35);
  clip-path: var(--chanfro-6);
  white-space: nowrap;
  color: var(--cor-ciano);
}
.selo-formato--antiga { border-color: var(--cor-trilho); color: var(--cor-texto-suave); }
.selo-formato--neutro { border-color: var(--cor-trilho); color: var(--cor-texto-suave); background: var(--vidro-bg-neutro); }

/* ============================================================
 * BOTÕES DE VIDRO — chanfro em quem age (§3.1)
 * glow externo via drop-shadow (clip-path corta box-shadow);
 * anel de foco INTERNO (o clip corta outline).
 * ============================================================ */
.btn-vidro {
  display: inline-flex; flex-direction: row;
  align-items: center; justify-content: center; gap: 8px;
  padding: 12px 22px;
  font-family: var(--fonte-corpo);
  font-size: 0.85rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 1px;
  color: var(--cor-texto);
  background: var(--vidro-bg-neutro);
  border: 1px solid var(--cor-borda-vidro);
  clip-path: var(--chanfro-8);
  cursor: pointer;
  text-decoration: none;
  transition: var(--transicao);
  user-select: none;
  white-space: nowrap;
}
.btn-vidro:hover { text-decoration: none; transform: translateY(-3px); }
.btn-vidro:active { transform: translateY(-1px); }
.btn-vidro:focus-visible {
  outline: none;
  box-shadow: inset 0 0 0 2px var(--cor-ciano);
}

.btn-vidro--primario {
  background: var(--vidro-bg);
  border-color: var(--cor-acento);
  text-shadow: var(--glow-texto);
  filter: var(--sombra-recorte);
}
.btn-vidro--primario:hover {
  background: var(--vidro-bg-hover);
  filter: var(--sombra-recorte-forte);
}

/* Confirma uma alteração operacional segura. O laranja é exclusivo para
 * chamadas de atenção; ações de aplicar usam o ciano já presente no painel. */
.btn-vidro--confirmar {
  border-color: rgba(0,255,234,.64);
  background: rgba(0,255,234,.10);
  color: var(--cor-ciano);
  text-shadow: var(--glow-saudavel);
  filter: drop-shadow(0 0 10px rgba(0,255,234,.20));
}
.btn-vidro--confirmar:hover:not([disabled]) {
  border-color: var(--cor-ciano);
  background: rgba(0,255,234,.18);
  filter: drop-shadow(0 0 14px rgba(0,255,234,.32));
}

.btn-vidro--perigo {
  background: var(--vidro-perigo-bg);
  border-color: var(--cor-vermelho);
  text-shadow: var(--glow-texto-perigo);
  filter: var(--sombra-recorte-perigo);
}
.btn-vidro--perigo:hover {
  background: var(--vidro-perigo-bg-hover);
  filter: var(--sombra-recorte-perigo);
}

.btn-vidro--fantasma {
  background: var(--vidro-bg-neutro);
  border-color: var(--cor-borda-vidro);
}
.btn-vidro--fantasma:hover { background: rgba(255,255,255,.09); }

.btn-vidro--peq { padding: 7px 12px; font-size: 0.72rem; }

.btn-vidro--largo {
  flex-direction: column; align-items: flex-start; gap: 4px;
  width: 100%; padding: 14px 18px;
  text-align: left;
  white-space: normal;
}
.btn-vidro__rotulo { display: block; }
.btn-vidro__comando {
  display: block;
  font-family: var(--fonte-mono);
  font-size: 0.7rem; font-weight: 400;
  text-transform: none; letter-spacing: 0;
  color: var(--cor-texto-suave);
}

/* CTA-herói do topo — padding do CTA do site, chanfro maior */
.topo__cta.btn-vidro--primario { padding: 15px 35px; clip-path: var(--chanfro-10); }

/* brilho passante — SÓ nos dois CTAs (--shine) */
.btn-vidro--shine { position: relative; overflow: hidden; }
.btn-vidro--shine::after {
  content: "";
  position: absolute; inset: 0 auto 0 -80%;
  width: 60%;
  background: var(--grad-shine);
  transform: skewX(-20deg);
  animation: brilho-passante 4s ease-in-out infinite;
  pointer-events: none;
}

.btn-vidro[disabled], .btn-vidro[aria-disabled="true"] {
  opacity: 0.45; cursor: not-allowed;
  filter: none; transform: none;
}
.btn-vidro[disabled]:hover { transform: none; }
.btn-vidro[disabled]::after { animation: none; } /* shine dorme junto */
.btn-vidro[data-ocupado] { cursor: progress; }
.btn-vidro[data-ocupado] .ponto-estado--led { animation: pulso-iniciando 1.6s ease-in-out infinite; }

/* ============================================================
 * CARTÕES — camada 1: vidro frio (§3.2)
 * ============================================================ */
.cartao-vidro {
  background: var(--cor-fundo-vidro);
  -webkit-backdrop-filter: var(--vidro-blur);
  backdrop-filter: var(--vidro-blur);
  border: 1px solid var(--cor-borda-vidro);
  clip-path: var(--chanfro-10);
  filter: drop-shadow(0 4px 20px rgba(0,0,0,0.4));
  padding: 20px;
}

.cartao-unidade {
  display: flex; flex-direction: column; gap: 12px;
  background: var(--cor-fundo-vidro);
  -webkit-backdrop-filter: var(--vidro-blur);
  backdrop-filter: var(--vidro-blur);
  border: 1px solid var(--cor-borda-vidro);
  border-left: 2px solid var(--estado-cor, var(--cor-trilho));
  clip-path: var(--chanfro-10);
  filter: drop-shadow(0 4px 20px rgba(0,0,0,0.4));
  padding: 20px;
  cursor: default;
  transition: var(--transicao);
}
.cartao-unidade:hover {
  transform: translateY(-2px);
  border-color: rgba(255,255,255,.16);
  border-left-color: var(--estado-cor, var(--cor-trilho));
}

.cartao-unidade__cabeca { display: flex; align-items: center; gap: 10px; }

.cartao-unidade__nome {
  font-family: var(--fonte-titulo);
  font-weight: 700; font-size: 1.05rem;
  letter-spacing: 1px; text-transform: uppercase;
  margin-right: auto;
  overflow-wrap: anywhere;
}

.cartao-unidade__fone {
  display: flex; align-items: baseline; gap: 10px;
  font-family: var(--fonte-mono);
  font-size: 0.95rem;
  color: var(--cor-texto);
}

.cartao-unidade__dados {
  display: grid; grid-template-columns: 1fr 1fr; gap: 10px 16px;
  padding-top: 12px;
  border-top: 1px solid var(--cor-borda-vidro-fraca);
}

.cartao-unidade__containers { display: flex; gap: 16px; flex-wrap: wrap; }
.cartao-unidade__mini {
  display: inline-flex; align-items: center; gap: 6px;
  font-family: var(--fonte-mono); font-size: 0.72rem;
  color: var(--cor-texto-suave);
}

.cartao-unidade__acoes { display: flex; gap: 8px; flex-wrap: wrap; }

/* apagado, sem drama — coisas mortas não piscam */
.cartao-unidade[data-estado="fora"] > :not(.cartao-unidade__cabeca):not(.selo-estado):not(.cartao-unidade__acoes) {
  opacity: 0.75;
}

/* ---------- dado (rótulo + valor) ---------- */
.dado { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.dado__rotulo {
  font-size: 0.62rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 1.2px;
  color: var(--cor-texto-fraco);
}
.dado__valor {
  font-family: var(--fonte-mono);
  font-size: 0.85rem;
  color: var(--cor-texto-suave);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.dado__nota { font-size: 0.72rem; color: var(--cor-amarelo); }
.dado--mudou .dado__valor { animation: dado-flash 0.6s ease-out 1; }

/* ---------- barra de energia ---------- */
.barra-energia {
  display: block; height: 4px; margin-top: 4px;
  background: var(--cor-trilho);
  border-radius: var(--raio-barra);
  overflow: hidden;
}
.barra-energia__nivel {
  display: block; height: 100%; width: 0;
  background: var(--grad-energia);
  box-shadow: var(--glow-barra);
  border-radius: var(--raio-barra);
  transition: width var(--transicao-barra);
}
.barra-energia--amarela .barra-energia__nivel {
  background: var(--grad-energia-amarela);
  box-shadow: var(--glow-barra-amarela);
}

/* ============================================================
 * HOME — resumo, gráfico e unidades
 * ============================================================ */
.home-frota { width: min(100%, 1440px); margin-inline: auto; min-width: 0; }
.home-cabeca {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 16px;
}
.home-cabeca__sobretitulo { margin-bottom: 4px; color: var(--cor-texto-fraco); }
.home-cabeca__titulo-linha { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.home-cabeca__titulo {
  color: var(--cor-texto);
  font-family: var(--fonte-titulo);
  font-size: clamp(1.35rem, 2.4vw, 1.8rem);
  font-weight: 800;
  letter-spacing: 1.1px;
  line-height: 1;
}
.home-cabeca__meta { color: var(--cor-texto-suave); font-family: var(--fonte-mono); font-size: .76rem; }
.home-cabeca__lado { position: relative; display: flex; align-items: center; justify-content: flex-end; gap: 8px; align-self: center; }
.home-status-torre { position: relative; }
.home-status-torre__gatilho {
  display: inline-flex;
  min-height: 32px;
  align-items: center;
  gap: 7px;
  padding: 5px 9px;
  border: 1px solid rgba(0,255,234,.24);
  background: rgba(0,255,234,.045);
  clip-path: var(--chanfro-6);
  color: var(--cor-texto-suave);
  font-family: var(--fonte-mono);
  font-size: .68rem;
  cursor: pointer;
}
.home-status-torre__gatilho:hover { border-color: rgba(0,255,234,.5); color: var(--cor-texto); }
.home-status-torre__tempo { color: var(--cor-texto-fraco); }
.home-status-torre__conteudo {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  z-index: 20;
  width: min(360px, calc(100vw - 48px));
  padding: 10px 12px;
  border: 1px solid var(--cor-borda-vidro);
  background: rgba(5,11,20,.97);
  box-shadow: var(--sombra-painel);
  clip-path: var(--chanfro-8);
  color: var(--cor-texto-suave);
  font-size: .75rem;
  line-height: 1.45;
}
.home-status-torre__conteudo .acao-link { display: inline-block; margin-top: 6px; }
.home-acoes { position: relative; }
.home-acoes > summary { list-style: none; }
.home-acoes > summary::-webkit-details-marker { display: none; }
.home-acoes__gatilho {
  display: inline-flex;
  min-height: 32px;
  align-items: center;
  gap: 6px;
  padding: 5px 9px;
  border: 1px solid rgba(255,142,29,.5);
  background: rgba(255,77,29,.08);
  clip-path: var(--chanfro-6);
  color: #ffd2c3;
  font-family: var(--fonte-mono);
  font-size: .68rem;
  cursor: pointer;
}
.home-acoes[open] .home-acoes__gatilho,
.home-acoes__gatilho:hover { border-color: var(--cor-acento-claro); background: rgba(255,77,29,.17); color: #fff; }
.home-acoes__menu {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  z-index: 21;
  min-width: 168px;
  padding: 6px;
  border: 1px solid var(--cor-borda-vidro);
  background: rgba(5,11,20,.97);
  box-shadow: var(--sombra-painel);
  clip-path: var(--chanfro-8);
}
.home-acoes__item {
  display: flex;
  width: 100%;
  min-height: 32px;
  align-items: center;
  gap: 7px;
  padding: 7px 8px;
  border: 0;
  background: transparent;
  color: var(--cor-texto);
  font-family: var(--fonte-mono);
  font-size: .71rem;
  text-align: left;
  cursor: pointer;
}
.home-acoes__item:hover,
.home-acoes__item:focus-visible { background: rgba(0,255,234,.08); color: var(--cor-ciano); outline: none; }

.faixa-resumo {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
  margin-bottom: 24px;
}

.bloco-stat {
  display: flex; flex-direction: column; gap: 6px;
  background: var(--cor-fundo-vidro);
  -webkit-backdrop-filter: var(--vidro-blur);
  backdrop-filter: var(--vidro-blur);
  border: 1px solid var(--cor-borda-vidro);
  clip-path: var(--chanfro-8);
  filter: drop-shadow(0 4px 20px rgba(0,0,0,0.4));
  padding: 14px 18px;
}
.bloco-stat__numero {
  font-family: var(--fonte-titulo);
  font-weight: 700; font-size: 1.6rem; line-height: 1;
  color: var(--cor-texto);
}
.bloco-stat__numero[data-tom="ciano"]   { color: var(--cor-ciano); text-shadow: var(--glow-saudavel); }
.bloco-stat__numero[data-tom="amarelo"] { color: var(--cor-amarelo); text-shadow: var(--glow-atencao); }
.bloco-stat__numero[data-tom="laranja"] { color: var(--cor-acento-hover); text-shadow: var(--glow-iniciando); }
.bloco-stat__numero[data-tom="cinza"]   { color: var(--cor-texto-fraco); }
.bloco-stat .btn-vidro--peq { align-self: flex-start; margin-top: 2px; }
.home-resumo { gap: 12px; margin-bottom: 16px; }
.home-resumo .bloco-stat { min-height: 82px; padding: 11px 14px; gap: 4px; }
.home-resumo .bloco-stat__numero { font-size: 1.45rem; }
.bloco-stat__acao { align-self: flex-start; margin-top: 2px; font-size: .68rem; }

.home-grafico {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 184px;
  gap: 16px;
  align-items: stretch;
  margin-bottom: 16px;
}
.home-grafico__principal { min-width: 0; display: flex; flex-direction: column; gap: 10px; }
.home-grafico__cabeca { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.home-grafico__filtro.campo__entrada { width: min(260px, 34vw); flex: 0 1 260px; margin-left: auto; padding: 5px 8px; font-size: .75rem; }
.home-grafico__resumo { display: grid; grid-template-rows: 1fr 1fr; gap: 10px; }
.home-grafico__stat {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 4px;
  padding: 10px 12px;
  border: 1px solid var(--cor-borda-vidro);
  background: var(--vidro-bg-neutro);
  clip-path: var(--chanfro-8);
}

.home-unidades { margin-top: 2px; }
.home-unidades__cabeca {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 10px;
}
.home-unidades__sobretitulo { margin-bottom: 3px; color: var(--cor-ciano); }
.home-unidades__titulo { font-family: var(--fonte-titulo); font-size: 1rem; letter-spacing: .5px; }
.home-unidades__filtros {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 12px;
  padding: 9px 12px;
}
.home-unidades__busca { flex: 1 1 240px; min-width: 180px; padding: 7px 10px; font-size: .8rem; }
.home-unidades__chips { display: inline-flex; gap: 6px; flex-wrap: wrap; }
.home-lote {
  display: flex;
  align-items: center;
  gap: 8px 14px;
  flex-wrap: wrap;
  margin-bottom: 12px;
  padding: 10px 12px;
  border: 1px solid rgba(0,255,234,.28);
  background: rgba(0,255,234,.045);
  clip-path: var(--chanfro-8);
}
.home-lote__contexto { display: grid; gap: 2px; min-width: min(250px, 100%); }
.home-lote__resumo { color: var(--cor-ciano); font-family: var(--fonte-mono); font-size: .76rem; font-weight: 700; }
.home-lote__nomes { color: var(--cor-texto-suave); font-family: var(--fonte-mono); font-size: .68rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.home-lote__operacoes { display: grid; gap: 4px; }
.home-lote__rotulo { color: var(--cor-texto-fraco); font-size: .62rem; font-weight: 700; letter-spacing: .11em; text-transform: uppercase; }
.home-lote__acoes { display: inline-flex; gap: 6px; flex-wrap: wrap; }
.home-lote__acao {
  min-height: 34px;
  padding: 5px 10px;
  background: rgba(0,255,234,.07);
  border: 1px solid rgba(0,255,234,.42);
  clip-path: var(--chanfro-6);
  color: var(--cor-ciano);
  font-size: .72rem;
  font-family: var(--fonte-corpo);
  cursor: pointer;
  transition: var(--transicao);
}
.home-lote__acao:hover:not([disabled]) { background: rgba(0,255,234,.16); border-color: var(--cor-ciano); color: #e7fffc; }
.home-lote__acao:focus-visible { outline: 2px solid var(--cor-ciano); outline-offset: 2px; }
.home-lote__acao[disabled], .home-lote__limpar[disabled] { opacity: .45; cursor: wait; }
.home-lote__remover { border-color: rgba(255,51,51,.55); color: #ffc0b1; background: rgba(255,51,51,.055); }
.home-lote__remover:hover:not([disabled]) { border-color: var(--cor-vermelho); background: rgba(255,51,51,.14); color: #ffd6cd; }
.home-lote__andamento { color: var(--cor-texto-suave); font-size: .7rem; max-width: 330px; }
.home-lote[aria-busy="true"] .home-lote__andamento { color: var(--cor-ciano); }
.home-lote__limpar { margin-left: auto; font-family: var(--fonte-mono); font-size: .68rem; }
.home-selecao { width: 18px; height: 18px; accent-color: var(--cor-ciano); cursor: pointer; }

.grade-frota {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 20px;
}

/* ---------- HOME · tabela semântica e compacta ---------- */
.home-tabela { padding: 0; overflow: visible; clip-path: none; border-radius: 8px; }
.tabela-frota { width: 100%; border-collapse: collapse; table-layout: fixed; }
.tabela-frota th, .tabela-frota td {
  padding: 10px 12px; text-align: left; vertical-align: middle;
  border-bottom: 1px solid var(--cor-borda-vidro-fraca);
  overflow: hidden;
}
.tabela-frota thead th {
  position: sticky; top: 0; z-index: 2;
  background: var(--cor-fundo-painel-2);
  border-bottom: 1px solid var(--cor-borda-vidro);
  padding: 9px 12px;
}
.home-ordenar {
  display: inline-flex; align-items: center; gap: 6px; width: 100%; min-height: 28px;
  padding: 2px 0; border: 0; background: transparent; color: inherit;
  font: inherit; letter-spacing: inherit; text-align: left; cursor: pointer;
}
.home-ordenar:hover, .home-ordenar[data-ativa="true"] { color: var(--cor-ciano); }
.home-ordenar:focus-visible { outline: 2px solid var(--cor-ciano); outline-offset: 3px; }
.home-ordenar__indicador { color: var(--cor-texto-fraco); font: .9rem/1 var(--fonte-mono); }
.home-ordenar[data-ativa="true"] .home-ordenar__indicador { color: var(--cor-ciano); text-shadow: 0 0 8px rgba(0,255,234,.5); }
.tabela-frota tbody th { font-weight: inherit; } /* célula-linha: sem negrito automático */
.tabela-frota .dado__valor { display: block; }   /* elipse funciona em célula de tabela */
.tabela-frota th:nth-child(1) { width: 4%; }
.tabela-frota th:nth-child(2) { width: 22%; }
.tabela-frota th:nth-child(3) { width: 13%; }
.tabela-frota th:nth-child(4) { width: 19%; }
.tabela-frota th:nth-child(5) { width: 10%; }
.tabela-frota th:nth-child(6) { width: 12%; }
.tabela-frota th:nth-child(7) { width: 12%; }
.tabela-frota th:nth-child(8) { width: 8%; text-align: right; }
.tabela-frota tbody tr:hover { background: rgba(255,255,255,.025); }
.tabela-frota tbody tr[data-selecionada="true"] { background: rgba(0,255,234,.045); }
.home-col-selecao { padding-inline: 8px !important; text-align: center !important; }
.home-selecao { width: 18px; height: 18px; margin: 0; accent-color: var(--cor-ciano); cursor: pointer; }
.home-unidade-celula { display: flex; align-items: center; gap: 10px; min-width: 0; }
.home-unidade-celula .barrinha-estado { flex: 0 0 4px; height: 22px; }
.home-unidade-celula__texto { display: flex; width: 0; min-width: 0; flex: 1 1 auto; flex-direction: column; gap: 2px; }
.home-unidade-celula__nome { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-family: var(--fonte-titulo); font-size: .78rem; font-weight: 700; letter-spacing: .6px; text-transform: uppercase; }
.home-unidade-celula__estado { font-size: .59rem; }
.home-col-telefone { color: var(--cor-texto-suave); font-size: .76rem; }
.home-atividade { display: grid; gap: 3px; min-width: 0; }
.home-atividade__linha { display: flex; justify-content: space-between; gap: 8px; color: var(--cor-texto-fraco); font-family: var(--fonte-mono); font-size: .66rem; white-space: nowrap; }
.home-atividade__linha strong { overflow: hidden; color: var(--cor-texto-suave); font-weight: 500; text-overflow: ellipsis; }
.home-fila-celula__conteudo { display: flex; min-width: 0; flex-direction: column; gap: 4px; }
.home-servicos { display: inline-flex; align-items: center; gap: 5px; color: var(--cor-texto-suave); font-family: var(--fonte-mono); font-size: .68rem; white-space: nowrap; }
.home-col-acao { position: relative; overflow: visible !important; text-align: right; }
.home-abrir-unidade {
  min-height: 30px;
  padding: 5px 9px;
  border: 1px solid var(--cor-borda-vidro);
  background: rgba(255,255,255,.035);
  clip-path: var(--chanfro-6);
  color: var(--cor-texto);
  font-family: var(--fonte-mono);
  font-size: .68rem;
  cursor: pointer;
}
.home-abrir-unidade:hover { border-color: rgba(0,255,234,.44); color: var(--cor-ciano); }
.home-acoes-unidade { position: relative; display: inline-flex; align-items: center; justify-content: flex-end; gap: 4px; }
.home-mais-acoes {
  display: inline-grid;
  width: 30px;
  min-height: 30px;
  place-items: center;
  padding: 0;
  border: 1px solid var(--cor-borda-vidro);
  background: rgba(255,255,255,.025);
  clip-path: var(--chanfro-6);
  color: var(--cor-texto-suave);
  font-family: var(--fonte-mono);
  font-size: .83rem;
  line-height: 1;
  cursor: pointer;
}
.home-mais-acoes:hover,
.home-mais-acoes:focus-visible { border-color: rgba(0,255,234,.44); color: var(--cor-ciano); outline: none; }
.home-acoes-unidade__menu {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  z-index: 30;
  display: grid;
  min-width: 136px;
  padding: 6px;
  border: 1px solid var(--cor-borda-vidro);
  background: rgba(5,11,20,.98);
  box-shadow: var(--sombra-painel);
  clip-path: var(--chanfro-8);
}
.home-acoes-unidade__item {
  width: 100%;
  min-height: 32px;
  padding: 7px 8px;
  border: 0;
  background: transparent;
  color: var(--cor-texto);
  font-family: var(--fonte-mono);
  font-size: .7rem;
  text-align: left;
  cursor: pointer;
}
.home-acoes-unidade__item:hover,
.home-acoes-unidade__item:focus-visible { background: rgba(0,255,234,.08); color: var(--cor-ciano); outline: none; }

.linha-unidade-acao,
.linha-audit-acao {
  display: grid;
  width: 100%;
  margin: 0;
  border: 0;
  border-bottom: 1px solid var(--cor-borda-vidro-fraca);
  background: transparent;
  color: inherit;
  cursor: pointer;
  text-align: left;
}
.linha-unidade-acao {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 10px 16px;
}
.linha-audit-acao {
  grid-template-columns: 96px 130px 130px 1fr 130px;
  gap: 12px;
  align-items: center;
  padding: 10px 16px;
}
.linha-unidade-acao:hover,
.linha-audit-acao:hover { background: rgba(255,255,255,0.03); }

/* ============================================================
 * DETALHE DA UNIDADE — grid 12 colunas
 * ============================================================ */
.unidade-cabeca { margin-bottom: 20px; }
.unidade-cabeca__linha { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.unidade-cabeca__nome {
  font-family: var(--fonte-titulo);
  font-weight: 700; font-size: 1.5rem;
  letter-spacing: 1px; text-transform: uppercase;
  margin-right: 4px;
}
.unidade-cabeca__ids { margin-top: 6px; font-size: 0.85rem; }
.unidade-cabeca__meta { margin-top: 2px; font-size: 0.75rem; color: var(--cor-texto-fraco); }
.unidade-cabeca__meta a { color: var(--cor-ciano); font-family: var(--fonte-mono); }

.grade-unidade {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: 20px;
}
.col-3  { grid-column: span 3; }
.col-4  { grid-column: span 4; }
.col-5  { grid-column: span 5; }
.col-7  { grid-column: span 7; }
.col-12 { grid-column: span 12; }

.painel-linhas { display: flex; flex-direction: column; gap: 10px; margin-top: 12px; }
.painel-linhas__item {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 10px;
  background: var(--vidro-bg-neutro);
  border: 1px solid var(--cor-borda-vidro-fraca);
  clip-path: var(--chanfro-6);
}
.painel-linhas__nome { font-size: 0.85rem; color: var(--cor-texto); }
.painel-linhas__info {
  margin-left: auto;
  font-family: var(--fonte-mono); font-size: 0.75rem;
  color: var(--cor-texto-suave);
  text-align: right;
}

.painel-dados {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 12px 16px; margin-top: 12px;
}

.painel-retidas { background:
  linear-gradient(rgba(255,193,7,.06), rgba(255,193,7,.06)),
  var(--cor-fundo-vidro);
}
.painel-retidas__aviso { margin-top: 8px; font-size: 0.8rem; color: var(--cor-texto-mudo); }
.lista-retidas { display: flex; flex-direction: column; gap: 8px; margin: 12px 0; }
.lista-retidas__item {
  display: flex; flex-direction: column; gap: 2px;
  padding: 8px 10px;
  border: 1px solid rgba(255,193,7,.25);
  clip-path: var(--chanfro-6);
}
.lista-retidas__lid {
  font-family: var(--fonte-mono); font-size: 0.8rem;
  color: var(--cor-texto);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.lista-retidas__info { font-size: 0.72rem; color: var(--cor-amarelo); }
.lista-retidas__acao {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 2px 12px;
  width: 100%;
  padding: 9px 10px;
  border: 1px solid rgba(255,193,7,.25);
  background: rgba(255,193,7,.035);
  clip-path: var(--chanfro-6);
  color: inherit;
  text-align: left;
  cursor: pointer;
}
.lista-retidas__acao:hover,
.lista-retidas__acao:focus-visible { border-color: rgba(255,193,7,.62); background: rgba(255,193,7,.09); outline: none; }
.lista-retidas__acao .lista-retidas__info { grid-column: 1; }
.lista-retidas__mapear { grid-column: 2; grid-row: 1 / span 2; align-self: center; color: var(--cor-amarelo); font-family: var(--fonte-mono); font-size: .65rem; }

.grade-acoes {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px; margin-top: 12px;
}

/* ---------- UNIDADE · visão operacional única ---------- */
.unidade-frota { width: min(100%, 1440px); margin-inline: auto; min-width: 0; }
.unidade-trilha { margin-bottom: 8px; color: var(--cor-texto-fraco); }
.unidade-cabeca--nova {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 16px;
}
.unidade-cabeca__identidade { min-width: 0; }
.unidade-cabeca--nova .unidade-cabeca__nome { font-size: clamp(1.35rem, 2.4vw, 1.8rem); line-height: 1; }
.unidade-cabeca--nova .unidade-cabeca__ids { color: var(--cor-texto-suave); font-size: .78rem; }
.unidade-cabeca--nova .unidade-cabeca__meta { display: flex; flex-wrap: wrap; gap: 7px; align-items: center; }
.unidade-cabeca--nova .unidade-cabeca__meta button { color: var(--cor-ciano); font-family: var(--fonte-mono); font-size: .72rem; }
.unidade-cabeca__operacao { display: flex; flex: 0 0 auto; align-items: flex-start; justify-content: flex-end; gap: 8px; }
.unidade-status-torre { position: relative; }
.unidade-status-torre__gatilho {
  display: inline-flex;
  min-height: 34px;
  max-width: min(100%, 390px);
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  border: 1px solid var(--cor-borda-vidro);
  background: rgba(5,11,20,.64);
  clip-path: var(--chanfro-6);
  color: var(--cor-texto-suave);
  font-family: var(--fonte-mono);
  font-size: .68rem;
  cursor: pointer;
}
.unidade-status-torre__gatilho:hover,
.unidade-status-torre__gatilho:focus-visible { border-color: rgba(0,255,234,.52); color: var(--cor-texto); outline: none; }
.unidade-status-torre__tempo { overflow: hidden; color: var(--cor-texto-fraco); text-overflow: ellipsis; white-space: nowrap; }
.unidade-status-torre__conteudo {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  z-index: 31;
  width: min(340px, calc(100vw - 40px));
  padding: 12px;
  border: 1px solid var(--cor-borda-vidro);
  background: rgba(5,11,20,.98);
  box-shadow: var(--sombra-painel);
  clip-path: var(--chanfro-8);
}
.unidade-status-torre__conteudo p { margin-bottom: 8px; color: var(--cor-texto-suave); font-size: .76rem; line-height: 1.5; }
.unidade-acoes { position: relative; flex: 0 0 auto; }
.unidade-acoes > summary { list-style: none; }
.unidade-acoes > summary::-webkit-details-marker { display: none; }
.unidade-acoes__gatilho {
  display: inline-flex;
  min-height: 34px;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  border: 1px solid rgba(255,142,29,.5);
  background: rgba(255,77,29,.08);
  clip-path: var(--chanfro-6);
  color: #ffd2c3;
  font-family: var(--fonte-mono);
  font-size: .7rem;
  cursor: pointer;
}
.unidade-acoes[open] .unidade-acoes__gatilho,
.unidade-acoes__gatilho:hover { border-color: var(--cor-acento-claro); background: rgba(255,77,29,.17); color: #fff; }
.unidade-acoes__menu {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  z-index: 30;
  display: grid;
  min-width: 250px;
  padding: 6px;
  border: 1px solid var(--cor-borda-vidro);
  background: rgba(5,11,20,.98);
  box-shadow: var(--sombra-painel);
  clip-path: var(--chanfro-8);
}
.unidade-acoes__item {
  display: grid;
  gap: 3px;
  width: 100%;
  min-height: 42px;
  padding: 8px;
  border: 0;
  background: transparent;
  color: var(--cor-texto);
  font-family: var(--fonte-mono);
  font-size: .72rem;
  text-align: left;
  cursor: pointer;
}
.unidade-acoes__item:hover,
.unidade-acoes__item:focus-visible { background: rgba(0,255,234,.08); color: var(--cor-ciano); outline: none; }
.unidade-acoes__comando { color: var(--cor-texto-fraco); font-size: .62rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.unidade-acoes__separador { height: 1px; margin: 3px 2px; background: var(--cor-borda-vidro-fraca); }
.unidade-acoes__item--perigo { color: #ffb7a6; }
.unidade-acoes__item--perigo:hover,
.unidade-acoes__item--perigo:focus-visible { background: rgba(255,51,51,.09); color: #ffd6cd; }

.unidade-abas {
  display: flex;
  gap: 5px;
  align-items: center;
  margin-bottom: 16px;
  padding: 5px;
  border: 1px solid var(--cor-borda-vidro-fraca);
  background: rgba(5,11,20,.5);
  overflow-x: auto;
  scrollbar-width: thin;
}
.unidade-abas__item {
  min-height: 34px;
  flex: 0 0 auto;
  padding: 6px 9px;
  border: 1px solid transparent;
  background: transparent;
  clip-path: var(--chanfro-6);
  color: var(--cor-texto-fraco);
  font-family: var(--fonte-mono);
  font-size: .68rem;
  cursor: pointer;
}
.unidade-abas__item[aria-selected="true"] { border-color: rgba(0,255,234,.5); background: rgba(0,255,234,.08); color: var(--cor-ciano); }
.unidade-abas__item:hover,
.unidade-abas__item:focus-visible { border-color: rgba(0,255,234,.35); color: var(--cor-texto); outline: none; }
.unidade-painel { min-width: 0; }
.unidade-operacao { display: grid; grid-template-columns: minmax(290px, 4fr) minmax(0, 8fr); gap: 16px; align-items: start; }
.unidade-operacao__coluna { display: grid; gap: 16px; min-width: 0; }
.unidade-configuracao { display: grid; grid-template-columns: minmax(300px, 4fr) minmax(0, 8fr); gap: 16px; align-items: start; }
.unidade-configuracao .cartao-vidro { min-width: 0; }
.unidade-configuracao__cerebro { min-height: 330px; }
.unidade-configuracao__recursos { min-height: 330px; }
.unidade-configuracao__cabeca {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 8px;
}
.unidade-configuracao__cabeca .eyebrow { margin-bottom: 3px; color: var(--cor-ciano); }
.unidade-configuracao__cabeca h2 { font-family: var(--fonte-titulo); font-size: 1rem; letter-spacing: .5px; }
.unidade-cerebro-campos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-top: 16px; }
.unidade-configuracao__estado {
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px solid var(--cor-borda-vidro-fraca);
  color: var(--cor-texto-suave);
  font-size: .74rem;
}
.unidade-configuracao__acao {
  display: flex;
  align-items: center;
  gap: 10px 14px;
  flex-wrap: wrap;
  margin-top: 16px;
}
.unidade-configuracao__acao .campo__dica { flex: 1 1 230px; }
.unidade-configuracao__sem-queda { border-color: rgba(0,255,157,.5); color: #00ff9d; }
.unidade-planos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-top: 16px; }
.unidade-plano {
  display: flex;
  min-height: 105px;
  flex-direction: column;
  align-items: flex-start;
  gap: 7px;
  padding: 14px;
  border: 1px solid var(--cor-borda-vidro);
  background: var(--vidro-bg-neutro);
  clip-path: var(--chanfro-8);
  color: var(--cor-texto);
  font: inherit;
  text-align: left;
  cursor: pointer;
  transition: var(--transicao);
}
.unidade-plano:hover,
.unidade-plano:focus-visible { border-color: rgba(0,255,234,.40); background: rgba(0,255,234,.045); outline: none; }
.unidade-plano[aria-pressed="true"] { border-color: rgba(0,255,234,.64); background: rgba(0,255,234,.075); }
.unidade-plano__nome { color: var(--cor-texto); font-family: var(--fonte-titulo); font-size: .9rem; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; }
.unidade-plano[aria-pressed="true"] .unidade-plano__nome { color: var(--cor-ciano); }
.unidade-plano__specs { color: var(--cor-texto-suave); font-size: .72rem; }
.unidade-plano__selo { margin-top: auto; }
.unidade-retidas { min-width: 0; }
.unidade-secao__cabeca { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.unidade-secao__cabeca .eyebrow { margin-bottom: 3px; color: var(--cor-ciano); }
.unidade-secao__cabeca h2,
.unidade-logs__cabeca h2 { font-family: var(--fonte-titulo); font-size: 1rem; letter-spacing: .5px; }
.unidade-secao__meta { color: var(--cor-texto-fraco); font-family: var(--fonte-mono); font-size: .66rem; text-align: right; }
.unidade-operacao .cartao-vidro { min-width: 0; padding: 16px; }
.unidade-operacao__coluna .unidade-atividade { min-height: 194px; }
.unidade-operacao__coluna .unidade-servicos { min-height: 166px; }
.unidade-log-operacional {
  /* Na visão ampla, o diagnóstico é a área de trabalho principal. O cartão
   * ocupa o restante visível da janela e o terminal absorve apenas esse espaço. */
  display: flex;
  flex-direction: column;
  min-height: 360px;
  height: max(360px, calc(100dvh - 242px));
}
.unidade-log-operacional .unidade-log-operacional__cabeca {
  display: grid;
  grid-template-columns: minmax(190px, .72fr) minmax(320px, 1.85fr);
  align-items: end;
  gap: 14px;
  margin-bottom: 12px;
}
.unidade-log-operacional__titulo,
.unidade-log-operacional__filtro { min-width: 0; }
.unidade-log-operacional__titulo .campo__dica { max-width: 34ch; }
.unidade-log-operacional__filtro .unidade-logs__busca { width: 100%; }
.unidade-log-operacional .terminal__cabeca { min-height: 46px; padding-block: 8px; }
.unidade-log-operacional .terminal { flex: 1; min-height: 0; }
.unidade-log-operacional .unidade-logs__corpo {
  /* height: 0 + flex evita que conteúdo (ou "limpar") altere o tamanho
   * reservado. Linhas a mais rolam somente aqui dentro. */
  flex: 1;
  height: 0;
  min-height: 0;
  max-height: none;
}

.unidade-logs { display: grid; gap: 12px; }
.unidade-logs__cabeca { display: flex; align-items: end; justify-content: space-between; gap: 16px; }
.unidade-logs__cabeca .eyebrow { margin-bottom: 3px; color: var(--cor-ciano); }
.unidade-logs__busca { width: min(360px, 40vw); padding: 8px 10px; font-size: .8rem; }
.unidade-logs__corpo { min-height: 460px; max-height: 62vh; }
.unidade-logs__controles { gap: 6px; }
.unidade-logs__controles .terminal__controle { min-height: 34px; }
/* A aba exclusiva de logs é uma área de trabalho: reserva até o fim visível
 * mesmo vazia. O terminal, e não a página, passa a rolar quando chegam linhas. */
.unidade-logs--completa {
  display: flex;
  flex-direction: column;
  min-height: 360px;
  height: max(360px, calc(100dvh - 244px));
}
.unidade-logs--completa .terminal { flex: 1; min-height: 0; }
.unidade-logs--completa .unidade-logs__corpo {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  flex: 1;
  height: 0;
  min-height: 0;
  max-height: none;
}
.unidade-logs--completa .terminal__linha,
.unidade-logs--completa .terminal__cursor { flex: 0 0 auto; }
.unidade-politica { display: grid; grid-template-columns: minmax(0, 1fr) minmax(212px, .42fr); gap: 16px; align-items: end; min-width: 0; }
.unidade-politica .campo { min-width: 0; }
.unidade-politica__comando { display: grid; gap: 8px; align-self: end; }
.unidade-politica__acao { width: 100%; min-height: 44px; }
.unidade-politica__comando .campo__dica { line-height: 1.45; }
.unidade-identidade { width: min(100%, 1180px); min-height: 370px; }
.unidade-identidade__cabeca,
.unidade-politica-bloco__cabeca { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.unidade-identidade__cabeca { margin-bottom: 8px; }
.unidade-identidade__cabeca .eyebrow,
.unidade-politica-bloco__cabeca .eyebrow { margin-bottom: 3px; color: var(--cor-ciano); }
.unidade-identidade__cabeca h2,
.unidade-politica-bloco__cabeca h3 { font-family: var(--fonte-titulo); font-size: 1rem; letter-spacing: .5px; }
.unidade-identidade-campos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-top: 16px; }
.unidade-campo-identidade { padding: 12px; border: 1px solid var(--cor-borda-vidro-fraca); background: rgba(255,255,255,.018); clip-path: var(--chanfro-6); }
.unidade-campo-identidade .campo__entrada { border-color: rgba(0,255,234,.24); background: rgba(1,8,16,.78); }
.unidade-campo-identidade .campo__entrada:hover,
.unidade-campo-identidade .campo__entrada:focus { border-color: rgba(0,255,234,.64); }
.unidade-identidade__acao { display: flex; align-items: center; gap: 10px 14px; flex-wrap: wrap; margin-top: 16px; }
.unidade-identidade__acao .campo__dica { flex: 1 1 230px; }
.unidade-politica-bloco { margin-top: 18px; padding: 14px; border: 1px solid var(--cor-borda-vidro-fraca); background: rgba(0,255,234,.025); clip-path: var(--chanfro-8); }
.unidade-politica-bloco__estado { color: var(--cor-ciano); font-family: var(--fonte-mono); font-size: .65rem; white-space: nowrap; }
.unidade-politica { margin-top: 14px; }

/* Leitura operacional: monitores largos deixam de desperdiçar densidade com
 * texto minúsculo. A escala cresce de forma limitada e não afeta mobile. */
@media (min-width: 1101px) {
  .unidade-frota .eyebrow { font-size: clamp(.75rem, .60rem + .26vw, .86rem); }
  .unidade-frota .campo__rotulo { font-size: clamp(.75rem, .60rem + .26vw, .86rem); }
  .unidade-frota .campo__dica { font-size: clamp(.78rem, .62rem + .22vw, .92rem); line-height: 1.55; }
  .unidade-frota .campo__dica .mono { font-size: clamp(.75rem, .60rem + .20vw, .86rem); }
  .unidade-frota .campo__entrada { font-size: clamp(.92rem, .72rem + .18vw, 1.05rem); }
  .unidade-frota .btn-vidro { font-size: clamp(.82rem, .66rem + .18vw, .96rem); }
  .unidade-frota .unidade-identidade__cabeca h2,
  .unidade-frota .unidade-politica-bloco__cabeca h3 { font-size: clamp(1rem, .78rem + .22vw, 1.16rem); }
  .unidade-frota .unidade-politica-bloco__estado { font-size: clamp(.70rem, .56rem + .16vw, .80rem); }
}
.unidade-pacote { width: min(100%, 900px); }
.unidade-acessos { width: min(100%, 1080px); padding: 16px; }
.unidade-acessos__tabela { overflow: hidden; border: 1px solid var(--cor-borda-vidro-fraca); }
.unidade-acessos table { width: 100%; border-collapse: collapse; table-layout: fixed; }
.unidade-acessos th,
.unidade-acessos td { padding: 10px 12px; border-bottom: 1px solid var(--cor-borda-vidro-fraca); overflow-wrap: anywhere; text-align: left; }
.unidade-acessos th { color: var(--cor-texto-fraco); font-family: var(--fonte-mono); font-size: .64rem; letter-spacing: .75px; text-transform: uppercase; }
.unidade-acessos th:nth-child(1) { width: 36%; }
.unidade-acessos th:nth-child(2) { width: 38%; }
.unidade-acessos th:nth-child(3) { width: 26%; }
.unidade-acessos td { color: var(--cor-texto-suave); font-size: .8rem; }
.unidade-acessos tbody tr:last-child td { border-bottom: 0; }
.unidade-acessos__vazio { padding: 16px; border: 1px dashed var(--cor-borda-vidro); color: var(--cor-texto-suave); font-size: .84rem; }
.unidade-acessos__nota { margin-top: 10px; }

/* ---------- zona perigosa ---------- */
.zona-perigosa__alavanca {
  background: none; border: none; padding: 4px 0;
  color: var(--cor-texto-fraco);
  font-size: 0.85rem; cursor: pointer;
}
.zona-perigosa__alavanca:hover { color: var(--cor-texto-suave); }

.zona-perigosa {
  margin-top: 12px; padding: 20px;
  background: var(--cor-fundo-vidro);
  border: 1px solid rgba(255,51,51,.4);
  clip-path: var(--chanfro-10);
  filter: drop-shadow(0 0 8px rgba(255,51,51,.25));
  display: flex; flex-direction: column; gap: 12px; align-items: flex-start;
}
.zona-perigosa__titulo {
  font-family: var(--fonte-titulo);
  font-weight: 700; font-size: 1.05rem;
  letter-spacing: 1px; text-transform: uppercase;
  color: var(--cor-vermelho);
}
.zona-perigosa__texto { color: var(--cor-texto-mudo); max-width: 60ch; }
.zona-perigosa__opcao {
  display: flex; align-items: center; gap: 8px;
  color: var(--cor-texto-mudo); font-size: 0.85rem;
  cursor: pointer;
}
.zona-perigosa__opcao input { accent-color: var(--cor-vermelho); width: 16px; height: 16px; }

/* ============================================================
 * NOVA UNIDADE — form (7fr) + console didático (5fr)
 * ============================================================ */
.grade-nova {
  display: grid;
  grid-template-columns: 7fr 5fr;
  gap: 24px;
  align-items: start;
}
.grade-nova__console { position: sticky; top: 88px; display: flex; flex-direction: column; gap: 10px; }

.passos-conjunto { border: none; margin: 0; padding: 0; min-width: 0; }
.passos-conjunto[disabled] { opacity: 0.6; }

.passos { display: flex; flex-direction: column; gap: 24px; counter-reset: passo; }
.passo { display: flex; gap: 14px; }
.passo__numero {
  flex-shrink: 0;
  display: inline-flex; align-items: center; justify-content: center;
  width: 24px; height: 24px; margin-top: 2px;
  border: 1px solid var(--cor-trilho); clip-path: var(--chanfro-6);
  font-family: var(--fonte-titulo); font-size: 0.72rem; font-weight: 700;
  color: var(--cor-texto-fraco);
  transition: var(--transicao);
}
.passo--ativo .passo__numero {
  border-color: var(--cor-ciano); color: var(--cor-ciano);
  filter: drop-shadow(0 0 8px rgba(0,255,234,.35));
}
.passo--feito .passo__numero {
  border-color: var(--cor-ciano);
  background: var(--cor-ciano); color: var(--cor-fundo);
}

/* ---------- campo ---------- */
.campo { display: flex; flex-direction: column; gap: 6px; flex: 1; min-width: 0; }
.campo__rotulo {
  font-size: 0.7rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 1.2px;
  color: var(--cor-texto-mudo);
}
.campo__opcional { color: var(--cor-texto-fraco); font-weight: 400; letter-spacing: 0.5px; text-transform: none; }
.campo__entrada {
  width: 100%;
  padding: 10px 12px;
  font: inherit; color: var(--cor-texto);
  background: var(--terminal-fundo);
  border: 1px solid var(--cor-trilho);
  clip-path: var(--chanfro-6);
  transition: var(--transicao);
}
.campo__entrada--mono { font-family: var(--fonte-mono); font-size: 0.9rem; }
.campo__entrada::placeholder { color: var(--cor-texto-fraco); }
.campo__entrada:focus-visible {
  outline: none;
  border-color: var(--cor-ciano);
  filter: drop-shadow(0 0 8px rgba(0,255,234,.35));
}
select.campo__entrada { appearance: auto; }
.campo__dica { font-size: 0.75rem; color: var(--cor-texto-fraco); }
.campo__dica .mono { font-size: 0.72rem; color: var(--cor-texto-suave); }
.campo__erro { font-size: 0.75rem; color: var(--cor-vermelho); }
.campo--invalido .campo__entrada { border-color: var(--cor-vermelho); filter: drop-shadow(0 0 8px rgba(255,51,51,.2)); }
.campo__entrada--perigo:focus-visible { border-color: var(--cor-vermelho); filter: drop-shadow(0 0 8px rgba(255,51,51,.3)); }

/* ============================================================
 * LINHA-COMANDO — o professor de CLI (§3.7)
 * ============================================================ */
.linha-comando {
  position: relative;
  display: block;
  padding: 12px 44px 12px 14px;
  background: var(--terminal-fundo);
  border: 1px solid var(--cor-trilho);
  clip-path: var(--chanfro-8);
  font-family: var(--fonte-mono);
  font-size: 0.85rem; line-height: 1.6;
  overflow-x: auto;
  white-space: pre;
}
.linha-comando__prompt { color: var(--cor-ciano); }
.linha-comando__cmd    { color: var(--cor-texto); font-weight: 700; }
.linha-comando__sub    { color: var(--cor-acento-claro); }
.linha-comando__flag   { color: var(--cor-texto-suave); }
.linha-comando__valor  { color: var(--cor-texto); }

.btn-copiar {
  position: absolute; top: 6px; right: 6px;
  padding: 4px 8px;
  background: var(--vidro-bg-neutro);
  border: 1px solid var(--cor-borda-vidro);
  clip-path: var(--chanfro-6);
  color: var(--cor-texto-suave);
  font-size: 0.72rem;
  cursor: pointer;
  transition: var(--transicao);
}
.btn-copiar:hover { background: rgba(255,255,255,.09); color: var(--cor-texto); }

/* ============================================================
 * TERMINAL (§3.4)
 * ============================================================ */
.terminal {
  position: relative;
  display: flex; flex-direction: column;
  border: 1px solid var(--cor-borda-vidro);
  clip-path: var(--chanfro-8);
  overflow: hidden;
  min-width: 0;
}

.terminal__cabeca {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 12px;
  background: var(--cor-fundo-vidro);
  -webkit-backdrop-filter: var(--vidro-blur);
  backdrop-filter: var(--vidro-blur);
  border-bottom: 1px solid var(--cor-borda-vidro-fraca);
  flex-wrap: wrap;
}

.terminal__titulo {
  font-size: 0.7rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 1.2px;
  color: var(--cor-texto-mudo);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  min-width: 0;
}
.terminal__titulo .mono { text-transform: none; letter-spacing: 0; }

.terminal__controles { display: flex; gap: 6px; margin-left: auto; align-items: center; flex-wrap: wrap; }
.terminal__controle {
  padding: 3px 8px;
  background: var(--vidro-bg-neutro);
  border: 1px solid var(--cor-borda-vidro);
  clip-path: var(--chanfro-6);
  color: var(--cor-texto-suave);
  font-size: 0.7rem; font-family: var(--fonte-corpo);
  white-space: nowrap;
  cursor: pointer;
  transition: var(--transicao);
}
.terminal__controle:hover { background: rgba(255,255,255,.09); color: var(--cor-texto); }
.terminal__controle[aria-pressed="true"] {
  border-color: rgba(0,255,234,.5);
  color: var(--cor-ciano);
}
select.terminal__controle { appearance: auto; background: var(--terminal-fundo); }
/* Menus nativos precisam declarar o esquema escuro: sem isso Chromium pode
 * abrir options brancas com texto claro, ilegíveis no tema da Torre. */
select.campo__entrada,
select.terminal__controle { color-scheme: dark; }
select.campo__entrada option,
select.terminal__controle option { background: #09131f; color: #dbe9ee; }
select.campo__entrada option:checked,
select.terminal__controle option:checked { background: #07545a; color: #fff; }

.terminal__corpo {
  flex: 1;
  min-height: 160px; max-height: 420px;
  padding: 12px 14px;
  background: var(--terminal-fundo);
  overflow-y: auto; overflow-x: hidden;
  font-family: var(--fonte-mono);
  font-size: 0.8rem; line-height: 1.55;
  color: var(--cor-texto-mudo);
  overscroll-behavior: contain;
}
.terminal--grande .terminal__corpo { min-height: 320px; max-height: 480px; }
.terminal--compacto .terminal__corpo { min-height: 120px; max-height: 32vh; }

.terminal__linha { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.terminal__linha--eco { color: var(--cor-ciano); }
.terminal__linha--erro {
  color: #ff9a8a;
  border-left: 2px solid var(--cor-vermelho);
  padding-left: 8px; margin-left: -10px;
}
.terminal__linha--meta { color: var(--cor-texto-fraco); font-style: italic; }
.terminal__linha--ok { color: var(--cor-ciano); }

.modal-remover__backup {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: 0;
  padding: 11px 12px;
  border: 1px solid rgba(0,255,234,.24);
  background: rgba(0,255,234,.035);
  color: var(--cor-texto);
  cursor: pointer;
}
.modal-remover__backup input { width: 16px; height: 16px; margin-top: 2px; accent-color: var(--cor-ciano); }
.modal-remover__backup span { display: grid; gap: 3px; }
.modal-remover__backup small { color: var(--cor-texto-fraco); font-size: .74rem; line-height: 1.4; }
.modal-remover__lista {
  display: grid;
  gap: 8px;
  max-height: min(38dvh, 312px);
  overflow: auto;
  padding: 2px 4px 2px 0;
}
.modal-remover__backup:hover,
.modal-remover__backup:focus-within {
  border-color: rgba(0,255,234,.58);
  background: rgba(0,255,234,.075);
}
.audit-json {
  margin: 10px 0 0;
  padding: 10px;
  overflow: auto;
  white-space: pre-wrap;
  color: var(--cor-texto-mudo);
  background: rgba(0,0,0,.16);
  border: 1px solid var(--cor-borda-vidro-fraca);
  font: .75rem/1.45 var(--fonte-mono);
}

/* mapa ANSI → tema */
.term-vermelho { color: #ff9a8a; }
.term-ciano    { color: var(--cor-ciano); }
.term-amarelo  { color: var(--cor-amarelo); }
.term-azul     { color: #00c8ff; }
.term-roxo     { color: var(--cor-roxo); }
.term-forte    { font-weight: 700; color: var(--cor-texto); }

.terminal__cursor {
  display: inline-block;
  color: var(--cor-ciano);
  animation: cursor-pisca 1s steps(1) infinite;
}

.terminal__pilula {
  position: absolute; left: 50%; bottom: 10px;
  transform: translateX(-50%);
  padding: 4px 12px;
  background: var(--cor-fundo-painel-2);
  border: 1px solid rgba(0,255,234,.5);
  clip-path: var(--chanfro-6);
  color: var(--cor-ciano);
  font-size: 0.72rem;
  cursor: pointer;
  filter: drop-shadow(0 0 8px rgba(0,255,234,.35));
}

/* CRT opcional: scanlines estáticas a 2% */
.terminal--crt .terminal__corpo {
  background-image: repeating-linear-gradient(
    0deg, rgba(255,255,255,.02) 0 1px, transparent 1px 3px);
  background-color: var(--terminal-fundo);
}

/* ============================================================
 * SAÍDA DE AÇÃO — modal central com terminal em altura estável
 * ============================================================ */
.veu-modal--saida { z-index: 1200; padding: 32px; }
.gaveta-saida {
  position: relative;
  display: flex;
  width: min(1120px, calc(100vw - 64px));
  height: calc(100dvh - 64px);
  max-height: calc(100dvh - 64px);
  min-height: 0;
  padding: 12px;
  background: var(--cor-fundo-vidro);
  -webkit-backdrop-filter: var(--vidro-blur);
  backdrop-filter: var(--vidro-blur);
  border: 1px solid rgba(0,255,234,.35);
  clip-path: var(--chanfro-10);
  filter: drop-shadow(0 10px 30px rgba(0,0,0,.55)) drop-shadow(0 0 14px rgba(0,255,234,.10));
  animation: toast-entra 0.25s ease-out;
}
.gaveta-saida__fechar {
  position: absolute; top: 12px;
  right: 12px;
  z-index: 1;
  width: 28px; height: 28px;
  background: var(--vidro-bg-neutro);
  border: 1px solid var(--cor-borda-vidro);
  clip-path: var(--chanfro-6);
  color: var(--cor-texto-suave);
  cursor: pointer;
}
.gaveta-saida__fechar:hover { color: var(--cor-texto); }
.gaveta-saida__fechar[disabled] { opacity: 0.4; cursor: not-allowed; }
.gaveta-saida__progresso { margin-left: auto; margin-right: 36px; color: var(--cor-ciano); font: .68rem/1.2 var(--fonte-mono); white-space: nowrap; }
.gaveta-saida .terminal { width: 100%; min-height: 0; margin: 0; }
.gaveta-saida .terminal__corpo { height: 0; min-height: 0; max-height: none; }

/* ============================================================
 * TOASTS (§3.5)
 * ============================================================ */
.pilha-toasts {
  position: fixed; right: 20px; bottom: 20px; z-index: 1100;
  display: flex; flex-direction: column; gap: 10px;
  max-width: min(380px, calc(100vw - 40px));
}

.toast {
  position: relative;
  display: flex; align-items: flex-start; gap: 10px;
  padding: 12px 14px 14px;
  background: var(--cor-fundo-vidro);
  -webkit-backdrop-filter: var(--vidro-blur);
  backdrop-filter: var(--vidro-blur);
  border: 1px solid var(--cor-borda-vidro);
  border-left-width: 2px;
  clip-path: var(--chanfro-8);
  filter: drop-shadow(0 4px 20px rgba(0,0,0,0.4));
  animation: toast-entra 0.25s ease-out;
  overflow: hidden;
}
.toast--ok    { border-left-color: var(--cor-ciano); }
.toast--erro  { border-left-color: var(--cor-vermelho); }
.toast--aviso { border-left-color: var(--cor-amarelo); }
.toast--info  { border-left-color: var(--cor-acento); }
.toast--ok    .toast__icone { color: var(--cor-ciano); }
.toast--erro  .toast__icone { color: var(--cor-vermelho); }
.toast--aviso .toast__icone { color: var(--cor-amarelo); }
.toast--info  .toast__icone { color: var(--cor-acento-hover); }

.toast__texto { color: var(--cor-texto-mudo); font-size: 0.85rem; }
.toast__texto .mono { font-size: 0.8rem; }
.toast__fechar {
  margin-left: auto; flex-shrink: 0;
  background: none; border: none; padding: 0 2px;
  color: var(--cor-texto-fraco); font-size: 0.8rem;
  cursor: pointer;
}
.toast__fechar:hover { color: var(--cor-texto); }

.toast__barra {
  position: absolute; left: 0; bottom: 0;
  height: 2px; width: 100%;
  background: var(--grad-energia);
  box-shadow: var(--glow-barra);
  animation: contagem-toast 5s linear forwards;
}
.toast:hover .toast__barra { animation-play-state: paused; }

/* ============================================================
 * MODAL (§3.6) — camada 2
 * ============================================================ */
.veu-modal {
  position: fixed; inset: 0; z-index: 1000;
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
  background: var(--veu-fundo);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
}

.modal {
  width: min(560px, calc(100vw - 48px));
  max-height: calc(100vh - 96px);
  overflow-y: auto;
  padding: 24px;
  background: var(--cor-fundo-vidro);
  border: 1px solid var(--cor-borda-acento);
  clip-path: var(--chanfro-10);
  filter: var(--sombra-recorte);
  display: flex; flex-direction: column; gap: 16px;
}
.modal--perigo {
  border-color: var(--cor-vermelho);
  filter: var(--sombra-recorte-perigo);
}

.modal__titulo {
  font-family: var(--fonte-titulo);
  font-weight: 700; font-size: 1.05rem;
  letter-spacing: 1px; text-transform: uppercase;
}
.modal--perigo .modal__titulo { color: var(--cor-vermelho); }
.modal__corpo { display: flex; flex-direction: column; gap: 12px; color: var(--cor-texto-mudo); }
.modal__acoes { display: flex; gap: 10px; justify-content: flex-end; flex-wrap: wrap; }

/* ============================================================
 * FAIXAS DE AVISO
 * ============================================================ */
.faixa-aviso {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 10px 14px; margin-bottom: 20px;
  clip-path: var(--chanfro-8);
  font-size: 0.85rem;
}
.faixa-aviso--amarela {
  background: rgba(255,193,7,.08);
  border: 1px solid rgba(255,193,7,.4);
  color: var(--cor-amarelo);
}
.faixa-aviso--vermelha {
  background: rgba(255,51,51,.08);
  border: 1px solid rgba(255,51,51,.4);
  color: #ff9a8a;
}
.faixa-aviso--neutra {
  border-color: rgba(0, 243, 255, 0.28);
  background: rgba(0, 243, 255, 0.06);
  color: var(--cor-texto-suave);
}
.estado-fontes { display: grid; gap: 8px; margin-bottom: 16px; }
.estado-fontes:empty { display: none; }
.conteudo[data-dados-prontos="false"] > section { display: none; }
.faixa-aviso .btn-vidro--peq { margin-left: auto; }
.faixa-aviso__selo { font-family: var(--fonte-mono); font-size: 0.72rem; opacity: 0.8; }

/* ============================================================
 * ESTADOS VAZIOS (§2.4) — display Orbitron + contorno
 * ============================================================ */
.vazio {
  position: relative;
  padding: 64px 24px;
  text-align: center;
  overflow: hidden;
}
.vazio__titulo {
  font-family: var(--fonte-titulo);
  font-weight: 800; font-size: 2.5rem; line-height: 1.05;
  text-transform: uppercase;
  margin-bottom: 16px;
}
.vazio__texto {
  color: var(--cor-texto-mudo);
  max-width: 46ch; margin: 0 auto 24px;
}
.vazio__comando {
  max-width: 520px; margin: 20px auto 0;
  text-align: left;
}
.vazio .btn-vidro--primario { padding: 15px 35px; clip-path: var(--chanfro-10); }

.vazio__particulas { position: absolute; inset: 0; pointer-events: none; }
.vazio__particula {
  position: absolute; bottom: -8px;
  width: 3px; height: 3px; border-radius: 50%;
  background: var(--cor-ciano);
  box-shadow: 0 0 10px var(--cor-ciano);
  animation: particula-sobe 6s linear infinite;
  opacity: 0;
}
.vazio__particula:nth-child(2n) {
  background: var(--cor-acento);
  box-shadow: 0 0 10px var(--cor-acento);
}
.vazio__particula:nth-child(1) { left: 12%; animation-duration: 6.5s; animation-delay: 0s; }
.vazio__particula:nth-child(2) { left: 28%; animation-duration: 5.2s; animation-delay: 1.4s; }
.vazio__particula:nth-child(3) { left: 45%; animation-duration: 7.8s; animation-delay: 0.6s; }
.vazio__particula:nth-child(4) { left: 61%; animation-duration: 5.8s; animation-delay: 2.2s; }
.vazio__particula:nth-child(5) { left: 76%; animation-duration: 7.1s; animation-delay: 1.1s; }
.vazio__particula:nth-child(6) { left: 90%; animation-duration: 6.2s; animation-delay: 2.8s; }

/* ============================================================
 * KEYFRAMES — catálogo fechado (§1.6)
 * ============================================================ */
@keyframes pulso-iniciando {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.55; }
}
@keyframes pulso-atencao {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.7; }
}
@keyframes brilho-passante {
  0%   { left: -80%; }
  40%  { left: 120%; }
  100% { left: 120%; }
}
@keyframes cursor-pisca {
  0%, 100% { opacity: 1; }
  50% { opacity: 0; }
}
@keyframes toast-entra {
  from { transform: translateY(8px); opacity: 0; }
  to   { transform: translateY(0); opacity: 1; }
}
@keyframes contagem-toast {
  from { width: 100%; }
  to   { width: 0; }
}
@keyframes esqueleto-respira {
  0%, 100% { opacity: 0.45; }
  50% { opacity: 0.85; }
}
@keyframes particula-sobe {
  0%   { transform: translateY(0); opacity: 0; }
  10%  { opacity: 0.9; }
  90%  { opacity: 0.15; }
  100% { transform: translateY(-320px); opacity: 0; }
}
@keyframes dado-flash {
  0%   { color: var(--cor-ciano); text-shadow: var(--glow-saudavel); }
  100% { color: var(--cor-texto-suave); text-shadow: none; }
}

/* ============================================================
 * RESPONSIVO — 1366 é a tela de referência; sem rolagem lateral
 * ============================================================ */
@media (max-width: 1100px) {
  .grade-nova { grid-template-columns: 1fr; }
  .grade-nova__console { position: static; }
  .home-grafico { grid-template-columns: 1fr; }
  .home-grafico__resumo { grid-template-columns: 1fr 1fr; grid-template-rows: none; }
  .home-col-telefone,
  .home-col-servicos { display: none; }
  .tabela-frota th:nth-child(2) { width: 30%; }
  .tabela-frota th:nth-child(4) { width: 30%; }
  .tabela-frota th:nth-child(5) { width: 14%; }
  .tabela-frota th:nth-child(6) { width: 15%; }
  .tabela-frota th:nth-child(8) { width: 11%; }
}

@media (max-width: 900px) {
  .grade-frota { grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }
  .grade-unidade > .col-3,
  .grade-unidade > .col-4,
  .grade-unidade > .col-5,
  .grade-unidade > .col-7 { grid-column: span 12; }
  .grade-acoes { grid-template-columns: repeat(2, 1fr); }
  .unidade-operacao { grid-template-columns: 1fr; }
  .unidade-log-operacional { display: block; min-height: 0; height: auto; }
  .unidade-log-operacional .unidade-logs__corpo { display: block; height: 54vh; min-height: 340px; max-height: 54vh; }
  .unidade-logs--completa { display: block; min-height: 0; height: auto; }
  .unidade-logs--completa .unidade-logs__corpo { display: block; height: 54vh; min-height: 340px; max-height: 54vh; }
  .unidade-configuracao { grid-template-columns: 1fr; }
  .unidade-planos { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 720px) {
  .sidebar {
    width: min(82vw, 280px) !important;
    transform: translateX(calc(-100% + 52px));
    transition: transform .25s cubic-bezier(0.4, 0, 0.2, 1) !important;
    box-shadow: 6px 0 22px rgba(0,0,0,.34);
  }
  .sidebar[data-aberto="true"] { transform: translateX(0); }
  .sidebar[data-aberto="false"] {
    background: transparent !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
    border-right: 0 !important;
    box-shadow: none;
    overflow: visible !important;
    pointer-events: none;
  }
  .sidebar[data-aberto="false"] > nav,
  .sidebar[data-aberto="false"] > div:not(.sidebar__cabeca) { display: none !important; }
  .sidebar[data-aberto="false"] .sidebar__alternar { pointer-events: auto; }
  .sidebar__cabeca { min-height: 56px; }
  .sidebar__item { min-height: 44px; }
  .sidebar__alternar {
    position: absolute !important;
    left: auto;
    right: -8px !important;
    top: 8px !important;
    transform: none !important;
    z-index: 650;
    width: 44px;
    height: 44px;
    background: var(--cor-fundo-vidro) !important;
  }
  .sidebar__fundo {
    display: block;
    position: fixed;
    inset: 0;
    z-index: 550;
    width: 100%;
    height: 100%;
    padding: 0;
    border: 0;
    background: rgba(2, 7, 13, .68);
    cursor: pointer;
  }
  .topo,
  .conteudo { margin-left: 0 !important; max-width: none !important; }
  .topo,
  .conteudo { width: 100% !important; }
  .topo {
    flex-wrap: wrap;
    min-height: 56px;
    padding-block: 10px;
    row-gap: 10px;
    padding-left: 64px;
  }
  .topo__saude { order: 3; width: 100%; margin-right: 0; }
  .topo__cta { margin-left: auto; }
  .topo__cta.btn-vidro--primario { padding: 12px 22px; }
  .conteudo { padding: 68px 16px 16px; }
  .home-cabeca { align-items: flex-start; flex-direction: column; gap: 10px; }
  .home-cabeca__lado { width: 100%; flex-wrap: wrap; justify-content: flex-start; }
  .home-status-torre__gatilho { max-width: 100%; }
  .home-status-torre__conteudo { right: auto; left: 0; width: min(360px, calc(100vw - 32px)); }
  .home-unidades__cabeca { align-items: flex-start; }
  .home-unidades__filtros { align-items: stretch; }
  .home-unidades__chips { order: 3; }
  .home-lote { align-items: flex-start; }
  .home-lote__limpar { margin-left: 0; }
  .tabela-frota .home-col-trafego { display: none; }
  .tabela-frota th, .tabela-frota td { padding: 9px 8px; }
  .tabela-frota th:nth-child(1) { width: 8%; }
  .tabela-frota th:nth-child(2) { width: 33%; }
  .tabela-frota th:nth-child(4) { width: 34%; }
  .tabela-frota th:nth-child(5) { width: 13%; }
  .tabela-frota th:nth-child(8) { width: 20%; }
  .home-unidade-celula { gap: 7px; }
  .home-unidade-celula__nome { font-size: .7rem; }
  .home-atividade__linha { gap: 4px; font-size: .6rem; }
  .home-abrir-unidade { padding-inline: 7px; font-size: .62rem; }
  .home-mais-acoes { width: 28px; }
  .unidade-cabeca--nova { flex-direction: column; gap: 10px; }
  .unidade-cabeca__operacao { width: 100%; justify-content: flex-start; flex-wrap: wrap; }
  .unidade-acoes { align-self: flex-start; }
  .unidade-abas {
    margin-inline: -2px;
    scroll-snap-type: x proximity;
    -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 22px), transparent 100%);
    mask-image: linear-gradient(90deg, #000 calc(100% - 22px), transparent 100%);
  }
  .unidade-abas__item { min-height: 40px; padding-inline: 10px; }
  .unidade-abas__item { scroll-snap-align: start; }
  .unidade-secao__cabeca { align-items: flex-start; flex-direction: column; gap: 6px; }
  .unidade-secao__meta { text-align: left; }
  .unidade-operacao__coluna .cartao-vidro { min-height: 0; }
  .unidade-cerebro-campos,
  .unidade-identidade-campos,
  .unidade-politica { grid-template-columns: minmax(0, 1fr) !important; align-items: stretch !important; }
  .unidade-planos { grid-template-columns: minmax(0, 1fr); }
  .unidade-configuracao__acao { align-items: stretch; flex-direction: column; }
  .unidade-configuracao__acao .btn-vidro { width: 100%; }
  .unidade-politica__acao { width: 100%; min-height: 44px; }
  .unidade-logs__cabeca { align-items: stretch; flex-direction: column; gap: 10px; }
  .unidade-log-operacional .unidade-log-operacional__cabeca { display: flex; flex-direction: column; align-items: stretch; gap: 10px; }
  .unidade-logs__busca { width: 100%; }
  .unidade-logs__corpo { min-height: 360px; max-height: 56vh; }
  .unidade-logs__controles { width: 100%; }
  .unidade-logs__controles .terminal__controle { min-height: 38px; }
  .unidade-log-operacional .unidade-logs__corpo { min-height: 340px; max-height: 54vh; }
  .ajuda-torre { align-items: flex-start; }
  .ajuda-torre__gatilho { max-width: 100%; }
  .ajuda-contextual { align-items: flex-start; flex-direction: column; gap: 4px; }
  .frota-grafico,
  .cockpit__resumo,
  .cockpit__logs { min-width: 0 !important; width: 100%; }
  .grade-peca { grid-template-columns: minmax(0, 1fr) !important; }
  .grade-zap,
  [data-screen-label="Configurações"] [style*="display:grid"],
  [data-screen-label="Cérebro"] [style*="display:grid"],
  [data-screen-label="Backup"] [style*="display:grid"] { grid-template-columns: minmax(0, 1fr) !important; }
  .linha-zap-autorizado { grid-template-columns: minmax(0, 1fr) !important; }
  .faixa-resumo { grid-template-columns: 1fr 1fr; gap: 12px; }
  .grade-frota { grid-template-columns: 1fr; }
  .grade-acoes { grid-template-columns: 1fr; }
  .vazio__titulo { font-size: 1.9rem; }
  .veu-modal--saida { padding: 12px; }
  .gaveta-saida { width: 100%; height: calc(100dvh - 24px); max-height: calc(100dvh - 24px); padding: 10px; }
  .gaveta-saida__fechar { right: 10px; }
}

@media (max-width: 420px) {
  .conteudo { padding: 68px 12px 12px; }
  .home-cabeca__titulo { font-size: 1.3rem; }
  .home-cabeca__titulo-linha { align-items: flex-start; flex-direction: column; gap: 5px; }
  .home-unidades__cabeca { flex-direction: column; }
  .home-grafico__resumo { grid-template-columns: 1fr 1fr; }
  .home-grafico__cabeca { gap: 7px; }
  .home-grafico__filtro.campo__entrada { flex-basis: 100%; width: 100%; margin-left: 0; }
  .home-unidades__busca { flex-basis: 100%; }
  .cartao-vidro,
  .cartao-unidade { padding: 16px; }
  .faixa-resumo:not(.home-resumo) { grid-template-columns: 1fr; }
  .home-resumo { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .home-resumo .bloco-stat { min-height: 70px; padding: 10px 11px; }
  .unidade-cabeca__linha { gap: 8px; }
  .unidade-cabeca--nova .unidade-cabeca__nome { font-size: 1.35rem; }
  .unidade-cabeca--nova .unidade-cabeca__ids { line-height: 1.55; }
  .unidade-status-torre__gatilho { max-width: calc(100vw - 130px); }
  .unidade-status-torre__tempo { display: none; }
  .unidade-acoes__menu { right: auto; left: 0; width: min(290px, calc(100vw - 32px)); }
  .painel-linhas__item { align-items: flex-start; flex-wrap: wrap; }
  .painel-linhas__info { width: 100%; margin-left: 20px; text-align: left; }
  .home-acoes-unidade { gap: 3px; }
  .home-abrir-unidade {
    display: inline-grid;
    width: 26px;
    min-height: 28px;
    place-items: center;
    padding: 0;
    font-size: 0;
  }
  .home-abrir-unidade::after { content: '↗'; font-size: .75rem; }
  .home-mais-acoes { width: 26px; min-height: 28px; font-size: .75rem; }
  .topo__cta.btn-vidro--primario { padding-inline: 14px; font-size: 0.76rem; }
  .terminal__controles { width: 100%; }
  .terminal__controle { min-height: 36px; }
}

/* ============================================================
 * MOVIMENTO REDUZIDO — mata tudo
 * ============================================================ */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation: none !important;
    transition: none !important;
  }
}


    @keyframes login-treme {
      0%, 100% { transform: translateX(0); }
      20% { transform: translateX(-8px); }
      40% { transform: translateX(8px); }
      60% { transform: translateX(-5px); }
      80% { transform: translateX(5px); }
    }
  
