/********************************************************/
/*
/*      Utility CSS
/*
/********************************************************/

/******************************/
/* Modifier classes
/******************************/
/* Layout/alignment */
.flex {
	&													{ display: flex; }
	
	/* Direction */
	&.direction-row										{ flex-direction: row; }
	&.direction-row-reverse								{ flex-direction: row-reverse; }
	&.direction-column									{ flex-direction: column; }
	&.direction-column-reverse							{ flex-direction: column-reverse; }
	
	/* Wrapping */
	&.wrap												{ flex-wrap: wrap; }
	&.nowrap											{ flex-wrap: nowrap; }
	
	/* Since justify-self is ignored in flexbox layouts, simulate it using margins */
	&:not([class*="direction-column"]) {
		.justify-self {
			&.start												{ margin-inline-end: auto; }
			&.center											{ margin-inline: auto; }
			&.end												{ margin-inline-start: auto; }
			&.stretch											{ margin-inline: 0; }
		}
	}
	&[class*="direction-column"] {
		.justify-self {
			&.start												{ margin-block-end: auto; }
			&.center											{ margin-block: auto; }
			&.end												{ margin-block-start: auto; }
			&.stretch											{ margin-block: 0; }
		}
	}
}

.justify-content {
	&.start												{ justify-content: start; }
	&.center											{ justify-content: center; }
	&.end												{ justify-content: end; }
	&.space-around										{ justify-content: space-around; }
	&.space-between										{ justify-content: space-between; }
	&.space-evenly										{ justify-content: space-evenly; }
	&.stretch											{ justify-content: stretch; }
}

.justify-self {
	&.start												{ justify-self: start; }
	&.center											{ justify-self: center; }
	&.end												{ justify-self: end; }
	&.stretch											{ justify-self: stretch; }
}

.align-items {
	&.start												{ align-items: start; }
	&.baseline											{ align-items: baseline; }
	&.center											{ align-items: center; }
	&.end												{ align-items: end; }
	&.stretch											{ align-items: stretch; }
}

.align-self {
	&.start												{ align-self: start; }
	&.baseline											{ align-self: baseline; }
	&.center											{ align-self: center; }
	&.end												{ align-self: end; }
	&.stretch											{ align-self: stretch; }
}

/* Color */
.cornflower-blue,
.focus-cornflower-blue:is(:hover, :focus, :active),
.focus-cornflower-blue:is(:hover, :focus, :active) > a	{ color: var(--wp--preset--color--cornflower-blue); }
.ebony-clay-blue,
.focus-ebony-clay-blue:is(:hover, :focus, :active),
.focus-ebony-clay-blue:is(:hover, :focus, :active) > a	{ color: var(--wp--preset--color--ebony-clay-blue); }
.pale-oyster-brown,
.focus-pale-oyster-brown:is(:hover, :focus, :active),
.focus-pale-oyster-brown:is(:hover, :focus, :active) > a{ color: var(--wp--preset--color--pale-oyster-brown); }
.taupe-green,
.focus-taupe-green:is(:hover, :focus, :active),
.focus-taupe-green:is(:hover, :focus, :active) > a		{ color: var(--wp--preset--color--taupe-green); }
.spring-wood-white,
.focus-spring-wood-white:is(:hover, :focus, :active),
.focus-spring-wood-white:is(:hover, :focus, :active) > a{ color: var(--wp--preset--color--spring-wood-white); }
.white,
.focus-white:is(:hover, :focus, :active),
.focus-white:is(:hover, :focus, :active) > a			{ color: var(--wp--preset--color--white); }

.bg-cornflower-blue 									{ background-color: var(--wp--preset--color--cornflower-blue); }
.bg-ebony-clay-blue 									{ background-color: var(--wp--preset--color--ebony-clay-blue); }
.bg-pale-oyster-brown 									{ background-color: var(--wp--preset--color--pale-oyster-brown); }
.bg-taupe-green 										{ background-color: var(--wp--preset--color--taupe-green); }
.bg-spring-wood-white 									{ background-color: var(--wp--preset--color--spring-wood-white); }
.bg-white 												{ background-color: var(--wp--preset--color--white); }

