/*
Theme Name: Cruise Mooloolaba
Theme URI: https://www.cruisemooloolaba.com.au/
Author: The Various Artists
Description: Standalone FSE block theme for Coastal Cruises Mooloolaba.
Requires at least: 6.6
Requires PHP: 8.1
Version: 1.5.1
Text Domain: cruisemooloolaba
*/

/* Rules
   - Only canonical variables: --wp--preset--*, --wp--custom--*. No raw hex values.
   - Breakpoints: 40rem (640) two-up · 62rem (992) nav expands, three-up · 85rem (1360) wide rail.
   - Motion respects prefers-reduced-motion at the bottom of this file. */

/* ==========================================================================
   1. Base
   ========================================================================== */
html { scroll-padding-top: var(--wp--custom--header--height); }
/* House flow model (Wayne): zero gap between page-level blocks — sections are
   alignfull groups with their own generous padding; bands butt edge to edge.
   Inner stacks/rows set their own blockGap. Margin controls stay off. */
.wp-site-blocks > * + * { margin-block-start: 0; }
/* A padded section wrapper whose block rendered nothing (empty states, e.g.
   "Cruises on this boat" with none linked) must not leave a blank band. */
main .wp-block-group:not(:has(> *)) { display: none; }
body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
::selection { background: var(--wp--preset--color--tide); color: var(--wp--preset--color--ink); }
:where(a, button, input, select, textarea, summary):focus-visible {
	outline: 2px solid var(--wp--preset--color--primary);
	outline-offset: 2px;
}
/* No grey/tinted press rectangle on touch — hover + selected states carry
   the feedback. Keyboard focus rings above are unaffected. */
:where(a, button, summary, [role="button"]) { -webkit-tap-highlight-color: transparent; }
/* Stretched-link cards: the ring belongs on the CARD, not a text-sized box
   around the inline anchor (which also flashes on tap in some browsers). */
:is(.cruise-card__title, .boat-profile__name) a:focus-visible { outline: none; }
.cruise-card:has(.cruise-card__title a:focus-visible),
.boat-profile--card:has(.boat-profile__name a:focus-visible) {
	outline: 2px solid var(--wp--preset--color--primary);
	outline-offset: 3px;
	border-radius: var(--wp--custom--radius--large);
}
/* Header logo: no ring when clicked. WebKit counts a clicked link as
   focus-visible, so the mark gets boxed on every tap through to home. */
.site-header .wp-block-site-logo a:focus,
.site-header .wp-block-site-logo a:focus-visible,
.site-header__logo a:focus,
.site-header__logo a:focus-visible { outline: none; }
:where(p, li, h1, h2, h3, h4) { text-wrap: pretty; }
img { max-width: 100%; height: auto; }
.wp-block-image img { border-radius: var(--wp--custom--radius--large); }
strong, b { font-weight: var(--wp--custom--weight--medium); }

/* Display line — for hero titles that are not the page h1 */
.has-display-type {
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--custom--type--display);
	font-weight: var(--wp--custom--weight--light);
	line-height: var(--wp--custom--leading--tight);
	letter-spacing: var(--wp--custom--tracking--display);
}

/* ==========================================================================
   2. core/paragraph — is-style-eyebrow
   ========================================================================== */
.is-style-eyebrow {
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--custom--type--eyebrow);
	font-weight: var(--wp--custom--weight--medium);
	letter-spacing: var(--wp--custom--tracking--eyebrow);
	text-transform: uppercase;
	line-height: var(--wp--custom--leading--snug);
	color: var(--wp--preset--color--primary);
}
.is-style-band-foam .is-style-eyebrow,
.is-style-band-tide .is-style-eyebrow { color: var(--wp--preset--color--primary-dark); }

/* ==========================================================================
   3. core/button — fill (default) · outline · ghost · inverse · inverse-outline
   ========================================================================== */
.wp-block-button__link {
	transition:
		background-color var(--wp--custom--duration--quick) var(--wp--custom--easing--standard),
		color var(--wp--custom--duration--quick) var(--wp--custom--easing--standard),
		box-shadow var(--wp--custom--duration--quick) var(--wp--custom--easing--standard),
		transform var(--wp--custom--duration--base) var(--wp--custom--easing--standard);
	box-shadow: none;
}
.wp-block-button__link:active { transform: scale(0.985); }

.wp-block-button.is-style-outline > .wp-block-button__link {
	background: transparent;
	color: var(--wp--preset--color--primary);
	box-shadow: inset 0 0 0 1px var(--wp--preset--color--primary);
	padding: 0.95em 2em;
	border: 0;
}
.wp-block-button.is-style-outline > .wp-block-button__link:hover {
	background: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--white);
}

.wp-block-button.is-style-ghost > .wp-block-button__link {
	background: transparent;
	color: var(--wp--preset--color--primary);
	padding: 0.95em 0;
	display: inline-flex;
	align-items: center;
	gap: 0.6em;
}
.wp-block-button.is-style-ghost > .wp-block-button__link::after {
	content: "";
	inline-size: 1.1em;
	block-size: 1em;
	background: currentColor;
	-webkit-mask: url("assets/icons/arrow-right.svg") center / contain no-repeat;
	mask: url("assets/icons/arrow-right.svg") center / contain no-repeat;
	transition: transform var(--wp--custom--duration--base) var(--wp--custom--easing--standard);
}
.wp-block-button.is-style-ghost > .wp-block-button__link:hover { color: var(--wp--preset--color--primary-dark); }
.wp-block-button.is-style-ghost > .wp-block-button__link:hover::after { transform: translateX(3px); }

/* inverse — for photography (cover) and primary/ink grounds */
.wp-block-button.is-style-inverse > .wp-block-button__link {
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--primary);
}
.wp-block-button.is-style-inverse > .wp-block-button__link:hover {
	background: var(--wp--preset--color--sand);
	color: var(--wp--preset--color--primary-dark);
}
.wp-block-button.is-style-inverse-outline > .wp-block-button__link {
	background: transparent;
	color: var(--wp--preset--color--white);
	box-shadow: inset 0 0 0 1px var(--wp--preset--color--white);
}
.wp-block-button.is-style-inverse-outline > .wp-block-button__link:hover {
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--primary);
}

/* ==========================================================================
   4. core/cover — home-hero · page-hero
   ========================================================================== */
.wp-block-cover.is-style-home-hero,
.wp-block-cover.is-style-page-hero {
	padding-top: calc(var(--wp--custom--header--height) + var(--wp--preset--spacing--xl));
	padding-bottom: var(--wp--preset--spacing--xl);
	text-align: center;
}
.wp-block-cover.is-style-home-hero { min-height: min(92vh, 56rem); }
.wp-block-cover.is-style-page-hero { min-height: clamp(22rem, 48vh, 32rem); }

.wp-block-cover.is-style-home-hero > span.wp-block-cover__background,
.wp-block-cover.is-style-page-hero > span.wp-block-cover__background {
	background-color: transparent !important; /* an overlay colour (has-*-background-color) would go solid at the forced opacity */
	background-image: var(--wp--custom--scrim--hero);
	opacity: 1 !important; /* core's has-background-dim-N otherwise zeroes the scrim */
}
.wp-block-cover.is-style-home-hero :where(h1, h2, h3, p),
.wp-block-cover.is-style-page-hero :where(h1, h2, h3, p) { color: var(--wp--preset--color--white); }
.wp-block-cover.is-style-home-hero h1 { font-size: var(--wp--custom--type--display); }
.wp-block-cover.is-style-page-hero h1 { font-size: var(--wp--custom--type--title); }
.wp-block-cover.is-style-home-hero .is-style-eyebrow,
.wp-block-cover.is-style-page-hero .is-style-eyebrow { color: var(--wp--preset--color--white); }
.wp-block-cover.is-style-home-hero p:not(.is-style-eyebrow) {
	font-size: var(--wp--preset--font-size--l);
	max-width: 36rem;
	margin-inline: auto;
}
.wp-block-cover.is-style-home-hero .wp-block-buttons,
.wp-block-cover.is-style-page-hero .wp-block-buttons { justify-content: center; }

/* ==========================================================================
   5. core/group — band-sand · band-foam · band-tide
   Body text on foam and tide switches to ink (slate fails there: 3.82 / 3.55).
   Links on foam and tide switch to primary-dark (primary fails: 3.95 / 3.66).
   ========================================================================== */
