/*
Theme Name: Maggie Core
Theme URI: https://cmo.so/themes/maggie-core
Author: CMO.so
Author URI: https://cmo.so
Description: The CMO.so block theme. Native Gutenberg: every design choice lives in theme.json, templates and patterns, so Maggie (the AI CMO) can change it through the WordPress REST API and preview each change before it goes live. v0 ships the "Olive Atelier" look: warm stone, olive accents and an editorial serif.
Requires at least: 6.6
Tested up to: 6.9
Requires PHP: 7.4
Version: 0.11.0
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: maggie-core
Tags: block-patterns, full-site-editing, one-column, wide-blocks, editor-style, custom-colors, custom-logo, style-variations
*/

/* Only what theme.json cannot express. Keep this file small. */

/* Accent words inside headings: <em> becomes the olive italic of the display face. */
:where(h1, h2, h3, .wp-block-site-title) em {
	font-style: italic;
	color: var(--wp--preset--color--olive);
}
:where(.is-style-section-dark, .is-style-section-olive) :where(h1, h2, h3) em {
	color: var(--wp--preset--color--panel);
}

/* Small tracked label above headings. */
.is-eyebrow {
	font-size: var(--wp--preset--font-size--small);
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
	margin-bottom: 0;
}
.is-style-section-dark .is-eyebrow,
.is-style-section-olive .is-eyebrow {
	color: color-mix(in srgb, var(--wp--preset--color--canvas) 75%, transparent);
}

/* Header: hairline under the bar; the bar stays on top while scrolling. */
.maggie-header {
	position: sticky;
	top: 0;
	z-index: 50;
	border-bottom: 1px solid var(--wp--preset--color--line);
	background: color-mix(in srgb, var(--wp--preset--color--canvas) 92%, transparent);
	backdrop-filter: blur(8px);
}
.admin-bar .maggie-header { top: var(--wp-admin--admin-bar--height, 32px); }

.maggie-header :where(.wp-block-button__link, .wp-block-site-title, .wp-block-navigation-item__label) { white-space: nowrap; }
.maggie-header .wp-block-site-logo img { width: auto; max-height: 48px; }

/* Dark header (chosen when the site's logo is light). */
.maggie-header.is-style-section-dark {
	background: var(--wp--preset--color--ink);
	border-bottom-color: color-mix(in srgb, var(--wp--preset--color--canvas) 15%, transparent);
}
.is-style-section-dark :where(.wp-block-navigation a, .wp-block-site-title a, .wp-block-navigation__responsive-container-open) {
	color: var(--wp--preset--color--canvas);
}
.is-style-section-dark .wp-block-navigation :where(.wp-block-navigation__submenu-container, .wp-block-navigation__responsive-container.is-menu-open) {
	background: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--canvas);
	border-color: color-mix(in srgb, var(--wp--preset--color--canvas) 15%, transparent);
}

/* Numbered treatment rows. */
.maggie-rows > .wp-block-group {
	border-top: 1px solid var(--wp--preset--color--line);
}
.maggie-rows > .wp-block-group {
	display: grid;
	grid-template-columns: 4rem minmax(0, 1fr) minmax(0, 26rem);
	align-items: baseline;
	column-gap: var(--wp--preset--spacing--40);
}
.maggie-rows > .wp-block-group > * { margin: 0; }
@media (max-width: 781px) {
	.maggie-rows > .wp-block-group { grid-template-columns: 3rem minmax(0, 1fr); }
	.maggie-rows > .wp-block-group > :last-child { grid-column: 2; }
}
.maggie-rows > .wp-block-group:last-child {
	border-bottom: 1px solid var(--wp--preset--color--line);
}

/* FAQ: hairline rows with a plus that turns when open. */
.wp-block-details {
	border-bottom: 1px solid var(--wp--preset--color--line);
	padding-block: var(--wp--preset--spacing--30);
}
.wp-block-details summary {
	list-style: none;
	cursor: pointer;
	display: flex;
	justify-content: space-between;
	gap: 1rem;
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--large);
	line-height: 1.25;
}
.wp-block-details summary::-webkit-details-marker { display: none; }
.wp-block-details summary::after {
	content: "+";
	font-family: var(--wp--preset--font-family--body);
	color: var(--wp--preset--color--olive);
	transition: transform 0.2s ease;
}
.wp-block-details[open] summary::after { transform: rotate(45deg); }

/* Images from migrated pages never overflow the column. */
.wp-block-image img { height: auto; max-width: 100%; }

/* Visible keyboard focus everywhere. */
:where(a, button, summary, input, select, textarea):focus-visible {
	outline: 2px solid var(--wp--preset--color--olive);
	outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
	* { transition: none !important; animation: none !important; }
}

/* ---- 0.5.0: homepage redesign pass ---- */

/* Embedded media never widen the page (a 600px map iframe made 390px phones scroll sideways). */
iframe,
video,
embed,
object { max-width: 100%; }

/* Headings: balanced lines; a linked heading is a title, not a body link. */
:where(h1, h2, h3, h4) { text-wrap: balance; }
:where(h1, h2, h3, h4) a {
	color: inherit;
	text-decoration: none;
	transition: color 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}
:where(h1, h2, h3, h4) a:hover,
:where(h1, h2, h3, h4) a:focus-visible {
	color: var(--wp--preset--color--olive);
	text-decoration: underline;
	text-underline-offset: 0.18em;
	text-decoration-thickness: 1px;
}
p { text-wrap: pretty; }

/* Buttons: colour eases, press gives feedback. */
.wp-element-button,
.wp-block-button__link {
	transition: background-color 0.3s cubic-bezier(0.22, 1, 0.36, 1), color 0.3s cubic-bezier(0.22, 1, 0.36, 1), transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}
.wp-element-button:active,
.wp-block-button__link:active { transform: translateY(1px); }

/* Outline button (core style variation) in the theme's deep olive: on light panels the
   lighter olive fell below AA for 15px text (4.14:1 on #EDE6DC). */
.wp-block-button.is-style-outline > .wp-block-button__link {
	background: transparent;
	color: var(--wp--preset--color--olive-deep);
	border: 1px solid currentColor;
}
.wp-block-button.is-style-outline > .wp-block-button__link:hover {
	background: var(--wp--preset--color--olive);
	color: var(--wp--preset--color--soft);
}
.is-style-section-dark .wp-block-button.is-style-outline > .wp-block-button__link,
.is-style-section-olive .wp-block-button.is-style-outline > .wp-block-button__link { color: var(--wp--preset--color--canvas); }

