/*
 * Accessibility defaults: skip link, screen-reader-only utility, and a
 * single consistent visible focus style used everywhere instead of relying
 * on (or removing) each browser's own default outline.
 */

.screen-reader-text {
	border: 0;
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute !important;
	width: 1px;
	word-wrap: normal !important;
}

.screen-reader-text:focus {
	background-color: var(--urban-white);
	border-radius: var(--urban-radius-sm);
	box-shadow: var(--urban-shadow-panel);
	clip: auto !important;
	clip-path: none;
	color: var(--urban-text);
	display: block;
	font-size: var(--urban-text-small-size);
	font-weight: 700;
	height: auto;
	left: var(--urban-space-4);
	line-height: normal;
	padding: var(--urban-space-3) var(--urban-space-5);
	text-decoration: none;
	top: var(--urban-space-4);
	width: auto;
	z-index: 100000;
}

/* Consistent visible focus indicator, high-contrast against both black and
   white surfaces. Applied broadly rather than only to specific components
   so nothing in later phases has to remember to add it. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
	outline: 2px solid var(--urban-gold);
	outline-offset: 2px;
}

/* Fallback for browsers without :focus-visible support. */
a:focus,
button:focus {
	outline: 2px solid var(--urban-gold);
	outline-offset: 2px;
}

.urban-tap-target {
	min-height: var(--urban-tap-target-min);
	min-width: var(--urban-tap-target-min);
}
