/*
Theme Name: Rush Bedrock
Theme URI: https://rush.example/
Author: Rush
Author URI: https://rush.example/
Description: Rush agency base block theme (Full Site Editing). Parent theme — client sites use a thin child theme that overrides brand tokens. Design system, templates, parts, patterns and fonts live here.
Version: 0.4.71
Requires at least: 6.7
Tested up to: 7.0
Requires PHP: 8.1
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: rush
Tags: full-site-editing, block-patterns, editor-style, custom-colors, custom-logo, custom-menu
*/

/*
 * Most styling lives in theme.json (the design system).
 * Add only what theme.json cannot express below — keep it minimal.
 */

/* ==========================================================================
   Typography — global rendering
   ========================================================================== */

:root {
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

/* ==========================================================================
   Accessibility — interactive states theme.json can't express
   ========================================================================== */

/*
 * No custom focus rings — suppress theme + browser outlines on interactive
 * controls. Skip-link below still becomes visible on keyboard focus.
 */
:is( a, button, summary, input, select, textarea, .wp-element-button ):focus,
:is( a, button, summary, input, select, textarea, .wp-element-button ):focus-visible,
[tabindex]:not( [tabindex="-1"] ):focus,
[tabindex]:not( [tabindex="-1"] ):focus-visible,
.wp-block-search__input:focus,
.wp-block-search__input:focus-visible,
.wp-block-search__button:focus,
.wp-block-search__button:focus-visible {
	outline: none;
	box-shadow: none;
}

/*
 * Button states. :hover is a colour change and lives in theme.json (its
 * strength); :active (tactile press) and :disabled need transform/opacity,
 * which theme.json can't express.
 */
.wp-element-button {
	transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease, transform 0.15s ease;
}

.wp-element-button:active {
	transform: translateY( 1px );
}

button:disabled,
input:disabled,
.wp-element-button[aria-disabled="true"] {
	opacity: 0.5;
	cursor: not-allowed;
}

/*
 * Skip link: WordPress core auto-injects one for block themes (to
 * #wp--skip-link--target before <main>). Core's default is grey #eee/#444 —
 * rebrand it. Specificity bumped (leading `a`) so it beats core's inline rule
 * regardless of load order.
 */
a.skip-link.screen-reader-text:focus {
	background-color: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
	padding: var(--wp--custom--spacing--3) var(--wp--custom--spacing--4);
	font-size: var(--wp--preset--font-size--small);
	font-weight: var(--wp--custom--font-weight--medium);
	text-decoration: none;
	z-index: 100000;
}

/*
 * Button arrow + inverted-hover borders live in inc/button-styles.php
 * (button_parity_css) — enqueued on the front end and injected into the editor iframe.
 */

.rush-icon {
	display: inline-block;
	width: 1.25rem;
	height: 1.25rem;
	background-color: currentColor;
	mask-size: contain;
	mask-repeat: no-repeat;
	mask-position: center;
}

.rush-icon--search {
	mask-image: url("assets/icons/search.svg");
}

/* ==========================================================================
   Forms — shared input chrome (tokens: --wp--custom--form--*)
   Parent defaults match Figma/shadcn inputs. Override in child theme.json
   under settings.custom.form (and settings.custom.shadow).
   Search, native forms, Gravity Forms inherit the same look.
   ========================================================================== */

:where(
	input:not([type="submit"]):not([type="button"]):not([type="reset"]):not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]):not([type="image"]):not([type="range"]):not([type="color"]),
	textarea,
	select
),
.wp-block-search__input,
.gform_wrapper :where(
	input:not([type="submit"]):not([type="button"]):not([type="reset"]):not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]):not([type="image"]),
	textarea,
	select
) {
	box-sizing: border-box;
	width: 100%;
	max-width: 100%;
	min-height: var(--gf-ctrl-size, var(--wp--custom--form--height));
	height: var(--gf-ctrl-size, var(--wp--custom--form--height));
	padding: var(--wp--custom--form--padding-y) var(--wp--custom--form--padding-x);
	border: var(--wp--custom--form--border-width) solid var(--gf-ctrl-border-color, var(--wp--custom--form--border-color));
	border-radius: var(--gf-radius, var(--wp--custom--form--radius));
	background-color: var(--gf-color-in-ctrl, var(--wp--custom--form--bg));
	color: var(--gf-color-in-ctrl-contrast, var(--wp--custom--form--color));
	box-shadow: var(--wp--custom--form--shadow);
	font-family: inherit;
	font-size: var(--wp--custom--form--font-size);
	line-height: var(--wp--custom--line-height--snug, 1.25);
	transition: border-color 0.15s ease, background-color 0.15s ease;
}

textarea,
.gform_wrapper textarea {
	height: auto;
	min-height: var(--wp--custom--form--textarea-min-height);
	padding-top: var(--wp--custom--form--padding-y-textarea);
	padding-bottom: var(--wp--custom--form--padding-y-textarea);
	resize: vertical;
}

:where(input, textarea, select)::placeholder {
	color: var(--wp--custom--form--placeholder);
	opacity: 1;
}

/*
 * Explicit GF field chrome (not :where) — Orbital/theme-framework in the editor
 * beats zero-specificity :where() for text/email/select. Textarea and choices are
 * covered by the rules above/below, which read the same --gf-* properties, so a
 * border colour picked in the block applies to every control type.
 */
