@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-gold-lit: #e0c878; --wg-gold-hi: #fff4dd; --wg-gold-plate: #5a4a1a; --wg-gold-plate-hover: #6a5720; --wg-gold-plate-mid: #53431a; --wg-gold-plate-deep: #473914; --wg-red: #8e3438; /* prototype (#53): rgb triples so alpha uses swap with the palette candidate */ --wg-gold-rgb: 194, 163, 90; --wg-ledger-ink-rgb: 216, 194, 138; --wg-bg-deep-rgb: 9, 8, 11; --wg-bg-deepest-rgb: 8, 7, 10; --wg-plum-rgb: 42, 18, 34; --wg-red-rgb: 142, 52, 56; --wg-stamp-rgb: 168, 74, 78; --wg-status-online: #7fb86a; --wg-status-away: #d9b44a; --wg-status-dnd: #c55a5f; --wg-status-offline: #b7b0a6; --wg-status-ring: rgba(var(--wg-bg-deep-rgb), 0.9); --wg-text: #e6e0d6; --wg-text-soft: #b9b2a6; --wg-text-muted: #9a9086; --wg-border: rgba(var(--wg-gold-rgb), 0.14); --wg-border-soft: rgba(var(--wg-gold-rgb), 0.08); --wg-focus: rgba(var(--wg-gold-rgb), 0.28); --wg-focus-ring: #c2a35a; --wg-ledger-panel: rgba(21, 17, 26, 0.97); --wg-ledger-ruling: rgba(var(--wg-gold-rgb), 0.055); --wg-ledger-rule-strong: rgba(var(--wg-gold-rgb), 0.16); --wg-ledger-border: rgba(var(--wg-gold-rgb), 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(var(--wg-gold-rgb), 0.15), rgba(var(--wg-gold-rgb), 0.05)); } ::selection { background: rgba(var(--wg-gold-rgb), 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); }