.wp-block-group:where(.is-style-band-sand, .is-style-band-foam, .is-style-band-tide) {
	padding-top: var(--wp--preset--spacing--xxl);
	padding-bottom: var(--wp--preset--spacing--xxl);
}
.wp-block-group.is-style-band-sand { background-color: var(--wp--preset--color--sand); }
.wp-block-group.is-style-band-foam { background-color: var(--wp--preset--color--foam); color: var(--wp--preset--color--ink); }
.wp-block-group.is-style-band-tide { background-color: var(--wp--preset--color--tide); color: var(--wp--preset--color--ink); }
.wp-block-group:where(.is-style-band-foam, .is-style-band-tide) a:where(:not(.wp-element-button)) { color: var(--wp--preset--color--primary-dark); }
.wp-block-group:where(.is-style-band-foam, .is-style-band-tide) .wp-block-button.is-style-outline > .wp-block-button__link,
.wp-block-group:where(.is-style-band-foam, .is-style-band-tide) .wp-block-button.is-style-ghost > .wp-block-button__link {
	color: var(--wp--preset--color--primary-dark);
	box-shadow: inset 0 0 0 1px var(--wp--preset--color--primary-dark);
}
.wp-block-group:where(.is-style-band-foam, .is-style-band-tide) .wp-block-button.is-style-ghost > .wp-block-button__link { box-shadow: none; }
.wp-block-group:where(.is-style-band-foam, .is-style-band-tide) .wp-block-button:not([class*="is-style-"]) > .wp-block-button__link,
.wp-block-group:where(.is-style-band-foam, .is-style-band-tide) .wp-block-button.is-style-fill > .wp-block-button__link { background: var(--wp--preset--color--primary-dark); }

/* Section opener inside any band: centred eyebrow + heading + intro.
   House rhythm (Wayne): eyebrow + heading sit as a tight stack (xs); anything
   after the pair gets the looser gap. Outer groups keep the loose gap and
   inner stacks override tighter. */
.section-intro { text-align: center; max-width: 40rem; margin-inline: auto; display: grid; gap: var(--wp--preset--spacing--xs); }
.section-intro > * { margin-block: 0; } /* UA margins don't collapse in grid — the gap governs */
.section-intro > p:not(.is-style-eyebrow) { margin-top: var(--wp--preset--spacing--m); }
/* Left-aligned stacks in templates: a group with blockGap xs holding the pair */
.ccm-stack-tight > * { margin-block: 0 !important; }
.ccm-stack-tight { display: grid; gap: var(--wp--preset--spacing--xs); }

/* ==========================================================================
   6. core/quote — is-style-testimonial
   ========================================================================== */
.wp-block-quote.is-style-testimonial,
.testimonial {
	background: var(--wp--preset--color--white);
	border: 0;
	border-radius: var(--wp--custom--radius--large);
	box-shadow: var(--wp--custom--shadow--card);
	padding: var(--wp--preset--spacing--l);
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--m);
	color: var(--wp--preset--color--slate);
}
.wp-block-quote.is-style-testimonial p,
.testimonial__text {
	font-family: var(--wp--preset--font-family--heading);
	font-style: italic;
	font-size: var(--wp--preset--font-size--m);
	line-height: var(--wp--custom--leading--base);
	color: var(--wp--preset--color--ink);
	margin: 0;
}
.wp-block-quote.is-style-testimonial cite,
.testimonial__author {
	font-family: var(--wp--preset--font-family--body);
	font-style: normal;
	font-size: var(--wp--preset--font-size--s);
	font-weight: var(--wp--custom--weight--medium);
	color: var(--wp--preset--color--ink);
	margin-top: auto;
}
.testimonial__source {
	display: block;
	font-weight: var(--wp--custom--weight--light);
	font-size: var(--wp--preset--font-size--xs);
	color: var(--wp--preset--color--slate);
}
.testimonial__rating { display: flex; gap: 2px; color: var(--wp--preset--color--primary); }
.testimonial__rating svg { inline-size: 1rem; block-size: 1rem; fill: currentColor; }

/* ==========================================================================
   7. core/separator — is-style-wave
   ========================================================================== */
.wp-block-separator.is-style-wave {
	border: 0;
	block-size: 2.5rem;
	inline-size: 100%;
	max-width: none;
	background: url("assets/patterns/pattern-ocean-pale.svg") center / auto 100% repeat-x;
	opacity: 1;
}
.is-style-band-sand > .wp-block-separator.is-style-wave {
	background-image: url("assets/patterns/pattern-cream.svg");
}

/* ==========================================================================
   8. Notification bar  (template part: notice-bar · ACF block acf/notice-bar)
   ========================================================================== */
.notice-bar {
	background: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--white);
	font-size: var(--wp--preset--font-size--s);
	line-height: var(--wp--custom--leading--snug);
	position: relative;
	z-index: 30;
}
.notice-bar[hidden] { display: none; }
.notice-bar__inner {
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding: var(--wp--preset--spacing--s) calc(var(--wp--preset--spacing--gutter) + 2.75rem) var(--wp--preset--spacing--s) var(--wp--preset--spacing--gutter);
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: var(--wp--preset--spacing--xs) var(--wp--preset--spacing--m);
	text-align: center;
}
.notice-bar__text { margin: 0; }
.notice-bar__link {
	color: var(--wp--preset--color--white);
	font-weight: var(--wp--custom--weight--medium);
	text-decoration: underline;
	text-underline-offset: 3px;
}
.notice-bar__link:hover { color: var(--wp--preset--color--white); text-decoration-thickness: 2px; }
.notice-bar__close {
	position: absolute;
	inset-block: 0;
	inset-inline-end: var(--wp--preset--spacing--s);
	margin-block: auto;
	inline-size: 2.75rem;
	block-size: 2.75rem;
	display: grid;
	place-items: center;
	background: transparent;
	border: 0;
	border-radius: var(--wp--custom--radius--pill);
	color: var(--wp--preset--color--white);
	cursor: pointer;
}
.notice-bar__close:hover { background: var(--wp--custom--icon--inverse); }
.notice-bar__close:focus-visible { outline-color: var(--wp--preset--color--white); }

/* ==========================================================================
   9. Header & navigation  (template part: header)
   Fixed over hero on templates with a cover first; static elsewhere.
   Nav collapses below 62rem (992px) — same as the classic theme.
   ========================================================================== */
.site-header {
	position: relative;
	z-index: 20;
	background: var(--wp--preset--color--white);
	box-shadow: 0 1px 0 var(--wp--custom--line--hairline);
}
.site-header__inner {
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	min-block-size: var(--wp--custom--header--heightcompact);
	padding-inline: var(--wp--preset--spacing--gutter);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--l);
}
.site-header .wp-block-site-logo img,
.site-header__logo img { inline-size: clamp(9.5rem, 30vw, 13.75rem); height: auto; border-radius: 0; }
/* Logo clear-space: never less than the height of the wave mark (~0.5 × logo height) */
.site-header__logo { padding-block: var(--wp--preset--spacing--s); flex: none; }
.site-header .wp-block-navigation {
	font-size: var(--wp--preset--font-size--s);
	font-weight: var(--wp--custom--weight--regular);
	gap: var(--wp--preset--spacing--l);
}
.site-header .wp-block-navigation-item__content { color: var(--wp--preset--color--ink); text-decoration: none; }
.site-header .wp-block-navigation-item__content:hover { color: var(--wp--preset--color--primary); }
.site-header .current-menu-item > .wp-block-navigation-item__content { color: var(--wp--preset--color--primary); }

/* Transparent variant — add .site-header--overlay on templates that open with a hero cover */
.site-header--overlay {
	position: absolute;
	inset-inline: 0;
	background: transparent;
	box-shadow: 0 1px 0 color-mix(in srgb, var(--wp--preset--color--white) 14%, transparent);
}
.site-header--overlay .wp-block-navigation-item__content,
.site-header--overlay .wp-block-navigation__responsive-container-open { color: var(--wp--preset--color--white); }
.site-header--overlay .wp-block-navigation-item__content:hover { color: var(--wp--preset--color--sand); }

/* Header CTA reads "Book" on phones ("Book a Cruise" wraps to two lines there) */
@media (max-width: 39.99rem) { .ccm-hide-phone { display: none; } }

/* Overlay header (home): opted in by assets/js/header.js (.is-ready), so no-JS
   keeps the plain white bar. Sticky + negative margin = pinned over the cover. */
