/* GENERATED FILE - do not edit by hand.
 * Run assets/build-scoped-css.php after editing ptb-med-proto.css.
 */
/* ===================================================================
   PTB MED — Doctor profile components
   -------------------------------------------------------------------
   Source layout: prototypes/doctors/index.html
   Surface: conformed to the active design system (slug ptb-med).

   The prototype was drawn in a different visual language. Its LAYOUT is
   kept intact — the shaped portrait, the four fact tiles, the timeline,
   the sticky booking card. Its SURFACE is re-tokenised:

     - negative letter-spacing removed (design system forbids tracking
       on anything except small uppercase labels)
     - purple and teal replaced with the brand washes
     - button and label metrics taken from the design system
     - radii snapped to the 8/10/14/22/99 scale

   Authored against the same tokens as ptb-med-proto.css and scoped by
   assets/build-scoped-css.php.
   =================================================================== */

/* ---------- breadcrumbs ---------- */
body.ptb-med.ptb-med .doctor-breadcrumbs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  padding: var(--sp-6) 0 0;
  color: var(--grey);
  font-size: var(--caption);
}
body.ptb-med.ptb-med .doctor-breadcrumbs a:hover {
  color: var(--blue-ink);
}
body.ptb-med.ptb-med .doctor-breadcrumbs span[aria-current] {
  color: var(--ink);
}

/* ---------- hero ---------- */
body.ptb-med.ptb-med .doctor-hero {
  display: grid;
  grid-template-columns: minmax(300px, 390px) minmax(0, 1fr);
  align-items: center;
  gap: clamp(48px, 7vw, 96px);
  padding: var(--sp-12) 0 var(--sp-16);
}
body.ptb-med.ptb-med .portrait-wrap {
  position: relative;
  padding: 20px 20px 0 0;
}
body.ptb-med.ptb-med .portrait-accent {
  position: absolute;
  top: 0;
  right: 0;
  width: 68%;
  height: 75%;
  border-radius: 130px var(--r-lg) var(--r-lg) var(--r-lg);
  background: var(--blue-wash);
}
body.ptb-med.ptb-med .portrait {
  position: relative;
  display: block;
  width: 100%;
  aspect-ratio: 3 / 3.8;
  border-radius: 160px var(--r-lg) var(--r-lg) var(--r-lg);
  filter: saturate(0.9);
  object-fit: cover;
  object-position: center top;
}
body.ptb-med.ptb-med .portrait-caption {
  position: absolute;
  right: -22px;
  bottom: 26px;
  display: flex;
  align-items: center;
  gap: 8px;
  border: 1px solid var(--line);
  border-radius: var(--r-pill, 99px);
  background: var(--white);
  box-shadow: var(--shadow-soft);
  padding: 12px 16px;
  font-size: var(--caption);
  font-weight: 600;
}
body.ptb-med.ptb-med .status-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--green-ink);
  box-shadow: 0 0 0 4px var(--green-wash);
}
body.ptb-med.ptb-med .doctor-hero h1 {
  margin: 0;
  font-size: var(--ptb-display);
  font-weight: 500;
  line-height: 1.12;
}
body.ptb-med.ptb-med .doctor-lead {
  max-width: 640px;
  margin: var(--sp-6) 0 0;
  color: var(--grey);
  font-size: var(--body-lg);
  font-weight: 300;
  line-height: 1.7;
}

