/* hvia-core.css -- GENERATED by projects/hvia/tools/port-css.py. Do not edit.
   Edit design-source/v2 (the prototype), assets/css/src/adapter.css or
   assets/css/src/overrides.css, then re-run the porter and deploy-plugin.sh.
   Source: see design-source/v2/SOURCE.txt. */

/* ============================================================================
   ELEMENTOR ADAPTER (hand-written, comes first in lenz-core.css)

   The ported prototype CSS assumes plain block markup. Elementor wraps every
   element in containers and widget wrappers that carry their own layout:
   default padding, a 20px gap, position:relative, width:100%, a boxed inner
   wrapper. This block makes those wrappers transparent so the prototype rules
   decide layout and look. Everything is scoped to `.elementor` (pages and Theme
   Builder parts) and kept at low specificity, so the ported rules (prefixed
   `.elementor `, loaded later) always win over it.
   ============================================================================ */

/* Containers behave like the prototype's block <div>s unless a prototype rule
   says otherwise: block display (margins collapse as in the source), and a row
   when a rule turns one into a flexbox without naming a direction. */
/* Elementor writes --display:flex into every container's own CSS at (0,3,0);
   this outranks it without depending on load order. Prototype rules set the
   real `display`/`flex-direction` properties, which these variables never touch. */
.elementor .elementor-element.e-con.e-flex {
  --display: block; --flex-direction: row;
  --flex-wrap: nowrap; --flex-wrap-mobile: nowrap;   /* Elementor wraps flex rows on mobile */
}
.elementor .e-con-boxed { flex-direction: row; }

/* Containers: no default padding, no gap, sized by content, not positioned.
   A prototype rule that sets padding, gap, width or position still wins. */
.elementor {
  --container-default-padding-top: 0px;
  --container-default-padding-right: 0px;
  --container-default-padding-bottom: 0px;
  --container-default-padding-left: 0px;
}
.elementor .elementor-element {
  --widgets-spacing: 0px;
  --widgets-spacing-row: 0px;
  --widgets-spacing-column: 0px;
  --kit-widget-spacing: 0px;
}
.elementor .e-con {
  min-width: auto;          /* Elementor sets 0; grid/flex items size by content in the prototype */
  --gap: 0px;
  --row-gap: 0px;
  --column-gap: 0px;
  --width: auto;
  --container-widget-width: auto;
}
/* :where() keeps these at the same weight as a ported rule, so a prototype
   `position: absolute` (the About inset photo) still wins. */
:where(body:not(.elementor-editor-active)) .elementor .e-con { --position: static; }
:where(body:not(.elementor-editor-active)) .elementor .elementor-widget { position: static; }

/* The boxed container IS the prototype's `.container`; its inner wrapper must not
   add a box of its own. */
.elementor .e-con-boxed > .e-con-inner { display: contents; }

/* Elementor draws background overlays on .e-con::before with top/left/width/
   height/opacity. The prototype uses ::before for its own decoration; reset the
   Elementor geometry so only the prototype's declarations apply. This build uses
   no Elementor background overlays. */
.e-con::before {
  position: static; display: inline;
  top: auto; left: auto; width: auto; height: auto;
  opacity: 1; mix-blend-mode: normal; border-radius: 0; border-style: none;
  transition: none;
}

/* The prototype's `* { margin: 0 }` reset, limited to the flow elements a theme
   gives margins to. Class rules from the prototype still win. */
.elementor :is(h1, h2, h3, h4, h5, h6, p, ul, ol, li, figure, blockquote, dl, dd) { margin: 0; }
/* Hello Elementor sizes h1 to h6; the prototype leaves unsized headings at the
   browser default. */
.elementor :is(h1, h2, h3, h4, h5, h6) { font-size: revert; }

/* Hello Elementor paints every <button> pink with a border. The prototype's
   buttons start from the browser default. */
.elementor :where(button:not(.elementor-button)),
.elementor :where(button:not(.elementor-button)):is(:hover, :focus) { all: revert; }

/* Image widgets: the widget wrapper carries the prototype's class, so the image
   fills it and borrows its fit and corners. */
.elementor .elementor-widget-image { min-height: 0; }   /* let a prototype aspect-ratio size the box */
.elementor .elementor-widget-image img {
  display: block; width: 100%; height: 100%; max-width: none;
  object-fit: inherit; object-position: inherit; border-radius: inherit;
}

/* html widgets carry no class of their own: their wrapper gives up its box so
   the prototype markup inside joins the parent's flex or grid directly (the nav
   spacer, the marquee, chips). */
:where(body:not(.elementor-editor-active)) .elementor .elementor-widget-html { display: contents; }

/* Text-editor widgets hold inline text or <p>s exactly as the prototype did. */
.elementor .elementor-widget-text-editor { color: inherit; }

/* Native buttons: the label span lays out text and the CSS-mask icon. */
.elementor .elementor-button .elementor-button-content-wrapper { display: contents; }
.elementor .elementor-button .elementor-button-text { display: contents; }

