/* BFD Sites engine: reset, shared parts, lightbox. Templates set the tokens and the composition. */
:root {
	--bg: #fff; --fg: #161616; --muted: #5b5b5b; --line: rgba(0,0,0,.14); --surface: #f4f4f2;
	--accent: #161616; --accent-fg: #fff; --focus: #1a5fff;
	--font-display: Georgia, serif; --font-body: system-ui, sans-serif; --radius: 0px;
	--lb-bg: rgba(10,10,10,.96); --lb-fg: #f2f2f2;
	--gap: clamp(16px, 3vw, 32px); --pad: clamp(20px, 5vw, 72px); --measure: 66ch;
}
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 72px; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; } }
body { margin: 0; background: var(--bg); color: var(--fg); font: 400 1rem/1.6 var(--font-body); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; font-variant-numeric: lining-nums; }
img { display: block; max-width: 100%; height: auto; }
h1, h2, h3, p, ul, ol, dl, dd, figure { margin: 0; }
ul[role=list], ol[role=list] { list-style: none; padding: 0; }
a { color: inherit; text-underline-offset: .22em; text-decoration-thickness: 1px; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
address { font-style: normal; }
::selection { background: var(--accent); color: var(--accent-fg); }
:focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; }
.bfd-vh { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.bfd-skip { position: absolute; left: 12px; top: -60px; z-index: 100; background: var(--fg); color: var(--bg); padding: 10px 16px; }
.bfd-skip:focus { top: 12px; }
.bfd-i { width: 1.25em; height: 1.25em; flex: none; }
.bfd-h { font-family: var(--font-display); font-weight: 400; line-height: 1.1; text-wrap: balance; }
html { scrollbar-color: color-mix(in srgb, var(--fg) 35%, transparent) transparent; }
input, textarea, select { caret-color: var(--accent); }

/* photo buttons */
.bfd-ph { display: block; width: 100%; overflow: hidden; position: relative; background: var(--surface); }
.bfd-ph img { width: 100%; height: 100%; object-fit: cover; transition: transform .9s cubic-bezier(.16,1,.3,1), filter .4s; }
.bfd-ph:hover img { transform: scale(1.025); }
.bfd-ph:focus-visible { outline-offset: -4px; outline-color: #fff; box-shadow: inset 0 0 0 4px var(--focus); }

/* buttons */
.bfd-btn { display: inline-flex; align-items: center; justify-content: center; gap: .6em; min-height: 48px; padding: .75em 1.4em; background: var(--accent); color: var(--accent-fg); font-weight: 600; text-decoration: none; border-radius: var(--radius); transition: background .2s, color .2s, transform .2s; }
.bfd-btn:hover { transform: translateY(-1px); }
.bfd-btn--more { margin-top: var(--gap); background: transparent; color: var(--fg); box-shadow: inset 0 0 0 1px var(--line); }
.bfd-btn[disabled] { opacity: .6; cursor: progress; transform: none; }

/* facts */
.bfd-facts { display: flex; flex-wrap: wrap; gap: 1.5rem 2.5rem; }
.bfd-fact { display: flex; flex-direction: column-reverse; gap: .15rem; }
.bfd-fact dt { font-size: .8125rem; color: var(--muted); }
.bfd-fact dd { font-size: 1.375rem; line-height: 1.15; font-variant-numeric: tabular-nums; }
.bfd-unit { font-size: .6em; color: var(--muted); }

/* description */
.bfd-desc__body { max-width: var(--measure); }
.bfd-desc__body p + p { margin-top: 1em; }
.js .bfd-desc__body.is-long:not(.is-open) { max-height: 17em; overflow: hidden; -webkit-mask-image: linear-gradient(#000 70%, transparent); mask-image: linear-gradient(#000 70%, transparent); }
.bfd-more { margin-top: .75rem; font-weight: 600; text-decoration: underline; text-underline-offset: .25em; min-height: 44px; }
.no-js .bfd-more { display: none; }

/* features */
.bfd-features__list { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 1rem; }
.bfd-features__list li { padding: .35em .85em; border: 1px solid var(--line); border-radius: 999px; font-size: .9375rem; }

/* gallery base */
.bfd-g { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: 6px; }
.bfd-g__item { position: relative; }
.bfd-g__item .bfd-ph { aspect-ratio: 3 / 2; }
.bfd-g__item[hidden] { display: none !important; }
.bfd-g__cap { display: block; font-size: .8125rem; color: var(--muted); padding-top: .4rem; }

/* embeds */
.bfd-media__list { display: grid; gap: var(--gap); }
.bfd-embed__frame { position: relative; aspect-ratio: 16 / 9; background: #111; overflow: hidden; }
.bfd-embed__poster { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: brightness(.72); }
.bfd-embed__play { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .75rem; color: #fff; font-weight: 600; letter-spacing: .02em; }
.bfd-embed__play .bfd-i { width: 64px; height: 64px; padding: 18px; border-radius: 50%; background: rgba(0,0,0,.45); box-shadow: inset 0 0 0 1.5px rgba(255,255,255,.85); transition: transform .3s cubic-bezier(.16,1,.3,1), background .3s; }
.bfd-embed__play:hover .bfd-i { transform: scale(1.08); background: rgba(0,0,0,.65); }
.bfd-embed__play:focus-visible { outline-offset: -6px; outline-color: #fff; }
.bfd-embed__iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.bfd-embed__cap { display: flex; justify-content: space-between; gap: 1rem; padding-top: .6rem; font-size: .875rem; color: var(--muted); }

/* plans + docs */
.bfd-plans__list { display: grid; grid-template-columns: 1fr; gap: calc(var(--gap) * 1.5); max-width: 960px; }
.bfd-plan__img img { background: #fff; width: 100%; aspect-ratio: 4 / 3; object-fit: contain; border: 1px solid var(--line); }
.bfd-plan { display: grid; grid-template-columns: 1fr auto; gap: .6rem; align-items: center; }
.bfd-plan__img { grid-column: 1 / -1; display: block; }
.bfd-dl, .bfd-doc { display: inline-flex; align-items: center; gap: .5em; min-height: 44px; text-decoration: none; font-weight: 600; }
.bfd-docs { margin-top: var(--gap); display: grid; gap: 0; border-top: 1px solid var(--line); }
.bfd-doc { width: 100%; padding: .7rem 0; border-bottom: 1px solid var(--line); }
.bfd-doc__name { flex: 1; }
.bfd-doc__meta { font-weight: 400; font-size: .8125rem; color: var(--muted); }

/* map */
.bfd-map__frame { position: relative; height: clamp(280px, 38vw, 560px); margin-top: 1rem; background: var(--map-bg, var(--surface)); border: 1px solid var(--line); overflow: hidden; }
.bfd-map__frame::before { content: ""; position: absolute; inset: 0; opacity: .5; background:
	linear-gradient(90deg, transparent 0 18%, var(--line) 18% calc(18% + 2px), transparent 0 62%, var(--line) 62% calc(62% + 3px), transparent 0),
	linear-gradient(0deg, transparent 0 34%, var(--line) 34% calc(34% + 3px), transparent 0 74%, var(--line) 74% calc(74% + 2px), transparent 0),
	linear-gradient(28deg, transparent 0 49.6%, var(--line) 49.6% 50.4%, transparent 50.4%); }
.bfd-map__frame.is-live::before { display: none; }
.bfd-map__load { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; gap: .6rem; font-weight: 600; }
.bfd-map__load span { padding: .7em 1.2em; background: var(--bg); box-shadow: 0 6px 24px rgba(0,0,0,.12); border-radius: var(--radius); }
.bfd-map__load { flex-direction: column; }
.bfd-map__load .bfd-i { width: 34px; height: 34px; color: var(--accent); filter: drop-shadow(0 4px 8px rgba(0,0,0,.18)); }
.bfd-map__links { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: .25rem 1.5rem; margin-top: .9rem; font-size: .9375rem; }
.bfd-map__links a { display: inline-block; padding: .55em 0; }
.bfd-map__addr { margin-top: .5rem; }

/* agents */
.bfd-agents__list { display: grid; gap: var(--gap); grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); }
.bfd-agent { display: flex; gap: 1.1rem; align-items: flex-start; }
.bfd-agent__photo { width: 88px; height: 88px; object-fit: cover; border-radius: 50%; flex: none; background: var(--surface); }
.bfd-agent__initials { display: grid; place-items: center; font-family: var(--font-display); font-size: 1.6rem; color: var(--muted); }
.bfd-agent__name { font-family: var(--font-display); font-size: 1.35rem; line-height: 1.2; }
.bfd-agent__logo { display: inline-flex; margin: .5rem 0 .2rem; padding: 6px 10px; background: #fff; border-radius: 4px; box-shadow: 0 0 0 1px rgba(0,0,0,.08); }
.bfd-agent__logo img { display: block; max-height: 44px; max-width: 180px; width: auto; height: auto; object-fit: contain; }
.bfd-agent__org, .bfd-agent__lic { font-size: .875rem; color: var(--muted); }
.bfd-agent__links { display: flex; flex-direction: column; margin-top: .35rem; }
.bfd-agent__links a { display: inline-flex; align-items: center; gap: .5em; min-height: 40px; text-decoration: none; overflow-wrap: anywhere; }
.bfd-agent__links a:hover span { text-decoration: underline; }

/* form */
.bfd-lead { display: grid; gap: 1.1rem; max-width: 640px; min-width: 0; }
.bfd-lead > *, .bfd-form, .bfd-map, .bfd-media, .bfd-gallery { min-width: 0; }
.bfd-lead fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
.bfd-lead legend { font-size: .875rem; color: var(--muted); margin-bottom: .45rem; padding: 0; }
.bfd-opt { font-weight: 400; color: var(--muted); }
.bfd-seg__row { display: flex; flex-wrap: wrap; gap: .4rem; }
.bfd-seg label, .bfd-days label { position: relative; cursor: pointer; }
.bfd-seg input, .bfd-days input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.bfd-seg label > span { display: inline-flex; align-items: center; min-height: 44px; padding: .5em 1em; border: 1px solid var(--line); border-radius: var(--radius); font-size: .9375rem; transition: background .15s, color .15s, border-color .15s; }
.bfd-seg input:checked + span, .bfd-days input:checked + span { background: var(--accent); color: var(--accent-fg); border-color: var(--accent); }
.bfd-seg input:focus-visible + span, .bfd-days input:focus-visible + span { outline: 2px solid var(--focus); outline-offset: 2px; }
.bfd-days__row { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(64px, 1fr); gap: .4rem; overflow-x: auto; scrollbar-width: none; padding-bottom: 2px; }
.bfd-days label > span { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 58px; border: 1px solid var(--line); border-radius: var(--radius); font-size: .8125rem; line-height: 1.2; transition: background .15s, color .15s; }
.bfd-days b { font-weight: 600; } .bfd-days i { font-style: normal; opacity: .8; }
.no-js .bfd-days { display: none; }
.bfd-fields { display: grid; grid-template-columns: 1fr 1fr; gap: .9rem 1rem; }
.bfd-field { display: flex; flex-direction: column; gap: .3rem; grid-column: span 2; }
@media (min-width: 560px) { .bfd-field { grid-column: span 1; } .bfd-field--wide { grid-column: span 2; } }
.bfd-field label { font-size: .875rem; color: var(--muted); }
.bfd-field input, .bfd-field textarea { width: 100%; min-height: 48px; padding: .7em .85em; font: inherit; color: var(--fg); background: transparent; border: 1px solid var(--line); border-radius: var(--radius); }
.bfd-field input:focus, .bfd-field textarea:focus { outline: 2px solid var(--focus); outline-offset: 0; border-color: transparent; }
.bfd-field [aria-invalid=true] { border-color: #b3261e; box-shadow: inset 0 0 0 1px #b3261e; }
.bfd-field textarea { resize: vertical; }
.bfd-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.bfd-form__status:empty { display: none; }
.bfd-form__status { font-weight: 600; }
.bfd-form__status.is-error { color: #b3261e; }
.bfd-form__fine, .bfd-form__intro { font-size: .875rem; color: var(--muted); }
.bfd-form__intro { margin-bottom: 1.2rem; max-width: 52ch; font-size: 1rem; }
.bfd-btn--send { justify-self: start; min-width: 12rem; }

/* phone action bar */
.bfd-bar { position: fixed; z-index: 40; left: 0; right: 0; bottom: 0; display: flex; padding: 6px 6px calc(6px + env(safe-area-inset-bottom)); gap: 6px; background: var(--bar-bg, var(--bg)); color: var(--bar-fg, var(--fg)); box-shadow: 0 -1px 0 var(--line), 0 -8px 24px rgba(0,0,0,.08); }
.bfd-bar > * { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; min-height: 52px; font-size: .75rem; font-weight: 600; text-decoration: none; border-radius: var(--radius); }
.bfd-bar__main { flex: 2.2; flex-direction: row; gap: .5em; background: var(--accent); color: var(--accent-fg); font-size: .9375rem; }
@media (min-width: 900px) { .bfd-bar { display: none; } }
@media (max-width: 899px) { body { padding-bottom: calc(72px + env(safe-area-inset-bottom)); } }

/* footer */
.bfd-foot { padding: 2.5rem var(--pad) 3rem; font-size: .8125rem; color: var(--muted); }
.bfd-foot__disc { max-width: 90ch; margin-bottom: 1rem; }
.bfd-foot__fine { display: flex; flex-wrap: wrap; gap: .4rem 1.6rem; }
.bfd-credit { display: flex; flex-wrap: wrap; gap: .2rem 1.4rem; margin-top: 1.4rem; padding-top: 1.1rem; border-top: 1px solid var(--line); font-size: .8125rem; letter-spacing: .02em; }
.bfd-credit a { display: inline-block; padding: .55em 0; text-decoration: none; color: var(--fg); }
.bfd-credit a:hover { text-decoration: underline; }

/* lightbox */
.bfd-lb { position: fixed; inset: 0; width: 100%; height: 100%; max-width: none; max-height: none; margin: 0; padding: 0; border: 0; background: var(--lb-bg); color: var(--lb-fg); }
.bfd-lb::backdrop { background: var(--lb-bg); }
.bfd-lb:not([open]) { display: none; }
html.bfd-lb-open { overflow: hidden; }
.bfd-lb__stage { position: absolute; inset: 0; display: grid; place-items: center; padding: 56px 12px 64px; }
.bfd-lb__fig { display: flex; flex-direction: column; align-items: center; gap: .75rem; max-width: 100%; max-height: 100%; }
.bfd-lb__fig img { max-width: min(100%, 1600px); max-height: calc(100vh - 140px); max-height: calc(100dvh - 140px); width: auto; height: auto; object-fit: contain; opacity: 0; transform: scale(.985); transition: opacity .35s ease, transform .5s cubic-bezier(.16,1,.3,1); }
.bfd-lb__fig img.is-in { opacity: 1; transform: none; }
.bfd-lb__cap { font-size: .875rem; opacity: .85; text-align: center; font-variant-numeric: tabular-nums; }
.bfd-lb__btn { position: absolute; display: grid; place-items: center; width: 52px; height: 52px; color: var(--lb-fg); border-radius: 50%; transition: background .2s; }
.bfd-lb__btn:hover { background: rgba(255,255,255,.12); }
.bfd-lb__btn:focus-visible { outline-color: var(--lb-fg); }
.bfd-lb__btn .bfd-i { width: 28px; height: 28px; }
.bfd-lb__prev { left: max(8px, 1.5vw); top: 50%; translate: 0 -50%; }
.bfd-lb__next { right: max(8px, 1.5vw); top: 50%; translate: 0 -50%; }
.bfd-lb__close { right: max(8px, 1.5vw); top: 8px; }
@media (max-width: 640px) { .bfd-lb__prev, .bfd-lb__next { top: auto; bottom: 8px; translate: none; } }

/* reveal: only when JS confirmed IntersectionObserver; content is visible otherwise */
.bfd-reveal [data-reveal] { opacity: 0; transform: translateY(18px); transition: opacity .9s cubic-bezier(.16,1,.3,1), transform 1.1s cubic-bezier(.16,1,.3,1); }
.bfd-reveal [data-reveal].is-in { opacity: 1; transform: none; }

/* Fieldsets default to min-content width; keep the day-chip row scrolling inside the form on phones. */
.bfd-lead fieldset, .bfd-days, .bfd-seg { min-inline-size: 0; max-width: 100%; }
.bfd-days__row { max-width: 100%; }

/* 1.4.0: phones never scroll sideways (rotated prints and bleeding ornaments are clipped at the page edge). */
html, body { overflow-x: clip; }