/* Text */
.small												{ font-size: var(--wp--preset--font-size--small); }
.medium-size										{ font-size: var(--wp--preset--font-size--medium); }
.medium-large										{ font-size: var(--wp--preset--font-size--medium-large); }
.large												{ font-size: var(--wp--preset--font-size--large); }
.x-large											{ font-size: var(--wp--preset--font-size--x-large); }
.xx-large											{ font-size: var(--wp--preset--font-size--2-x-large); }
.omega												{ font-size: var(--wp--preset--font-size--omega); }
.thin												{ font-weight: 100; }
.extra-light										{ font-weight: 200; }
.light												{ font-weight: 300; }
.regular											{ font-weight: 400; }
.medium-weight										{ font-weight: 500; }
.semibold											{ font-weight: 600; }
.bold												{ font-weight: 700; }
.extra-bold											{ font-weight: 800; }
.heavy												{ font-weight: 900; }
.uppercase											{ text-transform: uppercase; }
.lowercase											{ text-transform: lowercase; }
.underline											{ text-decoration: underline; }
.text-deco-none,
.text-deco-none	a									{ text-decoration: none; }

/* Images */
.cover,
.cover img											{ object-fit: cover; }
.contain,
.contain img										{ object-fit: contain; }

/* Opacity */
.opacity-full										{ opacity: 1; }
.opacity-half										{ opacity: .5; }
.opacity-zero										{ opacity: 0; }

/* Other */
.user-select-none									{ user-select: none; }

