/* ==========================================================================
   Body Harmony — design tokens + component styles.
   Palette: the client's six blues (monochromatic) on warm sand neutrals.
   #00A7C9 / #5BBCD8 are decorative only — 2.85:1 on white fails AA for text;
   text and buttons use the deeper shades of the same hue below.
   ========================================================================== */
:root {
	--bh-lagoon: #00A7C9;
	--bh-sky: #5BBCD8;
	--bh-shallows: #A4DCEC;
	--bh-mist: #CAEDF8;
	--bh-foam: #C9ECEE;
	--bh-haze: #D7EAFF;
	--bh-deep: #0A6E86;      /* buttons, links — white on it 5.85:1 */
	--bh-deep-2: #085B6F;    /* hover */
	--bh-ink: #14414E;       /* headings — 10.4:1 on sand */
	--bh-text: #2E5561;      /* body */
	--bh-muted: #4A6670;
	--bh-sand: #FBF7F0;
	--bh-sand-2: #F4ECDF;
	--bh-white: #FFFFFF;
	--bh-serif: "Cormorant Garamond", Georgia, "Times New Roman", serif;
	--bh-sans: "Nunito Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
	--bh-radius: 22px;
	--bh-radius-sm: 14px;
	--bh-shadow: 0 18px 50px -24px rgba(20, 65, 78, .35);
	--bh-shadow-sm: 0 8px 24px -14px rgba(20, 65, 78, .35);
	--bh-section-y: clamp(64px, 9vw, 120px);
	--bh-gutter: clamp(16px, 4vw, 32px);
	--bh-header-h: 84px;
}

html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body { background: var(--bh-sand); color: var(--bh-text); font-family: var(--bh-sans); font-size: 17px; line-height: 1.7; -webkit-font-smoothing: antialiased; }
a { color: var(--bh-deep); }
a:hover, a:focus { color: var(--bh-deep-2); }
:focus-visible { outline: 3px solid var(--bh-sky); outline-offset: 3px; border-radius: 4px; }
::selection { background: var(--bh-mist); color: var(--bh-ink); }
img { max-width: 100%; height: auto; }
.skip-link:focus { position: fixed; top: 8px; left: 8px; z-index: 1000; background: var(--bh-white); padding: 10px 16px; clip: auto; width: auto; height: auto; }

/* ---------- Type ---------- */
.elementor-widget.elementor-widget-heading .elementor-heading-title,
.bh-prose h2, .bh-prose h3 {
	font-family: var(--bh-serif); font-weight: 600; color: var(--bh-ink); line-height: 1.12; letter-spacing: -.005em;
}
.elementor-widget.elementor-widget-heading h1.elementor-heading-title { font-size: clamp(2.6rem, 6vw, 4.75rem); line-height: 1.02; }
.elementor-widget.elementor-widget-heading h2.elementor-heading-title { font-size: clamp(2.1rem, 4vw, 3.25rem); }
.elementor-widget.elementor-widget-heading h3.elementor-heading-title { font-size: clamp(1.5rem, 2.2vw, 1.85rem); }
.elementor-widget.elementor-widget-heading .elementor-heading-title em { font-style: italic; font-weight: 500; color: var(--bh-deep); }

.elementor-widget.bh-eyebrow .elementor-heading-title {
	font-family: var(--bh-sans); font-size: .8rem; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--bh-deep); line-height: 1.4;
	display: inline-flex; align-items: center; gap: .75em;
}
.elementor-widget.bh-eyebrow .elementor-heading-title::before { content: ""; width: 28px; height: 2px; border-radius: 2px; background: var(--bh-lagoon); }
.bh-center .elementor-widget.bh-eyebrow .elementor-heading-title::after,
.elementor-widget.bh-eyebrow.bh-eyebrow--center .elementor-heading-title::after { content: ""; width: 28px; height: 2px; border-radius: 2px; background: var(--bh-lagoon); }

.bh-lede, .bh-lede p { font-size: clamp(1.05rem, 1.4vw, 1.2rem); line-height: 1.7; color: var(--bh-text); }
.elementor-widget-text-editor p:last-child { margin-bottom: 0; }
.bh-small, .bh-small p { font-size: .9rem; color: var(--bh-muted); }

/* light-on-dark variants */
.bh-on-dark .elementor-widget.elementor-widget-heading .elementor-heading-title,
.bh-on-dark .elementor-widget-text-editor, .bh-on-dark .bh-lede, .bh-on-dark .bh-lede p { color: var(--bh-white); }
.bh-on-dark .elementor-widget.elementor-widget-heading .elementor-heading-title em { color: var(--bh-mist); }
.bh-on-dark .elementor-widget.bh-eyebrow .elementor-heading-title { color: var(--bh-mist); }
.bh-on-dark .elementor-widget.bh-eyebrow .elementor-heading-title::before,
.bh-on-dark .elementor-widget.bh-eyebrow .elementor-heading-title::after { background: var(--bh-shallows); }
.bh-on-dark a:not(.elementor-button) { color: var(--bh-white); }

/* ---------- Buttons ---------- */
.elementor-widget-button .elementor-button {
	font-family: var(--bh-sans); font-weight: 700; font-size: 1rem; letter-spacing: .01em; line-height: 1.2;
	padding: 16px 30px; border-radius: 999px; background: var(--bh-deep); color: var(--bh-white); border: 2px solid var(--bh-deep);
	transition: background-color .25s ease, color .25s ease, border-color .25s ease, transform .25s ease, box-shadow .25s ease;
	box-shadow: 0 10px 24px -12px rgba(10, 110, 134, .7);
}
.elementor-widget-button .elementor-button:hover, .elementor-widget-button .elementor-button:focus-visible {
	background: var(--bh-deep-2); border-color: var(--bh-deep-2); color: var(--bh-white); transform: translateY(-2px);
}
.elementor-widget-button.bh-btn--ghost .elementor-button { background: transparent; color: var(--bh-white); border-color: rgba(255,255,255,.85); box-shadow: none; }
.elementor-widget-button.bh-btn--ghost .elementor-button:hover, .elementor-widget-button.bh-btn--ghost .elementor-button:focus-visible { background: var(--bh-white); color: var(--bh-ink); border-color: var(--bh-white); }
.elementor-widget-button.bh-btn--soft .elementor-button { background: transparent; color: var(--bh-deep); border-color: var(--bh-deep); box-shadow: none; }
.elementor-widget-button.bh-btn--soft .elementor-button:hover, .elementor-widget-button.bh-btn--soft .elementor-button:focus-visible { background: var(--bh-deep); color: var(--bh-white); }
.elementor-widget-button.bh-btn--light .elementor-button { background: var(--bh-white); color: var(--bh-ink); border-color: var(--bh-white); }
.elementor-widget-button.bh-btn--light .elementor-button:hover, .elementor-widget-button.bh-btn--light .elementor-button:focus-visible { background: var(--bh-mist); border-color: var(--bh-mist); color: var(--bh-ink); }
.elementor-widget-button.bh-btn--sm .elementor-button { padding: 11px 22px; font-size: .92rem; }
.elementor-widget-button.bh-link .elementor-button {
	background: none; border: 0; box-shadow: none; padding: 0; color: var(--bh-deep); border-radius: 0; font-size: .95rem;
	text-decoration: underline; text-decoration-color: var(--bh-shallows); text-decoration-thickness: 2px; text-underline-offset: 6px;
}
.elementor-widget-button.bh-link .elementor-button:hover, .elementor-widget-button.bh-link .elementor-button:focus-visible { background: none; color: var(--bh-ink); transform: none; text-decoration-color: var(--bh-deep); }
.elementor-widget-button.bh-link .elementor-button-text::after { content: " \2192"; }

