/* ============================================================
   EMG child theme — CSS is the ESCAPE HATCH, not the primary
   styling layer. Default = set styling in Elementor's UI (native
   settings, editable by the team). This file holds only:
     1. Design-system PRIMITIVES (reusable across pages/CPTs):
        .emg-btn*, .emg-card*, .emg-section, .emg-eyebrow, .emg-section-head
     2. Hard cases Elementor's UI can't do cleanly
        (icon-list checks, hero phone divider, counter internals, footer logo)
     3. Responsive coordination
     4. build-page wrapper fixes (build artifact — see note)
   Section-specific values (bg, padding, gaps, colors) live NATIVELY
   on the Elementor container/widget, not here.
   Tokens mirror mockup/index.html :root.
   ============================================================ */
:root{
	--emg-navy:#071D49;
	--emg-cyan:#19A9E1;
	--emg-cyan-dark:#1186B6;
	--emg-ink:#262626;
	--emg-tint:#F2F5F7;
	--emg-line:#DCE4EA;
	--emg-maxw:1180px;
}

/* ---- build-page artifact fix ----
   Plus build-page wraps every flex child in an extra unclassed container and
   forces it to equal width (33%/50%). Neutralize so classed elements size to
   content. This is the one place CSS fixes tooling, not design. */
.emg-topbar > .e-con-inner > .e-con,
.emg-nav > .e-con-inner > .e-con,
.emg-hero-cta > .e-con-inner > .e-con,
.emg-hero-cta > .e-con{width:auto !important;flex:0 0 auto !important;padding:0;}
.emg-nav > .e-con-inner > .e-con:has(.emg-menu){flex:1 1 auto !important;}
/* section direct children share width equally; keep their own padding (cards
   set 40/34 natively — do NOT zero it here). */
.emg-section > .e-con-inner > .e-con{flex:1 1 0 !important;width:auto !important;}

/* ============================================================
   DESIGN-SYSTEM PRIMITIVES (reuse on every page + CPT template)
   ============================================================ */

/* ---- Buttons ---- */
.emg-btn .elementor-button{
	font-family:"Schibsted Grotesk",sans-serif;font-weight:600;font-size:.95rem;
	padding:14px 26px;border-radius:6px;border:2px solid transparent;
	transition:.18s;line-height:1.1;
}
/* !important guards these against Elementor's per-element Kit accent color,
   which otherwise leaks a green background onto buttons inside Theme Builder
   single templates + shared library templates. */
