/*
 * Paleta común de contraste (WCAG 2.2 AA).
 * Esta capa conserva el azul/turquesa/amarillo de DPMWeb y normaliza los
 * componentes compartidos después de Bootstrap, UIkit y los CSS de sección.
 */
:root {
  --color-primary: #075ea8;
  --color-primary-hover: #064b86;
  --color-primary-soft: #e7f2fb;
  --color-text: #212529;
  --color-text-secondary: #545b62;
  --color-surface: #ffffff;
  --color-background: #f5f7fa;
  --color-border: #6c757d;
  --color-focus: #ffbf00;
  --color-success: #176b35;
  --color-danger: #b42318;
  --color-warning: #ffc107;
  --color-warning-text: #332701;
  --color-info: #086579;
  --color-disabled-bg: #e2e6ea;
  --color-disabled-text: #5a6268;
}

/* Texto auxiliar sobre superficies claras: #6c757d de Bootstrap queda justo
   por debajo de 4.5:1. Los contextos oscuros reciben su propia variante. */
.text-muted,
.text-secondary,
small.text-muted,
.form-text,
.help-block,
.uk-text-muted {
  color: var(--color-text-secondary) !important;
  opacity: 1;
}

:where(.bg-dark, .bg-primary, .bg-secondary, .bg-success, .bg-danger, .navbar) :where(.text-muted, .text-secondary, .form-text, .help-block, .uk-text-muted) {
  color: #d9e0e6 !important;
}

/* Enlaces sobre superficies claras, sin alterar enlaces deliberadamente claros
   del navbar, pies oscuros, botones o bloques superpuestos a imágenes. */
.digital-resources a:not(.btn):not(.uk-button),
.private-area a:not(.btn):not(.uk-button),
.bg-light a:not(.btn):not(.uk-button),
.card:not(.bg-dark):not(.bg-primary):not(.bg-secondary):not(.bg-success):not(.bg-danger):not(.bg-warning):not(.bg-info) a:not(.btn):not(.uk-button),
.modal-content:not(.bg-dark):not(.bg-primary):not(.bg-secondary):not(.bg-success):not(.bg-danger):not(.bg-warning):not(.bg-info) a:not(.btn):not(.uk-button) {
  color: var(--color-primary);
  text-decoration: underline;
  text-decoration-thickness: .09em;
  text-underline-offset: .14em;
}

.digital-resources a:not(.btn):not(.uk-button):hover,
.private-area a:not(.btn):not(.uk-button):hover,
.bg-light a:not(.btn):not(.uk-button):hover,
.card:not(.bg-dark):not(.bg-primary):not(.bg-secondary):not(.bg-success):not(.bg-danger):not(.bg-warning):not(.bg-info) a:not(.btn):not(.uk-button):hover,
.modal-content:not(.bg-dark):not(.bg-primary):not(.bg-secondary):not(.bg-success):not(.bg-danger):not(.bg-warning):not(.bg-info) a:not(.btn):not(.uk-button):hover {
  color: var(--color-primary-hover);
}

/* Foco visible y consistente. No depende sólo de un cambio de color. */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 3px solid var(--color-focus) !important;
  outline-offset: 3px !important;
  box-shadow: 0 0 0 1px rgba(33, 37, 41, .65);
}

/* Formularios: normal, foco, validación y deshabilitado distinguibles. */
.form-control,
.custom-select,
input[type="text"],
input[type="email"],
input[type="password"],
input[type="number"],
input[type="search"],
input[type="tel"],
input[type="url"],
select,
textarea {
  color: var(--color-text);
  background-color: var(--color-surface);
  border: 1px solid var(--color-border);
}

.form-control::placeholder,
input[type="text"]::placeholder,
input[type="email"]::placeholder,
input[type="password"]::placeholder,
input[type="number"]::placeholder,
input[type="search"]::placeholder,
input[type="tel"]::placeholder,
input[type="url"]::placeholder,
textarea::placeholder {
  color: #5f676f;
  opacity: 1;
}

.form-control:focus,
.custom-select:focus,
input[type="text"]:focus,
input[type="email"]:focus,
input[type="password"]:focus,
input[type="number"]:focus,
input[type="search"]:focus,
input[type="tel"]:focus,
input[type="url"]:focus,
select:focus,
textarea:focus {
  color: var(--color-text);
  background-color: var(--color-surface);
  border-color: var(--color-primary);
  outline: 3px solid rgba(7, 94, 168, .28);
  outline-offset: 1px;
  box-shadow: 0 0 0 .2rem rgba(7, 94, 168, .25);
}

