/*
 * Quinta Head Spa & Massage — landing page styles.
 *
 * Values are carried over from the design comp (design/Quinta Landing Page.dc.html)
 * including its clamp() scales, so the page responds the way the comp does.
 * --accent, --accent-text and --on-accent are injected from Page content →
 * Business & booking → Accent colour (see functions.php).
 */

:root {
	--ink: #10170F;
	--forest: #1E2C22;
	--forest-2: #2A3A2E;
	--cream: #F4EFE4;
	--cream-2: #E9E2D2;
	--sand: #DED5C2;
	--field: #FFFDF7;
	--copper: #8A5A34;
	--copper-hover: #C2794A;
	--text: #43503F;
	--muted: #A39C8E;
	--accent: #C9A227;
	--accent-text: #C9A227;
	--on-accent: #10170F;

	--serif: "Newsreader", Georgia, serif;
	--sans: "Be Vietnam Pro", "Helvetica Neue", Helvetica, sans-serif;

	--gutter: clamp(20px, 4vw, 60px);
	--max: 1440px;
	--header-h: 82px;
}

/* ---------- Base ---------- */

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

html {
	scroll-behavior: smooth;
	scroll-padding-top: 124px;
	-webkit-text-size-adjust: 100%;
}

body {
	margin: 0;
	background: var(--ink);
	color: var(--cream);
	font-family: var(--sans);
	font-variant-numeric: lining-nums;
	font-feature-settings: "lnum" 1;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	line-height: 1.5;
}

img { display: block; max-width: 100%; height: auto; }
a { color: var(--copper-hover); text-decoration: none; transition: color .2s ease, background-color .2s ease, border-color .2s ease; }
a:hover { color: var(--cream); }
p { text-wrap: pretty; }
input, select, textarea, button { font-family: inherit; }
figure, blockquote, dl, dd { margin: 0; }
ol, ul { margin: 0; padding: 0; list-style: none; }
h1, h2, h3 { margin: 0; font-weight: inherit; }

:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }

.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
}

.q-skip {
	position: absolute; left: 12px; top: -60px; z-index: 200;
	background: var(--cream); color: var(--ink);
	padding: 10px 16px; font-size: 14px;
}
.q-skip:focus { top: 12px; color: var(--ink); }

@keyframes qRise { from { opacity: 0; transform: translateY(26px); } to { opacity: 1; transform: none; } }
@keyframes qWiden { from { transform: scaleX(0); } to { transform: scaleX(1); } }

/* ---------- Layout primitives ---------- */

.q-wrap { max-width: var(--max); margin: 0 auto; padding-left: var(--gutter); padding-right: var(--gutter); }
.q-pad-xl { padding-top: clamp(64px, 9vw, 150px); padding-bottom: clamp(64px, 9vw, 150px); }
.q-pad-lg { padding-top: clamp(64px, 9vw, 140px); padding-bottom: clamp(64px, 9vw, 140px); }
.q-pad-md { padding-top: clamp(58px, 8vw, 120px); padding-bottom: clamp(58px, 8vw, 120px); }

.q-section--cream { background: var(--cream); color: var(--ink); }
.q-section--forest { background: var(--forest); color: var(--cream); }
.q-section--ink { background: var(--ink); color: var(--cream); }

/* ---------- Type ---------- */

.q-eyebrow {
	display: block;
	font-size: 10px;
	letter-spacing: .34em;
	text-transform: uppercase;
	font-weight: 600;
	margin-bottom: 20px;
}
.q-eyebrow--accent { color: var(--accent-text); }
.q-eyebrow--copper { color: var(--copper); }
.q-eyebrow--sm { letter-spacing: .22em; margin-bottom: 0; }

.q-display {
	font-family: var(--serif);
	font-weight: 200;
	line-height: .96;
	letter-spacing: -.03em;
}
.q-display em { font-style: italic; }
.q-display--xl { font-size: clamp(38px, 6.4vw, 102px); line-height: .94; letter-spacing: -.032em; }
.q-display--lg { font-size: clamp(36px, 5.4vw, 84px); }
.q-display--md { font-size: clamp(34px, 4.6vw, 70px); line-height: .98; }
.q-display--voucher { font-size: clamp(36px, 5vw, 78px); letter-spacing: -.032em; }
.q-em-copper { color: var(--copper); }

.q-lede { margin: 0; font-size: 15.5px; line-height: 1.8; font-weight: 300; color: var(--text); max-width: 40ch; }
.q-lede--dark { font-size: 16.5px; color: rgba(244, 239, 228, .7); }
.q-lede--wide { max-width: 42ch; font-size: 16px; color: rgba(244, 239, 228, .66); }
.q-lede--narrow { max-width: 36ch; }

