/*
Theme Name: Forge Athletic Studio
Description: A custom block theme scaffolded by Studio Code.
Requires at least: 6.7
Tested up to: 6.9
Requires PHP: 7.2
Version: 0.1.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: forge
Tags: full-site-editing, block-patterns, block-styles, wide-blocks, accessibility-ready, style-variations
*/

/* WordPress inserts margin-block-start: var(--wp--style--block-gap) between the
   template's top-level sections (header part, main, footer part) — a gap that
   exists even when no markup asks for it. Zero it so sections butt edge-to-edge
   and own their vertical rhythm via padding; this does not affect block gaps
   inside nested layouts. */
.wp-site-blocks > * + * {
	margin-block-start: 0;
}

/* === tokens === */
:root {
	--fx-black: var( --wp--preset--color--base );
	--fx-surface: var( --wp--preset--color--surface );
	--fx-surface-2: var( --wp--preset--color--surface-2 );
	--fx-surface-3: var( --wp--preset--color--surface-3 );
	--fx-line: var( --wp--preset--color--line );
	--fx-bone: var( --wp--preset--color--contrast );
	--fx-ash: var( --wp--preset--color--muted );
	--fx-accent: var( --wp--preset--color--accent );
	--fx-ember: var( --wp--preset--color--accent-deep );
	--fx-silver: var( --wp--preset--color--silver );
	--fx-display: var( --wp--preset--font-family--display );
	--fx-heading: var( --wp--preset--font-family--heading );
	--fx-body: var( --wp--preset--font-family--body );
	--fx-mono: var( --wp--preset--font-family--mono );
	--fx-edge: clamp( 1.25rem, 4.4vw, 5.5rem );
	--fx-hair: 1px solid var( --wp--preset--color--line );
	--fx-y: clamp( 4.5rem, 9vw, 8.5rem );
	--fx-ease: cubic-bezier( .2, .7, .2, 1 );
}

/* === base === */
html {
	scroll-behavior: smooth;
}

body {
	background-color: var( --fx-black );
	color: var( --fx-bone );
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
	overflow-x: hidden;
}

::selection {
	background: var( --fx-accent );
	color: var( --fx-black );
}

.wp-site-blocks {
	overflow-x: clip;
}

p + p {
	margin-block-start: 1em;
}

/* === grain === */
body::after {
	content: "";
	position: fixed;
	inset: 0;
	z-index: 200;
	pointer-events: none;
	opacity: .06;
	mix-blend-mode: screen;
	background-image: url( "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E" );
	background-repeat: repeat;
	background-size: 160px 160px;
	background-position: 0 var( --fx-grain-y, 0px );
}

/* === typography === */
.fx-display {
	font-family: var( --fx-display );
	font-size: clamp( 2.4rem, 1rem + 7.6vw, 8.5rem );
	line-height: .84;
	letter-spacing: -.035em;
	text-transform: uppercase;
	margin: 0;
}

.fx-display--sm {
	font-size: clamp( 2.5rem, 1.1rem + 5.6vw, 5.5rem );
}

.fx-display--md {
	font-size: clamp( 2rem, 1.1rem + 3.4vw, 3.5rem );
	line-height: .9;
}

.fx-outline {
	color: transparent;
	-webkit-text-stroke: 1.4px var( --fx-silver );
	opacity: .6;
}

.fx-kicker {
	display: flex;
	align-items: center;
	gap: .8rem;
	margin: 0;
	font-family: var( --fx-mono );
	font-size: .7rem;
	letter-spacing: .3em;
	text-transform: uppercase;
	color: var( --fx-accent );
}

.fx-kicker::before {
	content: "";
	display: block;
	width: 34px;
	height: 2px;
	background: var( --fx-accent );
}

.fx-kicker--plain::before {
	display: none;
}

.fx-index {
	font-family: var( --fx-mono );
	font-size: .72rem;
	letter-spacing: .22em;
	text-transform: uppercase;
	color: var( --fx-ash );
	margin: 0;
}

.fx-lede {
	max-width: 48ch;
	font-size: clamp( 1.05rem, 1rem + .4vw, 1.3rem );
	color: var( --fx-silver );
	margin: 0;
}

.fx-small {
	font-size: .86rem;
	color: var( --fx-ash );
}

.fx-mono {
	font-family: var( --fx-mono );
	font-size: .7rem;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var( --fx-ash );
	margin: 0;
}

.fx-accent-text {
	color: var( --fx-accent );
}

.fx-fact {
	font-family: var( --fx-mono );
	font-size: clamp( 1.6rem, 1.2rem + 1.2vw, 2.4rem );
	letter-spacing: -.02em;
	color: var( --fx-bone );
	margin: 0;
	line-height: 1;
}

.fx-fact span {
	color: var( --fx-accent );
}

