sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-22 11:07:55

Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-22 11:07:55
This commit is contained in:
2026-05-22 11:07:58 -07:00
parent edf51627e1
commit e80c36e6bf
138 changed files with 42055 additions and 1 deletions

View File

@@ -0,0 +1 @@
/// <reference types="astro/client" />

View File

@@ -0,0 +1,54 @@
# Product
## Register
brand
## Users
Mix of Arizona small business owners (frustrated with IT failures, shopping for an MSP,
or delegating the IT vendor search) and office managers tasked with finding IT support.
Visitors arrive with varying urgency, from immediate crisis to early-stage comparison.
All are looking for competence, reliability, and a vendor they can trust without
hand-holding.
## Product Purpose
Arizona Computer Guru is a 20-year Tucson-based MSP serving small and mid-sized Arizona
businesses. The site converts visitors into calls or consultation requests. Success is
520.304.8300 ringing or a scheduled consultation. Secondary goal: establish credibility
for multi-city reach (Tucson, Phoenix, Prescott, Flagstaff).
## Brand Personality
Sharp, confident, modern. A polished MSP that punches above its size. Looks enterprise,
acts local. Voice is direct and expert without being cold. The company that walks in,
sizes up the problem, and handles it without drama.
## Anti-references
- Generic MSP template sites: circuit board stock photos, orange/blue defaults, identical
card grids, rotating hero sliders. The site currently resembles this. Must not.
- Enterprise IT vendor cold/corporate aesthetics: IBM/Dell procurement energy, inhuman
scale, jargon-heavy copy.
- Cheap small-business website builder templates: Wix/Squarespace default energy.
- Aggressive hard-sell layouts: excessive CTA repetition, oversaturated orange,
pushiness that undercuts trust.
## Design Principles
1. Expert confidence, not loud volume. Competence speaks quietly. Authority through
precision and restraint, not aggressive orange saturation.
2. Local anchor, regional scale. 20 years in Arizona. Rooted and real, not a national
franchisor template.
3. Convert through trust, not pressure. The CTA earns its click by making the visitor
feel understood. No countdown timers, no pop-up pressure.
4. Every element earns its place. Arizona businesses are practical. Clear hierarchy, no
decorative friction, information where they expect it.
5. Look like the best IT company in Tucson, not a generic IT company. A visitor should
not mistake this for any other MSP site.
## Accessibility & Inclusion
WCAG AA minimum. Standard contrast and keyboard navigation. Honor prefers-reduced-motion
for all animations.

View File

@@ -0,0 +1,6 @@
import { defineConfig } from 'astro/config';
export default defineConfig({
site: 'https://azcomputerguru.com',
compressHTML: true,
});

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,13 @@
{
"name": "acg-homepage",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "astro dev",
"build": "astro build",
"preview": "astro preview"
},
"dependencies": {
"astro": "^4.15.0"
}
}

View File

