/*
Theme Name: Free Spirits
Theme URI: https://www.freespiritshawaii.com/
Author: Free Spirits Hawaii
Description: Lightweight theme for Free Spirits Hawaii mobile bartending. Core blocks only, no page builder.
Version: 1.0.24
Requires at least: 6.4
Requires PHP: 8.0
Text Domain: freespirits
*/

/* Montserrat (SIL Open Font License), self-hosted variable font: one file covers weights 400-700. */
@font-face {
	font-family: "Montserrat";
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	src: url(assets/fonts/montserrat-latin.woff2) format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: "Montserrat";
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	src: url(assets/fonts/montserrat-latin-ext.woff2) format("woff2");
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* Layout: full-width bands (hero, sections) with a centered 1180px content column; cards and columns collapse to one column under 760px. */
:root {
	--fs-blue: #1795ea;
	--fs-blue-dark: #0f6fb0;
	--fs-accent: #3582ef;
	--fs-slate: #3d4459;
	--fs-ink: #2a2f3a;
	--fs-text: #353535;
	--fs-muted: #5f6676;
	--fs-sky: #bae7ff;
	--fs-mist: #f4f9fd;
	--fs-line: #e3e9ef;
	--fs-white: #ffffff;
	/* Sunset orange is reserved for the quote action (any button linking to /hire-us/). 4.8:1 with white text. */
	--fs-cta: #c8470f;
	--fs-cta-dark: #a8380b;
	--fs-navy: #0b3a5c;
	--fs-font: "Montserrat", "Helvetica Neue", Arial, sans-serif;
	--fs-radius: 10px;
	--fs-wrap: 1180px;
	--fs-gutter: max(16px, env(safe-area-inset-left, 0px));
	--fs-shadow: 0 6px 24px rgba(23, 41, 64, .08);
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body {
	margin: 0;
	font-family: var(--fs-font);
	font-size: 1rem;
	line-height: 1.65;
	color: var(--fs-text);
	background: var(--fs-white);
}
img { max-width: 100%; height: auto; }
a { color: var(--fs-blue-dark); }
a:hover { color: var(--fs-blue); }
:focus-visible { outline: 3px solid var(--fs-accent); outline-offset: 2px; }
h1, h2, h3, h4 { color: var(--fs-ink); line-height: 1.2; margin: 0 0 .5em; text-wrap: balance; }
h1 { font-size: clamp(2rem, 4.6vw, 3.25rem); font-weight: 700; }
h2 { font-size: clamp(1.6rem, 3.2vw, 2.35rem); font-weight: 700; }
h3 { font-size: 1.2rem; font-weight: 700; }
p { margin: 0 0 1em; }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip-link:focus { position: fixed; top: 8px; left: 8px; z-index: 100; width: auto; height: auto; clip: auto; padding: 8px 14px; background: var(--fs-white); color: var(--fs-ink); border-radius: 6px; }

/* ---------- Header ---------- */
.fs-header {
	position: sticky;
	top: 0;
	z-index: 50;
	background: var(--fs-blue);
	color: var(--fs-white);
	box-shadow: 0 2px 10px rgba(0, 0, 0, .08);
}
.admin-bar .fs-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .fs-header { top: 0; } }
.fs-header__inner {
	max-width: var(--fs-wrap);
	margin: 0 auto;
	padding: 10px var(--fs-gutter);
	display: flex;
	align-items: center;
	gap: 20px;
}
.fs-logo { display: inline-flex; flex: 0 0 auto; }
.fs-logo img { width: 92px; height: auto; display: block; }
.fs-nav { margin-left: auto; }
.fs-nav ul { list-style: none; margin: 0; padding: 0; }
.fs-nav > ul { display: flex; align-items: center; gap: 2px; }
.fs-nav li { position: relative; }
.fs-nav a {
	display: block;
	padding: 10px 12px;
	color: var(--fs-white);
	text-decoration: none;
	font-weight: 600;
	font-size: .95rem;
	border-radius: 6px;
}
.fs-nav > ul > li > a { white-space: nowrap; }
/* Mid-size screens: tighter menu, and the call button shows just the phone icon, so everything fits on one line. */
@media (min-width: 961px) and (max-width: 1440px) {
	.fs-header__inner { gap: 12px; }
	.fs-nav a { padding: 10px 8px; font-size: .9rem; }
}
@media (min-width: 961px) and (max-width: 1180px) {
	.fs-call { padding: 10px; }
	.fs-call span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
}
.fs-nav a:hover, .fs-nav .current-menu-item > a { background: rgba(255, 255, 255, .16); color: var(--fs-white); }
.fs-nav .sub-menu {
	position: absolute;
	top: 100%;
	left: 0;
	min-width: 230px;
	padding: 8px;
	background: var(--fs-white);
	border-radius: var(--fs-radius);
	box-shadow: var(--fs-shadow);
	visibility: hidden;
	opacity: 0;
	transform: translateY(6px);
	transition: opacity .15s, transform .15s, visibility .15s;
}
.fs-nav li:hover > .sub-menu, .fs-nav li:focus-within > .sub-menu { visibility: visible; opacity: 1; transform: none; }
.fs-nav .sub-menu a { color: var(--fs-ink); font-weight: 500; }
.fs-nav .sub-menu a:hover { background: var(--fs-mist); color: var(--fs-blue-dark); }
.fs-nav .menu-item-has-children > a::after { content: " \25BE"; font-size: .8em; }
.fs-call {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 10px 16px;
	background: var(--fs-white);
	color: var(--fs-blue-dark);
	border-radius: 999px;
	font-weight: 700;
	text-decoration: none;
	white-space: nowrap;
}
.fs-call:hover { background: var(--fs-sky); color: var(--fs-ink); }
.fs-call svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.fs-quote {
	flex: 0 0 auto;
	padding: 10px 18px;
	background: var(--fs-cta);
	color: var(--fs-white);
	border-radius: 999px;
	font-weight: 700;
	text-decoration: none;
	white-space: nowrap;
	box-shadow: 0 4px 14px rgba(200, 71, 15, .35);
}
.fs-quote:hover { background: var(--fs-cta-dark); color: var(--fs-white); }
.fs-menu-toggle {
	display: none;
	margin-left: auto;
	background: transparent;
	border: 2px solid rgba(255, 255, 255, .7);
	color: var(--fs-white);
	border-radius: 8px;
	padding: 8px 12px;
	font: inherit;
	font-weight: 700;
	cursor: pointer;
}
@media (max-width: 960px) {
	.fs-header__inner { flex-wrap: wrap; }
	.fs-menu-toggle { display: inline-block; }
	.fs-quote { order: 1; margin-left: auto; padding: 8px 14px; font-size: .9rem; }
	.fs-call { order: 2; padding: 8px 12px; font-size: .9rem; }
	.fs-menu-toggle { order: 2; margin-left: 0; }
	.fs-nav { order: 3; flex-basis: 100%; display: none; margin: 0; }
	.fs-nav.is-open { display: block; }
	.fs-nav > ul { flex-direction: column; align-items: stretch; padding-bottom: 8px; }
	.fs-nav .sub-menu { position: static; visibility: visible; opacity: 1; transform: none; box-shadow: none; background: transparent; padding: 0 0 0 14px; min-width: 0; }
	.fs-nav .sub-menu a { color: var(--fs-white); }
	.fs-nav .sub-menu a:hover { background: rgba(255, 255, 255, .16); color: var(--fs-white); }
}
/* Phones: the call button shrinks to a phone icon so the logo, quote button and menu fit on one row. */
@media (max-width: 600px) {
	.fs-call { padding: 9px; }
	.fs-call span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
	.fs-header__inner { gap: 10px; }
	.fs-logo img { width: 76px; }
}

/* Pages that open with a photo hero: the header sits clear over the photo and turns solid once you scroll (assets/menu.js). */
.fs-has-hero .fs-header { position: fixed; left: 0; right: 0; background: transparent; box-shadow: none; transition: background .25s, box-shadow .25s; }
.fs-has-hero .fs-header::before { content: ""; position: absolute; inset: 0 0 -40px; background: linear-gradient(rgba(0, 0, 0, .45), rgba(0, 0, 0, 0)); pointer-events: none; transition: opacity .25s; }
.fs-has-hero .fs-header.is-solid, .fs-has-hero .fs-header:has(.fs-nav.is-open) { background: var(--fs-blue); box-shadow: 0 2px 10px rgba(0, 0, 0, .08); }
.fs-has-hero .fs-header.is-solid::before, .fs-has-hero .fs-header:has(.fs-nav.is-open)::before { opacity: 0; }
@media (max-width: 782px) { .admin-bar.fs-has-hero .fs-header { top: 46px; } }
.fs-has-hero .wp-block-cover.fs-hero:first-child { padding-top: 150px; }

/* ---------- Main layout ---------- */
.fs-main { min-height: 50vh; }
.fs-main > .entry-content > *:not(.alignfull),
.fs-page-header .fs-wrap,
.fs-wrap {
	max-width: var(--fs-wrap);
	margin-left: auto;
	margin-right: auto;
	padding-left: var(--fs-gutter);
	padding-right: var(--fs-gutter);
}
.fs-main > .entry-content > .alignfull { margin-left: 0; margin-right: 0; }
.fs-main > .entry-content > *:first-child:not(.alignfull) { margin-top: 48px; }
.fs-main > .entry-content > *:last-child:not(.alignfull) { margin-bottom: 64px; }
.fs-page-header { background: var(--fs-mist); padding: 48px 0 32px; }
.fs-page-header h1 { margin: 0; }

/* Full-width section bands built from core Group blocks */
.fs-section { padding: clamp(48px, 7vw, 88px) var(--fs-gutter); }
.fs-section > * { max-width: var(--fs-wrap); margin-left: auto; margin-right: auto; }
.fs-section--mist { background: var(--fs-mist); }
.fs-section--white { background: var(--fs-white); }
.fs-section--slate { background: var(--fs-slate); color: #e9edf3; }
.fs-section--slate h2, .fs-section--slate h3 { color: var(--fs-white); }
.fs-section--blue { background: var(--fs-blue); color: var(--fs-white); }
.fs-section--blue h2, .fs-section--blue h3 { color: var(--fs-white); }
.fs-eyebrow { text-transform: uppercase; letter-spacing: .08em; font-size: .8rem; font-weight: 700; color: var(--fs-blue-dark); margin-bottom: .4em; }
.fs-section--blue .fs-eyebrow, .fs-section--slate .fs-eyebrow { color: var(--fs-sky); }
.fs-lede { font-size: 1.125rem; color: var(--fs-muted); max-width: 62ch; }
.has-text-align-center.fs-lede, .fs-center .fs-lede { margin-left: auto; margin-right: auto; }

/* Hero (core Cover block with class fs-hero) */
.wp-block-cover.fs-hero { min-height: min(78vh, 680px); padding: 96px var(--fs-gutter) 80px; }
.fs-hero .wp-block-cover__inner-container { max-width: var(--fs-wrap); margin: 0 auto; color: var(--fs-white); }
.fs-hero h1 { color: var(--fs-white); max-width: 16ch; text-shadow: 0 2px 16px rgba(0, 0, 0, .35); }
.fs-hero p { font-size: 1.15rem; max-width: 52ch; color: #f2f6fa; text-shadow: 0 1px 10px rgba(0, 0, 0, .35); }
/* Shade only where the text sits (left on wide screens, lower half on phones) so more of the photo shows.
   Replaces the Cover block's flat 60% black. */
.fs-hero:not(.fs-hero--split) .wp-block-cover__background { background: linear-gradient(180deg, rgba(6, 24, 42, .3) 0%, rgba(6, 24, 42, .5) 45%, rgba(6, 24, 42, .66) 100%) !important; opacity: 1 !important; }
@media (min-width: 761px) {
	.fs-hero:not(.fs-hero--split) .wp-block-cover__background { background: linear-gradient(90deg, rgba(6, 24, 42, .68) 0%, rgba(6, 24, 42, .48) 40%, rgba(6, 24, 42, .16) 75%, rgba(6, 24, 42, .06) 100%) !important; }
}
.fs-hero .fs-badges { display: flex; flex-wrap: wrap; gap: 8px; margin: 18px 0 24px; padding: 0; list-style: none; }
.fs-hero .fs-badges li { display: inline-flex; align-items: center; gap: 8px; background: rgba(255, 255, 255, .14); border: 1px solid rgba(255, 255, 255, .35); border-radius: 999px; padding: 7px 14px 7px 10px; font-size: .9rem; font-weight: 600; -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.fs-hero .fs-badges .fs-ico { width: 18px; height: 18px; color: var(--fs-sky); }
/* Home hero: on wider screens the photo fills the right two-thirds and fades into deep blue behind the text. */
.fs-hero--split { background: #06182a; }
.fs-hero--split .wp-block-cover__background { background: linear-gradient(rgba(6, 24, 42, .38), rgba(6, 24, 42, .7)) !important; opacity: 1 !important; }
@media (min-width: 761px) {
	.fs-hero--split .wp-block-cover__image-background { left: 36% !important; width: 64% !important; }
	.fs-hero--split .wp-block-cover__background { background: linear-gradient(90deg, #06182a 0%, #06182a 36%, rgba(6, 24, 42, .55) 43%, rgba(6, 24, 42, .08) 62%, rgba(6, 24, 42, 0) 100%) !important; }
}

/* Line icons for badges and stats (drawn by fs_badge_icon() in functions.php). */
.fs-ico { width: 1.1em; height: 1.1em; flex: none; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }

/* Buttons */
.wp-block-button__link, .fs-btn {
	display: inline-block;
	background: var(--fs-blue);
	color: var(--fs-white);
	border-radius: 999px;
	padding: 14px 26px;
	font-weight: 700;
	text-decoration: none;
	border: 2px solid var(--fs-blue);
	transition: background .15s, color .15s;
}
.wp-block-button__link:hover, .fs-btn:hover { background: var(--fs-blue-dark); border-color: var(--fs-blue-dark); color: var(--fs-white); }
.is-style-outline .wp-block-button__link { background: transparent; color: var(--fs-blue-dark); }
.is-style-outline .wp-block-button__link:hover { background: var(--fs-blue); color: var(--fs-white); }
.fs-hero .is-style-outline .wp-block-button__link, .fs-section--blue .is-style-outline .wp-block-button__link { color: var(--fs-white); border-color: var(--fs-white); }
.fs-section--blue .wp-block-button:not(.is-style-outline) .wp-block-button__link { background: var(--fs-white); color: var(--fs-blue-dark); border-color: var(--fs-white); }
.wp-block-buttons { display: flex; flex-wrap: wrap; gap: 12px; }
/* Quote buttons are always sunset orange, filled, on any background. */
.wp-block-button .wp-block-button__link[href*="/hire-us"], .fs-btn--quote {
	background: var(--fs-cta) !important;
	border-color: var(--fs-cta) !important;
	color: var(--fs-white) !important;
	box-shadow: 0 6px 18px rgba(200, 71, 15, .3);
}
.wp-block-button .wp-block-button__link[href*="/hire-us"]:hover, .fs-btn--quote:hover { background: var(--fs-cta-dark) !important; border-color: var(--fs-cta-dark) !important; }

/* Stats strip */
.fs-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 16px; margin-top: 24px; }
.fs-stats p { margin: 0; background: var(--fs-white); border: 1px solid var(--fs-line); border-radius: var(--fs-radius); padding: 18px; text-align: center; color: var(--fs-muted); font-size: .95rem; }
.fs-stats strong { display: block; font-size: 1.9rem; color: var(--fs-blue-dark); line-height: 1.1; }
.fs-stats .fs-ico { box-sizing: content-box; display: block; width: 24px; height: 24px; margin: 0 auto 12px; padding: 12px; border-radius: 50%; background: #e8f5fe; color: var(--fs-blue); }
/* Stat band: the same stats as one bold ocean-blue strip. */
.fs-statband { background: linear-gradient(115deg, var(--fs-navy) 0%, #0f6fb0 100%); color: var(--fs-white); padding-top: 44px; padding-bottom: 44px; }
.fs-statband .fs-stats { margin: 0; gap: 0; }
.fs-statband .fs-stats p { background: transparent; border: 0; border-radius: 0; color: #cfe8fb; padding: 10px 14px; }
.fs-statband .fs-stats p + p { border-left: 1px solid rgba(255, 255, 255, .16); }
.fs-statband .fs-stats strong { color: var(--fs-white); font-size: clamp(1.6rem, 2.8vw, 2.4rem); white-space: nowrap; }
.fs-statband .fs-stats .fs-ico { background: rgba(255, 255, 255, .12); color: var(--fs-sky); }
@media (max-width: 760px) {
	.fs-statband .fs-stats { grid-template-columns: 1fr 1fr; row-gap: 12px; }
	.fs-statband .fs-stats p + p { border-left: 0; }
	.fs-statband .fs-stats p:last-child { grid-column: 1 / -1; }
}

/* How it works: three numbered steps */
.fs-steps { list-style: none; margin: 32px auto 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; counter-reset: step; position: relative; }
.fs-steps::before { content: ""; position: absolute; top: 28px; left: 16%; right: 16%; border-top: 2px dashed var(--fs-line); }
.fs-steps li { position: relative; text-align: center; padding: 0 8px; }
.fs-steps li::before { counter-increment: step; content: counter(step); display: flex; align-items: center; justify-content: center; width: 56px; height: 56px; margin: 0 auto 16px; border-radius: 50%; background: var(--fs-blue); color: var(--fs-white); font-weight: 800; font-size: 1.4rem; box-shadow: 0 0 0 8px var(--fs-white), 0 8px 20px rgba(23, 149, 234, .3); position: relative; }
.fs-steps h3 { margin-bottom: 6px; }
.fs-steps p { color: var(--fs-muted); margin: 0; }
@media (max-width: 760px) {
	.fs-steps { grid-template-columns: 1fr; gap: 24px; }
	.fs-steps::before { top: 28px; bottom: 28px; left: 50%; right: auto; border-top: 0; border-left: 2px dashed var(--fs-line); }
}

/* Signature cocktails: color cards, no stock photos */
.fs-drinks { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; margin-top: 32px; }
.fs-drink { border-radius: 14px; overflow: hidden; background: var(--fs-white); box-shadow: var(--fs-shadow); display: flex; flex-direction: column; }
.fs-drink__art { height: 150px; display: flex; align-items: center; justify-content: center; color: rgba(255, 255, 255, .92); }
.fs-drink__art svg { width: 76px; height: 76px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; filter: drop-shadow(0 4px 10px rgba(0, 0, 0, .18)); }
.fs-drink h3 { margin: 18px 20px 6px; }
.fs-drink p { margin: 0 20px 20px; color: var(--fs-muted); font-size: .95rem; }
.fs-drink--maitai .fs-drink__art { background: linear-gradient(160deg, #ffb347 0%, #f2711c 55%, #c8470f 100%); }
.fs-drink--sangria .fs-drink__art { background: linear-gradient(160deg, #ffc3a0 0%, #f2789f 55%, #c2185b 100%); }
.fs-drink--spicy .fs-drink__art { background: linear-gradient(160deg, #ffe066 0%, #9bd36a 55%, #2f9e44 100%); }
.fs-drink--yuzu .fs-drink__art { background: linear-gradient(160deg, #d8f5a2 0%, #63d2c6 55%, #1795ea 100%); }
/* Phones and tablets: photo box keeps the photo's shape instead of a short fixed strip. */
@media (max-width: 960px) { .fs-drinks { grid-template-columns: 1fr 1fr; } .fs-drink__art { height: auto; aspect-ratio: 16 / 10; } }
@media (max-width: 480px) { .fs-drinks { grid-template-columns: 1fr; } }

/* Full-width photo band (core Cover block with class fs-photoband) */
.wp-block-cover.fs-photoband { min-height: 440px; padding: 72px var(--fs-gutter); text-align: center; }
.fs-photoband .wp-block-cover__inner-container { max-width: 720px; margin: 0 auto; color: var(--fs-white); }
.fs-photoband h2 { color: var(--fs-white); font-size: clamp(2rem, 4.4vw, 3rem); text-shadow: 0 2px 16px rgba(0, 0, 0, .35); }
.fs-photoband p { font-size: 1.15rem; color: #f2f6fa; }
.fs-photoband .wp-block-buttons { justify-content: center; }

/* Soft wave on the top edge of a band (class fs-wave): drawn in the band's own color over the section above. */
.fs-wave { position: relative; }
.fs-wave::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: -39px;
	height: 40px;
	z-index: 3;
	background: inherit;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 40' preserveAspectRatio='none'%3E%3Cpath d='M0 40h1440V14c-160 20-320 26-480 14S640 0 480 2 160 26 0 18z'/%3E%3C/svg%3E") bottom / 100% 100% no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 40' preserveAspectRatio='none'%3E%3Cpath d='M0 40h1440V14c-160 20-320 26-480 14S640 0 480 2 160 26 0 18z'/%3E%3C/svg%3E") bottom / 100% 100% no-repeat;
	pointer-events: none;
}

/* Classic themes wrap Group block children in an inner container; let grids and cards see the real children. */
.fs-cards > .wp-block-group__inner-container,
.fs-card > .wp-block-group__inner-container,
.fs-logos > .wp-block-group__inner-container,
.fs-gallery > .wp-block-group__inner-container,
.fs-team > .wp-block-group__inner-container,
.fs-team > .wp-block-group__inner-container > .wp-block-group > .wp-block-group__inner-container { display: contents; }

/* Service cards (core Columns with class fs-cards) */
.wp-block-columns { display: flex; flex-wrap: wrap; gap: 24px; }
.wp-block-column { flex: 1 1 0; min-width: 0; }
@media (max-width: 760px) { .wp-block-columns { flex-direction: column; } }
.fs-cards { display: grid !important; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 24px; }
.fs-card {
	background: var(--fs-white);
	border: 1px solid var(--fs-line);
	border-radius: var(--fs-radius);
	overflow: hidden;
	display: flex;
	flex-direction: column;
}
.fs-card .wp-block-image { margin: 0; }
.fs-card .wp-block-image img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; display: block; }
.fs-card h3, .fs-card p { padding: 0 20px; }
.fs-card h3 { margin-top: 18px; }
.fs-card p:last-child { margin-top: auto; padding-bottom: 20px; }
.fs-card a { font-weight: 700; text-decoration: none; }

/* Reviews */
.fs-reviews { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 20px; }
.fs-review { background: var(--fs-white); border-radius: var(--fs-radius); padding: 24px; box-shadow: var(--fs-shadow); margin: 0; display: flex; flex-direction: column; }
.fs-review cite { margin-top: auto; }
/* Review slider: a row that scrolls sideways (swipe on phones, arrows on desktop via assets/menu.js). */
.fs-reviews--slider { display: grid; grid-auto-flow: column; grid-template-columns: none; grid-auto-columns: calc((100% - 40px) / 3); overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding: 6px 4px 18px; margin: 0 -4px; }
.fs-reviews--slider::-webkit-scrollbar { display: none; }
.fs-reviews--slider .fs-review { scroll-snap-align: start; }
@media (max-width: 960px) { .fs-reviews--slider { grid-auto-columns: calc((100% - 20px) / 2); } }
@media (max-width: 600px) { .fs-reviews--slider { grid-auto-columns: 86%; } }
.fs-slider-nav { display: flex; justify-content: center; gap: 10px; margin-top: 8px; }
.fs-slider-nav button { width: 44px; height: 44px; border-radius: 50%; border: 2px solid var(--fs-blue); background: var(--fs-white); color: var(--fs-blue-dark); font-size: 1.3rem; line-height: 1; cursor: pointer; }
.fs-slider-nav button:hover { background: var(--fs-blue); color: var(--fs-white); }
.fs-ratings { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin: 0 0 28px; }
.fs-rating { display: inline-flex; align-items: center; gap: 10px; padding: 10px 18px; background: var(--fs-white); border: 1px solid var(--fs-line); border-radius: 999px; text-decoration: none; color: var(--fs-ink); font-weight: 600; box-shadow: var(--fs-shadow); }
.fs-rating strong { font-size: 1.25rem; }
.fs-rating .fs-stars { margin: 0; letter-spacing: 1px; }
.fs-rating:hover { border-color: var(--fs-blue); color: var(--fs-ink); }
.fs-review p { font-size: .98rem; }
/* Long reviews: trimmed to 8 lines with a Read more toggle (assets/menu.js). */
.fs-review.is-clamped p { display: -webkit-box; -webkit-line-clamp: 8; -webkit-box-orient: vertical; overflow: hidden; }
.fs-review-more { align-self: flex-start; background: none; border: 0; padding: 0; margin: -6px 0 14px; color: var(--fs-blue-dark); font: inherit; font-size: .9rem; font-weight: 600; text-decoration: underline; cursor: pointer; }
.fs-review cite { display: block; font-style: normal; font-weight: 700; color: var(--fs-ink); }
.fs-review cite span { display: block; font-weight: 500; color: var(--fs-muted); font-size: .85rem; }
.fs-stars { color: #f5a623; letter-spacing: 2px; margin-bottom: 8px; }

/* Client logos */
.fs-logos { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 24px; align-items: center; }
.fs-logos figure { margin: 0; text-align: center; }
.fs-logos img { max-height: 70px; width: auto; object-fit: contain; filter: grayscale(1); opacity: .8; transition: filter .2s, opacity .2s; }
.fs-logos img:hover { filter: none; opacity: 1; }

/* Gallery */
.fs-gallery { display: grid !important; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; }
.fs-gallery figure { margin: 0; }
.fs-gallery img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; border-radius: 8px; display: block; }
/* Mosaic: one large photo plus eight small ones fills the grid evenly at 4 and 2 columns. */
.fs-gallery--mosaic { grid-template-columns: repeat(4, 1fr); grid-auto-rows: clamp(120px, 14vw, 180px); }
.fs-gallery--mosaic figure { height: 100%; min-height: 0; }
.fs-gallery--mosaic img { height: 100%; aspect-ratio: auto; }
.fs-gallery--mosaic figure:first-child { grid-column: span 2; grid-row: span 2; }
@media (max-width: 760px) { .fs-gallery--mosaic { grid-template-columns: 1fr 1fr; grid-auto-rows: 30vw; } }

/* FAQ (core Details blocks) */
.fs-faq { max-width: 860px; margin-left: auto; margin-right: auto; }
.wp-block-details { border: 1px solid var(--fs-line); border-radius: var(--fs-radius); padding: 0 20px; margin: 0 0 12px; background: var(--fs-white); }
.wp-block-details summary { cursor: pointer; font-weight: 700; color: var(--fs-ink); padding: 16px 0; list-style: none; position: relative; padding-right: 28px; }
.wp-block-details summary::-webkit-details-marker { display: none; }
.wp-block-details summary::after { content: "+"; position: absolute; right: 0; top: 12px; font-size: 1.4rem; color: var(--fs-blue); }
.wp-block-details[open] summary::after { content: "\2212"; }
.wp-block-details > *:not(summary) { margin-top: 0; }
.wp-block-details[open] { padding-bottom: 8px; }

/* Team */
.fs-team { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(240px, 320px)); gap: 28px; justify-content: center; }
.fs-team .wp-block-image img { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 50%; max-width: 220px; display: block; margin: 0 auto; }
.fs-team h3 { margin: 16px 0 4px; text-align: center; }
.fs-team p { text-align: center; color: var(--fs-muted); }

/* CTA band */
.fs-cta { text-align: center; }
.fs-cta .wp-block-buttons { justify-content: center; }

/* Images and media in content */
.wp-block-image { margin: 0 0 1.5em; }
.wp-block-image img { border-radius: 8px; }
.wp-block-image figcaption { font-size: .85rem; color: var(--fs-muted); text-align: center; }
.alignwide { max-width: 1320px; }
.has-text-align-center { text-align: center; }

/* Blog lists */
.fs-posts { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 24px; max-width: var(--fs-wrap); margin: 48px auto 64px; padding: 0 var(--fs-gutter); }
.fs-post-card { border: 1px solid var(--fs-line); border-radius: var(--fs-radius); overflow: hidden; background: var(--fs-white); }
.fs-post-card img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; display: block; }
.fs-post-card div { padding: 16px 20px 20px; }
.fs-post-card h2 { font-size: 1.15rem; }
.fs-post-card a { text-decoration: none; color: var(--fs-ink); }
.fs-pagination { text-align: center; margin: 0 0 64px; }
.fs-pagination .page-numbers { display: inline-block; padding: 6px 12px; margin: 0 2px; border-radius: 6px; border: 1px solid var(--fs-line); text-decoration: none; }
.fs-pagination .current { background: var(--fs-blue); color: var(--fs-white); border-color: var(--fs-blue); }
.fs-article { max-width: 760px; margin: 48px auto 64px; padding: 0 var(--fs-gutter); }
.fs-article .fs-meta { color: var(--fs-muted); font-size: .9rem; }

/* ---------- Footer ---------- */
.fs-footer { background: var(--fs-slate); color: #d7dde6; font-size: .95rem; }
.fs-footer__inner { max-width: var(--fs-wrap); margin: 0 auto; padding: 56px var(--fs-gutter) 32px; display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 32px; }
@media (max-width: 960px) { .fs-footer__inner { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .fs-footer__inner { grid-template-columns: 1fr; } }
.fs-footer h2 { color: var(--fs-white); font-size: 1.05rem; margin-bottom: 12px; }
.fs-footer a { color: #e8eef5; text-decoration: none; }
.fs-footer a:hover { color: var(--fs-sky); text-decoration: underline; }
.fs-footer ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.fs-social { display: flex; gap: 10px; margin-top: 14px; flex-wrap: wrap; }
.fs-social a { display: inline-flex; width: 38px; height: 38px; align-items: center; justify-content: center; border-radius: 50%; background: rgba(255, 255, 255, .1); }
.fs-social a:hover { background: var(--fs-blue); text-decoration: none; }
.fs-social svg { width: 18px; height: 18px; fill: currentColor; }
.fs-footer__legal { border-top: 1px solid rgba(255, 255, 255, .12); max-width: var(--fs-wrap); margin: 0 auto; padding: 18px var(--fs-gutter) calc(18px + env(safe-area-inset-bottom, 0px)); display: flex; flex-wrap: wrap; gap: 12px; justify-content: space-between; font-size: .85rem; color: #aeb7c4; }

/* Calculator page (hire-us): keep plugin markup readable inside theme */
.page-template-default .ccb-wrapper-11291 { font-family: var(--fs-font); }

/* Hire-us calculator page: hero text stays white on the photo; Google address suggestions sit above the map popup. */
.calculator-hero-section h1, .calculator-hero-section h2, .calculator-hero-section p { color: #fff; }
.pac-container { z-index: 2147483000 !important; position: fixed !important; }

/* Blog page: core Latest Posts block as cards */
.wp-block-latest-posts.is-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 24px; padding: 0; margin: 24px 0; list-style: none; }
.wp-block-latest-posts.is-grid li { margin: 0; width: auto; border: 1px solid var(--fs-line); border-radius: var(--fs-radius); overflow: hidden; background: var(--fs-white); padding-bottom: 16px; }
.wp-block-latest-posts__featured-image img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; display: block; margin-bottom: 12px; }
.wp-block-latest-posts__post-title { display: block; padding: 0 16px; font-weight: 700; color: var(--fs-ink); text-decoration: none; }
.wp-block-latest-posts__post-date { display: block; padding: 4px 16px 0; color: var(--fs-muted); font-size: .85rem; }

/* Price sheet disclaimer */
.fs-price-note { font-size: .85rem; color: var(--fs-muted); text-align: center; max-width: 70ch; margin: 24px auto 40px; }

/* Tables (drink calculator quick guide). */
.fs-table{overflow-x:auto;margin:24px auto;max-width:900px}
.fs-table table{width:100%;border-collapse:collapse;background:var(--fs-white);border-radius:var(--fs-radius);overflow:hidden;box-shadow:var(--fs-shadow);font-size:.98rem}
.fs-table th{background:var(--fs-navy);color:#fff;text-align:left;font-weight:700;padding:12px 14px}
.fs-table td{padding:11px 14px;border-top:1px solid var(--fs-line);white-space:nowrap}
.fs-table tbody tr:nth-child(even) td{background:var(--fs-mist)}

/* Stars under quote buttons. */
.fs-proof{margin:12px 0 0;font-size:.9rem;font-weight:600;opacity:.95}
.fs-proof__stars{color:#fbbc04;letter-spacing:1px;margin-right:4px}
.has-text-align-center + .wp-block-buttons + .fs-proof,.fs-cta .fs-proof,.wp-block-buttons.is-content-justification-center + .fs-proof{text-align:center}

/* Sticky quote bar on phones. */
.fs-stickybar{display:none}
@media (max-width:760px){
	.fs-stickybar{display:flex;gap:10px;position:fixed;left:0;right:0;bottom:0;z-index:60;padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px));background:rgba(255,255,255,.97);box-shadow:0 -4px 18px rgba(11,58,92,.16);transform:translateY(110%);transition:transform .25s ease}
	.fs-stickybar.is-visible{transform:none}
	.fs-stickybar a{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;min-height:48px;border-radius:999px;font-weight:700;text-decoration:none;font-size:1rem}
	.fs-stickybar__quote{background:var(--fs-cta);color:#fff}
	.fs-stickybar__call{flex:0 0 auto!important;padding:0 18px;border:2px solid var(--fs-blue);color:var(--fs-blue-dark)}
	.fs-stickybar__call svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2}
	body.fs-has-stickybar .fs-footer{padding-bottom:84px}
	/* While the bar is up, the header doesn't need its own quote and call buttons. */
	body.fs-bar-up .fs-header .fs-quote,body.fs-bar-up .fs-header .fs-call{display:none}
	body.fs-bar-up .fs-menu-toggle{margin-left:auto}
}
@media print{.fs-stickybar{display:none!important}}
/* Owner photos (.fs-protect): no dragging, selecting or long-press save. menu.js blocks the right-click menu. */
.fs-protect img{-webkit-user-drag:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