/* === buttons === */
.wp-block-button__link {
	font-family: var( --fx-heading );
	border-radius: 0;
}

.fx-btn-ghost .wp-element-button {
	background: transparent;
	color: var( --fx-bone );
	box-shadow: inset 0 0 0 1px var( --fx-silver );
}

.fx-btn-ghost .wp-element-button:hover {
	background: var( --fx-bone );
	color: var( --fx-black );
}

.fx-btn-xl .wp-element-button {
	font-size: .95rem;
	padding: 1.2em 2.6em;
	letter-spacing: .18em;
}

.fx-btn-quiet .wp-element-button {
	background: transparent;
	color: var( --fx-silver );
	padding: 0;
	letter-spacing: .2em;
}

.fx-btn-quiet .wp-element-button:hover {
	background: transparent;
	color: var( --fx-accent );
}

/* === header === */
.fx-header {
	position: sticky;
	top: 0;
	z-index: 90;
	background: rgba( 0, 0, 0, .84 );
	backdrop-filter: blur( 14px ) saturate( 130% );
	border-bottom: var( --fx-hair );
}

.fx-header.is-scrolled {
	background: rgba( 0, 0, 0, .97 );
}

.fx-utility {
	border-bottom: 1px solid var( --fx-line );
}

.fx-utility p {
	margin: 0;
	font-family: var( --fx-mono );
	font-size: .64rem;
	letter-spacing: .22em;
	text-transform: uppercase;
	color: var( --fx-ash );
}

.fx-utility .fx-live {
	color: var( --fx-accent );
}

.fx-utility .fx-live span {
	display: inline-block;
	width: 6px;
	height: 6px;
	margin-right: .55rem;
	background: var( --fx-accent );
	border-radius: 50%;
	animation: fx-blink 2.4s infinite;
}

@keyframes fx-blink {
	0%, 100% { opacity: 1; }
	50% { opacity: .25; }
}

.fx-header.is-scrolled .fx-utility {
	display: none;
}

.fx-bar {
	padding: .75rem var( --fx-edge );
}

.fx-brand .wp-block-site-title {
	margin: 0;
	line-height: 1;
}

.fx-brand .wp-block-site-title a {
	font-family: var( --fx-display );
	font-size: clamp( 1.15rem, 1rem + .7vw, 1.7rem );
	letter-spacing: -.02em;
	text-transform: uppercase;
	color: var( --fx-bone );
	text-decoration: none;
}

.fx-brand .wp-block-site-title a:hover {
	color: var( --fx-accent );
}

.fx-nav .wp-block-navigation__container {
	gap: clamp( .9rem, 1.9vw, 2rem );
}

.fx-nav .wp-block-navigation-item__content {
	position: relative;
	padding-bottom: 3px;
	font-family: var( --fx-heading );
	font-weight: 700;
	font-size: .74rem;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var( --fx-silver );
	text-decoration: none;
}

.fx-nav .wp-block-navigation-item__content::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 0;
	height: 2px;
	background: var( --fx-accent );
	transition: width .25s var( --fx-ease );
}

.fx-nav .wp-block-navigation-item__content:hover {
	color: var( --fx-bone );
}

.fx-nav .wp-block-navigation-item__content:hover::after {
	width: 100%;
}

.fx-nav .wp-block-navigation__responsive-container.is-menu-open {
	background: var( --fx-black );
}

/* === hero === */
.fx-hero {
	position: relative;
	isolation: isolate;
	min-height: min( 90svh, 56rem );
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	overflow: hidden;
	background: var( --fx-black );
	padding-top: clamp( 3rem, 8vw, 6rem );
}

.fx-reel {
	position: absolute;
	inset: 0;
	z-index: 0;
}

.fx-reel__frame {
	position: absolute;
	inset: 0;
	margin: 0;
	opacity: 0;
	animation: fx-reel 24s linear infinite;
	animation-play-state: paused;
}

.fx-reel__frame:first-child {
	opacity: 1;
}

.fx-reel.is-live .fx-reel__frame {
	animation-play-state: running;
}

.fx-reel__frame:nth-child( 2 ) {
	animation-delay: 8s;
}

.fx-reel__frame:nth-child( 3 ) {
	animation-delay: 16s;
}

.fx-reel__frame img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	filter: grayscale( 1 ) contrast( 1.3 ) brightness( .46 );
}

.fx-reel.is-live .fx-reel__frame img {
	animation: fx-drift 32s ease-in-out infinite alternate;
}

@keyframes fx-reel {
	0% { opacity: 1; }
	28% { opacity: 1; }
	35% { opacity: 0; }
	94% { opacity: 0; }
	100% { opacity: 1; }
}

@keyframes fx-drift {
	from { transform: scale( 1.04 ) translate3d( 0, 0, 0 ); }
	to { transform: scale( 1.12 ) translate3d( -1.5%, -1.5%, 0 ); }
}

