/*
Theme Name: Extendable
Theme URI: https://github.com/extendify/extendable
Author: Extendify
Author URI: https://extendify.com
Description: Extendable is a distinct, dynamic block theme designed as a canvas for your next online venture. Sporting multiple style variations, Extendable is the most expressive block theme yet. Go fresh, bold, bohemian or minimal — with a single click.
Requires at least: 6.6
Tested up to: 7.1
Requires PHP: 7.4
Version: 2.1.9
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: extendable
Tags: one-column, custom-colors, custom-menu, custom-logo, e-commerce, editor-style, featured-images, full-site-editing, block-patterns, rtl-language-support, sticky-post, threaded-comments

Extendable is a derivative work of the code from the
Twenty Twenty-Two WordPress Theme, which is licensed GPLv2.

Extendable WordPress Theme, Copyright (C) 2021-2025 Extendify Inc.
Extendable therefore is also distributed under the terms of the GNU GPL.
*/


/* Fallback for deprecate variables.
---------------------------------------------------------------------------- */
:root {
	--wp--custom--spacing--small: var(--wp--preset--spacing--30, clamp(1.5rem, 5vw, 2rem));
	--wp--custom--spacing--medium: var(--wp--preset--spacing--50, clamp(2.5rem, 8vw, 4rem));
	--wp--custom--spacing--large: var(--wp--preset--spacing--60, clamp(2.5rem, 8vw, 6rem));
	--wp--custom--spacing--outer: max(1.25rem, 4vw);
	--wp--preset--spacing--80: min(8rem, 12vw);
}

/*
 * A color-scheme meta otherwise lets OS dark mode restyle inputs and scrollbars.
 */

:root {
	color-scheme: only light;
}

/*
 * Smooth scrolling
 */

html {
	scroll-behavior: smooth;
}

/*
 * Font smoothing.
 * This is a niche setting that will not be available via Global Styles.
 * https://github.com/WordPress/gutenberg/issues/35934
 */

body {
	-moz-osx-font-smoothing: var(--wp--custom--typography--font-smoothing--moz, auto);
	-webkit-font-smoothing: var(--wp--custom--typography--font-smoothing--webkit, auto);
}

/*
 * Text and navigation link styles.
 * Necessary until the following issue is resolved in Gutenberg:
 * https://github.com/WordPress/gutenberg/issues/27075
 */

a {
	text-decoration-style: var(--wp--custom--elements--link--static--text-decoration-style, solid);
	text-decoration-thickness: var(--wp--custom--elements--link--text-decoration-thickness, 1px);
	text-underline-offset: var(--wp--custom--elements--link--text-underline-offset, 0.25ch);
}

a:hover,
a:focus {
	text-decoration-style: var(--wp--custom--elements--link--interactive--text-decoration-style, dashed);
}

:where(.wp-site-blocks *:focus) {
	outline-width: 1px;
	outline-style: solid;
}

a:active {
	text-decoration: none;
}

/*
 * Navigation Block
 */

@media (min-width: 600px) {

	.site-logo-title {
		display: none;
	}

	.wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) .wp-block-navigation__responsive-container-content .wp-block-navigation-item,
	.wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) .wp-block-navigation__responsive-container-content .wp-block-navigation__container,
	.wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) .wp-block-navigation__responsive-container-content .wp-block-page-list {
		align-items: flex-start !important;
	}
}

@media (max-width: 600px) {

	.has-modal-open .wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) .wp-block-navigation__responsive-container-content .wp-block-navigation-item,
	.has-modal-open .wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) .wp-block-navigation__responsive-container-content .wp-block-navigation__container,
	.has-modal-open .wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) .wp-block-navigation__responsive-container-content .wp-block-page-list {
		align-items: flex-start !important;
	}
}

.wp-block-navigation__responsive-container.has-modal-open.is-menu-open .site-logo-title {
	display: flex;
	flex-wrap: nowrap;
	max-width: 100%;
	align-items: center;
	gap: 0.5rem;
	padding-bottom: var(--wp--preset--spacing--30);
	position: relative;
	padding-inline-end: 52px;
}

.wp-block-navigation__responsive-container.has-modal-open.is-menu-open .site-logo-title::after {
	content: "";
	position: absolute;
	left: calc(-1 * var(--wp--preset--spacing--30));
	right: calc(-1 * var(--wp--preset--spacing--30));
	bottom: 0;
	height: 1px;
	background: #8080801d;
}

.wp-block-navigation__responsive-container.has-modal-open.is-menu-open .site-logo-title img {
	max-height: 42px !important;
	height: auto !important;
	width: auto !important;

}

.wp-block-navigation__responsive-container.has-modal-open.is-menu-open .site-logo-title .site-title {
	font-size: 1.25rem;
	font-weight: 700;
	color: var(--wp--preset--color--foreground);
	text-transform: uppercase;
	letter-spacing: -0.02em;
	box-sizing: border-box;
	line-height: 1.15;
}

.wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) .wp-block-navigation__responsive-container-content {
	padding-top: var(--wp--preset--spacing--30);
}

.has-modal-open .wp-block-navigation__responsive-container-close {
	background-color: var(--wp--preset--color--tertiary);
	padding: 0.625rem;
	border-radius: 100%;
	top: -2.5px !important;
}

.has-modal-open .wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) .wp-block-navigation__responsive-container-content .wp-block-navigation__container {
	gap: 0 !important;
	width: 100%;
}

.has-modal-open .wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) .wp-block-navrigation__containe,
.has-modal-open .wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) .wp-block-navigation__container ul {
	row-gap: 0.75rem !important;
	width: -webkit-fill-available;
	max-width: 100%;
}

.has-modal-open .wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) .wp-block-navigation__responsive-container-content > ul.wp-block-navigation__container > li.wp-block-navigation-item:not(.wp-block-navigation__submenu-container) {
	border-bottom: 1px solid #8080801d;
	padding-top: 0.75rem;
	padding-bottom: 0.75rem;
	width: -webkit-fill-available;
	max-width: 100%;
}

.has-modal-open .wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) .wp-block-navigation__responsive-container-content .has-child .wp-block-navigation__submenu-container {
	padding: 0.75rem 0.75rem 0 0.75rem !important;
	gap: 0.75rem !important;
}

.has-modal-open .wp-block-navigation__responsive-container:not(.disable-default-overlay) .wp-block-navigation__responsive-dialog ul.wp-block-navigation__container > li:not(.wp-block-navigation__submenu-container) > a.wp-block-navigation-item__content {
	font-size: 1.25rem;
	font-weight: 600;
}

.has-modal-open .wp-block-navigation__responsive-container:not(.disable-default-overlay) .wp-block-navigation__submenu-container {
	padding-top: 0.75rem !important;
}

.has-modal-open .wp-block-navigation__responsive-container:not(.disable-default-overlay) .wp-block-navigation__responsive-dialog ul.wp-block-navigation__container .wp-block-navigation-submenu .wp-block-navigation-item a {
	font-size: 1rem !important;
}

