@skillcdn/console 0.3.2 → 0.4.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.
Files changed (179) hide show
  1. package/README.md +4 -3
  2. package/dist/api.d.ts +2 -2
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +2 -2
  5. package/dist/api.js.map +1 -1
  6. package/dist/cli/cli.d.ts.map +1 -1
  7. package/dist/cli/cli.js +132 -18
  8. package/dist/cli/cli.js.map +1 -1
  9. package/dist/cli/format.d.ts.map +1 -1
  10. package/dist/cli/format.js +6 -4
  11. package/dist/cli/format.js.map +1 -1
  12. package/dist/cli/help.d.ts.map +1 -1
  13. package/dist/cli/help.js +72 -21
  14. package/dist/cli/help.js.map +1 -1
  15. package/dist/cli/pack.d.ts +7 -2
  16. package/dist/cli/pack.d.ts.map +1 -1
  17. package/dist/cli/pack.js +16 -2
  18. package/dist/cli/pack.js.map +1 -1
  19. package/dist/client.d.ts +19 -3
  20. package/dist/client.d.ts.map +1 -1
  21. package/dist/client.js +11 -1
  22. package/dist/client.js.map +1 -1
  23. package/dist/compat.d.ts +1 -1
  24. package/dist/compat.js +2 -2
  25. package/dist/components/board.d.ts +12 -1
  26. package/dist/components/board.d.ts.map +1 -1
  27. package/dist/components/board.js +52 -4
  28. package/dist/components/board.js.map +1 -1
  29. package/dist/components/calendar.d.ts +4 -0
  30. package/dist/components/calendar.d.ts.map +1 -1
  31. package/dist/components/calendar.js +61 -22
  32. package/dist/components/calendar.js.map +1 -1
  33. package/dist/components/decision-form.d.ts +12 -4
  34. package/dist/components/decision-form.d.ts.map +1 -1
  35. package/dist/components/decision-form.js +24 -6
  36. package/dist/components/decision-form.js.map +1 -1
  37. package/dist/components/decision-list.d.ts +4 -0
  38. package/dist/components/decision-list.d.ts.map +1 -1
  39. package/dist/components/decision-list.js +9 -6
  40. package/dist/components/decision-list.js.map +1 -1
  41. package/dist/components/documents.d.ts.map +1 -1
  42. package/dist/components/documents.js +3 -3
  43. package/dist/components/documents.js.map +1 -1
  44. package/dist/components/event-feed.d.ts.map +1 -1
  45. package/dist/components/event-feed.js +63 -8
  46. package/dist/components/event-feed.js.map +1 -1
  47. package/dist/components/markdown.d.ts.map +1 -1
  48. package/dist/components/markdown.js +6 -3
  49. package/dist/components/markdown.js.map +1 -1
  50. package/dist/components/my-decisions.d.ts +20 -0
  51. package/dist/components/my-decisions.d.ts.map +1 -0
  52. package/dist/components/my-decisions.js +36 -0
  53. package/dist/components/my-decisions.js.map +1 -0
  54. package/dist/components/pack-connect.d.ts +3 -1
  55. package/dist/components/pack-connect.d.ts.map +1 -1
  56. package/dist/components/pack-connect.js +4 -4
  57. package/dist/components/pack-connect.js.map +1 -1
  58. package/dist/components/pack-token.d.ts +3 -1
  59. package/dist/components/pack-token.d.ts.map +1 -1
  60. package/dist/components/pack-token.js +1 -1
  61. package/dist/components/pack-token.js.map +1 -1
  62. package/dist/components/people.d.ts.map +1 -1
  63. package/dist/components/people.js +14 -3
  64. package/dist/components/people.js.map +1 -1
  65. package/dist/components/projects.d.ts.map +1 -1
  66. package/dist/components/projects.js +3 -3
  67. package/dist/components/projects.js.map +1 -1
  68. package/dist/components/remote-pictures.d.ts +6 -0
  69. package/dist/components/remote-pictures.d.ts.map +1 -0
  70. package/dist/components/remote-pictures.js +8 -0
  71. package/dist/components/remote-pictures.js.map +1 -0
  72. package/dist/components/roadmap.js +1 -1
  73. package/dist/components/roadmap.js.map +1 -1
  74. package/dist/components/runs.d.ts.map +1 -1
  75. package/dist/components/runs.js +1 -1
  76. package/dist/components/runs.js.map +1 -1
  77. package/dist/components/shell.d.ts.map +1 -1
  78. package/dist/components/shell.js +36 -1
  79. package/dist/components/shell.js.map +1 -1
  80. package/dist/components/sign-in.d.ts.map +1 -1
  81. package/dist/components/sign-in.js +49 -2
  82. package/dist/components/sign-in.js.map +1 -1
  83. package/dist/components/task-list.js +1 -1
  84. package/dist/components/task-list.js.map +1 -1
  85. package/dist/components/task-view.d.ts.map +1 -1
  86. package/dist/components/task-view.js +2 -2
  87. package/dist/components/task-view.js.map +1 -1
  88. package/dist/components/ui.d.ts +13 -2
  89. package/dist/components/ui.d.ts.map +1 -1
  90. package/dist/components/ui.js +21 -14
  91. package/dist/components/ui.js.map +1 -1
  92. package/dist/console.css +1686 -425
  93. package/dist/console.d.ts.map +1 -1
  94. package/dist/console.js +83 -13
  95. package/dist/console.js.map +1 -1
  96. package/dist/data.d.ts +15 -2
  97. package/dist/data.d.ts.map +1 -1
  98. package/dist/data.js +18 -19
  99. package/dist/data.js.map +1 -1
  100. package/dist/i18n/en.d.ts +48 -1
  101. package/dist/i18n/en.d.ts.map +1 -1
  102. package/dist/i18n/en.js +50 -3
  103. package/dist/i18n/en.js.map +1 -1
  104. package/dist/i18n/ko.d.ts.map +1 -1
  105. package/dist/i18n/ko.js +47 -4
  106. package/dist/i18n/ko.js.map +1 -1
  107. package/dist/index.d.ts +3 -2
  108. package/dist/index.d.ts.map +1 -1
  109. package/dist/index.js +3 -2
  110. package/dist/index.js.map +1 -1
  111. package/dist/limits.d.ts +14 -0
  112. package/dist/limits.d.ts.map +1 -1
  113. package/dist/limits.js +14 -0
  114. package/dist/limits.js.map +1 -1
  115. package/dist/router.d.ts +9 -1
  116. package/dist/router.d.ts.map +1 -1
  117. package/dist/router.js +12 -0
  118. package/dist/router.js.map +1 -1
  119. package/dist/routes.d.ts +5 -1
  120. package/dist/routes.d.ts.map +1 -1
  121. package/dist/routes.js +5 -1
  122. package/dist/routes.js.map +1 -1
  123. package/dist/rules.js +1 -1
  124. package/dist/rules.js.map +1 -1
  125. package/dist/schemas.d.ts +272 -4
  126. package/dist/schemas.d.ts.map +1 -1
  127. package/dist/schemas.js +33 -8
  128. package/dist/schemas.js.map +1 -1
  129. package/dist/web.d.ts.map +1 -1
  130. package/dist/web.js +3 -2
  131. package/dist/web.js.map +1 -1
  132. package/docs/specs/cli.md +11 -10
  133. package/docs/specs/rest.md +33 -17
  134. package/package.json +2 -2
  135. package/skills/building-a-console/SKILL.md +5 -5
  136. package/skills/building-a-console/references/the-default-console.md +4 -4
  137. package/skills/building-a-console/references/the-look-from-a-website.md +5 -5
  138. package/skills/working-the-board/SKILL.md +6 -4
  139. package/skills/working-the-board/references/setting-up.md +1 -1
  140. package/skills/working-the-board/references/terms.md +1 -1
  141. package/src/api.ts +10 -0
  142. package/src/cli/cli.ts +162 -19
  143. package/src/cli/format.ts +11 -4
  144. package/src/cli/help.ts +79 -20
  145. package/src/cli/pack.ts +17 -1
  146. package/src/client.ts +51 -2
  147. package/src/compat.ts +2 -2
  148. package/src/components/board.tsx +114 -21
  149. package/src/components/calendar.tsx +207 -102
  150. package/src/components/decision-form.tsx +71 -23
  151. package/src/components/decision-list.tsx +30 -3
  152. package/src/components/documents.tsx +27 -11
  153. package/src/components/event-feed.tsx +116 -33
  154. package/src/components/markdown.tsx +6 -3
  155. package/src/components/my-decisions.tsx +138 -0
  156. package/src/components/pack-connect.tsx +10 -7
  157. package/src/components/pack-token.tsx +4 -1
  158. package/src/components/people.tsx +20 -8
  159. package/src/components/projects.tsx +7 -5
  160. package/src/components/remote-pictures.ts +19 -0
  161. package/src/components/roadmap.tsx +1 -1
  162. package/src/components/runs.tsx +5 -1
  163. package/src/components/shell.tsx +36 -1
  164. package/src/components/sign-in.tsx +114 -13
  165. package/src/components/task-list.tsx +1 -1
  166. package/src/components/task-view.tsx +48 -47
  167. package/src/components/ui.tsx +70 -14
  168. package/src/console.tsx +153 -32
  169. package/src/data.ts +37 -20
  170. package/src/i18n/en.ts +53 -3
  171. package/src/i18n/ko.ts +50 -4
  172. package/src/index.ts +3 -0
  173. package/src/limits.ts +14 -0
  174. package/src/router.ts +18 -1
  175. package/src/routes.ts +5 -1
  176. package/src/rules.ts +1 -1
  177. package/src/schemas.ts +37 -8
  178. package/src/styles/console.css +1686 -425
  179. package/src/web.ts +3 -2
package/dist/console.css CHANGED
@@ -3,98 +3,77 @@
3
3
  * per building block, all prefixed `sc-` so that a custom console's own styles never collide
4
4
  * with them. Re-skinning starts and mostly ends with the tokens.
5
5
  *
6
- * The look is SkillCDN's own: dark only, one blue accent and one warm point colour, the page a
7
- * dark field with a soft light high in it, and the surfaces panes of glass over that field, so
8
- * that the console reads as part of the same product as the site it is built for.
6
+ * The look is SkillCDN's own, on a light ground: one blue accent and one warm point colour, the
7
+ * page a pale field, and the surfaces panes of frosted glass over it, so that the console reads as
8
+ * part of the same product as the site it is built for (ADR-0040).
9
9
  */
10
10
 