.q-body { margin: 0; font-size: 16.5px; line-height: 1.84; font-weight: 300; color: var(--text); }
.q-body--dark { color: rgba(244, 239, 228, .76); max-width: 46ch; }

.q-split-head {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
	gap: 32px;
	align-items: end;
	margin-bottom: clamp(44px, 6vw, 84px);
}
.q-split-head .q-eyebrow { margin-bottom: 20px; }
.q-split-head--menu { margin-bottom: clamp(40px, 5vw, 72px); }
.q-split-head--tight { margin-bottom: clamp(38px, 5vw, 64px); }

/* ---------- Buttons ---------- */

.q-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 19px 32px;
	font-size: 11.5px;
	letter-spacing: .22em;
	text-transform: uppercase;
	font-weight: 600;
	line-height: 1.2;
	text-align: center;
	border: 1px solid transparent;
	cursor: pointer;
}
.q-btn--lg { padding: 21px 38px; }
.q-btn--sm { padding: 14px 24px; font-size: 11px; letter-spacing: .2em; white-space: nowrap; }
.q-btn--xs { padding: 15px 24px; font-size: 11px; letter-spacing: .18em; font-weight: 500; }

.q-btn--accent { background: var(--accent); color: var(--on-accent); }
.q-btn--accent:hover { background: var(--cream); color: var(--ink); }

.q-btn--ghost { border-color: rgba(244, 239, 228, .4); color: var(--cream); font-weight: 500; }
.q-btn--lg.q-btn--ghost { padding-left: 34px; padding-right: 34px; }
.q-btn--ghost:hover { background: var(--cream); color: var(--ink); border-color: var(--cream); }

.q-btn--ink { background: var(--ink); color: var(--cream); padding: 20px 36px; flex: none; }
.q-btn--ink:hover { background: var(--cream); color: var(--ink); }

.q-btn--outline-ink { background: none; border-color: rgba(16, 23, 15, .3); color: var(--ink); }
.q-btn--outline-ink:hover { background: var(--ink); color: var(--cream); }

.q-btn-row { display: flex; gap: 10px; flex-wrap: wrap; }

/* ---------- Header ---------- */

.q-header {
	position: sticky;
	top: 0;
	z-index: 80;
	background: rgba(16, 23, 15, .82);
	-webkit-backdrop-filter: blur(18px);
	backdrop-filter: blur(18px);
	border-bottom: 1px solid rgba(244, 239, 228, .12);
}
.admin-bar .q-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .q-header { top: 0; } }

.q-header__inner {
	max-width: var(--max);
	margin: 0 auto;
	padding: 12px var(--gutter);
	min-height: var(--header-h);
	display: flex;
	align-items: center;
	column-gap: clamp(14px, 3vw, 30px);
}
.q-header__brand { display: flex; align-items: center; flex: none; }
.q-header__brand img { height: clamp(30px, 3vw, 38px); width: auto; }

.q-nav {
	display: flex;
	flex: 1 1 180px;
	justify-content: flex-end;
	align-items: center;
	flex-wrap: wrap;
	column-gap: clamp(12px, 2vw, 32px);
	row-gap: 8px;
}
.q-nav__link {
	font-size: 11.5px;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: rgba(244, 239, 228, .66);
	font-weight: 500;
}
.q-nav__link:hover { color: var(--cream); }

.q-header__actions { display: flex; align-items: center; gap: 16px; flex: none; margin-left: auto; }
.q-nav__phone { font-size: 13px; letter-spacing: .04em; color: var(--cream); white-space: nowrap; }
.q-nav__phone:hover { color: var(--copper-hover); }
.q-nav__phone--menu { display: none; }

.q-header__toggle { display: none; }

@media (max-width: 900px) {
	.q-header__inner { min-height: 68px; flex-wrap: wrap; }
	.q-header__actions { order: 2; }
	.q-header__actions .q-nav__phone { display: none; }
	.q-header__toggle {
		order: 3;
		display: inline-flex;
		align-items: center;
		justify-content: center;
		width: 46px; height: 46px;
		margin-right: -10px;
		background: none;
		border: 0;
		color: var(--cream);
		cursor: pointer;
	}
	.q-burger { position: relative; width: 22px; height: 10px; }
	.q-burger i { position: absolute; left: 0; right: 0; height: 1.5px; background: currentColor; transition: transform .25s ease, top .25s ease; }
	.q-burger i:first-child { top: 0; }
	.q-burger i:last-child { top: 8.5px; }
	.q-header.is-open .q-burger i:first-child { top: 4.25px; transform: rotate(45deg); }
	.q-header.is-open .q-burger i:last-child { top: 4.25px; transform: rotate(-45deg); }

	.q-nav {
		order: 4;
		flex: 1 0 100%;
		flex-direction: column;
		align-items: stretch;
		gap: 0;
		padding: 8px 0 14px;
		display: none;
	}
	.q-header.is-open .q-nav { display: flex; }
	.q-nav__link { padding: 15px 0; border-top: 1px solid rgba(244, 239, 228, .12); font-size: 12px; color: var(--cream); }
	.q-nav__phone--menu { display: block; padding: 16px 0 4px; border-top: 1px solid rgba(244, 239, 228, .12); font-size: 16px; }
}