.gform_wrapper input[type="text"],
.gform_wrapper input[type="email"],
.gform_wrapper input[type="tel"],
.gform_wrapper input[type="url"],
.gform_wrapper input[type="number"],
.gform_wrapper input[type="password"],
.gform_wrapper input[type="search"],
.gform_wrapper input[type="date"],
.gform_wrapper input[type="time"],
.gform_wrapper input[type="datetime-local"],
.gform_wrapper input:not([type]),
.gform_wrapper select,
.gform_wrapper .ginput_container input[type="text"],
.gform_wrapper .ginput_container input[type="email"],
.gform_wrapper .ginput_container input[type="tel"],
.gform_wrapper .ginput_container input[type="url"],
.gform_wrapper .ginput_container input[type="number"],
.gform_wrapper .ginput_container input[type="password"],
.gform_wrapper .ginput_container input[type="search"],
.gform_wrapper .ginput_container select,
.gform_wrapper.gform-theme--framework input[type="text"],
.gform_wrapper.gform-theme--framework input[type="email"],
.gform_wrapper.gform-theme--framework input[type="tel"],
.gform_wrapper.gform-theme--framework input[type="url"],
.gform_wrapper.gform-theme--framework input[type="number"],
.gform_wrapper.gform-theme--framework input[type="password"],
.gform_wrapper.gform-theme--framework input[type="search"],
.gform_wrapper.gform-theme--framework input:not([type]),
.gform_wrapper.gform-theme--framework select,
.editor-styles-wrapper .gform_wrapper input[type="text"],
.editor-styles-wrapper .gform_wrapper input[type="email"],
.editor-styles-wrapper .gform_wrapper input[type="tel"],
.editor-styles-wrapper .gform_wrapper input[type="url"],
.editor-styles-wrapper .gform_wrapper input[type="number"],
.editor-styles-wrapper .gform_wrapper input[type="password"],
.editor-styles-wrapper .gform_wrapper input[type="search"],
.editor-styles-wrapper .gform_wrapper input:not([type]),
.editor-styles-wrapper .gform_wrapper select,
.block-editor-iframe__body .gform_wrapper input[type="text"],
.block-editor-iframe__body .gform_wrapper input[type="email"],
.block-editor-iframe__body .gform_wrapper input[type="tel"],
.block-editor-iframe__body .gform_wrapper input[type="url"],
.block-editor-iframe__body .gform_wrapper input[type="number"],
.block-editor-iframe__body .gform_wrapper input[type="password"],
.block-editor-iframe__body .gform_wrapper input[type="search"],
.block-editor-iframe__body .gform_wrapper input:not([type]),
.block-editor-iframe__body .gform_wrapper select {
	box-sizing: border-box;
	width: 100%;
	max-width: 100%;
	min-height: var(--gf-ctrl-size, var(--wp--custom--form--height));
	height: var(--gf-ctrl-size, var(--wp--custom--form--height));
	padding: var(--wp--custom--form--padding-y) var(--wp--custom--form--padding-x);
	border: var(--wp--custom--form--border-width) solid var(--gf-ctrl-border-color, var(--wp--custom--form--border-color)) !important;
	border-radius: var(--gf-radius, var(--wp--custom--form--radius)) !important;
	background-color: var(--gf-color-in-ctrl, var(--wp--custom--form--bg)) !important;
	color: var(--gf-color-in-ctrl-contrast, var(--wp--custom--form--color));
	box-shadow: var(--wp--custom--form--shadow) !important;
	font-family: inherit;
	font-size: var(--wp--custom--form--font-size);
	line-height: var(--wp--custom--line-height--snug, 1.25);
	outline: none;
	appearance: none;
	-webkit-appearance: none;
}

.gform_wrapper select,
.editor-styles-wrapper .gform_wrapper select,
.block-editor-iframe__body .gform_wrapper select {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%23737373' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right var(--wp--custom--form--padding-x) center;
	background-size: 0.75rem;
	padding-right: calc(var(--wp--custom--form--padding-x) * 2 + 0.75rem);
}

.gform_wrapper input[type="text"]:focus,
.gform_wrapper input[type="email"]:focus,
.gform_wrapper input[type="tel"]:focus,
.gform_wrapper input[type="url"]:focus,
.gform_wrapper input[type="number"]:focus,
.gform_wrapper input[type="password"]:focus,
.gform_wrapper input[type="search"]:focus,
.gform_wrapper input:not([type]):focus,
.gform_wrapper select:focus,
.gform_wrapper input[type="text"]:focus-visible,
.gform_wrapper input[type="email"]:focus-visible,
.gform_wrapper input[type="tel"]:focus-visible,
.gform_wrapper input[type="url"]:focus-visible,
.gform_wrapper input[type="number"]:focus-visible,
.gform_wrapper input[type="password"]:focus-visible,
.gform_wrapper input[type="search"]:focus-visible,
.gform_wrapper input:not([type]):focus-visible,
.gform_wrapper select:focus-visible {
	border-color: var(--gf-ctrl-border-color, var(--wp--custom--form--border-color));
	box-shadow: var(--wp--custom--form--shadow);
	outline: none;
}

/* Focus: keep site-wide no-ring policy, but restore input shadow after :focus { box-shadow: none }. */
:where(
	input:not([type="submit"]):not([type="button"]):not([type="reset"]):not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]):not([type="image"]):not([type="range"]):not([type="color"]),
	textarea,
	select
):focus,
:where(
	input:not([type="submit"]):not([type="button"]):not([type="reset"]):not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]):not([type="image"]):not([type="range"]):not([type="color"]),
	textarea,
	select
):focus-visible,
.wp-block-search__input:focus,
.wp-block-search__input:focus-visible,
.gform_wrapper :where(
	input:not([type="submit"]):not([type="button"]):not([type="reset"]):not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]):not([type="image"]),
	textarea,
	select
):focus,
.gform_wrapper :where(
	input:not([type="submit"]):not([type="button"]):not([type="reset"]):not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]):not([type="image"]),
	textarea,
	select
):focus-visible {
	border-color: var(--wp--custom--form--focus-color);
	box-shadow: var(--wp--custom--form--shadow);
}

