/*
Theme Name:   Pulsewick Strength (studio concept)
Theme URI:    https://tideframedigital.com/work/
Description:  Fictional strength and conditioning gym. A Tideframe Digital concept site built on GeneratePress. "After-dark kinetic": near-black, ultraviolet and acid aqua, condensed display type, scroll-driven motion.
Author:       Tideframe Digital
Template:     generatepress
Version:      1.0.0
Requires PHP: 8.1
Text Domain:  pulsewick-strength
License:      GPL-2.0-or-later
*/

/* ================================================================ 1. Tokens */
:root {
	color-scheme: dark;

	--pw-void: #07060b;
	--pw-night: #0f0d17;
	--pw-panel: #1a1626;
	--pw-line: #2c2740;
	--pw-edge: #4a4360;
	--pw-text: #f3f1fa;
	--pw-muted: #a39db8;
	--pw-violet: #7b3bff;
	--pw-violet-text: #b99aff;
	--pw-violet-deep: #3b1d8f;
	--pw-aqua: #2ef2e0;
	--pw-white: #fff;

	--pw-glow-v: 0 0 0 1px rgb(123 59 255 / .5), 0 18px 60px -12px rgb(123 59 255 / .55);
	--pw-glow-a: 0 0 0 1px rgb(46 242 224 / .55), 0 18px 60px -14px rgb(46 242 224 / .45);
	--pw-section: clamp(80px, 11vw, 168px);
	--pw-out: cubic-bezier(.16, 1, .3, 1);
	--pw-snap: cubic-bezier(.7, 0, .2, 1);
	--pw-r: 4px;
	--pw-r-l: 10px;
	--pw-grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .55 0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E");

	/* Base contract. */
	--tf-color-bg: var(--pw-void);
	--tf-color-surface: var(--pw-night);
	--tf-color-text: var(--pw-text);
	--tf-color-muted: var(--pw-muted);
	--tf-color-primary: var(--pw-aqua);
	--tf-color-on-primary: var(--pw-void);
	--tf-color-accent: var(--pw-aqua);
	--tf-color-border: var(--pw-edge);
	--tf-color-focus: var(--pw-aqua);
	--tf-color-bar-bg: var(--pw-violet-deep);
	--tf-color-bar-text: var(--pw-white);
	--tf-font-display: "Big Shoulders", "Pw Display Fallback", "Arial Narrow", sans-serif;
	--tf-font-body: "Geist", "Pw Body Fallback", Arial, sans-serif;
	--tf-font-mono: "Geist Mono", ui-monospace, Menlo, monospace;
	--tf-radius-s: 4px;
	--tf-radius-m: 10px;
	--tf-radius-l: 16px;
	--tf-container: 1360px;
	--tf-bar-height: 2.25rem;
	--tf-header-height: 72px;
	--tf-ease-out: var(--pw-out);
	--tf-marquee-duration: 26s;
	--tf-reveal-distance: 2.25rem;
	--tf-stagger: 70ms;
	--tf-dur-slow: 800ms;
}

/* Approximate metric-matched fallbacks to limit layout shift before the fonts load. */
@font-face { font-family: "Pw Display Fallback"; src: local("Arial Narrow"), local("ArialNarrow"), local("Arial"); size-adjust: 84%; ascent-override: 110%; descent-override: 28%; line-gap-override: 0%; }
@font-face { font-family: "Pw Body Fallback"; src: local("Arial"); size-adjust: 103%; ascent-override: 92%; descent-override: 24%; line-gap-override: 0%; }

/* ================================================================ 2. Base and GeneratePress dark overrides */
*, *::before, *::after { box-sizing: border-box; }
html { background: var(--pw-void); }
[hidden] { display: none !important; }
body {
	margin: 0;
	background: var(--pw-void);
	color: var(--pw-text);
	font-family: var(--tf-font-body);
	font-size: 1.0625rem;
	line-height: 1.6;
	overflow-x: clip;
	-webkit-font-smoothing: antialiased;
}
/* Film grain over everything. Static, decorative, ignores pointer. */
body::after {
	content: "";
	position: fixed;
	inset: 0;
	z-index: 9998;
	pointer-events: none;
	background-image: var(--pw-grain);
	opacity: .05;
	mix-blend-mode: overlay;
}
h1, h2, h3, h4 {
	font-family: var(--tf-font-display);
	font-weight: 800;
	color: var(--pw-text);
	line-height: .95;
	letter-spacing: -.005em;
	text-transform: uppercase;
	text-wrap: balance;
}
h1 { font-size: clamp(3rem, 1.6rem + 6vw, 7rem); }
h2 { font-size: clamp(2.25rem, 1.5rem + 3vw, 4.25rem); }
h3 { font-size: clamp(1.5rem, 1.3rem + .6vw, 1.875rem); font-weight: 750; line-height: 1; }
p { margin: 0 0 1.1em; }
a { color: var(--pw-aqua); text-underline-offset: .22em; text-decoration-thickness: 1px; }
a:hover { color: var(--pw-text); }
::selection { background: var(--pw-aqua); color: var(--pw-void); }
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible { outline: 3px solid var(--pw-aqua); outline-offset: 3px; }
.pw-sr { position: absolute !important; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.pw-sentinel { position: absolute; top: 0; left: 0; width: 1px; height: 40px; pointer-events: none; }
.pw-mono { font-family: var(--tf-font-mono); font-feature-settings: "tnum"; letter-spacing: -.01em; }

.site, .site-content, .content-area, .site-main, .inside-article, .separate-containers .inside-article, .one-container .site-content, .entry-content { background: transparent; color: inherit; }
.site-content .content-area { width: 100%; }
.separate-containers .inside-article, .one-container .site-content { padding: 0; }
.entry-content > * { margin-block: 0; }
.site-main, .inside-article, .entry-content { margin: 0 !important; }
.site-content { display: block; }
.entry-header { display: none; }

/* Native controls in dark. */
input, select, textarea {
	background: var(--pw-night) !important;
	color: var(--pw-text) !important;
	border: 1.5px solid var(--pw-muted) !important;
	border-radius: var(--pw-r) !important;
	font: inherit;
	padding: .75em .9em;
	width: 100%;
	min-height: 48px;
}
input[type="checkbox"], input[type="radio"] { width: auto; min-height: 0; padding: 0; accent-color: var(--pw-aqua); }
input:hover, select:hover, textarea:hover { border-color: var(--pw-text) !important; }
input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 3px solid var(--pw-aqua); outline-offset: 2px; border-color: var(--pw-aqua) !important; }
input:user-invalid, select:user-invalid, textarea:user-invalid { border-color: #ff8fb1 !important; }
select { appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--pw-aqua) 50%), linear-gradient(135deg, var(--pw-aqua) 50%, transparent 50%) !important; background-position: calc(100% - 20px) 55%, calc(100% - 14px) 55% !important; background-size: 6px 6px, 6px 6px !important; background-repeat: no-repeat !important; padding-right: 2.5em; }
select option { background: var(--pw-night); color: var(--pw-text); }
dialog::backdrop { background: rgb(7 6 11 / .8); backdrop-filter: blur(6px); }

/* ================================================================ 3. Layout helpers */
.pw-wrap { max-width: var(--tf-container); margin-inline: auto; padding-inline: clamp(16px, 4vw, 48px); }
.pw-section { position: relative; padding-block: var(--pw-section); }
.pw-section--panel { background: var(--pw-night); border-block: 1px solid var(--pw-line); }
.pw-section--narrow .pw-wrap { max-width: 900px; }
.pw-section--violet {
	background:
		radial-gradient(120% 140% at 85% 0%, rgb(46 242 224 / .16), transparent 55%),
		radial-gradient(90% 120% at 0% 100%, rgb(123 59 255 / .9), transparent 70%),
		var(--pw-violet-deep);
	overflow: clip;
}
.pw-head { margin-bottom: clamp(2rem, 4vw, 3.5rem); max-width: 60ch; }
.pw-head .pw-h2 { margin: 0 0 .75rem; }
.pw-head p:last-child { color: var(--pw-muted); margin: 0; }
.pw-h2 { font-size: clamp(2.5rem, 1.6rem + 3.4vw, 4.75rem); margin: 0 0 1rem; }
.pw-h3 { font-size: clamp(1.5rem, 1.3rem + .6vw, 1.875rem); margin: 0 0 1rem; }
.pw-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: .6em;
	margin: 0 0 1rem;
	font-family: var(--tf-font-mono);
	font-size: .8125rem;
	font-weight: 500;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--pw-violet-text);
}
.pw-eyebrow::before { content: ""; width: 1.75em; height: 2px; background: currentColor; }
.pw-hero .pw-eyebrow::before { display: none; }
.pw-lede { font-size: clamp(1.125rem, 1rem + .5vw, 1.375rem); line-height: 1.5; color: var(--pw-text); max-width: 44ch; }
.pw-note { font-size: .875rem; color: var(--pw-muted); }
.pw-display { font-family: var(--tf-font-display); font-weight: 900; font-size: clamp(3.5rem, 1.5rem + 8vw, 9.5rem); line-height: .86; letter-spacing: -.01em; text-transform: uppercase; margin: 0 0 1.5rem; }
.pw-display--md { font-size: clamp(2.75rem, 1.4rem + 5vw, 6rem); }
.pw-cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(2rem, 6vw, 6rem); align-items: start; }
.pw-cols--form { grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); }
.pw-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(2rem, 6vw, 6rem); align-items: center; }
@media (max-width: 900px) { .pw-cols, .pw-cols--form, .pw-split { grid-template-columns: 1fr; } }
.pw-frame { margin: 0; border-radius: var(--pw-r-l); overflow: hidden; aspect-ratio: 4 / 3; background: var(--pw-panel); position: relative; }
.pw-frame--tall { aspect-ratio: 4 / 5; }
.pw-frame img { width: 100%; height: 100%; object-fit: cover; display: block; filter: saturate(.85) contrast(1.05); }
.pw-frame::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 50%, rgb(7 6 11 / .55)); box-shadow: inset 0 0 0 1px rgb(255 255 255 / .06); }

/* ================================================================ 4. Concept bar, header, navigation */
.tf-concept-bar { font-weight: 500; letter-spacing: .01em; position: relative; z-index: 51; }
.tf-concept-bar__link, .tf-concept-bar__studio { color: var(--pw-white); }
.tf-concept-bar :focus-visible { outline-color: var(--pw-aqua); }
.tf-progress { background: linear-gradient(90deg, var(--pw-violet), var(--pw-aqua)) !important; height: 3px; }

