/* Kerep contrast contract. Loaded last so legacy view styles cannot weaken it. */
:root {
  color-scheme: light;
  --kerep-page: #f4f7f9;
  --kerep-surface: #ffffff;
  --kerep-surface-soft: #f8fafc;
  --kerep-surface-raised: #ffffff;
  --kerep-border-subtle: rgba(148, 163, 184, 0.15);
  --kerep-border: rgba(148, 163, 184, 0.22);
  --kerep-border-strong: rgba(10, 95, 143, 0.35);
  --kerep-focus: #0ea5e9;
  --kerep-focus-ring: rgba(14, 165, 233, 0.2);
  --kerep-logo-plate: #f4f8f9;

  --ga-page-bg: var(--kerep-page);
  --ga-card-bg: var(--kerep-surface);
  --ga-surface: var(--kerep-surface);
  --ga-surface-raised: var(--kerep-surface-raised);
  --ga-surface-soft: var(--kerep-surface-soft);
  --ga-border-light: var(--kerep-border-subtle);
  --ga-border: var(--kerep-border);
  --ga-card-border: var(--kerep-border);
  --ga-erp-control-border: var(--kerep-border-strong);
  --ga-glass-border: var(--kerep-border);
  --kerep-table-border: var(--kerep-border);
  --kerep-table-border-strong: var(--kerep-border-strong);
}

[data-theme="dark"] {
  color-scheme: dark;
  --kerep-page: #091827;
  --kerep-surface: #0f172a;
  --kerep-surface-soft: #17263b;
  --kerep-surface-raised: #1e293b;
  --kerep-border-subtle: rgba(255, 255, 255, 0.08);
  --kerep-border: rgba(14, 165, 233, 0.18);
  --kerep-border-strong: rgba(14, 165, 233, 0.35);
  --kerep-focus: #0ea5e9;
  --kerep-focus-ring: rgba(14, 165, 233, 0.3);
  --kerep-logo-plate: #17263b;

  --ga-page-bg: var(--kerep-page);
  --ga-card-bg: var(--kerep-surface);
  --ga-surface: var(--kerep-surface);
  --ga-surface-raised: var(--kerep-surface-raised);
  --ga-surface-soft: var(--kerep-surface-soft);
  --ga-surface-tint: #1e293b;
  --ga-border-light: var(--kerep-border-subtle);
  --ga-border: var(--kerep-border);
  --ga-card-border: var(--kerep-border);
  --ga-erp-control-border: var(--kerep-border-strong);
  --ga-glass-border: var(--kerep-border);
  --kerep-table-surface: var(--kerep-surface);
  --kerep-table-soft: var(--kerep-surface-soft);
  --kerep-table-border: var(--kerep-border);
  --kerep-table-border-strong: var(--kerep-border-strong);
}

/* Reglas de Alto Contraste de Texto en Modo Oscuro (Móvil y Web) */
[data-theme="dark"] {
  --tblr-body-color: #f8fafc;
  --tblr-muted: #94a3b8;
  --tblr-body-color-rgb: 248, 250, 252;
}

[data-theme="dark"] .text-muted,
[data-theme="dark"] .text-secondary,
[data-theme="dark"] .text-hint,
[data-theme="dark"] .form-text,
[data-theme="dark"] .card-subtitle,
[data-theme="dark"] .ga-stat-label,
[data-theme="dark"] .ga-mobile-card-label,
[data-theme="dark"] .ga-filter-label,
[data-theme="dark"] .ga-table-subtitle,
[data-theme="dark"] small,
[data-theme="dark"] .small {
  color: #94a3b8 !important;
  opacity: 1 !important;
}

[data-theme="dark"] .form-label,
[data-theme="dark"] label,
[data-theme="dark"] th,
[data-theme="dark"] .table th,
[data-theme="dark"] .ga-stat-value,
[data-theme="dark"] .ga-mobile-card-value,
[data-theme="dark"] .card-title,
[data-theme="dark"] h1,
[data-theme="dark"] h2,
[data-theme="dark"] h3,
[data-theme="dark"] h4,
[data-theme="dark"] h5,
[data-theme="dark"] h6 {
  color: #f8fafc !important;
  opacity: 1 !important;
}

[data-theme="dark"] .opacity-75,
[data-theme="dark"] .opacity-50,
[data-theme="dark"] .opacity-35,
[data-theme="dark"] .opacity-25 {
  opacity: 0.9 !important;
}