/* Cards lift a little on hover (no movement for reduced motion). */
.card { transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1), border-color 0.3s cubic-bezier(0.22, 1, 0.36, 1); }
@media (prefers-reduced-motion: no-preference) {
	.card:hover { transform: translateY(-2px); border-color: var(--wp--preset--color--olive); }
}

/* Header menu fits on one line at desktop widths. */
.maggie-header .wp-block-navigation { letter-spacing: 0.08em; }
.maggie-header .wp-block-navigation .wp-block-navigation__container { column-gap: 1.1rem; }

/* Images given an aspect ratio fill their column (cards, galleries). */
.wp-block-image img[style*="aspect-ratio"] { width: 100%; }

/* Top-level template parts and main touch: full-width bands meet without a stripe. */
.wp-site-blocks > * + * { margin-block-start: 0; }

/* ---- 0.6.0: overlay header, carousel, entrance ---- */

/* Overlay header: on the front page it is transparent over the first band (hero)
 * and turns solid (accent) once the page scrolls; on every other page it is a
 * solid sticky bar. Use: className "maggie-header is-style-header-overlay". */
.maggie-header.is-style-header-overlay {
	background: var(--wp--preset--color--accent);
	border-bottom-color: transparent;
	backdrop-filter: none;
	transition: background-color 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}
.home .maggie-header.is-style-header-overlay {
	position: fixed;
	inset: 0 0 auto 0;
	background: transparent;
}
.home.admin-bar .maggie-header.is-style-header-overlay { top: var(--wp-admin--admin-bar--height, 32px); }
.home.maggie-scrolled .maggie-header.is-style-header-overlay { background: var(--wp--preset--color--accent); }
.maggie-header.is-style-header-overlay .wp-block-navigation .wp-block-navigation-item__content,
.maggie-header.is-style-header-overlay .wp-block-navigation .wp-block-navigation__submenu-icon,
.maggie-header.is-style-header-overlay .wp-block-navigation__responsive-container-open,
.maggie-header.is-style-header-overlay .wp-block-site-title a { color: #fff; }

/* Legibility over moving video: while transparent, a dark scrim fades down from
 * the top edge and the menu gets a soft shadow, so light or dark frames never
 * swallow the text. The solid (scrolled) state needs neither. */
.home .maggie-header.is-style-header-overlay::before {
	content: "";
	position: absolute;
	inset: 0 0 -60% 0;
	z-index: -1;
	pointer-events: none;
	/* >= 0.6 behind the whole header row (it ends at ~62% of this box): white text then
	 * keeps 4.5:1 even over a white frame (measured on every frame of the hero video). */
	background: linear-gradient(180deg, rgba(18, 22, 20, 0.68) 0%, rgba(18, 22, 20, 0.6) 62%, rgba(18, 22, 20, 0) 100%);
	transition: opacity 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}
.home.maggie-scrolled .maggie-header.is-style-header-overlay::before { opacity: 0; }
.home:not(.maggie-scrolled) .maggie-header.is-style-header-overlay :where(.wp-block-navigation-item__content, .wp-block-site-logo) { text-shadow: 0 1px 2px rgba(0, 0, 0, 0.45); filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.25)); }

/* Hero over video (className "maggie-hero" on a cover): a left-weighted scrim
 * behind the text column, whatever the frame. */
.maggie-hero > .wp-block-cover__background {
	opacity: 1 !important;
	/* Measured on every frame of the hero video: >= 0.6 behind the text column keeps
	 * the lead text at 4.5:1 and the headline well above 3:1 on the brightest frames. */
	background: linear-gradient(90deg, rgba(18, 22, 20, 0.72) 0%, rgba(18, 22, 20, 0.64) 48%, rgba(18, 22, 20, 0.18) 85%) !important;
}
@media (max-width: 781px) {
	/* Text spans the full width on small screens, so the scrim does too. */
	.maggie-hero > .wp-block-cover__background { background: rgba(18, 22, 20, 0.62) !important; }
}
.maggie-hero :where(h1, p) { text-shadow: 0 2px 12px rgba(0, 0, 0, 0.35); }
.maggie-header.is-style-header-overlay .wp-block-navigation__submenu-container {
	/* A darker gold than the header bar (accent), so the dropdown reads as its own panel.
	 * White on #6E5530 is about 7:1. */
	background: #6e5530;
	border-color: transparent;
	box-shadow: 0 12px 28px rgba(30, 22, 10, 0.28);
}

/* Carousel: a scroll-snap track; assets/site.js adds arrows and autoplay.
 * Markup: .maggie-carousel > .maggie-carousel-track > slides, plus .maggie-carousel-prev/.maggie-carousel-next buttons. */
.maggie-carousel { position: relative; }
.maggie-carousel-track {
	display: flex;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
}
.maggie-carousel-track::-webkit-scrollbar { display: none; }
.maggie-carousel-track > * { flex: 0 0 100%; scroll-snap-align: center; margin: 0 !important; }

/* Entrance: bands rise and fade once (site.js adds .is-visible); nothing for reduced motion. */
@media (prefers-reduced-motion: no-preference) {
	.maggie-reveal { opacity: 0; transform: translateY(32px); transition: opacity 0.7s cubic-bezier(0.22, 1, 0.36, 1), transform 0.7s cubic-bezier(0.22, 1, 0.36, 1); }
	.maggie-reveal.is-visible { opacity: 1; transform: none; }
}

/* Dropdown items: a clear hover/focus state (darker than the dropdown panel), so the
 * pointer position is always visible. White on #4D3A1F is about 10:1. */
.maggie-header .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	display: block;
	padding: 0.6em 1.1em;
	transition: background-color 0.3s cubic-bezier(0.22, 1, 0.36, 1), color 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}
.maggie-header.is-style-header-overlay .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover,
.maggie-header.is-style-header-overlay .wp-block-navigation__submenu-container .wp-block-navigation-item__content:focus-visible {
	background-color: #4d3a1f;
	color: #fff;
}
.maggie-header:not(.is-style-header-overlay) .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover,
.maggie-header:not(.is-style-header-overlay) .wp-block-navigation__submenu-container .wp-block-navigation-item__content:focus-visible {
	background-color: var(--wp--preset--color--panel);
	color: var(--wp--preset--color--ink);
}