.site-header {
	background: rgb(7 6 11 / .78);
	backdrop-filter: saturate(1.4) blur(14px);
	-webkit-backdrop-filter: saturate(1.4) blur(14px);
	border-bottom: 1px solid transparent;
	transition: border-color .3s, background-color .3s;
	color: var(--pw-text);
}
.site-header.is-scrolled { border-bottom-color: var(--pw-line); background: rgb(7 6 11 / .9); }
.inside-header { padding-block: 10px; max-width: var(--tf-container); }
.pw-logo a { color: var(--pw-text); display: inline-flex; text-decoration: none; }
.pw-logo__svg { display: block; width: clamp(160px, 15vw, 196px); height: auto; overflow: visible; }
.pw-logo__pulse { stroke: var(--pw-aqua); stroke-width: 2.6; stroke-linejoin: miter; stroke-dasharray: 60; stroke-dashoffset: 0; }
.pw-logo__plate { fill: var(--pw-violet); }
@media (prefers-reduced-motion: no-preference) {
	.pw-logo a:hover .pw-logo__pulse, .pw-logo a:focus-visible .pw-logo__pulse { animation: pw-trace .9s var(--pw-out); }
}
@keyframes pw-trace { from { stroke-dashoffset: 60; } }

.main-navigation, .main-navigation ul ul, .main-navigation .inside-navigation { background: transparent; }
.main-navigation .main-nav ul li a {
	font-family: var(--tf-font-body);
	font-weight: 500;
	font-size: .9375rem;
	color: var(--pw-text);
	line-height: 48px;
	padding-inline: 14px;
	position: relative;
	text-decoration: none;
}
.main-navigation .main-nav ul li:not(.pw-nav-cta) > a::after {
	content: "";
	position: absolute;
	left: 14px;
	right: 14px;
	bottom: 10px;
	height: 2px;
	background: var(--pw-aqua);
	transform: scaleX(0);
	transform-origin: right;
	transition: transform .35s var(--pw-out);
}
.main-navigation .main-nav ul li a:hover,
.main-navigation .main-nav ul li[class*="current-menu-"] > a { color: var(--pw-text); background: transparent; }
.main-navigation .main-nav ul li:not(.pw-nav-cta) > a:hover::after,
.main-navigation .main-nav ul li[class*="current-menu-"]:not(.pw-nav-cta) > a::after { transform: scaleX(1); transform-origin: left; }
.main-navigation .main-nav ul li.pw-nav-cta > a {
	background: var(--pw-aqua);
	color: var(--pw-void);
	font-weight: 700;
	line-height: 42px;
	margin-left: 10px;
	padding-inline: 20px;
	border-radius: 999px;
	transition: background .2s, box-shadow .3s;
}
.main-navigation .main-nav ul li.pw-nav-cta > a:hover { background: var(--pw-text); color: var(--pw-void); box-shadow: var(--pw-glow-a); }
.pw-nav-note { display: none; }
.main-navigation .menu-toggle, .menu-toggle, .menu-toggle:hover, .menu-toggle:focus { background: transparent !important; color: var(--pw-text) !important; font-weight: 600; }
@media (max-width: 768px) {
	.main-navigation.toggled {
		position: fixed;
		inset: 0;
		z-index: 60;
		background:
			radial-gradient(120% 70% at 100% 0%, rgb(123 59 255 / .55), transparent 60%),
			var(--pw-void);
		overflow-y: auto;
		padding: 16px;
	}
	.main-navigation.toggled .menu-toggle { margin-left: auto; display: block; }
	.main-navigation.toggled .main-nav > ul { padding-block: 1.5rem; display: grid; gap: 0; }
	.main-navigation.toggled .main-nav ul li a {
		font-family: var(--tf-font-display);
		font-weight: 900;
		font-size: clamp(2.75rem, 14vw, 4.25rem);
		line-height: 1;
		text-transform: uppercase;
		color: var(--pw-text);
		padding: .08em 0;
	}
	.main-navigation.toggled .main-nav ul li a::after { display: none; }
	.main-navigation.toggled .main-nav ul li[class*="current-menu-"] > a { color: var(--pw-aqua); }
	.main-navigation.toggled .main-nav ul li.pw-nav-cta > a { display: inline-block; margin: 1.25rem 0 0; font-family: var(--tf-font-body); font-size: 1.25rem; padding: .35em 1.2em; color: var(--pw-void); line-height: 1.6; }
	.main-navigation.toggled .pw-nav-note { display: block; margin-top: 2rem; color: var(--pw-muted); font-family: var(--tf-font-mono); font-size: .8125rem; letter-spacing: .08em; text-transform: uppercase; }
}
@media (prefers-reduced-motion: no-preference) and (max-width: 768px) {
	.main-navigation.toggled .main-nav ul li { animation: pw-slide-in .6s var(--pw-out) both; }
	.main-navigation.toggled .main-nav ul li:nth-child(2) { animation-delay: 50ms; }
	.main-navigation.toggled .main-nav ul li:nth-child(3) { animation-delay: 100ms; }
	.main-navigation.toggled .main-nav ul li:nth-child(4) { animation-delay: 150ms; }
	.main-navigation.toggled .main-nav ul li:nth-child(5) { animation-delay: 200ms; }
	.main-navigation.toggled .main-nav ul li:nth-child(6) { animation-delay: 250ms; }
	.main-navigation.toggled .main-nav ul li:nth-child(7) { animation-delay: 300ms; }
	.main-navigation.toggled .main-nav ul li:nth-child(8) { animation-delay: 350ms; }
}
@keyframes pw-slide-in { from { opacity: 0; transform: translateX(-28px) skewX(-6deg); } }

/* ================================================================ 5. Buttons, chips, tags */
.pw-btn, .wp-block-button .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .55em;
	min-height: 52px;
	padding: .85em 1.6em;
	border: 1.5px solid var(--pw-text);
	border-radius: 999px;
	background: transparent;
	color: var(--pw-text);
	font-family: var(--tf-font-body);
	font-weight: 650;
	font-size: 1rem;
	line-height: 1.2;
	text-decoration: none;
	cursor: pointer;
	position: relative;
	overflow: hidden;
	isolation: isolate;
	transition: color .3s var(--pw-out), border-color .3s, box-shadow .4s var(--pw-out), transform .15s;
}
/* A wipe of colour sweeps in from the left on hover. */
.pw-btn::before, .wp-block-button .wp-block-button__link::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: var(--pw-text);
	transform: scaleX(0);
	transform-origin: right;
	transition: transform .45s var(--pw-out);
}
.pw-btn:hover::before, .wp-block-button .wp-block-button__link:hover::before { transform: scaleX(1); transform-origin: left; }
.pw-btn:hover, .wp-block-button .wp-block-button__link:hover { color: var(--pw-void); }
.pw-btn:active, .wp-block-button .wp-block-button__link:active { transform: scale(.97); }
.pw-btn .pw-icon { transition: transform .3s var(--pw-out); }
.pw-btn:hover .pw-icon { transform: translateX(4px); }
.pw-btn--aqua, .wp-block-button.is-style-pw-aqua .wp-block-button__link, .wp-block-button:not([class*="is-style-"]) .wp-block-button__link { background: var(--pw-aqua); border-color: var(--pw-aqua); color: var(--pw-void); }
.pw-btn--aqua:hover, .wp-block-button.is-style-pw-aqua .wp-block-button__link:hover, .wp-block-button:not([class*="is-style-"]) .wp-block-button__link:hover { box-shadow: var(--pw-glow-a); }
.pw-btn--violet, .wp-block-button.is-style-pw-violet .wp-block-button__link { background: var(--pw-violet); border-color: var(--pw-violet); color: var(--pw-white); }
.pw-btn--ghost, .wp-block-button.is-style-pw-ghost .wp-block-button__link { background: transparent; }
.pw-btn--line { border-color: var(--pw-edge); min-height: 44px; padding: .6em 1.2em; font-size: .9375rem; }
.pw-btn--sm { min-height: 44px; padding: .5em 1.1em; font-size: .875rem; }
.wp-block-buttons { display: flex; flex-wrap: wrap; gap: .9rem; margin-top: 2rem; }
.pw-actions { display: flex; flex-wrap: wrap; gap: .9rem; margin-top: 2rem; }
.pw-linkbtn, button.pw-linkbtn { background: none !important; border: 0; padding: .5em; color: var(--pw-aqua) !important; font: inherit; font-weight: 600; text-decoration: underline; text-underline-offset: .2em; cursor: pointer; min-height: 44px; }

.pw-chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.pw-chips--nav { margin-bottom: clamp(1.5rem, 3vw, 2.5rem); }
.pw-chip, button.pw-chip {
	display: inline-flex;
	align-items: center;
	gap: .4em;
	min-height: 44px;
	padding: .45em 1.1em;
	border: 1px solid var(--pw-edge);
	border-radius: 999px;
	background: transparent;
	color: var(--pw-text);
	font: 500 .9375rem/1.2 var(--tf-font-body);
	text-decoration: none;
	cursor: pointer;
	transition: border-color .2s, background .2s, color .2s;
}
.pw-chip:hover, button.pw-chip:hover { border-color: var(--pw-text); color: var(--pw-text); background: transparent; }
.pw-chip.is-current, button.pw-chip[aria-pressed="true"], button.pw-chip[aria-pressed="true"]:hover { background: var(--pw-text); border-color: var(--pw-text); color: var(--pw-void); }
.pw-tag {
	display: inline-block;
	padding: .2em .6em;
	border: 1px solid var(--pw-edge);
	border-radius: var(--pw-r);
	font: 500 .75rem/1.3 var(--tf-font-mono);
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--pw-muted);
}
.pw-tag--warn { color: var(--pw-aqua); border-color: var(--pw-aqua); }
.pw-icon { flex: none; }

/* Demo notices and results on dark surfaces. */
.tf-demo-notice { border-color: var(--pw-edge); border-left-color: var(--pw-aqua); }
.tf-demo-result { border-color: var(--pw-aqua); background: var(--pw-night); box-shadow: var(--pw-glow-a); }
.tf-demo-result p { color: var(--pw-text); font-size: 1.125rem; }
.tf-demo-result .tf-demo-result__again, .tf-marquee .tf-marquee__toggle {
	background: transparent !important;
	color: var(--pw-text) !important;
	border: 1px solid var(--pw-text);
	border-radius: 999px;
	padding: .5em 1.1em;
	font: 600 .875rem/1.2 var(--tf-font-body);
	cursor: pointer;
	min-height: 40px;
}
.tf-demo-result .tf-demo-result__again:hover, .tf-marquee .tf-marquee__toggle:hover, .tf-marquee .tf-marquee__toggle[aria-pressed="true"] { background: var(--pw-text) !important; color: var(--pw-void) !important; }

