/***********************************************************************************
* Moxxie frontend styles
*
* Architecture:
* 1. Design tokens and base styles
* 2. Shared layout and components
* 3. Header and navigation
* 4. Content, projects and forms
* 5. Footer and theme blocks
* Responsive layouts are kept in css/responsive.css
*
* Third-party styles load before this file. Keep overrides scoped to .moxxie-site
* instead of forcing priority in individual declarations.
***********************************************************************************/
/***********************************************************************************
*	Fonts
***********************************************************************************/
@font-face {
	font-family: "Lato";
	font-style: normal;
	font-weight: 200;

	src: url("../assets/fonts/lato.eot"),
		url("../assets/fonts/lato.woff") format("woff"),
		url("../assets/fonts/lato.ttf") format("truetype"),
		url("../assets/fonts/lato.otf") format("opentype"),
		url("../assets/fonts/lato.svg#lato") format("svg");
}

@font-face {
	font-family: "LatoLight";
	font-style: normal;
	font-weight: 200;

	src: url("../assets/fonts/latolight.eot"),
		url("../assets/fonts/latolight.woff") format("woff"),
		url("../assets/fonts/latolight.ttf") format("truetype"),
		url("../assets/fonts/latolight.otf") format("opentype"),
		url("../assets/fonts/latolight.svg#latolight") format("svg");
}

@font-face {
	font-family: "FAwesome";
	font-style: normal;
	font-weight: 200;

	src: url("../assets/fonts/font-awesome.woff2") format("woff2"),
		url("../assets/fonts/font-awesome.woff") format("woff"),
		url("../assets/fonts/font-awesome.ttf") format("truetype"),
		url("../assets/fonts/font-awesome.svg#font-awesome") format("svg");
}

@font-face {
	font-family: "FAwesome-brands";
	font-style: normal;
	font-weight: 200;

	src: url("../assets/fonts/font-awesome-brands.woff2") format("woff2"),
		url("../assets/fonts/font-awesome-brands.woff") format("woff"),
		url("../assets/fonts/font-awesome-brands.ttf") format("truetype"),
		url("../assets/fonts/font-awesome-brands.svg#font-awesome-brands") format("svg");
}

/***********************************************************************************
* Design tokens
***********************************************************************************/
:root {
	/* Brand */
	--mox-primary: #c51f62;
	--mox-primary-hover: #e83e7a;
	--mox-primary-deep: #a91a54;
	--mox-primary-dark: #24173e;
	--mox-primary-gradient: #feb0c2;
	--mox-primary-bright: #ef2387;
	--mox-primary-soft: #ef328a;
	--mox-button-accent: #be5f82;
	--mox-secondary: #7654d9;
	--mox-secondary-deep: #6a2c91;

	/* Assets */
	--mox-favicon-image: url("../assets/images/favicon.png");
	--mox-mobile-menu-image: url("../assets/images/twists/moxxie-bottom-corner-twist.svg");

	/* Neutrals */
	--mox-white: #fff;
	--mox-warm-white: #faf8f6;
	--mox-black: #000;
	--mox-dark: #333;
	--mox-ink: #180d35;
	--mox-form-ink: #2a1538;
	--mox-footer-ink: #2a1849;
	--mox-muted: #b0acb5;
	--mox-surface-soft: #f8f3f6;
	--mox-surface-pink: #fff0f6;

	/* Status */
	--mox-error: #c92c55;
	--mox-error-strong: #a91f46;
	--mox-error-dark: #8f1f43;
	--mox-error-surface: #fff0f4;
	--mox-error-surface-soft: #fffafb;
	--mox-success: #2f8a68;
	--mox-success-dark: #205f49;
	--mox-success-surface: #eef8f3;

	/* Derived alpha colors */
	--mox-primary-05: color-mix(in srgb, var(--mox-primary) 5%, transparent);
	--mox-primary-10: color-mix(in srgb, var(--mox-primary) 10%, transparent);
	--mox-primary-30: color-mix(in srgb, var(--mox-primary) 30%, transparent);
	--mox-primary-35: color-mix(in srgb, var(--mox-primary) 35%, transparent);
	--mox-primary-40: color-mix(in srgb, var(--mox-primary) 40%, transparent);
	--mox-primary-95: color-mix(in srgb, var(--mox-primary) 95%, transparent);

	--mox-primary-dark-05: color-mix(in srgb, var(--mox-primary-dark) 5%, transparent);
	--mox-primary-dark-10: color-mix(in srgb, var(--mox-primary-dark) 10%, transparent);
	--mox-primary-dark-15: color-mix(in srgb, var(--mox-primary-dark) 15%, transparent);
	--mox-primary-dark-60: color-mix(in srgb, var(--mox-primary-dark) 60%, transparent);
	--mox-primary-dark-90: color-mix(in srgb, var(--mox-primary-dark) 90%, transparent);
	--mox-primary-dark-95: color-mix(in srgb, var(--mox-primary-dark) 95%, transparent);

	--mox-primary-bright-35: color-mix(in srgb, var(--mox-primary-bright) 35%, transparent);
	--mox-primary-bright-40: color-mix(in srgb, var(--mox-primary-bright) 40%, transparent);

	--mox-primary-soft-05: color-mix(in srgb, var(--mox-primary-soft) 5%, transparent);
	--mox-primary-soft-10: color-mix(in srgb, var(--mox-primary-soft) 10%, transparent);
	--mox-primary-soft-15: color-mix(in srgb, var(--mox-primary-soft) 15%, transparent);
	--mox-primary-soft-35: color-mix(in srgb, var(--mox-primary-soft) 35%, transparent);

	--mox-secondary-deep-05: color-mix(in srgb, var(--mox-secondary-deep) 5%, transparent);

	--mox-white-05: color-mix(in srgb, var(--mox-white) 5%, transparent);
	--mox-white-20: color-mix(in srgb, var(--mox-white) 20%, transparent);
	--mox-white-45: color-mix(in srgb, var(--mox-white) 45%, transparent);
	--mox-white-55: color-mix(in srgb, var(--mox-white) 55%, transparent);
	--mox-white-60: color-mix(in srgb, var(--mox-white) 60%, transparent);
	--mox-white-70: color-mix(in srgb, var(--mox-white) 70%, transparent);
	--mox-white-80: color-mix(in srgb, var(--mox-white) 80%, transparent);

	--mox-black-10: color-mix(in srgb, var(--mox-black) 10%, transparent);
	--mox-black-20: color-mix(in srgb, var(--mox-black) 20%, transparent);
	--mox-black-30: color-mix(in srgb, var(--mox-black) 30%, transparent);
	--mox-black-40: color-mix(in srgb, var(--mox-black) 40%, transparent);

	--mox-dark-05: color-mix(in srgb, var(--mox-dark) 5%, transparent);
	--mox-dark-10: color-mix(in srgb, var(--mox-dark) 10%, transparent);
	--mox-dark-20: color-mix(in srgb, var(--mox-dark) 20%, transparent);
	--mox-dark-40: color-mix(in srgb, var(--mox-dark) 40%, transparent);
	--mox-dark-50: color-mix(in srgb, var(--mox-dark) 50%, transparent);
	--mox-dark-75: color-mix(in srgb, var(--mox-dark) 75%, transparent);

	--mox-ink-10: color-mix(in srgb, var(--mox-ink) 10%, transparent);
	--mox-ink-15: color-mix(in srgb, var(--mox-ink) 15%, transparent);
	--mox-ink-70: color-mix(in srgb, var(--mox-ink) 70%, transparent);

	--mox-form-ink-20: color-mix(in srgb, var(--mox-form-ink) 20%, transparent);
	--mox-form-ink-50: color-mix(in srgb, var(--mox-form-ink) 50%, transparent);

	--mox-footer-ink-15: color-mix(in srgb, var(--mox-footer-ink) 15%, transparent);
	--mox-footer-ink-20: color-mix(in srgb, var(--mox-footer-ink) 20%, transparent);
	--mox-footer-ink-60: color-mix(in srgb, var(--mox-footer-ink) 60%, transparent);

	--mox-muted-35: color-mix(in srgb, var(--mox-muted) 35%, transparent);

	/* Layout */
	--mox-container: 960px;
	--mox-gutter: 20px;
	--mox-radius: 14px;
	--mox-radius-pill: 999px;
	--mox-transition: .2s ease;
}

/***********************************************************************************
* Base
***********************************************************************************/
html {
	background: var(--mox-white);

	scroll-behavior: smooth;
}

*,
*::before,
*::after {
	box-sizing: border-box;
}

body.moxxie-site {
	margin: 0;

	font-family: "Lato", Verdana, sans-serif;
	color: var(--mox-dark);

	background: var(--mox-white);
}

.moxxie-site a {
	color: inherit;
}

.moxxie-site p {
	font-family: "LatoLight", "Lato", Verdana, sans-serif;
	color: var(--mox-dark);
}

.moxxie-site p:only-child {
	margin-bottom: 0;
}

.moxxie-site h1 {
	font-variant: small-caps;
	color: var(--mox-primary);
}

.moxxie-site h2 {
	font-family: "LatoLight", "Lato", Verdana, sans-serif;
	font-size: 2em;
	font-variant: small-caps;
	line-height: 1.2;
	color: var(--mox-primary);
}

.moxxie-site h2.center {
	text-align: center;
}

.moxxie-site h3 {
	margin: 50px 0 20px;

	font-family: "LatoLight", "Lato", Verdana, sans-serif;
	font-size: 1.4em;
	font-variant: small-caps;
	line-height: 1;
	color: var(--mox-dark);
}

.mox-container {
	width: calc(100% - (2 * var(--mox-gutter)));
	max-width: var(--mox-container);

	margin-inline: auto;
}

.mox-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 14px;
}

.moxxie-site .mox-eyebrow {
	margin: 0 0 14px;

	font-family: "Lato", Verdana, sans-serif;
	font-size: .78em;
	font-weight: 700;
	line-height: 1.3;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--mox-primary);
}

.mox-section-heading {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 32px;
}

/***********************************************************************************
* Page shell
***********************************************************************************/
.site-wrapper {
	width: 100%;
	min-height: 100vh;

	background: var(--mox-white);

	display: flex;
	flex-direction: column;
}

#header-wrapper {
	width: 100%;

	border-bottom: 1px solid transparent;

	position: fixed;
	top: 0;
	right: 0;
	left: 0;

	z-index: 99;

	transition: background-color var(--mox-transition), border-color var(--mox-transition);
}

#header-wrapper.scrolling {
	background: var(--mox-white);

	border-bottom-color: var(--mox-primary);
}

#content-wrapper {
	width: 100%;

	padding-top: 90px;

	background: var(--mox-white);

	flex: 1 0 auto;
}

/***********************************************************************************
*	Announcements
***********************************************************************************/
#announcements {
	width: 100%;

	margin-bottom: 0px;
	padding: 10px 20px;

	background-color: var(--mox-primary);

	z-index: 9999;

	transition: 0.2s all ease-in-out;
}

#announcements:empty {
	display: none;
}

#header-wrapper.scrolling #announcements {
	height: 0px;

	padding: 0px;

	font-size: 0em;
}

#announcements p,
#announcements a{
	width: 100%;
	max-width: 960px;

	margin: 0px auto;

	font-weight: bold;
	text-align: center;
	color: var(--mox-white);

	display: block;
}

#announcements i {
	margin-right: 10px;

	font-size: 1em;
}

/***********************************************************************************
*	Logo
***********************************************************************************/
#header-wrapper .logo {
	width: 140px;
	height: 60px;

	margin-left: 20px;

	background-position: center center;
	background-repeat: no-repeat;
	background-size: contain;

	display: block;

	transition: 0.2s all ease-out;
}

#header-wrapper.scrolling .logo {
	width: 110px;
	height: 40px;
}

.social-contacts {
	display: none;
	position: absolute;
	top: 10px;
	right: 125px;
	flex-direction: row;
	gap: 10px;

	z-index: 12;
}