/* ---------- fact tiles ---------- */
body.ptb-med.ptb-med .fact-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--sp-3);
  margin-top: var(--sp-8);
}
body.ptb-med.ptb-med .fact-card {
  display: flex;
  min-height: 154px;
  flex-direction: column;
  justify-content: flex-end;
  border: 1px solid transparent;
  border-radius: var(--r-lg);
  background: var(--blue-wash);
  color: var(--blue-ink);
  padding: var(--sp-4);
  transition: transform 200ms ease;
}
body.ptb-med.ptb-med .fact-card:hover {
  transform: translateY(-2px);
}
body.ptb-med.ptb-med .fact-card .material-symbols-rounded {
  margin-bottom: auto;
  font-size: 22px;
}
body.ptb-med.ptb-med .fact-card strong,
body.ptb-med.ptb-med .fact-card .fact-value {
  font-family: "Lora", Georgia, serif;
  font-size: 34px;
  font-weight: 500;
  line-height: 1.05;
}
body.ptb-med.ptb-med .fact-card > span,
body.ptb-med.ptb-med .fact-card > .elementor-widget-html > span,
body.ptb-med.ptb-med .fact-card .fact-label {
  margin-top: 8px;
  color: var(--ink-soft);
  font-size: 12px;
  line-height: 1.4;
}
body.ptb-med.ptb-med .fact-card-green {
  background: var(--green-wash);
  color: var(--green-ink);
}
body.ptb-med.ptb-med .fact-card-neutral {
  border-color: var(--line);
  background: var(--paper);
  color: var(--ink);
}
body.ptb-med.ptb-med .fact-card-rating {
  background: var(--yellow-wash);
  color: var(--yellow-ink);
}

/* ---------- practical badges ---------- */
body.ptb-med.ptb-med .practical-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: var(--sp-4);
}
body.ptb-med.ptb-med .practical-badges > span,
body.ptb-med.ptb-med .practical-badges > .elementor-widget-html > span {
  display: inline-flex;
  min-height: 38px;
  align-items: center;
  gap: 10px;
  border: 1px solid var(--line);
  border-radius: 99px;
  background: var(--white);
  padding: 0 16px;
  color: var(--grey);
  font-size: 12px;
  font-weight: 500;
}
body.ptb-med.ptb-med .practical-badges i {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--blue);
}
body.ptb-med.ptb-med .practical-badges .badge-green i { background: var(--green); }
body.ptb-med.ptb-med .practical-badges .badge-yellow i { background: var(--yellow); }
body.ptb-med.ptb-med .practical-badges .badge-grey i { background: var(--grey); }
body.ptb-med.ptb-med .doctor-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-3);
  margin-top: var(--sp-8);
}

/* ---------- profile layout ---------- */
body.ptb-med.ptb-med .profile-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 330px;
  align-items: start;
  gap: 80px;
  border-top: 1px solid var(--line);
  padding: var(--sp-16) 0 var(--section);
}
body.ptb-med.ptb-med .profile-main {
  min-width: 0;
}
body.ptb-med.ptb-med .content-section {
  padding-bottom: var(--sp-16);
}
body.ptb-med.ptb-med .content-section + .content-section {
  border-top: 1px solid var(--line);
  padding-top: var(--sp-16);
}
body.ptb-med.ptb-med .content-section h2 {
  margin: 0;
  font-size: var(--h2);
  font-weight: 500;
  line-height: 1.22;
}
body.ptb-med.ptb-med .content-section p {
  max-width: 720px;
  color: var(--grey);
  font-size: var(--body);
  font-weight: 300;
  line-height: 1.8;
}
body.ptb-med.ptb-med .profile-list {
  display: grid;
  gap: 13px;
  margin: var(--sp-6) 0 0;
  padding: 0;
  list-style: none;
}
body.ptb-med.ptb-med .profile-list li {
  position: relative;
  color: var(--grey);
  padding-left: 27px;
  font-size: var(--small);
}
body.ptb-med.ptb-med .profile-list li::before {
  position: absolute;
  top: 0.7em;
  left: 0;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--blue);
  content: "";
}
body.ptb-med.ptb-med .section-heading {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--sp-6);
  margin-bottom: var(--sp-8);
}