/* Live dot. */
.pw-live { position: relative; display: inline-block; width: 9px; height: 9px; border-radius: 50%; background: var(--pw-aqua); flex: none; }
@media (prefers-reduced-motion: no-preference) {
	.pw-live::after { content: ""; position: absolute; inset: -5px; border-radius: 50%; border: 2px solid var(--pw-aqua); animation: pw-ping 1.8s var(--pw-out) infinite; }
}
@keyframes pw-ping { from { transform: scale(.4); opacity: 1; } to { transform: scale(1.6); opacity: 0; } }

/* ================================================================ 6. Home hero */
.pw-hero {
	--gx: 70%;
	--gy: 30%;
	position: relative;
	min-height: min(100svh - var(--tf-bar-height) - var(--tf-header-height), 1000px);
	display: grid;
	align-items: end;
	overflow: clip;
	isolation: isolate;
	padding-block: clamp(96px, 14vh, 180px) clamp(48px, 7vh, 88px);
}
.pw-hero__media { position: absolute; inset: 0; z-index: -2; margin: 0; }
.pw-hero__media img { width: 100%; height: 100%; object-fit: cover; object-position: 60% 50%; display: block; filter: grayscale(.35) contrast(1.15) brightness(.72); }
.pw-hero__scrim {
	position: absolute;
	inset: 0;
	z-index: -1;
	background:
		radial-gradient(40vmax 40vmax at var(--gx) var(--gy), rgb(46 242 224 / .16), transparent 60%),
		linear-gradient(115deg, rgb(123 59 255 / .55) 0%, rgb(59 29 143 / .25) 40%, transparent 70%),
		linear-gradient(0deg, var(--pw-void) 0%, rgb(7 6 11 / .55) 45%, rgb(7 6 11 / .25) 100%);
	mix-blend-mode: normal;
}
.pw-hero__body { position: relative; width: 100%; }
.pw-hero__title {
	font-size: clamp(4.25rem, 1rem + 11.5vw, 12.5rem);
	font-weight: 900;
	line-height: .8;
	letter-spacing: -.012em;
	margin: 0 0 2rem;
	display: flex;
	flex-wrap: wrap;
	column-gap: .18em;
}
.pw-line { display: inline-block; overflow: clip; padding-bottom: .04em; }
.pw-line > span { display: inline-block; }
.pw-line--outline > span { color: transparent; -webkit-text-stroke: 2px var(--pw-text); }
.pw-line--aqua > span { color: var(--pw-aqua); text-shadow: 0 0 40px rgb(46 242 224 / .35); }
.pw-hero__lede { font-size: clamp(1.125rem, 1rem + .5vw, 1.375rem); max-width: 46ch; color: var(--pw-text); margin: 0; }
.pw-hero__cue { position: absolute; right: clamp(16px, 4vw, 48px); bottom: 32px; margin: 0; font: 500 .75rem/1 var(--tf-font-mono); letter-spacing: .2em; text-transform: uppercase; color: var(--pw-muted); writing-mode: vertical-rl; display: flex; align-items: center; gap: 12px; }
.pw-hero__cue::after { content: ""; width: 1px; height: 64px; background: linear-gradient(var(--pw-aqua), transparent); }
@media (max-width: 700px) { .pw-hero__cue { display: none; } .pw-line--outline > span { -webkit-text-stroke-width: 1.5px; } }

@media (prefers-reduced-motion: no-preference) {
	.pw-hero__media img { animation: pw-settle 1.8s var(--pw-out) both; }
	.pw-line > span { animation: pw-up 1s var(--pw-out) both; }
	.pw-line:nth-child(2) > span { animation-delay: .09s; }
	.pw-line:nth-child(3) > span { animation-delay: .18s; }
	.pw-hero__lede, .pw-hero .wp-block-buttons, .pw-hero .pw-eyebrow { animation: pw-fade-up .9s var(--pw-out) .35s both; }
	.pw-hero .wp-block-buttons { animation-delay: .45s; }
	.pw-hero__cue::after { animation: pw-drip 2.2s var(--pw-out) infinite; transform-origin: top; }
}
@keyframes pw-settle { from { transform: scale(1.14); } }
@keyframes pw-up { from { transform: translateY(105%) skewY(6deg); } }
@keyframes pw-fade-up { from { opacity: 0; transform: translateY(18px); } }
@keyframes pw-drip { 0% { transform: scaleY(0); } 60% { transform: scaleY(1); } 100% { transform: scaleY(1); opacity: 0; } }

/* Scroll-linked: the hero image drifts and the title lifts away as you scroll past. */
@supports (animation-timeline: view()) {
	@media (prefers-reduced-motion: no-preference) {
		.pw-hero__media { animation: pw-drift linear both; animation-timeline: view(); animation-range: exit 0% exit 100%; }
		.pw-hero__body { animation: pw-lift linear both; animation-timeline: view(); animation-range: exit 0% exit 80%; }
		.pw-pagehero__media { animation: pw-drift linear both; animation-timeline: view(); animation-range: exit 0% exit 100%; }
		.pw-head, .pw-cta > * { animation: pw-rise linear both; animation-timeline: view(); animation-range: entry 0% entry 70%; }
	}
}
@keyframes pw-drift { to { transform: translateY(18%) scale(1.08); } }
@keyframes pw-lift { to { transform: translateY(-14%); opacity: 0; } }
@keyframes pw-rise { from { opacity: 0; transform: translateY(40px); } }

/* ================================================================ 7. Inner page hero */
.pw-pagehero {
	--gx: 70%;
	--gy: 30%;
	position: relative;
	isolation: isolate;
	overflow: clip;
	padding-block: clamp(96px, 16vw, 200px) clamp(56px, 8vw, 104px);
	background:
		radial-gradient(60% 80% at 100% 0%, rgb(123 59 255 / .35), transparent 70%),
		radial-gradient(30% 40% at 0% 100%, rgb(46 242 224 / .1), transparent 70%),
		var(--pw-void);
	border-bottom: 1px solid var(--pw-line);
}
.pw-pagehero--img { min-height: min(78svh, 760px); display: grid; align-items: end; }
.pw-pagehero__media { position: absolute; inset: 0; z-index: -2; margin: 0; }
.pw-pagehero__media img { width: 100%; height: 100%; object-fit: cover; object-position: 50% var(--y, 50%); display: block; filter: grayscale(.5) contrast(1.1) brightness(.6); }
.pw-pagehero__scrim { position: absolute; inset: 0; z-index: -1; pointer-events: none; }
.pw-pagehero--img .pw-pagehero__scrim {
	background:
		radial-gradient(36vmax 36vmax at var(--gx) var(--gy), rgb(46 242 224 / .14), transparent 60%),
		linear-gradient(100deg, rgb(59 29 143 / .7), transparent 65%),
		linear-gradient(0deg, var(--pw-void), rgb(7 6 11 / .2) 70%);
}
.pw-pagehero__body { position: relative; width: 100%; }
.pw-pagehero .pw-display { max-width: 14ch; font-size: clamp(3.25rem, 1.4rem + 6.2vw, 8rem); }
.pw-kinetic .pw-w { display: inline-block; }
@media (prefers-reduced-motion: no-preference) {
	.pw-kinetic .pw-w { animation: pw-word .9s var(--pw-out) both; animation-delay: calc(var(--i, 0) * 70ms); }
	.pw-pagehero .pw-lede, .pw-pagehero .pw-eyebrow { animation: pw-fade-up .9s var(--pw-out) .25s both; }
}
@keyframes pw-word { from { opacity: 0; transform: translateY(.45em) rotate(3deg); filter: blur(6px); } }

/* ================================================================ 8. Marquee */
.pw-marquee { position: relative; overflow: clip; padding-block: clamp(14px, 2vw, 22px); border-block: 1px solid var(--pw-line); }
.pw-marquee--aqua { background: var(--pw-aqua); color: var(--pw-void); border: 0; }
.pw-marquee--violet { background: var(--pw-violet-deep); color: var(--pw-white); border: 0; }
.pw-marquee .tf-marquee { --tf-marquee-gap: clamp(1.5rem, 3vw, 3rem); }
.pw-marquee .tf-marquee__track li {
	font-family: var(--tf-font-display);
	font-weight: 900;
	font-size: clamp(2.75rem, 1.5rem + 5vw, 6.5rem);
	line-height: .95;
	text-transform: uppercase;
	display: inline-flex;
	align-items: center;
	gap: clamp(1.5rem, 3vw, 3rem);
}
.pw-marquee .tf-marquee__track li::after { content: "✦"; display: inline-block; font-size: .38em; color: var(--pw-violet-deep); }
.pw-marquee--violet .tf-marquee__track li::after { color: var(--pw-aqua); }
.pw-marquee__outline { display: none; }
.pw-marquee .tf-marquee__toggle { position: absolute; right: 12px; bottom: 8px; z-index: 2; background: var(--pw-void) !important; }
@media (prefers-reduced-motion: no-preference) {
	.pw-marquee__outline { display: block; }
	.pw-marquee__outline .tf-marquee__track li { color: transparent; -webkit-text-stroke: 1.5px var(--pw-text); }
	.pw-marquee--aqua .pw-marquee__outline .tf-marquee__track li { -webkit-text-stroke-color: var(--pw-void); }
	.pw-marquee__outline .tf-marquee__toggle { display: none; }
	.pw-marquee:has(.is-paused) .tf-marquee__inner { animation-play-state: paused; }
	.pw-marquee__outline { --tf-marquee-duration: 34s; }
}

/* ================================================================ 9. Focus tiles */
.pw-tiles { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(12px, 1.5vw, 20px); }
@media (max-width: 900px) { .pw-tiles { grid-template-columns: 1fr; } }
.pw-tile a {
	position: relative;
	display: grid;
	align-content: end;
	min-height: clamp(380px, 46vw, 600px);
	padding: clamp(20px, 2.5vw, 32px);
	border-radius: var(--pw-r-l);
	overflow: hidden;
	isolation: isolate;
	color: var(--pw-text);
	text-decoration: none;
	box-shadow: inset 0 0 0 1px var(--pw-line);
	transition: box-shadow .4s var(--pw-out);
}
.pw-tile figure { position: absolute; inset: 0; z-index: -2; margin: 0; }
.pw-tile img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(.6) contrast(1.1) brightness(.6); transition: transform 1.1s var(--pw-out), filter .6s; }
.pw-tile a::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(0deg, rgb(7 6 11 / .95) 10%, rgb(7 6 11 / .1) 70%); }
.pw-tile a::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(160deg, rgb(123 59 255 / .65), transparent 60%); opacity: 0; transition: opacity .5s; }
.pw-tile__n { position: absolute; top: clamp(20px, 2.5vw, 32px); left: clamp(20px, 2.5vw, 32px); font-size: .875rem; color: var(--pw-aqua); }
.pw-tile { container-type: inline-size; }
/* Capped by the card width so long names such as CONDITIONING never overflow. */
.pw-tile__name { font-family: var(--tf-font-display); font-weight: 900; text-transform: uppercase; font-size: min(clamp(2.75rem, 1.5rem + 3.5vw, 5rem), 13cqi); line-height: .85; transition: transform .5s var(--pw-out); }
.pw-tile__text { margin-top: .75rem; color: var(--pw-muted); max-width: 32ch; transition: color .4s; }
.pw-tile__go { position: absolute; top: clamp(16px, 2vw, 28px); right: clamp(16px, 2vw, 28px); width: 48px; height: 48px; border-radius: 50%; display: grid; place-items: center; border: 1px solid var(--pw-edge); font-size: 1.25rem; transition: background .3s, color .3s, transform .5s var(--pw-out), border-color .3s; }
.pw-tile a:hover, .pw-tile a:focus-visible { box-shadow: inset 0 0 0 1px var(--pw-violet), var(--pw-glow-v); }
.pw-tile a:hover img, .pw-tile a:focus-visible img { transform: scale(1.07); filter: grayscale(0) contrast(1.1) brightness(.7); }
.pw-tile a:hover::after, .pw-tile a:focus-visible::after { opacity: 1; }
.pw-tile a:hover .pw-tile__name { transform: translateY(-6px); }
.pw-tile a:hover .pw-tile__text { color: var(--pw-text); }
.pw-tile a:hover .pw-tile__go { background: var(--pw-aqua); color: var(--pw-void); border-color: var(--pw-aqua); transform: rotate(-45deg); }