.ccm-header-overlay.is-ready {
	position: sticky;
	top: var(--wp-admin--admin-bar--height, 0px);
	z-index: 30;
	margin-block-end: calc(-1 * var(--ccm-header-h, var(--wp--custom--header--height)));
}
.ccm-header-overlay.is-ready > .wp-block-group {
	background-color: transparent !important; /* beats has-white-background-color */
	box-shadow: 0 1px 0 transparent;
	transition:
		background-color var(--wp--custom--duration--base) var(--wp--custom--easing--standard),
		box-shadow var(--wp--custom--duration--base) var(--wp--custom--easing--standard);
}
.ccm-header-overlay.is-ready.is-solid > .wp-block-group {
	background-color: var(--wp--preset--color--white) !important;
	box-shadow: 0 1px 0 var(--wp--custom--line--hairline), 0 6px 18px rgba(18, 51, 63, 0.08);
}
/* Top-level links + hamburger go white over the hero; submenus and the open mobile menu keep their ink */
.ccm-header-overlay.is-ready :is(
	.wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content,
	.wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation__submenu-icon,
	.wp-block-navigation__responsive-container-open
) {
	color: var(--wp--preset--color--white);
	transition: color var(--wp--custom--duration--base) var(--wp--custom--easing--standard);
}
.ccm-header-overlay.is-ready.is-solid :is(
	.wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content,
	.wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation__submenu-icon,
	.wp-block-navigation__responsive-container-open
) { color: var(--wp--preset--color--ink); }
/* Logo crossfade: light logo stacked on the editor's dark one */
.wp-block-site-logo .ccm-logo-light { display: none; }
.ccm-header-overlay.is-ready .wp-block-site-logo a { position: relative; display: inline-block; }
.ccm-header-overlay.is-ready .wp-block-site-logo img { transition: opacity var(--wp--custom--duration--base) var(--wp--custom--easing--standard); }
.ccm-header-overlay.is-ready .wp-block-site-logo .ccm-logo-light { display: block; position: absolute; inset: 0; inline-size: 100%; block-size: 100%; }
.ccm-header-overlay.is-ready:not(.is-solid) .wp-block-site-logo .custom-logo { opacity: 0; }
.ccm-header-overlay.is-ready.is-solid .wp-block-site-logo .ccm-logo-light { opacity: 0; }
@media (prefers-reduced-motion: reduce) {
	.ccm-header-overlay.is-ready > .wp-block-group,
	.ccm-header-overlay.is-ready :is(.wp-block-site-logo img, .wp-block-navigation-item__content, .wp-block-navigation__submenu-icon, .wp-block-navigation__responsive-container-open) { transition: none; }
}

@media (min-width: 62rem) {
	.site-header__inner { min-block-size: var(--wp--custom--header--height); }
}

/* Mobile overlay menu */
.wp-block-navigation__responsive-container.is-menu-open {
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--ink);
	padding: var(--wp--preset--spacing--l) var(--wp--preset--spacing--gutter);
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--xl);
	color: var(--wp--preset--color--ink);
}

/* ==========================================================================
   10. Footer  (template part: footer)
   ========================================================================== */
.site-footer {
	background: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--white);
	padding-top: var(--wp--preset--spacing--xxl);
	padding-bottom: var(--wp--preset--spacing--l);
	font-size: var(--wp--preset--font-size--s);
}
.site-footer :where(h2, h3, h4) {
	color: var(--wp--preset--color--white);
	font-size: var(--wp--preset--font-size--l);
}
.site-footer a { color: var(--wp--preset--color--white); text-decoration: none; }
.site-footer a:hover { text-decoration: underline; text-underline-offset: 3px; }
.site-footer :where(.wp-block-image, .wp-block-gallery) img { max-height: 4rem; width: auto; border-radius: 0; }
.site-footer__legal {
	border-top: 1px solid color-mix(in srgb, var(--wp--preset--color--white) 18%, transparent);
	margin-top: var(--wp--preset--spacing--xl);
	padding-top: var(--wp--preset--spacing--m);
	font-size: var(--wp--preset--font-size--xs);
}
/* Mockups canvas 2026-10-07: logo + socials column, eyebrow column headers, link lists */
.site-footer__heading {
	font-size: var(--wp--custom--type--eyebrow);
	font-weight: var(--wp--custom--weight--medium);
	letter-spacing: var(--wp--custom--tracking--eyebrow);
	text-transform: uppercase;
	color: color-mix(in srgb, var(--wp--preset--color--white) 72%, var(--wp--preset--color--primary));
	margin: 0 0 var(--wp--preset--spacing--m);
}
.site-footer__brand img { inline-size: clamp(9rem, 16vw, 11.5rem); height: auto; border-radius: 0; }
.site-footer ul:not(.wp-block-social-links) { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--wp--preset--spacing--s); }
.site-footer .wp-block-social-links { margin-top: var(--wp--preset--spacing--m); }
.site-footer .wp-block-social-link { background: transparent !important; }
.site-footer .wp-block-social-link a { color: var(--wp--preset--color--white); }
.site-footer__legal .wp-block-group { justify-content: space-between; }

/* Award badges (acf/footer-badges): own light band above the footer, so the
   full-colour logos keep their contrast. Best of Queensland years fan out. */
.award-band { background: var(--wp--preset--color--white); padding-block: var(--wp--preset--spacing--l); }
.award-band:not(:has(.award-badges)) { display: none; }
.award-badges__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: var(--wp--preset--spacing--m) var(--wp--preset--spacing--l);
}
.award-badges__item { display: flex; align-items: center; }
.award-badges__item a { display: block; line-height: 0; }
.award-badges__img { display: block; block-size: 4.5rem; inline-size: auto; max-inline-size: 9rem; object-fit: contain; border-radius: 0; }
.award-badges__item--stack > :not(:first-child) { margin-inline-start: -1.75rem; }

/* Promo banner (acf/promo-banner, in the footer part): cross-promotion band,
   shown only where Site Settings switches it on. Self-padded, zero page gap. */
.promo-banner { background: var(--wp--preset--color--tide); padding: var(--wp--preset--spacing--xl) var(--wp--style--root--padding-right) var(--wp--preset--spacing--xl) var(--wp--style--root--padding-left); }
.promo-banner__inner {
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	display: grid;
	gap: var(--wp--preset--spacing--l);
	align-items: center;
	grid-template-columns: minmax(0, 1fr);
}
@media (min-width: 40rem) { .promo-banner__inner:has(.promo-banner__media) { grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); } }
.promo-banner__media { aspect-ratio: 3 / 2; border-radius: var(--wp--custom--radius--large); }
.promo-banner__body { display: flex; flex-direction: column; align-items: flex-start; gap: var(--wp--preset--spacing--s); }
.promo-banner__body > * { margin: 0; }
.promo-banner__heading { font-size: var(--wp--custom--type--subheading); color: var(--wp--preset--color--ink); }
.promo-banner__text { color: var(--wp--preset--color--ink); max-width: 40rem; }
.promo-banner .wp-block-button { margin-top: var(--wp--preset--spacing--s); }

/* ==========================================================================
   10b. Fleet grid + icon strip (home; mockups canvas 2026-10-07)
   Fleet card: the image carries the card chrome; name + capacity sit under it
   on the page ground, centred.
   ========================================================================== */
.fleet-grid .boat-profile--card {
	background: transparent;
	box-shadow: none;
	border-radius: 0;
	overflow: visible;
	text-align: center;
}
.fleet-grid .boat-profile--card:hover { transform: none; box-shadow: none; }
.fleet-grid .boat-profile--card .boat-profile__media {
	border-radius: var(--wp--custom--radius--medium);
	box-shadow: var(--wp--custom--shadow--card);
	transition: box-shadow var(--wp--custom--duration--base) var(--wp--custom--easing--standard), transform var(--wp--custom--duration--base) var(--wp--custom--easing--standard);
}
.fleet-grid .boat-profile--card:hover .boat-profile__media { box-shadow: var(--wp--custom--shadow--lift); transform: translateY(-4px); }
.fleet-grid .boat-profile__body { padding: var(--wp--preset--spacing--m) 0 0; gap: var(--wp--preset--spacing--xs); }
.fleet-grid .boat-profile__name { order: 1; font-size: var(--wp--custom--type--subheading); }
.fleet-grid .boat-profile__capacity {
	order: 2;
	text-transform: none;
	letter-spacing: 0;
	font-weight: var(--wp--custom--weight--light);
	font-size: var(--wp--preset--font-size--m);
	color: var(--wp--preset--color--slate);
}
.fleet-grid .boat-profile__summary { display: none; } /* fleet row shows name + capacity only */
.fleet-grid .boat-profile__facilities { display: none; }
.fleet-grid .boat-profile__actions { display: none; }

.icon-circle--outline {
	background: var(--wp--preset--color--white);
	box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--wp--preset--color--primary) 24%, var(--wp--preset--color--white));
}
.icon-strip {
	display: grid;
	gap: var(--wp--preset--spacing--l);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
	text-align: center;
}
.icon-strip__item { display: grid; justify-items: center; gap: var(--wp--preset--spacing--s); }
.icon-strip__item h3 { font-size: var(--wp--preset--font-size--l); margin: 0; }
.icon-strip__item p { margin: 0; font-size: var(--wp--preset--font-size--s); color: var(--wp--preset--color--slate); max-width: 22rem; }

/* ==========================================================================
   11. Shared pieces — meta list, category badge/tag, icon circle
   ========================================================================== */
.meta-list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--wp--preset--spacing--s) var(--wp--preset--spacing--m); }
.meta-list__item { display: inline-flex; align-items: center; gap: var(--wp--preset--spacing--s); font-size: var(--wp--preset--font-size--s); color: var(--wp--preset--color--slate); }
.meta-list__item svg { inline-size: 1.125rem; block-size: 1.125rem; stroke: var(--wp--preset--color--primary); stroke-width: 1.25; fill: none; flex: none; }

/* Accent rule: categorisation only. One accent per cruise for life.
   data-accent="sunlight | sunset | hinterland | coral" */
