:root {
  --pgs-primary: #0d4f8b;
  --pgs-primary-dark: #083a66;
  --pgs-accent: #e8a317;
  --pgs-accent-soft: #fff8e6;
  --pgs-success: #1a7f4b;
  --pgs-danger: #c0392b;
  --pgs-surface: #f4f7fb;
  --pgs-card: #ffffff;
  --pgs-text: #1a2b3c;
  --pgs-muted: #5c6f82;
  --pgs-border: #d8e2ec;
  --pgs-radius: 14px;
  --pgs-shadow: 0 8px 28px rgba(13, 79, 139, 0.08);
  --pgs-nav-height: 72px;
  --pgs-chart-grid: rgba(13, 79, 139, 0.14);
  --pgs-chart-fill: rgba(13, 79, 139, 0.18);
  --pgs-chart-line-fill: rgba(232, 163, 23, 0.2);
}

* {
  box-sizing: border-box;
}

body {
  font-family: "DM Sans", "Segoe UI", system-ui, sans-serif;
  background: linear-gradient(160deg, #eef4fa 0%, #f8fafc 45%, #f4f7fb 100%);
  color: var(--pgs-text);
  min-height: 100vh;
}

.pgs-navbar {
  background: linear-gradient(90deg, var(--pgs-primary-dark), var(--pgs-primary)) !important;
  box-shadow: 0 4px 20px rgba(8, 58, 102, 0.25);
  padding: 0.35rem 0;
}

.pgs-navbar .nav-link {
  font-weight: 500;
  letter-spacing: 0.02em;
  border-radius: 8px;
  margin: 0 0.15rem;
  transition: background 0.2s;
}

.pgs-navbar .nav-link:hover:not(.disabled) {
  background: rgba(255, 255, 255, 0.12);
}

.pgs-navbar .navbar-brand img {
  height: 52px;
  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.2));
}

.pgs-user-menu-toggle {
  display: inline-flex !important;
  align-items: center;
  gap: 0.45rem;
  padding: 0.35rem 0.65rem !important;
  max-width: min(100%, 14rem);
}

.pgs-user-menu-toggle::after {
  margin-left: 0.15rem;
  vertical-align: middle;
}

.pgs-user-avatar {
  display: inline-flex;
  font-size: 1.55rem;
  line-height: 1;
  opacity: 0.95;
}

.pgs-user-name {
  font-weight: 600;
  font-size: 0.9rem;
  max-width: 9rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.pgs-user-dropdown {
  min-width: 13rem;
  padding: 0.35rem 0;
  border-radius: 12px;
  box-shadow: 0 12px 32px rgba(8, 58, 102, 0.18);
}

.pgs-user-dropdown-header {
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--pgs-primary-dark);
  padding-bottom: 0.35rem;
}

.pgs-user-dropdown .dropdown-item {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.5rem 1rem;
  font-size: 0.9rem;
  font-weight: 500;
}

.pgs-user-dropdown .dropdown-item .bi {
  font-size: 1.05rem;
  opacity: 0.85;
}

.pgs-user-dropdown-logout {
  color: var(--pgs-danger) !important;
}

.pgs-user-dropdown-logout:hover,
.pgs-user-dropdown-logout:focus {
  color: #fff !important;
  background-color: var(--pgs-danger) !important;
}

[data-theme="dark"] .pgs-user-dropdown-header {
  color: var(--pgs-text);
}

main.container {
  max-width: 1200px;
}

.page-header {
  margin-bottom: 2rem;
  padding-bottom: 1rem;
  border-bottom: 2px solid var(--pgs-border);
  text-align: center;
}

.page-title {
  font-size: clamp(1.75rem, 4vw, 2.5rem);
  font-weight: 700;
  color: var(--pgs-primary-dark);
  margin: 0;
  letter-spacing: -0.02em;
}

.page-subtitle {
  color: var(--pgs-muted);
  margin: 0.35rem 0 0;
}

.pgs-card {
  background: var(--pgs-card);
  border: 1px solid var(--pgs-border);
  border-radius: var(--pgs-radius);
  box-shadow: var(--pgs-shadow);
  padding: 1.5rem;
}

.pgs-alert {
  border-radius: 10px;
  border: none;
  font-weight: 500;
}

.pgs-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 1.25rem;
}

.visita-card {
  background: var(--pgs-card);
  border: 1px solid var(--pgs-border);
  border-radius: var(--pgs-radius);
  overflow: hidden;
  box-shadow: var(--pgs-shadow);
  transition: transform 0.2s, box-shadow 0.2s;
  display: flex;
  flex-direction: column;
}

.visita-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 14px 36px rgba(13, 79, 139, 0.14);
}

.visita-card__media {
  position: relative;
  height: 180px;
  background: var(--pgs-surface);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.visita-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.visita-card__placeholder {
  max-height: 80px;
  width: auto;
  opacity: 0.45;
  object-fit: contain;
}

.visita-card__badge--overlay {
  position: absolute;
  top: 0.55rem;
  right: 0.55rem;
  margin: 0;
  z-index: 2;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}

.visita-card__body {
  padding: 1rem 1.1rem 0.5rem;
  flex: 1;
  min-width: 0;
}

.visita-card__permiso {
  font-size: 1.1rem;
  line-height: 1.25;
  color: var(--pgs-primary-dark);
}

.visita-card__meta .bi {
  margin-right: 0.2rem;
  opacity: 0.75;
}

.visita-card__razon {
  color: var(--pgs-text);
  line-height: 1.35;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.visita-card__integrantes .bi {
  margin-right: 0.2rem;
  opacity: 0.75;
}

.visita-card__integrantes-more {
  font-weight: 600;
  color: var(--pgs-primary);
  margin-left: 0.15rem;
}

.visita-card__actions {
  padding: 0.75rem 1rem 1rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  justify-content: center;
}

.visita-card__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  font-weight: 600;
}

.visita-card__btn .bi {
  font-size: 1rem;
  line-height: 1;
}

.visitas-view-toolbar {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 0.75rem 1.35rem;
  margin-bottom: 1.15rem;
  padding-bottom: 0.85rem;
  border-bottom: 1px solid var(--pgs-border);
}

.visitas-view-toolbar-group {
  display: flex;
  align-items: center;
  gap: 0.65rem;
}

.visitas-view-toolbar-label {
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--pgs-muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.visitas-view-toggle {
  display: inline-flex;
  padding: 0.2rem;
  gap: 0.15rem;
  border-radius: 999px;
  background: var(--pgs-surface);
  border: 1px solid var(--pgs-border);
}

.visitas-view-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.35rem 0.75rem;
  border: none;
  border-radius: 999px;
  background: transparent;
  color: var(--pgs-muted);
  font-size: 0.8rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
}

.visitas-view-btn-icon {
  width: 1rem;
  height: 1rem;
  flex-shrink: 0;
}

.visitas-view-btn:hover {
  color: var(--pgs-primary-dark);
}

.visitas-view-btn.is-active {
  background: var(--pgs-card);
  color: var(--pgs-primary-dark);
  box-shadow: 0 2px 8px rgba(13, 79, 139, 0.12);
}

.visitas-view-btn:focus-visible {
  outline: 2px solid var(--pgs-primary);
  outline-offset: 2px;
}

.pgs-grid--visitas.is-grid-large.is-card-medium {
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 1.35rem;
}

.pgs-grid--visitas.is-grid-large.is-card-medium .visita-card__media {
  height: 200px;
}

.pgs-grid--visitas.is-grid-large.is-card-medium .visita-card__body {
  padding: 1rem 1.1rem 0.5rem;
}

.pgs-grid--visitas.is-grid-large.is-card-medium .visita-card__body h5 {
  font-size: 1.15rem;
}

.pgs-grid--visitas.is-grid-large.is-card-medium .visita-card__body p {
  font-size: 0.875rem;
}

.pgs-grid--visitas.is-grid-large.is-card-medium .visita-card__actions {
  padding: 0.75rem 1rem 1rem;
}

.pgs-grid--visitas.is-grid-large.is-card-small {
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 0.85rem;
}

.pgs-grid--visitas.is-grid-large.is-card-small .visita-card {
  border-radius: 10px;
}

.pgs-grid--visitas.is-grid-large.is-card-small .visita-card:hover {
  transform: translateY(-2px);
}

.pgs-grid--visitas.is-grid-large.is-card-small .visita-card__media {
  height: 115px;
}

.pgs-grid--visitas.is-grid-large.is-card-small .visita-card__body {
  padding: 0.55rem 0.65rem 0.25rem;
}

.pgs-grid--visitas.is-grid-large.is-card-small .visita-card__body h5 {
  font-size: 0.92rem;
  margin-bottom: 0.1rem;
}

.pgs-grid--visitas.is-grid-large.is-card-small .visita-card__body p {
  font-size: 0.72rem;
  margin-bottom: 0.05rem;
  line-height: 1.25;
}

.pgs-grid--visitas.is-grid-large.is-card-small .visita-card__actions {
  padding: 0.45rem 0.55rem 0.55rem;
  gap: 0.25rem;
}

.pgs-grid--visitas.is-grid-large.is-card-small .visita-card__actions .btn {
  font-size: 0.7rem;
  padding: 0.2rem 0.45rem;
}

.pgs-grid--visitas.is-list-view {
  grid-template-columns: 1fr;
}

.pgs-grid--visitas.is-list-view .visita-card {
  flex-direction: row;
  align-items: stretch;
}

.pgs-grid--visitas.is-list-view .visita-card:hover {
  transform: none;
  box-shadow: var(--pgs-shadow);
}

.pgs-grid--visitas.is-list-view .visita-card__body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.pgs-grid--visitas.is-list-view .visita-card__actions {
  flex-shrink: 0;
  flex-direction: column;
  align-items: stretch;
  justify-content: center;
  border-left: 1px solid var(--pgs-border);
}

.pgs-grid--visitas.is-list-view.is-card-medium {
  gap: 0.65rem;
}

.pgs-grid--visitas.is-list-view.is-card-medium .visita-card__media {
  width: 112px;
  min-width: 112px;
  height: auto;
  min-height: 80px;
  flex-shrink: 0;
}

.pgs-grid--visitas.is-list-view.is-card-medium .visita-card__body {
  padding: 0.75rem 0.9rem;
}

.pgs-grid--visitas.is-list-view.is-card-medium .visita-card__body h5 {
  font-size: 1.05rem;
  margin-bottom: 0.15rem;
}

.pgs-grid--visitas.is-list-view.is-card-medium .visita-card__body p {
  font-size: 0.875rem;
  margin-bottom: 0.1rem;
}

.pgs-grid--visitas.is-list-view.is-card-medium .visita-card__actions {
  padding: 0.6rem 0.8rem;
  min-width: 8rem;
}

.pgs-grid--visitas.is-list-view.is-card-small {
  gap: 0.45rem;
}

.pgs-grid--visitas.is-list-view.is-card-small .visita-card {
  border-radius: 10px;
}

.pgs-grid--visitas.is-list-view.is-card-small .visita-card__media {
  width: 72px;
  min-width: 72px;
  height: auto;
  min-height: 52px;
  flex-shrink: 0;
}

.pgs-grid--visitas.is-list-view.is-card-small .visita-card__body {
  padding: 0.45rem 0.6rem;
}

.pgs-grid--visitas.is-list-view.is-card-small .visita-card__body h5 {
  font-size: 0.88rem;
  margin-bottom: 0.1rem;
}

.pgs-grid--visitas.is-list-view.is-card-small .visita-card__body p {
  font-size: 0.72rem;
  margin-bottom: 0.05rem;
  line-height: 1.25;
}

.pgs-grid--visitas.is-list-view.is-card-small .visita-card__actions {
  padding: 0.4rem 0.5rem;
  min-width: 6.5rem;
  gap: 0.25rem;
}

.pgs-grid--visitas.is-list-view.is-card-small .visita-card__actions .btn {
  font-size: 0.68rem;
  padding: 0.15rem 0.4rem;
}

@media (max-width: 640px) {
  .pgs-grid--visitas.is-list-view .visita-card {
    flex-direction: column;
  }

  .pgs-grid--visitas.is-list-view.is-card-medium .visita-card__media {
    width: 100%;
    min-width: 0;
    height: 140px;
  }

  .pgs-grid--visitas.is-list-view.is-card-small .visita-card__media {
    width: 100%;
    min-width: 0;
    height: 96px;
  }

  .pgs-grid--visitas.is-list-view .visita-card__actions {
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    border-left: none;
    border-top: 1px solid var(--pgs-border);
    min-width: 0;
  }
}

.auth-card {
  max-width: 420px;
  margin: 2rem auto;
}

.auth-card .form-control {
  border-radius: 10px;
  padding: 0.75rem 1rem;
}

.btn-pgs-primary {
  background: var(--pgs-primary);
  border-color: var(--pgs-primary);
  color: #fff;
  font-weight: 600;
  border-radius: 10px;
  padding: 0.6rem 1.25rem;
}

.btn-pgs-primary:hover {
  background: var(--pgs-primary-dark);
  border-color: var(--pgs-primary-dark);
  color: #fff;
}

/* ——— Visita detalle ——— */
.visita-status-selector {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0.35rem 0.65rem;
  border-radius: 999px;
  border: 1px solid var(--pgs-border);
  background: var(--pgs-surface);
  box-shadow: 0 1px 4px rgba(13, 79, 139, 0.06);
}

.visita-status-switch-label {
  font-size: 0.68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--pgs-muted);
  line-height: 1;
  user-select: none;
  white-space: nowrap;
}

