@medquantis/design-system 1.0.1 → 1.2.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.
- package/README.md +83 -2
- package/css/app.css +1 -1
- package/css/base.css +2 -2
- package/css/components.css +22 -6
- package/css/kit/dark.css +6 -0
- package/css/kit/document.css +91 -0
- package/css/kit/print.css +81 -0
- package/css/kit/slide-frame.css +112 -0
- package/css/slide.css +1 -1
- package/dist/DESIGN.md +1059 -0
- package/dist/kit/brand.css +12 -0
- package/dist/kit/core.css +69 -0
- package/dist/kit/dark.css +47 -0
- package/dist/kit/dataviz.css +16 -0
- package/dist/kit/document.css +104 -0
- package/dist/kit/guidance.md +400 -0
- package/dist/kit/print.css +95 -0
- package/dist/kit/slide-frame.css +127 -0
- package/dist/kit/space-shape.css +13 -0
- package/dist/kit/type.css +17 -0
- package/dist/llms-full.txt +102 -8
- package/dist/llms.txt +23 -23
- package/dist/tailwind.css +1 -0
- package/dist/themes/dark.css +49 -0
- package/dist/themes/dark.json +436 -0
- package/dist/tokens.css +8 -0
- package/dist/tokens.json +85 -0
- package/guidelines/README.md +17 -2
- package/guidelines/brand.md +6 -1
- package/guidelines/colour.md +83 -2
- package/guidelines/layout.md +3 -3
- package/kit-manifest.json +15 -0
- package/package.json +15 -2
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/*! @medquantis/design-system | © 2026 MedQuantis SA | MIT License, see LICENSE */
|
|
2
|
+
/*
|
|
3
|
+
* MedQuantis print module of the homemade-claude-kit design contract 2.1.0. The roles are
|
|
4
|
+
* generated from tokens/kit/ by the design-system build; the class rules after them are copied
|
|
5
|
+
* from css/kit/print.css, written by hand against contract roles. Do not edit this file.
|
|
6
|
+
* kit-manifest.json lists it. For kit renderers only: the unprefixed names collide with app and
|
|
7
|
+
* Tailwind variables.
|
|
8
|
+
*/
|
|
9
|
+
:root {
|
|
10
|
+
--print-bg: #fafaf8;
|
|
11
|
+
--print-margin: 48px 72px;
|
|
12
|
+
--print-page-size: A4;
|
|
13
|
+
--print-breaking: #0a2463;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/*
|
|
17
|
+
* Class rules of the MedQuantis print module for the homemade-claude-kit renderers (the
|
|
18
|
+
* com-release-note report; Plan-0002 increment 02). Written by hand against contract roles only.
|
|
19
|
+
* The report inlines the core, dataviz, type, space-shape and print modules (render_pdf.py
|
|
20
|
+
* REPORT_MODULES, kit #149). The sizes are the A4 print column of guidelines/typography.md, which
|
|
21
|
+
* is not yet a token, and the weight is the heading weight 500 (owner ruling 4); the template's
|
|
22
|
+
* own bold text and chips read --font-weight-bold and --radius-pill from the design. The build
|
|
23
|
+
* copies these rules into dist/kit/print.css after the roles.
|
|
24
|
+
* build/kit-classes.md names the MedQuantis rule each class reproduces: css/print.css (mq-page)
|
|
25
|
+
* and the typography roles of css/base.css.
|
|
26
|
+
*
|
|
27
|
+
* Cascade: the report template's own rules come before the design layer, so these rules, of
|
|
28
|
+
* the same specificity, replace them. The page box is --print-page-size and --print-margin.
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
/* mq-page: the A4 sheet on the canvas colour (owner ruling 9), ink text. */
|
|
32
|
+
.report {
|
|
33
|
+
background: var(--print-bg);
|
|
34
|
+
color: var(--ink);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* mq-eyebrow: Geist Mono 500 capitals in navy, 7.5 pt in print. */
|
|
38
|
+
.report-kicker {
|
|
39
|
+
color: var(--accent);
|
|
40
|
+
font-family: var(--font-mono);
|
|
41
|
+
font-size: 7.5pt;
|
|
42
|
+
font-weight: 500;
|
|
43
|
+
letter-spacing: 0.16em;
|
|
44
|
+
text-transform: uppercase;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* mq-display: the document title in Outfit 500, 26 pt in print. */
|
|
48
|
+
.report-title {
|
|
49
|
+
color: var(--ink);
|
|
50
|
+
font-family: var(--font-heading);
|
|
51
|
+
font-size: 26pt;
|
|
52
|
+
font-weight: 500;
|
|
53
|
+
line-height: 1.08;
|
|
54
|
+
letter-spacing: -0.025em;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* mq-lead: Newsreader italic in the secondary text colour, 11.5 pt in print. */
|
|
58
|
+
.report-framing {
|
|
59
|
+
color: var(--muted);
|
|
60
|
+
font-family: var(--font-body);
|
|
61
|
+
font-size: 11.5pt;
|
|
62
|
+
font-style: italic;
|
|
63
|
+
line-height: 1.5;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/* The space between sections (guidelines/layout.md, Widths and spacing). */
|
|
67
|
+
.section {
|
|
68
|
+
margin-top: var(--space-lg);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/* A section label: Outfit 500 capitals, 12.5 pt, under a 2 px navy rule like "In brief"
|
|
72
|
+
(guidelines/layout.md, Report skeleton). */
|
|
73
|
+
.section-label {
|
|
74
|
+
padding-bottom: var(--space-sm);
|
|
75
|
+
border-bottom: 2px solid var(--accent);
|
|
76
|
+
color: var(--ink);
|
|
77
|
+
font-family: var(--font-heading);
|
|
78
|
+
font-size: 12.5pt;
|
|
79
|
+
font-weight: 500;
|
|
80
|
+
letter-spacing: 0.04em;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/* A section that leads a fresh page (guidelines/layout.md, Print and PDF). */
|
|
84
|
+
.section--page-break {
|
|
85
|
+
break-before: page;
|
|
86
|
+
page-break-before: always;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/* Documents are navy only (ADR-0004, guidelines/colour.md): the breaking-changes label reads by
|
|
90
|
+
its words and a navy rule, never by a status hue. --print-breaking is the navy accent, and the
|
|
91
|
+
kit's template washes the breaking-changes panel with it too. */
|
|
92
|
+
.section--breaking .section-label {
|
|
93
|
+
border-bottom-color: var(--print-breaking);
|
|
94
|
+
color: var(--print-breaking);
|
|
95
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/*! @medquantis/design-system | © 2026 MedQuantis SA | MIT License, see LICENSE */
|
|
2
|
+
/*
|
|
3
|
+
* MedQuantis slide-frame module of the homemade-claude-kit design contract 2.1.0. The roles are
|
|
4
|
+
* generated from tokens/kit/ by the design-system build; the class rules after them are copied
|
|
5
|
+
* from css/kit/slide-frame.css, written by hand against contract roles. Do not edit this file.
|
|
6
|
+
* kit-manifest.json lists it. For kit renderers only: the unprefixed names collide with app and
|
|
7
|
+
* Tailwind variables.
|
|
8
|
+
*/
|
|
9
|
+
:root {
|
|
10
|
+
--slide-bg: #fafaf8;
|
|
11
|
+
--slide-fg: #1a1a1a;
|
|
12
|
+
--slide-padding: 72px;
|
|
13
|
+
--slide-width: 1280px;
|
|
14
|
+
--slide-height: 720px;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/*
|
|
18
|
+
* Class rules of the MedQuantis slide-frame module for the homemade-claude-kit renderers
|
|
19
|
+
* (Plan-0002 increment 02). Written by hand against contract roles only: core, type, space-shape,
|
|
20
|
+
* dataviz and the slide-frame roles, which tokens/kit/ maps. The build copies these rules into
|
|
21
|
+
* dist/kit/slide-frame.css after the roles. build/kit-classes.md names the MedQuantis rule each
|
|
22
|
+
* class reproduces: css/slide.css, with the legal line bottom left and the slide number bottom
|
|
23
|
+
* right (owner ruling 11, guidelines/brand.md).
|
|
24
|
+
*
|
|
25
|
+
* Cascade: the kit inlines its base slide-frame.css before this module, so these rules restyle
|
|
26
|
+
* it; com-slide-deck adds its baseline (controls hint, presentation mode) and the classification
|
|
27
|
+
* cell after the design layer, so the rules for those classes carry one more element in their
|
|
28
|
+
* selector.
|
|
29
|
+
* The footer row and the source line use --tertiary, the tertiary grey of owner ruling 1.
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
/* mq-slide: the canvas, body text in Newsreader. The kit's render.py drops the shadow in the PDF. */
|
|
33
|
+
.slide {
|
|
34
|
+
border-radius: 0;
|
|
35
|
+
box-shadow: var(--shadow);
|
|
36
|
+
font-family: var(--font-body);
|
|
37
|
+
font-size: var(--font-size-md);
|
|
38
|
+
line-height: var(--line-height-body);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* mq-slide-label: mono capitals in navy, 48 px from the top, at the side margin. */
|
|
42
|
+
.slide-label {
|
|
43
|
+
top: var(--space-xl);
|
|
44
|
+
left: var(--slide-padding);
|
|
45
|
+
margin: 0;
|
|
46
|
+
font-weight: var(--font-weight-bold);
|
|
47
|
+
letter-spacing: 0.18em;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* mq-slide-foot: one row, the legal line at the left and the number at the right, 24 px above
|
|
51
|
+
the bottom edge, at the side margins. */
|
|
52
|
+
.slide-footer {
|
|
53
|
+
right: var(--slide-padding);
|
|
54
|
+
bottom: calc(var(--space-md) + var(--space-sm));
|
|
55
|
+
left: var(--slide-padding);
|
|
56
|
+
height: auto;
|
|
57
|
+
align-items: baseline;
|
|
58
|
+
justify-content: space-between;
|
|
59
|
+
gap: calc(var(--space-md) + var(--space-sm));
|
|
60
|
+
color: var(--tertiary);
|
|
61
|
+
font-family: var(--font-mono);
|
|
62
|
+
font-size: var(--font-size-sm);
|
|
63
|
+
line-height: var(--line-height-tight);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/* MedQuantis slides carry no logo in the footer row (owner ruling 11, guidelines/layout.md). */
|
|
67
|
+
.slide-logo {
|
|
68
|
+
display: none;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.slide-legal {
|
|
72
|
+
margin: 0;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* The deck's classification (owner ruling 17): at the right of the footer row, before the number,
|
|
76
|
+
in the legal line's small tertiary mono, the label as written in the deck's language. The kit's
|
|
77
|
+
cell rule (margin-left: auto, capitals) comes after the design layer, so this one carries the
|
|
78
|
+
footer in its selector. */
|
|
79
|
+
.slide-footer .slide-classification {
|
|
80
|
+
margin-left: auto;
|
|
81
|
+
color: var(--tertiary);
|
|
82
|
+
font-family: var(--font-mono);
|
|
83
|
+
font-size: var(--font-size-sm);
|
|
84
|
+
text-transform: none;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/* mq-slide-number: the eyebrow size, tabular figures. */
|
|
88
|
+
.slide-number {
|
|
89
|
+
font-size: var(--font-size-xs);
|
|
90
|
+
font-variant-numeric: tabular-nums;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/* A cited source on a slide: the note style of guidelines/typography.md, above the footer row. */
|
|
94
|
+
.slide .slide-source-bar {
|
|
95
|
+
right: var(--slide-padding);
|
|
96
|
+
bottom: calc(var(--space-md) + var(--space-sm) + var(--space-lg));
|
|
97
|
+
left: var(--slide-padding);
|
|
98
|
+
color: var(--tertiary);
|
|
99
|
+
font-family: var(--font-body);
|
|
100
|
+
font-size: var(--font-size-sm);
|
|
101
|
+
font-style: italic;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/* The controls hint above the deck: a hint in Geist Mono, as in an empty state (guidelines/layout.md, App patterns). */
|
|
105
|
+
body .controls-hint {
|
|
106
|
+
color: var(--muted);
|
|
107
|
+
font-family: var(--font-mono);
|
|
108
|
+
font-size: var(--font-size-xs);
|
|
109
|
+
letter-spacing: 0.04em;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
body .controls-hint kbd {
|
|
113
|
+
border-color: var(--border);
|
|
114
|
+
border-radius: var(--radius-sm);
|
|
115
|
+
background: var(--surface);
|
|
116
|
+
color: var(--ink);
|
|
117
|
+
font-family: var(--font-mono);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/* Presentation mode: the slide alone on an ink surround, without the desk shadow. */
|
|
121
|
+
html body.presenting {
|
|
122
|
+
background: var(--ink);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
html body.presenting .slide.active {
|
|
126
|
+
box-shadow: none;
|
|
127
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/*! @medquantis/design-system | © 2026 MedQuantis SA | MIT License, see LICENSE */
|
|
2
|
+
/*
|
|
3
|
+
* MedQuantis values for the space-shape module of the homemade-claude-kit design contract 2.1.0,
|
|
4
|
+
* generated from tokens/kit/ by the design-system build. Do not edit. kit-manifest.json lists it.
|
|
5
|
+
* For kit renderers only: the unprefixed names collide with app and Tailwind variables.
|
|
6
|
+
*/
|
|
7
|
+
:root {
|
|
8
|
+
--space-xs: 4px;
|
|
9
|
+
--space-xl: 48px;
|
|
10
|
+
--radius-sm: 3px;
|
|
11
|
+
--radius-pill: 6px;
|
|
12
|
+
--border-width: 1px;
|
|
13
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*! @medquantis/design-system | © 2026 MedQuantis SA | MIT License, see LICENSE */
|
|
2
|
+
/*
|
|
3
|
+
* MedQuantis values for the type module of the homemade-claude-kit design contract 2.1.0,
|
|
4
|
+
* generated from tokens/kit/ by the design-system build. Do not edit. kit-manifest.json lists it.
|
|
5
|
+
* For kit renderers only: the unprefixed names collide with app and Tailwind variables.
|
|
6
|
+
*/
|
|
7
|
+
:root {
|
|
8
|
+
--font-size-xs: 11px;
|
|
9
|
+
--font-size-sm: 13px;
|
|
10
|
+
--font-size-md: 16.5px;
|
|
11
|
+
--font-size-lg: 20px;
|
|
12
|
+
--font-size-xl: 56px;
|
|
13
|
+
--line-height-body: 1.55;
|
|
14
|
+
--line-height-tight: 1.15;
|
|
15
|
+
--font-weight-regular: 400;
|
|
16
|
+
--font-weight-bold: 500;
|
|
17
|
+
}
|
package/dist/llms-full.txt
CHANGED
|
@@ -16,7 +16,7 @@ The MedQuantis brand, writing, colour, type, layout, chart, data and accessibili
|
|
|
16
16
|
| brand.md | Name, tagline, legal line, wordmark, monogram, favicon, icons |
|
|
17
17
|
| voice.md | Tone, words to prefer and avoid, languages, terminology in French, German, Italian and English |
|
|
18
18
|
| writing.md | No em or en dash, titles, sentences and lists, French typography |
|
|
19
|
-
| colour.md | Semantic colour tokens, the medium split, navy panels, states by mark style, status colours in apps |
|
|
19
|
+
| colour.md | Semantic colour tokens, the medium split, navy panels, states by mark style, status colours in apps, the dark theme |
|
|
20
20
|
| typography.md | Families, weights, roles, sizes and line heights |
|
|
21
21
|
| layout.md | Media, report skeleton, widths and spacing, radius, components, tables, app patterns, print |
|
|
22
22
|
| charts.md | The ordered palette, highlight on grey, sequential and diverging use, marks, legends |
|
|
@@ -84,6 +84,8 @@ Set it in Geist Mono at the note size, tertiary text colour (`--mq-tertiary`), w
|
|
|
84
84
|
|
|
85
85
|
On slides the legal line appears on every slide, bottom left, small and in tertiary grey, with the slide number bottom right (owner ruling 11). Use the slide footer row `mq-slide-foot` of `css/slide.css`, never `mq-foot`, which flows from the top of a slide canvas.
|
|
86
86
|
|
|
87
|
+
A deck that carries a classification shows it at the right of the footer, before the slide number, in the same small tertiary mono (owner ruling 17, amending ruling 11's two-cell footer). It is the label only, in the deck's language (Confidential in an English deck, Confidentiel in a French one), never the C0 to C3 code. A kit deck takes it from its `classification:` and `lang:`.
|
|
88
|
+
|
|
87
89
|
Material left with a reader (a deck after a meeting, a report sent outside) also carries a confidentiality mention and its date, in the document's language:
|
|
88
90
|
|
|
89
91
|
| Medium | French | German | English | Italian |
|
|
@@ -93,7 +95,7 @@ Material left with a reader (a deck after a meeting, a report sent outside) also
|
|
|
93
95
|
|
|
94
96
|
## Wordmark
|
|
95
97
|
|
|
96
|
-
The wordmark is the logo; no icon is required next to it. "Med" is set in Outfit 600 and "Quantis" in Outfit 300, in navy (`#0a2463`) on light backgrounds and in white on navy, at every size (owner
|
|
98
|
+
The wordmark is the logo; no icon is required next to it. "Med" is set in Outfit 600 and "Quantis" in Outfit 300, in navy (`#0a2463`) on light backgrounds and in white on navy and on every dark surface, at every size (owner rulings 6 and 14).
|
|
97
99
|
|
|
98
100
|
Each background has two files in `brand/`:
|
|
99
101
|
|
|
@@ -105,6 +107,7 @@ Each background has two files in `brand/`:
|
|
|
105
107
|
Rules:
|
|
106
108
|
|
|
107
109
|
- Use the on-navy file on navy and the on-light file on light backgrounds. Never recolour, stretch, outline, shadow or rearrange the wordmark.
|
|
110
|
+
- On dark (the dark theme, a dark slide or page), use the white `wordmark-on-navy` files on every dark surface: 18.13:1 on the dark canvas, 16.08:1 on the dark surface. The navy wordmark is never used on dark: it is 1.25:1 there (owner ruling 14).
|
|
108
111
|
- Inline the SVG rather than linking an external image, and remove its `width` and `height` so the page sizes it. On a report header the wordmark sits at about 198 by 44 px on screen and 162 by 36 px in print.
|
|
109
112
|
- A full stop in the on-navy accent (`--mq-on-navy-accent`) after a name is reserved for a one-word name on a navy cover. It is never added to the wordmark.
|
|
110
113
|
|
|
@@ -119,6 +122,8 @@ Where the wordmark does not fit (favicon, app icon, avatar, app tile), use the m
|
|
|
119
122
|
| `brand/monogram-small.svg` | 16 px and smaller: larger letters, M 800 and Q 600 |
|
|
120
123
|
| `brand/favicon/` | `favicon.svg`, `favicon.ico` (16, 32, 48), `apple-touch-icon.png` (180), `icon-192.png`, `icon-512.png` |
|
|
121
124
|
|
|
125
|
+
On dark (owner ruling 14) the monogram keeps its file and takes the navy panel's edge, the 1 px light-navy outline that `--mq-shadow-panel` draws in the dark theme, since its navy square is only 1.11:1 against the dark surface; in light it has no outline. A navy brand tile or app tile on dark takes the panel gradient (`--mq-panel-start` to `--mq-panel-end`), never the lifted accent, on which white is 3.48:1. No new brand file is needed.
|
|
126
|
+
|
|
122
127
|
## No combined logo yet
|
|
123
128
|
|
|
124
129
|
There is no lockup of the monogram and the wordmark in v1, and no on-navy variant of the monogram. Do not compose one locally: the combined logo is deferred until a real surface needs it ([issue #2](https://github.com/MedQuantis/design-system/issues/2)). Older lockups with a strapline under the wordmark are retired.
|
|
@@ -237,12 +242,13 @@ Documents never carry green, orange, red, sky blue, pink, purple or turquoise, n
|
|
|
237
242
|
| `--mq-accent-pale` | `#eaeef7` | Icon pills and chips, a deviating value, the highlighted table row, the pale state |
|
|
238
243
|
| `--mq-accent-pale-2` | `#f2f4f9` | Progress tracks, the quiet state, callout background |
|
|
239
244
|
| `--mq-on-accent` | `#ffffff` | Text and icons on an accent fill (14.53:1) |
|
|
245
|
+
| `--mq-accent-highlight` | `#0a2463` | Accent text on the pale fills (the pale KPI value, the pale badge, the callout title) and large highlighted title text: the accent itself in light, the light navy on dark (owner ruling 18) |
|
|
240
246
|
|
|
241
247
|
Navy carries emphasis on its own. Status colours never replace it for emphasis, in any medium.
|
|
242
248
|
|
|
243
249
|
## Neutrals
|
|
244
250
|
|
|
245
|
-
|
|
251
|
+
In the light theme the neutrals are warm greys tuned to the warm canvas, never blue-tinted greys; the neutrals of the dark theme carry the navy cast of its canvas (Dark theme).
|
|
246
252
|
|
|
247
253
|
| Token | Value | Use | Contrast |
|
|
248
254
|
| :-- | :-- | :-- | :-- |
|
|
@@ -300,7 +306,7 @@ The first six are the `mq-badge` states (`is-solid`, `is-ring`, `is-pale`, `is-o
|
|
|
300
306
|
| `--mq-danger` | `#d8232a` | Errors, destructive actions | 5.01:1 on surface, 4.79:1 on canvas |
|
|
301
307
|
| `--mq-info` | `#1565c0` | Information | 5.75:1 on surface, 5.50:1 on canvas |
|
|
302
308
|
| `--mq-warning` | `#a06400` | Warning text, icons and borders | 4.86:1 on surface, 4.65:1 on canvas |
|
|
303
|
-
| `--mq-warning-fill` | `#d4850a` | Warning badge or highlight fill, always with
|
|
309
|
+
| `--mq-warning-fill` | `#d4850a` | Warning badge or highlight fill, always with its text role `--mq-on-warning-fill`, ink in light (5.93:1) | Fill only |
|
|
304
310
|
| `--mq-warning-tint` | `#fbf3e7` | Warning background behind ink text (15.81:1) | Fill only |
|
|
305
311
|
|
|
306
312
|
The warning split (owner ruling 5): the orange `#d4850a` is a fill and never text, an icon or a border (2.81:1 on canvas). Text on it is ink; white on it is forbidden (2.93:1). On the warning tint, the text stays ink and `--mq-warning` is used only for the icon and the border (4.42:1, non-text).
|
|
@@ -318,6 +324,86 @@ The red of the old Paracel theme survives only as `--mq-danger` (ADR-0003). App-
|
|
|
318
324
|
|
|
319
325
|
The chart tokens (`--mq-chart-series-1` to `--mq-chart-series-4`, `--mq-chart-rest`, `--mq-chart-axis`, `--mq-chart-baseline`) and their order are in charts.
|
|
320
326
|
|
|
327
|
+
## Dark theme
|
|
328
|
+
|
|
329
|
+
MedQuantis has one dark theme (ADR-0007, owner ruling 12). It re-values the semantic roles above under the `.dark` class: a role it does not name keeps its light value, and no component needs a second name. A consumer opts in by loading `themes/dark.css` of the package after `tokens.css` and setting `.dark` on `<html>` or on one slide. The design system never switches on `prefers-color-scheme` by itself.
|
|
330
|
+
|
|
331
|
+
- **Apps and the website:** light and dark; the app decides how the viewer chooses, and may follow the viewer's setting by toggling `.dark`.
|
|
332
|
+
- **Documents** (A4 reports, papers, PDFs): light or dark, chosen by the author per document at build time, never from the reader's screen (owner ruling 15). A dark document stays dark in its PDF; light stays the default for anything likely to be printed on paper.
|
|
333
|
+
- **Slides:** a whole deck, or a single slide carrying `.dark`.
|
|
334
|
+
|
|
335
|
+
Every ratio below is the WCAG 2.x contrast with the dark values, on the dark canvas `#11161f` and surface `#1a2131`; the token test checks every declared pair in both themes.
|
|
336
|
+
|
|
337
|
+
| Token | Dark value | Use | Contrast |
|
|
338
|
+
| :-- | :-- | :-- | :-- |
|
|
339
|
+
| `--mq-canvas` | `#11161f`, a near-black with a navy cast | Background of every dark page and slide | Background |
|
|
340
|
+
| `--mq-surface` | `#1a2131` | Cards, panels, tables, figures, inputs | Background |
|
|
341
|
+
| `--mq-surface-alt` | `#141a26` | Recessed areas: table headers, grouped areas | Background |
|
|
342
|
+
| `--mq-desk` | `#0b0f16` | On screen only, around a dark page preview | Background |
|
|
343
|
+
| `--mq-border` | white at 14 % | Borders, dividers | Decorative |
|
|
344
|
+
| `--mq-border-light` | white at 10 % | Hairlines, card borders | Decorative |
|
|
345
|
+
| `--mq-border-strong` | `#8795b3` | Outline of outlined and dashed state marks | 6.03:1 on canvas, 5.35:1 on surface, non-text |
|
|
346
|
+
| `--mq-ink` | `#f5f4f1`, warm white | Primary text and values | 16.48:1 on canvas, 14.62:1 on surface |
|
|
347
|
+
| `--mq-muted` | `#c3cbdc` | Secondary text, leads, captions | 11.13:1 on canvas, 9.88:1 on surface |
|
|
348
|
+
| `--mq-tertiary` | `#8f98aa` | Tertiary text: notes, footers, axis labels | 6.25:1 on canvas, 5.54:1 on surface |
|
|
349
|
+
| `--mq-decoration` | `#6b7385` | Non-text decoration only, never text | 3.81:1 on canvas, 3.38:1 on surface, non-text |
|
|
350
|
+
| `--mq-accent` | `#6f88c9`, the lifted navy | Links, labels, key figures, active states | 5.22:1 on canvas, 4.63:1 on surface, 5.01:1 on the recessed surface |
|
|
351
|
+
| `--mq-accent-hover` | `#8aa0d6` | Hover and pressed state of a link or an accent control | 6.98:1 on canvas |
|
|
352
|
+
| `--mq-accent-pale` | the lifted navy at 18 % | Icon pills and chips, the highlighted row, the pale state | Fill |
|
|
353
|
+
| `--mq-accent-pale-2` | the lifted navy at 10 % | Progress tracks, the quiet state, callout background | Fill |
|
|
354
|
+
| `--mq-accent-highlight` | `#9fb3e8`, the light navy | Large highlighted title text, and accent text on the pale fills: the pale KPI value, the pale badge and the callout title (owner ruling 18) | 8.71:1 on canvas, 7.73:1 on surface, 5.97:1 on the pale fill, 6.77:1 on the quiet pale fill |
|
|
355
|
+
| `--mq-on-accent` | `#11161f` | Text and icons on an accent fill, never white (white 3.48:1 on the accent) | 5.22:1 on the accent |
|
|
356
|
+
| `--mq-focus-ring-color` | `#9fb3e8`, the light navy | Focus ring on dark backgrounds | 8.71:1 on canvas |
|
|
357
|
+
| `--mq-panel-start` | `#2f4c8f` | Light end of the navy panel gradient | Background, white 8.23:1 on the panel start |
|
|
358
|
+
| `--mq-panel-end` | `#0f2a5e` | Dark end of the navy panel gradient | Background |
|
|
359
|
+
| `--mq-shadow-panel` | a 1 px outline, light navy at 35 %, no glow (owner ruling 13) | Navy panels, the report header and the navy KPI tile on dark | Edge of a panel |
|
|
360
|
+
| `--mq-shadow-edge` | the same 1 px outline, light navy at 35 %; none in light | The monogram (`mq-monogram`), the navy KPI tile and a navy brand or app tile, which draw no shadow in light (owner ruling 14) | Edge of a navy mark |
|
|
361
|
+
| `--mq-shadow-small` | black at 40 %, 1 px down with a 2 px blur | Cards, figures and tables on dark, where the light 5 % shadow does not show | Elevation |
|
|
362
|
+
| `--mq-shadow-medium` | black at 50 %, 3 px down with a 12 px blur | A slide or page previewed on the dark desk, raised panels and menus | Elevation |
|
|
363
|
+
|
|
364
|
+
Accent text on the pale fills reads `--mq-accent-highlight` in both themes (owner ruling 18): in light it is the accent itself, while on dark the lifted navy would be only 3.57:1 on the pale fill and 4.05:1 on the quiet pale fill. The fills are measured laid over the canvas and over the surface, the worse result counting. The callout tab keeps `--mq-accent` on the quiet pale fill as a non-text mark.
|
|
365
|
+
|
|
366
|
+
The retired `--mq-dim` and `--mq-accent-on-dark` follow the roles they alias on dark too: `#8f98aa` (tertiary) and `#b2c2ed` (the on-navy accent).
|
|
367
|
+
|
|
368
|
+
**The navy panel on dark.** Navy itself fails on a dark canvas (`#0a2463` is 1.25:1 on `#11161f`), so on dark the brand shows as the lifted navy, the light navy and the panel gradient, with no new hue (ADR-0003). Navy panels, the report header and the navy KPI tile keep the 160 degree gradient between `--mq-panel-start` and `--mq-panel-end`, with the dark values above, and draw `--mq-shadow-panel`: a 1 px light-navy outline, never a glow (owner ruling 13). A navy tile on dark takes the panel gradient, never the lifted accent. Contrast on navy is still checked against the panel start, the lighter stop.
|
|
369
|
+
|
|
370
|
+
The on-navy tier on the dark panel (owner ruling 19): two roles take dark values, the others keep their light values and are checked again on the lighter dark panel start.
|
|
371
|
+
|
|
372
|
+
| Token | Dark value | Contrast | Allowed for |
|
|
373
|
+
| :-- | :-- | :-- | :-- |
|
|
374
|
+
| `--mq-on-navy-title` | `#ffffff`, unchanged | 8.23:1 on the panel start | Text |
|
|
375
|
+
| `--mq-on-navy-secondary` | white at 68 %, unchanged | 4.80:1 on the panel start | Text |
|
|
376
|
+
| `--mq-on-navy-second-level` | `#c3cbdc`, unchanged | 5.05:1 on the panel start | Text |
|
|
377
|
+
| `--mq-on-navy-accent` | `#b2c2ed`, a lighter navy tint | 4.64:1 on the panel start | Text, narrow margin |
|
|
378
|
+
| `--mq-on-navy-discreet` | white at 50 % | 3.37:1 on the panel start | Large text or non-text only |
|
|
379
|
+
| `--mq-on-navy-rule`, `--mq-on-navy-rule-strong`, `--mq-on-navy-pill` | white at 16, 18 and 12 %, unchanged | Decorative | Decorative only |
|
|
380
|
+
|
|
381
|
+
Light keeps `#8795b3` (4.61:1) and white at 40 % (3.44:1) for those two roles; on the dark panel start they would fall to 2.74:1 and 2.71:1.
|
|
382
|
+
|
|
383
|
+
**The light navy is a navy tint.** `#9fb3e8` (`--mq-accent-highlight`, `--mq-focus-ring-color`, dark series 1) is not the retired sky blue: its LCH hue 280.4 (chroma 29.2) sits in the navy family with the lifted navy `#6f88c9` (hue 282.8), against navy 293.7 and sky blue 269.9 (chroma 36.1). Sky blue stays retired in both themes (owner ruling 2).
|
|
384
|
+
|
|
385
|
+
Status colours on dark, apps only (ADR-0004, owner ruling 16), each still with an icon or a word; `--mq-warning-fill` keeps its value and stays a fill:
|
|
386
|
+
|
|
387
|
+
- `--mq-success` `#6fbf73`: 8.09:1 on canvas, 7.18:1 on surface.
|
|
388
|
+
- `--mq-warning` `#e0a040`: 8.00:1 on canvas, 7.10:1 on surface.
|
|
389
|
+
- `--mq-danger` `#ff6b6b`: 6.53:1 on canvas, 5.80:1 on surface.
|
|
390
|
+
- `--mq-info` `#64a8f0`: 7.25:1 on canvas, 6.43:1 on surface.
|
|
391
|
+
- `--mq-warning-fill` `#d4850a`, unchanged: a fill, never text.
|
|
392
|
+
- `--mq-warning-tint`, the warning fill at 16 %: ink 11.63:1 on the warning tint.
|
|
393
|
+
- `--mq-on-warning-fill` `#11161f`, text on `--mq-warning-fill`: 6.18:1 on the warning fill, where the warm white ink 2.67:1 on the warning fill would fail.
|
|
394
|
+
|
|
395
|
+
Chart colours on dark (owner ruling 16): the four series run in reverse order, the lightest first, under the same rules as light (charts): series 4 for context bars, the remainder drawn with a series 4 outline. Each dark series meets or beats its light counterpart against its canvas.
|
|
396
|
+
|
|
397
|
+
| Token | Dark value | Contrast |
|
|
398
|
+
| :-- | :-- | :-- |
|
|
399
|
+
| `--mq-chart-series-1` | `#9fb3e8` | 8.71:1 on canvas |
|
|
400
|
+
| `--mq-chart-series-2` | `#6f88c9` | 5.22:1 on canvas |
|
|
401
|
+
| `--mq-chart-series-3` | `#5d6f91` | 3.58:1 on canvas |
|
|
402
|
+
| `--mq-chart-series-4` | `#3a4560` | 1.90:1 on canvas, context bars only |
|
|
403
|
+
| `--mq-chart-rest` | `#232b3d` | 1.28:1 on canvas, with a series 4 outline |
|
|
404
|
+
| `--mq-chart-axis` | `#6b7385` | 3.81:1 on canvas, non-text |
|
|
405
|
+
| `--mq-chart-baseline` | white at 10 % | Decorative |
|
|
406
|
+
|
|
321
407
|
# Typography
|
|
322
408
|
|
|
323
409
|
## Three families, three roles
|
|
@@ -401,7 +487,7 @@ Apps use the same families and weights at UI sizes: UI body Outfit 400 at 14 px,
|
|
|
401
487
|
|
|
402
488
|
| Medium | Canvas | Layout |
|
|
403
489
|
| :-- | :-- | :-- |
|
|
404
|
-
| Slide | 1280 by 720 px (`--mq-slide-width`, `--mq-slide-height`, `css/slide.css`) | Fixed canvas, 72 px side margins (`--mq-space-8`), section label top left, title under it, and a footer row (`mq-slide-foot`) with the legal line bottom left and the slide number bottom right, both in tertiary mono (owner ruling 11) |
|
|
490
|
+
| Slide | 1280 by 720 px (`--mq-slide-width`, `--mq-slide-height`, `css/slide.css`) | Fixed canvas, 72 px side margins (`--mq-space-8`), section label top left, title under it, and a footer row (`mq-slide-foot`) with the legal line bottom left and the slide number bottom right, both in tertiary mono (owner ruling 11); a classified deck adds its classification label at the right of the footer, before the slide number (owner ruling 17) |
|
|
405
491
|
| Screen report or paper | A page that scrolls, centred, `--mq-page-width` (1040 px) wide | Flow layout: no absolute positions, no fixed heights. It is not a deck: no slide canvas inside a report |
|
|
406
492
|
| A4 print | 210 by 297 mm (`--mq-a4-width`, `--mq-a4-height`, `css/print.css`) | One `mq-page` per sheet on the canvas colour; on screen the pages sit on the desk |
|
|
407
493
|
|
|
@@ -450,7 +536,7 @@ Squared-off corners read professional and institutional; pills read consumer.
|
|
|
450
536
|
|
|
451
537
|
## Elevation and navy blocks
|
|
452
538
|
|
|
453
|
-
- Cards, figures and tables: `--mq-shadow-small`. Raised panels, menus and a page or slide previewed on the desk: `--mq-shadow-medium`. Navy panels: `--mq-shadow-panel
|
|
539
|
+
- Cards, figures and tables: `--mq-shadow-small`. Raised panels, menus and a page or slide previewed on the desk: `--mq-shadow-medium`. Navy panels: `--mq-shadow-panel`, which on dark is a 1 px light-navy outline and never a glow (owner ruling 13). No shadow in print and none on chart marks.
|
|
454
540
|
- One large navy block per screen, slide or page area. In a report, keep the header, a navy KPI band and a navy panel apart with light content.
|
|
455
541
|
|
|
456
542
|
## Document components
|
|
@@ -464,7 +550,7 @@ Squared-off corners read professional and institutional; pills read consumer.
|
|
|
464
550
|
| Takeaway | `mq-takeaway` | The one sentence to remember, under a navy tab, Outfit 500 |
|
|
465
551
|
| Numbered rows | (pattern) | A navy circle with the number, a heading column, a body column: one line per point |
|
|
466
552
|
| Footer | `mq-foot` | Sources and legal line in tertiary italic, in reports and papers; never inside a slide |
|
|
467
|
-
| Slide footer | `mq-slide-foot` | On every slide (owner ruling 11): the legal line bottom left, the slide number bottom right, small, tertiary, Geist Mono: `<footer class="mq-slide-foot"><p>MedQuantis SA · CH-1095 Lutry · medquantis.ch</p><p class="mq-slide-number">03</p></footer>` |
|
|
553
|
+
| Slide footer | `mq-slide-foot` | On every slide (owner ruling 11): the legal line bottom left, the slide number bottom right, small, tertiary, Geist Mono. A classified deck shows its classification at the right of the footer, before the slide number: the label in the deck's language, never the C0 to C3 code (owner ruling 17). Without a classification: `<footer class="mq-slide-foot"><p>MedQuantis SA · CH-1095 Lutry · medquantis.ch</p><p class="mq-slide-number">03</p></footer>` |
|
|
468
554
|
|
|
469
555
|
## Tables
|
|
470
556
|
|
|
@@ -756,7 +842,7 @@ Every local one-off (a component or a token a consumer adds under its own prefix
|
|
|
756
842
|
|
|
757
843
|
# Tokens
|
|
758
844
|
|
|
759
|
-
Every token of release 1.0
|
|
845
|
+
Every token of release 1.2.0, generated from dist/tokens.json. Consumers use the semantic names; the `--mq-core-*` names exist so semantic tokens can point at them. A deprecated token names its replacement.
|
|
760
846
|
|
|
761
847
|
## Semantic tokens
|
|
762
848
|
|
|
@@ -773,6 +859,7 @@ Every token of release 1.0.1, generated from dist/tokens.json. Consumers use the
|
|
|
773
859
|
| `--mq-accent-hover` | `#061a4d` | Hover state of accent-coloured controls. |
|
|
774
860
|
| `--mq-accent-pale` | `#eaeef7` | Pale accent fill for a highlighted row, tag or state. |
|
|
775
861
|
| `--mq-accent-pale-2` | `#f2f4f9` | Quieter pale accent fill. |
|
|
862
|
+
| `--mq-accent-highlight` | `#0a2463` | Large highlighted title text; the accent itself in light, the light navy in dark (ADR-0007). |
|
|
776
863
|
| `--mq-on-accent` | `#ffffff` | Text and icons on an accent fill, 14.53:1 on navy. |
|
|
777
864
|
| `--mq-ink` | `#1a1a1a` | Primary text. |
|
|
778
865
|
| `--mq-muted` | `#555555` | Secondary text. |
|
|
@@ -799,6 +886,7 @@ Every token of release 1.0.1, generated from dist/tokens.json. Consumers use the
|
|
|
799
886
|
| `--mq-warning` | `#a06400` | Owner ruling 5, 2026-10-09: warning text, icons and borders; apps only (ADR-0004). |
|
|
800
887
|
| `--mq-danger` | `#d8232a` | Apps only: errors and destructive actions, always with an icon or a word (ADR-0003, ADR-0004). |
|
|
801
888
|
| `--mq-info` | `#1565c0` | Apps only: information, always with an icon or a word (ADR-0004). |
|
|
889
|
+
| `--mq-on-warning-fill` | `#1a1a1a` | Text on the warning fill: ink in light (5.93:1), near-black in dark (6.18:1), where warm white on the fill is 2.67:1 (ADR-0007, amends owner ruling 5). |
|
|
802
890
|
| `--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). |
|
|
803
891
|
| `--mq-warning-tint` | `#fbf3e7` | Owner ruling 5, 2026-10-09: warning tint behind ink text; warning strong only for icons and borders on it. |
|
|
804
892
|
| `--mq-dim` | `#707070` | Deprecated: Use --mq-tertiary for text or --mq-decoration for non-text decoration. |
|
|
@@ -824,6 +912,7 @@ Every token of release 1.0.1, generated from dist/tokens.json. Consumers use the
|
|
|
824
912
|
| `--mq-shadow-small` | `0px 1px 2px 0px rgba(0, 0, 0, 0.05)` | Cards (increment 07 component need). |
|
|
825
913
|
| `--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). |
|
|
826
914
|
| `--mq-shadow-panel` | `0px 14px 36px 0px rgba(10, 36, 99, 0.24)` | Navy panels (increment 07 component need). |
|
|
915
|
+
| `--mq-shadow-edge` | `0px 0px 0px 0px rgba(0, 0, 0, 0)` | The navy panel's edge for a navy mark that has no panel shadow: the monogram, a navy KPI tile, a navy brand or app tile. None in light; on dark the panel's 1 px light-navy outline (owner rulings 13 and 14). |
|
|
827
916
|
| `--mq-slide-width` | `1280px` | Slide canvas width (increment 07 component need). |
|
|
828
917
|
| `--mq-slide-height` | `720px` | Slide canvas height (increment 07 component need). |
|
|
829
918
|
| `--mq-page-width` | `1040px` | Content width of a screen document (increment 07 component need). |
|
|
@@ -838,6 +927,8 @@ Every token of release 1.0.1, generated from dist/tokens.json. Consumers use the
|
|
|
838
927
|
| `--mq-font-weight-emphasis` | `600` | Owner ruling 4, 2026-10-09: a short highlighted word inside body text, as the Med of the logo. |
|
|
839
928
|
| `--mq-font-weight-body` | `400` | Body text. |
|
|
840
929
|
| `--mq-font-weight-light` | `300` | Owner ruling 6, 2026-10-09: only the Quantis half of the wordmark; never for headings or body text. |
|
|
930
|
+
| `--mq-font-line-height-body` | `1.55` | Body line height of documents, slides and pages (owner, 2026-10-15). |
|
|
931
|
+
| `--mq-font-line-height-tight` | `1.15` | Tight line height of section titles; the display title keeps its own 1.08 (owner, 2026-10-15). |
|
|
841
932
|
| `--mq-font-size-hero-min` | `34px` | Hero title at the narrowest viewport. |
|
|
842
933
|
| `--mq-font-size-hero-max` | `56px` | Hero title at the widest viewport. |
|
|
843
934
|
| `--mq-font-size-h2` | `32px` | Section title. |
|
|
@@ -917,12 +1008,15 @@ Every token of release 1.0.1, generated from dist/tokens.json. Consumers use the
|
|
|
917
1008
|
| `--mq-core-font-size-56` | `56px` | Font size 56 px (Report design system, 2026-10-08). |
|
|
918
1009
|
| `--mq-core-font-size-12-5` | `12.5px` | Font size 12.5 px (Report design system, 2026-10-08). |
|
|
919
1010
|
| `--mq-core-font-size-16-5` | `16.5px` | Font size 16.5 px (Report design system, 2026-10-08). |
|
|
1011
|
+
| `--mq-core-font-line-height-1-15` | `1.15` | Line height 1.15, the tight end of headings, counters and stat figures (owner, 2026-10-15). |
|
|
1012
|
+
| `--mq-core-font-line-height-1-55` | `1.55` | Line height 1.55 of app UI text, labels, descriptions and the document body (owner, 2026-10-15). |
|
|
920
1013
|
| `--mq-core-radius-3` | `3px` | Owner ruling 3, 2026-10-09: small items (tags, inputs, chips). |
|
|
921
1014
|
| `--mq-core-radius-6` | `6px` | Owner ruling 3, 2026-10-09: cards and panels; the maximum anywhere, no pill shapes. |
|
|
922
1015
|
| `--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. |
|
|
923
1016
|
| `--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). |
|
|
924
1017
|
| `--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). |
|
|
925
1018
|
| `--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). |
|
|
1019
|
+
| `--mq-core-shadow-none` | `0px 0px 0px 0px rgba(0, 0, 0, 0)` | No shadow: a transparent layer of zero size, for a role that draws an edge in one theme only (owner ruling 14). |
|
|
926
1020
|
| `--mq-core-size-720` | `720px` | Slide canvas height, 720 px (increment 07 component need: the 1280 by 720 slide canvas). |
|
|
927
1021
|
| `--mq-core-size-760` | `760px` | Reading measure, 760 px (increment 07 component need, Report design system, 2026-10-08). |
|
|
928
1022
|
| `--mq-core-size-1040` | `1040px` | Content width of a screen document, 1040 px (increment 07 component need, Report design system, 2026-10-08). |
|
package/dist/llms.txt
CHANGED
|
@@ -8,32 +8,32 @@ The links below point at the exact release on the jsDelivr CDN; pin that version
|
|
|
8
8
|
|
|
9
9
|
## Guidelines
|
|
10
10
|
|
|
11
|
-
- [Principles](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
12
|
-
- [Brand](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
13
|
-
- [Voice](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
14
|
-
- [Writing](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
15
|
-
- [Colour](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
16
|
-
- [Typography](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
17
|
-
- [Layout](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
18
|
-
- [Charts](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
19
|
-
- [Data patterns](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
20
|
-
- [Accessibility](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
21
|
-
- [Specialising the design system](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
11
|
+
- [Principles](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.2.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.2.0/guidelines/brand.md): Name, tagline, legal line, wordmark, monogram, favicon, icons
|
|
13
|
+
- [Voice](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.2.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.2.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.2.0/guidelines/colour.md): Semantic colour tokens, the medium split, navy panels, states by mark style, status colours in apps, the dark theme
|
|
16
|
+
- [Typography](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.2.0/guidelines/typography.md): Families, weights, roles, sizes and line heights
|
|
17
|
+
- [Layout](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.2.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.2.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.2.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.2.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.2.0/guidelines/specialising.md): Framework neutrality, the four rules, the promotion tests, the one-off log
|
|
22
22
|
|
|
23
23
|
## Tokens and CSS
|
|
24
24
|
|
|
25
|
-
- [tokens.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
26
|
-
- [tokens.json](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
27
|
-
- [tailwind.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
28
|
-
- [base.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
29
|
-
- [components.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
30
|
-
- [slide.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
31
|
-
- [print.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
32
|
-
- [app.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
33
|
-
- [fonts.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
25
|
+
- [tokens.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.2.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.2.0/dist/tokens.json): every token with its resolved value and description
|
|
27
|
+
- [tailwind.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.2.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.2.0/css/base.css): typography roles for documents
|
|
29
|
+
- [components.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.2.0/css/components.css): the shared `mq-` document components
|
|
30
|
+
- [slide.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.2.0/css/slide.css): the 1280 by 720 slide canvas
|
|
31
|
+
- [print.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.2.0/css/print.css): A4 pages with exact colour printing
|
|
32
|
+
- [app.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.2.0/css/app.css): status badges, for interactive apps only
|
|
33
|
+
- [fonts.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.2.0/fonts/fonts.css): self-hosted Outfit, Newsreader and Geist Mono
|
|
34
34
|
|
|
35
35
|
## Optional
|
|
36
36
|
|
|
37
|
-
- [llms-full.txt](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
38
|
-
- [kit-contract.css](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
39
|
-
- [Guidelines index](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.0
|
|
37
|
+
- [llms-full.txt](https://cdn.jsdelivr.net/npm/@medquantis/design-system@1.2.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.2.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.2.0/guidelines/README.md): the file list and where each legacy rule went
|
package/dist/tailwind.css
CHANGED
|
@@ -90,6 +90,7 @@
|
|
|
90
90
|
--color-accent-hover: var(--mq-accent-hover);
|
|
91
91
|
--color-accent-pale: var(--mq-accent-pale);
|
|
92
92
|
--color-accent-pale-2: var(--mq-accent-pale-2);
|
|
93
|
+
--color-accent-highlight: var(--mq-accent-highlight);
|
|
93
94
|
--color-on-accent: var(--mq-on-accent);
|
|
94
95
|
--color-ink: var(--mq-ink);
|
|
95
96
|
--color-muted: var(--mq-muted);
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/*! @medquantis/design-system | © 2026 MedQuantis SA | MIT License, see LICENSE */
|
|
2
|
+
/**
|
|
3
|
+
* Do not edit directly, this file was auto-generated.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
.dark {
|
|
7
|
+
--mq-chart-series-1: #9fb3e8; /** Series 1 on dark, the lightest first: 8.71:1 on the canvas (ADR-0007). */
|
|
8
|
+
--mq-chart-series-2: #6f88c9; /** Series 2 on dark: 5.22:1 on the canvas (ADR-0007). */
|
|
9
|
+
--mq-chart-series-3: #5d6f91; /** Series 3 on dark: 3.58:1 on the canvas (ADR-0007). */
|
|
10
|
+
--mq-chart-series-4: #3a4560; /** Series 4 on dark, context bars: 1.90:1 on the canvas (ADR-0007). */
|
|
11
|
+
--mq-chart-rest: #232b3d; /** Remainder fill on dark, drawn with a series 4 outline: 1.28:1 on the canvas (ADR-0007). */
|
|
12
|
+
--mq-chart-axis: #6b7385; /** Axis lines and ticks on dark (non-text): 3.81:1 on the canvas (ADR-0007). */
|
|
13
|
+
--mq-chart-baseline: rgba(255, 255, 255, 0.1); /** Gridlines and baselines on dark, white at 10 % (decorative, ADR-0007). */
|
|
14
|
+
--mq-accent: #6f88c9; /** The lifted navy, the accent on dark: 5.22:1 on the canvas, 4.63:1 on the surface (ADR-0007). */
|
|
15
|
+
--mq-accent-hover: #8aa0d6; /** Hover state of accent-coloured controls on dark, 6.98:1 on the canvas (ADR-0007). */
|
|
16
|
+
--mq-accent-pale: rgba(111, 136, 201, 0.18); /** The lifted navy at 18 % for a highlighted row, tag or state (ADR-0007). */
|
|
17
|
+
--mq-accent-pale-2: rgba(111, 136, 201, 0.1); /** The lifted navy at 10 %, the quieter fill (ADR-0007). */
|
|
18
|
+
--mq-accent-highlight: #9fb3e8; /** The light navy for large highlighted title text: 8.71:1 on the canvas, 7.73:1 on the surface (ADR-0007). */
|
|
19
|
+
--mq-on-accent: #11161f; /** Near-black on the lifted accent, 5.22:1; white on it is 3.48:1 and is never used (ADR-0007). */
|
|
20
|
+
--mq-ink: #f5f4f1; /** Warm white, primary text: 16.48:1 on the canvas, 14.62:1 on the surface (ADR-0007). */
|
|
21
|
+
--mq-muted: #c3cbdc; /** Secondary text: 11.13:1 on the canvas, 9.88:1 on the surface (ADR-0007). */
|
|
22
|
+
--mq-tertiary: #8f98aa; /** Tertiary text, captions and footers: 6.25:1 on the canvas, 5.54:1 on the surface (ADR-0007). */
|
|
23
|
+
--mq-decoration: #6b7385; /** Non-text decoration only, never text: 3.81:1 on the canvas, 3.38:1 on the surface (ADR-0007). */
|
|
24
|
+
--mq-canvas: #11161f; /** A near-black with a navy cast, the background of every dark page (ADR-0007). */
|
|
25
|
+
--mq-surface: #1a2131; /** Cards and panels on a dark page (ADR-0007). */
|
|
26
|
+
--mq-surface-alt: #141a26; /** Recessed surface on dark: table headers, grouped areas (ADR-0007). */
|
|
27
|
+
--mq-desk: #0b0f16; /** On screen only, around a dark page preview (ADR-0007). */
|
|
28
|
+
--mq-border: rgba(255, 255, 255, 0.14); /** Borders and dividers on dark, white at 14 % (decorative, ADR-0007). */
|
|
29
|
+
--mq-border-light: rgba(255, 255, 255, 0.1); /** Hairlines and card borders on dark, white at 10 % (decorative, ADR-0007). */
|
|
30
|
+
--mq-border-strong: #8795b3; /** Outline of outlined and dashed state marks on dark: 6.03:1 on the canvas, 5.35:1 on the surface (ADR-0007). */
|
|
31
|
+
--mq-panel-start: #2f4c8f; /** Light end of the navy panel gradient on dark, white 8.23:1 on it (ADR-0007). */
|
|
32
|
+
--mq-panel-end: #0f2a5e; /** Dark end of the navy panel gradient on dark (ADR-0007). */
|
|
33
|
+
--mq-on-navy-accent: #b2c2ed; /** The one-off accent on the dark navy panel, 4.64:1 on its light end (owner ruling of 2026-10-17, ADR-0007). */
|
|
34
|
+
--mq-on-navy-discreet: rgba(255, 255, 255, 0.5); /** Discreet numbers on the dark navy panel, 3.37:1 on its light end, so large text or non-text only (owner ruling of 2026-10-17, ADR-0007). */
|
|
35
|
+
--mq-success: #6fbf73; /** Apps only: success on dark, 8.09:1 on the canvas (ADR-0007, ADR-0004). */
|
|
36
|
+
--mq-warning: #e0a040; /** Apps only: warning text, icons and borders on dark, 8.00:1 on the canvas (ADR-0007, ADR-0004). */
|
|
37
|
+
--mq-danger: #ff6b6b; /** Apps only: errors and destructive actions on dark, 6.53:1 on the canvas (ADR-0007, ADR-0004). */
|
|
38
|
+
--mq-info: #64a8f0; /** Apps only: information on dark, 7.25:1 on the canvas (ADR-0007, ADR-0004). */
|
|
39
|
+
--mq-on-warning-fill: #11161f; /** Near-black on the warning fill, 6.18:1; warm white on it is 2.67:1 (ADR-0007). */
|
|
40
|
+
--mq-warning-fill: #d4850a; /** The warning fill, unchanged on dark (ADR-0007). */
|
|
41
|
+
--mq-warning-tint: rgba(212, 133, 10, 0.16); /** The warning fill at 16 % behind ink text, 11.63:1 on the surface (ADR-0007). */
|
|
42
|
+
--mq-dim: #8f98aa; /** Retired name of the old tertiary grey; resolves to tertiary on dark too (ADR-0007). */
|
|
43
|
+
--mq-accent-on-dark: #b2c2ed; /** Retired name of the accent on navy; resolves to the on-navy accent on dark too (owner ruling of 2026-10-17, ADR-0007). */
|
|
44
|
+
--mq-focus-ring-color: #9fb3e8; /** Focus ring on dark backgrounds, the light navy: 8.71:1 on the canvas (ADR-0007). */
|
|
45
|
+
--mq-shadow-small: 0px 1px 2px 0px rgba(0, 0, 0, 0.4); /** Cards on dark: black at 40 %, since the light 5 % shadow does not show on the dark canvas (ADR-0007, owner approval of 2026-10-17). */
|
|
46
|
+
--mq-shadow-medium: 0px 3px 12px 0px rgba(0, 0, 0, 0.5); /** A slide or page previewed on the dark desk: black at 50 % (ADR-0007, owner approval of 2026-10-17). */
|
|
47
|
+
--mq-shadow-panel: 0px 0px 0px 1px rgba(159, 179, 232, 0.35); /** Navy panels on dark: a 1 px light-navy outline, no glow (ADR-0007, owner 2026-10-15). */
|
|
48
|
+
--mq-shadow-edge: 0px 0px 0px 1px rgba(159, 179, 232, 0.35); /** On dark, the panel's 1 px light-navy outline around a navy KPI tile, a navy brand tile and the monogram, whose navy square is 1.11:1 on the dark surface (owner rulings 13 and 14, ADR-0007). */
|
|
49
|
+
}
|