/* Persistent theme and navigation refinements. The portal remains usable when
   JavaScript is unavailable: it simply stays in the light theme. */
:root {
  --dashboard-header-height: 0px;
  --header-shadow: 0 8px 20px rgba(23, 32, 42, .08);
}

.app-workspace > header {
  position: sticky;
  top: 0;
  z-index: 20;
  margin: -16px 0 0;
  padding: 16px 0;
  background: var(--bg);
  box-shadow: var(--header-shadow);
}

.app-workspace > header::before {
  position: absolute;
  z-index: -1;
  inset: 0 -100vmax;
  background: var(--bg);
  content: '';
}

.theme-toggle { white-space: nowrap; }
.theme-toggle span { margin-left: 4px; }

/* Ferramentas secundárias agrupadas num menu compacto no cabeçalho. */
.header-menu { position: relative; }
.header-menu > summary {
  list-style: none;
  cursor: pointer;
  padding: 10px 13px;
  border: 1px solid #d8dde5;
  border-radius: 8px;
  background: #ffffff;
  color: #344054;
  font-weight: 600;
}
.header-menu > summary::-webkit-details-marker { display: none; }
.header-menu > summary:hover { background: #f6f7f9; }
.header-menu-panel {
  position: absolute;
  z-index: 40;
  top: calc(100% + 7px);
  right: 0;
  display: grid;
  min-width: 210px;
  padding: 7px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--surface);
  box-shadow: 0 14px 32px rgba(23, 32, 42, .18);
}
.header-menu-panel button { width: 100%; border: 0; text-align: left; }
.header-menu-panel .header-menu-logout { margin-top: 3px; border-top: 1px solid var(--line); border-radius: 0; }

