.pv-skip-link {
  position: fixed;
  top: 1rem;
  left: 1rem;
  z-index: 10000;
  padding: 0.75rem 1rem;
  color: #9b7555;
  background-color: #f7f1ec;
  border: 2px solid #9b7555;
  border-radius: 0;
  box-shadow: none;
  transform: translateY(calc(-100% - 1rem));
}

.pv-skip-link:focus,
.pv-skip-link:focus-visible {
  transform: translateY(0);
}

nav a:focus-visible,
button:focus-visible,
.button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: 3px solid #9b7555 !important;
  outline-offset: 3px !important;
  box-shadow: none !important;
}

@media (prefers-reduced-motion: reduce) {
  html.w-mod-js body [data-w-id],
  html.w-mod-js body [js-line-animation],
  html.w-mod-js body [data-stagger],
  html.w-mod-js body .image-7,
  html.w-mod-js body .heading-5,
  html.w-mod-js body .paragraph-6,
  html.w-mod-js body .whats-info-wrapper,
  html.w-mod-js body .service-about_text,
  html.w-mod-js body .scroll-inner {
    opacity: 1 !important;
    visibility: visible !important;
    filter: none !important;
    transform: none !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

.pv-sitemap-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  grid-column-gap: 2.5rem;
  grid-row-gap: 3rem;
  margin-top: 3rem;
}

.pv-sitemap-group {
  border-top: 1px solid #9b755533;
  padding-top: 1.5rem;
}

.pv-sitemap-list {
  list-style: none;
  margin: 1.5rem 0 0;
  padding: 0;
}

.pv-sitemap-list-item + .pv-sitemap-list-item {
  margin-top: 0.75rem;
}

.pv-read-surface {
  background-color: #f7f1ec;
}

.pv-read-surface .navbar-main_component .navbar_link-text,
.pv-read-surface .navbar-main_component .navbar_link-text-2,
.pv-read-surface .navbar-main_component .navbar_link-title,
.pv-read-surface .navbar-main_component .navbar_link-title-2,
.pv-read-surface .navbar-main_component .menu_cart-wrapper,
.pv-read-surface .navbar-main_component .text-block-68 {
  color: #000000;
}

.pv-visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.pv-read-hero {
  border-bottom: 1px solid #9b755533;
}

.pv-read-intro,
.pv-glossary-definition {
  max-width: 40rem;
  margin-top: 1.5rem;
}

.pv-glossary-filters {
  display: flex;
  flex-wrap: wrap;
  grid-column-gap: 1.25rem;
  grid-row-gap: 0.75rem;
  padding-top: 2rem;
  padding-bottom: 2rem;
  border-bottom: 1px solid #9b755533;
}

.pv-glossary-filters .pv-is-active {
  color: #9b7555;
  text-decoration: underline;
}

.pv-glossary-letters {
  position: sticky;
  top: 6rem;
  z-index: 10;
  display: grid;
  grid-template-columns: repeat(26, minmax(1.25rem, 1fr));
  background-color: #f7f1ec;
  border-bottom: 1px solid #9b755533;
}

.pv-glossary-letter {
  padding: 1rem 0.25rem;
  border-right: 1px solid #9b755533;
  text-align: center;
}

.pv-glossary-letters .pv-is-disabled {
  color: #aaaaaa;
}

.pv-glossary-letter-group {
  scroll-margin-top: 10rem;
}

.pv-glossary-letter-group + .pv-glossary-letter-group {
  margin-top: 4rem;
}

.pv-glossary-rows {
  margin-top: 1.5rem;
  border-top: 1px solid #9b755533;
}

.pv-glossary-row {
  display: grid;
  grid-template-columns: minmax(14rem, 0.75fr) minmax(0, 1.5fr);
  grid-column-gap: 2.5rem;
  grid-row-gap: 1rem;
  padding-top: 1.5rem;
  padding-bottom: 1.5rem;
  border-bottom: 1px solid #9b755533;
}

.pv-prose {
  line-height: 1.5;
}

.pv-prose p + p {
  margin-top: 1.25em;
}

.pv-prose h2,
.pv-prose h3,
.pv-prose h4,
.pv-prose h5,
.pv-prose h6 {
  margin-top: 2em;
  margin-bottom: 0.75em;
}

.pv-prose-link {
  color: #9b7555;
  text-decoration: underline;
}

.pv-at-previvo {
  margin-top: 3rem;
  padding: 2rem;
  background-color: #e6e1dc;
  border: 1px solid #9b755533;
}

.pv-at-previvo-copy,
.pv-at-previvo-link {
  margin-top: 1.5rem;
}

.pv-related-terms,
.pv-medical-disclaimer,
.pv-blog-closing {
  margin-top: 3rem;
  padding-top: 2rem;
  border-top: 1px solid #9b755533;
}

.pv-related-list {
  display: grid;
  grid-column-gap: 1rem;
  grid-row-gap: 0.75rem;
  margin: 1.5rem 0 0;
  padding: 0;
  list-style: none;
}

.pv-related-link,
.pv-blog-topic-link {
  color: #9b7555;
  text-decoration: underline;
}

.pv-blog-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  grid-column-gap: 2rem;
  grid-row-gap: 2rem;
  margin-top: 3rem;
}