.social-contacts a {
	width: 20px;
	height: 20px;

	background-color: var(--mox-primary);
	background-position: center center;
	background-repeat: no-repeat;
	background-size: 70%;

	border-radius: 50%;

	display: block;

	transition: 0.2s all ease-out;
}

.social-contacts a:hover,
.social-contacts a:focus{
	background-color: var(--mox-primary-hover);
}

.social-contacts a::before {
	font-family: "FAwesome";
	font-size: 0.6em;
	color: var(--mox-white);

	display: flex;
	position: absolute;
	top: 0px;
	right: 0px;
	bottom: 0px;
	left: 0px;
	align-items: center;
	justify-content: center;

	content: " ";
}

.social-contacts a.social-facebook::before,
.social-contacts a.social-instagram::before,
.social-contacts a.social-youtube::before,
.social-contacts a.social-tiktok::before,
.social-contacts a.social-snapchat::before,
.social-contacts a.social-telegram::before,
.social-contacts a.social-linkedin::before,
.social-contacts a.social-twitter::before,
.social-contacts a.social-pinterest::before,
.social-contacts a.social-behance::before,
.social-contacts a.social-dribbble::before,
.social-contacts a.social-whatsapp::before {
	font-family: "FAwesome-brands";
	font-size: 0.8em;
}

.social-contacts a.social-facebook::before {
	content: "";
}

.social-contacts a.social-instagram::before {
	content: "";
}

.social-contacts a.social-youtube::before {
	content: "";
}

.social-contacts a.social-tiktok::before {
	content: "\e07b";
}

.social-contacts a.social-snapchat::before {
	content: "\f2ac";
}

.social-contacts a.social-telegram::before {
	content: "\f3fe";
}

.social-contacts a.social-linkedin::before {
	content: "";
}

.social-contacts a.social-twitter::before {
	content: "";
}

.social-contacts a.social-pinterest::before {
	content: "";
}

.social-contacts a.social-behance::before {
	content: "";
}

.social-contacts a.social-dribbble::before {
	content: "";
}

.social-contacts a.social-whatsapp::before {
	content: "";
}

.social-contacts a.social-phone::before {
	content: "";
}

.social-contacts a.social-email::before {
	content: "";
}

/***********************************************************************************
* Navigation
***********************************************************************************/
body.menu-open {
	overflow: hidden;
}

body.menu-open #announcements,
body.menu-open #content-wrapper,
body.menu-open #footer-wrapper {
	opacity: .4;
	pointer-events: none;
}

#header-wrapper .inner {
	width: 100%;
	max-width: var(--mox-container);

	margin-right: auto;
	margin-left: auto;
}

#navigation {
	width: 115px;
	height: 40px;

	position: absolute;
	top: 0;
	right: 0;

	z-index: 13;
	overflow: visible;
}

#navigation.mobile-menu-animation-expand-left,
#navigation.mobile-menu-animation-slide-left {
	right: auto;
	left: 0;
}

#navigation .mobile-menu-panel {
	width: min(100vw, 420px);
	max-width: 100%;
	height: 100vh;
	height: 100dvh;

	padding-top: 85px;

	background: var(--mox-warm-white) var(--mox-mobile-menu-image) bottom right / 70% no-repeat;

	position: fixed;
	top: 0;
	right: 0;

	box-sizing: border-box;

	z-index: 11;
	overflow: auto;
	opacity: 0;
	transform: translateX(100%);
	visibility: hidden;
	pointer-events: none;

	transition: width .35s cubic-bezier(.2, .8, .2, 1), height .35s cubic-bezier(.2, .8, .2, 1), max-height .35s cubic-bezier(.2, .8, .2, 1), padding-top .35s cubic-bezier(.2, .8, .2, 1), opacity .25s ease, transform .35s cubic-bezier(.2, .8, .2, 1), visibility 0s linear .35s;
}

#header-wrapper.scrolling #navigation .mobile-menu-panel {
	padding-top: 40px;
}

#navigation.mobile-menu-animation-expand-right .mobile-menu-panel {
	width: 0;

	box-shadow: -10px 0 28px var(--mox-primary-dark-15);

	opacity: 1;
	transform: none;
}

#navigation.mobile-menu-animation-expand-left .mobile-menu-panel {
	width: 0;

	right: auto;
	left: 0;

	box-shadow: 10px 0 28px var(--mox-primary-dark-15);

	opacity: 1;
	transform: none;
}

#navigation.mobile-menu-animation-expand-top .mobile-menu-panel {
	width: 100%;
	max-width: none;
	height: auto;
	max-height: 0;

	padding-top: 0;

	right: 0;
	left: 0;

	box-shadow: 0 10px 28px var(--mox-primary-dark-15);

	overflow: hidden;
	opacity: 1;
	transform: none;
}

#navigation.mobile-menu-animation-slide-right .mobile-menu-panel {
	box-shadow: -10px 0 28px var(--mox-primary-dark-15);
}

#navigation.mobile-menu-animation-slide-left .mobile-menu-panel {
	right: auto;
	left: 0;

	box-shadow: 10px 0 28px var(--mox-primary-dark-15);

	transform: translateX(-100%);
}

#navigation.mobile-menu-animation-slide-top .mobile-menu-panel {
	width: 100%;
	max-width: none;
	height: auto;
	max-height: 100vh;
	max-height: 100dvh;

	right: 0;
	left: 0;

	box-shadow: 0 10px 28px var(--mox-primary-dark-15);

	transform: translateY(-100%);
}

#navigation.mobile-menu-animation-expand-top .menu-logo,
#navigation.mobile-menu-animation-slide-top .menu-logo {
	margin: 20px;

	position: static;
}

#navigation.mobile-menu-animation-fade-scale .mobile-menu-panel {
	box-shadow: -10px 0 28px var(--mox-primary-dark-15);

	transform: scale(.96);
	transform-origin: top right;
}

#navigation.is-active .mobile-menu-panel {
	opacity: 1;
	transform: none;
	visibility: visible;
	pointer-events: auto;

	transition: width .35s cubic-bezier(.2, .8, .2, 1), height .35s cubic-bezier(.2, .8, .2, 1), max-height .35s cubic-bezier(.2, .8, .2, 1), padding-top .35s cubic-bezier(.2, .8, .2, 1), opacity .25s ease, transform .35s cubic-bezier(.2, .8, .2, 1), visibility 0s linear 0s;
}

#navigation.mobile-menu-animation-expand-right.is-active .mobile-menu-panel,
#navigation.mobile-menu-animation-expand-left.is-active .mobile-menu-panel {
	width: min(100vw, 420px);
}

#navigation.mobile-menu-animation-expand-top.is-active .mobile-menu-panel {
	max-height: 100vh;
	max-height: 100dvh;

	padding-top: 85px;

	overflow: auto;
}

#header-wrapper.scrolling #navigation.mobile-menu-animation-expand-top.is-active .mobile-menu-panel {
	padding-top: 40px;
}

#navigation.mobile-menu-animation-expand-left .hamburger,
#navigation.mobile-menu-animation-slide-left .hamburger {
	right: auto;
	left: 0;
}

#navigation.mobile-menu-animation-expand-left .hamburger .menu-label,
#navigation.mobile-menu-animation-slide-left .hamburger .menu-label {
	right: auto;
	left: 100%;
}

#navigation .hamburger {
	width: 40px;
	height: 40px;

	padding: 8px;

	background: var(--mox-primary);

	border: 0;
	border-radius: 0;

	position: absolute;
	top: 0;
	right: 0;

	z-index: 20;
	cursor: pointer;
}

#navigation .hamburger:hover,
#navigation .hamburger:focus-visible,
#navigation .hamburger.is-active {
	background: var(--mox-primary);

	opacity: 1;
}

.hamburger--slider:not(.is-active) .hamburger-inner {
	top: 4px;
}

#navigation .hamburger--slider .hamburger-inner::before,
#navigation .hamburger--slider .hamburger-inner::after {
	background-color: var(--mox-white);
}

.hamburger--slider:not(.is-active) .hamburger-inner::after {
	top: 16px;
}

.hamburger--slider:not(.is-active) .hamburger-inner::before {
	top: 8px;
}

.hamburger--slider:not(.is-active) .hamburger-inner::after {
	background-color: var(--mox-white);

	top: 16px;
}

#navigation .hamburger-inner,
#navigation .hamburger-inner::before,
#navigation .hamburger-inner::after,
#navigation .hamburger.is-active .hamburger-inner::before,
#navigation .hamburger.is-active .hamburger-inner::after {
	background: var(--mox-white);
}

#navigation .hamburger .menu-label {
	margin: 0;
	padding: 8px 12px;

	font-family: "Lato", Verdana, sans-serif;
	font-size: 17px;
	line-height: 24px;
	text-transform: uppercase;
	color: var(--mox-white);

	background: var(--mox-primary-hover);

	position: absolute;
	top: 0;
	right: 100%;

	z-index: 20;
}

#navigation .menu {
	width: 100%;
	max-width: 100%;

	display: block;
}

#navigation .menu a {
	width: 100%;

	padding: 10px 20px;

	font-family: "Lato", Verdana, sans-serif;
	font-size: 1.2em;
	font-weight: 700;
	text-decoration: none;
	color: var(--mox-primary-dark);

	display: block;

	transition: color var(--mox-transition);
}

#navigation .menu a:is(:hover, :focus-visible),
#navigation .menu .current-menu-item > a,
#navigation .menu .current_page_parent > a {
	color: var(--mox-primary);
}

#navigation .menu ul.sub-menu {
	padding-left: 40px;
}

#navigation .menu ul.sub-menu a {
	padding-left: 40px;
}

#navigation .menu ul.sub-menu li {
	padding-left: 0;

	position: relative;
}

#navigation .menu ul.sub-menu li::before {
	width: 20px;
	height: 100%;

	font-family: "FAwesome";
	color: var(--mox-primary);

	display: flex;
	position: absolute;
	top: 0;
	left: 0;
	align-items: center;
	justify-content: center;

	content: "";
}

#navigation .menu-logo {
	width: 0;
	max-width: 100%;

	display: block;
	position: absolute;
	bottom: 20px;
	left: 20px;

	transition: width var(--mox-transition);
}

#navigation.is-active .menu-logo {
	width: 100px;
}

#navigation .menu-logo img {
	width: 100%;

	display: block;
}

/***********************************************************************************
* Frontend admin bar
***********************************************************************************/
body.moxxie-site.admin-bar {
	--mox-admin-bar-height: 32px;
}

body.moxxie-site.admin-bar.moxxie-admin-bar-open {
	padding-top: var(--mox-admin-bar-height);
}

body.moxxie-site.admin-bar #header-wrapper {
	transition: top var(--mox-transition), background-color var(--mox-transition), border-color var(--mox-transition);
}

body.moxxie-site.admin-bar.moxxie-admin-bar-open #header-wrapper {
	top: var(--mox-admin-bar-height);
}

body.moxxie-site.admin-bar #wpadminbar {
	background: var(--mox-primary-dark);

	transform: translateY(-100%);

	transition: transform var(--mox-transition);
}

body.moxxie-site.admin-bar.moxxie-admin-bar-open #wpadminbar {
	transform: translateY(0);
}

body.moxxie-site.admin-bar #wpadminbar .ab-item,
body.moxxie-site.admin-bar #wpadminbar a.ab-item,
body.moxxie-site.admin-bar #wpadminbar > #wp-toolbar span.ab-label,
body.moxxie-site.admin-bar #wpadminbar > #wp-toolbar span.noticon {
	color: var(--mox-white-80);
}

body.moxxie-site.admin-bar #wpadminbar .ab-top-menu > li.hover > .ab-item,
body.moxxie-site.admin-bar #wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus,
body.moxxie-site.admin-bar #wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item,
body.moxxie-site.admin-bar #wpadminbar:not(.mobile) .ab-top-menu > li > .ab-item:focus {
	color: var(--mox-white);

	background: var(--mox-primary);
}

