/**
 * Nipomo Family Dentistry – accessibility overrides
 * High-specificity focus styles override theme outline:none rules.
 */

/* Skip link */
.nipomo-skip-link {
	position: absolute;
	left: -9999px;
	top: auto;
	width: 1px;
	height: 1px;
	overflow: hidden;
	z-index: 100000;
	padding: 0.75rem 1.25rem;
	background: #003d73;
	color: #fff;
	font-weight: 600;
	text-decoration: none;
	border-radius: 0 0 4px 0;
}

.nipomo-skip-link:focus,
.nipomo-skip-link:focus-visible {
	left: 0;
	top: 0;
	width: auto;
	height: auto;
	outline: 3px solid #ffb81c;
	outline-offset: 2px;
}

/* Persistent, high-contrast focus ring for keyboard users */
:focus {
	outline: none;
}

:focus-visible {
	outline: 3px solid #005fcc !important;
	outline-offset: 3px !important;
	box-shadow: 0 0 0 2px #fff, 0 0 0 5px #005fcc !important;
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[tabindex]:not([tabindex="-1"]):focus-visible,
.menu .toggle-btn:focus-visible,
.mobile-menu .toggle-btn:focus-visible,
.elementor-item:focus-visible,
.elementor-nav-menu--dropdown a:focus-visible {
	outline: 3px solid #005fcc !important;
	outline-offset: 3px !important;
	box-shadow: 0 0 0 2px #fff, 0 0 0 5px #005fcc !important;
}

/* Submenu toggle buttons (theme adds span.toggle-btn inside links) */
.menu .toggle-btn,
.mobile-menu .toggle-btn {
	cursor: pointer;
}

.menu .toggle-btn:focus-visible,
.mobile-menu .toggle-btn:focus-visible {
	border-radius: 2px;
}

/* Open submenu indicator */
li.menu-item-has-children.show > a,
li.menu-item-has-children[aria-expanded="true"] > a {
	text-decoration: underline;
}

/* Mobile menu open state */
.mobile-menu-wrapper.open,
body.mmenu-active {
	overflow: visible;
}

.mobile-menu-toggle:focus-visible {
	outline: 3px solid #005fcc !important;
	outline-offset: 3px !important;
}

/* Appointment / contact CTAs – ensure visible focus */
a[href^="tel:"]:focus-visible,
a[href^="mailto:"]:focus-visible,
.btn:focus-visible,
.button:focus-visible,
.wpcf7-submit:focus-visible,
.elementor-button:focus-visible {
	outline: 3px solid #005fcc !important;
	outline-offset: 3px !important;
}

/* Slight contrast boost for very light text (audit: color contrast) */
.text-grey,
.text-muted,
.color-grey {
	color: #4a4a4a !important;
}

/* Underline links in body for non-button links (1.4.1) */
.main-content a:not(.btn):not(.button):not(.elementor-button):not([class*="btn-"]),
.page-wrapper a:not(.btn):not(.button):not(.elementor-button):not([class*="btn-"]) {
	text-decoration-thickness: 1px;
	text-underline-offset: 0.15em;
}

.main-content a:not(.btn):not(.button):not(.elementor-button):hover,
.page-wrapper a:not(.btn):not(.button):not(.elementor-button):hover {
	text-decoration: underline;
}

/* Screen reader only utility */
.nipomo-sr-only {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	padding: 0 !important;
	margin: -1px !important;
	overflow: hidden !important;
	clip: rect(0, 0, 0, 0) !important;
	white-space: nowrap !important;
	border: 0 !important;
}

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
	}
}