/*
 * When the responsive navigation modal opens (WordPress sets .has-modal-open
 * on <html>), suppress every property on the modal's ancestor chain that
 * creates a containing block for position:fixed descendants — otherwise
 * the modal is trapped inside the header instead of overlaying the viewport.
 *
 * Two rules here:
 *
 * 1) Broad ancestor coverage — the header itself plus any element inside
 *    it that contains the responsive dialog. Handles transform/filter on
 *    any header variant (overlay, glass, floating-pill, future ones).
 *
 * 2) Animation override — mirrors the selectors used by the floating-pill
 *    scroll animations so we can match their specificity. Those animations
 *    use !important + a deep selector to apply translate/backdrop-filter
 *    via keyframes; without a same-or-higher-specificity override our broad
 *    rule loses the cascade and the animation keeps trapping the modal.
 */
html.has-modal-open header.wp-block-template-part,
html.has-modal-open header.wp-block-template-part :has(.wp-block-navigation__responsive-dialog) {
	backdrop-filter: none !important;
	transform: none !important;
	translate: none !important;
	filter: none !important;
	animation: none !important;
}

html.has-modal-open body:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:has(.ext-header-sticky.ext-header-sticky--floating-pill.ext-header-glass) .ext-header-sticky.ext-header-sticky--floating-pill.ext-header-glass,
html.has-modal-open body:not(:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child)) header.wp-block-template-part:has(.ext-header-sticky.ext-header-sticky--floating-pill.ext-header-glass) .ext-header-sticky.ext-header-sticky--floating-pill.ext-header-glass {
	animation: none !important;
	backdrop-filter: none !important;
	translate: none !important;
}

/*
 * Mobile nav-extras: cloned by navigation-customization.js into the
 * responsive menu dialog so phone / CTA / social aren't visible in the
 * cramped top bar on small screens. We target the specific modifier
 * classes (.ext-nav-extras-phone, -btn, -social) rather than the
 * .ext-nav-extras wrapper, because some header parts use the wrapper
 * class around the nav block itself.
 *
 * On desktop the dialog is rendered inline (it's only "modal-shaped"
 * when the hamburger opens it), so the cloned extras must stay hidden
 * until WordPress sets .has-modal-open on <html>.
 */
@media (max-width: 781px) {

	body:not(:has(.wp-block-navigation__responsive-container.disable-default-overlay)) header.wp-block-template-part :is(.ext-nav-extras-phone, .ext-nav-extras-btn, .ext-nav-extras-social):not(.ext-nav-extras-mobile *) {
		display: none;
	}

	/* Collapse the .ext-nav-extras wrapper too when its only children are the
	   extras (no nav inside) — otherwise the empty wrapper holds a flex slot
	   and the hamburger stays stuck in the middle instead of moving to the
	   end of the row. */
	header.wp-block-template-part .ext-nav-extras:not(:has(nav, .wp-block-navigation)) {
		display: none;
	}
}

.ext-nav-extras-mobile {
	display: none;
}

.has-modal-open .wp-block-navigation__responsive-dialog .ext-nav-extras-mobile {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: var(--wp--preset--spacing--20);
	margin-top: var(--wp--preset--spacing--30);
}

.has-modal-open .wp-block-navigation__responsive-dialog .ext-nav-extras-mobile .wp-block-button {
	width: 100%;
}

.has-modal-open .wp-block-navigation__responsive-dialog .ext-nav-extras-mobile .wp-block-button__link {
	display: block;
	text-align: center;
	width: 100%;
}

/* Match the nav-link typography (see rule above) on the cloned phone CTA. */
.has-modal-open .wp-block-navigation__responsive-dialog .ext-nav-extras-mobile .ext-nav-extras-phone,
.has-modal-open .wp-block-navigation__responsive-dialog .ext-nav-extras-mobile .ext-nav-extras-phone a,
.has-modal-open .wp-block-navigation__responsive-dialog .ext-nav-extras-mobile .ext-nav-extras-phone p {
	font-size: 1.25rem !important;
	font-weight: 600 !important;
}

/* Bigger, more tappable social icons in the menu. */
.has-modal-open .wp-block-navigation__responsive-dialog .ext-nav-extras-mobile .wp-block-social-link {
	width: 32px;
	height: 32px;
}

.has-modal-open .wp-block-navigation__responsive-dialog .ext-nav-extras-mobile .wp-social-link svg {
	width: 28px;
	height: 28px;
}

.wp-block-navigation .wp-block-navigation-item a:hover,
.wp-block-navigation .wp-block-navigation-item a:focus {
	text-decoration: underline;
	text-decoration-style: solid;
}

/* Don't display the homepage in the Page List block, when located inside a navigation element. */
nav .wp-block-pages-list__item.wp-block-navigation-item.menu-item-home {
	display: none;
}

/*
 * Responsive menu container padding.
 * This ensures the responsive container inherits the same
 * spacing defined above. This behavior may be built into
 * the Block Editor in the future.
 */

.wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) {
	padding-top: var(--wp--preset--spacing--30);
	padding-bottom: var(--wp--preset--spacing--30);
	padding-right: var(--wp--preset--spacing--30);
	padding-left: var(--wp--preset--spacing--30);
}

/* Temporary: WP core ships this padding as a 4-value clamp() shorthand
   that some browsers fail to parse — re-declare as individual props. */
.wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) {
	padding-top: clamp(1rem, var(--wp--style--root--padding-top), 20rem);
	padding-right: clamp(1rem, var(--wp--style--root--padding-right), 20rem);
	padding-bottom: clamp(1rem, var(--wp--style--root--padding-bottom), 20rem);
	padding-left: clamp(1rem, var(--wp--style--root--padding-left), 20rem);
}

/*
 * --------------------------------------------------------
 *  Custom - blocks
 * --------------------------------------------------------
 */

/* Button
----------------------------------------------------------*/
.wp-element-button {
	transition: background-color 0.15s ease;
}

.wp-block-button .wp-block-button__link.is-style-outline:not(.has-background):hover,
.wp-block-button.is-style-outline > .wp-block-button__link:not(.has-background):hover {
	background-color: rgba(159, 159, 159, 0.2);
}

/* Table
----------------------------------------------------------*/
.wp-block-table.is-style-stripes tbody tr:nth-child(odd) {
	background-color: var(--wp--custom--blocks--core-table--variant-stripes--color--background, var(--wp--preset--color--tertiary));
}

/* Template Part Block
----------------------------------------------------------*/

/* Temporary fix until template-part blocks support spacing */

footer.wp-block-template-part:not([style*="margin-top"]) {
	margin-top: 0;
}

/* Quote - 'Plain' variation
----------------------------------------------------------*/
blockquote:is(.is-style-plain) {
	border: none;
	padding-left: 0;
}

/* Search Block
----------------------------------------------------------*/
:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) {
	border-color: var(--wp--custom--elements--input--border--color);
	border-radius: var(--wp--custom--elements--button--border--radius);
	border-width: var(--wp--custom--elements--input--border--width);
}

:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) .wp-block-search__input {
	border-color: transparent;
}

.wp-block-search .wp-block-search__input {
	border-radius: var(--wp--custom--elements--button--border--radius);
}

/* Image
----------------------------------------------------------*/
.wp-block-image[style*="-radius"]:not([style*="overflow"]) {
	overflow: hidden;
}

/*
 * --------------------------------------------------------
 *  Custom - experimental
 * --------------------------------------------------------
 */