.fx-reel::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient( 180deg, rgba( 0, 0, 0, .72 ) 0%, rgba( 0, 0, 0, .12 ) 38%, rgba( 0, 0, 0, .55 ) 68%, rgba( 0, 0, 0, .96 ) 100% );
}

.fx-hero__inner {
	position: relative;
	z-index: 2;
	width: 100%;
	padding-bottom: clamp( 1.5rem, 4vw, 3rem );
}

.fx-hero__inner h1 {
	margin: .7rem 0 1.4rem;
	text-shadow: 0 22px 60px rgba( 0, 0, 0, .7 );
}

.fx-hero__meta {
	display: flex;
	flex-wrap: wrap;
	gap: .5rem 1.6rem;
	margin-top: 1.6rem;
}

.fx-hero__meta p {
	margin: 0;
}

.fx-hero__facts {
	position: relative;
	z-index: 2;
	border-top: 1px solid rgba( 255, 255, 255, .16 );
	background: linear-gradient( 180deg, rgba( 0, 0, 0, .3 ), rgba( 0, 0, 0, .8 ) );
}

.fx-hero__facts .wp-block-column {
	border-left: 1px solid rgba( 255, 255, 255, .14 );
	padding: clamp( .9rem, 2vw, 1.5rem ) clamp( 1rem, 2vw, 2rem );
}

.fx-hero__facts .wp-block-column:first-child {
	border-left: 0;
	padding-left: 0;
}

.fx-reel__toggle .wp-element-button {
	display: inline-flex;
	align-items: center;
	gap: .7rem;
	padding: .8rem 1.25rem;
	background: rgba( 0, 0, 0, .5 );
	border: 1px solid var( --fx-silver );
	color: var( --fx-bone );
	font-family: var( --fx-heading );
	font-weight: 800;
	font-size: .7rem;
	letter-spacing: .2em;
	text-transform: uppercase;
	transition: border-color .25s var( --fx-ease ), color .25s var( --fx-ease );
}

.fx-reel__toggle .wp-element-button::before {
	content: "";
	display: block;
	width: 8px;
	height: 8px;
	background: currentColor;
}

.fx-reel__toggle .wp-element-button:hover,
.fx-reel__toggle .wp-element-button.is-live {
	border-color: var( --fx-accent );
	color: var( --fx-accent );
	background: rgba( 0, 0, 0, .5 );
}

.fx-reel__toggle .wp-element-button.is-live::before {
	background: var( --fx-accent );
	border-radius: 50%;
	animation: fx-blink 1.2s infinite;
}

/* === ticker === */
.fx-ticker {
	overflow: hidden;
	padding: .75rem var( --fx-edge );
	background: var( --fx-black );
	border-block: var( --fx-hair );
}

.fx-ticker p {
	margin: 0;
	font-family: var( --fx-mono );
	font-size: .7rem;
	letter-spacing: .34em;
	text-transform: uppercase;
	color: var( --fx-silver );
	white-space: nowrap;
	animation: fx-marquee 20s ease-in-out infinite alternate;
}

.fx-ticker .fx-tick-mark {
	color: var( --fx-accent );
}

@keyframes fx-marquee {
	from { transform: translateX( 0 ); }
	to { transform: translateX( -6% ); }
}

/* === sections === */
.fx-section {
	position: relative;
	padding: var( --fx-y ) var( --fx-edge );
	background: var( --fx-black );
}

.fx-section--surface {
	background: var( --fx-surface );
	border-block: var( --fx-hair );
}

.fx-section--graphite {
	background: var( --fx-surface-2 );
	border-block: var( --fx-hair );
}

.fx-section--tight {
	padding-block: clamp( 3rem, 6vw, 5rem );
}

.fx-section__head {
	display: grid;
	grid-template-columns: minmax( 0, .8fr ) minmax( 0, 1.6fr );
	gap: clamp( 1.25rem, 4vw, 4rem );
	align-items: end;
	margin-bottom: clamp( 2.25rem, 5vw, 4rem );
	padding-bottom: clamp( 1.25rem, 3vw, 2.25rem );
	border-bottom: var( --fx-hair );
}

.fx-section__head h2 {
	margin: .8rem 0 0;
}

.fx-section__head p {
	margin: 0;
}

.fx-grid-2 {
	display: grid;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );
	gap: clamp( 1.5rem, 4vw, 3.5rem );
	align-items: center;
}

.fx-media {
	position: relative;
	overflow: hidden;
	border: var( --fx-hair );
	background: var( --fx-surface-2 );
}

.fx-media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	filter: grayscale( 1 ) contrast( 1.24 ) brightness( .88 );
	transition: filter .7s var( --fx-ease ), transform 1.4s var( --fx-ease );
}