.visita-status-selector.visita-status-act .visita-status-switch-label-act,
.visita-status-selector.visita-status-cir .visita-status-switch-label-cir {
  color: var(--pgs-primary-dark);
}

.visita-status-switch-btn {
  display: inline-flex;
  align-items: center;
  padding: 0;
  border: none;
  background: transparent;
  cursor: pointer;
}

.visita-status-switch-btn:focus-visible {
  outline: 2px solid var(--pgs-primary);
  outline-offset: 2px;
  border-radius: 999px;
}

.visita-status-switch {
  position: relative;
  display: block;
  width: 2.85rem;
  height: 1.5rem;
}

.visita-status-switch-track {
  position: absolute;
  inset: 0;
  border-radius: 999px;
  background: rgba(232, 163, 23, 0.35);
  border: 1px solid rgba(232, 163, 23, 0.55);
  transition: background 0.25s ease, border-color 0.25s ease;
}

.visita-status-switch-thumb {
  position: absolute;
  top: 2px;
  left: 2px;
  width: 1.1rem;
  height: 1.1rem;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.22);
  transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}

.visita-status-switch-btn.is-act .visita-status-switch-track {
  background: rgba(26, 127, 75, 0.35);
  border-color: rgba(26, 127, 75, 0.55);
}

.visita-status-switch-btn.is-act .visita-status-switch-thumb {
  transform: translateX(1.35rem);
}

.visita-status-native {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.visita-toolbar-status {
  margin: 0;
  min-width: 0;
  flex-shrink: 0;
}

.visita-status-badge {
  font-size: 0.75rem;
  font-weight: 600;
  padding: 0.2rem 0.55rem;
  border-radius: 6px;
  white-space: nowrap;
}

.visita-status-selector.visita-status-act .visita-hint-act.visita-status-badge {
  background: rgba(26, 127, 75, 0.12);
  color: var(--pgs-success);
}

.visita-status-selector.visita-status-cir .visita-hint-cir.visita-status-badge {
  background: rgba(232, 163, 23, 0.15);
  color: #8a5f00;
}

.visita-status-selector.visita-status-act {
  border-color: rgba(26, 127, 75, 0.45);
  background: #f6fcf9;
}

.visita-status-selector.visita-status-cir {
  border-color: rgba(232, 163, 23, 0.5);
  background: #fffdf6;
}

.visita-status-chip-label {
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--pgs-muted);
  line-height: 1;
  user-select: none;
}

.visita-status-label {
  font-weight: 700;
  color: var(--pgs-primary-dark);
  margin: 0;
  white-space: nowrap;
}

.visita-status-control {
  flex: 0 1 auto;
  min-width: 0;
}

.visita-status-control .visita-status-select,
.visita-status-control select {
  width: auto;
  min-width: 7.5rem;
  max-width: 10rem;
  height: 1.65rem;
  padding: 0.1rem 1.6rem 0.1rem 0.35rem;
  font-size: 0.75rem;
  font-weight: 700;
  line-height: 1.2;
  border: none;
  border-radius: 999px;
  background-color: transparent;
  box-shadow: none;
  color: var(--pgs-primary-dark);
  cursor: pointer;
}

.visita-status-selector.visita-status-act .visita-status-control select {
  color: var(--pgs-success);
}

.visita-status-selector.visita-status-cir .visita-status-control select {
  color: #8a5f00;
}

.visita-status-control select:focus {
  box-shadow: none;
  outline: none;
}

.visita-status-selector .visita-hint-cir {
  display: none;
}

.visita-status-selector.visita-status-cir .visita-hint-act {
  display: none;
}

.visita-status-selector.visita-status-cir .visita-hint-cir {
  display: inline;
}

.visita-toolbar {
  position: sticky;
  top: 0.5rem;
  z-index: 100;
  width: 100%;
  background: rgba(255, 255, 255, 0.96);
  backdrop-filter: blur(10px);
  border: 1px solid var(--pgs-border);
  border-radius: 12px;
  padding: 0.75rem 1rem 0.7rem;
  margin-bottom: 1.25rem;
  box-shadow: 0 4px 18px rgba(13, 79, 139, 0.07);
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}

.visita-toolbar-head {
  text-align: center;
  width: 100%;
}

.visita-toolbar-head .page-title {
  margin-bottom: 0.1rem;
  font-size: clamp(1.05rem, 2vw, 1.35rem);
}

.visita-toolbar-head .page-subtitle {
  margin-bottom: 0;
  font-size: 0.8rem;
  color: var(--pgs-muted);
}

.visita-toolbar-bar {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 0.6rem 0.75rem;
  width: 100%;
  padding-top: 0.55rem;
  border-top: 1px solid var(--pgs-border);
}

.visita-toolbar-bar .visita-toolbar-btn-close {
  justify-self: start;
}

.visita-toolbar-bar .visita-toolbar-status {
  justify-self: center;
}

.visita-toolbar-bar .visita-toolbar-btn-pdf {
  justify-self: end;
}

.visita-toolbar-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2rem;
  padding: 0.3rem 0.9rem;
  border-radius: 8px;
  border: 1px solid var(--pgs-border);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  text-decoration: none;
  line-height: 1.2;
  white-space: nowrap;
  background: #fff;
  color: var(--pgs-primary-dark);
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease,
    box-shadow 0.15s ease;
}

.visita-toolbar-btn:hover {
  text-decoration: none;
}

.visita-toolbar-btn-close {
  color: var(--pgs-danger);
  border-color: rgba(192, 57, 43, 0.35);
  background: #fff;
}

.visita-toolbar-btn-close:hover {
  color: #fff;
  background: var(--pgs-danger);
  border-color: var(--pgs-danger);
  box-shadow: 0 2px 10px rgba(192, 57, 43, 0.22);
}

.visita-toolbar-btn-pdf {
  color: var(--pgs-success);
  border-color: rgba(26, 127, 75, 0.35);
  background: #fff;
}

