@leftium/nimble.css 0.1.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.
@@ -0,0 +1,618 @@
1
+ @layer nimble.reset, nimble.base, nimble.utilities;
2
+ @layer nimble.reset {
3
+ :where(*),
4
+ :where(*::before),
5
+ :where(*::after) {
6
+ box-sizing: border-box;
7
+ background-repeat: no-repeat;
8
+ }
9
+ :where(html) {
10
+ line-height: 1.5;
11
+ -webkit-text-size-adjust: 100%;
12
+ tab-size: 4;
13
+ }
14
+ :where(body) {
15
+ margin: 0;
16
+ }
17
+ :where(h1) {
18
+ font-size: 2em;
19
+ margin-block: 0.67em;
20
+ }
21
+ :where(hr) {
22
+ height: 0;
23
+ color: inherit;
24
+ }
25
+ :where(nav) :where(ol, ul) {
26
+ list-style-type: none;
27
+ padding: 0;
28
+ }
29
+ :where(pre) {
30
+ font-family: monospace, monospace;
31
+ font-size: 1em;
32
+ }
33
+ :where(abbr[title]) {
34
+ text-decoration: underline dotted;
35
+ }
36
+ :where(b, strong) {
37
+ font-weight: bolder;
38
+ }
39
+ :where(code, kbd, samp) {
40
+ font-family: monospace, monospace;
41
+ font-size: 1em;
42
+ }
43
+ :where(small) {
44
+ font-size: 80%;
45
+ }
46
+ :where(sub, sup) {
47
+ font-size: 75%;
48
+ line-height: 0;
49
+ position: relative;
50
+ vertical-align: baseline;
51
+ }
52
+ :where(sub) {
53
+ bottom: -0.25em;
54
+ }
55
+ :where(sup) {
56
+ top: -0.5em;
57
+ }
58
+ :where(iframe) {
59
+ border-style: none;
60
+ }
61
+ :where(table) {
62
+ border-collapse: collapse;
63
+ border-color: currentColor;
64
+ text-indent: 0;
65
+ }
66
+ :where(button, input, select, textarea) {
67
+ font: inherit;
68
+ letter-spacing: inherit;
69
+ }
70
+ :where(button, [type=button], [type=reset], [type=submit]) {
71
+ -webkit-appearance: button;
72
+ }
73
+ :where(fieldset) {
74
+ border: 1px solid #a0a0a0;
75
+ }
76
+ :where(progress) {
77
+ vertical-align: baseline;
78
+ }
79
+ :where(textarea) {
80
+ resize: vertical;
81
+ overflow: auto;
82
+ }
83
+ :where([type=search]) {
84
+ -webkit-appearance: textfield;
85
+ outline-offset: -2px;
86
+ }
87
+ :where(::-webkit-search-decoration) {
88
+ -webkit-appearance: none;
89
+ }
90
+ :where(::-webkit-inner-spin-button),
91
+ :where(::-webkit-outer-spin-button) {
92
+ height: auto;
93
+ }
94
+ :where(::-webkit-file-upload-button) {
95
+ -webkit-appearance: button;
96
+ font: inherit;
97
+ }
98
+ :where(summary) {
99
+ display: list-item;
100
+ }
101
+ :where(a, area, button, input, label, select, summary, textarea, [tabindex]) {
102
+ touch-action: manipulation;
103
+ }
104
+ :where([aria-busy=true]) {
105
+ cursor: progress;
106
+ }
107
+ :where([aria-disabled=true], [disabled]) {
108
+ cursor: not-allowed;
109
+ }
110
+ @media (prefers-reduced-motion: reduce) {
111
+ :where(*),
112
+ :where(*::before),
113
+ :where(*::after) {
114
+ animation-duration: 0.01ms !important;
115
+ animation-iteration-count: 1 !important;
116
+ transition-duration: 0.01ms !important;
117
+ scroll-behavior: auto !important;
118
+ }
119
+ }
120
+ }
121
+ @layer nimble.base {
122
+ :root {
123
+ color-scheme: light dark;
124
+ --nc-surface-1: light-dark(oklch(0.985 0.002 250), oklch(0.17 0.005 260));
125
+ --nc-surface-2: light-dark(oklch(0.955 0.002 250), oklch(0.2 0.005 260));
126
+ --nc-surface-3: light-dark(oklch(0.925 0.002 250), oklch(0.23 0.005 260));
127
+ --nc-surface-4: light-dark(oklch(0.885 0.002 250), oklch(0.27 0.005 260));
128
+ --nc-text-1: light-dark(oklch(0.28 0.005 250), oklch(0.86 0.005 250));
129
+ --nc-text-2: light-dark(oklch(0.58 0.005 250), oklch(0.65 0.005 250));
130
+ --nc-border: light-dark(oklch(0.83 0.005 250), oklch(0.28 0.005 260));
131
+ --nc-primary: light-dark(oklch(0.5 0.2 250), oklch(0.6 0.2 250));
132
+ --nc-primary-hover: light-dark(oklch(0.4 0.2 250), oklch(0.7 0.2 250));
133
+ --nc-primary-focus: oklch(0.5 0.2 250 / 0.4);
134
+ --nc-primary-contrast: light-dark(#fff, oklch(0.15 0.005 250));
135
+ --nc-secondary: light-dark(oklch(0.45 0.05 250), oklch(0.6 0.05 250));
136
+ --nc-secondary-hover: light-dark(oklch(0.35 0.05 250), oklch(0.7 0.05 250));
137
+ --nc-secondary-focus: oklch(0.45 0.05 250 / 0.3);
138
+ --nc-secondary-contrast: light-dark(#fff, oklch(0.15 0.005 250));
139
+ --nc-valid: light-dark(oklch(0.52 0.17 145), oklch(0.65 0.2 145));
140
+ --nc-invalid: light-dark(oklch(0.55 0.22 25), oklch(0.65 0.22 25));
141
+ --nc-font-sans: system-ui, sans-serif;
142
+ --nc-font-mono: ui-monospace, Cascadia Code, Source Code Pro, Menlo, Consolas, DejaVu Sans Mono, monospace;
143
+ --nc-spacing: 1rem;
144
+ --nc-radius: 0.25rem;
145
+ --nc-content-width: 720px;
146
+ }
147
+ [data-theme=dark] {
148
+ color-scheme: dark;
149
+ }
150
+ [data-theme=light] {
151
+ color-scheme: light;
152
+ }
153
+ }
154
+ @layer nimble.base {
155
+ html {
156
+ font-family: var(--nc-font-sans);
157
+ font-size: 100%;
158
+ line-height: 1.5;
159
+ color: var(--nc-text-1);
160
+ background-color: var(--nc-surface-1);
161
+ }
162
+ body {
163
+ display: grid;
164
+ grid-template-columns: 1fr min(var(--nc-content-width), calc(100% - 2 * var(--nc-spacing))) 1fr;
165
+ min-height: 100dvh;
166
+ }
167
+ body > * {
168
+ grid-column: 2;
169
+ }
170
+ ::selection {
171
+ background-color: var(--nc-primary-focus);
172
+ color: var(--nc-text-1);
173
+ }
174
+ }
175
+ @layer nimble.base {
176
+ h1 {
177
+ font-size: 2rem;
178
+ line-height: 1.1;
179
+ margin-top: 0;
180
+ margin-bottom: var(--nc-spacing);
181
+ font-weight: 700;
182
+ text-wrap: balance;
183
+ }
184
+ h2 {
185
+ font-size: 1.75rem;
186
+ line-height: 1.15;
187
+ margin-top: 0;
188
+ margin-bottom: var(--nc-spacing);
189
+ font-weight: 700;
190
+ text-wrap: balance;
191
+ }
192
+ h3 {
193
+ font-size: 1.5rem;
194
+ line-height: 1.2;
195
+ margin-top: 0;
196
+ margin-bottom: var(--nc-spacing);
197
+ font-weight: 700;
198
+ text-wrap: balance;
199
+ }
200
+ h4 {
201
+ font-size: 1.25rem;
202
+ line-height: 1.3;
203
+ margin-top: 0;
204
+ margin-bottom: var(--nc-spacing);
205
+ font-weight: 700;
206
+ text-wrap: balance;
207
+ }
208
+ h5 {
209
+ font-size: 1.125rem;
210
+ line-height: 1.4;
211
+ margin-top: 0;
212
+ margin-bottom: var(--nc-spacing);
213
+ font-weight: 700;
214
+ text-wrap: balance;
215
+ }
216
+ h6 {
217
+ font-size: 1rem;
218
+ line-height: 1.5;
219
+ margin-top: 0;
220
+ margin-bottom: var(--nc-spacing);
221
+ font-weight: 700;
222
+ text-wrap: balance;
223
+ }
224
+ @media (max-width: 720px) {
225
+ h1 {
226
+ font-size: 1.75rem;
227
+ }
228
+ h2 {
229
+ font-size: 1.5rem;
230
+ }
231
+ h3 {
232
+ font-size: 1.3rem;
233
+ }
234
+ }
235
+ p, ul, ol, dl, blockquote, pre, table, figure, form, fieldset {
236
+ margin-top: 0;
237
+ margin-bottom: var(--nc-spacing);
238
+ }
239
+ :where(p, ul, ol, dl, blockquote, pre, table, figure, form) + :is(h1, h2, h3, h4, h5, h6) {
240
+ margin-top: calc(var(--nc-spacing) * 2);
241
+ }
242
+ ul, ol {
243
+ padding-inline-start: 1.5em;
244
+ }
245
+ li {
246
+ margin-bottom: 0.25em;
247
+ }
248
+ :where(li) > :where(ul, ol) {
249
+ margin-bottom: 0;
250
+ }
251
+ dt {
252
+ font-weight: 600;
253
+ }
254
+ dd {
255
+ margin-inline-start: 1.5em;
256
+ margin-bottom: 0.5em;
257
+ }
258
+ blockquote {
259
+ margin-block: var(--nc-spacing);
260
+ margin-inline: 0;
261
+ padding: 0.25em var(--nc-spacing);
262
+ border-inline-start: 0.25rem solid var(--nc-border);
263
+ font-style: italic;
264
+ }
265
+ :where(blockquote) footer,
266
+ :where(blockquote) cite {
267
+ font-style: normal;
268
+ font-size: 0.9em;
269
+ color: var(--nc-text-2);
270
+ }
271
+ hr {
272
+ border: none;
273
+ height: 1px;
274
+ background-color: color-mix(in oklch, var(--nc-border), transparent 40%);
275
+ margin: calc(var(--nc-spacing) * 2) 0;
276
+ }
277
+ mark {
278
+ padding: 0.1em 0.25em;
279
+ background-color: light-dark(#fde68a, oklch(0.55 0.12 85));
280
+ color: light-dark(inherit, oklch(0.95 0.01 85));
281
+ border-radius: 2px;
282
+ }
283
+ address {
284
+ font-style: normal;
285
+ }
286
+ }
287
+ @layer nimble.base {
288
+ :where(a:not([role=button])) {
289
+ color: var(--nc-primary);
290
+ text-decoration: underline;
291
+ text-underline-offset: 0.15em;
292
+ text-decoration-color: color-mix(in oklch, var(--nc-primary), transparent 50%);
293
+ transition: color 0.2s, text-decoration-color 0.2s;
294
+ }
295
+ :where(a:not([role=button])):visited {
296
+ color: color-mix(in oklch, var(--nc-primary) 40%, oklch(0.5 0.2 310));
297
+ text-decoration-color: color-mix(in oklch, var(--nc-primary) 40%, oklch(0.5 0.2 310) 30%);
298
+ }
299
+ :where(a:not([role=button])):hover {
300
+ color: var(--nc-primary-hover);
301
+ text-decoration-color: var(--nc-primary-hover);
302
+ }
303
+ }
304
+ @layer nimble.base {
305
+ :where(button, [type=submit], [type=reset], [type=button], [role=button]) {
306
+ --_btn-padding-v: 0.5em;
307
+ --_btn-padding-h: 1em;
308
+ padding: var(--_btn-padding-v) var(--_btn-padding-h);
309
+ background-color: var(--nc-primary);
310
+ color: var(--nc-primary-contrast);
311
+ border: 1px solid var(--nc-primary);
312
+ border-radius: var(--nc-radius);
313
+ font: inherit;
314
+ font-size: 1rem;
315
+ line-height: 1.5;
316
+ cursor: pointer;
317
+ text-decoration: none;
318
+ display: inline-block;
319
+ text-align: center;
320
+ margin: 0 0.25em 0.25em 0;
321
+ transition: background-color 0.2s, border-color 0.2s;
322
+ }
323
+ :where(button, [type=submit], [type=reset], [type=button], [role=button]):hover {
324
+ background-color: var(--nc-primary-hover);
325
+ border-color: var(--nc-primary-hover);
326
+ }
327
+ :where(button, [type=submit], [type=reset], [type=button], [role=button]):focus-visible {
328
+ box-shadow: 0 0 0 2px var(--nc-primary-focus);
329
+ outline: none;
330
+ }
331
+ :where(button, [type=submit], [type=reset], [type=button], [role=button]):disabled {
332
+ opacity: 0.5;
333
+ cursor: not-allowed;
334
+ pointer-events: none;
335
+ }
336
+ :where([role=group]) {
337
+ display: inline-flex;
338
+ }
339
+ [role=group] > * {
340
+ border-radius: 0;
341
+ margin: 0;
342
+ }
343
+ [role=group] > * + * {
344
+ box-shadow: -1px 0 0 rgba(255, 255, 255, 0.3);
345
+ }
346
+ [role=group] > :first-child {
347
+ border-start-start-radius: var(--nc-radius);
348
+ border-end-start-radius: var(--nc-radius);
349
+ }
350
+ [role=group] > :last-child {
351
+ border-start-end-radius: var(--nc-radius);
352
+ border-end-end-radius: var(--nc-radius);
353
+ }
354
+ [role=search] [role=group] > :first-child {
355
+ border-start-start-radius: 5rem;
356
+ border-end-start-radius: 5rem;
357
+ padding-inline-start: 1.25em;
358
+ }
359
+ [role=search] [role=group] > :last-child {
360
+ border-start-end-radius: 5rem;
361
+ border-end-end-radius: 5rem;
362
+ padding-inline-end: 1.25em;
363
+ }
364
+ }
365
+ @layer nimble.utilities {
366
+ .secondary {
367
+ background-color: var(--nc-secondary);
368
+ border-color: var(--nc-secondary);
369
+ color: var(--nc-secondary-contrast);
370
+ }
371
+ .secondary:hover {
372
+ background-color: var(--nc-secondary-hover);
373
+ border-color: var(--nc-secondary-hover);
374
+ }
375
+ .secondary:focus-visible {
376
+ box-shadow: 0 0 0 2px var(--nc-secondary-focus);
377
+ }
378
+ .outline {
379
+ background-color: transparent;
380
+ color: var(--nc-primary);
381
+ }
382
+ .outline:hover {
383
+ background-color: var(--nc-primary-focus);
384
+ color: var(--nc-primary-hover);
385
+ border-color: var(--nc-primary-hover);
386
+ }
387
+ }
388
+ @layer nimble.base {
389
+ :where(input:not([type=checkbox], [type=radio], [type=range], [type=file], [type=color]),
390
+ select, textarea) {
391
+ --_input-bg: color-mix(in oklch, var(--nc-surface-1), var(--nc-surface-2) 20%);
392
+ padding: 0.5em 0.75em;
393
+ background-color: var(--_input-bg);
394
+ border: 1px solid var(--nc-border);
395
+ border-radius: var(--nc-radius);
396
+ color: var(--nc-text-1);
397
+ font: inherit;
398
+ transition: border-color 0.2s, box-shadow 0.2s;
399
+ }
400
+ :where(input:not([type=checkbox], [type=radio], [type=range], [type=file], [type=color], [type=submit], [type=button], [type=reset]),
401
+ select, textarea) {
402
+ width: 100%;
403
+ }
404
+ :where(input, select, textarea):focus-visible {
405
+ border-color: var(--nc-primary);
406
+ box-shadow: 0 0 0 2px var(--nc-primary-focus);
407
+ outline: none;
408
+ }
409
+ :where(input, select, textarea)[aria-invalid=false] {
410
+ border-color: var(--nc-valid);
411
+ }
412
+ :where(input, select, textarea)[aria-invalid=true] {
413
+ border-color: var(--nc-invalid);
414
+ }
415
+ :where(label) {
416
+ display: block;
417
+ margin-bottom: 0.25em;
418
+ }
419
+ :where(label:has(+ input, + select, + textarea)) {
420
+ font-weight: 600;
421
+ }
422
+ :where(fieldset) {
423
+ border: 1px solid var(--nc-border);
424
+ border-radius: var(--nc-radius);
425
+ padding: var(--nc-spacing);
426
+ }
427
+ :where(legend) {
428
+ font-weight: 600;
429
+ padding-inline: 0.25em;
430
+ }
431
+ :where([type=checkbox], [type=radio]) {
432
+ accent-color: var(--nc-primary);
433
+ }
434
+ :where([type=range]) {
435
+ accent-color: var(--nc-primary);
436
+ width: 100%;
437
+ }
438
+ :where([type=color]) {
439
+ cursor: pointer;
440
+ }
441
+ :where([type=checkbox][role=switch]) {
442
+ appearance: none;
443
+ width: 2.5em;
444
+ height: 1.25em;
445
+ border-radius: 1em;
446
+ background-color: var(--nc-border);
447
+ position: relative;
448
+ cursor: pointer;
449
+ transition: background-color 0.2s;
450
+ }
451
+ :where([type=checkbox][role=switch])::before {
452
+ content: "";
453
+ position: absolute;
454
+ top: 2px;
455
+ left: 2px;
456
+ width: calc(1.25em - 4px);
457
+ height: calc(1.25em - 4px);
458
+ border-radius: 50%;
459
+ background-color: #fff;
460
+ transition: transform 0.2s;
461
+ }
462
+ :where([type=checkbox][role=switch]):checked {
463
+ background-color: var(--nc-primary);
464
+ }
465
+ :where([type=checkbox][role=switch]):checked::before {
466
+ transform: translateX(1.25em);
467
+ }
468
+ }
469
+ @layer nimble.base {
470
+ :where(table) {
471
+ width: 100%;
472
+ border-collapse: collapse;
473
+ }
474
+ :where(th, td) {
475
+ padding: 0.5em 0.75em;
476
+ border-bottom: 1px solid color-mix(in oklch, var(--nc-border), transparent 40%);
477
+ text-align: start;
478
+ }
479
+ :where(thead th, thead td) {
480
+ font-weight: 600;
481
+ border-bottom-width: 2px;
482
+ background-color: var(--nc-surface-2);
483
+ text-wrap: balance;
484
+ }
485
+ :where(figure:has(table)) {
486
+ overflow-x: auto;
487
+ }
488
+ }
489
+ @layer nimble.base {
490
+ :where(code, kbd, samp) {
491
+ font-family: var(--nc-font-mono);
492
+ font-size: 0.875em;
493
+ background-color: var(--nc-surface-2);
494
+ border-radius: var(--nc-radius);
495
+ padding: 0.15em 0.35em;
496
+ }
497
+ :where(pre) {
498
+ background-color: var(--nc-surface-2);
499
+ border-radius: var(--nc-radius);
500
+ padding: var(--nc-spacing);
501
+ overflow-x: auto;
502
+ }
503
+ :where(pre code) {
504
+ background: none;
505
+ padding: 0;
506
+ font-size: inherit;
507
+ }
508
+ :where(kbd) {
509
+ border: 1px solid var(--nc-border);
510
+ border-bottom-width: 2px;
511
+ }
512
+ }
513
+ @layer nimble.base {
514
+ :where(img, video, canvas, svg) {
515
+ max-width: 100%;
516
+ height: auto;
517
+ }
518
+ :where(figure) {
519
+ margin: 0;
520
+ }
521
+ :where(figcaption) {
522
+ font-size: 0.9em;
523
+ color: var(--nc-text-2);
524
+ margin-top: 0.5em;
525
+ }
526
+ }
527
+ @layer nimble.base {
528
+ :where(details) {
529
+ border: 1px solid var(--nc-border);
530
+ border-radius: var(--nc-radius);
531
+ padding: 0.75em 1em;
532
+ }
533
+ :where(summary) {
534
+ cursor: pointer;
535
+ font-weight: 600;
536
+ }
537
+ :where(details[open] > summary) {
538
+ margin-bottom: 0.5em;
539
+ }
540
+ }
541
+ @layer nimble.base {
542
+ :where(dialog) {
543
+ background-color: var(--nc-surface-4);
544
+ border: 1px solid var(--nc-border);
545
+ border-radius: var(--nc-radius);
546
+ max-width: min(90vw, 40rem);
547
+ padding: var(--nc-spacing);
548
+ }
549
+ :where(dialog::backdrop) {
550
+ background: rgba(0, 0, 0, 0.5);
551
+ }
552
+ }
553
+ @media print {
554
+ body {
555
+ background: #fff;
556
+ color: #000;
557
+ }
558
+ a[href]::after {
559
+ content: " (" attr(href) ")";
560
+ font-size: 0.85em;
561
+ color: #555;
562
+ }
563
+ a[href^="#"]::after,
564
+ a[href^="javascript:"]::after {
565
+ content: none;
566
+ }
567
+ pre, blockquote {
568
+ page-break-inside: avoid;
569
+ }
570
+ h2, h3, h4 {
571
+ page-break-after: avoid;
572
+ }
573
+ img {
574
+ max-width: 100% !important;
575
+ }
576
+ @page {
577
+ margin: 2cm;
578
+ }
579
+ }
580
+ @layer nimble.utilities {
581
+ .container {
582
+ max-width: var(--nc-content-width);
583
+ margin-inline: auto;
584
+ padding-inline: var(--nc-spacing);
585
+ }
586
+ .fluid {
587
+ display: block;
588
+ max-width: none;
589
+ padding-inline: var(--nc-spacing);
590
+ }
591
+ .full-bleed {
592
+ grid-column: 1/-1;
593
+ }
594
+ .wide {
595
+ grid-column: 1/-1;
596
+ width: 100%;
597
+ max-width: 1200px;
598
+ margin-inline: auto;
599
+ padding-inline: var(--nc-spacing);
600
+ }
601
+ .striped :where(tbody tr:nth-child(even)) {
602
+ background-color: var(--nc-surface-2);
603
+ }
604
+ .visually-hidden {
605
+ position: absolute;
606
+ width: 1px;
607
+ height: 1px;
608
+ padding: 0;
609
+ margin: -1px;
610
+ overflow: hidden;
611
+ clip-path: inset(50%);
612
+ white-space: nowrap;
613
+ border: 0;
614
+ }
615
+ .overflow-auto {
616
+ overflow: auto;
617
+ }
618
+ }
@@ -0,0 +1 @@
1
+ @layer nimble.reset{:where(*),:where(),:where(){box-sizing:border-box;background-repeat:no-repeat}:where(html){-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5}:where(body){margin:0}:where(h1){margin-block:.67em;font-size:2em}:where(hr){height:0;color:inherit}:where(nav) :where(ol,ul){padding:0;list-style-type:none}:where(pre){font-family:monospace;font-size:1em}:where(abbr[title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}:where(b,strong){font-weight:bolder}:where(code,kbd,samp){font-family:monospace;font-size:1em}:where(small){font-size:80%}:where(sub,sup){vertical-align:baseline;font-size:75%;line-height:0;position:relative}:where(sub){bottom:-.25em}:where(sup){top:-.5em}:where(iframe){border-style:none}:where(table){border-collapse:collapse;text-indent:0;border-color:currentColor}:where(button,input,select,textarea){font:inherit;letter-spacing:inherit}:where(button,[type=button],[type=reset],[type=submit]){-webkit-appearance:button}:where(fieldset){border:1px solid #a0a0a0}:where(progress){vertical-align:baseline}:where(textarea){resize:vertical;overflow:auto}:where([type=search]){-webkit-appearance:textfield;outline-offset:-2px}:where(){-webkit-appearance:none}:where(),:where(){height:auto}:where(){-webkit-appearance:button;font:inherit}:where(summary){display:list-item}:where(a,area,button,input,label,select,summary,textarea,[tabindex]){touch-action:manipulation}:where([aria-busy=true]){cursor:progress}:where([aria-disabled=true],[disabled]){cursor:not-allowed}@media (prefers-reduced-motion:reduce){:where(*),:where(),:where(){scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}}@layer nimble.base{:root{color-scheme:light dark;--nc-surface-1:light-dark(oklch(98.5% .002 250),oklch(17% .005 260));--nc-surface-2:light-dark(oklch(95.5% .002 250),oklch(20% .005 260));--nc-surface-3:light-dark(oklch(92.5% .002 250),oklch(23% .005 260));--nc-surface-4:light-dark(oklch(88.5% .002 250),oklch(27% .005 260));--nc-text-1:light-dark(oklch(28% .005 250),oklch(86% .005 250));--nc-text-2:light-dark(oklch(58% .005 250),oklch(65% .005 250));--nc-border:light-dark(oklch(83% .005 250),oklch(28% .005 260));--nc-primary:light-dark(oklch(50% .2 250),oklch(60% .2 250));--nc-primary-hover:light-dark(oklch(40% .2 250),oklch(70% .2 250));--nc-primary-focus:oklch(50% .2 250/.4);--nc-primary-contrast:light-dark(#fff,oklch(15% .005 250));--nc-secondary:light-dark(oklch(45% .05 250),oklch(60% .05 250));--nc-secondary-hover:light-dark(oklch(35% .05 250),oklch(70% .05 250));--nc-secondary-focus:oklch(45% .05 250/.3);--nc-secondary-contrast:light-dark(#fff,oklch(15% .005 250));--nc-valid:light-dark(oklch(52% .17 145),oklch(65% .2 145));--nc-invalid:light-dark(oklch(55% .22 25),oklch(65% .22 25));--nc-font-sans:system-ui, sans-serif;--nc-font-mono:ui-monospace, Cascadia Code, Source Code Pro, Menlo, Consolas, DejaVu Sans Mono, monospace;--nc-spacing:1rem;--nc-radius:.25rem;--nc-content-width:720px}[data-theme=dark]{color-scheme:dark}[data-theme=light]{color-scheme:light}html{font-family:var(--nc-font-sans);color:var(--nc-text-1);background-color:var(--nc-surface-1);font-size:100%;line-height:1.5}body{grid-template-columns:1fr min(var(--nc-content-width), calc(100% - 2 * var(--nc-spacing))) 1fr;min-height:100dvh;display:grid}body>*{grid-column:2}::selection{background-color:var(--nc-primary-focus);color:var(--nc-text-1)}h1{margin-top:0;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:2rem;font-weight:700;line-height:1.1}h2{margin-top:0;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.75rem;font-weight:700;line-height:1.15}h3{margin-top:0;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.5rem;font-weight:700;line-height:1.2}h4{margin-top:0;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.25rem;font-weight:700;line-height:1.3}h5{margin-top:0;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.125rem;font-weight:700;line-height:1.4}h6{margin-top:0;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1rem;font-weight:700;line-height:1.5}@media (width<=720px){h1{font-size:1.75rem}h2{font-size:1.5rem}h3{font-size:1.3rem}}p,ul,ol,dl,blockquote,pre,table,figure,form,fieldset{margin-top:0;margin-bottom:var(--nc-spacing)}:where(p,ul,ol,dl,blockquote,pre,table,figure,form)+:is(h1,h2,h3,h4,h5,h6){margin-top:calc(var(--nc-spacing) * 2)}ul,ol{padding-inline-start:1.5em}li{margin-bottom:.25em}:where(li)>:where(ul,ol){margin-bottom:0}dt{font-weight:600}dd{margin-inline-start:1.5em;margin-bottom:.5em}blockquote{margin-block:var(--nc-spacing);padding:.25em var(--nc-spacing);border-inline-start:.25rem solid var(--nc-border);margin-inline:0;font-style:italic}:where(blockquote) footer,:where(blockquote) cite{color:var(--nc-text-2);font-size:.9em;font-style:normal}hr{background-color:color-mix(in oklch, var(--nc-border), transparent 40%);height:1px;margin:calc(var(--nc-spacing) * 2) 0;border:none}mark{color:light-dark(inherit,oklch(95% .01 85));background-color:light-dark(#fde68a,oklch(55% .12 85));border-radius:2px;padding:.1em .25em}address{font-style:normal}:where(a:not([role=button])){color:var(--nc-primary);text-underline-offset:.15em;text-decoration:underline;-webkit-text-decoration-color:color-mix(in oklch, var(--nc-primary), transparent 50%);text-decoration-color:color-mix(in oklch, var(--nc-primary), transparent 50%);transition:color .2s,text-decoration-color .2s}:where(a:not([role=button])):visited{color:color-mix(in oklch, var(--nc-primary) 40%, oklch(50% .2 310));-webkit-text-decoration-color:color-mix(in oklch, var(--nc-primary) 40%, oklch(50% .2 310) 30%);text-decoration-color:color-mix(in oklch, var(--nc-primary) 40%, oklch(50% .2 310) 30%)}:where(a:not([role=button])):hover{color:var(--nc-primary-hover);-webkit-text-decoration-color:var(--nc-primary-hover);text-decoration-color:var(--nc-primary-hover)}:where(button,[type=submit],[type=reset],[type=button],[role=button]){--_btn-padding-v:.5em;--_btn-padding-h:1em;padding:var(--_btn-padding-v) var(--_btn-padding-h);background-color:var(--nc-primary);color:var(--nc-primary-contrast);border:1px solid var(--nc-primary);border-radius:var(--nc-radius);font:inherit;cursor:pointer;text-align:center;margin:0 .25em .25em 0;font-size:1rem;line-height:1.5;text-decoration:none;transition:background-color .2s,border-color .2s;display:inline-block}:where(button,[type=submit],[type=reset],[type=button],[role=button]):hover{background-color:var(--nc-primary-hover);border-color:var(--nc-primary-hover)}:where(button,[type=submit],[type=reset],[type=button],[role=button]):focus-visible{box-shadow:0 0 0 2px var(--nc-primary-focus);outline:none}:where(button,[type=submit],[type=reset],[type=button],[role=button]):disabled{opacity:.5;cursor:not-allowed;pointer-events:none}:where([role=group]){display:inline-flex}[role=group]>*{border-radius:0;margin:0}[role=group]>*+*{box-shadow:-1px 0 #ffffff4d}[role=group]>:first-child{border-start-start-radius:var(--nc-radius);border-end-start-radius:var(--nc-radius)}[role=group]>:last-child{border-start-end-radius:var(--nc-radius);border-end-end-radius:var(--nc-radius)}[role=search] [role=group]>:first-child{border-start-start-radius:5rem;border-end-start-radius:5rem;padding-inline-start:1.25em}[role=search] [role=group]>:last-child{border-start-end-radius:5rem;border-end-end-radius:5rem;padding-inline-end:1.25em}:where(input:not([type=checkbox],[type=radio],[type=range],[type=file],[type=color]),select,textarea){--_input-bg:color-mix(in oklch, var(--nc-surface-1), var(--nc-surface-2) 20%);background-color:var(--_input-bg);border:1px solid var(--nc-border);border-radius:var(--nc-radius);color:var(--nc-text-1);font:inherit;padding:.5em .75em;transition:border-color .2s,box-shadow .2s}:where(input:not([type=checkbox],[type=radio],[type=range],[type=file],[type=color],[type=submit],[type=button],[type=reset]),select,textarea){width:100%}:where(input,select,textarea):focus-visible{border-color:var(--nc-primary);box-shadow:0 0 0 2px var(--nc-primary-focus);outline:none}:where(input,select,textarea)[aria-invalid=false]{border-color:var(--nc-valid)}:where(input,select,textarea)[aria-invalid=true]{border-color:var(--nc-invalid)}:where(label){margin-bottom:.25em;display:block}:where(label:has(+input,+select,+textarea)){font-weight:600}:where(fieldset){border:1px solid var(--nc-border);border-radius:var(--nc-radius);padding:var(--nc-spacing)}:where(legend){padding-inline:.25em;font-weight:600}:where([type=checkbox],[type=radio]){accent-color:var(--nc-primary)}:where([type=range]){accent-color:var(--nc-primary);width:100%}:where([type=color]){cursor:pointer}:where([type=checkbox][role=switch]){appearance:none;background-color:var(--nc-border);cursor:pointer;border-radius:1em;width:2.5em;height:1.25em;transition:background-color .2s;position:relative}:where([type=checkbox][role=switch]):before{content:"";background-color:#fff;border-radius:50%;width:calc(1.25em - 4px);height:calc(1.25em - 4px);transition:transform .2s;position:absolute;top:2px;left:2px}:where([type=checkbox][role=switch]):checked{background-color:var(--nc-primary)}:where([type=checkbox][role=switch]):checked:before{transform:translate(1.25em)}:where(table){border-collapse:collapse;width:100%}:where(th,td){border-bottom:1px solid color-mix(in oklch, var(--nc-border), transparent 40%);text-align:start;padding:.5em .75em}:where(thead th,thead td){background-color:var(--nc-surface-2);text-wrap:balance;border-bottom-width:2px;font-weight:600}:where(figure:has(table)){overflow-x:auto}:where(code,kbd,samp){font-family:var(--nc-font-mono);background-color:var(--nc-surface-2);border-radius:var(--nc-radius);padding:.15em .35em;font-size:.875em}:where(pre){background-color:var(--nc-surface-2);border-radius:var(--nc-radius);padding:var(--nc-spacing);overflow-x:auto}:where(pre code){font-size:inherit;background:0 0;padding:0}:where(kbd){border:1px solid var(--nc-border);border-bottom-width:2px}:where(img,video,canvas,svg){max-width:100%;height:auto}:where(figure){margin:0}:where(figcaption){color:var(--nc-text-2);margin-top:.5em;font-size:.9em}:where(details){border:1px solid var(--nc-border);border-radius:var(--nc-radius);padding:.75em 1em}:where(summary){cursor:pointer;font-weight:600}:where(details[open]>summary){margin-bottom:.5em}:where(dialog){background-color:var(--nc-surface-4);border:1px solid var(--nc-border);border-radius:var(--nc-radius);max-width:min(90vw,40rem);padding:var(--nc-spacing)}:where(){background:#00000080}}@layer nimble.utilities{.secondary{background-color:var(--nc-secondary);border-color:var(--nc-secondary);color:var(--nc-secondary-contrast)}.secondary:hover{background-color:var(--nc-secondary-hover);border-color:var(--nc-secondary-hover)}.secondary:focus-visible{box-shadow:0 0 0 2px var(--nc-secondary-focus)}.outline{color:var(--nc-primary);background-color:#0000}.outline:hover{background-color:var(--nc-primary-focus);color:var(--nc-primary-hover);border-color:var(--nc-primary-hover)}.container{max-width:var(--nc-content-width);padding-inline:var(--nc-spacing);margin-inline:auto}.fluid{max-width:none;padding-inline:var(--nc-spacing);display:block}.full-bleed{grid-column:1/-1}.wide{width:100%;max-width:1200px;padding-inline:var(--nc-spacing);grid-column:1/-1;margin-inline:auto}.striped :where(tbody tr:nth-child(2n)){background-color:var(--nc-surface-2)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.overflow-auto{overflow:auto}}@media print{body{color:#000;background:#fff}a[href]:after{content:" (" attr(href) ")";color:#555;font-size:.85em}a[href^=\#]:after,a[href^=javascript\:]:after{content:none}pre,blockquote{page-break-inside:avoid}h2,h3,h4{page-break-after:avoid}img{max-width:100%!important}@page{margin:2cm}}
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "@leftium/nimble.css",
3
+ "version": "0.1.0",
4
+ "description": "A minimal class/classless CSS library combining Open Props design tokens with PicoCSS aesthetics",
5
+ "type": "module",
6
+ "main": "dist/nimble.min.css",
7
+ "exports": {
8
+ ".": "./dist/nimble.min.css",
9
+ "./base": "./dist/nimble-base.min.css",
10
+ "./reset": "./dist/nimble-reset.min.css",
11
+ "./utilities": "./dist/nimble-utilities.min.css",
12
+ "./scss": "./src/nimble.scss"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/Leftium/nimble.css.git"
17
+ },
18
+ "homepage": "https://leftium.github.io/nimble.css/",
19
+ "bugs": "https://github.com/Leftium/nimble.css/issues",
20
+ "files": [
21
+ "dist/",
22
+ "src/"
23
+ ],
24
+ "devDependencies": {
25
+ "lightningcss": "^1.29.0",
26
+ "sass": "^1.86.0"
27
+ },
28
+ "license": "MIT",
29
+ "keywords": [
30
+ "css",
31
+ "classless",
32
+ "minimal",
33
+ "dark-mode",
34
+ "oklch",
35
+ "cascade-layers"
36
+ ],
37
+ "scripts": {
38
+ "build": "node build.js"
39
+ }
40
+ }