[data-accent="sunlight"]   { --accent-tint: var(--wp--custom--accent--sunlight--tint);   --accent-deep: var(--wp--custom--accent--sunlight--deep); }
[data-accent="sunset"]     { --accent-tint: var(--wp--custom--accent--sunset--tint);     --accent-deep: var(--wp--custom--accent--sunset--deep); }
[data-accent="hinterland"] { --accent-tint: var(--wp--custom--accent--hinterland--tint); --accent-deep: var(--wp--custom--accent--hinterland--deep); }
[data-accent="coral"]      { --accent-tint: var(--wp--custom--accent--coral--tint);      --accent-deep: var(--wp--custom--accent--coral--deep); }

/* Badge = deep fill + white caps (base fill fails AA with white: 2.21–3.12) */
.category-badge {
	display: inline-block;
	background: var(--accent-deep, var(--wp--preset--color--primary));
	color: var(--wp--preset--color--white);
	font-size: var(--wp--preset--font-size--xs);
	font-weight: var(--wp--custom--weight--medium);
	letter-spacing: var(--wp--custom--tracking--caps);
	text-transform: uppercase;
	line-height: 1;
	padding: 0.5em 0.9em;
	border-radius: var(--wp--custom--radius--pill);
}
/* Tag = tint ground + deep ink, sentence case */
.category-tag {
	display: inline-block;
	background: var(--accent-tint, var(--wp--preset--color--sand));
	color: var(--accent-deep, var(--wp--preset--color--primary));
	font-size: var(--wp--preset--font-size--xs);
	font-weight: var(--wp--custom--weight--medium);
	line-height: 1;
	padding: 0.5em 0.9em;
	border-radius: var(--wp--custom--radius--pill);
}

.icon-circle {
	inline-size: 3.25rem;
	block-size: 3.25rem;
	border-radius: 50%;
	display: grid;
	place-items: center;
	background: var(--wp--custom--icon--ground);
	color: var(--wp--preset--color--primary);
	flex: none;
}
.icon-circle svg { inline-size: 1.625rem; block-size: 1.625rem; stroke: currentColor; stroke-width: 1.25; fill: none; }
.icon-circle--large { inline-size: 6rem; block-size: 6rem; }
.icon-circle--large svg { inline-size: 2.875rem; block-size: 2.875rem; stroke-width: 1; }

/* Grid used by cruise, package, boat and testimonial lists */
.card-grid {
	display: grid;
	gap: var(--wp--preset--spacing--l);
	grid-template-columns: minmax(0, 1fr);
}
@media (min-width: 40rem) { .card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 62rem) { .card-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
/* The grid's gap does the spacing: drop the flow layout's block-gap margin, which lands on every card but the first */
.card-grid > * { margin-block: 0; }

/* Shared card chrome */
.cruise-card,
.package-card,
.boat-profile--card {
	background: var(--wp--preset--color--white);
	border-radius: var(--wp--custom--radius--large);
	box-shadow: var(--wp--custom--shadow--card);
	overflow: hidden;
	display: flex;
	flex-direction: column;
	transition:
		transform var(--wp--custom--duration--base) var(--wp--custom--easing--standard),
		box-shadow var(--wp--custom--duration--base) var(--wp--custom--easing--standard);
}
.cruise-card:hover,
.package-card:hover,
.boat-profile--card:hover { transform: translateY(-4px); box-shadow: var(--wp--custom--shadow--lift); }

.media-frame { position: relative; overflow: hidden; margin: 0; background: var(--wp--preset--color--sand); }
.media-frame img {
	display: block;
	inline-size: 100%;
	block-size: 100%;
	object-fit: cover;
	border-radius: 0;
	transition: transform var(--wp--custom--duration--slow) var(--wp--custom--easing--out);
}
:where(.cruise-card, .package-card, .boat-profile--card):hover .media-frame img { transform: scale(1.04); }
/* Empty media: sand ground + wave tile, no broken-image icon */
.media-frame--empty {
	background: var(--wp--preset--color--sand) url("assets/patterns/pattern-cream.svg") center / auto 5rem repeat;
}

/* ==========================================================================
   12. Cruise card  (acf/cruise-card · archive-cruise grid)
   ========================================================================== */
/* Mockups canvas 2026-10-07: media sits inset inside the card with its own radius */
.cruise-card__media {
	aspect-ratio: 3 / 2;
	margin: var(--wp--preset--spacing--s) var(--wp--preset--spacing--s) 0;
	border-radius: var(--wp--custom--radius--medium);
}
.cruise-card__badge { position: absolute; inset-block-start: var(--wp--preset--spacing--m); inset-inline-start: var(--wp--preset--spacing--m); z-index: 1; }
/* Info pill (duration or from price): white, top-right, opposite the category badge */
.cruise-card__pill {
	position: absolute;
	inset-block-start: var(--wp--preset--spacing--m);
	inset-inline-end: var(--wp--preset--spacing--m);
	z-index: 1;
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--xs);
	font-weight: var(--wp--custom--weight--medium);
	letter-spacing: var(--wp--custom--tracking--caps);
	text-transform: uppercase;
	line-height: 1;
	padding: 0.6em 1.1em;
	border-radius: var(--wp--custom--radius--pill);
}
.cruise-card__pill strong { font-weight: inherit; }
/* Featured cruises: 6-track grid at desktop, normal cards span 2 (3-up), featured span 3 (2-up).
   Flag them in pairs, or a lone featured card leaves a gap in its row. */
@media (min-width: 62rem) {
	.card-grid--cruises { grid-template-columns: repeat(6, minmax(0, 1fr)); }
	.card-grid--cruises > * { grid-column: span 2; }
	.card-grid--cruises > .cruise-card--featured { grid-column: span 3; }
}
.cruise-card__body { padding: var(--wp--preset--spacing--l); display: flex; flex-direction: column; gap: var(--wp--preset--spacing--m); flex: 1; }
.cruise-card__title { font-size: var(--wp--custom--type--subheading); margin: 0; }
.cruise-card__title a { color: inherit; text-decoration: none; }
.cruise-card__title a::after { content: ""; position: absolute; inset: 0; } /* whole-card hit area */
.cruise-card { position: relative; }
.cruise-card__excerpt { margin: 0; font-size: var(--wp--preset--font-size--m); }
.cruise-card__price {
	font-size: var(--wp--preset--font-size--s);
	color: var(--wp--preset--color--slate);
	margin: 0;
}
.cruise-card__price strong {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: var(--wp--custom--weight--regular);
	font-size: var(--wp--preset--font-size--xl);
	color: var(--wp--preset--color--ink);
}
.cruise-card__actions {
	margin-top: auto;
	padding-top: var(--wp--preset--spacing--m);
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--s);
	position: relative;
	z-index: 1; /* above the whole-card link */
}
/* Events (speciality-cruises category; Carolyn, 22 Oct 2026): one-off and
   seasonal cruises read differently in a mixed grid — a coral key line across
   the card top plus the "Event" badge (coral deep, AA with white). */
.cruise-card--event:not([data-accent]) { --accent-tint: var(--wp--custom--accent--coral--tint); --accent-deep: var(--wp--custom--accent--coral--deep); }
.cruise-card--event { box-shadow: inset 0 4px 0 var(--wp--custom--accent--coral--base), var(--wp--custom--shadow--card); }
.cruise-card--event:hover { box-shadow: inset 0 4px 0 var(--wp--custom--accent--coral--base), var(--wp--custom--shadow--lift); }

/* ==========================================================================
   13. Cruise single  (single-cruise template)
   ========================================================================== */
.cruise-single__layout {
	display: grid;
	gap: var(--wp--preset--spacing--xl);
	grid-template-columns: minmax(0, 1fr);
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding-block: var(--wp--preset--spacing--xxl);
}
@media (min-width: 62rem) {
	.cruise-single__layout { grid-template-columns: minmax(0, 1fr) minmax(20rem, 26rem); align-items: start; }
}
.cruise-single__content { display: grid; gap: var(--wp--preset--spacing--l); }
.cruise-single__lede { font-size: var(--wp--preset--font-size--l); color: var(--wp--preset--color--ink); }
.cruise-single__facts {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
	gap: var(--wp--preset--spacing--m);
	padding: var(--wp--preset--spacing--l) 0;
	border-block: 1px solid var(--wp--custom--line--hairline);
	list-style: none;
	margin: 0;
}
.cruise-single__fact { display: flex; align-items: center; gap: var(--wp--preset--spacing--m); }
.cruise-single__fact-label { display: block; font-size: var(--wp--preset--font-size--xs); text-transform: uppercase; letter-spacing: var(--wp--custom--tracking--eyebrow); font-weight: var(--wp--custom--weight--medium); color: var(--wp--preset--color--primary); }
.cruise-single__fact-value { display: block; color: var(--wp--preset--color--ink); }
.cruise-single__lists { display: grid; gap: var(--wp--preset--spacing--l); grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); }
/* Mockups canvas: list headings are eyebrows, items carry a check, no bullets */
.cruise-single__list h3 {
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--custom--type--eyebrow);
	font-weight: var(--wp--custom--weight--medium);
	letter-spacing: var(--wp--custom--tracking--eyebrow);
	text-transform: uppercase;
	color: var(--wp--preset--color--primary);
	margin-bottom: var(--wp--preset--spacing--m);
}
.cruise-single__list ul { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--wp--preset--spacing--s); }
.cruise-single__list li { position: relative; padding-inline-start: 1.9em; }
.cruise-single__list li::before {
	content: "";
	position: absolute;
	inset-inline-start: 0;
	inset-block-start: 0.2em;
	inline-size: 1.1em;
	block-size: 1.1em;
	background: var(--wp--preset--color--primary);
	-webkit-mask: url("assets/icons/check.svg") center / contain no-repeat;
	mask: url("assets/icons/check.svg") center / contain no-repeat;
}

