# ACE Cooling, Heating, Plumbing & Electrical, brand spec

- **Source:** https://acehomeaz.com
- **Captured:** 2026-07-24
- **Stack:** WordPress · Hello Elementor theme + `hello-theme-child-master` child · Elementor Pro + Ultimate Addons (UAEL) + FluentForms
- **Slug:** `ace-home` · **Tags:** `hvac plumbing electrical trades local`
- **Geography:** two regions, never collapsed: Phoenix and Southern Arizona `(602) 536-4475`, Northern Arizona `(928) 851-8704`

---

## Phase 2 correction, the entire token table was wrong

The Phase 1 inventory named **`#ff6900` the brand accent, "62 rendered uses"**. It is not brand and it is not rendered. `#ff6900` is WordPress core's `--wp--preset--color--luminous-vivid-orange`, declared once per page by Gutenberg alongside the rest of the default editor palette. A census of every visible element on the live homepage returns **zero** elements carrying it in `background-color`, `color` or `border-color`.

The Phase 1 pass had correctly identified and excluded the "31× each" Gutenberg cohort, but kept `#ff6900`, itself a member of that same cohort. The count it read was declarations, not renders.

The cause is structural and worth carrying to the rest of the batch: **the crawler captured inline CSS only.** The real palette lives in the Elementor kit CSS (`custom-frontend.min.css` / `post-3712.css`), which was never fetched. Grepping the saved crawl HTML confirms it: `#f0f2f3`, `#155d98` and `#2fa2da` appear **zero** times in the saved markup, and `Alfa Slab` appears zero times despite 40 elements rendering in it. `#ee292a` appears 40× and `#0d1f43` 6×, so the two dominant brand colours were sitting in the crawl the whole time and the ranking simply buried them.

Everything in this spec is measured from rendered computed styles on the live DOM.

### Corrected tokens

| Token | Value | Evidence |
|---|---|---|
| `--accent` | `#EE292A` | 1,325,837 px² of painted homepage area; every primary CTA |
| `--accent-deep` | `#8F0405` | the dark fifth of the signature button gradient |
| `--band-dark` | `#0D1F43` | 1,325,625 px²; also the colour of 167 of the page's text leaves |
| `--accent-blue` | `#155D98` | reviews band, stat numerals |
| `--accent-sky` | `#2FA2DA` | the single heading accent, secondary button's bright stop |
| `--paper-alt` | `#F0F2F3` | 2,106,250 px²; the alternating ground |
| `--ink` | `#333333` | body copy |
| radius | `3px` buttons/inputs · `40px` capsule | radius census: `0px` ×57, `50%` ×7, `40px` ×6, `0 0 40px 40px` ×6, `8px` ×4 |
| shadow | `0 0 5px rgba(0,0,0,.2)` | the site's only box-shadow, used once |
| gap | `24px` | dominant grid gap, 93 uses |

**Dead, do not carry:** `#ff6900` and the full WordPress/Gutenberg preset palette (`#cf2e2e #fcb900 #7bdcb5 #00d084 #8ed1fc #0693e3 #9b51e0 #f78da7 #abb8c3 #32373c`). Also `#cc3366`, which computes as the `color` of 122 anchors but paints nothing because every anchor's text sits in a `<span>` that overrides it.

---

## Signature shapes

The Phase 1 audit reported **"NONE, no clip-path / mask / filter / backdrop-filter / mix-blend / border-image / hard-stop gradient anywhere. Flat Elementor execution."** That is wrong on the last item, and it missed a radius composition entirely. Both shapes below live in the un-fetched kit CSS.

**1. The two-tone hard stop.** Every CTA is `linear-gradient(90deg, #8F0405 20%, #EE292A 20%)`, both colour stops at 20%, so the transition is a razor edge rather than a blend. It reads as a darker flag panel welded to the button's left fifth. A blue livery of the identical shape (`#155D98 20%, #2FA2DA 20%`) runs the "Find my location" CTA and appears nowhere else.