@media (max-width: 380px) {
	.q-header__actions .q-btn--sm { padding: 12px 16px; letter-spacing: .14em; }
}

/* ---------- Hero ---------- */

.q-hero {
	position: relative;
	min-height: min(94vh, 900px);
	display: flex;
	align-items: flex-end;
	overflow: hidden;
	background: var(--ink);
}
.q-hero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 58% 40%; max-width: none; }
.q-hero__scrim,
.q-hero__scrim::after { position: absolute; inset: 0; }
.q-hero__scrim { background: linear-gradient(180deg, rgba(16, 23, 15, .72) 0%, rgba(16, 23, 15, .34) 34%, rgba(16, 23, 15, .94) 88%); }
.q-hero__scrim::after { content: ""; background: linear-gradient(90deg, rgba(16, 23, 15, .86) 0%, rgba(16, 23, 15, .1) 62%); }
.q-hero__rule { position: absolute; left: var(--gutter); top: 0; bottom: 0; width: 1px; background: rgba(244, 239, 228, .16); }

.q-hero__inner {
	position: relative;
	z-index: 2;
	width: 100%;
	max-width: var(--max);
	margin: 0 auto;
	padding: clamp(60px, 10vw, 120px) var(--gutter) clamp(40px, 5vw, 64px);
}
.q-hero__eyebrow { display: flex; align-items: center; gap: 14px; margin-bottom: clamp(20px, 3vw, 34px); animation: qRise .7s ease both; }
.q-hero__eyebrow .q-eyebrow { margin: 0; }
.q-hero__line { width: clamp(30px, 5vw, 66px); height: 1px; background: var(--accent); transform-origin: left; animation: qWiden .9s ease both; }

.q-hero__title {
	font-family: var(--serif);
	font-weight: 200;
	font-size: clamp(54px, 10.4vw, 164px);
	line-height: .9;
	letter-spacing: -.035em;
	color: var(--cream);
	max-width: 15ch;
	animation: qRise .8s ease .06s both;
}
.q-hero__title em { font-style: italic; color: var(--accent-text); }

.q-hero__foot {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 290px), 1fr));
	gap: clamp(26px, 4vw, 60px);
	align-items: end;
	margin-top: clamp(34px, 5vw, 62px);
	animation: qRise .8s ease .12s both;
}
.q-hero__intro { margin: 0; max-width: 42ch; font-size: clamp(16px, 1.3vw, 19px); line-height: 1.72; font-weight: 300; color: rgba(244, 239, 228, .82); }

/* ---------- Highlights ---------- */

.q-highlights { background: var(--accent); color: var(--on-accent); overflow: hidden; }
.q-highlights__list {
	max-width: var(--max);
	margin: 0 auto;
	padding: clamp(26px, 3.4vw, 42px) var(--gutter);
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 10px clamp(22px, 3.4vw, 46px);
}
.q-highlights__list li { font-size: 12px; letter-spacing: .13em; text-transform: uppercase; font-weight: 600; }

/* ---------- About ---------- */

.q-about__head { margin-bottom: clamp(44px, 6vw, 90px); }
.q-about__head .q-eyebrow { margin-bottom: 22px; }
.q-about__title { max-width: 22ch; }

.q-about__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr));
	gap: clamp(34px, 5vw, 80px);
	align-items: start;
}
.q-about__copy { display: flex; flex-direction: column; gap: 24px; }
.q-about__lead { margin: 0; font-size: clamp(19px, 1.7vw, 25px); line-height: 1.6; font-weight: 300; color: var(--forest); }
.q-about__sign { display: flex; align-items: center; gap: 16px; padding-top: 10px; }
.q-about__sign img { height: 24px; width: auto; flex: none; }
.q-about__sign span { font-family: var(--serif); font-size: 21px; font-style: italic; color: var(--text); }

