/* ==========================================================================
   HEG — Components
   Named page blocks. Each corresponds to an HTML partial in /src/components.
   Depends on tokens.css and base.css.

   Naming: .heg-block, .heg-block__element, .heg-block--modifier
   ========================================================================== */


/* ==========================================================================
   Section header — eyebrow + heading + lead. Used at the top of most sections.

   ALIGNMENT RULE FOR THE WHOLE SITE
   ---------------------------------
   A heading is centred when it stands alone above full-width content, and left
   when it is one column of a two-column block.

     centred : .heg-hero, .heg-pagehead, .heg-cta, .heg-sechead,
               .heg-philosophy__statement
     left    : .heg-problem, .heg-founder, .heg-story, .heg-contact,
               .heg-recscope, .heg-recform__lede, .heg-industries-note,
               .heg-servicedetail — every one of them sits beside a body column,
               where a centred title would float away from the text it belongs to.

   Before this, .heg-sechead was left everywhere except the Home service grid,
   which carried a --center modifier. One centred header among six left ones is
   what made the site look unresolved. The modifier is gone; do not reintroduce
   it. If a header needs to be left-aligned it is not a .heg-sechead, it is one
   column of a two-column block.
   ========================================================================== */

.heg-sechead {
  margin-bottom: var(--heg-space-block);
  text-align: center;
}
.heg-sechead__title { margin-bottom: var(--heg-s-4); max-width: 30ch; margin-inline: auto; }
.heg-sechead__lead  { max-width: 46rem; margin-inline: auto; margin-bottom: 0; }
.heg-sechead .heg-rule { margin-inline: auto; }


/* ==========================================================================
   CTA banner
   The brief requires one consistent CTA on every page. This is that block —
   defined once, reused everywhere. Edit here, and it changes site-wide.
   ========================================================================== */

.heg-cta {
  background:
    radial-gradient(ellipse at 50% 0%, var(--heg-navy-mid) 0%, transparent 65%),
    var(--heg-navy);
  padding-block: var(--heg-space-section);
  text-align: center;
}

.heg-cta__title {
  font-size: var(--heg-fs-h2);
  color: var(--heg-on-dark);
  margin: 0 auto var(--heg-s-4);
  max-width: 30ch;
}

.heg-cta__lead {
  color: var(--heg-on-dark-muted);
  max-width: 42ch;
  margin: 0 auto var(--heg-s-6);
}

.heg-cta__actions {
  display: flex;
  gap: var(--heg-s-4);
  justify-content: center;
  flex-wrap: wrap;
}

@media (max-width: 480px) {
  .heg-cta__actions { flex-direction: column; align-items: stretch; }
  .heg-cta__actions .heg-btn { width: 100%; }
}


/* ==========================================================================
   Crest — inline SVG lockup used on dark grounds (coming soon, footer)
   ========================================================================== */

.heg-crest { width: clamp(92px, 13vw, 124px); height: auto; margin-inline: auto; }
.heg-crest__arch { fill: none; stroke: var(--heg-gold); stroke-width: 4; }
.heg-crest__text { font-family: var(--heg-display); font-weight: var(--heg-fw-display);
                   font-size: 68px; letter-spacing: 1px; }
.heg-crest__letter { fill: var(--heg-cream); }
.heg-crest__letter--gold { fill: var(--heg-gold); }


/* ==========================================================================
   Coming soon — full-viewport holding page.  [heg_coming_soon]

   The letter-spaced lines do carry a leading pad. Chrome does not trim the
   trailing letter-space on centred text: measured, the wordmark sat 2.5px left
   of the gold rule beneath it. One letter-space of padding-inline-start puts
   the two back on the same axis.
   ========================================================================== */

.heg-cs {
  position: relative; left: 50%; width: 100vw; margin-left: -50vw;
  min-height: 100vh;
  display: flex; align-items: center; justify-content: center;
  background:
    radial-gradient(ellipse at 50% 0%, var(--heg-navy-mid) 0%, transparent 60%),
    var(--heg-navy);
  padding: clamp(2.5rem, 7vw, 5rem) var(--heg-gutter);
  text-align: center;
  overflow: hidden;
}
.heg-cs::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(ellipse at 50% 50%, transparent 55%, rgba(6, 16, 28, .42) 100%);
}
.heg-cs__inner { position: relative; z-index: 1; max-width: 46rem; width: 100%; }

.heg-cs__crest { margin-bottom: clamp(2rem, 4vw, 2.75rem); }

.heg-cs__wordmark {
  font-family: var(--heg-display); font-weight: var(--heg-fw-display);
  font-size: clamp(2.1rem, 6.5vw, 3.6rem); line-height: 1;
  letter-spacing: var(--heg-ls-wordmark); text-transform: uppercase;
  padding-inline-start: var(--heg-ls-wordmark);
  color: var(--heg-cream); margin: 0 0 .55rem;
}
.heg-cs__rule {
  width: min(19rem, 72%); height: 1px; margin: 0 auto .7rem;
  background: linear-gradient(90deg, transparent, var(--heg-gold) 22%, var(--heg-gold) 78%, transparent);
}
.heg-cs__wordmark-sub {
  font-family: var(--heg-display); font-weight: var(--heg-fw-display);
  font-size: clamp(.78rem, 2.1vw, 1.05rem);
  letter-spacing: .36em; text-transform: uppercase;
  padding-inline-start: .36em;
  color: var(--heg-cream); margin: 0; opacity: .92;
}

.heg-cs__tagline {
  font-family: var(--heg-display); font-weight: var(--heg-fw-display);
  font-size: clamp(1.15rem, 3.1vw, 1.6rem); line-height: 1.35;
  color: var(--heg-gold); margin: clamp(2.75rem, 6vw, 3.75rem) 0 0;
}

.heg-cs__body {
  font-family: var(--heg-body); font-weight: var(--heg-fw-light);
  font-size: clamp(.94rem, 1.9vw, 1.06rem); line-height: 1.75;
  color: var(--heg-on-dark-muted); max-width: 34rem; margin: 1.15rem auto 0;
}

.heg-cs__contact {
  font-family: var(--heg-body); font-size: .92rem;
  margin-top: clamp(2.5rem, 5vw, 3.25rem);
}
.heg-cs__contact a {
  color: var(--heg-cream); border-bottom: 1px solid var(--heg-border-gold);
  padding-bottom: 2px;
  transition: color var(--heg-dur) var(--heg-ease), border-color var(--heg-dur) var(--heg-ease);
}
.heg-cs__contact a:hover { color: var(--heg-gold); border-bottom-color: var(--heg-gold); }
.heg-cs__dot { color: var(--heg-on-dark-faint); margin: 0 .85rem; }

.heg-cs__foot {
  font-family: var(--heg-body); font-size: var(--heg-fs-xs);
  letter-spacing: .13em; text-transform: uppercase;
  padding-inline-start: .13em;
  color: var(--heg-on-dark-faint); margin: clamp(3rem, 7vw, 4.5rem) 0 0;
}

@media (max-width: 480px) {
  .heg-cs__wordmark { letter-spacing: .1em; padding-inline-start: .1em; }
  .heg-cs__wordmark-sub { letter-spacing: .26em; padding-inline-start: .26em; }
  .heg-cs__dot { display: block; height: 0; margin: .55rem 0; overflow: hidden; }
}