> One source authoring slip: the Submit button ships `30% / 20%`, crossing its stops. The kit normalises to `20% / 20%`.

**2. The welded capsule.** The service card is a 40px-radius white capsule with the CTA fused into its bottom curve at `border-radius: 0 0 40px 40px`, full-bleed to the card's edges, no gap and no shadow. The card head carries a repeating star motif (`stars-head.png`).

**3. The band rhythm.** Grounds alternate hard and often, with no transitions: white → red → photo → navy → white → `#F0F2F3` → navy → blue → red → navy.

**4. The single heading accent.** Exactly one coloured word exists inside a heading anywhere on the site: "Home", in `#2FA2DA`, closing `Elevated Services For Your Home`. Mirrored verbatim as `.ace-hl` and registered in the browser-qc `ACCENT_ALLOW` list. Every other heading is single-colour. **If the standing no-coloured-words-in-headings rule should win over source fidelity here, flattening `.ace-hl` to `var(--ink-head)` is a one-line change and removes the exception.**

---

## Type

| Role | Family | Source | Kit |
|---|---|---|---|
| Display / h1 | Alfa Slab One 400, uppercase | 23px | `clamp(2.05rem, 2.9vw + 1.05rem, 3.375rem)` |
| h2 | Alfa Slab One 400, uppercase | 24px | `clamp(1.6rem, 1.5vw + 1.05rem, 2.375rem)` |
| h3 | Alfa Slab One 400, uppercase | 18px | `clamp(1.25rem, .7vw + 1rem, 1.625rem)` |
| Stat numeral | Alfa Slab One 400, `#155D98` | 50px | 50px |
| Button label | Alfa Slab One 400, uppercase | 20px | 16px |
| Body / UI | Figtree 400–800 | 16px / 1.65 | same |

**Montserrat is dropped.** It is enqueued via the theme's self-hosted google-fonts CSS but a font census of every text-bearing element returns Figtree ×273, Alfa Slab One ×40, `-apple-system` ×3, Montserrat paints nothing.

**The one deliberate elevation.** The source ramp is collapsed: h1 23px against h2 24px, so h2 is the *larger* of the two and hierarchy is carried by band colour and position instead of size. That flatness is genuinely characteristic, so the kit keeps the ramp shallow rather than imposing a conventional scale, but scales it to a usable desktop size instead of shipping 23px headings. Structure and voice are transcribed verbatim; the scale is ours, per the transcribe-don't-clone rule for a source with no craft to preserve.

Both faces are free Google fonts and are the same families the source self-hosts, so no substitution and no metric re-tuning.

---

## Voice anchors (verbatim)

- "Cooling, Heating, Plumbing, Electrical, & More", homepage H1
- "Elevated Services For Your Home", homepage H2, with "Home" in sky blue
- "Piloting First-Class Comfort Since '94", offers / about tagline
- "Reporting For Repairs! Flying to Our Next Fix!", areas-served banner
- "Delivering Premium HVAC, Plumbing & Electric Solutions", home-north H1
- "Arlington's Premier Home Service Experts", city-landing H1
- "Our Promise to You is to Perform the Correct AC Repair at an Honest Price", city×service H2, templated by trade
- "Contact us today for a FREE estimate", the persistent CTA line
- "We're not happy until you're happy."
- "we're not just another service company; we're your neighbors"
- "ACE Protection Club Membership"
- "We've got a new look!", footer, following a recent rebrand
- "schedule today!", the primary CTA label, lowercase in the source

> **Casing note.** The Phase 1 audit flagged "Elevated Services For Your Home" as over-capitalised and asked for lowercase "for". Both casings exist on the site: the homepage and home-north render "**For**", the blog template's subtitle renders "for". The kit uses the homepage casing, which is the one the H2 pattern comes from.

## Key facts (verbatim)