.q-about__media { position: relative; margin-bottom: 18px; }
.q-about__main { aspect-ratio: 3 / 4; overflow: hidden; background: var(--sand); }
.q-about__main img,
.q-about__inset img { width: 100%; height: 100%; object-fit: cover; }
.q-about__inset {
	position: absolute;
	/* The comp's clamp(-10px,-2vw,-28px) has min > max, so browsers resolve it to -10px. */
	left: -10px;
	bottom: -18px;
	width: min(52%, 220px);
	aspect-ratio: 1 / 1;
	overflow: hidden;
	border: 10px solid var(--cream);
	background: var(--sand);
}

/* ---------- Ritual ---------- */

.q-steps {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, max(45%, 240px)), 1fr));
	gap: clamp(24px, 3vw, 44px) clamp(24px, 4vw, 56px);
}
.q-step { display: flex; flex-direction: column; gap: 16px; padding-top: 24px; border-top: 1px solid rgba(244, 239, 228, .24); }
.q-step__media { height: clamp(168px, 19vw, 258px); overflow: hidden; background: var(--forest-2); margin-bottom: 20px; }
.q-step__media img { width: 100%; height: 100%; object-fit: cover; }
.q-step:nth-child(1) .q-step__media img { object-position: 42% 50%; }
.q-step:nth-child(2) .q-step__media img { object-position: 50% 40%; }
.q-step:nth-child(3) .q-step__media img { object-position: 50% 42%; }
.q-step__num {
	font-family: var(--serif);
	font-size: clamp(48px, 5vw, 72px);
	font-weight: 200;
	line-height: .8;
	color: transparent;
	-webkit-text-stroke: 1px rgba(194, 121, 74, .85);
}
.q-step__title { font-size: 18px; font-weight: 500; letter-spacing: .01em; color: var(--cream); }
.q-step__text { margin: 0; font-size: 14.5px; line-height: 1.72; font-weight: 300; color: rgba(244, 239, 228, .66); }

/* ---------- Menu ---------- */

.q-menu { display: flex; flex-direction: column; border-top: 1.5px solid var(--ink); border-bottom: 1.5px solid var(--ink); }
.q-menu__row {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
	gap: 24px;
	align-items: end;
	padding: clamp(26px, 3vw, 38px) 0;
}
.q-menu__row + .q-menu__row { border-top: 1px solid rgba(16, 23, 15, .2); }
.q-menu__info { display: flex; flex-direction: column; gap: 11px; }
.q-menu__name { display: flex; align-items: center; gap: 13px; flex-wrap: wrap; }
.q-menu__name h3 { font-family: var(--serif); font-size: clamp(27px, 2.9vw, 42px); font-weight: 300; letter-spacing: -.018em; line-height: 1.06; }
.q-menu__info p { margin: 0; font-size: 14.5px; line-height: 1.72; font-weight: 300; color: var(--text); max-width: 50ch; }
.q-badge { font-size: 9px; letter-spacing: .22em; text-transform: uppercase; color: var(--cream); background: var(--copper); padding: 6px 11px; font-weight: 600; }

.q-menu__prices { display: flex; gap: clamp(2px, .8vw, 10px); flex-wrap: wrap; justify-content: flex-end; align-items: flex-end; }
.q-price { text-align: right; min-width: 86px; padding: 12px 14px; }
.q-price dt { font-size: 9.5px; letter-spacing: .18em; text-transform: uppercase; color: var(--copper); font-weight: 600; margin-bottom: 6px; }
.q-price dd { font-family: var(--serif); font-size: clamp(26px, 2.2vw, 32px); font-weight: 300; font-variant-numeric: tabular-nums; line-height: 1; }
.q-price.is-highlight { background: var(--forest); color: var(--cream); }
.q-price.is-highlight dt { color: var(--accent-text); }
.q-price.is-empty dt,
.q-price.is-empty dd { color: var(--text); }

.q-extras {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, max(45%, 200px)), 1fr));
	gap: clamp(20px, 2.6vw, 36px) clamp(24px, 4vw, 52px);
	margin-top: clamp(32px, 4vw, 54px);
}
.q-extra { padding-top: 20px; border-top: 1px solid rgba(16, 23, 15, .2); display: flex; flex-direction: column; gap: 7px; }
.q-extra .q-eyebrow { font-size: 9.5px; }
.q-extra__name { font-family: var(--serif); font-size: 22px; font-weight: 400; }
.q-extra__meta { font-size: 13.5px; font-weight: 300; color: var(--text); }

/* ---------- Photo band ---------- */

