@kontourai/survey 1.11.0 → 1.13.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.
@@ -149,81 +149,66 @@
149
149
  }
150
150
 
151
151
 
152
- /* Survey Review Workbench — "forensic review console" aesthetic.
153
- Reviewers judge whether a proposed value should overwrite a verified one;
154
- the visual language is built to highlight the value diff, the decision, the
155
- confidence, and the provenance — in that order. */
156
-
152
+ /* Survey Review Workbench — field-diff review UI.
153
+ Reviewers judge, field by field, whether a proposed value should replace a
154
+ current one. The visual language leads with the value diff, then confidence,
155
+ then provenance, then the decision — plain language on the primary surface,
156
+ audit/trace detail tucked behind one collapsed <details> per field.
157
+
158
+ Token contract: every color/radius/shadow/font below resolves through --k-*
159
+ custom properties so a host app can re-skin the whole surface by overriding
160
+ tokens alone (see the "Theming" section of docs/consumer-integration-guide.md).
161
+ The aliases declared here (--k-muted, --k-raised, --k-sunken, --k-brand-ink,
162
+ --k-brand-wash, --k-positive-wash, --k-caution-wash, --k-negative-wash,
163
+ --k-radius) derive from Survey's existing --k-text-muted / --k-panel-raised /
164
+ --k-brand-contrast / --k-*-soft / --k-radius-md tokens so overriding the base
165
+ token a host already knows about re-skins these too — a host can also override
166
+ any alias directly for finer control. */
157
167
 
158
168
  .survey-workbench-embed{
159
169
  color-scheme: dark;
160
170
 
161
- /* Local aliases preserve the existing workbench selectors while the values
162
- come from the shared Console Kit token contract. */
163
- --ink-1000: var(--k-bg);
164
- --ink-900: color-mix(in srgb, var(--k-bg) 60%, var(--k-panel));
165
- --ink-850: color-mix(in srgb, var(--k-bg) 40%, var(--k-panel));
166
- --ink-800: var(--k-panel);
167
- --ink-750: var(--k-panel-raised);
168
- --ink-700: color-mix(in srgb, var(--k-panel-raised) 80%, var(--k-line-strong));
169
- --paper: var(--k-text);
170
- --paper-dim: var(--k-text-muted);
171
- --paper-faint: var(--k-text-faint);
172
- --line: var(--k-line);
173
- --line-strong: var(--k-line-strong);
174
- --accent: var(--k-brand);
175
- --accent-deep: color-mix(in srgb, var(--k-brand) 34%, var(--k-bg));
176
- --proposed: var(--k-active);
177
- --verify: var(--k-positive);
178
- --hold: var(--k-caution);
179
- --reject: var(--k-negative);
180
- --radius: var(--k-radius-md);
181
- --radius-sm: var(--k-radius-sm);
182
-
183
- /* Panel surface alpha — stronger contrast in light mode, subtle in dark */
184
- --surface-alpha: 0.55;
185
- /* Overlay tint alpha for brand-coloured gradient overlays */
186
- --overlay-alpha: 0.10;
187
- /* Grain overlay: visible dark only, 0 in light */
188
- --grain-opacity: 0.04;
189
- /* VS marker bg */
190
- --vs-bg: var(--ink-750);
171
+ --k-muted: var(--k-text-muted);
172
+ --k-faint: var(--k-text-faint);
173
+ --k-raised: var(--k-panel-raised);
174
+ --k-sunken: color-mix(in srgb, var(--k-bg) 55%, var(--k-panel) 45%);
175
+ --k-brand-ink: var(--k-brand-contrast);
176
+ --k-brand-wash: color-mix(in srgb, var(--k-brand) 14%, transparent);
177
+ --k-positive-wash: var(--k-positive-soft, color-mix(in srgb, var(--k-positive) 14%, transparent));
178
+ --k-caution-wash: var(--k-caution-soft, color-mix(in srgb, var(--k-caution) 14%, transparent));
179
+ --k-negative-wash: var(--k-negative-soft, color-mix(in srgb, var(--k-negative) 14%, transparent));
180
+ --k-radius: var(--k-radius-md);
191
181
 
192
182
  font-family: var(--k-font-ui);
193
- background: var(--ink-1000);
194
- color: var(--paper);
195
- }
196
-
197
- /* ---- Light mode token overrides --------------------------------------- */
198
- /* The token sheet already flips --k-bg/panel/text etc. for [data-theme="light"].
199
- Here we tune the workbench-specific overlay and surface alphas so the
200
- grain/gradient overlays are invisible in light mode, and panel surfaces
201
- have enough contrast without the dark alpha tricks. */
183
+ background: var(--k-bg);
184
+ color: var(--k-text);
185
+ }
186
+
187
+ /* Re-assert the base structural tokens for light mode. themes.css's `.theme-*`
188
+ preset classes hardcode a dark --k-bg/--k-panel/etc (so the preset "just
189
+ works" without requiring [data-theme] to be set), and a bare class selector
190
+ ties with the `[data-theme="light"]` selector in tokens.css on specificity —
191
+ so source order decides, and themes.css loads after tokens.css. Re-declaring
192
+ the light values here (loaded after themes.css) wins that tie-break. Presets
193
+ still control --k-brand (and theme-console's fuller palette) via their own,
194
+ more specific `[data-theme="light"].theme-*` rules in themes.css. */
202
195
  .survey-workbench-embed[data-theme="light"]{
203
196
  color-scheme: light;
204
- /* Structural tokens: override .theme-survey which hardcodes dark values.
205
- These match the [data-theme="light"] block in tokens.css. */
206
197
  --k-bg: #f5f4ef;
207
198
  --k-panel: #ffffff;
208
199
  --k-panel-raised: #fbfaf7;
209
200
  --k-line: rgba(36, 40, 46, 0.12);
210
201
  --k-line-strong: rgba(36, 40, 46, 0.20);
202
+ --k-shadow: 0 18px 50px -30px rgba(0, 0, 0, 0.25);
211
203
  --k-text: #202124;
212
204
  --k-text-muted: #5b626b;
213
205
  --k-text-faint: #707782;
206
+ --k-brand-contrast: #ffffff;
214
207
  --k-positive: #168257;
215
208
  --k-caution: #8a5a00;
216
209
  --k-negative: #c83b3b;
210
+ --k-neutral: #5f6975;
217
211
  --k-active: #3f6fd6;
218
- /* Workbench-specific overlay and surface alphas */
219
- --grain-opacity: 0;
220
- --overlay-alpha: 0.06;
221
- --surface-alpha: 0.70;
222
- --vs-bg: var(--ink-750);
223
- /* In light mode the brand accent is remapped by themes.css — ensure the
224
- ink aliases derive cleanly from the token bg/panel values. */
225
- --ink-900: color-mix(in srgb, var(--k-bg) 60%, var(--k-panel));
226
- --ink-850: color-mix(in srgb, var(--k-bg) 40%, var(--k-panel));
227
212
  }
228
213
 
