/* =========================================================================
   Accessibility behaviours driven by the floating widget + OS preferences.
   (Token overrides for scale/contrast live in tokens.css.)
   ========================================================================= */

/* Underline-links mode */
html[data-underline="on"] a:not(.btn):not(.floating-actions__btn):not(.social-list a) {
	text-decoration: underline;
	text-underline-offset: 0.18em;
}

/* High-contrast: strengthen separators, kill subtle effects */
html[data-contrast="high"] body { background: #fff; }
html[data-contrast="high"] .card,
html[data-contrast="high"] .site-header,
html[data-contrast="high"] .a11y-widget__panel {
	border-width: 2px;
	box-shadow: none;
	backdrop-filter: none;
	-webkit-backdrop-filter: none;
	background: #fff;
}
html[data-contrast="high"] .section--wash,
html[data-contrast="high"] .section--alt { background: #fff; }
html[data-contrast="high"] .btn { border-color: currentColor; }
html[data-contrast="high"] :focus-visible { outline-width: 4px; }

/* Respect reduced-motion: neutralise reveal + parallax */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: 0.001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.001ms !important;
		scroll-behavior: auto !important;
	}
	[data-reveal] { opacity: 1 !important; transform: none !important; }
}

/* Reveal-on-scroll base state (disabled if JS/observer absent: see no-js) */
.no-js [data-reveal] { opacity: 1 !important; transform: none !important; }

/* Larger hit areas when text is scaled up for low-vision users */
html[data-text-scale="3"] .btn { padding-block: 1.1rem; }