/* ==========================================================================
   Gravity Forms — Rush tokens feed the GF CSS API, GF's per-form <style> wins

   GF prints its block/global style settings as custom properties scoped to
   #gform_wrapper_N (higher specificity than the class defaults below), so the
   block editor's Input Size / border color / radius / label sizes / button
   colors take effect. Rush defaults are set WITHOUT !important on purpose —
   forcing them here is what used to make those controls dead.

   GF references a size scale (--gf-ctrl-size-sm|md|lg, …) that lives in its
   framework stylesheet. That file is not loaded (Rush styles the forms), so the
   scale is defined here from Rush tokens — otherwise `var(--gf-ctrl-size-sm)`
   resolves to nothing and inputs lose their height.

   Defaults for the settings themselves (so “untouched” forms look like Rush)
   come from inc/gravity-forms.php → gform_default_styles.
   ========================================================================== */

.gform_wrapper,
.gform_wrapper.gform-theme--framework,
.gform_wrapper.gform-theme--api {
	/* Size scale (normally GF's framework CSS). */
	--gf-ctrl-size-sm: var(--wp--custom--form--height-sm);
	--gf-ctrl-size-md: var(--wp--custom--form--height);
	--gf-ctrl-size-lg: var(--wp--custom--form--height-lg);
	--gf-ctrl-choice-size-sm: calc(var(--wp--custom--form--checkbox-size) - 0.125rem);
	--gf-ctrl-choice-size-md: var(--wp--custom--form--checkbox-size);
	--gf-ctrl-choice-size-lg: calc(var(--wp--custom--form--checkbox-size) + 0.125rem);
	--gf-ctrl-checkbox-check-size-sm: 0.6rem;
	--gf-ctrl-checkbox-check-size-md: 0.7rem;
	--gf-ctrl-checkbox-check-size-lg: 0.8rem;
	--gf-ctrl-radio-check-size-sm: 0.5rem;
	--gf-ctrl-radio-check-size-md: 0.625rem;
	--gf-ctrl-radio-check-size-lg: 0.75rem;
	--gf-ctrl-btn-size-sm: var(--gf-ctrl-size-sm);
	--gf-ctrl-btn-size-md: var(--gf-ctrl-size-md);
	--gf-ctrl-btn-size-lg: var(--gf-ctrl-size-lg);
	--gf-ctrl-btn-font-size-sm: var(--wp--preset--font-size--small);
	--gf-ctrl-btn-font-size-md: var(--wp--custom--form--submit-font-size);
	--gf-ctrl-btn-font-size-lg: var(--wp--preset--font-size--medium);
	--gf-ctrl-btn-padding-x-sm: var(--wp--custom--form--submit-padding-x);
	--gf-ctrl-btn-padding-x-md: calc(var(--wp--custom--form--submit-padding-x) * 1.6);
	--gf-ctrl-btn-padding-x-lg: calc(var(--wp--custom--form--submit-padding-x) * 2.4);
	--gf-label-space-y-sm-secondary: 0;
	--gf-label-space-y-md-secondary: 0;
	--gf-label-space-y-lg-secondary: 0;

	/* Rush defaults — overridden per form by GF's #gform_wrapper_N style block. */
	--gf-ctrl-size: var(--gf-ctrl-size-md);
	--gf-ctrl-choice-size: var(--gf-ctrl-choice-size-md);
	--gf-ctrl-checkbox-check-size: var(--gf-ctrl-checkbox-check-size-md);
	--gf-ctrl-radio-check-size: var(--gf-ctrl-radio-check-size-md);
	--gf-ctrl-border-color: var(--wp--custom--form--border-color);
	--gf-ctrl-desc-color: var(--wp--custom--form--description-color);
	--gf-ctrl-label-color-primary: var(--wp--custom--form--label-color);
	--gf-ctrl-label-color-secondary: var(--wp--custom--form--label-color);
	--gf-radius: var(--wp--custom--form--radius);
	--gf-color-primary: var(--wp--custom--form--submit-bg);
	--gf-color-primary-contrast: var(--wp--custom--form--submit-color);
	--gf-color-primary-darker: var(--wp--custom--form--submit-hover-bg);
	--gf-color-in-ctrl: var(--wp--custom--form--bg);
	--gf-color-in-ctrl-contrast: var(--wp--custom--form--color);
	--gf-font-size-secondary: var(--wp--custom--form--label-size);
	--gf-font-size-tertiary: var(--wp--custom--form--font-size);
	--gf-ctrl-btn-size: var(--gf-ctrl-btn-size-md);
	--gf-ctrl-btn-font-size: var(--gf-ctrl-btn-font-size-md);
	--gf-ctrl-btn-padding-x: var(--gf-ctrl-btn-padding-x-md);

	/*
	 * GF's framework stylesheet is loaded in the block editor only (is_admin()),
	 * where it paints controls from these variables and beats the rules below.
	 * Pointing them at the same Rush tokens keeps the canvas and the front end
	 * identical — the submit button's missing border was this gap.
	 */
	--gf-ctrl-appearance: none;
	--gf-ctrl-bg-color: var(--gf-color-in-ctrl, var(--wp--custom--form--bg));
	--gf-ctrl-bg-color-hover: var(--gf-ctrl-bg-color);
	--gf-ctrl-bg-color-focus: var(--gf-ctrl-bg-color);
	--gf-ctrl-color: var(--gf-color-in-ctrl-contrast, var(--wp--custom--form--color));
	--gf-ctrl-radius: var(--gf-radius, var(--wp--custom--form--radius));
	--gf-ctrl-border-width: var(--wp--custom--form--border-width);
	--gf-ctrl-border-style: solid;
	--gf-ctrl-border-color-hover: var(--gf-ctrl-border-color);
	--gf-ctrl-border-color-focus: var(--gf-ctrl-border-color);
	--gf-ctrl-font-size: var(--wp--custom--form--font-size);
	--gf-ctrl-line-height: var(--wp--custom--line-height--snug, 1.25);
	--gf-ctrl-padding-x: var(--wp--custom--form--padding-x);
	--gf-ctrl-padding-y: var(--wp--custom--form--padding-y);
	--gf-ctrl-textarea-padding-y: var(--wp--custom--form--padding-y-textarea);
	--gf-ctrl-placeholder-color: var(--wp--custom--form--placeholder);
	--gf-ctrl-shadow: var(--wp--custom--form--shadow);
	--gf-ctrl-outline-width-focus: 0;
	--gf-ctrl-choice-check-color: var(--gf-color-in-ctrl-primary, var(--wp--custom--form--choice-checked-color));
	--gf-ctrl-btn-bg-color-primary: var(--gf-color-primary, var(--wp--custom--form--submit-bg));
	--gf-ctrl-btn-color-primary: var(--gf-color-primary-contrast, var(--wp--custom--form--submit-color));
	--gf-ctrl-btn-border-color-primary: var(--gf-color-primary, var(--wp--custom--form--submit-bg));
	--gf-ctrl-btn-border-width-primary: var(--wp--custom--form--border-width);
	--gf-ctrl-btn-border-style-primary: solid;
	--gf-ctrl-btn-radius: var(--gf-radius, var(--wp--custom--form--submit-radius));
	--gf-ctrl-btn-bg-color-hover-primary: var(--gf-color-primary-darker, var(--wp--custom--form--submit-hover-bg));
	--gf-ctrl-btn-border-color-hover-primary: var(--gf-color-primary-darker, var(--wp--custom--form--submit-hover-bg));
	--gf-ctrl-btn-color-hover-primary: var(--gf-color-primary-contrast, var(--wp--custom--form--submit-hover-color));
	--gf-ctrl-btn-shadow: none;
	--gf-ctrl-btn-shadow-hover: none;
	--gf-ctrl-btn-shadow-focus: none;
	width: 100%;
	max-width: 100%;
}

