/* ==================================================================
   Caradog String Quartet — main stylesheet
   Brand: ivory ground · gold-bronze accents · charcoal ink ·
          near-black header/footer · blush-rose florals
   Type:  EB Garamond (headings) · Open Sans (body) · Pinyon Script (wordmark)
   ================================================================== */

/* ------------------------------------------------------------------
   Fonts (self-hosted, per project policy — no external CDN)
   ------------------------------------------------------------------ */
@font-face {
	font-family: 'Pinyon Script';
	src: url('../fonts/PinyonScript-Regular.woff2') format('woff2'),
	     url('../fonts/PinyonScript-Regular.ttf') format('truetype');
	font-weight: 400;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: 'EB Garamond';
	src: url('../fonts/EBGaramond-VF.woff2') format('woff2');
	font-weight: 400 800;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: 'EB Garamond';
	src: url('../fonts/EBGaramond-Italic-VF.woff2') format('woff2');
	font-weight: 400 800;
	font-style: italic;
	font-display: swap;
}
@font-face {
	font-family: 'Open Sans';
	src: url('../fonts/OpenSans-VF.woff2') format('woff2');
	font-weight: 300 800;
	font-style: normal;
	font-display: swap;
}

/* ------------------------------------------------------------------
   Design tokens
   ------------------------------------------------------------------ */