:root[data-theme="dark"] .header-menu > summary {
  border-color: var(--line);
  background: #1c293b;
  color: var(--ink);
}
:root[data-theme="dark"] .header-menu > summary:hover { background: #25354b; }
:root[data-theme="dark"] .header-menu-panel { border-color: #43536a; box-shadow: 0 16px 36px rgba(0, 0, 0, .55); }

/* Delimita claramente as janelas apresentadas sobre o painel. */
dialog {
  border: 1px solid var(--line);
  outline: 1px solid rgba(23, 32, 42, .08);
  box-shadow: 0 24px 80px rgba(23, 32, 42, .28);
}

/* A card title remains available while its own content is being reviewed. */
.device { overflow: visible; }
.device[open] > .device-head {
  position: sticky;
  top: calc(var(--dashboard-header-height) + 8px);
  z-index: 10;
  background: var(--surface);
  box-shadow: 0 5px 14px rgba(23, 32, 42, .10);
}

.device-toolbar {
  position: sticky;
  top: calc(var(--dashboard-header-height) + 76px);
  z-index: 9;
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin: 0 -20px;
  padding: 10px 20px;
  border-bottom: 1px solid var(--line);
  background: var(--surface);
  box-shadow: 0 5px 12px rgba(23, 32, 42, .06);
}

.device-toolbar button { width: auto; margin: 0; padding: 7px 10px; font-size: 12px; }

:root[data-theme="dark"] {
  color-scheme: dark;
  --ink: #e7ecf5;
  --muted: #aab5c6;
  --line: #303b4e;
  --surface: #172131;
  --bg: #0d1521;
  --accent: #78a5ff;
  --accent-dark: #a5c2ff;
  --danger: #ff8293;
  --success: #53d69a;
  --header-shadow: 0 8px 24px rgba(0, 0, 0, .30);
}

:root[data-theme="dark"] body,
:root[data-theme="dark"] dialog,
:root[data-theme="dark"] .card,
:root[data-theme="dark"] .device[open] > .device-head {
  background: var(--surface);
  color: var(--ink);
}

:root[data-theme="dark"] dialog {
  border-color: #50627c;
  outline-color: rgba(200, 218, 245, .18);
  box-shadow: 0 28px 90px rgba(0, 0, 0, .62);
}

:root[data-theme="dark"] dialog::backdrop {
  background: rgba(2, 7, 14, .72);
}

:root[data-theme="dark"] input,
:root[data-theme="dark"] select,
:root[data-theme="dark"] textarea,
:root[data-theme="dark"] .secondary,
:root[data-theme="dark"] .incident-settings,
:root[data-theme="dark"] .incidents-summary > div,
:root[data-theme="dark"] .incidents-table tr,
:root[data-theme="dark"] .member-option {
  background: #1c293b;
  color: var(--ink);
  border-color: var(--line);
}

:root[data-theme="dark"] .secondary:hover,
:root[data-theme="dark"] .device > .device-head:hover,
:root[data-theme="dark"] .help-topic > summary:hover {
  background: #25354b;
}

:root[data-theme="dark"] .policy li,
:root[data-theme="dark"] .new-list-form,
:root[data-theme="dark"] .incidents-filter,
:root[data-theme="dark"] .agent-health,
:root[data-theme="dark"] .help-command,
:root[data-theme="dark"] .help-note,
:root[data-theme="dark"] .incidents-table th {
  background: #1a2637;
  color: var(--ink);
  border-color: var(--line);
}

:root[data-theme="dark"] .policy-head span,
:root[data-theme="dark"] .pill.neutral,
:root[data-theme="dark"] .incident-type {
  background: #28374b;
  color: #d4dfef;
}

:root[data-theme="dark"] .computer,
:root[data-theme="dark"] .pill {
  background: #20365c;
  color: #c8daff;
}

:root[data-theme="dark"] .target-type,
:root[data-theme="dark"] #token-result code,
:root[data-theme="dark"] #uninstall-dialog .install-command {
  border-color: #4a6490;
  background: #172842;
  color: #e1ebff;
}

:root[data-theme="dark"] .group-note,
:root[data-theme="dark"] .help-warning {
  background: #3b2f18;
  color: #ffd98f;
}

:root[data-theme="dark"] .health-context,
:root[data-theme="dark"] .status.offline,
:root[data-theme="dark"] .status.unknown {
  color: var(--muted);
}

:root[data-theme="dark"] .empty-list {
  border-color: #4b5a70;
}

/* Etiquetas de listas e exceções: contraste suficiente no tema escuro. */
:root[data-theme="dark"] .tag,
:root[data-theme="dark"] .list-tag {
  background: #1a3458;
  border-color: #3f68a5;
  color: #d5e5ff;
}

:root[data-theme="dark"] .exception-tag {
  background: #123d32;
  border-color: #287759;
  color: #a9f0cd;
}

:root[data-theme="dark"] .tag-remove:hover {
  background: rgba(255, 255, 255, .16);
  color: #ffffff;
}

/* Auditoria: cabeçalhos, linhas e resultados legíveis em tema escuro. */
:root[data-theme="dark"] .audit-filter,
:root[data-theme="dark"] .audit-table th {
  background: #24344a;
  border-color: #43536a;
  color: #dbe7f8;
}

:root[data-theme="dark"] .audit-table-wrap {
  background: var(--surface);
  border-color: #43536a;
}

/* Relatórios: a mesma apresentação mantém boa leitura em ambos os temas. */
.reports-dialog { width: min(900px, calc(100% - 30px)); }
.reports-content { margin-top: 18px; }
.reports-period { margin-bottom: 12px; color: var(--muted); }
.report-section { margin-top: 24px; }
.report-section h3 { margin-bottom: 9px; font-size: 15px; }
.reports-table-wrap { overflow: auto; border: 1px solid var(--line); border-radius: 9px; }
.reports-table-wrap table { width: 100%; border-collapse: collapse; min-width: 530px; }
.reports-table-wrap th, .reports-table-wrap td { padding: 9px 11px; border-bottom: 1px solid var(--line); text-align: left; }
.reports-table-wrap th { background: #f5f7fa; font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); }
.reports-table-wrap tr:last-child td { border-bottom: 0; }
.reports-summary { grid-template-columns: repeat(4, minmax(0, 1fr)); }

:root[data-theme="dark"] .reports-table-wrap { border-color: #43536a; }
:root[data-theme="dark"] .reports-table-wrap th { background: #24344a; color: #dbe7f8; }
:root[data-theme="dark"] .reports-table-wrap td { border-color: #303b4e; }

@media (max-width: 640px) {
  .reports-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

:root[data-theme="dark"] .audit-table th {
  box-shadow: 0 1px 0 #43536a;
}

:root[data-theme="dark"] .audit-table td {
  color: var(--ink);
}

:root[data-theme="dark"] .audit-table tbody tr:nth-child(even) td {
  background: #142033;
}

:root[data-theme="dark"] .audit-table small,
:root[data-theme="dark"] .audit-pagination,
:root[data-theme="dark"] #audit-page {
  color: #b7c5d8;
}

:root[data-theme="dark"] .audit-result.success {
  background: #123d32;
  color: #b5f5d4;
}

:root[data-theme="dark"] .audit-result.failure {
  background: #4b202a;
  color: #ffd2d8;
}

/* Políticas apresentadas dentro de cada posto. */
:root[data-theme="dark"] .usb-policy {
  background: #1a2637;
  border-color: #3b4a60;
  color: var(--ink);
}

:root[data-theme="dark"] .usb-policy small {
  color: #b7c5d8;
}

:root[data-theme="dark"] .device-inventory,
:root[data-theme="dark"] .inventory-table th {
  background: #1a2637;
  border-color: #3b4a60;
  color: var(--ink);
}

:root[data-theme="dark"] .inventory-table-wrap {
  border-color: #43536a;
  background: var(--surface);
}

:root[data-theme="dark"] .inventory-table td {
  border-color: var(--line);
  color: var(--ink);
}

:root[data-theme="dark"] .device-inventory > summary small {
  color: #b7c5d8;
}

@media (max-width: 620px) {
  .app-workspace > header { margin-top: -10px; }
  .theme-toggle span { display: none; }
  .theme-toggle { min-width: 42px; }
  .header-menu > summary { padding: 9px 10px; }
  .header-menu-panel { position: fixed; top: calc(var(--dashboard-header-height) + 8px); right: 14px; left: 14px; min-width: 0; }
  .device[open] > .device-head { top: calc(var(--dashboard-header-height) + 5px); }
  .device-toolbar { top: calc(var(--dashboard-header-height) + 61px); margin: 0 -14px; padding: 8px 14px; }
  .device-toolbar button { flex: 1 1 auto; }
}


/* Rulnexo 0.15 shell */
:root[data-theme="dark"] .app-sidebar{background:#080f19;border-right-color:#202b3a}
:root[data-theme="dark"] .sidebar-brand,:root[data-theme="dark"] .sidebar-footer{border-color:#202b3a}
:root[data-theme="dark"] .sidebar-link:hover{background:#142136}
:root[data-theme="dark"] .sidebar-link.active{background:#1c3562}
:root[data-theme="dark"] .endpoint-columns{background:#131e2d}
:root[data-theme="dark"] .endpoint-device,:root[data-theme="dark"] .endpoint-device>.device-head{background:var(--surface)!important}
:root[data-theme="dark"] .endpoint-device>.device-head:hover{background:#1b2a3e!important}
:root[data-theme="dark"] .endpoint-device[open]>.device-head{background:#1b2d49!important}
:root[data-theme="dark"] .endpoint-device .device-body{background:#121c2a}
:root[data-theme="dark"] .feature-flag{background:#101a28}

/* Rulnexo 0.21.7 — auditoria de contraste e tema escuro.
   Componentes recentes usam estas superfícies sem depender de cores claras
   hardcoded. As tabelas partilham o mesmo tratamento para evitar regressões. */
:root[data-theme="dark"] {
  --warning: #f5b94c;
  --surface-raised: #1c293b;
  --surface-soft: #131e2d;
  --surface-hover: #22334a;
  --table-head: #24344a;
  --table-alt: #142033;
  --table-hover: #1b2b40;
  --warning-bg: #3b2f18;
  --warning-border: #7a5c24;
  --danger-bg: #4b202a;
  --success-bg: #123d32;
  --info-bg: #172842;
}

/* Controlo de formulários e estados do browser. */
:root[data-theme="dark"] input::placeholder,
:root[data-theme="dark"] textarea::placeholder { color: #8795aa; opacity: 1; }
:root[data-theme="dark"] input:-webkit-autofill,
:root[data-theme="dark"] input:-webkit-autofill:hover,
:root[data-theme="dark"] input:-webkit-autofill:focus {
  -webkit-text-fill-color: var(--ink);
  box-shadow: 0 0 0 1000px var(--surface-raised) inset;
  caret-color: var(--ink);
}
:root[data-theme="dark"] .text-button:hover,
:root[data-theme="dark"] .icon-button:hover { background: var(--surface-hover); }
:root[data-theme="dark"] .secondary.danger:hover { background: var(--danger-bg); }

/* Feedback e avisos: evitar cartões claros isolados no tema escuro. */
:root[data-theme="dark"] .flash { background: var(--success-bg); color: #b5f5d4; border: 1px solid #287759; }
:root[data-theme="dark"] .flash.error { background: var(--danger-bg); color: #ffd2d8; border-color: #8d4654; }
:root[data-theme="dark"] .security-warning,
:root[data-theme="dark"] .merge-warnings { background: var(--warning-bg); color: #ffd98f; border-color: var(--warning-border); }
:root[data-theme="dark"] .security-ok { background: var(--success-bg); color: #b5f5d4; }
:root[data-theme="dark"] .secret-code,
:root[data-theme="dark"] #recovery-codes { background: var(--info-bg); color: #e1ebff; border-color: #4a6490; }
/* O QR necessita de fundo branco para garantir leitura por aplicações autenticadoras. */
:root[data-theme="dark"] #mfa-qr-code { background: #fff; border-color: #62728a; box-shadow: 0 0 0 1px rgba(255,255,255,.08); color-scheme: light; }

/* Estados semânticos que não devem perder a sua cor no tema escuro. */
:root[data-theme="dark"] .status.online i,
:root[data-theme="dark"] .status.healthy i { box-shadow: 0 0 0 3px rgba(83,214,154,.18); }
:root[data-theme="dark"] .status.warning { color: #f5b94c; }
:root[data-theme="dark"] .status.warning i { background: #f0a62b; box-shadow: 0 0 0 3px rgba(240,166,43,.18); }
:root[data-theme="dark"] .status.error i { box-shadow: 0 0 0 3px rgba(255,130,147,.17); }
:root[data-theme="dark"] .incident-type.domain_blocked,
:root[data-theme="dark"] .incident-type.ip_blocked,
:root[data-theme="dark"] .incident-type.usb_access_denied,
:root[data-theme="dark"] .pill.limit-reached { background: var(--danger-bg); color: #ffd2d8; }
:root[data-theme="dark"] .incident-type.usb_connected { background: var(--success-bg); color: #b5f5d4; }
:root[data-theme="dark"] .incident-type.usb_removed { background: #17335c; color: #c8daff; }
:root[data-theme="dark"] .lifecycle-repair,
:root[data-theme="dark"] .lifecycle-replacement { background: var(--warning-bg); color: #ffd98f; border-color: var(--warning-border); }
:root[data-theme="dark"] .lifecycle-retired { background: #253043; color: #c0cad8; }

/* Superfícies secundárias ainda definidas com fundos claros nos CSS legados. */
:root[data-theme="dark"] .bulk-panel,
:root[data-theme="dark"] .merge-confirm { background: var(--surface-soft); border-color: var(--line); color: var(--ink); }
:root[data-theme="dark"] .profile-group-options label:hover,
:root[data-theme="dark"] .protection-profile-card > summary:hover,
:root[data-theme="dark"] .protection-rule-row:hover { background: var(--surface-hover); }
:root[data-theme="dark"] .profile-group-options label:has(input:checked) {
  background: color-mix(in srgb, var(--accent) 14%, var(--surface));
  border-color: color-mix(in srgb, var(--accent) 48%, var(--line));
}

/* Tratamento único para todas as tabelas do portal. */
:root[data-theme="dark"] .inventory-table-wrap,
:root[data-theme="dark"] .incidents-table-wrap,
:root[data-theme="dark"] .audit-table-wrap,
:root[data-theme="dark"] .reports-table-wrap,
:root[data-theme="dark"] .merge-compare-wrap {
  background: var(--surface);
  border-color: #43536a;
}
:root[data-theme="dark"] .inventory-table,
:root[data-theme="dark"] .incidents-table,
:root[data-theme="dark"] .audit-table,
:root[data-theme="dark"] .reports-table-wrap table,
:root[data-theme="dark"] .merge-compare-table { color: var(--ink); }
:root[data-theme="dark"] .inventory-table th,
:root[data-theme="dark"] .incidents-table th,
:root[data-theme="dark"] .audit-table th,
:root[data-theme="dark"] .reports-table-wrap th,
:root[data-theme="dark"] .merge-compare-table thead th {
  background: var(--table-head);
  color: #dbe7f8;
  border-color: #43536a;
}
:root[data-theme="dark"] .inventory-table td,
:root[data-theme="dark"] .incidents-table td,
:root[data-theme="dark"] .audit-table td,
:root[data-theme="dark"] .reports-table-wrap td,
:root[data-theme="dark"] .merge-compare-table td,
:root[data-theme="dark"] .merge-compare-table tbody th {
  color: var(--ink);
  border-color: var(--line);
}
:root[data-theme="dark"] .inventory-table tbody tr:nth-child(even) td,
:root[data-theme="dark"] .incidents-table tbody tr:nth-child(even) td,
:root[data-theme="dark"] .audit-table tbody tr:nth-child(even) td,
:root[data-theme="dark"] .reports-table-wrap tbody tr:nth-child(even) td,
:root[data-theme="dark"] .merge-compare-table tbody tr:nth-child(even) td,
:root[data-theme="dark"] .merge-compare-table tbody tr:nth-child(even) th { background: var(--table-alt); }
:root[data-theme="dark"] .inventory-table tbody tr:hover td,
:root[data-theme="dark"] .incidents-table tbody tr:hover td,
:root[data-theme="dark"] .audit-table tbody tr:hover td,
:root[data-theme="dark"] .reports-table-wrap tbody tr:hover td,
:root[data-theme="dark"] .merge-compare-table tbody tr:hover td,
:root[data-theme="dark"] .merge-compare-table tbody tr:hover th { background: var(--table-hover); }
:root[data-theme="dark"] .inventory-table code,
:root[data-theme="dark"] .incidents-table code,
:root[data-theme="dark"] .audit-table code,
:root[data-theme="dark"] .merge-compare-table code { color: #d7e5ff; }

/* No layout móvel cada incidente torna-se um cartão. */
@media (max-width: 620px) {
  :root[data-theme="dark"] .incidents-table tr { background: var(--surface-raised); border-color: #43536a; }
}

/* Texto de estados que usava tons escuros no tema claro. */
:root[data-theme="dark"] .source-badge.override,
:root[data-theme="dark"] .agent-version-status.outdated,
:root[data-theme="dark"] .health-issues { color: #f5b94c; }
:root[data-theme="dark"] .help-shell { color: #b7c5d8; }
:root[data-theme="dark"] button:disabled,
:root[data-theme="dark"] button:disabled:hover { color: #b7c5d8; }
:root[data-theme="dark"] .remove:hover { background: var(--danger-bg); color: #ffd2d8; }

/* Rulnexo 0.22.0 — notas rápidas no tema escuro */
:root[data-theme="dark"] .quick-note-dialog textarea{border-color:#344154;background:#111923;color:#e8edf4}
:root[data-theme="dark"] .device-note-count.has-pinned{color:#f2bd67}
:root[data-theme="dark"] .notes-drawer{background:var(--surface);color:var(--ink)}
:root[data-theme="dark"] .note-panel-item.pinned{border-color:color-mix(in srgb,#d99a38 32%,var(--line));background:color-mix(in srgb,#d99a38 8%,var(--surface))}

/* Gestão de Agents — contraste específico do tema escuro 0.24.2.1 */
:root[data-theme="dark"] .agents-section .agent-summary article,
:root[data-theme="dark"] .agent-fleet-card,
:root[data-theme="dark"] .agent-release-panel.card,
:root[data-theme="dark"] .agent-management-list,
:root[data-theme="dark"] .agent-management-row-v3{
  border-color:#3b4a60;
}
:root[data-theme="dark"] .agent-management-row-v3:hover{
  background:var(--surface-hover);
}
:root[data-theme="dark"] .agent-management-row-v3.selected{
  background:color-mix(in srgb,var(--accent) 14%,var(--surface));
  box-shadow:inset 3px 0 0 var(--accent);
}
:root[data-theme="dark"] .agent-selection-toolbar{
  border-color:#43536a;
  background:color-mix(in srgb,var(--surface) 88%,var(--bg));
  box-shadow:0 8px 22px rgba(0,0,0,.24);
}
:root[data-theme="dark"] .agent-filter-chips .endpoint-filter.active{
  border-color:color-mix(in srgb,var(--accent) 52%,var(--line));
  background:color-mix(in srgb,var(--accent) 16%,var(--surface));
  color:#c9dcff;
}
:root[data-theme="dark"] .agent-filter-chips .endpoint-filter.active b{
  border-color:color-mix(in srgb,var(--accent) 44%,var(--line));
  background:color-mix(in srgb,var(--accent) 20%,var(--surface));
  color:#e4edff;
}
:root[data-theme="dark"] .agent-management-row code{
  border-color:#43536a;
  background:var(--surface-soft);
  color:#dbe7f8;
}
:root[data-theme="dark"] .agent-release-row{
  border-color:#3b4a60;
  background:var(--surface-soft);
}
:root[data-theme="dark"] .agent-release-row:hover{background:var(--surface-hover)}
:root[data-theme="dark"] .agent-version-status.outdated,
:root[data-theme="dark"] .agent-version-status.uninstalling{color:var(--warning)}
:root[data-theme="dark"]{--agent-success-text:var(--success);--agent-warning-text:var(--warning)}
