/*!
 * ABI Accessibility – page adjustments.
 * Classes are set on <html> by abi-a11y-early.js. The widget itself lives in a
 * Shadow DOM (#abi-a11y-host) and is excluded from these rules.
 */

/* ---------- Skip link (WCAG 2.4.1) ---------- */
.abi-skip-link {
	position: absolute !important;
	left: -9999px !important;
	top: auto;
	width: 1px;
	height: 1px;
	overflow: hidden;
}
.abi-skip-link:focus {
	left: 16px !important;
	top: 16px !important;
	width: auto;
	height: auto;
	z-index: 100000;
	padding: 12px 20px;
	background: #0b0c0c;
	color: #fff !important;
	font: 700 16px/1.3 system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
	text-decoration: underline;
	border-radius: 6px;
	outline: 3px solid #ffbf47;
	outline-offset: 0;
}

/* ---------- Visible keyboard focus (WCAG 2.4.7) ---------- */
html.abi-fix-focus :focus-visible:not(abi-a11y-widget) {
	outline: 2px solid currentColor !important;
	outline-offset: 2px !important;
}

html.abi-focus :focus:not(abi-a11y-widget) {
	outline: 3px solid #ffbf47 !important;
	outline-offset: 2px !important;
	box-shadow: 0 0 0 6px #0b0c0c !important;
}

/* ---------- Text size (WCAG 1.4.4) ----------
 * Flatsome sizes text in %/em/rem relative to the root, so scaling the root
 * font size scales body copy, navigation, buttons, product titles, etc. */
html.abi-fs {
	font-size: calc(100% * var(--abi-fs-scale, 1)) !important;
}
html.abi-fs body {
	overflow-wrap: break-word;
}
/* ---------- Text spacing (WCAG 1.4.12) ---------- */
html.abi-lh body *:not(abi-a11y-widget):not(i) {
	line-height: var(--abi-lh) !important;
}
html.abi-ls body *:not(abi-a11y-widget):not(i) {
	letter-spacing: var(--abi-ls) !important;
	word-spacing: var(--abi-ws) !important;
}

/* ---------- Readable font (WCAG 1.4.8) ----------
 * Flatsome icons are <i class="icon-*"> with the fl-icons font – keep them. */
html.abi-font body,
html.abi-font body *:not(abi-a11y-widget):not(i):not([class^="icon-"]):not([class*=" icon-"]):not(.dashicons):not([class*="dashicons-"]):not(.fa):not([class*="fa-"]) {
	font-family: Verdana, Tahoma, "Segoe UI", Arial, sans-serif !important;
}

/* ---------- Align left (WCAG 1.4.8) ---------- */
html.abi-align body *:not(abi-a11y-widget) {
	text-align: start !important;
}

