@skillcdn/console 0.1.3 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/README.md +7 -6
  2. package/dist/api.d.ts +4 -3
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +4 -3
  5. package/dist/api.js.map +1 -1
  6. package/dist/cli/cli.d.ts +3 -3
  7. package/dist/cli/cli.d.ts.map +1 -1
  8. package/dist/cli/cli.js +45 -15
  9. package/dist/cli/cli.js.map +1 -1
  10. package/dist/cli/credentials.d.ts +1 -1
  11. package/dist/cli/help.d.ts.map +1 -1
  12. package/dist/cli/help.js +7 -4
  13. package/dist/cli/help.js.map +1 -1
  14. package/dist/cli/main.js +3 -2
  15. package/dist/cli/main.js.map +1 -1
  16. package/dist/cli/terminal.d.ts +0 -5
  17. package/dist/cli/terminal.d.ts.map +1 -1
  18. package/dist/cli/terminal.js +0 -43
  19. package/dist/cli/terminal.js.map +1 -1
  20. package/dist/client.d.ts +20 -1
  21. package/dist/client.d.ts.map +1 -1
  22. package/dist/client.js +10 -2
  23. package/dist/client.js.map +1 -1
  24. package/dist/components/board.d.ts.map +1 -1
  25. package/dist/components/board.js +6 -3
  26. package/dist/components/board.js.map +1 -1
  27. package/dist/components/connect.d.ts +28 -0
  28. package/dist/components/connect.d.ts.map +1 -0
  29. package/dist/components/connect.js +30 -0
  30. package/dist/components/connect.js.map +1 -0
  31. package/dist/components/decision-form.d.ts.map +1 -1
  32. package/dist/components/decision-form.js +4 -1
  33. package/dist/components/decision-form.js.map +1 -1
  34. package/dist/components/decision-list.d.ts +4 -0
  35. package/dist/components/decision-list.d.ts.map +1 -1
  36. package/dist/components/decision-list.js +15 -7
  37. package/dist/components/decision-list.js.map +1 -1
  38. package/dist/components/documents.d.ts +7 -5
  39. package/dist/components/documents.d.ts.map +1 -1
  40. package/dist/components/documents.js +28 -16
  41. package/dist/components/documents.js.map +1 -1
  42. package/dist/components/event-feed.d.ts +3 -2
  43. package/dist/components/event-feed.d.ts.map +1 -1
  44. package/dist/components/event-feed.js +50 -52
  45. package/dist/components/event-feed.js.map +1 -1
  46. package/dist/components/people.d.ts +2 -0
  47. package/dist/components/people.d.ts.map +1 -1
  48. package/dist/components/people.js +4 -2
  49. package/dist/components/people.js.map +1 -1
  50. package/dist/components/projects.d.ts +1 -0
  51. package/dist/components/projects.d.ts.map +1 -1
  52. package/dist/components/projects.js +16 -10
  53. package/dist/components/projects.js.map +1 -1
  54. package/dist/components/runs.d.ts +1 -0
  55. package/dist/components/runs.d.ts.map +1 -1
  56. package/dist/components/runs.js +6 -2
  57. package/dist/components/runs.js.map +1 -1
  58. package/dist/components/shell.d.ts +32 -1
  59. package/dist/components/shell.d.ts.map +1 -1
  60. package/dist/components/shell.js +56 -8
  61. package/dist/components/shell.js.map +1 -1
  62. package/dist/components/sign-in.d.ts +3 -0
  63. package/dist/components/sign-in.d.ts.map +1 -1
  64. package/dist/components/sign-in.js +3 -9
  65. package/dist/components/sign-in.js.map +1 -1
  66. package/dist/components/skills.d.ts.map +1 -1
  67. package/dist/components/skills.js +8 -12
  68. package/dist/components/skills.js.map +1 -1
  69. package/dist/components/task-form.d.ts.map +1 -1
  70. package/dist/components/task-form.js +5 -2
  71. package/dist/components/task-form.js.map +1 -1
  72. package/dist/components/task-view.d.ts +7 -0
  73. package/dist/components/task-view.d.ts.map +1 -1
  74. package/dist/components/task-view.js +6 -13
  75. package/dist/components/task-view.js.map +1 -1
  76. package/dist/components/tokens.d.ts +12 -0
  77. package/dist/components/tokens.d.ts.map +1 -1
  78. package/dist/components/tokens.js +25 -10
  79. package/dist/components/tokens.js.map +1 -1
  80. package/dist/components/ui.d.ts +3 -3
  81. package/dist/components/ui.d.ts.map +1 -1
  82. package/dist/components/ui.js +15 -9
  83. package/dist/components/ui.js.map +1 -1
  84. package/dist/connect-page.d.ts +10 -0
  85. package/dist/connect-page.d.ts.map +1 -0
  86. package/dist/connect-page.js +67 -0
  87. package/dist/connect-page.js.map +1 -0
  88. package/dist/connect.d.ts +11 -0
  89. package/dist/connect.d.ts.map +1 -0
  90. package/dist/connect.js +24 -0
  91. package/dist/connect.js.map +1 -0
  92. package/dist/console.css +976 -201
  93. package/dist/console.d.ts +6 -1
  94. package/dist/console.d.ts.map +1 -1
  95. package/dist/console.js +339 -136
  96. package/dist/console.js.map +1 -1
  97. package/dist/data.d.ts +10 -1
  98. package/dist/data.d.ts.map +1 -1
  99. package/dist/data.js +10 -0
  100. package/dist/data.js.map +1 -1
  101. package/dist/docs-page.d.ts +4 -1
  102. package/dist/docs-page.d.ts.map +1 -1
  103. package/dist/docs-page.js +74 -54
  104. package/dist/docs-page.js.map +1 -1
  105. package/dist/i18n/en.d.ts +473 -0
  106. package/dist/i18n/en.d.ts.map +1 -0
  107. package/dist/i18n/en.js +483 -0
  108. package/dist/i18n/en.js.map +1 -0
  109. package/dist/i18n/index.d.ts +26 -0
  110. package/dist/i18n/index.d.ts.map +1 -0
  111. package/dist/i18n/index.js +46 -0
  112. package/dist/i18n/index.js.map +1 -0
  113. package/dist/i18n/ko.d.ts +3 -0
  114. package/dist/i18n/ko.d.ts.map +1 -0
  115. package/dist/i18n/ko.js +472 -0
  116. package/dist/i18n/ko.js.map +1 -0
  117. package/dist/index.d.ts +5 -2
  118. package/dist/index.d.ts.map +1 -1
  119. package/dist/index.js +5 -2
  120. package/dist/index.js.map +1 -1
  121. package/dist/limits.d.ts +4 -0
  122. package/dist/limits.d.ts.map +1 -1
  123. package/dist/limits.js +4 -0
  124. package/dist/limits.js.map +1 -1
  125. package/dist/router.d.ts +88 -11
  126. package/dist/router.d.ts.map +1 -1
  127. package/dist/router.js +163 -34
  128. package/dist/router.js.map +1 -1
  129. package/dist/routes.d.ts +8 -0
  130. package/dist/routes.d.ts.map +1 -1
  131. package/dist/routes.js +14 -0
  132. package/dist/routes.js.map +1 -1
  133. package/dist/schemas.d.ts +59 -2
  134. package/dist/schemas.d.ts.map +1 -1
  135. package/dist/schemas.js +55 -9
  136. package/dist/schemas.js.map +1 -1
  137. package/dist/use-action.d.ts +2 -1
  138. package/dist/use-action.d.ts.map +1 -1
  139. package/dist/use-action.js +7 -3
  140. package/dist/use-action.js.map +1 -1
  141. package/package.json +1 -1
package/dist/console.css CHANGED
@@ -1,42 +1,109 @@
1
1
  /*
2
2
  * The styles of the default console: the design tokens, the reset the pages need, and one class
3
3
  * per building block, all prefixed `sc-` so that a custom console's own styles never collide
4
- * with them. Re-skinning starts and mostly ends with the tokens. Dark, with one accent.
4
+ * with them. Re-skinning starts and mostly ends with the tokens.
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.
5
9
  */
6
10
 