.form-control:disabled,
.form-control[readonly],
input[type="text"]:disabled,
input[type="email"]:disabled,
input[type="password"]:disabled,
input[type="number"]:disabled,
input[type="search"]:disabled,
input[type="tel"]:disabled,
input[type="url"]:disabled,
select:disabled,
textarea:disabled {
  color: var(--color-disabled-text);
  background-color: var(--color-disabled-bg);
  border-color: #7b838a;
  opacity: 1;
  cursor: not-allowed;
}

.form-control.is-invalid,
.was-validated .form-control:invalid {
  border: 2px solid var(--color-danger);
}

.invalid-feedback,
.text-danger,
.form-error {
  color: #a51d15 !important;
  font-weight: 600;
}

.form-control.is-valid,
.was-validated .form-control:valid { border: 2px solid var(--color-success); }
.valid-feedback { color: #14602f; font-weight: 600; }

/* Botones Bootstrap 4: texto/fondo y estado hover con contraste AA. */
.btn-primary { color: #fff; background-color: var(--color-primary); border-color: var(--color-primary); }
.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active { color: #fff; background-color: var(--color-primary-hover); border-color: #043d6e; }
.btn-secondary { color: #fff; background-color: #5a6268; border-color: #545b62; }
.btn-success { color: #fff; background-color: var(--color-success); border-color: #12582b; }
.btn-danger { color: #fff; background-color: var(--color-danger); border-color: #941b12; }
.btn-info { color: #fff; background-color: var(--color-info); border-color: #075466; }
.btn-warning { color: var(--color-warning-text); background-color: var(--color-warning); border-color: #9c7600; }
.btn-warning:hover,
.btn-warning:focus,
.btn-warning:active { color: #211a01; background-color: #e0a800; border-color: #795c00; }

.btn-outline-primary { color: var(--color-primary); border-color: var(--color-primary); }
.btn-outline-secondary { color: #545b62; border-color: #5f676f; }
.btn-outline-success { color: var(--color-success); border-color: var(--color-success); }
.btn-outline-danger { color: var(--color-danger); border-color: var(--color-danger); }
.btn-outline-info { color: var(--color-info); border-color: var(--color-info); }
.btn-outline-warning { color: #765900; border-color: #8a6800; }
.btn-outline-primary:hover,
.btn-outline-primary:focus,
.btn-outline-primary:active { color: #fff; background-color: var(--color-primary); border-color: var(--color-primary); }
.btn-outline-secondary:hover,
.btn-outline-secondary:focus,
.btn-outline-secondary:active { color: #fff; background-color: #545b62; border-color: #545b62; }
.btn-outline-success:hover,
.btn-outline-success:focus,
.btn-outline-success:active { color: #fff; background-color: var(--color-success); border-color: var(--color-success); }
.btn-outline-danger:hover,
.btn-outline-danger:focus,
.btn-outline-danger:active { color: #fff; background-color: var(--color-danger); border-color: var(--color-danger); }
.btn-outline-info:hover,
.btn-outline-info:focus,
.btn-outline-info:active { color: #fff; background-color: var(--color-info); border-color: var(--color-info); }
.btn-outline-warning:hover,
.btn-outline-warning:focus,
.btn-outline-warning:active { color: var(--color-warning-text); background-color: var(--color-warning); }

.btn:disabled,
.btn.disabled,
button:disabled {
  color: var(--color-disabled-text) !important;
  background-color: var(--color-disabled-bg) !important;
  border-color: #7b838a !important;
  opacity: 1;
}

/* Los enlaces con apariencia de botón UIkit no heredan estilos de enlace. */
.uk-button-primary {
  color: #fff;
  background-color: var(--color-primary);
  border-color: var(--color-primary);
  text-decoration: none;
}

.uk-button-primary:hover,
.uk-button-primary:focus,
.uk-button-primary:active {
  color: #fff;
  background-color: var(--color-primary-hover);
  border-color: var(--color-primary-hover);
  text-decoration: none;
}

/* Alertas y flash: fondos suaves, texto oscuro y enlaces reconocibles. */
.alert-success { color: #0f5128; background-color: #d9f2e3; border-color: #4b9468; }
.alert-danger { color: #7f1710; background-color: #f9dedb; border-color: #c45a52; }
.alert-warning { color: #5c4500; background-color: #fff3cd; border-color: #a47c00; }
.alert-info { color: #064f60; background-color: #d7f1f6; border-color: #26869a; }
.alert a,
.alert .alert-link { color: inherit !important; font-weight: 700; text-decoration: underline; }
.alert .close,
.alert .btn-close { color: inherit; opacity: .85; }

/* Tablas, tarjetas, badges, breadcrumb y paginación. */
.table { color: var(--color-text); background-color: var(--color-surface); }
.table thead th { color: #fff; background-color: #35424e; border-color: #66727d; }
.table-striped tbody tr:nth-of-type(odd) { background-color: #eef2f5; }
.table-hover tbody tr:hover { color: #17202a; background-color: #dce8f1; }
.card:not(.bg-dark):not(.bg-primary):not(.bg-secondary):not(.bg-success):not(.bg-danger):not(.bg-warning):not(.bg-info),
.modal-content:not(.bg-dark):not(.bg-primary):not(.bg-secondary):not(.bg-success):not(.bg-danger):not(.bg-warning):not(.bg-info),
.dropdown-menu:not(.bg-dark):not(.bg-primary):not(.bg-secondary):not(.bg-success):not(.bg-danger):not(.bg-warning):not(.bg-info) {
  color: var(--color-text);
  background-color: var(--color-surface);
}
.badge-warning { color: var(--color-warning-text); background-color: var(--color-warning); }
.badge-info { color: #fff; background-color: var(--color-info); }
.badge-success { color: #fff; background-color: var(--color-success); }
.badge-danger { color: #fff; background-color: var(--color-danger); }
.breadcrumb-item,
.breadcrumb-item.active { color: var(--color-text-secondary); }
.page-link { color: var(--color-primary); border-color: #89929a; }
.page-item.active .page-link { color: #fff; background-color: var(--color-primary); border-color: var(--color-primary); }
.page-item.disabled .page-link { color: var(--color-disabled-text); background-color: var(--color-disabled-bg); }

/* Navegación clara tanto sobre cabeceras con imagen como en el menú móvil. */
.navbar.solid,
#navbarResponsive.show,
#navbarResponsive.collapsing { background-color: rgba(18, 24, 29, .94); }
.navbar a,
.navbar .social-icons a,
.navbar .social-icons i,
.navbar-toggler { color: #fff; }
.navbar .nav-link { color: #fff; text-decoration-thickness: .09em; }
.navbar .nav-link:hover,
.navbar .nav-link:focus,
.navbar .nav-item.active > .nav-link,
.navbar .nav-link[aria-current="page"] { color: #ffe066; text-decoration-thickness: .16em; }
.dropdown-item,
.navbar .dropdown-item { color: var(--color-text); text-decoration: none; }
.dropdown-item:hover,
.dropdown-item:focus,
.dropdown-item.active,
.navbar .dropdown-item:hover,
.navbar .dropdown-item:focus,
.navbar .dropdown-item.active { color: #fff; background-color: var(--color-primary); }
.navbar .social-icons a:hover,
.navbar .social-icons a:focus,
.navbar .social-icons a:hover i,
.navbar .social-icons a:focus i { color: #ffe066; }
.navbar-toggler { border: 2px solid #fff; }
.menu-header nav { background: rgba(255, 255, 255, .9) !important; }
.menu-header nav a:not(.btn),
.menu-header nav .text-primary { color: #075ea8 !important; font-weight: 600; }

/* Los overlays necesitan una base suficientemente oscura para texto claro. */
.carousel-caption,
.pos1,
.pos2 { background-color: rgba(20, 24, 28, .82); color: #fff; }
.carousel-caption h1,
.carousel-caption h2,
.carousel-caption h3,
.carousel-caption p { color: #fff; text-shadow: 0 1px 2px #000; }

@media (max-width: 767.98px) {
  .menu-header nav { padding: 12px !important; background: rgba(255, 255, 255, .96) !important; }
  .dropdown-menu { border: 2px solid #65717c; }
  .table-responsive { border: 1px solid #7b838a; background: var(--color-surface); }
  .btn { min-height: 44px; white-space: normal; }
}

@media (forced-colors: active) {
  :where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
    outline: 3px solid CanvasText !important;
  }
}