/* .blog-image-wrapper ships display:none in the frozen Webflow stylesheet — on
   the live original it's revealed by a scroll-triggered GSAP/webflow.js reveal
   script. The WP blog templates render the same markup server-side without
   that JS dependency, so force it visible here instead of depending on a
   fragile animation trigger to unhide real content. */
.blog_list .blog-image-wrapper,
.blog-card .blog-image-wrapper {
  display: block;
}

.pv-blog-card {
  background-color: #e6e1dc;
  border: 1px solid #9b755533;
}

.pv-blog-card-lead {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(20rem, 0.75fr);
  margin-bottom: 3rem;
}

.pv-blog-card-image {
  display: block;
  min-height: 18rem;
  overflow: hidden;
}

.pv-blog-card-thumbnail {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.pv-blog-card-body {
  padding: 2rem;
}

.pv-blog-card-title,
.pv-blog-card-excerpt {
  margin-top: 1rem;
}

.pv-blog-meta,
.pv-blog-byline {
  display: flex;
  flex-wrap: wrap;
  grid-column-gap: 1rem;
  grid-row-gap: 0.5rem;
  color: #666666;
}

.pv-blog-byline {
  margin-top: 1.5rem;
}

.pv-blog-closing {
  background-color: #e6e1dc;
  border: 1px solid #9b755533;
  padding: 2rem;
}

.pv-blog-service-button,
.pv-hub-service-link {
  margin-top: 1.5rem;
}

.pv-pagination {
  display: flex;
  grid-column-gap: 1rem;
  grid-row-gap: 1rem;
  margin-top: 3rem;
}

.pv-service-related {
  background-color: #fcf8f1;
  border-top: 1px solid #9b755533;
}

.pv-service-related-inner {
  border-top: 1px solid #9b755533;
  padding-top: 2rem;
}

.pv-service-related-links {
  display: flex;
  flex-wrap: wrap;
  grid-column-gap: 1.5rem;
  grid-row-gap: 1rem;
  margin-top: 1.5rem;
}

.pv-service-related-link {
  color: #9b7555;
  text-decoration: underline;
}

@media screen and (max-width: 991px) {
  .pv-sitemap-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .pv-blog-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .pv-blog-card-lead {
    grid-template-columns: minmax(0, 1fr);
  }

  .pv-glossary-letters {
    grid-template-columns: repeat(13, minmax(1.25rem, 1fr));
  }
}

@media screen and (max-width: 767px) {
  .pv-sitemap-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .pv-blog-grid,
  .pv-glossary-row {
    grid-template-columns: minmax(0, 1fr);
  }

  .pv-glossary-letters {
    position: static;
    grid-template-columns: repeat(7, minmax(1.25rem, 1fr));
  }

  .pv-blog-card-body,
  .pv-at-previvo,
  .pv-blog-closing {
    padding: 1.5rem;
  }
}

/* ---------------------------------------------------------------------------
   Team hub and practitioner bio pages (/team/, /team/<person>/).
   Built from the frozen token set only: vanilla #f7f1ec, section-sand #fcf8f1,
   pale-sand #e6e1dc, brown ink #9b7555, hairline #9b755533. No new colours,
   no new type families, no new radii.
   ------------------------------------------------------------------------- */

.pv-breadcrumb {
  margin-bottom: 1.5rem;
}

.pv-breadcrumb-list {
  display: flex;
  flex-wrap: wrap;
  grid-column-gap: 0.5rem;
  margin: 0;
  padding: 0;
  font-size: 0.875rem;
  line-height: 1.5;
  list-style: none;
  color: #4f4f4f;
}

.pv-breadcrumb-list li + li::before {
  content: "\203A";
  margin-right: 0.5rem;
  color: #9b7555;
}

.pv-breadcrumb-list a {
  color: #9b7555;
  text-decoration: underline;
}

.pv-breadcrumb-list [aria-current="page"] {
  color: #4f4f4f;
}

.pv-eyebrow {
  margin-bottom: 0.75rem;
  color: #9b7555;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.pv-team-intro {
  max-width: 40rem;
  margin-top: 1.5rem;
}

/* Every rule in this block is written at doubled-class specificity on purpose. The frozen
   Webflow classes on the same elements (.blog_list, .blog-card, .blog-image-wrapper,
   .w-inline-block) otherwise win: they forced three 440px columns, an 8px left padding on
   the card, and a fixed 256px image width inside a 312px card. */
.pv-team-list.pv-team-list {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  grid-column-gap: 1.5rem;
  grid-row-gap: 1.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
  align-items: stretch;
}

.pv-team-card {
  display: flex;
  height: 100%;
  background-color: #fcf8f1;
  border: 1px solid #9b755533;
}

/* Equal-height cards so every "Read full profile" sits on the same baseline
   regardless of how long a name or credential string is. */
.pv-team-card-link {
  display: flex;
  flex-direction: column;
  width: 100%;
  color: inherit;
  text-decoration: none;
}

.pv-team-card-body {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
}

/* Doubled specificity: the frozen .blog-card descendants otherwise win and the link
   stops being pushed to the card foot, so the four cards ended up with "Read full
   profile" at four different heights. */
.pv-team-card .pv-team-more {
  margin-top: auto;
  padding-top: 1rem;
}

/* The credential slot always renders, so a practitioner without a registration number
   does not pull their card's body copy 60px up out of line with the others. */
/* Two lines reserved: a registration line fits on one, an issuing-academy line can
   wrap to two, and the bodies below must still start on the same line across all four. */
.pv-team-licence.pv-team-licence {
  height: 2.9em;
  overflow: hidden;
  margin: 0 0 0.75rem;
}

.pv-team-intro.pv-team-intro {
  max-width: 46rem;
}

.pv-team-portrait {
  position: relative;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  background-color: #e6e1dc;
}

.pv-team-portrait-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  display: block;
}

