/* 10-19-2026 Library run 84: rules matching nothing on any of the 642 served addresses (every PAGE_MAP page, all 269 job-photo posts, every category, tag and author archive, searches, the 404 page, paged lists) or in any script on the site were cut, and every kept rule is unchanged. */
/*

=============================================================

  PEST ME OFF - GLOBAL CSS

  Paste into: WP Code plugin as a CSS snippet

  Version: V132 | 2026-10-18 CST | the pest library "often confused with" box is a soft card outlined on all four sides, no one-sided gold line (Sam 10-17-2026, Library run 78). V131 2026-10-15 CST | underlines gone from every link rule, weight 600 is the link cue (Sam 10-15-2026, Library run 50). V130 2026-10-14 CST | the old teal colour, and its faint see-through backgrounds, are now the site link blue 1f78d1 (T85). V129 2026-05-16 00:00 CST

  Covers all service pages, the About page, the Services hub page,

  the Homepage widget, all City Page widgets, the Pest Library hub,

  the Pricing page, the site Footer (V76+), blog post layout (V108+),

  Pest Articles hub (V118+), and City Gallery hub (V118+).

  Do NOT add page-specific CSS here except About page, Services hub,

  Homepage widget, Pest Library hub, and Pricing page classes.

  NEVER remove, rename, or change any existing CSS class or property.

  Only add new classes.

  V101 | 2026-05-10 22:00

  Full-bleed extended to .hero-bar pages (Services, Contact, Pricing).

  Added :has(.hero-bar) selectors alongside existing :has(.hero) rules so

  pages using the compact hero-bar header also get GP article padding removed.

  V99 | 2026-05-11 10:00

  faq-phone hover: added .faq-phone:hover rule (color:#fff, text-decoration:none)

  to prevent WP/GP theme overriding link hover color to blue on dark CTA box.

  pmo-dude background changed from #0e2c49 to transparent so hero gradient

  shows through the div, reducing visible box around tech image.

  Hero button phone SVG: size guidance updated (see Homepage-PMO.html V9).

  V90 | 2026-05-10 12:30

  Second pass dead code removal: city-grid/city-card old aliases removed

  (widgets use -v2 variants), faq-btn/faq-answer/faq-cta-box dead aliases

  removed, fb-desc/about-city-chip/sec-flush-bottom removed, peak-notice

  block removed, form-col-label/form-col-sub removed (forms are GHL),

  pl-dim removed, rq-grid-3 removed, entry-content .cite removed,

  species-thumb/species-name-text/sci removed, species-cell-text removed,

  minor-pest-axes + sec-list full blocks removed (LBA/Pavement Ant already

  use a different architecture), diy-ok-pill removed, conf-label removed,

  chart-img-sm/chart-stat-rail/chart-caption/pull-stat-muted/diagram-fig-sm

  removed, collapsed risk axis color variants removed.

  V89 | 2026-05-10 12:00

  Deep CSS audit: cross-referenced all 907 CSS classes against all 57

  widget HTML files. Removed all dead code confirmed unused in any widget:

  preview HTML nav chrome (topbar/nav/hamburger/mobile-menu),

  dev-label and dev-block sections, mobile-cta-bar block (PL pages use

  msc- prefix), reviews/picture placeholder blocks, all HTML form field

  classes (forms are GHL iframes - ff, ff-row, form-btn, form-note etc.),

  lform-title/sub, old About page hero classes (about-hero-inner/sub/ctas,

  about-trust-bar, trust-pill, bio-conf-badge), old CP-specific classes

  (cp-cta-banner, cp-faq-*, cp-svc-*, cp-btn-*), old outbound-links /

  related-resources section, old diy-fail list architecture (diy-fail,

  diy-fail-intro, diy-fail-subhead, diy-fail-list - widgets now use

  diy-fail-card/grid/head pattern), old treatment-grid/treatment-card

  (renamed to treatment-protocol-grid), egg-cycle-box/ec-* (old

  cockroach pattern), footer-tagline/footer-top-strip neutralize rules,

  img-pending placeholder, reviews-footer-note.

  btn-white-outline kept (used in About widget).

  V88 | 2026-05-10 10:54

  CSS audit: Elementor is fully removed from the site. Three dead

  selector blocks removed: V9 Elementor structural overrides

  (.elementor-section, .elementor-container, .elementor-column,

  .elementor-column-wrap), V58 Flexbox Container overrides (.e-con,

  .e-con-inner), and V60 header/footer e-con fix. Footer H4 margin

  rule re-scoped from .elementor-location-footer to bare footer.footer.

  Comment references to Elementor widget filenames updated.

  guides/Guide-ElementorJSON-PMO.md deleted (Elementor gone).

  V87 | 2026-05-10 10:21

  Phone icon nudge increased: .ico svg margin-top 2px -> 4px,

  .msc-ico svg margin-top 1px -> 3px. Icon was still sitting too high

  relative to button text vertical center.

  V86 | 2026-05-10 10:17

  Full-bleed for PL species pages: .grid-container, #primary, .content-area

  expanded to 100vw on pages containing .bc-wrap. Dark sections (hero,

  breadcrumb, risk banners, bottom CTA) now reach browser edges on desktop

  and mobile. Inner .wrap handles 1100px content constraint per section.

  SVG phone icon alignment: switched .ico/.msc-ico from inline-flex to flex

  with align-self:center + margin-top:2px on SVG for true vertical center.

  V85 | 2026-05-10 09:30

  SVG phone icon vertical alignment fix. .ico and .msc-ico use

  display:inline-flex + align-items:center so the SVG sits centered

  on the text baseline in btn-call and mobile sticky CTA.

  V84 | 2026-05-10 08:45

  Hide GP post title on PL species pages (.inside-article:has(.bc-wrap) .entry-header).

  The hero section serves as the page title - GP's auto-rendered .entry-title

  was appearing above the dark breadcrumb section as a redundant float.

  V83 | May 2026

  Non-Elementor architecture retrofit. All CSS that was scoped under

  .elementor-widget-html is now scoped under .entry-content, which is

  the GeneratePress post content wrapper when Elementor is not present.

  Removed the Elementor widget structural reset block (width/padding/margin

  overrides on .elementor-widget-container) - not needed without Elementor.

  Added .inside-article:has(.bc-wrap) { padding: 0 !important; } so PL

  species pages (identified by .bc-wrap breadcrumb) can render full-bleed

  dark sections (hero, risk banners, bottom CTA) edge-to-edge without GP

  article padding fighting them. Each section controls its own padding.

  V82 | May 2026

  Footer column alignment fix: all 5 column H4 headings now share

  the same top y-coordinate at desktop width. Brand column content

  (NAP, hours, social icons) is taller than the 4 link columns,

  creating an optical impression of misalignment even though the

  H4 tops align. Fix: footer-grid switches from align-items:start

  to align-items:stretch so all 5 columns fill the same height,

  then each footer-col uses display:flex / flex-direction:column

  so the H4 stays at the very top of every column regardless of

  content height.

  Also: footer V76-V81 addition blocks consolidated into one clean

  block. All redundant override layers removed. Settled rules only.

  Header comment trimmed to last 3 versions.

  V81 | May 2026

  Footer grid ratio fix: brand column reduced from 2fr to 1.4fr

  so the 4 link columns get more horizontal room. align-items:start

  added so all 5 columns top-align. H4 line-height and margin

  normalized across all 5 columns.

  V80 | May 2026

  Footer V5 polish: Yelp icon normalized to match other socials

  (white-ish letter Y, no special red). .footer-social-letter class

  added for letter-form glyphs. .footer-bom-pill SVG icon spacing

  rule added. Brand column tagline display:none defense-in-depth.

=============================================================

*/