.visita-toolbar-btn-pdf:hover {
  color: #fff;
  background: var(--pgs-success);
  border-color: var(--pgs-success);
  box-shadow: 0 2px 10px rgba(26, 127, 75, 0.22);
}

.visita-form {
  background: var(--pgs-card);
  border: 1px solid var(--pgs-border);
  border-radius: var(--pgs-radius);
  box-shadow: var(--pgs-shadow);
  padding: 1.5rem 1.75rem 2rem;
  text-align: center;
}

.visita-form .visita-accordion-main {
  max-width: 960px;
  margin: 0 auto;
}

.visita-form .accordion-body {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
}

.visita-form .accordion-body > * {
  width: 100%;
  max-width: 920px;
}

.visita-form .visita-form-actions {
  max-width: 420px;
  margin-left: auto;
  margin-right: auto;
}

/* Filas de campo — etiqueta arriba, control abajo */
.visita-field-row {
  width: 100%;
  max-width: 920px;
  margin-left: auto !important;
  margin-right: auto !important;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.45rem;
  padding: 0.9rem 1rem;
  background: var(--pgs-surface);
  border: 1px solid var(--pgs-border);
  border-radius: 12px;
}

.visita-field-label {
  display: block;
  font-weight: 600;
  font-size: 0.9rem;
  color: var(--pgs-primary-dark);
  text-align: center;
  line-height: 1.35;
  margin: 0;
}

.visita-field-label-sm {
  font-size: 0.78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--pgs-muted);
}

.visita-field-control {
  width: 100%;
  display: flex;
  justify-content: center;
}

.visita-field-control .form-control,
.visita-field-control .form-select,
.visita-field-control textarea {
  width: 100%;
  max-width: 100%;
}

