executionpartner.ai redesign — session handoff

Last updated 2026-08-04 · delete this file before merging to main.

Where things stand

Stack & architecture

Eleventy 3 (Nunjucks), no framework. Everything data-driven:

Piece File(s)
App catalog (24 apps, 4 categories, agent copy) _data/apps.js
App one-pager extras (stats + 3 illustrated sections each) _data/appExtras.js
Industries (14, 3 groups) _data/industries.js
Industry extras (day-timeline + 2 sections each) _data/industryExtras.js
Release notes (AHQ 1.1.N versioning) _data/releases.js
App/industry/release page templates (paginated) app-pages.njk, industry-pages.njk, release-pages.njk
Nav + mega-drawers (Atlas HQ carries the apps drawer) _includes/header.html
Footer (+ socials) _includes/footer.html, _includes/socials.html
EKG signal divider (dark hero → white body bridge) _includes/signal.html
Viz component library (10 CSS product vignettes) _includes/viz.njk
Post layout (insights + editorial system) _layouts/post.html
All styling (~2000 lines, token system at top) assets/css/main.css
All behavior (progressive enhancement, html.js gated) assets/js/main.js
Generated artwork (40+ SVG covers, client logos) assets/images/art/, assets/images/clients/

Design system: void #030B18 ground, EP Navy #0B1F3A, amber #F59E0B = action/money ONLY, teal #14B8A6 = live/data ONLY, paper #F6F8FB. Archivo variable (display = 900 weight + font-stretch:125%), JetBrains Mono strictly for data/labels. Headlines end with amber period. Page pattern everywhere: dark hero (+ orbit ornament) → signal divider → white sections → dark final CTA.

Site map

Load-bearing gotchas (violate at your peril)

  1. Asset cache-busting: netlify.toml serves CSS/JS as immutable, 1yr. assetVersion global (.eleventy.js) appends ?v= in base.html. Never remove — returning visitors get stale CSS otherwise.
  2. Pagination templates need addAllPagesToCollections: true or sitemap only gets page 1.
  3. eleventyComputed titles double-escape entities — use `` inside computed front matter strings.
  4. _redirects order matters — specific /blog/<slug>/ rules sit ABOVE the /blog/* wildcard.
  5. Progressive enhancement contract: nothing may gate visibility on JS or animation end-states. Hide/reveal states live behind html.js classes; prefers-reduced-motion restores any animation-gated opacity (see the reduced-motion block in main.css).
  6. .aios-wrap auto-margins shrink grid items to the SVG's intrinsic 300px — .aios-compact fixes it for the split-row instance. Beware when reusing.
  7. Automation-browser screenshots freeze CSS transitions — reveals look stuck at ~3% opacity in captures. It's a capture artifact, NOT a site bug. Verify via computed styles, or inject html.js .rv{opacity:1!important;transition:none!important} before screenshotting.
  8. Orbit ornament is JS-injected into .page-hero and .post-header.with-orbit (main.js). Homepage hero has its own canvas instead.
  9. Nunjucks supports ===, is odd, groupby. Data files are CJS (module.exports).

Pending / owner flags (also in PR #8 body)

Recipes

Owner taste notes (learned the hard way)

Explanatory diagrams for concepts (AIOS loop, agency mode) — clean icon grids for feature lists (tried an interactive workspace-frame diagram for Nexus features; owner rolled it back to icons). Rejected a GHL-style comparison table. Hero stays navy; content sections white ("the Insights pages are literally perfect" — that's the canonical look). No emojis as icons anywhere. Everything centered means everything centered (watch lede blocks pinned left inside centered heads — fixed globally via .sec-head.center .lede{margin-inline:auto}).