.gform_wrapper .gform_required_legend {
	display: none !important;
}

.gform_wrapper .gform_heading {
	margin: 0 0 var(--wp--custom--form--field-gap);
}

/* 12-col grid so editor field widths (half / third / …) work with gform_disable_css. */
.gform_wrapper .gform_fields,
.gform_wrapper .gform_body .gform_fields {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	column-gap: var(--wp--custom--form--column-gap, var(--wp--custom--spacing--3, 0.75rem));
	row-gap: var(--wp--custom--form--field-gap);
	margin: 0;
	padding: 0;
	list-style: none;
	width: 100%;
}

.gform_wrapper .gfield {
	grid-column: 1 / -1;
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0; /* fieldsets (checkbox/radio/name/…) get a UA border otherwise */
	min-inline-size: 0;
}

.gform_wrapper fieldset.gfield > legend.gfield_label {
	padding: 0;
	float: none; /* some UAs float legend oddly inside fieldset */
}

.gform_wrapper .gfield--width-full {
	grid-column: span 12;
}

.gform_wrapper .gfield--width-eleven-twelfths {
	grid-column: span 11;
}

.gform_wrapper .gfield--width-five-sixths {
	grid-column: span 10;
}

.gform_wrapper .gfield--width-three-quarter {
	grid-column: span 9;
}

.gform_wrapper .gfield--width-two-thirds {
	grid-column: span 8;
}

.gform_wrapper .gfield--width-seven-twelfths {
	grid-column: span 7;
}

.gform_wrapper .gfield--width-half {
	grid-column: span 6;
}

.gform_wrapper .gfield--width-five-twelfths {
	grid-column: span 5;
}

.gform_wrapper .gfield--width-third {
	grid-column: span 4;
}

.gform_wrapper .gfield--width-quarter {
	grid-column: span 3;
}

.gform_wrapper .gfield--width-one-sixth {
	grid-column: span 2;
}

.gform_wrapper .gfield--width-one-twelfth {
	grid-column: span 1;
}

@media (max-width: 640px) {
	.gform_wrapper .gfield:not(.gfield--width-full) {
		grid-column: 1 / -1;
	}
}

.gform_wrapper .gfield_label,
.gform_wrapper .gform-field-label:not(.gform-field-label--type-inline) {
	display: block;
	margin: 0 0 var(--wp--custom--form--label-gap);
	color: var(--gf-ctrl-label-color-primary, var(--wp--custom--form--label-color));
	font-size: var(--gf-font-size-secondary, var(--wp--custom--form--label-size));
	font-weight: var(--wp--custom--form--label-weight);
	line-height: var(--wp--custom--line-height--snug, 1.25);
}

.gform_wrapper .gfield_required {
	color: inherit;
	margin-left: 0.15em;
}

