/* Loaded last on all pages. Values in rem follow the user's text preference. */
:root {
    --a11y-font-scale: 1;
    --a11y-rail-width: 58px;
    --a11y-controls-height: 158px;
    --a11y-bottom-offset: max(calc(76px + env(safe-area-inset-bottom, 0px)), calc(var(--a11y-viewport-bottom, 0px) + 8px));
    --a11y-bg: #ffffff;
    --a11y-text: var(--brand-primary);
    --a11y-link: var(--brand-primary);
    --a11y-border: var(--brand-primary);
}

html.a11y-ready body {
    box-sizing: border-box;
    min-width: 0;
    margin: 0;
    padding-right: calc(var(--a11y-rail-width) + 24px + env(safe-area-inset-right, 0px)) !important;
    padding-bottom: var(--a11y-bottom-offset);
    overflow-wrap: anywhere;
}

.accessibility-controls {
    position: fixed;
    z-index: 1090;
    top: 50%;
    right: max(12px, env(safe-area-inset-right, 0px));
    transform: translateY(-50%);
    box-sizing: border-box;
    display: grid;
    gap: 6px;
    width: var(--a11y-rail-width);
    overflow: visible;
    padding: 5px;
    color: var(--a11y-text);
    background: var(--a11y-bg);
    border: 2px solid var(--a11y-border);
    border-radius: 12px;
    box-shadow: 0 4px 16px rgb(0 0 0 / 18%);
    font-family: "Segoe UI", sans-serif;
    text-align: center;
    line-height: 1.3;
}

.accessibility-controls[hidden] { display: none; }

.accessibility-controls button {
    display: grid;
    place-content: center;
    box-sizing: border-box;
    min-width: 44px;
    min-height: 44px;
    width: 44px;
    height: 44px;
    padding: 0;
    margin: 0;
    color: var(--a11y-text);
    background: var(--a11y-bg);
    border: 2px solid var(--a11y-border);
    border-radius: 6px;
    font: 700 clamp(18px, 1.1rem, 24px) / 1.25 "Segoe UI", sans-serif;
    cursor: pointer;
}

.accessibility-controls button:hover:not(:disabled) { text-decoration: underline; }
.accessibility-controls button:disabled { border-style: dashed; cursor: default; }
.accessibility-tooltip {
    position: absolute;
    right: calc(100% + 8px);
    width: max-content;
    max-width: min(20rem, calc(100vw - 96px));
    padding: 0.5rem 0.75rem;
    color: var(--a11y-text);
    background: var(--a11y-bg);
    border: 1px solid var(--a11y-border);
    border-radius: 6px;
    font-size: 0.875rem;
    line-height: 1.4;
    text-align: left;
    box-shadow: 0 3px 12px rgb(0 0 0 / 18%);
}
.accessibility-tooltip::after {
    content: "";
    position: absolute;
    top: 0;
    left: 100%;
    width: 10px;
    height: 100%;
}
.accessibility-controls button:focus-visible,
html.a11y-ready :where(a, button, input, select, textarea, [tabindex]):focus-visible {
    outline: 3px solid var(--a11y-link);
    outline-offset: 3px;
}