/* ── DESIGN TOKENS ─────────────────────────────────────────

   Single source of truth for all brand colors and values.

   Change one value here and it updates everywhere.

──────────────────────────────────────────────────────────── */

:root {

  --blue:       #1f78d1;

  --blue-d:     #1d6a8a;

  --blue-l:     #4FA8CC;

  --blue-pale:  #E0EAF2;

  --navy:       #0D2137;

  --yellow:     #F5A623;

  --yellow-d:   #D4861A;

  --text:       #1A2A3A;

  --muted:      #5A7A8A;

  --border:     #C8DDE8;

}

/* ── BASE RESET ────────────────────────────────────────────

   Applied globally.

──────────────────────────────────────────────────────────── */

*, *::before, *::after { box-sizing: border-box; }

html { scroll-behavior: smooth; }

img { max-width: 100%; height: auto; display: block; }

a { text-decoration: none; color: inherit; }

/* ── LAYOUT ────────────────────────────────────────────────*/

.wrap { max-width: 1140px; margin: 0 auto; padding: 0 20px; }

/* ── TYPOGRAPHY ────────────────────────────────────────────*/

/* ── PAGE TITLE BAR SUBTITLE ────────────────────────────────── */

/* Muted subtitle line below H1 in .page-title-bar sections     */