.pv-team-portrait-placeholder {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: "Ivy Mode", Arial, sans-serif;
  font-size: 4rem;
  font-weight: 100;
  color: #9b7555;
}

.pv-team-card-body {
  padding: 1.5rem;
}

.pv-team-name {
  margin: 0 0 0.35rem;
  font-size: 1.6rem;
  line-height: 1.15;
}

.pv-team-letters {
  display: block;
  min-height: 1.3em;
  margin-top: 0.15rem;
  font-size: 0.5em;
  color: #4f4f4f;
  letter-spacing: 0.04em;
}

.pv-team-role {
  margin: 0 0 0.5rem;
  color: #9b7555;
}

.pv-team-licence {
  margin: 0 0 1rem;
  color: #4f4f4f;
}

.pv-team-bio {
  margin: 0 0 1.25rem;
}

.pv-team-more {
  color: #9b7555;
  text-decoration: underline;
}

/* Bio page */

.pv-bio-header {
  display: grid;
  grid-template-columns: minmax(0, 15rem) minmax(0, 1fr);
  grid-column-gap: 2.5rem;
  align-items: center;
}

.pv-bio-portrait {
  aspect-ratio: 4 / 5;
  max-width: 15rem;
  overflow: hidden;
  background-color: #e6e1dc;
  border: 1px solid #9b755533;
}