body.moxxie-site.admin-bar #wpadminbar .menupop .ab-sub-wrapper,
body.moxxie-site.admin-bar #wpadminbar .shortlink-input {
	background: var(--mox-primary-dark);
}

body.moxxie-site.admin-bar #wpadminbar .quicklinks .menupop ul.ab-sub-secondary,
body.moxxie-site.admin-bar #wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu {
	background: var(--mox-primary-dark-90);
}

body.moxxie-site.admin-bar #wpadminbar .ab-submenu .ab-item:hover,
body.moxxie-site.admin-bar #wpadminbar .ab-submenu .ab-item:focus {
	color: var(--mox-white);
}

.moxxie-admin-bar-toggle {
	width: 30px;
	height: 30px;

	padding: 0;

	color: var(--mox-primary);

	background: transparent;

	border: 0;
	border-radius: 0;

	display: flex;
	position: fixed;
	top: 8px;
	left: 8px;
	align-items: center;
	justify-content: center;

	z-index: 100001;
	cursor: pointer;

	transition: top var(--mox-transition), color var(--mox-transition), transform var(--mox-transition);
}

body.moxxie-admin-bar-open .moxxie-admin-bar-toggle {
	top: calc(var(--mox-admin-bar-height) + 8px);
}

.moxxie-admin-bar-toggle:is(:hover, :focus-visible) {
	color: var(--mox-primary-deep);

	transform: translateY(1px);
}

.moxxie-admin-bar-toggle:focus-visible {
	outline: 2px solid var(--mox-primary);
	outline-offset: 2px;
}

.moxxie-admin-bar-toggle__chevron {
	width: 9px;
	height: 9px;

	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;

	transform: translateY(-2px) rotate(45deg);

	transition: transform var(--mox-transition);
}

body.moxxie-admin-bar-open .moxxie-admin-bar-toggle__chevron {
	transform: translateY(2px) rotate(225deg);
}

/***********************************************************************************
*   Scroll to top
***********************************************************************************/
.moxxie-scroll-top {
	width: 52px;
	height: 52px;

	padding: 0;

	font-size: 1.45rem;
	line-height: 1;
	color: var(--mox-white);

	background: var(--mox-primary);

	border-style: solid;
	border-width: 0 0 5px;
	border-color: var(--mox-button-accent);
	border-radius: 50%;

	display: flex;
	position: fixed;
	right: 20px;
	bottom: 20px;
	align-items: center;
	justify-content: center;

	z-index: 90;
	opacity: 0;
	visibility: hidden;
	transform: translateY(14px) scale(.92);
	cursor: pointer;

	transition: opacity .25s ease,
		visibility .25s ease,
		border-color .2s ease,
		transform .25s ease;
}

.moxxie-scroll-top.is-visible {
	opacity: 1;
	visibility: visible;
	transform: translateY(0) scale(1);
}

.moxxie-scroll-top span {
	display: block;
}

.moxxie-scroll-top:focus-visible {
	border-color: var(--mox-primary-deep);

	outline: 2px solid var(--mox-primary);
	outline-offset: 3px;

	transform: translateY(-2px) scale(1);
}

/***********************************************************************************
* Buttons
***********************************************************************************/
.moxxie-site .mox-button,
.moxxie-site .button,
.moxxie-site .button-full,
.moxxie-site .wp-element-button,
.moxxie-site input[type="submit"] {
	width: auto;
	min-height: 48px;

	margin: 0;
	padding: 12px 22px;

	font: inherit;
	font-weight: 600;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
	color: var(--mox-white);

	border: 1px solid transparent;
	border-radius: 999px;

	display: inline-flex;
	position: relative;
	align-items: center;
	justify-content: center;
	gap: 12px;

	cursor: pointer;

	transition: color .2s ease, background-color .2s ease, border-color .2s ease, transform .2s ease;
}

.moxxie-site .mox-button:is(:hover, :focus-visible),
.moxxie-site .button:is(:hover, :focus-visible),
.moxxie-site .button-full:is(:hover, :focus-visible),
.moxxie-site .wp-element-button:is(:hover, :focus-visible),
.moxxie-site input[type="submit"]:is(:hover, :focus-visible) {
	text-decoration: none;
}

.moxxie-site .mox-button--primary,
.moxxie-site .button:not(.mox-button--outline),
.moxxie-site .button-full,
.moxxie-site .wp-block-button:not(.is-style-outline) > .wp-element-button,
.moxxie-site input[type="submit"] {
	color: var(--mox-white);

	background-color: var(--mox-primary);

	border-style: solid;
	border-width: 0 0 5px;
	border-color: var(--mox-button-accent);
}

.moxxie-site .mox-button--primary:is(:hover, :focus-visible),
.moxxie-site .button:not(.mox-button--outline):is(:hover, :focus-visible),
.moxxie-site .button-full:is(:hover, :focus-visible),
.moxxie-site .wp-block-button:not(.is-style-outline) > .wp-element-button:is(:hover, :focus-visible),
.moxxie-site input[type="submit"]:is(:hover, :focus-visible) {
	color: var(--mox-white);

	border-color: var(--mox-primary-deep);

	transform: translateY(-2px);
}

body.moxxie-site .mox-button--outline,
body.moxxie-site .home-outline-link,
body.moxxie-site .wp-block-button.is-style-outline > .wp-block-button__link,
body.moxxie-site .wp-block-button.is-style-outline > .wp-element-button {
	color: var(--mox-primary);

	background: transparent;

	border: 1px solid var(--mox-primary);
	border-radius: 999px;
}

body.moxxie-site .mox-button--outline:is(:hover, :focus-visible),
body.moxxie-site .home-outline-link:is(:hover, :focus-visible),
body.moxxie-site .wp-block-button.is-style-outline > .wp-block-button__link:is(:hover, :focus-visible),
body.moxxie-site .wp-block-button.is-style-outline > .wp-element-button:is(:hover, :focus-visible) {
	color: var(--mox-primary-dark);

	background: transparent;

	border-color: var(--mox-primary-dark);

	transform: translateY(-2px);
}

body.moxxie-site .mox-button--compact {
	min-height: 42px;

	padding: 10px 18px;
}

body.moxxie-site .home-primary-button span,
body.moxxie-site .home-outline-link span,
body.moxxie-site .moxxie-contact-cta-button span {
	transition: transform .2s ease;
}

body.moxxie-site .moxxie-contact-cta-button {
	padding-inline: 28px;
}

.moxxie-site .button-hasphone::after {
	content: "";
}

.moxxie-site .button-hasarrow::after,
.moxxie-site .button-hasphone::after,
.moxxie-site .wp-element-button::after {
	margin-left: auto;

	transition: transform .2s ease;
}

.moxxie-site .button-hasarrow:is(:hover, :focus-visible)::after,
.moxxie-site .wp-element-button:is(:hover, :focus-visible)::after {
	transform: translateX(4px);
}

.moxxie-site .button-hasphone:is(:hover, :focus-visible)::after {
	transform: rotate(15deg);
}

#page .wp-block-button {
	margin-inline: auto;
}

#page .wp-block-buttons.is-content-justification-left {
	justify-content: flex-start;
}

#page .wp-block-buttons.is-content-justification-left .wp-block-button {
	margin-inline: 0;
}

/***********************************************************************************
* Home
***********************************************************************************/
.moxxie-home {
	color: var(--mox-ink);

	background: var(--mox-white);
}

.moxxie-home main > :not(.alignfull) {
	width: 100%;
	max-width: var(--mox-container);

	margin-right: auto;
	margin-left: auto;
}

.moxxie-home .home-shell {
	width: calc(100% - 80px);
	max-width: 960px;

	margin: 0 auto;
}

.home-hero {
	padding: 100px 0 54px;

	background: var(--mox-white);

	overflow: hidden;
}

.home-hero-inner {
	min-height: 510px;

	display: flex;
	position: relative;
	align-items: center;
}

.home-hero-copy {
	width: 48%;

	position: relative;

	z-index: 2;
}

.moxxie-site .home-eyebrow {
	margin-bottom: 24px;

	color: var(--mox-primary);
}

.home-hero h1 {
	max-width: 590px;

	margin: 0;

	font-size: 4.125em;
	line-height: .96;
	letter-spacing: -.045em;
	text-transform: none;
	color: var(--mox-ink);
}

.home-hero-intro {
	max-width: 520px;

	margin: 26px 0 30px;

	font-size: 20px;
	line-height: 1.55;
}

.home-hero-art {
	width: 64%;

	position: absolute;
	top: 50%;
	right: -170px;

	z-index: 1;
	transform: translateY(-48%);
	pointer-events: none;
}

.home-hero-art img {
	width: 100%;
	max-height: 600px;

	display: block;

	object-fit: contain;
}

.home-stats {
	border-top: 1px solid var(--mox-ink-10);
	border-bottom: 1px solid var(--mox-ink-10);
}

.home-stats-inner {
	padding: 38px 0;

	display: flex;
}

.home-stat {
	width: 25%;

	padding: 8px 24px;

	text-align: center;

	border-right: 1px solid var(--mox-ink-15);
}

.home-stat:last-child {
	border-right: 0;
}

.home-stat strong {
	font-size: 38px;
	line-height: 1;
	letter-spacing: -.04em;

	display: block;
}

.home-stat span {
	margin-top: 9px;

	font-size: 16px;

	display: block;
}

.home-section-head {
	margin-bottom: 34px;

	gap: 40px;
}

.home-section-head .home-eyebrow {
	margin-bottom: 14px;
}

.moxxie-home-hero {
	min-height: 520px;

	padding: 90px 0 50px;
}

.moxxie-home-hero h1 {
	margin-top: 10px;
	margin-bottom: 24px;

	font-size: 4.0625em;
	line-height: .96;
	letter-spacing: -.045em;
	text-transform: none;
	color: var(--mox-primary-dark);
}

.moxxie-home-hero .moxxie-home-accent {
	color: var(--mox-primary);
}

.moxxie-site .moxxie-home-eyebrow {
	margin-bottom: 0;

	font-size: .78em;
	font-weight: 600;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--mox-primary);
}

.moxxie-home-stats {
	padding: 38px 0;

	border-top: 1px solid var(--mox-dark-10);
	border-bottom: 1px solid var(--mox-dark-10);
}

.moxxie-home-hero .wp-block-columns {
	min-height: 430px;

	align-items: center;
}

.moxxie-home-hero .wp-block-image img {
	width: 100%;
	max-height: 500px;

	object-fit: contain;
}

.moxxie-home-stats .wp-block-column {
	text-align: center;
}

.moxxie-testimonial-block {
	width: 100%;
	max-width: var(--mox-container);

	margin: 92px auto;
	padding: 0;

	background: transparent;

	position: relative;

	overflow: visible;
	isolation: isolate;
}

.moxxie-testimonial-block::before {
	width: 100vw;

	background: var(--mox-surface-pink);

	position: absolute;
	top: 0;
	bottom: 0;
	left: 50%;

	z-index: -1;
	transform: translateX(-50%);
	pointer-events: none;
	content: "";
}

.moxxie-testimonial-block__inner {
	width: 100%;
	min-height: 0;

	margin: 0 auto;
	padding: 58px 0;

	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 42px;
}

.moxxie-testimonial-block__label {
	min-width: 0;
}

.moxxie-testimonial-block__label .mox-eyebrow {
	margin: 0;

	font-size: 11px;
}

.moxxie-testimonial-block__label > h2 {
	margin: 6px 0 0;

	font-size: 14px;
	line-height: 1.25;
	letter-spacing: 0;
	text-transform: none;
	color: var(--mox-primary-dark);
}

.moxxie-testimonial-block__quote {
	max-width: none;

	margin: 0;
	padding: 0 0 0 54px;

	display: flex;
	position: relative;
	flex-wrap: wrap;
	align-items: center;
	gap: 34px;
}

.moxxie-testimonial-block__quote::before {
	font-size: 68px;
	font-weight: 700;
	line-height: 1;
	color: var(--mox-primary-bright-40);

	position: absolute;
	top: 50%;
	left: 0;

	transform: translateY(-43%);
	content: "“";
}