/* ---------- Sections ---------- */
.e-con.bh-section { --padding-top: var(--bh-section-y); --padding-bottom: var(--bh-section-y); --padding-left: var(--bh-gutter); --padding-right: var(--bh-gutter); position: relative; }
.e-con.bh-section--tight { --padding-top: clamp(48px, 6vw, 72px); --padding-bottom: clamp(48px, 6vw, 72px); }
.bh-bg-sand { background-color: var(--bh-sand); }
.bh-bg-sand2 { background-color: var(--bh-sand-2); }
.bh-bg-white { background-color: var(--bh-white); }
.bh-bg-mist { background: linear-gradient(180deg, var(--bh-mist) 0%, var(--bh-haze) 100%); }
.bh-bg-foam { background-color: var(--bh-foam); }
.bh-bg-deep { background: radial-gradient(120% 140% at 85% 0%, #128CA6 0%, var(--bh-deep) 45%, #0B4F60 100%); }
.bh-bg-ink { background-color: var(--bh-ink); }

.e-con.bh-head { --row-gap: 14px; --column-gap: 14px; max-width: 760px; }
.e-con.bh-center, .bh-center { text-align: center; }
.e-con.bh-center { --align-items: center; }
.e-con.bh-row-actions { --flex-direction: row; --flex-wrap: wrap; --row-gap: 14px; --column-gap: 14px; --align-items: center; }
.bh-center .e-con.bh-row-actions, .e-con.bh-row-actions.bh-center { --justify-content: center; }

/* wave edges — a soft shoreline between sections */
.bh-wave-top::before, .bh-wave-bottom::after {
	content: ""; position: absolute; left: 0; right: 0; height: clamp(30px, 5vw, 72px); pointer-events: none; z-index: 4;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 120' preserveAspectRatio='none'%3E%3Cpath d='M0 44 L12 46.5 L24 48.9 L36 51.2 L48 53.3 L60 55.2 L72 56.9 L84 58.2 L96 59.3 L108 60 L120 60.4 L132 60.4 L144 60.2 L156 59.7 L168 58.9 L180 58 L192 56.9 L204 55.7 L216 54.4 L228 53.1 L240 51.9 L252 50.7 L264 49.5 L276 48.5 L288 47.6 L300 46.8 L312 46.1 L324 45.4 L336 44.9 L348 44.4 L360 44 L372 43.6 L384 43.1 L396 42.6 L408 41.9 L420 41.2 L432 40.4 L444 39.5 L456 38.5 L468 37.3 L480 36.1 L492 34.9 L504 33.6 L516 32.3 L528 31.1 L540 30 L552 29.1 L564 28.3 L576 27.8 L588 27.6 L600 27.6 L612 28 L624 28.7 L636 29.8 L648 31.1 L660 32.8 L672 34.7 L684 36.8 L696 39.1 L708 41.5 L720 44 L732 46.5 L744 48.9 L756 51.2 L768 53.3 L780 55.2 L792 56.9 L804 58.2 L816 59.3 L828 60 L840 60.4 L852 60.4 L864 60.2 L876 59.7 L888 58.9 L900 58 L912 56.9 L924 55.7 L936 54.4 L948 53.1 L960 51.9 L972 50.7 L984 49.5 L996 48.5 L1008 47.6 L1020 46.8 L1032 46.1 L1044 45.4 L1056 44.9 L1068 44.4 L1080 44 L1092 43.6 L1104 43.1 L1116 42.6 L1128 41.9 L1140 41.2 L1152 40.4 L1164 39.5 L1176 38.5 L1188 37.3 L1200 36.1 L1212 34.9 L1224 33.6 L1236 32.3 L1248 31.1 L1260 30 L1272 29.1 L1284 28.3 L1296 27.8 L1308 27.6 L1320 27.6 L1332 28 L1344 28.7 L1356 29.8 L1368 31.1 L1380 32.8 L1392 34.7 L1404 36.8 L1416 39.1 L1428 41.5 L1440 44 L1440 120 L0 120Z' fill='%23000'/%3E%3C/svg%3E") 0 0 / 1440px 100% repeat-x;
	        mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 120' preserveAspectRatio='none'%3E%3Cpath d='M0 44 L12 46.5 L24 48.9 L36 51.2 L48 53.3 L60 55.2 L72 56.9 L84 58.2 L96 59.3 L108 60 L120 60.4 L132 60.4 L144 60.2 L156 59.7 L168 58.9 L180 58 L192 56.9 L204 55.7 L216 54.4 L228 53.1 L240 51.9 L252 50.7 L264 49.5 L276 48.5 L288 47.6 L300 46.8 L312 46.1 L324 45.4 L336 44.9 L348 44.4 L360 44 L372 43.6 L384 43.1 L396 42.6 L408 41.9 L420 41.2 L432 40.4 L444 39.5 L456 38.5 L468 37.3 L480 36.1 L492 34.9 L504 33.6 L516 32.3 L528 31.1 L540 30 L552 29.1 L564 28.3 L576 27.8 L588 27.6 L600 27.6 L612 28 L624 28.7 L636 29.8 L648 31.1 L660 32.8 L672 34.7 L684 36.8 L696 39.1 L708 41.5 L720 44 L732 46.5 L744 48.9 L756 51.2 L768 53.3 L780 55.2 L792 56.9 L804 58.2 L816 59.3 L828 60 L840 60.4 L852 60.4 L864 60.2 L876 59.7 L888 58.9 L900 58 L912 56.9 L924 55.7 L936 54.4 L948 53.1 L960 51.9 L972 50.7 L984 49.5 L996 48.5 L1008 47.6 L1020 46.8 L1032 46.1 L1044 45.4 L1056 44.9 L1068 44.4 L1080 44 L1092 43.6 L1104 43.1 L1116 42.6 L1128 41.9 L1140 41.2 L1152 40.4 L1164 39.5 L1176 38.5 L1188 37.3 L1200 36.1 L1212 34.9 L1224 33.6 L1236 32.3 L1248 31.1 L1260 30 L1272 29.1 L1284 28.3 L1296 27.8 L1308 27.6 L1320 27.6 L1332 28 L1344 28.7 L1356 29.8 L1368 31.1 L1380 32.8 L1392 34.7 L1404 36.8 L1416 39.1 L1428 41.5 L1440 44 L1440 120 L0 120Z' fill='%23000'/%3E%3C/svg%3E") 0 0 / 1440px 100% repeat-x;
	animation: bh-shore 60s linear infinite;
}
.bh-wave-top::before { animation-direction: reverse; animation-duration: 75s; }
@keyframes bh-shore { to { -webkit-mask-position: -1440px 0; mask-position: -1440px 0; } }
.bh-wave-bottom::after { bottom: -1px; }
.bh-wave-top::before { top: -1px; transform: scaleY(-1); }
.bh-wave--sand::after { color: var(--bh-sand); }
.bh-top--sand::before { color: var(--bh-sand); }
.bh-wave--sand2::after { color: var(--bh-sand-2); }
.bh-top--sand2::before { color: var(--bh-sand-2); }
.bh-wave--white::after { color: var(--bh-white); }
.bh-top--white::before { color: var(--bh-white); }
.bh-wave--mist::after { color: var(--bh-mist); }
.bh-top--mist::before { color: var(--bh-mist); }

/* ---------- Header ---------- */
.bh-site-header { position: sticky; top: 0; z-index: 100; }
.admin-bar .bh-site-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .bh-site-header { top: 0; } }
.e-con.bh-topbar { --padding-top: 8px; --padding-bottom: 8px; --padding-left: var(--bh-gutter); --padding-right: var(--bh-gutter); background: var(--bh-ink); font-size: .85rem; transition: margin .3s ease; }
.bh-topbar .elementor-widget-text-editor, .bh-topbar .elementor-widget-text-editor p, .bh-topbar a { color: #E4F4FA; margin: 0; }
.bh-topbar a { text-decoration: none; font-weight: 700; }
.bh-topbar a:hover { color: var(--bh-white); text-decoration: underline; }
.e-con.bh-masthead { --padding-top: 12px; --padding-bottom: 12px; --padding-left: var(--bh-gutter); --padding-right: var(--bh-gutter); background: rgba(251, 247, 240, .92); -webkit-backdrop-filter: saturate(1.4) blur(14px); backdrop-filter: saturate(1.4) blur(14px); border-bottom: 1px solid rgba(20, 65, 78, .08); transition: box-shadow .3s ease, padding .3s ease; }
.is-scrolled .e-con.bh-masthead { box-shadow: 0 10px 30px -20px rgba(20, 65, 78, .45); --padding-top: 8px; --padding-bottom: 8px; }
.bh-logo img { width: clamp(150px, 16vw, 200px); height: auto; display: block; }
.e-con.bh-masthead > .e-con-inner { --flex-direction: row; --align-items: center; --justify-content: space-between; --row-gap: 24px; --column-gap: 24px; --flex-wrap: nowrap; }
.bh-menu-widget { flex: 1 1 auto; }

.bh-nav { display: flex; justify-content: flex-end; }
.bh-nav__list { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; gap: 4px; }
.bh-nav__list > li { position: relative; }
.bh-nav__list a { display: block; padding: 10px 14px; border-radius: 999px; font-weight: 600; font-size: .98rem; color: var(--bh-ink); text-decoration: none; transition: background-color .2s ease, color .2s ease; }
.bh-nav__list a:hover, .bh-nav__list a:focus-visible { background: var(--bh-mist); color: var(--bh-ink); }
.bh-nav__list .current-menu-item > a, .bh-nav__list .current-menu-ancestor > a { color: var(--bh-deep); }
.bh-nav__list .menu-item-has-children > a::after { content: ""; display: inline-block; width: 6px; height: 6px; margin-left: 8px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: translateY(-3px) rotate(45deg); }
.bh-nav__list .sub-menu { list-style: none; margin: 0; padding: 10px; position: absolute; top: calc(100% + 6px); left: -10px; min-width: 250px; background: var(--bh-white); border-radius: var(--bh-radius-sm); box-shadow: var(--bh-shadow); opacity: 0; visibility: hidden; transform: translateY(6px); transition: opacity .2s ease, transform .2s ease, visibility .2s; }
.bh-nav__list .sub-menu::before { content: ""; position: absolute; left: 0; right: 0; top: -10px; height: 10px; }
.bh-nav__list li:hover > .sub-menu, .bh-nav__list li:focus-within > .sub-menu { opacity: 1; visibility: visible; transform: none; }
.bh-nav__list .sub-menu a { border-radius: 10px; font-weight: 600; font-size: .95rem; padding: 9px 14px; }
.bh-nav__toggle { display: none; }

@media (max-width: 1024px) {
	.bh-nav__toggle { display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: 999px; border: 0; background: var(--bh-mist); cursor: pointer; padding: 0; }
	.bh-nav__bars, .bh-nav__bars::before, .bh-nav__bars::after { display: block; width: 20px; height: 2px; border-radius: 2px; background: var(--bh-ink); position: relative; transition: transform .25s ease, background-color .25s ease; }
	.bh-nav__bars::before, .bh-nav__bars::after { content: ""; position: absolute; left: 0; }
	.bh-nav__bars::before { top: -6px; } .bh-nav__bars::after { top: 6px; }
	.bh-nav.is-open .bh-nav__bars { background: transparent; }
	.bh-nav.is-open .bh-nav__bars::before { transform: translateY(6px) rotate(45deg); }
	.bh-nav.is-open .bh-nav__bars::after { transform: translateY(-6px) rotate(-45deg); }
	.bh-nav__list { position: fixed; left: 12px; right: 12px; top: calc(var(--bh-header-h) + 8px); max-height: calc(100vh - var(--bh-header-h) - 24px); overflow: auto; flex-direction: column; align-items: stretch; gap: 2px; padding: 14px; background: var(--bh-white); border-radius: var(--bh-radius); box-shadow: var(--bh-shadow); opacity: 0; visibility: hidden; transform: translateY(-8px); transition: opacity .2s ease, transform .2s ease, visibility .2s; }
	.bh-nav.is-open .bh-nav__list { opacity: 1; visibility: visible; transform: none; }
	.bh-nav__list a { padding: 12px 14px; font-size: 1.05rem; }
	.bh-nav__list .sub-menu { position: static; opacity: 1; visibility: visible; transform: none; box-shadow: none; padding: 0 0 6px 14px; min-width: 0; display: grid; grid-template-columns: 1fr 1fr; }
	.bh-nav__list .menu-item-has-children > a::after { display: none; }
	.bh-hide-tablet { display: none !important; }
}
@media (max-width: 600px) {
	.bh-nav__list .sub-menu { grid-template-columns: 1fr; }
	.bh-topbar .bh-topbar__where { display: none; }
	.e-con.bh-topbar > .e-con-inner { --justify-content: center; }
}

/* ---------- Hero ---------- */
.e-con.bh-hero { --min-height: min(860px, calc(100svh - 40px)); --justify-content: center; --padding-top: clamp(96px, 12vw, 150px); --padding-bottom: clamp(120px, 14vw, 190px); --padding-left: var(--bh-gutter); --padding-right: var(--bh-gutter); background-size: cover; background-position: center 60%; position: relative; isolation: isolate; overflow: hidden; }
.bh-hero .bh-hero__copy { --row-gap: 22px; --column-gap: 22px; max-width: 640px; }
.bh-hero .elementor-widget.elementor-widget-heading h1.elementor-heading-title { color: var(--bh-white); text-shadow: 0 2px 30px rgba(0, 30, 40, .35); }
.bh-hero .elementor-widget.elementor-widget-heading h1.elementor-heading-title em { color: var(--bh-mist); }
.e-con.bh-hero-card { position: absolute; right: var(--bh-gutter); bottom: clamp(90px, 10vw, 140px); width: 300px; --padding-top: 22px; --padding-bottom: 22px; --padding-left: 24px; --padding-right: 24px; --row-gap: 6px; --column-gap: 6px; border-radius: var(--bh-radius); background: rgba(255, 255, 255, .16); border: 1px solid rgba(255, 255, 255, .35); -webkit-backdrop-filter: blur(16px) saturate(1.3); backdrop-filter: blur(16px) saturate(1.3); }
.bh-hero-card .elementor-heading-title { font-size: 1.35rem !important; }
@media (max-width: 1024px) { .e-con.bh-hero-card { display: none; } }

.e-con.bh-page-hero { --padding-top: clamp(80px, 10vw, 130px); --padding-bottom: clamp(100px, 12vw, 160px); --padding-left: var(--bh-gutter); --padding-right: var(--bh-gutter); background-size: cover; background-position: center; position: relative; isolation: isolate; }
.bh-page-hero .bh-hero__copy { --row-gap: 18px; --column-gap: 18px; max-width: 700px; }

/* ---------- Cards ---------- */
.e-con.bh-grid { --flex-direction: row; --flex-wrap: wrap; --row-gap: clamp(18px, 2.4vw, 28px); --column-gap: clamp(18px, 2.4vw, 28px); --justify-content: center; }
.e-con.bh-grid > .e-con-inner { --flex-direction: row; --flex-wrap: wrap; --row-gap: clamp(18px, 2.4vw, 28px); --column-gap: clamp(18px, 2.4vw, 28px); }
.e-con.bh-card { --width: calc((100% - 2 * clamp(18px, 2.4vw, 28px)) / 3); --padding-top: 0; --padding-bottom: 28px; --padding-left: 0; --padding-right: 0; --row-gap: 12px; --column-gap: 12px; background: var(--bh-white); border-radius: var(--bh-radius); overflow: hidden; box-shadow: var(--bh-shadow-sm); transition: transform .35s ease, box-shadow .35s ease; }
.e-con.bh-card:hover { transform: translateY(-6px); box-shadow: var(--bh-shadow); }
.bh-card > .elementor-widget:not(.bh-card__img) { padding: 0 26px; }
.bh-card__img { margin-bottom: 8px; overflow: hidden; }
.bh-card__img img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; transition: transform .8s ease; }
.e-con.bh-card:hover .bh-card__img img { transform: scale(1.05); }
.bh-card .elementor-widget-text-editor { font-size: .98rem; color: var(--bh-muted); }
.bh-card .bh-link { margin-top: auto; }
@media (max-width: 1024px) { .e-con.bh-card { --width: calc((100% - clamp(18px, 2.4vw, 28px)) / 2); } }
@media (max-width: 640px) { .e-con.bh-card { --width: 100%; } }

.e-con.bh-addons { --flex-direction: row; --flex-wrap: wrap; --row-gap: 16px; --column-gap: 16px; }
.e-con.bh-addon { --width: calc((100% - 3 * 16px) / 4); --flex-direction: row; --align-items: center; --row-gap: 16px; --column-gap: 16px; --padding-top: 14px; --padding-bottom: 14px; --padding-left: 14px; --padding-right: 20px; background: rgba(255, 255, 255, .75); border: 1px solid rgba(10, 110, 134, .12); border-radius: 999px; transition: background-color .25s ease, transform .25s ease; }
.e-con.bh-addon:hover { background: var(--bh-white); transform: translateY(-3px); }
.bh-addon .bh-addon__img { width: 64px; flex: 0 0 64px; }
.bh-addon .bh-addon__img img { width: 64px; height: 64px; border-radius: 50%; object-fit: cover; display: block; }
.bh-addon .e-con.bh-addon__txt { --row-gap: 2px; --column-gap: 2px; --padding-top: 0; --padding-bottom: 0; --padding-left: 0; --padding-right: 0; }
.bh-addon .elementor-heading-title { font-size: 1.25rem !important; }
.bh-addon .elementor-widget-text-editor { font-size: .88rem; color: var(--bh-muted); line-height: 1.4; }
.bh-addon .elementor-widget-button .elementor-button { font-size: .88rem; }
@media (max-width: 1100px) { .e-con.bh-addon { --width: calc((100% - 16px) / 2); } }
@media (max-width: 600px) { .e-con.bh-addon { --width: 100%; } }

/* ---------- Split layouts ---------- */
.e-con.bh-split { --flex-direction: row; --align-items: center; --row-gap: clamp(32px, 6vw, 88px); --column-gap: clamp(32px, 6vw, 88px); }
.e-con.bh-split > .e-con-inner { --flex-direction: row; --align-items: center; --row-gap: clamp(32px, 6vw, 88px); --column-gap: clamp(32px, 6vw, 88px); }
.e-con.bh-col { --width: 50%; --row-gap: 18px; --column-gap: 18px; --padding-top: 0; --padding-bottom: 0; --padding-left: 0; --padding-right: 0; }
.e-con.bh-col--wide { --width: 58%; }
.e-con.bh-col--narrow { --width: 42%; }
@media (max-width: 900px) {
	.e-con.bh-split, .e-con.bh-split > .e-con-inner { --flex-direction: column; --align-items: stretch; }
	.e-con.bh-col, .e-con.bh-col--wide, .e-con.bh-col--narrow { --width: 100%; }
	.e-con.bh-split.bh-split--flip > .e-con-inner > .e-con.bh-col:first-child { order: 2; }
}

/* arch-topped photo — a soft, sheltering shape */
.bh-arch img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 999px 999px var(--bh-radius) var(--bh-radius); box-shadow: var(--bh-shadow); display: block; }
.bh-arch--wide img { aspect-ratio: 1 / 1; }
.bh-photo img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--bh-radius); box-shadow: var(--bh-shadow); display: block; }