/* ---------- Contrast modes (WCAG 1.4.3 / 1.4.6) ---------- */
html.abi-c-dark,
html.abi-c-dark body { background: #121212 !important; }
html.abi-c-light,
html.abi-c-light body { background: #fff !important; }
html.abi-c-high,
html.abi-c-high body { background: #000 !important; }

html.abi-c-dark body *:not(abi-a11y-widget),
html.abi-c-light body *:not(abi-a11y-widget),
html.abi-c-high body *:not(abi-a11y-widget) {
	background-color: transparent !important;
	background-image: none !important;
	text-shadow: none !important;
	box-shadow: none !important;
}

html.abi-c-dark body *:not(abi-a11y-widget) { color: #f1f1f1 !important; border-color: #8a8a8a !important; }
html.abi-c-light body *:not(abi-a11y-widget) { color: #000 !important; border-color: #555 !important; }
html.abi-c-high body *:not(abi-a11y-widget) { color: #fff !important; border-color: #fff !important; }

html.abi-c-dark body a, html.abi-c-dark body a * { color: #8ec5ff !important; }
html.abi-c-light body a, html.abi-c-light body a * { color: #0039a6 !important; }
html.abi-c-high body a, html.abi-c-high body a * { color: #ffff00 !important; }
html.abi-c-high body :is(h1, h2, h3, h4, h5, h6), html.abi-c-high body :is(h1, h2, h3, h4, h5, h6) * { color: #00ffff !important; }

/* Flatsome layers that overlay content (sticky header, dropdowns, off-canvas, lightboxes)
 * need a solid background or content scrolling beneath them becomes unreadable. */
html.abi-c-dark body :is(.header-wrapper, .header-main, .header-top, .header-bottom, .stuck, .nav-dropdown, .mfp-content, .off-canvas-left .mfp-content, .off-canvas-right .mfp-content, .sidebar-menu, .lightbox-content, .sticky-add-to-cart, .widget_shopping_cart, .tooltipster-box, .cart-popup-inner, .ux-search-results, .autocomplete-suggestions, select, option),
html.abi-c-dark body :is(.button, button, input[type="submit"], input[type="button"]) { background-color: #121212 !important; }
html.abi-c-light body :is(.header-wrapper, .header-main, .header-top, .header-bottom, .stuck, .nav-dropdown, .mfp-content, .off-canvas-left .mfp-content, .off-canvas-right .mfp-content, .sidebar-menu, .lightbox-content, .sticky-add-to-cart, .widget_shopping_cart, .tooltipster-box, .cart-popup-inner, .ux-search-results, .autocomplete-suggestions, select, option),
html.abi-c-light body :is(.button, button, input[type="submit"], input[type="button"]) { background-color: #fff !important; }
html.abi-c-high body :is(.header-wrapper, .header-main, .header-top, .header-bottom, .stuck, .nav-dropdown, .mfp-content, .off-canvas-left .mfp-content, .off-canvas-right .mfp-content, .sidebar-menu, .lightbox-content, .sticky-add-to-cart, .widget_shopping_cart, .tooltipster-box, .cart-popup-inner, .ux-search-results, .autocomplete-suggestions, select, option),
html.abi-c-high body :is(.button, button, input[type="submit"], input[type="button"]) { background-color: #000 !important; }

html.abi-c-dark .mfp-bg, html.abi-c-light .mfp-bg, html.abi-c-high .mfp-bg { background: #000 !important; opacity: .85 !important; }

html:is(.abi-c-dark, .abi-c-light, .abi-c-high) :is(.button, button, input, select, textarea):not(abi-a11y-widget) {
	border-width: 2px !important;
	border-style: solid !important;
}
html.abi-c-high ::placeholder { color: #d0d0d0 !important; opacity: 1 !important; }
html.abi-c-dark ::placeholder { color: #bdbdbd !important; opacity: 1 !important; }
html.abi-c-light ::placeholder { color: #444 !important; opacity: 1 !important; }

/* Invert: <html> is inverted via inline filter; media is inverted back. */
html.abi-c-invert { background: #fff; }
html.abi-c-invert :is(img, video, iframe, canvas, embed, object, .bg, .banner-bg, .section-bg, [style*="background-image"]),
html.abi-c-invert #abi-a11y-host {
	filter: invert(1) hue-rotate(180deg) !important;
}
html.abi-c-invert :is(.bg, .banner-bg, .section-bg, [style*="background-image"]) :is(img, video, iframe, canvas) {
	filter: none !important;
}

/* ---------- Highlight links (WCAG 1.4.1) ---------- */
html.abi-links a {
	text-decoration: underline !important;
	text-decoration-thickness: 2px !important;
	text-underline-offset: 3px !important;
	outline: 2px dashed currentColor !important;
	outline-offset: 2px !important;
}

/* ---------- Highlight headings ---------- */
html.abi-headings :is(h1, h2, h3, h4, h5, h6, [role="heading"]) {
	outline: 3px dotted currentColor !important;
	outline-offset: 4px !important;
}

/* ---------- Big cursor ---------- */
html.abi-cursor,
html.abi-cursor * {
	cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 24 24'%3E%3Cpath d='M4 2l15 9-6.5 1.5L16 20l-3 1.5-3.5-7.5L4 18z' fill='%23000' stroke='%23fff' stroke-width='1.2' stroke-linejoin='round'/%3E%3C/svg%3E") 8 4, auto !important;
}
html.abi-cursor :is(a, button, [role="button"], label, select, summary, input[type="submit"], input[type="checkbox"], input[type="radio"]),
html.abi-cursor :is(a, button, [role="button"]) * {
	cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 24 24'%3E%3Cpath d='M4 2l15 9-6.5 1.5L16 20l-3 1.5-3.5-7.5L4 18z' fill='%231a5fb4' stroke='%23fff' stroke-width='1.2' stroke-linejoin='round'/%3E%3C/svg%3E") 8 4, pointer !important;
}

/* ---------- Stop animations (WCAG 2.2.2, 2.3.3) ---------- */
html.abi-motion *,
html.abi-motion *::before,
html.abi-motion *::after {
	animation-duration: .001ms !important;
	animation-delay: 0s !important;
	animation-iteration-count: 1 !important;
	transition-duration: .001ms !important;
	transition-delay: 0s !important;
	scroll-behavior: auto !important;
}
/* Flatsome scroll-reveal elements would otherwise stay hidden. */
html.abi-motion [data-animate] {
	opacity: 1 !important;
	transform: none !important;
	filter: none !important;
	visibility: visible !important;
}
html.abi-motion [data-parallax],
html.abi-motion .parallax-active .bg {
	transform: none !important;
}

/* ---------- Hide images ---------- */
html.abi-noimg :is(img, picture, video, svg image, [role="img"]):not(abi-a11y-widget) {
	visibility: hidden !important;
}
html.abi-noimg body *:not(abi-a11y-widget) {
	background-image: none !important;
}
