/* Utilities: screen-reader text, skip link, reveal. */
.ew-sr,
.screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: 0;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}
.ew-skip {
	position: absolute;
	top: var(--ew-space-3);
	left: var(--ew-space-3);
	z-index: var(--ew-z-skip);
	transform: translateY(-200%);
	padding: var(--ew-space-2) var(--ew-space-3);
	background: var(--ew-color-ink-900);
	color: var(--ew-color-paper-50);
	font-family: var(--ew-font-body);
	font-weight: var(--ew-weight-ui);
	text-decoration: none;
	border-radius: var(--ew-radius-sm);
}
.ew-skip:focus {
	transform: none;
}
/* Content reveal: one pattern, short stagger, applied by components.js to
   content nodes only. Section shells and the hero never animate. Without
   JavaScript nothing is hidden. */
.ew-reveal {
	opacity: 0;
	transform: translateY(var(--ew-reveal-distance));
	transition:
		opacity var(--ew-motion-duration-slow) var(--ew-motion-ease-out),
		transform var(--ew-motion-duration-slow) var(--ew-motion-ease-out);
	transition-delay: var(--ew-reveal-delay, 0ms);
}
.ew-reveal.is-visible {
	opacity: 1;
	transform: none;
}
.ew-section.ew-reveal,
.ew-hero.ew-reveal,
.ew-hero__card.ew-reveal,
.ew-masthead.ew-reveal,
.ew-header.ew-reveal,
.ew-footer.ew-reveal,
.ew-nav-panel.ew-reveal {
	opacity: 1;
	transform: none;
	transition: none;
}
@media (prefers-reduced-motion: reduce) {
	.ew-reveal {
		opacity: 1;
		transform: none;
		transition: none;
	}
}