/* Header menu: core navigation only switches to the overlay below 600px, so at
 * tablet widths a long menu wrapped onto two lines. Use the overlay (hamburger)
 * up to 1179px instead (the menu needs ~1120px for one row). */
@media (min-width: 600px) and (max-width: 1179px) {
	.maggie-header .wp-block-navigation__responsive-container-open:not(.always-shown) { display: flex !important; }
	.maggie-header .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) { display: none !important; }
}

/* Open overlay menu (phone and tablet): it inherited the transparent header's white,
 * shadowed links on core's white overlay. Deep gold panel, white text, left aligned. */
.maggie-header .wp-block-navigation__responsive-container.is-menu-open {
	background: var(--wp--preset--color--accent) !important;
	color: #fff !important;
	padding: 20px 28px 40px;
	--navigation-layout-justification-setting: flex-start;
	--navigation-layout-justify: flex-start;
}
.maggie-header .is-menu-open :where(a, button, .wp-block-navigation-item__content) { color: #fff !important; text-shadow: none !important; filter: none !important; }
.maggie-header .is-menu-open .wp-block-navigation__responsive-container-close { color: #fff !important; top: 24px; right: 24px; }
.maggie-header .is-menu-open .wp-block-navigation__responsive-container-content,
.maggie-header .is-menu-open .wp-block-navigation__container,
.maggie-header .is-menu-open .wp-block-navigation-item { align-items: flex-start !important; text-align: left; }
.maggie-header .is-menu-open .wp-block-navigation__container { gap: 22px !important; width: 100%; }
.maggie-header .is-menu-open .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content {
	font-family: var(--wp--preset--font-family--display); font-size: 26px; font-weight: 500; letter-spacing: 0;
}
.maggie-header .is-menu-open .wp-block-navigation__submenu-container {
	background: transparent !important; border: 0 !important; padding: 10px 0 0 14px !important;
	border-left: 1px solid rgba(255, 255, 255, 0.35) !important; gap: 8px; margin-top: 6px;
}
.maggie-header .is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content { font-size: 15px; font-weight: 400; opacity: 0.92; padding: 2px 0 !important; }
.maggie-header .is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover { opacity: 1; text-decoration: underline; background: transparent !important; }

/* ===================================================================
 * Motion (0.8.0): light, CSS-only transitions. Movement runs only when
 * the visitor has not asked for reduced motion; colour changes always do.
 * Hooks (classes set by the page builder):
 *   .maggie-stagger   grid whose children rise in one after another (site.js sets --i)
 *   .maggie-lift      card that lifts with a soft shadow on hover
 *   .maggie-zoom      figure whose photo zooms a little on hover
 *   .maggie-float     picture that floats up on its card's hover
 *   .maggie-iconbox   icon + linked label; the whole box is the link
 *   .maggie-ornament  section-title leaf, settles in on reveal
 * =================================================================== */
:root { --maggie-ease: cubic-bezier(0.22, 1, 0.36, 1); }

/* Body links: a faint resting underline (links are not told apart by colour
 * alone), drawn fully from left to right on hover and focus. */
:where(main) p a:not(.wp-element-button),
footer p:not(.maggie-credit) a,
.maggie-iconbox h3 a {
	text-decoration: none !important;
	background-image: linear-gradient(currentColor, currentColor), linear-gradient(color-mix(in srgb, currentColor 40%, transparent), color-mix(in srgb, currentColor 40%, transparent));
	background-size: 0% 1px, 100% 1px;
	background-position: 0 100%, 0 100%;
	background-repeat: no-repeat;
	padding-bottom: 1px;
	transition: background-size 0.45s var(--maggie-ease), color 0.3s var(--maggie-ease);
}
footer p:not(.maggie-credit) a, .maggie-iconbox h3 a { background-size: 0% 1px, 0% 1px; }
:where(main) p a:not(.wp-element-button):is(:hover, :focus-visible),
footer p:not(.maggie-credit) a:is(:hover, :focus-visible),
.maggie-iconbox:is(:hover, :focus-within) h3 a { background-size: 100% 1px, 100% 1px; }

/* Buttons: lift with a soft shadow; underlined text buttons draw their line. */
.wp-block-button__link { transition: background-color 0.3s var(--maggie-ease), color 0.3s var(--maggie-ease), border-color 0.3s var(--maggie-ease), box-shadow 0.4s var(--maggie-ease), transform 0.4s var(--maggie-ease); }
.wp-block-button[class*="border-b"] > .wp-block-button__link { position: relative; }
.wp-block-button[class*="border-b"] > .wp-block-button__link::after {
	content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 1px;
	background: currentColor; transform: scaleX(0); transform-origin: center;
	transition: transform 0.45s var(--maggie-ease);
}
.wp-block-button[class*="border-b"] > .wp-block-button__link:is(:hover, :focus-visible)::after { transform: scaleX(1); }

/* Icon boxes (Massage, Acupuncture ...): the whole box is the link. */
.maggie-iconbox h3 a::after { content: ""; position: absolute; inset: 0; border-radius: 16px; }
.maggie-iconbox__icon { position: relative; isolation: isolate; transition: color 0.35s var(--maggie-ease); }
.maggie-iconbox__icon::before {
	content: ""; position: absolute; left: 50%; top: 50%; z-index: -1;
	width: 88px; height: 88px; margin: -44px 0 0 -44px; border-radius: 50%;
	background: color-mix(in srgb, var(--wp--preset--color--line) 22%, transparent);
	opacity: 0; transform: scale(0.4);
	transition: opacity 0.35s var(--maggie-ease), transform 0.5s var(--maggie-ease);
}
/* The source icons hard-code fill="#c9a96a" (= preset line); follow the box colour instead. */
.maggie-iconbox__icon svg :is(path, circle, rect, polygon, ellipse)[fill]:not([fill="none"]) { fill: currentColor; transition: fill 0.35s var(--maggie-ease); }
.maggie-iconbox:is(:hover, :focus-within) .maggie-iconbox__icon { color: var(--wp--preset--color--olive) !important; }
.maggie-iconbox:is(:hover, :focus-within) .maggie-iconbox__icon::before { opacity: 1; transform: scale(1); }
.maggie-iconbox:is(:hover, :focus-within) h3 a { color: var(--wp--preset--color--ink) !important; }

/* Location chips, FAQ, footer icons, carousel arrows: colour feedback. */
.maggie-chip { transition: border-color 0.3s var(--maggie-ease), background-color 0.3s var(--maggie-ease), box-shadow 0.4s var(--maggie-ease), transform 0.4s var(--maggie-ease); }
.maggie-chip:hover { border-color: var(--wp--preset--color--accent) !important; background-color: var(--wp--preset--color--panel) !important; }
.maggie-chip > :first-child { transition: transform 0.45s var(--maggie-ease), background-color 0.3s var(--maggie-ease); }
.maggie-chip:hover > :first-child { background-color: var(--wp--preset--color--olive) !important; }
.wp-block-details summary { transition: color 0.3s var(--maggie-ease); }
.wp-block-details summary:hover { color: var(--wp--preset--color--olive) !important; }
.maggie-social { transition: background-color 0.3s var(--maggie-ease), transform 0.4s var(--maggie-ease); }
.maggie-social:is(:hover, :focus-visible) { background-color: var(--wp--preset--color--accent) !important; }
.maggie-icons a { display: inline-flex; transition: transform 0.35s var(--maggie-ease), opacity 0.3s var(--maggie-ease); }
.maggie-icons a:hover { opacity: 0.8; }
.maggie-arrow { transition: transform 0.35s var(--maggie-ease), opacity 0.3s var(--maggie-ease); opacity: 0.85; }
.maggie-arrow:hover { opacity: 1; }

@media (prefers-reduced-motion: no-preference) {
	/* Hover movement (pointer devices only). */
	@media (hover: hover) {
		.wp-block-button:not([class*="border-b"]) > .wp-block-button__link:hover { transform: translateY(-2px); box-shadow: 0 12px 24px -12px rgba(47, 58, 52, 0.55); }
		.wp-block-button__link:active { transform: translateY(0); box-shadow: none; }
		.maggie-lift { transition: transform 0.5s var(--maggie-ease), box-shadow 0.5s var(--maggie-ease); }
		.maggie-lift:hover { transform: translateY(-4px); box-shadow: 0 22px 44px -26px rgba(47, 58, 52, 0.5); }
		.maggie-zoom img { transition: transform 0.9s var(--maggie-ease); }
		.maggie-zoom:hover img, .maggie-lift:hover .maggie-zoom img { transform: scale(1.05); }
		.maggie-float img { transition: transform 0.6s var(--maggie-ease); }
		.maggie-lift:hover .maggie-float img { transform: translateY(-8px) rotate(-3deg); }
		.maggie-iconbox__icon svg { transition: transform 0.5s var(--maggie-ease); }
		.maggie-iconbox:hover .maggie-iconbox__icon svg { transform: translateY(-6px) scale(1.08) rotate(-4deg); }
		.maggie-chip:hover { transform: translateY(-2px); box-shadow: 0 10px 20px -14px rgba(47, 58, 52, 0.45); }
		.maggie-chip:hover > :first-child { transform: rotate(45deg); }
		.maggie-stagger > .wp-block-cover .wp-block-cover__image-background { transition: transform 0.9s var(--maggie-ease); }
		.maggie-stagger > .wp-block-cover:hover .wp-block-cover__image-background { transform: scale(1.06); }
		.maggie-social:hover { transform: scale(1.1); }
		.maggie-icons a:hover { transform: translateY(-2px); }
		.maggie-carousel-prev.maggie-arrow:hover { transform: translateX(-4px); }
		.maggie-carousel-next.maggie-arrow:hover { transform: translateX(4px); }
	}

	/* Section entrance: grids rise in one child after another. Uses the
	 * `translate` property so hover `transform`s stay independent. */
	:is(.maggie-reveal .maggie-stagger, .maggie-stagger.maggie-reveal) > * {
		opacity: 0; translate: 0 18px;
		transition: opacity 0.7s var(--maggie-ease) calc(var(--i, 0) * 70ms), translate 0.7s var(--maggie-ease) calc(var(--i, 0) * 70ms), transform 0.5s var(--maggie-ease), box-shadow 0.5s var(--maggie-ease), border-color 0.3s var(--maggie-ease), background-color 0.3s var(--maggie-ease);
	}
	:is(.maggie-reveal.is-visible .maggie-stagger, .maggie-stagger.maggie-reveal.is-visible) > * { opacity: 1; translate: none; }
	.maggie-stagger.maggie-reveal { opacity: 1; transform: none; }

	/* Section-title leaf settles in; a full-bleed photo band eases out of a slight zoom. */
	.maggie-reveal .maggie-ornament img { opacity: 0; transform: rotate(-14deg) scale(0.8); transition: opacity 0.8s var(--maggie-ease) 0.1s, transform 0.9s var(--maggie-ease) 0.1s; }
	.maggie-reveal.is-visible .maggie-ornament img { opacity: 1; transform: none; }
	.maggie-reveal.wp-block-cover > .wp-block-cover__image-background { transform: scale(1.08); transition: transform 1.8s var(--maggie-ease); }
	.maggie-reveal.wp-block-cover.is-visible > .wp-block-cover__image-background { transform: none; }

	/* Hero: headline, line and button rise in on load. */
	@keyframes maggie-rise { from { opacity: 0; translate: 0 22px; } to { opacity: 1; translate: none; } }
	.maggie-hero .wp-block-cover__inner-container > * > * { animation: maggie-rise 0.9s var(--maggie-ease) both; }
	.maggie-hero .wp-block-cover__inner-container > * > :nth-child(2) { animation-delay: 0.12s; }
	.maggie-hero .wp-block-cover__inner-container > * > :nth-child(3) { animation-delay: 0.24s; }
}

/* Top-level header links: a line draws in under the hovered item. */
@media (min-width: 1180px) and (hover: hover) {
	.maggie-header .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content { position: relative; }
	.maggie-header .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content::after {
		content: ""; position: absolute; left: 0; right: 0; bottom: -5px; height: 1px;
		background: currentColor; transform: scaleX(0); transform-origin: left;
		transition: transform 0.4s var(--maggie-ease);
	}
	.maggie-header .wp-block-navigation__container > .wp-block-navigation-item:is(:hover, :focus-within) > .wp-block-navigation-item__content::after { transform: scaleX(1); }
}

/* ===================================================================
 * Service pages (0.9.0): page-service template, type A pages.
 * .maggie-prose gives migrated rich text one rhythm (headings, lists,
 * strong), so 128 pages read the same without per-page classes.
 * =================================================================== */
.maggie-prose { color: var(--wp--preset--color--muted); font-size: 16px; line-height: 1.75; }
.maggie-prose > * { margin-block: 0; }
.maggie-prose > * + * { margin-top: 1em; }
.maggie-prose :where(h1, h2, h3, h4, h5, h6) { color: var(--wp--preset--color--ink); font-family: var(--wp--preset--font-family--display); font-weight: 500; line-height: 1.15; }
.maggie-prose :where(h2) { font-size: clamp(32px, 4vw, 44px); }
.maggie-prose :where(h3) { font-size: clamp(28px, 3.2vw, 36px); }
.maggie-prose :where(h4) { font-size: 26px; }
.maggie-prose :where(h5, h6) { font-size: 24px; font-weight: 600; }
.maggie-prose > :where(h2, h3, h4) + * { margin-top: 0.75em; }
.maggie-prose > * + :where(h4, h5, h6) { margin-top: 1.6em; }
.maggie-prose > :where(h5, h6) + * { margin-top: 0.35em; }
.maggie-prose strong { color: var(--wp--preset--color--ink); font-weight: 600; }
.maggie-prose :where(ul) { list-style: none; padding-left: 0; display: grid; gap: 0.5em; }
.maggie-prose :where(ul > li) { position: relative; padding-left: 1.75em; }
.maggie-prose :where(ul > li)::before {
	content: ""; position: absolute; left: 0.25em; top: 0.62em; width: 0.55em; height: 0.55em;
	border-radius: 50%; background: var(--wp--preset--color--line); box-shadow: 0 0 0 4px color-mix(in srgb, var(--wp--preset--color--line) 22%, transparent);
}
.maggie-prose :where(ol) { padding-left: 1.4em; }
.maggie-prose .wp-block-buttons { margin-top: 1.75em; }
.maggie-prose--center { text-align: center; }
.maggie-prose--center .wp-block-buttons { justify-content: center; }
.maggie-prose--center :where(ul) { justify-content: center; text-align: left; }
.maggie-prose--invert, .maggie-prose--invert :where(h1, h2, h3, h4, h5, h6, strong) { color: #fff; }
.bg-panel .maggie-prose, .bg-panel.maggie-prose { color: #3a3e41; }

/* Compact hero (every page except home): half the home hero (322px), title and
 * rating bottom-left over a scrim that is darkest behind the text. */
.maggie-hero--compact > .wp-block-cover__background {
	background: linear-gradient(90deg, rgba(18, 22, 20, 0.78) 0%, rgba(18, 22, 20, 0.58) 55%, rgba(18, 22, 20, 0.32) 100%) !important;
}
@media (max-width: 781px) {
	.maggie-hero--compact > .wp-block-cover__background { background: rgba(18, 22, 20, 0.66) !important; }
}
.maggie-hero--compact { align-items: stretch; }
.maggie-hero--compact .wp-block-cover__inner-container { width: 100%; display: flex; }
.maggie-hero--compact .wp-block-cover__inner-container > * { flex: 1; }

/* Reading column: sections separated by space and a hairline, not colour blocks. */
.maggie-story > .maggie-story__item + .maggie-story__item { margin-top: 56px; }
.maggie-story > .maggie-story__item + .maggie-story__item:not(.maggie-callout) { padding-top: 56px; border-top: 1px solid color-mix(in srgb, var(--wp--preset--color--line) 45%, transparent); }
.maggie-story > .maggie-callout + .maggie-story__item { border-top: 0 !important; padding-top: 0 !important; }
.maggie-story .maggie-prose :where(h2) { font-size: clamp(30px, 3vw, 40px); }
.maggie-story .maggie-prose :where(h3) { font-size: clamp(26px, 2.6vw, 34px); }
.maggie-story .maggie-prose { font-size: 17px; }
.maggie-callout .maggie-prose :where(h2, h3) { font-size: clamp(26px, 2.6vw, 32px); }
.maggie-tile h2, .maggie-tile h3 { transition: color 0.3s var(--maggie-ease, ease); }
@media (hover: hover) { .maggie-tile:hover :where(h2, h3, p.font-display) { color: var(--wp--preset--color--olive); } }

/* Forms (until the Maggie plugin's form block replaces the quote pattern). */
.maggie-form { display: grid; gap: 14px; font-family: var(--wp--preset--font-family--body); }
.maggie-form__row { display: grid; gap: 14px; grid-template-columns: 1fr 1fr; }
@media (max-width: 480px) { .maggie-form__row { grid-template-columns: 1fr; } }
.maggie-form label { display: grid; gap: 6px; font-size: 13px; font-weight: 500; letter-spacing: 0.02em; color: var(--wp--preset--color--ink); }
.maggie-form label em { font-style: normal; color: #8f5313; }
.maggie-form :is(input, textarea, select) {
	width: 100%; box-sizing: border-box; border: 1px solid color-mix(in srgb, var(--wp--preset--color--line) 75%, #fff);
	border-radius: 10px; background: #fff; padding: 12px 14px; font: inherit; font-size: 15px; font-weight: 400; color: var(--wp--preset--color--ink);
	transition: border-color 0.2s, box-shadow 0.2s;
}
.maggie-form :is(input, textarea, select):focus { outline: none; border-color: var(--wp--preset--color--olive); box-shadow: 0 0 0 3px color-mix(in srgb, var(--wp--preset--color--olive) 25%, transparent); }
.maggie-form textarea { resize: vertical; min-height: 110px; }
.maggie-form button[type="submit"] { justify-self: stretch; margin-top: 4px; border: 0; cursor: pointer; }

/* Share buttons (sidebar): round outline buttons, gold on hover; labels are for screen readers. */
.maggie-share { display: grid; gap: 12px; }
.maggie-share__label { margin: 0; font-family: var(--wp--preset--font-family--body); font-size: 12px; font-weight: 500; letter-spacing: 0.14em; text-transform: uppercase; color: var(--wp--preset--color--ink); }
.maggie-share__list { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; list-style: none; }
.maggie-share__list a, .maggie-share__list button {
	display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; box-sizing: border-box;
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--line) 80%, transparent); border-radius: 50%;
	background: var(--wp--preset--color--soft); color: var(--wp--preset--color--ink); cursor: pointer; padding: 0;
	text-decoration: none !important; background-image: none !important;
	transition: background-color 0.3s var(--maggie-ease, ease), color 0.3s var(--maggie-ease, ease), border-color 0.3s var(--maggie-ease, ease);
}
.maggie-share__list svg { width: 18px; height: 18px; fill: currentColor; }
.maggie-share__list a:hover, .maggie-share__list button:hover, .maggie-share__list a:focus-visible, .maggie-share__list button:focus-visible,
.maggie-share__list button.is-copied { background: var(--wp--preset--color--accent); border-color: var(--wp--preset--color--accent); color: #fff; }
.maggie-share__list :focus-visible { outline: 2px solid var(--wp--preset--color--olive); outline-offset: 2px; }
@media (prefers-reduced-motion: no-preference) and (hover: hover) {
	.maggie-share__list a, .maggie-share__list button { transition: background-color 0.3s, color 0.3s, border-color 0.3s, transform 0.4s var(--maggie-ease, ease); }
	.maggie-share__list a:hover, .maggie-share__list button:hover { transform: translateY(-2px); }
}
.maggie-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; }
.maggie-mini a { transition: color 0.3s var(--maggie-ease, ease); }
.maggie-mini:hover a { color: var(--wp--preset--color--olive) !important; }
.maggie-cta .wp-block-button__link { justify-content: center; }
/* A lone image inside the reading column stays a sensible size. */
.maggie-story .maggie-prose > .wp-block-image img { max-height: 460px; width: auto; max-width: 100%; border-radius: 16px; }

/* Blog list (0.9.0): filter bar, post cards, pagination. */
.maggie-blog-filters { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 210px) minmax(0, 160px) auto; gap: 10px; align-items: center; margin-bottom: 28px; font-family: var(--wp--preset--font-family--body); }
.maggie-blog-filters label { margin: 0; }
.maggie-blog-filters__search { position: relative; display: block; }
.maggie-blog-filters__search svg { position: absolute; left: 14px; top: 50%; width: 18px; height: 18px; transform: translateY(-50%); fill: var(--wp--preset--color--muted); pointer-events: none; }
.maggie-blog-filters :is(input, select) {
	width: 100%; box-sizing: border-box; height: 46px; border: 1px solid color-mix(in srgb, var(--wp--preset--color--line) 75%, #fff);
	border-radius: 999px; background: #fff; padding: 0 16px; font: inherit; font-size: 15px; color: var(--wp--preset--color--ink);
}
.maggie-blog-filters input { padding-left: 42px; }
.maggie-blog-filters select { padding-right: 36px; cursor: pointer; }
.maggie-blog-filters :is(input, select):focus { outline: none; border-color: var(--wp--preset--color--olive); box-shadow: 0 0 0 3px color-mix(in srgb, var(--wp--preset--color--olive) 25%, transparent); }
.maggie-blog-filters button { height: 46px; padding: 0 22px; border: 0; cursor: pointer; }
.maggie-blog-filters__clear { grid-column: 1 / -1; justify-self: start; font-size: 14px; color: var(--wp--preset--color--ink); }
@media (max-width: 781px) {
	.maggie-blog-filters { grid-template-columns: 1fr 1fr; }
	.maggie-blog-filters__search, .maggie-blog-filters button { grid-column: 1 / -1; }
}
.maggie-blog .wp-block-post-template { list-style: none; margin: 0; padding: 0; }
.maggie-blog .wp-block-post-template > li { margin: 0; }
.maggie-thumb-fallback { margin: 0; }
.maggie-thumb-fallback img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.maggie-thumb-placeholder {
	display: block; width: 100%; aspect-ratio: 4 / 3;
	background: var(--wp--preset--color--panel) url("https://moonlakespa.com/wp-content/uploads/2026/03/prhome08.png") center / 64px no-repeat;
}
.maggie-post-card .wp-block-post-title a { color: var(--wp--preset--color--ink); text-decoration: none; background-image: none; transition: color 0.3s var(--maggie-ease, ease); }
.maggie-post-card:hover .wp-block-post-title a { color: var(--wp--preset--color--olive); }
.maggie-post-card .wp-block-post-terms a { color: var(--wp--preset--color--accent); text-decoration: none; background-image: none; }
.maggie-post-card .wp-block-post-excerpt__more-text { display: none; }
.maggie-post-card .wp-block-post-excerpt__excerpt { margin: 0; }
.maggie-blog .wp-block-query-pagination { margin-top: 40px; gap: 6px; font-family: var(--wp--preset--font-family--body); font-size: 15px; }
.maggie-blog .wp-block-query-pagination :is(a, .current) {
	display: inline-flex; align-items: center; justify-content: center; min-width: 42px; height: 42px; padding: 0 12px; box-sizing: border-box;
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--line) 70%, transparent); border-radius: 999px; background: var(--wp--preset--color--soft);
	color: var(--wp--preset--color--ink); text-decoration: none; background-image: none;
}
.maggie-blog .wp-block-query-pagination .current { background: var(--wp--preset--color--accent); border-color: var(--wp--preset--color--accent); color: #fff; }
.maggie-blog .wp-block-query-pagination a:hover { border-color: var(--wp--preset--color--olive); color: var(--wp--preset--color--olive); }
.maggie-blog .wp-block-query-pagination-numbers { display: inline-flex; gap: 6px; flex-wrap: wrap; }
.maggie-blog .wp-block-query-pagination .dots { border: 0; background: none; min-width: 20px; }
/* Blog hero: popular topics as pills on the photo. */
.maggie-blog-topics { display: flex; flex-wrap: wrap; gap: 8px; }
.maggie-blog-topics a {
	display: inline-flex; align-items: center; height: 34px; padding: 0 14px; border: 1px solid rgba(255, 255, 255, 0.55); border-radius: 999px;
	color: #fff !important; font-family: var(--wp--preset--font-family--body); font-size: 13px; letter-spacing: 0.02em; text-decoration: none; background: rgba(255, 255, 255, 0.06);
	background-image: none !important; transition: background-color 0.3s var(--maggie-ease, ease), color 0.3s var(--maggie-ease, ease), border-color 0.3s;
}
.maggie-blog-topics a:hover, .maggie-blog-topics a:focus-visible, .maggie-blog-topics a[aria-current] { background: #fff; color: var(--wp--preset--color--ink) !important; border-color: #fff; }
@media (max-width: 639px) { .maggie-blog-topics { display: none; } }

/* Single post (0.9.0): hero from the featured image, body + sticky share / contents. */
.maggie-post-hero { background: var(--wp--preset--color--ink); }
.maggie-post-hero .wp-block-cover__image-background { object-fit: cover; }
.maggie-post-hero__terms { display: flex; flex-wrap: wrap; gap: 6px; }
.maggie-post-hero__terms a {
	display: inline-flex; align-items: center; height: 28px; padding: 0 12px; border-radius: 999px; background: rgba(255, 255, 255, 0.14);
	border: 1px solid rgba(255, 255, 255, 0.45); color: #fff !important; font-size: 12px; letter-spacing: 0.08em; text-transform: uppercase;
	text-decoration: none; background-image: none !important;
}
.maggie-post-hero__terms a:hover { background: #fff; color: var(--wp--preset--color--ink) !important; }
.maggie-post-hero__terms .wp-block-post-terms__separator { display: none; }
.maggie-post-hero__meta > * + *::before { content: "·"; margin-right: 12px; opacity: 0.7; }
.maggie-post-body { font-size: 17px; }
.maggie-post-body #maggie { color: inherit !important; }
.maggie-post-body :where(h2) { font-size: clamp(28px, 3vw, 36px); margin-top: 1.8em; scroll-margin-top: 110px; }
.maggie-post-body :where(h3) { font-size: clamp(22px, 2.2vw, 26px); margin-top: 1.4em; }
.maggie-post-body :where(img) { max-width: 100%; height: auto; border-radius: 16px; }
.maggie-post-body :where(table) { width: 100%; border-collapse: collapse; font-size: 15px; }
.maggie-post-body :where(th, td) { border-bottom: 1px solid color-mix(in srgb, var(--wp--preset--color--line) 45%, transparent); padding: 10px 8px; text-align: left; }
.maggie-post-body #maggie > * + * { margin-top: 1em; }
.maggie-toc { border-radius: 18px; background: var(--wp--preset--color--soft); padding: 22px 22px 18px; }
.maggie-toc__label { margin: 0 0 12px; font-family: var(--wp--preset--font-family--body); font-size: 12px; font-weight: 500; letter-spacing: 0.14em; text-transform: uppercase; color: var(--wp--preset--color--ink); }
.maggie-toc ol { margin: 0; padding: 0; list-style: none; counter-reset: toc; display: grid; gap: 2px; max-height: calc(100vh - 260px); overflow: auto; }
.maggie-toc li { counter-increment: toc; }
.maggie-toc a {
	display: grid; grid-template-columns: 24px 1fr; gap: 6px; padding: 7px 8px; border-radius: 10px; font-size: 14px; line-height: 1.4;
	color: var(--wp--preset--color--muted) !important; text-decoration: none; background-image: none !important; transition: background-color 0.2s, color 0.2s;
}
.maggie-toc a::before { content: counter(toc, decimal-leading-zero); color: var(--wp--preset--color--accent); font-size: 12px; padding-top: 1px; }
.maggie-toc a:hover, .maggie-toc a.is-current { background: var(--wp--preset--color--panel); color: var(--wp--preset--color--ink) !important; }
.maggie-post-hero__meta, .maggie-post-hero__meta :where(time, a, div) { color: rgba(255, 255, 255, 0.92) !important; }
.maggie-post-body > :first-child, .maggie-post-body #maggie > :first-child { margin-top: 0 !important; }
@media (max-width: 1023px) { .maggie-toc ol { max-height: 240px; } }
/* Featured images are any photo (often bright): a stronger scrim than the page heroes. */
.maggie-post-hero > .wp-block-cover__background {
	background: linear-gradient(90deg, rgba(18, 22, 20, 0.84) 0%, rgba(18, 22, 20, 0.7) 55%, rgba(18, 22, 20, 0.45) 100%) !important;
}
@media (max-width: 781px) { .maggie-post-hero > .wp-block-cover__background { background: rgba(18, 22, 20, 0.72) !important; } }
/* Category / tag archives. */
.maggie-blog-filters--no-topic { grid-template-columns: minmax(0, 1fr) minmax(0, 200px) auto; }
@media (max-width: 781px) { .maggie-blog-filters--no-topic { grid-template-columns: 1fr 1fr; max-width: none; } .maggie-blog-filters--no-topic select { grid-column: 1 / 2; } }
.maggie-archive-count { margin: 0; display: inline-flex; align-items: center; height: 30px; padding: 0 14px; border-radius: 999px; border: 1px solid rgba(255,255,255,0.45); color: #fff; font-family: var(--wp--preset--font-family--body); font-size: 13px; letter-spacing: 0.04em; }
.maggie-term-desc p { margin: 0; }
.maggie-archive .wp-block-post-title { font-size: 19px; }
.maggie-archive-count { align-self: flex-start; width: fit-content; }
.maggie-hero .maggie-archive-count { margin-top: 2px; }
@media (max-width: 781px) { .maggie-blog-filters--no-topic { grid-template-columns: 1fr !important; } }

/* Plain pages (page / page-wide): reading width with side gutters; wide and full-width
 * blocks (starter patterns, bands) break out to the page edges. */
.maggie-page-body { padding-inline: 20px; }
@media (min-width: 782px) { .maggie-page-body { padding-inline: 40px; } }
.maggie-page-body > .alignfull { margin-inline: -20px !important; width: calc(100% + 40px); max-width: none !important; }
@media (min-width: 782px) { .maggie-page-body > .alignfull { margin-inline: -40px !important; width: calc(100% + 80px); } }
.maggie-page-wrap:has(.maggie-page-body > .alignfull:last-child) { padding-bottom: 0 !important; }
.maggie-page-wrap:has(.maggie-page-body > .alignfull:first-child) { padding-top: 0 !important; }
.maggie-archive-lead { margin: 0; max-width: 680px; font-size: 16px; line-height: 1.6; color: rgba(255, 255, 255, 0.92); }
/* 404: the site's main pages as a link grid. */
.maggie-404-links { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); }
.maggie-404-links a {
	display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 18px; border-radius: 14px; background: var(--wp--preset--color--soft);
	color: var(--wp--preset--color--ink) !important; font-family: var(--wp--preset--font-family--display); font-size: 20px; text-decoration: none; background-image: none !important;
	transition: color 0.3s var(--maggie-ease, ease), transform 0.4s var(--maggie-ease, ease), box-shadow 0.4s var(--maggie-ease, ease);
}
.maggie-404-links svg { width: 18px; height: 18px; flex: none; fill: var(--wp--preset--color--accent); transition: transform 0.3s var(--maggie-ease, ease); }
.maggie-404-links a:hover { color: var(--wp--preset--color--olive) !important; }
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
	.maggie-404-links a:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgba(47, 58, 52, 0.1); }
	.maggie-404-links a:hover svg { transform: translateX(3px); }
}
/* Share buttons inside body text: they are a toolbar, not a bulleted list. */
.maggie-prose .maggie-share__list { display: flex; padding-left: 0; }
.maggie-prose .maggie-share__list > li { padding-left: 0; }
.maggie-prose .maggie-share__list > li::before { content: none; }
.maggie-blog-filters--search-only { grid-template-columns: minmax(0, 1fr) auto !important; max-width: 720px; }
@media (max-width: 781px) { .maggie-blog-filters--search-only { grid-template-columns: 1fr !important; } }

/* ===================================================================
 * WPForms in the Maggie look (0.9.1). WPForms' modern markup reads these
 * variables; the rules below only cover what the variables do not.
 * =================================================================== */
.wpforms-container {
	--wpforms-field-border-radius: 10px;
	--wpforms-field-border-color: color-mix(in srgb, var(--wp--preset--color--line) 75%, #fff);
	--wpforms-field-border-size: 1px;
	--wpforms-field-background-color: #fff;
	--wpforms-field-text-color: var(--wp--preset--color--ink);
	--wpforms-field-menu-color: #fff;
	--wpforms-label-color: var(--wp--preset--color--ink);
	--wpforms-label-sublabel-color: var(--wp--preset--color--muted);
	--wpforms-label-error-color: #a1361f;
	--wpforms-button-border-radius: 999px;
	--wpforms-button-background-color: var(--wp--preset--color--olive);
	--wpforms-button-text-color: #fff;
	--wpforms-button-border-size: 0;
	--wpforms-field-size-input-height: 46px;
	--wpforms-field-size-input-spacing: 14px;
	--wpforms-field-size-font-size: 15px;
	--wpforms-field-size-padding-h: 14px;
	--wpforms-label-size-font-size: 13px;
	--wpforms-button-size-font-size: 15px;
	--wpforms-button-size-height: 48px;
	--wpforms-button-size-padding-h: 28px;
	margin: 0 !important;
	font-family: var(--wp--preset--font-family--body);
}
.wpforms-container .wpforms-form .wpforms-field { padding: 0 0 14px; }
.wpforms-container .wpforms-form .wpforms-field-label { font-weight: 500; letter-spacing: 0.02em; margin-bottom: 6px; }
.wpforms-container .wpforms-form .wpforms-required-label { color: #8f5313; }
.wpforms-container .wpforms-form :is(input[type="text"], input[type="email"], input[type="tel"], input[type="url"], input[type="number"], select, textarea) {
	width: 100%; max-width: 100%; box-sizing: border-box; font-family: inherit; box-shadow: none;
	transition: border-color 0.2s, box-shadow 0.2s;
}
.wpforms-container .wpforms-form :is(input, select, textarea):focus {
	outline: none; border-color: var(--wp--preset--color--olive) !important;
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--wp--preset--color--olive) 25%, transparent) !important;
}
.wpforms-container .wpforms-form textarea { min-height: 120px; resize: vertical; }
.wpforms-container .wpforms-form ::placeholder { color: color-mix(in srgb, var(--wp--preset--color--muted) 70%, #fff); opacity: 1; }
.wpforms-container .wpforms-form :is(.wpforms-field-row, .wpforms-field-medium, .wpforms-field-large, .wpforms-field-small) { max-width: 100% !important; }
.wpforms-container .wpforms-form .wpforms-field-sublabel { font-size: 12px; margin-top: 4px; }
.wpforms-container .wpforms-form .wpforms-submit-container { padding: 6px 0 0; margin: 0; }
.wpforms-container .wpforms-form button[type="submit"] {
	width: 100%; font-family: var(--wp--preset--font-family--body); font-weight: 500; letter-spacing: 0.06em; cursor: pointer;
	transition: background-color 0.3s var(--maggie-ease, ease), transform 0.4s var(--maggie-ease, ease), box-shadow 0.4s var(--maggie-ease, ease);
}
.wpforms-container .wpforms-form button[type="submit"]:hover { background: var(--wp--preset--color--olive-deep) !important; }
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
	.wpforms-container .wpforms-form button[type="submit"]:hover { transform: translateY(-2px); box-shadow: 0 10px 22px rgba(47, 58, 52, 0.18); }
}
.wpforms-container .wpforms-form button[type="submit"]:focus-visible { outline: 2px solid var(--wp--preset--color--olive); outline-offset: 3px; }
.wpforms-container .wpforms-form label.wpforms-error, .wpforms-container .wpforms-form em.wpforms-error { font-size: 13px; font-style: normal; margin-top: 6px; }
.wpforms-container .wpforms-form .wpforms-error:is(input, textarea, select) { border-color: #a1361f !important; }
.wpforms-confirmation-container-full {
	border: 0 !important; border-radius: 14px; background: color-mix(in srgb, var(--wp--preset--color--olive) 12%, #fff) !important;
	color: var(--wp--preset--color--ink) !important; padding: 18px 20px !important; font-family: var(--wp--preset--font-family--body);
}
.wpforms-confirmation-container-full p { margin: 0; }
/* On the gold contact band and dark heroes the form sits on a white card already. */
.bg-accent .wpforms-container .wpforms-field-label { color: var(--wp--preset--color--ink); }
/* A sub-field that already shows its name as a placeholder does not repeat it underneath. */
.wpforms-container .wpforms-field-row-block:has(input[placeholder]:not([placeholder=""])) .wpforms-field-sublabel { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