.fx-media:hover img {
	filter: grayscale( .15 ) contrast( 1.18 ) brightness( 1 );
	transform: scale( 1.035 );
}

.fx-media--tall {
	aspect-ratio: 3 / 4;
}

.fx-media--wide {
	aspect-ratio: 16 / 10;
}

.fx-media--square {
	aspect-ratio: 1 / 1;
}

.fx-corner {
	position: relative;
}

.fx-corner::before,
.fx-corner::after {
	content: "";
	position: absolute;
	width: 22px;
	height: 22px;
	z-index: 3;
	pointer-events: none;
}

.fx-corner::before {
	top: 10px;
	left: 10px;
	border-top: 2px solid var( --fx-accent );
	border-left: 2px solid var( --fx-accent );
}

.fx-corner::after {
	bottom: 10px;
	right: 10px;
	border-bottom: 2px solid var( --fx-accent );
	border-right: 2px solid var( --fx-accent );
}

.fx-list-check {
	list-style: none;
	padding: 0;
	margin: 0;
}

.fx-list-check li {
	position: relative;
	padding-left: 1.9rem;
	margin-bottom: .7rem;
	color: var( --fx-silver );
}

.fx-list-check li::before {
	content: "";
	position: absolute;
	left: 0;
	top: .55em;
	width: 12px;
	height: 2px;
	background: var( --fx-accent );
}

.fx-motion .fx-reveal {
	opacity: 0;
	transform: translateY( 30px );
	transition: opacity .85s var( --fx-ease ), transform .85s var( --fx-ease );
}

.fx-motion .fx-reveal.is-in {
	opacity: 1;
	transform: none;
}

/* === goals === */
.fx-goals {
	display: grid;
	grid-template-columns: repeat( 3, minmax( 0, 1fr ) );
	gap: 1px;
	background: var( --fx-line );
	border: var( --fx-hair );
}

.fx-goal {
	display: flex;
	flex-direction: column;
	gap: 1rem;
	padding: clamp( 1.5rem, 3vw, 2.5rem );
	background: var( --fx-surface );
	transition: background-color .3s var( --fx-ease );
}

.fx-goal:hover {
	background: var( --fx-surface-2 );
}

.fx-goal--feature {
	background: var( --fx-black );
}

.fx-goal--feature:hover {
	background: var( --fx-surface );
}

.fx-goal__num {
	margin: 0;
	font-family: var( --fx-mono );
	font-size: .7rem;
	letter-spacing: .24em;
	text-transform: uppercase;
	color: var( --fx-accent );
}

.fx-goal h3 {
	margin: 0;
	font-size: clamp( 1.5rem, 1.2rem + 1vw, 2.1rem );
}

.fx-goal > p {
	margin: 0;
}

.fx-goal__foot {
	margin-top: auto;
	padding-top: 1.25rem;
	border-top: var( --fx-hair );
}

.fx-goal__foot p {
	margin: 0;
}

.fx-goal__meter {
	display: flex;
	gap: 3px;
	margin-bottom: .85rem;
}

.fx-goal__meter span {
	display: block;
	height: 4px;
	flex: 1;
	background: var( --fx-line );
}

.fx-goal__meter span.is-on {
	background: var( --fx-accent );
}

.fx-sessions {
	display: grid;
	grid-template-columns: repeat( 4, minmax( 0, 1fr ) );
	gap: 1px;
	background: var( --fx-line );
	border: var( --fx-hair );
}

.fx-session {
	padding: clamp( 1.1rem, 2vw, 1.6rem );
	background: var( --fx-surface-2 );
}

.fx-session p {
	margin: 0;
}

.fx-session__name {
	font-family: var( --fx-heading );
	font-weight: 800;
	font-size: 1rem;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var( --fx-bone );
}

.fx-session__time {
	font-family: var( --fx-mono );
	font-size: .68rem;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var( --fx-accent );
}

/* === coaches === */
.fx-coach-grid {
	display: grid;
	grid-template-columns: repeat( 4, minmax( 0, 1fr ) );
	gap: clamp( 1rem, 2vw, 1.5rem );
}

.fx-coach {
	perspective: 1600px;
}

.fx-flip {
	position: relative;
	aspect-ratio: 3 / 4;
	transform-style: preserve-3d;
	transition: transform .8s var( --fx-ease );
	outline-offset: 4px;
}

.fx-coach:hover .fx-flip,
.fx-flip.is-flipped {
	transform: rotateY( 180deg );
}

.fx-flip__face {
	position: absolute;
	inset: 0;
	overflow: hidden;
	backface-visibility: hidden;
	border: var( --fx-hair );
}

.fx-flip__front {
	background: var( --fx-surface-2 );
}

.fx-flip__front .wp-block-image {
	position: absolute;
	inset: 0;
	margin: 0;
	height: 100%;
}