/* ==========================================================================
   To come — see /docs/superpowers/specs for the full page breakdown
   --------------------------------------------------------------------------
   .heg-hero              Home hero
   .heg-problem           "The problem we solve"
   .heg-service-grid      5 service cards, anchor-linked to /services
   .heg-why               "Why HEG"
   .heg-founder           Founder teaser
   .heg-testimonials      Placeholder at launch
   .heg-industries        6 industry blocks
   .heg-casestudy         Challenge / implemented / result
   ========================================================================== */


/* ==========================================================================
   Home hero  [heg_hero]
   ========================================================================== */

.heg-hero {
  background:
    radial-gradient(ellipse at 50% 0%, var(--heg-navy-mid) 0%, transparent 62%),
    var(--heg-navy);
  padding-block: clamp(5rem, 12vw, 9rem);
  text-align: center;
}
.heg-hero__inner { max-width: 54rem; }
.heg-hero__eyebrow { color: var(--heg-gold); }

.heg-hero__title {
  font-size: var(--heg-fs-h1);
  line-height: var(--heg-lh-tight);
  color: var(--heg-on-dark);
  margin: 0;
}
.heg-hero__rule { margin-block: var(--heg-s-5); }

.heg-hero__lead {
  font-size: var(--heg-fs-lead);
  font-weight: var(--heg-fw-light);
  line-height: 1.6;
  color: var(--heg-on-dark-muted);
  max-width: 38rem;
  margin: 0 auto;
}

.heg-hero__actions {
  display: flex; gap: var(--heg-s-4);
  justify-content: center; flex-wrap: wrap;
  margin-top: var(--heg-s-7);
}
@media (max-width: 480px) {
  .heg-hero__actions { flex-direction: column; align-items: stretch; }
  .heg-hero__actions .heg-btn { width: 100%; }
}


/* ==========================================================================
   The problem we solve  [heg_problem]
   ========================================================================== */

.heg-problem__inner {
  display: grid;
  grid-template-columns: 5fr 7fr;
  gap: clamp(2rem, 6vw, 5rem);
  align-items: start;
}
.heg-problem__title {
  font-size: var(--heg-fs-h2);
  margin: 0;
  max-width: 16ch;
}
.heg-problem__body p { color: var(--heg-ink-muted); }
.heg-problem__body p:last-child {
  color: var(--heg-ink);
  font-family: var(--heg-display);
  font-weight: var(--heg-fw-display);
  font-size: var(--heg-fs-h3);
  margin-top: var(--heg-s-5);
}
@media (max-width: 860px) {
  .heg-problem__inner { grid-template-columns: 1fr; }
  .heg-problem__title { max-width: none; }
}


/* ==========================================================================
   Service card grid  [heg_service_grid]
   ========================================================================== */

.heg-services__grid {
  list-style: none; margin: 0; padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr));
  gap: var(--heg-s-5);
}

/* Five cards divide awkwardly. On desktop lay them on a six-column grid so the
   row of three sits above a centred row of two, rather than 4 + 1 stranded. */
@media (min-width: 1025px) {
  .heg-services__grid { grid-template-columns: repeat(6, 1fr); }
  .heg-service-card { grid-column: span 2; }
  .heg-service-card:nth-child(4) { grid-column: 2 / span 2; }
  .heg-service-card:nth-child(5) { grid-column: 4 / span 2; }
}

.heg-service-card { display: flex; }

/* Every card on the site shares this chassis: white ground, hairline edge, a
   2px gold rule along the top. Service cards, industry cards, case cards and
   recruitment routes all used to be drawn differently, including one with a
   gold stripe down its left edge. One recipe, four contents. */
.heg-service-card__link,
.heg-industry,
.heg-case,
.heg-recroute {
  background: var(--heg-white);
  border: var(--heg-hairline) solid var(--heg-border);
  border-top: 2px solid var(--heg-gold);
  border-radius: var(--heg-radius);
  padding: clamp(1.5rem, 3vw, 2.25rem);
}

.heg-service-card__link {
  display: flex; flex-direction: column;
  width: 100%; height: 100%;
  color: inherit;
  transition: border-color var(--heg-dur) var(--heg-ease),
              box-shadow var(--heg-dur) var(--heg-ease),
              transform var(--heg-dur) var(--heg-ease);
}
.heg-service-card__link:hover,
.heg-service-card__link:focus-visible {
  border-color: var(--heg-border-gold);
  border-top-color: var(--heg-gold);
  box-shadow: var(--heg-shadow-md);
  transform: translateY(-3px);
  color: inherit;
}

.heg-service-card__num {
  font-family: var(--heg-display);
  font-weight: var(--heg-fw-display);
  font-size: 1.6rem;
  line-height: 1;
  color: var(--heg-gold-ink);   /* the brand gold is 2.6:1 on white */
  margin-bottom: var(--heg-s-4);
}

.heg-service-card__title {
  font-size: var(--heg-fs-h4);
  font-family: var(--heg-display);
  font-weight: var(--heg-fw-display);
  line-height: 1.3;
  margin: 0 0 var(--heg-s-3);
  color: var(--heg-ink);
}

.heg-service-card__text {
  font-size: var(--heg-fs-sm);
  line-height: 1.65;
  color: var(--heg-ink-muted);
  margin: 0 0 var(--heg-s-5);
  max-width: none;
}

.heg-service-card__more {
  margin-top: auto;
  font-family: var(--heg-body);
  font-size: var(--heg-fs-xs);
  font-weight: var(--heg-fw-semi);
  letter-spacing: var(--heg-ls-button);
  text-transform: uppercase;
  color: var(--heg-gold-ink);
  transition: color var(--heg-dur) var(--heg-ease);
}
.heg-service-card__link:hover .heg-service-card__more { color: var(--heg-gold); }


/* ==========================================================================
   Why HEG  [heg_why_heg]
   ========================================================================== */

.heg-why__list {
  list-style: none; margin: 0; padding: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(1.75rem, 4vw, 3rem);
}
@media (min-width: 700px) {
  .heg-why__list { grid-template-columns: repeat(2, 1fr); }  /* 2x2, not 3 + 1 */
}
.heg-why__item { padding-top: var(--heg-s-5); border-top: var(--heg-hairline) solid var(--heg-gold); }
.heg-why__title {
  font-size: var(--heg-fs-h4);
  font-family: var(--heg-display);
  font-weight: var(--heg-fw-display);
  color: var(--heg-on-dark);
  margin: 0 0 var(--heg-s-3);
}
.heg-why__text {
  font-size: var(--heg-fs-sm);
  line-height: 1.7;
  color: var(--heg-on-dark-muted);
  margin: 0; max-width: none;
}


/* ==========================================================================
   Founder teaser  [heg_founder_teaser]
   ========================================================================== */

.heg-founder__inner {
  display: grid;
  grid-template-columns: 5fr 7fr;
  gap: clamp(2rem, 6vw, 4.5rem);
  align-items: center;
}
.heg-founder__media,
.heg-story__media { padding: 10px; }   /* clearance for the portrait's outer rule */
/* ==========================================================================
   Images and Elementor

   Elementor's frontend.min.css ships

       .elementor img { border-radius: 0; border-style: none; box-shadow: none }

   at specificity (0,1,1), and it is enqueued after this file. Any radius,
   frame or shadow we set on an image at (0,1,0) is silently discarded on
   every Elementor-built page, which is all of them. It went unnoticed while
   the only radius was 2px.

   So every image rule below is scoped to its block, putting it at (0,2,x).
   Do not "simplify" these selectors back down to the bare element class.
   ========================================================================== */

