@azure-id/orc 1.4.0 → 1.4.2

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.
@@ -3,9 +3,12 @@
3
3
  Every colour comes from a token defined once, on bare :root, in
4
4
  00-tokens.css. This file defines none.
5
5
 
6
- Nothing here declares an animation, deliberately: the motion rules live in
7
- 04-motion.css and nowhere else. The board's affordances are borders and
8
- opacity, and both survive a reader who has asked for less motion. */
6
+ Nothing here declares an animation or a @keyframes, deliberately: the motion
7
+ rules live in 04-motion.css and nowhere else, because THE ONE reduced-motion
8
+ media block lives there and a rule in this file which loads BEFORE it —
9
+ could not be switched off from there at equal specificity. What is here is
10
+ state that survives a reader who asked for less motion: borders, opacity and
11
+ a drop marker drawn as a real edge. */
9
12
 
10
13
  /* ── the preview ───────────────────────────────────────────────────────── */
11
14
  /* A terminal is a monospaced grid, so the preview has to be one too. Anything
@@ -17,7 +20,7 @@
17
20
  margin: 0;
18
21
  padding: 10px 12px;
19
22
  border-radius: 8px;
20
- background: var(--bg-sunken);
23
+ background: var(--surface-2);
21
24
  border: 1px solid var(--line);
22
25
  /* A wide line SCROLLS inside its own box. The page body must never scroll
23
26
  sideways — and squeezing a status line to fit would misreport its width,
@@ -54,22 +57,184 @@
54
57
  margin-bottom: 10px;
55
58
  }
56
59
 
57
- .hk-degrade {
60
+ /* ── the terminal window (v1.4.2) ──────────────────────────────────────── */
61
+ /* The preview is a claim about what a terminal will print, so it is drawn as a
62
+ terminal. The chrome is not decoration: the title bar states the width the
63
+ picture was rendered at, and the ruler under it shows where that width falls.
64
+ Everything inside stays on the same monospaced grid - anything proportional
65
+ here would misrepresent every width decision the user makes. */
66
+ .hk-term {
67
+ border: 1px solid var(--line);
68
+ border-radius: 10px;
69
+ overflow: hidden;
70
+ background: var(--surface-2);
71
+ }
72
+ .hk-term-bar {
73
+ display: flex;
74
+ align-items: center;
75
+ gap: 10px;
76
+ padding: 6px 10px;
77
+ border-bottom: 1px solid var(--line);
78
+ background: var(--surface-3);
79
+ }
80
+ .hk-term-dots {
81
+ display: flex;
82
+ gap: 5px;
83
+ flex: 0 0 auto;
84
+ }
85
+ .hk-term-dot {
86
+ width: 9px;
87
+ height: 9px;
88
+ border-radius: 50%;
89
+ background: var(--line);
90
+ }
91
+ .hk-term-title {
92
+ font-size: 11px;
93
+ color: var(--text-dim);
94
+ flex: 1 1 auto;
95
+ min-width: 0;
96
+ overflow: hidden;
97
+ text-overflow: ellipsis;
98
+ white-space: nowrap;
99
+ }
100
+ .hk-term-tags {
101
+ display: flex;
102
+ gap: 6px;
103
+ flex: 0 0 auto;
104
+ }
105
+ /* The colour set and the symbol set the picture was drawn with. The words are
106
+ the CLI's own and are printed verbatim. */
107
+ .hk-term-tag {
108
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
109
+ font-size: 10px;
110
+ color: var(--text-dim);
111
+ border: 1px solid var(--line);
112
+ border-radius: 999px;
113
+ padding: 1px 7px;
114
+ }
115
+ .hk-term-screen {
116
+ padding: 10px 12px;
117
+ overflow-x: auto;
118
+ scrollbar-width: thin;
119
+ scrollbar-color: var(--line) transparent;
120
+ }
121
+ .hk-term-screen::-webkit-scrollbar {
122
+ height: 8px;
123
+ }
124
+ .hk-term-screen::-webkit-scrollbar-track {
125
+ background: transparent;
126
+ }
127
+ .hk-term-screen::-webkit-scrollbar-thumb {
128
+ background: var(--line);
129
+ border-radius: 4px;
130
+ }
131
+ /* The line inside a window has no box of its own: the window IS the box, and a
132
+ second border around the same string reads as a second thing. */
133
+ .hk-preview-flat {
134
+ border: none;
135
+ background: transparent;
136
+ padding: 0;
137
+ overflow-x: visible;
138
+ }
139
+ .hk-term-sm .hk-term-screen {
140
+ padding: 7px 10px;
141
+ }
142
+ .hk-term-sm .hk-preview {
143
+ font-size: 12px;
144
+ }
145
+ .hk-ruler {
146
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
147
+ font-size: 13px;
148
+ line-height: 1.55;
149
+ white-space: pre;
150
+ color: var(--text-dim);
151
+ opacity: 0.55;
152
+ border-bottom: 1px solid var(--line);
153
+ margin-bottom: 6px;
154
+ padding-bottom: 2px;
155
+ }
156
+ .hk-widths {
157
+ margin-top: 8px;
158
+ }
159
+
160
+ /* ── the comparison drawer ─────────────────────────────────────────────── */
161
+ /* Eleven more terminals is a wall of them, and it pushed the board off the
162
+ screen. One drawer, closed by default, fetched on the first open. */
163
+ .hk-compare {
58
164
  margin-top: 14px;
165
+ border: 1px solid var(--line);
166
+ border-radius: 10px;
167
+ overflow: hidden;
168
+ }
169
+ .hk-compare-head {
170
+ display: flex;
171
+ align-items: center;
172
+ gap: 10px;
173
+ width: 100%;
174
+ text-align: left;
175
+ padding: 9px 12px;
176
+ border: none;
177
+ background: var(--surface-3);
178
+ color: var(--text);
179
+ cursor: pointer;
180
+ font: inherit;
181
+ }
182
+ .hk-compare-head .tier-caret {
183
+ color: var(--text-dim);
184
+ }
185
+ .hk-compare-open .hk-compare-head .tier-caret {
186
+ transform: rotate(90deg);
187
+ }
188
+ .hk-compare-title {
189
+ font-weight: 600;
190
+ font-size: 13px;
191
+ }
192
+ .hk-compare-body {
193
+ display: none;
194
+ padding: 12px;
195
+ gap: 10px;
196
+ }
197
+ .hk-compare-open .hk-compare-body {
59
198
  display: grid;
60
- gap: 6px;
61
199
  }
