/* BLC blocks. Colours come from the theme's presets (blc-theme theme.json) with fallbacks, so
   content still reads correctly under another theme. Mobile first. */
:root {
	--blc-navy: var(--wp--preset--color--navy, #0b2545);
	--blc-blue: var(--wp--preset--color--blue, #1a64d6);
	--blc-blue-dark: var(--wp--preset--color--blue-dark, #134fa8);
	--blc-light: var(--wp--preset--color--sky, #eaf2fd);
	--blc-ink: var(--wp--preset--color--ink, #18212f);
	--blc-muted: var(--wp--preset--color--muted, #4f5b70);
	--blc-line: var(--wp--preset--color--line, #d5dfec);
	--blc-surface: var(--wp--preset--color--base, #ffffff);
	--blc-radius: 10px;
	--blc-gutter: clamp(16px, 4vw, 32px);
}

/* Section */
.blc-section { position: relative; padding-inline: var(--blc-gutter); background-size: cover; background-position: center; }
.blc-section.has-pad-none { padding-block: 0; }
.blc-section.has-pad-s { padding-block: clamp(20px, 3vw, 32px); }
.blc-section.has-pad-m { padding-block: clamp(40px, 6vw, 72px); }
.blc-section.has-pad-l { padding-block: clamp(56px, 9vw, 120px); }
.blc-section__inner { position: relative; z-index: 1; margin-inline: auto; max-width: var(--wp--style--global--content-size, 760px); display: flex; flex-direction: column; gap: 1.25rem; }
.blc-section.is-width-wide > .blc-section__inner,
.blc-section__inner:has(> .blc-grid, > .wp-block-columns, > .wp-block-latest-posts, > .blc-menu) { max-width: var(--wp--style--global--wide-size, 1200px); }
.blc-section.is-width-full > .blc-section__inner { max-width: none; }
.blc-section__inner > * { margin-block: 0; }
.blc-section.is-tone-light { background-color: var(--blc-light); }
.blc-section.is-tone-blue { background-color: var(--blc-blue); color: #fff; }
.blc-section.is-tone-navy { background-color: var(--blc-navy); color: #fff; }
.blc-section.is-tone-image { background-color: var(--blc-navy); color: #fff; }
.blc-section.has-overlay::before { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(11, 37, 69, .92), rgba(11, 37, 69, .65)); }
.blc-section:where(.is-tone-blue, .is-tone-navy, .is-tone-image) :where(h1, h2, h3, h4, h5, h6, a:not(.wp-element-button)) { color: inherit; } /* beats theme heading colours, loses to any design rule */
:where(.blc-section.is-tone-blue, .blc-section.is-tone-navy, .blc-section.is-tone-image) .wp-block-button__link { background: #fff; color: var(--blc-navy); }
.blc-section.is-tone-image:not(.has-overlay) { color: var(--blc-ink); }

/* Grid */
.blc-grid { display: grid; gap: clamp(16px, 2.5vw, 28px); grid-template-columns: repeat(var(--blc-cols-mobile, 1), minmax(0, 1fr)); }
@media (min-width: 700px) { .blc-grid { grid-template-columns: repeat(min(var(--blc-cols, 3), 2), minmax(0, 1fr)); } }
@media (min-width: 1000px) { .blc-grid { grid-template-columns: repeat(var(--blc-cols, 3), minmax(0, 1fr)); } }

/* Feature / stat */
.blc-feature { display: flex; flex-direction: column; gap: .5rem; }
.blc-feature__link { color: inherit; text-decoration: none; display: contents; }
.blc-feature__icon { display: inline-flex; width: 44px; height: 44px; align-items: center; justify-content: center; border-radius: 50%; background: var(--blc-light); color: var(--blc-blue); }
.blc-feature__title { margin: 0; font-size: 1.15rem; }
.blc-feature__text { color: var(--blc-muted); }
.blc-feature.is-stat { text-align: center; }
.blc-feature.is-stat .blc-feature__icon { margin-inline: auto; }
.blc-feature__stat { font-size: clamp(2rem, 5vw, 2.75rem); font-weight: 800; line-height: 1; color: var(--blc-blue); font-variant-numeric: tabular-nums; }
:is(.is-tone-blue, .is-tone-navy, .is-tone-image) :is(.blc-feature__text, .blc-feature__stat) { color: inherit; }

/* Service card */
.blc-card { display: flex; flex-direction: column; background: var(--blc-surface); color: var(--blc-ink); border: 1px solid var(--blc-line); border-radius: var(--blc-radius); overflow: hidden; }
.blc-card__image { width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; display: block; }
.blc-card__body { padding: 1.1rem 1.25rem 1.35rem; display: flex; flex-direction: column; gap: .5rem; flex: 1; }
.blc-card__title { margin: 0; font-size: 1.15rem; }
.blc-card__title-link { color: inherit; text-decoration: none; }
.blc-card__title-link::after { content: ""; position: absolute; inset: 0; }
.blc-card { position: relative; }
.blc-card:hover { border-color: var(--blc-blue); }
.blc-card__text { color: var(--blc-muted); font-size: .95rem; }
.blc-card__link { margin-top: auto; font-weight: 600; color: var(--blc-blue); }

/* Package */
.blc-package { position: relative; display: flex; flex-direction: column; gap: .75rem; padding: 1.5rem; border: 1px solid var(--blc-line); border-radius: var(--blc-radius); background: var(--blc-surface); color: var(--blc-ink); }
.blc-package.is-highlight { border: 2px solid var(--blc-blue); }
.blc-package__ribbon { align-self: flex-start; font-size: .75rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; background: var(--blc-blue); color: #fff; padding: .2rem .6rem; border-radius: 99px; }
.blc-package__title { margin: 0; font-size: 1.2rem; }
.blc-package__price { margin: 0; font-size: 1.6rem; font-weight: 800; color: var(--blc-navy); }
.blc-package__price del { font-size: 1rem; font-weight: 400; color: var(--blc-muted); }
.blc-package__note { margin: 0; color: var(--blc-muted); font-size: .9rem; }
.blc-package__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .4rem; }
.blc-package__list li { padding-left: 1.6rem; position: relative; }
.blc-package__list li::before, ul.is-style-checks > li::before { content: ""; position: absolute; left: 0; top: .2em; width: 1.05em; height: 1.05em; border-radius: 50%; background: var(--blc-blue) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / 62% no-repeat; }
.blc-package .blc-button { margin-top: auto; }

/* Check list (core/list "Check marks" style) */
ul.is-style-checks { list-style: none; padding-left: 0; display: grid; gap: .55rem; }
ul.is-style-checks > li { position: relative; padding-left: 1.75rem; }

/* Buttons */
.blc-button { display: inline-block; text-align: center; padding: .8rem 1.4rem; border-radius: 8px; background: var(--blc-blue); color: #fff; font-weight: 700; text-decoration: none; }
.blc-button:hover { background: var(--blc-blue-dark); color: #fff; }

/* FAQ */
.blc-faq { display: grid; gap: .6rem; }
.blc-faq__item { border: 1px solid var(--blc-line); border-radius: var(--blc-radius); background: var(--blc-surface); color: var(--blc-ink); }
.blc-faq__q { cursor: pointer; list-style: none; padding: 1rem 3rem 1rem 1.15rem; font-weight: 700; position: relative; }
.blc-faq__q::-webkit-details-marker { display: none; }
.blc-faq__q::after { content: "+"; position: absolute; right: 1.15rem; top: 50%; transform: translateY(-50%); font-size: 1.4rem; line-height: 1; color: var(--blc-blue); }
.blc-faq__item[open] > .blc-faq__q::after { content: "\2212"; }
.blc-faq__a { padding: 0 1.15rem 1rem; }
.blc-faq__a > :first-child { margin-top: 0; }
.blc-faq__a > :last-child { margin-bottom: 0; }
/* In the editor the item is always open. */
.blc-faq__item.is-open .blc-faq__q { padding-bottom: .25rem; }

/* Video */
.blc-video { margin: 0; }
.blc-video__play, .blc-video__frame { position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; border: 0; padding: 0; border-radius: var(--blc-radius); overflow: hidden; background: #000; cursor: pointer; }
.blc-video__play img { width: 100%; height: 100%; object-fit: cover; display: block; opacity: .9; }
.blc-video__icon { position: absolute; left: 50%; top: 50%; width: 72px; height: 72px; transform: translate(-50%, -50%); border-radius: 50%; background: rgba(11, 37, 69, .85); }
.blc-video__icon::after { content: ""; position: absolute; left: 29px; top: 22px; border-style: solid; border-width: 14px 0 14px 22px; border-color: transparent transparent transparent #fff; }
.blc-video__play:hover .blc-video__icon, .blc-video__play:focus-visible .blc-video__icon { background: var(--blc-blue); }
.blc-video figcaption { margin-top: .5rem; font-size: .9rem; color: var(--blc-muted); }

/* Facebook, map, menu list, contact details, related links */
.blc-facebook.is-embed iframe { max-width: 100%; }
.blc-menu-list { list-style: none; margin: 0; padding: 0; columns: 2 14rem; column-gap: 2rem; }
@media (min-width: 1000px) { .blc-menu-list { columns: var(--blc-cols, 3); } }
.blc-menu-list li { break-inside: avoid; padding-block: .3rem; }
/* All-levels menu (e.g. suburbs with their services): sub-pages open on hover, focus or tap. */
.blc-menu.is-nested .blc-menu-list > li { position: relative; }
.blc-menu.is-nested .sub-menu { display: none; list-style: none; margin: .25rem 0 .25rem .75rem; padding: 0 0 0 .75rem; border-left: 2px solid var(--blc-line); font-size: .92rem; }
.blc-menu.is-nested li:is(:hover, :focus-within) > .sub-menu { display: block; }
.blc-menu.is-nested .menu-item-has-children > a::after { content: " +"; color: var(--blc-blue); }
.blc-contact { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .75rem 2rem; }
.blc-contact li { display: flex; align-items: flex-start; gap: .5rem; }
.blc-contact .blc-icon { flex: none; margin-top: .1em; color: currentColor; }
.blc-contact a { color: inherit; font-weight: 600; }
.blc-related-links ul { columns: 2 14rem; column-gap: 2rem; }
.blc-map { border-radius: var(--blc-radius); }

/* Notices and editor placeholders */
.blc-notice, .blc-placeholder { padding: 1rem; border: 1px dashed var(--blc-line); border-radius: var(--blc-radius); background: var(--blc-light); color: var(--blc-ink); display: flex; flex-direction: column; gap: .3rem; font-size: .9rem; }
.screen-reader-text { border: 0; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; word-wrap: normal !important; }

/* ---------- Composition blocks (media hero, steps, chooser, section nav, pills) ---------- */
.blc-media-hero { padding: clamp(32px, 6vw, 80px) var(--blc-gutter); }
.blc-media-hero__inner { max-width: var(--wp--style--global--wide-size, 1200px); margin-inline: auto; display: grid; gap: clamp(24px, 4vw, 56px); align-items: center; }
@media (min-width: 900px) {
	.blc-media-hero__inner { grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); }
	.blc-media-hero.is-display-portrait .blc-media-hero__inner { grid-template-columns: minmax(0, 1.4fr) minmax(0, .6fr); }
	.blc-media-hero.is-media-left .blc-media-hero__media { order: -1; }
}
.blc-media-hero__content { display: flex; flex-direction: column; gap: 1rem; min-width: 0; }
.blc-media-hero__content > * { margin: 0; }
.blc-media-hero__media { margin: 0; min-width: 0; }
.blc-media__frame { position: relative; overflow: hidden; border-radius: var(--blc-radius); background: var(--blc-light); aspect-ratio: 16 / 10; }
.is-display-portrait .blc-media__frame { aspect-ratio: 9 / 16; max-height: 78vh; margin-inline: auto; }
.is-display-square .blc-media__frame { aspect-ratio: 1; }
.blc-media__frame > img, .blc-media__frame .blc-media__img, .blc-media__frame video, .blc-media__frame iframe, .blc-media__play, .blc-player { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border: 0; display: block; }
.blc-media__play { padding: 0; background: #000; cursor: pointer; }
.blc-media__play img { width: 100%; height: 100%; object-fit: cover; display: block; }
.blc-media__play:hover .blc-video__icon, .blc-media__play:focus-visible .blc-video__icon { background: var(--blc-blue); }
.blc-media-hero__media figcaption { margin-top: .6rem; font-size: .9rem; color: var(--blc-muted); }
.blc-media__placeholder { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: flex-end; gap: .4rem; padding: 1.2rem; background: repeating-linear-gradient(135deg, var(--blc-light) 0 14px, #fff 14px 28px); color: var(--blc-ink); border: 2px dashed var(--blc-line); border-radius: inherit; }
.blc-media__placeholder > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .35; }
.blc-media__placeholder-tag { position: relative; align-self: flex-start; font: 700 .72rem/1 system-ui, sans-serif; letter-spacing: .06em; text-transform: uppercase; background: #fef3c7; color: #92400e; padding: .35rem .55rem; border-radius: 4px; }
.blc-media__placeholder-text { position: relative; font-size: .92rem; max-width: 34ch; }
/* MP4 player */
.blc-player video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.blc-player__big { position: absolute; inset: 0; margin: auto; width: 76px; height: 76px; border: 0; padding: 0; background: none; cursor: pointer; }
.blc-player__big .blc-video__icon { position: absolute; inset: 0; width: 76px; height: 76px; transform: none; left: 0; top: 0; }
.blc-player.is-playing .blc-player__big { display: none; }
.blc-player__controls { position: absolute; left: 10px; bottom: 10px; display: flex; gap: 6px; z-index: 2; }
.blc-player__controls button { font: 600 .8rem/1 system-ui, sans-serif; padding: .5rem .7rem; border: 0; border-radius: 999px; background: rgba(11, 18, 32, .78); color: #fff; cursor: pointer; }
.blc-player__controls button:focus-visible, .blc-player__big:focus-visible { outline: 3px solid #fff; outline-offset: 2px; }
/* Steps */
.blc-steps { list-style: none; margin: 0; padding: 0; display: grid; gap: clamp(18px, 3vw, 32px); counter-reset: blc-step; }
@media (min-width: 800px) { .blc-steps { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.blc-step { counter-increment: blc-step; display: flex; flex-direction: column; gap: .45rem; padding-top: 1rem; border-top: 1px solid var(--blc-line); }
.blc-step__n::before { content: counter(blc-step); display: inline-grid; place-items: center; width: 2.1rem; height: 2.1rem; border-radius: 50%; background: var(--blc-light); color: var(--blc-blue); font-weight: 700; }
.blc-step__title { margin: .3rem 0 0; font-size: 1.15rem; }
.blc-step__text { margin: 0; color: var(--blc-muted); }
/* Service chooser */
.blc-chooser { display: flex; flex-direction: column; gap: .5rem; background: #fff; color: var(--blc-ink); border-radius: var(--blc-radius); padding: 1rem 1.1rem; box-shadow: 0 18px 40px rgba(11, 37, 69, .12); }
.blc-chooser label { font-weight: 600; }
.blc-chooser__row { display: flex; gap: .5rem; flex-wrap: wrap; }
.blc-chooser select { flex: 1 1 200px; min-width: 0; font: inherit; padding: .7rem .8rem; border: 1px solid var(--blc-line); border-radius: 8px; background: #fff; color: var(--blc-ink); }
.blc-chooser button { flex: 0 0 auto; }
/* Section nav */
.blc-section-nav { display: flex; align-items: center; gap: .5rem 1rem; flex-wrap: wrap; }
.blc-section-nav__title { font-weight: 700; font-size: .85rem; text-transform: uppercase; letter-spacing: .06em; color: var(--blc-muted); }
.blc-section-nav ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem; }
.blc-section-nav a { display: inline-block; padding: .4rem .8rem; border-radius: 999px; border: 1px solid var(--blc-line); text-decoration: none; color: var(--blc-ink); font-size: .92rem; }
.blc-section-nav a:hover { border-color: var(--blc-blue); color: var(--blc-blue); }
/* core/list "Pills" */
ul.is-style-pills { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
ul.is-style-pills > li > a { display: inline-block; padding: .55rem 1rem; border-radius: 999px; background: var(--blc-light); color: var(--blc-ink); text-decoration: none; }
ul.is-style-pills > li > a:hover { background: var(--blc-blue); color: #fff; }

/* ---------- Booking form embed and price estimate ---------- */
.blc-booking { display: flex; flex-direction: column; gap: 1rem; }
.blc-booking__journey { margin: 0; padding-left: 1.3rem; display: grid; gap: .35rem; }
.blc-booking__frame { width: 100%; border: 0; border-radius: var(--blc-radius); background: #fff; }
.blc-booking__notice { border: 2px dashed var(--blc-line); border-radius: var(--blc-radius); padding: 1.2rem 1.3rem; background: var(--blc-light); display: flex; flex-direction: column; gap: .5rem; }
.blc-booking__notice p { margin: 0; }
.blc-booking__tag { align-self: flex-start; font: 700 .72rem/1 system-ui, sans-serif; letter-spacing: .06em; text-transform: uppercase; background: #fef3c7; color: #92400e; padding: .35rem .55rem; border-radius: 4px; }
.blc-booking__url code { word-break: break-all; }
.blc-estimate { display: flex; flex-direction: column; gap: 1rem; padding: clamp(18px, 3vw, 28px); border: 1px solid var(--blc-line); border-radius: var(--blc-radius); background: #fff; color: var(--blc-ink); }
.blc-estimate__title { margin: 0; }
.blc-estimate__form { display: grid; gap: 1rem; margin: 0; }
.blc-estimate__row { display: grid; gap: .4rem; border: 0; margin: 0; padding: 0; min-width: 0; }
.blc-estimate__row > label, .blc-estimate__row > legend { font-weight: 600; padding: 0; }
.blc-estimate__control { display: flex; align-items: center; gap: .9rem; }
.blc-estimate__control input[type="range"] { flex: 1; min-width: 0; height: 44px; accent-color: var(--blc-blue); }
.blc-estimate__value { min-width: 2.4rem; text-align: center; font-weight: 700; font-variant-numeric: tabular-nums; padding: .25rem .5rem; border-radius: 8px; background: var(--blc-light); }
.blc-estimate__radios { display: flex; flex-wrap: wrap; gap: .5rem; }
.blc-estimate__radios label { display: inline-flex; align-items: center; gap: .45rem; min-height: 44px; padding: .4rem .9rem; border: 1px solid var(--blc-line); border-radius: 999px; cursor: pointer; }
.blc-estimate__radios label:has(input:checked) { border-color: var(--blc-blue); background: var(--blc-light); }
.blc-estimate__radios input { width: 1.1rem; height: 1.1rem; margin: 0; accent-color: var(--blc-blue); }
.blc-estimate__result { display: flex; flex-direction: column; gap: .2rem; padding: 1rem 1.2rem; border-radius: var(--blc-radius); background: var(--blc-navy); color: #fff; }
.blc-estimate__label { font-size: .85rem; letter-spacing: .04em; text-transform: uppercase; opacity: .85; }
.blc-estimate__total { font-size: clamp(2rem, 6vw, 2.8rem); line-height: 1.1; font-variant-numeric: tabular-nums; }
.blc-estimate__summary { font-size: .92rem; opacity: .9; }
.blc-estimate__note { margin: 0; font-size: .9rem; color: var(--blc-muted); }
.blc-estimate__next { display: flex; flex-direction: column; gap: .7rem; border-top: 1px solid var(--blc-line); padding-top: 1rem; }
.blc-estimate__next p { margin: 0; }
.blc-estimate__next .wp-block-buttons { display: flex; flex-wrap: wrap; gap: .6rem; }
/* Visually hidden text that receives keyboard focus (e.g. "Skip to content") becomes visible. !important because an
   inherited plugin stylesheet hides .screen-reader-text with !important, which would also hide it on focus. */
.screen-reader-text:focus, .skip-link.screen-reader-text:focus { clip: auto !important; clip-path: none !important; width: auto !important; height: auto !important; margin: 0 !important; overflow: visible !important; position: fixed !important; top: 8px; left: 8px; z-index: 100000; padding: .75rem 1rem !important; background: #fff; color: #0b2545; border-radius: 8px; box-shadow: 0 6px 24px rgba(11, 37, 69, .25); font-weight: 700; text-decoration: none; }

/* YouTube Shorts (portrait, 9:16): poster + play button; the player loads only on play/autoplay. */
.blc-shorts { position: relative; }
.blc-shorts__rail { list-style: none; margin: 0; padding: 0 0 6px; display: flex; gap: 16px; overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; scrollbar-width: thin; }
.blc-short { flex: 0 0 min(300px, 78vw); scroll-snap-align: start; margin: 0; }
.blc-shorts:not(.is-multi) .blc-short { flex-basis: min(320px, 100%); margin-inline: auto; }
.blc-short__frame { position: relative; aspect-ratio: 9 / 16; border-radius: 22px; overflow: hidden; background: #0b2545; box-shadow: 0 24px 60px rgba(11, 37, 69, .22); }
.blc-short__frame iframe, .blc-short__play, .blc-short__play img { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.blc-short__play { padding: 0; margin: 0; cursor: pointer; background: #0b2545; }
.blc-short__play img { object-fit: cover; }
.blc-short__play img.is-yt-thumb { object-fit: cover; transform: scale(1.02); }
.blc-short__icon { position: absolute; left: 50%; top: 50%; width: 68px; height: 68px; margin: -34px 0 0 -34px; border-radius: 50%; background: rgba(255, 255, 255, .92) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M8 5v14l11-7z' fill='%230b2545'/%3E%3C/svg%3E") 56% 50% / 30px no-repeat; box-shadow: 0 10px 30px rgba(0, 0, 0, .3); transition: transform .15s; }
.blc-short__play:hover .blc-short__icon, .blc-short__play:focus-visible .blc-short__icon { transform: scale(1.06); }
.blc-short__play:focus-visible { outline: 3px solid #fff; outline-offset: -6px; }
.blc-short__title { margin: .6rem .2rem 0; font-size: .92rem; font-weight: 700; }
.blc-shorts__nav { display: flex; gap: 8px; justify-content: flex-end; margin-bottom: 10px; }
.blc-shorts__nav button { width: 44px; height: 44px; border-radius: 50%; border: 1px solid #cfdcea; background: #fff; font-size: 1.5rem; line-height: 1; cursor: pointer; }
.blc-shorts__fallback img { width: 100%; height: auto; border-radius: 22px; }
@media (prefers-reduced-motion: reduce) { .blc-short__icon { transition: none; } }