.block-editor-block-list__block.wp-block.is-default-size.wp-block-site-logo .components-resizable-box__container,
.wp-block-site-logo.is-default-size img {
	max-height: 42px !important;
	height: auto !important;
	width: auto !important;
}

/* Ensure default logo works well on light and dark backgrounds
----------------------------------------------------------*/
.wp-block-site-logo img[src*="extendify-demo-"],
.wp-block-site-logo img[src*="ext-custom-logo-"] {
	filter: var(--wp--preset--duotone--primary-foreground);
	min-width: 40px;
}


/*
 * Remove all animations, transitions and smooth scroll
 * for people that prefer not to see them.
 */
@media (prefers-reduced-motion: reduce) {

	html:focus-within {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

/*
 * Matching caret and focus outline colors.
 */
input,
textarea {
	caret-color: inherit;
	outline-color: inherit;
}

/*
 * Matching input with outline button style.
 */
:where(.wp-block-post-comments-form) input:not([type="submit"]),
:where(.wp-block-post-comments-form) textarea {
	background-color: var(--wp--preset--color--background);
	color: var(--wp--preset--color--foreground);
	border-color: inherit;
}


/*
 * Woocommerce temporarily customization until the woo blocks offer support
 */

.woocommerce-Tabs-panel--description h2,
.woocommerce-Reviews-title {
	font-size: var(--wp--preset--font-size--medium);
}

.wp-block-button.wc-block-components-product-button {
	flex-direction: row;
	flex-wrap: wrap;
	justify-content: start;
	gap: 1rem;
}

.wp-block-button.wc-block-components-product-button a.added_to_cart {
	margin-top: 0;
}

.woocommerce-checkout.woocommerce-page header.wp-block-template-part nav.wp-block-navigation {
	visibility: hidden;
}

.wp-site-blocks .wp-block-group.woocommerce.product {
	margin-top: 0;
	margin-bottom: 0;
}

.wc-block-product-template__responsive {
	grid-row-gap: 2rem;
}

.wc-block-components-product-button__button {
	z-index: 1;
}

/*
 * Adds offset for sticky header overlap
 */

.sticky-header-offset-container .entry-content > .wp-block-group {
	scroll-margin-top: var(--wp--preset--spacing--60);
}

/*
 * Avoids parent/child color collision when child has no custom background.
 */

:not(.block-editor-block-preview__content-iframe)
.has-tertiary-background-color.has-background
[class*="is-style-ext-preset--group--"][class*="item-card-1"]:not(.has-background) {
	background-color: var(--wp--preset--color--background);
}

:not(.block-editor-block-preview__content-iframe)
.has-tertiary-background-color.has-background
[class*="is-style-ext-preset--group--"][class*="item-card-1"]:not(.has-background)::before {
	background-color: var(--wp--preset--color--background) !important;
}

:not(.block-editor-block-preview__content-iframe)
.has-tertiary-background-color.has-background
[class*="is-style-ext-preset--image--"]:not(.has-background)::before {
	background-color: var(--wp--preset--color--tertiary) !important;
}

:not(.block-editor-block-preview__content-iframe)
.has-tertiary-background-color.has-background
[class*="is-style-ext-preset--group--"][class*="item-card-1"]::before,
:not(.block-editor-block-preview__content-iframe)
.has-tertiary-background-color.has-background
[class*="is-style-ext-preset--media-text--"]::before {
	background-color: var(--wp--preset--color--background) !important;
}

.block-editor-block-preview__content-iframe
[class*="is-style-ext-preset--group--natural-1"][class*="item-card-1"] {
	background-color: transparent !important;
}

:root {
	--grid-vector-bg: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTQ0MCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxnIG9wYWNpdHk9IjAuMDkiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utb3BhY2l0eT0iMC43IiBzdHJva2Utd2lkdGg9IjEuMjYwNyI+CiAgICA8bGluZSB4MT0iLTUwLjYxNzIiIHkxPSI2MjQuOTk1IiB4Mj0iMTQ2MC45NiIgeTI9IjYyNC45OTUiIC8+CiAgICA8bGluZSB4MT0iLTUwLjYxNzIiIHkxPSI5NDcuNzMzIiB4Mj0iMTQ2MC45NiIgeTI9Ijk0Ny43MzMiIC8+CiAgICA8bGluZSB4MT0iLTUwLjYxNzIiIHkxPSIzMDIuMjU2IiB4Mj0iMTQ2MC45NiIgeTI9IjMwMi4yNTYiIC8+CiAgICA8bGluZSB4MT0iLTUwLjYxNzIiIHkxPSI0NjMuNjI0IiB4Mj0iMTQ2MC45NiIgeTI9IjQ2My42MjQiIC8+CiAgICA8bGluZSB4MT0iLTUwLjYxNzIiIHkxPSI3ODYuMzYyIiB4Mj0iMTQ2MC45NiIgeTI9Ijc4Ni4zNjIiIC8+CiAgICA8bGluZSB4MT0iLTUwLjYxNzIiIHkxPSIxNDAuODg1IiB4Mj0iMTQ2MC45NiIgeTI9IjE0MC44ODUiIC8+CiAgICA8bGluZSB4MT0iLTUwLjYxNzIiIHkxPSI1NDQuMzExIiB4Mj0iMTQ2MC45NiIgeTI9IjU0NC4zMTEiIC8+CiAgICA8bGluZSB4MT0iLTUwLjYxNzIiIHkxPSI4NjcuMDQ5IiB4Mj0iMTQ2MC45NiIgeTI9Ijg2Ny4wNDkiIC8+CiAgICA8bGluZSB4MT0iLTUwLjYxNzIiIHkxPSIyMjEuNTczIiB4Mj0iMTQ2MC45NiIgeTI9IjIyMS41NzMiIC8+CiAgICA8bGluZSB4MT0iLTUwLjYxNzIiIHkxPSIzODIuOTQiIHgyPSIxNDYwLjk2IiB5Mj0iMzgyLjk0IiAvPgogICAgPGxpbmUgeDE9Ii01MC42MTcyIiB5MT0iNzA1LjY4MiIgeDI9IjE0NjAuOTYiIHkyPSI3MDUuNjgyIiAvPgogICAgPGxpbmUgeDE9Ii01MC42MTcyIiB5MT0iNjAuMjAxNyIgeDI9IjE0NjAuOTYiIHkyPSI2MC4yMDE3IiAvPgogICAgPGxpbmUgeDE9IjY0Mi4xMzgiIHkxPSItNDguODQ3NyIgeDI9IjY0Mi4xMzgiIHkyPSIxMTE4LjU2IiAvPgogICAgPGxpbmUgeDE9IjMxOS4zOTgiIHkxPSItNDguODQ3NyIgeDI9IjMxOS4zOTgiIHkyPSIxMTE4LjU2IiAvPgogICAgPGxpbmUgeDE9Ijk2NC44NzQiIHkxPSItNDguODQ3NyIgeDI9Ijk2NC44NzQiIHkyPSIxMTE4LjU2IiAvPgogICAgPGxpbmUgeDE9IjEyODcuNjEiIHkxPSItNDguODQ3NyIgeDI9IjEyODcuNjEiIHkyPSIxMTE4LjU2IiAvPgogICAgPGxpbmUgeDE9IjE1OC4wMjgiIHkxPSItNDguODQ3NyIgeDI9IjE1OC4wMjgiIHkyPSIxMTE4LjU2IiAvPgogICAgPGxpbmUgeDE9IjgwMy41MDQiIHkxPSItNDguODQ3NyIgeDI9IjgwMy41MDQiIHkyPSIxMTE4LjU2IiAvPgogICAgPGxpbmUgeDE9IjQ4MC43NjgiIHkxPSItNDguODQ3NyIgeDI9IjQ4MC43NjgiIHkyPSIxMTE4LjU2IiAvPgogICAgPGxpbmUgeDE9IjExMjYuMjQiIHkxPSItNDguODQ3NyIgeDI9IjExMjYuMjQiIHkyPSIxMTE4LjU2IiAvPgogICAgPGxpbmUgeDE9Ijc3LjM0NTIiIHkxPSItNDguODQ3NyIgeDI9Ijc3LjM0NTEiIHkyPSIxMTE4LjU2IiAvPgogICAgPGxpbmUgeDE9IjcyMi44MjIiIHkxPSItNDguODQ3NyIgeDI9IjcyMi44MjIiIHkyPSIxMTE4LjU2IiAvPgogICAgPGxpbmUgeDE9IjQwMC4wODEiIHkxPSItNDguODQ3NyIgeDI9IjQwMC4wODEiIHkyPSIxMTE4LjU2IiAvPgogICAgPGxpbmUgeDE9IjEwNDUuNTYiIHkxPSItNDguODQ3NyIgeDI9IjEwNDUuNTYiIHkyPSIxMTE4LjU2IiAvPgogICAgPGxpbmUgeDE9IjEzNjguMyIgeTE9Ii00OC44NDc3IiB4Mj0iMTM2OC4zIiB5Mj0iMTExOC41NiIgLz4KICAgIDxsaW5lIHgxPSIyMzguNzE1IiB5MT0iLTQ4Ljg0NzciIHgyPSIyMzguNzE1IiB5Mj0iMTExOC41NiIgLz4KICAgIDxsaW5lIHgxPSI4ODQuMTkyIiB5MT0iLTQ4Ljg0NzciIHgyPSI4ODQuMTkyIiB5Mj0iMTExOC41NiIgLz4KICAgIDxsaW5lIHgxPSI1NjEuNDUxIiB5MT0iLTQ4Ljg0NzciIHgyPSI1NjEuNDUxIiB5Mj0iMTExOC41NiIgLz4KICAgIDxsaW5lIHgxPSIxMjA2LjkzIiB5MT0iLTQ4Ljg0NzciIHgyPSIxMjA2LjkzIiB5Mj0iMTExOC41NiIgLz4KICA8L2c+CiAgPGcgb3BhY2l0eT0iMC41IiBmaWxsPSJjdXJyZW50Q29sb3IiPgogICAgPHJlY3QgeD0iODAzLjU2MyIgeT0iNzg2LjMwNSIgd2lkdGg9IjgwLjIyNjIiIGhlaWdodD0iODAuMjI2MiIgZmlsbC1vcGFjaXR5PSIwLjQiIC8+CiAgICA8cmVjdCB4PSI0MDAuMTQiIHk9Ijc4Ni4zMDUiIHdpZHRoPSI4MC4yMjYyIiBoZWlnaHQ9IjgwLjIyNjIiIGZpbGwtb3BhY2l0eT0iMC4xOCIgLz4KICAgIDxyZWN0IHg9IjExMjYuNzYiIHk9IjIyMi40MyIgd2lkdGg9IjgwLjIyNjIiIGhlaWdodD0iNzkuMDgwMSIgZmlsbC1vcGFjaXR5PSIwLjA4IiAvPgogICAgPHJlY3QgeD0iNDgwLjM2NyIgeT0iNDY0LjIwMyIgd2lkdGg9IjgwLjIyNjIiIGhlaWdodD0iNzkuMDgwMSIgZmlsbC1vcGFjaXR5PSIwLjEzIiAvPgogICAgPHJlY3QgeD0iMTA0NS4zOSIgeT0iMzAyLjY1NiIgd2lkdGg9IjgwLjIyNjIiIGhlaWdodD0iNzkuMDgwMSIgZmlsbC1vcGFjaXR5PSIwLjAzIiAvPgogICAgPHJlY3QgeD0iMzk5Ljk5NCIgeT0iMjIyLjQzIiB3aWR0aD0iODAuMjI2MiIgaGVpZ2h0PSI3OS4wODAxIiBmaWxsLW9wYWNpdHk9IjAuMTMiIC8+CiAgICA8cmVjdCB4PSIxMDQ1LjM5IiB5PSIyMjIuNDMiIHdpZHRoPSI4MC4yMjYyIiBoZWlnaHQ9Ijc5LjA4MDEiIGZpbGwtb3BhY2l0eT0iMC4wOCIgLz4KICAgIDxyZWN0IHg9IjM5OS45OTQiIHk9IjQ2NC4yMDMiIHdpZHRoPSI4MC4yMjYyIiBoZWlnaHQ9Ijc5LjA4MDEiIGZpbGwtb3BhY2l0eT0iMC4xMyIgLz4KICAgIDxyZWN0IHg9IjMxOS45MTQiIHk9Ijc4Ni4zMDUiIHdpZHRoPSI4MC4yMjYyIiBoZWlnaHQ9IjgwLjIyNjIiIGZpbGwtb3BhY2l0eT0iMC4xOCIgLz4KICAgIDxyZWN0IHg9IjMxOS45MTQiIHk9Ijg2Ni41MzEiIHdpZHRoPSI4MC4yMjYyIiBoZWlnaHQ9IjgxLjM3MjMiIGZpbGwtb3BhY2l0eT0iMC4xOCIgLz4KICAgIDxyZWN0IHg9IjE1OC4zMTUiIHk9IjcwNi4wNzgiIHdpZHRoPSI4MC4yMjYyIiBoZWlnaHQ9IjgwLjIyNjIiIGZpbGwtb3BhY2l0eT0iMC4xOCIgLz4KICAgIDxyZWN0IHg9Ijk2NS4xNjIiIHk9IjYwLjgzMiIgd2lkdGg9IjgwLjIyNjIiIGhlaWdodD0iODAuMjI2MiIgZmlsbC1vcGFjaXR5PSIwLjEzIiAvPgogICAgPHJlY3QgeD0iODg0LjA1OSIgeT0iLTE5Ljg1NTUiIHdpZHRoPSI4MC4yMjYyIiBoZWlnaHQ9Ijc5LjUwNjIiIGZpbGwtb3BhY2l0eT0iMC4xMyIgLz4KICAgIDxyZWN0IHg9Ijg4NC4wNTkiIHk9IjYwLjQwMjMiIHdpZHRoPSI4MC4yMjYyIiBoZWlnaHQ9IjgwLjAyODUiIGZpbGwtb3BhY2l0eT0iMC4xMyIgLz4KICAgIDxyZWN0IHg9IjE1OC4zMTUiIHk9IjEzOS45MSIgd2lkdGg9IjgxLjM3MjMiIGhlaWdodD0iODIuNTE4NCIgZmlsbC1vcGFjaXR5PSIwLjE4IiAvPgogICAgPHJlY3QgeD0iNzYuOTQzNCIgeT0iNTkuNjgzNiIgd2lkdGg9IjgxLjM3MjMiIGhlaWdodD0iODAuMjI2MiIgZmlsbC1vcGFjaXR5PSIwLjE4IiAvPgogICAgPHJlY3QgeD0iLTMuMjgzMiIgeT0iNjAuODI4MSIgd2lkdGg9IjgxLjM3MjMiIGhlaWdodD0iODAuMjI2MiIgZmlsbC1vcGFjaXR5PSIwLjE4IiAvPgogICAgPHJlY3QgeD0iNzYuOTQzNCIgeT0iMTM5LjkxIiB3aWR0aD0iODEuMzcyMyIgaGVpZ2h0PSI4Mi41MTg0IiBmaWxsLW9wYWNpdHk9IjAuMTgiIC8+CiAgICA8cmVjdCB4PSI0MDAuMTQxIiB5PSItMjAuNTQzIiB3aWR0aD0iODEuMzcyMyIgaGVpZ2h0PSI4MC4yMjYyIiBmaWxsLW9wYWNpdHk9IjAuMiIgLz4KICAgIDxyZWN0IHg9IjE1OC4zMTUiIHk9IjMwMS41MDgiIHdpZHRoPSI4MC4yMjYyIiBoZWlnaHQ9IjgxLjM3MjMiIGZpbGwtb3BhY2l0eT0iMC4xOCIgLz4KICAgIDxyZWN0IHg9IjExMjYuNzYiIHk9IjcwNi4wNzgiIHdpZHRoPSI4MC4yMjYyIiBoZWlnaHQ9IjgwLjIyNjIiIGZpbGwtb3BhY2l0eT0iMC4xMyIgLz4KICAgIDxyZWN0IHg9IjEyMDYuOTkiIHk9Ijc4Ni4zMDUiIHdpZHRoPSI4MC4yMjYyIiBoZWlnaHQ9IjgwLjIyNjIiIGZpbGwtb3BhY2l0eT0iMC4xMyIgLz4KICA8L2c+Cjwvc3ZnPg==");
}

/*
 * CSS related to prism vibe
 */

/*
 * CSS related to wave vibe
 */

[class*="is-style-ext-preset--group--"][class*="--section"].has-tertiary-background-color:has(
+ .has-background-background-color > .wp-block-cover.alignfull
)::after {
	content: none !important;
}

[class*="is-style-ext-preset--group--"][class*="--section"].has-tertiary-background-color:has(
+ .has-background-background-color > .wp-block-cover.alignfull
) {
	margin-bottom: 0 !important;
}

[class*="is-style-ext-preset--group--"][class*="--section"].has-background-background-color:has(.wp-block-cover.alignfull) + .has-tertiary-background-color::before {
	content: none !important;
}

[class*="is-style-ext-preset--group--"][class*="--section"].has-background-background-color:has(.wp-block-cover.alignfull) + .has-tertiary-background-color {
	margin-top: 0 !important;
}

/*
 * utilities
 */

.m-0 {
	margin: 0 !important;
}

.z-0 {
	z-index: 0 !important;
}

.z-10 {
	z-index: 10 !important;
}

.z-20 {
	z-index: 20 !important;
}

.z-30 {
	z-index: 30 !important;
}


.d-none {
	display: none;
}

.d-block {
	display: block;
}

@media (min-width: 640px) {

	.sm-d-none {
		display: none;
	}

	.sm-d-block {
		display: block;
	}
}

@media (min-width: 768px) {

	.md-d-none {
		display: none;
	}

	.md-d-block {
		display: block;
	}
}

@media (min-width: 1024px) {

	.lg-d-none {
		display: none;
	}

	.lg-d-block {
		display: block;
	}
}

/* RTL-only fix for Gutenberg Group left justification */

[dir="rtl"] [class*="wp-container-core-group-is-layout-"].ext-is-logical-start.is-content-justification-left > :where(:not(.alignleft):not(.alignright):not(.alignfull)) {
	margin-inline-start: 0 !important;
	margin-inline-end: auto !important;
}

.no-underline,
.no-underline a {
	text-decoration: none;
}

/* CSS for extendify-agent vibe previews */

.extendify-agent .preview-is-style-ext-preset--group--matrix-1--section .preview-is-style-ext-preset--group--matrix-1--item-card-1--align-center {
	border: solid 6px color-mix(in oklab, var(--wp--preset--color--foreground) 10%, transparent) !important;
}


.extendify-agent .preview-is-style-ext-preset--group--wave-1--section {
	--wave-ratio: 1440 / 80;
	overflow: visible;
}

.extendify-agent .preview-is-style-ext-preset--group--wave-1--section .preview-is-style-ext-preset--group--wave-1--item-card-1--align-center {
	position: relative;
	overflow: visible;
}

.extendify-agent .preview-is-style-ext-preset--group--wave-1--section .preview-is-style-ext-preset--group--wave-1--item-card-1--align-center::after {
	content: "";
	position: absolute;
	width: 150%;
	left: 50%;
	transform: translateX(-35%);
	aspect-ratio: var(--wave-ratio);
	background-color: var(--wp--preset--color--background);
	-webkit-mask: var(--wave-mask) no-repeat center / 100% 100%;
	mask: var(--wave-mask) no-repeat center / 100% 100%;
	bottom: -1px;
	pointer-events: none;
	z-index: 1;
}

.extendify-agent .preview-is-style-ext-preset--group--wave-1--section .preview-is-style-ext-preset--group--wave-1--item-card-1--align-center::before {
	content: "";
	position: absolute;
	width: 150%;
	left: 50%;
	transform: translateX(-65%) scale(-1, -1);
	aspect-ratio: var(--wave-ratio);
	background-color: var(--wp--preset--color--background);
	-webkit-mask: var(--wave-mask) no-repeat center / 100% 100%;
	mask: var(--wave-mask) no-repeat center / 100% 100%;
	top: -1px;
	pointer-events: none;
	z-index: 1;
}

/*
 * --------------------------------------------------------
 *  Modular Header System
 * --------------------------------------------------------
 *
 *  Layout (positioning):
 *    - .ext-header-sticky    → position: sticky + admin-bar handling
 *    - .ext-header-overlay   → hero section overlap (negative margin)
 *
 *  Appearance:
 *    - .ext-header-glass     → static glassmorphism (bg + blur + radius)
 *    - .ext-header--dark     → dark color scheme: white text + dark scrim/glass tint
 *
 *  Behavior:
 *    - .ext-header-sticky--floating-pill → scroll-driven intensification of glass + layout shift
 *
 *  Compositions:
 *    - ext-header-sticky                                                                          → just sticky, theme bg
 *    - ext-header-overlay                                                                         → overlay, transparent
 *    - ext-header-overlay ext-header--dark                                                        → overlay + dark scrim + white text
 *    - ext-header-sticky ext-header-glass                                                         → static glass header
 *    - ext-header-sticky ext-header-glass ext-header--dark                                        → static dark glass
 *    - ext-header-sticky ext-header-overlay ext-header-glass ext-header-sticky--floating-pill   → animated glass over hero
 *    - + ext-header--dark on the above                                                            → animated DARK glass over hero
 */

:root {
	--ext-header-height: 96px;
	--ext-header-offset: 1rem;
	--ext-header-blur-start: 4px;
	--ext-header-blur-end: 12px;
	--ext-header-bg-opacity-start: 0.75;
	--ext-header-bg-opacity-end: 0.95;
	--ext-header-padding: 1.5rem;
	--ext-header-animation-distance: 100px;
	--ext-header-glass-tint-dark: #ffffff;
	--ext-header-glass-tint-dark-end: #101010;
	--ext-header-dark-logo-filter: brightness(0) invert(1);
}

body {
	timeline-scope: --ext-hero-timeline;
}

/* ===========================================================
   Layout: ext-header-sticky
   =========================================================== */
header.wp-block-template-part:has(.ext-header-sticky) {
	position: sticky;
	top: 0;
	z-index: 12;
}

/* Default bg for sticky headers without glass.
   Glass headers leave the wrapper transparent so the inner glass element shows through. */
header.wp-block-template-part:has(.ext-header-sticky):not(:has(.ext-header-glass)):not(.has-background) {
	background-color: var(--wp--preset--color--background);
}

body.admin-bar header.wp-block-template-part:has(.ext-header-sticky) {
	top: var(--wp-admin--admin-bar--position-offset, var(--wp-admin--admin-bar--height, 32px));
}

@media (max-width: 782px) {

	body.admin-bar header.wp-block-template-part:has(.ext-header-sticky) {
		top:0;
	}
}

html:has(.ext-header-sticky) {
	scroll-padding-top: var(--ext-header-height);
}

/* ===========================================================
   Layout: ext-header-overlay (hero overlap)
   =========================================================== */
body:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:has(.ext-header-overlay):not(:has(.ext-header-sticky)) {
	position: relative;
	top: 0;
	z-index: 12;
}

body:has(.ext-header-overlay) .entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child {
	margin-top: calc(-1 * var(--ext-header-height)) !important;
	position: relative;
	z-index: 0;
}

/* Overlay over hero: wrapper goes transparent so the hero shows through.
   Reverts to default theme bg once .is-past-hero is added or on subpages without a hero. */
body:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:has(.ext-header-overlay):not(.is-past-hero):not(:has(.ext-header-glass)) {
	background-color: transparent;
}

/* ===========================================================
   Appearance: ext-header-glass (static glassmorphism)
   - --ext-header-glass-color-start: tint during the frosted/initial state
   - --ext-header-glass-color-end: tint at the solid/scrolled state
   - Static glass shows the end state (most readable)
   =========================================================== */
.ext-header-glass {
	--ext-header-glass-color-start: var(--wp--preset--color--background);
	--ext-header-glass-color-end: var(--wp--preset--color--background);
}

header.wp-block-template-part:has(.ext-header-glass) .ext-header-glass {
	background-color: oklch(from var(--ext-header-glass-color-end) l c h / var(--ext-header-bg-opacity-end));
	backdrop-filter: blur(var(--ext-header-blur-end));
	border-radius: 1rem;
}

/* ===========================================================
   Color: ext-header--dark
   - Sets shared scrim/glass color variable
   - Wrapper gets white text when used with overlay or glass
   - Inner blocks reset their colors to inherit
   =========================================================== */
/* Dark variant only takes effect on pages with a fullscreen hero.
   On subpages, dark+glass falls back to the light glass defaults. */
body:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) .ext-header-glass.ext-header--dark {
	--ext-header-glass-color-start: var(--ext-header-glass-tint-dark);
	--ext-header-glass-color-end: var(--ext-header-glass-tint-dark-end);
	--ext-header-bg-opacity-start: 0.06;
	--ext-header-bg-opacity-end: 0.85;
	--ext-header-blur-start: 16px;
	--ext-header-blur-end: 24px;
}

body:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:has(.ext-header-glass.ext-header--dark) .ext-header-glass {
	border: 1px solid rgb(255 255 255 / 0.12);
}

body:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:not(.is-past-hero):has(.ext-header-overlay.ext-header--dark) {
	color: #fff;
}

/* Top-fade scrim on the hero's cover block — softer falloff than a header-bound gradient.
   Flat (non-nested) :has() check on body so the rule reliably matches on hero pages
   that use an overlay+dark header.
   Fades out via opacity once the smart-sticky JS adds .is-past-hero on the header,
   in sync with the header reverting to its default theme appearance. */
body:has(.ext-header-overlay.ext-header--dark) .ext-hero-section--full-screen .wp-block-cover::after {
	content: "";
	position: absolute;
	inset: 0 0 auto 0;
	height: calc(var(--ext-header-height) * 3);
	transition: opacity 300ms ease;
	background: linear-gradient(
		to bottom,
		rgb(0 0 0 / 0.50) 0%,
		rgb(0 0 0 / 0.25) 50%,
		rgb(0 0 0 / 0.05) 80%,
		rgb(0 0 0 / 0) 100%
	);
	pointer-events: none;
	z-index: 1;
}

/* Past-hero: fade the scrim out so the hero image returns to its natural look,
   matching the header reverting to default theme bg + colors. */
body:has(header.wp-block-template-part.is-past-hero) .ext-hero-section--full-screen .wp-block-cover::after {
	opacity: 0;
}

body:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:has(.ext-header-glass.ext-header--dark) {
	color: #fff;
}

/* Inner-block dark overrides — fire only on hero pages with a dark backdrop.
   Overlay+dark drops out at .is-past-hero (header has reverted to default theme).
   Glass+dark keeps firing past-hero because the glass stays dark via its own animation. */
body:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:not(.is-past-hero):has(.ext-header-overlay.ext-header--dark) :where(a, button, .wp-block-site-title):not(.has-background, .wp-block-button__link, .cloned-for-mobile, .cloned-for-mobile *),
body:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:has(.ext-header-glass.ext-header--dark) :where(a, button, .wp-block-site-title):not(.has-background, .wp-block-button__link, .cloned-for-mobile, .cloned-for-mobile *) {
	color: inherit;
}

body:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:not(.is-past-hero):has(.ext-header-overlay.ext-header--dark) .wp-social-link:not(.cloned-for-mobile, .cloned-for-mobile *),
body:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:has(.ext-header-glass.ext-header--dark) .wp-social-link:not(.cloned-for-mobile, .cloned-for-mobile *) {
	color: #fff !important;
}

/* Phone CTA: force white over the dark hero. Needed because the paragraph carries
   WP's wp-elements-* link-color rule (preset primary), which beats .has-text-color
   inheritance on the inner <a>. Drops out at .is-past-hero so the phone reverts to theme. */
body:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:not(.is-past-hero):has(.ext-header-overlay.ext-header--dark) :is(.ext-nav-extras-phone, .ext-nav-extras-phone a):not(.cloned-for-mobile, .cloned-for-mobile *),
body:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:has(.ext-header-glass.ext-header--dark) :is(.ext-nav-extras-phone, .ext-nav-extras-phone a):not(.cloned-for-mobile, .cloned-for-mobile *) {
	color: #fff !important;
}

body:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:not(.is-past-hero):has(.ext-header-overlay.ext-header--dark) svg:not(.cloned-for-mobile *),
body:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:has(.ext-header-glass.ext-header--dark) svg:not(.cloned-for-mobile *) {
	fill: currentColor;
}

body:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:not(.is-past-hero):has(.ext-header-overlay.ext-header--dark) :is(.wp-block-site-logo, .wp-duotone-primary-foreground):not(.cloned-for-mobile, .cloned-for-mobile *),
body:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:has(.ext-header-glass.ext-header--dark) :is(.wp-block-site-logo, .wp-duotone-primary-foreground):not(.cloned-for-mobile, .cloned-for-mobile *) {
	filter: var(--ext-header-dark-logo-filter);
}

/* Nav-extras CTA: white pill + dark text for contrast against the dark hero scrim.
   Drops out at .is-past-hero so the button returns to its preset styling. */
body:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:not(.is-past-hero):has(.ext-header-overlay.ext-header--dark) .ext-nav-extras-btn:not(.cloned-for-mobile, .cloned-for-mobile *) .wp-block-button__link,
body:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:has(.ext-header-glass.ext-header--dark) .ext-nav-extras-btn:not(.cloned-for-mobile, .cloned-for-mobile *) .wp-block-button__link {
	background-color: #fefefe !important;
	color: #060606 !important;
}

/* Sticky non-glass headers: smooth shadow/bg transitions (toggle on .is-scrolled / .is-past-hero) */
header.wp-block-template-part:has(.ext-header-sticky):not(:has(.ext-header-glass)) {
	transition: background-color 300ms ease, box-shadow 300ms ease;
}

/* Floating-pill: smooth the top change when .is-scrolled toggles, so the
   header doesn't snap up when scrolling past the admin bar. */
header.wp-block-template-part:has(.ext-header-sticky.ext-header-sticky--floating-pill) {
	transition: top 300ms ease;
}

/* Subpage elevation shadow: appears when user scrolls (no hero on the page) */
body:not(:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child)) header.wp-block-template-part.is-scrolled:has(.ext-header-sticky):not(:has(.ext-header-glass)) {
	box-shadow: 0 4px 24px -8px rgb(0 0 0 / 0.08);
}

