4.7 KiB
4.7 KiB
index.html
- [WARN] Cross-page consistency: The inline theme
<script>in the<head>is unminified, whereas it is a minified one-liner in the other 5 pages (line 12). - [WARN] Cross-page consistency: Footer
<p class="disclaimer">text heavily drifts/diverges from the strings used on other pages (line 109). - [WARN] Inline styling: Uses a hardcoded
<div style="display:flex;gap:1.5rem;flex-wrap:wrap;margin-top:var(--base);">instead of a CSS utility class (line 94).
services.html
- [ERROR] Accessibility: Missing semantic headings. Item titles use
<div class="svc__name">inside<article>tags instead of heading elements (line 46). Group titles use<p class="svc-group__title">instead of headings (line 44). - [WARN] Cross-page consistency: Footer disclaimer text drifts from other pages (line 78).
pricing.html
- [ERROR] Accessibility: Missing semantic headings. The rate cards use
<div class="tier__name">instead of<h3>elements (line 37). - [WARN] Cross-page consistency: Footer disclaimer text drifts from other pages (line 107).
calculator.html
- [OK] Accessibility: Form controls are properly labeled, input modes are specified, and
aria-liveis correctly placed on the total output. - [WARN] Cross-page consistency: Footer disclaimer text drifts from other pages (line 90).
about.html
- [ERROR] Accessibility: Missing semantic headings. Similar to the services page, item names inside the
.svc-listare structured as<div class="svc__name">instead of headings (line 51). - [WARN] Cross-page consistency: Footer disclaimer text drifts from other pages (line 81).
contact.html
- [WARN] Inline styling: The main page heading uses heavy inline styles
<h1 id="contact-h" style="...">rather than pulling from the stylesheet (line 39). - [WARN] Cross-page consistency: Footer disclaimer text drifts from other pages (line 80).
styles.css
- [ERROR] House Rules: An em dash (
—) is used in the header comment string block, violating the strict no em dash rule (line 2). - [ERROR] WCAG AA Contrast: The
active nav underlineusesvar(--accent)(orange) on--paper(cream), which fails the 3:1 non-text contrast requirement in light mode (line 348). - [ERROR] WCAG AA Contrast: The
.bigquote::beforequotation mark usesvar(--accent)on--paper, failing the 3:1 ratio for large text in light mode (line 364). - [ERROR] WCAG AA Contrast: The
.office-figure figcaptionusesvar(--ink-3)onvar(--surface). While--ink-3passes on--paper, the darker--surfacebackground causes this to fail the 4.5:1 ratio for small text in light mode (line 386). - [WARN] Responsive risk: The mobile nav
.nav__linksrelies onmax-height: 60vh; overflow: hidden;. On short landscape viewports, overflowed links will clip and become entirely inaccessible because it lacksoverflow-y: auto(line 103). - [OK] House Rules: Verified no side-stripe accent borders (
border-left/border-right) are used on components.
app.js
- [OK] Calculator handoff logic: Cleanly captures
.lnameand.lcoststrings, utilizes.textContentto safely strip nested spans/HTML entities (like×), and successfully targets the contact textarea viasessionStorage. - [INFO] Handoff edge case: The
acg-estimatepayload is only saved when clicking the specific#sendEstimatebutton (line 125). If a user builds an estimate and manually clicks the "Contact" header link, their built estimate is lost.
Prioritized Fix List
- WCAG Contrast Check: In
styles.css, darken--accent(or swap to--accent-ink) for active nav underlines and.bigquotemarks in light mode. Change the.office-figure figcaptiontext color to--ink-2to pass 4.5:1 contrast on--surface. - Semantic Hierarchy: Convert
<div class="svc__name">,<div class="tier__name">, and<p class="svc-group__title">elements to appropriate heading tags (<h3>,<h4>) acrossservices.html,pricing.html, andabout.html. - Mobile Nav Overflow Risk: Add
overflow-y: autoto.nav__linkswithin the@media (max-width: 880px)query instyles.cssto prevent clipping. - Markup Unification: Standardize the varying footer
.disclaimertext into a single unified string across all 6 HTML pages to resolve cross-page drift. Do the same for the<head>theme inline<script>. - CSS Cleanup: Relocate the inline styles from
index.html(line 94) andcontact.html(line 39) into utility or block classes instyles.css. - House Rules: Delete the em dash on line 2 of
styles.css. - Handoff Improvement (Optional): Bind the
sessionStorage.setItemcall to therecalcfunction inapp.jsso the estimate auto-saves, preventing data loss if a user navigates to the contact page manually.