.portal-text-scale-ready {
    font-size: calc(100% * var(--portal-text-scale, 1));
}

.portal-skip-link {
    position: fixed;
    z-index: 2000;
    top: .5rem;
    left: .5rem;
    padding: .7rem 1rem;
    color: #fff;
    background: #071d35;
    border: 2px solid #fff;
    border-radius: .35rem;
    transform: translateY(calc(-100% - 1rem));
}

.portal-skip-link:focus {
    color: #fff;
    transform: translateY(0);
}

body :focus-visible {
    outline: 3px solid #075ea8;
    outline-offset: 2px;
}

body.portal-high-contrast {
    --academic-canvas: #fff;
    --academic-ink: #000;
    --academic-muted: #222;
    --academic-line: #555;
}

body.portal-high-contrast :is(a, button, input, select, textarea, summary) {
    text-decoration-thickness: .12em;
}

body.portal-high-contrast :is(.card, .dropdown-menu, .modal-content, .form-control, .form-select) {
    color: #000 !important;
    background-color: #fff !important;
    border-color: #333 !important;
}

body.portal-high-contrast :is(.text-muted, .form-text, .text-secondary) {
    color: #222 !important;
}

body.portal-high-contrast :is(a, .btn-link) {
    color: #003e7e !important;
}

body.portal-high-contrast :is(.btn-primary, .btn-danger, .btn-success, .btn-dark) {
    color: #fff !important;
}

body.portal-high-contrast.login-page {
    color: #000 !important;
    background: #fff !important;
}

body.portal-high-contrast.login-page .login-shell,
body.portal-high-contrast.login-page .login-brand-panel,
body.portal-high-contrast.login-page .login-form-panel {
    color: #000 !important;
    background: #fff !important;
    border-color: #000 !important;
}

body.portal-high-contrast.login-page :is(.login-brand-title, .login-brand-copy, .login-card-header h1, a, label, .form-text) {
    color: #000 !important;
}

.portal-a11y-menu [data-connection-status] {
    display: block;
    padding-top: .35rem;
    border-top: 1px solid #dfe7f0;
}

.portal-a11y-menu [data-connection-status][data-online="false"] {
    color: #8a2c00 !important;
    font-weight: 700;
}

.portal-nav .portal-utility-button {
    min-width: 44px;
    min-height: 44px;
}

.portal-a11y-menu {
    width: min(285px, calc(100vw - 1rem));
    max-width: calc(100vw - 1rem);
}

.portal-a11y-menu button {
    min-height: 44px;
}

.portal-login-accessibility {
    width: 100%;
    padding: .75rem 1rem;
    color: #172b3d;
    background: #f4f7fb;
    border-bottom: 1px solid #d5dee8;
}

.portal-login-accessibility summary {
    min-height: 44px;
    display: flex;
    align-items: center;
    cursor: pointer;
    font-weight: 700;
}

.portal-login-accessibility-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .5rem;
    padding-top: .5rem;
}

.portal-login-accessibility-actions button {
    min-height: 44px;
    padding: .45rem;
    color: #0b3154;
    background: #fff;
    border: 1px solid #52677c;
    border-radius: .35rem;
    font: inherit;
}

.portal-login-accessibility-actions [data-connection-status] {
    grid-column: 1 / -1;
}

@media (prefers-contrast: more) {
    :root {
        --academic-line: #555;
    }

    body :focus-visible {
        outline-width: 4px;
    }
}
