/************************************************************************************************/
/**/
/* Tilbury BIA - only what has no native Elementor control (clamp, max-width, 3-stop overlays,   */
/* animations, generated content). Everything else is set in the template JSON.                  */
/**/
/* Tokens read Elementor Site Settings (Global Colors / Fonts on body.elementor-kit-N); the literal
   is only the fallback for pages without a kit. Change colours and fonts in Site Settings, not here. */
body {
	--tb-navy: var(--e-global-color-primary, #0B2545);
	--tb-gold: var(--e-global-color-accent, #E0B93C);
	--tb-slate: var(--e-global-color-text, #3D5471);
	--tb-gold-dark: var(--e-global-color-secondary, #B08C1E);
	--tb-navy-deep: var(--e-global-color-tbnavydeep, #081C34);
	--tb-cream: var(--e-global-color-tbcream, #F7F4ED);
	--tb-cream-80: var(--e-global-color-tbcream80, rgba(247, 244, 237, .8));
	--tb-line: var(--e-global-color-tbline, rgba(11, 37, 69, .14));
	--tb-font-display: var(--e-global-typography-primary-font-family, 'Montserrat'), system-ui, sans-serif;
	--tb-font-body: var(--e-global-typography-text-font-family, 'Public Sans'), system-ui, sans-serif;
	--tb-header-h: 92px;
	overflow-x: clip;
}
@media (max-width: 767px) { body { --tb-header-h: 64px; } }
/* Hello theme fallbacks (404, search) have no hero: keep them clear of the fixed header */
body.tb-no-hero .site-main { padding-top: calc(var(--tb-header-h) + 40px); }
@keyframes tb-float { from { transform: translateY(0); } to { transform: translateY(8px); } }

/**/
/* Header - fixed over the hero, turns solid once the hero is scrolled past (js/tilbury.js) */
/**/
.elementor .elementor-element.e-con.tb-header { transition: background .35s ease; }
/* WP sets --wp-admin--admin-bar--height (32px, 46px under 783px) only when the bar is showing */
.admin-bar .elementor .elementor-element.e-con.tb-header { top: var(--wp-admin--admin-bar--height, 32px); }
/* Under 600px WP un-fixes the admin bar (it scrolls away) but keeps html margin-top:46px, which
   leaves a hole above a fixed header for logged-in users; drop the bar on phones instead */
@media (max-width: 600px) {
	html { margin-top: 0 !important; }
	#wpadminbar { display: none; }
	.admin-bar .elementor .elementor-element.e-con.tb-header { top: 0; }
}
.tb-header .elementor-widget-image { flex: 0 0 auto; }
/* Mobile menu: a full-width panel hung from the header itself (the header is the positioned ancestor),
   not from the toggle - and the closed panel takes no height, so the bar stays 64px */
.tb-header .elementor-widget-nav-menu, .tb-header .tb-header__right { position: static; }
.tb-header .elementor-nav-menu--dropdown.elementor-nav-menu__container { position: absolute; top: 100%; left: 0; right: 0; width: 100%; margin-top: 0; background: var(--tb-navy); }
.elementor .elementor-element.e-con.tb-header.tb-header--solid,
.elementor .elementor-element.e-con.tb-header:has(.elementor-nav-menu--dropdown[aria-hidden="false"]) { background-image: none; background-color: rgba(11, 37, 69, .96); }
/* Phones: always the solid bar (no room for a transparent header over the photo) */
@media (max-width: 767px) { .elementor .elementor-element.e-con.tb-header { background-image: none; background-color: rgba(11, 37, 69, .96); } }
.tb-header .elementor-button { white-space: nowrap; }
.tb-header .elementor-widget-nav-menu, .tb-header .elementor-widget-button { flex-shrink: 0; }
.tb-header .elementor-nav-menu--main .elementor-nav-menu { flex-wrap: nowrap; }
.tb-header .elementor-nav-menu--dropdown { background: rgba(11, 37, 69, .98); }

/**/
/* Hero */
/**/
.elementor .elementor-element.e-con.tb-hero { min-height: max(100vh, 640px); }
.elementor .elementor-element.e-con.tb-hero::before { background: linear-gradient(180deg, rgba(11, 37, 69, .62) 0%, rgba(11, 37, 69, .34) 40%, rgba(11, 37, 69, .86) 100%); }
.elementor.elementor .e-con > .elementor-element.tb-hero__title { max-width: min(1000px, 88vw); }
@media (max-width: 767px) {
	/* One word per line, and a heavier shade so the cream type reads over the photo */
	.tb-hero__title .tb-w { display: block; }
	.tb-hero__title .elementor-heading-title { word-spacing: 100vw; }
	.elementor .elementor-element.e-con.tb-hero::before { background: linear-gradient(180deg, rgba(11, 37, 69, .74) 0%, rgba(11, 37, 69, .52) 40%, rgba(11, 37, 69, .9) 100%); }
}
.tb-scroll-line { animation: tb-float 1.8s ease-in-out infinite alternate; }

/**/
/* Intro / About */
/**/
.elementor .elementor-element.e-con.tb-intro { padding-top: clamp(90px, 14vh, 170px); padding-bottom: clamp(90px, 14vh, 170px); }
.tb-intro__inner { max-width: 1040px; }
.tb-ssx .elementor-heading-title { display: flex; flex-wrap: wrap; justify-content: center; gap: clamp(20px, 4vw, 64px); }
.tb-ssx .tb-gold { color: var(--tb-gold-dark); }
.elementor .elementor-element.e-con.tb-about { margin-top: clamp(48px, 7vh, 86px); padding-top: clamp(44px, 6vh, 72px); gap: clamp(32px, 5vw, 72px); }
.elementor.elementor .e-con > .elementor-element.tb-about__copy { max-width: 560px; }
.tb-about__copy p + p { margin-top: 20px; }

/**/
/* Lakes map widget - canvas tile layers moved by GPU transforms (js/tilbury.js) */
/**/
.tb-lakes { position: relative; background: var(--tb-navy); }
.tb-lakes__sticky { position: sticky; top: 0; height: 100vh; overflow: hidden; }
.tb-lakes__map { position: absolute; inset: 0; background: #14202E; overflow: hidden; isolation: isolate; } /* tile z-indexes stay inside the map */
.tb-lakes__map .tb-tl { position: absolute; left: 0; top: 0; transform-origin: 0 0; will-change: transform, opacity; backface-visibility: hidden; filter: grayscale(1) contrast(.78) brightness(.72); image-rendering: auto; }
.tb-lakes__map .tb-halo, .tb-lakes__map .tb-lake-label, .tb-lakes__map .tb-pin { position: absolute; left: 0; top: 0; z-index: 20; will-change: transform; pointer-events: none; } /* above the stacked tile levels */
.tb-halo { border-radius: 50%; border: 1px solid rgba(224, 185, 60, .55); background: rgba(30, 79, 143, .42); box-sizing: border-box; }
.tb-lakes__vignette { position: absolute; inset: 0; pointer-events: none; background: radial-gradient(circle at 50% 50%, rgba(11, 37, 69, 0) 30%, rgba(11, 37, 69, .55) 72%, rgba(11, 37, 69, .92) 100%); }
.tb-lakes__shade { position: absolute; inset: 0; pointer-events: none; background: linear-gradient(180deg, rgba(11, 37, 69, .72) 0%, rgba(11, 37, 69, .15) 42%, rgba(11, 37, 69, .82) 100%); }
.tb-lakes__attrib { position: absolute; right: 8px; bottom: 6px; z-index: 2; font-size: 9px; color: #B9C6D6; background: rgba(11, 37, 69, .7); padding: 2px 6px; text-decoration: none; }
.tb-lakes__attrib:hover { color: var(--tb-gold); }
.tb-lakes__copy { position: absolute; inset: 0; display: grid; align-content: space-between; justify-items: center; padding: max(clamp(80px, 12vh, 140px), calc(var(--tb-header-h) + 48px)) 32px clamp(52px, 8vh, 88px); pointer-events: none; text-align: center; }
/* .tb-lakes prefix: Site Settings' h2 rule (.elementor-kit-N h2) would otherwise shrink this to the Section Title size */
.tb-lakes .tb-lakes__title { margin: 0; font-family: var(--tb-font-display); font-weight: 200; font-size: clamp(26px, 4vw, 64px); line-height: 1.3; letter-spacing: .24em; text-transform: uppercase; text-shadow: 0 2px 24px rgba(11, 37, 69, .8); will-change: transform, opacity; }
.tb-lakes__text { margin: 0; max-width: 460px; font-size: 15px; line-height: 1.7; text-shadow: 0 1px 12px rgba(11, 37, 69, .9); }
.tb-lake-label { color: var(--tb-gold); font-family: var(--tb-font-display); font-size: 13px; font-weight: 500; letter-spacing: .22em; text-transform: uppercase; white-space: nowrap; text-shadow: 0 1px 8px rgba(0, 0, 0, .85); }
.tb-pin { width: 0; height: 0; }
.tb-pin i { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); display: block; width: 14px; height: 14px; border-radius: 999px; background: var(--tb-gold); box-shadow: 0 0 0 6px rgba(224, 185, 60, .22), 0 0 26px rgba(224, 185, 60, .55); }
.tb-pin b { position: absolute; left: 50%; top: 26px; transform: translateX(-50%); font-family: var(--tb-font-display); font-weight: 400; font-size: 13px; letter-spacing: .34em; text-transform: uppercase; color: var(--tb-cream); white-space: nowrap; text-shadow: 0 1px 8px rgba(0, 0, 0, .9); }

/**/
/* Directory */
/**/
.elementor .elementor-element.e-con.tb-directory { padding-top: clamp(80px, 12vh, 140px); padding-bottom: clamp(80px, 12vh, 140px); }
.tb-directory__inner, .tb-events__inner { max-width: 1180px; }
.tb-cats { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1px; background: var(--tb-cream); }
.tb-cat, .tb-join, .tb-event { text-decoration: none; }
.tb-cat { display: block; position: relative; min-height: clamp(200px, 55vw, 260px); perspective: 1200px; background: var(--tb-cream); color: inherit; }
.tb-cat__inner { position: absolute; inset: 0; transform-style: preserve-3d; transition: transform .55s cubic-bezier(.4, 0, .2, 1); }
.tb-cat:hover .tb-cat__inner, .tb-cat:focus-visible .tb-cat__inner { transform: rotateY(180deg); }
.tb-cat__front, .tb-cat__back { position: absolute; inset: 0; backface-visibility: hidden; }
.tb-cat__front { overflow: hidden; background: var(--tb-navy); }
.tb-cat__front img { width: 100%; height: 100%; object-fit: cover; display: block; }
.tb-cat__shade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(11, 37, 69, .18), rgba(11, 37, 69, .86)); }
.tb-cat__label { position: absolute; inset: 0; display: grid; align-content: space-between; gap: 40px; padding: 26px; }
.tb-cat__num { font-size: 12px; letter-spacing: .2em; color: var(--tb-gold); font-weight: 600; }
.tb-cat__name { font-family: var(--tb-font-display); font-weight: 300; font-size: 19px; line-height: 1.4; letter-spacing: .14em; text-transform: uppercase; color: var(--tb-cream); }
.tb-cat__back { transform: rotateY(180deg); background: var(--tb-navy); display: grid; align-content: center; justify-items: center; gap: 18px; padding: 26px; text-align: center; }
.tb-cat__cta { font-family: var(--tb-font-display); font-weight: 300; font-size: 18px; line-height: 1.5; letter-spacing: .16em; text-transform: uppercase; color: var(--tb-cream); }
.tb-cat__arrow { font-size: 18px; color: var(--tb-gold); }
.tb-join { display: grid; align-content: space-between; gap: 40px; min-height: clamp(160px, 40vw, 220px); padding: 28px; background: var(--tb-gold); transition: background .25s ease, color .25s ease; }
/* Site Settings link colour (.elementor-kit-N a) would tint this tile gold-on-gold; outrank it */
.tb-cats a.tb-join, .tb-cats a.tb-join .tb-join__arrow, .tb-cats a.tb-join .tb-join__text { color: #000; }
.tb-cats a.tb-join:hover, .tb-cats a.tb-join:focus-visible { background: var(--tb-navy); }
.tb-cats a.tb-join:hover, .tb-cats a.tb-join:hover .tb-join__arrow, .tb-cats a.tb-join:hover .tb-join__text,
.tb-cats a.tb-join:focus-visible, .tb-cats a.tb-join:focus-visible .tb-join__arrow, .tb-cats a.tb-join:focus-visible .tb-join__text { color: #fff; }
.tb-join__arrow { font-size: 14px; letter-spacing: .2em; font-weight: 700; }
.tb-join__text { font-family: var(--tb-font-display); font-weight: 500; font-size: 19px; line-height: 1.4; letter-spacing: .14em; text-transform: uppercase; }
@media (prefers-reduced-motion: reduce) { .tb-cat__inner, .tb-event, .tb-scroll-line { transition: none; animation: none; } }

/**/
/* Events */
/**/
.elementor .elementor-element.e-con.tb-events-section { padding-top: clamp(90px, 13vh, 150px); padding-bottom: clamp(110px, 15vh, 180px); }
/* Motion-effects background layer paints above ::before; lift overlay and content */
.elementor .elementor-element.e-con.tb-events-section::before { z-index: 1; }
.elementor .elementor-element.e-con.tb-events-section > .elementor-element { position: relative; z-index: 2; }
.elementor .elementor-element.e-con.tb-events-section::before { background: linear-gradient(180deg, rgba(11, 37, 69, .9), rgba(11, 37, 69, .72) 45%, rgba(11, 37, 69, .94)); }
.elementor .elementor-element.e-con.tb-events__inner { gap: clamp(48px, 7vh, 80px); }
.tb-events { display: flex; flex-wrap: wrap; justify-content: center; gap: clamp(28px, 4vw, 60px); }
.tb-event { display: block; width: clamp(260px, 26vw, 320px); padding: 14px 14px 26px; background: var(--tb-cream); color: inherit; box-shadow: 0 26px 60px rgba(0, 0, 0, .45); transition: transform .35s cubic-bezier(.4, 0, .2, 1); transform: rotate(var(--tb-tilt, 0deg)); }
.tb-event:hover, .tb-event:focus-visible { transform: rotate(0deg) translateY(-10px); }
.tb-event__photo { position: relative; width: 100%; aspect-ratio: 1 / 1; background: #DEDBD3; overflow: hidden; }
.tb-event__photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.tb-event__body { display: grid; gap: 9px; padding: 20px 8px 0; }
.tb-event__date { font-size: 11px; letter-spacing: .24em; text-transform: uppercase; color: var(--tb-gold-dark); font-weight: 600; }
.tb-event__name { font-family: var(--tb-font-display); font-weight: 300; font-size: 19px; line-height: 1.35; letter-spacing: .13em; text-transform: uppercase; color: var(--tb-navy); }
.tb-event__blurb { font-size: 14px; line-height: 1.6; color: var(--tb-slate); }

/**/
/* Footer */
/**/
.tb-footer__logo img { width: min(320px, 70vw); }

/**/
/* Places + Events widgets (ported from the Windsor build): re-theme their design tokens.        */
/* The directory widget re-declares them on its own wrapper, so the wrappers are listed too.      */
/**/
body, body .tbbia-places-directory, body .tbbia-dir-hero {
	--tbbia-pink: var(--tb-gold);
	--tbbia-blue: var(--tb-navy);
	--tbbia-purple: var(--tb-navy-deep);
	--tbbia-orange: var(--tb-gold-dark);
	--tbbia-yellow: var(--tb-gold);
	--tbbia-green: var(--tb-gold-dark);
	--tbbia-navy: var(--tb-navy);
	--tbbia-dark: var(--tb-navy);
	--tbbia-font-display: var(--tb-font-display);
	--tbbia-font-outfit: var(--tb-font-display);
	--tbbia-font-sans: var(--tb-font-body);
	--tbbia-radius-lg: 0;
	--tbbia-radius-md: 0;
	--tbbia-radius-sm: 0;
	--tbbia-card-border: 1px solid var(--tb-line);
	--tbbia-shadow: none;
	--tbbia-shadow-hover: none;
	--tbbia-shadow-lg: none;
	--tbbia-shadow-sm: none;
	--tbbia-shadow-sm-hover: none;
	--tbbia-shadow-xs: none;
}

/* Long category names wrap inside their pill on phones instead of overflowing the filter box */
@media (max-width: 767px) { .tbbia-places-directory .tbbia-dir-category-pill { white-space: normal; text-align: left; max-width: 100%; } }

/**/
/* Inner pages: heroes and content widths (Events / About / Contact designs) */
/**/
.tb-page-hero__inner { max-width: 900px; }
.elementor.elementor .e-con > .elementor-element.tb-page-hero__text { max-width: 640px; }
.tb-inner { max-width: 1040px; }
.tb-inner--900 { max-width: 900px; }
.tb-inner--1180 { max-width: 1180px; }
.tb-inner--wide { max-width: 1240px; }
/* Hero = max(vh, floor) as designed; the sized radial glow (and the About photo's 3-stop shade) are ::before */
.elementor .elementor-element.e-con.tb-page-hero { min-height: max(48vh, 340px); }
.elementor .elementor-element.e-con.tb-page-hero--about { min-height: max(52vh, 380px); }
.elementor .elementor-element.e-con.tb-page-hero--contact { min-height: max(40vh, 280px); }
.elementor .elementor-element.e-con.tb-page-hero::before { background: radial-gradient(120% 140% at 50% 10%, rgba(224, 185, 60, .14), rgba(11, 37, 69, 0) 60%); }
/* Motion-effects background layer paints above ::before; lift the overlay and the content */
.elementor .elementor-element.e-con.tb-page-hero--about::before, .elementor .elementor-element.e-con.tb-vision::before { z-index: 1; }
.elementor .elementor-element.e-con.tb-page-hero--about > .elementor-element, .elementor .elementor-element.e-con.tb-vision > .elementor-element { position: relative; z-index: 2; }
.elementor .elementor-element.e-con.tb-page-hero--about::before { background: radial-gradient(120% 140% at 50% 10%, rgba(224, 185, 60, .14), rgba(11, 37, 69, 0) 60%), linear-gradient(180deg, rgba(11, 37, 69, .7), rgba(11, 37, 69, .55) 50%, rgba(11, 37, 69, .82)); }

/**/
/* Events page - three feature events + CTA band */
/**/
.elementor .elementor-element.e-con.tb-feat--fireworks { padding-bottom: clamp(56px, 8vh, 90px); }
.elementor .elementor-element.e-con.tb-feat--fireworks::before { background: linear-gradient(0deg, rgba(11, 37, 69, .94) 0%, rgba(11, 37, 69, .45) 46%, rgba(11, 37, 69, .12) 100%); }
.elementor.elementor .e-con > .elementor-element.tb-feat__text--420 { max-width: 420px; }
.elementor.elementor .e-con > .elementor-element.tb-feat__text--480 { max-width: 480px; }
.elementor.elementor .e-con > .elementor-element.tb-feat__text--520 { max-width: 520px; }
.elementor .elementor-element.e-con.tb-split__panel { padding: clamp(48px, 7vw, 90px); }
.elementor .elementor-element.e-con.tb-market { padding-top: clamp(80px, 12vh, 140px); padding-bottom: clamp(80px, 12vh, 140px); }
.elementor .elementor-element.e-con.tb-market__inner { gap: clamp(40px, 6vh, 64px); }
.elementor .elementor-element.e-con.tb-market__photo { aspect-ratio: 4 / 3; }
.elementor .elementor-element.e-con.tb-events-cta { padding-top: clamp(70px, 10vh, 110px); padding-bottom: clamp(70px, 10vh, 110px); }

/**/
/* About page - town + counters, vision on photo, flip tiles, board grid */
/**/
.elementor .elementor-element.e-con.tb-town-band { padding-top: clamp(70px, 10vh, 120px); padding-bottom: clamp(70px, 10vh, 120px); }
.elementor .elementor-element.e-con.tb-town { gap: clamp(32px, 5vw, 72px); }
.elementor .elementor-element.e-con.tb-town__right { max-width: 560px; }
.tb-about__copy p + p { margin-top: 20px; }
.tb-about__copy p:last-child { margin-bottom: 0; }
.elementor .elementor-element.e-con.tb-vision, .elementor .elementor-element.e-con.tb-focus-band, .elementor .elementor-element.e-con.tb-board-band { padding-top: clamp(80px, 12vh, 140px); padding-bottom: clamp(80px, 12vh, 140px); }
.elementor .elementor-element.e-con.tb-vision::before { background: linear-gradient(180deg, rgba(11, 37, 69, .92), rgba(11, 37, 69, .8) 45%, rgba(11, 37, 69, .94)); }
.elementor.elementor .e-con > .elementor-element.tb-vision__intro { max-width: 760px; }
.tb-vision__intro p { line-height: 1.8; margin: 0; }
.tb-vision__text p { margin: 0; }
.tb-vision__card { backdrop-filter: blur(2px); }
/* Flip tiles (Pro Flip Box): front = title / subtitle / turn glyph, back = label + text pairs, scrollable */
.tb-flip .elementor-flip-box__layer__title { margin: 0 0 22px; }
.tb-flip .elementor-flip-box__front .elementor-flip-box__layer__description { display: grid; gap: 22px; justify-items: center; }
.tb-flip__icon { font-size: 24px; letter-spacing: 0; color: var(--tb-gold); }
/* Back face is sized to its copy (widget height 520/600/640 per breakpoint); scrolling is only a safety net */
.tb-flip .elementor-flip-box__back .elementor-flip-box__layer__overlay { overflow-y: auto; }
.tb-flip .elementor-flip-box__back .elementor-flip-box__layer__description { text-align: left; }
.tb-flip__label { display: block; font-size: 12px; letter-spacing: .16em; text-transform: uppercase; font-weight: 700; margin-bottom: 5px; }
.tb-flip__text { display: block; font-size: 15px; line-height: 1.55; margin-bottom: 20px; }
.tb-flip__text:last-child { margin-bottom: 0; }
.tb-board__name .elementor-heading-title { text-transform: none; }

/**/
/* Contact page - office details, form, map band */
/**/
.elementor .elementor-element.e-con.tb-contact-page { padding-top: clamp(70px, 10vh, 120px); padding-bottom: clamp(70px, 10vh, 120px); }
.elementor .elementor-element.e-con.tb-contact__cols { gap: clamp(48px, 6vw, 96px); }
.elementor .elementor-element.e-con.tb-contact__left { min-width: 240px; }
.tb-contact__role p, .tb-contact__address p { margin: 0; }
.tb-contact__link .elementor-heading-title a { color: inherit; border-bottom: 1px solid rgba(11, 37, 69, .3); transition: color .25s ease, border-color .25s ease; }
.tb-contact__link .elementor-heading-title a:hover { color: var(--tb-gold-dark); border-color: var(--tb-gold); }
.elementor .elementor-element.e-con.tb-map-band { padding-top: clamp(80px, 12vh, 140px); padding-bottom: clamp(80px, 12vh, 140px); }
/* The map keeps the design's 16/7 frame instead of a fixed height (4 classes outrank Elementor's height rule) */
.elementor.elementor .elementor-element.tb-contact-map iframe { display: block; width: 100%; height: auto; aspect-ratio: 16 / 7; }
.elementor-widget-button.tb-btn--md .elementor-button { padding: 14px 28px; letter-spacing: .16em; }

/**/
/* Gravity Forms (Orbital theme) in the Tilbury palette - tokens first, selectors for the rest.    */
/* GF prints its own tokens on #gform_wrapper_N[data-form-index].gform-theme (ID specificity), so    */
/* the token block needs :not(#id) to outrank it without hard-coding a form ID.                       */
/**/
.gform_wrapper.gform-theme.gform-theme--orbital:not(#tb-gf) {
	--gf-color-primary: var(--tb-navy);
	--gf-color-primary-contrast: var(--tb-cream);
	--gf-color-primary-darker: var(--tb-navy-deep);
	--gf-color-in-error: #b42318;
	--gf-font-family: var(--tb-font-body);
	--gf-ctrl-radius: 2px;
	--gf-ctrl-border-color: rgba(11, 37, 69, .18);
	--gf-ctrl-border-color-hover: var(--tb-gold);
	--gf-ctrl-border-color-focus: var(--tb-gold);
	--gf-ctrl-bg-color: #F2EEE3;
	--gf-ctrl-font-size: 15px;
	--gf-ctrl-padding-y: 12px;
	--gf-ctrl-padding-x: 14px;
	--gf-ctrl-size: 46px;
	--gf-ctrl-placeholder-color: #9AA6B8;
	--gf-form-gap-y: 26px;
	--gf-ctrl-color: var(--tb-navy);
	--gf-ctrl-outline-color-focus: rgba(224, 185, 60, .45);
	--gf-ctrl-outline-width-focus: 2px;
	--gf-ctrl-btn-bg-color-primary: var(--tb-gold);
	--gf-ctrl-btn-bg-color-hover-primary: var(--tb-gold);
	--gf-ctrl-btn-bg-color-focus-primary: var(--tb-gold);
	--gf-ctrl-btn-color-primary: var(--tb-navy);
	--gf-ctrl-btn-color-hover-primary: var(--tb-cream);
	--gf-ctrl-btn-color-focus-primary: var(--tb-cream);
	--gf-ctrl-btn-border-color-primary: var(--tb-gold);
	--gf-ctrl-btn-border-color-hover-primary: var(--tb-gold);
	--gf-ctrl-btn-border-color-focus-primary: var(--tb-gold);
	--gf-ctrl-btn-radius: 2px;
	--gf-ctrl-btn-font-weight: 600;
	--gf-ctrl-btn-font-size: 13px;
	--gf-ctrl-btn-letter-spacing: .18em;
	--gf-ctrl-btn-text-transform: uppercase;
	--gf-ctrl-btn-padding-y: 15px;
	--gf-ctrl-btn-padding-x: 34px;
	--gf-ctrl-label-color-primary: var(--tb-navy);
	--gf-ctrl-label-font-size-primary: 12px;
	--gf-ctrl-label-font-weight-primary: 700;
	--gf-ctrl-label-letter-spacing-primary: .14em;
	--gf-ctrl-label-color-req: var(--tb-gold-dark);
}
.gform_wrapper.gform-theme--orbital .gfield_label { text-transform: uppercase; margin-bottom: 8px; }
.gform_wrapper.gform-theme--orbital .gform-field-label--type-sub { font-size: 12px; color: #8A94A6; }
.gform_wrapper.gform-theme--orbital .gform_required_legend { display: none; }
/* "(required)" as gold text, sentence case; the dropdown carries the gold rule as designed */
.gform_wrapper.gform-theme--orbital .gfield_required { text-transform: none; letter-spacing: 0; font-weight: 600; }
.gform_wrapper.gform-theme--orbital select.gfield_select, .gform_wrapper.gform-theme--orbital .gfield--type-select .gfield_select { border-color: var(--tb-gold); padding-block: 0; line-height: 44px; }
.gform_wrapper.gform-theme--orbital .gfield_label:has(.gfield_required) { display: flex; gap: 6px; align-items: baseline; }

/************************************************************************************************/
/**/
/* Buttons - the "road into town" hover. A navy strip sweeps in from the left, the label lifts,   */
/* and a thin gold edge follows along the bottom; un-hover plays it in reverse. Base colours/font/ */
/* padding come from Site Settings > Buttons; on-dark variants swap the strip to cream.           */
/**/
.elementor-widget-button:not(.tb-link-btn) .elementor-button,
.gform_wrapper.gform-theme--orbital .gform_button {
	position: relative; overflow: hidden; isolation: isolate;
	transition: color .35s ease, transform .35s cubic-bezier(.4, 0, .2, 1), box-shadow .35s ease;
}
.elementor-widget-button:not(.tb-link-btn) .elementor-button::before,
.gform_wrapper.gform-theme--orbital .gform_button::before {
	content: ""; position: absolute; inset: 0; z-index: -1; background: var(--tb-navy);
	transform: scaleX(0); transform-origin: left center; transition: transform .45s cubic-bezier(.65, 0, .35, 1) .08s;
}
.elementor-widget-button:not(.tb-link-btn) .elementor-button::after,
.gform_wrapper.gform-theme--orbital .gform_button::after {
	content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: var(--tb-gold);
	transform: scaleX(0); transform-origin: left center; transition: transform .45s cubic-bezier(.65, 0, .35, 1);
}
.elementor-widget-button:not(.tb-link-btn) .elementor-button:hover,
.elementor-widget-button:not(.tb-link-btn) .elementor-button:focus-visible,
.gform_wrapper.gform-theme--orbital .gform_button:hover,
.gform_wrapper.gform-theme--orbital .gform_button:focus-visible { transform: translateY(-2px); box-shadow: 0 12px 24px rgba(11, 37, 69, .22); }
.elementor-widget-button:not(.tb-link-btn) .elementor-button:hover::before,
.elementor-widget-button:not(.tb-link-btn) .elementor-button:focus-visible::before,
.gform_wrapper.gform-theme--orbital .gform_button:hover::before { transform: scaleX(1); transition-delay: 0s; }
.elementor-widget-button:not(.tb-link-btn) .elementor-button:hover::after,
.elementor-widget-button:not(.tb-link-btn) .elementor-button:focus-visible::after,
.gform_wrapper.gform-theme--orbital .gform_button:hover::after { transform: scaleX(1); transition-delay: .08s; }
/* On navy sections the strip is cream and the label turns navy */
.elementor-widget-button.tb-btn--on-dark .elementor-button::before { background: var(--tb-cream); }
.elementor-widget-button.tb-btn--on-dark .elementor-button:hover,
.elementor-widget-button.tb-btn--on-dark .elementor-button:focus-visible { color: var(--tb-navy); }
/* Size variants (Site Settings holds the default padding) */
.elementor-widget-button.tb-btn--lg .elementor-button { padding: 16px 34px; letter-spacing: .18em; }
.elementor-widget-button.tb-btn--compact .elementor-button { padding: 9px 14px; font-size: 11px; letter-spacing: .12em; }
/* Link buttons: the gold rule is static; an arrow rolls in past the right edge and the label warms up */
.tb-link-btn .elementor-button { position: relative; overflow: visible; transition: color .3s ease, border-color .3s ease; }
.tb-link-btn .elementor-button::after { content: "\2192"; position: absolute; right: -24px; bottom: 5px; opacity: 0; transform: translateX(-10px); transition: opacity .3s ease, transform .3s cubic-bezier(.4, 0, .2, 1); color: var(--tb-gold-dark); font-size: 15px; }
.tb-link-btn .elementor-button:hover::after, .tb-link-btn .elementor-button:focus-visible::after { opacity: 1; transform: translateX(0); }
/* Nav: Elementor's own underline pointer (grow) does the menu; keep the gold rule thin and close */
.tb-header .elementor-nav-menu--main .elementor-item::after { height: 2px; bottom: 0; }
@media (prefers-reduced-motion: reduce) {
	.elementor-button, .elementor-button::before, .elementor-button::after, .gform_button, .gform_button::before, .gform_button::after, .elementor-button-content-wrapper { transition: none !important; }
}

/************************************************************************************************/
/**/
/* Directory page - Tilbury restyle of the ported directory widget: square corners, hairline     */
/* rules instead of hard shadows, display type for names, gold accents. Hover = a gold rule     */
/* sweeps across the top of the card, the card lifts, the photo eases in.                        */
/**/
.tb-directory-widget .tbbia-places-directory { --tb-dir-line: var(--tb-line); }

/**/
/* Controls: search, filters, view toggle */
/**/
.tb-directory-widget .tbbia-dir-search { border: 1px solid var(--tb-line); background: #fff; box-shadow: none; }
.tb-directory-widget .tbbia-dir-search:focus-within { border-color: var(--tb-gold); box-shadow: 0 0 0 2px rgba(224, 185, 60, .35); }
.tb-directory-widget .tbbia-dir-search i.fa-magnifying-glass, .tb-directory-widget .tbbia-dir-search:focus-within i.fa-magnifying-glass { color: var(--tb-gold-dark); }
.tb-directory-widget .tbbia-places-directory .tbbia-dir-search .tbbia-dir-search-input { font-family: var(--tb-font-body) !important; color: var(--tb-navy) !important; }

/* View toggle: one cream indicator slides under whichever option is hovered (or active), and the
   label it sits under goes navy while the others stay cream. Pure CSS: 3 equal columns + :has(). */
.tb-directory-widget .tbbia-dir-view-toggle { position: relative; isolation: isolate; display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; padding: 0; background: var(--tb-navy); border: 1px solid var(--tb-navy); box-shadow: none; }
.tb-directory-widget .tbbia-dir-view-toggle::before { content: ""; position: absolute; top: 0; bottom: 0; left: 0; width: calc(100% / 3); background: var(--tb-cream); z-index: 0; transform: translateX(var(--tb-seg, 0)); transition: transform .35s cubic-bezier(.65, 0, .35, 1); }
.tb-directory-widget .tbbia-dir-view-toggle:has(.tbbia-dir-view-btn:nth-child(2).is-active) { --tb-seg: 100%; }
.tb-directory-widget .tbbia-dir-view-toggle:has(.tbbia-dir-view-btn:nth-child(3).is-active) { --tb-seg: 200%; }
.tb-directory-widget .tbbia-dir-view-toggle:has(.tbbia-dir-view-btn:nth-child(1):hover) { --tb-seg: 0; }
.tb-directory-widget .tbbia-dir-view-toggle:has(.tbbia-dir-view-btn:nth-child(2):hover) { --tb-seg: 100%; }
.tb-directory-widget .tbbia-dir-view-toggle:has(.tbbia-dir-view-btn:nth-child(3):hover) { --tb-seg: 200%; }
.tb-directory-widget .tbbia-places-directory .tbbia-dir-view-btn { position: relative; z-index: 1; justify-content: center; padding: 12px 20px; border-radius: 0; background: transparent; box-shadow: none; font-family: var(--tb-font-body); font-weight: 600; font-size: 12px; letter-spacing: .16em; color: var(--tb-cream); transition: color .25s ease .1s; }
.tb-directory-widget .tbbia-places-directory .tbbia-dir-view-btn.is-active { background: transparent; color: var(--tb-navy); box-shadow: none; }
.tb-directory-widget .tbbia-places-directory .tbbia-dir-view-btn:hover { color: var(--tb-navy); }
.tb-directory-widget .tbbia-dir-view-toggle:has(.tbbia-dir-view-btn:hover) .tbbia-dir-view-btn.is-active:not(:hover) { color: var(--tb-cream); }

/* Filters toggle + category pills: outlined, square, gold when active */
.tb-directory-widget .tbbia-places-directory .tbbia-dir-filters-toggle { border: 1px solid var(--tb-line); border-radius: 0; background: #fff; box-shadow: none; font-family: var(--tb-font-body); font-weight: 600; font-size: 12px; letter-spacing: .14em; color: var(--tb-navy); }
.tb-directory-widget .tbbia-dir-category-block { border: 1px solid var(--tb-line); border-radius: 0; box-shadow: none; padding: 22px 24px; }
.tb-directory-widget .tbbia-dir-category-block .tbbia-eyebrow { font-family: var(--tb-font-body) !important; color: var(--tb-gold-dark) !important; letter-spacing: .3em !important; font-weight: 600 !important; }
.tb-directory-widget .tbbia-places-directory .tbbia-dir-category-pill { background: transparent; border: 1px solid var(--tb-navy); border-radius: 0; box-shadow: none; padding: 10px 18px; font-family: var(--tb-font-body); font-weight: 600; font-size: 11px; letter-spacing: .16em; color: var(--tb-navy); transform: none; transition: background .25s ease, color .25s ease, border-color .25s ease; }
.tb-directory-widget .tbbia-places-directory .tbbia-dir-category-pill:hover { transform: none; box-shadow: none; background: var(--tb-navy); color: var(--tb-cream); }
.tb-directory-widget .tbbia-places-directory .tbbia-dir-category-pill.is-active { transform: none; box-shadow: none; background: var(--tb-gold); border-color: var(--tb-gold); color: var(--tb-navy); }
.tb-directory-widget .tbbia-places-directory .tbbia-dir-feature-chip, .tb-directory-widget .tbbia-places-directory .tbbia-dir-sort-chip, .tb-directory-widget .tbbia-dir-filters-drawer { border-radius: 0 !important; box-shadow: none !important; }

/* Active filters bar + count */
.tb-directory-widget .tbbia-dir-active-bar { background: transparent; border: 0; border-top: 1px solid var(--tb-line); border-bottom: 1px solid var(--tb-line); border-radius: 0; padding: 14px 0; }
.tb-directory-widget .tbbia-dir-active-label, .tb-directory-widget .tbbia-dir-count { font-family: var(--tb-font-body); font-weight: 600; letter-spacing: .16em; color: var(--tb-slate); }
.tb-directory-widget .tbbia-dir-active-empty { font-family: var(--tb-font-body); color: var(--tb-slate); }
.tb-directory-widget .tbbia-dir-count-number { background: transparent; border: 0; border-bottom: 2px solid var(--tb-gold); border-radius: 0; padding: 0 2px; font-family: var(--tb-font-display); font-weight: 400; font-size: 18px; color: var(--tb-navy); }
.tb-directory-widget .tbbia-dir-active-chip { border-radius: 0; border: 0; box-shadow: none; background: var(--tb-navy) !important; font-family: var(--tb-font-body); font-weight: 600; letter-spacing: .12em; }

/**/
/* Cards */
/**/
.tb-directory-widget .tbbia-place-card { position: relative; border: 1px solid var(--tb-line); border-radius: 0; box-shadow: none; background: #fff; transition: transform .4s cubic-bezier(.16, 1, .3, 1), border-color .4s ease; }
.tb-directory-widget .tbbia-place-card::after { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 3px; background: var(--tb-gold); transform: scaleX(0); transform-origin: left center; transition: transform .45s cubic-bezier(.65, 0, .35, 1); z-index: 3; }
.tb-directory-widget .tbbia-place-card:hover { transform: translateY(-6px); box-shadow: none; border-color: rgba(11, 37, 69, .28); }
.tb-directory-widget .tbbia-place-card:hover::after { transform: scaleX(1); }
.tb-directory-widget .tbbia-place-card-media { height: 200px; background: var(--tb-cream); border-bottom: 1px solid var(--tb-line); }
.tb-directory-widget .tbbia-place-card-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(11, 37, 69, 0) 55%, rgba(11, 37, 69, .18)); opacity: 0; transition: opacity .4s ease; pointer-events: none; }
.tb-directory-widget .tbbia-place-card:hover .tbbia-place-card-media::after { opacity: 1; }
.tb-directory-widget .tbbia-place-card-noimage { background: var(--tb-cream); color: var(--tb-navy); }
.tb-directory-widget .tbbia-place-card-status { border: 0; border-radius: 0; box-shadow: none; background: var(--tb-cream); color: var(--tb-navy); font-family: var(--tb-font-body); font-weight: 600; font-size: 10px; letter-spacing: .14em; padding: 6px 10px; }
.tb-directory-widget .tbbia-place-card-status--closed { background: var(--tb-navy); color: var(--tb-cream); }
.tb-directory-widget .tbbia-place-card-body { padding: 22px 22px 16px; gap: 10px; }
.tb-directory-widget .tbbia-place-card-category { font-family: var(--tb-font-body); font-weight: 600; font-size: 10px; letter-spacing: .3em; color: var(--tb-gold-dark); }
.tb-directory-widget .tbbia-place-card-region { background: transparent; border: 1px solid var(--tb-line); border-radius: 0; font-family: var(--tb-font-body); font-weight: 600; letter-spacing: .12em; color: var(--tb-slate); }
.tb-directory-widget .tbbia-place-card-name { font-family: var(--tb-font-display) !important; font-weight: 400 !important; font-size: 19px !important; line-height: 1.35 !important; letter-spacing: .08em !important; text-transform: uppercase; color: var(--tb-navy) !important; }
.tb-directory-widget .tbbia-place-card:hover .tbbia-place-card-name { color: var(--tb-gold-dark) !important; }
.tb-directory-widget .tbbia-place-card-tagline, .tb-directory-widget .tbbia-place-card-meta { font-family: var(--tb-font-body); color: var(--tb-slate); }
.tb-directory-widget .tbbia-place-card-meta i, .tb-directory-widget .tbbia-place-card-hours i { color: var(--tb-gold-dark); }
.tb-directory-widget .tbbia-place-card-chip { background: transparent; border: 1px solid var(--tb-line); border-radius: 0; color: var(--tb-slate); font-family: var(--tb-font-body); font-weight: 600; }
.tb-directory-widget .tbbia-place-card-footer { background: transparent; border-top: 1px solid var(--tb-line); padding: 14px 22px; }
.tb-directory-widget .tbbia-place-card-explore { font-family: var(--tb-font-body); font-weight: 600; font-size: 11px; letter-spacing: .16em; color: var(--tb-navy); padding-bottom: 2px; border-bottom: 2px solid var(--tb-gold); }
.tb-directory-widget .tbbia-place-card:hover .tbbia-place-card-explore { color: var(--tb-gold-dark); }
.tb-directory-widget .tbbia-place-card-phone { font-family: var(--tb-font-body); font-size: 11px; letter-spacing: .06em; color: var(--tb-slate); }
.tb-directory-widget .tbbia-place-card-phone:hover { color: var(--tb-gold-dark); }

/* Load more: square, like every other button on the site */
.tb-directory-widget .tbbia-places-directory .tbbia-dir-load-more-btn { border-radius: 0; }

/* Map view: square frame, hairline, and the same muted tiles as the homepage map */
.tb-directory-widget .tbbia-places-map { border: 1px solid var(--tb-line); border-radius: 0; box-shadow: none; }
.tb-directory-widget .tbbia-places-map .leaflet-tile-pane { filter: grayscale(1) contrast(.9) brightness(1.02); }
.tb-directory-widget .tbbia-places-map .leaflet-bar, .tb-directory-widget .tbbia-places-map .leaflet-bar a { border-radius: 0; }
@media (prefers-reduced-motion: reduce) { .tb-directory-widget .tbbia-dir-view-toggle::before, .tb-directory-widget .tbbia-place-card, .tb-directory-widget .tbbia-place-card::after { transition: none; } }

/************************************************************************************************/
/**/
/* Single place - social channel icons: navy circle with a cream glyph, gold on hover              */
/**/
.tbbia-social-row a.tbbia-social-icon,
.tbbia-social-row a.tbbia-social-icon:visited {
	width: 40px; height: 40px; border: 0; background: var(--tb-navy); color: var(--tb-cream) !important;
	box-shadow: none; transition: background-color .3s ease, color .3s ease, transform .3s cubic-bezier(.4, 0, .2, 1);
}
.tbbia-social-row a.tbbia-social-icon .tbbia-social-svg { width: 18px; height: 18px; fill: currentColor; }
.tbbia-social-row a.tbbia-social-icon:hover,
.tbbia-social-row a.tbbia-social-icon:focus-visible { background: var(--tb-gold); color: var(--tb-navy) !important; transform: translateY(-2px); box-shadow: none; }
.tbbia-social-row a.tbbia-social-icon:focus-visible { outline: 2px solid var(--tb-navy); outline-offset: 2px; }

/************************************************************************************************/
/**/
/* Headings with a typed line break (client-editable without HTML)                                */
/**/
.tb-feat__title .elementor-heading-title, .tb-hero__title .elementor-heading-title { white-space: pre-line; }

/************************************************************************************************/
/**/
/* Single place - About box: headings and lists typed by the client in the block editor          */
/**/
.tbbia-about-content h2, .tbbia-about-content h3, .tbbia-about-content h4 { font-size: 18px; letter-spacing: .14em; line-height: 1.35; margin: 30px 0 12px; }
.tbbia-about-content ul, .tbbia-about-content ol { margin: 0 0 16px; }
.tbbia-about-content p + p, .tbbia-about-content ul + p { margin-top: 16px; }

/************************************************************************************************/
/**/
/* Place + event pages - Get Directions buttons, styled like the site buttons                    */
/**/
a.tbbia-btn.tbbia-btn--primary, a.tbbia-event-btn.tbbia-event-btn--primary {
	background: var(--tb-gold); color: var(--tb-navy) !important; border: 0; border-radius: 0; box-shadow: none;
	font-family: "Montserrat", sans-serif; font-weight: 600; font-size: 12px; letter-spacing: .16em; text-transform: uppercase;
	transition: background-color .3s ease, color .3s ease, transform .3s cubic-bezier(.4, 0, .2, 1);
}
a.tbbia-btn.tbbia-btn--primary:hover, a.tbbia-btn.tbbia-btn--primary:focus-visible,
a.tbbia-event-btn.tbbia-event-btn--primary:hover, a.tbbia-event-btn.tbbia-event-btn--primary:focus-visible { background: var(--tb-navy); color: var(--tb-cream) !important; transform: translateY(-2px); box-shadow: none; }
