/* Butterfly's shared design kit, adapted from the supplied 25 October archive.
   Page geometry and all legal content stay owned by their original templates. */
@font-face {
  font-family: 'Butterfly Manrope';
  src: url('/assets/kit/Manrope.woff2') format('woff2');
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: 'Butterfly Manrope';
  src: url('/assets/kit/Manrope500.woff2') format('woff2');
  font-style: normal;
  font-weight: 500;
  font-display: swap;
}
@font-face {
  font-family: 'Butterfly Manrope';
  src: url('/assets/kit/Manrope600.woff2') format('woff2');
  font-style: normal;
  font-weight: 600;
  font-display: swap;
}
@font-face {
  font-family: 'Butterfly Cormorant';
  src: url('/assets/kit/Cormorant.woff2') format('woff2');
  font-style: normal;
  font-weight: 500;
  font-display: swap;
}
@font-face {
  font-family: 'Butterfly Cormorant';
  src: url('/assets/kit/Cormorant400.woff2') format('woff2');
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}
body.bf-kit {
  --ivory: #f5f4ee;
  --white: #fff;
  --pine: #213d35;
  --moss: #516f57;
  --citron: #daebab;
  --ink: #213d35;
  --ink-soft: #465e53;
  --muted: #5c6d63;
  --line: #c9cdc1;
  --paper: #f5f4ee;
  --sage: #213d35;
  --sage-light: #e8eddf;
  --taupe: #516f57;
  --taupe-text: #49654e;
  --yellow: #daebab;
  --yellow-dark: #c7dca0;
  --teal: #213d35;
  --blue: #516f57;
  --font: 'Butterfly Manrope', 'Manrope', Arial, sans-serif;
  --font-body: 'Butterfly Manrope', 'Manrope', Arial, sans-serif;
  --font-display: 'Butterfly Cormorant', Georgia, serif;
  --serif: var(--font-display);
  --sans: var(--font-body);
  --kit-ease: cubic-bezier(.22, 1, .36, 1);
  --kit-gutter: clamp(20px, 5.2vw, 83px);
  --kit-section: clamp(64px, 7.5vw, 116px);
  margin: 0;
  background: var(--ivory);
  color: var(--pine);
  font-family: var(--font-body);
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}
body.bf-kit :where(button, input, select, textarea) { font-family: var(--font-body); }
body.bf-kit :where(h1, h2) { font-family: var(--font-display); font-weight: 500; }
body.bf-kit :where(a, button, summary, input, select, textarea):focus-visible {
  outline: 3px solid var(--moss);
  outline-offset: 4px;
}
body.bf-kit :where(.approach, .contact, .booking, .space-section, .site-footer, .kit-footer) :focus-visible {
  outline-color: var(--citron);
}
body.bf-kit :where(p, li, dd, figcaption) { overflow-wrap: anywhere; }
body.bf-kit :where(button, a, summary) { -webkit-tap-highlight-color: transparent; }
body.bf-kit :where([hidden]) { display: none !important; }
body.bf-kit ::selection { color: var(--pine); background: var(--citron); }