.cruise-single__gallery {
	display: grid;
	gap: var(--wp--preset--spacing--s);
	grid-template-columns: repeat(2, minmax(0, 1fr));
}
.cruise-single__gallery .media-frame { aspect-ratio: 4 / 3; border-radius: var(--wp--custom--radius--large); }
.cruise-single__gallery .media-frame:first-child { grid-column: 1 / -1; aspect-ratio: 16 / 9; }
@media (min-width: 40rem) {
	.cruise-single__gallery { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* Pricing / booking panel — the only sticky element besides the header.
   Mockups canvas 2026-10-07: soft shadow, no border (overrides handoff №1's
   "bordered not shadowed"; logged in THEME-MERGES). */
.cruise-single__booking {
	background: var(--wp--preset--color--white);
	border-radius: var(--wp--custom--radius--large);
	box-shadow: var(--wp--custom--shadow--lift);
	padding: var(--wp--preset--spacing--l);
	display: grid;
	gap: var(--wp--preset--spacing--m);
}
@media (min-width: 62rem) {
	.cruise-single__booking { position: sticky; top: calc(var(--wp--custom--header--height) + var(--wp--preset--spacing--m)); }
}
.cruise-single__prices { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--wp--preset--spacing--s); }
.cruise-single__price-row { display: flex; justify-content: space-between; align-items: baseline; gap: var(--wp--preset--spacing--m); border-bottom: 1px solid var(--wp--custom--line--hairline); padding-bottom: var(--wp--preset--spacing--s); }
.cruise-single__price-row span:last-child { font-family: var(--wp--preset--font-family--heading); font-size: var(--wp--preset--font-size--xl); color: var(--wp--preset--color--primary); }
.cruise-single__booking .wp-block-button__link { inline-size: 100%; text-align: center; box-sizing: border-box; }
.cruise-single__rezdy { min-block-size: 20rem; }
.cruise-single__rezdy iframe { inline-size: 100%; border: 0; }
.cruise-single__note { font-size: var(--wp--preset--font-size--xs); color: var(--wp--preset--color--slate); margin: 0; }

/* ==========================================================================
   14. Packages block  (acf/packages) — CCM049
   PHP must return nothing when a cruise has no packages. The rule below is a
   belt-and-braces guard only; it is not the empty state.
   ========================================================================== */
.packages:not(:has(.package-card)) { display: none; }
.packages__header { margin-bottom: var(--wp--preset--spacing--xl); }
.package-card__media {
	aspect-ratio: 3 / 2;
	margin: var(--wp--preset--spacing--s) var(--wp--preset--spacing--s) 0;
	border-radius: var(--wp--custom--radius--medium);
}
.package-card__body { padding: var(--wp--preset--spacing--l); display: flex; flex-direction: column; gap: var(--wp--preset--spacing--s); flex: 1; }
.package-card__title { font-size: var(--wp--custom--type--subheading); margin: 0; }
.package-card__price { margin: 0; font-size: var(--wp--preset--font-size--s); }
.package-card__price strong { font-family: var(--wp--preset--font-family--heading); font-weight: var(--wp--custom--weight--regular); font-size: var(--wp--preset--font-size--xl); color: var(--wp--preset--color--ink); }
.package-card__includes { margin: 0; padding-inline-start: 1.1em; font-size: var(--wp--preset--font-size--s); display: grid; gap: var(--wp--preset--spacing--xs); }
.package-card__includes li::marker { color: var(--wp--preset--color--primary); }
.package-card__actions { margin-top: auto; padding-top: var(--wp--preset--spacing--m); }

/* ==========================================================================
   15. Boat profile  (acf/boat-profile · taxonomy-boat)
   ========================================================================== */
.boat-profile--card { position: relative; }
.boat-profile--card .boat-profile__media { aspect-ratio: 4 / 3; }
/* Whole-card link to the boat's page (name carries the anchor) */
.boat-profile__name a { color: inherit; text-decoration: none; }
.boat-profile__name a::after { content: ""; position: absolute; inset: 0; }
.boat-profile__actions { position: relative; z-index: 1; }
/* Capacity eyebrow + name sit tight (xs); everything after the pair gets more air */
.boat-profile__body { padding: var(--wp--preset--spacing--l); display: flex; flex-direction: column; gap: var(--wp--preset--spacing--xs); flex: 1; }
.boat-profile__body > * { margin-block: 0; }
.boat-profile__body > :not(.boat-profile__capacity):not(.boat-profile__name) { margin-top: var(--wp--preset--spacing--s); }
.boat-profile__name { font-size: var(--wp--custom--type--subheading); margin: 0; }
.boat-profile__capacity { margin: 0; font-size: var(--wp--preset--font-size--s); color: var(--wp--preset--color--primary); font-weight: var(--wp--custom--weight--medium); letter-spacing: var(--wp--custom--tracking--eyebrow); text-transform: uppercase; }
/* Facilities & specs: a small ruled table (dt label / dd value per row).
   The Guests row is derived from capacity min/max in render-helpers.php. */
.boat-profile__facilities-title { margin: 0 0 var(--wp--preset--spacing--s); }
.boat-profile__specs {
	display: grid;
	grid-template-columns: minmax(6rem, auto) 1fr;
	margin: 0;
	font-size: var(--wp--preset--font-size--s);
	border-top: 1px solid color-mix(in srgb, var(--wp--preset--color--primary) 18%, var(--wp--preset--color--white));
}
.boat-profile__spec {
	display: grid;
	grid-column: 1 / -1;
	grid-template-columns: subgrid;
	gap: var(--wp--preset--spacing--m);
	padding-block: var(--wp--preset--spacing--xs);
	border-bottom: 1px solid color-mix(in srgb, var(--wp--preset--color--primary) 18%, var(--wp--preset--color--white));
}
.boat-profile__specs dt { color: var(--wp--preset--color--slate); }
.boat-profile__specs dd { margin: 0; color: var(--wp--preset--color--ink); }
.boat-profile__actions { margin-top: auto; padding-top: var(--wp--preset--spacing--m); }

/* Landing (single-boat): split two-column. Carries its own section padding —
   the page flow gap is zero. */
.boat-profile--landing {
	display: grid;
	gap: var(--wp--preset--spacing--xl);
	grid-template-columns: minmax(0, 1fr);
	align-items: center;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding-block: var(--wp--preset--spacing--xl);
}
.boat-profile--landing .boat-profile__media { aspect-ratio: 4 / 3; border-radius: var(--wp--custom--radius--large); }
.boat-profile--landing .boat-profile__body { padding: 0; }
.boat-profile--landing .boat-profile__name { font-family: var(--wp--preset--font-family--display); font-weight: var(--wp--custom--weight--light); font-size: var(--wp--custom--type--title); line-height: var(--wp--custom--leading--tight); }
@media (min-width: 62rem) { .boat-profile--landing { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ==========================================================================
   16. Testimonials  (acf/testimonials)
   ≤ 3 items: .testimonials--static (plain grid, no chrome)
   ≥ 4 items: .testimonials--carousel (scroll-snap track + prev/next; no Slick)
   0 items:   render nothing
   ========================================================================== */
.testimonials__header { margin-bottom: var(--wp--preset--spacing--xl); }
.testimonials__track { list-style: none; margin: 0; padding: 0; }
.testimonials--static .testimonials__track {
	display: grid;
	gap: var(--wp--preset--spacing--l);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
}
.testimonials--carousel .testimonials__track {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: minmax(16rem, 85%);
	gap: var(--wp--preset--spacing--l);
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-padding-inline: var(--wp--preset--spacing--gutter);
	padding-block: var(--wp--preset--spacing--s) var(--wp--preset--spacing--l); /* room for card shadow */
	scrollbar-width: none;
}
.testimonials--carousel .testimonials__track::-webkit-scrollbar { display: none; }
.testimonials--carousel .testimonials__item { scroll-snap-align: start; display: flex; }
.testimonials--carousel .testimonials__item > .testimonial { flex: 1; }
@media (min-width: 40rem) { .testimonials--carousel .testimonials__track { grid-auto-columns: calc((100% - var(--wp--preset--spacing--l)) / 2); } }
@media (min-width: 62rem) { .testimonials--carousel .testimonials__track { grid-auto-columns: calc((100% - 2 * var(--wp--preset--spacing--l)) / 3); } }
.testimonials__controls { display: flex; justify-content: center; gap: var(--wp--preset--spacing--s); margin-top: var(--wp--preset--spacing--m); }
.testimonials--static .testimonials__controls { display: none; }
.testimonials__button {
	inline-size: 2.75rem;
	block-size: 2.75rem;
	border-radius: var(--wp--custom--radius--pill);
	border: 0;
	box-shadow: inset 0 0 0 1px var(--wp--preset--color--primary);
	background: transparent;
	color: var(--wp--preset--color--primary);
	display: grid;
	place-items: center;
	cursor: pointer;
	transition: background-color var(--wp--custom--duration--quick) var(--wp--custom--easing--standard), color var(--wp--custom--duration--quick) var(--wp--custom--easing--standard);
}
.testimonials__button:hover { background: var(--wp--preset--color--primary); color: var(--wp--preset--color--white); }
.testimonials__button[disabled] { opacity: 0.4; pointer-events: none; }
.testimonials__button svg { inline-size: 1.125rem; block-size: 1.125rem; stroke: currentColor; stroke-width: 1.5; fill: none; }

/* ==========================================================================
   17. Gravity Forms
   ========================================================================== */
.gform_wrapper.gravity-theme { --gf-ctrl-radius: var(--wp--custom--radius--medium); }
.gform_wrapper.gravity-theme .gfield_label,
.gform_wrapper.gravity-theme .gform-field-label {
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--s);
	font-weight: var(--wp--custom--weight--medium);
	color: var(--wp--preset--color--ink);
	margin-bottom: var(--wp--preset--spacing--xs);
}
.gform_wrapper.gravity-theme .gfield_required { color: var(--wp--preset--color--primary); }
.gform_wrapper.gravity-theme :is(input:not([type="checkbox"], [type="radio"], [type="submit"]), select, textarea) {
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--m); /* ≥16px stops iOS zoom */
	font-weight: var(--wp--custom--weight--light);
	color: var(--wp--preset--color--ink);
	background: var(--wp--preset--color--white);
	border: 1px solid var(--wp--custom--line--hairline);
	border-radius: var(--wp--custom--radius--medium);
	padding: 0.75rem 1rem;
	min-block-size: 3rem;
	transition: border-color var(--wp--custom--duration--quick) var(--wp--custom--easing--standard);
}
.gform_wrapper.gravity-theme :is(input, select, textarea):hover { border-color: var(--wp--preset--color--primary); }
.gform_wrapper.gravity-theme :is(input, select, textarea):focus {
	outline: 2px solid var(--wp--preset--color--primary);
	outline-offset: 1px;
	border-color: var(--wp--preset--color--primary);
}
.gform_wrapper.gravity-theme .gfield_description { font-size: var(--wp--preset--font-size--xs); color: var(--wp--preset--color--slate); }
/* Errors use ink text + primary-dark rule. No red in the palette by design; the
   message, icon and border thickness carry the state, not hue alone. */
.gform_wrapper.gravity-theme .gfield_error :is(input, select, textarea) { border: 2px solid var(--wp--preset--color--primary-dark); }
.gform_wrapper.gravity-theme .gfield_validation_message,
.gform_wrapper.gravity-theme .validation_message {
	background: var(--wp--preset--color--sand);
	color: var(--wp--preset--color--ink);
	border: 0;
	border-inline-start: 0;
	border-radius: var(--wp--custom--radius--small);
	font-size: var(--wp--preset--font-size--s);
	padding: var(--wp--preset--spacing--s) var(--wp--preset--spacing--m);
	margin-top: var(--wp--preset--spacing--xs);
}
.gform_wrapper.gravity-theme .gform_validation_errors {
	background: var(--wp--preset--color--sand);
	border: 1px solid var(--wp--custom--line--hairline);
	border-radius: var(--wp--custom--radius--medium);
	box-shadow: none;
}
.gform_wrapper.gravity-theme .gform_validation_errors > h2 { color: var(--wp--preset--color--ink); font-size: var(--wp--preset--font-size--m); font-family: var(--wp--preset--font-family--body); font-weight: var(--wp--custom--weight--medium); }
.gform_wrapper.gravity-theme .gform_footer :is(input[type="submit"], button) {
	background: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--white);
	border: 0;
	border-radius: var(--wp--custom--radius--pill);
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--s);
	font-weight: var(--wp--custom--weight--medium);
	letter-spacing: var(--wp--custom--tracking--caps);
	text-transform: uppercase;
	padding: 0.95em 2em;
	cursor: pointer;
}
.gform_wrapper.gravity-theme .gform_footer :is(input[type="submit"], button):hover { background: var(--wp--preset--color--primary-dark); }
.gform_confirmation_message { background: var(--wp--preset--color--sand); color: var(--wp--preset--color--ink); padding: var(--wp--preset--spacing--l); border-radius: var(--wp--custom--radius--large); }

