/* ==========================================================================
   design-fixes.css — loaded LAST, after mcs-polish.css.
   Visual-QA pass (2026-07-16): fixes for defects the client flagged as
   "somewhat ugly". Scope is limited to spacing, alignment, hierarchy,
   consistency, hover/focus states, and responsive behaviour. NO new hues
   (brand tokens only) and NO font swaps — sections stay recognizable.

   Brand tokens available (from the ported Webflow CSS):
     --wbec-dark-blue #0b1021   --wbec-royal-blue #3263e4
     --dark #08262a             --primary-1 #264c51 (teal)
     --primary-2 #b85b24 (rust) --primary-3 #6b818c (slate)
     --light #eeece7 (cream)    --white-smoke #f4f4f4
   ========================================================================== */

/* ---------- Back-to-top: appear only after scrolling -------------------- */
/* The button is position:fixed (webflow css). Hidden by default, fades +
   slides up once BackToTop.tsx flags .mcs-btt-visible (scrollY > 400). */
.back-to-top-button.mcs-btt {
  opacity: 0;
  visibility: hidden;
  transform: translateY(12px);
  transition: opacity .22s ease, transform .22s ease, visibility 0s linear .22s;
}
.back-to-top-button.mcs-btt.mcs-btt-visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  transition: opacity .22s ease, transform .22s ease, visibility 0s;
}

/* ---------- Empty state (state pages with no listed surgeons) ----------- */
/* Was two unstyled centred paragraphs floating in white space under a big
   left heading — read as broken. Give it a deliberate "no results" panel. */
.mcs-empty-state {
  max-width: 640px;
  margin: 8px 0 8px;
  padding: 40px 40px 44px;
  text-align: center;
  background: var(--white-smoke);
  border: 1px solid var(--border-dark);
  border-radius: 14px;
}
.mcs-empty-state .mcs-empty-lead {
  margin: 0 0 10px;
  font-weight: 600;
  color: var(--dark);
}
.mcs-empty-state .mcs-empty-sub {
  margin: 0;
  color: var(--primary-3);
  line-height: 1.6;
}
.mcs-empty-state a {
  color: var(--wbec-royal-blue);
  text-decoration: underline;
  text-underline-offset: 2px;
  font-weight: 500;
}
.mcs-empty-state a:hover { opacity: .8; }

/* ---------- National list: consistent headshot sizing/cropping ---------- */
/* The "rest" doctor headshots had no sizing, so each rendered at its source
   image's natural size -> ragged, inconsistent cards. Every rest card shares
   the same .composed-elements container width, so a uniform square with
   object-fit:cover makes all headshots identical size + crop. */
.composed-elements.contained-section-right.werhyrt {
  max-width: 78%;
  margin-left: auto;
  margin-right: auto;
}
.mcs-natl-headshot {
  display: block;
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  object-position: center 28%;
  border-radius: 20px;
}
@media screen and (max-width: 767px) {
  .composed-elements.contained-section-right.werhyrt { max-width: 320px; }
}

/* ---------- Doctor header avatar: graceful initials fallback ------------ */
/* .team-avatar is a 300px #f9fafb circle; an empty one reads as a blank white
   disc. When the remote photo is missing/fails, DoctorAvatar renders this
   monogram instead — brand blues + white initials, filling the circle. */
.mcs-avatar-fallback {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(140deg, var(--wbec-royal-blue), var(--wbec-dark-blue));
  color: #fff;
}
.mcs-avatar-fallback span {
  font-family: Montserrat, sans-serif;
  font-weight: 700;
  font-size: 104px;
  line-height: 1;
  letter-spacing: 2px;
}
@media screen and (max-width: 767px) {
  .mcs-avatar-fallback span { font-size: 84px; }
}

/* ---------- Reviews: adopt brand tokens (styles.ts invites .rv-root overrides) */
/* The two-lane review system ships neutral placeholder colours (a generic blue
   accent, Tailwind greys) and a dark-mode block. The site is light-only and
   brand-blue. `body .rv-root` (0,1,1) outranks the component's own `.rv-root`
   rules incl. its @media(dark) block, so this remaps every review colour to a
   brand token — Submit + links become royal-blue, muted text -> brand slate,
   borders/subtle bg -> brand tints. No markup changes. */
body .rv-root {
  --rv-fg: #08262a;
  --rv-muted: #6b818c;          /* brand slate (--primary-3) */
  --rv-border: rgba(8, 38, 42, 0.14);
  --rv-bg: #ffffff;
  --rv-bg-subtle: #f4f4f4;      /* brand white-smoke */
  --rv-star: #c47600;           /* review gold, deepened from #f5a623 — 3.22:1 on the
                                   #f4f4f4 card / 3.54:1 on white (icon threshold is 3:1;
                                   the original sat at 1.84:1, flagged by visual-qa.mjs) */
  --rv-star-empty: #cbd2d3;
  --rv-accent: #3263e4;         /* brand royal-blue (--wbec-royal-blue) */
  --rv-accent-fg: #ffffff;
  --rv-radius: 10px;
}
/* Give the Google-source chip a touch more brand identity + tighter baseline. */
body .rv-root .rv-via-google {
  color: var(--primary-3);
  background: #f4f4f4;
  border-color: rgba(8, 38, 42, 0.14);
}

/* ---------- QA sweep fixes (docs/visual-qa/FINDINGS.md, 2026-07-18) ------ */
/* P0 #1: /brent-bellotte-md "Background & Education" editorial row is a
   no-wrap flex with NO mobile override in the Webflow export — on phones the
   left heading clipped offscreen and the row overflowed 52px. Stack it. */
@media (max-width: 767px) {
  .container-large.section-title.body-copy-container {
    display: block;
  }
}

/* P1 #2: Google review bodies carry literal <br> markers; ReviewCard converts
   them to newlines — render those newlines. */
body .rv-root .rv-body,
body .rv-root .rv-owner-response {
  white-space: pre-line;
}

/* P1 #3: initials monogram for the 43% of doctors with no headshot — the
   state-page card wrapper otherwise rendered an empty gray blob. Matches the
   /find card fallback, sized to the card avatar frame. */
/* The wrapper is a fixed 120×120 circle (webflow.css) — the fallback must fill
   it exactly. (A min-height:220px here originally overflowed the circle and
   clipped the letter — loop-2 finding #1.) */
.b-team-avatar-wrapper .mcs-team-avatar-fallback {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  border-radius: inherit;
  background: var(--wbec-dark-blue);
  color: #fff;
  font-size: 2.6rem;
  font-weight: 600;
  letter-spacing: 0.02em;
}

