Skip to content

feat(rebrand): light-mode pastel identity — blue + cream palette + new logo#96

Merged
thecelestialmismatch merged 6 commits into
mainfrom
HoundShield/beautiful-wiles-b5b879
May 27, 2026
Merged

feat(rebrand): light-mode pastel identity — blue + cream palette + new logo#96
thecelestialmismatch merged 6 commits into
mainfrom
HoundShield/beautiful-wiles-b5b879

Conversation

@thecelestialmismatch
Copy link
Copy Markdown
Owner

Summary

Visual identity swap (logo + color palette) per spec docs/superpowers/specs/2026-05-26-light-mode-rebrand-design.md. Zero functionality change — every route, component, copy, and feature preserved.

  • Palette: soft blue + cream pastels (#81A6C6 Blue, #AACDDC Sea, #F3E3D0 Cream, #D2C4B4 Beige)
  • Mode: light default everywhere; dark mode remains opt-in via toggle
  • Logo: new black doberman/shield PNG via next/image (file ships in second commit)
  • 47 files touched across tailwind.config.js, app/globals.css, layout/theme provider, Logo/TextLogo, full color sweep across Navbar/landing/dashboard, plus rule file updates (frontend.md, CLAUDE.md)

What changed

Layer Change
Tailwind tokens brand 50-900 rewritten around #81A6C6; cream scale to palette
globals.css body/section bg flipped to #FBF8F2 / #F3E3D0; all coral rgba swapped to blue
layout.tsx html no longer has dark class; viewport themeColor cream; favicon points to /houndshield-logo.png
theme-provider initial = light (was dark)
Logo / TextLogo renders /houndshield-logo.png via next/image; blue gradient on text
Color sweep 5 prod files with coral hex/rgba (Navbar, CursorGlow, PlatformDashboard, partners, pixel-sprites); 35 files with amber/orange/yellow/indigo Tailwind classes → all replaced with brand-* equivalents
Rule files frontend.md and CLAUDE.md design system blocks rewritten

Out of scope (untouched)

Brain AI, proxy engine, scanner, classifier, audit log, Stripe wiring, Supabase schemas, pricing tier values, mega-menu data, partner cards, security disclaimer, NIST 800-171 controls.

Verification

  • npx tsc --noEmit — 0 errors
  • npm run build — all routes compile
  • npm test -- --silent — 138 tests pass across 8 suites
  • User to drop houndshield-logo.png into compliance-firewall-agent/public/ (second commit incoming)
  • Vercel preview deploy URL inspection (light theme, blue accents, logo present, no coral regressions)
  • Manual WCAG check on key CTAs — brand-500 background with white text is OK; brand text on cream uses brand-700+

Risks

Risk Mitigation
Coral glow opacity ≠ blue glow opacity on cream bg All shadow-glow* alpha reduced ~30% in tailwind config
Modal overlays remain dark (bg-zinc-900, bg-black/50) Intentional contrast against light page
Snapshot tests stale on Logo/TextLogo/CursorGlow Jest reports 0 snapshots run (no toMatchSnapshot() calls in active suite)
frontend.md rule "NEVER blue-*" was unenforced by any lint hook Rule rewritten to allow blue as brand-500

Rollback

Revert this PR — production main was never touched at any point. Old coral identity restored in one git revert.

Gaurav added 3 commits May 13, 2026 13:20
PUT and DELETE handlers now await params per Next.js 15 requirement.
params is Promise<{id}> not {id} directly.
Blue/cream pastel identity replacing coral/dark. Logo swap to
houndshield-logo.png. Light theme default. Token map + file list +
verification gates documented before any code change.
Swap entire visual identity from coral/dark to soft blue + cream
pastels per design spec. Functionality unchanged.

Token changes:
- Brand scale rewritten around #81A6C6 (palette Blue) as brand-500
  full 50-900 ramp generated
- Cream scale rewritten around #F3E3D0 (palette Cream) and #D2C4B4
  (palette Beige)
- shadow-glow rgba flipped to (129, 166, 198)
- gradient-arctic repointed to cream gradient

Mode flip:
- html no longer carries default "dark" class
- theme-provider initial = "light"
- viewport themeColor = #FBF8F2
- globals.css light overrides repaint body/sections to cream-50
- alternating sections use cream-100

Logo:
- Logo.tsx now renders /houndshield-logo.png via next/image
- TextLogo gradient swapped to blue
- Favicon link points to logo PNG

Sweep:
- All hardcoded coral hex/rgba in 8 prod files replaced with blue
- All amber/orange/yellow/indigo Tailwind classes in 35 files
  replaced with brand-* equivalents (now blue)

Rule files:
- .claude/rules/frontend.md rewritten: light default, blue primary
- CLAUDE.md design system block rewritten
@vercel
Copy link
Copy Markdown

vercel Bot commented May 26, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
compliance-firewall-agent Ready Ready Preview, Comment May 27, 2026 1:36am

@supabase
Copy link
Copy Markdown

supabase Bot commented May 26, 2026

This pull request has been ignored for the connected project qifynzuyrdxmxlumpsrq because there are no changes detected in supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

Adopt the HoundShield Landing Page v3 spec extracted from the
claude.ai/design reference. Refines existing rebrand with the exact
token system that the v3 mockup uses.

Tailwind:
- cream scale: cream-50 = #FAFCFF (cool white), cream-75 = #F5F8FB,
  cream-150 = #EDD5BC (cream-deep), cream-200 = #E8DDD1 (sand-light)
- new `ink` ramp: #0F1E2E / #3D5166 / #6B8299 / #0D1B2A (deep)
- new `steel` family: #C5DAE9 / #5A86A8 / #4A7FA5
- surface scale extended (0/1/2/3) matching v3 hs-surface-* CSS vars
- font stack swapped: DM Sans (sans), Fraunces (display+editorial),
  JetBrains Mono (mono)

globals.css:
- Google Fonts import adds Fraunces, DM Sans, JetBrains Mono
- :root exposes full v3 token block as --hs-* CSS variables
  (blue/sky/cream/sand/white/ink/navy/steel/border/glow/shadow)
- body bg flipped from warm cream #FBF8F2 to cool white #FAFCFF
- body font-family bound to var(--font-dm-sans)
- light-mode override section bg uses #FAFCFF

Logo:
- houndshield-logo.png added to public/ (1536x2752, JPEG-in-PNG)
- now rendering top-left and on chat trigger

Launch config:
- fix .claude/launch.json cwd to worktree path
Reference: HoundShield v3 design (claude.ai/design preview).

Logo.tsx
- Default `card=true` wraps the mark in a soft cream surface
  (bg-cream-100, ring-cream-300/60, shadow-card) with rounded
  corners matching the reference (size * 0.18).
- Inner image is `objectFit: contain` at ~78% of card size.
- `card={false}` escape hatch for tight surfaces (footer, dashboard).

TextLogo.tsx
- Single-word "HoundShield" set in Fraunces serif (font-display)
- Mirrors v3 inline style: weight 400, letterSpacing -0.015em
- `variant="light"` -> text-ink-primary, `variant="dark"` -> text-white
- Drops the gradient "Hound"+"Shield" split so the wordmark
  matches the reference exactly.

Tests
- Update assertions for the new single wordmark.
- Add `card={false}` coverage on Logo.
- Regenerate Logo + TextLogo + Navbar snapshots.
- Regenerate stale CursorGlow snapshot (orange -> brand-500 blue,
  rebrand color leak that was masked by snapshot drift).

Homepage
- Wire app/page.tsx through HomeV3 component for full v3 fidelity.
  Adds components/landing/v3/HomeV3.tsx as the canonical landing
  composition.

All 64 component tests pass. `npm run build` clean.
@thecelestialmismatch
Copy link
Copy Markdown
Owner Author

v3 logo embed shipped (commit fa62031)

Replicates the HoundShield landing-v3 reference exactly:

Logo.tsx

  • Default card={true} wraps the doberman+shield mark in a soft cream surface (bg-cream-100 + ring-cream-300/60 + shadow-card)
  • Rounded corners use the reference's size * 0.18 formula
  • Inner image is objectFit: contain at ~78% of card size so the mark breathes
  • card={false} escape hatch for dense surfaces (footer chips, dashboard pills)

TextLogo.tsx

  • Single-word "HoundShield" wordmark set in Fraunces serif (font-display)
  • Mirrors the v3 inline style verbatim: weight 400, letterSpacing: -0.015em
  • variant="light"text-ink-primary, variant="dark"text-white

Coverage

  • 64 component tests pass (npm run test:components)
  • npm run build clean — every page builds
  • Snapshots regenerated: Logo, TextLogo, Navbar, CursorGlow (last one had stale orange tint pre-rebrand)
  • All existing navbar hover states (onMouseEnter/onMouseLeave color swaps), flyout menus, and CTAs preserved

Homepage

  • app/page.tsx wired through new components/landing/v3/HomeV3.tsx for full v3 fidelity composition

Vercel preview will rebuild on this push — ready for visual QA.

…-wiles-b5b879

# Conflicts:
#	CLAUDE.md
#	compliance-firewall-agent/app/command-center/page.tsx
#	compliance-firewall-agent/app/command-center/shield/page.tsx
#	compliance-firewall-agent/app/globals.css
#	compliance-firewall-agent/app/layout.tsx
#	compliance-firewall-agent/app/page.tsx
#	compliance-firewall-agent/app/partners/page.tsx
#	compliance-firewall-agent/app/pricing/page.tsx
#	compliance-firewall-agent/components/CursorGlow.tsx
#	compliance-firewall-agent/components/GlobalChat.tsx
#	compliance-firewall-agent/components/Logo.tsx
#	compliance-firewall-agent/components/Navbar.tsx
#	compliance-firewall-agent/components/TextLogo.tsx
#	compliance-firewall-agent/components/__tests__/__snapshots__/Logo.test.tsx.snap
#	compliance-firewall-agent/components/__tests__/__snapshots__/TextLogo.test.tsx.snap
#	compliance-firewall-agent/components/landing/WhyHoundshield.tsx
#	compliance-firewall-agent/public/houndshield-logo.png
#	compliance-firewall-agent/tailwind.config.js
@thecelestialmismatch
Copy link
Copy Markdown
Owner Author

Merge conflicts resolved (commit `d199024`)

Merged `origin/main` into branch. 18 conflicts resolved:

Branding (kept HEAD / ours) — preserves v3 logo embed work

  • `components/Logo.tsx` (cream-card embed + accepts `variant` prop for Navbar back-compat)
  • `components/TextLogo.tsx` (Fraunces single-word wordmark)
  • `components/tests/snapshots/{Logo,TextLogo}.test.tsx.snap`
  • `components/CursorGlow.tsx` (brand-500 blue tint)
  • `tailwind.config.js` (rebrand tokens)
  • `app/globals.css` (light-mode tokens)
  • `app/page.tsx` (HomeV3 routing)
  • `public/houndshield-logo.png`
  • `components/landing/WhyHoundshield.tsx` (brand-700 = WCAG AA on cream)
  • `CLAUDE.md` (rebrand-canonical doctrine)

Stage 0 doctrine (took origin/main) — preserves PR #94/#95 RPO pivot

  • `app/partners/page.tsx` (RPO/MSP 40–50% margin pivot)
  • `app/pricing/page.tsx` (Enterprise $1,499)
  • `app/command-center/page.tsx` + `app/command-center/shield/page.tsx`
  • `app/layout.tsx` (Fraunces+DM Sans font variables on ``, cool-white themeColor `#FAFCFF`)
  • `components/Navbar.tsx` (rgba syntax fix — no spaces inside `rgba(...)`)

Manual merge — kept improvements from both

  • `components/GlobalChat.tsx` — kept brand-* colors (rebrand doctrine) + adopted main's `whitespace-pre-wrap`, `prose-chat`, and `disabled={isTyping}` quick-action state

Gates

  • `npm run build` → clean
  • `npx vitest run components/tests/` → 56/56 pass
  • `mergeable: MERGEABLE` per `gh pr view`

Vercel rebuilding the preview — ready for visual QA.

@thecelestialmismatch thecelestialmismatch merged commit ecbebce into main May 27, 2026
3 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant