/* Camada exclusivamente visual, compartilhada por todas as areas autenticadas. */
.portal-ui {
  --portal-blue: var(--brand-primary, #0078d4);
  --portal-green: var(--brand-accent, #107c10);
  --portal-amber: #d97706;
  --portal-red: var(--brand-danger, #d13438);
  --portal-ink: var(--bs-emphasis-color);
  --portal-muted: var(--bs-secondary-color);
  --portal-panel: var(--bs-body-bg);
  --portal-panel-soft: var(--bs-tertiary-bg);
  --portal-line: var(--bs-border-color);
  --portal-radius: .85rem;
  background:
    radial-gradient(circle at 82% 7%, color-mix(in srgb, var(--portal-blue) 4%, transparent) 0, transparent 24rem),
    var(--bs-body-bg);
  color: var(--portal-ink);
}

.portal-ui .portal-navbar {
  border-bottom: 1px solid var(--portal-line);
  background: color-mix(in srgb, var(--portal-panel) 94%, transparent);
  box-shadow: 0 .2rem 1rem rgba(15, 23, 42, .055);
  backdrop-filter: blur(14px);
}

.portal-ui .topbar-brand strong {
  letter-spacing: .045em;
}

.portal-ui .portal-search {
  border-color: var(--portal-line);
  border-radius: .7rem;
  background: var(--portal-panel-soft);
  box-shadow: none;
}

.portal-ui .portal-search:focus-within {
  border-color: color-mix(in srgb, var(--portal-blue) 52%, var(--portal-line));
  background: var(--portal-panel);
  box-shadow: 0 0 0 .2rem color-mix(in srgb, var(--portal-blue) 12%, transparent);
}

.portal-ui .portal-sidebar {
  border-right: 1px solid var(--portal-line);
  background: color-mix(in srgb, var(--portal-panel) 97%, var(--portal-panel-soft));
  box-shadow: .25rem 0 1.2rem rgba(15, 23, 42, .035);
}

.portal-ui .sidebar-nav .nav-link,
.portal-ui .sidebar-nav-group > summary {
  border-radius: .58rem;
  transition: color .14s ease, background-color .14s ease, box-shadow .14s ease;
}

.portal-ui .sidebar-nav .nav-link:hover,
.portal-ui .sidebar-nav-group > summary:hover {
  color: var(--portal-blue);
  background: color-mix(in srgb, var(--portal-blue) 6%, var(--portal-panel));
}

.portal-ui .sidebar-nav .nav-link.active {
  border-left-color: transparent;
  color: #fff;
  background: var(--portal-blue);
  box-shadow: 0 .2rem .55rem color-mix(in srgb, var(--portal-blue) 24%, transparent);
}

.portal-ui .sidebar-nav .nav-link.active i,
.portal-ui .sidebar-nav .nav-link.active span {
  color: inherit;
}

/* VPN e EDR seguem a mesma tipografia dos demais grupos (RDP, DLP e Policy Center). */
.portal-ui .sidebar-nav > [data-nav-group="vpn-overlay"] > .sidebar-nav-group-title,
.portal-ui .sidebar-nav > .nav-link[data-i18n-title="anti_ransomware"] {
  font-family: inherit;
  font-size: 11px;
  font-weight: 750;
  letter-spacing: .06em;
  line-height: 1.2;
  text-transform: uppercase;
}

.portal-ui .sidebar-nav > .nav-link[data-i18n-title="anti_ransomware"] > i:first-child {
  width: 20px;
  flex: 0 0 20px;
  font-size: 16px;
  line-height: 1;
  text-align: center;
  transform: translateX(-1px);
}

html:not([data-portal-theme="dark"]) .portal-ui .sidebar-nav > [data-nav-group="vpn-overlay"].active > .sidebar-nav-group-title {
  color: #605e5c;
}

.portal-ui .portal-pagebar {
  border-bottom: 1px solid var(--portal-line);
  background:
    linear-gradient(90deg, color-mix(in srgb, var(--portal-blue) 7%, var(--portal-panel)), var(--portal-panel) 58%);
  box-shadow: 0 .2rem .7rem rgba(15, 23, 42, .03);
}

.portal-ui .portal-pagebar > strong {
  color: var(--portal-ink);
  font-weight: 750;
  letter-spacing: -.012em;
}

.portal-ui .portal-content > .container-xxl {
  width: min(100%, 1600px);
}

.portal-ui .page-heading,
.portal-ui .page-header {
  position: relative;
  overflow: hidden;
  margin-bottom: 1rem;
  padding: 1.25rem 1.4rem;
  border: 1px solid var(--portal-line);
  border-radius: 1rem;
  background:
    radial-gradient(circle at 88% 0, color-mix(in srgb, var(--portal-green) 11%, transparent) 0, transparent 32%),
    linear-gradient(135deg, color-mix(in srgb, var(--portal-blue) 9%, var(--portal-panel)), var(--portal-panel) 62%);
  box-shadow: 0 .35rem 1.25rem rgba(15, 23, 42, .05);
}

.portal-ui .page-heading::after,
.portal-ui .page-header::after {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 3px;
  background: linear-gradient(90deg, var(--portal-blue), #19a3aa 58%, var(--portal-green));
}

.portal-ui .page-heading h1,
.portal-ui .page-heading h2,
.portal-ui .page-header h1,
.portal-ui .page-header h2 {
  margin-top: .25rem;
  color: var(--portal-ink);
  font-size: clamp(1.4rem, 2vw, 1.9rem);
  font-weight: 760;
  letter-spacing: -.025em;
}

.portal-ui .page-heading p:last-child,
.portal-ui .page-header p:last-child {
  color: var(--portal-muted) !important;
}

.portal-ui .eyebrow {
  display: flex;
  align-items: center;
  gap: .5rem;
  color: var(--portal-blue) !important;
  font-size: .71rem;
  font-weight: 800;
  letter-spacing: .085em !important;
  text-transform: uppercase;
}

.portal-ui .eyebrow::before {
  content: "";
  width: .48rem;
  height: .48rem;
  flex: 0 0 auto;
  border-radius: 50%;
  background: var(--portal-green);
  box-shadow: 0 0 0 .23rem color-mix(in srgb, var(--portal-green) 14%, transparent);
}

.portal-ui .page-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
}

.portal-ui .metric-grid,
.portal-ui .dashboard-kpi-grid,
.portal-ui .dashboard-ops-grid {
  gap: .85rem;
}

.portal-ui .stat-card,
.portal-ui .metric-card,
.portal-ui .dashboard-kpi,
.portal-ui .live-metric-card,
.portal-ui .event-summary-card {
  min-height: 7rem;
  border: 1px solid var(--portal-line) !important;
  border-radius: var(--portal-radius) !important;
  background: var(--portal-panel) !important;
  box-shadow: 0 .25rem .9rem rgba(15, 23, 42, .045) !important;
}

.portal-ui .stat-card .card-body,
.portal-ui .metric-card .card-body {
  padding: 1rem;
}

.portal-ui .stat-card .label,
.portal-ui .metric-card .label,
.portal-ui .dashboard-kpi small {
  color: var(--portal-muted) !important;
  font-size: .71rem;
  font-weight: 760;
  letter-spacing: .045em;
  text-transform: uppercase;
}

.portal-ui .stat-card .value,
.portal-ui .metric-card .value,
.portal-ui .dashboard-kpi strong {
  color: var(--portal-ink) !important;
  font-size: 1.7rem;
  font-weight: 760;
  letter-spacing: -.035em;
}

.portal-ui .metric-icon,
.portal-ui .dashboard-kpi-icon,
.portal-ui .row-icon,
.portal-ui .activity-icon,
.portal-ui .action-feed-icon {
  border: 1px solid color-mix(in srgb, var(--portal-blue) 18%, var(--portal-line));
  border-radius: .68rem;
  background: color-mix(in srgb, var(--portal-blue) 9%, var(--portal-panel)) !important;
  color: var(--portal-blue);
  box-shadow: none;
}

.portal-ui .workspace-panel,
.portal-ui .info-panel,
.portal-ui .data-section,
.portal-ui .card,
.portal-ui .glass-card,
.portal-ui .siem-console,
.portal-ui .siem-page-card {
  border-color: var(--portal-line) !important;
  border-radius: var(--portal-radius) !important;
  background: var(--portal-panel) !important;
  box-shadow: 0 .25rem .9rem rgba(15, 23, 42, .04) !important;
}

.portal-ui .workspace-panel,
.portal-ui .info-panel,
.portal-ui .data-section {
  padding: 1rem;
}

.portal-ui .workspace-head,
.portal-ui .data-section-head,
.portal-ui .card-header {
  gap: .75rem;
  margin-bottom: .9rem;
  padding: .78rem .9rem;
  border: 1px solid color-mix(in srgb, var(--portal-line) 80%, transparent);
  border-radius: .68rem;
  background: color-mix(in srgb, var(--portal-panel-soft) 65%, var(--portal-panel));
}

.portal-ui .workspace-head h1,
.portal-ui .workspace-head h2,
.portal-ui .workspace-head h3,
.portal-ui .workspace-head h4,
.portal-ui .workspace-head h5,
.portal-ui .data-section-head h1,
.portal-ui .data-section-head h2,
.portal-ui .data-section-head h3,
.portal-ui .data-section-head h4,
.portal-ui .data-section-head h5,
.portal-ui .card-header h1,
.portal-ui .card-header h2,
.portal-ui .card-header h3,
.portal-ui .card-header h4,
.portal-ui .card-header h5 {
  color: var(--portal-ink);
  font-weight: 750;
  letter-spacing: -.012em;
}

.portal-ui .workspace-head p,
.portal-ui .data-section-head p {
  color: var(--portal-muted) !important;
  font-size: .78rem;
}

.portal-ui .info-panel-title {
  color: var(--portal-ink);
  font-size: .86rem;
  font-weight: 750;
}

.portal-ui .info-panel-title > i {
  color: var(--portal-blue);
}

.portal-ui .workspace-subpanel,
.portal-ui .activity-row,
.portal-ui .action-feed-row,
.portal-ui .security-row,
.portal-ui .device-card-row,
.portal-ui .alert-row,
.portal-ui .alert-card-row,
.portal-ui .exception-card-row,
.portal-ui .dashboard-command-row,
.portal-ui .dashboard-auto-row {
  border-color: var(--portal-line) !important;
  border-radius: .68rem !important;
  background: var(--portal-panel-soft) !important;
  box-shadow: none !important;
}

.portal-ui .activity-row:hover,
.portal-ui .action-feed-row:hover,
.portal-ui .security-row:hover,
.portal-ui .device-card-row:hover,
.portal-ui .alert-row:hover,
.portal-ui .alert-card-row:hover,
.portal-ui .exception-card-row:hover,
.portal-ui .dashboard-command-row:hover,
.portal-ui .dashboard-auto-row:hover {
  border-color: color-mix(in srgb, var(--portal-blue) 30%, var(--portal-line)) !important;
  background: color-mix(in srgb, var(--portal-blue) 4%, var(--portal-panel)) !important;
  transform: none !important;
}

.portal-ui .table-responsive {
  border: 1px solid var(--portal-line);
  border-radius: .72rem;
}

.portal-ui .table-responsive > .table {
  margin-bottom: 0;
  border: 0;
}

.portal-ui .table,
.portal-ui .table-modern,
.portal-ui .data-table,
.portal-ui .alerts-table {
  --bs-table-bg: transparent;
  --bs-table-color: var(--portal-ink);
  --bs-table-border-color: color-mix(in srgb, var(--portal-line) 72%, transparent);
  background: transparent;
}

.portal-ui .table thead th,
.portal-ui .table-modern thead th,
.portal-ui .data-table th,
.portal-ui .alerts-table th {
  padding: .68rem .78rem;
  border-bottom-width: 1px;
  background: color-mix(in srgb, var(--portal-panel-soft) 60%, var(--portal-panel));
  color: var(--portal-muted);
  font-size: .68rem;
  font-weight: 800;
  letter-spacing: .045em;
  text-transform: uppercase;
  white-space: nowrap;
}

.portal-ui .table tbody td,
.portal-ui .table-modern tbody td,
.portal-ui .data-table td,
.portal-ui .alerts-table td {
  padding: .78rem;
  vertical-align: middle;
}

.portal-ui .table tbody tr,
.portal-ui .table-modern tbody tr,
.portal-ui .data-table tbody tr,
.portal-ui .alerts-table tbody tr {
  transition: background-color .14s ease;
}

.portal-ui .table tbody tr:hover,
.portal-ui .table-modern tbody tr:hover,
.portal-ui .data-table tbody tr:hover,
.portal-ui .alerts-table tbody tr:hover {
  background: color-mix(in srgb, var(--portal-blue) 4%, transparent);
}

.portal-ui .form-label,
.portal-ui .nprotect-field-label {
  color: var(--portal-muted);
  font-size: .72rem;
  font-weight: 740;
}

.portal-ui .form-control,
.portal-ui .form-select,
.portal-ui .input-group-text {
  border-color: var(--portal-line);
  border-radius: .58rem;
  background-color: var(--portal-panel);
  color: var(--portal-ink);
  box-shadow: none !important;
}

.portal-ui .form-control:focus,
.portal-ui .form-select:focus {
  border-color: var(--portal-blue);
  box-shadow: 0 0 0 .2rem color-mix(in srgb, var(--portal-blue) 14%, transparent) !important;
}

.portal-ui .btn {
  border-radius: .56rem;
  font-weight: 680;
  box-shadow: none !important;
  transform: none !important;
}

.portal-ui .btn-primary {
  border-color: var(--portal-blue);
  background: var(--portal-blue);
}

.portal-ui .btn-outline-primary {
  border-color: color-mix(in srgb, var(--portal-blue) 42%, var(--portal-line));
  color: var(--portal-blue);
}

.portal-ui .btn-outline-primary:hover,
.portal-ui .btn-outline-primary:focus {
  border-color: var(--portal-blue);
  background: var(--portal-blue);
  color: #fff;
}

.portal-ui .badge,
.portal-ui .status-pill,
.portal-ui .activity-status-pill,
.portal-ui .portal-pill,
.portal-ui .row-pill,
.portal-ui .metric-mini,
.portal-ui .workspace-kpis span,
.portal-ui .workspace-kpi-button {
  border-color: var(--portal-line);
  border-radius: 999px;
  box-shadow: none;
}

.portal-ui .nav-tabs {
  gap: .2rem;
  padding: .25rem;
  border: 1px solid var(--portal-line);
  border-radius: .72rem;
  background: var(--portal-panel-soft);
}

.portal-ui .nav-tabs .nav-link {
  border: 0;
  border-radius: .5rem;
  color: var(--portal-muted);
  font-size: .8rem;
  font-weight: 680;
}

.portal-ui .nav-tabs .nav-link:hover {
  color: var(--portal-blue);
  background: var(--portal-panel);
}

.portal-ui .nav-tabs .nav-link.active {
  background: var(--portal-blue);
  color: #fff;
  box-shadow: 0 .18rem .48rem color-mix(in srgb, var(--portal-blue) 22%, transparent);
}

.portal-ui .alert {
  border-radius: .7rem;
  box-shadow: 0 .2rem .7rem rgba(15, 23, 42, .035);
}

.portal-ui .alerts-pagination-bar,
.portal-ui .table-pagination-controls {
  border-color: var(--portal-line);
  background: color-mix(in srgb, var(--portal-panel-soft) 55%, var(--portal-panel));
}

.portal-ui .alerts-page-link,
.portal-ui .page-link {
  border-color: var(--portal-line);
  border-radius: .48rem;
  color: var(--portal-blue);
  background: var(--portal-panel);
}

.portal-ui .alerts-page-link.is-active,
.portal-ui .page-item.active .page-link {
  border-color: var(--portal-blue);
  background: var(--portal-blue);
  color: #fff;
}

.portal-ui .modal-content,
.portal-ui .dropdown-menu,
.portal-ui .offcanvas {
  border-color: var(--portal-line);
  border-radius: .8rem;
  background: var(--portal-panel);
  color: var(--portal-ink);
  box-shadow: 0 1rem 2.5rem rgba(15, 23, 42, .16);
}

.portal-ui .modal-header,
.portal-ui .modal-footer,
.portal-ui .dropdown-divider {
  border-color: var(--portal-line);
}

@media (max-width: 767.98px) {
  .portal-ui .page-heading,
  .portal-ui .page-header {
    padding: 1.05rem;
  }

  .portal-ui .page-actions {
    width: 100%;
  }

  .portal-ui .page-actions .btn {
    flex: 1 1 auto;
  }

  .portal-ui .workspace-head,
  .portal-ui .data-section-head {
    align-items: flex-start;
  }
}

@media (prefers-reduced-motion: reduce) {
  .portal-ui *,
  .portal-ui *::before,
  .portal-ui *::after {
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
  }
}