.heg-founder .heg-founder__photo,
.heg-founder .heg-founder__placeholder {
  width: 100%; aspect-ratio: 4 / 5; object-fit: cover;
  border-radius: var(--heg-radius-portrait);
}
.heg-founder__placeholder {
  display: grid; place-items: center;
  background: var(--heg-cream-deep);
  border: var(--heg-hairline) dashed var(--heg-border-gold);
  color: var(--heg-ink-faint);
  font-family: var(--heg-body);
  font-size: var(--heg-fs-xs);
  letter-spacing: var(--heg-ls-eyebrow);
  text-transform: uppercase;
  text-align: center;
  line-height: 1.9;
}
/* The portrait frame.
   Two gold rules of equal weight: one drawn tight to the image in the deeper
   gold, one held 7px off it in the brand gold. Equal weight is the point. At a
   hairline the outer rule read as an afterthought; matched to the inner one the
   pair reads as a mounted print. Both follow the rounded corner. The outer rule
   is an `outline`, which takes no layout space, so the grid column is
   unchanged; the media column carries a little padding for its clearance. */
.heg-founder .heg-founder__photo,
.heg-story .heg-story__photo {
  border: var(--heg-frame) solid var(--heg-gold-deep);
  outline: var(--heg-frame-ring) solid var(--heg-gold);
  outline-offset: 7px;
  box-shadow: var(--heg-shadow-md);
}

/* The outer ring needs room to breathe, and on a narrow phone there is none. */
@media (max-width: 480px) {
  .heg-founder .heg-founder__photo,
  .heg-story .heg-story__photo { outline: 0; }
}

.heg-founder__title { font-size: var(--heg-fs-h2); margin: 0; }
.heg-founder__body p { color: var(--heg-ink-muted); }
.heg-founder__cta { margin-top: var(--heg-s-5); }

@media (max-width: 860px) {
  .heg-founder__inner { grid-template-columns: 1fr; }
  .heg-founder__media { max-width: 22rem; }
}


/* ==========================================================================
   Site header — sticky, navy, replaces Astra's own
   ========================================================================== */

.heg-skip:focus {
  position: fixed; top: .5rem; left: .5rem; z-index: 100;
  width: auto; height: auto; clip: auto; margin: 0;
  padding: .75rem 1.25rem; background: var(--heg-gold); color: var(--heg-navy);
  font-weight: var(--heg-fw-semi);
}

.heg-header {
  position: sticky; top: 0; z-index: 50;
  background: var(--heg-navy);
  border-bottom: var(--heg-hairline) solid transparent;
  transition: border-color var(--heg-dur) var(--heg-ease),
              box-shadow var(--heg-dur) var(--heg-ease);
}
.heg-header.is-scrolled {
  border-bottom-color: var(--heg-border-on-dark);
  box-shadow: var(--heg-shadow-header);
}

.heg-header__inner {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--heg-s-5);
  min-height: 4.75rem;
}

/* Brand lockup */
.heg-header__brand { display: flex; align-items: center; gap: .85rem; color: inherit; }
.heg-header__crest { width: 2.4rem; flex: none; margin: 0; }
.heg-header__lockup { display: flex; flex-direction: column; line-height: 1; }
.heg-header__wordmark {
  font-family: var(--heg-display); font-weight: var(--heg-fw-display);
  font-size: 1.15rem; letter-spacing: .12em; text-transform: uppercase;
  color: var(--heg-cream);
}
.heg-header__wordmark-sub {
  font-family: var(--heg-body); font-size: .64rem; font-weight: var(--heg-fw-medium);
  letter-spacing: .24em; text-transform: uppercase;
  color: var(--heg-on-dark-muted); margin-top: .3rem;
}

/* Menu */
.heg-header__nav { display: flex; align-items: center; gap: var(--heg-s-6); }
.heg-menu {
  display: flex; align-items: center; gap: var(--heg-s-5);
  list-style: none; margin: 0; padding: 0;
}
.heg-menu a {
  font-family: var(--heg-body); font-size: .82rem; font-weight: var(--heg-fw-medium);
  letter-spacing: .04em;
  color: var(--heg-on-dark-muted);
  padding-block: .35rem;
  border-bottom: 1px solid transparent;
  transition: color var(--heg-dur) var(--heg-ease), border-color var(--heg-dur) var(--heg-ease);
}
.heg-menu a:hover,
.heg-menu .current-menu-item > a { color: var(--heg-cream); border-bottom-color: var(--heg-gold); }

.heg-header__actions { display: flex; align-items: center; gap: var(--heg-s-4); }
.heg-header__cta { padding: .85em 1.5em; font-size: .74rem; }

/* Language switcher (renders only when Polylang is active) */
.heg-lang { display: flex; gap: .25rem; list-style: none; margin: 0; padding: 0;
            font-family: var(--heg-body); font-size: .72rem; letter-spacing: .1em; }
.heg-lang__item a {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 2.75rem; min-height: 2.75rem;   /* 44px, the minimum tap target */
  color: var(--heg-on-dark-muted);
}
.heg-lang__item.is-current a { color: var(--heg-gold); }

/* Toggle */
.heg-header__toggle {
  display: none; background: none; border: 0; cursor: pointer;
  width: 2.75rem; height: 2.75rem; padding: 0;
  align-items: center; justify-content: center;
}
.heg-header__bars, .heg-header__bars::before, .heg-header__bars::after {
  display: block; width: 1.5rem; height: 1.5px; background: var(--heg-cream);
  transition: transform var(--heg-dur) var(--heg-ease), opacity var(--heg-dur) var(--heg-ease);
}
.heg-header__bars { position: relative; }
.heg-header__bars::before, .heg-header__bars::after { content: ""; position: absolute; left: 0; }
.heg-header__bars::before { top: -.45rem; }
.heg-header__bars::after  { top:  .45rem; }
.is-nav-open .heg-header__bars { background: transparent; }
.is-nav-open .heg-header__bars::before { top: 0; transform: rotate(45deg); }
.is-nav-open .heg-header__bars::after  { top: 0; transform: rotate(-45deg); }

/* The eight-item menu plus the standing CTA needs roughly 1100px beside the
   brand lockup. Below ~1250px it wraps and pushes the page into horizontal
   scroll, so the header collapses to the toggle earlier than the site's
   general tablet breakpoint. */
@media (max-width: 1249px) {
  .heg-header__toggle { display: flex; }
  .heg-header__nav {
    position: absolute; left: 0; right: 0; top: 100%;
    flex-direction: column; align-items: stretch; gap: 0;
    background: var(--heg-navy-deep);
    border-top: var(--heg-hairline) solid var(--heg-border-on-dark);
    padding: var(--heg-s-4) var(--heg-gutter) var(--heg-s-6);
    max-height: 0; overflow: hidden; visibility: hidden;
    transition: max-height var(--heg-dur-slow) var(--heg-ease), visibility 0s linear var(--heg-dur-slow);
  }
  .is-nav-open .heg-header__nav {
    max-height: 80vh; visibility: visible; overflow-y: auto;
    transition: max-height var(--heg-dur-slow) var(--heg-ease), visibility 0s;
  }
  .heg-menu { flex-direction: column; align-items: stretch; gap: 0; }
  .heg-menu a {
    display: block; padding: .9rem 0; font-size: .95rem;
    border-bottom: var(--heg-hairline) solid var(--heg-border-on-dark);
  }
  .heg-menu a:hover, .heg-menu .current-menu-item > a { border-bottom-color: var(--heg-gold); }
  .heg-header__actions { flex-direction: column; align-items: stretch; gap: var(--heg-s-4);
                         margin-top: var(--heg-s-5); }
  .heg-header__cta { text-align: center; }
  .heg-lang { justify-content: center; }
}


