/* Public component paints only. Layout belongs to each component stylesheet.
 * Use the active preset, with the established Current Tactical tokens as fallback.
 * Never feed admin/editor palettes into public controls. Explicit faction accents
 * belong to individual records, not the surrounding page or neutral tool shell.
 */
body:not(.wp-admin) {
	--vs-public-page: var(--vs-theme-page, var(--vs-void-black, #090b0c));
	--vs-public-surface: var(--vs-theme-surface, var(--vs-iron-black, #151719));
	--vs-public-raised: var(--vs-theme-raised, var(--vs-gunmetal, #24292c));
	--vs-public-text: var(--vs-theme-text, var(--vs-pale-ash, #f0e9da));
	--vs-public-muted: var(--vs-theme-muted, var(--vs-bone-grey, #b8b6ae));
	--vs-public-edge: var(--vs-theme-border, var(--vs-ash-grey, #4d5355));
	--vs-public-accent: var(--vs-theme-accent, var(--vs-weathered-brass, #8b7650));
	--vs-public-link: var(--vs-theme-accent-strong, var(--vs-brass-highlight, #bba579));
	--vs-public-focus: var(--vs-theme-focus, var(--vs-public-link));
	--vs-public-button-text: var(--vs-theme-button-text, #101010);
	--vs-public-hover: color-mix(in srgb, var(--vs-public-accent) 14%, var(--vs-public-surface));
	--vs-public-backdrop: color-mix(in srgb, var(--vs-theme-overlay, #090b0c) 90%, transparent);
	/* Older public events and collection tools used these non-canonical names. */
	--vs-theme-panel: var(--vs-public-surface);
	--vs-theme-panel-deep: var(--vs-public-page);
	--vs-theme-edge: var(--vs-public-edge);
}

/* Starter Force: neutral requisition shell, opt-in faction card accents. */
body:not(.wp-admin) .vs-product-builder {
	--vs-builder-accent: var(--vs-public-accent);
	border-color: var(--vs-public-edge);
	border-top-color: var(--vs-public-accent);
	border-radius: var(--vs-panel-radius, 2px);
	background: radial-gradient(circle at 88% 0, color-mix(in srgb, var(--vs-public-accent) 9%, transparent), transparent 34rem), linear-gradient(145deg, var(--vs-public-surface), var(--vs-public-page));
	color: var(--vs-public-text);
}
body:not(.wp-admin) .vs-product-builder::before { opacity: var(--vs-panel-decoration-opacity, 1); }
body:not(.wp-admin) .vs-product-builder :is(.vs-product-builder__intro, .vs-product-builder__controls, .vs-product-builder__faction-group, .vs-product-builder__faction-group > header, .vs-product-builder__slot-group, .vs-product-builder__summary > header, .vs-product-builder__summary li, .vs-product-builder__total) { border-color: var(--vs-public-edge); }
body:not(.wp-admin) .vs-product-builder :is(.vs-product-builder__controls, .vs-product-builder__faction-group, .vs-product-builder__slot-group) { background: var(--vs-public-surface); border-radius: var(--vs-card-radius, 2px); }
body:not(.wp-admin) .vs-product-builder :is(.vs-product-builder__slot, .vs-product-builder__summary li) { background: var(--vs-public-page); }
body:not(.wp-admin) .vs-product-builder__summary { background: linear-gradient(145deg, var(--vs-public-raised), var(--vs-public-surface)); border-color: var(--vs-public-edge); border-radius: var(--vs-card-radius, 2px); }
body:not(.wp-admin) .vs-product-builder__mark { background: var(--vs-public-page); border-color: var(--vs-public-edge); color: var(--vs-public-accent); }
body:not(.wp-admin) :is(.vs-product-builder, .vs-product-picker) :is(h2, h3, label, legend, strong, b) { color: var(--vs-public-text); }
body:not(.wp-admin) .vs-product-builder :is(.vs-product-builder__intro p:last-child, .vs-product-builder__slot-group legend small, .vs-product-builder__summary li em, .vs-product-builder__summary li.vs-product-builder__summary-empty, .vs-product-builder__total small, .vs-product-builder__status, .vs-product-builder__prompt p, .vs-product-builder__empty p) { color: var(--vs-public-muted); }
body:not(.wp-admin) .vs-product-builder__readiness { background: var(--vs-public-surface); color: var(--vs-public-muted); border-color: var(--vs-public-edge); }
body:not(.wp-admin) .vs-product-builder__readiness.is-ready { color: var(--vs-public-text); background: color-mix(in srgb, #32833b 16%, var(--vs-public-surface)); border-color: color-mix(in srgb, #32833b 70%, var(--vs-public-text)); }
body:not(.wp-admin) :is(.vs-product-builder__summary-placeholder, .vs-product-builder__summary li img) { background: var(--vs-public-raised); }
body:not(.wp-admin) :is(.vs-product-builder__prompt, .vs-product-builder__empty) { background: var(--vs-public-surface); border-color: var(--vs-public-edge); }
body:not(.wp-admin) .vs-product-builder select { background: var(--vs-public-page); color: var(--vs-public-text); border-color: var(--vs-public-edge); border-radius: var(--vs-control-radius, 4px); }
body:not(.wp-admin) .vs-product-builder select option { background: var(--vs-public-surface); color: var(--vs-public-text); }
body:not(.wp-admin) .vs-product-builder :is(select, button):focus-visible { outline-color: var(--vs-public-focus); }

body:not(.wp-admin) :is(.vs-product-builder__gallery-trigger, .vs-product-picker__card) {
	--vs-picker-accent: var(--vs-public-accent);
	border-color: color-mix(in srgb, var(--vs-picker-accent) 40%, var(--vs-public-edge));
	border-radius: var(--vs-control-radius, 2px);
	background: linear-gradient(115deg, color-mix(in srgb, var(--vs-picker-accent) 10%, var(--vs-public-surface)), var(--vs-public-surface) 70%);
	color: var(--vs-public-text);
}
body:not(.wp-admin) .vs-product-builder__gallery-trigger { border-left-color: var(--vs-picker-accent); }
body:not(.wp-admin) .vs-product-picker__card { border-bottom-color: var(--vs-picker-accent); }
body:not(.wp-admin) :is(.vs-product-builder__gallery-trigger, .vs-product-picker__card):is(:hover, :focus-visible, [aria-pressed="true"]) { border-color: var(--vs-picker-accent); background: color-mix(in srgb, var(--vs-picker-accent) 15%, var(--vs-public-surface)); color: var(--vs-public-text); }
body:not(.wp-admin) .vs-product-builder__gallery-trigger small { color: var(--vs-public-text); }
body:not(.wp-admin) .vs-product-picker { background: var(--vs-public-backdrop); }
body:not(.wp-admin) .vs-product-picker__dialog { background: radial-gradient(circle at 88% 3%, color-mix(in srgb, var(--vs-public-accent) 9%, transparent), transparent 30%), var(--vs-public-surface); color: var(--vs-public-text); border-color: var(--vs-public-edge); border-top-color: var(--vs-public-accent); border-radius: var(--vs-panel-radius, 3px); }
body:not(.wp-admin) .vs-product-picker__dialog > header { background: color-mix(in srgb, var(--vs-public-surface) 97%, transparent); border-color: var(--vs-public-edge); }
body:not(.wp-admin) :is(.vs-product-picker__dialog header p:last-child, .vs-product-picker__description, .vs-product-picker__empty) { color: var(--vs-public-muted); }
body:not(.wp-admin) .vs-product-picker__tools input { background: var(--vs-public-page); color: var(--vs-public-text); border-color: var(--vs-public-edge); border-radius: var(--vs-control-radius, 2px); }
body:not(.wp-admin) .vs-product-picker__tools input::placeholder { color: var(--vs-public-muted); opacity: 1; }
body:not(.wp-admin) :is(.vs-product-picker__close, .vs-product-picker__clear) { background: var(--vs-public-raised); color: var(--vs-public-text); border-color: var(--vs-public-edge); border-radius: var(--vs-control-radius, 2px); }
body:not(.wp-admin) :is(.vs-product-picker__close, .vs-product-picker__clear):is(:hover, :focus-visible) { background: var(--vs-public-hover); color: var(--vs-public-text); border-color: var(--vs-public-focus); }
body:not(.wp-admin) .vs-product-picker :is(button, input):focus-visible { outline: 3px solid var(--vs-public-focus); outline-offset: 2px; }
body:not(.wp-admin) .vs-product-picker__visual { background: linear-gradient(135deg, color-mix(in srgb, var(--vs-picker-accent) 20%, var(--vs-public-raised)), var(--vs-public-page)); }
body:not(.wp-admin) .vs-product-picker__kicker { color: color-mix(in srgb, var(--vs-picker-accent) 35%, var(--vs-public-text)); }
body:not(.wp-admin) .vs-product-picker__body small { color: var(--vs-public-text); }
body:not(.wp-admin) .vs-product-picker__empty { border-color: var(--vs-public-edge); }

/* Question forms and public polls, including their empty/results states. */
body:not(.wp-admin) .vs-community-engagement { background: linear-gradient(110deg, var(--vs-public-surface), var(--vs-public-raised)); color: var(--vs-public-text); border-color: var(--vs-public-edge); border-radius: var(--vs-panel-radius, 2px); }
body:not(.wp-admin) .vs-community-engagement :is(h2, h3, h4) { color: var(--vs-public-text); }
body:not(.wp-admin) .vs-community-engagement :is(textarea, select, select option) { background: var(--vs-public-page); color: var(--vs-public-text); border-color: var(--vs-public-edge); accent-color: var(--vs-public-accent); }
body:not(.wp-admin) :is(.vs-community-engagement textarea, .vs-community-engagement select):focus-visible,
body:not(.wp-admin) .vs-poll__option:focus-within { outline-color: var(--vs-public-focus); }
body:not(.wp-admin) :is(.vs-community-engagement .description, .vs-poll__privacy-note) { color: var(--vs-public-muted); }
body:not(.wp-admin) .vs-community-engagement__notice { background: var(--vs-public-raised); color: var(--vs-public-text); }
body:not(.wp-admin) .vs-community-engagement__notice--success { border-color: color-mix(in srgb, #32833b 70%, var(--vs-public-text)); }
body:not(.wp-admin) .vs-community-engagement__notice--error { border-color: color-mix(in srgb, #b32d2e 70%, var(--vs-public-text)); }
body:not(.wp-admin) .vs-poll { background: var(--vs-public-surface); border-color: var(--vs-public-edge); color: var(--vs-public-text); }
body:not(.wp-admin) .vs-poll__option { background: var(--vs-public-raised); border-color: var(--vs-public-edge); color: var(--vs-public-text); }
body:not(.wp-admin) .vs-poll__option:hover { background: var(--vs-public-hover); border-color: var(--vs-public-focus); }
body:not(.wp-admin) .vs-poll__form input[type="radio"] { accent-color: var(--vs-public-accent); }
body:not(.wp-admin) .vs-poll__results { border-color: var(--vs-public-edge); }
body:not(.wp-admin) .vs-poll__results meter { accent-color: var(--vs-public-accent); }
body:not(.wp-admin) .vs-poll__results meter::-webkit-meter-bar { background: var(--vs-public-raised); border-color: var(--vs-public-edge); }
body:not(.wp-admin) .vs-poll__results meter::-webkit-meter-optimum-value { background: var(--vs-public-accent); }
body:not(.wp-admin) .vs-poll__results meter::-moz-meter-bar { background: var(--vs-public-accent); }
body:not(.wp-admin) .vs-poll__status { background: var(--vs-public-raised); border-color: var(--vs-public-accent); color: var(--vs-public-text); }

/* Existing lore carousel: keep real faction indicators, remove teal fallbacks. */
body:not(.wp-admin) .vs-lore-gallery__viewport { border-color: var(--vs-public-edge); background: var(--vs-public-page); }
body:not(.wp-admin) .vs-lore-gallery__nav { background: color-mix(in srgb, var(--vs-public-surface) 96%, transparent); border-color: var(--vs-public-edge); color: var(--vs-public-text); }
body:not(.wp-admin) .vs-lore-gallery__nav:is(:hover, :focus-visible) { background: var(--vs-public-raised); border-color: var(--vs-context-accent, var(--vs-public-accent)); color: var(--vs-public-text); }
body:not(.wp-admin) .vs-lore-gallery__viewport:focus-visible { outline-color: var(--vs-public-focus); }
body:not(.wp-admin) .vs-lore-gallery__caption { background: var(--vs-public-surface); border-color: var(--vs-public-edge); color: var(--vs-public-muted); }
body:not(.wp-admin) .vs-lore-gallery__position { color: color-mix(in srgb, var(--vs-context-accent, var(--vs-public-accent)) 35%, var(--vs-public-text)); }
body:not(.wp-admin) .vs-lore-gallery-lightbox__image { background: var(--vs-public-page); }

/* Search was painted independently of the active preset. */
body:not(.wp-admin) .vs-global-search { background: radial-gradient(circle at 82% 0, color-mix(in srgb, var(--vs-public-accent) 12%, transparent), transparent 34%), var(--vs-public-page); color: var(--vs-public-text); }
body:not(.wp-admin) :is(.vs-global-search__form, .vs-global-search__results) { background: linear-gradient(110deg, var(--vs-public-surface), var(--vs-public-raised)); border-color: var(--vs-public-edge); }
body:not(.wp-admin) .vs-global-search__controls :is(input, select, option) { background: var(--vs-public-page); color: var(--vs-public-text); border-color: var(--vs-public-edge); }
body:not(.wp-admin) .vs-global-search__controls :is(input, select):focus-visible { outline-color: var(--vs-public-focus); }
body:not(.wp-admin) .vs-global-search__results article { background: var(--vs-public-surface); border-color: var(--vs-public-edge); }
body:not(.wp-admin) .vs-global-search__results h2 a { color: var(--vs-public-text); }
body:not(.wp-admin) .vs-global-search__results h2 a:hover { color: var(--vs-public-link); }
body:not(.wp-admin) .vs-global-search__results article > p:not(.vs-eyebrow),
body:not(.wp-admin) .vs-global-search__ellipsis { color: var(--vs-public-muted); }
body:not(.wp-admin) .vs-global-search__limit-note { color: var(--vs-public-muted)!important; }
body:not(.wp-admin) .vs-global-search__page-link { background: var(--vs-public-surface); color: var(--vs-public-text); border-color: var(--vs-public-edge); }
body:not(.wp-admin) .vs-global-search__page-link:is(:hover, :focus-visible) { background: var(--vs-public-hover); color: var(--vs-public-text); border-color: var(--vs-public-focus); }
body:not(.wp-admin) .vs-global-search__page-link.is-current { background: var(--vs-public-accent); color: var(--vs-public-button-text); border-color: var(--vs-public-accent); }

/* Canvas defaults only; inline editorial images/colours and faction cards remain intact. */
body:not(.wp-admin) :is(.vs-canvas-rich-section, .vs-canvas-feature-section) { background-color: var(--vs-public-surface); color: var(--vs-public-text); }
body:not(.wp-admin) .vs-canvas-rich-text { color: var(--vs-public-muted); }
body:not(.wp-admin) .vs-canvas-feature-placeholder { background: radial-gradient(circle at center, color-mix(in srgb, var(--vs-public-accent) 10%, transparent), transparent 55%), var(--vs-public-surface); border-color: var(--vs-public-edge); }
body:not(.wp-admin) .vs-canvas-feature-placeholder span { color: var(--vs-public-link); }
body:not(.wp-admin) .vs-canvas-element.has-surface-tactical { background: linear-gradient(135deg, var(--vs-public-raised), var(--vs-public-surface)); border-color: var(--vs-public-edge); }
body:not(.wp-admin) .vs-canvas-built-section .vs-path-card { background: linear-gradient(135deg, var(--vs-public-raised), var(--vs-public-surface)); border-color: var(--vs-public-edge); }
body:not(.wp-admin) .vs-canvas-built-section.has-card-style-compact_icon .vs-path-card { background: linear-gradient(135deg, var(--vs-public-raised), var(--vs-public-surface)); border-color: var(--vs-public-edge); }
body:not(.wp-admin) .vs-canvas-built-section.has-image-fit-contain :is(.vs-home-compact__faction-art, .vs-path-card__image) img { background-color: var(--vs-public-page); }

/* Community and player collection controls already consume the aliases above. */
body:not(.wp-admin) .vs-community-event { color: var(--vs-public-text); border-top-color: var(--vs-public-accent); }
body:not(.wp-admin) .vs-community-event__location { color: var(--vs-public-link); }
body:not(.wp-admin) .vs-player-collections__list summary span { background: var(--vs-public-accent); color: var(--vs-public-button-text); }
body:not(.wp-admin) .vs-player-collection-gate { border-color: var(--vs-public-accent); }
body:not(.wp-admin) .vs-player-tools__gate { background: color-mix(in srgb, var(--vs-public-accent) 12%, var(--vs-public-surface)); }
body:not(.wp-admin) :is(.vs-playtest-feedback__form, .vs-player-collection-save, .vs-player-collections__create) :is(input, select, textarea, option) { background: var(--vs-public-page); color: var(--vs-public-text); border-color: var(--vs-public-edge); }
body:not(.wp-admin) :is(.vs-playtest-feedback__form, .vs-player-collection-save, .vs-player-collections__create) :is(input, select, textarea):focus-visible { outline-color: var(--vs-public-focus); }

/* Public install prompts/navigation should not look like Workbench controls. */
body:not(.wp-admin) :is(.vs-table-mode-promo, .vs-pwa-wayfinder, .vs-table-mode__command-card) { background: linear-gradient(135deg, var(--vs-public-raised), var(--vs-public-surface)); color: var(--vs-public-text); border-color: var(--vs-public-edge); }
body:not(.wp-admin) .vs-table-mode-promo { border-left-color: var(--vs-public-accent); }
body:not(.wp-admin) .vs-table-mode-promo .vs-eyebrow { color: var(--vs-public-link); }
body:not(.wp-admin) .vs-pwa-wayfinder :is(a, button) { background: var(--vs-public-raised); color: var(--vs-public-text); border-color: var(--vs-public-edge); }
body:not(.wp-admin) .vs-pwa-wayfinder :is(a, button):is(:hover, :focus-visible) { background: var(--vs-public-hover); color: var(--vs-public-text); border-color: var(--vs-public-focus); outline-color: var(--vs-public-focus); }
