/* ===================================================================
   PTB MED — Elementor bridge layer
   -------------------------------------------------------------------
   ptb-med-proto.scoped.css carries the design system at specificity
   (0,3,x). This file only does what that file cannot:

     - stop Elementor containers imposing their own width/padding/gap
     - give containers a sane layout default WITHOUT outranking the
       design system (see the note on :where() in section 3)
     - fill the gaps Elementor's global widget defaults would fill
       with the wrong value
     - dress the native Button widget as the prototype's .button, so
       button text and links stay editable in the Elementor panel

   No new design decisions live here.
   =================================================================== */

/* ---------- 1. Theme chrome ---------- */

body.ptb-med main.site-main,
body.ptb-med .page-content {
  margin: 0;
  padding: 0;
  max-width: none;
}

body.ptb-med .page-header,
body.ptb-med .site-header:not(.header),
body.ptb-med .site-footer:not(.footer) {
  display: none;
}

/* ---------- 2. Container neutralisation ---------- */

body.ptb-med .e-con,
body.ptb-med .e-con-inner {
  --container-default-padding-top: 0px;
  --container-default-padding-right: 0px;
  --container-default-padding-bottom: 0px;
  --container-default-padding-left: 0px;
  --container-widget-width: 100%;
  /* Default gap 0 (the design layer spaces with margins), but only as the
     variable defaults: a container with an explicit Flex Gap in the panel
     sets --row-gap/--column-gap at element specificity and wins. Native
     sections built 31.08.2026+ rely on this. */
  --gap: 0px;
  --row-gap: 0px;
  --column-gap: 0px;
}

body.ptb-med .e-con > .e-con-inner {
  max-width: none;
  padding: 0;
}

/* ---------- 3. Container layout defaults ----------

   Every rule below is wrapped in :where() so it keeps the specificity of
   `body.ptb-med .e-con` alone (0,2,1): high enough to beat Elementor's own
   container defaults, low enough that EVERY design-system rule still wins,
   including the ones inside media queries.

   This matters more than it looks. Stating `display: grid` unconditionally
   for .hero-grid, .model-grid and friends froze the desktop layout at tablet
   and phone widths, because the prototype collapses those same grids to a
   single column inside @media blocks that could no longer take effect.

   Containers whose class already declares `display` in the design system need
   no entry here at all: those rules sit at (0,3,0) and win on their own. */

body.ptb-med .e-con:where(.ptb-band) {
  display: block;
  width: 100%;
  max-width: none;
}

body.ptb-med .e-con:where(.shell) {
  display: block;
  max-width: none;
}

/* Wrappers the prototype leaves as plain block divs. Elementor would make
   them flex columns, which re-wraps their paragraphs. */
body.ptb-med .e-con:where(.hero-copy, .model-content, .trust-content,
  .trust-rating, .visit-content, .lab-main, .faq-intro, .footer-brand,
  .final-cta-copy, .section-side, .admission-body) {
  display: block;
}

/* Elementor defaults containers to a column; these are rows in the prototype. */
body.ptb-med .e-con:where(.actions, .visit-actions, .doctor-filter,
  .utility-inner, .utility-location, .utility-meta, .header-actions) {
  flex-direction: row;
}

/* Rows nested inside another row shrink to their content. */
body.ptb-med .e-con:where(.utility-location, .utility-meta, .header-actions) {
  width: auto;
}

/* ---------- 4. Filling Elementor's global widget defaults ---------- */

/* Elementor paints every heading with the kit's primary colour and forces
   line-height 1. The design system inherits both from context. */
body.ptb-med .elementor-widget-heading .elementor-heading-title {
  color: inherit;
  line-height: inherit;
}

body.ptb-med .elementor-widget-heading {
  width: 100%;
}

body.ptb-med .elementor-widget-text-editor {
  width: 100%;
}

/* Strip the editor's paragraph margins; the design class on the wrapper
   (.lead, .visit-address, …) stays in charge of type and spacing. */
body.ptb-med .elementor-widget-text-editor > p {
  margin: 0;
  color: inherit;
  font: inherit;
  letter-spacing: inherit;
}

body.ptb-med .elementor-widget-text-editor > p + p {
  margin-top: 0.9em;
}

body.ptb-med .elementor-widget-image,
body.ptb-med .elementor-widget-image figure {
  width: 100%;
  margin: 0;
}

body.ptb-med .elementor-widget-html {
  width: 100%;
}

/* A run of repeated siblings (.facts-row article, …) is emitted as one HTML
   block so :nth-child() ordering survives. display:contents removes the
   wrapper's own box so the items remain direct children of the grid. */
body.ptb-med .elementor-widget:where(.ptb-group),
body.ptb-med :where(.ptb-group) > .elementor-shortcode {
  display: contents;
}

/* ---------- 5. Native Button widget dressed as .button ----------

   The prototype's .button / .secondary-action / .text-link styles target the
   <a> itself. On a Button widget that anchor is nested inside the wrapper the
   CSS class lands on, so the component styles are restated here against
   .elementor-button. The trailing Material Symbols glyph is generated with
   ::after, which keeps the label and URL editable in the Elementor panel. */

body.ptb-med .ptb-button .elementor-button,
body.ptb-med .ptb-secondary .elementor-button,
body.ptb-med .ptb-textlink .elementor-button {
  font-family: "Inter", Arial, sans-serif;
  line-height: inherit;
  text-decoration: none;
  box-shadow: none;
}

body.ptb-med .ptb-button .elementor-button-content-wrapper,
body.ptb-med .ptb-secondary .elementor-button-content-wrapper,
body.ptb-med .ptb-textlink .elementor-button-content-wrapper {
  display: contents;
}

body.ptb-med .ptb-button .elementor-button {
  display: inline-flex;
  min-height: 50px;
  align-items: center;
  justify-content: center;
  gap: 10px;
  border: 1px solid var(--blue-deep);
  border-radius: 10px;
  color: var(--white);
  background: var(--blue-deep);
  padding: 0 var(--sp-6);
  font-size: 15px;
  font-weight: 600;
  transition: background 160ms ease, border-color 160ms ease, transform 160ms ease;
}

body.ptb-med .ptb-button .elementor-button:hover {
  border-color: #106184;
  background: #106184;
  transform: translateY(-1px);
}

body.ptb-med .ptb-button-arrow .elementor-button::after,
body.ptb-med .ptb-textlink .elementor-button::after {
  font-family: "Material Symbols Rounded";
  font-weight: 400;
  font-variation-settings: "FILL" 0, "wght" 400, "GRAD" 0, "opsz" 24;
  line-height: 1;
  content: "arrow_forward";
}

body.ptb-med .ptb-button-arrow .elementor-button::after {
  font-size: 18px;
}

body.ptb-med .ptb-button-small .elementor-button {
  min-height: 46px;
  padding-inline: 18px;
}

body.ptb-med .ptb-button-white .elementor-button {
  border-color: var(--white);
  color: var(--ink);
  background: var(--white);
}

body.ptb-med .ptb-button-white .elementor-button:hover {
  border-color: var(--blue);
  color: var(--white);
  background: var(--blue-deep);
}

body.ptb-med .ptb-secondary .elementor-button {
  display: inline-flex;
  min-height: 50px;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--ink);
  border-radius: 10px;
  color: var(--ink);
  background: transparent;
  padding: 0 var(--sp-6);
  font-size: 15px;
  font-weight: 500;
  transition: 160ms ease;
}

body.ptb-med .ptb-secondary .elementor-button:hover {
  color: var(--white);
  background: var(--ink);
}

body.ptb-med .ptb-textlink .elementor-button {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  border: 0;
  border-bottom: 1px solid var(--ink);
  border-radius: 0;
  color: var(--ink);
  background: transparent;
  padding: 8px 0;
  min-height: 0;
  font-size: var(--small);
  font-weight: 600;
  transition: 160ms ease;
}

body.ptb-med .ptb-textlink .elementor-button:hover {
  border-color: var(--blue-ink);
  color: var(--blue-ink);
  background: transparent;
}

body.ptb-med .ptb-textlink .elementor-button::after {
  font-size: 17px;
  color: var(--blue-ink);
}

/* A text link is inline-flex in the prototype; the widget wrapper around it is
   a block, so it is made a flex row to avoid an extra inline line box. */
body.ptb-med .elementor-widget-button:where(.ptb-textlink) {
  display: flex;
  justify-content: flex-start;
}

/* ---------- 6. Baseline reconciliation with hello-elementor's reset ----------

   The prototype was authored against browser defaults plus its own reset.
   hello-elementor adds a further reset; these two rules undo the parts the
   prototype does not expect, and sit low enough that any design rule wins. */

body.ptb-med figcaption {
  line-height: inherit;
}

body.ptb-med :is(h1, h2, h3, h4, h5, h6) {
  line-height: inherit;
}

/* ---------- 7. v3 page-build additions ----------

   Two things the v3 templates need that sections 1-6 do not cover:
   a generic block wrapper, and stand-ins for design rules written as
   `parent > p` — a text-editor widget sits where the prototype has the
   paragraph, so the rule is restated against the widget and the <p>
   inherits it through the `font: inherit` reset in section 4. */

body.ptb-med .e-con:where(.ptb-block) {
  display: block;
}

body.ptb-med .section-head > .elementor-widget-text-editor,
body.ptb-med .section-side > .elementor-widget-text-editor {
  max-width: 640px;
  margin: 0;
  color: var(--grey);
  font-size: var(--body);
  font-weight: 300;
  line-height: 1.7;
}

body.ptb-med .diagnostics-section .section-head > .elementor-widget-text-editor {
  color: rgba(255, 255, 255, 0.85);
}

body.ptb-med .trust-content > .elementor-widget-text-editor {
  max-width: 680px;
  margin: var(--sp-6) 0 0;
  color: var(--grey);
  font-size: var(--body);
  font-weight: 300;
  line-height: 1.7;
}

/* Button widget variants the prototype expresses with context selectors. */

body.ptb-med .ptb-button-ne .elementor-button::after {
  font-family: "Material Symbols Rounded";
  font-weight: 400;
  font-variation-settings: "FILL" 0, "wght" 400, "GRAD" 0, "opsz" 24;
  line-height: 1;
  font-size: 18px;
  content: "north_east";
}