.pv-bio-portrait-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  display: block;
}

.pv-bio-identity h1 {
  margin: 0 0 0.5rem;
}

/* The credential block. Registration number plus a link to the public register
   is the single highest-trust element on a clinical bio page, so it sits above
   the prose and is visually distinct from it. */
.pv-credential-block {
  margin-bottom: 3rem;
  padding: 2rem;
  background-color: #fcf8f1;
  border: 1px solid #9b755533;
  border-left: 3px solid #9b7555;
}

.pv-credential-block h2 {
  margin: 0 0 1.25rem;
}

.pv-credential-list {
  margin: 0;
}

.pv-credential-row {
  display: grid;
  grid-template-columns: minmax(0, 12rem) minmax(0, 1fr);
  grid-column-gap: 1.5rem;
  padding: 0.6rem 0;
  border-bottom: 1px solid #9b755533;
}

.pv-credential-row:last-child {
  border-bottom: 0;
}

.pv-credential-row dt {
  margin: 0;
  font-size: 0.875rem;
  color: #4f4f4f;
}

.pv-credential-row dd {
  margin: 0;
  font-size: 1rem;
  color: #2e2e2e;
}

.pv-credential-verify {
  margin: 1.25rem 0 0;
}

.pv-credential-link {
  color: #9b7555;
  text-decoration: underline;
}

.pv-bio-prose {
  margin-bottom: 2.5rem;
}

.pv-bio-section {
  margin-top: 2.5rem;
  padding-top: 2rem;
  border-top: 1px solid #9b755533;
}

.pv-bio-section h2 {
  margin: 0 0 1rem;
}

.pv-bio-facts {
  margin: 0;
  padding: 0 0 0 1.1rem;
  list-style: disc;
}

.pv-bio-facts li {
  margin-bottom: 0.5rem;
  line-height: 1.5;
}

.pv-team-back {
  margin-top: 2.5rem;
}

.pv-team-back a {
  color: #9b7555;
  text-decoration: underline;
}

@media screen and (max-width: 1199px) {
  .pv-team-list.pv-team-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media screen and (max-width: 991px) {
  .pv-bio-header {
    grid-template-columns: minmax(0, 1fr);
    grid-row-gap: 1.5rem;
  }

  .pv-bio-portrait {
    max-width: 13rem;
  }
}

@media screen and (max-width: 767px) {
  .pv-team-list.pv-team-list {
    grid-template-columns: minmax(0, 1fr);
  }

  .pv-team-card-body.pv-team-card-body {
    padding: 1.25rem;
  }

  .pv-credential-block {
    padding: 1.5rem;
  }

  .pv-credential-row {
    grid-template-columns: minmax(0, 1fr);
    grid-row-gap: 0.25rem;
  }
}

/* Shopyflow marks an empty product metafield with sf-hide="1" and its own script
   hides the value div while leaving the <h3> label in place. The clone does not run
   that script, so reproduce the same rule statically. Verified against production:
   /products/calm/ renders "Age Group / Adults / Detailed ingredients / Flavor /
   Unflavored" - the label stays, only the empty value is suppressed. */
.product_metafield-desc[sf-hide="1"] {
  display: none;
}

/* Contextual entity links added into frozen page copy. Brown ink, underlined, so a
   patient can tell it is a link without the paragraph turning into a list of links.
   Capped at 5 per page and first-mention-only by the build, not by CSS. */
.pv-entity-link {
  color: #9b7555;
  text-decoration: underline;
  text-underline-offset: 0.15em;
}

.pv-entity-link:hover,
.pv-entity-link:focus-visible {
  text-decoration-thickness: 2px;
}

/* Webflow's .button carries no display rule of its own, so an <a class="button"> in a
   theme template computes to display:inline. Vertical margin is then ignored for layout
   while the button's padding still paints, so it overlapped the paragraph above it by
   ~16px on every glossary term and blog post. Measured on /glossary/fasting-insulin/:
   copy ended at y=1573, the button started at y=1557. */
.pv-at-previvo-link,
.pv-blog-service-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
}

