/* EPCM — shared responsive/header fixes (loaded last, overrides page styles) */
.wrap{padding-left:24px;padding-right:24px}
.hd{display:flex;align-items:center;justify-content:space-between;gap:14px;height:auto;min-height:68px;padding-top:10px;padding-bottom:10px;flex-wrap:nowrap}
.hd>a:first-child{flex:0 0 auto}
.hd img{height:28px;width:auto;display:block}
.hd nav{display:flex;align-items:center;gap:16px;flex-wrap:nowrap;min-width:0;overflow:hidden}
.hd nav a{white-space:nowrap}
.hd .callbtn{flex:0 0 auto;white-space:nowrap}
.hero-in{padding-top:76px;padding-bottom:66px}

/* --- Hero: two-column on desktop, readable photo, framed image --- */
.hero::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:linear-gradient(90deg,rgba(16,16,20,.93) 0%,rgba(16,16,20,.74) 48%,rgba(16,16,20,.38) 100%)}
.hero-in{position:relative;z-index:1}
.hero-in h1{max-width:20ch}
.hero-img{display:block;width:100%;height:auto;margin:0;aspect-ratio:4/3;object-fit:cover;border-radius:18px;border:1px solid rgba(232,236,247,.14);box-shadow:0 30px 60px -22px rgba(0,0,0,.65)}
@media(min-width:981px){
  .hero-in{display:grid;grid-template-columns:minmax(0,1.04fr) minmax(0,.96fr);column-gap:48px;align-items:center}
  .hero-in>*{grid-column:1;min-width:0}
  .hero-in>.hero-img{grid-column:2;grid-row:1/-1;align-self:center;max-height:430px}
}
@media(max-width:980px){
  .hero-img{margin-top:30px;max-height:320px}
}
@media(max-width:1180px){.hd nav{gap:13px}.hd nav a{font-size:13px}}
@media(max-width:1010px){
  .hd{flex-wrap:wrap;row-gap:10px}
  .hd nav{order:3;width:100%;overflow-x:auto;overflow-y:hidden;gap:18px;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-bottom:2px}
  .hd nav::-webkit-scrollbar{display:none}
}
@media(max-width:560px){
  .wrap{padding-left:16px;padding-right:16px}
  .hd{min-height:58px;gap:10px}
  .hd img{height:23px}
  .hd .callbtn{padding:9px 12px;font-size:13.5px;gap:6px}
  .hero-in{padding-top:44px;padding-bottom:40px}
  section{padding-top:42px;padding-bottom:42px}
  h1{font-size:clamp(26px,7.6vw,34px);max-width:none}
  .lede{font-size:15.5px}
  .ey{font-size:11.5px;letter-spacing:.1em}
  .cta{gap:9px}
  .cta .btn{flex:1 1 100%;justify-content:center}
  .trust{gap:12px 16px;font-size:13px}
  .grid{grid-template-columns:1fr}
  .grants{grid-template-columns:1fr}
  .local .two{grid-template-columns:1fr}
  .quote{font-size:19px}
  .legal{flex-direction:column;gap:6px}
  .card{padding:18px}
  .fgrid{grid-template-columns:1fr}
  .hero-img{max-height:230px;border-radius:14px;margin-top:24px}
}


/* ================================================================
   MOBILE HARDENING v2 — nothing overflows, nothing gets clipped.
   Loaded last, so it overrides page + inline grid declarations.
   ================================================================ */
html,body{max-width:100%;overflow-x:hidden}
img,svg,video,iframe,canvas,picture,image-slot{max-width:100%}
h1,h2,h3,h4,h5,p,li,a,span,button,label,dd,dt,td,th{overflow-wrap:break-word}

/* grid/flex children must be allowed to shrink below their content width */
[style*="display: grid"]>*,[style*="display:grid"]>*,[class*="epcm-grid"]>*,.epcm-2col>*,
[style*="display: flex"]>*,[style*="display:flex"]>*{min-width:0}

