/* ═══════════════════════════════════════════════════════════════════
   tema-v2.css — Base visual nova do Apollo / Atlas   [v3.78.0 · layout v3.79.0]
   Referência: protótipo "Apollo 1b.dc.html" (design_handoff_apollo_atlas_redesign)
   Sistema de origem: apollo-redeneutra v3.77.0

   COMO FUNCIONA
   • Carregar DEPOIS de components.css.
   • Tudo aqui vale só com a classe `ui-v2` no <body> — é a chave para ligar o
     visual novo. Sem a classe, o sistema fica 100% como na v3.77.0.
   • Não muda nenhum HTML, id, data-action nem JavaScript: só variáveis e a
     aparência das classes que já existem.
   • Mantém as variáveis atuais (--blue, --accent, --av-*, --faixa-*): as telas
     que usam `var(--x)` em style inline acompanham sozinhas.
   ═══════════════════════════════════════════════════════════════════ */

/* ─── 1. Tokens — tema claro ─────────────────────────────────────── */
body.ui-v2 {
  /* Marca */
  --blue:          #003087;   /* primário: botões, links, seleção */
  --blue-mid:      #0047b3;
  --blue-light:    #e8f0fb;
  --blue-soft:     #eef4ff;   /* hover de linha/ícone */
  --blue-line:     #b9cbec;   /* borda de botão secundário */

  --accent:        #E8A33D;   /* Apollo — barra do logo, destaques */
  --accent-forte:  #C97F14;
  --accent-suave:  #fdf3e2;

  /* Superfícies */
  --bg:            #e9edf4;   /* [v3.114.0] um tom mais escuro: o cartão branco destaca como no escuro */
  --white:         #ffffff;   /* card / modal */
  --surface-2:     #f8fafd;   /* cabeçalho de tabela, caixas internas */
  --border:        #dce3ef;   /* inputs */
  --border-soft:   #e5eaf4;   /* cards */
  --divider:       #eef1f7;   /* linhas de tabela */

  /* Texto */
  --text:          #1a2340;
  --text-2:        #3d4a6b;
  --muted:         #6b7a99;
  --subtle:        #8d9ab5;   /* rótulos em caixa-alta */

  /* Estados */
  --green:         #00A651;  --green-tx: #00753a;  --green-light:  #e6f7ee;  --green-line: #9fdcbd;
  --orange:        #E8421A;  --red-tx:   #b2320f;  --orange-light: #fdeee9;  --red-line:   #f0b3a1;
  --warn-tx:       #8a5a06;  --warn-bg:  #fdf3e2;  --warn-line:    #e8c88a;
  --purple-tx:     #5a3fa0;  --purple-bg:#f3f0fb;

  /* V.tal (selo amarelo validado) */
  --vtal-tx:       #854d0e;  --vtal-bg:  #fef08a;  --vtal-line:    #eab308;

  /* Forma */
  --radius:        12px;      /* card */
  --radius-md:     9px;       /* botão, input */
  --radius-sm:     7px;       /* botão pequeno, chip */
  --radius-pill:   20px;      /* badge */

  --shadow-sm:     0 1px 3px rgba(0,48,135,.06);
  --shadow:        0 4px 16px rgba(0,48,135,.08);
  --shadow-lg:     0 24px 60px rgba(16,26,48,.30);   /* modal */
  --shadow-pop:    0 14px 34px rgba(16,26,48,.16);   /* dropdown */
  --overlay:       rgba(16,26,48,.45);

  /* Tipografia */
  --font:          'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  --font-mono:     'IBM Plex Mono', Consolas, 'Cascadia Mono', ui-monospace, SFMono-Regular, Menlo, 'Liberation Mono', monospace;
  --fs-xs: 10.5px;  --fs-sm: 11.5px;  --fs-base: 12.5px;  --fs-md: 13px;  --fs-lg: 13.5px;  --fs-xl: 15.5px;  --fs-title: 18px;

  /* Cor do botão primário e do texto sobre ele (o escuro troca) */
  --primary:       var(--blue);
  --primary-hover: var(--blue-mid);
  --on-primary:    #ffffff;
  --focus-ring:    0 0 0 3px rgba(0,48,135,.12);
}

/* Atlas — só o acento muda */
body.ui-v2.sistema-atlas {
  --accent:        #17A2A2;
  --accent-forte:  #0F7A7A;
  --accent-suave:  #e4f6f6;
}

/* ─── 2. Tokens — tema escuro ────────────────────────────────────── */
/* O primário no escuro é o ACENTO do sistema (laranja no Apollo, verde-água no
   Atlas) com texto escuro — o azul-marinho some no fundo escuro. */
body.ui-v2.dark-mode {
  --bg:            #0f131c;
  --white:         #171c27;
  --surface-2:     #1d2330;
  --border:        #2c3446;
  --border-soft:   #262d3c;
  --divider:       #222938;

  --text:          #e6eaf2;
  --text-2:        #c3cadb;
  --muted:         #9aa4b8;
  --subtle:        #7d879c;

  --blue:          #E8A33D;   /* links e textos em destaque = acento */
  --blue-mid:      #f0b65e;
  --blue-light:    #2a2214;
  --blue-soft:     #241d12;
  --blue-line:     #6b5226;

  --primary:       #E8A33D;
  --primary-hover: #f0b65e;
  --on-primary:    #1f1402;
  --focus-ring:    0 0 0 3px rgba(232,163,61,.22);

  --green-tx: #6fe39b;  --green-light: #0e2c1c;  --green-line: #248055;
  --red-tx:   #ff9d9a;  --orange-light:#2e1417;  --red-line:   #8a3136;
  --warn-tx:  #f5cf72;  --warn-bg:     #2b2110;  --warn-line:  #856520;
  --purple-tx:#c7b6f5;  --purple-bg:   #221b36;
  --vtal-tx:  #fde68a;  --vtal-bg:     #3a2f0a;  --vtal-line:  #a1850f;

  --shadow-sm:     0 1px 3px rgba(0,0,0,.35);
  --shadow:        0 4px 16px rgba(0,0,0,.45);
  --shadow-pop:    0 14px 34px rgba(0,0,0,.55);
  --overlay:       rgba(0,0,0,.6);
}
body.ui-v2.dark-mode.sistema-atlas {
  --blue:          #1fb5a8;
  --blue-mid:      #3cc9bc;
  --blue-light:    #0f2a28;
  --blue-soft:     #0d2422;
  --blue-line:     #1f6660;
  --primary:       #1fb5a8;
  --primary-hover: #3cc9bc;
  --on-primary:    #04221f;
  --focus-ring:    0 0 0 3px rgba(31,181,168,.22);
}

/* ─── 3. Base ────────────────────────────────────────────────────── */
body.ui-v2 { font-family: var(--font); color: var(--text); background: var(--bg); -webkit-font-smoothing: antialiased; }
body.ui-v2 a { color: var(--primary); }
body.ui-v2 a:hover { color: var(--primary-hover); }
body.ui-v2 code, body.ui-v2 .mono { font-family: var(--font-mono); }

/* ─── 4. Página ──────────────────────────────────────────────────── */
body.ui-v2 .content-inner { padding: 18px 24px 28px; max-width: none; }
body.ui-v2 .content-title { font-size: var(--fs-title); font-weight: 700; letter-spacing: -.2px; color: var(--text); margin-bottom: 4px; }
body.ui-v2 .content-title::before { width: 4px; height: 18px; background: var(--accent); }
body.ui-v2 .content-sub { font-size: var(--fs-base); color: var(--muted); margin-bottom: 14px; text-wrap: pretty; }

/* ─── 5. Card ────────────────────────────────────────────────────── */
body.ui-v2 .section-card { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); padding: 16px 18px; margin-bottom: 14px; box-shadow: none; }
body.ui-v2 .section-card-title { font-size: var(--fs-lg); font-weight: 700; color: var(--text); }
body.ui-v2.dark-mode .section-card { background: var(--white); }

/* ─── 6. Botões ──────────────────────────────────────────────────── */
body.ui-v2 .btn-sm {
  padding: 8px 14px; border-radius: var(--radius-md); border: 1px solid transparent;
  font-family: var(--font); font-size: var(--fs-base); font-weight: 600; line-height: 1.2;
  display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; transition: background .15s, border-color .15s, color .15s;
}
body.ui-v2 .btn-sm:focus-visible { outline: none; box-shadow: var(--focus-ring); }
body.ui-v2 .btn-sm:disabled { opacity: .45; cursor: not-allowed; }

body.ui-v2 .btn-sm-primary { background: var(--primary); color: var(--on-primary); font-weight: 700; }
body.ui-v2 .btn-sm-primary:hover { background: var(--primary-hover); }

/* secundário (antes cinza) → branco com contorno azul */
body.ui-v2 .btn-sm-ghost { background: var(--white); color: var(--primary); border-color: var(--border); }
body.ui-v2 .btn-sm-ghost:hover { background: var(--blue-soft); border-color: var(--blue-line); color: var(--primary); }

body.ui-v2 .btn-sm-danger { background: var(--white); color: var(--red-tx); border-color: var(--red-line); }
body.ui-v2 .btn-sm-danger:hover { background: var(--orange-light); color: var(--red-tx); }

/* NOVO — botão-ícone 30×30 das colunas "Ações" (lápis, chave, lixeira…).
   Usar com title="" para o nome aparecer ao passar o mouse. */
body.ui-v2 .btn-ico {
  width: 30px; height: 30px; border-radius: 8px; border: 1px solid var(--border); background: var(--white);
  color: var(--primary); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; flex-shrink: 0; padding: 0;
}
body.ui-v2 .btn-ico:hover { background: var(--blue-soft); border-color: var(--blue-line); }
body.ui-v2 .btn-ico svg { width: 15px; height: 15px; }
body.ui-v2 .btn-ico.danger { color: var(--red-tx); border-color: var(--red-line); }
body.ui-v2 .btn-ico.danger:hover { background: var(--orange-light); }
body.ui-v2 .btn-ico.warn { color: var(--warn-tx); border-color: var(--warn-line); background: var(--warn-bg); cursor: default; }
body.ui-v2 .acoes { display: flex; gap: 6px; flex-wrap: nowrap; }

/* ─── 7. Formulários ─────────────────────────────────────────────── */
body.ui-v2 .input-label,
body.ui-v2 .form-group label { font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); margin-bottom: 6px; }
body.ui-v2 .input-field,
body.ui-v2 .field-input,
body.ui-v2 .form-group input {
  background: var(--white); border: 1.5px solid var(--border); border-radius: var(--radius-md);
  padding: 9px 12px; font-size: var(--fs-md); color: var(--text); font-family: var(--font);
}
body.ui-v2 .input-field:focus,
body.ui-v2 .field-input:focus,
body.ui-v2 .form-group input:focus { border-color: var(--primary); background: var(--white); box-shadow: var(--focus-ring); }
body.ui-v2 .input-field::placeholder, body.ui-v2 .field-input::placeholder { color: var(--subtle); }
body.ui-v2 .field-select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%238d9ab5' stroke-width='1.5'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 12px center; padding-right: 32px;
}
body.ui-v2.dark-mode .field-input, body.ui-v2.dark-mode .field-select, body.ui-v2.dark-mode .form-group input { background: var(--surface-2); border-color: var(--border); color: var(--text); }

/* IPs, seriais, protocolos, datas, CNPJ */
body.ui-v2 .mono, body.ui-v2 td.mono, body.ui-v2 input.mono { font-family: var(--font-mono); font-size: var(--fs-base); }

/* ─── 8. Barra de filtros ────────────────────────────────────────── */
body.ui-v2 .filter-bar { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); padding: 12px 16px; gap: 10px; margin-bottom: 14px; }

/* ─── 9. Tabelas ─────────────────────────────────────────────────── */
body.ui-v2 .tbl-wrap { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); overflow-x: auto; }
body.ui-v2 table { border-collapse: collapse; width: 100%; }
body.ui-v2 table thead th:not(.rel-th) {
  background: var(--surface-2); color: var(--subtle); border-bottom: 1px solid var(--border-soft);
  font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase;
  padding: 10px 14px; text-align: left; white-space: nowrap;
}
body.ui-v2 table tbody td { padding: 11px 14px; border-top: 1px solid var(--divider); font-size: var(--fs-base); color: var(--text); vertical-align: middle; }
body.ui-v2 table tbody tr:hover td { background: var(--surface-2); }
body.ui-v2.dark-mode table thead th:not(.rel-th) { background: var(--surface-2); color: var(--subtle); }
/* coluna de ações com largura fixa, ícones à esquerda */
body.ui-v2 table th.col-acoes, body.ui-v2 table td.col-acoes { width: 1%; white-space: nowrap; text-align: left; }

/* ─── 10. Badges ─────────────────────────────────────────────────── */
body.ui-v2 .badge-ativo, body.ui-v2 .badge-inativo, body.ui-v2 .badge-master,
body.ui-v2 .badge-possui, body.ui-v2 .badge-sem, body.ui-v2 .badge-proj,
body.ui-v2 .badge {
  display: inline-flex; align-items: center; gap: 5px; font-size: var(--fs-xs); font-weight: 700;
  padding: 3px 9px; border-radius: var(--radius-pill); white-space: nowrap; border: 0;
}
body.ui-v2 .badge-ativo, body.ui-v2 .badge-possui { background: var(--green-light); color: var(--green-tx); }
body.ui-v2 .badge-inativo { background: var(--surface-2); color: var(--muted); }
body.ui-v2 .badge-master, body.ui-v2 .badge-proj { background: var(--blue-light); color: var(--primary); }
body.ui-v2 .badge-sem { background: var(--orange-light); color: var(--red-tx); }
/* NOVOS */
body.ui-v2 .badge-alerta { background: var(--warn-bg); color: var(--warn-tx); }
body.ui-v2 .badge-info   { background: var(--blue-light); color: var(--blue-mid); }
body.ui-v2 .badge-roxo   { background: var(--purple-bg); color: var(--purple-tx); }
body.ui-v2 .badge-vtal   { background: var(--vtal-bg); color: var(--vtal-tx); border: 1px solid var(--vtal-line); }

/* ─── 11. Abas segmentadas ───────────────────────────────────────── */
/* NOVO — .seg > .seg-item(.active). Usado nas abas internas (Integrações,
   KMZ, Backup, Ordens…). */
body.ui-v2 .seg { display: inline-flex; gap: 3px; flex-wrap: wrap; background: var(--bg); border: 1px solid var(--border-soft); border-radius: var(--radius-md); padding: 3px; }
body.ui-v2 .seg-item { padding: 7px 13px; border-radius: var(--radius-sm); font-size: 12px; font-weight: 600; color: var(--muted); cursor: pointer; white-space: nowrap; border: 0; background: none; font-family: var(--font); }
body.ui-v2 .seg-item:hover { color: var(--text); }
body.ui-v2 .seg-item.active { background: var(--white); color: var(--primary); font-weight: 700; box-shadow: 0 1px 3px rgba(0,48,135,.10); }

/* ─── 12. Avisos ─────────────────────────────────────────────────── */
/* NOVO — faixa de aviso, usa as variáveis --av-* que já existem. */
body.ui-v2 .aviso { border-radius: var(--radius-md); padding: 9px 12px; font-size: var(--fs-base); line-height: 1.55; border: 1px solid; text-wrap: pretty; }
body.ui-v2 .aviso.info   { background: var(--av-info-bg);   border-color: var(--av-info-bd);   color: var(--av-info-tx); }
body.ui-v2 .aviso.ok     { background: var(--av-ok-bg);     border-color: var(--av-ok-bd);     color: var(--av-ok-tx); }
body.ui-v2 .aviso.alerta { background: var(--av-alerta-bg); border-color: var(--av-alerta-bd); color: var(--av-alerta-tx); }
body.ui-v2 .aviso.erro   { background: var(--av-erro-bg);   border-color: var(--av-erro-bd);   color: var(--av-erro-tx); }

/* ─── 13. Modal ──────────────────────────────────────────────────── */
body.ui-v2 .modal-overlay { background: var(--overlay); padding: 24px; }
body.ui-v2 .modal { background: var(--white); border-radius: 14px; padding: 0; box-shadow: var(--shadow-lg); display: flex; flex-direction: column; }
body.ui-v2 .modal-title { font-size: var(--fs-xl); font-weight: 700; letter-spacing: -.2px; color: var(--text); margin: 0; padding: 16px 20px; border-bottom: 1px solid var(--divider); }
body.ui-v2 .modal > :not(.modal-title):not(.modal-close):not(.modal-actions) { padding-left: 20px; padding-right: 20px; }
body.ui-v2 .modal-actions, body.ui-v2 .modal-footer { display: flex; justify-content: flex-end; gap: 9px; padding: 14px 20px; border-top: 1px solid var(--divider); margin-top: 14px; }
body.ui-v2 .modal-close { color: var(--subtle); }
body.ui-v2.dark-mode .modal, body.ui-v2.dark-mode .reserva-modal { background: var(--white); }

/* ─── 14. Dropdown (menu de opções) ──────────────────────────────── */
body.ui-v2 .nav-dropdown-menu,
body.ui-v2 .servicos-menu { background: var(--white); border: 1px solid var(--border); border-radius: 10px; box-shadow: var(--shadow-pop); padding: 5px; }
body.ui-v2 .nav-dropdown-item,
body.ui-v2 .servicos-menu-item { border-radius: 7px; font-size: var(--fs-md); color: var(--text); }
body.ui-v2 .nav-dropdown-item:hover, body.ui-v2 .servicos-menu-item:hover { background: var(--blue-soft); color: var(--primary); }
body.ui-v2 .nav-dropdown-item.active { background: var(--blue-light); color: var(--primary); font-weight: 700; }
body.ui-v2 .servicos-menu-item + .servicos-menu-item { border-top: 0; }

/* ─── 15. Card de cliente (lista) ────────────────────────────────── */
body.ui-v2 .cli-card { border: 1px solid var(--border-soft); border-radius: var(--radius); }
body.ui-v2 .cli-card:hover { border-color: var(--blue-line); }
body.ui-v2.dark-mode .cli-card { background: var(--white); }
body.ui-v2.dark-mode .cli-card-header { background: var(--surface-2); }

/* ─── 16. Barra superior (antes do layout novo do passo 3) ───────── */
body.ui-v2 .topbar { background: var(--white); border-bottom: 1px solid var(--border-soft); box-shadow: none; }
body.ui-v2 .sidebar { background: var(--white); border-right: 1px solid var(--border-soft); }
body.ui-v2 .sidebar::-webkit-scrollbar-thumb { background: var(--border); }

/* ─── 17. Login ──────────────────────────────────────────────────── */
body.ui-v2 .btn-login { background: var(--primary); color: var(--on-primary); border-radius: var(--radius-md); font-weight: 700; box-shadow: none; }
body.ui-v2 .btn-login:hover { background: var(--primary-hover); transform: none; box-shadow: none; }
body.ui-v2.dark-mode #page-login { background: var(--bg); }
body.ui-v2.dark-mode .login-card { background: var(--white); }

/* ─── 18. Sinal (mantém as cores de faixa do servidor) ───────────── */
body.ui-v2 .csinal-card { background: var(--white); border: 1px solid var(--border-soft); border-radius: 10px; }
body.ui-v2 .csinal-dbm { font-family: var(--font-mono); font-weight: 600; letter-spacing: -.3px; }
body.ui-v2 .csinal-qual, body.ui-v2 .sinal-badge { border-radius: var(--radius-pill); font-size: var(--fs-xs); }

/* ─── 19. Utilitários ────────────────────────────────────────────── */
body.ui-v2 .rotulo { font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); }
body.ui-v2 .texto-ajuda { font-size: var(--fs-sm); color: var(--muted); line-height: 1.55; text-wrap: pretty; }
body.ui-v2 .caixa-interna { background: var(--surface-2); border: 1px solid var(--divider); border-radius: 10px; padding: 12px 14px; }
body.ui-v2 .kpi { background: var(--surface-2); border-radius: var(--radius-md); padding: 10px 12px; }
body.ui-v2 .kpi-val { font-family: var(--font-mono); font-size: 18px; font-weight: 600; margin-top: 4px; color: var(--text); }


/* ═══════════════════════════════════════════════════════════════════
   PASSO 3 — LAYOUT  [v3.79.0]
   Desktop (≥ 769 px): a barra superior vira MENU LATERAL fixo de 232 px.
   Os mesmos elementos, ids e botões de hoje — só a posição muda:
     • logo (e troca de sistema) no topo;
     • cada .nav-dropdown vira um GRUPO com título em caixa-alta e os itens
       listados embaixo (abre/fecha no título; o grupo da tela aberta fica
       sempre aberto);
     • usuário, senha, notificações, tema e Sair no rodapé.
   Mobile (≤ 768 px): continua a barra + hambúrguer atuais, só com as cores novas.
   ═══════════════════════════════════════════════════════════════════ */
@media (min-width: 769px) {
  body.ui-v2 #page-app { flex-direction: row; }

  body.ui-v2 .topbar {
    width: 232px; flex: 0 0 232px; height: var(--vh100);
    flex-direction: column; align-items: stretch; justify-content: flex-start;
    padding: 14px 10px 12px; gap: 10px; overflow: hidden;
    border-bottom: 0; border-right: 1px solid var(--border-soft); box-shadow: none;
  }
  body.ui-v2 .topbar-left { gap: 8px; padding: 0 4px 12px; border-bottom: 1px solid var(--divider); flex-wrap: wrap; }
  body.ui-v2 .topbar-left::before { content: ''; width: 5px; height: 26px; border-radius: 3px; background: var(--accent); flex-shrink: 0; }
  body.ui-v2 .topbar-logo { flex-wrap: wrap; row-gap: 6px; min-width: 0; }
  body.ui-v2 .topbar-logo-img { height: 28px; max-width: 150px; }
  body.ui-v2 .topbar-logo-sep { display: none; }
  body.ui-v2 .topbar-logo-provedor { height: 16px; max-width: 120px; opacity: .85; }

  body.ui-v2 .topbar-right {
    flex: 1; min-height: 0; margin: 0; padding: 0;
    display: grid; grid-template-columns: auto auto auto minmax(0,1fr); grid-template-rows: minmax(0,1fr) auto auto;
    align-items: center; gap: 8px 6px;
  }
  body.ui-v2 #nav-menu { grid-column: 1 / -1; grid-row: 1; align-self: stretch; flex-direction: column; align-items: stretch; gap: 1px; overflow-y: auto; overflow-x: hidden; padding-right: 2px; min-height: 0; }
  body.ui-v2 #nav-menu { scrollbar-width: thin; scrollbar-color: var(--border) transparent; }
  body.ui-v2 #nav-menu::-webkit-scrollbar { width: 6px; }
  body.ui-v2 #nav-menu::-webkit-scrollbar-track { background: transparent; }
  body.ui-v2 #nav-menu::-webkit-scrollbar-thumb { background: var(--border); border-radius: 3px; }
  body.ui-v2 #nav-sep { display: none !important; }
  body.ui-v2 .topbar-user { grid-column: 1 / -1; grid-row: 2; padding: 10px 6px 0; border-top: 1px solid var(--divider); font-size: var(--fs-base); font-weight: 600; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

  /* grupo */
  body.ui-v2 .nav-dropdown { position: static; }
  body.ui-v2 .nav-dropdown-btn {
    width: 100%; justify-content: space-between; padding: 12px 8px 5px; border-radius: 7px;
    background: none !important; box-shadow: none !important;
    font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle);
  }
  body.ui-v2 .nav-dropdown-btn:hover { color: var(--text); }
  body.ui-v2 .nav-dropdown-btn.active { color: var(--primary); }
  body.ui-v2 .nav-dropdown .caret { font-size: 9px; transform: rotate(-90deg); }
  body.ui-v2 .nav-dropdown.v2-aberto .caret,
  body.ui-v2 .nav-dropdown:has(.nav-dropdown-item.active) .caret { transform: none; }
  /* botão direto (sem submenu, ex.: Atlas › Início) = item */
  body.ui-v2 .nav-dropdown-btn[data-section] {
    text-transform: none; letter-spacing: 0; font-size: var(--fs-md); font-weight: 600; color: var(--text-2);
    padding: 8px 10px; margin-top: 6px; justify-content: flex-start;
  }
  body.ui-v2 .nav-dropdown-btn[data-section]:hover { background: var(--blue-soft) !important; color: var(--primary); }
  body.ui-v2 .nav-dropdown-btn[data-section].active { background: var(--blue-light) !important; color: var(--primary); font-weight: 700; box-shadow: inset 3px 0 0 var(--accent) !important; }

  /* itens do grupo — ignora o .open do popover antigo */
  body.ui-v2 .nav-dropdown .nav-dropdown-menu {
    display: none; position: static; min-width: 0; padding: 0 0 4px; margin: 0;
    background: transparent; border: 0; box-shadow: none; flex-direction: column; gap: 1px;
  }
  body.ui-v2 .nav-dropdown.v2-aberto .nav-dropdown-menu,
  body.ui-v2 .nav-dropdown:has(.nav-dropdown-item.active) .nav-dropdown-menu { display: flex; }
  body.ui-v2 .nav-dropdown-item {
    padding: 7px 10px; border-radius: 7px; font-size: var(--fs-md); font-weight: 500; color: var(--text-2);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  }
  body.ui-v2 .nav-dropdown-item:hover { background: var(--blue-soft); color: var(--primary); }
  body.ui-v2 .nav-dropdown-item.active { background: var(--blue-light); color: var(--primary); font-weight: 700; box-shadow: inset 3px 0 0 var(--accent); }

  /* rodapé: senha · sino · tema · sair na mesma linha */
  body.ui-v2 .topbar-right > .btn-logout,
  body.ui-v2 .topbar-right > .btn-sino,
  body.ui-v2 .topbar-right > .btn-dark-mode { grid-row: 3; height: 32px; padding: 0 10px; border-radius: 8px; border: 1px solid var(--border); background: var(--white); font-size: 12px; font-weight: 600; color: var(--text-2); display: inline-flex; align-items: center; justify-content: center; }
  body.ui-v2 .topbar-right > .btn-sino, body.ui-v2 .topbar-right > .btn-dark-mode { width: 32px; padding: 0; font-size: 14px; }
  body.ui-v2 #btn-logout { justify-self: end; }
  body.ui-v2 #btn-logout:hover { color: var(--red-tx); border-color: var(--red-line); }
  body.ui-v2 .notif-panel { top: auto; bottom: 56px; left: 244px; right: auto; }

  /* área de conteúdo ocupa a altura toda (antes descontava os 58 px da barra) */
  body.ui-v2 .app-body { height: var(--vh100); }
  body.ui-v2 .content-page { height: var(--vh100); }
}

/* Mobile — mantém barra + hambúrguer, com as cores novas */
@media (max-width: 768px) {
  body.ui-v2 .topbar { box-shadow: inset 0 -3px 0 var(--accent); border-bottom: 1px solid var(--border-soft); }
  body.ui-v2 .mobile-nav-panel { background: var(--white); }
  body.ui-v2 .mob-nav-item { border-radius: 8px; font-size: var(--fs-md); color: var(--text-2); }
  body.ui-v2 .mob-nav-item:hover { background: var(--blue-soft); color: var(--primary); }
  body.ui-v2 .mob-nav-item.active { background: var(--blue-light); color: var(--primary); font-weight: 700; box-shadow: inset 3px 0 0 var(--accent); }
  body.ui-v2 .content-inner { padding: 14px 14px 22px; }
}


/* ═══════════════════════════════════════════════════════════════════
   PASSO 4a — INFORMAÇÕES E RELATÓRIOS  [v3.80.0]
   Dashboard, Dashboard Parceiro, Logs (OLT, RBX, Geogrid, Erros API),
   Status do servidor, Auditoria LGPD e Relatórios. Só CSS: as abas e os
   filtros continuam com os mesmos ids/data-cat e os mesmos binds.
   ═══════════════════════════════════════════════════════════════════ */
body.ui-v2 .section-card-header { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; padding-bottom: 12px; margin-bottom: 12px; border-bottom: 1px solid var(--divider); }
body.ui-v2 .section-card > .section-card-header:first-child { margin: -2px 0 12px; }

/* filtros */
body.ui-v2 .filter-group { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
body.ui-v2 .filter-label { font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); }
body.ui-v2 .filter-input {
  background: var(--white); border: 1.5px solid var(--border); border-radius: var(--radius-md);
  padding: 9px 12px; font-size: var(--fs-md); color: var(--text); font-family: var(--font); height: 40px; box-sizing: border-box; outline: none;
}
body.ui-v2 .filter-input:focus { border-color: var(--primary); box-shadow: var(--focus-ring); }
body.ui-v2 select.filter-input { appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%238d9ab5' stroke-width='1.5'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 12px center; padding-right: 32px; }
body.ui-v2 .filter-input[type="date"] { font-family: var(--font-mono); font-size: var(--fs-base); }
body.ui-v2.dark-mode .filter-input { background-color: var(--surface-2); }
body.ui-v2 .section-card .filter-bar { background: var(--surface-2); border-color: var(--divider); }
body.ui-v2 .filter-group .btn-sm { height: 40px; }

/* abas dos logs (estilo inline no HTML → !important só aqui) */
body.ui-v2 .log-olt-tab, body.ui-v2 .rbx-log-tab, body.ui-v2 .geo-log-tab {
  padding: 7px 13px !important; border: 0 !important; border-radius: var(--radius-sm) !important; margin: 0 !important;
  font-size: 12px !important; font-weight: 600 !important; color: var(--muted) !important; background: none !important; white-space: nowrap;
}
body.ui-v2 .log-olt-tab.active, body.ui-v2 .rbx-log-tab.active, body.ui-v2 .geo-log-tab.active {
  background: var(--white) !important; color: var(--primary) !important; font-weight: 700 !important; box-shadow: 0 1px 3px rgba(0,48,135,.10) !important;
}
body.ui-v2 div.v2-hx-log-olt-tab, body.ui-v2 div.v2-hx-rbx-log-tab, body.ui-v2 div.v2-hx-geo-log-tab {
  display: inline-flex !important; gap: 3px !important; flex-wrap: wrap; padding: 3px !important; margin-bottom: 14px !important;
  background: var(--bg); border: 1px solid var(--border-soft) !important; border-radius: var(--radius-md);
}

/* período do dashboard */
body.ui-v2 .periodo-btn { background: var(--white); color: var(--text-2); border: 1px solid var(--border); }
body.ui-v2 .periodo-btn:hover { background: var(--blue-soft); color: var(--primary); }
body.ui-v2 .periodo-btn.active { background: var(--primary); color: var(--on-primary); border-color: var(--primary); font-weight: 700; }

/* vazios, alertas e exportar */
body.ui-v2 .tbl-empty { padding: 26px 16px; text-align: center; font-size: var(--fs-base); color: var(--subtle); }
body.ui-v2 .modal-alert:not(:empty) { border-radius: var(--radius-md); padding: 9px 12px; font-size: var(--fs-base); }
body.ui-v2 #rel-exp-menu { border: 1px solid var(--border) !important; box-shadow: var(--shadow-pop) !important; padding: 5px; }
body.ui-v2 .btn-export-item { border-radius: 7px; font-size: var(--fs-md); color: var(--text); }
body.ui-v2 .btn-export-item:hover { background: var(--blue-soft); color: var(--primary); }
body.ui-v2 #rel-contagem { font-family: var(--font-mono); color: var(--primary) !important; }

/* tabela do relatório */
body.ui-v2 .rel-th { background: var(--surface-2) !important; color: var(--subtle) !important; font-size: var(--fs-xs) !important; font-weight: 700 !important; letter-spacing: .7px; text-transform: uppercase; border-bottom: 1px solid var(--border-soft) !important; }
body.ui-v2 #rel-tabela td { font-size: var(--fs-base); }

/* log cards (lista dos logs) */
body.ui-v2 .log-card { border-width: 1px; border-radius: 10px; }

/* status do servidor */
body.ui-v2 .srv-card { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); box-shadow: none; }
body.ui-v2 .srv-card-title { font-size: var(--fs-lg); font-weight: 700; color: var(--text); }
body.ui-v2 .srv-metric-label, body.ui-v2 .srv-info-item-label { font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); }
body.ui-v2 .srv-pct, body.ui-v2 .srv-info-item-val { font-family: var(--font-mono); }
body.ui-v2 .srv-bar-wrap { background: var(--divider); border-radius: 6px; }
body.ui-v2 .srv-info-item { background: var(--surface-2); border-radius: var(--radius-md); }


/* ═══════════════════════════════════════════════════════════════════
   PASSO 4b — CONFIGURAÇÕES  [v3.81.0]
   Empresas, Usuários, Municípios, OLTs, KMZ, Configurações de OS,
   Integrações e Backup + os modais de cadastro. Só CSS.
   ═══════════════════════════════════════════════════════════════════ */

/* abas internas (KMZ usa .os-tab-status; Integrações .integ-tab-btn; Backup .bkp-main-tab/.bkp-tab-btn) */
body.ui-v2 div.v2-hx-os-tab-status, body.ui-v2 div.v2-hx-integ-tab-btn, body.ui-v2 div.v2-hx-bkp-main-tab, body.ui-v2 div.v2-hx-bkp-tab-btn {
  display: inline-flex !important; gap: 3px !important; flex-wrap: wrap; padding: 3px !important; margin: 4px 0 14px !important;
  background: var(--bg); border: 1px solid var(--border-soft) !important; border-radius: var(--radius-md); align-self: flex-start;
}
body.ui-v2 .os-tab-status, body.ui-v2 .integ-tab-btn, body.ui-v2 .bkp-main-tab, body.ui-v2 .bkp-tab-btn {
  padding: 7px 13px !important; border: 0 !important; border-radius: var(--radius-sm) !important; margin: 0 !important;
  background: none !important; color: var(--muted) !important; font-family: var(--font); font-size: 12px !important; font-weight: 600 !important; white-space: nowrap; cursor: pointer; box-shadow: none !important;
}
body.ui-v2 .os-tab-status:hover, body.ui-v2 .integ-tab-btn:hover, body.ui-v2 .bkp-main-tab:hover, body.ui-v2 .bkp-tab-btn:hover { color: var(--text) !important; }
body.ui-v2 .os-tab-status.active, body.ui-v2 .integ-tab-btn.active, body.ui-v2 .bkp-main-tab.active, body.ui-v2 .bkp-tab-btn.active {
  background: var(--white) !important; color: var(--primary) !important; font-weight: 700 !important; box-shadow: 0 1px 3px rgba(0,48,135,.10) !important;
}

/* botões de ação nas tabelas (✏️ 🗑️ 🔑…): os que têm title viram ícone 30×30,
   o nome aparece ao passar o mouse — mesmo padrão do protótipo */
body.ui-v2 table td .btn-sm[title] {
  width: 30px; height: 30px; padding: 0; justify-content: center; border-radius: 8px; font-size: 13px; line-height: 1;
}
body.ui-v2 table td .btn-sm-ghost[title] { background: var(--white); border: 1px solid var(--border); }
body.ui-v2 table td .btn-sm-ghost[title]:hover { background: var(--blue-soft); border-color: var(--blue-line); }
body.ui-v2 table td .btn-sm-danger[title] { background: var(--white); border: 1px solid var(--red-line); }
body.ui-v2 table td:has(> .btn-sm[title]) { white-space: nowrap; }
body.ui-v2 table td:has(> .btn-sm[title]) > .btn-sm + .btn-sm { margin-left: 4px; }

/* aviso do KMZ de parceiros */
body.ui-v2 .aviso-parceiro { display: flex; gap: 10px; align-items: flex-start; background: var(--warn-bg); border: 1px solid var(--warn-line); border-radius: var(--radius-md); padding: 11px 14px; font-size: var(--fs-base); color: var(--warn-tx); line-height: 1.55; margin-bottom: 14px; }
body.ui-v2 .aviso-parceiro strong { color: inherit; }

/* cards das APIs RBX e checkboxes de OLT compatível (ONT V.tal) */
body.ui-v2 .rbx-api-card { background: var(--surface-2); border: 1px solid var(--border-soft); border-radius: 10px; cursor: pointer; transition: border-color .15s, background .15s; }
body.ui-v2 .rbx-api-card:hover { border-color: var(--blue-line); background: var(--blue-soft); }
body.ui-v2 .vtal-ont-olt { accent-color: var(--primary); }

/* chave liga/desliga do Backup */
body.ui-v2 .toggle-track { background: var(--border) !important; border-radius: 11px; }
body.ui-v2 .toggle-wrap input:checked + .toggle-track,
body.ui-v2 .toggle-track.on { background: var(--primary) !important; }
body.ui-v2 .toggle-thumb { background: #ffffff !important; box-shadow: 0 1px 2px rgba(0,0,0,.2); }
body.ui-v2 .bkp-field-wrap, body.ui-v2 .bkp-time-wrap { display: flex; flex-direction: column; gap: 6px; }

/* botões antigos .btn/.btn-primary/.btn-secondary (Integrações) */
body.ui-v2 .btn { border-radius: var(--radius-md); font-family: var(--font); font-size: var(--fs-base); font-weight: 600; padding: 9px 16px; }
body.ui-v2 .btn-primary { background: var(--primary); color: var(--on-primary); border: 1px solid var(--primary); font-weight: 700; }
body.ui-v2 .btn-primary:hover { background: var(--primary-hover); }
body.ui-v2 .btn-secondary { background: var(--white); color: var(--primary); border: 1px solid var(--border); }
body.ui-v2 .btn-secondary:hover { background: var(--blue-soft); }

/* modais de cadastro (.field-group/.field-label/.field-checkbox/.modal-header/.modal-footer) */
body.ui-v2 .modal { padding: 0 !important; }
body.ui-v2 .modal-header { display: flex; align-items: flex-start; gap: 12px; padding: 16px 20px; border-bottom: 1px solid var(--divider); }
body.ui-v2 .modal-header .modal-title { padding: 0; border: 0; }
body.ui-v2 .modal > .modal-title + *, body.ui-v2 .modal-header + * { padding-top: 16px; }
body.ui-v2 .modal-close { position: absolute; top: 14px; right: 14px; width: 28px; height: 28px; border-radius: 7px; border: 0; background: none; font-size: 15px; color: var(--subtle); cursor: pointer; }
body.ui-v2 .modal-close:hover { background: var(--surface-2); color: var(--text); }
body.ui-v2 .field-group { display: flex; flex-direction: column; gap: 6px; margin-bottom: 14px; min-width: 0; }
body.ui-v2 .field-label { font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); margin: 0; }
body.ui-v2 .field-checkbox { display: flex; align-items: flex-start; gap: 9px; font-size: var(--fs-base); font-weight: 600; color: var(--text); cursor: pointer; }
body.ui-v2 .field-checkbox input[type="checkbox"], body.ui-v2 .modal input[type="checkbox"], body.ui-v2 .modal input[type="radio"] { accent-color: var(--primary); width: 16px; height: 16px; margin-top: 1px; }
body.ui-v2 .modal-footer { padding: 14px 20px !important; margin: 14px 0 0; border-top: 1px solid var(--divider); display: flex; justify-content: flex-end; gap: 9px; flex-wrap: wrap; }
body.ui-v2 .modal-footer .btn-sm { height: 38px; padding: 0 16px; }
body.ui-v2 .modal-alert { border-radius: var(--radius-md); font-size: var(--fs-base); }
body.ui-v2 .modal { scrollbar-width: thin; scrollbar-color: var(--border) transparent; }

/* tabela dentro de card: sem segunda moldura; identificadores não quebram */
body.ui-v2 .section-card .tbl-wrap { border: 0; border-radius: 0; background: transparent; margin: 0 -18px -16px; }
body.ui-v2 .section-card .tbl-wrap table thead th:first-child, body.ui-v2 .section-card .tbl-wrap table tbody td:first-child { padding-left: 18px; }
body.ui-v2 td.mono, body.ui-v2 td .mono { white-space: nowrap; }


/* ═══════════════════════════════════════════════════════════════════
   PASSO 4c — CLIENTES, BUSCAR CLIENTE E FICHA  [v3.82.0]
   Lista (.cli-card), selos de status, cabeçalho com ações, busca com
   sugestões e o popup da ficha (#modal-cliente-detalhe). Só CSS.
   ═══════════════════════════════════════════════════════════════════ */

/* abas Reservados/Ativos/Cancelados/Todos (.os-tabs-status já vira segmentada no 4b) */
body.ui-v2 .os-tabs-status { border-bottom: 0 !important; }

/* cabeçalho do card: título à esquerda, ações à direita */
body.ui-v2 .section-header-actions { gap: 6px; }
body.ui-v2 .section-header-actions .btn-sm { height: 34px; }
body.ui-v2 .btn-criar-os { height: 34px; padding: 0 14px; border-radius: var(--radius-md); background: var(--primary); color: var(--on-primary); font-size: var(--fs-base); font-weight: 700; border: 0; }
body.ui-v2 .btn-criar-os:hover { background: var(--primary-hover); }

/* selos de status (mesma família dos badges do tema) */
body.ui-v2 [class^="badge-status-"], body.ui-v2 [class*=" badge-status-"] {
  display: inline-flex; align-items: center; gap: 5px; font-size: var(--fs-xs); font-weight: 700; padding: 3px 10px; border-radius: var(--radius-pill); border: 0; white-space: nowrap;
}
body.ui-v2 .badge-status-reservado { background: var(--warn-bg); color: var(--warn-tx); }
body.ui-v2 .badge-status-ativo     { background: var(--green-light); color: var(--green-tx); }
body.ui-v2 .badge-status-cancelado { background: var(--surface-2); color: var(--muted); }
body.ui-v2 .badge-status-bloqueado { background: var(--orange-light); color: var(--red-tx); }

/* lista: cada cliente vira uma LINHA da tabela visual (sem moldura própria) */
body.ui-v2 .cli-card { background: var(--white); border: 0; border-top: 1px solid var(--divider); border-radius: 0; margin: 0; }
body.ui-v2 .cli-card:first-child { border-top: 0; }
body.ui-v2 .cli-card:hover { border-color: var(--divider); }
body.ui-v2 .cli-card-header { padding: 11px 14px; gap: 14px; }
body.ui-v2 .cli-card-header:hover { background: var(--surface-2); }
body.ui-v2 .cli-card-status { min-width: 92px; }
body.ui-v2 .cli-card-nome { font-size: var(--fs-md); font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.ui-v2 .cli-card-local { font-size: var(--fs-sm); color: var(--muted); margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.ui-v2 .cli-card-data { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--muted); }
body.ui-v2 .cli-card-caret { color: var(--subtle); font-size: 10px; }
body.ui-v2.dark-mode .cli-card { background: var(--white); }
body.ui-v2.dark-mode .cli-card-header { background: transparent; }
body.ui-v2.dark-mode .cli-card-header:hover { background: var(--surface-2); }
/* o contêiner da lista ganha a moldura (é o pai dos .cli-card) */
body.ui-v2 div.v2-hx-cli-card { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); overflow: hidden; }

/* contagem regressiva de reserva */
body.ui-v2 .timer-val { font-family: var(--font-mono); font-size: var(--fs-sm); font-weight: 600; }

/* busca de cliente — sugestões */
body.ui-v2 #bcli-sugestoes { border: 1px solid var(--border) !important; border-radius: 10px !important; box-shadow: var(--shadow-pop) !important; padding: 5px; }
body.ui-v2 #bcli-sugestoes > * { border-radius: 7px; }
body.ui-v2 #bcli-sugestoes > *:hover, body.ui-v2 #bcli-sugestoes > [aria-selected="true"] { background: var(--blue-soft) !important; }
body.ui-v2 #bcli-msg { color: var(--muted) !important; }
body.ui-v2 #bcli-resultado > .cli-card { border: 1px solid var(--border-soft); border-radius: var(--radius); overflow: hidden; }

/* ficha do cliente (popup) */
body.ui-v2 #modal-cliente-detalhe .modal { width: 820px !important; }
body.ui-v2 #cli-modal-acoes { gap: 7px !important; padding: 14px 20px 0; margin-bottom: 14px !important; }
body.ui-v2 #cli-modal-acoes .btn-sm { height: 34px; padding: 0 13px !important; font-size: var(--fs-base) !important; }
body.ui-v2 #modal-cliente-detalhe .cli-card-detail { background: transparent !important; border-top: 1px solid var(--divider) !important; padding: 16px 20px 20px !important;
  display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px 16px; }
body.ui-v2 .cli-detail-item { background: var(--surface-2); border-radius: var(--radius-md); padding: 10px 12px; min-width: 0; }
body.ui-v2 .cli-detail-item label { font-size: var(--fs-xs); letter-spacing: .7px; color: var(--subtle); margin-bottom: 4px; }
body.ui-v2 .cli-detail-item span { font-size: var(--fs-md); font-weight: 600; color: var(--text); word-break: break-word; }
body.ui-v2 .cli-detail-item span.empty { color: var(--subtle); }

/* menu Serviços ▾ */
body.ui-v2 .servicos-menu { min-width: 240px; }
body.ui-v2 .servicos-menu-item { padding: 9px 12px; }

/* seleção de ONU (troca/ativação) */
body.ui-v2 .onu-select-card { border: 1.5px solid var(--border); border-radius: 10px; background: var(--white); }
body.ui-v2 .onu-select-card:hover { border-color: var(--blue-line); }
body.ui-v2 .onu-select-card:has(input:checked) { border-color: var(--primary); background: var(--blue-soft); }
body.ui-v2 .onu-radio { accent-color: var(--primary); }

@media (max-width: 768px) {
  body.ui-v2 .cli-card-status { min-width: 0; }
  body.ui-v2 #modal-cliente-detalhe .cli-card-detail { grid-template-columns: 1fr 1fr; }
}


/* ═══════════════════════════════════════════════════════════════════
   PASSO 4d — ORDENS DE SERVIÇO E NOVA OS  [v3.83.0]
   Abas de status, filtro por tipo (subabas), lista (.os-card), selos,
   detalhe (.os-modal-*), andamentos, fotos e monitoramento. Só CSS.
   ═══════════════════════════════════════════════════════════════════ */

/* filtro por tipo: pílulas neutras; a ativa em azul claro (não sólida) */
body.ui-v2 .os-subtabs { gap: 6px; margin-bottom: 14px; }
body.ui-v2 .os-subtab {
  height: 32px; padding: 0 12px; border-radius: var(--radius-pill); border: 1px solid var(--border);
  background: var(--white); color: var(--text-2); font-size: var(--fs-base); font-weight: 600;
}
body.ui-v2 .os-subtab:hover:not(.active) { border-color: var(--blue-line); color: var(--primary); background: var(--blue-soft); }
body.ui-v2 .os-subtab.active { background: var(--blue-light); border-color: var(--blue-line); color: var(--primary); font-weight: 700; }
body.ui-v2 .os-badge { min-width: 18px; height: 18px; border-radius: 9px; font-size: 10px; font-family: var(--font-mono); }
body.ui-v2 .os-subtab:not(.active) .os-badge, body.ui-v2 .os-subtab.active .os-badge { background: var(--primary); color: var(--on-primary); }
body.ui-v2 .os-subtab .os-badge-warn { background: #E8A33D !important; color: #1f1402 !important; }

/* lista de OS: linhas dentro de um único quadro */
body.ui-v2 .os-card { border: 0; border-top: 1px solid var(--divider); border-radius: 0; margin: 0; padding: 12px 16px; box-shadow: none; }
body.ui-v2 .os-card:first-child { border-top: 0; }
body.ui-v2 .os-card:hover { background: var(--surface-2); border-color: var(--divider); box-shadow: none; }
body.ui-v2 div.v2-hx-os-card { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); overflow: hidden; }
body.ui-v2 .os-card-header { gap: 8px; margin-bottom: 6px; }
body.ui-v2 .os-numero, body.ui-v2 .os-modal-numero { font-family: var(--font-mono); color: var(--primary); }
body.ui-v2 .os-card-body { gap: 16px; }
body.ui-v2 .os-card-label, body.ui-v2 .os-section-label { font-size: var(--fs-xs); letter-spacing: .7px; color: var(--subtle); }
body.ui-v2 .os-card-value { font-size: var(--fs-base); color: var(--text); }

/* selos de tipo/status/mudança — mesma pílula, sem caixa-alta */
body.ui-v2 .os-tipo-badge, body.ui-v2 .os-status-badge, body.ui-v2 .os-mudanca-badge {
  padding: 3px 10px; border-radius: var(--radius-pill); font-size: var(--fs-xs); font-weight: 700; text-transform: none; letter-spacing: 0; border: 0;
}
body.ui-v2 .os-tipo-reserva      { background: var(--blue-light); color: var(--blue-mid); }
body.ui-v2 .os-tipo-ativacao     { background: var(--green-light); color: var(--green-tx); }
body.ui-v2 .os-tipo-manutencao   { background: var(--warn-bg); color: var(--warn-tx); }
body.ui-v2 .os-tipo-cancelamento { background: var(--orange-light); color: var(--red-tx); }
body.ui-v2 .os-tipo-pendencia    { background: var(--warn-bg); color: var(--warn-tx); box-shadow: inset 0 0 0 1px var(--warn-line); }
body.ui-v2 .os-mudanca-badge     { background: var(--purple-bg); color: var(--purple-tx); }
body.ui-v2 .os-status-aberto       { background: var(--warn-bg); color: var(--warn-tx); }
body.ui-v2 .os-status-em_andamento { background: var(--blue-light); color: var(--blue-mid); }
body.ui-v2 .os-status-concluido    { background: var(--green-light); color: var(--green-tx); }
body.ui-v2 .os-status-cancelado    { background: var(--surface-2); color: var(--muted); }

/* detalhe da OS */
body.ui-v2 .os-modal-header { padding: 16px 20px; margin: 0; border-bottom: 1px solid var(--divider); }
body.ui-v2 .os-grid { gap: 10px; }
body.ui-v2 .os-field { background: var(--surface-2); border-radius: var(--radius-md); padding: 10px 12px; min-width: 0; }
body.ui-v2 .os-descricao { background: var(--surface-2); border: 1px solid var(--divider); border-radius: 10px; font-family: var(--font-mono); font-size: var(--fs-base); line-height: 1.55; }
body.ui-v2 .os-andamento { background: var(--surface-2); border: 1px solid var(--divider); border-radius: 10px; box-shadow: inset 3px 0 0 var(--blue-line); }
body.ui-v2 .os-andamento-meta { font-size: var(--fs-sm); color: var(--muted); }
body.ui-v2 .os-andamento-texto { font-size: var(--fs-md); line-height: 1.55; }
body.ui-v2 .os-foto-thumb { border: 1px solid var(--border-soft); border-radius: 8px; }
body.ui-v2 .os-foto-thumb:hover { border-color: var(--primary); transform: none; }

/* monitoramento (auditoria) — paginação */
body.ui-v2 .mon-pag-btn { height: 30px; min-width: 30px; border-radius: 7px; border: 1px solid var(--border); background: var(--white); color: var(--text-2); font-weight: 600; }
body.ui-v2 .mon-pag-btn:hover { background: var(--blue-soft); color: var(--primary); }
body.ui-v2 .mon-pag-btn.active, body.ui-v2 .mon-pag-btn[disabled] { background: var(--blue-light); color: var(--primary); }

/* Configurações de OS (categorias / subcategorias / templates) */
body.ui-v2 .cat-card { border: 1px solid var(--border-soft); border-radius: 10px; overflow: hidden; background: var(--white); }
body.ui-v2 .cat-header { background: var(--blue-soft); border-bottom: 1px solid var(--border-soft); }
body.ui-v2 .cat-nome { color: var(--primary); font-weight: 700; }
body.ui-v2 .sub-card { border-top: 1px solid var(--divider); }
body.ui-v2 .badge-template, body.ui-v2 .badge-inativa { border-radius: var(--radius-pill); font-size: var(--fs-xs); font-weight: 700; padding: 2px 8px; }
body.ui-v2 .badge-inativa { background: var(--warn-bg); color: var(--warn-tx); }
body.ui-v2 .tpl-text { background: var(--surface-2); border: 1px solid var(--divider); border-radius: 7px; font-size: var(--fs-base); }
body.ui-v2 .no-template, body.ui-v2 .no-subs { color: var(--subtle); font-style: italic; }


/* ═══════════════════════════════════════════════════════════════════
   PASSO 4e — VIABILIDADE (Apollo e Atlas)  [v3.84.0]
   Formulário lateral, botão Consultar, cards de resultado (rede própria e
   caixas de parceiros), botões de trajeto/reserva/Maps, mapa e painel de
   informação. A lógica de busca, reserva e trajeto não muda. Só CSS.
   ═══════════════════════════════════════════════════════════════════ */
body.ui-v2 .sidebar { width: 340px; background: var(--white); border-right: 1px solid var(--border-soft); }
body.ui-v2 .sidebar-form { padding: 16px 18px; border-bottom: 1px solid var(--divider); }
body.ui-v2 .sidebar-form-title { font-size: var(--fs-lg); font-weight: 700; color: var(--text); text-transform: none; letter-spacing: -.1px; margin-bottom: 14px; }
body.ui-v2 .sidebar-form-title::before { width: 4px; height: 16px; background: var(--accent); }
body.ui-v2 .sidebar-form .input-field { margin-bottom: 12px; }
body.ui-v2 #input-coords { font-family: var(--font-mono); font-size: var(--fs-base); }
body.ui-v2 .sidebar-form select.input-field { appearance: none !important; -webkit-appearance: none !important; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%238d9ab5' stroke-width='1.5'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 12px center; padding-right: 32px; }
body.ui-v2 .btn-consultar { background: var(--primary); color: var(--on-primary); border-radius: var(--radius-md); padding: 11px; font-weight: 700; box-shadow: none; }
body.ui-v2 .btn-consultar:hover { background: var(--primary-hover); transform: none; box-shadow: none; }
body.ui-v2 .sidebar-error { background: var(--av-erro-bg); border-color: var(--av-erro-bd); color: var(--av-erro-tx); border-radius: var(--radius-md); }

/* resultados */
body.ui-v2 .sidebar-results { padding: 14px 16px; }
body.ui-v2 .results-header { font-size: var(--fs-xs); letter-spacing: .7px; color: var(--subtle); }
body.ui-v2 .result-card, body.ui-v2 .av-card { background: var(--white); border: 1.5px solid var(--border-soft); border-radius: 10px; padding: 11px 12px; margin-bottom: 8px; box-shadow: none; }
body.ui-v2 .result-card::before { display: none; }
body.ui-v2 .result-card:hover, body.ui-v2 .av-card:hover { border-color: var(--blue-line); box-shadow: none; }
body.ui-v2 .result-card.active, body.ui-v2 .av-card.active { border-color: var(--primary); background: var(--blue-soft); box-shadow: none; }
body.ui-v2 .rc-rank { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--subtle); }
body.ui-v2 .rc-badge { font-size: var(--fs-xs); padding: 3px 9px; }
body.ui-v2 .rc-name, body.ui-v2 .av-card-nome { font-family: var(--font-mono); font-size: var(--fs-lg); font-weight: 700; color: var(--text); }
body.ui-v2 .rc-sub, body.ui-v2 .av-card-sub { font-size: var(--fs-sm); color: var(--muted); margin-bottom: 8px; }
body.ui-v2 .rc-stats { gap: 6px; margin-bottom: 8px; }
body.ui-v2 .stat-box { background: var(--surface-2); border-radius: 7px; padding: 6px 4px; }
body.ui-v2 .stat-val { font-family: var(--font-mono); font-size: var(--fs-lg); font-weight: 600; }
body.ui-v2 .stat-lbl { font-size: 10px; color: var(--subtle); }
body.ui-v2 .val-green  { color: var(--green-tx); }
body.ui-v2 .val-red    { color: var(--red-tx); }
body.ui-v2 .val-yellow { color: var(--warn-tx); }
body.ui-v2 .rc-dist, body.ui-v2 .av-card-dist { font-size: var(--fs-sm); color: var(--muted); margin-bottom: 8px; }
body.ui-v2 .rc-dist strong { font-family: var(--font-mono); color: var(--text); }
body.ui-v2 .alt-badge { background: var(--surface-2); color: var(--muted); border-radius: var(--radius-pill); }
body.ui-v2 .dist-badge-reta { background: var(--blue-light); color: var(--blue-mid); }
body.ui-v2 .dist-badge-trajeto { background: var(--green-light); color: var(--green-tx); }
body.ui-v2 .av-card-num { font-family: var(--font-mono); color: var(--subtle); }

/* botões do card: trajeto e Maps secundários, reservar primário */
body.ui-v2 .btn-calc-trajeto, body.ui-v2 .rc-maps-link {
  height: 30px; padding: 0 11px; border-radius: 7px; border: 1px solid var(--border); background: var(--white);
  color: var(--primary); font-size: var(--fs-sm); font-weight: 600; margin-top: 4px;
}
body.ui-v2 .btn-calc-trajeto:hover, body.ui-v2 .rc-maps-link:hover { background: var(--blue-soft); border-color: var(--blue-line); color: var(--primary); }
body.ui-v2 .btn-reservar-porta { height: 30px; padding: 0 12px; border-radius: 7px; border: 1px solid var(--primary); background: var(--primary); color: var(--on-primary); font-size: var(--fs-sm); font-weight: 700; margin-top: 4px; }
body.ui-v2 .btn-reservar-porta:hover { background: var(--primary-hover); }
body.ui-v2 .no-results { color: var(--subtle); font-size: var(--fs-base); }

/* mapa */
body.ui-v2 .map-area { background: var(--bg); }
body.ui-v2 .map-placeholder { color: var(--subtle); }
body.ui-v2 .map-info-panel { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); box-shadow: var(--shadow-pop); }
body.ui-v2 .mip-title { font-size: var(--fs-lg); font-weight: 700; color: var(--text); }
body.ui-v2 .mip-row { font-size: var(--fs-base); color: var(--text-2); border-top: 1px solid var(--divider); }
body.ui-v2 .av-barra { background: var(--white); border-bottom: 1px solid var(--border-soft); }

/* Área de cobertura (Atlas) */
body.ui-v2 .av-cobertura { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); }
body.ui-v2 .av-cob-toggle { color: var(--primary); font-weight: 700; }
body.ui-v2 .av-cob-lista label { font-size: var(--fs-base); }
body.ui-v2 .av-cob-lista input { accent-color: var(--primary); }

@media (max-width: 768px) {
  body.ui-v2 .sidebar { width: 100%; }
}


/* ═══════════════════════════════════════════════════════════════════
   PASSO 4f — V.TAL  [v3.85.0 · revisado v3.86.0]
   As telas V.tal (Viabilidade, Clientes, Ordens, Diagnóstico) usam as
   mesmas classes das demais (.section-card, .filter-*, .os-tab-status,
   .modal-*, .btn-sm-*, .tbl-*), já cobertas nos passos 4a–4d. As regras
   .vt-* da v3.85.0 foram removidas: essas classes não existem no código.
   Aqui fica só a paginação (compartilhada com o Atlas).
   ═══════════════════════════════════════════════════════════════════ */
body.ui-v2 .pagination { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; padding: 10px 14px; border-top: 1px solid var(--divider); }
body.ui-v2 .pagination-info { font-size: var(--fs-sm); color: var(--muted); font-family: var(--font-mono); }
body.ui-v2 .pagination-btns { display: flex; gap: 4px; }
body.ui-v2 .pagination-btns button, body.ui-v2 .pg-btn { height: 30px; min-width: 30px; padding: 0 9px; border-radius: 7px; border: 1px solid var(--border); background: var(--white); color: var(--text-2); font-size: var(--fs-sm); font-weight: 600; cursor: pointer; }
body.ui-v2 .pagination-btns button:hover:not([disabled]), body.ui-v2 .pg-btn:hover:not([disabled]) { background: var(--blue-soft); color: var(--primary); border-color: var(--blue-line); }
body.ui-v2 .pagination-btns button.active, body.ui-v2 .pg-btn.active { background: var(--blue-light); color: var(--primary); border-color: var(--blue-line); }
body.ui-v2 .pagination-btns button[disabled], body.ui-v2 .pg-btn[disabled] { opacity: .45; cursor: not-allowed; }

/* ═══════════════════════════════════════════════════════════════════
   PASSO 4g — ATLAS  [v3.86.0]
   Início, Viabilidade (lista de CTOs e parceiros), Ativação, Remoção,
   Verificação de sinal, Bater caixa, Documentação de CTOs, Consulta,
   Mapa, Arquivos e Informações. A maior parte já usa as classes comuns;
   aqui ficam as classes próprias do Atlas (.ai-*, .av-*, .abc-*). Só CSS.
   ═══════════════════════════════════════════════════════════════════ */
/* Informações do Atlas: cartões de total, barras por dia e ranking */
body.ui-v2 .ai-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; }
body.ui-v2 .ai-card { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); padding: 12px 14px; box-shadow: none; }
body.ui-v2 .ai-card-lbl { font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); }
body.ui-v2 .ai-card-num { font-family: var(--font-mono); font-size: 22px; font-weight: 600; color: var(--text); margin-top: 4px; }
body.ui-v2 .ai-card-total { border-color: var(--blue-line); background: var(--blue-soft); }
body.ui-v2 .ai-card-total .ai-card-num { color: var(--primary); }
body.ui-v2 .ai-grafico { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); }
body.ui-v2 .ai-barra-val { background: var(--primary); border-radius: 4px 4px 0 0; opacity: .85; }
body.ui-v2 .ai-barra:hover .ai-barra-val { opacity: 1; }
body.ui-v2 .ai-barra-val, body.ui-v2 .ai-barra-num, body.ui-v2 .ai-qtd, body.ui-v2 .ai-pct { font-family: var(--font-mono); }
body.ui-v2 .ai-barra-dia { font-size: 10px; color: var(--subtle); }
body.ui-v2 .ai-bar { background: var(--divider); border-radius: 5px; overflow: hidden; }
body.ui-v2 .ai-bar-fill { background: var(--primary); }
body.ui-v2 .ai-lider .ai-bar-fill { background: var(--accent); }
body.ui-v2 .ai-pos { font-family: var(--font-mono); color: var(--subtle); }
body.ui-v2 .ai-linha-total { border-top: 1px solid var(--divider); font-weight: 700; }

/* Viabilidade do Atlas: lista, grupos e itens */
body.ui-v2 .av-grupo-titulo { font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); margin: 10px 0 6px; }
body.ui-v2 .av-item { background: var(--white); border: 1.5px solid var(--border-soft); border-radius: 10px; padding: 10px 12px; margin-bottom: 8px; }
body.ui-v2 .av-item:hover { border-color: var(--blue-line); }
body.ui-v2 .av-item.active { border-color: var(--primary); background: var(--blue-soft); }
body.ui-v2 .av-item-sub { font-size: var(--fs-sm); color: var(--muted); }
body.ui-v2 .av-item-dist, body.ui-v2 .av-dist, body.ui-v2 .av-reta { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--text-2); }
body.ui-v2 .av-btn-traj { height: 30px; padding: 0 11px; border-radius: 7px; border: 1px solid var(--border); background: var(--white); color: var(--primary); font-size: var(--fs-sm); font-weight: 600; }
body.ui-v2 .av-btn-traj:hover { background: var(--blue-soft); border-color: var(--blue-line); }
body.ui-v2 .av-btn-parceiros { border-radius: 8px; border: 1px solid var(--border); background: var(--white); color: var(--primary); font-weight: 600; }
body.ui-v2 .av-btn-parceiros-num { background: var(--primary); color: var(--on-primary); border-radius: 9px; font-family: var(--font-mono); font-size: 10px; }
body.ui-v2 .av-link-ocultar { color: var(--primary); font-weight: 600; }
body.ui-v2 .av-vazio, body.ui-v2 .av-carregando { color: var(--subtle); font-size: var(--fs-base); }
body.ui-v2 .av-erro { background: var(--av-erro-bg); border: 1px solid var(--av-erro-bd); color: var(--av-erro-tx); border-radius: var(--radius-md); padding: 9px 12px; font-size: var(--fs-base); }
body.ui-v2 .av-cob-item { border-top: 1px solid var(--divider); }
body.ui-v2 .av-cob-nome { font-weight: 700; }
body.ui-v2 .av-cob-area, body.ui-v2 .av-cob-nota { font-size: var(--fs-sm); color: var(--muted); }
body.ui-v2 .map-placeholder-icon { opacity: .5; }

/* Bater caixa: linha da ONU e destaque de quem mudou */
body.ui-v2 .abc-linha { border-top: 1px solid var(--divider); }
body.ui-v2 .abc-realce { background: #fffaf0 !important; box-shadow: inset 3px 0 0 #E8A33D; }
body.ui-v2.dark-mode .abc-realce { background: rgba(232,163,61,.10) !important; }
/* Documentação de CTOs / Consulta */
body.ui-v2 .cto-item { border-top: 1px solid var(--divider); }
body.ui-v2 .log-coord { font-family: var(--font-mono); font-size: var(--fs-sm); }

/* [v3.87.0] ajustes após o 1º teste no servidor */
@media (min-width: 769px) {
  body.ui-v2 .nav-dropdown-btn { color: var(--muted); }
  body.ui-v2 #nav-menu { padding-bottom: 14px; mask-image: linear-gradient(to bottom, #000 calc(100% - 18px), transparent); -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 18px), transparent); }
}
body.ui-v2.dark-mode [class*="badge-perfil"], body.ui-v2.dark-mode .perfil-badge { background: var(--surface-2) !important; color: var(--text-2) !important; border-color: var(--border) !important; }


/* ═══════════════════════════════════════════════════════════════════
   ETAPA 2a — BARRA SUPERIOR, MENU RECOLHÍVEL E CARTÃO DO USUÁRIO  [v3.88.0]
   Os elementos #v2-* são montados pelo tema-v2.js (só com ui-v2, desktop).
   ═══════════════════════════════════════════════════════════════════ */
#v2-barra, #v2-recolher, #v2-user { display: none; }
@media (min-width: 769px) {
  body.ui-v2 { --v2-side: 232px; --v2-bar: 64px; }
  body.ui-v2.v2-mini { --v2-side: 68px; }
  body.ui-v2 .topbar { width: var(--v2-side); flex-basis: var(--v2-side); transition: width .18s, flex-basis .18s; }

  /* barra superior */
  body.ui-v2 #v2-barra {
    display: flex; align-items: center; gap: 10px; position: fixed; top: 0; right: 0; left: var(--v2-side); height: var(--v2-bar); z-index: 40;
    padding: 0 22px; box-sizing: border-box; background: var(--white); border-bottom: 1px solid var(--border-soft); transition: left .18s;
  }
  body.ui-v2 .v2-tit { flex: 1; min-width: 0; }
  body.ui-v2 .v2-crumb { font-size: var(--fs-sm); color: var(--subtle); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  body.ui-v2 .v2-h1 { font-size: 19px; font-weight: 700; letter-spacing: -.3px; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 1.25; }
  body.ui-v2 .v2-busca { display: flex; align-items: center; gap: 0; height: 38px; width: clamp(200px, 24vw, 300px); border: 1.5px solid var(--border); border-radius: var(--radius-md); background: var(--white); overflow: hidden; }
  body.ui-v2 .v2-busca:focus-within { border-color: var(--primary); box-shadow: var(--focus-ring); }
  body.ui-v2 .v2-busca input { flex: 1; min-width: 0; border: 0; outline: 0; background: transparent; padding: 0 12px; font-family: var(--font); font-size: var(--fs-md); color: var(--text); }
  body.ui-v2 .v2-busca button { width: 34px; height: 30px; margin-right: 3px; border: 0; border-radius: 7px; background: var(--primary); color: var(--on-primary); font-size: 15px; cursor: pointer; }
  body.ui-v2 .v2-bt { position: relative; width: 38px; height: 38px; border-radius: var(--radius-md); border: 1px solid var(--border); background: var(--white); font-size: 15px; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
  body.ui-v2 .v2-bt:hover { background: var(--blue-soft); border-color: var(--blue-line); }
  body.ui-v2 .v2-badge { position: absolute; top: -6px; right: -6px; min-width: 18px; height: 18px; padding: 0 5px; box-sizing: border-box; border-radius: 9px; background: #E8A33D; color: #1f1402; font-size: 10px; font-weight: 800; font-family: var(--font-mono); display: flex; align-items: center; justify-content: center; }
  body.ui-v2.dark-mode #v2-barra, body.ui-v2.dark-mode .v2-busca, body.ui-v2.dark-mode .v2-bt { background: var(--white); }

  /* o conteúdo desce a altura da barra; o título da página vai para a barra */
  body.ui-v2 #page-app > .app-body, body.ui-v2 #page-app > .content-page { padding-top: var(--v2-bar); box-sizing: border-box; }
  body.ui-v2 #page-app > .content-page .content-title { display: none; }
  body.ui-v2 #page-app > .content-page .content-inner { padding-top: 18px; }
  /* sino/tema moram na barra: esconde os originais do rodapé (continuam no DOM) */
  body.ui-v2 .topbar-right > .btn-sino, body.ui-v2 .topbar-right > .btn-dark-mode { display: none !important; }
  body.ui-v2 .notif-panel { position: fixed !important; top: calc(var(--v2-bar) + 6px) !important; right: 16px !important; left: auto !important; bottom: auto !important; }

  /* botão recolher */
  body.ui-v2 #v2-recolher { display: flex; align-items: center; gap: 9px; height: 34px; padding: 0 6px; border: 0; background: none; cursor: pointer; color: var(--muted); font-family: var(--font); font-size: var(--fs-base); font-weight: 600; flex-shrink: 0; }
  body.ui-v2 #v2-recolher .v2-rec-ico { width: 28px; height: 28px; border-radius: 8px; background: var(--primary); color: var(--on-primary); display: flex; align-items: center; justify-content: center; font-size: 13px; }
  body.ui-v2 #v2-recolher:hover { color: var(--text); }
  /* logo em cartão */
  body.ui-v2 .topbar-left { border: 1px solid var(--border-soft); border-radius: 10px; padding: 8px 10px; background: var(--white); }

  /* cartão do usuário */
  body.ui-v2 #v2-user { display: flex; align-items: center; gap: 10px; grid-column: 1 / -1; grid-row: 2; padding: 10px 4px 2px; border-top: 1px solid var(--divider); min-width: 0; }
  body.ui-v2 .topbar-user { display: none !important; }
  body.ui-v2 .v2-av { width: 34px; height: 34px; border-radius: 50%; background: var(--blue-light); color: var(--primary); font-weight: 800; font-size: 12px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
  body.ui-v2 .v2-user-txt { min-width: 0; }
  body.ui-v2 .v2-user-nome { font-size: var(--fs-md); font-weight: 700; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  body.ui-v2 .v2-user-sub { font-size: var(--fs-xs); color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

  /* ── modo recolhido ── */
  body.ui-v2.v2-mini .topbar { padding-left: 8px; padding-right: 8px; }
  body.ui-v2.v2-mini #v2-recolher { justify-content: center; }
  body.ui-v2.v2-mini .v2-rec-txt, body.ui-v2.v2-mini .v2-user-txt, body.ui-v2.v2-mini .topbar-logo-provedor, body.ui-v2.v2-mini .topbar-left::before { display: none !important; }
  body.ui-v2.v2-mini .topbar-left { padding: 6px; justify-content: center; }
  body.ui-v2.v2-mini .topbar-logo-img { width: 30px; max-width: 30px; height: 28px; object-fit: cover; object-position: left center; }
  body.ui-v2.v2-mini .nav-dropdown-btn:not([data-section]) { justify-content: center; padding: 10px 0 4px; font-size: 0; }
  body.ui-v2.v2-mini .nav-dropdown-btn:not([data-section])::after { content: ''; display: block; width: 18px; height: 1px; background: var(--border); }
  body.ui-v2.v2-mini .nav-dropdown-btn:not([data-section]) .caret { display: none; }
  body.ui-v2.v2-mini .nav-dropdown-item, body.ui-v2.v2-mini .nav-dropdown-btn[data-section] { font-size: 0 !important; padding: 0 !important; height: 36px; display: flex; align-items: center; justify-content: center; margin: 1px 0; }
  body.ui-v2.v2-mini .nav-dropdown-item::before, body.ui-v2.v2-mini .nav-dropdown-btn[data-section]::before {
    content: attr(data-sigla); font-size: 11px; font-weight: 800; letter-spacing: .3px; font-family: var(--font-mono);
    width: 34px; height: 30px; border-radius: 8px; display: flex; align-items: center; justify-content: center; background: var(--surface-2); color: var(--muted);
  }
  body.ui-v2.v2-mini .nav-dropdown-item.active::before, body.ui-v2.v2-mini .nav-dropdown-btn[data-section].active::before { background: var(--primary); color: var(--on-primary); }
  body.ui-v2.v2-mini .nav-dropdown-item.active, body.ui-v2.v2-mini .nav-dropdown-btn[data-section].active { background: none !important; box-shadow: none !important; }
  body.ui-v2.v2-mini #v2-user { justify-content: center; padding-left: 0; padding-right: 0; }
  body.ui-v2.v2-mini .topbar-right > .btn-logout { padding: 0 6px; font-size: 11px; }
  body.ui-v2.v2-mini #btn-minha-senha { display: none !important; }
}

/* [v3.88.1] ajustes pós-teste no servidor */
body.ui-v2 .v2-emo { display: none; }
@media (min-width: 769px) {
  /* recolhido: todos os grupos abertos (senão os itens de grupo fechado ficavam inacessíveis) */
  body.ui-v2.v2-mini .nav-dropdown .nav-dropdown-menu { display: flex !important; }
  /* recolhido: divisórias internas dos grupos somem; o título do grupo já faz a divisão */
  body.ui-v2.v2-mini .nav-dropdown-menu > div:not([class]) { display: none !important; }
  body.ui-v2.v2-mini .nav-dropdown-btn:not([data-section]) { padding: 7px 0 5px; }
  /* aberto: divisórias internas mais discretas */
  body.ui-v2 .nav-dropdown-menu > div:not([class]) { background: var(--divider) !important; margin: 4px 10px !important; }
  /* recolhido: logo mostra só o símbolo, sem a seta de troca */
  body.ui-v2.v2-mini .topbar-logo { justify-content: center; }
  body.ui-v2.v2-mini .topbar-logo-caret, body.ui-v2.v2-mini .topbar-logo-sep { display: none !important; }
  body.ui-v2.v2-mini .topbar-logo-btn { padding: 0; }
  /* Sair centralizado no recolhido */
  body.ui-v2.v2-mini .topbar-right > .btn-logout { grid-column: 1 / -1; justify-self: center; }
}

/* [v3.88.3] menu de troca de sistema (logo) sai do menu lateral em vez de ser cortado */
@media (min-width: 769px) {
  body.ui-v2 .topbar, body.ui-v2 .topbar-left { overflow: visible; }
  body.ui-v2 .sistema-menu { position: fixed !important; top: 104px !important; left: calc(var(--v2-side) - 6px) !important; right: auto !important; z-index: 80; min-width: 240px; }
  body.ui-v2.v2-mini .sistema-menu { top: 58px !important; left: calc(var(--v2-side) + 4px) !important; }
}


/* ═══════════════════════════════════════════════════════════════════
   ETAPA 2b — VIABILIDADE NO LAYOUT DO PROTÓTIPO  [v3.89.0]
   Desktop: formulário numa linha no topo, cards de resultado lado a lado
   logo abaixo e o mapa ocupando o resto. Só CSS — os mesmos ids, a mesma
   ordem no HTML e o mesmo JS (troca coordenada/endereço, consulta,
   trajeto, reserva, cobertura). Mobile continua como está.
   ═══════════════════════════════════════════════════════════════════ */
@media (min-width: 769px) {
  body.ui-v2 #sec-viabilidade, body.ui-v2 #sec-atlas-viabilidade { flex-direction: column; overflow-y: auto; overflow-x: hidden; }
  body.ui-v2 #sec-viabilidade > .sidebar, body.ui-v2 #sec-atlas-viabilidade > .sidebar {
    width: auto; max-width: none; flex: 0 0 auto; height: auto; max-height: none; overflow: visible;
    border-right: 0; border-bottom: 1px solid var(--border-soft); background: var(--bg); display: flex; flex-direction: column;
  }

  /* formulário em linha: rótulo / campo / dica em 3 linhas da grade */
  body.ui-v2 #sec-viabilidade .sidebar-form, body.ui-v2 #sec-atlas-viabilidade .sidebar-form {
    display: grid; align-items: start; gap: 6px 12px; margin: 16px 22px 0; padding: 14px 16px;
    background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius);
    grid-template-columns: minmax(170px, 210px) minmax(220px, 1fr) 150px auto auto;
    grid-template-rows: auto auto auto auto;
  }
  body.ui-v2 #sec-viabilidade .sidebar-form-title, body.ui-v2 #sec-atlas-viabilidade .sidebar-form-title { display: none; }
  body.ui-v2 #sec-viabilidade .sidebar-form .input-field, body.ui-v2 #sec-atlas-viabilidade .sidebar-form .input-field { margin: 0 !important; height: 40px; box-sizing: border-box; }
  body.ui-v2 #sec-viabilidade .sidebar-form .input-label, body.ui-v2 #sec-atlas-viabilidade .sidebar-form .input-label { margin: 0; }
  /* dicas ("Exemplo…", "Entre 10 e 1000") */
  body.ui-v2 #sec-viabilidade .sidebar-form div[style*="margin-top:-8px"], body.ui-v2 #sec-atlas-viabilidade .sidebar-form div[style*="margin-top:-8px"] { margin: 0 !important; }

  /* coluna 1 — tipo de busca */
  body.ui-v2 .sidebar-form > .input-label:has(+ #tipo-busca), body.ui-v2 .sidebar-form > .input-label:has(+ #av-tipo-busca) { grid-column: 1; grid-row: 1; }
  body.ui-v2 #tipo-busca, body.ui-v2 #av-tipo-busca { grid-column: 1; grid-row: 2; }
  /* coluna 2 — coordenadas (os filhos entram direto na grade) ou endereço (sub-grade) */
  body.ui-v2 #painel-coordenadas, body.ui-v2 #av-painel-coordenadas { display: contents; }
  body.ui-v2 #painel-coordenadas > *, body.ui-v2 #av-painel-coordenadas > * { grid-column: 2; }
  body.ui-v2 #painel-coordenadas > .input-label, body.ui-v2 #av-painel-coordenadas > .input-label { grid-row: 1; }
  body.ui-v2 #input-coords, body.ui-v2 #av-coords { grid-row: 2; }
  body.ui-v2 #painel-coordenadas > div:last-child, body.ui-v2 #av-painel-coordenadas > div:last-child { grid-row: 3; }
  body.ui-v2 #painel-coordenadas[style*="none"], body.ui-v2 #av-painel-coordenadas[style*="none"] { display: none !important; }
  /* modo endereço: os 5 campos ganham uma linha própria, abaixo */
  body.ui-v2 .sidebar-form:has(#painel-endereco:not([style*="none"])), body.ui-v2 .sidebar-form:has(#av-painel-endereco:not([style*="none"])) { grid-template-columns: minmax(170px, 210px) 0 150px auto auto; }
  body.ui-v2 #painel-endereco, body.ui-v2 #av-painel-endereco {
    grid-column: 1 / -1; grid-row: 4; gap: 6px 10px; margin-top: 6px;
    grid-template-columns: minmax(150px, 2fr) 80px minmax(110px, 1fr) minmax(110px, 1fr) 76px; grid-template-rows: auto auto auto; grid-auto-flow: column;
  }
  body.ui-v2 #painel-endereco:not([style*="none"]), body.ui-v2 #av-painel-endereco:not([style*="none"]) { display: grid !important; }
  body.ui-v2 #painel-endereco > .input-label, body.ui-v2 #av-painel-endereco > .input-label { grid-row: 1; }
  body.ui-v2 #painel-endereco > .input-field, body.ui-v2 #av-painel-endereco > .input-field { grid-row: 2; }
  body.ui-v2 #end-geocod-info { grid-column: 1 / -1; grid-row: 3; margin: 0 !important; }
  /* coluna 3 — raio */
  body.ui-v2 .sidebar-form > .input-label:has(+ #input-raio), body.ui-v2 .sidebar-form > .input-label:has(+ #av-raio) { grid-column: 3; grid-row: 1; }
  body.ui-v2 #input-raio, body.ui-v2 #av-raio { grid-column: 3; grid-row: 2; font-family: var(--font-mono); }
  body.ui-v2 #input-raio + div, body.ui-v2 #av-raio + div { grid-column: 3; grid-row: 3; }
  /* colunas 4 e 5 — botões na altura dos campos */
  body.ui-v2 #btn-consultar, body.ui-v2 #av-btn-consultar { grid-column: 4; grid-row: 2; width: auto; height: 40px; padding: 0 22px; margin: 0; white-space: nowrap; }
  body.ui-v2 #viab-btn-cobertura { grid-column: 5; grid-row: 2; width: auto; height: 40px; padding: 0 16px; margin: 0 !important; white-space: nowrap; }
  body.ui-v2 #sec-atlas-viabilidade .av-cobertura { grid-column: 5; grid-row: 2; position: relative; margin: 0; padding: 0; border: 0; background: none; }
  body.ui-v2 #av-btn-cobertura { height: 40px; padding: 0 14px; border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--white); white-space: nowrap; }
  body.ui-v2 #av-cob-lista:not([style*="none"]) { position: absolute; top: calc(100% + 6px); right: 0; z-index: 30; min-width: 260px; max-height: 320px; overflow: auto; background: var(--white); border: 1px solid var(--border); border-radius: 10px; box-shadow: var(--shadow-pop); padding: 10px 12px; }
  /* linha 4 — aviso de endereço, erros e resumo do Atlas */
  body.ui-v2 #end-aviso, body.ui-v2 #sidebar-error, body.ui-v2 #av-resultado { grid-column: 1 / -1; grid-row: 5; margin: 4px 0 0 !important; }
  body.ui-v2 #av-resultado:empty, body.ui-v2 #sidebar-error:empty { display: none; }

  /* cards de resultado lado a lado */
  body.ui-v2 #sec-viabilidade .sidebar-results { padding: 12px 22px 14px; overflow: visible; flex: 0 0 auto; }
  body.ui-v2 #sec-viabilidade .results-header { margin-bottom: 8px; }
  body.ui-v2 #results-area { display: flex; gap: 12px; overflow-x: auto; padding-bottom: 6px; scrollbar-width: thin; }
  body.ui-v2 #results-area > .result-card { flex: 0 0 300px; margin: 0; }
  body.ui-v2 #results-area > .no-results { flex: 1; padding: 14px; background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); }
  /* no Apollo os cards completos já estão acima; a barra compacta do mapa sai */
  body.ui-v2 #viab-barra { display: none !important; }

  /* mapa: resto da altura, dentro de um cartão */
  body.ui-v2 #sec-viabilidade > .map-area, body.ui-v2 #sec-atlas-viabilidade > .map-area {
    flex: 1 0 380px; min-height: 380px; margin: 12px 22px 18px; border: 1px solid var(--border-soft); border-radius: var(--radius); overflow: hidden; position: relative;
  }
  body.ui-v2 #sec-atlas-viabilidade .sidebar-form { margin-bottom: 12px; }
  body.ui-v2 #sec-atlas-viabilidade > .map-area { margin-top: 0; }
}


/* ═══ v3.89.1 — ajustes da Viabilidade após teste no servidor ═══ */
@media (min-width: 769px) {
  /* Apollo: botões do card lado a lado (card mais baixo, mapa sobe) */
  body.ui-v2 #results-area > .result-card { display: flex; flex-direction: column; }
  body.ui-v2 #results-area > .result-card .btn-calc-trajeto,
  body.ui-v2 #results-area > .result-card .rc-maps-link,
  body.ui-v2 #results-area > .result-card .btn-reservar-porta { display: inline-flex !important; align-items: center; justify-content: center; gap: 5px; width: auto !important; margin: 6px 6px 0 0 !important; }
  body.ui-v2 #results-area > .result-card .rc-dist { margin-bottom: 2px; }
  body.ui-v2 #results-area > .result-card { flex-basis: 290px; }
  body.ui-v2 #results-area > .result-card > *:not(.btn-calc-trajeto):not(.rc-maps-link):not(.btn-reservar-porta) { flex: 0 0 auto; }
  body.ui-v2 #results-area > .result-card { flex-direction: row; flex-wrap: wrap; align-content: flex-start; }
  body.ui-v2 #results-area > .result-card > *:not(.btn-calc-trajeto):not(.rc-maps-link):not(.btn-reservar-porta) { width: 100%; }

  /* Atlas: lista vira grade de cards lado a lado, numerados como no mapa */
  body.ui-v2 #av-resultado:not(:empty) { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 10px; counter-reset: avn; align-items: stretch; }
  body.ui-v2 #av-resultado > *:not(.av-item) { grid-column: 1 / -1; margin: 0; }
  body.ui-v2 #av-resultado .av-item { margin: 0; padding: 11px 12px; border: 1.5px solid var(--border-soft); border-radius: 10px; background: var(--white); position: relative; counter-increment: avn; }
  body.ui-v2 #av-resultado .av-item:hover { border-color: var(--blue-line); }
  body.ui-v2 #av-resultado .av-item.active, body.ui-v2 #av-resultado .av-item.selecionado { border-color: var(--primary); background: var(--blue-soft); }
  body.ui-v2 #av-resultado .av-item .av-item-topo strong::before {
    content: counter(avn); display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; margin-right: 7px; border-radius: 50%;
    font-size: 11px; font-weight: 800; font-family: var(--font-mono); vertical-align: 1px; background: #00A651; color: #ffffff;
  }
  body.ui-v2 #av-resultado .av-item[data-av-card="parceiro"] .av-item-topo strong::before { background: var(--muted); }
  body.ui-v2 #av-resultado .av-grupo-titulo { margin-top: 4px; }
  body.ui-v2 #av-resultado .av-btn-parceiros { justify-self: start; width: auto; }
  /* a barra compacta repetia os mesmos cards acima do mapa */
  body.ui-v2 #av-barra { display: none !important; }
}


/* ═══ v3.90.0 — Viabilidade: abas e cards no tamanho do protótipo ═══ */
body:not(.ui-v2) .v2-viab-abas, body:not(.ui-v2) .v2-cob-painel { display: none; }
/* o painel da cobertura só aparece na aba "Área de cobertura" (#sec-viabilidade.v2-cob) */
body.ui-v2 .v2-cob-painel { display: none; }
/* [v3.141.5] no celular as abas aparecem (wrapper .v2-tabbar) — então a aba Área de cobertura precisa funcionar também */
@media (min-width: 769px) {
  body.ui-v2 .v2-viab-abas { display: inline-flex; gap: 3px; margin: 16px 22px 0; padding: 3px; align-self: flex-start; background: var(--bg); border: 1px solid var(--border-soft); border-radius: var(--radius-md); }
  body.ui-v2 .v2-aba { padding: 8px 16px; border: 0; border-radius: var(--radius-sm); background: none; color: var(--muted); font-family: var(--font); font-size: var(--fs-base); font-weight: 600; cursor: pointer; white-space: nowrap; }
  body.ui-v2 .v2-aba:hover { color: var(--text); }
  body.ui-v2 .v2-aba.ativa { background: var(--white); color: var(--primary); font-weight: 700; box-shadow: 0 1px 3px rgba(0,48,135,.10); }
  body.ui-v2 #sec-viabilidade .sidebar-form, body.ui-v2 #sec-atlas-viabilidade .sidebar-form { margin-top: 10px; }
  /* o botão antigo sai do formulário — a cobertura agora é a 2ª aba */
  body.ui-v2 #viab-btn-cobertura { display: none !important; }
  body.ui-v2 #sec-atlas-viabilidade:not(.v2-cob) .av-cobertura { display: none !important; }
  body.ui-v2 #sec-viabilidade .sidebar-form, body.ui-v2 #sec-atlas-viabilidade .sidebar-form { grid-template-columns: minmax(170px, 210px) minmax(220px, 1fr) 150px auto; }

  /* aba Área de cobertura */
  body.ui-v2 #sec-viabilidade.v2-cob .sidebar-form, body.ui-v2 #sec-viabilidade.v2-cob .sidebar-results { display: none !important; }
  body.ui-v2 #sec-viabilidade.v2-cob .v2-cob-painel { display: flex; flex-direction: column; gap: 10px; margin: 10px 22px 0; padding: 14px 16px; background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); }
  body.ui-v2 .v2-cob-tit { font-size: var(--fs-md); font-weight: 700; color: var(--text); }
  body.ui-v2 .v2-cob-item { display: inline-flex; align-items: center; gap: 9px; font-size: var(--fs-md); font-weight: 600; color: var(--text); cursor: pointer; align-self: flex-start; padding: 8px 12px; border: 1px solid var(--border); border-radius: var(--radius-md); }
  body.ui-v2 .v2-cob-item input { accent-color: var(--primary); width: 16px; height: 16px; margin: 0; }
  body.ui-v2 .v2-cob-bola { width: 10px; height: 10px; border-radius: 50%; background: #16a34a; }
  body.ui-v2 .v2-cob-nota { font-size: var(--fs-sm); color: var(--muted); }
  body.ui-v2 #sec-atlas-viabilidade.v2-cob .sidebar-form { display: block; }
  body.ui-v2 #sec-atlas-viabilidade.v2-cob .sidebar-form > *:not(.av-cobertura) { display: none !important; }
  body.ui-v2 #sec-atlas-viabilidade.v2-cob .av-cobertura { display: block; position: static; }
  body.ui-v2 #sec-atlas-viabilidade.v2-cob #av-btn-cobertura { display: none; }
  body.ui-v2 #sec-atlas-viabilidade.v2-cob #av-cob-lista:not([style*="none"]) { position: static; min-width: 0; max-height: none; box-shadow: none; border: 0; padding: 0; background: none; display: grid !important; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 8px; }
  body.ui-v2 #sec-atlas-viabilidade.v2-cob .av-cob-item { display: flex; align-items: center; gap: 9px; padding: 9px 12px; border: 1px solid var(--border); border-radius: var(--radius-md); font-size: var(--fs-md); font-weight: 600; cursor: pointer; }
  body.ui-v2 #sec-atlas-viabilidade.v2-cob .av-cob-item:has(input:checked) { border-color: var(--primary); background: var(--blue-soft); }
  body.ui-v2 #sec-atlas-viabilidade.v2-cob .av-cob-area { margin-left: auto; font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--muted); }
  body.ui-v2 #sec-atlas-viabilidade.v2-cob .av-cob-nota { grid-column: 1 / -1; }
  body.ui-v2 #sec-atlas-viabilidade.v2-cob #av-resultado { display: none !important; }

  /* Apollo — card compacto como no protótipo (o card inteiro vira uma grade) */
  body.ui-v2 #results-area > .result-card { flex: 0 0 250px !important; display: flex !important; flex-direction: row !important; flex-wrap: wrap !important; align-content: flex-start; gap: 0 6px; padding: 11px 12px !important; }
  body.ui-v2 #results-area > .result-card > * { width: 100%; }
  body.ui-v2 #results-area > .result-card > div:has(> .alt-badge) { display: none; }
  body.ui-v2 #results-area > .result-card > div:has(> .rc-maps-link) { display: contents !important; }
  body.ui-v2 #results-area > .result-card .rc-top { margin-bottom: 2px; }
  body.ui-v2 #results-area > .result-card .rc-sub { margin-bottom: 6px; }
  body.ui-v2 #results-area > .result-card .rc-stats { gap: 5px; margin-bottom: 6px; }
  body.ui-v2 #results-area > .result-card .stat-box { padding: 5px 4px; }
  body.ui-v2 #results-area > .result-card .stat-val { font-size: var(--fs-md); }
  body.ui-v2 #results-area > .result-card .rc-dist { margin-bottom: 4px; font-size: var(--fs-sm); }
  body.ui-v2 #results-area > .result-card [id^="trajeto-res-"]:empty { display: none; }
  body.ui-v2 #results-area > .result-card .btn-calc-trajeto,
  body.ui-v2 #results-area > .result-card .rc-maps-link { width: auto !important; min-width: 0; flex: 1 1 0; height: 30px; margin: 4px 0 0 !important; padding: 0 8px !important; font-size: 11.5px; justify-content: center; white-space: nowrap; }
  body.ui-v2 #results-area > .result-card .btn-reservar-porta { width: 100% !important; flex: 0 0 100%; height: 32px; margin: 6px 0 0 !important; justify-content: center; }
}


/* ═══ v3.91.0 — cards da Viabilidade: cor do resultado no card inteiro + Atlas no padrão do Apollo ═══ */
@media (min-width: 769px) {
  /* Apollo: fundo/borda pela situação (o selo do card diz qual) */
  body.ui-v2 #results-area > .result-card:has(.badge-possui) { background: color-mix(in oklab, var(--green-light) 55%, var(--white)); border-color: color-mix(in oklab, var(--green-tx) 28%, var(--border-soft)); }
  body.ui-v2 #results-area > .result-card:has(.badge-sem),
  body.ui-v2 #results-area > .result-card:has(.badge-negativa) { background: color-mix(in oklab, var(--orange-light) 60%, var(--white)); border-color: color-mix(in oklab, var(--red-tx) 25%, var(--border-soft)); }
  body.ui-v2 #results-area > .result-card:has(.badge-alerta), body.ui-v2 #results-area > .result-card:has(.badge-proj),
  body.ui-v2 #results-area > .result-card:has(.badge-projetada) { background: color-mix(in oklab, var(--warn-bg) 60%, var(--white)); border-color: color-mix(in oklab, var(--warn-tx) 25%, var(--border-soft)); }
  body.ui-v2 #results-area > .result-card.active { box-shadow: 0 0 0 2px var(--primary); }
  body.ui-v2 #results-area > .result-card .stat-box { background: var(--white); }

  /* Atlas: mesmo formato do card do Apollo */
  body.ui-v2 #av-resultado:not(:empty) { grid-template-columns: repeat(auto-fill, minmax(230px, 250px)); }
  body.ui-v2 #av-resultado .av-item { display: flex; flex-direction: column; gap: 6px; padding: 11px 12px; border-radius: 10px; }
  body.ui-v2 #av-resultado .av-item .av-item-topo { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
  body.ui-v2 #av-resultado .av-item .av-item-topo strong { font-family: var(--font-mono); font-size: var(--fs-lg); font-weight: 700; color: var(--text); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  body.ui-v2 #av-resultado .av-item .av-dist { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--muted); flex-shrink: 0; }
  body.ui-v2 #av-resultado .av-item .av-item-sub { font-size: var(--fs-base); font-weight: 600; color: var(--text-2); background: var(--white); border-radius: 7px; padding: 7px 9px; text-align: center; }
  body.ui-v2 #av-resultado .av-item .av-item-dist { font-size: var(--fs-sm); color: var(--muted); margin-top: auto; }
  body.ui-v2 #av-resultado .av-item .av-item-dist strong { font-family: var(--font-mono); color: var(--text); }
  body.ui-v2 #av-resultado .av-item .av-btn-traj { width: 100%; height: 30px; justify-content: center; display: inline-flex; align-items: center; gap: 5px; border: 1px solid var(--border); border-radius: 7px; background: var(--white); color: var(--primary); font-size: 11.5px; font-weight: 600; cursor: pointer; }
  body.ui-v2 #av-resultado .av-item .av-btn-traj:hover { background: var(--blue-soft); border-color: var(--blue-line); }
  /* cor pela origem: rede própria verde, parceiro neutro com filete na cor do parceiro */
  body.ui-v2 #av-resultado .av-item[data-av-card="geogrid"] { background: color-mix(in oklab, var(--green-light) 55%, var(--white)); border-color: color-mix(in oklab, var(--green-tx) 28%, var(--border-soft)); }
  body.ui-v2 #av-resultado .av-item[data-av-card="parceiro"] { background: var(--surface-2); }
  body.ui-v2 #av-resultado .av-item.active, body.ui-v2 #av-resultado .av-item.selecionado { box-shadow: 0 0 0 2px var(--primary); }
}


/* ═══ v3.92.0 — Atlas em linha única; borda do card selecionado ═══ */
@media (min-width: 769px) {
  body.ui-v2 #av-resultado:not(:empty) { display: flex !important; flex-direction: column; gap: 10px; }
  body.ui-v2 #av-resultado > * { width: 100%; }
  body.ui-v2 #av-resultado > .av-btn-parceiros { width: auto; align-self: flex-start; }
  body.ui-v2 .v2-av-linha { display: flex; gap: 12px; overflow-x: auto; padding: 2px 2px 8px; scrollbar-width: thin; }
  body.ui-v2 .v2-av-linha > .av-item { flex: 0 0 250px; margin: 0; }
  body.ui-v2 #av-resultado .av-item .av-item-dist { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  body.ui-v2 #av-resultado .av-item .av-reta { margin-left: 4px; }
  body.ui-v2 #av-resultado .av-item .av-item-sub { white-space: nowrap; }
  /* selecionado: só a borda muda de cor (sem sombra dupla) */
  body.ui-v2 #results-area > .result-card.active,
  body.ui-v2 #av-resultado .av-item.v2-sel { box-shadow: none !important; border: 2px solid var(--primary) !important; padding: 10.5px 11.5px !important; }
  body.ui-v2 #results-area > .result-card { border-width: 1.5px; }
  body.ui-v2 #results-area > .result-card .rc-rank { white-space: nowrap; }
}


/* ═══ v3.93.0 — mapa maior, cores mais firmes, card do Atlas igual ao do Apollo ═══ */
@media (min-width: 769px) {
  body.ui-v2 #sec-viabilidade > .map-area, body.ui-v2 #sec-atlas-viabilidade > .map-area { flex: 1 0 auto; min-height: max(520px, calc(var(--vh100) - var(--v2-bar, 64px) - 150px)); }

  /* tons do card um pouco mais escuros */
  body.ui-v2 #results-area > .result-card:has(.badge-possui), body.ui-v2 #av-resultado .av-item[data-av-card="geogrid"] { background: color-mix(in oklab, #00A651 13%, var(--white)); border-color: color-mix(in oklab, #00A651 45%, var(--white)); }
  body.ui-v2 #results-area > .result-card:has(.badge-sem), body.ui-v2 #av-resultado .av-item.v2-neg { background: color-mix(in oklab, #E8421A 11%, var(--white)); border-color: color-mix(in oklab, #E8421A 40%, var(--white)); }
  body.ui-v2 #results-area > .result-card:has(.badge-proj), body.ui-v2 #av-resultado .av-item[data-av-card="parceiro"] { background: color-mix(in oklab, #E8A33D 13%, var(--white)); border-color: color-mix(in oklab, #E8A33D 45%, var(--white)); }
  body.ui-v2.dark-mode #results-area > .result-card:has(.badge-possui), body.ui-v2.dark-mode #av-resultado .av-item[data-av-card="geogrid"] { background: color-mix(in oklab, #00A651 16%, var(--white)); }
  body.ui-v2.dark-mode #results-area > .result-card:has(.badge-sem), body.ui-v2.dark-mode #av-resultado .av-item.v2-neg { background: color-mix(in oklab, #E8421A 14%, var(--white)); }
  body.ui-v2.dark-mode #results-area > .result-card:has(.badge-proj), body.ui-v2.dark-mode #av-resultado .av-item[data-av-card="parceiro"] { background: color-mix(in oklab, #E8A33D 14%, var(--white)); }

  /* Atlas no formato do Apollo */
  body.ui-v2 #av-resultado .v2-oculto { display: none !important; }
  body.ui-v2 #av-resultado .av-item .av-item-topo strong { font-size: var(--fs-md); flex: 1; }
  body.ui-v2 .v2-selo { flex-shrink: 0; font-size: var(--fs-xs); font-weight: 700; padding: 3px 9px; border-radius: var(--radius-pill); white-space: nowrap; }
  body.ui-v2 .v2-selo-ok { background: var(--green-light); color: var(--green-tx); }
  body.ui-v2 .v2-selo-neg { background: var(--orange-light); color: var(--red-tx); }
  body.ui-v2 .v2-selo-alerta { background: var(--warn-bg); color: var(--warn-tx); }
  body.ui-v2 .v2-av-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 5px; }
  body.ui-v2 .v2-av-stats .stat-box { background: var(--white); border-radius: 7px; padding: 5px 4px; text-align: center; }
  body.ui-v2 .v2-av-stats .stat-val { font-family: var(--font-mono); font-size: var(--fs-md); font-weight: 600; }
  body.ui-v2 .v2-av-reta, body.ui-v2 #av-resultado .av-item .av-item-dist { font-size: var(--fs-sm); color: var(--muted); }
  body.ui-v2 .v2-av-reta strong { font-family: var(--font-mono); color: var(--text); }
  body.ui-v2 #av-resultado .av-item .av-item-dist .av-reta { display: inline; }
  body.ui-v2 #av-resultado .av-item[data-av-card="parceiro"] .av-item-sub { font-size: var(--fs-sm); font-weight: 500; }
}


/* ═══ v3.94.0 — Maps no Atlas, troca rápida de sistema, ícone do menu recolhido ═══ */
@media (min-width: 769px) {
  body.ui-v2 .v2-av-botoes { display: flex; gap: 6px; margin-top: auto; }
  body.ui-v2 .v2-av-botoes > .av-item-dist { flex: 1 1 0; min-width: 0; margin: 0; }
  body.ui-v2 .v2-av-botoes .av-btn-traj { height: 30px; }
  body.ui-v2 .v2-av-botoes > .v2-av-maps { flex: 1 1 0; min-width: 0; height: 30px; margin: 0 !important; padding: 0 8px; justify-content: center; font-size: 11.5px; white-space: nowrap; }
  body.ui-v2 #av-resultado .av-item .av-item-dist:has(> strong) + .v2-av-maps { flex: 0 0 auto; }

  /* troca de sistema em 1 clique: some a setinha do menu */
  body.ui-v2 #btn-sistema.v2-dois #topbar-logo-caret { display: none !important; }
  body.ui-v2 #btn-sistema.v2-dois { cursor: pointer; border-radius: 8px; }
  body.ui-v2 #btn-sistema.v2-dois:hover { background: var(--blue-soft); }

  /* menu recolhido: ícone próprio (recortado em alta do logo), sem esticar o logo largo */
  body.ui-v2.v2-mini #btn-sistema .topbar-logo-img { display: none !important; }
  body.ui-v2.v2-mini #btn-sistema::before { content: ''; display: block; width: 32px; height: 32px; background: url("../icons/apollo-mini-claro.png") center / contain no-repeat; }
  body.ui-v2.v2-mini.dark-mode #btn-sistema::before { background-image: url("../icons/apollo-mini-escuro.png"); }
  body.ui-v2.v2-mini.sistema-atlas #btn-sistema::before { background-image: url("../icons/atlas-mini-claro.png"); }
  body.ui-v2.v2-mini.sistema-atlas.dark-mode #btn-sistema::before { background-image: url("../icons/atlas-mini-escuro.png"); }
}

/* ═══ v3.96.0 — balão compacto sobre o ponto (Apollo e Atlas): só nome, selo e distâncias ═══ */
@media (min-width: 769px) {
  body.ui-v2 .gm-style .gm-style-iw-c:has(.v2-iw) { padding: 8px 10px !important; border-radius: 10px !important; box-shadow: 0 6px 18px rgba(16,26,48,.22) !important; max-width: 260px !important; }
  body.ui-v2 .gm-style .gm-style-iw-d:has(.v2-iw) { overflow: hidden !important; max-height: none !important; }
  body.ui-v2 .gm-style .gm-style-iw-c:has(.v2-iw) .gm-style-iw-chr { position: absolute; top: 0; right: 0; }
  body.ui-v2 .gm-style .gm-style-iw-c:has(.v2-iw) .gm-style-iw-chr button { width: 26px !important; height: 26px !important; }
  body.ui-v2 .gm-style .gm-style-iw-c:has(.v2-iw) .gm-style-iw-chr button span { width: 14px !important; height: 14px !important; margin: 6px !important; }
  body.ui-v2 .v2-iw .v2-iw-x { display: none !important; }
  /* balão para baixo quando a linha sobe */
  body.ui-v2 .gm-style-iw-a.v2-flip .gm-style-iw-c { transform: translate3d(-50%, 54px, 0) !important; overflow: visible !important; }
  body.ui-v2 .gm-style-iw-a.v2-flip .gm-style-iw-c::before { content: ''; position: absolute; top: -8px; left: 50%; margin-left: -9px; border: 9px solid transparent; border-top: 0; border-bottom: 8px solid #ffffff; }
  body.ui-v2.dark-mode .gm-style-iw-a.v2-flip .gm-style-iw-c::before { border-bottom-color: var(--white); }
  /* tema escuro: balão escuro inteiro (fundo, ponta, textos e ×) */
  body.ui-v2.dark-mode .gm-style .gm-style-iw-c:has(.v2-iw) { background: var(--white) !important; box-shadow: 0 8px 22px rgba(0,0,0,.5) !important; border: 1px solid var(--border-soft); }
  body.ui-v2.dark-mode .gm-style .gm-style-iw-d:has(.v2-iw) { background: transparent !important; }
  body.ui-v2.dark-mode .gm-style-iw-a:has(.v2-iw) .gm-style-iw-tc::after { background: var(--white) !important; }
  body.ui-v2.dark-mode .v2-iw, body.ui-v2.dark-mode .v2-iw td { color: var(--text) !important; }
  body.ui-v2.dark-mode .v2-iw strong { color: var(--text) !important; }
  body.ui-v2.dark-mode .v2-iw tr:has(> td:nth-child(4)) > td:nth-child(3), body.ui-v2.dark-mode .v2-iw td:first-child { color: var(--muted) !important; }
  body.ui-v2.dark-mode .v2-iw .v2-dist { color: var(--muted); }
  body.ui-v2.dark-mode .v2-iw .v2-dist b { color: var(--text); }
  body.ui-v2.dark-mode .v2-iw .v2-dist > div:first-child b { color: #4ade80; }
  body.ui-v2.dark-mode .v2-iw table, body.ui-v2.dark-mode .v2-iw tr, body.ui-v2.dark-mode .v2-iw td, body.ui-v2.dark-mode .v2-iw > div { border-color: var(--divider) !important; }
  body.ui-v2.dark-mode .gm-style .gm-style-iw-c:has(.v2-iw) .gm-style-iw-chr button span { background-color: var(--muted) !important; }
  body.ui-v2 .gm-style-iw-a.v2-flip .gm-style-iw-tc { display: none !important; }
  body.ui-v2 .v2-iw .v2-dist { display: flex; flex-direction: column; gap: 2px; line-height: 1.35; font-size: 12px; color: var(--muted); white-space: nowrap; }
  body.ui-v2 .v2-iw .v2-dist b { font-family: var(--font-mono); color: var(--text); font-weight: 700; }
  body.ui-v2 .v2-iw .v2-dist > div:first-child b { color: var(--green-tx); }
  body.ui-v2 .v2-iw td { vertical-align: top; }
  body.ui-v2 #sec-viabilidade #map-info-panel, body.ui-v2 #sec-atlas-viabilidade .map-info-panel { display: none !important; }
  body.ui-v2 .v2-iw table { margin-bottom: 0 !important; }
  body.ui-v2 .v2-iw tr:has(> td:nth-child(4)) > td:nth-child(-n+2) { display: none; }
  body.ui-v2 .v2-iw tr:has(> td:nth-child(4)) > td:nth-child(3) { padding-left: 0 !important; }
  body.ui-v2 .v2-iw > div:first-child { margin-bottom: 6px !important; }
  body.ui-v2 .v2-iw { font-family: var(--font); font-size: 12px; padding-right: 22px; }
}


/* ═══════════════════════════════════════════════════════════════════
   ETAPA 2c — FICHA DO CLIENTE COM ABAS  [v3.97.0]
   Abas montadas pelo tema-v2.js sobre o conteúdo que o clientes.js já gera.
   ═══════════════════════════════════════════════════════════════════ */
#v2-ftabs { display: none; }
@media (min-width: 769px) {
  body.ui-v2 #v2-ftabs { display: flex; gap: 2px; padding: 0 20px; border-bottom: 1px solid var(--divider); overflow-x: auto; scrollbar-width: none; }
  body.ui-v2 .v2-ftab { padding: 11px 14px 10px; border: 0; background: none; font-family: var(--font); font-size: var(--fs-md); font-weight: 600; color: var(--muted); cursor: pointer; white-space: nowrap; box-shadow: inset 0 -2px 0 transparent; }
  body.ui-v2 .v2-ftab:hover { color: var(--text); }
  body.ui-v2 .v2-ftab.active { color: var(--primary); font-weight: 700; box-shadow: inset 0 -2px 0 var(--primary); }
  body.ui-v2 #modal-cliente-detalhe .cli-card-detail:has(> .v2-fpane) { display: block !important; min-height: 180px; }
  body.ui-v2 .v2-fpane { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px 16px; }
  body.ui-v2 .v2-fpane > div[style*="grid-column"] { grid-column: 1 / -1; }
  body.ui-v2 .v2-fordens { grid-column: 1 / -1; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; background: var(--surface-2); border-radius: var(--radius-md); padding: 14px 16px; }
  body.ui-v2 .v2-fordens-txt { flex: 1; min-width: 220px; font-size: var(--fs-base); color: var(--muted); }
  body.ui-v2 .v2-fordens .btn-sm { height: 34px; }
  /* histórico: linha do tempo vertical */
  body.ui-v2 .v2-ftimeline { display: flex; flex-direction: column; gap: 0; padding-left: 6px; }
  body.ui-v2 .v2-ftimeline > .cli-detail-item { position: relative; background: none; border-radius: 0; padding: 4px 0 16px 22px; border-left: 2px solid var(--divider); }
  body.ui-v2 .v2-ftimeline > .cli-detail-item:last-child { border-left-color: transparent; padding-bottom: 4px; }
  body.ui-v2 .v2-ftimeline > .cli-detail-item::before { content: ''; position: absolute; left: -7px; top: 5px; width: 12px; height: 12px; border-radius: 50%; background: var(--white); border: 2px solid var(--primary); box-sizing: border-box; }
  body.ui-v2 .v2-ftimeline > .cli-detail-item span { font-family: var(--font-mono); }
}


/* ═══ [v3.98.0] Ficha no padrão do protótipo: Serviços em cartões, sem aba Técnico ═══ */
@media (min-width: 769px) {
  body.ui-v2 .v2-ftab:focus { outline: none; }
  body.ui-v2 .v2-ftab:focus-visible { outline: none; box-shadow: inset 0 -2px 0 var(--primary), 0 0 0 2px var(--blue-line); border-radius: 6px 6px 0 0; }
  body.ui-v2 #cli-modal-acoes .v2-oculto { display: none !important; }
  body.ui-v2 .v2-fsvc { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 10px; }
  body.ui-v2 .v2-fsvc-card { display: flex; align-items: center; gap: 12px; padding: 12px 14px; background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius-md); min-width: 0; }
  body.ui-v2 .v2-fsvc-card:hover { border-color: var(--blue-line); background: var(--blue-soft); }
  body.ui-v2 .v2-fsvc-ico { width: 36px; height: 36px; border-radius: 9px; background: var(--blue-light); display: flex; align-items: center; justify-content: center; font-size: 17px; flex-shrink: 0; }
  body.ui-v2 .v2-fsvc-txt { flex: 1; min-width: 0; }
  body.ui-v2 .v2-fsvc-nome { font-size: var(--fs-md); font-weight: 700; color: var(--text); }
  body.ui-v2 .v2-fsvc-desc { font-size: var(--fs-sm); color: var(--muted); margin-top: 2px; line-height: 1.4; }
  body.ui-v2 .v2-fsvc-bt { height: 32px; padding: 0 14px; flex-shrink: 0; }
  body.ui-v2 .v2-fsec { grid-column: 1 / -1; margin-top: 6px; font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); padding-top: 10px; border-top: 1px solid var(--divider); }
  body.ui-v2 .v2-fsvc + .v2-fsec { margin-top: 8px; }
  body.ui-v2 .v2-fpane > .v2-fsec:first-child { border-top: 0; padding-top: 0; margin-top: 0; }
}


/* ═══ [v3.99.0] Ficha do cliente em página inteira (desktop, ui-v2) ═══ */
#v2-voltar { display: none; }
@media (min-width: 769px) {
  body.ui-v2 #modal-cliente-detalhe.v2-pagina.open {
    position: fixed; inset: var(--v2-bar, 64px) 0 0 var(--v2-side, 232px); z-index: 35; display: block !important;
    background: var(--bg); padding: 16px 22px 28px; overflow-y: auto; backdrop-filter: none; -webkit-backdrop-filter: none;
  }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .modal {
    width: auto !important; max-width: none !important; max-height: none !important; margin: 0 !important; transform: none !important; animation: none !important;
    background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); box-shadow: none; overflow: visible;
  }
  body.ui-v2 #v2-voltar {
    display: inline-flex; align-self: flex-start; width: auto; align-items: center; gap: 6px; height: 32px; padding: 0 12px; margin: 16px 22px 0; border-radius: 8px;
    border: 1px solid var(--border); background: var(--white); color: var(--primary); font-family: var(--font); font-size: var(--fs-base); font-weight: 600; cursor: pointer;
  }
  body.ui-v2 #v2-voltar:hover { background: var(--blue-soft); border-color: var(--blue-line); }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .modal-close { display: none; }
  /* cabeçalho: nome grande à esquerda, selos à direita */
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .modal-header { padding: 18px 22px 14px; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina #cli-modal-title { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; width: 100%; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina #cli-modal-title > span:last-child { order: -1; flex: 1 1 280px; margin-left: 0 !important; font-size: 20px !important; font-weight: 700; letter-spacing: -.3px; color: var(--text); }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina #cli-modal-acoes { padding: 12px 22px 0; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina #v2-ftabs { padding: 0 22px; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .cli-card-detail { padding: 18px 22px 22px !important; }
  /* Dados da reserva em blocos */
  body.ui-v2 .v2-fpane.v2-fblocos { display: flex; flex-direction: column; gap: 16px; }
  body.ui-v2 .v2-fbloco-tit { font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); margin-bottom: 8px; }
  body.ui-v2 .v2-fbloco + .v2-fbloco { padding-top: 14px; border-top: 1px solid var(--divider); }
  body.ui-v2 .v2-fbloco-grade { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px 14px; }
  /* Contrato: cartão maior */
  body.ui-v2 .v2-fpane[data-aba="contrato"] { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
  body.ui-v2 .v2-fpane[data-aba="contrato"] .cli-detail-item { padding: 16px 18px; border: 1px solid var(--border-soft); background: var(--white); }
  body.ui-v2 .v2-fpane[data-aba="contrato"] .cli-detail-item span { font-size: 15px; }
}


/* ═══ [v3.100.0] Ficha no layout do protótipo: cabeçalho em cartão, abas segmentadas, conteúdo em cartões ═══ */
.v2-fav { display: none; }
@media (min-width: 769px) {
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .modal { background: transparent !important; border: 0 !important; display: flex; flex-direction: column; gap: 14px; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina #v2-voltar { margin: 0; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .modal > div[style*="padding:0"] { display: flex; flex-direction: column; gap: 14px; }
  /* cabeçalho */
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .modal-header {
    display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: 16px; row-gap: 10px; align-items: center;
    padding: 18px 20px; background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius);
  }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fav {
    display: flex; grid-row: 1 / span 2; width: 52px; height: 52px; border-radius: 14px; background: var(--blue-light); color: var(--primary);
    align-items: center; justify-content: center; font-size: 15px; font-weight: 800;
  }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina #cli-modal-title { grid-column: 2; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina #cli-modal-title > span:last-child { font-size: 18px !important; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .modal-header > #cli-modal-acoes { grid-column: 2; padding: 0 !important; margin: 0 !important; justify-content: flex-end; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina #cli-modal-acoes .btn-sm { height: 32px; font-size: 12px !important; }
  /* abas segmentadas, fora do cartão */
  body.ui-v2 #modal-cliente-detalhe.v2-pagina #v2-ftabs {
    align-self: flex-start; display: inline-flex; gap: 3px; padding: 3px !important; border: 1px solid var(--border-soft); border-radius: var(--radius-md); background: var(--surface-2);
  }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-ftab { padding: 7px 14px; border-radius: 7px; font-size: var(--fs-base); box-shadow: none !important; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-ftab.active { background: var(--white); color: var(--primary); box-shadow: 0 1px 3px rgba(0,48,135,.12) !important; }
  /* conteúdo: cada aba em cartão; Dados da reserva com um cartão por bloco */
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .cli-card-detail { padding: 0 !important; border: 0 !important; background: transparent !important; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fpane:not(.v2-fblocos) { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); padding: 18px 20px; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fpane.v2-fblocos:not([hidden]) { display: grid; grid-template-columns: repeat(auto-fit, minmax(360px, 1fr)); gap: 14px; align-items: start; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fbloco { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); overflow: hidden; padding: 0 !important; border-top: 1px solid var(--border-soft) !important; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fbloco-tit { margin: 0; padding: 12px 18px; border-bottom: 1px solid var(--divider); font-size: var(--fs-md); font-weight: 700; letter-spacing: 0; text-transform: none; color: var(--text); }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fbloco-grade { padding: 14px 18px 16px; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 18px; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fbloco .cli-detail-item { background: none; padding: 0; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fordens { background: none; padding: 0; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fordens .servicos-dropdown { position: relative; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fsvc-card > .btn-sm.v2-fsvc-bt { height: 32px; padding: 0 14px; }
}

@media (min-width: 769px) { body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fsvc { grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); } }

/* [v3.100.2] Dados da reserva: Rede à esquerda ocupando 2 linhas; Cliente e Empresa empilhados à direita */
@media (min-width: 1100px) {
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fpane.v2-fblocos:not([hidden]) { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fpane.v2-fblocos > .v2-fbloco:first-child { grid-row: span 2; }
}

/* [v3.101.0] Lista de OS dentro da aba Ordens da ficha */
body.ui-v2 .v2-oslista { display: flex; flex-direction: column; gap: 10px; margin-bottom: 12px; }
body.ui-v2 .v2-osf { display: flex; gap: 6px; flex-wrap: wrap; }
body.ui-v2 .v2-osf-b { height: 30px; padding: 0 11px; border-radius: var(--radius-pill); border: 1px solid var(--border); background: var(--white); color: var(--text-2); font-family: var(--font); font-size: var(--fs-base); font-weight: 600; cursor: pointer; display: inline-flex; align-items: center; gap: 6px; }
body.ui-v2 .v2-osf-b span { font-family: var(--font-mono); font-size: 11px; color: var(--muted); }
body.ui-v2 .v2-osf-b:hover { border-color: var(--blue-line); color: var(--primary); }
body.ui-v2 .v2-osf-b.on { background: var(--blue-light); border-color: var(--blue-line); color: var(--primary); font-weight: 700; }
body.ui-v2 .v2-osf-b.on span { color: var(--primary); }
body.ui-v2 .v2-osl { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); overflow: hidden; }
body.ui-v2 .v2-osl-row { display: grid; grid-template-columns: minmax(120px, 150px) minmax(0, 1fr) 130px 120px; gap: 12px; align-items: center; padding: 11px 14px; border-top: 1px solid var(--divider); cursor: pointer; }
body.ui-v2 .v2-osl-row:first-child { border-top: 0; }
body.ui-v2 .v2-osl-row:hover { background: var(--surface-2); }
body.ui-v2 .v2-osl-num { font-family: var(--font-mono); font-weight: 700; color: var(--primary); font-size: var(--fs-base); }
body.ui-v2 .v2-osl-row .os-tipo-badge { justify-self: start; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.ui-v2 .v2-osl-data { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--muted); white-space: nowrap; }
body.ui-v2 .v2-osl-row .os-status-badge { justify-self: start; }
body.ui-v2 .v2-osl-vazio { padding: 22px 14px; text-align: center; font-size: var(--fs-base); color: var(--subtle); }
@media (max-width: 768px) { body.ui-v2 .v2-osl-row { grid-template-columns: 1fr auto; } body.ui-v2 .v2-osl-data { display: none; } }

/* [v3.101.1] aba Ordens no formato do protótipo: cabeçalho (texto + Nova OS) em cima,
   pílulas numa linha e a lista ocupando a largura toda */
body.ui-v2 .v2-fpane:has(> .v2-oslista):not([style*="none"]) { display: flex; flex-direction: column; gap: 14px; }
body.ui-v2 .v2-fpane:has(> .v2-oslista) > .v2-fordens { order: -1; margin: 0; padding: 0 0 12px; border-top: 0; border-bottom: 1px solid var(--divider); }
body.ui-v2 .v2-oslista { width: 100%; grid-column: 1 / -1; align-self: stretch; margin: 0; }
body.ui-v2 .v2-osf { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
body.ui-v2 .v2-osf-b { flex: 0 0 auto; white-space: nowrap; }
body.ui-v2 .v2-osf-b.zero:not(.on) { color: var(--subtle); }
body.ui-v2 .v2-osf-b.zero:not(.on) span { opacity: .6; }
body.ui-v2 .v2-osl { width: 100%; }
body.ui-v2 .v2-osl-cab, body.ui-v2 .v2-osl-row { display: grid; grid-template-columns: 34px minmax(130px, 170px) minmax(0, 1fr) 150px 130px; gap: 12px; align-items: center; padding: 10px 16px; }
body.ui-v2 .v2-osl-cab { background: var(--surface-2); border-bottom: 1px solid var(--border-soft); font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); padding-top: 9px; padding-bottom: 9px; }
body.ui-v2 .v2-osl-corpo .v2-osl-row { border-top: 1px solid var(--divider); }
body.ui-v2 .v2-osl-corpo .v2-osl-row:first-child { border-top: 0; }
body.ui-v2 .v2-osl-ico { width: 30px; height: 30px; border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: 14px; background: var(--surface-2); }
body.ui-v2 .v2-osl-ico-manutencao { background: var(--warn-bg); }
body.ui-v2 .v2-osl-ico-reserva { background: var(--blue-light); }
body.ui-v2 .v2-osl-ico-ativacao { background: var(--green-light); }
body.ui-v2 .v2-osl-ico-cancelamento, body.ui-v2 .v2-osl-ico-bloqueio { background: var(--orange-light); color: var(--red-tx); font-weight: 800; }
body.ui-v2 .v2-osl-ico-pendencia { background: var(--warn-bg); color: var(--warn-tx); font-weight: 800; }
body.ui-v2 .os-tipo-bloqueio { background: var(--orange-light); color: var(--red-tx); }
@media (max-width: 768px) {
  body.ui-v2 .v2-osl-cab { display: none; }
  body.ui-v2 .v2-osl-row { grid-template-columns: 30px 1fr auto; }
  body.ui-v2 .v2-osl-row .os-tipo-badge { grid-column: 2; grid-row: 2; }
}

/* [v3.101.2] Fontes iguais ao protótipo: Inter no texto, IBM Plex Mono nos números.
   Classes e estilos antigos com "monospace"/"Courier" passam para a mono do tema. */
body.ui-v2, body.ui-v2 button, body.ui-v2 input, body.ui-v2 select, body.ui-v2 textarea { font-family: var(--font); }
body.ui-v2 .os-numero, body.ui-v2 .os-modal-numero, body.ui-v2 .os-descricao, body.ui-v2 .log-coord,
body.ui-v2 code, body.ui-v2 pre, body.ui-v2 kbd, body.ui-v2 .mono,
body.ui-v2 [style*="font-family:monospace"], body.ui-v2 [style*="font-family: monospace"],
body.ui-v2 [style*="font-family:'Courier"], body.ui-v2 [style*="font-family: 'Courier"],
body.ui-v2 [style*="font-family:Courier"], body.ui-v2 [style*="font-family:ui-monospace"] { font-family: var(--font-mono) !important; }
body.ui-v2 .v2-osl-num, body.ui-v2 .v2-osl-data { font-family: var(--font-mono); font-feature-settings: "tnum" 1; }

/* [v3.102.0] Sinal 48 h dentro de Dados da reserva (ao lado de Rede) */
body.ui-v2 .v2-s48 { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); padding: 14px 16px; display: flex; flex-direction: column; gap: 10px; min-width: 0; }
body.ui-v2 .v2-s48-cab { display: flex; align-items: center; gap: 8px; }
body.ui-v2 .v2-s48-tit { flex: 1; font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); }
body.ui-v2 .v2-s48-bt { height: 28px; padding: 0 10px; border-radius: 7px; border: 1px solid var(--border); background: var(--white); color: var(--primary); font-family: var(--font); font-size: var(--fs-sm); font-weight: 600; cursor: pointer; }
body.ui-v2 .v2-s48-bt:hover { background: var(--blue-soft); border-color: var(--blue-line); }
body.ui-v2 .v2-s48-svg { width: 100%; height: 120px; display: block; }
body.ui-v2 .v2-s48-nums { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
body.ui-v2 .v2-s48-num { background: var(--surface-2); border-radius: 8px; padding: 8px 10px; min-width: 0; }
body.ui-v2 .v2-s48-num b { display: block; font-family: var(--font-mono); font-size: 15px; font-weight: 600; color: var(--text); white-space: nowrap; }
body.ui-v2 .v2-s48-num span { font-size: 10px; font-weight: 700; letter-spacing: .6px; text-transform: uppercase; color: var(--subtle); }
body.ui-v2 .v2-s48-msg { font-size: var(--fs-base); color: var(--muted); padding: 14px 0; text-align: center; }
@media (min-width: 1100px) {
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fpane.v2-fblocos:has(> .v2-s48):not([style*="none"]) { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr) minmax(0, 1fr); }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fpane.v2-fblocos > .v2-s48 { grid-column: 2 / span 2; grid-row: 1; }
}

body.ui-v2 .v2-s48-num i { display: block; font-style: normal; font-family: var(--font-mono); font-size: 10.5px; color: var(--muted); margin-top: 2px; }
/* Dados da reserva com sinal: Rede à esquerda (2 linhas) · Sinal à direita em cima · Cliente e Empresa embaixo */
@media (min-width: 1100px) {
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fpane.v2-fblocos:has(> .v2-s48):not([style*="none"]) { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr) minmax(0, 1fr); }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fpane.v2-fblocos:has(> .v2-s48) > .v2-fbloco:first-child { grid-column: 1; grid-row: 1 / span 2; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fpane.v2-fblocos > .v2-s48 { grid-column: 2 / span 2; grid-row: 1; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fpane.v2-fblocos:has(> .v2-s48) > .v2-fbloco:nth-child(2) { grid-column: 2; grid-row: 2; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fpane.v2-fblocos:has(> .v2-s48) > .v2-fbloco:nth-child(3) { grid-column: 3; grid-row: 2; }
}

body.ui-v2 .v2-s48-ult { color: var(--c); }
body.ui-v2.dark-mode .v2-s48-ult { color: color-mix(in srgb, var(--c) 45%, #ffffff); }
body.ui-v2 .v2-s48-cab { flex-wrap: nowrap; }
body.ui-v2 .v2-s48-tit { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
body.ui-v2 .v2-s48-bt { white-space: nowrap; flex-shrink: 0; }

/* ═══ v3.103.0 — Dados da reserva e sinal no formato do protótipo ═══
   Linha 1: Rede | Sinal 48 h · Linha 2: Endereço (largura toda) · Linha 3: Cliente | Empresa */
@media (min-width: 900px) {
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fpane.v2-fblocos:not([style*="none"]),
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fpane.v2-fblocos:has(> .v2-s48):not([style*="none"]) { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; align-items: start; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fpane.v2-fblocos > * { grid-column: auto !important; grid-row: auto !important; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fpane.v2-fblocos > .v2-fb-end { grid-column: 1 / -1 !important; }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fpane.v2-fblocos > .v2-fb-end .v2-fbloco-grade { grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fpane.v2-fblocos:not(:has(> .v2-s48)) > .v2-fb-loc { grid-column: 1 / -1 !important; }
}
body.ui-v2 .v2-s48 { padding: 0; gap: 0; overflow: hidden; }
body.ui-v2 .v2-s48-cab { padding: 12px 18px; border-bottom: 1px solid var(--divider); gap: 14px; }
body.ui-v2 .v2-s48-tit { font-size: var(--fs-lg); font-weight: 700; letter-spacing: 0; text-transform: none; color: var(--text); }
body.ui-v2 .v2-s48-res { display: flex; align-items: center; gap: 14px; }
body.ui-v2 .v2-s48-k { text-align: right; }
body.ui-v2 .v2-s48-k span { display: block; font-size: 10px; font-weight: 700; letter-spacing: .6px; text-transform: uppercase; color: var(--subtle); }
body.ui-v2 .v2-s48-k b { font-family: var(--font-mono); font-size: var(--fs-base); font-weight: 600; color: var(--muted); white-space: nowrap; }
body.ui-v2 .v2-s48-k b.v2-s48-ult { color: var(--c); }
body.ui-v2.dark-mode .v2-s48-k b.v2-s48-ult { color: color-mix(in srgb, var(--c) 45%, #ffffff); }
body.ui-v2 .v2-s48-corpo { padding: 16px 18px 12px; }
body.ui-v2 .v2-s48-area { position: relative; display: flex; align-items: flex-end; gap: 2px; height: 132px; }
body.ui-v2 .v2-s48-b { flex: 1; min-width: 3px; border-radius: 3px 3px 0 0; background: var(--c); cursor: pointer; transition: filter .1s; }
body.ui-v2 .v2-s48-b:hover, body.ui-v2 .v2-s48-b.sel { background: var(--primary); }
body.ui-v2 .v2-s48-b.vazia { height: 4px; background: var(--divider); cursor: default; }
body.ui-v2 .v2-s48-base { position: absolute; left: 0; right: 0; height: 1px; background: var(--blue-line); pointer-events: none; }
body.ui-v2 .v2-s48-base span { position: absolute; right: 0; bottom: 4px; font-size: 10px; font-weight: 700; color: var(--subtle); background: var(--white); padding: 0 4px; }
body.ui-v2 .v2-s48-tip { position: absolute; bottom: calc(100% - 20px); transform: translateX(-50%); background: #1a2340; color: #ffffff; padding: 7px 11px; border-radius: 8px; box-shadow: 0 6px 18px rgba(16,26,48,.22); pointer-events: none; white-space: nowrap; z-index: 3; }
body.ui-v2 .v2-s48-tip b { display: block; font-family: var(--font-mono); font-size: 13px; font-weight: 600; }
body.ui-v2 .v2-s48-tip i { display: block; font-style: normal; font-size: 10.5px; color: #b8c4dd; margin-top: 2px; }
body.ui-v2.dark-mode .v2-s48-tip { background: #e8edf7; color: #111827; }
body.ui-v2.dark-mode .v2-s48-tip i { color: #4a5570; }
body.ui-v2 .v2-s48-eixo { display: flex; justify-content: space-between; padding: 6px 0 4px; font-family: var(--font-mono); font-size: 10px; color: var(--subtle); }
body.ui-v2 .v2-s48-nota { font-size: 11px; color: var(--subtle); }
body.ui-v2 .v2-s48-num, body.ui-v2 .v2-s48-nums, body.ui-v2 .v2-s48-svg { display: none; }
@media (max-width: 1250px) { body.ui-v2 .v2-s48-cab { flex-wrap: wrap; } body.ui-v2 .v2-s48-res { width: 100%; justify-content: flex-start; } body.ui-v2 .v2-s48-k { text-align: left; } }

/* ═══ v3.104.0 — cabeçalho da ficha, sinal ativação e sincronização ═══ */
body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-oculto-tit { display: none !important; }
body.ui-v2 #modal-cliente-detalhe.v2-pagina .modal-header { display: flex; align-items: center; gap: 16px; }
body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fav { width: 52px; height: 52px; border-radius: 12px; font-size: 17px; flex-shrink: 0; }
body.ui-v2 .v2-fid { flex: 1; min-width: 0; }
body.ui-v2 .v2-fid-nome { font-size: 18px; font-weight: 700; letter-spacing: -.2px; color: var(--text); text-transform: uppercase; line-height: 1.25; overflow-wrap: anywhere; }
body.ui-v2 .v2-fid-sub { font-size: var(--fs-base); color: var(--muted); margin-top: 4px; }
body.ui-v2 .v2-fid-sub .mono { font-family: var(--font-mono); }
body.ui-v2 .v2-sat { font-family: var(--font-mono); font-weight: 600; color: var(--text-2); }
body.ui-v2 .v2-sat-d { font-size: 11px; color: var(--subtle); margin-top: 2px; font-weight: 500; }
/* caixas contornadas: Última leitura e Sinal ativação */
body.ui-v2 .v2-s48-k { border: 1px solid var(--border); border-radius: 8px; padding: 5px 10px; text-align: left; min-width: 0; }
body.ui-v2 .v2-s48-k:first-child { border-color: color-mix(in srgb, var(--c, var(--border)) 55%, var(--border)); }
body.ui-v2 .v2-s48-res { gap: 8px; }
/* sincronização (só master): largura toda, discreto */
@media (min-width: 900px) { body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fpane.v2-fblocos > .v2-fb-syn { grid-column: 1 / -1 !important; } }
body.ui-v2 .v2-fb-syn .v2-fbloco-grade { grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); }

/* [v3.104.1] título do gráfico nunca corta; as caixas descem se faltar espaço */
body.ui-v2 .v2-s48-cab { flex-wrap: wrap; row-gap: 8px; }
body.ui-v2 .v2-s48-tit { flex: 1 0 auto; overflow: visible; }
body.ui-v2 .v2-s48-res { flex-wrap: wrap; justify-content: flex-end; }
/* linha de baixo do cabeçalho: status + dados na mesma linha */
body.ui-v2 .v2-fid-sub:empty { display: none; }

/* [v3.104.2] coluna direita do cabeçalho: selos em cima, ações embaixo */
body.ui-v2 #modal-cliente-detalhe.v2-pagina .modal-header { display: flex !important; align-items: center; gap: 16px; }
body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fdir { margin-left: auto; display: flex; flex-direction: column; align-items: flex-end; gap: 9px; flex-shrink: 0; }
body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fsts { display: flex; gap: 7px; flex-wrap: wrap; justify-content: flex-end; }
body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fsts:empty { display: none; }
body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fdir > #cli-modal-acoes { padding: 0 !important; margin: 0 !important; justify-content: flex-end; }
body.ui-v2 #modal-cliente-detalhe.v2-pagina .v2-fsts [class*="badge"] { font-size: 11px; font-weight: 700; padding: 4px 11px; border-radius: 20px; }

/* [v3.105.0] aba Contrato em cartão */
body.ui-v2 .v2-fctr { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); overflow: hidden; }
body.ui-v2 .v2-fctr .v2-fbloco-grade { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 16px 20px; padding: 16px 18px; }
body.ui-v2 .v2-fctr .v2-fctr-end { grid-column: span 2; }
body.ui-v2 .v2-fctr .cli-detail-item { background: transparent; padding: 0; }
body.ui-v2 .v2-fctr .mono { font-family: var(--font-mono); }
@media (max-width: 768px) { body.ui-v2 .v2-fctr .v2-fctr-end { grid-column: auto; } }

/* [v3.106.0] Nova OS a partir da ficha: cliente fixo (sem busca nem "trocar") */
body.ui-v2 #modal-os-manutencao.v2-cli-fixo #os-man-cliente-busca,
body.ui-v2 #modal-os-manutencao.v2-cli-fixo #os-man-cliente-lista,
body.ui-v2 #modal-os-manutencao.v2-cli-fixo #os-man-cliente-selecionado button { display: none !important; }
body.ui-v2 #modal-os-manutencao.v2-cli-fixo #os-man-cliente-selecionado { background: var(--blue-soft); border: 1px solid var(--blue-line); border-radius: var(--radius-md); padding: 10px 12px; }
/* busca do histórico */
body.ui-v2 .v2-hbusca { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
body.ui-v2 .v2-hbusca input { flex: 1; max-width: 420px; height: 38px; box-sizing: border-box; border: 1.5px solid var(--border); border-radius: var(--radius-md); padding: 0 12px; font-family: var(--font); font-size: var(--fs-md); background: var(--white); color: var(--text); outline: none; }
body.ui-v2 .v2-hbusca input:focus { border-color: var(--primary); box-shadow: var(--focus-ring); }
body.ui-v2 .v2-hbusca-n { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--subtle); }
body.ui-v2 .v2-ftimeline > .v2-hbusca::before { display: none !important; }

/* [v3.106.1] Contrato: cartão na largura toda, 4 colunas, fonte como o resto da ficha */
body.ui-v2 #modal-cliente-detalhe .v2-fpane > .v2-fctr { grid-column: 1 / -1 !important; width: 100%; max-width: none; box-sizing: border-box; }
body.ui-v2 #modal-cliente-detalhe .v2-fpane:has(> .v2-fctr):not([style*="none"]) { display: block !important; }
body.ui-v2 .v2-fctr .v2-fbloco-tit { padding: 12px 18px; font-size: var(--fs-lg); font-weight: 700; border-bottom: 1px solid var(--divider); }
body.ui-v2 .v2-fctr .v2-fbloco-grade { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; gap: 18px 24px; padding: 16px 18px 18px; }
body.ui-v2 .v2-fctr .v2-fctr-end { grid-column: span 2; }
body.ui-v2 .v2-fctr .cli-detail-item { border: 0 !important; background: transparent !important; padding: 0 !important; min-height: 0 !important; }
body.ui-v2 .v2-fctr .cli-detail-item > label { font-size: 10.5px; font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); margin: 0 0 4px; }
body.ui-v2 .v2-fctr .cli-detail-item > span { font-size: var(--fs-md) !important; font-weight: 600; color: var(--text); line-height: 1.4; }
body.ui-v2 .v2-fctr .cli-detail-item > span.mono, body.ui-v2 .v2-fctr .cli-detail-item .mono { font-family: var(--font-mono); font-size: var(--fs-md) !important; }
body.ui-v2 .v2-fctr .cli-detail-item > span.empty { font-weight: 500; font-style: normal; color: var(--subtle); }
@media (max-width: 1100px) { body.ui-v2 .v2-fctr .v2-fbloco-grade { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } }
@media (max-width: 600px) { body.ui-v2 .v2-fctr .v2-fbloco-grade { grid-template-columns: 1fr !important; } body.ui-v2 .v2-fctr .v2-fctr-end { grid-column: auto; } }

/* [v3.106.2] Contrato RBX no mesmo tamanho dos outros valores */
body.ui-v2 .v2-fctr .cli-detail-item > span * { font-size: inherit !important; line-height: inherit !important; }
body.ui-v2 .v2-fctr .cli-detail-item > span { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
body.ui-v2 .v2-fctr .cli-detail-item > span strong, body.ui-v2 .v2-fctr .cli-detail-item > span b { font-family: var(--font-mono); font-weight: 600; }
body.ui-v2 .v2-fctr .cli-detail-item > span [style*="font-size:10"], body.ui-v2 .v2-fctr .cli-detail-item > span [style*="font-size:11"], body.ui-v2 .v2-fctr .cli-detail-item > span small { font-size: 11px !important; }
body.ui-v2 .v2-fctr .cli-detail-item > span button { height: 22px; min-width: 24px; padding: 0 6px; font-size: 11px !important; border-radius: 6px; }
body.ui-v2 .v2-fctr .cli-detail-item > span img, body.ui-v2 .v2-fctr .cli-detail-item > span svg { width: 14px; height: 14px; }

/* ═══ v3.107.0 — Contrato em linhas (ordem pedida) ═══ */
body.ui-v2 .v2-fctr .v2-fbloco-grade { display: flex !important; flex-direction: column; gap: 16px; }
body.ui-v2 .v2-fctr .v2-fctr-l1 { display: grid; grid-template-columns: 1fr; }
body.ui-v2 .v2-fctr .v2-fctr-l2 { display: grid; grid-template-columns: minmax(150px, 220px) minmax(0, 1fr); gap: 0 24px; align-items: start; }
body.ui-v2 .v2-fctr .v2-fctr-evs { display: flex; flex-direction: column; gap: 12px; padding-top: 14px; border-top: 1px solid var(--divider); }
body.ui-v2 .v2-fctr .v2-fctr-ev { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 1fr); gap: 0 24px; }
/* contrato RBX no mesmo tamanho dos outros campos */
body.ui-v2 .v2-fctr .v2-fctr-mov > span, body.ui-v2 .v2-fctr .v2-fctr-mov > span * { font-size: var(--fs-md) !important; line-height: 1.4; }
body.ui-v2 .v2-fctr .v2-fctr-mov > span { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-weight: 600; }
body.ui-v2 .v2-fctr .v2-fctr-mov > span strong, body.ui-v2 .v2-fctr .v2-fctr-mov > span b { font-family: var(--font-mono); font-weight: 600; }
body.ui-v2 .v2-fctr .v2-fctr-mov button, body.ui-v2 .v2-fctr .v2-fctr-mov .btn-sm { height: 26px; min-width: 26px; padding: 0 7px; font-size: 12px !important; border-radius: 7px; }
body.ui-v2 .v2-fctr .v2-fctr-mov img, body.ui-v2 .v2-fctr .v2-fctr-mov svg { width: 14px; height: 14px; }
@media (max-width: 768px) { body.ui-v2 .v2-fctr .v2-fctr-l2, body.ui-v2 .v2-fctr .v2-fctr-ev { grid-template-columns: 1fr; gap: 12px; } }

/* ═══ v3.108.0 — Serviços no formato do protótipo · aba APIs · OS sobre a ficha ═══ */
@media (min-width: 769px) {
  body.ui-v2 #modal-cliente-detalhe .v2-fsvc { grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)) !important; gap: 14px; }
}
body.ui-v2 #modal-cliente-detalhe .v2-fsvc-card { display: grid !important; grid-template-columns: 38px minmax(0, 1fr); align-items: start; gap: 12px 14px; padding: 16px 18px; border-radius: var(--radius); background: var(--white); cursor: default; }
body.ui-v2 #modal-cliente-detalhe .v2-fsvc-card:hover { background: var(--white); border-color: var(--blue-line); }
body.ui-v2 #modal-cliente-detalhe .v2-fsvc-ico { width: 38px; height: 38px; border-radius: 10px; font-size: 17px; }
body.ui-v2 #modal-cliente-detalhe .v2-fsvc-nome { font-size: var(--fs-lg); font-weight: 700; }
body.ui-v2 #modal-cliente-detalhe .v2-fsvc-desc { font-size: var(--fs-sm); line-height: 1.5; margin-top: 3px; text-wrap: pretty; }
body.ui-v2 #modal-cliente-detalhe .v2-fsvc-pe { grid-column: 1 / -1; display: flex; justify-content: flex-end; padding-top: 12px; border-top: 1px solid var(--divider); margin-top: 2px; }
body.ui-v2 #modal-cliente-detalhe .v2-fsvc-pe > button, body.ui-v2 #modal-cliente-detalhe .v2-fsvc-pe > .btn-sm { height: 36px !important; min-width: 170px; padding: 0 16px !important; justify-content: center; border-radius: var(--radius-md); background: var(--white); color: var(--primary); border: 1px solid var(--blue-line); font-weight: 600; }
body.ui-v2 #modal-cliente-detalhe .v2-fsvc-pe > button:hover, body.ui-v2 #modal-cliente-detalhe .v2-fsvc-pe > .btn-sm:hover { background: var(--blue-soft); }
/* aba APIs */
body.ui-v2 #modal-cliente-detalhe .v2-fpane[data-aba="apis"] > .v2-fapis { width: 100%; }
body.ui-v2 .v2-fapis .v2-fbloco-tit::after { content: none !important; }
body.ui-v2 .v2-fapis .v2-fbloco-grade { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
/* OS aberta a partir da ficha fica por cima dela */
body.ui-v2.v2-os-sobre-ficha #modal-os-detalhe, body.ui-v2.v2-os-sobre-ficha #modal-os-transferir { z-index: 3000 !important; }

/* ═══ v3.109.0 — aba APIs em largura total · menu lateral no formato do protótipo ═══ */
body.ui-v2 #modal-cliente-detalhe .v2-fpane[data-aba="apis"]:not([style*="none"]) { display: block !important; padding: 0 !important; background: transparent !important; border: 0 !important; }
body.ui-v2 #modal-cliente-detalhe .v2-fpane[data-aba="apis"] > .v2-fapis { width: 100%; box-sizing: border-box; }
body.ui-v2 .v2-fapis .v2-fbloco-tit { padding: 13px 18px; font-size: var(--fs-lg); font-weight: 700; border-bottom: 1px solid var(--divider); }
body.ui-v2 .v2-fapis .v2-fbloco-grade { display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)) !important; gap: 16px 24px; padding: 16px 18px 18px; }
body.ui-v2 .v2-fapis .cli-detail-item { background: transparent !important; border: 0 !important; padding: 0 !important; min-width: 0; }
body.ui-v2 .v2-fapis .cli-detail-item > label { font-size: 10.5px; font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); margin: 0 0 5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
body.ui-v2 .v2-fapis .cli-detail-item > span { display: flex; align-items: center; gap: 6px; font-size: var(--fs-md) !important; font-weight: 600; color: var(--text); word-break: normal; overflow-wrap: normal; white-space: nowrap; }
body.ui-v2 .v2-fapis .cli-detail-item > span:not(:has(*)) { font-family: var(--font-mono); }
@media (max-width: 1100px) { body.ui-v2 .v2-fapis .v2-fbloco-grade { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } }

@media (min-width: 769px) {
  /* itens: sigla em quadradinho + nome; o emoji de cada item some (a sigla o substitui) */
  body.ui-v2 #nav-menu .v2-emo { display: none !important; }
  body.ui-v2 #nav-menu .nav-dropdown-item,
  body.ui-v2 #nav-menu .nav-dropdown-btn[data-section] {
    display: flex !important; align-items: center; gap: 10px; padding: 7px 10px !important; margin: 1px 0; border-radius: 9px;
    font-size: 12.5px !important; font-weight: 600 !important; color: var(--text-2) !important; background: transparent !important; box-shadow: none !important;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-transform: none; letter-spacing: 0;
  }
  body.ui-v2 #nav-menu .nav-dropdown-item::before,
  body.ui-v2 #nav-menu .nav-dropdown-btn[data-section]::before {
    content: attr(data-sigla); width: 24px; height: 24px; border-radius: 6px; flex-shrink: 0;
    display: inline-flex; align-items: center; justify-content: center;
    font-family: var(--font-mono); font-size: 10.5px; font-weight: 600; letter-spacing: 0;
    background: var(--surface-2); color: var(--muted);
  }
  body.ui-v2 #nav-menu .nav-dropdown-item:hover,
  body.ui-v2 #nav-menu .nav-dropdown-btn[data-section]:hover { background: var(--surface-2) !important; color: var(--text) !important; }
  body.ui-v2 #nav-menu .nav-dropdown-item.active,
  body.ui-v2 #nav-menu .nav-dropdown-btn[data-section].active { background: var(--primary) !important; color: var(--on-primary) !important; }
  body.ui-v2 #nav-menu .nav-dropdown-item.active::before,
  body.ui-v2 #nav-menu .nav-dropdown-btn[data-section].active::before { background: color-mix(in srgb, var(--on-primary) 20%, transparent); color: var(--on-primary); }
  /* títulos dos grupos */
  body.ui-v2 #nav-menu .nav-dropdown-btn:not([data-section]) {
    padding: 13px 10px 5px !important; font-size: 10.5px !important; font-weight: 700 !important; letter-spacing: .9px; text-transform: uppercase; color: var(--subtle) !important;
  }
  body.ui-v2 #nav-menu .nav-dropdown:has(.nav-dropdown-item.active) > .nav-dropdown-btn { color: var(--primary) !important; }
  body.ui-v2.dark-mode #nav-menu .nav-dropdown:has(.nav-dropdown-item.active) > .nav-dropdown-btn { color: var(--accent) !important; }
  body.ui-v2 #nav-menu .nav-dropdown-btn .caret { font-size: 9px; color: var(--subtle); }
  body.ui-v2 #nav-menu .nav-dropdown-menu { gap: 0 !important; padding: 0 !important; }
  /* modo recolhido continua só com a sigla, centralizada */
  body.ui-v2.v2-mini #nav-menu .nav-dropdown-item, body.ui-v2.v2-mini #nav-menu .nav-dropdown-btn[data-section] { justify-content: center; padding: 6px 0 !important; font-size: 0 !important; }
  body.ui-v2.v2-mini #nav-menu .nav-dropdown-item.active, body.ui-v2.v2-mini #nav-menu .nav-dropdown-btn[data-section].active { background: transparent !important; }
  body.ui-v2.v2-mini #nav-menu .nav-dropdown-item.active::before, body.ui-v2.v2-mini #nav-menu .nav-dropdown-btn[data-section].active::before { background: var(--primary); color: var(--on-primary); }
  body.ui-v2.v2-mini #nav-menu .nav-dropdown-item::before, body.ui-v2.v2-mini #nav-menu .nav-dropdown-btn[data-section]::before { width: 34px; height: 30px; border-radius: 8px; font-size: 11px; }
}

/* ═══ v3.110.0 — menu (Buscar em grupo próprio, grupos de 1 item), usuário, busca rápida, listas ═══ */
@media (min-width: 769px) {
  /* grupo de 1 item: o título vira o próprio item (sigla + nome, abre direto) */
  body.ui-v2 #nav-menu .nav-dropdown.v2-solo > .nav-dropdown-menu { display: none !important; }
  body.ui-v2 #nav-menu .nav-dropdown.v2-solo > .nav-dropdown-btn {
    display: flex !important; align-items: center; gap: 10px; margin-top: 8px; padding: 7px 10px !important; border-radius: 9px;
    font-size: 12.5px !important; font-weight: 600 !important; letter-spacing: 0 !important; text-transform: none !important; color: var(--text-2) !important;
  }
  body.ui-v2 #nav-menu .nav-dropdown.v2-solo > .nav-dropdown-btn .caret { display: none; }
  body.ui-v2 #nav-menu .nav-dropdown.v2-solo > .nav-dropdown-btn::before {
    content: attr(data-sigla); width: 24px; height: 24px; border-radius: 6px; flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center;
    font-family: var(--font-mono); font-size: 10.5px; font-weight: 600; background: var(--surface-2); color: var(--muted);
  }
  body.ui-v2 #nav-menu .nav-dropdown.v2-solo > .nav-dropdown-btn:hover { background: var(--surface-2) !important; color: var(--text) !important; }
  body.ui-v2 #nav-menu .nav-dropdown.v2-solo > .nav-dropdown-btn.v2-solo-ativo { background: var(--primary) !important; color: var(--on-primary) !important; }
  body.ui-v2 #nav-menu .nav-dropdown.v2-solo > .nav-dropdown-btn.v2-solo-ativo::before { background: color-mix(in srgb, var(--on-primary) 20%, transparent); color: var(--on-primary); }
  body.ui-v2 #nav-menu .nav-dropdown.v2-solo > .nav-dropdown-btn [id^="badge-"] { margin-left: auto; }
  body.ui-v2.v2-mini #nav-menu .nav-dropdown.v2-solo > .nav-dropdown-btn { justify-content: center; padding: 6px 0 !important; font-size: 0 !important; margin-top: 2px; }
  body.ui-v2.v2-mini #nav-menu .nav-dropdown.v2-solo > .nav-dropdown-btn::before { width: 34px; height: 30px; border-radius: 8px; font-size: 11px; }
  body.ui-v2.v2-mini #nav-menu .nav-dropdown.v2-solo > .nav-dropdown-btn.v2-solo-ativo { background: transparent !important; }
  body.ui-v2.v2-mini #nav-menu .nav-dropdown.v2-solo > .nav-dropdown-btn.v2-solo-ativo::before { background: var(--primary); color: var(--on-primary); }

  /* usuário: avatar · nome/empresa · senha/sair numa linha só */
  body.ui-v2 #v2-user { display: flex !important; align-items: center; gap: 10px; padding: 10px 6px 4px !important; }
  body.ui-v2 .v2-user-txt { flex: 1; min-width: 0; }
  body.ui-v2 .v2-user-ac { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; flex-shrink: 0; }
  body.ui-v2 .v2-user-ac > button { all: unset; cursor: pointer; font-family: var(--font); font-size: 11.5px; font-weight: 700; color: var(--primary); padding: 1px 2px; line-height: 1.3; }
  body.ui-v2 .v2-user-ac > button:hover { text-decoration: underline; }
  body.ui-v2 .v2-user-ac > #btn-logout { color: var(--muted); }
  body.ui-v2 .v2-user-ac > #btn-logout:hover { color: var(--red-tx); }
  body.ui-v2 .v2-user-ac > button[style*="display: none"], body.ui-v2 .v2-user-ac > button[style*="display:none"] { display: none !important; }
  body.ui-v2.v2-mini .v2-user-ac { display: none; }
  body.ui-v2 .topbar-right > .btn-logout, body.ui-v2 .topbar-right > #btn-minha-senha { display: none !important; }

  /* busca rápida: sugestões */
  body.ui-v2 .v2-busca { position: relative; overflow: visible !important; }
  body.ui-v2 .v2-bsug { position: absolute; top: calc(100% + 6px); left: 0; right: 0; min-width: 340px; z-index: 60; background: var(--white); border: 1px solid var(--border); border-radius: 10px; box-shadow: var(--shadow-pop); padding: 5px; max-height: 360px; overflow-y: auto; }
  body.ui-v2 .v2-bsug-it { padding: 8px 10px; border-radius: 7px; cursor: pointer; }
  body.ui-v2 .v2-bsug-it:hover, body.ui-v2 .v2-bsug-it.on { background: var(--blue-soft); }
  body.ui-v2 .v2-bsug-l1 { display: flex; align-items: center; gap: 8px; font-size: var(--fs-base); min-width: 0; }
  body.ui-v2 .v2-bsug-l1 .mono { font-family: var(--font-mono); color: var(--muted); flex-shrink: 0; }
  body.ui-v2 .v2-bsug-l1 b { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text); font-weight: 600; }
  body.ui-v2 .v2-bsug-st { font-style: normal; font-size: 10.5px; font-weight: 700; padding: 2px 8px; border-radius: 20px; background: var(--surface-2); color: var(--muted); text-transform: capitalize; }
  body.ui-v2 .v2-bsug-st.st-ativo { background: var(--green-light); color: var(--green-tx); }
  body.ui-v2 .v2-bsug-st.st-reservado { background: var(--warn-bg); color: var(--warn-tx); }
  body.ui-v2 .v2-bsug-st.st-cancelado { background: var(--orange-light); color: var(--red-tx); }
  body.ui-v2 .v2-bsug-l2 { font-size: var(--fs-sm); color: var(--muted); margin-top: 2px; }
  body.ui-v2 .v2-bsug-vazio { padding: 10px 12px; font-size: var(--fs-base); color: var(--subtle); }

  /* Clientes: as abas internas saem (o menu lateral já tem Reservados/Ativos/...) */
  body.ui-v2 #sec-clientes-padrao .os-tabs-status, body.ui-v2 #sec-clientes-vtal .os-tabs-status { display: none !important; }
  /* cabeçalho de colunas da lista */
  body.ui-v2 .v2-clihead { display: flex; align-items: center; gap: 14px; padding: 10px 14px; background: var(--surface-2); border-bottom: 1px solid var(--border-soft); font-size: 10.5px; font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); }
  body.ui-v2 .v2-clihead .h-st { width: 92px; flex-shrink: 0; }
  body.ui-v2 .v2-clihead .h-cli { flex: 1; min-width: 0; }
  body.ui-v2 .v2-clihead .h-dt { width: 150px; text-align: right; flex-shrink: 0; }
  body.ui-v2 .v2-clihead .h-ac { width: 24px; flex-shrink: 0; }
  body.ui-v2 .cli-card-header .cli-card-data { width: 150px; text-align: right; flex-shrink: 0; }
  body.ui-v2 .v2-clihead + .cli-card { border-top: 0; }
}

/* ═══ v3.111.0 — grupos de 1 item como título (protótipo) · lista de Clientes em tabela ═══ */
.cli-c { display: none; }
@media (min-width: 769px) {
  /* grupo de um item: igual aos outros títulos (caixa-alta, sem sigla); ativo com fundo azul claro */
  body.ui-v2 #nav-menu .nav-dropdown.v2-solo > .nav-dropdown-btn {
    justify-content: flex-start !important; gap: 8px; margin-top: 4px; padding: 9px 10px !important; border-radius: 8px;
    font-size: 10.5px !important; font-weight: 700 !important; letter-spacing: .9px !important; text-transform: uppercase !important; color: var(--subtle) !important; text-align: left;
  }
  body.ui-v2 #nav-menu .nav-dropdown.v2-solo > .nav-dropdown-btn::before { content: none !important; display: none !important; }
  body.ui-v2 #nav-menu .nav-dropdown.v2-solo > .nav-dropdown-btn:hover { background: var(--surface-2) !important; color: var(--text) !important; }
  body.ui-v2 #nav-menu .nav-dropdown.v2-solo > .nav-dropdown-btn.v2-solo-ativo { background: var(--blue-light) !important; color: var(--primary) !important; }
  body.ui-v2.dark-mode #nav-menu .nav-dropdown.v2-solo > .nav-dropdown-btn.v2-solo-ativo { background: color-mix(in srgb, var(--accent) 16%, transparent) !important; color: var(--accent) !important; }
  body.ui-v2.v2-mini #nav-menu .nav-dropdown.v2-solo > .nav-dropdown-btn::before { content: attr(data-sigla) !important; display: inline-flex !important; }

  /* lista de clientes: tabela do protótipo */
  body.ui-v2 .v2-lst { --cols: minmax(120px, .9fr) minmax(220px, 2fr) minmax(120px, .9fr) 118px 110px 20px; }
  body.ui-v2 .v2-lst.v2-lst-res { --cols: minmax(120px, .9fr) minmax(220px, 2fr) minmax(120px, .9fr) 112px 118px 110px 20px; }
  body.ui-v2 .v2-lst.v2-lst-semparc { --cols: minmax(220px, 2fr) minmax(120px, .9fr) 118px 110px 20px; }
  body.ui-v2 .v2-lst.v2-lst-res.v2-lst-semparc { --cols: minmax(220px, 2fr) minmax(120px, .9fr) 112px 118px 110px 20px; }
  body.ui-v2 .v2-lst > .v2-clihead, body.ui-v2 .v2-lst .cli-card-header { display: grid !important; grid-template-columns: var(--cols); gap: 0 16px; align-items: center; }
  body.ui-v2 .v2-lst > .v2-clihead { padding: 11px 18px; }
  body.ui-v2 .v2-lst .cli-card-header { padding: 12px 18px !important; }
  body.ui-v2 .v2-lst > .v2-clihead > span { width: auto !important; text-align: left !important; white-space: nowrap; }
  body.ui-v2 .v2-lst:not(.v2-lst-res) .h-ac, body.ui-v2 .v2-lst:not(.v2-lst-res) .cli-card-actions { display: none !important; }
  body.ui-v2 .v2-lst.v2-lst-semparc .h-parc, body.ui-v2 .v2-lst.v2-lst-semparc .cli-c-parc { display: none !important; }
  body.ui-v2 .v2-lst .cli-card-nome-wrap { display: none !important; }
  body.ui-v2 .v2-lst .cli-c { display: flex; min-width: 0; }
  /* ordem das colunas */
  body.ui-v2 .v2-lst .cli-c-parc { order: 1; } body.ui-v2 .v2-lst .cli-c-cli { order: 2; } body.ui-v2 .v2-lst .cli-c-cto { order: 3; }
  body.ui-v2 .v2-lst .cli-card-data { order: 4; } body.ui-v2 .v2-lst .cli-card-actions { order: 5; } body.ui-v2 .v2-lst .cli-card-status { order: 6; } body.ui-v2 .v2-lst .cli-card-caret { order: 7; }
  body.ui-v2 .v2-lst .cli-c-parc { align-items: center; gap: 8px; font-size: var(--fs-md); font-weight: 700; color: var(--text); }
  body.ui-v2 .v2-lst .cli-c-parc i { width: 4px; height: 18px; border-radius: 3px; background: var(--c); flex-shrink: 0; }
  body.ui-v2 .v2-lst .cli-c-parc span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  body.ui-v2 .v2-lst .cli-c-cli { flex-direction: column; gap: 2px; }
  body.ui-v2 .v2-lst .cli-c-cli b { font-size: var(--fs-md); font-weight: 700; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  body.ui-v2 .v2-lst .cli-c-cod { font-family: var(--font-mono); font-weight: 500; color: var(--muted); margin-right: 7px; }
  body.ui-v2 .v2-lst .cli-c-cli > span { font-size: var(--fs-sm); color: var(--subtle); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  body.ui-v2 .v2-lst .cli-c-cto { font-family: var(--font-mono); font-size: var(--fs-base); color: var(--text-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  body.ui-v2 .v2-lst .cli-card-data { width: auto !important; text-align: left !important; font-family: var(--font-mono); font-size: var(--fs-base); color: var(--text-2); white-space: nowrap; }
  body.ui-v2 .v2-lst .cli-card-status { min-width: 0 !important; }
  body.ui-v2 .v2-lst .cli-card-status [class*="badge-status"] { background: transparent; border: 1px solid currentColor; }
  body.ui-v2 .v2-lst .cli-card-actions .timer-val { display: inline-block; padding: 3px 9px; border-radius: 7px; background: var(--warn-bg); color: var(--warn-tx); }
  body.ui-v2 .v2-lst .cli-card-caret { color: var(--subtle); text-align: right; }
}

/* ═══ v3.112.0 — ações nas linhas de Clientes · filtros compactos · paginação ═══ */
@media (min-width: 769px) {
  body.ui-v2 .v2-lst { --cols: minmax(120px, .9fr) minmax(220px, 2fr) minmax(120px, .9fr) 118px 110px var(--acw, 150px); }
  body.ui-v2 .v2-lst.v2-lst-res { --acw: 110px; --cols: minmax(120px, .9fr) minmax(220px, 2fr) minmax(120px, .9fr) 112px 118px 110px var(--acw); }
  body.ui-v2 .v2-lst.v2-lst-semparc { --cols: minmax(220px, 2fr) minmax(120px, .9fr) 118px 110px var(--acw, 150px); }
  body.ui-v2 .v2-lst.v2-lst-res.v2-lst-semparc { --cols: minmax(220px, 2fr) minmax(120px, .9fr) 112px 118px 110px var(--acw); }
  body.ui-v2 #sec-clientes-vtal .v2-lst:not(.v2-lst-res) { --acw: 224px; }
  body.ui-v2 .v2-lst .cli-card-caret { display: none !important; }
  body.ui-v2 .v2-lst .cli-c-acoes { order: 8; display: flex; gap: 5px; justify-content: flex-start; }
  body.ui-v2 .v2-ic { width: 30px; height: 30px; border-radius: 8px; border: 1px solid var(--border); background: var(--white); color: var(--primary); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; padding: 0; flex-shrink: 0; }
  body.ui-v2 .v2-ic:hover { background: var(--blue-soft); border-color: var(--blue-line); }
  body.ui-v2 .v2-ic-g { color: var(--green-tx); border-color: color-mix(in srgb, var(--green-tx) 35%, var(--border)); }
  body.ui-v2 .v2-ic-g:hover { background: var(--green-light); }
  body.ui-v2 .v2-ic-r { color: var(--red-tx); border-color: var(--red-line); }
  body.ui-v2 .v2-ic-r:hover { background: var(--orange-light); }
  body.ui-v2 .v2-lst > .v2-clihead .h-car { display: none; }

  /* filtros de Clientes numa linha só, sem rótulos em cima */
  body.ui-v2 :is(#sec-clientes-padrao, #sec-clientes-vtal, #sec-clientes-geral) .filter-bar { display: flex !important; flex-wrap: wrap; align-items: center; gap: 8px; padding: 10px 12px !important; }
  body.ui-v2 :is(#sec-clientes-padrao, #sec-clientes-vtal, #sec-clientes-geral) .filter-bar .filter-label { display: none !important; }
  body.ui-v2 :is(#sec-clientes-padrao, #sec-clientes-vtal, #sec-clientes-geral) .filter-bar .filter-group { flex: 0 0 auto; margin: 0 !important; }
  body.ui-v2 :is(#sec-clientes-padrao, #sec-clientes-vtal, #sec-clientes-geral) .filter-bar .filter-group:first-child { flex: 1 1 260px; }
  body.ui-v2 :is(#sec-clientes-padrao, #sec-clientes-vtal, #sec-clientes-geral) .filter-bar .filter-input { height: 38px; min-width: 130px; }
  body.ui-v2 :is(#sec-clientes-padrao, #sec-clientes-vtal, #sec-clientes-geral) .filter-bar .filter-group:first-child .filter-input { width: 100%; }
  body.ui-v2 :is(#sec-clientes-padrao, #sec-clientes-vtal, #sec-clientes-geral) .filter-bar .btn-sm { height: 38px; }
}
/* paginação no padrão do protótipo (todas as listas) */
body.ui-v2 .pagination { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 12px 2px 0; }
body.ui-v2 .pagination-info { font-size: var(--fs-sm); color: var(--subtle); font-family: var(--font-mono); }
body.ui-v2 .pagination-btns { display: inline-flex; gap: 2px; padding: 3px; background: var(--white); border: 1px solid var(--border-soft); border-radius: 10px; }
body.ui-v2 .pagination-btns > button, body.ui-v2 .pagination-btns > .pg-btn { min-width: 32px; height: 30px; padding: 0 9px; border: 0 !important; border-radius: 7px; background: transparent !important; color: var(--text-2) !important; font-family: var(--font-mono); font-size: var(--fs-base); font-weight: 600; cursor: pointer; }
body.ui-v2 .pagination-btns > button:hover:not([disabled]) { background: var(--surface-2) !important; }
body.ui-v2 .pagination-btns > button.active, body.ui-v2 .pagination-btns > button[aria-current], body.ui-v2 .pagination-btns > .pg-btn.active { background: var(--primary) !important; color: var(--on-primary) !important; }
body.ui-v2 .pagination-btns > button[disabled] { opacity: .4; cursor: default; }

/* ═══ v3.113.0 — Clientes: título na barra, sem "OS Manutenção", ações em ícone na linha dos filtros ═══ */
@media (min-width: 769px) {
  body.ui-v2 :is(#sec-clientes-padrao, #sec-clientes-vtal, #sec-clientes-geral) .btn-criar-os { display: none !important; }
  body.ui-v2 :is(#sec-clientes-padrao, #sec-clientes-vtal, #sec-clientes-geral) .section-card-header:not(:has(> :not(.section-card-title))) ,
  body.ui-v2 :is(#sec-clientes-padrao, #sec-clientes-vtal, #sec-clientes-geral) .cli-panel .section-card-header { display: none !important; }
  body.ui-v2 :is(#sec-clientes-padrao, #sec-clientes-vtal, #sec-clientes-geral) .cli-panel { padding-top: 14px !important; }
  body.ui-v2 .filter-bar > .section-header-actions.v2-acfil { display: flex !important; gap: 6px; margin-left: auto; align-items: center; }
  body.ui-v2 .v2-icbar { width: 38px !important; height: 38px !important; padding: 0 !important; display: inline-flex !important; align-items: center; justify-content: center; border-radius: var(--radius-md) !important; background: var(--white) !important; color: var(--primary) !important; border: 1px solid var(--border) !important; }
  body.ui-v2 .v2-icbar:hover { background: var(--blue-soft) !important; border-color: var(--blue-line) !important; }
  body.ui-v2 .v2-acfil [id^="exp-menu-"] { right: 0; left: auto; }
}

/* ═══ v3.115.0 — Reservados: coluna "Reservado até" no formato do protótipo ═══ */
@media (min-width: 769px) {
  body.ui-v2 .v2-lst .cli-card-actions > [data-expira] { display: none !important; }
  body.ui-v2 .v2-lst .cli-card-actions { flex-direction: column; align-items: flex-start; }
  body.ui-v2 .v2-prazo { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; }
  body.ui-v2 .v2-prazo-d { font-family: var(--font-mono); font-size: var(--fs-base); font-weight: 400; padding: 2px 7px; border-radius: 6px; white-space: nowrap; } /* [v3.145.10] mesmo peso da coluna de data */
  body.ui-v2 .v2-prazo-d.f-g { background: var(--green-light); color: var(--green-tx); }
  body.ui-v2 .v2-prazo-d.f-a { background: var(--warn-bg); color: var(--warn-tx); }
  body.ui-v2 .v2-prazo-d.f-r, body.ui-v2 .v2-prazo-d.f-venc { background: var(--orange-light); color: var(--red-tx); }
  body.ui-v2 .v2-prazo-s { font-size: var(--fs-sm); color: var(--subtle); } /* [v3.145.10] mesmo tamanho do endereço */
  body.ui-v2 .v2-lst.v2-lst-res .cli-card-status [class*="badge-status"] { color: var(--warn-tx); }
}

/* ═══ v3.116.0 — ficha do cliente reservado no formato do protótipo ═══ */
body.ui-v2 .v2-fprazo { display: flex; align-items: center; gap: 18px; background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); padding: 14px 20px; margin: 12px 0 0; }
body.ui-v2 .v2-fprazo-t { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 8px; }
body.ui-v2 .v2-fprazo-l { font-size: var(--fs-md); color: var(--text-2); }
body.ui-v2 .v2-fprazo-l strong { font-family: var(--font-mono); color: var(--text); }
body.ui-v2 .v2-fprazo-l span { color: var(--subtle); font-size: var(--fs-sm); }
body.ui-v2 .v2-fprazo-bar { height: 6px; border-radius: 3px; background: var(--divider); overflow: hidden; max-width: 520px; }
body.ui-v2 .v2-fprazo-bar i { display: block; height: 100%; border-radius: 3px; background: var(--green-tx); }
body.ui-v2 .v2-fprazo-bar i.c-a { background: #E8A33D; }
body.ui-v2 .v2-fprazo-bar i.c-r { background: var(--red-tx); }
body.ui-v2 .v2-fprazo-ac .v2-fprazo-bt { height: 38px !important; padding: 0 20px !important; border-radius: var(--radius-md) !important; background: var(--primary) !important; color: var(--on-primary) !important; border: 0 !important; font-weight: 700 !important; font-size: var(--fs-md) !important; }
body.ui-v2 #modal-cliente-detalhe .v2-oculto { display: none !important; }
body.ui-v2 .v2-pend { display: inline-block; font-size: 11px !important; font-weight: 700; padding: 2px 9px; border-radius: 20px; background: var(--warn-bg); color: var(--warn-tx); }
@media (min-width: 900px) {
  body.ui-v2 #modal-cliente-detalhe.v2-pagina.v2-ficha-res .v2-fpane.v2-fblocos:not([style*="none"]) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.ui-v2 #modal-cliente-detalhe.v2-pagina.v2-ficha-res .v2-fpane.v2-fblocos > .v2-fb-loc { grid-column: auto !important; }
}

/* ═══ v3.117.0 — Ordens de Serviço no formato do protótipo ═══ */
@media (min-width: 769px) {
  body.ui-v2 #sec-ordens > .content-inner > div:first-child:has(> div > .content-title) { display: none; }
  body.ui-v2 .v2-oskpi { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; margin-bottom: 14px; }
  body.ui-v2 .v2-oskpi-c { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); padding: 14px 16px; }
  body.ui-v2 .v2-oskpi-l { font-size: var(--fs-xs); font-weight: 700; letter-spacing: .8px; text-transform: uppercase; color: var(--subtle); }
  body.ui-v2 .v2-oskpi-v { font-family: var(--font-mono); font-size: 24px; font-weight: 600; margin-top: 5px; color: var(--text); }
  body.ui-v2 .v2-oskpi-v.c-r { color: var(--red-tx); }
  body.ui-v2 .v2-oskpi-v.c-g { color: var(--green-tx); }
  /* barra única */
  body.ui-v2 .v2-ostool { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); padding: 12px 16px; margin-bottom: 14px; }
  body.ui-v2 .v2-ostool > .os-tabs-status { margin: 0 !important; }
  body.ui-v2 .v2-ostool-busca { display: flex; gap: 6px; align-items: center; flex: 1 1 220px; max-width: 340px; }
  body.ui-v2 .v2-ostool-busca input { flex: 1; min-width: 0 !important; height: 38px; }
  body.ui-v2 .v2-ostool .filter-group { flex-direction: row; align-items: center; gap: 6px; }
  body.ui-v2 .v2-ostool .filter-group .filter-label { display: none; }
  body.ui-v2 .v2-ostool .filter-input { height: 38px; }
  body.ui-v2 .v2-ostool-lim select { width: 76px; }
  body.ui-v2 .v2-ostool-dir { margin-left: auto; display: flex; align-items: center; gap: 8px; }
  body.ui-v2 .v2-ostool-cnt { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--subtle); white-space: nowrap; }
  body.ui-v2 .v2-os-nova { height: 38px !important; padding: 0 16px !important; border-radius: var(--radius-md) !important; background: var(--primary) !important; color: var(--on-primary) !important; font-size: var(--fs-base) !important; font-weight: 700 !important; border: 0 !important; }
  /* abas de tipo: segmentado */
  body.ui-v2 #os-subtabs { display: inline-flex !important; gap: 3px; flex-wrap: wrap; align-self: flex-start; background: var(--bg); border: 1px solid var(--border-soft); border-radius: var(--radius-md); padding: 3px; margin: 0 0 14px; }
  body.ui-v2 #os-subtabs .os-subtab { height: 30px; border: 0 !important; border-radius: var(--radius-sm) !important; background: none !important; color: var(--muted) !important; font-size: 12px !important; font-weight: 600 !important; padding: 0 12px !important; box-shadow: none !important; }
  body.ui-v2 #os-subtabs .os-subtab:hover { color: var(--text) !important; }
  body.ui-v2 #os-subtabs .os-subtab.active { background: var(--white) !important; color: var(--primary) !important; font-weight: 700 !important; box-shadow: 0 1px 3px rgba(0,48,135,.10) !important; }
  /* cartão da lista vira só a tabela */
  body.ui-v2 #os-lista-card { padding: 0 !important; overflow: hidden; }
  body.ui-v2 #os-lista-card > .section-card-header { display: none !important; }
  body.ui-v2 #os-lista { background: transparent !important; border: 0 !important; border-radius: 0 !important; }
  body.ui-v2 #os-lista-card .pagination { padding: 10px 16px; border-top: 1px solid var(--divider); }
  /* tabela */
  body.ui-v2 #os-lista { --oscols: minmax(110px, 1.1fr) minmax(130px, 1.3fr) minmax(160px, 2.2fr) minmax(80px, .8fr) minmax(120px, 1fr); }
  body.ui-v2 #os-lista.v2-os-semp { --oscols: 0 minmax(130px, 1.3fr) minmax(160px, 2.4fr) minmax(80px, .8fr) minmax(120px, 1fr); }
  body.ui-v2 #os-lista.v2-os-semp .c-p { visibility: hidden; overflow: hidden; }
  body.ui-v2 .v2-oshead, body.ui-v2 .v2-osr { display: grid; grid-template-columns: var(--oscols); gap: 0 14px; align-items: center; }
  body.ui-v2 .v2-oshead { padding: 11px 18px; background: var(--surface-2); border-bottom: 1px solid var(--border-soft); font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); }
  body.ui-v2 .v2-oshead .c-r, body.ui-v2 .v2-osr .c-r { text-align: right; justify-self: end; }
  body.ui-v2 #os-lista > .os-card.v2-osp { padding: 12px 18px !important; border: 0 !important; border-top: 1px solid var(--divider) !important; border-radius: 0 !important; background: var(--white) !important; margin: 0 !important; cursor: pointer; box-shadow: none !important; }
  body.ui-v2 #os-lista > .v2-oshead + .os-card.v2-osp { border-top: 0 !important; }
  body.ui-v2 #os-lista > .os-card.v2-osp:hover { background: var(--blue-soft) !important; }
  body.ui-v2 #os-lista > .os-card.v2-osp > .os-card-header, body.ui-v2 #os-lista > .os-card.v2-osp > .os-card-body { display: none !important; }
  body.ui-v2 .v2-osr > div { min-width: 0; }
  body.ui-v2 .v2-osr .c-p { display: flex; align-items: center; gap: 8px; }
  body.ui-v2 .v2-osr-bar { width: 4px; height: 20px; border-radius: 3px; flex-shrink: 0; }
  body.ui-v2 .v2-osr-emp { font-size: var(--fs-base); font-weight: 600; color: var(--text-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  body.ui-v2 .v2-osr-num { display: flex; align-items: center; gap: 6px; }
  body.ui-v2 .v2-osr-num .os-numero { font-family: var(--font-mono); font-size: var(--fs-base); font-weight: 600; color: var(--primary); }
  body.ui-v2 .v2-osr-num [data-badge-novos] { animation: none !important; box-shadow: none !important; margin-left: 0 !important; height: 18px !important; min-width: 18px !important; font-size: 10px !important; }
  body.ui-v2 .v2-osr-tipo, body.ui-v2 .v2-osr-resp { font-size: var(--fs-sm); color: var(--subtle); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin-top: 2px; }
  body.ui-v2 .v2-osr-resp.na { font-style: italic; }
  body.ui-v2 .v2-osr-cli { font-size: var(--fs-md); font-weight: 600; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  body.ui-v2 .v2-osr-ha { font-family: var(--font-mono); font-size: var(--fs-base); font-weight: 600; color: var(--text-2); white-space: nowrap; }
  body.ui-v2 .v2-osr .c-st .os-status-badge { white-space: nowrap; }
}

/* ═══ v3.119.0 — Detalhe da OS no formato do protótipo ═══ */
body.ui-v2 #modal-os-detalhe { align-items: center !important; }
body.ui-v2 #modal-os-detalhe .modal.v2-osdet { max-width: 820px !important; padding: 0 !important; display: flex; flex-direction: column; overflow: hidden !important; max-height: calc(var(--vh100) * .92) !important; }
body.ui-v2 .v2-osdet > .os-modal-header { flex-shrink: 0; display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 16px 56px 14px 22px; margin: 0; border-bottom: 1px solid var(--divider); background: var(--white); }
body.ui-v2 .v2-osdet .os-modal-numero { font-family: var(--font-mono); font-size: 18px; font-weight: 600; color: var(--primary); letter-spacing: -.2px; }
body.ui-v2 .v2-osdet #os-det-rbx-numero { font-size: var(--fs-sm); color: var(--muted); margin-left: 8px; }
body.ui-v2 .v2-osdet .os-modal-badges { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 6px; }
body.ui-v2 .v2-osdet #os-det-acoes { gap: 6px !important; }
body.ui-v2 .v2-osdet #os-det-acoes > button { height: 32px; padding: 0 12px !important; font-size: var(--fs-base) !important; border-radius: var(--radius-md) !important; }
body.ui-v2 .v2-osdet > .modal-close { top: 14px; right: 14px; z-index: 2; }
body.ui-v2 .v2-osdet-corpo { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 16px 22px; display: flex; flex-direction: column; gap: 14px; background: var(--bg); }
body.ui-v2 .v2-osdet-card { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); padding: 14px 16px; display: flex; flex-direction: column; gap: 10px; }
body.ui-v2 .v2-osdet-tit { font-size: var(--fs-md); font-weight: 700; color: var(--text); }
body.ui-v2 .v2-osdet-card .os-grid { display: grid !important; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 10px; margin: 0 !important; }
body.ui-v2 .v2-osdet-card .os-field { background: var(--surface-2); border-radius: var(--radius-md); padding: 9px 11px; }
body.ui-v2 .v2-osdet-card .os-descricao { margin: 0 !important; }
body.ui-v2 .v2-osdet-card #os-det-fotos-bloco > div:last-child, body.ui-v2 .v2-osdet-card #os-det-andamentos-bloco > div:last-child { margin-bottom: 0 !important; }
body.ui-v2 .v2-osdet-card .os-fotos-grid { margin-bottom: 10px; }
body.ui-v2 .v2-osdet-card .os-andamentos-list { display: flex; flex-direction: column; gap: 8px; margin-bottom: 10px; }
body.ui-v2 .v2-osdet-card textarea { border-radius: var(--radius-md) !important; }
body.ui-v2 .v2-osdet-card #_ev118, body.ui-v2 .v2-osdet-card #btn-salvar-conclusao { height: 36px; padding: 0 16px !important; }
body.ui-v2 .v2-osdet-card #os-alerta-conclusao { margin-top: 2px !important; }
body.ui-v2 .v2-osdet > .modal-footer { flex-shrink: 0; margin: 0 !important; padding: 12px 22px !important; border-top: 1px solid var(--divider); background: var(--white); display: flex; justify-content: flex-end; gap: 8px; }
body.ui-v2 .v2-osdet > .modal-footer button { height: 38px; padding: 0 18px !important; border-radius: var(--radius-md) !important; font-size: var(--fs-base) !important; }
body.ui-v2 .v2-oculto { display: none !important; }

/* ═══ v3.121.1 — abas de tipo no topo da tabela · campos do detalhe mais visíveis ═══ */
@media (min-width: 769px) {
  body.ui-v2 #os-lista-card > #os-subtabs { display: flex !important; width: auto; margin: 0 !important; padding: 0 12px !important; gap: 2px; background: var(--white) !important; border: 0 !important; border-bottom: 1px solid var(--border-soft) !important; border-radius: 0 !important; flex-wrap: wrap; }
  body.ui-v2 #os-lista-card > #os-subtabs .os-subtab { height: 44px !important; padding: 0 12px !important; border-radius: 0 !important; background: none !important; box-shadow: none !important; color: var(--muted) !important; font-size: var(--fs-base) !important; font-weight: 600 !important; position: relative; display: inline-flex; align-items: center; gap: 7px; }
  body.ui-v2 #os-lista-card > #os-subtabs .os-subtab:hover { color: var(--text) !important; }
  body.ui-v2 #os-lista-card > #os-subtabs .os-subtab.active { color: var(--primary) !important; font-weight: 700 !important; box-shadow: inset 0 -2px 0 var(--primary) !important; }
  body.ui-v2 #os-lista-card > #os-subtabs .os-badge { position: static !important; margin: 0 !important; }
  body.ui-v2 #os-lista-card > .filter-bar, body.ui-v2 #os-lista-card .filter-bar { display: none !important; }
}
/* detalhe da OS: campos com fundo azul claro e borda, destacando do cartão */
body.ui-v2 #modal-os-detalhe .os-field { background: color-mix(in srgb, var(--primary) 7%, var(--white)) !important; border: 1px solid color-mix(in srgb, var(--primary) 16%, var(--white)) !important; border-radius: var(--radius-md) !important; }
body.ui-v2.dark-mode #modal-os-detalhe .os-field { background: color-mix(in srgb, var(--primary) 12%, var(--white)) !important; border-color: color-mix(in srgb, var(--primary) 24%, var(--white)) !important; }
body.ui-v2 #modal-os-detalhe .os-field .os-field-label, body.ui-v2 #modal-os-detalhe .os-field label { color: color-mix(in srgb, var(--primary) 55%, var(--subtle)) !important; }
body.ui-v2 #modal-os-detalhe .os-descricao { background: color-mix(in srgb, var(--primary) 4%, var(--white)) !important; border-color: color-mix(in srgb, var(--primary) 14%, var(--white)) !important; }

/* ═══ v3.121.2 — barra de OS numa linha só · campos do detalhe sem borda ═══ */
@media (min-width: 769px) {
  body.ui-v2 .v2-ostool { flex-wrap: nowrap !important; min-width: 0; }
  body.ui-v2 .v2-ostool > .os-tabs-status { flex-shrink: 0; }
  body.ui-v2 .v2-ostool-busca { flex: 1 1 160px !important; min-width: 120px; max-width: 340px; }
  body.ui-v2 .v2-ostool .filter-group { flex-shrink: 1; min-width: 0; }
  body.ui-v2 .v2-ostool-lim select, body.ui-v2 .v2-ostool .filter-group select { width: auto !important; min-width: 70px; max-width: 160px; }
  body.ui-v2 .v2-ostool-dir { flex-shrink: 0; flex-wrap: nowrap; }
  body.ui-v2 .v2-ostool-cnt { max-width: 110px; overflow: hidden; text-overflow: ellipsis; }
}
@media (min-width: 769px) and (max-width: 1280px) {
  body.ui-v2 .v2-ostool-cnt { display: none; }
  body.ui-v2 .v2-ostool > .os-tabs-status .os-tab-status { padding: 0 10px !important; }
}
body.ui-v2 #modal-os-detalhe .os-field { border: 0 !important; background: color-mix(in srgb, var(--primary) 11%, var(--white)) !important; }
body.ui-v2.dark-mode #modal-os-detalhe .os-field { border: 0 !important; background: color-mix(in srgb, var(--primary) 16%, var(--white)) !important; }
body.ui-v2 #modal-os-detalhe .os-field .os-field-label, body.ui-v2 #modal-os-detalhe .os-field label { color: var(--muted) !important; }
body.ui-v2 #modal-os-detalhe .os-descricao { border: 0 !important; background: color-mix(in srgb, var(--primary) 7%, var(--white)) !important; }

/* ═══ v3.121.3 — detalhe da OS: campos sem caixinha própria (fundo azul fica só atrás dos cartões) ═══ */
body.ui-v2 #modal-os-detalhe .os-field, body.ui-v2.dark-mode #modal-os-detalhe .os-field { background: transparent !important; border: 0 !important; border-radius: 0 !important; padding: 2px 0 !important; box-shadow: none !important; }
body.ui-v2 #modal-os-detalhe .v2-osdet-card .os-grid { gap: 14px 18px !important; }
body.ui-v2 #modal-os-detalhe .v2-osdet-corpo { background: color-mix(in srgb, var(--primary) 9%, var(--bg)) !important; }
body.ui-v2.dark-mode #modal-os-detalhe .v2-osdet-corpo { background: color-mix(in srgb, var(--primary) 10%, var(--bg)) !important; }

/* ═══ v3.122.0 — Relatórios no formato do protótipo ═══ */
@media (min-width: 769px) {
  body.ui-v2 #sec-relatorios .content-title { display: none; }
  body.ui-v2 #sec-relatorios .section-card .filter-bar { display: flex !important; flex-wrap: wrap; align-items: flex-end; gap: 12px !important; background: transparent !important; border: 0 !important; padding: 0 !important; }
  body.ui-v2 #sec-relatorios .filter-bar .filter-group { flex: 1 1 150px; min-width: 140px; }
  body.ui-v2 #sec-relatorios #rel-emp-grp { flex: 1.3 1 190px; }
  body.ui-v2 #sec-relatorios .filter-bar .filter-group:has(#rel-tipo) { flex: 1.6 1 220px; }
  body.ui-v2 #sec-relatorios .filter-bar .filter-group:has(#btn-rel-gerar) { flex: 0 0 auto; min-width: 0; }
  body.ui-v2 #sec-relatorios .filter-bar .filter-input { width: 100% !important; }
  body.ui-v2 #btn-rel-gerar { height: 40px !important; padding: 0 20px !important; border-radius: var(--radius-md) !important; font-size: var(--fs-base) !important; font-weight: 700 !important; white-space: nowrap; }
  body.ui-v2 .v2-rel-vazio { background: var(--white); border: 1.5px dashed var(--border); border-radius: var(--radius); padding: 34px 20px; text-align: center; font-size: var(--fs-md); color: var(--muted); }
  body.ui-v2 .v2-rel-vazio strong { color: var(--primary); }
  body.ui-v2 #rel-resultado.v2-rel-res { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); overflow: hidden; margin-top: 14px; }
  body.ui-v2 #rel-resultado.v2-rel-res > .section-card-header { padding: 14px 18px !important; margin: 0 !important; border-bottom: 1px solid var(--divider); gap: 12px; }
  body.ui-v2 #rel-resultado.v2-rel-res #rel-titulo-resultado { font-size: var(--fs-lg); font-weight: 700; }
  body.ui-v2 #rel-resultado.v2-rel-res #rel-periodo-resultado { font-size: var(--fs-sm); color: var(--muted); margin-top: 2px; }
  body.ui-v2 #rel-resultado.v2-rel-res #rel-contagem { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--muted) !important; }
  body.ui-v2 #rel-resultado.v2-rel-res #_ev22, body.ui-v2 #rel-resultado.v2-rel-res #_ev23 { height: 34px; padding: 0 13px !important; }
  body.ui-v2 #rel-resultado.v2-rel-res #rel-tabela { border: 0 !important; border-radius: 0 !important; margin: 0 !important; }
  body.ui-v2 #rel-resultado.v2-rel-res #rel-tabela .tbl-wrap { border: 0 !important; border-radius: 0 !important; margin: 0 !important; }
  body.ui-v2 #rel-resultado.v2-rel-res table th { background: var(--surface-2); font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); padding: 10px 14px; }
  body.ui-v2 #rel-resultado.v2-rel-res table td { padding: 10px 14px; font-size: var(--fs-base); border-top: 1px solid var(--divider); }
  body.ui-v2 #rel-resultado.v2-rel-res table tbody tr:hover td { background: var(--blue-soft); }
}

/* ═══ v3.123.0 — Dashboard no formato do protótipo ═══ */
@media (min-width: 769px) {
  body.ui-v2 #sec-dashboard .content-title { display: none; }
  body.ui-v2 .v2-dash { display: flex; flex-direction: column; gap: 14px; margin-bottom: 6px; }
  body.ui-v2 .v2-dash-kpi { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; }
  body.ui-v2 .v2-dash-k { all: unset; box-sizing: border-box; cursor: pointer; background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); padding: 14px 16px; display: flex; flex-direction: column; gap: 4px; transition: border-color .12s, box-shadow .12s; }
  body.ui-v2 .v2-dash-k:hover { border-color: var(--blue-line); box-shadow: 0 2px 10px rgba(0,48,135,.07); }
  body.ui-v2 .v2-dash-kl { font-size: var(--fs-xs); font-weight: 700; letter-spacing: .8px; text-transform: uppercase; color: var(--subtle); }
  body.ui-v2 .v2-dash-kv { font-family: var(--font-mono); font-size: 26px; font-weight: 600; color: var(--text); line-height: 1.15; }
  body.ui-v2 .v2-dash-ks { font-size: var(--fs-sm); color: var(--muted); }
  body.ui-v2 .v2-dash-ks.c-g { color: var(--green-tx); } body.ui-v2 .v2-dash-ks.c-w { color: var(--warn-tx); } body.ui-v2 .v2-dash-ks.c-r { color: var(--red-tx); }
  body.ui-v2 .v2-dash-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); gap: 14px; align-items: start; }
  body.ui-v2 .v2-dash-card { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); overflow: hidden; }
  body.ui-v2 .v2-dash-h { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 13px 18px; border-bottom: 1px solid var(--divider); }
  body.ui-v2 .v2-dash-t { font-size: var(--fs-lg); font-weight: 700; color: var(--text); }
  body.ui-v2 .v2-dash-s { font-size: var(--fs-sm); color: var(--subtle); margin-top: 2px; }
  body.ui-v2 .v2-dash-lk { all: unset; cursor: pointer; font-size: var(--fs-sm); font-weight: 700; color: var(--primary); }
  body.ui-v2 .v2-dash-lk:hover { text-decoration: underline; }
  body.ui-v2 .v2-dash-pt { display: grid; grid-template-columns: minmax(0, 1fr) 100px 90px; gap: 10px; align-items: center; padding: 10px 18px; border-top: 1px solid var(--divider); font-size: var(--fs-base); }
  body.ui-v2 .v2-dash-pt .r { text-align: right; } body.ui-v2 .v2-dash-pt .mono { font-family: var(--font-mono); font-weight: 600; }
  body.ui-v2 .v2-dash-ph { border-top: 0; background: var(--surface-2); font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); padding-top: 9px; padding-bottom: 9px; }
  body.ui-v2 .v2-dash-pf { font-weight: 700; background: var(--surface-2); }
  body.ui-v2 .v2-dash-pn { display: flex; align-items: center; gap: 8px; min-width: 0; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  body.ui-v2 .v2-dash-pc { width: 4px; height: 18px; border-radius: 3px; flex-shrink: 0; }
  body.ui-v2 .v2-dash-os { all: unset; box-sizing: border-box; width: 100%; cursor: pointer; display: flex; align-items: center; gap: 12px; padding: 11px 18px; border-top: 1px solid var(--divider); }
  body.ui-v2 .v2-dash-ab > .v2-dash-os:first-child { border-top: 0; }
  body.ui-v2 .v2-dash-os:hover { background: var(--blue-soft); }
  body.ui-v2 .v2-dash-od { width: 8px; height: 8px; border-radius: 50%; background: #E8A33D; flex-shrink: 0; }
  body.ui-v2 .v2-dash-od.r { background: var(--red-tx); }
  body.ui-v2 .v2-dash-ot { flex: 1; min-width: 0; }
  body.ui-v2 .v2-dash-o1 { font-size: var(--fs-base); font-weight: 700; color: var(--text); }
  body.ui-v2 .v2-dash-o1 .mono { font-family: var(--font-mono); color: var(--primary); font-weight: 600; }
  body.ui-v2 .v2-dash-o2 { font-size: var(--fs-sm); color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin-top: 2px; }
  body.ui-v2 .v2-dash-oi { text-align: right; flex-shrink: 0; }
  body.ui-v2 .v2-dash-oi .mono { font-family: var(--font-mono); font-size: var(--fs-base); font-weight: 600; color: var(--text-2); }
  body.ui-v2 .v2-dash-o3 { font-size: var(--fs-xs); color: var(--subtle); margin-top: 2px; }
  body.ui-v2 .v2-dash-o3.r { color: var(--red-tx); font-weight: 700; }
  body.ui-v2 .v2-dash-msg { padding: 22px 18px; text-align: center; font-size: var(--fs-base); color: var(--subtle); }
  body.ui-v2 .v2-dash-sep { font-size: var(--fs-xs); font-weight: 700; letter-spacing: .8px; text-transform: uppercase; color: var(--subtle); margin-top: 8px; }
}
@media (min-width: 769px) and (max-width: 1200px) { body.ui-v2 .v2-dash-kpi { grid-template-columns: repeat(3, minmax(0, 1fr)); } body.ui-v2 .v2-dash-row { grid-template-columns: 1fr; } }

/* ═══ v3.124.0 — Logs no formato do protótipo ═══ */
@media (min-width: 769px) {
  body.ui-v2 #sec-logs-ativacao .content-title, body.ui-v2 #sec-logs-rbx .content-title, body.ui-v2 #sec-logs-geogrid .content-title, body.ui-v2 #sec-logs-erros .content-title { display: none; }
  body.ui-v2 .section-card.v2-logcard { padding: 0 !important; overflow: hidden; }
  body.ui-v2 .v2-logtool { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 12px 16px; border-bottom: 1px solid var(--border-soft); }
  body.ui-v2 .v2-logtool > .v2-logtabs { display: inline-flex !important; gap: 3px !important; margin: 0 !important; padding: 3px !important; border: 1px solid var(--border-soft) !important; border-radius: var(--radius-md); background: var(--bg); flex-shrink: 0; }
  body.ui-v2 .v2-logfil { display: flex !important; align-items: center; gap: 8px !important; flex-wrap: wrap; margin: 0 !important; }
  body.ui-v2 .v2-logfil .filter-input { height: 38px; width: auto !important; min-width: 140px; }
  body.ui-v2 .v2-logfil select.filter-input { min-width: 120px; }
  body.ui-v2 .v2-logdir { margin-left: auto; display: flex; align-items: center; gap: 10px; }
  body.ui-v2 .v2-logcnt { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--subtle); white-space: nowrap; }
  body.ui-v2 .v2-logdir > button { height: 38px; padding: 0 14px !important; border-radius: var(--radius-md) !important; }
  body.ui-v2 .v2-loglist { display: flex; flex-direction: column; }
  body.ui-v2 .v2-loglist > .tbl-empty { padding: 28px 16px; }
  body.ui-v2 .v2-loglist > .log-card { margin: 0 !important; border: 0 !important; border-top: 1px solid var(--divider) !important; border-radius: 0 !important; padding: 11px 18px 11px 20px !important; background: var(--white) !important; box-shadow: inset 3px 0 0 var(--border) !important; }
  body.ui-v2 .v2-loglist > .log-card:first-child { border-top: 0 !important; }
  body.ui-v2 .v2-loglist > .log-card.log-card-sucesso { box-shadow: inset 3px 0 0 var(--green-tx) !important; }
  body.ui-v2 .v2-loglist > .log-card.log-card-aviso { box-shadow: inset 3px 0 0 #E8A33D !important; }
  body.ui-v2 .v2-loglist > .log-card.log-card-erro { box-shadow: inset 3px 0 0 var(--red-tx) !important; }
  body.ui-v2 .v2-loglist > .log-card.v2-logtem { cursor: pointer; }
  body.ui-v2 .v2-loglist > .log-card:hover { background: var(--blue-soft) !important; }
  body.ui-v2 .v2-loglist > .log-card > div:first-child { margin-bottom: 3px !important; }
  body.ui-v2 .v2-loglist .log-card-titulo { font-size: var(--fs-md) !important; font-weight: 700 !important; color: var(--text) !important; }
  body.ui-v2 .v2-loglist .log-card-badge { font-size: 10px !important; font-weight: 700 !important; letter-spacing: .4px; padding: 2px 8px !important; border-radius: 20px !important; }
  body.ui-v2 .v2-loglist > .log-card:not(.v2-aberto) details, body.ui-v2 .v2-loglist > .log-card:not(.v2-aberto) > div[style*="grid-template-columns:1fr 1fr"] { display: none !important; }
  body.ui-v2 .v2-loglist > .log-card.v2-aberto { background: var(--blue-soft) !important; }
  body.ui-v2 .v2-loglist > .log-card details > summary { display: none; }
  body.ui-v2 .v2-loglist > .log-card.v2-logtem > div:first-child::after { content: '▸ detalhe'; font-size: var(--fs-xs); font-weight: 700; color: var(--subtle); margin-left: auto; }
  body.ui-v2 .v2-loglist > .log-card.v2-logtem.v2-aberto > div:first-child::after { content: '▾ fechar'; color: var(--primary); }
}

/* ═══ v3.124.1 — Logs em tabela + detalhe em janela (protótipo) ═══ */
@media (min-width: 769px) {
  body.ui-v2 .v2-loglist { --lcols: minmax(128px, 1fr) minmax(170px, 1.6fr) minmax(160px, 1.5fr) minmax(100px, .9fr) minmax(110px, .9fr) minmax(96px, .7fr); overflow-x: auto; }
  body.ui-v2 .v2-lhead.c-olt, body.ui-v2 .v2-lr.c-olt { --lcols: minmax(128px, 1fr) minmax(160px, 1.5fr) minmax(150px, 1.4fr) minmax(96px, .8fr) minmax(120px, 1fr) minmax(104px, .9fr) minmax(96px, .7fr); }
  body.ui-v2 .v2-lhead, body.ui-v2 .v2-lr { display: grid; grid-template-columns: var(--lcols); gap: 0 14px; align-items: center; min-width: 900px; }
  body.ui-v2 .v2-lhead { padding: 10px 18px; background: var(--surface-2); border-bottom: 1px solid var(--border-soft); font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); }
  body.ui-v2 .v2-lhead .r, body.ui-v2 .v2-lr .r { text-align: right; }
  body.ui-v2 .v2-loglist > .log-card.v2-lrow { padding: 10px 18px !important; box-shadow: none !important; cursor: pointer; }
  body.ui-v2 .v2-loglist > .log-card.v2-lrow > :not(.v2-lr) { display: none !important; }
  body.ui-v2 .v2-loglist > .v2-lhead + .log-card { border-top: 0 !important; }
  body.ui-v2 .v2-loglist > .log-card.v2-lrow::after { content: none !important; }
  body.ui-v2 .v2-lr > div { min-width: 0; font-size: var(--fs-base); color: var(--text-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  body.ui-v2 .v2-lr .mono { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--muted); }
  body.ui-v2 .v2-lr-ev b, body.ui-v2 .v2-lr-cli b { display: block; font-weight: 600; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  body.ui-v2 .v2-lr-cli .mono { display: block; margin-top: 1px; }
  body.ui-v2 .v2-lr-f { display: inline-block; margin-top: 2px; font-size: 10px; font-weight: 700; color: var(--primary); background: var(--blue-light); border-radius: 20px; padding: 1px 7px; }
  body.ui-v2 .v2-lr-b { display: inline-block; font-size: 10.5px; font-weight: 700; padding: 3px 9px; border-radius: 20px; white-space: nowrap; }
  body.ui-v2 .v2-lr-b.t-ok { background: var(--green-light); color: var(--green-tx); }
  body.ui-v2 .v2-lr-b.t-er { background: var(--orange-light); color: var(--red-tx); }
  body.ui-v2 .v2-lr-b.t-av { background: var(--warn-bg); color: var(--warn-tx); }
}
body.ui-v2 .v2-logdet-ov { position: fixed; inset: 0; z-index: 3000; background: rgba(16,26,48,.45); display: flex; align-items: center; justify-content: center; padding: 24px; }
body.ui-v2 .v2-logdet { width: 100%; max-width: 640px; max-height: 88vh; display: flex; flex-direction: column; background: var(--white); border-radius: 14px; box-shadow: 0 24px 60px rgba(16,26,48,.3); overflow: hidden; }
body.ui-v2 .v2-logdet-h { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 16px 20px; border-bottom: 1px solid var(--divider); }
body.ui-v2 .v2-logdet-t { font-size: 16px; font-weight: 700; color: var(--text); }
body.ui-v2 .v2-logdet-s { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 6px; }
body.ui-v2 .v2-logdet-s .mono { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--muted); }
body.ui-v2 .v2-logdet-x { all: unset; cursor: pointer; font-size: 20px; line-height: 1; color: var(--subtle); padding: 2px 6px; }
body.ui-v2 .v2-logdet-b { padding: 16px 20px 20px; overflow-y: auto; display: flex; flex-direction: column; gap: 14px; background: color-mix(in srgb, var(--primary) 5%, var(--white)); }
body.ui-v2 .v2-logdet-g { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 12px 18px; background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); padding: 14px 16px; }
body.ui-v2 .v2-logdet-l { font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); margin-bottom: 3px; }
body.ui-v2 .v2-logdet-v { font-size: var(--fs-md); font-weight: 600; color: var(--text); word-break: break-word; }
body.ui-v2 .v2-logdet-extra pre { margin: 6px 0 0 !important; max-height: 260px; overflow: auto; font-family: var(--font-mono) !important; }

/* ═══ v3.124.2 — logs RBX/Geogrid preenchidos, barra numa linha, Status do servidor ═══ */
@media (min-width: 769px) {
  body.ui-v2 .v2-logtool { flex-wrap: nowrap !important; }
  body.ui-v2 .v2-logtool > .v2-logtabs { flex-shrink: 0; }
  body.ui-v2 .v2-logfil { flex-wrap: nowrap !important; min-width: 0; flex: 1 1 auto; }
  body.ui-v2 .v2-logfil .filter-input { min-width: 0 !important; flex: 1 1 130px; max-width: 200px; }
  body.ui-v2 .v2-logfil select.filter-input { flex: 0 1 140px; }
  body.ui-v2 .v2-logdir { flex-shrink: 0; }
  body.ui-v2 .v2-loglist { --lcols: 104px minmax(180px, 2fr) minmax(170px, 1.7fr) minmax(100px, .9fr) minmax(100px, .9fr) minmax(96px, .7fr) !important; }
  body.ui-v2 .v2-lhead.c-olt, body.ui-v2 .v2-lr.c-olt { --lcols: 104px minmax(170px, 1.7fr) minmax(160px, 1.5fr) minmax(96px, .8fr) minmax(120px, 1fr) minmax(104px, .9fr) minmax(96px, .7fr) !important; }
  body.ui-v2 .v2-lr > div.mono:first-child { overflow: visible; }
}
@media (min-width: 769px) and (max-width: 1280px) { body.ui-v2 .v2-logcnt { display: none; } }
/* Status do servidor */
body.ui-v2 #sec-server-status .content-title { display: none; }
body.ui-v2 #sec-server-status .srv-card { padding: 16px 18px; }
body.ui-v2 #sec-server-status .srv-card-title { font-size: var(--fs-lg); letter-spacing: 0; text-transform: none; margin-bottom: 12px; }
body.ui-v2 #sec-server-status .srv-metric-row { display: grid !important; grid-template-columns: 96px minmax(80px, 1fr) 52px auto; align-items: center; gap: 10px; margin-bottom: 10px; }
body.ui-v2 #sec-server-status .srv-bar-wrap { width: auto !important; height: 8px; border-radius: 5px; background: var(--divider); overflow: hidden; }
body.ui-v2 #sec-server-status .srv-bar { height: 100%; border-radius: 5px; }
body.ui-v2 #sec-server-status .srv-pct { font-family: var(--font-mono); font-size: var(--fs-md); font-weight: 600; text-align: right; }
body.ui-v2 #sec-server-status .srv-detail { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--muted); white-space: nowrap; }
body.ui-v2 #sec-server-status .srv-card:has(.srv-info-grid) { grid-column: 1 / -1; }
body.ui-v2 #sec-server-status .srv-info-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; }
body.ui-v2 #sec-server-status .srv-info-item { border: 0; }
body.ui-v2 #sec-server-status .srv-info-item-val { font-family: var(--font-mono); font-size: var(--fs-md) !important; font-weight: 600; word-break: break-word; }

/* ═══ v3.124.3 — Status do servidor no padrão novo (métrica: rótulo · % em cima, barra, detalhe embaixo) ═══ */
body.ui-v2 #sec-server-status .srv-card { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); box-shadow: none; }
body.ui-v2 #sec-server-status .srv-metric-row { grid-template-columns: minmax(0, 1fr) auto !important; grid-template-areas: "l p" "b b" "d d"; gap: 6px 10px !important; margin-bottom: 14px !important; }
body.ui-v2 #sec-server-status .srv-metric-label { grid-area: l; font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); }
body.ui-v2 #sec-server-status .srv-pct { grid-area: p; font-size: 20px !important; line-height: 1; }
body.ui-v2 #sec-server-status .srv-bar-wrap { grid-area: b; height: 10px !important; }
body.ui-v2 #sec-server-status .srv-detail { grid-area: d; overflow: hidden; text-overflow: ellipsis; }
body.ui-v2 #sec-server-status #srv-cpu-model, body.ui-v2 #sec-server-status #srv-disk-mount { font-size: var(--fs-sm) !important; color: var(--muted) !important; }
body.ui-v2 #sec-server-status .cpu-chart-wrap { border-radius: var(--radius-md); overflow: hidden; background: var(--surface-2); }
body.ui-v2 #sec-server-status .srv-info-item { background: color-mix(in srgb, var(--primary) 7%, var(--white)) !important; }

/* ═══ v3.125.0 — Dashboard Parceiro e Auditoria LGPD no padrão novo ═══ */
@media (min-width: 769px) {
  body.ui-v2 #sec-dashboard-parceiro .content-title, body.ui-v2 #sec-dashboard-parceiro-master .content-title, body.ui-v2 #sec-auditoria-lgpd .content-title { display: none; }
  /* Dashboard Parceiro: números grandes, cartões brancos sem sombra */
  body.ui-v2 #dash-parceiro-root .dpar-head-card, body.ui-v2 #dash-parceiro-master-root .dpar-head-card { background: var(--white) !important; border: 1px solid var(--border-soft) !important; border-radius: var(--radius) !important; box-shadow: none !important; padding: 14px 18px !important; }
  body.ui-v2 .dpar-head-card { gap: 6px; }
  body.ui-v2 .dpar-head-card > div:first-child, body.ui-v2 .dpar-head-card [class*="titulo"], body.ui-v2 .dpar-head-card [class*="label"] { font-size: var(--fs-xs) !important; font-weight: 700 !important; letter-spacing: .8px; text-transform: uppercase; color: var(--subtle) !important; }
  body.ui-v2 .dpar-head-card [class*="num"], body.ui-v2 .dpar-head-card [class*="valor"], body.ui-v2 .dpar-head-card strong, body.ui-v2 .dpar-head-card b { font-family: var(--font-mono) !important; font-size: 24px !important; font-weight: 600 !important; color: var(--text) !important; line-height: 1.15; }
  body.ui-v2 .dpar-chart-card, body.ui-v2 .dpar-card, body.ui-v2 [class^="dpar-"][class*="-card"]:not(.dpar-head-card) { background: var(--white) !important; border: 1px solid var(--border-soft) !important; border-radius: var(--radius) !important; box-shadow: none !important; }
  body.ui-v2 [class^="dpar-"] h3, body.ui-v2 [class^="dpar-"] h4, body.ui-v2 [class^="dpar-"] [class*="-titulo"] { font-size: var(--fs-lg) !important; font-weight: 700 !important; color: var(--text) !important; letter-spacing: 0 !important; text-transform: none !important; }
  body.ui-v2 [class^="dpar-"] table th { background: var(--surface-2) !important; font-size: var(--fs-xs) !important; font-weight: 700 !important; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle) !important; }
  body.ui-v2 [class^="dpar-"] table td { font-size: var(--fs-base); border-color: var(--divider) !important; }
  /* Auditoria LGPD: barra de filtros + tabela */
  body.ui-v2 #sec-auditoria-lgpd .section-card { padding: 0 !important; overflow: hidden; }
  body.ui-v2 #sec-auditoria-lgpd .section-card > :first-child:not(.tbl-wrap) { padding: 12px 16px; border-bottom: 1px solid var(--border-soft); display: flex; align-items: flex-end; gap: 10px; flex-wrap: wrap; }
  body.ui-v2 #sec-auditoria-lgpd .filter-group { margin: 0 !important; }
  body.ui-v2 #sec-auditoria-lgpd .filter-input { height: 38px; }
  body.ui-v2 #sec-auditoria-lgpd .tbl-wrap { border: 0 !important; border-radius: 0 !important; margin: 0 !important; }
  body.ui-v2 #sec-auditoria-lgpd table th { background: var(--surface-2) !important; font-size: var(--fs-xs) !important; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle) !important; padding: 10px 14px !important; }
  body.ui-v2 #sec-auditoria-lgpd table td { padding: 10px 14px !important; font-size: var(--fs-base); border-top: 1px solid var(--divider) !important; }
  body.ui-v2 #sec-auditoria-lgpd table td:first-child { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--muted); white-space: nowrap; }
  body.ui-v2 #sec-auditoria-lgpd table tbody tr:hover td { background: var(--blue-soft); }
}

/* ═══ v3.125.1 — Dashboard Parceiro: classes reais (.dash-parc-grid com cartões de estilo inline) ═══ */
@media (min-width: 769px) {
  body.ui-v2 .dash-parc-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)) !important; gap: 12px !important; margin-bottom: 14px !important; }
  body.ui-v2 .dash-parc-grid > div { background: var(--white) !important; border: 1px solid var(--border-soft) !important; border-radius: var(--radius) !important; padding: 14px 16px !important; text-align: left !important; display: flex; flex-direction: column; gap: 4px; }
  /* cartão = número · rótulo · (detalhe): rótulo sobe, número grande embaixo, detalhe por último */
  body.ui-v2 .dash-parc-grid > div > div:nth-child(1) { order: 2; font-family: var(--font-mono) !important; font-size: 26px !important; font-weight: 600 !important; line-height: 1.15 !important; margin: 0 !important; color: var(--text) !important; }
  body.ui-v2 .dash-parc-grid > div > div:nth-child(2) { order: 1; font-family: var(--font) !important; font-size: var(--fs-xs) !important; font-weight: 700 !important; letter-spacing: .8px !important; text-transform: uppercase; color: var(--subtle) !important; line-height: 1.3; }
  body.ui-v2 .dash-parc-grid > div > div:nth-child(3) { order: 3; font-family: var(--font) !important; font-size: var(--fs-sm) !important; color: var(--muted) !important; margin: 0 !important; }
  body.ui-v2 #dash-parceiro-root .section-card, body.ui-v2 #dash-master-parc-root .section-card { padding: 0 !important; overflow: hidden; }
  body.ui-v2 #dash-parceiro-root .section-card-header, body.ui-v2 #dash-master-parc-root .section-card-header { padding: 13px 18px !important; margin: 0 !important; border-bottom: 1px solid var(--divider); }
  body.ui-v2 #dash-parceiro-root .tbl-wrap, body.ui-v2 #dash-master-parc-root .tbl-wrap { border: 0 !important; border-radius: 0 !important; margin: 0 !important; }
  body.ui-v2 #dash-parceiro-root table th, body.ui-v2 #dash-master-parc-root table th { background: var(--surface-2) !important; font-size: var(--fs-xs) !important; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle) !important; padding: 10px 14px !important; }
  body.ui-v2 #dash-parceiro-root table td, body.ui-v2 #dash-master-parc-root table td { padding: 10px 14px !important; font-size: var(--fs-base); }
  body.ui-v2 #dash-parceiro-root table td:first-child, body.ui-v2 #dash-master-parc-root table td:first-child { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--muted); white-space: nowrap; }
  body.ui-v2 #sec-dashboard-parceiro-master .content-inner > div:has(> #dash-master-parc-emp) { display: flex !important; align-items: center; gap: 10px; margin-bottom: 14px; }
  body.ui-v2 #dash-master-parc-emp { height: 38px; min-width: 220px; }
}

/* ═══ v3.126.0 — Notificações no padrão novo ═══ */
body.ui-v2 .notif-panel { width: 380px !important; max-width: calc(100vw - 32px); padding: 0 !important; background: var(--white) !important; border: 1px solid var(--border) !important; border-radius: 12px !important; box-shadow: 0 18px 44px rgba(16,26,48,.18) !important; overflow: hidden; }
body.ui-v2 .notif-header { display: flex; align-items: center; justify-content: space-between; padding: 13px 16px !important; border-bottom: 1px solid var(--divider) !important; background: var(--white) !important; }
body.ui-v2 .notif-title { font-size: var(--fs-lg) !important; font-weight: 700 !important; color: var(--text) !important; letter-spacing: 0 !important; text-transform: none !important; }
body.ui-v2 .notif-list { max-height: min(70vh, 520px) !important; overflow-y: auto; padding: 0 !important; background: var(--white); scrollbar-width: thin; }
body.ui-v2 .notif-item { display: flex !important; align-items: flex-start !important; gap: 11px !important; padding: 11px 16px !important; margin: 0 !important; border: 0 !important; border-top: 1px solid var(--divider) !important; border-radius: 0 !important; background: var(--white) !important; box-shadow: none !important; }
body.ui-v2 .notif-list > .notif-item:first-child { border-top: 0 !important; }
body.ui-v2 .notif-item:hover { background: var(--blue-soft) !important; }
body.ui-v2 .notif-item[style*="border-left"] { box-shadow: inset 3px 0 0 #E8A33D !important; }
body.ui-v2 .notif-item.notif-item-alerta { box-shadow: inset 3px 0 0 var(--red-tx) !important; }
body.ui-v2 .notif-icon { width: 32px !important; height: 32px !important; border-radius: 9px !important; font-size: 15px !important; flex-shrink: 0; display: flex !important; align-items: center; justify-content: center; background: var(--surface-2) !important; }
body.ui-v2 .notif-body { flex: 1; min-width: 0; }
body.ui-v2 .notif-nome { font-size: var(--fs-base) !important; font-weight: 700 !important; color: var(--text) !important; line-height: 1.35; overflow: hidden; text-overflow: ellipsis; }
body.ui-v2 .notif-desc { font-size: var(--fs-sm) !important; color: var(--muted) !important; margin-top: 2px; line-height: 1.4; }
body.ui-v2 .notif-data { font-family: var(--font-mono) !important; font-size: 10.5px !important; color: var(--subtle) !important; white-space: nowrap; }
body.ui-v2 .notif-arrow { width: 26px !important; height: 26px !important; border-radius: 7px !important; border: 1px solid var(--border) !important; background: var(--white) !important; color: var(--primary) !important; font-size: 12px !important; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; padding: 0 !important; }
body.ui-v2 .notif-arrow:hover { background: var(--blue-light) !important; border-color: var(--blue-line) !important; }
body.ui-v2 .notif-empty { padding: 28px 16px !important; text-align: center; font-size: var(--fs-base) !important; color: var(--subtle) !important; }
body.ui-v2.dark-mode .notif-panel, body.ui-v2.dark-mode .notif-header, body.ui-v2.dark-mode .notif-list, body.ui-v2.dark-mode .notif-item { background: var(--white) !important; }
body.ui-v2.dark-mode .notif-item:hover { background: var(--surface-2) !important; }

/* ═══ v3.126.2 — Dashboard Parceiro: situação atual (4) numa linha, últimos 7 dias (3) na linha de baixo ═══ */
@media (min-width: 769px) {
  body.ui-v2 .dash-parc-grid { grid-template-columns: repeat(12, minmax(0, 1fr)) !important; }
  body.ui-v2 .dash-parc-grid > div { grid-column: span 3; }
  body.ui-v2 .dash-parc-grid > div:nth-child(n+5) { grid-column: span 4; }
  body.ui-v2 .dash-parc-grid > div > div:nth-child(2) { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
}

/* ═══ v3.126.3 — Dashboard Parceiro: cartões ocupam a célula toda (sem vão na 2ª linha) e valores centralizados ═══ */
@media (min-width: 769px) {
  body.ui-v2 .dash-parc-grid { justify-items: stretch !important; }
  body.ui-v2 .dash-parc-grid > div { width: auto !important; max-width: none !important; min-width: 0 !important; margin: 0 !important; justify-self: stretch !important; align-items: center !important; text-align: center !important; }
  body.ui-v2 .dash-parc-grid > div > div { text-align: center !important; align-self: center; }
}

/* ═══ v3.127.0 — Configurações no padrão do protótipo ═══ */
body.ui-v2 :is(#sec-empresas, #sec-usuarios, #sec-municipios, #sec-olts, #sec-kmz, #sec-os-config, #sec-integracoes, #sec-backup) .section-card { padding: 0 !important; overflow: hidden; }
body.ui-v2 :is(#sec-empresas, #sec-usuarios, #sec-municipios, #sec-olts, #sec-kmz, #sec-os-config) .section-card > .section-card-header { margin: 0 !important; padding: 13px 18px !important; border-bottom: 1px solid var(--divider); flex-wrap: wrap; }
body.ui-v2 :is(#sec-empresas, #sec-usuarios, #sec-municipios, #sec-olts, #sec-kmz, #sec-os-config, #sec-integracoes, #sec-backup) .section-card-title { font-size: var(--fs-lg) !important; font-weight: 700 !important; color: var(--text) !important; }
body.ui-v2 .v2-cfg-tit { flex: 1; min-width: 180px; }
body.ui-v2 .v2-cfg-cnt { font-size: var(--fs-sm); color: var(--subtle); margin-top: 2px; }
body.ui-v2 .v2-cfg-cnt:empty { display: none; }
body.ui-v2 .v2-cfg-acoes { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
body.ui-v2 .v2-cfg-acoes > select { width: 210px !important; height: 34px; padding-top: 0 !important; padding-bottom: 0 !important; }
body.ui-v2 :is(#sec-empresas, #sec-usuarios, #sec-olts) .section-card > .tbl-wrap { margin: 0 !important; border: 0 !important; border-radius: 0 !important; }
body.ui-v2 :is(#sec-empresas, #sec-usuarios, #sec-olts) .tbl-wrap th { background: var(--surface-2) !important; font-size: var(--fs-xs) !important; font-weight: 700 !important; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle) !important; padding: 10px 14px !important; }
body.ui-v2 :is(#sec-empresas, #sec-usuarios, #sec-olts) .tbl-wrap td { padding: 11px 14px !important; font-size: var(--fs-base); }
body.ui-v2 :is(#sec-empresas, #sec-usuarios, #sec-olts) .tbl-wrap th:first-child, body.ui-v2 :is(#sec-empresas, #sec-usuarios, #sec-olts) .tbl-wrap td:first-child { padding-left: 18px !important; }
body.ui-v2 #usr-paginacao { padding: 0 18px 14px; }
/* botões do cabeçalho: tons neutros (OLT) e cores do tema (Municípios) no lugar das cores fixas */
body.ui-v2 #sec-olts .section-card-header .btn-sm-ghost[style] { border-color: var(--border) !important; color: var(--primary) !important; }
body.ui-v2 #btn-municipios-csv { border-color: var(--green-line, #9fdcbd) !important; color: var(--green-tx) !important; }
body.ui-v2 #btn-municipios-importar { border-color: var(--blue-line) !important; color: var(--primary) !important; }
body.ui-v2 #btn-municipios-pdf { border-color: var(--red-line) !important; color: var(--red-tx) !important; }
body.ui-v2 :is(#sec-empresas, #sec-usuarios, #sec-municipios, #sec-olts, #sec-kmz, #sec-os-config) .section-card-header .btn-sm { height: 34px; }
body.ui-v2 #municipios-lista { padding: 14px 18px; margin: 0 !important; }

/* ═══ v3.128.0 — busca de usuários ═══ */
.usr-sug { position: absolute; top: calc(100% + 5px); left: 0; right: 0; min-width: 300px; z-index: 50; background: var(--card, #fff); border: 1px solid var(--border, #dce3ef); border-radius: 10px; box-shadow: 0 14px 34px rgba(16,26,48,.16); padding: 5px; max-height: 320px; overflow-y: auto; }
.usr-sug-it { display: flex; align-items: baseline; gap: 6px; flex-wrap: wrap; padding: 8px 10px; border-radius: 7px; cursor: pointer; font-size: 13px; }
.usr-sug-it b { font-weight: 700; }
.usr-sug-it span { color: var(--muted, #6b7a99); }
.usr-sug-it i { font-style: normal; margin-left: auto; font-size: 11.5px; color: var(--muted, #8d9ab5); }
.usr-sug-it:hover, .usr-sug-it.on { background: var(--blue-soft, #eef4ff); }
.usr-sug-vazio { padding: 10px 12px; font-size: 13px; color: var(--muted, #8d9ab5); }
body.ui-v2 .v2-cfg-acoes > .usr-busca-wrap { flex: 0 1 260px !important; }
body.ui-v2 .v2-cfg-acoes #usr-busca { height: 34px; }

/* ═══ v3.128.1 — Usuários: busca, empresa, Filtrar e + Novo usuário numa linha só ═══ */
@media (min-width: 769px) {
  body.ui-v2 #sec-usuarios .section-card > .section-card-header { flex-wrap: nowrap !important; gap: 14px; }
  body.ui-v2 #sec-usuarios .v2-cfg-tit { flex: 1 1 auto; min-width: 140px; }
  body.ui-v2 #sec-usuarios .v2-cfg-acoes { flex: 0 1 auto; flex-wrap: nowrap !important; min-width: 0; }
  body.ui-v2 #sec-usuarios .v2-cfg-acoes > .usr-busca-wrap { flex: 0 1 240px !important; min-width: 150px; max-width: 240px !important; }
  body.ui-v2 #sec-usuarios .v2-cfg-acoes > select { flex: 0 1 190px; width: 190px !important; min-width: 130px; }
  body.ui-v2 #sec-usuarios .v2-cfg-acoes > .btn-sm { flex-shrink: 0; white-space: nowrap; }
}
@media (min-width: 769px) and (max-width: 1200px) {
  body.ui-v2 #sec-usuarios .v2-cfg-acoes > .usr-busca-wrap { flex-basis: 180px !important; }
  body.ui-v2 #sec-usuarios .v2-cfg-acoes > select { width: 150px !important; }
}

/* ═══ v3.129.0 — Configurações (KMZ, Configurações de OS, Integrações, Backup) no padrão novo ═══
   Cartão com tabela: cabeçalho e tabela encostados nas bordas. Cartão com formulário:
   padding normal, cabeçalho "sangrando" até as bordas com divisória. */
body.ui-v2 :is(#sec-kmz, #sec-os-config, #sec-integracoes, #sec-backup) .section-card:not(:has(> .tbl-wrap)) { padding: 16px 18px !important; }
body.ui-v2 :is(#sec-kmz, #sec-os-config, #sec-integracoes, #sec-backup) .section-card:not(:has(> .tbl-wrap)) > .section-card-header { margin: -16px -18px 16px !important; padding: 13px 18px !important; border-bottom: 1px solid var(--divider); }
body.ui-v2 :is(#sec-integracoes, #sec-backup) .section-card > .section-card-header { margin: -16px -18px 16px !important; padding: 13px 18px !important; border-bottom: 1px solid var(--divider); flex-wrap: wrap; }
body.ui-v2 :is(#sec-kmz, #sec-os-config, #sec-integracoes, #sec-backup) .section-card:has(> .tbl-wrap) > .tbl-wrap { margin: 0 !important; border: 0 !important; border-radius: 0 !important; }
body.ui-v2 :is(#sec-kmz, #sec-os-config, #sec-integracoes, #sec-backup) .section-card .tbl-wrap th { background: var(--surface-2) !important; font-size: var(--fs-xs) !important; font-weight: 700 !important; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle) !important; padding: 10px 14px !important; }
body.ui-v2 :is(#sec-kmz, #sec-os-config, #sec-integracoes, #sec-backup) .section-card .tbl-wrap td { padding: 11px 14px !important; font-size: var(--fs-base); }
body.ui-v2 :is(#sec-kmz, #sec-os-config, #sec-integracoes, #sec-backup) .section-card:has(> .tbl-wrap) .tbl-wrap :is(th, td):first-child { padding-left: 18px !important; }
body.ui-v2 :is(#sec-kmz, #sec-os-config, #sec-integracoes, #sec-backup) .section-card { margin-bottom: 14px; }
/* botões do cabeçalho com cores fixas viram neutros */
body.ui-v2 :is(#sec-kmz, #sec-os-config, #sec-integracoes, #sec-backup) .section-card-header .btn-sm-ghost[style] { border-color: var(--border) !important; color: var(--primary) !important; }
/* KMZ: abas sem a linha de baixo antiga, descrição e aviso com respiro */
body.ui-v2 #sec-kmz .content-title { display: none; }
body.ui-v2 #sec-kmz div.v2-hx-os-tab-status { border-bottom: 0 !important; }
body.ui-v2 #sec-kmz .kmz-panel > .content-sub { margin: 0 0 12px; }
body.ui-v2 #sec-kmz .aviso-parceiro .aviso-icone { display: none; }
/* Configurações de OS: campos de prazo e lista de categorias */
body.ui-v2 #oscfg-prazo-card .field-input { height: 38px; font-family: var(--font-mono); }
body.ui-v2 #sec-os-config .field-label { font-size: var(--fs-xs) !important; font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle) !important; }
body.ui-v2 #sec-os-config #os-config-lista { display: flex; flex-direction: column; gap: 10px; }
/* Integrações e Backup: rótulos e campos no padrão dos formulários */
body.ui-v2 :is(#sec-integracoes, #sec-backup) label:not(.field-checkbox):not(.toggle-wrap) { font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); }
body.ui-v2 :is(#sec-integracoes, #sec-backup) .filter-input, body.ui-v2 :is(#sec-integracoes, #sec-backup) .field-input { height: 38px; }
body.ui-v2 :is(#sec-integracoes, #sec-backup) textarea.filter-input, body.ui-v2 :is(#sec-integracoes, #sec-backup) textarea.field-input { height: auto; }
body.ui-v2 :is(#sec-integracoes, #sec-backup) input[type="password"], body.ui-v2 :is(#sec-integracoes, #sec-backup) input[id*="url"], body.ui-v2 :is(#sec-integracoes, #sec-backup) input[id*="token"] { font-family: var(--font-mono); }
body.ui-v2 :is(#sec-integracoes, #sec-backup) .section-card > div[style*="font-size:12px"], body.ui-v2 :is(#sec-integracoes, #sec-backup) .section-card > p { font-size: var(--fs-sm) !important; color: var(--muted) !important; line-height: 1.55; }

/* ═══ v3.130.0 — ícones desenhados nas ações · Municípios e OLTs no padrão do protótipo ═══ */
body.ui-v2 .v2-ico { pointer-events: none; display: block; }
body.ui-v2 .v2-btn-ico { width: 30px !important; height: 30px !important; min-width: 30px; padding: 0 !important; display: inline-flex !important; align-items: center; justify-content: center; border-radius: 8px !important; background: var(--white) !important; border: 1px solid var(--border) !important; color: var(--primary) !important; font-size: 0 !important; vertical-align: middle; }
body.ui-v2 .v2-btn-ico:hover { background: var(--blue-soft) !important; border-color: var(--blue-line) !important; }
body.ui-v2 .v2-btn-ico.btn-sm-danger, body.ui-v2 .v2-btn-ico[data-action^="excluir"], body.ui-v2 .v2-btn-ico[data-action^="remover"] { color: var(--red-tx) !important; border-color: var(--red-line) !important; }
body.ui-v2 .v2-btn-ico.btn-sm-danger:hover, body.ui-v2 .v2-btn-ico[data-action^="excluir"]:hover { background: color-mix(in srgb, var(--red-tx) 8%, var(--white)) !important; }
body.ui-v2 td .v2-btn-ico + .v2-btn-ico, body.ui-v2 td .btn-sm + .v2-btn-ico { margin-left: 4px; }
/* Municípios: cartão por cidade */
body.ui-v2 #municipios-lista > div { border: 1px solid var(--border-soft) !important; border-radius: 10px !important; background: var(--white) !important; }
body.ui-v2 #municipios-lista > div > div:first-child { background: var(--white) !important; border-bottom: 1px solid var(--divider) !important; padding: 12px 14px !important; gap: 10px; }
body.ui-v2 #municipios-lista > div > div:first-child > span:first-child { color: var(--text) !important; font-size: var(--fs-lg) !important; }
body.ui-v2 #municipios-lista > div > div:first-child > div { align-items: center; gap: 6px !important; }
body.ui-v2 #municipios-lista [data-action="add-bairro"] { height: 30px; padding: 0 12px !important; font-size: var(--fs-sm) !important; background: var(--white) !important; color: var(--primary) !important; border: 1px solid var(--blue-line) !important; font-weight: 600; }
body.ui-v2 #municipios-lista > div > div:last-child { padding: 12px 14px !important; gap: 6px !important; }
body.ui-v2 #municipios-lista > div > div:last-child > span { background: var(--surface-2) !important; border: 1px solid var(--border-soft) !important; border-radius: 20px !important; padding: 4px 6px 4px 11px !important; font-size: var(--fs-sm) !important; color: var(--text-2); }
body.ui-v2 #municipios-lista > div > div:last-child > span button.v2-btn-ico { width: 20px !important; height: 20px !important; min-width: 20px; border: 0 !important; background: transparent !important; border-radius: 50% !important; }
body.ui-v2 #municipios-lista > div > div:last-child > span button.v2-btn-ico .v2-ico { width: 12px; height: 12px; }
body.ui-v2 #municipios-lista > div > div:last-child > span button.v2-btn-ico:hover { background: var(--blue-light) !important; }
/* OLTs: IP em mono, Telnet em pílula do tema */
body.ui-v2 #tbody-olts code { font-family: var(--font-mono) !important; background: none !important; padding: 0 !important; color: var(--text-2); }
body.ui-v2 #tbody-olts td span[style*="#fff3cd"] { background: var(--warn-bg) !important; color: var(--warn-tx) !important; border: 0 !important; border-radius: 20px !important; }
body.ui-v2 #tbody-olts .badge-ativo { border-radius: 20px; }
body.ui-v2 #tbody-olts td.td-actions, body.ui-v2 :is(#tbody-empresas, #tbody-usuarios, #tbody-kmz-parceiros, #tbody-kmz-cobertura) td:last-child { white-space: nowrap; }

/* ═══ v3.131.0 — Integrações e Backup no padrão do protótipo ═══ */
/* subtítulos internos (antes azul, caixa-alta, com emoji) */
body.ui-v2 :is(#sec-integracoes, #sec-backup) div[style*="color:var(--blue);text-transform:uppercase"] { color: var(--text) !important; font-size: var(--fs-md) !important; font-weight: 700 !important; text-transform: none !important; letter-spacing: 0 !important; border-bottom-color: var(--divider) !important; }
/* caixas internas (Homologação/Produção, blocos) */
body.ui-v2 :is(#sec-integracoes, #sec-backup) [style*="background:var(--bg2)"] { background: var(--surface-2) !important; border: 1px solid var(--border-soft) !important; border-radius: 10px !important; }
/* status → selo */
body.ui-v2 [data-v2-selo] { display: inline-flex !important; align-items: center; width: auto !important; max-width: 100%; padding: 3px 10px !important; border-radius: 20px; font-size: var(--fs-xs) !important; font-weight: 700 !important; letter-spacing: 0 !important; text-transform: none !important; margin-top: 4px !important; }
body.ui-v2 [data-v2-selo="ok"] { background: var(--green-light) !important; color: var(--green-tx) !important; }
body.ui-v2 [data-v2-selo="erro"] { background: color-mix(in srgb, var(--red-tx) 10%, var(--white)) !important; color: var(--red-tx) !important; }
body.ui-v2 [data-v2-selo="neutro"] { background: var(--surface-2) !important; color: var(--muted) !important; }
body.ui-v2 [data-v2-selo=""] { display: none !important; }
body.ui-v2 #sec-integracoes .section-card-header > div:first-child { display: flex; flex-direction: column; align-items: flex-start; }
/* botões de ação nos formulários: primário à direita, secundário neutro */
body.ui-v2 :is(#sec-integracoes, #sec-backup) .btn, body.ui-v2 :is(#sec-integracoes, #sec-backup) .section-card .btn-sm { height: 36px; display: inline-flex; align-items: center; justify-content: center; white-space: nowrap; }
body.ui-v2 :is(#sec-integracoes, #sec-backup) .btn-secondary[style*="color"], body.ui-v2 :is(#sec-integracoes, #sec-backup) .btn-sm-ghost[style*="border-color"] { border-color: var(--border) !important; color: var(--primary) !important; }
/* tabelas montadas pelo JS (log de backups, listas) */
body.ui-v2 #sec-backup table th, body.ui-v2 #sec-integracoes table th { background: var(--surface-2) !important; font-size: var(--fs-xs) !important; font-weight: 700 !important; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle) !important; padding: 9px 12px !important; }
body.ui-v2 #sec-backup table td, body.ui-v2 #sec-integracoes table td { padding: 9px 12px !important; font-size: var(--fs-base); border-top: 1px solid var(--divider); }
body.ui-v2 :is(#sec-backup, #sec-integracoes) table { border-collapse: collapse; width: 100%; }
body.ui-v2 :is(#sec-backup, #sec-integracoes) code { font-family: var(--font-mono); background: var(--surface-2); padding: 1px 5px; border-radius: 5px; font-size: .92em; }

/* ═══ v3.132.0 — Empresas no padrão do protótipo · tamanhos de fonte das Integrações · menu mobile ═══ */
body.ui-v2 #tbody-empresas .emp-cor-dot { width: 4px !important; height: 20px !important; border-radius: 3px !important; border: 0 !important; margin-right: 10px !important; vertical-align: middle !important; }
body.ui-v2 #tbody-empresas td:first-child { white-space: nowrap; }
body.ui-v2 #tbody-empresas td:first-child strong { font-weight: 700; color: var(--text); vertical-align: middle; }
body.ui-v2 #tbody-empresas .emp-master { font-size: 10px !important; font-weight: 700; letter-spacing: .4px; padding: 2px 8px !important; border-radius: 20px !important; margin-left: 8px; background: var(--blue-light) !important; color: var(--primary) !important; vertical-align: middle; }
body.ui-v2 :is(#tbody-empresas, #tbody-usuarios, #tbody-olts) td.mono { font-family: var(--font-mono) !important; font-size: var(--fs-base) !important; color: var(--text-2); white-space: nowrap; }
body.ui-v2 #tbody-empresas td { color: var(--text-2); }
body.ui-v2 #sec-integracoes { font-size: var(--fs-base); }
body.ui-v2 #sec-integracoes [style*="font-size:11px"], body.ui-v2 #sec-integracoes [style*="font-size: 11px"] { font-size: 12px !important; line-height: 1.5; }
body.ui-v2 #sec-integracoes [style*="font-size:12px"], body.ui-v2 #sec-integracoes [style*="font-size: 12px"] { font-size: 12.5px !important; }
body.ui-v2 #sec-integracoes :is(input, select, textarea)[style*="font-size"] { font-size: var(--fs-md) !important; }
body.ui-v2 #sec-integracoes label[style*="font-size"] { font-size: var(--fs-xs) !important; font-weight: 700; letter-spacing: .6px; text-transform: uppercase; color: var(--subtle) !important; }
body.ui-v2 #sec-integracoes .section-card-title { font-size: 15px !important; }
body.ui-v2 #sec-integracoes div[style*="color:var(--blue);text-transform:uppercase"] { font-size: 13.5px !important; }
body.ui-v2 #sec-integracoes .btn[style*="font-size"], body.ui-v2 #sec-integracoes .btn-sm[style*="font-size"] { font-size: var(--fs-base) !important; }
body.ui-v2 #sec-integracoes code { font-size: 12px; }
body.ui-v2 #mobile-nav-items > .mob-nav-item { margin: 2px 0; font-weight: 600; }

/* ═══ v3.132.1 — Integrações na escala de fontes do sistema · Atlas › Informações no padrão das tabelas ═══ */
body.ui-v2 #sec-integracoes [style*="font-size:11px"], body.ui-v2 #sec-integracoes [style*="font-size: 11px"] { font-size: var(--fs-sm) !important; }
body.ui-v2 #sec-integracoes [style*="font-size:12px"], body.ui-v2 #sec-integracoes [style*="font-size: 12px"] { font-size: var(--fs-base) !important; }
body.ui-v2 #sec-integracoes :is(input, select, textarea)[style*="font-size"] { font-size: var(--fs-md) !important; }
body.ui-v2 #sec-integracoes .section-card-title { font-size: var(--fs-lg) !important; }
body.ui-v2 #sec-integracoes div[style*="color:var(--blue);text-transform:uppercase"] { font-size: var(--fs-md) !important; }
body.ui-v2 #sec-integracoes .btn[style*="font-size"], body.ui-v2 #sec-integracoes .btn-sm[style*="font-size"] { font-size: var(--fs-base) !important; }
body.ui-v2 #sec-integracoes code { font-size: var(--fs-sm); }
/* Atlas › Informações (Viabilidades, Log de Consultas, Log de ONUs) e Arquivos */
body.ui-v2 :is(#sec-atlas-info-viab, #sec-atlas-consultas, #sec-atlas-logs-onu, #sec-atlas-arquivos) .section-card:has(> .tbl-wrap) { padding: 0 !important; overflow: hidden; }
body.ui-v2 :is(#sec-atlas-info-viab, #sec-atlas-consultas, #sec-atlas-logs-onu, #sec-atlas-arquivos) .section-card:has(> .tbl-wrap) > .section-card-header { margin: 0 !important; padding: 13px 18px !important; border-bottom: 1px solid var(--divider); }
body.ui-v2 :is(#sec-atlas-info-viab, #sec-atlas-consultas, #sec-atlas-logs-onu, #sec-atlas-arquivos) .section-card > .tbl-wrap { margin: 0 !important; border: 0 !important; border-radius: 0 !important; }
body.ui-v2 :is(#sec-atlas-info-viab, #sec-atlas-consultas, #sec-atlas-logs-onu, #sec-atlas-arquivos) .tbl-wrap th { background: var(--surface-2) !important; font-size: var(--fs-xs) !important; font-weight: 700 !important; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle) !important; padding: 10px 14px !important; }
body.ui-v2 :is(#sec-atlas-info-viab, #sec-atlas-consultas, #sec-atlas-logs-onu, #sec-atlas-arquivos) .tbl-wrap td { padding: 10px 14px !important; font-size: var(--fs-base); }
body.ui-v2 :is(#sec-atlas-info-viab, #sec-atlas-consultas, #sec-atlas-logs-onu, #sec-atlas-arquivos) .tbl-wrap :is(th, td):first-child { padding-left: 18px !important; }
body.ui-v2 :is(#sec-atlas-info-viab, #sec-atlas-consultas, #sec-atlas-logs-onu, #sec-atlas-arquivos) .section-card-title { font-size: var(--fs-lg) !important; font-weight: 700 !important; color: var(--text) !important; }

/* ═══ v3.133.0 — Atlas no padrão do protótipo ═══ */
/* Início: atalhos com ícone em quadrado, título, descrição e seta */
body.ui-v2 #ainicio-atalhos { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)) !important; gap: 12px !important; }
body.ui-v2 .atlas-atalho { position: relative; display: grid !important; grid-template-columns: 42px minmax(0, 1fr); grid-template-rows: auto auto; column-gap: 14px; align-items: center; min-height: 0 !important; padding: 16px 40px 16px 16px !important; border: 1px solid var(--border-soft) !important; border-radius: var(--radius) !important; box-shadow: none !important; background: var(--white) !important; transition: border-color .12s, box-shadow .12s; }
body.ui-v2 .atlas-atalho:hover { border-color: var(--blue-line) !important; box-shadow: 0 4px 14px rgba(0,48,135,.08) !important; }
body.ui-v2 .atlas-atalho::after { content: '›'; position: absolute; right: 16px; top: 50%; transform: translateY(-50%); font-size: 20px; color: var(--subtle); }
body.ui-v2 .atlas-atalho > div:nth-child(1) { grid-row: 1 / span 2; width: 42px; height: 42px; border-radius: 11px; display: flex; align-items: center; justify-content: center; font-size: 20px !important; background: color-mix(in srgb, var(--accent) 14%, var(--white)); }
body.ui-v2 .atlas-atalho > div:nth-child(2) { margin: 0 !important; font-size: var(--fs-lg) !important; font-weight: 700 !important; color: var(--text) !important; }
body.ui-v2 .atlas-atalho > div:nth-child(3) { margin: 2px 0 0 !important; font-size: var(--fs-sm) !important; color: var(--muted) !important; line-height: 1.45 !important; }
/* cartões das telas do Atlas */
body.ui-v2 :is(#sec-atlas-ativacao, #sec-atlas-remocao, #sec-atlas-consulta, #sec-atlas-ctos) .section-card { border: 1px solid var(--border-soft); border-radius: var(--radius); box-shadow: none; }
body.ui-v2 :is(#sec-atlas-ativacao, #sec-atlas-remocao, #sec-atlas-consulta, #sec-atlas-ctos) .section-card > .section-card-header { margin: -16px -18px 14px !important; padding: 13px 18px !important; border-bottom: 1px solid var(--divider); }
body.ui-v2 :is(#sec-atlas-ativacao, #sec-atlas-remocao, #sec-atlas-consulta, #sec-atlas-ctos) .section-card-title { font-size: var(--fs-lg) !important; font-weight: 700 !important; color: var(--text) !important; }
body.ui-v2 :is(#sec-atlas-ativacao, #sec-atlas-remocao, #sec-atlas-consulta, #sec-atlas-ctos) :is(.filter-input, .input-field) { height: 40px; box-sizing: border-box; font-size: var(--fs-md) !important; }
body.ui-v2 :is(#sec-atlas-ativacao, #sec-atlas-remocao, #sec-atlas-consulta, #sec-atlas-ctos) .input-label { font-size: var(--fs-xs) !important; font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle) !important; }
body.ui-v2 #arem-busca, body.ui-v2 #acli-codigo, body.ui-v2 #cto-busca, body.ui-v2 #sec-atlas-ativacao input[id*="serial"] { font-family: var(--font-mono) !important; }
body.ui-v2 :is(#sec-atlas-ativacao, #sec-atlas-remocao, #sec-atlas-consulta, #sec-atlas-ctos) .section-card .btn-sm { height: 40px; padding: 0 16px !important; font-weight: 700 !important; }
body.ui-v2 :is(#sec-atlas-ativacao, #sec-atlas-remocao, #sec-atlas-consulta, #sec-atlas-ctos) .section-card .btn-sm-ghost { font-weight: 600 !important; }
body.ui-v2 #aatv-card-buscar { display: flex; align-items: center; gap: 12px; }
body.ui-v2 #aatv-btn-buscar { padding: 0 22px !important; }
/* fila de CTOs */
body.ui-v2 #sec-atlas-ctos .cto-item { border: 0 !important; border-top: 1px solid var(--divider) !important; border-radius: 0 !important; margin: 0 !important; background: var(--white) !important; box-shadow: none !important; }
body.ui-v2 #sec-atlas-ctos .cto-item:first-child { border-top: 0 !important; }
body.ui-v2 #sec-atlas-ctos .cto-item:hover { background: var(--blue-soft) !important; }
body.ui-v2 #sec-atlas-ctos div:has(> .cto-item) { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); overflow: hidden; }
/* Mapa: painel e canvas em cartão */
body.ui-v2 #sec-atlas-mapa #mp-painel { margin-bottom: 12px; }
body.ui-v2 #sec-atlas-mapa .section-card { border: 1px solid var(--border-soft) !important; border-radius: var(--radius) !important; box-shadow: none !important; }
body.ui-v2 #sec-atlas-mapa #mp-painel .btn-sm { height: 34px; }

/* ═══ v3.133.2 — gráfico de Viabilidades: mês inteiro legível (números em cima, data reta), sem rolagem, ~10% mais alto ═══ */
body.ui-v2 .ai-grafico { height: 146px !important; overflow-x: hidden !important; padding: 12px 10px 4px !important; gap: 3px !important; }
body.ui-v2 .ai-grafico:not(.ai-grafico-poucos) .ai-barra { flex: 1 1 0 !important; min-width: 0 !important; max-width: 46px; }
body.ui-v2 .ai-grafico:not(.ai-grafico-muitos) .ai-barra-dia { font-size: 10px; letter-spacing: -.2px; transform: none; }
body.ui-v2 .ai-barra-num { font-size: 10px; color: var(--primary); }
@media (max-width: 1280px) { body.ui-v2 .ai-grafico:not(.ai-grafico-muitos):not(.ai-grafico-poucos) .ai-barra-dia { font-size: 9px; } }

/* ═══ v3.133.3 — Log de ONUs: barra de filtros alinhada pela base ═══ */
body.ui-v2 #sec-atlas-logs-onu .section-card:first-of-type > div:first-child { align-items: flex-end !important; gap: 10px !important; }
body.ui-v2 #sec-atlas-logs-onu .section-card:first-of-type label { font-size: var(--fs-xs) !important; font-weight: 700 !important; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle) !important; gap: 6px !important; }
body.ui-v2 #sec-atlas-logs-onu .section-card:first-of-type :is(.filter-input, .btn-sm) { height: 40px; box-sizing: border-box; font-size: var(--fs-md) !important; }
body.ui-v2 #sec-atlas-logs-onu #alog-busca { font-family: var(--font); }
body.ui-v2 #sec-atlas-logs-onu #alog-tipo { min-width: 170px; }
body.ui-v2 #sec-atlas-logs-onu :is(#alog-inicio, #alog-fim) { font-family: var(--font-mono); text-transform: none; letter-spacing: 0; color: var(--text); font-weight: 400; }
body.ui-v2 #sec-atlas-logs-onu #alog-btn { padding: 0 18px !important; font-weight: 700; }
body.ui-v2 #sec-atlas-logs-onu details > summary { font-size: var(--fs-sm) !important; color: var(--primary) !important; font-weight: 600; }

/* ═══ v3.134.0 — KMZ: abas no padrão da ficha do cliente, tabela com contorno, ícones ═══ */
body.ui-v2 #sec-kmz div.v2-hx-os-tab-status { display: flex !important; gap: 4px !important; padding: 0 12px !important; margin: 0 0 14px !important; background: var(--white) !important; border: 1px solid var(--border-soft) !important; border-radius: var(--radius) !important; align-self: stretch !important; }
body.ui-v2 #sec-kmz .os-tab-status { height: 46px; padding: 0 14px !important; border-radius: 0 !important; background: none !important; box-shadow: none !important; color: var(--muted) !important; font-size: var(--fs-md) !important; font-weight: 600 !important; border-bottom: 2px solid transparent !important; }
body.ui-v2 #sec-kmz .os-tab-status:hover { color: var(--text) !important; }
body.ui-v2 #sec-kmz .os-tab-status.active { color: var(--primary) !important; font-weight: 700 !important; border-bottom-color: var(--primary) !important; background: none !important; box-shadow: none !important; }
body.ui-v2 :is(#sec-kmz, #sec-empresas, #sec-usuarios, #sec-olts, #sec-municipios, #sec-os-config, #sec-integracoes, #sec-backup) .section-card { border: 1px solid var(--border-soft) !important; box-shadow: none !important; }
body.ui-v2 #tbody-kmz-parceiros .tbl-cor { width: 4px !important; height: 20px !important; border-radius: 3px !important; margin-right: 10px !important; vertical-align: middle; display: inline-block; }
body.ui-v2 #tbody-kmz-parceiros td:first-child { white-space: nowrap; }
body.ui-v2 #tbody-kmz-parceiros .v2-btn-ico[data-kmz="importar"] { background: var(--primary) !important; border-color: var(--primary) !important; color: var(--on-primary) !important; }
body.ui-v2 #tbody-kmz-parceiros .v2-btn-ico[data-kmz="excluir"] { color: var(--red-tx) !important; border-color: var(--red-line) !important; }
body.ui-v2 :is(#tbody-kmz-parceiros, #tbody-kmz-cobertura) td.td-actions, body.ui-v2 :is(#tbody-kmz-parceiros, #tbody-kmz-cobertura) td:last-child { white-space: nowrap; }

/* ═══ v3.135.0 — TODAS as abas no padrão das Ordens de Serviço ═══
   Bandeja cinza (um tom mais escura que a página, então aparece tanto
   sobre a página quanto dentro de cartão branco) e aba ativa branca com
   sombra. Antes a bandeja tinha a mesma cor da página e a 2ª aba ficava
   "flutuando" sem indicação. Vale para Apollo e Atlas. A ficha do cliente
   mantém as abas sublinhadas (padrão do protótipo). */
body.ui-v2 .seg, body.ui-v2 .v2-viab-abas, body.ui-v2 .os-tabs-status, body.ui-v2 div.v2-hx-os-tab-status, body.ui-v2 div.v2-hx-integ-tab-btn, body.ui-v2 div.v2-hx-bkp-main-tab, body.ui-v2 div.v2-hx-bkp-tab-btn, body.ui-v2 div.v2-hx-log-olt-tab, body.ui-v2 div.v2-hx-rbx-log-tab, body.ui-v2 div.v2-hx-geo-log-tab, body.ui-v2 #sec-kmz div.v2-hx-os-tab-status {
  display: inline-flex !important; flex-wrap: wrap; gap: 3px !important; padding: 3px !important; align-self: flex-start !important; width: auto !important;
  background: color-mix(in srgb, var(--text) 6%, var(--bg)) !important; border: 1px solid var(--border-soft) !important; border-radius: var(--radius-md) !important; box-shadow: none !important;
}
body.ui-v2 :is(.seg-item, .v2-aba, .os-tab-status, .integ-tab-btn, .bkp-main-tab, .bkp-tab-btn, .log-olt-tab, .rbx-log-tab, .geo-log-tab), body.ui-v2 #sec-kmz .os-tab-status {
  height: auto !important; padding: 7px 14px !important; margin: 0 !important; border: 0 !important; border-radius: var(--radius-sm) !important;
  background: transparent !important; box-shadow: none !important; color: var(--muted) !important;
  font-family: var(--font) !important; font-size: var(--fs-base) !important; font-weight: 600 !important; white-space: nowrap; cursor: pointer;
}
body.ui-v2 :is(.seg-item:hover, .v2-aba:hover, .os-tab-status:hover, .integ-tab-btn:hover, .bkp-main-tab:hover, .bkp-tab-btn:hover, .log-olt-tab:hover, .rbx-log-tab:hover, .geo-log-tab):hover, body.ui-v2 #sec-kmz .os-tab-status:hover { color: var(--text) !important; }
body.ui-v2 :is(.seg-item, .v2-aba, .os-tab-status, .integ-tab-btn, .bkp-main-tab, .bkp-tab-btn, .log-olt-tab, .rbx-log-tab, .geo-log-tab):is(.active, .ativa, .on, [aria-selected="true"]), body.ui-v2 #sec-kmz .os-tab-status.active { background: var(--white) !important; color: var(--primary) !important; font-weight: 700 !important; box-shadow: 0 1px 3px rgba(0,48,135,.12) !important; }
body.ui-v2.dark-mode body.ui-v2 .seg, body.ui-v2.dark-mode .v2-viab-abas, body.ui-v2.dark-mode .os-tabs-status, body.ui-v2.dark-mode div.v2-hx-os-tab-status, body.ui-v2.dark-mode div.v2-hx-integ-tab-btn, body.ui-v2.dark-mode div.v2-hx-bkp-main-tab, body.ui-v2.dark-mode div.v2-hx-bkp-tab-btn, body.ui-v2.dark-mode div.v2-hx-log-olt-tab, body.ui-v2.dark-mode div.v2-hx-rbx-log-tab, body.ui-v2.dark-mode div.v2-hx-geo-log-tab, body.ui-v2.dark-mode #sec-kmz div.v2-hx-os-tab-status { background: color-mix(in srgb, #ffffff 6%, var(--bg)) !important; }
body.ui-v2.dark-mode body.ui-v2 :is(.seg-item, .v2-aba, .os-tab-status, .integ-tab-btn, .bkp-main-tab, .bkp-tab-btn, .log-olt-tab, .rbx-log-tab, .geo-log-tab):is(.active, .ativa, .on, [aria-selected="true"]), body.ui-v2.dark-mode #sec-kmz .os-tab-status.active { background: var(--surface-2) !important; }
body.ui-v2 #sec-kmz div.v2-hx-os-tab-status { margin: 0 0 14px !important; }
body.ui-v2 .v2-viab-abas { margin: 16px 22px 0 !important; }

/* ═══ v3.135.1 — moldura branca em volta das abas, como na barra das OS ═══
   Desenhada com box-shadow (12 px de branco + 1 px de borda), sem mexer no
   HTML; a margem compensa o espaço da moldura. Nas OS a bandeja já está
   dentro da barra branca, então fica de fora. */
body.ui-v2 :is(.v2-viab-abas, #sec-kmz div.v2-hx-os-tab-status, div.v2-hx-integ-tab-btn, div.v2-hx-bkp-main-tab, div.v2-hx-bkp-tab-btn, div.v2-hx-log-olt-tab, div.v2-hx-rbx-log-tab, div.v2-hx-geo-log-tab, .content-inner > .seg, .content-inner > .os-tabs-status) {
  box-shadow: 0 0 0 12px var(--white), 0 0 0 13px var(--border-soft) !important;
  border-radius: var(--radius-md) !important;
  margin: 13px 13px 27px 13px !important;
}
body.ui-v2 .v2-viab-abas { margin: 29px 35px 13px !important; }
body.ui-v2 .v2-ostool > .os-tabs-status { box-shadow: none !important; margin: 0 !important; }
body.ui-v2.dark-mode body.ui-v2.dark-mode :is(.v2-viab-abas, #sec-kmz div.v2-hx-os-tab-status, div.v2-hx-integ-tab-btn, div.v2-hx-bkp-main-tab, div.v2-hx-bkp-tab-btn, div.v2-hx-log-olt-tab, div.v2-hx-rbx-log-tab, div.v2-hx-geo-log-tab, .content-inner > .seg, .content-inner > .os-tabs-status) { box-shadow: 0 0 0 12px var(--white), 0 0 0 13px var(--border) !important; }

/* ═══ v3.135.2 — barra branca das abas (substitui a moldura da v3.135.1) ═══ */
body.ui-v2 .v2-tabbar { display: flex; align-items: center; gap: 10px; background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); padding: 10px 14px; margin: 0 0 14px; }
body.ui-v2 .v2-tabbar-viab { margin: 16px 22px 0; }
body.ui-v2 .v2-tabbar > * { box-shadow: none !important; margin: 0 !important; }

/* ═══ v3.135.3 — Integrações/Backup: aba ativa visível, sem contorno preto; rótulos de opção sem caixa-alta ═══ */
body.ui-v2 :is(.integ-tab-btn, .bkp-main-tab, .bkp-tab-btn) { outline: none !important; }
body.ui-v2 :is(.integ-tab-btn, .bkp-main-tab, .bkp-tab-btn):focus-visible { box-shadow: 0 0 0 2px var(--blue-line) !important; }
body.ui-v2 :is(.integ-tab-btn, .bkp-main-tab, .bkp-tab-btn):not(.v2-on) { background: transparent !important; color: var(--muted) !important; font-weight: 600 !important; box-shadow: none !important; }
body.ui-v2 :is(.integ-tab-btn, .bkp-main-tab, .bkp-tab-btn).v2-on { background: var(--white) !important; color: var(--primary) !important; font-weight: 700 !important; box-shadow: 0 1px 3px rgba(0,48,135,.12) !important; }
body.ui-v2.dark-mode :is(.integ-tab-btn, .bkp-main-tab, .bkp-tab-btn).v2-on { background: var(--surface-2) !important; }
body.ui-v2 :is(#sec-integracoes, #sec-backup) label:has(input[type="radio"], input[type="checkbox"]) { text-transform: none !important; letter-spacing: 0 !important; font-size: var(--fs-base) !important; font-weight: 600 !important; color: var(--text) !important; }

/* ═══ v3.135.4 — moldura branca das abas justa e simétrica (só em volta da bandeja) ═══ */
body.ui-v2 .v2-tabbar { display: flex !important; width: fit-content !important; max-width: 100%; padding: 5px !important; gap: 0 !important; border-radius: calc(var(--radius-md) + 5px) !important; box-shadow: 0 1px 2px rgba(16,26,48,.04); }
body.ui-v2 .v2-tabbar-viab { margin: 16px 22px 0 !important; }

/* ═══ v3.135.5 — barra das abas: largura toda (como os cartões), espaço igual em cima, embaixo e à esquerda ═══ */
body.ui-v2 .v2-tabbar { width: auto !important; max-width: none !important; align-self: stretch !important; padding: 10px !important; border-radius: var(--radius) !important; justify-content: flex-start; }
body.ui-v2 .v2-tabbar-viab { margin: 16px 22px 0 !important; }

/* ═══ v3.135.6 — a moldura antiga (v3.135.1, sombra 12 px + margem 13/27 px) ainda vencia dentro da barra
   por especificidade (#sec-kmz no :is) e deixava a borda de baixo maior. Zerada aqui; espaço 8 px igual nos 4 lados. */
body.ui-v2 .v2-tabbar.v2-tabbar.v2-tabbar > :not(#v2-nada) { box-shadow: none !important; margin: 0 !important; }
body.ui-v2 .v2-tabbar.v2-tabbar.v2-tabbar { padding: 8px !important; }

/* ═══ v3.136.0 — Menu e telas V.tal no padrão do protótipo ═══ */
body.ui-v2 #nav-menu .v2-oculto-menu { display: none !important; }
@media (min-width: 769px) { body.ui-v2 #cli-tabs-vtal, body.ui-v2 #osv-tabs { display: none !important; } }
body.ui-v2 :is(#sec-viabilidade-vtal, #sec-os-vtal, #sec-diagnostico-vtal, #sec-clientes-vtal) .section-card { border: 1px solid var(--border-soft) !important; border-radius: var(--radius) !important; box-shadow: none !important; margin-bottom: 14px; }
/* Viabilidade e Diagnóstico: cartões de formulário */
body.ui-v2 :is(#sec-viabilidade-vtal, #sec-diagnostico-vtal) .section-card { padding: 16px 18px !important; }
body.ui-v2 :is(#sec-viabilidade-vtal, #sec-diagnostico-vtal) .section-card > .section-card-header { margin: -16px -18px 14px !important; padding: 13px 18px !important; border-bottom: 1px solid var(--divider); display: flex; align-items: center; justify-content: space-between; }
body.ui-v2 :is(#sec-viabilidade-vtal, #sec-os-vtal, #sec-diagnostico-vtal) .section-card-title { font-size: var(--fs-lg) !important; font-weight: 700 !important; color: var(--text) !important; }
body.ui-v2 :is(#sec-viabilidade-vtal, #sec-diagnostico-vtal) .input-label, body.ui-v2 :is(#sec-viabilidade-vtal, #sec-os-vtal, #sec-diagnostico-vtal) .filter-label { font-size: var(--fs-xs) !important; font-weight: 700 !important; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle) !important; }
body.ui-v2 :is(#sec-viabilidade-vtal, #sec-diagnostico-vtal) :is(.input-field, .filter-input) { height: 40px; box-sizing: border-box; font-size: var(--fs-md) !important; margin-bottom: 0; }
body.ui-v2 #sec-viabilidade-vtal input[readonly] { background: var(--surface-2) !important; color: var(--muted) !important; }
body.ui-v2 :is(#vv-res-id, #vv-res-cep, #vv-res-tel, #vv-numero, #diagv-id) { font-family: var(--font-mono) !important; }
body.ui-v2 :is(#sec-viabilidade-vtal, #sec-diagnostico-vtal) .section-card .btn-sm { height: 40px !important; padding: 0 18px !important; font-weight: 700 !important; display: inline-flex; align-items: center; }
body.ui-v2 :is(#sec-viabilidade-vtal, #sec-diagnostico-vtal) .section-card .btn-sm-ghost { font-weight: 600 !important; }
body.ui-v2 #vv-banner-sim { background: var(--purple-bg) !important; border: 1px solid color-mix(in srgb, var(--purple-tx) 30%, transparent) !important; color: var(--purple-tx) !important; border-radius: var(--radius-md) !important; padding: 10px 14px !important; }
body.ui-v2 #sec-viabilidade-vtal #vv-mud-grupo > div:first-child, body.ui-v2 #sec-viabilidade-vtal [id="vv-mud-sel"] { background: var(--surface-2) !important; border: 1px solid var(--border-soft) !important; border-radius: var(--radius-md) !important; color: var(--text-2) !important; }
body.ui-v2 #sec-viabilidade-vtal label:has(#vv-mud-check) { background: var(--surface-2) !important; border: 1px solid var(--border-soft) !important; border-radius: var(--radius-md) !important; font-weight: 600; color: var(--text) !important; }
body.ui-v2 #vv-res-id-prefixo { background: var(--surface-2) !important; border-color: var(--border) !important; color: var(--muted) !important; font-family: var(--font-mono); }
body.ui-v2 #vv-resultados > *, body.ui-v2 #vv-mud-resultados > * { border-radius: var(--radius-md); }
body.ui-v2 #diagv-achado { background: var(--surface-2) !important; border-color: var(--border-soft) !important; }
body.ui-v2 #diagv-sugestoes { border: 1px solid var(--border) !important; box-shadow: var(--shadow-pop) !important; padding: 5px; }
/* Ordens / Chamados V.tal: cartão com cabeçalho, filtros e tabela encostada */
body.ui-v2 #sec-os-vtal .section-card { padding: 0 !important; overflow: hidden; }
body.ui-v2 #sec-os-vtal .section-card-header { margin: 0 !important; padding: 13px 18px !important; border-bottom: 1px solid var(--divider); }
body.ui-v2 #sec-os-vtal .filter-bar { margin: 0 !important; padding: 12px 18px !important; background: var(--surface-2) !important; border: 0 !important; border-bottom: 1px solid var(--divider) !important; border-radius: 0 !important; flex-wrap: wrap; gap: 10px 12px; }
body.ui-v2 #sec-os-vtal .filter-input { height: 38px; box-sizing: border-box; }
body.ui-v2 #sec-os-vtal #osv-btn-filtrar { height: 38px; }
body.ui-v2 #sec-os-vtal .pagination { padding: 10px 18px; border-top: 1px solid var(--divider); margin: 0; }
body.ui-v2 :is(#osv-lista, #diagv-res-lista, #vv-resultados, #vv-resultado) table { width: 100%; border-collapse: collapse; }
body.ui-v2 :is(#osv-lista, #diagv-res-lista, #vv-resultados, #vv-resultado) th { background: var(--surface-2) !important; font-size: var(--fs-xs) !important; font-weight: 700 !important; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle) !important; padding: 10px 14px !important; text-align: left; border: 0 !important; border-bottom: 1px solid var(--border-soft) !important; }
body.ui-v2 :is(#osv-lista, #diagv-res-lista, #vv-resultados, #vv-resultado) td { padding: 11px 14px !important; font-size: var(--fs-base) !important; border: 0 !important; border-top: 1px solid var(--divider) !important; color: var(--text-2); }
body.ui-v2 :is(#osv-lista, #diagv-res-lista) tbody tr:hover td { background: var(--blue-soft); }
body.ui-v2 :is(#osv-lista, #diagv-res-lista) :is(th, td):first-child { padding-left: 18px !important; }
body.ui-v2 :is(#osv-lista, #diagv-res-lista) td:is(:first-child, :nth-child(2)) { font-family: var(--font-mono); white-space: nowrap; }
body.ui-v2 #diagv-res-lista { margin: 0 -18px -16px; }

/* ═══ v3.136.1 — tema escuro nas telas V.tal: blocos montados pelos módulos com cores fixas ═══ */
body.ui-v2.dark-mode :is(#sec-viabilidade-vtal, #sec-os-vtal, #sec-diagnostico-vtal, #sec-clientes-vtal, [id^="modal-vtal"], [id*="-vtal-"].modal-overlay) :is([style*="background:#fff"], [style*="background: #fff"], [style*="background-color:#fff"], [style*="background:#ffffff"], [style*="background: #ffffff"], [style*="background-color:#ffffff"], [style*="background:#FFF"], [style*="background: #FFF"], [style*="background-color:#FFF"], [style*="background:#FFFFFF"], [style*="background: #FFFFFF"], [style*="background-color:#FFFFFF"], [style*="background:white"], [style*="background: white"], [style*="background-color:white"], [style*="background:#f8fafc"], [style*="background: #f8fafc"], [style*="background-color:#f8fafc"], [style*="background:#f1f5f9"], [style*="background: #f1f5f9"], [style*="background-color:#f1f5f9"], [style*="background:#f9fafb"], [style*="background: #f9fafb"], [style*="background-color:#f9fafb"], [style*="background:#fafafa"], [style*="background: #fafafa"], [style*="background-color:#fafafa"], [style*="background:#f5f5f5"], [style*="background: #f5f5f5"], [style*="background-color:#f5f5f5"], [style*="background:#f8f9fa"], [style*="background: #f8f9fa"], [style*="background-color:#f8f9fa"], [style*="background:#eef2f7"], [style*="background: #eef2f7"], [style*="background-color:#eef2f7"]) { background: var(--surface-2) !important; color: var(--text) !important; border-color: var(--border) !important; }
body.ui-v2.dark-mode :is(#sec-viabilidade-vtal, #sec-os-vtal, #sec-diagnostico-vtal, #sec-clientes-vtal, [id^="modal-vtal"], [id*="-vtal-"].modal-overlay) :is([style*="color:#1e293b"], [style*="color: #1e293b"], [style*="color:#0f172a"], [style*="color: #0f172a"], [style*="color:#334155"], [style*="color: #334155"], [style*="color:#1f2937"], [style*="color: #1f2937"], [style*="color:#111827"], [style*="color: #111827"], [style*="color:#374151"], [style*="color: #374151"], [style*="color:#222"], [style*="color: #222"], [style*="color:#333"], [style*="color: #333"], [style*="color:#1a2340"], [style*="color: #1a2340"]) { color: var(--text) !important; }
body.ui-v2.dark-mode :is(#sec-viabilidade-vtal, #sec-os-vtal, #sec-diagnostico-vtal, #sec-clientes-vtal, [id^="modal-vtal"], [id*="-vtal-"].modal-overlay) :is([style*="background:#e8f5e9"], [style*="background: #e8f5e9"], [style*="background:#ecfdf5"], [style*="background: #ecfdf5"], [style*="background:#f0fdf4"], [style*="background: #f0fdf4"], [style*="background:#dcfce7"], [style*="background: #dcfce7"], [style*="background:#d1fae5"], [style*="background: #d1fae5"]) { background: color-mix(in srgb, #22c55e 14%, var(--white)) !important; color: var(--green-tx) !important; border-color: color-mix(in srgb, #22c55e 35%, transparent) !important; }
body.ui-v2.dark-mode :is(#sec-viabilidade-vtal, #sec-os-vtal, #sec-diagnostico-vtal, #sec-clientes-vtal, [id^="modal-vtal"], [id*="-vtal-"].modal-overlay) :is([style*="background:#ffebee"], [style*="background: #ffebee"], [style*="background:#fef2f2"], [style*="background: #fef2f2"], [style*="background:#fee2e2"], [style*="background: #fee2e2"], [style*="background:#fdeee9"], [style*="background: #fdeee9"]) { background: color-mix(in srgb, #ef4444 14%, var(--white)) !important; color: var(--red-tx) !important; border-color: color-mix(in srgb, #ef4444 35%, transparent) !important; }
body.ui-v2.dark-mode :is(#sec-viabilidade-vtal, #sec-os-vtal, #sec-diagnostico-vtal, #sec-clientes-vtal, [id^="modal-vtal"], [id*="-vtal-"].modal-overlay) :is([style*="background:#fff3e0"], [style*="background: #fff3e0"], [style*="background:#fffbeb"], [style*="background: #fffbeb"], [style*="background:#fef3c7"], [style*="background: #fef3c7"], [style*="background:#fff8e1"], [style*="background: #fff8e1"], [style*="background:#fdf3e2"], [style*="background: #fdf3e2"]) { background: color-mix(in srgb, #f59e0b 14%, var(--white)) !important; color: var(--warn-tx) !important; border-color: color-mix(in srgb, #f59e0b 35%, transparent) !important; }
body.ui-v2.dark-mode :is(#sec-viabilidade-vtal, #sec-os-vtal, #sec-diagnostico-vtal, #sec-clientes-vtal, [id^="modal-vtal"], [id*="-vtal-"].modal-overlay) :is([style*="background:#e3f2fd"], [style*="background: #e3f2fd"], [style*="background:#eff6ff"], [style*="background: #eff6ff"], [style*="background:#dbeafe"], [style*="background: #dbeafe"], [style*="background:#e8f0fb"], [style*="background: #e8f0fb"], [style*="background:#eef4ff"], [style*="background: #eef4ff"]) { background: color-mix(in srgb, #3b82f6 14%, var(--white)) !important; color: var(--text) !important; border-color: color-mix(in srgb, #3b82f6 35%, transparent) !important; }
body.ui-v2.dark-mode :is(#sec-viabilidade-vtal, #sec-os-vtal, #sec-diagnostico-vtal, #sec-clientes-vtal, [id^="modal-vtal"], [id*="-vtal-"].modal-overlay) :is([style*="background:#ede7f6"], [style*="background: #ede7f6"], [style*="background:#f3e8ff"], [style*="background: #f3e8ff"], [style*="background:#f5f3ff"], [style*="background: #f5f3ff"], [style*="background:#f3f0fb"], [style*="background: #f3f0fb"]) { background: color-mix(in srgb, #a855f7 14%, var(--white)) !important; color: var(--purple-tx) !important; }
/* lista de endereços encontrados e sugestões */
body.ui-v2 :is(#vv-resultados, #vv-mud-resultados, #diagv-sugestoes) > * { background: var(--white) !important; color: var(--text) !important; border: 1px solid var(--border) !important; border-radius: var(--radius-md) !important; cursor: pointer; }
body.ui-v2 :is(#vv-resultados, #vv-mud-resultados, #diagv-sugestoes) > *:hover { background: var(--blue-soft) !important; border-color: var(--blue-line) !important; }
body.ui-v2.dark-mode :is(#vv-resultados, #vv-mud-resultados, #diagv-sugestoes) > * { background: var(--surface-2) !important; }
body.ui-v2.dark-mode :is(#vv-resultados, #vv-mud-resultados, #diagv-sugestoes) > *:hover { background: color-mix(in srgb, var(--primary) 16%, var(--surface-2)) !important; }
body.ui-v2.dark-mode #sec-viabilidade-vtal :is(.vv-sug-cod, small, .muted) { color: var(--muted) !important; }
/* produtos (cartões de plano) e área do complemento */
body.ui-v2.dark-mode #vv-res-produtos > *, body.ui-v2.dark-mode #vv-complemento-area :is(select, input, label) { background: var(--surface-2) !important; color: var(--text) !important; border-color: var(--border) !important; }
body.ui-v2.dark-mode #vv-banner-sim { background: color-mix(in srgb, #a855f7 16%, var(--white)) !important; }

/* ═══ v3.136.2 — Ordens / Chamados V.tal no formato do protótipo (desktop) ═══ */
@media (min-width: 769px) {
  body.ui-v2 #sec-os-vtal .v2-osv-card { background: transparent !important; border: 0 !important; padding: 0 !important; overflow: visible !important; box-shadow: none !important; }
  body.ui-v2 #sec-os-vtal .v2-osv-card > .section-card-header { display: none !important; }
  body.ui-v2 #sec-os-vtal .v2-osv-card > .filter-bar { background: var(--white) !important; border: 1px solid var(--border-soft) !important; border-radius: var(--radius) !important; padding: 12px 16px !important; margin: 0 0 14px !important; display: flex !important; align-items: center !important; flex-wrap: wrap; gap: 10px !important; }
  body.ui-v2 #sec-os-vtal .v2-osv-card .filter-group { flex-direction: row !important; align-items: center !important; gap: 6px !important; margin: 0 !important; }
  body.ui-v2 #sec-os-vtal .v2-osv-card .filter-label { text-transform: none !important; letter-spacing: 0 !important; font-size: var(--fs-base) !important; font-weight: 600 !important; color: var(--muted) !important; white-space: nowrap; }
  body.ui-v2 #sec-os-vtal .v2-osv-card .filter-label::after { content: ':'; }
  body.ui-v2 #sec-os-vtal .v2-osv-card .filter-group:first-child { flex: 1 1 220px; max-width: 320px; }
  body.ui-v2 #sec-os-vtal .v2-osv-card .filter-group:first-child .filter-label { display: none; }
  body.ui-v2 #sec-os-vtal .v2-osv-card .filter-group:first-child .filter-input { width: 100% !important; min-width: 0 !important; }
  body.ui-v2 #sec-os-vtal .v2-osv-card .filter-input { height: 36px !important; font-size: var(--fs-base) !important; }
  body.ui-v2 #sec-os-vtal .v2-osv-card select.filter-input { width: auto !important; min-width: 90px; }
  body.ui-v2 #sec-os-vtal .v2-osv-card :is(#osv-btn-filtrar, #osv-btn-atualizar) { height: 36px !important; margin: 0 !important; }
  body.ui-v2 #sec-os-vtal .v2-osv-at { margin-left: auto !important; }
  body.ui-v2 #sec-os-vtal .v2-osv-lista { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); overflow: hidden; }
  body.ui-v2 #osv-lista .tbl-empty { padding: 26px 18px; }
  body.ui-v2 #osv-lista > .v2-osvhead, body.ui-v2 #osv-lista > div[style*="border-radius:10px"] { display: grid !important; grid-template-columns: minmax(180px, 1.3fr) minmax(200px, 1.6fr) 150px minmax(150px, 1fr) 130px; column-gap: 14px; align-items: center; }
  body.ui-v2 #osv-lista > .v2-osvhead { padding: 10px 18px; background: var(--surface-2); border-bottom: 1px solid var(--border-soft); font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); }
  body.ui-v2 #osv-lista > div[style*="border-radius:10px"] { row-gap: 4px; margin: 0 !important; padding: 11px 18px !important; border: 0 !important; border-top: 1px solid var(--divider) !important; border-radius: 0 !important; background: var(--white) !important; }
  body.ui-v2 #osv-lista > .v2-osvhead + div { border-top: 0 !important; }
  body.ui-v2 #osv-lista > div[style*="border-radius:10px"]:hover { background: var(--blue-soft) !important; }
  body.ui-v2.dark-mode #osv-lista > div[style*="border-radius:10px"]:hover { background: color-mix(in srgb, var(--primary) 10%, var(--white)) !important; }
  body.ui-v2 #osv-lista > div[style*="border-radius:10px"] > div:first-child, body.ui-v2 #osv-lista > div[style*="border-radius:10px"] > div:last-child { display: contents !important; }
  body.ui-v2 #osv-lista > div[style*="border-radius:10px"] > div:first-child > div:first-child { order: 1; min-width: 0; }
  body.ui-v2 #osv-lista > div[style*="border-radius:10px"] > div:first-child > div:first-child > div:first-child { font-size: var(--fs-md) !important; color: var(--text); }
  body.ui-v2 #osv-lista > div[style*="border-radius:10px"] > div:first-child > div:first-child > div:last-child { font-size: var(--fs-sm) !important; }
  body.ui-v2 #osv-lista > div[style*="border-radius:10px"] > div:first-child > div:first-child strong { font-family: var(--font-mono) !important; color: var(--primary); font-weight: 600; }
  body.ui-v2 #osv-lista > div[style*="border-radius:10px"] > div:nth-child(2) { order: 2; margin: 0 !important; font-size: var(--fs-base) !important; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
  body.ui-v2 #osv-lista > div[style*="border-radius:10px"] > div:first-child > :last-child:not(div:first-child) { order: 3; justify-self: start; }
  body.ui-v2 #osv-lista > div[style*="border-radius:10px"] > div:last-child > div:first-child { order: 4; font-size: var(--fs-sm) !important; font-family: var(--font-mono); color: var(--muted); }
  body.ui-v2 #osv-lista > div[style*="border-radius:10px"] > div:last-child > button { order: 5; justify-self: end; height: 32px; }
  body.ui-v2 #osv-lista > div[style*="border-radius:10px"] > div[style*="#c62828"] { order: 6; grid-column: 1 / -1; margin: 4px 0 0 !important; }
  body.ui-v2 #sec-os-vtal .pagination { border-top: 1px solid var(--divider); }
}

/* ═══ v3.137.0 — Ficha do cliente V.tal no padrão do protótipo ═══ */
body.ui-v2 #modal-cliente-detalhe .modal-header .v2-fid { flex: 1 1 260px; min-width: 220px; }
body.ui-v2 #modal-cliente-detalhe .modal-header .v2-fdir { min-width: 0; max-width: 62%; }
body.ui-v2 #modal-cliente-detalhe #cli-modal-acoes { flex-wrap: wrap !important; justify-content: flex-end; }
body.ui-v2 #modal-cliente-detalhe #cli-modal-acoes .btn-sm[style*="border-color"] { border-color: var(--border) !important; color: var(--primary) !important; }
body.ui-v2 #modal-cliente-detalhe #cli-modal-acoes [data-action="vtal-retirar"], body.ui-v2 #modal-cliente-detalhe #cli-modal-acoes [data-action="vtal-cancelar-inst"] { border-color: var(--red-line) !important; color: var(--red-tx) !important; }
body.ui-v2 .v2-fb-inst-c { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 14px 18px; flex-wrap: wrap; }
body.ui-v2 .v2-fb-inst-c .v2-fsvc-desc { flex: 1 1 280px; margin: 0; }
body.ui-v2 .v2-fdiag-h { display: flex; align-items: center; gap: 10px; padding-right: 14px; border-bottom: 1px solid var(--divider); }
body.ui-v2 .v2-fdiag-h .v2-fbloco-tit { flex: 1; border-bottom: 0 !important; }
body.ui-v2 .v2-fdiag-h .btn-sm { height: 34px; }
body.ui-v2 .v2-fdiag-l table { width: 100%; border-collapse: collapse; }
body.ui-v2 .v2-fdiag-l th { background: var(--surface-2); font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); padding: 9px 14px; text-align: left; }
body.ui-v2 .v2-fdiag-l td { padding: 10px 14px; font-size: var(--fs-base); border-top: 1px solid var(--divider); color: var(--text-2); }
body.ui-v2 .v2-fdiag-l :is(th, td):first-child { padding-left: 18px; }
body.ui-v2 .v2-fdiag-l td.mono { font-family: var(--font-mono); white-space: nowrap; }
body.ui-v2 .v2-fdiag-l .tbl-empty { padding: 22px 18px; }
body.ui-v2 .v2-dres { display: inline-block; padding: 2px 9px; border-radius: 20px; font-size: var(--fs-xs); font-weight: 700; }
body.ui-v2 .v2-dres-ok { background: var(--green-light); color: var(--green-tx); }
body.ui-v2 .v2-dres-nok { background: color-mix(in srgb, var(--red-tx) 12%, var(--white)); color: var(--red-tx); }
body.ui-v2 .v2-dres-neu { background: var(--surface-2); color: var(--muted); }

/* ═══ v3.137.1 — Dados da ativação V.tal e aba Diagnóstico ═══ */
body.ui-v2 .v2-inst-grade { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)) !important; gap: 14px 22px !important; padding: 14px 18px !important; }
body.ui-v2 .v2-inst-grade .v2-inst-end { grid-column: span 2; }
body.ui-v2 .v2-inst-grade .cli-detail-item { background: transparent !important; padding: 0 !important; border: 0 !important; }
body.ui-v2 .v2-inst-grade .cli-detail-item > span.mono { font-family: var(--font-mono); font-weight: 600; color: var(--text); word-break: break-word; }
body.ui-v2 .v2-lk-maps { font-family: var(--font-mono); font-weight: 600; color: var(--primary); text-decoration: none; white-space: nowrap; }
body.ui-v2 .v2-lk-maps:hover { text-decoration: underline; }
body.ui-v2 .v2-inst-mais { all: unset; cursor: pointer; display: block; padding: 10px 18px; border-top: 1px solid var(--divider); font-size: var(--fs-sm); font-weight: 700; color: var(--primary); }
body.ui-v2 .v2-inst-mais:hover { background: var(--blue-soft); }
body.ui-v2 .v2-fdiag { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); overflow: hidden; }
body.ui-v2 .v2-fdiag-h { display: flex !important; align-items: center; gap: 12px; padding: 13px 18px !important; border-bottom: 1px solid var(--divider); }
body.ui-v2 .v2-fdiag-t { flex: 1; min-width: 0; font-size: var(--fs-lg); font-weight: 700; color: var(--text); }
body.ui-v2 .v2-fdiag-t span { display: block; font-size: var(--fs-sm); font-weight: 500; color: var(--muted); margin-top: 2px; }
body.ui-v2 .v2-fdiag-h .btn-sm { height: 36px !important; padding: 0 16px !important; flex-shrink: 0; }
body.ui-v2 .v2-fpane[data-aba="diagnostico"] { display: block; }
body.ui-v2 .v2-fpane[data-aba="diagnostico"][style*="none"] { display: none !important; }
@media (max-width: 768px) { body.ui-v2 .v2-inst-grade .v2-inst-end { grid-column: auto; } }

/* ═══ v3.137.2 — ficha V.tal: dados na largura toda, ID da Casa, ordens V.tal, resposta do diagnóstico ═══ */
body.ui-v2 #modal-cliente-detalhe .v2-fpane > .v2-fb-inst.v2-fb-inst.v2-fb-inst { grid-column: 1 / -1 !important; }
body.ui-v2 .v2-inst-grade .v2-inst-nota { grid-column: 1 / -1; font-size: var(--fs-sm); color: var(--muted); padding-top: 4px; border-top: 1px solid var(--divider); }
body.ui-v2 .v2-fid-sub .v2-idcasa { font-family: var(--font-mono); color: var(--primary); font-weight: 600; }
body.ui-v2 #modal-cliente-detalhe .v2-fpane.v2-ord-vtal > :not(.v2-vtord) { display: none !important; }
body.ui-v2 .v2-vtord { background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); overflow: hidden; }
body.ui-v2 .v2-vtord-h { display: flex; align-items: center; gap: 12px; padding: 13px 18px; border-bottom: 1px solid var(--divider); }
body.ui-v2 .v2-vtord-t { flex: 1; min-width: 0; font-size: var(--fs-lg); font-weight: 700; color: var(--text); }
body.ui-v2 .v2-vtord-t span { display: block; font-size: var(--fs-sm); font-weight: 500; color: var(--muted); margin-top: 2px; }
body.ui-v2 .v2-vtord-h .btn-sm { height: 36px !important; padding: 0 16px !important; flex-shrink: 0; }
body.ui-v2 .v2-vtord-l table { width: 100%; border-collapse: collapse; }
body.ui-v2 .v2-vtord-l th { background: var(--surface-2); font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); padding: 9px 14px; text-align: left; }
body.ui-v2 .v2-vtord-l td { padding: 10px 14px; font-size: var(--fs-base); border-top: 1px solid var(--divider); color: var(--text-2); vertical-align: middle; }
body.ui-v2 .v2-vtord-l :is(th, td):first-child { padding-left: 18px; }
body.ui-v2 .v2-vtord-l td.mono { font-family: var(--font-mono); white-space: nowrap; }
body.ui-v2 .v2-vtord-l td.r { text-align: right; }
body.ui-v2 .v2-vtord-l .btn-sm { height: 30px !important; }
body.ui-v2 .v2-vtord-l .tbl-empty { padding: 22px 18px; }
body.ui-v2 .v2-vtord-erro { font-size: var(--fs-xs); color: var(--red-tx); margin-top: 3px; }
body.ui-v2 .v2-dres-warn { background: var(--warn-bg); color: var(--warn-tx); }
body.ui-v2 .v2-dg-row { cursor: pointer; }
body.ui-v2 .v2-dg-row:hover td, body.ui-v2 .v2-dg-row.on td { background: var(--blue-soft); }
body.ui-v2.dark-mode .v2-dg-row:hover td, body.ui-v2.dark-mode .v2-dg-row.on td { background: color-mix(in srgb, var(--primary) 12%, var(--white)); }
body.ui-v2 .v2-dg-ver { text-align: right; white-space: nowrap; font-size: var(--fs-sm); font-weight: 700; color: var(--primary); }
body.ui-v2 .v2-dg-det td { padding: 0 18px 14px !important; border-top: 0 !important; }
body.ui-v2 .v2-dg-box { padding-top: 6px; }

/* ═══ v3.137.3 — ordens V.tal: linha inteira abre o detalhe, sem botão ═══ */
@media (min-width: 769px) {
  body.ui-v2 #osv-lista > .v2-osvhead, body.ui-v2 #osv-lista > div[style*="border-radius:10px"] { grid-template-columns: minmax(180px, 1.3fr) minmax(200px, 1.6fr) 150px minmax(150px, 1fr) !important; }
  body.ui-v2 #osv-lista > div[style*="border-radius:10px"] > div:last-child > button[data-osv-detalhe] { display: none !important; }
  body.ui-v2 #osv-lista > div[style*="border-radius:10px"]:has([data-osv-detalhe]) { cursor: pointer; }
}
body.ui-v2 .v2-vo-row { cursor: pointer; }
body.ui-v2 .v2-vo-row:hover td { background: var(--blue-soft); }
body.ui-v2.dark-mode .v2-vo-row:hover td { background: color-mix(in srgb, var(--primary) 12%, var(--white)); }
body.ui-v2 .modal-overlay.open:not(#modal-cliente-detalhe)[id*="vtal"], body.ui-v2.v2-os-sobre-ficha .modal-overlay.open:not(#modal-cliente-detalhe) { z-index: 3000 !important; }

/* ═══ v3.137.4 — painel de notificações sempre por cima ═══ */
body.ui-v2 #notif-panel { z-index: 4000 !important; }
body.ui-v2 #notif-panel:not(.open) { display: none !important; }

/* ═══ v3.137.5 — resposta do diagnóstico V.tal em popup ═══ */
body.ui-v2 .v2-dgpop { z-index: 3500 !important; }
body.ui-v2 .v2-dgpop .modal { width: min(820px, 94vw) !important; max-height: 88vh; display: flex; flex-direction: column; padding: 0 !important; }
body.ui-v2 .v2-dgpop .modal-header { flex-shrink: 0; }
body.ui-v2 .v2-dgpop-sub { font-size: var(--fs-sm); font-weight: 500; color: var(--muted); margin-top: 3px; font-family: var(--font-mono); }
body.ui-v2 .v2-dgpop-corpo { overflow-y: auto; padding: 16px 20px 20px; min-height: 0; }

/* ═══ v3.138.0 — Histórico do cliente (linha do tempo do servidor) ═══ */
body.ui-v2 #modal-cliente-detalhe .v2-fpane .v2-hold { display: none !important; }
body.ui-v2 .v2-hev { position: relative; display: flex; gap: 12px; padding: 11px 16px 11px 34px; background: var(--white); border: 1px solid var(--border-soft); border-radius: 0; margin-top: -1px; }
body.ui-v2 .v2-hbusca + .v2-hold + .v2-hev, body.ui-v2 .v2-hev:first-of-type { border-top-left-radius: var(--radius); border-top-right-radius: var(--radius); }
body.ui-v2 .v2-hev:last-child { border-bottom-left-radius: var(--radius); border-bottom-right-radius: var(--radius); }
body.ui-v2 .v2-hev::before { content: ''; position: absolute; left: 19px; top: 0; bottom: 0; width: 2px; background: var(--divider); }
body.ui-v2 .v2-hev-dot { position: absolute; left: 14px; top: 15px; width: 12px; height: 12px; border-radius: 50%; background: var(--subtle); box-shadow: 0 0 0 3px var(--white); z-index: 1; }
body.ui-v2 .v2-hev-c { flex: 1; min-width: 0; }
body.ui-v2 .v2-hev-l1 { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; font-size: var(--fs-base); color: var(--text); }
body.ui-v2 .v2-hev-l1 b { font-weight: 700; }
body.ui-v2 .v2-hev-l1 .mono { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--primary); }
body.ui-v2 .v2-hev-l1 .v2-hev-dt { margin-left: auto; color: var(--muted); }
body.ui-v2 .v2-hev-l2 { font-size: var(--fs-sm); color: var(--muted); margin-top: 3px; }
body.ui-v2 .v2-hev-reserva .v2-hev-dot { background: #E8A33D; }
body.ui-v2 .v2-hev-ativacao .v2-hev-dot, body.ui-v2 .v2-hev-vtal .v2-hev-dot { background: var(--green-tx); }
body.ui-v2 .v2-hev-cancelamento .v2-hev-dot, body.ui-v2 .v2-hev-erro .v2-hev-dot { background: var(--red-tx); }
body.ui-v2 :is(.v2-hev-os, .v2-hev-chamado) .v2-hev-dot { background: var(--primary); }
body.ui-v2 :is(.v2-hev-troca, .v2-hev-mudanca) .v2-hev-dot { background: var(--purple-tx); }
body.ui-v2 .v2-hev-vazio { padding: 22px; text-align: center; font-size: var(--fs-base); color: var(--subtle); background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); }

/* ═══ v3.139.0 — Revisão mobile, tamanhos de tela e tema escuro ═══ */
/* Login: em telas baixas o cartão era cortado em cima (centralizado sem rolagem).
   Agora rola e centraliza com margem automática; vale com e sem o visual novo. */
#page-login { overflow-y: auto; -webkit-overflow-scrolling: touch; align-items: flex-start !important; }
#page-login .login-wrap { margin: auto; padding-top: max(24px, env(safe-area-inset-top)); padding-bottom: max(32px, env(safe-area-inset-bottom)); box-sizing: border-box; }
@media (max-width: 480px), (max-height: 700px) {
  #page-login .login-wrap { padding-left: 16px; padding-right: 16px; gap: 12px; }
  #page-login .login-logo img:not(.login-logo-provedor) { height: 56px; }
  #page-login .login-logo .login-logo-provedor { height: 40px; }
  #page-login .login-card { padding: 22px 20px 66px !important; border-radius: 14px; } /* [v3.141.4] espaço do rodapé © (absoluto no fim do cartão) */
  #page-login .login-title { margin-bottom: 16px; font-size: 18px; }
}
body.ui-v2.dark-mode #page-login .login-card::before { background: var(--accent); }

/* Menu mobile (☰) no tom do tema — antes usava azul forte fixo no escuro */
body.ui-v2 .mobile-nav-panel { background: var(--white) !important; border-right: 1px solid var(--border-soft); }
body.ui-v2 .mobile-nav-header { border-bottom: 1px solid var(--divider); }
body.ui-v2 .mob-nav-group-header { background: var(--surface-2) !important; color: var(--text) !important; font-weight: 700; }
body.ui-v2 .mob-nav-group-header:hover { background: var(--blue-soft) !important; }
body.ui-v2 .mob-nav-group.open .mob-nav-group-header { background: var(--primary) !important; color: var(--on-primary) !important; }
body.ui-v2 .mob-nav-group-body { background: var(--white) !important; border-color: var(--border-soft) !important; }
body.ui-v2 .mob-nav-item { min-height: 44px; display: flex; align-items: center; box-sizing: border-box; }
body.ui-v2 .mob-nav-item.active { background: var(--blue-light) !important; color: var(--primary) !important; }
body.ui-v2.dark-mode .mob-nav-item.active { background: color-mix(in srgb, var(--primary) 18%, var(--white)) !important; }
body.ui-v2 .mobile-nav-overlay { background: rgba(10,16,32,.5); }
body.ui-v2.dark-mode .topbar-hamburger span { background: var(--text) !important; }

/* Celular: nada passa da largura da tela */
@media (max-width: 768px) {
  body.ui-v2 #page-app { overflow-x: hidden; }
  body.ui-v2 .content-inner { padding: 14px 12px 24px !important; }
  body.ui-v2 :is(.tbl-wrap, .v2-osv-lista, .v2-vtord-l, #osv-lista, #diagv-res-lista) { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  body.ui-v2 .section-card { padding: 14px !important; }
  body.ui-v2 .section-card > .section-card-header { margin: -14px -14px 12px !important; padding: 12px 14px !important; flex-wrap: wrap; gap: 8px; }
  body.ui-v2 .filter-bar { flex-wrap: wrap !important; gap: 8px !important; }
  body.ui-v2 .filter-bar .filter-group { flex: 0 0 auto; min-width: 0; } /* [v3.141.4] a barra é coluna no celular: basis de 140px virava ALTURA */
  body.ui-v2 .filter-bar .filter-input { width: 100% !important; min-width: 0 !important; }
  body.ui-v2 :is(.v2-tabbar, .v2-ostool) { overflow-x: auto; flex-wrap: nowrap; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  body.ui-v2 :is(.v2-tabbar, .v2-ostool) > * { flex-shrink: 0; }
  body.ui-v2 #v2-ftabs, body.ui-v2 .v2-ftabs { overflow-x: auto; flex-wrap: nowrap !important; scrollbar-width: none; }
  body.ui-v2 .v2-ftab { flex-shrink: 0; }
  body.ui-v2 .v2-dash-kpi { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  body.ui-v2 .v2-dash-row { grid-template-columns: 1fr !important; }
  body.ui-v2 .dash-parc-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  body.ui-v2 #modal-cliente-detalhe .v2-fpane.v2-fblocos { grid-template-columns: 1fr !important; }
  body.ui-v2 #modal-cliente-detalhe .v2-fbloco-grade { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  body.ui-v2 .v2-fctr .v2-fctr-l2, body.ui-v2 .v2-fctr .v2-fctr-ev { grid-template-columns: 1fr !important; }
  body.ui-v2 .modal { width: 100% !important; max-width: 100vw !important; max-height: calc(var(--vh100, 100vh) - 16px); border-radius: 14px 14px 0 0 !important; margin: auto 0 0 !important; }
  body.ui-v2 .modal-overlay { align-items: flex-end !important; padding: 8px 0 0 !important; }
  body.ui-v2 .modal-footer { flex-wrap: wrap; }
  body.ui-v2 .modal-footer .btn-sm { flex: 1 1 auto; }
  body.ui-v2 .v2-dgpop .modal { width: 100% !important; }
  body.ui-v2 .notif-panel { left: 8px !important; right: 8px !important; width: auto !important; max-width: none !important; }
  body.ui-v2 :is(.btn-sm, .btn) { min-height: 38px; }
  body.ui-v2 .v2-hev-l1 .v2-hev-dt { margin-left: 0; width: 100%; }
  body.ui-v2 #osv-lista > .v2-osvhead { display: none !important; }
}
/* Telas médias (notebook 1366 e menores): cartões de 5 colunas viram 3 */
@media (min-width: 769px) and (max-width: 1100px) {
  body.ui-v2 .v2-dash-kpi { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
  body.ui-v2 #modal-cliente-detalhe .v2-fsvc { grid-template-columns: 1fr !important; }
  body.ui-v2 #osv-lista > .v2-osvhead, body.ui-v2 #osv-lista > div[style*="border-radius:10px"] { grid-template-columns: minmax(150px, 1.2fr) minmax(160px, 1.4fr) 130px 120px 110px !important; }
}
/* Tema escuro: sobras de cores fixas claras em estilos inline */





body.ui-v2.dark-mode :is(input, select, textarea):not([type="checkbox"]):not([type="radio"]):not([type="color"]) { background-color: var(--surface-2); color: var(--text); border-color: var(--border); }
body.ui-v2.dark-mode ::placeholder { color: var(--subtle); opacity: 1; }
body.ui-v2.dark-mode option { background: var(--white); color: var(--text); }

/* ═══ v3.139.1 — o painel do menu ☰ aparecia na lateral no computador ═══
   A v3.139.0 deixou o painel mais largo que a posição "fechado" (left negativo
   fixo) e a sobra ficava visível. Fechado agora sai inteiro da tela, e no
   computador o painel nem é exibido. */
body.ui-v2 .mobile-nav-panel:not(.open) { visibility: hidden; transform: translateX(-100%); }
body.ui-v2 .mobile-nav-panel.open { visibility: visible; transform: none; }
@media (min-width: 769px) { body.ui-v2 .mobile-nav-panel, body.ui-v2 .mobile-nav-overlay { display: none !important; } }

/* ═══ v3.139.3 — Atlas: abas de Documentação de CTOs e escolhas da Ativação no padrão das OS ═══ */
body.ui-v2 :is(div.v2-hx-seg, div.v2-hx-seg, div.v2-hx-seg) { display: inline-flex !important; gap: 3px !important; flex-wrap: wrap !important; padding: 3px !important; margin: 0 0 12px !important; background: var(--bg); border: 1px solid var(--border-soft); border-radius: var(--radius-md); width: auto !important; max-width: 100%; }
body.ui-v2 .v2-tabbar > :is(div.v2-hx-seg, div.v2-hx-seg, div.v2-hx-seg) { margin: 0 !important; }
body.ui-v2 :is(div.v2-hx-seg, div.v2-hx-seg, div.v2-hx-seg) > .btn-sm { flex: 0 0 auto !important; height: 32px !important; padding: 0 14px !important; border: 0 !important; border-radius: var(--radius-sm) !important; background: transparent !important; color: var(--muted) !important; font-size: 12.5px !important; font-weight: 600 !important; box-shadow: none !important; }
body.ui-v2 :is(div.v2-hx-seg, div.v2-hx-seg, div.v2-hx-seg) > .btn-sm:hover { color: var(--text) !important; }
body.ui-v2 :is(div.v2-hx-seg, div.v2-hx-seg, div.v2-hx-seg) > .btn-sm.btn-sm-primary { background: var(--white) !important; color: var(--primary) !important; font-weight: 700 !important; box-shadow: 0 1px 3px rgba(0,48,135,.12) !important; }
body.ui-v2.dark-mode :is(div.v2-hx-seg, div.v2-hx-seg, div.v2-hx-seg) > .btn-sm.btn-sm-primary { background: var(--surface-2) !important; }
body.ui-v2 :is(div.v2-hx-seg, div.v2-hx-seg, div.v2-hx-seg) > .btn-sm span { background: #E8A33D !important; color: #1f1402 !important; margin-left: 6px; }
@media (max-width: 768px) { body.ui-v2 :is(div.v2-hx-seg, div.v2-hx-seg, div.v2-hx-seg) { flex-wrap: nowrap !important; overflow-x: auto; scrollbar-width: none; } }

/* ═══ v3.140.0 — Histórico: integrações (master) e ajustes ═══ */
body.ui-v2 .v2-hev-api .v2-hev-dot { background: var(--subtle); }
body.ui-v2 .v2-hev-api-erro .v2-hev-dot { background: var(--red-tx); }
body.ui-v2 :is(.v2-hev-api, .v2-hev-api-erro, .v2-hev-ajuste) .v2-hev-l1 b { font-weight: 600; color: var(--text-2); }
body.ui-v2 .v2-hev-ajuste .v2-hev-dot { background: var(--purple-tx); }

/* ═══ v3.141.0 — Telas e janelas restantes no padrão ═══ */
/* Telas: Log de Consultas, Pendências, Buscar clientes, Usuários do parceiro, Atlas Sinal e Bater Caixa */
body.ui-v2 :is(#sec-consultas, #sec-pendencias-integracao, #sec-buscar-cliente, #sec-usuarios-parceiro, #sec-atlas-sinal, #sec-atlas-bater-caixa) .section-card { border: 1px solid var(--border-soft) !important; border-radius: var(--radius) !important; box-shadow: none !important; padding: 16px 18px !important; margin-bottom: 14px; }
body.ui-v2 :is(#sec-consultas, #sec-pendencias-integracao, #sec-buscar-cliente, #sec-usuarios-parceiro, #sec-atlas-sinal, #sec-atlas-bater-caixa) .section-card:has(> .tbl-wrap) { padding: 0 !important; overflow: hidden; }
body.ui-v2 :is(#sec-consultas, #sec-pendencias-integracao, #sec-buscar-cliente, #sec-usuarios-parceiro, #sec-atlas-sinal, #sec-atlas-bater-caixa) .section-card > .section-card-header { margin: -16px -18px 14px !important; padding: 13px 18px !important; border-bottom: 1px solid var(--divider); display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
body.ui-v2 :is(#sec-consultas, #sec-pendencias-integracao, #sec-buscar-cliente, #sec-usuarios-parceiro, #sec-atlas-sinal, #sec-atlas-bater-caixa) .section-card:has(> .tbl-wrap) > .section-card-header { margin: 0 !important; }
body.ui-v2 :is(#sec-consultas, #sec-pendencias-integracao, #sec-buscar-cliente, #sec-usuarios-parceiro, #sec-atlas-sinal, #sec-atlas-bater-caixa) .section-card-title { font-size: var(--fs-lg) !important; font-weight: 700 !important; color: var(--text) !important; }
body.ui-v2 :is(#sec-consultas, #sec-pendencias-integracao, #sec-buscar-cliente, #sec-usuarios-parceiro, #sec-atlas-sinal, #sec-atlas-bater-caixa) .section-card > .filter-bar { margin: 0 !important; padding: 12px 18px !important; background: var(--surface-2) !important; border: 0 !important; border-bottom: 1px solid var(--divider) !important; border-radius: 0 !important; }
body.ui-v2 :is(#sec-consultas, #sec-pendencias-integracao, #sec-buscar-cliente, #sec-usuarios-parceiro, #sec-atlas-sinal, #sec-atlas-bater-caixa) .section-card:not(:has(> .tbl-wrap)) > .filter-bar { margin: 0 -18px 14px !important; }
body.ui-v2 #sec-buscar-cliente > .content-inner > .filter-bar { background: var(--white) !important; border: 1px solid var(--border-soft) !important; border-radius: var(--radius) !important; padding: 14px 16px !important; }
body.ui-v2 :is(#sec-consultas, #sec-pendencias-integracao, #sec-buscar-cliente, #sec-usuarios-parceiro, #sec-atlas-sinal, #sec-atlas-bater-caixa) :is(.filter-label, .input-label) { font-size: var(--fs-xs) !important; font-weight: 700 !important; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle) !important; }
body.ui-v2 :is(#sec-consultas, #sec-pendencias-integracao, #sec-buscar-cliente, #sec-usuarios-parceiro, #sec-atlas-sinal, #sec-atlas-bater-caixa) :is(.filter-input, .input-field) { height: 40px; box-sizing: border-box; font-size: var(--fs-md) !important; }
body.ui-v2 :is(#sec-consultas, #sec-pendencias-integracao, #sec-buscar-cliente, #sec-usuarios-parceiro, #sec-atlas-sinal, #sec-atlas-bater-caixa) .section-card .btn-sm, body.ui-v2 #sec-buscar-cliente .filter-bar .btn-sm { height: 40px; padding: 0 18px !important; font-weight: 700 !important; }
body.ui-v2 :is(#sec-consultas, #sec-pendencias-integracao, #sec-buscar-cliente, #sec-usuarios-parceiro, #sec-atlas-sinal, #sec-atlas-bater-caixa) .section-card-header .btn-sm { height: 34px !important; padding: 0 14px !important; }
body.ui-v2 :is(#sec-consultas, #sec-pendencias-integracao, #sec-buscar-cliente, #sec-usuarios-parceiro, #sec-atlas-sinal, #sec-atlas-bater-caixa) .section-card .btn-sm-ghost { font-weight: 600 !important; }
body.ui-v2 :is(#sec-consultas, #sec-pendencias-integracao, #sec-buscar-cliente, #sec-usuarios-parceiro, #sec-atlas-sinal, #sec-atlas-bater-caixa) .tbl-wrap { margin: 0 !important; border: 0 !important; border-radius: 0 !important; }
body.ui-v2 :is(#sec-consultas, #sec-pendencias-integracao, #sec-buscar-cliente, #sec-usuarios-parceiro, #sec-atlas-sinal, #sec-atlas-bater-caixa) .tbl-wrap th { background: var(--surface-2) !important; font-size: var(--fs-xs) !important; font-weight: 700 !important; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle) !important; padding: 10px 14px !important; }
body.ui-v2 :is(#sec-consultas, #sec-pendencias-integracao, #sec-buscar-cliente, #sec-usuarios-parceiro, #sec-atlas-sinal, #sec-atlas-bater-caixa) .tbl-wrap td { padding: 11px 14px !important; font-size: var(--fs-base) !important; border-top: 1px solid var(--divider); }
body.ui-v2 :is(#sec-consultas, #sec-pendencias-integracao, #sec-buscar-cliente, #sec-usuarios-parceiro, #sec-atlas-sinal, #sec-atlas-bater-caixa) .tbl-wrap :is(th, td):first-child { padding-left: 18px !important; }
body.ui-v2 :is(#sec-consultas, #sec-pendencias-integracao, #sec-buscar-cliente, #sec-usuarios-parceiro, #sec-atlas-sinal, #sec-atlas-bater-caixa) .tbl-wrap tbody tr:hover td { background: var(--blue-soft); }
body.ui-v2.dark-mode :is(#sec-consultas, #sec-pendencias-integracao, #sec-buscar-cliente, #sec-usuarios-parceiro, #sec-atlas-sinal, #sec-atlas-bater-caixa) .tbl-wrap tbody tr:hover td { background: color-mix(in srgb, var(--primary) 10%, var(--white)); }
body.ui-v2 :is(#sec-consultas, #sec-pendencias-integracao, #sec-buscar-cliente, #sec-usuarios-parceiro, #sec-atlas-sinal, #sec-atlas-bater-caixa) .pagination { padding: 10px 18px; border-top: 1px solid var(--divider); margin: 0; }
body.ui-v2 :is(#sec-consultas, #sec-pendencias-integracao, #sec-buscar-cliente, #sec-usuarios-parceiro, #sec-atlas-sinal, #sec-atlas-bater-caixa) .tbl-empty { padding: 26px 18px; }
body.ui-v2 :is(#sec-consultas, #sec-pendencias-integracao) td:first-child, body.ui-v2 #asin-serial, body.ui-v2 #sec-atlas-bater-caixa input[id*="pon"], body.ui-v2 #sec-atlas-sinal input { font-family: var(--font-mono); }
body.ui-v2 :is(#sec-atlas-sinal, #sec-atlas-bater-caixa) .section-card { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px 12px; }
body.ui-v2 :is(#sec-atlas-sinal, #sec-atlas-bater-caixa) .section-card > :not(.section-card-header) { margin: 0 !important; }
body.ui-v2 :is(#sec-atlas-sinal, #sec-atlas-bater-caixa) .section-card > .section-card-header { flex: 1 0 100%; }

/* Janelas restantes */
body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) .modal { padding: 0 !important; border-radius: 14px !important; border: 1px solid var(--border-soft); box-shadow: 0 24px 60px rgba(16,26,48,.28) !important; overflow: hidden; display: flex; flex-direction: column; max-height: 90vh; }
body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) .modal > :not(.modal-header):not(.modal-footer):not(.modal-close) { padding-left: 20px; padding-right: 20px; }
body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) .modal > .modal-title { padding: 16px 52px 14px 20px !important; margin: 0 !important; border-bottom: 1px solid var(--divider); font-size: 15.5px !important; font-weight: 700 !important; color: var(--text) !important; flex-shrink: 0; }
body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) .modal > .modal-title + * { padding-top: 16px; }
body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) .modal-title { color: var(--text) !important; font-size: 15.5px !important; }
body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) .modal-close { top: 13px !important; right: 14px !important; }
body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) .modal > :last-child:not(.modal-footer) { padding-bottom: 18px; }
body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) .modal { overflow-y: auto; }
body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) :is(.field-label, .input-label, label:not(.field-checkbox):not(:has(input))) { font-size: var(--fs-xs) !important; font-weight: 700 !important; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle) !important; }
body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) :is(.field-input, .input-field, .filter-input, select, input[type="text"], input[type="password"], input[type="number"], input[type="search"], textarea) { border-radius: var(--radius-md) !important; border: 1.5px solid var(--border) !important; font-size: var(--fs-md) !important; }
body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) :is(.field-input, .input-field, .filter-input, select, input[type="text"], input[type="password"], input[type="number"], input[type="search"]) { min-height: 40px; box-sizing: border-box; }
body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) :is(input, select, textarea):focus { border-color: var(--primary) !important; box-shadow: var(--focus-ring) !important; outline: none; }
body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) .btn-sm { height: 38px; padding: 0 16px !important; border-radius: var(--radius-md) !important; font-weight: 700 !important; }
body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) .btn-sm-ghost { font-weight: 600 !important; }
body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) .modal-footer { background: var(--surface-2); }
body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) table { width: 100%; border-collapse: collapse; }
body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) th { background: var(--surface-2) !important; font-size: var(--fs-xs) !important; font-weight: 700 !important; letter-spacing: .6px; text-transform: uppercase; color: var(--subtle) !important; padding: 8px 12px !important; text-align: left; }
body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) td { padding: 9px 12px !important; font-size: var(--fs-base); border-top: 1px solid var(--divider); }
body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) :is(.modal-alert, [class*="alert"]):not(:empty) { border-radius: var(--radius-md) !important; }
body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) code, body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) pre { font-family: var(--font-mono); }
/* terminal da OLT: fundo escuro de terminal, fonte mono, sempre legível */
body.ui-v2 #modal-olt-gerenciar :is(pre, textarea, #olt-terminal-output) { background: #0f1a33 !important; color: #cfe0ff !important; font-family: var(--font-mono) !important; font-size: 12.5px !important; border-radius: var(--radius-md) !important; border: 0 !important; }
/* consulta de sinal: blocos internos no cinza do tema */
body.ui-v2 #modal-consulta-sinal [style*="background:var(--bg2)"], body.ui-v2 #modal-consulta-sinal [style*="background:#f"] { background: var(--surface-2) !important; border-color: var(--border-soft) !important; border-radius: var(--radius-md) !important; }
/* seleção de ONU / opções */
body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) :is(.onu-select-card, [data-onu], [data-aatv-onu]) { border-radius: 10px !important; }
body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) input[type="checkbox"], body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) input[type="radio"] { accent-color: var(--primary); width: 16px; height: 16px; }
@media (max-width: 768px) { body.ui-v2 :is(#modal-consulta-sinal, #modal-troca-onu, #modal-ativar-cliente, #modal-ativar-manual, #modal-onu-ativar, #modal-olt-gerenciar, #modal-kmz-importar, #modal-kmz-parceiro, #modal-validar-contratos, #modal-endereco-anterior, #modal-os-arvore, #modal-os-cat, #modal-sinal-config, #modal-olts-cidades-bairros, #modal-minha-senha, #modal-alterar-senha, #modal-trocar-senha, #modal-cto, #modal-acli, #modal-municipio, #modal-bairro, #modal-olt, #modal-empresa, #modal-usuario, #modal-usuario-parceiro, #modal-os-transferir) .modal { max-height: calc(var(--vh100, 100vh) - 16px); } }

/* [v3.141.3] regras geradas do escuro → css/tema-v2-escuro.css (carregado só no escuro) */

/* ═══ v3.141.4 — Revisão mobile ═══ */
@media (max-width: 768px) {
  /* filtros: busca na linha toda, selects 2 por linha, botões na linha de baixo */
  body.ui-v2 .filter-bar { flex-direction: row !important; flex-wrap: wrap !important; align-items: flex-end !important; padding: 12px !important; gap: 8px !important; }
  body.ui-v2 .filter-bar > .filter-group { flex: 1 1 calc(50% - 4px) !important; width: auto !important; }
  body.ui-v2 .filter-bar > .filter-group:has(input[type="text"], input[type="search"], input:not([type])) { flex-basis: 100% !important; }
  body.ui-v2 .filter-bar > .btn-sm, body.ui-v2 .filter-bar > .filter-group:has(> .btn-sm:only-child) { flex: 1 1 auto !important; }
  body.ui-v2 .filter-bar :is(.filter-input, select) { height: 40px !important; }
  body.ui-v2 .filter-bar .filter-label { margin: 0 !important; }
  /* cabeçalho de colunas das listas de clientes: no celular não há colunas */
  body.ui-v2 .v2-clihead { display: none !important; }
  body.ui-v2 .cli-card-header { flex-wrap: wrap; row-gap: 6px; }
  body.ui-v2 .cli-card-header > * { min-width: 0; }
  body.ui-v2 .cli-card-data, body.ui-v2 .cli-card-actions { width: auto !important; text-align: left !important; }
  body.ui-v2 .cli-card-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
  /* menu ☰: rola em pé e deitado, sem levar a página junto; fechado fica fora da tela */
  body.ui-v2 .mobile-nav-panel { left: calc(-1 * min(320px, 86vw) - 10px); height: 100vh; height: 100dvh; max-height: 100dvh; overflow-y: auto !important; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; touch-action: pan-y; }
  body.ui-v2 .mobile-nav-panel.open { left: 0; }
  body.ui-v2 #mobile-nav-items { flex: 1 0 auto; overflow: visible; }
  body.ui-v2 .mob-nav-item, body.ui-v2 .mob-nav-group-header { padding-top: 10px !important; padding-bottom: 10px !important; }
  /* ficha do cliente: menus (Serviços, Alterações) não saem da tela */
  body.ui-v2 :is(.servicos-menu, .alteracoes-menu, .nav-dropdown-menu-ficha) { left: auto !important; right: 0 !important; max-width: calc(100vw - 24px) !important; min-width: 0 !important; }
  body.ui-v2 #cli-modal-acoes { gap: 8px !important; padding: 12px 14px 0 !important; }
  body.ui-v2 #cli-modal-acoes > * { flex: 1 1 auto; }
  body.ui-v2 #cli-modal-acoes .btn-sm { width: 100%; justify-content: center; }
  body.ui-v2 #modal-cliente-detalhe .modal-header { padding-right: 48px !important; }
  /* viabilidade: mapa com altura útil */
  body.ui-v2 :is(#sec-viabilidade, #sec-atlas-viabilidade) .map-area { min-height: 55vh; }
}
@media (max-height: 500px) and (orientation: landscape) {
  body.ui-v2 .mob-nav-item, body.ui-v2 .mob-nav-group-header { min-height: 40px !important; padding-top: 8px !important; padding-bottom: 8px !important; }
  body.ui-v2 .mobile-nav-header { padding-top: 10px !important; padding-bottom: 10px !important; }
  #page-login .login-wrap { flex-direction: row; flex-wrap: wrap; justify-content: center; align-items: center; gap: 24px; max-width: 760px; }
  #page-login .login-logo { flex: 0 0 auto; }
}

/* ═══ v3.141.5 — Viabilidade: aba "Área de cobertura" funcionando no celular ═══
   As regras que trocam o formulário pelo painel só existiam para telas ≥ 769 px;
   no celular a aba aparecia mas o clique não mudava nada. */
@media (max-width: 768px) {
  body.ui-v2 .v2-viab-abas { display: inline-flex; gap: 3px; padding: 3px; background: var(--bg); border: 1px solid var(--border-soft); border-radius: var(--radius-md); }
  body.ui-v2 .v2-viab-abas .v2-aba { height: 34px; padding: 0 14px; border: 0; border-radius: var(--radius-sm); background: transparent; color: var(--muted); font-size: 12.5px; font-weight: 600; font-family: var(--font); }
  body.ui-v2 .v2-viab-abas .v2-aba.ativa { background: var(--white); color: var(--primary); font-weight: 700; box-shadow: 0 1px 3px rgba(0,48,135,.12); }
  body.ui-v2 .v2-tabbar-viab { margin: 12px 12px 0 !important; }
  body.ui-v2 #viab-btn-cobertura { display: none !important; }
  body.ui-v2 #sec-atlas-viabilidade:not(.v2-cob) .av-cobertura { display: none !important; }
  /* (mesmas regras do desktop) */
  body.ui-v2 #sec-viabilidade.v2-cob .sidebar-form, body.ui-v2 #sec-viabilidade.v2-cob .sidebar-results { display: none !important; }
  body.ui-v2 #sec-viabilidade.v2-cob .v2-cob-painel { display: flex; flex-direction: column; gap: 10px; margin: 10px 12px 0; padding: 14px 16px; background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); }
  body.ui-v2 .v2-cob-tit { font-size: var(--fs-md); font-weight: 700; color: var(--text); }
  body.ui-v2 .v2-cob-item { display: inline-flex; align-items: center; gap: 9px; font-size: var(--fs-md); font-weight: 600; color: var(--text); cursor: pointer; align-self: flex-start; padding: 8px 12px; border: 1px solid var(--border); border-radius: var(--radius-md); }
  body.ui-v2 .v2-cob-item input { accent-color: var(--primary); width: 16px; height: 16px; margin: 0; }
  body.ui-v2 .v2-cob-bola { width: 10px; height: 10px; border-radius: 50%; background: #16a34a; }
  body.ui-v2 .v2-cob-nota { font-size: var(--fs-sm); color: var(--muted); }
  body.ui-v2 #sec-atlas-viabilidade.v2-cob .sidebar-form { display: block; }
  body.ui-v2 #sec-atlas-viabilidade.v2-cob .sidebar-form > *:not(.av-cobertura) { display: none !important; }
  body.ui-v2 #sec-atlas-viabilidade.v2-cob .av-cobertura { display: block; position: static; }
  body.ui-v2 #sec-atlas-viabilidade.v2-cob #av-btn-cobertura { display: none; }
  body.ui-v2 #sec-atlas-viabilidade.v2-cob #av-cob-lista:not([style*="none"]) { position: static; min-width: 0; max-height: none; box-shadow: none; border: 0; padding: 0; background: none; display: grid !important; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 8px; }
  body.ui-v2 #sec-atlas-viabilidade.v2-cob .av-cob-item { display: flex; align-items: center; gap: 9px; padding: 9px 12px; border: 1px solid var(--border); border-radius: var(--radius-md); font-size: var(--fs-md); font-weight: 600; cursor: pointer; }
  body.ui-v2 #sec-atlas-viabilidade.v2-cob .av-cob-item:has(input:checked) { border-color: var(--primary); background: var(--blue-soft); }
  body.ui-v2 #sec-atlas-viabilidade.v2-cob .av-cob-area { margin-left: auto; font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--muted); }
  body.ui-v2 #sec-atlas-viabilidade.v2-cob .av-cob-nota { grid-column: 1 / -1; }
  body.ui-v2 #sec-atlas-viabilidade.v2-cob #av-resultado { display: none !important; }

}

/* ═══ v3.141.6 — Listas de clientes no celular: o nome ganha o espaço ═══
   Data e status saem da linha (estão dentro da ficha). O status só aparece na
   aba "Todos" (onde mistura situações). Alertas (bloqueio, OS aguardando,
   pendência) continuam. Na lista V.tal o selo "V.tal" é redundante e sai. */
@media (max-width: 768px) {
  body.ui-v2 [data-cli-panel] .cli-card-data { display: none !important; }
  body.ui-v2 [data-cli-panel]:not([data-cli-panel$=":todos"]) .cli-card-status [class^="badge-status-"],
  body.ui-v2 [data-cli-panel]:not([data-cli-panel$=":todos"]) .cli-card-status [class*=" badge-status-"] { display: none !important; }
  body.ui-v2 [data-cli-panel^="vtal:"] .cli-card-status span[title^="Cliente V.tal"] { display: none !important; }
  body.ui-v2 [data-cli-panel] .cli-card-status { min-width: 0 !important; width: auto !important; display: flex; flex-wrap: wrap; gap: 4px; }
  body.ui-v2 [data-cli-panel] .cli-card-status:not(:has(> *:not([class*="badge-status-"]):not([title^="Cliente V.tal"]))) { display: none !important; }
  body.ui-v2 [data-cli-panel$=":todos"] .cli-card-status { display: flex !important; }
  body.ui-v2 [data-cli-panel] .cli-card-header { flex-wrap: nowrap !important; gap: 10px !important; padding: 12px 14px !important; }
  body.ui-v2 [data-cli-panel] .cli-card-nome-wrap { flex: 1 1 auto !important; min-width: 0 !important; }
  body.ui-v2 [data-cli-panel] .cli-card-nome { white-space: normal !important; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.3; }
  body.ui-v2 [data-cli-panel] .cli-card-local { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  body.ui-v2 [data-cli-panel] .cli-card-caret { flex-shrink: 0; }
}

/* ═══ v3.141.7 — Listas V.tal com o mesmo tamanho das listas de clientes normais ═══
   As linhas V.tal ficavam mais altas porque o status empilhava "Ativo" + "V.tal"
   (redundante na lista V.tal) e o código vinha em mono cinza. Agora: um selo só,
   código igual ao nome (como nos clientes normais), mesma altura de linha. */
body.ui-v2 [data-cli-panel^="vtal:"] .cli-card-status span[title^="Cliente V.tal"] { display: none !important; }
body.ui-v2 .v2-lst .cli-c-cod { font-family: inherit !important; font-weight: 700 !important; color: var(--text) !important; margin-right: 6px; }
@media (min-width: 769px) {
  body.ui-v2 [data-cli-panel] .cli-card-header { min-height: 58px; box-sizing: border-box; }
  body.ui-v2 [data-cli-panel] .cli-card-status { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; }
  body.ui-v2 [data-cli-panel] .cli-card-status > * { margin: 0 !important; }
}

/* ═══ v3.142.0 — V.tal: selo ao lado do nome e CDO na coluna CTO · Porta ═══ */
body.ui-v2 .cli-c-vt { display: inline-flex; align-items: center; margin-left: 8px; padding: 1px 7px; border-radius: 20px; font-size: 10px; font-weight: 700; letter-spacing: .2px; color: #854d0e; background: #fef08a; border: 1px solid #eab308; vertical-align: 1px; white-space: nowrap; font-family: var(--font); }
body.ui-v2.dark-mode .cli-c-vt { color: #fde68a; background: color-mix(in srgb, #eab308 18%, var(--white)); border-color: color-mix(in srgb, #eab308 45%, var(--white)); }
body.ui-v2 .v2-lst .cli-c-cto span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ═══ v3.142.1 — V.tal: coluna CTO · Porta mais larga; "aguardando retorno" vira só a ampulheta ═══ */
@media (min-width: 769px) {
  /* [v3.142.2] cabe em 1366 px com as 6 ações (a v3.142.1 passava da largura e cortava as ações) */
  body.ui-v2 #sec-clientes-vtal .v2-lst { --cols: minmax(84px, .6fr) minmax(180px, 1.6fr) minmax(188px, 1.1fr) 116px 92px var(--acw, 150px); }
  body.ui-v2 #sec-clientes-vtal .v2-lst.v2-lst-res { --cols: minmax(84px, .6fr) minmax(180px, 1.6fr) minmax(188px, 1.1fr) 112px 104px 92px var(--acw); }
  body.ui-v2 #sec-clientes-vtal .v2-lst.v2-lst-semparc { --cols: minmax(180px, 1.6fr) minmax(188px, 1.1fr) 116px 92px var(--acw, 150px); }
  body.ui-v2 #sec-clientes-vtal .v2-lst.v2-lst-res.v2-lst-semparc { --cols: minmax(180px, 1.6fr) minmax(188px, 1.1fr) 112px 104px 92px var(--acw); }
  body.ui-v2 #sec-clientes-vtal .v2-lst > .v2-clihead, body.ui-v2 #sec-clientes-vtal .v2-lst .cli-card-header { gap: 0 12px !important; }
  body.ui-v2 #sec-clientes-vtal .v2-lst .cli-c-cto { font-size: 12.5px; }
}
body.ui-v2 [data-cli-panel] .cli-card-status span[title*="aguardando retorno" i] { font-size: 0 !important; padding: 0 !important; border: 0 !important; background: none !important; width: 22px; height: 22px; display: inline-flex !important; align-items: center; justify-content: center; cursor: help; vertical-align: middle; }
body.ui-v2 [data-cli-panel] .cli-card-status span[title*="aguardando retorno" i]::before { content: '⏳'; font-size: 15px; line-height: 1; }
@media (min-width: 769px) { body.ui-v2 [data-cli-panel] .cli-card-status { flex-wrap: nowrap !important; } }

/* ═══ v3.142.2 — listas de clientes: rolagem lateral (e arrastar) quando não cabe ═══ */
@media (min-width: 769px) {
  body.ui-v2 .v2-lst { overflow-x: auto !important; overflow-y: hidden !important; scrollbar-width: thin; }
  body.ui-v2 .v2-lst > .v2-clihead, body.ui-v2 .v2-lst > .cli-card { min-width: 940px; }
  body.ui-v2 #sec-clientes-vtal .v2-lst > .v2-clihead, body.ui-v2 #sec-clientes-vtal .v2-lst > .cli-card { min-width: 1010px; }
  body.ui-v2 .v2-lst.v2-arrastando, body.ui-v2 .v2-lst.v2-arrastando * { cursor: grabbing !important; user-select: none !important; }
}

/* v3.142.3 — nº da OS V.tal na lista */
body.ui-v2 #osv-lista .osv-num { font-family: var(--font-mono) !important; color: var(--primary) !important; font-weight: 600; }

/* ═══ v3.142.6 — Ordens V.tal em colunas (Protocolo · Tipo · Cliente · Situação · Data) ═══
   As regras antigas do cartão (v3.136.2) usam order/display:contents nos filhos e
   embaralhavam as colunas; aqui o cartão de ordem (.osv-card-ord) sai delas. */
@media (min-width: 769px) {
  body.ui-v2 #osv-lista { --osvc: minmax(150px, .9fr) minmax(150px, 1fr) minmax(200px, 1.6fr) 150px 140px; }
  body.ui-v2 #osv-lista > .v2-osvhead.v2-osvhead2 { display: grid !important; grid-template-columns: var(--osvc) !important; column-gap: 14px; }
  body.ui-v2 #osv-lista > .osv-card-ord { display: block !important; padding: 0 !important; grid-template-columns: none !important; }
  body.ui-v2 #osv-lista > .osv-card-ord > div:not(.osv-v2row) { display: none !important; }
  body.ui-v2 #osv-lista > .osv-card-ord > .osv-v2row.osv-v2row { display: grid !important; grid-template-columns: var(--osvc); column-gap: 14px; row-gap: 6px; align-items: center; padding: 11px 18px; }
  body.ui-v2 #osv-lista > .osv-card-ord > .osv-v2row > * { order: 0 !important; display: block !important; min-width: 0; justify-self: stretch !important; margin: 0 !important; }
  body.ui-v2 .osv-v2row .c-prot { font-family: var(--font-mono); font-size: var(--fs-base); font-weight: 600; color: var(--primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  body.ui-v2 .osv-v2row .c-sem { font-family: var(--font); font-weight: 500; color: var(--muted); }
  body.ui-v2 .osv-v2row .c-tipo { font-size: var(--fs-base); font-weight: 600; color: var(--text); }
  body.ui-v2 .osv-v2row small { display: block; font-size: var(--fs-xs); font-weight: 500; color: var(--muted); margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  body.ui-v2 .osv-v2row .c-tipo small { font-family: var(--font-mono); }
  body.ui-v2 .osv-v2row .c-cli b { display: block; font-size: var(--fs-base); font-weight: 600; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  body.ui-v2 .osv-v2row .c-sit > * { display: inline-flex; }
  body.ui-v2 .osv-v2row .c-data { font-family: var(--font-mono); font-size: var(--fs-sm); color: var(--muted); white-space: nowrap; }
  body.ui-v2 #osv-lista > .osv-card-ord > .osv-v2row > .c-erro { grid-column: 1 / -1; font-size: var(--fs-sm); color: var(--red-tx); background: color-mix(in srgb, var(--red-tx) 8%, var(--white)); border-radius: var(--radius-sm); padding: 6px 10px; }
}
@media (min-width: 769px) and (max-width: 1100px) { body.ui-v2 #osv-lista { --osvc: minmax(130px, .9fr) minmax(120px, 1fr) minmax(150px, 1.4fr) 140px 120px; } }
/* Bater caixa: nome na OLT em coluna própria, alinhado */
body.ui-v2 .abc-linha { align-items: center; }
body.ui-v2 .abc-linha .abc-nome-col > div { margin-top: 0 !important; font-size: 12px !important; }
body.ui-v2 .abc-linha .abc-nome-col :is(input, button) { max-width: 100%; }
@media (max-width: 560px) {
  #sec-atlas-bater-caixa .abc-linha { grid-template-columns: 54px minmax(0, 1fr) 76px !important; }
  #sec-atlas-bater-caixa .abc-linha > .abc-nome-col { grid-column: 2 / -1; grid-row: 2; }
  #sec-atlas-bater-caixa .abc-linha > div:nth-child(3):not(.abc-nome-col):empty { display: none; }
}

/* ═══ v3.142.7 — Ordens V.tal: o cartão de ordem não usa mais as regras antigas (que mostravam o conteúdo em dobro) ═══ */
@media (min-width: 769px) {
  body.ui-v2 #osv-lista > div.osv-card-ord.osv-card-ord { display: block !important; margin: 0 !important; padding: 0 !important; border: 0 !important; border-top: 1px solid var(--divider) !important; border-radius: 0 !important; background: var(--white) !important; cursor: pointer; }
  body.ui-v2 #osv-lista > .v2-osvhead + div.osv-card-ord { border-top: 0 !important; }
  body.ui-v2 #osv-lista > div.osv-card-ord.osv-card-ord:hover { background: var(--blue-soft) !important; }
  body.ui-v2.dark-mode #osv-lista > div.osv-card-ord.osv-card-ord:hover { background: color-mix(in srgb, var(--primary) 10%, var(--white)) !important; }
  body.ui-v2 #osv-lista > div.osv-card-ord.osv-card-ord > div:not(.osv-v2row) { display: none !important; }
}

/* ═══ v3.142.8 — selo V.tal sempre visível: o nome encolhe, o selo não ═══ */
body.ui-v2 .cli-c-cli > b:has(> .cli-c-nm) { display: flex !important; align-items: center; min-width: 0; overflow: visible !important; white-space: nowrap; }
body.ui-v2 .cli-c-cli .cli-c-nm { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.ui-v2 .cli-c-cli .cli-c-vt { flex-shrink: 0; }

/* ═══ v3.142.9 — Backup (aba ativa, campos), Configurações de OS e escala de fontes ═══ */
/* Backup: ícone dentro do campo some, texto volta para a borda */
body.ui-v2 #sec-backup .v2-emo-vazio, body.ui-v2 #sec-backup span[style*="position:absolute"][style*="pointer-events:none"] { display: none !important; }
body.ui-v2 #sec-backup :is(select, input[type="time"], input[type="text"], input[type="number"]) { padding-left: 12px !important; }
/* Backup: o subtítulo da aba (repete o nome da aba) sai — a aba ativa já diz */
body.ui-v2 #sec-backup [id^="bkp-panel-main-"] > div[style*="font-weight"]:first-child:not(.section-card) { display: none !important; }

/* Configurações de OS: categorias no padrão (como Municípios) */
body.ui-v2 #os-config-lista > div { border-color: var(--border-soft) !important; border-radius: var(--radius) !important; }
body.ui-v2 #os-config-lista > div > div:first-child { padding: 11px 16px !important; background: var(--surface-2) !important; border-bottom-color: var(--divider) !important; }
body.ui-v2 #os-config-lista > div > div:first-child > span:first-child { font-size: var(--fs-lg) !important; color: var(--text) !important; }
body.ui-v2 #os-config-lista > div > div:first-child .btn-sm { height: 30px !important; min-width: 30px; padding: 0 10px !important; font-size: var(--fs-sm) !important; }
body.ui-v2 #os-config-lista > div > div:first-child .btn-sm[title] { width: 30px; padding: 0 !important; justify-content: center; font-size: 12px !important; }
body.ui-v2 #os-config-lista > div > div:not(:first-child) { padding: 10px 16px !important; gap: 6px !important; }
body.ui-v2 #os-config-lista > div > div:not(:first-child) > span { font-size: var(--fs-base) !important; padding: 4px 9px !important; border-radius: 20px !important; background: var(--white) !important; border-color: var(--border) !important; }
body.ui-v2 #oscfg-prazo-card .field-input { height: 36px !important; font-size: var(--fs-md) !important; }
body.ui-v2 #oscfg-prazo-card .btn-sm { height: 36px !important; }
body.ui-v2 #sec-os-config .section-card > div[style*="font-size:12px"] { font-size: var(--fs-sm) !important; }

/* Escala de fontes única no conteúdo (o que vinha fixo nos módulos) */
body.ui-v2 #page-app .content-page .content-sub { font-size: var(--fs-base) !important; }
body.ui-v2 #page-app .content-page .section-card-title { font-size: var(--fs-lg) !important; }
body.ui-v2 #page-app .content-page .btn-sm:not([title]) { font-size: var(--fs-base) !important; }
body.ui-v2 #page-app .content-page .btn-sm-xs, body.ui-v2 #page-app .content-page .btn-xs { font-size: var(--fs-sm) !important; }
body.ui-v2 #page-app .content-page :is(.field-label, .filter-label, .input-label) { font-size: var(--fs-xs) !important; }
body.ui-v2 #page-app .content-page :is(.field-input, .filter-input, .input-field) { font-size: var(--fs-md) !important; }
body.ui-v2 #page-app .content-page :is(td, .tbl-empty) { font-size: var(--fs-base); }
body.ui-v2 #page-app .content-page [style*="font-size:14px"]:not(.section-card-title):not([class*="kpi"]):not([class*="num"]) { font-size: var(--fs-lg) !important; }
body.ui-v2 #page-app .content-page [style*="font-size:13px"] { font-size: var(--fs-md) !important; }
body.ui-v2 #page-app .content-page [style*="font-size:12px"] { font-size: var(--fs-base) !important; }
body.ui-v2 #page-app .content-page [style*="font-size:11px"] { font-size: var(--fs-sm) !important; }

/* ═══ v3.142.10 — abas dos Logs numa linha só (Cancelados caía para baixo) ═══ */
@media (min-width: 769px) {
  body.ui-v2 div.v2-hx-log-olt-tab, body.ui-v2 div.v2-hx-rbx-log-tab, body.ui-v2 div.v2-hx-geo-log-tab { flex-wrap: nowrap !important; }
  body.ui-v2 :is(.log-olt-tab, .rbx-log-tab, .geo-log-tab) { flex-shrink: 0; white-space: nowrap; }
}

/* ═══ v3.143.0 — Janela "Reservar Porta" no padrão das demais ═══ */
body.ui-v2 #modal-reserva .reserva-modal { border-radius: 14px; border: 1px solid var(--border-soft); box-shadow: 0 24px 60px rgba(16,26,48,.28); width: 640px; }
body.ui-v2 #modal-reserva .reserva-header { padding: 16px 20px; border-bottom: 1px solid var(--divider); }
body.ui-v2 #modal-reserva .reserva-titulo { font-size: 15.5px; font-weight: 700; color: var(--text); }
body.ui-v2 #modal-reserva .reserva-subtitulo { font-size: var(--fs-sm); color: var(--muted); font-family: var(--font-mono); }
body.ui-v2 #modal-reserva .reserva-close { width: 28px; height: 28px; border-radius: 7px; background: none; font-size: 15px; color: var(--subtle); }
body.ui-v2 #modal-reserva .reserva-close:hover { background: var(--surface-2); color: var(--text); }
body.ui-v2 #modal-reserva .reserva-body { padding: 16px 20px 18px; }
body.ui-v2 #modal-reserva .reserva-section-title { font-size: var(--fs-xs); color: var(--subtle); letter-spacing: .7px; margin-bottom: 10px; }
body.ui-v2 #modal-reserva .reserva-section-title::before { display: none; }
body.ui-v2 #modal-reserva .portas-legenda { gap: 14px; margin-bottom: 12px; }
body.ui-v2 #modal-reserva .leg-item { font-size: var(--fs-sm); }
body.ui-v2 #modal-reserva .portas-grid { grid-template-columns: repeat(auto-fill, minmax(46px, 1fr)); gap: 6px; margin-bottom: 18px; }
body.ui-v2 #modal-reserva .porta-box { width: 46px; height: 46px; border-radius: 8px; font-family: var(--font-mono); font-size: 13px; font-weight: 600; }
body.ui-v2 #modal-reserva .porta-box.disponivel:hover { transform: none; }
body.ui-v2 #modal-reserva .porta-box.selecionada { transform: none; background: var(--primary); border-color: var(--primary); color: var(--on-primary); box-shadow: 0 0 0 3px var(--blue-line); }
body.ui-v2 #modal-reserva .reserva-porta-sel { background: var(--blue-soft); border: 1px solid var(--blue-line); border-radius: var(--radius-md); padding: 10px 14px; font-size: var(--fs-base); color: var(--text); }
body.ui-v2 #modal-reserva .reserva-porta-sel #reserva-porta-num { font-family: var(--font-mono); font-weight: 700; color: var(--primary); }
body.ui-v2 #modal-reserva .reserva-field label { font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; color: var(--subtle); }
body.ui-v2 #modal-reserva :is(.reserva-field input, select, .field-input, textarea) { background: var(--white) !important; border: 1.5px solid var(--border) !important; border-radius: var(--radius-md) !important; padding: 9px 12px !important; font-size: var(--fs-md) !important; min-height: 40px; box-sizing: border-box; color: var(--text) !important; }
body.ui-v2 #modal-reserva :is(input, select, textarea):focus { border-color: var(--primary) !important; box-shadow: var(--focus-ring); }
body.ui-v2 #modal-reserva .reserva-alert { border-radius: var(--radius-md); font-size: var(--fs-base); }
body.ui-v2 #modal-reserva .reserva-footer { margin: 16px -20px -18px; padding: 14px 20px; border-top: 1px solid var(--divider); background: var(--surface-2); }
body.ui-v2 #modal-reserva .btn-reservar { background: var(--primary); box-shadow: none; border-radius: var(--radius-md); height: 38px; padding: 0 20px; font-size: var(--fs-base); color: var(--on-primary); }
body.ui-v2 #modal-reserva .btn-reservar:hover { transform: none; background: var(--primary-hover); box-shadow: none; }
body.ui-v2 #modal-reserva .btn-cancelar-reserva { height: 38px; padding: 0 16px; border: 1px solid var(--border); border-radius: var(--radius-md); font-size: var(--fs-base); color: var(--text-2); }
body.ui-v2 #modal-reserva .reserva-success-txt { color: var(--green-tx); }
body.ui-v2.dark-mode #modal-reserva .porta-box.reservada, body.ui-v2.dark-mode #modal-reserva .leg-reservada { background: color-mix(in srgb, #b45309 20%, var(--white)); color: #fcd34d; }
body.ui-v2.dark-mode #modal-reserva .porta-box.ocupada, body.ui-v2.dark-mode #modal-reserva .leg-ocupada { background: color-mix(in srgb, #E8421A 20%, var(--white)); }
@media (max-width: 768px) { body.ui-v2 #modal-reserva .reserva-modal { width: 100%; border-radius: 14px 14px 0 0; } }

/* ═══ v3.144.0 — Buscar clientes: resultado abre a ficha nova; linha curta para reabrir ═══ */
body.ui-v2 .v2-bcli-res { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; background: var(--white); border: 1px solid var(--border-soft); border-radius: var(--radius); padding: 12px 16px; }
body.ui-v2 .v2-bcli-nm { flex: 1; min-width: 200px; display: flex; align-items: center; gap: 8px; font-size: var(--fs-md); font-weight: 700; color: var(--text); }
body.ui-v2 .v2-bcli-res .btn-sm { height: 36px !important; padding: 0 16px !important; }

/* ═══ v3.144.1 — Bater Caixa: formulário sem sobreposição ═══
   A v3.141.0 transformava TODO cartão do Bater Caixa num flex único (para o
   formulário do Sinal), achatando as 3 linhas do formulário numa só e zerando
   as margens: em larguras menores os campos encavalavam. Aqui o cartão volta a
   empilhar as linhas e cada linha alinha pela base dos campos. */
body.ui-v2 #sec-atlas-bater-caixa .section-card { display: block !important; }
body.ui-v2 #sec-atlas-bater-caixa .section-card > div + div:not(#abc-pon-ajuda) { margin-top: 12px !important; }
body.ui-v2 #sec-atlas-bater-caixa #abc-pon-ajuda { margin-top: 6px !important; }
body.ui-v2 #sec-atlas-bater-caixa .section-card > div[style*="display:flex"] { align-items: flex-end !important; }
body.ui-v2 #sec-atlas-bater-caixa .section-card [style*="display:flex"] > div { min-width: 0; }
body.ui-v2 #sec-atlas-bater-caixa .section-card .input-label { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-bottom: 6px; }
body.ui-v2 #sec-atlas-bater-caixa .section-card .input-field { width: 100%; }
body.ui-v2 #sec-atlas-bater-caixa .section-card > div:last-child .btn-sm { flex-shrink: 0; }
@media (max-width: 768px) {
  body.ui-v2 #sec-atlas-bater-caixa .section-card [style*="min-width:220px"] { flex: 1 1 100% !important; min-width: 0 !important; }
  body.ui-v2 #sec-atlas-bater-caixa .section-card > div:last-child .btn-sm { width: 100%; justify-content: center; }
}

/* ═══ v3.144.2 — auditoria: grupos vazios, ações das listas no celular ═══ */
body.ui-v2 #nav-menu .nav-dropdown.v2-vazio { display: none !important; }
@media (max-width: 768px) {
  body.ui-v2 .filter-bar > .section-header-actions.v2-acfil { display: flex !important; gap: 6px; flex: 1 1 100% !important; justify-content: flex-end; margin: 0 !important; }
  body.ui-v2 .v2-icbar { width: 40px !important; height: 40px !important; min-height: 40px; padding: 0 !important; display: inline-flex !important; align-items: center; justify-content: center; border-radius: var(--radius-md) !important; border: 1px solid var(--border) !important; background: var(--white) !important; color: var(--primary) !important; }
  body.ui-v2 .v2-icbar svg { width: 16px; height: 16px; }
  body.ui-v2 .v2-acfil [id^="exp-menu-"] { right: 0; left: auto; }
}

/* ═══ v3.145.0 — Painel de notificações no modelo do protótipo ═══ */
body.ui-v2 .notif-title { display: flex; align-items: center; gap: 8px; }
body.ui-v2 .v2-ncnt { font-family: var(--font-mono); font-size: 11px; font-weight: 700; padding: 1px 8px; border-radius: 20px; background: var(--blue-light); color: var(--primary); }
body.ui-v2 .notif-item { background: var(--white) !important; box-shadow: none !important; border-left: 0 !important; position: relative; }
body.ui-v2 .notif-item.v2-nl { background: color-mix(in srgb, var(--primary) 6%, var(--white)) !important; }
body.ui-v2 .notif-item.v2-nl::before { content: ''; position: absolute; left: 0; top: 10px; bottom: 10px; width: 3px; border-radius: 0 3px 3px 0; background: var(--primary); }
body.ui-v2 .notif-item.v2-nclic { cursor: pointer; }
body.ui-v2 .notif-item.v2-nclic:hover { background: var(--blue-soft) !important; }
body.ui-v2.dark-mode .notif-item.v2-nl { background: color-mix(in srgb, var(--primary) 12%, var(--white)) !important; }
body.ui-v2 .notif-icon { display: flex !important; align-items: center; justify-content: center; }
body.ui-v2 .v2-ni-os { background: var(--blue-light) !important; color: var(--primary) !important; }
body.ui-v2 .v2-ni-ok { background: var(--green-light) !important; color: var(--green-tx) !important; }
body.ui-v2 .v2-ni-al { background: var(--warn-bg) !important; color: var(--warn-tx) !important; }
body.ui-v2 .v2-ni-vt { background: color-mix(in srgb, #eab308 18%, var(--white)) !important; color: #a16207 !important; }
body.ui-v2.dark-mode .v2-ni-vt { color: #fde68a !important; }
body.ui-v2 .v2-ni-dg { background: color-mix(in srgb, #0891b2 14%, var(--white)) !important; color: #0e7490 !important; }
body.ui-v2.dark-mode .v2-ni-dg { color: #67e8f9 !important; }
body.ui-v2 .v2-ni-cl { background: var(--surface-2) !important; color: var(--muted) !important; }
body.ui-v2 .v2-nnovo { margin-left: 6px; font-size: 9.5px; font-weight: 800; letter-spacing: .3px; padding: 1px 6px; border-radius: 20px; background: var(--primary); color: var(--on-primary); vertical-align: 1px; }
body.ui-v2 .notif-item > div:last-child { align-items: flex-end; }

/* ═══ v3.145.1 — Dashboard Parceiro: a 2ª linha cabe numa linha só (4 com V.tal) ═══ */
@media (min-width: 769px) {
  body.ui-v2 .dash-parc-grid { grid-template-columns: repeat(12, minmax(0, 1fr)) !important; }
  body.ui-v2 .dash-parc-grid > div:nth-child(n+5) { grid-column: span 4; }
  body.ui-v2 .dash-parc-grid:has(> div:nth-child(8)) > div:nth-child(n+5) { grid-column: span 3; }
  body.ui-v2 .dash-parc-grid:has(> div:nth-child(9)) > div:nth-child(n+5) { grid-column: auto; }
  body.ui-v2 .dash-parc-grid:has(> div:nth-child(9)) { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }
  body.ui-v2 .dash-parc-grid:has(> div:nth-child(9)) > div { grid-column: auto !important; }
}

/* ═══ v3.145.5 — V.tal › Diagnóstico › Resultados em tabela + popup ═══ */
body.ui-v2 [data-diagv-panel="resultados"] { padding: 0 !important; overflow: hidden; }
body.ui-v2 [data-diagv-panel="resultados"] > .section-card-header { margin: 0 !important; padding: 13px 18px !important; border-bottom: 1px solid var(--divider); }
body.ui-v2 #diagv-res-lista { margin: 0 !important; overflow-x: auto; }
body.ui-v2 .v2-dgres { width: 100%; border-collapse: collapse; }
body.ui-v2 .v2-dgres th { background: var(--surface-2); font-size: var(--fs-xs); font-weight: 700; letter-spacing: .7px; text-transform: uppercase; color: var(--subtle); padding: 10px 14px; text-align: left; white-space: nowrap; }
body.ui-v2 .v2-dgres td { padding: 11px 14px; font-size: var(--fs-base); border-top: 1px solid var(--divider); color: var(--text-2); vertical-align: middle; }
body.ui-v2 .v2-dgres :is(th, td):first-child { padding-left: 18px; }
body.ui-v2 .v2-dgres td.mono, body.ui-v2 .v2-dgres .mono { font-family: var(--font-mono); white-space: nowrap; }
body.ui-v2 .v2-dgres td b { font-weight: 600; color: var(--text); }
body.ui-v2 .v2-dgres td b .mono { color: var(--muted); font-weight: 500; margin-right: 4px; }
body.ui-v2 #diagv-res-lista .tbl-empty { padding: 26px 18px; }

/* ═══ v3.145.6 — popup de espera do diagnóstico ═══ */
body.ui-v2 .v2-dgpop-ld-c { display: flex; align-items: center; justify-content: center; gap: 10px; padding: 36px 10px; font-size: var(--fs-md); color: var(--muted); }
body.ui-v2 .v2-spin { width: 18px; height: 18px; border-radius: 50%; border: 2px solid var(--border); border-top-color: var(--primary); animation: v2spin .8s linear infinite; }
@keyframes v2spin { to { transform: rotate(360deg); } }

/* ═══ v3.145.11 — Notificações como no protótipo: ponto colorido, data sob o texto, sem seta/selo ═══ */
body.ui-v2 .notif-panel { width: 360px !important; border-radius: 12px !important; box-shadow: 0 16px 40px rgba(16, 26, 48, .18) !important; overflow: hidden; }
body.ui-v2 .notif-header { gap: 10px; padding: 12px 14px !important; border-bottom: 1px solid var(--divider) !important; }
body.ui-v2 .notif-title { flex: 1; font-size: var(--fs-lg) !important; }
body.ui-v2 #v2-nler { background: none; border: 0; padding: 0; cursor: pointer; font: inherit; font-size: var(--fs-sm); font-weight: 600; color: var(--primary); }
body.ui-v2 #v2-nler:hover { text-decoration: underline; }
body.ui-v2 .notif-item { gap: 10px !important; padding: 12px 14px !important; border-top: 0 !important; border-bottom: 1px solid var(--divider) !important; }
body.ui-v2 .notif-list > .notif-item:last-child { border-bottom: 0 !important; }
body.ui-v2 .notif-item.v2-nl { background: var(--blue-soft) !important; }
body.ui-v2 .notif-item.v2-nl::before, body.ui-v2 .v2-nnovo { display: none !important; }
body.ui-v2 .notif-icon.v2-ndot { width: 8px !important; height: 8px !important; border-radius: 50% !important; margin-top: 5px; padding: 0 !important; font-size: 0 !important; background: var(--border) !important; }
body.ui-v2 .notif-item.v2-nl .v2-nd-os { background: var(--primary) !important; }
body.ui-v2 .notif-item.v2-nl .v2-nd-ok { background: var(--green-tx) !important; }
body.ui-v2 .notif-item.v2-nl .v2-nd-alerta { background: #E8421A !important; }
body.ui-v2 .notif-item.v2-nl .v2-nd-vtal { background: #E8A33D !important; }
body.ui-v2 .notif-item.v2-nl .v2-nd-diag { background: #0891b2 !important; }
body.ui-v2 .notif-item.v2-nl .v2-nd-cli { background: var(--muted) !important; }
body.ui-v2 .notif-item.notif-item-alerta .v2-ndot { background: #E8421A !important; }
body.ui-v2 .notif-body { display: flex; flex-direction: column; gap: 2px; }
body.ui-v2 .notif-nome { font-size: var(--fs-base) !important; font-weight: 600 !important; white-space: normal !important; text-wrap: pretty; }
body.ui-v2 .notif-desc { font-size: var(--fs-sm) !important; line-height: 1.45 !important; margin-top: 0 !important; text-wrap: pretty; }
body.ui-v2 .notif-body > .notif-data { margin-top: 2px; font-size: var(--fs-xs) !important; }
body.ui-v2 .notif-item > div:last-child:not(.notif-body) { display: none !important; }
body.ui-v2 #v2-nrodape { display: block; width: 100%; padding: 10px 14px; border: 0; border-top: 1px solid var(--divider); background: var(--surface-2); font: inherit; font-size: 12px; font-weight: 600; color: var(--primary); cursor: pointer; text-align: center; }
body.ui-v2 #v2-nrodape:hover { background: var(--blue-soft); }

/* ═══ v3.145.13 — LGPD (prazos), Empresas (quadros do cadastro), V.tal reservados (ampulheta) ═══ */
body.ui-v2 #audit-prazos-lista { padding: 14px 18px 16px !important; gap: 10px !important; }
body.ui-v2 #audit-prazos-lista > div { flex: 1 1 200px; min-width: 0 !important; background: var(--surface-2) !important; border: 1px solid var(--border-soft) !important; border-radius: 10px !important; padding: 10px 14px !important; gap: 3px !important; }
body.ui-v2 #audit-prazos-lista > div > span:first-child { font-size: var(--fs-sm) !important; }
body.ui-v2 #audit-prazos-lista > div > span:last-child { font-size: var(--fs-md) !important; }
body.ui-v2 #modal-empresa .modal > .field-group[style*="border:1px solid"] { margin: 4px 20px 14px !important; background: var(--surface-2) !important; border-color: var(--border-soft) !important; }
@media (min-width: 769px) {
  body.ui-v2 #sec-clientes-vtal .v2-lst.v2-lst-res { --cols: minmax(84px, .6fr) minmax(180px, 1.6fr) minmax(170px, 1fr) 112px 104px 124px var(--acw); }
  body.ui-v2 #sec-clientes-vtal .v2-lst.v2-lst-res.v2-lst-semparc { --cols: minmax(180px, 1.6fr) minmax(170px, 1fr) 112px 104px 124px var(--acw); }
  body.ui-v2 #sec-clientes-vtal .v2-lst .cli-card-status { display: flex !important; align-items: center; gap: 4px; flex-wrap: nowrap; }
}

/* ═══ v3.145.15 — Pendências (integração) só para master, nos dois visuais ═══ */
body:not(.sessao-master) #_ev-pend-integ, body:not(.sessao-master) #v2-nrodape { display: none !important; }

/* ═══ v3.145.16 — trocar senha só em Configurações › Usuários (sai do rodapé do menu) ═══ */
#btn-minha-senha { display: none !important; }

/* ═══ v3.145.17 — menu: item sem subitens selecionado igual ao subitem (cor cheia); usuário no lugar de antes ═══ */
@media (min-width: 769px) {
  body.ui-v2 #nav-menu .nav-dropdown.v2-solo > .nav-dropdown-btn.v2-solo-ativo,
  body.ui-v2.dark-mode #nav-menu .nav-dropdown.v2-solo > .nav-dropdown-btn.v2-solo-ativo { background: var(--primary) !important; color: var(--on-primary) !important; }
  body.ui-v2.v2-mini #nav-menu .nav-dropdown.v2-solo > .nav-dropdown-btn.v2-solo-ativo { background: transparent !important; }
  /* o Senha saiu: mantém a altura que as duas linhas (Senha/Sair) davam ao cartão */
  body.ui-v2 .v2-user-ac { min-height: 36px; justify-content: center; }
}

/* ═══ v4.1.0 — Viabilidade (tema claro): cards com tom mais forte — no claro ficavam quase iguais ao fundo ═══ */
@media (min-width: 769px) {
  body.ui-v2:not(.dark-mode) #results-area > .result-card:has(.badge-possui), body.ui-v2:not(.dark-mode) #av-resultado .av-item[data-av-card="geogrid"] { background: color-mix(in oklab, #00A651 22%, var(--white)) !important; border-color: color-mix(in oklab, #00A651 50%, var(--white)) !important; }
  body.ui-v2:not(.dark-mode) #results-area > .result-card:has(.badge-sem), body.ui-v2:not(.dark-mode) #results-area > .result-card:has(.badge-negativa), body.ui-v2:not(.dark-mode) #av-resultado .av-item.v2-neg { background: color-mix(in oklab, #E8421A 18%, var(--white)) !important; border-color: color-mix(in oklab, #E8421A 45%, var(--white)) !important; }
  body.ui-v2:not(.dark-mode) #results-area > .result-card:has(.badge-proj), body.ui-v2:not(.dark-mode) #results-area > .result-card:has(.badge-projetada), body.ui-v2:not(.dark-mode) #results-area > .result-card:has(.badge-alerta), body.ui-v2:not(.dark-mode) #av-resultado .av-item[data-av-card="parceiro"] { background: color-mix(in oklab, #E8A33D 24%, var(--white)) !important; border-color: color-mix(in oklab, #E8A33D 55%, var(--white)) !important; }
  body.ui-v2:not(.dark-mode) #results-area > .result-card.active, body.ui-v2:not(.dark-mode) #av-resultado .av-item.v2-sel { border-color: var(--primary) !important; }
}

/* ═══ v4.1.1 — barra superior mais baixa (64 → 52 px) e sem a busca rápida (o menu lateral já leva a Buscar clientes) ═══ */
@media (min-width: 769px) {
  body.ui-v2 { --v2-bar: 52px; }
  body.ui-v2 #v2-busca { display: none !important; }
  body.ui-v2 #v2-barra { padding: 0 20px; }
  body.ui-v2 .v2-crumb { font-size: 11px; line-height: 1.2; }
  body.ui-v2 .v2-h1 { font-size: 17px; line-height: 1.2; }
  body.ui-v2 .v2-bt { width: 34px; height: 34px; font-size: 14px; }
}

/* ═══ [v4.1.3] Atlas › Ativação — opções de modo e de equipamento anterior ═══
   A bandeja das abas (`div.v2-hx-seg`, v3.139.3) zera borda e fundo dos botões
   com !important, e a Ativação marcava a opção escolhida SÓ por borda/fundo
   inline: Bridge e Router (e Nenhum / Troca / Mudança) ficavam idênticos. No
   celular a bandeja ainda é de uma linha só com rolagem lateral, e o Router e
   a "Mudança de endereço" ficavam fora da tela — o técnico via "Bridge" com o
   Router escolhido. Agora: a escolhida (`.aatv-sel`) aparece como a aba ativa,
   e no celular as opções quebram linha, uma embaixo da outra, inteiras. */
body.ui-v2 #sec-atlas-ativacao div.v2-hx-seg > .btn-sm.aatv-sel { background: var(--white) !important; color: var(--primary) !important; font-weight: 700 !important; box-shadow: 0 1px 3px rgba(0,48,135,.12), inset 0 0 0 1.5px var(--primary) !important; }
body.ui-v2.dark-mode #sec-atlas-ativacao div.v2-hx-seg > .btn-sm.aatv-sel { background: var(--surface-2) !important; }
body.ui-v2 #sec-atlas-ativacao div.v2-hx-seg > .btn-sm.aatv-sel > div:first-child { color: var(--primary) !important; }
body.ui-v2 #sec-atlas-ativacao div.v2-hx-seg > .btn-sm { height: auto !important; min-height: 32px; }
@media (max-width: 768px) {
  body.ui-v2 #sec-atlas-ativacao div.v2-hx-seg { display: flex !important; flex-wrap: wrap !important; overflow: visible !important; width: 100% !important; box-sizing: border-box; }
  body.ui-v2 #sec-atlas-ativacao div.v2-hx-seg > .btn-sm { flex: 1 1 100% !important; min-width: 0 !important; white-space: normal !important; text-align: left; justify-content: flex-start; padding: 8px 12px !important; }
  body.ui-v2 #sec-atlas-ativacao div.v2-hx-seg > .btn-sm[data-aatv-modo] { flex-direction: column; align-items: flex-start; }
}
/* [v4.1.3] Vincular cliente: cada autenticação do RBX é um botão de DUAS
   linhas (PPPoE + contrato/MAC). A altura fixa de 40 px dos botões da tela
   espremia as duas linhas e cortava a segunda quando o nome do contrato
   quebrava — justamente o que diferencia uma autenticação da outra. */
body.ui-v2 #sec-atlas-ativacao .section-card .btn-sm[data-aatv-vinc-sel] { height: auto !important; min-height: 40px; padding: 8px 10px !important; }

/* [v4.2.0] Bater Caixa: o formulário recolhe durante a sessão e o resumo
   nasce escondido. O visual novo força `display:block !important` nos cartões
   desta tela (regra acima, `#sec-atlas-bater-caixa .section-card`) — sem esta
   regra mais específica, a classe `abc-oculto` não esconderia nada. O módulo
   injeta a mesma regra, mas ela só chega quando ele carrega; esta vale desde
   o primeiro desenho da tela. */
body.ui-v2 #sec-atlas-bater-caixa .section-card.abc-oculto { display: none !important; }
body.ui-v2 #sec-atlas-bater-caixa #abc-form-resumo { padding: 12px 16px !important; }
