/* ==========================================================================
   Deansgate Haus - homepage
   Ported from the Lovable/TanStack export (src/components/haus/*).
   Tokens taken verbatim from source src/styles.css.
   ========================================================================== */

:root {
	--dh-linen: #faf8f3;
	--dh-burgundy: #3d0a0a;
	--dh-champagne: #d4a57a;
	--dh-body: "Montserrat", system-ui, sans-serif;
	--dh-display: "Source Serif 4", Georgia, serif;
	--dh-luxe: 0.18em;
	--dh-max: 1280px;
}

/* Astra resets ------------------------------------------------------------ */
.dh-home .site-content .ast-container { max-width: none; padding: 0; }
.dh-home .entry-content > .elementor { margin: 0; }
.dh-home .ast-single-post .entry-header,
.dh-home .entry-header { display: none; }

.dh-sec { font-family: var(--dh-body); }

/* Every heading in the source homepage uses font-body (Montserrat), not the
   display serif - Source Serif 4 is declared in the tokens but never applied on
   this page. Astra's heading font would otherwise win and render them serif. */
.dh-sec :is(h1, h2, h3, h4, h5, h6) {
	font-family: var(--dh-body);
	font-weight: 400;
}
.dh-wrap { max-width: var(--dh-max); margin-inline: auto; padding-inline: 20px; }
@media (min-width: 768px) { .dh-wrap { padding-inline: 24px; } }

.dh-eyebrow {
	font-family: var(--dh-body);
	font-size: 11px;
	letter-spacing: var(--dh-luxe);
	text-transform: uppercase;
	margin: 0 0 18px;
}
.dh-italic { font-style: italic; }

/* Buttons ----------------------------------------------------------------- */
/* ONE button component.
   Shape, size, tracking, padding and height are fixed here; a variant changes
   colour only. Previously the base was square/11px/16-40 and --pill overrode
   three of those, so --champagne and --outline rendered as a different shape
   from --pill on the same page. The `.elementor-button.dh-btn` selector is
   deliberate: Elementor's own `.elementor-button` is (0,1,0) and would
   otherwise win or lose on source order alone. */
.dh-btn,
a.dh-btn,
button.dh-btn,
.dh-btnwrap .elementor-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-family: var(--dh-body);
	font-size: 12px;
	letter-spacing: var(--dh-luxe);
	text-transform: uppercase;
	line-height: 1;
	min-height: 52px;
	padding: 16px 32px;
	border-radius: 999px;
	text-decoration: none;
	transition: background-color .4s ease, color .4s ease, border-color .4s ease;
	border: 1px solid transparent;
	cursor: pointer;
}
/* Small size, for buttons that sit inside cards rather than under prose. */
.dh-btn--sm { min-height: 42px; padding: 12px 24px; font-size: 11px; }

.dh-btn--pill,
.dh-btnwrap .elementor-button { background: var(--dh-burgundy); color: var(--dh-linen); border-color: var(--dh-burgundy); }
.dh-btn--pill:hover,
.dh-btnwrap .elementor-button:hover,
.dh-btnwrap .elementor-button:focus { background: var(--dh-champagne); color: var(--dh-burgundy); border-color: var(--dh-champagne); }
/* Astra injects its dynamic CSS inline, AFTER this file, and sets
   `body .elementor-button.elementor-size-sm{font-size:1rem}` at (0,3,1) plus
   `.elementor-widget-button .elementor-button{font-size:1rem}` at (0,2,0).
   Those beat `.dh-btnwrap .elementor-button` (0,2,0) on specificity and source
   order, which left every Elementor button at 16px while the rest of the site
   sat at 12px. This selector is (0,3,2) so it wins outright. Same class of
   trap as the bare-button defence in inc/nav.php. */
body .dh-btnwrap a.elementor-button,
body .dh-btnwrap a.elementor-button:hover,
body .dh-btnwrap a.elementor-button:focus,
body .dh-btnwrap a.elementor-button:visited {
	font-family: var(--dh-body);
	font-size: 12px;
	letter-spacing: var(--dh-luxe);
	text-transform: uppercase;
	line-height: 1;
	min-height: 52px;
	padding: 16px 32px;
	border-radius: 999px;
}