.visita-field-question {
  width: 100%;
  max-width: 920px;
  margin-left: auto;
  margin-right: auto;
  font-weight: 700;
  font-size: 0.95rem;
  color: var(--pgs-primary-dark);
  text-align: center;
  line-height: 1.4;
  padding: 0.55rem 0.85rem;
  background: linear-gradient(90deg, #e8f2fc, #f8fbfe, #e8f2fc);
  border: 1px solid var(--pgs-border);
  border-radius: 10px;
}

.visita-field-row.visita-field-multi {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 0.75rem;
  flex-direction: unset;
}

.visita-field-cell {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  padding: 0.65rem 0.75rem;
  background: #fff;
  border: 1px solid var(--pgs-border);
  border-radius: 10px;
}

.visita-field-row.visita-field-check {
  background: #fff;
}

.visita-field-check .visita-field-control-select .form-select {
  max-width: 180px;
  margin: 0 auto;
  font-weight: 600;
}

/* Selects CUMPLE / NO CUMPLE / NO APLICA */
.visita-form select.visita-eval-select {
  font-weight: 700;
  transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.visita-form select.visita-eval-select.visita-eval-si {
  background-color: #d8f3e3 !important;
  border-color: #3d9a62 !important;
  color: #145a32 !important;
}

.visita-form select.visita-eval-select.visita-eval-no {
  background-color: #fde2e2 !important;
  border-color: #d45c5c !important;
  color: #7a1f1f !important;
}

.visita-form select.visita-eval-select.visita-eval-na {
  background-color: #fff4d6 !important;
  border-color: #d4a72c !important;
  color: #6b4e0a !important;
}

.visita-form select.visita-eval-select.visita-eval-si:focus {
  background-color: #c4ebd0 !important;
  border-color: #2d8a52 !important;
  color: #0f4a28 !important;
}

.visita-form select.visita-eval-select.visita-eval-no:focus {
  background-color: #f9cfcf !important;
  border-color: #c44a4a !important;
  color: #5c1818 !important;
}

.visita-form select.visita-eval-select.visita-eval-na:focus {
  background-color: #ffefc2 !important;
  border-color: #c99a20 !important;
  color: #5a4208 !important;
}

.visita-field-row.visita-field-toggles {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  gap: 0.65rem;
  flex-direction: unset;
  background: transparent;
  border: none;
  padding: 0.25rem 0;
}

.visita-field-toggle {
  text-align: center;
}

.visita-field-toggle .visita-field-label {
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.06em;
}

.visita-field-row.visita-field-media {
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 0.5rem;
  background: transparent;
  border: none;
  padding: 0.35rem 0;
}

.visita-section {
  margin: 2.5rem 0 1rem;
  padding-top: 1.5rem;
  border-top: 2px dashed var(--pgs-border);
}

.visita-section:first-of-type,
.visita-section.visita-section-first {
  border-top: none;
  padding-top: 0;
  margin-top: 1rem;
}

.visita-estacion-domicilio {
  text-align: center;
  line-height: 1.5;
  max-width: 720px;
  margin-left: auto;
  margin-right: auto;
}

.visita-field-row.visita-field-media-block {
  background: var(--pgs-surface);
}

.visita-field-control-media {
  width: 100%;
  max-width: 100%;
  justify-content: stretch;
}

.visita-field-control-media .visita-media-block {
  width: 100%;
}

.visita-field-control-integrantes {
  justify-content: stretch;
  max-width: 100%;
}

.visita-field-cell-integrantes {
  grid-column: 1 / -1;
}

.visita-section-title {
  font-size: clamp(1.25rem, 2.5vw, 1.65rem);
  font-weight: 700;
  color: var(--pgs-primary);
  text-align: center;
  margin-bottom: 1.25rem;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  flex-wrap: wrap;
}

.visita-section-title .btn-back-top {
  font-size: 0.75rem;
  padding: 0.2rem 0.5rem;
}

.subtitulo-block {
  background: var(--pgs-surface);
  border: 1px solid var(--pgs-border);
  border-radius: 12px;
  padding: 1rem 1.1rem 1.1rem;
  margin-bottom: 1.25rem;
}

/* Acordeón visita detalle */
.visita-accordion-main {
  --bs-accordion-border-color: var(--pgs-border);
  --bs-accordion-btn-bg: var(--pgs-surface);
  --bs-accordion-active-bg: #e8f2fc;
  --bs-accordion-active-color: var(--pgs-primary-dark);
}

.visita-accordion-main > .accordion-item {
  border-radius: 12px !important;
  overflow: hidden;
  margin-bottom: 0.75rem;
  border: 1px solid var(--pgs-border);
}

.visita-accordion-main > .accordion-item > .accordion-header .accordion-button {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--pgs-primary-dark);
  padding: 1rem 1.25rem;
}

.visita-accordion-btn-inner {
  position: relative;
  display: block;
  width: 100%;
  min-height: 1.5rem;
}

.visita-accordion-title-text {
  display: block;
  width: 100%;
  text-align: center;
  padding: 0 5.5rem;
  box-sizing: border-box;
}

.visita-section-no-count {
  position: absolute;
  right: 2.75rem;
  top: 50%;
  transform: translateY(-50%);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  padding: 0.22rem 0.55rem;
  border-radius: 999px;
  background: rgba(192, 57, 43, 0.14);
  color: var(--pgs-danger);
  white-space: nowrap;
  pointer-events: none;
}

.visita-section-no-count[hidden] {
  display: none !important;
}

.visita-accordion-main > .accordion-item > .accordion-header .accordion-button:not(.collapsed) {
  background: linear-gradient(90deg, #e8f2fc, #f4f9fd);
  color: var(--pgs-primary-dark);
  box-shadow: none;
}

/* Subtítulos dentro de cada sección (details nativo) */
.subtitulos-wrap {
  margin-top: 1rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.subtitulo-details {
  border: 1px solid var(--pgs-border);
  border-radius: 10px;
  background: #fff;
  overflow: hidden;
}

.subtitulo-details[open] {
  border-color: var(--pgs-primary);
  box-shadow: 0 4px 14px rgba(13, 79, 139, 0.1);
}

.subtitulo-details-summary {
  padding: 0.75rem 1rem;
  font-weight: 600;
  color: var(--pgs-primary-dark);
  cursor: pointer;
  list-style: none;
  background: var(--pgs-surface);
  user-select: none;
}

.subtitulo-details-summary::-webkit-details-marker {
  display: none;
}

.subtitulo-details-summary::before {
  content: "▸ ";
  display: inline-block;
  transition: transform 0.2s;
  color: var(--pgs-primary);
}

.subtitulo-details[open] .subtitulo-details-summary::before {
  transform: rotate(90deg);
}

.subtitulo-details-body {
  padding: 1rem 1.1rem 1.15rem;
  background: var(--pgs-surface);
  border-top: 1px solid var(--pgs-border);
}

.subtitulo-details-body .subtitulo-block {
  background: transparent;
  border: none;
  padding: 0;
  margin: 0;
}



.visita-form-actions {
  margin-top: 1.5rem;
}

.subtitulo-block .visita-field-question {
  background: transparent;
  border: none;
  padding: 0;
  margin-bottom: 0.35rem !important;
}

.subtitulo-details-body .visita-field-question {
  display: none;
}

.subtitulo-block .form-select {
  max-width: 180px;
  font-weight: 600;
  margin: 0 auto;
}

.visita-field-control .form-select,
.visita-field-control .form-control:not(textarea) {
  text-align: center;
}

.visita-form textarea,
.visita-textarea {
  width: 100% !important;
  min-width: 100% !important;
  max-width: 100% !important;
  min-height: 72px;
  flex: none !important;
  resize: vertical;
  border-radius: 8px;
  line-height: 1.45;
  display: block;
  text-align: left;
  transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.visita-form textarea.visita-field-empty:not(:focus),
.visita-form input[type="text"].visita-field-empty:not(:focus) {
  background-color: #e8ecf1;
  border-color: #d4dce6;
  color: var(--pgs-muted);
}

.visita-form textarea::placeholder,
.visita-form input[type="text"]::placeholder {
  color: #9aa8b5;
  opacity: 1;
}

.visita-form textarea:focus,
.visita-form input[type="text"]:focus {
  background-color: #fff;
  color: var(--pgs-text);
  border-color: var(--pgs-primary);
}

.visita-field-detail textarea,
.visita-field-row textarea {
  text-align: left;
}

.subtitulo-block textarea,
.subtitulo-details-body textarea {
  width: 100% !important;
  min-width: 100% !important;
  min-height: 72px;
  display: block;
}

.subtitulo-details-summary {
  text-align: center;
}

.subtitulo-actions {
  justify-content: center;
}

.subtitulo-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
  margin-top: 0.75rem;
}

/* Bloque de fotos: galería solo lectura (miniaturas + modal) */
.visita-media-block--gallery .visita-media-gallery {
  padding: 0.75rem;
  border: 1px solid var(--pgs-border);
  border-radius: 12px;
  background: var(--pgs-card);
}

.visita-media-empty {
  width: 100%;
  padding: 0.5rem 0;
}

.visita-photo-modal .modal-body {
  padding: 0;
  background: #0f2338;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 50vh;
  max-height: calc(100vh - 8rem);
}

.visita-photo-modal__img {
  display: block;
  max-width: 100%;
  max-height: calc(100vh - 8rem);
  width: auto;
  height: auto;
  object-fit: contain;
  margin: 0 auto;
}

button.visita-thumb {
  padding: 0;
  cursor: zoom-in;
  font: inherit;
  color: inherit;
  appearance: none;
  -webkit-appearance: none;
}

button.visita-thumb:hover {
  border-color: var(--pgs-primary);
  box-shadow: 0 4px 14px rgba(13, 79, 139, 0.2);
  transform: scale(1.04);
}

button.visita-thumb:focus-visible {
  outline: 2px solid var(--pgs-primary);
  outline-offset: 2px;
}

.visita-form[data-staff-readonly-selects="1"] select:disabled,
.visita-form[data-staff-readonly-selects="1"] select[disabled] {
  pointer-events: none;
  cursor: not-allowed;
  opacity: 0.85;
}

.visita-form[data-staff-readonly-selects="1"] .visita-integrantes-search {
  pointer-events: none;
  cursor: not-allowed;
  background-color: var(--pgs-surface, #f4f7fa);
}

/* Bloque de fotos legacy: acciones (izq) + miniaturas / drop (der) */
.visita-media-grid {
  display: grid;
  grid-template-columns: minmax(200px, 240px) 1fr;
  gap: 1rem;
  align-items: stretch;
}

.visita-media-actions {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding: 1rem;
  background: var(--pgs-surface);
  border: 1px solid var(--pgs-border);
  border-radius: 12px;
}

.visita-media-actions-title {
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--pgs-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin: 0 0 0.25rem;
}

.visita-media-hint {
  line-height: 1.35;
}

.visita-media-dropzone {
  position: relative;
  min-height: 120px;
  padding: 0.75rem;
  border: 2px dashed var(--pgs-border);
  border-radius: 12px;
  background: var(--pgs-card);
  cursor: pointer;
  transition: border-color 0.2s ease, background 0.2s ease, box-shadow 0.2s ease;
}

.visita-media-dropzone:focus-visible {
  outline: 2px solid var(--pgs-primary);
  outline-offset: 2px;
}

.visita-media-dropzone.is-dragover {
  border-color: var(--pgs-primary);
  background: var(--pgs-accent-soft);
  box-shadow: inset 0 0 0 1px rgba(13, 79, 139, 0.15);
}

.visita-media-drop-hint {
  margin: 0.5rem 0 0;
  font-size: 0.8rem;
  color: var(--pgs-muted);
  text-align: center;
}

.visita-media-dropzone.has-pending .visita-media-drop-hint,
.visita-media-dropzone:has(.visita-thumb) .visita-media-drop-hint {
  text-align: left;
}

.visita-thumbs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: flex-start;
  min-height: 84px;
}

.visita-thumb {
  display: block;
  flex: 0 0 auto;
  width: 84px;
  height: 84px;
  border-radius: 8px;
  overflow: hidden;
  border: 2px solid var(--pgs-border);
  background: #fff;
  box-shadow: 0 2px 8px rgba(15, 35, 60, 0.1);
  transition: border-color 0.15s ease, box-shadow 0.15s ease,
    transform 0.15s ease;
}

.visita-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

a.visita-thumb:hover {
  border-color: var(--pgs-primary);
  box-shadow: 0 4px 14px rgba(13, 79, 139, 0.2);
  transform: scale(1.04);
}

.visita-thumb-pending {
  border-style: dashed;
  border-color: var(--pgs-primary);
  opacity: 0.95;
  cursor: default;
  pointer-events: none;
}

.visita-media-upload:not(:disabled) {
  animation: visita-upload-pulse 1.5s ease-in-out infinite;
}

@keyframes visita-upload-pulse {
  0%,
  100% {
    box-shadow: 0 0 0 0 rgba(13, 79, 139, 0.35);
  }
  50% {
    box-shadow: 0 0 0 6px rgba(13, 79, 139, 0);
  }
}

.form-control:focus,
.form-select:focus {
  border-color: var(--pgs-primary);
  box-shadow: 0 0 0 0.2rem rgba(13, 79, 139, 0.15);
}

#id_status.bg-success,
#id_status.bg-warning {
  background-color: transparent !important;
  color: inherit;
}

/* Cargando al subir fotos */
.visita-page-loader {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
  background: rgba(255, 255, 255, 0.82);
  backdrop-filter: blur(6px);
}

.visita-page-loader[hidden] {
  display: none !important;
}

.visita-page-loader-spin {
  width: 42px;
  height: 42px;
  border: 3px solid var(--pgs-border);
  border-top-color: var(--pgs-primary);
  border-radius: 50%;
  animation: visita-loader-spin 0.75s linear infinite;
}

.visita-page-loader-text {
  margin: 0;
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--pgs-primary-dark);
}

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

body.visita-is-loading {
  overflow: hidden;
}

/* Toasts — esquina superior izquierda */
.pgs-toast-stack {
  position: fixed;
  top: 5.25rem;
  left: 1rem;
  z-index: 2100;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  width: min(360px, calc(100vw - 2rem));
  pointer-events: none;
}

.pgs-toast {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  padding: 0.7rem 0.85rem;
  border-radius: 10px;
  border: 1px solid var(--pgs-border);
  background: #fff;
  box-shadow: 0 10px 28px rgba(13, 79, 139, 0.16);
  pointer-events: auto;
  opacity: 0;
  transform: translateX(-12px);
  transition: opacity 0.28s ease, transform 0.28s ease;
}

.pgs-toast.is-visible {
  opacity: 1;
  transform: translateX(0);
}

.pgs-toast.is-hiding {
  opacity: 0;
  transform: translateX(-10px);
}

.pgs-toast-body {
  flex: 1 1 auto;
  font-size: 0.86rem;
  line-height: 1.4;
  color: var(--pgs-text);
}

.pgs-toast-success {
  border-left: 4px solid var(--pgs-success);
}

.pgs-toast-success .pgs-toast-body {
  color: var(--pgs-success);
  font-weight: 600;
}

.pgs-toast-warning {
  border-left: 4px solid var(--pgs-accent);
}

.pgs-toast-warning .pgs-toast-body {
  color: #7a5a00;
}

.pgs-toast-info {
  border-left: 4px solid var(--pgs-primary);
}

.pgs-toast-list {
  margin: 0.45rem 0 0;
  padding-left: 1.1rem;
  font-size: 0.78rem;
  color: var(--pgs-text);
  font-weight: 400;
}

.pgs-toast-close {
  flex: 0 0 auto;
  border: none;
  background: transparent;
  color: var(--pgs-muted);
  font-size: 1.15rem;
  line-height: 1;
  padding: 0 0.1rem;
  cursor: pointer;
}

.pgs-toast-close:hover {
  color: var(--pgs-text);
}

@media (max-width: 768px) {
  .pgs-toast-stack {
    top: 4.75rem;
    left: 0.65rem;
    width: min(320px, calc(100vw - 1.3rem));
  }
}

/* Visita actuada vs circunstanciada */
.visita-scope-hidden {
  display: none !important;
}

#accordionVisitaMain .visita-accordion-section:not(.visita-scope-hidden) {
  display: block !important;
}

@media (max-width: 768px) {
  .visita-media-grid {
    grid-template-columns: 1fr;
  }

  .visita-thumb {
    width: 72px;
    height: 72px;
  }

  .visita-toolbar-bar {
    grid-template-columns: 1fr;
    justify-items: stretch;
  }

  .visita-toolbar-bar .visita-toolbar-btn-close,
  .visita-toolbar-bar .visita-toolbar-status,
  .visita-toolbar-bar .visita-toolbar-btn-pdf {
    justify-self: stretch;
  }

  .visita-toolbar-bar .visita-toolbar-status {
    justify-self: center;
    width: fit-content;
    margin: 0 auto;
  }
}

/* Selector dinámico de integrantes */
.visita-field-control-integrantes {
  justify-content: stretch !important;
  text-align: left;
}

.visita-integrantes-picker {
  position: relative;
  width: 100%;
  text-align: left;
}

.visita-integrantes-search {
  margin-bottom: 0.5rem;
}

.visita-integrantes-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  min-height: 1.75rem;
  margin-bottom: 0.35rem;
}

.visita-integrantes-chips:empty::before {
  content: "Ningún integrante seleccionado";
  font-size: 0.8rem;
  color: var(--pgs-muted);
  font-style: italic;
}