.accessibility-sr-only {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip-path: inset(50%) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

/* Keep controls inside SweetAlert's focus boundary and visible while it scrolls. */
.swal2-popup {
    box-sizing: border-box;
    max-width: 100%;
    max-height: calc(100dvh - 32px);
    overflow-y: auto;
}
.swal2-popup > * { flex-shrink: 0; }
.swal2-popup .accessibility-controls {
    position: sticky;
    grid-column: 1 / -1;
    grid-template-columns: repeat(3, 44px);
    top: auto;
    right: auto;
    bottom: 0;
    transform: none;
    width: max-content;
    max-height: none;
    margin: 1rem 8px 0;
    align-self: center;
    flex-shrink: 0;
}
.swal2-popup .accessibility-tooltip {
    top: auto !important;
    bottom: calc(100% + 8px);
    right: auto;
    left: 50%;
    transform: translateX(-50%);
    max-width: min(20rem, calc(100vw - 80px));
}
.swal2-popup .accessibility-tooltip::after { top: 100%; left: 0; width: 100%; height: 10px; }
.swal2-html-container { min-width: 0; overflow-wrap: anywhere; }
.swal2-title { overflow-wrap: anywhere; }
.my-custom-theme .tooltipster-content { font-size: 0.875rem; line-height: 1.4; }

@media (max-width: 767.98px), (max-height: 420px) {
    html.a11y-ready body {
        padding-right: 0 !important;
        padding-bottom: calc(var(--a11y-controls-height) + var(--a11y-bottom-offset) + 20px);
    }
    html.a11y-ready { scroll-padding-bottom: calc(var(--a11y-controls-height) + var(--a11y-bottom-offset) + 20px); }
    html.a11y-ready :where(a, button, input, select, textarea, [tabindex]) {
        scroll-margin-bottom: calc(var(--a11y-controls-height) + var(--a11y-bottom-offset) + 20px);
    }
    .accessibility-controls {
        grid-template-columns: repeat(3, 44px);
        top: auto;
        right: max(8px, env(safe-area-inset-right, 0px));
        bottom: var(--a11y-bottom-offset);
        left: auto;
        transform: none;
        width: max-content;
        max-height: none;
    }
    .swal2-popup .accessibility-controls { left: auto; }
    .swal2-popup { padding: 16px; }
    .accessibility-tooltip {
        top: auto !important;
        bottom: calc(100% + 8px);
        right: 0;
        max-width: min(20rem, calc(100vw - 24px));
    }
    .accessibility-tooltip::after { top: 100%; left: 0; width: 100%; height: 10px; }
}

/* The landing page fills the viewport. Reserve equal space inside its main
   area, not an extra strip on the body that shifts everything to the left. */
html.a11y-ready body.index-page {
    padding-right: 0 !important;
    padding-bottom: 0;
}
html.a11y-ready .index-page .landing {
    padding-inline: max(24px, calc(var(--a11y-rail-width) + 24px + env(safe-area-inset-right, 0px)), env(safe-area-inset-left, 0px));
}
@media (max-width: 767.98px), (max-height: 420px) {
    html.a11y-ready .index-page .landing {
        padding-inline: max(14px, env(safe-area-inset-left, 0px), env(safe-area-inset-right, 0px));
        padding-bottom: calc(var(--a11y-controls-height) + var(--a11y-bottom-offset) + 20px);
    }
}

/* Balance the floating rail's space on the form, query and details pages. */
@media (min-width: 768px) and (min-height: 421px) {
    html.a11y-ready body:is(.pqr-form-page, .pqr-query-page, .pqr-details-page) {
        padding-left: calc(var(--a11y-rail-width) + 24px + max(env(safe-area-inset-left, 0px), env(safe-area-inset-right, 0px)));
        padding-right: calc(var(--a11y-rail-width) + 24px + max(env(safe-area-inset-left, 0px), env(safe-area-inset-right, 0px))) !important;
    }
}

/* Bootstrap's fluid headings must scale their viewport term as well. */
h1, .h1 { font-size: calc(1.375rem + 1.5vw * var(--a11y-font-scale)); }
h2, .h2 { font-size: calc(1.325rem + 0.9vw * var(--a11y-font-scale)); }
h3, .h3 { font-size: calc(1.3rem + 0.6vw * var(--a11y-font-scale)); }
h4, .h4 { font-size: calc(1.275rem + 0.3vw * var(--a11y-font-scale)); }
@media (min-width: 1200px) {
    h1, .h1 { font-size: 2.5rem; }
    h2, .h2 { font-size: 2rem; }
    h3, .h3 { font-size: 1.75rem; }
    h4, .h4 { font-size: 1.5rem; }
}

/* Reflow text instead of clipping it in fixed-size cards and brand rows. */
.institutional-brand, .atenea-brand,
.form-hero, .query-hero, .details-hero,
.form-footer__buttons, .query-actions,
.result-card__header, .details-footer { flex-wrap: wrap; }
.institutional-brand { gap: 0.5rem 0; }
.institutional-brand__siga { max-width: 100%; }
.form-hero__brand, .query-hero__brand, .details-hero__brand,
.query-hero__brand > div, .details-hero__brand > div,
.query-intro__copy, .record-overview > div,
.details-card__header > div { min-width: 0; }
.form-hero__status, .query-hero__status, .details-hero__badge { max-width: 100%; }
.form-footer__buttons { min-width: 0; max-width: 100%; }
.form-footer__button { white-space: normal; }
.action-card__button { gap: 0.5rem; }
.action-card__arrow { position: static; }
.table-responsive { max-width: 100%; }

.a11y-enlarged .action-list,
.a11y-enlarged .query-intro,
.a11y-enlarged .record-overview,
.a11y-enlarged .resource-grid { grid-template-columns: minmax(0, 1fr); }
.a11y-enlarged .welcome-card { width: 100%; aspect-ratio: auto; }
.a11y-enlarged .action-card__content { grid-template-columns: minmax(0, 1fr); }
.a11y-enlarged .action-card__icon { justify-self: start; width: 5.5rem; height: 5.5rem; }
.a11y-enlarged .action-card__copy small { max-width: none; }
.a11y-enlarged .form-hero,
.a11y-enlarged .query-hero,
.a11y-enlarged .details-hero { flex-direction: column; }
.a11y-enlarged .status-flow { grid-template-columns: minmax(0, 1fr); gap: 1rem; }
.a11y-enlarged .status-step::after { display: none; }
.a11y-enlarged .status-step__marker { width: 2rem; height: 2rem; }
.a11y-enlarged .details-card__number,
.a11y-enlarged .example-card__number { width: 2.125rem; height: 2.125rem; }
.a11y-enlarged #responseTable { min-width: 38.75rem; }
.a11y-enlarged .resource-table { min-width: 22rem; }

@media (max-width: 1100px) {
    .a11y-enlarged .form-hero__brand,
    .a11y-enlarged .query-hero__brand,
    .a11y-enlarged .details-hero__brand { flex-direction: column; }
    .a11y-enlarged .form-hero__separator,
    .a11y-enlarged .query-hero__separator,
    .a11y-enlarged .details-hero__separator { display: none; }
    .a11y-enlarged .record-metadata,
    .a11y-enlarged .details-grid { grid-template-columns: minmax(0, 1fr); }
    .a11y-enlarged .details-grid > div { padding: 0.9rem 0 !important; border-right: 0 !important; }
    .a11y-enlarged .form-footer__actions { flex-direction: column; align-items: stretch; }
    .a11y-enlarged #pqrForm .row > [class*="col-"] { width: 100%; }
}
@media (max-width: 560px) {
    .form-hero { margin-right: 0; margin-left: 0; }
    .a11y-enlarged #mainContent { padding-right: 12px; padding-left: 12px; }
    .a11y-enlarged #mainContent .row { --bs-gutter-x: 16px; }
    .a11y-enlarged #pqrForm { padding-right: 12px; padding-left: 12px; }
    .a11y-enlarged #pqrForm > .px-3 { padding-right: 4px !important; padding-left: 4px !important; }
    .a11y-enlarged .input-box { padding: 8px; }
    .a11y-enlarged .form-select-with-help { display: block; width: 100%; }
    .a11y-enlarged .form-control { padding-right: 8px; padding-left: 8px; }
    .a11y-enlarged .query-form__control .form-control { padding-left: 2.25rem; }
    .a11y-enlarged .form-select { padding-right: 32px; padding-left: 8px; }
    .a11y-enlarged input[type="file"] { width: 100% !important; }
    .a11y-enlarged input::file-selector-button { max-width: 100%; white-space: normal; }
    .a11y-enlarged .welcome-card,
    .a11y-enlarged .action-card { padding: 20px 12px; }
    .a11y-enlarged .action-card__button { padding: 12px; }
    .a11y-enlarged .action-card__arrow { display: none; }
    .a11y-enlarged .query-intro,
    .a11y-enlarged .record-overview,
    .a11y-enlarged .query-form { padding: 16px; }
    .a11y-enlarged .query-intro,
    .a11y-enlarged .record-overview,
    .a11y-enlarged .details-card,
    .a11y-enlarged .resource-grid,
    .a11y-enlarged .result-card,
    .a11y-enlarged .details-footer { margin-left: 12px; margin-right: 12px; }
    .a11y-enlarged .resource-grid .details-card { margin: 0; }
    .a11y-enlarged .form-hero,
    .a11y-enlarged .query-hero,
    .a11y-enlarged .details-hero { padding: 20px 16px; }
    .a11y-enlarged .privacy-notice,
    .a11y-enlarged .form-footer__actions { padding: 16px; }
    .a11y-enlarged .form-hero__logo,
    .a11y-enlarged .query-hero__logo,
    .a11y-enlarged .details-hero__logo { max-width: 100%; }
}

/* Explicit palettes: no image inversion, and no color-only status indicators. */
html[data-a11y-contrast="dark"] {
    color-scheme: dark;
    --a11y-bg: #000000;
    --a11y-text: #ffffff;
    --a11y-link: #ffff00;
    --a11y-border: #ffffff;
}
html[data-a11y-contrast="light"] {
    color-scheme: light;
    --a11y-bg: #ffffff;
    --a11y-text: #000000;
    --a11y-link: #003366;
    --a11y-border: #000000;
}
html[data-a11y-contrast],
html[data-a11y-contrast] body,
html[data-a11y-contrast] body * {
    color: var(--a11y-text) !important;
    background-color: var(--a11y-bg) !important;
    background-image: none !important;
    border-color: var(--a11y-border) !important;
    box-shadow: none !important;
    text-shadow: none !important;
}
html[data-a11y-contrast] :is(a, a *, button, button *) { color: var(--a11y-link) !important; }
html[data-a11y-contrast] a { text-decoration: underline !important; }
html[data-a11y-contrast] :is(button, input, select, textarea) { border: 2px solid var(--a11y-border) !important; }
html[data-a11y-contrast] :is(button:disabled, input:disabled, select:disabled) { opacity: 1 !important; border-style: dashed !important; }
html[data-a11y-contrast] :is(input, textarea)::placeholder { color: var(--a11y-text) !important; opacity: 1; }
html[data-a11y-contrast] select { appearance: auto; }
html[data-a11y-contrast] input:is([type="checkbox"], [type="radio"]) { appearance: auto; accent-color: var(--a11y-link); }
html[data-a11y-contrast] input::file-selector-button { color: var(--a11y-link); background: var(--a11y-bg); border: 2px solid var(--a11y-border); }
html[data-a11y-contrast] :focus-visible { outline: 3px solid var(--a11y-link) !important; outline-offset: 3px; }
html[data-a11y-contrast] :is(.is-invalid, [aria-invalid="true"]) { border: 3px dashed var(--a11y-link) !important; }
html[data-a11y-contrast] :is(.invalid-feedback, .error-summary) { font-weight: 700; }
html[data-a11y-contrast] :is(.site-header__logo, .form-hero__logo, .query-hero__logo, .details-hero__logo) { background: #101f3d !important; border-radius: 4px; }
html[data-a11y-contrast] .atenea-brand__logo { background: #101f3d !important; }
/* Use transparent monochrome signatures on each contrast theme's own surface. */
html[data-a11y-contrast] .institutional-logo { background: transparent !important; }
html[data-a11y-contrast="light"] .institutional-logo--original { display: none; }
html[data-a11y-contrast="light"] .institutional-logo--light { display: block; }
@media (forced-colors: active) {
    html .institutional-logo { forced-color-adjust: none; background: Canvas !important; }
    html .institutional-logo--original { display: block !important; }
    html .institutional-logo--light { display: none !important; }
}
@media (forced-colors: active) and (prefers-color-scheme: light) {
    html .institutional-logo--original { display: none !important; }
    html .institutional-logo--light { display: block !important; }
}
html[data-a11y-contrast] :is(.landing, .form-hero, .query-hero, .details-hero)::after { display: none; }
html[data-a11y-contrast] .status-step.is-complete .status-step__marker { border: 3px solid var(--a11y-link) !important; }
html[data-a11y-contrast] .status-step.is-complete .status-step__marker::after { border-color: var(--a11y-link) !important; }
html[data-a11y-contrast] .swal2-container { background: rgb(0 0 0 / 75%) !important; }
html[data-a11y-contrast] .swal2-popup { border: 2px solid var(--a11y-border); }
html[data-a11y-contrast] :is(.swal2-success-line-tip, .swal2-success-line-long, .swal2-x-mark-line-left, .swal2-x-mark-line-right) { background: var(--a11y-link) !important; }
html[data-a11y-contrast] .tooltip { --bs-tooltip-bg: var(--a11y-bg); --bs-tooltip-color: var(--a11y-text); opacity: 1 !important; }
html[data-a11y-contrast] .tooltip-inner { border: 1px solid var(--a11y-border); }
html[data-a11y-contrast] .spinner-border { border-right-color: transparent !important; }

@media (forced-colors: active) {
    :root, html[data-a11y-contrast] {
        --a11y-bg: Canvas;
        --a11y-text: CanvasText;
        --a11y-link: LinkText;
        --a11y-border: CanvasText;
    }
}
@media print {
    #accessibility-home, .accessibility-controls { display: none !important; }
    html.a11y-ready body { padding-right: 0 !important; padding-bottom: 0 !important; }
    html.a11y-ready body:is(.pqr-form-page, .pqr-query-page, .pqr-details-page) { padding-left: 0; }
}