.moxxie-testimonial-block__quote blockquote {
	margin: 0;
	padding: 0;

	font-size: 15px;
	font-style: italic;
	font-weight: 500;
	line-height: 1.5;
	letter-spacing: -.025em;
	color: var(--mox-primary-dark);

	border: 0;
}

.moxxie-testimonial-block__quote figcaption {
	min-width: 130px;

	margin: 0;
	padding-left: 24px;

	line-height: 1.35;
	text-align: left;
	color: var(--mox-primary-dark);

	border-left: 1px solid var(--mox-primary-40);

	display: block;
}

.moxxie-testimonial-block__quote figcaption strong,
.moxxie-testimonial-block__quote figcaption span {
	display: block;
}

.moxxie-testimonial-block__quote figcaption strong {
	font-size: 13px;
}

.moxxie-testimonial-block__quote figcaption span {
	margin-top: 2px;

	font-size: 12px;
	color: var(--mox-primary-dark-60);
}

.home-projects {
	padding: 86px 0 98px;
}

.home-project-grid {
	display: flex;
	gap: 24px;
}

.home-project-card {
	width: calc((100% - 48px)/3);

	text-decoration: none;
	color: var(--mox-ink);

	background: var(--mox-white);

	border: 1px solid var(--mox-ink-10);
	border-radius: 12px;

	overflow: hidden;
}

.home-project-image {
	aspect-ratio: 4/3;

	background: var(--mox-surface-soft);

	overflow: hidden;
}

.home-project-image img {
	width: 100%;
	height: 100%;

	display: block;

	object-fit: cover;

	transition: transform .35s ease;
}

.home-project-image.is-fallback img {
	padding: 20%;

	object-fit: contain;
}

.home-project-card:hover .home-project-image:not(.is-fallback) img {
	transform: scale(1.025);
}

.home-project-meta {
	padding: 18px 20px 20px;

	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 18px;
}

.home-project-meta h3 {
	margin: 0;

	font-size: 21px;
	line-height: 1.1;
	text-transform: none;
	color: var(--mox-ink);

	transition: color .2s ease;
}

.home-project-card:hover .home-project-meta h3 {
	color: var(--mox-primary-bright);
}

.home-project-meta p {
	margin: 5px 0 0;

	font-size: 14px;
	color: var(--mox-ink-70);
}

.home-project-meta > span {
	font-size: 22px;
	line-height: 1;
}

.moxxie-home-projects {
	padding: 82px 0 20px;
}

.moxxie-home-projects-head {
	margin-bottom: 32px;
}

.moxxie-home-projects .wp-block-moxxie-media-card-list {
	margin-top: 28px;
}

.moxxie-featured-projects {
	width: 100%;

	margin: 82px 0;
}

.moxxie-featured-projects__head {
	margin-bottom: 30px;
}

.moxxie-featured-projects__eyebrow {
	margin-bottom: 12px;
}

.moxxie-featured-projects__head h2 {
	margin: 0;

	font-size: 4.2em;
	line-height: 1.02;
	letter-spacing: -.035em;
	text-transform: none;
	color: var(--mox-primary-dark);
}

.moxxie-featured-projects__all {
	text-decoration: none;
	color: var(--mox-primary-dark);

	display: inline-flex;
	flex: 0 0 auto;
	align-items: center;
	gap: 10px;

	transition: color .2s ease;
}

.moxxie-featured-projects__all:hover,
.moxxie-featured-projects__all:focus-visible {
	text-decoration: none;
	color: var(--mox-primary);
}

.moxxie-featured-projects__grid {
	display: flex;
	align-items: stretch;
	gap: 24px;
}

.moxxie-featured-project-card {
	width: calc((100% - 48px)/3);
	min-width: 0;

	text-decoration: none;
	color: var(--mox-primary-dark);

	background: var(--mox-white);

	border: 1px solid var(--mox-ink-10);
	border-radius: 12px;

	display: flex;
	flex-direction: column;

	box-shadow: none;

	overflow: hidden;

	transition: transform .2s ease,
		border-color .2s ease;
}

.moxxie-featured-project-card:hover,
.moxxie-featured-project-card:focus-visible {
	text-decoration: none;
	color: var(--mox-primary-dark);

	border-color: var(--mox-primary-bright-35);

	box-shadow: none;

	transform: translateY(-2px);
}

.moxxie-featured-project-card__media {
	aspect-ratio: 16/10;

	background: var(--mox-surface-soft);

	display: block;

	overflow: hidden;
}

.moxxie-featured-project-card__media img {
	width: 100%;
	height: 100%;

	display: block;

	object-fit: cover;

	transition: transform .3s ease;
}

.moxxie-featured-project-card__media.is-fallback img {
	padding: 18%;

	object-fit: contain;
}

.moxxie-featured-project-card:hover .moxxie-featured-project-card__media:not(.is-fallback) img {
	transform: scale(1.025);
}

.moxxie-featured-project-card__body {
	padding: 18px 20px 20px;

	display: flex;
	flex: 1;
	flex-direction: column;
}

.moxxie-featured-project-card__category {
	margin-bottom: 6px;

	font-size: 12px;
	line-height: 1.4;
	color: var(--mox-primary);
}

.moxxie-featured-project-card__title-row {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 16px;
}

.moxxie-featured-project-card__title {
	font-size: 21px;
	font-weight: 700;
	line-height: 1.15;
	color: var(--mox-primary-dark);

	transition: color .2s ease;
}

.moxxie-featured-project-card:hover .moxxie-featured-project-card__title,
.moxxie-featured-project-card:focus-visible .moxxie-featured-project-card__title {
	color: var(--mox-primary);
}

.moxxie-featured-project-card__arrow {
	font-size: 21px;
	line-height: 1;

	flex: 0 0 auto;

	transition: transform .2s ease,
		color .2s ease;
}

.moxxie-featured-project-card:hover .moxxie-featured-project-card__arrow {
	color: var(--mox-primary);

	transform: translateX(3px);
}

.moxxie-featured-projects__eyebrow.projects-eyebrow {
	margin: 0 0 12px;
}

/***********************************************************************************
*	Sidebar
***********************************************************************************/
#sidebar {
	display: none;
}

/***********************************************************************************
*	Content
***********************************************************************************/
#page {
	width: 100%;
}

#page > .float-right {
	width: 100%;
}

#page > .float-right > :not(.alignfull) {
	width: calc(100% - (2 * var(--mox-gutter)));
	max-width: var(--mox-container);

	margin-right: auto;
	margin-left: auto;
}

#page > .float-right > .alignfull {
	width: 100%;
	max-width: none;

	margin-right: 0;
	margin-left: 0;
}

#page .mox-children,
ul.projects-container{
	width: 100%;

	display: flex;
	flex-wrap: wrap;
}

#page .mox-children li,
ul.projects-container li{
	margin: 5px;

	flex-basis: calc(50% - 10px);
}

#page .mox-children li::before,
ul.projects-container li::before{
	width: 100%;

	padding-top: 100%;

	display: block;

	pointer-events: none;
	content: "";
}

#page .mox-children li a,
ul.projects-container li a{
	padding: 70% 20px 0px 20px;

	font-family: "LatoLight";
	font-size: 0.8em;
	line-height: 1em;
	text-align: center;

	background-color: var(--mox-black-10);
	background-image: var(--mox-favicon-image);
	background-position: center center;
	background-repeat: no-repeat;
	background-size: 30%;

	position: absolute;
	top: 0px;
	right: 0px;
	bottom: 0px;
	left: 0px;

	transition: all 0.2s linear;
}

ul.projects-container li a {
	padding-top: 75%;

	background-position: center 35%;
	background-size: 60%;

	display: flex;
	flex-direction: column;
	justify-content: center;
}

#page .mox-children li a:hover,
#page .mox-children li a:focus,
ul.projects-container li a:hover,
ul.projects-container li a:focus{
	text-decoration: none;
	color: var(--mox-primary);

	background-color: var(--mox-black-30);
	background-position: center 48%;
}

ul.projects-container li a:hover,
ul.projects-container li a:focus{
	background-position: center 33%;
}

#page h2 {
	font-family: "LatoLight";

	float: none;
	clear: both;
}

#page .has-drop-cap::after {
	padding-top: 0px;
}

#page figure {
	width: 100%;

	margin: 10px 0px;
}

#page figure img {
	width: 100%;
}

.slick-arrow {
	display: none;
}

.slick-dots {
	width: 100%;

	text-align: center;
}

.slick-dots li {
	margin: 5px;

	display: inline-block;
}

.slick-dots li button {
	width: 10px;
	height: 10px;

	font-size: 0px;
	line-height: 0px;

	background-color: var(--mox-black-30);

	border-radius: 10px;

	cursor: pointer;
}

.slick-dots li button:hover {
	background-color: var(--mox-black-40);
}

.slick-dots li.slick-active button {
	background-color: var(--mox-primary);

	cursor: auto;

	transition: all 0.2s linear;
}

.slick-dots li.slick-active button:hover {
	background-color: var(--mox-primary);
}

.wp-block-media-text {
	display: block;
}

#page .wp-block-media-text figure {
	margin: 0px;
}

.wp-block-media-text img {
	display: block;
}

#page .wp-block-media-text > div {
	padding: 5px;

	position: absolute;
	top: 5px;
	right: 5px;
}

#page .wp-block-media-text > div a {
	margin: 0px;
}

#page figure.left {
	width: 30%;

	margin: 0px 20px 10px 0px;

	float: left;
}

#page figure.right {
	width: 30%;

	margin: 0px 0px 10px 20px;

	float: right;
}

/***********************************************************************************
*	Project
***********************************************************************************/
.moxxie-projects-block {
	width: 100%;

	padding: 20px 0px 70px 0px;
}

.page-projects h2 {
	text-align: center;
}

p.tagline {
	font-family: "LatoLight", "Lato", Verdana, sans-serif;
	font-variant: small-caps;
	text-align: center;
}

.project-images .project-image {
	width: 100%;

	padding: 0px 5px;

	display: block;
}

.project-images div img {
	width: 100%;
}

.projects-filters-wrap {
	width: 100%;

	margin: 0 0 35px;

	border-bottom: 1px solid var(--mox-dark-10);

	display: flex;
	align-items: stretch;
	gap: 0;
}

.projects-filters {
	width: 100%;
	min-width: 0;

	margin: 0;
	padding: 0 16px;

	display: flex;
	align-items: stretch;
	gap: 25px;

	overflow-x: auto;
	scrollbar-width: none;
}

.projects-filters::-webkit-scrollbar {
	display: none;
}

.projects-filter-nav {
	width: 38px;
	min-height: 40px;

	padding: 0;

	font-family: "FAwesome";
	font-size: .8em;
	font-weight: 200;
	line-height: 1;
	color: var(--mox-primary);

	background: transparent;

	border: 0;
	border-radius: 0;

	display: none;
	align-items: center;
	justify-content: center;
	flex: 0 0 38px;

	cursor: pointer;

	transition: color .2s ease, background-color .2s ease, opacity .2s ease;
}

.projects-filter-nav:not(:disabled):is(:hover, :focus-visible) {
	color: var(--mox-white);

	background-color: var(--mox-primary);
}

.projects-filter-nav:disabled {
	color: var(--mox-dark-40);

	opacity: .45;
	cursor: default;
}

.project-filter {
	min-height: 40px;

	padding: 0;

	font-family: "Lato",
		Verdana,
		sans-serif;
	font-size: 0.85em;
	font-weight: 500;
	color: var(--mox-dark-75);

	background: transparent;

	border: 0;

	display: flex;
	position: relative;
	align-items: center;
	flex-shrink: 0;

	cursor: pointer;
}

.project-filter::after {
	width: 0px;
	height: 2px;

	background-color: var(--mox-primary);

	position: absolute;
	bottom: -1px;
	left: 50%;

	content: "";

	transition: all 0.2s ease-in-out;
}

