/* ==========================================================================
   Next Tecnologia - branding do frontend Tactical RMM
   Gerado pelo editor em 2026-10-23T02:00:00.000Z
   Injetado via nginx sub_filter. Somente CSS, nenhum JS toca o DOM do Vue.
   Base validada: tacticalrmm-web v0.101.64
   ========================================================================== */

/* Paleta Quasar */
html:root {
  --q-primary: #597DA1 !important;
  --q-secondary: #8C88A9 !important;
  --q-accent: #CF6138 !important;
  --q-positive: #059343 !important;
  --q-negative: #DD4444 !important;
  --q-info: #389FD2 !important;
  --q-dark: #171A1C !important;
  --q-dark-page: #0F1113 !important;
}

/* Headbar principal (o header das abas inferiores fica num q-layout aninhado e nao e afetado) */
#q-app > .q-layout > .q-header,
#q-app > .q-layout > .q-header.bg-grey-9 {
  background: #0D1014 !important;
  color: #EEF4FB !important;
}

/* Logo da headbar: texto oculto sem tocar no DOM */
.q-header .q-toolbar .q-toolbar__title {
  font-size: 0 !important;
  display: flex;
  align-items: center;
}
.q-header .q-toolbar .q-toolbar__title::before {
  content: "";
  flex: 0 0 auto;
  width: 160px;
  height: 30px;
  margin-right: 4px;
  background: url("/next-branding/logo-header.png") left center / contain no-repeat;
}

/* Variaveis lidas pelo NOC e pelo login (/next-branding/noc/); sem efeito no TRMM */
:root {
  --nx-header-bg: #0D1014;
  --nx-header-fg: #EEF4FB;
  --nx-logo-header: url("/next-branding/logo-header.png");
  --nx-logo-w: 160px;
  --nx-logo-h: 30px;
  --nx-logo-login: url("/next-branding/logo-login.png");
}

/* Nome do produto (texto de interface; o nome do servico do agente nao muda) */
:root { --nx-product: "NEX RMM"; }

