/* Panel y ajustes compartidos por la web, administración y el aula. */
[data-ivep-a11y] [hidden] { display: none !important; }
.ivep-a11y-launcher { position: fixed; right: max(16px, env(safe-area-inset-right)); top: 50%; transform: translateY(-50%); z-index: 9999; display: flex; align-items: center; justify-content: center; width: 52px; height: 52px; padding: 0; border: 2px solid white; border-radius: 50%; color: white; background: #174f78; box-shadow: 0 3px 14px #0f172a30; cursor: pointer; }
.ivep-a11y-launcher:hover { background: #123d5d; }
.ivep-a11y-launcher svg { flex-shrink: 0; }
.ivep-a11y-launcher-label { position: absolute; right: 62px; padding: 8px 12px; border-radius: 8px; background: #174f78; color: white; white-space: nowrap; font: 600 16px/1.4 Arial, sans-serif; opacity: 0; visibility: hidden; pointer-events: none; }
.ivep-a11y-launcher:is(:hover, :focus-visible) .ivep-a11y-launcher-label { opacity: 1; visibility: visible; }
.ivep-a11y-dialog { position: fixed; inset: 16px 16px 16px auto; margin: auto 0; width: min(440px, calc(100% - 32px)); max-width: none; max-height: calc(100dvh - 32px); height: fit-content; overflow-y: auto; padding: 0; border: 1px solid #cbd5e1; border-radius: 20px; box-shadow: 0 24px 80px #0f172a40; background: white; color: #0f172a; font: 16px/1.5 Arial, Helvetica, sans-serif; color-scheme: light; }
.ivep-a11y-dialog::backdrop { background: #0f172a70; }
.ivep-a11y-dialog *, .ivep-a11y-dialog *::before, .ivep-a11y-dialog *::after { box-sizing: border-box; }
.ivep-a11y-header { position: sticky; top: 0; z-index: 1; display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding: 20px; background: #f0f6fa; border-bottom: 1px solid #dbe5ed; }
.ivep-a11y-header h2 { margin: 0 0 5px; font: 700 23px/1.3 Arial, sans-serif; color: #123d5d; overflow-wrap: anywhere; }
.ivep-a11y-header p { margin: 0; font-size: 14px; line-height: 1.5; color: #475569; }
.ivep-a11y-close { display: flex; align-items: center; justify-content: center; flex: 0 0 44px; width: 44px; height: 44px; padding: 0; border: 1px solid #94a3b8; border-radius: 10px; background: white; color: #334155; cursor: pointer; }
.ivep-a11y-close:hover { background: #e2e8f0; }
.ivep-a11y-options { padding: 20px; }
.ivep-a11y-options fieldset { min-width: 0; border: 0; padding: 0; margin: 0 0 20px; }
.ivep-a11y-options legend, .ivep-a11y-spacing > label { display: block; width: 100%; padding: 0; margin: 0 0 8px; color: #0f172a; font-size: 15px; font-weight: 700; }
.ivep-a11y-sizes, .ivep-a11y-contrasts { display: grid; gap: 8px; }
.ivep-a11y-sizes { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.ivep-a11y-contrasts { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ivep-a11y-options button { min-width: 0; min-height: 44px; padding: 9px 6px; border: 1px solid #94a3b8; border-radius: 10px; background: white; color: #334155; font: 600 15px/1.4 Arial, sans-serif; cursor: pointer; }
.ivep-a11y-options button:hover { border-color: #174f78; background: #f0f6fa; }
.ivep-a11y-options button[aria-pressed="true"] { background: #174f78; border-color: #174f78; color: white; box-shadow: inset 0 0 0 1px white; }
.ivep-a11y-hint { margin: 9px 0 0; font-size: 13px; line-height: 1.6; color: #475569; }
.ivep-a11y-spacing { margin-bottom: 20px; }
.ivep-a11y-spacing select { display: block; width: 100%; min-width: 0; min-height: 44px; height: auto; padding: 9px 12px; border: 1px solid #94a3b8; border-radius: 10px; background: white; color: #0f172a; font: 16px/1.4 Arial, sans-serif; }
.ivep-a11y-toggles { display: grid; gap: 8px; }
.ivep-a11y-toggles > label { display: flex; align-items: flex-start; gap: 12px; min-height: 44px; margin: 0; padding: 12px; border: 1px solid #cbd5e1; border-radius: 10px; background: white; cursor: pointer; }
.ivep-a11y-toggles > label:has(input:checked) { border-color: #174f78; background: #f0f6fa; }
.ivep-a11y-toggles input { flex: 0 0 22px; width: 22px; height: 22px; margin: 2px 0 0; accent-color: #174f78; cursor: pointer; }
.ivep-a11y-toggles strong { display: block; font-size: 15px; line-height: 1.4; color: #0f172a; }
.ivep-a11y-toggles strong + span { display: block; margin-top: 3px; font-size: 13px; line-height: 1.5; color: #475569; }
.ivep-a11y-footer { padding: 16px 20px; border-top: 1px solid #dbe5ed; background: #f8fafc; }
.ivep-a11y-footer button { display: block; width: 100%; min-height: 44px; padding: 9px 12px; border: 1px solid #64748b; border-radius: 10px; background: white; color: #334155; font: 600 15px/1.5 Arial, sans-serif; cursor: pointer; }
.ivep-a11y-footer button:hover { background: #e2e8f0; }
.ivep-a11y-status { margin: 10px 0 0; font-size: 13px; line-height: 1.5; color: #475569; text-align: center; }
.ivep-a11y-skip { position: fixed; left: 16px; top: -200px; z-index: 10001; max-width: calc(100vw - 32px); padding: 12px 16px; border: 2px solid white; border-radius: 10px; background: #174f78; color: white; font: 700 16px/1.5 Arial, sans-serif; }
.ivep-a11y-skip:focus { top: 16px; }
.ivep-a11y-guide { position: fixed; left: 0; right: 0; height: 4px; z-index: 10000; pointer-events: none; background: #facc15; box-shadow: 0 0 0 1px #111827; }

/* Foco visible, también en los controles que antes solo cambiaban al pasar el ratón. */
:is(a, button, input, select, textarea, summary, [tabindex]):focus-visible { outline: 3px solid #0369a1 !important; outline-offset: 3px; box-shadow: 0 0 0 5px white !important; }

html[data-ivep-measuring] *, html[data-ivep-measuring] *::before, html[data-ivep-measuring] *::after { transition: none !important; }
html:not([data-ivep-text-size="100"])[data-ivep-text-size] [data-ivep-scalable] { font-size: calc(var(--ivep-base-font) * var(--ivep-text-scale)) !important; }
html:not([data-ivep-text-size="100"])[data-ivep-text-size] :is(p, li, dt, dd, td, th, label, button, input, textarea, select, summary) { line-height: 1.5; overflow-wrap: anywhere; }
html:not([data-ivep-text-size="100"])[data-ivep-text-size] :is(h1, h2, h3, h4, h5, h6, a, strong, em, span, legend, figcaption, blockquote) { overflow-wrap: anywhere; }
html:not([data-ivep-text-size="100"])[data-ivep-text-size] div[data-ivep-scalable] { line-height: 1.5; overflow-wrap: anywhere; }
html:not([data-ivep-text-size="100"])[data-ivep-text-size] :is(button, input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="hidden"]), select) { min-height: 44px; height: auto; }
html:is([data-ivep-text-size="150"], [data-ivep-text-size="200"]) .ivep-a11y-sizes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
html:is([data-ivep-text-size="150"], [data-ivep-text-size="200"]) .ivep-a11y-contrasts { grid-template-columns: 1fr; }
/* Con texto ampliado, usar el menú desplegable evita comprimir las palabras
   de la cabecera pública en columnas demasiado estrechas. */
html:not([data-ivep-text-size="100"])[data-ivep-text-size] #main-nav { width: 100%; }
html:not([data-ivep-text-size="100"])[data-ivep-text-size] #main-nav nav > ul { display: none !important; }
html:not([data-ivep-text-size="100"])[data-ivep-text-size] #nav-toggle { display: flex !important; }
html:not([data-ivep-text-size="100"])[data-ivep-text-size] #mobile-menu:not(.hidden) { display: block !important; }
/* El pie de pagos usa desplazamientos fijos para sus cuatro filas. Al ampliar
   el texto, dejarlo en el flujo de la tabla mantiene todas las cifras legibles. */
html:not([data-ivep-text-size="100"])[data-ivep-text-size] .cp-pie :is(th, td) { position: static !important; }

html[data-ivep-readable-font] :is(body, div, h1, h2, h3, h4, h5, h6, p, a, span, strong, em, b, small, label, button, input, textarea, select, summary, td, th, li, dt, dd, legend):not(.fa, .fas, .far, .fab, .fal, .fad, .fa-solid, .fa-regular, .fa-brands, .material-icons) { font-family: Arial, Helvetica, sans-serif !important; }
html[data-ivep-spacing="comfortable"] { --ivep-a11y-line-height: 1.8; --ivep-a11y-letter-spacing: .03em; --ivep-a11y-word-spacing: .08em; }
html[data-ivep-spacing="wide"] { --ivep-a11y-line-height: 2; --ivep-a11y-letter-spacing: .06em; --ivep-a11y-word-spacing: .16em; }
html:is([data-ivep-spacing="comfortable"], [data-ivep-spacing="wide"]) :is(h1, h2, h3, h4, h5, h6, p, li, dt, dd, td, th, label, summary, blockquote, figcaption, div[data-ivep-scalable]):not([data-ivep-a11y] *) { line-height: var(--ivep-a11y-line-height) !important; letter-spacing: var(--ivep-a11y-letter-spacing) !important; word-spacing: var(--ivep-a11y-word-spacing) !important; }
html[data-ivep-highlight-links] a[href]:not([data-ivep-a11y] *) { text-decoration: underline !important; text-decoration-thickness: 2px !important; text-underline-offset: 3px; outline: 2px solid currentColor; outline-offset: 2px; }
html[data-ivep-big-cursor], html[data-ivep-big-cursor] * { cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' stroke='%23fff' stroke-width='1.2' d='M5.5 3.21V20.8l5.28-5.28h6.5L5.5 3.21z'/%3E%3C/svg%3E") 0 0, auto !important; }

/* Contrastes explícitos, independientes del tema original. No alterar vídeos,
   documentos incrustados, imágenes, gráficos ni el panel que permite restablecerlos. */
/* Una capa permite que estos ajustes importantes prevalezcan sobre las reglas
   importantes del tema oscuro, sin aumentar artificialmente la especificidad. */
@layer ivep-accesibilidad {
html[data-ivep-contrast="light"] { --ivep-a11y-bg: white; --ivep-a11y-fg: #111827; --ivep-a11y-link: #0645ad; --ivep-a11y-border: #475569; }
html[data-ivep-contrast="dark"] { --ivep-a11y-bg: #111; --ivep-a11y-fg: white; --ivep-a11y-link: #fde047; --ivep-a11y-border: #e2e8f0; }
html:is([data-ivep-contrast="light"], [data-ivep-contrast="dark"]) body,
html:is([data-ivep-contrast="light"], [data-ivep-contrast="dark"]) body *:not([data-ivep-a11y], [data-ivep-a11y] *, svg, svg *, img, video, canvas, iframe) { color: var(--ivep-a11y-fg) !important; background-color: var(--ivep-a11y-bg) !important; background-image: none !important; border-color: var(--ivep-a11y-border) !important; text-shadow: none !important; }
html:is([data-ivep-contrast="light"], [data-ivep-contrast="dark"]) :is(a[href], a[href] *):not([data-ivep-a11y] *, svg, svg *) { color: var(--ivep-a11y-link) !important; text-decoration: underline; }
html:is([data-ivep-contrast="light"], [data-ivep-contrast="dark"]) :is(button, input, select, textarea):not([data-ivep-a11y] *) { border: 1px solid var(--ivep-a11y-border) !important; }
html:is([data-ivep-contrast="light"], [data-ivep-contrast="dark"]) :is(button[aria-pressed="true"], a[aria-current="page"]):not([data-ivep-a11y] *) { outline: 2px solid var(--ivep-a11y-link); outline-offset: 2px; }
html:is([data-ivep-contrast="light"], [data-ivep-contrast="dark"]) :disabled:not([data-ivep-a11y] *) { opacity: 1 !important; border-style: dashed !important; }
html:is([data-ivep-contrast="light"], [data-ivep-contrast="dark"]) ::placeholder { color: var(--ivep-a11y-fg) !important; opacity: 1; }
html[data-ivep-contrast="dark"] img:is([src*="logo" i], [src*="logotipo" i]) { background: white !important; filter: none !important; }
html[data-ivep-contrast="dark"] img[src*="blanco" i] { background: #111 !important; }
}

html[data-ivep-reduce-motion] { scroll-behavior: auto !important; }
html[data-ivep-reduce-motion] *, html[data-ivep-reduce-motion] *::before, html[data-ivep-reduce-motion] *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
html[data-ivep-reduce-motion] :is(.hero-content, .animate-fade-in-up, .animate-scale-in, .animate-slide-in-left, .animate-slide-in-right, .parallax-element, .parallax-bg) { opacity: 1 !important; transform: none !important; }
@media (prefers-reduced-motion: reduce) {
  html, html *, html *::before, html *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  :is(.hero-content, .animate-fade-in-up, .animate-scale-in, .animate-slide-in-left, .animate-slide-in-right, .parallax-element, .parallax-bg) { opacity: 1 !important; transform: none !important; }
}
@media print {
  [data-ivep-a11y] { display: none !important; }
  html:is([data-ivep-contrast="light"], [data-ivep-contrast="dark"]) { --ivep-a11y-bg: white; --ivep-a11y-fg: black; --ivep-a11y-link: black; --ivep-a11y-border: #475569; }
}
@media (max-width: 480px) {
  .ivep-a11y-launcher { right: max(10px, env(safe-area-inset-right)); width: 48px; height: 48px; }
  .ivep-a11y-dialog { inset: 10px 10px 10px auto; width: calc(100% - 20px); max-height: calc(100dvh - 20px); border-radius: 16px; }
  .ivep-a11y-header, .ivep-a11y-options { padding: 16px; }
  .ivep-a11y-footer { padding: 14px 16px; }
}