/* Smart sticky transitions: smooth color/filter changes when toggling .is-past-hero */
header.wp-block-template-part:has(.ext-header--dark) {
	transition: background-color 300ms ease, color 300ms ease, box-shadow 300ms ease, border-color 300ms ease;
}

header.wp-block-template-part:has(.ext-header--dark) :where(a, button, .wp-block-site-title, .wp-social-link) {
	transition: color 300ms ease;
}

header.wp-block-template-part:has(.ext-header--dark) .wp-block-site-logo {
	transition: filter 300ms ease;
}

/* Past-hero: any sticky+overlay gets solid theme bg + elevation shadow.
   Glass headers are excluded — they manage their own scroll visuals. */
header.wp-block-template-part.is-past-hero:has(.ext-header-sticky.ext-header-overlay):not(:has(.ext-header-glass)) {
	background-color: var(--wp--preset--color--background);
	box-shadow: 0 4px 24px -8px rgb(0 0 0 / 0.08);
}

/* Past-hero on dark variant: also revert white text / inverted logo / forced social color */
header.wp-block-template-part.is-past-hero:has(.ext-header-overlay.ext-header--dark):not(:has(.ext-header-glass)) {
	color: var(--wp--preset--color--foreground);
}

header.wp-block-template-part.is-past-hero:has(.ext-header-overlay.ext-header--dark):not(:has(.ext-header-glass)) :where(a, button, .wp-block-site-title):not(.has-background, .wp-block-button__link) {
	color: inherit;
}

