/**
 * GVA — gva-consent skin. Theme owns presentation, the plugin owns markup
 * and behaviour (docs/DESIGN.md §5, §7): this file sets ONLY the plugin's
 * `--gva-consent-*` custom properties, from the theme's own tokens, and
 * touches no `.gva-consent__…` selector.
 *
 * Accept all / Reject all / Configure / Save choices all read
 * `--gva-consent-color-accent` through the plugin's single `.gva-consent__btn`
 * rule, so keeping that token neutral (not `--red`) keeps their equal visual
 * weight — the legal requirement that every choice read as equally
 * prominent outranks giving Accept the brand's usual emphasis colour.
 *
 * Enqueued as `gva-consent-skin` from inc/enqueue.php, only while the
 * gva-consent plugin is active.
 */

.gva-consent {
	--gva-consent-color-text: var(--black);
	--gva-consent-color-bg: var(--bone);

	/*
	 * The theme's own --text-muted (#8C8C8C) is only 3.18:1 on --bone
	 * (#FAF8F8) — below the 4.5:1 WCAG AA text minimum this description
	 * text needs. No existing theme token clears 4.5:1 without reading as
	 * the primary text colour, so this is a darker literal, not a token:
	 * #5C5C5C on #FAF8F8 is 6.32:1.
	 */
	--gva-consent-color-muted: #5c5c5c;

	--gva-consent-color-accent: var(--black);
	--gva-consent-color-on-accent: var(--bone);

	/*
	 * --line (#E6E6E6) is only 1.18:1 on --bone — far below the 3:1 WCAG AA
	 * UI-component-boundary minimum the dialog's Close button border needs.
	 * --text-muted (#8C8C8C) already clears it at 3.18:1, so it is reused
	 * here instead of a new literal.
	 */
	--gva-consent-color-border: var(--text-muted);

	--gva-consent-color-focus: var(--red);

	/*
	 * The eyebrow dot is the one brand-colour detail the banner allows
	 * (gva-consent docs/DESIGN.md §5) — never applied to a button, so
	 * Accept all / Reject all / Configure keep equal visual weight.
	 */
	--gva-consent-color-highlight: var(--red);

	/*
	 * Card layout: the theme has no radius, shadow or spacing tokens
	 * (main.css §2 defines colours, type and layout only), so these are
	 * literals.
	 */
	--gva-consent-radius: 20px;
	--gva-consent-shadow: 0 24px 60px rgb(0 0 0 / 16%), 0 4px 12px rgb(0 0 0 / 8%);
	--gva-consent-inset: 1.5rem;

	--gva-consent-font: var(--font-sans);
}

/*
 * The plugin's bottom-bar banner is `position: fixed`, so once a visitor
 * scrolls to the true end of the page it permanently covers whatever sits
 * there — here, the footer's own legal strip and reopen control — for as
 * long as no choice has been made. assets/js/consent-banner-offset.js
 * measures the banner's real rendered height (it varies with viewport and
 * content reflow) and writes it to --gva-footer-banner-offset on <html>
 * while the banner is visible, 0 otherwise; this reserves that much blank
 * space at the very end of the page so the banner comes to rest over the
 * reserved space instead of over the footer. No plugin selector is
 * touched — this rule targets `body`, a page-level element the plugin has
 * no stake in. The plugin exposes no banner-height API, hence the observer.
 */
body {
	padding-bottom: var(--gva-footer-banner-offset, 0px);
}
