@charset "UTF-8";
/*!
 * EcoArmor Pest Defense — visual design system
 * Ported from the approved EcoArmor template renderings.
 * Mobile-first. Presentation only: no content, URL or markup-semantics changes.
 */

/* ============================================================
   1. TOKENS
   ============================================================ */
:root{
  --navy:#2E4256;
  --deep:#172B3B;
  --cream:#F3EFE5;
  --paper:#FBFAF6;
  --brass:#A8875C;
  --brass-light:#CFB993;
  --ink:#263A4B;
  --sage:#8B988D;
  --sand:#D7C9B1;
  --line:rgba(38,58,75,.18);
  --line-dark:rgba(255,255,255,.20);
  --muted:#5D6E7C;
  --muted-dark:#D5DDE2;

  --font-sans:"Open Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
  --font-serif:Georgia,"Times New Roman",serif;

  /* fluid type */
  --fs-display:clamp(41px,9.2vw,82px);
  --fs-h2:clamp(34px,6.4vw,70px);
  --fs-h3:clamp(22px,3.1vw,32px);
  --fs-h4:clamp(19px,2.2vw,24px);
  --fs-body:16px;
  --fs-lead:clamp(16px,1.5vw,18px);
  --fs-small:13px;
  --fs-label:10px;

  /* spacing */
  --pad-x:22px;
  --pad-y:76px;
  --gap:clamp(24px,4vw,48px);
  --maxw:1240px;
  --maxw-wide:1560px;
  --maxw-read:760px;
  --radius:3px;
}
@media(min-width:1000px){
  :root{ --pad-x:6vw; --pad-y:112px; }
}

/* ============================================================
   2. RESET / BASE
   ============================================================ */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--font-sans);
  font-size:var(--fs-body);
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img,svg,video,iframe{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
a:hover{text-decoration:none}
p{margin:0 0 1.15em}
p:last-child{margin-bottom:0}
h1,h2,h3,h4,h5,h6{
  font-family:var(--font-sans);
  font-weight:800;
  line-height:1.02;
  letter-spacing:-.045em;
  margin:0 0 .5em;
  color:var(--deep);
  text-wrap:balance;
}
h1{font-size:var(--fs-display);line-height:.96;letter-spacing:-.06em}
h2{font-size:var(--fs-h2);line-height:1;letter-spacing:-.055em}
h3{font-size:var(--fs-h3)}
h4{font-size:var(--fs-h4);letter-spacing:-.03em}
h5{font-size:17px;letter-spacing:-.02em}
h6{font-size:14px;letter-spacing:.02em}
ul,ol{margin:0 0 1.15em;padding-left:1.25em}
li{margin:0 0 .45em}
blockquote{
  font-family:var(--font-serif);
  font-size:clamp(20px,2.6vw,28px);
  line-height:1.4;
  border-left:3px solid var(--brass);
  margin:2.4em 0;padding-left:24px;color:var(--deep);
}
hr{border:0;border-top:1px solid var(--line);margin:2.5em 0}
strong,b{font-weight:800}
small{font-size:var(--fs-small)}
table{width:100%;border-collapse:collapse;font-size:14px}
th,td{padding:12px 14px;border-bottom:1px solid var(--line);text-align:left}
th{font-weight:800;font-size:11px;text-transform:uppercase;letter-spacing:.1em}
figure{margin:0}
figcaption{font-family:var(--font-serif);font-size:14px;line-height:1.5;color:var(--muted);margin-top:12px}
code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em}
::selection{background:var(--sand);color:var(--deep)}

/* focus — WCAG 2.2 AA visible focus */
:focus-visible{outline:3px solid var(--brass);outline-offset:2px;border-radius:2px}
.ea-dark :focus-visible,.ea-footer :focus-visible,.ea-utility :focus-visible{outline-color:var(--brass-light)}

/* ============================================================
   3. LAYOUT PRIMITIVES
   ============================================================ */