/* ---------- prices ---------- */
body.ptb-med.ptb-med .price-table {
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--r-md);
}
body.ptb-med.ptb-med .price-row {
  display: grid;
  min-height: 66px;
  grid-template-columns: 1fr 150px;
  align-items: center;
  gap: var(--sp-6);
  border-top: 1px solid var(--line);
  padding: 14px var(--sp-6);
  font-size: var(--caption);
}
body.ptb-med.ptb-med .price-row:first-child {
  border-top: 0;
}
body.ptb-med.ptb-med .price-header {
  min-height: 44px;
  background: var(--paper);
  color: var(--grey);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
body.ptb-med.ptb-med .price-row > span:last-child,
body.ptb-med.ptb-med .price-row > .elementor-widget-html > span:last-child {
  text-align: right;
}
body.ptb-med.ptb-med .price-row b {
  display: block;
  color: var(--blue-ink);
  font-size: var(--small);
}
body.ptb-med.ptb-med .price-row small {
  color: var(--grey);
  font-size: 11px;
}
body.ptb-med.ptb-med .price-note {
  margin: var(--sp-3) 0 0;
  color: var(--grey);
  font-size: 11px;
  line-height: 1.55;
}

/* ---------- timeline ---------- */
body.ptb-med.ptb-med .timeline {
  margin-top: var(--sp-8);
}
body.ptb-med.ptb-med .timeline article {
  position: relative;
  display: grid;
  grid-template-columns: 115px 1fr;
}
body.ptb-med.ptb-med .timeline article:not(:last-child) {
  padding-bottom: var(--sp-8);
}
body.ptb-med.ptb-med .timeline article:not(:last-child)::before {
  position: absolute;
  top: 21px;
  bottom: 7px;
  left: 7px;
  width: 1px;
  background: var(--line);
  content: "";
}
body.ptb-med.ptb-med .timeline-year {
  position: relative;
  color: var(--blue-ink);
  padding-left: 22px;
  font-size: 11px;
  font-weight: 600;
}
body.ptb-med.ptb-med .timeline-year::before {
  position: absolute;
  top: 8px;
  left: 2px;
  width: 11px;
  height: 11px;
  border: 3px solid var(--white);
  border-radius: 50%;
  background: var(--blue);
  box-shadow: 0 0 0 1px var(--line);
  content: "";
}
body.ptb-med.ptb-med .timeline h3 {
  margin: 0;
  font-size: var(--h3);
  font-weight: 500;
  line-height: 1.3;
}
body.ptb-med.ptb-med .timeline p {
  margin: 7px 0 0;
  color: var(--grey);
  font-size: var(--caption);
  font-weight: 300;
  line-height: 1.75;
}
body.ptb-med.ptb-med .qualifications {
  border-top: 1px solid var(--line);
  margin-top: var(--sp-12);
  padding-top: var(--sp-8);
}

/* ---------- booking card ---------- */
body.ptb-med.ptb-med .booking-card {
  position: sticky;
  top: 24px;
  align-self: start;
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  background: var(--white);
  box-shadow: var(--shadow-soft);
  padding: var(--sp-8);
}
body.ptb-med.ptb-med .booking-card h2 {
  margin: 0 0 var(--sp-3);
  font-size: 24px;
  font-weight: 500;
  line-height: 1.25;
}
body.ptb-med.ptb-med .booking-card p {
  margin: 0;
  color: var(--grey);
  font-size: var(--caption);
  font-weight: 300;
  line-height: 1.7;
}
body.ptb-med.ptb-med .booking-phone {
  display: flex;
  align-items: center;
  gap: 12px;
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  margin-top: var(--sp-3);
  padding: 12px 16px;
  color: var(--blue-ink);
}
body.ptb-med.ptb-med .booking-phone span,
body.ptb-med.ptb-med .booking-info span {
  display: flex;
  flex-direction: column;
}
body.ptb-med.ptb-med .booking-phone small,
body.ptb-med.ptb-med .booking-info small {
  color: var(--grey);
  font-size: 11px;
}
body.ptb-med.ptb-med .booking-phone strong {
  color: var(--blue-ink);
  font-size: 15px;
}
body.ptb-med.ptb-med .booking-card hr {
  height: 1px;
  border: 0;
  background: var(--line);
  margin: var(--sp-6) 0;
}
body.ptb-med.ptb-med .booking-info {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin-top: var(--sp-4);
  color: var(--blue-ink);
}
body.ptb-med.ptb-med .booking-info strong {
  color: var(--ink);
  font-size: 12px;
}

/* ---------- breakpoints ---------- */
@media (max-width: 1180px) {
body.ptb-med.ptb-med .doctor-hero {
    grid-template-columns: 300px minmax(0, 1fr);
    gap: var(--sp-12);
  }
body.ptb-med.ptb-med .fact-grid {
    grid-template-columns: repeat(2, 1fr);
  }
body.ptb-med.ptb-med .profile-layout {
    grid-template-columns: minmax(0, 1fr) 300px;
    gap: var(--sp-12);
  }
}
@media (max-width: 860px) {
body.ptb-med.ptb-med .doctor-hero {
    grid-template-columns: 1fr;
    gap: var(--sp-8);
    padding: var(--sp-8) 0 var(--sp-12);
  }
body.ptb-med.ptb-med .portrait-wrap {
    max-width: 330px;
    margin-inline: auto;
    padding-right: 12px;
  }
body.ptb-med.ptb-med .portrait-caption {
    right: -7px;
  }
body.ptb-med.ptb-med .profile-layout {
    display: block;
    padding: var(--sp-12) 0 80px;
  }
body.ptb-med.ptb-med .booking-card {
    position: static;
    margin-bottom: var(--sp-12);
  }
body.ptb-med.ptb-med .price-row {
    grid-template-columns: 1fr 90px;
    padding: 13px var(--sp-4);
  }
body.ptb-med.ptb-med .timeline article {
    grid-template-columns: 90px 1fr;
  }
}
@media (max-width: 620px) {
body.ptb-med.ptb-med .fact-card {
    min-height: 112px;
    padding: var(--sp-3);
  }
body.ptb-med.ptb-med .doctor-actions {
    align-items: stretch;
    flex-direction: column;
  }
body.ptb-med.ptb-med .section-heading {
    align-items: flex-start;
    flex-direction: column;
    gap: var(--sp-3);
  }
}

/* ---------- Elementor wrapper reconciliation ----------
   The prototype styles these elements directly; in the template they are
   Elementor widgets, so the class lands on a wrapper div instead. */
body.ptb-med.ptb-med .doctor-breadcrumbs {
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
}
body.ptb-med.ptb-med .doctor-breadcrumbs > * {
  width: auto;
  max-width: none;
}
body.ptb-med.ptb-med .doctor-breadcrumbs .elementor-heading-title {
  font: inherit;
  color: var(--ink);
}

/* The Image widget wraps the <img>, so the shaped frame belongs on the image. */
body.ptb-med.ptb-med .portrait {
  position: relative;
  z-index: 1;
  width: 100%;
}
body.ptb-med.ptb-med .portrait img {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 3.8;
  border-radius: 160px var(--r-lg) var(--r-lg) var(--r-lg);
  filter: saturate(0.9);
  object-fit: cover;
  object-position: center top;
}

/* Decorative shape must not sit in flow inside its own widget box. */
body.ptb-med.ptb-med .elementor-widget-html:has(> .portrait-accent) {
  display: contents;
}
body.ptb-med.ptb-med .portrait-caption {
  width: auto;
  max-width: none;
  z-index: 2;
}
body.ptb-med.ptb-med .portrait-caption .elementor-heading-title {
  font: inherit;
  color: inherit;
}
body.ptb-med.ptb-med .doctor-actions {
  flex-direction: row;
  width: auto;
  max-width: 100%;
}
@media (max-width: 620px) {
body.ptb-med.ptb-med .doctor-actions { flex-direction: column; width: 100%; }
}

/* Fact tiles: the value and label are Heading widgets. */
body.ptb-med.ptb-med .fact-card .fact-value .elementor-heading-title,
body.ptb-med.ptb-med .fact-card .fact-label .elementor-heading-title {
  font: inherit;
  color: inherit;
}
body.ptb-med.ptb-med .fact-card .fact-value {
  font-family: "Lora", Georgia, serif;
  font-size: 34px;
  font-weight: 500;
  line-height: 1.05;
}

/* ---------- JetEngine Dynamic Repeater rows ----------
   The repeater renders each row as .jet-listing-dynamic-repeater__item, so the
   component styles above are aliased onto that class. Same design, one source. */
body.ptb-med.ptb-med .jet-listing-dynamic-repeater__items { display: block; }

/* Timeline */
body.ptb-med.ptb-med .timeline .jet-listing-dynamic-repeater__item {
  position: relative;
  display: grid;
  grid-template-columns: 115px 1fr;
}
body.ptb-med.ptb-med .timeline .jet-listing-dynamic-repeater__item:not(:last-child) {
  padding-bottom: var(--sp-8);
}
body.ptb-med.ptb-med .timeline .jet-listing-dynamic-repeater__item:not(:last-child)::before {
  position: absolute;
  top: 21px;
  bottom: 7px;
  left: 7px;
  width: 1px;
  background: var(--line);
  content: "";
}

/* Price rows */
body.ptb-med.ptb-med .price-table .jet-listing-dynamic-repeater__item {
  display: grid;
  min-height: 66px;
  grid-template-columns: 1fr 150px;
  align-items: center;
  gap: var(--sp-6);
  border-top: 1px solid var(--line);
  padding: 14px var(--sp-6);
  font-size: var(--caption);
}
body.ptb-med.ptb-med .price-table .jet-listing-dynamic-repeater__item > span:last-child,
body.ptb-med.ptb-med .price-table .jet-listing-dynamic-repeater__item > .elementor-widget-html > span:last-child { text-align: right; }
body.ptb-med.ptb-med .price-table .jet-listing-dynamic-repeater__item b { display: block; color: var(--blue-ink); font-size: var(--small); }
body.ptb-med.ptb-med .price-table .jet-listing-dynamic-repeater__item small { color: var(--grey); font-size: 11px; }

/* Bulleted lists */
body.ptb-med.ptb-med .profile-list-dyn .jet-listing-dynamic-repeater__items { display: grid; gap: 13px; }
body.ptb-med.ptb-med .profile-list-dyn .jet-listing-dynamic-repeater__item {
  position: relative;
  color: var(--grey);
  padding-left: 27px;
  font-size: var(--small);
}
body.ptb-med.ptb-med .profile-list-dyn .jet-listing-dynamic-repeater__item::before {
  position: absolute;
  top: 0.7em;
  left: 0;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--blue);
  content: "";
}