.fx-flip__front img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	filter: grayscale( 1 ) contrast( 1.32 ) brightness( .72 );
}

.fx-flip__front::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient( 180deg, rgba( 0, 0, 0, .06 ) 30%, rgba( 0, 0, 0, .55 ) 62%, rgba( 0, 0, 0, .94 ) 100% );
}

.fx-flip__tag {
	position: absolute;
	left: clamp( .9rem, 1.6vw, 1.35rem );
	right: clamp( .9rem, 1.6vw, 1.35rem );
	bottom: clamp( .9rem, 1.6vw, 1.35rem );
	z-index: 2;
}

.fx-flip__tag h3 {
	margin: 0;
	font-size: clamp( 1.15rem, 1rem + .5vw, 1.45rem );
}

.fx-flip__tag p {
	margin: .35rem 0 0;
}

.fx-flip__hint {
	position: absolute;
	top: 12px;
	right: 12px;
	z-index: 2;
	padding: .3rem .55rem;
	background: var( --fx-accent );
	color: var( --fx-black );
	font-family: var( --fx-mono );
	font-size: .6rem;
	letter-spacing: .16em;
	text-transform: uppercase;
}

.fx-flip__back {
	display: flex;
	flex-direction: column;
	gap: .8rem;
	padding: clamp( 1.1rem, 2vw, 1.6rem );
	background: var( --fx-surface-2 );
	border-top: 3px solid var( --fx-accent );
	transform: rotateY( 180deg );
}

.fx-flip__back h3 {
	margin: 0;
	font-size: 1.1rem;
}

.fx-flip__back p {
	margin: 0;
}

.fx-flip__certs {
	list-style: none;
	margin: 0;
	padding: 0;
}

.fx-flip__certs li {
	position: relative;
	padding-left: 1.5rem;
	padding-block: .42rem;
	border-top: var( --fx-hair );
	font-size: .82rem;
	color: var( --fx-silver );
	letter-spacing: .01em;
}

.fx-flip__certs li:first-child {
	border-top: 0;
}

.fx-flip__certs li::before {
	content: "";
	position: absolute;
	left: 0;
	top: .95em;
	width: 9px;
	height: 2px;
	background: var( --fx-accent );
}

/* === stories === */
.fx-carousel {
	position: relative;
}

.fx-carousel__track {
	display: flex;
	gap: clamp( 1rem, 2vw, 1.5rem );
	overflow-x: auto;
	overflow-y: hidden;
	scroll-snap-type: x mandatory;
	padding-bottom: 1rem;
	scrollbar-width: none;
	-ms-overflow-style: none;
}

.fx-carousel__track::-webkit-scrollbar {
	display: none;
}

.fx-carousel__track > * {
	flex: 0 0 clamp( 17rem, 30vw, 24rem );
	scroll-snap-align: start;
}

.fx-story {
	display: flex;
	flex-direction: column;
	background: var( --fx-surface );
	border: var( --fx-hair );
}

.fx-story__media {
	position: relative;
	aspect-ratio: 4 / 3;
	overflow: hidden;
}

.fx-story__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	filter: grayscale( 1 ) contrast( 1.26 ) brightness( .78 );
	transition: filter .6s var( --fx-ease );
}

.fx-story:hover .fx-story__media img {
	filter: grayscale( .1 ) contrast( 1.16 ) brightness( .95 );
}

.fx-story__media::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient( 180deg, rgba( 0, 0, 0, 0 ) 45%, rgba( 0, 0, 0, .8 ) );
}

.fx-story__body {
	display: flex;
	flex-direction: column;
	gap: .9rem;
	flex: 1;
	padding: clamp( 1.15rem, 2vw, 1.6rem );
}

.fx-story blockquote {
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 1.05rem;
	line-height: 1.5;
	color: var( --fx-bone );
}

.fx-story blockquote p {
	margin: 0;
}

.fx-story cite {
	display: block;
	margin-top: .7rem;
	font-style: normal;
	font-family: var( --fx-mono );
	font-size: .68rem;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var( --fx-accent );
}

.fx-story__stat {
	display: flex;
	gap: 1.5rem;
	margin-top: auto;
	padding-top: 1rem;
	border-top: var( --fx-hair );
}

.fx-story__stat p {
	margin: 0;
}

.fx-carousel__nav {
	margin-top: 1.25rem;
}

.fx-carousel__btn .wp-element-button {
	display: grid;
	place-items: center;
	width: 58px;
	height: 46px;
	padding: 0;
	background: transparent;
	border: 1px solid var( --fx-line );
	color: var( --fx-silver );
	font-family: var( --fx-mono );
	font-size: .68rem;
	letter-spacing: .12em;
	transition: border-color .25s var( --fx-ease ), color .25s var( --fx-ease );
}

