@medquantis/design-system 0.0.0-bootstrap.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/LICENSE +44 -0
  2. package/README.md +145 -2
  3. package/brand/LICENSE +8 -0
  4. package/brand/favicon/apple-touch-icon.png +0 -0
  5. package/brand/favicon/favicon.ico +0 -0
  6. package/brand/favicon/favicon.svg +1 -0
  7. package/brand/favicon/icon-192.png +0 -0
  8. package/brand/favicon/icon-512.png +0 -0
  9. package/brand/monogram-small.svg +1 -0
  10. package/brand/monogram-square.svg +1 -0
  11. package/brand/monogram.svg +1 -0
  12. package/brand/wordmark-on-light-print.svg +1 -0
  13. package/brand/wordmark-on-light.svg +1 -0
  14. package/brand/wordmark-on-navy-print.svg +1 -0
  15. package/brand/wordmark-on-navy.svg +1 -0
  16. package/css/app.css +57 -0
  17. package/css/base.css +124 -0
  18. package/css/components.css +469 -0
  19. package/css/print.css +59 -0
  20. package/css/slide.css +110 -0
  21. package/dist/kit-contract.css +73 -0
  22. package/dist/llms-full.txt +942 -0
  23. package/dist/llms.txt +39 -0
  24. package/dist/tailwind.css +116 -0
  25. package/dist/tokens.css +179 -0
  26. package/dist/tokens.json +1802 -0
  27. package/fonts/fonts.css +76 -0
  28. package/fonts/geist-mono/OFL.txt +93 -0
  29. package/fonts/geist-mono/geist-mono-latin-ext-wght-normal.woff2 +0 -0
  30. package/fonts/geist-mono/geist-mono-latin-wght-normal.woff2 +0 -0
  31. package/fonts/newsreader/OFL.txt +93 -0
  32. package/fonts/newsreader/newsreader-latin-ext-wght-italic.woff2 +0 -0
  33. package/fonts/newsreader/newsreader-latin-ext-wght-normal.woff2 +0 -0
  34. package/fonts/newsreader/newsreader-latin-wght-italic.woff2 +0 -0
  35. package/fonts/newsreader/newsreader-latin-wght-normal.woff2 +0 -0
  36. package/fonts/outfit/OFL.txt +93 -0
  37. package/fonts/outfit/outfit-latin-ext-wght-normal.woff2 +0 -0
  38. package/fonts/outfit/outfit-latin-wght-normal.woff2 +0 -0
  39. package/guidelines/LICENSE +8 -0
  40. package/guidelines/README.md +310 -0
  41. package/guidelines/accessibility.md +62 -0
  42. package/guidelines/brand.md +75 -0
  43. package/guidelines/charts.md +84 -0
  44. package/guidelines/colour.md +102 -0
  45. package/guidelines/data-patterns.md +60 -0
  46. package/guidelines/layout.md +110 -0
  47. package/guidelines/principles.md +28 -0
  48. package/guidelines/specialising.md +40 -0
  49. package/guidelines/typography.md +76 -0
  50. package/guidelines/voice.md +42 -0
  51. package/guidelines/writing.md +40 -0
  52. package/icons/LICENSE +43 -0
  53. package/icons/lucide.min.js +12 -0
  54. package/icons/manifest.json +7 -0
  55. package/package.json +66 -4
  56. package/stylelint.config.mjs +52 -0