.project-filter:hover,
.project-filter:focus,
.project-filter.active {
	color: var(--mox-primary-dark);
}

.project-filter.active::after {
	width: 100%;

	left: 0px;
}

.projects-grid {
	width: 100%;

	display: flex;
	flex-wrap: wrap;
	gap: 55px 0px;
}

.project-card {
	width: 100%;
	min-width: 0;

	opacity: 1;
	transform: translateY(0px);

	transition: opacity 0.25s ease-in-out,
		transform 0.25s ease-in-out;
}

.project-card.filter-out,
.project-card.filter-in {
	opacity: 0;
	transform: translateY(12px);
	pointer-events: none;
}

.project-card.hidden {
	display: none;
}

.project-card-link {
	width: 100%;
	min-width: 0;

	text-decoration: none;
	color: inherit;

	display: block;
}

.project-card-link:hover,
.project-card-link:focus {
	text-decoration: none;
}

.project-card-link:hover .project-card-image,
.project-card-link:focus .project-card-image {
	border-color: var(--mox-primary-30);
}

.project-card-link:hover .project-card-image img,
.project-card-link:focus .project-card-image img {
	transform: scale(1.03);
}

.project-card-placeholder {
	width: 100%;
	height: 100%;

	background: linear-gradient(135deg, var(--mox-primary-gradient), var(--mox-primary));

	display: block;
}

.project-card-content {
	width: 100%;
	min-width: 0;

	padding-top: 16px;

	display: block;
}

.project-card-categories {
	margin: 0px 0px 8px 0px;

	font-size: 0.68em;
	font-weight: 600;
	line-height: 1.2em;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--mox-primary);

	display: block;
}

.project-card-title-row {
	width: 100%;
	min-width: 0;

	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 12px;
}

.project-card-title {
	min-width: 0;

	font-size: 1em;
	font-weight: 700;
	line-height: 1.2em;
	overflow-wrap: anywhere;
	color: var(--mox-primary-dark);

	flex: 1 1 auto;
}

.project-card-arrow {
	width: 34px;
	height: 34px;

	margin-top: 1px;

	font-size: 1.2em;
	color: var(--mox-primary-dark);

	border: 1px solid var(--mox-dark-10);
	border-radius: 50%;

	display: flex;
	flex-shrink: 0;
	align-items: center;
	justify-content: center;

	transition: all 0.2s ease-in-out;
}

.project-card-link:hover .project-card-arrow,
.project-card-link:focus .project-card-arrow {
	color: var(--mox-white);

	background-color: var(--mox-primary);

	border-color: var(--mox-primary);

	transform: translateX(3px);
}

.project-card-excerpt {
	max-width: 90%;

	margin-top: 9px;

	font-size: 0.9em;
	line-height: 1.55em;
	color: var(--mox-dark-75);

	display: block;
}

.project-card-info {
	width: 22px;
	height: 22px;

	font-size: 0.72em;
	font-weight: 700;
	line-height: 1em;
	color: var(--mox-primary);

	background-color: var(--mox-warm-white);

	border: 1px solid var(--mox-primary-30);
	border-radius: 50%;

	display: flex;
	position: absolute;
	top: 14px;
	right: 14px;
	align-items: center;
	justify-content: center;

	z-index: 5;

	transition: color 0.22s ease-in-out,
		background-color 0.22s ease-in-out,
		border-color 0.22s ease-in-out;
}

.project-card-excerpt-overlay {
	width: 100%;
	height: 100%;

	padding: 28px;

	color: var(--mox-white);

	background-color: var(--mox-primary-dark-95);

	border-radius: inherit;

	display: flex;
	position: absolute;
	top: 0px;
	left: 0px;
	flex-direction: column;
	align-items: flex-start;
	justify-content: flex-end;

	z-index: 4;
	opacity: 0;
	visibility: hidden;
	transform: translateY(8px);
	pointer-events: none;

	transition: opacity 0.22s ease-in-out,
		transform 0.22s ease-in-out,
		visibility 0.22s ease-in-out;
}

.project-card-excerpt-label {
	margin-bottom: 8px;

	font-size: 0.64em;
	font-weight: 700;
	line-height: 1.2em;
	letter-spacing: 0.10em;
	text-transform: uppercase;
	color: var(--mox-primary);
}

.project-card-excerpt-text {
	font-size: 0.84em;
	font-weight: 400;
	line-height: 1.5em;
	color: var(--mox-white);
}

.project-card-link:hover .project-card-excerpt-overlay,
.project-card-link:focus .project-card-excerpt-overlay,
.project-card-link:focus-visible .project-card-excerpt-overlay {
	opacity: 1;
	visibility: visible;
	transform: translateY(0px);
}

.project-card-link:hover .project-card-info,
.project-card-link:focus .project-card-info,
.project-card-link:focus-visible .project-card-info {
	color: var(--mox-white);

	background-color: var(--mox-primary);

	border-color: var(--mox-primary);
}

.project-detail-wrapper {
	background-color: var(--mox-warm-white);
}

.project-detail-hero {
	padding: 35px 20px 55px 20px;

	color: var(--mox-white);

	background-color: var(--mox-primary-dark);
}

.project-detail-back {
	width: calc(100% - 48px);
	max-width: 960px;

	margin: 0px auto 30px auto;
	margin-right: auto;
	margin-left: auto;
}

.project-detail-hero-inner,
.project-detail-story,
.project-detail-gallery,
.project-detail-related {
	width: 100%;
	max-width: 960px;

	margin-right: auto;
	margin-left: auto;
}

.project-detail-hero-inner {
	display: flex;
	flex-direction: column;
	gap: 35px;
}

.project-detail-logo-fallback {
	max-width: 55%;
	max-height: 55%;
}

.project-detail-summary {
	min-width: 0;
}

.project-detail-summary h1 {
	margin: 0px;

	font-size: 3.55em;
	font-variant: normal;
	font-weight: 700;
	line-height: 0.98em;
	letter-spacing: -0.04em;
	color: var(--mox-white);
}

.moxxie-site .project-detail-tagline {
	max-width: 540px;

	margin: 22px 0px 0px 0px;

	font-size: 1.05em;
	line-height: 1.6em;
	color: var(--mox-white);
}

.project-detail-meta {
	margin-top: 30px;
	padding-top: 20px;

	border-top: 1px solid var(--mox-white-20);
}

.project-detail-meta-row span {
	font-size: 0.72em;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--mox-white-55);
}

.project-detail-meta-row strong,
.project-detail-meta-row a {
	font-size: 0.95em;
	font-weight: 500;
	line-height: 1.45em;
	color: var(--mox-white);
}

.project-detail-meta-row a {
	color: var(--mox-primary-gradient);
}

.project-detail-story,
.project-detail-gallery,
.project-detail-related {
	padding: 70px 20px;
}

.project-detail-section-heading h2,
.project-detail-gallery-heading h2,
.project-detail-related-heading h2,
.project-detail-cta h2 {
	margin: 0px;

	font-size: 2.75em;
	font-variant: normal;
	font-weight: 700;
	line-height: 1.02em;
	letter-spacing: -0.035em;
	color: var(--mox-primary-dark);
}

.project-detail-copy {
	font-size: 1em;
	line-height: 1.75em;
	color: var(--mox-dark-75);
}

.project-detail-copy p:first-child {
	margin-top: 0px;
}

.project-detail-site-button {
	margin-top: 20px;
}

.project-detail-gallery-heading,
.project-detail-related-heading {
	margin-bottom: 30px;

	display: flex;
	flex-direction: column;
	gap: 15px;
}

.project-detail-gallery-heading > span,
.project-detail-related-heading > a {
	font-size: 0.82em;
	color: var(--mox-primary);
}

.project-detail-gallery-list,
.project-detail-related-list {
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
}

.project-detail-related {
	padding-top: 40px;
}

.project-detail-related-card {
	width: 100%;
	min-width: 0;

	color: var(--mox-primary-dark);
}

.project-detail-related-card:hover,
.project-detail-related-card:focus,
.project-detail-related-card:focus-visible {
	text-decoration: none;
}

.project-detail-related-image {
	width: 100%;
	aspect-ratio: 4 / 3;

	padding: 0;

	background-color: var(--mox-white);

	border: 1px solid var(--mox-dark-10);
	border-radius: 12px;

	display: flex;
	align-items: center;
	justify-content: center;

	overflow: hidden;

	transition: border-color .2s ease;
}

.project-detail-related-image img {
	width: 100%;
	height: 100%;

	display: block;

	object-fit: cover;

	transition: transform .3s ease;
}

.project-detail-related-card:hover .project-detail-related-image,
.project-detail-related-card:focus-visible .project-detail-related-image {
	border-color: var(--mox-primary-bright-35);
}

.project-detail-related-card:hover .project-detail-related-image img,
.project-detail-related-card:focus-visible .project-detail-related-image img {
	transform: scale(1.025);
}

.project-detail-related-content {
	padding-top: 12px;

	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 12px;
}

.project-detail-related-content strong {
	min-width: 0;

	font-size: 0.95em;
	line-height: 1.3em;
}

.project-detail-related-content > span {
	color: var(--mox-primary);

	flex: 0 0 auto;
}

.project-detail-cta {
	margin-top: 40px;
	margin-bottom: 40px;
	padding: 50px 25px;

	border-top: 1px solid var(--mox-dark-10);
	border-bottom: 1px solid var(--mox-dark-10);

	position: relative;

	overflow: hidden;
}

.project-detail-cta > div > p:not(.projects-eyebrow) {
	max-width: 520px;

	margin: 20px 0px 28px 0px;

	line-height: 1.65em;
	color: var(--mox-dark-75);
}

.project-detail-cta-twist {
	display: none;
}

.project-detail-meta-row {
	padding: 11px 0px;

	display: flex;
	flex-direction: row;
	align-items: flex-start;
	gap: 14px;
}

.project-detail-meta-icon {
	width: 24px;
	height: 24px;

	margin-top: 2px;

	color: var(--mox-white-80);

	flex: 0 0 24px;
}