/* Barra de menus (FileBar): texto pelo contraste com o fundo, nos dois modos */
.q-page-container > .q-page > .q-pb-sm:first-child > .q-bar {
  background: #1B1E22 !important;
}
.q-page-container > .q-page > .q-pb-sm:first-child > .q-bar .q-btn { color: #fff !important; }

/* Cabecalho das tabelas (dark) */
.table-bgcolor-dark .q-table__top,
.table-bgcolor-dark .q-table__bottom,
.table-bgcolor-dark thead tr:first-child th {
  background-color: #1E2123 !important;
}

/* Linha selecionada (dark) */
.highlight-dark { background-color: #293745 !important; }

/* ==========================================================================
   Tela de login redesenhada. Seletores do LoginView.vue (v0.101.64).
   ========================================================================== */
/* Campos: contorno arredondado no lugar do sublinhado; foco com anel na primaria */
.q-page.bg-image .q-field--filled .q-field__control {
  height: 54px;
  border-radius: 10px !important;
  background: rgba(255, 255, 255, .045) !important;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .12);
  transition: box-shadow .15s, background-color .15s;
}
.q-page.bg-image .q-field--filled .q-field__control:before { opacity: 0 !important; border: 0 !important; background: transparent !important; }
.q-page.bg-image .q-field--filled .q-field__control:after { display: none !important; }
.q-page.bg-image .q-field--filled:hover .q-field__control { box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .22); }
.q-page.bg-image .q-field--filled.q-field--highlighted .q-field__control {
  background: rgba(255, 255, 255, .07) !important;
  box-shadow: inset 0 0 0 2px var(--q-primary), 0 0 0 4px color-mix(in srgb, var(--q-primary) 22%, transparent);
}
.q-page.bg-image .q-field--filled.q-field--error .q-field__control { box-shadow: inset 0 0 0 2px var(--q-negative); }
.q-page.bg-image .q-field__label { font-size: 15px; }
/* Botao: mais alto, cantos arredondados, sem caixa alta */
.q-page.bg-image .q-btn.bg-primary {
  min-height: 48px;
  border-radius: 10px;
  text-transform: none;
  font-size: 15px;
  font-weight: 600;
  letter-spacing: .01em;
  box-shadow: 0 10px 24px -10px color-mix(in srgb, var(--q-primary) 80%, transparent);
}
.q-page.bg-image .q-btn.bg-primary:before { box-shadow: none; }
.q-page.bg-image .q-form.q-gutter-md > * { margin-top: 18px; }
/* SSO como lista de botoes */
.q-page.bg-image .q-card .q-list--bordered { border: 0; padding: 0 !important; }
.q-page.bg-image .q-card .q-list .q-item { border-radius: 10px; min-height: 46px; margin-top: 8px; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .12); }
.q-page.bg-image .q-card .text-h6 { font-size: 14px; font-weight: 500; color: rgba(255, 255, 255, .6); }
/* Layout dividido: painel de marca (HTML injetado fora do #q-app) + formulario */
body:has(.q-page.bg-image) .nx-login-aside { display: flex; }
.q-page.bg-image {
  background: var(--q-dark-page) !important;
  padding-left: 50vw;
  justify-content: center !important;
}
.q-page.bg-image .q-card {
  width: min(400px, 86%) !important;
  background: transparent !important;
  box-shadow: none !important;
  border: 0 !important;
}
.q-page.bg-image .q-card > .q-card__section { padding-left: 0; padding-right: 0; }
.q-page.bg-image .q-card > .q-card__section:first-child .text-center { text-align: left; padding-top: 0 !important; }
.q-page.bg-image .q-card .text-h4 { font-size: 0 !important; line-height: 0 !important; white-space: normal; }
.q-page.bg-image .q-card .text-h4::before { content: "Entrar"; display: block; font-size: 28px; line-height: 1.2; font-weight: 600; letter-spacing: -.01em; color: #fff; }
.q-page.bg-image .q-card .text-h4::after { content: "Use sua conta do RMM para acessar o painel."; display: block; margin-top: 8px; font-size: 14.5px; line-height: 1.45; font-weight: 400; color: rgba(255, 255, 255, .62); }
.nx-login-aside {
  display: none;
  position: fixed;
  inset: 0 auto 0 0;
  width: 50vw;
  z-index: 1;
  flex-direction: column;
  justify-content: space-between;
  gap: 32px;
  padding: clamp(32px, 5vw, 72px);
  background: linear-gradient(135deg, #050708 0%, #101419 49%, #1F2F41 100%);
  color: #fff;
  overflow: hidden;
  font-family: inherit;
  border-right: 1px solid rgba(255, 255, 255, .08);
}
.nx-login-aside::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: linear-gradient(rgba(255, 255, 255, .05) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, .05) 1px, transparent 1px);
  background-size: 44px 44px;
  -webkit-mask-image: radial-gradient(ellipse 80% 70% at 20% 80%, #000 0%, transparent 75%);
  mask-image: radial-gradient(ellipse 80% 70% at 20% 80%, #000 0%, transparent 75%);
  pointer-events: none;
}
.nx-login-aside::after {
  content: "";
  position: absolute;
  width: 70vh;
  height: 70vh;
  right: -18vh;
  top: -22vh;
  border-radius: 50%;
  background: radial-gradient(closest-side, color-mix(in srgb, var(--q-primary) 38%, transparent), transparent);
  pointer-events: none;
}
.nx-login-aside > * { position: relative; z-index: 1; }
.nx-la-brand { display: flex; align-items: center; gap: 12px; font-size: 17px; font-weight: 600; letter-spacing: .01em; }
.nx-la-logo { height: 76px; width: 228px; max-width: 100%; background: var(--nx-logo-login, none) left center / contain no-repeat; }
.nx-la-mid { max-width: 30em; }
.nx-la-mid h1 { margin: 0 0 14px; font-size: clamp(28px, 2.6vw, 40px); line-height: 1.15; font-weight: 600; letter-spacing: -.015em; }
.nx-la-mid p { margin: 0 0 26px; font-size: 16px; line-height: 1.55; color: rgba(255, 255, 255, .72); }
.nx-la-mid ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.nx-la-mid li { display: flex; gap: 12px; align-items: flex-start; font-size: 15px; line-height: 1.45; color: rgba(255, 255, 255, .86); }
.nx-la-mid li::before { content: ""; flex: none; width: 18px; height: 18px; margin-top: 1px; border-radius: 50%;
  background: color-mix(in srgb, var(--q-primary) 30%, transparent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 12.5l4 4 8-9' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 11px no-repeat;
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--q-primary) 60%, transparent); }
.nx-la-foot { font-size: 13px; color: rgba(255, 255, 255, .5); }
@media (max-width: 959.98px) {
  body:has(.q-page.bg-image) .nx-login-aside { display: none; }
  .q-page.bg-image { padding-left: 0; background: linear-gradient(135deg, #050708 0%, #101419 49%, #1F2F41 100%) !important; }
  .q-page.bg-image .q-card {
    width: min(420px, 90vw) !important;
    padding: 12px 8px;
    border-radius: 16px;
    background: color-mix(in srgb, var(--q-dark) 88%, transparent) !important;
    box-shadow: 0 30px 60px -20px rgba(0, 0, 0, .6), inset 0 0 0 1px rgba(255, 255, 255, .08) !important;
  }
  .q-page.bg-image .q-card > .q-card__section { padding-left: 16px; padding-right: 16px; }
  .q-page.bg-image .q-card > .q-card__section:first-child .text-center::before { content: ""; display: block; height: 46px; margin-bottom: 22px; background: var(--nx-logo-login) left center / contain no-repeat; }
}

/* ==========================================================================
   Melhorias de usabilidade (nivel 1). Seletores conferidos no DOM do v0.101.64.
   As regras de linha dependem de dash_*_color nos valores padrao.
   ========================================================================== */
/* Agente offline: .fa-signal com dash_warning_color */
.agents-tbl-sticky tbody tr:has(.fa-signal.text-warning) { opacity: 0.55; }
/* Faixa de severidade (ordem = precedencia) */
.agents-tbl-sticky tbody tr:has(.fa-check-double.text-warning) > td:first-child { box-shadow: inset 3px 0 0 var(--q-warning); }
.agents-tbl-sticky tbody tr:has(.fa-power-off) > td:first-child { box-shadow: inset 3px 0 0 var(--q-primary); }
.agents-tbl-sticky tbody tr:has(.fa-check-double.text-negative) > td:first-child,
.agents-tbl-sticky tbody tr:has(.fa-signal.text-negative) > td:first-child { box-shadow: inset 3px 0 0 var(--q-negative); }
/* Modo manutencao: icone construction (unico material-icon com dash_positive_color na linha) */
.agents-tbl-sticky tbody tr:has(i.material-icons.text-positive) > td { background-image: repeating-linear-gradient(135deg, rgba(255, 255, 255, .045) 0 8px, transparent 8px 16px); }
.body--light .agents-tbl-sticky tbody tr:has(i.material-icons.text-positive) > td { background-image: repeating-linear-gradient(135deg, rgba(0, 0, 0, .045) 0 8px, transparent 8px 16px); }
/* Icones semanticos como pilulas */
.agents-tbl-sticky tbody td > .q-icon:is(.text-positive, .text-negative, .text-warning, .text-info) {
  padding: 3px;
  border-radius: 6px;
  background-color: color-mix(in srgb, currentColor 16%, transparent);
}
/* Realce de hover */
.agents-tbl-sticky tbody tr:hover > td { background-color: color-mix(in srgb, var(--q-primary) 10%, transparent); }
/* Linha selecionada: prevalece sobre a faixa de severidade */
.agents-tbl-sticky tbody tr.highlight-dark > td:first-child { box-shadow: inset 3px 0 0 var(--q-primary); }
/* Numeros tabulares */
.agents-tbl-sticky td { font-variant-numeric: tabular-nums; }
/* Barra de menus integrada (altura do bloco preservada em 40 px) */
.q-page-container > .q-page > .q-pb-sm:first-child > .q-bar { border-radius: 0 !important; padding: 0 6px; }
.q-page-container > .q-page > .q-pb-sm:first-child > .q-bar > .q-btn-group { gap: 2px; box-shadow: none; }
.q-page-container > .q-page > .q-pb-sm:first-child > .q-bar .q-btn { min-height: 28px; padding: 0 11px; border-radius: 8px !important; font-size: 13.5px !important; font-weight: 500; letter-spacing: .01em; transition: color .15s, background-color .15s; }
.q-page-container > .q-page > .q-pb-sm:first-child > .q-bar .q-btn:focus-visible { outline: 2px solid var(--q-primary); outline-offset: 1px; }
.q-page-container > .q-page > .q-pb-sm:first-child > .q-bar { background: #1B1E22 !important; border-bottom: 1px solid rgba(255, 255, 255, .07); }
.q-page-container > .q-page > .q-pb-sm:first-child > .q-bar .q-btn { color: rgba(255, 255, 255, .72) !important; }
.q-page-container > .q-page > .q-pb-sm:first-child > .q-bar .q-btn:hover { color: #fff !important; background-color: rgba(255, 255, 255, .07); }
/* Status da headbar (versao, update, SSL) agrupados a direita, junto dos controles */
.q-header .q-toolbar .q-toolbar__title { display: flex !important; align-items: center; gap: 8px; min-width: 0; }
.q-header .q-toolbar__title > span.text-overline {
  margin: 0 !important; font-size: 11.5px !important; letter-spacing: .02em !important; font-weight: 500; opacity: .55;
}
/* Update disponivel: pilula discreta com contorno, link sem sublinhado */
.q-header .q-toolbar__title > .q-chip:has(a) {
  margin: 0 !important; height: 26px; padding: 0 10px 0 8px; border-radius: 13px;
  background: transparent !important; color: var(--q-warning) !important;
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--q-warning) 55%, transparent);
  font-size: 12px !important; letter-spacing: .01em !important; text-transform: none;
}
.q-header .q-toolbar__title > .q-chip:has(a) a { color: inherit !important; text-decoration: none; font-weight: 500; }
.q-header .q-toolbar__title > .q-chip:has(a):hover { background: color-mix(in srgb, var(--q-warning) 14%, transparent) !important; }
.q-header .q-toolbar__title > .q-chip:has(a) .q-icon { font-size: 16px; margin-right: 4px; color: inherit; }
/* SSL vencendo: o aviso mais importante da barra, cheio e com pulso suave */
.q-header .q-toolbar__title > .q-chip:not(:has(a)) {
  margin: 0 !important; height: 26px; padding: 0 10px 0 8px; border-radius: 13px;
  background: var(--q-negative) !important; color: #fff !important; font-size: 12px !important; font-weight: 600; letter-spacing: .01em;
  box-shadow: 0 0 0 0 color-mix(in srgb, var(--q-negative) 60%, transparent); animation: nx-ssl 2.4s ease-out infinite;
}
.q-header .q-toolbar__title > .q-chip:not(:has(a)) .q-icon { font-size: 16px; margin-right: 4px; color: #fff; }
@keyframes nx-ssl { 0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--q-negative) 55%, transparent); } 70%, 100% { box-shadow: 0 0 0 8px transparent; } }
@media (prefers-reduced-motion: reduce) { .q-header .q-toolbar__title > .q-chip:not(:has(a)) { animation: none; } }
.q-header .q-toolbar .q-toolbar__title::before { margin-right: auto !important; }
/* ===== Controles da headbar: mesma forma, mesmo tamanho, mesmo hover ===== */
#q-app > .q-layout > .q-header .q-toolbar { gap: 4px; }
#q-app > .q-layout > .q-header .q-toolbar > .q-btn { min-width: 36px; min-height: 36px; padding: 0 8px; border-radius: 8px; align-self: center; margin: 0 !important; }
#q-app > .q-layout > .q-header .q-toolbar > .q-btn .q-icon { font-size: 21px; }
#q-app > .q-layout > .q-header .q-toolbar > .q-btn .q-badge--floating { top: 1px; right: -1px; min-height: 16px; padding: 1px 5px; border-radius: 8px; font-size: 10.5px; font-weight: 600; line-height: 14px; }
#q-app > .q-layout > .q-header .q-toolbar > .q-chip.cursor-pointer {
  height: 32px; margin: 0 2px !important; padding: 0 12px 0 4px; border-radius: 16px;
  background: rgba(255, 255, 255, .08) !important; color: inherit !important; font-size: 13.5px; font-weight: 600; font-variant-numeric: tabular-nums;
}
#q-app > .q-layout > .q-header .q-toolbar > .q-chip.cursor-pointer:hover { background: rgba(255, 255, 255, .14) !important; }
#q-app > .q-layout > .q-header .q-toolbar > .q-chip.cursor-pointer .q-avatar { font-size: 24px !important; margin-right: 8px; }
#q-app > .q-layout > .q-header .q-toolbar > .q-btn-dropdown { min-height: 36px; height: 36px; align-self: center; padding: 0 8px 0 12px; border-radius: 8px; font-weight: 500; margin-left: 2px !important; }
#q-app > .q-layout > .q-header .q-toolbar > .q-toggle { margin: 0 2px !important; }
/* ===== Painel Summary do agente: cards ===== */
:is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) { padding: 10px 12px 14px !important; }
:is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) > .q-bar { height: 40px; padding: 0 2px; font-size: 13.5px; min-width: 0; }
:is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) > .q-bar > .q-btn, :is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) > .q-bar > .q-btn-dropdown { flex: none; }
:is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) > .q-bar .q-btn__content { flex-wrap: nowrap; }
:is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) > .q-bar > b { font-size: 14.5px; font-weight: 600; margin-left: 2px; }
:is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) > .q-bar .q-btn { min-height: 32px; padding: 0 10px; margin-left: 4px; border-radius: 8px; font-weight: 500; }
:is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) > .q-bar > button.q-btn:nth-of-type(3) { background: var(--q-primary) !important; color: #fff !important; }
:is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) > .q-separator { display: none; }
:is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) > .q-separator + .row { display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-top: 8px; }
:is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) > .q-separator + .row > [class*="col-"] {
  width: auto !important; max-width: none !important; min-width: 0; padding: 12px 14px; border-radius: 12px;
  background: rgba(255, 255, 255, .035); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .07);
}
.body--light :is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) > .q-separator + .row > [class*="col-"] { background: rgba(0, 0, 0, .025); box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .08); }
:is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) > .q-separator + .row > [class*="col-"]:empty { display: none; }
@media (max-width: 1100px) { :is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) > .q-separator + .row { grid-template-columns: 1fr; } }
:is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) .text-subtitle2.text-bold { display: block; margin: 0 0 8px !important; font-size: 12px; font-weight: 600 !important; letter-spacing: .04em; opacity: .65; }
:is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) .q-list--dense > .q-item { min-height: 30px; padding: 2px 2px; }
:is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) .q-item__section--avatar { min-width: 30px; padding-right: 8px; }
:is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) .q-item__section--avatar .q-icon { font-size: 16px; opacity: .7; }
:is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) .q-item__section--main { font-size: 13.5px; line-height: 1.35; }
:is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) .q-chip {
  display: flex; width: 100%; max-width: none; height: 38px; margin: 0 0 6px !important; padding: 0 12px 0 0; border-radius: 10px !important;
  background: rgba(255, 255, 255, .05) !important; color: inherit !important; font-size: 14px;
}
.body--light :is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) .q-chip { background: rgba(0, 0, 0, .04) !important; }
:is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) .q-chip .q-avatar { border-radius: 10px 0 0 10px !important; font-size: 38px !important; margin: 0 10px 0 0 !important; }
:is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) .q-chip small { font-size: 13.5px; font-weight: 500; }
:is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) .q-linear-progress { height: 10px !important; border-radius: 5px; margin: 8px 0 6px !important; }
:is(.q-tab-panel, .q-page) > .q-pa-sm:has(> .q-bar + .q-separator + .row) > .q-separator + .row > [class*="col-"] .q-separator { margin: 10px 0; opacity: .5; }
/* Botao de URL Action (ex.: RustDesk) ao lado de Take Control, criado por /next-branding/nex-ui.js */
.nex-urlbtn { display: inline-flex; align-items: center; gap: 6px; flex: none; min-height: 32px; padding: 0 10px; margin-left: 4px; border: 0; border-radius: 8px;
  background: transparent; color: inherit; font: 500 14px/1 Roboto, "Segoe UI", sans-serif; cursor: pointer; box-shadow: inset 0 0 0 1px color-mix(in srgb, currentColor 32%, transparent); }