.gform_wrapper .gfield_description,
.gform_wrapper .gfield_validation_message,
.gform_wrapper .validation_message {
	margin: 0;
	color: var(--gf-ctrl-desc-color, var(--wp--custom--form--description-color));
	font-size: var(--gf-font-size-tertiary, var(--wp--custom--form--font-size));
	line-height: var(--wp--custom--line-height--normal, 1.5);
}

.gform_wrapper .field_description_above .gfield_label {
	margin-bottom: var(--wp--custom--spacing--2, 0.5rem);
}

.gform_wrapper .field_description_above .gfield_description {
	margin: 0 0 var(--wp--custom--form--label-gap);
}

.gform_wrapper .field_description_below .gfield_description,
.gform_wrapper .gfield_validation_message,
.gform_wrapper .validation_message {
	margin-top: var(--wp--custom--spacing--2, 0.5rem);
}

.gform_wrapper .gfield_validation_message,
.gform_wrapper .validation_message,
.gform_wrapper .gform_validation_errors {
	color: var(--wp--custom--form--error-color);
}

.gform_wrapper .ginput_container {
	margin: 0;
}

.gform_wrapper .ginput_complex,
.gform_wrapper .gform-grid-row {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--custom--spacing--3, 0.75rem);
}

.gform_wrapper .ginput_complex > span,
.gform_wrapper .gform-grid-col {
	flex: 1 1 10rem;
	min-width: 0;
}

.gform_wrapper .ginput_complex label,
.gform_wrapper .ginput_complex .gform-field-label {
	margin: var(--wp--custom--spacing--2, 0.5rem) 0 0;
	font-size: var(--wp--custom--font-size--xs, 0.75rem);
	font-weight: var(--wp--custom--font-weight--regular, 400);
	color: var(--wp--custom--form--description-color);
}

.gform_wrapper .gfield--type-consent,
.gform_wrapper .gfield--type-checkbox,
.gform_wrapper .gfield--type-radio {
	font-size: var(--wp--custom--form--font-size);
}

/*
 * Grid (not flex column) so the field setting “Display choices in columns”
 * works: GF only emits gf_list_2col … gf_list_5col classes and relies on
 * grid-template-columns / column-count, which its unloaded CSS would supply.
 */
.gform_wrapper .gfield_checkbox,
.gform_wrapper .gfield_radio,
.gform_wrapper .gfield--type-consent .ginput_container {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--wp--custom--spacing--3, 0.75rem);
	margin: 0;
	padding: 0;
	list-style: none;
}