/* Badges */
body.ptb-med.ptb-med .practical-badges .jet-listing-dynamic-repeater__items { display: flex; flex-wrap: wrap; gap: 10px; }
body.ptb-med.ptb-med .practical-badges .jet-listing-dynamic-repeater__item {
  display: inline-flex;
  min-height: 38px;
  align-items: center;
  gap: 10px;
  border: 1px solid var(--line);
  border-radius: 99px;
  background: var(--white);
  padding: 0 16px;
  color: var(--grey);
  font-size: 12px;
  font-weight: 500;
}
@media (max-width: 860px) {
body.ptb-med.ptb-med .price-table .jet-listing-dynamic-repeater__item { grid-template-columns: 1fr 90px; padding: 13px var(--sp-4); }
body.ptb-med.ptb-med .timeline .jet-listing-dynamic-repeater__item { grid-template-columns: 90px 1fr; }
}

/* Timeline rows: the repeater's macro output must stack, not run inline. */
body.ptb-med.ptb-med .timeline .jet-listing-dynamic-repeater__item > div,
body.ptb-med.ptb-med .timeline .jet-listing-dynamic-repeater__item > .e-con,
body.ptb-med.ptb-med .timeline .jet-listing-dynamic-repeater__item > .elementor-widget-html > div {
  display: block;
  min-width: 0;
}
body.ptb-med.ptb-med .timeline .jet-listing-dynamic-repeater__item h3 {
  display: block;
  margin: 0;
  font-family: "Lora", Georgia, serif;
  font-size: var(--h3);
  font-weight: 500;
  line-height: 1.3;
}
body.ptb-med.ptb-med .timeline .jet-listing-dynamic-repeater__item p {
  display: block;
  margin: 7px 0 0;
  color: var(--grey);
  font-size: var(--caption);
  font-weight: 300;
  line-height: 1.75;
}
body.ptb-med.ptb-med .timeline .jet-listing-dynamic-repeater__item .timeline-year {
  position: relative;
  align-self: start;
  color: var(--blue-ink);
  padding-left: 22px;
  font-size: 11px;
  font-weight: 600;
}