/* ================================================================ 10. Scroll-fill statement */
.pw-section--fill { background: var(--pw-void); }
.pw-fill { position: relative; margin: 0 0 2rem; font-family: var(--tf-font-display); font-weight: 900; text-transform: uppercase; font-size: clamp(2.5rem, 1rem + 5.4vw, 7rem); line-height: .92; max-width: 18ch; }
.pw-fill__base { color: var(--pw-text); }
.pw-fill__top { display: none; }
.pw-fill__sub { color: var(--pw-muted); max-width: 52ch; font-size: 1.125rem; }
@supports (animation-timeline: view()) {
	@media (prefers-reduced-motion: no-preference) {
		.pw-fill__base { color: transparent; -webkit-text-stroke: 1.5px var(--pw-edge); }
		.pw-fill__top {
			display: block;
			position: absolute;
			inset: 0;
			color: var(--pw-text);
			background: linear-gradient(90deg, var(--pw-text) 70%, var(--pw-aqua));
			-webkit-background-clip: text;
			background-clip: text;
			-webkit-text-fill-color: transparent;
			clip-path: inset(0 100% 0 0);
			animation: pw-wipe linear both;
			animation-timeline: view();
			animation-range: cover 15% cover 55%;
		}
	}
}
@keyframes pw-wipe { to { clip-path: inset(0 0 0 0); } }

/* ================================================================ 11. Today and the week */
.pw-cols--today { align-items: stretch; }
.pw-next__day { display: flex; align-items: center; gap: .75rem; font-family: var(--tf-font-mono); font-size: .8125rem; letter-spacing: .1em; text-transform: uppercase; color: var(--pw-aqua); }
.pw-next__list { list-style: none; margin: 0 0 1rem; padding: 0; border-top: 1px solid var(--pw-line); }
.pw-next__list li { display: grid; grid-template-columns: 5.5rem 1fr auto; align-items: center; gap: .25rem 1rem; padding: 1rem 0; border-bottom: 1px solid var(--pw-line); transition: background .3s; }
.pw-next__time { font-size: 1.125rem; color: var(--pw-muted); }
.pw-next__name { grid-column: 2; font-family: var(--tf-font-display); font-weight: 800; text-transform: uppercase; font-size: 1.75rem; line-height: 1; color: var(--pw-text); text-decoration: none; }
.pw-next__name:hover { color: var(--pw-aqua); }
.pw-next__meta { grid-column: 2; font-size: .875rem; color: var(--pw-muted); }
.pw-next__list .pw-next-tag { grid-column: 3; grid-row: 1 / span 2; }
.pw-next__list li.is-past .pw-next__name { color: var(--pw-muted); }
.pw-next__list li.is-next .pw-next__time { color: var(--pw-aqua); }
.pw-next-tag { display: inline-flex; align-items: center; gap: .4em; padding: .25em .7em; border-radius: 999px; background: var(--pw-aqua); color: var(--pw-void); font: 600 .75rem/1.2 var(--tf-font-mono); letter-spacing: .06em; text-transform: uppercase; white-space: nowrap; }
.pw-next-tag[hidden] { display: none; }

.pw-week { margin: 0; }
.pw-week__bars { list-style: none; margin: 0 0 1rem; padding: 0; display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: clamp(6px, 1vw, 12px); align-items: end; height: clamp(220px, 26vw, 320px); }
.pw-week__bars li { display: grid; grid-template-rows: 1fr auto auto; height: 100%; text-align: center; gap: .4rem; }
.pw-week__bar { align-self: end; display: block; height: calc(var(--h) * 100%); min-height: 6px; border-radius: 3px 3px 0 0; background: linear-gradient(180deg, var(--pw-violet), rgb(123 59 255 / .25)); position: relative; overflow: hidden; transform-origin: bottom; transition: transform 1s var(--pw-out) calc(var(--tf-i, 0) * 70ms); }
.pw-week__late { position: absolute; left: 0; right: 0; top: 0; height: calc(var(--l) * 100%); background: var(--pw-aqua); box-shadow: 0 0 24px rgb(46 242 224 / .6); }
.pw-week__n { font-size: 1rem; color: var(--pw-text); }
.pw-week__d { font: 500 .75rem/1 var(--tf-font-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--pw-muted); }
.pw-key { display: inline-block; width: 12px; height: 12px; margin-right: .5em; vertical-align: -1px; background: var(--pw-aqua); border-radius: 2px; }
@media (prefers-reduced-motion: no-preference) {
	.tf-js .pw-week__bars:not(.is-in) .pw-week__bar { transform: scaleY(0); }
}

/* ================================================================ 12. Horizontal scroll strip */
.pw-hs { position: relative; padding-block: var(--pw-section); background: var(--pw-void); border-block: 1px solid var(--pw-line); }
.pw-hs__head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 1rem 3rem; margin-bottom: 2rem; }
.pw-hs__head .pw-h2 { margin: 0; }
.pw-hs__head p { margin: 0; max-width: 40ch; color: var(--pw-muted); }
.pw-hs__track {
	list-style: none;
	margin: 0;
	padding: 0 clamp(16px, 4vw, 48px) 1rem;
	display: flex;
	gap: clamp(12px, 2vw, 24px);
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-padding-inline: clamp(16px, 4vw, 48px);
	scrollbar-color: var(--pw-violet) transparent;
}
.pw-hs__panel { flex: 0 0 min(82vw, 560px); scroll-snap-align: start; position: relative; border-radius: var(--pw-r-l); overflow: hidden; background: var(--pw-panel); box-shadow: inset 0 0 0 1px var(--pw-line); }
.pw-hs__panel figure { margin: 0; aspect-ratio: 4 / 5; }
.pw-hs__panel img { width: 100%; height: 100%; object-fit: cover; display: block; filter: grayscale(.4) contrast(1.1) brightness(.75); }
.pw-hs__cap { position: absolute; inset: auto 0 0 0; padding: clamp(20px, 2.5vw, 32px); background: linear-gradient(0deg, rgb(7 6 11 / .96) 30%, transparent); }
.pw-hs__cap h3 { font-size: clamp(1.75rem, 1.3rem + 1.5vw, 2.75rem); margin: 0 0 .5rem; }
.pw-hs__cap p { margin: 0; color: var(--pw-muted); max-width: 34ch; }
.pw-hs__n { color: var(--pw-aqua); font-size: .875rem; margin: 0 0 .5rem !important; }
.pw-hs__bar { display: none; }
@supports (animation-timeline: view()) {
	@media (prefers-reduced-motion: no-preference) and (min-width: 900px) {
		.pw-hs { height: 320vh; padding: 0; view-timeline: --pw-hs block; }
		.pw-hs__sticky { position: sticky; top: 0; height: 100vh; overflow: hidden; display: flex; flex-direction: column; justify-content: center; padding-top: var(--tf-header-height); }
		.pw-hs__track { overflow: visible; width: max-content; scroll-snap-type: none; padding-inline: max(48px, calc((100vw - var(--tf-container)) / 2 + 48px)); animation: pw-hs linear both; animation-timeline: --pw-hs; animation-range: contain 0% contain 100%; }
		.pw-hs__panel { flex-basis: clamp(360px, 34vw, 520px); }
		.pw-hs__panel:nth-child(even) { translate: 0 6vh; }
		.pw-hs__panel img { animation: pw-hs-img linear both; animation-timeline: --pw-hs; animation-range: contain 0% contain 100%; }
		.pw-hs__bar { display: block; position: relative; margin: 2.5rem auto 0; width: min(420px, 60vw); height: 2px; background: var(--pw-line); }
		.pw-hs__bar span { position: absolute; inset: 0; background: linear-gradient(90deg, var(--pw-violet), var(--pw-aqua)); transform-origin: left; animation: pw-grow linear both; animation-timeline: --pw-hs; animation-range: contain 0% contain 100%; }
	}
}
@keyframes pw-hs { to { transform: translateX(calc(-100% + 100vw)); } }
@keyframes pw-hs-img { from { transform: scale(1.15) translateX(-4%); } to { transform: scale(1.15) translateX(4%); } }
@keyframes pw-grow { from { transform: scaleX(0); } }

/* ================================================================ 13. Facts */
.pw-facts__list { list-style: none; margin: 0 0 1rem; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-top: 1px solid var(--pw-line); }
.pw-facts__list li { padding: 1.75rem 1.5rem 1.75rem 0; border-bottom: 1px solid var(--pw-line); }
.pw-facts__list li + li { padding-left: 1.5rem; border-left: 1px solid var(--pw-line); }
.pw-facts__n { display: block; font-family: var(--tf-font-display); font-weight: 900; font-size: clamp(4rem, 2rem + 7vw, 9rem); line-height: .85; color: var(--pw-aqua); font-feature-settings: "tnum"; }
.pw-facts__list li:nth-child(even) .pw-facts__n { color: var(--pw-violet-text); }
.pw-facts__l { display: block; margin-top: .75rem; color: var(--pw-muted); max-width: 20ch; }
@media (max-width: 900px) {
	.pw-facts__list { grid-template-columns: 1fr 1fr; }
	.pw-facts__list li:nth-child(3) { padding-left: 0; border-left: 0; }
}

/* ================================================================ 14. Memberships */
.pw-plans { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(12px, 1.5vw, 20px); }
@media (max-width: 1100px) { .pw-plans { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px) { .pw-plans { grid-template-columns: 1fr; } }
.pw-plan { position: relative; display: flex; flex-direction: column; padding: clamp(22px, 2.5vw, 32px); border-radius: var(--pw-r-l); background: var(--pw-void); box-shadow: inset 0 0 0 1px var(--pw-line); transition: box-shadow .4s var(--pw-out), transform .4s var(--pw-out); }
.pw-section:not(.pw-section--panel) .pw-plan { background: var(--pw-night); }
.pw-plan:hover { transform: translateY(-6px); }
.pw-plan--violet { box-shadow: inset 0 0 0 1px var(--pw-violet); }
.pw-plan--violet:hover { box-shadow: inset 0 0 0 1px var(--pw-violet), var(--pw-glow-v); }
.pw-plan--aqua { box-shadow: inset 0 0 0 1px var(--pw-aqua); }
.pw-plan--aqua:hover { box-shadow: inset 0 0 0 1px var(--pw-aqua), var(--pw-glow-a); }
.pw-plan--plain:hover { box-shadow: inset 0 0 0 1px var(--pw-edge); }
.pw-plan__idx { color: var(--pw-muted); font-size: .8125rem; margin-bottom: 2.5rem; }
.pw-plan__name { font-size: clamp(2.25rem, 1.6rem + 1.8vw, 3.25rem); font-weight: 900; margin: 0 0 .75rem; }
.pw-plan--violet .pw-plan__name { color: var(--pw-violet-text); }
.pw-plan--aqua .pw-plan__name { color: var(--pw-aqua); }
.pw-plan__tag { font-size: 1.0625rem; }
.pw-plan__suits { color: var(--pw-muted); font-size: .9375rem; }
.pw-plan__suits strong { color: var(--pw-text); font-weight: 600; }
.pw-plan .pw-fee { margin-top: auto; padding-top: 1rem; border-top: 1px dashed var(--pw-edge); }
.pw-plan .pw-btn { align-self: flex-start; margin-top: .5rem; }
.pw-fee { font-size: .9375rem; color: var(--pw-muted); }
.pw-fee__fig { font-family: var(--tf-font-display); font-weight: 900; font-size: 2rem; color: var(--pw-text); }

.pw-compare__pick { display: none; margin-bottom: 1rem; }
.pw-compare__scroll { overflow-x: auto; border-radius: var(--pw-r-l); box-shadow: inset 0 0 0 1px var(--pw-line); }
.pw-compare__table { width: 100%; min-width: 760px; border-collapse: collapse; margin: 0; border: 0; }
.pw-compare__table th, .pw-compare__table td { padding: 1.1rem 1.25rem; border: 0; border-bottom: 1px solid var(--pw-line); text-align: left; vertical-align: top; }
.pw-compare__table thead th, .pw-compare__table thead td { position: sticky; top: 0; background: var(--pw-panel); vertical-align: bottom; }
.pw-compare__name { display: block; font-family: var(--tf-font-display); font-weight: 900; text-transform: uppercase; font-size: 1.75rem; line-height: 1; }
.pw-compare__tag { display: block; margin-top: .4rem; font-weight: 400; font-size: .8125rem; color: var(--pw-muted); }
.pw-compare__table tbody th { font-weight: 500; color: var(--pw-text); width: 26%; }
.pw-compare__table tbody tr { transition: background .2s; }
.pw-compare__table tbody tr:hover { background: rgb(123 59 255 / .08); }
.pw-compare__fee td, .pw-compare__fee th { border-bottom: 0; }
.pw-compare__fee .pw-fee { margin: 0; }
.pw-yes, .pw-no { display: inline-flex; align-items: center; gap: .45em; }
.pw-yes { color: var(--pw-aqua); }
.pw-yes span, .pw-no span { color: var(--pw-text); font-size: .9375rem; }
.pw-no { color: var(--pw-muted); }
.pw-no span { color: var(--pw-muted); }
.pw-val { font-size: .9375rem; }
@media (max-width: 760px) {
	.pw-compare.is-enhanced .pw-compare__pick { display: flex; flex-wrap: wrap; gap: .5rem; }
	.pw-compare.is-enhanced .pw-compare__table { min-width: 0; }
	.pw-compare.is-enhanced .pw-compare__table [data-col] { display: none; }
	.pw-compare.is-enhanced [data-show="1"] [data-col="1"],
	.pw-compare.is-enhanced [data-show="2"] [data-col="2"],
	.pw-compare.is-enhanced [data-show="3"] [data-col="3"],
	.pw-compare.is-enhanced [data-show="4"] [data-col="4"],
	.pw-compare.is-enhanced [data-show="5"] [data-col="5"],
	.pw-compare.is-enhanced [data-show="6"] [data-col="6"] { display: table-cell; }
	.pw-compare__table tbody th { width: 50%; }
}
.pw-gaps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; border-top: 1px solid var(--pw-line); }
.pw-gaps li { padding: 1.5rem 1.5rem 1.5rem 0; border-bottom: 1px solid var(--pw-line); }
.pw-gaps li + li { padding-left: 1.5rem; border-left: 1px solid var(--pw-line); }
.pw-gaps p { color: var(--pw-muted); margin: 0; }
@media (max-width: 900px) { .pw-gaps { grid-template-columns: 1fr 1fr; } .pw-gaps li:nth-child(3) { border-left: 0; padding-left: 0; } }

/* ================================================================ 15. CTA band */
.pw-cta { position: relative; }
.pw-cta .pw-display { max-width: 13ch; }
.pw-cta p { max-width: 50ch; font-size: 1.125rem; }
.pw-section--violet .pw-cta::after {
	content: "";
	position: absolute;
	right: -4vw;
	top: 50%;
	width: clamp(200px, 30vw, 420px);
	aspect-ratio: 1;
	translate: 0 -50%;
	border-radius: 50%;
	border: 1px solid rgb(46 242 224 / .45);
	box-shadow: 0 0 0 40px rgb(46 242 224 / .05), 0 0 0 80px rgb(46 242 224 / .03);
	pointer-events: none;
}
@media (prefers-reduced-motion: no-preference) {
	.pw-section--violet .pw-cta::after { animation: pw-breathe 6s ease-in-out infinite; }
}
@keyframes pw-breathe { 50% { transform: scale(1.08); opacity: .6; } }

/* ================================================================ 16. Class cards and meters */
.pw-cards { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: clamp(12px, 1.5vw, 20px); }
.pw-cards--rail { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 1rem; scrollbar-color: var(--pw-violet) transparent; }
.pw-cards--rail .pw-card { flex: 0 0 min(80vw, 340px); scroll-snap-align: start; }
.pw-card__link { display: flex; flex-direction: column; height: 100%; border-radius: var(--pw-r-l); overflow: hidden; background: var(--pw-night); color: var(--pw-text); text-decoration: none; box-shadow: inset 0 0 0 1px var(--pw-line); transition: box-shadow .4s var(--pw-out), transform .4s var(--pw-out); }
.pw-card__media { position: relative; display: block; aspect-ratio: 16 / 11; overflow: hidden; background: var(--pw-panel); }
.pw-card__img { width: 100%; height: 100%; object-fit: cover; object-position: 50% var(--y, 50%); display: block; filter: grayscale(.55) contrast(1.1) brightness(.75); transition: transform .9s var(--pw-out), filter .5s; }
.pw-card__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, var(--pw-night), transparent 55%); }
.pw-card--violet .pw-card__media::before, .pw-card--aqua .pw-card__media::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; z-index: 2; }
.pw-card--violet .pw-card__media::before { background: var(--pw-violet); }
.pw-card--aqua .pw-card__media::before { background: var(--pw-aqua); }
.pw-card__num { position: absolute; right: 16px; top: 12px; z-index: 1; font-size: .875rem; color: var(--pw-text); opacity: .8; }
.pw-card__body { position: relative; display: flex; flex-direction: column; gap: .6rem; padding: 1.25rem clamp(18px, 2vw, 24px) 1.5rem; flex: 1; }
.pw-card__top { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; }
.pw-card__dur { display: inline-flex; align-items: center; gap: .35em; font-size: .875rem; color: var(--pw-muted); }
.pw-card__title { font-family: var(--tf-font-display); font-weight: 900; text-transform: uppercase; font-size: clamp(2rem, 1.6rem + 1vw, 2.5rem); line-height: .9; padding-right: 3rem; }
.pw-card__text { color: var(--pw-muted); }
.pw-card__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem 1rem; margin-top: auto; padding-top: .75rem; border-top: 1px solid var(--pw-line); }
.pw-card__count { font: 500 .8125rem/1.2 var(--tf-font-mono); color: var(--pw-muted); }
.pw-card__level { font-size: .875rem; color: var(--pw-text); }
.pw-card__go { position: absolute; right: 18px; top: -24px; width: 48px; height: 48px; display: grid; place-items: center; border-radius: 50%; background: var(--pw-void); border: 1px solid var(--pw-edge); transition: background .3s, color .3s, transform .5s var(--pw-out), border-color .3s; }
.pw-card__link:hover, .pw-card__link:focus-visible { transform: translateY(-6px); box-shadow: inset 0 0 0 1px var(--pw-violet), var(--pw-glow-v); }
.pw-card--aqua .pw-card__link:hover, .pw-card--aqua .pw-card__link:focus-visible { box-shadow: inset 0 0 0 1px var(--pw-aqua), var(--pw-glow-a); }
.pw-card__link:hover .pw-card__img { transform: scale(1.08); filter: grayscale(0) contrast(1.1) brightness(.8); }
.pw-card__link:hover .pw-card__go { background: var(--pw-aqua); color: var(--pw-void); border-color: var(--pw-aqua); transform: rotate(-45deg); }

.pw-meter { display: inline-flex; align-items: center; gap: .6rem; font-size: .8125rem; color: var(--pw-muted); }
.pw-meter__bars { display: inline-flex; align-items: end; gap: 3px; height: 18px; }
.pw-meter__bars i { display: block; width: 6px; border-radius: 1px; background: var(--pw-line); transform-origin: bottom; transition: transform .6s var(--pw-out), background .3s; }
.pw-meter__bars i:nth-child(1) { height: 30%; }
.pw-meter__bars i:nth-child(2) { height: 47%; }
.pw-meter__bars i:nth-child(3) { height: 64%; }
.pw-meter__bars i:nth-child(4) { height: 82%; }
.pw-meter__bars i:nth-child(5) { height: 100%; }
.pw-meter--1 i:nth-child(-n+1), .pw-meter--2 i:nth-child(-n+2), .pw-meter--3 i:nth-child(-n+3), .pw-meter--4 i:nth-child(-n+4), .pw-meter--5 i:nth-child(-n+5) { background: var(--pw-aqua); }
.pw-meter--4 i:nth-child(4), .pw-meter--5 i:nth-child(n+4) { background: var(--pw-violet-text); }
.pw-meter--none { font-family: var(--tf-font-mono); letter-spacing: .04em; text-transform: uppercase; }
@media (prefers-reduced-motion: no-preference) {
	.tf-js [data-reveal]:not(.is-in) .pw-meter__bars i { transform: scaleY(.15); }
	.pw-meter__bars i:nth-child(2) { transition-delay: 60ms; }
	.pw-meter__bars i:nth-child(3) { transition-delay: 120ms; }
	.pw-meter__bars i:nth-child(4) { transition-delay: 180ms; }
	.pw-meter__bars i:nth-child(5) { transition-delay: 240ms; }
}
.pw-scale { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0; border-top: 1px solid var(--pw-line); }
.pw-scale li { padding: 1.5rem 1.25rem 1.5rem 0; border-bottom: 1px solid var(--pw-line); }
.pw-scale li + li { padding-left: 1.25rem; border-left: 1px solid var(--pw-line); }
.pw-scale p { margin: .9rem 0 0; color: var(--pw-muted); font-size: .9375rem; }
@media (max-width: 900px) { .pw-scale { grid-template-columns: 1fr; } .pw-scale li + li { padding-left: 0; border-left: 0; } }