:root {
	--ink:        #241f1a;
	--ink-soft:   #6a6158;
	--cream:      #f8f4ed;
	--cream-2:    #f1e9dd;
	--cream-3:    #ece0d1;
	/* Brand golds come from Astra's Global Palette (Customizer → Global → Colours) so the editor
	   and the front end share one source; the hex values are fallbacks only. */
	--gold:       var(--ast-global-color-6, #b3893f); /* brand gold: lines, icons, ornament */
	--gold-deep:  var(--ast-global-color-0, #7a5b22); /* aged brass: text + button fills, AA on every light ground (≥4.8:1) and with white (6.3:1) */
	--gold-dark:  #654a1b; /* hover for gold-deep fills */
	--gold-light: #cba861;
	--burgundy:   #6d1f2c;
	--dark:       #17130f;
	--dark-2:     #211b16;
	--line:       rgba(36, 31, 26, 0.12);
	--line-gold:  color-mix(in srgb, var(--gold) 35%, transparent);

	--serif:  'EB Garamond', Georgia, 'Times New Roman', serif;
	--sans:   'Open Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
	--script: 'Pinyon Script', cursive;

	/* One content column site-wide: Astra's 1200px content width less its side padding, which is
	   3rem from 922px, 2rem from 545px and 1.5rem below (Astra's own block padding). The theme's
	   sections, the header and the footer all use these, so every edge lines up at every width. */
	--wrap:   1200px;
	--gutter: 1.5rem;
	--radius: 4px;
	--shadow: 0 18px 50px -24px rgba(36, 31, 26, 0.45);
	--shadow-sm: 0 8px 24px -14px rgba(36, 31, 26, 0.4);
}
@media (min-width: 545px) { :root { --gutter: 2rem; } }
@media (min-width: 922px) { :root { --gutter: 3rem; } }

/* ------------------------------------------------------------------
   Base — gently override Astra so our sections read cleanly
   ------------------------------------------------------------------ */
:is(body.home, :where(.cq-front-page) .editor-styles-wrapper),
:is(body.page-template-front-page, :where(.cq-front-page) .editor-styles-wrapper) {
	font-family: var(--sans);
	color: var(--ink);
	background: var(--cream);
	font-size: 17px;
	line-height: 1.7;
	-webkit-font-smoothing: antialiased;
}

.cq-main { overflow-x: clip; }

.cq-header *,
:is(.cq-main, .editor-styles-wrapper) *,
.cq-footer * { box-sizing: border-box; }

:is(.cq-main, .editor-styles-wrapper) h1, :is(.cq-main, .editor-styles-wrapper) h2, :is(.cq-main, .editor-styles-wrapper) h3 {
	font-family: var(--serif);
	font-weight: 500;
	line-height: 1.15;
	margin: 0;
	color: var(--ink);
	letter-spacing: 0.01em;
}
:is(.cq-main, .editor-styles-wrapper) p { margin: 0 0 1rem; color: var(--ink-soft); }
/* Avoid a single word stranded on the last line of a paragraph. */
:is(.cq-main, .editor-styles-wrapper) p, .site-footer p { text-wrap: pretty; }
/* Section headings: even line lengths, no single word left on the last line. */
:is(.cq-main, .editor-styles-wrapper) h2 { text-wrap: balance; }
:is(.cq-main, .editor-styles-wrapper) a { text-decoration: none; }

.cq-script { font-family: var(--script); font-weight: 400; }

.cq-skip {
	position: absolute; left: -9999px; top: 0; z-index: 100;
	background: var(--gold-deep); color: #fff; padding: .6rem 1rem;
}
.cq-skip:focus { left: 1rem; top: 1rem; }

/* Shared inner width */
.cq-hero__inner, .cq-about__inner,
.cq-services, .cq-why, .cq-quotes, .cq-gallery__inner,
.cq-cta__inner, .cq-header__inner, .cq-footer__inner {
	max-width: var(--wrap);
	margin-inline: auto;
	padding-inline: var(--gutter);
}

/* ------------------------------------------------------------------
   Eyebrow · flourish · headings
   ------------------------------------------------------------------ */
.cq-eyebrow {
	display: block;
	font-family: var(--sans);
	font-weight: 700;
	font-size: .72rem;
	letter-spacing: .26em;
	text-transform: uppercase;
	color: var(--gold-deep);
}
.cq-h2 {
	font-size: clamp(1.7rem, 3.4vw, 2.6rem);
	margin-top: .5rem;
	text-wrap: balance; /* even line lengths, no single word left on the last line */
}
/* Flourish (core Separator, "Flourish" style): assets/css/block-styles/separator-flourish.css,
   loaded in the editor too. Each section's alignment of it stays here, with the section. */

/* ------------------------------------------------------------------
   Buttons
   ------------------------------------------------------------------ */
.cq-btn {
	display: inline-flex; align-items: center; gap: .55rem;
	font-family: var(--sans); font-weight: 600;
	font-size: .78rem; letter-spacing: .16em; text-transform: uppercase;
	padding: .95em 1.7em; border-radius: var(--radius);
	cursor: pointer; transition: all .25s ease; border: 1.5px solid transparent;
	line-height: 1;
}
.cq-btn svg { transition: transform .25s ease; }
.cq-btn:hover svg { transform: translateX(3px); }
.cq-btn--lg { font-size: .82rem; padding: 1.05em 2em; }

.cq-btn--gold {
	background: var(--gold-deep);
	color: #fff; box-shadow: var(--shadow-sm);
}
/* Same hover as the contact form's Send Enquiry and the footer button. The colour is restated
   so Astra's "a:hover" link colour can't tint the text. */
.cq-btn--gold:is(:hover, :focus) { color: #fff; }
.cq-btn--gold:hover { background: var(--gold-dark); transform: translateY(-2px); }

.cq-btn--outline {
	background: transparent; color: var(--gold-deep);
	border-color: var(--line-gold);
}
.cq-btn--outline:hover { background: var(--gold-deep); color: #fff; border-color: var(--gold-deep); }

.cq-btn--ghost {
	background: rgba(255,255,255,.6); color: var(--ink);
	border-color: var(--line);
}
.cq-btn--ghost:hover { background: #fff; border-color: var(--gold); color: var(--gold-deep); }

/* "Text link" style for the core Button block: assets/css/block-styles/button-text-link.css. */

/* ------------------------------------------------------------------
   Header
   ------------------------------------------------------------------ */
.cq-header {
	position: sticky; top: 0; z-index: 50;
	background: var(--dark);
	border-bottom: 1px solid rgba(203, 168, 97, .18);
}
.cq-header__inner {
	display: flex; align-items: center; gap: 1.5rem;
	min-height: 78px;
}
.cq-brand { display: flex; flex-direction: column; line-height: 1; margin-right: auto; }
.cq-brand { flex-shrink: 0; }
.cq-brand__logo img { display: block; width: auto; height: 46px; }
@media (max-width: 1199px) { .cq-brand__logo img { height: 60px; } }
@media (max-width: 400px) { .cq-brand__logo img { height: 50px; } }
.cq-nav__list {
	display: flex; align-items: center; gap: 1.25rem;
	list-style: none; margin: 0; padding: 0;
}
.cq-nav__list a {
	font-family: var(--sans); color: #ddd4c6;
	font-size: .74rem; font-weight: 600; letter-spacing: .14em;
	text-transform: uppercase; padding: .4rem 0; position: relative;
	transition: color .2s ease;
}
.cq-nav__list a::after {
	content: ""; position: absolute; left: 0; right: 100%; bottom: -2px;
	height: 1.5px; background: var(--gold-light); transition: right .25s ease;
}
.cq-nav__list a:hover,
.cq-nav__list .is-current > a,
.cq-nav__list .current-menu-item > a { color: #fff; }
.cq-nav__list a:hover::after,
.cq-nav__list .is-current > a::after,
.cq-nav__list .current-menu-item > a::after { right: 0; }

.cq-header__cta { margin-left: .4rem; }

/* mobile toggle (hidden on desktop) */
.cq-burger { display: none; }

/* ------------------------------------------------------------------
   Hero
   ------------------------------------------------------------------ */
.cq-hero {
	position: relative;
	background:
		radial-gradient(140% 120% at 85% -10%, #f6e7e2 0%, rgba(246,231,226,0) 45%),
		radial-gradient(120% 120% at -5% 110%, #f3e4de 0%, rgba(243,228,222,0) 40%),
		linear-gradient(180deg, #fbf7f1, #f5eee4);
	overflow: hidden;
}
.cq-hero::before { /* faint sheet-music texture */
	content: ""; position: absolute; inset: 0; opacity: .5; pointer-events: none;
	background-image: repeating-linear-gradient(
		0deg, transparent 0 38px,
		rgba(179,137,63,.10) 38px 39px, transparent 39px 47px );
	-webkit-mask-image: radial-gradient(120% 90% at 50% 0%, #000 30%, transparent 75%);
	        mask-image: radial-gradient(120% 90% at 50% 0%, #000 30%, transparent 75%);
}
.cq-hero__inner {
	position: relative; z-index: 1;
	display: grid; grid-template-columns: 1.1fr .9fr; gap: clamp(2rem, 5vw, 4rem);
	align-items: center;
	padding-block: clamp(3rem, 7vw, 6rem);
}
.cq-hero__wordmark {
	display: block; color: var(--ink);
	font-size: clamp(3.4rem, 8vw, 6rem); line-height: .82;
}
.cq-hero__tagline {
	display: block; font-family: var(--serif); font-style: italic;
	color: var(--gold-deep); font-size: clamp(1.1rem, 2.4vw, 1.6rem);
	margin-top: .3rem; letter-spacing: .04em;
}
.cq-hero .is-style-cq-flourish { justify-content: flex-start; }
.cq-hero__title {
	font-size: clamp(1.9rem, 4.4vw, 3rem); font-weight: 500;
	max-width: 15ch; margin-bottom: 1.1rem;
}
.cq-hero__lede { max-width: 46ch; font-size: 1.02rem; }
.cq-hero__actions { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: 1.8rem; }

/* hero art / portrait frame */
.cq-hero__art { position: relative; display: flex; justify-content: center; }
.cq-portrait {
	position: relative; width: min(100%, 380px);
	border: 1px solid var(--line-gold); padding: 12px;
	background: #fff; box-shadow: var(--shadow); border-radius: 3px;
}
.cq-portrait::after {
	content: ""; position: absolute; inset: 5px; border: 1px solid var(--line-gold);
	pointer-events: none;
}
.cq-portrait__scene { display: block; width: 100%; height: auto; border-radius: 2px; }
.cq-portrait__cap {
	position: absolute; bottom: 26px; left: 0; right: 0; text-align: center;
	color: var(--ink); font-size: 2.2rem; text-shadow: 0 1px 0 #fff;
}

@media (max-width: 781px) {
	.cq-strip__inner .cq-strip__item { border-width: 0 !important; }
}

/* ------------------------------------------------------------------
   About
   ------------------------------------------------------------------ */
.cq-about { padding-block: clamp(3.5rem, 7vw, 6rem); }
.cq-about__inner {
	display: grid; grid-template-columns: .95fr 1.05fr; gap: clamp(2rem, 5vw, 4.5rem);
	align-items: center;
}
.cq-about__media { position: relative; }
.cq-frame {
	border: 1px solid var(--line-gold); padding: 12px; background: #fff;
	box-shadow: var(--shadow); border-radius: 3px; position: relative;
}
.cq-frame::after { content: ""; position: absolute; inset: 5px; border: 1px solid var(--line-gold); }

/* "Rose frame" style for the core Image block: assets/css/block-styles/image-rose-frame.css. */
.cq-about__body .cq-h2 { margin-bottom: 1rem; }
/* Under a left-aligned heading the flourish sits on the left too. */
.cq-about__body .is-style-cq-flourish { justify-content: flex-start; }
.cq-about__body .cq-btn { margin-top: .8rem; }

/* ------------------------------------------------------------------
   Services cards
   ------------------------------------------------------------------ */
.cq-services { padding-block: clamp(3.5rem, 7vw, 6rem); }
.cq-services__head { text-align: center; margin: 0 auto clamp(2rem, 4vw, 3rem); }
.cq-services__head .is-style-cq-flourish { justify-content: center; }
.cq-services__grid {
	display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(1rem, 2vw, 1.6rem);
}
.cq-card {
	background: #fff; border: 1px solid var(--line);
	border-radius: var(--radius); overflow: hidden;
	box-shadow: var(--shadow-sm); transition: transform .3s ease, box-shadow .3s ease;
	display: flex; flex-direction: column;
}
.cq-card:hover { transform: translateY(-6px); box-shadow: var(--shadow); }
.cq-card__media {
	position: relative; aspect-ratio: 3 / 2;
	background: linear-gradient(135deg, var(--cream-2), var(--cream-3));
	display: flex; align-items: center; justify-content: center;
	box-shadow: inset 0 -3px 0 var(--gold);
}
.cq-card__badge {
	width: 58px; height: 58px; border-radius: 50%;
	background: #fff; color: var(--gold-deep);
	display: grid; place-items: center; box-shadow: var(--shadow-sm);
	border: 1px solid var(--line-gold);
}
/* Card photo: a core Image block carrying .cq-card__media, cropped to the panel, gold rule on top. */
.cq-card figure.cq-card__media { margin: 0; overflow: hidden; }
.cq-card figure.cq-card__media img { display: block; width: 100%; height: 100%; object-fit: cover; }
.cq-card figure.cq-card__media::after {
	content: ""; position: absolute; inset: auto 0 0; height: 3px; background: var(--gold);
}
.cq-card__body { padding: 1.4rem 1.3rem 1.5rem; display: flex; flex-direction: column; gap: .5rem; flex: 1; }
.cq-card__title {
	font-size: 1.05rem; font-weight: 600; letter-spacing: .1em;
	text-transform: uppercase;
}
.cq-card__body p { font-size: .9rem; margin: 0; flex: 1; }
.cq-card__body > .wp-block-buttons { margin: .3rem 0 0; }

/* ------------------------------------------------------------------
   Why choose
   ------------------------------------------------------------------ */
.cq-why { padding-block: clamp(3rem, 6vw, 5rem); background: var(--cream-2); }
.cq-why__head { text-align: center; margin-bottom: clamp(2rem, 4vw, 3rem); }
.cq-why__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(1.4rem, 3vw, 2.4rem); }
.cq-why__item { text-align: center; }
.cq-why__icon {
	width: 66px; height: 66px; border-radius: 50%;
	border: 1px solid var(--line-gold); color: var(--gold);
	display: grid; place-items: center; margin: 0 auto 1rem;
	background: #fff; box-shadow: var(--shadow-sm);
}
.cq-why__title {
	font-family: var(--serif); font-size: 1rem; font-weight: 600;
	letter-spacing: .1em; text-transform: uppercase; margin-bottom: .5rem;
}
.cq-why__item p { font-size: .88rem; margin: 0; }

/* Why choose (Home): laid out entirely with block settings in the editor (Columns, a Grid of four
   items, Row for each icon and title). Its page side gutter comes from the Home rule shared with
   the services strip below, until Home renders through Astra's page template like the other pages. */

/* ------------------------------------------------------------------
   Testimonials
   ------------------------------------------------------------------ */
.cq-quotes { padding-block: clamp(3.5rem, 7vw, 6rem); }
.cq-quotes__head { text-align: center; margin-bottom: clamp(2rem, 4vw, 3rem); }
.cq-quotes__head .is-style-cq-flourish { justify-content: center; }
/* The testimonial cards are the Testimonials block (blocks/testimonials/), columns set in the editor. */
/* "Testimonial" style for the core Quote block: assets/css/block-styles/quote-testimonial.css. */

/* ------------------------------------------------------------------
   Repertoire / gallery
   ------------------------------------------------------------------ */
.cq-gallery { background: var(--dark); color: #e9e1d4; padding-block: clamp(3.5rem, 7vw, 5.5rem); }
.cq-gallery__inner { display: grid; grid-template-columns: .85fr 1.15fr; gap: clamp(2rem, 5vw, 4rem); align-items: center; }
.cq-gallery .cq-eyebrow { color: var(--gold-light); }
.cq-gallery .cq-h2 { color: #fff; margin: .6rem 0 1rem; }
.cq-gallery__intro p { color: #c7bdad; }
.cq-gallery__intro .cq-btn--outline { color: var(--gold-light); border-color: rgba(203,168,97,.5); margin-top: .6rem; }
.cq-gallery__intro .cq-btn--outline:hover { background: var(--gold-deep); color: #fff; border-color: var(--gold-deep); }
/* Two rows of two beside the intro; one row of four once the intro stacks above (≤1024px). */
.cq-gallery__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: .8rem; }
.cq-thumb {
	position: relative; margin: 0; aspect-ratio: 4 / 3; border-radius: var(--radius);
	overflow: hidden; background: var(--dark-2); box-shadow: var(--shadow-sm);
}
/* The photo (core Image block) fills the box; its caption sits over a soft shade at the foot. */
:is(.cq-main, .editor-styles-wrapper) .cq-thumb .wp-block-image { position: absolute; inset: 0; margin: 0; }
:is(.cq-main, .editor-styles-wrapper) .cq-thumb .wp-block-image img { display: block; width: 100%; height: 100%; object-fit: cover; }
:is(.cq-main, .editor-styles-wrapper) .cq-thumb .wp-element-caption {
	position: absolute; inset: auto 0 0; margin: 0; padding: 2.5rem .8rem .8rem;
	background: linear-gradient(180deg, rgba(0,0,0,0), rgba(0,0,0,.65));
	color: #fff; font-size: .82rem; font-weight: 600; line-height: 1.3; text-align: left;
}

/* ------------------------------------------------------------------
   CTA band
   ------------------------------------------------------------------ */
.cq-cta {
	position: relative; overflow: hidden; text-align: center;
	background:
		radial-gradient(80% 120% at 50% -10%, #fbeae5, rgba(251,234,229,0) 60%),
		linear-gradient(180deg, var(--cream-2), var(--cream-3));
	padding-block: clamp(3rem, 6vw, 4.5rem);
}
/* The bands keep the extra top space they had when a Custom HTML block (the roses) came before
   their content and pushed it down by the block gap. */
.cq-cta.wp-block-group > .cq-cta__inner:first-child { margin-top: var(--wp--style--block-gap, 24px); }
.cq-cta__inner { position: relative; z-index: 1; }
/* In page content the band already has Astra's side padding. */
:is(.entry-content, :where(html:not(.cq-front-page)) .is-root-container) .cq-cta__inner { padding-inline: 0; max-width: calc(var(--wrap) - 2 * var(--gutter)); }
/* Home's strip (an editor group) keeps the same side gutter as the theme's sections. */
:is(.cq-main, :where(.cq-front-page) .is-root-container) > :is(.cq-strip, .cq-reasons) { padding-inline: var(--gutter); }
.cq-cta__title { font-size: clamp(1.6rem, 3.6vw, 2.5rem); font-weight: 500; margin-bottom: .6rem; }
.cq-cta p { margin: 0 auto 1.6rem; text-wrap: balance; }
/* A short highlighted line just above the buttons (e.g. the midweek wedding discount). */
:is(.cq-main, .editor-styles-wrapper) .cq-cta .cq-cta__note {
	margin-top: -.6rem; font-family: var(--serif); font-style: italic; font-size: 1.2rem; color: var(--gold-deep);
}

/* Decorative roses (transparent WebP / PNG), drawn as the band's ::before / ::after so the
   content stays plain blocks. They never cross the text column: on wide screens each sits in
   the side space beside it (--cq-cta-side is that space), and below 1280px the left rose tucks
   into the bottom-left corner beside the buttons while the right one is hidden. */
.cq-cta {
	--cq-cta-side: max(var(--gutter), (100% - var(--wrap)) / 2 + var(--gutter));
	--cq-cta-rose-l: clamp(150px, 20vw, 290px);
	--cq-cta-rose-r: clamp(120px, 15vw, 220px);
}
.cq-cta::before,
.cq-cta::after {
	content: ""; position: absolute; z-index: 0; pointer-events: none;
	aspect-ratio: 760 / 922;
	background: url('../img/rose.png') center / contain no-repeat;
	background-image: -webkit-image-set(url('../img/rose.webp') type('image/webp'), url('../img/rose.png') type('image/png'));
	background-image: image-set(url('../img/rose.webp') type('image/webp'), url('../img/rose.png') type('image/png'));
	filter: drop-shadow(0 10px 24px rgba(60, 15, 20, 0.18));
}
.cq-cta::before {
	width: var(--cq-cta-rose-l); left: calc(var(--cq-cta-side) - 2rem - var(--cq-cta-rose-l)); bottom: -74px;
	opacity: .55; transform: rotate(-5deg);
}
.cq-cta::after {
	width: var(--cq-cta-rose-r); right: calc(var(--cq-cta-side) - 2rem - var(--cq-cta-rose-r)); top: -78px;
	opacity: .32; transform: scaleX(-1) rotate(-5deg);
}
@media (max-width: 1279px) {
	.cq-cta::before { width: 92px; left: -12px; bottom: -6px; opacity: .45; }
	.cq-cta::after { display: none; }
}
@media (max-width: 600px) {
	.cq-cta::before { width: 72px; left: -22px; bottom: -4px; }
}

/* ------------------------------------------------------------------
   Footer
   ------------------------------------------------------------------ */
.cq-footer { background: var(--dark); color: #c7bdad; font-family: var(--sans); }
.cq-footer__inner {
	display: grid; grid-template-columns: 1.5fr 1fr 1.2fr 1.2fr; gap: clamp(1.5rem, 3vw, 3rem);
	padding-block: clamp(3rem, 5vw, 4rem);
}
.cq-footer__brand .cq-brand__name--lg { font-size: 2.4rem; color: #f4ecda; display: block; line-height: 1; }
.cq-footer__ornament { color: var(--gold); display: block; margin: .3rem 0 .8rem; }
.cq-footer__brand p { color: #b7ad9d; font-size: .92rem; max-width: 34ch; }
.cq-footer__head {
	font-family: var(--serif); color: #f4ecda; font-size: 1.15rem; font-weight: 600;
	margin-bottom: 1.1rem; position: relative; padding-bottom: .6rem;
}
.cq-footer__head::after { content: ""; position: absolute; left: 0; bottom: 0; width: 34px; height: 2px; background: var(--gold); }
.cq-footer__links, .cq-footer__contact { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; }
.cq-footer__links a { display: inline-block; color: #c7bdad; font-size: .92rem; transition: color .2s ease, transform .2s ease; }
.cq-footer__links a:hover { color: var(--gold-light); transform: translateX(.25rem); }
.cq-footer__contact li { display: flex; gap: .6rem; align-items: flex-start; font-size: .92rem; }
.cq-footer__contact svg { color: var(--gold); margin-top: .2rem; flex: none; }
.cq-footer__contact a { color: #c7bdad; }
.cq-footer__contact a:hover { color: var(--gold-light); }
.cq-footer__col p { color: #b7ad9d; font-size: .92rem; margin-bottom: 1.1rem; }
.cq-social { display: flex; gap: .6rem; margin-top: 1.1rem; }
.cq-social a {
	width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center;
	background: rgba(255,255,255,.06); color: #d8cfc0; transition: all .2s ease;
}
.cq-social a:hover { background: var(--gold); color: #fff; }
.cq-footer__bar {
	border-top: 1px solid rgba(255,255,255,.09);
	display: flex; justify-content: space-between; flex-wrap: wrap; gap: .6rem;
	max-width: var(--wrap); margin-inline: auto; padding: 1.2rem var(--gutter);
	font-size: .8rem; color: #9a9082;
}
.cq-footer__bar-links { display: flex; gap: 1.4rem; }
.cq-footer__bar-links a { color: #9a9082; }
.cq-footer__bar-links a:hover { color: var(--gold-light); }

/* ------------------------------------------------------------------
   Footer widget subheadings
   ------------------------------------------------------------------ */
.site-footer .footer-widget-area .wp-block-separator {
	width: 34px;
	max-width: 34px;
	height: 2px;
	margin: 0.4rem 0 1.1rem;
	border: 0;
	background-color: var(--gold) !important;
	opacity: 1;
}

/* Footer links and social icons turn gold on hover / keyboard focus, so they read as links
   (the editor sets their colour but has no hover colour). Buttons keep their own styles. */
.site-footer .footer-widget-area a:not(.wp-element-button),
:is(.site-footer, .cq-contact__aside) .wp-block-social-links .wp-social-link .wp-block-social-link-anchor {
	transition: color .2s ease;
}
.site-footer .footer-widget-area a:not(.wp-element-button):is(:hover, :focus-visible),
:is(.site-footer, .cq-contact__aside) .wp-block-social-links .wp-social-link .wp-block-social-link-anchor:is(:hover, :focus-visible) {
	color: var(--gold-light);
}
.site-footer .footer-widget-area a:focus-visible {
	outline: 2px solid var(--gold-light);
	outline-offset: 3px;
	border-radius: 2px;
}
/* Footer columns sit in the same content column as the pages. */
.site-footer .site-primary-footer-wrap[data-section] .ast-builder-grid-row,
.site-footer .site-below-footer-wrap[data-section] .ast-builder-grid-row {
	box-sizing: border-box; max-width: var(--wrap); padding-inline: var(--gutter);
}
/* Astra's layouts are only equal or end-heavy, so on wide screens give the Contact column (3rd)
   the extra room the email address needs to sit on one line, taken mostly from the short links
   list. Between Astra's tablet breakpoint and that, four columns are too tight: two rows of two,
   matching the tablet layout set in the Customizer. */
@media (min-width: 922px) and (max-width: 1199px) {
	.site-footer .site-primary-footer-wrap[data-section] .ast-builder-grid-row { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1200px) {
	.site-footer .site-primary-footer-wrap[data-section] .ast-builder-grid-row { grid-template-columns: 1fr .7fr 1.4fr 1fr; }
}

/* Footer "Get in Touch" (core Button block) matches the header and form buttons: same type,
   arrow and hover. Its colours stay with the editor; hover darkens whatever colour is chosen. */
.site-footer .wp-block-button__link {
	display: inline-flex; align-items: center; gap: .55rem;
	font-family: var(--sans); font-weight: 600; font-size: .82rem;
	letter-spacing: .16em; line-height: 1;
	padding: 1.05em 2.4em; border-radius: var(--radius);
	box-shadow: var(--shadow-sm);
	transition: box-shadow .25s ease, transform .25s ease;
}
.site-footer .wp-block-button__link::after {
	content: ""; flex: none; width: 14px; height: 14px;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat;
	transition: transform .25s ease;
}
.site-footer .wp-block-button__link:is(:hover, :focus-visible) {
	box-shadow: inset 0 0 0 100vmax rgb(0 0 0 / .17), var(--shadow-sm); /* brass → --gold-dark */
	transform: translateY(-2px);
}
.site-footer .wp-block-button__link:is(:hover, :focus-visible)::after { transform: translateX(3px); }
.site-footer .wp-block-button__link:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; }
@media (prefers-reduced-motion: reduce) {
	.site-footer .footer-widget-area a,
	.site-footer .wp-block-social-links .wp-block-social-link-anchor { transition: none; }
	.site-footer .wp-block-button__link:is(:hover, :focus-visible),
	.site-footer .wp-block-button__link:is(:hover, :focus-visible)::after { transform: none; }
}

/* ------------------------------------------------------------------
   Responsive
   ------------------------------------------------------------------ */
@media (max-width: 1024px) {
	.cq-services__grid, .cq-why__grid { grid-template-columns: repeat(2, 1fr); }
	.cq-gallery__inner { grid-template-columns: 1fr; }
	.cq-gallery__grid { grid-template-columns: repeat(4, 1fr); }
}

@media (max-width: 860px) {
	/* header → mobile nav */
	.cq-header__inner { gap: .75rem; }
	.cq-burger {
		display: flex; flex-direction: column; justify-content: center; gap: 5px;
		order: 2; width: 44px; height: 44px; padding: 0 10px; cursor: pointer;
		background: none; border: 0; border-radius: var(--radius);
	}
	.cq-burger:is(:hover, :focus) { background: none; border-color: transparent; } /* beat Astra's button:hover colours */
	.cq-burger:focus-visible { outline: 2px solid var(--gold-light); outline-offset: 2px; }
	.cq-burger span[aria-hidden] { display: block; height: 2px; background: #e9e1d4; border-radius: 2px; transition: all .25s ease; }
	/* Compact Enquire stays in the bar beside the burger. */
	.cq-header__cta {
		order: 1; margin-left: 0; min-height: 44px; white-space: nowrap;
		font-size: .7rem; letter-spacing: .12em; padding-inline: 1em;
	}
	.cq-nav {
		position: absolute; top: 100%; left: 0; right: 0;
		background: var(--dark-2);
		border-top: 1px solid rgba(203, 168, 97, .2);
		opacity: 0; visibility: hidden; transform: translateY(-10px);
		transition: opacity .25s ease, transform .25s ease, visibility .25s ease;
	}
	.cq-nav__list { flex-direction: column; align-items: stretch; gap: 0; padding: .5rem 0; }
	.cq-nav__list li { padding: 0; }
	.cq-nav__list a { display: block; padding: .9rem var(--gutter); }
	.cq-header.is-nav-open .cq-nav { opacity: 1; visibility: visible; transform: translateY(0); }
	.cq-header.is-nav-open .cq-burger span:nth-child(2) { transform: translateY(7px) rotate(45deg); }
	.cq-header.is-nav-open .cq-burger span:nth-child(3) { opacity: 0; }
	.cq-header.is-nav-open .cq-burger span:nth-child(4) { transform: translateY(-7px) rotate(-45deg); }
}

@media (max-width: 760px) {
	.cq-hero__inner { grid-template-columns: 1fr; text-align: center; }
	.cq-hero .is-style-cq-flourish, .cq-hero__actions { justify-content: center; }
	.cq-hero__lede { margin-inline: auto; }
	/* Centre the stacked heading; the 15ch desktop cap left it stranded on the left with cramped breaks. Scoped to outrank the shared heading margin reset. */
	:is(.cq-main, .editor-styles-wrapper) .cq-hero__title { margin: 0 auto 1.1rem; max-width: none; text-wrap: balance; }
	.cq-hero__art { order: -1; }
	.cq-portrait { width: min(100%, 320px); }
	.cq-about__inner { grid-template-columns: 1fr; }
	.cq-about__media { order: -1; max-width: 460px; margin-inline: auto; }
	.cq-footer__inner { grid-template-columns: 1fr 1fr; }
	.cq-gallery__grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 520px) {
	.cq-services__grid, .cq-why__grid,
	.cq-gallery__grid, .cq-footer__inner { grid-template-columns: 1fr; }
	.cq-gallery__grid { grid-template-columns: 1fr 1fr; }
	.cq-hero__actions .cq-btn { width: 100%; justify-content: center; }
}

/* Utility class retained from initial setup */
.script-heading { font-family: var(--script); font-weight: 400; }

/* ==================================================================
   Native-block support
   ================================================================== */
:is(.cq-main, .editor-styles-wrapper) .cq-hero__inner,
:is(.cq-main, .editor-styles-wrapper) .cq-about__inner,
:is(.cq-main, .editor-styles-wrapper) .cq-services__grid,
:is(.cq-main, .editor-styles-wrapper) .cq-why__grid,
:is(.cq-main, .editor-styles-wrapper) .cq-gallery__inner,
:is(.cq-main, .editor-styles-wrapper) .cq-gallery__grid { display: grid; }

:is(.cq-main, .editor-styles-wrapper) .wp-block-columns { margin-block: 0; }
:is(.cq-main, .editor-styles-wrapper) .cq-hero.wp-block-cover { min-height: 0; }
:is(.cq-main, .editor-styles-wrapper) .cq-hero__inner > .wp-block-column,
:is(.cq-main, .editor-styles-wrapper) .cq-about__inner > .wp-block-column,
:is(.cq-main, .editor-styles-wrapper) .cq-services__grid > .wp-block-column,
:is(.cq-main, .editor-styles-wrapper) .cq-why__grid > .wp-block-column,
:is(.cq-main, .editor-styles-wrapper) .cq-gallery__grid > .wp-block-column { flex-basis: auto; }

:is(.cq-main, .editor-styles-wrapper) .cq-wpbtn .wp-block-button__link {
	display: inline-flex; align-items: center; gap: .5rem;
	font-family: var(--sans); font-weight: 600; font-size: .78rem;
	letter-spacing: .16em; text-transform: uppercase; line-height: 1;
	padding: .95em 1.7em; border-radius: var(--radius);
	border: 1.5px solid transparent; transition: all .25s ease;
}
:is(.cq-main, .editor-styles-wrapper) .cq-wpbtn--lg .wp-block-button__link { font-size: .82rem; padding: 1.05em 2em; }
:is(.cq-main, .editor-styles-wrapper) .cq-wpbtn--gold .wp-block-button__link { background: var(--gold-deep); color: #fff; box-shadow: var(--shadow-sm); }
:is(.cq-main, .editor-styles-wrapper) .cq-wpbtn--gold .wp-block-button__link:is(:hover, :focus) { background: var(--gold-dark); color: #fff; }
:is(.cq-main, .editor-styles-wrapper) .cq-wpbtn--gold .wp-block-button__link:hover { transform: translateY(-2px); }
:is(.cq-main, .editor-styles-wrapper) .cq-wpbtn--ghost .wp-block-button__link { background: rgba(255,255,255,.6); color: var(--ink); border-color: var(--line); }
:is(.cq-main, .editor-styles-wrapper) .cq-wpbtn--ghost .wp-block-button__link:hover { background: #fff; border-color: var(--gold); color: var(--gold-deep); }
:is(.cq-main, .editor-styles-wrapper) .cq-wpbtn--outline .wp-block-button__link { background: transparent; color: var(--gold-deep); border-color: var(--line-gold); }
:is(.cq-main, .editor-styles-wrapper) .cq-wpbtn--outline .wp-block-button__link:hover { background: var(--gold-deep); color: #fff; border-color: var(--gold-deep); }
:is(.cq-main, .editor-styles-wrapper) .cq-gallery .cq-wpbtn--outline .wp-block-button__link { color: var(--gold-light); border-color: rgba(203,168,97,.5); }

/* ==================================================================
   Musicians block
   ================================================================== */
.cq-musicians { margin-block: clamp(1.5rem, 3vw, 2.5rem); }
.cq-musicians__grid {
	display: grid; grid-template-columns: repeat(3, 1fr);
	gap: clamp(1.4rem, 3vw, 2.4rem);
}
.cq-musician {
	background: #fff; border: 1px solid var(--line); border-radius: var(--radius);
	overflow: hidden; box-shadow: var(--shadow-sm);
	display: flex; flex-direction: column;
	transition: transform .3s ease, box-shadow .3s ease;
}
.cq-musician--has-bio:hover { transform: translateY(-6px); box-shadow: var(--shadow); }

/* Whole card is the trigger button for players with a biography. */
.cq-musician__trigger {
	appearance: none; -webkit-appearance: none;
	margin: 0; padding: 0; border: 0; background: none; color: inherit; font: inherit;
	text-align: left; width: 100%; cursor: pointer;
	display: flex; flex-direction: column;
}
.cq-musician__trigger:is(:hover, :focus) { background: none; color: inherit; border-color: transparent; } /* beat Astra's button:hover colours */
.cq-musician__trigger:focus-visible {
	outline: 3px solid var(--gold); outline-offset: 3px; border-radius: var(--radius);
}
.cq-musician__photo {
	aspect-ratio: 1 / 1;
	background: linear-gradient(135deg, var(--cream-2), var(--cream-3));
	display: grid; place-items: center;
	box-shadow: inset 0 -3px 0 var(--gold);
}
.cq-musician__photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cq-musician__placeholder { color: var(--gold); opacity: .5; }
.cq-musician__body { padding: 1.3rem 1.4rem 1.5rem; display: flex; flex-direction: column; gap: .35rem; }
.cq-musician__name { font-family: var(--serif); font-size: 1.3rem; font-weight: 600; color: var(--ink); margin: 0; line-height: 1.2; }
.cq-musician__instrument {
	font-family: var(--sans); font-weight: 700; font-size: .72rem;
	letter-spacing: .18em; text-transform: uppercase; color: var(--gold-deep);
}
.cq-musician__more {
	margin-top: .6rem; display: inline-flex; align-items: center; gap: .35rem;
	font-family: var(--sans); font-weight: 600; font-size: .72rem;
	letter-spacing: .12em; text-transform: uppercase; color: var(--gold-deep);
}
.cq-musician__more svg { transition: transform .25s ease; }
.cq-musician__trigger:hover .cq-musician__more svg,
.cq-musician__trigger:focus-visible .cq-musician__more svg { transform: translateX(.25rem); }

/* Bio modal (native <dialog>). */
.cq-musician-dialog {
	margin: auto; max-width: min(600px, 92vw); width: 100%; padding: 0; border: 0;
	max-height: calc(100vh - 3rem); max-height: calc(100dvh - 3rem);
	background: #fff; color: var(--ink); border-radius: var(--radius);
	box-shadow: var(--shadow); overflow: hidden;
	opacity: 0; transform: translateY(10px);
	transition: opacity .25s ease, transform .25s ease, overlay .25s ease allow-discrete, display .25s ease allow-discrete;
}
.cq-musician-dialog[open] {
	display: flex; flex-direction: column;
	opacity: 1; transform: translateY(0);
}
@starting-style { .cq-musician-dialog[open] { opacity: 0; transform: translateY(10px); } }
.cq-musician-dialog::backdrop {
	background: rgba(23, 19, 13, 0);
	transition: background .25s ease, overlay .25s ease allow-discrete, display .25s ease allow-discrete;
}
.cq-musician-dialog[open]::backdrop { background: rgba(23, 19, 13, .55); }
@starting-style { .cq-musician-dialog[open]::backdrop { background: rgba(23, 19, 13, 0); } }
.cq-musician-dialog__panel { overflow-y: auto; padding: clamp(1.6rem, 4vw, 2.6rem); }
.cq-musician-dialog__close,
.cq-musician-dialog__close:hover,
.cq-musician-dialog__close:focus {
	position: absolute; top: .8rem; right: .8rem; z-index: 2;
	width: 40px; height: 40px; display: grid; place-items: center; padding: 0;
	appearance: none; -webkit-appearance: none; border: 0;
	background: none !important; background-color: transparent !important; box-shadow: none !important;
	cursor: pointer; color: var(--ink-soft); transition: color .2s ease;
}
.cq-musician-dialog__close:hover { color: var(--ink); }
.cq-musician-dialog__close:focus-visible { outline: 3px solid var(--gold); outline-offset: 2px; }
.cq-musician-dialog__head { display: flex; align-items: center; gap: 1.1rem; margin-bottom: 1.2rem; padding-right: 2rem; }
.cq-musician-dialog__photo {
	width: 84px; height: 84px; flex: none; border-radius: 50%; overflow: hidden;
	display: grid; place-items: center; background: linear-gradient(135deg, var(--cream-2), var(--cream-3));
}
.cq-musician-dialog__photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cq-musician-dialog__name { font-family: var(--serif); font-size: 1.5rem; font-weight: 600; color: var(--ink); margin: 0 0 .2rem; line-height: 1.15; }
.cq-musician-dialog__bio { font-size: .98rem; line-height: 1.7; color: var(--ink-soft); }
.cq-musician-dialog__bio p { margin: 0 0 .9rem; }
.cq-musician-dialog__bio p:last-child { margin-bottom: 0; }

body.cq-modal-open { overflow: hidden; }

@media (prefers-reduced-motion: reduce) {
	.cq-musician-dialog, .cq-musician-dialog::backdrop, .cq-musician__more svg,
	.cq-musician { transition: none; }
}
@media (max-width: 900px) { .cq-musicians__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) {
	.cq-musicians__grid { grid-template-columns: 1fr; max-width: 440px; }
	.cq-musician-dialog__head { flex-direction: column; text-align: center; align-items: center; padding-right: 0; }
}

/* Generic interior page sections (About, etc.) */
.cq-page { padding-block: clamp(3rem, 6vw, 5rem); }
.cq-page__intro { margin-inline: auto; padding-inline: var(--gutter); text-align: center; }
/* In page content Astra already supplies the side padding. */
:is(.entry-content, :where(html:not(.cq-front-page)) .is-root-container) :is(.cq-page__intro, .cq-page__head) { padding-inline: 0; }
.cq-page__intro .cq-h2 { margin: .5rem 0 .4rem; }
.cq-page__intro .is-style-cq-flourish { justify-content: center; }
.cq-page__intro p { font-size: 1.05rem; }
.cq-page__head { text-align: center; max-width: var(--wrap); margin: clamp(2.5rem, 5vw, 4rem) auto clamp(1.5rem, 3vw, 2.5rem); padding-inline: var(--gutter); }

/* ==================================================================
   Contact page + Gravity Forms
   ================================================================== */
/* Two columns: dark details panel beside the form card (colours and padding are set in the editor). */
:is(.cq-main, .editor-styles-wrapper) .cq-contact__grid { margin-top: clamp(2rem, 4vw, 3rem); align-items: stretch; }
.cq-contact__aside, .cq-contact__form { border-radius: var(--radius); box-shadow: var(--shadow); }
:is(.cq-main, .editor-styles-wrapper) .cq-contact__title { margin: 0 0 1rem; font-size: clamp(1.6rem, 3vw, 2.1rem); }
:is(.entry-content, :where(html:not(.cq-front-page)) .is-root-container) .cq-contact__social { margin: 0; padding-left: 0; padding-top: 1.25rem; border-top: 1px solid rgba(203, 168, 97, .25); }
.cq-contact__details { margin-block: 1.5rem; }
.cq-contact__aside a { transition: color .2s ease; }
.cq-contact__aside a:hover, .cq-contact__aside a:focus-visible { color: var(--gold-light); }
/* Form card: gold double frame, as on the framed photos. */
.cq-contact__form { position: relative; border: 1px solid var(--line-gold); }
.cq-contact__form::before {
	content: ""; position: absolute; inset: 6px; pointer-events: none;
	border: 1px solid var(--line-gold); border-radius: 2px;
}
@media (max-width: 781px) {
	:is(.cq-main, .editor-styles-wrapper) .cq-contact__grid { gap: 1.5rem; }
	.cq-contact__form { order: -1; }
}
.cq-contact .gform_wrapper {
	margin-top: 0.5rem;
	/* Gravity Forms theme framework variables → brand gold. */
	--gf-color-primary: var(--gold-deep);
	--gf-color-primary-rgb: 122, 91, 34;
	--gf-color-primary-contrast: #ffffff;
	--gf-color-primary-darker: var(--gold-dark);
	--gf-color-primary-lighter: var(--gold);
	--gf-ctrl-border-color-focus: var(--gold);
}
.cq-contact .gform_wrapper form { margin: 0; }
.cq-contact .gform_wrapper .gform_required_legend { display: none; }

/* Gravity Forms' own 12-column grid, so half-width fields set in the form editor sit side by side. */
.cq-contact .gform_wrapper .gform_fields { row-gap: 1.35rem; column-gap: 1.25rem; }
.cq-contact .gform_wrapper .gfield { margin: 0; }

.cq-contact .gform_wrapper .gfield_label {
	font-family: var(--sans); font-weight: 600; font-size: 0.82rem;
	letter-spacing: normal; color: var(--ink); margin-bottom: 0.45rem; display: block;
}
.cq-contact .gform_wrapper .gfield_required { color: var(--gold-deep); margin-left: 0.15rem; text-decoration: none; }

.cq-contact .gform_wrapper input[type="text"],
.cq-contact .gform_wrapper input[type="email"],
.cq-contact .gform_wrapper input[type="tel"],
.cq-contact .gform_wrapper input[type="url"],
.cq-contact .gform_wrapper input[type="number"],
.cq-contact .gform_wrapper textarea,
.cq-contact .gform_wrapper select {
	width: 100%; box-sizing: border-box;
	font-family: var(--sans); font-size: 0.9rem; color: var(--ink); line-height: 1.5;
	background: var(--cream); border: 1px solid var(--line-gold); border-radius: var(--radius);
	padding: 0.8rem 1rem;
	transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
}
.cq-contact .gform_wrapper textarea { min-height: 150px; resize: vertical; }
.cq-contact .gform_wrapper input:focus,
.cq-contact .gform_wrapper textarea:focus,
.cq-contact .gform_wrapper select:focus {
	outline: none; border-color: var(--gold); background: #fff;
	box-shadow: 0 0 0 3px rgba(179, 137, 63, 0.18);
}
.cq-contact .gform_wrapper ::placeholder { color: var(--ink-soft); opacity: 0.55; }

.cq-contact .gform_wrapper .gform_footer { margin-top: 1.7rem; padding: 0; }
.cq-contact .gform_wrapper input.gform_button,
.cq-contact .gform_wrapper input[type="submit"].gform_button,
.cq-contact .gform_wrapper button.gform_button {
	display: inline-flex !important; align-items: center; justify-content: center; gap: .55rem;
	width: auto !important;
	font-family: var(--sans) !important; font-weight: 600 !important; font-size: 0.82rem !important;
	letter-spacing: 0.16em !important; text-transform: uppercase !important; line-height: 1 !important;
	padding: 1.05em 2.4em !important; border: 0 !important; border-radius: var(--radius) !important; cursor: pointer;
	background-color: var(--gold-deep) !important; background-image: none !important; color: #fff !important;
	box-shadow: var(--shadow-sm);
	transition: background-color 0.25s ease, transform 0.25s ease;
}
.cq-contact .gform_wrapper input.gform_button:hover,
.cq-contact .gform_wrapper button.gform_button:hover { background-color: var(--gold-dark) !important; transform: translateY(-2px); }
.cq-contact .gform_wrapper .gform_button svg { flex: none; transition: transform .25s ease; }
/* Gravity Forms' reset clears SVG paint, so restore the arrow's stroke (white, like the button text). */
.cq-contact .gform_wrapper .gform_button svg polyline { fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: butt; }
.cq-contact .gform_wrapper .gform_button:hover svg { transform: translateX(3px); }
.cq-contact .gform_wrapper input.gform_button:focus-visible,
.cq-contact .gform_wrapper button.gform_button:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; }

.cq-contact .gform_wrapper .gfield_error input,
.cq-contact .gform_wrapper .gfield_error textarea { border-color: #b3261e; }
.cq-contact .gform_wrapper .gfield_validation_message,
.cq-contact .gform_wrapper .validation_message {
	color: #b3261e; font-size: 0.82rem; margin-top: 0.4rem; background: none; border: 0; padding: 0;
}
.cq-contact .gform_wrapper .gform_validation_errors {
	background: #fbeceb; border: 1px solid #e7b9b5; border-radius: var(--radius);
	padding: 1rem 1.2rem; margin-bottom: 1.5rem; box-shadow: none;
}
.cq-contact .gform_wrapper .gform_validation_errors h2 { color: #7a1c17; font-size: 1rem; margin: 0; }

.cq-contact .gform_confirmation_message {
	background: var(--cream-2); border: 1px solid var(--line-gold);
	padding: 1.4rem 1.6rem; border-radius: var(--radius); color: var(--ink); font-size: 1.02rem; line-height: 1.6;
}

/* ------------------------------------------------------------------
   Header fit — eight primary menu items (Playlists added) between the
   burger breakpoint and wide desktop: tighten nav spacing and keep the
   Enquire button on one line instead of letting it wrap or overflow.
   ------------------------------------------------------------------ */
@media (min-width: 1100px) {
	.cq-nav__list { gap: .8rem; }
	.cq-nav__list a { letter-spacing: 0.1em; }
	.cq-header__cta { white-space: nowrap; padding-left: 1.1rem; padding-right: 1.1rem; }
}
@media (min-width: 861px) and (max-width: 1099px) {
	.cq-header__inner { column-gap: 16px; }
	.cq-nav__list { gap: 0.55rem; }
	.cq-nav__list a { letter-spacing: 0.05em; font-size: 0.75rem; }
	.cq-header__cta { white-space: nowrap; padding-left: 0.8rem; padding-right: 0.8rem; letter-spacing: 0.08em; font-size: 0.75rem; }
}
@media (min-width: 861px) and (max-width: 920px) {
	.cq-nav__list { gap: 0.35rem; }
}

/* ------------------------------------------------------------------
   Image lightbox (core Image/Gallery "expand on click") — a translucent
   charcoal scrim so the page shows through, and close / previous / next
   as ivory rounds with brass icons, like the site's other buttons.
   Core prints the scrim colour and the buttons' fill inline, and resets
   the buttons with high-specificity :not() chains, hence !important.
   ------------------------------------------------------------------ */
.wp-lightbox-overlay .scrim {
	background-color: rgb(36 31 26 / 0.62) !important;
	-webkit-backdrop-filter: blur(3px);
	backdrop-filter: blur(3px);
}
.wp-lightbox-overlay .wp-lightbox-close-button,
.wp-lightbox-overlay .wp-lightbox-navigation-button {
	width: 52px;
	height: 52px;
	padding: 0 !important;
	border: 1px solid var(--line-gold) !important;
	border-radius: 50%;
	background: rgb(255 255 255 / 0.94) !important;
	color: var(--gold-deep);
	box-shadow: 0 6px 18px rgb(36 31 26 / 0.18);
	transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}
.wp-lightbox-overlay .wp-lightbox-navigation-button { width: 58px; height: 58px; }
.wp-lightbox-overlay .wp-lightbox-close-button svg,
.wp-lightbox-overlay .wp-lightbox-navigation-button svg { fill: currentColor; }
.wp-lightbox-overlay .wp-lightbox-close-button svg { width: 24px; height: 24px; }
.wp-lightbox-overlay .wp-lightbox-navigation-button svg { width: 32px; height: 32px; }
.wp-lightbox-overlay .wp-lightbox-close-button:hover,
.wp-lightbox-overlay .wp-lightbox-navigation-button:hover {
	background: var(--gold-deep) !important;
	border-color: var(--gold-deep) !important;
	color: #fff;
}
.wp-lightbox-overlay .wp-lightbox-close-button:focus-visible,
.wp-lightbox-overlay .wp-lightbox-navigation-button:focus-visible {
	outline: 2px solid #fff;
	outline-offset: 3px;
}
@media (max-width: 600px) {
	.wp-lightbox-overlay .wp-lightbox-close-button,
	.wp-lightbox-overlay .wp-lightbox-navigation-button { width: 48px; height: 48px; }
	.wp-lightbox-overlay .wp-lightbox-navigation-button svg { width: 28px; height: 28px; }
}
@media (prefers-reduced-motion: reduce) {
	.wp-lightbox-overlay .wp-lightbox-close-button,
	.wp-lightbox-overlay .wp-lightbox-navigation-button { transition: none; }
}

/* ------------------------------------------------------------------
   Weddings + Corporate pages — extras on top of the Home patterns
   (services cards, "why" band, about split, CTA band).
   ------------------------------------------------------------------ */
/* Plain text links inside paragraphs: brass and underlined, so they read as links. Kept at low
   specificity (:where) so a link colour chosen in the editor still wins. */
:is(.cq-main, .editor-styles-wrapper) :where(p > a:not([class])) {
	color: var(--gold-deep);
	text-decoration: underline;
	text-decoration-color: var(--line-gold);
	text-underline-offset: 3px;
	transition: text-decoration-color .2s ease;
}
:is(.cq-main, .editor-styles-wrapper) :where(p > a:not([class])):hover { text-decoration-color: currentColor; }

/* Three-card variant of the services grid (wedding packages). */
.cq-services__grid--3 { grid-template-columns: repeat(3, 1fr); }
.cq-card__body .cq-card__meta {
	flex: 0 0 auto; font-size: .85rem; font-weight: 600; color: var(--gold-deep);
}


/* Package combinations, as a short programme of framed rows. */
.cq-combos .cq-why__head p { margin: .4rem 0 0; }
.cq-combos .cq-combos__list {
	list-style: none; margin: 0 auto; padding: 0;
	display: grid; gap: .6rem;
}
.cq-combos__list li {
	position: relative; margin: 0;
	padding: .85rem 1.25rem .85rem 3rem;
	background: #fff; border: 1px solid var(--line-gold); border-radius: var(--radius);
	box-shadow: var(--shadow-sm);
	font-family: var(--serif); font-size: 1.12rem; line-height: 1.4; color: var(--ink);
}
.cq-combos__list li::before {
	content: "\2766"; position: absolute; left: 1.15rem; top: .95rem;
	color: var(--gold); font-size: .85rem; line-height: 1.4;
}

/* Photo in the gold double frame used on Home. */
:is(.cq-main, .editor-styles-wrapper) figure.cq-frame { margin: 0; }
.cq-frame img { display: block; width: 100%; height: auto; border-radius: 2px; }
.cq-frame::after { pointer-events: none; }


/* One-line italic caption under a grid (e.g. "Choosing your music?…", "…and any other type of
   corporate event."). .cq-main prefix to outrank the base ".cq-main p" margin. */
:is(.cq-main, .editor-styles-wrapper) .cq-caption {
	margin: clamp(2rem, 4vw, 2.75rem) auto 0;
	font-family: var(--serif); font-style: italic; font-size: 1.2rem; line-height: 1.5; color: var(--ink-soft);
}

/* Corporate occasions: a 2 × 2 set of framed rows (grid layout set in the editor). */
.cq-occasion {
	padding: 1rem 1.25rem; background: #fff;
	border: 1px solid var(--line-gold); border-radius: var(--radius); box-shadow: var(--shadow-sm);
}
:is(.cq-main, .editor-styles-wrapper) .cq-occasion__title { margin: 0; font-family: var(--serif); font-size: 1.2rem; font-weight: 500; line-height: 1.3; }

/* Inner pages: one content column. Astra gives each top-level section a 1200px box with 3rem
   side padding, so content is 1200px − 6rem wide; nested wrappers must not add their own gutter,
   and full-width cream bands keep their content in that same column. */
:is(.entry-content, :where(html:not(.cq-front-page)) .is-root-container) .cq-about__inner { padding-inline: 0; }
:is(.entry-content, :where(html:not(.cq-front-page)) .is-root-container) .cq-why.alignfull { max-width: none; }
:is(.entry-content, :where(html:not(.cq-front-page)) .is-root-container) :where(.cq-why.alignfull > *) {
	max-width: calc(var(--wp--style--global--content-size, 1200px) - 6rem);
	margin-inline: auto;
}


@media (max-width: 860px) {
	.cq-services__grid--3 { grid-template-columns: 1fr; }
	.cq-services__grid--3 .cq-card__media { aspect-ratio: 5 / 2; }
}
@media (max-width: 520px) {
	.cq-combos__list li { font-size: 1.05rem; }
}