7
11
  :root {
8
12
  color-scheme: dark;
9
13
 
10
- --sc-color-bg: #0c1118;
11
- --sc-color-bg-subtle: #111823;
12
- --sc-color-bg-inset: #18202c;
13
- --sc-color-bg-raised: #1d2735;
14
- --sc-color-border: #263142;
15
- --sc-color-border-strong: #3a4859;
16
- --sc-color-text: #e7ebf0;
17
- --sc-color-text-muted: #9ba6b4;
18
- --sc-color-text-faint: #76829a;
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;
21
+
22
+ /* Text. */
23
+ --sc-color-text: #e8ebf0;
24
+ --sc-color-text-muted: #9aa4b2;
25
+ --sc-color-text-faint: #8b97a9;
26
+
27
+ /* 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. */
19
29
  --sc-color-accent: #6ea1ff;
20
30
  --sc-color-accent-hover: #8fb6ff;
21
31
  --sc-color-accent-solid: #3b6fd4;
22
- --sc-color-accent-solid-hover: #4a7ce0;
32
+ --sc-color-accent-solid-hover: #4171d8;
23
33
  --sc-color-accent-contrast: #ffffff;
24
- --sc-color-accent-subtle: #13203a;
34
+ --sc-color-accent-subtle: #111a2b;
35
+ /* The point: the only warm colour, for what should be looked at first, never for a control. */
25
36
  --sc-color-point: #ffb13a;
26
- --sc-color-point-subtle: #2a1d0b;
37
+ --sc-color-point-subtle: #2a1a0e;
38
+ --sc-color-selection: color-mix(in srgb, var(--sc-color-accent-solid) 60%, transparent);
39
+
40
+ /* Status. */
27
41
  --sc-color-success: #4cc38a;
28
- --sc-color-success-subtle: #0d1f16;
42
+ --sc-color-success-subtle: #0d1a13;
29
43
  --sc-color-warning: #e3b341;
30
- --sc-color-warning-subtle: #241c0a;
44
+ --sc-color-warning-subtle: #201a0c;
31
45
  --sc-color-danger: #ff7b85;
32
- --sc-color-danger-subtle: #2a1014;
33
- --sc-color-selection: rgba(59, 111, 212, 0.6);
34
-
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. */
89
+ --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;
98
+
99
+ /* Type. The Korean face comes first where the page provides it; the Latin stays with the
100
+ system's faces. */
35
101
  --sc-font-sans:
36
- system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Apple SD Gothic Neo",
37
- "Malgun Gothic", "Noto Sans KR", Arial, sans-serif;
102
+ "Pretendard Variable", system-ui, -apple-system, "Segoe UI", Roboto, "Apple SD Gothic Neo",
103
+ "Malgun Gothic", "Noto Sans KR", "Helvetica Neue", Arial, sans-serif;
38
104
  --sc-font-mono:
39
- ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
105
+ ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", "D2Coding",
106
+ monospace;
40
107
 
41
108
  --sc-text-xs: 0.75rem;
42
109
  --sc-text-sm: 0.875rem;
@@ -44,11 +111,18 @@
44
111
  --sc-text-lg: 1.125rem;
45
112
  --sc-text-xl: 1.375rem;
46
113
  --sc-text-2xl: 1.75rem;
47
- --sc-leading-tight: 1.25;
48
- --sc-leading-normal: 1.55;
114
+ --sc-leading-tight: 1.2;
115
+ --sc-leading-normal: 1.6;
116
+ --sc-leading-code: 1.7;
117
+ --sc-weight-normal: 400;
49
118
  --sc-weight-medium: 500;
50
119
  --sc-weight-bold: 650;
120
+ /* Every face leaves more room above a line than below it, so a one-line label centred in a
121
+ box lands low; a box that centres a label takes this off the top and gives it to the
122
+ bottom. Not for anything that can wrap. */
123
+ --sc-label-lift: 0.067em;
51
124
 
125
+ /* Space: a 4px grid. */
52
126
  --sc-space-1: 0.25rem;
53
127
  --sc-space-2: 0.5rem;
54
128
  --sc-space-3: 0.75rem;
@@ -56,19 +130,27 @@
56
130
  --sc-space-5: 1.5rem;
57
131
  --sc-space-6: 2rem;
58
132
  --sc-space-7: 3rem;
133
+ --sc-space-8: 4.5rem;
59
134
 
135
+ /* Shape. */
60
136
  --sc-radius-sm: 4px;
61
137
  --sc-radius-md: 8px;
62
138
  --sc-radius-lg: 12px;
139
+ --sc-radius-xl: 20px;
63
140
  --sc-radius-full: 999px;
64
141
  --sc-border: 1px solid var(--sc-color-border);
65
142
 
143
+ /* Layout. */
66
144
  --sc-width-page: 84rem;
67
145
  --sc-width-prose: 46rem;
68
- --sc-column-width: 17rem;
146
+ --sc-width-aside: 18rem;
147
+ --sc-column-width: 13.5rem;
148
+ --sc-header-height: 3.75rem;
149
+ --sc-brand-size: 1.25rem;
150
+ --sc-brand-size-compact: 1.125rem;
151
+ --sc-control-size: 2.5rem;
69
152
  --sc-focus-ring: 2px solid var(--sc-color-accent);
70
153
  --sc-transition: 120ms ease-out;
71
- --sc-shadow: 0 0.5rem 1.5rem -0.75rem rgba(0, 0, 0, 0.6);
72
154
  }
73
155
 
74
156
  /* Reset: only what the pages need. */
@@ -82,6 +164,7 @@
82
164
  html {
83
165
  -webkit-text-size-adjust: 100%;
84
166
  text-size-adjust: 100%;
167
+ scroll-padding-top: calc(var(--sc-header-height) + var(--sc-space-6));
85
168
  }
86
169
 