/* P2 #9: state-page "#1 Eye Doctor" featured panel when the doctor has no
   headshot — initials block instead of an empty half-panel. Solid navy so it
   reads on the panel's light off-white variant too (loop-2 #4: the original
   translucent white-on-light rendered near-invisible on Nevada/Georgia). */
.mcs-featured-avatar-fallback {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 320px;
  background: var(--wbec-dark-blue);
  border-radius: 12px;
  color: #fff;
  font-size: 4.5rem;
  font-weight: 600;
}

/* ---------- Service-page FAQ accordion (refero-grounded, 2026-07-18) ----- */
/* Editorial divider rows (not cards) to match the site's blog-vertical
   rhythm; native <details>/<summary>, royal chevron rotates open, generous
   padding for the 60+ audience. Motion: 200ms ease state change. */
/* Center the FAQ column on wide screens (Michael-flagged: the block sat
   left-anchored with dead space to the right). The webflow .container-large
   is a narrow LEFT-anchored box in this context (624px, no auto margins), so
   the centering must happen on the container itself: one 860px column,
   centered in main-container, matching the article body above. */
.mcs-faq-section .container-large {
  width: 100%;
  max-width: 860px;
  margin-left: auto;
  margin-right: auto;
}
.mcs-faq-section .section-title {
  margin-bottom: 8px;
}
.mcs-faq-list {
  border-bottom: 1px solid rgba(8, 38, 42, 0.14);
}
.mcs-faq-item {
  border-top: 1px solid rgba(8, 38, 42, 0.14);
}
.mcs-faq-q {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 22px 4px;
  cursor: pointer;
  list-style: none;
  color: var(--wbec-dark-blue, #0b1021);
  font-size: 19px;
  font-weight: 600;
  line-height: 1.35;
}
.mcs-faq-q::-webkit-details-marker {
  display: none;
}
.mcs-faq-q:hover {
  color: var(--wbec-royal-blue, #3263e4);
}
.mcs-faq-q:focus-visible {
  outline: 2px solid var(--wbec-royal-blue, #3263e4);
  outline-offset: 2px;
  border-radius: 4px;
}
.mcs-faq-chevron {
  flex: none;
  color: var(--wbec-royal-blue, #3263e4);
  transition: transform 0.2s ease;
}
.mcs-faq-item[open] .mcs-faq-chevron {
  transform: rotate(180deg);
}
.mcs-faq-a {
  margin: 0;
  padding: 0 40px 24px 4px;
  color: #33424a;
  font-size: 16.5px;
  line-height: 1.65;
  max-width: 70ch;
}
@media (max-width: 640px) {
  .mcs-faq-q { font-size: 17px; padding: 18px 2px; }
  .mcs-faq-a { padding-right: 8px; }
}

/* ---------- Loop-2 animation parity (IX2 audit, 2026-07-18) -------------- */
/* Grow-underline hover, from the IX2 MOUSE_OVER SIZE interaction on
   .underline-link: .underline-line ships at width 0% in the export and only
   IX2 ever grew it — so every underline link in the port (nav "List Your
   Practice", best-index national link, footer) had an invisible underline and
   zero hover feedback. */
.underline-link .underline-line,
.underline-link .underline-line-2 {
  transition: width 0.3s ease;
}
.underline-link:hover .underline-line,
.underline-link:focus-visible .underline-line,
.underline-link:hover .underline-line-2,
.underline-link:focus-visible .underline-line-2 {
  width: 100%;
}

/* Generic reveal opt-in (same treatment as .section-contents) for components
   that can't take that class without inheriting its layout — currently the
   NewsletterBox card on news/post pages, matching detail_post's reveal. */
@media (prefers-reduced-motion: no-preference) {
  html.mcs-anim .mcs-reveal,
  html.mcs-anim .blog-vertical-item {
    opacity: 0;
    transform: translate3d(0, 24px, 0);
    transition:
      opacity 0.5s cubic-bezier(0, 0, 0.58, 1),
      transform 0.5s cubic-bezier(0, 0, 0.58, 1);
  }
  html.mcs-anim .mcs-reveal.mcs-in,
  html.mcs-anim .blog-vertical-item.mcs-in {
    opacity: 1;
    transform: none;
  }
}

/* Related-posts card grid (v2, Michael-flagged composition): 2×2 image-led
   cards, two across, filling the width — replaces the airy vertical rows.
   Cards echo the news-index language: cover image, royal date, dark title.
   Reveal comes from the shared .mcs-reveal opt-in. */
.mcs-rel-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 44px 40px;
  margin-top: 16px;
}
.mcs-rel-card {
  display: block;
  text-decoration: none;
  color: inherit;
}
.mcs-rel-card-imgwrap {
  overflow: hidden;
  border-radius: 12px;
  margin-bottom: 16px;
}
.mcs-rel-card-img {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  transition: transform 0.3s ease;
}
.mcs-rel-card:hover .mcs-rel-card-img {
  transform: scale(1.05);
}
.mcs-rel-card-date {
  margin-bottom: 6px;
}
.mcs-rel-card-title {
  margin: 0;
  line-height: 1.25;
  transition: color 0.15s ease;
}
.mcs-rel-card:hover .mcs-rel-card-title {
  color: var(--wbec-royal-blue, #3263e4);
}
.mcs-rel-card:focus-visible {
  outline: 2px solid var(--wbec-royal-blue, #3263e4);
  outline-offset: 4px;
  border-radius: 12px;
}
@media (max-width: 767px) {
  .mcs-rel-grid {
    grid-template-columns: 1fr;
    gap: 36px;
  }
}

/* Latest-articles rail on /post (realized from the export's never-populated
   blog-vertical template): keep thumbs bounded; give the rail's section title
   the standard gap above the list. */
.blog-vertical-item .mcs-related-thumb {
  width: 220px;
  max-width: 38vw;
  height: 140px;
  object-fit: cover;
  border-radius: 10px;
  display: block;
}
.section.off-white .section-title + .w-dyn-list {
  margin-top: 12px;
}
@media (max-width: 640px) {
  .blog-vertical-item {
    flex-direction: column;
    align-items: flex-start;
    gap: 14px;
  }
  .blog-vertical-item .mcs-related-thumb {
    width: 100%;
    max-width: 100%;
    height: 160px;
  }
}

/* ---------- /news featured hero: blurred self-backdrop fill -------------- */
/* The featured post's asset is an extreme portrait crop; cover-fit rendered a
   narrow sliver with a large dark void beside it (matched the live site, but
   read as broken). The sharp image now sits contained over a blurred cover
   copy of itself, so the marquee fills edge-to-edge for any asset aspect. */
/* The whole featured unit was capped at 60% width by the export's
   `.composed-elements.dfsbvefgew { max-width: 60% }` — the marquee's dark void
   was the other 40%. Let it span the container on the news hero. */
.composed-elements.dfsbvefgew {
  max-width: 100%;
}
.featured-post-image-container.mcs-feat-fill {
  position: relative;
  flex: 1 1 auto;
  min-width: 0;
}
.mcs-feat-fill .mcs-feat-blur {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: blur(26px) saturate(1.05) brightness(0.88);
  transform: scale(1.15);
}
.mcs-feat-fill .featured-post-image.mcs-feat-contain {
  position: relative;
  object-fit: contain;
  width: 100%;
  height: 100%;
  min-height: 0;
}

/* ---------- Scroll reveals (ported from the Webflow IX2 config) ---------- */
/* Spec extracted verbatim from export/site/js/webflow.js by
   scripts/extract_ix2_manifest.mjs (see scripts/ix2-manifest.json):
   `.section-contents` fades up 24px over 500ms ease-out at a 25% viewport
   offset (index, brent-bellotte-md, contact-us, state pages, services); the
   homepage `.diagram` staggers left/center/right children (a-12, ease-in-out).
   Gated on html.mcs-anim (pre-paint script in layout.tsx) so crawlers and
   no-JS visitors always see content, and on prefers-reduced-motion. The
   rebuild dropped these when it stopped loading webflow.js — restoring for
   parity with the live site (verified via motion-capture frame compare). */
@media (prefers-reduced-motion: no-preference) {
  html.mcs-anim .section-contents {
    opacity: 0;
    transform: translate3d(0, 24px, 0);
    transition:
      opacity 0.5s cubic-bezier(0, 0, 0.58, 1),
      transform 0.5s cubic-bezier(0, 0, 0.58, 1);
  }
  html.mcs-anim .section-contents.mcs-in {
    opacity: 1;
    transform: none;
  }
  html.mcs-anim .diagram .diagram-left,
  html.mcs-anim .diagram .diagram-center,
  html.mcs-anim .diagram .diagram-right {
    opacity: 0;
    transition:
      opacity 0.5s cubic-bezier(0.42, 0, 0.58, 1),
      transform 0.5s cubic-bezier(0.42, 0, 0.58, 1);
  }
  html.mcs-anim .diagram .diagram-left { transform: translate3d(-24px, 0, 0); }
  html.mcs-anim .diagram .diagram-center { transform: translate3d(0, 24px, 0); }
  html.mcs-anim .diagram .diagram-right { transform: translate3d(24px, 0, 0); }
  html.mcs-anim .diagram.mcs-in .diagram-left,
  html.mcs-anim .diagram.mcs-in .diagram-center,
  html.mcs-anim .diagram.mcs-in .diagram-right {
    opacity: 1;
    transform: none;
  }
}

/* ---------- /best-cataract-surgeons: national finder map section --------- */
/* Framed locator panel under the hero (landing-locator pattern: heading +
   count, search that hands off to /search, national clustered map). Sits on
   the dark section; tokens stay in the brand world (navy + royal #3263e4). */
.mcs-natmap { margin-top: 56px; text-align: left; }
.mcs-natmap-frame {
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 16px;
  padding: 28px 28px 24px;
}
.mcs-natmap-head {
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: 16px; flex-wrap: wrap; margin-bottom: 18px;
}
.mcs-natmap-title {
  margin: 0 0 6px; color: #fff; font-size: 28px; line-height: 1.15;
  letter-spacing: -0.01em;
}
.mcs-natmap-sub { margin: 0; color: rgba(255, 255, 255, 0.66); font-size: 15px; }
.mcs-natmap-count {
  flex: none; color: #fff; background: rgba(50, 99, 228, 0.28);
  border: 1px solid rgba(50, 99, 228, 0.55); border-radius: 999px;
  padding: 7px 14px; font-size: 13px; letter-spacing: 0.02em; white-space: nowrap;
}
.mcs-natmap-search { display: flex; gap: 10px; margin-bottom: 10px; }
.mcs-natmap-input {
  flex: 1; min-width: 0; height: 52px; padding: 0 18px; font-size: 16px;
  color: var(--dark); background: #fff; border: 1px solid transparent;
  border-radius: 10px;
}
.mcs-natmap-input:focus { outline: 2px solid #3263e4; outline-offset: 1px; }
.mcs-natmap-btn {
  flex: none; height: 52px; padding: 0 28px; font-size: 16px; font-weight: 600;
  letter-spacing: 0.02em; color: #fff; background: #3263e4; border: 0;
  border-radius: 10px; cursor: pointer; transition: background 0.15s ease;
}
.mcs-natmap-btn:hover { background: #2b56c6; }
.mcs-natmap-geo {
  background: none; border: 0; padding: 0; margin: 0 0 16px;
  color: rgba(255, 255, 255, 0.75); font-size: 14px; cursor: pointer;
  text-decoration: underline; text-underline-offset: 3px;
}
.mcs-natmap-geo:hover { color: #fff; }
.mcs-natmap-geo[disabled] { opacity: 0.6; cursor: default; }
/* Height lives on .mcs-map-panel — the in-flow MapPanel root (.mcs-map-canvas
   inside it is position:absolute, so sizing the canvas can't grow the panel).
   Three classes on purpose: the natmap root reuses .mcs-map-static for its
   brand tokens, and styles.ts (injected inline in the BODY, i.e. after this
   head stylesheet) sets `.mcs-map-static .mcs-map-panel { height: 340px }` at
   equal specificity — source order made 340px win and clipped the map. */
.mcs-natmap .mcs-natmap-canvas .mcs-map-panel {
  height: 560px;
  border-color: rgba(255, 255, 255, 0.14);
}
.mcs-natmap-hint { margin: 12px 0 0; color: rgba(255, 255, 255, 0.6); font-size: 13px; }
.mcs-natmap-hint a { color: rgba(255, 255, 255, 0.85); text-decoration: underline; }
.mcs-bcs-intro { max-width: 560px; margin-left: auto; margin-right: auto; }
@media (max-width: 640px) {
  .mcs-natmap { margin-top: 40px; }
  .mcs-natmap-frame { padding: 18px 16px 16px; }
  .mcs-natmap-title { font-size: 22px; }
  .mcs-natmap-search { flex-direction: column; }
  /* `flex: 1` sets the flex-BASIS on the main axis — once the row becomes a
     column that basis is the HEIGHT, collapsing the input to ~22px and beating
     its own `height: 52px` (Michael 7/21: "search bar still looks bad"). */
  .mcs-natmap-input { flex: none; width: 100%; height: 52px; }
  .mcs-natmap-btn { width: 100%; }
  /* Thumb-sized target for the geolocate link. */
  .mcs-natmap-geo { min-height: 44px; margin-bottom: 8px; }
  .mcs-natmap .mcs-natmap-canvas .mcs-map-panel { height: 420px; }
}

/* ---------- Sparse state pages: "Keep Looking" closing block ------------ */
/* States with 1-3 listed surgeons left the "Meet the Best…" grid mostly empty
   (loop3 negative-space finding). The closing dark section adds national/ZIP
   CTAs + neighboring-state links; these style the nearby-state chips (brand
   royal on the navy band, mirroring the /find "Nearby States" chips). */
.mcs-state-nearby {
  margin-top: 44px;
}
.mcs-state-nearby-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  justify-content: center;
  margin-top: 14px;
}
.mcs-state-chip {
  display: inline-block;
  padding: 9px 18px;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.28);
  color: #fff;
  font-size: 15px;
  line-height: 1.2;
  text-decoration: none;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.mcs-state-chip:hover,
.mcs-state-chip:focus-visible {
  background: rgba(50, 99, 228, 0.28);
  border-color: rgba(50, 99, 228, 0.6);
  outline: none;
}

/* ---------- /best-cataract-surgeons hero: restore the dark section ------- */
/* The Webflow export set .section.bg-dark.border-top.on-state-selector to
   rgba(8,38,42,0) — fully transparent — so this "dark hero" rendered white and
   its white <h1> + "Or see the Top Cataract Surgeons" link were invisible on
   the white page (looked completely broken). Higher specificity than the base
   .section.bg-dark.border-top rule, so it overrode the navy. Restore the
   intended --wbec-dark-blue so the white text reads. */
.section.bg-dark.border-top.on-state-selector {
  background-color: var(--wbec-dark-blue);
}


/* ---- loop3 final sweep: /list-your-practice inline link ----------------
   The page's "Learn what featured placement includes" link shipped as
   Webflow's .link-3 (a WHITE nav-family link) inside a light .bg-white
   section — white on white-smoke, invisible (harness: contrast 1.1).
   Purpose-named class, brand-royal, underline that thickens on hover. */
.mcs-listing-link {
  color: var(--wbec-royal-blue, #3263e4);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  transition: text-decoration-thickness 120ms ease;
}
.mcs-listing-link:hover {
  text-decoration-thickness: 2px;
}

/* ---- loop4: "More surgeons near you" band on doctor profiles -------------
   Cross-links every profile into the /find/[state]/[city] grid. Uses the
   profile's dp-* vocabulary for the section head; card grid is bespoke. */
.dp-related {
  padding: 56px 5%;
  background: var(--white-smoke, #f4f4f4);
}
.dp-related .dp-container {
  max-width: 1200px;
  margin: 0 auto;
}
.mcs-related-grid {
  list-style: none;
  margin: 24px 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
}
.mcs-related-card {
  background: #fff;
  border: 1px solid #0b10211f;
  border-radius: 12px;
  transition: box-shadow 140ms ease, transform 140ms ease;
}
.mcs-related-card:hover {
  box-shadow: 0 10px 24px rgba(11, 16, 33, 0.10);
  transform: translateY(-2px);
}
.mcs-related-link {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 22px 16px;
  text-decoration: none;
  text-align: center;
}
.mcs-related-avatar {
  width: 72px;
  height: 72px;
  border-radius: 50%;
  overflow: hidden;
  flex: 0 0 auto;
  display: block;
}
.mcs-related-avatar img,
.mcs-related-avatar > * {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover;
  border-radius: 50%;
}
.mcs-related-name {
  color: var(--wbec-dark-blue, #0b1021);
  font-weight: 600;
  line-height: 1.3;
}
.mcs-related-link:hover .mcs-related-name {
  color: var(--wbec-royal-blue, #3263e4);
}
.mcs-related-loc {
  color: #5f6b80;
  font-size: 14px;
}
.mcs-related-more {
  margin-top: 20px;
  color: #5f6b80;
}
@media screen and (max-width: 991px) {
  .mcs-related-grid { grid-template-columns: repeat(2, 1fr); }
}
@media screen and (max-width: 479px) {
  .mcs-related-grid { grid-template-columns: 1fr; }
}

/* Related-band monograms: .mcs-avatar-fallback's 104px glyph is sized for the
   120px profile hero — inside the 72px related-card circle it overflows into
   a crescent of clipped stroke. Scale to fit this context. */
.mcs-related-avatar .mcs-avatar-fallback span {
  font-size: 26px;
  letter-spacing: 1px;
}

/* ---- loop4: "Browse by City" chips on state guide pages (light section) -- */
.mcs-city-browse {
  margin-top: 40px;
  text-align: center;
}
.mcs-city-chips {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
  margin-top: 14px;
}
.mcs-city-chip {
  display: inline-block;
  padding: 8px 18px;
  border: 1px solid #0b10212e;
  border-radius: 999px;
  color: var(--wbec-dark-blue, #0b1021);
  text-decoration: none;
  font-size: 15px;
  transition: border-color 120ms ease, color 120ms ease, background 120ms ease;
}
.mcs-city-chip:hover {
  border-color: var(--wbec-royal-blue, #3263e4);
  color: var(--wbec-royal-blue, #3263e4);
  background: rgba(50, 99, 228, 0.06);
}

/* ---- Map attribution: slim legal-minimum line ----------------------------
   Replaces MapLibre's auto-expanded white attribution pill (Michael flagged
   it). Small, muted, readable over map tiles; links preserved (OSM copyright
   page + OpenMapTiles), no pill chrome. */
.mcs-map-attrib {
  position: absolute;
  right: 8px;
  bottom: 6px;
  z-index: 2;
  font-size: 10px;
  line-height: 1;
  color: rgba(11, 16, 33, 0.55);
  background: rgba(255, 255, 255, 0.55);
  padding: 3px 7px;
  border-radius: 999px;
  pointer-events: auto;
  white-space: nowrap;
}
.mcs-map-attrib a {
  color: inherit;
  text-decoration: none;
}
.mcs-map-attrib a:hover {
  text-decoration: underline;
}
/* Belt-and-braces: if any MapLibre attribution control ever mounts, hide it. */
.mcs-map-panel .maplibregl-ctrl-attrib {
  display: none !important;
}

/* ---- City pages: local-overview band + FAQ + nearest-city chips ----------
   (Michael 2026-07-19: chips were flush against the footer — the siblings
   block now lives inside the FAQ section with real margins, and the find
   pages' last chip block gets a bottom cushion.) */
.mcs-city-overview {
  max-width: 780px;
  margin-top: 16px;
}
.mcs-city-overview-link {
  color: #fff;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  transition: text-decoration-thickness 120ms ease;
}
.mcs-city-overview-link:hover {
  text-decoration-thickness: 2px;
}
.mcs-city-siblings {
  margin: 48px 0 16px;
}
.mcs-city-chip-dist {
  color: #8a94a8;
  font-size: 13px;
}
/* /find state+city+national pages: the directory .section has NO bottom
   padding, so a margin on its last child collapses through and paints a
   white body strip between the smoke section and the navy footer (Michael
   review pin). Interior padding keeps the section's own background. */
.section .mcs-map-static > div:last-child {
  margin-bottom: 0;
}
.section:has(> .main-container > .mcs-map-static) {
  padding-bottom: 88px;
}

/* ---- Michael design review 2026-07-19 ------------------------------------ */
/* Post hero title was oversized (7-line wrap on long titles). Scoped down. */
.post-title-container .display-heading {
  font-size: clamp(30px, 3.4vw, 44px);
  line-height: 1.18;
}

/* Blog card + featured-story post dates (news listing). */
.mcs-post-date {
  display: block;
  margin-top: 8px;
  color: #5f6b80;
  font-size: 14px;
}
.mcs-post-date-featured {
  color: #8a94a8;
  margin-top: 10px;
}

/* National hero backdrop: replaced the 3D-render US map photo (Michael review
   pin) with the brand-generated topographic US outline. The generated image is
   already deep navy, so the legibility gradient can be lighter than the
   original's. */
.section.bg-dark.border-top.white-background.brent-background.new-florida-page {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/mcs-natl-hero-bg.jpg');
}
.mcs-topn-head { margin-bottom: 14px; }

/* ---- Michael review round 2: retire the teal-green family ----------------
   "Everywhere that we see green... make it the blue primary color."
   The greens were the ported WBEC teal tokens: --primary-1 #264c51 (39 uses:
   body text, the bare-<a> default incl. the contact email) and --dark #08262a
   (profile headings, e.g. "Google Reviews"). Redefining the variables retires
   every instance at once: text roles go to brand navy ink, link/accent roles
   to royal. */
:root {
  --primary-1: #0b1021;
  --dark: #0b1021;
}
a {
  color: var(--wbec-royal-blue, #3263e4);
}
.underline-line-2 {
  background-color: var(--wbec-royal-blue, #3263e4);
}

/* /search results cut straight into the footer (review pin). */
.mcs-map-experience {
  padding-bottom: 72px;
}

/* About: transparency band lead + stats strip. */
.mcs-about-lead {
  max-width: 820px;
  margin-top: 8px;
}
.mcs-about-grid {
  margin-top: 36px;
}
.mcs-about-stats {
  display: flex;
  gap: 56px;
  flex-wrap: wrap;
  margin-top: 44px;
  padding-top: 32px;
  border-top: 1px solid #0b10211f;
}
.mcs-about-stat-n {
  font-size: 44px;
  font-weight: 700;
  color: var(--wbec-royal-blue, #3263e4);
  line-height: 1;
}
.mcs-about-stat-l {
  color: #5f6b80;
  margin-top: 6px;
}

/* ---- Per-state hero backgrounds (geodata contours, review round 2) ----
   Same 6-class form as the dormant Webflow per-state rules so these win
   deterministically (design-fixes loads last). Gradient mirrors the
   national hero for headline legibility. */
.section.bg-dark.border-top.white-background.brent-background.alabama {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-alabama.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.alaska {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-alaska.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.arizona {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-arizona.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.arkansas {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-arkansas.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.california {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-california.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.colorado {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-colorado.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.connecticut {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-connecticut.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.delaware {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-delaware.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.florida {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-florida.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.georgia {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-georgia.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.hawaii {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-hawaii.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.idaho {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-idaho.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.illinois {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-illinois.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.indiana {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-indiana.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.iowa {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-iowa.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.kansas {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-kansas.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.kentucky {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-kentucky.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.louisiana {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-louisiana.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.maine {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-maine.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.maryland {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-maryland.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.massachusetts {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-massachusetts.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.michigan {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-michigan.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.minnesota {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-minnesota.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.mississippi {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-mississippi.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.missouri {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-missouri.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.montana {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-montana.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.nebraska {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-nebraska.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.nevada {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-nevada.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.new-hampshire {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-new-hampshire.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.new-jersey {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-new-jersey.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.new-mexico {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-new-mexico.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.new-york {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-new-york.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.north-carolina {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-north-carolina.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.north-dakota {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-north-dakota.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.ohio {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-ohio.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.oklahoma {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-oklahoma.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.oregon {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-oregon.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.pennsylvania {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-pennsylvania.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.rhode-island {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-rhode-island.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.south-carolina {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-south-carolina.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.south-dakota {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-south-dakota.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.tennessee {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-tennessee.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.texas {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-texas.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.utah {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-utah.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.vermont {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-vermont.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.virginia {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-virginia.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.washington {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-washington.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.west-virginia {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-west-virginia.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.wisconsin {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-wisconsin.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}
.section.bg-dark.border-top.white-background.brent-background.wyoming {
  background-image: linear-gradient(rgba(11, 16, 33, 0) 0%, rgba(2, 3, 34, 0.72) 82%),
    url('../images/state-heroes/mcs-hero-wyoming.jpg');
  background-position: 0 0, 50% 50%;
  background-size: auto, cover;
}

/* News pagination (added 2026-07-19: /news rendered all 165 posts on one page).
   Brand navy for the active page, muted for the rest, matching the blog-card
   type scale so the pager reads as part of the grid rather than bolted on. */
.mcs-pager {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 8px 14px;
  margin-top: 56px;
  font-size: 15px;
}
.mcs-pager-nums {
  display: flex;
  align-items: center;
  gap: 4px;
}
.mcs-pager-num,
.mcs-pager-step {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  min-height: 40px;
  padding: 0 12px;
  border-radius: 8px;
  color: #2c3a55;
  font-weight: 600;
  text-decoration: none;
  transition: background-color 0.15s ease, color 0.15s ease;
}
.mcs-pager-num:hover,
.mcs-pager-step:hover {
  background: #eef1f7;
  color: #14203a;
}
.mcs-pager-num.is-current {
  background: #14203a;
  color: #fff;
}
.mcs-pager-gap {
  padding: 0 2px;
  color: #8a94a8;
}
.mcs-pager-step.is-disabled {
  color: #b3bac7;
  pointer-events: none;
}
@media screen and (max-width: 479px) {
  .mcs-pager {
    gap: 6px 8px;
    font-size: 14px;
  }
  .mcs-pager-num,
  .mcs-pager-step {
    min-width: 36px;
    min-height: 36px;
    padding: 0 8px;
  }
}

/* List Your Practice hero media (2026-07-19). The ported contact-us composition
   put the photo in `container-small` (max-width 400px), so it rendered as a small
   square adrift in a column as tall as the intake form. Fill the grid half
   instead: full column height, cover-crop. object-position favors the upper
   image area, where the surgical light and surgeon sit in About-2.jpg. */
.mcs-lyp-media {
  display: flex;
  align-items: stretch;
  height: 100%;
}
.mcs-lyp-media img {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 560px;
  object-fit: cover;
  object-position: 55% 35%;
  border-radius: 16px;
}
@media screen and (max-width: 991px) {
  .mcs-lyp-media img {
    min-height: 0;
    height: 340px;
  }
}

/* About: transparency band ran text-only, leaving the right ~40% of the section
   empty at desktop widths (Michael flag 7/19). Two-column band: content left,
   consult photo right. Photo drops below 992px — the columns stack fine and the
   photo adds no information, only length, on mobile. */
.mcs-about-band {
  display: grid;
  /* Webflow's .container-large caps at 624px and never centers — the true cause
     of the band's dead right half. Let the band span the main container. */
  width: 100%;
  max-width: 100%;
  grid-template-columns: minmax(0, 1fr) 380px;
  gap: 64px;
  align-items: stretch;
}
.mcs-about-media {
  display: flex;
  align-items: stretch;
}
.mcs-about-media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 30%;
  border-radius: 16px;
}
@media screen and (max-width: 991px) {
  .mcs-about-band {
    grid-template-columns: 1fr;
  }
  .mcs-about-media {
    display: none;
  }
}

/* /top-cataract-surgeons: featured Top Doctors roster grid (2026-07-19). */
.mcs-topdocs-intro {
  max-width: 640px;
  margin: 8px auto 0;
}
.mcs-topdocs-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
  margin-top: 48px;
}
.mcs-topdocs-card {
  display: flex;
  gap: 18px;
  align-items: flex-start;
  padding: 20px;
  border: 1px solid #0b10211f;
  border-radius: 14px;
  text-decoration: none;
  color: inherit;
  transition: box-shadow 0.15s ease, transform 0.15s ease;
  background: #fff;
}
.mcs-topdocs-card:hover {
  box-shadow: 0 10px 28px -12px #0b102140;
  transform: translateY(-2px);
}
.mcs-topdocs-card img,
.mcs-topdocs-fallback {
  width: 76px;
  height: 76px;
  border-radius: 50%;
  object-fit: cover;
  object-position: 50% 25%;
  flex-shrink: 0;
}
.mcs-topdocs-fallback {
  display: flex;
  align-items: center;
  justify-content: center;
  background: #14203a;
  color: #fff;
  font-weight: 700;
  font-size: 26px;
}
.mcs-topdocs-body h3 {
  font-size: 17px;
  line-height: 1.3;
  margin: 2px 0 4px;
  color: #0b1021;
}
.mcs-topdocs-meta {
  font-size: 14px;
  color: #2c3a55;
  font-weight: 600;
}
.mcs-topdocs-stars {
  color: #c47600;
}
.mcs-topdocs-loc {
  font-size: 13px;
  color: #5f6b80;
  margin-top: 4px;
}
.mcs-topdocs-cta {
  display: inline-block;
  margin-top: 8px;
  font-size: 14px;
  font-weight: 600;
  color: #3263e4;
}
@media screen and (max-width: 991px) {
  .mcs-topdocs-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media screen and (max-width: 599px) {
  .mcs-topdocs-grid {
    grid-template-columns: 1fr;
  }
}

/* State pages: the inline consult photo sat in Webflow's 400px container-small
   (Michael 7/19, same class of bug as list-your-practice). Fill the grid half
   at the text column's height; keep the squiggle decoration. */
.mcs-state-consult {
  max-width: 100%;
  width: 100%;
}
.mcs-state-consult .composed-elements,
.mcs-state-consult .image-squiggle,
.mcs-state-consult .animated-image-container {
  width: 100%;
  /* .composed-elements ships max-width:60% in the Webflow bundle — that was the
     residual cap after container-small was widened. */
  max-width: 100%;
  height: 100%;
}
.mcs-state-consult .animated-image {
  width: 100%;
  height: 100%;
  min-height: 520px;
  object-fit: cover;
  object-position: 50% 35%;
}
@media screen and (max-width: 991px) {
  .mcs-state-consult .animated-image {
    min-height: 0;
    height: 360px;
  }
}

/* /get-featured benefits grid: the Webflow 24/32px gaps ran the six blocks
   together (Michael flag 7/20). Open the grid up and give each block's heading
   room from its own copy. */
.mcs-benefits-grid {
  grid-column-gap: 80px;
  grid-row-gap: 64px;
  margin-top: 40px;
}
.mcs-benefits-grid .subheading-large {
  margin-bottom: 12px;
}
@media screen and (max-width: 767px) {
  .mcs-benefits-grid {
    grid-column-gap: 32px;
    grid-row-gap: 44px;
  }
}

/* /get-featured hero: Webflow's .container caps at 512px, stacking the H1 onto
   four short lines and pushing the CTA below the fold (Michael flag 7/20).
   Widen the hero column and balance the wrap — two lines at desktop. */
.mcs-gf-hero {
  max-width: 880px;
}
.mcs-gf-hero .display-heading {
  text-wrap: balance;
}
.mcs-gf-hero .large-text {
  max-width: 620px;
  margin-left: auto;
  margin-right: auto;
}

/* Legal pages (privacy / terms / disclaimer, 2026-07-21). */
.mcs-legal {
  max-width: 760px;
  padding-top: 24px;
  padding-bottom: 48px;
}
.mcs-legal-updated {
  color: #5f6b80;
  font-size: 14px;
  margin: 6px 0 34px;
}
.mcs-legal-body h2 {
  font-size: 22px;
  color: #0b1021;
  margin: 34px 0 10px;
}
.mcs-legal-body p,
.mcs-legal-body li {
  font-size: 16px;
  line-height: 1.7;
  color: #2c3a55;
}
.mcs-legal-body ul {
  padding-left: 22px;
  margin: 10px 0;
}
.mcs-legal-body a {
  color: #3263e4;
}

/* Homepage "Clear Vision, Restored" band: the .divided-container flex row is
   left-packed (400px image + 624px text in a ~1330px container, slack all on
   the right — Michael flag 7/21). Center the pair and set an even gap. */
.mcs-home-divided {
  justify-content: center;
  gap: 72px;
}

/* National Top-25 list: uniform cards (Michael 7/21 — the ported layout gave
   the first card a 400px photo vs 312px for the rest, alternated sides, and
   floated images at odd insets). One layout for all 25: photo left at a fixed
   340px square, text right, identical padding and rhythm. */
.mcs-natl-card {
  display: grid;
  grid-template-columns: 340px minmax(0, 1fr);
  gap: 56px;
  align-items: center;
  padding: 56px;
}
.mcs-natl-media {
  width: 340px;
  height: 340px;
}
.mcs-natl-card .mcs-natl-headshot,
.mcs-natl-fallback {
  display: block;
  width: 100%;
  height: 100%;
  aspect-ratio: auto;
  object-fit: cover;
  object-position: center 28%;
  border-radius: 16px;
}
.mcs-natl-fallback {
  display: flex;
  align-items: center;
  justify-content: center;
  background: #14203a;
  color: #fff;
  font-size: 64px;
  font-weight: 700;
}
@media screen and (max-width: 991px) {
  .mcs-natl-card {
    grid-template-columns: 1fr;
    gap: 28px;
    padding: 32px;
  }
  .mcs-natl-media {
    width: 220px;
    height: 220px;
    margin: 0 auto;
  }
}

/* ============ Mobile homepage pass (Michael 7/21, real-device QA) ============ */

/* 1. Hero background: the Webflow rule ships left:-10% with the correction only
   at ≥1280px, so every viewport below that gets a ~10% white strip on the
   right. Full-bleed below 1280. */
@media screen and (max-width: 1279px) {
  .background-video {
    left: 0;
    width: 100%;
  }
}

/* 2. Mobile menu (hamburger open state). The polish shim positioned it absolute
   inside the padded navbar (inset from both edges) and Webflow's nav-link
   margins spread 5 links across ~900px. Full-width fixed sheet under the nav,
   list rhythm, thumb-sized rows. */
@media screen and (max-width: 991px) {
  .nav-menu.w-nav-menu.mcs-nav-open {
    position: fixed;
    left: 0;
    right: 0;
    top: 90px;
    bottom: 0;
    overflow: auto;
    gap: 0;
    align-items: stretch;
    padding: 8px 24px 40px;
    background-color: #0b1021;
  }
  .nav-menu.w-nav-menu.mcs-nav-open {
    justify-content: flex-start;
  }
  /* .w-nav-link ships margin:auto (centers each link) and the menu distributes
     the full sheet height — force a flat left-aligned list. */
  .mcs-nav-open .nav-link {
    display: block;
    width: 100%;
    margin: 0 !important;
    padding: 18px 0 !important;
    font-size: 19px !important;
    line-height: 1.3 !important;
    text-align: left !important;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  }
  .mcs-nav-open .underline-link {
    margin: 20px 0 0 !important;
    align-self: flex-start;
  }
  .mcs-nav-open .button.small.outline-white {
    margin-top: 24px;
    align-self: stretch;
    text-align: center;
  }
}

/* 3. Homepage bento: Webflow reserves desktop-scale min-heights on mobile,
   leaving ~300px of dead white under the image grid. Let it size to content. */
@media screen and (max-width: 767px) {
  .bento-grid,
  .bento-image-block,
  .bento-column {
    min-height: 0;
    height: auto;
  }
  .section-large-4.background-light {
    padding-bottom: 48px;
  }
}

/* 4. "Clear Vision" band on mobile: the desktop 72px gap + the 400px-wide
   circle graphic left the image floating far above its heading. Tighter stack,
   image scaled to the viewport. */
@media screen and (max-width: 767px) {
  .mcs-home-divided {
    gap: 28px;
  }
  .mcs-home-divided .image {
    width: min(320px, 82vw);
  }
  .section-large.bg-white.dthrth {
    padding-top: 48px;
  }
}

/* State-page featured block: action row (Michael 7/21 — no route to the profile
   it promotes). Buttons wrap instead of overlapping the back-to-top FAB, and go
   full-width on phones. */
.mcs-featured-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 24px;
}
.mcs-featured-actions .button {
  /* Webflow's .button ships block margins that forced the third button onto
     its own row and knocked the group out of alignment. */
  margin: 0 !important;
  white-space: nowrap;
}
/* The text column is only 400px, so three default-padded buttons (447px) wrap
   awkwardly. Trim the horizontal padding above mobile so the row fits on one
   line; the phone number keeps its own width. */
@media screen and (min-width: 641px) {
  /* Measured: 3 buttons = 411px in a 400px column at 18px padding, so it still
     wrapped. 13px lands the row at ~387px and keeps it on one line. */
  .mcs-featured-actions {
    gap: 10px;
  }
  .mcs-featured-actions .button {
    padding-left: 13px;
    padding-right: 13px;
  }
}
@media screen and (max-width: 640px) {
  .mcs-featured-actions {
    gap: 10px;
  }
  .mcs-featured-actions .button {
    flex: 1 1 100%;
    text-align: center;
    justify-content: center;
  }
}

/* ---- Blog post hero: desktop width caps never released on mobile ----------
   Michael 7/22: "blog header on mobile is very wonky, too skinny and tall."
   Measured at 390px — the h1 was rendering 139px wide and wrapping to TEN lines,
   with the hero image at 205px.

   Cause: the Webflow bundle ships
     .container.blog-post-title { max-width: 40% }
     .composed-elements        { max-width: 60% }
   and its own `max-width: 991px` block restacks the header to a column
   (flex-direction/align-items/margin) but never resets either cap. So the
   stacking is correct while both children are still sized for the 1392px
   desktop canvas: 40% of a 342px container is 137px.

   Release the caps once stacked. The .composed-elements reset is scoped to the
   post header because that class is used across the whole site (state consult
   blocks, marquee, contained sections) and each has its own intended width. */
@media screen and (max-width: 991px) {
  .container.blog-post-title { max-width: 100%; }
  .post-title-container .composed-elements { max-width: 100%; }
}

/* ---- Services hub: alternating rows collapse to adjacent images on mobile ----
   Michael 7/23: "images stacked on top of each other; should be image, content,
   image, content." The desktop zig-zag is done in the MARKUP (services/page.tsx):
   even rows render [content][image], odd rows [image][content], side by side.
   At <=991px .service-container becomes a single-column grid that stacks each
   row's two items in DOM order, so the end of one row and the start of the next
   collide: ...[image][image]... and ...[content][content].... Measured sequence
   was content/IMG/IMG/content/content/IMG/IMG/content.

   Force a consistent image-then-content order in every row on mobile via `order`,
   identifying each item by what it contains (:has) rather than its DOM position,
   since that position is exactly what alternates. Grid honours `order` in its
   auto-placement, so image lands in row 1, content in row 2, every time. */
@media screen and (max-width: 991px) {
  .main-container.service-container .padded-item:has(.image-squiggle) { order: 0; }
  .main-container.service-container .padded-item:has(.section-contents) { order: 1; }
}

/* ---- Inner-service hero: stray blue dot on mobile -------------------------
   Michael 7/23: "strange little blue dot just above the first paragraph on the
   inner-service page." It's the decorative `.squiggle` — a blue background-image
   graphic (/images/Blue-*) sized 300x300 and positioned off-screen left, meant
   to peek from behind the hero image's top-left corner on desktop. Its
   `.squiggle-container` (absolute, overflow:hidden, fixed 200x200 at left:-57)
   doesn't adapt below the desktop layout, so on mobile all that shows is a
   ~10px clipped remnant = a stray blue dot. Purely decorative; hide it on
   mobile. Confirmed layout-safe (container is position:absolute; hiding it left
   the hero image at 342x513 untouched and removed the dot). Scoped to
   .inner-servcie so other pages' squiggles are unaffected. */
@media screen and (max-width: 991px) {
  .inner-servcie .image-squiggle .squiggle-container { display: none; }
}

/* ============================================================================
   SITE CHROME v2 (2026-07-24) — the homepage-approved nav + footer, global.
   Classes are hv-prefixed (came from the homepage v2 system); font/color are
   baked in here so the chrome renders identically outside the homepage's .hv
   ground. Nav has two variants: transparent (overlay, homepage hero) and
   .hv-nav-solid (every PageShell page).
   ========================================================================== */
.hv-wrap{max-width:1180px;margin:0 auto;padding:0 clamp(20px,4.4vw,40px)}
.hv-nav{position:relative;z-index:30;display:flex;align-items:center;justify-content:space-between;
 gap:24px;padding:20px clamp(20px,4.4vw,64px);color:#fff;
 font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
.hv-nav-solid{background:#0b1021;border-bottom:1px solid #ffffff14}
.hv-brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:#fff}
.hv-mark{font-size:23px;font-weight:800;letter-spacing:-.02em}
.hv-rule{width:1px;height:26px;background:#ffffff42}
.hv-brand small{font-size:9px;line-height:1.25;letter-spacing:.15em;color:#d3daea;font-weight:650}
.hv-links{display:flex;align-items:center;gap:22px}
.hv-links a{color:#ccd4e6;text-decoration:none;font-size:13.5px;font-weight:550;transition:color .16s}
.hv-links a:hover{color:#fff}
.hv-btn{border-radius:10px;padding:10px 17px;font-size:13.5px;font-weight:650;text-decoration:none;
 display:inline-block;transition:background .18s,border-color .18s,transform .12s,box-shadow .18s}
.hv-btn2{border:1px solid #ffffff36;color:#fff!important}
.hv-btn2:hover{background:#ffffff16;border-color:#ffffff5c}
.hv-btn1{background:#3263e4;color:#fff!important;box-shadow:0 6px 18px -6px #3263e4b8}
.hv-btn1:hover{background:#5081f2;box-shadow:0 10px 26px -8px #3263e4d9;transform:translateY(-1px)}
.hv-btn1:active,.hv-btn2:active{transform:translateY(1px)}
.hv-burger{display:none;background:none;border:1px solid #ffffff36;border-radius:10px;
 width:44px;height:44px;cursor:pointer;padding:0;flex-direction:column;
 align-items:center;justify-content:center;gap:4px;flex:0 0 auto}
.hv-burger span{display:block;width:18px;height:2px;background:#fff;border-radius:2px;
 transition:transform .2s ease,opacity .2s ease}
.hv-burger[aria-expanded="true"] span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.hv-burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.hv-burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}
.hv-menu{position:absolute;left:0;right:0;top:100%;z-index:40;background:#0b1021f5;
 backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
 border-top:1px solid #ffffff14;border-bottom:1px solid #ffffff1f;
 padding:8px clamp(20px,4.4vw,64px) 14px;display:flex;flex-direction:column;
 animation:hv-menuin .22s ease-out;
 font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
.hv-menu a{color:#e6ebf8;text-decoration:none;font-size:16px;font-weight:600;
 padding:14px 2px;border-bottom:1px solid #ffffff0f}
.hv-menu a:last-child{border-bottom:0}
.hv-menu a:first-child{color:#8fb0ff}
@keyframes hv-menuin{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
@media (min-width:821px){.hv-menu{display:none}}
.hv-foot{background:#060a15;padding:52px 0 34px;color:#9aa5c2;font-size:13.5px;position:relative;z-index:2;
 font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
.hv-fabout{color:#bcc6de}
.hv-fgrid{display:grid;grid-template-columns:1.4fr repeat(3,1fr);gap:34px}
.hv-foot h4{margin:0 0 12px;color:#fff;font-size:12px;letter-spacing:.12em;font-weight:700}
.hv-foot a{display:block;color:#9aa5c2;text-decoration:none;margin-bottom:9px;transition:color .16s}
.hv-foot a:hover{color:#fff}
.hv-fbot{margin-top:38px;padding-top:22px;border-top:1px solid #ffffff14;font-size:12.5px;color:#69738f;
 display:flex;align-items:center;justify-content:space-between;gap:14px 26px;flex-wrap:wrap}
.hv-legal{display:flex;gap:22px;flex-wrap:wrap}
.hv-legal a{display:inline;margin:0;color:#69738f}
@media (max-width:1000px){.hv-fgrid{grid-template-columns:1fr 1fr;gap:26px}}
@media (max-width:820px){
 .hv-links a.hv-textlink{display:none}
 .hv-links{gap:10px}
 .hv-links .hv-btn2{display:none}
 .hv-burger{display:flex}
 .hv-btn1{white-space:nowrap;font-size:13px;padding:11px 14px}}
@media (prefers-reduced-motion:reduce){
 .hv-menu{animation:none}
 .hv-burger span,.hv-btn,.hv-links a,.hv-foot a{transition:none}}