/* the studio mosaic */
.e-con.bh-mosaic { --flex-direction: row; --flex-wrap: wrap; --row-gap: 14px; --column-gap: 14px; --padding-top: 0; --padding-bottom: 0; --padding-left: 0; --padding-right: 0; }
.bh-mosaic > .elementor-widget-image { width: calc(50% - 7px); }
.bh-mosaic img { width: 100%; aspect-ratio: 1 / 1; object-fit: cover; border-radius: var(--bh-radius-sm); display: block; }
.bh-mosaic > .elementor-widget-image:nth-child(1) img { border-top-left-radius: 120px; }
.bh-mosaic > .elementor-widget-image:nth-child(4) img { border-bottom-right-radius: 120px; }

/* ---------- Lists ---------- */
.bh-checks .elementor-icon-list-items { display: grid; gap: 12px; }
.bh-checks.bh-checks--2 .elementor-icon-list-items { grid-template-columns: 1fr 1fr; column-gap: 28px; }
@media (max-width: 640px) { .bh-checks.bh-checks--2 .elementor-icon-list-items { grid-template-columns: 1fr; } }
.bh-checks .elementor-icon-list-item { align-items: flex-start !important; }
.bh-checks .elementor-icon-list-icon { width: 28px; height: 28px; flex: 0 0 28px; border-radius: 50%; background: var(--bh-white); display: inline-flex; align-items: center; justify-content: center; margin-top: 1px; box-shadow: 0 0 0 1px rgba(10,110,134,.15); }
.bh-checks .elementor-icon-list-icon i, .bh-checks .elementor-icon-list-icon svg { color: var(--bh-deep); fill: var(--bh-deep); font-size: 12px; width: 12px; }
.bh-checks .elementor-icon-list-text { color: var(--bh-ink); font-weight: 600; padding-left: 12px; line-height: 1.5; }
.bh-bg-sand .bh-checks .elementor-icon-list-icon, .bh-bg-white .bh-checks .elementor-icon-list-icon { background: var(--bh-mist); box-shadow: none; }