@media (max-width:1180px){
  /* every fr-based track becomes shrinkable */
  .epcm-2col,[class*="epcm-grid"]{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
}

@media (max-width:860px){
  /* collapse ALL grids (class-based AND inline-styled, incl. nested ones) to one column */
  .epcm-2col,.epcm-grid-2,.epcm-grid-3,.epcm-grid-4,
  [style*="grid-template-columns"]{grid-template-columns:minmax(0,1fr)!important}
  /* small icon/logo strips stay multi-column */
  .epcm-brand-strip{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .epcm-weekstrip{grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:4px!important}
  .epcm-weekstrip *{font-size:11px!important}
  /* buttons: never wider than the screen, wrap their label */
  .epcm-btn,.btn,button{max-width:100%;white-space:normal}
  .epcm-hero-visual{max-width:100%!important}
}

@media (max-width:560px){
  /* 16px minimum stops iOS Safari from zooming on focus */
  input,select,textarea{font-size:16px!important;max-width:100%}
  .epcm-testi-row{padding-left:16px;padding-right:16px}
}


/* ================================================================
   MOBILE HARDENING v3 — strict: nothing exceeds the viewport on any
   device. Loaded last; wins over page + inline styles.
   ================================================================ */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{overflow-x:clip}

@media (max-width:1024px){
  /* fixed pixel widths and min-widths are the #1 cause of clipped pages */
  [style*="min-width"]{min-width:0!important}
  [width]{max-width:100%!important}
  table{width:100%!important;max-width:100%!important;display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
  pre,code{white-space:pre-wrap;word-break:break-word}
}

@media (max-width:860px){
  .wrap,.container,[class*="epcm-container"],[class*="epcm-section"]{
    width:100%!important;max-width:100%!important;
    padding-left:16px!important;padding-right:16px!important;margin-left:0!important;margin-right:0!important;
  }
  /* any element that declares a hard pixel width shrinks instead of clipping */
  [style*="width:"]:not(img):not(svg):not(.epcm-keepw){max-width:100%!important}
  /* flex rows wrap rather than push content off-screen */
  [style*="display:flex"]:not(.epcm-nowrap),[style*="display: flex"]:not(.epcm-nowrap){flex-wrap:wrap}
  /* long unbroken strings: phone numbers, emails, urls */
  a[href^="tel:"],a[href^="mailto:"],.epcm-nap,.nap{word-break:break-word}
  /* absolutely-positioned decoration must not create scroll */
  [style*="position:absolute"],[style*="position: absolute"]{max-width:100%}
  /* headings scale with the viewport instead of overflowing */
  h1{font-size:clamp(26px,6.4vw,40px)!important;line-height:1.14!important}
  h2{font-size:clamp(22px,5.2vw,32px)!important;line-height:1.18!important}
  h3{font-size:clamp(18px,4.2vw,24px)!important}
  /* sticky/fixed bars span the screen exactly */
  header,.hd,[style*="position:fixed"],[style*="position: fixed"]{max-width:100vw}
}

@media (max-width:640px){
  /* hard stop: no horizontal scroll anywhere */
  html,body{overflow-x:hidden!important;width:100%!important}
  section,header,footer,main,article,aside,div{max-width:100%}
  /* nowrap labels wrap on small screens (nav keeps its scroll strip) */
  [style*="white-space:nowrap"]:not(.hd *):not(nav *),
  [style*="white-space: nowrap"]:not(.hd *):not(nav *){white-space:normal!important}
  /* stacked CTAs, full-width tap targets */
  .cta,.epcm-cta-row,.epcm-btn-row{flex-direction:column;align-items:stretch}
  .cta .btn,.epcm-btn,.btn{width:100%;justify-content:center;min-height:48px}
  /* forms */
  form,fieldset,input,select,textarea,button{max-width:100%!important}
  label{display:block}
  /* images never taller than the screen */
  img,image-slot,.hero-img{max-height:70vh;height:auto}
  /* generous but safe gutters */
  :root{--gutter:16px}
}

@media (max-width:380px){
  .wrap,.container{padding-left:14px!important;padding-right:14px!important}
  h1{font-size:clamp(23px,7vw,30px)!important}
  .trust,.legal,.nap{font-size:12.5px!important}
}