.visita-integrantes-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.28rem 0.55rem 0.28rem 0.65rem;
  border-radius: 999px;
  background: linear-gradient(135deg, var(--pgs-primary), var(--pgs-primary-dark));
  color: #fff;
  font-size: 0.8rem;
  font-weight: 600;
  line-height: 1.2;
  animation: visita-chip-in 0.2s ease;
}

@keyframes visita-chip-in {
  from {
    opacity: 0;
    transform: scale(0.92);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

.visita-integrantes-chip-remove {
  border: none;
  background: rgba(255, 255, 255, 0.22);
  color: #fff;
  width: 1.15rem;
  height: 1.15rem;
  border-radius: 50%;
  font-size: 0.85rem;
  line-height: 1;
  padding: 0;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.visita-integrantes-chip-remove:hover {
  background: rgba(255, 255, 255, 0.35);
}

.visita-integrantes-suggestions {
  position: absolute;
  left: 0;
  right: 0;
  z-index: 50;
  list-style: none;
  margin: 0;
  padding: 0.35rem;
  max-height: 200px;
  overflow-y: auto;
  border: 1px solid var(--pgs-border);
  border-radius: 10px;
  background: var(--pgs-card);
  box-shadow: var(--pgs-shadow);
}

.visita-integrantes-suggestions:not([hidden]) {
  display: block;
}

.visita-integrantes-suggestion {
  padding: 0.45rem 0.6rem;
  border-radius: 6px;
  cursor: pointer;
  font-size: 0.86rem;
  color: var(--pgs-text);
}

.visita-integrantes-suggestion:hover,
.visita-integrantes-suggestion.is-active {
  background: var(--pgs-accent-soft);
  color: var(--pgs-primary-dark);
}

.visita-integrantes-suggestion.is-selected {
  opacity: 0.45;
  pointer-events: none;
}

.visita-integrantes-native {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.visita-integrantes-select {
  width: 100%;
  min-height: 0;
}

/* ——— Modo oscuro (negro mate + tonos suaves) ——— */
[data-theme="dark"] {
  color-scheme: dark;
  --pgs-matte: #121212;
  --pgs-primary: #6eb8e8;
  --pgs-primary-dark: #8ecbf0;
  --pgs-accent: #d9ad4a;
  --pgs-accent-soft: #1e2a36;
  --pgs-success: #5bc987;
  --pgs-danger: #e88a82;
  --pgs-surface: #181818;
  --pgs-card: #1e1e1e;
  --pgs-elevated: #262626;
  --pgs-input-bg: #2a2a2a;
  --pgs-input-bg-focus: #333333;
  --pgs-input-border: #3d3d3d;
  --pgs-text: #d4d4d4;
  --pgs-muted: #9a9a9a;
  --pgs-border: #333333;
  --pgs-shadow: 0 8px 28px rgba(0, 0, 0, 0.55);
  --pgs-chart-grid: rgba(255, 255, 255, 0.1);
  --pgs-chart-fill: rgba(110, 184, 232, 0.85);
  --pgs-chart-line-fill: rgba(217, 173, 74, 0.22);
  --bs-body-bg: #121212;
  --bs-body-color: var(--pgs-text);
  --bs-border-color: var(--pgs-border);
  --bs-tertiary-bg: var(--pgs-elevated);
  --bs-secondary-bg: var(--pgs-surface);
}

[data-theme="dark"] body,
[data-theme="dark"] main.container {
  background-color: var(--pgs-matte) !important;
  color: var(--pgs-text);
}

[data-theme="dark"] body {
  background: var(--pgs-matte);
}

[data-theme="dark"] .page-title {
  color: var(--pgs-primary-dark);
}

[data-theme="dark"] .pgs-navbar {
  background: linear-gradient(
    90deg,
    #1a1f24 0%,
    #252b32 50%,
    #1a1f24 100%
  ) !important;
  box-shadow: 0 4px 18px rgba(0, 0, 0, 0.45);
  border-bottom: 1px solid #333a42;
}

[data-theme="dark"] .pgs-navbar .nav-link,
[data-theme="dark"] .pgs-navbar .navbar-brand {
  color: #ffffff !important;
  font-weight: 600;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);
}

[data-theme="dark"] .pgs-navbar .nav-link:hover:not(.disabled) {
  color: #ffffff !important;
  background: rgba(255, 255, 255, 0.12) !important;
}

[data-theme="dark"] .pgs-navbar .nav-link.disabled {
  color: rgba(255, 255, 255, 0.5) !important;
  text-shadow: none;
}

[data-theme="dark"] .pgs-navbar .navbar-toggler {
  border-color: rgba(255, 255, 255, 0.45);
}

[data-theme="dark"] .pgs-navbar .navbar-toggler-icon {
  filter: brightness(0) invert(1);
}

[data-theme="dark"] .visita-toolbar,
[data-theme="dark"] .visita-form,
[data-theme="dark"] .pgs-card,
[data-theme="dark"] .visita-card:not(.visita-card--act):not(.visita-card--cir),
[data-theme="dark"] .pgs-toast {
  background: var(--pgs-card);
  color: var(--pgs-text);
}

[data-theme="dark"] .visita-accordion-main > .accordion-item,
[data-theme="dark"] .visita-accordion-main .accordion-body,
[data-theme="dark"] .visita-accordion-main .accordion-collapse {
  background-color: var(--pgs-matte) !important;
}

[data-theme="dark"] .visita-toolbar {
  background: rgba(30, 30, 30, 0.97);
}

[data-theme="dark"] .visita-integrantes-suggestions {
  background: var(--pgs-elevated);
  border-color: var(--pgs-input-border);
}

[data-theme="dark"] .visita-integrantes-suggestion:hover,
[data-theme="dark"] .visita-integrantes-suggestion.is-active {
  background: #333333;
  color: var(--pgs-primary-dark);
}

[data-theme="dark"] .visita-integrantes-chip {
  background: linear-gradient(135deg, #3d5a73, #2e4558);
}

[data-theme="dark"] .visita-field-row,
[data-theme="dark"] .subtitulo-block,
[data-theme="dark"] .visita-media-actions,
[data-theme="dark"] .visita-field-row.visita-field-media-block {
  background: var(--pgs-surface);
}

[data-theme="dark"] .visita-estacion-domicilio {
  color: var(--pgs-muted);
}

[data-theme="dark"] .visita-field-cell,
[data-theme="dark"] .visita-field-row.visita-field-check,
[data-theme="dark"] .subtitulo-details,
[data-theme="dark"] .subtitulo-details-body,
[data-theme="dark"] .visita-media-dropzone,
[data-theme="dark"] .visita-thumb,
[data-theme="dark"] .visita-toolbar-btn,
[data-theme="dark"] .visita-status-selector {
  background: var(--pgs-elevated);
}

[data-theme="dark"] .visita-field-question {
  background: linear-gradient(90deg, #1a2430, #222c3a, #1a2430);
  color: var(--pgs-primary-dark);
}

[data-theme="dark"] .visita-field-label {
  color: var(--pgs-primary-dark);
}

[data-theme="dark"] .visita-accordion-main {
  --bs-accordion-btn-bg: var(--pgs-surface);
  --bs-accordion-active-bg: #2a3544;
  --bs-accordion-active-color: var(--pgs-text);
  --bs-accordion-btn-color: var(--pgs-text);
  --bs-accordion-border-color: var(--pgs-border);
  --bs-accordion-bg: var(--pgs-card);
}

[data-theme="dark"]
  .visita-accordion-main
  > .accordion-item
  > .accordion-header
  .accordion-button {
  background: var(--pgs-surface);
  color: var(--pgs-text);
}

[data-theme="dark"]
  .visita-accordion-main
  > .accordion-item
  > .accordion-header
  .accordion-button:not(.collapsed) {
  background: linear-gradient(90deg, #222c3a, #2a3544);
  color: var(--pgs-text);
}

[data-theme="dark"] .subtitulo-details-summary {
  background: var(--pgs-surface);
  color: var(--pgs-text);
}

[data-theme="dark"] .subtitulo-details[open] {
  border-color: var(--pgs-input-border);
}

/* Inputs, selects y textareas — fondo tenue */
[data-theme="dark"] .form-control,
[data-theme="dark"] .form-select,
[data-theme="dark"] input.form-control,
[data-theme="dark"] textarea.form-control,
[data-theme="dark"] .visita-form textarea,
[data-theme="dark"] .visita-form input[type="text"],
[data-theme="dark"] .visita-form input[type="number"],
[data-theme="dark"] .visita-form input[type="date"],
[data-theme="dark"] .visita-form input[type="time"],
[data-theme="dark"] .visita-status-control select {
  background-color: var(--pgs-input-bg) !important;
  color: var(--pgs-text) !important;
  border-color: var(--pgs-input-border) !important;
}

[data-theme="dark"] .form-control::placeholder,
[data-theme="dark"] .visita-form textarea::placeholder,
[data-theme="dark"] .visita-form input[type="text"]::placeholder {
  color: #7a8a9a;
  opacity: 1;
}

[data-theme="dark"] .form-control:focus,
[data-theme="dark"] .form-select:focus,
[data-theme="dark"] .visita-form textarea:focus,
[data-theme="dark"] .visita-form input[type="text"]:focus,
[data-theme="dark"] .visita-form input[type="number"]:focus,
[data-theme="dark"] .visita-form input[type="date"]:focus,
[data-theme="dark"] .visita-form input[type="time"]:focus {
  background-color: var(--pgs-input-bg-focus) !important;
  color: var(--pgs-text) !important;
  border-color: var(--pgs-primary) !important;
  box-shadow: 0 0 0 0.15rem rgba(110, 184, 232, 0.22) !important;
}

[data-theme="dark"] .visita-form select.visita-eval-select.visita-eval-si {
  background-color: #1a3d2c !important;
  border-color: #3d8f62 !important;
  color: #8fd9ae !important;
}

[data-theme="dark"] .visita-form select.visita-eval-select.visita-eval-no {
  background-color: #3d2226 !important;
  border-color: #a64d55 !important;
  color: #f0a0a0 !important;
}

[data-theme="dark"] .visita-form select.visita-eval-select.visita-eval-na {
  background-color: #3d3420 !important;
  border-color: #a68b3d !important;
  color: #e8cc70 !important;
}

[data-theme="dark"] .visita-form select.visita-eval-select.visita-eval-si:focus {
  background-color: #1f4a36 !important;
  border-color: #4fa878 !important;
  color: #9ee0b8 !important;
  box-shadow: 0 0 0 0.15rem rgba(61, 143, 98, 0.35) !important;
}

[data-theme="dark"] .visita-form select.visita-eval-select.visita-eval-no:focus {
  background-color: #4a282c !important;
  border-color: #c06068 !important;
  color: #f5b0b0 !important;
  box-shadow: 0 0 0 0.15rem rgba(166, 77, 85, 0.35) !important;
}

[data-theme="dark"] .visita-form select.visita-eval-select.visita-eval-na:focus {
  background-color: #4a4028 !important;
  border-color: #c9a04a !important;
  color: #f0dc88 !important;
  box-shadow: 0 0 0 0.15rem rgba(166, 139, 61, 0.35) !important;
}

[data-theme="dark"] .form-control:disabled,
[data-theme="dark"] .form-select:disabled,
[data-theme="dark"] input:disabled,
[data-theme="dark"] select:disabled {
  background-color: #1f2835 !important;
  color: var(--pgs-muted) !important;
  border-color: var(--pgs-border) !important;
  opacity: 0.9;
}

[data-theme="dark"] .visita-form textarea.visita-field-empty:not(:focus),
[data-theme="dark"] .visita-form input[type="text"].visita-field-empty:not(:focus) {
  background-color: #242e3b !important;
  border-color: #354656 !important;
  color: var(--pgs-muted) !important;
}

[data-theme="dark"] .form-select option {
  background: var(--pgs-card);
  color: var(--pgs-text);
}

[data-theme="dark"] .visita-toolbar-btn-close,
[data-theme="dark"] .visita-toolbar-btn-pdf {
  background: var(--pgs-elevated);
}

[data-theme="dark"] .visita-page-loader {
  background: rgba(16, 22, 30, 0.9);
}

[data-theme="dark"] .visita-status-selector.visita-status-act {
  background: #1e2a26;
  border-color: rgba(91, 201, 135, 0.35);
}

[data-theme="dark"] .visita-status-selector.visita-status-cir {
  background: #2a261c;
  border-color: rgba(217, 173, 74, 0.35);
}

[data-theme="dark"] .visita-status-switch-label-act,
[data-theme="dark"] .visita-status-selector.visita-status-act .visita-status-switch-label-act {
  color: #8fd9ae;
}

[data-theme="dark"] .visita-status-switch-label-cir,
[data-theme="dark"] .visita-status-selector.visita-status-cir .visita-status-switch-label-cir {
  color: #e8cc70;
}

[data-theme="dark"] .visita-section-no-count {
  background: rgba(232, 122, 114, 0.22);
  color: #f0a0a0;
}

[data-theme="dark"] .modal-content {
  background-color: var(--pgs-card);
  color: var(--pgs-text);
  border-color: var(--pgs-border);
}

[data-theme="dark"] .modal-header,
[data-theme="dark"] .modal-footer {
  border-color: var(--pgs-border);
}

[data-theme="dark"] .btn-close {
  filter: invert(0.82);
}

[data-theme="dark"] .btn-secondary {
  background-color: var(--pgs-elevated);
  border-color: var(--pgs-input-border);
  color: var(--pgs-text);
}

[data-theme="dark"] .dropdown-menu {
  background-color: var(--pgs-card);
  border-color: var(--pgs-border);
}

[data-theme="dark"] .dropdown-item {
  color: var(--pgs-text);
}

[data-theme="dark"] .dropdown-item:hover,
[data-theme="dark"] .dropdown-item:focus {
  background-color: var(--pgs-elevated);
  color: var(--pgs-text);
}

[data-theme="dark"] .pgs-toast-body {
  color: var(--pgs-text);
}

[data-theme="dark"] .pgs-toast-success .pgs-toast-body {
  color: var(--pgs-success);
}

[data-theme="dark"] .pgs-toast-warning .pgs-toast-body {
  color: #c9b06a;
}

[data-theme="dark"] .visitas-view-toggle {
  background: var(--pgs-elevated);
  border-color: var(--pgs-border);
}

[data-theme="dark"] .visitas-view-btn.is-active {
  background: var(--pgs-card);
  color: var(--pgs-text);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.35);
}

[data-theme="dark"] .pgs-grid--visitas.is-list-view .visita-card__actions {
  border-color: var(--pgs-border);
}

.docs-source-panel {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.docs-source-panel-head {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.docs-source-panel-label {
  font-size: 0.8rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--pgs-muted);
}

.docs-source-status {
  font-size: 0.78rem;
  font-weight: 600;
}

.docs-source-status-ok {
  color: var(--pgs-success);
}

.docs-source-status-off {
  color: var(--pgs-danger);
}

.docs-source-toggle .visitas-view-btn {
  text-decoration: none;
}

.docs-dias-panel {
  border-left: 3px solid var(--pgs-primary);
}

.docs-dias-form {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1rem;
}

.docs-dias-form-head {
  flex: 1 1 240px;
  min-width: 0;
}

.docs-dias-form-label {
  display: block;
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--pgs-primary-dark);
  margin-bottom: 0.25rem;
}

.docs-dias-form-hint {
  font-size: 0.8rem;
  color: var(--pgs-muted);
}

.docs-dias-form-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem;
  flex: 1 1 280px;
}

.docs-dias-select {
  min-width: 260px;
  max-width: 100%;
  border-radius: 10px;
  font-size: 0.875rem;
}

.docs-dias-result {
  font-size: 0.85rem;
  color: var(--pgs-muted);
  white-space: nowrap;
}

.docs-dias-result strong {
  color: var(--pgs-primary-dark);
}

.docs-dias-badge {
  display: inline-block;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  font-size: 0.78rem;
  font-weight: 700;
  white-space: nowrap;
}

.docs-dias-reciente {
  background: rgba(26, 127, 75, 0.12);
  color: var(--pgs-success);
}

.docs-dias-baja {
  background: rgba(232, 163, 23, 0.18);
  color: #8a5f00;
}

.docs-dias-media {
  background: rgba(230, 126, 34, 0.18);
  color: #9a4e08;
}

.docs-dias-alta {
  background: rgba(192, 57, 43, 0.14);
  color: var(--pgs-danger);
}

.docs-dias-critica {
  background: rgba(192, 57, 43, 0.28);
  color: #8b1e14;
}

.docs-ranking-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem 1rem;
  margin-bottom: 1rem;
}

.docs-export-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.docs-export-btn {
  font-weight: 600;
  border-radius: 8px;
}

.docs-kpi-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 1rem;
}

.docs-kpi-card {
  background: var(--pgs-card);
  border: 1px solid var(--pgs-border);
  border-radius: var(--pgs-radius);
  box-shadow: var(--pgs-shadow);
  padding: 1.1rem 1.25rem;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.docs-kpi-label {
  font-size: 0.78rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--pgs-muted);
}

.docs-kpi-value {
  font-size: 1.85rem;
  font-weight: 700;
  color: var(--pgs-primary-dark);
  line-height: 1.1;
}

.docs-kpi-hint {
  display: block;
  font-size: 0.72rem;
  color: var(--pgs-muted);
  line-height: 1.35;
  margin-top: 0.2rem;
}

.docs-charts-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 1.25rem;
}

.docs-chart-card {
  min-height: 360px;
  display: flex;
  flex-direction: column;
}

.docs-section-title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--pgs-primary-dark);
  margin: 0 0 1rem;
}