.q-band { position: relative; height: clamp(300px, 42vw, 520px); overflow: hidden; background: var(--ink); }
.q-band__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 40%; max-width: none; }
.q-band__scrim { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(16, 23, 15, .86) 0%, rgba(16, 23, 15, .24) 68%); }
.q-band__inner {
	position: relative;
	z-index: 2;
	height: 100%;
	max-width: var(--max);
	margin: 0 auto;
	padding: clamp(28px, 5vw, 64px) var(--gutter);
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 18px;
}
.q-band__inner .q-eyebrow { margin: 0; }
.q-band__quote { margin: 0; font-family: var(--serif); font-size: clamp(24px, 3.4vw, 50px); font-weight: 200; line-height: 1.14; letter-spacing: -.026em; color: var(--cream); max-width: 24ch; text-wrap: balance; }

/* ---------- Add-ons ---------- */

.q-addons { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 290px), 1fr)); gap: clamp(34px, 5vw, 74px); }
.q-addons__head { display: flex; flex-direction: column; gap: 20px; }
.q-addons__head .q-eyebrow { margin: 0; }
.q-addons__head .q-lede { font-size: 16px; color: rgba(244, 239, 228, .66); max-width: 36ch; }
.q-addons__list { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, max(45%, 120px)), 1fr)); gap: clamp(18px, 2.2vw, 30px) clamp(20px, 3vw, 34px); }
.q-addon { padding-top: 16px; border-top: 1px solid rgba(244, 239, 228, .24); display: flex; flex-direction: column; gap: 7px; }
.q-addon__name { font-size: 15px; font-weight: 400; }
.q-addon__price { font-family: var(--serif); font-size: 23px; font-weight: 300; color: var(--accent-text); }
.q-addon__tag { font-size: 10.5px; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); font-weight: 600; }

/* ---------- Promo ---------- */

.q-promo { background: var(--accent); color: var(--on-accent); }
.q-promo__inner { padding-top: clamp(32px, 4vw, 54px); padding-bottom: clamp(32px, 4vw, 54px); display: flex; gap: 30px; flex-wrap: wrap; align-items: center; justify-content: space-between; }
.q-promo__copy { display: flex; flex-direction: column; gap: 10px; }
.q-promo__copy .q-eyebrow { margin: 0; color: var(--on-accent); }
.q-promo__text { margin: 0; font-family: var(--serif); font-size: clamp(26px, 3.2vw, 46px); font-weight: 300; line-height: 1.06; letter-spacing: -.024em; max-width: 30ch; text-wrap: balance; }

/* ---------- Gallery ---------- */

.q-gallery__head { padding-top: clamp(64px, 9vw, 140px); padding-bottom: clamp(38px, 5vw, 60px); }
.q-gallery__title { max-width: 26ch; text-wrap: balance; }
.q-gallery {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
	gap: clamp(8px, 1vw, 14px);
	padding: 0 clamp(8px, 1vw, 14px) clamp(8px, 1vw, 14px);
}
.q-shot { margin: 0; overflow: hidden; background: var(--sand); min-width: 0; }
.q-shot img { width: 100%; height: 100%; object-fit: cover; }
.q-shot--wide { grid-column: span 2; aspect-ratio: 16 / 9; }
.q-shot--tall { aspect-ratio: 4 / 5; }
@media (max-width: 639px) { .q-shot--wide { grid-column: auto; } }

/* ---------- Therapist ---------- */

.q-therapist { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: clamp(34px, 5vw, 74px); align-items: center; }
.q-therapist__copy { display: flex; flex-direction: column; gap: 22px; }
.q-therapist__copy .q-eyebrow { margin: 0; }
.q-therapist__name { font-size: clamp(44px, 6.4vw, 104px); line-height: .9; letter-spacing: -.036em; }
.q-therapist__portrait { aspect-ratio: 4 / 5; overflow: hidden; background: var(--forest-2); }
.q-therapist__portrait img { width: 100%; height: 100%; object-fit: cover; }
.q-therapist--solo .q-body--dark { max-width: 62ch; }
.q-therapist--solo .q-stats { max-width: 760px; }

.q-stats { display: flex; flex-wrap: wrap; gap: clamp(20px, 2.6vw, 34px); padding-top: 12px; }
.q-stat { flex: 1 1 26%; min-width: 0; padding-top: 16px; border-top: 1px solid rgba(244, 239, 228, .24); display: flex; flex-direction: column-reverse; justify-content: flex-end; gap: 6px; }
.q-stat dd { font-family: var(--serif); font-size: clamp(38px, 3.6vw, 52px); font-weight: 200; line-height: 1; color: var(--accent-text); }
.q-stat dt { font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: rgba(244, 239, 228, .6); font-weight: 500; }

/* ---------- Reviews ---------- */