/* ==========================================================================
   18. Third-party embeds — wrap each in .embed-frame
   Instagram feed (Smash Balloon #sb_instagram) · Google reviews widget
   ========================================================================== */
.embed-frame { font-family: var(--wp--preset--font-family--body); color: var(--wp--preset--color--slate); }
.embed-frame :where(h1, h2, h3, h4, h5) { font-family: var(--wp--preset--font-family--heading); color: var(--wp--preset--color--ink); font-weight: var(--wp--custom--weight--regular); }
.embed-frame a { color: var(--wp--preset--color--primary); }
.embed-frame :where(img) { border-radius: var(--wp--custom--radius--medium); }
.embed-frame :where(button, .sbi_btn, .sbi_follow_btn a, [class*="button"]) {
	background: var(--wp--preset--color--primary) !important; /* third-party inline styles */
	color: var(--wp--preset--color--white) !important;
	border-radius: var(--wp--custom--radius--pill) !important;
	font-family: var(--wp--preset--font-family--body) !important;
	font-weight: var(--wp--custom--weight--medium) !important;
	letter-spacing: var(--wp--custom--tracking--caps);
	text-transform: uppercase;
	font-size: var(--wp--preset--font-size--xs) !important;
}
/* No card chrome on reviews: Trustindex nests many [class*="review"] layers, and its own preset owns the look */
/* Trustindex caps itself at 760px; inside our wide frame it fills the rail */
.embed-frame--reviews :is(.ti-widget, .ti-widget-container) { max-width: none !important; width: 100% !important; }

/* ==========================================================================
   18b. FAQs  (acf/faqs) — static Q&A grid (no accordion: open/close reflow
   ruins the grid). Two columns from 62rem; hairline above each item.
   ========================================================================== */
/* Width comes from the parent constrained layout (none/wide/full) — no
   max-width here, or it fights the layout engine's .alignwide rule. */
.faq-list__items { display: grid; gap: 0 var(--wp--preset--spacing--xl); align-items: start; }
@media (min-width: 62rem) {
	.faq-list__items { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.faq-item { border-top: 1px solid var(--wp--custom--line--hairline); padding: var(--wp--preset--spacing--l) 0; }
.faq-item__q {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: var(--wp--custom--weight--regular);
	font-size: var(--wp--preset--font-size--l);
	color: var(--wp--preset--color--ink);
	margin: 0 0 var(--wp--preset--spacing--xs);
}
.faq-item__a {
	color: var(--wp--preset--color--slate);
	font-size: var(--wp--preset--font-size--m);
	max-width: 62ch;
}
.faq-item__a > :first-child { margin-top: 0; }
.faq-item__a > :last-child { margin-bottom: 0; }
.is-style-band-foam .faq-item__a,
.is-style-band-tide .faq-item__a { color: var(--wp--preset--color--ink); }

/* ==========================================================================
   20. Functions page  (page-functions template · acf/guest-sizer ·
   package-card--detailed · boat fits chip · sticky CTA · enquiry band)
   ========================================================================== */

/* Hero: 78vh variant of the cover, gradient darker towards the bottom */
.ccm-hero-functions { min-height: min(78vh, 48rem); }
.ccm-hero-functions > span.wp-block-cover__background {
	background-color: transparent;
	background-image: linear-gradient(180deg, rgba(18, 51, 63, 0.5) 0%, rgba(18, 51, 63, 0.62) 45%, rgba(18, 51, 63, 0.72) 100%);
	opacity: 1 !important; /* beats core's has-background-dim-0 */
}
.ccm-pill-tags { display: flex; flex-wrap: wrap; gap: var(--wp--preset--spacing--s); justify-content: center; list-style: none; padding: 0; margin: var(--wp--preset--spacing--l) 0 0; }
.ccm-pill-tags li {
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--white) 55%, transparent);
	border-radius: var(--wp--custom--radius--pill);
	padding: 0.6em 1.4em;
	font-size: var(--wp--preset--font-size--xs);
	letter-spacing: var(--wp--custom--tracking--eyebrow);
	text-transform: uppercase;
	color: var(--wp--preset--color--white);
}

