/*
 * Core child styles, unlayered. Printed after the tokens and before base.css and the layout CSS
 * (inc/assets.php): they beat base.css's layers, and a layout's own style.css beats them.
 *
 * Order: 1. Tokens  2. Global elements  3. Shared components  4. Header  5. Footer.
 * Layout styles belong in layouts/{name}/style.css, which loads only on pages that use the layout.
 *
 * Tokens: brand colors, fonts, base size, scale, container width and radius come from Site Settings
 * (--fm-*). Extra brand colors go in Site Settings → Colors → Custom Colors (--fm-color-custom-{slug}).
 * Everything the design needs beyond that is a --fmc-* token here, derived from --fm-* where it can be,
 * so child layouts never hard-code a brand value. A client fork changes the values, not the names:
 * put the fork's values in its own :root block at the end of section 1.
 */

/* 1. Tokens ------------------------------------------------------------- */
:root {
	/* Color roles */
	--fmc-accent: var(--fm-color-secondary);
	--fmc-on-accent: var(--fm-on-secondary);
	--fmc-ink: var(--fm-color-dark);
	--fmc-deep: color-mix(in srgb, var(--fm-color-dark) 85%, black);
	--fmc-surface: var(--fm-color-light);
	--fmc-paper: var(--fm-color-white);
	--fmc-muted: color-mix(in srgb, var(--fm-color-dark) 70%, white);
	--fmc-rule: color-mix(in srgb, var(--fm-color-dark) 14%, transparent);
	--fmc-rule-soft: color-mix(in srgb, var(--fm-color-dark) 8%, transparent);
	--fmc-subhead: var(--fm-color-primary);
	--fmc-line: color-mix(in srgb, var(--fmc-accent) 85%, transparent);
	--fmc-glow: color-mix(in srgb, var(--fmc-accent) 55%, transparent);

	/* Type (sizes fall back to the parent's fluid scale) */
	--fmc-heading-weight: 700;
	--fmc-h1: var(--fm-step-5);
	--fmc-h2: var(--fm-step-3);
	--fmc-h3: var(--fm-step-2);
	--fmc-h4: var(--fm-step-1);
	--fmc-lead: var(--fm-step-2);
	--fmc-sub-size: var(--fm-step-1);
	--fmc-sub-weight: 600;
	--fmc-sub-transform: none;
	--fmc-body-lh: 1.7;
	--fmc-text-sm: .9375rem;
	--fmc-text-xs: .8125rem;
	--fmc-eyebrow-font: var(--fm-font-caption);
	--fmc-eyebrow-size: .875rem;
	--fmc-eyebrow-track: .18em;
	--fmc-eyebrow-color: var(--fmc-accent);
	--fmc-eyebrow-bg: transparent;
	--fmc-eyebrow-border: transparent;
	--fmc-eyebrow-pad: 0;
	--fmc-eyebrow-mark: 1.5em;

	/* Shape and depth */
	--fmc-radius-pill: 999px;
	--fmc-radius-card: var(--fm-radius);
	--fmc-radius-img: var(--fm-radius);
	--fmc-shadow-card: 0 10px 30px rgb(0 0 0 / .06);
	--fmc-shadow-lift: 0 16px 32px rgb(0 0 0 / .12);
	--fmc-shadow-float: 0 28px 60px rgb(0 0 0 / .28);
	--fmc-ease: cubic-bezier(.2, .7, .2, 1);

	/* Buttons: an inner ring in the variant's Border color (Site Settings → Buttons), off by default */
	--fmc-btn-ring: 0px;
	--fmc-btn-ring-inset: 6px;

	/* Spacing inside sections */
	--fmc-stack: 1.25rem;
	--fmc-block-gap: clamp(2rem, 4vw, 3.5rem);
	--fmc-col-gap: clamp(2rem, 6vw, 5rem);

	/* Header and footer */
	--fmc-header-bg: var(--fm-color-white);
	--fmc-header-shadow: 0 1px 0 var(--fm-rule);
	--fmc-utility-bg: var(--fmc-accent);
	--fmc-utility-text: var(--fmc-on-accent);
	--fmc-footer-bg: var(--fm-color-dark);
	--fmc-footer-text: var(--fm-on-dark);
}

/* Dark sections switch the accents. Forks add their own dark backgrounds here. */
.fm-bg-dark, .fm-bg-primary, .fm-bg-image, .fm-text-light, .fmc-on-dark {
	--fmc-subhead: var(--fmc-accent);
	--fmc-eyebrow-border: var(--fmc-accent);
	--fmc-rule: color-mix(in srgb, currentColor 18%, transparent);
	--fmc-muted: color-mix(in srgb, currentColor 75%, transparent);
}

/* 2. Global elements ---------------------------------------------------- */
h1, h2, h3, h4 { font-weight: var(--fmc-heading-weight); }
p, li { text-wrap: pretty; }

/* Buttons: the ring sits inside the edge and slides out on hover. */
.fm-btn {
	box-shadow: inset 0 0 0 var(--fmc-btn-ring-inset) var(--fm-btn-bg), inset 0 0 0 calc(var(--fmc-btn-ring-inset) + var(--fmc-btn-ring)) var(--fm-btn-border);
	transition: box-shadow .2s ease, background-color .2s ease, color .2s ease;
	white-space: nowrap;
}
.fm-btn:hover, .fm-btn:focus-visible {
	box-shadow: inset 0 0 0 0 var(--fm-btn-hover-bg), inset 0 0 0 var(--fmc-btn-ring) var(--fm-btn-hover-border);
}
.fm-btn[class] { padding: var(--fmc-btn-pad, var(--fm-btn-pad)); font-size: var(--fmc-btn-size, var(--fm-btn-size)); }
.fm-actions { display: flex; flex-wrap: wrap; gap: .75rem; margin: 0; }
/* Parent carousels: absolutely positioned screen-reader text in off-screen slides escapes the
   unpositioned scroll track and widens the page. Proposed upstream (docs/decisions.md). */
[data-fm-track] { position: relative; }

/* 3. Shared components -------------------------------------------------- */

/* Eyebrow: small label with the brand mark. */
.fmc-eyebrow {
	display: inline-flex; align-items: center; gap: .6rem; align-self: flex-start; margin: 0;
	padding: var(--fmc-eyebrow-pad); border: 1.5px solid var(--fmc-eyebrow-border); border-radius: var(--fmc-radius-pill);
	background: var(--fmc-eyebrow-bg); color: var(--fmc-eyebrow-color);
	font-family: var(--fmc-eyebrow-font); font-size: var(--fmc-eyebrow-size); letter-spacing: var(--fmc-eyebrow-track); line-height: 1.2; text-transform: uppercase;
}
.fmc-eyebrow__mark { width: var(--fmc-eyebrow-mark); height: var(--fmc-eyebrow-mark); object-fit: contain; margin-block: -.25em; flex: none; }