11
11
  :root {
12
- color-scheme: dark;
12
+ color-scheme: light;
13
13
 
14
- /* Surfaces: the page's own dark, and the steps above it. */
15
- --sc-color-bg: #0b1019;
16
- --sc-color-bg-subtle: #0f1520;
17
- --sc-color-bg-inset: #151d2b;
18
- --sc-color-bg-raised: #192232;
19
- --sc-color-border: #263042;
20
- --sc-color-border-strong: #3b4960;
14
+ /* Surfaces: the page's own pale ground, the step into it, and white above it. */
15
+ --sc-color-bg: #f7f8fc;
16
+ --sc-color-bg-inset: #edf0f6;
17
+ --sc-color-bg-raised: #ffffff;
18
+ --sc-color-border: #e4e8ef;
19
+ --sc-color-border-strong: #7d899e;
21
20
 
22
- /* Text. */
23
- --sc-color-text: #e8ebf0;
24
- --sc-color-text-muted: #9aa4b2;
25
- --sc-color-text-faint: #8b97a9;
21
+ /* Text: the site's own ink on white. */
22
+ --sc-color-text: #14141a;
23
+ --sc-color-text-muted: #4b5563;
24
+ --sc-color-text-faint: #666c7c;
26
25
 
27
26
  /* The one accent: the blue that text and lines are drawn in, and the deeper blue a surface
28
- is filled with so that a white label reads on it. */
29
- --sc-color-accent: #6ea1ff;
30
- --sc-color-accent-hover: #8fb6ff;
27
+ is filled with so that a white label reads on it. Under the pointer each is mixed a little
28
+ towards black where it is drawn. */
29
+ --sc-color-accent: #2c5bc4;
31
30
  --sc-color-accent-solid: #3b6fd4;
32
- --sc-color-accent-solid-hover: #4171d8;
33
31
  --sc-color-accent-contrast: #ffffff;
34
- --sc-color-accent-subtle: #111a2b;
32
+ --sc-color-accent-subtle: #dbe6ff;
35
33
  /* The point: the only warm colour, for what should be looked at first, never for a control. */
36
- --sc-color-point: #ffb13a;
37
- --sc-color-point-subtle: #2a1a0e;
38
- --sc-color-selection: color-mix(in srgb, var(--sc-color-accent-solid) 60%, transparent);
34
+ --sc-color-point: #c2410c;
35
+ --sc-color-point-subtle: #fff1e6;
39
36
 
40
37
  /* Status. */
41
- --sc-color-success: #4cc38a;
42
- --sc-color-success-subtle: #0d1a13;
43
- --sc-color-warning: #e3b341;
44
- --sc-color-warning-subtle: #201a0c;
45
- --sc-color-danger: #ff7b85;
46
- --sc-color-danger-subtle: #230f12;
47
-
48
- /* The ground: a dark field with two lights in it, a far one low and wide and a near one high
49
- and soft, and the corners taken down, so the field has distance in it. The default UI
50
- provides the field's face (the shell); a custom console may paint its own. */
51
- --sc-color-sky: #0d1730;
52
- --sc-color-far: #2b4d9455;
53
- --sc-color-far-turn: #3c3f8e3d;
54
- --sc-color-vignette: #04071199;
55
- --sc-color-light-core: #dbe7ff;
56
- --sc-color-light-body: #93b4f2;
57
- --sc-color-light-mid: #7f7ae8b8;
58
- --sc-color-light-halo: #3a5fd488;
59
- --sc-light-strength: 0.3;
60
- --sc-light-top: -18rem;
61
- --sc-light-height: 34rem;
62
- --sc-light-inset: 8%;
63
- --sc-light-blur: 4rem;
64
-
65
- /* Glass: what a pane over the field is made of. A wide blur with the colour behind pushed, an
66
- even veil of the page's own dark, a thin lit edge, and a soft stand-off from the field. */
67
- --sc-glass-backdrop: blur(24px) saturate(1.8);
68
- --sc-color-glass: #111a2e66;
69
- --sc-color-glass-hover: #18243f73;
70
- --sc-color-glass-edge: #ffffff1c;
71
- --sc-glass-surface: linear-gradient(var(--sc-color-glass), var(--sc-color-glass)) padding-box;
72
- --sc-glass-surface-hover: linear-gradient(
73
- var(--sc-color-glass-hover),
74
- var(--sc-color-glass-hover)
75
- )
76
- padding-box;
77
- --sc-glass-sheen: inset 0 1px 0 #ffffff4d, inset 0 0 0 1px #ffffff10, inset 0 3px 6px #ffffff12;
78
- --sc-glass-lift: 0 0.75rem 2rem -0.75rem #00000059;
79
- --sc-glass-lens: blur(4px) brightness(1.4) saturate(1.5) hue-rotate(-6deg);
80
- --sc-glass-lens-width: 2px;
81
- --sc-glass-lens-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
82
- /* A surface inside a pane: no blur of its own, a little of the page's dark let through. */
83
- --sc-color-sheet: color-mix(in srgb, var(--sc-color-bg) 72%, transparent);
84
- --sc-color-sheet-hover: color-mix(in srgb, var(--sc-color-bg-raised) 80%, transparent);
85
- --sc-color-field: color-mix(in srgb, var(--sc-color-bg) 78%, transparent);
86
-
87
- /* Light falls from above: a lit thing spills downward, in the accent's own colour, in layers
88
- that fall off the way brightness does. */
38
+ --sc-color-success: #146b44;
39
+ --sc-color-success-subtle: #d4efe1;
40
+ --sc-color-warning: #8f6100;
41
+ --sc-color-warning-subtle: #fff4cc;
42
+ --sc-color-danger: #b0273a;
43
+ --sc-color-danger-subtle: #fadadf;
44
+
45
+ /* The ground: a pale field, one gradient from the top. The default UI provides the field's
46
+ face (the shell); a custom console may paint its own. */
47
+ --sc-field-gradient: linear-gradient(160deg, #e3e9f7 0%, #eef1f9 42%, #f9fafd 100%);
48
+
49
+ /* Glass: what a pane over the field is made of. A wide blur with the colour behind pushed, a
50
+ white veil, a bright edge, and a soft stand-off from the field. */
51
+ --sc-glass-backdrop: blur(20px) saturate(1.6);
52
+ --sc-color-glass: #ffffff99;
53
+ --sc-color-glass-hover: #ffffffbf;
54
+ /* The rim: a hair of white along a pane's edge, its border. */
55
+ --sc-color-glass-edge: #ffffff;
56
+ /* The light that falls down a pane's face, from its top edge. */
57
+ --sc-glass-highlight: #ffffffb3;
58
+ --sc-glass-surface:
59
+ linear-gradient(170deg, var(--sc-glass-highlight), transparent 38%) padding-box,
60
+ linear-gradient(var(--sc-color-glass), var(--sc-color-glass)) padding-box;
61
+ --sc-glass-surface-hover:
62
+ linear-gradient(170deg, var(--sc-glass-highlight), transparent 38%) padding-box,
63
+ linear-gradient(var(--sc-color-glass-hover), var(--sc-color-glass-hover)) padding-box;
64
+ --sc-glass-sheen: inset 0 1px 0 #ffffff;
65
+ --sc-glass-lift: 0 0.5rem 1.5rem #1f268714, 0 1px 2px #1f26870f;
66
+ /* A surface inside a pane: no blur of its own, white with a little of the pane let through. */
67
+ --sc-color-sheet: color-mix(in srgb, var(--sc-color-bg-raised) 82%, transparent);
68
+ --sc-color-sheet-hover: color-mix(in srgb, var(--sc-color-bg-raised) 96%, transparent);
69
+
70
+ /* A lit thing casts the accent's own colour downward, in layers that fall off the way
71
+ brightness does. */
89
72
  --sc-glow:
90
- 0 0.125rem 0.5rem -0.25rem color-mix(in srgb, var(--sc-color-accent-hover) 38%, transparent),
91
- 0 0.5rem 1.25rem -0.5rem color-mix(in srgb, var(--sc-color-accent) 22%, transparent),
92
- 0 1.25rem 3rem -1rem color-mix(in srgb, var(--sc-color-accent) 11%, transparent);
93
- --sc-glow-bright:
94
- 0 0.125rem 0.5rem -0.25rem color-mix(in srgb, var(--sc-color-accent-hover) 70%, transparent),
95
- 0 0.5rem 1.25rem -0.5rem color-mix(in srgb, var(--sc-color-accent) 45%, transparent),
96
- 0 1.25rem 3rem -1rem color-mix(in srgb, var(--sc-color-accent) 24%, transparent);
97
- --sc-shadow-stage: 0 1.5rem 5rem #00000033;
73
+ 0 0.125rem 0.5rem -0.25rem color-mix(in srgb, var(--sc-color-accent-solid) 40%, transparent),
74
+ 0 0.5rem 1.25rem -0.5rem color-mix(in srgb, var(--sc-color-accent-solid) 22%, transparent),
75
+ 0 1.25rem 3rem -1rem color-mix(in srgb, var(--sc-color-accent-solid) 11%, transparent);
76
+ --sc-shadow-stage: 0 1.25rem 3.5rem #1a2b552e;
98
77
 
99
78
  /* Type. The Korean face comes first where the page provides it; the Latin stays with the
100
79
  system's faces. */
@@ -105,8 +84,8 @@
105
84
  ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", "D2Coding",
106
85
  monospace;
107
86
 
108
- --sc-text-xs: 0.75rem;
109
- --sc-text-sm: 0.875rem;
87
+ --sc-text-xs: 0.8125rem;
88
+ --sc-text-sm: 0.9375rem;
110
89
  --sc-text-md: 1rem;
111
90
  --sc-text-lg: 1.125rem;
112
91
  --sc-text-xl: 1.375rem;
@@ -114,6 +93,10 @@
114
93
  --sc-leading-tight: 1.2;
115
94
  --sc-leading-normal: 1.6;
116
95
  --sc-leading-code: 1.7;
96
+ --sc-leading-snug: 1.45;
97
+ --sc-tracking-tight: -0.02em;
98
+ --sc-tracking-wide: 0.04em;
99
+ --sc-tracking-code: 0.12em;
117
100
  --sc-weight-normal: 400;
118
101
  --sc-weight-medium: 500;
119
102
  --sc-weight-bold: 650;
@@ -139,20 +122,39 @@
139
122
  --sc-radius-xl: 20px;
140
123
  --sc-radius-full: 999px;
141
124
  --sc-border: 1px solid var(--sc-color-border);
125
+ --sc-hairline: 1px solid color-mix(in srgb, var(--sc-color-border) 70%, transparent);
126
+ --sc-border-strong: 1px solid var(--sc-color-border-strong);
142
127
 
143
128
  /* Layout. */
144
- --sc-width-page: 84rem;
129
+ --sc-gutter: var(--sc-space-7);
145
130
  --sc-width-prose: 46rem;
146
131
  --sc-width-aside: 18rem;
147
132
  --sc-column-width: 13.5rem;
148
133
  --sc-header-height: 3.75rem;
149
- --sc-brand-size: 1rem;
150
- --sc-brand-size-compact: 0.875rem;
134
+ /* The lockup: the symbol's size, and the wordmark's height and the room between them as
135
+ fractions of it, the fractions those of the brand's lockup file (the wordmark 73.77 tall
136
+ on a symbol of 100, 31.98 between them). */
137
+ --sc-brand-size: 1.375rem;
138
+ --sc-brand-size-compact: 1.25rem;
139
+ --sc-brand-wordmark-ratio: 0.7377;
140
+ --sc-brand-gap-ratio: 0.3198;
151
141
  --sc-control-size: 2.5rem;
152
142
  --sc-focus-ring: 2px solid var(--sc-color-accent);
143
+ /* A scrollbar's thumb: a light grey, there when it is needed and quiet otherwise. */
144
+ --sc-scrollbar-thumb: color-mix(in srgb, var(--sc-color-border-strong) 45%, transparent);
145
+ /* A select's chevron: a thin stroke in a grey that reads on a light field and a dark one. */
146
+ --sc-select-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%235a6371' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
153
147
  --sc-transition: 120ms ease-out;
154
148
  }
155
149
 
150
+ /* A page in Korean (the pages say their language on <html>): Hangul fills more of its box than
151
+ Latin capitals and sits higher in it, so a label is lifted less, and the tracking is off. */
152
+ :root:lang(ko) {
153
+ --sc-label-lift: -0.083em;
154
+ --sc-tracking-tight: 0;
155
+ --sc-tracking-wide: 0;
156
+ }
157
+
156
158
  /* Reset: only what the pages need. */
157
159
 
158
160
  *,
@@ -164,6 +166,10 @@
164
166
  html {
165
167
  -webkit-text-size-adjust: 100%;
166
168
  text-size-adjust: 100%;
169
+ /* The room for a scrollbar is kept on every page, so that a page that scrolls and one that does
170
+ not put the header and the page at the same place. */
171
+ scrollbar-gutter: stable;
172
+ scrollbar-color: var(--sc-scrollbar-thumb) transparent;
167
173
  scroll-padding-top: calc(var(--sc-header-height) + var(--sc-space-6));
168
174
  }
169
175
 
@@ -205,7 +211,7 @@ h3,
205
211
  h4 {
206
212
  line-height: var(--sc-leading-tight);
207
213
  font-weight: var(--sc-weight-bold);
208
- letter-spacing: -0.01em;
214
+ letter-spacing: var(--sc-tracking-tight);
209
215
  text-wrap: balance;
210
216
  }
211
217
 
@@ -222,7 +228,7 @@ a {
222
228
  }
223
229
 
224
230
  a:hover {
225
- color: var(--sc-color-accent-hover);
231
+ color: color-mix(in srgb, var(--sc-color-accent) 85%, #000);
226
232
  }
227
233
 
228
234
  code,
@@ -262,7 +268,7 @@ table {
262
268
  }
263
269
 
264
270
  ::selection {
265
- background: var(--sc-color-selection);
271
+ background: color-mix(in srgb, var(--sc-color-accent-solid) 25%, transparent);
266
272
  color: var(--sc-color-accent-contrast);
267
273
  }
268
274
 
@@ -319,53 +325,12 @@ table {
319
325
  flex-direction: column;
320
326
  min-height: 100dvh;
321
327
  overflow-x: clip;
322
- background-color: var(--sc-color-sky);
323
- /* The far light: low, wide and vague, which is what distance does to a light. */
324
- background-image: radial-gradient(
325
- ellipse 120% 64% at 50% 92%,
326
- var(--sc-color-far),
327
- var(--sc-color-far-turn) 48%,
328
- transparent 72%
329
- );
328
+ background-color: var(--sc-color-bg);
329
+ /* Fixed to the window, so that the page travels over the field and the field stays. */
330
+ background-image: var(--sc-field-gradient);
330
331
  background-attachment: fixed;
331
332
  }
332
333
 
333
- /* The near light, high behind the header: an ellipse that is blurred rather than a gradient,
334
- because a blur falls off the way light does. Fixed to the window, so that the page travels
335
- through the light and the light stays where it is. */
336
- .sc-shell::before {
337
- content: "";
338
- position: fixed;
339
- z-index: -1;
340
- top: var(--sc-light-top);
341
- left: var(--sc-light-inset);
342
- right: var(--sc-light-inset);
343
- height: var(--sc-light-height);
344
- background: radial-gradient(
345
- ellipse closest-side,
346
- var(--sc-color-light-core) 0%,
347
- var(--sc-color-light-body) 14%,
348
- var(--sc-color-light-mid) 42%,
349
- var(--sc-color-light-halo) 70%,
350
- transparent 100%
351
- );
352
- filter: blur(var(--sc-light-blur));
353
- opacity: var(--sc-light-strength);
354
- pointer-events: none;
355
- }
356
-
357
- /* The air over both lights: the corners and the foot of the window taken down. */
358
- .sc-shell::after {
359
- content: "";
360
- position: fixed;
361
- z-index: -1;
362
- inset: 0;
363
- background-image:
364
- linear-gradient(to bottom, transparent 60%, var(--sc-color-vignette)),
365
- radial-gradient(ellipse 130% 110% at 50% 30%, transparent 36%, var(--sc-color-vignette) 100%);
366
- pointer-events: none;
367
- }
368
-
369
334
  .sc-skip {
370
335
  position: absolute;
371
336
  top: var(--sc-space-2);
@@ -388,8 +353,8 @@ table {
388
353
  top: 0;
389
354
  z-index: 10;
390
355
  border-bottom: var(--sc-border);
391
- background: color-mix(in srgb, var(--sc-color-bg) 82%, transparent);
392
- backdrop-filter: blur(12px) saturate(1.4);
356
+ background: color-mix(in srgb, var(--sc-color-bg) 70%, transparent);
357
+ backdrop-filter: var(--sc-glass-backdrop);
393
358
  }
394
359
 
395
360
  .sc-header-inner {
@@ -397,22 +362,21 @@ table {
397
362
  align-items: center;
398
363
  gap: var(--sc-space-4);
399
364
  width: 100%;
400
- max-width: var(--sc-width-page);
401
365
  height: var(--sc-header-height);
402
- margin-inline: auto;
403
- padding-inline: var(--sc-space-5);
366
+ padding-inline: var(--sc-gutter);
404
367
  }
405
368
 
406
369
  /* The brand: the lockup of the symbol and the wordmark where the console has marks, the name
407
- of the workspace where it has none. The lockup stands as tall as the words beside it. */
370
+ of the workspace where it has none. The symbol, the wordmark and the room between them keep
371
+ the proportions of the brand's lockup file. */
408
372
  .sc-brand {
409
373
  display: inline-flex;
410
374
  flex: none;
411
375
  align-items: center;
412
- gap: var(--sc-space-2);
376
+ gap: calc(var(--sc-brand-size) * var(--sc-brand-gap-ratio));
413
377
  color: var(--sc-color-text);
414
378
  font-weight: var(--sc-weight-bold);
415
- letter-spacing: -0.01em;
379
+ letter-spacing: var(--sc-tracking-tight);
416
380
  text-decoration: none;
417
381
  white-space: nowrap;
418
382
  }
@@ -428,7 +392,7 @@ table {
428
392
 
429
393
  .sc-brand-wordmark {
430
394
  width: auto;
431
- height: var(--sc-brand-size);
395
+ height: calc(var(--sc-brand-size) * var(--sc-brand-wordmark-ratio));
432
396
  }
433
397
 
434
398
  .sc-brand-name {
@@ -473,10 +437,8 @@ table {
473
437
  the tabs scroll sideways where they do not fit, and nothing in the bar ever scrolls down. */
474
438
  .sc-tabs {
475
439
  width: 100%;
476
- max-width: var(--sc-width-page);
477
- margin-inline: auto;
478
440
  margin-bottom: -1px;
479
- padding-inline: var(--sc-space-5);
441
+ padding-inline: var(--sc-gutter);
480
442
  overflow: auto hidden;
481
443
  scrollbar-width: none;
482
444
  }
@@ -531,7 +493,7 @@ table {
531
493
  display: flex;
532
494
  flex: none;
533
495
  align-items: center;
534
- gap: var(--sc-space-3);
496
+ gap: 0;
535
497
  margin-left: auto;
536
498
  }
537
499
 
@@ -543,9 +505,9 @@ table {
543
505
  .sc-menu-summary {
544
506
  display: flex;
545
507
  align-items: center;
546
- gap: var(--sc-space-2);
508
+ gap: 0.375rem;
547
509
  min-height: var(--sc-control-size);
548
- padding-inline: var(--sc-space-2);
510
+ padding-inline: var(--sc-space-1) var(--sc-space-2);
549
511
  border-radius: var(--sc-radius-md);
550
512
  color: var(--sc-color-text-muted);
551
513
  list-style: none;
@@ -641,16 +603,32 @@ table {
641
603
  border-top: var(--sc-border);
642
604
  }
643
605
 
644
- .sc-menu-heading {
645
- display: block;
646
- padding: var(--sc-space-1) var(--sc-space-3);
606
+ /* The small capitals over a group: a menu's heading, a field's label, a fact's name, a day of the
607
+ feed, a table's head. `.sc-eyebrow` is the class for a label of your own. */
608
+ .sc-eyebrow,
609
+ .sc-menu-heading,
610
+ .sc-field-label,
611
+ .sc-facts dt,
612
+ .sc-feed-day-title,
613
+ .sc-report > .sc-time,
614
+ .sc-task-aside .sc-section-title,
615
+ .sc-decision-label,
616
+ .sc-calendar-grid th,
617
+ .sc-workload thead th,
618
+ .sc-goal-tasks-state,
619
+ .sc-facts-row dt {
647
620
  color: var(--sc-color-text-faint);
648
621
  font-size: var(--sc-text-xs);
649
622
  font-weight: var(--sc-weight-medium);
650
- letter-spacing: 0.04em;
623
+ letter-spacing: var(--sc-tracking-wide);
651
624
  text-transform: uppercase;
652
625
  }
653
626
 
627
+ .sc-menu-heading {
628
+ display: block;
629
+ padding: var(--sc-space-1) var(--sc-space-3);
630
+ }
631
+
654
632
  .sc-menu-chosen {
655
633
  color: var(--sc-color-accent);
656
634
  font-weight: var(--sc-weight-medium);
@@ -667,13 +645,12 @@ table {
667
645
  .sc-live {
668
646
  width: 0.5rem;
669
647
  height: 0.5rem;
670
- border-radius: 50%;
648
+ border-radius: var(--sc-radius-full);
671
649
  background: var(--sc-color-text-faint);
672
650
  }
673
651
 
674
652
  .sc-live-on {
675
653
  background: var(--sc-color-success);
676
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--sc-color-success) 25%, transparent);
677
654
  }
678
655
 
679
656
  /* The page. */
@@ -685,29 +662,32 @@ table {
685
662
  flex: 1;
686
663
  flex-direction: column;
687
664
  width: 100%;
688
- max-width: var(--sc-width-page);
689
- margin-inline: auto;
690
- padding: var(--sc-space-6) var(--sc-space-5) var(--sc-space-8);
665
+ padding: var(--sc-space-6) var(--sc-gutter) var(--sc-space-8);
691
666
  }
692
667
 
693
- /* A page as wide as the window: the board, whose columns want every bit of it. */
668
+ /* A page as wide as the window: the board, whose columns want every bit of it. It starts at the
669
+ same height as the other pages and, being as tall as the window, ends with the same room. */
694
670
  .sc-main-wide {
695
671
  max-width: none;
696
- padding: var(--sc-space-5) var(--sc-space-4) var(--sc-space-4);
672
+ padding: var(--sc-space-6) var(--sc-gutter);
697
673
  }
698
674
 
675
+ /* A page that takes the whole window takes the header with it, so that the lockup, the tabs and
676
+ the page start on one line, as they do on every other page. */
699
677
  .sc-page-head {
700
678
  display: flex;
701
679
  flex-wrap: wrap;
702
- align-items: center;
680
+ align-items: baseline;
703
681
  justify-content: space-between;
704
682
  gap: var(--sc-space-3);
705
- margin-bottom: var(--sc-space-4);
683
+ margin-bottom: var(--sc-space-5);
684
+ padding-bottom: var(--sc-space-4);
685
+ border-bottom: var(--sc-hairline);
706
686
  }
707
687
 
708
688
  .sc-page-title {
709
689
  font-size: var(--sc-text-2xl);
710
- letter-spacing: -0.02em;
690
+ letter-spacing: var(--sc-tracking-tight);
711
691
  }
712
692
 
713
693
  /* The ways a page offers at its head, side by side. */
@@ -755,6 +735,8 @@ table {
755
735
  /* On the wide page the head and the lead keep out of the board's way. */
756
736
  .sc-main-wide .sc-page-head {
757
737
  margin-bottom: var(--sc-space-3);
738
+ padding-bottom: 0;
739
+ border-bottom: 0;
758
740
  }
759
741
 
760
742
  .sc-main-wide .sc-lead {
@@ -770,6 +752,15 @@ table {
770
752
  font-size: var(--sc-text-lg);
771
753
  }
772
754
 
755
+ /* After the name of a section a line runs to the end: the section starts here. */
756
+ .sc-section-title::after {
757
+ content: "";
758
+ flex: 1;
759
+ height: 1px;
760
+ margin-inline-start: var(--sc-space-2);
761
+ background: var(--sc-color-border);
762
+ }
763
+
773
764
  /*
774
765
  * Panes: the surfaces of the page are glass over the field. A pane is a veil of the page's own
775
766
  * dark over a blur of what is behind it, with a thin lit edge; two panes differ only in what
@@ -787,37 +778,17 @@ table {
787
778
  .sc-facts {
788
779
  position: relative;
789
780
  isolation: isolate;
790
- border: 1px solid transparent;
781
+ border: 1px solid var(--sc-color-glass-edge);
791
782
  background: var(--sc-glass-surface);
792
783
  backdrop-filter: var(--sc-glass-backdrop);
793
784
  box-shadow: var(--sc-glass-sheen), var(--sc-glass-lift);
794
785
  }
795
786
 
796
- .sc-panel::before,
797
- .sc-column::before,
798
- .sc-project::before,
799
- .sc-decision::before,
800
- .sc-run::before,
801
- .sc-comment::before,
802
- .sc-sign-in::before,
803
- .sc-facts::before {
804
- content: "";
805
- position: absolute;
806
- inset: 0;
807
- z-index: -1;
808
- padding: var(--sc-glass-lens-width);
809
- border-radius: inherit;
810
- background: var(--sc-color-glass-edge);
811
- backdrop-filter: var(--sc-glass-lens);
812
- mask: var(--sc-glass-lens-mask);
813
- mask-composite: exclude;
814
- pointer-events: none;
815
- }
816
-
817
- /* A column's frame stands in front of what scrolls within it: a card scrolling out goes under
818
- the lit edge, never over it. The other panes do not scroll, and keep the rim under the content. */
819
- .sc-column::before {
820
- z-index: 1;
787
+ /* A column of the board has no rim and no lift: its glass alone parts it from the field, so that
788
+ no line runs down its sides and the gaps between columns stay as light as the field. */
789
+ .sc-column {
790
+ border-color: transparent;
791
+ box-shadow: var(--sc-glass-sheen);
821
792
  }
822
793
 
823
794
  .sc-panel {
@@ -836,13 +807,13 @@ table {
836
807
  .sc-person-row,
837
808
  .sc-skill,
838
809
  .sc-doc-row,
839
- .sc-feed-item,
840
810
  .sc-card,
841
811
  .sc-option,
842
812
  .sc-answer,
843
813
  .sc-report-list {
844
814
  border: var(--sc-border);
845
815
  background: var(--sc-color-sheet);
816
+ box-shadow: 0 1px 2px #1f26870f;
846
817
  }
847
818
 
848
819
  .sc-loading {
@@ -894,18 +865,19 @@ table {
894
865
  }
895
866
 
896
867
  .sc-button-primary:hover:not(:disabled) {
897
- background: var(--sc-color-accent-solid-hover);
868
+ background: color-mix(in srgb, var(--sc-color-accent-solid) 90%, #000);
898
869
  color: var(--sc-color-accent-contrast);
899
- box-shadow: var(--sc-glow-bright);
870
+ box-shadow: var(--sc-glow);
900
871
  }
901
872
 
902
873
  .sc-button-secondary {
903
- background: var(--sc-color-field);
904
- border-color: var(--sc-color-border-strong);
874
+ background: var(--sc-color-bg-raised);
875
+ border-color: var(--sc-color-border);
905
876
  color: var(--sc-color-text);
906
877
  }
907
878
 
908
879
  .sc-button-secondary:hover:not(:disabled) {
880
+ border-color: var(--sc-color-border-strong);
909
881
  background: var(--sc-color-bg-raised);
910
882
  color: var(--sc-color-text);
911
883
  }
@@ -933,24 +905,45 @@ table {
933
905
 
934
906
  /* Badges: a pill on the grid, its label lifted to the middle of it. */
935
907
 
908
+ /* A badge is a small pill: a hair of room above and below its word, a little more at its sides,
909
+ so that a row of them on a card stays low. */
936
910
  .sc-badge {
937
911
  display: inline-flex;
938
912
  align-items: center;
939
913
  gap: var(--sc-space-1);
940
- padding-inline: var(--sc-space-2);
941
- padding-block: calc(var(--sc-space-1) - var(--sc-label-lift))
942
- calc(var(--sc-space-1) + var(--sc-label-lift));
943
- border: 1px solid var(--sc-color-border);
914
+ padding-inline: calc(var(--sc-space-1) * 1.5);
915
+ padding-block: calc(var(--sc-space-1) / 2 - var(--sc-label-lift))
916
+ calc(var(--sc-space-1) / 2 + var(--sc-label-lift));
917
+ border: var(--sc-border);
944
918
  border-radius: var(--sc-radius-full);
945
919
  font-size: var(--sc-text-xs);
946
920
  font-weight: var(--sc-weight-medium);
947
- line-height: 1.25;
921
+ line-height: var(--sc-leading-snug);
948
922
  white-space: nowrap;
949
923
  }
950
924
 
925
+ /* Where the browser can fit a line box to the glyphs, a badge's words are centred on their
926
+ cap height and baseline, whatever script they are in; the lift above is for where it cannot. */
927
+ @supports (text-box: trim-both cap alphabetic) {
928
+ .sc-badge {
929
+ padding-block: var(--sc-space-1) calc(var(--sc-space-1) - 1px);
930
+ line-height: 1;
931
+ text-box: trim-both cap alphabetic;
932
+ }
933
+ }
934
+
935
+ /*
936
+ * The tones of a badge, each a meaning: neutral for what merely is; accent (blue) for what is at
937
+ * work; success (green) for what is done; warning (amber) for what wants attention soon; point
938
+ * (orange) for what presses now, or is someone's; danger (red) for what is late or has failed.
939
+ * Each is a soft fill with its words in the same hue and no line around it, the categories
940
+ * alike, so that every badge on a page is one kind of pill; the fills are deep enough to stand
941
+ * off the sheet on their own.
942
+ */
951
943
  .sc-badge-neutral {
952
- background: var(--sc-color-bg-subtle);
953
- color: var(--sc-color-text-muted);
944
+ border-color: transparent;
945
+ background: #dfe3eb;
946
+ color: #3f4756;
954
947
  }
955
948
 
956
949
  .sc-badge-accent {
@@ -972,11 +965,11 @@ table {
972
965
  color: var(--sc-color-success);
973
966
  }
974
967
 
975
- /* A state and not a fill: the warm colour is on the words and the line stays a line. */
968
+ /* Words on a yellow fill are a warm charcoal: a dark yellow reads as a muddy brown. */
976
969
  .sc-badge-warning {
977
- background: var(--sc-color-bg-subtle);
978
- border-color: var(--sc-color-border-strong);
979
- color: var(--sc-color-warning);
970
+ background: var(--sc-color-warning-subtle);
971
+ border-color: transparent;
972
+ color: #44403c;
980
973
  }
981
974
 
982
975
  .sc-badge-danger {
@@ -992,7 +985,7 @@ table {
992
985
  aspect-ratio: 1;
993
986
  object-fit: cover;
994
987
  border: var(--sc-border);
995
- border-radius: 22%;
988
+ border-radius: var(--sc-radius-full);
996
989
  background: var(--sc-color-bg-inset);
997
990
  }
998
991
 
@@ -1037,6 +1030,12 @@ table {
1037
1030
  font-weight: var(--sc-weight-medium);
1038
1031
  }
1039
1032
 
1033
+ /* The picture in the menu's label sits in the control with a little room around it. */
1034
+ .sc-menu-summary .sc-avatar {
1035
+ width: 1.75rem;
1036
+ height: 1.75rem;
1037
+ }
1038
+
1040
1039
  /* In the menu's label a long name gives way before the header runs out of room. */
1041
1040
  .sc-menu-summary .sc-person-login {
1042
1041
  max-width: 11rem;
@@ -1053,7 +1052,7 @@ table {
1053
1052
  gap: var(--sc-space-4);
1054
1053
  margin-bottom: var(--sc-space-4);
1055
1054
  padding: var(--sc-space-4);
1056
- border: 1px solid var(--sc-color-border-strong);
1055
+ border: var(--sc-border);
1057
1056
  border-radius: var(--sc-radius-md);
1058
1057
  background: var(--sc-color-sheet);
1059
1058
  font-size: var(--sc-text-sm);
@@ -1087,7 +1086,7 @@ table {
1087
1086
 
1088
1087
  .sc-empty {
1089
1088
  padding: var(--sc-space-7) var(--sc-space-5);
1090
- border: 1px dashed var(--sc-color-border-strong);
1089
+ border: 1px dashed var(--sc-color-border);
1091
1090
  border-radius: var(--sc-radius-lg);
1092
1091
  text-align: center;
1093
1092
  }
@@ -1116,7 +1115,7 @@ table {
1116
1115
  height: 1.25rem;
1117
1116
  border: 2px solid var(--sc-color-border-strong);
1118
1117
  border-top-color: var(--sc-color-accent);
1119
- border-radius: 50%;
1118
+ border-radius: var(--sc-radius-full);
1120
1119
  }
1121
1120
 
1122
1121
  /* The ring turns whatever the motion preference: it says that the page still waits, and a ring
@@ -1167,10 +1166,6 @@ table {
1167
1166
 
1168
1167
  .sc-field-label {
1169
1168
  color: var(--sc-color-text-muted);
1170
- font-size: var(--sc-text-xs);
1171
- font-weight: var(--sc-weight-medium);
1172
- letter-spacing: 0.04em;
1173
- text-transform: uppercase;
1174
1169
  }
1175
1170
 
1176
1171
  .sc-field-row {
@@ -1184,9 +1179,9 @@ table {
1184
1179
  width: 100%;
1185
1180
  min-height: var(--sc-control-size);
1186
1181
  padding: var(--sc-space-2) var(--sc-space-3);
1187
- border: 1px solid var(--sc-color-border-strong);
1182
+ border: var(--sc-border-strong);
1188
1183
  border-radius: var(--sc-radius-md);
1189
- background: var(--sc-color-field);
1184
+ background: var(--sc-color-bg-raised);
1190
1185
  color: var(--sc-color-text);
1191
1186
  font-size: var(--sc-text-sm);
1192
1187
  transition:
@@ -1198,6 +1193,38 @@ table {
1198
1193
  color: var(--sc-color-text-faint);
1199
1194
  }
1200
1195
 
1196
+ /* A file field: as tall as any other field, what it holds on one line with its button, and
1197
+ the button the browser gives it drawn as a small button of the console's own. */
1198
+ .sc-input[type="file"] {
1199
+ display: flex;
1200
+ align-items: center;
1201
+ padding-block: 0;
1202
+ color: var(--sc-color-text-muted);
1203
+ line-height: var(--sc-leading-snug);
1204
+ cursor: pointer;
1205
+ }
1206
+
1207
+ .sc-input[type="file"]::file-selector-button {
1208
+ margin-inline-end: var(--sc-space-3);
1209
+ padding: calc(var(--sc-space-1) + 1px) var(--sc-space-3);
1210
+ border: var(--sc-border);
1211
+ border-radius: var(--sc-radius-sm);
1212
+ background: var(--sc-color-sheet);
1213
+ color: var(--sc-color-text);
1214
+ font: inherit;
1215
+ font-size: var(--sc-text-xs);
1216
+ font-weight: var(--sc-weight-medium);
1217
+ cursor: pointer;
1218
+ transition:
1219
+ background var(--sc-transition),
1220
+ border-color var(--sc-transition);
1221
+ }
1222
+
1223
+ .sc-input[type="file"]:hover::file-selector-button {
1224
+ border-color: var(--sc-color-border-strong);
1225
+ background: var(--sc-color-sheet-hover);
1226
+ }
1227
+
1201
1228
  .sc-input:hover:not(:disabled) {
1202
1229
  border-color: color-mix(in srgb, var(--sc-color-border-strong) 60%, var(--sc-color-accent));
1203
1230
  }
@@ -1209,10 +1236,22 @@ table {
1209
1236
  }
1210
1237
 
1211
1238
  .sc-input:disabled {
1212
- opacity: 0.6;
1239
+ opacity: 0.55;
1213
1240
  cursor: not-allowed;
1214
1241
  }
1215
1242
 
1243
+ /* A select draws the browser's chevron itself, a thin stroke, as far from the edge as the words
1244
+ are from the other one: the browser's own arrow sits on the border and takes no padding. The
1245
+ chevron is a picture held in a token, so that a console of its own may draw its own. */
1246
+ select.sc-input {
1247
+ appearance: none;
1248
+ padding-right: calc(var(--sc-space-3) * 2 + 0.625rem);
1249
+ background-image: var(--sc-select-chevron);
1250
+ background-position: right var(--sc-space-3) center;
1251
+ background-size: 0.625rem 0.375rem;
1252
+ background-repeat: no-repeat;
1253
+ }
1254
+
1216
1255
  /* What people write is prose first, so the box they write in is set in the page's own face. */
1217
1256
  .sc-textarea {
1218
1257
  min-height: 6rem;
@@ -1302,9 +1341,9 @@ table {
1302
1341
  gap: var(--sc-space-2);
1303
1342
  min-height: var(--sc-control-size);
1304
1343
  padding: var(--sc-space-1) var(--sc-space-1) var(--sc-space-1) var(--sc-space-3);
1305
- border: 1px solid var(--sc-color-border-strong);
1344
+ border: var(--sc-border);
1306
1345
  border-radius: var(--sc-radius-md);
1307
- background: var(--sc-color-field);
1346
+ background: var(--sc-color-bg-raised);
1308
1347
  font-size: var(--sc-text-sm);
1309
1348
  }
1310
1349
 
@@ -1398,22 +1437,22 @@ table {
1398
1437
  scroll sideways when it is not, and each column scrolls within itself. */
1399
1438
 
1400
1439
  .sc-board {
1401
- display: grid;
1440
+ display: flex;
1402
1441
  flex: 1 1 0;
1403
- grid-auto-flow: column;
1404
- grid-auto-columns: minmax(var(--sc-column-width), 1fr);
1405
- grid-template-rows: minmax(0, 1fr);
1442
+ align-items: stretch;
1406
1443
  gap: var(--sc-space-3);
1407
1444
  min-height: 24rem;
1408
1445
  overflow-x: auto;
1409
1446
  scroll-snap-type: x proximity;
1410
1447
  scrollbar-width: thin;
1411
- scrollbar-color: var(--sc-color-border-strong) transparent;
1448
+ scrollbar-color: var(--sc-scrollbar-thumb) transparent;
1412
1449
  }
1413
1450
 
1414
1451
  .sc-column {
1415
1452
  display: flex;
1453
+ flex: 1 0 var(--sc-column-width);
1416
1454
  flex-direction: column;
1455
+ min-width: 0;
1417
1456
  min-height: 0;
1418
1457
  /* The body scrolls; the column clips, so that nothing of it reaches the board's own scrolling. */
1419
1458
  overflow: hidden;
@@ -1431,10 +1470,59 @@ table {
1431
1470
  }
1432
1471
 
1433
1472
  .sc-column-header h2 {
1434
- font-size: var(--sc-text-xs);
1473
+ font-size: var(--sc-text-sm);
1435
1474
  font-weight: var(--sc-weight-bold);
1436
- letter-spacing: 0.06em;
1437
- text-transform: uppercase;
1475
+ }
1476
+
1477
+ /* The name of a column stands first; its count and the way to fold it keep to the end. */
1478
+ .sc-column-header > .sc-column-title {
1479
+ margin-inline-end: auto;
1480
+ }
1481
+
1482
+ /* The way to fold a column of finished work, or to open it again. */
1483
+ .sc-column-toggle {
1484
+ display: inline-grid;
1485
+ flex: none;
1486
+ place-items: center;
1487
+ width: 1.5rem;
1488
+ height: 1.5rem;
1489
+ padding: 0;
1490
+ border: 0;
1491
+ border-radius: var(--sc-radius-sm);
1492
+ background: transparent;
1493
+ color: var(--sc-color-text-muted);
1494
+ transition:
1495
+ background var(--sc-transition),
1496
+ color var(--sc-transition);
1497
+ }
1498
+
1499
+ .sc-column-toggle:hover {
1500
+ background: var(--sc-color-bg-inset);
1501
+ color: var(--sc-color-text);
1502
+ }
1503
+
1504
+ .sc-column-toggle svg {
1505
+ width: 1rem;
1506
+ height: 1rem;
1507
+ }
1508
+
1509
+ /* A folded column is a strip: the way to open it on top, its name down its length, its count. */
1510
+ /* A folded column is its header alone, the height of a header and as wide as its name: the way
1511
+ to open it, the name and the count in a row, at the top of the board. */
1512
+ .sc-column-folded {
1513
+ flex: 0 0 auto;
1514
+ align-self: flex-start;
1515
+ width: auto;
1516
+ }
1517
+
1518
+ .sc-column-folded .sc-column-header {
1519
+ gap: var(--sc-space-2);
1520
+ padding: var(--sc-space-3) var(--sc-space-4) var(--sc-space-3) var(--sc-space-3);
1521
+ border-bottom: 0;
1522
+ }
1523
+
1524
+ .sc-column-folded .sc-column-toggle {
1525
+ order: -1;
1438
1526
  }
1439
1527
 
1440
1528
  .sc-column-count {
@@ -1444,7 +1532,7 @@ table {
1444
1532
  min-width: 1.5rem;
1445
1533
  padding-inline: var(--sc-space-2);
1446
1534
  border-radius: var(--sc-radius-full);
1447
- background: var(--sc-color-bg-inset);
1535
+ background: color-mix(in srgb, var(--sc-color-text-muted) 12%, transparent);
1448
1536
  color: var(--sc-color-text-muted);
1449
1537
  font-size: var(--sc-text-xs);
1450
1538
  font-weight: var(--sc-weight-medium);
@@ -1464,22 +1552,38 @@ table {
1464
1552
  color: var(--sc-color-text-faint);
1465
1553
  }
1466
1554
 
1555
+ .sc-column-folded .sc-column-header > .sc-column-title {
1556
+ margin-inline-end: 0;
1557
+ }
1558
+
1559
+ /* The cards of a column scroll within it; where more of them are below, the last one in view
1560
+ fades at the foot rather than being cut, the room below the cards keeping a whole one clear. */
1467
1561
  .sc-column-body {
1468
1562
  display: grid;
1469
1563
  flex: 1;
1470
1564
  align-content: start;
1471
1565
  gap: var(--sc-space-2);
1472
1566
  min-height: 0;
1473
- padding: var(--sc-space-2);
1567
+ padding: var(--sc-space-2) var(--sc-space-2) var(--sc-space-6);
1474
1568
  overflow-y: auto;
1569
+ mask-image: linear-gradient(to bottom, #000 calc(100% - var(--sc-space-6)), transparent);
1475
1570
  scrollbar-width: thin;
1476
- scrollbar-color: var(--sc-color-border-strong) transparent;
1571
+ scrollbar-color: transparent transparent;
1477
1572
  }
1478
1573
 
1574
+ /* The scrollbar of a column shows only while the pointer is over the column; the fade at the foot
1575
+ says there is more. */
1576
+ .sc-column:hover .sc-column-body,
1577
+ .sc-column-body:focus-within {
1578
+ scrollbar-color: var(--sc-scrollbar-thumb) transparent;
1579
+ }
1580
+
1581
+ /* A card is compact, since a column holds many: the number, the title and one row of badges, with
1582
+ the people at its end, and no line between them; what is due reads from the badges as before. */
1479
1583
  .sc-card {
1480
1584
  display: grid;
1481
1585
  gap: var(--sc-space-1);
1482
- padding: var(--sc-space-3);
1586
+ padding: var(--sc-space-2) var(--sc-space-3);
1483
1587
  border-radius: var(--sc-radius-lg);
1484
1588
  transition:
1485
1589
  border-color var(--sc-transition),
@@ -1498,7 +1602,7 @@ table {
1498
1602
  color: var(--sc-color-text);
1499
1603
  font-size: var(--sc-text-sm);
1500
1604
  font-weight: var(--sc-weight-medium);
1501
- line-height: 1.4;
1605
+ line-height: var(--sc-leading-snug);
1502
1606
  text-decoration: none;
1503
1607
  overflow-wrap: anywhere;
1504
1608
  }
@@ -1510,10 +1614,17 @@ table {
1510
1614
  .sc-card-number {
1511
1615
  color: var(--sc-color-text-faint);
1512
1616
  font-family: var(--sc-font-mono);
1513
- font-size: 0.9em;
1617
+ font-size: var(--sc-text-xs);
1514
1618
  font-weight: var(--sc-weight-normal);
1515
1619
  }
1516
1620
 
1621
+ /* On a card the number stands on a line of its own above the title, rather than in its run. */
1622
+ .sc-card-title .sc-card-number {
1623
+ display: block;
1624
+ margin-bottom: var(--sc-space-1);
1625
+ line-height: 1;
1626
+ }
1627
+
1517
1628
  .sc-card-meta {
1518
1629
  display: flex;
1519
1630
  flex-wrap: wrap;
@@ -1530,6 +1641,12 @@ table {
1530
1641
  flex: 1;
1531
1642
  }
1532
1643
 
1644
+ /* The people at work stay at the end of the row, also when the badges push them onto a line of
1645
+ their own. */
1646
+ .sc-card-meta .sc-workers {
1647
+ margin-inline-start: auto;
1648
+ }
1649
+
1533
1650
  /* One task, and a page of the documents: the text in a column for reading, the facts beside it
1534
1651
  where the window is wide enough, under it where it is not. */
1535
1652
 
@@ -1576,8 +1693,20 @@ table {
1576
1693
  }
1577
1694
 
1578
1695
  .sc-task-header {
1696
+ display: flex;
1697
+ flex-wrap: wrap;
1698
+ align-items: flex-start;
1699
+ justify-content: space-between;
1700
+ gap: var(--sc-space-3) var(--sc-space-5);
1701
+ padding-bottom: var(--sc-space-4);
1702
+ border-bottom: var(--sc-hairline);
1703
+ }
1704
+
1705
+ .sc-task-heading {
1579
1706
  display: grid;
1707
+ flex: 1 1 28rem;
1580
1708
  gap: var(--sc-space-2);
1709
+ min-width: 0;
1581
1710
  }
1582
1711
 
1583
1712
  .sc-task-parent {
@@ -1587,12 +1716,12 @@ table {
1587
1716
 
1588
1717
  .sc-task-title {
1589
1718
  font-size: var(--sc-text-2xl);
1590
- letter-spacing: -0.02em;
1719
+ letter-spacing: var(--sc-tracking-tight);
1591
1720
  overflow-wrap: anywhere;
1592
1721
  }
1593
1722
 
1594
1723
  .sc-task-title .sc-card-number {
1595
- font-size: 0.8em;
1724
+ font-size: var(--sc-text-xl);
1596
1725
  }
1597
1726
 
1598
1727
  .sc-task-badges {
@@ -1611,14 +1740,6 @@ table {
1611
1740
  font-size: var(--sc-text-sm);
1612
1741
  }
1613
1742
 
1614
- .sc-facts dt {
1615
- color: var(--sc-color-text-faint);
1616
- font-size: var(--sc-text-xs);
1617
- font-weight: var(--sc-weight-medium);
1618
- letter-spacing: 0.04em;
1619
- text-transform: uppercase;
1620
- }
1621
-
1622
1743
  .sc-facts dd {
1623
1744
  margin-top: var(--sc-space-1);
1624
1745
  }
@@ -1630,18 +1751,47 @@ table {
1630
1751
  gap: var(--sc-space-2);
1631
1752
  }
1632
1753
 
1754
+ .sc-task-header > .sc-task-actions {
1755
+ flex: none;
1756
+ }
1757
+
1633
1758
  .sc-task-section {
1634
1759
  display: grid;
1635
1760
  gap: var(--sc-space-3);
1636
1761
  }
1637
1762
 
1638
- .sc-link-list li + li,
1639
- .sc-subtasks li + li {
1640
- margin-top: var(--sc-space-2);
1763
+ .sc-link-list,
1764
+ .sc-subtasks {
1765
+ display: grid;
1766
+ gap: var(--sc-space-2);
1767
+ margin: 0;
1768
+ padding: 0;
1769
+ list-style: none;
1770
+ }
1771
+
1772
+ .sc-link-list > li,
1773
+ .sc-subtasks > li {
1774
+ display: flex;
1775
+ flex-wrap: wrap;
1776
+ align-items: center;
1777
+ gap: var(--sc-space-2) var(--sc-space-3);
1778
+ padding: var(--sc-space-3) var(--sc-space-4);
1779
+ border: var(--sc-border);
1780
+ border-radius: var(--sc-radius-md);
1781
+ background: var(--sc-color-sheet);
1782
+ font-size: var(--sc-text-sm);
1783
+ overflow-wrap: anywhere;
1784
+ }
1785
+
1786
+ .sc-subtasks .sc-badge {
1787
+ margin-inline-start: auto;
1641
1788
  }
1642
1789
 
1643
1790
  .sc-subtasks a {
1791
+ flex: 1 1 14rem;
1792
+ min-width: 0;
1644
1793
  color: var(--sc-color-text);
1794
+ font-weight: var(--sc-weight-medium);
1645
1795
  text-decoration: none;
1646
1796
  }
1647
1797
 
@@ -1654,7 +1804,20 @@ table {
1654
1804
  .sc-decisions {
1655
1805
  display: grid;
1656
1806
  gap: var(--sc-space-6);
1657
- max-width: var(--sc-width-prose);
1807
+ align-items: start;
1808
+ }
1809
+
1810
+ @media (min-width: 64rem) {
1811
+ .sc-decisions {
1812
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1813
+ }
1814
+ }
1815
+
1816
+ /* A person's own decisions: the sections of what waits, stacked in the first column. */
1817
+ .sc-decisions-waiting {
1818
+ display: grid;
1819
+ gap: var(--sc-space-6);
1820
+ align-content: start;
1658
1821
  }
1659
1822
 
1660
1823
  .sc-decision {
@@ -1689,9 +1852,8 @@ table {
1689
1852
  width: 0.5rem;
1690
1853
  height: 0.5rem;
1691
1854
  margin-right: var(--sc-space-2);
1692
- border-radius: 50%;
1855
+ border-radius: var(--sc-radius-full);
1693
1856
  background: var(--sc-color-point);
1694
- box-shadow: 0 0 0.75rem color-mix(in srgb, var(--sc-color-point) 60%, transparent);
1695
1857
  vertical-align: 0.1em;
1696
1858
  }
1697
1859
 
@@ -1705,6 +1867,29 @@ table {
1705
1867
  font-size: var(--sc-text-sm);
1706
1868
  }
1707
1869
 
1870
+ /* The task a decision is about: a chip in the line, cut short where it is long. */
1871
+ .sc-decision-meta > a {
1872
+ display: inline-block;
1873
+ max-width: 100%;
1874
+ padding: 0 var(--sc-space-2);
1875
+ border: var(--sc-border);
1876
+ border-radius: var(--sc-radius-full);
1877
+ background: var(--sc-color-sheet);
1878
+ color: var(--sc-color-text);
1879
+ font-size: var(--sc-text-xs);
1880
+ font-weight: var(--sc-weight-medium);
1881
+ line-height: 1.5rem;
1882
+ text-decoration: none;
1883
+ white-space: nowrap;
1884
+ overflow: hidden;
1885
+ text-overflow: ellipsis;
1886
+ }
1887
+
1888
+ .sc-decision-meta > a:hover {
1889
+ border-color: var(--sc-color-accent);
1890
+ color: var(--sc-color-accent);
1891
+ }
1892
+
1708
1893
  .sc-decision-waiting {
1709
1894
  color: var(--sc-color-warning);
1710
1895
  font-size: var(--sc-text-sm);
@@ -1714,7 +1899,7 @@ table {
1714
1899
  display: grid;
1715
1900
  gap: var(--sc-space-1);
1716
1901
  padding: var(--sc-space-3) var(--sc-space-4);
1717
- border-left: 3px solid var(--sc-color-success);
1902
+ border-left: 2px solid var(--sc-color-accent);
1718
1903
  border-radius: 0 var(--sc-radius-md) var(--sc-radius-md) 0;
1719
1904
  }
1720
1905
 
@@ -1782,40 +1967,109 @@ table {
1782
1967
 
1783
1968
  /* The feed: a line per event, newest first. */
1784
1969
 
1970
+ /* The feed by days: a heading per day with a line after it; under it, runs of events by the
1971
+ same hands, each headed once by the person and the agent, with a row per event under the name,
1972
+ the hour and the sentence, parted by hairlines rather than boxed. */
1785
1973
  .sc-feed {
1786
1974
  display: grid;
1787
- gap: var(--sc-space-2);
1788
- max-width: var(--sc-width-prose);
1975
+ gap: var(--sc-space-5);
1789
1976
  }
1790
1977
 
1791
- .sc-feed-item {
1978
+ .sc-feed-day {
1792
1979
  display: grid;
1793
- grid-template-columns: auto minmax(0, 1fr) auto;
1794
- align-items: center;
1795
- gap: var(--sc-space-3);
1796
- padding: var(--sc-space-2) var(--sc-space-3);
1797
- border-radius: var(--sc-radius-md);
1798
- font-size: var(--sc-text-sm);
1980
+ gap: var(--sc-space-2);
1799
1981
  }
1800
1982
 
1801
- .sc-feed-words {
1802
- overflow-wrap: anywhere;
1983
+ .sc-feed-day-title {
1984
+ display: flex;
1985
+ align-items: center;
1986
+ gap: var(--sc-space-3);
1987
+ margin: 0;
1988
+ color: var(--sc-color-text-muted);
1803
1989
  }
1804
1990
 
1805
- .sc-feed-words a {
1806
- color: var(--sc-color-text);
1991
+ .sc-feed-day-title::after {
1992
+ content: "";
1993
+ flex: 1;
1994
+ height: 1px;
1995
+ background: var(--sc-color-border);
1807
1996
  }
1808
1997
 
1809
- .sc-feed-words a:hover {
1810
- color: var(--sc-color-accent);
1998
+ .sc-feed-day-list,
1999
+ .sc-feed-run-list {
2000
+ display: grid;
2001
+ margin: 0;
2002
+ padding: 0;
2003
+ list-style: none;
2004
+ }
2005
+
2006
+ .sc-feed-day-list {
2007
+ gap: var(--sc-space-3);
2008
+ }
2009
+
2010
+ .sc-feed-run {
2011
+ display: grid;
2012
+ gap: var(--sc-space-1);
2013
+ }
2014
+
2015
+ /* The rows of a run line up under the name, past the picture of the person. */
2016
+ .sc-feed-run-list {
2017
+ padding-inline-start: calc(1.5rem + var(--sc-space-2));
2018
+ }
2019
+
2020
+ .sc-feed-actor {
2021
+ display: inline-flex;
2022
+ align-items: center;
2023
+ gap: var(--sc-space-2);
2024
+ min-width: 0;
1811
2025
  }
1812
2026
 
1813
2027
  .sc-feed-agent {
1814
- margin-left: var(--sc-space-2);
1815
- color: var(--sc-color-text-muted);
2028
+ margin-inline-start: var(--sc-space-2);
2029
+ color: var(--sc-color-text-faint);
2030
+ font-size: var(--sc-text-xs);
2031
+ }
2032
+
2033
+ /* Where the agent is laid out beside the name by a gap, it needs no margin of its own. */
2034
+ .sc-feed-actor .sc-feed-agent,
2035
+ .sc-doc-meta .sc-feed-agent {
2036
+ margin-inline-start: 0;
2037
+ }
2038
+
2039
+ .sc-feed-item {
2040
+ display: grid;
2041
+ grid-template-columns: auto minmax(0, 1fr);
2042
+ align-items: baseline;
2043
+ gap: var(--sc-space-3);
2044
+ padding: var(--sc-space-1) 0;
2045
+ border-bottom: 1px solid color-mix(in srgb, var(--sc-color-border) 60%, transparent);
1816
2046
  font-size: var(--sc-text-sm);
1817
2047
  }
1818
2048
 
2049
+ .sc-feed-item:last-child {
2050
+ border-bottom: 0;
2051
+ }
2052
+
2053
+ .sc-feed-clock {
2054
+ color: var(--sc-color-text-faint);
2055
+ font-size: var(--sc-text-xs);
2056
+ font-variant-numeric: tabular-nums;
2057
+ }
2058
+
2059
+ .sc-feed-words {
2060
+ overflow-wrap: anywhere;
2061
+ }
2062
+
2063
+ .sc-feed-words a {
2064
+ color: var(--sc-color-text);
2065
+ text-decoration: none;
2066
+ }
2067
+
2068
+ .sc-feed-words a:hover {
2069
+ color: var(--sc-color-accent);
2070
+ text-decoration: underline;
2071
+ }
2072
+
1819
2073
  /* Signing in: one pane in the light, with the mark on a small stage of its own. */
1820
2074
 
1821
2075
  .sc-sign-in {
@@ -1841,7 +2095,7 @@ table {
1841
2095
  position: absolute;
1842
2096
  width: 14rem;
1843
2097
  height: 14rem;
1844
- border-radius: 50%;
2098
+ border-radius: var(--sc-radius-full);
1845
2099
  background: radial-gradient(
1846
2100
  circle,
1847
2101
  color-mix(in srgb, var(--sc-color-accent) 35%, transparent),
@@ -1856,17 +2110,17 @@ table {
1856
2110
  place-items: center;
1857
2111
  width: 3.5rem;
1858
2112
  height: 3.5rem;
1859
- border: 1px solid var(--sc-color-border-strong);
1860
- border-radius: 28%;
2113
+ border: var(--sc-border);
2114
+ border-radius: var(--sc-radius-xl);
1861
2115
  background: var(--sc-color-bg);
1862
- box-shadow: 0 0.5rem 2rem -0.25rem color-mix(in srgb, var(--sc-color-accent) 55%, transparent);
2116
+ box-shadow: var(--sc-glass-lift);
1863
2117
  }
1864
2118
 
1865
2119
  .sc-sign-in-badge::after {
1866
2120
  content: "";
1867
2121
  position: absolute;
1868
2122
  inset: 0;
1869
- border: 1px solid var(--sc-color-accent);
2123
+ border: 2px solid var(--sc-color-accent);
1870
2124
  border-radius: inherit;
1871
2125
  opacity: 0;
1872
2126
  pointer-events: none;
@@ -1881,7 +2135,7 @@ table {
1881
2135
  @keyframes sc-ring {
1882
2136
  0% {
1883
2137
  transform: scale(1);
1884
- opacity: 0.6;
2138
+ opacity: 0.55;
1885
2139
  }
1886
2140
  100% {
1887
2141
  transform: scale(2.6);
@@ -1914,15 +2168,67 @@ table {
1914
2168
  text-align: left;
1915
2169
  }
1916
2170
 
2171
+ /* The ways in, one under the other, each a button with who gets in through it under it. */
1917
2172
  .sc-sign-in-ways {
1918
- display: flex;
1919
- flex-wrap: wrap;
1920
- justify-content: center;
1921
- gap: var(--sc-space-3);
2173
+ display: grid;
2174
+ justify-items: center;
2175
+ gap: var(--sc-space-4);
2176
+ margin-top: var(--sc-space-2);
2177
+ }
2178
+
2179
+ .sc-sign-in-way {
2180
+ display: grid;
2181
+ justify-items: center;
2182
+ gap: var(--sc-space-2);
2183
+ width: 100%;
1922
2184
  }
1923
2185
 
2186
+ /* The button is the page's one call: wide, a step taller than a control, the provider's mark
2187
+ before its words. */
1924
2188
  .sc-sign-in-button {
1925
- justify-self: center;
2189
+ width: 100%;
2190
+ max-width: 20rem;
2191
+ min-height: 2.75rem;
2192
+ gap: var(--sc-space-3);
2193
+ font-size: var(--sc-text-md);
2194
+ }
2195
+
2196
+ .sc-sign-in-button:focus-visible {
2197
+ outline: var(--sc-focus-ring);
2198
+ outline-offset: 3px;
2199
+ border-radius: var(--sc-radius-md);
2200
+ }
2201
+
2202
+ /* On the way to the provider: the button keeps its color and turns its ring in the text's color. */
2203
+ .sc-sign-in-button-going {
2204
+ cursor: progress;
2205
+ }
2206
+
2207
+ .sc-sign-in-spinner .sc-spinner-ring {
2208
+ width: 1rem;
2209
+ height: 1rem;
2210
+ border-color: color-mix(in srgb, var(--sc-color-accent-contrast) 40%, transparent);
2211
+ border-top-color: var(--sc-color-accent-contrast);
2212
+ }
2213
+
2214
+ .sc-sign-in-mark {
2215
+ flex: none;
2216
+ }
2217
+
2218
+ /* A mark in colors of its own sits on a light tile, whatever the button's color. */
2219
+ .sc-sign-in-mark-tile {
2220
+ display: grid;
2221
+ place-items: center;
2222
+ width: 1.5rem;
2223
+ height: 1.5rem;
2224
+ border-radius: var(--sc-radius-full);
2225
+ background: var(--sc-color-accent-contrast);
2226
+ }
2227
+
2228
+ .sc-sign-in-admits {
2229
+ margin: 0;
2230
+ color: var(--sc-color-text-muted);
2231
+ font-size: var(--sc-text-xs);
1926
2232
  }
1927
2233
 
1928
2234
  /* Prose: what people and agents write, rendered from Markdown. Element selectors on purpose. */
@@ -1932,6 +2238,11 @@ table {
1932
2238
  overflow-wrap: anywhere;
1933
2239
  }
1934
2240
 
2241
+ /* The text of a task and of a page is read at length: at the size of reading. */
2242
+ .sc-task-main > .sc-prose {
2243
+ font-size: var(--sc-text-md);
2244
+ }
2245
+
1935
2246
  .sc-prose > * + * {
1936
2247
  margin-top: var(--sc-space-4);
1937
2248
  }
@@ -2067,12 +2378,24 @@ table {
2067
2378
  .sc-token-meta {
2068
2379
  display: flex;
2069
2380
  flex-wrap: wrap;
2070
- gap: var(--sc-space-3);
2381
+ gap: var(--sc-space-1) var(--sc-space-3);
2071
2382
  margin-top: var(--sc-space-1);
2072
2383
  color: var(--sc-color-text-muted);
2073
2384
  font-size: var(--sc-text-sm);
2074
2385
  }
2075
2386
 
2387
+ .sc-token-meta > span {
2388
+ display: inline-flex;
2389
+ flex-wrap: wrap;
2390
+ align-items: center;
2391
+ gap: var(--sc-space-1);
2392
+ }
2393
+
2394
+ .sc-token-meta > span + span {
2395
+ padding-inline-start: var(--sc-space-3);
2396
+ border-inline-start: var(--sc-hairline);
2397
+ }
2398
+
2076
2399
  .sc-secret {
2077
2400
  display: flex;
2078
2401
  flex-wrap: wrap;
@@ -2091,24 +2414,40 @@ table {
2091
2414
  user-select: all;
2092
2415
  }
2093
2416
 
2094
- /* People: everyone of the board, with what each may do. */
2417
+ /* People: everyone of the board, with what each may do, as cards in a grid: the person on the
2418
+ first line, the account and where it came from on the second, what they are and the ways to
2419
+ their work on the third. */
2095
2420
 
2096
2421
  .sc-people {
2097
2422
  display: grid;
2098
- gap: var(--sc-space-2);
2423
+ grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr));
2424
+ gap: var(--sc-space-3);
2099
2425
  }
2100
2426
 
2101
2427
  .sc-person-row {
2102
2428
  display: flex;
2103
2429
  flex-wrap: wrap;
2104
2430
  align-items: center;
2105
- gap: var(--sc-space-3);
2106
- padding: var(--sc-space-3) var(--sc-space-4);
2431
+ gap: var(--sc-space-2) var(--sc-space-3);
2432
+ padding: var(--sc-space-4);
2107
2433
  border-radius: var(--sc-radius-lg);
2108
2434
  }
2109
2435
 
2436
+ .sc-person-row > .sc-person {
2437
+ flex: 0 1 auto;
2438
+ min-width: 0;
2439
+ }
2440
+
2441
+ /* That this person is the reader: beside the name on the first line. */
2442
+ .sc-person-you {
2443
+ margin-inline-start: calc(var(--sc-space-1) - var(--sc-space-3));
2444
+ color: var(--sc-color-text-faint);
2445
+ font-size: var(--sc-text-xs);
2446
+ }
2447
+
2110
2448
  .sc-person-name {
2111
- flex: 1;
2449
+ flex: 1 1 100%;
2450
+ min-width: 0;
2112
2451
  color: var(--sc-color-text-muted);
2113
2452
  font-size: var(--sc-text-sm);
2114
2453
  }
@@ -2118,13 +2457,19 @@ table {
2118
2457
  font-size: var(--sc-text-xs);
2119
2458
  }
2120
2459
 
2460
+ /* What a person is, or the way to change it: the last line, a step under the account. */
2461
+ .sc-person-row > .sc-badge,
2462
+ .sc-person-row > .sc-field-inline {
2463
+ margin-top: var(--sc-space-1);
2464
+ }
2465
+
2121
2466
  /* Those let in and not signed in yet, and those deactivated: sections below everyone in. */
2122
2467
  .sc-people-section {
2123
2468
  margin-top: var(--sc-space-6);
2124
2469
  }
2125
2470
 
2126
2471
  .sc-person-row-out .sc-person {
2127
- opacity: 0.7;
2472
+ opacity: 0.55;
2128
2473
  }
2129
2474
 
2130
2475
  .sc-listing-form .sc-field-row {
@@ -2164,19 +2509,38 @@ table {
2164
2509
  box-shadow: var(--sc-glass-sheen), var(--sc-glass-lift), var(--sc-glow);
2165
2510
  }
2166
2511
 
2512
+ /* The head of a project reads on three lines: the mark with the name beside it, the key under
2513
+ the name, and the badges on a line of their own; the mark floats so that the name and the key
2514
+ stack beside it without a box around them. */
2167
2515
  .sc-project-head {
2168
- display: flex;
2169
- flex-wrap: wrap;
2170
- align-items: center;
2171
- gap: var(--sc-space-2) var(--sc-space-3);
2516
+ display: block;
2517
+ }
2518
+
2519
+ .sc-project-head::after {
2520
+ content: "";
2521
+ display: block;
2522
+ clear: both;
2523
+ }
2524
+
2525
+ .sc-project-head > :first-child {
2526
+ float: left;
2527
+ margin-inline-end: var(--sc-space-3);
2528
+ }
2529
+
2530
+ .sc-project-head > .sc-badge {
2531
+ margin-top: var(--sc-space-3);
2532
+ margin-inline-end: var(--sc-space-1);
2172
2533
  }
2173
2534
 
2174
2535
  /* The whole pane is the way in: the name's link stretches over it. */
2175
2536
  .sc-project-name {
2537
+ display: block;
2176
2538
  color: var(--sc-color-text);
2177
2539
  font-size: var(--sc-text-lg);
2178
2540
  font-weight: var(--sc-weight-bold);
2541
+ line-height: var(--sc-leading-snug);
2179
2542
  text-decoration: none;
2543
+ overflow-wrap: anywhere;
2180
2544
  }
2181
2545
 
2182
2546
  .sc-project-name::after {
@@ -2198,7 +2562,21 @@ table {
2198
2562
  font-size: var(--sc-text-xs);
2199
2563
  }
2200
2564
 
2565
+ /* Under the name, and past the mark: the key ends below the mark, so that the badges after it
2566
+ start at the edge. */
2567
+ .sc-project-head > .sc-project-key {
2568
+ display: block;
2569
+ margin-top: var(--sc-space-1);
2570
+ }
2571
+
2572
+ .sc-project-head > .sc-project-key::after {
2573
+ content: "";
2574
+ display: block;
2575
+ clear: both;
2576
+ }
2577
+
2201
2578
  .sc-project-description {
2579
+ margin-top: var(--sc-space-1);
2202
2580
  color: var(--sc-color-text-muted);
2203
2581
  font-size: var(--sc-text-sm);
2204
2582
  }
@@ -2208,7 +2586,8 @@ table {
2208
2586
  flex-wrap: wrap;
2209
2587
  gap: var(--sc-space-2);
2210
2588
  margin-top: auto;
2211
- padding-top: var(--sc-space-2);
2589
+ padding-top: var(--sc-space-3);
2590
+ border-top: var(--sc-hairline);
2212
2591
  }
2213
2592
 
2214
2593
  .sc-project-meta:empty {
@@ -2220,6 +2599,14 @@ table {
2220
2599
  gap: var(--sc-space-4);
2221
2600
  }
2222
2601
 
2602
+ /* What a member is in the project, and their office in the organization beside it, small. */
2603
+ .sc-member-role {
2604
+ display: inline-flex;
2605
+ align-items: center;
2606
+ gap: var(--sc-space-2);
2607
+ font-size: var(--sc-text-sm);
2608
+ }
2609
+
2223
2610
  .sc-member-form .sc-field-row {
2224
2611
  align-items: end;
2225
2612
  }
@@ -2228,11 +2615,14 @@ table {
2228
2615
 
2229
2616
  .sc-skills {
2230
2617
  display: grid;
2231
- gap: var(--sc-space-2);
2618
+ grid-template-columns: repeat(auto-fill, minmax(min(100%, 26rem), 1fr));
2619
+ gap: var(--sc-space-3);
2232
2620
  }
2233
2621
 
2234
2622
  .sc-skill {
2235
- padding: var(--sc-space-3) var(--sc-space-4);
2623
+ display: grid;
2624
+ align-content: start;
2625
+ padding: var(--sc-space-4) var(--sc-space-5);
2236
2626
  border-radius: var(--sc-radius-lg);
2237
2627
  }
2238
2628
 
@@ -2245,7 +2635,15 @@ table {
2245
2635
  }
2246
2636
 
2247
2637
  .sc-skill-name {
2248
- font-weight: var(--sc-weight-medium);
2638
+ font-size: var(--sc-text-md);
2639
+ font-weight: var(--sc-weight-bold);
2640
+ }
2641
+
2642
+ /* The folder a skill is in: a line of its own under the name, in the code face. */
2643
+ .sc-skill-head > .sc-muted {
2644
+ flex: 1 1 100%;
2645
+ font-family: var(--sc-font-mono);
2646
+ font-size: var(--sc-text-xs);
2249
2647
  }
2250
2648
 
2251
2649
  .sc-skill-description {
@@ -2256,7 +2654,9 @@ table {
2256
2654
 
2257
2655
  .sc-skill-uri {
2258
2656
  display: block;
2259
- margin-top: var(--sc-space-2);
2657
+ margin-top: var(--sc-space-3);
2658
+ padding-top: var(--sc-space-2);
2659
+ border-top: var(--sc-hairline);
2260
2660
  color: var(--sc-color-text-faint);
2261
2661
  font-size: var(--sc-text-xs);
2262
2662
  word-break: break-all;
@@ -2280,18 +2680,30 @@ table {
2280
2680
  display: flex;
2281
2681
  flex-wrap: wrap;
2282
2682
  align-items: center;
2283
- gap: var(--sc-space-2);
2683
+ gap: var(--sc-space-1) var(--sc-space-2);
2684
+ padding-bottom: var(--sc-space-3);
2685
+ border-bottom: var(--sc-hairline);
2284
2686
  }
2285
2687
 
2286
2688
  .sc-run-agent {
2287
- font-weight: var(--sc-weight-medium);
2689
+ font-size: var(--sc-text-md);
2690
+ font-weight: var(--sc-weight-bold);
2691
+ }
2692
+
2693
+ /* The way to end a run stands at the end of the first line. */
2694
+ .sc-run-header > .sc-button {
2695
+ order: 1;
2696
+ margin-inline-start: auto;
2288
2697
  }
2289
2698
 
2699
+ /* Who the run is for and since when: the second line of the head. */
2290
2700
  .sc-run-meta {
2291
- display: inline-flex;
2701
+ display: flex;
2702
+ flex: 1 1 100%;
2292
2703
  flex-wrap: wrap;
2704
+ order: 2;
2293
2705
  align-items: center;
2294
- gap: var(--sc-space-1);
2706
+ gap: var(--sc-space-1) var(--sc-space-2);
2295
2707
  color: var(--sc-color-text-muted);
2296
2708
  font-size: var(--sc-text-sm);
2297
2709
  }
@@ -2312,10 +2724,11 @@ table {
2312
2724
  display: grid;
2313
2725
  gap: var(--sc-space-1);
2314
2726
  padding-left: var(--sc-space-3);
2315
- border-left: 2px solid var(--sc-color-border-strong);
2727
+ border-left: 2px solid var(--sc-color-accent);
2316
2728
  font-size: var(--sc-text-sm);
2317
2729
  }
2318
2730
 
2731
+ /* The hour of a report heads it, small and apart from its words. */
2319
2732
  .sc-run-summary {
2320
2733
  padding-top: var(--sc-space-3);
2321
2734
  border-top: var(--sc-border);
@@ -2343,6 +2756,7 @@ table {
2343
2756
  }
2344
2757
 
2345
2758
  .sc-comment-meta {
2759
+ margin-inline-start: auto;
2346
2760
  color: var(--sc-color-text-muted);
2347
2761
  font-size: var(--sc-text-sm);
2348
2762
  }
@@ -2361,7 +2775,7 @@ table {
2361
2775
  }
2362
2776
 
2363
2777
  .sc-picture-thumb:focus-visible {
2364
- outline: 2px solid var(--sc-color-accent);
2778
+ outline: var(--sc-focus-ring);
2365
2779
  outline-offset: 2px;
2366
2780
  }
2367
2781
 
@@ -2389,7 +2803,7 @@ table {
2389
2803
  grid-template-rows: auto minmax(0, 1fr) auto;
2390
2804
  inset: 0;
2391
2805
  background: color-mix(in srgb, var(--sc-color-bg) 90%, transparent);
2392
- backdrop-filter: blur(12px);
2806
+ backdrop-filter: var(--sc-glass-backdrop);
2393
2807
  }
2394
2808
 
2395
2809
  .sc-overlay-bar {
@@ -2535,7 +2949,7 @@ table {
2535
2949
  padding: var(--sc-space-3) var(--sc-space-4);
2536
2950
  border: var(--sc-border);
2537
2951
  border-radius: var(--sc-radius-md);
2538
- background: var(--sc-color-field);
2952
+ background: var(--sc-color-bg-raised);
2539
2953
  font-family: var(--sc-font-mono);
2540
2954
  font-size: var(--sc-text-sm);
2541
2955
  line-height: var(--sc-leading-code);
@@ -2562,13 +2976,13 @@ table {
2562
2976
  max-width: 12rem;
2563
2977
  font-family: var(--sc-font-mono);
2564
2978
  font-size: var(--sc-text-lg);
2565
- letter-spacing: 0.12em;
2979
+ letter-spacing: var(--sc-tracking-code);
2566
2980
  text-transform: uppercase;
2567
2981
  }
2568
2982
 
2569
2983
  .sc-code-shown {
2570
2984
  font-size: var(--sc-text-md);
2571
- letter-spacing: 0.1em;
2985
+ letter-spacing: var(--sc-tracking-code);
2572
2986
  }
2573
2987
 
2574
2988
  /* Documents: a folder's pages, one page with its versions, its links both ways and its files. */
@@ -2655,11 +3069,13 @@ table {
2655
3069
  list-style: none;
2656
3070
  }
2657
3071
 
3072
+ /* A page in a list reads on two lines: its title, with a mark if it is archived, and under it
3073
+ where it lives, its version, who wrote it last and when, each a step apart. */
2658
3074
  .sc-doc-row {
2659
3075
  display: flex;
2660
3076
  flex-wrap: wrap;
2661
- align-items: baseline;
2662
- gap: var(--sc-space-2) var(--sc-space-3);
3077
+ align-items: center;
3078
+ gap: var(--sc-space-1) var(--sc-space-2);
2663
3079
  padding: var(--sc-space-3) var(--sc-space-4);
2664
3080
  border-radius: var(--sc-radius-lg);
2665
3081
  transition: border-color var(--sc-transition);
@@ -2671,7 +3087,9 @@ table {
2671
3087
 
2672
3088
  .sc-doc-title {
2673
3089
  color: var(--sc-color-text);
2674
- font-weight: var(--sc-weight-medium);
3090
+ font-size: var(--sc-text-md);
3091
+ font-weight: var(--sc-weight-bold);
3092
+ line-height: var(--sc-leading-snug);
2675
3093
  text-decoration: none;
2676
3094
  }
2677
3095
 
@@ -2680,8 +3098,17 @@ table {
2680
3098
  }
2681
3099
 
2682
3100
  .sc-doc-meta {
3101
+ display: flex;
3102
+ flex: 1 1 100%;
3103
+ flex-wrap: wrap;
3104
+ align-items: center;
3105
+ gap: var(--sc-space-1) var(--sc-space-2);
2683
3106
  color: var(--sc-color-text-muted);
2684
- font-size: var(--sc-text-sm);
3107
+ font-size: var(--sc-text-xs);
3108
+ }
3109
+
3110
+ .sc-doc-meta .sc-person-login {
3111
+ font-weight: var(--sc-weight-normal);
2685
3112
  }
2686
3113
 
2687
3114
  .sc-doc-path {
@@ -2704,7 +3131,7 @@ table {
2704
3131
  }
2705
3132
 
2706
3133
  .sc-doc-archived .sc-prose {
2707
- opacity: 0.85;
3134
+ opacity: 0.55;
2708
3135
  }
2709
3136
 
2710
3137
  /* The pictures for a page, under its body: the way to add one, and what becomes of it. */
@@ -2715,43 +3142,94 @@ table {
2715
3142
  gap: var(--sc-space-2);
2716
3143
  }
2717
3144
 
3145
+ /* The attach form: a button to choose the file with the chosen file's name beside it, the
3146
+ name to call it under that, and the attach button across the bottom, all one height. */
2718
3147
  .sc-doc-attach {
2719
- display: flex;
2720
- flex-wrap: wrap;
3148
+ display: grid;
2721
3149
  gap: var(--sc-space-2);
2722
3150
  margin-top: var(--sc-space-3);
2723
3151
  }
2724
3152
 
3153
+ .sc-doc-attach-file {
3154
+ display: flex;
3155
+ align-items: center;
3156
+ gap: var(--sc-space-3);
3157
+ min-width: 0;
3158
+ }
3159
+
3160
+ .sc-doc-attach-file > .sc-button {
3161
+ flex: none;
3162
+ }
3163
+
3164
+ .sc-doc-attach-chosen {
3165
+ min-width: 0;
3166
+ overflow: hidden;
3167
+ font-size: var(--sc-text-sm);
3168
+ white-space: nowrap;
3169
+ text-overflow: ellipsis;
3170
+ }
3171
+
3172
+ .sc-doc-attach > .sc-button {
3173
+ width: 100%;
3174
+ }
3175
+
2725
3176
  .sc-versions {
2726
3177
  margin: 0;
2727
3178
  padding: 0;
2728
3179
  list-style: none;
2729
3180
  }
2730
3181
 
3182
+ .sc-version {
3183
+ display: grid;
3184
+ grid-template-columns: auto minmax(0, 1fr);
3185
+ column-gap: var(--sc-space-3);
3186
+ row-gap: var(--sc-space-1);
3187
+ align-items: baseline;
3188
+ padding-block: var(--sc-space-2);
3189
+ font-size: var(--sc-text-sm);
3190
+ }
3191
+
2731
3192
  .sc-version + .sc-version {
2732
- margin-top: var(--sc-space-2);
3193
+ border-top: var(--sc-hairline);
2733
3194
  }
2734
3195
 
2735
3196
  .sc-version-number {
2736
- display: inline-block;
2737
- min-width: 2.5rem;
3197
+ min-width: 2rem;
2738
3198
  font-family: var(--sc-font-mono);
2739
3199
  font-size: var(--sc-text-sm);
2740
3200
  }
2741
3201
 
2742
- /* In the aside of a task or a page, the facts stack and the sections are small. */
2743
-
2744
- .sc-task-aside .sc-facts {
2745
- grid-template-columns: 1fr;
3202
+ .sc-version-title {
3203
+ font-weight: var(--sc-weight-medium);
3204
+ overflow-wrap: anywhere;
2746
3205
  }
2747
3206
 
2748
- .sc-task-aside .sc-section-title {
2749
- margin-bottom: var(--sc-space-1);
2750
- color: var(--sc-color-text-faint);
2751
- font-size: var(--sc-text-xs);
2752
- font-weight: var(--sc-weight-medium);
2753
- letter-spacing: 0.04em;
2754
- text-transform: uppercase;
3207
+ .sc-version-meta {
3208
+ display: flex;
3209
+ flex-wrap: wrap;
3210
+ align-items: center;
3211
+ gap: var(--sc-space-1) var(--sc-space-2);
3212
+ grid-column: 2;
3213
+ color: var(--sc-color-text-muted);
3214
+ font-size: var(--sc-text-xs);
3215
+ }
3216
+
3217
+ .sc-version-meta .sc-person-login {
3218
+ font-weight: var(--sc-weight-normal);
3219
+ }
3220
+
3221
+ .sc-version-meta .sc-feed-agent {
3222
+ margin-inline-start: 0;
3223
+ }
3224
+
3225
+ /* In the aside of a task or a page, the facts stack and the sections are small. */
3226
+
3227
+ .sc-task-aside .sc-facts {
3228
+ grid-template-columns: 1fr;
3229
+ }
3230
+
3231
+ .sc-task-aside .sc-section-title {
3232
+ margin-bottom: var(--sc-space-1);
2755
3233
  }
2756
3234
 
2757
3235
  .sc-task-aside .sc-task-section {
@@ -2771,11 +3249,6 @@ table {
2771
3249
 
2772
3250
  .sc-decision-label {
2773
3251
  margin: 0 0 var(--sc-space-1);
2774
- color: var(--sc-color-text-faint);
2775
- font-size: var(--sc-text-xs);
2776
- font-weight: var(--sc-weight-medium);
2777
- letter-spacing: 0.04em;
2778
- text-transform: uppercase;
2779
3252
  }
2780
3253
 
2781
3254
  .sc-outcome-form {
@@ -2783,11 +3256,20 @@ table {
2783
3256
  gap: var(--sc-space-2);
2784
3257
  }
2785
3258
 
2786
- /* Under the wide layout a task's facts come first: changing its state and reaching its forms is
2787
- what a phone is opened for, and two to a row they stay short. A document keeps its text first. */
3259
+ /* Under the wide layout a task reads its text first, then its facts and the ways to its forms, two
3260
+ to a row so that they stay short, then the discussion and what happened: the text says what the
3261
+ task is, and its state is changed right under it. A document keeps its text first. */
2788
3262
  @media (max-width: 63.99rem) {
3263
+ .sc-task .sc-task-main {
3264
+ display: contents;
3265
+ }
3266
+
2789
3267
  .sc-task .sc-task-aside {
2790
- order: -1;
3268
+ order: 1;
3269
+ }
3270
+
3271
+ .sc-task .sc-task-main > .sc-task-section {
3272
+ order: 2;
2791
3273
  }
2792
3274
 
2793
3275
  .sc-task .sc-task-aside .sc-facts {
@@ -2798,61 +3280,158 @@ table {
2798
3280
  /* The schedule, the roadmap and the categories (ADR-0019). */
2799
3281
 
2800
3282
  /* The colours a category may be shown in: names, painted here and nowhere else. Each is a
2801
- dark fill with a light line and text, so that a badge reads on the glass. */
3283
+ light fill with its words dark in the same hue, and a mark, a clear mid-tone of the hue, for
3284
+ the dots, flags and bars where the colour stands alone; the eight hues spread around the
3285
+ wheel so that no two are taken for each other at a glance. A console that sets only the line
3286
+ and the fill gets its line where the mark would be. */
2802
3287
  .sc-category-gray {
2803
- --sc-category-line: #aeb7c4;
2804
- --sc-category-fill: #2a3240;
3288
+ --sc-category-line: #4a5468;
3289
+ --sc-category-fill: #e0e4eb;
3290
+ --sc-category-mark: #7b8597;
2805
3291
  }
2806
3292
 
2807
3293
  .sc-category-blue {
2808
- --sc-category-line: #8fb6ff;
2809
- --sc-category-fill: #1a2d52;
3294
+ --sc-category-line: #1d4fcb;
3295
+ --sc-category-fill: #d2e0ff;
3296
+ --sc-category-mark: #2f6ae8;
2810
3297
  }
2811
3298
 
2812
3299
  .sc-category-green {
2813
- --sc-category-line: #6fd3a0;
2814
- --sc-category-fill: #143326;
3300
+ --sc-category-line: #176d26;
3301
+ --sc-category-fill: #cdf0cc;
3302
+ --sc-category-mark: #22a04a;
2815
3303
  }
2816
3304
 
2817
3305
  .sc-category-orange {
2818
- --sc-category-line: #ffb77a;
2819
- --sc-category-fill: #3a2414;
3306
+ --sc-category-line: #b83c00;
3307
+ --sc-category-fill: #ffe6d1;
3308
+ --sc-category-mark: #f0731a;
2820
3309
  }
2821
3310
 
2822
3311
  .sc-category-pink {
2823
- --sc-category-line: #ff9ac2;
2824
- --sc-category-fill: #3b1a2b;
3312
+ --sc-category-line: #b2176a;
3313
+ --sc-category-fill: #fdd2e5;
3314
+ --sc-category-mark: #e63d94;
2825
3315
  }
2826
3316
 
2827
3317
  .sc-category-purple {
2828
- --sc-category-line: #c4a4ff;
2829
- --sc-category-fill: #2b1f4a;
3318
+ --sc-category-line: #6434c2;
3319
+ --sc-category-fill: #e6d8fc;
3320
+ --sc-category-mark: #8457e6;
2830
3321
  }
2831
3322
 
2832
3323
  .sc-category-teal {
2833
- --sc-category-line: #7ad7d4;
2834
- --sc-category-fill: #10343a;
3324
+ --sc-category-line: #08667a;
3325
+ --sc-category-fill: #c6edf4;
3326
+ --sc-category-mark: #0f9bb0;
2835
3327
  }
2836
3328
 
2837
3329
  .sc-category-yellow {
2838
- --sc-category-line: #f0d36a;
2839
- --sc-category-fill: #3a3012;
3330
+ --sc-category-line: #44403c;
3331
+ --sc-category-fill: #fbe9b2;
3332
+ --sc-category-mark: #e6b42c;
2840
3333
  }
2841
3334
 
2842
3335
  .sc-badge-category {
2843
- border-color: color-mix(in srgb, var(--sc-category-line) 45%, transparent);
3336
+ border-color: transparent;
2844
3337
  background: var(--sc-category-fill);
2845
3338
  color: var(--sc-category-line);
2846
3339
  }
2847
3340
 
3341
+ /* A badge's kind in how it is filled, so that a plain badge, a category, a state, a priority
3342
+ and a due day beside each other are kinds and not five of one thing; the pill is the shape
3343
+ of them all and nothing stands before the words:
3344
+ - a plain badge (a role, a count, public or private): a soft fill with a line of its hue;
3345
+ - a category and a state: a soft fill, no line;
3346
+ - a priority: a soft fill with dark words of its hue, low a grey, high an orange, urgent a red;
3347
+ - a due day: a line, a very light fill and bold words, all in the hue of how near the day
3348
+ is. */
3349
+ .sc-badge:not(.sc-badge-category) {
3350
+ border-color: color-mix(in srgb, currentColor 40%, transparent);
3351
+ }
3352
+
3353
+ .sc-badge.sc-badge-kind-state {
3354
+ border-color: transparent;
3355
+ }
3356
+
3357
+ .sc-badge.sc-badge-kind-priority {
3358
+ border-color: transparent;
3359
+ background: #e1e6ee;
3360
+ color: #3a4558;
3361
+ }
3362
+
3363
+ .sc-badge.sc-badge-kind-priority.sc-badge-point {
3364
+ background: #ffd4a8;
3365
+ color: #7a3300;
3366
+ }
3367
+
3368
+ .sc-badge.sc-badge-kind-priority.sc-badge-danger {
3369
+ background: #fdbcc3;
3370
+ color: #7d0e1d;
3371
+ }
3372
+
3373
+ /* A due day: one line weight for every one; the line, a very light fill and the words are
3374
+ all in the hue of how near the day is. */
3375
+ .sc-badge.sc-badge-kind-due {
3376
+ border: 1.5px solid #a3acba;
3377
+ background: #f4f6f9;
3378
+ color: #4b5563;
3379
+ font-weight: var(--sc-weight-bold);
3380
+ font-variant-numeric: tabular-nums;
3381
+ }
3382
+
3383
+ .sc-badge.sc-badge-kind-due.sc-badge-accent {
3384
+ border-color: #6f93e8;
3385
+ background: #f0f5ff;
3386
+ color: #1d4ed8;
3387
+ }
3388
+
3389
+ .sc-badge.sc-badge-kind-due.sc-badge-success {
3390
+ border-color: #5fb488;
3391
+ background: #effaf4;
3392
+ color: #146b44;
3393
+ }
3394
+
3395
+ /* Within the week. */
3396
+ .sc-badge.sc-badge-kind-due.sc-badge-warning {
3397
+ border-color: #e0b100;
3398
+ background: #fffae6;
3399
+ color: #8a6500;
3400
+ }
3401
+
3402
+ /* Tomorrow. */
3403
+ .sc-badge.sc-badge-kind-due.sc-badge-point {
3404
+ border-color: #f59e3c;
3405
+ background: #fff4ea;
3406
+ color: #b45309;
3407
+ }
3408
+
3409
+ /* Today. */
3410
+ .sc-badge.sc-badge-kind-due.sc-badge-due-today {
3411
+ border-color: #f26b4a;
3412
+ background: #fff1ec;
3413
+ color: #c2330f;
3414
+ }
3415
+
3416
+ /* Late. */
3417
+ .sc-badge.sc-badge-kind-due.sc-badge-danger {
3418
+ border-color: #d33a47;
3419
+ background: #fff0f1;
3420
+ color: #c0262f;
3421
+ }
3422
+
3423
+ .sc-badge-kind-count {
3424
+ font-variant-numeric: tabular-nums;
3425
+ }
3426
+
2848
3427
  .sc-category-swatch,
2849
3428
  .sc-calendar-dot {
2850
3429
  display: inline-block;
2851
3430
  flex: none;
2852
3431
  width: 0.625rem;
2853
3432
  height: 0.625rem;
2854
- border-radius: 50%;
2855
- background: var(--sc-category-line, var(--sc-color-text-faint));
3433
+ border-radius: var(--sc-radius-full);
3434
+ background: var(--sc-category-mark, var(--sc-category-line, var(--sc-color-text-faint)));
2856
3435
  }
2857
3436
 
2858
3437
  /* The filters above the board: a quiet row of controls, as wide as its words. */
@@ -2874,10 +3453,38 @@ table {
2874
3453
  font-size: var(--sc-text-sm);
2875
3454
  }
2876
3455
 
3456
+ /* The words the board is narrowed by: a field that takes what room the row has, up to a point. */
3457
+ .sc-filters-words {
3458
+ flex: 1 1 12rem;
3459
+ max-width: 22rem;
3460
+ }
3461
+
3462
+ .sc-filters-words .sc-input {
3463
+ width: 100%;
3464
+ }
3465
+
2877
3466
  .sc-filters-count {
2878
3467
  font-size: var(--sc-text-sm);
2879
3468
  }
2880
3469
 
3470
+ @media (max-width: 40rem) {
3471
+ .sc-filters {
3472
+ flex-wrap: nowrap;
3473
+ margin-inline: calc(-1 * var(--sc-space-4));
3474
+ padding-inline: var(--sc-space-4);
3475
+ overflow-x: auto;
3476
+ scrollbar-width: none;
3477
+ }
3478
+
3479
+ .sc-filters > * {
3480
+ flex: none;
3481
+ }
3482
+
3483
+ .sc-filters-count {
3484
+ white-space: nowrap;
3485
+ }
3486
+ }
3487
+
2881
3488
  /* Tasks as rows, where the columns are not the point. */
2882
3489
  .sc-task-rows {
2883
3490
  display: grid;
@@ -2888,11 +3495,11 @@ table {
2888
3495
  }
2889
3496
 
2890
3497
  .sc-task-row {
2891
- display: flex;
2892
- flex-wrap: wrap;
3498
+ display: grid;
3499
+ grid-template-columns: minmax(0, 1fr) auto;
2893
3500
  align-items: center;
2894
- gap: var(--sc-space-2) var(--sc-space-3);
2895
- padding: var(--sc-space-2) var(--sc-space-3);
3501
+ gap: var(--sc-space-1) var(--sc-space-3);
3502
+ padding: var(--sc-space-3) var(--sc-space-4);
2896
3503
  border: var(--sc-border);
2897
3504
  border-radius: var(--sc-radius-md);
2898
3505
  background: var(--sc-color-sheet);
@@ -2900,7 +3507,7 @@ table {
2900
3507
  }
2901
3508
 
2902
3509
  .sc-task-row-title {
2903
- flex: 1 1 14rem;
3510
+ grid-column: 1;
2904
3511
  min-width: 0;
2905
3512
  color: var(--sc-color-text);
2906
3513
  font-weight: var(--sc-weight-medium);
@@ -2913,6 +3520,7 @@ table {
2913
3520
  }
2914
3521
 
2915
3522
  .sc-task-row-project {
3523
+ grid-column: 1;
2916
3524
  color: var(--sc-color-text-faint);
2917
3525
  font-size: var(--sc-text-xs);
2918
3526
  }
@@ -2920,11 +3528,27 @@ table {
2920
3528
  .sc-task-row-meta {
2921
3529
  display: flex;
2922
3530
  flex-wrap: wrap;
3531
+ grid-row: 1 / span 2;
3532
+ grid-column: 2;
2923
3533
  align-items: center;
3534
+ justify-content: flex-end;
2924
3535
  gap: var(--sc-space-1);
2925
3536
  margin-left: auto;
2926
3537
  }
2927
3538
 
3539
+ @media (max-width: 40rem) {
3540
+ .sc-task-row {
3541
+ grid-template-columns: minmax(0, 1fr);
3542
+ }
3543
+
3544
+ .sc-task-row-meta {
3545
+ grid-row: auto;
3546
+ grid-column: 1;
3547
+ justify-content: flex-start;
3548
+ margin-left: 0;
3549
+ }
3550
+ }
3551
+
2928
3552
  /* The calendar: the month as a table, a cell a day, the tasks due in it one line each. */
2929
3553
  .sc-calendar {
2930
3554
  display: grid;
@@ -2957,12 +3581,7 @@ table {
2957
3581
 
2958
3582
  .sc-calendar-grid th {
2959
3583
  padding: var(--sc-space-1);
2960
- color: var(--sc-color-text-faint);
2961
- font-size: var(--sc-text-xs);
2962
- font-weight: var(--sc-weight-medium);
2963
- letter-spacing: 0.04em;
2964
3584
  text-align: left;
2965
- text-transform: uppercase;
2966
3585
  }
2967
3586
 
2968
3587
  .sc-calendar-cell {
@@ -2981,7 +3600,6 @@ table {
2981
3600
 
2982
3601
  .sc-calendar-cell-today {
2983
3602
  border-color: var(--sc-color-accent);
2984
- box-shadow: inset 0 0 0 1px var(--sc-color-accent);
2985
3603
  }
2986
3604
 
2987
3605
  .sc-calendar-day {
@@ -2995,6 +3613,26 @@ table {
2995
3613
  color: var(--sc-color-accent);
2996
3614
  }
2997
3615
 
3616
+ .sc-calendar-more {
3617
+ display: block;
3618
+ width: 100%;
3619
+ margin-top: 2px;
3620
+ padding: 1px var(--sc-space-1);
3621
+ border: 0;
3622
+ border-radius: var(--sc-radius-sm);
3623
+ background: transparent;
3624
+ color: var(--sc-color-text-muted);
3625
+ font-size: var(--sc-text-xs);
3626
+ font-weight: var(--sc-weight-medium);
3627
+ line-height: var(--sc-leading-snug);
3628
+ text-align: start;
3629
+ }
3630
+
3631
+ .sc-calendar-more:hover {
3632
+ background: var(--sc-color-bg-inset);
3633
+ color: var(--sc-color-text);
3634
+ }
3635
+
2998
3636
  .sc-calendar-task {
2999
3637
  display: flex;
3000
3638
  align-items: center;
@@ -3004,7 +3642,7 @@ table {
3004
3642
  border-radius: var(--sc-radius-sm);
3005
3643
  color: var(--sc-color-text);
3006
3644
  font-size: var(--sc-text-xs);
3007
- line-height: 1.4;
3645
+ line-height: var(--sc-leading-snug);
3008
3646
  text-decoration: none;
3009
3647
  }
3010
3648
 
@@ -3041,7 +3679,8 @@ table {
3041
3679
  .sc-calendar-bar {
3042
3680
  margin-inline: calc(-1 * var(--sc-space-2) - 0.125rem - 1px);
3043
3681
  padding-inline: var(--sc-space-2);
3044
- border-block: 1px solid color-mix(in srgb, var(--sc-category-line) 45%, transparent);
3682
+ border-block: 1px solid
3683
+ color-mix(in srgb, var(--sc-category-mark, var(--sc-category-line)) 60%, transparent);
3045
3684
  background: var(--sc-category-fill);
3046
3685
  color: var(--sc-category-line);
3047
3686
  font-size: var(--sc-text-xs);
@@ -3054,19 +3693,21 @@ table {
3054
3693
  every week it crosses, never one piece alone; by its colour and not by a filter, which would
3055
3694
  light the card within it too. */
3056
3695
  .sc-calendar-bar-pointed {
3057
- background: color-mix(in srgb, var(--sc-category-fill), white 12%);
3696
+ background: color-mix(in srgb, var(--sc-category-fill), var(--sc-category-line) 14%);
3058
3697
  }
3059
3698
 
3060
3699
  .sc-calendar-bar-begins {
3061
3700
  margin-left: 0;
3062
- border-left: 1px solid color-mix(in srgb, var(--sc-category-line) 45%, transparent);
3701
+ border-left: 1px solid
3702
+ color-mix(in srgb, var(--sc-category-mark, var(--sc-category-line)) 60%, transparent);
3063
3703
  border-start-start-radius: var(--sc-radius-full);
3064
3704
  border-end-start-radius: var(--sc-radius-full);
3065
3705
  }
3066
3706
 
3067
3707
  .sc-calendar-bar-ends {
3068
3708
  margin-right: 0;
3069
- border-right: 1px solid color-mix(in srgb, var(--sc-category-line) 45%, transparent);
3709
+ border-right: 1px solid
3710
+ color-mix(in srgb, var(--sc-category-mark, var(--sc-category-line)) 60%, transparent);
3070
3711
  border-start-end-radius: var(--sc-radius-full);
3071
3712
  border-end-end-radius: var(--sc-radius-full);
3072
3713
  }
@@ -3088,8 +3729,17 @@ table {
3088
3729
  color: var(--sc-color-danger);
3089
3730
  }
3090
3731
 
3732
+ /* A bar of a task that is over: paler in its own colour, not see-through, so that every piece
3733
+ of it is one shade whatever lies under it, and the card of the task under the pointer,
3734
+ which lies within the piece, stays solid. */
3091
3735
  .sc-calendar-bar.sc-calendar-over {
3092
- opacity: 0.55;
3736
+ border-color: color-mix(
3737
+ in srgb,
3738
+ var(--sc-category-mark, var(--sc-category-line)) 30%,
3739
+ transparent
3740
+ );
3741
+ background: color-mix(in srgb, var(--sc-category-fill) 50%, var(--sc-color-bg-raised));
3742
+ color: color-mix(in srgb, var(--sc-category-line) 55%, var(--sc-color-bg-raised));
3093
3743
  }
3094
3744
 
3095
3745
  .sc-calendar-legend {
@@ -3150,6 +3800,16 @@ table {
3150
3800
  font-size: var(--sc-text-sm);
3151
3801
  }
3152
3802
 
3803
+ /* The mark hangs in the margin, so that what wraps onto a second line, a badge most often,
3804
+ starts under the name rather than under the mark. */
3805
+ .sc-project-head:has(> .sc-mark-md) {
3806
+ padding-inline-start: calc(2rem + var(--sc-space-3));
3807
+ }
3808
+
3809
+ .sc-project-head > .sc-mark-md {
3810
+ margin-inline-start: calc(-2rem - var(--sc-space-3));
3811
+ }
3812
+
3153
3813
  .sc-mark-lg {
3154
3814
  width: 3rem;
3155
3815
  height: 3rem;
@@ -3178,10 +3838,11 @@ table {
3178
3838
  }
3179
3839
 
3180
3840
  .sc-input-file {
3181
- padding-block: calc(var(--sc-space-2) - 2px);
3182
3841
  font-size: var(--sc-text-sm);
3183
3842
  }
3184
3843
 
3844
+ /* Under the month: what is late and who has what on the left, one under the other, and what
3845
+ has no day yet, the long list, down the right; one column where the window is narrow. */
3185
3846
  .sc-calendar-below {
3186
3847
  display: grid;
3187
3848
  align-items: start;
@@ -3192,6 +3853,12 @@ table {
3192
3853
  @media (min-width: 64rem) {
3193
3854
  .sc-calendar-below {
3194
3855
  grid-template-columns: 1fr 1fr;
3856
+ grid-template-rows: auto 1fr;
3857
+ }
3858
+
3859
+ .sc-calendar-below > :last-child {
3860
+ grid-column: 2;
3861
+ grid-row: 1 / span 2;
3195
3862
  }
3196
3863
  }
3197
3864
 
@@ -3243,6 +3910,26 @@ table {
3243
3910
  color: var(--sc-color-text-muted);
3244
3911
  }
3245
3912
 
3913
+ /* Who asked and who answers (ADR-0042): the two people side by side, an arrow from the one to
3914
+ the other, so that the asker and the decider are never read as one. */
3915
+ .sc-decision-people,
3916
+ .sc-decision-for {
3917
+ display: inline-flex;
3918
+ align-items: center;
3919
+ gap: var(--sc-space-1);
3920
+ white-space: nowrap;
3921
+ }
3922
+
3923
+ .sc-decision-arrow {
3924
+ color: var(--sc-color-text-faint);
3925
+ font-weight: var(--sc-weight-medium);
3926
+ }
3927
+
3928
+ .sc-decision-row-answer {
3929
+ color: var(--sc-color-text);
3930
+ font-weight: var(--sc-weight-medium);
3931
+ }
3932
+
3246
3933
  /* The record of the decisions: a row each, what was asked on the left and what was answered on
3247
3934
  the right, each with who and when under it; one column where the window is narrow. */
3248
3935
  .sc-decision-record {
@@ -3296,12 +3983,26 @@ table {
3296
3983
  margin-left: var(--sc-space-2);
3297
3984
  }
3298
3985
 
3986
+ /* The answer a decision took, marked in green before its words. */
3987
+ .sc-decision-record-chosen::before {
3988
+ content: "";
3989
+ position: absolute;
3990
+ top: calc(0.8em - 0.25rem);
3991
+ left: 0;
3992
+ width: 0.5rem;
3993
+ height: 0.5rem;
3994
+ border-radius: var(--sc-radius-full);
3995
+ background: var(--sc-color-success);
3996
+ }
3997
+
3299
3998
  .sc-decision-record-chosen {
3999
+ position: relative;
4000
+ padding-left: var(--sc-space-4);
3300
4001
  display: flex;
3301
4002
  flex-wrap: wrap;
3302
4003
  align-items: center;
3303
4004
  gap: var(--sc-space-2);
3304
- color: var(--sc-color-success);
4005
+ color: var(--sc-color-text);
3305
4006
  font-weight: var(--sc-weight-medium);
3306
4007
  overflow-wrap: anywhere;
3307
4008
  }
@@ -3340,31 +4041,44 @@ table {
3340
4041
  font-size: var(--sc-text-sm);
3341
4042
  }
3342
4043
 
3343
- /* Who has what: a small table, the late numbers in the danger colour. */
4044
+ /* Who has what: a table on a sheet of its own, a quiet band for the headings, a hairline
4045
+ between people, the numbers in columns of their own on the right in the display size; the
4046
+ one due this week and the one late carry a dot of their colour before them. */
3344
4047
  .sc-workload {
3345
4048
  width: 100%;
3346
4049
  max-width: var(--sc-width-prose);
3347
- border-collapse: collapse;
4050
+ border: var(--sc-border);
4051
+ border-radius: var(--sc-radius-lg);
4052
+ border-collapse: separate;
4053
+ border-spacing: 0;
4054
+ background: var(--sc-color-sheet);
4055
+ box-shadow: var(--sc-glass-lift);
3348
4056
  font-size: var(--sc-text-sm);
3349
4057
  }
3350
4058
 
3351
4059
  .sc-workload th,
3352
4060
  .sc-workload td {
3353
- padding: var(--sc-space-2) var(--sc-space-3);
3354
- border-bottom: var(--sc-border);
4061
+ padding: var(--sc-space-3) var(--sc-space-4);
3355
4062
  text-align: left;
3356
4063
  }
3357
4064
 
3358
4065
  .sc-workload thead th {
3359
- color: var(--sc-color-text-faint);
3360
- font-size: var(--sc-text-xs);
3361
- font-weight: var(--sc-weight-medium);
3362
- letter-spacing: 0.04em;
3363
- text-transform: uppercase;
4066
+ padding-block: var(--sc-space-2);
4067
+ border-bottom: var(--sc-border);
4068
+ background: var(--sc-color-bg-inset);
4069
+ white-space: nowrap;
4070
+ }
4071
+
4072
+ .sc-workload thead th:first-child {
4073
+ border-start-start-radius: var(--sc-radius-lg);
4074
+ }
4075
+
4076
+ .sc-workload thead th:last-child {
4077
+ border-start-end-radius: var(--sc-radius-lg);
3364
4078
  }
3365
4079
 
3366
4080
  .sc-workload tbody th {
3367
- font-weight: var(--sc-weight-normal);
4081
+ font-weight: var(--sc-weight-medium);
3368
4082
  }
3369
4083
 
3370
4084
  .sc-workload tbody th a {
@@ -3376,8 +4090,34 @@ table {
3376
4090
  color: var(--sc-color-accent);
3377
4091
  }
3378
4092
 
4093
+ /* The numbers: a narrow column each, lined up on the right. */
4094
+ .sc-workload th:not(:first-child),
3379
4095
  .sc-workload td {
4096
+ width: 6.5rem;
4097
+ text-align: right;
4098
+ }
4099
+
4100
+ .sc-workload td {
4101
+ font-size: var(--sc-text-md);
3380
4102
  font-variant-numeric: tabular-nums;
4103
+ white-space: nowrap;
4104
+ }
4105
+
4106
+ .sc-workload-soon,
4107
+ .sc-workload-late {
4108
+ font-weight: var(--sc-weight-bold);
4109
+ }
4110
+
4111
+ .sc-workload-soon::before,
4112
+ .sc-workload-late::before {
4113
+ content: "";
4114
+ display: inline-block;
4115
+ width: 0.4rem;
4116
+ height: 0.4rem;
4117
+ margin-inline-end: var(--sc-space-2);
4118
+ border-radius: var(--sc-radius-full);
4119
+ background: currentColor;
4120
+ vertical-align: 0.1em;
3381
4121
  }
3382
4122
 
3383
4123
  .sc-workload-soon {
@@ -3386,14 +4126,50 @@ table {
3386
4126
 
3387
4127
  .sc-workload-late {
3388
4128
  color: var(--sc-color-danger);
3389
- font-weight: var(--sc-weight-bold);
4129
+ }
4130
+
4131
+ /* A hairline between people, and the row under the pointer lit a little. */
4132
+ .sc-workload tbody tr + tr > th,
4133
+ .sc-workload tbody tr + tr > td {
4134
+ border-top: var(--sc-hairline);
4135
+ }
4136
+
4137
+ .sc-workload tbody tr:hover > th,
4138
+ .sc-workload tbody tr:hover > td {
4139
+ background: color-mix(in srgb, var(--sc-color-accent) 4%, transparent);
4140
+ }
4141
+
4142
+ @media (max-width: 40rem) {
4143
+ .sc-workload th:not(:first-child),
4144
+ .sc-workload td {
4145
+ width: auto;
4146
+ }
4147
+
4148
+ .sc-workload th,
4149
+ .sc-workload td {
4150
+ padding-inline: var(--sc-space-2);
4151
+ }
4152
+
4153
+ .sc-workload thead th {
4154
+ white-space: normal;
4155
+ word-break: keep-all;
4156
+ line-height: var(--sc-leading-tight);
4157
+ }
4158
+
4159
+ .sc-workload tbody th {
4160
+ word-break: keep-all;
4161
+ }
4162
+
4163
+ .sc-workload td {
4164
+ font-size: var(--sc-text-sm);
4165
+ }
3390
4166
  }
3391
4167
 
3392
4168
  /* The roadmap: a goal a pane, with how far it is as a bar. */
3393
4169
  .sc-goals {
3394
4170
  display: grid;
4171
+ grid-template-columns: repeat(auto-fill, minmax(min(100%, 30rem), 1fr));
3395
4172
  gap: var(--sc-space-3);
3396
- max-width: var(--sc-width-prose);
3397
4173
  margin: 0;
3398
4174
  padding: 0;
3399
4175
  list-style: none;
@@ -3410,7 +4186,7 @@ table {
3410
4186
  }
3411
4187
 
3412
4188
  .sc-goal-done {
3413
- opacity: 0.75;
4189
+ opacity: 0.55;
3414
4190
  }
3415
4191
 
3416
4192
  .sc-goal-dropped {
@@ -3425,7 +4201,7 @@ table {
3425
4201
  }
3426
4202
 
3427
4203
  .sc-goal-title {
3428
- flex: 1 1 12rem;
4204
+ flex: 1 1 100%;
3429
4205
  color: var(--sc-color-text);
3430
4206
  font-size: var(--sc-text-lg);
3431
4207
  font-weight: var(--sc-weight-medium);
@@ -3469,11 +4245,6 @@ table {
3469
4245
 
3470
4246
  .sc-goal-tasks-state {
3471
4247
  margin-bottom: var(--sc-space-2);
3472
- color: var(--sc-color-text-faint);
3473
- font-size: var(--sc-text-xs);
3474
- font-weight: var(--sc-weight-medium);
3475
- letter-spacing: 0.04em;
3476
- text-transform: uppercase;
3477
4248
  }
3478
4249
 
3479
4250
  /* The categories: a row each, with its name and its colour open to an administrator. */
@@ -3502,6 +4273,10 @@ table {
3502
4273
  background: var(--sc-color-sheet);
3503
4274
  }
3504
4275
 
4276
+ .sc-category-row > .sc-project-key {
4277
+ margin-inline-start: auto;
4278
+ }
4279
+
3505
4280
  .sc-category-form {
3506
4281
  display: flex;
3507
4282
  flex: 1;
@@ -3534,12 +4309,12 @@ table {
3534
4309
  padding: var(--sc-space-2) var(--sc-space-3);
3535
4310
  border: var(--sc-border);
3536
4311
  border-radius: var(--sc-radius-md);
3537
- background: var(--sc-color-bg-inset);
4312
+ background: var(--sc-color-bg-raised);
3538
4313
  box-shadow: var(--sc-shadow-stage);
3539
4314
  color: var(--sc-color-text);
3540
4315
  font-size: var(--sc-text-xs);
3541
4316
  font-weight: var(--sc-weight-normal);
3542
- line-height: 1.4;
4317
+ line-height: var(--sc-leading-snug);
3543
4318
  text-align: left;
3544
4319
  text-decoration: none;
3545
4320
  white-space: normal;
@@ -3629,13 +4404,17 @@ table {
3629
4404
  padding-inline: var(--sc-space-4);
3630
4405
  }
3631
4406
 
3632
- .sc-brand-symbol,
3633
- .sc-brand-wordmark {
3634
- height: var(--sc-brand-size-compact);
4407
+ .sc-brand {
4408
+ gap: calc(var(--sc-brand-size-compact) * var(--sc-brand-gap-ratio));
3635
4409
  }
3636
4410
 
3637
4411
  .sc-brand-symbol {
3638
4412
  width: var(--sc-brand-size-compact);
4413
+ height: var(--sc-brand-size-compact);
4414
+ }
4415
+
4416
+ .sc-brand-wordmark {
4417
+ height: calc(var(--sc-brand-size-compact) * var(--sc-brand-wordmark-ratio));
3639
4418
  }
3640
4419
 
3641
4420
  .sc-crumb-link {
@@ -3647,15 +4426,18 @@ table {
3647
4426
  display: none;
3648
4427
  }
3649
4428
 
3650
- /* Tabs that do not fit wrap, so that none is hidden off the edge. */
4429
+ /* Tabs that do not fit stay on one line and scroll sideways, the edge fading where more of them
4430
+ are; the current one is brought into view by the shell. */
3651
4431
  .sc-tabs {
3652
4432
  padding-inline: var(--sc-space-4);
3653
- overflow: visible;
4433
+ mask-image: linear-gradient(to right, #000 calc(100% - var(--sc-space-6)), transparent);
3654
4434
  }
3655
4435
 
3656
4436
  .sc-tabs-inner {
3657
- flex-wrap: wrap;
3658
- gap: 0 var(--sc-space-4);
4437
+ gap: var(--sc-space-4);
4438
+ /* As wide as the tabs and some room past the last, so that it scrolls clear of the fading edge. */
4439
+ width: max-content;
4440
+ padding-inline-end: var(--sc-space-6);
3659
4441
  }
3660
4442
 
3661
4443
  .sc-menu-summary .sc-person-login {
@@ -3743,9 +4525,9 @@ table {
3743
4525
  position: static;
3744
4526
  }
3745
4527
 
3746
- .sc-feed-item {
3747
- grid-template-columns: 1fr;
3748
- gap: var(--sc-space-1);
4528
+ /* The rows of a run use the whole width. */
4529
+ .sc-feed-run-list {
4530
+ padding-inline-start: 0;
3749
4531
  }
3750
4532
 
3751
4533
  .sc-sign-in {
@@ -3774,10 +4556,10 @@ table {
3774
4556
  display: inline-flex;
3775
4557
  align-items: center;
3776
4558
  padding: 0 var(--sc-space-3);
3777
- border: 1px solid var(--sc-color-border-strong);
4559
+ border: var(--sc-border-strong);
3778
4560
  border-right: 0;
3779
4561
  border-radius: var(--sc-radius-md) 0 0 var(--sc-radius-md);
3780
- background: color-mix(in srgb, var(--sc-color-field) 60%, var(--sc-color-border));
4562
+ background: color-mix(in srgb, var(--sc-color-bg-raised) 60%, var(--sc-color-border));
3781
4563
  color: var(--sc-color-text-muted);
3782
4564
  font-size: var(--sc-text-sm);
3783
4565
  white-space: nowrap;
@@ -3807,7 +4589,12 @@ table {
3807
4589
  }
3808
4590
 
3809
4591
  /* The facts of a thing inside a panel: a list in the panel, not a pane of their own. */
4592
+ /* The facts on a settings page, inside a pane of their own: a table, a row per fact with its
4593
+ name in a column on the left and its value beside it, a hairline between rows; the name over
4594
+ the value where the window is narrow. */
3810
4595
  .sc-facts-plain {
4596
+ grid-template-columns: minmax(0, 1fr);
4597
+ gap: 0;
3811
4598
  padding: 0;
3812
4599
  border: 0;
3813
4600
  border-radius: 0;
@@ -3820,6 +4607,44 @@ table {
3820
4607
  content: none;
3821
4608
  }
3822
4609
 
4610
+ .sc-facts-plain > * {
4611
+ display: grid;
4612
+ grid-template-columns: minmax(8rem, 12rem) minmax(0, 1fr);
4613
+ gap: var(--sc-space-1) var(--sc-space-5);
4614
+ align-items: baseline;
4615
+ padding: var(--sc-space-3) 0;
4616
+ border-top: var(--sc-hairline);
4617
+ }
4618
+
4619
+ .sc-facts-plain > :first-child {
4620
+ padding-top: 0;
4621
+ border-top: 0;
4622
+ }
4623
+
4624
+ .sc-facts-plain > :last-child {
4625
+ padding-bottom: 0;
4626
+ }
4627
+
4628
+ .sc-facts-plain dt {
4629
+ color: var(--sc-color-text-muted);
4630
+ font-size: var(--sc-text-sm);
4631
+ font-weight: var(--sc-weight-medium);
4632
+ letter-spacing: 0;
4633
+ text-transform: none;
4634
+ }
4635
+
4636
+ .sc-facts-plain dd {
4637
+ margin-top: 0;
4638
+ font-size: var(--sc-text-md);
4639
+ overflow-wrap: anywhere;
4640
+ }
4641
+
4642
+ @media (max-width: 40rem) {
4643
+ .sc-facts-plain > * {
4644
+ grid-template-columns: minmax(0, 1fr);
4645
+ }
4646
+ }
4647
+
3823
4648
  /* A fact that needs the whole row: a description. */
3824
4649
  .sc-facts-wide {
3825
4650
  grid-column: 1 / -1;
@@ -3875,7 +4700,7 @@ table {
3875
4700
 
3876
4701
  .sc-timeline-title {
3877
4702
  margin: 0;
3878
- font-size: var(--sc-text-base);
4703
+ font-size: var(--sc-text-md);
3879
4704
  font-weight: var(--sc-weight-medium);
3880
4705
  }
3881
4706
 
@@ -3892,14 +4717,19 @@ table {
3892
4717
  gap: var(--sc-space-2);
3893
4718
  }
3894
4719
 
4720
+ /* A label keeps to one line, so that every row is as tall as its bar and the labels line up with
4721
+ the bars: a long title is cut short, said in full on hover, and the state stays beside it. */
3895
4722
  .sc-timeline-label {
3896
4723
  display: flex;
3897
- flex-wrap: wrap;
3898
4724
  align-items: center;
3899
4725
  gap: var(--sc-space-2);
3900
4726
  min-width: 0;
3901
4727
  }
3902
4728
 
4729
+ .sc-timeline-label .sc-badge {
4730
+ flex: none;
4731
+ }
4732
+
3903
4733
  .sc-timeline-goal {
3904
4734
  color: var(--sc-color-text);
3905
4735
  font-size: var(--sc-text-sm);
@@ -3907,6 +4737,13 @@ table {
3907
4737
  overflow-wrap: anywhere;
3908
4738
  }
3909
4739
 
4740
+ .sc-timeline-label .sc-timeline-goal {
4741
+ min-width: 0;
4742
+ overflow: hidden;
4743
+ text-overflow: ellipsis;
4744
+ white-space: nowrap;
4745
+ }
4746
+
3910
4747
  .sc-timeline-goal:hover {
3911
4748
  color: var(--sc-color-accent);
3912
4749
  }
@@ -3946,7 +4783,7 @@ table {
3946
4783
  width: 2px;
3947
4784
  margin-left: -1px;
3948
4785
  background: var(--sc-color-accent);
3949
- opacity: 0.7;
4786
+ opacity: 0.55;
3950
4787
  }
3951
4788
 
3952
4789
  .sc-timeline-today-mark {
@@ -3962,7 +4799,8 @@ table {
3962
4799
  display: flex;
3963
4800
  align-items: center;
3964
4801
  overflow: hidden;
3965
- border-block: 1px solid color-mix(in srgb, var(--sc-category-line) 45%, transparent);
4802
+ border-block: 1px solid
4803
+ color-mix(in srgb, var(--sc-category-mark, var(--sc-category-line)) 60%, transparent);
3966
4804
  background: var(--sc-category-fill);
3967
4805
  color: var(--sc-category-line);
3968
4806
  font-size: var(--sc-text-xs);
@@ -3971,17 +4809,19 @@ table {
3971
4809
  }
3972
4810
 
3973
4811
  .sc-timeline-bar:hover {
3974
- background: color-mix(in srgb, var(--sc-category-fill), white 12%);
4812
+ background: color-mix(in srgb, var(--sc-category-fill), var(--sc-category-line) 14%);
3975
4813
  }
3976
4814
 
3977
4815
  .sc-timeline-bar.sc-timeline-bar-begins {
3978
- border-left: 1px solid color-mix(in srgb, var(--sc-category-line) 45%, transparent);
4816
+ border-left: 1px solid
4817
+ color-mix(in srgb, var(--sc-category-mark, var(--sc-category-line)) 60%, transparent);
3979
4818
  border-start-start-radius: var(--sc-radius-full);
3980
4819
  border-end-start-radius: var(--sc-radius-full);
3981
4820
  }
3982
4821
 
3983
4822
  .sc-timeline-bar.sc-timeline-bar-ends {
3984
- border-right: 1px solid color-mix(in srgb, var(--sc-category-line) 45%, transparent);
4823
+ border-right: 1px solid
4824
+ color-mix(in srgb, var(--sc-category-mark, var(--sc-category-line)) 60%, transparent);
3985
4825
  border-start-end-radius: var(--sc-radius-full);
3986
4826
  border-end-end-radius: var(--sc-radius-full);
3987
4827
  }
@@ -3991,7 +4831,7 @@ table {
3991
4831
  top: 0;
3992
4832
  bottom: 0;
3993
4833
  left: 0;
3994
- background: color-mix(in srgb, var(--sc-category-line) 35%, transparent);
4834
+ background: color-mix(in srgb, var(--sc-category-mark, var(--sc-category-line)) 40%, transparent);
3995
4835
  }
3996
4836
 
3997
4837
  .sc-timeline-words {
@@ -4006,18 +4846,19 @@ table {
4006
4846
  height: 0.75rem;
4007
4847
  margin-left: -0.375rem;
4008
4848
  transform: translateY(-50%) rotate(45deg);
4009
- border: 1px solid color-mix(in srgb, var(--sc-category-line) 60%, transparent);
4849
+ border: 1px solid
4850
+ color-mix(in srgb, var(--sc-category-mark, var(--sc-category-line)) 75%, transparent);
4010
4851
  background: var(--sc-category-fill);
4011
4852
  }
4012
4853
 
4013
4854
  .sc-goal-done .sc-timeline-bar,
4014
4855
  .sc-goal-done .sc-timeline-point {
4015
- opacity: 0.6;
4856
+ opacity: 0.55;
4016
4857
  }
4017
4858
 
4018
4859
  .sc-goal-dropped .sc-timeline-bar,
4019
4860
  .sc-goal-dropped .sc-timeline-point {
4020
- opacity: 0.4;
4861
+ opacity: 0.55;
4021
4862
  }
4022
4863
 
4023
4864
  .sc-timeline-undated {
@@ -4026,6 +4867,7 @@ table {
4026
4867
  }
4027
4868
 
4028
4869
  .sc-goal-days {
4870
+ margin-inline-start: auto;
4029
4871
  color: var(--sc-color-text-muted);
4030
4872
  font-size: var(--sc-text-xs);
4031
4873
  }
@@ -4039,7 +4881,7 @@ table {
4039
4881
  color: var(--sc-category-line, var(--sc-color-text));
4040
4882
  font-size: var(--sc-text-xs);
4041
4883
  font-weight: var(--sc-weight-medium);
4042
- line-height: 1.2;
4884
+ line-height: var(--sc-leading-tight);
4043
4885
  text-decoration: none;
4044
4886
  }
4045
4887
 
@@ -4053,13 +4895,18 @@ table {
4053
4895
  width: 0.5rem;
4054
4896
  height: 0.5rem;
4055
4897
  transform: rotate(45deg);
4056
- background: var(--sc-category-line, var(--sc-color-text-faint));
4898
+ background: var(--sc-category-mark, var(--sc-category-line, var(--sc-color-text-faint)));
4057
4899
  }
4058
4900
 
4059
4901
  @media (max-width: 40rem) {
4060
4902
  .sc-timeline-row {
4061
4903
  grid-template-columns: minmax(6rem, 8rem) minmax(16rem, 1fr);
4062
4904
  }
4905
+
4906
+ /* A narrow label is the title's: the goal's state is on its card below the months. */
4907
+ .sc-timeline-label .sc-badge {
4908
+ display: none;
4909
+ }
4063
4910
  }
4064
4911
 
4065
4912
  /* A card is dragged to another column from anywhere on it but its menu, its title included: with
@@ -4083,7 +4930,7 @@ table {
4083
4930
  }
4084
4931
 
4085
4932
  .sc-card-dragging {
4086
- opacity: 0.4;
4933
+ opacity: 0.55;
4087
4934
  }
4088
4935
 
4089
4936
  .sc-board-dragging,
@@ -4138,7 +4985,7 @@ table {
4138
4985
  }
4139
4986
 
4140
4987
  .sc-card-menu-button:focus-visible {
4141
- outline: 2px solid var(--sc-color-accent);
4988
+ outline: var(--sc-focus-ring);
4142
4989
  outline-offset: 1px;
4143
4990
  }
4144
4991
 
@@ -4172,7 +5019,7 @@ table {
4172
5019
  }
4173
5020
 
4174
5021
  .sc-column-over {
4175
- outline: 2px solid var(--sc-color-accent);
5022
+ outline: var(--sc-focus-ring);
4176
5023
  outline-offset: -2px;
4177
5024
  }
4178
5025
 
@@ -4214,26 +5061,37 @@ table {
4214
5061
  font-size: var(--sc-text-sm);
4215
5062
  }
4216
5063
 
5064
+ .sc-goal-progress .sc-progress-words {
5065
+ display: none;
5066
+ }
5067
+
4217
5068
  .sc-facts-row {
4218
5069
  display: flex;
4219
5070
  flex-wrap: wrap;
4220
- align-items: center;
4221
- gap: var(--sc-space-2) var(--sc-space-5);
5071
+ align-items: stretch;
5072
+ gap: var(--sc-space-3) 0;
4222
5073
  margin: 0;
4223
5074
  font-size: var(--sc-text-sm);
4224
5075
  }
4225
5076
 
4226
5077
  .sc-facts-row > div {
4227
- display: flex;
4228
- align-items: center;
4229
- gap: var(--sc-space-2);
5078
+ display: grid;
5079
+ align-content: start;
5080
+ gap: var(--sc-space-1);
5081
+ padding-inline: var(--sc-space-4);
5082
+ border-inline-start: var(--sc-hairline);
4230
5083
  }
4231
5084
 
4232
- .sc-facts-row dt {
4233
- color: var(--sc-color-text-muted);
5085
+ .sc-facts-row > div:first-child {
5086
+ padding-inline-start: 0;
5087
+ border-inline-start: 0;
4234
5088
  }
4235
5089
 
4236
5090
  .sc-facts-row dd {
5091
+ display: flex;
5092
+ flex-wrap: wrap;
5093
+ align-items: center;
5094
+ gap: var(--sc-space-2);
4237
5095
  margin: 0;
4238
5096
  }
4239
5097
 
@@ -4424,7 +5282,7 @@ table {
4424
5282
 
4425
5283
  .sc-pack-code {
4426
5284
  font-size: var(--sc-text-xl);
4427
- letter-spacing: 0.12em;
5285
+ letter-spacing: var(--sc-tracking-code);
4428
5286
  }
4429
5287
 
4430
5288
  .sc-pack-connect-waiting {
@@ -4438,3 +5296,406 @@ table {
4438
5296
  .sc-pack-actions {
4439
5297
  margin-top: var(--sc-space-5);
4440
5298
  }
5299
+
5300
+ /* Beside a task the facts stand in one column, a hairline between each. */
5301
+ .sc-task-aside .sc-facts {
5302
+ grid-template-columns: minmax(0, 1fr);
5303
+ gap: 0;
5304
+ padding-block: var(--sc-space-2);
5305
+ }
5306
+
5307
+ .sc-task-aside .sc-facts > * {
5308
+ padding: var(--sc-space-2) 0;
5309
+ }
5310
+
5311
+ .sc-task-aside .sc-facts > * + * {
5312
+ border-top: var(--sc-hairline);
5313
+ }
5314
+
5315
+ /* A phone's pages, one by one. */
5316
+ @media (max-width: 40rem) {
5317
+ /* The board: a column nearly as wide as the window, so that a card's title has room and one
5318
+ column is read at a time, the next peeking in from the side. */
5319
+ .sc-column {
5320
+ flex-basis: min(18rem, 82vw);
5321
+ }
5322
+
5323
+ /* The filters scroll as a row; a select with long choices keeps to a width of its own. */
5324
+ .sc-filters .sc-input {
5325
+ max-width: 11rem;
5326
+ }
5327
+
5328
+ /* A task's facts: one to a row, as on the wide layout's side, instead of two abreast with
5329
+ the select and the dates pressed against each other. */
5330
+ .sc-task .sc-task-aside .sc-facts {
5331
+ grid-template-columns: minmax(0, 1fr);
5332
+ }
5333
+
5334
+ .sc-facts .sc-input {
5335
+ max-width: 100%;
5336
+ }
5337
+
5338
+ /* A goal's card: the badges on one line, the span of days on a line of its own. */
5339
+ .sc-goal-days {
5340
+ flex: 1 1 100%;
5341
+ margin-inline-start: 0;
5342
+ }
5343
+
5344
+ /* The goal page's progress: the words under the bar. */
5345
+ .sc-goal-progress {
5346
+ grid-template-columns: minmax(0, 1fr);
5347
+ gap: var(--sc-space-1);
5348
+ }
5349
+
5350
+ /* The roadmap's months: too narrow for the year and the month on one line, so the two
5351
+ stand one over the other, small. */
5352
+ .sc-timeline-month {
5353
+ padding-inline: 2px;
5354
+ font-size: 0.6rem;
5355
+ line-height: var(--sc-leading-tight);
5356
+ white-space: normal;
5357
+ word-break: keep-all;
5358
+ overflow: visible;
5359
+ text-overflow: clip;
5360
+ }
5361
+
5362
+ /* A bar on the month reaches over the gap between the cells, which is narrower here. */
5363
+ .sc-calendar-bar {
5364
+ margin-inline: calc(-1 * var(--sc-space-1) - 2px - 1px);
5365
+ }
5366
+
5367
+ .sc-calendar-bar-begins {
5368
+ margin-left: 0;
5369
+ }
5370
+
5371
+ .sc-calendar-bar-ends {
5372
+ margin-right: 0;
5373
+ }
5374
+
5375
+ /* "N more" on a day keeps to one line, small enough for the cell. */
5376
+ .sc-calendar-more {
5377
+ padding-inline: 0;
5378
+ font-size: 0.65rem;
5379
+ overflow: hidden;
5380
+ white-space: nowrap;
5381
+ text-overflow: ellipsis;
5382
+ }
5383
+
5384
+ /* A bar reaching past the week stops at the edge of the month. */
5385
+ .sc-calendar-grid {
5386
+ clip-path: inset(0);
5387
+ }
5388
+ }
5389
+
5390
+ /* A phone's pages as one design. */
5391
+ @media (max-width: 40rem) {
5392
+ /* Every page's head: the name, a word about it under the name, and the ways the page offers
5393
+ as a row of equal buttons under those, so that no head differs from another. */
5394
+ .sc-page-head {
5395
+ display: grid;
5396
+ justify-content: stretch;
5397
+ gap: var(--sc-space-3);
5398
+ margin-bottom: var(--sc-space-5);
5399
+ }
5400
+
5401
+ .sc-page-heading {
5402
+ display: grid;
5403
+ row-gap: var(--sc-space-1);
5404
+ }
5405
+
5406
+ .sc-page-lead {
5407
+ flex: none;
5408
+ }
5409
+
5410
+ .sc-page-actions {
5411
+ flex-wrap: nowrap;
5412
+ width: 100%;
5413
+ }
5414
+
5415
+ .sc-page-actions > * {
5416
+ flex: 1 1 0;
5417
+ justify-content: center;
5418
+ min-width: 0;
5419
+ }
5420
+
5421
+ /* A head with one way alone gives it the whole width too. */
5422
+ .sc-page-head > .sc-button {
5423
+ width: 100%;
5424
+ justify-content: center;
5425
+ }
5426
+
5427
+ /* The tabs snap tab by tab, the first keeping its room from the edge. */
5428
+ .sc-tabs {
5429
+ scroll-snap-type: x proximity;
5430
+ scroll-padding-inline: var(--sc-space-4);
5431
+ }
5432
+
5433
+ .sc-tab {
5434
+ scroll-snap-align: start;
5435
+ }
5436
+
5437
+ /* The panes: one padding and one radius for all of them. */
5438
+ .sc-project,
5439
+ .sc-goal,
5440
+ .sc-skill,
5441
+ .sc-run,
5442
+ .sc-decision,
5443
+ .sc-comment,
5444
+ .sc-facts {
5445
+ padding: var(--sc-space-4);
5446
+ border-radius: var(--sc-radius-lg);
5447
+ }
5448
+
5449
+ /* The board scrolls from edge to edge of the window, its columns snapping into place. */
5450
+ .sc-board {
5451
+ min-height: 0;
5452
+ margin-inline: calc(-1 * var(--sc-space-4));
5453
+ padding-inline: var(--sc-space-4);
5454
+ scroll-padding-inline: var(--sc-space-4);
5455
+ }
5456
+
5457
+ .sc-filters {
5458
+ margin-bottom: var(--sc-space-4);
5459
+ }
5460
+
5461
+ /* A task's head: the parent on one line, the title, the badges, then the ways as a row of
5462
+ equal buttons. */
5463
+ .sc-task-header {
5464
+ display: grid;
5465
+ justify-content: stretch;
5466
+ gap: var(--sc-space-3);
5467
+ }
5468
+
5469
+ .sc-task-parent {
5470
+ overflow: hidden;
5471
+ white-space: nowrap;
5472
+ text-overflow: ellipsis;
5473
+ }
5474
+
5475
+ .sc-task-actions {
5476
+ flex-wrap: nowrap;
5477
+ align-items: stretch;
5478
+ }
5479
+
5480
+ .sc-task-actions > * {
5481
+ flex: 1 1 0;
5482
+ justify-content: center;
5483
+ min-width: 0;
5484
+ }
5485
+
5486
+ /* The calendar's legend, tighter; what is under the month, further apart. */
5487
+ .sc-calendar-legend {
5488
+ gap: var(--sc-space-1) var(--sc-space-3);
5489
+ }
5490
+
5491
+ .sc-calendar-below {
5492
+ gap: var(--sc-space-6);
5493
+ }
5494
+
5495
+ /* The roadmap's label column, narrower, so that the months have the room. */
5496
+ .sc-timeline-row {
5497
+ grid-template-columns: minmax(5.5rem, 7rem) minmax(14rem, 1fr);
5498
+ }
5499
+ }
5500
+
5501
+ /* A phone's month: a dot per task per day. */
5502
+ @media (max-width: 40rem) {
5503
+ .sc-calendar-cell {
5504
+ height: auto;
5505
+ min-height: 3.25rem;
5506
+ padding: 2px var(--sc-space-1) var(--sc-space-1);
5507
+ /* The rows of dots as tall as the dots, not as tall as a line of text. */
5508
+ line-height: 0;
5509
+ }
5510
+
5511
+ .sc-calendar-day,
5512
+ .sc-calendar-more {
5513
+ line-height: var(--sc-leading-snug);
5514
+ }
5515
+
5516
+ .sc-calendar-lane {
5517
+ display: none;
5518
+ }
5519
+
5520
+ /* A task planned across days: a dot on each of its days, in its category's colour, the
5521
+ late one in the danger colour; nothing of the bar remains. */
5522
+ .sc-calendar-bar,
5523
+ .sc-calendar-bar-begins,
5524
+ .sc-calendar-bar-ends {
5525
+ display: inline-block;
5526
+ width: 0.5rem;
5527
+ height: 0.5rem;
5528
+ margin: 2px 3px 0 0;
5529
+ padding: 0;
5530
+ border: 0;
5531
+ border-radius: var(--sc-radius-full);
5532
+ background: var(--sc-category-mark, var(--sc-category-line));
5533
+ vertical-align: top;
5534
+ }
5535
+
5536
+ .sc-calendar-bar.sc-calendar-late {
5537
+ background: var(--sc-color-danger);
5538
+ }
5539
+
5540
+ /* A task on its day: the same dot. */
5541
+ .sc-calendar-task {
5542
+ margin: 2px 3px 0 0;
5543
+ vertical-align: top;
5544
+ }
5545
+
5546
+ .sc-calendar-dot {
5547
+ width: 0.5rem;
5548
+ height: 0.5rem;
5549
+ }
5550
+
5551
+ .sc-calendar-more {
5552
+ margin-top: 2px;
5553
+ text-align: left;
5554
+ }
5555
+ }
5556
+
5557
+ /* A day's number is a button: pressed, the day's tasks are listed under the month. */
5558
+ .sc-calendar-day[type="button"] {
5559
+ width: auto;
5560
+ margin-inline-start: calc(-1 * var(--sc-space-1));
5561
+ padding: 0 var(--sc-space-1);
5562
+ border: 0;
5563
+ border-radius: var(--sc-radius-sm);
5564
+ background: transparent;
5565
+ color: inherit;
5566
+ font: inherit;
5567
+ font-size: var(--sc-text-xs);
5568
+ font-weight: var(--sc-weight-medium);
5569
+ line-height: var(--sc-leading-snug);
5570
+ text-align: left;
5571
+ cursor: pointer;
5572
+ }
5573
+
5574
+ .sc-calendar-day[type="button"]:hover {
5575
+ background: var(--sc-color-sheet-hover);
5576
+ }
5577
+
5578
+ .sc-calendar-day[aria-pressed="true"] {
5579
+ background: var(--sc-color-accent);
5580
+ color: #ffffff;
5581
+ }
5582
+
5583
+ .sc-calendar-cell-picked {
5584
+ border-color: var(--sc-color-accent);
5585
+ background: color-mix(in srgb, var(--sc-color-accent) 6%, var(--sc-color-sheet));
5586
+ }
5587
+
5588
+ /* The tasks of the picked day, under the month: a pane with the day over the rows. */
5589
+ .sc-calendar-day-list {
5590
+ display: grid;
5591
+ gap: var(--sc-space-3);
5592
+ margin-top: var(--sc-space-4);
5593
+ padding: var(--sc-space-4);
5594
+ border: var(--sc-border);
5595
+ border-radius: var(--sc-radius-lg);
5596
+ background: var(--sc-color-sheet);
5597
+ }
5598
+
5599
+ .sc-calendar-day-list-head {
5600
+ display: flex;
5601
+ align-items: center;
5602
+ justify-content: space-between;
5603
+ gap: var(--sc-space-2);
5604
+ }
5605
+
5606
+ .sc-calendar-day-list-title {
5607
+ display: flex;
5608
+ align-items: center;
5609
+ gap: var(--sc-space-2);
5610
+ margin: 0;
5611
+ font-size: var(--sc-text-md);
5612
+ font-weight: var(--sc-weight-bold);
5613
+ }
5614
+
5615
+ /* How many a day holds: said on a phone, where the day shows three dots and no more. */
5616
+ .sc-calendar-count {
5617
+ display: none;
5618
+ }
5619
+
5620
+ @media (max-width: 40rem) {
5621
+ /* The number covers the whole day, so that a finger anywhere on it lists the day's tasks;
5622
+ the dots and the count under it are a picture, not targets. */
5623
+ .sc-calendar-cell {
5624
+ position: relative;
5625
+ padding-top: 1.375rem;
5626
+ }
5627
+
5628
+ .sc-calendar-day[type="button"] {
5629
+ position: absolute;
5630
+ inset: 0;
5631
+ z-index: 1;
5632
+ display: flex;
5633
+ align-items: flex-start;
5634
+ justify-content: flex-start;
5635
+ width: auto;
5636
+ margin: 0;
5637
+ padding: 2px var(--sc-space-1);
5638
+ border-radius: var(--sc-radius-md);
5639
+ }
5640
+
5641
+ /* No pointer rests on a phone; a finger that tapped must not leave a sheet over the dots. */
5642
+ .sc-calendar-day[type="button"]:hover {
5643
+ background: transparent;
5644
+ }
5645
+
5646
+ .sc-calendar-day[aria-pressed="true"] {
5647
+ background: transparent;
5648
+ color: var(--sc-color-accent);
5649
+ font-weight: var(--sc-weight-bold);
5650
+ }
5651
+
5652
+ .sc-calendar-cell > a,
5653
+ .sc-calendar-cell > .sc-calendar-more {
5654
+ pointer-events: none;
5655
+ }
5656
+
5657
+ .sc-calendar-cell > a:nth-of-type(n + 4),
5658
+ .sc-calendar-cell > .sc-calendar-more {
5659
+ display: none;
5660
+ }
5661
+
5662
+ .sc-calendar-count {
5663
+ display: block;
5664
+ width: fit-content;
5665
+ min-width: 1rem;
5666
+ margin-top: 3px;
5667
+ padding: 0 4px;
5668
+ border-radius: var(--sc-radius-full);
5669
+ background: color-mix(in srgb, var(--sc-color-text-muted) 14%, transparent);
5670
+ color: var(--sc-color-text-muted);
5671
+ font-size: 0.625rem;
5672
+ font-weight: var(--sc-weight-medium);
5673
+ line-height: 1rem;
5674
+ text-align: center;
5675
+ }
5676
+
5677
+ .sc-calendar-day-list {
5678
+ margin-top: var(--sc-space-3);
5679
+ }
5680
+ }
5681
+
5682
+ /* The end of a phone's header: the live dot, the avatar and the caret close together. */
5683
+ @media (max-width: 40rem) {
5684
+ .sc-header-end {
5685
+ gap: 0;
5686
+ }
5687
+
5688
+ .sc-menu-summary {
5689
+ gap: var(--sc-space-1);
5690
+ padding-inline: var(--sc-space-1);
5691
+ }
5692
+ }
5693
+
5694
+ /* The ways under a comment's field stand on one row at one height, the small file button
5695
+ included, so that none sits lower than the one beside it. */
5696
+ .sc-comment-form-actions > .sc-button,
5697
+ .sc-comment-form-actions > label {
5698
+ min-height: var(--sc-control-size);
5699
+ padding-inline: var(--sc-space-4);
5700
+ font-size: var(--sc-text-sm);
5701
+ }