@skillcdn/console 0.3.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/README.md +3 -3
  2. package/dist/api.d.ts +1 -1
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +1 -1
  5. package/dist/api.js.map +1 -1
  6. package/dist/cli/cli.d.ts.map +1 -1
  7. package/dist/cli/cli.js +96 -7
  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 +48 -17
  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 +7 -2
  20. package/dist/client.d.ts.map +1 -1
  21. package/dist/client.js +7 -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/my-decisions.d.ts +20 -0
  48. package/dist/components/my-decisions.d.ts.map +1 -0
  49. package/dist/components/my-decisions.js +36 -0
  50. package/dist/components/my-decisions.js.map +1 -0
  51. package/dist/components/people.d.ts.map +1 -1
  52. package/dist/components/people.js +1 -1
  53. package/dist/components/people.js.map +1 -1
  54. package/dist/components/projects.d.ts.map +1 -1
  55. package/dist/components/projects.js +3 -3
  56. package/dist/components/projects.js.map +1 -1
  57. package/dist/components/roadmap.js +1 -1
  58. package/dist/components/roadmap.js.map +1 -1
  59. package/dist/components/runs.d.ts.map +1 -1
  60. package/dist/components/runs.js +1 -1
  61. package/dist/components/runs.js.map +1 -1
  62. package/dist/components/shell.d.ts.map +1 -1
  63. package/dist/components/shell.js +36 -1
  64. package/dist/components/shell.js.map +1 -1
  65. package/dist/components/task-list.js +1 -1
  66. package/dist/components/task-list.js.map +1 -1
  67. package/dist/components/task-view.d.ts.map +1 -1
  68. package/dist/components/task-view.js +2 -2
  69. package/dist/components/task-view.js.map +1 -1
  70. package/dist/components/ui.d.ts +10 -0
  71. package/dist/components/ui.d.ts.map +1 -1
  72. package/dist/components/ui.js +15 -11
  73. package/dist/components/ui.js.map +1 -1
  74. package/dist/console.css +1642 -433
  75. package/dist/console.d.ts.map +1 -1
  76. package/dist/console.js +70 -7
  77. package/dist/console.js.map +1 -1
  78. package/dist/data.d.ts +11 -1
  79. package/dist/data.d.ts.map +1 -1
  80. package/dist/data.js +2 -0
  81. package/dist/data.js.map +1 -1
  82. package/dist/i18n/en.d.ts +34 -0
  83. package/dist/i18n/en.d.ts.map +1 -1
  84. package/dist/i18n/en.js +36 -2
  85. package/dist/i18n/en.js.map +1 -1
  86. package/dist/i18n/ko.d.ts.map +1 -1
  87. package/dist/i18n/ko.js +37 -3
  88. package/dist/i18n/ko.js.map +1 -1
  89. package/dist/index.d.ts +3 -2
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +3 -2
  92. package/dist/index.js.map +1 -1
  93. package/dist/router.d.ts +9 -1
  94. package/dist/router.d.ts.map +1 -1
  95. package/dist/router.js +12 -0
  96. package/dist/router.js.map +1 -1
  97. package/dist/routes.d.ts +3 -1
  98. package/dist/routes.d.ts.map +1 -1
  99. package/dist/routes.js +3 -1
  100. package/dist/routes.js.map +1 -1
  101. package/dist/rules.js +1 -1
  102. package/dist/rules.js.map +1 -1
  103. package/dist/schemas.d.ts +242 -3
  104. package/dist/schemas.d.ts.map +1 -1
  105. package/dist/schemas.js +18 -4
  106. package/dist/schemas.js.map +1 -1
  107. package/docs/specs/cli.md +6 -5
  108. package/docs/specs/rest.md +11 -6
  109. package/package.json +2 -2
  110. package/skills/building-a-console/SKILL.md +3 -3
  111. package/skills/building-a-console/references/the-default-console.md +4 -4
  112. package/skills/building-a-console/references/the-look-from-a-website.md +5 -5
  113. package/skills/working-the-board/SKILL.md +6 -4
  114. package/skills/working-the-board/references/terms.md +1 -1
  115. package/src/api.ts +2 -0
  116. package/src/cli/cli.ts +123 -7
  117. package/src/cli/format.ts +11 -4
  118. package/src/cli/help.ts +49 -16
  119. package/src/cli/pack.ts +17 -1
  120. package/src/client.ts +21 -1
  121. package/src/compat.ts +2 -2
  122. package/src/components/board.tsx +114 -21
  123. package/src/components/calendar.tsx +207 -102
  124. package/src/components/decision-form.tsx +71 -23
  125. package/src/components/decision-list.tsx +30 -3
  126. package/src/components/documents.tsx +27 -11
  127. package/src/components/event-feed.tsx +116 -33
  128. package/src/components/my-decisions.tsx +138 -0
  129. package/src/components/people.tsx +3 -1
  130. package/src/components/projects.tsx +7 -5
  131. package/src/components/roadmap.tsx +1 -1
  132. package/src/components/runs.tsx +5 -1
  133. package/src/components/shell.tsx +36 -1
  134. package/src/components/task-list.tsx +1 -1
  135. package/src/components/task-view.tsx +48 -47
  136. package/src/components/ui.tsx +64 -11
  137. package/src/console.tsx +129 -27
  138. package/src/data.ts +17 -0
  139. package/src/i18n/en.ts +38 -2
  140. package/src/i18n/ko.ts +39 -3
  141. package/src/index.ts +3 -0
  142. package/src/router.ts +18 -1
  143. package/src/routes.ts +3 -1
  144. package/src/rules.ts +1 -1
  145. package/src/schemas.ts +20 -4
  146. package/src/styles/console.css +1642 -433
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);
@@ -1932,6 +2186,11 @@ table {
1932
2186
  overflow-wrap: anywhere;
1933
2187
  }
1934
2188
 
2189
+ /* The text of a task and of a page is read at length: at the size of reading. */
2190
+ .sc-task-main > .sc-prose {
2191
+ font-size: var(--sc-text-md);
2192
+ }
2193
+
1935
2194
  .sc-prose > * + * {
1936
2195
  margin-top: var(--sc-space-4);
1937
2196
  }
@@ -2067,12 +2326,24 @@ table {
2067
2326
  .sc-token-meta {
2068
2327
  display: flex;
2069
2328
  flex-wrap: wrap;
2070
- gap: var(--sc-space-3);
2329
+ gap: var(--sc-space-1) var(--sc-space-3);
2071
2330
  margin-top: var(--sc-space-1);
2072
2331
  color: var(--sc-color-text-muted);
2073
2332
  font-size: var(--sc-text-sm);
2074
2333
  }
2075
2334
 
2335
+ .sc-token-meta > span {
2336
+ display: inline-flex;
2337
+ flex-wrap: wrap;
2338
+ align-items: center;
2339
+ gap: var(--sc-space-1);
2340
+ }
2341
+
2342
+ .sc-token-meta > span + span {
2343
+ padding-inline-start: var(--sc-space-3);
2344
+ border-inline-start: var(--sc-hairline);
2345
+ }
2346
+
2076
2347
  .sc-secret {
2077
2348
  display: flex;
2078
2349
  flex-wrap: wrap;
@@ -2091,24 +2362,40 @@ table {
2091
2362
  user-select: all;
2092
2363
  }
2093
2364
 
2094
- /* People: everyone of the board, with what each may do. */
2365
+ /* People: everyone of the board, with what each may do, as cards in a grid: the person on the
2366
+ first line, the account and where it came from on the second, what they are and the ways to
2367
+ their work on the third. */
2095
2368
 
2096
2369
  .sc-people {
2097
2370
  display: grid;
2098
- gap: var(--sc-space-2);
2371
+ grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr));
2372
+ gap: var(--sc-space-3);
2099
2373
  }
2100
2374
 
2101
2375
  .sc-person-row {
2102
2376
  display: flex;
2103
2377
  flex-wrap: wrap;
2104
2378
  align-items: center;
2105
- gap: var(--sc-space-3);
2106
- padding: var(--sc-space-3) var(--sc-space-4);
2379
+ gap: var(--sc-space-2) var(--sc-space-3);
2380
+ padding: var(--sc-space-4);
2107
2381
  border-radius: var(--sc-radius-lg);
2108
2382
  }
2109
2383
 
2384
+ .sc-person-row > .sc-person {
2385
+ flex: 0 1 auto;
2386
+ min-width: 0;
2387
+ }
2388
+
2389
+ /* That this person is the reader: beside the name on the first line. */
2390
+ .sc-person-you {
2391
+ margin-inline-start: calc(var(--sc-space-1) - var(--sc-space-3));
2392
+ color: var(--sc-color-text-faint);
2393
+ font-size: var(--sc-text-xs);
2394
+ }
2395
+
2110
2396
  .sc-person-name {
2111
- flex: 1;
2397
+ flex: 1 1 100%;
2398
+ min-width: 0;
2112
2399
  color: var(--sc-color-text-muted);
2113
2400
  font-size: var(--sc-text-sm);
2114
2401
  }
@@ -2118,13 +2405,19 @@ table {
2118
2405
  font-size: var(--sc-text-xs);
2119
2406
  }
2120
2407
 
2408
+ /* What a person is, or the way to change it: the last line, a step under the account. */
2409
+ .sc-person-row > .sc-badge,
2410
+ .sc-person-row > .sc-field-inline {
2411
+ margin-top: var(--sc-space-1);
2412
+ }
2413
+
2121
2414
  /* Those let in and not signed in yet, and those deactivated: sections below everyone in. */
2122
2415
  .sc-people-section {
2123
2416
  margin-top: var(--sc-space-6);
2124
2417
  }
2125
2418
 
2126
2419
  .sc-person-row-out .sc-person {
2127
- opacity: 0.7;
2420
+ opacity: 0.55;
2128
2421
  }
2129
2422
 