/* Original homepage: shared palette and typography, retained page structure. */
body.bf-home :where(.header) { background: rgb(245 244 238 / 96%); border-bottom-color: var(--line); }
body.bf-home :where(.hero, .direction-rail, .manifesto, .finder, .home-prices, .clinic, .journal, .documents-section) { background-color: var(--ivory); }
body.bf-home :where(.approach, .contact, .footer, .social-band) { background-color: var(--pine); }
body.bf-home .brand__type { font-family: var(--font-display); font-weight: 500; letter-spacing: -.035em; }
body.bf-home .brand__subtitle { color: var(--moss); }
body.bf-home .hero h1 { font-family: var(--font-display); font-weight: 500; line-height: 1.01; letter-spacing: -.04em; }
body.bf-home .section-title { font-family: var(--font-display); font-weight: 500; letter-spacing: -.04em; line-height: 1.02; }
body.bf-home :where(.feature h3, .step h3, .solution-panel h3, .journey-step h3, .doctor-note h3) {
  font-family: var(--font-display); font-weight: 500; letter-spacing: -.025em;
}
body.bf-home .button { background: var(--pine); border-color: var(--pine); }
body.bf-home .button:hover { background: #355548; border-color: #355548; }
body.bf-home .button--light { background: var(--ivory); border-color: var(--ivory); color: var(--pine); }
body.bf-home .button--light:hover { background: var(--citron); border-color: var(--citron); }
body.bf-home .button--outline { background: transparent; border-color: var(--line); color: var(--pine); }
body.bf-home .button--outline:hover { background: var(--sage-light); }
body.bf-home .reading-progress span { background: var(--moss); }
body.bf-home .direction-rail a { color: var(--moss); }
body.bf-home :where(.approach, .contact, .footer, .social-band) .brand__subtitle { color: #d4ddcc; }

/* Existing legal and operational pages keep their exact content and anchors. */
body.bf-legacy .site-header { background: rgb(245 244 238 / 97%); border-bottom-color: var(--line); color: var(--pine); }
body.bf-legacy .site-header :where(.brand__text strong, .header-phone, .site-nav a) { color: var(--pine); }
body.bf-information .information-phone-label { display: none; }
body.bf-information .site-header__inner { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 12px; padding-block: 10px; }
body.bf-information :where(.privacy-page, .site-footer) { overflow-wrap: anywhere; }
@media (max-width: 820px) {
  body.bf-information .site-header .header-phone { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 10px 16px; border: 1px solid var(--pine); border-radius: 999px; background: var(--pine); color: var(--ivory); font-size: 13px; line-height: 1.5; text-decoration: none; }
  body.bf-information .information-phone-label { display: inline; }
  body.bf-information .information-phone-number { display: none; }
}
body.bf-legacy .brand__text strong { font-family: var(--font-display); font-size: 34px; letter-spacing: -.035em; font-weight: 500; }
body.bf-legacy .brand__text small { color: var(--moss); }
body.bf-legacy :where(.section--dark, .form-section, .site-footer) { background: var(--pine); }
body.bf-legacy .button { background: var(--pine); color: var(--ivory); border-color: var(--pine); }
body.bf-legacy .button:hover { background: #355548; color: #fff; }
body.bf-legacy :where(.button--secondary, .button--dark-secondary) { background: transparent; color: inherit; border-color: #718077; }
body.bf-legacy .privacy-page { padding-top: clamp(44px, 6vw, 82px); }
body.bf-legacy .privacy-page h1 { font-size: clamp(2.8rem, 5.5vw, 5rem); line-height: 1.03; letter-spacing: -.035em; }
body.bf-legacy .privacy-page h2 { font-size: clamp(1.9rem, 3.5vw, 2.9rem); line-height: 1.12; letter-spacing: -.025em; }
body.bf-legacy .privacy-page :where(h3, h4) { font-family: var(--font-body); letter-spacing: -.015em; }
body.bf-legacy .privacy-page :where(p, li, dd, dt) { line-height: 1.75; }
body.bf-legacy :where(.legal-toc, .price-toolbar) { background: #e8eddf; border-color: var(--line); }
body.bf-legacy .legal-toc a { text-underline-offset: 4px; }
body.bf-legacy .legal-dl dd { overflow-wrap: anywhere; }
body.bf-legacy :where(.doctor-card, .price-table-wrap) { background: #fff; border-color: var(--line); }
body.bf-legacy .price-table :where(th, td) { border-color: var(--line); }
body.bf-legacy .site-footer :where(.medical-warning, .footer-disclaimer) { color: #e3e9db; }
body.bf-legacy :where(.footer-links a, .footer-btn) { min-height: 44px; }

/* Reusable shell for new Astro service and campaign pages. */
body.bf-kit .kit-header { position: sticky; top: 0; z-index: 50; background: rgb(245 244 238 / 96%); border-bottom: 1px solid var(--line); backdrop-filter: blur(16px); }
body.bf-kit .kit-header__inner { width: min(100%, 1680px); margin-inline: auto; padding: 20px var(--kit-gutter); display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 30px; min-height: 92px; }
body.bf-kit .kit-brand { display: inline-flex; align-items: center; gap: 11px; color: var(--pine); text-decoration: none; flex-shrink: 0; }
body.bf-kit .kit-brand__mark { width: 38px; height: 38px; flex-shrink: 0; object-fit: contain; }
body.bf-kit .kit-brand__name { font-family: var(--font-display); font-weight: 500; font-size: 40px; letter-spacing: -.035em; line-height: 1; }
body.bf-kit .kit-brand small { display: block; font: 500 9px/1.5 var(--font-body); letter-spacing: .13em; text-transform: uppercase; }
body.bf-kit .kit-nav { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 8px 27px; }
body.bf-kit .kit-nav a { position: relative; padding-block: 10px; color: var(--pine); font-size: 13px; line-height: 1.4; text-decoration: none; text-underline-offset: 5px; }
body.bf-kit .kit-nav a:hover, body.bf-kit .kit-nav a[aria-current='page'] { text-decoration: underline; }
body.bf-kit .kit-header__actions { display: flex; align-items: center; gap: 20px; flex-shrink: 0; }
body.bf-kit .kit-header__actions .button { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; padding: 13px 23px; border: 1px solid var(--pine); border-radius: 999px; background: var(--pine); color: var(--ivory); font: 500 13px/1.3 var(--font-body); text-decoration: none; white-space: nowrap; }
body.bf-kit .kit-header__actions .button:hover { background: #355548; }
body.bf-kit .kit-header__actions .button { white-space: normal; overflow-wrap: anywhere; }
body.bf-kit .kit-header__actions > a:not(.button) { font-size: 13px; white-space: nowrap; }
body.bf-kit .kit-menu-toggle { display: none; min-width: 44px; min-height: 44px; border: 1px solid var(--line); border-radius: 50%; color: var(--pine); background: transparent; font-size: 13px; cursor: pointer; }
body.bf-kit .kit-menu-toggle span { display: block; width: 16px; height: 1px; grid-area: 1 / 1; background: currentColor; transform: translateY(-3px); transition: transform .25s var(--kit-ease); }
body.bf-kit .kit-menu-toggle span + span { transform: translateY(3px); }
body.bf-kit .kit-menu-toggle[aria-expanded="true"] span { transform: rotate(45deg); }
body.bf-kit .kit-menu-toggle[aria-expanded="true"] span + span { transform: rotate(-45deg); }
body.bf-kit .kit-mobile-nav[hidden] { display: none !important; }
html:not(.kit-ready) body.bf-kit .kit-menu-toggle { display: none; }
html:not(.kit-ready) body.bf-kit .kit-header { position: relative; }
/* Avoid a first-paint menu flash while retaining the native no-JS navigation. */
@media (scripting: enabled) {
  html:not(.kit-ready) body.bf-kit .kit-mobile-nav { display: none; }
}
html.a11y body.bf-kit :where(.kit-menu-toggle, .menu-toggle) span { background-color: #000 !important; }
html.a11y body.bf-kit [aria-selected="true"] { text-decoration: underline; }
body.bf-kit .skip-link { position: absolute; top: 12px; left: 20px; z-index: 200; max-width: calc(100% - 40px); padding: 12px 18px; transform: translateY(calc(-100% - 24px)); background: var(--pine); color: var(--ivory); }
body.bf-kit .skip-link:focus { transform: none; }
body.bf-kit .kit-mobile-nav { padding: 0 var(--kit-gutter) 20px; display: grid; max-height: calc(100svh - max(108px, 7rem)); overflow-y: auto; overscroll-behavior: contain; }
body.bf-kit .kit-mobile-nav a { display: block; padding: 13px 0; border-top: 1px solid var(--line); color: var(--pine); text-decoration: none; font-size: 16px; }
body.bf-home .service-directory { display: flex; flex-wrap: wrap; gap: 8px 28px; margin-top: 26px; padding-top: 18px; border-top: 1px solid var(--line); }
body.bf-home .service-directory a { display: inline-flex; align-items: center; gap: 12px; min-height: 44px; color: var(--pine); font-size: 14px; text-decoration: none; }
body.bf-home .service-directory a:hover { text-decoration: underline; text-underline-offset: 5px; }
body.bf-home .service-directory svg { width: 18px; height: 18px; flex-shrink: 0; stroke: currentColor; stroke-width: 1.2; }
body.bf-kit .kit-footer { padding: 48px var(--kit-gutter) 36px; background: var(--pine); color: var(--ivory); }
body.bf-kit .kit-footer__inner { width: min(100%, 1514px); margin-inline: auto; }
body.bf-kit .kit-footer .kit-brand { color: var(--ivory); }
body.bf-kit .kit-footer__links { display: flex; flex-wrap: wrap; gap: 0 28px; margin: 28px 0; padding-block: 18px; border-block: 1px solid #819386; }
body.bf-kit .kit-footer__links a { display: inline-flex; align-items: center; min-height: 44px; color: inherit; font-size: 13px; text-underline-offset: 4px; }
body.bf-kit .kit-footer__links button { display: inline-flex; align-items: center; min-height: 44px; padding: 8px 0; border: 0; background: transparent; color: inherit; font: 400 13px/1.5 var(--font-body); text-align: left; text-decoration: underline; text-underline-offset: 4px; cursor: pointer; }
body.bf-kit .kit-footer__legal { max-width: 1040px; color: #d9e3d4; font-size: 12px; line-height: 1.8; }
body.bf-kit .kit-footer__legal p + p { margin-top: 12px; }
body.bf-kit .kit-footer__legal a { color: inherit; text-underline-offset: 4px; }

@media (max-width: 1200px) {
  body.bf-kit .kit-header__inner { gap: 20px; }
  body.bf-kit .kit-nav { gap: 7px 17px; }
  body.bf-kit .kit-header__actions > a:not(.button) { display: none; }
}
@media (max-width: 900px) {
  body.bf-kit .kit-header__inner { min-height: 80px; padding-block: 16px; gap: 16px; }
  body.bf-kit .kit-nav { display: none; }
  body.bf-kit .kit-menu-toggle { display: inline-grid; place-items: center; }
  body.bf-kit .kit-brand__name { font-size: 35px; }
}
@media (max-width: 640px) {
  body.bf-legacy .privacy-page h1 { font-size: clamp(2.5rem, 11vw, 3.5rem); }
  body.bf-legacy .brand__text strong { font-size: 30px; }
  body.bf-kit .kit-header__inner { min-height: 74px; padding-block: 12px; gap: 10px; }
  body.bf-kit .kit-brand { gap: 8px; }
  body.bf-kit .kit-brand__mark { width: 30px; height: 30px; }
  body.bf-kit .kit-brand__name { font-size: 31px; }
  body.bf-kit .kit-brand small { font-size: 8px; }
  body.bf-kit .kit-header__actions { gap: 9px; }
  body.bf-kit .kit-header__actions .button { min-height: 44px; font-size: 11px; padding: 10px 15px; gap: 0; }
  body.bf-kit .kit-header__actions .button svg { display: none; }
  body.bf-kit .kit-footer { padding-top: 36px; }
}
@media (max-width: 360px) {
  body.bf-kit .kit-header__inner { padding-inline: 14px; gap: 8px; }
  body.bf-kit .kit-brand__name { font-size: 26px; }
  body.bf-kit .kit-brand__mark { width: 26px; height: 26px; }
  body.bf-kit .kit-brand small { display: none; }
  body.bf-kit .kit-brand { min-width: 0; gap: 6px; }
  body.bf-kit .kit-header__actions .button { padding-inline: 11px; }
}
@media (prefers-contrast: more) {
  body.bf-kit { --muted: #364f40; --line: #6b7f70; }
  body.bf-kit :where(.button, input, select, textarea, .legal-toc) { border-width: 2px; }
}
@media (prefers-reduced-motion: reduce) {
  body.bf-kit *, body.bf-kit *::before, body.bf-kit *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
@media print {
  body.bf-kit { background: #fff; color: #000; }
  body.bf-kit :where(.kit-header, .kit-footer) { display: none !important; }
  body.bf-legacy .privacy-page { padding-top: 0; }
  body.bf-legacy .privacy-page :where(p, li, dd, dt) { line-height: 1.45; }
}