/* Primary surfaces: visible separation without heavy shadows. */
.page-body .card:not(.border-0),
.page-body .dpanel,
.page-body .ga-access-command,
.page-body .ga-form-section,
.page-body .ga-profile-summary,
.page-body .ga-detail-item,
.page-body .ga-access-metric-card,
.page-body .ga-stat-card,
.dropdown-menu,
.modal-content,
.ga-admin-modal .modal-content,
.list-group-item {
  border-color: var(--kerep-border) !important;
}

.page-body .card-header,
.page-body .card-footer,
.dpanel-head,
.modal-header,
.modal-footer,
.ga-admin-modal .modal-header,
.ga-admin-form .modal-footer,
.list-group-item + .list-group-item {
  border-color: var(--kerep-border-subtle) !important;
}

.page-body .card:not(.border-0):hover,
.page-body .dpanel:hover,
.dropdown-menu,
.modal-content {
  box-shadow: 0 5px 18px rgba(24, 45, 54, 0.08) !important;
}

[data-theme="dark"] .page-body .card,
[data-theme="dark"] .page-body .dpanel,
[data-theme="dark"] .dropdown-menu,
[data-theme="dark"] .modal-content,
[data-theme="dark"] .ga-admin-modal .modal-content,
[data-theme="dark"] .list-group-item {
  background-color: var(--kerep-surface) !important;
}

/* Controls need a stronger edge than passive cards. */
.form-control,
.form-select,
.input-group-text,
.choices__inner,
.ga-search-box,
.ga-filter-toggle,
.ga-filter-clear-btn,
.btn-outline-secondary,
.btn-ghost-secondary,
.ga-row-action-btn,
.ga-mobile-card-menu-btn,
.ga-mobile-card-quick-action,
.page-link,
.nav-tabs .nav-link {
  border-color: var(--kerep-border-strong) !important;
}

.form-control:hover,
.form-select:hover,
.ga-search-box:hover,
.btn-outline-secondary:hover,
.btn-ghost-secondary:hover,
.ga-row-action-btn:hover {
  border-color: color-mix(in srgb, var(--kerep-focus) 52%, var(--kerep-border-strong)) !important;
}

[data-theme="dark"] .form-control,
[data-theme="dark"] .form-select,
[data-theme="dark"] .input-group-text,
[data-theme="dark"] .choices__inner,
[data-theme="dark"] .ga-search-box,
[data-theme="dark"] .ga-filter-toggle,
[data-theme="dark"] .ga-filter-clear-btn,
[data-theme="dark"] .btn-outline-secondary,
[data-theme="dark"] .btn-ghost-secondary,
[data-theme="dark"] .ga-row-action-btn,
[data-theme="dark"] .page-link {
  border-color: var(--kerep-border-strong) !important;
  background-color: var(--kerep-surface-soft) !important;
}

.form-control:focus,
.form-select:focus,
.choices.is-focused .choices__inner,
.ga-search-box:focus-within {
  border-color: var(--kerep-focus) !important;
  box-shadow: 0 0 0 3px var(--kerep-focus-ring) !important;
  outline: 0;
}

:where(a, button, input, select, textarea, [tabindex]):focus-visible {
  outline: 2px solid var(--kerep-focus) !important;
  outline-offset: 2px;
}

/* Table hierarchy: shell, header, rows and pager remain distinguishable. */
.page-body .kerep-table-pattern:has(> .ga-table-header) {
  border: 1px solid var(--kerep-border) !important;
}

html body .page-body .ga-table-card.kerep-table-pattern:has(> .ga-table-header) {
  border: 1px solid var(--kerep-border) !important;
  background: var(--kerep-surface) !important;
}

.kerep-table-pattern:has(> .ga-table-header) > .ga-table-header,
.kerep-table-pattern:has(> .ga-table-header) > .ga-stats-grid,
.kerep-table-pattern:has(> .ga-table-header) > .ga-table-toolbar,
.kerep-table-pattern .ga-table-footer,
.kerep-table-pattern .enhanced-table-footer {
  border-color: var(--kerep-border-subtle) !important;
}

.kerep-table-pattern .ga-table-body-wrap,
.kerep-table-pattern > .table-responsive,
[data-kerep-table] > .table-responsive {
  border: 1px solid var(--kerep-border) !important;
}

@media (min-width: 992px) {
  .kerep-table-pattern:has(> .ga-table-header) .ga-table-body-wrap,
  .kerep-table-pattern:has(> .ga-table-header) > .table-responsive {
    border: solid var(--kerep-border-subtle) !important;
    border-width: 1px 0 0 !important;
  }
}