/* ---- v2.css (ported) ---- */
:root {
  --c-heading: #121808; --c-text: #5D5D5D; --c-white: #FFFFFF; --c-line: #D6D6D6; --c-soft: #EBEBEB; --c-accent-1: #BF2C31; --c-accent-2: #8B1418; --c-paper: #F4EFE8; --c-ink: #121808; --c-ink-2: #1D221A; --c-muted-light: rgba(255, 255, 255, .64); --font-display: 'Instrument Serif', serif; --font-ui: 'Onest', sans-serif; --font-body: 'Golos Text', sans-serif; --font-wordmark: 'Cinzel', serif; --wrap: 1240px; --gutter: clamp(16px, 4vw, 48px); --ease: cubic-bezier(.22, .8, .24, 1); --pattern-columns: url(../img/patterns/columns-12.svg); --pattern-paper: url(../img/patterns/paper-dots.svg); --pattern-hatch: url(../img/patterns/hatch.svg);
}
.elementor *,
.elementor *::before,
.elementor *::after {
  box-sizing: border-box;
}
html {
  scroll-behavior: smooth; scroll-padding-top: 96px;
}
body {
  margin: 0; font: 400 1rem/1.7 var(--font-body); color: var(--c-text); background: var(--c-paper); -webkit-font-smoothing: antialiased; overflow-x: hidden;
}
.elementor img {
  max-width: 100%; height: auto; display: block;
}
.elementor a {
  color: inherit;
}
.elementor h1,
.elementor h2,
.elementor h3 {
  font-family: var(--font-display); font-weight: 400; color: var(--c-ink); line-height: 1; margin: 0; letter-spacing: -.01em;
}
.elementor em {
  font-style: italic;
}
.elementor p {
  margin: 0 0 1rem;
}
.elementor .wrap {
  max-width: var(--wrap); margin: 0 auto; padding: 0 var(--gutter);
}
.elementor .section {
  padding: clamp(80px, 11vw, 150px) 0;
}
.elementor .sr {
  position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0);
}
.elementor .skip {
  position: absolute; left: -999px; top: 8px; background: #fff; color: var(--c-ink); padding: .5rem 1rem; z-index: 100;
}
.elementor .skip:focus {
  left: 8px;
}
.elementor :focus-visible {
  outline: 2px solid var(--c-accent-1); outline-offset: 3px;
}
.elementor .hero-grid > *,
.elementor .about-grid > *,
.elementor .sec-head > *,
.elementor .loc-grid > *,
.elementor .footer-grid > *,
.elementor .doc > * {
  min-width: 0;
}
.elementor .kicker:where(:not(.elementor-widget)),
.elementor .kicker .elementor-heading-title {
  display: inline-flex; align-items: center; gap: .6rem; font: 600 .75rem/1 var(--font-ui); letter-spacing: .2em; text-transform: uppercase; color: var(--c-accent-1); margin-bottom: 1.2rem;
}
.elementor .kicker.elementor-widget {
  display: block;
}
.elementor .kicker .dot {
  width: 8px; height: 8px; border-radius: 50%; background: var(--c-accent-1);
}
.elementor .kicker--light:where(:not(.elementor-widget)),
.elementor .kicker--light .elementor-heading-title {
  color: #fff; opacity: .85;
}
@keyframes flash { 50% { box-shadow: 0 0 0 6px rgba(217, 169, 0, .35); } }
.elementor .btn:where(:not(.elementor-widget)),
.elementor .btn .elementor-button {
  display: inline-flex; align-items: center; justify-content: center; gap: .6rem; min-height: 48px; padding: 0 1.4rem; font: 600 .95rem/1 var(--font-ui); letter-spacing: .01em; text-decoration: none; border: 1px solid transparent; border-radius: 2px; transition: color .3s, background-color .3s, border-color .3s;
}
.elementor .btn.elementor-widget {
  display: block;
}
.elementor .btn-lg:where(:not(.elementor-widget)),
.elementor .btn-lg .elementor-button {
  min-height: 58px; padding: 0 1.9rem; font-size: 1rem;
}
.elementor .btn-red:where(:not(.elementor-widget)),
.elementor .btn-red .elementor-button {
  background: var(--c-accent-1); color: #fff;
}
.elementor .btn-red:where(:not(.elementor-widget)):hover,
.elementor .btn-red .elementor-button:hover {
  background: var(--c-accent-2);
}
.elementor .btn-line:where(:not(.elementor-widget)),
.elementor .btn-line .elementor-button {
  color: #fff; border-color: rgba(255, 255, 255, .45);
}
.elementor .btn-line:where(:not(.elementor-widget)):hover,
.elementor .btn-line .elementor-button:hover {
  background: #fff; color: var(--c-ink); border-color: #fff;
}
.elementor .site-header {
  position: sticky; top: 0; z-index: 50; background: var(--c-ink); color: #fff; transition: box-shadow .3s;
}
.elementor .site-header.is-scrolled {
  box-shadow: 0 1px 0 rgba(255, 255, 255, .08), 0 10px 30px -10px rgba(0, 0, 0, .5);
}
.elementor .utility {
  background: var(--c-ink); border-bottom: 1px solid rgba(255, 255, 255, .1); font: 500 .78rem/1 var(--font-ui); letter-spacing: .08em; text-transform: uppercase; color: var(--c-muted-light);
}
.elementor .utility-inner {
  display: flex; justify-content: space-between; align-items: center; height: 36px;
}
.elementor .utility a {
  text-decoration: none; color: #fff;
}
.elementor .header-inner {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 76px;
}
.elementor .brand {
  display: inline-flex; align-items: center; gap: .8rem; text-decoration: none;
}
.elementor .brand-mark {
  width: 48px;
}
.elementor .brand-name {
  display: flex; flex-direction: column; font: 600 .9rem/1.2 var(--font-wordmark); letter-spacing: .06em; color: #fff; margin: 0;
}
.elementor .brand-name :is(span, .lz-span):first-child {
  color: #F2B8BA;
}
.elementor .main-nav :is(ul, .lz-ul) {
  display: flex; align-items: center; gap: clamp(1rem, 2.6vw, 2.4rem); list-style: none; margin: 0; padding: 0;
}
.elementor .main-nav a:not(.btn) {
  text-decoration: none; font: 500 .95rem/1 var(--font-ui); color: rgba(255, 255, 255, .85); display: inline-flex; gap: .45rem; align-items: baseline; transition: color .2s;
}
.elementor .main-nav a:not(.btn) i {
  font: italic 400 1rem/1 var(--font-display); color: var(--c-accent-1);
}
.elementor .main-nav a:not(.btn):hover,
.elementor .main-nav a.is-active {
  color: #fff;
}
.elementor .main-nav a.is-active i {
  color: #F2B8BA;
}
.elementor .nav-toggle {
  display: none;
}
.elementor .hero {
  position: relative; color: var(--c-muted-light); padding: clamp(40px, 6vw, 88px) 0 0; overflow: hidden; background: var(--pattern-columns) 0 0 / 100% 10px repeat-y, radial-gradient(circle at bottom left, rgba(191, 44, 49, .22) 0%, var(--c-ink) 45%);
}
.elementor .hero-grid {
  position: relative; z-index: 1; display: grid; grid-template-columns: 7fr 5fr; gap: clamp(32px, 5vw, 80px); align-items: end;
}
.elementor .hero h1 {
  color: #fff; font-size: clamp(3.4rem, 8.4vw, 7.6rem); line-height: .92; letter-spacing: -.02em; margin-bottom: 2rem;
}
.elementor .hero h1 .line {
  display: block;
}
.elementor .hero h1 em {
  color: #F2B8BA;
}
.elementor .hero h1 .red {
  color: var(--c-accent-1);
}
.elementor .hero h1 .red em {
  color: var(--c-accent-1);
}
.elementor .hero-sub {
  display: grid; gap: .7rem; justify-items: start; max-width: 520px; border-left: 2px solid var(--c-accent-1); padding-left: 1.2rem;
}
.elementor .lede:where(:not(.elementor-widget)),
.elementor .lede .elementor-heading-title {
  font-size: clamp(1.05rem, 1.5vw, 1.2rem); color: rgba(255, 255, 255, .85); margin: 0;
}
.elementor .hero-ctas {
  display: flex; flex-wrap: wrap; gap: .8rem; margin: 2.2rem 0 .8rem;
}
.elementor .hero-notes {
  display: flex; flex-wrap: wrap; gap: .5rem; margin: 0 0 clamp(32px, 4vw, 56px);
}
.elementor .hero-media {
  position: relative; margin: 0 0 clamp(32px, 4vw, 56px);
}
.elementor .hero-photo {
  position: relative; isolation: isolate; margin: 0 18px 18px 0;
}
.elementor .hero-photo img {
  width: 100%; aspect-ratio: 4 / 5; object-fit: cover; object-position: 50% 30%; filter: saturate(.92) contrast(1.04);
}
.elementor .hero-photo::before {
  content: ""; position: absolute; inset: 18px -18px -18px 18px; background: var(--pattern-hatch) 0 0 / 14px 14px repeat, var(--c-accent-1); z-index: -1;
}
.elementor .hero-media :is(figcaption, .lz-figcaption) {
  display: grid; gap: .6rem; justify-items: start; margin-top: 2rem; font-size: .82rem; color: var(--c-muted-light);
}
.elementor .hero-media .cap:where(:not(.elementor-widget)),
.elementor .hero-media .cap .elementor-heading-title {
  font-style: italic; font-family: var(--font-display); font-size: 1rem; color: rgba(255, 255, 255, .75);
}
.elementor .ledger {
  position: relative; z-index: 1; list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid rgba(255, 255, 255, .16);
}
.elementor .ledger :is(li, .lz-li) {
  padding: 1.6rem 1.4rem 1.8rem 0; border-right: 1px solid rgba(255, 255, 255, .1); display: flex; flex-direction: column; gap: .4rem;
}
.elementor .ledger :is(li, .lz-li) + :is(li, .lz-li) {
  padding-left: 1.4rem;
}
.elementor .ledger :is(li, .lz-li):last-child {
  border-right: 0;
}
.elementor .ledger strong {
  font: 400 clamp(2.6rem, 4.4vw, 3.6rem)/1 var(--font-display); color: #fff;
}
.elementor .ledger strong.ico svg {
  width: 44px; height: 44px; fill: var(--c-accent-1);
}
.elementor .ledger :is(span, .lz-span) {
  font-size: .9rem; line-height: 1.4;
}
.elementor .ledger-note {
  position: relative; z-index: 1; margin: 0; padding: 0 0 2rem;
}
.elementor .reveal-load:where(:not(.elementor-widget)),
.elementor .reveal-load .elementor-heading-title {
  opacity: 0; transform: translateY(24px); animation: rise .9s var(--ease) var(--d, 0ms) forwards;
}
@keyframes rise { to { opacity: 1; transform: none; } }
.elementor .reveal {
  opacity: 0; transform: translateY(26px); transition: opacity .9s var(--ease) var(--d, 0ms), transform .9s var(--ease) var(--d, 0ms);
}
.elementor .reveal.is-in {
  opacity: 1; transform: none;
}
.elementor .paper {
  background: var(--pattern-paper) 0 0 / 5px 5px repeat, var(--c-paper);
}
.elementor .sec-head {
  display: grid; grid-template-columns: auto 1fr minmax(0, 360px); gap: clamp(20px, 3vw, 48px); align-items: end; padding-bottom: clamp(28px, 4vw, 48px); margin-bottom: clamp(36px, 5vw, 64px); border-bottom: 1px solid rgba(18, 24, 8, .18);
}
.elementor .sec-num:where(:not(.elementor-widget)),
.elementor .sec-num .elementor-heading-title {
  font: italic 400 clamp(4.5rem, 10vw, 8.5rem)/.8 var(--font-display); color: var(--c-accent-1);
}
.elementor .sec-head .kicker:where(:not(.elementor-widget)),
.elementor .sec-head .kicker .elementor-heading-title {
  margin-bottom: .8rem;
}
.elementor .sec-head h2 {
  font-size: clamp(2.6rem, 5.6vw, 4.8rem);
}
.elementor .sec-head h2 em {
  color: var(--c-accent-1);
}
.elementor .sec-sub {
  margin: 0; display: grid; gap: .6rem; justify-items: start; font-size: .98rem;
}
.elementor .about-grid {
  display: grid; grid-template-columns: 5fr 7fr; gap: clamp(32px, 6vw, 96px); align-items: start;
}
@keyframes shimmer { to { background-position: -200% 0; } }
.elementor .principles {
  list-style: none; margin: 0; padding: 0; counter-reset: p;
}
.elementor .principles :is(li, .lz-li):not(.principles-note) {
  display: grid; grid-template-columns: 72px 1fr; gap: 1rem; align-items: baseline; padding: 1.6rem 0; border-top: 1px solid rgba(18, 24, 8, .15); transition: transform .4s var(--ease);
}
.elementor .principles :is(li, .lz-li):not(.principles-note):hover {
  transform: translateX(.8rem);
}
.elementor .principles :is(li, .lz-li):nth-child(3) {
  border-bottom: 1px solid rgba(18, 24, 8, .15);
}
.elementor .roman {
  font: italic 400 2rem/1 var(--font-display); color: var(--c-accent-1);
}
.elementor .principles h3 {
  font-size: clamp(1.8rem, 3vw, 2.4rem); margin-bottom: .4rem;
}
.elementor .principles p {
  margin: 0;
}
.elementor .principles-note {
  padding-top: 1rem;
}
.elementor .physicians {
  padding-top: 0;
}
.elementor .doc {
  display: grid; grid-template-columns: 5fr 7fr; gap: clamp(28px, 5vw, 88px); align-items: center; padding: clamp(32px, 4vw, 56px) 0; border-bottom: 1px solid rgba(18, 24, 8, .15);
}
.elementor .doc--flip {
  grid-template-columns: 7fr 5fr;
}
.elementor .doc--flip .doc-photo {
  order: 2;
}
.elementor .doc-photo {
  position: relative; aspect-ratio: 4 / 5; overflow: hidden; background: var(--c-soft);
}
.elementor .doc-photo img {
  width: 100%; height: 100%; object-fit: cover; object-position: 50% 20%; transition: transform 1.2s var(--ease);
}
.elementor .doc:hover .doc-photo img {
  transform: scale(1.04);
}
.elementor .doc-photo {
  border-bottom: 6px solid var(--c-accent-1);
}
.elementor .doc-role:where(:not(.elementor-widget)),
.elementor .doc-role .elementor-heading-title {
  display: flex; align-items: center; gap: 1rem; font: 600 .75rem/1 var(--font-ui); letter-spacing: .18em; text-transform: uppercase; color: var(--c-accent-1); margin-bottom: 1.2rem;
}
.elementor .doc-role.elementor-widget {
  display: block;
}
.elementor .doc-role :is(span, .lz-span) {
  flex: none; white-space: nowrap; font: italic 400 1rem/1 var(--font-display); letter-spacing: 0; text-transform: none; color: var(--c-ink); padding-right: 1rem; border-right: 1px solid rgba(18, 24, 8, .25);
}
.elementor .doc h3 {
  font-size: clamp(2.6rem, 5vw, 4.4rem); margin-bottom: 1.2rem;
}
.elementor .doc h3 :is(span, .lz-span) {
  font-style: italic; color: var(--c-accent-1);
}
.elementor .doc-sum {
  font-size: clamp(1.05rem, 1.4vw, 1.2rem); color: var(--c-ink-2); max-width: 46ch;
}
.elementor .doc-bio {
  margin-top: 1.4rem; border-top: 1px solid rgba(18, 24, 8, .2);
}
.elementor .doc-bio summary {
  list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; padding: 1rem 0; font: 600 .95rem/1 var(--font-ui); color: var(--c-ink);
}
.elementor .doc-bio summary::-webkit-details-marker {
  display: none;
}
.elementor .doc-bio summary::after {
  content: "+"; font: 400 1.8rem/1 var(--font-display); color: var(--c-accent-1); transition: transform .35s var(--ease);
}
.elementor .doc-bio[open] summary::after {
  transform: rotate(45deg);
}
.elementor .doc-bio summary:hover {
  color: var(--c-accent-1);
}
.elementor .bio-body {
  padding-bottom: .6rem; font-size: .98rem; animation: open .5s var(--ease);
}
@keyframes open { from { opacity: 0; transform: translateY(-6px); } }
.elementor .phys-foot {
  margin: 2rem 0 0;
}
.elementor .locations {
  background: var(--pattern-columns) 0 0 / 100% 10px repeat-y, var(--c-ink); color: var(--c-muted-light); position: relative; overflow: hidden;
}
.elementor .locations .wrap {
  position: relative;
}
.elementor .locations .sec-head {
  border-bottom-color: rgba(255, 255, 255, .16);
}
.elementor .locations .sec-head h2 {
  color: #fff;
}
.elementor .locations .sec-head h2 em {
  color: #F2B8BA;
}
.elementor .loc-grid {
  display: grid; grid-template-columns: 1fr 1fr;
}
.elementor .loc {
  padding: 0 clamp(20px, 4vw, 64px) 0 0;
}
.elementor .loc + .loc {
  padding: 0 0 0 clamp(20px, 4vw, 64px); border-left: 1px solid rgba(255, 255, 255, .14);
}
.elementor .loc h3 {
  color: #fff; font-size: clamp(3.4rem, 7.6vw, 6.6rem); margin-bottom: 1.4rem; transition: color .3s;
}
.elementor .loc:hover h3 {
  color: #F2B8BA;
}
.elementor .loc address {
  font-style: normal; font-size: 1.15rem; color: rgba(255, 255, 255, .85); margin-bottom: 1.6rem;
}
.elementor .loc dl {
  display: flex; gap: 2.4rem; margin: 0 0 1.6rem;
}
.elementor .loc dt {
  font: 600 .7rem/1 var(--font-ui); letter-spacing: .18em; text-transform: uppercase; color: var(--c-accent-1); margin-bottom: .45rem;
}
.elementor .loc dd {
  margin: 0; font: 500 1.05rem/1.2 var(--font-ui); color: #fff;
}
.elementor .loc dd a {
  text-decoration: none;
}
.elementor .link {
  font: 600 .95rem/1 var(--font-ui); color: #fff; text-decoration: underline; text-decoration-color: var(--c-accent-1); text-decoration-thickness: 2px; text-underline-offset: .45em; transition: color .3s;
}
.elementor .link:hover {
  color: #F2B8BA;
}
.elementor .final-cta {
  position: relative; overflow: hidden; color: #fff; padding: clamp(88px, 12vw, 160px) 0; background: var(--pattern-hatch) 0 0 / 14px 14px repeat, radial-gradient(circle at top right, var(--c-accent-2) 0%, var(--c-accent-1) 45%);
}
.elementor .final-inner {
  position: relative; z-index: 1;
}
.elementor .final-cta h2 {
  color: #fff; font-size: clamp(2.4rem, 5vw, 4.4rem); max-width: 16ch; margin-bottom: 2rem;
}
.elementor .final-cta h2 em {
  color: #FFD9DA;
}
.elementor .big-phone {
  display: inline-block; font: 400 clamp(3.2rem, 11vw, 10rem)/.95 var(--font-display); color: #fff; text-decoration: none; letter-spacing: -.02em; margin-bottom: 1.6rem; transition: color .3s;
}
.elementor .big-phone :is(span, .lz-span) {
  font-style: italic; color: #FFD9DA;
}
.elementor .big-phone:hover {
  color: #FFD9DA;
}
.elementor .site-footer {
  background: var(--c-ink); color: var(--c-muted-light); font-size: .95rem; padding-top: 24px; overflow: hidden;
}
.elementor .footer-wordmark:where(:not(.elementor-widget)),
.elementor .footer-wordmark .elementor-heading-title {
  font: 400 clamp(6rem, 26vw, 22rem)/.8 var(--font-display); color: rgba(255, 255, 255, .05); margin: 0 0 -.12em; letter-spacing: -.02em; user-select: none;
}
.elementor .footer-grid {
  display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 2rem; padding: 2.4rem 0 3rem; border-top: 1px solid rgba(255, 255, 255, .14);
}
.elementor .footer-brand {
  display: flex; align-items: center; gap: 1rem;
}
.elementor .footer-brand img {
  width: 56px;
}
.elementor .site-footer h3 {
  font: 600 .75rem/1 var(--font-ui); letter-spacing: .18em; text-transform: uppercase; color: #fff; margin-bottom: 1rem;
}
.elementor .site-footer p {
  margin: 0;
}
.elementor .site-footer a {
  text-decoration: none;
}
.elementor .site-footer a:hover {
  color: #fff;
}
.elementor .footer-bottom {
  display: flex; flex-wrap: wrap; justify-content: space-between; gap: .6rem; padding: 1.4rem 0 1.8rem; border-top: 1px solid rgba(255, 255, 255, .08); font-size: .85rem;
}
.elementor .no-js .reveal,
.elementor .no-js .reveal-load:where(:not(.elementor-widget)),
.elementor .no-js .reveal-load .elementor-heading-title {
  opacity: 1; transform: none; animation: none;
}
@media (max-width: 1080px) {
.elementor .sec-head {
  grid-template-columns: auto 1fr;
}
.elementor .sec-head .sec-sub {
  grid-column: 1 / -1;
}
.elementor .ledger {
  grid-template-columns: 1fr 1fr;
}
.elementor .ledger :is(li, .lz-li):nth-child(2) {
  border-right: 0;
}
.elementor .ledger :is(li, .lz-li):nth-child(3) {
  padding-left: 0;
}
.elementor .ledger :is(li, .lz-li):nth-child(n+3) {
  border-top: 1px solid rgba(255, 255, 255, .1);
}
.elementor .footer-grid {
  grid-template-columns: 1fr 1fr;
}
}
@media (max-width: 900px) {
.elementor .hero-grid,
.elementor .about-grid {
  grid-template-columns: 1fr;
}
.elementor .hero-media {
  max-width: 520px;
}
.elementor .doc,
.elementor .doc--flip {
  grid-template-columns: 1fr;
}
.elementor .doc--flip .doc-photo {
  order: 0;
}
.elementor .doc-photo {
  max-width: 460px;
}
.elementor .loc-grid {
  grid-template-columns: 1fr; gap: 3rem;
}
.elementor .loc,
.elementor .loc + .loc {
  padding: 0; border-left: 0;
}
.elementor .loc + .loc {
  padding-top: 3rem; border-top: 1px solid rgba(255, 255, 255, .14);
}
.elementor .nav-toggle {
  display: inline-grid; gap: 5px; place-content: center; width: 46px; height: 46px; border: 1px solid rgba(255, 255, 255, .25); background: transparent; cursor: pointer;
}
.elementor .nav-toggle :is(span, .lz-span):not(.sr) {
  width: 20px; height: 2px; background: #fff; transition: transform .3s var(--ease), opacity .2s;
}
.elementor .nav-toggle[aria-expanded="true"] :is(span, .lz-span):nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}
.elementor .nav-toggle[aria-expanded="true"] :is(span, .lz-span):nth-child(2) {
  opacity: 0;
}
.elementor .nav-toggle[aria-expanded="true"] :is(span, .lz-span):nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}
.elementor .main-nav :is(ul, .lz-ul) {
  position: absolute; left: 0; right: 0; top: 100%; flex-direction: column; align-items: stretch; gap: 0; background: var(--c-ink); border-top: 1px solid rgba(255, 255, 255, .1); padding: .5rem var(--gutter) 1.2rem; opacity: 0; transform: translateY(-8px); pointer-events: none; transition: opacity .25s, transform .25s var(--ease);
}
.elementor .main-nav.is-open :is(ul, .lz-ul) {
  opacity: 1; transform: none; pointer-events: auto;
}
.elementor .main-nav :is(li, .lz-li) a:not(.btn) {
  padding: 1rem 0; font-size: 1.1rem; border-bottom: 1px solid rgba(255, 255, 255, .08); width: 100%;
}
.elementor .nav-cta {
  padding-top: 1rem;
}
.elementor .nav-cta .btn:where(:not(.elementor-widget)),
.elementor .nav-cta .btn .elementor-button {
  width: 100%;
}
}
@media (max-width: 640px) {
.elementor .utility-inner :is(span, .lz-span) {
  display: none;
}
.elementor .utility-inner {
  justify-content: flex-end;
}
.elementor .brand-name {
  font-size: .74rem;
}
.elementor .brand-mark {
  width: 40px;
}
.elementor .hero-ctas .btn:where(:not(.elementor-widget)),
.elementor .hero-ctas .btn .elementor-button {
  width: 100%;
}
.elementor .ledger {
  grid-template-columns: 1fr;
}
.elementor .ledger :is(li, .lz-li),
.elementor .ledger :is(li, .lz-li) + :is(li, .lz-li) {
  padding: 1.1rem 0; border-right: 0; flex-direction: row; align-items: center; gap: 1rem;
}
.elementor .ledger :is(li, .lz-li) + :is(li, .lz-li) {
  border-top: 1px solid rgba(255, 255, 255, .1);
}
.elementor .ledger strong {
  min-width: 2.2ch;
}
.elementor .sec-head {
  grid-template-columns: 1fr; gap: .6rem;
}
.elementor .sec-num:where(:not(.elementor-widget)),
.elementor .sec-num .elementor-heading-title {
  font-size: 4rem;
}
.elementor .principles :is(li, .lz-li):not(.principles-note) {
  grid-template-columns: 48px 1fr;
}
.elementor .loc dl {
  gap: 1.6rem;
}
.elementor .footer-grid {
  grid-template-columns: 1fr;
}
}
@media (prefers-reduced-motion: reduce) {
.elementor *,
.elementor *::before,
.elementor *::after {
  animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important;
}
.elementor .reveal,
.elementor .reveal-load:where(:not(.elementor-widget)),
.elementor .reveal-load .elementor-heading-title {
  opacity: 1; transform: none;
}
}
.elementor .ledger--contact {
  grid-template-columns: 2fr 1fr; padding-bottom: 2rem;
}
.elementor .ledger--contact strong {
  font-size: clamp(1.8rem, 3vw, 2.4rem); font-style: italic; color: #F2B8BA;
}
.elementor .ledger--contact :is(span, .lz-span) {
  font-size: 1.05rem; color: #fff;
}
.elementor .ledger--contact a {
  color: #fff; text-decoration: none;
}
.elementor .surgeons {
  list-style: none; margin: 0; padding: clamp(32px, 4vw, 56px) 0 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(20px, 3vw, 44px);
}
.elementor .surgeon .doc-role:where(:not(.elementor-widget)),
.elementor .surgeon .doc-role .elementor-heading-title {
  margin: 1.4rem 0 .8rem;
}
.elementor .surgeon h3 {
  font-size: clamp(1.9rem, 2.8vw, 2.6rem);
}
.elementor .surgeon h3 :is(span, .lz-span) {
  font-style: italic; color: var(--c-accent-1);
}
.elementor .surgeon:hover .doc-photo img {
  transform: scale(1.04);
}
.elementor .building-photo {
  margin: 0; padding: 0 clamp(20px, 4vw, 64px) 0 0; display: flex;
}
.elementor .building-photo + .loc {
  padding: 0 0 0 clamp(20px, 4vw, 64px); border-left: 1px solid rgba(255, 255, 255, .14);
}
.elementor .footer-grid--3 {
  grid-template-columns: 1.4fr 1fr 1fr;
}
@media (max-width: 900px) {
.elementor .surgeons {
  grid-template-columns: 1fr 1fr;
}
}
@media (max-width: 640px) {
.elementor .ledger--contact {
  grid-template-columns: 1fr;
}
.elementor .surgeons {
  grid-template-columns: 1fr;
}
.elementor .loc-grid {
  grid-template-columns: 1fr;
}
.elementor .building-photo {
  padding: 0 0 2rem;
}
.elementor .building-photo + .loc {
  padding: 2rem 0 0; border-left: 0; border-top: 1px solid rgba(255, 255, 255, .14);
}
.elementor .footer-grid--3 {
  grid-template-columns: 1fr;
}
}
.elementor .building-photo.has-photo {
  flex-direction: column; gap: .8rem;
}
.elementor .building-photo.has-photo img {
  flex: 1; width: 100%; min-height: 300px; object-fit: cover; object-position: 50% 78%; border-bottom: 6px solid var(--c-accent-1);
}
@media (max-width: 640px) {
.elementor .building-photo.has-photo img {
  min-height: 200px;
}
}
.elementor .hero-photo--building img {
  aspect-ratio: 1 / 1; object-position: 58% 64%;
}
.elementor .loc-map {
  flex-direction: column;
}
.elementor .loc-map iframe {
  flex: 1; width: 100%; min-height: 300px; border: 0; border-bottom: 6px solid var(--c-accent-1); display: block;
}
@media (max-width: 640px) {
.elementor .loc-map iframe {
  min-height: 240px;
}
}
.elementor .physicians {
  padding-top: clamp(80px, 11vw, 150px);
}
.elementor .surgeons {
  padding-top: 0;
}
.elementor .hero-photo--building img {
  aspect-ratio: 1400 / 844; object-position: 50% 50%;
}
@media (min-width: 901px) {
.elementor .surgeon h3 {
  font-size: clamp(1.7rem, 2.8vw, 2.3rem);
}
}
@media (min-width: 901px) {
.elementor .hero-grid {
  grid-template-columns: minmax(360px, 5fr) 7fr; align-items: center;
}
}

/* ============================================================================
   HAND-WRITTEN OVERRIDES (come last in hvia-core.css)

   Only what the porter cannot derive from the prototype (option 2). Values are
   copied from the prototype rules named in each comment.
   ============================================================================ */

/* ---- Reveal delays ----------------------------------------------------------
   The prototype sets `style="--d:100ms"` per element; Elementor widgets cannot
   carry inline style, so the delay is a class. Custom properties inherit, so a
   class on a widget wrapper reaches the heading inside it. */
.elementor .d-0   { --d: 0ms; }
.elementor .d-100 { --d: 100ms; }
.elementor .d-120 { --d: 120ms; }
.elementor .d-200 { --d: 200ms; }
.elementor .d-380 { --d: 380ms; }
.elementor .d-480 { --d: 480ms; }

/* Inside the Elementor editor the reveal script does not run: show everything. */
.elementor-editor-active .elementor .reveal,
.elementor-editor-active .elementor .reveal-load,
.elementor-editor-active .elementor .reveal-load .elementor-heading-title {
  opacity: 1; transform: none; animation: none;
}

/* ---- Widget wrappers that are flex items ------------------------------------
   .hero-ctas .btn { width: 100% } at 640px: the button fills its wrapper, so the
   wrapper must fill the row. */
@media (max-width: 640px) {
  .elementor .hero-ctas > .elementor-widget-button { width: 100%; }
}