/* ---------- Rates ---------- */
.e-con.bh-panel { --padding-top: clamp(28px, 4vw, 48px); --padding-bottom: clamp(28px, 4vw, 48px); --padding-left: clamp(24px, 4vw, 48px); --padding-right: clamp(24px, 4vw, 48px); --row-gap: 16px; --column-gap: 16px; background: var(--bh-white); border-radius: var(--bh-radius); box-shadow: var(--bh-shadow); }
.bh-prices { list-style: none; margin: 0; padding: 0; }
.bh-prices li { display: flex; align-items: baseline; gap: 12px; padding: 14px 0; border-bottom: 1px dashed rgba(20, 65, 78, .18); }
.bh-prices li:last-child { border-bottom: 0; }
.bh-prices .bh-prices__name { font-family: var(--bh-serif); font-size: 1.45rem; font-weight: 600; color: var(--bh-ink); }
.bh-prices .bh-prices__dots { flex: 1; }
.bh-prices .bh-prices__price { font-family: var(--bh-serif); font-size: 1.6rem; font-weight: 700; color: var(--bh-deep); }
.bh-prices .bh-prices__note { font-size: .82rem; color: var(--bh-muted); white-space: nowrap; }
.bh-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 6px 0 0; padding: 0; list-style: none; }
.bh-chips li { background: var(--bh-mist); color: var(--bh-ink); border-radius: 999px; padding: 6px 14px; font-weight: 600; font-size: .9rem; }
.bh-note, .bh-note p { font-size: .88rem; color: var(--bh-muted); line-height: 1.6; }

/* ---------- Prose (service pages) ---------- */
.bh-prose p { margin: 0 0 1.1em; }
.bh-prose h2 { font-size: clamp(1.8rem, 3vw, 2.4rem); margin: 1.4em 0 .5em; }
.bh-prose h3 { font-size: clamp(1.35rem, 2vw, 1.6rem); margin: 1.4em 0 .4em; }
.bh-prose h2:first-child, .bh-prose h3:first-child { margin-top: 0; }
.bh-prose ul { margin: 0 0 1.2em; padding-left: 1.2em; }
.bh-prose li { margin-bottom: .35em; }
.bh-prose li::marker { color: var(--bh-lagoon); }
.bh-callout, .bh-callout p { background: var(--bh-mist); border-radius: var(--bh-radius-sm); padding: 18px 22px; color: var(--bh-ink); font-weight: 600; }
.bh-callout p { padding: 0; margin: 0; }
.e-con.bh-aside { position: sticky; top: calc(var(--bh-header-h) + 50px); }
@media (max-width: 900px) { .e-con.bh-aside { position: static; } }

/* ---------- Visit / map ---------- */
.bh-map iframe { width: 100%; height: 100%; min-height: 380px; border: 0; border-radius: var(--bh-radius); box-shadow: var(--bh-shadow); display: block; filter: saturate(.85); }
.bh-hours { width: 100%; border-collapse: collapse; }
.bh-hours td { padding: 8px 0; border-bottom: 1px solid rgba(20,65,78,.1); color: var(--bh-ink); }
.bh-hours td:last-child { text-align: right; font-weight: 700; }
.bh-hours tr:last-child td { border-bottom: 0; }
.bh-on-dark .bh-hours td { color: var(--bh-white); border-color: rgba(255,255,255,.2); }