- Founded **1994**; "30+ Years in Business"; veteran-operated
- Stats: **50+** Team Members · **1,700+** Projects · **40+** Cities Served
- Licences: **HVAC - ROC 343860** · **Plumbing – ROC 343866** · **Electrical - ROC 347461**
- Awards claimed: 2025 Angi Super Service Award, A+ BBB rating
- Five branches: Phoenix, Sedona, Prescott, Flagstaff, Sun City
- **Residential only.** The FAQ answers "Do you service commercial properties?" with a flat "No."
- Email `info@acehomeaz.com`; "Open 24 hrs"

---

## Pattern inventory, 36 patterns

Every pattern in `sections.html` is transcribed from a live section and carries its source URL as an HTML comment. The catalog is larger than the Phase 1 audit's final figure of 24 because that number folded several distinct page grammars into their nearest neighbour by CSS fingerprint; fingerprint identity proves a shared design vocabulary, not a shared section set. Each pattern below is a separately rendered section on the page named.

| # | Pattern | Source |
|---|---|---|
| 01 | utility-bar | `/` |
| 02 | red-cta-strip | `/` |
| 03 | site-nav | `/` |
| 04 | home-hero | `/` |
| 05 | lead-form-band | `/` |
| 06 | value-intro | `/` |
| 07 | stat-counters | `/home-north/` |
| 08 | service-capsule-grid | `/` |
| 09 | cta-band | `/` |
| 10 | why-choose-grid | `/` |
| 11 | region-split | `/` |
| 12 | partner-rail | `/` |
| 13 | find-location-band | `/` |
| 14 | reviews-band | `/` |
| 15 | cities-band | `/` |
| 16 | site-footer | `/` |
| 17 | ada-note | `/` |
| 18 | inner-hero | `/about-us/` |
| 19 | service-rail | `/faqs/` |
| 20 | offer-card | `/areas-served/arlington-az/` |
| 21 | city-intro | `/areas-served/arlington-az/` |
| 22 | city-role-cards | `/areas-served/arlington-az/` |
| 23 | city-trust-band | `/areas-served/arlington-az/` |
| 24 | service-promise | `/areas-served/arlington-az/ac-repair/` |
| 25 | diagnostic-offer | `/areas-served/arlington-az/ac-repair/` |
| 26 | capability-checklist | `/areas-served/arlington-az/ac-repair/` |
| 27 | qa-stack | `/areas-served/arlington-az/ac-repair/` |
| 28 | financing-callout | `/areas-served/arlington-az/ac-repair/` |
| 29 | service-detail-split | `/electrical-services/` |
| 30 | emergency-grid | `/plumbing-services/emergency/` |
| 31 | faq-accordion | `/faqs/` |
| 32 | offers-coupon-grid | `/offers/` |
| 33 | membership-benefits | `/maintenance-plans/` |
| 34 | inspection-checklist | `/21-point-tune-up/` |
| 35 | blog-grid | `/blog/` |
| 36 | campaign-landing | `/signupsite/` |

**The offer card is variable-value by design.** The same component renders "$100 Off + Free Estimate" on city pages, "$49 A/C Repair Diagnostic" on AC-repair pages and "$63 Drain Clear" on the offers page. The promise headline is templated the same way: "Perform the Correct \<service\> at an Honest Price". Neither is hardcoded in the kit.

**Not cataloged, and why.** The generator buying-guide is a custom JS quiz widget rather than a section; the ACE Cares community gallery is a year-grouped stack of image carousels plus a video embed that reduces to the `gallery` component already in `_shared.css`; the blog single article is the standard Elementor theme-post stack with no bespoke section. All three are reachable component-wise from what ships.

---

## Element census reconciliation

Elementor `elementor-widget-` census: 35 roots, all reconciled.