/* ==========================================================================
   Site footer
   ========================================================================== */

.heg-footer { background: var(--heg-navy-deep); color: var(--heg-on-dark-muted); }

.heg-footer__inner {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr;
  gap: clamp(2rem, 5vw, 4rem);
  padding-block: clamp(3rem, 7vw, 5rem);
}
@media (max-width: 860px) { .heg-footer__inner { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .heg-footer__inner { grid-template-columns: 1fr; } }

.heg-footer__crest { width: 3.25rem; margin: 0 0 var(--heg-s-4); }
.heg-footer__tagline {
  font-family: var(--heg-display); font-weight: var(--heg-fw-display);
  font-size: var(--heg-fs-h4); color: var(--heg-cream); margin: 0 0 var(--heg-s-3);
}
.heg-footer__blurb { font-size: var(--heg-fs-sm); line-height: 1.75; margin: 0; max-width: 30ch; }

.heg-footer__heading {
  font-family: var(--heg-body); font-size: var(--heg-fs-xs); font-weight: var(--heg-fw-semi);
  letter-spacing: var(--heg-ls-eyebrow); text-transform: uppercase;
  color: var(--heg-gold); margin: 0 0 var(--heg-s-4);
}

.heg-footer__menu, .heg-footer__list { list-style: none; margin: 0; padding: 0; }
.heg-footer__menu li, .heg-footer__list li { margin-bottom: .35rem; }
.heg-footer__menu a, .heg-footer__list a {
  display: inline-block;
  padding-block: .28rem;          /* 24px tall, the WCAG 2.5.8 minimum */
  font-size: var(--heg-fs-sm);
  color: var(--heg-on-dark-muted);
}
.heg-footer__menu a:hover, .heg-footer__list a:hover { color: var(--heg-gold); }

.heg-footer__cta { margin-top: var(--heg-s-4); font-size: .72rem; padding: .8em 1.4em; }

.heg-footer__bar { border-top: var(--heg-hairline) solid var(--heg-border-on-dark); }
.heg-footer__bar-inner {
  display: flex; justify-content: space-between; align-items: center;
  gap: var(--heg-s-4); flex-wrap: wrap;
  padding-block: var(--heg-s-5);
}
.heg-footer__bar p { margin: 0; font-size: var(--heg-fs-xs); color: var(--heg-on-dark-faint); max-width: none; }
/* One item before Complianz, three after it, so the row spaces itself rather
   than relying on separators that would be wrong at one item. */
.heg-footer__legal { display: flex; flex-wrap: wrap; gap: var(--heg-s-2) var(--heg-s-5); }
.heg-footer__legal a { display: inline-block; padding-block: .3rem; color: var(--heg-on-dark-muted); }
.heg-footer__legal a:hover { color: var(--heg-gold); }
/* Complianz renders its consent link as a bare <a>; match the two beside it. */
.heg-footer__consent a { color: var(--heg-on-dark-muted); border-bottom: 0; }
.heg-footer__consent a:hover { color: var(--heg-gold); }
/* Complianz ships a no-JavaScript fallback sentence next to the consent link,
   written for AMP pages. It is not hidden by anything on a normal page, so a
   paragraph of plugin help text lands in the footer legal row. The link itself
   needs JavaScript to do anything, so there is nothing to fall back to here. */
.heg-footer__consent #cmplz-manage-consent-container-nojavascript { display: none; }


/* ==========================================================================
   Page header  [heg_page_header]
   Interior-page counterpart to the Home hero: shorter, same navy ground.
   ========================================================================== */

.heg-pagehead {
  background:
    radial-gradient(ellipse at 50% 0%, var(--heg-navy-mid) 0%, transparent 65%),
    var(--heg-navy);
  padding-block: clamp(3.5rem, 8vw, 6rem);
}
.heg-pagehead__inner { max-width: 48rem; text-align: center; }
.heg-pagehead__eyebrow { color: var(--heg-gold); }
.heg-pagehead__title { color: var(--heg-on-dark); margin: 0; }
.heg-pagehead__rule { margin: var(--heg-s-5) auto; }
.heg-pagehead__lead {
  font-size: var(--heg-fs-lead);
  font-weight: var(--heg-fw-light);
  line-height: 1.6;
  color: var(--heg-on-dark-muted);
  max-width: 38rem;
  margin: 0 auto;
}


/* ==========================================================================
   Services detail  [heg_services_detail]
   ========================================================================== */

.heg-servicedetail__inner {
  display: grid;
  grid-template-columns: 5fr 7fr;
  gap: clamp(2rem, 6vw, 5rem);
  align-items: start;
}

.heg-servicedetail__num {
  display: block;
  font-family: var(--heg-display);
  font-weight: var(--heg-fw-display);
  font-size: 1.5rem;
  line-height: 1;
  color: var(--heg-gold-ink);
  margin-bottom: var(--heg-s-4);
}

.heg-servicedetail__title {
  font-size: var(--heg-fs-h2);
  margin: 0;
  max-width: 18ch;
}

.heg-servicedetail__body .heg-lead { margin-bottom: var(--heg-s-5); }

.heg-servicedetail__list { list-style: none; margin: 0; padding: 0; }
.heg-servicedetail__list li {
  position: relative;
  padding-left: 1.75rem;
  padding-block: .65rem;
  border-top: var(--heg-hairline) solid var(--heg-border);
  font-size: var(--heg-fs-sm);
  line-height: 1.65;
  color: var(--heg-ink-muted);
}
.heg-servicedetail__list li:last-child { border-bottom: var(--heg-hairline) solid var(--heg-border); }
.heg-servicedetail__list li::before {
  content: "";
  position: absolute;
  left: .1rem;
  top: 1.35rem;
  width: .85rem;
  height: 1px;
  background: var(--heg-gold);
}

/* The sticky header would otherwise cover an anchored section's heading. */
.heg-servicedetail__item { scroll-margin-top: 5.5rem; }

@media (max-width: 860px) {
  .heg-servicedetail__inner { grid-template-columns: 1fr; }
  .heg-servicedetail__title { max-width: none; }
}


/* ==========================================================================
   About: founder story  [heg_about_story]
   ========================================================================== */

.heg-story__inner {
  display: grid;
  grid-template-columns: 5fr 7fr;
  gap: clamp(2rem, 6vw, 4.5rem);
  align-items: start;
}
.heg-story .heg-story__photo,
.heg-story .heg-story__placeholder {
  width: 100%; aspect-ratio: 4 / 5; object-fit: cover;
  border-radius: var(--heg-radius-portrait);
  position: sticky; top: 6.5rem;
}
.heg-story__placeholder {
  display: grid; place-items: center;
  background: var(--heg-cream-deep);
  border: var(--heg-hairline) dashed var(--heg-border-gold);
  color: var(--heg-ink-faint);
  font-family: var(--heg-body); font-size: var(--heg-fs-xs);
  letter-spacing: var(--heg-ls-eyebrow); text-transform: uppercase;
  text-align: center; line-height: 1.9;
}
.heg-story__title { font-size: var(--heg-fs-h2); margin: 0; }
.heg-story__body p { color: var(--heg-ink-muted); }
.heg-story__body .heg-lead { color: var(--heg-ink); }

@media (max-width: 860px) {
  .heg-story__inner { grid-template-columns: 1fr; }
  .heg-story__media { max-width: 22rem; }
  .heg-story__photo, .heg-story__placeholder { position: static; }
}


/* ==========================================================================
   About: career journey  [heg_about_journey]
   ========================================================================== */

.heg-journey__list {
  list-style: none; margin: 0; padding: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
}
.heg-journey__item {
  display: grid;
  grid-template-columns: 18rem 1fr;
  gap: clamp(1rem, 4vw, 3rem);
  padding-block: var(--heg-s-5);
  border-top: var(--heg-hairline) solid var(--heg-border-on-dark);
}
.heg-journey__item:last-child { border-bottom: var(--heg-hairline) solid var(--heg-border-on-dark); }
.heg-journey__title {
  font-size: var(--heg-fs-h4);
  font-family: var(--heg-display); font-weight: var(--heg-fw-display);
  color: var(--heg-gold); margin: 0;
}
.heg-journey__text {
  font-size: var(--heg-fs-sm); line-height: 1.7;
  color: var(--heg-on-dark-muted); margin: 0; max-width: none;
}
@media (max-width: 700px) {
  .heg-journey__item { grid-template-columns: 1fr; gap: .5rem; }
}


/* ==========================================================================
   About: philosophy  [heg_about_philosophy]
   ========================================================================== */

/* Constrain the quote itself, not the wrapper: a ch on the wrapper resolves
   against the inherited 16px body size, which made this column far too narrow
   for 47px display type. */
.heg-philosophy__statement { margin-bottom: var(--heg-space-block); text-align: center; }
.heg-philosophy__quote {
  font-family: var(--heg-display);
  font-weight: var(--heg-fw-display);
  font-size: var(--heg-fs-h2);
  line-height: 1.25;
  color: var(--heg-ink);
  margin-inline: auto;
  margin-block: 0;
  max-width: 24ch;
  text-wrap: balance;
}
.heg-philosophy__cols {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr));
  gap: clamp(2rem, 5vw, 4rem);
}
.heg-philosophy__cols p { color: var(--heg-ink-muted); }