/* ================================================================ 17. Steps, gaps, rules, timeline */
.pw-steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(12px, 1.5vw, 20px); counter-reset: none; }
.pw-steps--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.pw-steps--stack { grid-template-columns: 1fr; }
@media (max-width: 1000px) { .pw-steps, .pw-steps--4 { grid-template-columns: 1fr 1fr; } }
@media (max-width: 620px) { .pw-steps, .pw-steps--4 { grid-template-columns: 1fr; } }
.pw-steps li { position: relative; padding: clamp(20px, 2.2vw, 28px); border-radius: var(--pw-r-l); background: var(--pw-void); box-shadow: inset 0 0 0 1px var(--pw-line); overflow: hidden; }
.pw-section:not(.pw-section--panel) .pw-steps li { background: var(--pw-night); }
.pw-steps li::after { content: ""; position: absolute; left: 0; top: 0; height: 2px; width: 100%; background: linear-gradient(90deg, var(--pw-violet), var(--pw-aqua)); transform: scaleX(.12); transform-origin: left; transition: transform .7s var(--pw-out); }
.pw-steps li:hover::after { transform: scaleX(1); }
.pw-steps__n { display: block; color: var(--pw-aqua); font-size: .875rem; margin-bottom: 1.75rem; }
.pw-steps h3 { margin: 0 0 .6rem; }
.pw-steps p { margin: 0; color: var(--pw-muted); }
.pw-steps--stack li { display: grid; grid-template-columns: 3rem 1fr; gap: 0 1rem; }
.pw-steps--stack .pw-steps__n { grid-row: span 2; margin: 0; }

.pw-rules { list-style: none; margin: 0; padding: 0; counter-reset: rule; border-top: 1px solid var(--pw-line); }
.pw-rules li { counter-increment: rule; display: grid; grid-template-columns: minmax(4rem, 10rem) 1fr 1.2fr; align-items: baseline; gap: 1rem 2rem; padding: clamp(1.25rem, 2.5vw, 2rem) 0; border-bottom: 1px solid var(--pw-line); transition: padding .4s var(--pw-out), background .3s; }
.pw-rules li::before { content: counter(rule, decimal-leading-zero); font-family: var(--tf-font-display); font-weight: 900; font-size: clamp(2.5rem, 1.5rem + 3vw, 4.5rem); line-height: .8; color: transparent; -webkit-text-stroke: 1.5px var(--pw-violet-text); }
.pw-rules h3 { margin: 0; font-size: clamp(1.75rem, 1.3rem + 1.5vw, 2.75rem); }
.pw-rules p { margin: 0; color: var(--pw-muted); }
.pw-rules li:hover { padding-left: 1rem; }
.pw-rules li:hover::before { color: var(--pw-aqua); -webkit-text-stroke-color: var(--pw-aqua); }
@media (max-width: 760px) { .pw-rules li { grid-template-columns: 4rem 1fr; } .pw-rules p { grid-column: 2; } }

.pw-timeline { list-style: none; margin: 0; padding: 0 0 0 1.5rem; position: relative; display: grid; gap: 0; }
.pw-timeline::before { content: ""; position: absolute; left: 4px; top: .5rem; bottom: .5rem; width: 2px; background: linear-gradient(var(--pw-aqua), var(--pw-violet), transparent); }
.pw-timeline li { position: relative; display: grid; grid-template-columns: 7rem 1fr; gap: .25rem 1.5rem; padding: 1.25rem 0 1.25rem 1rem; border-bottom: 1px solid var(--pw-line); }
.pw-timeline li::before { content: ""; position: absolute; left: -1.5rem; top: 1.65rem; width: 10px; height: 10px; border-radius: 50%; background: var(--pw-void); border: 2px solid var(--pw-aqua); }
.pw-timeline__d { color: var(--pw-aqua); font-size: .9375rem; grid-row: span 2; padding-top: .3rem; }
.pw-timeline h3 { margin: 0; }
.pw-timeline p { margin: 0; color: var(--pw-muted); }
@media (max-width: 620px) { .pw-timeline li { grid-template-columns: 1fr; } .pw-timeline__d { grid-row: auto; } }

.pw-checklist { list-style: none; margin: 0 0 .75rem; padding: 0; display: grid; gap: .5rem; }
.pw-checklist label { display: flex; align-items: center; gap: .9rem; padding: .9rem 1rem; border-radius: var(--pw-r); background: var(--pw-void); box-shadow: inset 0 0 0 1px var(--pw-line); cursor: pointer; transition: box-shadow .3s; }
.pw-checklist input { width: 22px; height: 22px; }
.pw-checklist label:has(input:checked) { box-shadow: inset 0 0 0 1px var(--pw-aqua); }
.pw-checklist label:has(input:checked) span { text-decoration: line-through; text-decoration-color: var(--pw-aqua); color: var(--pw-muted); }

/* ================================================================ 18. Details / FAQ */
.wp-block-details { border-bottom: 1px solid var(--pw-line); padding: 0; margin: 0 !important; }
.wp-block-details:first-of-type { border-top: 1px solid var(--pw-line); }
.wp-block-details summary {
	list-style: none;
	position: relative;
	cursor: pointer;
	padding: 1.35rem 3.5rem 1.35rem 0;
	font-family: var(--tf-font-body);
	font-weight: 600;
	font-size: 1.1875rem;
	color: var(--pw-text);
	transition: color .2s;
}
.wp-block-details summary::-webkit-details-marker { display: none; }
.wp-block-details summary::after { content: "+"; position: absolute; right: .25rem; top: 50%; translate: 0 -50%; width: 36px; height: 36px; display: grid; place-items: center; border-radius: 50%; border: 1px solid var(--pw-edge); font: 400 1.375rem/1 var(--tf-font-mono); color: var(--pw-aqua); transition: transform .4s var(--pw-out), background .3s, color .3s; }
.wp-block-details summary:hover { color: var(--pw-aqua); }
.wp-block-details[open] summary::after { transform: rotate(45deg); background: var(--pw-aqua); color: var(--pw-void); }
.wp-block-details > :not(summary) { color: var(--pw-muted); max-width: 66ch; padding-bottom: 1.25rem; margin: 0; }
@supports (interpolate-size: allow-keywords) {
	@media (prefers-reduced-motion: no-preference) {
		.wp-block-details { interpolate-size: allow-keywords; }
		.wp-block-details::details-content { height: 0; overflow: clip; transition: height .45s var(--pw-out), content-visibility .45s allow-discrete; }
		.wp-block-details[open]::details-content { height: auto; }
	}
}
.pw-section--narrow .pw-h2 { margin-bottom: 1.5rem; }
.pw-faq-group + .pw-faq-group { margin-top: 3rem; }
.pw-faq-group .pw-h3 { color: var(--pw-violet-text); }

/* ================================================================ 19. Coaching roles */
.pw-roles { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: clamp(12px, 1.5vw, 20px); }
.pw-role { position: relative; padding: clamp(22px, 2.5vw, 30px); border-radius: var(--pw-r-l); background: var(--pw-night); box-shadow: inset 0 0 0 1px var(--pw-line); overflow: hidden; transition: box-shadow .4s var(--pw-out); }
.pw-role::before { content: ""; position: absolute; right: -60px; top: -60px; width: 180px; height: 180px; border-radius: 50%; background: radial-gradient(circle, rgb(123 59 255 / .35), transparent 70%); transition: transform .8s var(--pw-out); }
.pw-role:hover { box-shadow: inset 0 0 0 1px var(--pw-violet), var(--pw-glow-v); }
.pw-role:hover::before { transform: scale(1.6); }
.pw-role__head { position: relative; display: flex; align-items: center; justify-content: space-between; margin-bottom: 2rem; }
.pw-glyph { width: 56px; height: 56px; color: var(--pw-aqua); }
.pw-role__kicker { margin: 0; font-size: .8125rem; color: var(--pw-muted); }
.pw-role__title { margin: 0 0 .5rem; font-size: clamp(2rem, 1.6rem + 1vw, 2.5rem); font-weight: 900; }
.pw-role__focus { color: var(--pw-text); }
.pw-role__find { display: flex; gap: .5rem; align-items: center; font-size: .875rem; color: var(--pw-muted); margin: 1rem 0 0; }
.pw-role__find .pw-icon { color: var(--pw-violet-text); }
.pw-role__count { margin: .5rem 0 0; font: 500 .8125rem/1.3 var(--tf-font-mono); color: var(--pw-aqua); }
.pw-lines { list-style: none; margin: 0 0 1.5rem; padding: 0; display: grid; gap: .5rem; }
.pw-lines li { position: relative; padding-left: 1.5rem; color: var(--pw-muted); }
.pw-lines li::before { content: ""; position: absolute; left: 0; top: .7em; width: .7rem; height: 2px; background: var(--pw-aqua); }
.pw-lines--steps { counter-reset: st; gap: 0; border-top: 1px solid var(--pw-line); }
.pw-lines--steps li { counter-increment: st; padding: .9rem 0 .9rem 3rem; border-bottom: 1px solid var(--pw-line); color: var(--pw-text); }
.pw-lines--steps li::before { content: counter(st, decimal-leading-zero); width: auto; height: auto; background: none; top: .95rem; font: 500 .875rem/1.4 var(--tf-font-mono); color: var(--pw-aqua); }