/* .doc-photo img { height: 100% } fills the 4:5 frame in the prototype. Here the
   image widget wrapper sits between frame and img, so it must take the frame's
   height for the percentage to resolve (otherwise the square photo leaves a band). */
.elementor .doc-photo > .elementor-widget-image { height: 100%; }

/* ---- Native buttons ------------------------------------------------------------
   Elementor paints every button grey (#69727d). The prototype's .btn has no fill
   of its own; .btn-red sets one, .btn-line stays transparent. This sits below the
   ported button rules in weight, so their backgrounds still win. */
.elementor :where(.elementor-widget-button) .elementor-button { background-color: transparent; }

/* ---- Heading widgets used for short styled lines -----------------------------
   Elementor sets line-height:1 on .elementor-heading-title. The prototype's p and
   span lines inherit the body's 1.7 unless a class says otherwise (class rules are
   heavier than this and still win). h1 to h3 keep their own ported line-height. */
.elementor :is(p, span, div).elementor-heading-title { line-height: inherit; }

/* Footer wordmark: in the prototype `.site-footer p { margin: 0 }` (0,1,1) beats
   `.footer-wordmark` (0,1,0), so its -.12em bottom margin never applies.
   Re-targeting flips that order; restate the prototype's result. */
.elementor .site-footer .footer-wordmark .elementor-heading-title { margin: 0; }

/* ---- Hello Elementor ---------------------------------------------------------
   Hello's theme.css pads `.site-header` / `.site-footer` 10px inline on small
   screens (meant for its own header and footer). The prototype bands have no
   inline padding: the .wrap inside them has the gutter. */
.elementor header.site-header,
.elementor footer.site-footer { padding-inline: 0; }

/* ---- Theme Builder header ----------------------------------------------------
   .site-header is position:sticky. Its containing block must be the page, not the
   Theme Builder wrapper (only as tall as the header), so the wrapper gives up its
   box (same as lenz-core). */
.elementor-location-header { display: contents; }

/* ---- Hero H1 size from 901px (2026-10-16, option C) ---------------------------
   The H1 size is the widget's typography setting, printed by Elementor as
   `.elementor-18 .elementor-element.elementor-element-<id> .elementor-heading-title` (0,4,0).
   This selector is (0,4,1), so it wins without !important. Tablet below 901 and mobile
   keep the widget's clamp(3.4rem, 8.4vw, 7.6rem). */
@media (min-width: 901px) {
  .elementor .hero .elementor-widget-heading h1.elementor-heading-title { font-size: clamp(3.2rem, 5.4vw, 5rem); }
}