header.wp-block-template-part.is-past-hero:has(.ext-header-overlay.ext-header--dark):not(:has(.ext-header-glass)) .wp-social-link {
	color: var(--wp--preset--color--foreground) !important;
}

header.wp-block-template-part.is-past-hero:has(.ext-header-overlay.ext-header--dark):not(:has(.ext-header-glass)) .wp-block-site-logo {
	filter: brightness(1) invert(0);
}

/* ===========================================================
   Hero timeline (for scroll-driven animations)
   =========================================================== */
@supports (animation-timeline: scroll()) {

	.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child {
		view-timeline: --ext-hero-timeline block;
	}
}

/* ===========================================================
   Behavior: ext-header-sticky--floating-pill
   - Layout shift: header wrapper goes transparent + constrained width
   - When combined with .ext-header-glass, animates glass intensity
   =========================================================== */
header.wp-block-template-part .ext-header-sticky--floating-pill.ext-animate {
	opacity: 1 !important;
}

header.wp-block-template-part:has(.ext-header-sticky.ext-header-sticky--floating-pill) {
	position: sticky;
	top: 0;
	z-index: 12;
	border-bottom: none;
}

body:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:has(.ext-header-sticky.ext-header-sticky--floating-pill) {
	position: sticky;
	top: var(--ext-header-offset);
	max-width: var(--wp--style--global--wide-size);
	margin-left: auto;
	margin-right: auto;
	background-color: transparent;
	padding-inline: var(--wp--style--root--padding-right) var(--wp--style--root--padding-left);
}