/* The booking card's primary label must not wrap onto a second line. */
body.ptb-med.ptb-med .booking-card .elementor-widget-button { width: 100%; }
body.ptb-med.ptb-med .booking-card .elementor-button { width: 100%; white-space: nowrap; }

/* ===== Polish pass ===== */
body.ptb-med.ptb-med .fact-card .elementor-widget-html .material-symbols-rounded {
  display: block;
  margin-bottom: auto;
  font-size: 22px;
  line-height: 1;
  font-variation-settings: "FILL" 0, "wght" 350, "GRAD" 0, "opsz" 24;
}
body.ptb-med.ptb-med .booking-card .material-symbols-rounded {
  font-size: 22px;
  line-height: 1;
  font-variation-settings: "FILL" 0, "wght" 350, "GRAD" 0, "opsz" 24;
}
body.ptb-med.ptb-med .e-con.portrait-caption {
  width: max-content;
  max-width: none;
  flex-wrap: nowrap;
  align-items: center;
  white-space: nowrap;
}
body.ptb-med.ptb-med .portrait-caption > * {
  width: auto;
  flex: 0 0 auto;
}
body.ptb-med.ptb-med .portrait-caption .elementor-widget-html {
  display: flex;
  align-items: center;
  line-height: 0;
}
body.ptb-med.ptb-med .portrait-caption .elementor-heading-title {
  font: inherit;
  color: inherit;
  white-space: nowrap;
}
body.ptb-med.ptb-med .fact-card { padding: 20px; }
body.ptb-med.ptb-med .doctor-hero { padding: 64px 0 96px; }
body.ptb-med.ptb-med .booking-card .elementor-widget-button { margin-top: 20px; }
body.ptb-med.ptb-med .booking-card .booking-info { align-items: center; }