.emg-btn-primary .elementor-button{background:var(--emg-cyan) !important;color:#fff !important;}
.emg-btn-primary .elementor-button:hover{background:var(--emg-cyan-dark) !important;}
.emg-btn-white .elementor-button{background:#fff !important;color:var(--emg-navy) !important;}
.emg-btn-white .elementor-button:hover{background:var(--emg-cyan) !important;color:#fff !important;}
.emg-btn-ghost .elementor-button{background:transparent !important;color:var(--emg-navy) !important;border-color:var(--emg-navy) !important;}
.emg-btn-ghost .elementor-button:hover{background:var(--emg-navy) !important;color:#fff !important;}

/* ---- Section: caps inner content at site max-width + equal-width children ---- */
.emg-section > .e-con-inner{max-width:var(--emg-maxw);width:100%;margin-inline:auto;}

/* ---- Eyebrow / kicker (div/p, never a heading) ---- */
.emg-eyebrow{font-family:"Schibsted Grotesk",sans-serif;text-transform:uppercase;
	letter-spacing:.18em;font-size:.74rem;font-weight:700;color:var(--emg-cyan-dark);}

/* ---- Centered section heading block ---- */
.emg-section-head{text-align:center;max-width:60ch;margin-inline:auto;}

/* ---- Card (reusable: equal height + lift on hover). bg/radius/padding stay
        NATIVE on the container so they're editable per use. ---- */
.emg-card{transition:.2s;flex:1 1 0;display:flex;flex-direction:column;box-shadow:0 4px 16px rgba(7,29,73,.07);}
.emg-card:hover{box-shadow:0 16px 40px rgba(7,29,73,.15);transform:translateY(-4px);}
.emg-card-title .elementor-heading-title{font-size:1.28rem;margin-bottom:2px;color:var(--emg-navy);}
.emg-card-text p{font-size:.97rem;color:#4a5560;margin-bottom:6px;}
.emg-card-link{margin-top:auto;}
.emg-card-link p{margin:0;}
.emg-card-link a{font-weight:700;color:var(--emg-cyan-dark);font-size:.92rem;}
.emg-card-link a:hover{color:var(--emg-navy);}

/* ============================================================
   HARD CASES (Elementor UI can't express these cleanly)
   ============================================================ */

/* ---- Header logo: larger, height-capped ---- */
.emg-logo img{height:44px;width:auto;max-width:280px;object-fit:contain;}

/* ---- Header nav: menu grows to fill, items sit at the RIGHT edge next to the
        Schedule button; single row ---- */
.emg-nav > .e-con-inner{flex-wrap:nowrap;align-items:center;}
.emg-nav > .e-con-inner > .e-con:has(.emg-menu){flex:1 1 auto !important;}
/* the menu column, the nav-menu widget, and its <ul> must all fill the column
   width so the items can be pushed to the RIGHT edge next to the CTA button */
.emg-nav .e-con:has(.emg-menu) .elementor-widget-nav-menu,
.emg-nav .emg-menu{width:100%;}
.emg-menu .elementor-nav-menu{display:flex;width:100%;justify-content:flex-end;flex-wrap:nowrap;}
.emg-menu .elementor-nav-menu--main .elementor-item{
	color:var(--emg-navy);font-family:"Schibsted Grotesk",sans-serif;font-weight:600;
	font-size:.94rem;padding:8px 14px !important;text-transform:none;letter-spacing:0;
}
.emg-menu .elementor-nav-menu--main .elementor-item:hover{color:var(--emg-cyan-dark);}
/* "Schedule a Test" lives as a menu item so it appears in the mobile overlay,
   but on desktop the standalone header button covers it → hide it there. */
.emg-menu .elementor-nav-menu--main .menu-item.emg-menu-cta{display:none;}

/* ---- Top bar: vertically center both sides so the bar isn't over-tall ---- */
.emg-topbar > .e-con-inner{align-items:center;}
.emg-topbar-tag,.emg-topbar-contact{display:flex;align-items:center;}
.emg-topbar-tag p{margin:0;}
.emg-topbar-contact p{margin:0;display:flex;gap:22px;align-items:center;flex-wrap:wrap;}
.emg-topbar-contact a{color:#fff;font-weight:600;white-space:nowrap;display:inline-flex;align-items:center;gap:8px;}
.emg-topbar-contact a:hover{color:var(--emg-cyan);}
.emg-topbar-contact .ico{flex:0 0 auto;}

/* ---- Hero H1 responsive clamp + measure (native color already set) ---- */
.emg-hero-h1 h1.elementor-heading-title{font-size:clamp(2rem,3.8vw,3.05rem);line-height:1.2em;max-width:20ch;letter-spacing:.01em;margin-bottom:-6px;}

/* ---- Hero claims: native Icon List, cyan checks ---- */
.emg-hero-claims .elementor-icon-list-items{display:flex;flex-direction:column;gap:11px;}
.emg-hero-claims .elementor-icon-list-item{align-items:flex-start;}
.emg-hero-claims .elementor-icon-list-icon{padding-top:3px;}
.emg-hero-claims .elementor-icon-list-icon svg,
.emg-hero-claims .elementor-icon-list-icon i{color:var(--emg-cyan);fill:var(--emg-cyan);font-size:15px;}
.emg-hero-claims .elementor-icon-list-text{color:#eaf3fb;font-size:1.05rem;font-weight:500;line-height:1.4;}

/* ---- Hero CTA phone block with left divider ---- */
.emg-hero-phone p{margin:0 0 0 6px;color:#fff;font-weight:700;font-size:1.05rem;
	border-left:1px solid rgba(255,255,255,.3);padding-left:18px;line-height:1.3;}
.emg-hero-phone .emg-phone-label{display:block;font-weight:400;font-size:.72rem;
	letter-spacing:.14em;text-transform:uppercase;color:#9fc6e6;}
.emg-hero-phone .emg-phone-num{display:block;}

/* ---- Stat strip: native Counter widget internals ---- */
.emg-stat .elementor-counter-number-wrapper{font-family:"Cinzel",serif;font-size:2.3rem;
	font-weight:700;line-height:1;color:#fff;display:flex;justify-content:center;}
.emg-stat .elementor-counter-title{font-family:"Schibsted Grotesk",sans-serif;font-size:.82rem;
	text-transform:uppercase;letter-spacing:.1em;margin-top:6px;color:#e4f6ff;font-weight:500;}
/* text-based stat ("Same Day") matches the counters */
.emg-stat-text .emg-stat-n{font-family:"Cinzel",serif;font-size:2.3rem;font-weight:700;line-height:1;color:#fff;text-align:center;}
.emg-stat-text .emg-stat-l{font-family:"Schibsted Grotesk",sans-serif;font-size:.82rem;text-transform:uppercase;letter-spacing:.1em;margin-top:6px;color:#e4f6ff;text-align:center;}

/* ===================== WHAT-IS SPLIT ===================== */
.emg-split > .e-con-inner{display:flex;flex-direction:row;gap:54px;align-items:center;max-width:var(--emg-maxw);}
@media(max-width:820px){
	/* standard responsive order: text first, image below (Eric mobile round) */
	.emg-split > .e-con-inner{flex-direction:column !important;gap:30px;}
	.emg-split > .e-con-inner > .e-con{flex:0 0 auto !important;width:100% !important;}
}
.emg-split-text{flex:1.05 1 0;}
.emg-split-media{flex:1 1 0;}
.emg-split-title .elementor-heading-title{font-size:2.1rem;color:var(--emg-navy);}
.emg-split-body p{color:#42505c;font-size:1.02rem;}
.emg-split-img img{border-radius:12px;box-shadow:0 18px 40px rgba(7,29,73,.14);width:100%;}

/* ===================== CONDITIONS (navy, hover-reveal tiles) ===================== */
.emg-cond .emg-section-head{text-align:center;}
.emg-cond-title .elementor-heading-title{color:#fff !important;font-size:clamp(1.8rem,3.2vw,2.5rem);}
.emg-cond-sub p{color:#bcd0e4;}
.emg-cond-grid > .e-con-inner{display:flex;flex-wrap:wrap;gap:20px;}
.emg-cond-grid > .e-con-inner > .e-con{flex:1 1 30% !important;min-width:250px;}
.emg-tile{position:relative;border-radius:12px;overflow:hidden;aspect-ratio:3/2;min-height:auto !important;cursor:pointer;
	background-size:cover !important;background-position:center !important;transition:background-size .45s ease;}
.emg-tile:hover{background-size:115% !important;}
.emg-tile::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(7,29,73,0) 40%,rgba(7,29,73,.86) 100%);transition:.4s;z-index:1;}
.emg-tile:hover::before{background:rgba(7,29,73,.9);}
.emg-tile .emg-tile-label{position:relative;z-index:2;}
.emg-tile-label .elementor-heading-title{color:#fff !important;font-size:1.12rem;line-height:1.25;}
/* slide-up detail on hover (mirrors mockup .cond .tile .more) */
.emg-tile-more{position:absolute;left:0;right:0;bottom:-100%;z-index:3;padding:18px 20px;
	background:rgba(7,29,73,.94);color:#d7e6f4;font-size:.86rem;line-height:1.5;transition:bottom .4s ease;}
.emg-tile:hover .emg-tile-more{bottom:0;}

/* ===================== WHY CHOOSE (4 cards) ===================== */
.emg-why .emg-section-head{text-align:center;}
.emg-why-title .elementor-heading-title{font-size:clamp(1.8rem,3.2vw,2.5rem);color:var(--emg-navy);}
.emg-why-grid > .e-con-inner{display:flex;flex-wrap:wrap;gap:22px;}
.emg-why-grid > .e-con-inner > .e-con{flex:1 1 21% !important;min-width:220px;}
.emg-why-card-title .elementor-heading-title{font-size:1.12rem;color:var(--emg-navy);}
.emg-why-card-text p{font-size:.92rem;color:#56616c;}
/* each card gets a CTA: 3 text links + 1 contact block, pinned to card bottom */
.emg-why-card{display:flex;flex-direction:column;}
.emg-why-card-lnk{margin-top:auto;padding-top:14px;}
.emg-why-card-lnk a{font-family:"Schibsted Grotesk",sans-serif;font-weight:700;color:var(--emg-cyan-dark);font-size:.9rem;text-decoration:none;}
.emg-why-card-lnk a:hover{color:var(--emg-navy);}
.emg-why-card-lnk a::after{content:" \2192";}
.emg-why-card-contacts{margin-top:auto;padding-top:12px;display:flex;flex-direction:column;gap:8px;}
.emg-why-card-contacts a{display:inline-flex;align-items:center;gap:8px;color:var(--emg-navy);font-weight:600;font-size:.82rem;text-decoration:none;}
.emg-why-card-contacts a:hover{color:var(--emg-cyan-dark);}
.emg-why-card-contacts .ico{width:15px;height:15px;stroke:var(--emg-cyan-dark);fill:none;flex:0 0 auto;}

/* ===================== INSURANCE & MPN ===================== */
.emg-ins > .e-con-inner{display:flex;flex-direction:row;gap:64px;align-items:flex-start;max-width:1040px;}
.emg-ins-rail{flex:.85 1 0;}
.emg-ins-body{flex:1.15 1 0;}
.emg-ins-title .elementor-heading-title{font-size:1.9rem;color:var(--emg-navy);max-width:14ch;}
.emg-ins-lead p{color:#5a6b7a;font-size:.98rem;}
.emg-ins-colhd p{font-family:"Schibsted Grotesk",sans-serif;text-transform:uppercase;letter-spacing:.14em;font-size:.76rem;font-weight:700;color:#8595a3;margin:0;}
/* 3 logos in ONE row on desktop (no wrap) */
.emg-ins-logo-row{display:flex;flex-wrap:nowrap;align-items:center;gap:30px 48px;}
.emg-ins-logo{width:auto;object-fit:contain;display:block;max-width:100%;}
.emg-ins-logo.anthem{height:38px;}
.emg-ins-logo.cigna{height:60px;}
.emg-ins-logo.aetna{height:36px;}
/* keep them one row but shrink + distribute so they never overflow small screens */
@media(max-width:820px){
	.emg-ins-logo-row{gap:0 16px;justify-content:space-between;}
	/* FIXED heights, not height:auto+max-height: auto heights derived from the
	   SVG aspect ratio inside this flex row collapsed the parent HTML widget
	   to 0px -> the logo row painted over "IN-NETWORK MPNS" (2026-07-06).
	   object-fit:contain still letterboxes if a flexed slot gets narrow. */
	.emg-ins-logo{flex:1 1 0;min-width:0;}
	.emg-ins-logo.anthem{height:26px !important;}
	.emg-ins-logo.cigna{height:42px !important;}
	.emg-ins-logo.aetna{height:24px !important;}
}
/* divider line below the logos (mirrors mockup .insC-hr) */
.emg-ins-hr-wrap{margin:0;}
.emg-ins-hr{border:0;height:1px;background:rgba(7,29,73,.12);margin:32px 0;}
.emg-mpn-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:14px 30px;}
.emg-mpn-list li{font-family:"Schibsted Grotesk",sans-serif;color:var(--emg-navy);font-weight:600;font-size:1.02rem;position:relative;padding-left:0;}
/* checkmark shown ONLY on mobile (matches mockup: names read cleaner on desktop) */
.emg-mpn-list li::before{content:none;}
@media(max-width:820px){
	.emg-mpn-list li{padding-left:24px;}
	.emg-mpn-list li::before{content:"";position:absolute;left:0;top:.45em;width:13px;height:8px;
		border-left:2.5px solid var(--emg-cyan);border-bottom:2.5px solid var(--emg-cyan);transform:rotate(-45deg);}
}
@media(max-width:480px){
	/* mockup keeps 2 columns at phone width (165px-ish tracks; names wrap) */
	.emg-mpn-list{grid-template-columns:1fr 1fr;gap:10px 20px;}
	.emg-mpn-list li{font-size:.9rem;}
}

/* ===================== CTA BAND ===================== */
/* generous top/bottom padding to match mockup .cta-band .wrap{padding:78px 24px} */
/* padding-top/bottom moved to the SECTION PADDING STANDARD vars (2026-07-06)
   -- this outer literal 78 was stacking on top of the inner's padding. */
.emg-cta-band{position:relative;overflow:hidden;}
/* navy→cyan gradient over any bg image so text stays legible (mockup .cta-band::after) */
.emg-cta-band::before{content:"";position:absolute;inset:0;z-index:0;
	background:linear-gradient(90deg,rgba(7,29,73,.93),rgba(17,134,182,.85));}
.emg-cta-band > .e-con-inner{position:relative;z-index:1;max-width:900px;text-align:center;align-items:center;}
/* eyebrow sits tight above the title on cta/section heads */
.emg-cta-band .emg-eyebrow,.emg-cta-eyebrow{color:#bfe6f7 !important;margin-bottom:4px;}
.emg-cta-title .elementor-heading-title{color:#fff !important;font-size:2.3rem;}
.emg-cta-text p{color:#dcecf7;max-width:50ch;margin:0 auto;}
/* phone / text / email row below the button */
.emg-triple{display:flex;gap:30px;justify-content:center;flex-wrap:wrap;margin-top:30px;font-size:.95rem;}
.emg-triple a{color:#fff;font-weight:700;display:inline-flex;align-items:center;gap:8px;text-decoration:none;}
.emg-triple a:hover{color:var(--emg-cyan);}
.emg-triple .ico{width:17px;height:17px;stroke:#fff;fill:none;flex:0 0 auto;}
@media(max-width:520px){.emg-triple{gap:12px 24px;font-size:.9rem;}}

/* ---- Footer ---- */
.elementor-location-footer .elementor-widget-image img{filter:brightness(0) invert(1);}
/* logo left-aligned to line up with the blurb below it (not centered) */
.emg-foot-logo{text-align:left !important;}
.emg-foot-logo .elementor-widget-container{text-align:left !important;}
.emg-foot-logo img{width:476px !important;max-width:100%;height:auto;margin-left:0 !important;margin-right:auto !important;}
/* 3-col row: brand wide (1.7fr), explore + contact narrower */
.emg-foot-cols > .e-con-inner{display:flex;flex-direction:row;gap:40px;align-items:flex-start;}
.emg-foot-cols > .e-con-inner > .e-con{flex:0 0 auto;}
.emg-foot-brand{flex:1.7 1 0 !important;}
.emg-foot-explore,.emg-foot-contact{flex:1 1 0 !important;min-width:0;}
/* contact links carry inline icon + flex from the editor HTML; keep each on
   one line (no wrapping) */
.emg-foot-contact a{white-space:nowrap;}

/* ============================================================
   RESPONSIVE COORDINATION
   ============================================================ */
/* Global mobile safety net: never allow horizontal page scroll. Elementor's
   flex lives on .e-con-inner (boxed) — most overflow at small widths is a
   2/3-col row that failed to stack, so this is the backstop. */
html,body{overflow-x:hidden;overflow-x:clip;max-width:100%;}  /* clip (not hidden): hidden makes body a scroll container and kills position:sticky (locations map pin); clip clips without one; hidden kept first as old-browser fallback */
@media(max-width:1024px){
	.emg-menu .elementor-nav-menu--main .elementor-item{font-size:.9rem;padding:8px 9px !important;}
}
@media(max-width:820px){
	.emg-section.emg-aud > .e-con-inner{flex-direction:column;}
	.emg-section.emg-aud > .e-con-inner > .e-con{flex:1 1 100% !important;}
	/* Footer at tablet: brand full width; Explore (narrow) + Contact (wide) as
	   2 columns so the email fits on one line. */
	.emg-foot-cols > .e-con-inner{flex-wrap:wrap;gap:24px 16px;}
	.emg-foot-brand{flex:1 1 100% !important;}
	.emg-foot-explore{flex:0 0 auto !important;width:auto !important;min-width:0;}
	.emg-foot-contact{flex:1 1 auto !important;min-width:0;}
}
/* stat labels: wrapped counter titles were stacking at Elementor's default
   2.5 line-height (loose vs the text-based "Scheduling & Reports" at 1.65).
   One consistent rule for ALL stat labels on mobile (Eric 2026-07-06). */
@media(max-width:767px){
	.emg-stat .elementor-counter-title,
	.emg-stat-text .emg-stat-l{line-height:1.65 !important;}
}
@media(max-width:700px){
	.emg-stats > .e-con-inner{flex-wrap:wrap !important;gap:30px 18px !important;}
	.emg-stats > .e-con-inner > .e-con{flex:1 1 40% !important;min-width:40%;}
	/* center every stat incl. the wide "Board-certified physicians" one */
	.emg-stat,.emg-stat-text{text-align:center;}
	.emg-stat .elementor-counter,.emg-stat .elementor-widget-container{text-align:center;}
}
@media(max-width:900px){
	/* ===== MOBILE MENU: full-screen navy takeover, large Cinzel links ===== */
	/* hide the desktop CTA button in the bar (it moves into the overlay) */
	.emg-nav > .e-con-inner > .e-con:has(.emg-btn){display:none;}
	/* the toggle stays ABOVE the overlay so it can close it. */
	.emg-menu .elementor-menu-toggle{
		position:relative;z-index:1200;
		background:transparent !important;border:0 !important;padding:0 !important;
		width:34px;height:34px;
	}
	/* hide Elementor's built-in SVG icons; draw a thin, wide hamburger via
	   pseudo-elements so we control weight + width, with no background box. */
	.emg-menu .elementor-menu-toggle svg{display:none !important;}
	.emg-menu .elementor-menu-toggle::before,
	.emg-menu .elementor-menu-toggle::after{
		content:"";position:absolute;left:50%;top:50%;
		width:28px;height:1.5px;background:var(--emg-navy);border-radius:2px;
		transform:translate(-50%,-50%);transition:transform .3s,opacity .2s,background .3s;
	}
	.emg-menu .elementor-menu-toggle::before{margin-top:-6px;}
	.emg-menu .elementor-menu-toggle::after{margin-top:6px;}
	/* middle bar: use a box-shadow trick on ::before? simpler: an inset span not
	   available, so add a 3rd bar via the toggle's own background gradient. */
	.emg-menu .elementor-menu-toggle{background:transparent !important;}
	.emg-menu .elementor-menu-toggle{
		background-image:linear-gradient(var(--emg-navy),var(--emg-navy)) !important;
		background-size:28px 1.5px !important;background-position:center !important;background-repeat:no-repeat !important;
	}
	/* OPEN state → X (hide middle bar, cross the outer two), white bars */
	.emg-menu .elementor-menu-toggle.elementor-active{background-image:none !important;}
	.emg-menu .elementor-menu-toggle.elementor-active::before{margin-top:0;transform:translate(-50%,-50%) rotate(45deg);background:#fff;}
	.emg-menu .elementor-menu-toggle.elementor-active::after{margin-top:0;transform:translate(-50%,-50%) rotate(-45deg);background:#fff;}
	/* the dropdown NAV becomes a fixed full-screen overlay, just below the toggle.
	   Scoped to the nav ELEMENT (2026-07-15): the desktop popup ul AND every mobile
	   ul.sub-menu carry the same .elementor-nav-menu--dropdown class, so the old
	   unscoped selector turned each sub-menu into a second, unreachable overlay. */
	.emg-menu nav.elementor-nav-menu--dropdown{
		position:fixed !important;inset:0 !important;top:0 !important;left:0 !important;
		width:100vw !important;height:100vh !important;max-height:100vh !important;z-index:1100 !important;
		background:var(--emg-navy) !important;
		display:flex !important;flex-direction:column;align-items:center;justify-content:center;
		gap:6px;margin:0 !important;border:0 !important;border-radius:0 !important;
		transform:none !important;
	}
	/* Elementor sets aria-hidden on the dropdown: true=closed, false=open. */
	.emg-menu nav.elementor-nav-menu--dropdown[aria-hidden="true"]{opacity:0 !important;visibility:hidden !important;pointer-events:none;}
	.emg-menu nav.elementor-nav-menu--dropdown[aria-hidden="false"]{opacity:1 !important;visibility:visible !important;}
	.emg-menu nav.elementor-nav-menu--dropdown{transition:opacity .3s,visibility .3s;}
	.emg-menu nav.elementor-nav-menu--dropdown ul.elementor-nav-menu{width:100%;display:flex;flex-direction:column;align-items:center;}
	.emg-menu .elementor-nav-menu--dropdown .menu-item{width:100%;text-align:center;}
	.emg-menu .elementor-nav-menu--dropdown .elementor-item{
		color:#fff !important;font-family:"Cinzel",serif !important;font-size:1.5rem !important;
		font-weight:500 !important;padding:14px 20px !important;text-align:center !important;justify-content:center;
	}
	.emg-menu .elementor-nav-menu--dropdown .elementor-item:hover{color:var(--emg-cyan) !important;}
	/* top-level overlay rows keep the text-only treatment: kill Elementor's
	   hover/focus/active/highlighted bgs (default was off-palette #3F444B;
	   widget-level dropdown colors now target the DESKTOP popup instead). */
	.emg-menu .elementor-nav-menu--dropdown a.elementor-item:hover,
	.emg-menu .elementor-nav-menu--dropdown a.elementor-item:focus,
	.emg-menu .elementor-nav-menu--dropdown a.elementor-item.highlighted,
	.emg-menu .elementor-nav-menu--dropdown a.elementor-item.elementor-item-active{
		background:transparent !important;color:var(--emg-cyan) !important;
	}
	/* sub-menu = inline collapsible group under its parent row. emg.js toggles
	   .emg-sub-open on the li when the parent (href="#") row is tapped. */
	.emg-menu .elementor-nav-menu--dropdown ul.sub-menu{
		position:static !important;display:none !important;width:100% !important;
		height:auto !important;max-height:none !important;min-height:0 !important;
		transform:none !important;background:transparent !important;
		border:0 !important;box-shadow:none !important;
		margin:0 !important;padding:0 0 8px !important;
		flex-direction:column;align-items:center;
	}
	.emg-menu .elementor-nav-menu--dropdown li.emg-sub-open > ul.sub-menu{display:flex !important;}
	.emg-menu .elementor-nav-menu--dropdown a.elementor-sub-item{
		color:#fff !important;font-family:"Schibsted Grotesk",sans-serif !important;
		font-size:1.05rem !important;font-weight:500 !important;
		padding:9px 20px !important;justify-content:center !important;text-align:center !important;
		background:transparent !important;width:auto !important;
	}
	.emg-menu .elementor-nav-menu--dropdown a.elementor-sub-item:hover,
	.emg-menu .elementor-nav-menu--dropdown a.elementor-sub-item:focus,
	.emg-menu .elementor-nav-menu--dropdown a.elementor-sub-item.highlighted{
		color:var(--emg-cyan) !important;background:transparent !important;
	}
	/* current page inside the overlay: cyan-dark chip + white text (same active
	   treatment as the desktop dropdown, set on the widget in template 12) */
	.emg-menu .elementor-nav-menu--dropdown a.elementor-sub-item.elementor-item-active{
		background:var(--emg-cyan-dark) !important;color:#fff !important;border-radius:4px;
	}
	/* mobile expand caret: white on the dark overlay (desktop uses --main, untouched) */
	.emg-menu .elementor-nav-menu--dropdown .sub-arrow svg,
	.emg-menu .elementor-nav-menu--dropdown .sub-arrow i{fill:#fff;color:#fff;}
	.emg-menu .elementor-nav-menu--dropdown .sub-arrow{transition:transform .25s ease;}
	.emg-menu .elementor-nav-menu--dropdown li.emg-sub-open > a .sub-arrow{transform:rotate(180deg);}
}
@media(max-width:600px){
	/* hero compressed HARD (Eric mobile round: half the mockup's 52/56 so the
	   stats band is visible on load; 2026-07-06: padding now lives in the
	   Elementor mobile setting on a390314 (26/30) — this rule was double-padding
	   the OUTER .e-con on top of the inner's Elementor padding) */
	.emg-hero > .e-con-inner{gap:12px !important;}
	.emg-hero-h1 h1.elementor-heading-title{font-size:1.85rem;max-width:100%;line-height:1.2em;margin-bottom:-4px;}
	.emg-hero-lede p{font-size:1.05rem !important;margin:2px 0 !important;}
	/* checkmark text stays readable (was shrinking) */
	.emg-hero-claims .elementor-icon-list-text{font-size:1rem !important;}
	.emg-hero-claims .elementor-icon-list-items{gap:8px !important;}
	/* hero buttons side-by-side, phone hidden */
	.emg-hero-cta > .e-con-inner,.emg-hero-cta{flex-direction:row !important;flex-wrap:nowrap !important;gap:10px !important;}
	.emg-hero-cta .emg-btn{flex:1 1 0;}
	.emg-hero-cta .emg-btn .elementor-button{width:100%;text-align:center;padding:13px 12px;font-size:.9rem;white-space:nowrap;}
	.emg-hero-phone{display:none !important;}
	/* topbar stacks, centered; shrink the tag + contact text so it fits phones.
	   Eric mobile round: child containers full-width so both lines truly center;
	   tagline cyan (his reference screenshot). */
	.emg-topbar > .e-con-inner{flex-direction:column;gap:5px;text-align:center;align-items:center;}
	.emg-topbar > .e-con-inner > .e-con{width:100% !important;flex:1 1 100% !important;justify-content:center;}
	.emg-topbar-tag,.emg-topbar-contact{max-width:100%;width:100%;justify-content:center;}
	/* 2026-07-06: mobile tagline now matches desktop (#CFE0EE, native on the
	   widget) -- Eric reverted the session-14 cyan. Only center + size here. */
	.emg-topbar-tag p,.emg-topbar-tag{text-align:center;font-size:.72rem;}
	.emg-topbar-contact p{justify-content:center;gap:14px;}
	.emg-topbar-contact a{font-size:.74rem;gap:6px;}
	.emg-topbar-contact .ico{width:13px;height:13px;}
	.emg-topbar{overflow-x:clip;}
	/* footer: mockup keeps Explore + Contact side-by-side at phone width
	   (brand full-width above); shrink contact links so the email fits */
	.emg-foot-cols > .e-con-inner{gap:24px 12px;}
	.emg-foot-explore{flex:0 0 auto !important;width:auto !important;padding:0 !important;}
	.emg-foot-contact{flex:1 1 0 !important;min-width:0;width:auto !important;padding:0 !important;}
	.emg-foot-explore a{font-size:.85rem;}
	.emg-foot-contact a{font-size:.78rem;white-space:normal;}
	.emg-foot-logo img{width:300px !important;}
	/* mobile hero: pull the background left so the figure is visible (mockup
	   object-position:72% center) */
	.emg-hero{background-position:72% center !important;}
}

/* ============================================================
   CROSS-REFERENCE FEEDS (shortcodes; Task 9)
   [emg_physician_locations] -> .emg-xref-loclist  (physician sidebar)
   [emg_location_physicians] -> .emg-xref-doc-grid (location doctors row)
   Markup mirrors mockup .loclist2 + .doc-card; icon sizing via .ico.
   ============================================================ */
.emg-xref-loclist,.emg-xref-doc-grid{list-style:none;margin:0;padding:0;}
.emg-xref-loclist .ico,.emg-xref-doc-card .ico{width:16px;height:16px;flex:0 0 auto;stroke:var(--emg-cyan-dark);}

/* ---- physician sidebar: "Practices at" ---- */
.emg-xref-loclist li{padding:7px 0;border-bottom:1px solid var(--emg-line);}
.emg-xref-loclist li:last-child{border-bottom:0;}
.emg-xref-loclist a{display:inline-flex;gap:8px;align-items:center;color:var(--emg-navy);
	font-family:"Schibsted Grotesk",sans-serif;font-weight:600;font-size:.95rem;text-decoration:none;}
.emg-xref-loclist a:hover{color:var(--emg-cyan-dark);}

/* ---- location: "Doctors at this location" 3-up card grid ---- */
.emg-xref-doc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;}
.emg-xref-doc-card{background:#fff;border-radius:12px;padding:30px 26px 26px;text-align:center;
	transition:.2s;display:flex;flex-direction:column;align-items:center;
	box-shadow:0 4px 16px rgba(7,29,73,.07);}
.emg-xref-doc-card:hover{box-shadow:0 14px 34px rgba(7,29,73,.12);transform:translateY(-3px);}
.emg-xref-doc-ph{width:118px;height:118px;border-radius:50%;overflow:hidden;
	border:3px solid var(--emg-tint);background:var(--emg-tint);margin-bottom:18px;flex:0 0 auto;}
.emg-xref-doc-ph img{width:100%;height:100%;object-fit:cover;display:block;}
.emg-xref-doc-card h3{font-family:"Cinzel",Georgia,serif;font-size:1.22rem;
	color:var(--emg-navy);margin:0 0 8px;line-height:1.18;font-weight:600;}
.emg-xref-doc-cred{font-style:italic;color:var(--emg-cyan-dark);font-weight:600;font-size:.92rem;margin-bottom:10px;}
.emg-xref-doc-card p{font-size:.9rem;color:#56616c;margin:0 0 16px;}
.emg-xref-doc-link{margin-top:auto;font-family:"Schibsted Grotesk",sans-serif;font-weight:700;
	color:var(--emg-cyan-dark);font-size:.9rem;text-decoration:none;}
.emg-xref-doc-link::after{content:" \2192";}
.emg-xref-doc-link:hover{color:var(--emg-navy);}
@media(max-width:860px){.emg-xref-doc-grid{grid-template-columns:1fr;}}

/* ---- physician CV list (labeled) ---- */
.emg-xref-cv{list-style:none;margin:8px 0 6px;padding:0;}
.emg-xref-cv li{padding:14px 0;border-bottom:1px solid var(--emg-line);}
.emg-xref-cv li:last-child{border-bottom:0;}
.emg-xref-cv .lab{font-family:"Schibsted Grotesk",sans-serif;font-size:.7rem;text-transform:uppercase;
	letter-spacing:.12em;color:var(--emg-cyan-dark);font-weight:700;margin-bottom:3px;}
.emg-xref-cv .val{color:var(--emg-navy);font-weight:600;font-size:1rem;line-height:1.45;}

/* ---- checkmark lists: clinical focus, specialties served, amenities ---- */
.emg-xref-focus,.emg-xref-featlist{list-style:none;margin:0;padding:0;}
.emg-xref-focus li,.emg-xref-featlist li{display:flex;gap:11px;align-items:flex-start;}
.emg-xref-focus li{padding:8px 0;font-size:.94rem;color:#41505c;}
.emg-xref-focus .ico{width:18px;height:18px;stroke:var(--emg-cyan-dark);margin-top:3px;flex:0 0 auto;}
.emg-xref-featlist li{padding:11px 0;border-bottom:1px solid var(--emg-line);font-size:.97rem;color:#3c4750;}
.emg-xref-featlist li:last-child{border-bottom:0;}
.emg-xref-featlist .ico{width:20px;height:20px;stroke:var(--emg-cyan-dark);margin-top:3px;flex:0 0 auto;}

/* ---- physician designation line (on navy hero) ---- */
.emg-xref-desig{font-family:"Schibsted Grotesk",sans-serif;margin-top:14px;font-size:.78rem;
	letter-spacing:.12em;text-transform:uppercase;color:#9fc6e6;font-weight:700;}

/* ---- location quick-facts (map-side) ---- */
.emg-xref-quickfacts{list-style:none;margin:6px 0 0;padding:0;border-top:1px solid var(--emg-line);}
.emg-xref-quickfacts li{display:flex;justify-content:space-between;gap:16px;padding:13px 0;
	border-bottom:1px solid var(--emg-line);font-size:.95rem;}
.emg-xref-quickfacts .k{color:#54606b;font-weight:600;flex:0 0 auto;}
.emg-xref-quickfacts .v{color:var(--emg-navy);font-weight:600;text-align:right;min-width:0;overflow-wrap:break-word;}
@media(max-width:560px){
	.emg-xref-quickfacts li{flex-direction:column;gap:2px;}
	.emg-xref-quickfacts .v{text-align:left;}
}

/* ---- Full-width single templates (CSS backstop) ----
   The per-post Astra meta (site-content-layout=page-builder) strips the boxed
   container so the navy/cyan bands bleed edge-to-edge. This backstop makes it
   hold even if a new physician/location post is created without that meta set. */
.single-physician .ast-article-single,
.single-location .ast-article-single{background:transparent;padding:0;max-width:none;}
.single-physician #primary,
.single-location #primary{margin:0;padding:0;}

/* ============================================================
   PHYSICIAN SINGLE template (Task 9)
   ============================================================ */
.emg-crumb-text p{margin:0;font-size:.84rem;color:#5b6770;}
.emg-crumb-text a{color:var(--emg-cyan-dark);font-weight:600;}
/* hero: round photo left (hug 200px), text right */
.emg-dp-top-row > .e-con-inner > .e-con:has(.emg-dp-photo),
.emg-dp-top-row > .e-con:has(.emg-dp-photo){flex:0 0 200px !important;width:200px !important;}
.emg-dp-photo{width:200px;}
.emg-dp-photo img,.elementor-widget-image.emg-dp-photo img{width:200px !important;height:200px !important;
	max-width:200px;border-radius:50%;object-fit:cover;
	border:4px solid rgba(255,255,255,.18);box-shadow:0 14px 36px rgba(0,0,0,.35);}
/* hero: tighten vertical rhythm between eyebrow / h1 / spec (no big gaps) */
.emg-dp-head > .e-con-inner,.emg-dp-head{gap:0 !important;}
.emg-dp-eyebrow{color:var(--emg-cyan) !important;margin:0 0 2px;}
.emg-dp-eyebrow p,.emg-dp-eyebrow div{margin:0;}
.emg-dp-h1 .elementor-heading-title{color:#fff !important;font-size:clamp(1.9rem,3.4vw,2.7rem);margin:2px 0 4px;}
.emg-dp-spec,.emg-dp-spec p{color:#cfe0ee;font-size:1.05rem;max-width:52ch;margin:0;}
/* body headings + bio — H2 dark navy (was inheriting light blue), tighter */
.emg-dp-bio-h .elementor-heading-title,
.emg-dp-cv-h .elementor-heading-title,
.emg-dp-meet-h,.emg-dp-main h2{color:var(--emg-navy) !important;font-family:"Cinzel",Georgia,serif;
	font-size:1.5rem;font-weight:600;margin:0 0 18px;line-height:1.18;}
.emg-dp-bio p{color:#41505c;margin-bottom:16px;font-size:1.02rem;}
/* body is a 2-col grid: wide main + 320px sidebar (mockup 1fr / 320px) */
.emg-dp-body-row > .e-con-inner{display:flex;flex-direction:row;gap:54px;align-items:flex-start;max-width:var(--emg-maxw);margin-inline:auto;}
.emg-dp-main{flex:1 1 auto !important;min-width:0;}
/* sidebar sticky, fixed width, full-width button */
.emg-dp-side{flex:0 0 320px !important;width:320px !important;align-self:flex-start;position:sticky;top:96px;
	background:var(--emg-tint);border-radius:12px;padding:28px 26px;}
.emg-dp-side-h .elementor-heading-title{font-size:1.15rem;margin-bottom:14px;}
.emg-dp-focus-wrap{margin-bottom:14px;}
.emg-dp-loc-wrap{margin-bottom:22px;}
.emg-dp-side-btn{width:100%;}
.emg-dp-side-btn .elementor-button{width:100%;justify-content:center;}
/* CTA band */
.emg-cta-h .elementor-heading-title{color:#fff !important;font-size:2.2rem;}
.emg-cta-p p{color:#dcecf7;max-width:50ch;margin:14px auto 26px;}
@media(max-width:820px){
	.emg-dp-body-row{flex-direction:column;}
	.emg-dp-side{flex:1 1 100%;position:static;width:100%;}
	/* (session-18, Eric) center the round doctor photo on mobile. flex-direction
	   was set on the OUTER .e-con (line ~514) but the flex lives on .e-con-inner
	   -> the inner stayed ROW and the fixed 200px photo column (line ~479) sat at
	   the left. Flip the INNER to column and let the photo column go full-width;
	   its wrapper text-align:center then centers the 200px inline-block photo. */
	.emg-dp-top-row{flex-direction:column;text-align:center;}
	.emg-dp-top-row > .e-con-inner{flex-direction:column !important;align-items:center !important;}
	.emg-dp-top-row > .e-con-inner > .e-con:has(.emg-dp-photo),
	.emg-dp-top-row > .e-con:has(.emg-dp-photo){flex:0 0 auto !important;width:100% !important;}
	.emg-dp-photo{width:100% !important;text-align:center;}
	.emg-dp-spec p{max-width:none;}
}

/* ============================================================
   LOCATION SINGLE template (Task 9)
   ============================================================ */
/* ---- lochead (navy) ---- */
.emg-loc-head{position:relative;overflow:hidden;}
/* tighten vertical rhythm: eyebrow / H1 / region line hug together */
.emg-loc-head > .e-con-inner{gap:0 !important;}
.emg-loc-eyebrow{color:var(--emg-cyan) !important;margin:0 0 2px;}
.emg-loc-eyebrow p,.emg-loc-eyebrow div{margin:0;}
.emg-loc-h1 .elementor-heading-title{color:#fff !important;font-size:clamp(2rem,3.6vw,2.85rem);margin:2px 0 4px;}
/* descriptive tagline line under the H1 */
.emg-loc-tagline-wrap{margin:0 0 4px;}
.emg-loc-region{color:#9fc6e6;font-family:"Schibsted Grotesk",sans-serif;font-size:1.05rem;font-weight:500;}
.emg-loc-meta-wrap{margin-top:22px;}
.emg-xref-loc-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:24px 34px;}
.emg-xref-loc-meta .mblk{display:flex;gap:12px;align-items:flex-start;}
.emg-xref-loc-meta .ico{width:22px;height:22px;stroke:var(--emg-cyan);margin-top:2px;flex:0 0 auto;}
.emg-xref-loc-meta .lbl{font-family:"Schibsted Grotesk",sans-serif;font-size:.68rem;text-transform:uppercase;
	letter-spacing:.14em;color:#9fc6e6;font-weight:700;}
.emg-xref-loc-meta .val{color:#fff;font-weight:600;font-size:.98rem;line-height:1.45;}
.emg-xref-loc-meta .val a{color:#fff;}
.emg-xref-loc-meta .val a:hover{color:var(--emg-cyan);}
.emg-loc-headcta{margin-top:30px;flex-wrap:wrap;}
.emg-loc-headcta > .e-con-inner > .e-con,.emg-loc-headcta > .e-con{width:auto !important;flex:0 0 auto !important;}

/* ---- mapsec: map + summary ---- */
.emg-loc-maprow > .e-con-inner > .e-con:has(.emg-loc-mapcol),
.emg-loc-maprow > .e-con:has(.emg-loc-mapcol){flex:1.35 1 0 !important;}
.emg-loc-maprow > .e-con-inner > .e-con.emg-loc-summary,
.emg-loc-maprow > .e-con.emg-loc-summary{flex:1 1 0 !important;}
.emg-xref-mapbox{border-radius:12px;overflow:hidden;border:1px solid var(--emg-line);
	min-height:380px;box-shadow:0 12px 30px rgba(7,29,73,.08);height:100%;}
.emg-xref-mapbox iframe{width:100%;height:100%;min-height:380px;border:0;display:block;}
/* (session-18, Eric) MOBILE map ~2/3 of its height (desktop unchanged). The
   desktop height comes from min-height:380px on the box + iframe; on mobile the
   map stacks above the details (session-16) and 380px is too tall. Drop to
   ~253px (2/3). Fixed height (not min) so it can't spring back to 380. */
@media(max-width:767px){
	.emg-xref-mapbox{min-height:0 !important;height:253px !important;}
	.emg-xref-mapbox iframe{min-height:0 !important;height:253px !important;}
}
.emg-loc-summary-h .elementor-heading-title{font-size:1.8rem;margin-bottom:14px;}
.emg-loc-summary-text p{color:#4a5560;margin-bottom:14px;}

/* section H2s are navy (guard against Elementor Kit's light-blue heading color) */
.emg-loc-docs-h .elementor-heading-title,
.emg-loc-twoup-h .elementor-heading-title,
.emg-loc-summary-h .elementor-heading-title,
.emg-loc-gal-h .elementor-heading-title,
.emg-loc-ins-h .elementor-heading-title{color:var(--emg-navy) !important;}
/* ---- doctors at this location (uses .emg-xref-doc-grid) ---- */
.emg-loc-docs-h .elementor-heading-title{font-size:clamp(1.7rem,3vw,2.3rem);margin:8px 0;}
.emg-loc-docs-sub p{color:#54606b;margin-bottom:38px;}

/* ---- specialties + amenities two-up ---- */
/* (session-18, Eric) tighten the gap between "Specialties served"/"Amenities"
   titles and the list beneath (was 24px -> too airy; desktop + mobile). */
.emg-loc-twoup-h .elementor-heading-title{font-size:clamp(1.7rem,3vw,2.3rem);margin-bottom:12px;}

/* ---- extra (before your visit, navy) ---- */
.emg-loc-extra-eyebrow{color:var(--emg-cyan) !important;}
.emg-loc-extra-h .elementor-heading-title{color:#fff !important;font-size:2rem;margin-bottom:14px;}
.emg-loc-extra-text p{color:#cfe0ee;margin-bottom:14px;}

/* ---- insurance & MPN ---- */
.emg-loc-ins-h .elementor-heading-title{font-size:clamp(1.7rem,3vw,2.3rem);margin-bottom:8px;}
.emg-loc-ins-sub p{color:#54606b;margin-bottom:28px;max-width:60ch;}
.emg-xref-ins-colhd{font-family:"Schibsted Grotesk",sans-serif;font-size:.74rem;text-transform:uppercase;
	letter-spacing:.14em;font-weight:700;color:var(--emg-cyan-dark);margin-bottom:16px;}
.emg-xref-mpn{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:10px 26px;}
.emg-xref-mpn li{display:flex;gap:10px;align-items:center;font-size:.95rem;color:#3c4750;}
.emg-xref-mpn .ico{width:18px;height:18px;stroke:var(--emg-cyan-dark);flex:0 0 auto;}

@media(max-width:880px){
	/* (session-16) MAP ABOVE DETAILS on mobile. The old rule set flex-direction
	   on the OUTER .e-con, but the columns are laid out by .e-con-inner (still
	   row) -> map + details stayed side-by-side crammed. Flip the INNER to
	   column (DOM order is map-first -> map lands above the address/hours/
	   parking details) and make the real column children full-width. */
	.emg-loc-maprow > .e-con-inner{flex-direction:column !important;flex-wrap:nowrap !important;}
	.emg-loc-maprow > .e-con-inner > .e-con{flex:0 0 auto !important;width:100% !important;}
	.emg-loc-maprow{flex-direction:column;}
	.emg-loc-maprow > .e-con{flex:1 1 100% !important;}
	.emg-xref-loc-meta{grid-template-columns:1fr;gap:16px;}
	.emg-xref-mpn{grid-template-columns:repeat(2,1fr);}
}
@media(max-width:600px){
	.emg-xref-mpn{grid-template-columns:1fr;}
	.emg-loc-headcta{gap:10px;}
	/* (session-16) hero buttons SIDE BY SIDE on mobile. The old shrink rule
	   targeted > .e-con but the real buttons are > .e-con-inner > .e-con, so the
	   desktop flex:0 0 auto (fixed-width) stayed in effect -> Schedule (181) +
	   Get Directions (171) + gap overflowed the 307px row -> wrapped/stacked.
	   Correct the path, keep them on ONE row (nowrap), let them share it. */
	.emg-loc-headcta > .e-con-inner{flex-wrap:nowrap !important;}
	.emg-loc-headcta > .e-con-inner > .e-con{flex:1 1 0 !important;width:auto !important;min-width:0 !important;}
	.emg-loc-headcta .emg-btn,.emg-loc-headcta .emg-xref-dir-btn{width:100%;justify-content:center;text-align:center;}
	/* (session-17) keep each label on ONE line: the .emg-btn/.emg-xref-dir-btn
	   26px side padding left only ~76px for text in a ~128px column -> "Schedule
	   a Test" / "Get Directions" wrapped to 4 lines. nowrap + trimmed side padding
	   (26->12) fits both single-line labels in the shared row at 390 (and 360). */
	.emg-loc-headcta .emg-btn,.emg-loc-headcta .emg-xref-dir-btn{white-space:nowrap;padding-left:12px;padding-right:12px;}
	.emg-loc-headcta > .e-con{flex:1 1 0 !important;}
}

/* ---- location office photos gallery ---- */
.emg-loc-gal-h .elementor-heading-title{font-size:clamp(1.7rem,3vw,2.3rem);margin-bottom:8px;text-align:center;}
.emg-loc-gal-sub p{color:#54606b;text-align:center;margin-bottom:38px;}
/* locations with no office photos: hide the whole Office Photos band
   (template heading + sub) instead of showing an empty section */
.emg-loc-gallery:not(:has(.emg-xref-gal)){display:none;}
.emg-xref-gal{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;}
.emg-xref-gitem{position:relative;margin:0;padding:0;border:0;aspect-ratio:4/3;border-radius:12px;overflow:hidden;background:#0b2a5e;cursor:pointer;display:block;}
.emg-xref-gitem img{width:100%;height:100%;object-fit:cover;transition:.35s;}
.emg-xref-gitem:hover img{transform:scale(1.06);}
/* zoom badge appears on hover */
.emg-gzoom{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;
	background:rgba(7,29,73,.28);opacity:0;transition:.25s;}
.emg-xref-gitem:hover .emg-gzoom{opacity:1;}
.emg-gzoom svg{width:40px;height:40px;stroke:#fff;}
@media(max-width:760px){.emg-xref-gal{grid-template-columns:repeat(2,1fr);gap:12px;}}

/* ---- office-photos lightbox (JS-driven) ---- */
.emg-lightbox{position:fixed;inset:0;z-index:9999;display:none;align-items:center;justify-content:center;
	background:rgba(4,10,25,.92);padding:40px;}
.emg-lightbox.on{display:flex;}
.emg-lb-img{max-width:90vw;max-height:86vh;border-radius:8px;box-shadow:0 30px 80px rgba(0,0,0,.6);}
.emg-lightbox button{position:absolute;background:transparent;border:0;color:#fff;cursor:pointer;line-height:1;}
.emg-lb-close{top:22px;right:28px;font-size:2.6rem;}
.emg-lb-nav{top:50%;transform:translateY(-50%);font-size:3.4rem;padding:0 18px;opacity:.8;}
.emg-lb-nav:hover{opacity:1;}
.emg-lb-prev{left:8px;}.emg-lb-next{right:8px;}
@media(max-width:600px){.emg-lb-nav{font-size:2.4rem;}.emg-lb-close{font-size:2.1rem;top:14px;right:16px;}}

/* ============================================================
   SHARED "Before Your Visit" global template (navy 2-col band)
   ============================================================ */
.emg-bv{background:var(--emg-navy);}
.emg-bv-row > .e-con-inner{display:flex;flex-direction:row;gap:54px;align-items:center;max-width:var(--emg-maxw);margin-inline:auto;}
.emg-bv-text{flex:1.05 1 0;}
.emg-bv-media{flex:1 1 0;}
.emg-bv-eyebrow{color:var(--emg-cyan) !important;margin-bottom:6px;}
.emg-bv-h .elementor-heading-title{color:#fff !important;font-size:clamp(1.7rem,3vw,2.1rem);margin-bottom:12px;}
.emg-bv-p p{color:#cfe0ee;font-size:1rem;margin-bottom:6px;}
.emg-bv-list{list-style:none;margin:18px 0 4px;padding:0;display:flex;flex-direction:column;gap:10px;}
.emg-bv-list li{display:flex;gap:11px;align-items:flex-start;color:#dbe8f4;font-size:.96rem;line-height:1.45;}
.emg-bv-list .ico{width:18px;height:18px;stroke:var(--emg-cyan);margin-top:3px;flex:0 0 auto;}
.emg-bv-btn{margin-top:14px;}
.emg-bv-img img{border-radius:12px;box-shadow:0 18px 40px rgba(0,0,0,.3);width:100%;height:auto;}
@media(max-width:820px){
	.emg-bv-row > .e-con-inner{flex-direction:column;gap:28px;}
	.emg-bv-text,.emg-bv-media{flex:1 1 100%;}
}

/* ---- Get Directions button (shortcode-rendered; matches .emg-btn-white) ---- */
.emg-xref-dir-btn{display:inline-block;font-family:"Schibsted Grotesk",sans-serif;font-weight:600;
	font-size:.95rem;padding:14px 26px;border-radius:6px;border:2px solid transparent;
	background:#fff;color:var(--emg-navy);transition:.18s;line-height:1.1;text-decoration:none;}
.emg-xref-dir-btn:hover{background:var(--emg-cyan);color:#fff;}
.emg-loc-dir-wrap{display:flex;}

/* ============================================================
   ARCHIVE templates (Task 10): physician directory + location directory
   ============================================================ */
/* ---- page hero (navy) shared by archives + About/Patient ---- */
/* NOTE: background-COLOR (not the `background` shorthand) — the shorthand resets
   background-image to none, and emg.css loads after Elementor's post CSS, so it
   was silently wiping the hero bg images set in _elementor_data. */
.emg-phero{position:relative;overflow:hidden;background-color:var(--emg-navy);}
/* when a bg image is set on the hero, darken it with a navy gradient so the
   white heading stays legible (mirrors mockup .phero .bg{opacity:.5}+::after) */
.emg-phero::before{content:"";position:absolute;inset:0;z-index:1;
	background:linear-gradient(105deg,rgba(7,29,73,.9) 35%,rgba(7,29,73,.55) 100%);}
.emg-phero > .e-con-inner,.emg-phero > .elementor-widget-wrap{position:relative;z-index:2;}
.emg-phero .emg-phero-h .elementor-heading-title{color:#fff !important;font-size:clamp(2rem,3.8vw,3rem);margin-top:12px;line-height:1.2em;}
.emg-phero .emg-eyebrow{color:var(--emg-cyan) !important;}
.emg-phero-sub p{color:#d7e3f0;max-width:54ch;margin-top:16px;}
/* cyan underline rule under a section title (mockup .intro .rule) */
.emg-rule{margin:0 0 22px;}
.emg-rule .emg-rule-bar,span.emg-rule-bar{display:block;height:3px;width:60px;background:var(--emg-cyan);border-radius:3px;}

/* ---- physician directory grid ---- */
.emg-dir-intro p{max-width:62ch;margin:0 auto 48px;text-align:center;color:#54606b;}
.emg-dir-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;}
.emg-dir-card{background:#fff;border:1px solid var(--emg-line);border-radius:14px;overflow:hidden;
	display:flex;flex-direction:column;transition:.2s;}
.emg-dir-card:hover{box-shadow:0 16px 38px rgba(7,29,73,.12);transform:translateY(-3px);}
.emg-dir-photo{position:relative;aspect-ratio:4/3;background:#E8EEF3;overflow:hidden;}
.emg-dir-photo img{width:100%;height:100%;object-fit:cover;object-position:50% 25%;}
.emg-dir-body{padding:22px 24px 24px;display:flex;flex-direction:column;flex:1;}
.emg-dir-body h3{font-family:"Cinzel",Georgia,serif;font-size:1.28rem;margin-bottom:12px;line-height:1.18;font-weight:600;}
.emg-dir-body h3 a{color:var(--emg-navy);text-decoration:none;}
.emg-dir-body h3 a:hover{color:var(--emg-cyan-dark);}
/* directory card credential — light blue, sits directly under the name (Eric 2026-07-07) */
.emg-dir-body h3:has(+ .emg-dir-cred){margin-bottom:4px;}
.emg-dir-cred{color:var(--emg-cyan-dark);font-weight:600;font-size:.9rem;letter-spacing:.01em;margin-bottom:12px;}
.emg-dir-meta{margin-bottom:6px;}
.emg-dir-meta + .emg-dir-meta{margin-top:12px;}
.emg-dir-meta .k{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;font-weight:700;color:#7c8893;}
.emg-dir-meta .v{color:#3a4651;font-size:.97rem;}
.emg-dir-link{margin-top:auto;padding-top:18px;font-weight:700;color:var(--emg-cyan-dark);font-size:.9rem;text-decoration:none;}
.emg-dir-link::after{content:" \2192";}
.emg-dir-link:hover{color:var(--emg-navy);}
@media(max-width:860px){.emg-dir-grid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:560px){.emg-dir-grid{grid-template-columns:1fr;}}

/* ---- location directory: tabs + grouped list ---- */
.emg-loc-tabs{position:relative;display:flex;gap:0;width:fit-content;max-width:100%;margin:0 auto 34px;
	border-bottom:2px solid rgba(25,169,225,.35);}
.emg-loc-tabs button{position:relative;font-family:"Schibsted Grotesk",sans-serif;font-weight:600;font-size:.95rem;
	padding:12px 26px;border:0;background:transparent;color:#6a7682;cursor:pointer;transition:color .2s;}
.emg-loc-tabs button:hover{color:var(--emg-navy);}
.emg-loc-tabs button.on{color:var(--emg-navy);}
.emg-loc-tabs button.on::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:3px;
	background:var(--emg-navy);border-radius:2px;}
.emg-loclist{display:flex;flex-direction:column;}
.emg-region-group{margin-bottom:8px;}
.emg-region-group > h2{font-family:"Schibsted Grotesk",sans-serif;font-size:1.1rem;text-transform:uppercase;
	letter-spacing:.1em;color:var(--emg-cyan-dark);font-weight:700;margin:26px 0 14px;padding-bottom:8px;
	border-bottom:2px solid #E8EEF3;}
.emg-region-group:first-child > h2{margin-top:0;}
.emg-loccard{display:block;border-bottom:1px solid var(--emg-line);padding:20px 14px;transition:.18s;
	background:#fff;text-decoration:none;}
.emg-loccard:hover{background:var(--emg-tint);}
.emg-loccard .row{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;}
.emg-loccard h3{font-family:"Cinzel",Georgia,serif;font-size:1.25rem;margin-bottom:4px;color:var(--emg-navy);
	font-weight:600;line-height:1.18;}
.emg-loccard .addr{color:#56616c;font-size:.92rem;}
.emg-loccard .docs{margin-top:10px;font-size:.82rem;color:#7c8893;}
.emg-loccard .docs b{color:var(--emg-navy);font-weight:600;}
.emg-loccard .go{font-weight:700;color:var(--emg-cyan-dark);font-size:.9rem;white-space:nowrap;flex:0 0 auto;}
.emg-loccard .go::after{content:" \2192";}
.emg-loccard:hover .go{color:var(--emg-navy);}
@media(max-width:520px){.emg-loc-tabs button{padding:12px 12px;font-size:.84rem;}}

/* ============================================================
   ABOUT page (Task 10)
   ============================================================ */
.emg-about-intro-row > .e-con-inner > .e-con:has(.emg-about-img),
.emg-about-intro-row > .e-con:has(.emg-about-img){flex:1 1 0 !important;}
.emg-about-intro-text{flex:1 1 0 !important;}
/* eyebrow tight above the h2 (kill the widget's default bottom margin gap) */
.emg-about-intro-text .emg-eyebrow{margin-bottom:2px;}
.emg-about-h2 .elementor-heading-title{font-size:clamp(1.7rem,3vw,2.3rem);margin:4px 0 0;}
.emg-about-p p{color:#4a5560;font-size:1.02rem;}
.emg-about-img img{border-radius:12px;width:100%;height:auto;box-shadow:0 18px 40px rgba(7,29,73,.14);}
/* availability section: eyebrow tight above heading */
.emg-avail .emg-eyebrow,.emg-avail-eyebrow{margin-bottom:8px;}
.emg-avail-h .elementor-heading-title{font-size:clamp(1.7rem,3vw,2.2rem);max-width:26ch;margin:4px auto 26px;}
@media(max-width:820px){
	.emg-about-intro-row > .e-con-inner{flex-direction:column !important;gap:30px;}
	.emg-about-intro-row > .e-con,.emg-about-intro-row > .e-con-inner > .e-con{flex:0 0 auto !important;width:100% !important;}
}

/* ============================================================
   CONTACT page + Gravity Form (Task 10)
   ============================================================ */
.emg-contact-row > .e-con-inner > .e-con:has(.emg-contact-formcard),
.emg-contact-row > .e-con:has(.emg-contact-formcard){flex:1.1 1 0 !important;}
.emg-contact-left{flex:1 1 0 !important;}
.emg-contact-h .elementor-heading-title{font-size:clamp(1.7rem,3vw,2.2rem);margin-bottom:14px;}
.emg-contact-intro p{color:#4a5560;font-size:1.02rem;margin-bottom:18px;}
.emg-contact-note{background:var(--emg-tint);border-left:3px solid var(--emg-cyan);
	padding:16px 18px;border-radius:6px;}
.emg-contact-note p{margin:0;color:#3c4750;font-size:.95rem;}

/* ---- Gravity Form brand styling ---- */
.emg-contact-formcard .gform_wrapper .gfield_label{font-family:"Schibsted Grotesk",sans-serif;
	font-weight:600;color:var(--emg-navy);font-size:.9rem;}
.emg-contact-formcard .gform_wrapper input[type=text],
.emg-contact-formcard .gform_wrapper input[type=email],
.emg-contact-formcard .gform_wrapper input[type=tel],
.emg-contact-formcard .gform_wrapper select,
.emg-contact-formcard .gform_wrapper textarea{
	border:1px solid var(--emg-line);border-radius:6px;padding:11px 13px;font-size:.97rem;
	font-family:"Schibsted Grotesk",sans-serif;width:100%;background:#fff;}
.emg-contact-formcard .gform_wrapper input:focus,
.emg-contact-formcard .gform_wrapper select:focus,
.emg-contact-formcard .gform_wrapper textarea:focus{
	outline:none;border-color:var(--emg-cyan);box-shadow:0 0 0 3px rgba(25,169,225,.15);}
.emg-contact-formcard .gform_wrapper .gform_footer input.gform_button,
.emg-contact-formcard .gform_wrapper .gform_footer input[type=submit],
.emg-contact-formcard .gform_wrapper .gform_footer button.gform_button{
	background:var(--emg-cyan) !important;color:#fff !important;border:0 !important;border-radius:6px !important;
	font-family:"Schibsted Grotesk",sans-serif;font-weight:600;font-size:.98rem;
	padding:14px 30px !important;cursor:pointer;transition:.18s;width:auto;}
.emg-contact-formcard .gform_wrapper .gform_footer input.gform_button:hover,
.emg-contact-formcard .gform_wrapper .gform_footer input[type=submit]:hover,
.emg-contact-formcard .gform_wrapper .gform_footer button.gform_button:hover{background:var(--emg-cyan-dark) !important;}
.emg-contact-formcard .gform_required_legend{font-size:.82rem;color:#7c8893;}
@media(max-width:820px){.emg-contact-row{flex-direction:column;}.emg-contact-row > .e-con{flex:1 1 100% !important;}}

/* ============================================================
   PATIENT INFORMATION page (Task 10)
   ============================================================ */
.emg-pi-h2 .elementor-heading-title{font-size:clamp(1.7rem,3vw,2.2rem);margin-bottom:16px;}
.emg-pi-p p,.emg-pi-lead p{color:#4a5560;font-size:1.02rem;}
.emg-pi-lead{margin-bottom:8px;}
/* what-is split — text ~0.95, video ~1.05 (nudged from .85/1.15 so the
   "What are EMG and NCS?" H2 stays on ONE line at desktop) */
.emg-pi-whatis-row > .e-con-inner{align-items:center;}
.emg-pi-whatis-text{flex:0.95 1 0 !important;width:auto !important;}
.emg-pi-whatis-row > .e-con-inner > .e-con:has(.emg-pi-video),
.emg-pi-whatis-row > .e-con:has(.emg-pi-video),
.emg-pi-video{flex:1.05 1 0 !important;width:auto !important;min-width:0;}
/* keep the what-is H2 on one line at desktop (mobile stacks <=820 → allow wrap) */
@media(min-width:821px){.emg-pi-whatis-text .emg-pi-h2 .elementor-heading-title{white-space:nowrap;}}
.emg-pi-video .elementor-wrapper{border-radius:12px;overflow:hidden;box-shadow:0 14px 36px rgba(7,29,73,.14);}
@media(max-width:820px){
	/* column + wrap + basis-100% column-wraps the video OFF-CANVAS (clipped by
	   overflow-x:clip) — stack recipe: nowrap column, natural-height children */
	.emg-pi-whatis-row > .e-con-inner{flex-direction:column !important;flex-wrap:nowrap !important;}
	.emg-pi-whatis-text,.emg-pi-video,
	.emg-pi-whatis-row > .e-con-inner > .e-con{flex:0 0 auto !important;width:100% !important;}
	/* (session-16) VIDEO CLIPPED ON MOBILE fix. Root cause: stacked, the video's
	   .emg-pi-video inner stays display:flex(row) with a single HTML-widget child
	   at flex:0 1 auto -> the child's width is indefinite -> the .emg-pi-videobox
	   aspect-ratio:16/9 can't resolve a height -> the .elementor-widget-html
	   wrapper collapses to 0px while the 16:9 box overflows and the next section
	   paints over its lower two-thirds (Eric: "only the top third shows"). Make
	   the single-child inner a block so the widget gets a definite width and the
	   aspect-ratio box lays out at full height. */
	.emg-pi-video > .e-con-inner{display:block !important;}
	.emg-pi-video .elementor-widget-html,
	.emg-pi-video .elementor-widget-html > .elementor-widget-container{width:100% !important;}
}
/* prep lists */
.emg-pi-prep-body{max-width:820px;}
.emg-pi-prep-body h3{font-family:"Cinzel",Georgia,serif;color:var(--emg-navy);font-size:1.2rem;
	margin:26px 0 10px;font-weight:600;}
.emg-pi-prep-body h3:first-child{margin-top:0;}
.emg-pi-list{list-style:none;margin:8px 0 6px;padding:0;}
.emg-pi-list li{position:relative;padding:10px 0 10px 30px;border-bottom:1px solid var(--emg-line);
	color:#3a4651;line-height:1.5;}
.emg-pi-list li:last-child{border-bottom:0;}
.emg-pi-list li::before{content:"";position:absolute;left:2px;top:16px;width:14px;height:8px;
	border-left:2.4px solid var(--emg-cyan-dark);border-bottom:2.4px solid var(--emg-cyan-dark);
	transform:rotate(-45deg);}
.emg-pi-list b{color:var(--emg-navy);font-weight:600;}
/* experience 3-col on navy */
.emg-pi-exp-h .elementor-heading-title{color:#fff !important;text-align:center;margin-bottom:40px;font-size:clamp(1.7rem,3vw,2.2rem);}
.emg-pi-exp-col{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);
	border-radius:12px;padding:28px 26px;flex:1 1 0 !important;}
.emg-pi-exp-col h3{font-family:"Cinzel",Georgia,serif;color:#fff;font-size:1.2rem;margin:0 0 10px;font-weight:600;}
.emg-pi-exp-col p{color:#cfe0ee;font-size:.96rem;margin:0;}
@media(max-width:760px){.emg-pi-exp-cols{flex-direction:column;}.emg-pi-exp-col{flex:1 1 100% !important;}}
/* FAQ accordion */
.emg-pi-faq-h .elementor-heading-title{margin-bottom:32px;}
.emg-pi-accordion{max-width:800px;margin:0 auto;}
.emg-pi-accordion .elementor-accordion .elementor-tab-title{font-family:"Schibsted Grotesk",sans-serif;
	font-weight:600;color:var(--emg-navy);font-size:1.05rem;}
.emg-pi-accordion .elementor-accordion .elementor-tab-content{color:#4a5560;font-size:.98rem;}

/* ---- Patient Info rebuild supplement (Task 12) ---- */
/* centered rule helper + rule margin inside a section-head */
.emg-rule-c{margin-inline:auto;}.emg-rule-c .emg-rule-bar,.emg-rule-c.emg-rule-bar{margin-inline:auto;}
.emg-section-head .emg-rule{margin-top:14px;}
/* narrow content column */
.emg-pi-narrow{max-width:880px;margin-inline:auto;width:100%;}
/* whatis video (raw iframe box) */
.emg-pi-videobox{position:relative;width:100%;aspect-ratio:16/9;border-radius:12px;overflow:hidden;box-shadow:0 18px 40px rgba(7,29,73,.16);}
.emg-pi-videobox iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}
.emg-pi-whatis-row > .e-con-inner{align-items:center;}
/* the inline SVGs in lists are redundant with the ::before check — hide them */
.emg-pi-list li svg{display:none;}
.emg-pi-list li span{display:block;}
/* "why need" intro + 2-col */
.emg-pi-sub{font-family:"Schibsted Grotesk",sans-serif;font-size:1.1rem;font-weight:600;color:var(--emg-navy);margin:18px 0 4px;line-height:1.4;}
.emg-pi-2col{display:grid;grid-template-columns:1fr 1fr;gap:0 40px;margin-top:8px;}
@media(max-width:640px){.emg-pi-2col{grid-template-columns:1fr;gap:0;}}
.emg-pi-list-bold li{padding-left:30px;}
/* mid CTA card (cyan gradient) — force over Elementor's inline bg-color */
.emg-pi-midcta,.emg-pi-midwrap .emg-pi-midcta{background-image:linear-gradient(90deg,var(--emg-navy),var(--emg-cyan-dark)) !important;
	background-color:var(--emg-navy) !important;border-radius:16px;
	padding:48px 44px;text-align:center;color:#fff;width:100%;max-width:var(--emg-maxw);margin-inline:auto;}
.emg-pi-midcta .emg-eyebrow{color:#bfe6f7 !important;display:block;margin-bottom:8px;}
.emg-pi-mid-h .elementor-heading-title{color:#fff !important;font-size:clamp(1.5rem,2.6vw,2rem);max-width:28ch;margin:0 auto 8px;}
.emg-pi-mid-p p{color:#e4f2fb;margin:0 auto 22px;}
.emg-pi-midcta .elementor-widget-button{text-align:center;}
@media(max-width:600px){.emg-pi-midcta{padding:36px 24px;}}
/* how it works 2-panel */
.emg-pi-work > .e-con-inner{display:flex;flex-direction:row;gap:26px;max-width:var(--emg-maxw);margin-inline:auto;}
.emg-pi-workpanel{flex:1 1 0 !important;background:#fff;border:1px solid var(--emg-line);border-radius:12px;padding:30px;box-shadow:0 10px 28px rgba(7,29,73,.06);}
.emg-pi-workpanel h3{font-family:"Cinzel",Georgia,serif;color:var(--emg-navy);font-size:1.25rem;margin:0 0 16px;font-weight:600;}
.emg-pi-workrow{padding:12px 0;border-bottom:1px solid var(--emg-line);}
.emg-pi-workrow:last-child{border-bottom:0;}
.emg-pi-workrow b{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--emg-cyan-dark);margin-bottom:4px;}
.emg-pi-workrow span{color:#3a4651;font-size:.97rem;line-height:1.5;}
@media(max-width:820px){
	/* same off-canvas column-wrap trap as the what-is row — nowrap + auto basis */
	.emg-pi-work > .e-con-inner{flex-direction:column !important;flex-wrap:nowrap !important;}
	.emg-pi-workpanel{flex:0 0 auto !important;width:100% !important;}
}
/* experience band gets a navy overlay over its bg image */
.emg-pi-exp{position:relative;overflow:hidden;background:var(--emg-navy);}
.emg-pi-exp::before{content:"";position:absolute;inset:0;z-index:0;background:linear-gradient(90deg,rgba(7,29,73,.93),rgba(17,134,182,.85));}
.emg-pi-exp > .e-con-inner{position:relative;z-index:1;}
.emg-pi-exp-cols{display:flex;flex-direction:row;gap:24px;max-width:var(--emg-maxw);margin-inline:auto;}
@media(max-width:820px){.emg-pi-exp-cols{flex-direction:column !important;}.emg-pi-exp-col{flex:1 1 100% !important;}}
/* shared-template wrappers add no extra padding */
.emg-pi-shared > .e-con-inner{max-width:none;padding:0;}

/* ==== 2026-07-05 punch list ==== */

/* ============================================================
   PARALLAX v3 -- COMPOSITOR TRANSFORM-LAYER (2026-07-06, Eric: "do it right
   permanently"). Replaces the background-attachment:fixed "drift v2" approach
   (fixed attachment forces a full-area repaint every scroll frame -- felt
   heavy). Now the photographic background lives in its OWN absolutely-
   positioned layer (.emg-fxlayer, injected by emg.js as the section's first
   child), moved via transform:translate3d -> GPU-composited, NO layout/paint
   per frame.
   MECHANICS: the section clips (overflow), positions relative, and hosts the
   layer BELOW its ::before gradient overlay (layer z:0, ::before z:1 via the
   rule below, content z:2). The layer is inset by -CLAMP-margin on top/bottom
   so translate never exposes an edge (v3.1 clamp +-240 -> inset 280). JS sets
   the layer's background-image + per-band background-position (framing) and
   drives transform each rAF tick. Desktop >=1025 only; <=1024 the layer is
   removed / never built and the section keeps its own scroll-attached bg.
   The section KEEPS its Elementor background-image as the mobile/no-JS
   fallback; on desktop the layer paints over it. */
.emg-fixbg{position:relative;transition:none !important;}
.emg-fxlayer{position:absolute;left:0;right:0;top:-280px;bottom:-280px;z-index:0;
	background-size:cover;background-repeat:no-repeat;
	will-change:transform;transform:translate3d(0,0,0);
	backface-visibility:hidden;pointer-events:none;}
/* keep the gradient overlay + content ABOVE the moving layer */
.emg-fixbg > .elementor-background-overlay,
.emg-fixbg::before{z-index:1 !important;}
.emg-fixbg > .e-con-inner{position:relative;z-index:2;}
/* section must clip the taller layer; hero was overflow:visible -> clip so the
   composition + subject don't bleed past the band. clip (not hidden) avoids
   creating a scroll container that would break any sticky descendants. */
.emg-fixbg{overflow:clip;}
/* desktop >=1025: the layer paints the photo, so hide the section's OWN bg
   (JS flags .emg-fx-on once a layer is built). SCOPED to >=1025 so it can NEVER
   leak to mobile -- the earlier inline `sec.style.backgroundImage=none` was
   width-agnostic and killed the mobile static fallback (2026-07-06 regression). */
@media(min-width:1025px){.emg-fixbg.emg-fx-on{background-image:none !important;}}
/* reduced motion + <=1024: no layer, section shows its OWN bg scroll-attached */
@media(max-width:1024px){.emg-fixbg{background-attachment:scroll !important;}
	.emg-fxlayer{display:none !important;}}
@media(prefers-reduced-motion:reduce){.emg-fxlayer{transform:none !important;}}

/* CTA-band schedule button rendered via shortcode (location prefill) */
.emg-cta-btn-wrap{text-align:center;}

/* locations page: CA map + list layout (mockup .maplayout) */
.emg-maplayout{display:grid;grid-template-columns:1fr 1.1fr;gap:44px;align-items:start;margin-top:26px;}
@media(max-width:920px){.emg-maplayout{grid-template-columns:1fr;gap:34px;}}
.emg-mapcol{position:sticky;top:96px;}
@media(max-width:600px){.emg-mapcol{position:static;}}
.emg-ca-map{width:100%;height:auto;background:var(--emg-tint);border-radius:14px;border:1px solid var(--emg-line);padding:14px;}
.emg-ca-map .state{fill:#dde6ee;stroke:#c4d2de;stroke-width:2;}
.emg-pin{cursor:pointer;transition:.18s;}
.emg-pin circle{fill:var(--emg-cyan);stroke:#fff;stroke-width:2;transition:.18s;}
.emg-pin:hover circle,.emg-pin.on circle{fill:var(--emg-navy);r:9;}
.emg-pin text{font-family:"Schibsted Grotesk",sans-serif;font-size:11px;font-weight:600;fill:var(--emg-navy);pointer-events:none;}
.emg-maplegend{display:flex;gap:22px;justify-content:center;margin-top:14px;font-size:.84rem;color:#54606b;}
.emg-maplegend span{display:inline-flex;align-items:center;gap:8px;}
.emg-maplegend i{width:12px;height:12px;border-radius:50%;background:var(--emg-cyan);display:inline-block;}
.emg-loccard.on{background:var(--emg-tint);}
.emg-loccard.on .go{color:var(--emg-navy);}

/* Gravity Forms: location/doctor checkbox groups in 2 columns */
.emg-gf-locations .gfield_checkbox,
.emg-gf-doctors .gfield_checkbox{display:grid !important;grid-template-columns:1fr 1fr !important;gap:8px 18px !important;}
@media(max-width:520px){
	.emg-gf-locations .gfield_checkbox,
	.emg-gf-doctors .gfield_checkbox{grid-template-columns:1fr !important;}
}
.emg-gf-locations .gchoice label,
.emg-gf-doctors .gchoice label{font-weight:500;}

/* mid CTA spans the full section width (beats the generic wrapper-fix width:auto) */
.emg-section > .e-con-inner > .e-con.emg-pi-midcta{width:100% !important;}

/* ==== 2026-07-05 Quincy QA round 1 ==== */

/* (#1) Shortcode-rendered buttons output a bare <a class="emg-btn ...">
   (no inner .elementor-button) — give the anchor itself the full button
   treatment so [emg_location_schedule_btn] matches the native buttons. */
a.emg-btn{display:inline-block;font-family:"Schibsted Grotesk",sans-serif;font-weight:600;
	font-size:.95rem;padding:14px 26px;border-radius:6px;border:2px solid transparent;
	transition:.18s;line-height:1.1;text-decoration:none;text-align:center;}
a.emg-btn.emg-btn-primary{background:var(--emg-cyan);color:#fff;}
a.emg-btn.emg-btn-primary:hover{background:var(--emg-cyan-dark);color:#fff;}
a.emg-btn.emg-btn-white{background:#fff;color:var(--emg-navy);}
a.emg-btn.emg-btn-white:hover{background:var(--emg-cyan);color:#fff;}

/* (#21) Insurance rail/body 0.85fr/1.15fr like mockup .insC-grid (the generic
   .emg-section wrapper-fix forces flex:1 1 0 — outrank it). */
.emg-ins > .e-con-inner > .e-con.emg-ins-rail{flex:.85 1 0 !important;}
.emg-ins > .e-con-inner > .e-con.emg-ins-body{flex:1.15 1 0 !important;}

/* (#2) Insurance & MPN stacks below the mockup's 820px breakpoint (home
   section + global template 138 on Patient Info + all locations). Elementor's
   explicit row/50% settings need !important to yield. */
@media(max-width:820px){
	.emg-ins > .e-con-inner{flex-direction:column !important;gap:34px !important;}
	/* session-14 stack recipe: basis 100% on COLUMN children = 100% of the
	   container HEIGHT -> insBODY became a too-short flex container that
	   crushed the logos widget to 0h (logo row overlapped IN-NETWORK MPNS
	   on phones). flex:0 0 auto keeps natural heights (2026-07-06). */
	.emg-ins > .e-con-inner > .e-con,
	.emg-ins > .e-con-inner > .e-con.emg-ins-rail,
	.emg-ins > .e-con-inner > .e-con.emg-ins-body{flex:0 0 auto !important;width:100% !important;max-width:100%;}
	/* mockup centers the rail copy once stacked */
	.emg-ins-rail{align-items:center;}
	.emg-ins-title .elementor-heading-title{text-align:center;margin-inline:auto;}
	.emg-ins-lead p,.emg-ins-rail .emg-ins-colhd p{text-align:center;}
}

/* (#10) FAQ accordion: plus/minus icon at the far RIGHT (mockup .faq .pm) */
.emg-pi-accordion .elementor-tab-title{display:flex;align-items:center;justify-content:space-between;gap:16px;}
.emg-pi-accordion .elementor-tab-title .elementor-accordion-icon{order:2;flex:0 0 auto;}
.emg-pi-accordion .elementor-tab-title .elementor-accordion-title{order:1;flex:1 1 auto;}

/* (#13) Mobile menu: "Schedule a Test" renders as the cyan button
   (mockup .mobile-menu .btn) instead of a plain text item. */
.emg-menu .elementor-nav-menu--dropdown .menu-item.emg-menu-cta{width:auto;margin-top:14px;}
.emg-menu .elementor-nav-menu--dropdown .menu-item.emg-menu-cta .elementor-item{
	font-family:"Schibsted Grotesk",sans-serif !important;font-size:1.05rem !important;
	font-weight:600 !important;color:#fff !important;background:var(--emg-cyan) !important;
	border-radius:6px;padding:14px 34px !important;line-height:1.1;}
.emg-menu .elementor-nav-menu--dropdown .menu-item.emg-menu-cta .elementor-item:hover{
	background:var(--emg-cyan-dark) !important;color:#fff !important;}

/* (#18) Patient Info hero H1 measure (mockup: max-width 24ch, wraps 3 lines) */
.page-id-15 .emg-phero-h .elementor-heading-title{max-width:24ch;font-size:clamp(1.9rem,3.4vw,2.7rem);}

/* (#6) crumb INSIDE a navy/photo page hero (contact — mockup .phero .crumb) */
.emg-phero-crumb{font-size:.84rem;color:#a9c4dd;margin-bottom:6px;}
.emg-phero-crumb p,.emg-phero-crumb div{margin:0;}
.emg-phero-crumb a{color:#cfe0ee;}
.emg-phero-crumb a:hover{color:#fff;}

/* (#3) Contact left column: phone/email/locations info rows (mockup .cinfo .crow) */
.emg-crow{display:flex;align-items:flex-start;gap:14px;padding:16px 0;border-bottom:1px solid var(--emg-line);}
.emg-crow:last-of-type{border-bottom:0;}
.emg-crow .ci{flex:0 0 auto;width:44px;height:44px;border-radius:10px;background:var(--emg-tint);
	display:flex;align-items:center;justify-content:center;}
.emg-crow .ci svg{width:21px;height:21px;stroke:var(--emg-cyan-dark);fill:none;
	stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;}
.emg-crow .lbl{font-family:"Schibsted Grotesk",sans-serif;font-size:.72rem;text-transform:uppercase;
	letter-spacing:.12em;color:#7c8893;font-weight:700;}
.emg-crow .val{font-family:"Cinzel",Georgia,serif;color:var(--emg-navy);font-size:1.18rem;font-weight:600;}
.emg-crow .val a{color:var(--emg-navy);text-decoration:none;}
.emg-crow .val a:hover{color:var(--emg-cyan-dark);}
.emg-crow .sub{font-size:.86rem;color:#7c8893;}

/* (#14) Contact form card heading + required-fields intro */
.emg-form-h .elementor-heading-title{font-size:1.35rem;color:var(--emg-navy);margin-bottom:4px;}
.emg-form-sub p{color:#7c8893;font-size:.92rem;margin:0 0 10px;}

/* (#4) /locations/ closing contact strip (mockup .contactstrip — tint band,
   navy links + cyan icons; reuses the .emg-triple row layout) */
.emg-contactstrip > .e-con-inner{max-width:720px;text-align:center;align-items:center;}
.emg-cs-h .elementor-heading-title{font-size:1.9rem;color:var(--emg-navy);margin-bottom:10px;}
.emg-cs-p p{color:#54606b;margin:0 0 6px;}
.emg-contactstrip .emg-triple{margin-top:18px;font-size:.98rem;}
.emg-contactstrip .emg-triple a{color:var(--emg-navy);}
.emg-contactstrip .emg-triple a:hover{color:var(--emg-cyan-dark);}
.emg-contactstrip .emg-triple .ico{stroke:var(--emg-cyan-dark);width:18px;height:18px;}

/* Astra styles CPT singles as blog articles: `.ast-article-single img` gets a
   0 0 30px box-shadow (looked like white chips behind the insurance logos on
   location pages, absent on pages). This is a page-builder site -- kill the
   blog-image treatment everywhere so shared blocks render identically on
   pages and singles (2026-07-06). */
.ast-article-single figure,
.ast-article-single img:not(figure img){box-shadow:none;}

/* ==== 2026-07-05 Eric mobile review round (session 14) ==== */

/* (#12) nav current-page + hover/focus state = mockup cyan-dark (kit accent
   now matches, this pins it regardless of widget defaults) */
.emg-menu .elementor-nav-menu--main .elementor-item.elementor-item-active,
.emg-menu .elementor-nav-menu--main .elementor-item:focus{color:var(--emg-cyan-dark) !important;}

/* (#1) insurance divider off on mobile (it collided with the PPO logo row) */
@media(max-width:820px){
	.emg-ins-hr-wrap,.emg-ins-hr{display:none !important;}
}

/* (#8/#9 + session-16 flicker fix) mobile: entrance animations OFF.
   Content > motion on phones. ROOT CAUSE of the "visible -> disappear -> fade
   in again" flash (Eric session-16): forcing .elementor-invisible visible does
   NOT stop Elementor's IntersectionObserver from firing on scroll-in. When it
   fires it removes .elementor-invisible and applies the fadeIn/fadeInUp
   KEYFRAME, which independently starts at opacity:0 -> the force-visible element
   snapped to 0 then faded back = the flash. Fix: also kill the animation itself
   on any triggered element (animation:none), so the observer can toggle classes
   but there is no keyframe left to animate. Covers both Elementor's own trigger
   and the emg.js interval guard (which adds .animated .fadeIn). */
@media(max-width:767px){
	.elementor-invisible{visibility:visible !important;opacity:1 !important;}
	.elementor-element.animated{
		animation:none !important;
		opacity:1 !important;
		transform:none !important;
		visibility:visible !important;
	}
}

/* ============================================================
   SECTION PADDING STANDARD (2026-07-06, Eric: one consistent top/bottom
   padding for every section at every screen size -- agency standard).
   MECHANISM: Elementor pipes container padding through the CSS custom props
   --padding-block-start/end set per element; boxed containers consume them on
   .e-con-inner, full-width ones on .e-con itself. Overriding the VAR (custom
   props accept !important in the cascade) on the .emg-section class therefore
   beats every per-element authored value at any breakpoint, wherever the
   padding is applied -- change the :root scale below and every standard
   section follows. (The old approach -- literal padding on the OUTER .e-con
   at <=600 -- ADDED to the inner's Elementor padding instead of replacing it:
   that double-padding was Eric's "way too much mobile padding".)
   DEVIATIONS (documented): .emg-hero + .emg-stats are NOT .emg-section and
   keep their Elementor-authored fold-tuned values (hero 64/56 desktop 26/30
   mobile; stats 30/24); .emg-phero page heroes + .emg-cta-band bg-image bands
   get their own slightly-larger scale below so the background compositions
   keep presence. */
:root{--emg-secpad-t:72px;--emg-secpad-b:72px;
	--emg-heropad-t:78px;--emg-heropad-b:70px;
	--emg-ctapad-t:72px;--emg-ctapad-b:72px;}
@media(max-width:1024px){:root{--emg-secpad-t:56px;--emg-secpad-b:56px;
	--emg-heropad-t:64px;--emg-heropad-b:56px;
	--emg-ctapad-t:56px;--emg-ctapad-b:56px;}}
@media(max-width:767px){:root{--emg-secpad-t:40px;--emg-secpad-b:40px;
	--emg-heropad-t:48px;--emg-heropad-b:44px;
	--emg-ctapad-t:48px;--emg-ctapad-b:48px;}}
.e-con.emg-section{--padding-block-start:var(--emg-secpad-t) !important;
	--padding-block-end:var(--emg-secpad-b) !important;}
.e-con.emg-phero,.e-con.emg-loc-head{--padding-block-start:var(--emg-heropad-t) !important;
	--padding-block-end:var(--emg-heropad-b) !important;}
/* Our Doctors hero: halve the space below the "board-certified…" sub (Eric 2026-07-06)
   — page-scoped so other page heroes keep the standard hero padding. */
.page-id-86 .e-con.emg-phero{--padding-block-end:calc(var(--emg-heropad-b) / 2) !important;}
.e-con.emg-cta-band{--padding-block-start:var(--emg-ctapad-t) !important;
	--padding-block-end:var(--emg-ctapad-b) !important;}

/* (session-17, Eric) LOCATION DETAIL pages only: Insurance & MPN block --
   drop the top/bottom rule lines (tpl138 insSEC has border 1px #DCE4EA t/b) and
   HALVE the padding (standard .emg-section 72/56/40 -> 36/28/20). Scoped to
   body.single-location so Patient Info (page 15), which shares template 138 and
   keeps the mockup's framed treatment, is untouched. Var override wins over the
   .emg-section var (boxed container consumes --padding-block-* on .e-con-inner). */
body.single-location .e-con.emg-section.emg-ins{border:0 !important;
	--padding-block-start:36px !important;--padding-block-end:36px !important;}
@media(max-width:1024px){body.single-location .e-con.emg-section.emg-ins{
	--padding-block-start:28px !important;--padding-block-end:28px !important;}}
@media(max-width:767px){body.single-location .e-con.emg-section.emg-ins{
	--padding-block-start:20px !important;--padding-block-end:20px !important;}}

/* (session-18, Eric) LOCATION pages: bring back ONLY the divider line directly
   BELOW THE LOGOS (mockup .insC-hr). Root cause it went missing: Astra styles CPT
   singles as blog articles and zeroes the <hr> background to transparent on
   body.single-location (it stays #ccc-visible on the Patient Info page, a normal
   page). The outer block frame lines (insSEC border) stay REMOVED per session-17;
   this only restores the under-logos hr. Scoped to body.single-location so Patient
   Info's template-138 instance is untouched. */
body.single-location .emg-ins .emg-ins-hr{
	background:rgba(7,29,73,.12) !important;height:1px !important;border:0 !important;}
@media(max-width:820px){
	/* the global <=820 rule hides .emg-ins-hr (it collided with the logo row on
	   home/PI at mobile); on LOCATION pages Eric wants this one line kept. */
	body.single-location .emg-ins .emg-ins-hr-wrap,
	body.single-location .emg-ins .emg-ins-hr{display:block !important;}
}

@media(max-width:600px){
	/* (#6) tighten the gap under "Hover over images for detail" */
	.emg-cond > .e-con-inner{gap:22px !important;}
	.emg-cond .emg-section-head{margin-bottom:0;}
	.emg-cond-sub p{margin-bottom:0;}
	/* footer: tighter vertical rhythm; blurb trailing margin off so the
	   brand->columns gap is the flex gap alone (mockup ~24px) */
	.emg-foot-brand .elementor-widget-text-editor p:last-child{margin-bottom:0;}
	.emg-foot-brand > .e-con-inner{padding-bottom:0 !important;}
	/* footer: tighter vertical rhythm. Override the Elementor padding VARS
	   (the old literal padding on the outer .e-con ADDED to the inner's 60/28
	   -> mobile footer was really 104/38, 2026-07-06). */
	.elementor-location-footer .e-con.e-parent{--padding-block-start:44px !important;--padding-block-end:10px !important;}
	.emg-foot-cols{padding-top:0 !important;padding-bottom:24px !important;}
}

/* ---------------------------------------------------------------------------
   SELF-HOSTED @font-face FIX (Sullivan 2026-07-07) — REGRESSION REPAIR
   Astra's self-hosted font switch emitted subset @font-face blocks whose
   unicode-range excluded basic Latin from taking effect (Cinzel never
   registered in the browser FontFaceSet; H tags fell back to serif). These
   full-Latin faces (no unicode-range) point at the SAME local woff2 files
   Astra already downloaded (astra-local-fonts/), so fonts stay self-hosted
   with ZERO remote fonts.googleapis.com / gstatic.com calls, and the
   preloaded woff2s are now actually used. Weights 400/500/600/700.
   --------------------------------------------------------------------------- */
@font-face{font-family:'Cinzel';font-style:normal;font-weight:400;font-display:swap;src:url(/wp-content/astra-local-fonts/cinzel/8vIJ7ww63mVu7gt79mT7.woff2) format('woff2');}
@font-face{font-family:'Cinzel';font-style:normal;font-weight:500;font-display:swap;src:url(/wp-content/astra-local-fonts/cinzel/8vIJ7ww63mVu7gt79mT7.woff2) format('woff2');}
@font-face{font-family:'Cinzel';font-style:normal;font-weight:600;font-display:swap;src:url(/wp-content/astra-local-fonts/cinzel/8vIJ7ww63mVu7gt79mT7.woff2) format('woff2');}
@font-face{font-family:'Cinzel';font-style:normal;font-weight:700;font-display:swap;src:url(/wp-content/astra-local-fonts/cinzel/8vIJ7ww63mVu7gt79mT7.woff2) format('woff2');}
@font-face{font-family:'Schibsted Grotesk';font-style:normal;font-weight:400;font-display:swap;src:url(/wp-content/astra-local-fonts/schibsted-grotesk/Jqz55SSPQuCQF3t8uOwiUL-taUTtap9Gayo.woff2) format('woff2');}
@font-face{font-family:'Schibsted Grotesk';font-style:normal;font-weight:500;font-display:swap;src:url(/wp-content/astra-local-fonts/schibsted-grotesk/Jqz55SSPQuCQF3t8uOwiUL-taUTtap9Gayo.woff2) format('woff2');}
@font-face{font-family:'Schibsted Grotesk';font-style:normal;font-weight:600;font-display:swap;src:url(/wp-content/astra-local-fonts/schibsted-grotesk/Jqz55SSPQuCQF3t8uOwiUL-taUTtap9Gayo.woff2) format('woff2');}
@font-face{font-family:'Schibsted Grotesk';font-style:normal;font-weight:700;font-display:swap;src:url(/wp-content/astra-local-fonts/schibsted-grotesk/Jqz55SSPQuCQF3t8uOwiUL-taUTtap9Gayo.woff2) format('woff2');}

/* ---------------------------------------------------------------------------
   GRAVITY FORMS PLACEHOLDER TEXT (Sullivan 2026-07-07)
   Placeholders were rendering in the dark input-text color (#262626), making
   the form look pre-filled. Light gray hint text (#9aa3ab), clearly lighter
   than entered text but WCAG-legible on the white/tint field bg. opacity:1
   defeats browsers that dim placeholders. Typed text keeps the normal dark color.
   --------------------------------------------------------------------------- */
.gform_wrapper ::placeholder,
.gform_wrapper input::placeholder,
.gform_wrapper textarea::placeholder{color:#9aa3ab;opacity:1;}
/* legacy vendor-prefixed placeholder selectors (older Safari/Edge) */
.gform_wrapper input:-ms-input-placeholder,
.gform_wrapper textarea:-ms-input-placeholder{color:#9aa3ab;}
.gform_wrapper input::-webkit-input-placeholder,
.gform_wrapper textarea::-webkit-input-placeholder{color:#9aa3ab;opacity:1;}

/* ---- QUINCY FIX 2026-07-08 (s26b): .emg-pi-narrow width vs the section wrapper rule ----
   Line ~36's `.emg-section > .e-con-inner > .e-con{width:auto !important}` defeats
   `.emg-pi-narrow{width:100%}`, so narrow bands shrink-to-fit their content — only
   LOOKED right when content was long enough to hit the 880 cap (PI). Short content
   (insurance-adjusters checklist) hugged at ~526px. Same disease + same fix shape as
   the session-12 `.emg-pi-midcta` override below line ~870. */
.emg-section > .e-con-inner > .e-con.emg-pi-narrow{width:100% !important;}

/* Hide the whole "Doctors at this location" section when the location has no
   doctors (marker emitted by emg_location_physicians; Eric 2026-07-30). Lives
   here, not inline, because RUCSS strips inline <style> on optimized pages. */
.emg-loc-docs:has(.emg-docs-none){display:none!important}