.docs-chart-wrap {
  position: relative;
  flex: 1;
  min-height: 260px;
}

.docs-chart-caption {
  font-size: 0.82rem;
  color: var(--pgs-muted, #5c6f82);
  line-height: 1.45;
}

.docs-chart-card--fields {
  min-height: 320px;
}

.docs-chart-wrap--fields {
  min-height: 280px;
}

.docs-table-wrap {
  max-height: 480px;
  overflow: auto;
}

.docs-table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: var(--pgs-card);
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--pgs-muted);
  border-bottom-width: 2px;
}

.docs-sortable {
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
  transition: color 0.15s ease;
}

.docs-sortable:hover {
  color: var(--pgs-primary-dark);
}

.docs-sort-label {
  margin-right: 0.2rem;
}

.docs-sort-icon {
  display: inline-block;
  width: 0.65rem;
  font-size: 0.6rem;
  opacity: 0.35;
  vertical-align: middle;
}

.docs-sortable.is-sorted-asc .docs-sort-icon,
.docs-sortable.is-sorted-desc .docs-sort-icon {
  opacity: 1;
  color: var(--pgs-primary);
}

.docs-sortable.is-sorted-asc .docs-sort-icon::after {
  content: "▲";
}

.docs-sortable.is-sorted-desc .docs-sort-icon::after {
  content: "▼";
}

.docs-badge-count {
  display: inline-block;
  min-width: 2rem;
  padding: 0.15rem 0.5rem;
  border-radius: 999px;
  background: rgba(13, 79, 139, 0.12);
  color: var(--pgs-primary-dark);
  font-weight: 700;
  font-size: 0.85rem;
  text-align: center;
}

[data-theme="dark"] .page-header {
  border-bottom-color: var(--pgs-border);
}

[data-theme="dark"] .page-subtitle {
  color: var(--pgs-muted);
}