/* Timeline row spacing is owned by the row's own padding; the repeater's
   default gap was adding a second, unequal step between entries. */
body.ptb-med.ptb-med .timeline .jet-listing-dynamic-repeater__items { gap: 0; }

/* Keep the price table flush inside its border. */
body.ptb-med.ptb-med .price-table .jet-listing-dynamic-repeater__items { gap: 0; }

/* ---------- Fact tile alignment ----------
   The prototype pins the icon to the top of the tile and bottom-aligns the
   number and label, so the icons sit on one line across all four tiles while
   the text below can breathe to one or two lines.

   The auto margin has to live on the WIDGET WRAPPER, not on the glyph inside
   it: the wrapper is the flex item, so a margin on the inner span leaves the
   wrapper to be pushed down with the rest of the bottom-aligned content. */
body.ptb-med.ptb-med .fact-card > .elementor-widget-html {
  margin-bottom: auto;
  width: auto;
}
body.ptb-med.ptb-med .fact-card .elementor-widget-html .material-symbols-rounded {
  margin-bottom: 0;
}
body.ptb-med.ptb-med .fact-card .fact-value { margin-top: 0; }
body.ptb-med.ptb-med .fact-card .fact-label { margin-top: 8px; }

/* ---------- Chip hairline ----------
   --line is tuned for large surfaces and reads washed out on a 38px control.
   Derived from brand ink rather than introducing a new grey. */