/* Guest sizer */
.ccm-sizer__head { margin-bottom: var(--wp--preset--spacing--xl); }
.ccm-sizer__intro { max-width: 40rem; margin-inline: auto; }
.ccm-sizer__card {
	background: var(--wp--preset--color--white);
	border-radius: var(--wp--custom--radius--large);
	box-shadow: var(--wp--custom--shadow--card);
	padding: var(--wp--preset--spacing--xl);
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--xl);
	align-items: center;
	justify-content: center;
	container-type: inline-size;
	max-width: 62.5rem;
	margin-inline: auto;
}
.ccm-sizer__input-col { display: flex; flex-direction: column; gap: var(--wp--preset--spacing--m); align-items: center; flex: 0 0 21.25rem; max-width: 100%; }
.ccm-sizer__label { font-size: var(--wp--preset--font-size--xs); letter-spacing: var(--wp--custom--tracking--eyebrow); text-transform: uppercase; color: var(--wp--preset--color--slate); }
.ccm-sizer__stepper { display: flex; align-items: center; gap: var(--wp--preset--spacing--m); }
.ccm-sizer__step {
	inline-size: 3.25rem;
	block-size: 3.25rem;
	border-radius: var(--wp--custom--radius--pill);
	border: 1px solid var(--wp--custom--line--hairline);
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--primary);
	font-size: var(--wp--preset--font-size--xl);
	line-height: 1;
	cursor: pointer;
	transition: background-color var(--wp--custom--duration--quick) var(--wp--custom--easing--standard);
}
.ccm-sizer__step:hover { background: var(--wp--preset--color--sand); }
.ccm-sizer__count {
	inline-size: 8.25rem;
	block-size: 4.75rem;
	text-align: center;
	font-family: var(--wp--preset--font-family--display);
	font-weight: var(--wp--custom--weight--light);
	font-size: var(--wp--custom--type--title);
	color: var(--wp--preset--color--primary);
	border: 1px solid var(--wp--custom--line--hairline);
	border-radius: var(--wp--custom--radius--medium);
	background: var(--wp--preset--color--white);
	appearance: textfield;
	-moz-appearance: textfield;
}
.ccm-sizer__count::-webkit-outer-spin-button, .ccm-sizer__count::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.ccm-sizer__picks { display: flex; gap: var(--wp--preset--spacing--s); flex-wrap: wrap; justify-content: center; }
.ccm-sizer__pick {
	border-radius: var(--wp--custom--radius--pill);
	padding: 0.5em 1.2em;
	font-size: var(--wp--preset--font-size--s);
	cursor: pointer;
	font-family: var(--wp--preset--font-family--body);
	border: 1px solid var(--wp--custom--line--hairline);
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--ink);
	transition: background-color var(--wp--custom--duration--quick) var(--wp--custom--easing--standard), color var(--wp--custom--duration--quick) var(--wp--custom--easing--standard), border-color var(--wp--custom--duration--quick) var(--wp--custom--easing--standard);
}
.ccm-sizer__pick[aria-pressed="true"] { background: var(--wp--preset--color--primary); border-color: var(--wp--preset--color--primary); color: var(--wp--preset--color--white); }
.ccm-sizer__result { flex: 1 1 21.25rem; min-width: 0; border-top: 1px solid var(--wp--custom--line--hairline); padding-top: var(--wp--preset--spacing--l); }
.ccm-sizer__result-title { font-size: var(--wp--custom--type--subheading); margin: 0 0 var(--wp--preset--spacing--s); }
.ccm-sizer__result-body { margin: 0 0 var(--wp--preset--spacing--l); }
.ccm-sizer__fallback { flex: 1 1 21.25rem; }
.ccm-sizer__fallback ul { margin: 0; padding-inline-start: 1.1em; display: grid; gap: var(--wp--preset--spacing--s); }
/* The columns are 340 + 40 + 340 = 720px; query the card so the divider keys
   off the same box the wrap does (the prototype's container-query rule). */
@container (min-width: 45rem) {
	.ccm-sizer__result { border-top: 0; padding-top: 0; border-left: 1px solid var(--wp--custom--line--hairline); padding-left: var(--wp--preset--spacing--xl); min-width: 18.75rem; }
}

/* "Every package includes" numbered list */
.ccm-numbered { display: grid; gap: 0; }
.ccm-numbered__row { display: flex; gap: var(--wp--preset--spacing--m); align-items: baseline; padding: var(--wp--preset--spacing--m) 0; border-bottom: 1px solid var(--wp--custom--line--hairline); }
.ccm-numbered__n { font-family: var(--wp--preset--font-family--display); font-weight: var(--wp--custom--weight--light); color: var(--wp--preset--color--primary); font-size: var(--wp--preset--font-size--l); }
.ccm-numbered__t { font-family: var(--wp--preset--font-family--heading); font-size: var(--wp--preset--font-size--l); color: var(--wp--preset--color--ink); }
.ccm-numbered__note { font-size: var(--wp--preset--font-size--s); color: var(--wp--preset--color--slate); padding-top: var(--wp--preset--spacing--m); }
/* Rows that link to a menu PDF: label + arrow, no underline until hover */
.ccm-numbered__link { display: flex; flex: 1; justify-content: space-between; align-items: baseline; gap: var(--wp--preset--spacing--m); text-decoration: none; color: inherit; }
.ccm-numbered__link .ccm-numbered__t { transition: color var(--wp--custom--duration--quick) var(--wp--custom--easing--standard); }
.ccm-numbered__link:hover .ccm-numbered__t { color: var(--wp--preset--color--primary); }
.ccm-numbered__link::after {
	content: "";
	flex: none;
	inline-size: 1em;
	block-size: 0.9em;
	align-self: center;
	background: var(--wp--preset--color--primary);
	-webkit-mask: url("assets/icons/arrow-right.svg") center / contain no-repeat;
	mask: url("assets/icons/arrow-right.svg") center / contain no-repeat;
}
.ccm-numbered__hint { font-size: var(--wp--preset--font-size--xs); color: var(--wp--preset--color--slate); letter-spacing: var(--wp--custom--tracking--eyebrow); text-transform: uppercase; align-self: center; white-space: nowrap; }

/* White band option for the packages block */
.wp-block-group.is-style-band-white { background-color: var(--wp--preset--color--white); padding-top: var(--wp--preset--spacing--xxl); padding-bottom: var(--wp--preset--spacing--xxl); }

/* Detailed package card (functions page) */
.package-card--detailed .package-card__top { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--wp--preset--spacing--m); }
.package-card--detailed .package-card__title { margin-top: var(--wp--preset--spacing--xs); } /* tag + title: tight pair */
.package-card__pp { margin: 0; text-align: right; white-space: nowrap; }
.package-card__pp-label { display: block; font-size: var(--wp--preset--font-size--xs); letter-spacing: var(--wp--custom--tracking--eyebrow); text-transform: uppercase; color: var(--wp--preset--color--slate); }
.package-card__pp strong { font-family: var(--wp--preset--font-family--display); font-weight: var(--wp--custom--weight--light); font-size: var(--wp--custom--type--heading); color: var(--wp--preset--color--primary); line-height: 1; }
.package-card__pp-unit { font-size: var(--wp--preset--font-size--s); color: var(--wp--preset--color--slate); margin-left: 0.25em; }
.package-card__blurb { margin: 0; flex: 1; }
.package-card__food { border-top: 1px solid var(--wp--custom--line--hairline); padding-top: var(--wp--preset--spacing--m); }
.package-card__food-label { display: block; font-size: var(--wp--preset--font-size--xs); letter-spacing: var(--wp--custom--tracking--eyebrow); text-transform: uppercase; color: var(--wp--preset--color--slate); margin-bottom: var(--wp--preset--spacing--xs); }
.package-card__food-line { font-size: var(--wp--preset--font-size--s); color: var(--wp--preset--color--ink); }
.package-card__addon {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: var(--wp--preset--spacing--m);
	background: var(--accent-tint, var(--wp--preset--color--sand));
	border-radius: var(--wp--custom--radius--medium);
	padding: var(--wp--preset--spacing--s) var(--wp--preset--spacing--m);
	font-size: var(--wp--preset--font-size--s);
	color: var(--wp--preset--color--ink);
}
.package-card__addon-price { font-size: var(--wp--preset--font-size--xs); letter-spacing: var(--wp--custom--tracking--eyebrow); text-transform: uppercase; white-space: nowrap; }
/* Choosable affordance: the whole card is clickable and says so */
.package-card--detailed { cursor: pointer; outline: 2px solid transparent; outline-offset: 3px; transition: outline-color var(--wp--custom--duration--base) var(--wp--custom--easing--standard), transform var(--wp--custom--duration--base) var(--wp--custom--easing--standard), box-shadow var(--wp--custom--duration--base) var(--wp--custom--easing--standard); }
.package-card--detailed:hover { outline-color: color-mix(in srgb, var(--wp--preset--color--primary) 35%, transparent); }
.package-card--detailed .package-card__actions .wp-block-button__link::before {
	content: "";
	display: inline-block;
	inline-size: 1em;
	block-size: 1em;
	margin-inline-end: 0.6em;
	vertical-align: -0.15em;
	border-radius: 50%;
	box-shadow: inset 0 0 0 1.5px currentColor;
	transition: background-color var(--wp--custom--duration--quick) var(--wp--custom--easing--standard);
}
.package-card--detailed[data-selected="true"] .package-card__actions .wp-block-button__link::before {
	background: radial-gradient(circle at center, currentColor 0 0.28em, transparent 0.32em);
}
.package-card--detailed[data-selected="true"] { outline: 2px solid var(--wp--preset--color--primary); outline-offset: 3px; }
.package-card--detailed[data-selected="true"] .package-card__actions .wp-block-button__link {
	background: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--white);
	box-shadow: none;
}
.packages__byo-note { font-weight: var(--wp--custom--weight--medium); color: var(--wp--preset--color--primary-dark); }