/* ================================================================ 20. Forms */
.pw-formcard { padding: clamp(20px, 3vw, 40px); border-radius: var(--pw-r-l); background: var(--pw-night); box-shadow: inset 0 0 0 1px var(--pw-line), 0 40px 80px -40px rgb(123 59 255 / .5); }
.pw-section--panel .pw-formcard { background: var(--pw-void); }
.pw-form { display: grid; gap: 1.25rem; }
.pw-form fieldset { border: 0; margin: 0; padding: 0; display: grid; gap: 1.25rem; min-width: 0; }
.pw-form legend { font-family: var(--tf-font-display); font-weight: 900; text-transform: uppercase; font-size: clamp(1.875rem, 1.4rem + 1.4vw, 2.75rem); line-height: 1; margin-bottom: 1.25rem; padding: 0; color: var(--pw-text); }
.pw-form legend:focus { outline: none; }
.pw-field { display: grid; gap: .45rem; }
.pw-field label { font-weight: 600; font-size: .9375rem; }
.pw-opt { color: var(--pw-muted); font-weight: 400; }
.pw-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
.pw-option { position: relative; display: grid; gap: .5rem; padding: 1.1rem; border-radius: var(--pw-r-l); background: var(--pw-void); box-shadow: inset 0 0 0 1px var(--pw-edge); cursor: pointer; transition: box-shadow .25s, background .25s, transform .2s; }
.pw-section--panel .pw-option { background: var(--pw-night); }
.pw-option input { position: absolute; opacity: 0; inset: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.pw-option svg { width: 40px; height: 40px; color: var(--pw-violet-text); transition: color .25s, transform .4s var(--pw-out); }
.pw-option span { font-weight: 650; font-size: 1.0625rem; }
.pw-option small { color: var(--pw-muted); font-size: .875rem; }
.pw-option:hover { box-shadow: inset 0 0 0 1px var(--pw-text); }
.pw-option:has(input:checked) { box-shadow: inset 0 0 0 2px var(--pw-aqua), var(--pw-glow-a); background: rgb(46 242 224 / .06); }
.pw-option:has(input:checked) svg { color: var(--pw-aqua); transform: scale(1.1) rotate(-6deg); }
.pw-option:has(input:focus-visible) { outline: 3px solid var(--pw-aqua); outline-offset: 3px; }
.pw-options--time { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 620px) { .pw-options--time { grid-template-columns: 1fr 1fr; } }
.pw-progress { display: none; height: 3px; background: var(--pw-line); border-radius: 3px; overflow: hidden; }
.pw-progress__bar { display: block; height: 100%; background: linear-gradient(90deg, var(--pw-violet), var(--pw-aqua)); transform: scaleX(var(--p, 0)); transform-origin: left; transition: transform .6s var(--pw-out); }
.pw-progress__label { display: none; margin: -.5rem 0 0; font: 500 .8125rem/1 var(--tf-font-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--pw-muted); }
.pw-form.is-stepped .pw-progress, .pw-form.is-stepped .pw-progress__label { display: block; }
.pw-step__nav { display: flex; gap: .75rem; justify-content: space-between; margin-top: .5rem; }
.pw-step__nav .pw-btn--aqua { margin-left: auto; }
@media (prefers-reduced-motion: no-preference) {
	.pw-form.is-stepped .pw-step:not([hidden]) { animation: pw-step-in .5s var(--pw-out); }
}
@keyframes pw-step-in { from { opacity: 0; transform: translateX(24px); } }
.pw-form__foot { display: grid; gap: .75rem; justify-items: start; margin-top: .5rem; }
.pw-form__foot .tf-demo-notice { margin: 0; }
.pw-form button[type="submit"], .pw-form button[data-tf-submit] { background: var(--pw-aqua); border-color: var(--pw-aqua); color: var(--pw-void); }

/* ================================================================ 21. Timetable */
.pw-tt__controls { display: grid; gap: 1rem; margin-bottom: 1.5rem; position: sticky; top: var(--tf-header-height); z-index: 5; padding-block: 1rem; background: rgb(7 6 11 / .88); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border-bottom: 1px solid var(--pw-line); }
.admin-bar .pw-tt__controls { top: calc(var(--tf-header-height) + 32px); }
.pw-days { position: relative; display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); gap: 0; border-radius: var(--pw-r-l); box-shadow: inset 0 0 0 1px var(--pw-line); overflow: hidden; }
.pw-days__ink { position: absolute; top: 0; bottom: 0; left: 0; width: var(--ink-w, 0); transform: translateX(var(--ink-x, 0)); background: var(--pw-aqua); z-index: 0; transition: transform .5s var(--pw-out), width .5s var(--pw-out); box-shadow: var(--pw-glow-a); }
button.pw-day-btn {
	position: relative;
	z-index: 1;
	display: grid;
	justify-items: center;
	gap: .2rem;
	min-height: 64px;
	padding: .5rem .25rem;
	border: 0;
	background: transparent;
	color: var(--pw-text);
	cursor: pointer;
	transition: color .3s;
}
button.pw-day-btn:hover { background: rgb(255 255 255 / .04); color: var(--pw-text); }
button.pw-day-btn[aria-pressed="true"], button.pw-day-btn[aria-pressed="true"]:hover { color: var(--pw-void); background: transparent; }
.pw-js .pw-days:not([style]) button.pw-day-btn[aria-pressed="true"] { background: var(--pw-aqua); }
.pw-day-btn__s { font-family: var(--tf-font-display); font-weight: 900; text-transform: uppercase; font-size: 1.375rem; line-height: 1; }
.pw-day-btn__n { font: 500 .75rem/1 var(--tf-font-mono); opacity: .75; }
.pw-tt__row { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .75rem 1.5rem; }
.pw-switch { position: relative; display: inline-flex; align-items: center; gap: .75rem; cursor: pointer; font-weight: 500; min-height: 44px; }
.pw-switch input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.pw-switch__track { position: relative; width: 48px; height: 28px; border-radius: 999px; background: var(--pw-line); box-shadow: inset 0 0 0 1px var(--pw-edge); transition: background .3s; flex: none; }
.pw-switch__track::after { content: ""; position: absolute; left: 4px; top: 4px; width: 20px; height: 20px; border-radius: 50%; background: var(--pw-text); transition: transform .35s var(--pw-out), background .3s; }
.pw-switch input:checked + .pw-switch__track { background: var(--pw-violet); }
.pw-switch input:checked + .pw-switch__track::after { transform: translateX(20px); background: var(--pw-aqua); }
.pw-switch input:focus-visible + .pw-switch__track { outline: 3px solid var(--pw-aqua); outline-offset: 3px; }
.pw-count { font: 500 .875rem/1.4 var(--tf-font-mono); color: var(--pw-muted); margin: 0 0 1.5rem; }
.pw-count:focus { outline: none; }
.pw-tt__day { margin-bottom: clamp(2rem, 4vw, 3.5rem); view-transition-name: none; }
.pw-tt__dayname { display: flex; align-items: center; gap: 1rem; margin: 0 0 .75rem; font-size: clamp(2.5rem, 1.6rem + 3vw, 4.5rem); font-weight: 900; }
.pw-tt__day.is-today .pw-tt__dayname > span:first-child { color: var(--pw-aqua); }
.pw-tt__today { font: 600 .75rem/1 var(--tf-font-mono); letter-spacing: .1em; padding: .4em .7em; border-radius: 999px; border: 1px solid var(--pw-aqua); color: var(--pw-aqua); }
.pw-tt__today[hidden] { display: none; }
.pw-table { width: 100%; border-collapse: collapse; margin: 0; border: 0; }
.pw-table thead th { padding: .6rem 1rem; font: 500 .75rem/1.2 var(--tf-font-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--pw-muted); text-align: left; border: 0; border-bottom: 1px solid var(--pw-line); }
.pw-table td { padding: 1.1rem 1rem; border: 0; border-bottom: 1px solid var(--pw-line); vertical-align: middle; }
.pw-session { position: relative; transition: background .25s; }
.pw-session:hover { background: rgb(123 59 255 / .08); }
.pw-session td:first-child { box-shadow: inset 3px 0 0 var(--pw-violet); }
.pw-session--aqua td:first-child { box-shadow: inset 3px 0 0 var(--pw-aqua); }
.pw-session__time { white-space: nowrap; width: 9rem; }
.pw-session__time .pw-mono { display: block; font-size: 1.25rem; color: var(--pw-text); }
.pw-session__end { display: block; font-size: .8125rem; color: var(--pw-muted); }
.pw-session__time .pw-next-tag { margin-top: .4rem; }
.pw-session__class a { font-family: var(--tf-font-display); font-weight: 800; text-transform: uppercase; font-size: 1.75rem; line-height: 1; color: var(--pw-text); text-decoration: none; margin-right: .6rem; }
.pw-session__class a:hover { color: var(--pw-aqua); }
.pw-session__note { display: block; margin-top: .35rem; font-size: .8125rem; color: var(--pw-violet-text); }
.pw-session__coach, .pw-session__room { color: var(--pw-muted); font-size: .9375rem; }
.pw-session__act { text-align: right; }
.pw-session.is-past .pw-session__class a, .pw-session.is-past .pw-session__time .pw-mono { color: var(--pw-muted); }
.pw-session.is-next { background: rgb(46 242 224 / .06); }
.pw-empty { color: var(--pw-muted); }
@media (max-width: 860px) {
	.pw-days { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.pw-days__ink { display: none; }
	.pw-js .pw-days button.pw-day-btn[aria-pressed="true"] { background: var(--pw-aqua); }
	.pw-tt__controls { position: static; }
	.pw-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
	.pw-table, .pw-table tbody, .pw-table tr, .pw-table td { display: block; width: 100%; }
	.pw-session { display: grid !important; grid-template-columns: auto 1fr; gap: .4rem 1rem; padding: 1rem 1rem 1rem 1.1rem; border-bottom: 1px solid var(--pw-line); box-shadow: inset 3px 0 0 var(--pw-violet); }
	.pw-session--aqua { box-shadow: inset 3px 0 0 var(--pw-aqua); }
	.pw-session[hidden] { display: none !important; }
	.pw-table td { padding: 0; border: 0; box-shadow: none !important; }
	.pw-session__time { width: auto; grid-row: 1 / span 5; }
	.pw-session > td:not(.pw-session__time) { grid-column: 2; }
	.pw-session__coach::before, .pw-session__room::before { content: attr(data-label) ": "; color: var(--pw-text); }
	.pw-session__act { text-align: left; margin-top: .4rem; }
}

/* ================================================================ 22. Single class */
.pw-classhero { position: relative; isolation: isolate; overflow: clip; min-height: min(86svh, 820px); display: grid; align-items: end; padding-block: clamp(120px, 16vw, 200px) clamp(48px, 7vw, 96px); border-bottom: 1px solid var(--pw-line); }
.pw-classhero__media { position: absolute; inset: 0; z-index: -2; margin: 0; }
.pw-classhero__img { width: 100%; height: 100%; object-fit: cover; object-position: 50% var(--y, 50%); filter: grayscale(.45) contrast(1.1) brightness(.6); }
.pw-classhero::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(100deg, rgb(59 29 143 / .75), transparent 65%), linear-gradient(0deg, var(--pw-void), transparent 70%); }
.pw-classhero--aqua::before { background: linear-gradient(100deg, rgb(11 111 104 / .6), transparent 65%), linear-gradient(0deg, var(--pw-void), transparent 70%); }
.pw-classhero__body { width: 100%; }
.pw-crumbs ol { list-style: none; margin: 0 0 1.5rem; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; font: 500 .8125rem/1.4 var(--tf-font-mono); letter-spacing: .06em; text-transform: uppercase; }
.pw-crumbs li + li::before { content: "/"; margin-right: .5rem; color: var(--pw-muted); }
.pw-crumbs a { color: var(--pw-text); text-decoration: none; }
.pw-crumbs a:hover { color: var(--pw-aqua); }
.pw-crumbs [aria-current] { color: var(--pw-muted); }
.pw-specs { list-style: none; margin: 2rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0; border-top: 1px solid rgb(255 255 255 / .15); }
.pw-specs li { padding: 1rem 2rem 0 0; margin-right: 2rem; display: grid; gap: .35rem; }
.pw-specs__k { font: 500 .75rem/1 var(--tf-font-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--pw-muted); }
.pw-specs__v { font-weight: 600; }
.pw-callout { display: flex; gap: .75rem; padding: 1rem 1.25rem; border-radius: var(--pw-r); background: var(--pw-night); box-shadow: inset 3px 0 0 var(--pw-aqua); }
.pw-callout .pw-icon { color: var(--pw-aqua); margin-top: .15rem; }
.pw-prose { max-width: 70ch; }
.pw-prose p { color: var(--pw-text); }
.pw-prose h2 { font-size: clamp(1.875rem, 1.4rem + 1.6vw, 2.75rem); margin: 3rem 0 1rem; }
.pw-prose h2:first-child { margin-top: 0; }
.pw-prose ul { margin: 0 0 1.5rem 1.2rem; color: var(--pw-muted); }
.pw-prose li { margin-bottom: .5rem; }
.pw-when { list-style: none; margin: 1.5rem 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr)); gap: 12px; }
.pw-when li { display: grid; gap: .3rem; padding: 1.25rem; border-radius: var(--pw-r-l); background: var(--pw-void); box-shadow: inset 0 0 0 1px var(--pw-line); }
.pw-when__d { font-family: var(--tf-font-display); font-weight: 900; text-transform: uppercase; font-size: 1.75rem; line-height: 1; }
.pw-when__t { color: var(--pw-aqua); }
.pw-when__c { font-size: .875rem; color: var(--pw-muted); }