/* ==========================================================================
   About: mission, vision, values  [heg_about_mvv]
   ========================================================================== */

.heg-mvv__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
  gap: clamp(2rem, 4vw, 3rem);
}
.heg-mvv__title {
  font-size: var(--heg-fs-h3);
  font-family: var(--heg-display); font-weight: var(--heg-fw-display);
  margin: 0;
}
.heg-mvv__block .heg-rule { margin-block: var(--heg-s-4); }
.heg-mvv__block p { color: var(--heg-ink-muted); font-size: var(--heg-fs-sm); line-height: 1.75; }

.heg-mvv__values { list-style: none; margin: 0; padding: 0; }
.heg-mvv__values li {
  position: relative;
  padding-left: 1.5rem;
  padding-block: .5rem;
  font-size: var(--heg-fs-sm);
  line-height: 1.6;
  color: var(--heg-ink-muted);
}
.heg-mvv__values li::before {
  content: ""; position: absolute; left: 0; top: 1.05rem;
  width: .75rem; height: 1px; background: var(--heg-gold);
}


/* ==========================================================================
   Industries  [heg_industries_grid]
   ========================================================================== */

.heg-industries__grid {
  list-style: none; margin: 0; padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr));
  gap: var(--heg-s-5);
}

.heg-industry__title {
  font-size: var(--heg-fs-h3);
  font-family: var(--heg-display);
  font-weight: var(--heg-fw-display);
  line-height: 1.25;
  margin: 0 0 var(--heg-s-3);
  color: var(--heg-ink);
}

.heg-industry__text {
  font-size: var(--heg-fs-sm);
  line-height: 1.7;
  color: var(--heg-ink-muted);
  margin: 0;
  max-width: none;
}


/* ==========================================================================
   Industries closing note  [heg_industries_note]
   ========================================================================== */

.heg-industries-note__inner {
  display: grid;
  grid-template-columns: 5fr 7fr;
  gap: clamp(2rem, 6vw, 5rem);
  align-items: start;
}
.heg-industries-note__title {
  font-size: var(--heg-fs-h2);
  margin: 0;
  max-width: 18ch;
}
.heg-industries-note__inner p { color: var(--heg-ink-muted); }

@media (max-width: 860px) {
  .heg-industries-note__inner { grid-template-columns: 1fr; }
  .heg-industries-note__title { max-width: none; }
}


/* ==========================================================================
   Case studies: method  [heg_casestudy_method]
   ========================================================================== */

.heg-method__list {
  list-style: none; margin: 0; padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
  gap: clamp(1.75rem, 4vw, 3rem);
}
.heg-method__item { padding-top: var(--heg-s-5); border-top: var(--heg-hairline) solid var(--heg-border); }
.heg-method__num {
  display: block; font-family: var(--heg-display); font-weight: var(--heg-fw-display);
  font-size: 1.4rem; line-height: 1; color: var(--heg-gold-ink); margin-bottom: var(--heg-s-3);
}
.heg-method__title {
  font-size: var(--heg-fs-h4); font-family: var(--heg-display);
  font-weight: var(--heg-fw-display); margin: 0 0 var(--heg-s-2);
}
.heg-method__text { font-size: var(--heg-fs-sm); line-height: 1.7; color: var(--heg-ink-muted); margin: 0; max-width: none; }


/* ==========================================================================
   Case studies  [heg_casestudy_grid]
   ========================================================================== */

.heg-cases__empty { max-width: 44rem; margin-inline: auto; text-align: center; }
.heg-cases__empty-title {
  font-size: var(--heg-fs-h2); margin: 0 auto var(--heg-s-5); max-width: 24ch;
}
.heg-cases__empty-text { color: var(--heg-ink-muted); margin: 0 auto var(--heg-s-4); max-width: 54ch; }
.heg-cases__empty .heg-btn { margin-top: var(--heg-s-4); }

.heg-cases__grid {
  list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr));
  gap: var(--heg-s-5);
}
.heg-case__meta {
  font-family: var(--heg-body); font-size: var(--heg-fs-xs);
  letter-spacing: var(--heg-ls-eyebrow); text-transform: uppercase;
  color: var(--heg-ink-faint); margin: 0 0 var(--heg-s-5); max-width: none;
}
.heg-case__part { margin-bottom: var(--heg-s-4); }
.heg-case__part p { font-size: var(--heg-fs-sm); line-height: 1.7; color: var(--heg-ink-muted); margin: 0; max-width: none; }
.heg-case__label {
  font-family: var(--heg-body); font-size: var(--heg-fs-xs); font-weight: var(--heg-fw-semi);
  letter-spacing: var(--heg-ls-eyebrow); text-transform: uppercase;
  color: var(--heg-gold-ink); margin: 0 0 var(--heg-s-2);
}
.heg-case__part--result { padding-top: var(--heg-s-4); border-top: var(--heg-hairline) solid var(--heg-border); margin-bottom: 0; }