/* Section intro: eyebrow, heading, subheading, text, buttons. */
.fmc-intro { display: flex; flex-direction: column; gap: var(--fmc-stack); }
.fmc-intro > .fmc-eyebrow { margin-bottom: -.5rem; }
.fmc-intro__title { margin: 0; font-size: var(--fmc-h2); line-height: 1.08; }
.fmc-intro__sub { margin: 0; font-weight: var(--fmc-sub-weight); font-size: var(--fmc-sub-size); line-height: 1.45; text-transform: var(--fmc-sub-transform); color: var(--fmc-subhead); text-wrap: balance; }
.fmc-intro__text { display: grid; gap: var(--fmc-stack); line-height: var(--fmc-body-lh); }
.fmc-intro__text > * { margin: 0; }
.fmc-intro > .fm-actions { margin-top: .5rem; }
.fmc-intro--center { align-items: center; text-align: center; }
.fmc-intro--center > .fmc-eyebrow { align-self: center; }
/* Intro with buttons to the right (section heads above a grid). */
.fmc-head { display: grid; gap: 1.5rem var(--fmc-block-gap); align-items: end; margin-bottom: var(--fmc-block-gap); }
.fmc-head > .fm-actions { justify-content: flex-start; }
@media (min-width: 900px) { .fmc-head { grid-template-columns: minmax(0, 1fr) auto; } .fmc-head > .fm-actions { justify-content: flex-end; } }
.fmc-head .fmc-intro { max-width: 56rem; }