/* The wrapper itself must stay invisible: it only carries the marker class. */
.dh-btnwrap { background: none; padding: 0; border: 0; border-radius: 0; min-height: 0; display: block; }
.dh-btnwrap .elementor-button-content-wrapper { display: contents; }
.dh-btn--champagne { background: var(--dh-champagne); color: var(--dh-burgundy); border-color: var(--dh-champagne); box-shadow: 0 20px 60px -10px rgba(0,0,0,.6), 0 0 40px rgba(212,165,122,.4); }
.dh-btn--champagne:hover { background: var(--dh-linen); color: var(--dh-burgundy); border-color: var(--dh-linen); }
.dh-btn--outline { background: transparent; color: var(--dh-champagne); border-color: var(--dh-champagne); }
.dh-btn--outline:hover { background: var(--dh-champagne); color: var(--dh-burgundy); }

/* ==========================================================================
   Hero
   ========================================================================== */
.dh-hero {
	position: relative;
	width: 100%;
	overflow: hidden;
	background: var(--dh-burgundy);
	color: var(--dh-linen);
	height: 100svh;
	min-height: 560px;
}
.dh-hero__media { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }
.dh-hero__media video {
	position: absolute; left: 50%; top: 50%;
	width: max(150vw, 266.67vh); height: max(84.375vw, 150vh);
	transform: translate(-50%, -50%);
	object-fit: cover;
}
.dh-hero__scrim-1 { position: absolute; inset: 0; background: rgba(61,10,10,.4); }
.dh-hero__scrim-2 { position: absolute; inset: 0; background: linear-gradient(to bottom, rgba(61,10,10,.3), transparent, rgba(61,10,10,.9)); }

.dh-hero__inner {
	position: relative; z-index: 2;
	height: 100%;
	display: flex; flex-direction: column;
	align-items: center; justify-content: center;
	text-align: center;
	padding: 96px 20px 0;
}
/* Duplicated from the reviews section into the hero as the first visible
   element. Same figures; the palette inverts because the ground is the video
   rather than linen. */
.dh-hero__rating {
	display: flex; align-items: center; justify-content: center;
	flex-wrap: wrap; gap: 6px 14px; margin-bottom: 20px;
}
.dh-hero__stars { color: var(--dh-champagne); letter-spacing: 2px; font-size: 16px; line-height: 1; }
.dh-hero__score { font-size: 14px; color: var(--dh-linen); letter-spacing: .04em; }
.dh-hero__score span { color: rgba(250,248,243,.72); }
.dh-hero__from {
	font-size: .6rem; letter-spacing: var(--dh-luxe); text-transform: uppercase;
	color: rgba(250,248,243,.6);
}
.dh-hero__eyebrow { color: rgba(212,165,122,.9); }
.dh-hero__title {
	font-family: var(--dh-body);
	font-weight: 400;
	font-size: 32px;
	line-height: 1.2;
	letter-spacing: -0.01em;
	margin: 0;
	color: var(--dh-linen);
}
.dh-hero__sub {
	font-size: 14px;
	line-height: 1.7;
	letter-spacing: .02em;
	color: rgba(250,248,243,.8);
	max-width: 48rem;
	margin: 24px auto 0;
}
.dh-hero__cta { margin-top: 40px; }
.dh-hero__scroll {
	position: absolute; bottom: 32px; left: 50%; transform: translateX(-50%);
	z-index: 2; font-size: .6rem; letter-spacing: var(--dh-luxe);
	text-transform: uppercase; color: rgba(250,248,243,.5);
	display: none;
}
@media (min-width: 640px) { .dh-hero__scroll { display: block; } }
@media (min-width: 768px) {
	.dh-hero__inner { padding-top: 128px; }
	.dh-hero__title { font-size: 60px; line-height: 1.1; }
	.dh-hero__sub { font-size: 17px; margin-top: 32px; }
	.dh-hero__cta { margin-top: 48px; }
}

/* ==========================================================================
   Offer strip
   ========================================================================== */
