@fractaldesign/fractalstyler 0.0.0-stage → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/LICENSE +19 -0
  2. package/README.md +123 -2
  3. package/cli/main.mjs +141 -0
  4. package/cli/scaffold.mjs +406 -0
  5. package/data/recipes.json +61 -0
  6. package/dist/asset.d.ts +3 -0
  7. package/dist/css/fractalstyler.css +2453 -0
  8. package/dist/css/fractalstyler.min.css +2 -0
  9. package/dist/index.d.ts +6 -0
  10. package/dist/index.js +6 -0
  11. package/dist/styles/_00_config.sass +29 -0
  12. package/dist/styles/_00_fonts.sass +58 -0
  13. package/dist/styles/_00_tokens.sass +211 -0
  14. package/dist/styles/_01_base.sass +58 -0
  15. package/dist/styles/_02_dimensions.sass +70 -0
  16. package/dist/styles/_03_typography.sass +170 -0
  17. package/dist/styles/_04_containers.sass +173 -0
  18. package/dist/styles/_05_layouts.sass +104 -0
  19. package/dist/styles/_06_shells.sass +135 -0
  20. package/dist/styles/_07_interactions.sass +212 -0
  21. package/dist/styles/_08_visuals.sass +136 -0
  22. package/dist/styles/_09_own.sass +174 -0
  23. package/dist/styles/colorpacks.sass +119 -0
  24. package/dist/styles/index.sass +14 -0
  25. package/dist/styles/themeplates.sass +159 -0
  26. package/docs/REGISTRY.api.md +477 -0
  27. package/docs/REGISTRY.md +14 -0
  28. package/docs/references/configurations-api.md +220 -0
  29. package/docs/references/configurations.md +258 -0
  30. package/lint/browser.mjs +79 -0
  31. package/lint/cli.mjs +212 -0
  32. package/lint/lib/agent-reporter.mjs +51 -0
  33. package/lint/lib/fuzzy.mjs +45 -0
  34. package/lint/lib/registry.mjs +107 -0
  35. package/lint/lib/sass-linter.mjs +71 -0
  36. package/lint/lib/svelte-linter.mjs +116 -0
  37. package/lint/lib/token-linter.mjs +97 -0
  38. package/package.json +112 -5
  39. package/registry.json +3999 -0
  40. package/scripts/class-vocab.js +197 -0
  41. package/scripts/update-registry.js +934 -0
  42. package/skills/fractal-styler/references/fractals.md +630 -0
  43. package/skills/fractal-styler/references/tokens.md +226 -0
  44. package/skills/fractalstyler/SKILL.md +59 -0
  45. package/skills/fractalstyler/references/fractals.md +630 -0
  46. package/skills/fractalstyler/references/tokens.md +226 -0
