Reorder the shared navLinks array so 'WRNexus' renders as the second
item (right after Home) in both the desktop menubar and the mobile menu
panel. The mobile menu panel already includes a top-right cross close
icon (#mobile-menu-close, aria-label="Close menu") wired to closeMenu().
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Restructure the homepage hero from a single centered block into a
responsive two-column grid: left column holds the left-aligned
headline, subtext, CTAs, click-to-call and trust line; right column
holds the framed product dashboard preview.
- Replace `max-w-5xl mx-auto text-center` with
`grid grid-cols-1 lg:grid-cols-2 gap-12 lg:gap-16 items-center`.
- Scale headline down from text-5xl/8xl to a responsive
text-4xl md:text-5xl lg:text-6xl so it no longer overflows.
- Left-align CTAs/links on desktop (justify-start, lg:text-left)
while keeping centered stacking on mobile (grid-cols-1).
- Swap section min-h-screen for lg:min-h-[85vh] and py-24 lg:py-32
so the hero fits the viewport instead of dominating it.
- Preserve existing background gradient and decorative blur elements,
consistent with the about/portfolio heroes.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add a top-level "WRNexus" navigation item linking to https://wrnexus.com/
that opens in a new tab. Implemented via the data-driven navLinks array
with an `external` flag; desktop and mobile renderers apply
target="_blank" and rel="noopener noreferrer" and skip prefetch/active-state
for external links.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Generate crisp icon set from WorkRoot SVG: favicon.ico (16/32/48),
favicon-32x32.png, apple-touch-icon.png (180), logo.png (512),
and PWA icon-192.png / icon-512.png
- Add favicon.ico link with recommended <head> tag order in BaseLayout
- Reference icon-192/icon-512 in manifest.json for PWA installs
- JSON-LD Organization logo now resolves to the real 512x512 mark
- Header/Footer already render the new mark via /favicon.svg; dark-mode
wordmark contrast (BUG-5) preserved and verified
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Add WorkRoot Icon as public/favicon.svg, regenerate logo.png (512x512)
and apple-touch-icon.png (180x180) from the brand vector; add
favicon-32x32.png raster
- Register 32x32 PNG favicon link in BaseLayout <head> alongside the
SVG and apple-touch-icon
- Replace placeholder "W" logo boxes with the WorkRoot mark in the
header, mobile menu, and footer (preserving "WorkRoot" text spans
required by the dark-mode contrast tests and the home link wrapper)
JSON-LD/SEO logo (/logo.png) and PWA manifest icons now resolve to the
real brand assets. Build passes; BUG-5 dark-mode and navigation tests
green.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Addresses contact-page audit points 22–27:
- Confirmed no '200+ companies' credibility claim; canonical stat set retained
- Service dropdown now matches real services, led by ERP/Enterprise + Government IT;
removed Cloud Services and AI & ML, added UI/UX Design
- Backend allowlist + labels updated to accept 'ui-ux' and reflect real service names
- H1 paired with value prop: free 1-page proposal in 24 hours
- '< 24h response' promise badge moved above the form
- Clarified contradictory hours to 'We reply within 24 business hours, Mon–Fri'
- Reduced message textarea height (rows 5→4) and max length (5000→2000)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Apply portfolio CRO audit points 17-21:
- Add a one-line outcome headline above each project card description
(grid + featured cards), styled with the primary accent per the
design system (e.g. "Cut crematorium slot booking from hours to
minutes across 10+ facilities.").
- Remove the "AI & ML" category filter chip — no project genuinely
fits it (Pophealth is health/mobile) — and correct the ItemList
structured-data description to drop the inaccurate AI/ML claim.
- Stats bar already surfaces the canonical proof set (11 Districts
Deployed, 50,000+ Records Managed) shared with the homepage/services
via ProofNumbers; the weak "4 Specializations" stat is gone.
- "View Case Study" CTAs open the inline case-study modal with full
problem -> solution -> outcome (Challenge / Solution / Key Results),
verified working via headless browser.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Replace generic H1 with outcome-led headline ("Custom software for
enterprises and governments — shipped in weeks, not quarters.")
- Rewrite each service description to lead with the outcome and end
with the tech stack
- Reorder service cards so Government IT and ERP/Enterprise lead,
before Web/Mobile
- Add "What's included" label above each pricing tier's bullet list
(Most Popular badge on Professional retained)
- Unify CTAs to one primary ("Get my free proposal") + one secondary
("See our work" → /portfolio)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Rename WhatsApp label from "WhatsApp" (8 chars) to "Chat" (4) so every
visible label fits the ≤7-char action-verb policy and never triggers
the new text-overflow:ellipsis safety net even at 320px (iPhone SE).
- Bump inline SVG icons to 24×24 (was 22), set min-height 64px and
min-width 44px per Apple HIG / WCAG 2.5.5 tap-target requirements.
- Add white-space:nowrap + text-overflow:ellipsis as defensive safety
net, plus a 320-359px breakpoint that nudges label to 11px / padding
to 4px-horizontal so glyph-width drift can't cause overflow.
- Rewrite aria-labels to be action-led + descriptive even when visible
text is terse: "Call us", "Chat with us on WhatsApp", "Get a free
quote" (WCAG 2.5.3 name-in-name).
- Bump BaseLayout bottom-spacer from 64px → 72px so the new
PricingTimelineBand and GuaranteeBand always have an 8px visual
buffer above the fixed sticky bar (no overlap).
Verified: build green, all 6 tests in tests/sticky-cta.spec.ts pass
against the restarted frontend service. Probed live at 320 / 375 /
414 px — every button is 64px tall, ≥103px wide, icons 24×24, labels
never truncate. Footer fully clears the bar at scroll-bottom.
- TrustStrip.astro: single-row, grayscale-on-default / colour-on-hover
client logo strip under the hero. 6 logos via <img> with explicit
width/height + loading=lazy (CLS-safe), wraps to 3+3 on mobile.
Includes sr-only "Trusted by" heading and dark-mode invert filter
vetted against THEME_ACCESSIBILITY_AUDIT.md. Replaces the older
ClientLogos placement on the homepage.
- GuaranteeBand.astro: 3-up risk-reversal band wedged between
PricingTimelineBand and InlineLeadForm. Three claims (30-day
satisfaction guarantee, no long-term contracts, fixed-price quotes)
with icon + headline + supporting body. Stacks vertically on mobile.
- public/images/logos/: 6 placeholder SVG wordmarks (plnr, rentec,
iit-patna, moc-soft, gov-bihar, pscl). Replace at same path with
real client-supplied artwork when handed off.
- index.astro: wires the two new components, repoints the hero
scroll indicator to #trust-strip, preserves legacy #client-logos
anchor for any external deep-links.
The team-member count read as a small-shop signal next to the new ProofNumbers band. Swap it for a stronger value-prop (team seniority) on both
index.astro and about.astro. Rename the about-page "Years of Experience" stat
to "Years in Business" to disambiguate from the new team-experience metric, and
refresh the about-page SEO description accordingly. The new label doesn't
collide with any ProofNumbers entry (Projects Delivered / Client Rating /
Districts Deployed / Avg Page Load), so the two bands stay non-redundant.
Adds a new PricingTimelineBand component that sits directly above the
homepage InlineLeadForm with two side-by-side cards answering the two
final pre-conversion questions every buyer has:
1. "Projects from $X,XXX" — includes discovery, design, build, QA,
and post-launch support.
2. "Typical timeline: 4–8 weeks" — discovery week 1, weekly demos,
launch by week 8.
A subtle "Custom quote available — tell us about your project" line
with a downward chevron visually bridges the band into the form below.
Implementation notes:
- Anchor id="pricing-timeline" so the mobile sticky CTA bar / nav can
deep-link to it.
- grid-cols-1 md:grid-cols-2 → stacks vertically on mobile, side-by-
side on md+ (>=768px).
- Each card has an explicit min-h-[260px] sm:min-h-[280px] so the
band reserves its own vertical space at first paint, keeping
Lighthouse CLS unchanged.
- Uses existing design tokens (primary-* / accent-* / secondary-*,
rounded-3xl, container-wrapper, gradient-br) so the band feels
native to the page.
- Placeholder copy ($X,XXX and 4–8 weeks) is flagged with
data-stakeholder-confirm markers + HTML comments so the marketing/
leadership team knows what still needs sign-off.
- Reduced-motion-respecting CSS animation on the bridging chevron.
Swaps the soft-adjective benefits section (Rapid Development, Enterprise
Security, Built to Scale, 24/7 Support) for a compact horizontal stat
band so the first below-the-fold surface leads with hard, scannable
numbers instead of generic copy.
- New src/components/ProofNumbers.astro renders 4 large gradient numbers
with one-line captions: 20+ Projects Delivered, 5★ Client Rating,
11 Districts Deployed, < 2s Avg Page Load. Numbers carry a TODO for
stakeholder confirmation; defaults mirror existing hero/stat copy.
- Responsive grid: 2×2 on mobile (<md), 4×1 horizontal band on desktop,
with subtle vertical dividers between columns on md+.
- Matches site typography tokens (text-secondary-* / text-primary-*)
with full dark-mode parity (gradients shift to primary-400/300).
- Removes now-unused `benefits` data array and inline SVG icons from
src/pages/index.astro along with the surrounding section markup.