.page-body .kerep-table-pattern .ga-table > tbody > tr > td,
.page-body [data-kerep-table] .table > tbody > tr > td,
.kerep-table-pattern table > :not(caption) > * > *,
[data-kerep-table] table > :not(caption) > * > * {
  border-bottom-color: var(--kerep-border-subtle) !important;
}

[data-theme="dark"] .kerep-table-pattern thead th,
[data-theme="dark"] [data-kerep-table] thead th {
  background: var(--kerep-surface-soft) !important;
}

/* Brand marks and tenant images keep a readable silhouette in both themes. */
.ga-sidebar-brand-icon {
  border: 1px solid var(--kerep-border-strong) !important;
  background: var(--kerep-logo-plate) !important;
  box-shadow: 0 3px 12px rgba(0, 0, 0, 0.2) !important;
}

.ga-portal-brand-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  flex: 0 0 34px;
  border: 1px solid var(--kerep-border-strong);
  border-radius: 0.55rem;
  background: var(--kerep-logo-plate);
  color: #0f6f83;
}

.ga-sidebar-brand-icon .kerep-mark path:first-of-type {
  stroke: #0f6f83 !important;
  opacity: 0.42 !important;
}

.ga-sidebar-brand-icon .kerep-mark path:last-of-type {
  stroke: url(#brand-grad) !important;
  opacity: 1 !important;
}

.kerep-tenant-logo,
.ga-sidebar-logo-img,
.login-brand-logo-img,
.navbar-portal .navbar-brand img {
  box-sizing: content-box;
  padding: 0.28rem 0.4rem;
  border: 1px solid var(--kerep-border-strong);
  border-radius: 0.5rem;
  background: var(--kerep-logo-plate);
  filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.42));
}

[data-theme="dark"] .login-mobile-brand .kerep-mark,
[data-theme="dark"] .login-brand-mark.kerep-mark,
[data-theme="dark"] .ga-portal-brand-mark {
  filter: drop-shadow(0 0 6px rgba(56, 189, 248, 0.35));
}

@media (prefers-contrast: more) {
  :root {
    --kerep-border-subtle: #bccbd1;
    --kerep-border: #9dafb7;
    --kerep-border-strong: #7f959f;
  }

  [data-theme="dark"] {
    --kerep-border-subtle: #52636c;
    --kerep-border: #667983;
    --kerep-border-strong: #7f929c;
  }
}

/* Count-aware KPI grids. Exact desktop columns prevent orphaned metric cards. */
.page-body :is(.ga-access-metrics, .ga-stats-grid, .ga-dashboard-metrics, .ga-legacy-metrics, .ga-progress-metrics) {
  display: grid !important;
  width: 100% !important;
  align-items: stretch !important;
  justify-content: stretch !important;
  grid-auto-flow: row !important;
}

.page-body :is(.ga-access-metric-card, .ga-stat-card, .dkpi),
.page-body .ga-legacy-metrics > *,
.page-body .ga-progress-metrics > * {
  min-width: 0 !important;
  max-width: none !important;
  width: auto !important;
}