.project-detail-meta-icon svg,
.project-detail-highlight-icon svg {
	width: 100%;
	height: 100%;

	fill: none;
	stroke: currentColor;
	stroke-width: 1.6;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.project-detail-meta-content {
	min-width: 0;

	display: flex;
	flex-direction: column;
	gap: 3px;
}

.project-detail-meta-content small {
	font-size: 0.72em;
	font-weight: 700;
	line-height: 1.2em;
	color: var(--mox-white-70);
}

.project-detail-meta-content strong,
.project-detail-meta-content a {
	font-size: 0.92em;
	font-weight: 400;
	line-height: 1.45em;
	color: var(--mox-white);
}

.project-detail-story {
	display: flex;
	flex-direction: column;
	gap: 35px;
}

.project-detail-story-main {
	min-width: 0;
}

.project-detail-highlights h3 {
	margin: 0px 0px 22px 0px;

	font-size: 1.35em;
	font-variant: normal;
	font-weight: 700;
	color: var(--mox-primary-dark);
}

.project-detail-highlights ul {
	margin: 0px;
	padding: 0px;

	list-style: none;
}

.project-detail-highlights li {
	padding: 10px 0px;

	font-size: 0.92em;
	line-height: 1.5em;
	color: var(--mox-primary-dark);

	display: flex;
	align-items: flex-start;
	gap: 14px;
}

.project-detail-highlight-icon {
	width: 21px;
	height: 21px;

	margin-top: 1px;

	color: var(--mox-primary);

	flex: 0 0 21px;
}

.project-detail-gallery-heading > .project-detail-gallery-open {
	margin-left: auto;
	padding: 0px;

	font-family: inherit;
	font-size: 0.82em;
	text-align: right;
	color: var(--mox-primary);

	background: transparent;

	border: 0px;

	align-self: flex-end;

	cursor: pointer;
}

.project-detail-gallery-list {
	gap: 10px;
}

.project-detail-gallery-item img {
	width: 100%;
	height: 100%;

	object-fit: cover;

	transition: transform 0.25s ease-in-out;
}

.project-detail-gallery-item:hover img,
.project-detail-gallery-item:focus img {
	transform: scale(1.025);
}

.project-detail-gallery-hidden {
	display: none;
}

.project-detail-related-wrap {
	width: 100%;

	margin: 35px 0px 0px 0px;
	padding: 55px 0px;

	background: linear-gradient(135deg, var(--mox-primary-05), var(--mox-secondary-deep-05));

	border-top: 1px solid var(--mox-primary-dark-05);
	border-bottom: 1px solid var(--mox-primary-dark-05);
}

.project-detail-related-card small {
	padding-top: 5px;

	font-size: 0.72em;
	line-height: 1.4em;
	color: var(--mox-dark-50);

	display: block;
}

.project-card-image {
	width: 100%;
	aspect-ratio: 1 / 1;

	padding: 0px;

	background: var(--mox-warm-white);

	border: 1px solid var(--mox-primary-dark-10);
	border-radius: 14px;

	display: flex;
	align-items: center;
	justify-content: center;

	overflow: hidden;

	transition: border-color 0.25s ease-in-out,
		background-color 0.25s ease-in-out;
}

.project-card-image img {
	width: 100%;
	max-width: none;
	height: 100%;
	max-height: none;

	display: block;

	object-fit: cover;
	object-position: center;

	transition: transform 0.35s ease-in-out;
}

.project-card-image .project-card-fallback-logo {
	width: 58%;
	max-width: 58%;
	height: 58%;
	max-height: 58%;

	object-fit: contain;
}

.project-detail-visual {
	width: 100%;
	aspect-ratio: 4 / 3;

	padding: 0px;

	background: var(--mox-white-05);

	border-radius: 18px;

	display: flex;
	align-items: center;
	justify-content: center;

	overflow: hidden;
}

.project-detail-hero-image {
	width: 100%;
	height: 100%;

	display: block;

	object-fit: cover;
	object-position: center;
}

.project-detail-hero-image.project-detail-logo-fallback {
	width: 55%;
	height: 55%;

	object-fit: contain;
}

.project-detail-story .projects-eyebrow,
.project-detail-gallery .projects-eyebrow {
	color: var(--mox-primary);
}

.moxxie-site .project-detail-categories {
	width: fit-content;

	margin: 0px 0px 18px 0px;
	padding: 7px 12px;

	font-size: 0.68em;
	font-weight: 700;
	line-height: 1em;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--mox-white);

	background-color: var(--project-accent);

	border-radius: 20px;
}

.project-detail-meta-content a,
.project-detail-highlight-icon,
.project-detail-gallery-heading > .project-detail-gallery-open,
.project-detail-related-heading > a {
	color: var(--project-accent);
}

.project-detail-gallery {
	padding-top: 20px;

	position: relative;
}

.project-detail-gallery::before {
	width: 52px;
	height: 3px;

	margin: 0 0 24px 0;

	background: var(--project-accent);

	border-radius: 999px;

	display: block;

	content: "";
}

.project-detail-gallery-item {
	width: calc(50% - 5px);
	aspect-ratio: 4 / 3;

	padding: 0px;

	background-color: var(--mox-warm-white);

	border: 2px solid transparent;
	border-radius: 10px;

	display: flex;
	align-items: center;
	justify-content: center;

	overflow: hidden;

	transition: border-color .2s ease-in-out;
}

.project-detail-gallery-item:hover,
.project-detail-gallery-item:focus {
	border-color: var(--project-accent);
}

.project-detail-highlights {
	width: 100%;

	padding: 28px;

	background: var(--mox-primary-10);

	border: 0;
	border-radius: 18px;
	outline: 0;
}

.project-detail .project-detail-back a,
.project-detail .project-detail-gallery-open,
.project-detail .project-detail-related-heading > a {
	text-decoration: none;

	transition: color 180ms ease;
}

.project-detail-back a {
	font-size: 0.82em;
	color: var(--mox-white);
}

.project-detail-gallery-heading > .project-detail-gallery-open,
.project-detail-related-heading > a {
	color: var(--mox-primary-dark);
}

.project-detail .project-detail-back a:is(:hover, :focus-visible),
.project-detail .project-detail-gallery-open:is(:hover, :focus-visible),
.project-detail .project-detail-related-heading > a:is(:hover, :focus-visible) {
	text-decoration: none;
	color: var(--mox-primary);
}

.project-detail-meta-content a {
	text-decoration: none;
	text-decoration-thickness: 1px;
	text-underline-offset: 4px;
	color: var(--mox-primary);

	transition: color 180ms ease,
		text-decoration-color 180ms ease;
}

.project-detail-meta-content a:is(:hover, :focus-visible) {
	text-decoration: underline;
	text-decoration-color: currentColor;
	color: var(--mox-primary-hover);
}

.project-detail-related-card,
.project-detail-related-card strong,
.project-detail-related-card span,
.project-detail-related-card small {
	text-decoration: none;
}

.project-detail-related-card .project-detail-related-content strong {
	color: var(--mox-primary-dark);

	transition: color 180ms ease;
}

.project-detail-related-card:is(:hover, :focus-visible) .project-detail-related-content strong {
	text-decoration: none;
	color: var(--mox-primary);
}

/***********************************************************************************
* Fancybox
***********************************************************************************/
.project-detail {
	--project-accent: var(--mox-primary);

	width: 100%;
}

.moxxie-site .fancybox-slide--image {
	padding-inline: 88px;
}

.moxxie-site .fancybox-container .fancybox-navigation .fancybox-button {
	width: 58px;
	height: 58px;

	margin: 0;
	padding: 9px;

	color: var(--mox-white);

	background: var(--mox-primary-dark-90);

	border-radius: 50%;

	position: fixed;
	top: 50vh;
	bottom: auto;

	z-index: 100000;
	transform: translateY(-50%);

	transition: background-color 180ms ease, color 180ms ease, transform 180ms ease;
}

.moxxie-site .fancybox-container .fancybox-navigation .fancybox-button--arrow_left {
	right: auto;
	left: 14px;
}

.moxxie-site .fancybox-container .fancybox-navigation .fancybox-button--arrow_right {
	right: 14px;
	left: auto;
}

.moxxie-site .fancybox-container .fancybox-navigation .fancybox-button:not([disabled], .fancybox-button--disabled):is(:hover, :focus-visible) {
	color: var(--mox-white);

	background: var(--mox-primary-95);

	transform: translateY(-50%) scale(1.06);
}

.moxxie-site .fancybox-container .fancybox-navigation .fancybox-button > div,
.moxxie-site .fancybox-container .fancybox-navigation .fancybox-button svg {
	width: 40px;
	height: 40px;

	padding: 0;
}

.moxxie-site .fancybox-container .fancybox-navigation .fancybox-button[disabled],
.moxxie-site .fancybox-container .fancybox-navigation .fancybox-button.fancybox-button--disabled {
	color: var(--mox-white-60);

	background: var(--mox-muted-35);

	opacity: .58;
	cursor: default;
}

/***********************************************************************************
*	Services
***********************************************************************************/
#services-container .service {
	width: 100%;
}

#services-container .service img {
	width: 40%;

	margin: 0px 15px 0px 0px;

	float: left;
}

#services-container .service:nth-child(2n) img {
	margin: 0px 0px 0px 15px;

	float: right;
}

#services-container .service:last-of-type .horizontal-line {
	display: none;
}

#services-container .service h3 {
	font-family: "LatoLight";
	font-variant: small-caps;
	color: var(--mox-primary);
}

#services-container .service p {
	font-family: "LatoLight";
}



#services-container.moxxie-children-extended .moxxie-child-service img {
	width: 100%;
	max-height: 230px;

	margin: 0 0 28px;

	display: block;
	float: none;

	object-fit: contain;
}

.moxxie-web-benefits {
	width: 100%;

	margin: 34px 0 64px;
	padding: 28px 24px;

	background: var(--mox-primary-soft-05);

	border-radius: 18px;

	box-shadow: none;
}

.moxxie-web-benefits .wp-block-columns {
	margin: 0;

	gap: 0;
}

.moxxie-site .moxxie-web-benefits .wp-block-column {
	margin: 0;
	padding: 26px 0;

	border-bottom: 1px solid var(--mox-primary-dark-15);
}

.moxxie-web-benefits .wp-block-column:first-child {
	padding-top: 0;
}

.moxxie-web-benefits .wp-block-column:last-child {
	padding-bottom: 0;

	border-bottom: 0;
}

.moxxie-web-benefits .moxxie-web-benefit-number {
	margin: 0 0 12px;

	font-family: "Lato",
		Verdana,
		sans-serif;
	font-size: 2.5em;
	font-weight: 700;
	line-height: 1;
	letter-spacing: -.05em;
	color: var(--mox-primary);
}

.moxxie-web-benefits h3 {
	margin: 0 0 10px;

	font-variant: normal;
	letter-spacing: -.025em;
	color: var(--mox-primary-dark);
}

.moxxie-web-benefits .wp-block-column > p:last-child {
	margin-bottom: 0;

	color: var(--mox-dark-75);
}

#services-container.moxxie-children-extended {
	width: 100%;

	margin: 34px 0 68px;

	border-top: 1px solid var(--mox-primary-dark-15);

	counter-reset: moxxie-service;
}

#services-container.moxxie-children-extended .moxxie-child-service:first-child {
	border-top: 0;
}

#services-container.moxxie-children-extended .moxxie-child-service-media {
	min-width: 0;

	display: none;
	flex: 0 0 42%;
}

#services-container.moxxie-children-extended .moxxie-child-service-content {
	min-width: 0;

	flex: 1 1 auto;
}

#services-container.moxxie-children-extended .moxxie-child-service h3 {
	margin: 0 0 10px;

	font-family: "Lato",
		Verdana,
		sans-serif;
	font-size: 1.775em;
	font-variant: normal;
	font-weight: 700;
	line-height: 1.05;
	letter-spacing: -.035em;
	text-align: left;
	color: var(--mox-primary-dark);
}

#services-container.moxxie-children-extended .moxxie-child-service p {
	max-width: 620px;

	margin: 0 0 16px;

	font-family: "LatoLight",
		"Lato",
		Verdana,
		sans-serif;
	font-size: 1rem;
	line-height: 1.6;
	text-align: left;
	color: var(--mox-dark-75);
}

#services-container.moxxie-children-extended .read-more::before {
	display: none;
}

#services-container.moxxie-children-extended .read-more::after {
	width: 50%;
	height: 2px;

	background: currentColor;

	display: block;
	position: absolute;
	bottom: 0;
	left: 0;

	content: "";
	transform: scaleX(0);
	transform-origin: left center;

	transition: transform .2s ease-in-out;
}

#services-container.moxxie-children-extended .read-more span:last-child {
	display: inline-block;

	transition: transform .2s ease-in-out;
}

#services-container.moxxie-children-extended .moxxie-child-service-link:is(:hover, :focus-visible) .read-more::after {
	transform: scaleX(1);
}

#services-container.moxxie-children-extended .moxxie-child-service-link:is(:hover, :focus-visible) .read-more span:last-child {
	transform: translateX(3px);
}

#services-container.moxxie-children-extended .moxxie-child-service::before {
	padding-top: 4px;

	font-family: "Lato",
		Verdana,
		sans-serif;
	font-size: .78rem;
	font-weight: 700;
	line-height: 1;
	letter-spacing: .08em;
	color: var(--mox-primary);

	display: none;

	content: counter(moxxie-service, decimal-leading-zero);
}

#services-container.moxxie-children-extended .moxxie-child-service-link {
	width: 100%;

	padding: 28px 14px 30px;

	text-decoration: none;
	color: inherit;

	display: flex;
	flex-wrap: wrap;
	gap: 0 16px;

	counter-increment: moxxie-service;
}

