@guildofgleks/ui 21.6.1 → 21.7.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/styles/theme.css CHANGED
@@ -19,25 +19,6 @@
19
19
  * No component stylesheet declares a `--gog-*` default of its own — everything a
20
20
  * component paints resolves to a token below.
21
21
  *
22
- * ── The pre-21.5.0 spellings, and why they sit in a fallback ─────────────────────
23
- * Three prefixes were abbreviations of a component's name, which is the one thing a
24
- * consumer cannot guess: `--gog-btn-*`, `--gog-ms-*`, `--gog-confirm-*`. 21.5.0 spells them
25
- * out — `--gog-button-*`, `--gog-multiselect-*`, `--gog-confirmation-dialog-*` — and keeps
26
- * the old ones working by putting each one in its replacement's fallback:
27
- *
28
- * --gog-button-md-padding: var(--gog-btn-md-padding, 0.75rem 1.25rem);
29
- *
30
- * The spelled-out name is the declaration; the old name is declared nowhere, so a consumer
31
- * who set it still feeds the component from wherever they set it, in every scope. Do not
32
- * "simplify" this into an alias declared beside the original (`--gog-button-x: var(--gog-btn-x)`):
33
- * the derived block re-declares itself inside every nested `[data-theme]`, so that shape
34
- * silently discards a root-level override of the *new* name inside any themed subtree. That
35
- * was measured, not theorised.
36
- *
37
- * @deprecated since 21.5.0 (2026-08-19) — use the spelled-out prefixes. Removed in 21.7.0.
38
- * Removing them is deleting the `var(--gog-btn-…, )` wrapper from each declaration below;
39
- * nothing else moves.
40
- *
41
22
  * ── Why there are two blocks, and which one to add a token to ────────────────────
42
23
  * A custom property's `var()` references are substituted on the element that *declares*
43
24
  * it, not where it is read. So `--gog-button-primary-bg: var(--gog-accent-color)` declared on
@@ -76,14 +57,49 @@
76
57
  --gog-text-2xl: 2rem;
77
58
  --gog-text-3xl: 3rem;
78
59
 
79
- /* ── Spacing & geometry ─────────────────────────────────────────────────────── */
80
- --gog-space-xs: 4px;
81
- --gog-space-sm: 8px;
82
- --gog-space-md: 16px;
83
- --gog-space-lg: 24px;
84
- --gog-space-2xl: 48px;
60
+ /* The "emphasis" casing character labels, buttons, section and table headers all shout
61
+ the same way by default. Not every uppercase/1px-tracking declaration in this file reads
62
+ these two: only the ones that genuinely share this idea do. A few (gog-tabs among them)
63
+ stay their own literal on purpose, because normal case or a different tracking reads
64
+ better there — see docs/themes.md, iteration 1, for the full audit of what did and did
65
+ not qualify. */
66
+ --gog-text-transform: uppercase;
67
+ --gog-letter-spacing: 1px;
68
+
69
+ /* ── Spacing & geometry ───────────────────────────────────────────────────────
70
+
71
+ `--gog-density` is the whole spacing system in one number. It multiplies every step
72
+ of the scale below, and every component padding and gap derives from that scale, so
73
+ a theme makes the entire library compact or roomy without naming a single component:
74
+
75
+ [data-theme='compact'] { --gog-density: 0.75; }
76
+
77
+ This is the density half of docs/themes.md's character layer — the same idea as
78
+ --gog-radius for corners. Before it existed, 177 component paddings and gaps were
79
+ literals in two different units, and a theme that wanted tighter controls had to
80
+ re-list all of them; check-tokens.mjs rule G now fails a build that adds another.
81
+
82
+ The steps are named for their pixel value at density 1, because a t-shirt scale
83
+ stops being readable somewhere around the fourth size and this one has fourteen.
84
+ The five original t-shirt names are kept as aliases: they are public API, they are
85
+ what `theme-starter.css` and every existing consumer theme use, and they cost
86
+ nothing to keep.
87
+
88
+ Only the multiplier itself lives here — the scale is in the derived block below,
89
+ because every step reads this token and so has to re-resolve inside each theme
90
+ scope. A step declared here would be computed once against :root's density and a
91
+ [data-theme] subtree would inherit that number, not its own. */
92
+ --gog-density: 1;
85
93
 
86
94
  --gog-radius: 8px;
95
+ /* Three border-weight tiers, not one: --gog-control-border-width (2px) is form fields,
96
+ --gog-panel-border-width (1px) is raised/floating surfaces (card, dialog, dropdown panel,
97
+ tooltip — see README.md's note on --gog-panel-*), and this pair is everything smaller and
98
+ inline — chip, tag, badge, toggle, table rows, tabs, calendar cells. It happens to share
99
+ panel's value today; kept separate anyway; a theme wanting thick floating panels but thin
100
+ inline chips (or the reverse) needs the two independently settable. */
101
+ --gog-border-width: 1px;
102
+ --gog-border-style: solid;
87
103
  --gog-panel-border-width: 1px;
88
104
  --gog-panel-border-style: solid;
89
105
 
@@ -104,13 +120,9 @@
104
120
  Five-tier scale: xsm/slg bookend the original sm/md/lg (restored below to
105
121
  their pre-compaction numbers) as new extremes for extra-tight or extra-roomy
106
122
  layouts. */
107
- --gog-control-padding-y: 10px;
108
- --gog-control-padding-x: 14px;
109
- --gog-control-icon-offset: 10px;
110
123
  --gog-control-border-width: 2px;
111
124
  --gog-control-border-style: solid;
112
125
 
113
- --gog-control-checkbox-padding: 6px;
114
126
  --gog-control-checkbox-box-size-xsm: 12px;
115
127
  --gog-control-checkbox-box-size-sm: 18px;
116
128
  --gog-control-checkbox-box-size-md: 24px;
@@ -129,29 +141,22 @@
129
141
 
130
142
  /* ── Button sizing ─────────────────────────────────────────────────────────── */
131
143
 
132
- /* ── Field sizing (input / select / multiselect share one scale) ───────────── */
133
- --gog-field-xsm-padding-y: 4px;
134
- --gog-field-xsm-padding-x: 8px;
135
- --gog-field-xsm-icon-offset: 6px;
136
- --gog-field-xsm-icon-inset: 24px;
137
-
138
- --gog-field-sm-padding-y: 6px;
139
- --gog-field-sm-padding-x: 10px;
140
- --gog-field-sm-icon-offset: 8px;
141
- --gog-field-sm-icon-inset: 30px;
142
-
143
- --gog-field-md-icon-inset: 36px;
144
-
145
- --gog-field-lg-padding-y: 14px;
146
- --gog-field-lg-padding-x: 18px;
147
- --gog-field-lg-icon-offset: 14px;
148
- --gog-field-lg-icon-inset: 44px;
144
+ /* ── Field sizing (input / select / multiselect share one scale) ─────────────
145
+ The offsets are spacing and follow --gog-density with everything else; the glyph
146
+ box does not, because an icon that shrinks with the padding stops being legible
147
+ well before the padding stops being usable. Only the offsets move.
148
+
149
+ Each inset is the text's start edge: one offset before the glyph, the glyph, one
150
+ offset after. It was five hand-measured literals (docs/iteration-8-plan.md tuned
151
+ them in a browser) that happened to satisfy that identity, so nothing here moves
152
+ at density 1 — but a literal cannot follow the density knob, and at 0.75 the text
153
+ used to keep a 36px inset against 7px of padding. Stated as the sum it always was,
154
+ it just works. */
155
+ --gog-field-icon-glyph-xsm: 12px;
156
+ --gog-field-icon-glyph-sm: 14px;
157
+ --gog-field-icon-glyph: 16px;
149
158
 
150
- --gog-field-slg-padding-y: 18px;
151
- --gog-field-slg-padding-x: 22px;
152
159
  --gog-field-slg-font-size: 1.25rem;
153
- --gog-field-slg-icon-offset: 18px;
154
- --gog-field-slg-icon-inset: 52px;
155
160
 
156
161
  /* ── Float label geometry (input / textarea / select / multiselect) ─────────
157
162
  One scale for every field that can float its label. Each control reads these
@@ -163,7 +168,6 @@
163
168
  kept clear for the 'over' variant. */
164
169
  --gog-field-float-label-reserve: 14px;
165
170
  --gog-field-float-label-in-top: 6px;
166
- --gog-field-float-label-over-gap: 8px;
167
171
  --gog-field-float-label-over-reserve: 1.4em;
168
172
 
169
173
  /* ── Icon & spinner ───────────────────────────────────────────────────────── */
@@ -179,8 +183,6 @@
179
183
  /* ── Toast stack ──────────────────────────────────────────────────────────── */
180
184
  --gog-toast-min-width: 280px;
181
185
  --gog-toast-max-width: 400px;
182
- --gog-toast-gap: 10px;
183
- --gog-toast-stack-padding: 16px;
184
186
  --gog-toast-z-index: 9999;
185
187
  --gog-toast-enter-distance: 110%;
186
188
  --gog-toast-shadow: 0 4px 24px rgba(0, 0, 0, 0.25);
@@ -193,32 +195,36 @@
193
195
 
194
196
  /* ── Light palette (also the no-data-theme default) ───────────────────────── */
195
197
  color-scheme: light;
196
- /* Фоновые и поверхностные тона */
197
- --gog-background-color: #f7f3eb; /* Тёплый пергаментный фон страницы */
198
- --gog-surface-color: #ffffff; /* КИСЛО-БЕЛЫЙ ПЕРГАМЕНТ карточек (создает контраст со слоем 1!) */
199
- --gog-hover-color: #f0e7d7; /* Состояние наведения (мягкий воск) */
200
- --gog-border-color: #d8c7ad; /* Состаренная латунная рамка */
201
-
202
- /* Типографика (Старинные дубовые чернила) */
203
- --gog-text-color: #17120c; /* Глубокие чернила (высокий контраст WCAG AAA) */
198
+ /* Backgrounds and surfaces */
199
+ --gog-background-color: #f7f3eb; /* Warm parchment page ground */
200
+ --gog-surface-color: #ffffff; /* Bleached parchment for cards lighter than the page on purpose, so the two tiers read apart */
201
+ --gog-hover-color: #f0e7d7; /* Hover state soft wax */
202
+ --gog-border-color: #d8c7ad; /* Aged brass rule */
203
+
204
+ /* Type old oak-gall ink */
205
+ --gog-text-color: #17120c; /* Deep ink clears WCAG AAA against both surfaces */
204
206
  --gog-accent-text-color: #ffffff;
205
- --gog-muted-text-color: #63503c; /* Приглушенные печные чернила */
207
+ --gog-muted-text-color: #63503c; /* Muted kiln ink */
206
208
 
207
- /* Бренд и акценты (Гильдейское Сусальное Золото) */
209
+ /* Brand and accents guild gold leaf */
208
210
  --gog-primary-color: #17120c;
209
- --gog-accent-color: #9e6f00; /* Насыщенный благородный золотисто-бронзовый */
210
- --gog-accent-bright: #c88e00; /* Яркий отблеск золота */
211
- --gog-accent-dim: #735100; /* Темная бронза */
212
- --gog-accent-pale: #f8f1df; /* Светлая подложка под золото */
211
+ /* Deep guild gold. Darkened from #9e6f00 in 21.7.0: white on the old value was 4.44:1,
212
+ just under WCAG AA's 4.5, and its hover fill was 2.87:1 the hover was the worse half.
213
+ The hover is now *darker* than the rest state rather than brighter, because gold light
214
+ enough to read as "a brighter gleam" cannot carry white text at all. */
215
+ --gog-accent-color: #926600;
216
+ --gog-accent-bright: #7a5500;
217
+ --gog-accent-dim: #735100; /* Dark bronze */
218
+ --gog-accent-pale: #f8f1df; /* Pale wash beneath the gold */
213
219
  --gog-secondary-color: #6b5328;
214
220
 
215
- /* Гармонизированная алхимическая семантика */
216
- --gog-success-color: #216e4e; /* Изумруд */
217
- --gog-danger-color: #a7232b; /* Рубин */
218
- --gog-warning-color: #c45100; /* Тёмный янтарь */
219
- --gog-info-color: #2b5c8f; /* Лазурит */
221
+ /* Semantic colours, kept in the alchemical family */
222
+ --gog-success-color: #216e4e; /* Emerald */
223
+ --gog-danger-color: #a7232b; /* Ruby */
224
+ --gog-warning-color: #c45100; /* Dark amber */
225
+ --gog-info-color: #2b5c8f; /* Lapis */
220
226
 
221
- /* Объёмная мягкая тень старой кожи */
227
+ /* Soft, deep shadow old leather */
222
228
  --gog-panel-shadow: 0 4px 20px rgba(23, 18, 12, 0.08), 0 1px 3px rgba(23, 18, 12, 0.04);
223
229
  --gog-spinner-overlay-bg: rgba(247, 243, 235, 0.85);
224
230
  }
