You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
brand: integrate v3 system — nav mark, peak accent CTAs, OG regeneration
Wire the hexagonal knot mark into Nav.svelte (inline SVG, currentColor
theme-aware), add .btn-peak CSS class using --accent-peak token, apply
peak accent to awakening-moment CTAs (READ THE CODEX on home + Esver,
EXPLORE THE STACK on Codex page). Regenerate OG image. Update CLAUDE.md
with design decisions, trade-offs, and remaining work.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|`StatusBar.svelte`| (none) | Bottom status bar: version, operational status, copyright |
161
-
|`Nav.svelte`| theme, onToggleTheme | Top nav with `//` separators, `SYS:LIGHT`/`SYS:DARK` toggle |
161
+
|`Nav.svelte`| theme, onToggleTheme | Top nav with hexagonal knot mark, `//` separators, `SYS:LIGHT`/`SYS:DARK` toggle |
162
162
163
163
**Product pages** use all four main components with zero local CSS (except Esver's launch briefing form). **Home/Ecosystem** retain unique layouts but use design tokens and panel classes throughout.
164
164
165
165
### Rules
166
166
167
167
- Never add a second typeface
168
-
- Violet accent (`--accent`) is used sparingly: active nav state, pillar numbers, tags, blockquote borders, hover states, status dot
168
+
- Violet accent (`--accent`) is used sparingly: active nav state, nav mark, pillar numbers, tags, blockquote borders, hover states, status dot
169
+
- Peak accent (`--accent-peak`) is reserved for awakening-moment CTAs only (`.btn-peak`). Max 1 per viewport. Currently on: "READ THE CODEX" (home, Esver), "EXPLORE THE STACK →" (Codex)
169
170
- All color values must use theme-aware CSS variables — never hardcode colors
170
171
- All transitions: `var(--transition-fast)` (0.15s) or `var(--transition-slow)` (0.4s)
171
172
- All sections have opaque `var(--bg)` backgrounds (no transparent backgrounds)
@@ -346,11 +347,8 @@ The original site was pure monochrome (black/white) with a Three.js 3D wireframe
346
347
- No blog platform for content launch strategy
347
348
-`esver.computer` has no standalone landing page
348
349
- MrHaven SDK not yet documented
349
-
- OG image uses static bone palette — needs regeneration with new color system
350
350
- Glyph animations are CSS-only — no scroll-linked parallax or mouse interaction
351
351
-`AsciiArt.svelte` and `EsperCrystal.svelte` are created but unused (superseded by HeroGlyph approach) — candidates for cleanup
352
-
- Nav does not yet use the hexagonal knot mark (still text-only "SOVREN" wordmark)
353
-
-`--accent-peak` token defined but not yet applied to any CTA components
354
352
355
353
### Component Inventory (new in redesign)
356
354
| Component | Purpose | Status |
@@ -390,12 +388,11 @@ The site had no logo mark (text-only "SOVREN" wordmark), the dark mode was a bro
390
388
- Mark is infinitely scalable (SVG), works from 16px favicon to print
391
389
392
390
### Known Limitations
393
-
- Mark not yet integrated into site Nav (still text-only wordmark)
394
-
-`--accent-peak` defined but not yet wired to any CTA components
395
-
- Dark mode visual QA not yet done — tokens landed, browser testing needed
396
-
- OG image not yet regenerated with new palette
391
+
- Dark mode visual QA not yet done — tokens landed, mark + peak CTAs wired, browser testing needed
397
392
- X/Twitter banner text rendering uses fallback font (not Geist Mono) — cosmetic only
398
393
- Brand kit PNGs are rasterized from SVG; re-export if SVG sources change
394
+
- OG image does not include hexagonal knot mark (satori doesn't support inline SVG elements; would require data URI or different pipeline)
395
+
- Nav mark uses `stroke-dasharray` Celtic knot weave which may render slightly differently across browsers at 20px — visually verified in build but not cross-browser tested
399
396
400
397
### Files Added
401
398
| File | Purpose |
@@ -412,6 +409,36 @@ The site had no logo mark (text-only "SOVREN" wordmark), the dark mode was a bro
412
409
|`brand/preview.html`| Brand kit reference — all variants, scale tests, nav mockups |
413
410
|`brand/color-study.html`| Color theory rationale — emotional arc, text warmth, token system |
Brand system v3 shipped tokens and assets (c68b171) but nothing in the site consumed them — the nav was still text-only, CTAs used `--accent` not `--accent-peak`, and the OG image hadn't been regenerated. This integration wires v3 into every visible surface.
416
+
417
+
### What Changed
418
+
1.**Nav mark** — Hexagonal knot SVG inlined in `Nav.svelte` before "SOVREN" text. Uses `currentColor` inheriting from a `.nav-mark` class colored `var(--accent)`, so it theme-swaps automatically. Flexbox layout with `gap: var(--space-sm)`.
419
+
2.**`.btn-peak` CSS class** — New button variant in `app.css` that mirrors `.btn-primary` structure (border, fill animation via `::before` pseudo-element) but uses `--accent-peak` for border, text, and fill. Hover inverts to `var(--bg)` text on peak-colored background.
420
+
3.**Peak CTAs on awakening moments** — "READ THE CODEX" (home + Esver pages) and "EXPLORE THE STACK →" (Codex page) now use `.btn-peak`. Functional CTAs ("SUBSCRIBE", "VIEW ON GITHUB", "LAUNCH APP") remain `.btn-primary`.
421
+
4.**CtaSection component** — Added `'peak'` as a recognized `style` prop value alongside `'secondary'`.
422
+
5.**OG image regenerated** — `npm run generate-og` re-rendered the PNG from current palette constants (which already matched light-mode tokens, so no visual change — but the file is now freshly built).
423
+
6.**Legacy static assets** — `og-image.svg` and `x-banner.svg` were already deleted in a prior commit; confirmed absent.
424
+
425
+
### Trade-offs
426
+
-**Inline SVG in Nav vs `<img>` tag** — Inline SVG enables `currentColor` theme-awareness without extra HTTP request, but adds ~1.2KB to the Nav component markup. At 20px render size the Celtic knot weave is decorative rather than legible, but it provides brand recognition at a glance.
427
+
-**Separate `.btn-peak` class vs extending `.btn-primary`** — Could have used a modifier class (`.btn-primary.btn-peak`) to avoid duplicating the base button styles. Chose a standalone class for clarity and to avoid specificity issues. The duplication is ~15 lines of CSS.
428
+
-**Peak accent on 3 CTAs** — The brand system specifies "max 1 per viewport." These 3 CTAs are on different pages, so the constraint is satisfied. If future pages add more peak CTAs, this rule should be enforced.
429
+
-**OG image without mark** — Satori (the OG image generator) doesn't support inline SVG elements natively. Adding the mark would require a data URI or a different rendering pipeline (Playwright screenshot, etc.). The current schematic layout is clean without it.
430
+
431
+
### Expected Benefits
432
+
- Every page now reflects the v3 brand identity — mark in nav, peak accent on doctrine CTAs
433
+
- Dark mode gets full visual coherence: violet mark + violet-bordered peak buttons on violet-black background
434
+
- The emotional arc (environment → accent → peak) is now structurally enforced in the CSS, not just documented
435
+
436
+
### Known Limitations
437
+
- Nav mark at 20px may lose Celtic knot weave detail — the over/under crossings are very small. Cross-browser rendering of `stroke-dasharray` at this scale not yet tested.
438
+
- Dark mode visual QA still needed — all tokens and components are wired but not browser-tested together
439
+
- OG image doesn't include the mark (satori limitation)
440
+
-`.btn-peak` duplicates `.btn-primary` base styles — acceptable at current scale, but if more button variants emerge, consider a shared base class
441
+
415
442
## Backlog (external systems — not actionable from this repo)
416
443
417
444
These require access to external dashboards, registrars, or depend on work that doesn't exist yet:
@@ -422,14 +449,12 @@ These require access to external dashboards, registrars, or depend on work that
422
449
- MrHaven SDK section on the MrHaven page (blocked on SDK docs)
423
450
- Cloudflare Transform Rules for CDN-level security headers (see `SECURITY.md`)
424
451
- Clean up unused components (AsciiArt.svelte, EsperCrystal.svelte)
425
-
- Dark mode visual QA session — glyphs, panels, dot grid against new violet atmosphere tokens (2026-03-18 color system landed, QA not yet done)
426
-
- Integrate hexagonal knot mark into Nav.svelte (replace "SOVREN" text-only wordmark with mark + text lockup)
427
-
- Apply `--accent-peak` to CTA buttons site-wide (currently CTAs use `--accent`, peak reserved for "Awaken yours" moments)
428
-
- Regenerate OG image (`npm run generate-og`) to reflect new color system
452
+
- Dark mode visual QA session — glyphs, panels, dot grid, nav mark, peak CTAs against violet atmosphere tokens (2026-03-18 all wired, QA not yet done)
429
453
- Update X profiles with new banner/profile assets (PNGs ready in `brand/`)
Copy file name to clipboardExpand all lines: src/routes/+page.svelte
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -111,7 +111,7 @@
111
111
</h2>
112
112
<divclass="thesis-foot">
113
113
<p>We build infrastructure for operators who refuse to rent their own stack. Sovereign compute, local identity, and programmable capital — UX, privacy, and security without compromise.</p>
114
-
<ahref="/ecosystem"class="btn-primary">READ THE CODEX</a>
114
+
<ahref="/ecosystem"class="btn-peak">READ THE CODEX</a>
<p>The Sovren Stack is unified sovereign infrastructure built on a single commitment: UX, privacy, and security without compromise at every layer. Esver OS is the command center — voice-ready, biometric-secured, AI-augmented, declaratively configured. Visage is the identity primitive — your face, verified on your hardware, never leaving it. Mr. Haven is the capital layer — programmable rules, autonomous execution, no custodian. Together they give one operator total authority over compute, identity, and capital.</p>
106
-
<ahref="/"class="btn-primary">EXPLORE THE STACK →</a>
106
+
<ahref="/"class="btn-peak">EXPLORE THE STACK →</a>
0 commit comments