.q-reviews { display: flex; flex-wrap: wrap; gap: clamp(10px, 1.4vw, 18px); }
.q-rating {
	flex: 1 1 248px;
	background: var(--forest);
	color: var(--cream);
	padding: clamp(30px, 3.2vw, 44px);
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	gap: 28px;
	min-height: 290px;
}
.q-rating__top,
.q-rating__foot { display: flex; flex-direction: column; }
.q-rating__top { gap: 12px; }
.q-rating__foot { gap: 7px; }
.q-rating__score { font-family: var(--serif); font-size: clamp(72px, 8vw, 116px); font-weight: 200; line-height: .82; letter-spacing: -.04em; }
.q-rating__source { font-size: 11.5px; letter-spacing: .18em; text-transform: uppercase; color: rgba(244, 239, 228, .6); font-weight: 500; }
.q-rating__link { font-size: 13.5px; color: var(--accent-text); font-weight: 500; }
.q-rating__link:hover { color: var(--cream); }

.q-stars { font-size: 14px; letter-spacing: .24em; color: var(--copper); }
.q-stars--accent { font-size: 15px; color: var(--accent-text); }

.q-review { flex: 1 1 248px; background: var(--cream-2); padding: clamp(30px, 3.2vw, 44px); display: flex; flex-direction: column; gap: 16px; }
.q-review__quote { margin: 0; font-family: var(--serif); font-size: clamp(22px, 2vw, 29px); font-weight: 300; line-height: 1.3; letter-spacing: -.018em; color: var(--ink); }
.q-review__meta { display: flex; flex-direction: column; gap: 4px; margin-top: auto; padding-top: 4px; }
.q-review__name { font-size: 14.5px; font-weight: 500; color: var(--ink); }
.q-review__when { font-size: 13.5px; font-weight: 400; color: var(--text); }
.q-review__source { font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--copper); font-weight: 600; }

/* ---------- Voucher ---------- */

.q-voucher { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 310px), 1fr)); gap: clamp(34px, 5vw, 70px); align-items: center; }
.q-voucher__copy { display: flex; flex-direction: column; gap: 22px; }
.q-voucher__copy .q-eyebrow { margin: 0; }
.q-voucher__copy .q-btn-row { padding-top: 4px; }

.q-card { background: var(--cream); color: var(--ink); padding: clamp(30px, 3.4vw, 48px); display: flex; flex-direction: column; gap: 24px; }
.q-card__brand { display: flex; flex-direction: column; gap: 9px; align-items: flex-start; }
.q-card__brand img { height: 42px; width: auto; }
.q-card__brand span { font-size: 12px; letter-spacing: .14em; color: var(--text); }
.q-card__rule { height: 1px; background: rgba(16, 23, 15, .18); }
.q-card .q-eyebrow { margin: 0; letter-spacing: .3em; }
.q-card__price { font-family: var(--serif); font-size: clamp(46px, 5.2vw, 78px); font-weight: 200; line-height: .9; letter-spacing: -.035em; color: var(--forest); }
.q-card__text { font-size: 14px; font-weight: 300; line-height: 1.72; color: var(--text); }
.q-card__foot { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding-top: 16px; border-top: 1px solid rgba(16, 23, 15, .18); }
.q-card__foot span { font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--copper); font-weight: 600; }

/* ---------- FAQ ---------- */

.q-faq { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 330px), 1fr)); gap: clamp(34px, 5vw, 74px); align-items: start; }
.q-faq__head { display: flex; flex-direction: column; gap: 20px; position: sticky; top: 114px; }
.q-faq__head .q-eyebrow { margin: 0; }
@media (max-width: 760px) { .q-faq__head { position: static; } }

.q-faq__list { border-top: 1.5px solid var(--ink); border-bottom: 1.5px solid var(--ink); }
.q-faq__item + .q-faq__item { border-top: 1px solid rgba(16, 23, 15, .2); }
.q-faq__item summary {
	list-style: none;
	padding: 26px 0;
	display: flex;
	gap: 20px;
	align-items: center;
	justify-content: space-between;
	cursor: pointer;
	font-family: var(--serif);
	font-size: clamp(19px, 1.7vw, 24px);
	font-weight: 400;
	color: var(--ink);
	transition: color .2s ease;
}
.q-faq__item summary::-webkit-details-marker { display: none; }
.q-faq__item summary:hover { color: var(--copper); }
.q-faq__item summary i { position: relative; flex: none; width: 14px; height: 14px; }
.q-faq__item summary i::before,
.q-faq__item summary i::after { content: ""; position: absolute; left: 0; right: 0; top: 50%; height: 1px; background: var(--copper); transition: transform .25s ease; }
.q-faq__item summary i::after { transform: rotate(90deg); }
.q-faq__item[open] summary i::after { transform: rotate(0deg); }
.q-faq__answer { padding: 0 0 30px; max-width: 58ch; font-size: 15.5px; line-height: 1.8; font-weight: 300; color: var(--text); }
.q-faq__answer p { margin: 0; }
.q-faq__answer p + p { margin-top: 1em; }

