/* Shared keyboard, zoom and touch support. Keep these after the theme styles. */
html { scroll-padding-block: 8rem 7rem; }
body { overflow-wrap: break-word; }
:is(a, button, input, select, textarea, [tabindex]):focus-visible {
    outline: 3px solid #211f5a !important;
    outline-offset: 3px;
    box-shadow: 0 0 0 3px #fff !important;
}
footer :is(a, button):focus-visible {
    outline-color: #ffdd00 !important;
    box-shadow: 0 0 0 3px #211f5a !important;
}
:is(button, .btn, .nav-link) { min-height: 44px; }
.form-control, .form-select { border-color: #69737b; }
.form-check-label { padding-block: .5rem; }
.portal-footer-links { display: flex; flex-wrap: wrap; justify-content: center; gap: .25rem 0; }
.portal-footer-links a { display: inline-flex; align-items: center; min-height: 24px; padding-inline: .625rem; }
.portal-footer-links a + a { border-inline-start: 1px solid currentColor; }
footer.website { position: relative; font-size: .875rem; font-weight: 400; padding-bottom: .5rem; }
footer.website > .row { margin-inline: 0; }
/* Footer controls must not cover content or keyboard focus at high zoom. */
#cookie-tab { position: static; float: none !important; margin: .75rem; min-width: 44px; }
#scrollToTopBtn { position: static; margin: .75rem; min-width: 44px; min-height: 44px; }
/* Reserve side space for desktop controls instead of overlaying page content. */
@media (min-width: 1200px) {
    footer.website { padding-inline: 12rem; }
    footer.website #cookie-tab { position: absolute; right: 4.5rem; bottom: .5rem; margin: 0; }
    footer.website #scrollToTopBtn { position: absolute; right: .75rem; bottom: .5rem; margin: 0; }
}
.portal-accessibility-content { max-width: 70ch; padding-block: 8rem 2rem; }
.portal-accessibility-content h2 { margin-top: 1.5rem; }
.portal-validation-summary { overflow-wrap: anywhere; }
.portal-validation-summary a { display: inline-flex; align-items: center; min-height: 44px; }
.table-responsive:focus-visible { outline: 3px solid #211f5a; outline-offset: 3px; }
#tarteaucitronRoot :is(button, a):focus-visible { outline-color: #ffdd00 !important; }
#tarteaucitronRoot #tarteaucitronAlertBig,
#tarteaucitronRoot #tarteaucitron { max-height: 90dvh; overflow-y: auto; }
/* Leave enough room for the brand when the desktop menu first expands. */
@media (min-width: 1200px) {
    #portal-header .portal-brand-column { flex: 0 0 280px; min-width: 280px; }
    #portal-header .portal-toggle-column { display: none; }
}
@media (min-width: 1200px) and (max-width: 1599.98px) {
    #portal-header .navbar-nav .nav-link { padding-inline: .75rem !important; }
}
@media (max-width: 575.98px) {
    body #tarteaucitronRoot div#tarteaucitronAlertBig {
        width: calc(100% - 2rem) !important;
        min-width: 0 !important;
        max-width: 100% !important;
        box-sizing: border-box;
        padding: 1rem !important;
        left: 50% !important;
        top: 50% !important;
        bottom: auto !important;
        transform: translate(-50%, -50%) !important;
    }
    #portal-content :is(h1, .h1) { font-size: 2rem; line-height: 1.25; }
    #portal-content :is(h2, .h2) { font-size: 1.65rem; line-height: 1.3; }
    #portal-content img { max-width: 100%; height: auto; }
    #portal-content .w-auto { max-width: 100%; }
    #portal-runtime-status:not(.visually-hidden) { max-height: 40dvh; overflow-y: auto; }
}
@media (forced-colors: active) {
    :is(a, button, input, select, textarea, [tabindex]):focus-visible {
        outline-color: Highlight !important; box-shadow: none !important;
    }
}