/* Initial glass state (over hero): override static glass-end with start values */
body:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:has(.ext-header-sticky.ext-header-sticky--floating-pill.ext-header-glass) .ext-header-sticky.ext-header-sticky--floating-pill.ext-header-glass {
	background-color: oklch(from var(--ext-header-glass-color-start) l c h / var(--ext-header-bg-opacity-start));
	backdrop-filter: blur(var(--ext-header-blur-start));
}

body.admin-bar:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:has(.ext-header-sticky.ext-header-sticky--floating-pill) {
	top:
		calc(var(--ext-header-offset) +
		var(--wp-admin--admin-bar--position-offset, var(--wp-admin--admin-bar--height, 32px)));
	background-color: transparent;
}

@media (max-width: 782px) {
	body.admin-bar:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:has(.ext-header-sticky.ext-header-sticky--floating-pill) {
		top:
			calc(var(--ext-header-offset) +
			var(--wp-admin--admin-bar--position-offset, var(--wp-admin--admin-bar--height, 46px)));
	}

	body.admin-bar:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part.is-scrolled:has(.ext-header-sticky.ext-header-sticky--floating-pill) {
		top:var(--ext-header-offset);
	}
}


@supports (animation-timeline: scroll()) {

	body:not(:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child)) header.wp-block-template-part:has(.ext-header-sticky.ext-header-sticky--floating-pill) {
		max-width: calc(var(--wp--style--global--wide-size) + var(--wp--style--root--padding-right) + var(--wp--style--root--padding-left));
		margin-left: auto;
		margin-right: auto;
	}

	@media (prefers-reduced-motion: no-preference) {

		body:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child) header.wp-block-template-part:has(.ext-header-sticky.ext-header-sticky--floating-pill.ext-header-glass) .ext-header-sticky.ext-header-sticky--floating-pill.ext-header-glass {
			animation: ext-header-glass-intensify linear both !important;
			animation-timeline: --ext-hero-timeline !important;
			animation-range: exit 0% exit 80% !important;
		}

		body:not(:has(.entry-content > .ext-hero-section.ext-hero-section--full-screen:first-child)) header.wp-block-template-part:has(.ext-header-sticky.ext-header-sticky--floating-pill.ext-header-glass) .ext-header-sticky.ext-header-sticky--floating-pill.ext-header-glass {
			animation: ext-header-glass-intensify-no-hero linear forwards !important;
			animation-timeline: scroll() !important;
			animation-range: 0 var(--ext-header-animation-distance) !important;
		}
	}
}