/* ---------- Visit ---------- */

.q-visit { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 350px), 1fr)); gap: clamp(34px, 5vw, 74px); align-items: start; }
.q-visit__info { display: flex; flex-direction: column; gap: 30px; container-type: inline-size; min-width: 0; }
.q-visit__info .q-eyebrow { margin: 0; }
.q-visit__title { font-size: clamp(30px, 11cqi, 68px); line-height: .94; letter-spacing: -.032em; }
.q-visit__title em { color: var(--accent-text); }
.q-visit__cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: clamp(22px, 3vw, 36px); }
.q-visit__block { display: flex; flex-direction: column; gap: 11px; padding-top: 16px; border-top: 1px solid rgba(244, 239, 228, .24); }
.q-visit__block .q-eyebrow { font-size: 10px; letter-spacing: .24em; }
.q-visit__phone { font-size: 19px; color: var(--cream); font-weight: 300; }
.q-visit__phone:hover { color: var(--copper-hover); }
.q-visit__hours { font-size: 14.5px; font-weight: 300; color: rgba(244, 239, 228, .8); }

.q-map { height: clamp(240px, 32vw, 350px); border: 1px solid rgba(244, 239, 228, .2); overflow: hidden; background: var(--forest-2); }
.q-map iframe { display: block; width: 100%; height: 100%; border: 0; filter: saturate(.6) contrast(.94) brightness(.94); }

/* ---------- Booking request form ---------- */

.q-request { background: var(--cream); color: var(--ink); padding: clamp(28px, 3.4vw, 46px); min-width: 0; }
.q-request__form { display: flex; flex-direction: column; gap: 22px; }
.q-request__head { display: flex; flex-direction: column; gap: 9px; }
.q-request__head h3 { font-family: var(--serif); font-size: clamp(28px, 2.8vw, 40px); font-weight: 300; line-height: 1.06; letter-spacing: -.02em; color: var(--ink); }
.q-request__head p { margin: 0; font-size: 14.5px; line-height: 1.7; font-weight: 300; color: var(--text); }
.q-request__note { margin: 0; font-size: 12.5px; line-height: 1.65; font-weight: 300; color: var(--copper); }
.q-request__note a { color: var(--copper); text-decoration: underline; }

.q-request__done { display: flex; flex-direction: column; gap: 16px; padding: 34px 0; text-align: center; align-items: center; outline: none; }
.q-request__done[hidden] { display: none; }
.q-request__tick { width: 56px; height: 56px; border-radius: 50%; background: var(--forest); color: var(--cream); display: flex; align-items: center; justify-content: center; font-size: 23px; }
.q-request__done h3 { font-family: var(--serif); font-size: 32px; font-weight: 300; color: var(--ink); }
.q-request__done p { margin: 0; font-size: 15px; line-height: 1.75; font-weight: 300; color: var(--text); max-width: 34ch; }
.q-request__done .q-btn { margin-top: 8px; }