body.ptb-med.ptb-med .practical-badges .jet-listing-dynamic-repeater__item,
body.ptb-med.ptb-med .practical-badges > span,
body.ptb-med.ptb-med .practical-badges > .elementor-widget-html > span {
  border-color: color-mix(in srgb, var(--ink) 16%, var(--white));
}

/* The prototype's icons are 22px SVGs that start flush with the tile padding.
   A Material Symbols glyph carries internal leading, so its box began 8px
   lower. Boxing the glyph and centring it inside restores the flush top edge. */
body.ptb-med.ptb-med .fact-card > .elementor-widget-html {
  display: flex;
  line-height: 0;
}
body.ptb-med.ptb-med .fact-card .elementor-widget-html .material-symbols-rounded {
  display: grid;
  width: 22px;
  height: 22px;
  place-items: center;
  line-height: 1;
}

/* Pin the icon to the tile's top-left padding corner.

   Relying on an auto margin left an 8px offset that came from the widget
   wrapper's own box, and it varied with the flex context. Taking the icon out
   of flow makes the alignment exact and identical in every tile, and lets the
   number and label bottom-align without competing with it. */
body.ptb-med.ptb-med .fact-card {
  position: relative;
}
body.ptb-med.ptb-med .fact-card > .elementor-widget-html {
  position: absolute;
  /* 12px, not 20px: a Material Symbols glyph sits ~8px below the top of its
     own box, so the optical top edge lands on the 20px padding line and
     matches the prototype's 22px SVG. */
  top: 12px;
  left: 20px;
  margin: 0;
  width: auto;
}
@media (max-width: 620px) {
body.ptb-med.ptb-med .fact-card > .elementor-widget-html { top: 12px; left: 12px; }
}

/* ---------- Spacing corrections ----------

   1. Badge dot and label. Restricting the pill rule to direct children fixed
      the double border but also took the inner span's flex row with it, so the
      dot was butting straight against the text. */
body.ptb-med.ptb-med .practical-badges .jet-listing-dynamic-repeater__item > span,
body.ptb-med.ptb-med .practical-badges .jet-listing-dynamic-repeater__item > .elementor-widget-html > span {
  display: inline-flex;
  align-items: center;
  gap: 10px;
}

/* 2. Price cell. The euro and lev figures are two separate lines in the
      prototype; inside the repeater they were running together inline. */
body.ptb-med.ptb-med .price-table .jet-listing-dynamic-repeater__item > span:last-child,
body.ptb-med.ptb-med .price-table .jet-listing-dynamic-repeater__item > .elementor-widget-html > span:last-child {
  display: flex;
  flex-direction: column;
  gap: 3px;
  align-items: flex-end;
}
body.ptb-med.ptb-med .price-table .jet-listing-dynamic-repeater__item b {
  display: block;
  line-height: 1.3;
}
body.ptb-med.ptb-med .price-table .jet-listing-dynamic-repeater__item small {
  display: block;
  line-height: 1.3;
}

/* 3. Heading to list. The static .profile-list carried a top margin; the
      repeater that replaced it did not, so the first bullet sat against the
      heading. */
body.ptb-med.ptb-med .profile-list-dyn {
  display: block;
  margin-top: var(--sp-6);
}
body.ptb-med.ptb-med .qualifications .profile-list-dyn {
  margin-top: var(--sp-5, 20px);
}