.center-wr{width:100%;max-width:var(--maxw);margin:0 auto;padding-left:var(--pad-x);padding-right:var(--pad-x)}
.large-center-wr{width:100%;max-width:var(--maxw-wide);margin:0 auto;padding-left:var(--pad-x);padding-right:var(--pad-x)}
.ea-section{padding-top:var(--pad-y);padding-bottom:var(--pad-y)}
.ea-cream{background:var(--cream)}
.ea-paper{background:var(--paper)}
.ea-sand{background:var(--sand)}
.ea-navy{background:var(--navy);color:#fff}
.ea-dark{background:var(--deep);color:#fff}
.ea-navy h1,.ea-navy h2,.ea-navy h3,.ea-navy h4,.ea-navy h5,
.ea-dark h1,.ea-dark h2,.ea-dark h3,.ea-dark h4,.ea-dark h5{color:#fff}
.ea-dark p,.ea-navy p{color:var(--muted-dark)}
.clearfix::after{content:"";display:table;clear:both}
.align-center{text-align:center}
.align-right{text-align:right}
.ea-rule{border:0;border-top:1px solid var(--line);margin:0}

/* eyebrow label */
.ea-label,.label{
  display:block;font-size:var(--fs-label);letter-spacing:.2em;font-weight:900;
  text-transform:uppercase;color:var(--brass);margin:0 0 20px;
}
.ea-dark .ea-label,.ea-navy .ea-label{color:var(--brass-light)}
.ea-lead{font-size:var(--fs-lead);line-height:1.75;max-width:62ch}

/* ============================================================
   4. BUTTONS
   ============================================================ */
.ea-btn,.site-btn,.site-btn-17,.site-btn-transparent,
.search-submit,button[type=submit],input[type=submit],
.gform_button,.gform_wrapper .gform_footer input[type=submit]{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:48px;padding:15px 26px;
  border:1px solid transparent;border-radius:var(--radius);
  font-family:var(--font-sans);font-size:10px;font-weight:900;
  letter-spacing:.11em;text-transform:uppercase;
  cursor:pointer;text-align:center;
  transition:background-color .18s ease,color .18s ease,transform .18s ease,border-color .18s ease;
}
.ea-btn-navy,.site-btn,.search-submit,button[type=submit],input[type=submit],
.gform_button,.gform_wrapper .gform_footer input[type=submit]{background:var(--navy);color:#fff}
.ea-btn-navy:hover,.site-btn:hover,.search-submit:hover,button[type=submit]:hover,
input[type=submit]:hover,.gform_wrapper .gform_footer input[type=submit]:hover{background:var(--deep);color:#fff}
.ea-btn-cream,.site-btn-17{background:var(--cream);color:var(--deep)}
.ea-btn-cream:hover,.site-btn-17:hover{background:#fff;color:var(--deep)}
.ea-btn-brass{background:var(--brass);color:#fff}
.ea-btn-brass:hover{background:#96774f}
.ea-btn-ghost,.site-btn-transparent{background:transparent;color:#fff;border-color:rgba(255,255,255,.55)}
.ea-btn-ghost:hover,.site-btn-transparent:hover{background:#fff;color:var(--deep);border-color:#fff}
.ea-btn-outline{background:transparent;color:var(--deep);border-color:var(--line)}
.ea-btn-outline:hover{background:var(--deep);color:#fff;border-color:var(--deep)}
@media(prefers-reduced-motion:no-preference){
  .ea-btn:hover,.site-btn:hover{transform:translateY(-2px)}
}
.ea-arrow{
  display:inline-flex;align-items:center;gap:8px;
  font-size:10px;font-weight:900;letter-spacing:.11em;text-transform:uppercase;
  border-bottom:1px solid var(--line);padding-bottom:7px;color:var(--deep);
}
.ea-dark .ea-arrow,.ea-navy .ea-arrow{color:#fff;border-color:rgba(255,255,255,.5)}
.ea-arrow:hover{border-color:var(--brass)}
.ea-actions{display:flex;flex-direction:column;align-items:flex-start;gap:18px;margin-top:30px}
@media(min-width:700px){.ea-actions{flex-direction:row;align-items:center;gap:26px}}

/* ============================================================
   5. SKIP LINK
   ============================================================ */
.ea-skip,.skip-link{
  position:fixed;left:12px;top:-80px;z-index:2000;
  background:#fff;color:var(--deep);padding:14px 18px;
  font-size:12px;font-weight:800;border:2px solid var(--navy);border-radius:var(--radius);
  transition:top .15s ease;
}
.ea-skip:focus,.skip-link:focus{top:12px}
body.admin-bar .ea-skip:focus,body.admin-bar .skip-link:focus{top:44px}

/* ============================================================
   6. HEADER — utility bar + cream nav
   ============================================================ */
.ea-header{position:relative;z-index:100;background:var(--paper)}

.ea-utility{background:var(--deep);color:#fff}
.ea-utility-inner{
  display:flex;align-items:center;justify-content:space-between;gap:18px;
  min-height:36px;padding-top:7px;padding-bottom:7px;
  font-size:9px;letter-spacing:.11em;text-transform:uppercase;font-weight:700;
}
.ea-utility-tag{margin:0;color:#E7EDF1}
.ea-utility-actions{display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.ea-utility-actions a{color:#fff;white-space:nowrap;padding:4px 0}
.ea-utility-actions a:hover{color:var(--brass-light)}
.ea-utility-sep{opacity:.4}
@media(max-width:860px){
  .ea-utility-tag{display:none}
  .ea-utility-inner{justify-content:center}
  .ea-utility-actions{gap:16px;justify-content:center}
}

.ea-nav-bar{background:var(--paper);border-bottom:1px solid var(--line)}
.ea-nav-inner{display:flex;align-items:center;gap:28px;min-height:78px;padding-top:12px;padding-bottom:12px}
@media(min-width:1000px){.ea-nav-inner{min-height:92px}}

/* logo — transparent PNG sits directly on the surface, never in a panel */
.ea-logo{display:block;line-height:0;margin-right:auto;flex:0 0 auto}
.ea-logo img{
  display:block;width:auto;height:38px;max-width:none;
  background:transparent;border:0;box-shadow:none;padding:0;
}
@media(min-width:700px){.ea-logo img{height:44px}}
@media(min-width:1000px){.ea-logo img{height:50px}}

/* desktop nav */
.ea-nav{display:none}
@media(min-width:1000px){
  .ea-nav{display:block}
  .ea-nav ul{list-style:none;margin:0;padding:0;display:flex;align-items:center;gap:26px}
  .ea-nav li{margin:0;position:relative}
  .ea-nav > div > ul > li > a,.ea-nav > ul > li > a{
    display:block;padding:10px 0;font-size:12px;font-weight:800;color:var(--deep);
    letter-spacing:-.01em;border-bottom:2px solid transparent;
  }
  .ea-nav > div > ul > li > a:hover,.ea-nav > ul > li > a:hover,
  .ea-nav .current-menu-item > a,.ea-nav .current_page_item > a{border-bottom-color:var(--brass)}
  /* dropdowns */
  .ea-nav .sub-menu{
    position:absolute;top:100%;left:-18px;z-index:60;
    display:block;min-width:264px;padding:10px 0;margin:0;
    background:var(--paper);border:1px solid var(--line);
    box-shadow:0 18px 45px rgba(23,43,59,.12);
    opacity:0;visibility:hidden;transform:translateY(6px);
    transition:opacity .16s ease,transform .16s ease,visibility .16s;
    flex-direction:column;align-items:stretch;gap:0;
  }
  .ea-nav li:hover > .sub-menu,
  .ea-nav li:focus-within > .sub-menu{opacity:1;visibility:visible;transform:translateY(0)}
  .ea-nav .sub-menu li{width:100%}
  .ea-nav .sub-menu a{
    display:block;padding:11px 22px;font-size:12.5px;font-weight:700;color:var(--ink);
  }
  .ea-nav .sub-menu a:hover{background:var(--cream);color:var(--deep)}
  .ea-nav .menu-item-has-children > a::after{content:"▾";margin-left:6px;font-size:9px;opacity:.55}
}
.ea-nav-cta{display:none}
@media(min-width:1000px){.ea-nav-cta{display:inline-flex;flex:0 0 auto}}

/* ============================================================
   7. MOBILE NAV — visible navy control, accessible panel
   ============================================================ */
.ea-menu-toggle{
  display:inline-flex;align-items:center;gap:9px;flex:0 0 auto;
  min-height:44px;min-width:44px;padding:11px 15px;margin-left:auto;
  background:var(--navy);color:#fff;border:0;border-radius:var(--radius);
  font-family:var(--font-sans);font-size:10px;font-weight:900;letter-spacing:.12em;
  text-transform:uppercase;cursor:pointer;line-height:1;
}
.ea-menu-toggle:hover{background:var(--deep)}
.ea-burger{display:block;width:16px;height:11px;position:relative;flex:0 0 auto}
.ea-burger span{position:absolute;left:0;height:2px;width:100%;background:#fff;border-radius:2px;transition:transform .2s ease,opacity .2s ease}
.ea-burger span:nth-child(1){top:0}
.ea-burger span:nth-child(2){top:4.5px}
.ea-burger span:nth-child(3){top:9px}
.ea-menu-toggle[aria-expanded=true] .ea-burger span:nth-child(1){transform:translateY(4.5px) rotate(45deg)}
.ea-menu-toggle[aria-expanded=true] .ea-burger span:nth-child(2){opacity:0}
.ea-menu-toggle[aria-expanded=true] .ea-burger span:nth-child(3){transform:translateY(-4.5px) rotate(-45deg)}
@media(min-width:1000px){.ea-menu-toggle{display:none}}

.ea-mobile-nav{
  position:fixed;inset:0;z-index:1200;
  display:flex;flex-direction:column;
  background:var(--paper);
  overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:0 var(--pad-x) 40px;
}
.ea-mobile-nav[hidden]{display:none}
body.admin-bar .ea-mobile-nav{top:46px}
@media screen and (min-width:783px){body.admin-bar .ea-mobile-nav{top:32px}}
.ea-mobile-head{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  min-height:78px;position:sticky;top:0;background:var(--paper);
  border-bottom:1px solid var(--line);margin:0 calc(var(--pad-x) * -1);padding:0 var(--pad-x);
}
.ea-mobile-close{
  display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:11px 15px;
  background:var(--navy);color:#fff;border:0;border-radius:var(--radius);
  font-size:10px;font-weight:900;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;
}
.ea-mobile-nav ul{list-style:none;margin:0;padding:0}
.ea-mobile-nav li{margin:0}
.ea-mobile-nav > nav > div > ul > li > a,.ea-mobile-nav > nav > ul > li > a{
  display:block;padding:17px 0;border-bottom:1px solid var(--line);
  font-size:16px;font-weight:800;color:var(--deep);min-height:44px;
}
.ea-mobile-nav .sub-menu{padding:0 0 12px 14px;border-bottom:1px solid var(--line)}
.ea-mobile-nav .sub-menu a{
  display:block;padding:11px 0;font-size:13.5px;font-weight:600;color:var(--muted);min-height:44px;
}
.ea-mobile-nav .sub-menu a:hover{color:var(--deep)}
.ea-mobile-actions{display:grid;gap:12px;margin-top:28px}
.ea-mobile-actions .ea-btn{width:100%}
.ea-mobile-meta{margin-top:26px;padding-top:22px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}
.ea-mobile-meta a{display:block;padding:7px 0;font-weight:700;color:var(--deep)}
body.ea-nav-open{overflow:hidden}

/* ============================================================
   8. BREADCRUMBS
   ============================================================ */
.breadcrumb-wr{background:var(--paper);border-bottom:1px solid var(--line)}
.breadcrumb-wr .center-wr{padding-top:16px;padding-bottom:16px}
ul.breadcrumb{
  list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:center;gap:8px;
  font-size:10px;text-transform:uppercase;letter-spacing:.1em;font-weight:700;color:var(--muted);
}
ul.breadcrumb li{margin:0;display:flex;align-items:center;gap:8px}
ul.breadcrumb li::after{content:"/";color:var(--brass);opacity:.75}
ul.breadcrumb li:last-child::after{content:none}
ul.breadcrumb a{color:var(--muted)}
ul.breadcrumb a:hover{color:var(--deep)}
.black{display:none}

/* ============================================================
   9. FOOTER — deep navy, white logo directly on navy
   ============================================================ */
.ea-footer{background:var(--deep);color:#fff}
.ea-footer a{color:#fff}
.ea-footer a:hover{color:var(--brass-light)}

/* footer call band */
.ea-footer-band{border-bottom:1px solid var(--line-dark)}
.ea-footer-band .center-wr{
  display:flex;flex-direction:column;align-items:flex-start;gap:22px;
  padding-top:52px;padding-bottom:52px;
}
.ea-footer-band p{margin:0;color:#fff}
.ea-footer-band-lead{font-size:clamp(26px,4.6vw,42px);font-weight:800;letter-spacing:-.045em;line-height:1.05}
.ea-footer-band-call{font-size:14px;letter-spacing:.06em;text-transform:uppercase;font-weight:800;color:var(--brass-light)}
.ea-footer-band-call a{color:var(--brass-light)}
@media(min-width:860px){
  .ea-footer-band .center-wr{flex-direction:row;align-items:center;justify-content:space-between;gap:40px}
}

/* affiliations */
.ea-affiliations{border-bottom:1px solid var(--line-dark)}
.ea-affiliations .center-wr{padding-top:44px;padding-bottom:44px}
.ea-affiliations h3{font-size:10px;letter-spacing:.2em;text-transform:uppercase;font-weight:900;color:var(--brass-light);margin:0 0 26px}
.ea-affiliations .brand-wr{display:flex;flex-wrap:wrap;align-items:center;gap:30px}
.ea-affiliations .logo-wr img{height:52px;width:auto;object-fit:contain}
.ea-affiliations .logo-wr a{display:block}

/* footer columns */
.ea-footer-main .center-wr{padding-top:64px;padding-bottom:40px}
.ea-footer-grid{display:grid;gap:40px}
@media(min-width:700px){.ea-footer-grid{grid-template-columns:1fr 1fr}}
@media(min-width:1000px){.ea-footer-grid{grid-template-columns:1.6fr 1fr 1fr 1.1fr;gap:48px}}
.ea-footer-brand img{
  width:auto;height:52px;max-width:100%;
  background:transparent;border:0;box-shadow:none;padding:0;
}
.ea-footer-brand p{margin-top:20px;font-size:13px;line-height:1.65;color:var(--muted-dark);max-width:34ch}
.ea-footer-col h4{
  font-size:10px;letter-spacing:.18em;text-transform:uppercase;font-weight:900;
  color:var(--brass-light);margin:0 0 18px;
}
.ea-footer-col ul{list-style:none;margin:0;padding:0}
.ea-footer-col li{margin:0}
.ea-footer-col li a,.ea-footer-col p,.ea-footer-col address{
  display:block;padding:6px 0;font-size:13px;line-height:1.6;color:var(--muted-dark);font-style:normal;margin:0;
}
.ea-footer-col li a:hover{color:#fff}
.ea-footer-hours{font-size:13px;line-height:1.7;color:var(--muted-dark)}

/* footer legal */
.ea-footer-legal{border-top:1px solid var(--line-dark)}
.ea-footer-legal .center-wr{
  display:flex;flex-direction:column;gap:14px;
  padding-top:26px;padding-bottom:32px;
  font-size:11px;line-height:1.7;color:#9FAEB9;
}
.ea-footer-legal a{color:#9FAEB9;text-decoration:underline;text-underline-offset:3px}
.ea-footer-legal a:hover{color:#fff}
.ea-footer-legal p{margin:0}
.ea-footer-license{letter-spacing:.1em;text-transform:uppercase;font-weight:700;color:var(--brass-light)}
@media(min-width:860px){
  .ea-footer-legal .center-wr{flex-direction:row;align-items:center;justify-content:space-between;gap:32px}
}

/* back to top */
.scroll-top{
  position:fixed;right:18px;bottom:18px;z-index:80;
  width:46px;height:46px;display:none;align-items:center;justify-content:center;
  background:var(--navy);color:#fff;border-radius:var(--radius);cursor:pointer;
}
.scroll-top.is-visible{display:flex}
.scroll-top:hover{background:var(--deep)}

/* ============================================================
   10. HOMEPAGE — split hero
   ============================================================ */
.ea-hero{
  display:grid;grid-template-columns:1fr;
  background:var(--navy);color:#fff;position:relative;
}
.ea-hero-copy{
  display:flex;flex-direction:column;align-items:flex-start;justify-content:center;
  padding:64px var(--pad-x) 56px;order:1;
}
.ea-hero h1{color:#fff;margin:0;max-width:15ch}
.ea-hero h1 .ea-hero-accent,.ea-hero h1 span{color:var(--sand)}
.ea-hero-copy > p{font-size:var(--fs-lead);line-height:1.7;color:#DCE4EA;margin:26px 0 0;max-width:52ch}
.ea-hero .ea-actions{margin-top:32px}
.ea-hero-media{
  order:0;min-height:320px;
  background-color:var(--deep);
  background-size:cover;background-position:center 34%;background-repeat:no-repeat;
}
@media(min-width:620px){.ea-hero-media{min-height:440px}}
@media(min-width:1000px){
  .ea-hero{grid-template-columns:47% 53%;min-height:660px}
  .ea-hero-copy{order:0;padding:96px var(--pad-x)}
  .ea-hero-media{order:1;min-height:100%}
}
/* editorial field note — only rendered when real content exists */
.ea-hero-note{
  display:none;position:absolute;right:0;bottom:0;
  background:var(--cream);color:var(--ink);padding:22px 34px;max-width:330px;
}
.ea-hero-note span{display:block;font-size:8px;letter-spacing:.15em;text-transform:uppercase;color:var(--brass);margin-bottom:8px}
.ea-hero-note p{font-family:var(--font-serif);font-size:16px;line-height:1.35;margin:0;color:var(--deep)}
@media(min-width:1100px){.ea-hero-note{display:block}}

/* quote form band directly under hero */
.free-estimate-main-wr{background:var(--cream);border-bottom:1px solid var(--line)}
.free-estimate-wr .center-wr{padding-top:52px;padding-bottom:52px}
.free-estimate-content{max-width:1000px;margin:0 auto}

/* ---- brand statement (cream, centred editorial) ---- */
.pc-indianapolis-wr{background:var(--cream);padding-top:var(--pad-y);padding-bottom:var(--pad-y)}
.pc-indianapolis-content{text-align:left;max-width:1000px;margin:0 auto}
.pc-indianapolis-heading h2{margin:0 0 26px}
.pc-indianapolis-heading p{font-size:var(--fs-lead);line-height:1.8;color:var(--muted);max-width:70ch}
@media(min-width:1000px){
  .pc-indianapolis-content{text-align:center}
  .pc-indianapolis-heading p{margin-left:auto;margin-right:auto}
}

/* city chip list (shared: homepage, map section, city pages) */
.city-location-container{
  display:flex;flex-wrap:wrap;gap:10px;margin-top:34px;justify-content:flex-start;
}
.city-location-container a{
  display:inline-flex;align-items:center;min-height:44px;padding:11px 17px;
  background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  font-size:12px;font-weight:800;color:var(--deep);letter-spacing:-.01em;
  transition:background-color .16s ease,border-color .16s ease,color .16s ease;
}
.city-location-container a:hover{background:var(--navy);border-color:var(--navy);color:#fff}
@media(min-width:1000px){.pc-indianapolis-content .city-location-container{justify-content:center}}

/* ---- numbered editorial services grid ---- */
.service-looking-wr{background:var(--paper);padding-top:var(--pad-y);padding-bottom:var(--pad-y)}
.service-looking-heading{text-align:left;margin-bottom:46px}
.service-looking-heading h2{max-width:900px}
.service-looking-heading h2{margin:0}
.service-looking-bottom{
  display:grid;grid-template-columns:1fr;
  border-top:1px solid var(--line);border-left:1px solid var(--line);
}
@media(min-width:700px){.service-looking-bottom{grid-template-columns:1fr 1fr}}
@media(min-width:1180px){.service-looking-bottom{grid-template-columns:repeat(3,1fr)}}
.service-looking-block{
  position:relative;display:flex;flex-direction:column;align-items:flex-start;
  padding:34px 28px 32px;min-height:250px;
  border-right:1px solid var(--line);border-bottom:1px solid var(--line);
  background:var(--paper);transition:background-color .18s ease;
  counter-increment:ea-svc;
}
.service-looking-bottom{counter-reset:ea-svc}
.service-looking-block::before{
  content:counter(ea-svc,decimal-leading-zero);
  font-size:9px;font-weight:900;letter-spacing:.14em;color:var(--brass);margin-bottom:26px;
}
.service-looking-block:hover{background:var(--cream)}
.service-looking-icon{margin:0 0 18px}
.service-looking-icon figure{margin:0}
.service-looking-icon img{height:44px;width:auto;object-fit:contain}
.service-looking-text h5{margin:0 0 10px;font-size:26px;font-weight:800;letter-spacing:-.04em;line-height:1.08}
.service-looking-text h5 a{color:var(--deep)}
.service-looking-text h5 a:hover{color:var(--brass)}
.service-looking-text p{font-size:13.5px;line-height:1.7;color:var(--muted);margin:0}
.service-looking-btn{display:flex;flex-wrap:wrap;gap:18px;margin-top:44px;justify-content:flex-start}
@media(min-width:1000px){.service-looking-btn{justify-content:center}}

/* ---- why choose: photo + numbered process ---- */
.why-choose-wr{background:var(--cream);padding-top:var(--pad-y);padding-bottom:var(--pad-y)}
.why-choose-bottom{display:grid;grid-template-columns:1fr;gap:44px;align-items:start}
@media(min-width:1000px){.why-choose-bottom{grid-template-columns:.85fr 1.15fr;gap:7vw}}
.why-choose-left figure{margin:0;position:relative}
.why-choose-left img{width:100%;height:auto;object-fit:cover;display:block}
.why-choose-left figcaption{
  font-family:var(--font-serif);font-size:15px;line-height:1.5;
  color:var(--muted);margin-top:16px;
}
.why-choose-right{border-top:1px solid var(--line);counter-reset:ea-why}
.why-choose-img-text{
  display:grid;grid-template-columns:46px 1fr;gap:16px;align-items:start;
  padding:26px 0;border-bottom:1px solid var(--line);counter-increment:ea-why;
}
.why-choose-right-icon{display:flex;align-items:flex-start}
.why-choose-right-icon img{width:34px;height:34px;object-fit:contain}
.why-choose-img-text:not(:has(.why-choose-right-icon))::before{
  content:counter(ea-why,decimal-leading-zero);font-size:9px;font-weight:900;letter-spacing:.13em;color:var(--brass);padding-top:6px;
}
.why-choose-right-text h5{margin:0 0 8px;font-size:21px;font-weight:800;letter-spacing:-.03em;line-height:1.15}
.why-choose-right-text p{font-size:13.5px;line-height:1.7;color:var(--muted);margin:0}
.why-choose-schedule-now-btn{margin-top:40px}

/* ---- reviews ---- */
.crawling-review-wr{background:var(--paper);padding-top:var(--pad-y);padding-bottom:var(--pad-y);border-top:1px solid var(--line)}
.crawling-slider-text h4{
  font-size:10px;letter-spacing:.2em;text-transform:uppercase;font-weight:900;
  color:var(--brass);margin:0 0 34px;text-align:left;
}
@media(min-width:1000px){.crawling-slider-text h4{text-align:center}}
.crawling-review-slider-blk{text-align:left}

/* ---- special offers ---- */
.save-money-offer{background:var(--sand);padding-top:var(--pad-y);padding-bottom:var(--pad-y)}
.save-money-offer-blk{display:grid;grid-template-columns:1fr;gap:44px;align-items:center}
@media(min-width:1000px){
  .save-money-offer-blk{grid-template-columns:.85fr 1.15fr;gap:6vw}
  .save-money-right{order:0}
  .offers-block-wr{order:1}
}
.save-money-right{float:none!important;width:auto!important}
.save-money-right h3{font-size:var(--fs-h2);line-height:1;letter-spacing:-.055em;margin:0 0 20px}
.save-money-right p{font-size:var(--fs-lead);line-height:1.75;color:var(--muted);max-width:52ch}
.save-money-right .site-btn-17{margin-top:26px}
.offers-block-wr{float:none!important;width:auto!important;display:grid;gap:24px}
@media(min-width:620px){.offers-block-wr{grid-template-columns:1fr 1fr}}
.offers-block .special-card{background:var(--paper);border:1px solid var(--line);padding:0;overflow:hidden}
.offers-block .special-card img{width:100%;height:auto;display:block}
.expiry-date-home-offers{
  margin:0;padding:13px 16px;font-size:9px;letter-spacing:.13em;text-transform:uppercase;
  font-weight:900;color:var(--brass);border-top:1px solid var(--line);
}

/* ---- service area map ---- */
.map-section{background:var(--cream);padding-top:var(--pad-y);padding-bottom:var(--pad-y)}
.top-map-headeing{max-width:1000px}
.top-map-headeing h3{font-size:var(--fs-h2);line-height:1;letter-spacing:-.055em;margin:0 0 22px}
.top-map-headeing p{font-size:var(--fs-lead);line-height:1.8;color:var(--muted);max-width:68ch}
.map-block{margin-top:44px;border:1px solid var(--line);overflow:hidden;background:var(--paper)}
.map-block iframe{display:block;width:100%;min-height:380px;border:0}

/* ============================================================
   11. INTERIOR PAGES
   ============================================================ */
/* editorial interior hero (page.php + templates) */
.ea-interior-hero{background:var(--navy);color:#fff;display:grid;grid-template-columns:1fr}
.ea-interior-hero-copy{
  display:flex;flex-direction:column;align-items:flex-start;justify-content:center;
  padding:62px var(--pad-x) 60px;
}
.ea-interior-hero h1{color:#fff;margin:0;max-width:17ch}
.ea-interior-hero-copy > p{font-size:var(--fs-lead);line-height:1.7;color:#DCE4EA;margin:24px 0 0;max-width:56ch}
.ea-interior-hero .ea-actions{margin-top:30px}
.ea-interior-hero-media{position:relative;min-height:260px}
.ea-interior-hero-media img{width:100%;height:100%;object-fit:cover;display:block;min-height:260px}
@media(min-width:1000px){
  .ea-interior-hero{grid-template-columns:47% 53%;min-height:440px}
  .ea-interior-hero-copy{padding:92px var(--pad-x)}
  .ea-interior-hero-media{min-height:100%}
  .ea-interior-hero-media img{min-height:440px}
}

/* generic interior shell + sidebar */
.pest-inner-page-wr{background:var(--paper);padding-top:var(--pad-y);padding-bottom:var(--pad-y)}
.pest-left-right-wr{display:grid;grid-template-columns:1fr;gap:52px;align-items:start}
@media(min-width:1000px){
  .pest-left-right-wr{grid-template-columns:290px minmax(0,1fr);gap:6vw}
  .pest-left-wr{order:0;position:sticky;top:28px}
  .pest-right-wr{order:1;min-width:0}
}
.pest-left-wr,.pest-right-wr{float:none!important;width:auto!important}

/* sidebar navigation */
.menu-side-bar-wr{background:var(--cream);border:1px solid var(--line);padding:26px 22px}
.menu-side-bar-wr ul{list-style:none;margin:0;padding:0}
.menu-side-bar-wr li{margin:0}
.menu-side-bar-wr li a{
  display:block;padding:12px 0;border-bottom:1px solid var(--line);
  font-size:13px;font-weight:700;color:var(--ink);min-height:44px;
}
.menu-side-bar-wr li:last-child a{border-bottom:0}
.menu-side-bar-wr li a:hover,.menu-side-bar-wr .current-menu-item > a,
.menu-side-bar-wr .current_page_item > a{color:var(--brass)}
.menu-side-bar-wr .widget{margin-bottom:26px}
.menu-side-bar-wr .widget:last-child{margin-bottom:0}
.menu-side-bar-wr h2,.menu-side-bar-wr .widget-title{
  font-size:10px;letter-spacing:.18em;text-transform:uppercase;font-weight:900;
  color:var(--brass);margin:0 0 14px;
}

/* city / plan banner (rpc) */
.rpc-banner-wr{
  background-color:var(--navy);background-size:cover;background-position:center;
  color:#fff;position:relative;
}
.rpc-banner-wr::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(23,43,59,.92) 0%,rgba(23,43,59,.72) 55%,rgba(23,43,59,.45) 100%)}
.rpc-banner-content{position:relative;z-index:2}
.rpc-banner-content .center-wr{padding-top:72px;padding-bottom:72px}
@media(min-width:1000px){.rpc-banner-content .center-wr{padding-top:120px;padding-bottom:120px}}
.rpc-banner-wr h1,.rpc-banner-wr h2{color:#fff;max-width:18ch;margin:0}
.rpc-banner-wr p{font-size:var(--fs-lead);line-height:1.7;color:#DCE4EA;max-width:56ch;margin:22px 0 0}
.rpc-banner-wr .site-btn{margin-top:30px}

/* card grids */
.rpc-cards-wr{background:var(--paper);padding-top:var(--pad-y);padding-bottom:var(--pad-y)}
.rpc-cards-content{display:grid;grid-template-columns:1fr;gap:0;border-top:1px solid var(--line);border-left:1px solid var(--line)}
@media(min-width:700px){.rpc-cards-content{grid-template-columns:1fr 1fr}}
@media(min-width:1180px){.rpc-cards-content{grid-template-columns:repeat(3,1fr)}}
/* Scoped to real cards only: this container also wraps unrelated blocks
   (protection-plan tabber, CTA bands) that must keep their own surfaces. */
.rpc-cards-content > .pc-cards-blk{
  padding:32px 26px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);
  background:var(--paper);
}
.rpc-cards-content h3,.rpc-cards-content h4{font-size:24px;letter-spacing:-.04em;margin:0 0 12px}
.rpc-cards-content p{font-size:13.5px;line-height:1.7;color:var(--muted)}

/* city long-form content */
.city-content-wr{background:var(--cream);padding-top:var(--pad-y);padding-bottom:var(--pad-y)}
.city-content{max-width:var(--maxw-read)}
.city-content h2{margin-top:1.6em}
.city-content h2:first-child{margin-top:0}

/* ============================================================
   12. CONTENT WELL — editor / Gutenberg output
   ============================================================ */
.ea-content-well{background:var(--paper);padding-top:var(--pad-y);padding-bottom:var(--pad-y)}
.ea-content-well .center-wr{max-width:calc(var(--maxw-read) + var(--pad-x) * 2)}

/* Twenty Twenty singular wrappers */
.entry-header{padding:0;margin:0}
.post-inner{padding:0}
.post-inner.thin{max-width:none}
.entry-content{max-width:var(--maxw-read)}
.entry-content > *{max-width:100%}
.entry-content h2{
  font-size:clamp(27px,4vw,40px);line-height:1.06;letter-spacing:-.045em;
  margin:2em 0 .55em;color:var(--deep);
}
.entry-content h2:first-child{margin-top:0}
.entry-content h3{
  font-size:clamp(19px,2.5vw,24px);line-height:1.2;letter-spacing:-.03em;
  margin:1.9em 0 .5em;color:var(--deep);
}
.entry-content h4{font-size:18px;margin:1.7em 0 .5em}
.entry-content p{font-size:16.5px;line-height:1.82;color:var(--ink);margin:0 0 1.25em}
.entry-content ul,.entry-content ol{margin:0 0 1.5em;padding-left:1.3em}
.entry-content li{font-size:16.5px;line-height:1.8;margin:0 0 .6em}
.entry-content li::marker{color:var(--brass)}
.entry-content a:not(.ea-btn):not(.site-btn){
  color:var(--deep);text-decoration:underline;text-decoration-color:var(--brass);
  text-underline-offset:3px;text-decoration-thickness:1px;
}
.entry-content a:not(.ea-btn):not(.site-btn):hover{color:var(--brass)}
.entry-content img{height:auto;margin:2em 0}
.entry-content figure{margin:2.2em 0}
.entry-content blockquote{margin:2.2em 0}
.entry-content table{margin:2em 0}
.entry-content hr,.entry-content .wp-block-separator{
  border:0;border-top:1px solid var(--line);margin:2.6em 0;
}
.entry-content .wp-block-buttons{display:flex;flex-wrap:wrap;gap:14px;margin:2em 0}
.entry-content .wp-block-button__link{
  display:inline-flex;align-items:center;justify-content:center;min-height:48px;
  padding:15px 26px;background:var(--navy);color:#fff;border-radius:var(--radius);
  font-size:10px;font-weight:900;letter-spacing:.11em;text-transform:uppercase;text-decoration:none;
}
.entry-content .wp-block-button__link:hover{background:var(--deep);color:#fff}

/* ============================================================
   13. BLOG
   ============================================================ */
.blog-page-wr .pest-right-wr{min-width:0}
.ea-post-grid{display:grid;grid-template-columns:1fr;gap:44px}
@media(min-width:760px){.ea-post-grid{grid-template-columns:1fr 1fr;gap:40px}}
.ea-post-card{display:flex;flex-direction:column;background:var(--paper)}
.ea-post-card img{width:100%;height:230px;object-fit:cover;filter:saturate(.9)}
.ea-post-card .ea-label{margin:22px 0 12px}
.ea-post-card h3{font-size:24px;line-height:1.12;letter-spacing:-.04em;margin:0 0 12px}
.ea-post-card h3 a{color:var(--deep)}
.ea-post-card h3 a:hover{color:var(--brass)}
.ea-post-card p{font-size:14px;line-height:1.7;color:var(--muted);margin:0 0 18px}
.ea-post-meta{
  font-size:10px;letter-spacing:.11em;text-transform:uppercase;font-weight:700;color:var(--muted);
}
.ea-post-meta span{color:var(--brass);margin:0 8px}

/* single article */
.single-blog-wr{background:var(--paper)}
.single-main-block{max-width:var(--maxw-read)}
.single-post-title h1{margin:0 0 22px}
.author_block{margin:0 0 34px}
.author_description_block{
  display:flex;flex-wrap:wrap;align-items:center;gap:10px;
  font-size:10px;letter-spacing:.11em;text-transform:uppercase;font-weight:700;color:var(--muted);
  padding-bottom:24px;border-bottom:1px solid var(--line);
}
.author_description_block span + span::before{content:"·";color:var(--brass);margin-right:10px}
.author_description_block a{color:var(--deep)}
.author_description_block a:hover{color:var(--brass)}
.post_image{margin:0 0 40px}
.post_image img{width:100%;height:auto;max-height:520px;object-fit:cover;display:block}
.single-post-content{font-size:16.5px;line-height:1.82}
.single-post-content > p{margin:0}
.single-post-content h2{font-size:clamp(27px,4vw,40px);line-height:1.06;letter-spacing:-.045em;margin:2em 0 .55em}
.single-post-content h3{font-size:clamp(19px,2.5vw,24px);margin:1.9em 0 .5em}
.single-post-content p{margin:0 0 1.25em}
.single-post-content ul,.single-post-content ol{margin:0 0 1.5em;padding-left:1.3em}
.single-post-content li{margin:0 0 .6em}
.single-post-content li::marker{color:var(--brass)}
.single-post-content a{color:var(--deep);text-decoration:underline;text-decoration-color:var(--brass);text-underline-offset:3px}
.single-post-content a:hover{color:var(--brass)}
.single-post-content img{margin:2em 0}

/* pagination */
.pagination,.nav-links,.page-numbers{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:44px;list-style:none;padding:0}
a.page-numbers,span.page-numbers{
  display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;
  padding:0 12px;border:1px solid var(--line);font-size:12px;font-weight:800;color:var(--deep);
}
a.page-numbers:hover{background:var(--cream)}
.page-numbers.current{background:var(--navy);border-color:var(--navy);color:#fff}

/* ============================================================
   14. FORMS — Gravity Forms + search (presentation only)
   ============================================================ */
.gform_wrapper{margin:0}
.gform_wrapper form{margin:0}
.gform_wrapper .gform_fields{display:grid;grid-template-columns:1fr;gap:18px}
@media(min-width:700px){
  .gform_wrapper .gform_fields{grid-template-columns:1fr 1fr;gap:20px}
  .gform_wrapper .gfield--width-full,.gform_wrapper .gfield.gf_full{grid-column:1/-1}
}
.gform_wrapper .gfield{margin:0;min-width:0}
.gform_wrapper .gfield_label,.gform_wrapper legend.gfield_label{
  display:block;font-size:9px;font-weight:900;letter-spacing:.12em;text-transform:uppercase;
  color:var(--deep);margin:0 0 8px;
}
.gform_wrapper .gfield_required{color:var(--brass);margin-left:3px}
.gform_wrapper input[type=text],.gform_wrapper input[type=email],.gform_wrapper input[type=tel],
.gform_wrapper input[type=url],.gform_wrapper input[type=number],.gform_wrapper input[type=date],
.gform_wrapper select,.gform_wrapper textarea,
.search-field,input[type=search],input[type=text],input[type=email],input[type=tel],select,textarea{
  width:100%;min-height:52px;padding:15px 16px;
  background:#fff;color:var(--ink);
  border:1px solid var(--line);border-radius:0;
  font-family:var(--font-sans);font-size:15px;line-height:1.5;
  transition:border-color .16s ease,box-shadow .16s ease;
  -webkit-appearance:none;appearance:none;
}
.gform_wrapper textarea,textarea{min-height:132px;resize:vertical;padding-top:14px}
.gform_wrapper select,select{
  background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);
  background-position:calc(100% - 21px) 50%,calc(100% - 15px) 50%;
  background-size:6px 6px,6px 6px;background-repeat:no-repeat;padding-right:44px;
}
.gform_wrapper input:focus,.gform_wrapper select:focus,.gform_wrapper textarea:focus,
input:focus,select:focus,textarea:focus{
  outline:2px solid var(--navy);outline-offset:2px;border-color:var(--navy);
}
.gform_wrapper .gfield_description,.gform_wrapper .gform_fileupload_rules{
  font-size:11.5px;line-height:1.55;color:var(--muted);margin-top:7px;
}
.gform_wrapper .gform_footer{grid-column:1/-1;margin:26px 0 0;padding:0;display:flex}
.gform_wrapper .gform_footer input[type=submit]{width:100%}
@media(min-width:700px){.gform_wrapper .gform_footer input[type=submit]{width:auto;min-width:230px}}
/* validation states */
.gform_wrapper .gfield_error input,.gform_wrapper .gfield_error select,.gform_wrapper .gfield_error textarea{
  border-color:#9E3B2F;background:#FDF7F6;
}
.gform_wrapper .validation_message,.gform_wrapper .gfield_validation_message{
  margin-top:7px;padding:9px 12px;background:#FBEEEC;border-left:3px solid #9E3B2F;
  font-size:12px;line-height:1.5;color:#7C2E24;font-weight:700;
}
.gform_wrapper .gform_validation_errors,.gform_wrapper .validation_error{
  margin:0 0 24px;padding:16px 18px;background:#FBEEEC;border-left:3px solid #9E3B2F;
  font-size:13.5px;line-height:1.6;color:#7C2E24;font-weight:700;border-radius:0;
}
.gform_confirmation_message,.gform_wrapper .gform_confirmation_message{
  padding:26px 24px;background:var(--cream);border-left:3px solid var(--brass);
  font-size:16px;line-height:1.7;color:var(--deep);
}
.gform_wrapper .gfield_checkbox label,.gform_wrapper .gfield_radio label{
  font-size:14px;font-weight:600;text-transform:none;letter-spacing:0;color:var(--ink);
}
.gform_wrapper .ginput_container_consent{display:flex;align-items:flex-start;gap:10px}
.gform_wrapper input[type=checkbox],.gform_wrapper input[type=radio]{width:20px;height:20px;min-height:0;accent-color:var(--navy)}
.gform_wrapper .gform_required_legend{font-size:11px;color:var(--muted);margin-bottom:16px}

/* header/site search */
.header-search-form .search-form,.search-form{display:flex;gap:8px;align-items:stretch}
.search-form .search-field{min-height:46px;flex:1 1 auto}
.search-form .search-submit{min-height:46px;flex:0 0 auto;padding-left:20px;padding-right:20px}
.header-search-form{display:none}

/* ============================================================
   15. PROTECTION PLANS — restrained tier hierarchy
   ============================================================ */
.pick-plan-wr{background:var(--deep);color:#fff}
.pest-pick-your-plan-wr{display:grid;grid-template-columns:1fr;gap:0;margin-top:40px;
  border-top:1px solid var(--line-dark);border-left:1px solid var(--line-dark)}
@media(min-width:700px){.pest-pick-your-plan-wr{grid-template-columns:1fr 1fr}}
@media(min-width:1180px){.pest-pick-your-plan-wr{grid-template-columns:repeat(4,1fr)}}
.pest-pick-your-plan-wr > div{
  position:relative;padding:34px 26px 38px;min-height:330px;
  border-right:1px solid var(--line-dark);border-bottom:1px solid var(--line-dark);
  background:rgba(255,255,255,.018);transition:background-color .2s ease,transform .2s ease;
}
.pest-pick-your-plan-wr > div::before{
  content:"";position:absolute;inset:0 0 auto;height:4px;background:rgba(207,185,147,.34);
}
.pest-pick-your-plan-wr > div:nth-child(2){background:rgba(255,255,255,.045)}
.pest-pick-your-plan-wr > div:nth-child(2)::before{background:rgba(207,185,147,.58)}
.pest-pick-your-plan-wr > div:nth-child(3){background:rgba(255,255,255,.07)}
.pest-pick-your-plan-wr > div:nth-child(3)::before{background:var(--brass-light)}
.pest-pick-your-plan-wr > div:nth-child(4){background:rgba(46,66,86,.55)}
.pest-pick-your-plan-wr > div:nth-child(4)::before{background:var(--brass)}
.pest-pick-your-plan-wr h3,.pest-pick-your-plan-wr h4{color:#fff;font-size:25px;letter-spacing:-.04em;margin:26px 0 14px}
.pest-pick-your-plan-wr p{font-size:13px;line-height:1.7;color:var(--muted-dark)}
.pest-pick-your-plan-wr ul{list-style:none;margin:22px 0 0;padding:0}
.pest-pick-your-plan-wr li{
  font-size:12.5px;line-height:1.6;padding:11px 0;color:var(--muted-dark);
  border-top:1px solid rgba(255,255,255,.14);margin:0;display:flex;gap:9px;
}
.pest-pick-your-plan-wr li::before{content:"—";color:var(--brass-light);flex:0 0 auto}
@media(min-width:1000px){
  .pest-pick-your-plan-wr > div:hover{background-color:rgba(255,255,255,.085);transform:translateY(-4px)}
}
.right-mark img,.wrong-mark img{width:17px;height:17px}

/* ============================================================
   16. POPUP / MODALS
   ============================================================ */
.popup{position:fixed;inset:0;z-index:1400;display:none;align-items:center;justify-content:center;padding:20px}
.popup .overlay{position:absolute;inset:0;background:rgba(23,43,59,.72)}
.pop-up-wrapper{
  position:relative;z-index:2;display:grid;grid-template-columns:1fr;gap:0;
  width:100%;max-width:940px;max-height:88vh;overflow-y:auto;
  background:var(--paper);border:1px solid var(--line);
}
@media(min-width:860px){.pop-up-wrapper{grid-template-columns:1fr 1fr}}
.popup-form-block{padding:40px var(--pad-x);order:1}
.popup-logo-block{background:var(--navy);display:flex;align-items:center;justify-content:center;padding:34px;order:0;float:none!important}
.popup-logo-block img{max-width:230px;background:transparent}
.popup-title h2{font-size:clamp(24px,3.4vw,34px);margin:0 0 22px}
.popup .close{
  position:absolute;top:10px;right:12px;z-index:5;cursor:pointer;
  width:44px;height:44px;display:flex;align-items:center;justify-content:center;
  font-size:26px;line-height:1;color:var(--deep);background:var(--paper);border:1px solid var(--line);
}
.popup .close img{width:15px;height:15px}
.text-wrapper{display:none}
.pop-up-block{position:relative}

/* ============================================================
   17. SEARCH / 404 / ARCHIVES
   ============================================================ */
.page_not_found,.search_main_wrapper{min-width:0}
.error404-content,.search-page-form{max-width:var(--maxw-read)}
.error404-content h1{margin:0 0 20px}
.intro-text p{font-size:var(--fs-lead);line-height:1.75;color:var(--muted)}
.search-page-form{margin-top:30px}
.ea-archive-head{margin-bottom:44px}
.ea-archive-head h1{margin:0 0 16px}

/* ============================================================
   18. HELPERS / OVERRIDES
   ============================================================ */
.left{float:none}
.right{float:none}
@media(max-width:999px){
  .pest-left-wr,.pest-right-wr,.save-money-right,.offers-block-wr,
  .popup-logo-block,.popup-form-block{float:none!important;width:auto!important}
}
.screen-reader-text{
  position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}
.header-slick-menu,.header-mob-block{display:none!important}
/* legacy float scaffolding must not create horizontal overflow */
.center-wr,.large-center-wr,section,div{min-width:0}
img[src*="Headder_Logo"]{background:transparent}

/* interior hero inner constraint + paginated pages */
.ea-interior-hero-inner{width:100%;max-width:640px}
.page-links{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:34px;font-size:12px;font-weight:800}
.page-links a{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;border:1px solid var(--line);padding:0 12px}
.page-links a:hover{background:var(--cream)}


/* ---- refinements ---- */
/* Long menu: tighten the nav between 1000px and 1280px so it stays on one line. */
@media(min-width:1000px) and (max-width:1279px){
  .ea-nav-inner{gap:18px}
  .ea-nav ul{gap:16px}
  .ea-nav > div > ul > li > a,.ea-nav > ul > li > a{font-size:11px}
  .ea-nav-cta{padding:14px 16px}
  .ea-logo img{height:40px}
}
@media(min-width:1280px){ .ea-nav ul{gap:24px} }
/* Hero copy should never be narrower than its text needs. */
.ea-hero-copy .banner-heading{width:100%}
.ea-hero-copy h1{max-width:14ch}


/* ============================================================
   19. PROSE — templates that print the_content() directly
   (ant-control/services/about, contact, review, thank-you,
   receive-discount, city long-form). Same editorial rhythm as
   .entry-content, without touching the markup those pages output.
   ============================================================ */
.pest-right-wr,.city-content,.contact-page-content,.thankyou-text,
.receive-discount-wr .center-wr,.rpc-cards-content{min-width:0}

.pest-right-wr > h1,.city-content > h1,.contact-page-content > h1,
.pest-right-wr > h2,.city-content > h2,.contact-page-content > h2,
.pest-right-wr > h3,.city-content > h3,.contact-page-content > h3{color:var(--deep)}

.pest-right-wr > h1,.contact-page-content > h1{margin:0 0 .5em}
.pest-right-wr > h2,.city-content > h2,.contact-page-content > h2,.thankyou-text h2{
  font-size:clamp(27px,4vw,40px);line-height:1.06;letter-spacing:-.045em;margin:2em 0 .55em;
}
.pest-right-wr > h2:first-child,.city-content > h2:first-child{margin-top:0}
.pest-right-wr > h3,.city-content > h3,.contact-page-content > h3,.thankyou-text h3{
  font-size:clamp(19px,2.5vw,24px);line-height:1.2;letter-spacing:-.03em;margin:1.9em 0 .5em;
}
.pest-right-wr > h4,.city-content > h4{font-size:18px;margin:1.7em 0 .5em}
.pest-right-wr > p,.city-content > p,.contact-page-content > p,.thankyou-text p,
.receive-discount-wr > .center-wr > p{
  font-size:16.5px;line-height:1.82;color:var(--ink);margin:0 0 1.25em;
}
.pest-right-wr > ul,.pest-right-wr > ol,.city-content > ul,.city-content > ol,
.contact-page-content > ul,.contact-page-content > ol{margin:0 0 1.5em;padding-left:1.3em}
.pest-right-wr li,.city-content li,.contact-page-content li{font-size:16.5px;line-height:1.8;margin:0 0 .6em}
.pest-right-wr li::marker,.city-content li::marker,.contact-page-content li::marker{color:var(--brass)}
.pest-right-wr > p a,.pest-right-wr li a,.city-content a,.contact-page-content > p a{
  color:var(--deep);text-decoration:underline;text-decoration-color:var(--brass);
  text-underline-offset:3px;text-decoration-thickness:1px;
}
.pest-right-wr > p a:hover,.city-content a:hover{color:var(--brass)}
.pest-right-wr img,.city-content img{height:auto;margin:2em 0}
.pest-right-wr table,.city-content table{margin:2em 0}
.pest-right-wr > hr,.city-content > hr{border:0;border-top:1px solid var(--line);margin:2.6em 0}

/* inline CTA block inside the shared interior template */
.pest-dont-let-wr{
  margin:56px 0 0;padding:44px 32px;background:var(--deep);color:#fff;text-align:left;
}
.pest-dont-let-wr h3{color:#fff;font-size:clamp(24px,3.4vw,34px);letter-spacing:-.04em;margin:0 0 24px;max-width:22ch}
.pest-dont-let-content{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
@media(min-width:820px){
  .pest-dont-let-wr{padding:54px 46px}
  .pest-dont-let-content{flex-direction:row;align-items:center;justify-content:space-between;gap:36px}
  .pest-dont-let-wr h3{margin:0}
}

/* customer review link cards */
.customer-review-wr{display:grid;gap:20px;margin-top:44px}
@media(min-width:620px){.customer-review-wr{grid-template-columns:1fr 1fr}}
.customer-review-block{
  display:flex;flex-direction:column;align-items:flex-start;gap:18px;
  padding:30px 26px;background:var(--cream);border:1px solid var(--line);text-align:left;
}
.customer-review-block figure{margin:0}
.customer-review-block img{height:40px;width:auto;object-fit:contain}

/* contact form panel */
.contact-page-form-wr,.common-form-blk{
  margin-top:44px;padding:38px 26px;background:var(--cream);border:1px solid var(--line);
}
@media(min-width:820px){.contact-page-form-wr,.common-form-blk{padding:48px 42px}}

/* thank-you + receive-discount */
.thankyou-wrapper{background:var(--cream);padding-top:var(--pad-y);padding-bottom:var(--pad-y);min-height:60vh}
.thankyou-block{max-width:var(--maxw-read);margin:0 auto;text-align:left}
.thankyou-logo{margin-bottom:38px}
.thankyou-logo img{height:56px;width:auto}
.receive-discount-wr{background:var(--paper);padding-top:var(--pad-y);padding-bottom:var(--pad-y)}
.receive-discount-wr .center-wr{max-width:calc(var(--maxw-read) + var(--pad-x) * 2)}


/* A legacy .clearfix ::after becomes a grid item and steals a cell.
   Suppress it on the containers the design system converts to grid/flex. */
.pest-left-right-wr::after,
.save-money-offer-blk::after,
.pop-up-wrapper::after,
.header-top-content::after,
.header-bottom-content::after,
.footer-copyright-blk::after,
.ea-nav-inner::after,
.ea-footer-grid::after{content:none!important;display:none!important}


/* ============================================================
   20. EDITOR COLOUR PRESETS
   Content authored in the block editor carries Twenty Twenty's colour
   preset classes (has-primary-color, has-accent-color, ...). Their default
   values are black / #6d6d6d / #e22658 magenta, which clash with the brand.
   Remapping the preset custom properties keeps every piece of authored
   markup untouched while rendering those choices in the EcoArmor palette.
   ============================================================ */
:root,body{
  --wp--preset--color--primary:#172B3B;
  --wp--preset--color--secondary:#5D6E7C;
  --wp--preset--color--accent:#A8875C;
  --wp--preset--color--subtle-background:#F3EFE5;
  --wp--preset--color--background:#FBFAF6;
  --wp--preset--color--foreground:#263A4B;
  --wp--preset--color--header-footer-background:#172B3B;
}
.has-primary-color{color:var(--deep)!important}
.has-secondary-color{color:var(--muted)!important}
.has-accent-color{color:var(--brass)!important}
.has-primary-background-color{background-color:var(--deep)!important}
.has-secondary-background-color{background-color:var(--muted)!important}
.has-accent-background-color{background-color:var(--brass)!important}
.has-subtle-background-background-color{background-color:var(--cream)!important}
.has-background-background-color{background-color:var(--paper)!important}

/* breadcrumb home icon: legacy asset is a light glyph that disappears on cream */
.breadcrumb li:first-child img,
.breadcrumb img[src*="home"],
.breadcrumb img[src*="Home"]{
  width:13px;height:13px;object-fit:contain;
  filter:brightness(0) saturate(100%) invert(45%) sepia(12%) saturate(700%) hue-rotate(165deg);
}


/* ============================================================
   21. CITY PAGES + SERVICE-AREA HUB
   ============================================================ */
.rpc-banner-text{position:relative;z-index:2;max-width:760px}
.rpc-banner-heading h1,.rpc-banner-heading h2{color:#fff;margin:0}
.rpc-banner-para{margin-top:22px}
.rpc-banner-para p{font-size:var(--fs-lead);line-height:1.7;color:#DCE4EA;max-width:56ch;margin:0 0 1em}
.rpc-banner-para p:last-child{margin-bottom:0}
.rpc-banner-button{margin-top:32px;display:flex;flex-wrap:wrap;gap:16px}
.overlay-bg-wr{position:relative}

/* numbered service cards */
.rpc-cards-content,.rpc-cards-con{
  display:grid;grid-template-columns:1fr;
  border-top:1px solid var(--line);border-left:1px solid var(--line);counter-reset:ea-card;
}
@media(min-width:700px){.rpc-cards-content,.rpc-cards-con{grid-template-columns:1fr 1fr}}
@media(min-width:1180px){.rpc-cards-content,.rpc-cards-con{grid-template-columns:repeat(3,1fr)}}
.pc-cards-blk{
  display:flex;flex-direction:column;align-items:flex-start;
  padding:32px 26px 34px;min-height:250px;background:var(--paper);
  border-right:1px solid var(--line);border-bottom:1px solid var(--line);
  counter-increment:ea-card;transition:background-color .18s ease;
}
.pc-cards-blk:hover{background:var(--cream)}
.pc-cards-blk::before{
  content:counter(ea-card,decimal-leading-zero);
  font-size:9px;font-weight:900;letter-spacing:.14em;color:var(--brass);margin-bottom:22px;
}
.pc-cards-img{margin:0 0 16px}
.pc-cards-img img{height:42px;width:auto;object-fit:contain}
.pc-cards-heading h3,.pc-cards-heading h4,.pc-cards-heading h5{
  font-size:23px;letter-spacing:-.04em;line-height:1.12;margin:0 0 10px;
}
.pc-cards-heading a{color:var(--deep)}
.pc-cards-heading a:hover{color:var(--brass)}
.pc-cards-para p,.pc-cards-para{font-size:13.5px;line-height:1.7;color:var(--muted);margin:0}
.pc-cards-top{display:flex;flex-direction:column;align-items:flex-start;width:100%}

/* local trust / exterminator band */
.city-exterminator-block,.exterminator-bottom-block{
  background:var(--cream);padding-top:var(--pad-y);padding-bottom:var(--pad-y);
}
.city-exterminator-heading h2,.city-exterminator-heading h3{margin:0 0 24px}
.exterminator-bottom-content{max-width:var(--maxw-read)}
.exterminator-bottom-content p{font-size:16.5px;line-height:1.8;color:var(--ink)}

.protect-home-block{margin-top:44px}
.protect-home-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.protect-home-list li{
  display:grid;grid-template-columns:26px 1fr;gap:14px;align-items:start;
  padding:18px 0;border-bottom:1px solid var(--line);margin:0;
  font-size:15.5px;line-height:1.65;
}
.protect-home-list li::before{content:"—";color:var(--brass);font-weight:800}
.rectangle-box{display:none}
.comn-list-box-wr{margin-top:34px}

.looking-package-wr{background:var(--deep);color:#fff;padding-top:var(--pad-y);padding-bottom:var(--pad-y)}
.looking-package-text{max-width:var(--maxw-read)}
.looking-package-text h2,.looking-package-text h3{color:#fff;margin:0 0 20px}
.looking-package-text p{font-size:var(--fs-lead);line-height:1.75;color:var(--muted-dark)}
.looking-package-text .site-btn{margin-top:28px}

.city-pages-map-section,.city-map-section{background:var(--cream);padding-top:var(--pad-y);padding-bottom:var(--pad-y)}
.city-map-content-wr{display:grid;grid-template-columns:1fr;gap:44px;align-items:start}
@media(min-width:1000px){.city-map-content-wr{grid-template-columns:1fr 1fr;gap:6vw}}
.city-map-text-content h2,.city-map-text-content h3{margin:0 0 20px}
.city-map-text-content p{font-size:16.5px;line-height:1.8;color:var(--muted)}
.map-iframe-container,.map-content{border:1px solid var(--line);overflow:hidden;background:var(--paper)}
.map-iframe-container iframe,.map-content iframe{display:block;width:100%;min-height:360px;border:0}
.map-listing-wr{display:flex;flex-wrap:wrap;gap:10px;margin-top:30px}
.map-listing-wr a{
  display:inline-flex;align-items:center;min-height:44px;padding:11px 17px;
  background:var(--paper);border:1px solid var(--line);
  font-size:12px;font-weight:800;color:var(--deep);
}
.map-listing-wr a:hover{background:var(--navy);border-color:var(--navy);color:#fff}
.gw-save-money-wr{background:var(--sand)}


/* ============================================================
   22. BLOG INDEX
   ============================================================ */
.lpp-post-area{display:grid;grid-template-columns:1fr;gap:0;border-top:1px solid var(--line)}
.lpp-post-blk{
  display:grid;grid-template-columns:1fr;gap:22px;align-items:start;
  padding:34px 0;border-bottom:1px solid var(--line);
}
@media(min-width:700px){.lpp-post-blk{grid-template-columns:264px minmax(0,1fr);gap:34px}}
.lpp-post-img-blk figure{margin:0}
.lpp-post-img-blk img{width:100%;height:190px;object-fit:cover;display:block;filter:saturate(.9)}
.lpp-post-content h4{
  font-size:clamp(21px,2.6vw,27px);line-height:1.12;letter-spacing:-.04em;margin:0 0 12px;color:var(--deep);
}
.lpp-post-content p{font-size:14.5px;line-height:1.72;color:var(--muted);margin:0 0 20px}
.lpp-post-content .site-btn{margin-top:2px}
.free-quote-wr{min-width:0}
.pager{margin-top:44px}
.custom-pagination{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.custom-pagination .page-numbers{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:44px;min-height:44px;padding:0 13px;
  border:1px solid var(--line);font-size:12px;font-weight:800;color:var(--deep);
}
.custom-pagination .page-numbers:hover{background:var(--cream)}
.custom-pagination .page-numbers.current{background:var(--navy);border-color:var(--navy);color:#fff}
.custom-pagination .dots{border:0;min-width:24px}

/* ============================================================
   23. PROTECTION PLANS — tables, tabs, accordion
   ============================================================ */
.pest-table-wr{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-top:40px;border:1px solid var(--line);background:var(--paper)}
/* The min-width belongs on the table, not on the scroll wrapper: the wrapper
   div carries these same class names, so a min-width here forced the page wide. */
.pest-table-wr table,.pest-pickyour-plan-table table,.pest-service-treatment-table table{width:100%;min-width:680px;border-collapse:collapse;font-size:14px}
.pest-pickyour-plan-table,.pest-service-treatment-table{min-width:0}
.pest-pickyour-plan-table th,.pest-service-treatment-table th{
  background:var(--deep);color:#fff;font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  font-weight:900;padding:16px 14px;text-align:left;border-bottom:0;
}
.pest-pickyour-plan-table td,.pest-service-treatment-table td{
  padding:14px;border-bottom:1px solid var(--line);vertical-align:middle;color:var(--ink);
}
.pest-pickyour-plan-table tr:nth-child(even) td,.pest-service-treatment-table tr:nth-child(even) td{background:var(--cream)}
.right-mark img,.cross-mark img{width:16px;height:16px;margin:0 auto;display:block}

/* mobile tier tabs */
.pakges-name-list{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0 0 26px;padding:0}
.pakges-name-list li{margin:0}
.pakges-name-list li a{
  display:inline-flex;align-items:center;min-height:44px;padding:12px 16px;
  border:1px solid var(--line);background:var(--paper);
  font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--deep);
}
.pakges-name-list li a.active-pack{background:var(--navy);border-color:var(--navy);color:#fff}
.pak-mob-blk{margin-top:26px}
.tabber-card-blk{border:1px solid var(--line);background:var(--paper);padding:26px 22px}
.pkg-fetures-mob-list ul{list-style:none;margin:18px 0 0;padding:0}
.pkg-fetures-mob-list li{
  font-size:13.5px;line-height:1.6;padding:11px 0;margin:0;
  border-top:1px solid var(--line);display:flex;gap:9px;
}
a.next,a.less{
  display:inline-flex;align-items:center;min-height:44px;margin-top:14px;
  font-size:10px;font-weight:900;letter-spacing:.11em;text-transform:uppercase;
  color:var(--deep);border-bottom:1px solid var(--brass);
}

/* accordion */
.lpp-accordion-blk,.lpp-acc-inner-blk{border-top:1px solid var(--line)}
.lpp-acc-inner-head{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:22px 0;border-bottom:1px solid var(--line);cursor:pointer;
  font-size:17px;font-weight:800;letter-spacing:-.02em;color:var(--deep);min-height:44px;
}
.lpp-acc-inner-head:hover{color:var(--brass)}
.lpp-acc-inner-head.change-color{color:var(--brass);border-bottom-color:var(--brass)}
.lpp-acc-inner-content{padding:20px 0 26px;border-bottom:1px solid var(--line)}
.lpp-acc-inner-content p{font-size:15px;line-height:1.75;color:var(--muted);max-width:70ch}

/* ============================================================
   24. SPECIAL OFFERS
   ============================================================ */
.special-offer-wr,.special-offers-wr{background:var(--paper)}
.special-offer-left-right-wr{min-width:0}
.special-offer-cards,.special-offer-blk{display:grid;grid-template-columns:1fr;gap:26px;margin-top:34px}
@media(min-width:760px){.special-offer-cards,.special-offer-blk{grid-template-columns:1fr 1fr}}
.special-offer-inner-block{border:1px solid var(--line);background:var(--paper);overflow:hidden}
.special-offer-inner-block img{width:100%;height:auto;display:block}
.pest-card-content{padding:24px 22px}
.pest-card-content h3,.pest-card-content h4{font-size:22px;letter-spacing:-.035em;margin:0 0 10px}
.pest-card-content p{font-size:14px;line-height:1.7;color:var(--muted)}
.expirty-date,.expiry-date-home-offers{
  font-size:9px;letter-spacing:.13em;text-transform:uppercase;font-weight:900;color:var(--brass);margin:0;
}
.choose-offer-wr{margin-top:34px;padding:30px 24px;background:var(--cream);border:1px solid var(--line)}
.choose-offer-text{font-size:10px;letter-spacing:.16em;text-transform:uppercase;font-weight:900;color:var(--brass);margin-bottom:14px}
.site-blue-btn{background:var(--navy);color:#fff}
.site-blue-btn:hover{background:var(--deep);color:#fff}
.pest-inner-content-space,.lpp-inner-content-space{margin-top:34px}
.pest-inner-sub-head{font-size:10px;letter-spacing:.18em;text-transform:uppercase;font-weight:900;color:var(--brass);margin-bottom:14px}
.admin-hidden-markup{display:none}
.lpp-side-image-blk{margin-top:26px}
.lpp-side-image-blk img{width:100%;height:auto}


/* Scroll lock while the mobile navigation is open. Declared on both html and
   body, and after the base body overflow-x rule, so it is not overridden. */
html.ea-nav-open,body.ea-nav-open{overflow:hidden!important;touch-action:none}
body.ea-nav-open{position:relative}


/* ============================================================
   25. PROTECTION PLANS — corrected container
   .pest-pick-your-plan-wr holds two wide comparison tables plus an
   accordion, not four tier cards. A 4-column fr grid let the tracks
   floor at the tables' min-content width and overflowed the page.
   Stack them instead and let each table scroll inside its own wrapper.
   ============================================================ */
.pest-pick-your-plan-wr{
  display:block!important;
  margin-top:40px;border:0!important;
}
.pest-pick-your-plan-wr > div{
  min-height:0;padding:0;margin:0 0 34px;background:transparent!important;
  border:0!important;transform:none!important;box-shadow:none!important;
}
.pest-pick-your-plan-wr > div::before{content:none!important}
.pest-pick-your-plan-wr > div:last-child{margin-bottom:0}
.pest-pick-your-plan-wr .pest-table-wr{
  overflow-x:auto;-webkit-overflow-scrolling:touch;
  border:1px solid var(--line);background:var(--paper);
}
.pest-pick-your-plan-wr h3,.pest-pick-your-plan-wr h4{color:var(--deep);margin:0 0 14px}
.pest-pick-your-plan-wr p,.pest-pick-your-plan-wr li{color:var(--ink)}
.pick-plan-wr{background:var(--paper);color:var(--ink)}
.pick-plan-wr h1,.pick-plan-wr h2,.pick-plan-wr h3{color:var(--deep)}

/* Any fr track that can receive wide content must be able to shrink,
   otherwise min-content floors the track and overflows the page. */
.service-looking-bottom,.rpc-cards-content,.rpc-cards-con,
.ea-post-grid,.customer-review-wr,.special-offer-cards,.special-offer-blk,
.offers-block-wr,.city-map-content-wr,.ea-footer-grid,.gform_wrapper .gform_fields{
  grid-auto-columns:minmax(0,1fr);
}
.service-looking-block,.pc-cards-blk,.lpp-post-blk,.ea-post-card,
.offers-block,.special-offer-inner-block,.ea-footer-col,.gform_wrapper .gfield{min-width:0}


/* TablePress / DataTables wrappers must scroll rather than widen the page. */
.pest-table-wr .dt-container,.pest-table-wr .dt-layout-row,
.pest-table-wr .dt-layout-cell{min-width:0;max-width:100%}
.pest-table-wr .dt-layout-row{flex-wrap:wrap}
.pest-table-wr .dt-search input{max-width:100%}


/* ============================================================
   26. CARD GRID SCOPING
   .rpc-cards-content wraps service cards on the service-area hub but the
   protection-plan tabber on city pages. Default to a stacked block layout
   and only apply the card grid where the container actually holds cards,
   so unrelated content is never squeezed into card columns.
   ============================================================ */
.rpc-cards-content,.rpc-cards-con{display:block;border-top:0;border-left:0}
.rpc-cards-content:has(> .pc-cards-blk),
.rpc-cards-con:has(> .pc-cards-blk){
  display:grid;grid-template-columns:1fr;
  border-top:1px solid var(--line);border-left:1px solid var(--line);
}
@media(min-width:700px){
  .rpc-cards-content:has(> .pc-cards-blk),
  .rpc-cards-con:has(> .pc-cards-blk){grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(min-width:1180px){
  .rpc-cards-content:has(> .pc-cards-blk),
  .rpc-cards-con:has(> .pc-cards-blk){grid-template-columns:repeat(3,minmax(0,1fr))}
}
.pak-mob-blk{width:100%;margin:0 0 34px}
.pakges-name-list{width:100%}
.tabber-card-blk{width:100%}
.looking-package-wr .center-wr,.looking-package-text{width:100%}


/* The CTA band keeps its deep-navy surface wherever it is nested. */
.looking-package-wr{background:var(--deep)!important;color:#fff;padding:var(--pad-y) var(--pad-x)}
.looking-package-wr h2,.looking-package-wr h3,.looking-package-wr h4{color:#fff}
.looking-package-wr p{color:var(--muted-dark)}
.looking-package-wr strong,.looking-package-wr b{color:#fff}
.looking-package-wr a:not(.site-btn):not(.ea-btn){color:var(--brass-light);text-decoration:underline;text-underline-offset:3px}


/* ============================================================
   27. DARK SURFACES — guaranteed legibility
   The base heading colour (deep navy) applies to h1-h6, so every dark
   surface must restate all six levels plus links, or a heading level that
   was not listed renders navy-on-navy. Contrast-audited to WCAG 2.2 AA.
   ============================================================ */
.ea-footer,.ea-dark,.ea-navy,.ea-hero,.ea-interior-hero,
.looking-package-wr,.rpc-banner-wr,.ea-utility,.ea-mobile-nav-dark{
  color:#fff;
}
.ea-footer h1,.ea-footer h2,.ea-footer h3,.ea-footer h4,.ea-footer h5,.ea-footer h6,
.ea-dark h1,.ea-dark h2,.ea-dark h3,.ea-dark h4,.ea-dark h5,.ea-dark h6,
.ea-navy h1,.ea-navy h2,.ea-navy h3,.ea-navy h4,.ea-navy h5,.ea-navy h6,
.ea-hero h1,.ea-hero h2,.ea-hero h3,.ea-hero h4,.ea-hero h5,.ea-hero h6,
.ea-interior-hero h1,.ea-interior-hero h2,.ea-interior-hero h3,
.ea-interior-hero h4,.ea-interior-hero h5,.ea-interior-hero h6,
.looking-package-wr h1,.looking-package-wr h2,.looking-package-wr h3,
.looking-package-wr h4,.looking-package-wr h5,.looking-package-wr h6,
.rpc-banner-wr h1,.rpc-banner-wr h2,.rpc-banner-wr h3,
.rpc-banner-wr h4,.rpc-banner-wr h5,.rpc-banner-wr h6{color:#fff}

.ea-dark p,.ea-navy p,.looking-package-wr p,.rpc-banner-wr p,
.ea-hero p,.ea-interior-hero p{color:#DCE4EA}
.ea-dark li,.ea-navy li,.looking-package-wr li,.rpc-banner-wr li{color:#DCE4EA}
.ea-dark strong,.ea-navy strong,.looking-package-wr strong,
.rpc-banner-wr strong,.ea-hero strong,.ea-interior-hero strong,
.ea-dark b,.ea-navy b,.looking-package-wr b{color:#fff}

/* Links on dark surfaces: 4.5:1+ against deep navy */
.ea-footer a,.ea-dark a,.ea-navy a,.looking-package-wr a,.rpc-banner-wr a{color:#fff}
.ea-footer-legal,.ea-footer-legal p,.ea-footer-legal span{color:#AEBCC6}
.ea-footer-legal a{color:#D6E0E7;text-decoration:underline;text-underline-offset:3px}
.ea-footer-legal a:hover{color:#fff}
.ea-footer-col li a,.ea-footer-col p,.ea-footer-col address,
.ea-footer-brand p,.ea-footer-hours{color:#C9D5DD}

/* Brass on warm sand fails AA at small sizes: use the deep tone instead. */
.save-money-offer .expiry-date-home-offers,
.save-money-offer .expirty-date{color:#6B4F2A}
.expiry-date-home-offers,.expirty-date{color:#7A5A30}

/* Muted body text needs to clear 4.5:1 on cream and sand. */


/* ============================================================
   28. CONTRAST CORRECTIONS (measured, WCAG 2.2 AA)
   --brass is a decorative tone; at small text sizes on cream/warm-white
   it measures ~3.2:1. --brass-text is the same hue darkened to clear 4.5:1
   and is used wherever brass carries actual words.
   ============================================================ */
:root{--brass-text:#8A6D45}

.ea-label,.label,
.crawling-slider-text h4,
.service-looking-block::before,
.pc-cards-blk::before,
.visit-list article > span,
.service-copy > span,
.editorial-card > span,
.split-process li span,
.large-city-grid span,
.local-services span,
.article-meta span,
.ea-post-meta span,
.pest-inner-sub-head,
.choose-offer-text,
.menu-side-bar-wr h2,
.menu-side-bar-wr .widget-title,
.why-choose-img-text::before,
ul.breadcrumb li::after{color:var(--brass-text)}

.ea-affiliations h3,.ea-footer-col h4,.ea-footer-band-call,
.ea-footer-band-call a,.ea-dark .ea-label,.ea-navy .ea-label{color:var(--brass-light)}

/* Warm sand is a mid-tone surface: body text there uses the ink tone. */
.save-money-offer,.save-money-offer p,.save-money-offer li,
.save-money-offer strong,.save-money-offer b,
.contact-foot,.contact-foot p,.ea-sand,.ea-sand p{color:var(--ink)}
.save-money-offer h1,.save-money-offer h2,.save-money-offer h3{color:var(--deep)}

/* Third-party widgets inject inline-styled links into the footer
   (accessibility toolbar attribution). Keep them legible on navy. */
.ea-footer p a,.ea-footer a[style]{color:#D6E0E7!important}
.ea-footer p a:hover,.ea-footer a[style]:hover{color:#fff!important}


/* Brass used as a text colour on light surfaces must use the darkened tone. */
.menu-side-bar-wr li a:hover,
.menu-side-bar-wr .current-menu-item > a,
.menu-side-bar-wr .current_page_item > a,
.service-looking-text h5 a:hover,
.pc-cards-heading a:hover,
.ea-post-card h3 a:hover,
.lpp-acc-inner-head:hover,
.lpp-acc-inner-head.change-color,
.city-location-container a:hover,
.entry-content a:not(.ea-btn):not(.site-btn):hover,
.pest-right-wr > p a:hover,.city-content a:hover,
.single-post-content a:hover,
.ea-arrow:hover{color:var(--brass-text)}


/* ============================================================
   29. FINAL CONTRAST PASS
   ============================================================ */
/* Darkened one further step: 4.2:1 on cream was short of AA. */
:root{--brass-text:#7F6440}

/* Prose link colouring must never repaint a button's label. */
.pest-right-wr > p a.site-btn,.pest-right-wr a.site-btn,
.pest-right-wr a.ea-btn,.city-content a.site-btn,
.contact-page-content a.site-btn,.entry-content a.site-btn,
.single-post-content a.site-btn,
.pest-right-wr > p a.site-btn:hover,.pest-right-wr a.site-btn:hover{
  color:#fff!important;text-decoration:none!important;
}
.site-btn-17,.ea-btn-cream{color:var(--deep)!important}
.ea-btn-outline{color:var(--deep)!important}
.ea-btn-outline:hover{color:#fff!important}
p.has-text-align-center a.site-btn{color:#fff!important}


/* ============================================================
   30. FLOATING CONTROLS — corner collision
   Three third-party/UI elements target the bottom-right corner on phones:
   Google's reCAPTCHA badge (256px wide, and currently rendering its
   "invalid domain" error on staging), the accessibility widget trigger,
   and the back-to-top control. Move back-to-top to the opposite corner
   below the desktop breakpoint so nothing overlaps or blocks a tap.
   ============================================================ */
.scroll-top{z-index:120}
@media(max-width:999px){
  .scroll-top{right:auto;left:16px;bottom:16px}
}
/* Keep the reCAPTCHA badge from forcing a horizontal scrollbar on phones. */
.grecaptcha-badge{max-width:100vw;overflow:hidden}


/* ============================================================
   31. COUPONS
   Offers were previously flat artwork files carrying their terms as
   baked-in text in the old blue/green palette. They are now composed
   from the offer's own title, terms and expiry, so they scale, are
   selectable and readable by assistive tech, and sit in the palette.
   Restrained tier rhythm: alternating cream and deep-navy faces with a
   brass hairline, square corners, no heavy shadow.
   ============================================================ */
.ea-coupon-grid{display:grid;grid-template-columns:1fr;gap:22px}
@media(min-width:760px){.ea-coupon-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.ea-coupon-grid .special-offer-cards,
.ea-coupon-grid .offers-block{float:none!important;width:auto!important;min-width:0;margin:0}

.ea-coupon{
  position:relative;display:flex;flex-direction:column;height:100%;
  background:var(--cream);color:var(--ink);
  border:1px solid var(--line);border-radius:0;
  padding:34px 26px 0;overflow:hidden;
  transition:transform .2s ease,box-shadow .2s ease;
}
.ea-coupon::before{
  content:"";position:absolute;inset:0 0 auto;height:4px;background:var(--brass);
}
.ea-coupon-body{flex:1 1 auto;display:flex;flex-direction:column;align-items:flex-start}
.ea-coupon-eyebrow{
  font-size:9px;letter-spacing:.2em;text-transform:uppercase;font-weight:900;
  color:var(--brass-text);margin:0 0 20px;
}
.ea-coupon-value{
  font-size:clamp(38px,6.4vw,54px);line-height:.94;letter-spacing:-.055em;
  font-weight:800;color:var(--deep);margin:0 0 18px;
}
.ea-coupon-terms > *:first-child{margin-top:0}
.ea-coupon-terms p{font-size:15px;line-height:1.7;color:var(--muted);margin:0 0 14px;max-width:44ch}
.ea-coupon-terms ul,.ea-coupon-terms ol{list-style:none;margin:16px 0 0;padding:0;border-top:1px solid var(--line)}
.ea-coupon-terms li{
  font-size:12px;line-height:1.55;color:var(--muted);margin:0;
  padding:9px 0;border-bottom:1px solid var(--line);
}
.ea-coupon-terms li:last-child{border-bottom:0}

.ea-coupon-foot{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px;
  margin:26px -26px 0;padding:18px 26px;border-top:1px solid var(--line);
}
.ea-coupon .expirty-date,.ea-coupon .expiry-date-home-offers{
  font-size:9px;letter-spacing:.14em;text-transform:uppercase;font-weight:900;
  color:var(--brass-text);margin:0;
}
.ea-coupon-btn{background:var(--navy);color:#fff;min-height:44px;padding:13px 20px}
.ea-coupon-btn:hover{background:var(--deep);color:#fff}

/* deep-navy alternate face */
.ea-coupon--dark{background:var(--deep);color:#fff;border-color:rgba(255,255,255,.18)}
.ea-coupon--dark::before{background:var(--brass-light)}
.ea-coupon--dark .ea-coupon-eyebrow{color:var(--brass-light)}
.ea-coupon--dark .ea-coupon-value{color:#fff}
.ea-coupon--dark .ea-coupon-terms p{color:var(--muted-dark)}
.ea-coupon--dark .ea-coupon-terms ul{border-top-color:rgba(255,255,255,.18)}
.ea-coupon--dark .ea-coupon-terms li{color:var(--muted-dark);border-bottom-color:rgba(255,255,255,.14)}
.ea-coupon--dark .ea-coupon-foot{border-top-color:rgba(255,255,255,.18)}
.ea-coupon--dark .expirty-date,.ea-coupon--dark .expiry-date-home-offers{color:var(--brass-light)}
.ea-coupon--dark .ea-coupon-btn{background:var(--cream);color:var(--deep)}
.ea-coupon--dark .ea-coupon-btn:hover{background:#fff;color:var(--deep)}

@media(min-width:1000px) and (prefers-reduced-motion:no-preference){
  .ea-coupon:hover{transform:translateY(-4px)}
}

/* editorial photograph band on the offers page */
.ea-offer-band{margin:56px 0 0;overflow:hidden;border:1px solid var(--line)}
.ea-offer-band img{width:100%;height:280px;object-fit:cover;display:block;filter:saturate(.92)}
@media(min-width:760px){.ea-offer-band img{height:380px}}

/* offers section on the homepage keeps the sand surface behind the cards */
.save-money-offer .ea-coupon-grid{margin:0}
.save-money-offer .ea-coupon{background:var(--paper)}
.save-money-offer .ea-coupon--dark{background:var(--deep)}


/* ------------------------------------------------------------
   Coupon grid corrections.
   .special-offer-cards / .special-offer-blk sit on the same wrapper and
   an earlier rule turned each wrapper into its own two-column grid,
   halving every card. Inside .ea-coupon-grid the wrapper is a plain
   block; the grid belongs to the parent only.
   ------------------------------------------------------------ */
.ea-coupon-grid > .special-offer-cards,
.ea-coupon-grid > .special-offer-blk,
.ea-coupon-grid > .offers-block{
  display:block!important;grid-template-columns:none!important;
  margin:0!important;min-width:0;
}
/* Offer names vary in length ("$50 Off" vs "Refer a Friend"): size the
   display value to the card, and never let a long word breach the edge. */
.ea-coupon-value{font-size:clamp(28px,3.4vw,42px);overflow-wrap:anywhere;hyphens:auto}
@media(min-width:1200px){.ea-coupon-value{font-size:clamp(32px,2.6vw,44px)}}
.ea-coupon{padding:30px 24px 0}
.ea-coupon-foot{margin:24px -24px 0;padding:16px 24px}
.ea-coupon-terms p{font-size:14.5px;max-width:none}
.ea-coupon-btn{white-space:nowrap}

/* The offers page shows coupons beside a sidebar; give them room. */
.special-offers-wr .ea-coupon-grid{grid-template-columns:1fr}
@media(min-width:1180px){.special-offers-wr .ea-coupon-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}


/* The interior prose rule forces .ea-btn labels white; the cream button on
   a dark coupon needs the deep tone back. */
.ea-coupon--dark .ea-coupon-btn,
.pest-right-wr .ea-coupon--dark a.ea-coupon-btn,
.ea-coupon-grid .ea-coupon--dark a.ea-coupon-btn{color:var(--deep)!important}
.ea-coupon--dark .ea-coupon-btn:hover,
.pest-right-wr .ea-coupon--dark a.ea-coupon-btn:hover{color:var(--deep)!important;background:#fff}
.ea-coupon .ea-coupon-btn{text-decoration:none!important}


/* ============================================================
   32. EDITORIAL PHOTO BAND
   Real EcoArmor field photography placed inside interior pages.
   ============================================================ */
.ea-photo-band{margin:56px 0 0;overflow:hidden;border:1px solid var(--line);background:var(--cream)}
.ea-photo-band img{width:100%;height:260px;object-fit:cover;display:block;filter:saturate(.92)}
@media(min-width:760px){.ea-photo-band img{height:360px}}
@media(min-width:1200px){.ea-photo-band img{height:420px}}
.ea-photo-band--inline{margin:56px 0 8px}

/* ============================================================
   33. HEADER ACTIONS + FOOTER SOCIAL + reCAPTCHA
   Utility bar carries the tagline only. Pay Online joins Schedule Now
   as a button pair in the navigation bar. Social moves to the footer
   as icons.
   ============================================================ */
.ea-utility-inner{justify-content:flex-start}
@media(max-width:860px){
  .ea-utility-tag{display:block;text-align:center;width:100%}
  .ea-utility-inner{justify-content:center}
}

.ea-nav-actions{display:none;flex:0 0 auto;align-items:center;gap:10px}
@media(min-width:1000px){.ea-nav-actions{display:flex}}
.ea-nav-actions .ea-nav-cta{display:inline-flex}
.ea-nav-actions .ea-btn-outline{background:transparent;color:var(--deep);border-color:var(--line)}
.ea-nav-actions .ea-btn-outline:hover{background:var(--deep);color:#fff;border-color:var(--deep)}
@media(min-width:1000px) and (max-width:1279px){
  .ea-nav-actions{gap:8px}
  .ea-nav-actions .ea-btn{padding:13px 13px;font-size:9px}
}

/* footer social icons */
.ea-social{display:flex;align-items:center;gap:12px;list-style:none;margin:26px 0 0;padding:0}
.ea-social li{margin:0}
.ea-social a{
  display:inline-flex;align-items:center;justify-content:center;
  width:44px;height:44px;border:1px solid var(--line-dark);border-radius:var(--radius);
  color:var(--muted-dark);transition:color .18s ease,border-color .18s ease,background-color .18s ease;
}
.ea-social a:hover{color:var(--deep);background:var(--brass-light);border-color:var(--brass-light)}
.ea-social svg{width:18px;height:18px;display:block}

/* reCAPTCHA: the badge renders a broken-domain error and crowds the
   mobile corner. Hidden here, with Google's required attribution shown
   in the footer instead (see footer-main.php). */
.grecaptcha-badge{visibility:hidden!important;opacity:0!important;pointer-events:none!important}
.ea-recaptcha-note{font-size:10.5px;line-height:1.6;color:#8B99A4;margin:0;max-width:52ch}
.ea-recaptcha-note a{color:#8B99A4;text-decoration:underline;text-underline-offset:3px}
.ea-recaptcha-note a:hover{color:#fff}
@media(min-width:860px){.ea-recaptcha-note{max-width:none;flex-basis:100%;order:3}}


/* ============================================================
   34. NESTED NAVIGATION
   A single "Services" parent shortens the top bar but deepens the tree
   (Services > Residential > Ant Control > Fire Ant Control). Second- and
   third-level menus fly out to the side instead of stacking downward.
   ============================================================ */
@media(min-width:1000px){
  .ea-nav .sub-menu .sub-menu{
    top:0;left:100%;margin-left:-1px;
    transform:translateX(6px);
  }
  .ea-nav .sub-menu li:hover > .sub-menu,
  .ea-nav .sub-menu li:focus-within > .sub-menu{transform:translateX(0)}
  /* flip the flyout back inside the viewport near the right edge */
  .ea-nav > div > ul > li:nth-last-child(-n+2) .sub-menu .sub-menu{left:auto;right:100%;transform:translateX(-6px)}
  .ea-nav > div > ul > li:nth-last-child(-n+2) .sub-menu li:hover > .sub-menu,
  .ea-nav > div > ul > li:nth-last-child(-n+2) .sub-menu li:focus-within > .sub-menu{transform:translateX(0)}
  /* nested parents get a side caret rather than the downward one */
  .ea-nav .sub-menu .menu-item-has-children > a{display:flex;align-items:center;justify-content:space-between;gap:10px}
  .ea-nav .sub-menu .menu-item-has-children > a::after{content:"›";font-size:15px;line-height:1;opacity:.6;margin:0}
}

/* A label-only parent must not look or behave like a destination. */
.ea-nav-disclosure > a[href="#"],
.ea-nav a[href="#"]{cursor:default}
.ea-mobile-nav .ea-nav-disclosure > a[href="#"]{
  color:var(--muted);font-size:10px;letter-spacing:.18em;text-transform:uppercase;
  font-weight:900;padding-bottom:6px;border-bottom:0;
}
.ea-mobile-nav .ea-nav-disclosure > .sub-menu{padding-left:0;border-bottom:0}


/* ------------------------------------------------------------
   Flyout positioning correction.
   An absolutely-positioned submenu still contributes to the document
   width even while hidden, so parking the third level at left:100%
   widened the page by ~80px. Hidden flyouts now sit at left:0 (behind
   their parent, invisible) and only move outward once opened.
   ------------------------------------------------------------ */
@media(min-width:1000px){
  .ea-nav .sub-menu .sub-menu{left:0;transform:none}
  .ea-nav .sub-menu li:hover > .sub-menu,
  .ea-nav .sub-menu li:focus-within > .sub-menu{left:100%;transform:none}
  .ea-nav > div > ul > li:nth-last-child(-n+2) .sub-menu .sub-menu{left:0;right:auto}
  .ea-nav > div > ul > li:nth-last-child(-n+2) .sub-menu li:hover > .sub-menu,
  .ea-nav > div > ul > li:nth-last-child(-n+2) .sub-menu li:focus-within > .sub-menu{left:auto;right:100%}
}


/* ------------------------------------------------------------
   Coupon button colours are stated decisively.
   These cards now appear inside page content (via [coupon_offer]) as
   well as in theme sections, so surrounding prose/section colour rules
   were winning and producing navy-on-navy labels.
   ------------------------------------------------------------ */
.ea-coupon .ea-coupon-btn,
.ea-coupon-grid .ea-coupon .ea-coupon-btn,
.pest-right-wr .ea-coupon .ea-coupon-btn{
  background:var(--navy)!important;color:#fff!important;text-decoration:none!important;
}
.ea-coupon--dark .ea-coupon-btn,
.ea-coupon-grid .ea-coupon--dark .ea-coupon-btn,
.pest-right-wr .ea-coupon--dark .ea-coupon-btn{
  background:var(--cream)!important;color:var(--deep)!important;
}
.ea-coupon .ea-coupon-btn:hover{background:var(--deep)!important;color:#fff!important}
.ea-coupon--dark .ea-coupon-btn:hover{background:#fff!important;color:var(--deep)!important}


/* ============================================================
   35. FORM HEADINGS
   Gravity Forms puts each form's headline in an HTML field, always as
   the first field ("Get A FREE Estimate", "Get Your Free Quote Today",
   the plan promo). Styling only :first-child keeps the trailing privacy
   line small, since that HTML field is never first.
   ============================================================ */
.gform_wrapper .gform_fields > .gfield_html:first-child,
.gform_wrapper .gform_fields > .gfield--type-html:first-child{
  grid-column:1/-1;
  margin:0 0 10px;
  padding:0 0 20px;
  border-bottom:1px solid var(--line);
  font-family:var(--font-sans);
  font-size:clamp(28px,3.6vw,40px);
  line-height:1.02;
  letter-spacing:-.05em;
  font-weight:800;
  color:var(--deep);
  text-wrap:balance;
}
/* brass rule above the headline for weight */
.gform_wrapper .gform_fields > .gfield_html:first-child::before,
.gform_wrapper .gform_fields > .gfield--type-html:first-child::before{
  content:"";display:block;width:46px;height:4px;
  background:var(--brass);margin:0 0 20px;
}
/* the promo headline in the popup is a full sentence — hold it a touch smaller */
#gform_fields_10 > .gfield_html:first-child{font-size:clamp(24px,2.8vw,32px);letter-spacing:-.04em}

/* trailing fine print stays quiet */
.gform_wrapper .gform_fields > .gfield_html:not(:first-child){
  grid-column:1/-1;font-size:11.5px;line-height:1.6;color:var(--muted);
}

/* dark surfaces keep the headline legible */
.ea-dark .gform_wrapper .gform_fields > .gfield_html:first-child,
.looking-package-wr .gform_wrapper .gform_fields > .gfield_html:first-child{color:#fff;border-bottom-color:var(--line-dark)}
.ea-dark .gform_wrapper .gform_fields > .gfield_html:first-child::before{background:var(--brass-light)}


/* Photo band used as a standalone section between page sections. */
.ea-photo-band--section{margin:0 0 var(--pad-y)}
.rpc-cards-wr + * .ea-photo-band--section,
.city-content-wr + * .ea-photo-band--section{margin-top:0}
.ea-photo-band--section img{height:300px}
@media(min-width:760px){.ea-photo-band--section img{height:400px}}
@media(min-width:1200px){.ea-photo-band--section img{height:460px}}


/* The Go Green mark is a circular badge, not a landscape lockup: at the
   shared 52px row height it reads far smaller than the wordmark beside it.
   Give round marks their own height so optical weight matches. */
.ea-affiliations .brand-wr{align-items:center}
.ea-affiliations img[src*="go-green-badge"]{height:84px}
@media(max-width:620px){.ea-affiliations img[src*="go-green-badge"]{height:72px}}


/* ============================================================
   36. SERVICES INDEX
   The all-services hub. Reuses the numbered editorial grid from the
   homepage; cards here carry an h2 (the page h1 is the page title).
   ============================================================ */
.ea-hero-intro{margin:24px 0 0}
.ea-hero-intro p{font-size:var(--fs-lead);line-height:1.7;color:#DCE4EA;margin:0 0 1em;max-width:56ch}
.ea-hero-intro p:last-child{margin-bottom:0}

.ea-services-index .service-looking-heading{margin-bottom:34px}
.ea-services-index .service-looking-heading .ea-label{margin:0}
.ea-services-index .service-looking-block{min-height:230px;padding-top:30px}
.service-looking-text h3,
.ea-services-index .service-looking-text h2{
  font-size:26px;font-weight:800;letter-spacing:-.04em;line-height:1.08;
  margin:0 0 10px;color:var(--deep);
}
.service-looking-text h3 a,
.ea-services-index .service-looking-text h2 a{color:var(--deep)}
.service-looking-text h3 a:hover,
.ea-services-index .service-looking-text h2 a:hover{color:var(--brass-text)}

/* plan cross-link band */
.ea-services-plans .looking-package-text{max-width:var(--maxw-read)}
.ea-services-plans h2{margin:0 0 26px}
.ea-services-plans .ea-btn{margin:0}

/* service-area cross-link */
.ea-services-areas h2{margin:0 0 22px}
.ea-services-areas .ea-actions{margin-top:34px}


/* Coupons rendered inside the 290px service-page sidebar: the 2-column
   rule above keys off the viewport, not the container, so it produced two
   111px columns and clipped the card text. Stack them there. */
.pest-left-wr .ea-coupon-grid,
.menu-side-bar-wr .ea-coupon-grid,
.lpp-side-image-blk.ea-coupon-grid{grid-template-columns:1fr!important}


/* ============================================================
   37. LEAD HEADING PROMOTED TO H1
   Five templates output the page body through the_content() or an ACF
   field, so those pages shipped with no <h1> at all. On each of them the
   visible lead heading was already styled as the page title - only its
   element name was wrong. ecoarmor_promote_lead_heading() now renders it
   as the h1; these rules make an h1 in those columns render exactly as
   the h2 it replaced, so nothing moves on the page.
   ============================================================ */
.ea-page-h1{
  font-size:clamp(27px,4vw,40px);line-height:1.06;letter-spacing:-.045em;
  margin:2em 0 .55em;
}
.pest-right-wr > .ea-page-h1:first-child,
.city-content > .ea-page-h1:first-child{margin-top:0}

/* visually hidden, still announced by screen readers */
.ea-sr-only{
  position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;
}


/* ------------------------------------------------------------
   Sentricon partner badge.
   The supplied file is a JPG with an opaque near-white field, so on the
   navy footer it read as a stray white rectangle. It is a third-party
   registered mark, so it is not recoloured, traced or knocked out - it is
   presented on a deliberate light chip instead, which is a normal partner
   -logo treatment on a dark surface. Targeted on the link href so it works
   before and after lazyload swaps the img src.
   ------------------------------------------------------------ */
.ea-affiliations .logo-wr a[href*="sentricon"]{
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--paper);
  padding:14px 20px;
  border-radius:12px;
}
.ea-affiliations .logo-wr a[href*="sentricon"] img{height:40px}
@media(max-width:620px){
  .ea-affiliations .logo-wr a[href*="sentricon"]{padding:12px 16px}
  .ea-affiliations .logo-wr a[href*="sentricon"] img{height:34px}
}


/* ============================================================
   38. HOMEPAGE HERO - navy-to-photograph fade
   The split hero used to butt the solid navy panel hard against the
   photograph. The photograph now runs slightly under the panel and a
   navy-to-transparent gradient carries the panel colour across the seam,
   so the order reads: solid navy -> softened navy over the photograph ->
   fully visible photograph.

   Scoped to .ea-hero, the homepage banner. Interior pages use the separate
   .ea-interior-hero component and are deliberately untouched.
   ============================================================ */
.ea-hero{overflow:hidden}

/* The copy panel paints its own navy so the photograph can slide beneath
   it on desktop without showing through behind the text. */
.ea-hero-copy{position:relative;z-index:2;background:var(--navy)}
.ea-hero-media{position:relative;z-index:1}

/* Overlay never intercepts pointer events, so the CTA stays clickable. */
.ea-hero-media::before{content:"";position:absolute;inset:0;pointer-events:none}

/* --- stacked layout: a short fade down out of the navy content ------- */
@media(max-width:999px){
  .ea-hero-copy{order:0}
  .ea-hero-media{order:1}
  .ea-hero-media::before{
    background:linear-gradient(180deg,
      #2E4256 0%,
      rgba(46,66,86,.86) 9%,
      rgba(46,66,86,.42) 19%,
      rgba(46,66,86,0) 28%);
  }
}

/* --- split layout: the horizontal fade -------------------------------
   The photograph is pulled left under the navy panel so the two never
   meet at a straight edge. It is pulled left only - the right edge is
   untouched - so this cannot introduce horizontal overflow.
   The first stop is in px (slightly more than the overlap) so the seam is
   covered by solid navy at every viewport width; the fade itself is in
   percentages and lands within the left 25-40% of the photograph. */
@media(min-width:1000px){
  .ea-hero-media{margin-left:-140px}
  .ea-hero-media::before{
    background:linear-gradient(90deg,
      #2E4256 0,
      #2E4256 145px,
      rgba(46,66,86,.66) 22%,
      rgba(46,66,86,.30) 28%,
      rgba(46,66,86,.08) 33%,
      rgba(46,66,86,0) 36%);
  }
}


/* ============================================================
   39. PICK YOUR PLAN - comparison table + Ala Carte
   The plan matrix marks its cells with empty <span class="right-mark">
   / <span class="cross-mark"> and relies entirely on CSS to draw them.
   The original theme did that with background SVGs in styles.css, which
   the redesign dequeued - so every tick and cross silently vanished and
   the matrix rendered as blank cells. Redrawn here in the EcoArmor
   palette, with the meaning also exposed to screen readers.
   ============================================================ */
span.right-mark,span.cross-mark{
  position:relative;display:inline-block;width:24px;height:24px;
  background-repeat:no-repeat;background-position:center;background-size:22px 22px;
  vertical-align:middle;
}
span.right-mark{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M4 10.6l4 4 8-9.2' fill='none' stroke='%234E7A5E' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
span.cross-mark{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M6 6l8 8M14 6l-8 8' fill='none' stroke='%237A8A95' stroke-width='2.2' stroke-linecap='round'/%3E%3C/svg%3E")}
/* the glyph alone has no accessible name; give it one */
span.right-mark::after,span.cross-mark::after{
  position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;
  clip-path:inset(50%);white-space:nowrap;
}
span.right-mark::after{content:"Included"}
span.cross-mark::after{content:"Not included"}


/* --- the comparison matrix itself ---------------------------------
   TablePress ships this through DataTables, which adds a page-length
   select, a search box, a row counter and a pager. On a four-column plan
   comparison none of that is useful, and it made the section read as an
   admin screen rather than a pricing table. Hidden, not removed - the
   plugin still works, it just stops decorating this one table. */
.pest-pickyour-plan-table .dt-length,
.pest-pickyour-plan-table .dt-search,
.pest-pickyour-plan-table .dt-info,
.pest-pickyour-plan-table .dt-paging{display:none!important}

.pest-pickyour-plan-table{
  border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--paper);
}
.pest-pickyour-plan-table table.tablepress{
  margin:0;border:0;width:100%;border-collapse:collapse;font-size:15px;
}

/* plan-name header */
.pest-pickyour-plan-table table.tablepress thead th,
.pest-pickyour-plan-table table.tablepress thead td{
  background:var(--navy)!important;color:#fff!important;
  font-size:12px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;
  line-height:1.3;padding:18px 16px;border:0;vertical-align:middle;text-align:center;
}
.pest-pickyour-plan-table table.tablepress thead th.column-1,
.pest-pickyour-plan-table table.tablepress thead td.column-1{
  background:var(--deep)!important;text-align:left;
}

/* feature rows */
.pest-pickyour-plan-table table.tablepress tbody td{
  padding:14px 16px;text-align:center;vertical-align:middle;
  border-bottom:1px solid rgba(38,58,75,.09);background:transparent!important;
}
.pest-pickyour-plan-table table.tablepress tbody td.column-1{
  text-align:left;font-weight:600;color:var(--ink);line-height:1.4;
}
.pest-pickyour-plan-table table.tablepress tbody tr:nth-child(odd) td{
  background:rgba(243,239,229,.5)!important;
}
.pest-pickyour-plan-table table.tablepress tbody tr:last-child td{border-bottom:0}

/* the summary / pricing row sits above the ticks and reads as prose */
.pest-pickyour-plan-table table.tablepress tbody tr.row-2 td{
  background:var(--cream)!important;vertical-align:top;text-align:left;
  padding:20px 16px;font-size:13.5px;line-height:1.55;
  border-bottom:2px solid var(--navy);
}
.pest-pickyour-plan-table table.tablepress tbody tr.row-2 td.column-1{
  font-weight:700;color:var(--deep);font-size:15px;
}

/* five columns will not fit a phone; scroll rather than crush */
@media(max-width:900px){
  .pest-pickyour-plan-table{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .pest-pickyour-plan-table table.tablepress{min-width:740px}
}

/* --- Ala Carte services -------------------------------------------
   Presented as a plain grid of named services, each linking to the
   quote form, under one unmistakable statement that nothing here is
   priced by plan. Previously this list rendered twice - once as a
   TablePress table and once as this accordion; the table render was
   removed in template-pick-your-plan.php. */
.lpp-accordion-blk{margin-top:56px}
.lpp-accordion-head h3{margin:0 0 16px}

.lpp-quote-note{
  display:flex;flex-wrap:wrap;align-items:baseline;gap:12px;
  background:var(--cream);border-left:3px solid var(--brass);
  padding:16px 20px;border-radius:0 8px 8px 0;margin:0 0 28px;
  max-width:none;
}
.lpp-quote-note-label{
  flex:none;font-size:10.5px;font-weight:800;letter-spacing:.15em;text-transform:uppercase;
  color:#fff;background:var(--brass-text,#7F6440);padding:5px 10px;border-radius:4px;
}
.lpp-quote-note-text{flex:1 1 320px;font-size:15.5px;line-height:1.55;color:var(--ink)}
.lpp-quote-note-text a{color:var(--brass-text,#7F6440);font-weight:700;white-space:nowrap}

.lpp-accordion-content{
  display:grid;grid-template-columns:1fr;gap:14px;
}
@media(min-width:620px){.lpp-accordion-content{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1000px){.lpp-accordion-content{grid-template-columns:repeat(4,1fr)}}

.lpp-acc-inner-blk{
  display:flex;flex-direction:column;gap:10px;
  background:var(--paper);border:1px solid var(--line);border-radius:10px;
  padding:20px 20px 18px;
}
.lpp-acc-inner-head h4{
  margin:0;font-size:17px;font-weight:800;letter-spacing:-.02em;
  line-height:1.25;color:var(--deep);
}
.lpp-acc-inner-content{margin-top:auto}
.lpp-acc-inner-content p{margin:0}
.lpp-acc-inner-content a{
  display:inline-block;font-size:11px;font-weight:800;letter-spacing:.12em;
  text-transform:uppercase;color:var(--brass-text,#7F6440);text-decoration:none;
  border-bottom:2px solid var(--sand);padding-bottom:3px;
}
.lpp-acc-inner-content a:hover,.lpp-acc-inner-content a:focus-visible{
  color:var(--deep);border-bottom-color:var(--brass);
}


/* The earlier accordion styling drew a rule under each heading and each
   link, which made sense in a stacked list but reads as stray hairlines
   inside a card. Reset for the grid. */
.lpp-acc-inner-head{display:block;padding:0;border-bottom:0;gap:0}
.lpp-acc-inner-content{padding:0;border-bottom:0}


/* ============================================================
   40. DROPDOWN FLICKER + SIDEBAR MARKERS
   ============================================================ */

/* Hovering Commercial Pest Control, Insulation Removal and Pick Your
   Plan made the Services dropdown flicker. Residential Pest Control sits
   above them and owns a 411px third-level flyout. Section 34 parks hidden
   flyouts at left:0 (so they stop inflating document width), which lands
   that flyout squarely on top of those three items. It was hidden but
   still had pointer-events:auto, and visibility is transitioned over
   0.16s - so on the way out it kept catching the pointer, re-opened its
   parent, snapped away, and looped.
   A hidden menu must never be able to catch the pointer. */
.ea-nav .sub-menu{pointer-events:none}
.ea-nav li:hover > .sub-menu,
.ea-nav li:focus-within > .sub-menu{pointer-events:auto}

/* WordPress wraps each widget in an <li>, so the interior sidebars showed
   a stray disc next to Free Quote / Reviews / Careers and next to each
   coupon. The list is structural, not a bulleted list. */
.menu-side-bar-wr,
.menu-side-bar-wr > li,
.menu-side-bar-wr > .widget{list-style:none}
.menu-side-bar-wr > li::marker,
.menu-side-bar-wr > .widget::marker{content:""}


/* ============================================================
   41. PROTECTION PLAN CARDS
   Four plans were being laid out on a three-column grid, so the fourth
   dropped onto a row of its own and the set read as unbalanced. Pinned
   to four equal columns on desktop and rebuilt in the site card
   language: left aligned, brass counter, navy title, muted description,
   and the feature list marked with the same green tick as the
   comparison table above it.

   Scoped to .rpc-cards-con, which is the package container in all three
   templates that render these - pick-your-plan, area-we-serve and every
   city page - so the three stay identical. The service-card grids in
   .rpc-cards-content are a different set and keep their own columns.
   ============================================================ */
@media(min-width:620px){
  .rpc-cards-con:has(> .pc-cards-blk){grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(min-width:1080px){
  .rpc-cards-con:has(> .pc-cards-blk){grid-template-columns:repeat(4,minmax(0,1fr))}
}

/* the container carries .align-center, which centred the feature lists
   and made them hard to scan */
.rpc-cards-con.align-center,
.rpc-cards-con .pc-cards-blk,
.rpc-cards-con .pc-cards-heading,
.rpc-cards-con .pc-cards-para{text-align:left}

.rpc-cards-con > .pc-cards-blk{
  padding:26px 22px 28px;min-height:0;align-items:stretch;
}
.rpc-cards-con .pc-cards-top{
  display:flex;flex-direction:column;align-items:flex-start;gap:14px;width:100%;
}
.rpc-cards-con .pc-cards-img figure{margin:0}
.rpc-cards-con .pc-cards-img img{width:44px;height:44px;object-fit:contain;display:block}
.rpc-cards-con .pc-cards-heading h5{
  font-size:19px;font-weight:800;letter-spacing:-.03em;line-height:1.2;
  margin:0;color:var(--deep);
}
.rpc-cards-con .pc-cards-para{margin-top:12px;width:100%}
.rpc-cards-con .pc-cards-para p{font-size:13px;line-height:1.6;color:var(--muted);margin:0}

/* feature list */
.rpc-cards-con .pkg-fetures-mob-list{
  width:100%;margin-top:18px;padding-top:16px;border-top:1px solid var(--line);
}
/* the editor left an empty paragraph above each list */
.rpc-cards-con .pkg-fetures-mob-list > p:empty,
.rpc-cards-con .pkg-fetures-mob-list > p:first-child:not(:has(*)){margin:0}
.rpc-cards-con .pkg-fetures-mob-list ul{list-style:none;margin:0;padding:0}
.rpc-cards-con .pkg-fetures-mob-list li{
  display:grid;grid-template-columns:17px 1fr;gap:9px;align-items:start;
  font-size:12.5px;line-height:1.5;color:var(--ink);
  padding:7px 0;margin:0;border-top:0;text-align:left;
}
.rpc-cards-con .pkg-fetures-mob-list li::before{
  content:"";width:17px;height:17px;margin-top:1px;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M4 10.6l4 4 8-9.2' fill='none' stroke='%234E7A5E' stroke-width='2.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/17px 17px no-repeat;
}


/* The four descriptions are different lengths, so the feature lists
   started at four different heights and the row still read as ragged.
   Subgrid lets each card share the parent row track, so counter, icon +
   title, description and list all line up across the set. Browsers
   without subgrid keep the plain stacked card and lose nothing but the
   alignment. */
@supports (grid-template-rows: subgrid){
  @media(min-width:1080px){
    .rpc-cards-con:has(> .pc-cards-blk){grid-template-rows:auto auto auto 1fr}
    .rpc-cards-con > .pc-cards-blk{
      grid-row:span 4;display:grid;grid-template-rows:subgrid;gap:0;
    }
    .rpc-cards-con > .pc-cards-blk::before{margin-bottom:18px}
    .rpc-cards-con .pkg-fetures-mob-list{align-self:start}
  }
}


/* Second cause of the same flicker, moving Residential -> Commercial.
   pointer-events:none stopped the flyout stealing the cursor, but it was
   still VISIBLY flashing: on hover-out its left snaps from 100% back to 0
   instantly while opacity is still fading, so for 0.16s a half-faded
   panel is painted directly over Commercial / Insulation / Pick Your Plan.
   Hold the reposition until the fade has finished - left changes with a
   0.16s delay on the way out, and with no delay on the way in. */
.ea-nav .sub-menu .sub-menu{
  transition:opacity .16s,visibility .16s,left 0s linear .16s,right 0s linear .16s;
}
.ea-nav .sub-menu li:hover > .sub-menu,
.ea-nav .sub-menu li:focus-within > .sub-menu{
  transition:opacity .16s,visibility .16s,left 0s,right 0s;
}


/* ============================================================
   42. SERVICE-AREA CITY LIST
   .map-listing-wr was already written as a wrapping chip row, but it
   assumed direct <a> children. The template actually outputs
   ul > li > a, so the whole list collapsed into a single flex item:
   31 cities stacked in one 136px column, 1599px tall, with disc
   bullets. Move the flex to the <ul> and drop the markers, so it
   matches the city chips used on the homepage, the city pages and the
   services hub.
   ============================================================ */
.map-listing-wr{display:block}
.map-listing-wr > ul{
  display:flex;flex-wrap:wrap;gap:10px;
  list-style:none;margin:0;padding:0;width:100%;
}
.map-listing-wr > ul > li{margin:0;padding:0;border:0;list-style:none}
.map-listing-wr > ul > li::marker{content:""}

/* entries with no link are plain text - give them the same chip shape,
   visibly inert rather than looking like a broken button */
.map-listing-wr > ul > li:not(:has(a)){
  display:inline-flex;align-items:center;min-height:44px;padding:11px 17px;
  background:transparent;border:1px dashed var(--line);
  font-size:12px;font-weight:800;color:var(--muted);
}


/* ============================================================
   43. SERVICE-AREA MAP + CITY LIST
   The heading sat alone in a half-width column - 490px of track holding
   36px of text - while the chips and the map stacked in the other half.
   Heading now runs full width and centred, with the two panels side by
   side beneath it.

   Cities are on the left and the map on the right, which is the source
   order: the chips are links, so reordering them visually would put tab
   order out of step with what is on screen.
   ============================================================ */
.city-map-text-content{text-align:center}
.city-map-text-content > *{margin-left:auto;margin-right:auto}

@media(min-width:900px){
  .city-map-content-wr{grid-template-columns:1fr;gap:34px}

  /* the wrapper was a bordered box around the stacked pair; the two
     panels below carry their own edges now */
  .map-content{
    display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);
    gap:26px;align-items:stretch;
    border:0;background:transparent;overflow:visible;
  }
  .map-content > .map-listing-wr{
    margin:0;padding:22px;
    background:var(--paper);border:1px solid var(--line);
  }
  .map-content > .map-iframe-container{margin:0;height:100%}
  .map-content > .map-iframe-container iframe{height:100%;min-height:380px}
}

/* stacked: keep the list above the map, and let it breathe */
@media(max-width:899px){
  .map-content{border:0;background:transparent}
  .map-content > .map-listing-wr{
    margin:0 0 22px;padding:20px;
    background:var(--paper);border:1px solid var(--line);
  }
}


/* WP Smush lazyloads the map iframe and, while it carries .lazyload,
   forces width:var(--smush-placeholder-width) with !important - which
   beats even the inline width Smush itself sets, leaving a 100px map in
   a 521px panel. Pin it to the panel in every state. */
.map-iframe-container iframe,
.map-content iframe{width:100%!important;max-width:100%}


/* ============================================================
   44. SERVICE-PAGE PACKAGE CARDS  [inner_pest_package]
   The shortcode builds an icon-left / text-right row using floats and
   .clearfix. The redesign neutralised those floats, so each block
   collapsed: a full-width 119px icon band with the copy stranded
   underneath it and ~200px of dead space between packages.

   Rebuilt as the same card set used on Pick Your Plan, so the four
   packages read identically wherever they appear. auto-fit rather than
   a media query because this sits in a 691px content column, not the
   full page width - the grid has to respond to its container.

   Shared by all 13 service pages via the shortcode.
   ============================================================ */
.pest-package-wr{margin:46px 0 40px}
.pest-package-head h3{
  font-size:clamp(22px,3vw,28px);line-height:1.15;letter-spacing:-.035em;
  margin:0 0 24px;color:var(--deep);
}

.pest-packages{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));
  gap:18px;
}
.pest-packages::after{content:none!important;display:none!important}

.pest-package-block{
  display:flex;flex-direction:column;align-items:flex-start;gap:12px;
  background:var(--paper);border:1px solid var(--line);border-radius:10px;
  padding:24px 22px 22px;margin:0;float:none;width:auto;min-width:0;
}
.pest-package-block::after,.pest-package-block::before{content:none!important;display:none!important}

/* font-size/line-height zeroed: the shortcode leaves whitespace text
   nodes around the img, which were adding a 64px line box above every
   card title. */
.pest-package-icon{float:none!important;width:auto!important;margin:0;padding:0;font-size:0;line-height:0}
/* Smush lazyload forces its placeholder width with !important, so the
   icon has to insist too - same cause as the map iframe above. */
.pest-package-icon img{width:48px!important;height:48px!important;object-fit:contain;display:block;max-width:48px}

.pest-package-content{float:none!important;width:auto!important;margin:0;padding:0}
.pest-package-content h4{
  font-size:18px;font-weight:800;letter-spacing:-.025em;line-height:1.2;
  margin:0 0 8px;color:var(--deep);
}
.pest-package-content h5{
  font-size:11px;font-weight:900;letter-spacing:.14em;text-transform:uppercase;
  color:var(--brass-text,#7F6440);margin:0 0 8px;
}
.pest-packages-content p{font-size:13.5px;line-height:1.6;color:var(--muted);margin:0 0 16px}
.pest-packages-content p:last-child{margin-bottom:0}

.pest-package-content .site-btn{
  display:inline-flex;align-items:center;margin-top:16px;
  padding:11px 18px;font-size:10.5px;letter-spacing:.13em;
}


/* ============================================================
   45. CUSTOMER REVIEWS PAGE
   The page was a form for leaving a review, with none of the reviews
   customers had already left. Verified Google reviews now lead; leaving
   one is the secondary action underneath. The h1 is the page title,
   so template-review.php was also removed from the lead-heading
   promotion list in functions.php - otherwise "Leave a Review" would
   have been promoted to a second h1 on the same page.
   ============================================================ */
.ea-reviews-stream{margin:0 0 8px}
.ea-reviews-stream .ti-widget{margin:0!important}

.ea-leave-review{
  margin-top:54px;padding-top:40px;border-top:1px solid var(--line);
}
.ea-leave-review > *:first-child{margin-top:0}


/* ============================================================
   46. SIDEBAR FORM CONSENT LINE
   .menu-side-bar-wr li a was written for the sidebar nav list - block,
   13px, bold, with a rule under it. WordPress wraps every widget in an
   <li>, so it also caught the privacy policy link inside the sidebar
   form: the link broke onto its own line at 13px/700 while the sentence
   around it sat at 11.5px/400.

   Put the link back in the sentence at the sentence size, bold so it
   still reads as a link. The same field in the main content column was
   already correct and is untouched.
   ============================================================ */
.menu-side-bar-wr .gform_wrapper a,
.menu-side-bar-wr .gfield_html a{
  display:inline;padding:0;border-bottom:0;
  font-size:inherit;line-height:inherit;font-weight:700;
  color:var(--brass-text,#7F6440);
  text-decoration:underline;text-underline-offset:2px;
}
.menu-side-bar-wr .gfield_html a:hover,
.menu-side-bar-wr .gfield_html a:focus-visible{color:var(--deep)}


/* ============================================================
   47. PLAN MATRIX ON MOBILE
   At 390px the matrix is 740px wide in a 346px column, so 394px sits
   off-screen. Scrolling right used to carry the feature-name column
   with it, leaving a grid of bare ticks with nothing to say which row
   was which. The first column is now pinned while the four plan columns
   scroll under it.

   Sticky cells must be opaque or the scrolling columns show through, so
   every row state - header, pricing row, odd stripe - restates its own
   background on that cell.
   ============================================================ */
@media(max-width:900px){
  .pest-pickyour-plan-table table.tablepress{min-width:660px}

  .pest-pickyour-plan-table table.tablepress td.column-1,
  .pest-pickyour-plan-table table.tablepress th.column-1{
    position:sticky;left:0;z-index:2;
    min-width:132px;max-width:150px;
    box-shadow:1px 0 0 rgba(38,58,75,.14);
  }
  .pest-pickyour-plan-table table.tablepress thead td.column-1,
  .pest-pickyour-plan-table table.tablepress thead th.column-1{
    background:var(--deep)!important;z-index:3;
  }
  .pest-pickyour-plan-table table.tablepress tbody td.column-1{background:var(--paper)!important}
  .pest-pickyour-plan-table table.tablepress tbody tr:nth-child(odd) td.column-1{background:#F7F3EA!important}
  .pest-pickyour-plan-table table.tablepress tbody tr.row-2 td.column-1{background:var(--cream)!important}

  /* tighter cells so more of the comparison fits per screen */
  .pest-pickyour-plan-table table.tablepress tbody td{padding:12px 10px;font-size:14px}
  .pest-pickyour-plan-table table.tablepress tbody td.column-1{font-size:13px;line-height:1.35}
  .pest-pickyour-plan-table table.tablepress thead th,
  .pest-pickyour-plan-table table.tablepress thead td{padding:14px 10px;font-size:11px}
  .pest-pickyour-plan-table table.tablepress tbody tr.row-2 td{padding:16px 10px;font-size:12.5px}
  span.right-mark,span.cross-mark{width:20px;height:20px;background-size:20px 20px}
}


/* ============================================================
   48. PHOTO BAND - STOP CROPPING PEOPLE
   The band was a fixed-height letterbox with object-fit:cover, so it
   trimmed the top and bottom of every frame. On a 3:2 source in a 2.3:1
   box that is ~100px off each edge - enough to take a technician's cap
   off and cut his feet. Section 47 already restricted both photo pools
   to landscape frames, but the letterbox still cropped them.

   The band now matches the 3:2 aspect of the photography, so the whole
   frame shows and nothing is ever clipped - including any photo swapped
   in later. CLAUDE.md section 11.
   ============================================================ */
.ea-photo-band img,
.ea-photo-band--section img{
  height:auto!important;aspect-ratio:3/2;object-fit:contain;
  width:100%;display:block;background:var(--cream);
}


/* ============================================================
   49. CITY PAGE TYPOGRAPHY  -  APPROVED, ALL CITY PAGES
   Measured on /pest-control-in-celina-tx/:
     h2 70px   <- hero display size used inside body copy
     h3 32px   <- only 2.2x smaller than the h2 above it
     h4 24px
     p  16px AND 16.5px, line-height 27 AND 30, margin-bottom 0 AND 19
     h3 margin-bottom 16 AND 24
   So: no consistent type scale, and body text set two different ways.

   Replaced with one scale - 38 / 24 / 19 / 16.5 - and a single rhythm.
   Approved on Celina 31 Aug 2026 and rolled out to every page using
   template-pest-control-city.php. The template body class keeps the same
   specificity the page-id selector had, so the cascade is unchanged.
   ============================================================ */
body.page-template-template-pest-control-city .city-content-wr h2{
  font-size:clamp(30px,3.2vw,38px);line-height:1.15;letter-spacing:-.03em;
  margin:64px 0 20px;
}
body.page-template-template-pest-control-city .city-content-wr h2:first-child{margin-top:0}
body.page-template-template-pest-control-city .city-content-wr h3{
  font-size:24px;line-height:1.3;letter-spacing:-.02em;
  margin:40px 0 12px;
}
body.page-template-template-pest-control-city .city-content-wr h4{
  font-size:19px;line-height:1.35;letter-spacing:-.015em;
  margin:32px 0 10px;
}
body.page-template-template-pest-control-city .city-content-wr p,
body.page-template-template-pest-control-city .city-content-wr li{
  font-size:16.5px;line-height:1.75;margin:0 0 20px;
}
body.page-template-template-pest-control-city .city-content-wr li{margin-bottom:8px}
body.page-template-template-pest-control-city .city-content-wr ul,body.page-template-template-pest-control-city .city-content-wr ol{margin:0 0 22px;padding-left:22px}
body.page-template-template-pest-control-city .city-content-wr p:last-child{margin-bottom:0}


/* ------------------------------------------------------------
   The dead space under "We safeguard against a variety of pests".
   The list that belongs there carries three classes:
     protect-home-list common-list-wr rectangle-box
   Section 24 styles .protect-home-list properly and then, two lines
   later, hides .rectangle-box - so the redesign was hiding the very
   list it had just styled. 22 pest-service links, invisible, leaving a
   heading that promises a list followed by nothing.
   .rectangle-box appears on no other element anywhere on the site.

   Rolled out with the section 49 typography once Celina was approved.
   ------------------------------------------------------------ */
body.page-template-template-pest-control-city .protect-home-list.rectangle-box{display:block}
body.page-template-template-pest-control-city .protect-home-list ul{list-style:none;margin:0;padding:0}
body.page-template-template-pest-control-city .protect-home-block{margin-top:40px}

/* 73px rows for one-word links read as loose. Tightened to ~48px,
   still above the 44px minimum tap target. */
body.page-template-template-pest-control-city .protect-home-list li{padding:11px 0;grid-template-columns:22px 1fr;gap:10px;font-size:16px}
