@capillaryjs/capillary-viz 1.0.0-alpha.1

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,1095 @@
1
+ /* Generated by scripts/build-structural-css.mjs. Do not edit directly. */
2
+
3
+ .cap-fill-horizontal,
4
+ .cap-fill-vertical {
5
+ box-sizing: border-box;
6
+ background: var(--application-background);
7
+ color: var(--ui-color);
8
+ font-family: var(--font-family);
9
+ font-size: var(--font-size);
10
+ line-height: var(--line-height);
11
+ }
12
+
13
+ .cap-fill-horizontal {
14
+ width: 100vw;
15
+ max-width: 100vw;
16
+ min-width: 0;
17
+ overflow-x: auto;
18
+ }
19
+
20
+ .cap-fill-vertical {
21
+ height: 100vh;
22
+ max-height: 100vh;
23
+ min-height: 0;
24
+ overflow-y: auto;
25
+ }
26
+
27
+ .cap-layout-horizontal,
28
+ .cap-layout-vertical {
29
+ display: flex;
30
+ align-items: stretch;
31
+ min-inline-size: 0;
32
+ min-block-size: 0;
33
+ }
34
+
35
+ .cap-layout-horizontal {
36
+ flex-direction: row;
37
+ }
38
+
39
+ .cap-layout-vertical {
40
+ flex-direction: column;
41
+ }
42
+
43
+ .cap-size-natural {
44
+ flex: 0 0 auto;
45
+ }
46
+
47
+ .cap-size-flexible {
48
+ flex: 1 1 0;
49
+ min-inline-size: 0;
50
+ min-block-size: 0;
51
+ }
52
+
53
+ .cap-scroll {
54
+ overflow: auto;
55
+ min-inline-size: 0;
56
+ min-block-size: 0;
57
+ }
58
+
59
+ .colored {
60
+ --colored-base-bg:
61
+ linear-gradient(
62
+ 15deg,
63
+ var(--c1) 0%,
64
+ var(--c2) 65%,
65
+ var(--c2) 65%,
66
+ var(--c3) 100%
67
+ );
68
+
69
+ background: var(--colored-base-bg);
70
+ box-shadow: var(--colored-shadow);
71
+ border-radius: var(--ui-border-radius);
72
+ }
73
+
74
+ .app-footer.island,
75
+ .island {
76
+ box-sizing: border-box;
77
+ min-width: 0;
78
+ min-height: 0;
79
+ margin: var(--island-margin);
80
+ padding: var(--island-padding);
81
+ background: var(--island-background);
82
+ border: var(--island-border);
83
+ border-radius: var(--island-radius);
84
+ box-shadow: var(--island-shadow);
85
+ }
86
+
87
+ .cap-fill-horizontal.island,
88
+ .cap-fill-horizontal .island {
89
+ max-width: calc(100% - (2 * var(--island-margin)));
90
+ overflow-x: auto;
91
+ }
92
+
93
+ .cap-fill-vertical.island,
94
+ .cap-fill-vertical .island {
95
+ max-height: calc(100% - (2 * var(--island-margin)));
96
+ overflow-y: auto;
97
+ }
98
+
99
+ label[data-cap] {
100
+ user-select: none;
101
+ }
102
+
103
+ cap-blockgraph {
104
+ display: flex;
105
+ min-width: 0;
106
+ min-height: var(--viz-block-graph-min-height, 24rem);
107
+ flex-direction: column;
108
+ padding: var(--viz-space, 0.7rem);
109
+ overflow: hidden;
110
+ user-select: none;
111
+ }
112
+
113
+ cap-blockgraph > header {
114
+ display: flex;
115
+ flex: 0 0 auto;
116
+ flex-wrap: wrap;
117
+ justify-content: space-between;
118
+ gap: 0.5rem;
119
+ margin-block-end: 0.6rem;
120
+ }
121
+
122
+ cap-blockgraph h2,
123
+ cap-blockgraph p {
124
+ margin: 0;
125
+ }
126
+
127
+ cap-blockgraph header output {
128
+ display: block;
129
+ margin-block-start: 0.25rem;
130
+ }
131
+
132
+ cap-blockgraph > cap-scroller {
133
+ flex: 1;
134
+ min-width: 0;
135
+ min-height: 20rem;
136
+ overflow: auto;
137
+ }
138
+
139
+ cap-blockgraph cap-blocks,
140
+ cap-blockgraph cap-blockgroup {
141
+ display: flex;
142
+ min-width: 0;
143
+ min-height: 0;
144
+ align-items: stretch;
145
+ }
146
+
147
+ cap-blockgraph cap-blocks {
148
+ width: 100%;
149
+ min-width: 34rem;
150
+ height: 100%;
151
+ min-height: 24rem;
152
+ }
153
+
154
+ cap-blockgraph .horizontal {
155
+ flex-direction: row;
156
+ }
157
+
158
+ cap-blockgraph .vertical {
159
+ flex-direction: column;
160
+ }
161
+
162
+ cap-blockgraph [role="treeitem"] {
163
+ position: relative;
164
+ display: flex;
165
+ min-width: 0;
166
+ min-height: 0;
167
+ flex-basis: 0;
168
+ flex-direction: column;
169
+ overflow: hidden;
170
+ border: var(--block-graph-block-border, 1px solid var(--c1, var(--colored-dark)));
171
+ border-radius: var(--block-graph-block-radius, 0.25em);
172
+ box-shadow: var(--block-graph-block-shadow, none);
173
+ color: var(--colored-contrast);
174
+ }
175
+
176
+ cap-blockgraph [role="treeitem"] > cap-blocklabel {
177
+ position: absolute;
178
+ z-index: 1;
179
+ inset-block-start: 0;
180
+ inset-inline-start: 0;
181
+ box-sizing: border-box;
182
+ display: grid;
183
+ grid-template-columns: minmax(0, 1fr) auto;
184
+ grid-template-areas: "label count";
185
+ align-items: center;
186
+ gap: 0 0.35rem;
187
+ width: 100%;
188
+ padding: 0.25rem 0.4rem;
189
+ overflow: hidden;
190
+ text-align: start;
191
+ border: 0;
192
+ cursor: pointer;
193
+ }
194
+
195
+ cap-blockgraph [role="treeitem"][aria-selected="true"] {
196
+ z-index: 3;
197
+ outline: 3px solid var(--viz-selection-color, var(--colored-contrast, Highlight));
198
+ outline-offset: -3px;
199
+ }
200
+
201
+ cap-blockgraph [role="treeitem"]:focus-visible {
202
+ z-index: 2;
203
+ outline: 3px solid var(--viz-focus-color, Highlight);
204
+ outline-offset: -3px;
205
+ }
206
+
207
+ cap-blockgraph cap-blocklabel > cap-blockname {
208
+ grid-area: label;
209
+ display: grid;
210
+ grid-template-columns: auto minmax(0, 1fr);
211
+ align-items: baseline;
212
+ gap: 0.2rem;
213
+ min-width: 0;
214
+ overflow: hidden;
215
+ white-space: nowrap;
216
+ }
217
+
218
+ cap-blockgraph cap-blockname > small {
219
+ overflow: hidden;
220
+ font-size: 0.68rem;
221
+ opacity: 0.82;
222
+ text-overflow: ellipsis;
223
+ white-space: nowrap;
224
+ }
225
+
226
+ cap-blockgraph cap-blockname > strong {
227
+ min-width: 0;
228
+ overflow: hidden;
229
+ text-overflow: ellipsis;
230
+ white-space: nowrap;
231
+ }
232
+
233
+ cap-blockgraph cap-blocklabel > data {
234
+ grid-area: count;
235
+ align-self: center;
236
+ font-weight: 750;
237
+ }
238
+
239
+ cap-blockgraph cap-blockgroup {
240
+ position: relative;
241
+ z-index: 1;
242
+ box-sizing: border-box;
243
+ flex: 1;
244
+ padding: var(--viz-block-graph-child-inset, 1.6em);
245
+ }
246
+
247
+ cap-blockgraph [role="treeitem"]:hover:not(:has([role="treeitem"]:hover)) {
248
+ filter: saturate(1.35) brightness(1.15);
249
+ }
250
+
251
+ @media (forced-colors: active) {
252
+ cap-blockgraph [role="treeitem"] {
253
+ color: CanvasText;
254
+ background: Canvas;
255
+ border-color: CanvasText;
256
+ forced-color-adjust: auto;
257
+ }
258
+
259
+ cap-blockgraph [role="treeitem"] > cap-blocklabel {
260
+ color: ButtonText;
261
+ background: ButtonFace;
262
+ }
263
+ }
264
+
265
+ cap-button > button {
266
+ min-height: var(--control-min-height, 2rem);
267
+ padding: var(--space-xs) var(--space-sm);
268
+ color: var(--button-color);
269
+ background: var(--button-background);
270
+ border: var(--button-border);
271
+ border-radius: var(--radius-md);
272
+ box-shadow: var(--button-shadow);
273
+ box-sizing: border-box;
274
+ cursor: default;
275
+ font-family: inherit;
276
+ font-size: var(--ui-font-size);
277
+ line-height: calc(var(--ui-font-size) + var(--ui-padding) + var(--ui-padding));
278
+ user-select: none;
279
+ white-space: nowrap;
280
+ }
281
+
282
+ cap-button {
283
+ display: inline-flex;
284
+ position: relative;
285
+ flex-flow: row wrap;
286
+ }
287
+
288
+ cap-button > button:hover:not(:disabled, [aria-disabled="true"]) {
289
+ background: var(--button-background-hover);
290
+ }
291
+
292
+ cap-button > button:active:not(:disabled, [aria-disabled="true"]) {
293
+ background: var(--button-background-active);
294
+ border-style: var(--button-border-style-active);
295
+ box-shadow: var(--button-shadow-active);
296
+ }
297
+
298
+ cap-button > button:focus-visible {
299
+ outline: 2px solid transparent;
300
+ outline-offset: 1px;
301
+ box-shadow: var(--focus-ring);
302
+ }
303
+
304
+ cap-button > button:disabled,
305
+ cap-button > button[aria-disabled="true"] {
306
+ color: var(--input-color-disabled);
307
+ background: var(--button-background-disabled);
308
+ border: var(--button-border-disabled);
309
+ cursor: not-allowed;
310
+ pointer-events: none;
311
+ }
312
+
313
+ cap-button > button[aria-busy="true"]:not([aria-invalid="true"]) {
314
+ background: var(--working-background-image), var(--button-background-disabled);
315
+ background-repeat: repeat, no-repeat;
316
+ background-size: 2rem 2rem, 100% 100%;
317
+ animation: cap-working-progress .55s linear infinite;
318
+ }
319
+
320
+ cap-button > button[aria-invalid="true"] {
321
+ border-color: var(--error-color);
322
+ }
323
+
324
+ @media (prefers-reduced-motion: reduce) {
325
+ cap-button > button[aria-busy="true"] {
326
+ animation: none !important;
327
+ }
328
+ }
329
+
330
+ @media (forced-colors: active) {
331
+ cap-button > button[aria-invalid="true"] {
332
+ outline: 2px solid Mark;
333
+ outline-offset: 1px;
334
+ }
335
+ }
336
+
337
+ cap-error {
338
+ position: absolute;
339
+ z-index: 1200;
340
+ inset-block-start: -.35em;
341
+ inset-inline-end: -.35em;
342
+ display: block;
343
+ width: 1.25em;
344
+ height: 1.25em;
345
+ margin: 0;
346
+ color: var(--error-color);
347
+ font-size: .875em;
348
+ line-height: 1.35;
349
+ outline: none;
350
+ box-sizing: border-box;
351
+ }
352
+
353
+ cap-error > cap-erroricon {
354
+ position: absolute;
355
+ inset: 0;
356
+ display: grid;
357
+ width: 1.25em;
358
+ height: 1.25em;
359
+ color: var(--error-contrast);
360
+ background: var(--error-color);
361
+ border: 1px solid var(--error-color);
362
+ border-radius: 50%;
363
+ box-sizing: border-box;
364
+ font-weight: 700;
365
+ line-height: 1;
366
+ place-items: center;
367
+ }
368
+
369
+ cap-error > cap-erroricon::before {
370
+ content: "!";
371
+ }
372
+
373
+ cap-error > cap-errortext {
374
+ position: absolute;
375
+ z-index: 1;
376
+ inset-block-start: calc(100% + .25em);
377
+ inset-inline-end: 0;
378
+ display: block;
379
+ visibility: hidden;
380
+ width: max-content;
381
+ max-width: min(22rem, 80vw);
382
+ padding: var(--space-xs) var(--space-sm);
383
+ color: var(--ui-color);
384
+ background: var(--error-bg-neutral, var(--application-background));
385
+ border: 1px solid var(--error-color);
386
+ border-radius: var(--radius-md);
387
+ box-shadow: var(--ui-shadow);
388
+ opacity: 0;
389
+ overflow-wrap: anywhere;
390
+ pointer-events: none;
391
+ transform: translateY(-.2em);
392
+ transition: opacity var(--motion-fast), transform var(--motion-fast), visibility 0s linear var(--motion-fast);
393
+ }
394
+
395
+ cap-error > cap-erroricon:hover + cap-errortext,
396
+ cap-error:focus-visible > cap-errortext {
397
+ visibility: visible;
398
+ opacity: 1;
399
+ transform: translateY(0);
400
+ transition-delay: 0s;
401
+ }
402
+
403
+ cap-error:focus-visible > cap-erroricon {
404
+ outline: 2px solid transparent;
405
+ outline-offset: 1px;
406
+ box-shadow: var(--focus-ring);
407
+ }
408
+
409
+ @media (forced-colors: active) {
410
+ cap-error > cap-erroricon,
411
+ cap-error > cap-errortext {
412
+ color: CanvasText;
413
+ background: Canvas;
414
+ border-color: Mark;
415
+ forced-color-adjust: auto;
416
+ }
417
+ }
418
+
419
+ @keyframes cap-working-progress {
420
+ from { background-position: 0 0, 0 0; }
421
+ to { background-position: 2rem 0, 0 0; }
422
+ }
423
+
424
+ cap-categoryhidepanel,
425
+ cap-groupbox {
426
+ display: flex;
427
+ flex-flow: var(--cap-groupbox-flow, row nowrap);
428
+ align-items: stretch;
429
+ box-sizing: border-box;
430
+ gap: var(--cap-groupbox-gap, 0 0.35rem);
431
+ padding: var(--cap-groupbox-padding, 0.125rem 0.35rem 0.125rem 0.125rem);
432
+ border: var(--cap-groupbox-border, 1px solid var(--ui-border-color));
433
+ border-radius: var(--ui-border-radius);
434
+ position: relative;
435
+ min-width: 0;
436
+ min-height: 0;
437
+ }
438
+
439
+ cap-categoryhidepanel > cap-header,
440
+ cap-groupbox > cap-header {
441
+ display: grid;
442
+ place-items: var(--cap-groupbox-header-align, center);
443
+ box-sizing: border-box;
444
+ width: var(--cap-groupbox-header-width, 1.7em);
445
+ padding: var(--cap-groupbox-header-padding, 0.125em);
446
+ border-radius: var(--ui-border-radius);
447
+ color: var(--cap-groupbox-header-color, var(--section-header-color));
448
+ background: var(--cap-groupbox-header-background, var(--section-header-background));
449
+ box-shadow: var(--cap-groupbox-header-shadow, var(--section-header-shadow));
450
+ writing-mode: var(--cap-groupbox-header-writing, vertical-rl);
451
+ transform: var(--cap-groupbox-header-transform, rotate(180deg));
452
+ font-weight: normal;
453
+ font-size: var(--ui-font-size);
454
+ min-width: 0;
455
+ min-height: 0;
456
+ }
457
+
458
+ cap-categoryhidepanel > cap-content,
459
+ cap-groupbox > cap-content {
460
+ display: block;
461
+ min-width: 0;
462
+ min-height: 0;
463
+ margin-left: var(--cap-groupbox-content-margin, .25em);
464
+ }
465
+
466
+ .cap-layout-horizontal cap-categoryhidepanel > cap-content > cap-layout,
467
+ .cap-layout-horizontal cap-groupbox > cap-content > cap-layout,
468
+ .cap-layout-vertical cap-categoryhidepanel > cap-content > cap-layout,
469
+ .cap-layout-vertical cap-groupbox > cap-content > cap-layout {
470
+ gap: .5rem;
471
+ justify-content: flex-start;
472
+ align-content: flex-start;
473
+ justify-items: flex-start;
474
+ align-items: flex-start;
475
+ }
476
+
477
+ /* Presentation contexts: each marker sets the complete context-sensitive
478
+ property set, so the nearest marked ancestor wins through ordinary
479
+ custom-property inheritance. Unmarked containers keep the control
480
+ defaults declared as var() fallbacks above. */
481
+ [data-cap-context='control'] {
482
+ --cap-groupbox-flow: row nowrap;
483
+ --cap-groupbox-gap: 0 0.35rem;
484
+ --cap-groupbox-padding: 0.125rem 0.35rem 0.125rem 0.125rem;
485
+ --cap-groupbox-border: 1px solid var(--ui-border-color);
486
+ --cap-groupbox-header-align: center;
487
+ --cap-groupbox-header-width: 1.7em;
488
+ --cap-groupbox-header-padding: 0.125em;
489
+ --cap-groupbox-header-color: var(--section-header-color);
490
+ --cap-groupbox-header-background: var(--section-header-background);
491
+ --cap-groupbox-header-shadow: var(--section-header-shadow);
492
+ --cap-groupbox-header-writing: vertical-rl;
493
+ --cap-groupbox-header-transform: rotate(180deg);
494
+ --cap-groupbox-content-margin: .25em;
495
+ }
496
+
497
+ [data-cap-context='form'] {
498
+ --cap-groupbox-flow: column nowrap;
499
+ --cap-groupbox-gap: 0.25rem 0;
500
+ --cap-groupbox-padding: 0.5rem;
501
+ --cap-groupbox-border: 1px solid var(--ui-border-color);
502
+ --cap-groupbox-header-align: center start;
503
+ --cap-groupbox-header-width: auto;
504
+ --cap-groupbox-header-padding: 0;
505
+ --cap-groupbox-header-color: var(--text-color);
506
+ --cap-groupbox-header-background: none;
507
+ --cap-groupbox-header-shadow: none;
508
+ --cap-groupbox-header-writing: horizontal-tb;
509
+ --cap-groupbox-header-transform: none;
510
+ --cap-groupbox-content-margin: 0;
511
+ }
512
+
513
+ [data-cap-context='form'] cap-categoryhidepanel,
514
+ [data-cap-context='form'] cap-groupbox {
515
+ flex: 1 1 auto;
516
+ align-self: stretch;
517
+ padding-top: 1em;
518
+ }
519
+
520
+ .cap-layout-horizontal cap-categoryhidepanel,
521
+ .cap-layout-horizontal cap-groupbox {
522
+ max-width: 15rem;
523
+ min-width: 0;
524
+ }
525
+
526
+ .cap-layout-vertical cap-categoryhidepanel,
527
+ .cap-layout-vertical cap-groupbox {
528
+ max-height: 15rem;
529
+ min-height: 0;
530
+ }
531
+
532
+ [data-cap-context='form'] cap-groupbox > cap-header {
533
+ position: absolute;
534
+ left: calc(0px - var(--ui-font-size) / 2);
535
+ top: calc(0px - var(--ui-font-size) / 2);
536
+ background: var(--panel-background);
537
+ padding: 2px 5px;
538
+ }
539
+
540
+ cap-categoryhidepanel > cap-content {
541
+ display: flex;
542
+ flex-direction: column;
543
+ align-self: stretch;
544
+ flex: 1 1 0;
545
+ gap: .5em;
546
+ }
547
+
548
+ cap-categoryhidepanel > cap-content * > fieldset > legend {
549
+ display: flex;
550
+ justify-content: space-between;
551
+ align-items: center;
552
+ box-sizing: border-box;
553
+ font-size: var(--ui-font-size);
554
+ color: var(--palette-neutral-950);
555
+ gap: 0.5rem;
556
+ width: 100%;
557
+ padding: 0 0 0.25em;
558
+ margin-bottom: 0.25em;
559
+ border-bottom: 1px solid var(--ui-border-color);
560
+ user-select: none;
561
+ }
562
+
563
+ cap-categoryhidepanel > cap-content * > fieldset {
564
+ display: flex;
565
+ flex-flow: column;
566
+ justify-content: stretch;
567
+ justify-items: stretch;
568
+ align-items: stretch;
569
+ align-content: stretch;
570
+ box-sizing: border-box;
571
+ width: 100%;
572
+ gap: 0;
573
+ padding: .25em 0 .5em 0;
574
+ }
575
+
576
+ cap-categoryhidepanel {
577
+ flex: 0 0 auto;
578
+ min-width: 0;
579
+ user-select: none;
580
+ }
581
+
582
+ cap-categoryhidepanel > cap-content > cap-categoryhidecontent {
583
+ display: grid;
584
+ align-content: start;
585
+ gap: var(--viz-space, 0.6rem);
586
+ min-width: 0;
587
+ }
588
+
589
+ cap-categoryhidepanel > cap-content > cap-categoryhidecontent > p {
590
+ margin: 0;
591
+ color: var(--viz-muted-color, var(--ui-muted-text-color, currentColor));
592
+ font-size: 0.875em;
593
+ }
594
+
595
+ cap-categoryhidepanel > cap-content > cap-categoryhidecontent > cap-criteriongroups {
596
+ display: grid;
597
+ gap: 1em;
598
+ min-width: 0;
599
+ }
600
+
601
+ cap-categoryhidepanel cap-collapsible-option-group > fieldset > legend small {
602
+ white-space: nowrap;
603
+ }
604
+
605
+ cap-categoryhidepanel cap-categories {
606
+ display: flex;
607
+ box-sizing: border-box;
608
+ gap: .31em;
609
+ min-width: 0;
610
+ flex-flow: column;
611
+ padding: 0;
612
+ overflow: visible;
613
+ }
614
+
615
+ cap-categoryhidepanel cap-categoryoption {
616
+ display: flex;
617
+ flex-flow: row nowrap;
618
+ align-items: center;
619
+ gap: 0.45rem;
620
+ min-width: 0;
621
+ max-height: 1em;
622
+ }
623
+
624
+ cap-categoryhidepanel cap-categoryswatch {
625
+ display: block;
626
+ width: 1rem;
627
+ height: 1rem;
628
+ border: 1px solid var(--c1);
629
+ border-radius: 0.2rem;
630
+ background: linear-gradient(15deg, var(--c1) 0%, var(--c2) 65%, var(--c2) 65%, var(--c3) 100%);
631
+ }
632
+
633
+ cap-categoryhidepanel cap-categoryoption:has(input:not(:checked)) > cap-categoryswatch {
634
+ opacity: 0.22;
635
+ }
636
+
637
+ cap-categoryhidepanel cap-categoryoption > cap-checkbox,
638
+ cap-categoryhidepanel cap-categoryoption > cap-checkbox > label {
639
+ min-width: 0;
640
+ width: 100%;
641
+ height: unset;
642
+ }
643
+
644
+ cap-categoryhidepanel cap-categoryoption > cap-checkbox > label {
645
+ justify-content: flex-start;
646
+ text-align: start;
647
+ white-space: nowrap;
648
+ }
649
+
650
+ cap-header {
651
+ display: block;
652
+ color: var(--section-header-color);
653
+ border-radius: var(--ui-border-radius) var(--ui-border-radius) 0 0;
654
+ padding: .25em;
655
+ background: var(--section-header-background);
656
+ box-shadow: var(--section-header-shadow);
657
+ z-index: 1;
658
+ user-select: none;
659
+ }
660
+
661
+ cap-header > h1,
662
+ cap-header > h2,
663
+ cap-header > h3,
664
+ cap-header > h4,
665
+ cap-header > h5,
666
+ cap-header > h6 {
667
+ margin: 0;
668
+ font: inherit;
669
+ }
670
+
671
+ cap-checkbox {
672
+ display: inline-flex;
673
+ position: relative;
674
+ flex-flow: row wrap;
675
+ line-height: 1;
676
+ }
677
+
678
+ cap-checkbox > label {
679
+ display: flex;
680
+ flex-flow: row nowrap;
681
+ position: relative;
682
+ line-height: calc(var(--ui-font-size) + var(--ui-padding) + var(--ui-padding));
683
+ font-size: var(--ui-font-size);
684
+ height: calc(var(--ui-font-size) + var(--ui-padding-h) + var(--ui-padding-h));
685
+ color: var(--ui-text-color);
686
+ border-radius: var(--ui-border-radius);
687
+ box-sizing: border-box;
688
+ align-items: center;
689
+ gap: .3em;
690
+ align-content: center;
691
+ justify-content: center;
692
+ justify-items: center;
693
+ cursor: pointer;
694
+ user-select: none;
695
+ }
696
+
697
+ cap-checkbox > label:has(> input:disabled) {
698
+ color: var(--checkable-label-color-disabled);
699
+ cursor: not-allowed;
700
+ }
701
+
702
+ cap-checkbox > label > input {
703
+ position: absolute;
704
+ width: 1px;
705
+ height: 1px;
706
+ padding: 0;
707
+ margin: -1px;
708
+ overflow: hidden;
709
+ clip: rect(0 0 0 0);
710
+ white-space: nowrap;
711
+ border: 0;
712
+ font: inherit;
713
+ font-size: var(--ui-font-size, inherit);
714
+ }
715
+
716
+ cap-checkbox > label > input + cap-checkshell {
717
+ position: relative;
718
+ display: grid;
719
+ width: 1em;
720
+ height: 1em;
721
+ flex: 0 0 1em;
722
+ box-sizing: border-box;
723
+ text-align: center;
724
+ line-height: 120%;
725
+ color: var(--input-color, var(--ui-text-color, currentColor));
726
+ background: var(--checkbox-box-background, var(--ui-input-bg, transparent));
727
+ border: var(--checkbox-box-border, var(--cbx-o-border, 1px solid currentColor));
728
+ border-radius: var(--cbx-border-radius, var(--radius-sm, 0.2rem));
729
+ box-shadow: var(--checkbox-box-shadow);
730
+ font-family: inherit;
731
+ font-size: 1em;
732
+ user-select: none;
733
+ place-items: center;
734
+ }
735
+
736
+ cap-checkbox > label > input:checked + cap-checkshell {
737
+ color: var(--checkbox-symbol-color, var(--selection-color, currentColor));
738
+ background: var(--checkbox-box-background-checked,
739
+ var(--selection-background, var(--ui-accent-color, Highlight)));
740
+ box-shadow: var(--checkbox-box-shadow-checked);
741
+ }
742
+
743
+ cap-checkbox > label > input:focus-visible + cap-checkshell {
744
+ outline: 2px solid var(--focus-color, var(--ui-accent-color, Highlight));
745
+ outline-offset: 1px;
746
+ }
747
+
748
+ cap-checkbox > label > input:disabled + cap-checkshell {
749
+ opacity: 0.6;
750
+ filter: saturate(0.6);
751
+ }
752
+
753
+ cap-checkbox > label > input[aria-busy="true"]:not([aria-invalid="true"]) + cap-checkshell {
754
+ background: var(--working-background-image), var(--checkbox-box-background,
755
+ var(--ui-input-bg, transparent));
756
+ background-repeat: repeat, no-repeat;
757
+ background-size: 2rem 2rem, 100% 100%;
758
+ animation: cap-working-progress .55s linear infinite;
759
+ }
760
+
761
+ cap-checkbox > label:has(> input[aria-invalid="true"]) {
762
+ color: var(--error-color);
763
+ }
764
+
765
+ cap-checkbox > label > input[aria-invalid="true"] + cap-checkshell {
766
+ border-color: var(--error-color);
767
+ }
768
+
769
+ @media (prefers-reduced-motion: reduce) {
770
+ cap-checkbox > label > input[aria-busy="true"] + cap-checkshell {
771
+ animation: none !important;
772
+ }
773
+ }
774
+
775
+ @media (forced-colors: active) {
776
+ cap-checkbox > label > input[aria-invalid="true"] + cap-checkshell {
777
+ outline: 2px solid Mark;
778
+ outline-offset: 1px;
779
+ }
780
+ }
781
+
782
+ cap-checkbox > label > input[value="require"] + cap-checkshell {
783
+ color: var(--palette-contrast-light);
784
+ background: var(--palette-green);
785
+ box-shadow: var(--checkbox-box-shadow-checked);
786
+ }
787
+
788
+ cap-checkbox > label > input[value="deny"] + cap-checkshell {
789
+ color: var(--palette-contrast-light);
790
+ background: var(--palette-red);
791
+ box-shadow: var(--checkbox-box-shadow-checked);
792
+ }
793
+
794
+ cap-collapsibleoptiongroup {
795
+ display: block;
796
+ position: relative;
797
+ min-width: 0;
798
+ }
799
+
800
+ cap-collapsibleoptiongroup > fieldset {
801
+ margin: 0;
802
+ padding: 0;
803
+ min-inline-size: 0;
804
+ border: 0;
805
+ width: 100%;
806
+ box-sizing: border-box;
807
+ }
808
+
809
+ cap-collapsibleoptiongroup > fieldset > legend {
810
+ display: flex;
811
+ justify-content: space-between;
812
+ align-items: center;
813
+ box-sizing: border-box;
814
+ gap: 0.5rem;
815
+ width: 100%;
816
+ padding: 0 0 0.25em;
817
+ margin-bottom: 0.5em;
818
+ border-bottom: 1px solid var(--ui-border-color);
819
+ font: inherit;
820
+ user-select: none;
821
+ }
822
+
823
+ cap-collapsibleoptiongroup > fieldset > legend > span {
824
+ flex: 1;
825
+ min-width: 0;
826
+ }
827
+
828
+ cap-collapsibleoptiongroup > fieldset[aria-busy="true"]:not([aria-invalid="true"]) {
829
+ background-image: var(--working-background-image);
830
+ background-repeat: repeat;
831
+ background-size: 2rem 2rem;
832
+ animation: cap-working-progress .55s linear infinite;
833
+ }
834
+
835
+ cap-collapsibleoptiongroup > fieldset[aria-invalid="true"] {
836
+ border: 1px solid var(--error-color);
837
+ border-radius: var(--radius-md);
838
+ }
839
+
840
+ @media (prefers-reduced-motion: reduce) {
841
+ cap-collapsibleoptiongroup > fieldset[aria-busy="true"] {
842
+ animation: none !important;
843
+ }
844
+ }
845
+
846
+ @media (forced-colors: active) {
847
+ cap-collapsibleoptiongroup > fieldset[aria-invalid="true"] {
848
+ outline: 2px solid Mark;
849
+ outline-offset: 1px;
850
+ }
851
+ }
852
+
853
+ cap-collapsibleoptiongroup > fieldset > legend > button.cap-collapse-toggle {
854
+ display: inline-flex;
855
+ align-items: center;
856
+ justify-content: center;
857
+ width: 1.2em;
858
+ height: 1.2em;
859
+ padding: 0;
860
+ border: 0;
861
+ border-radius: var(--ui-border-radius);
862
+ background: transparent;
863
+ color: inherit;
864
+ font: inherit;
865
+ cursor: pointer;
866
+ flex: 0 0 auto;
867
+ user-select: none;
868
+ }
869
+
870
+ cap-collapsibleoptiongroup > fieldset > legend > button.cap-collapse-toggle:hover {
871
+ background: var(--button-background-hover, rgba(0, 0, 0, 0.05));
872
+ }
873
+
874
+ cap-collapsibleoptiongroup > fieldset > legend > button.cap-collapse-toggle:focus-visible {
875
+ outline: 2px solid var(--focus-color, var(--ui-accent-color));
876
+ outline-offset: 1px;
877
+ }
878
+
879
+ cap-collapsibleoptiongroup > fieldset > div {
880
+ display: contents;
881
+ }
882
+
883
+ cap-collapsibleoptiongroup > fieldset > div[hidden] {
884
+ display: none;
885
+ }
886
+
887
+ cap-linegraph {
888
+ display: flex;
889
+ min-width: 0;
890
+ min-height: var(--viz-line-graph-min-height, 24rem);
891
+ flex-direction: column;
892
+ padding: var(--viz-space, 0.7rem);
893
+ user-select: none;
894
+ }
895
+
896
+ cap-linegraph h2,
897
+ cap-linegraph p,
898
+ cap-linegraph ul {
899
+ margin: 0;
900
+ }
901
+
902
+ cap-linegraph > cap-chart {
903
+ flex: 1;
904
+ min-height: 20rem;
905
+ margin-block: 0.6rem;
906
+ overflow: auto;
907
+ }
908
+
909
+ cap-linegraph svg {
910
+ display: block;
911
+ width: 100%;
912
+ min-width: 30rem;
913
+ height: auto;
914
+ }
915
+
916
+ cap-linegraph .gridline {
917
+ stroke: var(--viz-grid-color, var(--ui-border-color));
918
+ stroke-width: 1;
919
+ vector-effect: non-scaling-stroke;
920
+ }
921
+
922
+ cap-linegraph .axismark {
923
+ fill: var(--viz-color, var(--ui-text-color));
924
+ font: 12px system-ui, sans-serif;
925
+ }
926
+
927
+ cap-linegraph .seriesline {
928
+ fill: none;
929
+ stroke-width: 3;
930
+ stroke-linecap: round;
931
+ stroke-linejoin: round;
932
+ vector-effect: non-scaling-stroke;
933
+ }
934
+
935
+ cap-linegraph .seriesarea {
936
+ opacity: var(--viz-area-opacity, 0.25);
937
+ }
938
+
939
+ cap-linegraph .cursor {
940
+ stroke: var(--viz-cursor-color, var(--ui-text-color));
941
+ stroke-width: 2;
942
+ stroke-dasharray: 4 3;
943
+ vector-effect: non-scaling-stroke;
944
+ }
945
+
946
+ cap-linegraph > cap-readout {
947
+ padding-block-start: 0.4rem;
948
+ border-block-start: 1px solid var(--viz-border-color, var(--ui-border-color));
949
+ }
950
+
951
+ cap-linegraph > cap-readout ul {
952
+ display: flex;
953
+ flex-wrap: wrap;
954
+ gap: 0.4rem 1rem;
955
+ padding: 0;
956
+ list-style: none;
957
+ }
958
+
959
+ cap-linegraph > cap-readout li {
960
+ display: inline-flex;
961
+ align-items: center;
962
+ gap: 0.35rem;
963
+ }
964
+
965
+ cap-linegraph cap-swatch {
966
+ display: block;
967
+ width: 0.8rem;
968
+ height: 0.8rem;
969
+ border-radius: 50%;
970
+ background: var(--colored-base);
971
+ }
972
+
973
+ @media (forced-colors: active) {
974
+ cap-linegraph .seriesline,
975
+ cap-linegraph .cursor,
976
+ cap-linegraph .gridline {
977
+ stroke: CanvasText;
978
+ forced-color-adjust: auto;
979
+ }
980
+
981
+ cap-linegraph .seriesarea {
982
+ fill: Canvas;
983
+ stroke: CanvasText;
984
+ }
985
+ }
986
+
987
+ cap-splitselectionpanel {
988
+ display: grid;
989
+ gap: var(--viz-space, 0.6rem);
990
+ min-width: 0;
991
+ user-select: none;
992
+ }
993
+
994
+ cap-splitselectionpanel > cap-groupbox {
995
+ min-width: 0;
996
+ }
997
+
998
+ cap-splitselectionpanel > cap-groupbox > cap-content {
999
+ display: flex;
1000
+ flex-flow: column;
1001
+ padding: .25em;
1002
+ flex: 1 1 0;
1003
+ }
1004
+
1005
+ cap-splitselectionpanel > cap-groupbox > cap-content > p,
1006
+ cap-splitselectionpanel > cap-groupbox > cap-content > ol {
1007
+ margin: 0;
1008
+ }
1009
+
1010
+ cap-splitselectionpanel > cap-groupbox > cap-content > p:first-child {
1011
+ color: var(--viz-muted-color, var(--ui-muted-text-color, currentColor));
1012
+ font-size: 0.875em;
1013
+ }
1014
+
1015
+ cap-splitselectionpanel > cap-groupbox > cap-content > cap-presets {
1016
+ display: grid;
1017
+ gap: 0.35rem;
1018
+ align-content: stretch;
1019
+ justify-content: stretch;
1020
+ }
1021
+
1022
+ cap-splitselectionpanel > cap-groupbox > cap-content > cap-presets > cap-button {
1023
+ display: flex;
1024
+ flex-flow: column;
1025
+ align-content: stretch;
1026
+ }
1027
+
1028
+ cap-splitselectionpanel ol {
1029
+ display: grid;
1030
+ gap: 0.25rem;
1031
+ padding: 0;
1032
+ list-style: none;
1033
+ }
1034
+
1035
+ cap-splitselectionpanel li {
1036
+ display: flex;
1037
+ flex-flow: row nowrap;
1038
+ align-items: center;
1039
+ justify-content: space-between;
1040
+ gap: 0.35rem;
1041
+ min-width: 0;
1042
+ padding: 0 .35rem;
1043
+ border-radius: var(--ui-border-radius);
1044
+ box-shadow: var(--box-shadow);
1045
+ }
1046
+
1047
+ cap-splitselectionpanel li:has(input[type="checkbox"]:not(:checked)) {
1048
+ color: var(--viz-muted-color, var(--ui-muted-text-color, currentColor));
1049
+ }
1050
+
1051
+ cap-splitselectionpanel li.dragging {
1052
+ outline: 2px solid var(--focus-color, var(--ui-accent-color));
1053
+ }
1054
+
1055
+ cap-splitselectionpanel cap-draghandle {
1056
+ display: block;
1057
+ width: 1.1rem;
1058
+ height: .9rem;
1059
+ min-height: .9rem;
1060
+ padding: 0;
1061
+ border: 0;
1062
+ border-radius: 0;
1063
+ color: inherit;
1064
+ background-color: transparent;
1065
+ background-image: radial-gradient(currentColor 0.75px, transparent 0.9px);
1066
+ background-position: center;
1067
+ background-size: 3px 3px;
1068
+ cursor: grab;
1069
+ touch-action: none;
1070
+ }
1071
+
1072
+ cap-splitselectionpanel cap-draghandle:focus-visible {
1073
+ outline: 2px solid var(--focus-color, var(--ui-accent-color));
1074
+ outline-offset: 1px;
1075
+ }
1076
+
1077
+ cap-splitselectionpanel li > :has(> [role="checkbox"]),
1078
+ cap-splitselectionpanel [role="checkbox"] {
1079
+
1080
+ justify-content: center;
1081
+ align-items: center;
1082
+ justify-items: center;
1083
+ align-content: center;
1084
+ }
1085
+
1086
+ cap-splitselectionpanel > cap-groupbox > cap-content > p[role="status"][aria-live="polite"][aria-atomic="true"] {
1087
+ position: absolute;
1088
+ width: 1px;
1089
+ height: 1px;
1090
+ padding: 0;
1091
+ overflow: hidden;
1092
+ clip: rect(0, 0, 0, 0);
1093
+ white-space: nowrap;
1094
+ border: 0;
1095
+ }