@keyframes ext-header-glass-intensify {

	from {
		background-color: oklch(from var(--ext-header-glass-color-start) l c h / var(--ext-header-bg-opacity-start));
		backdrop-filter: blur(var(--ext-header-blur-start));
	}

	to {
		background-color: oklch(from var(--ext-header-glass-color-end) l c h / var(--ext-header-bg-opacity-end));
		backdrop-filter: blur(var(--ext-header-blur-end));
		box-shadow: 0 14px 28px -10px rgb(0 0 0 / 0.14), 0 -14px 28px -10px rgb(0 0 0 / 0.14);
	}
}

@keyframes ext-header-glass-intensify-no-hero {

	from {
		background-color: oklch(from var(--ext-header-glass-color-start) l c h / var(--ext-header-bg-opacity-start));
		backdrop-filter: blur(var(--ext-header-blur-start));
		box-shadow: none;
		translate: 0 0;
		max-width: 100%;
		margin-inline: auto;
	}

	to {
		background-color: oklch(from var(--ext-header-glass-color-end) l c h / var(--ext-header-bg-opacity-end));
		backdrop-filter: blur(var(--ext-header-blur-end));
		box-shadow: 0 14px 28px -10px rgb(0 0 0 / 0.14), 0 -14px 28px -10px rgb(0 0 0 / 0.14);

		translate: 0 var(--ext-header-offset);
		max-width: var(--wp--style--global--wide-size);
		margin-inline: var(--wp--style--root--padding-right) var(--wp--style--root--padding-left);
		border-radius: 1rem;
	}
}

