/* ============================================================================
   IHP DESIGN LAYER — GENERATED. Do not edit.

   Source:  mock/build.py MOCK_CSS
   Rebuild: python3 tools/port_design.py --css

   This is the approved design's compositions: the inset rounded hero panel with
   the nav inside it, the floating card, the stat tiles, the price cards, the
   four-column footer, the utility strip. It used to be labelled "mock-only layout
   scaffolding, NOT part of the deliverable CSS", and that label is why the built
   site looked nothing like the mock it was signed off from.

   Every class is prefixed ihp-. The mock is a standalone page and could afford
   .row, .grid, .col, .label, .body, .center and .wide; in WordPress those collide
   with Kadence and Elementor, and the collision is silent — an element inheriting
   someone else's display:flex looks like a layout bug with no bad CSS to find.

   114 class(es) renamed. Loaded after ihp-child-theme.css, so the
   tokens in that file are what these rules resolve against.
   ============================================================================ */

/* ---------------------------------------------------------------------------
   Mock-only layout scaffolding. NOT part of the deliverable CSS.

   Rebuilt to reproduce the Healthca kit's actual COMPOSITIONS, not just its
   measured tokens. The first pass used the right colours, radii and type scale
   and still did not look like the kit, because the kit's character is in its
   section structures: an inset rounded hero panel with the nav inside it, cards
   whose label bar overlaps the image, floating cards that break a section
   boundary, one dark tile among light ones. Those are catalogued from a local
   render of the kit's own homepage.
   ------------------------------------------------------------------------ */
/* The child theme's spacing scale is --s-1,2,3,4,6,8,12,16,24,32. It has no
   --s-5, --s-10 or --s-20, and the mock's compositions want those intermediate
   steps. Declared here rather than used undefined: an undefined var() makes the
   whole declaration invalid, so `padding:var(--s-5) var(--s-6)` silently became
   no padding and the hero's float card had text flush against its own edges.
   tools/check_css.py now fails the build on this. */
:root{--s-5:20px; --s-10:40px; --s-20:80px;}

html *,html *::before,html *::after{box-sizing:border-box}
html body{margin:0;background:var(--ihp-white)}
html .ihp-wrap{max-width:1200px;margin:0 auto;padding:0 24px}
html .ihp-sec{padding:var(--s-24) 0}
html .ihp-grid{display:grid;gap:var(--s-6)}
html .ihp-g2{grid-template-columns:repeat(2,minmax(0,1fr))}
html .ihp-g3{grid-template-columns:repeat(3,minmax(0,1fr))}
html .ihp-g4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:900px){html .ihp-g2,html .ihp-g3,html .ihp-g4{grid-template-columns:minmax(0,1fr)}}

/* Centring text is not centring the box.
   The theme constrains p to 68ch and h1/h2 to 28ch. A constrained block with
   text-align:center and no auto margins sits flush left and centres its text
   inside that narrow box — which on a 1920px screen puts it hundreds of pixels
   left of where it belongs. Mobile hid it completely, because there the box fills
   the viewport. So every centring utility here sets both. */
html .ihp-center{text-align:center}
html .ihp-center>p,html .ihp-center>h1,html .ihp-center>h2,html .ihp-center>h3,html .ihp-center>ul,html .ihp-center>div{margin-left:auto;margin-right:auto}
html p.ihp-center,html h2.ihp-center,html h3.ihp-center{margin-left:auto;margin-right:auto}
html .ihp-stack>*+*{margin-top:var(--s-4)}
html img{max-width:100%;display:block}



/* Kit device: tinted sections are INSET ROUNDED BLOCKS on white, not full-bleed
   bands. This is most of why the kit reads as "panelled" rather than "striped". */
html .ihp-tint{background:var(--ihp-off-white);border-radius:28px;margin:0 20px;
  padding:var(--s-24) 0}
@media (max-width:700px){html .ihp-tint{margin:0 8px;border-radius:18px}}



/* Kit device: section eyebrow is CENTRED above a centred H2. */
html /* max-width:none AND auto margins,html both load-bearing.
   The theme sets p{max-width:68ch},html so this paragraph had a 615px box. text-align
   centres text INSIDE its box,html and a 615px box with no auto margins sits flush
   left — so on a 1920px screen the eyebrow rendered ~530px left of the heading it
   labels,html on every section of every page. It looked fine on mobile because there
   the box fills the viewport. */
.ihp-eyebrow{font-size:.8125rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ihp-teal-ink);text-align:center;margin:0 auto 10px;max-width:none}

/* The left-aligned variant used inside two-column blocks opts out. */
html .ihp-eyebrow--left{text-align:left;margin-left:0;margin-right:0}
html .ihp-sec-h2{text-align:center;margin:0 auto var(--s-6);max-width:26ch}