.dh-offer {
	background: var(--dh-burgundy);
	color: var(--dh-linen);
	border-top: 1px solid rgba(250,248,243,.1);
	border-bottom: 1px solid rgba(250,248,243,.1);
}
.dh-offer__inner {
	max-width: 72rem; margin-inline: auto;
	padding: 20px;
	display: flex; flex-direction: column; align-items: center; justify-content: center;
	gap: 12px; text-align: center;
}
.dh-offer__label { font-size: 11px; letter-spacing: var(--dh-luxe); text-transform: uppercase; color: rgba(250,248,243,.7); margin: 0; }
.dh-offer__copy { font-size: 14px; line-height: 1.6; margin: 0; color: var(--dh-linen); }
.dh-offer__copy strong { font-weight: 500; }
.dh-offer__link { font-size: 11px; letter-spacing: var(--dh-luxe); text-transform: uppercase; color: var(--dh-linen); text-decoration: underline; text-underline-offset: 4px; }
.dh-offer__link:hover { color: rgba(250,248,243,.7); }
@media (min-width: 768px) {
	.dh-offer__inner { flex-direction: row; gap: 24px; padding: 24px; }
	.dh-offer__copy { font-size: 15px; }
}

/* ==========================================================================
   About + stats
   ========================================================================== */
.dh-about { background: var(--dh-linen); color: var(--dh-burgundy); padding: 48px 24px; }
.dh-about__grid { max-width: var(--dh-max); margin-inline: auto; display: grid; gap: 40px; }
.dh-about__lead { font-size: 20px; line-height: 1.6; margin: 0; }
.dh-about__stats {
	max-width: var(--dh-max); margin: 40px auto 0;
	display: grid; grid-template-columns: repeat(2, 1fr); gap: 32px;
	border-top: 1px solid rgba(61,10,10,.15); padding-top: 40px;
}
.dh-stat__value { font-size: 36px; letter-spacing: -0.02em; margin: 0; line-height: 1; }
.dh-stat__label { font-size: 12px; color: rgba(61,10,10,.6); margin: 12px 0 0; line-height: 1.5; max-width: 14ch; }
@media (min-width: 768px) {
	.dh-about { padding: 64px 48px; }
	.dh-about__grid { grid-template-columns: 3fr 9fr; gap: 64px; }
	.dh-about__lead { font-size: 24px; }
	.dh-about__stats { grid-template-columns: repeat(4, 1fr); gap: 40px; }
	.dh-stat__value { font-size: 48px; }
	.dh-stat__label { font-size: 14px; }
}

/* ==========================================================================
   Classes carousel
   ========================================================================== */
.dh-classes { background: var(--dh-linen); color: var(--dh-burgundy); padding: 60px 0; }
.dh-classes__head {
	max-width: var(--dh-max); margin: 0 auto 40px;
	padding-inline: 20px;
	display: flex; align-items: flex-end; justify-content: space-between;
	flex-wrap: wrap; gap: 24px;
}
.dh-classes__eyebrow { color: rgba(61,10,10,.5); }
.dh-classes__title { font-size: 28px; line-height: 1.25; font-weight: 400; max-width: 36rem; margin: 0; }
.dh-classes__note { font-size: 14px; line-height: 1.8; letter-spacing: .03em; color: rgba(61,10,10,.6); max-width: 20rem; margin: 0; }

.dh-classes__scroller {
	display: flex; gap: 16px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	padding: 0 20px 8px;
	scrollbar-width: none;
	-webkit-overflow-scrolling: touch;
}
.dh-classes__scroller::-webkit-scrollbar { display: none; }

.dh-class {
	position: relative; flex: 0 0 auto; overflow: hidden;
	scroll-snap-align: start; background: var(--dh-burgundy);
	height: 18rem; width: 42vw;
	transition: width .7s cubic-bezier(.22,1,.36,1);
}
.dh-class.is-open { width: 88vw; }
.dh-class__media { position: absolute; inset: 0; height: 100%; width: 100%; object-fit: cover; transition: transform 1.6s ease-out; }
.dh-class:hover .dh-class__media { transform: scale(1.05); }
.dh-class__scrim { position: absolute; inset: 0; transition: opacity .5s ease; background: linear-gradient(to top, rgba(61,10,10,.85), rgba(61,10,10,.1), transparent); }
.dh-class.is-open .dh-class__scrim { background: linear-gradient(to right, rgba(61,10,10,.85), rgba(61,10,10,.4), transparent); }