/* ---------- Footer ---------- */
.e-con.bh-footer { --padding-top: clamp(72px, 8vw, 110px); --padding-bottom: 28px; --padding-left: var(--bh-gutter); --padding-right: var(--bh-gutter); background: var(--bh-sand-2); position: relative; }
.e-con.bh-footer-cols { --flex-direction: row; --row-gap: clamp(28px, 4vw, 56px); --column-gap: clamp(28px, 4vw, 56px); --padding-top: 0; --padding-bottom: 36px; --padding-left: 0; --padding-right: 0; border-bottom: 1px solid rgba(20, 65, 78, .14); }
.e-con.bh-footer-col { --row-gap: 12px; --column-gap: 12px; --padding-top: 0; --padding-bottom: 0; --padding-left: 0; --padding-right: 0; --width: 22%; }
.e-con.bh-footer-col--brand { --width: 34%; }
.bh-footer .elementor-widget.elementor-widget-heading .elementor-heading-title { font-family: var(--bh-sans); font-size: .8rem; letter-spacing: .18em; text-transform: uppercase; font-weight: 700; color: var(--bh-deep); }
.bh-footer .elementor-widget-text-editor { font-size: .95rem; }
.bh-footer a { color: var(--bh-ink); text-decoration-color: var(--bh-shallows); text-underline-offset: 4px; }
.bh-footer-links { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.bh-footer-links a { text-decoration: none; font-weight: 600; }
.bh-footer-links a:hover { text-decoration: underline; }
.e-con.bh-footer-bottom { --flex-direction: row; --justify-content: space-between; --flex-wrap: wrap; --row-gap: 8px; --column-gap: 24px; --padding-top: 22px; --padding-bottom: 0; --padding-left: 0; --padding-right: 0; }
.bh-footer-bottom .elementor-widget-text-editor, .bh-footer-bottom p { font-size: .85rem; color: var(--bh-muted); margin: 0; }
@media (max-width: 900px) {
	.e-con.bh-footer-cols { --flex-direction: row; --flex-wrap: wrap; }
	.e-con.bh-footer-col, .e-con.bh-footer-col--brand { --width: calc(50% - 20px); }
}
@media (max-width: 560px) { .e-con.bh-footer-col, .e-con.bh-footer-col--brand { --width: 100%; } }

/* ---------- Reveal on scroll (JS adds --armed; no JS = always visible) ---------- */
.bh-reveal--armed { opacity: 0; transform: translateY(22px); transition: opacity .9s cubic-bezier(.2,.7,.2,1), transform .9s cubic-bezier(.2,.7,.2,1); }
.bh-reveal--armed.is-in { opacity: 1; transform: none; }

/* Hello Elementor page title is never wanted here */
.page-header { display: none; }

/* ---------- Small pieces ---------- */
.bh-wave--foam::after { color: var(--bh-foam); }
.bh-top--foam::before { color: var(--bh-foam); }
.bh-lotus-mark img { width: 76px; height: 76px; object-fit: contain; display: block; margin: 0 auto; }
.elementor-widget.elementor-widget-heading .elementor-heading-title a { color: inherit; text-decoration: none; }
.elementor-widget.elementor-widget-heading .elementor-heading-title a:hover { color: var(--bh-deep); }
.e-con.bh-col.bh-panel { --padding-top: clamp(28px, 4vw, 44px); --padding-bottom: clamp(28px, 4vw, 44px); --padding-left: clamp(24px, 4vw, 40px); --padding-right: clamp(24px, 4vw, 40px); --row-gap: 10px; --column-gap: 10px; }
.bh-hero .e-con.bh-row-actions, .bh-page-hero .e-con.bh-row-actions { --padding-top: 8px; }

/* ---------- Layout corrections (v1.0.1) ----------
   Inner containers inherit --flex-direction from their parent's custom
   property, so every row-type component declares its own direction here. */
.e-con.bh-mosaic, .e-con.bh-grid, .e-con.bh-addons, .e-con.bh-row-actions, .e-con.bh-footer-cols, .e-con.bh-footer-bottom, .e-con.bh-addon { --flex-direction: row; --flex-wrap: wrap; }
.e-con.bh-addon { --flex-wrap: nowrap; }
.e-con.bh-card, .e-con.bh-col, .e-con.bh-head, .e-con.bh-hero__copy, .e-con.bh-footer-col, .e-con.bh-addon__txt, .e-con.bh-panel, .e-con.bh-hero-card { --flex-direction: column; --flex-wrap: nowrap; }
.e-con.bh-row-actions, .e-con.bh-head, .e-con.bh-hero__copy, .e-con.bh-grid, .e-con.bh-addons { --padding-top: 0; --padding-bottom: 0; --padding-left: 0; --padding-right: 0; }
.e-con.bh-head { --margin-bottom: 8px; margin-bottom: clamp(24px, 3vw, 40px); }
.e-con.bh-grid { --row-gap: clamp(18px, 2.4vw, 28px); --column-gap: clamp(18px, 2.4vw, 28px); margin-bottom: clamp(36px, 5vw, 56px); }
.e-con.bh-addons { --row-gap: 14px; --column-gap: 14px; --justify-content: center; }
.e-con.bh-addon { --width: auto; flex: 1 1 250px; max-width: 300px; }
@media (max-width: 600px) { .e-con.bh-addon { max-width: none; } }

/* hours table: neutralise Hello's default table borders + zebra */
table.bh-hours, .bh-hours tbody > tr > td, .bh-hours tbody > tr:nth-child(odd) > td, .bh-hours tbody > tr:hover > td { background: none !important; border: 0; }
.bh-hours tbody > tr > td { border-bottom: 1px solid rgba(20, 65, 78, .12); padding: 9px 0; font-size: .97rem; }
.bh-hours tbody > tr:last-child > td { border-bottom: 0; }
.bh-on-dark .bh-hours tbody > tr > td { border-bottom-color: rgba(255, 255, 255, .22); color: var(--bh-white); }
.bh-hero-card .bh-hours tbody > tr > td { font-size: .9rem; padding: 8px 0; }

/* footer columns */
.e-con.bh-footer-col { --width: auto; flex: 1 1 180px; }
.e-con.bh-footer-col--brand { flex: 1.6 1 280px; max-width: 380px; }
.bh-footer .bh-logo, .bh-footer .bh-logo .elementor-widget-container { text-align: left; }
.bh-logo img { margin: 0; }

/* mosaic in its column */
.e-con.bh-mosaic { --row-gap: 14px; --column-gap: 14px; }
.bh-mosaic > .elementor-widget-image { width: calc(50% - 7px); flex: 0 0 calc(50% - 7px); }

/* split columns share the row after the gap (50% + 50% + gap overflowed) */
.e-con.bh-col { --width: auto; flex: 1 1 0; min-width: 0; }
.e-con.bh-col--wide { flex-grow: 1.35; }
.e-con.bh-col--narrow { flex-grow: .85; }
@media (max-width: 1024px) {
	.e-con.bh-col, .e-con.bh-col--wide, .e-con.bh-col--narrow { flex: 0 0 auto; width: 100%; }
}
.e-con.bh-mosaic { --row-gap: 12px; --column-gap: 12px; }
.bh-mosaic > .elementor-widget-image { width: calc(50% - 6px); flex: 0 0 calc(50% - 6px); }
table.bh-hours tbody > tr > td, table.bh-hours tbody > tr:nth-child(odd) > td { border: 0; border-bottom: 1px solid rgba(20, 65, 78, .12); }
table.bh-hours tbody > tr:last-child > td { border-bottom: 0; }
.bh-on-dark table.bh-hours tbody > tr > td { border-bottom-color: rgba(255, 255, 255, .22); }
.bh-on-dark table.bh-hours tbody > tr:last-child > td { border-bottom: 0; }
@media (max-width: 560px) { .e-con.bh-footer-cols { --row-gap: 28px; } }
/* mobile-only booking item in the primary menu (desktop has the header button) */
.bh-nav__list > li.bh-menu-book { display: none; }
@media (max-width: 1024px) {
	.bh-nav__list > li.bh-menu-book { display: block; margin-top: 10px; }
	.bh-nav__list > li.bh-menu-book > a { background: var(--bh-deep); color: var(--bh-white); text-align: center; font-weight: 700; }
	.bh-nav__list > li.bh-menu-book > a:hover, .bh-nav__list > li.bh-menu-book > a:focus-visible { background: var(--bh-deep-2); color: var(--bh-white); }
}

/* ==========================================================================
   v2 — warmth + motion. Golden-hour light over the blues; everything slow.
   ========================================================================== */
:root {
	--bh-sun: #F6C77E;       /* golden hour */
	--bh-blush: #F3B49B;     /* plumeria / sunset blush — glow only, never text */
	--bh-ease: cubic-bezier(.22, .7, .2, 1);
}

/* warm sun-washed sand everywhere it appears */
.bh-bg-sand {
	background:
		radial-gradient(55% 60% at 92% 0%, rgba(246, 199, 126, .20) 0%, rgba(246, 199, 126, 0) 70%),
		radial-gradient(45% 50% at 0% 100%, rgba(164, 220, 236, .22) 0%, rgba(164, 220, 236, 0) 70%),
		var(--bh-sand);
}
.bh-bg-mist {
	background:
		radial-gradient(50% 60% at 100% 10%, rgba(246, 199, 126, .22) 0%, rgba(246, 199, 126, 0) 65%),
		linear-gradient(180deg, var(--bh-mist) 0%, var(--bh-haze) 100%);
}

/* ---------- effect hosts: video / image → overlay → decor → content ---------- */
.e-con.bh-fx, .e-con.bh-has-deco { position: relative; isolation: isolate; overflow: hidden; }
.bh-fx > .elementor-background-video-container { z-index: 0; }
.bh-fx > .elementor-background-video-container video { object-fit: cover; }
.bh-deco { position: absolute; inset: 0; z-index: 1; pointer-events: none; overflow: hidden; }
.bh-has-deco > .e-con-inner, .bh-has-deco > .e-con, .bh-has-deco > .elementor-element { position: relative; z-index: 3; }
.bh-overlay { position: absolute; inset: 0; }
.bh-hero .bh-overlay {
	background:
		linear-gradient(90deg, rgba(8, 48, 60, .80) 0%, rgba(8, 48, 60, .52) 40%, rgba(8, 48, 60, .08) 72%, rgba(8, 48, 60, 0) 100%),
		linear-gradient(0deg, rgba(8, 48, 60, .45) 0%, rgba(8, 48, 60, 0) 38%),
		linear-gradient(180deg, rgba(8, 48, 60, .35) 0%, rgba(8, 48, 60, 0) 22%);
}
.bh-page-hero .bh-overlay { background: linear-gradient(100deg, rgba(8, 48, 60, .86) 0%, rgba(8, 48, 60, .6) 48%, rgba(8, 48, 60, .18) 100%); }
.bh-interlude .bh-overlay { background: radial-gradient(60% 70% at 50% 50%, rgba(8, 48, 60, .62) 0%, rgba(8, 48, 60, .42) 60%, rgba(8, 48, 60, .58) 100%); }

/* inner-page hero: the photo drifts (Ken Burns) */
.e-con.bh-page-hero { background-color: #0B3744; }
.bh-kb { position: absolute; inset: -6%; background-size: cover; background-position: center; animation: bh-kenburns 36s var(--bh-ease) infinite alternate; will-change: transform; }
@keyframes bh-kenburns { from { transform: scale(1) translate3d(0, 0, 0); } to { transform: scale(1.1) translate3d(-2%, -1.5%, 0); } }

/* sun glow + slow light rays (home hero) */
.bh-sun { position: absolute; width: 70vmax; height: 70vmax; right: -22vmax; top: -34vmax; border-radius: 50%;
	background: radial-gradient(circle, rgba(255, 214, 140, .55) 0%, rgba(246, 199, 126, .22) 32%, rgba(246, 199, 126, 0) 62%);
	mix-blend-mode: screen; animation: bh-sunbreathe 10s ease-in-out infinite alternate; }
@keyframes bh-sunbreathe { from { opacity: .65; transform: scale(.96); } to { opacity: 1; transform: scale(1.04); } }
.bh-rays { position: absolute; width: 160vmax; height: 160vmax; right: -80vmax; top: -80vmax; opacity: .16; mix-blend-mode: screen;
	background: repeating-conic-gradient(from 0deg, rgba(255, 230, 180, .9) 0deg 4deg, rgba(255, 230, 180, 0) 4deg 14deg);
	-webkit-mask: radial-gradient(circle, #000 0%, rgba(0,0,0,.6) 25%, transparent 55%); mask: radial-gradient(circle, #000 0%, rgba(0,0,0,.6) 25%, transparent 55%);
	animation: bh-rays 140s linear infinite; }
@keyframes bh-rays { to { transform: rotate(360deg); } }

/* palms */
.bh-palmwrap { position: absolute; color: #0B2F3A; }
.bh-palmwrap svg { display: block; width: 100%; height: auto; overflow: visible; }
.bh-palmwrap--near { right: -60px; bottom: -40px; width: clamp(260px, 30vw, 470px); transform: scaleX(-1); opacity: .9; }
.bh-palmwrap--far { right: 24%; bottom: 6%; width: clamp(120px, 11vw, 190px); opacity: .45; filter: blur(.6px); }
.bh-palmwrap--page { right: -50px; bottom: -60px; width: clamp(220px, 24vw, 380px); transform: scaleX(-1); opacity: .55; }
.bh-palmwrap--footer { right: 2%; bottom: -30px; width: clamp(180px, 18vw, 280px); color: var(--bh-deep); opacity: .10; }
.bh-palm__crown { transform-box: view-box; animation: bh-sway 9s ease-in-out infinite alternate; }
.bh-frond { transform-box: view-box; transform-origin: 280px 200px; animation: bh-frond 5.5s ease-in-out infinite alternate; animation-delay: calc(var(--k) * -.7s); }
@keyframes bh-sway { from { transform: rotate(-1.6deg); } to { transform: rotate(2.4deg); } }
@keyframes bh-frond { from { transform: rotate(-1.8deg); } to { transform: rotate(2.2deg); } }
@media (max-width: 767px) { .bh-palmwrap--near { width: 230px; right: -70px; bottom: -30px; opacity: .55; } .bh-palmwrap--page { width: 200px; opacity: .35; } }

/* layered ocean waves at the foot of a hero */
.bh-waves { position: absolute; left: 0; right: 0; bottom: -1px; height: clamp(70px, 9vw, 130px); }
.bh-wvtrack { position: absolute; left: 0; bottom: 0; width: 200%; height: 100%; display: flex; animation: bh-tide 26s linear infinite; }
.bh-wvtrack svg { width: 50%; height: 100%; display: block; flex: 0 0 50%; }
.bh-wvtrack--1 { animation-duration: 34s; } .bh-wvtrack--1 path { fill: rgba(202, 237, 248, .30); }
.bh-wvtrack--2 { animation-duration: 24s; animation-direction: reverse; } .bh-wvtrack--2 path { fill: rgba(164, 220, 236, .45); }
.bh-wvtrack--3 { animation-duration: 40s; } .bh-wvtrack--3 path { fill: var(--bh-sand); }
@keyframes bh-tide { from { transform: translate3d(0, 0, 0); } to { transform: translate3d(-50%, 0, 0); } }
.bh-wvtrack--1 { animation-name: bh-tide, bh-bob; animation-duration: 34s, 7s; animation-timing-function: linear, ease-in-out; animation-iteration-count: infinite; animation-direction: normal, alternate; }
@keyframes bh-bob { from { margin-bottom: 0; } to { margin-bottom: 8px; } }

/* plumeria drifting on the breeze */
.bh-petal { position: absolute; left: -60px; top: var(--y); width: var(--s); height: var(--s); opacity: .92;
	filter: drop-shadow(0 4px 6px rgba(0, 30, 40, .25)); animation: bh-drift var(--dur) linear infinite; animation-delay: var(--delay); }
.bh-petal svg { width: 100%; height: 100%; display: block; animation: bh-spin calc(var(--dur) / 3) ease-in-out infinite alternate; }
@keyframes bh-drift {
	0% { transform: translate3d(0, 0, 0); opacity: 0; }
	6% { opacity: .92; }
	25% { transform: translate3d(28vw, var(--bob), 0); }
	50% { transform: translate3d(55vw, calc(var(--bob) * -.5), 0); }
	75% { transform: translate3d(82vw, var(--bob), 0); }
	94% { opacity: .92; }
	100% { transform: translate3d(112vw, 0, 0); opacity: 0; }
}
@keyframes bh-spin { from { transform: rotate(0); } to { transform: rotate(var(--spin)); } }

/* ripples where you touch the water */
.bh-ripples { position: absolute; inset: 0; }
.bh-ripple { position: absolute; width: 180px; height: 180px; margin: -90px 0 0 -90px; border-radius: 50%;
	border: 1.5px solid rgba(255, 255, 255, .55); box-shadow: 0 0 0 10px rgba(202, 237, 248, .08), inset 0 0 18px rgba(255, 255, 255, .18);
	animation: bh-ripple 2.4s var(--bh-ease) forwards; }
.bh-ripple--big { width: 320px; height: 320px; margin: -160px 0 0 -160px; border-width: 2px; }
@keyframes bh-ripple { from { transform: scale(.1); opacity: .9; } to { transform: scale(1); opacity: 0; } }

/* hero copy floats in */
.bh-split-words .elementor-heading-title .bh-w { display: inline-block; opacity: 0; transform: translateY(.45em); filter: blur(8px);
	animation: bh-word 1.1s var(--bh-ease) forwards; animation-delay: calc(.35s + var(--i) * .1s); }
@keyframes bh-word { to { opacity: 1; transform: none; filter: none; } }
.bh-hero .bh-hero__copy > .elementor-element, .bh-page-hero .bh-hero__copy > .elementor-element { animation: bh-rise 1.2s var(--bh-ease) both; }
.bh-hero .bh-hero__copy > .elementor-element:nth-child(1), .bh-page-hero .bh-hero__copy > .elementor-element:nth-child(1) { animation-delay: .15s; }
.bh-hero .bh-hero__copy > .elementor-element:nth-child(3), .bh-page-hero .bh-hero__copy > .elementor-element:nth-child(3) { animation-delay: 1.1s; }
.bh-hero .bh-hero__copy > .elementor-element:nth-child(4), .bh-page-hero .bh-hero__copy > .elementor-element:nth-child(4) { animation-delay: 1.35s; }
.bh-hero .bh-hero__copy > .bh-split-words, .bh-page-hero .bh-hero__copy > .bh-split-words { animation: none; }
.bh-hero .e-con.bh-hero-card { animation: bh-rise 1.4s var(--bh-ease) 1.7s both; }
@keyframes bh-rise { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }

/* hero controls: sound + motion */
.bh-controls { position: absolute; z-index: 5; left: var(--bh-gutter); bottom: clamp(84px, 10vw, 140px); display: flex; gap: 10px; flex-wrap: wrap; }
.bh-ctl { display: inline-flex; align-items: center; gap: 10px; padding: 9px 16px 9px 12px; border-radius: 999px; cursor: pointer;
	font: 600 .85rem/1 var(--bh-sans); color: #fff; background: rgba(255, 255, 255, .14); border: 1px solid rgba(255, 255, 255, .35);
	-webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); transition: background-color .25s ease; }
.bh-ctl:hover, .bh-ctl:focus-visible { background: rgba(255, 255, 255, .26); color: #fff; }
.bh-ctl[aria-pressed="true"].bh-sound-btn { background: rgba(255, 255, 255, .92); color: var(--bh-ink); }
.bh-ctl__icon { width: 12px; height: 12px; position: relative; }
.bh-ctl__icon::before, .bh-ctl__icon::after { content: ""; position: absolute; top: 0; width: 4px; height: 12px; border-radius: 1px; background: currentColor; }
.bh-ctl__icon::before { left: 1px; } .bh-ctl__icon::after { right: 1px; }
.bh-motion-btn[aria-pressed="true"] .bh-ctl__icon::before { left: 2px; width: 0; height: 0; border-radius: 0; background: none; border-left: 10px solid currentColor; border-top: 6px solid transparent; border-bottom: 6px solid transparent; }
.bh-motion-btn[aria-pressed="true"] .bh-ctl__icon::after { display: none; }
.bh-eq { display: inline-flex; align-items: flex-end; gap: 2px; height: 14px; }
.bh-eq i { width: 3px; height: 4px; border-radius: 2px; background: currentColor; }
.bh-sound-btn[aria-pressed="true"] .bh-eq i { animation: bh-eq 1.1s ease-in-out infinite alternate; }
.bh-sound-btn[aria-pressed="true"] .bh-eq i:nth-child(2) { animation-delay: -.4s; } .bh-sound-btn[aria-pressed="true"] .bh-eq i:nth-child(3) { animation-delay: -.8s; } .bh-sound-btn[aria-pressed="true"] .bh-eq i:nth-child(4) { animation-delay: -.2s; }
@keyframes bh-eq { from { height: 3px; } to { height: 14px; } }
.bh-ctl--quiet { background: transparent; color: var(--bh-muted); border-color: rgba(20, 65, 78, .2); -webkit-backdrop-filter: none; backdrop-filter: none; padding: 6px 12px 6px 10px; font-size: .8rem; }
.bh-ctl--quiet:hover, .bh-ctl--quiet:focus-visible { background: var(--bh-mist); color: var(--bh-ink); }
@media (max-width: 767px) { .bh-controls { bottom: 78px; } .bh-ctl { font-size: .8rem; padding: 8px 12px 8px 10px; } }

/* open-now line */
[data-bh-open] { margin: 0; font-size: .92rem; font-weight: 600; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; min-height: 1.4em; }
[data-bh-open]:not(.is-ready) { visibility: hidden; }
.bh-open__dot { width: 9px; height: 9px; border-radius: 50%; background: #9AA9AE; flex: 0 0 9px; }
[data-bh-open].is-open .bh-open__dot { background: #3CC8A2; box-shadow: 0 0 0 0 rgba(60, 200, 162, .6); animation: bh-ping 2.4s ease-out infinite; }
@keyframes bh-ping { 70% { box-shadow: 0 0 0 9px rgba(60, 200, 162, 0); } 100% { box-shadow: 0 0 0 0 rgba(60, 200, 162, 0); } }
.bh-open__tz { font-weight: 400; opacity: .7; font-size: .82em; }

/* marquee ribbon */
.e-con.bh-marquee-band { --padding-top: 22px; --padding-bottom: 22px; --padding-left: 0; --padding-right: 0; background: var(--bh-sand); overflow: hidden; }
.bh-marquee { display: flex; width: max-content; }
.bh-marquee__track { display: flex; align-items: center; gap: clamp(18px, 2.4vw, 34px); padding-right: clamp(18px, 2.4vw, 34px); flex: none; animation: bh-marquee 60s linear infinite; }
.bh-marquee:hover .bh-marquee__track { animation-play-state: paused; }
.bh-marquee__track span { font: italic 500 clamp(1.6rem, 3.2vw, 2.6rem)/1 var(--bh-serif); color: var(--bh-deep); white-space: nowrap; }
.bh-marquee__track span:nth-of-type(even) { color: var(--bh-ink); font-style: normal; }
.bh-marquee__track i { width: 28px; height: 28px; flex: none; display: block; animation: bh-spin 12s linear infinite alternate; --spin: 180deg; }
.bh-marquee__track i svg { width: 100%; height: 100%; display: block; }
@keyframes bh-marquee { to { transform: translate3d(-100%, 0, 0); } }

/* breathing interlude */
.e-con.bh-interlude { --padding-top: clamp(110px, 13vw, 170px); --padding-bottom: clamp(110px, 13vw, 170px); background-color: #0B3744; }
.bh-breathe { display: flex; flex-direction: column; align-items: center; gap: 26px; margin-top: 10px; --bh-phase: 1200ms; }
.bh-breathe__orb { position: relative; width: clamp(190px, 24vw, 250px); aspect-ratio: 1; display: grid; place-items: center; }
.bh-breathe__ring { position: absolute; inset: 0; border-radius: 50%; border: 1.5px solid rgba(255, 255, 255, .4); animation: bh-ringout 6s ease-out infinite; }
.bh-breathe__ring + .bh-breathe__ring { animation-delay: -3s; }
@keyframes bh-ringout { from { transform: scale(.55); opacity: .9; } to { transform: scale(1.35); opacity: 0; } }
.bh-breathe__core { width: 64%; aspect-ratio: 1; border-radius: 50%; display: grid; place-items: center; text-align: center;
	background: radial-gradient(circle at 35% 30%, rgba(255, 255, 255, .95) 0%, var(--bh-mist) 30%, var(--bh-sky) 70%, var(--bh-deep) 100%);
	box-shadow: 0 0 60px rgba(202, 237, 248, .55), 0 0 140px rgba(246, 199, 126, .25);
	animation: bh-idle 8s ease-in-out infinite; transition: transform var(--bh-phase) cubic-bezier(.45, 0, .55, 1); }
@keyframes bh-idle { 0%, 100% { transform: scale(.82); } 45% { transform: scale(1.02); } }
.bh-breathe.is-running .bh-breathe__core { animation: none; transform: scale(.72); }
.bh-breathe.is-in .bh-breathe__core, .bh-breathe.is-hold .bh-breathe__core { transform: scale(1.12); }
.bh-breathe.is-out .bh-breathe__core { transform: scale(.72); }
.bh-breathe__label { font: 600 clamp(1.15rem, 1.8vw, 1.4rem)/1.1 var(--bh-serif); color: var(--bh-ink); letter-spacing: .01em; }
.bh-breathe__btn { font: 700 .95rem/1 var(--bh-sans); color: var(--bh-ink); background: #fff; border: 0; border-radius: 999px; padding: 15px 26px; cursor: pointer; box-shadow: 0 12px 30px -12px rgba(0, 0, 0, .45); transition: transform .25s ease, background-color .25s ease; }
.bh-breathe__btn:hover, .bh-breathe__btn:focus-visible { background: var(--bh-mist); transform: translateY(-2px); }

/* sunlight through water (insurance band) */
.bh-caustic { position: absolute; border-radius: 50%; mix-blend-mode: soft-light; filter: blur(30px); }
.bh-caustic--1 { width: 55vw; height: 55vw; left: -10vw; top: -30vw; background: radial-gradient(circle, rgba(202, 237, 248, .85), rgba(202, 237, 248, 0) 65%); animation: bh-float1 26s ease-in-out infinite alternate; }
.bh-caustic--2 { width: 40vw; height: 40vw; right: -8vw; bottom: -20vw; background: radial-gradient(circle, rgba(246, 199, 126, .7), rgba(246, 199, 126, 0) 65%); animation: bh-float2 32s ease-in-out infinite alternate; }
.bh-caustic--3 { width: 30vw; height: 30vw; left: 45%; top: 10%; background: radial-gradient(circle, rgba(164, 220, 236, .8), rgba(164, 220, 236, 0) 65%); animation: bh-float1 22s ease-in-out infinite alternate-reverse; }
.bh-caustic--4 { width: 22vw; height: 22vw; left: 20%; bottom: -6vw; background: radial-gradient(circle, rgba(255, 255, 255, .7), rgba(255, 255, 255, 0) 65%); animation: bh-float2 18s ease-in-out infinite alternate; }
@keyframes bh-float1 { to { transform: translate3d(12vw, 8vw, 0) scale(1.15); } }
@keyframes bh-float2 { to { transform: translate3d(-10vw, -6vw, 0) scale(.9); } }

/* a palm frond's shade drifting over sand sections */
.bh-leafwrap { position: absolute; right: -40px; top: -30px; width: clamp(320px, 42vw, 640px); color: var(--bh-deep); opacity: .085; filter: blur(1.5px); }
.bh-leafwrap svg { width: 100%; height: auto; display: block; }
.bh-leafshadow__g { transform-box: view-box; animation: bh-shade 11s ease-in-out infinite alternate; }
@keyframes bh-shade { from { transform: rotate(-3deg); } to { transform: rotate(4deg); } }

/* light orbs rising (mist sections) */
.bh-orb { position: absolute; left: var(--x); bottom: -80px; width: var(--s); height: var(--s); border-radius: 50%;
	background: radial-gradient(circle at 35% 35%, rgba(255, 255, 255, .95), rgba(255, 255, 255, .25) 55%, rgba(255, 255, 255, 0) 70%);
	opacity: 0; animation: bh-rise-orb var(--dur) ease-in-out infinite; animation-delay: var(--delay); }
@keyframes bh-rise-orb { 0% { transform: translate3d(0, 0, 0); opacity: 0; } 15% { opacity: .7; } 85% { opacity: .5; } 100% { transform: translate3d(30px, -120vh, 0); opacity: 0; } }

/* service cards: tilt (JS) + light that follows the pointer */
.e-con.bh-card { transition: transform .5s var(--bh-ease), box-shadow .5s var(--bh-ease); transform-style: preserve-3d; will-change: transform; }
.e-con.bh-card::after { content: ""; position: absolute; inset: 0; pointer-events: none; border-radius: inherit; opacity: 0; transition: opacity .4s ease;
	background: radial-gradient(420px circle at var(--mx, 50%) var(--my, 0%), rgba(255, 255, 255, .45), rgba(255, 255, 255, 0) 45%); }
.e-con.bh-card:hover::after { opacity: 1; }
.bh-card .elementor-heading-title a { background: linear-gradient(var(--bh-sky), var(--bh-sky)) 0 100% / 0 2px no-repeat; transition: background-size .5s var(--bh-ease); padding-bottom: 2px; }
.e-con.bh-card:hover .elementor-heading-title a { background-size: 100% 2px; }

/* parallax images float a little against the scroll */
.bh-parallax img { will-change: transform; transition: transform .1s linear; }

/* reveal: stagger siblings */
.bh-reveal--armed { transition-delay: var(--rd, 0ms); }

/* rates rows warm up on hover */
.bh-prices li { transition: background-color .3s ease, padding .3s ease; border-radius: 10px; }
.bh-prices li:hover { background: rgba(246, 199, 126, .14); padding-left: 10px; padding-right: 10px; }

/* ---------- motion off: reduced-motion or the visitor paused it ---------- */
.bh-still .bh-deco *, .bh-still .bh-deco, .bh-still .bh-marquee__track, .bh-still .bh-marquee__track i, .bh-still .bh-breathe__ring,
.bh-still .bh-breathe__core, .bh-still .bh-wave-top::before, .bh-still .bh-wave-bottom::after, .bh-still [data-bh-open] .bh-open__dot {
	animation-play-state: paused !important;
}
.bh-still .bh-split-words .bh-w, .bh-still .bh-hero__copy > .elementor-element, .bh-still .bh-hero-card { animation: none !important; opacity: 1 !important; transform: none !important; filter: none !important; }
.bh-still .bh-petal, .bh-still .bh-orb, .bh-still .bh-ripples { display: none; }
@media (prefers-reduced-motion: reduce) {
	.bh-deco *, .bh-marquee__track, .bh-wave-top::before, .bh-wave-bottom::after, .bh-breathe__ring, .bh-breathe__core { animation: none !important; }
	.bh-petal, .bh-orb, .bh-ripples, .bh-rays { display: none; }
	.bh-split-words .bh-w, .bh-hero__copy > .elementor-element, .bh-hero-card { animation: none !important; opacity: 1 !important; transform: none !important; filter: none !important; }
	.bh-breathe__core { transition: none; }
}
.bh-fx > .elementor-background-video-container { position: absolute; inset: 0; z-index: 0; }
@media (max-width: 767px) { .bh-controls { top: 14px; right: 14px; left: auto; bottom: auto; } }
/* Hello Elementor styles every [type=button]; out-rank it for our own buttons */
button.bh-ctl, button.bh-ctl:hover, button.bh-ctl:focus { text-transform: none; letter-spacing: 0; }
button.bh-ctl { color: #fff; background-color: rgba(255, 255, 255, .14); border: 1px solid rgba(255, 255, 255, .38); }
button.bh-ctl:hover, button.bh-ctl:focus-visible { color: #fff; background-color: rgba(255, 255, 255, .28); border-color: rgba(255, 255, 255, .6); }
button.bh-ctl.bh-sound-btn[aria-pressed="true"] { background-color: rgba(255, 255, 255, .92); color: var(--bh-ink); }
button.bh-ctl.bh-ctl--quiet { background-color: transparent; color: var(--bh-muted); border-color: rgba(20, 65, 78, .22); }
button.bh-ctl.bh-ctl--quiet:hover, button.bh-ctl.bh-ctl--quiet:focus-visible { background-color: var(--bh-mist); color: var(--bh-ink); }
button.bh-breathe__btn { color: var(--bh-ink); background-color: #fff; border: 0; text-transform: none; }
button.bh-breathe__btn:hover, button.bh-breathe__btn:focus-visible { color: var(--bh-ink); background-color: var(--bh-mist); }
button.bh-nav__toggle, button.bh-nav__toggle:hover, button.bh-nav__toggle:focus { background-color: var(--bh-mist); border: 0; }
.bh-on-dark [data-bh-open] { color: #fff; }
.bh-hero-card [data-bh-open] { font-size: .88rem; }
.bh-wave--sand2::after { color: var(--bh-sand-2); }
button.bh-breathe__btn:focus, button.bh-breathe__btn:active { color: var(--bh-ink); background-color: #fff; }
button.bh-breathe__btn[aria-pressed="true"] { background-color: rgba(255, 255, 255, .85); }
button.bh-ctl:focus, button.bh-ctl:active { color: #fff; background-color: rgba(255, 255, 255, .2); }
button.bh-ctl.bh-ctl--quiet:focus, button.bh-ctl.bh-ctl--quiet:active { color: var(--bh-muted); background-color: transparent; }
.bh-footer-bottom > .bh-ctl { flex: 0 0 auto; align-self: center; }
@media (max-width: 1024px) { .bh-parallax img { transform: none !important; } }

/* ==========================================================================
   v2.1 — calmer, more legible hero (Marcel: "cluttered, hard to read")
   ========================================================================== */
/* a deep, wide scrim behind the copy; the right side stays open water */
.bh-hero .bh-overlay {
	background:
		linear-gradient(90deg, rgba(6, 38, 48, .88) 0%, rgba(6, 38, 48, .80) 32%, rgba(6, 38, 48, .58) 52%, rgba(6, 38, 48, .22) 74%, rgba(6, 38, 48, .10) 100%),
		linear-gradient(0deg, rgba(6, 38, 48, .45) 0%, rgba(6, 38, 48, 0) 35%),
		linear-gradient(180deg, rgba(6, 38, 48, .30) 0%, rgba(6, 38, 48, 0) 20%);
}
/* soften the sparkle so it reads as light, not noise */
.bh-hero .bh-sun { opacity: .55; right: -30vmax; top: -40vmax; animation: none; }
.bh-hero .bh-palmwrap--near { right: -30px; bottom: -10px; width: clamp(280px, 26vw, 440px); color: #04212A; opacity: 1; }
@media (max-width: 1024px) { .bh-hero .bh-palmwrap--near { width: 240px; right: -80px; opacity: .7; } }
@media (max-width: 767px) { .bh-hero .bh-overlay { background: linear-gradient(180deg, rgba(6, 38, 48, .55) 0%, rgba(6, 38, 48, .78) 40%, rgba(6, 38, 48, .85) 100%); } }

/* type: more air and a touch of shadow for the moving background */
.bh-hero .bh-hero__copy { max-width: 600px; --row-gap: 24px; }
.bh-hero .bh-lede, .bh-hero .bh-lede p { max-width: 33em; font-size: clamp(1.08rem, 1.3vw, 1.22rem); line-height: 1.65; color: rgba(255, 255, 255, .94); text-shadow: 0 1px 14px rgba(0, 20, 28, .45); }
.bh-hero .elementor-widget.bh-eyebrow .elementor-heading-title { color: #D9F2FA; text-shadow: 0 1px 10px rgba(0, 20, 28, .5); }
.bh-hero .bh-row-actions { --padding-top: 6px; }

/* open-now pill (replaces the hours card) */
.bh-open-pill [data-bh-open] { display: inline-flex; width: auto; padding: 9px 16px; border-radius: 999px; font-size: .9rem; color: #fff;
	background: rgba(6, 38, 48, .45); border: 1px solid rgba(255, 255, 255, .22); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.bh-open-pill .bh-open__tz { opacity: .8; }
.bh-hero .bh-hero__copy > .bh-open-pill { animation-delay: 1.6s; }

/* controls: two small round icon buttons, tucked into the corner */
.bh-controls { left: auto; right: max(var(--bh-gutter), calc((100% - 1200px) / 2)); bottom: clamp(96px, 10vw, 140px); gap: 8px; }
button.bh-ctl.bh-ctl--icon { width: 42px; height: 42px; padding: 0; justify-content: center; gap: 0; background-color: rgba(6, 38, 48, .45); border-color: rgba(255, 255, 255, .3); }
button.bh-ctl.bh-ctl--icon:hover, button.bh-ctl.bh-ctl--icon:focus-visible { background-color: rgba(6, 38, 48, .7); border-color: rgba(255, 255, 255, .6); }
button.bh-ctl.bh-ctl--icon.bh-sound-btn[aria-pressed="true"] { background-color: rgba(255, 255, 255, .92); color: var(--bh-ink); }
.bh-ctl--icon .bh-ctl__txt { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.bh-ctl--icon .bh-eq i { height: 6px; }
.bh-hero .bh-controls { right: max(var(--bh-gutter), calc((100% - 1200px) / 2)); }
.bh-hero:has(.bh-palmwrap--near) .bh-controls { right: max(calc(var(--bh-gutter) + 10px), calc((100% - 1200px) / 2 - 0px)); }
@media (min-width: 1025px) { .bh-controls { bottom: auto; top: 28px; } }
@media (max-width: 767px) { .bh-controls { top: 14px; right: 14px; bottom: auto; } }

/* page heroes + interlude: the same restraint */
.bh-page-hero .bh-palmwrap--page { color: #04212A; opacity: .8; }
.bh-interlude .bh-petal { opacity: .7; }
.bh-hero .bh-hero__copy { max-width: 700px; }
/* dim the video with the overlay; never set transform on it — Elementor centres it with translate(-50%,-50%) */
.bh-hero .bh-overlay::after { content: ""; position: absolute; inset: 0; background: rgba(6, 38, 48, .14); }