[data-theme="dark"] .docs-kpi-card {
  background: var(--pgs-card);
  border-color: var(--pgs-border);
  color: var(--pgs-text);
}

[data-theme="dark"] .docs-kpi-value {
  color: var(--pgs-primary-dark);
}

[data-theme="dark"] .docs-section-title {
  color: var(--pgs-primary-dark);
}

[data-theme="dark"] .docs-chart-card,
[data-theme="dark"] .docs-source-panel {
  color: var(--pgs-text);
}

[data-theme="dark"] .docs-chart-wrap .text-muted,
[data-theme="dark"] .pgs-card .text-muted {
  color: var(--pgs-muted) !important;
}

[data-theme="dark"] .docs-source-panel .visitas-view-btn {
  color: var(--pgs-muted);
}

[data-theme="dark"] .docs-source-panel .visitas-view-btn:hover {
  color: var(--pgs-primary-dark);
}

[data-theme="dark"] .docs-source-panel .visitas-view-btn.is-active {
  color: var(--pgs-text);
}

[data-theme="dark"] .docs-badge-count {
  background: rgba(110, 184, 232, 0.22);
  color: #9ed4f5;
}

[data-theme="dark"] .docs-table {
  --bs-table-bg: transparent;
  --bs-table-color: var(--pgs-text);
  --bs-table-border-color: var(--pgs-border);
  --bs-table-striped-bg: rgba(255, 255, 255, 0.03);
  --bs-table-striped-color: var(--pgs-text);
  --bs-table-hover-bg: var(--pgs-elevated);
  --bs-table-hover-color: var(--pgs-text);
  color: var(--pgs-text);
}

[data-theme="dark"] .docs-table > :not(caption) > * > * {
  background-color: transparent;
  color: var(--pgs-text);
  border-color: var(--pgs-border);
  box-shadow: none;
}

[data-theme="dark"] .docs-table thead th {
  background: var(--pgs-elevated);
  color: var(--pgs-muted);
  border-bottom-color: var(--pgs-border);
}

[data-theme="dark"] .docs-sortable:hover {
  color: var(--pgs-primary-dark);
}

[data-theme="dark"] .docs-sortable.is-sorted-asc .docs-sort-icon,
[data-theme="dark"] .docs-sortable.is-sorted-desc .docs-sort-icon {
  color: var(--pgs-primary);
}

[data-theme="dark"] .docs-table tbody tr:nth-child(even) > * {
  background-color: rgba(255, 255, 255, 0.02);
}

[data-theme="dark"] .docs-table tbody tr:hover > * {
  background-color: var(--pgs-elevated);
  color: var(--pgs-text);
}

[data-theme="dark"] .docs-table .fw-semibold {
  color: var(--pgs-primary-dark);
}

[data-theme="dark"] .docs-table-wrap {
  scrollbar-color: var(--pgs-border) var(--pgs-surface);
}

[data-theme="dark"] .pgs-card .alert-warning.pgs-alert {
  background: rgba(217, 173, 74, 0.15);
  border: 1px solid rgba(217, 173, 74, 0.35);
  color: #e8cc70;
}

[data-theme="dark"] .docs-dias-panel {
  border-left-color: var(--pgs-primary);
}

[data-theme="dark"] .docs-dias-form-label,
[data-theme="dark"] .docs-dias-result strong {
  color: var(--pgs-primary-dark);
}

[data-theme="dark"] .docs-dias-select {
  background-color: var(--pgs-input-bg) !important;
  color: var(--pgs-text) !important;
  border-color: var(--pgs-input-border) !important;
}

[data-theme="dark"] .docs-dias-reciente {
  background: rgba(91, 201, 135, 0.18);
  color: #8fd9ae;
}

[data-theme="dark"] .docs-dias-baja {
  background: rgba(217, 173, 74, 0.2);
  color: #e8cc70;
}

[data-theme="dark"] .docs-dias-media {
  background: rgba(232, 163, 23, 0.28);
  color: #f0d080;
}

[data-theme="dark"] .docs-dias-alta {
  background: rgba(232, 138, 130, 0.22);
  color: #f0a0a0;
}

[data-theme="dark"] .docs-dias-critica {
  background: rgba(232, 138, 130, 0.38);
  color: #ffb8b0;
}

[data-theme="dark"] .docs-export-btn.btn-outline-primary {
  color: #9ed4f5;
  border-color: rgba(110, 184, 232, 0.55);
}

[data-theme="dark"] .docs-export-btn.btn-outline-primary:hover {
  background: rgba(110, 184, 232, 0.18);
  color: #c8e8ff;
}

[data-theme="dark"] .docs-export-btn.btn-outline-danger {
  color: #f0a0a0;
  border-color: rgba(232, 138, 130, 0.55);
}

[data-theme="dark"] .docs-export-btn.btn-outline-danger:hover {
  background: rgba(232, 138, 130, 0.18);
  color: #ffc8c4;
}

/* —— Accesos (auditoría) —— */
.pgs-accesos .accesos-kpi-time {
  font-size: 1.1rem;
}

.pgs-accesos .accesos-filtros-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 0.5rem;
  width: 100%;
  flex: 1 1 100%;
}

.pgs-accesos .accesos-filtros-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  align-items: center;
}

.pgs-accesos .accesos-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem 1rem;
  padding-top: 0.5rem;
  border-top: 1px solid var(--pgs-border);
}

.pgs-accesos .accesos-auto-label {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.85rem;
  margin: 0;
  cursor: pointer;
}

.pgs-accesos .accesos-ruta code {
  word-break: break-all;
  font-size: 0.78em;
}

.pgs-accesos .accesos-metodo {
  display: inline-block;
  padding: 0.12rem 0.45rem;
  border-radius: 6px;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  background: var(--pgs-border);
  color: var(--pgs-muted);
}

.pgs-accesos .accesos-metodo--get {
  background: rgba(13, 79, 139, 0.12);
  color: var(--pgs-primary);
}

.pgs-accesos .accesos-metodo--post {
  background: rgba(232, 163, 23, 0.2);
  color: #8a5f00;
}

.pgs-accesos .accesos-codigo {
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

.pgs-accesos .accesos-codigo--ok {
  color: var(--pgs-success);
}

.pgs-accesos .accesos-codigo--redirect {
  color: var(--pgs-muted);
}

.pgs-accesos .accesos-codigo--error {
  color: var(--pgs-danger);
}

.pgs-accesos .accesos-pager {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
}

.pgs-accesos .accesos-pager-info {
  font-size: 0.85rem;
  color: var(--pgs-muted);
}

.pgs-accesos .accesos-table-wrap {
  max-height: min(70vh, 640px);
}

.pgs-accesos .accesos-alertas-panel {
  border-left: 3px solid var(--pgs-danger);
}

.pgs-accesos .accesos-alerta-item {
  background: rgba(192, 57, 43, 0.06);
}

.pgs-accesos .accesos-evento {
  display: inline-block;
  padding: 0.12rem 0.45rem;
  border-radius: 6px;
  font-size: 0.72rem;
  font-weight: 700;
  white-space: nowrap;
}

.pgs-accesos .accesos-evento--success {
  background: rgba(25, 135, 84, 0.15);
  color: var(--pgs-success);
}

.pgs-accesos .accesos-evento--danger {
  background: rgba(192, 57, 43, 0.14);
  color: var(--pgs-danger);
}

.pgs-accesos .accesos-evento--scan {
  background: rgba(108, 117, 125, 0.15);
  color: var(--pgs-muted);
}

.pgs-accesos .accesos-evento--muted {
  background: var(--pgs-surface);
  color: var(--pgs-muted);
}

.pgs-accesos .accesos-row-alerta {
  background: rgba(192, 57, 43, 0.05);
}

.pgs-accesos .accesos-check-escaneos {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.85rem;
  margin: 0;
  padding: 0.35rem 0;
}

.pgs-theme-toggle {
  display: inline-flex;
  align-items: center;
  margin: 0 0.35rem;
  padding: 0.2rem;
  border: none;
  border-radius: 999px;
  background: transparent;
  cursor: pointer;
  transition: opacity 0.2s ease;
}

.pgs-theme-toggle:hover {
  opacity: 0.92;
}

.pgs-theme-toggle:focus-visible {
  outline: 2px solid rgba(255, 255, 255, 0.55);
  outline-offset: 3px;
}

.pgs-theme-switch {
  position: relative;
  display: block;
  width: 2.75rem;
  height: 1.45rem;
  flex-shrink: 0;
}

.pgs-theme-switch-track {
  position: absolute;
  inset: 0;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.22);
  border: 1px solid rgba(255, 255, 255, 0.28);
  transition: background 0.25s ease, border-color 0.25s ease;
}

.pgs-theme-switch-thumb {
  position: absolute;
  top: 2px;
  left: 2px;
  width: 1.05rem;
  height: 1.05rem;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.28);
  transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}

.pgs-theme-toggle.is-dark .pgs-theme-switch-track {
  background: rgba(110, 184, 232, 0.45);
  border-color: rgba(110, 184, 232, 0.55);
}

.pgs-theme-toggle.is-dark .pgs-theme-switch-thumb {
  transform: translateX(1.3rem);
  background: #e8f4fc;
}

.pgs-navbar .nav-item:has(.pgs-theme-toggle) {
  display: flex;
  align-items: center;
}

/* —— Carga global (todas las páginas) —— */
html.pgs-is-loading {
  overflow: hidden;
}