/* System O)) text to logo substitution */
:has(> span.system-o) {
	--color: var(--wp--custom--color--default--text);
	--svg: url('data:image/svg+xml, <svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 912.88 259.97"><path class="cls-1" d="M0,183.72l15.42-18.47c10.68,8.81,21.86,14.4,35.43,14.4,10.67,0,17.11-4.24,17.11-11.19v-.34c0-6.6-4.07-10-23.9-15.08-23.89-6.1-39.31-12.71-39.31-36.26v-.34c0-21.53,17.28-35.76,41.52-35.76,17.28,0,32.02,5.43,44.06,15.08l-13.55,19.66c-10.51-7.28-20.85-11.69-30.84-11.69s-15.25,4.57-15.25,10.33v.34c0,7.8,5.09,10.34,25.59,15.59,24.06,6.27,37.62,14.91,37.62,35.59v.34c0,23.56-17.96,36.77-43.55,36.77-17.96,0-36.09-6.26-50.33-18.98" /><path class="cls-1" d="M157.94,110.18h26.78l-34.91,93.04c-6.95,18.47-14.41,25.42-29.83,25.42-9.32,0-16.27-2.37-22.88-6.28l8.64-18.62c3.39,2.02,7.63,3.55,11.02,3.55,4.4,0,6.78-1.35,8.98-5.93l-35.58-91.18h27.28l20.68,61.86,19.83-61.86Z" /><path class="cls-1" d="M179.11,188.98l11.02-16.94c9.82,7.11,20.17,10.84,28.64,10.84,7.46,0,10.85-2.7,10.85-6.77v-.34c0-5.6-8.81-7.46-18.81-10.51-12.71-3.73-27.11-9.66-27.11-27.29v-.33c0-18.47,14.91-28.81,33.22-28.81,11.52,0,24.07,3.9,33.89,10.51l-9.83,17.8c-8.99-5.25-17.97-8.47-24.58-8.47s-9.49,2.7-9.49,6.27v.33c0,5.09,8.64,7.46,18.48,10.84,12.71,4.24,27.45,10.34,27.45,26.94v.34c0,20.17-15.08,29.31-34.74,29.31-12.71,0-26.95-4.23-38.98-13.72" /><path class="cls-1" d="M264.69,175.25v-43.04h-10.84v-22.03h10.84v-23.22h25.76v23.22h21.35v22.03h-21.35v38.81c0,5.94,2.54,8.81,8.3,8.81,4.75,0,8.98-1.18,12.71-3.22v20.67c-5.42,3.23-11.7,5.26-20.34,5.26-15.76,0-26.44-6.28-26.44-27.29" /><path class="cls-1" d="M315.01,156.1v-.34c0-25.93,18.48-47.28,44.91-47.28,30.33,0,44.23,23.56,44.23,49.32,0,2.03-.17,4.4-.34,6.77h-63.21c2.54,11.69,10.68,17.8,22.2,17.8,8.64,0,14.91-2.72,22.03-9.33l14.74,13.06c-8.47,10.5-20.67,16.95-37.11,16.95-27.28,0-47.45-19.15-47.45-46.95M379.07,148.48c-1.52-11.52-8.31-19.32-19.15-19.32s-17.63,7.63-19.66,19.32h38.81Z" /><path class="cls-1" d="M412.79,110.18h25.76v12.88c5.93-7.62,13.73-14.58,26.78-14.58,11.86,0,20.84,5.25,25.59,14.41,7.96-9.32,17.45-14.41,29.82-14.41,19.15,0,30.67,11.53,30.67,33.39v59.14h-25.76v-50.67c0-12.21-5.42-18.47-15.08-18.47s-15.59,6.26-15.59,18.47v50.67h-25.76v-50.67c0-12.21-5.42-18.47-15.08-18.47s-15.59,6.26-15.59,18.47v50.67h-25.76v-90.83Z" /><path class="cls-1" d="M707.49,259.97c-67.09,0-121.67-54.58-121.67-121.68s54.58-121.67,121.67-121.67,121.67,54.58,121.67,121.67-54.58,121.68-121.67,121.68M707.49,53.64c-46.68,0-84.66,37.98-84.66,84.65s37.98,84.66,84.66,84.66,84.65-37.98,84.65-84.66-37.98-84.65-84.65-84.65" /><path class="cls-1" d="M825.23,28.23h-38.97c35.66,25.33,56.65,65.61,56.65,110.06s-20.99,84.74-56.65,110.07h38.97c27.85-29.79,43.59-69.1,43.59-110.07s-15.74-80.27-43.59-110.06" /><path class="cls-1" d="M875.4,28.23h-32.05c25.28,31.11,39.13,69.83,39.13,110.06s-13.84,78.95-39.13,110.07h32.05c21.6-32.74,32.99-70.53,32.99-110.07s-11.39-77.32-32.99-110.06" /><path class="cls-1" d="M907.72,18.91h-3.48l-4.52-4.44h-2.81v4.44h-2.92V5.61c2.46,0,4.92.02,7.38.02,3.66.02,5.58,2.11,5.58,4.4,0,1.82-.97,3.66-3.92,4.18l4.7,4.54v.17ZM896.92,7.96v4.25h4.45c1.86,0,2.66-1.06,2.66-2.13s-.82-2.13-2.66-2.13h-4.45Z" /><path class="cls-1" d="M900.49,25.02c-6.83,0-12.39-5.61-12.39-12.51s5.56-12.51,12.39-12.51,12.39,5.61,12.39,12.51-5.56,12.51-12.39,12.51ZM900.49,2.29c-5.57,0-10.11,4.59-10.11,10.23s4.54,10.23,10.11,10.23,10.11-4.59,10.11-10.23-4.54-10.23-10.11-10.23Z" /></svg>');
	
	&.has-text-color {
		&.has-cornflower-blue-color		{ --color: var(--wp--preset--color--cornflower-blue); }
		&.has-ebony-clay-blue-color 	{ --color: var(--wp--preset--color--ebony-clay-blue); }
		&.has-pale-oyster-brown-color 	{ --color: var(--wp--preset--color--pale-oyster-brown); }
		&.has-taupe-green-color 		{ --color: var(--wp--preset--color--taupe-green); }
		&.has-spring-wood-white-color 	{ --color: var(--wp--preset--color--spring-wood-white); }
		&.has-white-color 				{ --color: var(--wp--preset--color--white); }
	}
	
	&:is(a):is(:hover, :focus, :active) {
		--color: var(--wp--custom--color--default--focus);
	}
	
	& > span.system-o {
		display: inline-block;
		position: relative;
		width: max-content;
		color: transparent;
		background-color: unset;
		user-select: none;
		
		&::before {
			content: '';
			display: inline-block;
			position: absolute;
			top: 50%;
			left: 0;
			width: 100%;
			max-width: 100%;
			height: auto;
			max-height: 120%;
			aspect-ratio: 60/17;
			background-repeat: no-repeat;
			background-position: center;
			background-color: var(--color);
			translate: 0 calc(-50% - 2px);
			transition: background-color var(--wp--custom--speed--fast);
			
			-webkit-mask: var(--svg);
			mask: var(--svg);
			mask-repeat: no-repeat;
			mask-position: center;
		}
	}
	
	&:is(.wp-block-button__link) {
		:not(.is-style-light) > &,
		&:is(:hover, :focus, :active) {
			--color: var(--wp--custom--color--default--bg);
		}
		
		& > span.system-o {
			&::before {
				translate: 0 calc(-50% - 2px);
			}
		}
	}

	/* Responsive ****************************************************/
	/* @media (width <= 1400px) {
		&:is(.wp-block-button__link) {
			& > span.system-o {
				&::before {
					translate: 0 calc(-50% - 1px);
				}
			}
		}
	} */
}

