3 Commits

Author SHA1 Message Date
Alex Dunmow
a7a90ba3c1 fix(corporate-modernist): repair empty hero + tighten rhythm + mobile
Root cause of the missing home hero: the hero built-in's styled-text
fields (eyebrow/headline/subheadline, schema type=object x-editor=
styled-text) were seeded as BARE STRINGS. The override reads
`headline.text|default:headline`; ninjatpl hard-errors on `.text` field
access against a string ("can't access a field by name on type string")
BEFORE the |default filter runs, aborting the whole hero render → the
section rendered nothing, leaving a large void at the top of the page.
Fixed by seeding the object form `{ "text": "..." }` (matches the
built-in schema + sample). Same latent bug affects any theme that seeds
bare strings into hero styled-text fields.

Whitespace / layout:
- cm-section padding 4rem -> 3rem (3.5rem >=768px); cm-section-tight
  2.5rem -> 2rem. Kills the stacked ~8rem inter-section dead bands so the
  Swiss grid reads precise, not empty.
- hero padding 5rem -> 3.5rem.

Empty-media hardening:
- hero split variant only renders its media frame when backgroundImage
  is present (was an unconditional 4/3 muted box -> balloon).

Mobile:
- cm-form-grid now single-column base, 2-col >=640px (was fixed 2-col ->
  cramped half-fields at 375px); mirrored in the contact-form scoped
  style which wins on specificity.
- mobile nav toggle min 44x44 tap target.

No version bump. make + check-safety both exit 0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 17:28:06 +08:00
Alex Dunmow
99c1c4f652 feat(theme): Wave A corporate-modernist — 49 overrides, 7 templates, seed (WO-TF-014)
Full Wave A OVERRIDE-CONTRACT delivery for the B2B-consultancy theme
(Swiss grid, Bauhaus geometric marks, oversized tabular numerals, hairlines).

- 49/49 mandatory builtin overrides + manifest template_overrides entries,
  authored against the frozen builtin schemas. Fixed legacy button (variant/
  href/text -> style/link/label) and card (body/image -> text/media) reads.
- 7 page templates: default, full-width, landing, article, blog-index,
  contact, auth.
- Blocks rework: deleted 7 duplicate theme blocks (now builtin overrides);
  kept case_study_card; added capability_matrix, engagement_process,
  credential_bar. master_pages.json rewired to builtins.
- 5 dual-mode presets (all 19 tokens, tuned dark): navy-classic, forest-quiet,
  burgundy-tradition, graphite-mono, signal-red.
- Bundled fonts (OFL-1.1 latin subsets): Inter + JetBrains Mono, licenses
  recorded; all font-family via var(--font-*). RECOMMENDED_FONTS/ICONS updated;
  required_icon_packs = [lucide, simple-icons].
- Complete .cm-* CSS component vocabulary in manifest css.input_css_append;
  CSS-first motion with prefers-reduced-motion honored.
- Themed email-safe wrapper (tables + inline styles).
- Demo seed (demo:true): Meridian Advisory home/about/blog+3 posts/contact/
  login; contact-form -> contact_submissions data table -> row_inserted
  email-admins workflow.
- Functional auth-form / password-reset-form overrides (real hx-post endpoints).

Verified: `make` exit 0 (codeless .bnp packs), check-safety 32 checks OK exit 0.
Visual identity UNVERIFIED until Wave B. Known limitation: data providers do not
reach declarative overrides in frozen cms (a0f07e2ae) render path — provider-
backed overrides authored faithfully, populate once the host wires providers.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 11:05:55 +08:00
Alex Dunmow
4713787bbd initial: theme plugin corporate-modernist
Bootstrapped during the 2026-06-06 BlockNinja consolidation. Was previously
an unversioned directory inside ~/src/blockninja-themes/corporate-modernist.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-06 14:11:24 +08:00