/* ===========================================================
   Vibe/gradient fix
   -----------------------------------------------------------
   Vibe block-style variations (e.g. is-style-ext-preset--group--*--header-1--N)
   paint a background gradient on the header. That gradient fights every
   over-hero / glass-tint / dark-scrim treatment we apply to overlay or glass
   headers, because the glass and overlay rules set background-COLOR while the
   variation sets a background-IMAGE that paints on top.
   Override the variation's background-image specifically (not the whole
   `background:` shorthand). That lets each header keep working in its
   natural design:
     - overlay non-glass: gets transparent bg over hero, theme bg past hero
     - glass: gets the glass tint (light by default, dark when --dark is set)
   On non-overlay / non-glass headers the variation gradient stays as-is.
   =========================================================== */
.ext-header-overlay[class*="is-style-ext-preset--"],
.ext-header-glass[class*="is-style-ext-preset--"] {
	background-image: none !important;
}

/* Temporary: a few template parts (e.g. no-title-sticky-header.html) wrap our
   header in another sticky <header>. Scope the fix to the three new headers
   (atlas-beacon, catalina-skyline, ceadar-peak) — they're the only ones
   using .ext-header-overlay, so older headers that intentionally rely on
   the wrapper's positioning aren't affected. display: contents removes the
   wrapper from layout entirely so its bg/border/sticky/box-shadow/
   wp-container-* styles don't apply. Remove once the upstream template
   stops wrapping. */
header:has(> header.wp-block-template-part :where(.ext-header-overlay)) {
	display: contents;
}

/* Mobile menu readability fix - 2026-10-28. The open mobile menu had no solid dark background override, while the dark header over the hero forces white navigation text. That left white links on the theme's light modal background. Force a solid charcoal panel with white links, only for the open mobile menu. */
.wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay),
.wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) .wp-block-navigation__responsive-dialog,
.has-modal-open .wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) {
  background-color: #111111 !important;
  background-image: none !important;
  color: #ffffff !important;
}
.has-modal-open .wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) .wp-block-navigation__responsive-container-content,
.has-modal-open .wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) .wp-block-navigation__responsive-dialog {
  background-color: #111111 !important;
  color: #ffffff !important;
}
.has-modal-open .wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) .wp-block-navigation-item a,
.has-modal-open .wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) .wp-block-navigation-item__content,
.has-modal-open .wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) .wp-block-navigation__responsive-dialog a {
  color: #ffffff !important;
  font-size: 1.25rem;
  font-weight: 600;
  line-height: 1.4;
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
}
.has-modal-open .wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) .wp-block-navigation__submenu-container .wp-block-navigation-item a {
  font-size: 1.125rem !important;
}
.has-modal-open .wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) .wp-block-navigation-item a:hover,
.has-modal-open .wp-block-navigation__responsive-container.is-menu-open:not(.disable-default-overlay) .wp-block-navigation-item a:focus {
  background-color: #2a2a2a !important;
  color: #ffffff !important;
  text-decoration: underline;
  text-decoration-style: solid;
}
.wp-block-navigation__responsive-container.has-modal-open.is-menu-open .site-logo-title,
.wp-block-navigation__responsive-container.has-modal-open.is-menu-open .site-logo-title .site-title {
  color: #ffffff !important;
}
.wp-block-navigation__responsive-container.has-modal-open.is-menu-open .site-logo-title::after {
  background: rgba(255, 255, 255, 0.25);
}

/* Mobile menu readability fix - follow-up 2026-10-28 (cody-mobile-menu-fix-2026-10-28). Replaces the earlier block below in effect: WordPress puts .has-modal-open on <html>, not on the responsive container, and .wp-block-navigation__responsive-dialog is a descendant of the container, not the container itself, so compound selectors such as .has-modal-open.wp-block-navigation__responsive-container.is-menu-open and .wp-block-navigation__responsive-container.is-menu-open.wp-block-navigation__responsive-dialog never match. This block therefore uses descendant selectors, drops the :not(.disable-default-overlay) gate and any width gate, and covers the container, dialog, content, custom navigation list and page list, plus the close button. */
.wp-block-navigation__responsive-container.is-menu-open,
html.has-modal-open .wp-block-navigation__responsive-container.is-menu-open,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-dialog,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-close,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-page-list {
  background-color: #111111 !important;
  background-image: none !important;
  color: #ffffff !important;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container {
  background-color: transparent !important;
  color: #ffffff !important;
}
.wp-block-navigation__responsive-container.is-menu-open a,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item a,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container a,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-page-list a,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-pages-list__item__link,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container a {
  color: #ffffff !important;
  background-color: transparent !important;
  opacity: 1 !important;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item a:hover,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item a:focus {
  background-color: #2a2a2a !important;
  color: #ffffff !important;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-site-title,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-site-title a,
.wp-block-navigation__responsive-container.is-menu-open .site-logo-title,
.wp-block-navigation__responsive-container.is-menu-open .site-logo-title .site-title,
.wp-block-navigation__responsive-container.is-menu-open .site-logo-title a {
  color: #ffffff !important;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close,
html.has-modal-open .wp-block-navigation__responsive-container-close {
  color: #ffffff !important;
  background-color: rgba(255, 255, 255, 0.15) !important;
  border: 1px solid rgba(255, 255, 255, 0.4) !important;
  border-radius: 9999px !important;
  padding: 0.5rem !important;
  opacity: 1 !important;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close svg,
html.has-modal-open .wp-block-navigation__responsive-container-close svg {
  fill: #ffffff !important;
}