/* ==========================================================================
   Contact  [heg_contact_panel]
   ========================================================================== */

.heg-contact__inner {
  display: grid; grid-template-columns: 5fr 7fr;
  gap: clamp(2rem, 6vw, 4.5rem); align-items: start;
}
.heg-contact__title { font-size: var(--heg-fs-h2); margin: 0; }
.heg-contact__list { list-style: none; margin: var(--heg-s-6) 0 0; padding: 0; }
.heg-contact__list li {
  padding-block: var(--heg-s-4);
  border-top: var(--heg-hairline) solid var(--heg-border);
  font-size: var(--heg-fs-sm); line-height: 1.7; color: var(--heg-ink-muted);
}
.heg-contact__list a { display: inline-block; padding-block: .18rem; }
.heg-contact__list li:last-child { border-bottom: var(--heg-hairline) solid var(--heg-border); }
.heg-contact__label {
  display: block; font-size: var(--heg-fs-xs); font-weight: var(--heg-fw-semi);
  letter-spacing: var(--heg-ls-eyebrow); text-transform: uppercase;
  color: var(--heg-ink-faint); margin-bottom: .35rem;
}

.heg-contact__fallback {
  background: var(--heg-cream);
  border: var(--heg-hairline) solid var(--heg-border);
  border-radius: var(--heg-radius);
  padding: clamp(1.75rem, 4vw, 2.75rem);
}
.heg-contact__fallback-title { font-size: var(--heg-fs-h3); margin: 0 0 var(--heg-s-4); }
.heg-contact__fallback p { color: var(--heg-ink-muted); margin-bottom: var(--heg-s-5); }

@media (max-width: 860px) { .heg-contact__inner { grid-template-columns: 1fr; } }


/* ==========================================================================
   Insights listing
   ========================================================================== */

.heg-posts__grid {
  list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(19rem, 1fr));
  gap: var(--heg-s-6);
}
.heg-postcard__link {
  display: flex; flex-direction: column; height: 100%;
  color: inherit;
  transition: transform var(--heg-dur) var(--heg-ease);
}
.heg-postcard__link:hover { transform: translateY(-3px); color: inherit; }
.heg-postcard .heg-postcard__media {
  overflow: hidden; border-radius: var(--heg-radius); margin-bottom: var(--heg-s-4);
}
.heg-postcard .heg-postcard__media img {
  width: 100%; aspect-ratio: 3 / 2; object-fit: cover;
  transition: transform var(--heg-dur-slow) var(--heg-ease);
}
.heg-postcard__link:hover .heg-postcard__media img { transform: scale(1.03); }
.heg-postcard__meta {
  font-family: var(--heg-body); font-size: var(--heg-fs-xs);
  letter-spacing: var(--heg-ls-eyebrow); text-transform: uppercase;
  color: var(--heg-ink-faint); margin: 0 0 var(--heg-s-3); max-width: none;
}
.heg-postcard__title {
  font-size: var(--heg-fs-h4); font-family: var(--heg-display);
  font-weight: var(--heg-fw-display); line-height: 1.3; margin: 0 0 var(--heg-s-3);
}
.heg-postcard__excerpt { font-size: var(--heg-fs-sm); line-height: 1.7; color: var(--heg-ink-muted);
  margin: 0 0 var(--heg-s-4); max-width: none; }
.heg-postcard__more {
  margin-top: auto; font-family: var(--heg-body); font-size: var(--heg-fs-xs);
  font-weight: var(--heg-fw-semi); letter-spacing: var(--heg-ls-button);
  text-transform: uppercase; color: var(--heg-gold-ink);
}
.heg-postcard__link:hover .heg-postcard__more { color: var(--heg-gold); }

.heg-posts__empty { text-align: center; padding-block: var(--heg-s-7); }
.heg-posts__empty p { color: var(--heg-ink-muted); margin-inline: auto; }

.heg-pagination { margin-top: var(--heg-s-8); }
.heg-pagination .nav-links { display: flex; gap: var(--heg-s-3); justify-content: center; flex-wrap: wrap; }
.heg-pagination .page-numbers {
  min-width: 2.5rem; padding: .55rem .75rem; text-align: center;
  border: var(--heg-hairline) solid var(--heg-border); border-radius: var(--heg-radius);
  font-size: var(--heg-fs-sm); color: var(--heg-ink-muted);
}
.heg-pagination .page-numbers.current,
.heg-pagination a.page-numbers:hover { border-color: var(--heg-gold); color: var(--heg-gold-ink); }


/* ==========================================================================
   Single article
   ========================================================================== */

.heg-article__media { background: var(--heg-cream); padding-block: clamp(2rem, 5vw, 3.5rem); }
.heg-article .heg-article__media img { width: 100%; border-radius: var(--heg-radius); }

/* One measure for the whole article. The narrow container is 820px but a
   paragraph caps itself at 68ch, so headings, lists and quotes ran ~250px wider
   than the text they belonged to and the right edge never settled. Constrain
   the column instead, and let everything inside fill it. */
.heg-prose { max-width: 38rem; margin-inline: auto; }
.heg-prose > * + * { margin-top: var(--heg-s-5); }
.heg-prose p, .heg-prose li {
  font-size: 1.05rem; line-height: 1.8; color: var(--heg-ink-muted); max-width: none;
}
.heg-prose h2 { font-size: var(--heg-fs-h3); margin-top: var(--heg-s-8); }
.heg-prose h3 { font-size: var(--heg-fs-h4); font-family: var(--heg-display);
  font-weight: var(--heg-fw-display); margin-top: var(--heg-s-7); }
.heg-prose ul, .heg-prose ol { padding-left: 1.25rem; }
.heg-prose li + li { margin-top: .5rem; }
.heg-article .heg-prose img { border-radius: var(--heg-radius); }
/* Rules above and below rather than down the left edge: it matches the gold
   hairlines used everywhere else on the site, and it lets the quote hold the
   full measure instead of being indented out of the column. */
.heg-prose blockquote {
  margin: var(--heg-s-8) 0; padding-block: var(--heg-s-5);
  border-block: var(--heg-hairline) solid var(--heg-border-gold);
  font-family: var(--heg-display); font-weight: var(--heg-fw-display);
  font-size: var(--heg-fs-h3); line-height: 1.35; color: var(--heg-ink);
}
.heg-prose blockquote p { font-size: inherit; color: inherit; line-height: inherit; }
.heg-prose a { border-bottom: 1px solid var(--heg-border-gold); }

.heg-article__nav { border-top: var(--heg-hairline) solid var(--heg-border); }
.heg-article__nav-inner {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
  gap: var(--heg-s-5); padding-block: var(--heg-s-6);
}
.heg-article__nav-link { color: inherit; }
.heg-article__nav-link--next { text-align: right; }
.heg-article__nav-label {
  display: block; font-family: var(--heg-body); font-size: var(--heg-fs-xs);
  font-weight: var(--heg-fw-semi); letter-spacing: var(--heg-ls-eyebrow);
  text-transform: uppercase; color: var(--heg-gold-ink); margin-bottom: .4rem;
}
.heg-article__nav-title { font-family: var(--heg-display); font-weight: var(--heg-fw-display);
  font-size: var(--heg-fs-h4); color: var(--heg-ink); }