.dh-class__tag {
	position: absolute; top: 12px; left: 12px;
	display: inline-flex; align-items: center; gap: 6px;
	border-radius: 999px; padding: 4px 10px;
	border: 1px solid rgba(255,255,255,.4);
	font-size: 9px; letter-spacing: .14em; text-transform: uppercase; color: #fff;
	background: linear-gradient(135deg, rgba(255,255,255,.18), rgba(255,255,255,.06));
	-webkit-backdrop-filter: blur(14px) saturate(160%);
	backdrop-filter: blur(14px) saturate(160%);
}
.dh-class__toggle {
	position: absolute; top: 12px; right: 12px;
	height: 32px; width: 32px; border-radius: 999px;
	display: flex; align-items: center; justify-content: center;
	background: var(--dh-linen); color: var(--dh-burgundy);
	border: 0; cursor: pointer; font-size: 16px; line-height: 1;
	transition: all .5s ease;
}
.dh-class__toggle:hover { background: var(--dh-champagne); }
.dh-class.is-open .dh-class__toggle { background: transparent; color: var(--dh-linen); border: 1px solid rgba(255,255,255,.5); }

.dh-class__body {
	position: absolute; bottom: 0; left: 0; right: 0;
	padding: 16px; color: #fff;
	text-shadow: 0 2px 18px rgba(0,0,0,.55);
	transition: all .7s ease-out;
}
.dh-class.is-open .dh-class__body { right: auto; max-width: 560px; }
/* Explicit colour: Astra sets a global heading colour that otherwise renders
   these burgundy-on-photograph and effectively invisible. */