.fx-carousel__btn .wp-element-button:hover {
	border-color: var( --fx-accent );
	color: var( --fx-accent );
	background: transparent;
}

.fx-carousel__btn.is-disabled .wp-element-button {
	opacity: .3;
	pointer-events: none;
}

/* === cta === */
.fx-cta {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	padding: clamp( 3.5rem, 8vw, 7rem ) var( --fx-edge );
	background: var( --fx-black );
	border-top: 2px solid var( --fx-accent );
}

.fx-cta__bg {
	position: absolute;
	inset: 0;
	z-index: 0;
}

.fx-cta__bg img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	filter: grayscale( 1 ) contrast( 1.25 ) brightness( .34 );
}

.fx-cta__bg::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient( 90deg, rgba( 0, 0, 0, .97 ) 0%, rgba( 0, 0, 0, .72 ) 55%, rgba( 0, 0, 0, .5 ) 100% );
}

.fx-cta__inner {
	position: relative;
	z-index: 2;
}

.fx-cta__inner h2 {
	margin: 1rem 0 1.5rem;
}

.fx-cta__steps {
	display: grid;
	grid-template-columns: repeat( 3, minmax( 0, 1fr ) );
	gap: 1px;
	margin-top: clamp( 2rem, 4vw, 3rem );
	background: rgba( 255, 255, 255, .14 );
	border: 1px solid rgba( 255, 255, 255, .14 );
}

.fx-cta__step {
	padding: clamp( 1.1rem, 2vw, 1.6rem );
	background: rgba( 0, 0, 0, .62 );
}

.fx-cta__step p {
	margin: 0;
}

.fx-cta__step .fx-goal__num {
	margin-bottom: .6rem;
}

/* === footer === */
.fx-footer {
	padding: clamp( 3rem, 6vw, 5rem ) var( --fx-edge ) 2rem;
	background: var( --fx-surface );
	border-top: var( --fx-hair );
}

.fx-footer__grid {
	display: grid;
	grid-template-columns: 1.5fr 1fr 1fr 1fr;
	gap: clamp( 1.5rem, 4vw, 3rem );
}

.fx-footer__grid h4 {
	margin: 0 0 1rem;
	font-family: var( --fx-mono );
	font-size: .68rem;
	font-weight: 400;
	letter-spacing: .24em;
	text-transform: uppercase;
	color: var( --fx-accent );
}

.fx-footer__grid p {
	margin: 0 0 .55rem;
	color: var( --fx-silver );
	font-size: .95rem;
}

.fx-footer__grid ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.fx-footer__grid li {
	margin-bottom: .5rem;
	font-size: .95rem;
	color: var( --fx-silver );
}

.fx-footer__grid a {
	color: var( --fx-silver );
	text-decoration: none;
}

.fx-footer__grid a:hover {
	color: var( --fx-accent );
}

.fx-footer__wordmark {
	margin: clamp( 2.5rem, 5vw, 4rem ) 0 0;
	font-family: var( --fx-display );
	font-size: clamp( 2.6rem, 10.5vw, 9.5rem );
	line-height: .88;
	letter-spacing: -.045em;
	text-transform: uppercase;
	color: transparent;
	-webkit-text-stroke: 1px var( --fx-line );
	overflow-wrap: break-word;
}

.fx-footer__legal {
	margin-top: clamp( 1.5rem, 3vw, 2.5rem );
	padding-top: 1.25rem;
	border-top: var( --fx-hair );
}

.fx-footer__legal p {
	margin: 0;
}

.fx-footer .wp-block-site-title a {
	font-family: var( --fx-display );
	font-size: clamp( 1.2rem, 1rem + .8vw, 1.7rem );
	text-transform: uppercase;
	letter-spacing: -.02em;
	color: var( --fx-bone );
	text-decoration: none;
}

/* === sticky === */
.fx-sticky {
	position: fixed;
	right: clamp( 1rem, 3vw, 2.25rem );
	bottom: clamp( 1rem, 3vw, 2.25rem );
	z-index: 120;
	display: flex;
	align-items: center;
	gap: .75rem;
	opacity: 0;
	transform: translateY( 18px );
	pointer-events: none;
	transition: opacity .35s var( --fx-ease ), transform .35s var( --fx-ease );
}

.fx-sticky.is-visible {
	opacity: 1;
	transform: none;
	pointer-events: auto;
}

.fx-sticky p {
	margin: 0;
}

.fx-sticky__note {
	padding: .55rem .8rem;
	background: rgba( 0, 0, 0, .8 );
	border: var( --fx-hair );
	backdrop-filter: blur( 8px );
}

.fx-sticky .wp-element-button {
	animation: fx-pulse 2.8s ease-out infinite;
}