@@ -227,32 +233,36 @@
227
233
  [data-theme='light'] {
228
234
  color-scheme: light;
229
235
 
230
- /* Фоновые и поверхностные тона */
231
- --gog-background-color: #f7f3eb; /* Тёплый пергаментный фон страницы */
232
- --gog-surface-color: #ffffff; /* КИСЛО-БЕЛЫЙ ПЕРГАМЕНТ карточек (создает контраст со слоем 1!) */
233
- --gog-hover-color: #f0e7d7; /* Состояние наведения (мягкий воск) */
234
- --gog-border-color: #d8c7ad; /* Состаренная латунная рамка */
236
+ /* Backgrounds and surfaces */
237
+ --gog-background-color: #f7f3eb; /* Warm parchment page ground */
238
+ --gog-surface-color: #ffffff; /* Bleached parchment for cards lighter than the page on purpose, so the two tiers read apart */
239
+ --gog-hover-color: #f0e7d7; /* Hover state soft wax */
240
+ --gog-border-color: #d8c7ad; /* Aged brass rule */
235
241
 
236
- /* Типографика (Старинные дубовые чернила) */
237
- --gog-text-color: #17120c; /* Глубокие чернила (высокий контраст WCAG AAA) */
242
+ /* Type old oak-gall ink */
243
+ --gog-text-color: #17120c; /* Deep ink clears WCAG AAA against both surfaces */
238
244
  --gog-accent-text-color: #ffffff;
239
- --gog-muted-text-color: #63503c; /* Приглушенные печные чернила */
245
+ --gog-muted-text-color: #63503c; /* Muted kiln ink */
240
246
 
241
- /* Бренд и акценты (Гильдейское Сусальное Золото) */
247
+ /* Brand and accents guild gold leaf */
242
248
  --gog-primary-color: #17120c;
243
- --gog-accent-color: #9e6f00; /* Насыщенный благородный золотисто-бронзовый */
244
- --gog-accent-bright: #c88e00; /* Яркий отблеск золота */
245
- --gog-accent-dim: #735100; /* Темная бронза */
246
- --gog-accent-pale: #f8f1df; /* Светлая подложка под золото */
249
+ /* Deep guild gold. Darkened from #9e6f00 in 21.7.0: white on the old value was 4.44:1,
250
+ just under WCAG AA's 4.5, and its hover fill was 2.87:1 the hover was the worse half.
251
+ The hover is now *darker* than the rest state rather than brighter, because gold light
252
+ enough to read as "a brighter gleam" cannot carry white text at all. */
253
+ --gog-accent-color: #926600;
254
+ --gog-accent-bright: #7a5500;
255
+ --gog-accent-dim: #735100; /* Dark bronze */
256
+ --gog-accent-pale: #f8f1df; /* Pale wash beneath the gold */
247
257
  --gog-secondary-color: #6b5328;
248
258
 
249
- /* Гармонизированная алхимическая семантика */
250
- --gog-success-color: #216e4e; /* Изумруд */
251
- --gog-danger-color: #a7232b; /* Рубин */
252
- --gog-warning-color: #c45100; /* Тёмный янтарь */
253
- --gog-info-color: #2b5c8f; /* Лазурит */
259
+ /* Semantic colours, kept in the alchemical family */
260
+ --gog-success-color: #216e4e; /* Emerald */
261
+ --gog-danger-color: #a7232b; /* Ruby */
262
+ --gog-warning-color: #c45100; /* Dark amber */
263
+ --gog-info-color: #2b5c8f; /* Lapis */
254
264
 
255
- /* Объёмная мягкая тень старой кожи */
265
+ /* Soft, deep shadow old leather */
256
266
  --gog-panel-shadow: 0 4px 20px rgba(23, 18, 12, 0.08), 0 1px 3px rgba(23, 18, 12, 0.04);
257
267
  --gog-spinner-overlay-bg: rgba(247, 243, 235, 0.85);
258
268
  }