/* The navbar is position:fixed with a transparent background, which is production's own
   behaviour. Production gets away with it because its nav text is white over dark hero
   imagery. Our read surfaces (blog, glossary, team, sitemap) run the light variant with
   BLACK nav text on a light ground, so scrolled body copy passed straight under the bar
   and collided with "Company" and "Programs". Give the bar the page's own ground on those
   surfaces only; at scroll 0 it is seamless against the hero. */
body.pv-read-surface .navbar-main_component {
  background-color: #f7f1ec;
  border-bottom: 1px solid #9b755533;
}

@supports (backdrop-filter: blur(6px)) {
  body.pv-read-surface .navbar-main_component {
    background-color: rgba(247, 241, 236, 0.92);
    backdrop-filter: blur(6px);
  }
}


/* Card internals: override the frozen .blog-card / .blog-image-wrapper / .w-inline-block
   geometry so the portrait fills the card edge to edge. */
.pv-team-card.pv-team-card {
  padding: 0;
  overflow: hidden;
}

/* The link must fill the card, or margin-top:auto on the footer link has no free space
   to distribute and every card's "Read full profile" sits wherever its copy ends. */
.pv-team-card-link.pv-team-card-link {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  width: 100%;
  min-height: 100%;
  max-width: none;
  padding: 0;
}

.pv-team-portrait.pv-team-portrait {
  width: 100%;
  max-width: none;
  aspect-ratio: 4 / 5;
  height: auto;
  overflow: hidden;
}

.pv-team-portrait-img.pv-team-portrait-img {
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: center top;
  display: block;
}

.pv-team-card-body.pv-team-card-body {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  padding: 1.5rem;
}

/* PROPOSED two-branch nav (inc/nav-two-branch.php). Revertible with the same flag. */
.previvo-branch-trigger {
  cursor: pointer;
}

.previvo-branch-trigger .navbar_arrow-icon {
  transition: transform 0.25s ease;
}

.previvo-branch-trigger.is-open .navbar_arrow-icon {
  transform: rotate(180deg);
}

/* Copied verbatim from the frozen stylesheet's .navbar_company-dropdown,
   .navbar_company-dropdown-wrapper and .menu-bg-gradinet-wrapper so the branch panels
   paint identically to Company. We cannot simply reuse those class names: the incumbent
   script calls querySelector('.navbar_company-dropdown') and our panels sit earlier in
   the DOM, so they would hijack its target and Company would stop opening.

   The gradient plate is 100vw x 100vh on purpose. Sizing it to the panel instead squashes
   the whole gradient, dark bottom included, into ~600px and the panel reads much darker
   than Company. */
.previvo-branch-menu {
  z-index: 99;
  background-color: var(--_primitives---colors--green, #788156);
  border-bottom-right-radius: 1rem;
  border-bottom-left-radius: 1rem;
  justify-content: center;
  align-items: center;
  height: 0;
  padding-top: 0;
  padding-bottom: 0;
  display: none;
  position: fixed;
  inset: 0% 0% auto;
  overflow: hidden;
}

.previvo-branch-grad {
  z-index: -1;
  pointer-events: none;
  mix-blend-mode: soft-light;
  width: 100vw;
  height: 100vh;
  position: absolute;
  inset: 0%;
}

.previvo-branch-grad img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.previvo-branch-inner {
  flex-flow: column;
  justify-content: center;
  align-items: center;
  width: 100%;
  max-width: 80rem;
  margin: 8rem auto 4rem;
  padding-left: 2.5rem;
  padding-right: 2.5rem;
  display: flex;
}

.previvo-branch-title {
  align-self: flex-start;
  margin-bottom: 1.5rem;
  padding-bottom: 1rem;
  width: 100%;
  font-size: 1.5rem;
  font-weight: 100;
  color: #ffffff;
  border-bottom: 1px solid rgba(255, 255, 255, 0.28);
}

.previvo-branch-columns {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  grid-column-gap: 2rem;
  grid-row-gap: 2rem;
}

.previvo-branch-menu .nav-menu_column-block {
  min-width: 0;
}

.previvo-branch-menu .h3_nav-menu_column {
  margin: 0 0 0.85rem;
  font-size: 0.8rem;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.72);
}