.q-form,
.wpcf7 form.q-form { display: flex; flex-direction: column; gap: 22px; margin: 0; }
.q-form__row { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 148px), 1fr)); gap: 14px; }
.q-field { display: flex; flex-direction: column; gap: 7px; min-width: 0; }
.q-field__label { font-size: 10px; letter-spacing: .2em; text-transform: uppercase; color: var(--copper); font-weight: 600; }
.q-field .wpcf7-form-control-wrap { display: block; }
.q-field input,
.q-field select,
.q-field textarea {
	width: 100%;
	background: var(--field);
	border: 1px solid rgba(16, 23, 15, .22);
	border-radius: 0;
	padding: 14px;
	font-size: 15px;
	font-weight: 300;
	color: var(--ink);
	outline: none;
	line-height: 1.4;
	-webkit-appearance: none;
	appearance: none;
	transition: border-color .2s ease;
}
.q-field select {
	padding-right: 38px;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%238A5A34' stroke-width='1.4'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 14px center;
}
.q-field input[type="date"] { min-height: 51px; }
.q-field textarea { resize: vertical; line-height: 1.6; min-height: 104px; }
.q-field input::placeholder,
.q-field textarea::placeholder { color: rgba(67, 80, 63, .7); }
.q-field input:focus,
.q-field select:focus,
.q-field textarea:focus { border-color: var(--forest); }
.q-field .wpcf7-not-valid { border-color: #A3402A; }
.wpcf7-not-valid-tip { display: block; margin-top: 6px; font-size: 12.5px; color: #A3402A; font-weight: 400; }

.q-hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.q-form__submit,
.wpcf7 .q-form__submit {
	width: 100%;
	background: var(--forest);
	color: var(--cream);
	border: none;
	border-radius: 0;
	padding: 20px 28px;
	font-size: 11.5px;
	letter-spacing: .22em;
	text-transform: uppercase;
	font-weight: 600;
	cursor: pointer;
	transition: background-color .2s ease;
}
.q-form__submit:hover { background: var(--ink); }
.q-form__submit:disabled { opacity: .6; cursor: wait; }

.wpcf7 .wpcf7-spinner { display: none; }
.wpcf7 form.submitting .q-form__submit { opacity: .6; }
.wpcf7 form .wpcf7-response-output { margin: 0; padding: 12px 14px; border: 1px solid rgba(16, 23, 15, .22); font-size: 13.5px; line-height: 1.6; color: var(--ink); }
.wpcf7 form.init .wpcf7-response-output,
.wpcf7 form.resetting .wpcf7-response-output,
.wpcf7 form.submitting .wpcf7-response-output { display: none; }
.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.unaccepted .wpcf7-response-output,
.wpcf7 form.payment-required .wpcf7-response-output { border-color: #C4893E; }
.wpcf7 form.failed .wpcf7-response-output,
.wpcf7 form.aborted .wpcf7-response-output,
.wpcf7 form.spam .wpcf7-response-output { border-color: #A3402A; }

.q-form__fallback { margin: 0; font-size: 15px; line-height: 1.7; font-weight: 300; color: var(--text); }
.q-form__fallback a { color: var(--copper); text-decoration: underline; }

/* ---------- Footer ---------- */

.q-footer { background: var(--ink); color: rgba(244, 239, 228, .7); }
.q-footer__grid {
	max-width: var(--max);
	margin: 0 auto;
	padding: clamp(52px, 6vw, 86px) var(--gutter) 36px;
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, max(45%, 200px)), 1fr));
	gap: clamp(30px, 4vw, 52px) clamp(30px, 5vw, 64px);
}
.q-footer__col { max-width: 34ch; display: flex; flex-direction: column; gap: 12px; }
.q-footer__col:first-child { gap: 18px; }
.q-footer__brand { display: flex; flex-direction: column; gap: 10px; align-items: flex-start; }
.q-footer__brand img { height: 46px; width: auto; }
.q-footer__brand span { font-size: 12px; letter-spacing: .14em; color: rgba(244, 239, 228, .74); }
.q-footer__tagline { margin: 0; font-size: 14px; line-height: 1.8; font-weight: 300; max-width: 26ch; }
.q-footer__label { font-size: 10px; letter-spacing: .24em; text-transform: uppercase; color: var(--accent-text); font-weight: 600; }
.q-footer__text { font-size: 14px; font-weight: 300; line-height: 1.75; }
.q-footer__accent-link { font-size: 14px; color: var(--accent-text); }
.q-footer__accent-link:hover,
.q-footer__link:hover { color: var(--cream); }
.q-footer__link { font-size: 14px; color: rgba(244, 239, 228, .82); }
.q-footer__hours { display: block; font-size: 14px; font-weight: 300; line-height: 1.75; }
.q-footer__note { font-size: 13px; font-weight: 300; color: rgba(244, 239, 228, .5); }
.q-footer__bar {
	max-width: var(--max);
	margin: 0 auto;
	padding: 24px var(--gutter) 46px;
	border-top: 1px solid rgba(244, 239, 228, .16);
	display: flex;
	gap: 18px;
	flex-wrap: wrap;
	justify-content: space-between;
	font-size: 12px;
	font-weight: 300;
	color: rgba(244, 239, 228, .5);
}

/* ---------- Plain pages ---------- */

.q-page { max-width: 860px; display: flex; flex-direction: column; gap: 28px; }
.q-page--center { align-items: flex-start; min-height: 50vh; justify-content: center; }
.q-page__content { font-size: 16.5px; line-height: 1.8; font-weight: 300; color: var(--text); }
.q-page__content a { color: var(--copper); text-decoration: underline; }
.q-page__content h2 { font-family: var(--serif); font-size: 32px; font-weight: 300; color: var(--ink); margin: 1.4em 0 .4em; }

/* ---------- Motion preferences ---------- */

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*,
	*::before,
	*::after { animation-duration: .01ms !important; animation-delay: 0s !important; transition-duration: .01ms !important; }
}