@keyframes fx-pulse {
	0% { box-shadow: 0 0 0 0 rgba( 255, 74, 11, .5 ); }
	70% { box-shadow: 0 0 0 16px rgba( 255, 74, 11, 0 ); }
	100% { box-shadow: 0 0 0 0 rgba( 255, 74, 11, 0 ); }
}

/* === blog === */
.fx-entry {
	padding: clamp( 2.5rem, 6vw, 5rem ) var( --fx-edge );
}

.fx-entry h1 {
	margin: 0 0 1.5rem;
}

.fx-entry .wp-block-post-content a {
	color: var( --fx-accent );
	text-decoration: underline;
	text-underline-offset: 3px;
}

.fx-post {
	padding: clamp( 1.5rem, 3vw, 2.25rem ) 0;
	border-top: var( --fx-hair );
}

.fx-post h2 {
	margin: 0 0 .6rem;
	font-size: clamp( 1.4rem, 1.1rem + 1vw, 2.1rem );
}

.fx-post h2 a {
	text-decoration: none;
}

.fx-post__meta {
	margin: 0 0 .7rem;
	font-family: var( --fx-mono );
	font-size: .68rem;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var( --fx-ash );
}

.fx-pagination {
	display: flex;
	gap: 1rem;
	justify-content: space-between;
	margin-top: 2rem;
	padding-top: 1.5rem;
	border-top: var( --fx-hair );
	font-family: var( --fx-heading );
	font-weight: 800;
	font-size: .78rem;
	letter-spacing: .18em;
	text-transform: uppercase;
}

/* === responsive === */
@media ( max-width: 1024px ) {
	.fx-section__head {
		grid-template-columns: 1fr;
		align-items: start;
	}

	.fx-goals,
	.fx-sessions {
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) );
	}

	.fx-coach-grid {
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) );
	}

	.fx-footer__grid {
		grid-template-columns: 1fr 1fr;
	}

	.fx-cta__steps {
		grid-template-columns: 1fr;
	}
}

@media ( max-width: 700px ) {
	.fx-goals,
	.fx-sessions,
	.fx-coach-grid,
	.fx-grid-2,
	.fx-footer__grid {
		grid-template-columns: 1fr;
	}

	.fx-header .fx-utility,
	.fx-nav-cta.wp-block-button,
	.fx-brand-tag,
	.fx-sticky__note {
		display: none;
	}

	.fx-sticky .wp-block-buttons {
		margin: 0;
	}

	.fx-grid-2 > .fx-order-first {
		order: -1;
	}

	.fx-hero__facts .wp-block-column {
		border-left: 0;
		padding-left: 0;
		border-top: 1px solid rgba( 255, 255, 255, .14 );
	}

	.fx-ticker p {
		animation: none;
		white-space: normal;
	}

	body::after {
		opacity: .04;
	}

	.fx-footer__wordmark {
		-webkit-text-stroke-width: 1px;
	}
}

@media ( hover: none ) {
	.fx-coach:hover .fx-flip {
		transform: none;
	}
}

@media ( prefers-reduced-motion: reduce ) {
	html {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .001ms !important;
	}

	.fx-reel__frame {
		animation: none;
	}

	.fx-motion .fx-reveal {
		opacity: 1;
		transform: none;
	}
}

/* === layout utilities === */
.fx-utility {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: .35rem 1.5rem;
	padding: .45rem var( --fx-edge );
}

.fx-utility a {
	color: var( --fx-silver );
}

.fx-utility a:hover {
	color: var( --fx-accent );
}

.fx-nav {
	gap: clamp( 1rem, 2vw, 2rem );
}

.fx-nav .wp-block-navigation {
	flex: 0 1 auto;
}

.fx-nav-cta .wp-element-button {
	padding: .9em 1.5em;
	font-size: .72rem;
	letter-spacing: .16em;
}

.fx-footer__legal {
	align-items: center;
	gap: 1rem 2rem;
}

.fx-sticky__note p,
.fx-sticky .fx-mono {
	font-size: .62rem;
	color: var( --fx-silver );
}

.fx-hero__ctl {
	position: relative;
	z-index: 3;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 1rem;
	padding: .5rem var( --fx-edge ) 1.75rem;
}

.fx-hero__facts {
	padding-inline: var( --fx-edge );
}

.fx-hero__facts .wp-block-columns {
	margin: 0;
	align-items: stretch;
}

.fx-hero__facts .wp-block-column {
	display: flex;
	flex-direction: column;
	justify-content: center;
}

.fx-hero__facts .wp-block-column > * {
	margin-block: 0;
}

.fx-lede--wide {
	max-width: 64ch;
}

.fx-post-list {
	margin-top: 1.5rem;
}

