/* Shared accessibility adjustments, loaded after page-specific styles. */
:root { --text-dim: #9aa9bc; --focus-ring: #a8caff; }
:root[data-theme="light"] { --text-dim: #5c6c80; --focus-ring: #245dcc; }
html { scroll-padding-block: 1rem; }
body { overflow-wrap: break-word; }
main, main > *, .hero > *, .nav-actions { min-width: 0; }
main p { line-height: 1.65; max-width: 75ch; }
main p:not(.lead):not(.claim), main .trust-list li, main .topic-links { font-size: 1rem; }
main li { line-height: 1.6; }
.brand { flex-shrink: 0; }

.skip-link {
    position: fixed;
    inset: .5rem auto auto .5rem;
    z-index: 10000;
    padding: .75rem 1rem;
    max-width: calc(100vw - 1rem);
    color: var(--skip-text);
    background: var(--skip-bg);
    font-weight: 700;
    text-decoration: underline;
    transform: translateY(calc(-100% - 1rem));
}
.skip-link:focus { transform: none; }
:is(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
    outline: 3px solid var(--focus-ring);
    outline-offset: 3px;
    box-shadow: 0 0 0 2px var(--bg);
}
main:focus { outline-offset: -3px; }

button, .button, .back, select, input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]) {
    min-height: 44px;
}
button, .button { white-space: normal; max-width: 100%; }
.button.secondary, .button-outline { border-color: var(--form-border); }
input, select, textarea { max-width: 100%; }
input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]), select, textarea {
    border-color: var(--form-border);
    font-size: 1rem;
}
input[type="checkbox"], input[type="radio"] { flex-shrink: 0; }
label:has(> input[type="checkbox"]), label:has(> input[type="radio"]) { min-height: 44px; padding-block: .625rem; }
header nav, .nav, .nav-actions, .bulk-actions { flex-wrap: wrap; }
header nav a, footer a, .back { display: inline-flex; align-items: center; min-height: 44px; }
footer a { padding-inline: .25rem; text-decoration: underline; text-underline-offset: .2em; }
.text-link, .topic-links a { min-height: 44px; padding-block: .625rem; }
.target-remove, .target-add, .syscheck-profile-trigger { min-width: 44px; min-height: 44px; }
.target > [id^="target-label-"] { font-weight: 600; margin-bottom: .5rem; }
.field-error { display: block; margin: .5rem 0; color: var(--crit); font-size: 1rem; }
[aria-invalid="true"] { border-color: var(--crit) !important; }
.form-status { margin-block: .75rem; }
.button[aria-busy="true"] { cursor: wait; }
.status-count { background: var(--overlay-soft) !important; }
.result-nav { box-shadow: 0 4px 14px var(--sticky-shadow); }
.confirm { border-color: var(--danger-border); }

@media (hover: hover) and (pointer: fine) {
    .skip-link:hover { color: var(--skip-text); background: var(--surface); }
}
button:not(:disabled):active, .button:active { transform: translateY(1px); }
@media (max-width: 520px) {
    header.top, .top, header nav { flex-wrap: wrap; gap: .5rem; }
    header .nav-actions { width: 100%; }
    header .nav-actions .button { padding-inline: .625rem; }
    .card, .feature-overview, .trust-card, .faq-item { padding: 1rem; }
    .hero, .feature-overview { grid-template-columns: minmax(0, 1fr); }
    .hero { gap: 2rem; }
    .card-top { flex-wrap: wrap; }
    .target-row { min-width: 0; }
    .target-row input { min-width: 0; }
}
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior: auto !important; animation: none !important; transition: none !important; }
    button:active, .button:active { transform: none; }
}
@media (forced-colors: active) {
    :is(a, button, input, select, textarea, summary, [tabindex]):focus-visible { outline-color: Highlight; }
}

/* Footer: the same token-based layout works with dark and light palettes. */
footer.site-footer {
    padding-block: var(--s4);
    background: var(--bg-soft);
    border-top: 1px solid var(--border);
    color: var(--text);
    font-size: 1rem;
    line-height: 1.6;
}
.site-footer .footer-layout {
    --shell: 1160px;
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: var(--s3);
}
.site-footer .footer-context {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    min-width: 0;
    gap: var(--s1);
    color: var(--text-muted);
}
.site-footer .footer-context > span:first-child { font-size: .9375rem; }
.site-footer .footer-context > span { max-width: 36ch; }
.site-footer .footer-navigation { display: block; min-width: 0; }
.site-footer .footer-navigation ul {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--s1) var(--s2);
    margin: 0;
    padding: 0;
    list-style: none;
}
.site-footer .footer-navigation li { margin: 0; padding: 0; max-width: 100%; }
.site-footer a {
    min-height: 44px;
    padding: .5rem .25rem;
    color: var(--text);
    font-size: 1rem;
    line-height: 1.5;
    text-decoration: underline;
    text-decoration-color: color-mix(in srgb, currentColor 45%, transparent);
    text-underline-offset: .25em;
    text-decoration-thickness: 1px;
}
.site-footer a:focus-visible {
    outline-color: var(--text);
    text-decoration-color: currentColor;
    text-decoration-thickness: 2px;
}
@media (hover: hover) and (pointer: fine) {
    .site-footer a:hover { color: var(--text); text-decoration-color: currentColor; text-decoration-thickness: 2px; }
}
@media (min-width: 768px) {
    .site-footer .footer-layout { grid-template-columns: minmax(180px, 1fr) minmax(0, 2fr); gap: var(--s5); }
    .site-footer .footer-navigation ul { justify-content: flex-end; }
}
@media (forced-colors: active) {
    .site-footer a:focus-visible { outline-color: Highlight; }
}