229
214
  .survey-workbench-embed *{
@@ -233,30 +218,21 @@
233
218
  .survey-workbench-embed{
234
219
  margin: 0;
235
220
  min-width: 320px;
236
- position: relative;
237
- background:
238
- radial-gradient(1100px 620px at 12% -8%, color-mix(in srgb, var(--k-brand) 10%, transparent), transparent 60%),
239
- radial-gradient(900px 560px at 100% 0%, color-mix(in srgb, var(--k-active) 10%, transparent), transparent 55%),
240
- radial-gradient(800px 800px at 88% 110%, color-mix(in srgb, var(--k-caution) 7%, transparent), transparent 60%),
241
- linear-gradient(180deg, var(--ink-1000), var(--ink-900) 55%, var(--ink-1000));
242
- background-attachment: fixed;
243
221
  }
244
222
 
245
- /* Grain + faint engineering grid for control-room atmosphere.
246
- Grain opacity is 0 in light mode via --grain-opacity. */
247
- .survey-workbench-embed::before{
248
- content: "";
249
- position: absolute;
250
- inset: 0;
251
- z-index: 0;
252
- pointer-events: none;
253
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");
254
- opacity: var(--grain-opacity);
255
- mix-blend-mode: screen;
223
+ .survey-workbench-embed button,
224
+ .survey-workbench-embed textarea,
225
+ .survey-workbench-embed input{
226
+ font: inherit;
227
+ color: inherit;
228
+ }
229
+
230
+ .survey-workbench-embed h1, .survey-workbench-embed h2, .survey-workbench-embed h3, .survey-workbench-embed p{
231
+ margin: 0;
256
232
  }
257
233
 
258
- /* ---- Demo page chrome -------------------------------------------------- */
259
- /* Light/dark toggle button on the demo wrapper around the workbench */
234
+ /* ---------- demo page chrome (host page only, not part of the component) ---------- */
235
+
260
236
  .survey-workbench-embed .demo-toolbar{
261
237
  position: absolute;
262
238
  top: 12px;
@@ -273,23 +249,20 @@
273
249
  gap: 6px;
274
250
  height: 32px;
275
251
  padding: 0 12px;
276
- border: 1px solid var(--line-strong);
252
+ border: 1px solid var(--k-line-strong);
277
253
  border-radius: 999px;
278
- background: color-mix(in srgb, var(--k-panel) 90%, transparent);
279
- color: var(--paper-dim);
254
+ background: var(--k-panel);
255
+ color: var(--k-muted);
280
256
  cursor: pointer;
281
- font-family: var(--k-font-mono, "IBM Plex Mono", monospace);
282
- font-size: 11px;
257
+ font-size: 12px;
283
258
  font-weight: 600;
284
- letter-spacing: 0.06em;
285
- backdrop-filter: blur(6px);
259
+ letter-spacing: 0.02em;
286
260
  transition: background 0.16s ease, border-color 0.16s ease, color 0.16s ease;
287
261
  }
288
262
 
289
263
  .survey-workbench-embed.theme-toggle:hover{
290
- background: color-mix(in srgb, var(--k-panel) 100%, transparent);
291
- border-color: var(--accent);
292
- color: var(--accent);
264
+ border-color: var(--k-brand);
265
+ color: var(--k-brand);
293
266
  }
294
267
 
295
268
  .survey-workbench-embed.theme-toggle-icon{
@@ -297,775 +270,672 @@
297
270
  line-height: 1;
298
271
  }
299
272
 
300
- .survey-workbench-embed button,
301
- .survey-workbench-embed textarea{
302
- font: inherit;
303
- }
304
-
305
- .survey-workbench-embed h1,
306
- .survey-workbench-embed h2,
307
- .survey-workbench-embed h3,
308
- .survey-workbench-embed p{
309
- margin: 0;
310
- }
273
+ /* ---------- outer containers ---------- */
311
274
 
312
275
  .survey-workbench-embed .workbench{
313
276
  position: relative;
314
- z-index: 1;
315
277
  container-type: inline-size;
316
278
  min-height: 100vh;
317
- padding: 22px 22px 50px;
279
+ padding: 28px 20px 80px;
318
280
  }
319
281
 
320
282
  .survey-workbench-embed .workbench-shell{
321
- display: grid;
322
- grid-template-rows: auto minmax(0, 1fr);
323
- gap: 16px;
324
- max-width: 1360px;
283
+ max-width: 940px;
325
284
  margin: 0 auto;
326
285
  }
327
286
 
328
- /* ---- Shared label vocabulary ------------------------------------------ */
287
+ /* ---------- review panel + header ---------- */
329
288
 
330
- .survey-workbench-embed .eyebrow,
331
- .survey-workbench-embed .field-label,
332
- .survey-workbench-embed .state-label{
333
- color: var(--accent);
334
- font-family: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
335
- font-size: 10.5px;
336
- font-weight: 600;
337
- letter-spacing: 0.18em;
338
- text-transform: uppercase;
289
+ .survey-workbench-embed .review{
290
+ background: var(--k-panel);
291
+ border: 1px solid var(--k-line);
292
+ border-radius: var(--k-radius);
293
+ box-shadow: var(--k-shadow);
294
+ overflow: hidden;
339
295
  }
340
296
 
341
- .survey-workbench-embed .field-label{
342
- color: var(--paper-faint);
343
- letter-spacing: 0.14em;
297
+ .survey-workbench-embed .rhead{
298
+ padding: 20px 22px;
299
+ border-bottom: 1px solid var(--k-line);
300
+ display: grid;
301
+ gap: 14px;
344
302
  }
345
303
 
346
- .survey-workbench-embed .field-value,
347
- .survey-workbench-embed .meta-value{
348
- overflow-wrap: anywhere;
349
- word-break: break-word;
350
- line-height: 1.4;
351
- color: var(--paper);
304
+ .survey-workbench-embed .rhead .top{
305
+ display: flex;
306
+ align-items: flex-start;
307
+ gap: 14px;
308
+ flex-wrap: wrap;
352
309
  }
353
310
 
354
- /* ---- Top command bar -------------------------------------------------- */
311
+ .survey-workbench-embed .rhead .eyebrow{
312
+ font-size: 12px;
313
+ letter-spacing: 0.08em;
314
+ text-transform: uppercase;
315
+ color: var(--k-faint);
316
+ }
355
317
 
356
- .survey-workbench-embed .topbar{
357
- display: grid;
358
- grid-template-columns: minmax(0, 1fr);
359
- gap: 12px;
360
- align-items: center;
361
- padding: 15px 17px;
362
- border: 1px solid var(--line-strong);
363
- border-radius: var(--radius);
364
- background:
365
- linear-gradient(135deg, color-mix(in srgb, var(--k-brand) 8%, transparent), transparent 42%),
366
- linear-gradient(180deg, var(--ink-800), var(--ink-850));
367
- box-shadow: var(--k-shadow, 0 24px 60px -34px rgba(0, 0, 0, 0.9)), inset 0 1px 0 var(--line);
368
- animation: rise 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
318
+ .survey-workbench-embed .rhead h1{
319
+ margin: 2px 0 0;
320
+ font-size: 21px;
321
+ line-height: 1.2;
322
+ text-wrap: balance;
323
+ letter-spacing: -0.01em;
324
+ overflow-wrap: anywhere;
369
325
  }
370
326
 
371
- .survey-workbench-embed .topbar > div{
372
- min-width: 0;
327
+ .survey-workbench-embed .rhead .subj{
328
+ flex: 1;
329
+ min-width: 240px;
373
330
  }
374
331
 
375
- .survey-workbench-embed .topbar .eyebrow::before{
376
- content: "● ";
377
- color: var(--verify);
332
+ .survey-workbench-embed .meta{
333
+ display: flex;
334
+ gap: 18px;
335
+ flex-wrap: wrap;
336
+ font-size: 12.5px;
337
+ color: var(--k-muted);
378
338
  }
379
339
 
380
- .survey-workbench-embed h1{
381
- margin-top: 6px;
382
- font-family: "Fraunces", Georgia, "Times New Roman", serif;
383
- font-optical-sizing: auto;
340
+ .survey-workbench-embed .meta b{
341
+ color: var(--k-text);
384
342
  font-weight: 600;
385
- font-size: clamp(21px, 2vw, 27px);
386
- line-height: 1.08;
387
- letter-spacing: -0.01em;
388
- overflow-wrap: anywhere;
389
- color: var(--paper);
343
+ font-variant-numeric: tabular-nums;
390
344
  }
391
345
 
392
- .survey-workbench-embed .review-question{
393
- max-width: 720px;
394
- margin-top: 7px;
395
- color: var(--paper-dim);
396
- font-size: 13px;
397
- line-height: 1.4;
398
- }
346
+ /* progress + apply */
399
347
 
400
- .survey-workbench-embed .review-question strong{
401
- color: var(--paper);
402
- font-family: "IBM Plex Mono", ui-monospace, monospace;
403
- font-size: 0.95em;
348
+ .survey-workbench-embed .progress{
349
+ display: flex;
350
+ align-items: center;
351
+ gap: 14px;
352
+ flex-wrap: wrap;
404
353
  }
405
354
 
406
- .survey-workbench-embed .review-target-label{
407
- margin-top: 4px;
355
+ .survey-workbench-embed .bar{
356
+ flex: 1;
357
+ min-width: 80px;
358
+ height: 7px;
359
+ border-radius: 999px;
360
+ background: var(--k-sunken);
361
+ overflow: hidden;
362
+ border: 1px solid var(--k-line);
408
363
  }
409
364
 
410
- .survey-workbench-embed .review-target-label strong{
411
- color: var(--paper);
412
- font-family: "IBM Plex Mono", ui-monospace, monospace;
413
- font-size: 13px;
414
- font-weight: 600;
365
+ .survey-workbench-embed .bar > i{
366
+ display: block;
367
+ height: 100%;
368
+ background: var(--k-brand);
369
+ border-radius: 999px;
370
+ transition: width 0.35s cubic-bezier(0.2, 0.7, 0.3, 1);
415
371
  }
416
372
 
417
- .survey-workbench-embed .meta-grid{
418
- display: none;
419
- grid-template-columns: repeat(4, minmax(110px, 1fr));
420
- gap: 10px;
421
- width: 100%;
373
+ .survey-workbench-embed .ptext{
374
+ font-size: 13px;
375
+ color: var(--k-muted);
376
+ font-variant-numeric: tabular-nums;
377
+ white-space: nowrap;
422
378
  }
423
379
 
424
- .survey-workbench-embed .meta-item,
425
- .survey-workbench-embed .field{
426
- min-width: 0;
380
+ .survey-workbench-embed .ptext b{
381
+ color: var(--k-text);
427
382
  }
428
383
 
429
- .survey-workbench-embed .meta-item{
430
- padding: 11px 12px;
431
- border: 1px solid var(--line);
432
- border-radius: var(--radius-sm);
433
- background: color-mix(in srgb, var(--k-bg) 55%, var(--k-panel));
384
+ .survey-workbench-embed .apply{
385
+ border: 0;
386
+ background: var(--k-brand);
387
+ color: var(--k-brand-ink);
388
+ font-weight: 600;
389
+ font-size: 14px;
390
+ padding: 9px 18px;
391
+ border-radius: 999px;
392
+ cursor: pointer;
393
+ white-space: nowrap;
394
+ transition: transform 0.08s, filter 0.15s;
434
395
  }
435
396
 
436
- .survey-workbench-embed[data-theme="light"] .meta-item{
437
- background: color-mix(in srgb, var(--k-bg) 70%, var(--k-panel));
397
+ .survey-workbench-embed .apply:hover{
398
+ filter: brightness(1.06);
438
399
  }
439
400
 
440
- .survey-workbench-embed .meta-value{
441
- margin-top: 6px;
442
- font-family: "IBM Plex Mono", ui-monospace, monospace;
443
- font-size: 12px;
444
- font-weight: 500;
445
- line-height: 1.45;
446
- color: var(--paper);
401
+ .survey-workbench-embed .apply:active{
402
+ transform: translateY(1px);
447
403
  }
448
404
 
449
- /* Status reads as a signal in the command bar. */
450
- .survey-workbench-embed .meta-item:nth-child(2) .meta-value{
451
- color: var(--accent);
452
- font-weight: 600;
405
+ .survey-workbench-embed .apply:disabled{
406
+ opacity: 0.45;
407
+ cursor: not-allowed;
408
+ filter: none;
453
409
  }
454
410
 
455
- /* ---- Layout scaffold -------------------------------------------------- */
411
+ /* ---------- field cards ---------- */
456
412
 
457
- .survey-workbench-embed .queue-layout{
458
- display: grid;
459
- grid-template-columns: 280px minmax(0, 1fr);
460
- gap: 16px;
461
- align-items: start;
413
+ .survey-workbench-embed .fields{
414
+ display: flex;
415
+ flex-direction: column;
462
416
  }
463
417
 
464
- .survey-workbench-embed .queue-panel{
418
+ .survey-workbench-embed .field{
465
419
  display: grid;
466
- gap: 14px;
467
- position: sticky;
468
- top: 18px;
420
+ grid-template-columns: 4px 1fr;
421
+ gap: 0;
422
+ border-top: 1px solid var(--k-line);
469
423
  }
470
424
 
471
- .survey-workbench-embed .active-review-strip{
472
- display: none;
425
+ .survey-workbench-embed .field:first-child{
426
+ border-top: 0;
473
427
  }
474
428
 
475
- /* ---- Mobile queue progress bar (mobile only) -------------------------- */
476
-
477
- .survey-workbench-embed .mobile-queue-bar{
478
- display: none;
429
+ .survey-workbench-embed .stripe{
430
+ background: var(--k-line);
431
+ transition: background 0.25s;
479
432
  }
480
433
 
481
- /* ---- Queue drawer backdrop -------------------------------------------- */
434
+ .survey-workbench-embed .field[data-state="accepted"] .stripe{ background: var(--k-positive); }
435
+ .survey-workbench-embed .field[data-state="kept"] .stripe{ background: var(--k-faint); }
436
+ .survey-workbench-embed .field[data-state="rejected"] .stripe{ background: var(--k-negative); }
437
+ .survey-workbench-embed .field[data-state="review"] .stripe{ background: var(--k-brand); }
482
438
 
483
- .survey-workbench-embed .queue-drawer-backdrop{
484
- display: none;
485
- position: absolute;
486
- inset: 0;
487
- z-index: 40;
488
- background: color-mix(in srgb, var(--k-bg) 55%, transparent);
489
- backdrop-filter: blur(2px);
490
- opacity: 0;
491
- transition: opacity 0.22s ease;
492
- pointer-events: none;
439
+ .survey-workbench-embed .fbody{
440
+ padding: 18px 22px 20px;
441
+ display: grid;
442
+ gap: 13px;
443
+ min-width: 0;
493
444
  }
494
445
 
495
- .survey-workbench-embed .queue-drawer-backdrop.is-visible{
496
- opacity: 1;
497
- pointer-events: auto;
446
+ .survey-workbench-embed .frow1{
447
+ display: flex;
448
+ align-items: center;
449
+ gap: 10px;
450
+ flex-wrap: wrap;
498
451
  }
499
452
 
500
- /* ---- Queue drawer close button (mobile only) -------------------------- */
501
-
502
- .survey-workbench-embed .queue-drawer-close{
503
- display: none;
504
- position: absolute;
505
- top: 12px;
506
- right: 12px;
507
- width: 30px;
508
- height: 30px;
509
- border: 1px solid var(--line-strong);
510
- border-radius: 999px;
511
- background: color-mix(in srgb, var(--k-bg) 80%, transparent);
512
- color: var(--paper-faint);
513
- cursor: pointer;
514
- font-size: 14px;
515
- line-height: 1;
516
- align-items: center;
517
- justify-content: center;
518
- z-index: 2;
453
+ .survey-workbench-embed .fname{
454
+ font-size: 15.5px;
455
+ font-weight: 650;
456
+ letter-spacing: -0.005em;
519
457
  }
520
458
 
521
- .survey-workbench-embed .queue-list,
522
- .survey-workbench-embed .session-summary,
523
- .survey-workbench-embed .session-audit{
524
- border: 1px solid var(--line);
525
- border-radius: var(--radius);
526
- background: linear-gradient(180deg, var(--ink-800), var(--ink-850));
527
- padding: 14px;
528
- box-shadow: var(--k-shadow, 0 22px 50px -38px rgba(0, 0, 0, 0.9));
529
- animation: rise 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
530
- animation-delay: 0.05s;
459
+ .survey-workbench-embed .fkind{
460
+ font-size: 11px;
461
+ letter-spacing: 0.05em;
462
+ text-transform: uppercase;
463
+ color: var(--k-faint);
464
+ border: 1px solid var(--k-line-strong);
465
+ padding: 1px 7px;
466
+ border-radius: 999px;
531
467
  }
532
468
 
533
- .survey-workbench-embed .queue-head{
534
- display: grid;
535
- grid-template-columns: minmax(0, 1fr) auto;
536
- gap: 8px;
469
+ .survey-workbench-embed .chip{
470
+ font-size: 12px;
471
+ font-weight: 600;
472
+ padding: 3px 10px;
473
+ border-radius: 999px;
474
+ display: inline-flex;
537
475
  align-items: center;
538
- margin-bottom: 14px;
476
+ gap: 6px;
539
477
  }
540
478
 
541
- .survey-workbench-embed .queue-head h2,
542
- .survey-workbench-embed .session-summary h2,
543
- .survey-workbench-embed .session-audit h2{
544
- font-family: "Fraunces", Georgia, serif;
545
- font-weight: 600;
546
- font-size: 16px;
547
- line-height: 1.1;
548
- letter-spacing: -0.01em;
479
+ .survey-workbench-embed .chip::before{
480
+ content: "";
481
+ width: 6px;
482
+ height: 6px;
483
+ border-radius: 999px;
484
+ background: currentColor;
549
485
  }
550
486
 
551
- /* ---- Queue rows: status carried on data-queue-status ------------------ */
487
+ .survey-workbench-embed .chip.review{ color: var(--k-brand); background: var(--k-brand-wash); }
488
+ .survey-workbench-embed .chip.accepted{ color: var(--k-positive); background: var(--k-positive-wash); }
489
+ .survey-workbench-embed .chip.kept{ color: var(--k-muted); background: var(--k-sunken); }
490
+ .survey-workbench-embed .chip.rejected{ color: var(--k-negative); background: var(--k-negative-wash); }
552
491
 
553
- .survey-workbench-embed .queue-row{
554
- display: grid;
555
- grid-template-columns: minmax(0, 1fr) auto;
556
- gap: 10px;
557
- align-items: center;
558
- width: 100%;
559
- min-height: 54px;
560
- border: 1px solid var(--line);
561
- border-left: 3px solid var(--paper-faint);
562
- border-radius: var(--radius-sm);
563
- margin-top: 8px;
564
- padding: 9px 10px;
565
- background: color-mix(in srgb, var(--k-bg) 50%, var(--k-panel));
566
- color: var(--paper);
567
- cursor: pointer;
568
- text-align: left;
569
- transition: transform 0.16s ease, border-color 0.16s ease, background 0.16s ease;
492
+ .survey-workbench-embed .frow1 .push{
493
+ margin-left: auto;
570
494
  }
571
495
 
572
- .survey-workbench-embed .queue-row:hover{
573
- transform: translateX(2px);
574
- border-color: var(--line-strong);
575
- background: color-mix(in srgb, var(--k-bg) 20%, var(--k-panel));
576
- }
496
+ /* the diff */
577
497
 
578
- .survey-workbench-embed .queue-row.is-active{
579
- border-left-width: 3px;
580
- background: color-mix(in srgb, var(--k-brand) 8%, var(--k-panel));
581
- box-shadow: inset 0 0 0 1px var(--line-strong);
498
+ .survey-workbench-embed .diff{
499
+ display: grid;
500
+ grid-template-columns: 1fr auto 1fr;
501
+ gap: 12px;
502
+ align-items: stretch;
582
503
  }
583
504
 
584
- .survey-workbench-embed .queue-row[data-queue-status="resolved"]{ border-left-color: var(--verify); }
585
- .survey-workbench-embed .queue-row[data-queue-status="rejected"]{ border-left-color: var(--reject); }
586
- .survey-workbench-embed .queue-row[data-queue-status="escalated"]{ border-left-color: var(--hold); }
587
- .survey-workbench-embed .queue-row[data-queue-status="in-review"]{ border-left-color: var(--accent); }
588
- .survey-workbench-embed .queue-row[data-queue-status="pending"]{ border-left-color: var(--paper-faint); }
505
+ /* narrow-width collapse for .diff lives in the responsive section at the foot. */
589
506
 
590
- .survey-workbench-embed .queue-row-main{
591
- display: grid;
592
- gap: 4px;
507
+ .survey-workbench-embed .val{
508
+ border: 1px solid var(--k-line);
509
+ border-radius: var(--k-radius-sm);
510
+ padding: 10px 12px;
511
+ background: var(--k-raised);
593
512
  min-width: 0;
594
513
  }
595
514
 
596
- .survey-workbench-embed .queue-row-title,
597
- .survey-workbench-embed .queue-row-target{
598
- overflow-wrap: anywhere;
599
- word-break: break-word;
515
+ .survey-workbench-embed .val .vlbl{
516
+ font-size: 11px;
517
+ letter-spacing: 0.06em;
518
+ text-transform: uppercase;
519
+ color: var(--k-faint);
520
+ margin-bottom: 4px;
600
521
  }
601
522
 
602
- .survey-workbench-embed .queue-row-title{
603
- font-family: "IBM Plex Mono", ui-monospace, monospace;
604
- font-size: 12.5px;
605
- font-weight: 600;
606
- letter-spacing: -0.01em;
607
- color: var(--paper);
523
+ .survey-workbench-embed .val .vtext{
524
+ font-size: 14.5px;
525
+ word-break: break-word;
526
+ white-space: pre-wrap;
608
527
  }
609
528
 
610
- .survey-workbench-embed .queue-row-target{
611
- color: var(--paper-dim);
612
- font-size: 12px;
529
+ .survey-workbench-embed .val.current{
530
+ background: var(--k-sunken);
613
531
  }
614
532
 
615
- /* ---- Status pills ----------------------------------------------------- */
616
-
617
- .survey-workbench-embed .state-label{
618
- min-width: 78px;
619
- padding: 4px 9px;
620
- border: 1px solid var(--line-strong);
621
- border-radius: 999px;
622
- text-align: center;
623
- color: var(--paper-dim);
624
- background: color-mix(in srgb, var(--k-bg) 60%, var(--k-panel));
625
- letter-spacing: 0.08em;
626
- font-size: 9.5px;
533
+ .survey-workbench-embed .val.current .vtext{
534
+ color: var(--k-muted);
627
535
  }
628
536
 
629
- .survey-workbench-embed .queue-row[data-queue-status="resolved"] .state-label{ color: var(--verify); border-color: color-mix(in srgb, var(--verify) 40%, transparent); }
630
- .survey-workbench-embed .queue-row[data-queue-status="rejected"] .state-label{ color: var(--reject); border-color: color-mix(in srgb, var(--reject) 40%, transparent); }
631
- .survey-workbench-embed .queue-row[data-queue-status="escalated"] .state-label{ color: var(--hold); border-color: color-mix(in srgb, var(--hold) 40%, transparent); }
632
- .survey-workbench-embed .queue-row[data-queue-status="in-review"] .state-label{ color: var(--accent); border-color: color-mix(in srgb, var(--accent) 40%, transparent); }
633
-
634
- .survey-workbench-embed .next-button{
635
- min-height: 34px;
636
- padding: 0 14px;
637
- border: 1px solid var(--line-strong);
638
- border-radius: 999px;
639
- background: color-mix(in srgb, var(--k-brand) 8%, transparent);
640
- color: var(--accent);
641
- cursor: pointer;
642
- font-family: "IBM Plex Mono", ui-monospace, monospace;
643
- font-size: 11px;
644
- font-weight: 600;
645
- letter-spacing: 0.06em;
646
- transition: background 0.16s ease, border-color 0.16s ease;
537
+ .survey-workbench-embed .val.proposed{
538
+ border-color: color-mix(in srgb, var(--k-brand) 45%, var(--k-line));
647
539
  }
648
540
 
649
- .survey-workbench-embed .next-button:hover{
650
- background: color-mix(in srgb, var(--k-brand) 16%, transparent);
651
- border-color: var(--accent);
541
+ .survey-workbench-embed .val.empty .vtext{
542
+ color: var(--k-faint);
543
+ font-style: italic;
652
544
  }
653
545
 
654
- /* ---- Session summary: scoreboard tiles -------------------------------- */
655
-
656
- .survey-workbench-embed .summary-grid{
657
- display: grid;
658
- grid-template-columns: repeat(2, minmax(0, 1fr));
659
- gap: 10px;
660
- margin-top: 12px;
546
+ .survey-workbench-embed .arrow{
547
+ align-self: center;
548
+ color: var(--k-faint);
661
549
  }
662
550
 
663
- .survey-workbench-embed .summary-grid .meta-item{
664
- display: grid;
665
- gap: 2px;
666
- padding: 10px;
667
- background: color-mix(in srgb, var(--k-bg) 60%, var(--k-panel));
551
+ .survey-workbench-embed .editrow{
552
+ display: flex;
553
+ align-items: center;
554
+ gap: 8px;
555
+ margin-top: 8px;
668
556
  }
669
557
 
670
- .survey-workbench-embed .summary-grid .meta-value{
671
- font-family: "Fraunces", Georgia, serif;
672
- font-size: 20px;
673
- font-weight: 700;
674
- line-height: 1;
675
- color: var(--paper);
558
+ .survey-workbench-embed .editrow input,
559
+ .survey-workbench-embed .editrow select{
560
+ flex: 1;
561
+ min-width: 0;
562
+ font-size: 13.5px;
563
+ color: var(--k-text);
564
+ background: var(--k-panel);
565
+ border: 1px solid var(--k-line-strong);
566
+ border-radius: 6px;
567
+ padding: 6px 9px;
676
568
  }
677
569
 
678
- /* ---- Session audit: replayable resource trail ------------------------- */
679
-
680
- .survey-workbench-embed .session-audit{
681
- display: grid;
682
- gap: 14px;
683
- animation-delay: 0.08s;
570
+ .survey-workbench-embed .editrow input:focus-visible,
571
+ .survey-workbench-embed .editrow select:focus-visible{
572
+ outline: 2px solid var(--k-brand);
573
+ outline-offset: 1px;
574
+ border-color: var(--k-brand);
684
575
  }
685
576
 
686
- .survey-workbench-embed .session-audit-head{
687
- display: grid;
688
- grid-template-columns: minmax(0, 1fr) auto;
689
- gap: 8px;
690
- align-items: start;
577
+ .survey-workbench-embed .editrow .ehint{
578
+ font-size: 11.5px;
579
+ color: var(--k-faint);
580
+ white-space: nowrap;
691
581
  }
692
582
 
693
- .survey-workbench-embed .session-audit-head h2{
583
+ /* Validation message for a typed proposed-value edit (hidden until the mount
584
+ handler blocks a "Use proposed" on an out-of-shape value). */
585
+ .survey-workbench-embed .verr{
586
+ display: block;
694
587
  margin-top: 5px;
695
- overflow-wrap: anywhere;
588
+ font-size: 11.5px;
589
+ font-weight: 600;
590
+ color: var(--k-negative);
696
591
  }
697
592
 
698
- .survey-workbench-embed .audit-grid{
699
- grid-template-columns: repeat(2, minmax(0, 1fr));
593
+ .survey-workbench-embed .verr[hidden]{
594
+ display: none;
700
595
  }
701
596
 
702
- .survey-workbench-embed .audit-grid .meta-value{
703
- font-family: "IBM Plex Mono", ui-monospace, monospace;
704
- font-size: 11px;
705
- line-height: 1.3;
706
- }
597
+ /* confidence + provenance */
707
598
 
708
- .survey-workbench-embed .session-event-list{
599
+ .survey-workbench-embed .prov{
709
600
  display: grid;
710
- gap: 8px;
711
- margin: 0;
712
- padding: 0;
713
- list-style: none;
601
+ gap: 9px;
602
+ padding: 11px 13px;
603
+ border-radius: var(--k-radius-sm);
604
+ background: var(--k-sunken);
605
+ border: 1px solid var(--k-line);
714
606
  }
715
607
 
716
- .survey-workbench-embed .session-event-list li{
717
- display: grid;
718
- grid-template-columns: 24px minmax(0, 1fr);
719
- gap: 8px;
720
- min-width: 0;
721
- border: 1px solid var(--line);
722
- border-radius: var(--radius-sm);
723
- padding: 8px;
724
- background: color-mix(in srgb, var(--k-bg) 45%, transparent);
608
+ .survey-workbench-embed .conf{
609
+ display: flex;
610
+ align-items: center;
611
+ gap: 10px;
612
+ font-size: 12.5px;
613
+ color: var(--k-muted);
614
+ flex-wrap: wrap;
725
615
  }
726
616
 
727
- .survey-workbench-embed .event-sequence{
728
- display: grid;
729
- place-items: center;
730
- width: 24px;
731
- height: 24px;
732
- border: 1px solid var(--line-strong);
617
+ .survey-workbench-embed .conf .meter{
618
+ width: 84px;
619
+ height: 6px;
733
620
  border-radius: 999px;
734
- color: var(--accent);
735
- font-family: "IBM Plex Mono", ui-monospace, monospace;
736
- font-size: 10px;
737
- font-weight: 700;
621
+ background: var(--k-line-strong);
622
+ overflow: hidden;
738
623
  }
739
624
 
740
- .survey-workbench-embed .session-event-list strong,
741
- .survey-workbench-embed .session-event-list small{
625
+ .survey-workbench-embed .conf .meter > i{
742
626
  display: block;
743
- min-width: 0;
744
- overflow-wrap: anywhere;
627
+ height: 100%;
628
+ border-radius: 999px;
629
+ background: var(--k-positive);
745
630
  }
746
631
 
747
- .survey-workbench-embed .session-event-list strong{
748
- color: var(--paper);
749
- font-family: "IBM Plex Mono", ui-monospace, monospace;
750
- font-size: 11px;
632
+ .survey-workbench-embed .conf .meter.mid > i{
633
+ background: var(--k-caution);
751
634
  }
752
635
 
753
- .survey-workbench-embed .session-event-list small{
754
- margin-top: 3px;
755
- color: var(--paper-faint);
756
- font-size: 10.5px;
757
- line-height: 1.35;
636
+ .survey-workbench-embed .conf .pct{
637
+ font-variant-numeric: tabular-nums;
638
+ font-weight: 600;
639
+ color: var(--k-text);
640
+ font-family: var(--k-font-mono);
641
+ font-size: 12px;
758
642
  }
759
643
 
760
- .survey-workbench-embed .session-export{
761
- border-top: 1px solid var(--line);
762
- padding-top: 12px;
644
+ .survey-workbench-embed .excerpt{
645
+ font-size: 13px;
646
+ color: var(--k-text);
763
647
  }
764
648
 
765
- .survey-workbench-embed .session-export summary{
766
- cursor: pointer;
767
- color: var(--accent);
768
- font-family: "IBM Plex Mono", ui-monospace, monospace;
769
- font-size: 11px;
770
- font-weight: 700;
771
- letter-spacing: 0.06em;
649
+ .survey-workbench-embed .excerpt q{
650
+ color: var(--k-text);
772
651
  }
773
652
 
774
- .survey-workbench-embed .session-export pre{
775
- max-height: 300px;
776
- }
653
+ .survey-workbench-embed .excerpt q::before{ content: "\201C"; }
654
+ .survey-workbench-embed .excerpt q::after{ content: "\201D"; }
777
655
 
778
- /* ---- Content grid ----------------------------------------------------- */
656
+ .survey-workbench-embed .excerpt .from{
657
+ display: inline-flex;
658
+ align-items: center;
659
+ gap: 5px;
660
+ margin-top: 5px;
661
+ font-size: 12px;
662
+ color: var(--k-muted);
663
+ flex-wrap: wrap;
664
+ }
779
665
 
780
- .survey-workbench-embed .content-grid{
781
- display: grid;
782
- grid-template-columns: minmax(0, 1fr);
783
- grid-template-areas:
784
- "focus"
785
- "decision"
786
- "candidates";
787
- gap: 14px;
788
- align-items: start;
666
+ .survey-workbench-embed .excerpt .from a{
667
+ color: var(--k-brand);
668
+ text-decoration: underline;
669
+ text-underline-offset: 2px;
789
670
  }
790
671
 
791
- .survey-workbench-embed .review-main{
792
- display: grid;
793
- gap: 14px;
794
- min-width: 0;
672
+ .survey-workbench-embed .noprov{
673
+ display: flex;
674
+ align-items: center;
675
+ gap: 8px;
676
+ font-size: 13px;
677
+ color: var(--k-caution);
678
+ flex-wrap: wrap;
795
679
  }
796
680
 
797
- /* ---- Active review focus ---------------------------------------------- */
681
+ .survey-workbench-embed .noprov svg{
682
+ flex: none;
683
+ }
798
684
 
799
- .survey-workbench-embed .review-focus{
800
- grid-area: focus;
801
- display: grid;
802
- gap: 12px;
803
- min-width: 0;
804
- border: 1px solid color-mix(in srgb, var(--k-brand) 28%, transparent);
805
- border-radius: var(--radius);
806
- padding: 14px;
807
- background:
808
- linear-gradient(135deg, color-mix(in srgb, var(--k-brand) 12%, transparent), transparent 34%),
809
- linear-gradient(180deg, var(--ink-800), var(--ink-850));
810
- box-shadow: var(--k-shadow, 0 26px 60px -42px rgba(0, 0, 0, 0.95)), inset 0 1px 0 var(--line);
685
+ .survey-workbench-embed .noprov .tag{
686
+ background: var(--k-caution-wash);
687
+ color: var(--k-caution);
688
+ font-weight: 600;
689
+ padding: 2px 8px;
690
+ border-radius: 999px;
691
+ font-size: 12px;
811
692
  }
812
693
 
813
- .survey-workbench-embed .focus-head,
814
- .survey-workbench-embed .focus-values{
815
- display: grid;
694
+ /* decisions */
695
+
696
+ /* The decision row is the point of the card, so it sits on its own line,
697
+ right-aligned and prominent. The quiet calibration toggle is pushed to the
698
+ far left so the two primary actions read as the clear call to action. */
699
+ .survey-workbench-embed .decide{
700
+ display: flex;
816
701
  gap: 10px;
702
+ flex-wrap: wrap;
703
+ align-items: center;
704
+ justify-content: flex-end;
705
+ margin-top: 2px;
817
706
  }
818
707
 
819
- .survey-workbench-embed .focus-head{
820
- grid-template-columns: minmax(0, 1fr) auto;
708
+ .survey-workbench-embed .btn{
709
+ border: 1px solid var(--k-line-strong);
710
+ background: var(--k-raised);
711
+ color: var(--k-text);
712
+ font-size: 14px;
713
+ font-weight: 600;
714
+ padding: 0 18px;
715
+ min-height: 42px;
716
+ border-radius: 9px;
717
+ cursor: pointer;
718
+ display: inline-flex;
821
719
  align-items: center;
720
+ justify-content: center;
721
+ gap: 7px;
722
+ transition: background 0.12s, border-color 0.12s, color 0.12s, filter 0.12s;
822
723
  }
823
724
 
824
- .survey-workbench-embed .focus-values{
825
- grid-template-columns: repeat(2, minmax(0, 1fr));
725
+ .survey-workbench-embed .btn:hover{
726
+ background: var(--k-sunken);
727
+ border-color: var(--k-line-strong);
826
728
  }
827
729
 
828
- .survey-workbench-embed .focus-value{
829
- min-width: 0;
830
- border: 1px solid var(--line);
831
- border-radius: var(--radius-sm);
832
- padding: 10px 12px;
833
- background: color-mix(in srgb, var(--k-bg) 56%, var(--k-panel));
730
+ .survey-workbench-embed .btn:focus-visible{
731
+ outline: 2px solid var(--k-brand);
732
+ outline-offset: 2px;
834
733
  }
835
734
 
836
- .survey-workbench-embed .focus-value strong{
837
- display: block;
838
- margin-top: 6px;
839
- color: var(--paper);
840
- font-family: "IBM Plex Mono", ui-monospace, monospace;
841
- font-size: clamp(18px, 1.8vw, 25px);
842
- line-height: 1.14;
843
- overflow-wrap: anywhere;
735
+ /* Use proposed — the filled positive primary, the loudest thing on the card. */
736
+ .survey-workbench-embed .btn.use{
737
+ background: var(--k-positive);
738
+ border-color: var(--k-positive);
739
+ color: #ffffff;
844
740
  }
845
741
 
846
- .survey-workbench-embed .focus-value span:last-child{
847
- display: block;
848
- margin-top: 6px;
849
- color: var(--paper-faint);
850
- font-family: "IBM Plex Mono", ui-monospace, monospace;
851
- font-size: 11px;
742
+ .survey-workbench-embed .btn.use:hover{
743
+ background: var(--k-positive);
744
+ border-color: var(--k-positive);
745
+ color: #ffffff;
746
+ filter: brightness(1.07);
852
747
  }
853
748
 
854
- .survey-workbench-embed .focus-value.is-proposed{
855
- border-color: color-mix(in srgb, var(--k-active) 34%, transparent);
856
- background: color-mix(in srgb, var(--k-active) 10%, color-mix(in srgb, var(--k-bg) 56%, var(--k-panel)));
749
+ /* Keep current — a strong neutral secondary; still prominent, clearly not the accept. */
750
+ .survey-workbench-embed .btn.keep{
751
+ border-color: var(--k-line-strong);
752
+ background: var(--k-panel-raised, var(--k-raised));
857
753
  }
858
754
 
859
- .survey-workbench-embed .focus-value.is-proposed strong{
860
- color: var(--proposed);
861
- }
862
-
863
- .survey-workbench-embed .focus-evidence{
864
- display: grid;
865
- grid-template-columns: minmax(110px, 0.65fr) minmax(0, 1.2fr) minmax(0, 1.4fr);
866
- gap: 10px;
867
- margin: 0;
755
+ /* "Suggestion was wrong" — optional quiet calibration toggle on Keep current.
756
+ Ticking it turns a keep-current decision into the reject signal. Not a third action. */
757
+ .survey-workbench-embed .wrong{
758
+ order: -1;
759
+ margin-right: auto;
760
+ display: inline-flex;
761
+ align-items: center;
762
+ gap: 7px;
763
+ font-size: 12.5px;
764
+ color: var(--k-faint);
765
+ cursor: pointer;
766
+ user-select: none;
767
+ padding: 8px 4px;
768
+ min-height: 40px;
868
769
  }
869
770
 
870
- .survey-workbench-embed .focus-evidence .field{
871
- border-top: 1px solid var(--line);
872
- padding-top: 10px;
771
+ .survey-workbench-embed .wrong:hover{
772
+ color: var(--k-negative);
873
773
  }
874
774
 
875
- /* ---- Candidate comparison: the hero of the console -------------------- */
876
-
877
- .survey-workbench-embed .candidate-grid{
878
- grid-area: candidates;
879
- display: grid;
880
- grid-template-columns: repeat(2, minmax(0, 1fr));
881
- gap: 12px;
882
- position: relative;
775
+ .survey-workbench-embed .wrong input{
776
+ width: 15px;
777
+ height: 15px;
778
+ accent-color: var(--k-negative);
779
+ cursor: pointer;
780
+ margin: 0;
883
781
  }
884
782
 
885
- /* "VS" diff marker between the two candidates. */
886
- .survey-workbench-embed .candidate-grid::before{
887
- content: "vs";
888
- position: absolute;
889
- top: 18px;
890
- left: 50%;
891
- transform: translateX(-50%);
892
- z-index: 3;
893
- width: 30px;
894
- height: 30px;
895
- display: grid;
896
- place-items: center;
897
- border-radius: 999px;
898
- border: 1px solid var(--line-strong);
899
- background: var(--vs-bg);
900
- color: var(--paper-faint);
901
- font-family: "Fraunces", Georgia, serif;
902
- font-style: italic;
783
+ .survey-workbench-embed .decided{
784
+ display: none;
785
+ align-items: center;
786
+ justify-content: flex-end;
787
+ gap: 10px;
903
788
  font-size: 13px;
904
- box-shadow: var(--k-shadow, 0 10px 26px -12px rgba(0, 0, 0, 0.9));
789
+ color: var(--k-muted);
905
790
  }
906
791
 
907
- .survey-workbench-embed .candidate-card,
908
- .survey-workbench-embed .payload-panel,
909
- .survey-workbench-embed .surface-preview,
910
- .survey-workbench-embed .decision-row{
911
- border: 1px solid var(--line);
912
- border-radius: var(--radius);
913
- background: linear-gradient(180deg, var(--ink-800), var(--ink-850));
914
- box-shadow: var(--k-shadow, 0 26px 60px -42px rgba(0, 0, 0, 0.95));
792
+ .survey-workbench-embed .field[data-decided="1"] .decide{
793
+ display: none;
915
794
  }
916
795
 
917
- .survey-workbench-embed .candidate-card{
918
- display: grid;
919
- grid-template-rows: auto auto minmax(0, 1fr) auto;
920
- gap: 11px;
921
- min-height: auto;
922
- padding: 14px;
923
- position: relative;
924
- overflow: hidden;
925
- animation: rise 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
926
- animation-delay: 0.1s;
796
+ .survey-workbench-embed .field[data-decided="1"] .decided{
797
+ display: flex;
927
798
  }
928
799
 
929
- /* The proposed candidate (2nd card) is the incoming change — flag it. */
930
- .survey-workbench-embed .candidate-card:nth-child(2){
931
- border-color: color-mix(in srgb, var(--k-active) 32%, transparent);
800
+ .survey-workbench-embed .undo{
801
+ border: 0;
802
+ background: none;
803
+ color: var(--k-brand);
804
+ font-size: 13px;
805
+ cursor: pointer;
806
+ text-decoration: underline;
807
+ text-underline-offset: 2px;
808
+ padding: 0;
932
809
  }
933
810
 
934
- .survey-workbench-embed .candidate-card:nth-child(2)::after{
935
- content: "";
936
- position: absolute;
937
- inset: 0;
938
- pointer-events: none;
939
- background: radial-gradient(420px 200px at 80% -10%, color-mix(in srgb, var(--k-active) 12%, transparent), transparent 70%);
811
+ /* footer tally */
812
+
813
+ .survey-workbench-embed .foot{
814
+ padding: 16px 22px;
815
+ border-top: 1px solid var(--k-line);
816
+ display: flex;
817
+ align-items: center;
818
+ gap: 16px;
819
+ flex-wrap: wrap;
820
+ background: var(--k-raised);
940
821
  }
941
822
 
942
- .survey-workbench-embed .candidate-card.is-selected{
943
- border-color: color-mix(in srgb, var(--k-positive) 55%, transparent);
944
- box-shadow: 0 26px 60px -36px rgba(0, 0, 0, 0.95), inset 0 0 0 1px color-mix(in srgb, var(--k-positive) 35%, transparent), inset 0 0 60px -30px color-mix(in srgb, var(--k-positive) 60%, transparent);
823
+ .survey-workbench-embed .tally{
824
+ display: flex;
825
+ gap: 16px;
826
+ font-size: 13px;
827
+ color: var(--k-muted);
828
+ flex-wrap: wrap;
945
829
  }
946
830
 
947
- .survey-workbench-embed .candidate-card.is-unselected{
948
- opacity: 0.5;
949
- filter: saturate(0.7);
831
+ .survey-workbench-embed .tally b{
832
+ color: var(--k-text);
833
+ font-variant-numeric: tabular-nums;
950
834
  }
951
835
 
952
- .survey-workbench-embed .card-head{
953
- display: flex;
954
- gap: 10px;
955
- justify-content: space-between;
956
- align-items: flex-start;
957
- position: relative;
958
- z-index: 1;
836
+ /* ---------- audit details: the single collapsed power-user surface per field ---------- */
837
+
838
+ .survey-workbench-embed .audit-details{
839
+ border-top: 1px dashed var(--k-line);
840
+ padding-top: 4px;
959
841
  }
960
842
 
961
- .survey-workbench-embed .card-head .eyebrow{
962
- color: var(--paper-faint);
963
- font-size: 10px;
964
- letter-spacing: 0.1em;
843
+ .survey-workbench-embed .audit-details summary{
844
+ cursor: pointer;
845
+ padding: 6px 0;
846
+ color: var(--k-faint);
847
+ font-size: 12px;
848
+ letter-spacing: 0.04em;
965
849
  text-transform: uppercase;
966
- overflow-wrap: anywhere;
967
- word-break: break-word;
850
+ font-weight: 600;
968
851
  }
969
852
 
970
- .survey-workbench-embed .role{
971
- margin-top: 3px;
972
- font-family: "Fraunces", Georgia, serif;
973
- font-weight: 600;
974
- font-size: 18px;
975
- letter-spacing: -0.01em;
976
- color: var(--paper);
853
+ .survey-workbench-embed .audit-details summary:hover{
854
+ color: var(--k-muted);
977
855
  }
978
856
 
979
- .survey-workbench-embed .candidate-card:nth-child(2) .role{
980
- color: var(--proposed);
857
+ .survey-workbench-embed .audit-details[open] summary{
858
+ color: var(--k-brand);
981
859
  }
982
860
 
983
- .survey-workbench-embed .is-selected .state-label{
984
- color: var(--verify);
985
- border-color: color-mix(in srgb, var(--verify) 50%, transparent);
986
- background: color-mix(in srgb, var(--verify) 12%, transparent);
861
+ .survey-workbench-embed .audit-body{
862
+ display: grid;
863
+ gap: 14px;
864
+ padding: 4px 0 6px;
987
865
  }
988
866
 
989
- /* The value — the single most important datapoint on the screen. */
990
- .survey-workbench-embed .candidate-value{
991
- position: relative;
992
- z-index: 1;
993
- border-block: 1px solid var(--line);
994
- padding: 10px 0;
867
+ .survey-workbench-embed .note-field{
868
+ display: grid;
869
+ gap: 6px;
995
870
  }
996
871
 
997
- .survey-workbench-embed .candidate-value .field-value{
998
- margin-top: 7px;
999
- font-family: "IBM Plex Mono", ui-monospace, monospace;
1000
- font-size: clamp(16px, 1.35vw, 20px);
872
+ .survey-workbench-embed .field-label{
873
+ color: var(--k-faint);
874
+ font-size: 11px;
1001
875
  font-weight: 600;
1002
- line-height: 1.22;
1003
- letter-spacing: 0;
1004
- color: var(--paper);
876
+ letter-spacing: 0.06em;
877
+ text-transform: uppercase;
1005
878
  }
1006
879
 
1007
- .survey-workbench-embed .candidate-card:nth-child(2) .candidate-value .field-value{
1008
- color: var(--proposed);
880
+ .survey-workbench-embed .field-value{
881
+ overflow-wrap: anywhere;
882
+ word-break: break-word;
883
+ line-height: 1.4;
884
+ color: var(--k-text);
885
+ font-size: 12.5px;
1009
886
  }
1010
887
 
1011
- .survey-workbench-embed .is-selected .candidate-value .field-value{
1012
- color: var(--verify);
888
+ .survey-workbench-embed .note-field textarea{
889
+ display: block;
890
+ width: 100%;
891
+ min-height: 60px;
892
+ resize: vertical;
893
+ border: 1px solid var(--k-line-strong);
894
+ border-radius: var(--k-radius-sm);
895
+ padding: 8px 10px;
896
+ color: var(--k-text);
897
+ background: var(--k-sunken);
898
+ font-family: var(--k-font-mono);
899
+ font-size: 12px;
900
+ line-height: 1.5;
901
+ }
902
+
903
+ .survey-workbench-embed .note-field textarea:focus-visible{
904
+ outline: none;
905
+ border-color: var(--k-brand);
906
+ box-shadow: 0 0 0 3px var(--k-brand-wash);
1013
907
  }
1014
908
 
1015
909
  .survey-workbench-embed .field-stack{
1016
910
  display: grid;
1017
911
  gap: 9px;
1018
- position: relative;
1019
- z-index: 1;
1020
- align-content: start;
1021
912
  }
1022
913
 
1023
- .survey-workbench-embed .field-value{
1024
- margin-top: 4px;
1025
- font-size: 12.5px;
914
+ .survey-workbench-embed .field-stack.compact{
915
+ gap: 6px;
1026
916
  }
1027
917
 
1028
- /* Source refs / locators / ids read as data. */
1029
- .survey-workbench-embed .candidate-card .field-stack .field-value{
1030
- font-family: "IBM Plex Mono", ui-monospace, monospace;
1031
- font-size: 11.5px;
1032
- color: var(--paper-dim);
918
+ .survey-workbench-embed .kv{
919
+ min-width: 0;
1033
920
  }
1034
921
 
1035
- /* Highlight extraction confidence (5th field in the stack) as a chip. */
1036
- .survey-workbench-embed .candidate-card .field-stack > .field:nth-child(5) .field-value{
1037
- display: inline-block;
1038
- margin-top: 5px;
1039
- padding: 4px 9px;
1040
- border: 1px solid color-mix(in srgb, var(--k-brand) 35%, transparent);
1041
- border-radius: 999px;
1042
- background: color-mix(in srgb, var(--k-brand) 10%, transparent);
1043
- color: var(--accent);
922
+ .survey-workbench-embed .kv .field-value{
923
+ margin-top: 3px;
924
+ font-family: var(--k-font-mono);
1044
925
  font-size: 11.5px;
1045
- font-weight: 600;
1046
- }
1047
-
1048
- .survey-workbench-embed .excerpt{
1049
- border-left: 2px solid var(--accent-deep);
1050
- padding-left: 12px;
926
+ color: var(--k-muted);
1051
927
  }
1052
928
 
1053
- .survey-workbench-embed .excerpt .field-value{
1054
- font-style: italic;
1055
- color: var(--paper-dim) !important;
1056
- }
1057
-
1058
- /* ---- Excerpt / rationale 3-line clamp with inline expander ----------- */
1059
- /* Applied to .field-value inside .excerpt or .excerpt-clamp containers,
1060
- and to .rationale-clamp for reviewer rationale fields.
1061
- The "more / less" toggle is a <button class="clamp-toggle"> sibling. */
1062
-
1063
- .survey-workbench-embed .excerpt-clamp .field-value,
1064
- .survey-workbench-embed .rationale-clamp .field-value{
929
+ /* Excerpt / rationale 3-line clamp with inline "more / less" expander. */
930
+ .survey-workbench-embed .kv.excerpt .field-value,
931
+ .survey-workbench-embed .kv.rationale-clamp .field-value{
1065
932
  display: -webkit-box;
1066
933
  -webkit-box-orient: vertical;
1067
934
  -webkit-line-clamp: 3;
1068
935
  overflow: hidden;
936
+ font-family: var(--k-font-ui);
937
+ font-style: italic;
938
+ color: var(--k-muted);
1069
939
  }
1070
940
 
1071
941
  .survey-workbench-embed .excerpt-clamp.is-expanded .field-value,
@@ -1081,9 +951,9 @@
1081
951
  padding: 0;
1082
952
  border: none;
1083
953
  background: none;
1084
- color: var(--accent);
954
+ color: var(--k-brand);
1085
955
  cursor: pointer;
1086
- font-family: "IBM Plex Mono", ui-monospace, monospace;
956
+ font-family: var(--k-font-mono);
1087
957
  font-size: 10.5px;
1088
958
  font-weight: 600;
1089
959
  letter-spacing: 0.04em;
@@ -1093,13 +963,10 @@
1093
963
  }
1094
964
 
1095
965
  .survey-workbench-embed .clamp-toggle:hover{
1096
- color: var(--paper);
966
+ color: var(--k-text);
1097
967
  }
1098
968
 
1099
- /* ---- Candidate history expander -------------------------------------- */
1100
- /* When there are >3 unselected candidates the UI renders the first 3 and
1101
- hides the rest behind a "view all (N)" expander. */
1102
-
969
+ /* Candidate history expander: >3 unselected candidates hide behind "view all (N)". */
1103
970
  .survey-workbench-embed .history-overflow{
1104
971
  display: none;
1105
972
  }
@@ -1114,21 +981,19 @@
1114
981
  gap: 4px;
1115
982
  margin-top: 6px;
1116
983
  padding: 3px 10px;
1117
- border: 1px solid var(--line-strong);
984
+ border: 1px solid var(--k-line-strong);
1118
985
  border-radius: 999px;
1119
- background: color-mix(in srgb, var(--k-brand) 6%, transparent);
1120
- color: var(--accent);
986
+ background: var(--k-brand-wash);
987
+ color: var(--k-brand);
1121
988
  cursor: pointer;
1122
- font-family: "IBM Plex Mono", ui-monospace, monospace;
1123
- font-size: 10px;
989
+ font-size: 10.5px;
1124
990
  font-weight: 600;
1125
- letter-spacing: 0.06em;
991
+ letter-spacing: 0.04em;
1126
992
  transition: background 0.14s ease, border-color 0.14s ease;
1127
993
  }
1128
994
 
1129
995
  .survey-workbench-embed .history-expand-btn:hover{
1130
- background: color-mix(in srgb, var(--k-brand) 14%, transparent);
1131
- border-color: var(--accent);
996
+ border-color: var(--k-brand);
1132
997
  }
1133
998
 
1134
999
  .survey-workbench-embed .history-expander.is-expanded .history-expand-btn .expand-label{
@@ -1143,273 +1008,46 @@
1143
1008
  display: none;
1144
1009
  }
1145
1010
 
1146
- /* ---- Decision column -------------------------------------------------- */
1147
-
1148
- .survey-workbench-embed .decision-column{
1149
- grid-area: decision;
1150
- display: grid;
1151
- grid-template-columns: minmax(0, 1fr);
1152
- gap: 12px;
1153
- animation: rise 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
1154
- animation-delay: 0.15s;
1155
- }
1156
-
1157
- .survey-workbench-embed .decision-row,
1158
- .survey-workbench-embed .payload-panel,
1159
- .survey-workbench-embed .surface-preview{
1160
- padding: 14px;
1161
- }
1162
-
1163
- .survey-workbench-embed textarea{
1164
- display: block;
1165
- width: 100%;
1166
- min-height: 74px;
1167
- margin-top: 8px;
1168
- resize: vertical;
1169
- border: 1px solid var(--line-strong);
1170
- border-radius: var(--radius-sm);
1171
- padding: 10px;
1172
- color: var(--paper);
1173
- background: color-mix(in srgb, var(--k-bg) 70%, var(--k-panel));
1174
- font-family: "IBM Plex Mono", ui-monospace, monospace;
1175
- font-size: 12px;
1176
- line-height: 1.5;
1177
- }
1178
-
1179
- .survey-workbench-embed textarea::placeholder{
1180
- color: var(--paper-faint);
1181
- }
1182
-
1183
- .survey-workbench-embed textarea:focus{
1184
- border-color: var(--accent);
1185
- outline: none;
1186
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--k-brand) 18%, transparent);
1187
- }
1188
-
1189
- /* Decision actions — color-coded to outcome (accept / keep / reject). */
1190
- .survey-workbench-embed .decision-buttons{
1191
- display: grid;
1192
- grid-template-columns: repeat(3, minmax(0, 1fr));
1193
- gap: 8px;
1194
- margin-top: 0;
1195
- }
1196
-
1197
- .survey-workbench-embed .decision-button{
1198
- min-height: 42px;
1199
- border: 1px solid var(--line-strong);
1200
- border-radius: var(--radius-sm);
1201
- background: color-mix(in srgb, var(--k-bg) 60%, var(--k-panel));
1202
- color: var(--paper);
1203
- cursor: pointer;
1204
- font-weight: 700;
1205
- font-size: 12px;
1206
- letter-spacing: 0.01em;
1207
- transition: transform 0.14s ease, border-color 0.14s ease, background 0.14s ease, box-shadow 0.14s ease;
1208
- }
1209
-
1210
- .survey-workbench-embed .decision-button:hover,
1211
- .survey-workbench-embed .decision-button:focus{
1212
- transform: translateY(-2px);
1213
- outline: none;
1214
- }
1215
-
1216
- .survey-workbench-embed .decision-button:nth-child(1):hover{ border-color: var(--verify); box-shadow: 0 10px 24px -14px color-mix(in srgb, var(--verify) 80%, transparent); }
1217
- .survey-workbench-embed .decision-button:nth-child(2):hover{ border-color: var(--hold); box-shadow: 0 10px 24px -14px color-mix(in srgb, var(--hold) 80%, transparent); }
1218
- .survey-workbench-embed .decision-button:nth-child(3):hover{ border-color: var(--reject); box-shadow: 0 10px 24px -14px color-mix(in srgb, var(--reject) 80%, transparent); }
1219
-
1220
- .survey-workbench-embed .decision-button.is-active{
1221
- color: var(--k-bg);
1222
- border-color: transparent;
1223
- }
1224
-
1225
- .survey-workbench-embed .decision-button:nth-child(1).is-active{ background: var(--verify); box-shadow: 0 14px 30px -14px color-mix(in srgb, var(--verify) 90%, transparent); }
1226
- .survey-workbench-embed .decision-button:nth-child(2).is-active{ background: var(--hold); box-shadow: 0 14px 30px -14px color-mix(in srgb, var(--hold) 90%, transparent); }
1227
- .survey-workbench-embed .decision-button:nth-child(3).is-active{ background: var(--reject); box-shadow: 0 14px 30px -14px color-mix(in srgb, var(--reject) 90%, transparent); }
1228
-
1229
- .survey-workbench-embed .effect{
1230
- display: grid;
1231
- gap: 7px;
1232
- margin-top: 12px;
1233
- border-top: 1px solid var(--line);
1234
- padding-top: 11px;
1235
- }
1236
-
1237
- .survey-workbench-embed .effect .field-value{
1238
- font-size: 12.5px;
1239
- line-height: 1.45;
1240
- color: var(--paper-dim);
1241
- }
1242
-
1243
- .survey-workbench-embed .feedback-tags{
1244
- display: grid;
1245
- gap: 8px;
1246
- margin-top: 12px;
1247
- border-top: 1px solid var(--line);
1248
- padding-top: 11px;
1249
- }
1250
-
1251
- .survey-workbench-embed .tag-row{
1252
- display: flex;
1253
- flex-wrap: wrap;
1254
- gap: 7px;
1255
- }
1256
-
1257
- .survey-workbench-embed .tag{
1258
- border: 1px solid var(--line-strong);
1259
- border-radius: 999px;
1260
- padding: 5px 11px;
1261
- background: color-mix(in srgb, var(--k-active) 8%, transparent);
1262
- color: var(--proposed);
1263
- font-family: "IBM Plex Mono", ui-monospace, monospace;
1264
- font-size: 11px;
1265
- font-weight: 500;
1266
- }
1267
-
1268
- .survey-workbench-embed .tag.is-empty{
1269
- background: color-mix(in srgb, var(--k-bg) 60%, var(--k-panel));
1270
- color: var(--paper-faint);
1271
- }
1272
-
1273
- /* ---- Surface preview dossier ------------------------------------------ */
1274
-
1275
- .survey-workbench-embed .surface-preview{
1276
- display: grid;
1277
- gap: 11px;
1278
- }
1279
-
1280
- /* When surface-preview is a <details> element */
1281
- .survey-workbench-embed details.surface-preview{
1282
- display: block;
1283
- }
1284
-
1285
- .survey-workbench-embed details.surface-preview[open]{
1286
- display: grid;
1287
- gap: 11px;
1288
- }
1289
-
1290
- .survey-workbench-embed .surface-summary{
1291
- display: flex;
1292
- gap: 12px;
1293
- justify-content: space-between;
1294
- align-items: center;
1295
- cursor: pointer;
1296
- list-style: none;
1297
- padding: 0;
1298
- }
1299
-
1300
- .survey-workbench-embed .surface-summary::-webkit-details-marker{
1301
- display: none;
1302
- }
1303
-
1304
- .survey-workbench-embed .surface-summary::before{
1305
- content: none;
1306
- }
1307
-
1308
- .survey-workbench-embed .surface-summary-label{
1309
- font-family: "Fraunces", Georgia, serif;
1310
- font-weight: 600;
1311
- font-size: 16px;
1312
- letter-spacing: -0.01em;
1313
- color: var(--paper);
1314
- }
1315
-
1316
- .survey-workbench-embed .surface-summary-label::before{
1317
- content: "› ";
1318
- color: var(--accent);
1319
- font-family: "IBM Plex Mono", ui-monospace, monospace;
1320
- font-size: 13px;
1321
- }
1322
-
1323
- .survey-workbench-embed details.surface-preview[open] .surface-summary-label::before{
1324
- content: "⌄ ";
1325
- }
1326
-
1327
- .survey-workbench-embed .surface-head{
1328
- display: flex;
1329
- gap: 12px;
1330
- justify-content: space-between;
1331
- align-items: flex-start;
1332
- }
1333
-
1334
- .survey-workbench-embed .surface-head h2{
1335
- font-family: "Fraunces", Georgia, serif;
1336
- font-weight: 600;
1337
- font-size: 16px;
1338
- letter-spacing: -0.01em;
1339
- }
1340
-
1341
- .survey-workbench-embed .preview-disclaimer{
1342
- border-left: 2px solid var(--hold);
1343
- padding: 2px 0 2px 12px;
1344
- color: var(--paper-dim);
1345
- font-size: 12.5px;
1346
- line-height: 1.5;
1347
- }
1348
-
1349
- .survey-workbench-embed .preview-disclaimer-footer{
1350
- margin-top: 4px;
1351
- border-left-color: var(--line);
1352
- font-size: 11.5px;
1353
- color: var(--paper-faint);
1354
- }
1355
-
1356
1011
  .survey-workbench-embed .preview-section-grid{
1357
1012
  display: grid;
1358
- grid-template-columns: repeat(2, minmax(0, 1fr));
1359
- gap: 8px;
1013
+ gap: 10px;
1360
1014
  }
1361
1015
 
1362
1016
  .survey-workbench-embed .preview-section{
1363
- min-width: 0;
1364
- border: 1px solid var(--line);
1365
- border-radius: var(--radius-sm);
1366
- padding: 10px 11px;
1367
- background: color-mix(in srgb, var(--k-bg) 55%, var(--k-panel));
1017
+ border: 1px solid var(--k-line);
1018
+ border-radius: var(--k-radius-sm);
1019
+ padding: 10px 12px;
1020
+ background: var(--k-sunken);
1368
1021
  }
1369
1022
 
1370
1023
  .survey-workbench-embed .preview-section h3{
1371
- margin-bottom: 7px;
1372
- color: var(--accent);
1373
- font-family: "IBM Plex Mono", ui-monospace, monospace;
1374
- font-size: 10px;
1024
+ margin-bottom: 6px;
1025
+ color: var(--k-faint);
1026
+ font-size: 11px;
1375
1027
  font-weight: 600;
1376
- letter-spacing: 0.1em;
1028
+ letter-spacing: 0.06em;
1377
1029
  text-transform: uppercase;
1378
1030
  }
1379
1031
 
1380
- .survey-workbench-embed .field-stack.compact{
1381
- gap: 9px;
1382
- }
1383
-
1384
- .survey-workbench-embed .compact .field-value{
1385
- font-family: "IBM Plex Mono", ui-monospace, monospace;
1386
- font-size: 12px;
1387
- color: var(--paper-dim);
1388
- }
1389
-
1390
1032
  .survey-workbench-embed .preview-section.is-neutral{
1391
- border-style: dashed;
1392
- border-color: var(--line);
1393
- background: color-mix(in srgb, var(--k-bg) 35%, var(--k-panel));
1033
+ background: var(--k-raised);
1394
1034
  }
1395
1035
 
1396
1036
  .survey-workbench-embed .preview-section.is-neutral h3{
1397
- color: var(--paper-faint);
1037
+ color: var(--k-faint);
1398
1038
  }
1399
1039
 
1400
1040
  .survey-workbench-embed .reference-details{
1401
- margin-top: 10px;
1402
- border-top: 1px solid var(--line);
1403
- padding-top: 8px;
1041
+ margin-top: 8px;
1404
1042
  }
1405
1043
 
1406
1044
  .survey-workbench-embed .reference-details summary{
1407
1045
  cursor: pointer;
1408
- color: var(--paper-faint);
1409
- font-family: "IBM Plex Mono", ui-monospace, monospace;
1410
- font-size: 10px;
1046
+ list-style: none;
1047
+ color: var(--k-faint);
1048
+ font-size: 10.5px;
1411
1049
  font-weight: 600;
1412
- letter-spacing: 0.08em;
1050
+ letter-spacing: 0.04em;
1413
1051
  text-transform: uppercase;
1414
1052
  }
1415
1053
 
@@ -1418,581 +1056,141 @@
1418
1056
  }
1419
1057
 
1420
1058
  .survey-workbench-embed .reference-details summary::before{
1421
- content: "› ";
1422
- color: var(--paper-faint);
1423
- }
1424
-
1425
- .survey-workbench-embed .reference-details[open] summary{
1426
- color: var(--accent);
1059
+ content: "▸ ";
1427
1060
  }
1428
1061
 
1429
1062
  .survey-workbench-embed .reference-details[open] summary::before{
1430
- content: "⌄ ";
1431
- color: var(--accent);
1063
+ content: "▾ ";
1432
1064
  }
1433
1065
 
1434
1066
  .survey-workbench-embed .reference-details .field-stack{
1435
1067
  margin-top: 8px;
1436
1068
  }
1437
1069
 
1438
- /* ---- Decision payload: terminal readout, intentionally demoted -------- */
1439
-
1440
- .survey-workbench-embed .payload-panel{
1441
- background: linear-gradient(180deg, var(--ink-850), var(--ink-900));
1442
- }
1443
-
1444
- .survey-workbench-embed .payload-panel summary.field-label{
1445
- cursor: pointer;
1446
- list-style: none;
1447
- }
1448
-
1449
- .survey-workbench-embed .payload-panel summary.field-label::-webkit-details-marker{
1450
- display: none;
1070
+ .survey-workbench-embed .preview-disclaimer{
1071
+ font-size: 11.5px;
1072
+ color: var(--k-faint);
1073
+ line-height: 1.5;
1451
1074
  }
1452
1075
 
1453
- .survey-workbench-embed .payload-panel summary.field-label::before{
1454
- content: "› ";
1455
- color: var(--verify);
1076
+ .survey-workbench-embed .preview-disclaimer-footer{
1077
+ border-top: 1px solid var(--k-line);
1078
+ padding-top: 10px;
1456
1079
  }
1457
1080
 
1458
- .survey-workbench-embed pre{
1459
- max-height: 280px;
1460
- margin: 12px 0 0;
1081
+ /* ReviewDecision payload — deliberately the deepest, last thing in the audit details. */
1082
+ .survey-workbench-embed .reference-details pre,
1083
+ .survey-workbench-embed pre[data-testid="decision-payload"]{
1084
+ margin: 8px 0 0;
1085
+ max-height: 260px;
1461
1086
  overflow: auto;
1462
- border: 1px solid var(--line);
1463
- border-radius: var(--radius-sm);
1464
- background: var(--ink-1000);
1465
- padding: 11px;
1466
- color: color-mix(in srgb, var(--k-positive) 80%, var(--k-text));
1467
- font-family: "IBM Plex Mono", ui-monospace, monospace;
1087
+ padding: 10px;
1088
+ border: 1px solid var(--k-line);
1089
+ border-radius: var(--k-radius-sm);
1090
+ background: var(--k-bg);
1091
+ color: var(--k-muted);
1092
+ font-family: var(--k-font-mono);
1468
1093
  font-size: 11px;
1469
- line-height: 1.55;
1094
+ line-height: 1.5;
1470
1095
  white-space: pre-wrap;
1471
- word-break: break-word;
1472
- }
1473
-
1474
- /* ---- Motion ----------------------------------------------------------- */
1475
-
1476
- @keyframes rise {
1477
- from {
1478
- opacity: 0;
1479
- transform: translateY(14px);
1480
- }
1481
- to {
1482
- opacity: 1;
1483
- transform: translateY(0);
1484
- }
1485
- }
1486
-
1487
- @media (prefers-reduced-motion: reduce) {
1488
- .survey-workbench-embed *{
1489
- animation: none !important;
1490
- transition: none !important;
1491
- }
1492
- }
1493
-
1494
- /* ---- Responsive ------------------------------------------------------- */
1495
-
1496
- @media (max-width: 980px) {
1497
- .survey-workbench-embed .topbar,
1498
- .survey-workbench-embed .focus-evidence,
1499
- .survey-workbench-embed .candidate-grid{
1500
- grid-template-columns: 1fr;
1501
- }
1502
-
1503
- .survey-workbench-embed .content-grid{
1504
- grid-template-columns: 1fr;
1505
- grid-template-areas:
1506
- "focus"
1507
- "decision"
1508
- "candidates";
1509
- }
1510
-
1511
- .survey-workbench-embed .queue-layout{
1512
- display: block;
1513
- position: relative;
1514
- }
1515
-
1516
- .survey-workbench-embed .active-review-strip{
1517
- display: grid;
1518
- grid-template-columns: minmax(0, 1fr) auto;
1519
- gap: 12px;
1520
- align-items: center;
1521
- border: 1px solid var(--line-strong);
1522
- border-left: 3px solid var(--accent);
1523
- border-radius: var(--radius);
1524
- padding: 13px 14px;
1525
- background:
1526
- linear-gradient(90deg, color-mix(in srgb, var(--k-brand) 12%, transparent), transparent 46%),
1527
- linear-gradient(180deg, var(--ink-800), var(--ink-850));
1528
- box-shadow: var(--k-shadow, 0 18px 44px -36px rgba(0, 0, 0, 0.9));
1529
- }
1530
-
1531
- .survey-workbench-embed .active-review-copy,
1532
- .survey-workbench-embed .active-review-actions,
1533
- .survey-workbench-embed .active-review-decisions{
1534
- min-width: 0;
1535
- }
1536
-
1537
- .survey-workbench-embed .active-review-copy{
1538
- display: grid;
1539
- gap: 4px;
1540
- }
1541
-
1542
- .survey-workbench-embed .active-review-copy strong{
1543
- overflow-wrap: anywhere;
1544
- color: var(--paper);
1545
- font-family: "IBM Plex Mono", ui-monospace, monospace;
1546
- font-size: 13px;
1547
- }
1548
-
1549
- .survey-workbench-embed .active-review-copy span:last-child{
1550
- overflow-wrap: anywhere;
1551
- color: var(--paper-dim);
1552
- font-size: 13px;
1553
- }
1554
-
1555
- .survey-workbench-embed .active-review-actions{
1556
- display: grid;
1557
- gap: 8px;
1558
- justify-items: end;
1559
- }
1560
-
1561
- .survey-workbench-embed .active-review-decisions{
1562
- grid-column: 1 / -1;
1563
- display: grid;
1564
- grid-template-columns: repeat(3, minmax(0, 1fr));
1565
- gap: 8px;
1566
- }
1567
-
1568
- .survey-workbench-embed .active-review-decisions .decision-button{
1569
- min-height: 38px;
1570
- padding: 7px 8px;
1571
- font-size: 11px;
1572
- }
1573
-
1574
- .survey-workbench-embed .queue-drawer-backdrop{
1575
- display: block;
1576
- }
1577
-
1578
- .survey-workbench-embed .queue-drawer-close{
1579
- display: flex;
1580
- }
1581
-
1582
- .survey-workbench-embed .mobile-queue-bar{
1583
- display: grid;
1584
- grid-template-columns: minmax(0, 1fr) auto;
1585
- gap: 12px;
1586
- align-items: center;
1587
- border: 1px solid var(--line-strong);
1588
- border-left: 3px solid var(--accent);
1589
- border-radius: var(--radius);
1590
- padding: 11px 14px;
1591
- margin-bottom: 14px;
1592
- background:
1593
- linear-gradient(90deg, color-mix(in srgb, var(--k-brand) 8%, transparent), transparent 46%),
1594
- linear-gradient(180deg, var(--ink-800), var(--ink-850));
1595
- animation: rise 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
1596
- }
1597
-
1598
- .survey-workbench-embed .mobile-queue-progress{
1599
- display: grid;
1600
- gap: 3px;
1601
- min-width: 0;
1602
- }
1603
-
1604
- .survey-workbench-embed .mobile-queue-item-label{
1605
- font-family: "IBM Plex Mono", ui-monospace, monospace;
1606
- font-size: 13px;
1607
- font-weight: 600;
1608
- color: var(--paper);
1609
- overflow-wrap: anywhere;
1610
- word-break: break-word;
1611
- }
1612
-
1613
- .survey-workbench-embed .mobile-queue-open{
1614
- flex-shrink: 0;
1615
- min-height: 34px;
1616
- padding: 0 14px;
1617
- border: 1px solid var(--line-strong);
1618
- border-radius: 999px;
1619
- background: color-mix(in srgb, var(--k-brand) 8%, transparent);
1620
- color: var(--accent);
1621
- cursor: pointer;
1622
- font-family: "IBM Plex Mono", ui-monospace, monospace;
1623
- font-size: 11px;
1624
- font-weight: 600;
1625
- letter-spacing: 0.06em;
1626
- transition: background 0.16s ease, border-color 0.16s ease;
1627
- }
1628
-
1629
- .survey-workbench-embed .mobile-queue-open:hover{
1630
- background: color-mix(in srgb, var(--k-brand) 16%, transparent);
1631
- border-color: var(--accent);
1632
- }
1633
-
1634
- /* Higher specificity than the @container stacked-layout fallback below:
1635
- on a narrow viewport the drawer must win even inside a narrow container. */
1636
- .survey-workbench-embed .queue-layout .queue-panel{
1637
- position: absolute;
1638
- top: 0;
1639
- left: 0;
1640
- bottom: 0;
1641
- width: min(320px, 90vw);
1642
- z-index: 50;
1643
- overflow-y: auto;
1644
- overflow-x: hidden;
1645
- transform: translateX(-105%);
1646
- transition: transform 0.26s cubic-bezier(0.22, 1, 0.36, 1);
1647
- border-radius: 0 var(--radius) var(--radius) 0;
1648
- padding-top: 50px;
1649
- }
1650
-
1651
- .survey-workbench-embed .queue-layout .queue-panel.is-open{
1652
- transform: translateX(0);
1653
- }
1654
-
1655
- .survey-workbench-embed .content-grid{
1656
- grid-area: content;
1657
- }
1658
-
1659
- .survey-workbench-embed .candidate-grid::before{
1660
- display: none;
1661
- }
1662
-
1663
- .survey-workbench-embed .content-grid,
1664
- .survey-workbench-embed .review-main,
1665
- .survey-workbench-embed .candidate-grid,
1666
- .survey-workbench-embed .decision-column{
1667
- min-width: 0;
1668
- }
1669
-
1670
- .survey-workbench-embed .meta-grid{
1671
- grid-template-columns: repeat(2, minmax(0, 1fr));
1672
- }
1673
-
1674
- .survey-workbench-embed .candidate-card{
1675
- min-height: auto;
1676
- }
1677
1096
  }
1678
1097
 
1679
- @container (max-width: 1100px) {
1680
- .survey-workbench-embed .topbar,
1681
- .survey-workbench-embed .queue-layout,
1682
- .survey-workbench-embed .focus-evidence{
1683
- grid-template-columns: 1fr;
1684
- }
1685
-
1686
- .survey-workbench-embed .queue-layout{
1687
- grid-template-areas:
1688
- "content"
1689
- "queue";
1690
- }
1691
-
1692
- .survey-workbench-embed .queue-panel{
1693
- grid-area: queue;
1694
- position: static;
1695
- }
1696
-
1697
- .survey-workbench-embed .content-grid{
1698
- grid-area: content;
1699
- grid-template-columns: 1fr;
1700
- grid-template-areas:
1701
- "focus"
1702
- "decision"
1703
- "candidates";
1704
- }
1705
-
1706
- .survey-workbench-embed .content-grid,
1707
- .survey-workbench-embed .review-main,
1708
- .survey-workbench-embed .candidate-grid,
1709
- .survey-workbench-embed .decision-column{
1710
- min-width: 0;
1711
- }
1098
+ .survey-workbench-embed .caption{
1099
+ text-align: center;
1100
+ margin-top: 24px;
1101
+ font-size: 12.5px;
1102
+ color: var(--k-faint);
1712
1103
  }
1713
1104
 
1714
- @container (max-width: 860px) {
1715
- .survey-workbench-embed .candidate-grid,
1716
- .survey-workbench-embed .focus-values,
1717
- .survey-workbench-embed .preview-section-grid{
1718
- grid-template-columns: 1fr;
1719
- }
1720
-
1721
- .survey-workbench-embed .candidate-grid::before{
1722
- display: none;
1723
- }
1724
-
1725
- .survey-workbench-embed .candidate-card{
1726
- min-height: auto;
1727
- }
1728
- }
1105
+ /* ---------- responsive ----------
1106
+ The workbench sets `container-type: inline-size`, so these breakpoints fire on
1107
+ the component's own width — correct whether it renders full-bleed on a phone or
1108
+ in a narrow column on a wide desktop. Mobile is the primary context, so tap
1109
+ targets stay comfortable and nothing forces a horizontal scroll. */
1729
1110
 
1730
1111
  @container (max-width: 620px) {
1731
- .survey-workbench-embed .topbar .meta-grid{
1732
- display: none;
1733
- }
1734
-
1735
- .survey-workbench-embed .decision-buttons,
1736
- .survey-workbench-embed .summary-grid,
1737
- .survey-workbench-embed .audit-grid{
1738
- grid-template-columns: 1fr;
1739
- }
1740
- }
1741
-
1742
- @media (max-width: 560px) {
1743
1112
  .survey-workbench-embed .workbench{
1744
- padding: 14px 10px 36px;
1113
+ padding: 16px 12px 56px;
1745
1114
  }
1746
1115
 
1747
- .survey-workbench-embed .workbench-shell{
1748
- gap: 14px;
1116
+ .survey-workbench-embed .fbody{
1117
+ padding: 16px 15px 18px;
1749
1118
  }
1750
1119
 
1751
- .survey-workbench-embed .topbar,
1752
- .survey-workbench-embed .active-review-strip,
1753
- .survey-workbench-embed .queue-list,
1754
- .survey-workbench-embed .session-summary,
1755
- .survey-workbench-embed .session-audit,
1756
- .survey-workbench-embed .candidate-card,
1757
- .survey-workbench-embed .decision-row,
1758
- .survey-workbench-embed .payload-panel,
1759
- .survey-workbench-embed .surface-preview{
1760
- border-radius: 10px;
1761
- padding: 14px;
1120
+ .survey-workbench-embed .rhead{
1121
+ padding: 16px;
1762
1122
  }
1763
1123
 
1764
- .survey-workbench-embed .topbar{
1765
- gap: 14px;
1124
+ .survey-workbench-embed .foot{
1125
+ padding: 14px 15px;
1766
1126
  }
1767
1127
 
1768
- .survey-workbench-embed .topbar .meta-grid{
1769
- display: none;
1128
+ .survey-workbench-embed .rhead h1{
1129
+ font-size: 19px;
1770
1130
  }
1771
1131
 
1772
- .survey-workbench-embed .active-review-strip{
1132
+ /* current → proposed stack vertically; the arrow rotates to point down. */
1133
+ .survey-workbench-embed .diff{
1773
1134
  grid-template-columns: 1fr;
1774
1135
  gap: 10px;
1775
1136
  }
1776
1137
 
1777
- .survey-workbench-embed .active-review-actions{
1778
- grid-template-columns: minmax(0, 1fr);
1779
- justify-items: stretch;
1780
- }
1781
-
1782
- .survey-workbench-embed .active-review-actions .state-label{
1783
- justify-self: start;
1784
- }
1785
-
1786
- .survey-workbench-embed .review-question{
1787
- font-size: 13px;
1788
- }
1789
-
1790
- .survey-workbench-embed h1{
1791
- font-size: 25px;
1792
- line-height: 1.08;
1793
- }
1794
-
1795
- .survey-workbench-embed .summary-grid,
1796
- .survey-workbench-embed .focus-values,
1797
- .survey-workbench-embed .decision-buttons{
1798
- grid-template-columns: 1fr;
1799
- }
1800
-
1801
- .survey-workbench-embed .queue-head,
1802
- .survey-workbench-embed .queue-row,
1803
- .survey-workbench-embed .surface-head,
1804
- .survey-workbench-embed .card-head{
1805
- display: grid;
1806
- grid-template-columns: 1fr;
1807
- }
1808
-
1809
- .survey-workbench-embed .queue-head{
1810
- align-items: stretch;
1811
- }
1812
-
1813
- .survey-workbench-embed .next-button{
1814
- width: 100%;
1815
- }
1816
-
1817
- .survey-workbench-embed .queue-row{
1818
- justify-items: start;
1819
- }
1820
-
1821
- .survey-workbench-embed .state-label{
1822
- min-width: 0;
1823
- max-width: 100%;
1138
+ .survey-workbench-embed .diff .arrow{
1139
+ transform: rotate(90deg);
1824
1140
  justify-self: start;
1825
- white-space: normal;
1826
- }
1827
-
1828
- .survey-workbench-embed .role{
1829
- font-size: 19px;
1830
- }
1831
-
1832
- .survey-workbench-embed .review-focus{
1833
- border-radius: 10px;
1834
- padding: 14px;
1835
- }
1836
-
1837
- .survey-workbench-embed .focus-head{
1838
- grid-template-columns: 1fr;
1839
- }
1840
-
1841
- .survey-workbench-embed .focus-value strong{
1842
- font-size: clamp(16px, 5cqi, 22px);
1843
- }
1844
-
1845
- .survey-workbench-embed .candidate-value .field-value{
1846
- font-size: clamp(15px, 4.5cqi, 20px);
1847
- line-height: 1.12;
1848
- }
1849
-
1850
- .survey-workbench-embed .candidate-card .field-stack .field-value,
1851
- .survey-workbench-embed .compact .field-value,
1852
- .survey-workbench-embed pre{
1853
- font-size: 11.5px;
1141
+ margin: 1px 0;
1854
1142
  }
1855
1143
 
1856
- .survey-workbench-embed .field-label,
1857
- .survey-workbench-embed .eyebrow{
1858
- letter-spacing: 0.09em;
1859
- }
1860
-
1861
- .survey-workbench-embed .decision-button{
1144
+ /* Apply spans the header row as an easy thumb target. */
1145
+ .survey-workbench-embed .apply{
1146
+ flex: 1;
1862
1147
  min-height: 44px;
1863
1148
  }
1864
-
1865
- .survey-workbench-embed pre{
1866
- max-height: 360px;
1867
- padding: 11px;
1868
- }
1869
- }
1870
-
1871
- /* ---- Type legibility: serif → UI sans below 480px -------------------- */
1872
- /* At small container sizes the Fraunces display font reads poorly; fall back
1873
- to the UI sans-serif stack for headings while keeping serif on desktop. */
1874
- @media (max-width: 480px) {
1875
- .survey-workbench-embed h1,
1876
- .survey-workbench-embed h2,
1877
- .survey-workbench-embed h3,
1878
- .survey-workbench-embed .role,
1879
- .survey-workbench-embed .surface-summary-label,
1880
- .survey-workbench-embed .queue-head h2,
1881
- .survey-workbench-embed .session-summary h2,
1882
- .survey-workbench-embed .session-audit h2,
1883
- .survey-workbench-embed .surface-head h2,
1884
- .survey-workbench-embed .summary-grid .meta-value{
1885
- font-family: var(--k-font-ui, "Hanken Grotesk", system-ui, sans-serif);
1886
- letter-spacing: -0.01em;
1887
- }
1888
1149
  }
1889
1150
 
1890
1151
  @container (max-width: 480px) {
1891
- .survey-workbench-embed h1,
1892
- .survey-workbench-embed h2,
1893
- .survey-workbench-embed h3,
1894
- .survey-workbench-embed .role,
1895
- .survey-workbench-embed .surface-summary-label,
1896
- .survey-workbench-embed .queue-head h2,
1897
- .survey-workbench-embed .session-summary h2,
1898
- .survey-workbench-embed .session-audit h2,
1899
- .survey-workbench-embed .surface-head h2,
1900
- .survey-workbench-embed .summary-grid .meta-value{
1901
- font-family: var(--k-font-ui, "Hanken Grotesk", system-ui, sans-serif);
1902
- letter-spacing: -0.01em;
1903
- }
1904
- }
1905
-
1906
- @media (max-width: 420px) {
1907
- .survey-workbench-embed h1{
1908
- font-size: 23px;
1909
- line-height: 1.1;
1910
- }
1911
-
1912
- .survey-workbench-embed .topbar{
1913
- padding: 12px;
1914
- }
1915
-
1916
- .survey-workbench-embed .topbar .meta-grid{
1152
+ /* The two primary actions go full-width and tall so they're the obvious,
1153
+ thumb-friendly call to action; the calibration toggle sits below them. */
1154
+ .survey-workbench-embed .decide{
1155
+ flex-direction: column;
1156
+ align-items: stretch;
1917
1157
  gap: 8px;
1918
1158
  }
1919
1159
 
1920
- .survey-workbench-embed .topbar .meta-item{
1921
- padding: 9px 10px;
1160
+ .survey-workbench-embed .btn{
1161
+ width: 100%;
1162
+ min-height: 46px;
1163
+ font-size: 15px;
1922
1164
  }
1923
1165
 
1924
- .survey-workbench-embed .candidate-card .field-stack .field-value,
1925
- .survey-workbench-embed .compact .field-value{
1926
- display: block;
1927
- text-align: left;
1166
+ .survey-workbench-embed .wrong{
1167
+ order: 0;
1168
+ margin-right: 0;
1169
+ justify-content: flex-start;
1170
+ min-height: 44px;
1928
1171
  }
1929
1172
 
1930
- .survey-workbench-embed .decision-buttons{
1173
+ .survey-workbench-embed .frow1{
1931
1174
  gap: 8px;
1932
1175
  }
1933
-
1934
- .survey-workbench-embed .decision-button{
1935
- min-height: 40px;
1936
- padding: 8px 10px;
1937
- font-size: 12px;
1938
- }
1939
-
1940
- .survey-workbench-embed .candidate-card .field-stack > .field:nth-child(5) .field-value{
1941
- display: inline-block;
1942
- }
1943
1176
  }
1944
1177
 
1945
- @media (max-width: 360px) {
1946
- .survey-workbench-embed .workbench{
1947
- padding-inline: 8px;
1948
- }
1949
-
1950
- .survey-workbench-embed .topbar,
1951
- .survey-workbench-embed .active-review-strip,
1952
- .survey-workbench-embed .queue-list,
1953
- .survey-workbench-embed .session-summary,
1954
- .survey-workbench-embed .session-audit,
1955
- .survey-workbench-embed .review-focus,
1956
- .survey-workbench-embed .candidate-card,
1957
- .survey-workbench-embed .decision-row,
1958
- .survey-workbench-embed .payload-panel,
1959
- .survey-workbench-embed .surface-preview{
1960
- padding: 12px;
1961
- }
1962
-
1963
- .survey-workbench-embed h1{
1964
- font-size: 20px;
1965
- }
1966
-
1967
- .survey-workbench-embed .review-question{
1968
- font-size: 12px;
1969
- line-height: 1.35;
1970
- }
1971
-
1972
- .survey-workbench-embed .topbar .meta-grid{
1973
- display: none;
1974
- }
1975
-
1976
- .survey-workbench-embed .review-focus{
1977
- gap: 10px;
1978
- }
1979
-
1980
- .survey-workbench-embed .focus-value{
1981
- padding: 10px;
1982
- }
1983
-
1984
- .survey-workbench-embed .focus-value strong{
1985
- margin-top: 6px;
1986
- font-size: 18px;
1987
- line-height: 1.05;
1178
+ /* The diff-collapse must also hold in host contexts without a query container
1179
+ (e.g. an embed that doesn't establish `container-type`): fall back to viewport. */
1180
+ @media (max-width: 620px) {
1181
+ .survey-workbench-embed .diff{
1182
+ grid-template-columns: 1fr;
1988
1183
  }
1989
1184
 
1990
- .survey-workbench-embed .focus-value span:last-child{
1991
- margin-top: 6px;
1185
+ .survey-workbench-embed .diff .arrow{
1186
+ transform: rotate(90deg);
1187
+ justify-self: start;
1992
1188
  }
1189
+ }
1993
1190
 
1994
- .survey-workbench-embed .candidate-value .field-value{
1995
- font-size: 17px;
1191
+ @media (prefers-reduced-motion: reduce) {
1192
+ .survey-workbench-embed *{
1193
+ transition: none !important;
1996
1194
  }
1997
1195
  }
1998
1196