/* “Across”: fill row by row. */
.gform_wrapper .gfield.gf_list_2col .gfield_checkbox,
.gform_wrapper .gfield.gf_list_2col .gfield_radio {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.gform_wrapper .gfield.gf_list_3col .gfield_checkbox,
.gform_wrapper .gfield.gf_list_3col .gfield_radio {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.gform_wrapper .gfield.gf_list_4col .gfield_checkbox,
.gform_wrapper .gfield.gf_list_4col .gfield_radio {
	grid-template-columns: repeat(4, minmax(0, 1fr));
}

.gform_wrapper .gfield.gf_list_5col .gfield_checkbox,
.gform_wrapper .gfield.gf_list_5col .gfield_radio {
	grid-template-columns: repeat(5, minmax(0, 1fr));
}

/* “Down”: fill column by column (GF uses multi-column for these variants). */
.gform_wrapper .gfield.gf_list_2col_vertical .gfield_checkbox,
.gform_wrapper .gfield.gf_list_2col_vertical .gfield_radio,
.gform_wrapper .gfield.gf_list_3col_vertical .gfield_checkbox,
.gform_wrapper .gfield.gf_list_3col_vertical .gfield_radio,
.gform_wrapper .gfield.gf_list_4col_vertical .gfield_checkbox,
.gform_wrapper .gfield.gf_list_4col_vertical .gfield_radio,
.gform_wrapper .gfield.gf_list_5col_vertical .gfield_checkbox,
.gform_wrapper .gfield.gf_list_5col_vertical .gfield_radio {
	display: block;
	column-gap: var(--wp--custom--spacing--3, 0.75rem);
}

.gform_wrapper .gfield.gf_list_2col_vertical .gchoice,
.gform_wrapper .gfield.gf_list_3col_vertical .gchoice,
.gform_wrapper .gfield.gf_list_4col_vertical .gchoice,
.gform_wrapper .gfield.gf_list_5col_vertical .gchoice {
	break-inside: avoid;
	margin-bottom: var(--wp--custom--spacing--3, 0.75rem);
}

.gform_wrapper .gfield.gf_list_2col_vertical .gfield_checkbox,
.gform_wrapper .gfield.gf_list_2col_vertical .gfield_radio {
	column-count: 2;
}

.gform_wrapper .gfield.gf_list_3col_vertical .gfield_checkbox,
.gform_wrapper .gfield.gf_list_3col_vertical .gfield_radio {
	column-count: 3;
}

.gform_wrapper .gfield.gf_list_4col_vertical .gfield_checkbox,
.gform_wrapper .gfield.gf_list_4col_vertical .gfield_radio {
	column-count: 4;
}

.gform_wrapper .gfield.gf_list_5col_vertical .gfield_checkbox,
.gform_wrapper .gfield.gf_list_5col_vertical .gfield_radio {
	column-count: 5;
}

/* Choice columns collapse with the field widths (same 640px breakpoint). */
@media (max-width: 640px) {
	.gform_wrapper .gfield[class*="gf_list_"] .gfield_checkbox,
	.gform_wrapper .gfield[class*="gf_list_"] .gfield_radio {
		grid-template-columns: minmax(0, 1fr);
		column-count: 1;
	}
}

/* GF places input + label as siblings inside .gchoice (not input nested in label). */
.gform_wrapper .gchoice {
	display: flex;
	align-items: flex-start;
	gap: var(--wp--custom--spacing--3, 0.75rem);
	margin: 0;
}

.gform_wrapper .gchoice .gform-field-label,
.gform_wrapper .gchoice .gform-field-label--type-inline,
.gform_wrapper .gfield_checkbox label,
.gform_wrapper .gfield_radio label,
.gform_wrapper .gfield--type-consent label {
	display: inline;
	margin: 0;
	padding: 0;
	color: var(--wp--custom--form--description-color);
	font-size: var(--wp--custom--form--font-size);
	font-weight: var(--wp--custom--font-weight--regular, 400);
	line-height: var(--wp--custom--line-height--normal, 1.5);
	cursor: pointer;
}

.gform_wrapper .gfield-choice-input[type="checkbox"],
.gform_wrapper .gfield-choice-input[type="radio"],
.gform_wrapper .gfield--type-consent input[type="checkbox"],
.gform_wrapper .gfield_checkbox input[type="checkbox"],
.gform_wrapper .gfield_radio input[type="radio"] {
	-webkit-appearance: none;
	appearance: none;
	flex-shrink: 0;
	box-sizing: border-box;
	width: var(--gf-ctrl-choice-size, var(--wp--custom--form--checkbox-size));
	height: var(--gf-ctrl-choice-size, var(--wp--custom--form--checkbox-size));
	min-width: var(--gf-ctrl-choice-size, var(--wp--custom--form--checkbox-size));
	min-height: var(--gf-ctrl-choice-size, var(--wp--custom--form--checkbox-size));
	margin: 0.15rem 0 0;
	padding: 0;
	border: var(--wp--custom--form--border-width) solid var(--gf-ctrl-border-color, var(--wp--custom--form--choice-border-color));
	background-color: var(--gf-color-in-ctrl, var(--wp--custom--form--choice-bg));
	box-shadow: none;
	outline: none;
	color: transparent; /* kill UA check glyph / focus paint */
	display: inline-grid;
	place-content: center;
	cursor: pointer;
	transition: border-color 0.15s ease, background-color 0.15s ease;
}

.gform_wrapper .gfield-choice-input[type="checkbox"],
.gform_wrapper .gfield--type-consent input[type="checkbox"],
.gform_wrapper .gfield_checkbox input[type="checkbox"] {
	border-radius: var(--wp--custom--form--checkbox-radius);
}

.gform_wrapper .gfield-choice-input[type="radio"],
.gform_wrapper .gfield_radio input[type="radio"] {
	border-radius: var(--wp--custom--radius--full, 9999px);
}

.gform_wrapper .gfield-choice-input[type="checkbox"]::before,
.gform_wrapper .gfield--type-consent input[type="checkbox"]::before,
.gform_wrapper .gfield_checkbox input[type="checkbox"]::before {
	content: "";
	width: var(--gf-ctrl-checkbox-check-size, 0.7rem);
	height: var(--gf-ctrl-checkbox-check-size, 0.7rem);
	transform: scale(0);
	transform-origin: center;
	transition: transform 0.12s ease-in-out;
	background-color: var(--gf-color-in-ctrl-primary, var(--wp--custom--form--choice-checked-color));
	clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);
}

.gform_wrapper .gfield-choice-input[type="radio"]::before,
.gform_wrapper .gfield_radio input[type="radio"]::before {
	content: "";
	width: var(--gf-ctrl-radio-check-size, 0.625rem);
	height: var(--gf-ctrl-radio-check-size, 0.625rem);
	border-radius: var(--wp--custom--radius--full, 9999px);
	transform: scale(0);
	transform-origin: center;
	transition: transform 0.12s ease-in-out;
	background-color: var(--gf-color-in-ctrl-primary, var(--wp--custom--form--choice-checked-color));
}

/* Checked: light box; indicator (check / radio dot) uses choice-checked-color. */
.gform_wrapper .gfield-choice-input[type="checkbox"]:checked,
.gform_wrapper .gfield--type-consent input[type="checkbox"]:checked,
.gform_wrapper .gfield_checkbox input[type="checkbox"]:checked,
.gform_wrapper .gfield-choice-input[type="radio"]:checked,
.gform_wrapper .gfield_radio input[type="radio"]:checked {
	background-color: var(--wp--custom--form--choice-checked-bg);
	border-color: var(--gf-color-in-ctrl-primary, var(--wp--custom--form--choice-checked-border-color));
	box-shadow: none;
}

.gform_wrapper .gfield-choice-input[type="checkbox"]:checked::before,
.gform_wrapper .gfield--type-consent input[type="checkbox"]:checked::before,
.gform_wrapper .gfield_checkbox input[type="checkbox"]:checked::before,
.gform_wrapper .gfield-choice-input[type="radio"]:checked::before,
.gform_wrapper .gfield_radio input[type="radio"]:checked::before {
	transform: scale(1);
}

.gform_wrapper .gfield-choice-input:focus,
.gform_wrapper .gfield-choice-input:focus-visible,
.gform_wrapper .gfield--type-consent input[type="checkbox"]:focus,
.gform_wrapper .gfield--type-consent input[type="checkbox"]:focus-visible,
.gform_wrapper .gfield_checkbox input[type="checkbox"]:focus,
.gform_wrapper .gfield_checkbox input[type="checkbox"]:focus-visible,
.gform_wrapper .gfield_radio input[type="radio"]:focus,
.gform_wrapper .gfield_radio input[type="radio"]:focus-visible {
	outline: none;
	border-color: var(--gf-color-in-ctrl-primary, var(--wp--custom--form--choice-checked-border-color));
	box-shadow: none;
}

.gform_wrapper .gfield--type-consent a,
.gform_wrapper .gfield_checkbox a,
.gform_wrapper .gchoice a {
	color: var(--wp--custom--form--color);
	text-decoration: underline;
}

.gform_wrapper .gform_footer,
.gform_wrapper .gform_page_footer {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--custom--spacing--3, 0.75rem);
	margin: var(--wp--custom--form--field-gap) 0 0;
	padding: 0;
	border: 0;
}

