/* stylelint-disable selector-id-pattern, selector-class-pattern, selector-max-specificity --
 * Every selector below is Borlabs' own markup, quoted verbatim. Renaming them
 * to our conventions or lowering the specificity would simply stop matching.
 */

/*
 * Focus visibility inside the Borlabs Cookie banner (WCAG 2.4.7).
 *
 * Borlabs ships no outline rules of its own and does not use a shadow DOM, so
 * the controls are reachable from here. Deliberately not solved through the
 * plugin's "Individual CSS" field: that lives in the database and is
 * therefore not versioned.
 *
 * Selectors verified against Borlabs Cookie 3.4.x. The banner scopes
 * everything under either #BorlabsCookieBox or .brlbs-cmpnt-container, and
 * many of its components start from `all: unset`, which drops the outline as
 * well - hence the explicit rules per component rather than relying on the
 * generic focus stylesheet.
 *
 * The contrast band matters here more than anywhere else, because the banner
 * paints its own surfaces and we cannot know their colour.
 */

#BorlabsCookieBox a:focus-visible,
#BorlabsCookieBox button:focus-visible,
#BorlabsCookieBox input:focus-visible,
#BorlabsCookieBox select:focus-visible,
#BorlabsCookieBox .brlbs-cmpnt-cb-btn:focus-visible,
#BorlabsCookieBox .brlbs-cmpnt-btn:focus-visible,
#BorlabsCookieBox .brlbs-cmpnt-link:focus-visible,
#BorlabsCookieBox .brlbs-cmpnt-accordion-toggle:focus-visible,
#BorlabsCookieBox .brlbs-cmpnt-close-button:focus-visible,
#BorlabsCookieBox .brlbs-cmpnt-tab:focus-visible,
.brlbs-cmpnt-container a:focus-visible,
.brlbs-cmpnt-container button:focus-visible,
.brlbs-cmpnt-container input:focus-visible,
.brlbs-cmpnt-container select:focus-visible,
.brlbs-cmpnt-container .brlbs-cmpnt-cb-btn:focus-visible,
.brlbs-cmpnt-container .brlbs-cmpnt-btn:focus-visible,
.brlbs-cmpnt-container .brlbs-cmpnt-link:focus-visible,
.brlbs-cmpnt-container .brlbs-cmpnt-accordion-toggle:focus-visible,
.brlbs-cmpnt-container .brlbs-cmpnt-close-button:focus-visible,
.brlbs-cmpnt-container .brlbs-cmpnt-tab:focus-visible {
	/* No offset: the banner is a fixed overlay with its own stacking context,
	   and an offset ring on an element at the edge would be clipped. */
	outline: var(--ls-focus-width, 3px) var(--ls-focus-style, solid) var(--ls-focus-ring, currentColor);
	outline-offset: 0;
	box-shadow: 0 0 0 var(--ls-focus-width, 3px) var(--ls-focus-backdrop, transparent);
}

/*
 * Bare form controls in the widget scope need more weight than the block above.
 *
 * Borlabs' Tailwind reset is `body div.brlbs-cmpnt-container select:focus
 * { outline: 2px solid transparent; outline-offset: 2px }` at 0-2-3, which
 * outranks `.brlbs-cmpnt-container select:focus-visible` (0-2-1) - measured on
 * Borlabs 3.4.2.2, the widget's select had no visible ring while the same
 * control inside #BorlabsCookieBox was fine (an ID selector wins easily).
 *
 * The doubled `:focus-visible` lifts this to 0-3-3 and therefore does not
 * depend on which stylesheet a host happens to enqueue last - Borlabs uses the
 * same trick. Components that carry a .brlbs-cmpnt-* class are already at
 * 0-3-0 and unaffected.
 */
body div.brlbs-cmpnt-container a:focus-visible:focus-visible,
body div.brlbs-cmpnt-container button:focus-visible:focus-visible,
body div.brlbs-cmpnt-container input:focus-visible:focus-visible,
body div.brlbs-cmpnt-container select:focus-visible:focus-visible,
body div.brlbs-cmpnt-container textarea:focus-visible:focus-visible {
	outline: var(--ls-focus-width, 3px) var(--ls-focus-style, solid) var(--ls-focus-ring, currentColor);
	outline-offset: 0;
	box-shadow: 0 0 0 var(--ls-focus-width, 3px) var(--ls-focus-backdrop, transparent);
}

/*
 * The consent switches hide their native checkbox (opacity: 0, 0x0 px) and
 * paint a .brlbs-cmpnt-slider sibling. An outline on the input itself would be
 * invisible, so it goes on the visible slider - plus :focus-within on the
 * wrapper as a fallback for the checkbox markup variants.
 */
#BorlabsCookieBox .brlbs-cmpnt-btn-switch input:focus-visible + .brlbs-cmpnt-slider,
.brlbs-cmpnt-container .brlbs-cmpnt-btn-switch input:focus-visible + .brlbs-cmpnt-slider,
#BorlabsCookieBox .brlbs-cmpnt-checkbox input:focus-visible + span,
.brlbs-cmpnt-container .brlbs-cmpnt-checkbox input:focus-visible + span {
	outline: var(--ls-focus-width, 3px) var(--ls-focus-style, solid) var(--ls-focus-ring, currentColor);
	outline-offset: var(--ls-focus-width, 3px);
	box-shadow: 0 0 0 var(--ls-focus-width, 3px) var(--ls-focus-backdrop, transparent);
}

#BorlabsCookieBox .brlbs-cmpnt-btn-switch:focus-within,
.brlbs-cmpnt-container .brlbs-cmpnt-btn-switch:focus-within {
	outline: var(--ls-focus-width, 3px) var(--ls-focus-style, solid) var(--ls-focus-ring, currentColor);
	outline-offset: var(--ls-focus-width, 3px);
}
