using Godot; namespace Theriapolis.GodotHost.UI; /// /// Color, font, and spacing tokens lifted from /// CharacterCreator.zip/index.html's :root block. Variable /// names mirror the React prototype's CSS custom properties so the audit /// trail is readable: --bg, --ink, --gild, --seal, etc. /// /// Single theme ships: Dark (leather + candlelight). The React prototype /// shipped Parchment and Blood as alternates and Compact density as a dev /// toggle; per user direction during M5, only Dark is needed for this /// game and the rest are dropped from scope (port plan §10 resolved /// decisions). /// public struct CodexPalette { public Color Bg, Bg2, BgDeep, Ink, InkSoft, InkMute, Rule, Gild, Seal, Seal2, Accent; public static readonly CodexPalette Dark = new() { Bg = Hex("#1c1410"), Bg2 = Hex("#261b14"), BgDeep = Hex("#100a07"), Ink = Hex("#f0e2c4"), InkSoft = Hex("#d4be90"), InkMute = Hex("#8c7651"), Rule = Hex("#6b5635"), Gild = Hex("#d8a84a"), Seal = Hex("#b03021"), Seal2 = Hex("#7a1f12"), Accent = Hex("#d8a84a"), }; private static Color Hex(string s) => new(s); } /// /// Spacing + radius tokens. Density is locked at "normal" per port plan /// §10 (compact mode dropped from scope). /// public static class CodexSpacing { public const int Gap = 24; // --gap public const int Pad = 28; // --pad public const int Radius = 2; // --radius } /// /// Font-size + letter-spacing tokens. Sizes are in px, matching the CSS. /// Letter-spacing values are in em multiplied by 1000 (em isn't a Godot /// concept; we use it for documentation only — see CodexTheme for actual /// Theme constant assignment). /// public static class CodexType { // Headings (h1..h4) public const int H1Size = 38; public const int H2Size = 28; public const int H3Size = 20; public const int H4Size = 14; // Body / display public const int BodySize = 14; public const int BodyLargeSize = 15; // Mono micro-text (eyebrows, meta lines, codex-sub) public const int MonoEyebrowSize = 11; public const int MonoSmallSize = 10; public const int MonoXSmallSize = 9; // Codex title (.codex-title) public const int CodexTitleSize = 28; // Card components public const int CardNameSize = 22; public const int CardBodySize = 14; // Buttons public const int BtnSize = 16; public const int BtnSmallSize = 13; // Stepper public const int StepperNumSize = 22; public const int StepperNameSize = 10; }