@media (min-width: 1200px) {
  .page-body :is(.ga-access-metrics-1, .ga-stats-grid-1) { grid-template-columns: minmax(0, 1fr) !important; }
  .page-body :is(.ga-access-metrics-2, .ga-stats-grid-2, .ga-progress-metrics-2) { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  .page-body :is(.ga-access-metrics-3, .ga-stats-grid-3, .ga-legacy-metrics-3) { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
  .page-body :is(.ga-access-metrics-4, .ga-stats-grid-4, .ga-legacy-metrics-4) { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }
  .page-body :is(.ga-access-metrics-5, .ga-stats-grid-5, .ga-dashboard-metrics-5, .ga-legacy-metrics-5) { grid-template-columns: repeat(5, minmax(0, 1fr)) !important; }
  .page-body :is(.ga-access-metrics-6, .ga-stats-grid-6) { grid-template-columns: repeat(6, minmax(0, 1fr)) !important; }
}

@media (min-width: 768px) and (max-width: 1199.98px) {
  .page-body :is(.ga-access-metrics-1, .ga-stats-grid-1) { grid-template-columns: minmax(0, 1fr) !important; }
  .page-body :is(.ga-access-metrics-2, .ga-stats-grid-2, .ga-progress-metrics-2, .ga-access-metrics-4, .ga-stats-grid-4, .ga-legacy-metrics-4) { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  .page-body :is(.ga-access-metrics-3, .ga-stats-grid-3, .ga-legacy-metrics-3, .ga-access-metrics-5, .ga-stats-grid-5, .ga-dashboard-metrics-5, .ga-legacy-metrics-5, .ga-access-metrics-6, .ga-stats-grid-6) { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
}

@media (min-width: 576px) and (max-width: 767.98px) {
  .page-body :is(.ga-access-metrics, .ga-stats-grid, .ga-dashboard-metrics, .ga-legacy-metrics, .ga-progress-metrics) {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  .page-body :is(.ga-access-metrics, .ga-stats-grid, .ga-dashboard-metrics, .ga-legacy-metrics) > :last-child:nth-child(odd) {
    grid-column: 1 / -1;
  }
}

@media (max-width: 575.98px) {
  .page-body :is(.ga-access-metrics, .ga-stats-grid, .ga-dashboard-metrics, .ga-legacy-metrics, .ga-progress-metrics) {
    grid-template-columns: minmax(0, 1fr) !important;
  }
}

/* Personas: approved operational-directory composition. */
.persons-directory-page {
  display: grid;
  gap: 1rem;
}

.persons-directory-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.persons-directory-heading__main {
  display: flex;
  align-items: center;
  gap: 0.8rem;
  min-width: 0;
}

.persons-directory-heading__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  flex: 0 0 44px;
  border: 1px solid var(--kerep-border);
  border-radius: 12px;
  background: linear-gradient(145deg, var(--kerep-surface), rgba(var(--tblr-primary-rgb), 0.1));
  color: var(--tblr-primary);
  box-shadow: 0 5px 14px rgba(18, 55, 68, 0.06);
}

.persons-directory-heading__icon i {
  font-size: 1.35rem;
}

.persons-directory-heading h1 {
  margin: 0;
  color: var(--kerep-table-ink);
  font-size: clamp(1.35rem, 2vw, 1.62rem);
  font-weight: 750;
  letter-spacing: -0.035em;
  line-height: 1.08;
}

.persons-directory-heading p {
  margin: 0.28rem 0 0;
  color: var(--kerep-table-muted);
  font-size: 0.82rem;
}

.persons-directory-heading__status {
  display: inline-flex;
  align-items: center;
  gap: 0.48rem;
  padding: 0.42rem 0.68rem;
  border: 1px solid var(--kerep-border);
  border-radius: 999px;
  background: var(--kerep-surface);
  color: var(--kerep-table-muted);
  font-size: 0.72rem;
  font-weight: 700;
  white-space: nowrap;
}

.persons-directory-heading__status::before {
  content: "";
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #14a980;
  box-shadow: 0 0 0 4px rgba(20, 169, 128, 0.12);
}

.page-body .persons-directory-page .kerep-table-pattern {
  overflow: hidden !important;
  border: 1px solid var(--kerep-border) !important;
  border-radius: 16px !important;
  background: var(--kerep-surface) !important;
  box-shadow: 0 16px 38px rgba(22, 54, 65, 0.075) !important;
}

.page-body .persons-directory-page .kerep-table-pattern > .ga-stats-grid {
  display: grid !important;
  gap: 0.75rem !important;
  margin: 0 !important;
  padding: 0.85rem 1rem !important;
  overflow: visible !important;
  border: 0 !important;
  border-bottom: 1px solid var(--kerep-border) !important;
  border-radius: 0 !important;
  background: var(--kerep-surface-soft) !important;
}

.page-body .persons-directory-page .kerep-table-pattern > .ga-stats-grid > .ga-stat-card {
  position: relative;
  display: grid !important;
  grid-template-columns: 38px minmax(0, 1fr);
  align-items: center;
  gap: 0.7rem;
  min-height: 88px !important;
  margin: 0 !important;
  padding: 0.85rem 1rem !important;
  overflow: hidden;
  border: 1px solid var(--kerep-border) !important;
  border-radius: 13px !important;
  background: var(--kerep-surface) !important;
  box-shadow: 0 5px 14px rgba(22, 54, 65, 0.045) !important;
  transition: transform 0.16s ease, border-color 0.16s ease, box-shadow 0.16s ease;
}

.page-body .persons-directory-page .ga-stat-card:hover {
  border-color: var(--kerep-border-strong) !important;
  transform: translateY(-1px);
  box-shadow: 0 8px 18px rgba(22, 54, 65, 0.07) !important;
}

.persons-directory-page .ga-stat-card__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: 11px;
  color: var(--tblr-primary);
  background: rgba(var(--tblr-primary-rgb), 0.1);
}

.persons-directory-page .ga-stat-card__icon i {
  font-size: 1.08rem;
}

.persons-directory-page .ga-stat-card:nth-child(2) .ga-stat-card__icon {
  color: #14805f;
  background: rgba(20, 169, 128, 0.12);
}

.persons-directory-page .ga-stat-card:nth-child(3) .ga-stat-card__icon {
  color: #bc3649;
  background: rgba(188, 54, 73, 0.1);
}

.persons-directory-page .ga-stat-card:nth-child(4) .ga-stat-card__icon {
  color: #a86c0c;
  background: rgba(224, 160, 35, 0.14);
}

.persons-directory-page .ga-stat-card__content {
  min-width: 0;
}

.page-body .persons-directory-page .ga-stat-card__label {
  margin: 0 0 0.1rem !important;
  font-size: 0.72rem !important;
  font-weight: 700 !important;
}

.page-body .persons-directory-page .ga-stat-card__value {
  display: inline;
  margin-right: 0.32rem;
  font-size: 1.52rem !important;
  line-height: 1 !important;
}

.page-body .persons-directory-page .ga-stat-card__delta {
  display: inline;
  color: var(--kerep-table-muted) !important;
  font-size: 0.68rem !important;
  white-space: normal;
}

.persons-directory-page .ga-stat-card::after {
  content: "";
  position: absolute;
  inset: auto 1rem 0;
  height: 3px;
  border-radius: 3px 3px 0 0;
  background: var(--tblr-primary);
}

.persons-directory-page .ga-stat-card:nth-child(2)::after { background: #14a980; }
.persons-directory-page .ga-stat-card:nth-child(3)::after { background: #bc3649; }
.persons-directory-page .ga-stat-card:nth-child(4)::after { background: #d79a24; }

.page-body .persons-directory-page .kerep-table-pattern > .ga-table-toolbar {
  min-height: 66px;
  margin: 0 !important;
  padding: 0.62rem 1rem !important;
  border: 0 !important;
  border-bottom: 1px solid var(--kerep-border) !important;
  background: var(--kerep-surface) !important;
}

.persons-directory-page .ga-table-toolbar .ga-toolbar-left {
  min-width: min(100%, 360px);
}

.persons-directory-page .ga-table-toolbar .ga-toolbar-search {
  max-width: none !important;
  flex: 1 1 320px !important;
}

.persons-directory-page .ga-table-toolbar .ga-toolbar-actions {
  flex: 0 0 auto;
}

.persons-directory-page .ga-filter-panel.open,
.persons-directory-page .ga-active-filters-bar,
.persons-directory-page .ga-bulk-bar {
  margin: 0 !important;
  border-width: 0 0 1px !important;
  border-radius: 0 !important;
}

.persons-directory-page .ga-table-body-wrap,
.persons-directory-page .table-responsive {
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}

.persons-directory-page .enhanced-table-footer {
  margin: 0 !important;
  padding-inline: 1rem !important;
  border-width: 1px 0 0 !important;
  border-radius: 0 !important;
  background: var(--kerep-surface) !important;
  box-shadow: none !important;
}

[data-theme="dark"] .page-body .persons-directory-page .kerep-table-pattern {
  box-shadow: 0 18px 42px rgba(0, 0, 0, 0.22) !important;
}

[data-theme="dark"] .persons-directory-page .ga-stat-card:nth-child(2) .ga-stat-card__icon { color: #62d9b5; }
[data-theme="dark"] .persons-directory-page .ga-stat-card:nth-child(3) .ga-stat-card__icon { color: #ff8798; }
[data-theme="dark"] .persons-directory-page .ga-stat-card:nth-child(4) .ga-stat-card__icon { color: #f1bb55; }

@media (max-width: 991.98px) {
  .persons-directory-page .ga-table-toolbar .ga-toolbar-actions {
    width: 100%;
    justify-content: flex-start;
  }
}

@media (max-width: 575.98px) {
  .persons-directory-heading p,
  .persons-directory-heading__status {
    display: none;
  }

  .page-body .persons-directory-page .kerep-table-pattern > .ga-stats-grid {
    padding: 0.75rem !important;
  }

  .page-body .persons-directory-page .kerep-table-pattern > .ga-stats-grid > .ga-stat-card {
    min-height: 76px !important;
  }
}