87
170
  body {
@@ -93,8 +176,10 @@ body {
93
176
  font-size: var(--sc-text-md);
94
177
  line-height: var(--sc-leading-normal);
95
178
  -webkit-font-smoothing: antialiased;
179
+ text-rendering: optimizeLegibility;
96
180
  }
97
181
 
182
+ /* Korean breaks between any two syllables by default; keeping words whole reads much better. */
98
183
  :lang(ko) {
99
184
  word-break: keep-all;
100
185
  overflow-wrap: anywhere;
@@ -121,6 +206,7 @@ h4 {
121
206
  line-height: var(--sc-leading-tight);
122
207
  font-weight: var(--sc-weight-bold);
123
208
  letter-spacing: -0.01em;
209
+ text-wrap: balance;
124
210
  }
125
211
 
126
212
  ul,
@@ -171,6 +257,10 @@ svg {
171
257
  max-width: 100%;
172
258
  }
173
259
 
260
+ table {
261
+ border-collapse: collapse;
262
+ }
263
+
174
264
  ::selection {
175
265
  background: var(--sc-color-selection);
176
266
  color: var(--sc-color-accent-contrast);
@@ -192,12 +282,87 @@ svg {
192
282
  color: var(--sc-color-text-muted);
193
283
  }
194
284
 
195
- /* The shell: a header with the name, the pages and the person; the page below it. */
285
+ /* A block that lays its children out as a grid lets each of them shrink to the room there is,
286
+ so that what is wider than the window, a table or a long address, scrolls within its own box
287
+ instead of widening the page. */
288
+ .sc-task-main > *,
289
+ .sc-task-aside > *,
290
+ .sc-task-section > *,
291
+ .sc-decisions > *,
292
+ .sc-decision > *,
293
+ .sc-decision-section > *,
294
+ .sc-answer > *,
295
+ .sc-answer-form > *,
296
+ .sc-run > *,
297
+ .sc-report > *,
298
+ .sc-feed > *,
299
+ .sc-card > *,
300
+ .sc-form > *,
301
+ .sc-field > *,
302
+ .sc-folder > *,
303
+ .sc-docs > *,
304
+ .sc-column-body > * {
305
+ min-width: 0;
306
+ }
307
+
308
+ /*
309
+ * The shell (ADR-0010): the field the pages lie on, a header that names the product, the
310
+ * workspace and the project with the person's menu at its end, the tabs of the level the
311
+ * person is on, and the page below.
312
+ */
196
313
 
197
314
  .sc-shell {
315
+ position: relative;
316
+ isolation: isolate;
198
317
  display: flex;
199
318
  flex-direction: column;
200
319
  min-height: 100dvh;
320
+ overflow-x: clip;
321
+ background-color: var(--sc-color-sky);
322
+ /* The far light: low, wide and vague, which is what distance does to a light. */
323
+ background-image: radial-gradient(
324
+ ellipse 120% 64% at 50% 92%,
325
+ var(--sc-color-far),
326
+ var(--sc-color-far-turn) 48%,
327
+ transparent 72%
328
+ );
329
+ background-attachment: fixed;
330
+ }
331
+
332
+ /* The near light, high behind the header: an ellipse that is blurred rather than a gradient,
333
+ because a blur falls off the way light does. Fixed to the window, so that the page travels
334
+ through the light and the light stays where it is. */
335
+ .sc-shell::before {
336
+ content: "";
337
+ position: fixed;
338
+ z-index: -1;
339
+ top: var(--sc-light-top);
340
+ left: var(--sc-light-inset);
341
+ right: var(--sc-light-inset);
342
+ height: var(--sc-light-height);
343
+ background: radial-gradient(
344
+ ellipse closest-side,
345
+ var(--sc-color-light-core) 0%,
346
+ var(--sc-color-light-body) 14%,
347
+ var(--sc-color-light-mid) 42%,
348
+ var(--sc-color-light-halo) 70%,
349
+ transparent 100%
350
+ );
351
+ filter: blur(var(--sc-light-blur));
352
+ opacity: var(--sc-light-strength);
353
+ pointer-events: none;
354
+ }
355
+
356
+ /* The air over both lights: the corners and the foot of the window taken down. */
357
+ .sc-shell::after {
358
+ content: "";
359
+ position: fixed;
360
+ z-index: -1;
361
+ inset: 0;
362
+ background-image:
363
+ linear-gradient(to bottom, transparent 60%, var(--sc-color-vignette)),
364
+ radial-gradient(ellipse 130% 110% at 50% 30%, transparent 36%, var(--sc-color-vignette) 100%);
365
+ pointer-events: none;
201
366
  }
202
367
 
203
368
  .sc-skip {
@@ -222,21 +387,28 @@ svg {
222
387
  top: 0;
223
388
  z-index: 10;
224
389
  border-bottom: var(--sc-border);
225
- background: color-mix(in srgb, var(--sc-color-bg) 88%, transparent);
226
- backdrop-filter: blur(12px);
390
+ background: color-mix(in srgb, var(--sc-color-bg) 82%, transparent);
391
+ backdrop-filter: blur(12px) saturate(1.4);
227
392
  }
228
393
 
229
394
  .sc-header-inner {
230
395
  display: flex;
231
396
  align-items: center;
232
- gap: var(--sc-space-5);
397
+ gap: var(--sc-space-4);
398
+ width: 100%;
233
399
  max-width: var(--sc-width-page);
234
- min-height: 3.5rem;
400
+ height: var(--sc-header-height);
235
401
  margin-inline: auto;
236
402
  padding-inline: var(--sc-space-5);
237
403
  }
238
404
 
405
+ /* The brand: the lockup of the symbol and the wordmark where the console has marks, the name
406
+ of the workspace where it has none. The lockup stands as tall as the words beside it. */
239
407
  .sc-brand {
408
+ display: inline-flex;
409
+ flex: none;
410
+ align-items: center;
411
+ gap: var(--sc-space-2);
240
412
  color: var(--sc-color-text);
241
413
  font-weight: var(--sc-weight-bold);
242
414
  letter-spacing: -0.01em;
@@ -244,58 +416,99 @@ svg {
244
416
  white-space: nowrap;
245
417
  }
246
418
 
419
+ .sc-brand:hover {
420
+ color: var(--sc-color-text);
421
+ }
422
+
423
+ .sc-brand-symbol {
424
+ width: var(--sc-brand-size);
425
+ height: var(--sc-brand-size);
426
+ }
427
+
428
+ .sc-brand-wordmark {
429
+ width: auto;
430
+ height: var(--sc-brand-size);
431
+ }
432
+
433
+ .sc-brand-name {
434
+ font-size: var(--sc-text-md);
435
+ }
436
+
247
437
  .sc-crumb {
248
438
  display: inline-flex;
249
439
  align-items: center;
250
440
  gap: var(--sc-space-2);
251
441
  min-width: 0;
442
+ font-size: var(--sc-text-sm);
252
443
  white-space: nowrap;
253
444
  }
254
445
 
255
446
  .sc-crumb-separator {
256
- color: var(--sc-color-text-faint);
447
+ color: var(--sc-color-border-strong);
257
448
  }
258
449
 
259
450
  .sc-crumb-link {
260
451
  overflow: hidden;
261
452
  max-width: 14rem;
262
- color: var(--sc-color-text);
453
+ color: var(--sc-color-text-muted);
263
454
  font-weight: var(--sc-weight-medium);
264
455
  text-decoration: none;
265
456
  text-overflow: ellipsis;
457
+ transition: color var(--sc-transition);
458
+ }
459
+
460
+ .sc-crumb-link:hover {
461
+ color: var(--sc-color-text);
462
+ }
463
+
464
+ /* The last crumb is where the page is. */
465
+ .sc-crumb:last-of-type .sc-crumb-link {
466
+ color: var(--sc-color-text);
467
+ }
468
+
469
+ /* The tabs: the pages of the level the person is on, under the header's first row. */
470
+
471
+ .sc-tabs {
472
+ width: 100%;
473
+ max-width: var(--sc-width-page);
474
+ margin-inline: auto;
475
+ padding-inline: var(--sc-space-5);
476
+ overflow-x: auto;
477
+ scrollbar-width: none;
266
478
  }
267
479
 
268
- .sc-nav {
480
+ .sc-tabs-inner {
269
481
  display: flex;
270
- flex-wrap: wrap;
271
- gap: var(--sc-space-1);
482
+ gap: var(--sc-space-5);
272
483
  }
273
484
 
274
- .sc-nav-link {
485
+ .sc-tab {
275
486
  display: inline-flex;
276
487
  align-items: center;
277
488
  gap: var(--sc-space-2);
278
- padding: var(--sc-space-1) var(--sc-space-3);
279
- border-radius: var(--sc-radius-md);
489
+ padding: var(--sc-space-2) 0 var(--sc-space-3);
490
+ margin-bottom: -1px;
491
+ border-bottom: 2px solid transparent;
280
492
  color: var(--sc-color-text-muted);
281
493
  font-size: var(--sc-text-sm);
282
494
  font-weight: var(--sc-weight-medium);
283
495
  text-decoration: none;
496
+ white-space: nowrap;
284
497
  transition:
285
- background var(--sc-transition),
498
+ border-color var(--sc-transition),
286
499
  color var(--sc-transition);
287
500
  }
288
501
 
289
- .sc-nav-link:hover {
290
- background: var(--sc-color-bg-inset);
502
+ .sc-tab:hover {
291
503
  color: var(--sc-color-text);
292
504
  }
293
505
 
294
- .sc-nav-current {
295
- background: var(--sc-color-bg-inset);
506
+ .sc-tab-current {
507
+ border-bottom-color: var(--sc-color-accent);
296
508
  color: var(--sc-color-text);
297
509
  }
298
510
 
511
+ /* What waits, beside a tab's name: a count in the point colour, so it reads before the words. */
299
512
  .sc-nav-count {
300
513
  display: inline-flex;
301
514
  align-items: center;
@@ -309,13 +522,145 @@ svg {
309
522
  line-height: 1.25rem;
310
523
  }
311
524
 
525
+ /* The person's menu: a quiet label at the end of the header that opens a short list. */
526
+
312
527
  .sc-header-end {
313
528
  display: flex;
529
+ flex: none;
314
530
  align-items: center;
315
531
  gap: var(--sc-space-3);
316
532
  margin-left: auto;
317
533
  }
318
534
 
535
+ .sc-menu {
536
+ position: relative;
537
+ font-size: var(--sc-text-sm);
538
+ }
539
+
540
+ .sc-menu-summary {
541
+ display: flex;
542
+ align-items: center;
543
+ gap: var(--sc-space-2);
544
+ min-height: var(--sc-control-size);
545
+ padding-inline: var(--sc-space-2);
546
+ border-radius: var(--sc-radius-md);
547
+ color: var(--sc-color-text-muted);
548
+ list-style: none;
549
+ white-space: nowrap;
550
+ cursor: pointer;
551
+ transition:
552
+ background var(--sc-transition),
553
+ color var(--sc-transition);
554
+ }
555
+
556
+ .sc-menu-summary::-webkit-details-marker {
557
+ display: none;
558
+ }
559
+
560
+ .sc-menu-summary:hover,
561
+ .sc-menu[open] > .sc-menu-summary {
562
+ background: var(--sc-color-bg-raised);
563
+ color: var(--sc-color-text);
564
+ }
565
+
566
+ .sc-menu-caret {
567
+ flex: none;
568
+ width: 0.75rem;
569
+ height: 0.75rem;
570
+ }
571
+
572
+ .sc-menu-panel {
573
+ position: absolute;
574
+ top: calc(100% + var(--sc-space-2));
575
+ right: 0;
576
+ z-index: 20;
577
+ width: max-content;
578
+ min-width: 13rem;
579
+ padding: var(--sc-space-1);
580
+ border: var(--sc-border);
581
+ border-radius: var(--sc-radius-lg);
582
+ background: var(--sc-color-bg-inset);
583
+ box-shadow: var(--sc-shadow-stage);
584
+ }
585
+
586
+ .sc-menu-who {
587
+ display: flex;
588
+ flex-direction: column;
589
+ padding: var(--sc-space-2) var(--sc-space-3) var(--sc-space-3);
590
+ margin-bottom: var(--sc-space-1);
591
+ border-bottom: var(--sc-border);
592
+ font-weight: var(--sc-weight-medium);
593
+ }
594
+
595
+ .sc-menu-who .sc-muted {
596
+ font-weight: var(--sc-weight-normal);
597
+ font-size: var(--sc-text-xs);
598
+ }
599
+
600
+ .sc-menu-list {
601
+ display: flex;
602
+ flex-direction: column;
603
+ }
604
+
605
+ .sc-menu-link {
606
+ display: block;
607
+ width: 100%;
608
+ padding-inline: var(--sc-space-3);
609
+ padding-block: calc(var(--sc-space-2) - var(--sc-label-lift))
610
+ calc(var(--sc-space-2) + var(--sc-label-lift));
611
+ border: 0;
612
+ border-radius: var(--sc-radius-md);
613
+ background: none;
614
+ color: var(--sc-color-text-muted);
615
+ font: inherit;
616
+ text-align: left;
617
+ text-decoration: none;
618
+ cursor: pointer;
619
+ transition:
620
+ background var(--sc-transition),
621
+ color var(--sc-transition);
622
+ }
623
+
624
+ .sc-menu-link:hover {
625
+ background: var(--sc-color-bg-raised);
626
+ color: var(--sc-color-text);
627
+ }
628
+
629
+ .sc-menu-link[aria-current="page"] {
630
+ color: var(--sc-color-text);
631
+ font-weight: var(--sc-weight-medium);
632
+ }
633
+
634
+ .sc-menu-languages {
635
+ margin: var(--sc-space-1) 0 0;
636
+ padding: var(--sc-space-1) 0 0;
637
+ border: 0;
638
+ border-top: var(--sc-border);
639
+ }
640
+
641
+ .sc-menu-heading {
642
+ display: block;
643
+ padding: var(--sc-space-1) var(--sc-space-3);
644
+ color: var(--sc-color-text-faint);
645
+ font-size: var(--sc-text-xs);
646
+ font-weight: var(--sc-weight-medium);
647
+ letter-spacing: 0.04em;
648
+ text-transform: uppercase;
649
+ }
650
+
651
+ .sc-menu-chosen {
652
+ color: var(--sc-color-accent);
653
+ font-weight: var(--sc-weight-medium);
654
+ }
655
+
656
+ /* Leaving is apart from the pages one goes to. */
657
+ .sc-menu-out {
658
+ margin-top: var(--sc-space-1);
659
+ padding-top: calc(var(--sc-space-2) + var(--sc-space-1) - var(--sc-label-lift));
660
+ border-top: var(--sc-border);
661
+ border-radius: 0 0 var(--sc-radius-md) var(--sc-radius-md);
662
+ }
663
+
319
664
  .sc-live {
320
665
  width: 0.5rem;
321
666
  height: 0.5rem;
@@ -325,15 +670,27 @@ svg {
325
670
 
326
671
  .sc-live-on {
327
672
  background: var(--sc-color-success);
328
- box-shadow: 0 0 0 3px var(--sc-color-success-subtle);
673
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--sc-color-success) 25%, transparent);
329
674
  }
330
675
 
676
+ /* The page. */
677
+
678
+ /* The page is a column of blocks that fills the window below the header, so that a block which
679
+ wants the rest of the height, the board, can take it. */
331
680
  .sc-main {
681
+ display: flex;
332
682
  flex: 1;
683
+ flex-direction: column;
333
684
  width: 100%;
334
685
  max-width: var(--sc-width-page);
335
686
  margin-inline: auto;
336
- padding: var(--sc-space-6) var(--sc-space-5) var(--sc-space-7);
687
+ padding: var(--sc-space-6) var(--sc-space-5) var(--sc-space-8);
688
+ }
689
+
690
+ /* A page as wide as the window: the board, whose columns want every bit of it. */
691
+ .sc-main-wide {
692
+ max-width: none;
693
+ padding: var(--sc-space-5) var(--sc-space-4) var(--sc-space-4);
337
694
  }
338
695
 
339
696
  .sc-page-head {
@@ -342,11 +699,28 @@ svg {
342
699
  align-items: center;
343
700
  justify-content: space-between;
344
701
  gap: var(--sc-space-3);
345
- margin-bottom: var(--sc-space-5);
702
+ margin-bottom: var(--sc-space-4);
346
703
  }
347
704
 
348
705
  .sc-page-title {
349
706
  font-size: var(--sc-text-2xl);
707
+ letter-spacing: -0.02em;
708
+ }
709
+
710
+ .sc-lead {
711
+ max-width: var(--sc-width-prose);
712
+ margin-bottom: var(--sc-space-5);
713
+ color: var(--sc-color-text-muted);
714
+ }
715
+
716
+ /* On the wide page the head and the lead keep out of the board's way. */
717
+ .sc-main-wide .sc-page-head {
718
+ margin-bottom: var(--sc-space-3);
719
+ }
720
+
721
+ .sc-main-wide .sc-lead {
722
+ margin-bottom: var(--sc-space-4);
723
+ font-size: var(--sc-text-sm);
350
724
  }
351
725
 
352
726
  .sc-section-title {
@@ -357,12 +731,71 @@ svg {
357
731
  font-size: var(--sc-text-lg);
358
732
  }
359
733
 
734
+ /*
735
+ * Panes: the surfaces of the page are glass over the field. A pane is a veil of the page's own
736
+ * dark over a blur of what is behind it, with a thin lit edge; two panes differ only in what
737
+ * each has behind it. The rim is a ring with a filter of its own, under the content, so that
738
+ * what draws the edge of a pane is the field behind that edge, bent.
739
+ */
740
+
741
+ .sc-panel,
742
+ .sc-column,
743
+ .sc-project,
744
+ .sc-decision,
745
+ .sc-run,
746
+ .sc-sign-in,
747
+ .sc-facts {
748
+ position: relative;
749
+ isolation: isolate;
750
+ border: 1px solid transparent;
751
+ background: var(--sc-glass-surface);
752
+ backdrop-filter: var(--sc-glass-backdrop);
753
+ box-shadow: var(--sc-glass-sheen), var(--sc-glass-lift);
754
+ }
755
+
756
+ .sc-panel::before,
757
+ .sc-column::before,
758
+ .sc-project::before,
759
+ .sc-decision::before,
760
+ .sc-run::before,
761
+ .sc-sign-in::before,
762
+ .sc-facts::before {
763
+ content: "";
764
+ position: absolute;
765
+ inset: 0;
766
+ z-index: -1;
767
+ padding: var(--sc-glass-lens-width);
768
+ border-radius: inherit;
769
+ background: var(--sc-color-glass-edge);
770
+ backdrop-filter: var(--sc-glass-lens);
771
+ mask: var(--sc-glass-lens-mask);
772
+ mask-composite: exclude;
773
+ pointer-events: none;
774
+ }
775
+
360
776
  .sc-panel {
361
777
  margin-bottom: var(--sc-space-5);
362
778
  padding: var(--sc-space-5);
779
+ border-radius: var(--sc-radius-xl);
780
+ }
781
+
782
+ /* A panel that holds a form: as wide as a form is comfortable to fill in, and no wider. */
783
+ .sc-panel-form {
784
+ max-width: 56rem;
785
+ }
786
+
787
+ /* A sheet: a surface inside a pane, or a row of a list, with no blur of its own. */
788
+ .sc-token,
789
+ .sc-person-row,
790
+ .sc-skill,
791
+ .sc-doc-row,
792
+ .sc-feed-item,
793
+ .sc-card,
794
+ .sc-option,
795
+ .sc-answer,
796
+ .sc-report-list {
363
797
  border: var(--sc-border);
364
- border-radius: var(--sc-radius-lg);
365
- background: var(--sc-color-bg-subtle);
798
+ background: var(--sc-color-sheet);
366
799
  }
367
800
 
368
801
  .sc-loading {
@@ -379,7 +812,7 @@ svg {
379
812
  align-items: center;
380
813
  justify-content: center;
381
814
  gap: var(--sc-space-2);
382
- min-height: 2.5rem;
815
+ min-height: var(--sc-control-size);
383
816
  padding: 0 var(--sc-space-4);
384
817
  border: 1px solid transparent;
385
818
  border-radius: var(--sc-radius-md);
@@ -391,6 +824,7 @@ svg {
391
824
  transition:
392
825
  background var(--sc-transition),
393
826
  border-color var(--sc-transition),
827
+ box-shadow var(--sc-transition),
394
828
  color var(--sc-transition);
395
829
  }
396
830
 
@@ -408,21 +842,24 @@ svg {
408
842
  .sc-button-primary {
409
843
  background: var(--sc-color-accent-solid);
410
844
  color: var(--sc-color-accent-contrast);
845
+ box-shadow: var(--sc-glow);
411
846
  }
412
847
 
413
848
  .sc-button-primary:hover:not(:disabled) {
414
849
  background: var(--sc-color-accent-solid-hover);
415
850
  color: var(--sc-color-accent-contrast);
851
+ box-shadow: var(--sc-glow-bright);
416
852
  }
417
853
 
418
854
  .sc-button-secondary {
419
- background: var(--sc-color-bg);
855
+ background: var(--sc-color-field);
420
856
  border-color: var(--sc-color-border-strong);
421
857
  color: var(--sc-color-text);
422
858
  }
423
859
 
424
860
  .sc-button-secondary:hover:not(:disabled) {
425
- background: var(--sc-color-bg-subtle);
861
+ background: var(--sc-color-bg-raised);
862
+ color: var(--sc-color-text);
426
863
  }
427
864
 
428
865
  .sc-button-ghost {
@@ -436,23 +873,30 @@ svg {
436
873
  }
437
874
 
438
875
  .sc-button-danger {
876
+ background: transparent;
877
+ border-color: var(--sc-color-border-strong);
878
+ color: var(--sc-color-danger);
879
+ }
880
+
881
+ .sc-button-danger:hover:not(:disabled) {
439
882
  background: var(--sc-color-danger-subtle);
440
883
  border-color: var(--sc-color-danger);
441
- color: var(--sc-color-danger);
442
884
  }
443
885
 
444
- /* Badges */
886
+ /* Badges: a pill on the grid, its label lifted to the middle of it. */
445
887
 
446
888
  .sc-badge {
447
889
  display: inline-flex;
448
890
  align-items: center;
449
891
  gap: var(--sc-space-1);
450
- padding: var(--sc-space-1) var(--sc-space-2);
892
+ padding-inline: var(--sc-space-2);
893
+ padding-block: calc(var(--sc-space-1) - var(--sc-label-lift))
894
+ calc(var(--sc-space-1) + var(--sc-label-lift));
451
895
  border: 1px solid var(--sc-color-border);
452
896
  border-radius: var(--sc-radius-full);
453
897
  font-size: var(--sc-text-xs);
454
898
  font-weight: var(--sc-weight-medium);
455
- line-height: 1.2;
899
+ line-height: 1.25;
456
900
  white-space: nowrap;
457
901
  }
458
902
 
@@ -467,6 +911,7 @@ svg {
467
911
  color: var(--sc-color-accent);
468
912
  }
469
913
 
914
+ /* The point: a count, or that a thing is someone's; the one filled warm pill on a page. */
470
915
  .sc-badge-point {
471
916
  background: var(--sc-color-point-subtle);
472
917
  border-color: transparent;
@@ -479,9 +924,10 @@ svg {
479
924
  color: var(--sc-color-success);
480
925
  }
481
926
 
927
+ /* A state and not a fill: the warm colour is on the words and the line stays a line. */
482
928
  .sc-badge-warning {
483
- background: var(--sc-color-warning-subtle);
484
- border-color: transparent;
929
+ background: var(--sc-color-bg-subtle);
930
+ border-color: var(--sc-color-border-strong);
485
931
  color: var(--sc-color-warning);
486
932
  }
487
933
 
@@ -537,6 +983,13 @@ svg {
537
983
  font-weight: var(--sc-weight-medium);
538
984
  }
539
985
 
986
+ /* In the menu's label a long name gives way before the header runs out of room. */
987
+ .sc-menu-summary .sc-person-login {
988
+ max-width: 11rem;
989
+ overflow: hidden;
990
+ text-overflow: ellipsis;
991
+ }
992
+
540
993
  /* Callouts, empty states, spinner */
541
994
 
542
995
  .sc-callout {
@@ -548,7 +1001,7 @@ svg {
548
1001
  padding: var(--sc-space-4);
549
1002
  border: 1px solid var(--sc-color-border-strong);
550
1003
  border-radius: var(--sc-radius-md);
551
- background: var(--sc-color-bg-subtle);
1004
+ background: var(--sc-color-sheet);
552
1005
  font-size: var(--sc-text-sm);
553
1006
  }
554
1007
 
@@ -574,8 +1027,12 @@ svg {
574
1027
  margin-top: var(--sc-space-1);
575
1028
  }
576
1029
 
1030
+ .sc-callout-body p + p {
1031
+ margin-top: var(--sc-space-2);
1032
+ }
1033
+
577
1034
  .sc-empty {
578
- padding: var(--sc-space-6) var(--sc-space-5);
1035
+ padding: var(--sc-space-7) var(--sc-space-5);
579
1036
  border: 1px dashed var(--sc-color-border-strong);
580
1037
  border-radius: var(--sc-radius-lg);
581
1038
  text-align: center;
@@ -664,13 +1121,24 @@ svg {
664
1121
 
665
1122
  .sc-input {
666
1123
  width: 100%;
667
- min-height: 2.5rem;
1124
+ min-height: var(--sc-control-size);
668
1125
  padding: var(--sc-space-2) var(--sc-space-3);
669
1126
  border: 1px solid var(--sc-color-border-strong);
670
1127
  border-radius: var(--sc-radius-md);
671
- background: var(--sc-color-bg);
1128
+ background: var(--sc-color-field);
672
1129
  color: var(--sc-color-text);
673
1130
  font-size: var(--sc-text-sm);
1131
+ transition:
1132
+ border-color var(--sc-transition),
1133
+ background var(--sc-transition);
1134
+ }
1135
+
1136
+ .sc-input::placeholder {
1137
+ color: var(--sc-color-text-faint);
1138
+ }
1139
+
1140
+ .sc-input:hover:not(:disabled) {
1141
+ border-color: color-mix(in srgb, var(--sc-color-border-strong) 60%, var(--sc-color-accent));
674
1142
  }
675
1143
 
676
1144
  .sc-input:focus {
@@ -679,11 +1147,16 @@ svg {
679
1147
  border-color: var(--sc-color-accent);
680
1148
  }
681
1149
 
1150
+ .sc-input:disabled {
1151
+ opacity: 0.6;
1152
+ cursor: not-allowed;
1153
+ }
1154
+
1155
+ /* What people write is prose first, so the box they write in is set in the page's own face. */
682
1156
  .sc-textarea {
683
1157
  min-height: 6rem;
684
1158
  resize: vertical;
685
- font-family: var(--sc-font-mono);
686
- line-height: 1.6;
1159
+ line-height: var(--sc-leading-normal);
687
1160
  }
688
1161
 
689
1162
  .sc-link-row {
@@ -698,6 +1171,12 @@ svg {
698
1171
  gap: var(--sc-space-2);
699
1172
  }
700
1173
 
1174
+ /* The way to add one more line stands at the start, as wide as its words. */
1175
+ .sc-links > .sc-button,
1176
+ .sc-options > .sc-button {
1177
+ justify-self: start;
1178
+ }
1179
+
701
1180
  .sc-form-actions {
702
1181
  display: flex;
703
1182
  flex-wrap: wrap;
@@ -709,25 +1188,28 @@ svg {
709
1188
  font-size: var(--sc-text-sm);
710
1189
  }
711
1190
 
712
- /* The board */
1191
+ /* The board: one pane per state, the tasks in it as cards. It takes the height the page has left
1192
+ and the width the window has, the columns share the width while it is enough for them and
1193
+ scroll sideways when it is not, and each column scrolls within itself. */
713
1194
 
714
1195
  .sc-board {
715
1196
  display: grid;
1197
+ flex: 1 1 0;
716
1198
  grid-auto-flow: column;
717
- grid-auto-columns: var(--sc-column-width);
718
- gap: var(--sc-space-4);
1199
+ grid-auto-columns: minmax(var(--sc-column-width), 1fr);
1200
+ gap: var(--sc-space-3);
1201
+ min-height: 24rem;
719
1202
  overflow-x: auto;
720
- padding-bottom: var(--sc-space-4);
721
1203
  scroll-snap-type: x proximity;
1204
+ scrollbar-width: thin;
1205
+ scrollbar-color: var(--sc-color-border-strong) transparent;
722
1206
  }
723
1207
 
724
1208
  .sc-column {
725
1209
  display: flex;
726
1210
  flex-direction: column;
727
- min-height: 20rem;
728
- border: var(--sc-border);
729
- border-radius: var(--sc-radius-lg);
730
- background: var(--sc-color-bg-subtle);
1211
+ min-height: 0;
1212
+ border-radius: var(--sc-radius-xl);
731
1213
  scroll-snap-align: start;
732
1214
  }
733
1215
 
@@ -735,14 +1217,15 @@ svg {
735
1217
  display: flex;
736
1218
  align-items: center;
737
1219
  justify-content: space-between;
1220
+ gap: var(--sc-space-2);
738
1221
  padding: var(--sc-space-3) var(--sc-space-4);
739
1222
  border-bottom: var(--sc-border);
740
1223
  }
741
1224
 
742
1225
  .sc-column-header h2 {
743
- font-size: var(--sc-text-sm);
1226
+ font-size: var(--sc-text-xs);
744
1227
  font-weight: var(--sc-weight-bold);
745
- letter-spacing: 0.02em;
1228
+ letter-spacing: 0.06em;
746
1229
  text-transform: uppercase;
747
1230
  }
748
1231
 
@@ -760,6 +1243,11 @@ svg {
760
1243
  line-height: 1.5rem;
761
1244
  }
762
1245
 
1246
+ .sc-column-in_progress .sc-column-title,
1247
+ .sc-column-in_review .sc-column-title {
1248
+ color: var(--sc-color-accent);
1249
+ }
1250
+
763
1251
  .sc-column-done .sc-column-title {
764
1252
  color: var(--sc-color-success);
765
1253
  }
@@ -770,44 +1258,52 @@ svg {
770
1258
 
771
1259
  .sc-column-body {
772
1260
  display: grid;
1261
+ flex: 1;
773
1262
  align-content: start;
774
- gap: var(--sc-space-3);
775
- padding: var(--sc-space-3);
1263
+ gap: var(--sc-space-2);
1264
+ min-height: 0;
1265
+ padding: var(--sc-space-2);
1266
+ overflow-y: auto;
1267
+ scrollbar-width: thin;
1268
+ scrollbar-color: var(--sc-color-border-strong) transparent;
776
1269
  }
777
1270
 
778
1271
  .sc-card {
779
1272
  display: grid;
780
- gap: var(--sc-space-2);
1273
+ gap: var(--sc-space-1);
781
1274
  padding: var(--sc-space-3);
782
- border: var(--sc-border);
783
- border-radius: var(--sc-radius-md);
784
- background: var(--sc-color-bg);
1275
+ border-radius: var(--sc-radius-lg);
785
1276
  transition:
786
1277
  border-color var(--sc-transition),
787
- background var(--sc-transition);
1278
+ background var(--sc-transition),
1279
+ box-shadow var(--sc-transition);
788
1280
  }
789
1281
 
790
- .sc-card:hover {
791
- border-color: var(--sc-color-border-strong);
792
- background: var(--sc-color-bg-raised);
1282
+ .sc-card:hover,
1283
+ .sc-card:focus-within {
1284
+ border-color: var(--sc-color-accent);
1285
+ background: var(--sc-color-sheet-hover);
1286
+ box-shadow: var(--sc-glow);
793
1287
  }
794
1288
 
795
1289
  .sc-card-title {
796
1290
  color: var(--sc-color-text);
797
1291
  font-size: var(--sc-text-sm);
798
1292
  font-weight: var(--sc-weight-medium);
1293
+ line-height: 1.4;
799
1294
  text-decoration: none;
800
1295
  overflow-wrap: anywhere;
801
1296
  }
802
1297
 
803
1298
  .sc-card-title:hover {
804
- color: var(--sc-color-accent);
1299
+ color: var(--sc-color-text);
805
1300
  }
806
1301
 
807
1302
  .sc-card-number {
808
1303
  color: var(--sc-color-text-faint);
809
1304
  font-family: var(--sc-font-mono);
810
1305
  font-size: 0.9em;
1306
+ font-weight: var(--sc-weight-normal);
811
1307
  }
812
1308
 
813
1309
  .sc-card-meta {
@@ -815,31 +1311,84 @@ svg {
815
1311
  flex-wrap: wrap;
816
1312
  align-items: center;
817
1313
  gap: var(--sc-space-1);
1314
+ margin-top: var(--sc-space-1);
1315
+ }
1316
+
1317
+ .sc-card-meta:empty {
1318
+ display: none;
818
1319
  }
819
1320
 
820
1321
  .sc-card-spacer {
821
1322
  flex: 1;
822
1323
  }
823
1324
 
1325
+ /* Moving a task from its card: a quiet control, as wide as the card. */
824
1326
  .sc-card-move select {
825
1327
  width: 100%;
826
1328
  min-height: 1.75rem;
827
1329
  padding: 0 var(--sc-space-2);
828
- border: 1px solid var(--sc-color-border);
1330
+ border: 1px solid transparent;
829
1331
  border-radius: var(--sc-radius-sm);
830
- background: var(--sc-color-bg-subtle);
831
- color: var(--sc-color-text-muted);
1332
+ background: transparent;
1333
+ color: var(--sc-color-text-faint);
832
1334
  font-size: var(--sc-text-xs);
1335
+ transition:
1336
+ border-color var(--sc-transition),
1337
+ color var(--sc-transition);
833
1338
  }
834
1339
 
835
- /* One task */
1340
+ .sc-card-move select:hover,
1341
+ .sc-card-move select:focus {
1342
+ border-color: var(--sc-color-border-strong);
1343
+ background: var(--sc-color-field);
1344
+ color: var(--sc-color-text);
1345
+ }
1346
+
1347
+ /* One task, and a page of the documents: the text in a column for reading, the facts beside it
1348
+ where the window is wide enough, under it where it is not. */
836
1349
 
837
1350
  .sc-task {
838
1351
  display: grid;
839
1352
  gap: var(--sc-space-5);
1353
+ }
1354
+
1355
+ .sc-task-editing {
1356
+ max-width: var(--sc-width-prose);
1357
+ }
1358
+
1359
+ .sc-task-body {
1360
+ display: grid;
1361
+ grid-template-columns: minmax(0, 1fr);
1362
+ gap: var(--sc-space-5);
1363
+ align-items: start;
1364
+ }
1365
+
1366
+ .sc-task-main {
1367
+ display: grid;
1368
+ gap: var(--sc-space-5);
1369
+ min-width: 0;
840
1370
  max-width: var(--sc-width-prose);
841
1371
  }
842
1372
 
1373
+ .sc-task-aside {
1374
+ display: grid;
1375
+ gap: var(--sc-space-4);
1376
+ min-width: 0;
1377
+ font-size: var(--sc-text-sm);
1378
+ }
1379
+
1380
+ @media (min-width: 64rem) {
1381
+ .sc-task-body {
1382
+ grid-template-columns: minmax(0, 1fr) var(--sc-width-aside);
1383
+ gap: var(--sc-space-7);
1384
+ }
1385
+
1386
+ .sc-task-aside {
1387
+ position: sticky;
1388
+ top: calc(var(--sc-header-height) + 2.75rem + var(--sc-space-5));
1389
+ }
1390
+ }
1391
+
843
1392
  .sc-task-header {
844
1393
  display: grid;
845
1394
  gap: var(--sc-space-2);
@@ -852,23 +1401,27 @@ svg {
852
1401
 
853
1402
  .sc-task-title {
854
1403
  font-size: var(--sc-text-2xl);
1404
+ letter-spacing: -0.02em;
855
1405
  overflow-wrap: anywhere;
856
1406
  }
857
1407
 
1408
+ .sc-task-title .sc-card-number {
1409
+ font-size: 0.8em;
1410
+ }
1411
+
858
1412
  .sc-task-badges {
859
1413
  display: flex;
860
1414
  flex-wrap: wrap;
861
1415
  gap: var(--sc-space-1);
862
1416
  }
863
1417
 
1418
+ /* The facts of a thing, each under its name. */
864
1419
  .sc-facts {
865
1420
  display: grid;
866
1421
  grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
867
1422
  gap: var(--sc-space-3);
868
1423
  padding: var(--sc-space-4);
869
- border: var(--sc-border);
870
- border-radius: var(--sc-radius-md);
871
- background: var(--sc-color-bg-subtle);
1424
+ border-radius: var(--sc-radius-lg);
872
1425
  font-size: var(--sc-text-sm);
873
1426
  }
874
1427
 
@@ -910,7 +1463,7 @@ svg {
910
1463
  color: var(--sc-color-accent);
911
1464
  }
912
1465
 
913
- /* Decisions */
1466
+ /* Decisions: each a pane, the ones that wait marked in the point colour. */
914
1467
 
915
1468
  .sc-decisions {
916
1469
  display: grid;
@@ -921,25 +1474,41 @@ svg {
921
1474
  .sc-decision {
922
1475
  display: grid;
923
1476
  gap: var(--sc-space-3);
924
- padding: var(--sc-space-4);
925
- border: 1px solid var(--sc-color-warning);
926
- border-radius: var(--sc-radius-lg);
927
- background: var(--sc-color-bg-subtle);
1477
+ padding: var(--sc-space-5);
1478
+ border-radius: var(--sc-radius-xl);
928
1479
  }
929
1480
 
930
1481
  .sc-decision + .sc-decision {
931
1482
  margin-top: var(--sc-space-3);
932
1483
  }
933
1484
 
934
- .sc-decision-answered {
935
- border-color: var(--sc-color-border);
936
- }
937
-
938
1485
  .sc-decision-question {
939
1486
  font-size: var(--sc-text-lg);
940
1487
  overflow-wrap: anywhere;
941
1488
  }
942
1489
 
1490
+ .sc-decision-question a {
1491
+ color: var(--sc-color-text);
1492
+ text-decoration: none;
1493
+ }
1494
+
1495
+ .sc-decision-question a:hover {
1496
+ color: var(--sc-color-accent);
1497
+ }
1498
+
1499
+ /* A waiting decision has a warm mark before its question: the one thing on the page to look at. */
1500
+ .sc-decision:not(.sc-decision-answered) .sc-decision-question::before {
1501
+ content: "";
1502
+ display: inline-block;
1503
+ width: 0.5rem;
1504
+ height: 0.5rem;
1505
+ margin-right: var(--sc-space-2);
1506
+ border-radius: 50%;
1507
+ background: var(--sc-color-point);
1508
+ box-shadow: 0 0 0.75rem color-mix(in srgb, var(--sc-color-point) 60%, transparent);
1509
+ vertical-align: 0.1em;
1510
+ }
1511
+
943
1512
  .sc-decision-meta {
944
1513
  display: flex;
945
1514
  flex-wrap: wrap;
@@ -960,7 +1529,6 @@ svg {
960
1529
  gap: var(--sc-space-1);
961
1530
  padding: var(--sc-space-3) var(--sc-space-4);
962
1531
  border-left: 3px solid var(--sc-color-success);
963
- background: var(--sc-color-bg);
964
1532
  border-radius: 0 var(--sc-radius-md) var(--sc-radius-md) 0;
965
1533
  }
966
1534
 
@@ -989,9 +1557,8 @@ svg {
989
1557
  align-items: center;
990
1558
  gap: var(--sc-space-3);
991
1559
  padding: var(--sc-space-2) var(--sc-space-3);
992
- border: 1px solid var(--sc-color-border-strong);
1560
+ border-color: var(--sc-color-border-strong);
993
1561
  border-radius: var(--sc-radius-md);
994
- background: var(--sc-color-bg);
995
1562
  cursor: pointer;
996
1563
  transition:
997
1564
  border-color var(--sc-transition),
@@ -999,7 +1566,7 @@ svg {
999
1566
  }
1000
1567
 
1001
1568
  .sc-option:hover {
1002
- background: var(--sc-color-bg-raised);
1569
+ background: var(--sc-color-sheet-hover);
1003
1570
  }
1004
1571
 
1005
1572
  .sc-option-chosen {
@@ -1012,7 +1579,7 @@ svg {
1012
1579
  accent-color: var(--sc-color-accent);
1013
1580
  }
1014
1581
 
1015
- /* The feed */
1582
+ /* The feed: a line per event, newest first. */
1016
1583
 
1017
1584
  .sc-feed {
1018
1585
  display: grid;
@@ -1026,9 +1593,7 @@ svg {
1026
1593
  align-items: center;
1027
1594
  gap: var(--sc-space-3);
1028
1595
  padding: var(--sc-space-2) var(--sc-space-3);
1029
- border: var(--sc-border);
1030
1596
  border-radius: var(--sc-radius-md);
1031
- background: var(--sc-color-bg-subtle);
1032
1597
  font-size: var(--sc-text-sm);
1033
1598
  }
1034
1599
 
@@ -1044,30 +1609,119 @@ svg {
1044
1609
  color: var(--sc-color-accent);
1045
1610
  }
1046
1611
 
1047
- /* Signing in */
1612
+ .sc-feed-agent {
1613
+ margin-left: var(--sc-space-2);
1614
+ color: var(--sc-color-text-muted);
1615
+ font-size: var(--sc-text-sm);
1616
+ }
1617
+
1618
+ /* Signing in: one pane in the light, with the mark on a small stage of its own. */
1048
1619
 
1049
1620
  .sc-sign-in {
1050
1621
  display: grid;
1051
1622
  gap: var(--sc-space-4);
1052
- max-width: 28rem;
1053
- margin: 12dvh auto 0;
1054
- padding: var(--sc-space-6);
1055
- border: var(--sc-border);
1056
- border-radius: var(--sc-radius-lg);
1057
- background: var(--sc-color-bg-subtle);
1058
- box-shadow: var(--sc-shadow);
1623
+ max-width: 26rem;
1624
+ margin: 10dvh auto 0;
1625
+ padding: var(--sc-space-7) var(--sc-space-6) var(--sc-space-6);
1626
+ border-radius: var(--sc-radius-xl);
1627
+ text-align: center;
1628
+ }
1629
+
1630
+ .sc-sign-in-stage {
1631
+ position: relative;
1632
+ display: grid;
1633
+ place-items: center;
1634
+ height: 7rem;
1635
+ }
1636
+
1637
+ /* The light behind the mark, and the rings that leave it. */
1638
+ .sc-sign-in-stage::before {
1639
+ content: "";
1640
+ position: absolute;
1641
+ width: 14rem;
1642
+ height: 14rem;
1643
+ border-radius: 50%;
1644
+ background: radial-gradient(
1645
+ circle,
1646
+ color-mix(in srgb, var(--sc-color-accent) 35%, transparent),
1647
+ transparent 70%
1648
+ );
1649
+ pointer-events: none;
1650
+ }
1651
+
1652
+ .sc-sign-in-badge {
1653
+ position: relative;
1654
+ display: grid;
1655
+ place-items: center;
1656
+ width: 4rem;
1657
+ height: 4rem;
1658
+ border: 1px solid var(--sc-color-border-strong);
1659
+ border-radius: 28%;
1660
+ background: var(--sc-color-bg);
1661
+ box-shadow: 0 0.5rem 2rem -0.25rem color-mix(in srgb, var(--sc-color-accent) 55%, transparent);
1662
+ }
1663
+
1664
+ .sc-sign-in-badge::after {
1665
+ content: "";
1666
+ position: absolute;
1667
+ inset: 0;
1668
+ border: 1px solid var(--sc-color-accent);
1669
+ border-radius: inherit;
1670
+ opacity: 0;
1671
+ pointer-events: none;
1672
+ }
1673
+
1674
+ @media (prefers-reduced-motion: no-preference) {
1675
+ .sc-sign-in-badge::after {
1676
+ animation: sc-ring 3.6s ease-out infinite;
1677
+ }
1678
+ }
1679
+
1680
+ @keyframes sc-ring {
1681
+ 0% {
1682
+ transform: scale(1);
1683
+ opacity: 0.6;
1684
+ }
1685
+ 100% {
1686
+ transform: scale(2.6);
1687
+ opacity: 0;
1688
+ }
1689
+ }
1690
+
1691
+ .sc-sign-in-symbol {
1692
+ width: 2.25rem;
1693
+ height: 2.25rem;
1694
+ }
1695
+
1696
+ .sc-sign-in-wordmark {
1697
+ display: block;
1698
+ max-width: 12rem;
1699
+ height: 1.5rem;
1700
+ margin-inline: auto;
1059
1701
  }
1060
1702
 
1061
1703
  .sc-sign-in-title {
1062
- font-size: var(--sc-text-2xl);
1704
+ font-size: var(--sc-text-xl);
1063
1705
  }
1064
1706
 
1065
1707
  .sc-sign-in-lead {
1066
1708
  color: var(--sc-color-text-muted);
1067
1709
  }
1068
1710
 
1711
+ .sc-sign-in .sc-callout {
1712
+ margin-bottom: 0;
1713
+ text-align: left;
1714
+ }
1715
+
1716
+ .sc-sign-in-ways {
1717
+ display: flex;
1718
+ flex-wrap: wrap;
1719
+ justify-content: center;
1720
+ gap: var(--sc-space-3);
1721
+ }
1722
+
1069
1723
  .sc-sign-in-button {
1070
- justify-self: start;
1724
+ justify-self: center;
1071
1725
  }
1072
1726
 
1073
1727
  /* Prose: what people and agents write, rendered from Markdown. Element selectors on purpose. */
@@ -1078,14 +1732,18 @@ svg {
1078
1732
  }
1079
1733
 
1080
1734
  .sc-prose > * + * {
1081
- margin-top: var(--sc-space-3);
1735
+ margin-top: var(--sc-space-4);
1082
1736
  }
1083
1737
 
1084
1738
  .sc-prose h1,
1085
1739
  .sc-prose h2,
1086
1740
  .sc-prose h3,
1087
1741
  .sc-prose h4 {
1088
- margin-top: var(--sc-space-5);
1742
+ margin-top: var(--sc-space-6);
1743
+ }
1744
+
1745
+ .sc-prose > :first-child {
1746
+ margin-top: 0;
1089
1747
  }
1090
1748
 
1091
1749
  .sc-prose h1 {
@@ -1093,6 +1751,8 @@ svg {
1093
1751
  }
1094
1752
 
1095
1753
  .sc-prose h2 {
1754
+ padding-bottom: var(--sc-space-2);
1755
+ border-bottom: var(--sc-border);
1096
1756
  font-size: var(--sc-text-lg);
1097
1757
  }
1098
1758
 
@@ -1120,7 +1780,7 @@ svg {
1120
1780
 
1121
1781
  .sc-prose blockquote {
1122
1782
  padding-left: var(--sc-space-4);
1123
- border-left: 2px solid var(--sc-color-border-strong);
1783
+ border-left: 2px solid var(--sc-color-accent);
1124
1784
  color: var(--sc-color-text-muted);
1125
1785
  }
1126
1786
 
@@ -1134,9 +1794,9 @@ svg {
1134
1794
  padding: var(--sc-space-4);
1135
1795
  border: var(--sc-border);
1136
1796
  border-radius: var(--sc-radius-md);
1137
- background: var(--sc-color-bg-inset);
1797
+ background: var(--sc-color-sheet);
1138
1798
  font-size: var(--sc-text-sm);
1139
- line-height: 1.6;
1799
+ line-height: var(--sc-leading-code);
1140
1800
  white-space: pre-wrap;
1141
1801
  }
1142
1802
 
@@ -1163,7 +1823,7 @@ svg {
1163
1823
  }
1164
1824
 
1165
1825
  .sc-prose th {
1166
- background: var(--sc-color-bg-subtle);
1826
+ background: var(--sc-color-sheet);
1167
1827
  }
1168
1828
 
1169
1829
  .sc-prose img {
@@ -1182,32 +1842,7 @@ svg {
1182
1842
  margin-right: var(--sc-space-2);
1183
1843
  }
1184
1844
 
1185
- @media (max-width: 40rem) {
1186
- .sc-header-inner {
1187
- gap: var(--sc-space-3);
1188
- padding-inline: var(--sc-space-4);
1189
- }
1190
-
1191
- .sc-main {
1192
- padding-inline: var(--sc-space-4);
1193
- }
1194
-
1195
- .sc-board {
1196
- grid-auto-columns: min(var(--sc-column-width), 85vw);
1197
- }
1198
-
1199
- .sc-feed-item {
1200
- grid-template-columns: 1fr;
1201
- }
1202
- }
1203
-
1204
- /* Tokens: the ones a person holds, and the one just made, shown once. */
1205
-
1206
- .sc-lead {
1207
- max-width: var(--sc-width-prose);
1208
- margin-bottom: var(--sc-space-5);
1209
- color: var(--sc-color-text-muted);
1210
- }
1845
+ /* Agents: the tokens a person holds, and the one just made, shown once. */
1211
1846
 
1212
1847
  .sc-token-list {
1213
1848
  display: grid;
@@ -1221,9 +1856,7 @@ svg {
1221
1856
  justify-content: space-between;
1222
1857
  gap: var(--sc-space-3);
1223
1858
  padding: var(--sc-space-4);
1224
- border: var(--sc-border);
1225
- border-radius: var(--sc-radius-md);
1226
- background: var(--sc-color-bg-subtle);
1859
+ border-radius: var(--sc-radius-lg);
1227
1860
  }
1228
1861
 
1229
1862
  .sc-token-name {
@@ -1270,9 +1903,7 @@ svg {
1270
1903
  align-items: center;
1271
1904
  gap: var(--sc-space-3);
1272
1905
  padding: var(--sc-space-3) var(--sc-space-4);
1273
- border: var(--sc-border);
1274
- border-radius: var(--sc-radius-md);
1275
- background: var(--sc-color-bg-subtle);
1906
+ border-radius: var(--sc-radius-lg);
1276
1907
  }
1277
1908
 
1278
1909
  .sc-person-name {
@@ -1285,23 +1916,37 @@ svg {
1285
1916
 
1286
1917
  .sc-projects {
1287
1918
  display: grid;
1288
- gap: var(--sc-space-3);
1919
+ grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr));
1920
+ gap: var(--sc-space-4);
1289
1921
  }
1290
1922
 
1291
1923
  .sc-project {
1292
- padding: var(--sc-space-4);
1293
- border: var(--sc-border);
1294
- border-radius: var(--sc-radius-md);
1295
- background: var(--sc-color-bg-subtle);
1924
+ display: flex;
1925
+ flex-direction: column;
1926
+ gap: var(--sc-space-2);
1927
+ padding: var(--sc-space-5);
1928
+ border-radius: var(--sc-radius-xl);
1929
+ transition:
1930
+ border-color var(--sc-transition),
1931
+ background var(--sc-transition),
1932
+ box-shadow var(--sc-transition);
1933
+ }
1934
+
1935
+ .sc-project:hover,
1936
+ .sc-project:focus-within {
1937
+ border-color: var(--sc-color-accent);
1938
+ background: var(--sc-glass-surface-hover);
1939
+ box-shadow: var(--sc-glass-sheen), var(--sc-glass-lift), var(--sc-glow);
1296
1940
  }
1297
1941
 
1298
1942
  .sc-project-head {
1299
1943
  display: flex;
1300
1944
  flex-wrap: wrap;
1301
1945
  align-items: center;
1302
- gap: var(--sc-space-3);
1946
+ gap: var(--sc-space-2) var(--sc-space-3);
1303
1947
  }
1304
1948
 
1949
+ /* The whole pane is the way in: the name's link stretches over it. */
1305
1950
  .sc-project-name {
1306
1951
  color: var(--sc-color-text);
1307
1952
  font-size: var(--sc-text-lg);
@@ -1309,25 +1954,36 @@ svg {
1309
1954
  text-decoration: none;
1310
1955
  }
1311
1956
 
1957
+ .sc-project-name::after {
1958
+ content: "";
1959
+ position: absolute;
1960
+ inset: 0;
1961
+ }
1962
+
1312
1963
  .sc-project-name:hover {
1313
- text-decoration: underline;
1964
+ color: var(--sc-color-text);
1965
+ }
1966
+
1967
+ .sc-project-name:focus-visible {
1968
+ outline: none;
1314
1969
  }
1315
1970
 
1316
1971
  .sc-project-key {
1317
- color: var(--sc-color-text-muted);
1318
- font-size: var(--sc-text-sm);
1972
+ color: var(--sc-color-text-faint);
1973
+ font-size: var(--sc-text-xs);
1319
1974
  }
1320
1975
 
1321
1976
  .sc-project-description {
1322
- margin: var(--sc-space-2) 0 0;
1323
1977
  color: var(--sc-color-text-muted);
1978
+ font-size: var(--sc-text-sm);
1324
1979
  }
1325
1980
 
1326
1981
  .sc-project-meta {
1327
1982
  display: flex;
1328
1983
  flex-wrap: wrap;
1329
1984
  gap: var(--sc-space-2);
1330
- margin: var(--sc-space-2) 0 0;
1985
+ margin-top: auto;
1986
+ padding-top: var(--sc-space-2);
1331
1987
  }
1332
1988
 
1333
1989
  .sc-project-meta:empty {
@@ -1343,12 +1999,6 @@ svg {
1343
1999
  align-items: end;
1344
2000
  }
1345
2001
 
1346
- .sc-feed-agent {
1347
- margin-left: var(--sc-space-2);
1348
- color: var(--sc-color-text-muted);
1349
- font-size: var(--sc-text-sm);
1350
- }
1351
-
1352
2002
  /* Skills: the project's, or the organization's, as SkillCDN serves them at the address. */
1353
2003
 
1354
2004
  .sc-skills {
@@ -1358,9 +2008,7 @@ svg {
1358
2008
 
1359
2009
  .sc-skill {
1360
2010
  padding: var(--sc-space-3) var(--sc-space-4);
1361
- border: var(--sc-border);
1362
- border-radius: var(--sc-radius-md);
1363
- background: var(--sc-color-bg-subtle);
2011
+ border-radius: var(--sc-radius-lg);
1364
2012
  }
1365
2013
 
1366
2014
  .sc-skill-head {
@@ -1372,27 +2020,23 @@ svg {
1372
2020
  }
1373
2021
 
1374
2022
  .sc-skill-name {
1375
- font-weight: 600;
2023
+ font-weight: var(--sc-weight-medium);
1376
2024
  }
1377
2025
 
1378
2026
  .sc-skill-description {
1379
2027
  margin: var(--sc-space-2) 0 0;
2028
+ color: var(--sc-color-text-muted);
2029
+ font-size: var(--sc-text-sm);
1380
2030
  }
1381
2031
 
1382
2032
  .sc-skill-uri {
1383
2033
  display: block;
1384
2034
  margin-top: var(--sc-space-2);
1385
- color: var(--sc-color-text-muted);
1386
- font-size: var(--sc-text-sm);
2035
+ color: var(--sc-color-text-faint);
2036
+ font-size: var(--sc-text-xs);
1387
2037
  word-break: break-all;
1388
2038
  }
1389
2039
 
1390
- .sc-sign-in-ways {
1391
- display: flex;
1392
- flex-wrap: wrap;
1393
- gap: var(--sc-space-3);
1394
- }
1395
-
1396
2040
  /* Runs: an agent at work on a task, what it reported and handed in. */
1397
2041
 
1398
2042
  .sc-runs {
@@ -1403,10 +2047,8 @@ svg {
1403
2047
  .sc-run {
1404
2048
  display: grid;
1405
2049
  gap: var(--sc-space-3);
1406
- padding: var(--sc-space-4);
1407
- border: var(--sc-border);
1408
- border-radius: var(--sc-radius-md);
1409
- background: var(--sc-color-bg-subtle);
2050
+ padding: var(--sc-space-4) var(--sc-space-5);
2051
+ border-radius: var(--sc-radius-lg);
1410
2052
  }
1411
2053
 
1412
2054
  .sc-run-header {
@@ -1446,10 +2088,11 @@ svg {
1446
2088
  gap: var(--sc-space-1);
1447
2089
  padding-left: var(--sc-space-3);
1448
2090
  border-left: 2px solid var(--sc-color-border-strong);
2091
+ font-size: var(--sc-text-sm);
1449
2092
  }
1450
2093
 
1451
2094
  .sc-run-summary {
1452
- padding-top: var(--sc-space-2);
2095
+ padding-top: var(--sc-space-3);
1453
2096
  border-top: var(--sc-border);
1454
2097
  }
1455
2098
 
@@ -1463,22 +2106,46 @@ svg {
1463
2106
  overflow-x: auto;
1464
2107
  padding: var(--sc-space-3) var(--sc-space-4);
1465
2108
  border: var(--sc-border);
1466
- border-radius: var(--sc-radius-sm);
1467
- background: var(--sc-color-bg-inset);
2109
+ border-radius: var(--sc-radius-md);
2110
+ background: var(--sc-color-field);
1468
2111
  font-family: var(--sc-font-mono);
1469
2112
  font-size: var(--sc-text-sm);
2113
+ line-height: var(--sc-leading-code);
1470
2114
  white-space: pre-wrap;
1471
2115
  word-break: break-all;
1472
2116
  }
1473
2117
 
2118
+ .sc-code-input {
2119
+ max-width: 12rem;
2120
+ font-family: var(--sc-font-mono);
2121
+ font-size: var(--sc-text-lg);
2122
+ letter-spacing: 0.12em;
2123
+ text-transform: uppercase;
2124
+ }
2125
+
2126
+ .sc-code-shown {
2127
+ font-size: var(--sc-text-md);
2128
+ letter-spacing: 0.1em;
2129
+ }
2130
+
1474
2131
  /* Documents: a folder's pages, one page with its versions, its links both ways and its files. */
1475
2132
 
2133
+ .sc-doc {
2134
+ display: grid;
2135
+ gap: var(--sc-space-5);
2136
+ }
2137
+
1476
2138
  .sc-doc-crumbs {
1477
2139
  margin-bottom: var(--sc-space-3);
1478
2140
  color: var(--sc-color-text-muted);
1479
2141
  font-size: var(--sc-text-sm);
1480
2142
  }
1481
2143
 
2144
+ /* On a page the crumbs sit close to the title. */
2145
+ .sc-doc > .sc-doc-crumbs {
2146
+ margin-bottom: calc(-1 * var(--sc-space-3));
2147
+ }
2148
+
1482
2149
  .sc-doc-crumbs a {
1483
2150
  color: var(--sc-color-text-muted);
1484
2151
  text-decoration: none;
@@ -1488,6 +2155,10 @@ svg {
1488
2155
  color: var(--sc-color-accent);
1489
2156
  }
1490
2157
 
2158
+ .sc-doc-crumbs .sc-crumb-separator {
2159
+ margin-inline: var(--sc-space-2);
2160
+ }
2161
+
1491
2162
  .sc-doc-search {
1492
2163
  display: flex;
1493
2164
  gap: var(--sc-space-2);
@@ -1517,16 +2188,19 @@ svg {
1517
2188
  display: inline-block;
1518
2189
  padding: var(--sc-space-1) var(--sc-space-3);
1519
2190
  border: var(--sc-border);
1520
- border-radius: var(--sc-radius-md);
1521
- background: var(--sc-color-bg-subtle);
2191
+ border-radius: var(--sc-radius-full);
2192
+ background: var(--sc-color-sheet);
1522
2193
  color: var(--sc-color-text);
1523
2194
  font-family: var(--sc-font-mono);
1524
2195
  font-size: var(--sc-text-sm);
1525
2196
  text-decoration: none;
2197
+ transition:
2198
+ border-color var(--sc-transition),
2199
+ color var(--sc-transition);
1526
2200
  }
1527
2201
 
1528
2202
  .sc-folder-link:hover {
1529
- border-color: var(--sc-color-border-strong);
2203
+ border-color: var(--sc-color-accent);
1530
2204
  color: var(--sc-color-accent);
1531
2205
  }
1532
2206
 
@@ -1544,9 +2218,12 @@ svg {
1544
2218
  align-items: baseline;
1545
2219
  gap: var(--sc-space-2) var(--sc-space-3);
1546
2220
  padding: var(--sc-space-3) var(--sc-space-4);
1547
- border: var(--sc-border);
1548
- border-radius: var(--sc-radius-md);
1549
- background: var(--sc-color-bg-subtle);
2221
+ border-radius: var(--sc-radius-lg);
2222
+ transition: border-color var(--sc-transition);
2223
+ }
2224
+
2225
+ .sc-doc-row:hover {
2226
+ border-color: var(--sc-color-border-strong);
1550
2227
  }
1551
2228
 
1552
2229
  .sc-doc-title {
@@ -1571,9 +2248,7 @@ svg {
1571
2248
  }
1572
2249
 
1573
2250
  .sc-doc-editor {
1574
- min-height: 20rem;
1575
- font-family: var(--sc-font-mono);
1576
- font-size: var(--sc-text-sm);
2251
+ min-height: 24rem;
1577
2252
  }
1578
2253
 
1579
2254
  .sc-doc-notice {
@@ -1581,7 +2256,7 @@ svg {
1581
2256
  padding: var(--sc-space-3) var(--sc-space-4);
1582
2257
  border: var(--sc-border);
1583
2258
  border-radius: var(--sc-radius-md);
1584
- background: var(--sc-color-bg-inset);
2259
+ background: var(--sc-color-sheet);
1585
2260
  color: var(--sc-color-text-muted);
1586
2261
  }
1587
2262
 
@@ -1613,6 +2288,30 @@ svg {
1613
2288
  font-size: var(--sc-text-sm);
1614
2289
  }
1615
2290
 
2291
+ /* In the aside of a task or a page, the facts stack and the sections are small. */
2292
+
2293
+ .sc-task-aside .sc-facts {
2294
+ grid-template-columns: 1fr;
2295
+ }
2296
+
2297
+ .sc-task-aside .sc-section-title {
2298
+ margin-bottom: var(--sc-space-1);
2299
+ color: var(--sc-color-text-faint);
2300
+ font-size: var(--sc-text-xs);
2301
+ font-weight: var(--sc-weight-medium);
2302
+ letter-spacing: 0.04em;
2303
+ text-transform: uppercase;
2304
+ }
2305
+
2306
+ .sc-task-aside .sc-task-section {
2307
+ gap: var(--sc-space-1);
2308
+ }
2309
+
2310
+ .sc-task-aside .sc-link-list li + li,
2311
+ .sc-task-aside .sc-version + .sc-version {
2312
+ margin-top: var(--sc-space-1);
2313
+ }
2314
+
1616
2315
  /* A decision as a record: its context, its answer, and what followed. */
1617
2316
 
1618
2317
  .sc-decision-section {
@@ -1632,3 +2331,79 @@ svg {
1632
2331
  display: grid;
1633
2332
  gap: var(--sc-space-2);
1634
2333
  }
2334
+
2335
+ /* Small screens. */
2336
+
2337
+ @media (max-width: 40rem) {
2338
+ .sc-header-inner {
2339
+ gap: var(--sc-space-3);
2340
+ padding-inline: var(--sc-space-4);
2341
+ }
2342
+
2343
+ .sc-brand-symbol,
2344
+ .sc-brand-wordmark {
2345
+ height: var(--sc-brand-size-compact);
2346
+ }
2347
+
2348
+ .sc-brand-symbol {
2349
+ width: var(--sc-brand-size-compact);
2350
+ }
2351
+
2352
+ .sc-crumb-link {
2353
+ max-width: 8rem;
2354
+ }
2355
+
2356
+ /* A narrow bar holds the lockup and where the page is; the crumbs above that give way. */
2357
+ .sc-crumb:not(:last-of-type) {
2358
+ display: none;
2359
+ }
2360
+
2361
+ .sc-tabs {
2362
+ padding-inline: var(--sc-space-4);
2363
+ }
2364
+
2365
+ .sc-tabs-inner {
2366
+ gap: var(--sc-space-4);
2367
+ }
2368
+
2369
+ .sc-menu-summary .sc-person-login {
2370
+ display: none;
2371
+ }
2372
+
2373
+ .sc-main {
2374
+ padding: var(--sc-space-5) var(--sc-space-4) var(--sc-space-7);
2375
+ }
2376
+
2377
+ .sc-page-title {
2378
+ font-size: var(--sc-text-xl);
2379
+ }
2380
+
2381
+ .sc-panel {
2382
+ padding: var(--sc-space-4);
2383
+ border-radius: var(--sc-radius-lg);
2384
+ }
2385
+
2386
+ .sc-board {
2387
+ grid-auto-columns: min(var(--sc-column-width), 85vw);
2388
+ }
2389
+
2390
+ .sc-feed-item {
2391
+ grid-template-columns: 1fr;
2392
+ gap: var(--sc-space-1);
2393
+ }
2394
+
2395
+ .sc-sign-in {
2396
+ margin-top: var(--sc-space-6);
2397
+ padding: var(--sc-space-6) var(--sc-space-5) var(--sc-space-5);
2398
+ }
2399
+
2400
+ .sc-link-row {
2401
+ grid-template-columns: 1fr;
2402
+ }
2403
+
2404
+ .sc-decision,
2405
+ .sc-project {
2406
+ padding: var(--sc-space-4);
2407
+ border-radius: var(--sc-radius-lg);
2408
+ }
2409
+ }