@media (max-width: 600px) { .heg-article__nav-link--next { text-align: left; } }


/* ==========================================================================
   Recruitment: scope and routes  [heg_recruitment_scope]
   ========================================================================== */

.heg-recscope__inner {
  display: grid; grid-template-columns: 5fr 7fr;
  gap: clamp(2rem, 6vw, 4.5rem); align-items: start;
}
.heg-recscope__title { font-size: var(--heg-fs-h2); margin: 0; }
.heg-recscope__text p { color: var(--heg-ink-muted); }

.heg-recscope__routes { display: grid; gap: var(--heg-s-4); }
.heg-recroute {
  display: flex; flex-direction: column;
  color: inherit;
  transition: border-color var(--heg-dur) var(--heg-ease),
              box-shadow var(--heg-dur) var(--heg-ease),
              transform var(--heg-dur) var(--heg-ease);
}
.heg-recroute:hover,
.heg-recroute:focus-visible {
  border-color: var(--heg-border-gold);
  border-top-color: var(--heg-gold);
  box-shadow: var(--heg-shadow-md);
  transform: translateY(-3px);
  color: inherit;
}
.heg-recroute__label {
  font-family: var(--heg-display); font-weight: var(--heg-fw-display);
  font-size: var(--heg-fs-h3); color: var(--heg-ink); margin-bottom: .4rem;
}
.heg-recroute__text { font-size: var(--heg-fs-sm); line-height: 1.7; color: var(--heg-ink-muted); margin-bottom: var(--heg-s-4); }
.heg-recroute__more {
  margin-top: auto;
  font-family: var(--heg-body); font-size: var(--heg-fs-xs); font-weight: var(--heg-fw-semi);
  letter-spacing: var(--heg-ls-button); text-transform: uppercase; color: var(--heg-gold-ink);
}
.heg-recroute:hover .heg-recroute__more { color: var(--heg-gold); }

@media (max-width: 860px) { .heg-recscope__inner { grid-template-columns: 1fr; } }


/* ==========================================================================
   Recruitment: form sections
   ========================================================================== */

.heg-recform { scroll-margin-top: 5.5rem; }
.heg-recform__inner {
  display: grid; grid-template-columns: 5fr 7fr;
  gap: clamp(2rem, 6vw, 4.5rem); align-items: start;
}
.heg-recform__title { font-size: var(--heg-fs-h2); margin: 0; }
.heg-recform__lede p { color: var(--heg-ink-muted); }
.heg-recform__notes { list-style: none; margin: var(--heg-s-5) 0 0; padding: 0; }
.heg-recform__notes li {
  position: relative; padding-left: 1.5rem; padding-block: .45rem;
  font-size: var(--heg-fs-sm); color: var(--heg-ink-muted);
}
.heg-recform__notes li::before {
  content: ""; position: absolute; left: 0; top: 1rem;
  width: .75rem; height: 1px; background: var(--heg-gold);
}
.heg-recform__form--wide { max-width: 46rem; margin-inline: auto; }

.heg-recform__pending {
  background: var(--heg-white);
  border: var(--heg-hairline) dashed var(--heg-border-gold);
  border-radius: var(--heg-radius);
  padding: clamp(1.75rem, 4vw, 2.5rem);
}
.heg-recform--wide .heg-recform__pending { background: var(--heg-cream); }
.heg-recform__pending p { color: var(--heg-ink-muted); margin-bottom: var(--heg-s-4); }

@media (max-width: 860px) { .heg-recform__inner { grid-template-columns: 1fr; } }


/* ==========================================================================
   Gravity Forms theming

   Gravity Forms 3.x ships the "Orbital" theme, whose wrapper carries
   .gform-theme--orbital, not the legacy .gravity-theme class. Orbital is
   designed to be re-themed through its own custom properties, so most of the
   work below is redefining those rather than overriding selectors, which
   survives plugin updates far better.
   ========================================================================== */

.gform_wrapper.gform-theme.gform-theme--framework.gform-theme--orbital,
.gform_wrapper.gform-theme.gform-theme--framework,
.gform_wrapper.gform-theme {

  /* Accent: focus rings, progress bar, primary buttons */
  --gf-color-primary:            var(--heg-gold) !important;
  --gf-color-primary-rgb:        192, 155, 75 !important;
  --gf-color-primary-contrast:   var(--heg-navy) !important;
  --gf-color-primary-darker:     var(--heg-gold-deep) !important;
  --gf-color-primary-lighter:    var(--heg-gold-light) !important;

  /* Inputs */
  --gf-ctrl-bg-color:            var(--heg-white) !important;
  --gf-ctrl-color:               var(--heg-ink) !important;
  --gf-ctrl-border-color:        var(--heg-border) !important;
  --gf-ctrl-border-color-hover:  var(--heg-border-gold) !important;
  --gf-ctrl-border-color-focus:  var(--heg-gold) !important;
  --gf-ctrl-border-width:        1px !important;
  --gf-ctrl-radius:              var(--heg-radius) !important;

  /* Descriptions and helper text */
  --gf-ctrl-desc-color:          var(--heg-ink-faint) !important;
  --gf-ctrl-desc-font-family:    var(--heg-body) !important;

  /* Error / required accents */
  --gf-color-danger:             var(--heg-gold-ink) !important;
  --gf-color-danger-rgb:         165, 130, 58 !important;
}

/* --- Labels --------------------------------------------------------------- */

.gform_wrapper.gform-theme .gform-field-label {
  font-family: var(--heg-body) !important;
  font-size: var(--heg-fs-xs) !important;
  font-weight: var(--heg-fw-semi) !important;
  letter-spacing: var(--heg-ls-eyebrow) !important;
  text-transform: uppercase;
  color: var(--heg-ink) !important;
}
.gform_wrapper .gform-field-label--type-inline,
.gform_wrapper .gfield_consent_label {
  font-size: var(--heg-fs-sm);
  font-weight: var(--heg-fw-normal);
  letter-spacing: 0;
  text-transform: none;
  color: var(--heg-ink-muted);
}

.gform_wrapper.gform-theme .gfield_required,
.gform_wrapper.gform-theme .gfield_required_text {
  color: var(--heg-gold-ink) !important;
  font-weight: var(--heg-fw-normal);
  text-transform: none;
  letter-spacing: 0;
}

/* --- Inputs --------------------------------------------------------------- */

.gform_wrapper .gfield input[type="text"],
.gform_wrapper .gfield input[type="email"],
.gform_wrapper .gfield input[type="tel"],
.gform_wrapper .gfield input[type="url"],
.gform_wrapper .gfield input[type="number"],
.gform_wrapper .gfield select,
.gform_wrapper .gfield textarea {
  font-family: var(--heg-body);
  font-size: var(--heg-fs-body);
  color: var(--heg-ink);
  border-color: var(--heg-border) !important;
}
.gform_wrapper .gfield textarea { min-height: 8rem; resize: vertical; }

.gform_wrapper .gfield input:focus,
.gform_wrapper .gfield select:focus,
.gform_wrapper .gfield textarea:focus {
  box-shadow: var(--heg-ring);
}

/* --- Buttons -------------------------------------------------------------- */

