## Problem
On wiki article pages **without a ToC drawer** (most feats, short articles), the body text renders pushed ~187px to the right with an empty left gutter — it reads as a broken indent, and the same drift shows in the compose editor. Reported as "Justify broke the editor and text indent".
## Root cause
`_wiki-prose.scss` caps every prose block at `--wiki-prose-measure: 54rem` and centers it with `margin-inline: auto`. That centering only looks right when the content column is ~58rem, which the theme only sets up while a ToC drawer is open (`grid-template-columns: minmax(0,58rem) minmax(0,1fr)`). ToC-less pages run the card full page width, so the 54rem paragraph centers inside it with big symmetric gutters, while the full-width callout and fact table make it look inset.
`text-align: justify` is the sibling rule in the same block (the visible "Justify" change) but is **not** the cause — justified paragraphs render with no indent once the width is capped.
The compose editor breaks the same way: its root is `class="westgate-wiki westgate-wiki-compose"`, so the identical `.westgate-wiki .wiki-article-prose` centering leaks into the editing surface.
## Fix
Two scoped rules in the existing `@media (min-width: 1200px)` block:
- cap the reading column on non-section article pages (`.wiki-with-fab:not(.wiki-with-fab--section) .wiki-content-layout`)
- cap the compose editing surface (`.westgate-wiki-compose .wiki-compose-editor.wiki-article-prose`)
Both `max-width: 58rem; margin-inline: auto`, so the card/editor hugs the text and everything shares one left edge — matching the design's "card hugs the text block" intent and the ToC-page geometry. Section / namespace-index listings opt out and keep running full-width, left.
## Verification
Reproduced and verified with Playwright against the real compiled CSS and the real editor bundle:
- read view: description `left:268` (`margin-left:187px`) in a 1272px card → aligned with the callout in a centered 896px card
- editor: description `left:268` (callout at 19) → tidy centered 58rem column
SCSS compiles clean (`dart-sass exit=0`). Editor fix verified via local repro with the real bundle (couldn't reach the authed live editor) — worth an eyeball after deploy.
🤖 Generated with [Claude Code](https://claude.com/claude-code)Reviewed-on: #41
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Justified alignment in `.wiki-article-prose` stretched bulleted `li`s inside table cells into ugly whitespace rivers (visible on spell/list tables). Now justify only applies to real reading prose (`p`, `li`), and alignment resets to `start` (hyphens off) inside `table`, `blockquote`, and `pre`.
Single-file SCSS change: `scss/westgate/_wiki-prose.scss`. NodeBB recompiles the theme SCSS on build/reload.Reviewed-on: #39
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Closes#30. Addresses ShadowsOverWestgate/sow-nodebb#13 (theme-side). Partially addresses #33 (badge).
Three theme fixes, bundled into one branch since we squash-merge.
### #30 — index/section pages bump all text to the right
The namespace-index / section listing card carries the `wiki-article-prose` class, so the article-body **reading measure** leaked onto it: the wiki plugin caps prose children at `--wiki-prose-measure` (54rem) and the theme `margin-inline:auto`s them, pinning the *Articles* heading, lead, and page list into a narrow centered column with a big left gutter. Fix: opt `.wiki-namespace-index` descendants out of that measure/centering (full-width, left-aligned). **Verified** with a before/after render of the real section markup against the compiled CSS.
### Inter 404 (sow-nodebb#13), theme side
Harmony generates Inter/Poppins `@font-face` at our asset path and points its font variables at them, but we ship **Jost + Cinzel** and declare no `@fontsource/inter|poppins` dep, so those URLs 404 in production (they only resolve in dev via npm hoisting). Current theme source already renders everything in Jost (verified in compiled CSS), so the reported production 404 is a **stale build** — it clears once the nodebb image is rebuilt from current theme main. This PR makes it robust: pins the Harmony rules that read those vars (`.ff-sans`, `.ff-secondary`, breadcrumb divider) to our fonts, and removes the two dead staticDirs.
### #33 (part 1) — topbar unread badge didn't match its neighbours
The unread count was a static inline pill floating low/right of the inbox icon, unlike the corner-anchored badges on the notification and chat icons. Mirrored Harmony's notification markup (inner `position-relative` span + `top-0/start-100/translate-middle`) so the unread bubble tucks into the icon corner at the same size, shape, and height. **Verified**: unread and notification badges now sit identically (measured top/bottom match to the pixel).
The other half of #33 — the "dropdown doesn't work" report — is **not** included: I couldn't reproduce it on a current build (the custom unread drawer opens and lists topics on both `/categories` and `/wiki`), so it looks like the same stale-deploy story. Left open in #33 pending a repro on a fresh build before deciding whether to swap it for NodeBB's Notifications "Unread" view.
### Notes
- SCSS + templates + `plugin.json` only; no JS behavior change. `./nodebb build` compiles clean.
- Pre-existing impeccable design-drift findings in touched files are unrelated to this diff and left as-is.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Reviewed-on: #32
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Co-committed-by: vickydotbat <vickydotbat@tutamail.com>
Wiki article text was capping at the plugin's default 70ch measure, leaving a wide dead strip inside the article card after the ToC-dock change.
- Set `--wiki-prose-measure: 54rem` (~90ch of body text; rem so the cap also applies to large headings — ch scales with font size and never caps them)
- Justify paragraphs, list items, and blockquotes with `hyphens: auto`
- Fit the article card to the measure (58rem) and widen the docked ToC column to absorb the leftover width
- Center the prose block with 1.5rem vertical padding
Verified on the theme-dev stack against /wiki/Lore/Gond (with long filler paragraphs) at 1561px, and the wiki hub for regressions.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Reviewed-on: #29
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Co-committed-by: vickydotbat <vickydotbat@tutamail.com>
Companion to sow-nodebb-plugin-wiki#22: the plugin now exposes `--wiki-scrim`/`--wiki-scrim-strong` for drawer and dialog backdrops. Override them from `--wg-bg-deep` so overlays match the plum/gold palette instead of the plugin's slate-blue defaults. Verified in the dev forum bundle.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Reviewed-on: #26
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Co-committed-by: vickydotbat <vickydotbat@tutamail.com>
Code blocks in posts rendered with the markdown plugin's default light highlight.js theme — white blocks on the dark ledger. This adds dark velvet pre/code styling and a Westgate-toned syntax palette (gold keywords, ledger-ink titles, muted green strings) for post content and the composer preview.
Also picks up the quick wins from an impeccable audit:
- Visible focus ring on the mobile drawer search (input had `outline: 0` with no replacement)
- Input placeholder contrast raised to pass WCAG 4.5:1; tagsinput placeholder reuses the token instead of `$gray-500`
- `prefers-reduced-motion` block zeroing transitions/animations (there were none before)
- Fixed a stray `</li>` closing a `<div>` in `quick-search-results.tpl`
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Reviewed-on: #25
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Co-committed-by: vickydotbat <vickydotbat@tutamail.com>