package/dist/llms.txt ADDED
@@ -0,0 +1,39 @@
1
+ # MedQuantis design system
2
+
3
+ > Design tokens, shared CSS, self-hosted fonts, brand files and written guidelines for every MedQuantis medium: slides, A4 reports, papers, the website, newsletters and interactive apps. Navy is the single brand accent; documents never use status colours.
4
+
5
+ Every value is a `--mq-*` CSS custom property in `tokens.css`. Use the semantic names, never the `--mq-core-*` ones, and never write a literal colour, font, radius or spacing value. Status colours (`--mq-success`, `--mq-warning`, `--mq-danger`, `--mq-info`) are for interactive apps only, always with an icon or a word. Corners are 3 px for small items and 6 px for cards; 12 px only for app dialogs, drawers and command palettes. Numbers use the straight apostrophe as thousands separator, a decimal point, a non-breaking space before `%` and after `CHF`. Copy never contains an em dash or an en dash.
6
+
7
+ The links below point at the exact release on the jsDelivr CDN; pin that version, never a range.
8
+
9
+ ## Guidelines
10
+
11
+ - [Principles](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/guidelines/principles.md): The principles that decide the cases the other files do not cover
12
+ - [Brand](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/guidelines/brand.md): Name, tagline, legal line, wordmark, monogram, favicon, icons
13
+ - [Voice](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/guidelines/voice.md): Tone, words to prefer and avoid, languages, terminology in French, German, Italian and English
14
+ - [Writing](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/guidelines/writing.md): No em or en dash, titles, sentences and lists, French typography
15
+ - [Colour](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/guidelines/colour.md): Semantic colour tokens, the medium split, navy panels, states by mark style, status colours in apps
16
+ - [Typography](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/guidelines/typography.md): Families, weights, roles, sizes and line heights
17
+ - [Layout](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/guidelines/layout.md): Media, report skeleton, widths and spacing, radius, components, tables, app patterns, print
18
+ - [Charts](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/guidelines/charts.md): The ordered palette, highlight on grey, sequential and diverging use, marks, legends
19
+ - [Data patterns](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/guidelines/data-patterns.md): Numbers, amounts, dates, null versus zero, confidential and illustrative data
20
+ - [Accessibility](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/guidelines/accessibility.md): WCAG 2.2 AA, contrast pairs, focus, targets, motion, structure
21
+ - [Specialising the design system](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/guidelines/specialising.md): Framework neutrality, the four rules, the promotion tests, the one-off log
22
+
23
+ ## Tokens and CSS
24
+
25
+ - [tokens.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/dist/tokens.css): every token as a `--mq-*` custom property; load it first
26
+ - [tokens.json](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/dist/tokens.json): every token with its resolved value and description
27
+ - [tailwind.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/dist/tailwind.css): Tailwind 4 theme with 50 to 950 scales, for apps
28
+ - [base.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/css/base.css): typography roles for documents
29
+ - [components.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/css/components.css): the shared `mq-` document components
30
+ - [slide.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/css/slide.css): the 1280 by 720 slide canvas
31
+ - [print.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/css/print.css): A4 pages with exact colour printing
32
+ - [app.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/css/app.css): status badges, for interactive apps only
33
+ - [fonts.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/fonts/fonts.css): self-hosted Outfit, Newsreader and Geist Mono
34
+
35
+ ## Optional
36
+
37
+ - [llms-full.txt](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/dist/llms-full.txt): every guideline in full and every token with its value
38
+ - [kit-contract.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/dist/kit-contract.css): unprefixed names for homemade-claude-kit renderers only, never loaded in an app
39
+ - [Guidelines index](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0.0/guidelines/README.md): the file list and where each legacy rule went
@@ -0,0 +1,116 @@
1
+ /*
2
+ * MedQuantis Tailwind 4 theme, generated from tokens/ by the design-system build. Do not edit.
3
+ * Import it after Tailwind: @import "tailwindcss"; then this file. It loads tokens.css itself.
4
+ * Scales (50 to 950) are derived in OKLCH from one token each; step 500 is that token.
5
+ */
6
+ @import "./tokens.css";
7
+
8
+ @theme static {
9
+ --color-navy-50: #f1f5fd;
10
+ --color-navy-100: #dce3f1;
11
+ --color-navy-200: #bec9de;
12
+ --color-navy-300: #91a2c3;
13
+ --color-navy-400: #5e74a1;
14
+ --color-navy-500: #0a2463;
15
+ --color-navy-600: #071e55;
16
+ --color-navy-700: #051847;
17
+ --color-navy-800: #03123a;
18
+ --color-navy-900: #020c2e;
19
+ --color-navy-950: #010721;
20
+ --color-success-50: #f0f8f0;
21
+ --color-success-100: #e0eee0;
22
+ --color-success-200: #c9dfc8;
23
+ --color-success-300: #a7c8a6;
24
+ --color-success-400: #7ead7d;
25
+ --color-success-500: #2e7d32;
26
+ --color-success-600: #276c2a;
27
+ --color-success-700: #1f5b22;
28
+ --color-success-800: #184b1b;
29
+ --color-success-900: #123b14;
30
+ --color-success-950: #0b2c0d;
31
+ --color-warning-50: #fbf4ed;
32
+ --color-warning-100: #f4e8dc;
33
+ --color-warning-200: #e9d6c2;
34
+ --color-warning-300: #d9bc9d;
35
+ --color-warning-400: #c59d6f;
36
+ --color-warning-500: #a06400;
37
+ --color-warning-600: #8b5600;
38
+ --color-warning-700: #764800;
39
+ --color-warning-800: #613b00;
40
+ --color-warning-900: #4e2e00;
41
+ --color-warning-950: #3b2200;
42
+ --color-danger-50: #fff2f0;
43
+ --color-danger-100: #ffe3e0;
44
+ --color-danger-200: #ffcdc7;
45
+ --color-danger-300: #fbaca4;
46
+ --color-danger-400: #f1837a;
47
+ --color-danger-500: #d8232a;
48
+ --color-danger-600: #bc1d23;
49
+ --color-danger-700: #a0171c;
50
+ --color-danger-800: #851116;
51
+ --color-danger-900: #6b0c10;
52
+ --color-danger-950: #53070a;
53
+ --color-info-50: #eff6ff;
54
+ --color-info-100: #ddeafc;
55
+ --color-info-200: #c4d9f5;
56
+ --color-info-300: #9fbfea;
57
+ --color-info-400: #72a0dc;
58
+ --color-info-500: #1565c0;
59
+ --color-info-600: #1157a7;
60
+ --color-info-700: #0c498e;
61
+ --color-info-800: #083c76;
62
+ --color-info-900: #052f5f;
63
+ --color-info-950: #032249;
64
+ }
65
+
66
+ @theme inline {
67
+ --font-sans: var(--mq-font-family-ui);
68
+ --font-serif: var(--mq-font-family-body);
69
+ --font-mono: var(--mq-font-family-mono);
70
+ --font-heading: var(--mq-font-family-heading);
71
+ --radius: var(--mq-radius-small);
72
+ --radius-xs: var(--mq-radius-small);
73
+ --radius-sm: var(--mq-radius-small);
74
+ --radius-md: var(--mq-radius-medium);
75
+ --radius-lg: var(--mq-radius-medium);
76
+ --radius-xl: var(--mq-radius-medium);
77
+ --radius-2xl: var(--mq-radius-medium);
78
+ --radius-3xl: var(--mq-radius-medium);
79
+ --radius-4xl: var(--mq-radius-medium);
80
+ --radius-overlay: var(--mq-radius-overlay);
81
+ --color-chart-series-1: var(--mq-chart-series-1);
82
+ --color-chart-series-2: var(--mq-chart-series-2);
83
+ --color-chart-series-3: var(--mq-chart-series-3);
84
+ --color-chart-series-4: var(--mq-chart-series-4);
85
+ --color-chart-rest: var(--mq-chart-rest);
86
+ --color-chart-axis: var(--mq-chart-axis);
87
+ --color-chart-baseline: var(--mq-chart-baseline);
88
+ --color-accent: var(--mq-accent);
89
+ --color-accent-hover: var(--mq-accent-hover);
90
+ --color-accent-pale: var(--mq-accent-pale);
91
+ --color-accent-pale-2: var(--mq-accent-pale-2);
92
+ --color-on-accent: var(--mq-on-accent);
93
+ --color-ink: var(--mq-ink);
94
+ --color-muted: var(--mq-muted);
95
+ --color-tertiary: var(--mq-tertiary);
96
+ --color-decoration: var(--mq-decoration);
97
+ --color-canvas: var(--mq-canvas);
98
+ --color-surface: var(--mq-surface);
99
+ --color-surface-alt: var(--mq-surface-alt);
100
+ --color-desk: var(--mq-desk);
101
+ --color-border: var(--mq-border);
102
+ --color-border-light: var(--mq-border-light);
103
+ --color-border-strong: var(--mq-border-strong);
104
+ --color-panel-start: var(--mq-panel-start);
105
+ --color-panel-end: var(--mq-panel-end);
106
+ --color-on-navy-title: var(--mq-on-navy-title);
107
+ --color-on-navy-secondary: var(--mq-on-navy-secondary);
108
+ --color-on-navy-second-level: var(--mq-on-navy-second-level);
109
+ --color-on-navy-accent: var(--mq-on-navy-accent);
110
+ --color-on-navy-rule: var(--mq-on-navy-rule);
111
+ --color-on-navy-rule-strong: var(--mq-on-navy-rule-strong);
112
+ --color-on-navy-pill: var(--mq-on-navy-pill);
113
+ --color-on-navy-discreet: var(--mq-on-navy-discreet);
114
+ --color-warning-fill: var(--mq-warning-fill);
115
+ --color-warning-tint: var(--mq-warning-tint);
116
+ }
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+
5
+ :root {
6
+ --mq-core-navy: #0a2463; /** MedQuantis navy, the single brand accent everywhere (ADR-0003). */
7
+ --mq-core-navy-hover: #061a4d; /** Navy hover state (Report design system, 2026-10-08). */
8
+ --mq-core-navy-2: #0f2a5e; /** Lightest stop of the navy panel and hero gradients (Report design system, 2026-10-08). */
9
+ --mq-core-navy-3: #0a2047; /** Middle stop of the navy panel and hero gradients (Report design system, 2026-10-08). */
10
+ --mq-core-navy-4: #071733; /** Darkest stop of the hero gradient (Report design system, 2026-10-08). */
11
+ --mq-core-pale: #eaeef7; /** Pale navy fill for a highlighted state (Report design system, 2026-10-08). */
12
+ --mq-core-pale-2: #f2f4f9; /** Quieter pale navy fill (Report design system, 2026-10-08). */
13
+ --mq-core-bluegrey-1: #5d6f91; /** Blue-grey 1, darkest of the secondary family (Report design system, 2026-10-08). */
14
+ --mq-core-bluegrey-2: #8795b3; /** Blue-grey 2 (Report design system, 2026-10-08). */
15
+ --mq-core-bluegrey-3: #c3cbdc; /** Blue-grey 3 (Report design system, 2026-10-08). */
16
+ --mq-core-bluegrey-4: #dde3ee; /** Blue-grey 4, lightest of the secondary family (Report design system, 2026-10-08). */
17
+ --mq-core-grey-950: #1a1a1a; /** Warm near-black (Report design system, 2026-10-08). */
18
+ --mq-core-grey-700: #555555; /** Warm dark grey (Report design system, 2026-10-08). */
19
+ --mq-core-grey-600: #707070; /** Owner ruling 1, 2026-10-09: the tertiary grey for all text, 4.74:1 on canvas. */
20
+ --mq-core-grey-500: #8c8c8c; /** Owner ruling 1, 2026-10-09: non-text decoration only, 3.22:1 on canvas. */
21
+ --mq-core-grey-300: #dddbd6; /** Warm border grey (Report design system, 2026-10-08). */
22
+ --mq-core-grey-250: #e9e8e4; /** Owner ruling 9, 2026-10-09: the on-screen desk around a page preview. */
23
+ --mq-core-grey-200: #ebeae6; /** Warm hairline grey (Report design system, 2026-10-08). */
24
+ --mq-core-grey-100: #f5f4f1; /** Warm recessed surface (Report design system, 2026-10-08). */
25
+ --mq-core-grey-50: #fafaf8; /** Owner ruling 9, 2026-10-09: warm off-white of every document page. */
26
+ --mq-core-white: #ffffff; /** White (Report design system, 2026-10-08). */
27
+ --mq-core-white-alpha-68: rgba(255, 255, 255, 0.68); /** Owner ruling 2, 2026-10-09: white at 68 % for secondary text on navy. */
28
+ --mq-core-white-alpha-40: rgba(255, 255, 255, 0.4); /** Owner ruling 2, 2026-10-09: white at 40 % for discreet numbers on navy. */
29
+ --mq-core-white-alpha-18: rgba(255, 255, 255, 0.18); /** Owner ruling 2, 2026-10-09: white at 18 % for rules on navy. */
30
+ --mq-core-white-alpha-16: rgba(255, 255, 255, 0.16); /** Owner ruling 2, 2026-10-09: white at 16 % for rules on navy. */
31
+ --mq-core-white-alpha-12: rgba(255, 255, 255, 0.12); /** Owner ruling 2, 2026-10-09: white at 12 % for icon-pill fills on navy. */
32
+ --mq-core-green: #2e7d32; /** Success hue for interactive apps (ADR-0004). */
33
+ --mq-core-amber: #d4850a; /** Owner ruling 5, 2026-10-09: warning fill, always with ink text (ADR-0004). */
34
+ --mq-core-amber-strong: #a06400; /** Owner ruling 5, 2026-10-09: warning text, icon and border, 4.86:1 on white (ADR-0004). */
35
+ --mq-core-amber-tint: #fbf3e7; /** Owner ruling 5, 2026-10-09: warning tint, the warning fill at 10 % on white; warning strong on it is 4.42:1, so text on the tint stays ink. */
36
+ --mq-core-red: #d8232a; /** Swiss red, kept only as the danger status colour (ADR-0003, ADR-0004). */
37
+ --mq-core-blue: #1565c0; /** Info hue for interactive apps (ADR-0004). */
38
+ --mq-core-font-family-outfit: Outfit, system-ui, -apple-system, 'Segoe UI', sans-serif; /** Outfit, the sans for headings, labels and app UI (Owner ruling 10, 2026-10-09). */
39
+ --mq-core-font-family-newsreader: Newsreader, Georgia, 'Times New Roman', serif; /** Newsreader, the only serif; Georgia and Times New Roman are fallbacks only (Owner ruling 10, 2026-10-09). */
40
+ --mq-core-font-family-geist-mono: 'Geist Mono', ui-monospace, 'SF Mono', Menlo, monospace; /** Geist Mono for figures and codes (Owner ruling 10, 2026-10-09). */
41
+ --mq-core-font-weight-300: 300; /** Light weight (Owner ruling 6, 2026-10-09: the Quantis half of the wordmark). */
42
+ --mq-core-font-weight-400: 400; /** Regular weight for body text (Report design system, 2026-10-08). */
43
+ --mq-core-font-weight-500: 500; /** Owner ruling 4, 2026-10-09: medium weight for every heading, column title and hero figure. */
44
+ --mq-core-font-weight-600: 600; /** Owner ruling 4, 2026-10-09: semibold only for a short highlighted word inside body text. */
45
+ --mq-core-font-size-11: 11px; /** Font size 11 px (Report design system, 2026-10-08). */
46
+ --mq-core-font-size-13: 13px; /** Font size 13 px (Report design system, 2026-10-08). */
47
+ --mq-core-font-size-14: 14px; /** Font size 14 px (Report design system, 2026-10-08). */
48
+ --mq-core-font-size-15: 15px; /** Font size 15 px (Report design system, 2026-10-08). */
49
+ --mq-core-font-size-16: 16px; /** Font size 16 px (Report design system, 2026-10-08). */
50
+ --mq-core-font-size-18: 18px; /** Font size 18 px (Report design system, 2026-10-08). */
51
+ --mq-core-font-size-20: 20px; /** Font size 20 px (Report design system, 2026-10-08). */
52
+ --mq-core-font-size-24: 24px; /** Font size 24 px (Report design system, 2026-10-08). */
53
+ --mq-core-font-size-30: 30px; /** Font size 30 px (Report design system, 2026-10-08). */
54
+ --mq-core-font-size-32: 32px; /** Font size 32 px (Report design system, 2026-10-08). */
55
+ --mq-core-font-size-34: 34px; /** Font size 34 px (Report design system, 2026-10-08). */
56
+ --mq-core-font-size-36: 36px; /** Font size 36 px (increment 07 component need: the slide title, Report design system, 2026-10-08). */
57
+ --mq-core-font-size-50: 50px; /** Font size 50 px (Report design system, 2026-10-08). */
58
+ --mq-core-font-size-56: 56px; /** Font size 56 px (Report design system, 2026-10-08). */
59
+ --mq-core-font-size-12-5: 12.5px; /** Font size 12.5 px (Report design system, 2026-10-08). */
60
+ --mq-core-font-size-16-5: 16.5px; /** Font size 16.5 px (Report design system, 2026-10-08). */
61
+ --mq-core-radius-3: 3px; /** Owner ruling 3, 2026-10-09: small items (tags, inputs, chips). */
62
+ --mq-core-radius-6: 6px; /** Owner ruling 3, 2026-10-09: cards and panels; the maximum anywhere, no pill shapes. */
63
+ --mq-core-radius-12: 12px; /** Owner ruling 3, amended 2026-10-10: the one exception above 6 px, for app dialogs and modals, side drawers and command palettes only; never in documents, slides, cards or website media. */
64
+ --mq-core-shadow-small: 0px 1px 2px 0px rgba(0, 0, 0, 0.05); /** Small elevation for cards (increment 07 component need, Report design system, 2026-10-08). */
65
+ --mq-core-shadow-medium: 0px 3px 12px 0px rgba(0, 0, 0, 0.07); /** Medium elevation for a slide or page shown on the desk (increment 07 component need, Report design system, 2026-10-08). */
66
+ --mq-core-shadow-panel: 0px 14px 36px 0px rgba(10, 36, 99, 0.24); /** Navy-tinted elevation for navy panels (increment 07 component need, Report design system, 2026-10-08). */
67
+ --mq-core-size-720: 720px; /** Slide canvas height, 720 px (increment 07 component need: the 1280 by 720 slide canvas). */
68
+ --mq-core-size-760: 760px; /** Reading measure, 760 px (increment 07 component need, Report design system, 2026-10-08). */
69
+ --mq-core-size-1040: 1040px; /** Content width of a screen document, 1040 px (increment 07 component need, Report design system, 2026-10-08). */
70
+ --mq-core-size-1280: 1280px; /** Slide canvas width, 1280 px (increment 07 component need: the 1280 by 720 slide canvas). */
71
+ --mq-core-size-a4-width: 793.7px; /** A4 sheet width, 210 mm at 96 px per inch (increment 07 component need: the A4 print page). */
72
+ --mq-core-size-a4-height: 1122.52px; /** A4 sheet height, 297 mm at 96 px per inch (increment 07 component need: the A4 print page). */
73
+ --mq-core-space-4: 4px; /** Spacing step 4 px on the 4 and 8 px grid (Report design system, 2026-10-08). */
74
+ --mq-core-space-8: 8px; /** Spacing step 8 px on the 4 and 8 px grid (Report design system, 2026-10-08). */
75
+ --mq-core-space-12: 12px; /** Spacing step 12 px on the 4 and 8 px grid (Report design system, 2026-10-08). */
76
+ --mq-core-space-16: 16px; /** Spacing step 16 px on the 4 and 8 px grid (Report design system, 2026-10-08). */
77
+ --mq-core-space-24: 24px; /** Spacing step 24 px on the 4 and 8 px grid (Report design system, 2026-10-08). */
78
+ --mq-core-space-32: 32px; /** Spacing step 32 px on the 4 and 8 px grid (Report design system, 2026-10-08). */
79
+ --mq-core-space-48: 48px; /** Spacing step 48 px on the 4 and 8 px grid (Report design system, 2026-10-08). */
80
+ --mq-core-space-72: 72px; /** Spacing step 72 px on the 4 and 8 px grid (Report design system, 2026-10-08). */
81
+ --mq-core-stroke-1: 1px; /** Hairline stroke (Report design system, 2026-10-08). */
82
+ --mq-core-stroke-2: 2px; /** Focus ring stroke (research note 0001, section 7). */
83
+ --mq-core-stroke-3: 3px; /** Accent tab and rule stroke, 3 px (increment 07 component need: the navy tab of calm columns, callouts and takeaways, Report design system, 2026-10-08). */
84
+ --mq-chart-series-1: #0a2463; /** Categorical series 1 of 4, always used first; also the highlight in highlight-on-grey charts. */
85
+ --mq-chart-series-2: #5d6f91; /** Categorical series 2 of 4. */
86
+ --mq-chart-series-3: #8795b3; /** Categorical series 3 of 4. */
87
+ --mq-chart-series-4: #c3cbdc; /** Categorical series 4 of 4; context bars in highlight-on-grey charts. */
88
+ --mq-chart-rest: #dde3ee; /** Remainder or empty fill, never a categorical series; too close to series 4 under colour-vision deficiency, so draw it with a series 4 outline. */
89
+ --mq-chart-axis: #8c8c8c; /** Axis lines and ticks (non-text, Owner ruling 1, 2026-10-09); axis labels use tertiary. */
90
+ --mq-chart-baseline: #dddbd6; /** Gridlines and baselines (decorative). */
91
+ --mq-accent: #0a2463; /** The single brand accent: links, active states, figures, navy panels (ADR-0003). */
92
+ --mq-accent-hover: #061a4d; /** Hover state of accent-coloured controls. */
93
+ --mq-accent-pale: #eaeef7; /** Pale accent fill for a highlighted row, tag or state. */
94
+ --mq-accent-pale-2: #f2f4f9; /** Quieter pale accent fill. */
95
+ --mq-on-accent: #ffffff; /** Text and icons on an accent fill, 14.53:1 on navy. */
96
+ --mq-ink: #1a1a1a; /** Primary text. */
97
+ --mq-muted: #555555; /** Secondary text. */
98
+ --mq-tertiary: #707070; /** Owner ruling 1, 2026-10-09: tertiary text, captions and footers. */
99
+ --mq-decoration: #8c8c8c; /** Owner ruling 1, 2026-10-09: non-text decoration only (axis lines, ticks, icons beside a label), never text. */
100
+ --mq-canvas: #fafaf8; /** Owner ruling 9, 2026-10-09: background of every document page (A4 report, paper, slide). */
101
+ --mq-surface: #ffffff; /** Owner ruling 9, 2026-10-09: cards and panels on the page. */
102
+ --mq-surface-alt: #f5f4f1; /** Recessed surface: table headers, grouped areas. */
103
+ --mq-desk: #e9e8e4; /** Owner ruling 9, 2026-10-09: on screen only, around a page preview; never inside a document. */
104
+ --mq-border: #dddbd6; /** Borders and dividers. */
105
+ --mq-border-light: #ebeae6; /** Hairlines and card borders. */
106
+ --mq-border-strong: #5d6f91; /** Outline of outlined and dashed state marks in documents (badges, legend swatches), 3:1 or more on canvas and surface for WCAG 1.4.11 (increment 07 component need, ADR-0004: states by mark style). */
107
+ --mq-panel-start: #0f2a5e; /** Light end of the navy panel gradient; the worst case for text on navy. */
108
+ --mq-panel-end: #0a2047; /** Dark end of the navy panel gradient. */
109
+ --mq-on-navy-title: #ffffff; /** Owner ruling 2, 2026-10-09: titles, figures and icons on navy. */
110
+ --mq-on-navy-secondary: rgba(255, 255, 255, 0.68); /** Owner ruling 2, 2026-10-09: secondary text and labels on navy. */
111
+ --mq-on-navy-second-level: #c3cbdc; /** Owner ruling 2, 2026-10-09: second-level text on navy. */
112
+ --mq-on-navy-accent: #8795b3; /** Owner ruling 2, 2026-10-09: the one-off accent on navy; replaces the retired sky blue. */
113
+ --mq-on-navy-rule: rgba(255, 255, 255, 0.16); /** Owner ruling 2, 2026-10-09: rules on navy (decorative). */
114
+ --mq-on-navy-rule-strong: rgba(255, 255, 255, 0.18); /** Owner ruling 2, 2026-10-09: stronger rules on navy (decorative). */
115
+ --mq-on-navy-pill: rgba(255, 255, 255, 0.12); /** Owner ruling 2, 2026-10-09: icon-pill fill on navy (decorative); the icon on it stays white. */
116
+ --mq-on-navy-discreet: rgba(255, 255, 255, 0.4); /** Owner ruling 2, 2026-10-09: discreet numbers on navy; 3.44:1, so large text or non-text only. */
117
+ --mq-success: #2e7d32; /** Apps only: success, always with an icon or a word (ADR-0004). */
118
+ --mq-warning: #a06400; /** Owner ruling 5, 2026-10-09: warning text, icons and borders; apps only (ADR-0004). */
119
+ --mq-danger: #d8232a; /** Apps only: errors and destructive actions, always with an icon or a word (ADR-0003, ADR-0004). */
120
+ --mq-info: #1565c0; /** Apps only: information, always with an icon or a word (ADR-0004). */
121
+ --mq-warning-fill: #d4850a; /** Owner ruling 5, 2026-10-09: warning badge and highlight fill, always with ink text; white on it is forbidden (2.93:1). */
122
+ --mq-warning-tint: #fbf3e7; /** Owner ruling 5, 2026-10-09: warning tint behind ink text; warning strong only for icons and borders on it. */
123
+ --mq-dim: #707070; /** Retired name of the old tertiary grey; resolves to tertiary (Owner ruling 1, 2026-10-09). */
124
+ --mq-accent-on-dark: #8795b3; /** Retired name of the accent on navy; resolves to the on-navy accent (Owner ruling 2, 2026-10-09). Use --mq-on-navy-title for titles and rules, --mq-on-navy-accent for the one-off accent. */
125
+ --mq-focus-ring-color: #0a2463; /** Focus ring on light backgrounds: 2 px navy with an offset, 13.90:1 on canvas (research note 0001, section 7). */
126
+ --mq-focus-ring-color-on-navy: #ffffff; /** Focus ring on navy backgrounds, 14.53:1. */
127
+ --mq-focus-ring-width: 2px; /** Focus ring width (WCAG 2.4.7 and 1.4.11). */
128
+ --mq-focus-ring-offset: 2px; /** Gap between the focused element and its ring. */
129
+ --mq-radius-small: 3px; /** Owner ruling 3, 2026-10-09: tags, inputs and chips. */
130
+ --mq-radius-medium: 6px; /** Owner ruling 3, 2026-10-09: cards and panels. */
131
+ --mq-radius-overlay: 12px; /** Owner ruling 3, amended 2026-10-10: dialogs and modals, side drawers and command palettes in apps only; never in documents, slides, cards or website media. */
132
+ --mq-space-1: 4px; /** Spacing step 1, 4 px. */
133
+ --mq-space-2: 8px; /** Spacing step 2, 8 px. */
134
+ --mq-space-3: 12px; /** Spacing step 3, 12 px. */
135
+ --mq-space-4: 16px; /** Spacing step 4, 16 px. */
136
+ --mq-space-5: 24px; /** Spacing step 5, 24 px. */
137
+ --mq-space-6: 32px; /** Spacing step 6, 32 px. */
138
+ --mq-space-7: 48px; /** Spacing step 7, 48 px. */
139
+ --mq-space-8: 72px; /** Spacing step 8, 72 px. */
140
+ --mq-stroke-hairline: 1px; /** Hairline borders and rules (increment 07 component need). */
141
+ --mq-stroke-strong: 2px; /** Strong rule, as above a total row (increment 07 component need). */
142
+ --mq-stroke-tab: 3px; /** Navy accent tab beside a callout or takeaway (increment 07 component need). */
143
+ --mq-shadow-small: 0px 1px 2px 0px rgba(0, 0, 0, 0.05); /** Cards (increment 07 component need). */
144
+ --mq-shadow-medium: 0px 3px 12px 0px rgba(0, 0, 0, 0.07); /** A slide or page previewed on the desk, never in print (increment 07 component need). */
145
+ --mq-shadow-panel: 0px 14px 36px 0px rgba(10, 36, 99, 0.24); /** Navy panels (increment 07 component need). */
146
+ --mq-slide-width: 1280px; /** Slide canvas width (increment 07 component need). */
147
+ --mq-slide-height: 720px; /** Slide canvas height (increment 07 component need). */
148
+ --mq-page-width: 1040px; /** Content width of a screen document (increment 07 component need). */
149
+ --mq-page-measure: 760px; /** Longest line of running text (increment 07 component need). */
150
+ --mq-a4-width: 793.7px; /** A4 sheet width (increment 07 component need). */
151
+ --mq-a4-height: 1122.52px; /** A4 sheet height (increment 07 component need). */
152
+ --mq-font-family-heading: Outfit, system-ui, -apple-system, 'Segoe UI', sans-serif; /** Headings, column titles and hero figures (Owner ruling 4, 2026-10-09, Owner ruling 10, 2026-10-09). */
153
+ --mq-font-family-body: Newsreader, Georgia, 'Times New Roman', serif; /** Body text of documents and slides, regulatory text in apps (Owner ruling 10, 2026-10-09). */
154
+ --mq-font-family-ui: Outfit, system-ui, -apple-system, 'Segoe UI', sans-serif; /** Labels and app UI (Owner ruling 10, 2026-10-09). */
155
+ --mq-font-family-mono: 'Geist Mono', ui-monospace, 'SF Mono', Menlo, monospace; /** Figures and codes (Owner ruling 10, 2026-10-09). */
156
+ --mq-font-weight-heading: 500; /** Owner ruling 4, 2026-10-09: every heading, column title and hero figure. */
157
+ --mq-font-weight-emphasis: 600; /** Owner ruling 4, 2026-10-09: a short highlighted word inside body text, as the Med of the logo. */
158
+ --mq-font-weight-body: 400; /** Body text. */
159
+ --mq-font-weight-light: 300; /** Owner ruling 6, 2026-10-09: only the Quantis half of the wordmark; never for headings or body text. */
160
+ --mq-font-size-hero-min: 34px; /** Hero title at the narrowest viewport. */
161
+ --mq-font-size-hero-max: 56px; /** Hero title at the widest viewport. */
162
+ --mq-font-size-h2: 32px; /** Section title. */
163
+ --mq-font-size-h3: 20px; /** Subsection title. */
164
+ --mq-font-size-lead: 18px; /** Lead paragraph. */
165
+ --mq-font-size-body: 16.5px; /** Body text on screen. */
166
+ --mq-font-size-small: 15px; /** Small body text. */
167
+ --mq-font-size-label: 13px; /** Labels. */
168
+ --mq-font-size-eyebrow: 11px; /** Eyebrow above a title; 11 px is the floor for any text. */
169
+ --mq-font-size-figure: 50px; /** Hero figure. */
170
+ --mq-font-size-kpi: 30px; /** KPI value. */
171
+ --mq-font-size-stat: 24px; /** Statistic value. */
172
+ --mq-font-size-table-header: 11px; /** Table header cell. */
173
+ --mq-font-size-table-cell: 13px; /** Table cell with figures. */
174
+ --mq-font-size-table-text: 14px; /** Table cell with prose. */
175
+ --mq-font-size-takeaway: 16px; /** Takeaway line under a figure. */
176
+ --mq-font-size-note: 12.5px; /** Notes and sources. */
177
+ --mq-font-size-axis: 11px; /** Chart axis labels. */
178
+ --mq-font-size-slide-title: 36px; /** Slide title on the 1280 by 720 canvas (increment 07 component need). */
179
+ }