@guildofgleks/ui 0.0.1 → 21.2.2

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.
@@ -0,0 +1,943 @@
1
+ /*
2
+ * @guildofgleks/ui — baseline theme
3
+ *
4
+ * Every token the components read, with a working default, so the library renders
5
+ * correctly from a single import and a consumer can override only what they care about.
6
+ *
7
+ * ── The three layers ─────────────────────────────────────────────────────────────
8
+ * 1. Foundation — palette, type scale, spacing, motion, focus. Restyles everything.
9
+ * 2. Component — `--gog-<block>-*`. Every colour, font, border, radius, shadow,
10
+ * padding and duration each component paints with lives here, so a
11
+ * theme can restyle one component without touching its stylesheet.
12
+ * 3. Instance — a handful of deliberately UNDECLARED tokens (`--gog-btn-bg`,
13
+ * `--gog-btn-padding`, `--gog-tag-bg`, …) that variant/size classes
14
+ * fall back through. Left unset on purpose: a value declared here
15
+ * would out-cascade the variant classes and pin every button to one
16
+ * look. Set them on an element to override a single instance.
17
+ *
18
+ * No component stylesheet declares a `--gog-*` default of its own — everything a
19
+ * component paints resolves to a token below.
20
+ *
21
+ * ── Why there are two blocks, and which one to add a token to ────────────────────
22
+ * A custom property's `var()` references are substituted on the element that *declares*
23
+ * it, not where it is read. So `--gog-btn-primary-bg: var(--gog-accent-color)` declared on
24
+ * `:root` freezes to the root palette: a `data-theme` scope further down the tree could
25
+ * change `--gog-accent-color` and buttons inside it would not follow.
26
+ *
27
+ * `:root` — literals only (and the light palette default). Values that
28
+ * reference nothing, so resolving them once at the root is right.
29
+ * `:root, [data-theme]` — every token whose value reads another token. Re-declared on
30
+ * each theme scope so it re-derives from that scope's palette
31
+ * and metrics. **A new token that contains `var(` goes here.**
32
+ *
33
+ * ── Adding a theme ───────────────────────────────────────────────────────────────
34
+ * Declare a palette against the attribute value; the derived layer re-resolves for you:
35
+ *
36
+ * :root[data-theme='mine'], [data-theme='mine'] { --gog-accent-color: #ff4edb; }
37
+ *
38
+ * Listing both selectors makes the theme work at the root *and* on any subtree, so a
39
+ * single page can show several themes side by side.
40
+ */
41
+
42
+ :root {
43
+ /* ── Typography ───────────────────────────────────────────────────────────────
44
+ Generic stacks on purpose: a UI library should not force a webfont download on
45
+ its consumers. Point these at your own families to restyle all text at once.
46
+ `styles/fonts.css` is an optional import that wires up the showcase's families. */
47
+ --gog-font-heading: system-ui, -apple-system, 'Segoe UI', sans-serif;
48
+ --gog-font-body: system-ui, -apple-system, 'Segoe UI', sans-serif;
49
+ --gog-font-mono: ui-monospace, SFMono-Regular, 'JetBrains Mono', monospace;
50
+
51
+ --gog-text-xs: 0.75rem;
52
+ --gog-text-sm: 0.875rem;
53
+ --gog-text-md: 1rem;
54
+ --gog-text-lg: 1.125rem;
55
+ --gog-text-xl: 1.5rem;
56
+ --gog-text-2xl: 2rem;
57
+ --gog-text-3xl: 3rem;
58
+
59
+ /* ── Spacing & geometry ─────────────────────────────────────────────────────── */
60
+ --gog-space-xs: 4px;
61
+ --gog-space-sm: 8px;
62
+ --gog-space-md: 16px;
63
+ --gog-space-lg: 24px;
64
+ --gog-space-2xl: 48px;
65
+
66
+ --gog-radius: 8px;
67
+ --gog-panel-border-width: 1px;
68
+ --gog-panel-border-style: solid;
69
+
70
+ /* ── Motion ──────────────────────────────────────────────────────────────────
71
+ Every component transition/animation is expressed in these. Set them to 0s to
72
+ flatten all motion theme-wide (components also honour prefers-reduced-motion). */
73
+ --gog-duration-fast: 0.12s;
74
+ --gog-duration-base: 0.15s;
75
+ --gog-duration-slow: 0.2s;
76
+ --gog-easing: ease;
77
+
78
+ /* ── Focus & disabled ───────────────────────────────────────────────────────── */
79
+ --gog-focus-ring-width: 3px;
80
+ --gog-focus-ring-offset: 2px;
81
+ --gog-disabled-opacity: 0.4;
82
+
83
+ /* ── Control metrics ─────────────────────────────────────────────────────────
84
+ Five-tier scale: xsm/slg bookend the original sm/md/lg (restored below to
85
+ their pre-compaction numbers) as new extremes for extra-tight or extra-roomy
86
+ layouts. */
87
+ --gog-control-padding-y: 10px;
88
+ --gog-control-padding-x: 14px;
89
+ --gog-control-icon-offset: 10px;
90
+ --gog-control-border-width: 2px;
91
+ --gog-control-border-style: solid;
92
+
93
+ --gog-control-checkbox-padding: 6px;
94
+ --gog-control-checkbox-box-size-xsm: 12px;
95
+ --gog-control-checkbox-box-size-sm: 18px;
96
+ --gog-control-checkbox-box-size-md: 24px;
97
+ --gog-control-checkbox-box-size-lg: 32px;
98
+ --gog-control-checkbox-box-size-slg: 40px;
99
+ --gog-control-checkbox-label-size-xsm: 0.6875rem;
100
+ --gog-control-checkbox-label-size-sm: 0.8125rem;
101
+ --gog-control-checkbox-label-size-md: 0.9375rem;
102
+ --gog-control-checkbox-label-size-lg: 1.0625rem;
103
+ --gog-control-checkbox-label-size-slg: 1.1875rem;
104
+ --gog-control-checkbox-icon-size-xsm: 10px;
105
+ --gog-control-checkbox-icon-size-sm: 12px;
106
+ --gog-control-checkbox-icon-size-md: 14px;
107
+ --gog-control-checkbox-icon-size-lg: 18px;
108
+ --gog-control-checkbox-icon-size-slg: 22px;
109
+
110
+ /* ── Button sizing ─────────────────────────────────────────────────────────── */
111
+ --gog-btn-xsm-padding: 0.25rem 0.5rem;
112
+ --gog-btn-sm-padding: 0.5rem 0.875rem;
113
+ --gog-btn-md-padding: 0.75rem 1.25rem;
114
+ --gog-btn-lg-padding: 1rem 1.5rem;
115
+ --gog-btn-slg-padding: 1.25rem 1.75rem;
116
+ --gog-btn-xsm-font-size: 0.75rem;
117
+ --gog-btn-sm-font-size: 0.875rem;
118
+ --gog-btn-md-font-size: 1rem;
119
+ --gog-btn-lg-font-size: 1.125rem;
120
+ --gog-btn-slg-font-size: 1.25rem;
121
+
122
+ /* ── Field sizing (input / select / multiselect share one scale) ───────────── */
123
+ --gog-field-xsm-padding-y: 4px;
124
+ --gog-field-xsm-padding-x: 8px;
125
+ --gog-field-xsm-icon-offset: 6px;
126
+ --gog-field-xsm-icon-inset: 24px;
127
+
128
+ --gog-field-sm-padding-y: 6px;
129
+ --gog-field-sm-padding-x: 10px;
130
+ --gog-field-sm-icon-offset: 8px;
131
+ --gog-field-sm-icon-inset: 30px;
132
+
133
+ --gog-field-md-icon-inset: 36px;
134
+
135
+ --gog-field-lg-padding-y: 14px;
136
+ --gog-field-lg-padding-x: 18px;
137
+ --gog-field-lg-icon-offset: 14px;
138
+ --gog-field-lg-icon-inset: 44px;
139
+
140
+ --gog-field-slg-padding-y: 18px;
141
+ --gog-field-slg-padding-x: 22px;
142
+ --gog-field-slg-font-size: 1.25rem;
143
+ --gog-field-slg-icon-offset: 18px;
144
+ --gog-field-slg-icon-inset: 52px;
145
+
146
+ /* ── Icon & spinner ───────────────────────────────────────────────────────── */
147
+ --gog-icon-size: 1.2em;
148
+ --gog-icon-stroke-width: 2;
149
+ --gog-spinner-size-xsm: 12px;
150
+ --gog-spinner-size-sm: 18px;
151
+ --gog-spinner-size-md: 48px;
152
+ --gog-spinner-size-lg: 96px;
153
+ --gog-spinner-size-slg: 144px;
154
+ --gog-spinner-rune-size: 20px;
155
+
156
+ /* ── Toast stack ──────────────────────────────────────────────────────────── */
157
+ --gog-toast-min-width: 280px;
158
+ --gog-toast-max-width: 400px;
159
+ --gog-toast-gap: 10px;
160
+ --gog-toast-stack-padding: 16px;
161
+ --gog-toast-z-index: 9999;
162
+ --gog-toast-enter-distance: 110%;
163
+ --gog-toast-shadow: 0 4px 24px rgba(0, 0, 0, 0.25);
164
+
165
+ /* ── Overlay stacking ───────────────────────────────────────────────────────
166
+ Baseline for dropdown panels. gog-dialog re-declares this on its own panel so
167
+ dropdowns opened inside a dialog stack above it. */
168
+ --gog-dropdown-z: 300;
169
+ --gog-spinner-overlay-z: 8000;
170
+
171
+ /* ── Light palette (also the no-data-theme default) ───────────────────────── */
172
+ color-scheme: light;
173
+ --gog-background-color: #f6f0e6;
174
+ --gog-surface-color: #eae0d0;
175
+ --gog-hover-color: #dfd3bf;
176
+ --gog-border-color: #c4b496;
177
+ --gog-text-color: #1e170e;
178
+ --gog-accent-text-color: #ece4d0;
179
+ --gog-muted-text-color: #6e5438;
180
+ --gog-primary-color: #1e170e;
181
+ --gog-accent-color: #8c6200;
182
+ --gog-accent-bright: #b8860b;
183
+ --gog-accent-dim: #634500;
184
+ --gog-accent-pale: #f4e8c1;
185
+ --gog-secondary-color: #a07800;
186
+ --gog-success-color: #2d6a4f;
187
+ --gog-danger-color: #9b2226;
188
+ --gog-warning-color: #bb3e03;
189
+ --gog-info-color: #4a6fa5;
190
+ --gog-panel-shadow: 0 12px 28px rgba(30, 23, 14, 0.08);
191
+ --gog-spinner-overlay-bg: rgba(246, 240, 230, 0.75);
192
+ }
193
+
194
+ :root[data-theme='light'],
195
+ [data-theme='light'] {
196
+ color-scheme: light;
197
+
198
+ /* Фоновые и поверхностные тона (Тёплый пергамент) */
199
+ --gog-background-color: #f6f0e6;
200
+ --gog-surface-color: #eae0d0;
201
+ --gog-hover-color: #dfd3bf;
202
+ --gog-border-color: #c4b496;
203
+
204
+ /* Типографика */
205
+ --gog-text-color: #1e170e; /* Глубокий тёмно-коричневый вместо чисто черного */
206
+ --gog-accent-text-color: #ece4d0;
207
+ --gog-muted-text-color: #6e5438; /* Мягкий коричневый */
208
+
209
+ /* Бренд и акценты (Благородное золото) */
210
+ --gog-primary-color: #1e170e;
211
+ --gog-accent-color: #8c6200; /* Более контрастный золотисто-бронзовый */
212
+ --gog-accent-bright: #b8860b;
213
+ --gog-accent-dim: #634500;
214
+ --gog-accent-pale: #f4e8c1;
215
+ --gog-secondary-color: #a07800;
216
+
217
+ /* Гармонизированная семантика (Подходит под warm-стиль) */
218
+ --gog-success-color: #2d6a4f; /* Изумрудно-зеленый */
219
+ --gog-danger-color: #9b2226; /* Рубиновый */
220
+ --gog-warning-color: #bb3e03; /* Тёмно-янтарный */
221
+ --gog-info-color: #4a6fa5; /* Приглушенный стальной синий */
222
+
223
+ --gog-panel-shadow: 0 12px 28px rgba(30, 23, 14, 0.08);
224
+ --gog-spinner-overlay-bg: rgba(246, 240, 230, 0.75);
225
+ }
226
+
227
+ :root[data-theme='dark'],
228
+ [data-theme='dark'] {
229
+ color-scheme: dark;
230
+
231
+ /* Фоновые и поверхностные тона (Тёмная обсидиановая кузница) */
232
+ --gog-background-color: #0f0d0a;
233
+ --gog-surface-color: #191510;
234
+ --gog-hover-color: #262018;
235
+ --gog-border-color: #382e22;
236
+
237
+ /* Типографика (Комфортная для чтения) */
238
+ --gog-text-color: #e5dec9; /* Мягкий крем/слоновая кость (глаза не устают) */
239
+ --gog-accent-text-color: #e5dec9;
240
+ --gog-muted-text-color: #9e8c72; /* Приглушенное пергаментное золото */
241
+
242
+ /* Бренд и акценты (Светящееся золото) */
243
+ --gog-primary-color: #e5dec9;
244
+ --gog-accent-color: #f3be3a; /* Яркий золотой акцент */
245
+ --gog-accent-bright: #ffd05b;
246
+ --gog-accent-dim: #b5881a;
247
+ --gog-accent-pale: #3d2f0e;
248
+ --gog-secondary-color: #d4a373;
249
+
250
+ /* Гармонизированная семантика для тёмной темы */
251
+ --gog-success-color: #52b788;
252
+ --gog-danger-color: #e63946;
253
+ --gog-warning-color: #f4a261;
254
+ --gog-info-color: #64dfdf;
255
+
256
+ --gog-panel-shadow: 0 14px 34px rgba(0, 0, 0, 0.5);
257
+ --gog-spinner-overlay-bg: rgba(15, 13, 10, 0.75);
258
+ }
259
+
260
+ /*
261
+ * ── Derived layer ───────────────────────────────────────────────────────────────
262
+ * Re-declared on every theme scope so each one re-derives from its own palette and
263
+ * metrics. Everything here reads another token; nothing here is a bare literal.
264
+ */
265
+ :root,
266
+ [data-theme] {
267
+ /* ── Derived foundation tokens ───────────────────────────────────────────────
268
+ Split out of the literal block above because they read other tokens: they have
269
+ to re-resolve inside each theme scope. */
270
+ --gog-panel-radius: calc(var(--gog-radius) + 8px);
271
+ --gog-field-xsm-font-size: var(--gog-text-xs);
272
+ --gog-field-sm-font-size: var(--gog-text-sm);
273
+ --gog-field-md-padding-y: var(--gog-control-padding-y);
274
+ --gog-field-md-padding-x: var(--gog-control-padding-x);
275
+ --gog-field-md-font-size: var(--gog-text-md);
276
+ --gog-field-md-icon-offset: var(--gog-control-icon-offset);
277
+ --gog-field-lg-font-size: var(--gog-text-lg);
278
+
279
+ /* ══════════════════════════════════════════════════════════════════════════════
280
+ COMPONENT TOKENS
281
+ Everything below is what an individual component paints with. Override a block
282
+ to restyle just that component; the values themselves all derive from the
283
+ foundation tokens above, so a palette swap carries through for free.
284
+ ══════════════════════════════════════════════════════════════════════════════ */
285
+
286
+ /* ── Accordion ─────────────────────────────────────────────────────────────── */
287
+ --gog-accordion-font-family: var(--gog-font-heading);
288
+ --gog-accordion-body-font-family: var(--gog-font-body);
289
+ --gog-accordion-border-color: var(--gog-accent-dim);
290
+ --gog-accordion-border-width: var(--gog-control-border-width);
291
+ --gog-accordion-border-style: var(--gog-control-border-style);
292
+ --gog-accordion-text-color: var(--gog-text-color);
293
+ --gog-accordion-accent-color: var(--gog-accent-color);
294
+ --gog-accordion-hover-bg: color-mix(in srgb, var(--gog-accent-dim) 10%, transparent);
295
+ --gog-accordion-hover-ring: color-mix(in srgb, var(--gog-accent-color) 30%, transparent);
296
+ --gog-accordion-focus-ring-width: var(--gog-focus-ring-width);
297
+ --gog-accordion-body-color: var(--gog-text-color);
298
+ --gog-accordion-body-line-height: 1.6;
299
+ --gog-accordion-header-text-transform: uppercase;
300
+ --gog-accordion-header-gap: 12px;
301
+ --gog-accordion-disabled-opacity: 0.5;
302
+ --gog-accordion-transition-duration: var(--gog-duration-base);
303
+ --gog-accordion-body-transition-duration: var(--gog-duration-slow);
304
+ --gog-accordion-chevron-transition-duration: var(--gog-duration-slow);
305
+ --gog-accordion-body-lift: -2px;
306
+ /* Flat by default — corner rounding is a look, not a given; consumers who want it
307
+ opt in per-instance or theme-wide by overriding these two. */
308
+ --gog-accordion-radius: 0px;
309
+ --gog-accordion-body-radius: 0px;
310
+ --gog-accordion-header-bg: transparent;
311
+ /* A subtle black wash over whatever sits behind the accordion, so the body always
312
+ reads slightly darker than the header regardless of the surrounding surface color. */
313
+ --gog-accordion-body-bg: color-mix(in srgb, black 6%, transparent);
314
+ --gog-accordion-skeleton-start: var(--gog-accent-dim);
315
+ --gog-accordion-skeleton-mid: color-mix(in srgb, var(--gog-accent-dim) 50%, transparent);
316
+ --gog-accordion-skeleton-end: var(--gog-accent-dim);
317
+ --gog-accordion-skeleton-radius: 2px;
318
+ --gog-accordion-skeleton-height: 12px;
319
+ --gog-accordion-skeleton-width: 55%;
320
+ --gog-accordion-skeleton-duration: 1.4s;
321
+ /* Per-size metrics. `lg` is the default size. */
322
+ --gog-accordion-xsm-padding-y: 4px;
323
+ --gog-accordion-xsm-padding-x: 8px;
324
+ --gog-accordion-xsm-font-size: var(--gog-text-xs);
325
+ --gog-accordion-xsm-letter-spacing: 0.2px;
326
+ --gog-accordion-xsm-content-gap: 2px;
327
+ --gog-accordion-xsm-body-font-size: var(--gog-text-xs);
328
+ --gog-accordion-xsm-body-line-height: 1.5;
329
+ --gog-accordion-xsm-body-padding-top: 4px;
330
+ --gog-accordion-xsm-body-padding-bottom: 6px;
331
+ --gog-accordion-xsm-chevron-size: 11px;
332
+ --gog-accordion-xsm-chevron-font-size: 10px;
333
+
334
+ --gog-accordion-sm-padding-y: 6px;
335
+ --gog-accordion-sm-padding-x: 10px;
336
+ --gog-accordion-sm-font-size: var(--gog-text-xs);
337
+ --gog-accordion-sm-letter-spacing: 0.4px;
338
+ --gog-accordion-sm-content-gap: 2px;
339
+ --gog-accordion-sm-body-font-size: var(--gog-text-xs);
340
+ --gog-accordion-sm-body-line-height: var(--gog-accordion-body-line-height);
341
+ --gog-accordion-sm-body-padding-top: 6px;
342
+ --gog-accordion-sm-body-padding-bottom: 8px;
343
+ --gog-accordion-sm-chevron-size: 13px;
344
+ --gog-accordion-sm-chevron-font-size: 12px;
345
+
346
+ --gog-accordion-md-padding-y: 10px;
347
+ --gog-accordion-md-padding-x: 14px;
348
+ --gog-accordion-md-font-size: var(--gog-text-xs);
349
+ --gog-accordion-md-letter-spacing: 0.8px;
350
+ --gog-accordion-md-content-gap: 2px;
351
+ --gog-accordion-md-body-font-size: var(--gog-text-sm);
352
+ --gog-accordion-md-body-line-height: var(--gog-accordion-body-line-height);
353
+ --gog-accordion-md-body-padding-top: 8px;
354
+ --gog-accordion-md-body-padding-bottom: 12px;
355
+ --gog-accordion-md-chevron-size: 15px;
356
+ --gog-accordion-md-chevron-font-size: 14px;
357
+
358
+ --gog-accordion-lg-padding-y: 14px;
359
+ --gog-accordion-lg-padding-x: 16px;
360
+ --gog-accordion-lg-font-size: var(--gog-text-sm);
361
+ --gog-accordion-lg-letter-spacing: 0.8px;
362
+ --gog-accordion-lg-content-gap: 4px;
363
+ --gog-accordion-lg-body-font-size: var(--gog-text-md);
364
+ --gog-accordion-lg-body-line-height: var(--gog-accordion-body-line-height);
365
+ --gog-accordion-lg-body-padding-top: 12px;
366
+ --gog-accordion-lg-body-padding-bottom: 16px;
367
+ --gog-accordion-lg-chevron-size: 18px;
368
+ --gog-accordion-lg-chevron-font-size: 16px;
369
+
370
+ --gog-accordion-slg-padding-y: 18px;
371
+ --gog-accordion-slg-padding-x: 18px;
372
+ --gog-accordion-slg-font-size: var(--gog-text-md);
373
+ --gog-accordion-slg-letter-spacing: 0.8px;
374
+ --gog-accordion-slg-content-gap: 4px;
375
+ --gog-accordion-slg-body-font-size: var(--gog-text-lg);
376
+ --gog-accordion-slg-body-line-height: var(--gog-accordion-body-line-height);
377
+ --gog-accordion-slg-body-padding-top: 16px;
378
+ --gog-accordion-slg-body-padding-bottom: 20px;
379
+ --gog-accordion-slg-chevron-size: 20px;
380
+ --gog-accordion-slg-chevron-font-size: 18px;
381
+
382
+ /* ── Button ────────────────────────────────────────────────────────────────
383
+ `--gog-btn-bg`, `--gog-btn-color`, `--gog-btn-border`, `--gog-btn-shadow`,
384
+ `--gog-btn-hover-bg`, `--gog-btn-hover-shadow`, `--gog-btn-padding` and
385
+ `--gog-btn-font-size` are intentionally NOT declared — they are the per-instance
386
+ escape hatch the variant/size classes fall back through. */
387
+ --gog-btn-font-family: var(--gog-font-heading);
388
+ --gog-btn-font-weight: 900;
389
+ --gog-btn-letter-spacing: 1px;
390
+ --gog-btn-text-transform: uppercase;
391
+ --gog-btn-line-height: 1;
392
+ --gog-btn-gap: var(--gog-space-sm);
393
+ --gog-btn-radius: var(--gog-radius);
394
+ --gog-btn-border-width: var(--gog-control-border-width);
395
+ --gog-btn-border-style: var(--gog-control-border-style);
396
+ --gog-btn-transition-duration: var(--gog-duration-base);
397
+ --gog-btn-focus-ring-width: var(--gog-focus-ring-width);
398
+ --gog-btn-focus-ring-offset: 3px;
399
+ --gog-btn-active-scale: 0.97;
400
+ --gog-btn-disabled-opacity: var(--gog-disabled-opacity);
401
+ --gog-btn-loading-opacity: 0.7;
402
+ --gog-btn-spinner-max-size: 70%;
403
+
404
+ --gog-btn-primary-bg: var(--gog-accent-color);
405
+ --gog-btn-primary-color: var(--gog-accent-text-color, var(--gog-primary-color));
406
+ --gog-btn-primary-border: transparent;
407
+ --gog-btn-primary-shadow: none;
408
+ --gog-btn-primary-hover-bg: var(--gog-accent-bright);
409
+ --gog-btn-primary-hover-color: var(--gog-btn-primary-color);
410
+ --gog-btn-primary-hover-shadow: 0 0 16px
411
+ color-mix(in srgb, var(--gog-accent-bright) 45%, transparent);
412
+ --gog-btn-primary-spinner-color: var(--gog-text-color);
413
+
414
+ --gog-btn-secondary-bg: var(--gog-secondary-color);
415
+ --gog-btn-secondary-color: var(--gog-accent-text-color, var(--gog-primary-color));
416
+ --gog-btn-secondary-border: transparent;
417
+ --gog-btn-secondary-shadow: none;
418
+ --gog-btn-secondary-hover-bg: var(--gog-accent-color);
419
+ --gog-btn-secondary-hover-color: var(--gog-btn-secondary-color);
420
+ --gog-btn-secondary-hover-shadow: none;
421
+ --gog-btn-secondary-spinner-color: var(--gog-text-color);
422
+
423
+ --gog-btn-outline-bg: transparent;
424
+ --gog-btn-outline-color: var(--gog-accent-color);
425
+ --gog-btn-outline-border: var(--gog-accent-color);
426
+ --gog-btn-outline-shadow: none;
427
+ --gog-btn-outline-hover-bg: var(--gog-accent-color);
428
+ --gog-btn-outline-hover-color: var(--gog-primary-color);
429
+ --gog-btn-outline-hover-shadow: none;
430
+ --gog-btn-outline-spinner-color: var(--gog-accent-color);
431
+
432
+ --gog-btn-ghost-bg: transparent;
433
+ --gog-btn-ghost-color: var(--gog-accent-color);
434
+ --gog-btn-ghost-border: transparent;
435
+ --gog-btn-ghost-shadow: none;
436
+ --gog-btn-ghost-hover-bg: color-mix(in srgb, var(--gog-accent-color) 12%, transparent);
437
+ --gog-btn-ghost-hover-color: var(--gog-btn-ghost-color);
438
+ --gog-btn-ghost-hover-shadow: none;
439
+ --gog-btn-ghost-spinner-color: var(--gog-accent-color);
440
+
441
+ /* ── Checkbox ──────────────────────────────────────────────────────────────
442
+ Box/label/icon size and padding come from the `--gog-control-checkbox-*` scale;
443
+ checkbox.component.ts maps the `size` input onto the host. */
444
+ --gog-checkbox-font-family: var(--gog-font-body);
445
+ --gog-checkbox-gap: 10px;
446
+ --gog-checkbox-radius: var(--gog-radius);
447
+ --gog-checkbox-border-width: var(--gog-control-border-width);
448
+ --gog-checkbox-border-style: var(--gog-control-border-style);
449
+ --gog-checkbox-border-color: var(--gog-accent-dim);
450
+ --gog-checkbox-bg: var(--gog-surface-color);
451
+ --gog-checkbox-checked-bg: var(--gog-accent-color);
452
+ --gog-checkbox-checked-border: var(--gog-accent-color);
453
+ --gog-checkbox-icon-color: var(--gog-accent-text-color, var(--gog-primary-color));
454
+ --gog-checkbox-label-color: var(--gog-muted-text-color);
455
+ --gog-checkbox-label-line-height: 1.3;
456
+ --gog-checkbox-focus-ring: color-mix(in srgb, var(--gog-accent-color) 25%, transparent);
457
+ --gog-checkbox-focus-ring-width: var(--gog-focus-ring-width);
458
+ --gog-checkbox-focus-ring-offset: var(--gog-focus-ring-offset);
459
+ --gog-checkbox-disabled-opacity: var(--gog-disabled-opacity);
460
+ --gog-checkbox-transition-duration: var(--gog-duration-base);
461
+ --gog-checkbox-dash-width-ratio: 0.45;
462
+ --gog-checkbox-dash-height: 2px;
463
+ --gog-checkbox-dash-radius: 999px;
464
+
465
+ /* ── Chip ──────────────────────────────────────────────────────────────────
466
+ `--gog-chip-*` size tokens below are the per-size scale; the unsuffixed
467
+ `--gog-chip-font-size`/`-padding-*`/`-gap`/`-avatar-size`/`-icon-size`/
468
+ `-remove-size` are left undeclared as the per-instance escape hatch. */
469
+ --gog-chip-font-family: inherit;
470
+ --gog-chip-bg: color-mix(in srgb, var(--gog-surface-color) 88%, var(--gog-hover-color));
471
+ --gog-chip-hover-bg: color-mix(in srgb, var(--gog-hover-color) 45%, var(--gog-surface-color));
472
+ --gog-chip-border: var(--gog-border-color);
473
+ --gog-chip-border-width: 1px;
474
+ --gog-chip-border-style: solid;
475
+ --gog-chip-color: var(--gog-text-color);
476
+ --gog-chip-font-weight: 500;
477
+ --gog-chip-line-height: 1.2;
478
+ --gog-chip-radius: max(var(--gog-radius), 2px);
479
+ --gog-chip-pill-radius: 9999px;
480
+ --gog-chip-remove-color: var(--gog-muted-text-color);
481
+ --gog-chip-remove-hover-color: var(--gog-text-color);
482
+ --gog-chip-remove-scale: 1.1;
483
+ --gog-chip-avatar-inset-ratio: 0.9;
484
+ --gog-chip-remove-inset-ratio: 0.85;
485
+ --gog-chip-disabled-opacity: 0.55;
486
+ --gog-chip-focus-ring-width: 2px;
487
+ --gog-chip-focus-ring-offset: var(--gog-focus-ring-offset);
488
+
489
+ --gog-chip-xsm-font-size: 0.6875rem;
490
+ --gog-chip-xsm-padding-block: 0.225rem;
491
+ --gog-chip-xsm-padding-inline: 0.375rem;
492
+ --gog-chip-xsm-gap: 0.275rem;
493
+ --gog-chip-xsm-avatar-size: 0.875rem;
494
+ --gog-chip-xsm-icon-size: 0.6875rem;
495
+ --gog-chip-xsm-remove-size: 0.75rem;
496
+
497
+ --gog-chip-sm-font-size: 0.75rem;
498
+ --gog-chip-sm-padding-block: 0.3rem;
499
+ --gog-chip-sm-padding-inline: 0.5rem;
500
+ --gog-chip-sm-gap: 0.375rem;
501
+ --gog-chip-sm-avatar-size: 1rem;
502
+ --gog-chip-sm-icon-size: 0.75rem;
503
+ --gog-chip-sm-remove-size: 0.875rem;
504
+
505
+ --gog-chip-md-font-size: 0.875rem;
506
+ --gog-chip-md-padding-block: 0.45rem;
507
+ --gog-chip-md-padding-inline: 0.75rem;
508
+ --gog-chip-md-gap: 0.5rem;
509
+ --gog-chip-md-avatar-size: 1.25rem;
510
+ --gog-chip-md-icon-size: 0.875rem;
511
+ --gog-chip-md-remove-size: 1rem;
512
+
513
+ --gog-chip-lg-font-size: 1rem;
514
+ --gog-chip-lg-padding-block: 0.6rem;
515
+ --gog-chip-lg-padding-inline: 0.875rem;
516
+ --gog-chip-lg-gap: 0.625rem;
517
+ --gog-chip-lg-avatar-size: 1.5rem;
518
+ --gog-chip-lg-icon-size: 1rem;
519
+ --gog-chip-lg-remove-size: 1.125rem;
520
+
521
+ --gog-chip-slg-font-size: 1.125rem;
522
+ --gog-chip-slg-padding-block: 0.75rem;
523
+ --gog-chip-slg-padding-inline: 1rem;
524
+ --gog-chip-slg-gap: 0.75rem;
525
+ --gog-chip-slg-avatar-size: 1.75rem;
526
+ --gog-chip-slg-icon-size: 1.125rem;
527
+ --gog-chip-slg-remove-size: 1.25rem;
528
+
529
+ /* ── Dialog ────────────────────────────────────────────────────────────────── */
530
+ --gog-dialog-font-family: var(--gog-font-heading);
531
+ /* Deliberately a flat value rather than a palette derivation: the scrim has to read
532
+ the same over any page content. Restate it per theme if a lighter wash suits. */
533
+ --gog-dialog-backdrop-bg: rgba(10, 8, 3, 0.72);
534
+ --gog-dialog-backdrop-blur: 2px;
535
+ --gog-dialog-backdrop-padding: var(--gog-space-lg);
536
+ --gog-dialog-backdrop-fade-duration: var(--gog-duration-base);
537
+ --gog-dialog-enter-duration: var(--gog-duration-slow);
538
+ --gog-dialog-enter-distance: -12px;
539
+ --gog-dialog-bg: var(--gog-surface-color);
540
+ --gog-dialog-color: var(--gog-text-color);
541
+ --gog-dialog-border: var(--gog-border-color);
542
+ --gog-dialog-border-width: var(--gog-panel-border-width);
543
+ --gog-dialog-border-style: var(--gog-panel-border-style);
544
+ --gog-dialog-radius: var(--gog-radius);
545
+ --gog-dialog-shadow: 0 24px 48px rgba(0, 0, 0, 0.5);
546
+ --gog-dialog-min-width: 320px;
547
+ --gog-dialog-max-height: 90vh;
548
+ --gog-dialog-header-padding: 16px 20px 14px;
549
+ --gog-dialog-header-gap: 12px;
550
+ --gog-dialog-header-border-color: var(--gog-border-color);
551
+ --gog-dialog-body-padding: 20px;
552
+ --gog-dialog-body-max-height: calc(var(--gog-dialog-max-height) - 60px);
553
+ --gog-dialog-close-size: 2rem;
554
+ --gog-dialog-close-font-size: 0.875rem;
555
+ --gog-dialog-close-color: var(--gog-muted-text-color);
556
+ --gog-dialog-close-hover-color: var(--gog-text-color);
557
+ --gog-dialog-close-hover-bg: color-mix(in srgb, var(--gog-hover-color) 70%, transparent);
558
+ --gog-dialog-close-hover-border: var(--gog-border-color);
559
+ --gog-dialog-close-focus-ring: var(--gog-accent-color);
560
+ --gog-dialog-close-focus-ring-width: var(--gog-focus-ring-width);
561
+ --gog-dialog-close-focus-ring-offset: var(--gog-focus-ring-offset);
562
+
563
+ /* Confirmation dialog */
564
+ --gog-confirm-gap: 12px;
565
+ --gog-confirm-min-width: 320px;
566
+ --gog-confirm-max-width: 440px;
567
+ --gog-confirm-color: var(--gog-text-color);
568
+ --gog-confirm-description-color: var(--gog-muted-text-color);
569
+ --gog-confirm-actions-gap: var(--gog-space-sm);
570
+ --gog-confirm-actions-offset: var(--gog-space-sm);
571
+
572
+ /* ── Icon ──────────────────────────────────────────────────────────────────── */
573
+ --gog-icon-fallback-size: 1em;
574
+
575
+ /* ── Input field ───────────────────────────────────────────────────────────── */
576
+ --gog-input-font-family: var(--gog-font-body);
577
+ --gog-input-label-font-family: var(--gog-font-heading);
578
+ --gog-input-gap: 4px;
579
+ --gog-input-label-color: var(--gog-accent-color);
580
+ --gog-input-label-font-size: var(--gog-text-sm);
581
+ --gog-input-label-letter-spacing: 1px;
582
+ --gog-input-label-text-transform: uppercase;
583
+ --gog-input-field-bg: var(--gog-surface-color);
584
+ --gog-input-field-border: var(--gog-accent-dim);
585
+ --gog-input-field-border-width: var(--gog-control-border-width);
586
+ --gog-input-field-border-style: var(--gog-control-border-style);
587
+ --gog-input-radius: var(--gog-radius);
588
+ --gog-input-field-color: var(--gog-text-color);
589
+ --gog-input-placeholder-color: var(--gog-muted-text-color);
590
+ --gog-input-focus-border: var(--gog-accent-color);
591
+ --gog-input-focus-ring: color-mix(in srgb, var(--gog-accent-color) 25%, transparent);
592
+ --gog-input-focus-glow: 0 0 8px var(--gog-input-focus-ring);
593
+ --gog-input-focus-ring-width: var(--gog-focus-ring-width);
594
+ --gog-input-focus-ring-offset: var(--gog-focus-ring-offset);
595
+ --gog-input-error-color: var(--gog-danger-color);
596
+ --gog-input-error-font-size: var(--gog-text-xs);
597
+ --gog-input-error-offset: 2px;
598
+ --gog-input-icon-color: var(--gog-muted-text-color);
599
+ --gog-input-icon-hover-color: var(--gog-accent-color);
600
+ --gog-input-icon-action-radius: 4px;
601
+ --gog-input-icon-focus-ring-width: 2px;
602
+ --gog-input-disabled-opacity: var(--gog-disabled-opacity);
603
+ --gog-input-transition-duration: var(--gog-duration-base);
604
+
605
+ /* ── Multiselect ───────────────────────────────────────────────────────────── */
606
+ --gog-ms-font-family: var(--gog-font-body);
607
+ --gog-ms-label-font-family: var(--gog-font-heading);
608
+ --gog-ms-gap: 4px;
609
+ --gog-ms-option-gap: 4px;
610
+ --gog-ms-options-padding: 4px;
611
+ --gog-ms-label-color: var(--gog-accent-color);
612
+ --gog-ms-label-font-size: var(--gog-text-sm);
613
+ --gog-ms-label-letter-spacing: 1px;
614
+ --gog-ms-label-text-transform: uppercase;
615
+ --gog-ms-field-bg: var(--gog-surface-color);
616
+ --gog-ms-field-border: var(--gog-accent-dim);
617
+ --gog-ms-field-border-width: var(--gog-control-border-width);
618
+ --gog-ms-field-border-style: var(--gog-control-border-style);
619
+ --gog-ms-radius: var(--gog-radius);
620
+ --gog-ms-field-color: var(--gog-text-color);
621
+ --gog-ms-value-color: var(--gog-text-color);
622
+ --gog-ms-placeholder-color: var(--gog-muted-text-color);
623
+ --gog-ms-focus-border: var(--gog-accent-color);
624
+ --gog-ms-focus-ring: color-mix(in srgb, var(--gog-accent-color) 25%, transparent);
625
+ --gog-ms-focus-glow: 0 0 8px var(--gog-ms-focus-ring);
626
+ --gog-ms-focus-ring-width: var(--gog-focus-ring-width);
627
+ --gog-ms-focus-ring-offset: var(--gog-focus-ring-offset);
628
+ --gog-ms-error-color: var(--gog-danger-color);
629
+ --gog-ms-error-font-size: var(--gog-text-xs);
630
+ --gog-ms-error-offset: 2px;
631
+ --gog-ms-border-color: var(--gog-accent-color);
632
+ --gog-ms-panel-bg: var(--gog-surface-color);
633
+ --gog-ms-panel-border: var(--gog-accent-color);
634
+ --gog-ms-panel-shadow: var(--gog-panel-shadow);
635
+ --gog-ms-panel-max-height: 260px;
636
+ --gog-ms-panel-offset: 2px;
637
+ --gog-ms-option-hover-bg: color-mix(in srgb, var(--gog-accent-color) 10%, transparent);
638
+ --gog-ms-option-color: var(--gog-text-color);
639
+ --gog-ms-option-gap-inline: 10px;
640
+ /* Estimated row height fed into the panel's up/down placement math; not itself a real
641
+ layout property, so it has no effect unless the JS reads it. */
642
+ --gog-ms-option-height: 40px;
643
+ --gog-ms-option-radius: calc(var(--gog-radius) - 2px);
644
+ --gog-ms-option-disabled-opacity: 0.5;
645
+ --gog-ms-option-transition-duration: var(--gog-duration-fast);
646
+ --gog-ms-checkbox-border: var(--gog-accent-dim);
647
+ --gog-ms-checkbox-bg: var(--gog-background-color);
648
+ --gog-ms-checkbox-checked-bg: var(--gog-accent-color);
649
+ --gog-ms-checkbox-checked-color: var(--gog-primary-color);
650
+ --gog-ms-controls-gap: 4px;
651
+ --gog-ms-controls-padding: 6px 10px;
652
+ --gog-ms-actions-gap: 6px;
653
+ --gog-ms-clear-radius: 2px;
654
+ --gog-ms-disabled-opacity: var(--gog-disabled-opacity);
655
+ --gog-ms-transition-duration: var(--gog-duration-base);
656
+ --gog-ms-arrow-transition-duration: var(--gog-duration-slow);
657
+ /* Icon geometry, expressed as a ratio of the control's font size. */
658
+ --gog-ms-clear-icon-ratio: 0.7;
659
+ --gog-ms-arrow-icon-ratio: 0.875;
660
+ --gog-ms-mark-size-ratio: 1.2375;
661
+ --gog-ms-mark-icon-ratio: 1.125;
662
+
663
+ /* ── Paginator ─────────────────────────────────────────────────────────────── */
664
+ --gog-paginator-gap: 4px;
665
+ --gog-paginator-ellipsis-color: var(--gog-muted-text-color);
666
+ --gog-paginator-ellipsis-font-size: var(--gog-text-sm);
667
+ --gog-paginator-ellipsis-font-family: var(--gog-font-body);
668
+ --gog-paginator-ellipsis-min-width: 32px;
669
+
670
+ /* ── Select ────────────────────────────────────────────────────────────────── */
671
+ --gog-select-font-family: var(--gog-font-body);
672
+ --gog-select-label-font-family: var(--gog-font-heading);
673
+ --gog-select-gap: 4px;
674
+ --gog-select-label-color: var(--gog-accent-color);
675
+ --gog-select-label-font-size: var(--gog-text-sm);
676
+ --gog-select-label-letter-spacing: 1px;
677
+ --gog-select-label-text-transform: uppercase;
678
+ --gog-select-field-bg: var(--gog-surface-color);
679
+ --gog-select-field-border: var(--gog-accent-dim);
680
+ --gog-select-field-border-width: var(--gog-control-border-width);
681
+ --gog-select-field-border-style: var(--gog-control-border-style);
682
+ --gog-select-radius: var(--gog-radius);
683
+ --gog-select-field-color: var(--gog-text-color);
684
+ --gog-select-placeholder-color: var(--gog-muted-text-color);
685
+ --gog-select-focus-border: var(--gog-accent-color);
686
+ --gog-select-focus-ring: color-mix(in srgb, var(--gog-accent-color) 25%, transparent);
687
+ --gog-select-focus-glow: 0 0 8px var(--gog-select-focus-ring);
688
+ --gog-select-focus-ring-width: var(--gog-focus-ring-width);
689
+ --gog-select-focus-ring-offset: var(--gog-focus-ring-offset);
690
+ --gog-select-error-color: var(--gog-danger-color);
691
+ --gog-select-error-font-size: var(--gog-text-xs);
692
+ --gog-select-chevron-color: var(--gog-accent-color);
693
+ --gog-select-chevron-inset: 40px;
694
+ --gog-select-control-gap: 12px;
695
+ --gog-select-panel-bg: var(--gog-surface-color);
696
+ --gog-select-panel-shadow: var(--gog-panel-shadow);
697
+ --gog-select-panel-max-height: 260px;
698
+ --gog-select-panel-offset: 2px;
699
+ --gog-select-option-hover-bg: color-mix(in srgb, var(--gog-accent-color) 10%, transparent);
700
+ --gog-select-option-selected-color: var(--gog-accent-color);
701
+ --gog-select-option-color: var(--gog-text-color);
702
+ --gog-select-option-gap: 10px;
703
+ /* Estimated row height fed into the panel's up/down placement math; not itself a real
704
+ layout property, so it has no effect unless the JS reads it. */
705
+ --gog-select-option-height: 40px;
706
+ --gog-select-option-disabled-opacity: 0.5;
707
+ --gog-select-option-transition-duration: var(--gog-duration-fast);
708
+ /* Icon geometry, expressed as a ratio of the control's font size. */
709
+ --gog-select-chevron-icon-ratio: 0.875;
710
+ --gog-select-mark-size-ratio: 1.125;
711
+ --gog-select-mark-icon-ratio: 0.875;
712
+ --gog-select-disabled-opacity: var(--gog-disabled-opacity);
713
+ --gog-select-transition-duration: var(--gog-duration-base);
714
+
715
+ /* ── Skeleton ─────────────────────────────────────────────────────────────── */
716
+ --gog-skeleton-base: color-mix(in srgb, var(--gog-border-color) 40%, var(--gog-surface-color));
717
+ --gog-skeleton-shine: color-mix(in srgb, var(--gog-skeleton-base), white 35%);
718
+ --gog-skeleton-radius: var(--gog-radius);
719
+ --gog-skeleton-square-radius: 0px;
720
+ --gog-skeleton-line-radius: calc(var(--gog-skeleton-radius) / 2);
721
+ --gog-skeleton-line-gap: var(--gog-space-sm);
722
+ --gog-skeleton-short-line-width: 60%;
723
+ --gog-skeleton-pulse-duration: 1.6s;
724
+ --gog-skeleton-pulse-min-opacity: 0.5;
725
+ --gog-skeleton-wave-duration: 1.6s;
726
+ --gog-skeleton-line-height-xsm: 8px;
727
+ --gog-skeleton-line-height-sm: 10px;
728
+ --gog-skeleton-line-height-md: 14px;
729
+ --gog-skeleton-line-height-lg: 18px;
730
+ --gog-skeleton-line-height-slg: 24px;
731
+ --gog-skeleton-circle-size-xsm: 24px;
732
+ --gog-skeleton-circle-size-sm: 32px;
733
+ --gog-skeleton-circle-size-md: 48px;
734
+ --gog-skeleton-circle-size-lg: 64px;
735
+ --gog-skeleton-circle-size-slg: 96px;
736
+ --gog-skeleton-rect-height-xsm: 40px;
737
+ --gog-skeleton-rect-height-sm: 64px;
738
+ --gog-skeleton-rect-height-md: 120px;
739
+ --gog-skeleton-rect-height-lg: 200px;
740
+ --gog-skeleton-rect-height-slg: 320px;
741
+
742
+ /* ── Slider ───────────────────────────────────────────────────────────────── */
743
+ --gog-slider-label-font-family: var(--gog-font-heading);
744
+ --gog-slider-value-font-family: var(--gog-font-mono);
745
+ --gog-slider-error-font-family: var(--gog-font-body);
746
+ --gog-slider-gap: 6px;
747
+ --gog-slider-label-color: var(--gog-accent-color);
748
+ --gog-slider-label-font-size: var(--gog-text-sm);
749
+ --gog-slider-label-letter-spacing: 1px;
750
+ --gog-slider-label-text-transform: uppercase;
751
+ --gog-slider-value-color: var(--gog-accent-color);
752
+ --gog-slider-value-font-size: var(--gog-text-sm);
753
+ --gog-slider-value-min-width: 40px;
754
+ --gog-slider-track-height: 4px;
755
+ --gog-slider-track-area-height: 20px;
756
+ --gog-slider-track-radius: 0px;
757
+ --gog-slider-track-bg: var(--gog-accent-dim);
758
+ --gog-slider-fill-bg: var(--gog-accent-color);
759
+ --gog-slider-thumb-size: 16px;
760
+ --gog-slider-thumb-bg: var(--gog-accent-color);
761
+ --gog-slider-thumb-border: var(--gog-background-color);
762
+ --gog-slider-thumb-border-width: 2px;
763
+ --gog-slider-thumb-radius: 50%;
764
+ --gog-slider-thumb-shadow: color-mix(in srgb, var(--gog-accent-bright) 40%, transparent);
765
+ --gog-slider-thumb-glow-size: 6px;
766
+ --gog-slider-focus-ring: color-mix(in srgb, var(--gog-accent-color) 30%, transparent);
767
+ --gog-slider-focus-ring-width: var(--gog-focus-ring-width);
768
+ --gog-slider-range-color: var(--gog-muted-text-color);
769
+ --gog-slider-range-font-size: var(--gog-text-xs);
770
+ --gog-slider-error-color: var(--gog-danger-color);
771
+ --gog-slider-error-font-size: var(--gog-text-xs);
772
+ --gog-slider-disabled-opacity: var(--gog-disabled-opacity);
773
+
774
+ /* ── Spinner ──────────────────────────────────────────────────────────────── */
775
+ --gog-spinner-rune-font-family: var(--gog-font-heading);
776
+ --gog-spinner-track-color: var(--gog-accent-dim);
777
+ --gog-spinner-arc-outer-color: var(--gog-accent-color);
778
+ --gog-spinner-arc-inner-color: var(--gog-accent-bright);
779
+ --gog-spinner-diamond-color: var(--gog-accent-bright);
780
+ --gog-spinner-rune-color: var(--gog-accent-bright);
781
+ --gog-spinner-glow-color: var(--gog-accent-color);
782
+ --gog-spinner-track-opacity: 0.35;
783
+ --gog-spinner-arc-inner-opacity: 0.75;
784
+ --gog-spinner-diamond-opacity: 0.85;
785
+ --gog-spinner-arc-outer-pulse-opacity: 0.8;
786
+ --gog-spinner-arc-inner-pulse-opacity: 0.45;
787
+ --gog-spinner-rune-pulse-opacity: 0.4;
788
+ --gog-spinner-arc-outer-dash: 100 63;
789
+ --gog-spinner-arc-inner-dash: 35 78;
790
+ --gog-spinner-arc-inner-stroke-compact: 1;
791
+ --gog-spinner-spin-duration: 1.4s;
792
+ --gog-spinner-spin-slow-duration: 2s;
793
+ --gog-spinner-ticks-duration: 6s;
794
+ --gog-spinner-pulse-duration: 2.8s;
795
+ --gog-spinner-ring-duration: 1s;
796
+ --gog-spinner-ring-padding: 16%;
797
+ --gog-spinner-arc-outer-glow: 5px;
798
+ --gog-spinner-arc-inner-glow: 4px;
799
+ --gog-spinner-diamond-glow: 3px;
800
+ --gog-spinner-rune-glow: 6px;
801
+ --gog-spinner-ring-glow: 5px;
802
+ --gog-spinner-overlay-blur: 3px;
803
+ --gog-spinner-overlay-fade-duration: var(--gog-duration-slow);
804
+
805
+ /* ── Table ────────────────────────────────────────────────────────────────── */
806
+ --gog-table-font-family: var(--gog-font-body);
807
+ --gog-table-header-font-family: var(--gog-font-heading);
808
+ --gog-table-numeric-font-family: var(--gog-font-mono);
809
+ --gog-table-gap: 12px;
810
+ --gog-table-border-color: var(--gog-accent-dim);
811
+ --gog-table-border-width: 2px;
812
+ --gog-table-border-style: solid;
813
+ --gog-table-row-border-width: 1px;
814
+ --gog-table-surface: var(--gog-surface-color);
815
+ --gog-table-text-color: var(--gog-text-color);
816
+ --gog-table-accent-color: var(--gog-accent-color);
817
+ --gog-table-accent-bright: var(--gog-accent-bright);
818
+ --gog-table-hover-bg: var(--gog-accent-pale);
819
+ --gog-table-muted-color: var(--gog-muted-text-color);
820
+ --gog-table-focus-ring: var(--gog-accent-color);
821
+ --gog-table-focus-ring-width: var(--gog-focus-ring-width);
822
+ --gog-table-header-letter-spacing: 1px;
823
+ --gog-table-header-text-transform: uppercase;
824
+ --gog-table-num-col-width: 48px;
825
+ --gog-table-th-inner-gap: 6px;
826
+ --gog-table-sort-icon-size: 0.9em;
827
+ --gog-table-sort-icon-width: 1.1em;
828
+ --gog-table-sort-icon-opacity: 0.6;
829
+ --gog-table-empty-padding: 24px 14px;
830
+ --gog-table-empty-font-size: var(--gog-text-md);
831
+ --gog-table-loading-padding: 32px 14px;
832
+ --gog-table-loading-opacity: 0.5;
833
+ --gog-table-row-transition-duration: var(--gog-duration-fast);
834
+ --gog-table-footer-gap: var(--gog-space-sm);
835
+ --gog-table-footer-min-height: 32px;
836
+ --gog-table-total-font-size: var(--gog-text-xs);
837
+ --gog-table-total-letter-spacing: 0.5px;
838
+ --gog-table-total-text-transform: uppercase;
839
+ --gog-table-num-font-size: var(--gog-text-xs);
840
+ --gog-table-padding-h: 14px;
841
+ --gog-table-xsm-padding-v: 2px;
842
+ --gog-table-xsm-th-font-size: var(--gog-text-xs);
843
+ --gog-table-xsm-td-font-size: var(--gog-text-xs);
844
+ --gog-table-sm-padding-v: 3px;
845
+ --gog-table-sm-th-font-size: var(--gog-text-xs);
846
+ --gog-table-sm-td-font-size: var(--gog-text-xs);
847
+ --gog-table-md-padding-v: 6px;
848
+ --gog-table-md-th-font-size: var(--gog-text-xs);
849
+ --gog-table-md-td-font-size: var(--gog-text-sm);
850
+ --gog-table-lg-padding-v: 10px;
851
+ --gog-table-lg-th-font-size: var(--gog-text-sm);
852
+ --gog-table-lg-td-font-size: var(--gog-text-md);
853
+ --gog-table-slg-padding-v: 14px;
854
+ --gog-table-slg-th-font-size: var(--gog-text-md);
855
+ --gog-table-slg-td-font-size: var(--gog-text-lg);
856
+
857
+ /* ── Tag ──────────────────────────────────────────────────────────────────
858
+ Like the button, the unsuffixed `--gog-tag-bg`/`-border`/`-color`/`-font-size`
859
+ and friends stay undeclared so variant and size classes can fall through them. */
860
+ --gog-tag-font-family: inherit;
861
+ --gog-tag-default-color: var(--gog-info-color, var(--gog-muted-text-color));
862
+ --gog-tag-success-color: var(--gog-success-color);
863
+ --gog-tag-danger-color: var(--gog-danger-color);
864
+ --gog-tag-warning-color: var(--gog-warning-color);
865
+ --gog-tag-info-color: var(--gog-info-color);
866
+ --gog-tag-bg-mix: 10%;
867
+ --gog-tag-color-mix: 82%;
868
+ --gog-tag-bg-base: var(--gog-surface-color);
869
+ --gog-tag-color-base: black;
870
+ --gog-tag-border-width: 1px;
871
+ --gog-tag-border-style: solid;
872
+ --gog-tag-inner-border-width: 1px;
873
+ --gog-tag-font-weight: 600;
874
+ --gog-tag-line-height: 1;
875
+ --gog-tag-radius: max(var(--gog-radius), 2px);
876
+ --gog-tag-pill-radius: 9999px;
877
+
878
+ --gog-tag-xsm-font-size: 0.6875rem;
879
+ --gog-tag-xsm-padding-block: 0.1875rem;
880
+ --gog-tag-xsm-padding-inline: 0.375rem;
881
+ --gog-tag-xsm-gap: 0.1875rem;
882
+ --gog-tag-xsm-icon-size: 0.6875rem;
883
+
884
+ --gog-tag-sm-font-size: 0.75rem;
885
+ --gog-tag-sm-padding-block: 0.25rem;
886
+ --gog-tag-sm-padding-inline: 0.5rem;
887
+ --gog-tag-sm-gap: 0.25rem;
888
+ --gog-tag-sm-icon-size: 0.75rem;
889
+
890
+ --gog-tag-md-font-size: 0.875rem;
891
+ --gog-tag-md-padding-block: 0.375rem;
892
+ --gog-tag-md-padding-inline: 0.75rem;
893
+ --gog-tag-md-gap: 0.375rem;
894
+ --gog-tag-md-icon-size: 0.875rem;
895
+
896
+ --gog-tag-lg-font-size: 1rem;
897
+ --gog-tag-lg-padding-block: 0.5rem;
898
+ --gog-tag-lg-padding-inline: 0.875rem;
899
+ --gog-tag-lg-gap: 0.5rem;
900
+ --gog-tag-lg-icon-size: 1rem;
901
+
902
+ --gog-tag-slg-font-size: 1.125rem;
903
+ --gog-tag-slg-padding-block: 0.625rem;
904
+ --gog-tag-slg-padding-inline: 1rem;
905
+ --gog-tag-slg-gap: 0.625rem;
906
+ --gog-tag-slg-icon-size: 1.125rem;
907
+
908
+ /* ── Toast ────────────────────────────────────────────────────────────────── */
909
+ --gog-toast-font-family: var(--gog-font-body);
910
+ --gog-toast-bg: var(--gog-surface-color);
911
+ --gog-toast-color: var(--gog-text-color);
912
+ --gog-toast-border: var(--gog-accent-color);
913
+ --gog-toast-icon-color: var(--gog-accent-color);
914
+ --gog-toast-success-color: var(--gog-success-color);
915
+ --gog-toast-error-color: var(--gog-danger-color);
916
+ --gog-toast-warning-color: var(--gog-accent-bright);
917
+ --gog-toast-info-color: var(--gog-accent-color);
918
+ --gog-toast-accent-width: 4px;
919
+ --gog-toast-padding: 12px 14px;
920
+ --gog-toast-radius: 0px;
921
+ --gog-toast-content-gap: 10px;
922
+ --gog-toast-main-gap: var(--gog-space-sm);
923
+ --gog-toast-actions-gap: 6px;
924
+ --gog-toast-message-font-size: var(--gog-text-sm);
925
+ --gog-toast-message-line-height: 1.5;
926
+ --gog-toast-icon-size: 1rem;
927
+ --gog-toast-icon-line-height: 1.4;
928
+ --gog-toast-action-padding: 0.25rem 0.5rem;
929
+ --gog-toast-action-font-size: 0.75rem;
930
+ --gog-toast-close-padding: 0.125rem 0.25rem;
931
+ --gog-toast-close-font-size: 0.75rem;
932
+ --gog-toast-progress-height: 3px;
933
+ --gog-toast-progress-opacity: 30%;
934
+ --gog-toast-transition-duration: 0.25s;
935
+ --gog-toast-base-z: 100;
936
+ /* Card-stack geometry */
937
+ --gog-toast-stack-peek: 14px;
938
+ --gog-toast-stack-scale-step: 0.06;
939
+ --gog-toast-stack-expanded-gap: 84px;
940
+ --gog-toast-stack-min-opacity: 0.4;
941
+ --gog-toast-stack-opacity-step: 0.18;
942
+ --gog-toast-stack-max-depth: 6;
943
+ }