/* Novaderma Framework 1.11.18 — fluid headings by REAL container width.
   This layer is intentionally scoped: never alters wp-admin, email, or unrelated themes.
   Container units fall back to viewport units when the browser lacks a matching container. */

/* Every headline can wrap; no type-specific hardcoded height or ellipsis. */
body.bb-clinic-site :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title) {
  min-width: 0;
  max-width: 100%;
  white-space: normal !important;
  word-break: normal;
  overflow-wrap: normal;
  hyphens: none;
  text-wrap: pretty;
}
body.bb-clinic-site :is(.elementor-widget,.elementor-widget-container,.elementor-heading-title,
  .elementor-column,.elementor-column-wrap,.e-con,.e-child,.bbcb-elementor-render,
  .hero-copy,.inner-hero-copy,.inner-content,.card-body,.doctor-main,
  .bbcf-clinical-record,.bbcf-blog-card__inner,.bbcf-blog-prose,.bbcf-legal__prose) {
  min-width: 0;
}

/* Container boundaries are the *text columns*, not the viewport: works when a
   module occupies only part of a desktop Elementor section. */
body.bb-clinic-site :is(
  .hero-copy,.inner-hero-copy,.section-head,.card-body,.doctor-main,
  .philosophy-copy,.appointment-title,.review-card,.treatment-card,
  .team-card__body,.staff-card,.specialist-panel,.specialist-item,
  .inner-content,.content-block,.inner-cta-grid,.related-area-card,
  .bbcf-clinical-record .inner-hero-copy,.bbcf-clinical-record .content-block,
  .bbcf-clinical-record .inner-cta-grid,.bbcf-clinical-record .treatment-card,
  .bbcf-blog-hero .bbcf-shell,.bbcf-blog-single__hero .bbcf-shell,
  .bbcf-blog-card__inner,.bbcf-blog-prose,.bbcf-blog-related__head,
  .bbcf-legal__hero .bbcf-shell,.bbcf-legal__prose,
  .bbcb-page-hero-copy,.bbcb-course-body,.bbcb-form-intro,.bbcb-contact-card,
  .bbcb-ts-intro,.bbcb-ts-content,.bbcb-dynamic-post-cards,
  .bbcf-entry-hero .bbcf-shell,.bbcf-card__body,.nv-treatment-archive__card,
  .nv-treatment-archive__cta) {
  min-width: 0;
  max-width: 100%;
  container-type: inline-size;
}

/* Large display type: caps scale against the usable text width, not 100vw. */
body.bb-clinic-site .hero-title-mask h1,
body.bb-clinic-site .hero-slider .hero-title-mask h1,
body.bb-clinic-site .bbcb-page-hero-copy h1 {
  font-size: clamp(1.9rem, 9.6cqi, 6rem);
  line-height: 1.09;
  letter-spacing: -.046em;
}
body.bb-clinic-site .hero-slider .hero-slide--team .hero-title-mask h1 { font-size: clamp(1.9rem, 9.1cqi, 5.6rem); }
body.bb-clinic-site .inner-hero-copy h1,
body.bb-clinic-site .bbcf-clinical-record .inner-hero-copy h1,
body.bb-clinic-site .bbcf-entry-hero h1,
body.bb-clinic-site .bbcf-blog-hero h1,
body.bb-clinic-site .bbcf-blog-single__hero h1,
body.bb-clinic-site .bbcf-legal__hero h1 {
  font-size: clamp(1.85rem, 8.4cqi, 5.7rem);
  line-height: 1.1;
  letter-spacing: -.04em;
}
body.bb-clinic-site :is(.section-head h2,.philosophy-copy h2,.appointment-title h2,
  .inner-cta h2,.bbcf-blog-related__head h2,.bbcf-legal__prose h2,
  .bbcf-blog-prose h2,.nv-treatment-archive__cta h2) {
  font-size: clamp(1.6rem, 7.9cqi, 4.35rem);
  line-height: 1.12;
  letter-spacing: -.033em;
}
body.bb-clinic-site :is(.content-block h2,.longform-section h2,.specialist-panel h2,
  .bbcf-clinical-record .content-block h2,.bbcb-form-intro h2,
  .bbcb-ts-intro h2,.bbcf-legal__aside h2,.bbcf-blog-aside__box h2) {
  font-size: clamp(1.5rem, 7.1cqi, 4rem);
  line-height: 1.16;
  letter-spacing: -.028em;
}
body.bb-clinic-site :is(.card-body h3,.doctor-main h3,.treatment-card h3,
  .team-card__body h3,.staff-card h3,.specialist-item h3,
  .bbcf-blog-card h2,.bbcf-card__body h2,.nv-treatment-archive__card h3,
  .bbcb-ts-content h3,.bbcb-course-body h3) {
  font-size: clamp(1.23rem, 8.3cqi, 2.6rem);
  line-height: 1.2;
  letter-spacing: -.025em;
}
body.bb-clinic-site :is(.bbcf-clinical-record .rich-text h3,
  .bbcf-legal__prose h3,.bbcf-blog-prose h3,.longform-subsection h3,
  .related-area-card h2,.subsection-title) {
  font-size: clamp(1.22rem, 6.4cqi, 2.75rem);
  line-height: 1.23;
  letter-spacing: -.022em;
}