.nex-urlbtn:hover { background: color-mix(in srgb, currentColor 10%, transparent); }
.nex-urlbtn:focus-visible { outline: 2px solid var(--q-primary); outline-offset: 1px; }
.nex-urlbtn[aria-busy] { opacity: .6; cursor: progress; }
/* ===== Tabelas dos gerenciadores (dialogos) ===== */
.q-dialog .q-table tbody tr:hover > td { background-color: color-mix(in srgb, var(--q-primary) 8%, transparent); }
.q-dialog .q-table thead th { font-weight: 600; }
.q-dialog .q-table__container { border-radius: 10px; }
/* ===== Notificacoes ===== */
.q-notification { border-radius: 12px !important; padding: 8px 8px 8px 16px; font-weight: 500; box-shadow: 0 14px 34px -12px rgba(0, 0, 0, .6) !important; }
.q-notification .q-notification__message { font-size: 14px; }
/* Arvore: icone e nome na mesma linha; nome quebra ao lado do icone */
.q-tree__node-header { align-items: flex-start !important; }
.q-tree__node-header > .q-tree__arrow { margin-top: 3px; }
.q-tree__node-header-content > .row { flex-wrap: nowrap !important; align-items: flex-start !important; }
.q-tree__node-header-content > .row > .q-icon { flex: none; margin-top: 1px; }
.q-tree__node-header-content > .row > div { min-width: 0; line-height: 1.3; }
/* Densidade compacta: linha minima de 28 px do Quasar preservada (virtual scroll) */
.agents-tbl-sticky tbody td { padding-top: 2px !important; padding-bottom: 2px !important; }
.agents-tbl-sticky tbody td .q-icon { font-size: 18px !important; }
.agents-tbl-sticky tbody td > .q-icon:is(.text-positive, .text-negative, .text-warning, .text-info) { padding: 2px !important; }
.agents-tbl-sticky thead th { padding-top: 4px !important; padding-bottom: 4px !important; }
.q-tree__node { padding-bottom: 2px !important; }
.q-tree__node-header { padding-top: 2px !important; padding-bottom: 2px !important; }
.q-splitter__after .q-tabs .q-tab { min-height: 36px; }
.q-splitter__after .q-tabs .q-tab__icon { font-size: 20px; }
/* Indicador de aba ativa */
.q-tab__indicator { height: 3px !important; }
/* Divisoria */
.q-splitter--dark .q-splitter__separator { background-color: rgba(255, 255, 255, .1) !important; }
/* Scrollbar fina no tema (padrao CSS; scrollbar-color e herdado, scrollbar-width nao) */
.body--dark { scrollbar-color: color-mix(in srgb, var(--q-primary) 55%, transparent) transparent; }
.body--dark, .body--dark * { scrollbar-width: thin; }
/* Foco de teclado */
.body--dark .q-layout :focus-visible { outline: 2px solid var(--q-primary); outline-offset: 2px; }
/* Interface moderna: raios consistentes, superficies suaves, menus e dialogos flutuantes */
:root { --nx-r: 10px; --nx-r-lg: 14px; }
.q-btn--rectangle { border-radius: var(--nx-r) !important; }
.q-field--outlined .q-field__control,
.q-field--outlined .q-field__control:before,
.q-field--outlined .q-field__control:after { border-radius: var(--nx-r) !important; }
.q-field--filled .q-field__control { border-radius: var(--nx-r) var(--nx-r) 0 0; }
.q-card { border-radius: var(--nx-r-lg); }
.q-dialog__inner > div { border-radius: var(--nx-r-lg) !important; }
.body--dark .q-dialog__backdrop { -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); }
.q-dialog .q-card { overflow: hidden; }
.body--dark .q-dialog .q-card { box-shadow: 0 30px 70px -24px rgba(0, 0, 0, .7), inset 0 0 0 1px rgba(255, 255, 255, .07); }
.q-menu { border-radius: var(--nx-r-lg) !important; padding: 4px; }
.body--dark .q-menu { box-shadow: 0 18px 40px -12px rgba(0, 0, 0, .7), inset 0 0 0 1px rgba(255, 255, 255, .08) !important; }
.q-menu .q-item { border-radius: calc(var(--nx-r) - 2px); }
.q-tooltip { border-radius: calc(var(--nx-r) - 2px); padding: 6px 10px; font-size: 12.5px; }
.q-notification { border-radius: var(--nx-r-lg) !important; }
.q-badge { border-radius: 6px; }
.q-table__card { border-radius: var(--nx-r-lg); }
/* Headbar: linha fina no lugar da sombra pesada */
#q-app > .q-layout > .q-header { box-shadow: 0 1px 0 rgba(255, 255, 255, .06) !important; }
/* Barra de menus flutuante; a altura total do bloco continua 40 px (splitter usa altura fixa) */
.q-page-container > .q-page > .q-pb-sm:first-child { padding: 6px 8px 2px !important; }
.q-page-container > .q-page > .q-pb-sm:first-child > .q-bar { border-radius: var(--nx-r); }
/* Arvore de clientes e listas: itens em pilula, selecionado com fundo da primaria */
.q-tree__node-header { border-radius: var(--nx-r); }
.q-tree__node--selected > .q-tree__node-header,
.q-page .q-list .q-item.q-item--active { background: color-mix(in srgb, var(--q-primary) 16%, transparent); }
.q-page .q-list .q-item { border-radius: var(--nx-r); }
/* Abas: indicador arredondado e hover em pilula */
.q-tab { border-radius: var(--nx-r) var(--nx-r) 0 0; }
.q-tab__indicator { border-radius: 3px 3px 0 0; }
/* Modo claro: abas inativas do TRMM usam text-grey (contraste 2,7:1) */
.body--light .q-tabs.text-grey { color: rgba(0, 0, 0, .6) !important; }
/* Tabela de agentes com cantos arredondados */
.agents-tbl-sticky { border-radius: var(--nx-r-lg); overflow: hidden; margin-right: 8px; }
/* 2FA redesenhado: o dialogo e um portal do Quasar; o campo one-time-code so existe nele */
.q-dialog:has(input[autocomplete="one-time-code"]) .q-dialog__backdrop { background: rgba(0, 0, 0, .55); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.q-dialog:has(input[autocomplete="one-time-code"]) .q-card {
  width: min(420px, 92vw);
  min-width: 0 !important;
  padding: 28px 28px 20px;
  border-radius: 18px !important;
  background: color-mix(in srgb, var(--q-dark) 94%, transparent) !important;
  box-shadow: 0 40px 80px -24px rgba(0, 0, 0, .75), inset 0 0 0 1px rgba(255, 255, 255, .08) !important;
}
.q-dialog:has(input[autocomplete="one-time-code"]) .q-card__section { padding: 0; }
.q-dialog:has(input[autocomplete="one-time-code"]) .q-card__section.text-h6 { font-size: 0 !important; line-height: 0; text-align: center; }
.q-dialog:has(input[autocomplete="one-time-code"]) .q-card__section.text-h6::before {
  content: ""; display: block; width: 52px; height: 52px; margin: 0 auto 18px; border-radius: 14px;
  background: color-mix(in srgb, var(--q-primary) 22%, transparent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l7 3v5c0 4.5-3 8.3-7 10-4-1.7-7-5.5-7-10V6z'/%3E%3Crect x='9' y='10.5' width='6' height='5' rx='1'/%3E%3Cpath d='M10.5 10.5V9a1.5 1.5 0 0 1 3 0v1.5'/%3E%3C/svg%3E") center / 26px no-repeat;
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--q-primary) 55%, transparent);
}
.q-dialog:has(input[autocomplete="one-time-code"]) .q-card__section.text-h6::after { content: "Verificação em duas etapas"; display: block; font-size: 21px; line-height: 1.25; font-weight: 600; letter-spacing: -.01em; color: #fff; }
.q-dialog:has(input[autocomplete="one-time-code"]) .q-card__section:nth-child(2)::before { content: "Digite o código de 6 dígitos do seu aplicativo autenticador."; display: block; margin: 8px 0 22px; text-align: center; font-size: 14.5px; line-height: 1.5; color: rgba(255, 255, 255, .62); }
.q-dialog:has(input[autocomplete="one-time-code"]) .q-field--outlined .q-field__control { height: 64px; border-radius: 12px; }
.q-dialog:has(input[autocomplete="one-time-code"]) .q-field--outlined .q-field__control:before { border-radius: 12px; border-color: rgba(255, 255, 255, .16); }
.q-dialog:has(input[autocomplete="one-time-code"]) .q-field--outlined .q-field__control:after { border-radius: 12px; }
.q-dialog:has(input[autocomplete="one-time-code"]) .q-field--outlined.q-field--highlighted .q-field__control { box-shadow: 0 0 0 4px color-mix(in srgb, var(--q-primary) 22%, transparent); }
.q-dialog:has(input[autocomplete="one-time-code"]) input[autocomplete="one-time-code"] {
  font-size: 28px; font-weight: 600; letter-spacing: .45em; text-indent: .45em; text-align: center; font-variant-numeric: tabular-nums;
}
.q-dialog:has(input[autocomplete="one-time-code"]) .q-card__actions { padding: 6px 0 0; gap: 10px; flex-direction: row-reverse; justify-content: stretch; }
.q-dialog:has(input[autocomplete="one-time-code"]) .q-card__actions .q-btn { min-height: 48px; margin: 0 !important; border-radius: 10px; text-transform: none; }
.q-dialog:has(input[autocomplete="one-time-code"]) .q-card__actions .q-btn .q-btn__content > .block { font-size: 0; }
.q-dialog:has(input[autocomplete="one-time-code"]) .q-card__actions .q-btn .q-btn__content::after { font-size: 15px; font-weight: 600; letter-spacing: .01em; }
.q-dialog:has(input[autocomplete="one-time-code"]) .q-card__actions .q-btn[type="submit"] { flex: 1; background: var(--q-primary) !important; color: #fff !important;
  box-shadow: 0 10px 24px -10px color-mix(in srgb, var(--q-primary) 80%, transparent); }
.q-dialog:has(input[autocomplete="one-time-code"]) .q-card__actions .q-btn[type="submit"] .q-btn__content::after { content: "Verificar"; }
.q-dialog:has(input[autocomplete="one-time-code"]) .q-card__actions .q-btn[type="button"] { color: rgba(255, 255, 255, .7) !important; padding: 0 18px; }
.q-dialog:has(input[autocomplete="one-time-code"]) .q-card__actions .q-btn[type="button"] .q-btn__content::after { content: "Voltar"; font-weight: 500; }
/* Botao NOC na ponta direita da barra de menus; aparece so onde a barra existe (dashboard) */
.nx-noc { position: fixed; z-index: 1000; display: none; align-items: center; gap: 6px; top: 58px; right: 14px; height: 28px; padding: 0 12px; border-radius: 8px; background: var(--q-primary); color: #fff; font: 500 13px/1 Roboto, sans-serif; letter-spacing: .04em; text-decoration: none; }
body:has(.q-page-container > .q-page > .q-pb-sm:first-child > .q-bar) .nx-noc { display: inline-flex; }
.nx-noc:hover { filter: brightness(1.1); }
.nx-noc:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
/* Fora da tela de login: antes da autenticacao o NOC nao tem sessao para usar */
body:has(.q-page.bg-image) .nx-noc { display: none !important; }