.previvo-branch-menu .nav-menu_column-ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

.previvo-branch-menu .nav-menu_column-li {
  margin-bottom: 0.5rem;
}

.previvo-branch-menu .nav-menu_column-link {
  display: flex;
  align-items: center;
  grid-column-gap: 0.5rem;
  color: #ffffff;
  text-decoration: none;
  line-height: 1.3;
}

.previvo-branch-menu .nav-menu_column-link:hover,
.previvo-branch-menu .nav-menu_column-link:focus-visible {
  text-decoration: underline;
  text-underline-offset: 0.15em;
}

.previvo-branch-menu .nav-menu_column-link:focus-visible {
  outline: 3px solid #ffffff;
  outline-offset: 3px;
}

.previvo-branch-menu .navbar-menu_icon {
  width: 16px;
  height: 16px;
  flex: 0 0 auto;
  filter: brightness(0) invert(1);
  opacity: 0.85;
}

.previvo-branch-contact {
  display: flex;
  align-self: flex-start;
  align-items: center;
  flex-wrap: wrap;
  width: 100%;
  grid-column-gap: 0.75rem;
  margin-top: 2rem;
  padding-top: 1.25rem;
  border-top: 1px solid rgba(255, 255, 255, 0.28);
}

.previvo-branch-contact-label {
  margin-right: 0.25rem;
  font-family: "Ivy Mode", Arial, sans-serif;
  font-weight: 100;
  font-size: 1.1rem;
  color: #ffffff;
}

.previvo-branch-menu .nav-menu_contact-link {
  color: #ffffff;
}

.previvo-branch-menu .nav-menu_contact-divider {
  width: 1px;
  height: 14px;
  background-color: rgba(255, 255, 255, 0.35);
}