.dh-class__title { font-size: 13px; line-height: 1.25; font-weight: 400; margin: 0; color: #fff; }
.dh-class__reveal { display: grid; grid-template-rows: 0fr; opacity: 0; margin-top: 0; transition: all .7s ease-out; }
.dh-class.is-open .dh-class__reveal { grid-template-rows: 1fr; opacity: 1; margin-top: 24px; }
.dh-class__reveal > div { overflow: hidden; }
.dh-class__desc { font-size: 16px; line-height: 1.6; color: #fff; max-width: 28rem; margin: 0; }
/* Same component at --sm metrics; only the ground colour differs, because it
   sits on a photograph rather than on linen. */
.dh-class__link {
	margin-top: 24px; display: inline-flex; align-items: center; justify-content: center;
	background: var(--dh-linen); color: var(--dh-burgundy);
	font-size: 11px; letter-spacing: var(--dh-luxe); text-transform: uppercase; line-height: 1;
	min-height: 42px; padding: 12px 24px; border-radius: 999px; text-decoration: none;
	border: 1px solid transparent;
	transition: background-color .4s ease, color .4s ease, border-color .4s ease;
}
.dh-class__link:hover { background: var(--dh-champagne); color: var(--dh-burgundy); }

.dh-classes__nav { max-width: var(--dh-max); margin: 40px auto 0; padding-inline: 24px; }
.dh-classes__nav-inner { border-top: 1px solid rgba(61,10,10,.15); padding-top: 24px; display: flex; justify-content: flex-end; gap: 12px; }
.dh-classes__arrow {
	height: 44px; width: 44px; border-radius: 999px; border: 0; cursor: pointer;
	background: var(--dh-burgundy); color: var(--dh-linen);
	display: flex; align-items: center; justify-content: center;
	transition: background-color .3s ease;
}
.dh-classes__arrow:hover { background: rgba(61,10,10,.85); }

@media (min-width: 768px) {
	.dh-classes { padding: 160px 0; }
	.dh-classes__head { margin-bottom: 80px; padding-inline: 24px; }
	.dh-classes__title { font-size: 48px; line-height: 1.1; }
	.dh-classes__scroller { gap: 24px; padding-inline: 48px; }
	.dh-class { height: 34rem; width: 400px; }
	.dh-class.is-open { width: 860px; }
	.dh-class__tag { top: 20px; left: 20px; padding: 8px 16px; font-size: .7rem; }
	.dh-class__toggle { top: 20px; right: 20px; height: 40px; width: 40px; font-size: 20px; }
	.dh-class__body { padding: 40px; }
	.dh-class__title { font-size: 24px; line-height: 1.2; }
}

/* ==========================================================================
   Reviews
   ========================================================================== */
.dh-reviews { background: var(--dh-linen); color: var(--dh-burgundy); padding: 80px 24px; }
.dh-reviews__inner { max-width: 72rem; margin-inline: auto; }
.dh-reviews__rating { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.dh-reviews__stars { color: var(--dh-champagne); letter-spacing: 2px; font-size: 18px; }
.dh-reviews__score { font-size: 14px; color: rgba(61,10,10,.7); }
.dh-reviews__head { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; margin-bottom: 40px; }
.dh-reviews__eyebrow { color: rgba(61,10,10,.5); font-size: .65rem; }
.dh-reviews__title { font-size: 30px; line-height: 1.2; font-weight: 400; margin: 0; }
.dh-reviews__grid { display: grid; grid-template-columns: 1fr; gap: 20px; }
.dh-review {
	border-radius: 16px; border: 1px solid rgba(61,10,10,.1);
	background: rgba(255,255,255,.6); padding: 28px;
	display: flex; flex-direction: column; justify-content: space-between;
	min-height: 260px; margin: 0;
}
/* display:flex above outranks the UA rule for [hidden], so mobile paging would
   otherwise show all six cards at once. */
.dh-review[hidden] { display: none; }
.dh-review blockquote { font-size: .95rem; line-height: 1.6; color: rgba(61,10,10,.85); margin: 0; }
.dh-review figcaption { margin-top: 32px; }
.dh-review__name { font-size: 14px; font-weight: 500; margin: 0; }
.dh-review__role { font-size: 12px; color: rgba(61,10,10,.5); margin: 2px 0 0; }
.dh-reviews__dots { display: flex; gap: 8px; justify-content: center; margin-top: 32px; }
.dh-reviews__dot { height: 6px; width: 6px; border-radius: 999px; background: rgba(61,10,10,.25); border: 0; padding: 0; cursor: pointer; transition: all .3s ease; }
.dh-reviews__dot.is-active { width: 24px; background: var(--dh-burgundy); }
@media (min-width: 768px) {
	.dh-reviews { padding: 112px 48px; }
	.dh-reviews__title { font-size: 36px; }
	.dh-reviews__grid { grid-template-columns: repeat(3, 1fr); }
	.dh-reviews__dots { display: none; }
}

/* ==========================================================================
   Hire strip
   ========================================================================== */
.dh-hire { padding: 80px 24px; background: var(--dh-linen); }
.dh-hire__inner { max-width: 56rem; margin-inline: auto; text-align: center; }
.dh-hire__title { font-size: 36px; line-height: 1.2; font-weight: 400; margin: 0 0 20px; color: var(--dh-burgundy); }
.dh-hire__copy { font-size: 16px; color: rgba(61,10,10,.75); line-height: 1.6; margin: 0 auto 32px; max-width: 42rem; }
@media (min-width: 768px) {
	.dh-hire { padding: 112px 48px; }
	.dh-hire__title { font-size: 48px; }
	.dh-hire__copy { font-size: 18px; }
}

/* ==========================================================================
   Why choose us
   ========================================================================== */
.dh-why { background: var(--dh-linen); color: var(--dh-burgundy); padding: 24px 24px 80px; }
.dh-why__card { max-width: var(--dh-max); margin-inline: auto; background: rgba(255,255,255,.5); border-radius: 24px; padding: 32px; }
.dh-why__eyebrow { color: rgba(61,10,10,.5); font-size: .65rem; margin-bottom: 20px; }
.dh-why__grid { display: grid; grid-template-columns: 1fr; gap: 40px; align-items: stretch; }
.dh-why__left { display: flex; flex-direction: column; }
.dh-why__title { font-size: 30px; line-height: 1.15; font-weight: 400; max-width: 28rem; margin: 0 0 32px; }
.dh-why__media { border-radius: 16px; overflow: hidden; flex: 1; min-height: 260px; }
.dh-why__media video { width: 100%; height: 100%; object-fit: cover; display: block; }
.dh-why__list { display: flex; flex-direction: column; gap: 10px; }
.dh-why__item {
	background: #fff; border: 1px solid rgba(61,10,10,.1); border-radius: 16px;
	padding: 14px 20px; display: flex; gap: 14px; align-items: flex-start;
	transition: box-shadow .3s ease;
}
.dh-why__item:hover { box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.dh-why__icon {
	flex-shrink: 0; height: 36px; width: 36px; border-radius: 999px;
	background: rgba(212,165,122,.3);
	display: flex; align-items: center; justify-content: center;
	color: var(--dh-burgundy);
}
.dh-why__icon svg { width: 16px; height: 16px; }
.dh-why__item h3 { font-size: 16px; margin: 0 0 2px; font-weight: 400; }
.dh-why__item p { font-size: 13px; color: rgba(61,10,10,.7); line-height: 1.4; margin: 0; }
@media (min-width: 768px) { .dh-why { padding: 40px 24px 112px; } .dh-why__card { padding: 56px; } .dh-why__title { font-size: 36px; } }
@media (min-width: 1024px) { .dh-why__grid { grid-template-columns: 1fr 1fr; gap: 56px; } }

/* ==========================================================================
   Schedule (Mindbody embed)
   ========================================================================== */
.dh-schedule {
	color: var(--dh-burgundy);
	padding: 96px 0;
	background: linear-gradient(180deg, #f5ebe0 0%, #f3e0d0 45%, #efd4bf 100%);
}
.dh-schedule__inner { max-width: var(--dh-max); margin-inline: auto; padding-inline: 24px; }
.dh-schedule__head { margin-bottom: 48px; display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; gap: 24px; }
.dh-schedule__eyebrow { color: rgba(61,10,10,.5); font-size: .65rem; margin-bottom: 24px; }
.dh-schedule__title { font-size: 30px; line-height: 1.1; font-weight: 400; max-width: 36rem; margin: 0; }
.dh-schedule__note { font-size: 14px; color: rgba(61,10,10,.6); max-width: 20rem; margin: 0; }
.dh-schedule__embed { min-height: 200px; }
.dh-schedule__foot { margin-top: 40px; display: flex; justify-content: center; }
.dh-schedule__link {
	font-size: 12px; letter-spacing: var(--dh-luxe); text-transform: uppercase;
	color: rgba(61,10,10,.7); border-bottom: 1px solid rgba(61,10,10,.3);
	padding-bottom: 4px; text-decoration: none; transition: all .3s ease;
}
.dh-schedule__link:hover { color: var(--dh-burgundy); border-color: var(--dh-burgundy); }
@media (min-width: 768px) { .dh-schedule { padding: 128px 0; } .dh-schedule__title { font-size: 48px; } .dh-schedule__head { margin-bottom: 64px; } }

/* ==========================================================================
   Hot room
   ========================================================================== */
.dh-hotroom {
	position: relative; width: 100%; overflow: hidden;
	background: var(--dh-burgundy); color: var(--dh-linen);
	display: flex; align-items: center; min-height: 400px;
}
.dh-hotroom__bg { position: absolute; inset: 0; }
.dh-hotroom__bg img { height: 100%; width: 100%; object-fit: cover; }
.dh-hotroom__bg::after { content: ""; position: absolute; inset: 0; background: rgba(61,10,10,.6); }
.dh-hotroom__inner {
	position: relative; z-index: 2;
	max-width: 72rem; margin-inline: auto;
	padding: 60px 20px;
	display: grid; gap: 40px; align-items: center; width: 100%;
	text-align: center;
}
.dh-hotroom__eyebrow { color: var(--dh-champagne); margin-bottom: 16px; }
.dh-hotroom__temp { font-size: 60px; line-height: 1; margin: 0; }
.dh-hotroom__temp span { color: var(--dh-champagne); }
.dh-hotroom__sub { font-size: 18px; margin: 16px 0 0; color: rgba(250,248,243,.8); font-weight: 400; }
.dh-hotroom__copy { font-size: 16px; line-height: 1.8; letter-spacing: .03em; color: rgba(250,248,243,.9); margin: 0; font-weight: 400; }
.dh-hotroom__cta { margin-top: 24px; }
@media (min-width: 768px) {
	.dh-hotroom__inner { grid-template-columns: 1fr 1fr; gap: 64px; padding: 96px 24px; text-align: left; }
	.dh-hotroom__temp { font-size: 128px; }
	.dh-hotroom__sub { font-size: 24px; margin-top: 24px; }
	.dh-hotroom__right { padding-left: 48px; border-left: 1px solid rgba(250,248,243,.2); }
	.dh-hotroom__copy { font-size: 30px; line-height: 1.5; letter-spacing: normal; }
	.dh-hotroom__cta { margin-top: 40px; }
}

/* ==========================================================================
   Teachers
   ========================================================================== */
.dh-teachers { background: var(--dh-linen); color: var(--dh-burgundy); padding: 80px 24px; text-align: center; }
.dh-teachers__inner { max-width: 56rem; margin-inline: auto; }
.dh-teachers__title { font-size: 36px; line-height: 1.1; font-weight: 400; margin: 0 0 40px; }
@media (min-width: 768px) { .dh-teachers { padding: 112px 24px; } .dh-teachers__title { font-size: 48px; } }

/* ==========================================================================
   Regular + app
   ========================================================================== */
.dh-regular { padding: 0 24px 96px; background: var(--dh-linen); color: var(--dh-burgundy); }
.dh-regular__grid { max-width: 72rem; margin-inline: auto; display: grid; gap: 48px; }
.dh-regular__title { font-size: 30px; font-weight: 400; margin: 0 0 24px; }
.dh-regular__body p { font-size: 16px; color: rgba(61,10,10,.8); line-height: 1.6; margin: 0 0 16px; }
.dh-regular__img { width: 100%; border-radius: 16px; margin-bottom: 24px; object-fit: cover; aspect-ratio: 16/9; display: block; }
.dh-store { margin-top: 32px; display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
/* App-store badges: same shape, height and ground as every other button, but
   the label stays sentence case on two lines because "Download on the App
   Store" is a platform wordmark and cannot be uppercased or tracked. */
.dh-store__btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 10px;
	background: var(--dh-burgundy); color: var(--dh-linen);
	min-height: 52px; padding: 12px 26px; border-radius: 999px; text-decoration: none;
	border: 1px solid var(--dh-burgundy);
	transition: background-color .4s ease, color .4s ease, border-color .4s ease;
}
.dh-store__btn:hover { background: var(--dh-champagne); color: var(--dh-burgundy); border-color: var(--dh-champagne); }
.dh-store__btn svg { width: 24px; height: 24px; fill: currentColor; }
.dh-store__small { font-size: .55rem; letter-spacing: var(--dh-luxe); text-transform: uppercase; opacity: .8; display: block; line-height: 1.2; }
.dh-store__big { font-size: 16px; line-height: 1.2; display: block; }
@media (min-width: 768px) {
	.dh-regular { padding: 0 48px 128px; }
	.dh-regular__grid { grid-template-columns: 1fr 1fr; gap: 0; }
	.dh-regular__col--left { padding-right: 48px; }
	.dh-regular__col--right { padding-left: 48px; border-left: 1px solid rgba(61,10,10,.15); }
	.dh-regular__title { font-size: 36px; }
}

/* ==========================================================================
   Social links
   ========================================================================== */
.dh-social { padding: 0 24px 64px; background: var(--dh-linen); text-align: center; }
.dh-social__inner { max-width: 56rem; margin-inline: auto; }
.dh-social__eyebrow { color: rgba(61,10,10,.5); font-size: .65rem; margin-bottom: 20px; }
.dh-social__row { display: flex; align-items: center; justify-content: center; gap: 24px; }
.dh-social__row a { color: rgba(61,10,10,.7); transition: color .3s ease; display: inline-flex; }
.dh-social__row a:hover { color: var(--dh-burgundy); }
.dh-social__row svg { width: 22px; height: 22px; }
@media (min-width: 768px) { .dh-social { padding-bottom: 80px; } }

/* ==========================================================================
   Newsletter (Mindbody prospects embed)
   ========================================================================== */
.dh-newsletter { padding: 0 24px 96px; background: var(--dh-linen); }
.dh-newsletter__card {
	max-width: 42rem; margin-inline: auto;
	background: var(--dh-burgundy); color: var(--dh-linen);
	padding: 40px; border-radius: 16px;
}
.dh-newsletter__eyebrow { color: var(--dh-champagne); font-size: .65rem; margin-bottom: 12px; }
.dh-newsletter__title { font-size: 24px; line-height: 1.2; font-weight: 400; margin: 0 0 12px; color: var(--dh-linen); }
.dh-newsletter__copy { font-size: 14px; color: rgba(250,248,243,.8); line-height: 1.6; margin: 0 0 24px; }
.dh-newsletter__embed :is(label, span, p, div) { color: #fff; }
.dh-newsletter__embed input:not([type="submit"]) {
	background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.2); color: #fff;
	padding: 10px 12px; border-radius: 6px; width: 100%;
}
.dh-newsletter__embed input::placeholder { color: rgba(255,255,255,.5); }
.dh-newsletter__embed .healcode-form-submit,
.dh-newsletter__embed input[type="submit"] {
	background: var(--dh-champagne); color: var(--dh-burgundy);
	border: 0; padding: 12px 28px; border-radius: 0; cursor: pointer;
	font-size: 11px; letter-spacing: var(--dh-luxe); text-transform: uppercase;
}
@media (min-width: 768px) { .dh-newsletter { padding-bottom: 128px; } .dh-newsletter__card { padding: 56px; } .dh-newsletter__title { font-size: 30px; } }

/* ==========================================================================
   Final CTA
   ========================================================================== */
.dh-cta {
	position: relative; display: flex; align-items: center; justify-content: center;
	text-align: center; padding: 60px 20px; color: var(--dh-linen); overflow: hidden;
}
.dh-cta__bg { position: absolute; inset: 0; height: 100%; width: 100%; object-fit: cover; }
.dh-cta__scrim { position: absolute; inset: 0; opacity: .7; background: linear-gradient(180deg, #3d0a0a 0%, #2a0707 100%); }
.dh-cta__inner { position: relative; z-index: 2; max-width: 48rem; width: 100%; }
.dh-cta__eyebrow { color: var(--dh-champagne); margin-bottom: 20px; }
.dh-cta__title { font-size: 32px; line-height: 1.2; font-weight: 400; margin: 0; color: var(--dh-linen); }
.dh-cta__sub { font-size: 14px; line-height: 1.8; letter-spacing: .03em; color: rgba(250,248,243,.8); margin: 16px 0 0; }
.dh-cta__btn { margin-top: 24px; }
@media (min-width: 768px) {
	.dh-cta { padding: 128px 20px; }
	.dh-cta__title { font-size: 60px; line-height: 1.02; }
	.dh-cta__sub { font-size: 20px; margin-top: 24px; }
	.dh-cta__btn { margin-top: 40px; }
}

/* ==========================================================================
   Footer
   ========================================================================== */
.dh-footer {
	background: var(--dh-burgundy); color: rgba(250,248,243,.7);
	padding: 64px 24px; border-top: 1px solid rgba(250,248,243,.1);
	font-family: var(--dh-body);
}
.dh-footer__grid { max-width: var(--dh-max); margin-inline: auto; display: grid; gap: 48px; }
/* 54px, matching .dhv3-logo img in inc/nav.php. Keep the two in step: the
   footer has no fixed-height bar to fit inside, so it is free to be larger,
   but a mismatch shows when you scroll from one to the other. */
.dh-footer__logo img { height: 54px; width: auto; display: block; }
.dh-footer__tagline { font-size: 12px; margin-top: 24px; color: rgba(250,248,243,.5); max-width: 20rem; }
.dh-footer__label { font-size: .6rem; letter-spacing: var(--dh-luxe); text-transform: uppercase; color: var(--dh-champagne); margin: 0 0 16px; }
/* Footer ground is burgundy, so these invert the .dh-social__row treatment. */
.dh-footer__social { display: flex; gap: 16px; margin-top: 20px; }
.dh-footer__social a { color: rgba(250,248,243,.55); display: inline-flex; transition: color .3s ease; }
.dh-footer__social a:hover,
.dh-footer__social a:focus-visible { color: var(--dh-champagne); }
.dh-footer__social svg { width: 20px; height: 20px; }
.dh-footer__text { font-size: 14px; line-height: 1.6; margin: 0; }
.dh-footer__social { display: flex; gap: 16px; margin-top: 24px; color: rgba(250,248,243,.6); }
.dh-footer__social svg { width: 18px; height: 18px; }
.dh-footer__social a:hover { color: var(--dh-champagne); }
.dh-footer__bottom {
	max-width: var(--dh-max); margin: 64px auto 0;
	display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
	gap: 16px; font-size: .6rem; letter-spacing: var(--dh-luxe); text-transform: uppercase;
	color: rgba(250,248,243,.3);
}
.dh-footer__bottom a { color: inherit; text-decoration: none; }
.dh-footer__bottom a:hover { color: var(--dh-champagne); }
.dh-footer__links { display: flex; gap: 24px; flex-wrap: wrap; }
@media (min-width: 768px) { .dh-footer__grid { grid-template-columns: repeat(4, 1fr); } }

/* Reduced motion ---------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	.dh-hero__media video,
	.dh-why__media video,
	.dh-class__media { animation: none !important; }
	.dh-class, .dh-class__reveal, .dh-class__media { transition: none !important; }
}
