@unsetsoft/ryunixjs 1.2.5-canary.11 → 1.2.5-canary.13

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,834 @@
1
+ /**
2
+ * Ryunix global semantic styles.
3
+ * Light theme: html (no .dark). Dark theme: html.dark
4
+ * Opt-out: data-ryx-unstyled on a node or unstyled prop (MDX components).
5
+ */
6
+
7
+ /* --- Design tokens: shared (both themes) --- */
8
+ html {
9
+ --ryx-font-sans:
10
+ system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,
11
+ sans-serif;
12
+ --ryx-font-mono:
13
+ ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',
14
+ 'Courier New', monospace;
15
+ --ryx-space-1: 0.25rem;
16
+ --ryx-space-2: 0.5rem;
17
+ --ryx-space-3: 0.75rem;
18
+ --ryx-space-4: 1rem;
19
+ --ryx-space-5: 1.25rem;
20
+ --ryx-space-6: 1.5rem;
21
+ --ryx-space-8: 2rem;
22
+ --ryx-radius-sm: 0.25rem;
23
+ --ryx-radius-md: 0.375rem;
24
+ --ryx-radius-lg: 0.5rem;
25
+ --ryx-radius-xl: 0.75rem;
26
+ --ryx-page-padding: 1.5rem;
27
+ --ryx-content-max-width: 72rem;
28
+ --ryx-tracking: 0.012em;
29
+ }
30
+
31
+ /* --- Design tokens: light --- */
32
+ html:not(.dark) {
33
+ color-scheme: light;
34
+ --ryx-bg: #fafafa;
35
+ --ryx-text: #18181b;
36
+ --ryx-text-muted: #52525b;
37
+ --ryx-text-subtle: #71717a;
38
+ --ryx-border: #e4e4e7;
39
+ --ryx-border-strong: #d4d4d8;
40
+ --ryx-surface: #ffffff;
41
+ --ryx-surface-elevated: #f4f4f5;
42
+ --ryx-link: #2563eb;
43
+ --ryx-link-hover: #1d4ed8;
44
+ --ryx-accent: #7c3aed;
45
+ --ryx-info: #2563eb;
46
+ --ryx-success: #059669;
47
+ --ryx-warning: #d97706;
48
+ --ryx-error: #dc2626;
49
+ --ryx-code-bg: #f4f4f5;
50
+ --ryx-code-text: #7c3aed;
51
+ --ryx-pre-bg: #f4f4f5;
52
+ --ryx-pre-border: #e4e4e7;
53
+ --ryx-focus-ring: #2563eb;
54
+ }
55
+
56
+ /* --- Design tokens: dark --- */
57
+ html.dark {
58
+ color-scheme: dark;
59
+ --ryx-bg: #09090b;
60
+ --ryx-text: #fafafa;
61
+ --ryx-text-muted: #a1a1aa;
62
+ --ryx-text-subtle: #71717a;
63
+ --ryx-border: #27272a;
64
+ --ryx-border-strong: #3f3f46;
65
+ --ryx-surface: #111113;
66
+ --ryx-surface-elevated: #1c1c1f;
67
+ --ryx-link: #60a5fa;
68
+ --ryx-link-hover: #93c5fd;
69
+ --ryx-accent: #a78bfa;
70
+ --ryx-info: #3b82f6;
71
+ --ryx-success: #34d399;
72
+ --ryx-warning: #fbbf24;
73
+ --ryx-error: #f87171;
74
+ --ryx-code-bg: #1c1c1f;
75
+ --ryx-code-text: #c4b5fd;
76
+ --ryx-pre-bg: #0f0f11;
77
+ --ryx-pre-border: #3f3f46;
78
+ --ryx-focus-ring: #60a5fa;
79
+ }
80
+
81
+ /* --- Opt-out: revert framework styles inside unstyled subtrees --- */
82
+ html:not(.dark) [data-ryx-unstyled],
83
+ html:not(.dark) [data-ryx-unstyled] *,
84
+ html.dark [data-ryx-unstyled],
85
+ html.dark [data-ryx-unstyled] * {
86
+ all: revert;
87
+ box-sizing: border-box;
88
+ }
89
+
90
+ /* --- Base document --- */
91
+ html:not(.dark),
92
+ html.dark {
93
+ min-height: 100%;
94
+ background-color: var(--ryx-bg);
95
+ }
96
+
97
+ html:not(.dark) body,
98
+ html.dark body {
99
+ font-family: var(--ryx-font-sans);
100
+ background-color: var(--ryx-bg);
101
+ color: var(--ryx-text);
102
+ line-height: 1.65;
103
+ letter-spacing: var(--ryx-tracking);
104
+ font-kerning: normal;
105
+ font-feature-settings:
106
+ 'kern' 1,
107
+ 'liga' 1,
108
+ 'calt' 1;
109
+ min-height: 100%;
110
+ margin: 0;
111
+ padding: 0;
112
+ -webkit-font-smoothing: antialiased;
113
+ -moz-osx-font-smoothing: grayscale;
114
+ }
115
+
116
+ /* Page padding lives on Main (`.ryx-main-inner`), not on body */
117
+ html:not(.dark) body:not(:has(.ryx-main)),
118
+ html.dark body:not(:has(.ryx-main)) {
119
+ padding: var(--ryx-page-padding);
120
+ }
121
+
122
+ html:not(.dark) #__ryunix,
123
+ html.dark #__ryunix {
124
+ min-height: 100%;
125
+ }
126
+
127
+ html:not(.dark) main:not(.ryx-main),
128
+ html.dark main:not(.ryx-main) {
129
+ max-width: var(--ryx-content-max-width);
130
+ margin-inline: auto;
131
+ }
132
+
133
+ html:not(.dark) .ryx-page-toolbar,
134
+ html.dark .ryx-page-toolbar {
135
+ display: flex;
136
+ justify-content: flex-end;
137
+ align-items: center;
138
+ gap: var(--ryx-space-4);
139
+ max-width: var(--ryx-content-max-width);
140
+ margin-inline: auto;
141
+ margin-block-end: var(--ryx-space-6);
142
+ }
143
+
144
+ @media (prefers-reduced-motion: reduce) {
145
+ html:not(.dark) *,
146
+ html.dark * {
147
+ animation-duration: 0.01ms !important;
148
+ animation-iteration-count: 1 !important;
149
+ transition-duration: 0.01ms !important;
150
+ }
151
+ }
152
+
153
+ /* --- Headings --- */
154
+ html:not(.dark) h1,
155
+ html.dark h1 {
156
+ font-size: clamp(1.75rem, 4vw, 2.25rem);
157
+ font-weight: 700;
158
+ line-height: 1.2;
159
+ color: var(--ryx-text);
160
+ margin-block: 0 1.5rem;
161
+ letter-spacing: -0.02em;
162
+ text-wrap: balance;
163
+ scroll-margin-block-start: 5rem;
164
+ }
165
+
166
+ html:not(.dark) h2,
167
+ html.dark h2 {
168
+ font-size: 1.5rem;
169
+ font-weight: 600;
170
+ line-height: 1.3;
171
+ color: var(--ryx-text);
172
+ margin-block: 2rem 1rem;
173
+ padding-block-end: 0.5rem;
174
+ border-block-end: 1px solid var(--ryx-border);
175
+ scroll-margin-block-start: 5rem;
176
+ text-wrap: balance;
177
+ }
178
+
179
+ html:not(.dark) h3,
180
+ html.dark h3 {
181
+ font-size: 1.25rem;
182
+ font-weight: 600;
183
+ line-height: 1.35;
184
+ color: var(--ryx-text);
185
+ margin-block: 1.5rem 0.75rem;
186
+ scroll-margin-block-start: 5rem;
187
+ }
188
+
189
+ html:not(.dark) h4,
190
+ html.dark h4 {
191
+ font-size: 1.125rem;
192
+ font-weight: 500;
193
+ color: var(--ryx-text-muted);
194
+ margin-block: 1.25rem 0.5rem;
195
+ }
196
+
197
+ html:not(.dark) h5,
198
+ html.dark h5 {
199
+ font-size: 1rem;
200
+ font-weight: 600;
201
+ color: var(--ryx-text-muted);
202
+ margin-block: 1rem 0.5rem;
203
+ }
204
+
205
+ html:not(.dark) h6,
206
+ html.dark h6 {
207
+ font-size: 0.875rem;
208
+ font-weight: 600;
209
+ color: var(--ryx-text-subtle);
210
+ margin-block: 1rem 0.5rem;
211
+ text-transform: uppercase;
212
+ letter-spacing: 0.05em;
213
+ }
214
+
215
+ /* --- Text --- */
216
+ html:not(.dark) p,
217
+ html.dark p {
218
+ margin-block: 1rem;
219
+ color: var(--ryx-text-muted);
220
+ max-inline-size: 70ch;
221
+ text-wrap: pretty;
222
+ line-height: 1.7;
223
+ }
224
+
225
+ html:not(.dark) a,
226
+ html.dark a {
227
+ color: var(--ryx-link);
228
+ text-decoration: underline;
229
+ text-underline-offset: 2px;
230
+ font-weight: 500;
231
+ }
232
+
233
+ html:not(.dark) a:hover,
234
+ html.dark a:hover {
235
+ color: var(--ryx-link-hover);
236
+ }
237
+
238
+ html:not(.dark) a:focus-visible,
239
+ html.dark a:focus-visible,
240
+ html:not(.dark) button:focus-visible,
241
+ html.dark button:focus-visible,
242
+ html:not(.dark) input:focus-visible,
243
+ html.dark input:focus-visible,
244
+ html:not(.dark) textarea:focus-visible,
245
+ html.dark textarea:focus-visible,
246
+ html:not(.dark) select:focus-visible,
247
+ html.dark select:focus-visible {
248
+ outline: 2px solid var(--ryx-focus-ring);
249
+ outline-offset: 2px;
250
+ }
251
+
252
+ html:not(.dark) strong,
253
+ html:not(.dark) b,
254
+ html.dark strong,
255
+ html.dark b {
256
+ font-weight: 600;
257
+ color: var(--ryx-text);
258
+ }
259
+
260
+ html:not(.dark) em,
261
+ html:not(.dark) i,
262
+ html.dark em,
263
+ html.dark i {
264
+ font-style: italic;
265
+ }
266
+
267
+ html:not(.dark) mark,
268
+ html.dark mark {
269
+ background: color-mix(in srgb, var(--ryx-warning) 35%, transparent);
270
+ color: var(--ryx-text);
271
+ padding: 0.1em 0.25em;
272
+ border-radius: var(--ryx-radius-sm);
273
+ }
274
+
275
+ html:not(.dark) kbd,
276
+ html.dark kbd {
277
+ font-family: var(--ryx-font-mono);
278
+ font-size: 0.85em;
279
+ padding: 0.15em 0.45em;
280
+ border: 1px solid var(--ryx-border-strong);
281
+ border-block-end-width: 2px;
282
+ border-radius: var(--ryx-radius-sm);
283
+ background: var(--ryx-surface-elevated);
284
+ color: var(--ryx-text);
285
+ }
286
+
287
+ html:not(.dark) samp,
288
+ html:not(.dark) var,
289
+ html.dark samp,
290
+ html.dark var {
291
+ font-family: var(--ryx-font-mono);
292
+ font-size: 0.9em;
293
+ color: var(--ryx-code-text);
294
+ }
295
+
296
+ html:not(.dark) abbr[title],
297
+ html.dark abbr[title] {
298
+ text-decoration: underline dotted;
299
+ cursor: help;
300
+ }
301
+
302
+ html:not(.dark) address,
303
+ html.dark address {
304
+ font-style: normal;
305
+ color: var(--ryx-text-muted);
306
+ margin-block: 1rem;
307
+ }
308
+
309
+ /* --- Navigation --- */
310
+ html:not(.dark) nav ul,
311
+ html.dark nav ul {
312
+ display: flex;
313
+ flex-wrap: wrap;
314
+ gap: var(--ryx-space-4);
315
+ list-style: none;
316
+ padding: 0;
317
+ margin-block: 1rem;
318
+ }
319
+
320
+ html:not(.dark) nav li,
321
+ html.dark nav li {
322
+ margin: 0;
323
+ }
324
+
325
+ html:not(.dark) nav li::marker,
326
+ html.dark nav li::marker {
327
+ content: none;
328
+ }
329
+
330
+ /* --- Definition lists --- */
331
+ html:not(.dark) dl,
332
+ html.dark dl {
333
+ margin-block: 1rem;
334
+ color: var(--ryx-text-muted);
335
+ }
336
+
337
+ html:not(.dark) dt,
338
+ html.dark dt {
339
+ font-weight: 600;
340
+ color: var(--ryx-text);
341
+ margin-block-start: 0.75rem;
342
+ }
343
+
344
+ html:not(.dark) dd,
345
+ html.dark dd {
346
+ margin-inline-start: 1rem;
347
+ margin-block: 0.25rem 0.5rem;
348
+ }
349
+
350
+ /* --- Lists --- */
351
+ html:not(.dark) ul,
352
+ html:not(.dark) ol,
353
+ html.dark ul,
354
+ html.dark ol {
355
+ margin-block: 1rem;
356
+ padding-inline-start: 1.5rem;
357
+ color: var(--ryx-text-muted);
358
+ }
359
+
360
+ html:not(.dark) li,
361
+ html.dark li {
362
+ margin-block: 0.35rem;
363
+ line-height: 1.6;
364
+ }
365
+
366
+ html:not(.dark) li::marker,
367
+ html.dark li::marker {
368
+ color: var(--ryx-link);
369
+ }
370
+
371
+ /* --- Blockquote --- */
372
+ html:not(.dark) blockquote:not(.ryx-alert),
373
+ html.dark blockquote:not(.ryx-alert) {
374
+ margin-block: 1.5rem;
375
+ padding: 1rem 1.25rem;
376
+ border-inline-start: 4px solid var(--ryx-accent);
377
+ background: color-mix(in srgb, var(--ryx-accent) 8%, transparent);
378
+ border-radius: 0 var(--ryx-radius-lg) var(--ryx-radius-lg) 0;
379
+ }
380
+
381
+ html:not(.dark) blockquote:not(.ryx-alert) p,
382
+ html.dark blockquote:not(.ryx-alert) p {
383
+ margin-block: 0;
384
+ color: var(--ryx-text);
385
+ font-style: italic;
386
+ }
387
+
388
+ /* --- GitHub-style alerts (MDX) --- */
389
+ html:not(.dark) blockquote.ryx-alert,
390
+ html.dark blockquote.ryx-alert {
391
+ --ryx-alert-tint: 10%;
392
+ --ryx-alert-border-mix: 32%;
393
+
394
+ display: grid;
395
+ grid-template-columns: 1rem 1fr;
396
+ column-gap: 0.625rem;
397
+ row-gap: 0.375rem;
398
+ align-items: center;
399
+ margin-block: 1rem;
400
+ padding: 0.875rem 1rem;
401
+ border: 1px solid
402
+ color-mix(
403
+ in srgb,
404
+ var(--ryx-alert-accent) var(--ryx-alert-border-mix),
405
+ var(--ryx-border)
406
+ );
407
+ border-inline-start: 4px solid var(--ryx-alert-accent);
408
+ border-radius: var(--ryx-radius-lg);
409
+ background: color-mix(
410
+ in srgb,
411
+ var(--ryx-alert-accent) var(--ryx-alert-tint),
412
+ var(--ryx-surface)
413
+ );
414
+ font-style: normal;
415
+ box-shadow: 0 1px 2px rgb(15 23 42 / 0.05);
416
+ }
417
+
418
+ html.dark blockquote.ryx-alert {
419
+ --ryx-alert-tint: 14%;
420
+ --ryx-alert-border-mix: 38%;
421
+ box-shadow:
422
+ 0 1px 2px rgb(0 0 0 / 0.3),
423
+ inset 0 1px 0 rgb(255 255 255 / 0.04);
424
+ }
425
+
426
+ html:not(.dark) blockquote.ryx-alert::before,
427
+ html.dark blockquote.ryx-alert::before {
428
+ content: '';
429
+ grid-column: 1;
430
+ grid-row: 1;
431
+ inline-size: 1rem;
432
+ block-size: 1rem;
433
+ background-color: var(--ryx-alert-accent);
434
+ mask-image: var(--ryx-alert-icon);
435
+ mask-repeat: no-repeat;
436
+ mask-size: contain;
437
+ mask-position: center;
438
+ -webkit-mask-image: var(--ryx-alert-icon);
439
+ -webkit-mask-repeat: no-repeat;
440
+ -webkit-mask-size: contain;
441
+ -webkit-mask-position: center;
442
+ }
443
+
444
+ html:not(.dark) blockquote.ryx-alert::after,
445
+ html.dark blockquote.ryx-alert::after {
446
+ content: var(--ryx-alert-label);
447
+ grid-column: 2;
448
+ grid-row: 1;
449
+ font-size: 0.8125rem;
450
+ font-weight: 650;
451
+ line-height: 1.25;
452
+ letter-spacing: 0.01em;
453
+ color: var(--ryx-alert-accent);
454
+ }
455
+
456
+ html:not(.dark) blockquote.ryx-alert p,
457
+ html.dark blockquote.ryx-alert p {
458
+ grid-column: 1 / -1;
459
+ grid-row: 2;
460
+ margin-block: 0;
461
+ padding-inline-start: calc(1rem + 0.625rem);
462
+ font-style: normal;
463
+ font-size: 0.9375rem;
464
+ line-height: 1.6;
465
+ color: var(--ryx-text-muted);
466
+ }
467
+
468
+ html:not(.dark) blockquote.ryx-alert--note,
469
+ html.dark blockquote.ryx-alert--note {
470
+ --ryx-alert-accent: var(--ryx-info);
471
+ --ryx-alert-label: 'Note';
472
+ --ryx-alert-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23000' d='M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1Zm-.75 3.5a.75.75 0 1 1 1.5 0 .75.75 0 0 1-1.5 0ZM7.75 8.25v4.5a.75.75 0 0 0 1.5 0v-4.5a.75.75 0 0 0-1.5 0Z'/%3E%3C/svg%3E");
473
+ }
474
+
475
+ html:not(.dark) blockquote.ryx-alert--tip,
476
+ html.dark blockquote.ryx-alert--tip {
477
+ --ryx-alert-accent: var(--ryx-success);
478
+ --ryx-alert-label: 'Tip';
479
+ --ryx-alert-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23000' d='M8 1.5A3.5 3.5 0 0 0 4.5 5c0 1.59.92 2.97 2.26 3.63a.75.75 0 0 1 .49.7V11a.75.75 0 0 0 .75.75h1.5a.75.75 0 0 0 .75-.75v-1.67a.75.75 0 0 1 .49-.7A3.5 3.5 0 0 0 8 1.5ZM6.5 12.25v.25a.75.75 0 0 0 .75.75h1.5a.75.75 0 0 0 .75-.75v-.25H6.5Z'/%3E%3C/svg%3E");
480
+ }
481
+
482
+ html:not(.dark) blockquote.ryx-alert--important,
483
+ html.dark blockquote.ryx-alert--important {
484
+ --ryx-alert-accent: var(--ryx-accent);
485
+ --ryx-alert-label: 'Important';
486
+ --ryx-alert-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23000' d='M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13Zm-.75 3.25a.75.75 0 1 1 1.5 0v3.5a.75.75 0 0 1-1.5 0v-3.5Zm0 6a.75.75 0 1 1 1.5 0 .75.75 0 0 1-1.5 0Z'/%3E%3C/svg%3E");
487
+ }
488
+
489
+ html:not(.dark) blockquote.ryx-alert--warning,
490
+ html.dark blockquote.ryx-alert--warning {
491
+ --ryx-alert-accent: var(--ryx-warning);
492
+ --ryx-alert-label: 'Warning';
493
+ --ryx-alert-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23000' d='M8.982 1.566a1.13 1.13 0 0 0-1.964 0L1.075 13.225a1.13 1.13 0 0 0 .982 1.691h11.886a1.13 1.13 0 0 0 .982-1.691L8.982 1.566ZM8 5.5a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 5.5Zm0 7a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5Z'/%3E%3C/svg%3E");
494
+ }
495
+
496
+ html:not(.dark) blockquote.ryx-alert--caution,
497
+ html.dark blockquote.ryx-alert--caution {
498
+ --ryx-alert-accent: var(--ryx-error);
499
+ --ryx-alert-label: 'Caution';
500
+ --ryx-alert-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23000' d='M2.343 2.343A8 8 0 1 1 13.657 13.657 8 8 0 0 1 2.343 2.343ZM8 4.75a.75.75 0 0 0-.75.75v3.5a.75.75 0 0 0 1.5 0v-3.5A.75.75 0 0 0 8 4.75Zm0 7a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z'/%3E%3C/svg%3E");
501
+ }
502
+
503
+ /* --- HR --- */
504
+ html:not(.dark) hr,
505
+ html.dark hr {
506
+ border: none;
507
+ block-size: 1px;
508
+ background: linear-gradient(
509
+ to right,
510
+ transparent,
511
+ var(--ryx-border-strong),
512
+ transparent
513
+ );
514
+ margin-block: 2rem;
515
+ }
516
+
517
+ /* --- Code --- */
518
+ html:not(.dark) :not(pre) > code,
519
+ html.dark :not(pre) > code {
520
+ font-family: var(--ryx-font-mono);
521
+ font-size: 0.9em;
522
+ padding: 0.15em 0.4em;
523
+ background: var(--ryx-code-bg);
524
+ color: var(--ryx-code-text);
525
+ border: 1px solid var(--ryx-border);
526
+ border-radius: var(--ryx-radius-sm);
527
+ }
528
+
529
+ html:not(.dark) pre,
530
+ html.dark pre {
531
+ font-family: var(--ryx-font-mono);
532
+ font-size: 0.875rem;
533
+ line-height: 1.6;
534
+ background: var(--ryx-pre-bg);
535
+ border: 1px solid var(--ryx-pre-border);
536
+ border-radius: var(--ryx-radius-lg);
537
+ padding: 1rem 1.25rem;
538
+ overflow-x: auto;
539
+ margin-block: 1.5rem;
540
+ }
541
+
542
+ html:not(.dark) pre code,
543
+ html.dark pre code {
544
+ background: transparent;
545
+ border: none;
546
+ padding: 0;
547
+ color: inherit;
548
+ font-size: inherit;
549
+ }
550
+
551
+ /* --- Tables --- */
552
+ html:not(.dark) table,
553
+ html.dark table {
554
+ inline-size: 100%;
555
+ border-collapse: separate;
556
+ border-spacing: 0;
557
+ margin-block: 1.5rem;
558
+ font-size: 0.875rem;
559
+ line-height: 1.5;
560
+ border: 1px solid var(--ryx-border);
561
+ border-radius: var(--ryx-radius-lg);
562
+ background: var(--ryx-surface);
563
+ box-shadow: 0 1px 2px rgb(15 23 42 / 0.04);
564
+ overflow: hidden;
565
+ }
566
+
567
+ html.dark table {
568
+ box-shadow:
569
+ 0 1px 2px rgb(0 0 0 / 0.35),
570
+ inset 0 1px 0 rgb(255 255 255 / 0.04);
571
+ }
572
+
573
+ html:not(.dark) caption,
574
+ html.dark caption {
575
+ caption-side: top;
576
+ padding: 0.875rem 1rem;
577
+ text-align: start;
578
+ font-size: 0.8125rem;
579
+ font-weight: 600;
580
+ letter-spacing: 0.02em;
581
+ color: var(--ryx-text);
582
+ background: color-mix(
583
+ in srgb,
584
+ var(--ryx-accent) 6%,
585
+ var(--ryx-surface-elevated)
586
+ );
587
+ border-block-end: 1px solid var(--ryx-border);
588
+ }
589
+
590
+ html:not(.dark) thead,
591
+ html.dark thead {
592
+ background: var(--ryx-surface-elevated);
593
+ }
594
+
595
+ html:not(.dark) th,
596
+ html.dark th {
597
+ padding: 0.75rem 1rem;
598
+ text-align: start;
599
+ font-size: 0.75rem;
600
+ font-weight: 650;
601
+ letter-spacing: 0.06em;
602
+ text-transform: uppercase;
603
+ color: var(--ryx-text-subtle);
604
+ border-block-end: 1px solid var(--ryx-border-strong);
605
+ white-space: nowrap;
606
+ }
607
+
608
+ html:not(.dark) td,
609
+ html.dark td {
610
+ padding: 0.8125rem 1rem;
611
+ color: var(--ryx-text-muted);
612
+ border-block-end: 1px solid var(--ryx-border);
613
+ vertical-align: top;
614
+ }
615
+
616
+ html:not(.dark) tbody tr:last-child td,
617
+ html.dark tbody tr:last-child td {
618
+ border-block-end: none;
619
+ }
620
+
621
+ html:not(.dark) tbody tr:nth-child(even),
622
+ html.dark tbody tr:nth-child(even) {
623
+ background: color-mix(in srgb, var(--ryx-surface-elevated) 55%, transparent);
624
+ }
625
+
626
+ html:not(.dark) tbody tr:hover,
627
+ html.dark tbody tr:hover {
628
+ background: color-mix(
629
+ in srgb,
630
+ var(--ryx-accent) 7%,
631
+ var(--ryx-surface-elevated)
632
+ );
633
+ }
634
+
635
+ html:not(.dark) tbody td:first-child,
636
+ html.dark tbody td:first-child {
637
+ font-weight: 500;
638
+ color: var(--ryx-text);
639
+ }
640
+
641
+ html:not(.dark) tbody td code,
642
+ html.dark tbody td code {
643
+ font-size: 0.8125rem;
644
+ }
645
+
646
+ html:not(.dark) tfoot,
647
+ html.dark tfoot {
648
+ background: color-mix(
649
+ in srgb,
650
+ var(--ryx-surface-elevated) 80%,
651
+ var(--ryx-surface)
652
+ );
653
+ }
654
+
655
+ html:not(.dark) tfoot td,
656
+ html.dark tfoot td {
657
+ padding: 0.625rem 1rem;
658
+ border-block-end: none;
659
+ border-block-start: 1px solid var(--ryx-border-strong);
660
+ color: var(--ryx-text-subtle);
661
+ font-size: 0.8125rem;
662
+ font-style: italic;
663
+ }
664
+
665
+ @media (max-width: 640px) {
666
+ html:not(.dark) :is(section, article, .ryx-main-inner):has(> table),
667
+ html.dark :is(section, article, .ryx-main-inner):has(> table) {
668
+ overflow-x: auto;
669
+ -webkit-overflow-scrolling: touch;
670
+ }
671
+
672
+ html:not(.dark) table,
673
+ html.dark table {
674
+ min-inline-size: 28rem;
675
+ }
676
+ }
677
+
678
+ /* --- Media --- */
679
+ html:not(.dark) figure,
680
+ html.dark figure {
681
+ margin-block: 1.5rem;
682
+ }
683
+
684
+ html:not(.dark) figcaption,
685
+ html.dark figcaption {
686
+ margin-block-start: 0.5rem;
687
+ color: var(--ryx-text-subtle);
688
+ font-size: 0.875rem;
689
+ }
690
+
691
+ html:not(.dark) img,
692
+ html.dark img {
693
+ max-inline-size: 100%;
694
+ block-size: auto;
695
+ border-radius: var(--ryx-radius-md);
696
+ }
697
+
698
+ html:not(.dark) audio,
699
+ html:not(.dark) video,
700
+ html.dark audio,
701
+ html.dark video {
702
+ max-inline-size: 100%;
703
+ margin-block: 1rem;
704
+ border-radius: var(--ryx-radius-md);
705
+ }
706
+
707
+ /* --- Details --- */
708
+ html:not(.dark) details,
709
+ html.dark details {
710
+ margin-block: 1rem;
711
+ padding: var(--ryx-space-4);
712
+ border: 1px solid var(--ryx-border);
713
+ border-radius: var(--ryx-radius-lg);
714
+ background: var(--ryx-surface);
715
+ }
716
+
717
+ html:not(.dark) summary,
718
+ html.dark summary {
719
+ cursor: pointer;
720
+ font-weight: 600;
721
+ color: var(--ryx-text);
722
+ }
723
+
724
+ html:not(.dark) details[open] summary,
725
+ html.dark details[open] summary {
726
+ margin-block-end: var(--ryx-space-3);
727
+ }
728
+
729
+ /* --- Forms (native elements only) --- */
730
+ html:not(.dark) fieldset,
731
+ html.dark fieldset {
732
+ margin-block: 1.5rem;
733
+ padding: var(--ryx-space-4);
734
+ border: 1px solid var(--ryx-border);
735
+ border-radius: var(--ryx-radius-lg);
736
+ background: var(--ryx-surface);
737
+ }
738
+
739
+ html:not(.dark) legend,
740
+ html.dark legend {
741
+ font-weight: 600;
742
+ color: var(--ryx-text);
743
+ padding-inline: 0.35rem;
744
+ }
745
+
746
+ html:not(.dark) label,
747
+ html.dark label {
748
+ display: block;
749
+ font-size: 0.875rem;
750
+ font-weight: 500;
751
+ color: var(--ryx-text);
752
+ margin-block-end: 0.35rem;
753
+ }
754
+
755
+ html:not(.dark) label:has(input[type='checkbox']),
756
+ html:not(.dark) label:has(input[type='radio']),
757
+ html.dark label:has(input[type='checkbox']),
758
+ html.dark label:has(input[type='radio']) {
759
+ display: inline-flex;
760
+ align-items: center;
761
+ gap: 0.5rem;
762
+ margin-inline-end: 1rem;
763
+ margin-block-end: 0;
764
+ cursor: pointer;
765
+ }
766
+
767
+ html:not(.dark) input[type='checkbox'],
768
+ html:not(.dark) input[type='radio'],
769
+ html.dark input[type='checkbox'],
770
+ html.dark input[type='radio'] {
771
+ inline-size: auto;
772
+ min-block-size: auto;
773
+ accent-color: var(--ryx-link);
774
+ }
775
+
776
+ html:not(.dark) input[type='range'],
777
+ html.dark input[type='range'] {
778
+ padding: 0;
779
+ }
780
+
781
+ html:not(.dark) progress,
782
+ html:not(.dark) meter,
783
+ html.dark progress,
784
+ html.dark meter {
785
+ inline-size: 100%;
786
+ max-inline-size: 20rem;
787
+ block-size: 0.75rem;
788
+ margin-block: 0.5rem;
789
+ accent-color: var(--ryx-link);
790
+ }
791
+
792
+ html:not(.dark)
793
+ input:not([type='checkbox']):not([type='radio']):not([type='hidden']),
794
+ html:not(.dark) textarea,
795
+ html:not(.dark) select,
796
+ html.dark input:not([type='checkbox']):not([type='radio']):not([type='hidden']),
797
+ html.dark textarea,
798
+ html.dark select {
799
+ font-family: inherit;
800
+ font-size: 1rem;
801
+ color: var(--ryx-text);
802
+ background: var(--ryx-surface);
803
+ border: 1px solid var(--ryx-border-strong);
804
+ border-radius: var(--ryx-radius-md);
805
+ padding: 0.5rem 0.75rem;
806
+ min-block-size: 2.5rem;
807
+ inline-size: 100%;
808
+ max-inline-size: 100%;
809
+ }
810
+
811
+ html:not(.dark) button:not([class]),
812
+ html.dark button:not([class]) {
813
+ font-family: inherit;
814
+ font-size: 1rem;
815
+ font-weight: 500;
816
+ color: #fff;
817
+ background: var(--ryx-link);
818
+ border: none;
819
+ border-radius: var(--ryx-radius-md);
820
+ padding: 0.5rem 1rem;
821
+ min-block-size: 2.5rem;
822
+ cursor: pointer;
823
+ }
824
+
825
+ html:not(.dark) button:not([class]):hover,
826
+ html.dark button:not([class]):hover {
827
+ background: var(--ryx-link-hover);
828
+ }
829
+
830
+ html:not(.dark) button:not([class]):disabled,
831
+ html.dark button:not([class]):disabled {
832
+ opacity: 0.5;
833
+ cursor: not-allowed;
834
+ }