/* A centred intro under a centred H2. */
html .ihp-sec-lead{text-align:center;max-width:70ch;margin:0 auto var(--s-12);
  font-size:var(--ihp-lead);line-height:1.6;color:var(--ihp-slate)}
html .ihp-sec-h2--last{margin-bottom:var(--s-12)}



/* Utility bar sits on WHITE above the hero panel. */
html .ihp-util{background:transparent;color:var(--ihp-navy);font-size:.8125rem}
html .ihp-util .ihp-wrap{display:flex;gap:var(--s-6);align-items:center;justify-content:space-between;
  padding-top:14px;padding-bottom:14px;flex-wrap:wrap}
html .ihp-util a{color:var(--ihp-navy)}
html .ihp-util strong{color:var(--ihp-navy)}
html .ihp-badge24{display:inline-flex;align-items:center;gap:8px;color:var(--ihp-teal-ink);font-weight:700}

/* Inline SVG with no intrinsic size fills its container. Every icon needs an
   explicit box or it renders at the default 300x150 replaced-element size. */
html .ihp-badge24 svg{width:18px;height:18px;flex:0 0 auto}



/* Kit device: the hero is an INSET ROUNDED PANEL with the nav inside it. */
html .ihp-hero{position:relative;margin:0 20px;border-radius:28px;overflow:hidden;
  background:linear-gradient(160deg,#00294F 0%,#003B71 70%);color:var(--ihp-white)}
@media (max-width:700px){html .ihp-hero{margin:0 8px;border-radius:18px}}
html .ihp-hero>.ihp-bg{position:absolute;inset:0}
html .ihp-hero>.ihp-bg img{width:100%;height:100%;object-fit:cover;opacity:.30}
html .ihp-hero>.ihp-bg::after{content:"";position:absolute;inset:0;
  background:linear-gradient(100deg,rgba(0,41,79,.94) 0%,rgba(0,59,113,.80) 52%,rgba(0,59,113,.42) 100%)}
html .ihp-hero .ihp-inner{position:relative;z-index:2;padding:0 clamp(20px, 3.4vw, 52px)}



/* Nav row inside the hero, with a rule under it — a kit signature. */
html .ihp-hnav{display:flex;align-items:center;gap:var(--s-6);padding:18px 0 16px;
  border-bottom:1px solid rgba(255,255,255,.20)}
html .ihp-hnav .ihp-brandmark{height:76px;width:auto;flex:0 0 auto;
  background:#fff;border-radius:12px;padding:6px 10px}
html .ihp-hnav nav{margin-left:auto;display:flex;gap:6px;align-items:center}
html .ihp-hnav nav a{color:rgba(255,255,255,.88);text-decoration:none;font-weight:500;
  font-size:.9375rem;white-space:nowrap;padding:9px 16px;border-radius:var(--r-pill)}
html .ihp-hnav nav a:hover{color:#fff;background:rgba(255,255,255,.10)}

/* Kit device: active item is a PILL, not an underline. */
html .ihp-hnav nav a[aria-current]{background:#fff;color:var(--ihp-navy);font-weight:600}
html .ihp-hnav .ihp-cta{background:#fff;color:var(--ihp-navy);font-weight:600;padding:11px 22px;
  border-radius:var(--r-pill)}
html .ihp-hnav .ihp-cta:hover{background:var(--ihp-mist);color:var(--ihp-navy)}
html .ihp-navtoggle{display:none;margin-left:auto;background:rgba(255,255,255,.12);
  border:1px solid rgba(255,255,255,.28);border-radius:12px;width:46px;height:44px;
  cursor:pointer;color:#fff;font-size:20px;line-height:1}
@media (max-width:1040px){
  html .ihp-navtoggle{display:block}
  html .ihp-hnav{position:relative;flex-wrap:wrap}
  html .ihp-hnav nav{display:none;flex-basis:100%;flex-direction:column;align-items:stretch;
    gap:0;padding-bottom:10px}
  html .ihp-hnav nav[data-open]{display:flex}
  html .ihp-hnav nav a{padding:13px 4px;border-radius:0;border-top:1px solid rgba(255,255,255,.16)}
  html .ihp-hnav nav a[aria-current]{background:transparent;color:#fff}
  html .ihp-hnav .ihp-cta{margin-top:10px;text-align:center;border-top:0}
}

html .ihp-hero-body{display:grid;grid-template-columns:minmax(0,1.02fr) minmax(0,.98fr);
  gap:var(--s-10);align-items:start;padding:var(--s-16) 0 var(--s-16)}
@media (max-width:1000px){html .ihp-hero-body{grid-template-columns:minmax(0,1fr);padding-bottom:var(--s-10)}}
html .ihp-hero h1{color:var(--ihp-white);max-width:19ch;margin:0}
html .ihp-hero-body p{color:rgba(255,255,255,.88)}
html .ihp-hero-lead{font-size:var(--ihp-lead);line-height:1.6;margin-top:var(--s-5)}
html .ihp-hero-figure{border-radius:var(--r-card);overflow:hidden;align-self:stretch}
html .ihp-hero-figure img{width:100%;height:480px;object-fit:cover;object-position:center 26%}
@media (max-width:1000px){html .ihp-hero-figure{display:none}}



/* Kit device: pill buttons carry a trailing arrow. */
html .ihp-btnrow{display:flex;gap:var(--s-4);flex-wrap:wrap;align-items:center;margin-top:var(--s-6)}
html .ihp-arr::after{content:"→";margin-left:10px;font-weight:400}

/* Kit device: a circular icon button beside the primary CTA. */
html .ihp-iconbtn{width:52px;height:52px;border-radius:50%;background:var(--ihp-teal);
  color:var(--ihp-deep-navy);display:grid;place-items:center;flex:0 0 auto}
html .ihp-iconbtn svg{width:22px;height:22px}
html .ihp-calllink{display:flex;align-items:center;gap:12px}
html .ihp-calllink small{display:block;color:rgba(255,255,255,.72);font-size:.75rem}
html .ihp-calllink strong{font-size:1.0625rem;color:#fff}



/* Kit device: a floating white card overlapping the hero's bottom-left. */
/* The kit's equivalent (its "Opening Hours" card) sits INSIDE the hero panel at
   the bottom left. A negative margin pushed it past the panel edge, where
   overflow:hidden clipped it. */
html .ihp-floatcard{background:#fff;color:var(--ihp-ink);border-radius:var(--r-card);
  box-shadow:0 20px 50px rgba(0,0,0,.24);padding:var(--s-5) var(--s-6);
  max-width:430px;margin:var(--s-8) 0 0;position:relative;z-index:3}
html .ihp-floatcard h3{margin:0 0 12px;font-size:1.125rem;font-weight:600;color:var(--ihp-navy)}
html .ihp-floatcard .ihp-row{display:flex;justify-content:space-between;gap:var(--s-4);
  padding:9px 0;font-size:1rem;border-top:1px solid var(--ihp-mist)}
html .ihp-floatcard .ihp-row:first-of-type{border-top:0}
html .ihp-floatcard .ihp-row b{color:var(--ihp-teal-ink)}
html .ihp-hero .ihp-clarifier,html .ihp-dark .ihp-clarifier{margin-top:var(--s-8);padding:var(--s-4) var(--s-5);
  border-left:3px solid var(--ihp-teal);background:rgba(255,255,255,.09);
  border-radius:0 14px 14px 0;max-width:62ch}
html .ihp-hero .ihp-clarifier strong,html .ihp-dark .ihp-clarifier strong{color:#fff}
html .ihp-taglock{margin-top:var(--s-6);color:var(--ihp-teal);font-weight:700;letter-spacing:.01em}



/* Kit device: image with a FLOATING TRANSLUCENT CARD overlapping its bottom. */
html .ihp-figcard{position:relative;border-radius:var(--r-card);overflow:visible}
html .ihp-figcard>img{border-radius:var(--r-card);width:100%;height:440px;object-fit:cover}
html .ihp-figcard .ihp-figcard-note{position:absolute;left:24px;right:24px;bottom:-28px;
  background:linear-gradient(180deg,rgba(255,255,255,.97),rgba(247,250,252,.97));
  border-radius:16px;box-shadow:0 18px 44px rgba(0,41,79,.18);padding:var(--s-5);
  display:flex;gap:var(--s-4);align-items:flex-start}
html .ihp-figcard .ihp-figcard-note h3{margin:0 0 5px;font-size:1.0625rem;font-weight:600;color:var(--ihp-navy)}
html .ihp-figcard .ihp-figcard-note p{margin:0;font-size:1rem;line-height:1.55;color:var(--ihp-slate)}



/* Kit device: circular navy icon badge. */
html .ihp-ibadge{width:52px;height:52px;border-radius:50%;background:var(--ihp-navy);
  color:#fff;display:grid;place-items:center;flex:0 0 auto}
html .ihp-ibadge svg{width:24px;height:24px}
html .ihp-ibadge--teal{background:rgba(0,171,200,.16);color:var(--ihp-teal-ink)}



/* Kit device: stat tiles — ONE dark filled, the rest light tinted. */
html .ihp-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-4)}
@media (max-width:800px){html .ihp-stats{grid-template-columns:minmax(0,1fr)}}
html .ihp-stat{border-radius:18px;padding:var(--s-6);background:var(--ihp-off-white);
  display:flex;flex-direction:column}
html .ihp-stat .ihp-n{font-size:1.5rem;font-weight:700;color:var(--ihp-navy);line-height:1.2;
  margin:var(--s-4) 0 var(--s-3)}
html .ihp-stat .ihp-lbl{margin:0;font-size:1rem;line-height:1.5;color:var(--ihp-slate)}
html .ihp-stat--dark{background:var(--ihp-navy)}
html .ihp-stat--dark .ihp-n{color:#fff}
html .ihp-stat--dark .ihp-lbl{color:rgba(255,255,255,.86)}
html .ihp-stat--dark .ihp-ibadge{background:rgba(255,255,255,.14)}



/* Kit device: card image with a NAVY LABEL BAR overlapping the image bottom. */
/* Cards in a row have to align internally, not just share an outer height. Flex
   column with the action pinned by margin-top:auto puts every "Learn more" on the
   same baseline regardless of how long the copy above it runs — the misalignment
   that made these rows look untidy. */
html .ihp-svc{background:#fff;border-radius:var(--r-card);box-shadow:var(--e1);
  border:1px solid var(--ihp-mist);overflow:hidden;display:flex;flex-direction:column}
html .ihp-svc .ihp-pic{position:relative}
html .ihp-svc .ihp-pic img{width:100%;height:200px;object-fit:cover}
html .ihp-svc .ihp-svc-label{position:absolute;left:22px;right:22px;bottom:-22px;background:var(--ihp-navy);
  color:#fff;border-radius:14px;padding:15px 18px;font-weight:600;font-size:1.0625rem;
  text-align:center;box-shadow:0 12px 28px rgba(0,41,79,.28)}
html .ihp-svc .ihp-body{padding:calc(var(--s-8) + 8px) var(--s-6) var(--s-6);text-align:center;
  display:flex;flex-direction:column;flex:1 1 auto}
html .ihp-svc .ihp-body .ihp-morelink{margin-top:auto}
html .ihp-svc .ihp-body p{margin:0 0 var(--s-5);font-size:1rem;line-height:1.6;color:var(--ihp-slate)}
html .ihp-morelink{color:var(--ihp-teal-ink);font-weight:600;font-size:1rem;text-decoration:none}
html .ihp-morelink::after{content:"→";margin-left:8px}



/* Kit device: two feature columns flanking a centre image, inner edges aligned in. */
html .ihp-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.9fr) minmax(0,1fr);
  gap:var(--s-8);align-items:center}
@media (max-width:1000px){html .ihp-split{grid-template-columns:minmax(0,1fr)}
  html .ihp-split .ihp-mid{order:-1}html .ihp-split .ihp-col--l{text-align:left}html .ihp-split .ihp-col--l .ihp-feat{flex-direction:row}}
html .ihp-split .ihp-mid img{border-radius:var(--r-card);width:100%;height:440px;object-fit:cover}
html .ihp-feat{display:flex;gap:var(--s-4);align-items:flex-start}
html .ihp-feat h3{margin:0 0 6px;font-size:1.0625rem;font-weight:600;color:var(--ihp-navy)}
html .ihp-feat p{margin:0;font-size:1rem;line-height:1.6;color:var(--ihp-slate)}
html .ihp-col--l{text-align:right}
html .ihp-col--l .ihp-feat{flex-direction:row-reverse}
html .ihp-col>*+*{margin-top:var(--s-6)}



/* Location + video cards */
html .ihp-loc-card{overflow:hidden}
html .ihp-loc-card img{height:186px;object-fit:cover;width:100%}
html .ihp-loc-card .ihp-body{padding:var(--s-5);color:var(--ihp-ink)}
html .ihp-loc-card .ihp-body h3{color:var(--ihp-navy)}
html .ihp-loc-card .ihp-body p{color:var(--ihp-slate)}
html .ihp-loc-card .ihp-body p strong{color:var(--ihp-ink)}
html .ihp-pill{display:inline-block;border-radius:var(--r-pill);padding:4px 13px;font-size:.75rem;
  font-weight:700;letter-spacing:.03em}
html .ihp-pill-open{background:rgba(0,171,200,.16);color:var(--ihp-teal-ink)}
html .ihp-pill-plan{background:#FDF3E3;color:#8A5A00}
html .ihp-vid{position:relative;border-radius:var(--r-card);overflow:hidden;background:#00294F}
html .ihp-vid img{height:186px;object-fit:cover;width:100%;opacity:.66}
html .ihp-vid .ihp-play{position:absolute;top:0;left:0;right:0;height:186px;display:grid;place-items:center}
html .ihp-vid .ihp-play span{width:58px;height:58px;border-radius:50%;background:rgba(255,255,255,.94);
  display:grid;place-items:center;color:var(--ihp-navy);font-size:18px;padding-left:4px}
html .ihp-vid .ihp-cap{padding:var(--s-4) var(--s-5);color:#fff;font-weight:600;font-size:.9375rem}



/* truth table */
html .ihp-truth{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-6)}
@media (max-width:900px){html .ihp-truth{grid-template-columns:minmax(0,1fr)}}
html .ihp-truth ul{list-style:none;padding:0;margin:0}
html .ihp-truth li{padding:11px 0;border-top:1px dashed var(--ihp-mist);font-size:.9375rem;
  display:flex;gap:10px;align-items:flex-start}
html .ihp-truth li:first-child{border-top:0}
html .ihp-tick::before{content:"✓";color:var(--ihp-teal-ink);font-weight:700;flex:0 0 auto}
html .ihp-cross::before{content:"—";color:var(--ihp-slate);font-weight:700;flex:0 0 auto}



/* Starting-price panel. Replaces three tier cards, which implied levels that do
   not exist: every membership includes the same services, and a higher fee only
   reflects a higher maximum out-of-pocket. "Starts at" leads both figures. */
html .ihp-startpanel{display:grid;grid-template-columns:minmax(0,1fr) 1px minmax(0,1fr) minmax(0,1.25fr);
  gap:var(--s-8);align-items:center;background:#fff;border:1px solid var(--ihp-mist);
  border-radius:var(--r-card);box-shadow:var(--e1);padding:var(--s-10) var(--s-8)}
@media (max-width:1000px){html .ihp-startpanel{grid-template-columns:minmax(0,1fr)}
  html .ihp-startdiv{display:none}}
html .ihp-startdiv{background:var(--ihp-mist);align-self:stretch}
html .ihp-startcol .ihp-from{margin:0;font-size:var(--ihp-body-sm);font-weight:600;
  letter-spacing:.06em;text-transform:uppercase;color:var(--ihp-teal-ink)}
html .ihp-startcol .ihp-amt{margin:6px 0 var(--s-3);font-size:clamp(2.5rem, 2rem + 2vw, 3.5rem);
  font-weight:700;color:var(--ihp-navy);line-height:1.02;letter-spacing:-.02em}
html .ihp-startcol .ihp-amt span{font-size:1.125rem;font-weight:600;color:var(--ihp-slate);
  letter-spacing:0}
html .ihp-startcol .ihp-note{margin:0;font-size:1rem;line-height:1.6;color:var(--ihp-slate)}
html .ihp-startcta{background:var(--ihp-off-white);border-radius:18px;padding:var(--s-6)}
html .ihp-startcta p{margin:0 0 var(--s-4);font-size:1rem;line-height:1.6;color:var(--ihp-ink)}
html .ihp-startcta .ihp-fineprint{margin:var(--s-3) 0 0;font-size:var(--ihp-body-sm);color:var(--ihp-slate)}



/* Three-step explainer for how the price scales. */
html .ihp-scaleflow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-6)}
@media (max-width:900px){html .ihp-scaleflow{grid-template-columns:minmax(0,1fr)}}
html .ihp-scalestep{background:#fff;border:1px solid var(--ihp-mist);border-radius:var(--r-card);
  padding:var(--s-6);box-shadow:var(--e1)}
html .ihp-scalestep .ihp-ibadge{font-weight:700;font-size:1.125rem}
html .ihp-scalestep h3{margin:var(--s-4) 0 var(--s-3)}
html .ihp-scalestep p{margin:0;font-size:1rem;line-height:1.6;color:var(--ihp-slate)}



/* pricing */
html .ihp-price-card{border:1px solid var(--ihp-mist);border-radius:var(--r-card);padding:var(--s-6);
  background:#fff;box-shadow:var(--e1)}
html .ihp-price-card.ihp-feat2{border:2px solid var(--ihp-navy);position:relative}
html .ihp-price-card .ihp-amt{font-size:2.375rem;font-weight:700;color:var(--ihp-navy);line-height:1.1}
html .ihp-price-card .ihp-per{color:var(--ihp-slate);font-size:var(--ihp-body-sm)}
html .ihp-table-scroll{overflow-x:auto}
html table.ihp-bands{width:100%;border-collapse:collapse;font-size:.9375rem;min-width:460px}
html table.ihp-bands th,html table.ihp-bands td{text-align:left;padding:13px 10px;border-top:1px dashed var(--ihp-mist)}
html table.ihp-bands th{color:var(--ihp-navy);font-weight:700;border-top:0}



/* Kit device: CTA card OVERLAPPING the footer's top edge. */
html .ihp-ctacard{position:relative;z-index:2;margin:0 20px -110px;border-radius:24px;
  background:linear-gradient(120deg,#E8F6FA 0%,#F7FAFC 60%);
  padding:var(--s-10) clamp(24px,4vw,56px);box-shadow:0 26px 60px rgba(0,41,79,.16);
  display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);
  gap:var(--s-8);align-items:center}
/* The -120px is a deliberate overlap: the card straddles the top edge of the navy
   footer. On desktop it costs nothing, because the card is a two-column grid with the
   photograph on the right and its buttons sit side by side well clear of the bottom.
   On mobile the photograph is hidden (next rule), the grid collapses to one column and
   the buttons stack -- so the last button, "Talk to a Program Specialist", ended 48px
   INSIDE the footer and was ~98% covered by navy. Measured at 390px wide.
   The mock has the same bug, so the port was faithful and the design was wrong.
   Keeping the overlap and paying for it in card padding preserves the intended
   layered look while guaranteeing nothing in the card can fall into the footer. */
@media (max-width:900px){html .ihp-ctacard{grid-template-columns:minmax(0,1fr);
  margin:0 8px -120px;padding-bottom:calc(var(--s-10) + 120px)}}
html .ihp-ctacard h2{margin:0 0 10px;color:var(--ihp-navy)}
/* --- the two LeadConnector hosts must not contribute page height ------------
   Sarah is two widgets -- chat and call -- each injected as a <chat-widget>
   element at the end of <body>. <chat-widget> is an unknown element to the
   browser until LeadConnector's script upgrades it, and on a phone the pair were
   leaving a tall band of empty white below the footer: the page scrolled well past
   the end of the navy footer into nothing.
   position:fixed takes them out of normal flow, so whatever they measure
   internally they can no longer add to the document's height. Anchored
   bottom-right, which is where their own bubble already sits, so their internals
   land where they always did. No width or height here on purpose: sizing the host
   would risk clipping a panel that renders inside it.
   NOT verified in a browser -- the widget is third-party and Chromium in this
   environment cannot reach either site to load it. What IS verified is the
   containment itself, against a fixture in tools/chat_widget_test.js. */
html chat-widget{position:fixed;bottom:0;right:0;z-index:999998}

html .ihp-ctacard p{margin:0;color:var(--ihp-slate)}
html .ihp-ctacard .ihp-art{border-radius:18px;overflow:hidden}
html .ihp-ctacard .ihp-art img{width:100%;height:210px;object-fit:cover}
@media (max-width:900px){html .ihp-ctacard .ihp-art{display:none}}



/* Kit device: navy footer with a large watermark. */
html .ihp-footer{position:relative;padding:calc(110px + var(--s-16)) 0 var(--s-8);overflow:hidden}
html .ihp-footer::before{content:"";position:absolute;right:-6%;top:16%;width:44vw;height:44vw;
  background:var(--ihp-glow);pointer-events:none}
html .ihp-footer .ihp-wrap{position:relative;z-index:1}
html .ihp-footer .ihp-cols{display:grid;gap:var(--s-8);
  grid-template-columns:minmax(0,1.5fr) repeat(3,minmax(0,1fr))}
@media (max-width:900px){html .ihp-footer .ihp-cols{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){html .ihp-footer .ihp-cols{grid-template-columns:minmax(0,1fr)}}
html .ihp-footer h3{font-size:1.0625rem;color:#fff;margin:0 0 var(--s-4)}
html .ihp-footer ul{list-style:none;padding:0;margin:0;font-size:1rem}
html .ihp-footer li{margin:9px 0}
html .ihp-footer p{overflow-wrap:anywhere}
html .ihp-footer .ihp-fbrand{height:80px;width:auto;background:#fff;border-radius:12px;
  padding:7px 11px;margin-bottom:var(--s-4)}
html .ihp-fcontact{display:flex;gap:12px;align-items:flex-start;margin:var(--s-4) 0}
html .ihp-fcontact .ihp-ibadge{width:42px;height:42px;background:rgba(0,171,200,.20);color:var(--ihp-teal)}
html .ihp-fcontact .ihp-ibadge svg{width:19px;height:19px}
html .ihp-fcontact small{display:block;color:rgba(255,255,255,.62);font-size:.75rem}
html .ihp-disclosure{margin-top:var(--s-12);padding-top:var(--s-6);
  border-top:1px solid rgba(255,255,255,.16);font-size:.9375rem;line-height:1.7;
  color:var(--ihp-mist);max-width:none}
html .ihp-disclosure strong{color:#fff}
html .ihp-copyline{margin:var(--s-6) auto 0;max-width:none;padding-top:var(--s-5);
  border-top:1px solid rgba(255,255,255,.16);text-align:center;font-size:.9375rem;
  color:rgba(255,255,255,.66)}



/* photo hero for interior pages — same inset panel, image-led */
/* The odometer band is an inset rounded panel too. A full-bleed navy strip
   immediately below an inset hero broke the kit's panelled rhythm. */
html .ihp-impact{border-radius:28px;margin:var(--s-16) 20px 0}
@media (max-width:700px){html .ihp-impact{margin:var(--s-12) 8px 0;border-radius:18px}}

html .ihp-hero--photo>.ihp-bg img{opacity:.42}
html .ihp-hero--photo .ihp-hero-body{grid-template-columns:minmax(0,1fr);padding-bottom:var(--s-12)}
html .ihp-hero--photo h1{max-width:26ch}



/* FAQ */
html .ihp-faq summary{font-size:1.125rem;line-height:1.45;font-weight:600}
html .ihp-faq--big5 summary{font-size:1.25rem}
html .ihp-faqgroups{display:grid;gap:var(--s-8)}
html .ihp-faqgroup{background:#fff;border:1px solid var(--ihp-mist);border-radius:var(--r-card);
  padding:var(--s-8);box-shadow:var(--e1)}
html .ihp-faqgroup__head{display:flex;gap:var(--s-4);align-items:center;margin-bottom:var(--s-4)}
html .ihp-faqgroup__head h2{margin:0;font-size:1.25rem;letter-spacing:.02em;max-width:none}
html .ihp-microfaq{max-width:84ch;margin:0 auto}



/* Blog empty state: the card pattern the first posts will fill, greyed. */
html .ihp-blog-slot{opacity:.5}
html .ihp-blog-slot .ihp-ph{height:200px;background:linear-gradient(100deg,#E7EEF3,#F2F7FA,#E7EEF3)}
html .ihp-blog-slot .ihp-svc-label{background:var(--ihp-slate)}
html .ihp-blog-slot .ihp-ph-line{height:13px;border-radius:7px;background:#E7EEF3;margin:0 0 10px}
html .ihp-blog-slot .ihp-ph-line--short{width:62%;margin-left:auto;margin-right:auto}
html .ihp-blog-slot .ihp-ph-line{max-width:none}



/* Forms */
html .ihp-formgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-4)}
@media (max-width:700px){html .ihp-formgrid{grid-template-columns:minmax(0,1fr)}}
html .ihp-formgrid label{display:block;font-size:1rem;font-weight:600;color:var(--ihp-navy)}
html .ihp-formgrid label.ihp-wide{grid-column:1/-1}
html .ihp-formgrid .ihp-field{margin-top:8px;font-weight:400;color:var(--ihp-ink)}
html .ihp-formgrid .ihp-opt{font-weight:400;color:var(--ihp-slate)}
html .ihp-fineprint{margin:var(--s-4) 0 0;font-size:var(--ihp-body-sm);color:var(--ihp-slate)}



/* Legal pages: a single readable measure, generous rhythm, numbered sections
   that scan. These are long documents people search rather than read. */
html .ihp-legal{max-width:76ch;margin:0 auto;font-size:1.0625rem;line-height:1.75}
html .ihp-legal h2{font-size:1.375rem;margin:var(--s-12) 0 var(--s-4);max-width:none;
  padding-top:var(--s-4);border-top:1px solid var(--ihp-mist)}
html .ihp-legal h2:first-of-type{margin-top:0;border-top:0;padding-top:0}
html .ihp-legal h3{font-size:1.125rem;margin:var(--s-6) 0 var(--s-3)}
html .ihp-legal p{max-width:none;margin:0 0 var(--s-4)}
html .ihp-legal ul{margin:0 0 var(--s-4);padding-left:1.35em}
html .ihp-legal li{margin:0 0 10px}
html .ihp-legal .ihp-legal-updated{font-size:var(--ihp-body-sm);color:var(--ihp-slate);
  background:var(--ihp-off-white);border-radius:12px;padding:12px 16px;
  display:inline-block}
html .ihp-faq details p{font-size:1rem;line-height:1.7;margin:var(--s-4) 0 0;max-width:72ch}
html .ihp-faq details{padding:var(--s-5) 0}
html .ihp-annot{background:#FFF8E6;border-left:3px solid #E0A400;padding:12px 16px;font-size:13px;
  line-height:1.6;color:#4A3B12;max-width:1200px;margin:0 auto var(--s-6)}
html .ihp-annot code{background:#F2E6C7;padding:1px 4px;border-radius:3px}

/* ---------------------------------------------------------------------------
   RENAME AUDIT — 114 class(es), mock name to shipped name.
   Generated. The mock is the source; this is here so a selector can be
   traced back to it without opening another file.

     amt                    -> .ihp-amt
     annot                  -> .ihp-annot
     arr                    -> .ihp-arr
     art                    -> .ihp-art
     article-post-thumbnail -> .ihp-article-post-thumbnail
     badge                  -> .ihp-badge
     badge24                -> .ihp-badge24
     bands                  -> .ihp-bands
     bg                     -> .ihp-bg
     blog-slot              -> .ihp-blog-slot
     body                   -> .ihp-body
     brandmark              -> .ihp-brandmark
     btnrow                 -> .ihp-btnrow
     calllink               -> .ihp-calllink
     cap                    -> .ihp-cap
     card                   -> .ihp-card
     card--link             -> .ihp-card--link
     center                 -> .ihp-center
     clarifier              -> .ihp-clarifier
     col                    -> .ihp-col
     col--l                 -> .ihp-col--l
     cols                   -> .ihp-cols
     copyline               -> .ihp-copyline
     cross                  -> .ihp-cross
     cta                    -> .ihp-cta
     ctacard                -> .ihp-ctacard
     digit                  -> .ihp-digit
     digit__n               -> .ihp-digit__n
     digit__strip           -> .ihp-digit__strip
     disclosure             -> .ihp-disclosure
     entry-header           -> .ihp-entry-header
     entry-taxonomies       -> .ihp-entry-taxonomies
     eyebrow                -> .ihp-eyebrow
     eyebrow--left          -> .ihp-eyebrow--left
     faqgroup               -> .ihp-faqgroup
     faqgroup__head         -> .ihp-faqgroup__head
     faqgroups              -> .ihp-faqgroups
     fbrand                 -> .ihp-fbrand
     fcontact               -> .ihp-fcontact
     feat                   -> .ihp-feat
     feat2                  -> .ihp-feat2
     figcard                -> .ihp-figcard
     fineprint              -> .ihp-fineprint
     floatcard              -> .ihp-floatcard
     formgrid               -> .ihp-formgrid
     from                   -> .ihp-from
     g2                     -> .ihp-g2
     g3                     -> .ihp-g3
     g4                     -> .ihp-g4
     grid                   -> .ihp-grid
     hero                   -> .ihp-hero
     hero--photo            -> .ihp-hero--photo
     hero-body              -> .ihp-hero-body
     hero-figure            -> .ihp-hero-figure
     hero-lead              -> .ihp-hero-lead
     hnav                   -> .ihp-hnav
     ibadge                 -> .ihp-ibadge
     ibadge--teal           -> .ihp-ibadge--teal
     iconbtn                -> .ihp-iconbtn
     in-view                -> .ihp-in-view
     inner                  -> .ihp-inner
     is-playing             -> .ihp-is-playing
     label                  -> .ihp-label
     lbl                    -> .ihp-lbl
     legal                  -> .ihp-legal
     legal-updated          -> .ihp-legal-updated
     loc-card               -> .ihp-loc-card
     microfaq               -> .ihp-microfaq
     mid                    -> .ihp-mid
     morelink               -> .ihp-morelink
     n                      -> .ihp-n
     navtoggle              -> .ihp-navtoggle
     note                   -> .ihp-note
     opt                    -> .ihp-opt
     per                    -> .ihp-per
     ph                     -> .ihp-ph
     ph-line                -> .ihp-ph-line
     ph-line--short         -> .ihp-ph-line--short
     pic                    -> .ihp-pic
     pill                   -> .ihp-pill
     pill-open              -> .ihp-pill-open
     pill-plan              -> .ihp-pill-plan
     play                   -> .ihp-play
     post-thumbnail         -> .ihp-post-thumbnail
     post-title             -> .ihp-post-title
     price-card             -> .ihp-price-card
     row                    -> .ihp-row
     scaleflow              -> .ihp-scaleflow
     scalestep              -> .ihp-scalestep
     sec                    -> .ihp-sec
     sec-h2                 -> .ihp-sec-h2
     sec-h2--last           -> .ihp-sec-h2--last
     sec-lead               -> .ihp-sec-lead
     sep                    -> .ihp-sep
     single-post            -> .ihp-single-post
     split                  -> .ihp-split
     stack                  -> .ihp-stack
     startcol               -> .ihp-startcol
     startcta               -> .ihp-startcta
     startdiv               -> .ihp-startdiv
     startpanel             -> .ihp-startpanel
     stat                   -> .ihp-stat
     stat--dark             -> .ihp-stat--dark
     stats                  -> .ihp-stats
     svc                    -> .ihp-svc
     table-scroll           -> .ihp-table-scroll
     taglock                -> .ihp-taglock
     tick                   -> .ihp-tick
     tint                   -> .ihp-tint
     truth                  -> .ihp-truth
     util                   -> .ihp-util
     vid                    -> .ihp-vid
     wide                   -> .ihp-wide
     wrap                   -> .ihp-wrap
   ------------------------------------------------------------------------ */