2130
2423
  .sc-listing-form .sc-field-row {
@@ -2164,19 +2457,38 @@ table {
2164
2457
  box-shadow: var(--sc-glass-sheen), var(--sc-glass-lift), var(--sc-glow);
2165
2458
  }
2166
2459
 
2460
+ /* The head of a project reads on three lines: the mark with the name beside it, the key under
2461
+ the name, and the badges on a line of their own; the mark floats so that the name and the key
2462
+ stack beside it without a box around them. */
2167
2463
  .sc-project-head {
2168
- display: flex;
2169
- flex-wrap: wrap;
2170
- align-items: center;
2171
- gap: var(--sc-space-2) var(--sc-space-3);
2464
+ display: block;
2465
+ }
2466
+
2467
+ .sc-project-head::after {
2468
+ content: "";
2469
+ display: block;
2470
+ clear: both;
2471
+ }
2472
+
2473
+ .sc-project-head > :first-child {
2474
+ float: left;
2475
+ margin-inline-end: var(--sc-space-3);
2476
+ }
2477
+
2478
+ .sc-project-head > .sc-badge {
2479
+ margin-top: var(--sc-space-3);
2480
+ margin-inline-end: var(--sc-space-1);
2172
2481
  }
2173
2482
 
2174
2483
  /* The whole pane is the way in: the name's link stretches over it. */
2175
2484
  .sc-project-name {
2485
+ display: block;
2176
2486
  color: var(--sc-color-text);
2177
2487
  font-size: var(--sc-text-lg);
2178
2488
  font-weight: var(--sc-weight-bold);
2489
+ line-height: var(--sc-leading-snug);
2179
2490
  text-decoration: none;
2491
+ overflow-wrap: anywhere;
2180
2492
  }
2181
2493
 
2182
2494
  .sc-project-name::after {
@@ -2198,7 +2510,21 @@ table {
2198
2510
  font-size: var(--sc-text-xs);
2199
2511
  }
2200
2512
 
2513
+ /* Under the name, and past the mark: the key ends below the mark, so that the badges after it
2514
+ start at the edge. */
2515
+ .sc-project-head > .sc-project-key {
2516
+ display: block;
2517
+ margin-top: var(--sc-space-1);
2518
+ }
2519
+
2520
+ .sc-project-head > .sc-project-key::after {
2521
+ content: "";
2522
+ display: block;
2523
+ clear: both;
2524
+ }
2525
+
2201
2526
  .sc-project-description {
2527
+ margin-top: var(--sc-space-1);
2202
2528
  color: var(--sc-color-text-muted);
2203
2529
  font-size: var(--sc-text-sm);
2204
2530
  }
@@ -2208,7 +2534,8 @@ table {
2208
2534
  flex-wrap: wrap;
2209
2535
  gap: var(--sc-space-2);
2210
2536
  margin-top: auto;
2211
- padding-top: var(--sc-space-2);
2537
+ padding-top: var(--sc-space-3);
2538
+ border-top: var(--sc-hairline);
2212
2539
  }
2213
2540
 
2214
2541
  .sc-project-meta:empty {
@@ -2220,6 +2547,14 @@ table {
2220
2547
  gap: var(--sc-space-4);
2221
2548
  }
2222
2549
 
2550
+ /* What a member is in the project, and their office in the organization beside it, small. */
2551
+ .sc-member-role {
2552
+ display: inline-flex;
2553
+ align-items: center;
2554
+ gap: var(--sc-space-2);
2555
+ font-size: var(--sc-text-sm);
2556
+ }
2557
+
2223
2558
  .sc-member-form .sc-field-row {
2224
2559
  align-items: end;
2225
2560
  }
@@ -2228,11 +2563,14 @@ table {
2228
2563
 
2229
2564
  .sc-skills {
2230
2565
  display: grid;
2231
- gap: var(--sc-space-2);
2566
+ grid-template-columns: repeat(auto-fill, minmax(min(100%, 26rem), 1fr));
2567
+ gap: var(--sc-space-3);
2232
2568
  }
2233
2569
 
2234
2570
  .sc-skill {
2235
- padding: var(--sc-space-3) var(--sc-space-4);
2571
+ display: grid;
2572
+ align-content: start;
2573
+ padding: var(--sc-space-4) var(--sc-space-5);
2236
2574
  border-radius: var(--sc-radius-lg);
2237
2575
  }
2238
2576
 
@@ -2245,7 +2583,15 @@ table {
2245
2583
  }
2246
2584
 
2247
2585
  .sc-skill-name {
2248
- font-weight: var(--sc-weight-medium);
2586
+ font-size: var(--sc-text-md);
2587
+ font-weight: var(--sc-weight-bold);
2588
+ }
2589
+
2590
+ /* The folder a skill is in: a line of its own under the name, in the code face. */
2591
+ .sc-skill-head > .sc-muted {
2592
+ flex: 1 1 100%;
2593
+ font-family: var(--sc-font-mono);
2594
+ font-size: var(--sc-text-xs);
2249
2595
  }
2250
2596
 
2251
2597
  .sc-skill-description {
@@ -2256,7 +2602,9 @@ table {
2256
2602
 
2257
2603
  .sc-skill-uri {
2258
2604
  display: block;
2259
- margin-top: var(--sc-space-2);
2605
+ margin-top: var(--sc-space-3);
2606
+ padding-top: var(--sc-space-2);
2607
+ border-top: var(--sc-hairline);
2260
2608
  color: var(--sc-color-text-faint);
2261
2609
  font-size: var(--sc-text-xs);
2262
2610
  word-break: break-all;
@@ -2280,18 +2628,30 @@ table {
2280
2628
  display: flex;
2281
2629
  flex-wrap: wrap;
2282
2630
  align-items: center;
2283
- gap: var(--sc-space-2);
2631
+ gap: var(--sc-space-1) var(--sc-space-2);
2632
+ padding-bottom: var(--sc-space-3);
2633
+ border-bottom: var(--sc-hairline);
2284
2634
  }
2285
2635
 
2286
2636
  .sc-run-agent {
2287
- font-weight: var(--sc-weight-medium);
2637
+ font-size: var(--sc-text-md);
2638
+ font-weight: var(--sc-weight-bold);
2288
2639
  }
2289
2640
 
2641
+ /* The way to end a run stands at the end of the first line. */
2642
+ .sc-run-header > .sc-button {
2643
+ order: 1;
2644
+ margin-inline-start: auto;
2645
+ }
2646
+
2647
+ /* Who the run is for and since when: the second line of the head. */
2290
2648
  .sc-run-meta {
2291
- display: inline-flex;
2649
+ display: flex;
2650
+ flex: 1 1 100%;
2292
2651
  flex-wrap: wrap;
2652
+ order: 2;
2293
2653
  align-items: center;
2294
- gap: var(--sc-space-1);
2654
+ gap: var(--sc-space-1) var(--sc-space-2);
2295
2655
  color: var(--sc-color-text-muted);
2296
2656
  font-size: var(--sc-text-sm);
2297
2657
  }
@@ -2312,10 +2672,11 @@ table {
2312
2672
  display: grid;
2313
2673
  gap: var(--sc-space-1);
2314
2674
  padding-left: var(--sc-space-3);
2315
- border-left: 2px solid var(--sc-color-border-strong);
2675
+ border-left: 2px solid var(--sc-color-accent);
2316
2676
  font-size: var(--sc-text-sm);
2317
2677
  }
2318
2678
 
2679
+ /* The hour of a report heads it, small and apart from its words. */
2319
2680
  .sc-run-summary {
2320
2681
  padding-top: var(--sc-space-3);
2321
2682
  border-top: var(--sc-border);
@@ -2343,6 +2704,7 @@ table {
2343
2704
  }
2344
2705
 
2345
2706
  .sc-comment-meta {
2707
+ margin-inline-start: auto;
2346
2708
  color: var(--sc-color-text-muted);
2347
2709
  font-size: var(--sc-text-sm);
2348
2710
  }
@@ -2361,7 +2723,7 @@ table {
2361
2723
  }
2362
2724
 
2363
2725
  .sc-picture-thumb:focus-visible {
2364
- outline: 2px solid var(--sc-color-accent);
2726
+ outline: var(--sc-focus-ring);
2365
2727
  outline-offset: 2px;
2366
2728
  }
2367
2729
 
@@ -2389,7 +2751,7 @@ table {
2389
2751
  grid-template-rows: auto minmax(0, 1fr) auto;
2390
2752
  inset: 0;
2391
2753
  background: color-mix(in srgb, var(--sc-color-bg) 90%, transparent);
2392
- backdrop-filter: blur(12px);
2754
+ backdrop-filter: var(--sc-glass-backdrop);
2393
2755
  }
2394
2756
 
2395
2757
  .sc-overlay-bar {
@@ -2535,7 +2897,7 @@ table {
2535
2897
  padding: var(--sc-space-3) var(--sc-space-4);
2536
2898
  border: var(--sc-border);
2537
2899
  border-radius: var(--sc-radius-md);
2538
- background: var(--sc-color-field);
2900
+ background: var(--sc-color-bg-raised);
2539
2901
  font-family: var(--sc-font-mono);
2540
2902
  font-size: var(--sc-text-sm);
2541
2903
  line-height: var(--sc-leading-code);
@@ -2562,13 +2924,13 @@ table {
2562
2924
  max-width: 12rem;
2563
2925
  font-family: var(--sc-font-mono);
2564
2926
  font-size: var(--sc-text-lg);
2565
- letter-spacing: 0.12em;
2927
+ letter-spacing: var(--sc-tracking-code);
2566
2928
  text-transform: uppercase;
2567
2929
  }
2568
2930
 
2569
2931
  .sc-code-shown {
2570
2932
  font-size: var(--sc-text-md);
2571
- letter-spacing: 0.1em;
2933
+ letter-spacing: var(--sc-tracking-code);
2572
2934
  }
2573
2935
 
2574
2936
  /* Documents: a folder's pages, one page with its versions, its links both ways and its files. */
@@ -2655,11 +3017,13 @@ table {
2655
3017
  list-style: none;
2656
3018
  }
2657
3019
 
3020
+ /* A page in a list reads on two lines: its title, with a mark if it is archived, and under it
3021
+ where it lives, its version, who wrote it last and when, each a step apart. */
2658
3022
  .sc-doc-row {
2659
3023
  display: flex;
2660
3024
  flex-wrap: wrap;
2661
- align-items: baseline;
2662
- gap: var(--sc-space-2) var(--sc-space-3);
3025
+ align-items: center;
3026
+ gap: var(--sc-space-1) var(--sc-space-2);
2663
3027
  padding: var(--sc-space-3) var(--sc-space-4);
2664
3028
  border-radius: var(--sc-radius-lg);
2665
3029
  transition: border-color var(--sc-transition);
@@ -2671,7 +3035,9 @@ table {
2671
3035
 
2672
3036
  .sc-doc-title {
2673
3037
  color: var(--sc-color-text);
2674
- font-weight: var(--sc-weight-medium);
3038
+ font-size: var(--sc-text-md);
3039
+ font-weight: var(--sc-weight-bold);
3040
+ line-height: var(--sc-leading-snug);
2675
3041
  text-decoration: none;
2676
3042
  }
2677
3043
 
@@ -2680,8 +3046,17 @@ table {
2680
3046
  }
2681
3047
 
2682
3048
  .sc-doc-meta {
3049
+ display: flex;
3050
+ flex: 1 1 100%;
3051
+ flex-wrap: wrap;
3052
+ align-items: center;
3053
+ gap: var(--sc-space-1) var(--sc-space-2);
2683
3054
  color: var(--sc-color-text-muted);
2684
- font-size: var(--sc-text-sm);
3055
+ font-size: var(--sc-text-xs);
3056
+ }
3057
+
3058
+ .sc-doc-meta .sc-person-login {
3059
+ font-weight: var(--sc-weight-normal);
2685
3060
  }
2686
3061
 
2687
3062
  .sc-doc-path {
@@ -2704,7 +3079,7 @@ table {
2704
3079
  }
2705
3080
 
2706
3081
  .sc-doc-archived .sc-prose {
2707
- opacity: 0.85;
3082
+ opacity: 0.55;
2708
3083
  }
2709
3084
 
2710
3085
  /* The pictures for a page, under its body: the way to add one, and what becomes of it. */
@@ -2715,30 +3090,86 @@ table {
2715
3090
  gap: var(--sc-space-2);
2716
3091
  }
2717
3092
 
3093
+ /* The attach form: a button to choose the file with the chosen file's name beside it, the
3094
+ name to call it under that, and the attach button across the bottom, all one height. */
2718
3095
  .sc-doc-attach {
2719
- display: flex;
2720
- flex-wrap: wrap;
3096
+ display: grid;
2721
3097
  gap: var(--sc-space-2);
2722
3098
  margin-top: var(--sc-space-3);
2723
3099
  }
2724
3100
 
3101
+ .sc-doc-attach-file {
3102
+ display: flex;
3103
+ align-items: center;
3104
+ gap: var(--sc-space-3);
3105
+ min-width: 0;
3106
+ }
3107
+
3108
+ .sc-doc-attach-file > .sc-button {
3109
+ flex: none;
3110
+ }
3111
+
3112
+ .sc-doc-attach-chosen {
3113
+ min-width: 0;
3114
+ overflow: hidden;
3115
+ font-size: var(--sc-text-sm);
3116
+ white-space: nowrap;
3117
+ text-overflow: ellipsis;
3118
+ }
3119
+
3120
+ .sc-doc-attach > .sc-button {
3121
+ width: 100%;
3122
+ }
3123
+
2725
3124
  .sc-versions {
2726
3125
  margin: 0;
2727
3126
  padding: 0;
2728
3127
  list-style: none;
2729
3128
  }
2730
3129
 
3130
+ .sc-version {
3131
+ display: grid;
3132
+ grid-template-columns: auto minmax(0, 1fr);
3133
+ column-gap: var(--sc-space-3);
3134
+ row-gap: var(--sc-space-1);
3135
+ align-items: baseline;
3136
+ padding-block: var(--sc-space-2);
3137
+ font-size: var(--sc-text-sm);
3138
+ }
3139
+
2731
3140
  .sc-version + .sc-version {
2732
- margin-top: var(--sc-space-2);
3141
+ border-top: var(--sc-hairline);
2733
3142
  }
2734
3143
 
2735
3144
  .sc-version-number {
2736
- display: inline-block;
2737
- min-width: 2.5rem;
3145
+ min-width: 2rem;
2738
3146
  font-family: var(--sc-font-mono);
2739
3147
  font-size: var(--sc-text-sm);
2740
3148
  }
2741
3149
 
3150
+ .sc-version-title {
3151
+ font-weight: var(--sc-weight-medium);
3152
+ overflow-wrap: anywhere;
3153
+ }
3154
+
3155
+ .sc-version-meta {
3156
+ display: flex;
3157
+ flex-wrap: wrap;
3158
+ align-items: center;
3159
+ gap: var(--sc-space-1) var(--sc-space-2);
3160
+ grid-column: 2;
3161
+ color: var(--sc-color-text-muted);
3162
+ font-size: var(--sc-text-xs);
3163
+ }
3164
+
3165
+ .sc-version-meta .sc-person-login {
3166
+ font-weight: var(--sc-weight-normal);
3167
+ }
3168
+
3169
+ .sc-version-meta .sc-feed-agent {
3170
+ margin-inline-start: 0;
3171
+ }
3172
+
2742
3173
  /* In the aside of a task or a page, the facts stack and the sections are small. */
2743
3174
 
2744
3175
  .sc-task-aside .sc-facts {
@@ -2747,11 +3178,6 @@ table {
2747
3178
 
2748
3179
  .sc-task-aside .sc-section-title {
2749
3180
  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;
2755
3181
  }
2756
3182
 
2757
3183
  .sc-task-aside .sc-task-section {
@@ -2771,11 +3197,6 @@ table {
2771
3197
 
2772
3198
  .sc-decision-label {
2773
3199
  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
3200
  }
2780
3201
 
2781
3202
  .sc-outcome-form {
@@ -2783,11 +3204,20 @@ table {
2783
3204
  gap: var(--sc-space-2);
2784
3205
  }
2785
3206
 
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. */
3207
+ /* Under the wide layout a task reads its text first, then its facts and the ways to its forms, two
3208
+ to a row so that they stay short, then the discussion and what happened: the text says what the
3209
+ task is, and its state is changed right under it. A document keeps its text first. */
2788
3210
  @media (max-width: 63.99rem) {
3211
+ .sc-task .sc-task-main {
3212
+ display: contents;
3213
+ }
3214
+
2789
3215
  .sc-task .sc-task-aside {
2790
- order: -1;
3216
+ order: 1;
3217
+ }
3218
+
3219
+ .sc-task .sc-task-main > .sc-task-section {
3220
+ order: 2;
2791
3221
  }
2792
3222
 
2793
3223
  .sc-task .sc-task-aside .sc-facts {
@@ -2798,86 +3228,211 @@ table {
2798
3228
  /* The schedule, the roadmap and the categories (ADR-0019). */
2799
3229
 
2800
3230
  /* 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. */
3231
+ light fill with its words dark in the same hue, and a mark, a clear mid-tone of the hue, for
3232
+ the dots, flags and bars where the colour stands alone; the eight hues spread around the
3233
+ wheel so that no two are taken for each other at a glance. A console that sets only the line
3234
+ and the fill gets its line where the mark would be. */
2802
3235
  .sc-category-gray {
2803
- --sc-category-line: #aeb7c4;
2804
- --sc-category-fill: #2a3240;
3236
+ --sc-category-line: #4a5468;
3237
+ --sc-category-fill: #e0e4eb;
3238
+ --sc-category-mark: #7b8597;
2805
3239
  }
2806
3240
 
2807
3241
  .sc-category-blue {
2808
- --sc-category-line: #8fb6ff;
2809
- --sc-category-fill: #1a2d52;
3242
+ --sc-category-line: #1d4fcb;
3243
+ --sc-category-fill: #d2e0ff;
3244
+ --sc-category-mark: #2f6ae8;
2810
3245
  }
2811
3246
 
2812
3247
  .sc-category-green {
2813
- --sc-category-line: #6fd3a0;
2814
- --sc-category-fill: #143326;
3248
+ --sc-category-line: #176d26;
3249
+ --sc-category-fill: #cdf0cc;
3250
+ --sc-category-mark: #22a04a;
2815
3251
  }
2816
3252
 
2817
3253
  .sc-category-orange {
2818
- --sc-category-line: #ffb77a;
2819
- --sc-category-fill: #3a2414;
3254
+ --sc-category-line: #b83c00;
3255
+ --sc-category-fill: #ffe6d1;
3256
+ --sc-category-mark: #f0731a;
2820
3257
  }
2821
3258
 
2822
3259
  .sc-category-pink {
2823
- --sc-category-line: #ff9ac2;
2824
- --sc-category-fill: #3b1a2b;
3260
+ --sc-category-line: #b2176a;
3261
+ --sc-category-fill: #fdd2e5;
3262
+ --sc-category-mark: #e63d94;
2825
3263
  }
2826
3264
 
2827
3265
  .sc-category-purple {
2828
- --sc-category-line: #c4a4ff;
2829
- --sc-category-fill: #2b1f4a;
3266
+ --sc-category-line: #6434c2;
3267
+ --sc-category-fill: #e6d8fc;
3268
+ --sc-category-mark: #8457e6;
2830
3269
  }
2831
3270
 
2832
3271
  .sc-category-teal {
2833
- --sc-category-line: #7ad7d4;
2834
- --sc-category-fill: #10343a;
3272
+ --sc-category-line: #08667a;
3273
+ --sc-category-fill: #c6edf4;
3274
+ --sc-category-mark: #0f9bb0;
2835
3275
  }
2836
3276
 
2837
3277
  .sc-category-yellow {
2838
- --sc-category-line: #f0d36a;
2839
- --sc-category-fill: #3a3012;
3278
+ --sc-category-line: #44403c;
3279
+ --sc-category-fill: #fbe9b2;
3280
+ --sc-category-mark: #e6b42c;
2840
3281
  }
2841
3282
 
2842
3283
  .sc-badge-category {
2843
- border-color: color-mix(in srgb, var(--sc-category-line) 45%, transparent);
3284
+ border-color: transparent;
2844
3285
  background: var(--sc-category-fill);
2845
3286
  color: var(--sc-category-line);
2846
3287
  }
2847
3288
 
2848
- .sc-category-swatch,
2849
- .sc-calendar-dot {
2850
- display: inline-block;
2851
- flex: none;
2852
- width: 0.625rem;
2853
- height: 0.625rem;
2854
- border-radius: 50%;
2855
- background: var(--sc-category-line, var(--sc-color-text-faint));
3289
+ /* A badge's kind in how it is filled, so that a plain badge, a category, a state, a priority
3290
+ and a due day beside each other are kinds and not five of one thing; the pill is the shape
3291
+ of them all and nothing stands before the words:
3292
+ - a plain badge (a role, a count, public or private): a soft fill with a line of its hue;
3293
+ - a category and a state: a soft fill, no line;
3294
+ - a priority: a soft fill with dark words of its hue, low a grey, high an orange, urgent a red;
3295
+ - a due day: a line, a very light fill and bold words, all in the hue of how near the day
3296
+ is. */
3297
+ .sc-badge:not(.sc-badge-category) {
3298
+ border-color: color-mix(in srgb, currentColor 40%, transparent);
2856
3299
  }
2857
3300
 
2858
- /* The filters above the board: a quiet row of controls, as wide as its words. */
2859
- .sc-filters {
2860
- display: flex;
2861
- flex-wrap: wrap;
2862
- align-items: center;
2863
- gap: var(--sc-space-2) var(--sc-space-3);
2864
- margin-bottom: var(--sc-space-3);
3301
+ .sc-badge.sc-badge-kind-state {
3302
+ border-color: transparent;
2865
3303
  }
2866
3304
 
2867
- .sc-filters .sc-field-inline {
2868
- flex: none;
3305
+ .sc-badge.sc-badge-kind-priority {
3306
+ border-color: transparent;
3307
+ background: #e1e6ee;
3308
+ color: #3a4558;
2869
3309
  }
2870
3310
 
2871
- .sc-filters .sc-input {
2872
- min-height: 2rem;
2873
- padding-block: 0;
2874
- font-size: var(--sc-text-sm);
3311
+ .sc-badge.sc-badge-kind-priority.sc-badge-point {
3312
+ background: #ffd4a8;
3313
+ color: #7a3300;
3314
+ }
3315
+
3316
+ .sc-badge.sc-badge-kind-priority.sc-badge-danger {
3317
+ background: #fdbcc3;
3318
+ color: #7d0e1d;
3319
+ }
3320
+
3321
+ /* A due day: one line weight for every one; the line, a very light fill and the words are
3322
+ all in the hue of how near the day is. */
3323
+ .sc-badge.sc-badge-kind-due {
3324
+ border: 1.5px solid #a3acba;
3325
+ background: #f4f6f9;
3326
+ color: #4b5563;
3327
+ font-weight: var(--sc-weight-bold);
3328
+ font-variant-numeric: tabular-nums;
3329
+ }
3330
+
3331
+ .sc-badge.sc-badge-kind-due.sc-badge-accent {
3332
+ border-color: #6f93e8;
3333
+ background: #f0f5ff;
3334
+ color: #1d4ed8;
3335
+ }
3336
+
3337
+ .sc-badge.sc-badge-kind-due.sc-badge-success {
3338
+ border-color: #5fb488;
3339
+ background: #effaf4;
3340
+ color: #146b44;
3341
+ }
3342
+
3343
+ /* Within the week. */
3344
+ .sc-badge.sc-badge-kind-due.sc-badge-warning {
3345
+ border-color: #e0b100;
3346
+ background: #fffae6;
3347
+ color: #8a6500;
3348
+ }
3349
+
3350
+ /* Tomorrow. */
3351
+ .sc-badge.sc-badge-kind-due.sc-badge-point {
3352
+ border-color: #f59e3c;
3353
+ background: #fff4ea;
3354
+ color: #b45309;
3355
+ }
3356
+
3357
+ /* Today. */
3358
+ .sc-badge.sc-badge-kind-due.sc-badge-due-today {
3359
+ border-color: #f26b4a;
3360
+ background: #fff1ec;
3361
+ color: #c2330f;
3362
+ }
3363
+
3364
+ /* Late. */
3365
+ .sc-badge.sc-badge-kind-due.sc-badge-danger {
3366
+ border-color: #d33a47;
3367
+ background: #fff0f1;
3368
+ color: #c0262f;
3369
+ }
3370
+
3371
+ .sc-badge-kind-count {
3372
+ font-variant-numeric: tabular-nums;
3373
+ }
3374
+
3375
+ .sc-category-swatch,
3376
+ .sc-calendar-dot {
3377
+ display: inline-block;
3378
+ flex: none;
3379
+ width: 0.625rem;
3380
+ height: 0.625rem;
3381
+ border-radius: var(--sc-radius-full);
3382
+ background: var(--sc-category-mark, var(--sc-category-line, var(--sc-color-text-faint)));
3383
+ }
3384
+
3385
+ /* The filters above the board: a quiet row of controls, as wide as its words. */
3386
+ .sc-filters {
3387
+ display: flex;
3388
+ flex-wrap: wrap;
3389
+ align-items: center;
3390
+ gap: var(--sc-space-2) var(--sc-space-3);
3391
+ margin-bottom: var(--sc-space-3);
3392
+ }
3393
+
3394
+ .sc-filters .sc-field-inline {
3395
+ flex: none;
3396
+ }
3397
+
3398
+ .sc-filters .sc-input {
3399
+ min-height: 2rem;
3400
+ padding-block: 0;
3401
+ font-size: var(--sc-text-sm);
3402
+ }
3403
+
3404
+ /* The words the board is narrowed by: a field that takes what room the row has, up to a point. */
3405
+ .sc-filters-words {
3406
+ flex: 1 1 12rem;
3407
+ max-width: 22rem;
3408
+ }
3409
+
3410
+ .sc-filters-words .sc-input {
3411
+ width: 100%;
2875
3412
  }
2876
3413
 
2877
3414
  .sc-filters-count {
2878
3415
  font-size: var(--sc-text-sm);
2879
3416
  }
2880
3417
 
3418
+ @media (max-width: 40rem) {
3419
+ .sc-filters {
3420
+ flex-wrap: nowrap;
3421
+ margin-inline: calc(-1 * var(--sc-space-4));
3422
+ padding-inline: var(--sc-space-4);
3423
+ overflow-x: auto;
3424
+ scrollbar-width: none;
3425
+ }
3426
+
3427
+ .sc-filters > * {
3428
+ flex: none;
3429
+ }
3430
+
3431
+ .sc-filters-count {
3432
+ white-space: nowrap;
3433
+ }
3434
+ }
3435
+
2881
3436
  /* Tasks as rows, where the columns are not the point. */
2882
3437
  .sc-task-rows {
2883
3438
  display: grid;
@@ -2888,11 +3443,11 @@ table {
2888
3443
  }
2889
3444
 
2890
3445
  .sc-task-row {
2891
- display: flex;
2892
- flex-wrap: wrap;
3446
+ display: grid;
3447
+ grid-template-columns: minmax(0, 1fr) auto;
2893
3448
  align-items: center;
2894
- gap: var(--sc-space-2) var(--sc-space-3);
2895
- padding: var(--sc-space-2) var(--sc-space-3);
3449
+ gap: var(--sc-space-1) var(--sc-space-3);
3450
+ padding: var(--sc-space-3) var(--sc-space-4);
2896
3451
  border: var(--sc-border);
2897
3452
  border-radius: var(--sc-radius-md);
2898
3453
  background: var(--sc-color-sheet);
@@ -2900,7 +3455,7 @@ table {
2900
3455
  }
2901
3456
 
2902
3457
  .sc-task-row-title {
2903
- flex: 1 1 14rem;
3458
+ grid-column: 1;
2904
3459
  min-width: 0;
2905
3460
  color: var(--sc-color-text);
2906
3461
  font-weight: var(--sc-weight-medium);
@@ -2913,6 +3468,7 @@ table {
2913
3468
  }
2914
3469
 
2915
3470
  .sc-task-row-project {
3471
+ grid-column: 1;
2916
3472
  color: var(--sc-color-text-faint);
2917
3473
  font-size: var(--sc-text-xs);
2918
3474
  }
@@ -2920,11 +3476,27 @@ table {
2920
3476
  .sc-task-row-meta {
2921
3477
  display: flex;
2922
3478
  flex-wrap: wrap;
3479
+ grid-row: 1 / span 2;
3480
+ grid-column: 2;
2923
3481
  align-items: center;
3482
+ justify-content: flex-end;
2924
3483
  gap: var(--sc-space-1);
2925
3484
  margin-left: auto;
2926
3485
  }
2927
3486
 
3487
+ @media (max-width: 40rem) {
3488
+ .sc-task-row {
3489
+ grid-template-columns: minmax(0, 1fr);
3490
+ }
3491
+
3492
+ .sc-task-row-meta {
3493
+ grid-row: auto;
3494
+ grid-column: 1;
3495
+ justify-content: flex-start;
3496
+ margin-left: 0;
3497
+ }
3498
+ }
3499
+
2928
3500
  /* The calendar: the month as a table, a cell a day, the tasks due in it one line each. */
2929
3501
  .sc-calendar {
2930
3502
  display: grid;
@@ -2957,12 +3529,7 @@ table {
2957
3529
 
2958
3530
  .sc-calendar-grid th {
2959
3531
  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
3532
  text-align: left;
2965
- text-transform: uppercase;
2966
3533
  }
2967
3534
 
2968
3535
  .sc-calendar-cell {
@@ -2981,7 +3548,6 @@ table {
2981
3548
 
2982
3549
  .sc-calendar-cell-today {
2983
3550
  border-color: var(--sc-color-accent);
2984
- box-shadow: inset 0 0 0 1px var(--sc-color-accent);
2985
3551
  }
2986
3552
 
2987
3553
  .sc-calendar-day {
@@ -2995,6 +3561,26 @@ table {
2995
3561
  color: var(--sc-color-accent);
2996
3562
  }
2997
3563
 
3564
+ .sc-calendar-more {
3565
+ display: block;
3566
+ width: 100%;
3567
+ margin-top: 2px;
3568
+ padding: 1px var(--sc-space-1);
3569
+ border: 0;
3570
+ border-radius: var(--sc-radius-sm);
3571
+ background: transparent;
3572
+ color: var(--sc-color-text-muted);
3573
+ font-size: var(--sc-text-xs);
3574
+ font-weight: var(--sc-weight-medium);
3575
+ line-height: var(--sc-leading-snug);
3576
+ text-align: start;
3577
+ }
3578
+
3579
+ .sc-calendar-more:hover {
3580
+ background: var(--sc-color-bg-inset);
3581
+ color: var(--sc-color-text);
3582
+ }
3583
+
2998
3584
  .sc-calendar-task {
2999
3585
  display: flex;
3000
3586
  align-items: center;
@@ -3004,7 +3590,7 @@ table {
3004
3590
  border-radius: var(--sc-radius-sm);
3005
3591
  color: var(--sc-color-text);
3006
3592
  font-size: var(--sc-text-xs);
3007
- line-height: 1.4;
3593
+ line-height: var(--sc-leading-snug);
3008
3594
  text-decoration: none;
3009
3595
  }
3010
3596
 
@@ -3041,7 +3627,8 @@ table {
3041
3627
  .sc-calendar-bar {
3042
3628
  margin-inline: calc(-1 * var(--sc-space-2) - 0.125rem - 1px);
3043
3629
  padding-inline: var(--sc-space-2);
3044
- border-block: 1px solid color-mix(in srgb, var(--sc-category-line) 45%, transparent);
3630
+ border-block: 1px solid
3631
+ color-mix(in srgb, var(--sc-category-mark, var(--sc-category-line)) 60%, transparent);
3045
3632
  background: var(--sc-category-fill);
3046
3633
  color: var(--sc-category-line);
3047
3634
  font-size: var(--sc-text-xs);
@@ -3054,19 +3641,21 @@ table {
3054
3641
  every week it crosses, never one piece alone; by its colour and not by a filter, which would
3055
3642
  light the card within it too. */
3056
3643
  .sc-calendar-bar-pointed {
3057
- background: color-mix(in srgb, var(--sc-category-fill), white 12%);
3644
+ background: color-mix(in srgb, var(--sc-category-fill), var(--sc-category-line) 14%);
3058
3645
  }
3059
3646
 
3060
3647
  .sc-calendar-bar-begins {
3061
3648
  margin-left: 0;
3062
- border-left: 1px solid color-mix(in srgb, var(--sc-category-line) 45%, transparent);
3649
+ border-left: 1px solid
3650
+ color-mix(in srgb, var(--sc-category-mark, var(--sc-category-line)) 60%, transparent);
3063
3651
  border-start-start-radius: var(--sc-radius-full);
3064
3652
  border-end-start-radius: var(--sc-radius-full);
3065
3653
  }
3066
3654
 
3067
3655
  .sc-calendar-bar-ends {
3068
3656
  margin-right: 0;
3069
- border-right: 1px solid color-mix(in srgb, var(--sc-category-line) 45%, transparent);
3657
+ border-right: 1px solid
3658
+ color-mix(in srgb, var(--sc-category-mark, var(--sc-category-line)) 60%, transparent);
3070
3659
  border-start-end-radius: var(--sc-radius-full);
3071
3660
  border-end-end-radius: var(--sc-radius-full);
3072
3661
  }
@@ -3088,8 +3677,17 @@ table {
3088
3677
  color: var(--sc-color-danger);
3089
3678
  }
3090
3679
 
3680
+ /* A bar of a task that is over: paler in its own colour, not see-through, so that every piece
3681
+ of it is one shade whatever lies under it, and the card of the task under the pointer,
3682
+ which lies within the piece, stays solid. */
3091
3683
  .sc-calendar-bar.sc-calendar-over {
3092
- opacity: 0.55;
3684
+ border-color: color-mix(
3685
+ in srgb,
3686
+ var(--sc-category-mark, var(--sc-category-line)) 30%,
3687
+ transparent
3688
+ );
3689
+ background: color-mix(in srgb, var(--sc-category-fill) 50%, var(--sc-color-bg-raised));
3690
+ color: color-mix(in srgb, var(--sc-category-line) 55%, var(--sc-color-bg-raised));
3093
3691
  }
3094
3692
 
3095
3693
  .sc-calendar-legend {
@@ -3150,6 +3748,16 @@ table {
3150
3748
  font-size: var(--sc-text-sm);
3151
3749
  }
3152
3750
 
3751
+ /* The mark hangs in the margin, so that what wraps onto a second line, a badge most often,
3752
+ starts under the name rather than under the mark. */
3753
+ .sc-project-head:has(> .sc-mark-md) {
3754
+ padding-inline-start: calc(2rem + var(--sc-space-3));
3755
+ }
3756
+
3757
+ .sc-project-head > .sc-mark-md {
3758
+ margin-inline-start: calc(-2rem - var(--sc-space-3));
3759
+ }
3760
+
3153
3761
  .sc-mark-lg {
3154
3762
  width: 3rem;
3155
3763
  height: 3rem;
@@ -3178,10 +3786,11 @@ table {
3178
3786
  }
3179
3787
 
3180
3788
  .sc-input-file {
3181
- padding-block: calc(var(--sc-space-2) - 2px);
3182
3789
  font-size: var(--sc-text-sm);
3183
3790
  }
3184
3791
 
3792
+ /* Under the month: what is late and who has what on the left, one under the other, and what
3793
+ has no day yet, the long list, down the right; one column where the window is narrow. */
3185
3794
  .sc-calendar-below {
3186
3795
  display: grid;
3187
3796
  align-items: start;
@@ -3192,6 +3801,12 @@ table {
3192
3801
  @media (min-width: 64rem) {
3193
3802
  .sc-calendar-below {
3194
3803
  grid-template-columns: 1fr 1fr;
3804
+ grid-template-rows: auto 1fr;
3805
+ }
3806
+
3807
+ .sc-calendar-below > :last-child {
3808
+ grid-column: 2;
3809
+ grid-row: 1 / span 2;
3195
3810
  }
3196
3811
  }
3197
3812
 
@@ -3243,6 +3858,26 @@ table {
3243
3858
  color: var(--sc-color-text-muted);
3244
3859
  }
3245
3860
 
3861
+ /* Who asked and who answers (ADR-0042): the two people side by side, an arrow from the one to
3862
+ the other, so that the asker and the decider are never read as one. */
3863
+ .sc-decision-people,
3864
+ .sc-decision-for {
3865
+ display: inline-flex;
3866
+ align-items: center;
3867
+ gap: var(--sc-space-1);
3868
+ white-space: nowrap;
3869
+ }
3870
+
3871
+ .sc-decision-arrow {
3872
+ color: var(--sc-color-text-faint);
3873
+ font-weight: var(--sc-weight-medium);
3874
+ }
3875
+
3876
+ .sc-decision-row-answer {
3877
+ color: var(--sc-color-text);
3878
+ font-weight: var(--sc-weight-medium);
3879
+ }
3880
+
3246
3881
  /* The record of the decisions: a row each, what was asked on the left and what was answered on
3247
3882
  the right, each with who and when under it; one column where the window is narrow. */
3248
3883
  .sc-decision-record {
@@ -3296,12 +3931,26 @@ table {
3296
3931
  margin-left: var(--sc-space-2);
3297
3932
  }
3298
3933
 
3934
+ /* The answer a decision took, marked in green before its words. */
3935
+ .sc-decision-record-chosen::before {
3936
+ content: "";
3937
+ position: absolute;
3938
+ top: calc(0.8em - 0.25rem);
3939
+ left: 0;
3940
+ width: 0.5rem;
3941
+ height: 0.5rem;
3942
+ border-radius: var(--sc-radius-full);
3943
+ background: var(--sc-color-success);
3944
+ }
3945
+
3299
3946
  .sc-decision-record-chosen {
3947
+ position: relative;
3948
+ padding-left: var(--sc-space-4);
3300
3949
  display: flex;
3301
3950
  flex-wrap: wrap;
3302
3951
  align-items: center;
3303
3952
  gap: var(--sc-space-2);
3304
- color: var(--sc-color-success);
3953
+ color: var(--sc-color-text);
3305
3954
  font-weight: var(--sc-weight-medium);
3306
3955
  overflow-wrap: anywhere;
3307
3956
  }
@@ -3340,31 +3989,44 @@ table {
3340
3989
  font-size: var(--sc-text-sm);
3341
3990
  }
3342
3991
 
3343
- /* Who has what: a small table, the late numbers in the danger colour. */
3992
+ /* Who has what: a table on a sheet of its own, a quiet band for the headings, a hairline
3993
+ between people, the numbers in columns of their own on the right in the display size; the
3994
+ one due this week and the one late carry a dot of their colour before them. */
3344
3995
  .sc-workload {
3345
3996
  width: 100%;
3346
3997
  max-width: var(--sc-width-prose);
3347
- border-collapse: collapse;
3998
+ border: var(--sc-border);
3999
+ border-radius: var(--sc-radius-lg);
4000
+ border-collapse: separate;
4001
+ border-spacing: 0;
4002
+ background: var(--sc-color-sheet);
4003
+ box-shadow: var(--sc-glass-lift);
3348
4004
  font-size: var(--sc-text-sm);
3349
4005
  }
3350
4006
 
3351
4007
  .sc-workload th,
3352
4008
  .sc-workload td {
3353
- padding: var(--sc-space-2) var(--sc-space-3);
3354
- border-bottom: var(--sc-border);
4009
+ padding: var(--sc-space-3) var(--sc-space-4);
3355
4010
  text-align: left;
3356
4011
  }
3357
4012
 
3358
4013
  .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;
4014
+ padding-block: var(--sc-space-2);
4015
+ border-bottom: var(--sc-border);
4016
+ background: var(--sc-color-bg-inset);
4017
+ white-space: nowrap;
4018
+ }
4019
+
4020
+ .sc-workload thead th:first-child {
4021
+ border-start-start-radius: var(--sc-radius-lg);
4022
+ }
4023
+
4024
+ .sc-workload thead th:last-child {
4025
+ border-start-end-radius: var(--sc-radius-lg);
3364
4026
  }
3365
4027
 
3366
4028
  .sc-workload tbody th {
3367
- font-weight: var(--sc-weight-normal);
4029
+ font-weight: var(--sc-weight-medium);
3368
4030
  }
3369
4031
 
3370
4032
  .sc-workload tbody th a {
@@ -3376,8 +4038,34 @@ table {
3376
4038
  color: var(--sc-color-accent);
3377
4039
  }
3378
4040
 
4041
+ /* The numbers: a narrow column each, lined up on the right. */
4042
+ .sc-workload th:not(:first-child),
3379
4043
  .sc-workload td {
4044
+ width: 6.5rem;
4045
+ text-align: right;
4046
+ }
4047
+
4048
+ .sc-workload td {
4049
+ font-size: var(--sc-text-md);
3380
4050
  font-variant-numeric: tabular-nums;
4051
+ white-space: nowrap;
4052
+ }
4053
+
4054
+ .sc-workload-soon,
4055
+ .sc-workload-late {
4056
+ font-weight: var(--sc-weight-bold);
4057
+ }
4058
+
4059
+ .sc-workload-soon::before,
4060
+ .sc-workload-late::before {
4061
+ content: "";
4062
+ display: inline-block;
4063
+ width: 0.4rem;
4064
+ height: 0.4rem;
4065
+ margin-inline-end: var(--sc-space-2);
4066
+ border-radius: var(--sc-radius-full);
4067
+ background: currentColor;
4068
+ vertical-align: 0.1em;
3381
4069
  }
3382
4070
 
3383
4071
  .sc-workload-soon {
@@ -3386,14 +4074,50 @@ table {
3386
4074
 
3387
4075
  .sc-workload-late {
3388
4076
  color: var(--sc-color-danger);
3389
- font-weight: var(--sc-weight-bold);
4077
+ }
4078
+
4079
+ /* A hairline between people, and the row under the pointer lit a little. */
4080
+ .sc-workload tbody tr + tr > th,
4081
+ .sc-workload tbody tr + tr > td {
4082
+ border-top: var(--sc-hairline);
4083
+ }
4084
+
4085
+ .sc-workload tbody tr:hover > th,
4086
+ .sc-workload tbody tr:hover > td {
4087
+ background: color-mix(in srgb, var(--sc-color-accent) 4%, transparent);
4088
+ }
4089
+
4090
+ @media (max-width: 40rem) {
4091
+ .sc-workload th:not(:first-child),
4092
+ .sc-workload td {
4093
+ width: auto;
4094
+ }
4095
+
4096
+ .sc-workload th,
4097
+ .sc-workload td {
4098
+ padding-inline: var(--sc-space-2);
4099
+ }
4100
+
4101
+ .sc-workload thead th {
4102
+ white-space: normal;
4103
+ word-break: keep-all;
4104
+ line-height: var(--sc-leading-tight);
4105
+ }
4106
+
4107
+ .sc-workload tbody th {
4108
+ word-break: keep-all;
4109
+ }
4110
+
4111
+ .sc-workload td {
4112
+ font-size: var(--sc-text-sm);
4113
+ }
3390
4114
  }
3391
4115
 
3392
4116
  /* The roadmap: a goal a pane, with how far it is as a bar. */
3393
4117
  .sc-goals {
3394
4118
  display: grid;
4119
+ grid-template-columns: repeat(auto-fill, minmax(min(100%, 30rem), 1fr));
3395
4120
  gap: var(--sc-space-3);
3396
- max-width: var(--sc-width-prose);
3397
4121
  margin: 0;
3398
4122
  padding: 0;
3399
4123
  list-style: none;
@@ -3410,7 +4134,7 @@ table {
3410
4134
  }
3411
4135
 
3412
4136
  .sc-goal-done {
3413
- opacity: 0.75;
4137
+ opacity: 0.55;
3414
4138
  }
3415
4139
 
3416
4140
  .sc-goal-dropped {
@@ -3425,7 +4149,7 @@ table {
3425
4149
  }
3426
4150
 
3427
4151
  .sc-goal-title {
3428
- flex: 1 1 12rem;
4152
+ flex: 1 1 100%;
3429
4153
  color: var(--sc-color-text);
3430
4154
  font-size: var(--sc-text-lg);
3431
4155
  font-weight: var(--sc-weight-medium);
@@ -3469,11 +4193,6 @@ table {
3469
4193
 
3470
4194
  .sc-goal-tasks-state {
3471
4195
  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
4196
  }
3478
4197
 
3479
4198
  /* The categories: a row each, with its name and its colour open to an administrator. */
@@ -3502,6 +4221,10 @@ table {
3502
4221
  background: var(--sc-color-sheet);
3503
4222
  }
3504
4223
 
4224
+ .sc-category-row > .sc-project-key {
4225
+ margin-inline-start: auto;
4226
+ }
4227
+
3505
4228
  .sc-category-form {
3506
4229
  display: flex;
3507
4230
  flex: 1;
@@ -3534,12 +4257,12 @@ table {
3534
4257
  padding: var(--sc-space-2) var(--sc-space-3);
3535
4258
  border: var(--sc-border);
3536
4259
  border-radius: var(--sc-radius-md);
3537
- background: var(--sc-color-bg-inset);
4260
+ background: var(--sc-color-bg-raised);
3538
4261
  box-shadow: var(--sc-shadow-stage);
3539
4262
  color: var(--sc-color-text);
3540
4263
  font-size: var(--sc-text-xs);
3541
4264
  font-weight: var(--sc-weight-normal);
3542
- line-height: 1.4;
4265
+ line-height: var(--sc-leading-snug);
3543
4266
  text-align: left;
3544
4267
  text-decoration: none;
3545
4268
  white-space: normal;
@@ -3629,13 +4352,17 @@ table {
3629
4352
  padding-inline: var(--sc-space-4);
3630
4353
  }
3631
4354
 
3632
- .sc-brand-symbol,
3633
- .sc-brand-wordmark {
3634
- height: var(--sc-brand-size-compact);
4355
+ .sc-brand {
4356
+ gap: calc(var(--sc-brand-size-compact) * var(--sc-brand-gap-ratio));
3635
4357
  }
3636
4358
 
3637
4359
  .sc-brand-symbol {
3638
4360
  width: var(--sc-brand-size-compact);
4361
+ height: var(--sc-brand-size-compact);
4362
+ }
4363
+
4364
+ .sc-brand-wordmark {
4365
+ height: calc(var(--sc-brand-size-compact) * var(--sc-brand-wordmark-ratio));
3639
4366
  }
3640
4367
 
3641
4368
  .sc-crumb-link {
@@ -3647,15 +4374,18 @@ table {
3647
4374
  display: none;
3648
4375
  }
3649
4376
 
3650
- /* Tabs that do not fit wrap, so that none is hidden off the edge. */
4377
+ /* Tabs that do not fit stay on one line and scroll sideways, the edge fading where more of them
4378
+ are; the current one is brought into view by the shell. */
3651
4379
  .sc-tabs {
3652
4380
  padding-inline: var(--sc-space-4);
3653
- overflow: visible;
4381
+ mask-image: linear-gradient(to right, #000 calc(100% - var(--sc-space-6)), transparent);
3654
4382
  }
3655
4383
 
3656
4384
  .sc-tabs-inner {
3657
- flex-wrap: wrap;
3658
- gap: 0 var(--sc-space-4);
4385
+ gap: var(--sc-space-4);
4386
+ /* As wide as the tabs and some room past the last, so that it scrolls clear of the fading edge. */
4387
+ width: max-content;
4388
+ padding-inline-end: var(--sc-space-6);
3659
4389
  }
3660
4390
 
3661
4391
  .sc-menu-summary .sc-person-login {
@@ -3743,9 +4473,9 @@ table {
3743
4473
  position: static;
3744
4474
  }
3745
4475
 
3746
- .sc-feed-item {
3747
- grid-template-columns: 1fr;
3748
- gap: var(--sc-space-1);
4476
+ /* The rows of a run use the whole width. */
4477
+ .sc-feed-run-list {
4478
+ padding-inline-start: 0;
3749
4479
  }
3750
4480
 
3751
4481
  .sc-sign-in {
@@ -3774,10 +4504,10 @@ table {
3774
4504
  display: inline-flex;
3775
4505
  align-items: center;
3776
4506
  padding: 0 var(--sc-space-3);
3777
- border: 1px solid var(--sc-color-border-strong);
4507
+ border: var(--sc-border-strong);
3778
4508
  border-right: 0;
3779
4509
  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));
4510
+ background: color-mix(in srgb, var(--sc-color-bg-raised) 60%, var(--sc-color-border));
3781
4511
  color: var(--sc-color-text-muted);
3782
4512
  font-size: var(--sc-text-sm);
3783
4513
  white-space: nowrap;
@@ -3807,7 +4537,12 @@ table {
3807
4537
  }
3808
4538
 
3809
4539
  /* The facts of a thing inside a panel: a list in the panel, not a pane of their own. */
4540
+ /* The facts on a settings page, inside a pane of their own: a table, a row per fact with its
4541
+ name in a column on the left and its value beside it, a hairline between rows; the name over
4542
+ the value where the window is narrow. */
3810
4543
  .sc-facts-plain {
4544
+ grid-template-columns: minmax(0, 1fr);
4545
+ gap: 0;
3811
4546
  padding: 0;
3812
4547
  border: 0;
3813
4548
  border-radius: 0;
@@ -3820,6 +4555,44 @@ table {
3820
4555
  content: none;
3821
4556
  }
3822
4557
 
4558
+ .sc-facts-plain > * {
4559
+ display: grid;
4560
+ grid-template-columns: minmax(8rem, 12rem) minmax(0, 1fr);
4561
+ gap: var(--sc-space-1) var(--sc-space-5);
4562
+ align-items: baseline;
4563
+ padding: var(--sc-space-3) 0;
4564
+ border-top: var(--sc-hairline);
4565
+ }
4566
+
4567
+ .sc-facts-plain > :first-child {
4568
+ padding-top: 0;
4569
+ border-top: 0;
4570
+ }
4571
+
4572
+ .sc-facts-plain > :last-child {
4573
+ padding-bottom: 0;
4574
+ }
4575
+
4576
+ .sc-facts-plain dt {
4577
+ color: var(--sc-color-text-muted);
4578
+ font-size: var(--sc-text-sm);
4579
+ font-weight: var(--sc-weight-medium);
4580
+ letter-spacing: 0;
4581
+ text-transform: none;
4582
+ }
4583
+
4584
+ .sc-facts-plain dd {
4585
+ margin-top: 0;
4586
+ font-size: var(--sc-text-md);
4587
+ overflow-wrap: anywhere;
4588
+ }
4589
+
4590
+ @media (max-width: 40rem) {
4591
+ .sc-facts-plain > * {
4592
+ grid-template-columns: minmax(0, 1fr);
4593
+ }
4594
+ }
4595
+
3823
4596
  /* A fact that needs the whole row: a description. */
3824
4597
  .sc-facts-wide {
3825
4598
  grid-column: 1 / -1;
@@ -3875,7 +4648,7 @@ table {
3875
4648
 
3876
4649
  .sc-timeline-title {
3877
4650
  margin: 0;
3878
- font-size: var(--sc-text-base);
4651
+ font-size: var(--sc-text-md);
3879
4652
  font-weight: var(--sc-weight-medium);
3880
4653
  }
3881
4654
 
@@ -3892,14 +4665,19 @@ table {
3892
4665
  gap: var(--sc-space-2);
3893
4666
  }
3894
4667
 
4668
+ /* A label keeps to one line, so that every row is as tall as its bar and the labels line up with
4669
+ the bars: a long title is cut short, said in full on hover, and the state stays beside it. */
3895
4670
  .sc-timeline-label {
3896
4671
  display: flex;
3897
- flex-wrap: wrap;
3898
4672
  align-items: center;
3899
4673
  gap: var(--sc-space-2);
3900
4674
  min-width: 0;
3901
4675
  }
3902
4676
 
4677
+ .sc-timeline-label .sc-badge {
4678
+ flex: none;
4679
+ }
4680
+
3903
4681
  .sc-timeline-goal {
3904
4682
  color: var(--sc-color-text);
3905
4683
  font-size: var(--sc-text-sm);
@@ -3907,6 +4685,13 @@ table {
3907
4685
  overflow-wrap: anywhere;
3908
4686
  }
3909
4687
 
4688
+ .sc-timeline-label .sc-timeline-goal {
4689
+ min-width: 0;
4690
+ overflow: hidden;
4691
+ text-overflow: ellipsis;
4692
+ white-space: nowrap;
4693
+ }
4694
+
3910
4695
  .sc-timeline-goal:hover {
3911
4696
  color: var(--sc-color-accent);
3912
4697
  }
@@ -3946,7 +4731,7 @@ table {
3946
4731
  width: 2px;
3947
4732
  margin-left: -1px;
3948
4733
  background: var(--sc-color-accent);
3949
- opacity: 0.7;
4734
+ opacity: 0.55;
3950
4735
  }
3951
4736
 
3952
4737
  .sc-timeline-today-mark {
@@ -3962,7 +4747,8 @@ table {
3962
4747
  display: flex;
3963
4748
  align-items: center;
3964
4749
  overflow: hidden;
3965
- border-block: 1px solid color-mix(in srgb, var(--sc-category-line) 45%, transparent);
4750
+ border-block: 1px solid
4751
+ color-mix(in srgb, var(--sc-category-mark, var(--sc-category-line)) 60%, transparent);
3966
4752
  background: var(--sc-category-fill);
3967
4753
  color: var(--sc-category-line);
3968
4754
  font-size: var(--sc-text-xs);
@@ -3971,17 +4757,19 @@ table {
3971
4757
  }
3972
4758
 
3973
4759
  .sc-timeline-bar:hover {
3974
- background: color-mix(in srgb, var(--sc-category-fill), white 12%);
4760
+ background: color-mix(in srgb, var(--sc-category-fill), var(--sc-category-line) 14%);
3975
4761
  }
3976
4762
 
3977
4763
  .sc-timeline-bar.sc-timeline-bar-begins {
3978
- border-left: 1px solid color-mix(in srgb, var(--sc-category-line) 45%, transparent);
4764
+ border-left: 1px solid
4765
+ color-mix(in srgb, var(--sc-category-mark, var(--sc-category-line)) 60%, transparent);
3979
4766
  border-start-start-radius: var(--sc-radius-full);
3980
4767
  border-end-start-radius: var(--sc-radius-full);
3981
4768
  }
3982
4769
 
3983
4770
  .sc-timeline-bar.sc-timeline-bar-ends {
3984
- border-right: 1px solid color-mix(in srgb, var(--sc-category-line) 45%, transparent);
4771
+ border-right: 1px solid
4772
+ color-mix(in srgb, var(--sc-category-mark, var(--sc-category-line)) 60%, transparent);
3985
4773
  border-start-end-radius: var(--sc-radius-full);
3986
4774
  border-end-end-radius: var(--sc-radius-full);
3987
4775
  }
@@ -3991,7 +4779,7 @@ table {
3991
4779
  top: 0;
3992
4780
  bottom: 0;
3993
4781
  left: 0;
3994
- background: color-mix(in srgb, var(--sc-category-line) 35%, transparent);
4782
+ background: color-mix(in srgb, var(--sc-category-mark, var(--sc-category-line)) 40%, transparent);
3995
4783
  }
3996
4784
 
3997
4785
  .sc-timeline-words {
@@ -4006,18 +4794,19 @@ table {
4006
4794
  height: 0.75rem;
4007
4795
  margin-left: -0.375rem;
4008
4796
  transform: translateY(-50%) rotate(45deg);
4009
- border: 1px solid color-mix(in srgb, var(--sc-category-line) 60%, transparent);
4797
+ border: 1px solid
4798
+ color-mix(in srgb, var(--sc-category-mark, var(--sc-category-line)) 75%, transparent);
4010
4799
  background: var(--sc-category-fill);
4011
4800
  }
4012
4801
 
4013
4802
  .sc-goal-done .sc-timeline-bar,
4014
4803
  .sc-goal-done .sc-timeline-point {
4015
- opacity: 0.6;
4804
+ opacity: 0.55;
4016
4805
  }
4017
4806
 
4018
4807
  .sc-goal-dropped .sc-timeline-bar,
4019
4808
  .sc-goal-dropped .sc-timeline-point {
4020
- opacity: 0.4;
4809
+ opacity: 0.55;
4021
4810
  }
4022
4811
 
4023
4812
  .sc-timeline-undated {
@@ -4026,6 +4815,7 @@ table {
4026
4815
  }
4027
4816
 
4028
4817
  .sc-goal-days {
4818
+ margin-inline-start: auto;
4029
4819
  color: var(--sc-color-text-muted);
4030
4820
  font-size: var(--sc-text-xs);
4031
4821
  }
@@ -4039,7 +4829,7 @@ table {
4039
4829
  color: var(--sc-category-line, var(--sc-color-text));
4040
4830
  font-size: var(--sc-text-xs);
4041
4831
  font-weight: var(--sc-weight-medium);
4042
- line-height: 1.2;
4832
+ line-height: var(--sc-leading-tight);
4043
4833
  text-decoration: none;
4044
4834
  }
4045
4835
 
@@ -4053,13 +4843,18 @@ table {
4053
4843
  width: 0.5rem;
4054
4844
  height: 0.5rem;
4055
4845
  transform: rotate(45deg);
4056
- background: var(--sc-category-line, var(--sc-color-text-faint));
4846
+ background: var(--sc-category-mark, var(--sc-category-line, var(--sc-color-text-faint)));
4057
4847
  }
4058
4848
 
4059
4849
  @media (max-width: 40rem) {
4060
4850
  .sc-timeline-row {
4061
4851
  grid-template-columns: minmax(6rem, 8rem) minmax(16rem, 1fr);
4062
4852
  }
4853
+
4854
+ /* A narrow label is the title's: the goal's state is on its card below the months. */
4855
+ .sc-timeline-label .sc-badge {
4856
+ display: none;
4857
+ }
4063
4858
  }
4064
4859
 
4065
4860
  /* A card is dragged to another column from anywhere on it but its menu, its title included: with
@@ -4083,7 +4878,7 @@ table {
4083
4878
  }
4084
4879
 
4085
4880
  .sc-card-dragging {
4086
- opacity: 0.4;
4881
+ opacity: 0.55;
4087
4882
  }
4088
4883
 
4089
4884
  .sc-board-dragging,
@@ -4138,7 +4933,7 @@ table {
4138
4933
  }
4139
4934
 
4140
4935
  .sc-card-menu-button:focus-visible {
4141
- outline: 2px solid var(--sc-color-accent);
4936
+ outline: var(--sc-focus-ring);
4142
4937
  outline-offset: 1px;
4143
4938
  }
4144
4939
 
@@ -4172,7 +4967,7 @@ table {
4172
4967
  }
4173
4968
 
4174
4969
  .sc-column-over {
4175
- outline: 2px solid var(--sc-color-accent);
4970
+ outline: var(--sc-focus-ring);
4176
4971
  outline-offset: -2px;
4177
4972
  }
4178
4973
 
@@ -4214,26 +5009,37 @@ table {
4214
5009
  font-size: var(--sc-text-sm);
4215
5010
  }
4216
5011
 
5012
+ .sc-goal-progress .sc-progress-words {
5013
+ display: none;
5014
+ }
5015
+
4217
5016
  .sc-facts-row {
4218
5017
  display: flex;
4219
5018
  flex-wrap: wrap;
4220
- align-items: center;
4221
- gap: var(--sc-space-2) var(--sc-space-5);
5019
+ align-items: stretch;
5020
+ gap: var(--sc-space-3) 0;
4222
5021
  margin: 0;
4223
5022
  font-size: var(--sc-text-sm);
4224
5023
  }
4225
5024
 
4226
5025
  .sc-facts-row > div {
4227
- display: flex;
4228
- align-items: center;
4229
- gap: var(--sc-space-2);
5026
+ display: grid;
5027
+ align-content: start;
5028
+ gap: var(--sc-space-1);
5029
+ padding-inline: var(--sc-space-4);
5030
+ border-inline-start: var(--sc-hairline);
4230
5031
  }
4231
5032
 
4232
- .sc-facts-row dt {
4233
- color: var(--sc-color-text-muted);
5033
+ .sc-facts-row > div:first-child {
5034
+ padding-inline-start: 0;
5035
+ border-inline-start: 0;
4234
5036
  }
4235
5037
 
4236
5038
  .sc-facts-row dd {
5039
+ display: flex;
5040
+ flex-wrap: wrap;
5041
+ align-items: center;
5042
+ gap: var(--sc-space-2);
4237
5043
  margin: 0;
4238
5044
  }
4239
5045
 
@@ -4424,7 +5230,7 @@ table {
4424
5230
 
4425
5231
  .sc-pack-code {
4426
5232
  font-size: var(--sc-text-xl);
4427
- letter-spacing: 0.12em;
5233
+ letter-spacing: var(--sc-tracking-code);
4428
5234
  }
4429
5235
 
4430
5236
  .sc-pack-connect-waiting {
@@ -4438,3 +5244,406 @@ table {
4438
5244
  .sc-pack-actions {
4439
5245
  margin-top: var(--sc-space-5);
4440
5246
  }
5247
+
5248
+ /* Beside a task the facts stand in one column, a hairline between each. */
5249
+ .sc-task-aside .sc-facts {
5250
+ grid-template-columns: minmax(0, 1fr);
5251
+ gap: 0;
5252
+ padding-block: var(--sc-space-2);
5253
+ }
5254
+
5255
+ .sc-task-aside .sc-facts > * {
5256
+ padding: var(--sc-space-2) 0;
5257
+ }
5258
+
5259
+ .sc-task-aside .sc-facts > * + * {
5260
+ border-top: var(--sc-hairline);
5261
+ }
5262
+
5263
+ /* A phone's pages, one by one. */
5264
+ @media (max-width: 40rem) {
5265
+ /* The board: a column nearly as wide as the window, so that a card's title has room and one
5266
+ column is read at a time, the next peeking in from the side. */
5267
+ .sc-column {
5268
+ flex-basis: min(18rem, 82vw);
5269
+ }
5270
+
5271
+ /* The filters scroll as a row; a select with long choices keeps to a width of its own. */
5272
+ .sc-filters .sc-input {
5273
+ max-width: 11rem;
5274
+ }
5275
+
5276
+ /* A task's facts: one to a row, as on the wide layout's side, instead of two abreast with
5277
+ the select and the dates pressed against each other. */
5278
+ .sc-task .sc-task-aside .sc-facts {
5279
+ grid-template-columns: minmax(0, 1fr);
5280
+ }
5281
+
5282
+ .sc-facts .sc-input {
5283
+ max-width: 100%;
5284
+ }
5285
+
5286
+ /* A goal's card: the badges on one line, the span of days on a line of its own. */
5287
+ .sc-goal-days {
5288
+ flex: 1 1 100%;
5289
+ margin-inline-start: 0;
5290
+ }
5291
+
5292
+ /* The goal page's progress: the words under the bar. */
5293
+ .sc-goal-progress {
5294
+ grid-template-columns: minmax(0, 1fr);
5295
+ gap: var(--sc-space-1);
5296
+ }
5297
+
5298
+ /* The roadmap's months: too narrow for the year and the month on one line, so the two
5299
+ stand one over the other, small. */
5300
+ .sc-timeline-month {
5301
+ padding-inline: 2px;
5302
+ font-size: 0.6rem;
5303
+ line-height: var(--sc-leading-tight);
5304
+ white-space: normal;
5305
+ word-break: keep-all;
5306
+ overflow: visible;
5307
+ text-overflow: clip;
5308
+ }
5309
+
5310
+ /* A bar on the month reaches over the gap between the cells, which is narrower here. */
5311
+ .sc-calendar-bar {
5312
+ margin-inline: calc(-1 * var(--sc-space-1) - 2px - 1px);
5313
+ }
5314
+
5315
+ .sc-calendar-bar-begins {
5316
+ margin-left: 0;
5317
+ }
5318
+
5319
+ .sc-calendar-bar-ends {
5320
+ margin-right: 0;
5321
+ }
5322
+
5323
+ /* "N more" on a day keeps to one line, small enough for the cell. */
5324
+ .sc-calendar-more {
5325
+ padding-inline: 0;
5326
+ font-size: 0.65rem;
5327
+ overflow: hidden;
5328
+ white-space: nowrap;
5329
+ text-overflow: ellipsis;
5330
+ }
5331
+
5332
+ /* A bar reaching past the week stops at the edge of the month. */
5333
+ .sc-calendar-grid {
5334
+ clip-path: inset(0);
5335
+ }
5336
+ }
5337
+
5338
+ /* A phone's pages as one design. */
5339
+ @media (max-width: 40rem) {
5340
+ /* Every page's head: the name, a word about it under the name, and the ways the page offers
5341
+ as a row of equal buttons under those, so that no head differs from another. */
5342
+ .sc-page-head {
5343
+ display: grid;
5344
+ justify-content: stretch;
5345
+ gap: var(--sc-space-3);
5346
+ margin-bottom: var(--sc-space-5);
5347
+ }
5348
+
5349
+ .sc-page-heading {
5350
+ display: grid;
5351
+ row-gap: var(--sc-space-1);
5352
+ }
5353
+
5354
+ .sc-page-lead {
5355
+ flex: none;
5356
+ }
5357
+
5358
+ .sc-page-actions {
5359
+ flex-wrap: nowrap;
5360
+ width: 100%;
5361
+ }
5362
+
5363
+ .sc-page-actions > * {
5364
+ flex: 1 1 0;
5365
+ justify-content: center;
5366
+ min-width: 0;
5367
+ }
5368
+
5369
+ /* A head with one way alone gives it the whole width too. */
5370
+ .sc-page-head > .sc-button {
5371
+ width: 100%;
5372
+ justify-content: center;
5373
+ }
5374
+
5375
+ /* The tabs snap tab by tab, the first keeping its room from the edge. */
5376
+ .sc-tabs {
5377
+ scroll-snap-type: x proximity;
5378
+ scroll-padding-inline: var(--sc-space-4);
5379
+ }
5380
+
5381
+ .sc-tab {
5382
+ scroll-snap-align: start;
5383
+ }
5384
+
5385
+ /* The panes: one padding and one radius for all of them. */
5386
+ .sc-project,
5387
+ .sc-goal,
5388
+ .sc-skill,
5389
+ .sc-run,
5390
+ .sc-decision,
5391
+ .sc-comment,
5392
+ .sc-facts {
5393
+ padding: var(--sc-space-4);
5394
+ border-radius: var(--sc-radius-lg);
5395
+ }
5396
+
5397
+ /* The board scrolls from edge to edge of the window, its columns snapping into place. */
5398
+ .sc-board {
5399
+ min-height: 0;
5400
+ margin-inline: calc(-1 * var(--sc-space-4));
5401
+ padding-inline: var(--sc-space-4);
5402
+ scroll-padding-inline: var(--sc-space-4);
5403
+ }
5404
+
5405
+ .sc-filters {
5406
+ margin-bottom: var(--sc-space-4);
5407
+ }
5408
+
5409
+ /* A task's head: the parent on one line, the title, the badges, then the ways as a row of
5410
+ equal buttons. */
5411
+ .sc-task-header {
5412
+ display: grid;
5413
+ justify-content: stretch;
5414
+ gap: var(--sc-space-3);
5415
+ }
5416
+
5417
+ .sc-task-parent {
5418
+ overflow: hidden;
5419
+ white-space: nowrap;
5420
+ text-overflow: ellipsis;
5421
+ }
5422
+
5423
+ .sc-task-actions {
5424
+ flex-wrap: nowrap;
5425
+ align-items: stretch;
5426
+ }
5427
+
5428
+ .sc-task-actions > * {
5429
+ flex: 1 1 0;
5430
+ justify-content: center;
5431
+ min-width: 0;
5432
+ }
5433
+
5434
+ /* The calendar's legend, tighter; what is under the month, further apart. */
5435
+ .sc-calendar-legend {
5436
+ gap: var(--sc-space-1) var(--sc-space-3);
5437
+ }
5438
+
5439
+ .sc-calendar-below {
5440
+ gap: var(--sc-space-6);
5441
+ }
5442
+
5443
+ /* The roadmap's label column, narrower, so that the months have the room. */
5444
+ .sc-timeline-row {
5445
+ grid-template-columns: minmax(5.5rem, 7rem) minmax(14rem, 1fr);
5446
+ }
5447
+ }
5448
+
5449
+ /* A phone's month: a dot per task per day. */
5450
+ @media (max-width: 40rem) {
5451
+ .sc-calendar-cell {
5452
+ height: auto;
5453
+ min-height: 3.25rem;
5454
+ padding: 2px var(--sc-space-1) var(--sc-space-1);
5455
+ /* The rows of dots as tall as the dots, not as tall as a line of text. */
5456
+ line-height: 0;
5457
+ }
5458
+
5459
+ .sc-calendar-day,
5460
+ .sc-calendar-more {
5461
+ line-height: var(--sc-leading-snug);
5462
+ }
5463
+
5464
+ .sc-calendar-lane {
5465
+ display: none;
5466
+ }
5467
+
5468
+ /* A task planned across days: a dot on each of its days, in its category's colour, the
5469
+ late one in the danger colour; nothing of the bar remains. */
5470
+ .sc-calendar-bar,
5471
+ .sc-calendar-bar-begins,
5472
+ .sc-calendar-bar-ends {
5473
+ display: inline-block;
5474
+ width: 0.5rem;
5475
+ height: 0.5rem;
5476
+ margin: 2px 3px 0 0;
5477
+ padding: 0;
5478
+ border: 0;
5479
+ border-radius: var(--sc-radius-full);
5480
+ background: var(--sc-category-mark, var(--sc-category-line));
5481
+ vertical-align: top;
5482
+ }
5483
+
5484
+ .sc-calendar-bar.sc-calendar-late {
5485
+ background: var(--sc-color-danger);
5486
+ }
5487
+
5488
+ /* A task on its day: the same dot. */
5489
+ .sc-calendar-task {
5490
+ margin: 2px 3px 0 0;
5491
+ vertical-align: top;
5492
+ }
5493
+
5494
+ .sc-calendar-dot {
5495
+ width: 0.5rem;
5496
+ height: 0.5rem;
5497
+ }
5498
+
5499
+ .sc-calendar-more {
5500
+ margin-top: 2px;
5501
+ text-align: left;
5502
+ }
5503
+ }
5504
+
5505
+ /* A day's number is a button: pressed, the day's tasks are listed under the month. */
5506
+ .sc-calendar-day[type="button"] {
5507
+ width: auto;
5508
+ margin-inline-start: calc(-1 * var(--sc-space-1));
5509
+ padding: 0 var(--sc-space-1);
5510
+ border: 0;
5511
+ border-radius: var(--sc-radius-sm);
5512
+ background: transparent;
5513
+ color: inherit;
5514
+ font: inherit;
5515
+ font-size: var(--sc-text-xs);
5516
+ font-weight: var(--sc-weight-medium);
5517
+ line-height: var(--sc-leading-snug);
5518
+ text-align: left;
5519
+ cursor: pointer;
5520
+ }
5521
+
5522
+ .sc-calendar-day[type="button"]:hover {
5523
+ background: var(--sc-color-sheet-hover);
5524
+ }
5525
+
5526
+ .sc-calendar-day[aria-pressed="true"] {
5527
+ background: var(--sc-color-accent);
5528
+ color: #ffffff;
5529
+ }
5530
+
5531
+ .sc-calendar-cell-picked {
5532
+ border-color: var(--sc-color-accent);
5533
+ background: color-mix(in srgb, var(--sc-color-accent) 6%, var(--sc-color-sheet));
5534
+ }
5535
+
5536
+ /* The tasks of the picked day, under the month: a pane with the day over the rows. */
5537
+ .sc-calendar-day-list {
5538
+ display: grid;
5539
+ gap: var(--sc-space-3);
5540
+ margin-top: var(--sc-space-4);
5541
+ padding: var(--sc-space-4);
5542
+ border: var(--sc-border);
5543
+ border-radius: var(--sc-radius-lg);
5544
+ background: var(--sc-color-sheet);
5545
+ }
5546
+
5547
+ .sc-calendar-day-list-head {
5548
+ display: flex;
5549
+ align-items: center;
5550
+ justify-content: space-between;
5551
+ gap: var(--sc-space-2);
5552
+ }
5553
+
5554
+ .sc-calendar-day-list-title {
5555
+ display: flex;
5556
+ align-items: center;
5557
+ gap: var(--sc-space-2);
5558
+ margin: 0;
5559
+ font-size: var(--sc-text-md);
5560
+ font-weight: var(--sc-weight-bold);
5561
+ }
5562
+
5563
+ /* How many a day holds: said on a phone, where the day shows three dots and no more. */
5564
+ .sc-calendar-count {
5565
+ display: none;
5566
+ }
5567
+
5568
+ @media (max-width: 40rem) {
5569
+ /* The number covers the whole day, so that a finger anywhere on it lists the day's tasks;
5570
+ the dots and the count under it are a picture, not targets. */
5571
+ .sc-calendar-cell {
5572
+ position: relative;
5573
+ padding-top: 1.375rem;
5574
+ }
5575
+
5576
+ .sc-calendar-day[type="button"] {
5577
+ position: absolute;
5578
+ inset: 0;
5579
+ z-index: 1;
5580
+ display: flex;
5581
+ align-items: flex-start;
5582
+ justify-content: flex-start;
5583
+ width: auto;
5584
+ margin: 0;
5585
+ padding: 2px var(--sc-space-1);
5586
+ border-radius: var(--sc-radius-md);
5587
+ }
5588
+
5589
+ /* No pointer rests on a phone; a finger that tapped must not leave a sheet over the dots. */
5590
+ .sc-calendar-day[type="button"]:hover {
5591
+ background: transparent;
5592
+ }
5593
+
5594
+ .sc-calendar-day[aria-pressed="true"] {
5595
+ background: transparent;
5596
+ color: var(--sc-color-accent);
5597
+ font-weight: var(--sc-weight-bold);
5598
+ }
5599
+
5600
+ .sc-calendar-cell > a,
5601
+ .sc-calendar-cell > .sc-calendar-more {
5602
+ pointer-events: none;
5603
+ }
5604
+
5605
+ .sc-calendar-cell > a:nth-of-type(n + 4),
5606
+ .sc-calendar-cell > .sc-calendar-more {
5607
+ display: none;
5608
+ }
5609
+
5610
+ .sc-calendar-count {
5611
+ display: block;
5612
+ width: fit-content;
5613
+ min-width: 1rem;
5614
+ margin-top: 3px;
5615
+ padding: 0 4px;
5616
+ border-radius: var(--sc-radius-full);
5617
+ background: color-mix(in srgb, var(--sc-color-text-muted) 14%, transparent);
5618
+ color: var(--sc-color-text-muted);
5619
+ font-size: 0.625rem;
5620
+ font-weight: var(--sc-weight-medium);
5621
+ line-height: 1rem;
5622
+ text-align: center;
5623
+ }
5624
+
5625
+ .sc-calendar-day-list {
5626
+ margin-top: var(--sc-space-3);
5627
+ }
5628
+ }
5629
+
5630
+ /* The end of a phone's header: the live dot, the avatar and the caret close together. */
5631
+ @media (max-width: 40rem) {
5632
+ .sc-header-end {
5633
+ gap: 0;
5634
+ }
5635
+
5636
+ .sc-menu-summary {
5637
+ gap: var(--sc-space-1);
5638
+ padding-inline: var(--sc-space-1);
5639
+ }
5640
+ }
5641
+
5642
+ /* The ways under a comment's field stand on one row at one height, the small file button
5643
+ included, so that none sits lower than the one beside it. */
5644
+ .sc-comment-form-actions > .sc-button,
5645
+ .sc-comment-form-actions > label {
5646
+ min-height: var(--sc-control-size);
5647
+ padding-inline: var(--sc-space-4);
5648
+ font-size: var(--sc-text-sm);
5649
+ }