@skillcdn/console 0.4.3 → 0.4.5
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 +6 -6
- package/dist/api.d.ts +4 -4
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +4 -4
- package/dist/api.js.map +1 -1
- package/dist/cli/cli.d.ts.map +1 -1
- package/dist/cli/cli.js +255 -33
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/format.d.ts +20 -5
- package/dist/cli/format.d.ts.map +1 -1
- package/dist/cli/format.js +98 -26
- package/dist/cli/format.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +39 -15
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/plugin-check.d.ts +5 -1
- package/dist/cli/plugin-check.d.ts.map +1 -1
- package/dist/cli/plugin-check.js +23 -4
- package/dist/cli/plugin-check.js.map +1 -1
- package/dist/cli/plugin-cli.d.ts.map +1 -1
- package/dist/cli/plugin-cli.js +10 -1
- package/dist/cli/plugin-cli.js.map +1 -1
- package/dist/cli/plugin-init.d.ts +2 -0
- package/dist/cli/plugin-init.d.ts.map +1 -1
- package/dist/cli/plugin-init.js +6 -0
- package/dist/cli/plugin-init.js.map +1 -1
- package/dist/client.d.ts +32 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +14 -2
- package/dist/client.js.map +1 -1
- package/dist/compat.js +1 -1
- package/dist/components/board.d.ts +8 -0
- package/dist/components/board.d.ts.map +1 -1
- package/dist/components/board.js +49 -18
- package/dist/components/board.js.map +1 -1
- package/dist/components/decision-form.d.ts +6 -3
- package/dist/components/decision-form.d.ts.map +1 -1
- package/dist/components/decision-form.js +24 -18
- package/dist/components/decision-form.js.map +1 -1
- package/dist/components/decision-list.d.ts +5 -1
- package/dist/components/decision-list.d.ts.map +1 -1
- package/dist/components/decision-list.js +25 -5
- package/dist/components/decision-list.js.map +1 -1
- package/dist/components/event-feed.d.ts.map +1 -1
- package/dist/components/event-feed.js +34 -8
- package/dist/components/event-feed.js.map +1 -1
- package/dist/components/goals.d.ts.map +1 -1
- package/dist/components/goals.js +2 -2
- package/dist/components/goals.js.map +1 -1
- package/dist/components/home.d.ts +35 -0
- package/dist/components/home.d.ts.map +1 -0
- package/dist/components/home.js +326 -0
- package/dist/components/home.js.map +1 -0
- package/dist/components/my-decisions.d.ts +20 -3
- package/dist/components/my-decisions.d.ts.map +1 -1
- package/dist/components/my-decisions.js +14 -1
- package/dist/components/my-decisions.js.map +1 -1
- package/dist/components/pack-connect.d.ts.map +1 -1
- package/dist/components/pack-connect.js +5 -4
- package/dist/components/pack-connect.js.map +1 -1
- package/dist/components/people.d.ts +45 -1
- package/dist/components/people.d.ts.map +1 -1
- package/dist/components/people.js +125 -4
- package/dist/components/people.js.map +1 -1
- package/dist/components/picker.d.ts +8 -0
- package/dist/components/picker.d.ts.map +1 -1
- package/dist/components/picker.js +2 -2
- package/dist/components/picker.js.map +1 -1
- package/dist/components/plugin-frame.d.ts +3 -13
- package/dist/components/plugin-frame.d.ts.map +1 -1
- package/dist/components/plugin-frame.js +75 -21
- package/dist/components/plugin-frame.js.map +1 -1
- package/dist/components/plugin-settings.d.ts +5 -1
- package/dist/components/plugin-settings.d.ts.map +1 -1
- package/dist/components/plugin-settings.js +283 -45
- package/dist/components/plugin-settings.js.map +1 -1
- package/dist/components/projects.d.ts +0 -8
- package/dist/components/projects.d.ts.map +1 -1
- package/dist/components/projects.js +4 -14
- package/dist/components/projects.js.map +1 -1
- package/dist/components/searches.d.ts +11 -0
- package/dist/components/searches.d.ts.map +1 -0
- package/dist/components/searches.js +30 -0
- package/dist/components/searches.js.map +1 -0
- package/dist/components/task-form.d.ts.map +1 -1
- package/dist/components/task-form.js +6 -5
- package/dist/components/task-form.js.map +1 -1
- package/dist/components/task-view.d.ts.map +1 -1
- package/dist/components/task-view.js +2 -1
- package/dist/components/task-view.js.map +1 -1
- package/dist/components/ui.d.ts +16 -0
- package/dist/components/ui.d.ts.map +1 -1
- package/dist/components/ui.js +15 -2
- package/dist/components/ui.js.map +1 -1
- package/dist/connect-page.d.ts.map +1 -1
- package/dist/connect-page.js +5 -6
- package/dist/connect-page.js.map +1 -1
- package/dist/console.css +1123 -258
- package/dist/console.d.ts +12 -4
- package/dist/console.d.ts.map +1 -1
- package/dist/console.js +123 -27
- package/dist/console.js.map +1 -1
- package/dist/data.d.ts +18 -3
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +41 -1
- package/dist/data.js.map +1 -1
- package/dist/docs-page.d.ts.map +1 -1
- package/dist/docs-page.js +6 -5
- package/dist/docs-page.js.map +1 -1
- package/dist/home-tiles.d.ts +92 -0
- package/dist/home-tiles.d.ts.map +1 -0
- package/dist/home-tiles.js +294 -0
- package/dist/home-tiles.js.map +1 -0
- package/dist/i18n/en.d.ts +264 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +260 -1
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/index.d.ts +4 -2
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +10 -11
- package/dist/i18n/index.js.map +1 -1
- package/dist/i18n/ko.d.ts.map +1 -1
- package/dist/i18n/ko.js +255 -4
- package/dist/i18n/ko.js.map +1 -1
- package/dist/index.d.ts +7 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/limits.d.ts +12 -0
- package/dist/limits.d.ts.map +1 -1
- package/dist/limits.js +12 -0
- package/dist/limits.js.map +1 -1
- package/dist/plugin/args.d.ts +6 -1
- package/dist/plugin/args.d.ts.map +1 -1
- package/dist/plugin/args.js +16 -11
- package/dist/plugin/args.js.map +1 -1
- package/dist/plugin/bridge.d.ts +63 -3
- package/dist/plugin/bridge.d.ts.map +1 -1
- package/dist/plugin/bridge.js +54 -0
- package/dist/plugin/bridge.js.map +1 -1
- package/dist/plugin/capabilities.d.ts +7 -1
- package/dist/plugin/capabilities.d.ts.map +1 -1
- package/dist/plugin/capabilities.js +24 -1
- package/dist/plugin/capabilities.js.map +1 -1
- package/dist/plugin/context.d.ts +174 -12
- package/dist/plugin/context.d.ts.map +1 -1
- package/dist/plugin/define.d.ts +14 -1
- package/dist/plugin/define.d.ts.map +1 -1
- package/dist/plugin/define.js +18 -2
- package/dist/plugin/define.js.map +1 -1
- package/dist/plugin/limits.d.ts +9 -2
- package/dist/plugin/limits.d.ts.map +1 -1
- package/dist/plugin/limits.js +9 -2
- package/dist/plugin/limits.js.map +1 -1
- package/dist/plugin/manifest.d.ts +98 -6
- package/dist/plugin/manifest.d.ts.map +1 -1
- package/dist/plugin/manifest.js +171 -10
- package/dist/plugin/manifest.js.map +1 -1
- package/dist/plugin/rest-schemas.d.ts +120 -0
- package/dist/plugin/rest-schemas.d.ts.map +1 -1
- package/dist/plugin/rest-schemas.js +78 -5
- package/dist/plugin/rest-schemas.js.map +1 -1
- package/dist/plugin/sandbox.d.ts +4 -3
- package/dist/plugin/sandbox.d.ts.map +1 -1
- package/dist/plugin/sandbox.js +33 -6
- package/dist/plugin/sandbox.js.map +1 -1
- package/dist/plugin/semver.d.ts +26 -0
- package/dist/plugin/semver.d.ts.map +1 -0
- package/dist/plugin/semver.js +76 -0
- package/dist/plugin/semver.js.map +1 -0
- package/dist/plugin/testing.d.ts +15 -1
- package/dist/plugin/testing.d.ts.map +1 -1
- package/dist/plugin/testing.js +42 -5
- package/dist/plugin/testing.js.map +1 -1
- package/dist/plugin/web.d.ts +16 -1
- package/dist/plugin/web.d.ts.map +1 -1
- package/dist/plugin/web.js +44 -1
- package/dist/plugin/web.js.map +1 -1
- package/dist/plugin.d.ts +3 -2
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +3 -2
- package/dist/plugin.js.map +1 -1
- package/dist/router.d.ts +19 -0
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +18 -0
- package/dist/router.js.map +1 -1
- package/dist/routes.d.ts +11 -2
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +14 -1
- package/dist/routes.js.map +1 -1
- package/dist/rules.d.ts +2 -2
- package/dist/rules.js +3 -3
- package/dist/schemas.d.ts +864 -2
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +156 -9
- package/dist/schemas.js.map +1 -1
- package/dist/use-action.d.ts +8 -2
- package/dist/use-action.d.ts.map +1 -1
- package/dist/use-action.js +13 -6
- package/dist/use-action.js.map +1 -1
- package/dist/vocabulary.d.ts +3 -1
- package/dist/vocabulary.d.ts.map +1 -1
- package/dist/vocabulary.js +9 -0
- package/dist/vocabulary.js.map +1 -1
- package/docs/specs/cli.md +10 -6
- package/docs/specs/plugins.md +83 -62
- package/docs/specs/rest.md +34 -16
- package/package.json +1 -1
- package/skills/building-a-plugin/SKILL.md +15 -12
- package/skills/planning-the-board/references/setting-up.md +2 -1
- package/skills/working-the-board/SKILL.md +3 -3
- package/src/api.ts +23 -0
- package/src/cli/cli.ts +323 -30
- package/src/cli/format.ts +122 -26
- package/src/cli/help.ts +43 -14
- package/src/cli/plugin-check.ts +41 -2
- package/src/cli/plugin-cli.ts +10 -1
- package/src/cli/plugin-init.ts +8 -0
- package/src/client.ts +78 -0
- package/src/compat.ts +1 -1
- package/src/components/board.tsx +86 -45
- package/src/components/decision-form.tsx +73 -36
- package/src/components/decision-list.tsx +45 -13
- package/src/components/event-feed.tsx +40 -7
- package/src/components/goals.tsx +4 -1
- package/src/components/home.tsx +615 -0
- package/src/components/my-decisions.tsx +50 -5
- package/src/components/pack-connect.tsx +5 -4
- package/src/components/people.tsx +500 -61
- package/src/components/picker.tsx +11 -2
- package/src/components/plugin-frame.tsx +85 -63
- package/src/components/plugin-settings.tsx +735 -185
- package/src/components/projects.tsx +14 -69
- package/src/components/searches.ts +47 -0
- package/src/components/task-form.tsx +23 -28
- package/src/components/task-view.tsx +7 -0
- package/src/components/ui.tsx +42 -2
- package/src/connect-page.tsx +5 -6
- package/src/console.tsx +303 -64
- package/src/data.ts +62 -3
- package/src/docs-page.tsx +6 -5
- package/src/home-tiles.ts +438 -0
- package/src/i18n/en.ts +274 -0
- package/src/i18n/index.ts +17 -14
- package/src/i18n/ko.ts +267 -4
- package/src/index.ts +18 -5
- package/src/limits.ts +12 -0
- package/src/plugin/args.ts +16 -11
- package/src/plugin/bridge.ts +122 -1
- package/src/plugin/capabilities.ts +28 -1
- package/src/plugin/context.ts +186 -9
- package/src/plugin/define.ts +38 -1
- package/src/plugin/limits.ts +9 -2
- package/src/plugin/manifest.ts +228 -13
- package/src/plugin/rest-schemas.ts +89 -6
- package/src/plugin/sandbox.ts +36 -8
- package/src/plugin/semver.ts +89 -0
- package/src/plugin/testing.ts +63 -6
- package/src/plugin/web.ts +66 -0
- package/src/plugin.ts +19 -0
- package/src/router.ts +25 -0
- package/src/routes.ts +17 -2
- package/src/rules.ts +3 -3
- package/src/schemas.ts +197 -10
- package/src/styles/console.css +1123 -258
- package/src/use-action.ts +16 -7
- package/src/vocabulary.ts +10 -0
- package/template/plugin/console-plugin.json +3 -1
package/dist/console.css
CHANGED
|
@@ -465,7 +465,9 @@ table {
|
|
|
465
465
|
align-items: center;
|
|
466
466
|
gap: var(--sc-space-2);
|
|
467
467
|
padding: var(--sc-space-2) 0 var(--sc-space-3);
|
|
468
|
+
border: 0;
|
|
468
469
|
border-bottom: 2px solid transparent;
|
|
470
|
+
background: none;
|
|
469
471
|
color: var(--sc-color-text-muted);
|
|
470
472
|
font-size: var(--sc-text-sm);
|
|
471
473
|
font-weight: var(--sc-weight-medium);
|
|
@@ -506,14 +508,44 @@ table {
|
|
|
506
508
|
top: 100%;
|
|
507
509
|
}
|
|
508
510
|
|
|
509
|
-
/* The
|
|
511
|
+
/* The pages of a plugin: the header's tabs going on a row lower, on the same gutters, the line
|
|
512
|
+
under them where the page begins. The line is a shadow, so that the current tab's underline lies
|
|
513
|
+
on it, as the header's does on its own line, in a row that scrolls sideways. */
|
|
514
|
+
.sc-page-tabs {
|
|
515
|
+
display: flex;
|
|
516
|
+
flex: none;
|
|
517
|
+
gap: var(--sc-space-5);
|
|
518
|
+
margin: calc(var(--sc-main-top) * -1) calc(var(--sc-main-side) * -1) var(--sc-space-5);
|
|
519
|
+
padding: var(--sc-space-1) var(--sc-main-side) 0;
|
|
520
|
+
background: color-mix(in srgb, var(--sc-color-bg) 45%, transparent);
|
|
521
|
+
box-shadow: inset 0 -1px 0 var(--sc-color-border);
|
|
522
|
+
overflow: auto hidden;
|
|
523
|
+
scrollbar-width: none;
|
|
524
|
+
}
|
|
510
525
|
|
|
526
|
+
/* The views within a page, as a plugin has in its frame: the console's view switch, in a tab's
|
|
527
|
+
words, so that the row reads as a level below the tabs. What stands around it is the page's. */
|
|
511
528
|
.sc-subtabs {
|
|
512
529
|
display: flex;
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
530
|
+
flex-wrap: wrap;
|
|
531
|
+
gap: var(--sc-space-1);
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
.sc-subtabs .sc-tab {
|
|
535
|
+
padding: var(--sc-space-1) var(--sc-space-3);
|
|
536
|
+
border-bottom: 0;
|
|
537
|
+
border-radius: var(--sc-radius-full);
|
|
538
|
+
cursor: pointer;
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
.sc-subtabs .sc-tab:hover {
|
|
542
|
+
background: var(--sc-color-bg-inset);
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
.sc-subtabs .sc-tab-current {
|
|
546
|
+
background: var(--sc-color-bg-raised);
|
|
547
|
+
box-shadow: 0 0 0 1px var(--sc-color-border);
|
|
548
|
+
color: var(--sc-color-text);
|
|
517
549
|
}
|
|
518
550
|
|
|
519
551
|
/* A plugin's frame: the width of the page, as tall as the frame says. */
|
|
@@ -527,6 +559,14 @@ table {
|
|
|
527
559
|
background: transparent;
|
|
528
560
|
}
|
|
529
561
|
|
|
562
|
+
/* A page pads itself by a step, for the shadows of what is in it, which the frame would cut. The
|
|
563
|
+
frame stands that step outside the page's column, so that the page's first words line up with
|
|
564
|
+
the tabs above it, and with every other page's. */
|
|
565
|
+
.sc-plugin-frame-page {
|
|
566
|
+
width: calc(100% + 2 * var(--sc-space-4));
|
|
567
|
+
margin: calc(var(--sc-space-4) * -1);
|
|
568
|
+
}
|
|
569
|
+
|
|
530
570
|
/* A plugin's frame document, which the console serves marked with data-console: it paints no
|
|
531
571
|
background and is as tall as its content, so that the box the console draws shows through and
|
|
532
572
|
the frame shrinks as well as grows; no room is kept for a scrollbar it never shows. */
|
|
@@ -541,50 +581,11 @@ html[data-console] body {
|
|
|
541
581
|
background: transparent;
|
|
542
582
|
}
|
|
543
583
|
|
|
544
|
-
/*
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
.sc-widgets {
|
|
548
|
-
display: grid;
|
|
549
|
-
grid-template-columns: repeat(6, minmax(0, 1fr));
|
|
550
|
-
gap: var(--sc-space-4);
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
.sc-widgets-top {
|
|
554
|
-
margin: 0 0 var(--sc-space-5);
|
|
555
|
-
}
|
|
556
|
-
|
|
557
|
-
.sc-widgets-bottom {
|
|
558
|
-
margin: var(--sc-space-5) 0 0;
|
|
559
|
-
}
|
|
560
|
-
|
|
561
|
-
.sc-widget {
|
|
562
|
-
grid-column: span 6;
|
|
563
|
-
padding: var(--sc-space-3) var(--sc-space-4);
|
|
564
|
-
border: var(--sc-border);
|
|
565
|
-
border-radius: var(--sc-radius-lg);
|
|
566
|
-
background: var(--sc-color-bg-raised);
|
|
567
|
-
}
|
|
568
|
-
|
|
569
|
-
.sc-widget-title {
|
|
570
|
-
margin: 0 0 var(--sc-space-2);
|
|
571
|
-
font-size: var(--sc-text-sm);
|
|
572
|
-
font-weight: var(--sc-weight-medium);
|
|
584
|
+
/* What stands in for a frame that has nothing to show. */
|
|
585
|
+
.sc-plugin-frame-unavailable {
|
|
586
|
+
margin: 0;
|
|
573
587
|
color: var(--sc-color-text-muted);
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
@media (min-width: 48rem) {
|
|
577
|
-
.sc-widget-third {
|
|
578
|
-
grid-column: span 2;
|
|
579
|
-
}
|
|
580
|
-
|
|
581
|
-
.sc-widget-half {
|
|
582
|
-
grid-column: span 3;
|
|
583
|
-
}
|
|
584
|
-
|
|
585
|
-
.sc-widget-full {
|
|
586
|
-
grid-column: span 6;
|
|
587
|
-
}
|
|
588
|
+
font-size: var(--sc-text-sm);
|
|
588
589
|
}
|
|
589
590
|
|
|
590
591
|
/* What waits, beside a tab's name: a count in the point colour, so it reads before the words. */
|
|
@@ -772,18 +773,20 @@ html[data-console] body {
|
|
|
772
773
|
/* The page is a column of blocks that fills the window below the header, so that a block which
|
|
773
774
|
wants the rest of the height, the board, can take it. */
|
|
774
775
|
.sc-main {
|
|
776
|
+
--sc-main-top: var(--sc-space-6);
|
|
777
|
+
--sc-main-side: var(--sc-gutter);
|
|
775
778
|
display: flex;
|
|
776
779
|
flex: 1;
|
|
777
780
|
flex-direction: column;
|
|
778
781
|
width: 100%;
|
|
779
|
-
padding: var(--sc-
|
|
782
|
+
padding: var(--sc-main-top) var(--sc-main-side) var(--sc-space-8);
|
|
780
783
|
}
|
|
781
784
|
|
|
782
785
|
/* A page as wide as the window: the board, whose columns want every bit of it. It starts at the
|
|
783
786
|
same height as the other pages and, being as tall as the window, ends with the same room. */
|
|
784
787
|
.sc-main-wide {
|
|
785
788
|
max-width: none;
|
|
786
|
-
padding: var(--sc-
|
|
789
|
+
padding: var(--sc-main-top) var(--sc-main-side);
|
|
787
790
|
}
|
|
788
791
|
|
|
789
792
|
/* A page that takes the whole window takes the header with it, so that the lockup, the tabs and
|
|
@@ -884,7 +887,10 @@ html[data-console] body {
|
|
|
884
887
|
|
|
885
888
|
.sc-panel,
|
|
886
889
|
.sc-column,
|
|
887
|
-
.sc-
|
|
890
|
+
.sc-tile-pane,
|
|
891
|
+
.sc-home-bar,
|
|
892
|
+
.sc-person-card,
|
|
893
|
+
.sc-team-card,
|
|
888
894
|
.sc-decision,
|
|
889
895
|
.sc-run,
|
|
890
896
|
.sc-comment,
|
|
@@ -1391,24 +1397,72 @@ select.sc-input {
|
|
|
1391
1397
|
justify-self: start;
|
|
1392
1398
|
}
|
|
1393
1399
|
|
|
1394
|
-
/*
|
|
1400
|
+
/* Chips: things named among others in a row, a person, a team, an item of a list, a holder of
|
|
1401
|
+
a role, each as low as a line of text and round at its ends, so that a row of them stays light
|
|
1402
|
+
beside the fields of a form; the way to take one out in its end where it can be, a person's
|
|
1403
|
+
face in its start. `Chip` writes one, and every row of things a person adds to and takes from
|
|
1404
|
+
is made of them; the way to add one more stands at the end of the row as one more chip, a
|
|
1405
|
+
picker with `sc-picker-add`. */
|
|
1395
1406
|
.sc-chips {
|
|
1396
1407
|
display: flex;
|
|
1397
1408
|
flex-wrap: wrap;
|
|
1398
1409
|
align-items: center;
|
|
1399
1410
|
gap: var(--sc-space-2);
|
|
1411
|
+
min-width: 0;
|
|
1400
1412
|
}
|
|
1401
1413
|
|
|
1402
1414
|
.sc-chip {
|
|
1403
1415
|
display: inline-flex;
|
|
1404
1416
|
align-items: center;
|
|
1405
1417
|
gap: var(--sc-space-1);
|
|
1406
|
-
|
|
1407
|
-
|
|
1418
|
+
max-width: 100%;
|
|
1419
|
+
min-height: 1.75rem;
|
|
1420
|
+
padding: 0 var(--sc-space-3);
|
|
1408
1421
|
border: var(--sc-border);
|
|
1409
|
-
border-radius: var(--sc-radius-
|
|
1410
|
-
background: var(--sc-color-
|
|
1422
|
+
border-radius: var(--sc-radius-full);
|
|
1423
|
+
background: var(--sc-color-sheet);
|
|
1424
|
+
color: var(--sc-color-text);
|
|
1411
1425
|
font-size: var(--sc-text-sm);
|
|
1426
|
+
line-height: var(--sc-leading-snug);
|
|
1427
|
+
white-space: nowrap;
|
|
1428
|
+
}
|
|
1429
|
+
|
|
1430
|
+
/* What a chip names, cut short where the row has no room for it whole. */
|
|
1431
|
+
.sc-chip-label {
|
|
1432
|
+
min-width: 0;
|
|
1433
|
+
overflow: hidden;
|
|
1434
|
+
text-overflow: ellipsis;
|
|
1435
|
+
}
|
|
1436
|
+
|
|
1437
|
+
.sc-chip-label:has(> .sc-person) {
|
|
1438
|
+
display: flex;
|
|
1439
|
+
align-items: center;
|
|
1440
|
+
gap: var(--sc-space-1);
|
|
1441
|
+
}
|
|
1442
|
+
|
|
1443
|
+
.sc-chip-label > .sc-person {
|
|
1444
|
+
min-width: 0;
|
|
1445
|
+
}
|
|
1446
|
+
|
|
1447
|
+
.sc-chip-label .sc-person-login {
|
|
1448
|
+
min-width: 0;
|
|
1449
|
+
overflow: hidden;
|
|
1450
|
+
font-weight: var(--sc-weight-normal);
|
|
1451
|
+
text-overflow: ellipsis;
|
|
1452
|
+
}
|
|
1453
|
+
|
|
1454
|
+
/* A person's face in the chip's rounded start, and the way out in its end, a hair inside. */
|
|
1455
|
+
.sc-chip:has(.sc-avatar) {
|
|
1456
|
+
padding-inline-start: 0.1875rem;
|
|
1457
|
+
}
|
|
1458
|
+
|
|
1459
|
+
.sc-chip:has(> .sc-chip-remove) {
|
|
1460
|
+
padding-inline-end: 0.1875rem;
|
|
1461
|
+
}
|
|
1462
|
+
|
|
1463
|
+
.sc-chip .sc-avatar-sm {
|
|
1464
|
+
width: 1.375rem;
|
|
1465
|
+
height: 1.375rem;
|
|
1412
1466
|
}
|
|
1413
1467
|
|
|
1414
1468
|
.sc-chip-remove,
|
|
@@ -1416,20 +1470,25 @@ select.sc-input {
|
|
|
1416
1470
|
display: inline-grid;
|
|
1417
1471
|
flex: none;
|
|
1418
1472
|
place-items: center;
|
|
1419
|
-
width: 1.
|
|
1420
|
-
height: 1.
|
|
1473
|
+
width: 1.375rem;
|
|
1474
|
+
height: 1.375rem;
|
|
1475
|
+
padding: 0;
|
|
1421
1476
|
border: 0;
|
|
1422
|
-
border-radius: var(--sc-radius-
|
|
1477
|
+
border-radius: var(--sc-radius-full);
|
|
1423
1478
|
background: transparent;
|
|
1424
|
-
color: var(--sc-color-text-
|
|
1479
|
+
color: var(--sc-color-text-faint);
|
|
1425
1480
|
font-size: var(--sc-text-md);
|
|
1426
1481
|
line-height: 1;
|
|
1427
1482
|
cursor: pointer;
|
|
1483
|
+
transition:
|
|
1484
|
+
background var(--sc-transition),
|
|
1485
|
+
color var(--sc-transition),
|
|
1486
|
+
opacity var(--sc-transition);
|
|
1428
1487
|
}
|
|
1429
1488
|
|
|
1430
1489
|
.sc-chip-remove:hover:not(:disabled),
|
|
1431
1490
|
.sc-picker-clear:hover:not(:disabled) {
|
|
1432
|
-
background: var(--sc-color-bg-
|
|
1491
|
+
background: var(--sc-color-bg-inset);
|
|
1433
1492
|
color: var(--sc-color-text);
|
|
1434
1493
|
}
|
|
1435
1494
|
|
|
@@ -1438,9 +1497,10 @@ select.sc-input {
|
|
|
1438
1497
|
outline: var(--sc-focus-ring);
|
|
1439
1498
|
}
|
|
1440
1499
|
|
|
1441
|
-
.sc-
|
|
1442
|
-
|
|
1443
|
-
|
|
1500
|
+
.sc-chip-remove:disabled,
|
|
1501
|
+
.sc-picker-clear:disabled {
|
|
1502
|
+
opacity: 0.55;
|
|
1503
|
+
cursor: not-allowed;
|
|
1444
1504
|
}
|
|
1445
1505
|
|
|
1446
1506
|
/* A picker: the field that searches a listing, its page of results under it, and the choice in its place. */
|
|
@@ -1510,6 +1570,107 @@ select.sc-input {
|
|
|
1510
1570
|
padding: var(--sc-space-2);
|
|
1511
1571
|
}
|
|
1512
1572
|
|
|
1573
|
+
/* A picker in the board's filters, in the form that adds a member, or among chips without being
|
|
1574
|
+
the way to add to them: wide enough for a name, never the whole row. */
|
|
1575
|
+
.sc-chips .sc-picker:not(.sc-picker-add),
|
|
1576
|
+
.sc-filters .sc-picker,
|
|
1577
|
+
.sc-member-form .sc-picker {
|
|
1578
|
+
flex: 0 1 14rem;
|
|
1579
|
+
min-width: 11rem;
|
|
1580
|
+
}
|
|
1581
|
+
|
|
1582
|
+
/* A picker that reads as what it holds, until the pointer or the focus is on it: a fact changed
|
|
1583
|
+
in place, as low as a line of the facts, as a quiet field is. Its way out stands while the
|
|
1584
|
+
pointer or the focus is on it, where there is a pointer to hover. */
|
|
1585
|
+
.sc-picker-quiet > .sc-input,
|
|
1586
|
+
.sc-picker-quiet.sc-picker-chosen {
|
|
1587
|
+
min-height: 2rem;
|
|
1588
|
+
padding-block: 0;
|
|
1589
|
+
border-color: transparent;
|
|
1590
|
+
background-color: transparent;
|
|
1591
|
+
}
|
|
1592
|
+
|
|
1593
|
+
.sc-picker-quiet > .sc-input {
|
|
1594
|
+
padding-inline: var(--sc-space-2);
|
|
1595
|
+
}
|
|
1596
|
+
|
|
1597
|
+
.sc-picker-quiet.sc-picker-chosen {
|
|
1598
|
+
padding-inline: var(--sc-space-2) 0.1875rem;
|
|
1599
|
+
transition:
|
|
1600
|
+
border-color var(--sc-transition),
|
|
1601
|
+
background var(--sc-transition);
|
|
1602
|
+
}
|
|
1603
|
+
|
|
1604
|
+
.sc-picker-quiet > .sc-input:hover:not(:disabled),
|
|
1605
|
+
.sc-picker-quiet > .sc-input:focus,
|
|
1606
|
+
.sc-picker-quiet.sc-picker-chosen:hover,
|
|
1607
|
+
.sc-picker-quiet.sc-picker-chosen:focus-within {
|
|
1608
|
+
border-color: var(--sc-color-border);
|
|
1609
|
+
background-color: var(--sc-color-sheet);
|
|
1610
|
+
}
|
|
1611
|
+
|
|
1612
|
+
.sc-picker-quiet > .sc-input:focus {
|
|
1613
|
+
border-color: var(--sc-color-accent);
|
|
1614
|
+
}
|
|
1615
|
+
|
|
1616
|
+
@media (hover: hover) {
|
|
1617
|
+
.sc-picker-quiet.sc-picker-chosen:not(:hover):not(:focus-within) .sc-picker-clear {
|
|
1618
|
+
opacity: 0;
|
|
1619
|
+
}
|
|
1620
|
+
}
|
|
1621
|
+
|
|
1622
|
+
/* A picker that adds one more to a row of chips: a chip itself, its line dashed, as wide as its
|
|
1623
|
+
words until it is typed in, and its list as wide as a name needs. */
|
|
1624
|
+
.sc-picker-add {
|
|
1625
|
+
flex: none;
|
|
1626
|
+
}
|
|
1627
|
+
|
|
1628
|
+
.sc-picker.sc-picker-add > .sc-input {
|
|
1629
|
+
width: 8.5rem;
|
|
1630
|
+
min-height: 1.75rem;
|
|
1631
|
+
padding-block: 0;
|
|
1632
|
+
padding-inline: var(--sc-space-3);
|
|
1633
|
+
border-style: dashed;
|
|
1634
|
+
border-radius: var(--sc-radius-full);
|
|
1635
|
+
background: transparent;
|
|
1636
|
+
line-height: var(--sc-leading-snug);
|
|
1637
|
+
transition:
|
|
1638
|
+
width var(--sc-transition),
|
|
1639
|
+
border-color var(--sc-transition),
|
|
1640
|
+
background var(--sc-transition);
|
|
1641
|
+
}
|
|
1642
|
+
|
|
1643
|
+
.sc-picker.sc-picker-add > .sc-input::placeholder {
|
|
1644
|
+
color: var(--sc-color-text-muted);
|
|
1645
|
+
}
|
|
1646
|
+
|
|
1647
|
+
.sc-picker.sc-picker-add > .sc-input:hover:not(:disabled) {
|
|
1648
|
+
background: var(--sc-color-sheet);
|
|
1649
|
+
}
|
|
1650
|
+
|
|
1651
|
+
.sc-picker.sc-picker-add > .sc-input:focus {
|
|
1652
|
+
border-style: solid;
|
|
1653
|
+
background: var(--sc-color-sheet);
|
|
1654
|
+
}
|
|
1655
|
+
|
|
1656
|
+
/* Where the browser sizes a field by what it holds, the way to add is as wide as its words, and
|
|
1657
|
+
grows as a name is typed into it. */
|
|
1658
|
+
@supports (field-sizing: content) {
|
|
1659
|
+
.sc-picker.sc-picker-add > .sc-input {
|
|
1660
|
+
width: auto;
|
|
1661
|
+
min-width: 6rem;
|
|
1662
|
+
max-width: 100%;
|
|
1663
|
+
field-sizing: content;
|
|
1664
|
+
}
|
|
1665
|
+
}
|
|
1666
|
+
|
|
1667
|
+
.sc-picker-add > .sc-picker-list {
|
|
1668
|
+
right: auto;
|
|
1669
|
+
width: max-content;
|
|
1670
|
+
min-width: 100%;
|
|
1671
|
+
max-width: min(22rem, calc(100vw - 2rem));
|
|
1672
|
+
}
|
|
1673
|
+
|
|
1513
1674
|
/* The workers of a task on a card or a row: pictures side by side, and how many more. */
|
|
1514
1675
|
.sc-workers {
|
|
1515
1676
|
display: inline-flex;
|
|
@@ -2528,184 +2689,317 @@ select.sc-input {
|
|
|
2528
2689
|
user-select: all;
|
|
2529
2690
|
}
|
|
2530
2691
|
|
|
2531
|
-
/* People: everyone of the board
|
|
2532
|
-
|
|
2533
|
-
their work
|
|
2692
|
+
/* People: everyone of the board as cards in a grid. The person at the head, their account and
|
|
2693
|
+
where it came from under the name; what they are as rows of one shape, so that the cards read
|
|
2694
|
+
alike down a column; the ways to their work at the foot. */
|
|
2534
2695
|
|
|
2535
2696
|
.sc-people {
|
|
2536
2697
|
display: grid;
|
|
2537
|
-
grid-template-columns: repeat(auto-fill, minmax(
|
|
2538
|
-
gap: var(--sc-space-
|
|
2698
|
+
grid-template-columns: repeat(auto-fill, minmax(20rem, 1fr));
|
|
2699
|
+
gap: var(--sc-space-4);
|
|
2539
2700
|
}
|
|
2540
2701
|
|
|
2541
|
-
.sc-person-
|
|
2702
|
+
.sc-person-card {
|
|
2542
2703
|
display: flex;
|
|
2543
|
-
flex-
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
padding: var(--sc-space-
|
|
2547
|
-
border-radius: var(--sc-radius-
|
|
2704
|
+
flex-direction: column;
|
|
2705
|
+
gap: var(--sc-space-4);
|
|
2706
|
+
min-width: 0;
|
|
2707
|
+
padding: var(--sc-space-5);
|
|
2708
|
+
border-radius: var(--sc-radius-xl);
|
|
2548
2709
|
}
|
|
2549
2710
|
|
|
2550
|
-
.sc-person-
|
|
2551
|
-
|
|
2711
|
+
.sc-person-card-head {
|
|
2712
|
+
display: flex;
|
|
2713
|
+
align-items: center;
|
|
2714
|
+
gap: var(--sc-space-3);
|
|
2552
2715
|
min-width: 0;
|
|
2553
2716
|
}
|
|
2554
2717
|
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2558
|
-
|
|
2559
|
-
font-size: var(--sc-text-xs);
|
|
2718
|
+
.sc-person-card-head .sc-avatar {
|
|
2719
|
+
width: 3rem;
|
|
2720
|
+
height: 3rem;
|
|
2721
|
+
font-size: var(--sc-text-lg);
|
|
2560
2722
|
}
|
|
2561
2723
|
|
|
2562
|
-
.sc-person-
|
|
2563
|
-
|
|
2724
|
+
.sc-person-card-who {
|
|
2725
|
+
display: grid;
|
|
2726
|
+
gap: 0.125rem;
|
|
2564
2727
|
min-width: 0;
|
|
2565
|
-
color: var(--sc-color-text-muted);
|
|
2566
|
-
font-size: var(--sc-text-sm);
|
|
2567
2728
|
}
|
|
2568
2729
|
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2730
|
+
.sc-person-card-name {
|
|
2731
|
+
display: flex;
|
|
2732
|
+
flex-wrap: wrap;
|
|
2733
|
+
align-items: baseline;
|
|
2734
|
+
gap: var(--sc-space-1) var(--sc-space-2);
|
|
2735
|
+
color: var(--sc-color-text);
|
|
2736
|
+
font-size: var(--sc-text-md);
|
|
2737
|
+
font-weight: var(--sc-weight-bold);
|
|
2738
|
+
line-height: var(--sc-leading-snug);
|
|
2739
|
+
overflow-wrap: anywhere;
|
|
2572
2740
|
}
|
|
2573
2741
|
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
margin-top: var(--sc-space-1);
|
|
2742
|
+
.sc-person-card-name .sc-person-you {
|
|
2743
|
+
margin: 0;
|
|
2744
|
+
font-weight: var(--sc-weight-normal);
|
|
2578
2745
|
}
|
|
2579
2746
|
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2747
|
+
.sc-person-card-note {
|
|
2748
|
+
color: var(--sc-color-text-muted);
|
|
2749
|
+
font-size: var(--sc-text-xs);
|
|
2750
|
+
overflow-wrap: anywhere;
|
|
2583
2751
|
}
|
|
2584
2752
|
|
|
2585
|
-
|
|
2586
|
-
|
|
2753
|
+
/* A person's facts: a column of names and a column of values, every value starting on one line
|
|
2754
|
+
down the card, so that the cards read alike. A fact changed in place is a quiet field whose
|
|
2755
|
+
words stand where a value's words stand, its box drawn out into the gap while the pointer or
|
|
2756
|
+
the focus is on it. */
|
|
2757
|
+
.sc-person-facts {
|
|
2758
|
+
display: grid;
|
|
2759
|
+
grid-template-columns: max-content minmax(0, 1fr);
|
|
2760
|
+
gap: var(--sc-space-1) var(--sc-space-4);
|
|
2761
|
+
margin: 0;
|
|
2762
|
+
padding-top: var(--sc-space-3);
|
|
2763
|
+
border-top: var(--sc-hairline);
|
|
2587
2764
|
}
|
|
2588
2765
|
|
|
2589
|
-
.sc-
|
|
2590
|
-
|
|
2766
|
+
.sc-person-fact {
|
|
2767
|
+
display: grid;
|
|
2768
|
+
grid-column: 1 / -1;
|
|
2769
|
+
grid-template-columns: subgrid;
|
|
2770
|
+
align-items: start;
|
|
2591
2771
|
}
|
|
2592
2772
|
|
|
2593
|
-
.
|
|
2594
|
-
|
|
2773
|
+
/* A fact's name stands on the first line of its value, however many lines the value takes. */
|
|
2774
|
+
.sc-person-fact dt,
|
|
2775
|
+
.sc-person-fact dd {
|
|
2776
|
+
display: flex;
|
|
2777
|
+
align-items: center;
|
|
2778
|
+
min-height: 2rem;
|
|
2779
|
+
}
|
|
2780
|
+
|
|
2781
|
+
.sc-person-fact dt {
|
|
2595
2782
|
color: var(--sc-color-text-muted);
|
|
2596
2783
|
font-size: var(--sc-text-sm);
|
|
2597
2784
|
}
|
|
2598
2785
|
|
|
2599
|
-
|
|
2600
|
-
|
|
2601
|
-
|
|
2602
|
-
|
|
2603
|
-
grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr));
|
|
2604
|
-
gap: var(--sc-space-4);
|
|
2786
|
+
.sc-person-fact dd {
|
|
2787
|
+
min-width: 0;
|
|
2788
|
+
margin: 0;
|
|
2789
|
+
font-size: var(--sc-text-sm);
|
|
2605
2790
|
}
|
|
2606
2791
|
|
|
2607
|
-
.
|
|
2608
|
-
|
|
2609
|
-
|
|
2792
|
+
/* Whom a person manages: their faces side by side, and how many. */
|
|
2793
|
+
.sc-person-reports {
|
|
2794
|
+
display: inline-flex;
|
|
2795
|
+
align-items: center;
|
|
2610
2796
|
gap: var(--sc-space-2);
|
|
2611
|
-
padding: var(--sc-space-5);
|
|
2612
|
-
border-radius: var(--sc-radius-xl);
|
|
2613
|
-
transition:
|
|
2614
|
-
border-color var(--sc-transition),
|
|
2615
|
-
background var(--sc-transition),
|
|
2616
|
-
box-shadow var(--sc-transition);
|
|
2617
2797
|
}
|
|
2618
2798
|
|
|
2619
|
-
.sc-
|
|
2620
|
-
.sc-
|
|
2621
|
-
|
|
2622
|
-
|
|
2623
|
-
|
|
2799
|
+
.sc-person-fact dd > .sc-input-quiet,
|
|
2800
|
+
.sc-person-fact dd > .sc-picker-quiet {
|
|
2801
|
+
width: calc(100% + var(--sc-space-2));
|
|
2802
|
+
max-width: none;
|
|
2803
|
+
margin-inline-start: calc(var(--sc-space-2) * -1);
|
|
2624
2804
|
}
|
|
2625
2805
|
|
|
2626
|
-
|
|
2627
|
-
|
|
2628
|
-
stack beside it without a box around them. */
|
|
2629
|
-
.sc-project-head {
|
|
2630
|
-
display: block;
|
|
2806
|
+
.sc-person-fact dd > .sc-chips {
|
|
2807
|
+
padding-block: 0.125rem;
|
|
2631
2808
|
}
|
|
2632
2809
|
|
|
2633
|
-
.sc-
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
clear: both;
|
|
2810
|
+
.sc-person-email {
|
|
2811
|
+
min-width: 0;
|
|
2812
|
+
overflow-wrap: anywhere;
|
|
2637
2813
|
}
|
|
2638
2814
|
|
|
2639
|
-
|
|
2640
|
-
|
|
2641
|
-
|
|
2815
|
+
/* The ways to a person's work at the foot of the card, the way out across from them. */
|
|
2816
|
+
.sc-person-card-ways {
|
|
2817
|
+
display: flex;
|
|
2818
|
+
flex-wrap: wrap;
|
|
2819
|
+
align-items: center;
|
|
2820
|
+
gap: var(--sc-space-1);
|
|
2821
|
+
margin-top: auto;
|
|
2822
|
+
margin-inline: calc(var(--sc-space-2) * -1);
|
|
2642
2823
|
}
|
|
2643
2824
|
|
|
2644
|
-
.sc-
|
|
2645
|
-
margin-
|
|
2646
|
-
margin-inline-end: var(--sc-space-1);
|
|
2825
|
+
.sc-person-card-ways button {
|
|
2826
|
+
margin-inline-start: auto;
|
|
2647
2827
|
}
|
|
2648
2828
|
|
|
2649
|
-
/*
|
|
2650
|
-
.
|
|
2651
|
-
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
|
|
2657
|
-
|
|
2829
|
+
/* A field that reads as the value it holds, until the pointer or the focus is on it: a fact
|
|
2830
|
+
changed in place, as low as a line of the facts, its box drawn only then. A select keeps the
|
|
2831
|
+
room for its chevron, drawn only then too where there is a pointer to hover. */
|
|
2832
|
+
.sc-input-quiet {
|
|
2833
|
+
min-height: 2rem;
|
|
2834
|
+
padding-block: 0;
|
|
2835
|
+
padding-inline: var(--sc-space-2);
|
|
2836
|
+
border-color: transparent;
|
|
2837
|
+
background-color: transparent;
|
|
2838
|
+
text-overflow: ellipsis;
|
|
2658
2839
|
}
|
|
2659
2840
|
|
|
2660
|
-
.sc-
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
|
|
2841
|
+
select.sc-input-quiet {
|
|
2842
|
+
width: auto;
|
|
2843
|
+
min-width: 0;
|
|
2844
|
+
max-width: 100%;
|
|
2845
|
+
padding-inline-end: calc(var(--sc-space-3) * 2 + 0.625rem);
|
|
2664
2846
|
}
|
|
2665
2847
|
|
|
2666
|
-
.sc-
|
|
2667
|
-
|
|
2848
|
+
.sc-input-quiet:hover:not(:disabled),
|
|
2849
|
+
.sc-input-quiet:focus {
|
|
2850
|
+
background-color: var(--sc-color-sheet);
|
|
2668
2851
|
}
|
|
2669
2852
|
|
|
2670
|
-
.sc-
|
|
2671
|
-
|
|
2853
|
+
.sc-input-quiet:hover:not(:disabled):not(:focus) {
|
|
2854
|
+
border-color: var(--sc-color-border);
|
|
2855
|
+
}
|
|
2856
|
+
|
|
2857
|
+
@media (hover: hover) {
|
|
2858
|
+
select.sc-input-quiet:not(:hover):not(:focus) {
|
|
2859
|
+
background-image: none;
|
|
2860
|
+
}
|
|
2861
|
+
}
|
|
2862
|
+
|
|
2863
|
+
.sc-person-row {
|
|
2864
|
+
display: flex;
|
|
2865
|
+
flex-wrap: wrap;
|
|
2866
|
+
align-items: center;
|
|
2867
|
+
gap: var(--sc-space-2) var(--sc-space-3);
|
|
2868
|
+
padding: var(--sc-space-4);
|
|
2869
|
+
border-radius: var(--sc-radius-lg);
|
|
2870
|
+
}
|
|
2871
|
+
|
|
2872
|
+
.sc-person-row > .sc-person {
|
|
2873
|
+
flex: 0 1 auto;
|
|
2874
|
+
min-width: 0;
|
|
2672
2875
|
}
|
|
2673
2876
|
|
|
2674
|
-
.
|
|
2877
|
+
/* That this person is the reader: beside the name on the first line. */
|
|
2878
|
+
.sc-person-you {
|
|
2879
|
+
margin-inline-start: calc(var(--sc-space-1) - var(--sc-space-3));
|
|
2675
2880
|
color: var(--sc-color-text-faint);
|
|
2676
2881
|
font-size: var(--sc-text-xs);
|
|
2677
2882
|
}
|
|
2678
2883
|
|
|
2679
|
-
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
|
|
2884
|
+
.sc-person-name {
|
|
2885
|
+
flex: 1 1 100%;
|
|
2886
|
+
min-width: 0;
|
|
2887
|
+
color: var(--sc-color-text-muted);
|
|
2888
|
+
font-size: var(--sc-text-sm);
|
|
2684
2889
|
}
|
|
2685
2890
|
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
clear: both;
|
|
2891
|
+
/* What let a person in, when they were deactivated, when a login was let in: beside the name, smaller. */
|
|
2892
|
+
.sc-person-note {
|
|
2893
|
+
font-size: var(--sc-text-xs);
|
|
2690
2894
|
}
|
|
2691
2895
|
|
|
2692
|
-
.
|
|
2896
|
+
/* What a person is, or the way to change it: the last line, a step under the account. */
|
|
2897
|
+
.sc-person-row > .sc-badge,
|
|
2898
|
+
.sc-person-row > .sc-field-inline {
|
|
2693
2899
|
margin-top: var(--sc-space-1);
|
|
2900
|
+
}
|
|
2901
|
+
|
|
2902
|
+
/* Those let in and not signed in yet, and those deactivated: sections below everyone in. */
|
|
2903
|
+
.sc-people-section {
|
|
2904
|
+
margin-top: var(--sc-space-6);
|
|
2905
|
+
}
|
|
2906
|
+
|
|
2907
|
+
.sc-person-row-out .sc-person {
|
|
2908
|
+
opacity: 0.55;
|
|
2909
|
+
}
|
|
2910
|
+
|
|
2911
|
+
.sc-listing-form .sc-field-row,
|
|
2912
|
+
.sc-team-form .sc-field-row {
|
|
2913
|
+
align-items: end;
|
|
2914
|
+
}
|
|
2915
|
+
|
|
2916
|
+
/* The two views of the people's page, the people and the teams: the page's view switch, with how
|
|
2917
|
+
many each holds beside its name. */
|
|
2918
|
+
.sc-people-views {
|
|
2919
|
+
margin-bottom: var(--sc-space-5);
|
|
2920
|
+
}
|
|
2921
|
+
|
|
2922
|
+
.sc-people-views .sc-tab {
|
|
2923
|
+
align-items: baseline;
|
|
2924
|
+
}
|
|
2925
|
+
|
|
2926
|
+
.sc-tab-count {
|
|
2927
|
+
color: var(--sc-color-text-faint);
|
|
2928
|
+
font-size: var(--sc-text-xs);
|
|
2929
|
+
font-variant-numeric: tabular-nums;
|
|
2930
|
+
}
|
|
2931
|
+
|
|
2932
|
+
.sc-tab-current .sc-tab-count {
|
|
2694
2933
|
color: var(--sc-color-text-muted);
|
|
2695
|
-
font-size: var(--sc-text-sm);
|
|
2696
2934
|
}
|
|
2697
2935
|
|
|
2698
|
-
|
|
2936
|
+
/* The teams (ADR-0073): a card each in a grid, as the people are; the name and how many at the
|
|
2937
|
+
head, who is in it as chips with the way to add one at the end, the way to delete it at the
|
|
2938
|
+
foot. The name, for an administrator, is a quiet field in the name's own words. */
|
|
2939
|
+
.sc-teams {
|
|
2940
|
+
display: grid;
|
|
2941
|
+
grid-template-columns: repeat(auto-fill, minmax(min(100%, 20rem), 1fr));
|
|
2942
|
+
gap: var(--sc-space-4);
|
|
2943
|
+
}
|
|
2944
|
+
|
|
2945
|
+
.sc-team-card {
|
|
2699
2946
|
display: flex;
|
|
2700
|
-
flex-
|
|
2947
|
+
flex-direction: column;
|
|
2948
|
+
gap: var(--sc-space-3);
|
|
2949
|
+
min-width: 0;
|
|
2950
|
+
padding: var(--sc-space-4) var(--sc-space-5);
|
|
2951
|
+
border-radius: var(--sc-radius-xl);
|
|
2952
|
+
}
|
|
2953
|
+
|
|
2954
|
+
.sc-team-head {
|
|
2955
|
+
display: flex;
|
|
2956
|
+
align-items: center;
|
|
2701
2957
|
gap: var(--sc-space-2);
|
|
2702
|
-
|
|
2958
|
+
min-width: 0;
|
|
2959
|
+
}
|
|
2960
|
+
|
|
2961
|
+
/* The team's name, and under it its key, what it is called by (ADR-0074). */
|
|
2962
|
+
.sc-team-title {
|
|
2963
|
+
display: grid;
|
|
2964
|
+
flex: 1;
|
|
2965
|
+
min-width: 0;
|
|
2966
|
+
}
|
|
2967
|
+
|
|
2968
|
+
.sc-team-name {
|
|
2969
|
+
min-width: 0;
|
|
2970
|
+
font-size: var(--sc-text-md);
|
|
2971
|
+
font-weight: var(--sc-weight-bold);
|
|
2972
|
+
line-height: var(--sc-leading-snug);
|
|
2973
|
+
overflow-wrap: anywhere;
|
|
2974
|
+
}
|
|
2975
|
+
|
|
2976
|
+
.sc-team-name.sc-input-quiet {
|
|
2977
|
+
margin-inline-start: calc(var(--sc-space-2) * -1);
|
|
2978
|
+
color: var(--sc-color-text);
|
|
2979
|
+
}
|
|
2980
|
+
|
|
2981
|
+
.sc-team-members {
|
|
2703
2982
|
padding-top: var(--sc-space-3);
|
|
2704
2983
|
border-top: var(--sc-hairline);
|
|
2705
2984
|
}
|
|
2706
2985
|
|
|
2707
|
-
.sc-
|
|
2708
|
-
display:
|
|
2986
|
+
.sc-team-ways {
|
|
2987
|
+
display: flex;
|
|
2988
|
+
justify-content: flex-end;
|
|
2989
|
+
margin-top: auto;
|
|
2990
|
+
margin-inline: calc(var(--sc-space-2) * -1);
|
|
2991
|
+
}
|
|
2992
|
+
|
|
2993
|
+
.sc-field-hint {
|
|
2994
|
+
margin-top: var(--sc-space-2);
|
|
2995
|
+
color: var(--sc-color-text-muted);
|
|
2996
|
+
font-size: var(--sc-text-sm);
|
|
2997
|
+
}
|
|
2998
|
+
|
|
2999
|
+
.sc-project-key,
|
|
3000
|
+
.sc-team-key {
|
|
3001
|
+
color: var(--sc-color-text-faint);
|
|
3002
|
+
font-size: var(--sc-text-xs);
|
|
2709
3003
|
}
|
|
2710
3004
|
|
|
2711
3005
|
.sc-members {
|
|
@@ -3830,11 +4124,12 @@ select.sc-input {
|
|
|
3830
4124
|
|
|
3831
4125
|
/* The title of a bar with more days in the week runs along the bar as far as its days reach,
|
|
3832
4126
|
less the room of its end, instead of stopping at the first day's edge: above every piece,
|
|
3833
|
-
the one under the pointer included, and under the cards
|
|
3834
|
-
piece of the day beneath. The days are the first
|
|
4127
|
+
the one under the pointer included, and under the cards and the header, which the page scrolls
|
|
4128
|
+
beneath; the pointer goes through it to the piece of the day beneath. The days are the first
|
|
4129
|
+
piece's own custom property. */
|
|
3835
4130
|
.sc-calendar-task-title-spanning {
|
|
3836
4131
|
position: relative;
|
|
3837
|
-
z-index:
|
|
4132
|
+
z-index: 2;
|
|
3838
4133
|
flex: none;
|
|
3839
4134
|
max-width: calc(var(--sc-span, 1) * 100% - 2.25rem);
|
|
3840
4135
|
pointer-events: none;
|
|
@@ -3918,14 +4213,6 @@ select.sc-input {
|
|
|
3918
4213
|
|
|
3919
4214
|
/* The mark hangs in the margin, so that what wraps onto a second line, a badge most often,
|
|
3920
4215
|
starts under the name rather than under the mark. */
|
|
3921
|
-
.sc-project-head:has(> .sc-mark-md) {
|
|
3922
|
-
padding-inline-start: calc(2rem + var(--sc-space-3));
|
|
3923
|
-
}
|
|
3924
|
-
|
|
3925
|
-
.sc-project-head > .sc-mark-md {
|
|
3926
|
-
margin-inline-start: calc(-2rem - var(--sc-space-3));
|
|
3927
|
-
}
|
|
3928
|
-
|
|
3929
4216
|
.sc-mark-lg {
|
|
3930
4217
|
width: 3rem;
|
|
3931
4218
|
height: 3rem;
|
|
@@ -4561,7 +4848,13 @@ select.sc-input {
|
|
|
4561
4848
|
}
|
|
4562
4849
|
|
|
4563
4850
|
.sc-main {
|
|
4564
|
-
|
|
4851
|
+
--sc-main-top: var(--sc-space-5);
|
|
4852
|
+
--sc-main-side: var(--sc-space-4);
|
|
4853
|
+
padding-bottom: var(--sc-space-7);
|
|
4854
|
+
}
|
|
4855
|
+
|
|
4856
|
+
.sc-page-tabs {
|
|
4857
|
+
gap: var(--sc-space-4);
|
|
4565
4858
|
}
|
|
4566
4859
|
|
|
4567
4860
|
.sc-page-title,
|
|
@@ -5155,13 +5448,14 @@ select.sc-input {
|
|
|
5155
5448
|
}
|
|
5156
5449
|
|
|
5157
5450
|
/* A goal's page reads as the board does: the facts in a row at its head, then a switch between
|
|
5158
|
-
the views of its tasks, then the view, which takes the rest of the height as the board does.
|
|
5451
|
+
the views of its tasks, then the view, which takes the rest of the height as the board does. A
|
|
5452
|
+
view that needs more makes the page longer, as on any page: held to the window, it would run out
|
|
5453
|
+
of the shell, and the header, which stays within the shell, would go with the scrolling. */
|
|
5159
5454
|
.sc-goal-page {
|
|
5160
5455
|
display: flex;
|
|
5161
5456
|
flex: 1 1 0;
|
|
5162
5457
|
flex-direction: column;
|
|
5163
5458
|
gap: var(--sc-space-4);
|
|
5164
|
-
min-height: 0;
|
|
5165
5459
|
}
|
|
5166
5460
|
|
|
5167
5461
|
.sc-goal-header {
|
|
@@ -5251,7 +5545,6 @@ select.sc-input {
|
|
|
5251
5545
|
display: flex;
|
|
5252
5546
|
flex: 1 1 0;
|
|
5253
5547
|
flex-direction: column;
|
|
5254
|
-
min-height: 0;
|
|
5255
5548
|
}
|
|
5256
5549
|
|
|
5257
5550
|
.sc-goal-view-list {
|
|
@@ -5337,6 +5630,11 @@ select.sc-input {
|
|
|
5337
5630
|
width: 100%;
|
|
5338
5631
|
}
|
|
5339
5632
|
|
|
5633
|
+
/* A person or a project chosen in a setting: a field as wide as the others. */
|
|
5634
|
+
.sc-settings-control > .sc-picker:not(.sc-picker-add) {
|
|
5635
|
+
justify-self: stretch;
|
|
5636
|
+
}
|
|
5637
|
+
|
|
5340
5638
|
.sc-settings-form .sc-form-actions {
|
|
5341
5639
|
padding-top: var(--sc-space-4);
|
|
5342
5640
|
border-top: var(--sc-border);
|
|
@@ -5895,128 +6193,249 @@ select.sc-input {
|
|
|
5895
6193
|
margin-top: 0.25em;
|
|
5896
6194
|
}
|
|
5897
6195
|
|
|
5898
|
-
|
|
5899
|
-
|
|
5900
|
-
|
|
5901
|
-
|
|
5902
|
-
|
|
5903
|
-
.sc-plugin-tick-name {
|
|
5904
|
-
font-weight: var(--sc-weight-medium);
|
|
5905
|
-
}
|
|
5906
|
-
|
|
5907
|
-
.sc-plugin-tick-under {
|
|
5908
|
-
color: var(--sc-color-text-muted);
|
|
5909
|
-
font-size: var(--sc-text-sm);
|
|
6196
|
+
/* One the plugin requires: on, and not the person's to change, so it does not read as a control. */
|
|
6197
|
+
.sc-plugin-tick-locked {
|
|
6198
|
+
background: transparent;
|
|
6199
|
+
cursor: default;
|
|
5910
6200
|
}
|
|
5911
6201
|
|
|
5912
|
-
/*
|
|
5913
|
-
.sc-plugin-
|
|
6202
|
+
/* What a plugin asks, in two lists: what it requires, and what it can go without. */
|
|
6203
|
+
.sc-plugin-capabilities {
|
|
5914
6204
|
display: grid;
|
|
5915
|
-
gap: var(--sc-space-
|
|
5916
|
-
margin: 0;
|
|
5917
|
-
padding: 0;
|
|
5918
|
-
list-style: none;
|
|
6205
|
+
gap: var(--sc-space-2);
|
|
5919
6206
|
}
|
|
5920
6207
|
|
|
5921
|
-
.sc-plugin-
|
|
5922
|
-
|
|
5923
|
-
flex-wrap: wrap;
|
|
5924
|
-
gap: var(--sc-space-2);
|
|
6208
|
+
.sc-plugin-capabilities + .sc-plugin-capabilities {
|
|
6209
|
+
margin-top: var(--sc-space-3);
|
|
5925
6210
|
}
|
|
5926
6211
|
|
|
5927
|
-
|
|
5928
|
-
.sc-plugin-line {
|
|
6212
|
+
.sc-plugin-capabilities-head {
|
|
5929
6213
|
display: flex;
|
|
5930
6214
|
flex-wrap: wrap;
|
|
5931
|
-
|
|
5932
|
-
|
|
6215
|
+
align-items: baseline;
|
|
6216
|
+
gap: var(--sc-space-1) var(--sc-space-2);
|
|
6217
|
+
margin: 0;
|
|
5933
6218
|
}
|
|
5934
6219
|
|
|
5935
|
-
.sc-plugin-
|
|
5936
|
-
|
|
5937
|
-
|
|
6220
|
+
.sc-plugin-capabilities-name {
|
|
6221
|
+
font-size: var(--sc-text-sm);
|
|
6222
|
+
font-weight: var(--sc-weight-bold);
|
|
5938
6223
|
}
|
|
5939
6224
|
|
|
5940
|
-
|
|
5941
|
-
.sc-plugin-roles {
|
|
5942
|
-
display: grid;
|
|
6225
|
+
.sc-plugin-capabilities-head .sc-settings-hint {
|
|
5943
6226
|
margin: 0;
|
|
5944
|
-
padding: 0;
|
|
5945
|
-
list-style: none;
|
|
5946
6227
|
}
|
|
5947
6228
|
|
|
5948
|
-
|
|
6229
|
+
/* What it can go without, on the page of a plugin that is on: under what it requires, each a box. */
|
|
6230
|
+
.sc-plugin-optional {
|
|
5949
6231
|
display: grid;
|
|
5950
|
-
|
|
5951
|
-
|
|
5952
|
-
padding: var(--sc-space-4) 0;
|
|
5953
|
-
border-top: var(--sc-hairline);
|
|
5954
|
-
}
|
|
5955
|
-
|
|
5956
|
-
.sc-plugin-role:first-child {
|
|
5957
|
-
padding-top: 0;
|
|
5958
|
-
border-top: 0;
|
|
6232
|
+
gap: var(--sc-space-1);
|
|
6233
|
+
margin-top: var(--sc-space-3);
|
|
5959
6234
|
}
|
|
5960
6235
|
|
|
5961
|
-
.sc-plugin-
|
|
5962
|
-
|
|
6236
|
+
.sc-plugin-tick-words {
|
|
6237
|
+
display: grid;
|
|
6238
|
+
gap: 2px;
|
|
5963
6239
|
}
|
|
5964
6240
|
|
|
5965
|
-
.sc-plugin-
|
|
5966
|
-
display: flex;
|
|
6241
|
+
.sc-plugin-tick-name {
|
|
6242
|
+
display: inline-flex;
|
|
5967
6243
|
flex-wrap: wrap;
|
|
5968
6244
|
align-items: center;
|
|
5969
6245
|
gap: var(--sc-space-2);
|
|
5970
6246
|
font-weight: var(--sc-weight-medium);
|
|
5971
6247
|
}
|
|
5972
6248
|
|
|
5973
|
-
.sc-plugin-
|
|
6249
|
+
.sc-plugin-tick-under {
|
|
5974
6250
|
color: var(--sc-color-text-muted);
|
|
5975
|
-
font-
|
|
6251
|
+
font-size: var(--sc-text-sm);
|
|
5976
6252
|
}
|
|
5977
6253
|
|
|
5978
|
-
.
|
|
6254
|
+
/* A setting of several choices (a list of an enum): a pill per choice, lit while chosen. */
|
|
6255
|
+
.sc-toggle-chips {
|
|
5979
6256
|
display: flex;
|
|
5980
6257
|
flex-wrap: wrap;
|
|
5981
|
-
align-items: center;
|
|
5982
6258
|
gap: var(--sc-space-2);
|
|
6259
|
+
margin: 0;
|
|
6260
|
+
padding: 0;
|
|
6261
|
+
border: 0;
|
|
5983
6262
|
}
|
|
5984
6263
|
|
|
5985
|
-
/*
|
|
5986
|
-
.
|
|
6264
|
+
/* A choice is a chip that is its own box: the browser's square kept for the keyboard and a
|
|
6265
|
+
screen reader, out of sight; a choice made is lit in the accent, a tick drawn before its word. */
|
|
6266
|
+
.sc-toggle-chip {
|
|
6267
|
+
position: relative;
|
|
5987
6268
|
display: inline-flex;
|
|
5988
6269
|
align-items: center;
|
|
5989
|
-
gap: var(--sc-space-
|
|
6270
|
+
gap: var(--sc-space-2);
|
|
5990
6271
|
min-height: 2rem;
|
|
5991
|
-
padding
|
|
6272
|
+
padding: 0 var(--sc-space-3);
|
|
5992
6273
|
border: var(--sc-border);
|
|
5993
6274
|
border-radius: var(--sc-radius-full);
|
|
5994
6275
|
background: var(--sc-color-sheet);
|
|
6276
|
+
color: var(--sc-color-text-muted);
|
|
5995
6277
|
font-size: var(--sc-text-sm);
|
|
6278
|
+
cursor: pointer;
|
|
6279
|
+
user-select: none;
|
|
6280
|
+
transition:
|
|
6281
|
+
background var(--sc-transition),
|
|
6282
|
+
border-color var(--sc-transition),
|
|
6283
|
+
color var(--sc-transition);
|
|
5996
6284
|
}
|
|
5997
6285
|
|
|
5998
|
-
.sc-
|
|
5999
|
-
|
|
6286
|
+
.sc-toggle-chip:hover {
|
|
6287
|
+
border-color: var(--sc-color-border-strong);
|
|
6288
|
+
color: var(--sc-color-text);
|
|
6000
6289
|
}
|
|
6001
6290
|
|
|
6002
|
-
.sc-
|
|
6003
|
-
|
|
6004
|
-
|
|
6005
|
-
|
|
6006
|
-
|
|
6291
|
+
.sc-toggle-chip input {
|
|
6292
|
+
position: absolute;
|
|
6293
|
+
width: 1px;
|
|
6294
|
+
height: 1px;
|
|
6295
|
+
margin: 0;
|
|
6296
|
+
opacity: 0;
|
|
6297
|
+
pointer-events: none;
|
|
6007
6298
|
}
|
|
6008
6299
|
|
|
6009
|
-
.sc-
|
|
6010
|
-
|
|
6011
|
-
|
|
6012
|
-
gap: var(--sc-space-2);
|
|
6013
|
-
margin-top: var(--sc-space-3);
|
|
6300
|
+
.sc-toggle-chip:has(input:focus-visible) {
|
|
6301
|
+
outline: var(--sc-focus-ring);
|
|
6302
|
+
outline-offset: 2px;
|
|
6014
6303
|
}
|
|
6015
6304
|
|
|
6016
|
-
.sc-
|
|
6017
|
-
|
|
6018
|
-
|
|
6019
|
-
|
|
6305
|
+
.sc-toggle-chip:has(input:checked) {
|
|
6306
|
+
border-color: color-mix(in srgb, var(--sc-color-accent) 40%, transparent);
|
|
6307
|
+
background: var(--sc-color-accent-subtle);
|
|
6308
|
+
color: var(--sc-color-accent);
|
|
6309
|
+
}
|
|
6310
|
+
|
|
6311
|
+
.sc-toggle-chip:has(input:checked)::before {
|
|
6312
|
+
content: "";
|
|
6313
|
+
width: 0.3125rem;
|
|
6314
|
+
height: 0.5625rem;
|
|
6315
|
+
margin-inline: 0.125rem 0.0625rem;
|
|
6316
|
+
border: solid currentColor;
|
|
6317
|
+
border-width: 0 1.5px 1.5px 0;
|
|
6318
|
+
transform: translateY(-0.0625rem) rotate(45deg);
|
|
6319
|
+
}
|
|
6320
|
+
|
|
6321
|
+
.sc-toggle-chip:has(input:disabled) {
|
|
6322
|
+
opacity: 0.55;
|
|
6323
|
+
cursor: not-allowed;
|
|
6324
|
+
}
|
|
6325
|
+
|
|
6326
|
+
/* A list of several choices too long for pills: a column of boxes. */
|
|
6327
|
+
.sc-check-list {
|
|
6328
|
+
display: grid;
|
|
6329
|
+
gap: var(--sc-space-1);
|
|
6330
|
+
margin: 0;
|
|
6331
|
+
padding: 0;
|
|
6332
|
+
list-style: none;
|
|
6333
|
+
}
|
|
6334
|
+
|
|
6335
|
+
/* A list of items typed one by one: the field and its button on one line, the items as chips above. */
|
|
6336
|
+
.sc-chip-input {
|
|
6337
|
+
display: flex;
|
|
6338
|
+
gap: var(--sc-space-2);
|
|
6339
|
+
width: 100%;
|
|
6340
|
+
}
|
|
6341
|
+
|
|
6342
|
+
.sc-chip-input .sc-input {
|
|
6343
|
+
flex: 1;
|
|
6344
|
+
min-width: 0;
|
|
6345
|
+
}
|
|
6346
|
+
|
|
6347
|
+
/* The settings form divided into groups: each a titled block after the ungrouped settings. */
|
|
6348
|
+
.sc-settings-group {
|
|
6349
|
+
padding-top: var(--sc-space-5);
|
|
6350
|
+
}
|
|
6351
|
+
|
|
6352
|
+
.sc-settings-group-title {
|
|
6353
|
+
margin: 0;
|
|
6354
|
+
font-size: var(--sc-text-md);
|
|
6355
|
+
font-weight: var(--sc-weight-medium);
|
|
6356
|
+
}
|
|
6357
|
+
|
|
6358
|
+
.sc-settings-group > .sc-settings-row:first-of-type {
|
|
6359
|
+
border-top: 0;
|
|
6360
|
+
}
|
|
6361
|
+
|
|
6362
|
+
/* The capabilities an enabled plugin holds, one a line; its commands as words side by side. */
|
|
6363
|
+
.sc-plugin-held {
|
|
6364
|
+
display: grid;
|
|
6365
|
+
gap: var(--sc-space-1);
|
|
6366
|
+
margin: 0;
|
|
6367
|
+
padding: 0;
|
|
6368
|
+
list-style: none;
|
|
6369
|
+
}
|
|
6370
|
+
|
|
6371
|
+
.sc-plugin-codes {
|
|
6372
|
+
display: inline-flex;
|
|
6373
|
+
flex-wrap: wrap;
|
|
6374
|
+
gap: var(--sc-space-2);
|
|
6375
|
+
}
|
|
6376
|
+
|
|
6377
|
+
/* A field with its buttons on one line: a secret to set, the key to type before a purge. */
|
|
6378
|
+
.sc-plugin-line {
|
|
6379
|
+
display: flex;
|
|
6380
|
+
flex-wrap: wrap;
|
|
6381
|
+
gap: var(--sc-space-2);
|
|
6382
|
+
width: 100%;
|
|
6383
|
+
}
|
|
6384
|
+
|
|
6385
|
+
.sc-plugin-line-input {
|
|
6386
|
+
flex: 1 1 8rem;
|
|
6387
|
+
width: auto;
|
|
6388
|
+
}
|
|
6389
|
+
|
|
6390
|
+
/* The roles: one a row, its name and what it is for beside who holds it and the way to grant it. */
|
|
6391
|
+
.sc-plugin-roles {
|
|
6392
|
+
display: grid;
|
|
6393
|
+
margin: 0;
|
|
6394
|
+
padding: 0;
|
|
6395
|
+
list-style: none;
|
|
6396
|
+
}
|
|
6397
|
+
|
|
6398
|
+
.sc-plugin-role {
|
|
6399
|
+
display: grid;
|
|
6400
|
+
grid-template-columns: minmax(10rem, 16rem) minmax(0, 1fr);
|
|
6401
|
+
gap: var(--sc-space-2) var(--sc-space-5);
|
|
6402
|
+
padding: var(--sc-space-4) 0;
|
|
6403
|
+
border-top: var(--sc-hairline);
|
|
6404
|
+
}
|
|
6405
|
+
|
|
6406
|
+
.sc-plugin-role:first-child {
|
|
6407
|
+
padding-top: 0;
|
|
6408
|
+
border-top: 0;
|
|
6409
|
+
}
|
|
6410
|
+
|
|
6411
|
+
.sc-plugin-role:last-child {
|
|
6412
|
+
padding-bottom: 0;
|
|
6413
|
+
}
|
|
6414
|
+
|
|
6415
|
+
.sc-plugin-role-name {
|
|
6416
|
+
display: flex;
|
|
6417
|
+
flex-wrap: wrap;
|
|
6418
|
+
align-items: center;
|
|
6419
|
+
gap: var(--sc-space-2);
|
|
6420
|
+
font-weight: var(--sc-weight-medium);
|
|
6421
|
+
}
|
|
6422
|
+
|
|
6423
|
+
.sc-plugin-role-key {
|
|
6424
|
+
color: var(--sc-color-text-muted);
|
|
6425
|
+
font-weight: normal;
|
|
6426
|
+
}
|
|
6427
|
+
|
|
6428
|
+
.sc-plugin-grant {
|
|
6429
|
+
display: flex;
|
|
6430
|
+
flex-wrap: wrap;
|
|
6431
|
+
gap: var(--sc-space-2);
|
|
6432
|
+
margin-top: var(--sc-space-3);
|
|
6433
|
+
}
|
|
6434
|
+
|
|
6435
|
+
.sc-plugin-grant-input {
|
|
6436
|
+
flex: 0 1 20rem;
|
|
6437
|
+
width: auto;
|
|
6438
|
+
}
|
|
6020
6439
|
|
|
6021
6440
|
.sc-plugin-problems {
|
|
6022
6441
|
margin: 0;
|
|
@@ -6028,3 +6447,449 @@ select.sc-input {
|
|
|
6028
6447
|
grid-template-columns: minmax(0, 1fr);
|
|
6029
6448
|
}
|
|
6030
6449
|
}
|
|
6450
|
+
|
|
6451
|
+
/* The front page (ADR-0061): one grid of square cells, each as wide as the page gives it, a
|
|
6452
|
+
tile's place and shape numbers on its style. A tile stands where a transform puts it, so that
|
|
6453
|
+
it glides to a new place and the frame in it stays loaded. */
|
|
6454
|
+
|
|
6455
|
+
.sc-home {
|
|
6456
|
+
container-type: inline-size;
|
|
6457
|
+
}
|
|
6458
|
+
|
|
6459
|
+
.sc-home-grid {
|
|
6460
|
+
--sc-home-columns: 8;
|
|
6461
|
+
--sc-home-rows: 1;
|
|
6462
|
+
--sc-home-gap: var(--sc-space-4);
|
|
6463
|
+
--sc-home-cell: calc(
|
|
6464
|
+
(100cqi - (var(--sc-home-columns) - 1) * var(--sc-home-gap)) /
|
|
6465
|
+
var(--sc-home-columns)
|
|
6466
|
+
);
|
|
6467
|
+
--sc-home-step: calc(var(--sc-home-cell) + var(--sc-home-gap));
|
|
6468
|
+
position: relative;
|
|
6469
|
+
height: calc(var(--sc-home-rows) * var(--sc-home-step) - var(--sc-home-gap));
|
|
6470
|
+
row-gap: var(--sc-home-gap);
|
|
6471
|
+
margin: 0;
|
|
6472
|
+
padding: 0;
|
|
6473
|
+
list-style: none;
|
|
6474
|
+
}
|
|
6475
|
+
|
|
6476
|
+
.sc-home-grid[data-columns="4"] {
|
|
6477
|
+
--sc-home-gap: var(--sc-space-3);
|
|
6478
|
+
}
|
|
6479
|
+
|
|
6480
|
+
.sc-tile {
|
|
6481
|
+
container: sc-tile / size;
|
|
6482
|
+
--sc-tile-x: 0;
|
|
6483
|
+
--sc-tile-y: 0;
|
|
6484
|
+
--sc-tile-w: 1;
|
|
6485
|
+
--sc-tile-h: 1;
|
|
6486
|
+
--sc-tile-left: 0px;
|
|
6487
|
+
--sc-tile-top: 0px;
|
|
6488
|
+
--sc-tile-wait: 0ms;
|
|
6489
|
+
position: absolute;
|
|
6490
|
+
top: 0;
|
|
6491
|
+
left: 0;
|
|
6492
|
+
width: calc(var(--sc-tile-w) * var(--sc-home-step) - var(--sc-home-gap));
|
|
6493
|
+
height: calc(var(--sc-tile-h) * var(--sc-home-step) - var(--sc-home-gap));
|
|
6494
|
+
/* The property of its own and not `transform`, which the `scale` of a tile in hand would multiply. */
|
|
6495
|
+
translate: calc(var(--sc-tile-x) * var(--sc-home-step))
|
|
6496
|
+
calc(var(--sc-tile-y) * var(--sc-home-step));
|
|
6497
|
+
}
|
|
6498
|
+
|
|
6499
|
+
.sc-tile-pane {
|
|
6500
|
+
width: 100%;
|
|
6501
|
+
height: 100%;
|
|
6502
|
+
border-radius: var(--sc-radius-xl);
|
|
6503
|
+
transition:
|
|
6504
|
+
border-color var(--sc-transition),
|
|
6505
|
+
background var(--sc-transition),
|
|
6506
|
+
box-shadow var(--sc-transition);
|
|
6507
|
+
}
|
|
6508
|
+
|
|
6509
|
+
/* A project as an icon: its mark and its name in the middle of the cell, what waits in the corner.
|
|
6510
|
+
The mark and the room around it follow the cell. What still does not fit stands whole or not at
|
|
6511
|
+
all: its row goes to a second column, past the room the tile cuts off, so that no line of words
|
|
6512
|
+
is ever cut across. */
|
|
6513
|
+
.sc-tile-project {
|
|
6514
|
+
--sc-tile-mark: clamp(1.75rem, 47cqh, 3.25rem);
|
|
6515
|
+
display: flex;
|
|
6516
|
+
flex-flow: column wrap;
|
|
6517
|
+
gap: clamp(0.125rem, 4cqh, 0.5rem) var(--sc-space-7);
|
|
6518
|
+
align-content: flex-start;
|
|
6519
|
+
justify-content: center;
|
|
6520
|
+
padding: clamp(0.25rem, 8cqh, 0.75rem);
|
|
6521
|
+
overflow: hidden;
|
|
6522
|
+
color: var(--sc-color-text);
|
|
6523
|
+
text-align: center;
|
|
6524
|
+
text-decoration: none;
|
|
6525
|
+
}
|
|
6526
|
+
|
|
6527
|
+
.sc-tile-project > :not(.sc-tile-count) {
|
|
6528
|
+
flex: none;
|
|
6529
|
+
width: 100%;
|
|
6530
|
+
}
|
|
6531
|
+
|
|
6532
|
+
.sc-tile-mark {
|
|
6533
|
+
display: flex;
|
|
6534
|
+
justify-content: center;
|
|
6535
|
+
}
|
|
6536
|
+
|
|
6537
|
+
a.sc-tile-project:hover,
|
|
6538
|
+
a.sc-tile-project:focus-visible {
|
|
6539
|
+
border-color: var(--sc-color-accent);
|
|
6540
|
+
background: var(--sc-glass-surface-hover);
|
|
6541
|
+
color: var(--sc-color-text);
|
|
6542
|
+
box-shadow: var(--sc-glass-sheen), var(--sc-glass-lift), var(--sc-glow);
|
|
6543
|
+
}
|
|
6544
|
+
|
|
6545
|
+
.sc-tile-project .sc-mark {
|
|
6546
|
+
width: var(--sc-tile-mark);
|
|
6547
|
+
height: var(--sc-tile-mark);
|
|
6548
|
+
font-size: calc(var(--sc-tile-mark) * 0.42);
|
|
6549
|
+
}
|
|
6550
|
+
|
|
6551
|
+
.sc-tile-name {
|
|
6552
|
+
display: -webkit-box;
|
|
6553
|
+
max-width: 100%;
|
|
6554
|
+
overflow: hidden;
|
|
6555
|
+
font-size: var(--sc-text-sm);
|
|
6556
|
+
font-weight: var(--sc-weight-medium);
|
|
6557
|
+
line-height: var(--sc-leading-snug);
|
|
6558
|
+
overflow-wrap: anywhere;
|
|
6559
|
+
-webkit-box-orient: vertical;
|
|
6560
|
+
-webkit-line-clamp: 2;
|
|
6561
|
+
}
|
|
6562
|
+
|
|
6563
|
+
/* What waits, in the corner: the count a tab shows, where it stands on a tile. */
|
|
6564
|
+
.sc-tile-count {
|
|
6565
|
+
position: absolute;
|
|
6566
|
+
top: var(--sc-space-2);
|
|
6567
|
+
right: var(--sc-space-2);
|
|
6568
|
+
}
|
|
6569
|
+
|
|
6570
|
+
/* On a low cell the name keeps to one line, on the lowest in smaller words. */
|
|
6571
|
+
@container sc-tile (height < 7.75rem) {
|
|
6572
|
+
.sc-tile-project:not(.sc-tile-project-card) .sc-tile-name {
|
|
6573
|
+
-webkit-line-clamp: 1;
|
|
6574
|
+
}
|
|
6575
|
+
}
|
|
6576
|
+
|
|
6577
|
+
@container sc-tile (height < 5.5rem) {
|
|
6578
|
+
.sc-tile-project:not(.sc-tile-project-card) {
|
|
6579
|
+
border-radius: var(--sc-radius-lg);
|
|
6580
|
+
}
|
|
6581
|
+
|
|
6582
|
+
.sc-tile-project:not(.sc-tile-project-card) .sc-tile-name {
|
|
6583
|
+
font-size: var(--sc-text-xs);
|
|
6584
|
+
line-height: var(--sc-leading-tight);
|
|
6585
|
+
}
|
|
6586
|
+
}
|
|
6587
|
+
|
|
6588
|
+
/* A project as a card, read from the corner: its name, what it is at a glance, and as much of its
|
|
6589
|
+
description as the card has room for, the rows lost from the last up. */
|
|
6590
|
+
.sc-tile-project-card {
|
|
6591
|
+
--sc-tile-mark: clamp(2.25rem, 22cqh, 3.25rem);
|
|
6592
|
+
justify-content: flex-start;
|
|
6593
|
+
padding: clamp(0.75rem, 8cqh, 1.25rem);
|
|
6594
|
+
text-align: start;
|
|
6595
|
+
}
|
|
6596
|
+
|
|
6597
|
+
.sc-tile-project-card .sc-tile-mark {
|
|
6598
|
+
justify-content: flex-start;
|
|
6599
|
+
}
|
|
6600
|
+
|
|
6601
|
+
.sc-tile-project-card .sc-tile-name {
|
|
6602
|
+
font-size: var(--sc-text-lg);
|
|
6603
|
+
font-weight: var(--sc-weight-bold);
|
|
6604
|
+
}
|
|
6605
|
+
|
|
6606
|
+
.sc-tile-meta {
|
|
6607
|
+
display: flex;
|
|
6608
|
+
flex-wrap: wrap;
|
|
6609
|
+
gap: var(--sc-space-1) var(--sc-space-2);
|
|
6610
|
+
align-items: center;
|
|
6611
|
+
}
|
|
6612
|
+
|
|
6613
|
+
.sc-tile-about {
|
|
6614
|
+
display: -webkit-box;
|
|
6615
|
+
overflow: hidden;
|
|
6616
|
+
color: var(--sc-color-text-muted);
|
|
6617
|
+
font-size: var(--sc-text-sm);
|
|
6618
|
+
-webkit-box-orient: vertical;
|
|
6619
|
+
-webkit-line-clamp: 3;
|
|
6620
|
+
}
|
|
6621
|
+
|
|
6622
|
+
@container sc-tile (height < 15rem) {
|
|
6623
|
+
.sc-tile-project-card .sc-tile-name {
|
|
6624
|
+
-webkit-line-clamp: 1;
|
|
6625
|
+
}
|
|
6626
|
+
|
|
6627
|
+
.sc-tile-about {
|
|
6628
|
+
-webkit-line-clamp: 2;
|
|
6629
|
+
}
|
|
6630
|
+
}
|
|
6631
|
+
|
|
6632
|
+
@container sc-tile (height < 13rem) {
|
|
6633
|
+
.sc-tile-about {
|
|
6634
|
+
-webkit-line-clamp: 1;
|
|
6635
|
+
}
|
|
6636
|
+
}
|
|
6637
|
+
|
|
6638
|
+
/* A widget: its name, and its frame filling the cells its size gives it. */
|
|
6639
|
+
.sc-tile-widget {
|
|
6640
|
+
display: grid;
|
|
6641
|
+
grid-template-rows: auto minmax(0, 1fr);
|
|
6642
|
+
padding: var(--sc-space-3) var(--sc-space-4);
|
|
6643
|
+
overflow: hidden;
|
|
6644
|
+
}
|
|
6645
|
+
|
|
6646
|
+
.sc-tile-title {
|
|
6647
|
+
margin: 0 0 var(--sc-space-2);
|
|
6648
|
+
overflow: hidden;
|
|
6649
|
+
color: var(--sc-color-text-muted);
|
|
6650
|
+
font-size: var(--sc-text-sm);
|
|
6651
|
+
font-weight: var(--sc-weight-medium);
|
|
6652
|
+
text-overflow: ellipsis;
|
|
6653
|
+
white-space: nowrap;
|
|
6654
|
+
}
|
|
6655
|
+
|
|
6656
|
+
.sc-tile-widget .sc-plugin-frame-widget {
|
|
6657
|
+
height: 100%;
|
|
6658
|
+
min-height: 0;
|
|
6659
|
+
}
|
|
6660
|
+
|
|
6661
|
+
/* While the page is arranged: the cells show as dots, every tile is a thing to take hold of, and
|
|
6662
|
+
what is in a frame stays out of the pointer's way. The bar stays in reach, just under the header
|
|
6663
|
+
and above the tiles that pass beneath it. */
|
|
6664
|
+
.sc-home-bar {
|
|
6665
|
+
position: sticky;
|
|
6666
|
+
top: calc(var(--sc-header-height) + 2.75rem + var(--sc-space-3));
|
|
6667
|
+
z-index: 2;
|
|
6668
|
+
display: flex;
|
|
6669
|
+
flex-wrap: wrap;
|
|
6670
|
+
gap: var(--sc-space-2) var(--sc-space-4);
|
|
6671
|
+
align-items: center;
|
|
6672
|
+
justify-content: space-between;
|
|
6673
|
+
margin-bottom: var(--sc-space-4);
|
|
6674
|
+
padding: var(--sc-space-2) var(--sc-space-2) var(--sc-space-2) var(--sc-space-4);
|
|
6675
|
+
border-radius: var(--sc-radius-lg);
|
|
6676
|
+
}
|
|
6677
|
+
|
|
6678
|
+
.sc-home-hint {
|
|
6679
|
+
margin: 0;
|
|
6680
|
+
color: var(--sc-color-text-muted);
|
|
6681
|
+
font-size: var(--sc-text-sm);
|
|
6682
|
+
}
|
|
6683
|
+
|
|
6684
|
+
.sc-home-bar-actions {
|
|
6685
|
+
display: flex;
|
|
6686
|
+
gap: var(--sc-space-2);
|
|
6687
|
+
align-items: center;
|
|
6688
|
+
}
|
|
6689
|
+
|
|
6690
|
+
.sc-home-tray {
|
|
6691
|
+
display: flex;
|
|
6692
|
+
flex-wrap: wrap;
|
|
6693
|
+
gap: var(--sc-space-2);
|
|
6694
|
+
align-items: center;
|
|
6695
|
+
margin-bottom: var(--sc-space-4);
|
|
6696
|
+
}
|
|
6697
|
+
|
|
6698
|
+
.sc-home-add {
|
|
6699
|
+
padding: var(--sc-space-1) var(--sc-space-3);
|
|
6700
|
+
border: var(--sc-border);
|
|
6701
|
+
border-radius: var(--sc-radius-full);
|
|
6702
|
+
background: var(--sc-color-sheet);
|
|
6703
|
+
color: var(--sc-color-text);
|
|
6704
|
+
font: inherit;
|
|
6705
|
+
font-size: var(--sc-text-sm);
|
|
6706
|
+
cursor: pointer;
|
|
6707
|
+
}
|
|
6708
|
+
|
|
6709
|
+
.sc-home-add:hover {
|
|
6710
|
+
border-color: var(--sc-color-accent);
|
|
6711
|
+
}
|
|
6712
|
+
|
|
6713
|
+
.sc-home-editing .sc-home-grid {
|
|
6714
|
+
background-image: radial-gradient(circle, var(--sc-color-text-faint) 1px, transparent 1.5px);
|
|
6715
|
+
background-position: calc(var(--sc-home-cell) / 2) calc(var(--sc-home-cell) / 2);
|
|
6716
|
+
background-size: var(--sc-home-step) var(--sc-home-step);
|
|
6717
|
+
}
|
|
6718
|
+
|
|
6719
|
+
/* A tile moves with a little give, overshooting its cell and settling on it, and those in the way
|
|
6720
|
+
start one after another, each as the wait in its style says. One put down keeps its place above
|
|
6721
|
+
the others until it has landed. */
|
|
6722
|
+
.sc-home-editing .sc-tile {
|
|
6723
|
+
z-index: 1;
|
|
6724
|
+
cursor: grab;
|
|
6725
|
+
transition:
|
|
6726
|
+
translate 360ms cubic-bezier(0.25, 1.35, 0.4, 1) var(--sc-tile-wait),
|
|
6727
|
+
scale 160ms ease-out,
|
|
6728
|
+
z-index 0s linear 360ms;
|
|
6729
|
+
user-select: none;
|
|
6730
|
+
}
|
|
6731
|
+
|
|
6732
|
+
.sc-home-editing .sc-tile:focus-visible {
|
|
6733
|
+
outline: var(--sc-focus-ring);
|
|
6734
|
+
outline-offset: 2px;
|
|
6735
|
+
}
|
|
6736
|
+
|
|
6737
|
+
.sc-home-editing .sc-tile:hover .sc-tile-pane {
|
|
6738
|
+
border-color: var(--sc-color-accent);
|
|
6739
|
+
}
|
|
6740
|
+
|
|
6741
|
+
.sc-home-editing .sc-plugin-frame {
|
|
6742
|
+
pointer-events: none;
|
|
6743
|
+
}
|
|
6744
|
+
|
|
6745
|
+
/* A finger resting on a tile is neither selecting its words nor asking for the page's menu. */
|
|
6746
|
+
@media (pointer: coarse) {
|
|
6747
|
+
.sc-home-editing .sc-tile {
|
|
6748
|
+
-webkit-touch-callout: none;
|
|
6749
|
+
}
|
|
6750
|
+
}
|
|
6751
|
+
|
|
6752
|
+
/* The tile in hand: lifted off the page, and under the pointer with no delay. */
|
|
6753
|
+
.sc-home-editing .sc-tile-held {
|
|
6754
|
+
z-index: 10;
|
|
6755
|
+
translate: var(--sc-tile-left) var(--sc-tile-top);
|
|
6756
|
+
scale: 1.04;
|
|
6757
|
+
transition: scale 160ms ease-out;
|
|
6758
|
+
}
|
|
6759
|
+
|
|
6760
|
+
.sc-tile-held .sc-tile-pane {
|
|
6761
|
+
box-shadow: var(--sc-glass-sheen), var(--sc-glass-lift), var(--sc-glow);
|
|
6762
|
+
}
|
|
6763
|
+
|
|
6764
|
+
.sc-home-held,
|
|
6765
|
+
.sc-home-held .sc-tile,
|
|
6766
|
+
.sc-home-held .sc-tile * {
|
|
6767
|
+
cursor: grabbing;
|
|
6768
|
+
}
|
|
6769
|
+
|
|
6770
|
+
/* Where it would land: the tile itself, faint, on a pane of the accent's glass, beneath those on
|
|
6771
|
+
their way out of it. */
|
|
6772
|
+
.sc-home-editing .sc-tile-slot {
|
|
6773
|
+
z-index: 0;
|
|
6774
|
+
animation: sc-tile-slot-in 160ms ease-out;
|
|
6775
|
+
pointer-events: none;
|
|
6776
|
+
}
|
|
6777
|
+
|
|
6778
|
+
.sc-tile-slot .sc-tile-pane {
|
|
6779
|
+
border-color: color-mix(in srgb, var(--sc-color-accent-solid) 45%, transparent);
|
|
6780
|
+
background: color-mix(in srgb, var(--sc-color-accent-subtle) 50%, transparent);
|
|
6781
|
+
box-shadow: none;
|
|
6782
|
+
}
|
|
6783
|
+
|
|
6784
|
+
.sc-tile-slot .sc-tile-pane > * {
|
|
6785
|
+
opacity: 0.4;
|
|
6786
|
+
}
|
|
6787
|
+
|
|
6788
|
+
.sc-tile-slot .sc-tile-count {
|
|
6789
|
+
display: none;
|
|
6790
|
+
}
|
|
6791
|
+
|
|
6792
|
+
@keyframes sc-tile-slot-in {
|
|
6793
|
+
from {
|
|
6794
|
+
opacity: 0;
|
|
6795
|
+
}
|
|
6796
|
+
}
|
|
6797
|
+
|
|
6798
|
+
/* The ways on a tile while the page is arranged: off the page at its corner, the sizes across. */
|
|
6799
|
+
.sc-tile-remove {
|
|
6800
|
+
position: absolute;
|
|
6801
|
+
top: calc(var(--sc-space-2) * -1);
|
|
6802
|
+
left: calc(var(--sc-space-2) * -1);
|
|
6803
|
+
z-index: 1;
|
|
6804
|
+
display: inline-flex;
|
|
6805
|
+
align-items: center;
|
|
6806
|
+
justify-content: center;
|
|
6807
|
+
width: 1.5rem;
|
|
6808
|
+
height: 1.5rem;
|
|
6809
|
+
padding: 0;
|
|
6810
|
+
border: var(--sc-border);
|
|
6811
|
+
border-radius: var(--sc-radius-full);
|
|
6812
|
+
background: var(--sc-color-bg-raised);
|
|
6813
|
+
color: var(--sc-color-text);
|
|
6814
|
+
font-size: var(--sc-text-sm);
|
|
6815
|
+
line-height: 1;
|
|
6816
|
+
cursor: pointer;
|
|
6817
|
+
}
|
|
6818
|
+
|
|
6819
|
+
.sc-tile-remove:hover {
|
|
6820
|
+
border-color: var(--sc-color-accent);
|
|
6821
|
+
}
|
|
6822
|
+
|
|
6823
|
+
.sc-tile-sizes {
|
|
6824
|
+
position: absolute;
|
|
6825
|
+
top: var(--sc-space-1);
|
|
6826
|
+
right: var(--sc-space-1);
|
|
6827
|
+
z-index: 1;
|
|
6828
|
+
display: inline-flex;
|
|
6829
|
+
gap: 1px;
|
|
6830
|
+
margin: 0;
|
|
6831
|
+
padding: 1px;
|
|
6832
|
+
border: var(--sc-border);
|
|
6833
|
+
border-radius: var(--sc-radius-md);
|
|
6834
|
+
background: var(--sc-color-bg-raised);
|
|
6835
|
+
}
|
|
6836
|
+
|
|
6837
|
+
.sc-tile-size {
|
|
6838
|
+
display: inline-flex;
|
|
6839
|
+
align-items: center;
|
|
6840
|
+
justify-content: center;
|
|
6841
|
+
min-width: 1.5rem;
|
|
6842
|
+
height: 1.5rem;
|
|
6843
|
+
padding: 0 3px;
|
|
6844
|
+
border: 0;
|
|
6845
|
+
border-radius: var(--sc-radius-sm);
|
|
6846
|
+
background: transparent;
|
|
6847
|
+
color: var(--sc-color-text-muted);
|
|
6848
|
+
cursor: pointer;
|
|
6849
|
+
}
|
|
6850
|
+
|
|
6851
|
+
.sc-tile-size:hover {
|
|
6852
|
+
background: var(--sc-color-bg-inset);
|
|
6853
|
+
}
|
|
6854
|
+
|
|
6855
|
+
.sc-tile-size-on {
|
|
6856
|
+
background: var(--sc-color-accent-subtle);
|
|
6857
|
+
color: var(--sc-color-accent);
|
|
6858
|
+
}
|
|
6859
|
+
|
|
6860
|
+
/* Under the sizes, a widget's name ends short of them; on small cells a project stands lower. */
|
|
6861
|
+
.sc-home-editing .sc-tile-title {
|
|
6862
|
+
padding-inline-end: 4.5rem;
|
|
6863
|
+
}
|
|
6864
|
+
|
|
6865
|
+
.sc-home-editing .sc-home-grid[data-columns="4"] .sc-tile-size,
|
|
6866
|
+
.sc-home-editing .sc-home-grid[data-columns="6"] .sc-tile-size {
|
|
6867
|
+
min-width: 1.25rem;
|
|
6868
|
+
height: 1.25rem;
|
|
6869
|
+
padding: 0 2px;
|
|
6870
|
+
}
|
|
6871
|
+
|
|
6872
|
+
.sc-home-editing .sc-home-grid[data-columns="4"] .sc-tile-project:not(.sc-tile-project-card),
|
|
6873
|
+
.sc-home-editing .sc-home-grid[data-columns="6"] .sc-tile-project:not(.sc-tile-project-card) {
|
|
6874
|
+
justify-content: flex-end;
|
|
6875
|
+
}
|
|
6876
|
+
|
|
6877
|
+
/* The size's shape in small: the cells it takes, a few pixels each. */
|
|
6878
|
+
.sc-tile-size-glyph {
|
|
6879
|
+
display: block;
|
|
6880
|
+
width: calc(var(--sc-tile-w) * 2px + 4px);
|
|
6881
|
+
height: calc(var(--sc-tile-h) * 2px + 4px);
|
|
6882
|
+
border: 1.5px solid currentcolor;
|
|
6883
|
+
border-radius: 2px;
|
|
6884
|
+
}
|
|
6885
|
+
|
|
6886
|
+
@media (prefers-reduced-motion: reduce) {
|
|
6887
|
+
.sc-home-editing .sc-tile,
|
|
6888
|
+
.sc-home-editing .sc-tile-held {
|
|
6889
|
+
transition: none;
|
|
6890
|
+
}
|
|
6891
|
+
|
|
6892
|
+
.sc-home-editing .sc-tile-slot {
|
|
6893
|
+
animation: none;
|
|
6894
|
+
}
|
|
6895
|
+
}
|