@@ -0,0 +1,2453 @@
1
+ /*!
2
+ * fractalstyler v0.9.0 — the compiled stylesheet.
3
+ *
4
+ * Generated from src/lib/styles/*.sass. Do not edit: your changes are
5
+ * overwritten on the next build. To change the system, edit the SASS and
6
+ * recompile, or override tokens in your own stylesheet after this one.
7
+ *
8
+ * MIT licensed. https://github.com/fractalmandala/fractalstyler
9
+ */
10
+ :root {
11
+ --shade-xs: var(--shadow-rim), 0 1px 1px rgb(var(--shadow-color) / 0.14), 0 0px 0px rgb(var(--shadow-color) / 0);
12
+ --shade-sm: var(--shadow-rim), 0 1px 2px rgb(var(--shadow-color) / 0.12), 0 1px 3px rgb(var(--shadow-color) / 0.02);
13
+ --shade-md: var(--shadow-rim), 0 2px 4px rgb(var(--shadow-color) / 0.09), 0 3px 6px rgb(var(--shadow-color) / 0.04);
14
+ --shade-bs: var(--shadow-rim), 0 2px 4px rgb(var(--shadow-color) / 0.06), 0 6px 14px rgb(var(--shadow-color) / 0.06);
15
+ --shade-lg: var(--shadow-rim), 0 4px 8px rgb(var(--shadow-color) / 0.04), 0 12px 24px rgb(var(--shadow-color) / 0.08);
16
+ --shade-xl: var(--shadow-rim), 0 6px 12px rgb(var(--shadow-color) / 0.03), 0 20px 36px rgb(var(--shadow-color) / 0.09);
17
+ --shade-2xl: var(--shadow-rim), 0 8px 16px rgb(var(--shadow-color) / 0.02), 0 28px 48px rgb(var(--shadow-color) / 0.09);
18
+ --shade-3xl: var(--shadow-rim), 0 12px 24px rgb(var(--shadow-color) / 0.02), 0 36px 64px rgb(var(--shadow-color) / 0.08);
19
+ }
20
+
21
+ @font-face {
22
+ font-family: "General Sans";
23
+ src: url("/fonts/generalsans.woff2") format("woff2");
24
+ font-weight: 300 700;
25
+ font-style: normal;
26
+ font-optical-sizing: auto;
27
+ }
28
+ @font-face {
29
+ font-family: "Satoshi";
30
+ src: url("/fonts/satoshi.woff2") format("woff2");
31
+ font-weight: 300 800;
32
+ font-style: normal;
33
+ font-optical-sizing: auto;
34
+ }
35
+ @font-face {
36
+ font-family: "Stack Sans";
37
+ src: url("/fonts/stacksans.woff2") format("woff2");
38
+ font-weight: 300 800;
39
+ font-style: normal;
40
+ font-optical-sizing: auto;
41
+ }
42
+ [data-mode=dark] {
43
+ color-scheme: dark;
44
+ --white-fixed: #FFFFFF;
45
+ --black-fixed: #171717;
46
+ --bg: #101010;
47
+ --bg-surface: #202021;
48
+ --bg-panel: #1f1f20;
49
+ --bg-sunken: #1f1f20;
50
+ --bg-raised: #3a3a3a;
51
+ --bg-extra: #111111;
52
+ --bg-input: #1c1c1d;
53
+ --bg-button: #171818;
54
+ --text-primary: #EDF2F7;
55
+ --text-secondary: #c7c7c7;
56
+ --text-muted: #7c7c7c;
57
+ --text-inverse: #7c7c7c;
58
+ --state-surface:#7c7c7c;
59
+ --state-hover: #4a4a4b;
60
+ --state-selected: #666668;
61
+ --border: #2f2f2f;
62
+ --border-subtle: #1e1e1f;
63
+ --border-strong: #7c7c7c;
64
+ --theme-color: #2F9E44;
65
+ --theme-color-alt: #36731d;
66
+ --success: #34D399;
67
+ --success-hover: #6EE7B7;
68
+ --warning: #FBBF24;
69
+ --warning-hover: #FCD34D;
70
+ --danger: #b21a1a;
71
+ --danger-hover: #FCA5A5;
72
+ --info: #60A5FA;
73
+ --info-hover: #93C5FD;
74
+ --ring: rgba(16, 185, 129, 0.4);
75
+ --shadow-color: 0 0 0;
76
+ --shadow-umbra: rgb(0 0 0 / 0.50);
77
+ --shadow-rim: inset 0 1px 0 rgba(255, 255, 255, 0.09);
78
+ --shadow-xs: 0 1px 2px rgb(var(--shadow-color) / 0.14);
79
+ --shadow-sm: 0 1px 2px rgb(var(--shadow-color) / 0.10), 0 2px 4px rgb(var(--shadow-color) / 0.06);
80
+ --shadow-md: 0 2px 4px rgb(var(--shadow-color) / 0.06), 0 8px 16px rgb(var(--shadow-color) / 0.06);
81
+ --shadow-bs: 0 2px 4px rgb(var(--shadow-color) / 0.06), 0 6px 14px rgb(var(--shadow-color) / 0.06);
82
+ --shadow-lg: 0 4px 8px rgb(var(--shadow-color) / 0.06), 0 12px 24px rgb(var(--shadow-color) / 0.06);
83
+ --shadow-xl: 0 8px 16px rgb(var(--shadow-color) / 0.06), 0 20px 36px rgb(var(--shadow-color) / 0.06);
84
+ --shadow-2xl: 0 12px 24px rgb(var(--shadow-color) / 0.06), 0 28px 48px rgb(var(--shadow-color) / 0.06);
85
+ --shadow-3xl: 0 16px 32px rgb(var(--shadow-color) / 0.06), 0 36px 64px rgb(var(--shadow-color) / 0.06);
86
+ }
87
+
88
+ [data-mode=light] {
89
+ color-scheme: light;
90
+ --white-fixed: #FFFFFF;
91
+ --black-fixed: #171717;
92
+ --bg: #ffffff;
93
+ --bg-surface: #FBFBF9;
94
+ --bg-panel: #FBFBF9;
95
+ --bg-sunken: #F7F6F0;
96
+ --bg-raised: #F4F4F5;
97
+ --bg-extra: rgb(247, 248, 249);
98
+ --bg-input: #f8f9fa;
99
+ --bg-button: #CED8D3;
100
+ --text-primary: #262627;
101
+ --text-secondary: #777777;
102
+ --text-muted: #a3a4a7;
103
+ --text-inverse: #ffffff;
104
+ --state-surface: #F2EFE9;
105
+ --state-hover: #ECE7DF;
106
+ --state-selected: #E4DFD5;
107
+ --border: #d8d8d8;
108
+ --border-subtle: #eceaea;
109
+ --border-strong: #cfcfcf;
110
+ --theme-color: #ff4400;
111
+ --theme-color-alt: #be2f00;
112
+ --theme-color-sub: #feb18a;
113
+ --success: #10B981;
114
+ --success-hover: #059669;
115
+ --warning: #F59E0B;
116
+ --warning-hover: #D97706;
117
+ --danger: #bf2a2a;
118
+ --danger-hover: #DC2626;
119
+ --info: #3B82F6;
120
+ --info-hover: #2563EB;
121
+ --ring: rgba(0, 127, 78, 0.35);
122
+ --shadow-color: 15 13 42;
123
+ --shadow-rim: transparent;
124
+ --shadow-xs: 0 1px 2px rgb(var(--shadow-color) / 0.14);
125
+ --shadow-sm: 0 1px 2px rgb(var(--shadow-color) / 0.10), 0 2px 4px rgb(var(--shadow-color) / 0.06);
126
+ --shadow-md: 0 2px 4px rgb(var(--shadow-color) / 0.06), 0 8px 16px rgb(var(--shadow-color) / 0.06);
127
+ --shadow-bs: 0 2px 4px rgb(var(--shadow-color) / 0.06), 0 6px 14px rgb(var(--shadow-color) / 0.06);
128
+ --shadow-lg: 0 4px 8px rgb(var(--shadow-color) / 0.06), 0 12px 24px rgb(var(--shadow-color) / 0.06);
129
+ --shadow-xl: 0 8px 16px rgb(var(--shadow-color) / 0.06), 0 20px 36px rgb(var(--shadow-color) / 0.06);
130
+ --shadow-2xl: 0 12px 24px rgb(var(--shadow-color) / 0.06), 0 28px 48px rgb(var(--shadow-color) / 0.06);
131
+ --shadow-3xl: 0 16px 32px rgb(var(--shadow-color) / 0.06), 0 36px 64px rgb(var(--shadow-color) / 0.06);
132
+ }
133
+
134
+ :root {
135
+ --font-sans: "Timeless Sans", sans-serif;
136
+ --timeless-sans: "Timeless Sans", sans-serif;
137
+ --timeless-grotesk: "Timeless Grotesk", sans-serif;
138
+ --text-scaling: 1.25;
139
+ --text-xs: 0.67rem;
140
+ --text-sm: 0.75rem;
141
+ --text-md: 0.875rem;
142
+ --text-bs: 1rem;
143
+ --text-lg: calc(var(--text-bs) * var(--text-scaling));
144
+ --text-xl: calc(var(--text-lg) * var(--text-scaling));
145
+ --text-2xl: calc(var(--text-xl) * var(--text-scaling));
146
+ --text-3xl: calc(var(--text-2xl) * var(--text-scaling));
147
+ --text-4xl: calc(var(--text-3xl) * var(--text-scaling));
148
+ --text-5xl: calc(var(--text-4xl) * var(--text-scaling));
149
+ --unit-space: 0.25rem;
150
+ --space-xs: var(--unit-space);
151
+ --space-sm: calc(var(--unit-space) * 2);
152
+ --space-md: calc(var(--unit-space) * 3);
153
+ --space-bs: calc(var(--unit-space) * 4);
154
+ --space-lg: calc(var(--unit-space) * 6);
155
+ --space-xl: calc(var(--unit-space) * 8);
156
+ --space-2xl: calc(var(--unit-space) * 12);
157
+ --space-3xl: calc(var(--unit-space) * 16);
158
+ --radius-xs: 2px;
159
+ --radius-sm: 4px;
160
+ --radius-md: 8px;
161
+ --radius-bs: 16px;
162
+ --radius-lg: 32px;
163
+ --radius-full: 9999px;
164
+ --control-h-sm: 21px;
165
+ --control-h-bs: 32px;
166
+ --control-h-lg: 38px;
167
+ --avatar-size: 32px;
168
+ --switch-w: 40px;
169
+ --switch-h: 22px;
170
+ --switch-thumb: 16px;
171
+ --transin1: cubic-bezier(0.470, 0.000, 0.745, 0.715);
172
+ --transin2: cubic-bezier(0.550, 0.055, 0.675, 0.190);
173
+ --transin3: cubic-bezier(0.755, 0.050, 0.855, 0.060);
174
+ --transout1: cubic-bezier(0.390, 0.575, 0.565, 1.000);
175
+ --transout2: cubic-bezier(0.215, 0.610, 0.355, 1.000);
176
+ --transout3: cubic-bezier(0.230, 1.000, 0.320, 1.000);
177
+ --speed0: 50ms;
178
+ --speed1: 90ms;
179
+ --speed2: 140ms;
180
+ --speed3: 220ms;
181
+ --motionin1: var(--speed0) var(--transin1);
182
+ --motionout1: var(--speed1) var(--transout1);
183
+ --motionin2: var(--speed2) var(--transin2);
184
+ --motionout2: var(--speed2) var(--transout2);
185
+ --motionin3: var(--speed3) var(--transin3);
186
+ --motionout3: var(--speed3) var(--transout3);
187
+ --header-height: 64px;
188
+ --footer-height: 32px;
189
+ --fit-height: calc(var(--header-height) + var(--footer-height));
190
+ --prose-clamp: 65ch;
191
+ --content-clamp: 1600px;
192
+ --app-inline: var(--space-lg);
193
+ --card-min: 240px;
194
+ --height-sm: 16px;
195
+ --height-md: 20px;
196
+ --height-bs: 27px;
197
+ --height-lg: 32px;
198
+ --sidebar-width: 280px;
199
+ --sidebar-width-left: 280px;
200
+ --sidebar-width-right: 280px;
201
+ --z-sticky: 100;
202
+ --z-raised: 200;
203
+ --z-modal: 300;
204
+ --z-toast: 500;
205
+ --greenpop1: #70e000;
206
+ --greenpop2: #00df89;
207
+ --greenpop3: #69ff97;
208
+ --greenpop4: #00e676;
209
+ --orangepop1: #ff7700;
210
+ --orangepop2: #ff4400;
211
+ --orangepop3: #ff0055;
212
+ --orangepop4: #ff5e36;
213
+ --orangepop5: #ff9966;
214
+ --orangepop6: #ff9f1c;
215
+ }
216
+
217
+ @font-face {
218
+ font-family: "Google Sans Flex";
219
+ src: url("/fonts/GoogleSansFlex.woff2") format("woff2");
220
+ font-weight: 300 800;
221
+ font-style: normal;
222
+ font-optical-sizing: auto;
223
+ }
224
+ @font-face {
225
+ font-family: "Google Sans Flex";
226
+ src: url("/fonts/GoogleSansFlex.woff2") format("woff2");
227
+ font-weight: 300 800;
228
+ font-style: italic;
229
+ font-optical-sizing: auto;
230
+ }
231
+ @font-face {
232
+ font-family: "Google Sans";
233
+ src: url("/fonts/GoogleSans.woff2") format("woff2");
234
+ font-weight: 400 700;
235
+ font-style: normal;
236
+ font-optical-sizing: auto;
237
+ }
238
+ @font-face {
239
+ font-family: "Google Sans";
240
+ src: url("/fonts/GoogleSans-Italic.woff2") format("woff2");
241
+ font-weight: 400 700;
242
+ font-style: italic;
243
+ font-optical-sizing: auto;
244
+ }
245
+ @font-face {
246
+ font-family: "Google Sans Code";
247
+ src: url("/fonts/googlesanscode.woff2") format("woff2");
248
+ font-weight: 300 800;
249
+ font-style: normal;
250
+ font-optical-sizing: auto;
251
+ }
252
+ @font-face {
253
+ font-family: "Timeless Sans";
254
+ src: url("/fonts/TimelessSansVF.woff2") format("woff2");
255
+ font-weight: 300 800;
256
+ font-style: normal;
257
+ }
258
+ @font-face {
259
+ font-family: "Timeless Sans";
260
+ src: url("/fonts/TimelessSansVF.woff2") format("woff2");
261
+ font-weight: 300 800;
262
+ font-style: italic;
263
+ }
264
+ @font-face {
265
+ font-family: "Timeless Grotesk";
266
+ src: url("/fonts/TimelessSansVF.woff2") format("woff2");
267
+ font-weight: 300 800;
268
+ font-style: normal;
269
+ }
270
+ @font-face {
271
+ font-family: "Timeless Grotesk";
272
+ src: url("/fonts/TimelessSansVF.woff2") format("woff2");
273
+ font-weight: 300 800;
274
+ font-style: italic;
275
+ }
276
+ *,
277
+ *::before,
278
+ *::after {
279
+ box-sizing: border-box;
280
+ }
281
+
282
+ * {
283
+ margin: 0;
284
+ }
285
+
286
+ body, html {
287
+ color: var(--text-primary);
288
+ font-family: var(--font-sans);
289
+ font-size: var(--text-bs);
290
+ background: var(--bg-surface);
291
+ box-sizing: border-box;
292
+ margin: 0;
293
+ padding: 0;
294
+ }
295
+
296
+ img,
297
+ video,
298
+ svg {
299
+ display: block;
300
+ max-width: 100%;
301
+ }
302
+
303
+ button,
304
+ input,
305
+ select,
306
+ textarea {
307
+ font: inherit;
308
+ color: inherit;
309
+ }
310
+
311
+ p, li, h6, h5, h4, h3, h2, h1 {
312
+ margin: 0;
313
+ }
314
+
315
+ p, li {
316
+ text-wrap: pretty;
317
+ }
318
+
319
+ h1, h2, h3, h4, h5 {
320
+ text-wrap: balance;
321
+ }
322
+
323
+ a {
324
+ color: inherit;
325
+ text-decoration: none;
326
+ }
327
+
328
+ .bdr {
329
+ border: 1px solid red;
330
+ }
331
+
332
+ ul, ol {
333
+ list-style-type: none;
334
+ }
335
+
336
+ ::view-transition-old(root),
337
+ ::view-transition-new(root) {
338
+ animation: none;
339
+ mix-blend-mode: normal;
340
+ }
341
+
342
+ html.mode-wipe::view-transition-old(root),
343
+ html.mode-wipe::view-transition-new(root) {
344
+ animation: none;
345
+ }
346
+
347
+ .gap-xs {
348
+ gap: var(--space-xs);
349
+ }
350
+
351
+ .gap-sm {
352
+ gap: var(--space-sm);
353
+ }
354
+
355
+ .gap-md {
356
+ gap: var(--space-md);
357
+ }
358
+
359
+ .gap-bs {
360
+ gap: var(--space-bs);
361
+ }
362
+
363
+ .gap-lg {
364
+ gap: var(--space-lg);
365
+ }
366
+
367
+ .gap-xl {
368
+ gap: var(--space-xl);
369
+ }
370
+
371
+ .gap-2xl {
372
+ gap: var(--space-2xl);
373
+ }
374
+
375
+ .gap-3xl {
376
+ gap: var(--space-3xl);
377
+ }
378
+
379
+ .rgap-xs {
380
+ row-gap: var(--space-xs);
381
+ }
382
+
383
+ .rgap-sm {
384
+ row-gap: var(--space-sm);
385
+ }
386
+
387
+ .rgap-md {
388
+ row-gap: var(--space-md);
389
+ }
390
+
391
+ .rgap-bs {
392
+ row-gap: var(--space-bs);
393
+ }
394
+
395
+ .rgap-lg {
396
+ row-gap: var(--space-lg);
397
+ }
398
+
399
+ .rgap-xl {
400
+ row-gap: var(--space-xl);
401
+ }
402
+
403
+ .rgap-2xl {
404
+ row-gap: var(--space-2xl);
405
+ }
406
+
407
+ .rgap-3xl {
408
+ row-gap: var(--space-3xl);
409
+ }
410
+
411
+ .cgap-xs {
412
+ column-gap: var(--space-xs);
413
+ }
414
+
415
+ .cgap-sm {
416
+ column-gap: var(--space-sm);
417
+ }
418
+
419
+ .cgap-md {
420
+ column-gap: var(--space-md);
421
+ }
422
+
423
+ .cgap-bs {
424
+ column-gap: var(--space-bs);
425
+ }
426
+
427
+ .cgap-lg {
428
+ column-gap: var(--space-lg);
429
+ }
430
+
431
+ .cgap-xl {
432
+ column-gap: var(--space-xl);
433
+ }
434
+
435
+ .cgap-2xl {
436
+ column-gap: var(--space-2xl);
437
+ }
438
+
439
+ .cgap-3xl {
440
+ column-gap: var(--space-3xl);
441
+ }
442
+
443
+ .pad-xs {
444
+ padding: var(--space-xs);
445
+ }
446
+
447
+ .pad-sm {
448
+ padding: var(--space-sm);
449
+ }
450
+
451
+ .pad-md {
452
+ padding: var(--space-md);
453
+ }
454
+
455
+ .pad-bs {
456
+ padding: var(--space-bs);
457
+ }
458
+
459
+ .pad-lg {
460
+ padding: var(--space-lg);
461
+ }
462
+
463
+ .pad-xl {
464
+ padding: var(--space-xl);
465
+ }
466
+
467
+ .pad-2xl {
468
+ padding: var(--space-2xl);
469
+ }
470
+
471
+ .pad-3xl {
472
+ padding: var(--space-3xl);
473
+ }
474
+
475
+ .px-xs {
476
+ padding-inline: var(--space-xs);
477
+ }
478
+
479
+ .px-sm {
480
+ padding-inline: var(--space-sm);
481
+ }
482
+
483
+ .px-md {
484
+ padding-inline: var(--space-md);
485
+ }
486
+
487
+ .px-bs {
488
+ padding-inline: var(--space-bs);
489
+ }
490
+
491
+ .px-lg {
492
+ padding-inline: var(--space-lg);
493
+ }
494
+
495
+ .px-xl {
496
+ padding-inline: var(--space-xl);
497
+ }
498
+
499
+ .px-2xl {
500
+ padding-inline: var(--space-2xl);
501
+ }
502
+
503
+ .px-3xl {
504
+ padding-inline: var(--space-3xl);
505
+ }
506
+
507
+ .py-xs {
508
+ padding-block: var(--space-xs);
509
+ }
510
+
511
+ .py-sm {
512
+ padding-block: var(--space-sm);
513
+ }
514
+
515
+ .py-md {
516
+ padding-block: var(--space-md);
517
+ }
518
+
519
+ .py-bs {
520
+ padding-block: var(--space-bs);
521
+ }
522
+
523
+ .py-lg {
524
+ padding-block: var(--space-lg);
525
+ }
526
+
527
+ .py-xl {
528
+ padding-block: var(--space-xl);
529
+ }
530
+
531
+ .py-2xl {
532
+ padding-block: var(--space-2xl);
533
+ }
534
+
535
+ .py-3xl {
536
+ padding-block: var(--space-3xl);
537
+ }
538
+
539
+ .pt-xs {
540
+ padding-top: var(--space-xs);
541
+ }
542
+
543
+ .pt-sm {
544
+ padding-top: var(--space-sm);
545
+ }
546
+
547
+ .pt-md {
548
+ padding-top: var(--space-md);
549
+ }
550
+
551
+ .pt-bs {
552
+ padding-top: var(--space-bs);
553
+ }
554
+
555
+ .pt-lg {
556
+ padding-top: var(--space-lg);
557
+ }
558
+
559
+ .pt-xl {
560
+ padding-top: var(--space-xl);
561
+ }
562
+
563
+ .pt-2xl {
564
+ padding-top: var(--space-2xl);
565
+ }
566
+
567
+ .pt-3xl {
568
+ padding-top: var(--space-3xl);
569
+ }
570
+
571
+ .pr-xs {
572
+ padding-right: var(--space-xs);
573
+ }
574
+
575
+ .pr-sm {
576
+ padding-right: var(--space-sm);
577
+ }
578
+
579
+ .pr-md {
580
+ padding-right: var(--space-md);
581
+ }
582
+
583
+ .pr-bs {
584
+ padding-right: var(--space-bs);
585
+ }
586
+
587
+ .pr-lg {
588
+ padding-right: var(--space-lg);
589
+ }
590
+
591
+ .pr-xl {
592
+ padding-right: var(--space-xl);
593
+ }
594
+
595
+ .pr-2xl {
596
+ padding-right: var(--space-2xl);
597
+ }
598
+
599
+ .pr-3xl {
600
+ padding-right: var(--space-3xl);
601
+ }
602
+
603
+ .pb-xs {
604
+ padding-bottom: var(--space-xs);
605
+ }
606
+
607
+ .pb-sm {
608
+ padding-bottom: var(--space-sm);
609
+ }
610
+
611
+ .pb-md {
612
+ padding-bottom: var(--space-md);
613
+ }
614
+
615
+ .pb-bs {
616
+ padding-bottom: var(--space-bs);
617
+ }
618
+
619
+ .pb-lg {
620
+ padding-bottom: var(--space-lg);
621
+ }
622
+
623
+ .pb-xl {
624
+ padding-bottom: var(--space-xl);
625
+ }
626
+
627
+ .pb-2xl {
628
+ padding-bottom: var(--space-2xl);
629
+ }
630
+
631
+ .pb-3xl {
632
+ padding-bottom: var(--space-3xl);
633
+ }
634
+
635
+ .pl-xs {
636
+ padding-left: var(--space-xs);
637
+ }
638
+
639
+ .pl-sm {
640
+ padding-left: var(--space-sm);
641
+ }
642
+
643
+ .pl-md {
644
+ padding-left: var(--space-md);
645
+ }
646
+
647
+ .pl-bs {
648
+ padding-left: var(--space-bs);
649
+ }
650
+
651
+ .pl-lg {
652
+ padding-left: var(--space-lg);
653
+ }
654
+
655
+ .pl-xl {
656
+ padding-left: var(--space-xl);
657
+ }
658
+
659
+ .pl-2xl {
660
+ padding-left: var(--space-2xl);
661
+ }
662
+
663
+ .pl-3xl {
664
+ padding-left: var(--space-3xl);
665
+ }
666
+
667
+ .mar-xs {
668
+ margin: var(--space-xs);
669
+ }
670
+
671
+ .mar-sm {
672
+ margin: var(--space-sm);
673
+ }
674
+
675
+ .mar-md {
676
+ margin: var(--space-md);
677
+ }
678
+
679
+ .mar-bs {
680
+ margin: var(--space-bs);
681
+ }
682
+
683
+ .mar-lg {
684
+ margin: var(--space-lg);
685
+ }
686
+
687
+ .mar-xl {
688
+ margin: var(--space-xl);
689
+ }
690
+
691
+ .mar-2xl {
692
+ margin: var(--space-2xl);
693
+ }
694
+
695
+ .mar-3xl {
696
+ margin: var(--space-3xl);
697
+ }
698
+
699
+ .mx-xs {
700
+ margin-inline: var(--space-xs);
701
+ }
702
+
703
+ .mx-sm {
704
+ margin-inline: var(--space-sm);
705
+ }
706
+
707
+ .mx-md {
708
+ margin-inline: var(--space-md);
709
+ }
710
+
711
+ .mx-bs {
712
+ margin-inline: var(--space-bs);
713
+ }
714
+
715
+ .mx-lg {
716
+ margin-inline: var(--space-lg);
717
+ }
718
+
719
+ .mx-xl {
720
+ margin-inline: var(--space-xl);
721
+ }
722
+
723
+ .mx-2xl {
724
+ margin-inline: var(--space-2xl);
725
+ }
726
+
727
+ .mx-3xl {
728
+ margin-inline: var(--space-3xl);
729
+ }
730
+
731
+ .my-xs {
732
+ margin-block: var(--space-xs);
733
+ }
734
+
735
+ .my-sm {
736
+ margin-block: var(--space-sm);
737
+ }
738
+
739
+ .my-md {
740
+ margin-block: var(--space-md);
741
+ }
742
+
743
+ .my-bs {
744
+ margin-block: var(--space-bs);
745
+ }
746
+
747
+ .my-lg {
748
+ margin-block: var(--space-lg);
749
+ }
750
+
751
+ .my-xl {
752
+ margin-block: var(--space-xl);
753
+ }
754
+
755
+ .my-2xl {
756
+ margin-block: var(--space-2xl);
757
+ }
758
+
759
+ .my-3xl {
760
+ margin-block: var(--space-3xl);
761
+ }
762
+
763
+ .mt-xs {
764
+ margin-top: var(--space-xs);
765
+ }
766
+
767
+ .mt-sm {
768
+ margin-top: var(--space-sm);
769
+ }
770
+
771
+ .mt-md {
772
+ margin-top: var(--space-md);
773
+ }
774
+
775
+ .mt-bs {
776
+ margin-top: var(--space-bs);
777
+ }
778
+
779
+ .mt-lg {
780
+ margin-top: var(--space-lg);
781
+ }
782
+
783
+ .mt-xl {
784
+ margin-top: var(--space-xl);
785
+ }
786
+
787
+ .mt-2xl {
788
+ margin-top: var(--space-2xl);
789
+ }
790
+
791
+ .mt-3xl {
792
+ margin-top: var(--space-3xl);
793
+ }
794
+
795
+ .mr-xs {
796
+ margin-right: var(--space-xs);
797
+ }
798
+
799
+ .mr-sm {
800
+ margin-right: var(--space-sm);
801
+ }
802
+
803
+ .mr-md {
804
+ margin-right: var(--space-md);
805
+ }
806
+
807
+ .mr-bs {
808
+ margin-right: var(--space-bs);
809
+ }
810
+
811
+ .mr-lg {
812
+ margin-right: var(--space-lg);
813
+ }
814
+
815
+ .mr-xl {
816
+ margin-right: var(--space-xl);
817
+ }
818
+
819
+ .mr-2xl {
820
+ margin-right: var(--space-2xl);
821
+ }
822
+
823
+ .mr-3xl {
824
+ margin-right: var(--space-3xl);
825
+ }
826
+
827
+ .mb-xs {
828
+ margin-bottom: var(--space-xs);
829
+ }
830
+
831
+ .mb-sm {
832
+ margin-bottom: var(--space-sm);
833
+ }
834
+
835
+ .mb-md {
836
+ margin-bottom: var(--space-md);
837
+ }
838
+
839
+ .mb-bs {
840
+ margin-bottom: var(--space-bs);
841
+ }
842
+
843
+ .mb-lg {
844
+ margin-bottom: var(--space-lg);
845
+ }
846
+
847
+ .mb-xl {
848
+ margin-bottom: var(--space-xl);
849
+ }
850
+
851
+ .mb-2xl {
852
+ margin-bottom: var(--space-2xl);
853
+ }
854
+
855
+ .mb-3xl {
856
+ margin-bottom: var(--space-3xl);
857
+ }
858
+
859
+ .ml-xs {
860
+ margin-left: var(--space-xs);
861
+ }
862
+
863
+ .ml-sm {
864
+ margin-left: var(--space-sm);
865
+ }
866
+
867
+ .ml-md {
868
+ margin-left: var(--space-md);
869
+ }
870
+
871
+ .ml-bs {
872
+ margin-left: var(--space-bs);
873
+ }
874
+
875
+ .ml-lg {
876
+ margin-left: var(--space-lg);
877
+ }
878
+
879
+ .ml-xl {
880
+ margin-left: var(--space-xl);
881
+ }
882
+
883
+ .ml-2xl {
884
+ margin-left: var(--space-2xl);
885
+ }
886
+
887
+ .ml-3xl {
888
+ margin-left: var(--space-3xl);
889
+ }
890
+
891
+ .radius-xs {
892
+ border-radius: var(--radius-xs);
893
+ }
894
+
895
+ .radius-sm {
896
+ border-radius: var(--radius-sm);
897
+ }
898
+
899
+ .radius-md {
900
+ border-radius: var(--radius-md);
901
+ }
902
+
903
+ .radius-bs {
904
+ border-radius: var(--radius-bs);
905
+ }
906
+
907
+ .radius-lg {
908
+ border-radius: var(--radius-lg);
909
+ }
910
+
911
+ .radius-full {
912
+ border-radius: var(--radius-full);
913
+ }
914
+
915
+ .wfull {
916
+ width: 100%;
917
+ }
918
+
919
+ .hfull {
920
+ height: 100%;
921
+ }
922
+
923
+ .full {
924
+ width: 100%;
925
+ height: 100%;
926
+ }
927
+
928
+ .minw0 {
929
+ min-width: 0;
930
+ }
931
+
932
+ .minh0 {
933
+ min-height: 0;
934
+ }
935
+
936
+ .min0 {
937
+ min-width: 0;
938
+ min-height: 0;
939
+ }
940
+
941
+ .h-sm {
942
+ height: var(--height-sm);
943
+ }
944
+
945
+ .h-md {
946
+ height: var(--height-md);
947
+ }
948
+
949
+ .h-bs {
950
+ height: var(--height-bs);
951
+ }
952
+
953
+ .h-lg {
954
+ height: var(--height-lg);
955
+ }
956
+
957
+ .hfull-vh {
958
+ min-height: 100vh;
959
+ }
960
+
961
+ .hfull-vh-fitted {
962
+ min-height: var(--fit-height);
963
+ }
964
+
965
+ .text-xs {
966
+ font-size: var(--text-xs);
967
+ }
968
+
969
+ .text-sm {
970
+ font-size: var(--text-sm);
971
+ }
972
+
973
+ .text-md {
974
+ font-size: var(--text-md);
975
+ }
976
+
977
+ .text-bs {
978
+ font-size: var(--text-bs);
979
+ }
980
+
981
+ .text-lg {
982
+ font-size: var(--text-lg);
983
+ }
984
+
985
+ .text-xl {
986
+ font-size: var(--text-xl);
987
+ }
988
+
989
+ .text-2xl {
990
+ font-size: var(--text-2xl);
991
+ }
992
+
993
+ .text-3xl {
994
+ font-size: var(--text-3xl);
995
+ }
996
+
997
+ .text-4xl {
998
+ font-size: var(--text-4xl);
999
+ }
1000
+
1001
+ .text-5xl {
1002
+ font-size: var(--text-5xl);
1003
+ }
1004
+
1005
+ .text-body {
1006
+ font-size: var(--text-bs);
1007
+ line-height: 1.5;
1008
+ }
1009
+
1010
+ .text-body-lg {
1011
+ font-size: var(--text-lg);
1012
+ line-height: 1.5;
1013
+ }
1014
+
1015
+ .text-body-sm {
1016
+ font-size: var(--text-sm);
1017
+ line-height: 1.5;
1018
+ }
1019
+
1020
+ .page-title {
1021
+ font-size: var(--text-3xl);
1022
+ line-height: 1.1;
1023
+ font-weight: 700;
1024
+ letter-spacing: -0.02rem;
1025
+ }
1026
+
1027
+ .page-desc {
1028
+ font-size: var(--text-lg);
1029
+ line-height: 1.2;
1030
+ }
1031
+
1032
+ .page-heading-xl {
1033
+ font-size: var(--text-xl);
1034
+ line-height: 1.1;
1035
+ font-weight: 600;
1036
+ letter-spacing: -0.03rem;
1037
+ }
1038
+
1039
+ .page-heading-lg {
1040
+ font-size: var(--text-lg);
1041
+ line-height: 1.1;
1042
+ font-weight: 600;
1043
+ letter-spacing: -0.03rem;
1044
+ }
1045
+
1046
+ .page-heading-bs {
1047
+ font-size: var(--text-bs);
1048
+ line-height: 1.1;
1049
+ font-weight: 600;
1050
+ letter-spacing: -0.02rem;
1051
+ }
1052
+
1053
+ .card-title {
1054
+ font-size: var(--text-lg);
1055
+ font-weight: 600;
1056
+ line-height: 1.2;
1057
+ }
1058
+
1059
+ .card-desc {
1060
+ font-size: var(--text-md);
1061
+ line-height: 1.2;
1062
+ }
1063
+
1064
+ .breadcrumb-link, .breadcrumb-spacer {
1065
+ color: var(--text-muted);
1066
+ font-size: var(--text-xs);
1067
+ text-transform: uppercase;
1068
+ }
1069
+
1070
+ .breadcrumb-link:hover {
1071
+ color: var(--theme-color);
1072
+ }
1073
+
1074
+ .breadcrumb {
1075
+ display: flex;
1076
+ justify-content: flex-start;
1077
+ margin-left: -0.5rem;
1078
+ }
1079
+
1080
+ .nav-link {
1081
+ font-size: var(--text-md);
1082
+ line-height: 1.2;
1083
+ }
1084
+
1085
+ .nav-link-sm {
1086
+ font-size: var(--text-sm);
1087
+ line-height: 1.2;
1088
+ }
1089
+
1090
+ .nav-header {
1091
+ font-size: var(--text-sm);
1092
+ line-height: 1.1;
1093
+ font-weight: 500;
1094
+ padding: var(--space-sm);
1095
+ }
1096
+
1097
+ .header-nav a {
1098
+ text-transform: uppercase;
1099
+ font-size: var(--text-md);
1100
+ font-weight: 500;
1101
+ }
1102
+ .header-nav a:hover {
1103
+ color: var(--theme-color);
1104
+ }
1105
+
1106
+ .lh11 {
1107
+ line-height: 1.1;
1108
+ }
1109
+
1110
+ .lh12 {
1111
+ line-height: 1.2;
1112
+ }
1113
+
1114
+ .lh13 {
1115
+ line-height: 1.3;
1116
+ }
1117
+
1118
+ .lh14 {
1119
+ line-height: 1.4;
1120
+ }
1121
+
1122
+ .lh15 {
1123
+ line-height: 1.5;
1124
+ }
1125
+
1126
+ .lh16 {
1127
+ line-height: 1.6;
1128
+ }
1129
+
1130
+ .ls-tight-bs {
1131
+ letter-spacing: -0.01rem;
1132
+ }
1133
+
1134
+ .ls-tight-lg {
1135
+ letter-spacing: -0.02rem;
1136
+ }
1137
+
1138
+ .ls-tight-xl {
1139
+ letter-spacing: -0.03rem;
1140
+ }
1141
+
1142
+ .ls-wide-bs {
1143
+ letter-spacing: 0.01rem;
1144
+ }
1145
+
1146
+ .ls-wide-lg {
1147
+ letter-spacing: 0.02rem;
1148
+ }
1149
+
1150
+ .ls-wide-xl {
1151
+ letter-spacing: 0.03rem;
1152
+ }
1153
+
1154
+ .weight-300 {
1155
+ font-weight: 300;
1156
+ }
1157
+
1158
+ .weight-400 {
1159
+ font-weight: 400;
1160
+ }
1161
+
1162
+ .weight-500 {
1163
+ font-weight: 500;
1164
+ }
1165
+
1166
+ .weight-600 {
1167
+ font-weight: 600;
1168
+ }
1169
+
1170
+ .weight-700 {
1171
+ font-weight: 700;
1172
+ }
1173
+
1174
+ .weight-800 {
1175
+ font-weight: 800;
1176
+ }
1177
+
1178
+ .tt-u {
1179
+ text-transform: uppercase;
1180
+ }
1181
+
1182
+ .tt-c {
1183
+ text-transform: capitalize;
1184
+ }
1185
+
1186
+ .ta-c {
1187
+ text-align: center;
1188
+ }
1189
+ @media (max-width: 1024px) {
1190
+ .ta-c.mleft {
1191
+ text-align: left;
1192
+ }
1193
+ }
1194
+
1195
+ .ta-l {
1196
+ text-align: left;
1197
+ }
1198
+
1199
+ .ta-r {
1200
+ text-align: right;
1201
+ }
1202
+ @media (max-width: 1024px) {
1203
+ .ta-r.mleft {
1204
+ text-align: left;
1205
+ }
1206
+ }
1207
+
1208
+ .mono {
1209
+ font-family: var(--font-mono);
1210
+ }
1211
+
1212
+ .sans {
1213
+ font-family: var(--font-sans);
1214
+ }
1215
+
1216
+ .truncate {
1217
+ overflow: hidden;
1218
+ white-space: nowrap;
1219
+ text-overflow: ellipsis;
1220
+ }
1221
+
1222
+ .box {
1223
+ display: flex;
1224
+ flex-direction: column;
1225
+ }
1226
+ .box.xcenter {
1227
+ align-items: center;
1228
+ text-align: center;
1229
+ }
1230
+ .box.xleft {
1231
+ align-items: flex-start;
1232
+ text-align: left;
1233
+ }
1234
+ .box.xright {
1235
+ align-items: flex-end;
1236
+ text-align: right;
1237
+ }
1238
+ .box.ycenter {
1239
+ justify-content: center;
1240
+ }
1241
+ .box.ytop {
1242
+ justify-content: flex-start;
1243
+ }
1244
+ .box.ybot {
1245
+ justify-content: flex-end;
1246
+ }
1247
+ .box.ybetween {
1248
+ justify-content: space-between;
1249
+ }
1250
+ .box.yevenly {
1251
+ justify-content: space-evenly;
1252
+ }
1253
+ .box.yaround {
1254
+ justify-content: space-around;
1255
+ }
1256
+
1257
+ .row {
1258
+ display: flex;
1259
+ flex-direction: row;
1260
+ }
1261
+ .row.xleft {
1262
+ justify-content: flex-start;
1263
+ }
1264
+ .row.xcenter {
1265
+ justify-content: center;
1266
+ }
1267
+ .row.xright {
1268
+ justify-content: flex-end;
1269
+ }
1270
+ .row.xbetween {
1271
+ justify-content: space-between;
1272
+ }
1273
+ .row.xevenly {
1274
+ justify-content: space-evenly;
1275
+ }
1276
+ .row.xaround {
1277
+ justify-content: space-around;
1278
+ }
1279
+ .row.ycenter {
1280
+ align-items: center;
1281
+ }
1282
+ .row.ytop {
1283
+ align-items: flex-start;
1284
+ }
1285
+ .row.ybot {
1286
+ align-items: flex-end;
1287
+ }
1288
+
1289
+ .grid {
1290
+ display: grid;
1291
+ }
1292
+ .grid.center {
1293
+ place-items: center;
1294
+ }
1295
+ .grid.xcenter {
1296
+ justify-items: center;
1297
+ text-align: center;
1298
+ }
1299
+ .grid.xleft {
1300
+ justify-items: start;
1301
+ text-align: left;
1302
+ }
1303
+ .grid.xright {
1304
+ justify-items: end;
1305
+ text-align: right;
1306
+ }
1307
+ .grid.xstretch {
1308
+ justify-items: stretch;
1309
+ }
1310
+ .grid.ycenter {
1311
+ align-items: center;
1312
+ }
1313
+ .grid.ytop {
1314
+ align-items: start;
1315
+ }
1316
+ .grid.ybot {
1317
+ align-items: end;
1318
+ }
1319
+ .grid.ystretch {
1320
+ align-items: stretch;
1321
+ }
1322
+ .grid.xbetween {
1323
+ justify-content: space-between;
1324
+ }
1325
+ .grid.xevenly {
1326
+ justify-content: space-evenly;
1327
+ }
1328
+ .grid.xaround {
1329
+ justify-content: space-around;
1330
+ }
1331
+ .grid.ybetween {
1332
+ align-content: space-between;
1333
+ }
1334
+ .grid.yevenly {
1335
+ align-content: space-evenly;
1336
+ }
1337
+ .grid.yaround {
1338
+ align-content: space-around;
1339
+ }
1340
+
1341
+ .wrap {
1342
+ flex-wrap: wrap;
1343
+ }
1344
+
1345
+ .grow {
1346
+ flex: 1 1 0%;
1347
+ }
1348
+
1349
+ .shrink-0 {
1350
+ flex-shrink: 0;
1351
+ }
1352
+
1353
+ .relative {
1354
+ position: relative;
1355
+ }
1356
+
1357
+ .absolute {
1358
+ position: absolute;
1359
+ }
1360
+
1361
+ .fixed {
1362
+ position: fixed;
1363
+ }
1364
+
1365
+ .sticky {
1366
+ position: sticky;
1367
+ }
1368
+
1369
+ .scroll-y {
1370
+ overflow-y: auto;
1371
+ overflow-x: hidden;
1372
+ overscroll-behavior: contain;
1373
+ }
1374
+
1375
+ .scroll-x {
1376
+ overflow-x: auto;
1377
+ overflow-y: hidden;
1378
+ overscroll-behavior: contain;
1379
+ }
1380
+
1381
+ .card {
1382
+ padding: var(--space-bs);
1383
+ border: 1px solid var(--border);
1384
+ background: var(--bg-panel);
1385
+ }
1386
+ .card svg.arrow {
1387
+ color: var(--theme-color);
1388
+ transition: transform var(--speed1) var(--transout1);
1389
+ }
1390
+ .card footer {
1391
+ margin-top: auto;
1392
+ }
1393
+ .card[data-shape=modern] {
1394
+ border-radius: var(--radius-sm);
1395
+ }
1396
+ .card:hover svg {
1397
+ transform: translateX(2rem);
1398
+ }
1399
+
1400
+ .chip {
1401
+ font-size: var(--text-xs);
1402
+ font-weight: 500;
1403
+ letter-spacing: 0.01rem;
1404
+ padding: var(--space-xs) var(--space-sm);
1405
+ border-radius: var(--radius-md);
1406
+ }
1407
+
1408
+ .prose-section {
1409
+ display: flex;
1410
+ flex-direction: column;
1411
+ gap: var(--space-lg);
1412
+ }
1413
+
1414
+ .nav-section {
1415
+ display: flex;
1416
+ flex-direction: column;
1417
+ gap: var(--space-xs);
1418
+ }
1419
+
1420
+ .page-header {
1421
+ display: flex;
1422
+ flex-direction: column;
1423
+ padding-bottom: var(--space-2xl);
1424
+ gap: var(--space-sm);
1425
+ }
1426
+
1427
+ .inputs-wrapper {
1428
+ display: flex;
1429
+ gap: var(--space-xs);
1430
+ }
1431
+ .inputs-wrapper label {
1432
+ font-size: var(--text-sm);
1433
+ color: var(--text-muted);
1434
+ }
1435
+
1436
+ .checkbox-wrapper {
1437
+ display: flex;
1438
+ align-items: center;
1439
+ gap: var(--space-xs);
1440
+ }
1441
+ .checkbox-wrapper span {
1442
+ font-size: var(--text-sm);
1443
+ font-weight: 500;
1444
+ }
1445
+
1446
+ .grid-1 {
1447
+ display: grid;
1448
+ grid-template-columns: repeat(1, minmax(0, 1fr));
1449
+ }
1450
+
1451
+ .grid-2 {
1452
+ display: grid;
1453
+ grid-template-columns: repeat(1, minmax(0, 1fr));
1454
+ }
1455
+ @media (min-width: 1025px) {
1456
+ .grid-2 {
1457
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1458
+ }
1459
+ }
1460
+
1461
+ .grid-3 {
1462
+ display: grid;
1463
+ grid-template-columns: repeat(1, minmax(0, 1fr));
1464
+ }
1465
+ @media (min-width: 1025px) {
1466
+ .grid-3 {
1467
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1468
+ }
1469
+ }
1470
+
1471
+ .grid-4 {
1472
+ display: grid;
1473
+ grid-template-columns: repeat(1, minmax(0, 1fr));
1474
+ }
1475
+ @media (min-width: 1025px) {
1476
+ .grid-4 {
1477
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1478
+ }
1479
+ }
1480
+ @media (min-width: 1281px) {
1481
+ .grid-4 {
1482
+ grid-template-columns: repeat(4, minmax(0, 1fr));
1483
+ }
1484
+ }
1485
+
1486
+ .grid-6 {
1487
+ display: grid;
1488
+ grid-template-columns: repeat(1, minmax(0, 1fr));
1489
+ }
1490
+ @media (min-width: 1025px) {
1491
+ .grid-6 {
1492
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1493
+ }
1494
+ }
1495
+ @media (min-width: 1281px) {
1496
+ .grid-6 {
1497
+ grid-template-columns: repeat(6, minmax(0, 1fr));
1498
+ }
1499
+ }
1500
+
1501
+ .cspan-1 {
1502
+ grid-column: span 1;
1503
+ }
1504
+
1505
+ .cspan-2 {
1506
+ grid-column: span 2;
1507
+ }
1508
+
1509
+ .cspan-3 {
1510
+ grid-column: span 3;
1511
+ }
1512
+
1513
+ .cspan-4 {
1514
+ grid-column: span 4;
1515
+ }
1516
+
1517
+ .cspan-5 {
1518
+ grid-column: span 5;
1519
+ }
1520
+
1521
+ .cspan-6 {
1522
+ grid-column: span 6;
1523
+ }
1524
+
1525
+ .cspan-7 {
1526
+ grid-column: span 7;
1527
+ }
1528
+
1529
+ .cspan-8 {
1530
+ grid-column: span 8;
1531
+ }
1532
+
1533
+ .card-grid {
1534
+ display: grid;
1535
+ grid-template-columns: repeat(auto-fit, minmax(min(var(--card-min), 100%), 1fr));
1536
+ }
1537
+
1538
+ .prose {
1539
+ max-width: var(--prose-clamp);
1540
+ margin-inline: auto;
1541
+ display: flex;
1542
+ flex-direction: column;
1543
+ gap: var(--space-sm);
1544
+ }
1545
+ .prose h1:first-child, .prose h2:first-child, .prose h3:first-child, .prose h4:first-child {
1546
+ margin-top: 0;
1547
+ }
1548
+
1549
+ .frame-16-9 {
1550
+ aspect-ratio: 16 / 9;
1551
+ overflow: hidden;
1552
+ position: relative;
1553
+ }
1554
+ .frame-16-9 img, .frame-16-9 video, .frame-16-9 iframe, .frame-16-9 svg {
1555
+ width: 100%;
1556
+ height: 100%;
1557
+ object-fit: cover;
1558
+ }
1559
+
1560
+ .frame-9-16 {
1561
+ aspect-ratio: 9 / 16;
1562
+ overflow: hidden;
1563
+ position: relative;
1564
+ }
1565
+ .frame-9-16 img, .frame-9-16 video, .frame-9-16 iframe, .frame-9-16 svg {
1566
+ width: 100%;
1567
+ height: 100%;
1568
+ object-fit: cover;
1569
+ }
1570
+
1571
+ .frame-4-3 {
1572
+ aspect-ratio: 4 / 3;
1573
+ overflow: hidden;
1574
+ position: relative;
1575
+ }
1576
+ .frame-4-3 img, .frame-4-3 video, .frame-4-3 iframe, .frame-4-3 svg {
1577
+ width: 100%;
1578
+ height: 100%;
1579
+ object-fit: cover;
1580
+ }
1581
+
1582
+ .frame-3-4 {
1583
+ aspect-ratio: 3 / 4;
1584
+ overflow: hidden;
1585
+ position: relative;
1586
+ }
1587
+ .frame-3-4 img, .frame-3-4 video, .frame-3-4 iframe, .frame-3-4 svg {
1588
+ width: 100%;
1589
+ height: 100%;
1590
+ object-fit: cover;
1591
+ }
1592
+
1593
+ .frame-3-2 {
1594
+ aspect-ratio: 3 / 2;
1595
+ overflow: hidden;
1596
+ position: relative;
1597
+ }
1598
+ .frame-3-2 img, .frame-3-2 video, .frame-3-2 iframe, .frame-3-2 svg {
1599
+ width: 100%;
1600
+ height: 100%;
1601
+ object-fit: cover;
1602
+ }
1603
+
1604
+ .frame-2-3 {
1605
+ aspect-ratio: 2 / 3;
1606
+ overflow: hidden;
1607
+ position: relative;
1608
+ }
1609
+ .frame-2-3 img, .frame-2-3 video, .frame-2-3 iframe, .frame-2-3 svg {
1610
+ width: 100%;
1611
+ height: 100%;
1612
+ object-fit: cover;
1613
+ }
1614
+
1615
+ .frame-1-1 {
1616
+ aspect-ratio: 1 / 1;
1617
+ overflow: hidden;
1618
+ position: relative;
1619
+ }
1620
+ .frame-1-1 img, .frame-1-1 video, .frame-1-1 iframe, .frame-1-1 svg {
1621
+ width: 100%;
1622
+ height: 100%;
1623
+ object-fit: cover;
1624
+ }
1625
+
1626
+ .reel {
1627
+ display: flex;
1628
+ flex-direction: row;
1629
+ overflow-x: auto;
1630
+ overscroll-behavior-inline: contain;
1631
+ scroll-snap-type: inline mandatory;
1632
+ }
1633
+ .reel > * {
1634
+ flex: 0 0 auto;
1635
+ scroll-snap-align: start;
1636
+ }
1637
+
1638
+ .app-shell {
1639
+ display: flex;
1640
+ flex-direction: column;
1641
+ position: relative;
1642
+ min-height: 100vh;
1643
+ }
1644
+
1645
+ .app-header {
1646
+ display: flex;
1647
+ flex-direction: row;
1648
+ align-items: center;
1649
+ position: sticky;
1650
+ top: 0;
1651
+ z-index: var(--z-sticky);
1652
+ height: var(--header-height);
1653
+ padding-inline: var(--app-inline);
1654
+ background: var(--bg-surface);
1655
+ }
1656
+ .app-header.clamped {
1657
+ width: var(--content-clamp);
1658
+ margin-inline: auto;
1659
+ }
1660
+
1661
+ .app-main {
1662
+ flex: 1 1 0%;
1663
+ min-width: 0;
1664
+ min-height: calc(100dvh - var(--fit-height));
1665
+ display: flex;
1666
+ flex-direction: row;
1667
+ padding-inline: var(--app-inline);
1668
+ }
1669
+ .app-main.clamped {
1670
+ width: var(--content-clamp);
1671
+ margin-inline: auto;
1672
+ }
1673
+
1674
+ .main-section {
1675
+ flex: 1 1 0%;
1676
+ min-width: 0;
1677
+ }
1678
+
1679
+ .sidebar-left,
1680
+ .sidebar-right {
1681
+ display: none;
1682
+ flex-shrink: 0;
1683
+ position: sticky;
1684
+ top: var(--header-height);
1685
+ height: calc(100dvh - var(--fit-height));
1686
+ overflow-y: auto;
1687
+ padding-block: var(--space-2xl);
1688
+ }
1689
+ .sidebar-left ul, .sidebar-left ol,
1690
+ .sidebar-right ul,
1691
+ .sidebar-right ol {
1692
+ margin-left: 0;
1693
+ padding-left: 0;
1694
+ }
1695
+
1696
+ .sidebar-left {
1697
+ width: var(--sidebar-width-left);
1698
+ }
1699
+
1700
+ .sidebar-right {
1701
+ width: var(--sidebar-width-right);
1702
+ }
1703
+
1704
+ @media (max-width: 1024px) {
1705
+ .app-shell.open .sidebar-left {
1706
+ display: block;
1707
+ position: fixed;
1708
+ left: 0;
1709
+ z-index: var(--z-modal);
1710
+ height: var(--fit-height);
1711
+ }
1712
+ }
1713
+ @media (min-width: 1025px) {
1714
+ .sidebar-left {
1715
+ display: block;
1716
+ }
1717
+ }
1718
+ @media (min-width: 1281px) {
1719
+ .sidebar-right {
1720
+ display: block;
1721
+ }
1722
+ }
1723
+ .app-footer {
1724
+ display: flex;
1725
+ flex-direction: row;
1726
+ align-items: center;
1727
+ padding-inline: var(--app-inline);
1728
+ min-height: var(--footer-height);
1729
+ }
1730
+
1731
+ .content-section {
1732
+ width: 100%;
1733
+ padding: var(--space-2xl) 0;
1734
+ }
1735
+ .content-section.null {
1736
+ padding: 0 var(--space-bs);
1737
+ }
1738
+ @media (min-width: 769px) {
1739
+ .content-section {
1740
+ padding: var(--space-2xl) var(--space-bs);
1741
+ }
1742
+ .content-section.narrow-half {
1743
+ padding: var(--space-2xl) 0;
1744
+ width: 640px;
1745
+ margin-inline: auto;
1746
+ }
1747
+ .content-section.narrow-wide {
1748
+ padding: var(--space-2xl) 0;
1749
+ width: 720px;
1750
+ margin-inline: auto;
1751
+ }
1752
+ }
1753
+ @media (min-width: 1025px) {
1754
+ .content-section {
1755
+ padding: var(--space-2xl) var(--space-bs);
1756
+ }
1757
+ .content-section.narrow-full {
1758
+ width: 640px;
1759
+ margin-inline: auto;
1760
+ }
1761
+ .content-section.narrow-half {
1762
+ width: 750px;
1763
+ padding-right: 25px;
1764
+ }
1765
+ .content-section.narrow-wide {
1766
+ width: 750px;
1767
+ }
1768
+ }
1769
+ @media (min-width: 1281px) {
1770
+ .content-section.narrow-full {
1771
+ width: 680px;
1772
+ }
1773
+ .content-section.narrow-half {
1774
+ width: 800px;
1775
+ padding-right: 120px;
1776
+ }
1777
+ .content-section.narrow-wide {
1778
+ width: 1024px;
1779
+ }
1780
+ }
1781
+ @media (min-width: 1441px) {
1782
+ .content-section.narrow-wide {
1783
+ width: 1280px;
1784
+ }
1785
+ }
1786
+
1787
+ .input {
1788
+ display: block;
1789
+ width: 100%;
1790
+ height: var(--height-lg);
1791
+ padding-inline: var(--space-bs);
1792
+ font-size: var(--text-md);
1793
+ background: var(--bg-input);
1794
+ color: var(--text-primary);
1795
+ border: 1px solid var(--border);
1796
+ border-radius: var(--radius-sm);
1797
+ }
1798
+ .input:focus-visible {
1799
+ outline: none;
1800
+ border-color: var(--theme-color);
1801
+ box-shadow: 0 0 0 2px var(--ring);
1802
+ }
1803
+ .input.small {
1804
+ height: var(--height-bs);
1805
+ font-size: var(--text-sm);
1806
+ }
1807
+
1808
+ .select {
1809
+ display: block;
1810
+ width: 100%;
1811
+ height: var(--height-lg);
1812
+ padding-inline: var(--space-bs);
1813
+ font-size: var(--text-md);
1814
+ background-color: var(--bg-input);
1815
+ color: var(--text-primary);
1816
+ border: 1px solid var(--border);
1817
+ border-radius: var(--radius-sm);
1818
+ appearance: none;
1819
+ -webkit-appearance: none;
1820
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23697080' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
1821
+ background-repeat: no-repeat;
1822
+ background-position: right 8px center;
1823
+ cursor: pointer;
1824
+ }
1825
+ .select:focus-visible {
1826
+ outline: none;
1827
+ border-color: var(--theme-color);
1828
+ box-shadow: 0 0 0 2px var(--ring);
1829
+ }
1830
+ .select.small {
1831
+ height: var(--height-bs);
1832
+ font-size: var(--text-sm);
1833
+ }
1834
+
1835
+ .link {
1836
+ color: var(--theme-color);
1837
+ text-decoration: none;
1838
+ transition: color var(--motionin1);
1839
+ }
1840
+ .link:hover {
1841
+ color: var(--theme-color-alt);
1842
+ }
1843
+
1844
+ .link-plain {
1845
+ color: var(--text-primary);
1846
+ text-decoration: none;
1847
+ transition: color var(--motionin1);
1848
+ }
1849
+ .link-plain:hover {
1850
+ color: var(--theme-color);
1851
+ }
1852
+
1853
+ .link-parent {
1854
+ color: var(--text-primary);
1855
+ text-decoration: none;
1856
+ }
1857
+ .link-parent .link-title {
1858
+ transition: color var(--motionin1);
1859
+ }
1860
+ .link-parent:hover .link-title {
1861
+ color: var(--theme-color);
1862
+ }
1863
+
1864
+ a.nav-link {
1865
+ padding: var(--space-sm);
1866
+ border-radius: var(--radius-sm);
1867
+ }
1868
+ a.nav-link:hover {
1869
+ background: var(--state-hover);
1870
+ }
1871
+
1872
+ button {
1873
+ display: flex;
1874
+ align-items: center;
1875
+ justify-content: center;
1876
+ height: var(--height-bs);
1877
+ font-size: var(--text-md);
1878
+ color: var(--text-primary);
1879
+ text-decoration: none;
1880
+ cursor: pointer;
1881
+ user-select: none;
1882
+ transition: background var(--motionin1), border-color var(--motionin1), color var(--motionin1);
1883
+ padding-inline: var(--space-md);
1884
+ }
1885
+ button:focus-visible {
1886
+ outline: 2px solid var(--ring);
1887
+ outline-offset: 1px;
1888
+ }
1889
+ button:disabled {
1890
+ opacity: 0.5;
1891
+ cursor: not-allowed;
1892
+ pointer-events: none;
1893
+ }
1894
+ button.icon {
1895
+ height: 24px;
1896
+ width: 24px;
1897
+ border: 1px solid transparent;
1898
+ background: transparent;
1899
+ padding: 0;
1900
+ }
1901
+ button.icon:hover {
1902
+ background: var(--state-hover);
1903
+ }
1904
+ button.modern {
1905
+ border-radius: var(--space-xs);
1906
+ }
1907
+ button.primary {
1908
+ background: var(--theme-color);
1909
+ }
1910
+ button[data-variant=primary] {
1911
+ background: var(--theme-color);
1912
+ color: var(--white-fixed);
1913
+ border: 1px solid var(--theme-color);
1914
+ }
1915
+ button[data-variant=primary]:hover {
1916
+ background: var(--theme-color-alt);
1917
+ border: 1px solid var(--theme-color-alt);
1918
+ }
1919
+ button[data-variant=secondary] {
1920
+ background: var(--state-surface);
1921
+ color: var(--text-primary);
1922
+ border: 1px solid var(--border-strong);
1923
+ }
1924
+ button[data-variant=secondary]:hover {
1925
+ background: var(--state-hover);
1926
+ }
1927
+ button[data-variant=soft] {
1928
+ background: var(--theme-color-sub);
1929
+ color: var(--white-fixed);
1930
+ border: 1px solid var(--theme-color-sub);
1931
+ }
1932
+ button[data-variant=soft]:hover {
1933
+ border: 1px solid var(--text-primary);
1934
+ color: var(--text-primary);
1935
+ }
1936
+ button[data-variant=outline] {
1937
+ background: var(--bg);
1938
+ color: var(--text-primary);
1939
+ border: 1px solid var(--text-primary);
1940
+ }
1941
+ button[data-variant=outline]:hover {
1942
+ background: var(--state-hover);
1943
+ }
1944
+ button[data-variant=ghost] {
1945
+ background: transparent;
1946
+ color: var(--text-primary);
1947
+ border: none;
1948
+ }
1949
+ button[data-variant=ghost]:hover {
1950
+ background: var(--state-hover);
1951
+ }
1952
+ button[data-variant=link] {
1953
+ background: transparent;
1954
+ color: var(--theme-color);
1955
+ border: none;
1956
+ }
1957
+ button[data-variant=link]:hover {
1958
+ text-decoration: underline;
1959
+ }
1960
+ button[data-variant=destructive] {
1961
+ background: var(--danger);
1962
+ color: var(--white-fixed);
1963
+ border: 1px solid var(--danger);
1964
+ }
1965
+ button[data-variant=destructive]:hover {
1966
+ animation: vibrating 60ms infinite forwards;
1967
+ }
1968
+ button[data-shape=modern] {
1969
+ border-radius: var(--radius-sm);
1970
+ }
1971
+ button[data-shape=curved] {
1972
+ border-radius: var(--radius-md);
1973
+ }
1974
+ button[data-shape=round] {
1975
+ border-radius: var(--radius-full);
1976
+ }
1977
+ button[data-size=sm] {
1978
+ height: var(--height-sm);
1979
+ font-size: var(--text-sm);
1980
+ }
1981
+ button[data-size=md] {
1982
+ height: var(--height-md);
1983
+ font-size: var(--text-md);
1984
+ }
1985
+ button[data-size=bs] {
1986
+ height: var(--height-bs);
1987
+ font-size: var(--text-bs);
1988
+ }
1989
+ button[data-size=lg] {
1990
+ height: var(--height-lg);
1991
+ font-size: var(--text-bs);
1992
+ }
1993
+
1994
+ @keyframes vibrating {
1995
+ 0% {
1996
+ transform: scale(0);
1997
+ }
1998
+ 50% {
1999
+ transform: scale(1.03);
2000
+ }
2001
+ 100% {
2002
+ transform: scale(0);
2003
+ }
2004
+ }
2005
+ a.primary {
2006
+ background: var(--theme-color);
2007
+ font-size: var(--text-lg);
2008
+ color: var(--white-fixed);
2009
+ height: 40px;
2010
+ align-items: center;
2011
+ justify-content: center;
2012
+ display: flex;
2013
+ min-width: 6rem;
2014
+ box-shadow: var(--shadow-sm);
2015
+ transition: box-shadow var(--motionin1);
2016
+ }
2017
+ a.primary.modern {
2018
+ border-radius: var(--space-xs);
2019
+ }
2020
+ a.primary:hover {
2021
+ box-shadow: var(--shadow-bs);
2022
+ }
2023
+
2024
+ a.outline {
2025
+ background: transparent;
2026
+ font-size: var(--text-lg);
2027
+ color: var(--text-primary);
2028
+ align-items: center;
2029
+ justify-content: center;
2030
+ display: flex;
2031
+ min-width: 6rem;
2032
+ height: 40px;
2033
+ box-shadow: var(--shadow-sm);
2034
+ border: 1px solid var(--text-primary);
2035
+ transition: box-shadow var(--motionin1);
2036
+ }
2037
+ a.outline.modern {
2038
+ border-radius: var(--space-xs);
2039
+ }
2040
+ a.outline:hover {
2041
+ box-shadow: var(--shadow-bs);
2042
+ }
2043
+
2044
+ .bg {
2045
+ background: var(--bg);
2046
+ }
2047
+
2048
+ .surface {
2049
+ background: var(--bg-surface);
2050
+ }
2051
+
2052
+ .panel {
2053
+ background: var(--bg-panel);
2054
+ }
2055
+
2056
+ .sunken {
2057
+ background: var(--bg-sunken);
2058
+ }
2059
+
2060
+ .raised {
2061
+ background: var(--bg-raised);
2062
+ }
2063
+
2064
+ .extra {
2065
+ background: var(--bg-extra);
2066
+ }
2067
+
2068
+ .text-primary {
2069
+ color: var(--text-primary);
2070
+ }
2071
+
2072
+ .text-secondary {
2073
+ color: var(--text-secondary);
2074
+ }
2075
+
2076
+ .text-muted {
2077
+ color: var(--text-muted);
2078
+ }
2079
+
2080
+ .text-inverse {
2081
+ color: var(--text-inverse);
2082
+ }
2083
+
2084
+ .text-white {
2085
+ color: var(--white-fixed);
2086
+ }
2087
+
2088
+ .text-black {
2089
+ color: var(--black-fixed);
2090
+ }
2091
+
2092
+ .text-theme {
2093
+ color: var(--theme-color);
2094
+ }
2095
+
2096
+ .text-success {
2097
+ color: var(--success);
2098
+ }
2099
+
2100
+ .text-warning {
2101
+ color: var(--warning);
2102
+ }
2103
+
2104
+ .text-danger {
2105
+ color: var(--danger);
2106
+ }
2107
+
2108
+ .text-info {
2109
+ color: var(--info);
2110
+ }
2111
+
2112
+ .bg-success {
2113
+ background: var(--success);
2114
+ }
2115
+
2116
+ .bg-warning {
2117
+ background: var(--warning);
2118
+ }
2119
+
2120
+ .bg-danger {
2121
+ background: var(--danger);
2122
+ }
2123
+
2124
+ .bg-info {
2125
+ background: var(--info);
2126
+ }
2127
+
2128
+ .border {
2129
+ border: 1px solid var(--border);
2130
+ }
2131
+
2132
+ .border-subtle {
2133
+ border: 1px solid var(--border-subtle);
2134
+ }
2135
+
2136
+ .border-strong {
2137
+ border: 1px solid var(--border-strong);
2138
+ }
2139
+
2140
+ .bt {
2141
+ border-top: 1px solid var(--border);
2142
+ }
2143
+
2144
+ .br {
2145
+ border-right: 1px solid var(--border);
2146
+ }
2147
+
2148
+ .bb {
2149
+ border-bottom: 1px solid var(--border);
2150
+ }
2151
+
2152
+ .bl {
2153
+ border-left: 1px solid var(--border);
2154
+ }
2155
+
2156
+ .bt-str {
2157
+ border-top: 1px solid var(--border-strong);
2158
+ }
2159
+
2160
+ .br-str {
2161
+ border-right: 1px solid var(--border-strong);
2162
+ }
2163
+
2164
+ .bb-str {
2165
+ border-bottom: 1px solid var(--border-strong);
2166
+ }
2167
+
2168
+ .bl-str {
2169
+ border-left: 1px solid var(--border-strong);
2170
+ }
2171
+
2172
+ .bt-sub {
2173
+ border-top: 1px solid var(--border-subtle);
2174
+ }
2175
+
2176
+ .br-sub {
2177
+ border-right: 1px solid var(--border-subtle);
2178
+ }
2179
+
2180
+ .bb-sub {
2181
+ border-bottom: 1px solid var(--border-subtle);
2182
+ }
2183
+
2184
+ .bl-sub {
2185
+ border-left: 1px solid var(--border-subtle);
2186
+ }
2187
+
2188
+ .shadow-xs {
2189
+ box-shadow: var(--shadow-xs);
2190
+ }
2191
+
2192
+ .shadow-sm {
2193
+ box-shadow: var(--shadow-sm);
2194
+ }
2195
+
2196
+ .shadow-md {
2197
+ box-shadow: var(--shadow-md);
2198
+ }
2199
+
2200
+ .shadow-bs {
2201
+ box-shadow: var(--shadow-bs);
2202
+ }
2203
+
2204
+ .shadow-lg {
2205
+ box-shadow: var(--shadow-lg);
2206
+ }
2207
+
2208
+ .shadow-xl {
2209
+ box-shadow: var(--shadow-xl);
2210
+ }
2211
+
2212
+ .shadow-2xl {
2213
+ box-shadow: var(--shadow-2xl);
2214
+ }
2215
+
2216
+ .shadow-3xl {
2217
+ box-shadow: var(--shadow-3xl);
2218
+ }
2219
+
2220
+ @media (max-width: 1024px) {
2221
+ .hide-mobile {
2222
+ display: none;
2223
+ }
2224
+ }
2225
+
2226
+ @media (min-width: 1025px) {
2227
+ .hide-desktop {
2228
+ display: none;
2229
+ }
2230
+ }
2231
+
2232
+ .orange1 {
2233
+ color: var(--orangepop1);
2234
+ }
2235
+
2236
+ .orange2 {
2237
+ color: var(--orangepop2);
2238
+ }
2239
+
2240
+ .orange3 {
2241
+ color: var(--orangepop3);
2242
+ }
2243
+
2244
+ .orange4 {
2245
+ color: var(--orangepop4);
2246
+ }
2247
+
2248
+ .orange5 {
2249
+ color: var(--orangepop5);
2250
+ }
2251
+
2252
+ .orange6 {
2253
+ color: var(--orangepop6);
2254
+ }
2255
+
2256
+ .site-logomotif {
2257
+ height: 48px;
2258
+ transform-origin: center center;
2259
+ transition: transform 210ms var(--transin2);
2260
+ }
2261
+ .site-logomotif:hover {
2262
+ transform: scale(1.2);
2263
+ }
2264
+
2265
+ .logotype {
2266
+ height: 28px;
2267
+ }
2268
+
2269
+ .project-circle {
2270
+ border-radius: 24px;
2271
+ width: 16px;
2272
+ height: 16px;
2273
+ }
2274
+
2275
+ .mascot {
2276
+ display: inline-block;
2277
+ position: relative;
2278
+ flex: none;
2279
+ line-height: 0;
2280
+ perspective: var(--mascot-persp, 400px);
2281
+ }
2282
+
2283
+ .mascot-bob,
2284
+ .mascot-tilt {
2285
+ display: block;
2286
+ }
2287
+
2288
+ .mascot-bobs .mascot-bob {
2289
+ animation: mascot-bob 3.6s ease-in-out infinite alternate;
2290
+ }
2291
+
2292
+ .mascot-tilt {
2293
+ position: relative;
2294
+ transform: rotateX(var(--mascot-rx, 0deg)) rotateY(var(--mascot-ry, 0deg));
2295
+ will-change: transform;
2296
+ }
2297
+
2298
+ .mascot-base {
2299
+ display: block;
2300
+ user-select: none;
2301
+ -webkit-user-drag: none;
2302
+ }
2303
+
2304
+ .mascot-overlay {
2305
+ position: absolute;
2306
+ inset: 0;
2307
+ width: 100%;
2308
+ height: 100%;
2309
+ overflow: visible;
2310
+ pointer-events: none;
2311
+ }
2312
+
2313
+ .mascot-mask {
2314
+ mask-type: alpha;
2315
+ }
2316
+
2317
+ .mascot-pupil-l {
2318
+ transform: translate(calc(var(--mascot-plx, 0) * 1px), calc(var(--mascot-ply, 0) * 1px));
2319
+ }
2320
+
2321
+ .mascot-pupil-r {
2322
+ transform: translate(calc(var(--mascot-prx, 0) * 1px), calc(var(--mascot-pry, 0) * 1px));
2323
+ }
2324
+
2325
+ .mascot-gloss {
2326
+ opacity: 0.42;
2327
+ transform: translate(calc(var(--mascot-gx, 400) * 1px), calc(var(--mascot-gy, 400) * 1px));
2328
+ }
2329
+
2330
+ .mascot-shade {
2331
+ opacity: 0.55;
2332
+ transform: translate(calc((1024 - var(--mascot-gx, 400)) * 1px), calc((1120 - var(--mascot-gy, 400)) * 1px));
2333
+ }
2334
+
2335
+ .mascot-blinks .mascot-lid {
2336
+ animation: mascot-blink 5.2s ease-in-out infinite;
2337
+ }
2338
+
2339
+ @keyframes mascot-blink {
2340
+ 0%, 93%, 100% {
2341
+ transform: translateY(0);
2342
+ }
2343
+ 96% {
2344
+ transform: translateY(232px);
2345
+ }
2346
+ }
2347
+ @keyframes mascot-bob {
2348
+ from {
2349
+ transform: translateY(0);
2350
+ }
2351
+ to {
2352
+ transform: translateY(-3%);
2353
+ }
2354
+ }
2355
+ @media (prefers-reduced-motion: reduce) {
2356
+ .mascot-bobs .mascot-bob,
2357
+ .mascot-blinks .mascot-lid {
2358
+ animation: none;
2359
+ }
2360
+ .mascot-tilt {
2361
+ transform: none;
2362
+ }
2363
+ }
2364
+ .mascotgl {
2365
+ display: inline-block;
2366
+ position: relative;
2367
+ flex: none;
2368
+ line-height: 0;
2369
+ }
2370
+
2371
+ .mascotgl-spacer {
2372
+ display: block;
2373
+ }
2374
+
2375
+ .mascotgl-canvas {
2376
+ position: absolute;
2377
+ left: 50%;
2378
+ top: 50%;
2379
+ width: 160%;
2380
+ height: 160%;
2381
+ transform: translate(-50%, -50%);
2382
+ pointer-events: none;
2383
+ opacity: 0;
2384
+ }
2385
+
2386
+ .mascotgl-ready {
2387
+ opacity: 1;
2388
+ }
2389
+
2390
+ .mascotgl-compact .mascotgl-canvas {
2391
+ width: 130%;
2392
+ height: 130%;
2393
+ }
2394
+
2395
+ h3, h2, h1 {
2396
+ font-weight: 600;
2397
+ }
2398
+
2399
+ .hero-name {
2400
+ font-weight: 800;
2401
+ font-size: calc(var(--text-5xl) * 2);
2402
+ letter-spacing: -0.2rem;
2403
+ }
2404
+
2405
+ .accordion {
2406
+ display: flex;
2407
+ flex-direction: column;
2408
+ gap: var(--space-xs);
2409
+ }
2410
+
2411
+ .accordion-item {
2412
+ border: 1px solid var(--border);
2413
+ border-radius: var(--radius-md);
2414
+ background: var(--bg-surface);
2415
+ }
2416
+ .accordion-item .accordion-content {
2417
+ display: grid;
2418
+ grid-template-rows: 0fr;
2419
+ padding: 0;
2420
+ transition: grid-template-rows var(--speed2) var(--transout1);
2421
+ }
2422
+ .accordion-item .accordion-panel {
2423
+ overflow: hidden;
2424
+ min-height: 0;
2425
+ }
2426
+ .accordion-item.open .accordion-content {
2427
+ grid-template-rows: 1fr;
2428
+ padding: var(--space-xs);
2429
+ }
2430
+
2431
+ .accordion-trigger {
2432
+ display: flex;
2433
+ flex-direction: row;
2434
+ align-items: center;
2435
+ justify-content: space-between;
2436
+ width: 100%;
2437
+ min-height: var(--control-h-md);
2438
+ padding: var(--space-xs);
2439
+ font-weight: 500;
2440
+ font-size: var(--text-sm);
2441
+ text-align: left;
2442
+ background: transparent;
2443
+ border: 0;
2444
+ cursor: pointer;
2445
+ user-select: none;
2446
+ }
2447
+ .accordion-trigger:hover {
2448
+ background: var(--bg-raised);
2449
+ }
2450
+ .accordion-trigger:focus-visible {
2451
+ outline: 2px solid var(--ring);
2452
+ outline-offset: -2px;
2453
+ }