#services-container.moxxie-children-extended .moxxie-child-service-link::before {
	padding-top: 4px;

	font-family: "Lato",
		Verdana,
		sans-serif;
	font-size: .78rem;
	font-weight: 700;
	line-height: 1;
	letter-spacing: .08em;
	color: var(--mox-primary);

	content: counter(moxxie-service, decimal-leading-zero);
}

#services-container.moxxie-children-extended .moxxie-child-service:hover,
#services-container.moxxie-children-extended .moxxie-child-service:focus-within{
	background: var(--mox-primary-soft-05);
}

#services-container.moxxie-children-extended .moxxie-child-service-link:focus-visible {
	outline: 2px solid var(--mox-primary);
	outline-offset: -2px;
}

#services-container.moxxie-children-extended .read-more {
	margin: 0;
	padding: 0 0 5px;

	font-family: "Lato",
		Verdana,
		sans-serif;
	font-size: .96rem;
	font-weight: 600;
	line-height: 1.4;
	text-decoration: none;
	color: var(--mox-primary);

	background: transparent;

	border: 0;
	border-radius: 0;

	display: inline-flex;
	position: relative;
	align-items: center;
	gap: 7px;

	box-shadow: none;

	pointer-events: none;
}

#services-container.moxxie-children-extended .moxxie-child-service {
	width: 100%;

	margin: 0;
	padding: 0;

	text-align: left;

	border: 0;
	border-bottom: 1px solid var(--mox-primary-dark-15);

	display: flex;
	position: relative;
	flex-wrap: nowrap;
	align-items: center;
	gap: 2em;

	counter-increment: none;

	transition: background-color .2s ease-in-out;
}

#services-container.moxxie-children-extended .moxxie-child-service-number {
	flex: 0 0 4.5em;
}
/***********************************************************************************
* Contact
***********************************************************************************/
.wpcf7 {
	width: 100%;
	max-width: var(--mox-container);

	margin: 38px 0 0;
	padding: 38px;

	background: var(--mox-primary-soft-05);

	border-radius: 18px;
}

.parallax-horizontal-box .wpcf7 {
	margin-inline: auto;
}

.moxxie-site .wpcf7 form {
	width: 100%;

	padding: 34px 0 0;

	background: transparent;

	border: 0;

	display: flex;
	position: relative;
	flex-direction: column;
	gap: 14px;
}

.wpcf7 form::before {
	width: 100%;
	height: 3px;

	background: linear-gradient(90deg, var(--mox-primary), var(--mox-primary-hover), var(--mox-primary-soft-35));

	border-radius: 3px;

	position: absolute;
	top: 0;
	left: 0;

	content: "";
}

.moxxie-site .wpcf7 .contact-section {
	width: 100%;
	min-width: 0;

	margin: 0;

	display: block;
	float: none;
}

.moxxie-site .wpcf7 .contact-section > p {
	width: 100%;

	margin: 0;

	display: flex;
	flex-wrap: wrap;
	gap: 14px 16px;
}

.wpcf7 .contact-section br {
	display: none;
}

.wpcf7 .wpcf7-form-control-wrap,
.wpcf7 .your-firstname,
.wpcf7 .your-surname {
	width: 100%;
	min-width: 0;

	margin: 0;

	display: block;
	float: none;
}

.moxxie-site .wpcf7 input[type="text"],
.moxxie-site .wpcf7 input[type="email"],
.moxxie-site .wpcf7 input[type="number"],
.moxxie-site .wpcf7 input[type="tel"],
.moxxie-site .wpcf7 input[type="url"],
.moxxie-site .wpcf7 input[type="date"],
.moxxie-site .wpcf7 select,
.moxxie-site .wpcf7 textarea,
.moxxie-site .moxxie-persona-auth input[type="text"],
.moxxie-site .moxxie-persona-auth input[type="email"],
.moxxie-site .moxxie-persona-auth input[type="password"] {
	width: 100%;
	min-height: 56px;

	margin: 0;
	padding: 15px 17px;

	font: 16px/1.45 "Lato", Verdana, sans-serif;
	color: var(--mox-primary-dark);

	background: var(--mox-white-55);

	border: 1px solid var(--mox-form-ink-20);
	border-radius: 10px;
	outline: 0;

	transition: border-color var(--mox-transition), background-color var(--mox-transition);
}

.wpcf7 input::placeholder,
.wpcf7 textarea::placeholder,
.moxxie-site .moxxie-persona-auth input::placeholder {
	color: var(--mox-form-ink-50);

	opacity: 1;
}

.wpcf7 input:hover,
.wpcf7 select:hover,
.wpcf7 textarea:hover,
.moxxie-site .moxxie-persona-auth input[type="text"]:hover,
.moxxie-site .moxxie-persona-auth input[type="email"]:hover,
.moxxie-site .moxxie-persona-auth input[type="password"]:hover {
	border-color: var(--mox-primary-35);
}

.wpcf7 input:focus,
.wpcf7 select:focus,
.wpcf7 textarea:focus,
.moxxie-site .moxxie-persona-auth input[type="text"]:focus,
.moxxie-site .moxxie-persona-auth input[type="email"]:focus,
.moxxie-site .moxxie-persona-auth input[type="password"]:focus {
	background: var(--mox-white);

	border-color: var(--mox-primary);
}

.wpcf7 textarea {
	min-height: 210px;

	resize: vertical;
}

.moxxie-site .wpcf7 input[type="submit"] {
	margin: 6px 0 0 auto;
	padding-inline: 24px;

	font-size: 15px;
	font-weight: 700;
}

.moxxie-site .wpcf7 .wpcf7-not-valid {
	background: var(--mox-error-surface-soft);

	border-color: var(--mox-error);
}

.moxxie-site .wpcf7 .wpcf7-not-valid-tip {
	margin: .45em 0 0;
	padding-left: .15em;

	font-size: .82em;
	font-weight: 600;
	line-height: 1.45;
	color: var(--mox-error-strong);

	display: block;
}

.moxxie-site .wpcf7 form .wpcf7-response-output {
	margin: 1.25em 0 0;
	padding: 1em 1.15em;

	font-size: .95em;
	font-weight: 600;
	line-height: 1.6;
	color: var(--mox-error-dark);

	background: var(--mox-error-surface);

	border: 0;
	border-left: 4px solid var(--mox-error);
	border-radius: 0;

	position: static;
}

.moxxie-site .wpcf7 form.sent .wpcf7-response-output {
	color: var(--mox-success-dark);

	background: var(--mox-success-surface);

	border-left-color: var(--mox-success);
}

.wpcf7 form > p:has(input[type="submit"]),
.wpcf7 form > div:has(input[type="submit"]) {
	width: 100%;

	margin: 0;

	display: flex;
	align-items: center;
	justify-content: flex-end;
}

.wpcf7 .contact-section > p:has(.wpcf7-submit) {
	flex-flow: row-reverse wrap;
	align-items: center;
	justify-content: flex-end;
	gap: .875em .625em;
}

.wpcf7 .contact-section > p:has(.wpcf7-submit) > .wpcf7-form-control-wrap {
	max-width: 100%;

	flex: 0 0 100%;
	order: 1;
}

.wpcf7 .contact-section > p:has(.wpcf7-submit) > .wpcf7-spinner {
	width: 24px;
	height: 24px;

	margin: 0;

	flex: 0 0 24px;
	order: 2;
}

.wpcf7 .contact-section > p:has(.wpcf7-submit) > .wpcf7-submit {
	width: auto;

	margin: 0;

	flex: 0 0 auto;
	order: 3;
}

.wpcf7 .contact-section:has(> .wpcf7-turnstile) {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .875em 1em;
}

.wpcf7 .contact-section:has(> .wpcf7-turnstile) > p {
	width: 100%;

	margin: 0;

	flex: 0 0 100%;
	order: 1;
}

.wpcf7 .contact-section:has(> .wpcf7-turnstile) > .wpcf7-submit {
	width: auto;

	margin: 0;

	flex: 0 0 auto;
	order: 2;
}

.wpcf7 .contact-section:has(> .wpcf7-turnstile) > .wpcf7-spinner {
	margin: 0;

	flex: 0 0 24px;
	order: 3;
}

.wpcf7 .contact-section:has(> .wpcf7-turnstile) > .wpcf7-turnstile {
	margin-left: auto;

	flex: 0 0 auto;
	order: 4;
}

.moxxie-contact-details {
	width: 100%;

	display: flex;
	flex-direction: column;
	gap: 10px;
}

.moxxie-contact-detail {
	padding: 12px 0;

	text-decoration: none;
	color: var(--mox-primary-dark);

	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 16px;
}

.moxxie-contact-detail__icon {
	width: 46px;
	height: 46px;

	color: var(--mox-primary);

	background: var(--mox-primary-soft-10);

	border-radius: 50%;

	display: flex;
	flex: 0 0 46px;
	align-items: center;
	justify-content: center;
}

.moxxie-contact-detail__icon svg {
	width: 22px;
	height: 22px;

	fill: none;
	stroke: currentColor;
	stroke-width: 1.8;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.moxxie-contact-detail__content {
	min-width: 0;

	line-height: 1.45;

	display: flex;
	flex: 1 1 auto;
	flex-direction: column;
	gap: 3px;
}

.moxxie-contact-detail__content strong {
	font-size: 1rem;
	color: var(--mox-primary-dark);
}

.moxxie-contact-detail__content > span {
	font-family: "LatoLight", "Lato", Verdana, sans-serif;
	font-size: .92rem;
	color: var(--mox-dark-75);
}

a.moxxie-contact-detail:is(:hover, :focus-visible) .moxxie-contact-detail__icon {
	background: var(--mox-primary-soft-15);
}

/***********************************************************************************
*   Quick contact
***********************************************************************************/
#quick-contact {
	width: 100%;
	max-width: 960px;

	margin: 45px auto;

	display: flex;
	flex-wrap: wrap;
	gap: 16px;
}

#quick-contact a {
	min-height: 76px;

	padding: 0 24px 0 74px;

	font-family: "Lato",
		sans-serif;
	font-size: 16px;
	font-variant: normal;
	font-weight: 500;
	text-decoration: none;
	color: var(--mox-primary-dark);

	background: transparent;

	border: 1px solid var(--mox-primary-dark-15);
	border-radius: 14px;

	display: flex;
	position: relative;
	align-items: center;

	transition: all 0.2s ease-in;
}

#quick-contact a::before {
	width: 42px;
	height: 42px;

	background-color: var(--mox-dark-05);
	background-position: center;
	background-repeat: no-repeat;
	background-size: 18px;

	border-radius: 50%;

	position: absolute;
	top: 50%;
	left: 18px;

	transform: translateY(-50%);
	content: "";
}

#quick-contact a:first-child::before {
	background-image: url("../assets/images/phone.png");
}

#quick-contact a:last-child::before {
	background-image: url("../assets/images/mail.png");
}

#quick-contact a::after {
	width: 3px;
	height: 26px;

	background: linear-gradient(
        180deg,
        var(--mox-primary-gradient),
        var(--mox-primary),
        var(--mox-secondary)
    );

	border-radius: 0 3px 3px 0;

	position: absolute;
	top: 50%;
	left: -1px;

	transform: translateY(-50%);
	content: "";

	transition: height .2s ease;
}

#quick-contact a:hover,
#quick-contact a:focus{
	text-decoration: none;
	color: var(--mox-primary);

	background-color: var(--mox-white-45);

	border-color: var(--mox-primary-30);
	outline: none;

	box-shadow: none;

	transform: translateY(-2px);
}


#quick-contact a:hover::after,
#quick-contact a:focus::after{
	height: 42px;
}

/***********************************************************************************
* Contact CTA
***********************************************************************************/
.moxxie-contact-cta {
	width: 100%;
	max-width: none;
	min-height: 0;

	margin: 80px 0 0;
	padding: 0;

	background: linear-gradient(135deg, var(--mox-primary-soft-10), var(--mox-primary-soft-05));

	display: flex;
	position: relative;
	align-items: center;

	overflow: hidden;
}