/* ── SEC-H2-CENTER (base class) ─────────────────────────────── */

/* ── SEC MAP CAPTION ────────────────────────────────────────── */

/* Centered muted paragraph above map embeds in sec-navy blocks  */

/* ── BUTTONS ───────────────────────────────────────────────*/

.btn {

  display: inline-flex; align-items: center; justify-content: center; gap: 8px;

  padding: 14px 26px; border-radius: 8px; font-weight: 700; font-size: 15px;

  transition: all .2s; cursor: pointer; border: none;

  font-family: "Plus Jakarta Sans", sans-serif;

  line-height: 1; white-space: nowrap; min-height: 50px;

}

@media(max-width:480px) { .btn { white-space: normal; text-align: center; line-height: 1.3; } }

/* ── HERO ───────────────────────────────────────────────────*/

.hero { background: linear-gradient(160deg, var(--navy) 0%, #0e2d4a 60%, #0a2035 100%); padding: 52px 20px 48px; position: relative; overflow: hidden; }

.hero::after { content: ""; position: absolute; top: -100px; right: -100px; width: 500px; height: 500px; background: radial-gradient(circle, rgba(31,120,209,.14) 0%, transparent 65%); pointer-events: none; }

.hero h1 { font-family: "Bebas Neue", sans-serif; font-size: clamp(38px,7vw,60px); line-height: .95; letter-spacing: .5px; color: #fff; margin-bottom: 16px; }

.hero h1 em { color: var(--yellow); font-style: normal; }

/* ── TRUST BAR ──────────────────────────────────────────────*/

/* ── PAGE SECTIONS ──────────────────────────────────────────*/

.sec      { padding: 56px 0; }

/* ── BREADCRUMB ─────────────────────────────────────────────*/

.aka { font-size: 11px; color: var(--blue); font-style: italic; margin-bottom: 6px; }

/* ── STAT RAIL ──────────────────────────────────────────────*/

@keyframes blink { 0%,100% { opacity:1; transform:scale(1); } 50% { opacity:.5; transform:scale(.8); } }

/* ── CTA BANNER (Seasonal / Urgency) ───────────────────────*/

/* Scoped override - beats base .entry-content h2 color:var(--text)!important

   Specificity (0,2,1) with !important wins over (0,1,1) with !important on the reset rule.

   Also restores the larger CTA font-size that sec-h2-white would reduce. */

/* ── ALL SERVICES GRID ──────────────────────────────────────*/

/* ── FAQ ────────────────────────────────────────────────────*/

/* GP full-bleed: PMO-deployed pages use .hero or .hero-bar at the top.

   Remove .inside-article padding so dark sections can bleed edge-to-edge.

   Each section controls its own horizontal padding. */

.inside-article:has(.hero), .inside-article:has(.hero-bar) { padding: 0 !important; }

/* Hide GP page title on all PMO-deployed pages */

.inside-article:has(.hero) .entry-header, .inside-article:has(.hero-bar) .entry-header { display: none; }

/* Full-bleed: expand GP layout containers to viewport width on all PMO-deployed pages.

   Inner .wrap class constrains content per section. */

.grid-container:has(.hero), .grid-container:has(.hero-bar) { max-width: 100% !important; padding-left: 0 !important; padding-right: 0 !important; }

#primary:has(.hero), .content-area:has(.hero), #primary:has(.hero-bar), .content-area:has(.hero-bar) { width: 100% !important; max-width: 100% !important; padding: 0 !important; }

/* Hero grid */

.hero { width: 100%; }

/* All services grid */

/* Two-col prose */

/* Hero CTA row */

/* RID grid */

/* FAQ layout */

/* Stat rail */

/* About page grids */

/* Local knowledge grid (homepage) */

/* Service area two-column layout (city pages) */

/* ══════════════════════════════════════════════════════════════

   NEW IN V35: ALL INLINE STYLES ELIMINATED FROM WIDGET FILES

   ══════════════════════════════════════════════════════════════ */

/* ── ENTRY CONTENT H2 BASE RESET ──────────────────────────── */

.entry-content h2 {

  font-family: "Bebas Neue", sans-serif !important;

  font-size: clamp(28px,4.5vw,42px) !important;

  letter-spacing: .5px !important;

  line-height: 1.1 !important;

  color: var(--text) !important;

  margin-bottom: 20px;

}

/* ── SECTION HEADINGS ──────────────────────────────────────── */

/* ── WRAP WIDTH MODIFIERS ───────────────────────────────────── */

/* ── SECTION CONTENT ───────────────────────────────────────── */

/* ── EYEBROW MODIFIERS ─────────────────────────────────────── */

/* ── SECTION MODIFIERS ─────────────────────────────────────── */

/* ── ADDITIONAL V35 CLASSES ─────────────────────────────────── */

/* ── BUTTON UTILITIES ───────────────────────────────────────── */

/* ══════════════════════════════════════════════════════════════

   V37: SERVICES HUB PAGE CLASSES

   ══════════════════════════════════════════════════════════════ */

/* ── SERVICES HUB: PAGE TITLE BAR ──────────────────────────── */

/* ── SERVICES HUB: SERVICE CARD GRID ───────────────────────── */

/* ── SERVICES HUB: INDIVIDUAL SERVICE CARD ─────────────────── */

/* ── SERVICES HUB: CARD ICON CIRCLE ────────────────────────── */

/* ── SERVICES HUB: CARD TEXT LAYERS ────────────────────────── */

/* ── OUTLINE PILL (species / descriptor tags) ───────────────── */

.pill {

  display: inline-block;

  font-size: 11px;

  background: transparent;

  color: var(--muted);

  font-weight: 600;

  padding: 3px 9px;

  border-radius: 20px;

  border: 1.5px solid var(--border);

}

/* ── DEVICE-SPECIFIC CALL BUTTON TEXT ──────────────────────── */

/* ── CITY CHIP NAVIGATION GRID ──────────────────────────────── */

/* ── CITY PAGE SECTION BACKGROUNDS ─────────────────────────── */

.sec { padding: 72px 0; }

@media(max-width:600px) { .sec { padding: 52px 0; }  }

/* ── SERVICE AREA CARD (Section 10) ────────────────────────── */

/* ── AREA MAP WRAPPER (inside .area-two-col) ─────────────────── */

/* ── PROSE LINK COLOR (city page pest sections) ─────────────── */

.sec p a, .sec-light p a, .reviews-section p a {

  color: var(--blue);

  font-weight: 600;

  text-decoration: none;

}

/* ── REVIEW CARD BLOCKQUOTE LINE HEIGHT ─────────────────────── */

/* ── MOBILE LINK SIZE FIX ───────────────────────────────────── */

/* ══════════════════════════════════════════════════════════════

   V47: SERVICE AREAS HUB CITY CARDS

   ══════════════════════════════════════════════════════════════ */

/* ── CITY HUB CARD GRID ─────────────────────────────────────── */

/* ── CITY HUB CARD ──────────────────────────────────────────── */

/* ── CITY HUB CARD TEXT LAYERS ──────────────────────────────── */

/* ── CITY HUB CARD BUTTON ───────────────────────────────────── */

/* Grid display override for city-hub-grid */

/* Display override */

/* ── COMMERCIAL PLANS SECTION ───────────────────────────────── */

/* 2-column plan grid */

/* Individual plan card */

/* TOP 4 FEATURED CARDS */

/* STAT RAIL COLOR VARIANTS */

/* THREAT LEGEND */

/* CATEGORY BLOCK */

/* SPECIES CARD GRID */

/* SPECIES CARD */

/* THREAT DOTS */

/* CALENDAR DEVICE */

/* FAQ SIDEBAR SERVICE LIST (Pest Library) */

/* DISPLAY OVERRIDES FOR PEST LIBRARY */

/* ── V57 CORRECTIONS (April 18, 2026) ──────────────────────────

   Four issues found after widget deployment. All fixed here.

   1. stat-cell was missing (widget uses stat-cell, base uses stat-tile)

   2. pl-filter-btn text color explicit to survive theme resets

   3. pl-cat-intro link color explicit to survive theme resets

   4. pl-cat-svc font size explicit to survive theme resets

   ────────────────────────────────────────────────────────────── */

/* Fix 1: stat-cell alias (Pest Library hub uses stat-cell, base uses stat-tile) */

/* Fix 2: pl-filter-btn explicit styling to survive theme resets */

/* Fix 3: pl-cat-intro link color explicit to survive theme resets */

/* Fix 4: pl-cat-svc explicit sizing to survive theme resets */

/* Fix 5: pl-filter-bar nowrap display override */

/* =============================================================

   PRICING PAGE CLASSES — V58 ADDITIONS

   All classes below are new and pricing-page-specific.

   No existing classes were modified.

   ============================================================= */

/* TEXT UTILITIES */

/* WHITE OUTLINE BUTTON */

/* MOSQUITO ADD-ON */

/* REVIEWS GRID — 4 COLUMN (top section) */

/* COMMERCIAL PLANS */

/* ESTIMATE SECTION */

/* PRICING PAGE SECTION OVERRIDES */

/* HERO BAR — PRICING PAGE */

/* BOM PILL — PRICING PAGE VARIANT */

.bom-pill { display: flex; align-items: center; gap: 10px; background: rgba(245,166,35,.1); border: 1px solid rgba(245,166,35,.28); border-radius: 10px; padding: 10px 14px; flex-shrink: 0; }

.bom-pill img, .bom-pill-img { width: 44px; height: 44px; border-radius: 6px; object-fit: contain; }

/* COMMERCIAL PLAN SECTION */

/* Commercial cards: freq pill wraps to next line when title is long */

/* Reviews note: clean centered link, no URL text wrapping */

/* Estimate anchor: move id to form wrapper so button scrolls past cards */

/* ── PRICING PAGE MOBILE FIXES — V58 PATCH 2 ──────────────────

   Reduces padding and fixes layout on small screens.

   Addresses: plan tile clipping, section gap, billing note,

   calendar column width, one-time services spacing.

────────────────────────────────────────────────────────────── */

/* Reduce section vertical padding on mobile */

/* Gap between reviews and plans: tighten bottom of reviews section */

/* Plan tabs: shrink tiles to fit 3 on narrow mobile */

/* Tiles: shorter pills fit on one line without clipping */

/* Mobile: slightly narrower pest column */

/* ── PRICING PAGE — V58 PATCH 6: Calendar legend top + padding ─ */

/* Legend above table — remove border-top, add bottom margin */

/* =============================================================

   GLOBAL CSS V60 ADDITIONS

   Paste this block at the bottom of the existing V58 CSS in WP Code.

   Then update the version header comment at the top from V58 to V59.

   Delete the separate PL-Species-CSS-V1-PMO.css snippet once installed.

   V60 | April 22, 2026

   Added all Pest Library species page classes. Scoped under

   .entry-content to prevent conflicts with existing classes

   (cal-grid, local-grid, sec-h2, faq-list, btn-call). Mobile sticky

   CTA is unscoped because position:fixed requires global scope.

   Image URL convention locked: /wp-content/uploads/YYYY/MM/[slug]-hero.webp

   | [slug]-mugshot.webp | [slug]-annotated.webp (WordPress year/month default).

============================================================= */

/* ── PL SPECIES: BREADCRUMB ──────────────────────────────── */

/* ── PL SPECIES: HERO ────────────────────────────────────── */

.entry-content:has(.bc-wrap) .hero:before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: linear-gradient(90deg, #F5A623 0%, #C0392B 100%); }

/* ── PL SPECIES: LAYOUT UTILITIES ────────────────────────── */

.entry-content .cap { font-size: 12px; color: #7a8a9a; font-style: italic; margin-top: 8px; line-height: 1.5; }

/* ── PL SPECIES: MUG SHOT ────────────────────────────────── */

/* ── PL SPECIES: PAIN METER / RISK ASSESSMENT ────────────── */

.entry-content .pain-legend-scale span:before { content: ""; display: inline-block; width: 11px; height: 11px; border-radius: 50%; }

.entry-content .pain-legend-scale .lg-low:before  { background: #F9E79F; }

.entry-content .pain-legend-scale .lg-med:before  { background: #F5A623; }

.entry-content .pain-legend-scale .lg-high:before { background: #C0392B; }

/* ── PL SPECIES: CALENDAR ─────────────────────────────────── */

/* Override Global CSS .cal-grid (2-col) for the species 12-col monthly strip */

/* ── PL SPECIES: IDENTIFICATION ───────────────────────────── */

.entry-content .dead-giveaways li:before { content: ""; position: absolute; left: 0; top: 14px; width: 10px; height: 10px; border: 2px solid #1f78d1; border-radius: 50%; }

/* ── PL SPECIES: CONFUSION MATRIX ────────────────────────── */

.entry-content .confusion-table tr:nth-child(odd) td { background: #F8FBFD; }

@media(max-width:768px) {

  .entry-content .confusion-table tr:nth-child(odd)  { background: #F8FBFD !important; }

  .entry-content .confusion-table tr:nth-child(even) { background: #fff !important; }

  .entry-content .confusion-table tr:nth-child(odd) td { background: transparent; }

  .entry-content .confusion-table td[data-label]:before { content: attr(data-label); display: block; font-size: 9px; font-weight: 800; color: #1f78d1; letter-spacing: .08em; margin-bottom: 4px; }

}

/* ── PL SPECIES: RISK GROUP BANNERS ─────────────────────── */

/* ── PL SPECIES: RISK CONTENT ────────────────────────────── */

/* ── PL SPECIES: PMO TRANSLATION ─────────────────────────── */

/* ── PL SPECIES: LOCAL GRID + WHAT WE SEE ───────────────── */

/* Override Global CSS .local-grid (1fr 1fr) for species 1.4fr 1fr */

.entry-content .what-we-see-list li:before { content: "\25B8"; position: absolute; left: 0; color: #F5A623; font-weight: 900; }

/* ── PL SPECIES: COST CALLOUT ────────────────────────────── */

/* ── PL SPECIES: SEVERITY SIGNALS ───────────────────────── */

/* ── PL SPECIES: THINGS YOU SHOULD KNOW ─────────────────── */

/* ── PL SPECIES: DANGER CARD ─────────────────────────────── */

/* ── PL SPECIES: DIY FAIL ────────────────────────────────── */

/* ── PL SPECIES: PREVENTION ──────────────────────────────── */

/* ── PL SPECIES: FAQ ─────────────────────────────────────── */

.entry-content:has(.bc-wrap) .faq-q:after { content: "+"; position: absolute; right: 22px; top: 50%; transform: translateY(-50%); font-size: 22px; color: #1f78d1; font-weight: 400; transition: transform .2s; }

.entry-content:has(.bc-wrap) .faq-q[aria-expanded="true"]:after { content: "\2212"; color: #F5A623; }

/* ── PL SPECIES: RELATED SPECIES GRID ───────────────────── */

/* ── PL SPECIES: BOTTOM CTA ──────────────────────────────── */

/* ── PL SPECIES: JUMP LINKS ──────────────────────────────── */

/* ── PL SPECIES: MOBILE STICKY CALL + TEXT BAR ──────────── */

/* Unscoped: position:fixed requires global scope. Sitewide pattern. */

.mobile-sticky-cta { display: none; }

@media(max-width:768px) {

  .mobile-sticky-cta { display: flex; position: fixed; bottom: 0; left: 0; right: 0; z-index: 1000; box-shadow: 0 -2px 12px rgba(0,0,0,.22); }

  .mobile-sticky-cta a { flex: 1; padding: 14px 12px; text-align: center; font-weight: 900; font-size: 14px; letter-spacing: .06em; text-decoration: none; display: flex; align-items: center; justify-content: center; gap: 8px; }

  .mobile-sticky-cta a:hover { text-decoration: none; }

  body { padding-bottom: 54px; }

}

/* ── PL SPECIES: INLINE LIGHTBOX ─────────────────────────── */

/* Zero dependencies. Triggered by .pl-zoomable on any species image. */

/* =============================================================

   GLOBAL CSS V62 ADDITIONS

   All new classes below. Zero existing classes modified.

   ============================================================= */

/* ── PL SPECIES: AKA BOOKING-SHEET BLOCK ─────────────────────

   Sits between .mugshot-sci and .pain-meter in the mug shot

   section. Styled like a police booking card alias line.

   Gold AKA badge + italic alias names.

   Scoped with :has(.bc-wrap) to prevent bleed into service pages.

────────────────────────────────────────────────────────────── */

/* ── PL SPECIES: CONFUSION MATRIX AKA + SCI NAME CLASSES ─────

   .cm-aka             -- alias line; amber, bold, shown ABOVE sci name

   .cm-sci             -- scientific name; grey, smaller, secondary

   .self-badge         -- "This species" identity badge

   .confusion-callout  -- summary paragraph below the confusion table

────────────────────────────────────────────────────────────── */

/* The soft card, no one-sided gold line (Sam 10-17-2026: "they make the page lok cheap"; Library run 78). */

/* ── MUGSHOT: CIRCULAR IMAGE FRAME ───────────────────────────

   Clips white background corners of AI-generated mugshot images.

────────────────────────────────────────────────────────────── */

/* ── CONFUSION MATRIX: LARGE CIRCULAR SPECIES IMAGE ──────────

   Replaces the small 44px .species-thumb for the confusion matrix

   on species pages. Circular, clickable (cursor: zoom-in via

   .pl-zoomable), centered above species name.

────────────────────────────────────────────────────────────── */

/* Vertical stacked layout: image centered above name/AKA/sci */

/* Wider first column for confusion matrix on species pages */

/* ============================================================

   V64 FIXES - PEST LIBRARY SPECIES PAGES (.bc-wrap scoped)

   ============================================================ */

/* -- FIX D: Self-badge above ant image (all viewports) --

   td:first-child becomes position:relative so the badge can

   be anchored absolutely to the top of the cell.

   :has(.self-badge) scopes extra padding-top to the self-row

   only - comparison rows are unaffected.

   Desktop: badge centered above the image in the narrow column.

   Mobile breakpoint overrides left/top values below. */

/* Self-row only: push content down to make room for badge above */

/* Badge: pulled out of flow, anchored top-center (desktop) */

/* ============================================================

   V64 MOBILE FIXES (max-width:768px)

   Breakpoint matches existing confusion-table stacked-card

   breakpoint already in this file.

   ============================================================ */

/* ============================================================

   END V64 FIXES

   ============================================================ */

/* ============================================================

   V65 FIXES - PEST LIBRARY SPECIES PAGES (.bc-wrap scoped)

   ============================================================ */

/* -- V65 Fix 1: treatment-eyebrow centering --

   V63 centered .eyebrow and .risk-sub-eyebrow but did not add

   text-align:center to .treatment-eyebrow (the gold branded label

   above H3s in Difficulty 2/3+ sections). Left-aligned by default. */

/* -- V65 Fix 2: risk-sub section breathing room --

   The existing rule sets margin-bottom:42px on .risk-sub.

   This gives only 42px between Treatment, DIY Prevention, DIY

   Pitfalls, FAQ, and Reality Check sections. Too tight.

   Override with 64px bottom margin inside .bc-wrap scope.

   Add padding-top:24px and a subtle border-top to any risk-sub

   that follows another risk-sub, creating a clear visual separator

   between consecutive sub-sections within the same risk group. */

/* ============================================================

   END V65 FIXES

   ============================================================ */

/* =============================================================

   V66 FIX 1: DIY FAIL CARD-GRID PATTERN

   Used by PharaohAnt, AcrobatAnt, TawnyCrazyAnt (V1) and future pages

   ============================================================= */

/* "Works If Done Correctly" / "Works If Applied Correctly" / "Required" - green pill */

/* "Required" / "Zero Effect" pills */

/* Mobile: stack cards single column */

/* =============================================================

   V66 FIX 2: MUGSHOT STAT MOBILE TEXT OVERFLOW

   Prevents text clipping in 2-col mugshot stats grid on narrow screens

   ============================================================= */

/* =============================================================

   V67 FIX: REALITY CHECK SECTION CLASSES

   Used by PharaohAnt V4, TawnyCrazyAnt V4 (Persistence 3/3 pages)

   ============================================================= */

/*

=============================================================

  V68 ADDITIONS: Treatment Protocol Grid and Versus Card

  Per PI V128 Section 28 visual structure standard.

  First used: PL-GermanCockroach-V3 (April 26, 2026).

=============================================================

*/

/*

=============================================================

  V68 ADDITIONS: Inline style replacements (per Sam zero-inline rule)

  Replaces inline style attributes inherited from Fire Ant V8 era.

  PL widgets going forward use these classes instead of inline style.

=============================================================

*/

/*

=============================================================

  V68 ADDITION: Inline external link visibility

  The base `a { text-decoration: none; color: inherit; }` rule from V67

  makes inline external links invisible in body copy. The .ext-link class

  restores visibility for inline citations on PL pages without changing

  the global default (which is needed for nav, button, and confusion

  matrix species links).

=============================================================

*/

/*

=============================================================

  V71 ADDITIONS

=============================================================

*/

/* ── DIY BAND: full-width section wrapper ─────────────────

   Separates DIY Prevention + DIY Can Fail from the

   Difficulty to Treat risk group. Gets own #diy anchor.

   .diy-band-header: darker strip (#EAE5DC) at the top of the

     section, full-width, left-aligned, mirrors risk banner rhythm.

   .diy-band body: warm off-white (#F7F4EF), distinct from:

     - risk-content.treat background (#F0F4F8, cool slate)

     - sec-pale / FAQ background (#E0EAF2, cool blue; was #EBF5FB until 2026-08-02)

   The existing prevention-grid and diy-fail-grid classes are

   reused unchanged inside .diy-band-inner.

──────────────────────────────────────────────────────────── */

/* Header strip: darker tan, full-width, left-aligned */

/* Body area: content inside the warm off-white zone */

/* DIY Prevention + Can Fail sub-section spacing */

/* ── AKA LEAD EYEBROW: top spacing fix ───────────────────

   The "Also Known As" eyebrow in the identification section

   needs clearance from the content block above it.

   Apply .eyebrow.aka-lead to that specific eyebrow element.

──────────────────────────────────────────────────────────── */

/*

=============================================================

  V71 ADDITIONAL FIXES (same version, appended)

=============================================================

*/

/* Hero H1 word-break: prevents mobile text overflow/reflow

   on long H1 strings with pipe characters */

/* Bottom stops text + CTA paragraph: force left-align on mobile.

   Parent .bottom-stops switches to text-align:center at 600px;

   .bottom-cta has text-align:center globally. Both cascade down

   and center the paragraph text on narrow viewports. */

/* DIY band header: full-bleed background strip like risk banners,

   with inner text constrained to 1100px centered — matching

   .risk-banner-wrap so the left edge aligns with risk banner text.

   The padding on .diy-band-header provides gutters on narrow viewports. */

/* ── BIOLOGY FACT BOXES ──────────────────────────────────────

   Used in Persistence biology section to break dense paragraphs

   into scannable fact cards. Each .bio-fact-grid holds

   .bio-fact-card divs. CONFIRMED label moves to a small badge

   inside each card rather than inline in prose.

──────────────────────────────────────────────────────────── */

/* All icons in svc-link-grid -- 32px base size */

/* 5-column grid at desktop. align-items:stretch forces equal heights. */

/* Mobile bottom row */

/* ── BLOG ARTICLE LAYOUT ─────────────────────────────────────
   V114 | 2026-05-14
   Used in all blog posts. Wrap post body content in .blog-article.
   GP renders H1 title and entry-meta outside .blog-article.
   H2/H3 use !important to override .entry-content h2 Bebas Neue rule.
──────────────────────────────────────────────────────────────── */

/* Single post title - suppressed site-wide via PHP; blog HTML provides its own H1 */

/* Hide GP auto-rendered date/author meta - blog-byline handles it */

/* Featured image - hidden; blog HTML provides the image with full layout control */

/* Hide GP prev/next post navigation and footer category meta */

/* ---- CITY GALLERY HUB ---- */

/* City gallery lightbox (V123) */

/* =============================================================

   V125 | 2026-05-15 14:00 CST

   PICTURE POST LAYOUT (Location-Gallery single posts, cat 480)
   Classes injected by picture-post-image PHP snippet.

   ============================================================= */

@keyframes pmo-pulse-dot {
  0%, 100% { box-shadow: 0 0 0 0 rgba(74,222,128,0.65); }
  50%       { box-shadow: 0 0 0 5px rgba(74,222,128,0); }
}

/* Mobile: hide ribbon entirely */