.pgs-page-loader {
  position: fixed;
  inset: 0;
  z-index: 1080;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
  background: rgba(244, 247, 251, 0.82);
  backdrop-filter: blur(4px);
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.pgs-page-loader[hidden] {
  display: none !important;
  visibility: hidden;
  opacity: 0;
  pointer-events: none;
}

.pgs-page-loader-panel {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1rem;
  padding: 1.75rem 2rem;
  border-radius: var(--pgs-radius);
  background: var(--pgs-card);
  border: 1px solid var(--pgs-border);
  box-shadow: var(--pgs-shadow);
  min-width: min(280px, 100%);
}

.pgs-page-loader-spin {
  width: 3rem;
  height: 3rem;
  border: 3px solid rgba(13, 79, 139, 0.18);
  border-top-color: var(--pgs-primary);
  border-radius: 50%;
  animation: pgs-loader-spin 0.75s linear infinite;
}

.pgs-page-loader-text {
  margin: 0;
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--pgs-primary-dark);
  text-align: center;
}

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

[data-theme="dark"] .pgs-page-loader {
  background: rgba(18, 18, 18, 0.78);
}

[data-theme="dark"] .pgs-page-loader-panel {
  background: var(--pgs-card);
  border-color: var(--pgs-border);
}

[data-theme="dark"] .pgs-page-loader-spin {
  border-color: rgba(110, 184, 232, 0.22);
  border-top-color: var(--pgs-primary);
}

[data-theme="dark"] .pgs-page-loader-text {
  color: var(--pgs-primary-dark);
}

/* —— Bitácora (bi_process) —— */
.bitacora-section-title {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--pgs-primary-dark);
  margin: 0 0 1.25rem;
}

.bitacora-drop-zone {
  border: 2px dashed var(--pgs-border);
  border-radius: var(--pgs-radius);
  background: var(--pgs-surface);
  min-height: 200px;
  cursor: pointer;
  transition: border-color 0.2s ease, background 0.2s ease;
}

.bitacora-drop-zone:hover {
  border-color: var(--pgs-primary);
}

.bitacora-drop-zone.is-dragover {
  border-color: var(--pgs-primary);
  background: var(--pgs-accent-soft);
}

.bitacora-drop-icon {
  color: var(--pgs-primary);
}

.bitacora-drop-title {
  color: var(--pgs-text);
  font-size: 1.05rem;
  font-weight: 600;
}

.bitacora-drop-hint,
.bitacora-file-list-empty {
  color: var(--pgs-muted);
  font-size: 0.9rem;
}

.bitacora-files-label {
  font-weight: 700;
  color: var(--pgs-primary-dark);
  margin-bottom: 0.65rem;
}

.bitacora-file-list {
  max-height: 220px;
  overflow-y: auto;
  border: 1px solid var(--pgs-border);
  border-radius: 10px;
  padding: 0.75rem;
  background: var(--pgs-surface);
  scrollbar-color: var(--pgs-border) transparent;
}

.bitacora-file-list-inner:not(:empty) + .bitacora-file-list-empty {
  display: none;
}

.bitacora-file-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 0.75rem;
  padding: 0.55rem 0.65rem;
  border-radius: 8px;
  background: var(--pgs-card);
  border: 1px solid var(--pgs-border);
  color: var(--pgs-text);
}

.bitacora-file-item + .bitacora-file-item {
  margin-top: 0.45rem;
}

.bitacora-file-name {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 0.88rem;
}

.bitacora-file-badge {
  flex-shrink: 0;
  font-size: 0.72rem;
  font-weight: 600;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  background: rgba(13, 79, 139, 0.12);
  color: var(--pgs-primary-dark);
}

.bitacora-download-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.bitacora-download-text {
  flex: 1 1 220px;
  color: var(--pgs-muted);
  line-height: 1.5;
}

.bitacora-download-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  flex-shrink: 0;
  font-weight: 600;
  border-radius: 10px;
  padding: 0.55rem 1rem;
}

[data-theme="dark"] .bitacora-drop-zone {
  background: var(--pgs-elevated);
}

[data-theme="dark"] .bitacora-drop-zone.is-dragover {
  background: var(--pgs-accent-soft);
  border-color: var(--pgs-primary);
}

[data-theme="dark"] .bitacora-drop-title {
  color: var(--pgs-text);
}

[data-theme="dark"] .bitacora-file-list {
  background: var(--pgs-elevated);
  scrollbar-color: var(--pgs-border) var(--pgs-elevated);
}

[data-theme="dark"] .bitacora-file-item {
  background: var(--pgs-surface);
  border-color: var(--pgs-border);
  color: var(--pgs-text);
}

[data-theme="dark"] .bitacora-file-badge {
  background: rgba(110, 184, 232, 0.2);
  color: #9ed4f5;
}

[data-theme="dark"] .bitacora-download-card {
  background: var(--pgs-card);
  border-color: var(--pgs-border);
}

[data-theme="dark"] .bitacora-download-text {
  color: var(--pgs-muted);
}

[data-theme="dark"] .bitacora-download-btn.btn-success {
  background: #2d6b45;
  border-color: #3d8458;
  color: #d4f0de;
}

[data-theme="dark"] .bitacora-download-btn.btn-success:hover {
  background: #3a8256;
  border-color: #4a9a68;
  color: #ecf8f0;
}

[data-theme="dark"] .bitacora-panel .alert-danger.pgs-alert {
  background: rgba(232, 138, 130, 0.15);
  border: 1px solid rgba(232, 138, 130, 0.35);
  color: #f0b0aa;
}

/* Badge ACT / CIR en detalle de visita (staff y clientes) */
.visita-toolbar-badge {
  display: inline-flex;
  align-items: center;
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 0.35rem 0.65rem;
  border-radius: 6px;
  line-height: 1.2;
}

.visita-toolbar-badge--act {
  background: rgba(25, 135, 84, 0.15);
  color: var(--pgs-success, #198754);
}

.visita-toolbar-badge--cir {
  background: rgba(255, 193, 7, 0.2);
  color: #856404;
}

[data-theme="dark"] .visita-toolbar-badge--act {
  color: #75d99a;
}

[data-theme="dark"] .visita-toolbar-badge--cir {
  color: #ffd966;
}

/* Estado ACT / CIR en listado de visitas (pgs_cloud) */
.visita-card.visita-card--act,
.pgs-grid--visitas .visita-card.visita-card--act {
  border: 1px solid rgba(25, 135, 84, 0.45);
  border-left: 5px solid var(--pgs-success, #198754);
  background: linear-gradient(
    145deg,
    rgba(25, 135, 84, 0.12) 0%,
    rgba(25, 135, 84, 0.04) 38%,
    var(--pgs-card) 72%
  );
  box-shadow: 0 4px 16px rgba(25, 135, 84, 0.14);
  color: var(--pgs-text);
}

.visita-card.visita-card--act:hover,
.pgs-grid--visitas .visita-card.visita-card--act:hover {
  box-shadow: 0 12px 32px rgba(25, 135, 84, 0.22);
}

.visita-card.visita-card--act .visita-card__media,
.pgs-grid--visitas .visita-card.visita-card--act .visita-card__media {
  background: rgba(25, 135, 84, 0.08);
}

.visita-card.visita-card--cir,
.pgs-grid--visitas .visita-card.visita-card--cir {
  border: 1px solid rgba(255, 193, 7, 0.55);
  border-left: 5px solid var(--pgs-warning, #ffc107);
  background: linear-gradient(
    145deg,
    rgba(255, 193, 7, 0.18) 0%,
    rgba(255, 193, 7, 0.06) 38%,
    var(--pgs-card) 72%
  );
  box-shadow: 0 4px 16px rgba(255, 193, 7, 0.16);
  color: var(--pgs-text);
}

.visita-card.visita-card--cir:hover,
.pgs-grid--visitas .visita-card.visita-card--cir:hover {
  box-shadow: 0 12px 32px rgba(255, 193, 7, 0.24);
}

.visita-card.visita-card--cir .visita-card__media,
.pgs-grid--visitas .visita-card.visita-card--cir .visita-card__media {
  background: rgba(255, 193, 7, 0.1);
}

.pgs-grid--visitas.is-list-view .visita-card.visita-card--act {
  background: linear-gradient(
    90deg,
    rgba(25, 135, 84, 0.1) 0%,
    var(--pgs-card) 28%
  );
}

.pgs-grid--visitas.is-list-view .visita-card.visita-card--cir {
  background: linear-gradient(
    90deg,
    rgba(255, 193, 7, 0.14) 0%,
    var(--pgs-card) 28%
  );
}

.visita-card__badge {
  display: inline-block;
  font-size: 0.7rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 0.15rem 0.5rem;
  border-radius: 4px;
  margin-bottom: 0.35rem;
}

.visita-card.visita-card--act .visita-card__badge {
  background: rgba(25, 135, 84, 0.2);
  color: var(--pgs-success, #198754);
}

.visita-card.visita-card--cir .visita-card__badge {
  background: rgba(255, 193, 7, 0.35);
  color: #856404;
}

[data-theme="dark"] .visita-card.visita-card--act,
[data-theme="dark"] .pgs-grid--visitas .visita-card.visita-card--act {
  border-color: rgba(117, 217, 154, 0.45);
  background: linear-gradient(
    145deg,
    rgba(25, 135, 84, 0.22) 0%,
    rgba(25, 135, 84, 0.08) 40%,
    var(--pgs-card) 75%
  );
  color: var(--pgs-text);
}

[data-theme="dark"] .visita-card.visita-card--cir,
[data-theme="dark"] .pgs-grid--visitas .visita-card.visita-card--cir {
  border-color: rgba(255, 217, 102, 0.45);
  background: linear-gradient(
    145deg,
    rgba(255, 193, 7, 0.2) 0%,
    rgba(255, 193, 7, 0.08) 40%,
    var(--pgs-card) 75%
  );
  color: var(--pgs-text);
}

[data-theme="dark"] .visita-card.visita-card--act .visita-card__badge {
  color: #75d99a;
}

[data-theme="dark"] .visita-card.visita-card--cir .visita-card__badge {
  color: #ffd966;
}