@@ -0,0 +1,112 @@
# Session Log — 2026-05-22
## User
- **User:** Mike Swanson (mike)
- **Machine:** DESKTOP-0O8A1RL
- **Role:** admin
- **Session span:** ~13:0017:10 PT
---
## Session Summary
This session continued the `/impeccable craft homepage` workflow for the azcomputerguru.com Astro prototype. The session resumed from a previous context-compacted conversation that had completed the initial craft pass and a harden pass (score 31/40). The user confirmed the scope as "All P1 + P2s" — four specific issues from the most recent critique.
The first pass added testimonials HTML to the page (between the catalog and service-area sections) but did not yet add the corresponding CSS. The session resumed by inserting the full testimonials CSS block immediately before the SERVICE AREA comment block. The CSS defined `.testimonials`, `.testimonials-inner`, `.testimonial-grid`, `.testimonial-item`, `.testimonial-quote`, and `.testimonial-attribution` using the OKLCH token system already in place. Cards use `border-top: 3px solid var(--color-accent)` as the distinguishing element — not a side-stripe (which is banned), and not identical icon+heading cards.
The CTA band was then redesigned from a centered single-column layout to a two-column grid (text + form panel). The HTML was replaced to include a `<div class="cta-text">` left column (heading, subtext, phone link) and a `<div class="cta-form-wrap">` right column containing a `<form>` with three fields: Your name (required), Phone or email (required), and What's going on (textarea with placeholder). The submit button uses white background + brand-color text to invert off the orange band. The full CTA BAND CSS was rewritten to support the two-column grid with `grid-template-columns: 1fr 1.1fr`, the form panel using `oklch(0.22 0.06 30)` (very dark brownish-red) as its background, and dark input fields at `oklch(0.17 0.04 30)`.
The service catalog HTML was restructured from a flat 12-item `<ul>` into three labeled groups using `<div class="catalog-group">` wrappers: Management (5 items), Security (4 items), Support (3 items). The catalog CSS was updated to replace the `auto-fit minmax(320px, 1fr)` grid with a `repeat(3, 1fr)` groups grid. Category labels use the `.catalog-group-label` class: `0.6875rem`, `font-weight: 700`, `letter-spacing: 0.1em`, `text-transform: uppercase`, `color: var(--color-accent)`, with an orange bottom border separator.
A `.sr-only` utility class was added to the reset block (the testimonials section used it for the visually-hidden H2 `id="testimonials-heading"`). The build completed clean with no warnings. Visual inspection in Chrome via `claude-in-chrome` confirmed all sections render correctly. Final re-critique: **33/40**, up from 31/40.
---
## Key Decisions
- **Two-column CTA band over centered band:** The previous critique's P1 called for an inline form. Rather than appending the form below the existing CTA copy (which would make the section read as two separate elements), the layout was redesigned as a split: message left, form right. This makes the form feel integral, not bolted on.
- **Dark form panel color `oklch(0.22 0.06 30)`:** A near-black brownish-red toned toward the brand orange hue. Using a pure dark neutral would have looked disconnected on the orange background. The slight chroma shift (0.06) toward the brand hue makes the panel feel embedded rather than dropped in.
- **Management / Security / Support groupings:** These three categories cover the 12 services without overlap. "Infrastructure" was considered but "Management" was preferred because it matches the primary product name (Managed IT Service). "Support" deliberately includes Web Design & SEO, framing it as a service complement rather than a separate business line.
- **Testimonial card top border, not full card border:** The `border-top: 3px solid var(--color-accent)` treatment avoids the side-stripe ban and keeps the card structure minimal. The `background: var(--color-bg-alt)` provides just enough lift from the white section background to define the card without a heavy border all around.
- **Form action `/contact`, method GET:** Static Astro site with no server-side handler. GET was chosen over POST so the browser doesn't warn on back-navigation. In production, this would be replaced with a form processor (Formspree, a PHP endpoint on IX Web Hosting, or a Netlify form attribute).
- **Score H8 3→4:** The combination of equal-weight hero CTAs, grouped catalog, and purposeful two-column CTA band removed the last "safe default" patterns. The page now has no decorative noise — every structural choice earns its place.
---
## Problems Encountered
- **`.sr-only` used in HTML but not defined in CSS:** The testimonials section used `class="sr-only"` for the visually-hidden H2, but no `.sr-only` rule existed. Added to the reset block as a single line after the flex/grid overflow prevention rule. Build would have silently produced a visible H2 without this fix.
- **Preview server `scroll-behavior: smooth` + JavaScript scrollTo interaction:** `window.scrollTo(0, y)` was intercepting the smooth-scroll CSS behavior, causing the return value of `window.scrollY` to reflect the pre-scroll position. Fixed by switching to `window.scrollTo({top: y, behavior: 'instant'})` throughout the inspection session.
- **Old `.cta-actions`, `.cta-or` CSS orphaned:** The CTA band CSS rewrite removed the HTML elements these rules targeted. They were removed in the same CSS edit to prevent dead rule accumulation.
---
## Configuration Changes
**Modified:**
- `clients/azcomputerguru.com/src/pages/index.astro` — Main deliverable. Changes:
- Added `.sr-only` utility class to CSS reset block
- Added testimonials CSS block (`.testimonials` through `.testimonial-attribution` + `@media (max-width: 900px)` breakpoint)
- Replaced CTA band HTML: centered single-column → two-column (`.cta-text` + `.cta-form-wrap` with 3-field form)
- Replaced CTA band CSS: centered layout → `grid-template-columns: 1fr 1.1fr`, added `.cta-form-wrap`, `.cta-form`, `.cta-form-field`, `.cta-form-label`, `.cta-form-input`, `.cta-form-textarea`, `.cta-form-submit`; removed `.cta-actions`, `.cta-or`
- Replaced catalog `<ul class="catalog-list">` (12 flat items) with `<div class="catalog-groups">` (3 groups: Management 5 items, Security 4 items, Support 3 items)
- Added `.catalog-groups`, `.catalog-group-label` CSS; updated `.catalog-list` and `.catalog-list li` to remove the old grid and adjust padding
**Created:**
- `clients/azcomputerguru.com/session-logs/2026-05-22-session.md` — this file
- `clients/azcomputerguru.com/session-logs/` — directory (did not exist)
- `.impeccable/critique/2026-05-22T17-03-45Z__azcomputerguru-com.md` — re-critique snapshot (33/40)
---
## Credentials & Secrets
None. This session was purely frontend work on a static Astro site. No credentials accessed or created.
---
## Infrastructure & Servers
- **Preview server:** `http://localhost:4325/` — Astro preview of `dist/` build, started via `npx astro preview --port 4325`
- **Build:** `npm run build` in `D:/claudetools/clients/azcomputerguru.com/` — clean build, no warnings
- **Production hosting:** IX Web Hosting cPanel, files deploy to `/public_html/` (no deployment performed this session)
---
## Commands & Outputs
```bash
# Build (run after all edits)
cd D:/claudetools/clients/azcomputerguru.com && npm run build
# Output: 1 page built in 387ms, no errors
# Preview
npx astro preview --port 4325
# Running at http://localhost:4325/
```
---
## Pending / Incomplete Tasks
- **[P2] Form error states:** The inline CTA form uses browser-native `required` validation with no styled error feedback. On failed submit, browser-default tooltips appear (inconsistent cross-browser, may be invisible against the orange background). Fix: ~15 lines of inline `<script>` + one CSS error token.
- **[P2] Pricing signal:** No pricing context on the page. A single line near the catalog footer or CTA subtext ("Flat monthly rates. No surprise invoices.") would address the persona red flag without committing to numbers.
- **[FUTURE] Form backend:** The form `action="/contact"` with `method="GET"` is a prototype placeholder. Production needs a form handler — IX Web Hosting supports PHP, so a simple `contact.php` endpoint or a third-party service (Formspree) would work.
- **[FUTURE] Replace prototype testimonials:** Current testimonials use placeholder names (Sarah M., James K., Linda R.) and constructed quotes. Replace with actual client quotes before production launch.
- **[FUTURE] `aria-current="page"`:** Not set on the homepage nav item in prototype HTML.
- **[FUTURE] Dynamic copyright year:** Footer `© 2026` is hardcoded. Replace with a JS expression or Astro template variable.
- **[FUTURE] Production deployment:** Site has not been deployed to IX Web Hosting `/public_html/` this session.
---
## Reference Information
- **Astro config:** `clients/azcomputerguru.com/astro.config.mjs``site: 'https://azcomputerguru.com'`, `compressHTML: true`
- **Critique snapshots:** `.impeccable/critique/`
- `2026-05-22T15-08-23Z` — original live site critique (21/40)
- `2026-05-22T15-53-21Z` — after initial craft + harden (31/40)
- `2026-05-22T17-03-45Z` — after all P1+P2 fixes (33/40)
- **Score progression:** 21 → 31 → 33 / 40
- **Fonts:** Barlow Condensed (display, `--font-display`) + Lexend (body, `--font-body`) — loaded from Google Fonts in `<head>`
- **Color system:** OKLCH throughout; brand orange `oklch(0.70 0.18 55)`; tokens in `:root` block
- **Spacing scale:** `--sp-1` through `--sp-24` (0.25rem steps)

View File

@@ -0,0 +1 @@
/// <reference path="../.astro/types.d.ts" />

File diff suppressed because it is too large Load Diff