/* Eyebrows and supporting copy should never create an oversized min-content width. */
body.bb-clinic-site :is(.eyebrow,.bbcf-kicker,.bbcf-blog-kicker,.bbcf-legal__kicker,
  .card-kicker,.bbcb-ts-specialty,.role,.bbcb-course-meta,.bbcb-contact-card strong,
  .inner-deck,.hero-signals,.text-link) {
  max-width: 100%;
  overflow-wrap: normal;
  white-space: normal;
}
body.bb-clinic-site :is(.inner-deck,.bbcf-clinical-record .inner-deck) {
  font-size: clamp(1.08rem, 4.5cqi, 1.95rem);
  line-height: 1.37;
}
body.bb-clinic-site .philosophy-copy blockquote,
body.bb-clinic-site .review-card > p {font-size:clamp(1.25rem,5.6cqi,2.85rem);line-height:1.28;overflow-wrap:normal;}

/* GSAP reveal masks: provide space for descenders and multi-line headings.
   No fixed height or line clamp: the mask grows with wrapped content. */
body.bb-clinic-site .hero-title-mask {
  min-width: 0;
  max-width: 100%;
  height: auto;
  max-height: none;
  padding: .12em .10em .2em;
  margin: -.12em -.10em -.2em;
}
body.bb-clinic-site .hero-title-mask > :is(h1,h2,h3) {max-width:100%;}
body.bb-clinic-site [data-title-reveal] {max-width:100%;}

/* Clinical view uses the narrower content column, including an Elementor widget. */
body.bb-clinic-site .bbcf-clinical-record .inner-hero-copy h1 {font-size:clamp(1.85rem,8.5cqi,4rem);}
body.bb-clinic-site .bbcf-clinical-record .content-block h2 {font-size:clamp(1.5rem,7cqi,3.2rem);}
body.bb-clinic-site .bbcf-clinical-record .treatment-card h3 {font-size:clamp(1.2rem,7.6cqi,2.15rem);}
body.bb-clinic-site .bbcf-clinical-record .inner-cta h2 {font-size:clamp(1.5rem,7.9cqi,3.2rem);}
body.bb-clinic-site .bbcf-clinical-record .faq-item summary {overflow-wrap:normal;white-space:normal;}
body.bb-clinic-site .bbcf-clinical-record .faq-item .bbcf-faq-question {line-height:1.35;}

/* Standard Elementor Heading widgets can still define a custom font-size;
   our very small JS safeguard only shrinks them if they exceed the column. */
body.bb-clinic-site .elementor-widget-heading .elementor-heading-title {line-height:1.15;}

/* At narrow viewport widths, reduce non-text horizontal paddings that could
   make a correctly sized heading appear truncated in a 280px widget. */
@media(max-width:600px) {
  body.bb-clinic-site .hero-title-mask {padding-inline:.08em;margin-inline:-.08em;}
  body.bb-clinic-site :is(.treatment-card,.bbcf-clinical-record .treatment-card,.bbcb-contact-card) {min-width:0;}
}

/* Testimonials archive and thank-you page are plugin views, but use this theme. */
body.bb-clinic-site :is(.bbcb-testimonials-hero .bbcb-testimonials-container,
  .bbcb-testimonials-last-cta .bbcb-testimonials-container,
  .bbcb-thanks-inner,.bbcf-404 .bbcf-shell) {min-width:0;max-width:100%;container-type:inline-size;}
body.bb-clinic-site .bbcb-testimonials-hero h1,
body.bb-clinic-site .bbcb-thanks-inner h1 {font-size:clamp(1.85rem,7.8cqi,4.65rem);line-height:1.12;}
body.bb-clinic-site .bbcb-testimonials-last-cta h2 {font-size:clamp(1.5rem,7.1cqi,3rem);line-height:1.16;}
body.bb-clinic-site :is(.bbcb-testimonials-hero,.bbcb-testimonials-last-cta,.bbcb-thanks-page) :is(h1,h2,h3) {max-width:100%;overflow-wrap:normal;white-space:normal;}

/* 1.11.18 - Editorial rule: wrap at spaces only, never hyphenate or split words.
   Preserve the fluid container-based type sizes; JS reduces a title only when its
   longest complete word does not fit. This applies even if Elementor adds rules. */
body.bb-clinic-site { -webkit-hyphens: none; hyphens: none; }
body.bb-clinic-site :is(
  h1,h2,h3,h4,h5,h6,.elementor-heading-title,
  .hero-kicker,.eyebrow,.bbcf-kicker,.bbcf-blog-kicker,.bbcf-legal__kicker,
  .inner-deck,.card-kicker,.card-index,.role,.bbcb-course-meta,
  .bbcf-clinical-record .faq-item summary,.bbcf-faq-question,
  .review-card > p,.philosophy-copy blockquote,
  .bbcb-ts-content h3,.bbcb-contact-card strong
) {
  -webkit-hyphens: none !important;
  hyphens: none !important;
  word-break: normal !important;
  overflow-wrap: normal !important;
  word-wrap: normal !important;
  white-space: normal !important;
}
