/* ============================================================
   GPS Laboral — Portal de Clientes
   Estilos soft-luxury unificados con el tema Twenty Twenty-Five.
   Tokens semánticos de superficies, tipografía y soporte Dark Mode.
   ============================================================ */

:root {
  /* Marca & Acentos - Soft Luxury GPS Laboral */
  --gps-p-primary: var(--gps-accent-primary, #203952);
  --gps-p-primary-hover: var(--gps-accent-hover, #172A3C);
  --gps-p-accent: var(--gps-accent-gold, #B89558);
  --gps-p-accent-hover: #9E7D43;
  --gps-p-accent-subtle: var(--gps-accent-subtle, rgba(32, 57, 82, 0.08));
  --gps-p-accent-focus: var(--gps-accent-focus, rgba(32, 57, 82, 0.18));

  /* Superficies (Light Mode - Alabastro y marfil) */
  --gps-p-bg: var(--gps-surface-base, #FAF9F6);
  --gps-p-card: var(--gps-surface-raised, #FFFFFF);
  --gps-p-sunken: var(--gps-surface-sunken, #F2EFEB);
  --gps-p-border: var(--gps-border-subtle, #E7E3DC);
  --gps-p-border-strong: var(--gps-border-strong, #CEC7BC);
  --gps-p-border-hairline: var(--gps-border-hairline, rgba(26, 24, 32, 0.08));

  /* Textos */
  --gps-p-text-main: var(--gps-text-main, #1A1820);
  --gps-p-text-muted: var(--gps-text-muted, #666170);
  --gps-p-text-faint: var(--gps-text-faint, #9893A0);
  --gps-p-text-on-accent: var(--gps-text-on-accent, #FFFFFF);

  /* Tipografía */
  --gps-p-font: var(--wp--preset--font-family--manrope, "Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);

  /* Sombras y Radios */
  --gps-p-radius: 12px;
  --gps-p-radius-sm: 8px;
  --gps-p-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.04);
  --gps-p-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);
}

/* Modo oscuro explícito */
[data-theme="dark"] {
  --gps-p-primary: var(--gps-accent-primary, #F7F7F7);
  --gps-p-primary-hover: var(--gps-accent-hover, #FFFFFF);
  --gps-p-accent: var(--gps-accent-gold, #D4B276);
  --gps-p-accent-hover: #E5C78E;
  --gps-p-accent-subtle: var(--gps-accent-subtle, rgba(247, 247, 247, 0.1));
  --gps-p-accent-focus: rgba(247, 247, 247, 0.25);

  --gps-p-bg: var(--gps-surface-base, #0F0E14);
  --gps-p-card: var(--gps-surface-raised, #1A1820);
  --gps-p-sunken: var(--gps-surface-sunken, #14131A);
  --gps-p-border: var(--gps-border-subtle, #23212A);
  --gps-p-border-strong: var(--gps-border-strong, #332F3D);
  --gps-p-border-hairline: var(--gps-border-hairline, rgba(244, 242, 235, 0.08));

  --gps-p-text-main: var(--gps-text-main, #F4F2EB);
  --gps-p-text-muted: var(--gps-text-muted, #A8A3B2);
  --gps-p-text-faint: var(--gps-text-faint, #6E6978);
  --gps-p-text-on-accent: var(--gps-text-on-accent, #172A3C);
  --gps-p-shadow: 0 4px 20px rgba(0, 0, 0, 0.45);
}

/* Modo oscuro por preferencia de sistema (si no se ha fijado tema claro) */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --gps-p-primary: var(--gps-accent-primary, #F7F7F7);
    --gps-p-primary-hover: var(--gps-accent-hover, #FFFFFF);
    --gps-p-accent: var(--gps-accent-gold, #D4B276);
    --gps-p-accent-hover: #E5C78E;
    --gps-p-accent-subtle: var(--gps-accent-subtle, rgba(247, 247, 247, 0.1));
    --gps-p-accent-focus: rgba(247, 247, 247, 0.25);

    --gps-p-bg: var(--gps-surface-base, #0F0E14);
    --gps-p-card: var(--gps-surface-raised, #1A1820);
    --gps-p-sunken: var(--gps-surface-sunken, #14131A);
    --gps-p-border: var(--gps-border-subtle, #23212A);
    --gps-p-border-strong: var(--gps-border-strong, #332F3D);
    --gps-p-border-hairline: var(--gps-border-hairline, rgba(244, 242, 235, 0.08));

    --gps-p-text-main: var(--gps-text-main, #F4F2EB);
    --gps-p-text-muted: var(--gps-text-muted, #A8A3B2);
    --gps-p-text-faint: var(--gps-text-faint, #6E6978);
    --gps-p-text-on-accent: var(--gps-text-on-accent, #172A3C);
    --gps-p-shadow: 0 4px 20px rgba(0, 0, 0, 0.45);
  }
}

/* ─── Base del Portal ─── */

body.gps-portal {
  font-family: var(--gps-p-font, "Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);
  background: var(--gps-p-bg, #FAF9F6);
  color: var(--gps-p-text-main, #1A1820);
  margin: 0;
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  transition: background-color 0.25s ease, color 0.25s ease;
}

body.gps-portal--dashboard,
body.gps-portal--informe {
  display: block;
  padding: 0;
}

body.gps-modal-open {
  overflow: hidden;
}

/* ─── Tarjeta de Login / Reset ─── */

.gps-portal-card {
  background: var(--gps-p-card, #FFFFFF);
  border: 1px solid var(--gps-p-border, #E7E3DC);
  border-radius: var(--gps-p-radius, 12px);
  box-shadow: var(--gps-p-shadow, 0 4px 20px rgba(0, 0, 0, 0.05));
  padding: 36px 32px;
  max-width: 440px;
  width: 100%;
  box-sizing: border-box;
  transition: background-color 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;
}

.gps-portal-card h1 {
  margin: 0 0 6px;
  font-size: 22px;
  color: var(--gps-p-text-main, #1A1820);
  font-weight: 700;
  letter-spacing: -0.015em;
  font-family: inherit;
}

.gps-portal-subtitle {
  margin: 0 0 24px;
  color: var(--gps-p-text-muted, #666170);
  font-size: 14px;
  line-height: 1.5;
}

.gps-portal-success {
  background: #dcfce7;
  border: 1px solid #86efac;
  color: #15803d;
  padding: 10px 14px;
  margin-bottom: 16px;
  font-size: 14px;
  border-radius: 8px;
}

.gps-portal-error {
  background: #fee2e2;
  border-left: 3px solid #b91c1c;
  padding: 10px 14px;
  margin-bottom: 16px;
  color: #b91c1c;
  font-size: 13px;
  border-radius: 6px;
}

[data-theme="dark"] .gps-portal-error {
  background: rgba(239, 68, 68, 0.15);
  border-left-color: #ef4444;
  color: #fca5a5;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .gps-portal-error {
    background: rgba(239, 68, 68, 0.15);
    border-left-color: #ef4444;
    color: #fca5a5;
  }
}

.gps-portal-help {
  margin: 20px 0 0;
  font-size: 12px;
  color: var(--gps-p-text-muted, #666170);
  text-align: center;
}

.gps-portal-help a {
  color: var(--gps-p-primary, #203952);
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* ─── Quickaccess Admin Banner en Login ─── */
.gps-portal-admin-quickaccess {
  background: var(--gps-p-sunken, #F2EFEB) !important;
  border: 1px solid var(--gps-p-border, #E7E3DC) !important;
  color: var(--gps-p-text-main, #1A1820) !important;
  border-radius: 8px !important;
}

.gps-portal-admin-quickaccess select {
  background: var(--gps-p-card, #FFFFFF) !important;
  border: 1px solid var(--gps-p-border, #E7E3DC) !important;
  color: var(--gps-p-text-main, #1A1820) !important;
}

/* ─── Formularios del Portal ─── */

.gps-portal-form label {
  display: block;
  margin-bottom: 16px;
  font-size: 13px;
  font-weight: 600;
  color: var(--gps-p-text-main, #1A1820);
}

.gps-portal-form input,
.gps-portal-form textarea {
  display: block;
  width: 100%;
  padding: 11px 14px;
  margin-top: 6px;
  font-size: 15px;
  border: 1px solid var(--gps-p-border, #E7E3DC);
  border-radius: 8px;
  box-sizing: border-box;
  font-family: inherit;
  color: var(--gps-p-text-main, #1A1820);
  background: var(--gps-p-card, #FFFFFF);
  transition: border-color 0.15s ease, box-shadow 0.15s ease, background-color 0.25s ease, color 0.25s ease;
}

.gps-portal-form input:focus,
.gps-portal-form textarea:focus {
  border-color: var(--gps-p-primary, #203952);
  box-shadow: 0 0 0 3px var(--gps-p-accent-focus, rgba(32, 57, 82, 0.15));
  outline: 2px solid transparent;
}

/* ─── Botones ─── */

.gps-portal-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  background: var(--gps-p-primary, #203952);
  color: var(--gps-p-text-on-accent, #FFFFFF) !important;
  padding: 10px 20px;
  border: 1px solid transparent;
  border-radius: 8px;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  text-decoration: none;
  text-align: center;
  font-family: inherit;
  transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
  line-height: 1.2;
}

.gps-portal-btn:hover {
  background: var(--gps-p-primary-hover, #172A3C);
  color: var(--gps-p-text-on-accent, #FFFFFF) !important;
}

.gps-portal-btn--primary {
  background: var(--gps-p-primary, #203952);
  color: var(--gps-p-text-on-accent, #FFFFFF) !important;
}

.gps-portal-btn--primary:hover {
  background: var(--gps-p-primary-hover, #172A3C);
}

.gps-portal-btn--secondary {
  background: transparent;
  color: var(--gps-p-primary, #203952) !important;
  border: 1px solid var(--gps-p-border-strong, #CEC7BC);
}

.gps-portal-btn--secondary:hover {
  background: var(--gps-p-sunken, #F2EFEB);
  border-color: var(--gps-p-primary, #203952);
  color: var(--gps-p-primary-hover, #172A3C) !important;
}

.gps-portal-btn--ghost {
  background: transparent;
  color: var(--gps-p-text-main, #1A1820) !important;
  border: 1px solid var(--gps-p-border-strong, #CEC7BC);
}

.gps-portal-btn--ghost:hover {
  background: var(--gps-p-sunken, #F2EFEB);
  border-color: var(--gps-p-accent, #B89558);
  color: var(--gps-p-accent, #B89558) !important;
}

.gps-portal-btn--small {
  padding: 6px 14px;
  font-size: 13px;
  border-radius: 6px;
}

.gps-portal-btn--danger {
  background: #dc2626 !important;
  color: #ffffff !important;
  border-color: transparent !important;
}

.gps-portal-btn--danger:hover {
  background: #b91c1c !important;
  color: #ffffff !important;
}

/* Modos oscuros para botones secundarios y ghost */
[data-theme="dark"] .gps-portal-btn--secondary,
[data-theme="dark"] .gps-portal-btn--ghost {
  background: transparent;
  color: var(--gps-p-text-main, #F4F2EB) !important;
  border-color: var(--gps-p-border-strong, #332F3D);
}

[data-theme="dark"] .gps-portal-btn--secondary:hover,
[data-theme="dark"] .gps-portal-btn--ghost:hover {
  background: var(--gps-p-sunken, #14131A);
  border-color: var(--gps-p-accent, #D4B276);
  color: var(--gps-p-accent, #D4B276) !important;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .gps-portal-btn--secondary,
  :root:not([data-theme="light"]) .gps-portal-btn--ghost {
    background: transparent;
    color: var(--gps-p-text-main, #F4F2EB) !important;
    border-color: var(--gps-p-border-strong, #332F3D);
  }

  :root:not([data-theme="light"]) .gps-portal-btn--secondary:hover,
  :root:not([data-theme="light"]) .gps-portal-btn--ghost:hover {
    background: var(--gps-p-sunken, #14131A);
    border-color: var(--gps-p-accent, #D4B276);
    color: var(--gps-p-accent, #D4B276) !important;
  }
}

/* ─── Admin Inspection Banner ─── */
.gps-portal-admin-banner {
  background: #1e293b;
  color: #f8fafc;
  border-radius: 8px;
  padding: 12px 18px;
  margin-bottom: 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
  font-size: 13px;
  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
  border: 1px solid rgba(59, 130, 246, 0.2);
  border-left: 4px solid #3b82f6;
}

[data-theme="dark"] .gps-portal-admin-banner {
  background: var(--gps-p-card, #1A1820);
  border-color: var(--gps-p-border, #23212A);
  border-left: 4px solid #3b82f6;
  color: var(--gps-p-text-main, #F4F2EB);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .gps-portal-admin-banner {
    background: var(--gps-p-card, #1A1820);
    border-color: var(--gps-p-border, #23212A);
    border-left: 4px solid #3b82f6;
    color: var(--gps-p-text-main, #F4F2EB);
  }
}

.gps-portal-admin-banner__info {
  display: flex;
  align-items: center;
  gap: 10px;
}

.gps-portal-admin-banner__icon {
  font-size: 18px;
  line-height: 1;
}

.gps-portal-admin-banner__title {
  color: #60a5fa;
  font-size: 13px;
}

.gps-portal-admin-banner__sep {
  color: #64748b;
  margin: 0 6px;
}

.gps-portal-admin-banner__empresa {
  color: #e2e8f0;
}

[data-theme="dark"] .gps-portal-admin-banner__empresa {
  color: var(--gps-p-text-main, #F4F2EB);
}

.gps-portal-admin-banner__empresa strong {
  color: #ffffff;
}

.gps-portal-admin-banner__sub {
  display: block;
  color: #94a3b8;
  font-size: 11px;
  margin-top: 2px;
}

[data-theme="dark"] .gps-portal-admin-banner__sub {
  color: var(--gps-p-text-muted, #A8A3B2);
}

.gps-portal-admin-banner__actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.gps-portal-admin-banner .gps-portal-btn--ghost {
  color: #93c5fd !important;
  border-color: #3b82f6;
  background: rgba(59, 130, 246, 0.1);
  text-decoration: none;
}

.gps-portal-admin-banner .gps-portal-btn--ghost:hover {
  background: rgba(59, 130, 246, 0.2);
  color: #bfdbfe !important;
  border-color: #60a5fa;
}

.gps-portal-admin-banner .gps-portal-btn--secondary {
  background: #334155;
  color: #f8fafc !important;
  border: 1px solid #475569;
  text-decoration: none;
  font-weight: 600;
}

.gps-portal-admin-banner .gps-portal-btn--secondary:hover {
  background: #475569;
  color: #ffffff !important;
}

[data-theme="dark"] .gps-portal-admin-banner .gps-portal-btn--secondary {
  background: var(--gps-p-sunken, #14131A);
  color: var(--gps-p-text-main, #F4F2EB) !important;
  border-color: var(--gps-p-border-strong, #332F3D);
}

[data-theme="dark"] .gps-portal-admin-banner .gps-portal-btn--secondary:hover {
  background: rgba(255, 255, 255, 0.08);
  border-color: var(--gps-p-accent, #D4B276);
  color: var(--gps-p-accent, #D4B276) !important;
}

/* ─── Login Quick Access (Admin) ─── */
.gps-portal-admin-quickaccess {
  background: #eff6ff;
  border: 1px solid #bfdbfe;
  border-radius: 8px;
  padding: 14px 16px;
  margin-bottom: 20px;
  font-size: 13px;
  text-align: left;
}

[data-theme="dark"] .gps-portal-admin-quickaccess {
  background: rgba(59, 130, 246, 0.12);
  border-color: rgba(59, 130, 246, 0.3);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .gps-portal-admin-quickaccess {
    background: rgba(59, 130, 246, 0.12);
    border-color: rgba(59, 130, 246, 0.3);
  }
}

.gps-portal-admin-quickaccess__title {
  font-weight: 700;
  color: #1e40af;
  margin-bottom: 6px;
  display: flex;
  align-items: center;
  gap: 6px;
}

[data-theme="dark"] .gps-portal-admin-quickaccess__title {
  color: #93c5fd;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .gps-portal-admin-quickaccess__title {
    color: #93c5fd;
  }
}

.gps-portal-admin-quickaccess__desc {
  margin: 0 0 10px 0;
  color: #475569;
  font-size: 12px;
  line-height: 1.4;
}

[data-theme="dark"] .gps-portal-admin-quickaccess__desc {
  color: var(--gps-p-text-muted, #A8A3B2);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .gps-portal-admin-quickaccess__desc {
    color: var(--gps-p-text-muted, #A8A3B2);
  }
}

.gps-portal-admin-quickaccess__form {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
}

.gps-portal-admin-quickaccess__select {
  flex: 1;
  min-width: 180px;
  padding: 8px 10px;
  font-size: 13px;
  border-radius: 6px;
  border: 1px solid #cbd5e1;
  background: #ffffff;
  color: #1e293b;
}

[data-theme="dark"] .gps-portal-admin-quickaccess__select {
  background: var(--gps-p-card, #1A1820);
  border-color: var(--gps-p-border-strong, #332F3D);
  color: var(--gps-p-text-main, #F4F2EB);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .gps-portal-admin-quickaccess__select {
    background: var(--gps-p-card, #1A1820);
    border-color: var(--gps-p-border-strong, #332F3D);
    color: var(--gps-p-text-main, #F4F2EB);
  }
}

/* ─── Dashboard / Informe: layout ─── */

.gps-portal-wrap {
  max-width: 1240px;
  margin: 0 auto;
  padding: 32px 24px;
  font-family: var(--gps-p-font, inherit);
}

.gps-portal-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 32px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--gps-p-border, #e2e8f0);
  gap: 16px;
  flex-wrap: wrap;
}

.gps-portal-header__brand {
  display: flex;
  align-items: center;
  gap: 14px;
  flex: 1;
  min-width: 200px;
}

.gps-portal-logo {
  max-height: 48px;
  max-width: 130px;
  width: auto;
  height: auto;
  object-fit: contain;
  transition: filter 0.25s ease;
}

/* Inversión sutil del logotipo de GPS Laboral en Dark Mode para alto contraste (solo para assets transparentes) */
[data-theme="dark"] .gps-portal-logo:not(.gps-portal-logo--client):not([src*="icono_con_fondo"]) {
  filter: brightness(0) invert(0.97);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .gps-portal-logo:not(.gps-portal-logo--client):not([src*="icono_con_fondo"]) {
    filter: brightness(0) invert(0.97);
  }
}

.gps-portal-logo--client {
  max-height: 56px;
  max-width: 160px;
}

.gps-portal-brand-title {
  font-size: 16px;
  font-weight: 600;
  color: var(--gps-p-primary, #203952);
  line-height: 1.3;
}

.gps-portal-header__welcome h1 {
  margin: 0;
  font-size: 24px;
  color: var(--gps-p-text-main, #1A1820);
  font-weight: 700;
  letter-spacing: -0.015em;
}

.gps-portal-header .gps-portal-subtitle {
  margin: 4px 0 0;
  color: var(--gps-p-text-muted, #666170);
}

.gps-portal-section {
  margin-top: 12px;
}

.gps-portal-section__title {
  margin: 0 0 18px;
  font-size: 20px;
  color: var(--gps-p-text-main, #1A1820);
  font-weight: 700;
  letter-spacing: -0.01em;
}

/* ─── Filtros ─── */

.gps-portal-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  background: var(--gps-p-card, #fff);
  padding: 18px 20px;
  border-radius: var(--gps-p-radius, 12px);
  border: 1px solid var(--gps-p-border, #E7E3DC);
  box-shadow: var(--gps-p-shadow-sm, 0 1px 3px rgba(0, 0, 0, 0.04));
  margin-bottom: 28px;
  align-items: flex-end;
  transition: background-color 0.25s ease, border-color 0.25s ease;
}

.gps-portal-filter {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 140px;
  flex: 0 1 auto;
  position: relative;
}

.gps-portal-filter.has-open-dropdown {
  z-index: 105;
}

.gps-portal-filter--search {
  flex: 1 1 240px;
  min-width: 200px;
}

.gps-portal-filter label {
  font-size: 11px;
  font-weight: 700;
  color: var(--gps-p-text-muted, #666170);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.gps-portal-filter select,
.gps-portal-filter input {
  padding: 8px 12px;
  font-size: 14px;
  border: 1px solid var(--gps-p-border, #E7E3DC);
  border-radius: 8px;
  background: var(--gps-p-card, #fff);
  color: var(--gps-p-text-main, #1A1820);
  font-family: inherit;
  height: 40px;
  box-sizing: border-box;
  transition: border-color 0.15s ease, box-shadow 0.15s ease, background-color 0.25s ease;
}

.gps-portal-filter select:focus,
.gps-portal-filter input:focus {
  border-color: var(--gps-p-primary, #203952);
  box-shadow: 0 0 0 3px var(--gps-p-accent-focus, rgba(32, 57, 82, 0.15));
  outline: none;
}

/* ─── Custom Select / Dropdown Accesible Integrado en Canvas ─── */
.gps-portal-filter select.gps-select--enhanced {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

.gps-custom-select {
  position: relative;
  width: 100%;
}

.gps-custom-select__trigger {
  width: 100%;
  height: 40px;
  padding: 8px 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  background: var(--gps-p-card, #fff);
  color: var(--gps-p-text-main, #1A1820);
  border: 1px solid var(--gps-p-border, #E7E3DC);
  border-radius: 8px;
  font-family: inherit;
  font-size: 14px;
  text-align: left;
  cursor: pointer;
  box-sizing: border-box;
  transition: border-color 0.15s ease, box-shadow 0.15s ease, background-color 0.25s ease;
}

.gps-custom-select__trigger:hover {
  border-color: var(--gps-p-border-strong, #CEC7BC);
}

.gps-custom-select__trigger:focus-visible,
.gps-custom-select.is-open .gps-custom-select__trigger {
  border-color: var(--gps-p-primary, #203952);
  box-shadow: 0 0 0 3px var(--gps-p-accent-focus, rgba(32, 57, 82, 0.15));
  outline: none;
}

.gps-custom-select__label {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 1 1 auto;
}

.gps-custom-select__arrow {
  flex: 0 0 16px;
  width: 16px;
  height: 16px;
  color: var(--gps-p-text-muted, #666170);
  transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1);
  pointer-events: none;
}

.gps-custom-select.is-open .gps-custom-select__arrow {
  transform: rotate(180deg);
}

.gps-custom-select__menu {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  min-width: 100%;
  max-height: 240px;
  overflow-y: auto;
  overscroll-behavior: contain;
  background: var(--gps-p-card, #fff);
  border: 1px solid var(--gps-p-border, #E7E3DC);
  border-radius: 8px;
  box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.12), 0 8px 10px -6px rgba(0, 0, 0, 0.04);
  list-style: none;
  margin: 0;
  padding: 4px;
  z-index: 100;
  display: none;
  box-sizing: border-box;
}

.gps-custom-select.is-open .gps-custom-select__menu {
  display: block;
  animation: gps-dropdown-fade 0.15s cubic-bezier(0.16, 1, 0.3, 1);
}

@keyframes gps-dropdown-fade {
  from {
    opacity: 0;
    transform: translateY(-4px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.gps-custom-select__option {
  padding: 8px 10px;
  font-size: 13.5px;
  color: var(--gps-p-text-main, #1A1820);
  border-radius: 6px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  transition: background-color 0.12s ease, color 0.12s ease;
  user-select: none;
}

.gps-custom-select__option:hover,
.gps-custom-select__option.is-highlighted {
  background: var(--gps-p-sunken, #F2EFEB);
}

.gps-custom-select__option.is-selected {
  font-weight: 600;
  color: var(--gps-p-primary, #203952);
  background: var(--gps-p-accent-subtle, rgba(32, 57, 82, 0.06));
}

.gps-custom-select__option-check {
  width: 14px;
  height: 14px;
  opacity: 0;
  color: var(--gps-p-accent, #B89558);
  flex-shrink: 0;
  margin-left: 8px;
}

.gps-custom-select__option.is-selected .gps-custom-select__option-check {
  opacity: 1;
}

/* Scrollbar styling for dropdown menu */
.gps-custom-select__menu::-webkit-scrollbar {
  width: 5px;
}
.gps-custom-select__menu::-webkit-scrollbar-track {
  background: transparent;
}
.gps-custom-select__menu::-webkit-scrollbar-thumb {
  background: var(--gps-p-border, #E7E3DC);
  border-radius: 4px;
}

/* Dark mode specific fine-tuning */
[data-theme="dark"] .gps-custom-select__trigger:hover {
  border-color: var(--gps-p-border-strong, #332F3D);
}

[data-theme="dark"] .gps-custom-select__menu {
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.65), 0 4px 12px rgba(0, 0, 0, 0.4);
}

[data-theme="dark"] .gps-custom-select__option:hover,
[data-theme="dark"] .gps-custom-select__option.is-highlighted {
  background: rgba(255, 255, 255, 0.06);
}

[data-theme="dark"] .gps-custom-select__option.is-selected {
  background: rgba(212, 178, 118, 0.12);
  color: var(--gps-p-accent, #D4B276);
}

[data-theme="dark"] .gps-custom-select__menu::-webkit-scrollbar-thumb {
  background: var(--gps-p-border-strong, #332F3D);
}

/* ─── Grid de cards ─── */

.gps-portal-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 22px;
}

@media (max-width: 820px) {
  .gps-portal-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 520px) {
  .gps-portal-grid {
    grid-template-columns: 1fr;
  }
}

/* ─── Card de informe ─── */

.gps-portal-card-informe {
  background: var(--gps-p-card, #fff);
  border-radius: var(--gps-p-radius, 12px);
  border: 1px solid var(--gps-p-border, #E7E3DC);
  box-shadow: var(--gps-p-shadow-sm, 0 1px 3px rgba(0, 0, 0, 0.04));
  padding: 22px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  transition: box-shadow 0.2s ease, transform 0.2s ease, border-color 0.2s ease, background-color 0.25s ease;
}

.gps-portal-card-informe:hover {
  box-shadow: var(--gps-p-shadow, 0 8px 24px rgba(32, 57, 82, 0.08));
  transform: translateY(-2px);
  border-color: var(--gps-p-border-strong, #CEC7BC);
}

.gps-portal-card-informe__head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
}

.gps-portal-card-informe__icon {
  font-size: 26px;
  line-height: 1;
}

.gps-portal-card-informe__title {
  margin: 0;
  font-size: 16px;
  font-weight: 600;
  color: var(--gps-p-text-main, #1A1820);
  line-height: 1.4;
  letter-spacing: -0.01em;
}

.gps-portal-card-informe__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.gps-portal-card-informe__dl {
  margin: 0;
  display: flex;
  gap: 6px;
  font-size: 13px;
  color: var(--gps-p-text-muted, #666170);
}

.gps-portal-card-informe__dl dt {
  font-weight: 600;
  color: var(--gps-p-text-main, #1A1820);
}

.gps-portal-card-informe__dl dd {
  margin: 0;
}

.gps-portal-card-informe__actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin-top: auto;
  padding-top: 10px;
  width: 100%;
  box-sizing: border-box;
}

.gps-portal-card-informe__actions > :only-child {
  grid-column: 1 / -1;
}

.gps-portal-card-informe__actions .gps-portal-btn {
  width: 100%;
  min-height: 38px;
  height: 38px;
  padding: 8px 10px;
  font-size: 13px;
  font-weight: 600;
  box-sizing: border-box;
  white-space: nowrap;
}

/* ─── Pills / Badges ─── */

.gps-portal-pill {
  display: inline-block;
  background: var(--gps-p-sunken, #F2EFEB);
  color: var(--gps-p-text-muted, #666170);
  font-size: 12px;
  padding: 4px 10px;
  border-radius: 999px;
  font-weight: 500;
  line-height: 1.4;
}

.gps-portal-badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  background: var(--gps-p-sunken, #F2EFEB);
  color: var(--gps-p-text-muted, #666170);
  line-height: 1.4;
  white-space: nowrap;
}

.gps-portal-badge--borrador {
  background: var(--gps-p-sunken, #F2EFEB);
  color: var(--gps-p-text-muted, #666170);
}

.gps-portal-badge--aprobado {
  background: rgba(32, 57, 82, 0.12);
  color: var(--gps-p-primary, #203952);
}

.gps-portal-badge--entregado {
  background: #dcfce7;
  color: #15803d;
}

.gps-portal-badge--archivado {
  background: #fee2e2;
  color: #b91c1c;
}

/* Modos oscuros para badges de informe */
[data-theme="dark"] .gps-portal-badge--aprobado {
  background: rgba(247, 247, 247, 0.12);
  color: #F4F2EB;
}
[data-theme="dark"] .gps-portal-badge--entregado {
  background: rgba(34, 197, 94, 0.18);
  color: #86efac;
}
[data-theme="dark"] .gps-portal-badge--archivado {
  background: rgba(239, 68, 68, 0.18);
  color: #fca5a5;
}

/* ─── Badges de estado de estándares (portal read-only) ─── */
.gps-portal-badge--estado {
  font-size: 11px;
  font-weight: 600;
  padding: 4px 10px;
  border-radius: 6px;
  display: inline-block;
  text-align: center;
  text-transform: none;
  letter-spacing: normal;
}
.gps-badge-cumple {
  background: #dcfce7;
  color: #15803d;
  border: 1px solid #bbf7d0;
}
.gps-badge-parcial {
  background: #fef9c3;
  color: #a16207;
  border: 1px solid #fef08a;
}
.gps-badge-no_cumple {
  background: #fee2e2;
  color: #b91c1c;
  border: 1px solid #fecaca;
}
.gps-badge-no_aplica {
  background: var(--gps-p-sunken, #F2EFEB);
  color: var(--gps-p-text-muted, #666170);
  border: 1px solid var(--gps-p-border, #E7E3DC);
}
.gps-badge-sin-evaluar {
  background: var(--gps-p-sunken, #F2EFEB);
  color: var(--gps-p-text-faint, #9893A0);
  border: 1px dashed var(--gps-p-border-strong, #CEC7BC);
}

[data-theme="dark"] .gps-badge-cumple {
  background: rgba(34, 197, 94, 0.18);
  color: #86efac;
  border-color: rgba(34, 197, 94, 0.35);
}
[data-theme="dark"] .gps-badge-parcial {
  background: rgba(234, 179, 8, 0.18);
  color: #fde047;
  border-color: rgba(234, 179, 8, 0.35);
}
[data-theme="dark"] .gps-badge-no_cumple {
  background: rgba(239, 68, 68, 0.18);
  color: #fca5a5;
  border-color: rgba(239, 68, 68, 0.35);
}
[data-theme="dark"] .gps-badge-no_aplica {
  background: var(--gps-p-sunken, #14131A);
  color: var(--gps-p-text-muted, #A8A3B2);
  border-color: var(--gps-p-border, #23212A);
}
[data-theme="dark"] .gps-badge-sin-evaluar {
  background: var(--gps-p-sunken, #14131A);
  color: var(--gps-p-text-faint, #6E6978);
  border-color: var(--gps-p-border-strong, #332F3D);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .gps-portal-badge--aprobado {
    background: rgba(247, 247, 247, 0.12);
    color: #F4F2EB;
  }
  :root:not([data-theme="light"]) .gps-portal-badge--entregado {
    background: rgba(34, 197, 94, 0.18);
    color: #86efac;
  }
  :root:not([data-theme="light"]) .gps-portal-badge--archivado {
    background: rgba(239, 68, 68, 0.18);
    color: #fca5a5;
  }
  :root:not([data-theme="light"]) .gps-badge-cumple {
    background: rgba(34, 197, 94, 0.18);
    color: #86efac;
    border-color: rgba(34, 197, 94, 0.35);
  }
  :root:not([data-theme="light"]) .gps-badge-parcial {
    background: rgba(234, 179, 8, 0.18);
    color: #fde047;
    border-color: rgba(234, 179, 8, 0.35);
  }
  :root:not([data-theme="light"]) .gps-badge-no_cumple {
    background: rgba(239, 68, 68, 0.18);
    color: #fca5a5;
    border-color: rgba(239, 68, 68, 0.35);
  }
  :root:not([data-theme="light"]) .gps-badge-no_aplica {
    background: var(--gps-p-sunken, #14131A);
    color: var(--gps-p-text-muted, #A8A3B2);
    border-color: var(--gps-p-border, #23212A);
  }
  :root:not([data-theme="light"]) .gps-badge-sin-evaluar {
    background: var(--gps-p-sunken, #14131A);
    color: var(--gps-p-text-faint, #6E6978);
    border-color: var(--gps-p-border-strong, #332F3D);
  }
}

/* ─── Portal Navigation Tabs (Segmented Control) ─── */
.gps-portal-wrap .gps-portal-nav-tabs,
.gps-portal-nav-tabs {
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
  background: var(--gps-p-sunken, #F2EFEB) !important;
  border: 1px solid var(--gps-p-border, #E7E3DC) !important;
  border-radius: var(--gps-p-radius, 12px) !important;
  padding: 5px !important;
  margin-bottom: 26px !important;
  max-width: 100% !important;
  overflow-x: auto !important;
  -webkit-overflow-scrolling: touch !important;
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.03) !important;
  box-sizing: border-box !important;
}

.gps-portal-wrap .gps-portal-nav-tab,
.gps-portal-nav-tab {
  display: inline-flex !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 9px 18px !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  color: var(--gps-p-text-muted, #666170) !important;
  text-decoration: none !important;
  border-radius: 8px !important;
  border: 1px solid transparent !important;
  background: transparent !important;
  transition: all 0.2s ease !important;
}

.gps-portal-wrap .gps-portal-nav-tab:hover,
.gps-portal-nav-tab:hover {
  color: var(--gps-p-text-main, #1A1820) !important;
  background: rgba(255, 255, 255, 0.5) !important;
}

[data-theme="dark"] .gps-portal-wrap .gps-portal-nav-tab:hover,
[data-theme="dark"] .gps-portal-nav-tab:hover {
  color: #FFFFFF !important;
  background: var(--gps-p-card, #1A1820) !important;
}

.gps-portal-wrap .gps-portal-nav-tab.is-active,
.gps-portal-nav-tab.is-active {
  background: var(--gps-p-card, #FFFFFF) !important;
  color: var(--gps-p-text-main, #1A1820) !important;
  font-weight: 600 !important;
  border-color: var(--gps-p-border, #E7E3DC) !important;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06) !important;
}

.gps-portal-wrap .gps-portal-nav-tab__title,
.gps-portal-nav-tab__title {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
}

.gps-portal-wrap .gps-portal-nav-tab__norma,
.gps-portal-nav-tab__norma {
  display: inline-block !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  color: var(--gps-p-text-muted, #666170) !important;
  background: var(--gps-p-border, #E7E3DC) !important;
  padding: 2px 6px !important;
  border-radius: 4px !important;
  letter-spacing: 0.02em !important;
  transition: all 0.18s ease !important;
  line-height: 1.2 !important;
}

.gps-portal-wrap .gps-portal-nav-tab.is-active .gps-portal-nav-tab__norma,
.gps-portal-nav-tab.is-active .gps-portal-nav-tab__norma {
  background: var(--gps-p-sunken, #F2EFEB) !important;
  color: var(--gps-p-text-main, #1A1820) !important;
}

.gps-portal-wrap .gps-portal-nav-tab__count,
.gps-portal-nav-tab__count {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-width: 22px !important;
  height: 22px !important;
  padding: 0 7px !important;
  font-size: 12px !important;
  font-weight: 700 !important;
  border-radius: 999px !important;
  background: var(--gps-p-border, #E7E3DC) !important;
  color: var(--gps-p-text-muted, #666170) !important;
  transition: all 0.18s ease !important;
  box-sizing: border-box !important;
  line-height: 1 !important;
}

.gps-portal-wrap .gps-portal-nav-tab.is-active .gps-portal-nav-tab__count,
.gps-portal-nav-tab.is-active .gps-portal-nav-tab__count {
  background: var(--gps-p-accent-subtle, rgba(32, 57, 82, 0.08)) !important;
  color: var(--gps-p-primary, #203952) !important;
  border: 1px solid var(--gps-p-border, #E7E3DC) !important;
}

[data-theme="dark"] .gps-portal-wrap .gps-portal-nav-tab.is-active .gps-portal-nav-tab__count,
[data-theme="dark"] .gps-portal-nav-tab.is-active .gps-portal-nav-tab__count {
  background: rgba(255, 255, 255, 0.12) !important;
  color: #FFFFFF !important;
  border-color: var(--gps-p-border, #23212A) !important;
}

.gps-portal-wrap .gps-portal-nav-tab__badge,
.gps-portal-nav-tab__badge {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  height: 22px !important;
  padding: 0 8px !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  border-radius: 999px !important;
  transition: all 0.18s ease !important;
  box-sizing: border-box !important;
  line-height: 1 !important;
}

.gps-portal-wrap .gps-portal-nav-tab__badge--high,
.gps-portal-nav-tab__badge--high {
  background: #dcfce7 !important;
  color: #15803d !important;
  border: 1px solid #bbf7d0 !important;
}

.gps-portal-wrap .gps-portal-nav-tab__badge--medium,
.gps-portal-nav-tab__badge--medium {
  background: #fef9c3 !important;
  color: #854d0e !important;
  border: 1px solid #fde047 !important;
}

.gps-portal-wrap .gps-portal-nav-tab__badge--low,
.gps-portal-nav-tab__badge--low {
  background: #fee2e2 !important;
  color: #b91c1c !important;
  border: 1px solid #fca5a5 !important;
}

[data-theme="dark"] .gps-portal-wrap .gps-portal-nav-tab__badge--high,
[data-theme="dark"] .gps-portal-nav-tab__badge--high {
  background: rgba(34, 197, 94, 0.2) !important;
  color: #86efac !important;
  border-color: rgba(34, 197, 94, 0.35) !important;
}

[data-theme="dark"] .gps-portal-wrap .gps-portal-nav-tab__badge--medium,
[data-theme="dark"] .gps-portal-nav-tab__badge--medium {
  background: rgba(234, 179, 8, 0.2) !important;
  color: #fde047 !important;
  border-color: rgba(234, 179, 8, 0.35) !important;
}

[data-theme="dark"] .gps-portal-wrap .gps-portal-nav-tab__badge--low,
[data-theme="dark"] .gps-portal-nav-tab__badge--low {
  background: rgba(239, 68, 68, 0.2) !important;
  color: #fca5a5 !important;
  border-color: rgba(239, 68, 68, 0.35) !important;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .gps-portal-wrap .gps-portal-nav-tab:hover,
  :root:not([data-theme="light"]) .gps-portal-nav-tab:hover {
    color: #FFFFFF !important;
    background: var(--gps-p-card, #1A1820) !important;
  }
  :root:not([data-theme="light"]) .gps-portal-wrap .gps-portal-nav-tab.is-active .gps-portal-nav-tab__count,
  :root:not([data-theme="light"]) .gps-portal-nav-tab.is-active .gps-portal-nav-tab__count {
    background: rgba(255, 255, 255, 0.12) !important;
    color: #FFFFFF !important;
    border-color: var(--gps-p-border, #23212A) !important;
  }
  :root:not([data-theme="light"]) .gps-portal-wrap .gps-portal-nav-tab__badge--high,
  :root:not([data-theme="light"]) .gps-portal-nav-tab__badge--high {
    background: rgba(34, 197, 94, 0.2) !important;
    color: #86efac !important;
    border-color: rgba(34, 197, 94, 0.35) !important;
  }
  :root:not([data-theme="light"]) .gps-portal-wrap .gps-portal-nav-tab__badge--medium,
  :root:not([data-theme="light"]) .gps-portal-nav-tab__badge--medium {
    background: rgba(234, 179, 8, 0.2) !important;
    color: #fde047 !important;
    border-color: rgba(234, 179, 8, 0.35) !important;
  }
  :root:not([data-theme="light"]) .gps-portal-wrap .gps-portal-nav-tab__badge--low,
  :root:not([data-theme="light"]) .gps-portal-nav-tab__badge--low {
    background: rgba(239, 68, 68, 0.2) !important;
    color: #fca5a5 !important;
    border-color: rgba(239, 68, 68, 0.35) !important;
  }
}

/* ─── Portal Autoevaluación View ─── */
.gps-portal-autoeval-container {
  margin-top: 10px;
}
.gps-portal-autoeval-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 16px;
  background: var(--gps-p-card, #fff);
  padding: 22px 24px;
  border-radius: var(--gps-p-radius, 12px);
  box-shadow: var(--gps-p-shadow-sm, 0 1px 3px rgba(0, 0, 0, 0.04));
  border: 1px solid var(--gps-p-border, #E7E3DC);
}
.gps-portal-autoeval-header__info {
  flex: 1 1 300px;
}
.gps-portal-autoeval-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
.gps-btn-ver-evidencia-portal {
  font-size: 12px;
  padding: 4px 10px;
  border-radius: 6px;
  text-decoration: none;
}

/* ─── Integración de Autoevaluación en el Portal (Claro y Oscuro) ─── */
.gps-portal-wrap .gps-compliance-page {
  --gps-cd-bg-card: var(--gps-p-card);
  --gps-cd-bg-sunken: var(--gps-p-sunken);
  --gps-cd-bg-hover: var(--gps-p-sunken);
  --gps-cd-border: var(--gps-p-border);
  --gps-cd-border-subtle: var(--gps-p-border-strong, #332F3D);
  --gps-cd-border-strong: var(--gps-p-border-strong, #332F3D);
  --gps-cd-text-main: var(--gps-p-text-main);
  --gps-cd-text-muted: var(--gps-p-text-muted);
  --gps-cd-text-heading: var(--gps-p-text-main);
  --gps-cd-shadow: var(--gps-p-shadow-sm, 0 1px 3px rgba(0, 0, 0, 0.04));
}

.gps-portal-wrap .gps-compliance-page .gps-compliance-top {
  border-radius: var(--gps-p-radius, 12px);
}

.gps-portal-wrap .gps-compliance-page .gps-stat-card {
  border-radius: 10px;
  transition: all var(--gps-p-transition, 0.2s ease);
}

.gps-portal-wrap .gps-compliance-page .gps-phva-card {
  border-radius: 10px;
}

.gps-portal-wrap .gps-compliance-page .gps-estandares-list-wrap {
  border-radius: var(--gps-p-radius, 12px);
}

/* Colores de Fases / Ciclos PHVA en Autoevaluación (Light Mode - Fuente única canónica) */
.gps-portal-wrap .gps-compliance-page tr.gps-table-group-ciclo td,
.gps-portal-wrap .gps-compliance-page tr.gps-row-ciclo-header td {
  padding: 10px 14px;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.5px;
  border-top: 2px solid var(--gps-p-border, #E7E3DC);
  border-bottom: 1px solid var(--gps-p-border, #E7E3DC);
}
.gps-portal-wrap .gps-compliance-page tr.gps-table-group-ciclo-p td,
.gps-portal-wrap .gps-compliance-page tr[data-ciclo="p"] td {
  background: #eff6ff !important;
  color: #1e3a8a !important;
  border-left: 6px solid #1e3a8a !important;
}
.gps-portal-wrap .gps-compliance-page tr.gps-table-group-ciclo-h td,
.gps-portal-wrap .gps-compliance-page tr[data-ciclo="h"] td {
  background: #f0fdf4 !important;
  color: #14532d !important;
  border-left: 6px solid #15803d !important;
}
.gps-portal-wrap .gps-compliance-page tr.gps-table-group-ciclo-v td,
.gps-portal-wrap .gps-compliance-page tr[data-ciclo="v"] td {
  background: #faf5ff !important;
  color: #581c87 !important;
  border-left: 6px solid #7e22ce !important;
}
.gps-portal-wrap .gps-compliance-page tr.gps-table-group-ciclo-a td,
.gps-portal-wrap .gps-compliance-page tr[data-ciclo="a"] td {
  background: #fffbeb !important;
  color: #78350f !important;
  border-left: 6px solid #b45309 !important;
}

/* Pills de Fases PHVA */
.gps-portal-wrap .gps-compliance-page .gps-phva-pill,
.gps-compliance-page .gps-phva-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  font-size: 12px;
  font-weight: 800;
  color: #ffffff !important;
  box-shadow: 0 1px 2px rgba(0,0,0,0.15);
}
.gps-portal-wrap .gps-compliance-page .gps-phva-pill-p,
.gps-compliance-page .gps-phva-pill-p {
  background: #1e3a8a !important;
}
.gps-portal-wrap .gps-compliance-page .gps-phva-pill-h,
.gps-compliance-page .gps-phva-pill-h {
  background: #15803d !important;
}
.gps-portal-wrap .gps-compliance-page .gps-phva-pill-v,
.gps-compliance-page .gps-phva-pill-v {
  background: #7e22ce !important;
}
.gps-portal-wrap .gps-compliance-page .gps-phva-pill-a,
.gps-compliance-page .gps-phva-pill-a {
  background: #b45309 !important;
}

/* Cards de Ciclos PHVA en Breakdown */
.gps-portal-wrap .gps-compliance-page .gps-phva-card.gps-phva-p,
.gps-compliance-page .gps-phva-card.gps-phva-p {
  border-top: 4px solid #1e3a8a !important;
}
.gps-portal-wrap .gps-compliance-page .gps-phva-card.gps-phva-p .dashicons,
.gps-compliance-page .gps-phva-card.gps-phva-p .dashicons {
  color: #1e3a8a !important;
}
.gps-portal-wrap .gps-compliance-page .gps-phva-card.gps-phva-p .gps-phva-bar-fill,
.gps-compliance-page .gps-phva-card.gps-phva-p .gps-phva-bar-fill {
  background: #1e3a8a !important;
}

.gps-portal-wrap .gps-compliance-page .gps-phva-card.gps-phva-h,
.gps-compliance-page .gps-phva-card.gps-phva-h {
  border-top: 4px solid #15803d !important;
}
.gps-portal-wrap .gps-compliance-page .gps-phva-card.gps-phva-h .dashicons,
.gps-compliance-page .gps-phva-card.gps-phva-h .dashicons {
  color: #15803d !important;
}
.gps-portal-wrap .gps-compliance-page .gps-phva-card.gps-phva-h .gps-phva-bar-fill,
.gps-compliance-page .gps-phva-card.gps-phva-h .gps-phva-bar-fill {
  background: #15803d !important;
}

.gps-portal-wrap .gps-compliance-page .gps-phva-card.gps-phva-v,
.gps-compliance-page .gps-phva-card.gps-phva-v {
  border-top: 4px solid #7e22ce !important;
}
.gps-portal-wrap .gps-compliance-page .gps-phva-card.gps-phva-v .dashicons,
.gps-compliance-page .gps-phva-card.gps-phva-v .dashicons {
  color: #7e22ce !important;
}
.gps-portal-wrap .gps-compliance-page .gps-phva-card.gps-phva-v .gps-phva-bar-fill,
.gps-compliance-page .gps-phva-card.gps-phva-v .gps-phva-bar-fill {
  background: #7e22ce !important;
}

.gps-portal-wrap .gps-compliance-page .gps-phva-card.gps-phva-a,
.gps-compliance-page .gps-phva-card.gps-phva-a {
  border-top: 4px solid #b45309 !important;
}
.gps-portal-wrap .gps-compliance-page .gps-phva-card.gps-phva-a .dashicons,
.gps-compliance-page .gps-phva-card.gps-phva-a .dashicons {
  color: #b45309 !important;
}
.gps-portal-wrap .gps-compliance-page .gps-phva-card.gps-phva-a .gps-phva-bar-fill,
.gps-compliance-page .gps-phva-card.gps-phva-a .gps-phva-bar-fill {
  background: #b45309 !important;
}

/* Dark Mode para Autoevaluación en el Portal */
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page tr.gps-row-status-cumple {
  background-color: rgba(34, 197, 94, 0.08) !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page tr.gps-row-status-no_cumple {
  background-color: rgba(239, 68, 68, 0.08) !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page tr.gps-row-status-no_aplica {
  background-color: rgba(148, 163, 184, 0.06) !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page tr.gps-row-status-parcial {
  background-color: rgba(245, 158, 11, 0.08) !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page tr.gps-row-status-pendiente {
  background-color: transparent !important;
}

[data-theme="dark"] .gps-portal-wrap .gps-compliance-page tr.gps-table-group-ciclo-p td {
  background: rgba(30, 58, 138, 0.28) !important;
  color: #93c5fd !important;
  border-left: 6px solid #3b82f6 !important;
  border-top-color: var(--gps-p-border) !important;
  border-bottom-color: var(--gps-p-border) !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page tr.gps-table-group-ciclo-h td {
  background: rgba(20, 83, 45, 0.28) !important;
  color: #86efac !important;
  border-left: 6px solid #22c55e !important;
  border-top-color: var(--gps-p-border) !important;
  border-bottom-color: var(--gps-p-border) !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page tr.gps-table-group-ciclo-v td {
  background: rgba(88, 28, 135, 0.28) !important;
  color: #d8b4fe !important;
  border-left: 6px solid #a855f7 !important;
  border-top-color: var(--gps-p-border) !important;
  border-bottom-color: var(--gps-p-border) !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page tr.gps-table-group-ciclo-a td {
  background: rgba(120, 53, 15, 0.28) !important;
  color: #fde047 !important;
  border-left: 6px solid #eab308 !important;
  border-top-color: var(--gps-p-border) !important;
  border-bottom-color: var(--gps-p-border) !important;
}

[data-theme="dark"] .gps-portal-wrap .gps-compliance-page .gps-group-ciclo-badge {
  background: rgba(255, 255, 255, 0.12) !important;
  color: #ffffff !important;
}

[data-theme="dark"] .gps-portal-wrap .gps-compliance-page .gps-phva-card.gps-phva-p .gps-phva-bar-fill {
  background: #3b82f6 !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page .gps-phva-card.gps-phva-p .dashicons {
  color: #60a5fa !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page .gps-phva-card.gps-phva-h .gps-phva-bar-fill {
  background: #22c55e !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page .gps-phva-card.gps-phva-h .dashicons {
  color: #86efac !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page .gps-phva-card.gps-phva-v .gps-phva-bar-fill {
  background: #a855f7 !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page .gps-phva-card.gps-phva-v .dashicons {
  color: #d8b4fe !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page .gps-phva-card.gps-phva-a .gps-phva-bar-fill {
  background: #eab308 !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page .gps-phva-card.gps-phva-a .dashicons {
  color: #fde047 !important;
}

[data-theme="dark"] .gps-portal-wrap .gps-compliance-page .gps-no-aplica-callout {
  background: rgba(59, 130, 246, 0.12) !important;
  border: 1px solid rgba(59, 130, 246, 0.25) !important;
  border-left: 4px solid #3b82f6 !important;
  color: #93c5fd !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page .gps-callout-text strong {
  color: #bfdbfe !important;
}

[data-theme="dark"] .gps-portal-wrap .gps-compliance-page .gps-badge-escalon-normal {
  background: rgba(99, 102, 241, 0.2) !important;
  color: #a5b4fc !important;
  border-color: rgba(99, 102, 241, 0.35) !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page .gps-badge-escalon-alert {
  background: rgba(239, 68, 68, 0.2) !important;
  color: #fca5a5 !important;
  border-color: rgba(239, 68, 68, 0.35) !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page .gps-badge-art-info {
  color: var(--gps-p-text-muted, #94a3b8) !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page .gps-portal-meta-update {
  color: var(--gps-p-text-faint, #64748b) !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page .gps-badge-exento-ley {
  background: rgba(59, 130, 246, 0.15) !important;
  color: #93c5fd !important;
  border-color: rgba(59, 130, 246, 0.3) !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page .gps-no-aplica-badge-count {
  background: var(--gps-p-border) !important;
  color: var(--gps-p-text-muted) !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page .gps-item-badge {
  background: rgba(3, 105, 161, 0.2) !important;
  color: #7dd3fc !important;
  border-color: rgba(3, 105, 161, 0.35) !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page .gps-col-num {
  color: var(--gps-p-text-faint) !important;
}
[data-theme="dark"] .gps-portal-wrap .gps-compliance-page .gps-num-seq {
  color: var(--gps-p-text-faint) !important;
}

/* ─── Empty state ─── */

.gps-portal-empty-state {
  background: var(--gps-p-card, #fff);
  border: 1px solid var(--gps-p-border, #E7E3DC);
  border-radius: var(--gps-p-radius, 12px);
  padding: 48px 24px;
  text-align: center;
  color: var(--gps-p-text-muted, #666170);
  box-shadow: var(--gps-p-shadow-sm, 0 1px 3px rgba(0, 0, 0, 0.04));
}

.gps-portal-empty-state__icon {
  font-size: 40px;
  margin-bottom: 12px;
  line-height: 1;
}

.gps-portal-empty-state__text {
  margin: 0;
  font-size: 14px;
}

.gps-portal-empty-state--hidden {
  display: none;
}

/* ─── Portal client stats ─── */
.gps-portal-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
  margin-bottom: 28px;
}
.gps-portal-stat {
  background: var(--gps-p-card, #fff);
  border: 1px solid var(--gps-p-border, #E7E3DC);
  border-radius: var(--gps-p-radius, 12px);
  padding: 18px 20px;
  text-align: center;
  box-shadow: var(--gps-p-shadow-sm, 0 1px 3px rgba(0, 0, 0, 0.04));
}
.gps-portal-stat__value {
  display: block;
  font-size: 26px;
  font-weight: 700;
  color: var(--gps-p-primary, #203952);
  line-height: 1.2;
  margin-bottom: 4px;
  letter-spacing: -0.02em;
}
.gps-portal-stat__label {
  display: block;
  font-size: 12px;
  color: var(--gps-p-text-muted, #666170);
  font-weight: 500;
}
@media (max-width: 600px) {
  .gps-portal-stats {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* ─── Modal Visor PDF ─── */

.gps-pdf-modal {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: none;
  align-items: center;
  justify-content: center;
}

.gps-pdf-modal.is-open {
  display: flex;
}

.gps-pdf-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 14, 20, 0.75);
  backdrop-filter: blur(4px);
}

.gps-pdf-modal__dialog {
  position: relative;
  width: 90%;
  height: 90%;
  max-width: 1200px;
  background: var(--gps-p-card, #fff);
  border: 1px solid var(--gps-p-border, #E7E3DC);
  border-radius: var(--gps-p-radius, 12px);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  box-shadow: var(--gps-p-shadow, 0 25px 60px rgba(0, 0, 0, 0.25));
}

.gps-pdf-modal__header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 14px 22px;
  border-bottom: 1px solid var(--gps-p-border, #E7E3DC);
  background: var(--gps-p-card, #fff);
  gap: 12px;
}

.gps-pdf-modal__title {
  margin: 0;
  font-size: 15px;
  color: var(--gps-p-text-main, #1A1820);
  font-weight: 600;
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.gps-pdf-modal__actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

.gps-pdf-modal__print {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 38px;
  height: 38px;
  padding: 8px 14px;
  font-size: 13px;
  white-space: nowrap;
}

.gps-pdf-modal__print-icon {
  flex-shrink: 0;
}

.gps-pdf-modal__print-text-full {
  display: inline;
}

.gps-pdf-modal__print-text-short {
  display: none;
}

.gps-pdf-modal__close {
  background: transparent;
  border: 0;
  color: var(--gps-p-text-muted, #666170);
  font-size: 20px;
  cursor: pointer;
  padding: 4px 10px;
  border-radius: 6px;
  line-height: 1;
  font-family: inherit;
  transition: background-color 0.15s ease, color 0.15s ease;
}

.gps-pdf-modal__close:hover {
  background: var(--gps-p-sunken, #F2EFEB);
  color: var(--gps-p-primary, #203952);
}

.gps-pdf-modal__body {
  flex: 1;
  position: relative;
  overflow: hidden;
  background: var(--gps-p-sunken, #F2EFEB);
}

.gps-pdf-modal__iframe {
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
  background: var(--gps-p-sunken, #F2EFEB);
}

.gps-pdf-modal__spinner {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  background: var(--gps-p-card, #fff);
  color: var(--gps-p-text-muted, #666170);
  font-size: 14px;
  z-index: 1;
}

.gps-pdf-modal__spinner-dot {
  width: 32px;
  height: 32px;
  border: 3px solid var(--gps-p-border, #E7E3DC);
  border-top-color: var(--gps-p-primary, #203952);
  border-radius: 50%;
  animation: gps-spin 0.8s linear infinite;
}

.gps-pdf-modal__spinner-text {
  font-weight: 500;
}

@keyframes gps-spin {
  to {
    transform: rotate(360deg);
  }
}

@media (max-width: 600px) {
  .gps-pdf-modal__dialog {
    width: 96%;
    height: 94%;
  }
}

/* ─── Informe detalle ─── */

.gps-portal-informe {
  background: var(--gps-p-card, #fff);
  border: 1px solid var(--gps-p-border, #E7E3DC);
  border-radius: var(--gps-p-radius, 12px);
  padding: 28px;
  box-shadow: var(--gps-p-shadow-sm, 0 1px 3px rgba(0, 0, 0, 0.04));
}

.gps-portal-informe__head {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 14px;
  margin-bottom: 20px;
}

.gps-portal-informe__title {
  margin: 0;
  font-size: 22px;
  color: var(--gps-p-text-main, #1A1820);
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: -0.015em;
}

.gps-portal-meta {
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: 10px 18px;
  margin: 22px 0;
  padding: 18px 20px;
  background: var(--gps-p-sunken, #F2EFEB);
  border: 1px solid var(--gps-p-border, #E7E3DC);
  border-radius: 8px;
  font-size: 14px;
}

.gps-portal-meta dt {
  font-weight: 600;
  color: var(--gps-p-text-main, #1A1820);
  margin: 0;
}

.gps-portal-meta dd {
  margin: 0;
  color: var(--gps-p-text-muted, #666170);
}

/* ─── Visor PDF inline (informe.php) ─── */

.gps-portal-pdf-viewer {
  margin: 24px 0;
  border: 1px solid var(--gps-p-border, #E7E3DC);
  border-radius: var(--gps-p-radius, 12px);
  overflow: hidden;
  background: var(--gps-p-sunken, #F2EFEB);
}

.gps-portal-pdf-viewer__iframe {
  display: block;
  width: 100%;
  height: 70vh;
  min-height: 600px;
  border: 0;
  background: var(--gps-p-sunken, #F2EFEB);
}

.gps-portal-informe__actions {
  margin: 20px 0 10px;
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

/* ─── Comentarios ─── */

.gps-portal-comments {
  margin-top: 36px;
  padding-top: 26px;
  border-top: 1px solid var(--gps-p-border, #E7E3DC);
}

.gps-portal-comments h2 {
  margin: 0 0 18px;
  font-size: 18px;
  color: var(--gps-p-text-main, #1A1820);
  font-weight: 700;
}

.gps-portal-comment-form textarea {
  display: block;
  width: 100%;
  padding: 12px 14px;
  font-size: 14px;
  border: 1px solid var(--gps-p-border, #E7E3DC);
  border-radius: 8px;
  box-sizing: border-box;
  font-family: inherit;
  resize: vertical;
  margin-bottom: 12px;
  color: var(--gps-p-text-main, #1A1820);
  background: var(--gps-p-card, #fff);
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.gps-portal-comment-form textarea:focus {
  border-color: var(--gps-p-primary, #203952);
  box-shadow: 0 0 0 3px var(--gps-p-accent-focus, rgba(32, 57, 82, 0.15));
  outline: none;
}

.gps-portal-comment-list {
  list-style: none;
  padding: 0;
  margin: 18px 0 0;
}

.gps-portal-comment-list li {
  padding: 14px 16px;
  border-left: 3px solid var(--gps-p-primary, #203952);
  background: var(--gps-p-sunken, #F2EFEB);
  border-radius: 6px;
  margin-bottom: 10px;
}

.gps-portal-comment-list strong {
  font-size: 13px;
  color: var(--gps-p-text-main, #1A1820);
}

.gps-portal-comment-list time {
  font-size: 12px;
  color: var(--gps-p-text-muted, #666170);
  margin-left: 8px;
}

.gps-portal-comment-body {
  margin-top: 6px;
  font-size: 14px;
  color: var(--gps-p-text-main, #1A1820);
  white-space: pre-wrap;
}

.gps-portal-empty {
  color: var(--gps-p-text-muted, #666170);
  font-size: 13px;
  font-style: italic;
}

/* ─── Fallback table (render_inline) ─── */

.gps-portal-table {
  width: 100%;
  border-collapse: collapse;
  background: var(--gps-p-card, #fff);
  border: 1px solid var(--gps-p-border, #E7E3DC);
  border-radius: 8px;
  overflow: hidden;
  box-shadow: var(--gps-p-shadow-sm, 0 1px 3px rgba(0, 0, 0, 0.04));
}

.gps-portal-table th,
.gps-portal-table td {
  padding: 12px 16px;
  text-align: left;
  font-size: 14px;
  border-bottom: 1px solid var(--gps-p-border, #E7E3DC);
}

.gps-portal-table th {
  background: var(--gps-p-sunken, #F2EFEB);
  font-weight: 600;
  color: var(--gps-p-text-main, #1A1820);
}

.gps-portal-table tr:last-child td {
  border-bottom: 0;
}

/* ────────────────────────────────────────────────────────────────────────────
 * Reglas Responsivas Estandarizadas (Tablet 782px & Mobile 480px)
 * ──────────────────────────────────────────────────────────────────────────── */

@media (max-width: 782px) {
  /* Header: stack brand + welcome + logout properly */
  .gps-portal-header {
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
    padding-bottom: 12px;
    margin-bottom: 20px;
  }
  .gps-portal-header__brand,
  .gps-portal-header__welcome {
    width: 100%;
    min-width: 0;
  }
  .gps-portal-header__welcome h1 {
    font-size: 20px;
  }
  .gps-portal-brand-title {
    font-size: 14px;
  }

  /* Filters: stack vertically */
  .gps-portal-filters {
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
    padding: 14px;
  }
  .gps-portal-filter,
  .gps-portal-filter--search {
    flex: 1 1 100%;
    min-width: 0;
  }
  .gps-portal-filter select,
  .gps-portal-filter input,
  .gps-custom-select__trigger {
    width: 100%;
    min-height: 42px;
    font-size: 16px; /* prevent iOS zoom */
  }
  .gps-custom-select__option {
    font-size: 15px;
    padding: 10px 12px;
  }
  .gps-portal-filter label {
    font-size: 13px;
  }

  /* Grid: 2 cols on tablet (reinforce at 782px) */
  .gps-portal-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 14px;
  }

  /* Stats: 2 cols on tablet */
  .gps-portal-stats {
    grid-template-columns: repeat(2, 1fr);
  }
  .gps-portal-stat__value {
    font-size: 22px;
  }
  .gps-portal-stat__label {
    font-size: 14px;
  }

  /* PDF modal: full screen fluid on tablet/mobile */
  .gps-pdf-modal__dialog {
    width: 100% !important;
    height: 100% !important;
    max-width: 100% !important;
    max-height: 100% !important;
    border-radius: 0 !important;
    border: none !important;
  }
  .gps-pdf-modal__header {
    padding: 10px 14px !important;
    gap: 8px !important;
  }
  .gps-pdf-modal__title {
    font-size: 13.5px !important;
  }
  .gps-pdf-modal__print-text-full {
    display: none !important;
  }
  .gps-pdf-modal__print-text-short {
    display: inline !important;
  }
  .gps-pdf-modal__print {
    padding: 6px 10px !important;
    min-height: 34px !important;
    height: 34px !important;
    font-size: 12.5px !important;
  }
  .gps-pdf-modal__close {
    min-width: 34px !important;
    min-height: 34px !important;
    width: 34px !important;
    height: 34px !important;
    padding: 0 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 22px !important;
    border-radius: 8px !important;
  }

  /* Informe detail: stack head, full-width iframe, stack meta */
  .gps-portal-informe {
    padding: 16px;
  }
  .gps-portal-informe__head {
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
  }
  .gps-portal-informe__title {
    font-size: 20px;
  }
  .gps-portal-meta {
    grid-template-columns: 1fr;
    gap: 4px 0;
    padding: 14px;
  }
  .gps-portal-meta dd {
    margin-bottom: 8px;
    font-size: 14px;
  }
  .gps-portal-meta dt {
    font-size: 14px;
  }

  /* PDF viewer iframe: full width, shorter on mobile */
  .gps-portal-pdf-viewer__iframe {
    height: 60vh;
    min-height: 400px;
  }

  /* Informe actions: wrap properly */
  .gps-portal-informe__actions {
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
  }
  .gps-portal-informe__actions .gps-portal-btn {
    width: 100%;
    flex: 1 1 100%;
  }

  /* Touch targets: ≥40px for all portal buttons */
  .gps-portal-btn {
    min-height: 40px;
    padding: 10px 16px;
    font-size: 14px;
  }
  .gps-portal-btn--small {
    min-height: 36px;
    padding: 6px 12px;
    font-size: 13px;
  }

  /* Portal wrap: tighter padding */
  .gps-portal-wrap {
    padding: 16px 12px;
  }
  .gps-portal-section__title {
    font-size: 18px;
  }

  /* Login card: tighter padding, min 14px */
  .gps-portal-card {
    padding: 24px 20px;
    max-width: 400px;
  }
  .gps-portal-card h1 {
    font-size: 20px;
  }
  .gps-portal-subtitle {
    font-size: 14px;
  }
  .gps-portal-form label {
    font-size: 14px;
  }
  .gps-portal-form input,
  .gps-portal-form textarea {
    font-size: 16px; /* prevent iOS zoom */
    min-height: 40px;
  }
  .gps-portal-help {
    font-size: 13px;
  }

  /* Portal table: horizontal scroll */
  .gps-portal-table {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    white-space: nowrap;
  }
  .gps-portal-table th,
  .gps-portal-table td {
    font-size: 14px;
  }

  /* Comments: min 14px, prevent iOS zoom on textarea */
  .gps-portal-comment-form textarea {
    font-size: 16px;
    min-height: 100px;
  }
  .gps-portal-comment-list strong {
    font-size: 14px;
  }
  .gps-portal-comment-list time {
    font-size: 13px;
  }
  .gps-portal-comment-body {
    font-size: 14px;
  }
  .gps-portal-comments h2 {
    font-size: 16px;
  }

  /* Card informe: min 14px */
  .gps-portal-card-informe__title {
    font-size: 15px;
  }
  .gps-portal-card-informe__dl {
    font-size: 14px;
  }
  .gps-portal-pill {
    font-size: 13px;
  }
  .gps-portal-badge {
    font-size: 12px;
  }

  /* Body portal: minimal padding */
  body.gps-portal {
    padding: 12px;
  }

  /* Empty state: smaller padding, min 14px */
  .gps-portal-empty-state {
    padding: 32px 16px;
  }
  .gps-portal-empty-state__text {
    font-size: 14px;
  }
  .gps-portal-empty-state__icon {
    font-size: 32px;
  }
}

@media (max-width: 480px) {
  /* Grid: single column on small mobile */
  .gps-portal-grid {
    grid-template-columns: 1fr;
    gap: 12px;
  }

  /* Card informe: tighter padding, full-width actions */
  .gps-portal-card-informe {
    padding: 14px;
  }
  .gps-portal-card-informe__title {
    font-size: 14px;
  }
  .gps-portal-card-informe__actions {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
    width: 100%;
  }
  .gps-portal-card-informe__actions .gps-portal-btn {
    min-height: 38px;
    height: 38px;
    padding: 8px 6px;
    font-size: 13px;
  }

  /* PDF modal: full screen on small mobile */
  .gps-pdf-modal__dialog {
    width: 100% !important;
    height: 100% !important;
    border-radius: 0 !important;
  }
  .gps-pdf-modal__header {
    padding: 8px 10px !important;
  }
  .gps-pdf-modal__title {
    font-size: 12.5px !important;
  }
  .gps-pdf-modal__print {
    padding: 6px 8px !important;
    font-size: 12px !important;
  }

  /* Informe title: smaller */
  .gps-portal-informe__title {
    font-size: 18px;
  }
  .gps-portal-section__title {
    font-size: 17px;
  }

  /* Portal wrap: minimal padding */
  .gps-portal-wrap {
    padding: 12px 8px;
  }

  /* Login card: max 400px, smaller padding */
  .gps-portal-card {
    max-width: 400px;
    padding: 20px 16px;
  }
  .gps-portal-card h1 {
    font-size: 18px;
  }

  /* Body portal: minimal padding */
  body.gps-portal {
    padding: 8px;
  }

  /* Brand logo: smaller */
  .gps-portal-logo {
    max-height: 36px;
    max-width: 100px;
  }
  .gps-portal-logo--client {
    max-height: 44px;
    max-width: 130px;
  }
}

@media (max-width: 320px) {
  .gps-portal-card-informe__actions {
    grid-template-columns: 1fr;
  }
}