.gform_wrapper .gform_button,
.gform_wrapper input[type="submit"],
.gform_wrapper input[type="button"].gform_button,
.gform_wrapper .gform-theme-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	width: 100%;
	min-height: var(--gf-ctrl-btn-size, var(--wp--custom--form--submit-height));
	height: var(--gf-ctrl-btn-size, var(--wp--custom--form--submit-height));
	margin: 0;
	padding: 0 var(--gf-ctrl-btn-padding-x, var(--wp--custom--form--submit-padding-x));
	border: var(--wp--custom--form--border-width) solid var(--gf-color-primary, var(--wp--custom--form--submit-bg));
	border-radius: var(--gf-radius, var(--wp--custom--form--submit-radius));
	background-color: var(--gf-color-primary, var(--wp--custom--form--submit-bg));
	color: var(--gf-color-primary-contrast, var(--wp--custom--form--submit-color));
	box-shadow: none;
	font-family: inherit;
	font-size: var(--gf-ctrl-btn-font-size, var(--wp--custom--form--submit-font-size));
	font-weight: var(--wp--custom--form--submit-font-weight);
	line-height: 1;
	cursor: pointer;
	transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.gform_wrapper .gform_button:hover,
.gform_wrapper input[type="submit"]:hover,
.gform_wrapper input[type="button"].gform_button:hover,
.gform_wrapper .gform-theme-button:hover {
	background-color: var(--gf-color-primary-darker, var(--wp--custom--form--submit-hover-bg));
	border-color: var(--gf-color-primary-darker, var(--wp--custom--form--submit-hover-bg));
	color: var(--gf-color-primary-contrast, var(--wp--custom--form--submit-hover-color));
}

.gform_wrapper .gform_ajax_spinner {
	margin-left: var(--wp--custom--spacing--2, 0.5rem);
}

/* Search block: only the inside-button variant shares one control shell. */
.wp-block-search__button-inside .wp-block-search__inside-wrapper {
	display: flex;
	align-items: stretch;
	border: var(--wp--custom--form--border-width) solid var(--wp--custom--form--border-color);
	border-radius: var(--wp--custom--form--radius);
	background-color: var(--wp--custom--form--bg);
	box-shadow: var(--wp--custom--form--shadow);
	overflow: hidden;
}

.wp-block-search__button-inside .wp-block-search__input {
	border: 0;
	border-radius: 0;
	min-height: var(--wp--custom--form--height);
}

.wp-block-search__button-inside .wp-block-search__button {
	margin: 0;
	border: 0;
	border-radius: 0;
	border-left: var(--wp--custom--form--border-width) solid var(--wp--custom--form--border-color);
	min-height: var(--wp--custom--form--height);
}

.wp-block-search__button-outside .wp-block-search__inside-wrapper {
	display: flex;
	align-items: center;
	gap: var(--wp--custom--spacing--2);
}

.wp-block-search__button-outside .wp-block-search__button {
	margin-left: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	align-self: center;
	box-sizing: border-box;
	min-height: var(--wp--custom--form--height);
	height: var(--wp--custom--form--height);
	padding-block: 0;
	line-height: 1.2;
}

/* Hide native search clear; replace with .rush-search-reset chip. */
input[type="search"]::-webkit-search-decoration,
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-results-button,
input[type="search"]::-webkit-search-results-decoration {
	-webkit-appearance: none;
	appearance: none;
	display: none;
}

/* Wrapper height = input height so absolute Reset centers on the field, not a stretched flex row. */
.rush-search-field {
	position: relative;
	display: block;
	flex: 1 1 auto;
	align-self: center;
	min-width: 0;
	width: 100%;
	height: var(--wp--custom--form--height);
}

.rush-search-field input[type="search"],
.rush-search-field .wp-block-search__input {
	width: 100%;
	height: 100%;
	min-height: 100%;
	padding-right: 5.5rem;
}

.rush-search-reset {
	position: absolute;
	top: 50%;
	right: var(--wp--custom--form--padding-x);
	transform: translateY(-50%);
	display: inline-flex;
	align-items: center;
	gap: 0.25rem;
	margin: 0;
	padding: 0.125rem 0.375rem;
	border: 1px solid var(--wp--preset--color--border);
	border-radius: var(--wp--custom--radius--sm);
	background-color: var(--wp--preset--color--base);
	color: var(--wp--preset--color--secondary);
	font-family: inherit;
	font-size: 0.75rem;
	font-weight: var(--wp--custom--font-weight--medium);
	line-height: 1.2;
	cursor: pointer;
	z-index: 1;
}

.rush-search-reset[hidden] {
	display: none !important;
}

