/* Encore additions on top of the ported GeneratePress theme: the "Check availability" form,
   the phone action bar, mobile/tablet fixes, and the service pages (src/components/Service*.astro).
   Colors are the theme's own globals (--jacarta, --dark-lavender, --little-boy-blue). */
:root {
	--enc-ink: #241433;
	--enc-ink-2: #4a3d57;
	--enc-plum: var(--jacarta, #462667);
	--enc-plum-deep: #2f1847;
	--enc-lav: var(--dark-lavender, #75549c);
	--enc-sky: var(--little-boy-blue, #64a7dc);
	--enc-cream: #faf7f2;
	--enc-line: #e4dcea;
	--enc-display: "DM Serif Display", "Playfair Display", Georgia, serif;
	--enc-body: Lato, "Helvetica Neue", Arial, sans-serif;
	--enc-radius: 14px;
	--enc-ease: cubic-bezier(0.16, 1, 0.3, 1);
}
::selection { background: #d9c8ee; color: var(--enc-ink); }
.enc-sr { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* ---------- buttons ---------- */
.enc-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 0.5em;
	min-height: 48px; padding: 0.7em 1.4em; border-radius: 999px; border: 2px solid transparent;
	font: 700 1.0625rem/1.2 var(--enc-body); letter-spacing: 0.01em; text-decoration: none; cursor: pointer;
	transition: background-color 0.2s var(--enc-ease), color 0.2s var(--enc-ease), transform 0.2s var(--enc-ease), box-shadow 0.2s var(--enc-ease);
}
.enc-btn:focus-visible, .enc-quote a:focus-visible, .enc-actionbar a:focus-visible, .enc-svc a:focus-visible { outline: 3px solid var(--enc-sky); outline-offset: 3px; }
.enc-btn--go { background: var(--enc-sky); color: var(--enc-ink); box-shadow: 0 6px 18px -8px rgba(20, 8, 40, 0.55); }
.enc-btn--go:hover { background: #8cc0e8; transform: translateY(-1px); color: var(--enc-ink); }
.enc-btn--go:disabled { opacity: 0.7; cursor: progress; transform: none; }
.enc-btn--plum { background: var(--enc-plum); color: #fff; }
.enc-btn--plum:hover { background: var(--enc-plum-deep); color: #fff; }
.enc-btn--line { background: transparent; color: var(--enc-plum); border-color: currentColor; }
.enc-btn--line:hover { background: var(--enc-plum); color: #fff; border-color: var(--enc-plum); }
.enc-calendly { text-align: center; margin: 1.5rem 0 0; }

/* ---------- Check availability form ----------
   A proscenium: the panel's top edge arches like a stage opening, in the header's purple. */
.enc-quote {
	--pad: clamp(1.25rem, 4vw, 3rem);
	position: relative; display: grid; gap: clamp(1.5rem, 4vw, 3.5rem);
	grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
	margin: clamp(2rem, 6vw, 4rem) 0; padding: calc(var(--pad) + 2.25rem) var(--pad) var(--pad);
	background: radial-gradient(120% 70% at 50% 0%, #5a3584 0%, var(--enc-plum) 55%, var(--enc-plum-deep) 100%);
	color: #fff; border-radius: 50% 50% var(--enc-radius) var(--enc-radius) / 3.25rem 3.25rem var(--enc-radius) var(--enc-radius);
	box-shadow: 0 30px 60px -36px rgba(36, 12, 64, 0.65);
	font-family: var(--enc-body); text-align: left; scroll-margin-top: 1rem;
}
.enc-quote::before { /* stage-light wash along the arch */
	content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none;
	background: radial-gradient(60% 40% at 50% -5%, rgba(100, 167, 220, 0.28), transparent 70%);
}
.enc-quote > * { position: relative; }
.enc-quote__title { font: 400 clamp(2rem, 4.2vw, 3rem)/1.05 var(--enc-display); color: #fff; margin: 0 0 0.75rem; text-wrap: balance; letter-spacing: -0.01em; }
.enc-quote__intro { font-size: 1.125rem; line-height: 1.55; color: #ece4f5; margin: 0 0 1.75rem; max-width: 34ch; }
.enc-quote__or { font-weight: 700; color: #fff; margin: 0 0 0.6rem; }
.enc-quote__other { border-top: 1px solid rgba(255, 255, 255, 0.18); padding-top: 1.25rem; display: grid; gap: 0.35rem; justify-items: start; }
.enc-quote__alt { display: inline-flex; align-items: center; gap: 0.6rem; min-height: 44px; color: #fff; font-weight: 700; text-decoration: underline; text-decoration-color: rgba(100, 167, 220, 0.8); text-underline-offset: 0.25em; text-decoration-thickness: 2px; }
.enc-quote__alt:hover { color: #cfe5f7; }
.enc-quote__alt svg { flex: none; color: var(--enc-sky); }

.enc-quote__form { display: grid; gap: 1.1rem; margin: 0; }
.enc-quote fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
.enc-quote legend, .enc-quote label:not(.enc-chip) { display: block; font: 700 1rem/1.3 var(--enc-body); color: #fff; margin: 0 0 0.45rem; padding: 0; }
.enc-req { color: var(--enc-sky); }
.enc-opt { font-weight: 400; color: #d6cbe4; font-size: 0.9em; }
.enc-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.enc-field { min-width: 0; }
.enc-quote input:not([type=radio]):not([type=checkbox]), .enc-quote select, .enc-quote textarea {
	width: 100%; min-height: 48px; padding: 0.65rem 0.85rem; border-radius: 10px;
	border: 2px solid transparent; background: #fff; color: var(--enc-ink);
	font: 400 1rem/1.4 var(--enc-body); /* 16px: phones don't zoom into the field */
	box-shadow: inset 0 1px 2px rgba(36, 20, 51, 0.12); transition: border-color 0.15s, box-shadow 0.15s;
}
.enc-quote textarea { min-height: 96px; resize: vertical; }
.enc-quote input:focus, .enc-quote select:focus, .enc-quote textarea:focus { outline: none; border-color: var(--enc-sky); box-shadow: 0 0 0 4px rgba(100, 167, 220, 0.35); }
.enc-quote .is-invalid input, .enc-quote input[aria-invalid=true] { border-color: #ffb4a8; }
.enc-error { margin: 0.4rem 0 0; color: #ffd2ca; font-weight: 700; font-size: 0.95rem; }
.enc-error::before { content: ""; display: inline-block; width: 0.55em; height: 0.55em; margin-right: 0.45em; border-radius: 50%; background: #ff8a78; vertical-align: 0.05em; }

.enc-chips { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.enc-chip { position: relative; display: inline-flex; cursor: pointer; margin: 0; }
.enc-chip input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.enc-chip span {
	display: inline-flex; align-items: center; min-height: 44px; padding: 0.5rem 1rem; border-radius: 999px;
	border: 1.5px solid rgba(255, 255, 255, 0.45); color: #fff; font: 400 0.98rem/1.25 var(--enc-body);
	transition: background-color 0.15s, border-color 0.15s, color 0.15s;
}
.enc-chip:hover span { border-color: #fff; background: rgba(255, 255, 255, 0.08); }
.enc-chip input:checked + span { background: #fff; color: var(--enc-plum); border-color: #fff; font-weight: 700; }
.enc-chip input:checked + span::before { content: ""; width: 0.5em; height: 0.85em; margin: -0.15em 0.55em 0 0.05em; border: solid var(--enc-plum); border-width: 0 2.5px 2.5px 0; transform: rotate(45deg); }
.enc-chip input:focus-visible + span { outline: 3px solid var(--enc-sky); outline-offset: 2px; }
.is-invalid .enc-chip span { border-color: #ffb4a8; }

.enc-more { border-top: 1px solid rgba(255, 255, 255, 0.18); padding-top: 0.9rem; }
.enc-more summary { cursor: pointer; font-weight: 700; color: #fff; min-height: 44px; display: block; position: relative; padding: 0.55rem 0 0.55rem 2.1rem; list-style: none; }
.enc-more summary::-webkit-details-marker { display: none; }
.enc-more summary::before { content: ""; position: absolute; left: 0; top: 0.6rem; width: 1.4rem; height: 1.4rem; border-radius: 50%; background: rgba(255, 255, 255, 0.14) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 6v12M6 12h12' stroke='%23fff' stroke-width='2.4' stroke-linecap='round'/%3E%3C/svg%3E") center/0.9rem no-repeat; transition: transform 0.25s var(--enc-ease); }
.enc-more[open] summary::before { transform: rotate(45deg); }
.enc-more summary:focus-visible { outline: 3px solid var(--enc-sky); outline-offset: 3px; border-radius: 6px; }
.enc-more__body { display: grid; gap: 1.1rem; padding-top: 0.9rem; }
.enc-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.enc-submit { display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem 1.25rem; margin-top: 0.25rem; }
.enc-status { margin: 0; color: #ffd2ca; font-weight: 700; }
.enc-status:empty { display: none; }

/* Inside old page layouts the form sat in narrow GenerateBlocks containers; let it use the width */
.gb-container:has(> .gb-inside-container > .enc-quote), .gb-container:has(> .enc-quote) { max-width: none; }

@media (max-width: 900px) {
	.enc-quote { grid-template-columns: 1fr; border-radius: 50% 50% var(--enc-radius) var(--enc-radius) / 2.25rem 2.25rem var(--enc-radius) var(--enc-radius); padding-top: calc(var(--pad) + 1.5rem); }
	.enc-quote__intro { max-width: none; }
	.enc-quote__other { grid-template-columns: 1fr 1fr; align-items: start; }
	.enc-quote__or { grid-column: 1 / -1; }
}
@media (max-width: 560px) {
	.enc-row, .enc-quote__other { grid-template-columns: 1fr; }
	.enc-quote { margin-inline: -8px; }
	.enc-btn--go { width: 100%; }
}

/* ---------- phone action bar ---------- */
.enc-actionbar { display: none; }
@media (max-width: 767px) {
	.enc-actionbar {
		position: fixed; inset: auto 0 0 0; z-index: 900; display: grid; grid-template-columns: 1fr 1.35fr; gap: 0.5rem;
		padding: 0.6rem 0.75rem calc(0.6rem + env(safe-area-inset-bottom));
		background: rgba(47, 24, 71, 0.96); backdrop-filter: saturate(1.4) blur(10px); -webkit-backdrop-filter: saturate(1.4) blur(10px);
		box-shadow: 0 -10px 30px -12px rgba(20, 8, 40, 0.5); font-family: var(--enc-body);
		transition: transform 0.3s var(--enc-ease);
	}
	.enc-actionbar a { min-height: 48px; display: flex; align-items: center; justify-content: center; gap: 0.5rem; border-radius: 999px; font-weight: 700; font-size: 1rem; text-decoration: none; }
	.enc-actionbar .enc-bar-call { color: #fff; border: 1.5px solid rgba(255, 255, 255, 0.5); }
	.enc-actionbar .enc-bar-quote { background: var(--enc-sky); color: var(--enc-ink); }
	.enc-form-in-view .enc-actionbar { grid-template-columns: 1fr; }
	.enc-form-in-view .enc-actionbar .enc-bar-quote { display: none; }
	body { padding-bottom: calc(72px + env(safe-area-inset-bottom)); }

	/* GP's floating "Back to Top" button and the dark-mode switch covered content and form fields;
	   on phones they sit above the action bar, small. */
	a.scroll-to-top { bottom: calc(84px + env(safe-area-inset-bottom)) !important; right: 12px !important; width: 44px; height: 44px; padding: 0 !important; justify-content: center; border-radius: 50% !important; }
	a.scroll-to-top .gb-button-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
	.wp-dark-mode-floating-switch { display: none !important; }

	/* Page titles were up to 64px on a 390px phone, pushing everything below the first screen */
	.entry-title, .page .entry-content > h1:first-child, h1.gb-headline { font-size: clamp(2rem, 9vw, 2.6rem) !important; line-height: 1.12 !important; }
	.rank-math-breadcrumb p { font-size: 0.95rem; }

	/* iPhones zoom into any form field under 16px */
	.gform_wrapper input:not([type=radio]):not([type=checkbox]):not([type=submit]), .gform_wrapper select, .gform_wrapper textarea { font-size: 16px !important; }
}

/* The holiday page's light-string decoration was 1365px wide and made phones and tablets scroll sideways */
.entry-content:has(ul.strand), ul.strand { overflow: hidden; max-width: 100%; }

/* ---------- service pages ---------- */
.enc-svc { font-family: var(--enc-body); color: var(--enc-ink); }
.enc-svc .inside-article { padding-top: 0; }
.enc-draft { margin: 0 0 1.5rem; padding: 0.75rem 1rem; border-radius: 10px; background: #fff6d6; color: #5a4300; font-size: 0.95rem; border: 1px solid #f0d98a; }
.enc-hero { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr); gap: clamp(1.5rem, 4vw, 4rem); align-items: center; padding: clamp(0.5rem, 2vw, 1.5rem) 0 clamp(2rem, 5vw, 3.5rem); }
.enc-hero h1 { font: 400 clamp(2.4rem, 5.4vw, 4.4rem)/1.02 var(--enc-display); letter-spacing: -0.02em; margin: 0 0 1rem; color: var(--enc-ink); text-wrap: balance; }
.enc-hero h1 em { font-style: italic; color: var(--enc-plum); }
.enc-lede { font-size: clamp(1.125rem, 1.6vw, 1.3rem); line-height: 1.55; color: var(--enc-ink-2); max-width: 38ch; margin: 0 0 1.5rem; }
.enc-cta { display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: center; margin: 0 0 1.75rem; }
.enc-facts { display: flex; flex-wrap: wrap; gap: 0.25rem 1.5rem; margin: 0; padding: 1rem 0 0; border-top: 1px solid var(--enc-line); }
.enc-facts div { display: flex; flex-direction: column-reverse; }
.enc-facts dt { font-size: 0.9rem; color: var(--enc-ink-2); }
.enc-facts dd { margin: 0; font: 400 1.6rem/1.15 var(--enc-display); color: var(--enc-plum); }
.enc-hero__media { position: relative; margin: 0; }
.enc-hero__media img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 50% 50% var(--enc-radius) var(--enc-radius) / 3rem 3rem var(--enc-radius) var(--enc-radius); box-shadow: 0 30px 50px -30px rgba(36, 12, 64, 0.55); }
.enc-hero__media figcaption { font-size: 0.9rem; color: var(--enc-ink-2); margin-top: 0.6rem; }

.enc-sec { padding: clamp(2rem, 5vw, 3.5rem) 0; border-top: 1px solid var(--enc-line); }
.enc-sec h2 { font: 400 clamp(1.8rem, 3.4vw, 2.6rem)/1.1 var(--enc-display); color: var(--enc-ink); margin: 0 0 1rem; letter-spacing: -0.01em; text-wrap: balance; }
.enc-sec h3 { font: 700 1.2rem/1.3 var(--enc-body); color: var(--enc-ink); margin: 1.5rem 0 0.4rem; }
.enc-sec p, .enc-sec li { font-size: 1.0625rem; line-height: 1.7; color: var(--enc-ink-2); }
.enc-prose { max-width: 68ch; }
.enc-prose a, .enc-sec p a, .enc-sec li a { color: var(--enc-plum); text-decoration: underline; text-decoration-color: var(--enc-sky); text-decoration-thickness: 2px; text-underline-offset: 0.2em; }
.enc-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(1.5rem, 4vw, 4rem); align-items: start; }
.enc-split img { width: 100%; height: auto; border-radius: var(--enc-radius); display: block; }
.enc-checks { list-style: none; padding: 0; margin: 1rem 0 0; display: grid; gap: 0.6rem; }
.enc-checks li { position: relative; padding-left: 2rem; margin: 0; }
.enc-checks li::before { content: ""; position: absolute; left: 0.2rem; top: 0.45em; width: 0.55rem; height: 1rem; border: solid var(--enc-lav); border-width: 0 3px 3px 0; transform: rotate(45deg); }

/* How booking works: the order matters, so the numbers stay */
.enc-steps { counter-reset: s; list-style: none; padding: 0; margin: 1.25rem 0 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); gap: 1.5rem 2rem; }
.enc-steps li { counter-increment: s; margin: 0; padding-top: 0.25rem; }
.enc-steps li::before { content: counter(s); display: block; font: 400 2.4rem/1 var(--enc-display); color: var(--enc-lav); margin-bottom: 0.4rem; }
.enc-steps strong { display: block; color: var(--enc-ink); font-size: 1.1rem; margin-bottom: 0.2rem; }

/* Price table */
.enc-prices { width: 100%; border-collapse: collapse; margin: 1.25rem 0 0.75rem; font-variant-numeric: tabular-nums; }
.enc-prices caption { text-align: left; font-weight: 700; color: var(--enc-ink); padding-bottom: 0.5rem; }
.enc-prices th, .enc-prices td { text-align: left; padding: 0.85rem 0.75rem 0.85rem 0; border-bottom: 1px solid var(--enc-line); font-size: 1.0625rem; vertical-align: top; }
.enc-prices thead th { font-size: 0.95rem; color: var(--enc-ink-2); font-weight: 700; }
.enc-prices td.num { font: 400 1.35rem/1.2 var(--enc-display); color: var(--enc-plum); white-space: nowrap; }
.enc-note { font-size: 0.95rem !important; color: var(--enc-ink-2); }

/* Acts that fit: photo rows, not a card grid */
.enc-acts { list-style: none; padding: 0; margin: 1.25rem 0 0; display: grid; gap: 1rem; }
.enc-acts li { margin: 0; }
.enc-acts a { display: grid; grid-template-columns: 7.5rem 1fr auto; gap: 1.25rem; align-items: center; padding: 0.75rem; border-radius: var(--enc-radius); text-decoration: none; color: inherit; transition: background-color 0.2s var(--enc-ease); }
.enc-acts a:hover { background: #f4eff9; }
.enc-acts img { width: 7.5rem; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 10px; display: block; }
.enc-acts strong { display: block; font: 400 1.45rem/1.15 var(--enc-display); color: var(--enc-ink); }
.enc-acts span { color: var(--enc-ink-2); font-size: 1rem; line-height: 1.5; }
.enc-acts svg { color: var(--enc-lav); transition: transform 0.2s var(--enc-ease); }
.enc-acts a:hover svg { transform: translateX(4px); }

/* Pull quotes from reviews */
.enc-voices { display: flex; flex-wrap: wrap; gap: 0.75rem 1rem; margin: 1rem 0 0; padding: 0; list-style: none; }
.enc-voices li { font: italic 400 1.35rem/1.3 var(--enc-display); color: var(--enc-plum); margin: 0; }
.enc-voices li:not(:last-child)::after { content: "·"; margin-left: 1rem; color: var(--enc-sky); font-style: normal; }

/* FAQ */
.enc-faq { margin: 1rem 0 0; max-width: 72ch; }
.enc-faq details { border-bottom: 1px solid var(--enc-line); }
.enc-faq summary { cursor: pointer; list-style: none; display: flex; justify-content: space-between; gap: 1rem; align-items: center; padding: 1.1rem 0; font: 700 1.15rem/1.35 var(--enc-body); color: var(--enc-ink); min-height: 44px; }
.enc-faq summary::-webkit-details-marker { display: none; }
.enc-faq summary::after { content: ""; flex: none; width: 0.65rem; height: 0.65rem; border: solid var(--enc-lav); border-width: 0 2.5px 2.5px 0; transform: rotate(45deg) translateY(-3px); transition: transform 0.25s var(--enc-ease); }
.enc-faq details[open] summary::after { transform: rotate(-135deg) translateY(-2px); }
.enc-faq summary:focus-visible { outline: 3px solid var(--enc-sky); outline-offset: 4px; border-radius: 6px; }
.enc-faq details > div { padding: 0 0 1.2rem; }
.enc-faq details > div p { margin: 0 0 0.75rem; }

.enc-related { display: flex; flex-wrap: wrap; gap: 0.75rem; margin: 1rem 0 0; padding: 0; list-style: none; }
.enc-related a { display: inline-flex; min-height: 44px; align-items: center; padding: 0.5rem 1.1rem; border-radius: 999px; border: 1.5px solid var(--enc-line); color: var(--enc-plum); font-weight: 700; text-decoration: none; }
.enc-related a:hover { border-color: var(--enc-plum); background: #f4eff9; }

@media (max-width: 900px) {
	.enc-hero, .enc-split { grid-template-columns: 1fr; }
	.enc-hero__media img { aspect-ratio: 16 / 10; border-radius: 50% 50% var(--enc-radius) var(--enc-radius) / 2rem 2rem var(--enc-radius) var(--enc-radius); }
}
@media (max-width: 560px) {
	.enc-hero h1 { font-size: clamp(2.1rem, 10vw, 2.6rem); }
	.enc-cta .enc-btn { flex: 1 1 100%; }
	.enc-acts a { grid-template-columns: 5.5rem 1fr; }
	.enc-acts img { width: 5.5rem; }
	.enc-acts svg { display: none; }
	.enc-prices th, .enc-prices td { font-size: 1rem; }
	.enc-facts dd { font-size: 1.35rem; }
}
@media (prefers-reduced-motion: reduce) {
	.enc-btn, .enc-actionbar, .enc-acts a, .enc-acts svg, .enc-more summary::before, .enc-faq summary::after { transition: none; }
}
.enc-fresh .wp-dark-mode-floating-switch { display: none !important; }
.enc-video { position: relative; aspect-ratio: 16 / 9; border-radius: var(--enc-radius); overflow: hidden; background: var(--enc-plum-deep); box-shadow: 0 30px 50px -30px rgba(36, 12, 64, 0.55); }
.enc-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.enc-darren { display: grid; grid-template-columns: 7rem 1fr; gap: 1.25rem; align-items: center; margin: 1.5rem 0 0; max-width: 60ch; }
.enc-darren img { width: 7rem; height: 7rem; border-radius: 50%; object-fit: cover; background: #efe8f6; }
.enc-darren blockquote { margin: 0; padding: 0; border: 0; font: italic 400 1.35rem/1.35 var(--enc-display); color: var(--enc-ink); }
.enc-darren figcaption { margin-top: 0.4rem; font-size: 0.95rem; color: var(--enc-ink-2); }
.enc-thanks { max-width: 44rem; margin: 0 auto; padding: clamp(1.5rem, 5vw, 4rem) 0; text-align: left; }
.enc-thanks h1 { font: 400 clamp(2.2rem, 5vw, 3.6rem)/1.05 var(--enc-display); color: var(--enc-ink); margin: 0 0 1rem; text-wrap: balance; }
.enc-thanks h2 { font: 400 1.7rem/1.2 var(--enc-display); color: var(--enc-ink); margin: 0 0 0.9rem; }
.enc-thanks__next { margin: 2rem 0; padding: clamp(1.25rem, 4vw, 2rem); border-radius: 50% 50% var(--enc-radius) var(--enc-radius) / 1.75rem 1.75rem var(--enc-radius) var(--enc-radius); background: #f4eff9; padding-top: 2.5rem; }
.enc-thanks__next .enc-cta { margin: 0; }
.enc-thanks__more { margin-top: 2.5rem !important; }
/* The header's curved edge (a GP Element whose CSS WordPress printed into each page's own styles);
   pages built here need it too. */
.enc-fresh .gb-container-865f651d{min-height:40px;display:block;position:relative;transform:rotate(180deg);}
.enc-fresh .gb-container-865f651d > .gb-shapes .gb-shape-1{color:var(--jacarta);position:absolute;overflow:hidden;pointer-events:none;line-height:0;left:0;right:0;bottom:-1px;}
.enc-fresh .gb-container-865f651d > .gb-shapes .gb-shape-1 svg{height:20px;width:calc(100% + 1.3px);fill:currentColor;position:relative;left:50%;transform:translateX(-50%);min-width:100%;}
/* Theme link underlines don't belong on buttons or act rows */
a.enc-btn, .enc-actionbar a, .enc-acts a, .enc-related a { text-decoration: none !important; }
.enc-acts a:hover strong { text-decoration: underline; text-decoration-color: var(--enc-sky); text-underline-offset: 0.18em; }
/* Breadcrumb current page: the theme's #ccc fails contrast on white */
.enc-svc .rank-math-breadcrumb .last { color: #6b5f78; }

.enc-prices, .enc-prices th, .enc-prices td { border-left: 0; border-right: 0; border-top: 0; }
.enc-prices { border: 0; }
.enc-prices thead th { border-bottom: 2px solid var(--enc-plum); }
.enc-prices th[scope=row] a { font-weight: 700; }
/* Keep keyboard focus clear of the phone action bar (WCAG 2.4.11) */
@media (max-width: 767px) { html { scroll-padding-bottom: calc(96px + env(safe-area-inset-bottom)); } }
@media (max-width: 767px) { html { scroll-padding-top: 80px; } }

/* ---------- 2026-11-10: the quote form as a "booking sheet" (replaces the purple arch) ---------- */
.enc-quote { background: none; color: var(--enc-ink); border-radius: 0; box-shadow: none; border-top: 3px solid var(--enc-ink); padding: 28px 0 0; margin: clamp(2.5rem, 6vw, 4.5rem) 0; gap: clamp(1.5rem, 4vw, 3.5rem); }
.enc-quote::before { display: none; }
.enc-quote__title { color: var(--enc-ink); font-size: clamp(1.9rem, 3.4vw, 2.6rem); }
.enc-quote__intro { color: var(--enc-ink-2); font-size: 1.0625rem; }
.enc-quote__other { border-top: 1px solid var(--enc-line); }
.enc-quote__or { color: var(--enc-ink); }
.enc-quote__alt { color: var(--enc-ink); text-decoration-color: var(--enc-sky); }
.enc-quote__alt:hover { color: var(--enc-plum); }
.enc-quote__alt svg { color: var(--enc-lav); }
.enc-quote legend, .enc-quote label:not(.enc-chip) { color: var(--enc-ink); }
.enc-req { color: var(--enc-lav); }
.enc-opt { color: var(--enc-ink-2); }
.enc-quote input:not([type=radio]):not([type=checkbox]), .enc-quote select, .enc-quote textarea { background: transparent; color: var(--enc-ink); border: 0; border-bottom: 2px solid var(--enc-ink-2); border-radius: 0; box-shadow: none; padding-inline: 2px; }
.enc-quote textarea { border: 2px solid var(--enc-ink-2); border-radius: 4px; padding: .6rem .7rem; }
.enc-quote input:focus, .enc-quote select:focus, .enc-quote textarea:focus { border-color: #2f7fc1; box-shadow: 0 2px 0 0 #2f7fc1; }
.enc-quote .is-invalid input, .enc-quote input[aria-invalid=true] { border-color: #b3261e; }
.enc-error { color: #b3261e; }
.enc-error::before { background: #b3261e; }
.enc-status { color: #b3261e; }
/* occasion choices as a ruled grid of cells */
.enc-field--chips .enc-chips { display: grid; grid-template-columns: repeat(auto-fill, minmax(10.5rem, 1fr)); gap: 0; border: 1px solid var(--enc-line); border-radius: 4px; overflow: hidden; }
.enc-chip { display: flex; }
.enc-chip span { flex: 1; border: 0; border-radius: 0; box-shadow: inset -1px -1px 0 var(--enc-line); color: var(--enc-ink); min-height: 52px; padding: .6rem .8rem; font-size: .95rem; }
.enc-chip:hover span { background: #f4eff9; border: 0; }
.enc-chip input:checked + span { background: var(--enc-plum); color: #fff; }
.enc-chip input:checked + span::before { border-color: #fff; }
.enc-chip input:focus-visible + span { outline: 3px solid #2f7fc1; outline-offset: -3px; }
.is-invalid .enc-chip span { box-shadow: inset -1px -1px 0 #b3261e; }
.enc-more { border-top: 1px solid var(--enc-line); }
.enc-more summary { color: var(--enc-ink); }
.enc-more summary::before { background-color: var(--enc-plum); }
.enc-btn--go { background: var(--enc-plum); color: #fff; box-shadow: none; border-radius: 6px; }
.enc-btn--go:hover { background: var(--enc-plum-deep); color: #fff; }
@media (max-width: 900px) { .enc-quote { border-radius: 0; padding-top: 24px; } }
@media (max-width: 560px) { .enc-quote { margin-inline: 0; } .enc-field--chips .enc-chips { grid-template-columns: 1fr 1fr; } }
/* service-page hero now holds just the photo and actions (title lives in the header band) */
.enc-svc .enc-hero { grid-template-columns: 1fr; padding-top: 0; }
.enc-svc .enc-hero > div { order: 2; }
.enc-svc .enc-hero__media img { aspect-ratio: 21 / 8; border-radius: 4px; }
.enc-svc .enc-hero .enc-cta { margin: 0; }
@media (max-width: 900px) { .enc-svc .enc-hero__media img { aspect-ratio: 16 / 9; } }
/* The form sits in containers of every width (full pages, narrow GenerateBlocks columns like /services/):
   lay it out by the space it actually has */
.enc-quote { display: block; container-type: inline-size; }
.enc-quote__in { display: grid; grid-template-columns: 1fr; gap: clamp(1.25rem, 4vw, 3rem); }
@container (min-width: 760px) { .enc-quote__in { grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); } }
@container (max-width: 520px) { .enc-quote .enc-row { grid-template-columns: 1fr; } .enc-quote__other { grid-template-columns: 1fr !important; } }
.enc-quote input:not([type=radio]):not([type=checkbox]):focus, .enc-quote select:focus, .enc-quote textarea:focus { outline: none; border-color: #2f7fc1; box-shadow: 0 3px 0 0 #2f7fc1; background: rgba(47, 127, 193, .06); }

/* ---------- Act Finder (src/components/ActFinder.astro) ---------- */
.af { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(1.5rem, 4vw, 3rem); margin: 1.5rem 0 2.5rem; text-align: left; font-family: var(--enc-body); color: var(--enc-ink); container-type: inline-size; }
.af-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.af-qs { display: grid; gap: 1.4rem; align-content: start; }
.af-q { border: 0; margin: 0; padding: 0; min-width: 0; }
.af-q legend { display: flex; align-items: baseline; gap: .6rem; font: 700 1.05rem/1.3 var(--enc-body); color: var(--enc-ink); margin: 0 0 .6rem; padding: 0; }
.af-n { font: 400 1.5rem/1 var(--enc-display); color: var(--enc-lav); }
.af-opt { font-weight: 400; color: var(--enc-ink-2); font-size: .9rem; }
.af-opts { display: flex; flex-wrap: wrap; gap: .45rem; }
.af-opt-l { position: relative; display: inline-flex; margin: 0; cursor: pointer; }
.af-opt-l input { position: absolute; inset: 0; opacity: 0; margin: 0; cursor: pointer; }
.af-opt-l span { display: inline-flex; align-items: center; min-height: 44px; padding: .5rem .9rem; border: 1px solid var(--enc-line); border-radius: 4px; font-size: .97rem; color: var(--enc-ink); background: #fff; transition: background-color .15s, color .15s, border-color .15s; }
.af-opt-l:hover span { border-color: var(--enc-lav); background: #f4eff9; }
.af-opt-l input:checked + span { background: var(--enc-plum); border-color: var(--enc-plum); color: #fff; font-weight: 700; }
.af-opt-l input:focus-visible + span { outline: 3px solid #2f7fc1; outline-offset: 2px; }
.af-reset { justify-self: start; background: none !important; border: 0; padding: .4rem 0; color: var(--enc-plum) !important; font: 700 .95rem var(--enc-body); text-decoration: underline; text-decoration-color: var(--enc-sky); text-underline-offset: 4px; cursor: pointer; }
.af-sticky { position: sticky; top: 76px; border-top: 3px solid var(--enc-ink); padding-top: 1rem; }
.af-status { margin: 0 0 .9rem; font: 400 1.3rem/1.3 var(--enc-display); color: var(--enc-ink); }
.af-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .25rem; }
.af-r { display: grid; grid-template-columns: 96px 1fr; gap: 1rem; align-items: center; padding: .6rem; margin: 0; border-radius: 6px; transition: opacity .25s, background-color .25s; }
.af-r img { width: 96px; height: 72px; object-fit: cover; border-radius: 4px; display: block; }
.af-r.is-top { background: #f4eff9; }
.af-r.is-top:first-child { box-shadow: inset 0 0 0 2px var(--enc-plum); }
.af-r.is-weak { opacity: .55; }
.af-rname { font: 400 1.25rem/1.2 var(--enc-display); color: var(--enc-ink) !important; text-decoration: none !important; }
.af-rname:hover { text-decoration: underline !important; text-decoration-color: var(--enc-sky) !important; }
.af-why { margin: .2rem 0 0 !important; font-size: .95rem !important; line-height: 1.45; color: var(--enc-ink-2); }
.af-miss { color: #8a3b2f; }
.af-go { display: inline-flex; align-items: center; min-height: 40px; margin-top: .5rem; padding: 0 1rem; border-radius: 6px; background: var(--enc-plum); color: #fff !important; font-weight: 700; font-size: .95rem; text-decoration: none !important; }
.af-go:hover { background: var(--enc-plum-deep); }
@container (max-width: 760px) { .af-sticky { position: static; } }
@media (max-width: 900px) { .af { grid-template-columns: 1fr; } .af-sticky { position: static; } }
@media (prefers-reduced-motion: reduce) { .af-r, .af-opt-l span { transition: none; } }
/* /our-acts/: the finder leads, full width */
.enc-svc .af { margin-top: 0; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(2rem, 5vw, 4rem); }
.enc-svc .af-q legend { font-size: 1.15rem; }
@media (max-width: 900px) { .enc-svc .af { grid-template-columns: 1fr; } }
/* ---------- form fit fixes (2026-11-10): nothing wider than its column, choices wrap cleanly ---------- */
.enc-quote, .enc-quote *, .enc-quote *::before, .enc-quote *::after { box-sizing: border-box; }
.enc-quote input:not([type=radio]):not([type=checkbox]), .enc-quote select, .enc-quote textarea { max-width: 100%; min-width: 0; }
.enc-quote__in > *, .enc-row > *, .enc-field { min-width: 0; }
.enc-quote .enc-field--chips .enc-chips { display: flex; flex-wrap: wrap; gap: .4rem; border: 0; border-radius: 0; overflow: visible; }
.enc-quote .enc-chip span { flex: none; min-height: 44px; padding: .5rem .85rem; border: 1px solid var(--enc-line); border-radius: 4px; box-shadow: none; background: #fff; }
.enc-quote .enc-chip:hover span { border-color: var(--enc-lav); background: #f4eff9; }
.enc-quote .enc-chip input:checked + span { border-color: var(--enc-plum); }
.enc-quote .enc-chip input:focus-visible + span { outline-offset: 2px; }
.enc-quote .is-invalid .enc-chip span { box-shadow: none; border-color: #b3261e; }
.enc-quote .enc-row { grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); }
.enc-quote__intro { max-width: 40ch; }
@container (max-width: 520px) { .enc-quote .enc-chip { flex: 1 1 calc(50% - .4rem); } .enc-quote .enc-chip span { width: 100%; } }