/******************************/
/* Theme variables
/******************************/
body {
	@media (width <= 1200px) {
		& {
			--wp--preset--spacing--8	: var(--wp--preset--spacing--7-5);
			--wp--preset--spacing--8-5	: var(--wp--preset--spacing--7-5);
			--wp--preset--spacing--9	: var(--wp--preset--spacing--7-5);
			--wp--preset--spacing--9-5	: var(--wp--preset--spacing--7-5);
			--wp--preset--spacing--10	: var(--wp--preset--spacing--7-5);
			--wp--preset--spacing--10-5	: var(--wp--preset--spacing--7-5);
			--wp--preset--spacing--11	: var(--wp--preset--spacing--7-5);
			--wp--preset--spacing--11-5	: var(--wp--preset--spacing--7-5);
			--wp--preset--spacing--12	: var(--wp--preset--spacing--7-5);
			--wp--preset--spacing--12-5	: var(--wp--preset--spacing--7-5);
			--wp--preset--spacing--13	: var(--wp--preset--spacing--7-5);
			--wp--preset--spacing--13-5	: var(--wp--preset--spacing--7-5);
			--wp--preset--spacing--14	: var(--wp--preset--spacing--7-5);
			--wp--preset--spacing--14-5	: var(--wp--preset--spacing--7-5);
			--wp--preset--spacing--15	: var(--wp--preset--spacing--7-5);
		}
	}
	
	@media (width <= 800px) {
		& {
			--wp--preset--spacing--5-5	: var(--wp--preset--spacing--5);
			--wp--preset--spacing--6	: var(--wp--preset--spacing--5);
			--wp--preset--spacing--7-5	: var(--wp--preset--spacing--5);
			--wp--preset--spacing--8	: var(--wp--preset--spacing--5);
			--wp--preset--spacing--8-5	: var(--wp--preset--spacing--5);
			--wp--preset--spacing--9	: var(--wp--preset--spacing--5);
			--wp--preset--spacing--9-5	: var(--wp--preset--spacing--5);
			--wp--preset--spacing--10	: var(--wp--preset--spacing--5);
			--wp--preset--spacing--10-5	: var(--wp--preset--spacing--5);
			--wp--preset--spacing--11	: var(--wp--preset--spacing--5);
			--wp--preset--spacing--11-5	: var(--wp--preset--spacing--5);
			--wp--preset--spacing--12	: var(--wp--preset--spacing--5);
			--wp--preset--spacing--12-5	: var(--wp--preset--spacing--5);
			--wp--preset--spacing--13	: var(--wp--preset--spacing--5);
			--wp--preset--spacing--13-5	: var(--wp--preset--spacing--5);
			--wp--preset--spacing--14	: var(--wp--preset--spacing--5);
			--wp--preset--spacing--14-5	: var(--wp--preset--spacing--5);
			--wp--preset--spacing--15	: var(--wp--preset--spacing--5);
		}
		#wpadminbar { display: none !important; }
	}
	
	@media (width <= 600px) {
		& {
			--wp--preset--spacing--4-5	: var(--wp--preset--spacing--4);
			--wp--preset--spacing--5	: var(--wp--preset--spacing--4);
			--wp--preset--spacing--5-5	: var(--wp--preset--spacing--4);
			--wp--preset--spacing--6	: var(--wp--preset--spacing--4);
			--wp--preset--spacing--7-5	: var(--wp--preset--spacing--4);
			--wp--preset--spacing--8	: var(--wp--preset--spacing--4);
			--wp--preset--spacing--8-5	: var(--wp--preset--spacing--4);
			--wp--preset--spacing--9	: var(--wp--preset--spacing--4);
			--wp--preset--spacing--9-5	: var(--wp--preset--spacing--4);
			--wp--preset--spacing--10	: var(--wp--preset--spacing--4);
			--wp--preset--spacing--10-5	: var(--wp--preset--spacing--4);
			--wp--preset--spacing--11	: var(--wp--preset--spacing--4);
			--wp--preset--spacing--11-5	: var(--wp--preset--spacing--4);
			--wp--preset--spacing--12	: var(--wp--preset--spacing--4);
			--wp--preset--spacing--12-5	: var(--wp--preset--spacing--4);
			--wp--preset--spacing--13	: var(--wp--preset--spacing--4);
			--wp--preset--spacing--13-5	: var(--wp--preset--spacing--4);
			--wp--preset--spacing--14	: var(--wp--preset--spacing--4);
			--wp--preset--spacing--14-5	: var(--wp--preset--spacing--4);
			--wp--preset--spacing--15	: var(--wp--preset--spacing--4);
		}
	}
	
	/* Theme variable responsiveness */	
	@media (width <= 660px) {
		& {
			--wp--custom--header-height: 6.6875rem;
			--wp--custom--stickied-header-height: 5.375rem;
		}
	}
}