.rush-search-reset__x {
	font-size: 0.875rem;
	font-weight: var(--wp--custom--font-weight--semibold);
	line-height: 1;
	color: var(--wp--preset--color--contrast);
}

.wp-block-search__button-inside .rush-search-field .wp-block-search__input {
	padding-right: 5.5rem;
}

/* ==========================================================================
   Search results — minimal list rows
   ========================================================================== */

.rush-search-results .wp-block-post-template {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 0;
}

.rush-search-results .wp-block-post {
	margin: 0;
	padding: var(--wp--custom--spacing--6) 0;
	border-bottom: 1px solid var(--wp--preset--color--border);
}

.rush-search-results .wp-block-post:first-child {
	padding-top: 0;
}

.rush-search-results .rush-search-results__item {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	width: 100%;
	text-align: left;
}

.rush-search-results .rush-search-results__row {
	display: grid;
	grid-template-columns: 100px minmax(0, 1fr);
	gap: var(--wp--custom--spacing--4);
	align-items: start;
	width: 100%;
	text-align: left;
}

.rush-search-results .rush-search-results__media {
	width: 100px;
	height: 100px;
	overflow: hidden;
	border-radius: var(--wp--custom--radius--md);
	background-color: var(--wp--preset--color--muted);
}

.rush-search-results .wp-block-post-featured-image {
	margin: 0;
	width: 100%;
	height: 100%;
}

.rush-search-results .wp-block-post-featured-image img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.rush-search-results .rush-search-results__body {
	min-width: 0;
	margin: 0;
	margin-block-start: 0;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--wp--custom--spacing--1);
	text-align: left;
}

.rush-search-results .rush-search-results__body > *,
.rush-search-results .wp-block-post-title,
.rush-search-results .wp-block-post-excerpt,
.rush-search-results .wp-block-post-excerpt p {
	width: 100%;
	text-align: left;
}

.rush-search-results .wp-block-rush-post-type-label,
.rush-search-results .rush-post-type-label {
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: none;
	font-size: 0.75rem;
	color: var(--wp--custom--color--neutral-400);
	line-height: var(--wp--custom--line-height--snug);
}

.rush-search-results .wp-block-post-title {
	margin: 0;
	font-size: var(--wp--preset--font-size--large);
	font-weight: var(--wp--custom--font-weight--semibold);
	line-height: var(--wp--custom--line-height--snug);
}

.rush-search-results .wp-block-post-title a {
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
}

.rush-search-results .wp-block-post-title a:hover {
	text-decoration: underline;
}

.rush-search-results .wp-block-post-excerpt {
	margin: 0;
}

.rush-search-results .wp-block-post-excerpt p {
	margin: 0;
	color: var(--wp--preset--color--secondary);
	font-size: var(--wp--preset--font-size--medium);
}


/* Pattern-specific CSS moved to assets/css/patterns/*.css (loaded per enabled/used pattern). */

/* Front-end quick Edit (logged-in, can edit) — admin bar is off by default. */
.edit--this--post {
	position: fixed;
	bottom: 0 !important;
	left: 1.5rem !important;
	z-index: 100000;
	margin: 0;
	color: #ffffff !important;
	font-size: 12px !important;
	line-height: 1 !important;
	font-weight: 400 !important;
	text-decoration: none !important;
	background-color: #000000 !important;
	padding: 0.5rem 2rem 0.5rem 1rem !important;
	border-radius: 0.5rem 0.5rem 0 0!important;
	box-shadow: 1px -5px 10px 2px rgba(0, 0, 0, 0.05);
	transition: color 0.25s, background-color 0.25s;
}

.edit--this--post::after {
	content: "";
	position: absolute;
	top: 7px;
	right: 0.75rem;
	width: 12px;
	height: 12px;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='501' height='501' viewBox='0 0 501 501'%3E%3Cg fill='none' stroke='%23fff' stroke-width='43' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M250.333 17H150.333C87.479 17 56.052 17 36.526 36.526 17 56.052 17 87.479 17 150.333v200c0 62.854 0 94.28 19.526 113.807C56.052 483.667 87.479 483.667 150.333 483.667h200c62.854 0 94.28 0 113.807-19.527C483.667 444.614 483.667 413.187 483.667 350.333v-100M161 273.37l197.654-195.436c15.767-15.587 40.86-16.447 57.653-1.976 18.497 15.937 19.804 44.141 2.86 61.72L224.763 339.34 150.333 350.333 161 273.37z'/%3E%3C/g%3E%3C/svg%3E") no-repeat 50% 50%;
	mask-size: contain;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='501' height='501' viewBox='0 0 501 501'%3E%3Cg fill='none' stroke='%23fff' stroke-width='43' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M250.333 17H150.333C87.479 17 56.052 17 36.526 36.526 17 56.052 17 87.479 17 150.333v200c0 62.854 0 94.28 19.526 113.807C56.052 483.667 87.479 483.667 150.333 483.667h200c62.854 0 94.28 0 113.807-19.527C483.667 444.614 483.667 413.187 483.667 350.333v-100M161 273.37l197.654-195.436c15.767-15.587 40.86-16.447 57.653-1.976 18.497 15.937 19.804 44.141 2.86 61.72L224.763 339.34 150.333 350.333 161 273.37z'/%3E%3C/g%3E%3C/svg%3E") no-repeat 50% 50%;
	-webkit-mask-size: contain;
	background-color: #ffffff !important;
	transition: background-color 0.25s;
}

.edit--this--post:hover {
	background-color: #555c54 !important;
}

.rush-frontend-edit {
	margin: 0;
	padding: 0;
}
