/* Brand colour tokens - PALETTE-TOKENS v1.

   The only place the template writes colours (other than neutral greys). Every stylesheet
   and script uses these variables: CSS through var(--c-...), rgba() through
   rgba(var(--c-...-rgb), alpha), and JS through brandColour("--c-...") (defined by
   src/web/render.js). test/brandColours.test.js fails on any other colour literal.

   A client never edits this file: python-port-tool writes the client's values for the
   --c-* tokens its palette changes to client/theme.css, which loads after this file. So
   template updates here and everywhere else merge cleanly into client repos.

   Palette tokens (--c-*) are named from python-port-tool's palette map: --c-<role> is a
   core colour, --c-<role>-<hex> a shade derived from it (the hex is its template value,
   kept as a stable name), --c-fixed-<hex> a colour that isn't recoloured per client
   unless a spec's literalOverrides says so. Page tokens (--td-*, ...) alias them. */

/* ---- palette:begin (generated by python-port-tool tokenise_template.py - edit values, keep names) ---- */
:root {
    /* primary (core colour and its shades) */
    --c-primary: #005B94;
    --c-primary-0099d8: #0099D8;
    --c-primary-0a2e5c: #0A2E5C;
    --c-primary-4a6c85: #4A6C85;
    --c-primary-5b8db8: #5B8DB8;
    /* secondary (core colour and its shades) */
    --c-secondary: #006FAF;
    --c-secondary-rgb: 0, 111, 175;
    --c-secondary-1b4965: #1B4965;
    /* accent (core colour and its shades) */
    --c-accent: #00B7E8;
    --c-accent-rgb: 0, 183, 232;
    --c-accent-0f7f9e: #0F7F9E;
    --c-accent-5fa8a3: #5FA8A3;
    --c-accent-7fd3f0: #7FD3F0;
    /* chrome (core colour and its shades) */
    --c-chrome: #0B2A40;
    --c-chrome-rgb: 11, 42, 64;
    --c-chrome-04121d: #04121D;
    --c-chrome-04121d-rgb: 4, 18, 29;
    --c-chrome-061826: #061826;
    --c-chrome-06202f: #06202F;
    --c-chrome-071c2b: #071C2B;
    --c-chrome-071d2e: #071D2E;
    --c-chrome-081f30: #081F30;
    --c-chrome-0a2233: #0A2233;
    --c-chrome-0a2638: #0A2638;
    --c-chrome-0e2c44: #0E2C44;
    --c-chrome-0e2f47: #0E2F47;
    --c-chrome-0e3552: #0E3552;
    --c-chrome-0f3550: #0F3550;
    --c-chrome-113550: #113550;
    --c-chrome-123853: #123853;
    --c-chrome-142f3e: #142F3E;
    --c-chrome-1f4460: #1F4460;
    --c-chrome-273d50: #273D50;
    /* text (core colour and its shades) */
    --c-text: #1E2A33;
    --c-text-rgb: 30, 42, 51;
    /* muted (core colour and its shades) */
    --c-muted: #5A6B78;
    --c-muted-718396: #718396;
    --c-muted-8c9ba8: #8C9BA8;
    /* sidebarMuted (core colour and its shades) */
    --c-sidebar-muted: #A9C9DC;
    --c-sidebar-muted-b9ccda: #B9CCDA;
    --c-sidebar-muted-e7eef3: #E7EEF3;
    /* background (core colour and its shades) */
    --c-background: #F4F8FB;
    --c-background-a9c0d2: #A9C0D2;
    --c-background-c0d2e0: #C0D2E0;
    --c-background-c9d8e4: #C9D8E4;
    --c-background-d3e0ea: #D3E0EA;
    --c-background-d6e8f3: #D6E8F3;
    --c-background-dbe7f7: #DBE7F7;
    --c-background-dfe9f1: #DFE9F1;
    --c-background-e2ecf7: #E2ECF7;
    --c-background-e2ecf7-rgb: 226, 236, 247;
    --c-background-e6eff6: #E6EFF6;
    --c-background-eaf1f6: #EAF1F6;
    --c-background-edf2f6: #EDF2F6;
    --c-background-eef2f6: #EEF2F6;
    --c-background-f1f6fa: #F1F6FA;
    --c-background-f7fafc: #F7FAFC;
    --c-background-fcfdfe: #FCFDFE;
    /* fixed colours (the same for every client unless a spec overrides them) */
    --c-fixed-006e70: #006E70;
    --c-fixed-059669: #059669;
    --c-fixed-0e7490: #0E7490;
    --c-fixed-0e7490-rgb: 14, 116, 144;
    --c-fixed-0f172a: #0F172A;
    --c-fixed-0f172a-rgb: 15, 23, 42;
    --c-fixed-0f766e: #0F766E;
    --c-fixed-111827: #111827;
    --c-fixed-16794c: #16794C;
    --c-fixed-188038: #188038;
    --c-fixed-1a5fd0: #1A5FD0;
    --c-fixed-1b2a6b: #1B2A6B;
    --c-fixed-1f2937: #1F2937;
    --c-fixed-2166a5: #2166A5;
    --c-fixed-245a32: #245A32;
    --c-fixed-2bb3a3: #2BB3A3;
    --c-fixed-2e9c9c: #2E9C9C;
    --c-fixed-374151: #374151;
    --c-fixed-3ecf8e: #3ECF8E;
    --c-fixed-3fbf6f: #3FBF6F;
    --c-fixed-4a90d9: #4A90D9;
    --c-fixed-59616a: #59616A;
    --c-fixed-68674e: #68674E;
    --c-fixed-6b7280: #6B7280;
    --c-fixed-6d28d9: #6D28D9;
    --c-fixed-715000: #715000;
    --c-fixed-7bd3a0: #7BD3A0;
    --c-fixed-80602c: #80602C;
    --c-fixed-8ab4f8: #8AB4F8;
    --c-fixed-8b5cf6: #8B5CF6;
    --c-fixed-8b5cf6-rgb: 139, 92, 246;
    --c-fixed-8c3027: #8C3027;
    --c-fixed-8ea88a: #8EA88A;
    --c-fixed-94a3b8: #94A3B8;
    --c-fixed-94a3b8-rgb: 148, 163, 184;
    --c-fixed-96317c: #96317C;
    --c-fixed-991b1b: #991B1B;
    --c-fixed-9a3412: #9A3412;
    --c-fixed-a04762: #A04762;
    --c-fixed-a34e0b: #A34E0B;
    --c-fixed-b08d57: #B08D57;
    --c-fixed-b3a16c: #B3A16C;
    --c-fixed-b42318: #B42318;
    --c-fixed-b42336: #B42336;
    --c-fixed-b45309: #B45309;
    --c-fixed-b5652f: #B5652F;
    --c-fixed-b91c1c: #B91C1C;
    --c-fixed-bd958b: #BD958B;
    --c-fixed-c147a0: #C147A0;
    --c-fixed-c2410c: #C2410C;
    --c-fixed-c5221f: #C5221F;
    --c-fixed-c7835c: #C7835C;
    --c-fixed-c8b08a: #C8B08A;
    --c-fixed-c8b08a-rgb: 200, 176, 138;
    --c-fixed-cbd5e1: #CBD5E1;
    --c-fixed-d56d6d: #D56D6D;
    --c-fixed-d9534f: #D9534F;
    --c-fixed-d97706: #D97706;
    --c-fixed-dce8da: #DCE8DA;
    --c-fixed-e2984a: #E2984A;
    --c-fixed-e7b8c4: #E7B8C4;
    --c-fixed-e8844a: #E8844A;
    --c-fixed-ea580c: #EA580C;
    --c-fixed-ea580c-rgb: 234, 88, 12;
    --c-fixed-eae0c4: #EAE0C4;
    --c-fixed-ecdcd7: #ECDCD7;
    --c-fixed-f1f5f9: #F1F5F9;
    --c-fixed-f28b82: #F28B82;
    --c-fixed-f5f3ff: #F5F3FF;
    --c-fixed-f5f3ff-rgb: 245, 243, 255;
    --c-fixed-f6b26b: #F6B26B;
    --c-fixed-f6f8fb: #F6F8FB;
    --c-fixed-f6f8fb-rgb: 246, 248, 251;
    --c-fixed-f87171: #F87171;
    --c-fixed-f8fafc: #F8FAFC;
    --c-fixed-f8fafc-rgb: 248, 250, 252;
    --c-fixed-fef2f2: #FEF2F2;
    --c-fixed-fef2f2-rgb: 254, 242, 242;
    --c-fixed-ff7a8a: #FF7A8A;
    --c-fixed-ffedd5: #FFEDD5;
    --c-fixed-ffedd5-rgb: 255, 237, 213;
    --c-fixed-fff7ed: #FFF7ED;
    --c-fixed-fff7ed-rgb: 255, 247, 237;
}
/* ---- palette:end ---- */

/* ---- 12-Month Portfolio Changes (trading-decisions.html) ----
   accent: portfolio line, quarterly rebalances, New / Increased
   primary: Reduced, quarter headers
   review: monthly reviews only (fixed orange, not a brand colour)
   bench: benchmark, a neutral dashed reference line
   The accent / review pair was checked for colour-blind separation in both
   themes (dataviz validator: normal dE 26-28, CVD dE >= 19.7). */
:root {
    --td-accent: var(--c-accent);
    --td-primary: var(--c-primary);
    --td-review: var(--c-fixed-e8844a);
    --td-bench: var(--c-muted-8c9ba8);
    --td-badge-ink: var(--c-chrome-06202f);
}
:root[data-theme="light"] {
    --td-review: var(--c-fixed-b5652f);
    --td-bench: var(--c-muted);
    --td-accent-ink: var(--c-secondary);
}

/* ---- Typography: the one UI font stack (not a colour, so the port tool leaves it alone).
   Every page body, form control, Chart.js chart (theme.js) and canvas label uses it.
   Inter is used where installed; otherwise Segoe UI on Windows, Roboto on Android. ---- */
:root { --font-sans: Inter, "Segoe UI", Roboto, Arial, sans-serif; }