.moxxie-contact-cta-inner {
	min-height: 0;

	padding-block: 64px;

	display: flex;
	position: relative;
	align-items: center;
}

.moxxie-contact-cta-content {
	width: 100%;
	max-width: 650px;

	position: relative;

	z-index: 2;
}

.moxxie-contact-cta h2 {
	margin: 0 0 20px;

	font-size: 2.375em;
	font-variant: normal;
	font-weight: 700;
	line-height: 1.08;
	letter-spacing: -.04em;
	color: var(--mox-primary-dark);
}

.moxxie-contact-cta-description {
	max-width: 520px;

	margin: 0 0 28px;

	font-size: 1em;
	line-height: 1.7;
	color: var(--mox-dark-75);
}

.moxxie-contact-cta-action {
	width: 100%;

	margin-top: 28px;

	position: relative;

	z-index: 2;
}

.moxxie-contact-cta-twist {
	width: 46%;
	height: 115%;

	display: none;
	position: absolute;
	top: -8%;
	right: -22%;

	z-index: 1;
	pointer-events: none;
}

.moxxie-contact-cta-twist img {
	width: 100%;
	height: 100%;

	object-fit: contain;
	object-position: center;
}

.project-detail-cta.moxxie-contact-cta {
	overflow: hidden;
}

.project-detail-cta > div {
	position: relative;

	z-index: 2;
}

/***********************************************************************************
*	Sitemap
***********************************************************************************/
.wsp-posts-list,
.wsp-posts-title,
.wsp-testimonials-list,
.wsp-testimonials-title{
	display: none;
}

.wsp-container ul ul {
	margin-left: 25px;
}

.wsp-projects-title {
	margin-top: 50px;
}

/***********************************************************************************
* Footer
***********************************************************************************/
#footer-wrapper {
	width: 100%;

	margin-top: 56px;

	background: var(--mox-white);

	border-top: 3px solid var(--mox-primary);

	flex-shrink: 0;
}

#footer {
	width: 100%;

	padding: 54px 0 24px;

	color: var(--mox-primary-dark);
}

#footer .footer-main {
	display: grid;
	column-gap: 32px;
	row-gap: 24px;
	grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
}

#footer .footer-main::before {
	height: 1px;

	background: var(--mox-footer-ink-15);

	display: block;
	grid-column: 1 / -1;
	grid-row: 2;

	content: "";
}

#footer .footer-main.footer-main--no-socials {
	grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
}

#footer .footer-column {
	min-width: 0;
}

#footer .footer-brand-column {
	display: flex;
	align-items: flex-start;
	grid-column: 1;
	grid-row: 1;
}

#footer .footer-contact {
	grid-column: 2;
	grid-row: 1;
}

#footer .footer-links {
	grid-column: 1;
	grid-row: 3;
}

#footer .footer-socials {
	grid-column: 2;
	grid-row: 3;
}

#footer .footer-main.footer-main--no-socials .footer-links {
	grid-column: 1 / -1;
}

#footer .footer-logo {
	width: 180px;
	max-width: 100%;

	display: block;
}

#footer .footer-logo img {
	width: 100%;
	height: auto;

	display: block;
}

#footer .footer-column h4 {
	margin: 0 0 18px;

	font-size: .82rem;
	line-height: 1.2;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--mox-primary);
}

#footer .footer-column > a,
#footer .footer-column > p {
	margin: 0 0 9px;
	padding: 0;

	line-height: 1.55;
	color: var(--mox-primary-dark);

	display: flex;
}

#footer a {
	color: var(--mox-primary-dark);

	transition: color .2s ease, border-color .2s ease, transform .2s ease;
}

#footer a:is(:hover, :focus-visible) {
	text-decoration: none;
	color: var(--mox-primary);
}

#footer .footer-contact-item,
#footer .footer-links > a {
	font-family: "LatoLight", "Lato", Verdana, sans-serif;
}

#footer .footer-contact-item {
	align-items: flex-start;
	gap: 18px;
}

#footer .footer-contact-icon {
	width: 22px;
	height: 22px;

	margin-top: 2px;

	color: var(--mox-primary);

	flex: 0 0 22px;
}

#footer .footer-contact-icon svg {
	width: 22px;
	height: 22px;

	display: block;

	fill: none;
	stroke: currentColor;
	stroke-width: 1.7;
	stroke-linecap: round;
	stroke-linejoin: round;
}

#footer .footer-contact-item > span:last-child {
	min-width: 0;
}

#footer .footer-links > a {
	display: block;
}

#footer .footer-social-links {
	max-width: 190px;

	display: grid;
	gap: 10px;
	grid-template-columns: repeat(auto-fit, 40px);
}

#footer .footer-social-links a {
	width: 40px;
	height: 40px;

	font-size: 1rem;

	border: 1px solid var(--mox-footer-ink-20);
	border-radius: 50%;

	display: inline-flex;
	align-items: center;
	justify-content: center;
}

#footer .footer-social-links a.fa-tiktok::before {
	font-family: "FAwesome-brands";
	content: "\e07b";
}

#footer .footer-social-links a:is(:hover, :focus-visible) {
	border-color: var(--mox-primary);

	transform: translateY(-2px);
}

#footer .footer-bottom {
	width: 100%;

	margin-top: 48px;
	padding-top: 22px;

	font-size: .78rem;
	text-align: center;
	color: var(--mox-footer-ink-60);

	border-top: 1px solid var(--mox-footer-ink-15);

	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 8px 22px;
}

/***********************************************************************************
*   Moxxie title block
***********************************************************************************/
.moxxie-title-block {
	width: 100%;
	min-height: 360px;

	padding: 0 20px 55px 20px;

	display: flex;
	position: relative;
	align-items: center;

	overflow: hidden;
}

.moxxie-title-block-content {
	width: 100%;

	position: relative;

	z-index: 2;
}

.moxxie-title-block h1 {
	margin: 0px;

	font-size: 3.55em;
	font-variant: normal;
	font-weight: 700;
	line-height: 0.95em;
	letter-spacing: -0.04em;
	color: var(--mox-primary-dark);
}

.moxxie-title-tagline {
	margin: 18px 0px 0px 0px;

	font-size: 1.2em;
	font-weight: 600;
	line-height: 1.35em;
	color: var(--mox-primary);
}

.moxxie-title-description {
	max-width: 620px;

	margin-top: 18px;

	font-size: 1em;
	line-height: 1.7em;
	color: var(--mox-dark-75);
}

.moxxie-title-description p {
	margin: 0px;
}

.moxxie-title-twist {
	display: none;
}

.moxxie-title-block .moxxie-title-twist {
	pointer-events: none;
}

/***********************************************************************************
* Gutenberg / Moxxie Blocks
***********************************************************************************/
.moxxie-site .wp-block-moxxie-counter {
	--moxxie-bg: transparent;
	--moxxie-text: var(--mox-primary-dark);
	--moxxie-border: var(--mox-primary-dark-15);
	--moxxie-accent: var(--mox-primary);

	padding: 24px 16px;

	text-align: center;

	border: 0;
	border-bottom: 1px solid var(--moxxie-border);
	border-radius: 0;

	box-shadow: none;
}

.moxxie-site .wp-block-moxxie-counter .moxxie-counter__number {
	margin: 0 0 8px;

	font-family: "Lato", Verdana, sans-serif;
	font-size: 3.5em;
	font-weight: 700;
	line-height: .95;
	letter-spacing: -.045em;
}

.moxxie-site .wp-block-moxxie-counter > :last-child:not(.moxxie-counter__number) {
	margin: 0;

	font-size: .95rem;
	line-height: 1.4;
}

.wp-block-separator {
	width: min(400px, 80%);
	height: 3px;

	margin: 50px auto;

	background: var(--mox-primary);

	border: 0;
}

.moxxie-site .horizontal-line,
.moxxie-site .wp-block-separator,
.moxxie-site hr.wp-block-separator {
	width: 100%;
	max-width: var(--mox-container);
	height: 1px;

	margin: 48px auto;
	padding: 0;

	background: transparent;

	border: 0;
	border-top: 1px solid var(--mox-primary-dark-15);

	float: none;
	clear: both;

	opacity: 1;
}

.moxxie-site .wp-block-separator.is-style-wide,
.moxxie-site hr.wp-block-separator.is-style-wide {
	max-width: 1200px;
}

.moxxie-site .wp-block-separator.is-style-dots,
.moxxie-site hr.wp-block-separator.is-style-dots {
	text-align: center;

	border: 0;
}

.moxxie-site .wp-block-separator.is-style-dots::before,
.moxxie-site hr.wp-block-separator.is-style-dots::before {
	font-size: 18px;
	letter-spacing: .35em;
	color: var(--mox-primary);

	content: "•••";
}

#page .wp-block-columns .wp-block-column > .wp-block-image,
#page .wp-block-columns .wp-block-column > figure.wp-block-image {
	width: 100%;
	max-width: none;

	margin-inline: 0;
}

#page .wp-block-columns .wp-block-column > .wp-block-image img,
#page .wp-block-columns .wp-block-column > figure.wp-block-image img {
	width: 100%;
	max-width: none;
	height: auto;

	display: block;
}

/***********************************************************************************
* 404
***********************************************************************************/
.moxxie-404-page {
	background: var(--mox-white);
}

.moxxie-404 {
	width: 100%;

	overflow: hidden;
}

.moxxie-404-shell {
	min-height: 620px;

	padding: 70px 0 80px;

	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 52px;
}

.moxxie-404-copy {
	position: relative;

	z-index: 2;
}

.moxxie-404-eyebrow {
	margin-bottom: 18px;

	font-weight: 600;
}

.moxxie-404 h1 {
	max-width: 720px;

	margin: 0;

	font-size: 3.1em;
	font-variant: normal;
	line-height: .98;
	letter-spacing: -.045em;
	text-transform: none;
	color: var(--mox-primary-dark);
}

.moxxie-404-intro {
	max-width: 640px;

	margin: 24px 0 0;

	font-size: 1.15em;
	line-height: 1.6;
	color: var(--mox-dark-75);
}

.moxxie-404-actions {
	margin-top: 30px;

	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	gap: 14px;
}

.moxxie-404-action {
	min-height: 54px;

	padding-inline: 22px;
}

.moxxie-404-action span {
	min-width: 1em;

	font-size: 1.08em;
	line-height: 1;

	display: inline-flex;
	align-items: center;
	justify-content: center;

	transition: transform .2s ease;
}

.moxxie-404-action:is(:hover, :focus-visible) span {
	transform: translateX(3px);
}

.moxxie-404-art {
	width: min(100%, 430px);

	margin: 0 auto;

	text-align: center;

	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 18px;
}

.moxxie-404-mark {
	font-family: "Lato";
	font-size: clamp(7rem, 29vw, 11rem);
	font-weight: 700;
	line-height: .82;
	letter-spacing: -.08em;
	color: var(--mox-primary-dark);

	display: inline-flex;
	align-items: baseline;
	justify-content: center;
	gap: .02em;
}

.moxxie-404-digit,
.moxxie-404-zero {
	display: inline-block;
}

.moxxie-404-zero-wrap {
	display: inline-block;
	position: relative;
}

.moxxie-404-zero {
	color: var(--mox-primary);

	transform: rotate(-4deg) translateY(.03em);
	transform-origin: 50% 55%;
}

.moxxie-404-twist {
	font-family: "Lato";
	font-size: .085em;
	font-weight: 700;
	line-height: 1;
	letter-spacing: .16em;
	text-transform: uppercase;
	white-space: nowrap;
	color: var(--mox-primary);

	position: absolute;
	bottom: -1.65em;
	left: 50%;

	transform: translateX(-50%) rotate(-4deg);
}

.moxxie-404-mini {
	margin: 10px 0 0;

	font-size: .95em;
	line-height: 1.5;
	color: var(--mox-dark-75);
}

/***********************************************************************************
* Responsive desktop layout
***********************************************************************************/
/***********************************************************************************
* Desktop layout — 960px and wider
***********************************************************************************/