.gform_wrapper.gform-theme .gform_footer button,
.gform_wrapper.gform-theme .gform_footer input[type="submit"],
.gform_wrapper.gform-theme .gform_page_footer button,
.gform_wrapper.gform-theme .gform_page_footer input[type="submit"],
.gform_wrapper.gform-theme .gform_button,
.gform_wrapper.gform-theme .gform_next_button,
.gform_wrapper.gform-theme .gform_previous_button {
  font-family: var(--heg-body);
  font-size: var(--heg-fs-sm);
  font-weight: var(--heg-fw-semi);
  letter-spacing: var(--heg-ls-button);
  text-transform: uppercase;
  line-height: 1;
  padding: 1.05em 2.2em;
  border: 1px solid var(--heg-gold);
  border-radius: var(--heg-radius) !important;
  background: var(--heg-gold) !important;
  color: var(--heg-navy) !important;
  cursor: pointer;
  transition: background-color var(--heg-dur) var(--heg-ease),
              transform var(--heg-dur) var(--heg-ease);
}
.gform_wrapper .gform_footer button:hover,
.gform_wrapper .gform_footer input[type="submit"]:hover,
.gform_wrapper .gform_page_footer button:hover,
.gform_wrapper .gform_next_button:hover {
  background: var(--heg-gold-light);
  border-color: var(--heg-gold-light);
  transform: translateY(-1px);
}
.gform_wrapper .gform_previous_button {
  background: transparent;
  color: var(--heg-navy);
  border-color: var(--heg-navy);
}
.gform_wrapper .gform_previous_button:hover {
  background: var(--heg-navy);
  color: var(--heg-cream);
  border-color: var(--heg-navy);
}

/* --- Multi-step progress bar ---------------------------------------------- */

.gform_wrapper .gf_progressbar_wrapper { margin-bottom: var(--heg-s-6); }
.gform_wrapper .gf_progressbar_title {
  font-family: var(--heg-body);
  font-size: var(--heg-fs-xs);
  font-weight: var(--heg-fw-semi);
  letter-spacing: var(--heg-ls-eyebrow);
  text-transform: uppercase;
  color: var(--heg-ink-faint);
}
.gform_wrapper .gf_progressbar { background: var(--heg-cream-deep); border-radius: 0; }
.gform_wrapper .gf_progressbar_percentage { background: var(--heg-gold); border-radius: 0; }

/* --- Choices -------------------------------------------------------------- */

.gform_wrapper .gfield_checkbox label,
.gform_wrapper .gfield_radio label {
  font-family: var(--heg-body);
  font-size: var(--heg-fs-sm);
  color: var(--heg-ink-muted);
  text-transform: none;
  letter-spacing: 0;
}
.gform_wrapper input[type="checkbox"],
.gform_wrapper input[type="radio"] { accent-color: var(--heg-gold); }

/* --- Validation ----------------------------------------------------------- */

.gform_wrapper .gform_validation_errors {
  background: var(--heg-cream);
  border-radius: var(--heg-radius);
}
.gform_wrapper .gform_validation_errors h2 {
  font-family: var(--heg-display);
  font-weight: var(--heg-fw-display);
  font-size: var(--heg-fs-h4);
}

/* --- Confirmation --------------------------------------------------------- */

.gform_confirmation_message {
  font-family: var(--heg-display);
  font-weight: var(--heg-fw-display);
  font-size: var(--heg-fs-h3);
  line-height: 1.35;
  color: var(--heg-ink);
  padding: var(--heg-s-6);
  background: var(--heg-white);
  border: 1px solid var(--heg-border);
  border-top: 2px solid var(--heg-gold);
  border-radius: var(--heg-radius);
}


/* ==========================================================================
   Legal pages  [heg_privacy_policy]

   A legal page is read by someone looking for one specific answer, not by
   someone reading top to bottom. So it gets the article measure it shares with
   Insights, plus a numbered contents list that lands them on the right section.
   Everything else here is .heg-prose doing the work already.
   ========================================================================== */

.heg-legal__updated {
  font-family: var(--heg-body);
  font-size: var(--heg-fs-sm);
  color: var(--heg-ink-faint);
  padding-bottom: var(--heg-s-5);
  border-bottom: var(--heg-hairline) solid var(--heg-border);
}

/* The contents list carries its own numbering, so the section headings below
   already read as "1.", "2." and the list must not add a second set. */
.heg-legal__toc {
  padding: var(--heg-s-5) var(--heg-s-6);
  background: var(--heg-cream);
  border-left: var(--heg-frame) solid var(--heg-gold);
  border-radius: var(--heg-radius);
}
.heg-legal__toc-title {
  font-family: var(--heg-body);
  font-size: var(--heg-fs-xs);
  font-weight: var(--heg-fw-semi);
  letter-spacing: var(--heg-ls-eyebrow);
  text-transform: uppercase;
  color: var(--heg-gold-ink);
  margin: 0 0 var(--heg-s-4);
}
.heg-prose .heg-legal__toc ol { margin: 0; padding-left: 1.1rem; }
.heg-prose .heg-legal__toc li { font-size: var(--heg-fs-sm); line-height: 1.5; }
.heg-prose .heg-legal__toc li + li { margin-top: .35rem; }
.heg-prose .heg-legal__toc a { border-bottom: 0; color: var(--heg-ink); }
.heg-prose .heg-legal__toc a:hover,
.heg-prose .heg-legal__toc a:focus-visible { color: var(--heg-gold-ink); }

/* Anchored headings land flush against the sticky header without this. */
.heg-legal__body [id] { scroll-margin-top: var(--heg-s-8); }

.heg-prose .heg-legal__contact { list-style: none; padding-left: 0; }
.heg-prose .heg-legal__contact li + li { margin-top: .25rem; }

.heg-legal__basis {
  padding: var(--heg-s-5) 0;
  border-top: var(--heg-hairline) solid var(--heg-border);
}
.heg-prose .heg-legal__basis h3 { margin-top: 0; }
.heg-prose .heg-legal__basis > * + * { margin-top: var(--heg-s-3); }
.heg-prose .heg-legal__basis-label {
  font-size: var(--heg-fs-sm);
  color: var(--heg-ink-faint);
}

/* 32px of inline padding inside a 335px column leaves the contents list a
   271px measure, which wraps most entries onto two lines. */
@media (max-width: 480px) {
  .heg-legal__toc { padding-inline: var(--heg-s-4); }
}


/* ==========================================================================
   Booking  [heg_calendly]
   ========================================================================== */

.heg-calendly__inner { text-align: center; }
.heg-calendly__title {
  font-size: var(--heg-fs-h2);
  margin-bottom: var(--heg-s-4);
}
.heg-calendly .heg-lead { margin-inline: auto; }
.heg-calendly__btn { margin-top: var(--heg-s-6); }

/* The embed's height is reserved here rather than on the element, so the space
   is held from first paint and the widget drops into it instead of pushing the
   footer down when it arrives. The performance target is CLS under 0.1 and an
   unreserved iframe of this size blows straight through it. 700px is Calendly's
   own recommended height for a single event type; 1000px is what it needs once
   the month view and a timezone picker are both showing on a narrow column. */
.heg-calendly__embed {
  min-height: 700px;
  margin-top: var(--heg-s-6);
}
@media (max-width: 767px) {
  .heg-calendly__embed { min-height: 1000px; }
}

.heg-calendly__fallback {
  margin-top: var(--heg-s-4);
  font-size: var(--heg-fs-sm);
  color: var(--heg-ink-faint);
}