/* Framed image: photo, fade from the bottom, inset line, optional caption. */
.fmc-frame { position: relative; margin: 0; overflow: hidden; border-radius: var(--fmc-radius-img); background: var(--fmc-ink); isolation: isolate; }
.fmc-frame__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; }
.fmc-frame::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(0deg, var(--fmc-ink) 6%, color-mix(in srgb, var(--fmc-ink) 55%, transparent) 32%, transparent 58%); }
.fmc-frame::after { content: ""; position: absolute; inset: 16px; border: 1px solid var(--fmc-line); pointer-events: none; }
.fmc-frame__caption { position: absolute; left: 40px; right: 40px; bottom: 36px; display: flex; flex-direction: column; gap: .35rem; color: #fff; }
.fmc-frame__eyebrow { font-family: var(--fmc-eyebrow-font); font-size: var(--fmc-eyebrow-size); letter-spacing: var(--fmc-eyebrow-track); text-transform: uppercase; color: var(--fmc-accent); }
.fmc-frame__title { font-family: var(--fm-font-heading); font-weight: var(--fmc-heading-weight); font-size: var(--fmc-h4); line-height: 1.15; }
.fmc-frame__text { font-size: var(--fmc-text-sm); }

/* Slider controls (assets/js/site.js builds the dots). */
.fmc-controls { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-top: 1.75rem; }
.fmc-arrows { display: flex; align-items: center; gap: .875rem; }
.fmc-arrow { display: inline-grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; border-radius: 50%; background: var(--fmc-accent); color: var(--fmc-on-accent); cursor: pointer; transition: transform .2s; }
.fmc-arrow:hover { transform: scale(1.08); }
.fmc-arrow svg { width: 20px; height: 20px; }
.fmc-count { font-family: var(--fm-font-heading); font-size: 1.25rem; margin-left: .625rem; }
.fmc-count b { font-weight: inherit; color: var(--fmc-accent); }
.fmc-dots { display: flex; gap: .625rem; }
.fmc-dot { width: 10px; height: 10px; padding: 0; border: 0; border-radius: var(--fmc-radius-pill); color: inherit; background: color-mix(in srgb, currentColor 40%, transparent); cursor: pointer; transition: width .3s, background-color .3s; }
.fmc-dot[aria-current="true"] { width: 28px; background: var(--fmc-accent); }
/* Bigger tap area without changing the look. */
.fmc-dot { position: relative; }
.fmc-dot::after { content: ""; position: absolute; inset: -12px -4px; }

/* Disclosure toggle (read more, offer details). */
.fmc-more { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .45s ease; }
.fmc-more > * { overflow: hidden; min-height: 0; }
.fmc-more.is-open { grid-template-rows: 1fr; }
.fmc-toggle { display: inline-flex; align-items: center; gap: .625rem; align-self: flex-start; padding: 0; border: 0; background: none; color: var(--fmc-accent); font: inherit; font-weight: 700; font-size: var(--fmc-text-sm); cursor: pointer; }
.fmc-toggle__icon { display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; background: var(--fmc-accent); color: var(--fmc-on-accent); transition: transform .35s ease; }
.fmc-toggle__icon svg { width: 16px; height: 16px; }
.fmc-toggle[aria-expanded="true"] .fmc-toggle__icon { transform: rotate(45deg); }
[data-fmc-toggle] [data-fmc-open-label] { display: none; }
[data-fmc-toggle][aria-expanded="true"] [data-fmc-open-label] { display: inline; }
[data-fmc-toggle][aria-expanded="true"] [data-fmc-closed-label] { display: none; }

/* Icon in a ring (icon cards, the inline offer band). */
.fmc-icon-ring { display: inline-grid; place-items: center; flex: none; width: 60px; height: 60px; border: 3px solid var(--fmc-icon-ring, var(--fm-color-primary)); border-radius: 50%; color: var(--fmc-icon-ring, var(--fm-color-primary)); }
.fmc-icon-ring :is(svg, img) { width: 28px; height: 28px; }

/* Callout: a dark card with the brand mark in a ring that turns light on hover (Content with Sidebar's
   callout, Inline Offer's Callout Card). On a dark section it gets a line so it stays a card. */
.fmc-callout { --_bg: var(--fmc-ink); --_fg: #fff; --_sub: #fff; display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 24px 32px; margin: 14px 0; padding: 36px 40px; border-radius: var(--fmc-radius-card); background: var(--_bg); color: var(--_fg); transition: background-color .5s ease, color .5s ease; }
.fmc-callout:is(:hover, :focus-within) { --_bg: #fff; --_fg: var(--fmc-ink); --_sub: var(--fm-color-primary); }
:is(.fm-bg-dark, .fm-bg-primary) .fmc-callout { box-shadow: inset 0 0 0 1px var(--fmc-line); }
.fmc-callout__text { display: flex; flex: 1 1 20rem; align-items: center; gap: 20px; min-width: 0; }
.fmc-callout__mark { display: grid; place-items: center; flex: none; width: 64px; height: 64px; border: 2px solid var(--fmc-accent); border-radius: 50%; background: var(--fmc-ink); }
.fmc-callout__mark-img { width: 40px; height: 40px; object-fit: contain; }
.fmc-callout__title { display: block; margin: 0; font-family: var(--fm-font-heading); font-weight: var(--fmc-heading-weight); font-size: clamp(22px, 2.1875vw, 28px); line-height: 1.15; color: inherit; }
.fmc-callout__sub { display: block; margin: 4px 0 0; font-size: 16px; color: var(--_sub); transition: color .5s; }
.fmc-callout .fm-actions { flex: none; }
.fmc-callout:not(:hover, :focus-within) .fm-btn--v1 { --fm-btn-border: #fff; --fm-btn-hover-border: #fff; }
.fmc-callout:not(:hover, :focus-within) .fm-btn--v2 { --fm-btn-bg: #fff; --fm-btn-text: var(--fmc-ink); --fm-btn-hover-bg: #fff; --fm-btn-hover-text: var(--fmc-ink); }
@media (max-width: 639px) {
	.fmc-callout { padding: 28px 24px; }
	.fmc-callout .fm-actions { flex: 1 1 100%; }
	.fmc-callout .fm-actions .fm-btn { flex: 1 1 auto; }
	.fmc-callout__text { gap: 14px; }
	.fmc-callout__mark { width: 52px; height: 52px; }
}
@media (prefers-reduced-motion: reduce) { .fmc-callout, .fmc-callout__sub { transition: none; } }

/* RealWork Labs' slide-out ("See work near you"; its script runs on every page): the site's colors,
   font and buttons instead of RealWork's lime. RealWork's class names are generated, so these rules
   hook onto #rwl-neighborhood, its data-testid attributes and its --rwl-* theme variables; if RealWork
   changes them the widget keeps its own look. The RealWork Map section styles its in-page version. */
#rwl-neighborhood {
	--rwl-color-primary-default: var(--fmc-ink);
	--rwl-color-primary-hover: var(--fm-color-primary);
	--rwl-color-primary-active: var(--fmc-ink);
	--rwl-color-primary-map: var(--fmc-ink);
	--rwl-color-primary-map-active: var(--fm-color-primary);
	--rwl-color-primary-light: var(--fmc-surface);
	--rwl-color-primary-border: var(--fmc-rule);
	--rwl-text-default: var(--fmc-ink);
	--rwl-icon-default: var(--fmc-ink);
}
#rwl-neighborhood [class*="rwl-text-"] { font-family: var(--fm-font-body) !important; }
#rwl-neighborhood .rwl-neighborhood-head { font-family: var(--fm-font-heading) !important; font-weight: var(--fmc-heading-weight) !important; color: var(--fmc-ink); }
/* The tab, its edge and the panel's edge in the accent. */
:is([data-testid="static-tab-handle"], [data-testid="panel-tab-handle"]),
:is([data-testid="static-tab-handle"], [data-testid="panel-tab-handle"])::before,
:is([data-testid="static-tab-handle"], [data-testid="panel-tab-handle"])::after,
#rwl-neighborhood div:has(> [data-testid="static-tab-handle"]),
[data-testid="slide-out-overlay"] + div > div:first-child:empty,
[data-testid="mobile-close-button"] { background: var(--fmc-accent) !important; }
:is([data-testid="static-tab-handle"], [data-testid="panel-tab-handle"]) > span { color: var(--fmc-on-accent, var(--fmc-ink)) !important; font-family: var(--fm-font-body) !important; font-weight: 700; font-size: 17px !important; letter-spacing: .02em; }
[data-testid="slide-out-wrapper"] { border-right-color: var(--fmc-accent) !important; }
[data-testid="mobile-close-button"] { color: var(--fmc-ink) !important; }
/* Its Contact button in the site's button style. */
#rwl-neighborhood a[role="button"][href] { white-space: nowrap; border-radius: 999px !important; background: var(--fmc-accent) !important; color: var(--fmc-on-accent, var(--fmc-ink)) !important; font-family: var(--fm-font-body) !important; font-weight: 700; box-shadow: inset 0 0 0 2px var(--fmc-ink); }
#rwl-neighborhood a[role="button"][href]:hover { background: var(--fmc-ink) !important; color: #fff !important; }
/* Phones: a slimmer tab, so it covers less of the page. */
@media (max-width: 639px) {
	[data-testid="static-tab-handle"] { width: 32px !important; height: 150px !important; }
	[data-testid="static-tab-handle"] > span { font-size: 14px !important; }
}

/* Forms (Gravity Forms, styled by the parent): fields and submit match the design everywhere. .fmc-form--inline: fields in a row. */
.gform_wrapper :is(input:not([type=checkbox]):not([type=radio]):not([type=submit]):not([type=button]), select, textarea) { padding: 16px; border: 1px solid var(--fmc-input-border, var(--fmc-rule)); border-radius: var(--fmc-radius-img); background: #fff; color: var(--fmc-ink); font: inherit; font-size: 16px; }
.gform_wrapper :is(.gform_button, input[type=submit], .gform_next_button) {
	padding: var(--fmc-btn-pad, .8rem 1.4rem); border: 0; border-radius: var(--fmc-radius-pill); background: var(--fmc-accent); color: var(--fmc-on-accent); font-family: var(--fm-font-button, inherit); font-weight: 700; font-size: var(--fmc-btn-size, 1rem); cursor: pointer;
	box-shadow: inset 0 0 0 var(--fmc-btn-ring-inset) var(--fmc-accent), inset 0 0 0 calc(var(--fmc-btn-ring-inset) + var(--fmc-btn-ring)) var(--fmc-ink); transition: box-shadow .2s ease;
}
.gform_wrapper :is(.gform_button, input[type=submit], .gform_next_button):hover { box-shadow: inset 0 0 0 0 var(--fmc-accent), inset 0 0 0 var(--fmc-btn-ring) var(--fmc-ink); }
/* Multi-step forms (the Book Online scheduler form): numbered steps joined by a line, the current one
   filled; Back and Continue at the foot. */
.gform_wrapper .gf_page_steps { display: flex; margin: 0 0 24px; padding: 0 0 18px; border-bottom: 1px solid var(--fmc-rule); }
.gform_wrapper .gf_step { position: relative; flex: 1 1 0; display: flex; flex-direction: column; align-items: center; gap: 6px; min-width: 0; color: var(--fmc-muted); font-size: 14px; text-align: center; }
.gform_wrapper .gf_step:not(:first-child)::before { content: ""; position: absolute; top: 17px; right: calc(50% + 22px); left: calc(-50% + 22px); height: 2px; background: var(--fmc-rule); }
.gform_wrapper .gf_step_completed:not(:first-child)::before, .gform_wrapper .gf_step_active:not(:first-child)::before { background: var(--fmc-ink); }
.gform_wrapper .gf_step_number { display: grid; place-items: center; width: 36px; height: 36px; border: 2px solid var(--fmc-rule); border-radius: 50%; background: #fff; font-weight: 700; }
.gform_wrapper .gf_step_active { color: var(--fmc-ink); font-weight: 600; }
.gform_wrapper .gf_step_active .gf_step_number { border-color: var(--fmc-ink); background: var(--fmc-ink); color: #fff; }
.gform_wrapper .gf_step_completed .gf_step_number { border-color: var(--fmc-accent); background: var(--fmc-accent); color: var(--fmc-on-accent); }
.gform_wrapper .gf_step_clear { display: none; }
.gform_wrapper :is(.gform_page_footer, .gform_footer) { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.gform_wrapper .gform_page_footer { justify-content: space-between; margin-top: 24px; padding-top: 18px; border-top: 1px solid var(--fmc-rule); }
.gform_wrapper .gform_page_footer .gform_previous_button { padding: .8rem 1.2rem; border: 0; background: none; color: var(--fmc-ink); font: inherit; font-weight: 600; text-decoration: underline; text-underline-offset: .3em; cursor: pointer; }
.gform_wrapper .gform_page_footer :is(.gform_next_button, .gform_previous_button, .gform_button) { width: auto; min-height: 0; }
.gform_wrapper .gform_page_footer :is(.gform_next_button, .gform_button) { margin-left: auto; }
/* Choice tiles: a radio field with the CSS class fmc-choice-tiles; fmc-choice-tiles--icons adds an icon per choice
   (inc/forms.php, from the choice's name). */
.gform_wrapper .fmc-choice-tiles .gfield_radio { display: flex; flex-wrap: wrap; gap: 12px; }
.gform_wrapper .fmc-choice-tiles .gchoice { position: relative; display: flex; }
.gform_wrapper .fmc-choice-tiles .gchoice input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.gform_wrapper .fmc-choice-tiles .gchoice label { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 52px; margin: 0; padding: 12px 18px; border: 1px solid var(--fmc-rule); border-radius: var(--fmc-radius-img); background: #fff; color: var(--fmc-ink); font-weight: 600; text-align: center; transition: border-color .2s, box-shadow .2s, background-color .2s; }
.gform_wrapper .fmc-choice-tiles--icons .gchoice label { flex-direction: column; width: 124px; min-height: 124px; padding: 14px 10px; }
.gform_wrapper .fmc-choice-icon { display: grid; place-items: center; width: 52px; height: 52px; border-radius: 50%; background: var(--fmc-surface); color: var(--fmc-ink); }
.gform_wrapper .fmc-choice-icon svg { width: 28px; height: 28px; }
.gform_wrapper .fmc-choice-tiles .gchoice:hover label { border-color: var(--fmc-ink); }
.gform_wrapper .fmc-choice-tiles .gchoice input:checked + label { border-color: var(--fmc-ink); background: var(--fmc-surface); box-shadow: inset 0 0 0 2px var(--fmc-ink); }
.gform_wrapper .fmc-choice-tiles .gchoice input:checked + label .fmc-choice-icon { background: var(--fmc-accent); color: var(--fmc-on-accent); }
.gform_wrapper .fmc-choice-tiles .gchoice input:focus-visible + label { outline: 3px solid var(--fm-focus, var(--fmc-accent)); outline-offset: 2px; }
@media (max-width: 479px) {
	.gform_wrapper .gf_step_label { font-size: 12px; }
	.gform_wrapper .fmc-choice-tiles--icons .gfield_radio { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.gform_wrapper .fmc-choice-tiles--icons .gchoice label { width: 100%; }
}
/* Gravity Forms prints its error summary as an h2: keep it a notice, not a section heading. */
.gform_wrapper .gform_validation_errors { margin: 0 0 14px; padding: 12px 16px; border-left: 4px solid #b32d2e; border-radius: var(--fmc-radius-img); background: #fdf2f2; }
.gform_wrapper .gform_validation_errors :is(h2, .gform_submission_error) { margin: 0; font-family: var(--fm-font-body); font-weight: 600; font-size: 15px; line-height: 1.4; color: #b32d2e; }
.fmc-side-card--dark .gform_wrapper :is(.validation_message, .gfield_validation_message) { color: #ffb4b4; }
.fmc-form--inline .gform_wrapper form { display: grid; gap: 12px; align-items: start; }
.fmc-form--inline .gform_wrapper .gform_validation_errors { grid-column: 1 / -1; }
.fmc-form--inline .gform_wrapper .gform_body, .fmc-form--inline .gform_wrapper .gform_footer { margin: 0; }
.fmc-form--inline .gform_wrapper .gfield_label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
@media (min-width: 900px) {
	.fmc-form--inline .gform_wrapper form { grid-template-columns: minmax(0, 1fr) auto; }
	.fmc-form--inline .gform_wrapper .gform_fields { grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); gap: 12px; }
	.fmc-form--inline .gform_wrapper .gfield { grid-column: auto; }
	/* The plugin's terms text (.fm-gf-terms) sits in the footer: footer below the fields, else it squeezes them. */
	.fmc-form--inline .gform_wrapper form:has(.gform_footer .fm-gf-terms) { grid-template-columns: minmax(0, 1fr); }
}

/* Form popups (the parent's fm_form_dialog(): Form Popup buttons and the Book Online popup), restyled
   in the design. */
.fm-dialog { width: min(640px, calc(100% - 32px)); max-height: calc(100dvh - 32px); padding: 0; border: 0; border-radius: var(--fmc-radius-card); background: var(--fmc-paper); color: var(--fmc-ink); box-shadow: 0 24px 60px rgb(0 0 0 / .35); overscroll-behavior: contain; }
.fm-dialog::backdrop { background: color-mix(in srgb, var(--fmc-ink) 70%, transparent); }
.fm-dialog__panel { position: relative; padding: clamp(28px, 5vw, 48px); }
.fm-dialog__title { margin: 0 48px 10px 0; font-family: var(--fm-font-heading); font-weight: var(--fmc-heading-weight); font-size: var(--fmc-h3); line-height: 1.1; text-wrap: balance; }
.fm-dialog__text { margin: 0 0 20px; text-wrap: pretty; }
.fm-dialog__close { position: absolute; top: 16px; right: 16px; display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; border-radius: 50%; background: var(--fmc-surface); color: var(--fmc-ink); cursor: pointer; }
.fm-dialog__close svg { width: 20px; height: 20px; }
.fm-dialog__close:hover { background: var(--fmc-accent); }
.fm-dialog__close:focus-visible { outline: 2px solid var(--fmc-ink); outline-offset: 2px; }

/* Coupon card (template-parts/coupon-card.php): a ticket with a dashed edge. */
.fmc-coupon[class] { position: relative; display: block; padding: 10px; border: 2.5px dashed var(--fmc-ink); border-radius: 10px; background: #fff; color: var(--fmc-ink); box-shadow: 0 12px 24px rgb(34 44 70 / .1); text-align: center; transition: transform .3s ease, box-shadow .3s ease; }
.fmc-coupon:hover { transform: translateY(-6px); box-shadow: 0 24px 44px rgb(34 44 70 / .18); }
.fmc-coupon__inner { display: flex; flex-direction: column; align-items: center; gap: 14px; height: 100%; padding: 40px 22px 30px; border: 1px solid var(--fmc-beige, var(--fmc-accent)); border-radius: 6px; }
.fmc-coupon__mark { display: grid; place-items: center; width: 96px; height: 96px; border-radius: 50%; background: var(--fmc-ink); animation: fmc-flash 2.4s ease-in-out infinite; }
.fmc-coupon__mark-img { width: 58px; height: 58px; object-fit: contain; animation: fmc-flicker 2.4s ease-in-out infinite; }
.fmc-coupon__value { margin: 8px 0 0; font-family: var(--fm-font-heading); font-size: clamp(44px, 4.2vw, 64px); line-height: 1; white-space: nowrap; }
.fmc-coupon__title { display: flex; align-items: center; min-height: 52px; margin: 0; font-family: var(--fm-font-body); font-weight: 600; font-size: 19px; line-height: 1.35; text-transform: uppercase; text-wrap: wrap; color: var(--fm-color-primary); }
.fmc-coupon__text { font-size: 15px; }
.fmc-coupon__text > * { margin: 0; }
.fmc-coupon__rule { align-self: stretch; margin: 6px 0 4px; border: 0; border-top: 2px dashed var(--fmc-beige, var(--fmc-accent)); }
.fmc-coupon .fm-btn[class] { padding: 18px 32px; }
.fmc-coupon__expires { margin: 0; font-weight: 700; font-size: 13px; }
.fmc-coupon__toggle { padding: 4px; border: 0; background: none; color: var(--fm-color-primary); font: inherit; font-weight: 700; font-size: 13px; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.fmc-coupon__terms { align-self: stretch; }
.fmc-coupon__terms p { margin: 0; padding-top: 4px; font-size: 12px; line-height: 1.55; color: var(--fmc-muted); }
.fmc-coupon--compact .fmc-coupon__inner { padding: 28px 18px 22px; gap: 10px; }
.fmc-coupon--compact .fmc-coupon__mark { width: 72px; height: 72px; }
.fmc-coupon--compact .fmc-coupon__mark-img { width: 44px; height: 44px; }
@keyframes fmc-flash { 0%, 100% { box-shadow: 0 0 0 0 transparent; } 50% { box-shadow: 0 0 0 10px color-mix(in srgb, var(--fmc-accent) 22%, transparent), 0 0 34px 6px color-mix(in srgb, var(--fmc-accent) 45%, transparent); } }
@keyframes fmc-flicker { 0%, 100% { filter: brightness(1); } 45% { filter: brightness(1.35) drop-shadow(0 0 8px var(--fmc-glow)); } 50% { filter: brightness(1.1); } 55% { filter: brightness(1.4) drop-shadow(0 0 10px var(--fmc-glow)); } }
@media (prefers-reduced-motion: reduce) { .fmc-coupon__mark, .fmc-coupon__mark-img { animation: none; } }

/* Check list with an accent mark. */
.fmc-checks { display: grid; gap: .625rem; margin: 0; padding: 0; list-style: none; font-size: var(--fmc-text-sm); }
.fmc-checks li { display: flex; gap: .75rem; align-items: baseline; }
.fmc-checks li::before { content: "✦"; color: var(--fmc-accent); flex: none; }

/* Hero (template-parts/hero.php, both hero overrides). */
.fm-section--homepage-hero, .fm-section--internal-hero { padding: 0; }
.fmc-hero { position: relative; isolation: isolate; overflow: hidden; background: var(--fmc-ink); color: #fff; }
.fmc-hero__media { position: absolute; inset: 0; z-index: -2; }
.fmc-hero__slide { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 1.2s ease; }
.fmc-hero__slide.is-active { opacity: 1; }
.fmc-hero::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(var(--fmc-hero-fade, 90deg), color-mix(in srgb, var(--fmc-ink) 97%, transparent) 30%, color-mix(in srgb, var(--fmc-ink) 82%, transparent) 65%, color-mix(in srgb, var(--fmc-ink) 70%, transparent)); }
.fmc-hero--mark-left { --fmc-hero-fade: 270deg; }
.fmc-hero__inner { position: relative; display: flex; align-items: center; min-height: var(--fmc-hero-min, 420px); }
.fmc-hero--home { --fmc-hero-min: 600px; }
.fmc-hero--mark-left .fmc-hero__inner { justify-content: flex-end; }
.fmc-hero__content { position: relative; display: flex; flex-direction: column; gap: 1.5rem; padding-block: 4rem; max-width: min(760px, 100%); }
.fmc-hero--home .fmc-hero__content { padding-block: 4.5rem; }
.fmc-hero__eyebrow { margin-bottom: -.5rem; --fmc-eyebrow-border: var(--fmc-accent); }
.fmc-hero__title { margin: 0; font-size: var(--fmc-h1); line-height: 1.05; color: var(--fmc-hero-title, var(--fmc-accent)); }
.fmc-hero--home .fmc-hero__title { font-size: var(--fmc-h1-home, var(--fmc-h1)); line-height: 1.08; color: #fff; }
.fmc-hero__words { display: block; color: var(--fmc-accent); }
.fmc-hero__words.is-in { animation: fmc-word-in .9s ease both; }
.fmc-hero__text { margin: 0; font-weight: var(--fmc-sub-weight); font-size: var(--fmc-sub-size); line-height: 1.45; text-transform: var(--fmc-sub-transform); color: var(--fmc-accent); text-wrap: balance; }
.fmc-hero .fm-btn[class] { padding: var(--fmc-btn-pad-lg, var(--fmc-btn-pad, var(--fm-btn-pad))); }
.fmc-hero .fm-breadcrumbs ol { margin: 0; }
/* Brand mark with a glow that lights up when the buttons or the mark are hovered (site.js). */
.fmc-hero__mark { position: absolute; top: 50%; display: grid; place-items: center; pointer-events: auto; }
.fmc-hero--mark-left .fmc-hero__mark { left: calc(var(--fm-gutter) - 40px); width: 480px; height: 490px; margin-top: -245px; }
.fmc-hero--mark-right .fmc-hero__mark { right: calc(var(--fm-gutter) + 20px); width: 255px; height: 260px; margin-top: -130px; }
.fmc-hero__mark-img { position: relative; width: 100%; height: 100%; object-fit: contain; filter: drop-shadow(0 0 0 transparent) brightness(.92); transition: filter .5s; }
.fmc-hero__glow, .fmc-hero__spark { position: absolute; left: 50%; border-radius: 50%; pointer-events: none; transform: translate(-50%, -50%); }
.fmc-hero__glow { top: 50%; width: 158%; aspect-ratio: 1; background: radial-gradient(circle, var(--fmc-glow) 0%, color-mix(in srgb, var(--fmc-accent) 15%, transparent) 35%, transparent 62%); opacity: .25; transition: opacity .5s; }
.fmc-hero__spark { top: 55%; width: 35%; aspect-ratio: 1; background: radial-gradient(circle, #fff 0%, color-mix(in srgb, var(--fmc-accent) 30%, #fff) 35%, transparent 70%); opacity: 0; transition: opacity .4s; }
.fmc-hero.is-lit .fmc-hero__glow, .fmc-hero.is-lit .fmc-hero__spark { opacity: 1; }
.fmc-hero.is-lit .fmc-hero__mark-img { filter: drop-shadow(0 0 40px var(--fmc-glow)) brightness(1.12); }
/* The header's Call and schedule buttons light it too; :has() also lights it before the delayed site.js runs. */
:is(.fmc-hero:has(.fm-btn:hover, .fm-btn:focus-visible, .fmc-hero__mark:hover), body:has(.fmc-header .fm-header__actions .fm-btn:hover, .fmc-header .fm-header__actions .fm-btn:focus-visible) .fmc-hero) :is(.fmc-hero__glow, .fmc-hero__spark) { opacity: 1; }
:is(.fmc-hero:has(.fm-btn:hover, .fm-btn:focus-visible, .fmc-hero__mark:hover), body:has(.fmc-header .fm-header__actions .fm-btn:hover, .fmc-header .fm-header__actions .fm-btn:focus-visible) .fmc-hero) .fmc-hero__mark-img { filter: drop-shadow(0 0 40px var(--fmc-glow)) brightness(1.12); }
@media (min-width: 900px) {
	.fmc-hero--mark-left .fmc-hero__content { max-width: min(680px, calc(100% - 460px)); }
	.fmc-hero--mark-right .fmc-hero__content { max-width: min(760px, calc(100% - 420px)); }
}
@media (max-width: 899px) {
	.fmc-hero__mark { display: none; }
	.fmc-hero::before { --fmc-hero-fade: 180deg; }
	.fmc-hero__inner { min-height: 0; }
}
@keyframes fmc-word-in { from { opacity: 0; transform: translateY(10px); filter: blur(4px); } to { opacity: 1; transform: none; filter: none; } }

/* 4. Header ------------------------------------------------------------- */
.fmc-header { background: var(--fmc-header-bg); box-shadow: var(--fmc-header-shadow); }
.fmc-utility { background: var(--fmc-utility-bg); color: var(--fmc-utility-text); font-size: var(--fmc-text-xs); font-weight: 700; }
.fmc-utility__inner { display: flex; align-items: center; justify-content: space-between; gap: .5rem 1.5rem; min-height: 44px; }
.fmc-utility a { color: inherit; }
.fmc-rating { display: flex; align-items: center; gap: .625rem; margin: 0; }
.fmc-rating__badge { display: inline-grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: #fff; flex: none; }
.fmc-rating__badge svg { width: 16px; height: 16px; }
.fmc-rating .fm-stars { display: inline-flex; gap: 1px; color: currentColor; }
.fmc-rating .fm-star svg { width: 12px; height: 12px; fill: currentColor; stroke: none; }
.fmc-rating__sep { opacity: .5; }
.fmc-rating a { text-decoration: underline; }
.fmc-utility__menu { display: flex; align-items: center; list-style: none; margin: 0; padding: 0; }
.fmc-utility__menu li { display: flex; align-items: center; }
.fmc-utility__menu li + li::before { content: ""; width: 1px; height: 14px; margin-inline: 18px; background: currentColor; opacity: .45; }
.fmc-utility__menu a { text-decoration: none; }
.fmc-utility__menu a:hover { text-decoration: underline; }

.fmc-header .fm-header__inner { justify-content: space-between; gap: .75rem; padding-block: 1rem; }
.fmc-header .fm-header__logo { margin-right: 0; }
.fmc-tagline { display: flex; align-items: center; gap: .375rem; margin: 0; font-size: .75rem; font-weight: 700; line-height: 1.3; white-space: nowrap; }
.fmc-tagline .fm-icon { width: 22px; height: 22px; flex: none; color: var(--fm-color-primary); }
.fmc-tagline__link { display: flex; align-items: center; gap: .375rem; color: inherit; text-decoration: underline; text-decoration-color: transparent; text-underline-offset: 3px; transition: text-decoration-color .2s; }
.fmc-tagline__link:hover { text-decoration-color: currentColor; }
.fmc-tagline__link:focus-visible { outline: 3px solid var(--fm-focus); outline-offset: 3px; border-radius: 2px; }
@media (min-width: 1081px) {
	.fmc-header .fm-nav__list { gap: .875rem; }
	.fmc-header .fm-nav__list > li > a { padding: .5rem 0; font-size: var(--fmc-text-xs); font-weight: 700; white-space: nowrap; }
	.fmc-header .fm-nav__list > .menu-item-has-children > a { display: flex; align-items: center; gap: .25rem; }
	.fmc-header .fm-nav__list > .menu-item-has-children > a::after { content: "▾"; font-size: 9px; }
	.fmc-header .fm-nav__list .sub-menu a { font-size: var(--fmc-text-sm); }
	/* Third level: a flyout beside its item (to the left under the last two top-level items, so it stays
	   on screen); a ▸ marks items that have one. */
	.fmc-header .fm-nav__list .sub-menu .menu-item-has-children > a { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
	.fmc-header .fm-nav__list .sub-menu .menu-item-has-children > a::after { content: "▸"; font-size: 10px; }
	.fmc-header .fm-nav__list .sub-menu .sub-menu { top: -.5rem; left: 100%; transform: translateX(6px); }
	.fmc-header .fm-nav__list > li:nth-last-child(-n+2) .sub-menu .sub-menu { left: auto; right: 100%; transform: translateX(-6px); }
	.fmc-header .fm-nav__list .sub-menu li:is(:hover, :focus-within) > .sub-menu { transform: none; }
}
@media (max-width: 1240px) { .fmc-tagline { display: none; } }
/* Below 520px the parent hides the phone button's label; show a phone icon even when the button
   variant has no icon. */
.fmc-header .fm-header__phone::before { content: ""; display: none; width: 20px; height: 20px; background: currentColor; -webkit-mask: var(--fmc-phone-icon) center / contain no-repeat; mask: var(--fmc-phone-icon) center / contain no-repeat; }
.fmc-header { --fmc-phone-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.1 4.2 2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1.9.4 1.8.7 2.7a2 2 0 0 1-.5 2.1L8 9.8a16 16 0 0 0 6 6l1.3-1.3a2 2 0 0 1 2.1-.4c.9.3 1.8.6 2.7.7a2 2 0 0 1 1.7 2z'/%3E%3C/svg%3E"); }
@media (max-width: 520px) { .fmc-header .fm-header__phone:not(:has(.fm-btn__icon))::before { display: block; } .fmc-header .fm-header__phone[class] { padding: 12px; } }
@media (max-width: 1080px) { .fmc-utility__nav { display: none; } .fmc-utility__inner { justify-content: center; } }
/* Below 1080px the bar (in the sticky header) is a Book Online link; the rating stays from 640px. */
.fmc-utility__book { display: none; }
@media (min-width: 1081px) { .fmc-utility--mobile { display: none; } }
@media (max-width: 1080px) {
	.fmc-utility__book { display: flex; align-items: center; justify-content: center; gap: .4rem; min-height: 40px; padding-inline: .5rem; font-size: var(--fmc-text-sm); text-decoration: none; }
	.fmc-utility__book:focus-visible { outline: 3px solid var(--fm-focus); outline-offset: -3px; }
}
@media (max-width: 639px) { .fmc-rating { display: none; } .fmc-utility__book { flex: 1; } }

/* Mobile menu (assets/js/site.js): fills the screen under the header and scrolls on its own, the page
   behind it dimmed and still; submenus closed until their arrow is tapped, one open at a time; call
   and schedule at the foot. */
.fmc-sub-toggle, .fmc-nav__cta { display: none; }
@media (max-width: 1080px) {
	.fmc-header .fm-nav { max-height: calc(100vh - var(--fmc-header-h, 128px)); max-height: calc(100dvh - var(--fmc-header-h, 128px)); overflow-y: auto; overscroll-behavior: contain; padding-bottom: calc(1.5rem + env(safe-area-inset-bottom)); border-top: 1px solid var(--fm-rule); }
	.fmc-header .fm-nav.is-open { animation: fmc-menu-in .22s ease; }
	body.fm-menu-open { overflow: hidden; }
	body.fm-menu-open::after { content: ""; position: fixed; inset: 0; z-index: 99; background: color-mix(in srgb, var(--fmc-ink) 55%, transparent); }
	.fmc-header .fm-nav__list > li > a { display: flex; align-items: center; min-height: 54px; font-size: 17px; font-weight: 700; }
	.fmc-header .fm-nav__list > .menu-item-has-children { display: grid; grid-template-columns: minmax(0, 1fr) auto; }
	.fmc-header .fm-nav__list a { border-radius: 0; }
	.fmc-header .fm-nav__list > .menu-item-has-children > .sub-menu { grid-column: 1 / -1; margin: 0 0 8px; padding: 4px 0 4px 14px; border-left: 3px solid var(--fmc-accent); background: var(--fmc-surface); }
	.fmc-header .fm-nav__list .sub-menu a { display: flex; align-items: center; min-height: 46px; font-size: 15px; font-weight: 600; }
	.fmc-header .fm-nav__list .sub-menu li:last-child > a { border-bottom: 0; }
	/* Third level: indented under its item, always open. */
	.fmc-header .fm-nav__list .sub-menu .sub-menu { margin: 0 0 6px; padding: 0 0 0 14px; border-left: 2px solid var(--fmc-rule); background: none; }
	.fmc-header .fm-nav__list .sub-menu .sub-menu a { min-height: 40px; font-size: 14px; font-weight: 500; }
	.fmc-header .fm-nav__list > .menu-item-has-children:has(> .fmc-sub-toggle):not(.is-sub-open) > .sub-menu { display: none; }
	.fmc-header .fm-nav__list > .is-sub-open > .sub-menu { animation: fmc-menu-in .2s ease; }
	.fmc-sub-toggle { display: grid; place-items: center; width: 54px; padding: 0; border: 0; border-bottom: 1px solid var(--fm-rule); background: none; color: inherit; cursor: pointer; }
	.fmc-sub-toggle svg { width: 22px; height: 22px; transition: transform .25s ease; }
	.is-sub-open > .fmc-sub-toggle { color: var(--fm-color-primary); }
	.is-sub-open > .fmc-sub-toggle svg { transform: rotate(180deg); }
	.fmc-sub-toggle:focus-visible { outline: 3px solid var(--fm-focus); outline-offset: -3px; }
	.fmc-nav__cta { display: grid; gap: 10px; margin-top: 22px; }
	.fmc-nav__cta .fm-btn[class] { justify-content: center; width: 100%; }
}
@keyframes fmc-menu-in { from { opacity: 0; transform: translateY(-6px); } }
@media (prefers-reduced-motion: reduce) { .fmc-sub-toggle svg { transition: none; } .fmc-header .fm-nav.is-open, .fmc-header .fm-nav__list > .is-sub-open > .sub-menu { animation: none; } }

/* 5. Footer ------------------------------------------------------------- */
.fmc-footer { background: var(--fmc-footer-bg); color: var(--fmc-footer-text); padding-top: clamp(3.5rem, 7vw, 5.5rem); }
.fmc-footer__grid { display: grid; gap: 3rem 3.5rem; padding-bottom: clamp(2.5rem, 5vw, 4rem); }
@media (min-width: 640px) { .fmc-footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1081px) { .fmc-footer__grid { grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.3fr); } }
.fmc-footer__brand { display: flex; flex-direction: column; gap: 1.375rem; }
.fmc-footer__logo { align-self: flex-start; padding-bottom: 1.5rem; border-bottom: 2px solid color-mix(in srgb, currentColor 18%, transparent); width: 100%; }
.fmc-footer__logo img { height: 110px; width: auto; }
.fmc-footer__item { display: flex; align-items: center; gap: .875rem; margin: 0; font-size: var(--fmc-text-sm); line-height: 1.5; }
.fmc-footer__item a { color: inherit; text-decoration: none; }
.fmc-footer__icon { display: inline-grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; background: var(--fmc-accent); color: var(--fmc-on-accent); flex: none; }
.fmc-footer__icon svg { width: 22px; height: 22px; }
.fmc-footer__brand .fm-actions { margin-top: .25rem; }
.fmc-footer__title { margin: 0; font-size: 1.25rem; font-weight: var(--fmc-heading-weight); color: var(--fmc-accent); }
.fmc-footer__menu { display: flex; flex-direction: column; gap: .625rem; }
.fmc-footer__menu ul { display: flex; flex-direction: column; justify-content: space-between; gap: .625rem; flex: 1; list-style: none; margin: 0; padding: 0; }
.fmc-footer__menu li + li { margin: 0; }
.fmc-footer__menu a { color: inherit; font-size: var(--fmc-text-sm); text-decoration: none; transition: color .2s; }
.fmc-footer__menu a:hover { color: var(--fmc-accent); text-decoration: none; }
.fmc-footer__side { display: flex; flex-direction: column; justify-content: space-between; gap: 1.75rem; }
.fmc-hours-card { overflow: hidden; border-radius: 14px; background: var(--fmc-paper); color: var(--fmc-ink); box-shadow: 0 18px 40px rgb(0 0 0 / .25); }
.fmc-hours-card__title { margin: 0; padding: 1.125rem 1.75rem; background: var(--fmc-accent); color: var(--fmc-on-accent); font-size: 1.375rem; font-weight: var(--fmc-heading-weight); }
.fmc-hours-card__list { margin: 0; padding: .875rem 1.75rem 1.125rem; }
.fmc-hours-card__list div { display: grid; grid-template-columns: 1fr auto; gap: 1rem; padding: .625rem 0; border-bottom: 2px solid var(--fmc-rule-soft); }
.fmc-hours-card__list div:last-child { border-bottom: 0; }
.fmc-hours-card__list dt { font-weight: 400; }
.fmc-hours-card__list dd { margin: 0; font-weight: 700; text-align: right; }
.fmc-footer__connect { display: flex; flex-direction: column; gap: .875rem; }
.fmc-social[class] { margin-top: 0 !important; gap: .625rem; }
.fmc-social a { width: 48px; height: 48px; border: 0; background: var(--fmc-accent); color: var(--fmc-on-accent); transition: box-shadow .3s ease, transform .3s ease; }
.fmc-social a:hover { box-shadow: 0 0 22px 4px var(--fmc-glow); transform: translateY(-2px); }
.fmc-footer__legal { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem 1.5rem; padding-block: 1.625rem; border-top: 2px solid color-mix(in srgb, currentColor 15%, transparent); font-size: var(--fmc-text-xs); }
.fmc-footer__legal p { margin: 0; }
.fmc-footer__credit::before { content: "| "; }
.fmc-footer__credit a { color: var(--fmc-accent); font-weight: 700; text-decoration: none; }
.fmc-footer__legal-menu { display: flex; align-items: center; list-style: none; margin: 0; padding: 0; }
.fmc-footer__legal-menu li { display: flex; align-items: center; margin: 0; }
.fmc-footer__legal-menu li + li::before { content: ""; width: 2px; height: 14px; margin-inline: 1rem; background: currentColor; opacity: .35; }
.fmc-footer__legal-menu a { color: inherit; text-decoration: none; }
.fmc-footer__legal-menu a:hover { text-decoration: underline; }

/* 6. Blog listing (template-parts/post-card.php) ------------------------ */
/* Three across, the last row centered; every card the same shape, Read More at its foot. */
.fm-post-grid { display: flex; flex-wrap: wrap; justify-content: center; gap: 28px; margin: 0; padding: 0; list-style: none; }
.fm-post-grid > .fmc-post-card { flex: 0 1 100%; }
@media (min-width: 640px) { .fm-post-grid > .fmc-post-card { flex-basis: calc((100% - 28px) / 2); } }
@media (min-width: 1000px) { .fm-post-grid > .fmc-post-card { flex-basis: calc((100% - 56px) / 3); } }
.fmc-post-card { position: relative; display: flex; flex-direction: column; min-width: 0; overflow: hidden; border-radius: var(--fmc-radius-card); background: var(--fmc-paper); color: var(--fmc-ink); box-shadow: var(--fmc-shadow-card); transition: transform .3s ease, box-shadow .3s ease; }
.fmc-post-card:hover, .fmc-post-card:focus-within { transform: translateY(-4px); box-shadow: 0 18px 40px rgb(0 0 0 / .12); }
.fmc-post-card__media { position: relative; aspect-ratio: 3 / 2; overflow: hidden; background: var(--fmc-ink); }
.fmc-post-card__media::after { content: ""; position: absolute; inset: 14px; border: 1px solid var(--fmc-line); pointer-events: none; }
.fmc-post-card .fm-post-card__image { display: block; width: 100%; height: 100%; aspect-ratio: auto; object-fit: cover; transition: transform .6s ease; }
.fmc-post-card:hover .fm-post-card__image { transform: scale(1.05); }
.fmc-post-card__placeholder { display: grid; place-items: center; height: 100%; }
.fmc-post-card__mark { width: 30%; max-width: 110px; height: auto; color: var(--fmc-accent); }
.fmc-post-card__body { display: flex; flex: 1; flex-direction: column; gap: 10px; padding: 26px 28px 28px; }
.fmc-post-card__body > * { margin: 0; }
.fmc-post-card__cat { font-family: var(--fmc-eyebrow-font, inherit); font-size: 13px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--fm-color-primary); }
.fmc-post-card__title { font-size: clamp(21px, 1.875vw, 24px); line-height: 1.2; text-wrap: balance; }
.fmc-post-card__title a { color: inherit; text-decoration: none; }
.fmc-post-card .fm-post-card__meta { margin: 0; font-size: 14px; opacity: .7; }
.fmc-post-card__excerpt { font-size: 16px; line-height: 1.6; text-wrap: pretty; }
.fmc-post-card__more { display: inline-flex; align-items: center; gap: 8px; margin-top: auto; padding-top: 6px; font-weight: 700; font-size: 15px; color: var(--fm-color-primary); }
.fmc-post-card__more svg { width: 16px; height: 16px; transition: transform .25s ease; }
.fmc-post-card:hover .fmc-post-card__more svg { transform: translateX(4px); }
.fmc-post-card:focus-within { outline: 3px solid var(--fm-focus); outline-offset: 3px; }
.fmc-post-card__title a:focus-visible { outline: none; }

/* Pagination: centered round page buttons, arrows for previous / next. */
.navigation.pagination { margin-top: clamp(40px, 5vw, 64px); }
.navigation.pagination .nav-links { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 10px; }
.navigation.pagination .page-numbers { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-width: 48px; height: 48px; padding: 0 16px; border: 2px solid var(--fmc-ink); border-radius: var(--fmc-radius-pill, 999px); color: var(--fmc-ink); font-weight: 700; text-decoration: none; transition: background-color .2s, color .2s, border-color .2s; }
.navigation.pagination a.page-numbers:hover { background: var(--fmc-ink); color: #fff; }
.navigation.pagination .page-numbers.current { background: var(--fmc-accent); border-color: var(--fmc-accent); color: var(--fmc-ink); }
.navigation.pagination .page-numbers.dots { border-color: transparent; min-width: 0; padding: 0 4px; }
.navigation.pagination .page-numbers:focus-visible { outline: 3px solid var(--fm-focus); outline-offset: 3px; }
@media (prefers-reduced-motion: reduce) { .fmc-post-card, .fmc-post-card .fm-post-card__image, .fmc-post-card__more svg { transition: none; } .fmc-post-card:hover { transform: none; } }
.navigation.pagination .next::after { content: "→"; }
.navigation.pagination .prev::before { content: "←"; }
.navigation.pagination :is(.next, .prev) { white-space: nowrap; }
/* Phones: Previous / Next as arrows only (the words stay for screen readers). */
@media (max-width: 479px) {
	.navigation.pagination .nav-links { gap: 8px; }
	.navigation.pagination :is(.next, .prev) { width: 48px; padding: 0; font-size: 0; }
	.navigation.pagination .next::after, .navigation.pagination .prev::before { font-size: 18px; }
}

/* 7. Blog post (single.php) --------------------------------------------- */
.fmc-post__nav { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: clamp(28px, 4vw, 44px); }
.fmc-post__pn { display: flex; flex-wrap: wrap; gap: 10px; }
.fmc-post__step { display: inline-flex; align-items: center; min-height: 44px; padding: 0 20px; border-radius: var(--fmc-radius-pill, 999px); background: var(--fmc-ink); color: #fff; font-weight: 700; font-size: 15px; text-decoration: none; transition: background-color .2s, color .2s; }
.fmc-post__step:hover { background: var(--fmc-accent); color: var(--fmc-ink); }
.fmc-post__step:focus-visible { outline: 3px solid var(--fm-focus); outline-offset: 3px; }
.fmc-post__image { margin: 0 0 8px; }
.fmc-post__image img { display: block; width: 100%; height: auto; border-radius: var(--fmc-radius-img); outline: 1px solid var(--fmc-line); outline-offset: -16px; }
.fmc-post__content h2 { margin-top: 12px; }

/* Recent posts in the sidebar. */
.fmc-recent { display: flex; flex-direction: column; gap: 14px; }
.fmc-recent__title { margin: 0; font-family: var(--fm-font-heading); font-size: 26px; line-height: 1.15; color: var(--fmc-ink); }
.fmc-recent__list { display: flex; flex-direction: column; gap: 12px; margin: 0; padding: 0; list-style: none; }
.fmc-recent__item { position: relative; display: flex; align-items: center; gap: 14px; padding: 10px; border-radius: var(--fmc-radius-card); background: var(--fmc-ink); color: #fff; transition: transform .25s ease, background-color .25s; }
.fmc-recent__item:hover, .fmc-recent__item:focus-within { transform: translateX(4px); background: color-mix(in srgb, var(--fmc-ink) 88%, var(--fmc-accent)); }
.fmc-recent__img { flex: none; width: 76px; height: 60px; object-fit: cover; border-radius: calc(var(--fmc-radius-img) / 2); }
.fmc-recent__link { color: inherit; font-weight: 700; font-size: 15px; line-height: 1.35; text-decoration: none; }
.fmc-recent__link::after { content: ""; position: absolute; inset: 0; }
.fmc-recent__item:focus-within { outline: 3px solid var(--fm-focus); outline-offset: 2px; }
.fmc-recent__link:focus-visible { outline: none; }
@media (prefers-reduced-motion: reduce) { .fmc-recent__item { transition: none; } .fmc-recent__item:hover { transform: none; } }
