/* L’Harfang block library. All selectors stay inside the plugin namespace. */
.hfb {
	--hfb-brand: #5d1e03;
	--hfb-brand-dark: #351000;
	--hfb-cream: #f2ebd1;
	--hfb-canvas: #fbf8ee;
	--hfb-pine: #0f2e3b;
	--hfb-glacier: #bfe6f2;
	--hfb-coral: #e65f3c;
	--hfb-border: #d7dedf;
	--hfb-muted: #526168;
	--hfb-display: var(--wp--preset--font-family--display, "Fraunces", Georgia, serif);
	--hfb-body: var(--wp--preset--font-family--body, "Manrope", Arial, sans-serif);
	--hfb-shadow: 0 22px 64px rgb(15 46 59 / 13%);
	box-sizing: border-box; width: 100%; margin-block: 0; padding-block: clamp(3rem, 7vw, 6.875rem);
	background: var(--hfb-color-background, var(--hfb-canvas)); color: var(--hfb-color-text, var(--hfb-pine)); font: 400 1rem/1.65 var(--hfb-body); overflow-wrap: anywhere;
}
.hfb *, .hfb *::before, .hfb *::after { box-sizing: border-box; }
.hfb .hfb-shell { width: min(1180px, calc(100% - 40px)); margin-inline: auto; }
.hfb :where(p, figure, blockquote, dl) { margin: 0; }
.hfb :where(img) { display: block; max-width: 100%; height: auto; }
.hfb :where(a) { color: inherit; }
.hfb :where(h1, h2, h3, h4) { margin: 0; font-family: var(--hfb-display); font-weight: 650; line-height: 1.12; letter-spacing: -.035em; }
.hfb .hfb-heading { margin-bottom: 2.875rem; }
.hfb .hfb-eyebrow { display: flex; align-items: center; gap: .75rem; margin-bottom: 1.5rem; font: 800 .75rem/1.6 var(--hfb-body); letter-spacing: .14em; text-transform: uppercase; color: var(--hfb-color-eyebrow, inherit); }
.hfb .hfb-eyebrow::after { content: ''; flex: 0 0 46px; height: 2px; background: var(--hfb-color-accent, var(--hfb-coral)); }
.hfb .hfb-title { max-width: 950px; margin: 0; font: 650 clamp(2.5rem, 5vw, 5rem)/1.05 var(--hfb-display); letter-spacing: -.045em; color: var(--hfb-color-title, inherit); text-wrap: balance; }
.hfb .hfb-description { max-width: 640px; margin: 1.25rem 0 0; color: var(--hfb-color-description, var(--hfb-muted)); }
.hfb .hfb-actions { display: flex; gap: .75rem; flex-wrap: wrap; align-items: center; }
.hfb .hfb-button { position: relative; display: inline-flex; align-items: center; justify-content: center; min-height: 48px; padding: .875rem 1.375rem; border: 1.5px solid transparent; border-radius: 999px; --hfb-button-bg: var(--hfb-coral); --hfb-button-text: var(--hfb-brand-dark); background: var(--hfb-color-button-background, var(--hfb-button-bg)); color: var(--hfb-color-button-text, var(--hfb-button-text)); font: 800 1rem/1.35 var(--hfb-body); text-decoration: none; text-align: center; transition: transform .18s, box-shadow .18s; }
.hfb .hfb-button--light { --hfb-button-bg: var(--hfb-cream); --hfb-button-text: var(--hfb-brand); }
.hfb .hfb-button--dark { --hfb-button-bg: var(--hfb-pine); --hfb-button-text: #fff; }
.hfb .hfb-button--outline { --hfb-button-bg: transparent; --hfb-button-text: var(--hfb-pine); border-color: var(--hfb-color-border, currentColor); }
.hfb .hfb-button:hover { transform: translateY(-2px); box-shadow: 0 22px 64px var(--hfb-color-shadow, rgb(15 46 59 / 13%)); text-decoration: underline; text-underline-offset: .25em; background: var(--hfb-color-button-hover-background, var(--hfb-color-button-background, var(--hfb-button-bg))); color: var(--hfb-color-button-hover-text, var(--hfb-color-button-text, var(--hfb-button-text))); }
.hfb .hfb-button--secondary-action { background: var(--hfb-color-secondary-background, var(--hfb-button-bg)); color: var(--hfb-color-secondary-text, var(--hfb-button-text)); }
.hfb .hfb-button--secondary-action:hover { background: var(--hfb-color-secondary-hover-background, var(--hfb-color-secondary-background, var(--hfb-button-bg))); color: var(--hfb-color-secondary-hover-text, var(--hfb-color-secondary-text, var(--hfb-button-text))); }
.hfb .hfb-button:active { transform: none; box-shadow: none; }
.hfb :where(a, summary):focus-visible { outline: 3px solid var(--hfb-color-focus, var(--hfb-pine)); outline-offset: 4px; box-shadow: 0 0 0 4px var(--hfb-color-focus-halo, #fff); }
.hfb .hfb-badge { display: inline-block; align-self: start; padding: .5rem .75rem; border-radius: 999px; background: var(--hfb-color-badge-background, var(--hfb-cream)); color: var(--hfb-color-badge-text, var(--hfb-brand)); font: 800 .75rem/1.4 var(--hfb-body); }
.hfb .hfb-arrow { display: inline-grid; flex: 0 0 44px; width: 44px; min-height: 44px; place-items: center; border-radius: 50%; background: var(--hfb-color-icon-background, var(--hfb-pine)); color: var(--hfb-color-icon-color, #fff); font-size: 1.25rem; text-decoration: none; }
.hfb .hfb-arrow:hover { background: var(--hfb-color-icon-hover-background, var(--hfb-brand)); color: var(--hfb-color-icon-hover-color, var(--hfb-color-icon-color, #fff)); }
.hfb .hfb-heading-row { display: flex; align-items: center; justify-content: space-between; gap: 2rem; margin-bottom: 2.875rem; }
.hfb .hfb-heading-row .hfb-heading { margin-bottom: 0; }

/* 01 — Hero. */
.hfb.hfb--hero { position: relative; isolation: isolate; display: grid; align-items: end; min-height: 650px; padding-block: clamp(4rem, 9vw, 8rem); background: var(--hfb-color-background, var(--hfb-pine)); color: var(--hfb-color-text, #fff); }
.hfb--hero .hfb-hero-image { position: absolute; z-index: -2; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 22%; }
.hfb--hero::before { content: ''; position: absolute; z-index: -1; inset: 0; background: var(--hfb-color-overlay, linear-gradient(90deg, rgb(15 46 59 / 96%) 0%, rgb(15 46 59 / 78%) 65%, rgb(15 46 59 / 25%))); opacity: var(--hfb-overlay-opacity, 1); }
.hfb--hero .hfb-title { max-width: 880px; font-size: clamp(3rem, 7vw, 7rem); line-height: 1; }
.hfb--hero .hfb-description { color: var(--hfb-color-description, #fff); max-width: 580px; font-size: 1.0625rem; }
.hfb--hero .hfb-eyebrow { color: var(--hfb-color-eyebrow, var(--hfb-glacier)); }
.hfb--hero .hfb-heading { margin-bottom: 2rem; }

/* 02 — Reservation entry point, connected to the existing booking page. */
.hfb.hfb--booking { padding-block: 2rem; }
.hfb .hfb-booking { padding: 1.625rem; border: 1px solid var(--hfb-color-border, var(--hfb-border)); border-radius: 32px; background: var(--hfb-color-surface, #fff); box-shadow: 0 22px 64px var(--hfb-color-shadow, rgb(15 46 59 / 13%)); }
.hfb .hfb-booking-top { display: flex; align-items: start; justify-content: space-between; gap: 1.5rem; margin-bottom: 1.25rem; }
.hfb .hfb-booking-top .hfb-heading { margin-bottom: 0; }
.hfb .hfb-booking-top .hfb-title { font-size: 1.75rem; }
.hfb .hfb-booking-grid { display: flex; flex-wrap: wrap; gap: .75rem; }
.hfb .hfb-booking-step { flex: 1 1 180px; padding: 1rem; border: 1px solid var(--hfb-color-border, var(--hfb-border)); border-radius: 16px; background: var(--hfb-color-card-background, #f7f9f9); }
.hfb .hfb-booking-step strong, .hfb .hfb-booking-step span { display: block; }
.hfb .hfb-booking-step span { font-size: .875rem; color: var(--hfb-color-card-muted, var(--hfb-muted)); }
.hfb .hfb-booking-grid > .hfb-button { flex: 0 1 auto; }

.hfb .hfb-booking-step strong { color: var(--hfb-color-card-title, inherit); }
.hfb .hfb-booking--compact { display: flex; align-items: center; justify-content: space-between; gap: 1.25rem 2rem; }
.hfb .hfb-booking--compact .hfb-booking-top { flex: 1; align-items: center; flex-wrap: wrap; gap: .75rem 1.5rem; margin-bottom: 0; }
.hfb .hfb-booking--compact .hfb-title { font-size: 1.5rem; line-height: 1.15; }
.hfb .hfb-booking--compact .hfb-badge { align-self: center; background: var(--hfb-color-badge-background, #fff0eb); color: var(--hfb-color-badge-text, #a5361c); }
.hfb .hfb-booking--compact > .hfb-button { flex-shrink: 0; min-height: 62px; gap: .75rem; }
.hfb .hfb-booking--compact .hfb-description { margin-top: .5rem; font-size: .875rem; }
@media (max-width: 620px) {
	.hfb .hfb-booking--compact { flex-wrap: wrap; gap: .875rem; }
	.hfb .hfb-booking--compact .hfb-booking-top { flex-direction: row; }
	.hfb .hfb-booking--compact > .hfb-button { width: 100%; min-height: 48px; }
}

/* Rental dates use the same fields and inclusive dates as the reservation module. */
.hfb .hfb-booking--with-dates { display: block; }
.hfb .hfb-booking--with-dates .hfb-booking-top { margin-bottom: 1rem; }
.hfb .hfb-booking-intro { display: flex; flex-wrap: wrap; align-items: center; gap: .375rem 1.25rem; min-width: 0; }
.hfb .hfb-booking-intro .hfb-booking-date-help { max-width: 100%; }
.hfb .hfb-booking-dates { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; gap: .625rem; margin: 0; }
.hfb .hfb-booking-field { min-width: 0; padding: .625rem .875rem; border: 1px solid var(--hfb-color-border, var(--hfb-border)); border-radius: 16px; background: var(--hfb-color-card-background, #f8fafa); }
.hfb .hfb-booking-field label { display: block; margin-bottom: .25rem; color: var(--hfb-color-card-muted, var(--hfb-muted)); font: 800 .6875rem/1.5 var(--hfb-body); letter-spacing: .05em; text-transform: uppercase; }
.hfb .hfb-booking-field input { display: block; width: 100%; min-width: 0; min-height: 30px; margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent; color: var(--hfb-color-card-title, var(--hfb-pine)); font: 800 1rem/1.5 var(--hfb-body); color-scheme: light; }
.hfb .hfb-booking-field input:focus-visible { outline: 2px solid var(--hfb-color-focus, var(--hfb-pine)); outline-offset: 3px; }
.hfb .hfb-booking-dates > .hfb-button { min-height: 62px; }
.hfb .hfb-booking-date-help { grid-column: 1 / -1; margin: 0; color: var(--hfb-color-description, var(--hfb-muted)); font-size: .75rem; }
.hfb .hfb-booking-duration { font-weight: 800; }
@media (max-width: 620px) {
	.hfb .hfb-booking-dates { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.hfb .hfb-booking-dates > .hfb-button { grid-column: 1 / -1; width: 100%; min-height: 48px; }
	.hfb .hfb-booking-field { padding-inline: .625rem; }
}

/* Keep the whole banner sticky within the page, including below the admin toolbar. */
.hfb.hfb--booking-sticky { position: sticky; top: 12px; z-index: 10; padding-block: 0; background: var(--hfb-color-background, transparent); }
@media (min-width: 961px) {
	.hfb.hfb--booking-sticky .hfb-booking { padding-block: 1.125rem; }
	.hfb.hfb--booking-sticky .hfb-booking--with-dates .hfb-booking-top { margin-bottom: .625rem; }
	.hfb.hfb--booking-sticky .hfb-booking-field { padding-block: .5rem; }
}
.admin-bar .hfb.hfb--booking-sticky { top: 44px; }
.home .page-content > .hfb.hfb--booking-sticky:first-child { margin-top: -72px; }
.home:has(.page-content > .hfb--booking-sticky:first-child) .harfang-template-banner--home { padding-bottom: calc(clamp(3rem, 6vw, 6rem) + 72px); }
html:has(.home .hfb--booking-sticky) { scroll-padding-top: 200px; }
html:has(.home .hfb--booking-sticky .hfb-booking--with-dates) { scroll-padding-top: 240px; }
@media (max-width: 782px) {
	.admin-bar .hfb.hfb--booking-sticky { top: 58px; }
}
@media (max-width: 600px) {
	.admin-bar .hfb.hfb--booking-sticky { top: 12px; }
}
/* On small screens the home banner scrolls with the page to leave the content visible. */
@media (max-width: 960px) {
	.home .hfb.hfb--booking-sticky { position: relative; top: auto; z-index: auto; }
	html:has(.home .hfb--booking-sticky),
	html:has(.home .hfb--booking-sticky .hfb-booking--with-dates) { scroll-padding-top: 16px; }
}
.editor-styles-wrapper .hfb.hfb--booking-sticky { position: relative; top: auto; z-index: auto; margin-top: 0; }
@media print {
	.hfb.hfb--booking-sticky { position: static; }
}

/* 03 — Quick links. */
.hfb.hfb--quicklinks { padding-block: 2rem 4rem; }
.hfb .hfb-quick-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .75rem; }
.hfb .hfb-quick-card { display: flex; gap: 1rem; align-items: center; padding: 1.125rem; border: 1px solid var(--hfb-color-border, var(--hfb-border)); border-radius: 20px; background: var(--hfb-color-card-background, #fff); color: var(--hfb-color-card-title, var(--hfb-pine)); text-decoration: none; }
.hfb a.hfb-quick-card:hover { box-shadow: 0 22px 64px var(--hfb-color-shadow, rgb(15 46 59 / 13%)); }
.hfb .hfb-quick-icon { display: grid; flex: 0 0 46px; height: 46px; place-items: center; border-radius: 15px; background: var(--hfb-color-icon-background, var(--hfb-glacier)); color: var(--hfb-color-icon-color, var(--hfb-pine)); }
.hfb .hfb-quick-icon svg { width: 24px; height: 24px; }
.hfb .hfb-quick-card strong { display: block; font-size: .9375rem; }
.hfb .hfb-quick-card > span > span { color: var(--hfb-color-card-muted, var(--hfb-muted)); font-size: .8125rem; }

/* 04 — Offers. */
.hfb.hfb--offers { background: var(--hfb-color-background, var(--hfb-pine)); color: var(--hfb-color-text, #fff); }
.hfb--offers .hfb-description { color: var(--hfb-color-description, #d4e2e7); }
.hfb .hfb-offer-grid { display: flex; flex-wrap: wrap; gap: 1rem; }
.hfb .hfb-offer-grid > .hfb-offer { flex: 1 1 calc((100% - 2rem) / 3); min-width: 0; }
.hfb .hfb-offer { position: relative; isolation: isolate; display: flex; min-height: 430px; flex-direction: column; justify-content: space-between; gap: 5rem; overflow: hidden; padding: 1.875rem; border-radius: 26px; background: var(--hfb-color-card-background, #17485a); color: var(--hfb-color-card-text, #fff); }
.hfb .hfb-offer > img { position: absolute; z-index: -2; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hfb .hfb-offer::after { content: ''; position: absolute; z-index: -1; inset: 0; background: var(--hfb-color-overlay, linear-gradient(to top, rgb(15 46 59 / 98%), rgb(15 46 59 / 55%) 65%, rgb(15 46 59 / 20%))); opacity: var(--hfb-overlay-opacity, 1); }
.hfb .hfb-offer--featured { background: var(--hfb-color-featured-background, linear-gradient(145deg, var(--hfb-brand), #9a3c16)); }
.hfb .hfb-offer--featured::after { background: var(--hfb-color-overlay, linear-gradient(to top, rgb(53 16 0 / 90%), transparent)); opacity: var(--hfb-overlay-opacity, 1); }
.hfb .hfb-offer-top { display: flex; align-items: center; justify-content: space-between; gap: .75rem; }
.hfb .hfb-number { margin-inline-start: auto; padding: .25rem .5rem; background: var(--hfb-color-number-background, var(--hfb-pine)); border-radius: 999px; font-size: .75rem; font-weight: 800; color: var(--hfb-color-number-text, #fff); }
.hfb .hfb-offer-content :is(h2, h3, h4) { font: 650 2.2rem/1.1 var(--hfb-display); color: var(--hfb-color-card-title, #fff); margin: 0 0 .75rem; }
.hfb .hfb-offer-content p { color: var(--hfb-color-card-text, #fff); font-size: .9375rem; margin: 0; }
.hfb .hfb-offer-content .hfb-button { margin-top: 1.5rem; }

/* 05 — Services. */
.hfb .hfb-service-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.125rem; }
.hfb .hfb-service-feature { position: relative; isolation: isolate; display: flex; align-items: end; min-height: 520px; padding: 2rem; overflow: hidden; border-radius: 32px; background: var(--hfb-color-feature-background, var(--hfb-pine)); color: var(--hfb-color-feature-text, #fff); }
.hfb .hfb-service-feature > img { position: absolute; z-index: -2; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hfb .hfb-service-feature::after { content: ''; position: absolute; z-index: -1; inset: 0; background: var(--hfb-color-overlay, linear-gradient(to top, rgb(15 46 59 / 96%), rgb(15 46 59 / 72%) 55%, rgb(15 46 59 / 15%))); opacity: var(--hfb-overlay-opacity, 1); }
.hfb .hfb-service-content :is(h2, h3, h4) { margin: 0 0 1rem; font: 650 2.5rem/1.1 var(--hfb-display); color: var(--hfb-color-feature-title, #fff); }
.hfb .hfb-service-content p { margin-bottom: 1.5rem; color: var(--hfb-color-feature-text, #fff); }
.hfb .hfb-service-list { display: grid; align-content: start; gap: .75rem; }
.hfb .hfb-service-row { display: flex; gap: 1rem; align-items: center; padding: 1.375rem; border: 1px solid var(--hfb-color-border, var(--hfb-border)); border-radius: 22px; background: var(--hfb-color-card-background, #fff); }
.hfb .hfb-service-number { display: grid; flex: 0 0 42px; height: 42px; place-items: center; border-radius: 14px; background: var(--hfb-color-number-background, var(--hfb-cream)); color: var(--hfb-color-number-text, var(--hfb-brand)); font-size: .75rem; font-weight: 800; }
.hfb .hfb-service-row > div { flex: 1; }
.hfb .hfb-service-row :is(h2, h3, h4) { font: 800 1rem/1.4 var(--hfb-body); margin: 0; color: var(--hfb-color-card-title, inherit); }
.hfb .hfb-service-row p { color: var(--hfb-color-card-muted, var(--hfb-muted)); font-size: .875rem; margin: .25rem 0 0; }
.hfb .hfb-service-simple { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); align-items: center; gap: clamp(2rem, 4vw, 3.5rem); padding: clamp(1.25rem, 4vw, 3rem); border: 1px solid var(--hfb-color-border, var(--hfb-border)); border-radius: 32px; background: var(--hfb-color-card-background, #fff); box-shadow: 0 18px 50px var(--hfb-color-shadow, rgb(15 46 59 / 8%)); }
.hfb .hfb-service-simple--no-image { grid-template-columns: minmax(0, 1fr); }
.hfb .hfb-service-visual { position: relative; min-width: 0; padding: clamp(1rem, 2vw, 1.75rem); border-radius: 24px; background: var(--hfb-color-feature-background, var(--hfb-cream)); border-bottom: 6px solid var(--hfb-color-accent, var(--hfb-coral)); }
.hfb .hfb-service-visual > img { display: block; width: 100%; height: auto; max-height: 360px; object-fit: contain; border-radius: 14px; }
.hfb .hfb-service-emblem { position: absolute; right: -12px; bottom: -20px; display: grid; place-items: center; width: 64px; height: 64px; border: 5px solid var(--hfb-color-card-background, #fff); border-radius: 50%; background: var(--hfb-color-icon-background, var(--hfb-pine)); color: var(--hfb-color-icon-color, #fff); }
.hfb .hfb-service-emblem svg { width: 27px; height: 27px; stroke-linecap: round; stroke-linejoin: round; }
.hfb .hfb-service-simple-copy { min-width: 0; }
.hfb .hfb-service-simple-copy::before { content: ''; display: block; width: 48px; height: 4px; margin-bottom: 1.25rem; border-radius: 2px; background: var(--hfb-color-accent, var(--hfb-coral)); }
.hfb .hfb-service-simple .hfb-heading { margin-bottom: 1.5rem; }
.hfb .hfb-service-simple .hfb-title { font-size: clamp(2rem, 3.5vw, 3.25rem); }
.hfb .hfb-service-simple .hfb-description { margin-top: 1rem; }
.hfb .hfb-service-highlights { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .625rem; margin: 0 0 1.75rem; padding: 0; list-style: none; }
.hfb .hfb-service-highlights li { display: flex; flex-direction: column; align-items: center; gap: .625rem; min-width: 0; margin: 0; padding: 1rem .5rem; border: 1px solid var(--hfb-color-border, #e7e5dc); border-radius: 16px; background: var(--hfb-pine); color: var(--hfb-cream); font-size: .8125rem; font-weight: 800; line-height: 1.35; text-align: center; }
.hfb .hfb-service-pictogram { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 12px; background: var(--hfb-color-number-background, var(--hfb-cream)); color: var(--hfb-color-number-text, var(--hfb-brand)); }
.hfb .hfb-service-pictogram svg { width: 24px; height: 24px; stroke-linecap: round; stroke-linejoin: round; }

/* 06 — Shop gallery and categories. */
.hfb.hfb--shop { position: relative; isolation: isolate; background: var(--hfb-color-background, var(--hfb-cream)); }
.hfb--shop > .hfb-shell { position: relative; z-index: 1; }
.hfb .hfb-shop-background { position: absolute; inset: 0; z-index: 0; overflow: hidden; border-radius: inherit; pointer-events: none; user-select: none; }
.hfb .hfb-shop-background-image { position: absolute; top: var(--hfb-decoration-y, 50%); right: 0; width: min(var(--hfb-decoration-width, 760px), 125vw); max-width: none; height: auto; opacity: var(--hfb-decoration-opacity, .1); transform: translate(var(--hfb-decoration-offset, 25%), -50%); }
.hfb .hfb-shop-background--left > img { right: auto; left: 0; transform: translate(calc(-1 * var(--hfb-decoration-offset, 25%)), -50%); }
.hfb .hfb-shop-gallery { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 1rem; }
.hfb .hfb-shop-photo { aspect-ratio: 4 / 3; min-width: 0; max-height: 440px; margin: 0; overflow: hidden; border: 1px solid var(--hfb-color-border, var(--hfb-border)); border-radius: 24px; background: var(--hfb-color-visual-background, #fff); }
.hfb .hfb-shop-photo > img { display: block; width: 100%; height: 100%; object-fit: cover; }
.hfb .hfb-product-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.hfb .hfb-product { padding: 1rem; border: 1px solid var(--hfb-color-border, var(--hfb-border)); border-radius: 26px; background: var(--hfb-color-card-background, #fff); }
.hfb .hfb-product-visual { position: relative; display: grid; height: 280px; place-items: center; padding: 1.25rem; border-radius: 18px; background: var(--hfb-color-visual-background, #f7f8f7); overflow: hidden; }
.hfb .hfb-product-visual > img { width: 85%; height: 85%; object-fit: contain; }
.hfb .hfb-product-visual .hfb-badge { position: absolute; z-index: 1; top: .875rem; left: .875rem; background: var(--hfb-color-badge-background, var(--hfb-glacier)); color: var(--hfb-color-badge-text, var(--hfb-pine)); }
.hfb .hfb-product-body { display: flex; align-items: end; justify-content: space-between; gap: 1rem; padding: 1.25rem .25rem .25rem; }
.hfb .hfb-product-body :is(h2, h3, h4) { font: 650 1.5rem/1.2 var(--hfb-display); color: var(--hfb-color-card-title, var(--hfb-brand)); margin: 0 0 .375rem; }
.hfb .hfb-product-body p { color: var(--hfb-color-card-muted, var(--hfb-muted)); font-size: .875rem; margin: 0; }

/* 07 — Station information. */
.hfb .hfb-station-card { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); overflow: hidden; border-radius: 34px; background: var(--hfb-color-surface, var(--hfb-pine)); color: var(--hfb-color-text, #fff); }
.hfb .hfb-station-copy { padding: clamp(2rem, 5vw, 3.75rem); }
.hfb .hfb-station-copy .hfb-title { font-size: clamp(2.5rem, 4.5vw, 4.5rem); }
.hfb .hfb-station-copy .hfb-description { color: var(--hfb-color-description, #d4e2e7); }
.hfb .hfb-weather { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .625rem; margin: 2rem 0; }
.hfb .hfb-weather > div { display: flex; flex-direction: column-reverse; gap: .5rem; padding: 1rem; border: 1px solid var(--hfb-color-border, #526874); border-radius: 18px; background: var(--hfb-color-card-background, rgb(255 255 255 / 6%)); }
.hfb .hfb-weather dd { margin: 0; font-size: 1.25rem; font-weight: 800; color: var(--hfb-color-card-title, inherit); }
.hfb .hfb-weather dt { color: var(--hfb-color-card-muted, #d4e2e7); font-size: .75rem; text-transform: uppercase; }
.hfb .hfb-updated { color: var(--hfb-color-card-muted, #d4e2e7); font-size: .875rem; margin-bottom: 1.5rem; }
.hfb .hfb-station-visual { position: relative; min-height: 420px; margin: 0; background: var(--hfb-color-visual-background, var(--hfb-glacier)); }
.hfb .hfb-station-visual img { position: absolute; width: 100%; height: 100%; object-fit: cover; }
.hfb .hfb-station-visual figcaption { position: absolute; bottom: 1.5rem; right: 1.5rem; left: 1.5rem; width: fit-content; max-width: calc(100% - 3rem); margin: 0; padding: .625rem 1rem; border-radius: 999px; background: var(--hfb-color-badge-background, var(--hfb-pine)); color: var(--hfb-color-badge-text, #fff); font-size: .8125rem; }

/* 08 — Brands and real testimonials. */
.hfb.hfb--proof { background: var(--hfb-color-background, #fff); }
.hfb .hfb-logos { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 160px), 1fr)); gap: .75rem; }
.hfb .hfb-logo-chip { display: flex; flex-direction: column; align-items: center; justify-content: center; min-width: 0; min-height: 100px; gap: .75rem; padding: 1rem; border: 1px solid var(--hfb-color-border, var(--hfb-border)); border-radius: 18px; color: var(--hfb-color-card-text, var(--hfb-muted)); font-weight: 800; letter-spacing: .05em; text-align: center; text-decoration: none; background: var(--hfb-color-card-background, transparent); }
.hfb .hfb-logo-chip img { flex: 0 0 auto; width: auto; height: auto; max-width: min(150px, 100%); max-height: 64px; margin: 0; object-fit: contain; object-position: center; }
.hfb .hfb-logo-chip > span:empty { display: none; }
.hfb .hfb-testimonials { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; margin-top: 1rem; }
.hfb .hfb-quote { margin: 0; padding: clamp(1.5rem, 4vw, 2.25rem); border-radius: 26px; background: var(--hfb-color-card-background, var(--hfb-cream)); color: var(--hfb-color-card-text, var(--hfb-brand)); }
.hfb .hfb-quote--dark { background: var(--hfb-color-dark-background, var(--hfb-pine)); color: var(--hfb-color-dark-text, #fff); }
.hfb .hfb-quote blockquote { margin: 0 0 2rem; padding: 0; border: 0; background: none; color: inherit; font: 500 clamp(1.5rem, 3vw, 2rem)/1.35 var(--hfb-display); }
.hfb .hfb-quote figcaption { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem; margin: 0; color: var(--hfb-color-card-muted, inherit); font: 400 .875rem/1.6 var(--hfb-body); }

/* Manual customer reviews. */
.hfb.hfb--reviews { background: var(--hfb-color-background, var(--hfb-cream)); color: var(--hfb-color-text, var(--hfb-pine)); }
.hfb .hfb-review-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.25rem; }
.hfb .hfb-review { display: flex; flex-direction: column; min-width: 0; gap: 1.5rem; margin: 0; padding: clamp(1.5rem, 3vw, 2rem); border: 1px solid var(--hfb-color-border, var(--hfb-border)); border-radius: 24px; background: var(--hfb-color-card-background, #fff); color: var(--hfb-color-card-text, var(--hfb-pine)); }
.hfb .hfb-review-stars { color: var(--hfb-color-accent, #9a4b16); font-size: 1.5rem; letter-spacing: .12em; line-height: 1; }
.hfb .hfb-review blockquote { margin: 0; padding: 0; border: 0; background: none; color: inherit; font: 400 1.0625rem/1.75 var(--hfb-body); }
.hfb .hfb-review blockquote p { margin: 0; }
.hfb .hfb-review figcaption { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem 1rem; margin: auto 0 0; padding-top: 1.25rem; border-top: 1px solid var(--hfb-color-border, var(--hfb-border)); font: 400 .8125rem/1.5 var(--hfb-body); }
.hfb .hfb-review figcaption strong { color: var(--hfb-color-card-title, var(--hfb-pine)); font-size: 1rem; font-weight: 800; }
.hfb .hfb-review time { color: var(--hfb-color-card-muted, var(--hfb-muted)); }
.hfb .hfb-reviews-empty { grid-column: 1 / -1; margin: 0; color: var(--hfb-color-description, var(--hfb-muted)); }
.hfb .hfb-reviews-slider { width: 100%; overflow: hidden; padding: 4px; margin: -4px; box-sizing: content-box; }
.hfb .hfb-review-grid.swiper-wrapper { display: flex; align-items: stretch; gap: 0; }
.hfb .hfb-review.swiper-slide { flex: 0 0 auto; height: auto; box-sizing: border-box; }
.hfb .hfb-reviews-controls { display: flex; align-items: center; justify-content: flex-end; gap: 12px; margin-top: 1.5rem; }
.hfb .hfb-reviews-controls button { display: grid; place-items: center; width: 48px; min-height: 48px; padding: 0; border: 1px solid var(--hfb-color-border, var(--hfb-pine)); border-radius: 50%; background: var(--hfb-pine); color: #fff; font-size: 1.5rem; cursor: pointer; }
.hfb .hfb-reviews-controls button:hover { background: #17485a; transform: none; }
.hfb .hfb-reviews-slider:focus-visible, .hfb .hfb-reviews-controls button:focus-visible { outline: 3px solid var(--hfb-coral); outline-offset: 3px; }
.hfb .hfb-reviews-status { min-width: 4rem; text-align: center; font-variant-numeric: tabular-nums; }
@media print {
	.hfb .hfb-reviews-slider { overflow: visible; }
	.hfb .hfb-review-grid.swiper-wrapper { display: grid; transform: none !important; }
	.hfb .hfb-review.swiper-slide { width: auto !important; margin: 0 !important; }
	.hfb .hfb-reviews-controls, .hfb .hfb-review[data-swiper-repeat] { display: none; }
}
@media (max-width: 960px) { .hfb .hfb-review-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px) { .hfb .hfb-review-grid { grid-template-columns: minmax(0, 1fr); } }

/* 09 — Accessible native details; works without JavaScript. */
.hfb .hfb-faq-layout { display: grid; grid-template-columns: .7fr 1.3fr; gap: clamp(2rem, 6vw, 5rem); }
.hfb .hfb-faq-list { border-top: 1px solid var(--hfb-color-border, var(--hfb-border)); }
.hfb .hfb-faq-item { border-bottom: 1px solid var(--hfb-color-border, var(--hfb-border)); }
.hfb .hfb-faq-item summary { position: relative; display: block; min-height: 64px; padding: 1.375rem 3.25rem 1.375rem 0; list-style: none; color: var(--hfb-color-question, var(--hfb-pine)); font: 800 1rem/1.5 var(--hfb-body); cursor: pointer; background: var(--hfb-color-question-background, transparent); }
.hfb .hfb-faq-item summary::-webkit-details-marker { display: none; }
.hfb .hfb-faq-item summary::after { content: '+'; position: absolute; right: 0; top: 1rem; display: grid; width: 34px; height: 34px; place-items: center; border-radius: 50%; background: var(--hfb-color-icon-background, #e9eef0); color: var(--hfb-color-icon-color, inherit); }
.hfb .hfb-faq-item[open] summary::after { content: '−'; background: var(--hfb-color-open-icon-background, var(--hfb-coral)); color: var(--hfb-color-open-icon-color, var(--hfb-brand-dark)); }
.hfb .hfb-faq-answer { padding: 0 2rem 1.5rem 0; color: var(--hfb-color-answer, var(--hfb-muted)); background: var(--hfb-color-answer-background, transparent); }

/* 10 — Final call to action. */
.hfb.hfb--cta { padding-top: 2rem; }
.hfb .hfb-cta-card { position: relative; isolation: isolate; overflow: hidden; padding: clamp(2rem, 6vw, 4.5rem); border-radius: 36px; background: var(--hfb-color-surface, var(--hfb-coral)); color: var(--hfb-color-text, var(--hfb-brand-dark)); }
.hfb .hfb-cta-card::after { content: ''; position: absolute; z-index: -1; width: 330px; height: 330px; right: -110px; top: -130px; border: 1px solid var(--hfb-color-decoration, rgb(255 255 255 / 30%)); border-radius: 50%; box-shadow: 0 0 0 44px var(--hfb-color-decoration-inner, rgb(255 255 255 / 6%)), 0 0 0 88px var(--hfb-color-decoration-outer, rgb(255 255 255 / 4%)); }
.hfb .hfb-cta-card .hfb-title { max-width: 800px; font-size: clamp(2.75rem, 6vw, 5.5rem); }
.hfb .hfb-cta-card .hfb-description { color: var(--hfb-color-description, var(--hfb-brand-dark)); }
.hfb .hfb-cta-card .hfb-eyebrow::after { background: var(--hfb-color-accent, currentColor); }

@media (max-width: 960px) {
	.hfb .hfb-quick-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.hfb .hfb-offer-grid > .hfb-offer { flex-basis: calc((100% - 1rem) / 2); }
	.hfb .hfb-service-grid, .hfb .hfb-service-simple, .hfb .hfb-station-card, .hfb .hfb-faq-layout { grid-template-columns: minmax(0, 1fr); }
	.hfb .hfb-service-feature { min-height: 430px; }
	.hfb .hfb-station-visual { min-height: 360px; }
	.hfb .hfb-heading-row { align-items: start; flex-direction: column; }
}
@media (max-width: 620px) {
	.hfb .hfb-shell { width: calc(100% - 24px); }
	.hfb.hfb--hero { min-height: 540px; }
	.hfb--hero .hfb-hero-image { object-position: 63% center; }
	.hfb--hero::before { background: var(--hfb-color-overlay, rgb(15 46 59 / 80%)); opacity: var(--hfb-overlay-opacity, 1); }
	.hfb .hfb-quick-grid, .hfb .hfb-product-grid, .hfb .hfb-testimonials { grid-template-columns: minmax(0, 1fr); }
	.hfb .hfb-shop-gallery { grid-template-columns: minmax(0, 1fr); }
	.hfb .hfb-offer-grid > .hfb-offer { flex-basis: 100%; }
	.hfb .hfb-booking-top { flex-direction: column; }
	.hfb .hfb-booking { padding: 1rem; border-radius: 24px; }
	.hfb .hfb-booking-grid > .hfb-button { width: 100%; }
	.hfb .hfb-weather { grid-template-columns: minmax(0, 1fr); }
	.hfb .hfb-service-row { flex-wrap: wrap; }
	.hfb .hfb-service-simple { border-radius: 24px; }
	.hfb .hfb-service-simple-copy > .hfb-button { width: 100%; }
	.hfb .hfb-service-highlights { grid-template-columns: repeat(auto-fit, minmax(85px, 1fr)); }
	.hfb .hfb-service-row > div { min-width: 150px; }
	.hfb .hfb-service-content :is(h2, h3, h4) { font-size: 2rem; }
}
@media (prefers-reduced-motion: reduce) {
	.hfb *, .hfb *::before, .hfb *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}
