@leftium/nimble.css 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +94 -77
- package/dist/nimble-base.css +16 -11
- package/dist/nimble-base.min.css +1 -1
- package/dist/nimble-core.css +100 -23
- package/dist/nimble-core.min.css +1 -1
- package/dist/nimble-select.css +3 -0
- package/dist/nimble-select.min.css +1 -1
- package/dist/nimble.css +103 -23
- package/dist/nimble.min.css +1 -1
- package/package.json +1 -1
- package/src/_article.scss +65 -0
- package/src/_buttons.scss +33 -5
- package/src/_colors.scss +19 -14
- package/src/_config.scss +1 -1
- package/src/_details.scss +4 -0
- package/src/_document.scss +10 -0
- package/src/_forms.scss +25 -9
- package/src/_select.scss +3 -0
- package/src/nimble-core.scss +1 -0
- package/src/nimble.scss +1 -0
- package/dist/nimble-full.css +0 -946
- package/dist/nimble-full.min.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer nimble.reset;@layer nimble.base{@supports (appearance:base-select){:where(select){appearance:base-select}:where(select)::picker(select){appearance:base-select}:where(select)::picker-icon{content:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='10' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 2l6 6 6-6'/%3E%3C/svg%3E");transition:rotate .4s}:where(select):open::picker-icon{rotate:180deg}:where(select)::picker(select){border:1px solid var(--nc-border);border-radius:var(--nc-radius);background-color:var(--nc-surface-1);opacity:0;transition:opacity .2s, overlay .2s allow-discrete, display .2s allow-discrete;padding:.25em}:where(select):open::picker(select){opacity:1}@starting-style{:where(select):open::picker(select){opacity:0}}:where(select) option{border-radius:var(--nc-radius);padding:.5em .75em;transition:background-color .15s}:where(select) option:hover{background-color:var(--nc-surface-2)}:where(select) option:checked{font-weight:600}}}
|
|
1
|
+
@layer nimble.reset;@layer nimble.base{@supports (appearance:base-select){:where(select){appearance:base-select}:where(select)::picker(select){appearance:base-select}:where(select)::picker-icon{content:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='10' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 2l6 6 6-6'/%3E%3C/svg%3E");transition:rotate .4s}:where(select):open::picker-icon{rotate:180deg}:where(select)::picker(select){position-area:block-end;position-try-order:normal;position-try-fallbacks:flip-block;border:1px solid var(--nc-border);border-radius:var(--nc-radius);background-color:var(--nc-surface-1);opacity:0;transition:opacity .2s, overlay .2s allow-discrete, display .2s allow-discrete;padding:.25em}:where(select):open::picker(select){opacity:1}@starting-style{:where(select):open::picker(select){opacity:0}}:where(select) option{border-radius:var(--nc-radius);padding:.5em .75em;transition:background-color .15s}:where(select) option:hover{background-color:var(--nc-surface-2)}:where(select) option:checked{font-weight:600}}}
|
package/dist/nimble.css
CHANGED
|
@@ -123,19 +123,20 @@
|
|
|
123
123
|
@layer nimble.base {
|
|
124
124
|
:root {
|
|
125
125
|
color-scheme: light dark;
|
|
126
|
-
--nc-surface-
|
|
127
|
-
--nc-surface-
|
|
128
|
-
--nc-surface-
|
|
129
|
-
--nc-surface-
|
|
130
|
-
--nc-
|
|
131
|
-
--nc-
|
|
126
|
+
--nc-surface-hue: 250;
|
|
127
|
+
--nc-surface-1: light-dark(oklch(0.985 0.002 var(--nc-surface-hue)), oklch(0.17 0.005 calc(var(--nc-surface-hue) + 10)));
|
|
128
|
+
--nc-surface-2: light-dark(oklch(0.955 0.002 var(--nc-surface-hue)), oklch(0.2 0.005 calc(var(--nc-surface-hue) + 10)));
|
|
129
|
+
--nc-surface-3: light-dark(oklch(0.925 0.002 var(--nc-surface-hue)), oklch(0.23 0.005 calc(var(--nc-surface-hue) + 10)));
|
|
130
|
+
--nc-surface-4: light-dark(oklch(0.885 0.002 var(--nc-surface-hue)), oklch(0.27 0.005 calc(var(--nc-surface-hue) + 10)));
|
|
131
|
+
--nc-text: light-dark(oklch(0.28 0.005 var(--nc-surface-hue)), oklch(0.86 0.005 var(--nc-surface-hue)));
|
|
132
|
+
--nc-border: light-dark(oklch(0.83 0.005 var(--nc-surface-hue)), oklch(0.28 0.005 calc(var(--nc-surface-hue) + 10)));
|
|
132
133
|
--nc-primary: light-dark(oklch(0.5 0.2 250), oklch(0.6 0.2 250));
|
|
133
|
-
--nc-primary-hover: light-dark(oklch(
|
|
134
|
-
--nc-primary-focus: oklch(
|
|
134
|
+
--nc-primary-hover: light-dark(oklch(from var(--nc-primary) calc(l - 0.1) c h), oklch(from var(--nc-primary) calc(l + 0.1) c h));
|
|
135
|
+
--nc-primary-focus: oklch(from var(--nc-primary) l c h / 0.4);
|
|
135
136
|
--nc-primary-contrast: light-dark(#fff, oklch(0.15 0.005 250));
|
|
136
137
|
--nc-secondary: light-dark(oklch(0.45 0.05 250), oklch(0.6 0.05 250));
|
|
137
|
-
--nc-secondary-hover: light-dark(oklch(
|
|
138
|
-
--nc-secondary-focus: oklch(
|
|
138
|
+
--nc-secondary-hover: light-dark(oklch(from var(--nc-secondary) calc(l - 0.1) c h), oklch(from var(--nc-secondary) calc(l + 0.1) c h));
|
|
139
|
+
--nc-secondary-focus: oklch(from var(--nc-secondary) l c h / 0.3);
|
|
139
140
|
--nc-secondary-contrast: light-dark(#fff, oklch(0.15 0.005 250));
|
|
140
141
|
--nc-valid: light-dark(oklch(0.52 0.17 145), oklch(0.65 0.2 145));
|
|
141
142
|
--nc-invalid: light-dark(oklch(0.55 0.22 25), oklch(0.65 0.22 25));
|
|
@@ -143,7 +144,7 @@
|
|
|
143
144
|
--nc-font-mono: ui-monospace, Cascadia Code, Source Code Pro, Menlo, Consolas, DejaVu Sans Mono, monospace;
|
|
144
145
|
--nc-spacing: 1rem;
|
|
145
146
|
--nc-radius: 0.25rem;
|
|
146
|
-
--nc-content-width:
|
|
147
|
+
--nc-content-width: 60ch;
|
|
147
148
|
}
|
|
148
149
|
[data-theme=dark] {
|
|
149
150
|
color-scheme: dark;
|
|
@@ -169,6 +170,10 @@
|
|
|
169
170
|
grid-column: 2;
|
|
170
171
|
min-width: 0;
|
|
171
172
|
}
|
|
173
|
+
body > [style*="display: contents"] > * {
|
|
174
|
+
grid-column: 2;
|
|
175
|
+
min-width: 0;
|
|
176
|
+
}
|
|
172
177
|
::selection {
|
|
173
178
|
background-color: var(--nc-primary-focus);
|
|
174
179
|
color: var(--nc-text);
|
|
@@ -327,6 +332,18 @@
|
|
|
327
332
|
box-shadow: 0 0 0 2px var(--nc-primary-focus);
|
|
328
333
|
outline: none;
|
|
329
334
|
}
|
|
335
|
+
:where([type=reset]) {
|
|
336
|
+
background-color: var(--nc-secondary);
|
|
337
|
+
border-color: var(--nc-secondary);
|
|
338
|
+
color: var(--nc-secondary-contrast);
|
|
339
|
+
}
|
|
340
|
+
:where([type=reset]):hover {
|
|
341
|
+
background-color: var(--nc-secondary-hover);
|
|
342
|
+
border-color: var(--nc-secondary-hover);
|
|
343
|
+
}
|
|
344
|
+
:where([type=reset]):focus-visible {
|
|
345
|
+
box-shadow: 0 0 0 2px var(--nc-secondary-focus);
|
|
346
|
+
}
|
|
330
347
|
:where(button, [type=submit], [type=reset], [type=button], [role=button]).inline {
|
|
331
348
|
--_btn-padding-v: 0.05em;
|
|
332
349
|
--_btn-padding-h: 0.4em;
|
|
@@ -407,23 +424,31 @@
|
|
|
407
424
|
}
|
|
408
425
|
}
|
|
409
426
|
@layer nimble.utilities {
|
|
410
|
-
.secondary {
|
|
427
|
+
.secondary:not(a:not([role=button])) {
|
|
411
428
|
background-color: var(--nc-secondary);
|
|
412
429
|
border-color: var(--nc-secondary);
|
|
413
430
|
color: var(--nc-secondary-contrast);
|
|
414
431
|
}
|
|
415
|
-
.secondary:hover {
|
|
432
|
+
.secondary:not(a:not([role=button])):hover {
|
|
416
433
|
background-color: var(--nc-secondary-hover);
|
|
417
434
|
border-color: var(--nc-secondary-hover);
|
|
418
435
|
}
|
|
419
|
-
.secondary:focus-visible {
|
|
436
|
+
.secondary:not(a:not([role=button])):focus-visible {
|
|
420
437
|
box-shadow: 0 0 0 2px var(--nc-secondary-focus);
|
|
421
438
|
}
|
|
422
|
-
.
|
|
439
|
+
a:not([role=button]).secondary {
|
|
440
|
+
color: var(--nc-secondary);
|
|
441
|
+
text-decoration-color: color-mix(in oklch, var(--nc-secondary), transparent 50%);
|
|
442
|
+
}
|
|
443
|
+
a:not([role=button]).secondary:hover {
|
|
444
|
+
color: var(--nc-secondary-hover);
|
|
445
|
+
text-decoration-color: var(--nc-secondary-hover);
|
|
446
|
+
}
|
|
447
|
+
.outline:not(a:not([role=button])) {
|
|
423
448
|
background-color: transparent;
|
|
424
449
|
color: var(--nc-primary);
|
|
425
450
|
}
|
|
426
|
-
.outline:hover {
|
|
451
|
+
.outline:not(a:not([role=button])):hover {
|
|
427
452
|
background-color: var(--nc-primary-focus);
|
|
428
453
|
color: var(--nc-primary-hover);
|
|
429
454
|
border-color: var(--nc-primary-hover);
|
|
@@ -453,7 +478,7 @@
|
|
|
453
478
|
box-shadow: 0 0 0 2px var(--nc-primary-focus);
|
|
454
479
|
outline: none;
|
|
455
480
|
}
|
|
456
|
-
:where(input, select, textarea) + :where(small) {
|
|
481
|
+
:where(input:not([type=submit], [type=button], [type=reset]), select, textarea) + :where(small) {
|
|
457
482
|
display: block;
|
|
458
483
|
margin-top: calc(var(--nc-spacing) * -0.75);
|
|
459
484
|
margin-bottom: var(--nc-spacing);
|
|
@@ -466,10 +491,10 @@
|
|
|
466
491
|
:where(input, select, textarea)[aria-invalid=true] {
|
|
467
492
|
border-color: var(--nc-invalid);
|
|
468
493
|
}
|
|
469
|
-
:where(input, select, textarea)[aria-invalid=false] + :where(small) {
|
|
494
|
+
:where(input:not([type=submit], [type=button], [type=reset]), select, textarea)[aria-invalid=false] + :where(small) {
|
|
470
495
|
color: var(--nc-valid);
|
|
471
496
|
}
|
|
472
|
-
:where(input, select, textarea)[aria-invalid=true] + :where(small) {
|
|
497
|
+
:where(input:not([type=submit], [type=button], [type=reset]), select, textarea)[aria-invalid=true] + :where(small) {
|
|
473
498
|
color: var(--nc-invalid);
|
|
474
499
|
}
|
|
475
500
|
:where(label) {
|
|
@@ -479,6 +504,9 @@
|
|
|
479
504
|
:where(label:has(+ input, + select, + textarea)) {
|
|
480
505
|
font-weight: 600;
|
|
481
506
|
}
|
|
507
|
+
:where(label:has(+ [type=file], + [type=range])) {
|
|
508
|
+
margin-bottom: 0.5em;
|
|
509
|
+
}
|
|
482
510
|
:where(fieldset) {
|
|
483
511
|
border: 1px solid var(--nc-border);
|
|
484
512
|
border-radius: var(--nc-radius);
|
|
@@ -500,14 +528,19 @@
|
|
|
500
528
|
display: flex;
|
|
501
529
|
align-items: center;
|
|
502
530
|
gap: 0.35em;
|
|
503
|
-
margin-bottom:
|
|
531
|
+
margin-bottom: 0.5em;
|
|
532
|
+
}
|
|
533
|
+
:where(label:has([type=checkbox], [type=radio]):last-child) {
|
|
534
|
+
margin-bottom: 0;
|
|
504
535
|
}
|
|
505
|
-
:where(
|
|
506
|
-
|
|
536
|
+
:where([type=search]) {
|
|
537
|
+
border-radius: 5rem;
|
|
538
|
+
padding-inline: 1.25em;
|
|
507
539
|
}
|
|
508
540
|
:where([type=range]) {
|
|
509
541
|
accent-color: var(--nc-primary);
|
|
510
542
|
width: 100%;
|
|
543
|
+
margin-bottom: var(--nc-spacing);
|
|
511
544
|
}
|
|
512
545
|
:where(input[list]) {
|
|
513
546
|
width: auto;
|
|
@@ -517,6 +550,7 @@
|
|
|
517
550
|
font: inherit;
|
|
518
551
|
cursor: pointer;
|
|
519
552
|
max-width: 100%;
|
|
553
|
+
margin-bottom: var(--nc-spacing);
|
|
520
554
|
}
|
|
521
555
|
:where([type=file])::file-selector-button {
|
|
522
556
|
padding: 0.5em 1em;
|
|
@@ -540,6 +574,7 @@
|
|
|
540
574
|
}
|
|
541
575
|
:where([type=color]) {
|
|
542
576
|
--_color-size: calc(1em * 1.5 + 1em + 2px);
|
|
577
|
+
margin-bottom: var(--nc-spacing);
|
|
543
578
|
--_color-pad: 0.25em;
|
|
544
579
|
height: var(--_color-size);
|
|
545
580
|
width: calc((var(--_color-size) - 2 * var(--_color-pad)) * 1.618 + 2 * var(--_color-pad));
|
|
@@ -557,7 +592,7 @@
|
|
|
557
592
|
border-radius: calc(var(--nc-radius) * 0.5);
|
|
558
593
|
}
|
|
559
594
|
:where(label:has([type=checkbox][role=switch])) {
|
|
560
|
-
display:
|
|
595
|
+
display: flex;
|
|
561
596
|
align-items: center;
|
|
562
597
|
gap: 0.5em;
|
|
563
598
|
}
|
|
@@ -658,12 +693,54 @@
|
|
|
658
693
|
margin-top: 0.5em;
|
|
659
694
|
}
|
|
660
695
|
}
|
|
696
|
+
@layer nimble.base {
|
|
697
|
+
:where(article) {
|
|
698
|
+
background-color: var(--nc-surface-1);
|
|
699
|
+
border: 1px solid var(--nc-border);
|
|
700
|
+
border-radius: var(--nc-radius);
|
|
701
|
+
padding: var(--nc-spacing);
|
|
702
|
+
margin-bottom: var(--nc-spacing);
|
|
703
|
+
}
|
|
704
|
+
:where(article > header),
|
|
705
|
+
:where(article > footer) {
|
|
706
|
+
background-color: color-mix(in oklch, var(--nc-surface-1), var(--nc-surface-2) 20%);
|
|
707
|
+
padding: var(--nc-spacing);
|
|
708
|
+
}
|
|
709
|
+
:where(article > header) {
|
|
710
|
+
margin: calc(var(--nc-spacing) * -1) calc(var(--nc-spacing) * -1) var(--nc-spacing);
|
|
711
|
+
border-bottom: 1px solid var(--nc-border);
|
|
712
|
+
border-radius: var(--nc-radius) var(--nc-radius) 0 0;
|
|
713
|
+
}
|
|
714
|
+
:where(article > footer) {
|
|
715
|
+
margin: var(--nc-spacing) calc(var(--nc-spacing) * -1) calc(var(--nc-spacing) * -1);
|
|
716
|
+
border-top: 1px solid var(--nc-border);
|
|
717
|
+
border-radius: 0 0 var(--nc-radius) var(--nc-radius);
|
|
718
|
+
}
|
|
719
|
+
:where(article) > :last-child:not(footer) {
|
|
720
|
+
margin-bottom: 0;
|
|
721
|
+
}
|
|
722
|
+
:where(article > header, article > footer) > :last-child {
|
|
723
|
+
margin-bottom: 0;
|
|
724
|
+
}
|
|
725
|
+
:where(article > header, article > footer) > h1,
|
|
726
|
+
:where(article > header, article > footer) > h2,
|
|
727
|
+
:where(article > header, article > footer) > h3,
|
|
728
|
+
:where(article > header, article > footer) > h4,
|
|
729
|
+
:where(article > header, article > footer) > h5,
|
|
730
|
+
:where(article > header, article > footer) > h6 {
|
|
731
|
+
margin-top: 0;
|
|
732
|
+
margin-bottom: 0;
|
|
733
|
+
}
|
|
734
|
+
}
|
|
661
735
|
@layer nimble.base {
|
|
662
736
|
:where(details) {
|
|
663
737
|
border: 1px solid var(--nc-border);
|
|
664
738
|
border-radius: var(--nc-radius);
|
|
665
739
|
padding: 0 1em;
|
|
666
740
|
}
|
|
741
|
+
:where(details) {
|
|
742
|
+
margin-bottom: 0.5em;
|
|
743
|
+
}
|
|
667
744
|
:where(summary) {
|
|
668
745
|
cursor: pointer;
|
|
669
746
|
font-weight: 600;
|
|
@@ -877,6 +954,9 @@
|
|
|
877
954
|
rotate: 180deg;
|
|
878
955
|
}
|
|
879
956
|
:where(select)::picker(select) {
|
|
957
|
+
position-area: block-end;
|
|
958
|
+
position-try-order: normal;
|
|
959
|
+
position-try-fallbacks: flip-block;
|
|
880
960
|
border: 1px solid var(--nc-border);
|
|
881
961
|
border-radius: var(--nc-radius);
|
|
882
962
|
background-color: var(--nc-surface-1);
|
package/dist/nimble.min.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer nimble.reset{:where(:not(progress)),: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;-webkit-tap-highlight-color:transparent}: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:light-dark(oklch(28% .005 250),oklch(86% .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);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;min-width:0}::selection{background-color:var(--nc-primary-focus);color:var(--nc-text)}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:2rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.75rem;font-weight:700;line-height:1.15}h3{margin-top:1.5rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.5rem;font-weight:700;line-height:1.2}h4{margin-top:1.5rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.25rem;font-weight:700;line-height:1.3}h5{margin-top:1.5rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.125rem;font-weight:700;line-height:1.4}h6{margin-top:1.5rem;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)}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:color-mix(in oklch, var(--nc-text), transparent 40%);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(38% .15 310));-webkit-text-decoration-color:color-mix(in oklch, var(--nc-primary) 40%, oklch(38% .15 310) 30%);text-decoration-color:color-mix(in oklch, var(--nc-primary) 40%, oklch(38% .15 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]).inline{--_btn-padding-v:.05em;--_btn-padding-h:.4em;vertical-align:baseline;margin:.1em .15em;font-size:.875em}:where(button,[type=submit],[type=reset],[type=button],[role=button]):disabled{opacity:.5;cursor:not-allowed;pointer-events:none}:where([role=group]){margin-bottom:var(--nc-spacing);display:inline-flex}[role=group]>*{border-radius:0;margin:0;position:relative}[role=group]>*+*{--_divider:""}[role=group]>*+:before{content:var(--_divider);inset-inline-start:0;pointer-events:none;background:#ffffff4d;width:1px;position:absolute;top:20%;bottom:20%}[role=group]>:not(.secondary):not(.outline)+.secondary,[role=group]>.secondary+:not(.secondary):not(.outline),[role=group]>:not(.secondary):not(.outline)+.outline,[role=group]>.outline+:not(.secondary):not(.outline),[role=group]>.secondary+.outline,[role=group]>.outline+.secondary,[role=group]>input+*,[role=group]>select+*{--_divider:none}[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=group]:has(.outline):not(:has(>:not(.outline))){border:1px solid var(--nc-primary);border-radius:var(--nc-radius)}[role=group]:has(.outline):not(:has(>:not(.outline)))>.outline{border:none}[role=group]>.outline+.outline:before{background:var(--nc-primary)}[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],[type=submit],[type=button],[type=reset]),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);min-height:calc(2.5em + 2px);color:var(--nc-text);font:inherit;padding:.5em .75em;font-size:1rem;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],[type=date],[type=month],[type=week],[type=time],[type=datetime-local]),select,textarea){width:100%;margin-bottom:var(--nc-spacing)}: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)+:where(small){margin-top:calc(var(--nc-spacing) * -.75);margin-bottom:var(--nc-spacing);color:color-mix(in oklch, var(--nc-text), transparent 40%);font-size:.875em;display:block}: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(input,select,textarea)[aria-invalid=false]+:where(small){color:var(--nc-valid)}:where(input,select,textarea)[aria-invalid=true]+:where(small){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);min-width:0;max-width:100%}:where(legend){padding-inline:.25em;font-weight:600}:where([type=checkbox],[type=radio]){accent-color:var(--nc-primary);width:1.125em;height:1.125em;margin:0}:where(label:has([type=checkbox],[type=radio])){margin-bottom:var(--nc-spacing);align-items:center;gap:.35em;display:flex}:where(label:has([type=radio])){margin-bottom:.35em}:where([type=range]){accent-color:var(--nc-primary);width:100%}:where(input[list]){width:auto}:where([type=file]){color:var(--nc-text);font:inherit;cursor:pointer;max-width:100%}:where([type=file])::file-selector-button{margin-right:.75em;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;margin-inline-end:.75em;padding:.5em 1em;transition:background-color .2s,border-color .2s}:where([type=file])::file-selector-button:hover{background-color:var(--nc-primary-hover);border-color:var(--nc-primary-hover)}:where([type=date],[type=month],[type=week],[type=time],[type=datetime-local]){min-width:10em;margin-bottom:var(--nc-spacing)}:where([type=color]){--_color-size:calc(1em * 1.5 + 1em + 2px);--_color-pad:.25em;height:var(--_color-size);width:calc((var(--_color-size) - 2 * var(--_color-pad)) * 1.618 + 2 * var(--_color-pad));padding:var(--_color-pad);background-color:color-mix(in oklch, var(--nc-surface-1), var(--nc-surface-2) 20%);border:1px solid var(--nc-border);border-radius:var(--nc-radius);cursor:pointer}:where([type=color])::-webkit-color-swatch-wrapper{padding:0}:where([type=color])::-webkit-color-swatch{border-radius:calc(var(--nc-radius) * .5);border:none}:where(label:has([type=checkbox][role=switch])){align-items:center;gap:.5em;display:inline-flex}:where([type=checkbox][role=switch]){appearance:none;background-color:var(--nc-border);cursor:pointer;border-radius:1em;flex-shrink:0;width:2.5em;height:1.25em;margin:0;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:color-mix(in oklch, var(--nc-text), transparent 40%);margin-top:.5em;font-size:.9em}:where(details){border:1px solid var(--nc-border);border-radius:var(--nc-radius);padding:0 1em}:where(summary){cursor:pointer;margin:0 -1em;padding:.75em 1em;font-weight:600;list-style-type:"▶ "}:where(details[open]>summary){list-style-type:"▼ "}:where(details[open]){padding-bottom:.75em}details :last-child{margin-bottom:0}: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)}dialog::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#00000080;animation:.2s nc-backdrop-in}@keyframes nc-backdrop-in{0%{opacity:0}}:where(progress){appearance:none;border-radius:var(--nc-radius);background-color:var(--nc-surface-3);width:100%;height:.5rem;color:var(--nc-primary);border:0;position:relative;overflow:hidden}:where(progress)::-webkit-progress-bar{border-radius:var(--nc-radius);background-color:var(--nc-surface-3)}:where(progress)::-webkit-progress-value{background-color:var(--nc-primary);border-radius:var(--nc-radius);transition:inline-size .3s}:where(progress)::-moz-progress-bar{background-color:var(--nc-primary);border-radius:var(--nc-radius)}:where(progress):not([value]){--nc-progress-track:linear-gradient(to right, var(--nc-surface-3) 0%, var(--nc-primary) 25%, var(--nc-primary) 25%, var(--nc-surface-3) 50%, var(--nc-surface-3) 50%, var(--nc-primary) 75%, var(--nc-primary) 75%, var(--nc-surface-3) 100%);--nc-progress-track-size:200% 100%}@media (prefers-reduced-motion:no-preference){@supports selector(progress::after){:where(progress):not([value]):after{content:"";background:var(--nc-progress-track);background-size:var(--nc-progress-track-size);animation:12s linear infinite nc-progress-indeterminate;position:absolute;inset:0}}:where(progress):not([value])::-webkit-progress-bar{background:var(--nc-progress-track);background-size:var(--nc-progress-track-size);animation:12s linear infinite nc-progress-indeterminate}:where(progress):not([value])::-moz-progress-bar{background:var(--nc-progress-track);background-size:var(--nc-progress-track-size);animation:12s linear infinite nc-progress-indeterminate}}@keyframes nc-progress-indeterminate{0%{background-position:0 0}to{background-position:-200% 0}}:where(meter){appearance:none;border-radius:var(--nc-radius);background-color:var(--nc-surface-3);border:0;width:100%;height:.5rem;overflow:hidden}:where(meter)::-webkit-meter-bar{border-radius:var(--nc-radius);background-color:var(--nc-surface-3);border:0;height:.5rem}:where(meter)::-webkit-meter-optimum-value{background-color:var(--nc-valid);border-radius:var(--nc-radius)}:where(meter)::-webkit-meter-suboptimum-value{background-color:var(--nc-primary);border-radius:var(--nc-radius)}:where(meter)::-webkit-meter-even-less-good-value{background-color:var(--nc-invalid);border-radius:var(--nc-radius)}:where(meter)::-moz-meter-bar{background-color:var(--nc-primary);border-radius:var(--nc-radius)}:where(meter):-moz-meter-optimum::-moz-meter-bar{background-color:var(--nc-valid)}:where(meter):-moz-meter-sub-optimum::-moz-meter-bar{background-color:var(--nc-primary)}:where(meter):-moz-meter-sub-sub-optimum::-moz-meter-bar{background-color:var(--nc-invalid)}@supports (appearance:base-select){:where(select){appearance:base-select}:where(select)::picker(select){appearance:base-select}:where(select)::picker-icon{content:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='10' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 2l6 6 6-6'/%3E%3C/svg%3E");transition:rotate .4s}:where(select):open::picker-icon{rotate:180deg}:where(select)::picker(select){border:1px solid var(--nc-border);border-radius:var(--nc-radius);background-color:var(--nc-surface-1);opacity:0;transition:opacity .2s, overlay .2s allow-discrete, display .2s allow-discrete;padding:.25em}:where(select):open::picker(select){opacity:1}@starting-style{:where(select):open::picker(select){opacity:0}}:where(select) option{border-radius:var(--nc-radius);padding:.5em .75em;transition:background-color .15s}:where(select) option:hover{background-color:var(--nc-surface-2)}:where(select) option:checked{font-weight:600}}}@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}}[type=date],[type=month],[type=week],[type=time],[type=datetime-local]{appearance:none}@supports selector(details::details-content){details::details-content{transition:opacity .3s ease, content-visibility .3s ease allow-discrete;opacity:0}details[open]::details-content{opacity:1}@supports (interpolate-size:allow-keywords){details{interpolate-size:allow-keywords}details::details-content{transition:height .3s ease, opacity .3s ease, content-visibility .3s ease allow-discrete;height:0;overflow:clip}details[open]::details-content{height: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}}
|
|
1
|
+
@layer nimble.reset{:where(:not(progress)),: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;-webkit-tap-highlight-color:transparent}: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-hue:250;--nc-surface-1:light-dark(oklch(.985 .002 var(--nc-surface-hue)),oklch(.17 .005 calc(var(--nc-surface-hue) + 10)));--nc-surface-2:light-dark(oklch(.955 .002 var(--nc-surface-hue)),oklch(.2 .005 calc(var(--nc-surface-hue) + 10)));--nc-surface-3:light-dark(oklch(.925 .002 var(--nc-surface-hue)),oklch(.23 .005 calc(var(--nc-surface-hue) + 10)));--nc-surface-4:light-dark(oklch(.885 .002 var(--nc-surface-hue)),oklch(.27 .005 calc(var(--nc-surface-hue) + 10)));--nc-text:light-dark(oklch(.28 .005 var(--nc-surface-hue)),oklch(.86 .005 var(--nc-surface-hue)));--nc-border:light-dark(oklch(.83 .005 var(--nc-surface-hue)),oklch(.28 .005 calc(var(--nc-surface-hue) + 10)));--nc-primary:light-dark(oklch(50% .2 250),oklch(60% .2 250));--nc-primary-hover:light-dark(oklch(from var(--nc-primary) calc(l - .1) c h),oklch(from var(--nc-primary) calc(l + .1) c h));--nc-primary-focus:oklch(from var(--nc-primary) l c h / .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(from var(--nc-secondary) calc(l - .1) c h),oklch(from var(--nc-secondary) calc(l + .1) c h));--nc-secondary-focus:oklch(from var(--nc-secondary) l c h / .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:60ch}[data-theme=dark]{color-scheme:dark}[data-theme=light]{color-scheme:light}html{font-family:var(--nc-font-sans);color:var(--nc-text);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>*,body>[style*="display: contents"]>*{grid-column:2;min-width:0}::selection{background-color:var(--nc-primary-focus);color:var(--nc-text)}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:2rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.75rem;font-weight:700;line-height:1.15}h3{margin-top:1.5rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.5rem;font-weight:700;line-height:1.2}h4{margin-top:1.5rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.25rem;font-weight:700;line-height:1.3}h5{margin-top:1.5rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.125rem;font-weight:700;line-height:1.4}h6{margin-top:1.5rem;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)}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:color-mix(in oklch, var(--nc-text), transparent 40%);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(38% .15 310));-webkit-text-decoration-color:color-mix(in oklch, var(--nc-primary) 40%, oklch(38% .15 310) 30%);text-decoration-color:color-mix(in oklch, var(--nc-primary) 40%, oklch(38% .15 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([type=reset]){background-color:var(--nc-secondary);border-color:var(--nc-secondary);color:var(--nc-secondary-contrast)}:where([type=reset]):hover{background-color:var(--nc-secondary-hover);border-color:var(--nc-secondary-hover)}:where([type=reset]):focus-visible{box-shadow:0 0 0 2px var(--nc-secondary-focus)}:where(button,[type=submit],[type=reset],[type=button],[role=button]).inline{--_btn-padding-v:.05em;--_btn-padding-h:.4em;vertical-align:baseline;margin:.1em .15em;font-size:.875em}:where(button,[type=submit],[type=reset],[type=button],[role=button]):disabled{opacity:.5;cursor:not-allowed;pointer-events:none}:where([role=group]){margin-bottom:var(--nc-spacing);display:inline-flex}[role=group]>*{border-radius:0;margin:0;position:relative}[role=group]>*+*{--_divider:""}[role=group]>*+:before{content:var(--_divider);inset-inline-start:0;pointer-events:none;background:#ffffff4d;width:1px;position:absolute;top:20%;bottom:20%}[role=group]>:not(.secondary):not(.outline)+.secondary,[role=group]>.secondary+:not(.secondary):not(.outline),[role=group]>:not(.secondary):not(.outline)+.outline,[role=group]>.outline+:not(.secondary):not(.outline),[role=group]>.secondary+.outline,[role=group]>.outline+.secondary,[role=group]>input+*,[role=group]>select+*{--_divider:none}[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=group]:has(.outline):not(:has(>:not(.outline))){border:1px solid var(--nc-primary);border-radius:var(--nc-radius)}[role=group]:has(.outline):not(:has(>:not(.outline)))>.outline{border:none}[role=group]>.outline+.outline:before{background:var(--nc-primary)}[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],[type=submit],[type=button],[type=reset]),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);min-height:calc(2.5em + 2px);color:var(--nc-text);font:inherit;padding:.5em .75em;font-size:1rem;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],[type=date],[type=month],[type=week],[type=time],[type=datetime-local]),select,textarea){width:100%;margin-bottom:var(--nc-spacing)}: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:not([type=submit],[type=button],[type=reset]),select,textarea)+:where(small){margin-top:calc(var(--nc-spacing) * -.75);margin-bottom:var(--nc-spacing);color:color-mix(in oklch, var(--nc-text), transparent 40%);font-size:.875em;display:block}: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(input:not([type=submit],[type=button],[type=reset]),select,textarea)[aria-invalid=false]+:where(small){color:var(--nc-valid)}:where(input:not([type=submit],[type=button],[type=reset]),select,textarea)[aria-invalid=true]+:where(small){color:var(--nc-invalid)}:where(label){margin-bottom:.25em;display:block}:where(label:has(+input,+select,+textarea)){font-weight:600}:where(label:has(+[type=file],+[type=range])){margin-bottom:.5em}:where(fieldset){border:1px solid var(--nc-border);border-radius:var(--nc-radius);padding:var(--nc-spacing);min-width:0;max-width:100%}:where(legend){padding-inline:.25em;font-weight:600}:where([type=checkbox],[type=radio]){accent-color:var(--nc-primary);width:1.125em;height:1.125em;margin:0}:where(label:has([type=checkbox],[type=radio])){align-items:center;gap:.35em;margin-bottom:.5em;display:flex}:where(label:has([type=checkbox],[type=radio]):last-child){margin-bottom:0}:where([type=search]){border-radius:5rem;padding-inline:1.25em}:where([type=range]){accent-color:var(--nc-primary);width:100%;margin-bottom:var(--nc-spacing)}:where(input[list]){width:auto}:where([type=file]){color:var(--nc-text);font:inherit;cursor:pointer;max-width:100%;margin-bottom:var(--nc-spacing)}:where([type=file])::file-selector-button{margin-right:.75em;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;margin-inline-end:.75em;padding:.5em 1em;transition:background-color .2s,border-color .2s}:where([type=file])::file-selector-button:hover{background-color:var(--nc-primary-hover);border-color:var(--nc-primary-hover)}:where([type=date],[type=month],[type=week],[type=time],[type=datetime-local]){min-width:10em;margin-bottom:var(--nc-spacing)}:where([type=color]){--_color-size:calc(1em * 1.5 + 1em + 2px);margin-bottom:var(--nc-spacing);--_color-pad:.25em;height:var(--_color-size);width:calc((var(--_color-size) - 2 * var(--_color-pad)) * 1.618 + 2 * var(--_color-pad));padding:var(--_color-pad);background-color:color-mix(in oklch, var(--nc-surface-1), var(--nc-surface-2) 20%);border:1px solid var(--nc-border);border-radius:var(--nc-radius);cursor:pointer}:where([type=color])::-webkit-color-swatch-wrapper{padding:0}:where([type=color])::-webkit-color-swatch{border-radius:calc(var(--nc-radius) * .5);border:none}:where(label:has([type=checkbox][role=switch])){align-items:center;gap:.5em;display:flex}:where([type=checkbox][role=switch]){appearance:none;background-color:var(--nc-border);cursor:pointer;border-radius:1em;flex-shrink:0;width:2.5em;height:1.25em;margin:0;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:color-mix(in oklch, var(--nc-text), transparent 40%);margin-top:.5em;font-size:.9em}:where(article){background-color:var(--nc-surface-1);border:1px solid var(--nc-border);border-radius:var(--nc-radius);padding:var(--nc-spacing);margin-bottom:var(--nc-spacing)}:where(article>header),:where(article>footer){background-color:color-mix(in oklch, var(--nc-surface-1), var(--nc-surface-2) 20%);padding:var(--nc-spacing)}:where(article>header){margin:calc(var(--nc-spacing) * -1) calc(var(--nc-spacing) * -1) var(--nc-spacing);border-bottom:1px solid var(--nc-border);border-radius:var(--nc-radius) var(--nc-radius) 0 0}:where(article>footer){margin:var(--nc-spacing) calc(var(--nc-spacing) * -1) calc(var(--nc-spacing) * -1);border-top:1px solid var(--nc-border);border-radius:0 0 var(--nc-radius) var(--nc-radius)}:where(article)>:last-child:not(footer),:where(article>header,article>footer)>:last-child{margin-bottom:0}:where(article>header,article>footer)>h1,:where(article>header,article>footer)>h2,:where(article>header,article>footer)>h3,:where(article>header,article>footer)>h4,:where(article>header,article>footer)>h5,:where(article>header,article>footer)>h6{margin-top:0;margin-bottom:0}:where(details){border:1px solid var(--nc-border);border-radius:var(--nc-radius);margin-bottom:.5em;padding:0 1em}:where(summary){cursor:pointer;margin:0 -1em;padding:.75em 1em;font-weight:600;list-style-type:"▶ "}:where(details[open]>summary){list-style-type:"▼ "}:where(details[open]){padding-bottom:.75em}details :last-child{margin-bottom:0}: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)}dialog::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#00000080;animation:.2s nc-backdrop-in}@keyframes nc-backdrop-in{0%{opacity:0}}:where(progress){appearance:none;border-radius:var(--nc-radius);background-color:var(--nc-surface-3);width:100%;height:.5rem;color:var(--nc-primary);border:0;position:relative;overflow:hidden}:where(progress)::-webkit-progress-bar{border-radius:var(--nc-radius);background-color:var(--nc-surface-3)}:where(progress)::-webkit-progress-value{background-color:var(--nc-primary);border-radius:var(--nc-radius);transition:inline-size .3s}:where(progress)::-moz-progress-bar{background-color:var(--nc-primary);border-radius:var(--nc-radius)}:where(progress):not([value]){--nc-progress-track:linear-gradient(to right, var(--nc-surface-3) 0%, var(--nc-primary) 25%, var(--nc-primary) 25%, var(--nc-surface-3) 50%, var(--nc-surface-3) 50%, var(--nc-primary) 75%, var(--nc-primary) 75%, var(--nc-surface-3) 100%);--nc-progress-track-size:200% 100%}@media (prefers-reduced-motion:no-preference){@supports selector(progress::after){:where(progress):not([value]):after{content:"";background:var(--nc-progress-track);background-size:var(--nc-progress-track-size);animation:12s linear infinite nc-progress-indeterminate;position:absolute;inset:0}}:where(progress):not([value])::-webkit-progress-bar{background:var(--nc-progress-track);background-size:var(--nc-progress-track-size);animation:12s linear infinite nc-progress-indeterminate}:where(progress):not([value])::-moz-progress-bar{background:var(--nc-progress-track);background-size:var(--nc-progress-track-size);animation:12s linear infinite nc-progress-indeterminate}}@keyframes nc-progress-indeterminate{0%{background-position:0 0}to{background-position:-200% 0}}:where(meter){appearance:none;border-radius:var(--nc-radius);background-color:var(--nc-surface-3);border:0;width:100%;height:.5rem;overflow:hidden}:where(meter)::-webkit-meter-bar{border-radius:var(--nc-radius);background-color:var(--nc-surface-3);border:0;height:.5rem}:where(meter)::-webkit-meter-optimum-value{background-color:var(--nc-valid);border-radius:var(--nc-radius)}:where(meter)::-webkit-meter-suboptimum-value{background-color:var(--nc-primary);border-radius:var(--nc-radius)}:where(meter)::-webkit-meter-even-less-good-value{background-color:var(--nc-invalid);border-radius:var(--nc-radius)}:where(meter)::-moz-meter-bar{background-color:var(--nc-primary);border-radius:var(--nc-radius)}:where(meter):-moz-meter-optimum::-moz-meter-bar{background-color:var(--nc-valid)}:where(meter):-moz-meter-sub-optimum::-moz-meter-bar{background-color:var(--nc-primary)}:where(meter):-moz-meter-sub-sub-optimum::-moz-meter-bar{background-color:var(--nc-invalid)}@supports (appearance:base-select){:where(select){appearance:base-select}:where(select)::picker(select){appearance:base-select}:where(select)::picker-icon{content:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='10' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 2l6 6 6-6'/%3E%3C/svg%3E");transition:rotate .4s}:where(select):open::picker-icon{rotate:180deg}:where(select)::picker(select){position-area:block-end;position-try-order:normal;position-try-fallbacks:flip-block;border:1px solid var(--nc-border);border-radius:var(--nc-radius);background-color:var(--nc-surface-1);opacity:0;transition:opacity .2s, overlay .2s allow-discrete, display .2s allow-discrete;padding:.25em}:where(select):open::picker(select){opacity:1}@starting-style{:where(select):open::picker(select){opacity:0}}:where(select) option{border-radius:var(--nc-radius);padding:.5em .75em;transition:background-color .15s}:where(select) option:hover{background-color:var(--nc-surface-2)}:where(select) option:checked{font-weight:600}}}@layer nimble.utilities{.secondary:not(a:not([role=button])){background-color:var(--nc-secondary);border-color:var(--nc-secondary);color:var(--nc-secondary-contrast)}.secondary:not(a:not([role=button])):hover{background-color:var(--nc-secondary-hover);border-color:var(--nc-secondary-hover)}.secondary:not(a:not([role=button])):focus-visible{box-shadow:0 0 0 2px var(--nc-secondary-focus)}a:not([role=button]).secondary{color:var(--nc-secondary);-webkit-text-decoration-color:color-mix(in oklch, var(--nc-secondary), transparent 50%);text-decoration-color:color-mix(in oklch, var(--nc-secondary), transparent 50%)}a:not([role=button]).secondary:hover{color:var(--nc-secondary-hover);-webkit-text-decoration-color:var(--nc-secondary-hover);text-decoration-color:var(--nc-secondary-hover)}.outline:not(a:not([role=button])){color:var(--nc-primary);background-color:#0000}.outline:not(a:not([role=button])):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}}[type=date],[type=month],[type=week],[type=time],[type=datetime-local]{appearance:none}@supports selector(details::details-content){details::details-content{transition:opacity .3s ease, content-visibility .3s ease allow-discrete;opacity:0}details[open]::details-content{opacity:1}@supports (interpolate-size:allow-keywords){details{interpolate-size:allow-keywords}details::details-content{transition:height .3s ease, opacity .3s ease, content-visibility .3s ease allow-discrete;height:0;overflow:clip}details[open]::details-content{height: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
CHANGED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// ==========================================================================
|
|
2
|
+
// nimble.css — Article (Card)
|
|
3
|
+
// Styled as a self-contained card with optional header/footer separators.
|
|
4
|
+
// ==========================================================================
|
|
5
|
+
|
|
6
|
+
@use 'config' as *;
|
|
7
|
+
|
|
8
|
+
@layer nimble.base {
|
|
9
|
+
|
|
10
|
+
:where(article) {
|
|
11
|
+
background-color: var(#{$prefix}surface-1);
|
|
12
|
+
border: 1px solid var(#{$prefix}border);
|
|
13
|
+
border-radius: var(#{$prefix}radius);
|
|
14
|
+
padding: var(#{$prefix}spacing);
|
|
15
|
+
margin-bottom: var(#{$prefix}spacing);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Header and footer bleed to card edges via negative margin,
|
|
19
|
+
// with a subtle background tint (matches input background).
|
|
20
|
+
:where(article > header),
|
|
21
|
+
:where(article > footer) {
|
|
22
|
+
background-color: color-mix(in oklch, var(#{$prefix}surface-1), var(#{$prefix}surface-2) 20%);
|
|
23
|
+
padding: var(#{$prefix}spacing);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
:where(article > header) {
|
|
27
|
+
margin: calc(var(#{$prefix}spacing) * -1) calc(var(#{$prefix}spacing) * -1) var(#{$prefix}spacing);
|
|
28
|
+
border-bottom: 1px solid var(#{$prefix}border);
|
|
29
|
+
border-radius: var(#{$prefix}radius) var(#{$prefix}radius) 0 0;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
:where(article > footer) {
|
|
33
|
+
margin: var(#{$prefix}spacing) calc(var(#{$prefix}spacing) * -1) calc(var(#{$prefix}spacing) * -1);
|
|
34
|
+
border-top: 1px solid var(#{$prefix}border);
|
|
35
|
+
border-radius: 0 0 var(#{$prefix}radius) var(#{$prefix}radius);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Kill last-child bottom margin inside article so it doesn't
|
|
39
|
+
// stack with the card's own padding — but not footer, which
|
|
40
|
+
// uses negative margin to bleed to the card edge.
|
|
41
|
+
:where(article) > :last-child:not(footer) {
|
|
42
|
+
margin-bottom: 0;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Kill last-child bottom margin inside article > header/footer too —
|
|
46
|
+
// those containers use padding for spacing; a trailing margin doubles it.
|
|
47
|
+
:where(article > header, article > footer) > :last-child {
|
|
48
|
+
margin-bottom: 0;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Suppress heading top/bottom margin inside article > header / footer —
|
|
52
|
+
// the container's own padding already provides the visual gap on both sides.
|
|
53
|
+
// Real specificity on the heading tags so this wins over the plain h1–h6
|
|
54
|
+
// rule in _typography.scss (same layer, same zero-specificity containers).
|
|
55
|
+
:where(article > header, article > footer) > h1,
|
|
56
|
+
:where(article > header, article > footer) > h2,
|
|
57
|
+
:where(article > header, article > footer) > h3,
|
|
58
|
+
:where(article > header, article > footer) > h4,
|
|
59
|
+
:where(article > header, article > footer) > h5,
|
|
60
|
+
:where(article > header, article > footer) > h6 {
|
|
61
|
+
margin-top: 0;
|
|
62
|
+
margin-bottom: 0;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
}
|
package/src/_buttons.scss
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// Spec §9.2: button base, .secondary, .outline, button groups, disabled
|
|
4
4
|
// ==========================================================================
|
|
5
5
|
|
|
6
|
+
@use 'sass:string';
|
|
6
7
|
@use 'config' as *;
|
|
7
8
|
|
|
8
9
|
@layer nimble.base {
|
|
@@ -39,6 +40,23 @@
|
|
|
39
40
|
outline: none;
|
|
40
41
|
}
|
|
41
42
|
|
|
43
|
+
// ----- Reset button (secondary by default) -----
|
|
44
|
+
|
|
45
|
+
:where([type="reset"]) {
|
|
46
|
+
background-color: var(#{$prefix}secondary);
|
|
47
|
+
border-color: var(#{$prefix}secondary);
|
|
48
|
+
color: var(#{$prefix}secondary-contrast);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
:where([type="reset"]):hover {
|
|
52
|
+
background-color: var(#{$prefix}secondary-hover);
|
|
53
|
+
border-color: var(#{$prefix}secondary-hover);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
:where([type="reset"]):focus-visible {
|
|
57
|
+
box-shadow: 0 0 0 2px var(#{$prefix}secondary-focus);
|
|
58
|
+
}
|
|
59
|
+
|
|
42
60
|
// ----- Inline (buttons within flow text) -----
|
|
43
61
|
|
|
44
62
|
:where(button, [type="submit"], [type="reset"], [type="button"], [role="button"]).inline {
|
|
@@ -164,27 +182,37 @@
|
|
|
164
182
|
|
|
165
183
|
@layer nimble.utilities {
|
|
166
184
|
|
|
167
|
-
.secondary {
|
|
185
|
+
.secondary:not(a:not([role="button"])) {
|
|
168
186
|
background-color: var(#{$prefix}secondary);
|
|
169
187
|
border-color: var(#{$prefix}secondary);
|
|
170
188
|
color: var(#{$prefix}secondary-contrast);
|
|
171
189
|
}
|
|
172
190
|
|
|
173
|
-
.secondary:hover {
|
|
191
|
+
.secondary:not(a:not([role="button"])):hover {
|
|
174
192
|
background-color: var(#{$prefix}secondary-hover);
|
|
175
193
|
border-color: var(#{$prefix}secondary-hover);
|
|
176
194
|
}
|
|
177
195
|
|
|
178
|
-
.secondary:focus-visible {
|
|
196
|
+
.secondary:not(a:not([role="button"])):focus-visible {
|
|
179
197
|
box-shadow: 0 0 0 2px var(#{$prefix}secondary-focus);
|
|
180
198
|
}
|
|
181
199
|
|
|
182
|
-
.
|
|
200
|
+
a:not([role="button"]).secondary {
|
|
201
|
+
color: var(#{$prefix}secondary);
|
|
202
|
+
text-decoration-color: #{string.unquote('color-mix(in oklch, var(#{$prefix}secondary), transparent 50%)')};
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
a:not([role="button"]).secondary:hover {
|
|
206
|
+
color: var(#{$prefix}secondary-hover);
|
|
207
|
+
text-decoration-color: var(#{$prefix}secondary-hover);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.outline:not(a:not([role="button"])) {
|
|
183
211
|
background-color: transparent;
|
|
184
212
|
color: var(#{$prefix}primary);
|
|
185
213
|
}
|
|
186
214
|
|
|
187
|
-
.outline:hover {
|
|
215
|
+
.outline:not(a:not([role="button"])):hover {
|
|
188
216
|
background-color: var(#{$prefix}primary-focus);
|
|
189
217
|
color: var(#{$prefix}primary-hover);
|
|
190
218
|
border-color: var(#{$prefix}primary-hover);
|
package/src/_colors.scss
CHANGED
|
@@ -29,58 +29,63 @@
|
|
|
29
29
|
:root {
|
|
30
30
|
color-scheme: light dark;
|
|
31
31
|
|
|
32
|
+
// ----- Surface hue (shared by surfaces, text, border) -----
|
|
33
|
+
#{$prefix}surface-hue: #{$surface-hue};
|
|
34
|
+
|
|
32
35
|
// ----- Surfaces -----
|
|
33
36
|
// Surface 1: page background (base lightness)
|
|
34
37
|
#{$prefix}surface-1: #{_light-dark(
|
|
35
|
-
|
|
36
|
-
|
|
38
|
+
string.unquote('oklch(#{$surface-light-base} #{$surface-chroma} var(#{$prefix}surface-hue))'),
|
|
39
|
+
string.unquote('oklch(#{$surface-dark-base} #{$surface-chroma + $surface-dark-chroma-boost} calc(var(#{$prefix}surface-hue) + #{$surface-dark-hue-shift}))')
|
|
37
40
|
)};
|
|
38
41
|
|
|
39
42
|
// Surface 2-4: generated from offsets
|
|
40
43
|
@each $level, $offset in $surface-offsets {
|
|
41
44
|
#{$prefix}surface-#{$level}: #{_light-dark(
|
|
42
|
-
|
|
43
|
-
|
|
45
|
+
string.unquote('oklch(#{$surface-light-base - $offset} #{$surface-chroma} var(#{$prefix}surface-hue))'),
|
|
46
|
+
string.unquote('oklch(#{$surface-dark-base + $offset} #{$surface-chroma + $surface-dark-chroma-boost} calc(var(#{$prefix}surface-hue) + #{$surface-dark-hue-shift}))')
|
|
44
47
|
)};
|
|
45
48
|
}
|
|
46
49
|
|
|
47
50
|
// ----- Text -----
|
|
48
51
|
#{$prefix}text: #{_light-dark(
|
|
49
|
-
|
|
50
|
-
|
|
52
|
+
string.unquote('oklch(0.28 0.005 var(#{$prefix}surface-hue))'),
|
|
53
|
+
string.unquote('oklch(0.86 0.005 var(#{$prefix}surface-hue))')
|
|
51
54
|
)};
|
|
52
55
|
|
|
53
56
|
// ----- Border -----
|
|
54
57
|
#{$prefix}border: #{_light-dark(
|
|
55
|
-
|
|
56
|
-
|
|
58
|
+
string.unquote('oklch(0.83 0.005 var(#{$prefix}surface-hue))'),
|
|
59
|
+
string.unquote('oklch(0.28 0.005 calc(var(#{$prefix}surface-hue) + #{$surface-dark-hue-shift}))')
|
|
57
60
|
)};
|
|
58
61
|
|
|
59
62
|
// ----- Primary (main accent) -----
|
|
63
|
+
// Base color; hover/focus are derived via relative color syntax
|
|
60
64
|
#{$prefix}primary: #{_light-dark(
|
|
61
65
|
_oklch($primary-lightness, $primary-chroma, $primary-hue),
|
|
62
66
|
_oklch($primary-lightness + 0.1, $primary-chroma, $primary-hue)
|
|
63
67
|
)};
|
|
64
68
|
#{$prefix}primary-hover: #{_light-dark(
|
|
65
|
-
|
|
66
|
-
|
|
69
|
+
string.unquote('oklch(from var(#{$prefix}primary) calc(l - 0.1) c h)'),
|
|
70
|
+
string.unquote('oklch(from var(#{$prefix}primary) calc(l + 0.1) c h)')
|
|
67
71
|
)};
|
|
68
|
-
#{$prefix}primary-focus: #{
|
|
72
|
+
#{$prefix}primary-focus: #{string.unquote('oklch(from var(#{$prefix}primary) l c h / 0.4)')};
|
|
69
73
|
#{$prefix}primary-contrast: #{_light-dark(
|
|
70
74
|
'#fff',
|
|
71
75
|
_oklch(0.15, 0.005, $surface-hue)
|
|
72
76
|
)};
|
|
73
77
|
|
|
74
78
|
// ----- Secondary (neutral accent) -----
|
|
79
|
+
// Base color; hover/focus are derived via relative color syntax
|
|
75
80
|
#{$prefix}secondary: #{_light-dark(
|
|
76
81
|
_oklch($secondary-lightness, $secondary-chroma, $secondary-hue),
|
|
77
82
|
_oklch($secondary-lightness + 0.15, $secondary-chroma, $secondary-hue)
|
|
78
83
|
)};
|
|
79
84
|
#{$prefix}secondary-hover: #{_light-dark(
|
|
80
|
-
|
|
81
|
-
|
|
85
|
+
string.unquote('oklch(from var(#{$prefix}secondary) calc(l - 0.1) c h)'),
|
|
86
|
+
string.unquote('oklch(from var(#{$prefix}secondary) calc(l + 0.1) c h)')
|
|
82
87
|
)};
|
|
83
|
-
#{$prefix}secondary-focus: #{
|
|
88
|
+
#{$prefix}secondary-focus: #{string.unquote('oklch(from var(#{$prefix}secondary) l c h / 0.3)')};
|
|
84
89
|
#{$prefix}secondary-contrast: #{_light-dark(
|
|
85
90
|
'#fff',
|
|
86
91
|
_oklch(0.15, 0.005, $surface-hue)
|
package/src/_config.scss
CHANGED
|
@@ -46,7 +46,7 @@ $font-mono: ui-monospace, 'Cascadia Code', 'Source Code Pro',
|
|
|
46
46
|
// --- Spacing & Layout ---
|
|
47
47
|
$spacing: 1rem !default;
|
|
48
48
|
$radius: 0.25rem !default;
|
|
49
|
-
$content-width:
|
|
49
|
+
$content-width: 60ch !default;
|
|
50
50
|
$wide-width: 1200px !default;
|
|
51
51
|
|
|
52
52
|
// --- Breakpoints ---
|
package/src/_details.scss
CHANGED
package/src/_document.scss
CHANGED
|
@@ -33,6 +33,16 @@
|
|
|
33
33
|
min-width: 0; // Allow grid children to shrink below intrinsic content width
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
// Fix for frameworks (SvelteKit, etc.) that insert a
|
|
37
|
+
// <div style="display: contents"> wrapper between <body> and content.
|
|
38
|
+
// display: contents removes the element from the box tree for layout,
|
|
39
|
+
// but NOT for CSS selector matching — so body > * misses the actual
|
|
40
|
+
// content elements. This rule mirrors the body > * rule above.
|
|
41
|
+
body > [style*='display: contents'] > * {
|
|
42
|
+
grid-column: 2;
|
|
43
|
+
min-width: 0;
|
|
44
|
+
}
|
|
45
|
+
|
|
36
46
|
// Selection styling using primary accent
|
|
37
47
|
::selection {
|
|
38
48
|
background-color: var(#{$prefix}primary-focus);
|