/* ================================================================ 23. Visit */
.pw-map { width: 100%; height: auto; display: block; margin-bottom: 1rem; }
.pw-map__wall { fill: var(--pw-night); stroke: var(--pw-edge); stroke-width: 2; }
.pw-map__zone rect { fill: rgb(123 59 255 / .12); stroke: var(--pw-violet); stroke-width: 1.5; transition: fill .3s; }
.pw-map__zone--aqua rect { fill: rgb(46 242 224 / .1); stroke: var(--pw-aqua); }
.pw-map__zone text { fill: var(--pw-text); font-family: var(--tf-font-display); font-weight: 900; font-size: 22px; letter-spacing: .02em; }
.pw-map__zone:hover rect { fill: rgb(123 59 255 / .3); }
.pw-map__dot { fill: var(--pw-aqua); }
@media (prefers-reduced-motion: no-preference) {
	.pw-map__zone rect { stroke-dasharray: 1200; stroke-dashoffset: 0; animation: pw-draw 2.4s var(--pw-out) both; animation-delay: calc(var(--i) * 140ms); }
	.pw-map__dot { animation: pw-blink 1.6s steps(2, jump-none) infinite; }
}
@keyframes pw-draw { from { stroke-dashoffset: 1200; } }
@keyframes pw-blink { 50% { opacity: .2; } }
.pw-hours { margin: 0 0 1rem; border-top: 1px solid var(--pw-line); }
.pw-hours div { display: flex; justify-content: space-between; gap: 1rem; padding: 1rem 0; border-bottom: 1px solid var(--pw-line); }
.pw-hours dt { font-weight: 600; }
.pw-hours dd { margin: 0; color: var(--pw-muted); }

/* ================================================================ 24. Credits table, prose pages */
.tf-credits th, .tf-credits td { border-bottom-color: var(--pw-line); color: var(--pw-text); }
.tf-credits th { font: 500 .75rem/1.2 var(--tf-font-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--pw-muted); }
.tf-credits__thumb { filter: grayscale(.3); }

/* ================================================================ 25. 404 */
.pw-404__inner { position: relative; min-height: 80svh; display: grid; align-items: center; overflow: clip; padding-block: clamp(80px, 12vw, 160px); }
.pw-404__code { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; margin: 0; font-family: var(--tf-font-display); font-weight: 900; font-size: clamp(12rem, 40vw, 34rem); line-height: .8; color: transparent; -webkit-text-stroke: 2px var(--pw-line); pointer-events: none; z-index: -1; }
.pw-404__code span:nth-child(2) { -webkit-text-stroke-color: var(--pw-violet); text-shadow: 0 0 60px rgb(123 59 255 / .5); }
.pw-404__links { list-style: none; margin: 2rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .75rem; }
@media (prefers-reduced-motion: no-preference) {
	.pw-404__code span:nth-child(2) { animation: pw-flicker 3.2s linear 2; }
}
@keyframes pw-flicker { 0%, 19%, 22%, 62%, 64%, 100% { opacity: 1; } 20%, 21%, 63% { opacity: .2; } }

/* ================================================================ 26. Footer */
.pw-footer { position: relative; background: var(--pw-void); border-top: 1px solid var(--pw-line); overflow: clip; }
.pw-footer__inner { max-width: var(--tf-container); margin-inline: auto; padding: clamp(3rem, 6vw, 5rem) clamp(16px, 4vw, 48px) 2rem; display: grid; grid-template-columns: 1fr 1.6fr; gap: clamp(2rem, 6vw, 6rem); }
.pw-footer__brand .pw-logo__svg { width: 220px; margin-bottom: 1.25rem; color: var(--pw-text); }
.pw-footer__brand p { max-width: 38ch; color: var(--pw-muted); }
.pw-footer__nav > ul { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; margin: 0; padding: 0; list-style: none; }
.pw-footer__nav > ul > li > a { display: block; margin-bottom: 1rem; font: 500 .75rem/1.2 var(--tf-font-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--pw-violet-text); text-decoration: none; }
.pw-footer__nav ul ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .55rem; }
.pw-footer__nav ul ul a { color: var(--pw-text); text-decoration: none; display: inline-block; min-height: 24px; }
.pw-footer__nav ul ul a:hover { color: var(--pw-aqua); }
@media (max-width: 860px) { .pw-footer__inner { grid-template-columns: 1fr; } .pw-footer__nav > ul { grid-template-columns: 1fr 1fr; } }
.pw-bigword { position: relative; margin: 0; padding: 0 clamp(8px, 2vw, 24px); font-family: var(--tf-font-display); font-weight: 900; font-size: clamp(5rem, 22vw, 24rem); line-height: .78; letter-spacing: -.01em; white-space: nowrap; color: transparent; -webkit-text-stroke: 1.5px var(--pw-line); text-align: center; user-select: none; }
.pw-bigword__fill { position: absolute; inset: 0; padding: inherit; color: var(--pw-violet); -webkit-text-stroke: 0; background: linear-gradient(180deg, var(--pw-violet) 30%, var(--pw-aqua)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; clip-path: inset(0 0 0 0); }
@supports (animation-timeline: view()) {
	@media (prefers-reduced-motion: no-preference) {
		.pw-bigword__fill { clip-path: inset(100% 0 0 0); animation: pw-rise-fill linear both; animation-timeline: view(); animation-range: entry 10% cover 60%; }
	}
}
@keyframes pw-rise-fill { to { clip-path: inset(0 0 0 0); } }
.site-footer, .site-info { background: var(--pw-void) !important; color: var(--pw-muted); }
.site-footer .site-info { border-top: 1px solid var(--pw-line); font-size: .875rem; }
.site-info .inside-site-info { max-width: var(--tf-container); }
.site-info .copyright-bar { text-align: left; width: 100%; }
.site-footer a, .site-info a { color: var(--pw-text); }
.site-footer a:hover, .site-info a:hover { color: var(--pw-aqua); }
.pw-copy { display: block; margin-bottom: .35rem; }
.tf-studio-card { border-color: var(--pw-edge); color: var(--pw-text); }
.tf-studio-card__pitch { text-transform: uppercase; font-weight: 900; font-size: 1.75rem; }
.tf-studio-card__cta { color: var(--pw-void) !important; background: var(--pw-aqua); border-color: var(--pw-aqua); }
.tf-concept-footer { color: var(--pw-muted); }

/* ================================================================ 27. Reveal tuning and reduced motion */
/* Image wipe: the figure fades (base reveal) while the photo inside unclips upward.
   The clip sits on the image, not the observed element, so the observer still sees it. */
@media (prefers-reduced-motion: no-preference) {
	.tf-js [data-pw-wipe] img { transition: clip-path 1.1s var(--pw-out), transform 1.4s var(--pw-out); }
	.tf-js [data-pw-wipe]:not(.is-in) img { clip-path: inset(100% 0 0 0); transform: scale(1.12); }
}
@media (prefers-reduced-motion: reduce) {
	body::after { display: none; }
	.pw-line > span, .pw-kinetic .pw-w { transform: none !important; opacity: 1 !important; filter: none !important; }
	.pw-hs { height: auto !important; }
	.pw-fill__top { display: none !important; }
	.pw-fill__base { color: var(--pw-text) !important; -webkit-text-stroke: 0 !important; }
	.pw-bigword__fill { clip-path: none !important; }
}
@media (forced-colors: active) {
	.pw-line--outline > span, .pw-fill__base, .pw-bigword, .pw-rules li::before, .pw-404__code { color: CanvasText; -webkit-text-stroke: 0; }
	.pw-meter__bars i { forced-color-adjust: none; }
}
@media print {
	body::after, .site-header, .tf-concept-bar, .pw-footer, .pw-marquee, .pw-hero__media, .pw-pagehero__media { display: none !important; }
	body { background: #fff; color: #000; }
}

/* GeneratePress's button colours outrank the block-style rules above; restate the
   ghost button so its label stays light on the dark hero. */
body .wp-block-button.is-style-pw-ghost .wp-block-button__link { background: transparent; color: var(--pw-text); border-color: var(--pw-text); }
body .wp-block-button.is-style-pw-ghost .wp-block-button__link:hover,
body .wp-block-button.is-style-pw-ghost .wp-block-button__link:focus-visible { color: var(--pw-void); }