/* Boat card: "Fits your group" (hidden until the sizer says so). Floats over the photo so the card it marks stays in line with the rest */
.boat-profile__fits {
	display: none;
	position: absolute;
	inset-block-start: var(--wp--preset--spacing--s);
	inset-inline-start: 50%;
	transform: translateX(-50%);
	z-index: 2;
	white-space: nowrap;
	background: var(--wp--preset--color--foam);
	color: var(--wp--preset--color--primary-dark);
	border-radius: var(--wp--custom--radius--pill);
	padding: 0.45em 1.2em;
	font-size: var(--wp--preset--font-size--xs);
	letter-spacing: var(--wp--custom--tracking--eyebrow);
	text-transform: uppercase;
	margin: 0;
}
.boat-profile--card[data-ccm-boat] { transition: background-color var(--wp--custom--duration--base) var(--wp--custom--easing--standard); }
.boat-profile--card[data-fits="true"] { background: var(--wp--preset--color--foam); }
.boat-profile--card[data-fits="true"] .boat-profile__fits { display: inline-block; }
.fleet-grid .boat-profile--card[data-fits="true"] { background: transparent; }
.boat-profile__food { margin-top: var(--wp--preset--spacing--s); }
.boat-profile__food-label { display: block; font-size: var(--wp--preset--font-size--xs); letter-spacing: var(--wp--custom--tracking--eyebrow); text-transform: uppercase; color: var(--wp--preset--color--slate); margin-bottom: var(--wp--preset--spacing--xs); }
.boat-profile__food-note { font-size: var(--wp--preset--font-size--s); color: var(--wp--preset--color--ink); }

/* Ink band (vessels CTA + enquiry section) */
.ccm-band-ink { background: var(--wp--preset--color--ink); color: var(--wp--preset--color--white); }
.ccm-band-ink :where(h2, h3) { color: var(--wp--preset--color--white); }
.ccm-band-ink p { color: color-mix(in srgb, var(--wp--preset--color--white) 78%, var(--wp--preset--color--ink)); }
.ccm-band-ink a:where(:not(.wp-block-button__link)) { color: var(--wp--preset--color--white); }
.ccm-band-ink .is-style-eyebrow { color: color-mix(in srgb, var(--wp--preset--color--white) 70%, var(--wp--preset--color--ink)); }
.ccm-band-ink .wp-block-button:not([class*="is-style-"]) > .wp-block-button__link { background: var(--wp--preset--color--white); color: var(--wp--preset--color--primary); }
.ccm-band-ink .wp-block-button:not([class*="is-style-"]) > .wp-block-button__link:hover { background: var(--wp--preset--color--sand); color: var(--wp--preset--color--primary-dark); }
.ccm-contact-stack { border-top: 1px solid color-mix(in srgb, var(--wp--preset--color--white) 18%, transparent); padding-top: var(--wp--preset--spacing--l); display: grid; gap: var(--wp--preset--spacing--l); }
.ccm-contact-stack .is-style-eyebrow { margin-bottom: var(--wp--preset--spacing--xs); }
.ccm-contact-phone { font-family: var(--wp--preset--font-family--display); font-weight: var(--wp--custom--weight--light); font-size: var(--wp--custom--type--heading); color: var(--wp--preset--color--white) !important; text-decoration: none; }

/* Enquiry form card (the Gravity Form sits inside) */
.ccm-form-card {
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--slate);
	border-radius: var(--wp--custom--radius--large);
	padding: var(--wp--preset--spacing--xl);
	box-shadow: var(--wp--custom--shadow--float);
}
.ccm-form-card .gform_footer :is(input[type="submit"], button) { inline-size: 100%; }
/* GF sizes fields small/medium (25%/50%) by default; in the card every control runs full width */
.ccm-form-card .gform_wrapper.gravity-theme .gfield :is(input:not([type="checkbox"], [type="radio"]), select, textarea) { inline-size: 100%; max-inline-size: 100%; box-sizing: border-box; }
/* Datepicker trigger sits inside the date field instead of wrapping under it */
.ccm-form-card .ginput_container_date { position: relative; }
.ccm-form-card .ginput_container_date input { padding-inline-end: 3.5rem; }
.ccm-form-card .ginput_container_date .ui-datepicker-trigger {
	position: absolute;
	inset-inline-end: 1rem;
	inset-block-start: 50%;
	transform: translateY(-50%);
	margin: 0;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
}
.ccm-form-card .gform_wrapper.gravity-theme .gform_footer { margin-block-start: var(--wp--preset--spacing--l); padding-block-start: 0; }
.ccm-form-hint { color: var(--wp--preset--color--primary); font-weight: var(--wp--custom--weight--medium); }
.ccm-byo-note { background: var(--wp--preset--color--sand); border-radius: var(--wp--custom--radius--medium); padding: var(--wp--preset--spacing--m); font-size: var(--wp--preset--font-size--s); color: var(--wp--preset--color--ink); }
.ccm-byo-note strong { display: block; font-size: var(--wp--preset--font-size--xs); letter-spacing: var(--wp--custom--tracking--eyebrow); text-transform: uppercase; color: var(--wp--preset--color--slate); margin-bottom: var(--wp--preset--spacing--xs); }
.ccm-reply-note { text-align: center; font-size: var(--wp--preset--font-size--s); color: var(--wp--preset--color--slate); margin: var(--wp--preset--spacing--m) 0 0; }

/* Menu download rows */
.ccm-menu-link > .wp-block-button__link {
	display: flex;
	justify-content: space-between;
	align-items: center;
	inline-size: 100%;
	text-align: left;
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--ink);
	border-radius: var(--wp--custom--radius--medium);
	box-shadow: var(--wp--custom--shadow--card);
	padding: var(--wp--preset--spacing--l);
	text-transform: none;
	letter-spacing: 0;
	font-size: var(--wp--preset--font-size--m);
	font-family: var(--wp--preset--font-family--heading);
}
.ccm-menu-link > .wp-block-button__link::after {
	content: "";
	inline-size: 1.1em;
	block-size: 1em;
	background: var(--wp--preset--color--primary);
	-webkit-mask: url("assets/icons/arrow-right.svg") center / contain no-repeat;
	mask: url("assets/icons/arrow-right.svg") center / contain no-repeat;
}
.ccm-menu-link > .wp-block-button__link:hover { box-shadow: var(--wp--custom--shadow--lift); color: var(--wp--preset--color--primary); }
.ccm-menu-link { inline-size: 100%; }

/* (two-column is the FAQ grid's default now — .faq-two-col kept harmless in old content) */
.faq-item__applies { font-size: var(--wp--preset--font-size--xs); color: var(--wp--preset--color--slate); margin: var(--wp--preset--spacing--s) 0 0; }

/* Sticky CTA bar — deliberate exception to the "only the booking panel is
   sticky" rule, for this page only (spec §5). Hidden while #enquire is visible. */
.ccm-sticky-cta {
	position: fixed;
	inset-inline: 0;
	bottom: 0;
	z-index: 40;
	background: var(--wp--preset--color--primary);
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: var(--wp--preset--spacing--s) var(--wp--preset--spacing--l);
	padding: var(--wp--preset--spacing--s) var(--wp--preset--spacing--gutter);
	box-shadow: 0 -2px 14px rgba(18, 51, 63, 0.14);
	transition: transform var(--wp--custom--duration--base) var(--wp--custom--easing--standard);
}
.ccm-sticky-cta[data-hidden="true"] { transform: translateY(110%); }
.ccm-sticky-cta p { margin: 0; color: var(--wp--preset--color--white); font-size: var(--wp--preset--font-size--s); }
.ccm-sticky-cta .wp-block-buttons { gap: var(--wp--preset--spacing--s); }
.has-ccm-sticky-cta { padding-bottom: 4.5rem; }

/* ==========================================================================
   19. Motion preferences
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; scroll-behavior: auto !important; }
	:where(.cruise-card, .package-card, .boat-profile--card):hover { transform: none; }
	:where(.cruise-card, .package-card, .boat-profile--card):hover .media-frame img { transform: none; }
}