body.ptb-med .final-cta .ptb-button-white .elementor-button {
  color: var(--blue-ink);
}

body.ptb-med .final-cta .ptb-button-white .elementor-button:hover {
  border-color: var(--blue-wash);
  color: var(--blue-ink);
  background: var(--blue-wash);
}

/* ---------- 8. Loop Grid ----------

   A Loop Grid widget wears the prototype's grid class (.specialty-index,
   .article-grid). Elementor puts two wrappers between that widget and the
   cards; both are removed from the box tree so the cards themselves become
   the grid items and the prototype's grid-template applies unchanged. */

body.ptb-med .ptb-loop > .elementor-loop-container,
body.ptb-med .ptb-loop .e-loop-item {
  display: contents;
}

/* Heading widgets used as styled labels: the design class sits on the widget
   wrapper, so the rendered tag takes its type from it instead of from the
   kit. Opt-in, because most headings are styled through their own tag. */
body.ptb-med .elementor-widget-heading:where(.ptb-inherit) .elementor-heading-title {
  font: inherit;
  color: inherit;
  letter-spacing: inherit;
}

/* .article-card > span and .article-card i, restated for the widget wrappers
   that stand in their place. */
body.ptb-med .ptb-article-kicker {
  color: var(--grey);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

body.ptb-med .ptb-article-arrow {
  align-self: flex-end;
  margin-top: auto;
  color: var(--blue-ink);
  font-size: 20px;
  transition: transform 160ms ease;
}

body.ptb-med .article-card:hover .ptb-article-arrow {
  transform: translateX(4px);
}

/* Whole-card link. The prototype draws a specialty cell and an article card as
   one <a>; built from a loop template the card is a container, so the link is
   an overlay that covers it and carries the accessible name. Both cards are
   position: relative in the design system. */

body.ptb-med .ptb-card-link {
  position: absolute;
  inset: 0;
  z-index: 1;
}

body.ptb-med .ptb-card-link .elementor-button {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 0;
  border: 0;
  border-radius: inherit;
  background: none;
  padding: 0;
  font-size: 0;
  line-height: 0;
  color: transparent;
}

body.ptb-med .ptb-card-link .elementor-button::after {
  content: none;
}

/* Post Terms renders its terms as links; inside a card they are decoration. */
body.ptb-med .ptb-article-kicker a {
  color: inherit;
}

/* Eyebrow text coming from a field is stored in sentence case. */
body.ptb-med .ptb-upper {
  text-transform: uppercase;
}

/* A doctor with no portrait yet gets a single-column hero instead of an
   empty first grid column. */
body.ptb-med .doctor-hero-grid:not(:has(.doctor-portrait)) {
  display: block;
}

/* The search bar's submit is a real <button>; the prototype styled an <a>. */
body.ptb-med button.button {
  cursor: pointer;
  font-family: inherit;
}

/* ---------- 9. Header built from native widgets ----------

   The header used to be two HTML blocks. It is now containers and widgets so
   the menu, the logo, the phone and the CTA stay editable in the panel and in
   Appearance, Menus. Nothing here is a new design decision: every value is
   the one the prototype already states for .brand, nav and .phone-action.

   Icons: the design draws them as Material Symbols ligatures, which no
   Elementor icon control can emit. Generating them with ::before keeps the
   widgets native and spares the site a second icon font. */

body.ptb-med .brand > .elementor-widget-image,
body.ptb-med .brand > .elementor-widget-image figure {
  width: auto;
  flex: 0 0 auto;
}

body.ptb-med.ptb-med .brand-text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

body.ptb-med.ptb-med .brand-name .elementor-heading-title {
  font-family: "Lora", Georgia, serif;
  font-size: 20px;
  font-weight: 700;
  line-height: 1.1;
}

body.ptb-med.ptb-med .brand-tagline {
  color: var(--grey);
  font-size: 11px;
}

/* The pin sits inside the paragraph, not on the container: Elementor already
   uses ::before and ::after on every .e-con for its background overlays. */

body.ptb-med.ptb-med .utility-location p::before {
  font-family: "Material Symbols Rounded";
  font-variation-settings: "FILL" 0, "wght" 400, "GRAD" 0, "opsz" 24;
  color: var(--blue-ink);
  font-size: 16px;
  line-height: 1;
  vertical-align: -3px;
  margin-inline-end: 8px;
  content: "location_on";
}

body.ptb-med .utility-location .elementor-widget-text-editor,
body.ptb-med .utility-meta .elementor-widget-text-editor {
  width: auto;
}

/* Nav menu widget, desktop */

/* Elementor makes every widget wrapper a flex column and every container a
   flex column. The prototype's .brand is a row and its <nav> is a plain block
   holding the list, the toggle and the dropdown. */

body.ptb-med.ptb-med .brand {
  flex-direction: row;
  flex-wrap: nowrap;
}

body.ptb-med.ptb-med .site-nav {
  display: block;
  position: static;
}

/* The widget was given the laptop dropdown, for which Elementor generates no
   stylesheet, so the two states are stated here against the design's own
   collapse point rather than against an Elementor breakpoint. */

@media (min-width: 1181px) {
  body.ptb-med.ptb-med .site-nav .elementor-nav-menu--main {
    display: flex;
  }

  body.ptb-med.ptb-med .site-nav .elementor-menu-toggle,
  body.ptb-med.ptb-med .site-nav .elementor-nav-menu--dropdown {
    display: none;
  }
}

body.ptb-med.ptb-med .site-nav .elementor-nav-menu {
  display: flex;
  justify-content: center;
  gap: var(--sp-6);
}

body.ptb-med.ptb-med .site-nav .elementor-nav-menu--main .elementor-item {
  border-bottom: 2px solid transparent;
  color: var(--ink-soft);
  background: transparent;
  padding: 10px 2px;
  font-size: 15px;
  font-weight: 500;
  transition: border-color 160ms ease, color 160ms ease;
}

body.ptb-med.ptb-med .site-nav .elementor-nav-menu--main .elementor-item:hover,
body.ptb-med.ptb-med .site-nav .elementor-nav-menu--main .elementor-item:focus,
body.ptb-med.ptb-med .site-nav .elementor-nav-menu--main .elementor-item.elementor-item-active {
  border-bottom-color: var(--blue);
  color: var(--ink);
  background: transparent;
}

/* The hamburger, drawn in the same icon family as the rest of the site. */

body.ptb-med.ptb-med .site-nav .elementor-menu-toggle {
  width: 46px;
  height: 46px;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  color: var(--ink);
  background: var(--white);
  padding: 0;
  transition: 160ms ease;
}

body.ptb-med.ptb-med .site-nav .elementor-menu-toggle:hover {
  border-color: var(--blue-deep);
  color: var(--blue-ink);
}

body.ptb-med.ptb-med .site-nav .elementor-menu-toggle i,
body.ptb-med.ptb-med .site-nav .elementor-menu-toggle svg {
  display: none;
}

body.ptb-med.ptb-med .site-nav .elementor-menu-toggle::before {
  font-family: "Material Symbols Rounded";
  font-variation-settings: "FILL" 0, "wght" 400, "GRAD" 0, "opsz" 24;
  font-size: 24px;
  line-height: 1;
  content: "menu";
}

body.ptb-med.ptb-med .site-nav .elementor-menu-toggle.elementor-active::before {
  content: "close";
}

/* Phone action: an icon-only link needs a real accessible name, so the label
   stays in the widget and is hidden visually rather than deleted. */

body.ptb-med .ptb-phone .elementor-button {
  display: grid;
  width: 46px;
  height: 46px;
  place-items: center;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
  color: var(--ink);
  background: var(--white);
  padding: 0;
  box-shadow: none;
  transition: 160ms ease;
}

body.ptb-med .ptb-phone .elementor-button:hover {
  border-color: var(--blue-deep);
  color: var(--blue-ink);
}

body.ptb-med .ptb-phone .elementor-button-content-wrapper {
  display: contents;
}

body.ptb-med .ptb-phone .elementor-button-text {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

body.ptb-med .ptb-phone .elementor-button::before {
  font-family: "Material Symbols Rounded";
  font-variation-settings: "FILL" 0, "wght" 400, "GRAD" 0, "opsz" 24;
  font-size: 22px;
  line-height: 1;
  content: "call";
}

/* Under the design's own collapse point the row becomes brand, actions,
   hamburger, and the dropdown hangs off the header rather than off the
   46px-wide widget that triggers it. */

@media (max-width: 1180px) {
  body.ptb-med.ptb-med .header-inner {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    gap: 10px;
  }

  body.ptb-med.ptb-med .header-inner > .brand {
    margin-right: auto;
  }

  /* Elementor makes every container a positioned box. The dropdown has to
     hang off the full-width band, not off the 1240px shell. */
  body.ptb-med.ptb-med .header-inner {
    position: static;
  }

  body.ptb-med.ptb-med .header-inner > .site-nav {
    order: 3;
    width: auto;
    flex: 0 0 auto;
  }

  /* The row is tight here, so the brand gives way and the call to action
     keeps its single line. */
  body.ptb-med.ptb-med .header-inner > .brand {
    min-width: 0;
  }

  body.ptb-med.ptb-med .header-actions .ptb-button .elementor-button {
    white-space: nowrap;
  }

  body.ptb-med.ptb-med .site-nav .elementor-nav-menu--main {
    display: none;
  }

  body.ptb-med.ptb-med .site-nav .elementor-menu-toggle {
    display: flex;
  }

  body.ptb-med.ptb-med .site-nav .elementor-nav-menu--dropdown {
    display: block;
    position: absolute;
    z-index: 9997;
    margin-top: 0;
    top: 100%;
    right: 0;
    left: 0;
    width: auto;
    border-bottom: 1px solid var(--line);
    background: var(--white);
    box-shadow: 0 30px 50px rgba(10, 11, 27, 0.1);
    padding: 8px 0 12px;
  }

  body.ptb-med.ptb-med .site-nav .elementor-nav-menu--dropdown .elementor-nav-menu {
    flex-direction: column;
    gap: 0;
  }

  body.ptb-med.ptb-med .site-nav .elementor-nav-menu--dropdown .elementor-item {
    border-bottom: 0;
    color: var(--ink-soft);
    background: transparent;
    padding: 14px calc((100% - min(calc(100% - 40px), 760px)) / 2);
    font-size: 16px;
  }
}

@media (max-width: 860px) {
  body.ptb-med.ptb-med .utility-hours {
    display: none;
  }
}

@media (max-width: 620px) {
  body.ptb-med.ptb-med .brand-name .elementor-heading-title {
    font-size: 18px;
  }

  body.ptb-med.ptb-med .brand-tagline {
    max-width: 170px;
    font-size: 10px;
  }

  body.ptb-med.ptb-med .header-actions .ptb-button {
    display: none;
  }

  body.ptb-med .ptb-phone .elementor-button {
    width: 44px;
    height: 44px;
  }
}

/* The template is wrapped in <header class="elementor-location-header">, whose
   box is exactly as tall as the header itself. A sticky element can only
   travel inside its containing block, so `position: sticky` on .header never
   moved a pixel. Removing the wrapper's box hands .header the viewport again.
   The inner container is itself a <header>, so the banner landmark stays. */

body.ptb-med .elementor-location-header {
  display: contents;
}

/* ---------- image-box lockups (merged heading+text pairs, 30.08.2026) ----------
   An imageless Image Box replaces each adjacent heading+text pair. The design
   layer keeps styling titles by tag/context; these rules neutralize Elementor's
   stock image-box chrome and re-attach the old paragraph classes to the
   description via ib-* markers on the widget. */
body.ptb-med .elementor-widget-image-box .elementor-image-box-wrapper {
  display: block;
  text-align: inherit;
}
body.ptb-med .elementor-widget-image-box .elementor-image-box-title {
  margin-bottom: 0;
}
body.ptb-med .elementor-widget-image-box .elementor-image-box-description {
  margin: 0;
  color: inherit;
  font: inherit;
  letter-spacing: inherit;
}
/* .lead */
body.ptb-med .ib-lead .elementor-image-box-description {
  max-width: 620px;
  margin: var(--sp-6) 0 0;
  color: var(--grey);
  font-size: var(--body-lg);
  font-weight: 300;
  line-height: 1.7;
}
body.ptb-med .page-hero .ib-lead .elementor-image-box-description {
  max-width: 640px;
}
/* .model-intro */
body.ptb-med .ib-model-intro .elementor-image-box-description {
  margin: var(--sp-6) 0 0;
  color: var(--grey);
  font-size: var(--body);
  font-weight: 300;
  line-height: 1.7;
}
/* .visit-address */
body.ptb-med .ib-visit-address .elementor-image-box-description {
  max-width: 560px;
  margin: var(--sp-4) 0 0;
  color: var(--grey);
  font-size: var(--body);
  font-weight: 300;
  line-height: 1.65;
}
/* .trust-content > p */
body.ptb-med .trust-content .elementor-image-box-description {
  max-width: 680px;
  margin: var(--sp-6) 0 0;
  color: var(--grey);
  font-size: var(--body);
  font-weight: 300;
  line-height: 1.7;
}
@media (max-width: 620px) {
  body.ptb-med .ib-lead .elementor-image-box-description {
    margin-top: var(--sp-4);
    font-size: var(--body);
  }
}

/* ---------- brand lockup as image-box (30.08.2026) ----------
   One image-box replaces logo image + brand-text container (heading+tagline).
   Supersedes the .brand-text / .brand-name / .brand-tagline rules above.
   The design layer's .brand img rule (48px, 42px at 620) still hits the img. */
body.ptb-med.ptb-med .brand > .elementor-widget-image-box {
  width: auto;
  flex: 0 0 auto;
}
body.ptb-med .brand .elementor-widget-image-box .elementor-image-box-wrapper {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  text-align: left;
}
body.ptb-med.ptb-med .brand .elementor-widget-image-box .elementor-image-box-wrapper .elementor-image-box-img {
  flex: 0 0 auto;
  width: 48px;
  margin: 0;
}
body.ptb-med.ptb-med .brand .elementor-image-box-content {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 2px;
}
body.ptb-med.ptb-med .brand .elementor-image-box-title {
  font-family: "Lora", Georgia, serif;
  font-size: 20px;
  font-weight: 700;
  line-height: 1.1;
  margin: 0;
}
body.ptb-med.ptb-med .brand .elementor-image-box-description {
  margin: 0;
  color: var(--grey);
  font-size: 11px;
  font-weight: 400;
  line-height: 1.6;
}
@media (max-width: 620px) {
  body.ptb-med.ptb-med .brand .elementor-widget-image-box .elementor-image-box-wrapper .elementor-image-box-img {
    width: 42px;
  }
  body.ptb-med.ptb-med .brand .elementor-image-box-title {
    font-size: 18px;
  }
  body.ptb-med.ptb-med .brand .elementor-image-box-description {
    max-width: 170px;
    font-size: 10px;
  }
}

/* ---------- section-head merged pairs (30.08.2026, round 2) ----------
   Image-box replaces heading + section-head paragraph on every section head;
   the description takes over the old > .elementor-widget-text-editor role.
   ib-admission-lede replicates the admission lede (ink, 400, centered by its
   section). Descriptions may carry shortcodes — rendered by the
   ptb_imagebox_shortcodes filter in functions.php. */
body.ptb-med .section-head .elementor-image-box-description {
  max-width: 640px;
  margin: var(--sp-4) 0 0;
  color: var(--grey);
  font-size: var(--body);
  font-weight: 300;
  line-height: 1.7;
}
body.ptb-med .diagnostics-section .section-head .elementor-image-box-description {
  color: rgba(255, 255, 255, 0.85);
}
body.ptb-med .ib-admission-lede .elementor-image-box-description {
  max-width: none;
  margin: var(--sp-4) 0 0;
  color: var(--ink);
  font-size: var(--body);
  font-weight: 400;
  line-height: 1.6;
}

/* ---------- native listing cards (JetEngine, 31.08.2026) ----------
   Section 2 neutralises container gaps site-wide because the design layer
   spaces things with margins. Listing items are built natively with
   Elementor container gaps, so the stock behaviour is restored inside them.
   Remove section 2 altogether once every section is native. */
body.ptb-med .jet-listing-grid__item .e-con {
  gap: var(--row-gap) var(--column-gap);
}

/* ---------- repeater check bullets ---------- JetEngine's Dynamic Repeater can style the item but not a glyph inside it, so the green check disc of .admission-card li / .lab-areas li is a tiny utility class used in the repeater item format. */
body.ptb-med .jet-listing-dynamic-repeater__item { position: relative; }
body.ptb-med .ptb-check { position: absolute; top: 3px; left: 0; display: grid; width: 16px; height: 16px; place-items: center; border-radius: 50%; color: var(--ink); background: var(--green); font-size: 9px; font-weight: 700; line-height: 1; }

/* ---------- icon glyph width before the icon font loads (02.11.2026) ----------
   Until Material Symbols arrives, a ligature renders as its name
   ("arrow_forward" ≈ 90px). The header CTA then pushed the menu onto two
   lines for ~60ms and the page jumped 24px (CLS 0.4 at 1440). Capping each
   glyph at one em keeps every box its final size from the first paint. */
body.ptb-med .ptb-button-arrow .elementor-button::after,
body.ptb-med .ptb-textlink .elementor-button::after,
body.ptb-med .ptb-button-ne .elementor-button::after,
body.ptb-med .material-symbols-rounded .elementor-heading-title,
body.ptb-med span.material-symbols-rounded {
  display: inline-block;
  width: 1em;
  overflow: hidden;
  white-space: nowrap;
}


/* =====================================================================
   Homepage review fixes, 02.11.2026 (Strahil's 17-point list)
   Scoped to the front page (body.home) unless noted.
   ===================================================================== */

/* ---- header overlaps the hero, transparent until the page scrolls ----
   The header stays sticky; the hero is pulled up underneath it by the
   header's own height and pads its content back down by the same amount. */
body.ptb-med.ptb-med.home {
  --ptb-hdr: 85px;
}

@media (max-width: 620px) {
  body.ptb-med.ptb-med.home {
    --ptb-hdr: 73px;
  }
}

html:has(body.ptb-med.home) {
  scroll-padding-top: 88px;
}

body.ptb-med.ptb-med.home .lv-header:not(.is-scrolled):not(.nav-open) {
  border-bottom-color: transparent;
  background-color: transparent;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  box-shadow: none;
}

body.ptb-med.ptb-med.home .lv-header.nav-open {
  background-color: var(--white);
}

body.ptb-med.ptb-med.home .lv-hero {
  margin-top: calc(var(--ptb-hdr) * -1);
  padding-top: var(--ptb-hdr);
}

/* ---- hero dot pattern: a little more present ---- */
body.ptb-med.ptb-med.home .lv-hero::after {
  background-image: radial-gradient(circle at 1.25px 1.25px, rgba(21, 124, 173, 0.36) 1.25px, transparent 1.75px);
  -webkit-mask-image: radial-gradient(72% 88% at 24% 22%, #000 0%, transparent 76%);
  mask-image: radial-gradient(72% 88% at 24% 22%, #000 0%, transparent 76%);
  opacity: 0.9;
}

/* ---- hero copy: title + lead + buttons read as one block; the extra air
   sits above and below that block (pill bottom margin and rating-strip top
   margin, both set in Elementor), not between its parts ---- */

/* ---- floating hero cards are links ---- */
body.ptb-med.ptb-med a.lv-float {
  color: inherit;
  text-decoration: none;
  cursor: pointer;
  transition: box-shadow 420ms ease, background-color 420ms ease;
}

body.ptb-med.ptb-med a.lv-float:hover,
body.ptb-med.ptb-med a.lv-float:focus-visible {
  background-color: #ffffff;
  box-shadow: 0 22px 52px rgba(10, 11, 27, 0.18);
}

/* the icon glyph sits on the text's centre line, not 2px below it */
body.ptb-med.ptb-med .lv-float > .elementor-widget-heading.material-symbols-rounded,
body.ptb-med.ptb-med .lv-float > .elementor-widget-heading.material-symbols-rounded .elementor-heading-title {
  display: block;
  line-height: 1;
}

/* ---- sections: less vertical padding on the homepage ---- */
body.ptb-med.ptb-med.home .section {
  padding-top: 80px;
  padding-bottom: 80px;
}

body.ptb-med.ptb-med.home .final-cta {
  padding-top: 72px;
  padding-bottom: 72px;
}

@media (max-width: 1180px) {
  body.ptb-med.ptb-med.home .section {
    padding-top: 64px;
    padding-bottom: 64px;
  }
}

@media (max-width: 860px) {
  body.ptb-med.ptb-med.home .section {
    padding-top: 56px;
    padding-bottom: 56px;
  }

  body.ptb-med.ptb-med.home .final-cta {
    padding-top: 56px;
    padding-bottom: 56px;
  }
}

/* facts strip + quick access still read as one group */
body.ptb-med.ptb-med.home .facts + .section.quick-access {
  padding-top: 16px;
}

@media (max-width: 860px) {
  body.ptb-med.ptb-med.home .facts + .section.quick-access {
    padding-top: 0;
  }
}

/* ---- whole-card links (ptb-med.js delegates the click) ---- */
body.ptb-med .is-clickable {
  cursor: pointer;
}

body.ptb-med.ptb-med a.elementor-element.e-con {
  color: inherit;
  text-decoration: none;
}

/* ---- single "see all" buttons under listings sit on the centre line ----
   .ptb-textlink makes the widget a flex row, so Elementor's align control
   (text-align) needs the flex equivalent. */
body.ptb-med.ptb-med .elementor-widget-button.section-foot-link.elementor-align-center {
  justify-content: center;
}

/* Tablet: the actions group kept shrinking under its two buttons, so the
   CTA slid over the menu toggle. The brand gives way instead. (all pages) */
body.ptb-med.ptb-med .header-inner > .header-actions {
  flex-shrink: 0;
}

/* =====================================================================
   Homepage review round 2, 02.11.2026
   ===================================================================== */

/* ---- header runs the full width of the window (all pages) ---- */
body.ptb-med.ptb-med .header-inner.shell {
  width: 100%;
  max-width: none;
  padding-inline: clamp(20px, 3.4vw, 56px);
}

/* ---- hero canvas: one field, white behind the copy, blue behind the
   photo, dots spread evenly and fading out at the edges ---- */
body.ptb-med.ptb-med.home .lv-hero {
  background:
    radial-gradient(55% 65% at 20% 42%, rgba(255, 255, 255, 0.92) 0%, rgba(255, 255, 255, 0) 72%),
    radial-gradient(60% 75% at 78% 44%, rgba(42, 156, 220, 0.15) 0%, rgba(42, 156, 220, 0) 72%),
    linear-gradient(180deg, #e9f4fb 0%, #f0f7fc 55%, #f2f6f8 100%);
}

body.ptb-med.ptb-med.home .lv-hero::after {
  background-image: radial-gradient(circle at 1.25px 1.25px, rgba(21, 124, 173, 0.3) 1.25px, transparent 1.75px);
  -webkit-mask-image: radial-gradient(90% 92% at 50% 40%, #000 30%, transparent 88%);
  mask-image: radial-gradient(90% 92% at 50% 40%, #000 30%, transparent 88%);
  opacity: 0.8;
}

body.ptb-med.ptb-med.home .lv-hero-glow {
  opacity: 0.55;
}

/* ---- hero: closer to the header ---- */
body.ptb-med.ptb-med.home .lv-hero .hero-grid {
  padding-top: 56px;
}

@media (max-width: 860px) {
  body.ptb-med.ptb-med.home .lv-hero .hero-grid {
    padding-top: 36px;
  }
}

/* ---- hero title: a little larger and heavier ---- */
body.ptb-med.ptb-med.home .lv-hero h1.elementor-image-box-title {
  font-size: clamp(44px, 4.3vw, 64px);
  font-weight: 560;
  line-height: 1.1;
}

@media (max-width: 620px) {
  body.ptb-med.ptb-med.home .lv-hero h1.elementor-image-box-title {
    font-size: clamp(34px, 9.4vw, 44px);
  }
}

/* ---- hero photo + caption fill the height of the copy column ---- */
@media (min-width: 861px) {
  body.ptb-med.ptb-med.home .lv-hero .hero-grid {
    align-items: stretch;
  }

  body.ptb-med.ptb-med.home .lv-hero .hero-figure {
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
  }

  body.ptb-med.ptb-med.home .lv-hero .hero-media {
    flex: 1 1 auto;
    min-height: 360px;
  }

  body.ptb-med.ptb-med.home .lv-hero .hero-media > .lv-photo {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
  }

  body.ptb-med.ptb-med.home .lv-hero .hero-media > .lv-photo img {
    width: 100%;
    height: 100%;
    aspect-ratio: auto;
    object-fit: cover;
  }
}

/* ---- final CTA: one-colour edge, roomier card, copy kept to the left ---- */
body.ptb-med.ptb-med .final-cta-inner::before {
  display: none;
}

body.ptb-med.ptb-med .final-cta-inner {
  border: 1px solid rgba(255, 255, 255, 0.22);
}

@media (min-width: 861px) {
  body.ptb-med.ptb-med .final-cta-inner {
    grid-template-columns: minmax(0, 560px) auto;
    justify-content: space-between;
    padding: 88px 80px;
  }
}

/* =====================================================================
   Doctor profile card (single doctor template 165), 02.11.2026
   Layout of the approved card prototype, on PTB tokens: Lora + Inter,
   blue / green / yellow washes, no negative letter-spacing.
   ===================================================================== */

body.ptb-med.ptb-med .doctor-module {
  display: grid;
  grid-template-columns: minmax(280px, 0.75fr) minmax(0, 1.55fr);
  gap: 0;
  min-height: 510px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 26px;
  background: var(--white);
  box-shadow: 0 24px 70px rgba(10, 11, 27, 0.07);
  padding: 0;
}

/* portrait column */
body.ptb-med.ptb-med .doctor-module-portrait {
  position: relative;
  display: block;
  min-height: 100%;
  overflow: hidden;
  background: var(--blue-wash);
  padding: 0;
}

body.ptb-med.ptb-med .doctor-module-portrait > .doctor-module-figure {
  position: absolute;
  inset: 0;
  width: 100%;
  max-width: none;
}

body.ptb-med.ptb-med .doctor-module-figure .elementor-shortcode,
body.ptb-med.ptb-med .doctor-card-portrait {
  position: relative;
  width: 100%;
  height: 100%;
  margin: 0;
}

body.ptb-med.ptb-med .doctor-card-portrait img {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  border: 0;
  border-radius: 0;
  object-fit: cover;
  object-position: center 23%;
  transition: transform 600ms var(--lv-ease, ease);
}

body.ptb-med.ptb-med .doctor-module:hover .doctor-card-portrait img {
  transform: scale(1.018);
}

body.ptb-med.ptb-med .doctor-card-portrait:not(.is-monogram)::after {
  position: absolute;
  inset: auto 0 0;
  height: 42%;
  background: linear-gradient(to top, rgba(10, 11, 27, 0.34), transparent);
  content: "";
  pointer-events: none;
}

body.ptb-med.ptb-med .doctor-card-portrait.is-monogram {
  display: grid;
  place-items: center;
  background: radial-gradient(70% 70% at 50% 40%, #ffffff 0%, var(--blue-wash) 75%);
}

body.ptb-med.ptb-med .doctor-card-initials {
  color: var(--blue-ink);
  font-family: "Lora", Georgia, serif;
  font-size: clamp(64px, 7vw, 104px);
  font-weight: 500;
  line-height: 1;
}

body.ptb-med.ptb-med .doctor-card-pill {
  position: absolute;
  z-index: 1;
  left: 22px;
  bottom: 22px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  max-width: calc(100% - 44px);
  border: 1px solid rgba(255, 255, 255, 0.5);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.9);
  padding: 9px 14px 9px 12px;
  color: var(--ink);
  font-size: 12.5px;
  font-weight: 600;
  line-height: 1.3;
}

body.ptb-med.ptb-med .doctor-card-pill .material-symbols-rounded {
  color: var(--green-ink);
  font-size: 18px;
}

/* content column */
body.ptb-med.ptb-med .doctor-module-content {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0;
  padding: 52px clamp(32px, 5vw, 64px);
}

body.ptb-med.ptb-med .doctor-module-heading {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
}

body.ptb-med.ptb-med .doctor-module-titles {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  gap: 8px;
  width: auto;
  min-width: 0;
}

body.ptb-med.ptb-med .doctor-module-specialty .elementor-heading-title {
  margin: 0;
  font-family: "Inter", Arial, sans-serif;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.13em;
  line-height: 1.5;
  text-transform: uppercase;
}

body.ptb-med.ptb-med .doctor-module-name .elementor-heading-title {
  margin: 0;
  font-family: "Lora", Georgia, serif;
  font-size: clamp(34px, 3.6vw, 50px);
  font-weight: 500;
  line-height: 1.08;
}

body.ptb-med.ptb-med .doctor-module-verified {
  flex: 0 0 34px;
}

body.ptb-med.ptb-med .doctor-module-verified .elementor-heading-title {
  display: grid;
  width: 34px;
  height: 34px;
  place-items: center;
  border-radius: 50%;
  background: var(--blue-wash);
  font-family: "Material Symbols Rounded";
  font-size: 22px;
  font-weight: 400;
  line-height: 1;
}

body.ptb-med.ptb-med .doctor-card-intro {
  max-width: 680px;
  margin: 20px 0 28px;
  color: var(--grey);
  font-size: 15px;
  font-weight: 300;
  line-height: 1.75;
}

/* facts */
body.ptb-med.ptb-med .doctor-facts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

body.ptb-med.ptb-med .doctor-facts-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
body.ptb-med.ptb-med .doctor-facts-1 { grid-template-columns: minmax(0, 1fr); max-width: 260px; }

body.ptb-med.ptb-med .doctor-fact {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 14px;
  min-height: 116px;
  border-radius: 16px;
  padding: 16px;
}

body.ptb-med.ptb-med .doctor-fact > div {
  display: flex;
  flex-direction: column;
}

body.ptb-med.ptb-med .doctor-fact-icon {
  display: grid;
  width: 28px;
  height: 28px;
  place-items: center;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.78);
}

body.ptb-med.ptb-med .doctor-fact-icon .material-symbols-rounded {
  font-size: 18px;
}

body.ptb-med.ptb-med .doctor-fact strong {
  font-family: "Lora", Georgia, serif;
  font-size: 26px;
  font-weight: 600;
  line-height: 1.1;
}

body.ptb-med.ptb-med .doctor-fact strong + span {
  margin-top: 4px;
  font-size: 12px;
  line-height: 1.4;
  opacity: 0.85;
}

body.ptb-med.ptb-med .doctor-fact-yellow { background: var(--yellow-wash); color: var(--yellow-ink); }
body.ptb-med.ptb-med .doctor-fact-green { background: var(--green-wash); color: var(--green-ink); }
body.ptb-med.ptb-med .doctor-fact-blue { background: var(--blue-wash); color: var(--blue-ink); }

/* practical chips */
body.ptb-med.ptb-med .doctor-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 14px;
}

body.ptb-med.ptb-med .doctor-chip {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 34px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #fbfcfc;
  padding: 6px 12px 6px 10px;
  color: var(--grey);
  font-size: 13px;
  font-weight: 500;
}

body.ptb-med.ptb-med .doctor-chip .material-symbols-rounded { font-size: 17px; color: var(--grey); }
body.ptb-med.ptb-med .doctor-chip-blue .material-symbols-rounded { color: var(--blue-ink); }
body.ptb-med.ptb-med .doctor-chip-green .material-symbols-rounded { color: var(--green-ink); }
body.ptb-med.ptb-med .doctor-chip-yellow .material-symbols-rounded { color: var(--yellow-ink); }

/* actions */
body.ptb-med.ptb-med .doctor-module-actions {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin-top: 28px;
}

/* tablet */
@media (max-width: 940px) {
  body.ptb-med.ptb-med .doctor-module {
    grid-template-columns: minmax(0, 0.65fr) minmax(0, 1fr);
  }

  body.ptb-med.ptb-med .doctor-module-content {
    padding: 38px 30px;
  }

  body.ptb-med.ptb-med .doctor-fact {
    min-height: 100px;
  }
}

/* phone */
@media (max-width: 680px) {
  body.ptb-med.ptb-med .doctor-module {
    grid-template-columns: minmax(0, 1fr);
    min-height: 0;
  }

  body.ptb-med.ptb-med .doctor-module-portrait {
    min-height: 330px;
  }

  body.ptb-med.ptb-med .doctor-module-content {
    padding: 28px 20px 24px;
  }

  body.ptb-med.ptb-med .doctor-module-name .elementor-heading-title {
    font-size: 32px;
  }

  body.ptb-med.ptb-med .doctor-facts {
    gap: 7px;
  }

  body.ptb-med.ptb-med .doctor-fact {
    padding: 12px 10px;
  }

  body.ptb-med.ptb-med .doctor-fact strong {
    font-size: 22px;
  }

  body.ptb-med.ptb-med .doctor-module-actions {
    align-items: stretch;
  }

  body.ptb-med.ptb-med .doctor-module-actions > .elementor-widget-button {
    flex: 1 1 140px;
  }

  body.ptb-med.ptb-med .doctor-module-actions .elementor-button {
    width: 100%;
  }
}

@media (max-width: 680px) {
  body.ptb-med.ptb-med .doctor-module-actions .elementor-button {
    justify-content: center;
    padding-inline: 14px;
    white-space: nowrap;
  }
}

/* hero address under the photo links to the visit section */
body.ptb-med.ptb-med .lv-hero .hero-figure .elementor-icon-list-item > a .elementor-icon-list-text {
  transition: color 320ms ease;
}

body.ptb-med.ptb-med .lv-hero .hero-figure .elementor-icon-list-item > a:hover .elementor-icon-list-text,
body.ptb-med.ptb-med .lv-hero .hero-figure .elementor-icon-list-item > a:focus-visible .elementor-icon-list-text {
  color: var(--blue-ink);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* ---- doctor specialty filter: chips on desktop, one dropdown on tablet and
   phone (03.11.2026). Both widgets drive the same query (#doctors). ---- */
body.ptb-med.ptb-med .doctor-filter-select {
  display: none;
}

@media (max-width: 860px) {
  body.ptb-med.ptb-med .doctor-filter-chips {
    display: none;
  }

  body.ptb-med.ptb-med .doctor-filter-select {
    display: block;
    width: 100%;
    max-width: 100%;
  }

  body.ptb-med.ptb-med .doctor-filter-select .jet-select,
  body.ptb-med.ptb-med .doctor-filter-select .jet-smart-filters-select {
    width: 100%;
  }

  body.ptb-med.ptb-med .doctor-filter-select select {
    width: 100%;
    max-width: none;
    height: 52px;
    border: 1px solid var(--line);
    border-radius: 14px;
    background-color: var(--white);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%230e6c9c' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
    background-position: right 16px center;
    background-repeat: no-repeat;
    background-size: 20px;
    padding: 0 48px 0 16px;
    color: var(--ink);
    font-family: "Inter", Arial, sans-serif;
    font-size: 16px;
    font-weight: 500;
    line-height: 1.2;
    -webkit-appearance: none;
    appearance: none;
    box-shadow: 0 6px 18px rgba(10, 11, 27, 0.04);
    cursor: pointer;
  }

  body.ptb-med.ptb-med .doctor-filter-select select:focus-visible {
    border-color: var(--blue-deep);
    outline: 3px solid rgba(42, 156, 220, 0.25);
    outline-offset: 1px;
  }
}

@media (max-width: 860px) {
  body.ptb-med.ptb-med .elementor-widget.doctor-filter-select .jet-smart-filters-select .jet-select {
    width: 100%;
    max-width: none;
  }
}


/* =====================================================================
   Button system v2 — 01 "Спокоен отблясък" (approved 03.11.2026; replaces the
   M02 arrow-box trial of the same day)
   Primary   .ptb-button (+ .ptb-button-arrow / .ptb-button-ne for a trailing
             arrow, .ptb-button-small, .ptb-button-white on blue backgrounds)
   Secondary .ptb-secondary (+ .ptb-secondary-white)
   Tertiary  .ptb-textlink (+ .ptb-textlink-white, .ptb-textlink-noarrow)
   Rules: no hover darkening, no blur, 420ms soft easing; arrows sized in
   em from the button's own font; the arrow moves 4px right when the
   button OR the clickable card around it is hovered.
   ===================================================================== */

body.ptb-med.ptb-med {
  --ptb-btn-ease: var(--lv-ease, cubic-bezier(0.16, 1, 0.3, 1));
  --ptb-btn-time: var(--lv-hover, 420ms);
}

/* ---- shared ---- */
body.ptb-med.ptb-med :is(.ptb-button, .ptb-secondary, .ptb-textlink) .elementor-button {
  font-family: "Inter", Arial, sans-serif;
  font-weight: 600;
  line-height: 1.2;
  text-decoration: none;
  white-space: nowrap;
  transition:
    background-color var(--ptb-btn-time) ease,
    border-color var(--ptb-btn-time) ease,
    color var(--ptb-btn-time) ease,
    box-shadow var(--ptb-btn-time) ease;
}

body.ptb-med.ptb-med :is(.ptb-button, .ptb-secondary, .ptb-textlink) .elementor-button:focus-visible {
  outline: 3px solid var(--blue-deep, #157CAD);
  outline-offset: 3px;
}

/* The arrow glyph (Material Symbols ligature drawn with ::after) is sized
   from the button's font: 1.2em = 18px on a 15px button, 17px on 14px. */
body.ptb-med.ptb-med :is(.ptb-button-arrow, .ptb-button-ne, .ptb-textlink) .elementor-button::after {
  display: inline-grid;
  place-items: center;
  flex: none;
  font-family: "Material Symbols Rounded";
  font-weight: 400;
  font-variation-settings: "FILL" 0, "wght" 400, "GRAD" 0, "opsz" 24;
  font-size: 1.2em;
  line-height: 1;
  white-space: nowrap;
  overflow: hidden;
  content: "arrow_forward";
  transition:
    transform var(--ptb-btn-time) var(--ptb-btn-ease),
    background-color var(--ptb-btn-time) ease,
    color var(--ptb-btn-time) ease;
}

body.ptb-med.ptb-med .ptb-button-ne .elementor-button::after {
  content: "north_east";
}

/* ---- primary ---- */
body.ptb-med.ptb-med .ptb-button .elementor-button {
  --ptb-btn-h: 50px;
  position: relative;
  isolation: isolate;
  overflow: hidden;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: var(--ptb-btn-h);
  border: 1px solid var(--blue-deep, #157CAD);
  border-radius: 10px;
  color: #FFFFFF;
  background: var(--blue-deep, #157CAD);
  padding: 0 24px;
  font-size: 15px;
  transform: none;
}

body.ptb-med.ptb-med .ptb-button-small .elementor-button {
  --ptb-btn-h: 46px;
  padding-inline: 18px;
}

body.ptb-med.ptb-med .ptb-button .elementor-button:is(:hover, :focus-visible) {
  border-color: var(--blue-deep, #157CAD);
  color: #FFFFFF;
  background: var(--blue-deep, #157CAD);
  box-shadow: 0 12px 26px rgba(21, 124, 173, 0.24);
  transform: none;
}

/* white primary on blue bands (final CTA, diagnostics, featured card) */
body.ptb-med.ptb-med .ptb-button.ptb-button-white .elementor-button,
body.ptb-med.ptb-med .ptb-button.ptb-button-white .elementor-button:is(:hover, :focus-visible) {
  border-color: #FFFFFF;
  color: var(--blue-ink, #0E6C9C);
  background: #FFFFFF;
}

body.ptb-med.ptb-med .ptb-button.ptb-button-white .elementor-button:is(:hover, :focus-visible) {
  box-shadow: 0 12px 26px rgba(4, 38, 58, 0.22);
}

/* sheen: every primary button sweeps on hover; the hero CTA also plays it
   once on load (.lv-sheen-once). That entrance animation used fill-mode
   "both", which held the sheen at its end and blocked the hover sweep on
   the hero button — it now fills backwards only. */
body.ptb-med.ptb-med .ptb-button .elementor-button::before {
  position: absolute;
  z-index: -1;
  inset: 0;
  background: linear-gradient(110deg, transparent 30%, rgba(255, 255, 255, 0.32) 50%, transparent 70%);
  transform: translateX(-120%);
  content: "";
  pointer-events: none;
}

body.ptb-med.ptb-med .ptb-button.ptb-button-white .elementor-button::before {
  background: linear-gradient(110deg, transparent 30%, rgba(42, 156, 220, 0.22) 50%, transparent 70%);
}

@media (hover: hover) {
  html.lv-motion body.ptb-med.ptb-med .ptb-button .elementor-button:hover::before {
    transform: translateX(120%);
    transition: transform 1100ms var(--ptb-btn-ease);
  }
}

html.lv-motion body.ptb-med.ptb-med .lv-sheen-once.elementor-widget-button .elementor-button::before,
html.lv-motion body.ptb-med.ptb-med.home .lv-hero .lv-sheen-once.elementor-widget-button .elementor-button::before {
  animation-fill-mode: backwards;
}

/* ---- secondary ---- */
body.ptb-med.ptb-med .ptb-secondary .elementor-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 50px;
  border: 1px solid var(--ink, #0A0B1B);
  border-radius: 10px;
  color: var(--ink, #0A0B1B);
  background: transparent;
  padding: 0 24px;
  font-size: 15px;
}

body.ptb-med.ptb-med .ptb-secondary .elementor-button:is(:hover, :focus-visible) {
  border-color: var(--blue-deep, #157CAD);
  color: var(--blue-ink, #0E6C9C);
  background: var(--blue-wash, #EEF7FC);
}

body.ptb-med.ptb-med .ptb-secondary.ptb-secondary-white .elementor-button {
  border-color: rgba(255, 255, 255, 0.75);
  color: #FFFFFF;
}

body.ptb-med.ptb-med .ptb-secondary.ptb-secondary-white .elementor-button:is(:hover, :focus-visible) {
  border-color: #FFFFFF;
  color: #FFFFFF;
  background: rgba(255, 255, 255, 0.12);
}

/* ---- tertiary ---- */
body.ptb-med.ptb-med .ptb-textlink .elementor-button {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  min-height: 0;
  border: 0;
  border-bottom: 1px solid var(--ink, #0A0B1B);
  border-radius: 0;
  color: var(--ink, #0A0B1B);
  background: transparent;
  padding: 8px 0;
  font-size: 14px;
}

body.ptb-med.ptb-med .ptb-textlink .elementor-button::after {
  color: var(--blue-ink, #0E6C9C);
}

body.ptb-med.ptb-med .ptb-textlink .elementor-button:is(:hover, :focus-visible) {
  border-color: var(--blue-ink, #0E6C9C);
  color: var(--blue-ink, #0E6C9C);
  background: transparent;
}

body.ptb-med.ptb-med .ptb-textlink.ptb-textlink-white .elementor-button {
  border-color: rgba(255, 255, 255, 0.55);
  color: #FFFFFF;
}

body.ptb-med.ptb-med .ptb-textlink.ptb-textlink-white .elementor-button:is(:hover, :focus-visible) {
  border-color: #FFFFFF;
  color: #FFFFFF;
}

body.ptb-med.ptb-med .ptb-textlink.ptb-textlink-white .elementor-button::after {
  color: #FFFFFF;
}

body.ptb-med.ptb-med .ptb-textlink.ptb-textlink-noarrow .elementor-button::after {
  content: none;
}

/* a native Elementor icon is never drawn next to the system's own arrow */
body.ptb-med.ptb-med :is(.ptb-button, .ptb-secondary, .ptb-textlink) .elementor-button-icon {
  display: none;
}

/* ---- arrow motion: the button itself, or the clickable card around it ---- */
@media (hover: hover) {
  body.ptb-med.ptb-med :is(.ptb-button-arrow, .ptb-button-ne, .ptb-textlink) .elementor-button:hover::after,
  body.ptb-med.ptb-med :is(.ptb-click-card, .roster-card, .specialty-cell, .article-card, .is-clickable):hover :is(.ptb-button-arrow, .ptb-button-ne, .ptb-textlink) .elementor-button::after {
    transform: translateX(4px);
  }

  body.ptb-med.ptb-med :is(.ptb-click-card, .roster-card, .specialty-cell, .article-card, .is-clickable):hover .ptb-textlink:not(.ptb-textlink-white) .elementor-button {
    border-color: var(--blue-ink, #0E6C9C);
    color: var(--blue-ink, #0E6C9C);
  }
}

/* standalone card arrows (specialty cells, article cards) share the timing */
body.ptb-med.ptb-med :is(.specialty-arrow, .ptb-article-arrow) {
  transition: transform var(--ptb-btn-time) var(--ptb-btn-ease), color var(--ptb-btn-time) ease;
}

/* single doctor card, phones: the two buttons share the row (see D-014) */
@media (max-width: 680px) {
  body.ptb-med.ptb-med .doctor-module-actions :is(.ptb-button, .ptb-secondary) .elementor-button {
    gap: 8px;
    padding-inline: 12px;
  }
}

@media (prefers-reduced-motion: reduce) {
  body.ptb-med.ptb-med .ptb-button .elementor-button::before { display: none; }
  body.ptb-med.ptb-med :is(.ptb-button-arrow, .ptb-button-ne, .ptb-textlink) .elementor-button::after { transition: none; }
}

/* ---- primary with arrow: arrow segment (03.11.2026, from canvas M01 "01 × 12") ----
   The arrow sits in its own full-height segment on the right edge, divided
   from the label by a hairline. On hover the segment lightens and the arrow
   eases 4px right inside it; the divider stays put. */
body.ptb-med.ptb-med .ptb-button:is(.ptb-button-arrow, .ptb-button-ne) .elementor-button {
  gap: 0;
  padding: 0 0 0 22px;
}

body.ptb-med.ptb-med .ptb-button-small:is(.ptb-button-arrow, .ptb-button-ne) .elementor-button {
  padding-left: 18px;
}

body.ptb-med.ptb-med .ptb-button:is(.ptb-button-arrow, .ptb-button-ne) .elementor-button-text {
  padding-right: 18px;
}

body.ptb-med.ptb-med .ptb-button:is(.ptb-button-arrow, .ptb-button-ne) .elementor-button::after {
  align-self: stretch;
  box-sizing: border-box;
  width: var(--ptb-btn-h);
  height: auto;
  padding-left: 0;
  border-left: 1px solid rgba(255, 255, 255, 0.28);
  transition:
    padding-left var(--ptb-btn-time) var(--ptb-btn-ease),
    background-color var(--ptb-btn-time) ease,
    color var(--ptb-btn-time) ease;
}

body.ptb-med.ptb-med .ptb-button.ptb-button-white:is(.ptb-button-arrow, .ptb-button-ne) .elementor-button::after {
  border-left-color: rgba(14, 108, 156, 0.22);
}

@media (hover: hover) {
  body.ptb-med.ptb-med .ptb-button:is(.ptb-button-arrow, .ptb-button-ne) .elementor-button:hover::after,
  body.ptb-med.ptb-med :is(.ptb-click-card, .roster-card, .specialty-cell, .article-card, .is-clickable):hover .ptb-button:is(.ptb-button-arrow, .ptb-button-ne) .elementor-button::after {
    padding-left: 8px;
    background-color: rgba(255, 255, 255, 0.1);
    transform: none;
  }

  body.ptb-med.ptb-med .ptb-button.ptb-button-white:is(.ptb-button-arrow, .ptb-button-ne) .elementor-button:hover::after,
  body.ptb-med.ptb-med :is(.ptb-click-card, .roster-card, .specialty-cell, .article-card, .is-clickable):hover .ptb-button.ptb-button-white:is(.ptb-button-arrow, .ptb-button-ne) .elementor-button::after {
    background-color: var(--blue-wash, #EEF7FC);
  }
}

/* ---- button rows on phones: side by side whenever both fit, each filling
   its share of the row; a button that has to wrap takes the full width.
   Replaces the prototype's stacked .actions / .visit-actions (≤620). ---- */
@media (max-width: 620px) {
  body.ptb-med.ptb-med .e-con:is(.actions, .visit-actions),
  body.ptb-med.ptb-med .doctor-module-actions {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: stretch;
  }

  body.ptb-med.ptb-med :is(.actions, .visit-actions, .doctor-module-actions) > .elementor-widget-button {
    flex: 1 1 auto;
    width: auto;
  }

  body.ptb-med.ptb-med :is(.actions, .visit-actions, .doctor-module-actions) > .elementor-widget-button .elementor-button {
    width: 100%;
  }

  /* a stretched primary keeps its label centred in the space left of the arrow */
  body.ptb-med.ptb-med :is(.actions, .visit-actions, .doctor-module-actions) .ptb-button:is(.ptb-button-arrow, .ptb-button-ne) .elementor-button-text {
    flex: 1 1 auto;
    padding-right: 14px;
    text-align: center;
  }

  body.ptb-med.ptb-med .doctor-module-actions .ptb-secondary .elementor-button {
    padding-inline: 14px;
  }

  body.ptb-med.ptb-med .doctor-module-actions .ptb-button:is(.ptb-button-arrow, .ptb-button-ne) .elementor-button {
    gap: 0;
    padding: 0 0 0 14px;
  }
}

/* header, laptop widths (~1181-1279): the six menu items wrapped onto a second
   line and the header grew to 108px. Tighter gaps keep them on one line. */
@media (max-width: 1279px) {
  body.ptb-med.ptb-med .header-inner.e-con {
    --gap: 20px;
    gap: 20px;
  }
  body.ptb-med.ptb-med .elementor-element-hdr0013 .elementor-nav-menu {
    flex-wrap: nowrap;
    gap: 12px;
  }
  body.ptb-med.ptb-med .elementor-element-hdr0013 .elementor-nav-menu a {
    white-space: nowrap;
  }
}

/* =====================================================================
   Header, mobile buttons, checks — 03.11.2026 (evening)
   ===================================================================== */

/* ---- logo: larger while the page is at the top, eases back on scroll;
   the wordmark fades out once the page scrolls, for a cleaner bar.
   The header keeps its height (85 / 73 px). ---- */
body.ptb-med.ptb-med .lv-header .brand .elementor-widget-image-box .elementor-image-box-wrapper .elementor-image-box-img {
  width: 64px;
  transition: width 600ms var(--lv-ease, cubic-bezier(0.16, 1, 0.3, 1));
}

body.ptb-med.ptb-med .lv-header.is-scrolled .brand .elementor-widget-image-box .elementor-image-box-wrapper .elementor-image-box-img {
  width: 52px;
}

/* the prototype's .brand img rule pins the image at 48 / 42 px; it follows its frame now */
body.ptb-med.ptb-med .lv-header .brand .elementor-image-box-img img {
  width: 100%;
  height: auto;
  aspect-ratio: 1;
}

body.ptb-med.ptb-med .lv-header .brand .elementor-image-box-content {
  transition:
    opacity 500ms ease,
    transform 600ms var(--lv-ease, cubic-bezier(0.16, 1, 0.3, 1));
}

body.ptb-med.ptb-med .lv-header.is-scrolled .brand .elementor-image-box-content {
  opacity: 0;
  transform: translateX(-8px);
  pointer-events: none;
}

@media (max-width: 620px) {
  body.ptb-med.ptb-med .lv-header .brand .elementor-widget-image-box .elementor-image-box-wrapper .elementor-image-box-img {
    width: 56px;
  }

  body.ptb-med.ptb-med .lv-header.is-scrolled .brand .elementor-widget-image-box .elementor-image-box-wrapper .elementor-image-box-img {
    width: 46px;
  }
}

@media (prefers-reduced-motion: reduce) {
  body.ptb-med.ptb-med .lv-header .brand :is(.elementor-image-box-img, .elementor-image-box-content) {
    transition: none;
  }
}

/* ---- phone + menu buttons on tablet / phone: the same frosted surface as
   the hero's open / closed status pill ---- */
@media (max-width: 1180px) {
  body.ptb-med.ptb-med .lv-header :is(.ptb-phone .elementor-button, .site-nav .elementor-menu-toggle) {
    border: 1px solid rgba(255, 255, 255, 0.7);
    background: rgba(255, 255, 255, 0.38);
    box-shadow: 0 0 0 1px rgba(21, 124, 173, 0.08);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
  }

  body.ptb-med.ptb-med .lv-header :is(.ptb-phone .elementor-button, .site-nav .elementor-menu-toggle):hover {
    border-color: var(--blue-deep, #157CAD);
    color: var(--blue-ink, #0E6C9C);
  }
}

/* ---- the mobile bottom bar is gone, so the page no longer reserves room for it ---- */
@media (max-width: 620px) {
  body.ptb-med.ptb-med {
    padding-bottom: 0;
  }
}

/* ---- check marks in green circles: 16 → 22 px disc, 9 → 15 px tick ---- */
body.ptb-med.ptb-med .ptb-check {
  top: 0;
  width: 22px;
  height: 22px;
  font-size: 15px;
}

/* ---- secondary buttons: no fill in any state (03.11.2026) ---- */
body.ptb-med.ptb-med .ptb-secondary .elementor-button:is(:hover, :focus-visible),
body.ptb-med.ptb-med .ptb-secondary.ptb-secondary-white .elementor-button:is(:hover, :focus-visible) {
  background: transparent;
}

/* =====================================================================
   Mobile mega menu (03.11.2026) — header 23, container .ptb-mega.
   Native Elementor widgets; ptb-med.js opens it from the hamburger and
   closes it on a link, Escape, a tap outside, or a resize to desktop.
   ===================================================================== */
body.ptb-med.ptb-med .ptb-mega {
  display: none;
}

html.ptb-mega-lock,
html.ptb-mega-lock body {
  overflow: hidden;
}

@media (max-width: 1180px) {
  body.ptb-med.ptb-med .site-nav .elementor-nav-menu--dropdown {
    display: none !important;
  }

  body.ptb-med.ptb-med .lv-header.mega-open {
    background-color: #FFFFFF;
  }

  body.ptb-med.ptb-med .lv-header > .ptb-mega.e-con {
    display: flex;
    flex-direction: column;
    gap: 12px;
    position: absolute;
    z-index: 40;
    top: 100%;
    left: 0;
    right: 0;
    width: 100%;
    max-width: none;
    max-height: calc(100dvh - var(--ptb-hdr, 73px));
    margin: 0;
    padding: 16px 16px 22px;
    overflow-y: auto;
    overscroll-behavior: contain;
    border-top: 1px solid var(--line, #E3E4E8);
    border-radius: 0 0 22px 22px;
    background: #FFFFFF;
    box-shadow: 0 24px 48px rgba(10, 11, 27, 0.12), 0 100vmax 0 100vmax rgba(10, 11, 27, 0);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-8px);
    transition:
      opacity 360ms ease,
      transform 520ms var(--lv-ease, cubic-bezier(0.16, 1, 0.3, 1)),
      box-shadow 420ms ease,
      visibility 0s linear 520ms;
  }

  body.ptb-med.ptb-med .lv-header.mega-open > .ptb-mega.e-con {
    opacity: 1;
    visibility: visible;
    transform: none;
    box-shadow: 0 24px 48px rgba(10, 11, 27, 0.12), 0 100vmax 0 100vmax rgba(10, 11, 27, 0.28);
    transition-delay: 0s;
  }

  body.ptb-med.ptb-med .ptb-mega .e-con {
    --padding-top: 0px;
    --padding-right: 0px;
    --padding-bottom: 0px;
    --padding-left: 0px;
    padding: 0;
    margin: 0;
    width: 100%;
    max-width: none;
  }

  /* row 1: book + call */
  body.ptb-med.ptb-med .ptb-mega .ptb-mega-actions {
    display: flex;
    flex-direction: row;
    gap: 10px;
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-actions > .elementor-widget-button {
    flex: 1 1 0;
    min-width: 0;
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-actions .elementor-button {
    width: 100%;
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-actions .ptb-button:is(.ptb-button-arrow, .ptb-button-ne) .elementor-button-text {
    flex: 1 1 auto;
    padding-right: 12px;
    text-align: center;
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-actions .ptb-button:is(.ptb-button-arrow, .ptb-button-ne) .elementor-button {
    padding-left: 14px;
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-actions .ptb-secondary .elementor-button {
    padding-inline: 14px;
  }

  /* open / closed now */
  body.ptb-med.ptb-med .ptb-mega .ptb-mega-status {
    align-self: flex-start;
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-status .lv-status-badge {
    background: var(--paper, #F2F6F8);
    border-color: var(--line, #E3E4E8);
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }

  /* small section labels */
  body.ptb-med.ptb-med .ptb-mega .ptb-mega-label .elementor-heading-title {
    margin: 8px 0 0;
    color: var(--grey, #4B4C52);
    font-family: "Inter", Arial, sans-serif;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.12em;
    line-height: 1.4;
    text-transform: uppercase;
  }

  /* 2 × 2 shortcuts */
  body.ptb-med.ptb-med .ptb-mega .ptb-mega-tiles {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
  }

  body.ptb-med.ptb-med .ptb-mega a.ptb-mega-tile.e-con {
    display: grid;
    grid-template-columns: 36px minmax(0, 1fr);
    grid-template-rows: auto auto;
    align-content: center;
    column-gap: 10px;
    row-gap: 2px;
    min-height: 72px;
    padding: 12px;
    border: 1px solid var(--line, #E3E4E8);
    border-radius: 16px;
    color: var(--ink, #0A0B1B);
    background: #FFFFFF;
    text-decoration: none;
    transition: border-color var(--lv-hover, 420ms) ease, background-color var(--lv-hover, 420ms) ease;
  }

  body.ptb-med.ptb-med .ptb-mega a.ptb-mega-tile.e-con:is(:hover, :focus-visible) {
    border-color: var(--blue-deep, #157CAD);
    background: var(--blue-wash, #EEF7FC);
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-tile > .ptb-mega-tile-icon {
    grid-row: 1 / span 2;
    display: grid;
    width: 36px;
    height: 36px;
    place-items: center;
    border-radius: 10px;
    background: var(--blue-wash, #EEF7FC);
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-tile-icon :is(.elementor-icon-wrapper, .elementor-icon) {
    display: grid;
    place-items: center;
    line-height: 1;
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-tile-icon .elementor-icon {
    color: var(--blue-deep, #157CAD);
    font-size: 20px;
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-tile-title .elementor-heading-title {
    color: var(--ink, #0A0B1B);
    font-family: "Inter", Arial, sans-serif;
    font-size: 15px;
    font-weight: 600;
    line-height: 1.2;
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-tile-sub .elementor-heading-title {
    color: var(--grey, #4B4C52);
    font-family: "Inter", Arial, sans-serif;
    font-size: 12px;
    font-weight: 400;
    line-height: 1.35;
  }

  /* most-asked specialties as chips */
  body.ptb-med.ptb-med .ptb-mega .ptb-mega-chips .elementor-icon-list-items {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 0;
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-chips .elementor-icon-list-item {
    margin: 0 !important;
    padding: 0;
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-chips .elementor-icon-list-item::after {
    content: none !important;
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-chips .elementor-icon-list-item > a {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    padding: 0 14px;
    border: 1px solid var(--line, #E3E4E8);
    border-radius: 999px;
    color: var(--ink, #0A0B1B);
    font-family: "Inter", Arial, sans-serif;
    font-size: 14px;
    font-weight: 500;
    text-decoration: none;
    transition: border-color var(--lv-hover, 420ms) ease, color var(--lv-hover, 420ms) ease;
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-chips .elementor-icon-list-item > a:is(:hover, :focus-visible) {
    border-color: var(--blue-deep, #157CAD);
    color: var(--blue-ink, #0E6C9C);
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-chips .elementor-icon-list-text {
    padding: 0;
    color: inherit;
  }

  /* results, diagnostics, contacts, articles */
  body.ptb-med.ptb-med .ptb-mega .ptb-mega-list .elementor-icon-list-items {
    margin: 0;
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-list .elementor-icon-list-item {
    margin: 0 !important;
    padding: 0;
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-list .elementor-icon-list-item > a {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 50px;
    padding: 0 2px;
    border-bottom: 1px solid var(--line, #E3E4E8);
    color: var(--ink, #0A0B1B);
    font-family: "Inter", Arial, sans-serif;
    font-size: 15px;
    font-weight: 500;
    text-decoration: none;
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-list .elementor-icon-list-item:last-child > a {
    border-bottom: 0;
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-list .elementor-icon-list-icon {
    display: grid;
    width: 24px;
    place-items: center;
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-list .elementor-icon-list-icon i {
    color: var(--blue-ink, #0E6C9C);
    font-size: 20px;
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-list .elementor-icon-list-text {
    padding: 0;
    color: inherit;
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-list .elementor-icon-list-item > a::after {
    margin-left: auto;
    color: var(--grey, #4B4C52);
    font-family: "Material Symbols Rounded";
    font-size: 20px;
    font-variation-settings: "FILL" 0, "wght" 400, "GRAD" 0, "opsz" 24;
    line-height: 1;
    content: "chevron_right";
    display: inline-block;
    width: 1em;
    overflow: hidden;
    transition: transform var(--lv-hover, 420ms) var(--lv-ease, cubic-bezier(0.16, 1, 0.3, 1));
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-list .elementor-icon-list-item > a[target="_blank"]::after {
    content: "north_east";
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-list .elementor-icon-list-item > a:is(:hover, :focus-visible) {
    color: var(--blue-ink, #0E6C9C);
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-list .elementor-icon-list-item > a:hover::after {
    transform: translateX(4px);
  }
}

@media (max-width: 1180px) and (prefers-reduced-motion: reduce) {
  body.ptb-med.ptb-med .lv-header > .ptb-mega.e-con {
    transform: none;
    transition: opacity 1ms, visibility 0s;
  }
}

/* visible in the Elementor editor so it can be edited in place */
body.elementor-editor-active .ptb-mega {
  display: flex;
}

@media (max-width: 1180px) {
  /* Elementor containers default to flex-wrap: wrap; a column that wraps
     starts a second column once it hits max-height */
  body.ptb-med.ptb-med .lv-header > .ptb-mega.e-con {
    flex-wrap: nowrap;
  }

  body.ptb-med.ptb-med .ptb-mega > * {
    flex-shrink: 0;
  }

  body.ptb-med.ptb-med .ptb-mega .ptb-mega-status .lv-status-badge {
    font-family: "Inter", Arial, sans-serif;
    font-size: 13px;
  }
}

/* =====================================================================
   /nzok/ — doctor filter (05.11.2026): specialty drop-down over the НЗОК-only
   list (query 7), listing CSS ID nzok-doctors.
   ===================================================================== */
body.ptb-med.ptb-med .nzok-filters.e-con {
  --padding-top: 0px;
  --padding-right: 0px;
  --padding-bottom: 0px;
  --padding-left: 0px;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin: 0 0 24px;
  padding: 0;
}

body.ptb-med.ptb-med .nzok-filters > .nzok-filter-select {
  flex: 0 1 340px;
  min-width: 0;
}

body.ptb-med.ptb-med .nzok-filter-select :is(.jet-smart-filters-select, .jet-select) {
  width: 100%;
  max-width: none;
}

body.ptb-med.ptb-med .nzok-filter-select select {
  width: 100%;
  max-width: none;
  height: 52px;
  border: 1px solid var(--line, #E3E4E8);
  border-radius: 14px;
  background-color: #FFFFFF;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%230e6c9c' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-position: right 16px center;
  background-repeat: no-repeat;
  background-size: 20px;
  padding: 0 48px 0 16px;
  color: var(--ink, #0A0B1B);
  font-family: "Inter", Arial, sans-serif;
  font-size: 15px;
  font-weight: 500;
  -webkit-appearance: none;
  appearance: none;
  cursor: pointer;
  transition: border-color var(--lv-hover, 420ms) ease;
}

body.ptb-med.ptb-med .nzok-filter-select select:hover {
  border-color: var(--blue-deep, #157CAD);
}

body.ptb-med.ptb-med .nzok-filter-select select:focus-visible {
  border-color: var(--blue-deep, #157CAD);
  outline: 3px solid rgba(42, 156, 220, 0.25);
  outline-offset: 1px;
}

/* the step that sends visitors to the list */
body.ptb-med.ptb-med .nzok-steps .nzok-step-link {
  display: flex;
  margin-top: 14px;
}

/* JSF gives .jet-select a fixed 150px column */
body.ptb-med.ptb-med .elementor-widget.nzok-filter-select .jet-smart-filters-select .jet-select {
  flex: 1 1 auto;
  width: 100%;
  max-width: none;
}

/* =====================================================================
   НЗОК switch (05.11.2026) — homepage and /lekari/ doctor lists.
   JetSmartFilters 361 (checkbox, doctor_nzok = 1) drawn as a switch:
   off by default, so every doctor shows until it is turned on.
   ===================================================================== */
body.ptb-med.ptb-med .ptb-nzok-switch :is(.jet-checkboxes-list, .jet-checkboxes-list-wrapper, .jet-checkboxes-list__row) {
  margin: 0;
  padding: 0;
}

body.ptb-med.ptb-med .ptb-nzok-switch .jet-checkboxes-list__item {
  display: inline-block;
  margin: 0;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}

body.ptb-med.ptb-med .ptb-nzok-switch .jet-checkboxes-list__button {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  min-height: 44px;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--ink, #0A0B1B);
  font-family: "Inter", Arial, sans-serif;
  font-size: 15px;
  font-weight: 500;
  line-height: 1.3;
}

/* track */
body.ptb-med.ptb-med .ptb-nzok-switch .jet-checkboxes-list__decorator {
  position: relative;
  flex: none;
  width: 46px;
  height: 28px;
  margin: 0;
  border: 0;
  border-radius: 999px;
  background: #D5D8DE;
  transition: background-color var(--lv-hover, 420ms) ease;
}

body.ptb-med.ptb-med .ptb-nzok-switch .jet-checkboxes-list__checked-icon {
  display: none;
}

/* knob */
body.ptb-med.ptb-med .ptb-nzok-switch .jet-checkboxes-list__decorator::after {
  position: absolute;
  top: 3px;
  left: 3px;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #FFFFFF;
  box-shadow: 0 1px 3px rgba(10, 11, 27, 0.22);
  content: "";
  transition: transform var(--lv-hover, 420ms) var(--lv-ease, cubic-bezier(0.16, 1, 0.3, 1));
}

body.ptb-med.ptb-med .ptb-nzok-switch .jet-checkboxes-list__item:hover .jet-checkboxes-list__decorator {
  background: #C6CAD2;
}

body.ptb-med.ptb-med .ptb-nzok-switch .jet-checkboxes-list__input:checked + .jet-checkboxes-list__button .jet-checkboxes-list__decorator {
  background: var(--green, #8CC63F);
}

body.ptb-med.ptb-med .ptb-nzok-switch .jet-checkboxes-list__input:checked + .jet-checkboxes-list__button .jet-checkboxes-list__decorator::after {
  transform: translateX(18px);
}

body.ptb-med.ptb-med .ptb-nzok-switch .jet-checkboxes-list__input:focus-visible + .jet-checkboxes-list__button .jet-checkboxes-list__decorator {
  outline: 3px solid rgba(42, 156, 220, 0.3);
  outline-offset: 2px;
}

body.ptb-med.ptb-med .ptb-nzok-switch .jet-checkboxes-list__label {
  margin: 0;
  color: inherit;
}

@media (prefers-reduced-motion: reduce) {
  body.ptb-med.ptb-med .ptb-nzok-switch .jet-checkboxes-list__decorator::after {
    transition: none;
  }
}


/* ------------------------------------------------------------------
 * A11Y CONTRAST (2026-11-12) - WCAG AA 4.5:1 for small text on the blue
 * fills. White at 68-86% on #0e6c9c / #157cad measured 3.6-4.4:1.
 * ------------------------------------------------------------------ */

/* Equipment (listing 293), lab areas (296) and the lab card (.lv-beam) on #0e6c9c */
body.ptb-med.ptb-med .elementor-293 .elementor-widget-heading .elementor-heading-title,
body.ptb-med.ptb-med .elementor-293 .elementor-widget-theme-post-content p,
body.ptb-med.ptb-med .elementor-296 .elementor-widget-heading .elementor-heading-title,
body.ptb-med.ptb-med .lv-beam .elementor-widget-heading .elementor-heading-title,
body.ptb-med.ptb-med .lab-areas li,
body.ptb-med.ptb-med .lab-main > p,
body.ptb-med.ptb-med .equip-card p {
  color: rgba(255, 255, 255, 0.93);
}

/* Text on #157cad (primary path card, final CTA): only full white passes */
body.ptb-med.ptb-med .path-card-primary p,
body.ptb-med.ptb-med .final-cta p:not(.eyebrow),
body.ptb-med.ptb-med .final-cta .eyebrow-light {
  color: #fff;
}

/* Doctor fact labels: full ink instead of 85% opacity */
body.ptb-med.ptb-med .doctor-fact strong + span {
  opacity: 1;
}


/* LEGAL TABLES (2026-11-12): cookie list on /politika-za-biskvitki/ */
body.ptb-med.ptb-med .legal-body table { width: 100%; border-collapse: collapse; margin: 8px 0 24px; font-size: 14px; line-height: 1.5; }
body.ptb-med.ptb-med .legal-body th, body.ptb-med.ptb-med .legal-body td { padding: 10px 12px; border-bottom: 1px solid #e3e5ea; text-align: left; vertical-align: top; }
body.ptb-med.ptb-med .legal-body th { font-weight: 600; color: #0a0b1b; background: #f5f7fa; }
body.ptb-med.ptb-med .legal-body td:first-child { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 13px; white-space: nowrap; }
@media (max-width: 767px) {
  body.ptb-med.ptb-med .legal-body table, body.ptb-med.ptb-med .legal-body tbody, body.ptb-med.ptb-med .legal-body tr, body.ptb-med.ptb-med .legal-body td { display: block; width: 100%; }
  body.ptb-med.ptb-med .legal-body thead { display: none; }
  body.ptb-med.ptb-med .legal-body tr { border: 1px solid #e3e5ea; border-radius: 12px; padding: 6px 0; margin-bottom: 12px; }
  body.ptb-med.ptb-med .legal-body td { border: 0; padding: 6px 14px; white-space: normal !important; }
  body.ptb-med.ptb-med .legal-body td::before { content: attr(data-label); display: block; font-family: Inter, system-ui, sans-serif; font-size: 12px; font-weight: 600; color: #4b4c52; margin-bottom: 2px; }
}
