Files
sow-nodebb-theme/scss/westgate/_tokens.scss
T
archvillainetteandClaude Opus 4.8 80ad68c640 fix: wiki index no longer bumps right; harden Harmony Inter/Poppins fonts
#30 — namespace index / section listing pages had their heading, lead, and
page list pushed into a narrow centered column with a big left gutter. The
listing card reuses the .wiki-article-prose class, so the article-body reading
treatment leaked onto it: the wiki plugin caps prose children at
--wiki-prose-measure (54rem) and the theme margin-inline:autos them. Opt the
.wiki-namespace-index card out of that measure/centering so the listing runs
full-width and left-aligned. Verified with a before/after render of the real
section markup against the compiled CSS.

Inter 404 (sow-nodebb#13) — Harmony emits Inter/Poppins @font-face at our asset
path and points its sans/secondary font vars 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). Pin the Harmony rules that read
those vars directly (.ff-sans, .ff-secondary, breadcrumb divider) to our fonts
so nothing can request Inter/Poppins, and drop the two dead staticDirs. The live
404 clears once the nodebb image is rebuilt from current theme main.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-18 09:43:08 +02:00

156 lines
5.0 KiB
SCSS

@font-face {
font-family: "Cinzel";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("./plugins/nodebb-theme-westgate/fonts/cinzel/cinzel-latin-400-normal.woff2") format("woff2");
}
@font-face {
font-family: "Cinzel";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("./plugins/nodebb-theme-westgate/fonts/cinzel/cinzel-latin-500-normal.woff2") format("woff2");
}
@font-face {
font-family: "Cinzel";
font-style: normal;
font-weight: 600;
font-display: swap;
src: url("./plugins/nodebb-theme-westgate/fonts/cinzel/cinzel-latin-600-normal.woff2") format("woff2");
}
@font-face {
font-family: "Cinzel";
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("./plugins/nodebb-theme-westgate/fonts/cinzel/cinzel-latin-700-normal.woff2") format("woff2");
}
@font-face {
font-family: "Jost";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("./plugins/nodebb-theme-westgate/fonts/jost/jost-latin-400-normal.woff2") format("woff2");
}
@font-face {
font-family: "Jost";
font-style: normal;
font-weight: 600;
font-display: swap;
src: url("./plugins/nodebb-theme-westgate/fonts/jost/jost-latin-600-normal.woff2") format("woff2");
}
@font-face {
font-family: "Jost";
font-style: italic;
font-weight: 400;
font-display: swap;
src: url("./plugins/nodebb-theme-westgate/fonts/jost/jost-latin-400-italic.woff2") format("woff2");
}
@font-face {
font-family: "IBM Plex Mono";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("./plugins/nodebb-theme-westgate/fonts/ibm-plex-mono/ibm-plex-mono-latin-400-normal.woff2") format("woff2");
}
@font-face {
font-family: "IBM Plex Mono";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("./plugins/nodebb-theme-westgate/fonts/ibm-plex-mono/ibm-plex-mono-latin-500-normal.woff2") format("woff2");
}
:root {
--wg-space-2xs: 0.25rem;
--wg-space-xs: 0.5rem;
--wg-space-sm: 0.75rem;
--wg-space-md: 1rem;
--wg-space-lg: 1.5rem;
--wg-space-xl: 2rem;
--wg-ledger-line: 1.78rem;
--wg-page-width: 1420px;
--wg-font-display: "Cinzel", Georgia, "Times New Roman", serif;
--wg-font-text: "Jost", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
--wg-font-ui: "Jost", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
--wg-font-code: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
--wg-bg: #0f0d12;
--wg-bg-deep: #09080b;
--wg-panel: #18141d;
--wg-panel-2: #110f15;
--wg-panel-3: #201924;
--wg-plum: #2a1222;
--wg-plum-soft: #3a1830;
--wg-gold: #c2a35a;
--wg-gold-soft: #a8893f;
--wg-red: #8e3438;
--wg-status-online: #7fb86a;
--wg-status-away: #d9b44a;
--wg-status-dnd: #c55a5f;
--wg-status-offline: #b7b0a6;
--wg-status-ring: rgba(9, 8, 11, 0.9);
--wg-text: #e6e0d6;
--wg-text-soft: #b9b2a6;
--wg-text-muted: #9a9086;
--wg-border: rgba(194, 163, 90, 0.14);
--wg-border-soft: rgba(194, 163, 90, 0.08);
--wg-focus: rgba(194, 163, 90, 0.28);
--wg-focus-ring: #c2a35a;
--wg-ledger-panel: rgba(21, 17, 26, 0.97);
--wg-ledger-ruling: rgba(194, 163, 90, 0.055);
--wg-ledger-rule-strong: rgba(194, 163, 90, 0.16);
--wg-ledger-border: rgba(194, 163, 90, 0.18);
--wg-ledger-ink: #d8c28a;
--wg-ledger-ink-muted: #a99d8f;
--wg-ledger-stamp: #a84a4e;
--wg-ledger-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.024), inset 0 -1px 0 rgba(0, 0, 0, 0.42), 0 8px 18px rgba(0, 0, 0, 0.2);
--wg-etched-highlight: rgba(246, 223, 163, 0.34);
--wg-etched-shadow: rgba(23, 12, 16, 0.82);
--wg-velvet-panel: rgba(24, 20, 29, 0.97);
--wg-velvet-panel-hover: rgba(31, 26, 38, 0.98);
--wg-velvet-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.025), inset 0 0 34px rgba(96, 32, 68, 0.11), 0 10px 26px rgba(0, 0, 0, 0.24);
--wg-control-bg: linear-gradient(to bottom, rgba(194, 163, 90, 0.15), rgba(194, 163, 90, 0.05));
}
::selection {
background: rgba(194, 163, 90, 0.32);
color: #fff4dd;
}
/* Harmony base-theme font correction.
Harmony generates @font-face for Inter/Poppins at our asset path and points
$font-family-sans-serif -> "Inter" and $font-family-secondary -> "Poppins"
in its own overrides.scss. We ship Jost + Cinzel, not those families, and do
not declare @fontsource/inter|poppins as deps -- so any element that resolves
to Inter/Poppins 404s in production on /assets/plugins/nodebb-theme-westgate/
inter/... (it only happens to resolve in dev via npm hoisting). Our BS-variable
override already keeps the current cascade on Jost, but that hinges on subtle
import order; pin the handful of Harmony rules that read those SCSS variables
directly (.ff-sans, .ff-secondary, the breadcrumb divider) to our own fonts so
nothing can request Inter/Poppins even if a Harmony bump flips the order. The
now-pointless inter/poppins staticDirs are removed from plugin.json alongside. */
.ff-sans {
font-family: var(--wg-font-ui) !important;
}
.ff-secondary {
font-family: var(--wg-font-display);
}
.breadcrumb .breadcrumb-item {
font-family: var(--wg-font-display);
}
.breadcrumb .breadcrumb-item::before {
font-family: var(--wg-font-ui);
}