@media screen and (max-width: 1199px) {
  .previvo-branch-columns {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media screen and (max-width: 767px) {
  .previvo-branch-inner {
    padding: 6rem 1.5rem 1.5rem;
  }

  .previvo-branch-columns {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (prefers-reduced-motion: reduce) {
  .previvo-branch-trigger .navbar_arrow-icon {
    transition: none;
  }
}

/* Practitioner profile links. rel="me" so the link is a machine-readable identity
   claim as well as a human one, matching the Person.sameAs in the page's schema. */
.pv-bio-profiles {
  display: flex;
  flex-wrap: wrap;
  grid-column-gap: 1.25rem;
  grid-row-gap: 0.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.pv-bio-profile-link {
  color: #9b7555;
  text-decoration: underline;
  text-underline-offset: 0.15em;
}

/* ---------------------------------------------------------------------------
   Mobile tap targets.

   The mobile audit found 47 sub-44px controls at 375x844. Apple asks for 44px,
   Google for 48px. None of it is clone-specific: production ships the same
   boxes. But 90% of this site's traffic is mobile, so the frozen sizes are
   worth correcting.

   A hit area can only grow into empty space, so every expansion below is sized
   against the clearance actually measured around that control, not set to 44 by
   wish. Measured at 375x844 on /team/:

     .navbar_brand          128x40   24px above, 133px below
     .menu-open-btn         107x40   top of page, 620px below
     .button.is-link        134x24   88px above,  95px below
     .footer-social-link     24x24   16px between siblings
     .footer-legal-link     284x24   16px above and below
     .footer-add_link-item   Nx16    7px row-gap  (program columns)
     .nav-menu_column-link   Nx20    4px row-gap

   Two techniques, and the difference matters.

   Controls with room to grow get an ::after overlay: absolutely positioned,
   centred, no content, no background. It enlarges the touch region and
   contributes nothing to layout, so not one pixel of the frozen design moves.
   The Webflow stylesheet defines no ::before/::after on any of these classes,
   so there is nothing to clobber, and .hover-effect is driven by GSAP rather
   than a pseudo-element.

   The two link lists cannot be fixed that way. Their rows sit on a 24px pitch
   (20px link + 4px gap) and a 26px pitch (16px + 10px), so an overlay would
   have two neighbouring links sharing pixels long before it reached 44. The
   only honest fix is to raise the pitch, which makes both surfaces taller:
   roughly +20px across the visible menu rows and +18px across 35 footer links.
   That is affordable because both already scroll well past the viewport, and it
   is the one part of this change a visitor will actually see. Revert the two
   row-gap rules if the client prefers the tighter lists.

   Scoped to <=991px, Webflow's own tablet breakpoint, so the desktop dropdown
   keeps its density. Doubled class selectors throughout, since the frozen
   stylesheet outranks a single class.
   --------------------------------------------------------------------------- */

@media (max-width: 991px) {
  .button.is-link.is-link,
  .footer-social-link.footer-social-link,
  .footer-legal-link.footer-legal-link,
  .footer-add_link-item.footer-add_link-item > a,
  .nav-menu_column-link.nav-menu_column-link {
    position: relative;
  }

  /* A bare inline anchor gives a pseudo-element an awkward containing block.
     inline-block gives it a clean one and changes nothing a reader can see. */
  .footer-add_link-item.footer-add_link-item > a {
    display: inline-block;
  }

  .button.is-link.is-link::after,
  .footer-social-link.footer-social-link::after,
  .footer-legal-link.footer-legal-link::after,
  .footer-add_link-item.footer-add_link-item > a::after,
  .nav-menu_column-link.nav-menu_column-link::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 0;
    right: 0;
    height: 44px;
    transform: translateY(-50%);
    /* hit area, not decoration: no background, no border, no pointer cursor */
  }

  /* The two navbar controls cannot use the overlay. Their .padding-global ancestor
     carries overflow:hidden, which the frozen stylesheet applies to EVERY
     .padding-global to stop decorative elements causing horizontal scroll, so a
     44px overlay on a 40px bar gets clipped straight back to 40. Opting that one
     container out risks the scroll the rule exists to prevent. Growing the two
     controls to 44 instead is predictable: the navbar row goes from 40px to 44px
     and nothing else moves. */
  .navbar_brand.navbar_brand,
  .menu-open-btn.menu-open-btn {
    min-height: 44px;
    display: flex;
    align-items: center;
  }

  /* Two theme-authored lists, so they get sized properly rather than overlaid.
     The glossary related-terms links measured 22px and the blog pagination 25px.
     Neither belongs to the frozen Webflow design, so there is nothing to preserve
     and inline-flex with a min-height is the honest fix. */
  .pv-related-link.pv-related-link,
  .pv-blog-topic-link.pv-blog-topic-link,
  .pv-bio-profile-link.pv-bio-profile-link {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
  }

  .pv-pagination .page-numbers {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
  }

  /* 16px between the two icons, so the box may widen by 8px a side and no more.
     Vertically there is 95px, so the height takes the full 44. */
  .footer-social-link.footer-social-link::after {
    left: -8px;
    right: -8px;
  }

  /* 16px of clearance above and below, so 24 + 16 = 40 is the ceiling. */
  .footer-legal-link.footer-legal-link::after {
    height: 40px;
  }

  /* The visible change: raise both list pitches to 44px so the hit areas can
     reach the floor without two links claiming the same pixels.

     The Company column needs all three selectors. It is .is-grid.is-3rows, which
     the frozen stylesheet scores at 0,3,0 and re-imposes an 11px gap with, so a
     doubled class alone (0,2,0) loses and those links stay on a 26px pitch. */
  .nav-menu_column-ul.nav-menu_column-ul {
    row-gap: 24px;
  }

  .footer-additional_links-list.footer-additional_links-list,
  .footer-additional_links-list.footer-additional_links-list.is-grid,
  .footer-additional_links-list.footer-additional_links-list.is-grid.is-3rows {
    row-gap: 28px;
  }
}