62
- .hk-degrade-row {
200
+ .hk-compare-group {
201
+ font-size: 11px;
202
+ letter-spacing: 0.06em;
203
+ text-transform: uppercase;
204
+ color: var(--text-dim);
205
+ margin-top: 4px;
206
+ }
207
+ .hk-compare-row {
63
208
  display: grid;
64
- grid-template-columns: 90px 1fr;
209
+ grid-template-columns: 110px 1fr;
65
210
  gap: 10px;
66
211
  align-items: center;
212
+ min-width: 0;
67
213
  }
68
- .hk-degrade-label {
214
+ .hk-compare-label {
215
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
69
216
  font-size: 11px;
70
- color: var(--fg-dim);
217
+ color: var(--text-dim);
71
218
  text-align: right;
72
219
  }
220
+ .hk-compare-row .hk-term-bar {
221
+ display: none;
222
+ }
223
+ /* A control this SHAPE cannot use. It keeps its slot and carries the reason —
224
+ "this shape cannot use it" and "we forgot to offer it" must never look the
225
+ same, and a value already set has to stay readable. */
226
+ .hk-inert {
227
+ display: grid;
228
+ gap: 4px;
229
+ }
230
+ .hk-inert > :first-child {
231
+ opacity: 0.45;
232
+ pointer-events: none;
233
+ }
234
+ .hk-editor-live {
235
+ display: grid;
236
+ gap: 6px;
237
+ }
73
238
 
74
239
  /* ── cautions ──────────────────────────────────────────────────────────── */
75
240
  .hk-caution {
@@ -89,22 +254,29 @@
89
254
 
90
255
  /* ── the board ─────────────────────────────────────────────────────────── */
91
256
  .hk-line-wrap {
92
- margin-bottom: 16px;
257
+ margin-bottom: 18px;
93
258
  }
94
259
  .hk-line-head {
95
260
  display: flex;
96
261
  justify-content: space-between;
97
- align-items: baseline;
262
+ align-items: center;
263
+ flex-wrap: wrap;
264
+ gap: 8px;
98
265
  margin-bottom: 6px;
99
266
  }
267
+ .hk-line-title {
268
+ display: flex;
269
+ align-items: baseline;
270
+ gap: 10px;
271
+ }
100
272
  .hk-line-name {
101
273
  font-size: 12px;
102
274
  font-weight: 600;
103
- color: var(--fg-dim);
275
+ color: var(--text-dim);
104
276
  }
105
277
  .hk-line-count {
106
278
  font-size: 11px;
107
- color: var(--fg-dim);
279
+ color: var(--text-dim);
108
280
  }
109
281
  .hk-full {
110
282
  color: var(--warn);
@@ -113,13 +285,23 @@
113
285
  .hk-zone {
114
286
  display: flex;
115
287
  flex-wrap: wrap;
116
- gap: 8px;
117
- padding: 10px;
288
+ gap: 10px;
289
+ padding: 12px;
118
290
  border: 1px dashed var(--line);
119
291
  border-radius: 10px;
120
- min-height: 64px;
292
+ min-height: 84px;
121
293
  align-items: stretch;
122
294
  }
295
+ /* The zone under a chip being dragged over it. A border change, not a glow:
296
+ the affordance has to survive a reader who asked for less motion. */
297
+ .hk-zone-hot {
298
+ border-color: var(--accent);
299
+ border-style: solid;
300
+ background: var(--surface-2);
301
+ }
302
+ .hk-zone-why {
303
+ flex-basis: 100%;
304
+ }
123
305
  /* An illegal line is DISABLED with its reason on the zone itself — never a
124
306
  toast after the fact, never a validation error on Apply. A user should not be
125
307
  able to do the wrong thing and then be told off for it. */
@@ -129,8 +311,8 @@
129
311
  45deg,
130
312
  transparent,
131
313
  transparent 6px,
132
- var(--bg-sunken) 6px,
133
- var(--bg-sunken) 12px
314
+ var(--surface-2) 6px,
315
+ var(--surface-2) 12px
134
316
  );
135
317
  }
136
318
  .hk-blocked {
@@ -138,122 +320,280 @@
138
320
  gap: 8px;
139
321
  align-items: center;
140
322
  font-size: 12px;
141
- color: var(--fg-dim);
323
+ color: var(--text-dim);
142
324
  padding: 8px;
143
325
  }
144
326
 
145
- /* A chip's child count CHANGES with its state — an open editor adds a whole
146
- drawer — so it is a FLEX COLUMN and never declares its rows. A card whose
147
- child count changes with its state must not have a row template; that is what
148
- put a 250px ellipse on the Extra panel. */
327
+ /* A chip's child count CHANGES with its state — a part with no description is
328
+ one row shorter — so it is a FLEX COLUMN and never declares its rows. A card
329
+ whose child count changes with its state must not have a row template; that
330
+ is what put a 250px ellipse on the Extra panel. */
149
331
  .hk-chip {
150
332
  display: flex;
151
333
  flex-direction: column;
152
- gap: 4px;
153
- padding: 8px;
334
+ gap: 5px;
335
+ padding: 9px 10px;
154
336
  border: 1px solid var(--line);
155
- border-radius: 8px;
156
- background: var(--bg-raised);
157
- min-width: 120px;
337
+ border-radius: 9px;
338
+ background: var(--surface-3);
339
+ min-width: 150px;
340
+ max-width: 280px;
341
+ cursor: grab;
342
+ /* The drop marker is drawn on this edge, so the space for it is reserved
343
+ always — a border that appears on hover would shift every chip to its
344
+ right by two pixels at the moment of the drop decision. */
345
+ box-shadow: inset 0 0 0 0 var(--accent);
158
346
  }
159
347
  .hk-chip:focus-visible {
160
348
  outline: 2px solid var(--accent);
161
349
  outline-offset: 2px;
162
350
  }
163
- .hk-chip-open {
351
+ .hk-chip:active {
352
+ cursor: grabbing;
353
+ }
354
+ .hk-chip-dragging {
355
+ opacity: 0.4;
356
+ border-style: dashed;
357
+ }
358
+ /* WHERE IT WILL LAND, on the edge it will land on. A gap that opens up would
359
+ move every other chip while the pointer is deciding. */
360
+ .hk-drop-before {
361
+ box-shadow: inset 3px 0 0 0 var(--accent);
362
+ }
363
+ .hk-drop-after {
364
+ box-shadow: inset -3px 0 0 0 var(--accent);
365
+ }
366
+ /* Staged, not written. The dashed accent edge is the same language the edit bar
367
+ uses at the bottom of the page. */
368
+ .hk-chip-new {
164
369
  border-color: var(--accent);
165
- width: 100%;
370
+ border-style: dashed;
166
371
  }
167
372
  .hk-chip-face {
168
- min-height: 24px;
169
- }
170
- .hk-chip-foot {
171
373
  display: flex;
172
- justify-content: space-between;
173
374
  align-items: center;
174
375
  gap: 6px;
376
+ min-height: 24px;
377
+ }
378
+ .hk-grip {
379
+ color: var(--text-dim);
380
+ font-size: 14px;
381
+ line-height: 1;
382
+ cursor: grab;
383
+ user-select: none;
175
384
  }
176
385
  .hk-chip-id {
177
386
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
178
387
  font-size: 11px;
179
- color: var(--fg-dim);
388
+ color: var(--text-dim);
180
389
  }
181
- .hk-icon {
182
- background: none;
183
- border: none;
184
- color: var(--fg-dim);
185
- cursor: pointer;
186
- font-size: 14px;
187
- line-height: 1;
188
- padding: 2px 4px;
189
- border-radius: 4px;
190
- }
191
- .hk-icon:hover {
192
- background: var(--bg-sunken);
193
- color: var(--fg);
390
+ /* "What is this thing" is the first question anybody asks of a bar full of
391
+ symbols, and until v1.4.1 the answer lived only in a tooltip. */
392
+ .hk-chip-desc {
393
+ font-size: 11px;
394
+ line-height: 1.45;
395
+ color: var(--text-dim);
194
396
  }
195
- .hk-move {
397
+ .hk-chip-acts {
196
398
  display: flex;
197
399
  gap: 4px;
198
400
  flex-wrap: wrap;
401
+ margin-top: 2px;
199
402
  }
403
+ .hk-act {
404
+ font-size: 11px;
405
+ padding: 3px 8px;
406
+ border: 1px solid var(--line);
407
+ border-radius: 5px;
408
+ background: var(--surface-2);
409
+ color: var(--text-dim);
410
+ cursor: pointer;
411
+ }
412
+ .hk-act:hover {
413
+ border-color: var(--accent);
414
+ color: var(--text);
415
+ }
416
+ .hk-act-remove:hover {
417
+ border-color: var(--bad);
418
+ color: var(--bad);
419
+ }
420
+
200
421
  .hk-add {
201
422
  border: 1px dashed var(--line);
202
423
  background: none;
203
- color: var(--fg-dim);
204
- border-radius: 8px;
205
- padding: 8px 14px;
424
+ color: var(--text-dim);
425
+ border-radius: 9px;
426
+ padding: 10px 18px;
206
427
  cursor: pointer;
207
428
  font-size: 12px;
429
+ min-width: 150px;
208
430
  }
209
- .hk-add:hover {
431
+ .hk-add:hover:not(:disabled) {
210
432
  border-color: var(--accent);
211
- color: var(--fg);
433
+ color: var(--text);
434
+ }
435
+ .hk-add:disabled {
436
+ cursor: not-allowed;
437
+ opacity: 0.5;
212
438
  }
213
439
 
214
440
  .hk-line-opts {
215
441
  display: flex;
216
442
  align-items: center;
217
443
  gap: 8px;
218
- margin-top: 6px;
219
444
  }
220
- .hk-sep,
445
+ .hk-select,
221
446
  .hk-input {
222
447
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
223
448
  font-size: 12px;
224
449
  padding: 4px 8px;
225
450
  border: 1px solid var(--line);
226
451
  border-radius: 6px;
227
- background: var(--bg-sunken);
228
- color: var(--fg);
229
- max-width: 200px;
452
+ background: var(--surface-2);
453
+ color: var(--text);
454
+ max-width: 260px;
455
+ }
456
+ /* THE OPEN LIST IS NOT THE CLOSED BOX (v1.4.2). A native <select> popup is
457
+ drawn by the platform, and it inherits the control's `color` while taking its
458
+ background from the system - so a light `--fg` on a dark panel arrived as
459
+ near-white text on the platform's near-white menu, and the values could not
460
+ be read at all. `color-scheme` tells the platform which menu to draw, and the
461
+ option rule states both halves rather than leaving one of them to chance. */
462
+ .hk-select {
463
+ color-scheme: light dark;
464
+ }
465
+ .hk-select option,
466
+ .hk-select optgroup {
467
+ background: var(--surface-3);
468
+ color: var(--text);
469
+ }
470
+ .hk-select option:disabled {
471
+ color: var(--text-dim);
230
472
  }
231
473
 
232
- /* ── the editor drawer ─────────────────────────────────────────────────── */
233
- .hk-drawer {
234
- border-top: 1px solid var(--line);
235
- margin-top: 8px;
236
- padding-top: 10px;
237
- display: grid;
474
+ /* ── the part picker ───────────────────────────────────────────────────── */
475
+ .hk-picker {
476
+ display: flex;
477
+ flex-direction: column;
478
+ gap: 10px;
479
+ min-width: min(560px, 76vw);
480
+ }
481
+ .hk-picker-search {
482
+ display: flex;
483
+ align-items: center;
484
+ gap: 10px;
485
+ }
486
+ .hk-picker-input {
487
+ flex: 1 1 auto;
488
+ max-width: none;
489
+ }
490
+ .hk-picker-list {
491
+ display: flex;
492
+ flex-direction: column;
493
+ gap: 6px;
494
+ max-height: 46vh;
495
+ overflow-y: auto;
496
+ scrollbar-width: thin;
497
+ scrollbar-color: var(--line) transparent;
498
+ }
499
+ .hk-picker-list::-webkit-scrollbar {
500
+ width: 8px;
501
+ }
502
+ .hk-picker-list::-webkit-scrollbar-track {
503
+ background: transparent;
504
+ }
505
+ .hk-picker-list::-webkit-scrollbar-thumb {
506
+ background: var(--line);
507
+ border-radius: 4px;
508
+ }
509
+ /* One click, one part. A refused row is drawn as a plain div and gets NO button
510
+ at all — never a disabled one: "we decided against this" and "we forgot" must
511
+ not look the same. */
512
+ .hk-pick-row {
513
+ display: flex;
514
+ flex-direction: column;
515
+ align-items: stretch;
516
+ gap: 4px;
517
+ width: 100%;
518
+ padding: 9px 11px;
519
+ border: 1px solid var(--line);
520
+ border-radius: 8px;
521
+ background: var(--surface-3);
522
+ text-align: left;
523
+ cursor: pointer;
524
+ color: inherit;
525
+ }
526
+ button.hk-pick-row:hover {
527
+ border-color: var(--accent);
528
+ background: var(--surface-2);
529
+ }
530
+ .hk-pick-row-off {
531
+ cursor: default;
532
+ opacity: 0.7;
533
+ background: none;
534
+ }
535
+ .hk-pick-top {
536
+ display: flex;
537
+ align-items: center;
238
538
  gap: 8px;
539
+ flex-wrap: wrap;
239
540
  }
240
- .hk-drawer-head {
241
- font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
242
- font-weight: 600;
243
- font-size: 13px;
541
+ .hk-pick-desc {
542
+ font-size: 12px;
543
+ line-height: 1.5;
544
+ color: var(--text-dim);
545
+ }
546
+
547
+ /* ── move ──────────────────────────────────────────────────────────────── */
548
+ .hk-move-line {
549
+ display: flex;
550
+ flex-direction: column;
551
+ gap: 6px;
552
+ padding: 9px 0;
553
+ border-bottom: 1px solid var(--line);
554
+ }
555
+ .hk-move-slots {
556
+ display: flex;
557
+ gap: 6px;
558
+ flex-wrap: wrap;
559
+ }
560
+
561
+ /* ── the part editor ───────────────────────────────────────────────────── */
562
+ .hk-editor {
563
+ display: flex;
564
+ flex-direction: column;
565
+ gap: 9px;
566
+ min-width: min(620px, 78vw);
567
+ }
568
+ .hk-editor-live {
569
+ position: sticky;
570
+ top: 0;
571
+ z-index: 1;
572
+ background: var(--surface-3);
573
+ padding-bottom: 4px;
574
+ }
575
+ /* The editor is a flex COLUMN that stretches its children, which turned a small
576
+ secondary button into a full-width box that read as a text field. */
577
+ .hk-swap {
578
+ align-self: flex-start;
579
+ }
580
+ .hk-section-wrap {
581
+ display: flex;
582
+ flex-direction: column;
583
+ gap: 3px;
584
+ margin-top: 10px;
244
585
  }
245
586
  .hk-section {
246
587
  font-size: 11px;
247
588
  text-transform: uppercase;
248
589
  letter-spacing: 0.06em;
249
- color: var(--fg-dim);
250
- margin-top: 8px;
590
+ color: var(--text-dim);
251
591
  border-bottom: 1px solid var(--line);
252
592
  padding-bottom: 3px;
253
593
  }
254
594
  /* THE SHAPE PICKER IS A GALLERY, NOT A DROPDOWN: every option drawn with this
255
- component's real value. A dropdown containing the word `braille-bar` tells
256
- nobody anything. */
595
+ component's real value. A dropdown containing a renderer's name tells nobody
596
+ anything. */
257
597
  .hk-gallery {
258
598
  display: grid;
259
599
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
@@ -267,29 +607,41 @@
267
607
  padding: 6px 8px;
268
608
  border: 1px solid var(--line);
269
609
  border-radius: 6px;
270
- background: var(--bg-sunken);
610
+ background: var(--surface-2);
271
611
  cursor: pointer;
272
612
  text-align: left;
273
613
  }
614
+ .hk-sample:hover {
615
+ border-color: var(--accent);
616
+ }
274
617
  .hk-sample-on {
275
618
  border-color: var(--accent);
276
- background: var(--bg-raised);
619
+ background: var(--surface-3);
277
620
  }
278
621
  .hk-sample-id {
279
622
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
280
623
  font-size: 10px;
281
- color: var(--fg-dim);
624
+ color: var(--text-dim);
282
625
  }
283
626
 
627
+ /* A control, its name, and the sentence that says what it does. The sentence is
628
+ why this is a two-line left column rather than a label. */
284
629
  .hk-field {
285
630
  display: grid;
286
- grid-template-columns: 110px 1fr;
287
- gap: 10px;
288
- align-items: center;
631
+ grid-template-columns: 190px 1fr;
632
+ gap: 12px;
633
+ align-items: start;
634
+ padding: 5px 0;
635
+ }
636
+ .hk-field-left {
637
+ display: flex;
638
+ flex-direction: column;
639
+ gap: 2px;
289
640
  }
290
641
  .hk-field-name {
291
642
  font-size: 12px;
292
- color: var(--fg-dim);
643
+ font-weight: 600;
644
+ color: var(--text);
293
645
  }
294
646
  .hk-picks {
295
647
  display: flex;
@@ -302,14 +654,17 @@
302
654
  padding: 3px 7px;
303
655
  border: 1px solid var(--line);
304
656
  border-radius: 5px;
305
- background: var(--bg-sunken);
306
- color: var(--fg-dim);
657
+ background: var(--surface-2);
658
+ color: var(--text-dim);
307
659
  cursor: pointer;
308
660
  }
661
+ .hk-pick:hover {
662
+ border-color: var(--accent);
663
+ }
309
664
  .hk-pick-on {
310
665
  border-color: var(--accent);
311
- color: var(--fg);
312
- background: var(--bg-raised);
666
+ color: var(--text);
667
+ background: var(--surface-3);
313
668
  }
314
669
  .hk-checks {
315
670
  display: grid;
@@ -323,30 +678,33 @@
323
678
  font-size: 12px;
324
679
  }
325
680
 
326
- /* ── the palette ───────────────────────────────────────────────────────── */
681
+ /* ── the reference list ────────────────────────────────────────────────── */
327
682
  .hk-palette-search {
328
- font-size: 12px;
329
- padding: 4px 10px;
330
- border: 1px solid var(--line);
331
- border-radius: 6px;
332
- background: var(--bg-sunken);
333
- color: var(--fg);
334
683
  min-width: 180px;
335
684
  }
336
- /* A row's child count changes with its state — a refused row carries a reason
337
- and no buttons — so it is a flex column, not a grid with declared columns. */
685
+ /* A row's child count changes with its state — a refused row carries a reason
686
+ so it is a flex column, not a grid with declared columns. */
338
687
  .hk-prow {
339
688
  display: flex;
340
- flex-wrap: wrap;
689
+ flex-direction: column;
690
+ gap: 4px;
691
+ padding: 9px 0;
692
+ border-bottom: 1px solid var(--line);
693
+ }
694
+ .hk-prow-head {
695
+ display: flex;
341
696
  align-items: center;
342
697
  gap: 10px;
343
- padding: 7px 0;
344
- border-bottom: 1px solid var(--line);
698
+ flex-wrap: wrap;
345
699
  }
346
700
  .hk-prow-id {
347
701
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
348
702
  font-size: 12px;
349
- min-width: 150px;
703
+ }
704
+ .hk-prow-desc {
705
+ font-size: 12px;
706
+ line-height: 1.5;
707
+ color: var(--text-dim);
350
708
  }
351
709
  .hk-prow-why {
352
710
  flex-basis: 100%;
@@ -365,6 +723,43 @@
365
723
  align-items: center;
366
724
  }
367
725
 
726
+ /* ── the colour set picker ─────────────────────────────────────────────── */
727
+ /* Each option carries the CLI's own sentence about what it is FOR, so it is a
728
+ card and not a word in a row of words. */
729
+ .hk-theme-list {
730
+ display: flex;
731
+ flex-wrap: wrap;
732
+ gap: 8px;
733
+ }
734
+ .hk-theme {
735
+ display: flex;
736
+ flex-direction: column;
737
+ align-items: flex-start;
738
+ gap: 3px;
739
+ flex: 1 1 220px;
740
+ max-width: 320px;
741
+ padding: 8px 10px;
742
+ border: 1px solid var(--line);
743
+ border-radius: 8px;
744
+ background: var(--surface-2);
745
+ cursor: pointer;
746
+ text-align: left;
747
+ color: inherit;
748
+ }
749
+ .hk-theme:hover {
750
+ border-color: var(--accent);
751
+ }
752
+ .hk-theme-on {
753
+ border-color: var(--accent);
754
+ background: var(--surface-3);
755
+ }
756
+ .hk-theme-name {
757
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
758
+ font-size: 12px;
759
+ font-weight: 600;
760
+ color: var(--text);
761
+ }
762
+
368
763
  /* A number field is a NUMBER field: wide enough for three digits and its
369
764
  spinner, and no wider. A 200px box for a value between 0 and 8 reads as a
370
765
  free-text field somebody has to think about. */