@@ -261,30 +271,30 @@
261
271
  [data-theme='dark'] {
262
272
  color-scheme: dark;
263
273
 
264
- /* Фоновые и поверхностные тона */
265
- --gog-background-color: #0d0b08; /* Глубокий кузнечный обсидиан */
266
- --gog-surface-color: #16120e; /* Тёмное обожженное железо (карточки) */
267
- --gog-hover-color: #241d17; /* Наведение на элементы */
268
- --gog-border-color: #3d3122; /* Состаренная чеканенная бронза */
274
+ /* Backgrounds and surfaces */
275
+ --gog-background-color: #0d0b08; /* Deep forge obsidian */
276
+ --gog-surface-color: #16120e; /* Dark fired iron cards */
277
+ --gog-hover-color: #241d17; /* Hover state */
278
+ --gog-border-color: #3d3122; /* Aged chased bronze */
269
279
 
270
- /* Типографика (Светящаяся Слоновая Кость) */
271
- --gog-text-color: #f3ebd8; /* Мягкий светящийся пергамент */
280
+ /* Type glowing ivory */
281
+ --gog-text-color: #f3ebd8; /* Soft luminous parchment */
272
282
  --gog-accent-text-color: #0d0b08;
273
- --gog-muted-text-color: #9e8d76; /* Приглушенная бронза */
283
+ --gog-muted-text-color: #9e8d76; /* Muted bronze */
274
284
 
275
- /* Бренд и акценты (Светящееся Золото Алхимии) */
285
+ /* Brand and accents the alchemist's glowing gold */
276
286
  --gog-primary-color: #f3ebd8;
277
- --gog-accent-color: #fbbf24; /* Плазменный янтарь */
278
- --gog-accent-bright: #fde047; /* Яркий золотой луч */
279
- --gog-accent-dim: #b48310; /* Приглушенное золото */
280
- --gog-accent-pale: #2b210c; /* Тёмный золотой отсвет */
287
+ --gog-accent-color: #fbbf24; /* Plasma amber */
288
+ --gog-accent-bright: #fde047; /* Bright gold ray */
289
+ --gog-accent-dim: #b48310; /* Muted gold */
290
+ --gog-accent-pale: #2b210c; /* Dark gold reflection */
281
291
  --gog-secondary-color: #d4a373;
282
292
 
283
- /* Семантика */
284
- --gog-success-color: #34d399; /* Светящийся изумруд */
285
- --gog-danger-color: #f87171; /* Светящийся рубин */
286
- --gog-warning-color: #fbbf24; /* Янтарь */
287
- --gog-info-color: #38bdf8; /* Сапфир */
293
+ /* Semantics */
294
+ --gog-success-color: #34d399; /* Glowing emerald */
295
+ --gog-danger-color: #f87171; /* Glowing ruby */
296
+ --gog-warning-color: #fbbf24; /* Amber */
297
+ --gog-info-color: #38bdf8; /* Sapphire */
288
298
 
289
299
  --gog-panel-shadow: 0 10px 30px rgba(0, 0, 0, 0.7), 0 0 0 1px var(--gog-border-color);
290
300
  --gog-spinner-overlay-bg: rgba(13, 11, 8, 0.85);
@@ -300,11 +310,66 @@
300
310
  /* ── Derived foundation tokens ───────────────────────────────────────────────
301
311
  Split out of the literal block above because they read other tokens: they have
302
312
  to re-resolve inside each theme scope. */
313
+ --gog-space-2: calc(2px * var(--gog-density));
314
+ --gog-space-4: calc(4px * var(--gog-density));
315
+ --gog-space-6: calc(6px * var(--gog-density));
316
+ --gog-space-8: calc(8px * var(--gog-density));
317
+ --gog-space-10: calc(10px * var(--gog-density));
318
+ --gog-space-12: calc(12px * var(--gog-density));
319
+ --gog-space-14: calc(14px * var(--gog-density));
320
+ --gog-space-16: calc(16px * var(--gog-density));
321
+ --gog-space-18: calc(18px * var(--gog-density));
322
+ --gog-space-20: calc(20px * var(--gog-density));
323
+ --gog-space-24: calc(24px * var(--gog-density));
324
+ --gog-space-28: calc(28px * var(--gog-density));
325
+ --gog-space-32: calc(32px * var(--gog-density));
326
+ --gog-space-48: calc(48px * var(--gog-density));
327
+ --gog-space-xs: var(--gog-space-4);
328
+ --gog-space-sm: var(--gog-space-8);
329
+ --gog-space-md: var(--gog-space-16);
330
+ --gog-space-lg: var(--gog-space-24);
331
+ --gog-space-2xl: var(--gog-space-48);
332
+ --gog-control-padding-y: var(--gog-space-10);
333
+ --gog-control-padding-x: var(--gog-space-14);
334
+ --gog-control-checkbox-padding: var(--gog-space-6);
335
+ --gog-field-xsm-padding-y: var(--gog-space-4);
336
+ --gog-field-xsm-padding-x: var(--gog-space-8);
337
+ --gog-field-sm-padding-y: var(--gog-space-6);
338
+ --gog-field-sm-padding-x: var(--gog-space-10);
339
+ --gog-field-lg-padding-y: var(--gog-space-14);
340
+ --gog-field-lg-padding-x: var(--gog-space-18);
341
+ --gog-field-slg-padding-y: var(--gog-space-18);
342
+ --gog-field-slg-padding-x: var(--gog-space-20);
343
+ --gog-field-float-label-over-gap: var(--gog-space-8);
344
+ --gog-toast-gap: var(--gog-space-10);
345
+ --gog-toast-stack-padding: var(--gog-space-16);
346
+ --gog-field-xsm-icon-offset: var(--gog-space-6);
347
+ --gog-field-sm-icon-offset: var(--gog-space-8);
348
+ --gog-field-lg-icon-offset: var(--gog-space-14);
349
+ --gog-field-slg-icon-offset: var(--gog-space-18);
350
+ --gog-control-icon-offset: var(--gog-space-10);
303
351
  --gog-panel-radius: calc(var(--gog-radius) + 8px);
304
352
  --gog-field-xsm-font-size: var(--gog-text-xs);
305
353
  --gog-field-sm-font-size: var(--gog-text-sm);
306
354
  --gog-field-md-padding-y: var(--gog-control-padding-y);
307
355
  --gog-field-md-padding-x: var(--gog-control-padding-x);
356
+
357
+ /* offset + glyph + offset — see the icon-chrome comment in the literal block above. */
358
+ --gog-field-xsm-icon-inset: calc(
359
+ var(--gog-field-xsm-icon-offset) * 2 + var(--gog-field-icon-glyph-xsm)
360
+ );
361
+ --gog-field-sm-icon-inset: calc(
362
+ var(--gog-field-sm-icon-offset) * 2 + var(--gog-field-icon-glyph-sm)
363
+ );
364
+ --gog-field-md-icon-inset: calc(
365
+ var(--gog-field-md-icon-offset) * 2 + var(--gog-field-icon-glyph)
366
+ );
367
+ --gog-field-lg-icon-inset: calc(
368
+ var(--gog-field-lg-icon-offset) * 2 + var(--gog-field-icon-glyph)
369
+ );
370
+ --gog-field-slg-icon-inset: calc(
371
+ var(--gog-field-slg-icon-offset) * 2 + var(--gog-field-icon-glyph)
372
+ );
308
373
  --gog-field-md-font-size: var(--gog-text-md);
309
374
  --gog-field-md-icon-offset: var(--gog-control-icon-offset);
310
375
  --gog-field-lg-font-size: var(--gog-text-lg);
@@ -329,8 +394,8 @@
329
394
  --gog-accordion-focus-ring-width: var(--gog-focus-ring-width);
330
395
  --gog-accordion-body-color: var(--gog-text-color);
331
396
  --gog-accordion-body-line-height: 1.6;
332
- --gog-accordion-header-text-transform: uppercase;
333
- --gog-accordion-header-gap: 12px;
397
+ --gog-accordion-header-text-transform: var(--gog-text-transform);
398
+ --gog-accordion-header-gap: var(--gog-space-12);
334
399
  --gog-accordion-disabled-opacity: 0.5;
335
400
  --gog-accordion-transition-duration: var(--gog-duration-base);
336
401
  --gog-accordion-body-transition-duration: var(--gog-duration-slow);
@@ -345,63 +410,63 @@
345
410
  reads slightly darker than the header regardless of the surrounding surface color. */
346
411
  --gog-accordion-body-bg: color-mix(in srgb, black 6%, transparent);
347
412
  /* Per-size metrics. `lg` is the default size. */
348
- --gog-accordion-xsm-padding-y: 4px;
349
- --gog-accordion-xsm-padding-x: 8px;
413
+ --gog-accordion-xsm-padding-y: var(--gog-space-4);
414
+ --gog-accordion-xsm-padding-x: var(--gog-space-8);
350
415
  --gog-accordion-xsm-font-size: var(--gog-text-xs);
351
416
  --gog-accordion-xsm-letter-spacing: 0.2px;
352
- --gog-accordion-xsm-content-gap: 2px;
417
+ --gog-accordion-xsm-content-gap: var(--gog-space-2);
353
418
  --gog-accordion-xsm-body-font-size: var(--gog-text-xs);
354
419
  --gog-accordion-xsm-body-line-height: 1.5;
355
- --gog-accordion-xsm-body-padding-top: 4px;
356
- --gog-accordion-xsm-body-padding-bottom: 6px;
420
+ --gog-accordion-xsm-body-padding-top: var(--gog-space-4);
421
+ --gog-accordion-xsm-body-padding-bottom: var(--gog-space-6);
357
422
  --gog-accordion-xsm-chevron-size: 11px;
358
423
  --gog-accordion-xsm-chevron-font-size: 10px;
359
424
 
360
- --gog-accordion-sm-padding-y: 6px;
361
- --gog-accordion-sm-padding-x: 10px;
425
+ --gog-accordion-sm-padding-y: var(--gog-space-6);
426
+ --gog-accordion-sm-padding-x: var(--gog-space-10);
362
427
  --gog-accordion-sm-font-size: var(--gog-text-xs);
363
428
  --gog-accordion-sm-letter-spacing: 0.4px;
364
- --gog-accordion-sm-content-gap: 2px;
429
+ --gog-accordion-sm-content-gap: var(--gog-space-2);
365
430
  --gog-accordion-sm-body-font-size: var(--gog-text-xs);
366
431
  --gog-accordion-sm-body-line-height: var(--gog-accordion-body-line-height);
367
- --gog-accordion-sm-body-padding-top: 6px;
368
- --gog-accordion-sm-body-padding-bottom: 8px;
432
+ --gog-accordion-sm-body-padding-top: var(--gog-space-6);
433
+ --gog-accordion-sm-body-padding-bottom: var(--gog-space-8);
369
434
  --gog-accordion-sm-chevron-size: 13px;
370
435
  --gog-accordion-sm-chevron-font-size: 12px;
371
436
 
372
- --gog-accordion-md-padding-y: 10px;
373
- --gog-accordion-md-padding-x: 14px;
437
+ --gog-accordion-md-padding-y: var(--gog-space-10);
438
+ --gog-accordion-md-padding-x: var(--gog-space-14);
374
439
  --gog-accordion-md-font-size: var(--gog-text-xs);
375
440
  --gog-accordion-md-letter-spacing: 0.8px;
376
- --gog-accordion-md-content-gap: 2px;
441
+ --gog-accordion-md-content-gap: var(--gog-space-2);
377
442
  --gog-accordion-md-body-font-size: var(--gog-text-sm);
378
443
  --gog-accordion-md-body-line-height: var(--gog-accordion-body-line-height);
379
- --gog-accordion-md-body-padding-top: 8px;
380
- --gog-accordion-md-body-padding-bottom: 12px;
444
+ --gog-accordion-md-body-padding-top: var(--gog-space-8);
445
+ --gog-accordion-md-body-padding-bottom: var(--gog-space-12);
381
446
  --gog-accordion-md-chevron-size: 15px;
382
447
  --gog-accordion-md-chevron-font-size: 14px;
383
448
 
384
- --gog-accordion-lg-padding-y: 14px;
385
- --gog-accordion-lg-padding-x: 16px;
449
+ --gog-accordion-lg-padding-y: var(--gog-space-14);
450
+ --gog-accordion-lg-padding-x: var(--gog-space-16);
386
451
  --gog-accordion-lg-font-size: var(--gog-text-sm);
387
452
  --gog-accordion-lg-letter-spacing: 0.8px;
388
- --gog-accordion-lg-content-gap: 4px;
453
+ --gog-accordion-lg-content-gap: var(--gog-space-4);
389
454
  --gog-accordion-lg-body-font-size: var(--gog-text-md);
390
455
  --gog-accordion-lg-body-line-height: var(--gog-accordion-body-line-height);
391
- --gog-accordion-lg-body-padding-top: 12px;
392
- --gog-accordion-lg-body-padding-bottom: 16px;
456
+ --gog-accordion-lg-body-padding-top: var(--gog-space-12);
457
+ --gog-accordion-lg-body-padding-bottom: var(--gog-space-16);
393
458
  --gog-accordion-lg-chevron-size: 18px;
394
459
  --gog-accordion-lg-chevron-font-size: 16px;
395
460
 
396
- --gog-accordion-slg-padding-y: 18px;
397
- --gog-accordion-slg-padding-x: 18px;
461
+ --gog-accordion-slg-padding-y: var(--gog-space-18);
462
+ --gog-accordion-slg-padding-x: var(--gog-space-18);
398
463
  --gog-accordion-slg-font-size: var(--gog-text-md);
399
464
  --gog-accordion-slg-letter-spacing: 0.8px;
400
- --gog-accordion-slg-content-gap: 4px;
465
+ --gog-accordion-slg-content-gap: var(--gog-space-4);
401
466
  --gog-accordion-slg-body-font-size: var(--gog-text-lg);
402
467
  --gog-accordion-slg-body-line-height: var(--gog-accordion-body-line-height);
403
- --gog-accordion-slg-body-padding-top: 16px;
404
- --gog-accordion-slg-body-padding-bottom: 20px;
468
+ --gog-accordion-slg-body-padding-top: var(--gog-space-16);
469
+ --gog-accordion-slg-body-padding-bottom: var(--gog-space-20);
405
470
  --gog-accordion-slg-chevron-size: 20px;
406
471
  --gog-accordion-slg-chevron-font-size: 18px;
407
472
 
@@ -425,113 +490,85 @@
425
490
  `--gog-button-bg`, `--gog-button-color`, `--gog-button-border`, `--gog-button-shadow`,
426
491
  `--gog-button-hover-bg`, `--gog-button-hover-shadow`, `--gog-button-padding` and
427
492
  `--gog-button-font-size` are intentionally NOT declared — they are the per-instance
428
- escape hatch the variant/size classes fall back through. Their `--gog-btn-*` spellings
429
- are honoured by button.css's own fallback chain until 21.7.0, which is why they are the
430
- only `--gog-btn-*` names that do not appear below. */
431
- /* The size scale, moved out of the literals-only `:root` block by 21.5.0's rename: each
432
- now carries its pre-21.5.0 spelling as a fallback, and a value containing var() has to
433
- live here. The literals themselves have not changed. */
434
- --gog-button-xsm-padding: var(--gog-btn-xsm-padding, 0.25rem 0.5rem);
435
- --gog-button-sm-padding: var(--gog-btn-sm-padding, 0.5rem 0.875rem);
436
- --gog-button-md-padding: var(--gog-btn-md-padding, 0.75rem 1.25rem);
437
- --gog-button-lg-padding: var(--gog-btn-lg-padding, 1rem 1.5rem);
438
- --gog-button-slg-padding: var(--gog-btn-slg-padding, 1.25rem 1.75rem);
439
- --gog-button-xsm-font-size: var(--gog-btn-xsm-font-size, 0.75rem);
440
- --gog-button-sm-font-size: var(--gog-btn-sm-font-size, 0.875rem);
441
- --gog-button-md-font-size: var(--gog-btn-md-font-size, 1rem);
442
- --gog-button-lg-font-size: var(--gog-btn-lg-font-size, 1.125rem);
443
- --gog-button-slg-font-size: var(--gog-btn-slg-font-size, 1.25rem);
444
-
445
- --gog-button-font-family: var(--gog-btn-font-family, var(--gog-font-heading));
446
- --gog-button-font-weight: var(--gog-btn-font-weight, 900);
447
- --gog-button-letter-spacing: var(--gog-btn-letter-spacing, 1px);
448
- --gog-button-text-transform: var(--gog-btn-text-transform, uppercase);
449
- --gog-button-line-height: var(--gog-btn-line-height, 1);
450
- --gog-button-gap: var(--gog-btn-gap, var(--gog-space-sm));
451
- --gog-button-radius: var(--gog-btn-radius, var(--gog-radius));
452
- --gog-button-border-width: var(--gog-btn-border-width, var(--gog-control-border-width));
453
- --gog-button-border-style: var(--gog-btn-border-style, var(--gog-control-border-style));
454
- --gog-button-transition-duration: var(--gog-btn-transition-duration, var(--gog-duration-base));
455
- --gog-button-focus-ring-width: var(--gog-btn-focus-ring-width, var(--gog-focus-ring-width));
456
- --gog-button-focus-ring-offset: var(--gog-btn-focus-ring-offset, 3px);
457
- --gog-button-active-scale: var(--gog-btn-active-scale, 0.97);
458
- --gog-button-disabled-opacity: var(--gog-btn-disabled-opacity, var(--gog-disabled-opacity));
459
- --gog-button-loading-opacity: var(--gog-btn-loading-opacity, 0.7);
460
- --gog-button-spinner-max-size: var(--gog-btn-spinner-max-size, 70%);
461
-
462
- --gog-button-primary-bg: var(--gog-btn-primary-bg, var(--gog-accent-color));
463
- --gog-button-primary-color: var(
464
- --gog-btn-primary-color,
465
- var(--gog-accent-text-color, var(--gog-primary-color))
466
- );
467
- --gog-button-primary-border: var(--gog-btn-primary-border, transparent);
468
- --gog-button-primary-shadow: var(--gog-btn-primary-shadow, none);
469
- --gog-button-primary-hover-bg: var(--gog-btn-primary-hover-bg, var(--gog-accent-bright));
470
- --gog-button-primary-hover-color: var(
471
- --gog-btn-primary-hover-color,
472
- var(--gog-button-primary-color)
473
- );
474
- --gog-button-primary-hover-shadow: var(
475
- --gog-btn-primary-hover-shadow,
476
- 0 0 16px color-mix(in srgb, var(--gog-accent-bright) 45%, transparent)
477
- );
493
+ escape hatch the variant/size classes fall back through. */
494
+ --gog-button-xsm-padding: var(--gog-space-4) var(--gog-space-8);
495
+ --gog-button-sm-padding: var(--gog-space-8) var(--gog-space-14);
496
+ --gog-button-md-padding: var(--gog-space-12) var(--gog-space-20);
497
+ --gog-button-lg-padding: var(--gog-space-16) var(--gog-space-24);
498
+ --gog-button-slg-padding: var(--gog-space-20) var(--gog-space-28);
499
+ --gog-button-xsm-font-size: 0.75rem;
500
+ --gog-button-sm-font-size: 0.875rem;
501
+ --gog-button-md-font-size: 1rem;
502
+ --gog-button-lg-font-size: 1.125rem;
503
+ --gog-button-slg-font-size: 1.25rem;
504
+
505
+ --gog-button-font-family: var(--gog-font-heading);
506
+ --gog-button-font-weight: 900;
507
+ --gog-button-letter-spacing: var(--gog-letter-spacing);
508
+ --gog-button-text-transform: var(--gog-text-transform);
509
+ --gog-button-line-height: 1;
510
+ --gog-button-gap: var(--gog-space-sm);
511
+ --gog-button-radius: var(--gog-radius);
512
+ --gog-button-border-width: var(--gog-control-border-width);
513
+ --gog-button-border-style: var(--gog-control-border-style);
514
+ --gog-button-transition-duration: var(--gog-duration-base);
515
+ --gog-button-focus-ring-width: var(--gog-focus-ring-width);
516
+ --gog-button-focus-ring-offset: 3px;
517
+ --gog-button-active-scale: 0.97;
518
+ --gog-button-disabled-opacity: var(--gog-disabled-opacity);
519
+ --gog-button-loading-opacity: 0.7;
520
+ --gog-button-spinner-max-size: 70%;
521
+
522
+ --gog-button-primary-bg: var(--gog-accent-color);
523
+ --gog-button-primary-color: var(--gog-accent-text-color, var(--gog-primary-color));
524
+ --gog-button-primary-border: transparent;
525
+ --gog-button-primary-shadow: none;
526
+ --gog-button-primary-hover-bg: var(--gog-accent-bright);
527
+ --gog-button-primary-hover-color: var(--gog-button-primary-color);
528
+ --gog-button-primary-hover-shadow: 0 0 16px
529
+ color-mix(in srgb, var(--gog-accent-bright) 45%, transparent);
478
530
  /* The label's colour, not the page's. `--gog-text-color` is the colour of text on the page
479
531
  background, and a filled button is not the page background — on the dark theme that put pale
480
532
  parchment on bright amber, which read as a washed-out spinner beside a near-black label. */
481
- --gog-button-primary-spinner-color: var(
482
- --gog-btn-primary-spinner-color,
483
- var(--gog-button-primary-color)
484
- );
485
-
486
- --gog-button-secondary-bg: var(--gog-btn-secondary-bg, var(--gog-secondary-color));
487
- --gog-button-secondary-color: var(
488
- --gog-btn-secondary-color,
489
- var(--gog-accent-text-color, var(--gog-primary-color))
490
- );
491
- --gog-button-secondary-border: var(--gog-btn-secondary-border, transparent);
492
- --gog-button-secondary-shadow: var(--gog-btn-secondary-shadow, none);
493
- --gog-button-secondary-hover-bg: var(--gog-btn-secondary-hover-bg, var(--gog-accent-color));
494
- --gog-button-secondary-hover-color: var(
495
- --gog-btn-secondary-hover-color,
496
- var(--gog-button-secondary-color)
497
- );
498
- --gog-button-secondary-hover-shadow: var(--gog-btn-secondary-hover-shadow, none);
533
+ --gog-button-primary-spinner-color: var(--gog-button-primary-color);
534
+
535
+ --gog-button-secondary-bg: var(--gog-secondary-color);
536
+ --gog-button-secondary-color: var(--gog-accent-text-color, var(--gog-primary-color));
537
+ --gog-button-secondary-border: transparent;
538
+ --gog-button-secondary-shadow: none;
539
+ --gog-button-secondary-hover-bg: var(--gog-accent-color);
540
+ --gog-button-secondary-hover-color: var(--gog-button-secondary-color);
541
+ --gog-button-secondary-hover-shadow: none;
499
542
  /* Same reasoning as primary: the other filled variant, the same mismatch. */
500
- --gog-button-secondary-spinner-color: var(
501
- --gog-btn-secondary-spinner-color,
502
- var(--gog-button-secondary-color)
503
- );
504
-
505
- --gog-button-outline-bg: var(--gog-btn-outline-bg, transparent);
506
- --gog-button-outline-color: var(--gog-btn-outline-color, var(--gog-accent-color));
507
- --gog-button-outline-border: var(--gog-btn-outline-border, var(--gog-accent-color));
508
- --gog-button-outline-shadow: var(--gog-btn-outline-shadow, none);
509
- --gog-button-outline-hover-bg: var(--gog-btn-outline-hover-bg, var(--gog-accent-color));
510
- --gog-button-outline-hover-color: var(--gog-btn-outline-hover-color, var(--gog-primary-color));
511
- --gog-button-outline-hover-shadow: var(--gog-btn-outline-hover-shadow, none);
512
- --gog-button-outline-spinner-color: var(--gog-btn-outline-spinner-color, var(--gog-accent-color));
513
-
514
- --gog-button-ghost-bg: var(--gog-btn-ghost-bg, transparent);
515
- --gog-button-ghost-color: var(--gog-btn-ghost-color, var(--gog-accent-color));
516
- --gog-button-ghost-border: var(--gog-btn-ghost-border, transparent);
517
- --gog-button-ghost-shadow: var(--gog-btn-ghost-shadow, none);
518
- --gog-button-ghost-hover-bg: var(
519
- --gog-btn-ghost-hover-bg,
520
- color-mix(in srgb, var(--gog-accent-color) 12%, transparent)
521
- );
522
- --gog-button-ghost-hover-color: var(--gog-btn-ghost-hover-color, var(--gog-button-ghost-color));
523
- --gog-button-ghost-hover-shadow: var(--gog-btn-ghost-hover-shadow, none);
524
- --gog-button-ghost-spinner-color: var(--gog-btn-ghost-spinner-color, var(--gog-accent-color));
543
+ --gog-button-secondary-spinner-color: var(--gog-button-secondary-color);
544
+
545
+ --gog-button-outline-bg: transparent;
546
+ --gog-button-outline-color: var(--gog-accent-color);
547
+ --gog-button-outline-border: var(--gog-accent-color);
548
+ --gog-button-outline-shadow: none;
549
+ --gog-button-outline-hover-bg: var(--gog-accent-color);
550
+ --gog-button-outline-hover-color: var(--gog-primary-color);
551
+ --gog-button-outline-hover-shadow: none;
552
+ --gog-button-outline-spinner-color: var(--gog-accent-color);
553
+
554
+ --gog-button-ghost-bg: transparent;
555
+ --gog-button-ghost-color: var(--gog-accent-color);
556
+ --gog-button-ghost-border: transparent;
557
+ --gog-button-ghost-shadow: none;
558
+ --gog-button-ghost-hover-bg: color-mix(in srgb, var(--gog-accent-color) 12%, transparent);
559
+ --gog-button-ghost-hover-color: var(--gog-button-ghost-color);
560
+ --gog-button-ghost-hover-shadow: none;
561
+ --gog-button-ghost-spinner-color: var(--gog-accent-color);
525
562
 
526
563
  /* ── Button toggle group ───────────────────────────────────────────────────
527
564
  `--gog-button-toggle-bg`, `-color`, `-padding` and `-font-size` are intentionally NOT
528
565
  declared — they are the per-instance escape hatch the size classes fall back through.
529
- Padding/font-size reuse the `--gog-btn-<size>-*` scale so a toggle group and a
566
+ Padding/font-size reuse the `--gog-button-<size>-*` scale so a toggle group and a
530
567
  `<gog-button>` at the same `size` line up in a toolbar. */
531
568
  --gog-button-toggle-font-family: var(--gog-font-heading);
532
569
  --gog-button-toggle-font-weight: 700;
533
570
  --gog-button-toggle-letter-spacing: 0.5px;
534
- --gog-button-toggle-text-transform: uppercase;
571
+ --gog-button-toggle-text-transform: var(--gog-text-transform);
535
572
  --gog-button-toggle-line-height: 1;
536
573
  --gog-button-toggle-gap: var(--gog-space-sm);
537
574
  --gog-button-toggle-icon-size: 1.1em;
@@ -559,14 +596,14 @@
559
596
  /* Caps the host at its month grid instead of letting the header spread to the container.
560
597
  `100%` restores the pre-21.5.0 full-width behaviour. */
561
598
  --gog-calendar-max-width: max-content;
562
- --gog-calendar-padding: 12px;
563
- --gog-calendar-header-gap: 4px;
599
+ --gog-calendar-padding: var(--gog-space-12);
600
+ --gog-calendar-header-gap: var(--gog-space-4);
564
601
  --gog-calendar-header-margin: 8px;
565
- --gog-calendar-months-gap: 16px;
602
+ --gog-calendar-months-gap: var(--gog-space-16);
566
603
  --gog-calendar-title-color: var(--gog-text-color);
567
604
  --gog-calendar-title-font-weight: 700;
568
605
  --gog-calendar-nav-size: 28px;
569
- --gog-calendar-nav-radius: 6px;
606
+ --gog-calendar-nav-radius: calc(var(--gog-radius) - 2px);
570
607
  --gog-calendar-nav-bg: transparent;
571
608
  --gog-calendar-nav-color: var(--gog-muted-text-color);
572
609
  --gog-calendar-nav-hover-bg: var(--gog-hover-color);
@@ -574,14 +611,14 @@
574
611
  --gog-calendar-nav-icon-size: 0.8rem;
575
612
  /* Pulls the two chevrons of a year step together so they read as one control. */
576
613
  --gog-calendar-nav-icon-overlap: -0.35em;
577
- --gog-calendar-weekday-padding: 4px 0;
614
+ --gog-calendar-weekday-padding: var(--gog-space-4) 0;
578
615
  --gog-calendar-weekday-color: var(--gog-muted-text-color);
579
616
  --gog-calendar-weekday-font-size: var(--gog-text-xs);
580
617
  --gog-calendar-weekday-font-weight: 600;
581
- --gog-calendar-weekday-text-transform: uppercase;
582
- --gog-calendar-day-radius: 6px;
583
- --gog-calendar-day-border-width: 1px;
584
- --gog-calendar-day-border-style: solid;
618
+ --gog-calendar-weekday-text-transform: var(--gog-text-transform);
619
+ --gog-calendar-day-radius: calc(var(--gog-radius) - 2px);
620
+ --gog-calendar-day-border-width: var(--gog-border-width);
621
+ --gog-calendar-day-border-style: var(--gog-border-style);
585
622
  --gog-calendar-day-rest-bg: transparent;
586
623
  --gog-calendar-day-rest-color: var(--gog-text-color);
587
624
  --gog-calendar-day-hover-bg: var(--gog-hover-color);
@@ -603,13 +640,13 @@
603
640
  --gog-calendar-divider-width: 1px;
604
641
  --gog-calendar-divider-style: solid;
605
642
  --gog-calendar-divider-color: var(--gog-border-color);
606
- --gog-calendar-time-gap: 6px;
643
+ --gog-calendar-time-gap: var(--gog-space-6);
607
644
  --gog-calendar-time-margin: 10px;
608
645
  --gog-calendar-time-input-width: 3.5rem;
609
- --gog-calendar-time-input-padding: 4px 6px;
646
+ --gog-calendar-time-input-padding: var(--gog-space-4) var(--gog-space-6);
610
647
  --gog-calendar-time-input-bg: var(--gog-background-color);
611
- --gog-calendar-action-padding: 4px 10px;
612
- --gog-calendar-footer-gap: 8px;
648
+ --gog-calendar-action-padding: var(--gog-space-4) var(--gog-space-10);
649
+ --gog-calendar-footer-gap: var(--gog-space-8);
613
650
  --gog-calendar-xsm-font-size: var(--gog-text-xs);
614
651
  --gog-calendar-xsm-day-size: 24px;
615
652
  --gog-calendar-sm-font-size: var(--gog-text-sm);
@@ -662,27 +699,27 @@
662
699
  --gog-card-footer-gap: var(--gog-space-sm);
663
700
  --gog-card-footer-padding-top: var(--gog-space-sm);
664
701
 
665
- --gog-card-xsm-padding-y: 8px;
666
- --gog-card-xsm-padding-x: 10px;
667
- --gog-card-xsm-gap: 6px;
668
- --gog-card-sm-padding-y: 12px;
669
- --gog-card-sm-padding-x: 14px;
702
+ --gog-card-xsm-padding-y: var(--gog-space-8);
703
+ --gog-card-xsm-padding-x: var(--gog-space-10);
704
+ --gog-card-xsm-gap: var(--gog-space-6);
705
+ --gog-card-sm-padding-y: var(--gog-space-12);
706
+ --gog-card-sm-padding-x: var(--gog-space-14);
670
707
  --gog-card-sm-gap: var(--gog-space-sm);
671
708
  --gog-card-md-padding-y: var(--gog-space-md);
672
- --gog-card-md-padding-x: 20px;
673
- --gog-card-md-gap: 12px;
674
- --gog-card-lg-padding-y: 20px;
709
+ --gog-card-md-padding-x: var(--gog-space-20);
710
+ --gog-card-md-gap: var(--gog-space-12);
711
+ --gog-card-lg-padding-y: var(--gog-space-20);
675
712
  --gog-card-lg-padding-x: var(--gog-space-lg);
676
- --gog-card-lg-gap: 14px;
677
- --gog-card-slg-padding-y: 28px;
678
- --gog-card-slg-padding-x: 32px;
713
+ --gog-card-lg-gap: var(--gog-space-14);
714
+ --gog-card-slg-padding-y: var(--gog-space-28);
715
+ --gog-card-slg-padding-x: var(--gog-space-32);
679
716
  --gog-card-slg-gap: var(--gog-space-md);
680
717
 
681
718
  /* ── Checkbox ──────────────────────────────────────────────────────────────
682
719
  Box/label/icon size and padding come from the `--gog-control-checkbox-*` scale;
683
720
  checkbox.component.ts maps the `size` input onto the host. */
684
721
  --gog-checkbox-font-family: var(--gog-font-body);
685
- --gog-checkbox-gap: 10px;
722
+ --gog-checkbox-gap: var(--gog-space-10);
686
723
  --gog-checkbox-radius: var(--gog-radius);
687
724
  --gog-checkbox-border-width: var(--gog-control-border-width);
688
725
  --gog-checkbox-border-style: var(--gog-control-border-style);
@@ -706,12 +743,12 @@
706
743
  Box/label size reuse the `--gog-control-checkbox-*` scale (see Checkbox above);
707
744
  radio-group.component.ts maps the `size` input onto the host the same way. */
708
745
  --gog-radio-font-family: var(--gog-font-body);
709
- --gog-radio-group-gap: 10px;
746
+ --gog-radio-group-gap: var(--gog-space-10);
710
747
  --gog-radio-group-label-size: var(--gog-text-sm);
711
748
  --gog-radio-group-label-color: var(--gog-muted-text-color);
712
- --gog-radio-group-option-gap: 8px;
713
- --gog-radio-group-option-gap-horizontal: 20px;
714
- --gog-radio-gap: 10px;
749
+ --gog-radio-group-option-gap: var(--gog-space-8);
750
+ --gog-radio-group-option-gap-horizontal: var(--gog-space-20);
751
+ --gog-radio-gap: var(--gog-space-10);
715
752
  --gog-radio-border-width: var(--gog-control-border-width);
716
753
  --gog-radio-border-style: var(--gog-control-border-style);
717
754
  --gog-radio-border-color: var(--gog-accent-dim);
@@ -738,8 +775,8 @@
738
775
  --gog-chip-bg: color-mix(in srgb, var(--gog-surface-color) 88%, var(--gog-hover-color));
739
776
  --gog-chip-hover-bg: color-mix(in srgb, var(--gog-hover-color) 45%, var(--gog-surface-color));
740
777
  --gog-chip-border: var(--gog-border-color);
741
- --gog-chip-border-width: 1px;
742
- --gog-chip-border-style: solid;
778
+ --gog-chip-border-width: var(--gog-border-width);
779
+ --gog-chip-border-style: var(--gog-border-style);
743
780
  --gog-chip-color: var(--gog-text-color);
744
781
  --gog-chip-font-weight: 500;
745
782
  --gog-chip-line-height: 1.2;
@@ -755,41 +792,41 @@
755
792
  --gog-chip-focus-ring-offset: var(--gog-focus-ring-offset);
756
793
 
757
794
  --gog-chip-xsm-font-size: 0.6875rem;
758
- --gog-chip-xsm-padding-block: 0.225rem;
759
- --gog-chip-xsm-padding-inline: 0.375rem;
760
- --gog-chip-xsm-gap: 0.275rem;
795
+ --gog-chip-xsm-padding-block: var(--gog-space-4);
796
+ --gog-chip-xsm-padding-inline: var(--gog-space-6);
797
+ --gog-chip-xsm-gap: var(--gog-space-4);
761
798
  --gog-chip-xsm-avatar-size: 0.875rem;
762
799
  --gog-chip-xsm-icon-size: 0.6875rem;
763
800
  --gog-chip-xsm-remove-size: 0.75rem;
764
801
 
765
802
  --gog-chip-sm-font-size: 0.75rem;
766
- --gog-chip-sm-padding-block: 0.3rem;
767
- --gog-chip-sm-padding-inline: 0.5rem;
768
- --gog-chip-sm-gap: 0.375rem;
803
+ --gog-chip-sm-padding-block: var(--gog-space-4);
804
+ --gog-chip-sm-padding-inline: var(--gog-space-8);
805
+ --gog-chip-sm-gap: var(--gog-space-6);
769
806
  --gog-chip-sm-avatar-size: 1rem;
770
807
  --gog-chip-sm-icon-size: 0.75rem;
771
808
  --gog-chip-sm-remove-size: 0.875rem;
772
809
 
773
810
  --gog-chip-md-font-size: 0.875rem;
774
- --gog-chip-md-padding-block: 0.45rem;
775
- --gog-chip-md-padding-inline: 0.75rem;
776
- --gog-chip-md-gap: 0.5rem;
811
+ --gog-chip-md-padding-block: var(--gog-space-8);
812
+ --gog-chip-md-padding-inline: var(--gog-space-12);
813
+ --gog-chip-md-gap: var(--gog-space-8);
777
814
  --gog-chip-md-avatar-size: 1.25rem;
778
815
  --gog-chip-md-icon-size: 0.875rem;
779
816
  --gog-chip-md-remove-size: 1rem;
780
817
 
781
818
  --gog-chip-lg-font-size: 1rem;
782
- --gog-chip-lg-padding-block: 0.6rem;
783
- --gog-chip-lg-padding-inline: 0.875rem;
784
- --gog-chip-lg-gap: 0.625rem;
819
+ --gog-chip-lg-padding-block: var(--gog-space-10);
820
+ --gog-chip-lg-padding-inline: var(--gog-space-14);
821
+ --gog-chip-lg-gap: var(--gog-space-10);
785
822
  --gog-chip-lg-avatar-size: 1.5rem;
786
823
  --gog-chip-lg-icon-size: 1rem;
787
824
  --gog-chip-lg-remove-size: 1.125rem;
788
825
 
789
826
  --gog-chip-slg-font-size: 1.125rem;
790
- --gog-chip-slg-padding-block: 0.75rem;
791
- --gog-chip-slg-padding-inline: 1rem;
792
- --gog-chip-slg-gap: 0.75rem;
827
+ --gog-chip-slg-padding-block: var(--gog-space-12);
828
+ --gog-chip-slg-padding-inline: var(--gog-space-16);
829
+ --gog-chip-slg-gap: var(--gog-space-12);
793
830
  --gog-chip-slg-avatar-size: 1.75rem;
794
831
  --gog-chip-slg-icon-size: 1.125rem;
795
832
  --gog-chip-slg-remove-size: 1.25rem;
@@ -813,10 +850,10 @@
813
850
  --gog-dialog-shadow: 0 24px 48px rgba(0, 0, 0, 0.5);
814
851
  --gog-dialog-min-width: 320px;
815
852
  --gog-dialog-max-height: 90vh;
816
- --gog-dialog-header-padding: 16px 20px 14px;
817
- --gog-dialog-header-gap: 12px;
853
+ --gog-dialog-header-padding: var(--gog-space-16) var(--gog-space-20) var(--gog-space-14);
854
+ --gog-dialog-header-gap: var(--gog-space-12);
818
855
  --gog-dialog-header-border-color: var(--gog-border-color);
819
- --gog-dialog-body-padding: 20px;
856
+ --gog-dialog-body-padding: var(--gog-space-20);
820
857
  --gog-dialog-body-max-height: calc(var(--gog-dialog-max-height) - 60px);
821
858
  --gog-dialog-close-size: 2rem;
822
859
  --gog-dialog-close-font-size: 0.875rem;
@@ -829,16 +866,13 @@
829
866
  --gog-dialog-close-focus-ring-offset: var(--gog-focus-ring-offset);
830
867
 
831
868
  /* Confirmation dialog */
832
- --gog-confirmation-dialog-gap: var(--gog-confirm-gap, 12px);
833
- --gog-confirmation-dialog-min-width: var(--gog-confirm-min-width, 320px);
834
- --gog-confirmation-dialog-max-width: var(--gog-confirm-max-width, 440px);
835
- --gog-confirmation-dialog-color: var(--gog-confirm-color, var(--gog-text-color));
836
- --gog-confirmation-dialog-description-color: var(
837
- --gog-confirm-description-color,
838
- var(--gog-muted-text-color)
839
- );
840
- --gog-confirmation-dialog-actions-gap: var(--gog-confirm-actions-gap, var(--gog-space-sm));
841
- --gog-confirmation-dialog-actions-offset: var(--gog-confirm-actions-offset, var(--gog-space-sm));
869
+ --gog-confirmation-dialog-gap: var(--gog-space-12);
870
+ --gog-confirmation-dialog-min-width: 320px;
871
+ --gog-confirmation-dialog-max-width: 440px;
872
+ --gog-confirmation-dialog-color: var(--gog-text-color);
873
+ --gog-confirmation-dialog-description-color: var(--gog-muted-text-color);
874
+ --gog-confirmation-dialog-actions-gap: var(--gog-space-sm);
875
+ --gog-confirmation-dialog-actions-offset: var(--gog-space-sm);
842
876
 
843
877
  /* ── Autocomplete ──────────────────────────────────────────────────────────
844
878
  A combobox whose trigger is a real text input. Padding/font-size reuse the shared
@@ -848,12 +882,12 @@
848
882
  back through. */
849
883
  --gog-autocomplete-font-family: var(--gog-font-body);
850
884
  --gog-autocomplete-label-font-family: var(--gog-font-heading);
851
- --gog-autocomplete-gap: 4px;
885
+ --gog-autocomplete-gap: var(--gog-space-4);
852
886
  --gog-autocomplete-label-color: var(--gog-accent-color);
853
887
  --gog-autocomplete-label-font-size: var(--gog-text-sm);
854
888
  --gog-autocomplete-label-font-weight: 600;
855
- --gog-autocomplete-label-letter-spacing: 1px;
856
- --gog-autocomplete-label-text-transform: uppercase;
889
+ --gog-autocomplete-label-letter-spacing: var(--gog-letter-spacing);
890
+ --gog-autocomplete-label-text-transform: var(--gog-text-transform);
857
891
  --gog-autocomplete-field-bg: var(--gog-surface-color);
858
892
  --gog-autocomplete-text-color: var(--gog-text-color);
859
893
  --gog-autocomplete-placeholder-color: var(--gog-muted-text-color);
@@ -877,7 +911,7 @@
877
911
  /* Trailing chrome: spinner and clear button, clear outermost — the arrangement the other
878
912
  dropdowns settled on, so all of them line up in a form. */
879
913
  --gog-autocomplete-actions-inset: var(--gog-control-icon-offset);
880
- --gog-autocomplete-actions-gap: 6px;
914
+ --gog-autocomplete-actions-gap: var(--gog-space-6);
881
915
  /* Right padding on the input, reserving room for the actions above. */
882
916
  --gog-autocomplete-actions-reserve: 40px;
883
917
  --gog-autocomplete-clear-color: var(--gog-autocomplete-placeholder-color);
@@ -891,14 +925,14 @@
891
925
  --gog-autocomplete-panel-border-style: var(--gog-panel-border-style);
892
926
  --gog-autocomplete-panel-border-color: var(--gog-border-color);
893
927
  --gog-autocomplete-panel-radius: var(--gog-radius);
894
- --gog-autocomplete-panel-gap: 2px;
928
+ --gog-autocomplete-panel-gap: var(--gog-space-2);
895
929
  --gog-autocomplete-panel-max-height: 260px;
896
930
  /* Ceiling for a content-sized panel, so one very long option cannot span the viewport. */
897
931
  --gog-autocomplete-panel-max-width: 420px;
898
- --gog-autocomplete-options-padding: 4px;
899
- --gog-autocomplete-option-padding: 8px 10px;
900
- --gog-autocomplete-option-radius: 4px;
901
- --gog-autocomplete-option-gap: 10px;
932
+ --gog-autocomplete-options-padding: var(--gog-space-4);
933
+ --gog-autocomplete-option-padding: var(--gog-space-8) var(--gog-space-10);
934
+ --gog-autocomplete-option-radius: calc(var(--gog-radius) - 4px);
935
+ --gog-autocomplete-option-gap: var(--gog-space-10);
902
936
  --gog-autocomplete-option-color: var(--gog-text-color);
903
937
  --gog-autocomplete-option-hover-bg: color-mix(in srgb, var(--gog-accent-color) 10%, transparent);
904
938
  --gog-autocomplete-option-hover-color: var(--gog-text-color);
@@ -927,12 +961,12 @@
927
961
  sideways only. */
928
962
  --gog-badge-size: 1.25rem;
929
963
  --gog-badge-dot-size: 0.5rem;
930
- --gog-badge-padding-inline: 5px;
964
+ --gog-badge-padding-inline: var(--gog-space-4);
931
965
  --gog-badge-radius: 999px;
932
966
  /* How far the badge hangs outside its host's corner. */
933
967
  --gog-badge-offset: 6px;
934
968
  --gog-badge-border-width: 0;
935
- --gog-badge-border-style: solid;
969
+ --gog-badge-border-style: var(--gog-border-style);
936
970
  --gog-badge-border-color: transparent;
937
971
  /* Above the host's own chrome but below any overlay panel (--gog-dropdown-z is 300). */
938
972
  --gog-badge-z: 1;
@@ -953,11 +987,11 @@
953
987
  back through. */
954
988
  --gog-datepicker-font-family: var(--gog-font-body);
955
989
  --gog-datepicker-label-font-family: var(--gog-font-heading);
956
- --gog-datepicker-gap: 4px;
990
+ --gog-datepicker-gap: var(--gog-space-4);
957
991
  --gog-datepicker-label-color: var(--gog-accent-color);
958
992
  --gog-datepicker-label-font-size: var(--gog-text-sm);
959
- --gog-datepicker-label-letter-spacing: 1px;
960
- --gog-datepicker-label-text-transform: uppercase;
993
+ --gog-datepicker-label-letter-spacing: var(--gog-letter-spacing);
994
+ --gog-datepicker-label-text-transform: var(--gog-text-transform);
961
995
  --gog-datepicker-field-bg: var(--gog-surface-color);
962
996
  --gog-datepicker-text-color: var(--gog-text-color);
963
997
  --gog-datepicker-placeholder-color: var(--gog-muted-text-color);
@@ -978,7 +1012,7 @@
978
1012
  --gog-datepicker-error-font-size: var(--gog-text-xs);
979
1013
  --gog-datepicker-min-width: 150px;
980
1014
  --gog-datepicker-actions-inset: var(--gog-control-icon-offset);
981
- --gog-datepicker-actions-gap: 6px;
1015
+ --gog-datepicker-actions-gap: var(--gog-space-6);
982
1016
  /* Right padding on the input, reserving room for the calendar and clear buttons. */
983
1017
  --gog-datepicker-actions-reserve: 40px;
984
1018
  --gog-datepicker-icon-color: var(--gog-accent-color);
@@ -992,7 +1026,7 @@
992
1026
  --gog-datepicker-panel-border-style: var(--gog-panel-border-style);
993
1027
  --gog-datepicker-panel-border-color: var(--gog-border-color);
994
1028
  --gog-datepicker-panel-radius: var(--gog-radius);
995
- --gog-datepicker-panel-gap: 2px;
1029
+ --gog-datepicker-panel-gap: var(--gog-space-2);
996
1030
  /* The dropdown surface. Inline mode is `gog-calendar` itself, so it sizes from
997
1031
  `--gog-calendar-max-width` rather than from this. */
998
1032
  --gog-datepicker-panel-width: max-content;
@@ -1028,11 +1062,11 @@
1028
1062
  /* ── Input field ───────────────────────────────────────────────────────────── */
1029
1063
  --gog-input-font-family: var(--gog-font-body);
1030
1064
  --gog-input-label-font-family: var(--gog-font-heading);
1031
- --gog-input-gap: 4px;
1065
+ --gog-input-gap: var(--gog-space-4);
1032
1066
  --gog-input-label-color: var(--gog-accent-color);
1033
1067
  --gog-input-label-font-size: var(--gog-text-sm);
1034
- --gog-input-label-letter-spacing: 1px;
1035
- --gog-input-label-text-transform: uppercase;
1068
+ --gog-input-label-letter-spacing: var(--gog-letter-spacing);
1069
+ --gog-input-label-text-transform: var(--gog-text-transform);
1036
1070
  --gog-input-field-bg: var(--gog-surface-color);
1037
1071
  --gog-input-field-border: var(--gog-accent-dim);
1038
1072
  --gog-input-field-border-width: var(--gog-control-border-width);
@@ -1050,7 +1084,7 @@
1050
1084
  --gog-input-error-offset: 2px;
1051
1085
  --gog-input-icon-color: var(--gog-muted-text-color);
1052
1086
  --gog-input-icon-hover-color: var(--gog-accent-color);
1053
- --gog-input-icon-action-radius: 4px;
1087
+ --gog-input-icon-action-radius: calc(var(--gog-radius) - 4px);
1054
1088
  --gog-input-icon-focus-ring-width: 2px;
1055
1089
  /* Number field's spin buttons — a subtle fill on hover, since they sit flush against the
1056
1090
  field's own border rather than floating with their own padding like the other icons. */
@@ -1074,7 +1108,7 @@
1074
1108
  --gog-textarea-resize-grip-color: var(--gog-input-field-border);
1075
1109
  --gog-textarea-resize-grip-opacity: 0.8;
1076
1110
  --gog-textarea-resize-grip-stripe-width: 1.5px;
1077
- --gog-textarea-resize-grip-stripe-gap: 3px;
1111
+ --gog-textarea-resize-grip-stripe-gap: var(--gog-space-2);
1078
1112
  --gog-textarea-resize-grip-offset: 3px;
1079
1113
  /*
1080
1114
  Both default to 0 and are overwritten per instance, as an inline style on the field, from
@@ -1101,149 +1135,87 @@
1101
1135
  --gog-input-float-label-over-gap: var(--gog-field-float-label-over-gap);
1102
1136
  --gog-input-float-label-over-reserve: var(--gog-field-float-label-over-reserve);
1103
1137
 
1104
- /* ── Multiselect ─────────────────────────────────────────────────────────────
1105
- `--gog-ms-*` was the pre-21.3.0 spelling and sits in each token's fallback, so an
1106
- existing override of it still feeds the component — see the header's note on the
1107
- pre-21.5.0 spellings for why it is a fallback rather than a second declaration.
1108
- Until 21.5.0 these were two declarations per token, which had that bug.
1109
- @deprecated since 21.3.0 (2026-08-07) — use `--gog-multiselect-*`. Removed in 21.7.0. */
1110
- --gog-multiselect-font-family: var(--gog-ms-font-family, var(--gog-font-body));
1111
- --gog-multiselect-label-font-family: var(--gog-ms-label-font-family, var(--gog-font-heading));
1112
- --gog-multiselect-gap: var(--gog-ms-gap, 4px);
1113
- --gog-multiselect-option-gap: var(--gog-ms-option-gap, 4px);
1114
- --gog-multiselect-options-padding: var(--gog-ms-options-padding, 4px);
1115
- --gog-multiselect-label-color: var(--gog-ms-label-color, var(--gog-accent-color));
1116
- --gog-multiselect-label-font-size: var(--gog-ms-label-font-size, var(--gog-text-sm));
1117
- --gog-multiselect-label-letter-spacing: var(--gog-ms-label-letter-spacing, 1px);
1118
- --gog-multiselect-label-text-transform: var(--gog-ms-label-text-transform, uppercase);
1119
- --gog-multiselect-field-bg: var(--gog-ms-field-bg, var(--gog-surface-color));
1120
- --gog-multiselect-field-border: var(--gog-ms-field-border, var(--gog-accent-dim));
1121
- --gog-multiselect-field-border-width: var(
1122
- --gog-ms-field-border-width,
1123
- var(--gog-control-border-width)
1124
- );
1125
- --gog-multiselect-field-border-style: var(
1126
- --gog-ms-field-border-style,
1127
- var(--gog-control-border-style)
1128
- );
1129
- --gog-multiselect-radius: var(--gog-ms-radius, var(--gog-radius));
1130
- --gog-multiselect-field-color: var(--gog-ms-field-color, var(--gog-text-color));
1131
- --gog-multiselect-value-color: var(--gog-ms-value-color, var(--gog-text-color));
1132
- --gog-multiselect-placeholder-color: var(--gog-ms-placeholder-color, var(--gog-muted-text-color));
1133
- --gog-multiselect-focus-border: var(--gog-ms-focus-border, var(--gog-accent-color));
1134
- --gog-multiselect-focus-ring: var(
1135
- --gog-ms-focus-ring,
1136
- color-mix(in srgb, var(--gog-accent-color) 25%, transparent)
1137
- );
1138
- --gog-multiselect-focus-glow: var(--gog-ms-focus-glow, 0 0 8px var(--gog-ms-focus-ring));
1139
- --gog-multiselect-focus-ring-width: var(--gog-ms-focus-ring-width, var(--gog-focus-ring-width));
1140
- --gog-multiselect-focus-ring-offset: var(
1141
- --gog-ms-focus-ring-offset,
1142
- var(--gog-focus-ring-offset)
1143
- );
1144
- --gog-multiselect-error-color: var(--gog-ms-error-color, var(--gog-danger-color));
1145
- --gog-multiselect-error-font-size: var(--gog-ms-error-font-size, var(--gog-text-xs));
1146
- --gog-multiselect-error-offset: var(--gog-ms-error-offset, 2px);
1147
- --gog-multiselect-border-color: var(--gog-ms-border-color, var(--gog-accent-color));
1148
- --gog-multiselect-panel-bg: var(--gog-ms-panel-bg, var(--gog-surface-color));
1149
- --gog-multiselect-panel-border: var(--gog-ms-panel-border, var(--gog-accent-color));
1150
- --gog-multiselect-panel-shadow: var(--gog-ms-panel-shadow, var(--gog-panel-shadow));
1151
- --gog-multiselect-panel-max-height: var(--gog-ms-panel-max-height, 260px);
1152
- --gog-multiselect-panel-offset: var(--gog-ms-panel-offset, 2px);
1153
- --gog-multiselect-option-hover-bg: var(
1154
- --gog-ms-option-hover-bg,
1155
- color-mix(in srgb, var(--gog-accent-color) 10%, transparent)
1156
- );
1157
- --gog-multiselect-option-color: var(--gog-ms-option-color, var(--gog-text-color));
1158
- --gog-multiselect-option-gap-inline: var(--gog-ms-option-gap-inline, 10px);
1138
+ /* ── Multiselect ───────────────────────────────────────────────────────────── */
1139
+ --gog-multiselect-font-family: var(--gog-font-body);
1140
+ --gog-multiselect-label-font-family: var(--gog-font-heading);
1141
+ --gog-multiselect-gap: var(--gog-space-4);
1142
+ --gog-multiselect-option-gap: var(--gog-space-4);
1143
+ --gog-multiselect-options-padding: var(--gog-space-4);
1144
+ --gog-multiselect-label-color: var(--gog-accent-color);
1145
+ --gog-multiselect-label-font-size: var(--gog-text-sm);
1146
+ --gog-multiselect-label-letter-spacing: var(--gog-letter-spacing);
1147
+ --gog-multiselect-label-text-transform: var(--gog-text-transform);
1148
+ --gog-multiselect-field-bg: var(--gog-surface-color);
1149
+ --gog-multiselect-field-border: var(--gog-accent-dim);
1150
+ --gog-multiselect-field-border-width: var(--gog-control-border-width);
1151
+ --gog-multiselect-field-border-style: var(--gog-control-border-style);
1152
+ --gog-multiselect-radius: var(--gog-radius);
1153
+ --gog-multiselect-field-color: var(--gog-text-color);
1154
+ --gog-multiselect-value-color: var(--gog-text-color);
1155
+ --gog-multiselect-placeholder-color: var(--gog-muted-text-color);
1156
+ --gog-multiselect-focus-border: var(--gog-accent-color);
1157
+ --gog-multiselect-focus-ring: color-mix(in srgb, var(--gog-accent-color) 25%, transparent);
1158
+ --gog-multiselect-focus-glow: 0 0 8px var(--gog-multiselect-focus-ring);
1159
+ --gog-multiselect-focus-ring-width: var(--gog-focus-ring-width);
1160
+ --gog-multiselect-focus-ring-offset: var(--gog-focus-ring-offset);
1161
+ --gog-multiselect-error-color: var(--gog-danger-color);
1162
+ --gog-multiselect-error-font-size: var(--gog-text-xs);
1163
+ --gog-multiselect-error-offset: 2px;
1164
+ --gog-multiselect-border-color: var(--gog-accent-color);
1165
+ --gog-multiselect-panel-bg: var(--gog-surface-color);
1166
+ --gog-multiselect-panel-border: var(--gog-accent-color);
1167
+ --gog-multiselect-panel-shadow: var(--gog-panel-shadow);
1168
+ --gog-multiselect-panel-max-height: 260px;
1169
+ --gog-multiselect-panel-offset: 2px;
1170
+ --gog-multiselect-option-hover-bg: color-mix(in srgb, var(--gog-accent-color) 10%, transparent);
1171
+ --gog-multiselect-option-color: var(--gog-text-color);
1172
+ --gog-multiselect-option-gap-inline: var(--gog-space-10);
1159
1173
  /* Estimated row height fed into the panel's up/down placement math; not itself a real
1160
1174
  layout property, so it has no effect unless the JS reads it. */
1161
- --gog-multiselect-option-height: var(--gog-ms-option-height, 40px);
1162
- --gog-multiselect-option-radius: var(--gog-ms-option-radius, calc(var(--gog-radius) - 2px));
1163
- --gog-multiselect-option-disabled-opacity: var(--gog-ms-option-disabled-opacity, 0.5);
1164
- --gog-multiselect-option-transition-duration: var(
1165
- --gog-ms-option-transition-duration,
1166
- var(--gog-duration-fast)
1167
- );
1168
- --gog-multiselect-checkbox-border: var(--gog-ms-checkbox-border, var(--gog-accent-dim));
1169
- --gog-multiselect-checkbox-bg: var(--gog-ms-checkbox-bg, var(--gog-background-color));
1170
- --gog-multiselect-checkbox-checked-bg: var(--gog-ms-checkbox-checked-bg, var(--gog-accent-color));
1171
- --gog-multiselect-checkbox-checked-color: var(
1172
- --gog-ms-checkbox-checked-color,
1173
- var(--gog-primary-color)
1174
- );
1175
- --gog-multiselect-controls-gap: var(--gog-ms-controls-gap, 4px);
1176
- --gog-multiselect-controls-padding: var(--gog-ms-controls-padding, 6px 10px);
1177
- --gog-multiselect-actions-gap: var(--gog-ms-actions-gap, 6px);
1178
- --gog-multiselect-filter-padding: var(--gog-ms-filter-padding, 6px);
1179
- --gog-multiselect-filter-input-padding-y: var(--gog-ms-filter-input-padding-y, 6px);
1180
- --gog-multiselect-filter-input-padding-x: var(--gog-ms-filter-input-padding-x, 8px);
1181
- --gog-multiselect-filter-input-bg: var(--gog-ms-filter-input-bg, var(--gog-background-color));
1182
- --gog-multiselect-filter-input-color: var(
1183
- --gog-ms-filter-input-color,
1184
- var(--gog-multiselect-control-color)
1185
- );
1186
- --gog-multiselect-filter-input-border: var(
1187
- --gog-ms-filter-input-border,
1188
- var(--gog-multiselect-control-border)
1189
- );
1190
- --gog-multiselect-filter-input-radius: var(--gog-ms-filter-input-radius, var(--gog-radius));
1191
- --gog-multiselect-filter-border-width: var(
1192
- --gog-ms-filter-border-width,
1193
- var(--gog-panel-border-width)
1194
- );
1195
- --gog-multiselect-filter-border-style: var(
1196
- --gog-ms-filter-border-style,
1197
- var(--gog-panel-border-style)
1198
- );
1199
- --gog-multiselect-filter-border-color: var(--gog-ms-filter-border-color, var(--gog-border-color));
1200
- --gog-multiselect-filter-empty-padding: var(--gog-ms-filter-empty-padding, 10px);
1201
- --gog-multiselect-filter-empty-color: var(
1202
- --gog-ms-filter-empty-color,
1203
- var(--gog-multiselect-placeholder-color)
1204
- );
1175
+ --gog-multiselect-option-height: 40px;
1176
+ --gog-multiselect-option-radius: calc(var(--gog-radius) - 2px);
1177
+ --gog-multiselect-option-disabled-opacity: 0.5;
1178
+ --gog-multiselect-option-transition-duration: var(--gog-duration-fast);
1179
+ --gog-multiselect-checkbox-border: var(--gog-accent-dim);
1180
+ --gog-multiselect-checkbox-bg: var(--gog-background-color);
1181
+ --gog-multiselect-checkbox-checked-bg: var(--gog-accent-color);
1182
+ --gog-multiselect-checkbox-checked-color: var(--gog-primary-color);
1183
+ --gog-multiselect-controls-gap: var(--gog-space-4);
1184
+ --gog-multiselect-controls-padding: var(--gog-space-6) var(--gog-space-10);
1185
+ --gog-multiselect-actions-gap: var(--gog-space-6);
1186
+ --gog-multiselect-filter-padding: var(--gog-space-6);
1187
+ --gog-multiselect-filter-input-padding-y: var(--gog-space-6);
1188
+ --gog-multiselect-filter-input-padding-x: var(--gog-space-8);
1189
+ --gog-multiselect-filter-input-bg: var(--gog-background-color);
1190
+ --gog-multiselect-filter-input-color: var(--gog-multiselect-field-color);
1191
+ --gog-multiselect-filter-input-border: var(--gog-multiselect-field-border);
1192
+ --gog-multiselect-filter-input-radius: var(--gog-radius);
1193
+ --gog-multiselect-filter-border-width: var(--gog-panel-border-width);
1194
+ --gog-multiselect-filter-border-style: var(--gog-panel-border-style);
1195
+ --gog-multiselect-filter-border-color: var(--gog-border-color);
1196
+ --gog-multiselect-filter-empty-padding: var(--gog-space-10);
1197
+ --gog-multiselect-filter-empty-color: var(--gog-multiselect-placeholder-color);
1205
1198
  /* Matches --gog-select-chevron-inset; see the note there. */
1206
1199
  /* "+N" badge shown when the selection does not fit on one line. */
1207
- --gog-multiselect-overflow-color: var(
1208
- --gog-ms-overflow-color,
1209
- var(--gog-multiselect-placeholder-color)
1210
- );
1211
- --gog-multiselect-overflow-font-size: var(--gog-ms-overflow-font-size, var(--gog-text-sm));
1212
- --gog-multiselect-overflow-gap: var(--gog-ms-overflow-gap, 6px);
1213
- --gog-multiselect-min-width: var(--gog-ms-min-width, 120px);
1214
- --gog-multiselect-panel-max-width: var(--gog-ms-panel-max-width, 420px);
1215
- --gog-multiselect-actions-inset: var(--gog-ms-actions-inset, var(--gog-control-icon-offset));
1216
- --gog-multiselect-clear-radius: var(--gog-ms-clear-radius, 2px);
1217
- --gog-multiselect-disabled-opacity: var(--gog-ms-disabled-opacity, var(--gog-disabled-opacity));
1218
- --gog-multiselect-transition-duration: var(
1219
- --gog-ms-transition-duration,
1220
- var(--gog-duration-base)
1221
- );
1222
- --gog-multiselect-float-label-reserve: var(
1223
- --gog-ms-float-label-reserve,
1224
- var(--gog-field-float-label-reserve)
1225
- );
1226
- --gog-multiselect-float-label-in-top: var(
1227
- --gog-ms-float-label-in-top,
1228
- var(--gog-field-float-label-in-top)
1229
- );
1230
- --gog-multiselect-float-label-over-gap: var(
1231
- --gog-ms-float-label-over-gap,
1232
- var(--gog-field-float-label-over-gap)
1233
- );
1234
- --gog-multiselect-float-label-over-reserve: var(
1235
- --gog-ms-float-label-over-reserve,
1236
- var(--gog-field-float-label-over-reserve)
1237
- );
1238
- --gog-multiselect-arrow-transition-duration: var(
1239
- --gog-ms-arrow-transition-duration,
1240
- var(--gog-duration-slow)
1241
- );
1200
+ --gog-multiselect-overflow-color: var(--gog-multiselect-placeholder-color);
1201
+ --gog-multiselect-overflow-font-size: var(--gog-text-sm);
1202
+ --gog-multiselect-overflow-gap: var(--gog-space-6);
1203
+ --gog-multiselect-min-width: 120px;
1204
+ --gog-multiselect-panel-max-width: 420px;
1205
+ --gog-multiselect-actions-inset: var(--gog-control-icon-offset);
1206
+ --gog-multiselect-clear-radius: 2px;
1207
+ --gog-multiselect-disabled-opacity: var(--gog-disabled-opacity);
1208
+ --gog-multiselect-transition-duration: var(--gog-duration-base);
1209
+ --gog-multiselect-float-label-reserve: var(--gog-field-float-label-reserve);
1210
+ --gog-multiselect-float-label-in-top: var(--gog-field-float-label-in-top);
1211
+ --gog-multiselect-float-label-over-gap: var(--gog-field-float-label-over-gap);
1212
+ --gog-multiselect-float-label-over-reserve: var(--gog-field-float-label-over-reserve);
1213
+ --gog-multiselect-arrow-transition-duration: var(--gog-duration-slow);
1242
1214
  /* Icon geometry, expressed as a ratio of the control's font size. */
1243
- --gog-multiselect-clear-icon-ratio: var(--gog-ms-clear-icon-ratio, 0.7);
1244
- --gog-multiselect-arrow-icon-ratio: var(--gog-ms-arrow-icon-ratio, 0.875);
1245
- --gog-multiselect-mark-size-ratio: var(--gog-ms-mark-size-ratio, 1.2375);
1246
- --gog-multiselect-mark-icon-ratio: var(--gog-ms-mark-icon-ratio, 1.125);
1215
+ --gog-multiselect-clear-icon-ratio: 0.7;
1216
+ --gog-multiselect-arrow-icon-ratio: 0.875;
1217
+ --gog-multiselect-mark-size-ratio: 1.2375;
1218
+ --gog-multiselect-mark-icon-ratio: 1.125;
1247
1219
 
1248
1220
  /* ── Menu ──────────────────────────────────────────────────────────────────
1249
1221
  The command menu opened by `[gogMenuTrigger]`. Metrics follow the dropdown panel's, so a
@@ -1256,8 +1228,8 @@
1256
1228
  --gog-menu-radius: var(--gog-panel-radius);
1257
1229
  --gog-menu-shadow: var(--gog-dialog-shadow);
1258
1230
  --gog-menu-font-family: var(--gog-font-body);
1259
- --gog-menu-padding: 4px;
1260
- --gog-menu-gap: 2px;
1231
+ --gog-menu-padding: var(--gog-space-4);
1232
+ --gog-menu-gap: var(--gog-space-2);
1261
1233
  --gog-menu-offset: 4px;
1262
1234
  --gog-menu-min-width: 180px;
1263
1235
  --gog-menu-max-width: 320px;
@@ -1269,7 +1241,7 @@
1269
1241
  --gog-menu-item-hover-bg: var(--gog-hover-color);
1270
1242
  --gog-menu-item-hover-color: var(--gog-text-color);
1271
1243
  --gog-menu-item-font-size: var(--gog-text-sm);
1272
- --gog-menu-item-padding: 8px 12px;
1244
+ --gog-menu-item-padding: var(--gog-space-8) var(--gog-space-12);
1273
1245
  --gog-menu-item-radius: var(--gog-radius);
1274
1246
  --gog-menu-item-gap: var(--gog-space-sm);
1275
1247
  --gog-menu-item-disabled-opacity: var(--gog-disabled-opacity);
@@ -1278,7 +1250,7 @@
1278
1250
  --gog-menu-item-icon-size: 1em;
1279
1251
 
1280
1252
  /* ── Paginator ─────────────────────────────────────────────────────────────── */
1281
- --gog-paginator-gap: 4px;
1253
+ --gog-paginator-gap: var(--gog-space-4);
1282
1254
  --gog-paginator-ellipsis-color: var(--gog-muted-text-color);
1283
1255
  --gog-paginator-ellipsis-font-size: var(--gog-text-sm);
1284
1256
  --gog-paginator-ellipsis-font-family: var(--gog-font-body);
@@ -1331,21 +1303,21 @@
1331
1303
  --gog-panel-footer-gap: var(--gog-space-sm);
1332
1304
  --gog-panel-footer-padding-top: var(--gog-space-sm);
1333
1305
 
1334
- --gog-panel-xsm-padding-y: 10px;
1335
- --gog-panel-xsm-padding-x: 12px;
1306
+ --gog-panel-xsm-padding-y: var(--gog-space-10);
1307
+ --gog-panel-xsm-padding-x: var(--gog-space-12);
1336
1308
  --gog-panel-xsm-gap: var(--gog-space-sm);
1337
- --gog-panel-sm-padding-y: 14px;
1309
+ --gog-panel-sm-padding-y: var(--gog-space-14);
1338
1310
  --gog-panel-sm-padding-x: var(--gog-space-md);
1339
- --gog-panel-sm-gap: 10px;
1340
- --gog-panel-md-padding-y: 18px;
1341
- --gog-panel-md-padding-x: 20px;
1342
- --gog-panel-md-gap: 12px;
1311
+ --gog-panel-sm-gap: var(--gog-space-10);
1312
+ --gog-panel-md-padding-y: var(--gog-space-18);
1313
+ --gog-panel-md-padding-x: var(--gog-space-20);
1314
+ --gog-panel-md-gap: var(--gog-space-12);
1343
1315
  --gog-panel-lg-padding-y: var(--gog-space-lg);
1344
- --gog-panel-lg-padding-x: 28px;
1316
+ --gog-panel-lg-padding-x: var(--gog-space-28);
1345
1317
  --gog-panel-lg-gap: var(--gog-space-md);
1346
- --gog-panel-slg-padding-y: 32px;
1347
- --gog-panel-slg-padding-x: 36px;
1348
- --gog-panel-slg-gap: 20px;
1318
+ --gog-panel-slg-padding-y: var(--gog-space-32);
1319
+ --gog-panel-slg-padding-x: var(--gog-space-32);
1320
+ --gog-panel-slg-gap: var(--gog-space-20);
1349
1321
 
1350
1322
  /* ── Progressbar ──────────────────────────────────────────────────────────── */
1351
1323
  --gog-progressbar-track-base-bg: color-mix(
@@ -1428,17 +1400,17 @@
1428
1400
  `thin` variant gets more of it since its 6px track leaves the least visible thumb to aim
1429
1401
  at; both land the effective hit width in the ~22-24px range generally recommended for a
1430
1402
  comfortable pointer target. */
1431
- --gog-scroll-normal-thumb-hit-padding: 6px;
1432
- --gog-scroll-thin-thumb-hit-padding: 9px;
1403
+ --gog-scroll-normal-thumb-hit-padding: var(--gog-space-6);
1404
+ --gog-scroll-thin-thumb-hit-padding: var(--gog-space-8);
1433
1405
 
1434
1406
  /* ── Select ────────────────────────────────────────────────────────────────── */
1435
1407
  --gog-select-font-family: var(--gog-font-body);
1436
1408
  --gog-select-label-font-family: var(--gog-font-heading);
1437
- --gog-select-gap: 4px;
1409
+ --gog-select-gap: var(--gog-space-4);
1438
1410
  --gog-select-label-color: var(--gog-accent-color);
1439
1411
  --gog-select-label-font-size: var(--gog-text-sm);
1440
- --gog-select-label-letter-spacing: 1px;
1441
- --gog-select-label-text-transform: uppercase;
1412
+ --gog-select-label-letter-spacing: var(--gog-letter-spacing);
1413
+ --gog-select-label-text-transform: var(--gog-text-transform);
1442
1414
  --gog-select-field-bg: var(--gog-surface-color);
1443
1415
  --gog-select-field-border: var(--gog-accent-dim);
1444
1416
  --gog-select-field-border-width: var(--gog-control-border-width);
@@ -1467,25 +1439,25 @@
1467
1439
  /* Ceiling for a content-sized panel, so one very long option cannot span the viewport. */
1468
1440
  --gog-select-panel-max-width: 420px;
1469
1441
  /* Filter box — only rendered when `filter` is on. */
1470
- --gog-select-filter-padding: 6px;
1471
- --gog-select-filter-input-padding-y: 6px;
1472
- --gog-select-filter-input-padding-x: 8px;
1442
+ --gog-select-filter-padding: var(--gog-space-6);
1443
+ --gog-select-filter-input-padding-y: var(--gog-space-6);
1444
+ --gog-select-filter-input-padding-x: var(--gog-space-8);
1473
1445
  --gog-select-filter-input-bg: var(--gog-background-color);
1474
- --gog-select-filter-input-color: var(--gog-select-control-color);
1475
- --gog-select-filter-input-border: var(--gog-select-control-border);
1446
+ --gog-select-filter-input-color: var(--gog-select-field-color);
1447
+ --gog-select-filter-input-border: var(--gog-select-field-border);
1476
1448
  --gog-select-filter-input-radius: var(--gog-radius);
1477
1449
  --gog-select-filter-border-width: var(--gog-panel-border-width);
1478
1450
  --gog-select-filter-border-style: var(--gog-panel-border-style);
1479
1451
  --gog-select-filter-border-color: var(--gog-select-option-border-color, var(--gog-border-color));
1480
- --gog-select-filter-empty-padding: 10px;
1452
+ --gog-select-filter-empty-padding: var(--gog-space-10);
1481
1453
  --gog-select-filter-empty-color: var(--gog-select-placeholder-color);
1482
1454
  /* Clear button — only rendered once a value is selected, see `clearable`. */
1483
1455
  --gog-select-clear-radius: 2px;
1484
1456
  --gog-select-clear-icon-ratio: 0.7;
1485
- --gog-select-clear-gap: 6px;
1457
+ --gog-select-clear-gap: var(--gog-space-6);
1486
1458
  --gog-select-clear-color: var(--gog-select-placeholder-color);
1487
1459
  --gog-select-clear-hover-color: var(--gog-select-label-color);
1488
- --gog-select-control-gap: 12px;
1460
+ --gog-select-control-gap: var(--gog-space-12);
1489
1461
  --gog-select-panel-bg: var(--gog-surface-color);
1490
1462
  --gog-select-panel-shadow: var(--gog-panel-shadow);
1491
1463
  --gog-select-panel-max-height: 260px;
@@ -1493,7 +1465,7 @@
1493
1465
  --gog-select-option-hover-bg: color-mix(in srgb, var(--gog-accent-color) 10%, transparent);
1494
1466
  --gog-select-option-selected-color: var(--gog-accent-color);
1495
1467
  --gog-select-option-color: var(--gog-text-color);
1496
- --gog-select-option-gap: 10px;
1468
+ --gog-select-option-gap: var(--gog-space-10);
1497
1469
  /* Estimated row height fed into the panel's up/down placement math; not itself a real
1498
1470
  layout property, so it has no effect unless the JS reads it. */
1499
1471
  --gog-select-option-height: 40px;
@@ -1545,11 +1517,11 @@
1545
1517
  --gog-slider-label-font-family: var(--gog-font-heading);
1546
1518
  --gog-slider-value-font-family: var(--gog-font-mono);
1547
1519
  --gog-slider-error-font-family: var(--gog-font-body);
1548
- --gog-slider-gap: 6px;
1520
+ --gog-slider-gap: var(--gog-space-6);
1549
1521
  --gog-slider-label-color: var(--gog-accent-color);
1550
1522
  --gog-slider-label-font-size: var(--gog-text-sm);
1551
- --gog-slider-label-letter-spacing: 1px;
1552
- --gog-slider-label-text-transform: uppercase;
1523
+ --gog-slider-label-letter-spacing: var(--gog-letter-spacing);
1524
+ --gog-slider-label-text-transform: var(--gog-text-transform);
1553
1525
  --gog-slider-value-color: var(--gog-accent-color);
1554
1526
  --gog-slider-value-font-size: var(--gog-text-sm);
1555
1527
  --gog-slider-value-min-width: 40px;
@@ -1568,9 +1540,9 @@
1568
1540
  * legible against its own theme's surface.
1569
1541
  */
1570
1542
  --gog-slider-track-bg: color-mix(in srgb, var(--gog-text-color) 30%, var(--gog-border-color));
1571
- --gog-slider-track-border-width: 1px;
1572
- --gog-slider-track-border-style: solid;
1573
- /* Transparent by default — same opt-in convention as --gog-btn-primary-border: the
1543
+ --gog-slider-track-border-width: var(--gog-border-width);
1544
+ --gog-slider-track-border-style: var(--gog-border-style);
1545
+ /* Transparent by default — same opt-in convention as --gog-button-primary-border: the
1574
1546
  width/style are always in the box model, but invisible until a theme sets a color. */
1575
1547
  --gog-slider-track-border-color: transparent;
1576
1548
  /* Bound via `background` (not `background-color`) in slider.component.scss, so this
@@ -1580,7 +1552,7 @@
1580
1552
  --gog-slider-thumb-size: 16px;
1581
1553
  --gog-slider-thumb-bg: var(--gog-accent-color);
1582
1554
  --gog-slider-thumb-border: var(--gog-background-color);
1583
- --gog-slider-thumb-border-width: 2px;
1555
+ --gog-slider-thumb-border-width: var(--gog-control-border-width);
1584
1556
  --gog-slider-thumb-radius: 50%;
1585
1557
  --gog-slider-thumb-shadow: color-mix(in srgb, var(--gog-accent-bright) 40%, transparent);
1586
1558
  --gog-slider-thumb-glow-size: 6px;
@@ -1627,11 +1599,11 @@
1627
1599
  --gog-table-font-family: var(--gog-font-body);
1628
1600
  --gog-table-header-font-family: var(--gog-font-heading);
1629
1601
  --gog-table-numeric-font-family: var(--gog-font-mono);
1630
- --gog-table-gap: 12px;
1602
+ --gog-table-gap: var(--gog-space-12);
1631
1603
  --gog-table-border-color: var(--gog-accent-dim);
1632
- --gog-table-border-width: 2px;
1633
- --gog-table-border-style: solid;
1634
- --gog-table-row-border-width: 1px;
1604
+ --gog-table-border-width: var(--gog-control-border-width);
1605
+ --gog-table-border-style: var(--gog-border-style);
1606
+ --gog-table-row-border-width: var(--gog-border-width);
1635
1607
  /* The selection column is sized to its checkbox and never grows with content. */
1636
1608
  --gog-table-select-col-width: 44px;
1637
1609
  --gog-table-surface: var(--gog-surface-color);
@@ -1644,38 +1616,38 @@
1644
1616
  --gog-table-muted-color: var(--gog-muted-text-color);
1645
1617
  --gog-table-focus-ring: var(--gog-accent-color);
1646
1618
  --gog-table-focus-ring-width: var(--gog-focus-ring-width);
1647
- --gog-table-header-letter-spacing: 1px;
1648
- --gog-table-header-text-transform: uppercase;
1619
+ --gog-table-header-letter-spacing: var(--gog-letter-spacing);
1620
+ --gog-table-header-text-transform: var(--gog-text-transform);
1649
1621
  --gog-table-num-col-width: 48px;
1650
- --gog-table-th-inner-gap: 6px;
1622
+ --gog-table-th-inner-gap: var(--gog-space-6);
1651
1623
  --gog-table-sort-icon-size: 0.9em;
1652
1624
  --gog-table-sort-icon-width: 1.1em;
1653
1625
  --gog-table-sort-icon-opacity: 0.6;
1654
- --gog-table-empty-padding: 24px 14px;
1626
+ --gog-table-empty-padding: var(--gog-space-24) var(--gog-space-14);
1655
1627
  --gog-table-empty-font-size: var(--gog-text-md);
1656
- --gog-table-loading-padding: 32px 14px;
1628
+ --gog-table-loading-padding: var(--gog-space-32) var(--gog-space-14);
1657
1629
  --gog-table-loading-opacity: 0.5;
1658
1630
  --gog-table-row-transition-duration: var(--gog-duration-fast);
1659
1631
  --gog-table-footer-gap: var(--gog-space-sm);
1660
1632
  --gog-table-footer-min-height: 32px;
1661
1633
  --gog-table-total-font-size: var(--gog-text-xs);
1662
1634
  --gog-table-total-letter-spacing: 0.5px;
1663
- --gog-table-total-text-transform: uppercase;
1635
+ --gog-table-total-text-transform: var(--gog-text-transform);
1664
1636
  --gog-table-num-font-size: var(--gog-text-xs);
1665
- --gog-table-padding-h: 14px;
1666
- --gog-table-xsm-padding-v: 2px;
1637
+ --gog-table-padding-h: var(--gog-space-14);
1638
+ --gog-table-xsm-padding-v: var(--gog-space-2);
1667
1639
  --gog-table-xsm-th-font-size: var(--gog-text-xs);
1668
1640
  --gog-table-xsm-td-font-size: var(--gog-text-xs);
1669
- --gog-table-sm-padding-v: 3px;
1641
+ --gog-table-sm-padding-v: var(--gog-space-2);
1670
1642
  --gog-table-sm-th-font-size: var(--gog-text-xs);
1671
1643
  --gog-table-sm-td-font-size: var(--gog-text-xs);
1672
- --gog-table-md-padding-v: 6px;
1644
+ --gog-table-md-padding-v: var(--gog-space-6);
1673
1645
  --gog-table-md-th-font-size: var(--gog-text-xs);
1674
1646
  --gog-table-md-td-font-size: var(--gog-text-sm);
1675
- --gog-table-lg-padding-v: 10px;
1647
+ --gog-table-lg-padding-v: var(--gog-space-10);
1676
1648
  --gog-table-lg-th-font-size: var(--gog-text-sm);
1677
1649
  --gog-table-lg-td-font-size: var(--gog-text-md);
1678
- --gog-table-slg-padding-v: 14px;
1650
+ --gog-table-slg-padding-v: var(--gog-space-14);
1679
1651
  --gog-table-slg-th-font-size: var(--gog-text-md);
1680
1652
  --gog-table-slg-td-font-size: var(--gog-text-lg);
1681
1653
 
@@ -1696,8 +1668,8 @@
1696
1668
  --gog-tabs-rest-color: var(--gog-muted-text-color);
1697
1669
  --gog-tabs-hover-color: var(--gog-text-color);
1698
1670
  --gog-tabs-active-color: var(--gog-accent-color);
1699
- --gog-tabs-header-border-width: 1px;
1700
- --gog-tabs-header-border-style: solid;
1671
+ --gog-tabs-header-border-width: var(--gog-border-width);
1672
+ --gog-tabs-header-border-style: var(--gog-border-style);
1701
1673
  --gog-tabs-header-border-color: var(--gog-border-color);
1702
1674
  --gog-tabs-indicator-color: var(--gog-accent-color);
1703
1675
  --gog-tabs-indicator-thickness: 2px;
@@ -1709,15 +1681,15 @@
1709
1681
  --gog-tabs-focus-ring-color: var(--gog-accent-color);
1710
1682
  --gog-tabs-panel-padding: var(--gog-space-md);
1711
1683
  --gog-tabs-panel-color: var(--gog-text-color);
1712
- --gog-tabs-xsm-padding: 0.375rem 0.625rem;
1684
+ --gog-tabs-xsm-padding: var(--gog-space-6) var(--gog-space-10);
1713
1685
  --gog-tabs-xsm-font-size: var(--gog-text-xs);
1714
- --gog-tabs-sm-padding: 0.5rem 0.875rem;
1686
+ --gog-tabs-sm-padding: var(--gog-space-8) var(--gog-space-14);
1715
1687
  --gog-tabs-sm-font-size: var(--gog-text-sm);
1716
- --gog-tabs-md-padding: 0.75rem 1.125rem;
1688
+ --gog-tabs-md-padding: var(--gog-space-12) var(--gog-space-18);
1717
1689
  --gog-tabs-md-font-size: var(--gog-text-md);
1718
- --gog-tabs-lg-padding: 1rem 1.5rem;
1690
+ --gog-tabs-lg-padding: var(--gog-space-16) var(--gog-space-24);
1719
1691
  --gog-tabs-lg-font-size: var(--gog-text-lg);
1720
- --gog-tabs-slg-padding: 1.25rem 1.75rem;
1692
+ --gog-tabs-slg-padding: var(--gog-space-20) var(--gog-space-28);
1721
1693
  --gog-tabs-slg-font-size: var(--gog-text-xl);
1722
1694
 
1723
1695
  /* ── Tag ──────────────────────────────────────────────────────────────────
@@ -1733,42 +1705,42 @@
1733
1705
  --gog-tag-color-mix: 82%;
1734
1706
  --gog-tag-bg-base: var(--gog-surface-color);
1735
1707
  --gog-tag-color-base: black;
1736
- --gog-tag-border-width: 1px;
1737
- --gog-tag-border-style: solid;
1738
- --gog-tag-inner-border-width: 1px;
1708
+ --gog-tag-border-width: var(--gog-border-width);
1709
+ --gog-tag-border-style: var(--gog-border-style);
1710
+ --gog-tag-inner-border-width: var(--gog-border-width);
1739
1711
  --gog-tag-font-weight: 600;
1740
1712
  --gog-tag-line-height: 1;
1741
1713
  --gog-tag-radius: max(var(--gog-radius), 2px);
1742
1714
  --gog-tag-pill-radius: 9999px;
1743
1715
 
1744
1716
  --gog-tag-xsm-font-size: 0.6875rem;
1745
- --gog-tag-xsm-padding-block: 0.1875rem;
1746
- --gog-tag-xsm-padding-inline: 0.375rem;
1747
- --gog-tag-xsm-gap: 0.1875rem;
1717
+ --gog-tag-xsm-padding-block: var(--gog-space-2);
1718
+ --gog-tag-xsm-padding-inline: var(--gog-space-6);
1719
+ --gog-tag-xsm-gap: var(--gog-space-2);
1748
1720
  --gog-tag-xsm-icon-size: 0.6875rem;
1749
1721
 
1750
1722
  --gog-tag-sm-font-size: 0.75rem;
1751
- --gog-tag-sm-padding-block: 0.25rem;
1752
- --gog-tag-sm-padding-inline: 0.5rem;
1753
- --gog-tag-sm-gap: 0.25rem;
1723
+ --gog-tag-sm-padding-block: var(--gog-space-4);
1724
+ --gog-tag-sm-padding-inline: var(--gog-space-8);
1725
+ --gog-tag-sm-gap: var(--gog-space-4);
1754
1726
  --gog-tag-sm-icon-size: 0.75rem;
1755
1727
 
1756
1728
  --gog-tag-md-font-size: 0.875rem;
1757
- --gog-tag-md-padding-block: 0.375rem;
1758
- --gog-tag-md-padding-inline: 0.75rem;
1759
- --gog-tag-md-gap: 0.375rem;
1729
+ --gog-tag-md-padding-block: var(--gog-space-6);
1730
+ --gog-tag-md-padding-inline: var(--gog-space-12);
1731
+ --gog-tag-md-gap: var(--gog-space-6);
1760
1732
  --gog-tag-md-icon-size: 0.875rem;
1761
1733
 
1762
1734
  --gog-tag-lg-font-size: 1rem;
1763
- --gog-tag-lg-padding-block: 0.5rem;
1764
- --gog-tag-lg-padding-inline: 0.875rem;
1765
- --gog-tag-lg-gap: 0.5rem;
1735
+ --gog-tag-lg-padding-block: var(--gog-space-8);
1736
+ --gog-tag-lg-padding-inline: var(--gog-space-14);
1737
+ --gog-tag-lg-gap: var(--gog-space-8);
1766
1738
  --gog-tag-lg-icon-size: 1rem;
1767
1739
 
1768
1740
  --gog-tag-slg-font-size: 1.125rem;
1769
- --gog-tag-slg-padding-block: 0.625rem;
1770
- --gog-tag-slg-padding-inline: 1rem;
1771
- --gog-tag-slg-gap: 0.625rem;
1741
+ --gog-tag-slg-padding-block: var(--gog-space-10);
1742
+ --gog-tag-slg-padding-inline: var(--gog-space-16);
1743
+ --gog-tag-slg-gap: var(--gog-space-10);
1772
1744
  --gog-tag-slg-icon-size: 1.125rem;
1773
1745
 
1774
1746
  /* ── Toast ────────────────────────────────────────────────────────────────── */
@@ -1782,18 +1754,18 @@
1782
1754
  --gog-toast-warning-color: var(--gog-accent-bright);
1783
1755
  --gog-toast-info-color: var(--gog-accent-color);
1784
1756
  --gog-toast-accent-width: 4px;
1785
- --gog-toast-padding: 12px 14px;
1757
+ --gog-toast-padding: var(--gog-space-12) var(--gog-space-14);
1786
1758
  --gog-toast-radius: 0px;
1787
- --gog-toast-content-gap: 10px;
1759
+ --gog-toast-content-gap: var(--gog-space-10);
1788
1760
  --gog-toast-main-gap: var(--gog-space-sm);
1789
- --gog-toast-actions-gap: 6px;
1761
+ --gog-toast-actions-gap: var(--gog-space-6);
1790
1762
  --gog-toast-message-font-size: var(--gog-text-sm);
1791
1763
  --gog-toast-message-line-height: 1.5;
1792
1764
  --gog-toast-icon-size: 1rem;
1793
1765
  --gog-toast-icon-line-height: 1.4;
1794
- --gog-toast-action-padding: 0.25rem 0.5rem;
1766
+ --gog-toast-action-padding: var(--gog-space-4) var(--gog-space-8);
1795
1767
  --gog-toast-action-font-size: 0.75rem;
1796
- --gog-toast-close-padding: 0.125rem 0.25rem;
1768
+ --gog-toast-close-padding: var(--gog-space-2) var(--gog-space-4);
1797
1769
  --gog-toast-close-font-size: 0.75rem;
1798
1770
  --gog-toast-progress-height: 3px;
1799
1771
  --gog-toast-progress-opacity: 30%;
@@ -1815,8 +1787,8 @@
1815
1787
  --gog-toggle-font-family: var(--gog-font-body);
1816
1788
  --gog-toggle-gap: var(--gog-space-sm);
1817
1789
  --gog-toggle-radius: 999px;
1818
- --gog-toggle-border-width: 1px;
1819
- --gog-toggle-border-style: solid;
1790
+ --gog-toggle-border-width: var(--gog-border-width);
1791
+ --gog-toggle-border-style: var(--gog-border-style);
1820
1792
  --gog-toggle-border-color: var(--gog-border-color);
1821
1793
  --gog-toggle-on-border-color: var(--gog-accent-color);
1822
1794
  --gog-toggle-track-off-bg: color-mix(in srgb, var(--gog-text-color) 18%, transparent);
@@ -1836,13 +1808,13 @@
1836
1808
  --gog-toggle-state-color: var(--gog-accent-text-color, var(--gog-primary-color));
1837
1809
  --gog-toggle-state-font-weight: 600;
1838
1810
  --gog-toggle-state-letter-spacing: 0.04em;
1839
- --gog-toggle-state-padding-inline: 4px;
1811
+ --gog-toggle-state-padding-inline: var(--gog-space-4);
1840
1812
  --gog-toggle-state-offset: 6px;
1841
1813
  /* Gap between the wording and the thumb parked at the opposite end. The clearance itself
1842
1814
  (thumb size + this) is computed in the component stylesheet, not here: a `var(` to a
1843
1815
  size-class token is substituted where it is *declared*, so doing that calc on :root would
1844
1816
  freeze it to the md thumb and stop it scaling with `size`. */
1845
- --gog-toggle-state-thumb-gap: 6px;
1817
+ --gog-toggle-state-thumb-gap: var(--gog-space-6);
1846
1818
  --gog-toggle-xsm-track-width: 24px;
1847
1819
  --gog-toggle-xsm-track-height: 14px;
1848
1820
  --gog-toggle-xsm-thumb-size: 10px;
@@ -1873,7 +1845,7 @@
1873
1845
  --gog-tooltip-font-family: var(--gog-font-body);
1874
1846
  --gog-tooltip-font-size: var(--gog-text-xs);
1875
1847
  --gog-tooltip-line-height: 1.4;
1876
- --gog-tooltip-padding: 6px 10px;
1848
+ --gog-tooltip-padding: var(--gog-space-6) var(--gog-space-10);
1877
1849
  --gog-tooltip-radius: var(--gog-radius);
1878
1850
  --gog-tooltip-max-width: 280px;
1879
1851
  /* Caps the gog-scroll wrapping the bubble's content — see tooltip-bubble.component.html.
@@ -1894,7 +1866,7 @@
1894
1866
  --gog-tooltip-arrow-size: 5px;
1895
1867
  /* Space kept between the trigger and the bubble. Read by the directive itself (not just
1896
1868
  CSS) to feed the placement math — see `readPxToken` in `tooltip.directive.ts`. */
1897
- --gog-tooltip-gap: 8px;
1869
+ --gog-tooltip-gap: var(--gog-space-8);
1898
1870
  --gog-tooltip-z: 400;
1899
1871
  --gog-tooltip-transition-duration: var(--gog-duration-fast);
1900
1872
  }