- **Cataloged as sections:** `uael-nav-menu` (03) · `form` + `fluent-form-widget` (05, 36) · `icon-box` (10, 22) · `counter` (07) · `testimonial-carousel` (14) · `image-carousel` (12) · `posts` (35) · `n-accordion` + `accordion` (31) · `icon-list` (19, 21, 26, 34)
- **Folded into patterns or media:** `video`, `shortcode`, `html`
- **Runtime or wrapper primitives:** `container`, `wrap`, `heading`, `image`, `text-editor`, `button`, `icon`, `spacer`, `template`, `global`
- **Editor duplicates (responsive-visibility clones):** `mobile`, `mobile_extra`, `tablet`, `tablet_extra`, `laptop`, `widescreen`
- **JS-omitted:** none; the site is server-rendered

---

## Crawl-scope log

**Sitemap:** 571 unique page URLs across 3 sitemaps, post-sitemap (291), page-sitemap (273), category-sitemap (8).

**Fetched (31):** `/`, `/home-north/`, `/blog/`, `/blog/10-quick-tips-about-air-conditioning-during-phoenix-summers/`, `/areas-served/`, `/areas-served/arlington-az/`, `/areas-served/arlington-az/ac-repair/`, `/electrical-services/`, `/electrical-services/emergency/`, `/hvac-services/`, `/hvac-services/emergency/`, `/plumbing-services/`, `/plumbing-services/emergency/`, `/plumbing-services/trenchless-sewer-repair/`, `/21-point-tune-up/`, `/about-us/`, `/ace-cares/`, `/careers/`, `/contact-us/`, `/faqs/`, `/financing/`, `/generator-buying-guide/`, `/honoring-veterans/`, `/maintenance-plans/`, `/offers/`, `/privacy-policy/`, `/reviews/`, `/signupsite/`, `/terms-conditions/`, `/test-page/`, `/wounded-warrior-project/`

**Skipped (540), with evidence:**

- **~299 `/blog/*` posts**, one template; rep fetched, fingerprint `300135c86b`, plus the `posts` widget grid on the index. Skip holds.
- **~245 `/areas-served/*`**, two templates, both fetched (city landing + city×service), both fingerprint `300135c86b`. The Phase 1 evidence extended the city×service fingerprint across all *service types* by inference from one page (`arlington-az/ac-repair`). The audit independently verified two alternate service types (`avondale-az/electrical-repair`, `buckeye-az/drain-cleaning`) and confirmed the identical template. **Verified across ac/electrical/drain service types**, not merely "differs only by noun".
- **8 `/blog/category/*`**, WP taxonomy archives. **Not fetched and not fingerprinted**; reuse of the blog loop is inferred from WordPress behaviour, not proven. Low risk, recorded as inference.
- **`/test-page/`**, WP editor scratch page, fetched, no unique sections. Noise.

---

## Forbidden

- `#ff6900` and every other WordPress/Gutenberg preset colour, none of them paint anything
- `#cc3366`, computes on 122 anchors, paints on none
- Montserrat, enqueued, renders zero elements
- Pill buttons and any radius above 40px, no such radius exists on the site
- Shadows beyond the single `0 0 5px rgba(0,0,0,.2)`
- Coloured words inside headings other than the documented `.ace-hl`
- Eyebrow/kicker label bars above headings, including the source's own `inner-pre-head.svg`, a pill badge
  reading "24/7 EMERGENCY SERVICE AVAILABLE" that it places above every inner-page h1. Dropped, and the asset
  is not shipped: it is a banned device, and because the copy is baked into the SVG it bypasses the verbatim
  gate entirely. The claim survives verbatim in the capability-checklist pattern instead.
- Collapsing the two regions or the two phone numbers into one
- Commercial-services claims, the source explicitly serves residential only

## Mood keywords

`veteran-operated` · `flag-coloured` · `multi-trade` · `band-driven` · `plain-spoken`

## Library position

The only four-trade home-services system in the library, and the only one built around two geographies with separate phone numbers and separate regional homepages. Against `arizona-roofers` (single trade, white ground, ultra-thin display) it is the loud, saturated, band-driven opposite: heavy slab type at every level, six full-bleed colour bands per page, and a mascot-led identity. Reach for it when a client sells several trades at once, runs more than one service region, or needs a system that can carry a lot of colour without looking accidental.