.fx-quote {
	margin: 0;
	padding: clamp( 1.5rem, 3vw, 2.5rem ) 0 0 clamp( 1rem, 2vw, 1.75rem );
	border-left: 2px solid var( --fx-accent );
	border-top: 0;
}

.fx-quote p {
	margin: 0;
	font-family: var( --fx-heading );
	font-weight: 600;
	font-size: clamp( 1.15rem, 1rem + .8vw, 1.75rem );
	line-height: 1.25;
	text-transform: uppercase;
	letter-spacing: -.01em;
}

.fx-quote cite {
	display: block;
	margin-top: 1rem;
	font-style: normal;
	font-family: var( --fx-mono );
	font-size: .68rem;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var( --fx-accent );
}

.fx-log {
	border-top: var( --fx-hair );
	padding-top: 1.25rem;
	margin-top: clamp( 1.5rem, 3vw, 2.5rem );
}

.fx-figcap {
	margin: .75rem 0 0;
	font-family: var( --fx-mono );
	font-size: .64rem;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var( --fx-ash );
}

.fx-stat-row {
	display: grid;
	grid-template-columns: repeat( 4, minmax( 0, 1fr ) );
	gap: 1px;
	background: var( --fx-line );
	border: var( --fx-hair );
}

.fx-stat {
	padding: clamp( 1rem, 2vw, 1.5rem );
	background: var( --fx-surface-2 );
}

.fx-stat p {
	margin: 0;
}

@media ( max-width: 1024px ) {
	.fx-stat-row {
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) );
	}
}

@media ( max-width: 700px ) {
	.fx-stat-row {
		grid-template-columns: 1fr;
	}

	.fx-hero__ctl {
		padding-bottom: 1.25rem;
	}
}

/* === component fill === */
.fx-goal__meter {
	margin-bottom: .9rem;
}

.fx-meter {
	height: 5px;
	margin: 0;
	background-image: repeating-linear-gradient( 90deg, transparent 0 26px, var( --fx-gap, var( --fx-surface ) ) 26px 29px ), linear-gradient( 90deg, var( --fx-accent ) 0 var( --fx-fill, 80% ), var( --fx-line ) var( --fx-fill, 80% ) 100% );
}

.fx-meter-5 {
	--fx-fill: 100%;
}

.fx-meter-4 {
	--fx-fill: 79%;
}

.fx-meter-3 {
	--fx-fill: 58%;
}

.fx-goal--feature .fx-meter {
	--fx-gap: var( --fx-black );
}

.fx-cta__bg .wp-block-image {
	position: absolute;
	inset: 0;
	margin: 0;
}

.fx-story__media .wp-block-image {
	height: 100%;
	margin: 0;
}

.fx-story__stat > .wp-block-group > *:last-child {
	margin-bottom: 0;
}

.fx-coach {
	height: 100%;
}

.fx-locations {
	display: grid;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );
	gap: 1px;
	background: var( --fx-line );
	border: var( --fx-hair );
}

.fx-locations .fx-goal {
	background: var( --fx-surface );
}

@media ( max-width: 860px ) {
	.fx-locations {
		grid-template-columns: 1fr;
	}
}

/* === faq === */
.fx-faqs {
	margin-top: clamp( 2rem, 4vw, 3rem );
	border-top: var( --fx-hair );
}

.fx-faq {
	border-bottom: var( --fx-hair );
}

.fx-faq summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 1.15rem 0;
	cursor: pointer;
	list-style: none;
	font-family: var( --fx-heading );
	font-weight: 800;
	font-size: clamp( 1rem, .95rem + .3vw, 1.2rem );
	letter-spacing: -.01em;
	text-transform: uppercase;
	transition: color .2s var( --fx-ease );
}

.fx-faq summary::-webkit-details-marker {
	display: none;
}

.fx-faq summary::after {
	content: "+";
	font-family: var( --fx-mono );
	font-size: 1.2rem;
	color: var( --fx-accent );
}

.fx-faq[open] summary::after {
	content: "-";
}

.fx-faq summary:hover {
	color: var( --fx-accent );
}

.fx-faq p {
	max-width: 72ch;
	margin: 0 0 1.35rem;
	color: var( --fx-silver );
}

/* Containers that supply their own gap: neutralise WordPress's flow block-gap
   so grid and flex rows align from a shared baseline. */
.fx-goals > * + *,
.fx-sessions > * + *,
.fx-coach-grid > * + *,
.fx-locations > * + *,
.fx-stat-row > * + *,
.fx-cta__steps > * + *,
.fx-grid-2 > * + *,
.fx-carousel__track > * + *,
.fx-story__stat > * + *,
.fx-flip__back > * + *,
.fx-flip > * + *,
.fx-utility > * + *,
.fx-hero__meta > * + *,
.fx-footer__grid > * + *,
.fx-footer__legal > * + *,
.fx-nav > * + * {
	margin-block-start: 0;
}
