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