@kontourai/survey 1.11.0 → 1.12.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,656 @@ 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;
349
+ /* progress + apply */
350
+
351
+ .survey-workbench-embed .progress{
352
+ display: flex;
353
+ align-items: center;
354
+ gap: 14px;
355
+ flex-wrap: wrap;
401
356
  }
402
357
 
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;
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);
407
366
  }
408
367
 
409
- .survey-workbench-embed .review-target-label{
410
- margin-top: 4px;
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);
411
374
  }
412
375
 
413
- .survey-workbench-embed .review-target-label strong{
414
- color: var(--paper);
415
- font-family: "IBM Plex Mono", ui-monospace, monospace;
376
+ .survey-workbench-embed .ptext{
416
377
  font-size: 13px;
417
- font-weight: 600;
378
+ color: var(--k-muted);
379
+ font-variant-numeric: tabular-nums;
380
+ white-space: nowrap;
418
381
  }
419
382
 
420
- .survey-workbench-embed .meta-grid{
421
- display: none;
422
- grid-template-columns: repeat(4, minmax(110px, 1fr));
423
- gap: 10px;
424
- width: 100%;
383
+ .survey-workbench-embed .ptext b{
384
+ color: var(--k-text);
425
385
  }
426
386
 
427
- .survey-workbench-embed .meta-item,
428
- .survey-workbench-embed .field{
429
- min-width: 0;
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;
430
398
  }
431
399
 
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));
400
+ .survey-workbench-embed .apply:hover{
401
+ filter: brightness(1.06);
437
402
  }
438
403
 
439
- .survey-workbench-embed[data-theme="light"] .meta-item{
440
- background: color-mix(in srgb, var(--k-bg) 70%, var(--k-panel));
404
+ .survey-workbench-embed .apply:active{
405
+ transform: translateY(1px);
441
406
  }
442
407
 
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);
408
+ .survey-workbench-embed .apply:disabled{
409
+ opacity: 0.45;
410
+ cursor: not-allowed;
411
+ filter: none;
450
412
  }
451
413
 
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;
456
- }
414
+ /* ---------- field cards ---------- */
457
415
 
458
- /* ---- Layout scaffold -------------------------------------------------- */
416
+ .survey-workbench-embed .fields{
417
+ display: flex;
418
+ flex-direction: column;
419
+ }
459
420
 
460
- .survey-workbench-embed .queue-layout{
421
+ .survey-workbench-embed .field{
461
422
  display: grid;
462
- grid-template-columns: 280px minmax(0, 1fr);
463
- gap: 16px;
464
- align-items: start;
423
+ grid-template-columns: 4px 1fr;
424
+ gap: 0;
425
+ border-top: 1px solid var(--k-line);
465
426
  }
466
427
 
467
- .survey-workbench-embed .queue-panel{
468
- display: grid;
469
- gap: 14px;
470
- position: sticky;
471
- top: 18px;
428
+ .survey-workbench-embed .field:first-child{
429
+ border-top: 0;
472
430
  }
473
431
 
474
- .survey-workbench-embed .active-review-strip{
475
- display: none;
432
+ .survey-workbench-embed .stripe{
433
+ background: var(--k-line);
434
+ transition: background 0.25s;
476
435
  }
477
436
 
478
- /* ---- Mobile queue progress bar (mobile only) -------------------------- */
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); }
479
441
 
480
- .survey-workbench-embed .mobile-queue-bar{
481
- display: none;
442
+ .survey-workbench-embed .fbody{
443
+ padding: 18px 22px 20px;
444
+ display: grid;
445
+ gap: 13px;
446
+ min-width: 0;
482
447
  }
483
448
 
484
- /* ---- Queue drawer backdrop -------------------------------------------- */
485
-
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;
449
+ .survey-workbench-embed .frow1{
450
+ display: flex;
451
+ align-items: center;
452
+ gap: 10px;
453
+ flex-wrap: wrap;
496
454
  }
497
455
 
498
- .survey-workbench-embed .queue-drawer-backdrop.is-visible{
499
- opacity: 1;
500
- pointer-events: auto;
456
+ .survey-workbench-embed .fname{
457
+ font-size: 15.5px;
458
+ font-weight: 650;
459
+ letter-spacing: -0.005em;
501
460
  }
502
461
 
503
- /* ---- Queue drawer close button (mobile only) -------------------------- */
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;
470
+ }
504
471
 
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);
472
+ .survey-workbench-embed .chip{
473
+ font-size: 12px;
474
+ font-weight: 600;
475
+ padding: 3px 10px;
513
476
  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;
477
+ display: inline-flex;
519
478
  align-items: center;
520
- justify-content: center;
521
- z-index: 2;
479
+ gap: 6px;
522
480
  }
523
481
 
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;
482
+ .survey-workbench-embed .chip::before{
483
+ content: "";
484
+ width: 6px;
485
+ height: 6px;
486
+ border-radius: 999px;
487
+ background: currentColor;
534
488
  }
535
489
 
536
- .survey-workbench-embed .queue-head{
537
- display: grid;
538
- grid-template-columns: minmax(0, 1fr) auto;
539
- gap: 8px;
540
- align-items: center;
541
- margin-bottom: 14px;
542
- }
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); }
543
494
 
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;
495
+ .survey-workbench-embed .frow1 .push{
496
+ margin-left: auto;
552
497
  }
553
498
 
554
- /* ---- Queue rows: status carried on data-queue-status ------------------ */
499
+ /* the diff */
555
500
 
556
- .survey-workbench-embed .queue-row{
501
+ .survey-workbench-embed .diff{
557
502
  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;
503
+ grid-template-columns: 1fr auto 1fr;
504
+ gap: 12px;
505
+ align-items: stretch;
573
506
  }
574
507
 
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));
508
+ /* narrow-width collapse for .diff lives in the responsive section at the foot. */
509
+
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);
515
+ min-width: 0;
579
516
  }
580
517
 
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);
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;
585
524
  }
586
525
 
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); }
526
+ .survey-workbench-embed .val .vtext{
527
+ font-size: 14.5px;
528
+ word-break: break-word;
529
+ white-space: pre-wrap;
530
+ }
592
531
 
593
- .survey-workbench-embed .queue-row-main{
594
- display: grid;
595
- gap: 4px;
596
- min-width: 0;
532
+ .survey-workbench-embed .val.current{
533
+ background: var(--k-sunken);
597
534
  }
598
535
 
599
- .survey-workbench-embed .queue-row-title,
600
- .survey-workbench-embed .queue-row-target{
601
- overflow-wrap: anywhere;
602
- word-break: break-word;
536
+ .survey-workbench-embed .val.current .vtext{
537
+ color: var(--k-muted);
603
538
  }
604
539
 
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);
540
+ .survey-workbench-embed .val.proposed{
541
+ border-color: color-mix(in srgb, var(--k-brand) 45%, var(--k-line));
611
542
  }
612
543
 
613
- .survey-workbench-embed .queue-row-target{
614
- color: var(--paper-dim);
615
- font-size: 12px;
544
+ .survey-workbench-embed .val.empty .vtext{
545
+ color: var(--k-faint);
546
+ font-style: italic;
616
547
  }
617
548
 
618
- /* ---- Status pills ----------------------------------------------------- */
549
+ .survey-workbench-embed .arrow{
550
+ align-self: center;
551
+ color: var(--k-faint);
552
+ }
619
553
 
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;
554
+ .survey-workbench-embed .editrow{
555
+ display: flex;
556
+ align-items: center;
557
+ gap: 8px;
558
+ margin-top: 8px;
630
559
  }
631
560
 
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); }
561
+ .survey-workbench-embed .editrow input{
562
+ flex: 1;
563
+ min-width: 0;
564
+ font-size: 13.5px;
565
+ color: var(--k-text);
566
+ background: var(--k-panel);
567
+ border: 1px solid var(--k-line-strong);
568
+ border-radius: 6px;
569
+ padding: 6px 9px;
570
+ }
636
571
 
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;
572
+ .survey-workbench-embed .editrow input:focus-visible{
573
+ outline: 2px solid var(--k-brand);
574
+ outline-offset: 1px;
575
+ border-color: var(--k-brand);
650
576
  }
651
577
 
652
- .survey-workbench-embed .next-button:hover{
653
- background: color-mix(in srgb, var(--k-brand) 16%, transparent);
654
- border-color: var(--accent);
578
+ .survey-workbench-embed .editrow .ehint{
579
+ font-size: 11.5px;
580
+ color: var(--k-faint);
581
+ white-space: nowrap;
655
582
  }
656
583
 
657
- /* ---- Session summary: scoreboard tiles -------------------------------- */
584
+ /* confidence + provenance */
658
585
 
659
- .survey-workbench-embed .summary-grid{
586
+ .survey-workbench-embed .prov{
660
587
  display: grid;
661
- grid-template-columns: repeat(2, minmax(0, 1fr));
588
+ gap: 9px;
589
+ padding: 11px 13px;
590
+ border-radius: var(--k-radius-sm);
591
+ background: var(--k-sunken);
592
+ border: 1px solid var(--k-line);
593
+ }
594
+
595
+ .survey-workbench-embed .conf{
596
+ display: flex;
597
+ align-items: center;
662
598
  gap: 10px;
663
- margin-top: 12px;
599
+ font-size: 12.5px;
600
+ color: var(--k-muted);
601
+ flex-wrap: wrap;
664
602
  }
665
603
 
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));
604
+ .survey-workbench-embed .conf .meter{
605
+ width: 84px;
606
+ height: 6px;
607
+ border-radius: 999px;
608
+ background: var(--k-line-strong);
609
+ overflow: hidden;
671
610
  }
672
611
 
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);
612
+ .survey-workbench-embed .conf .meter > i{
613
+ display: block;
614
+ height: 100%;
615
+ border-radius: 999px;
616
+ background: var(--k-positive);
679
617
  }
680
618
 
681
- /* ---- Session audit: replayable resource trail ------------------------- */
619
+ .survey-workbench-embed .conf .meter.mid > i{
620
+ background: var(--k-caution);
621
+ }
682
622
 
683
- .survey-workbench-embed .session-audit{
684
- display: grid;
685
- gap: 14px;
686
- animation-delay: 0.08s;
623
+ .survey-workbench-embed .conf .pct{
624
+ font-variant-numeric: tabular-nums;
625
+ font-weight: 600;
626
+ color: var(--k-text);
627
+ font-family: var(--k-font-mono);
628
+ font-size: 12px;
687
629
  }
688
630
 
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;
631
+ .survey-workbench-embed .excerpt{
632
+ font-size: 13px;
633
+ color: var(--k-text);
694
634
  }
695
635
 
696
- .survey-workbench-embed .session-audit-head h2{
697
- margin-top: 5px;
698
- overflow-wrap: anywhere;
636
+ .survey-workbench-embed .excerpt q{
637
+ color: var(--k-text);
699
638
  }
700
639
 
701
- .survey-workbench-embed .audit-grid{
702
- grid-template-columns: repeat(2, minmax(0, 1fr));
640
+ .survey-workbench-embed .excerpt q::before{ content: "\\201C"; }
641
+ .survey-workbench-embed .excerpt q::after{ content: "\\201D"; }
642
+
643
+ .survey-workbench-embed .excerpt .from{
644
+ display: inline-flex;
645
+ align-items: center;
646
+ gap: 5px;
647
+ margin-top: 5px;
648
+ font-size: 12px;
649
+ color: var(--k-muted);
650
+ flex-wrap: wrap;
703
651
  }
704
652
 
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;
653
+ .survey-workbench-embed .excerpt .from a{
654
+ color: var(--k-brand);
655
+ text-decoration: underline;
656
+ text-underline-offset: 2px;
709
657
  }
710
658
 
711
- .survey-workbench-embed .session-event-list{
712
- display: grid;
659
+ .survey-workbench-embed .noprov{
660
+ display: flex;
661
+ align-items: center;
713
662
  gap: 8px;
714
- margin: 0;
715
- padding: 0;
716
- list-style: none;
663
+ font-size: 13px;
664
+ color: var(--k-caution);
665
+ flex-wrap: wrap;
717
666
  }
718
667
 
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);
668
+ .survey-workbench-embed .noprov svg{
669
+ flex: none;
728
670
  }
729
671
 
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);
672
+ .survey-workbench-embed .noprov .tag{
673
+ background: var(--k-caution-wash);
674
+ color: var(--k-caution);
675
+ font-weight: 600;
676
+ padding: 2px 8px;
736
677
  border-radius: 999px;
737
- color: var(--accent);
738
- font-family: "IBM Plex Mono", ui-monospace, monospace;
739
- font-size: 10px;
740
- font-weight: 700;
678
+ font-size: 12px;
741
679
  }
742
680
 
743
- .survey-workbench-embed .session-event-list strong,
744
- .survey-workbench-embed .session-event-list small{
745
- display: block;
746
- min-width: 0;
747
- overflow-wrap: anywhere;
748
- }
681
+ /* decisions */
749
682
 
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;
683
+ /* The decision row is the point of the card, so it sits on its own line,
684
+ right-aligned and prominent. The quiet calibration toggle is pushed to the
685
+ far left so the two primary actions read as the clear call to action. */
686
+ .survey-workbench-embed .decide{
687
+ display: flex;
688
+ gap: 10px;
689
+ flex-wrap: wrap;
690
+ align-items: center;
691
+ justify-content: flex-end;
692
+ margin-top: 2px;
754
693
  }
755
694
 
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;
695
+ .survey-workbench-embed .btn{
696
+ border: 1px solid var(--k-line-strong);
697
+ background: var(--k-raised);
698
+ color: var(--k-text);
699
+ font-size: 14px;
700
+ font-weight: 600;
701
+ padding: 0 18px;
702
+ min-height: 42px;
703
+ border-radius: 9px;
704
+ cursor: pointer;
705
+ display: inline-flex;
706
+ align-items: center;
707
+ justify-content: center;
708
+ gap: 7px;
709
+ transition: background 0.12s, border-color 0.12s, color 0.12s, filter 0.12s;
761
710
  }
762
711
 
763
- .survey-workbench-embed .session-export{
764
- border-top: 1px solid var(--line);
765
- padding-top: 12px;
712
+ .survey-workbench-embed .btn:hover{
713
+ background: var(--k-sunken);
714
+ border-color: var(--k-line-strong);
766
715
  }
767
716
 
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;
717
+ .survey-workbench-embed .btn:focus-visible{
718
+ outline: 2px solid var(--k-brand);
719
+ outline-offset: 2px;
775
720
  }
776
721
 
777
- .survey-workbench-embed .session-export pre{
778
- max-height: 300px;
722
+ /* Use proposed — the filled positive primary, the loudest thing on the card. */
723
+ .survey-workbench-embed .btn.use{
724
+ background: var(--k-positive);
725
+ border-color: var(--k-positive);
726
+ color: #ffffff;
779
727
  }
780
728
 
781
- /* ---- Content grid ----------------------------------------------------- */
782
-
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;
729
+ .survey-workbench-embed .btn.use:hover{
730
+ background: var(--k-positive);
731
+ border-color: var(--k-positive);
732
+ color: #ffffff;
733
+ filter: brightness(1.07);
792
734
  }
793
735
 
794
- .survey-workbench-embed .review-main{
795
- display: grid;
796
- gap: 14px;
797
- min-width: 0;
736
+ /* Keep current — a strong neutral secondary; still prominent, clearly not the accept. */
737
+ .survey-workbench-embed .btn.keep{
738
+ border-color: var(--k-line-strong);
739
+ background: var(--k-panel-raised, var(--k-raised));
798
740
  }
799
741
 
800
- /* ---- Active review focus ---------------------------------------------- */
742
+ /* "Suggestion was wrong" — optional quiet calibration toggle on Keep current.
743
+ Ticking it turns a keep-current decision into the reject signal. Not a third action. */
744
+ .survey-workbench-embed .wrong{
745
+ order: -1;
746
+ margin-right: auto;
747
+ display: inline-flex;
748
+ align-items: center;
749
+ gap: 7px;
750
+ font-size: 12.5px;
751
+ color: var(--k-faint);
752
+ cursor: pointer;
753
+ user-select: none;
754
+ padding: 8px 4px;
755
+ min-height: 40px;
756
+ }
801
757
 
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);
758
+ .survey-workbench-embed .wrong:hover{
759
+ color: var(--k-negative);
814
760
  }
815
761
 
816
- .survey-workbench-embed .focus-head,
817
- .survey-workbench-embed .focus-values{
818
- display: grid;
819
- gap: 10px;
762
+ .survey-workbench-embed .wrong input{
763
+ width: 15px;
764
+ height: 15px;
765
+ accent-color: var(--k-negative);
766
+ cursor: pointer;
767
+ margin: 0;
820
768
  }
821
769
 
822
- .survey-workbench-embed .focus-head{
823
- grid-template-columns: minmax(0, 1fr) auto;
770
+ .survey-workbench-embed .decided{
771
+ display: none;
824
772
  align-items: center;
773
+ justify-content: flex-end;
774
+ gap: 10px;
775
+ font-size: 13px;
776
+ color: var(--k-muted);
825
777
  }
826
778
 
827
- .survey-workbench-embed .focus-values{
828
- grid-template-columns: repeat(2, minmax(0, 1fr));
779
+ .survey-workbench-embed .field[data-decided="1"] .decide{
780
+ display: none;
829
781
  }
830
782
 
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));
837
- }
838
-
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;
847
- }
848
-
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;
855
- }
856
-
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)));
860
- }
861
-
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;
783
+ .survey-workbench-embed .field[data-decided="1"] .decided{
784
+ display: flex;
871
785
  }
872
786
 
873
- .survey-workbench-embed .focus-evidence .field{
874
- border-top: 1px solid var(--line);
875
- padding-top: 10px;
787
+ .survey-workbench-embed .undo{
788
+ border: 0;
789
+ background: none;
790
+ color: var(--k-brand);
791
+ font-size: 13px;
792
+ cursor: pointer;
793
+ text-decoration: underline;
794
+ text-underline-offset: 2px;
795
+ padding: 0;
876
796
  }
877
797
 
878
- /* ---- Candidate comparison: the hero of the console -------------------- */
798
+ /* footer tally */
879
799
 
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;
800
+ .survey-workbench-embed .foot{
801
+ padding: 16px 22px;
802
+ border-top: 1px solid var(--k-line);
803
+ display: flex;
804
+ align-items: center;
805
+ gap: 16px;
806
+ flex-wrap: wrap;
807
+ background: var(--k-raised);
886
808
  }
887
809
 
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;
810
+ .survey-workbench-embed .tally{
811
+ display: flex;
812
+ gap: 16px;
906
813
  font-size: 13px;
907
- box-shadow: var(--k-shadow, 0 10px 26px -12px rgba(0, 0, 0, 0.9));
814
+ color: var(--k-muted);
815
+ flex-wrap: wrap;
908
816
  }
909
817
 
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));
818
+ .survey-workbench-embed .tally b{
819
+ color: var(--k-text);
820
+ font-variant-numeric: tabular-nums;
918
821
  }
919
822
 
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;
930
- }
823
+ /* ---------- audit details: the single collapsed power-user surface per field ---------- */
931
824
 
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);
825
+ .survey-workbench-embed .audit-details{
826
+ border-top: 1px dashed var(--k-line);
827
+ padding-top: 4px;
935
828
  }
936
829
 
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%);
830
+ .survey-workbench-embed .audit-details summary{
831
+ cursor: pointer;
832
+ padding: 6px 0;
833
+ color: var(--k-faint);
834
+ font-size: 12px;
835
+ letter-spacing: 0.04em;
836
+ text-transform: uppercase;
837
+ font-weight: 600;
943
838
  }
944
839
 
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);
840
+ .survey-workbench-embed .audit-details summary:hover{
841
+ color: var(--k-muted);
948
842
  }
949
843
 
950
- .survey-workbench-embed .candidate-card.is-unselected{
951
- opacity: 0.5;
952
- filter: saturate(0.7);
844
+ .survey-workbench-embed .audit-details[open] summary{
845
+ color: var(--k-brand);
953
846
  }
954
847
 
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;
848
+ .survey-workbench-embed .audit-body{
849
+ display: grid;
850
+ gap: 14px;
851
+ padding: 4px 0 6px;
962
852
  }
963
853
 
964
- .survey-workbench-embed .card-head .eyebrow{
965
- color: var(--paper-faint);
966
- font-size: 10px;
967
- letter-spacing: 0.1em;
968
- text-transform: uppercase;
969
- overflow-wrap: anywhere;
970
- word-break: break-word;
854
+ .survey-workbench-embed .note-field{
855
+ display: grid;
856
+ gap: 6px;
971
857
  }
972
858
 
973
- .survey-workbench-embed .role{
974
- margin-top: 3px;
975
- font-family: "Fraunces", Georgia, serif;
859
+ .survey-workbench-embed .field-label{
860
+ color: var(--k-faint);
861
+ font-size: 11px;
976
862
  font-weight: 600;
977
- font-size: 18px;
978
- letter-spacing: -0.01em;
979
- color: var(--paper);
980
- }
981
-
982
- .survey-workbench-embed .candidate-card:nth-child(2) .role{
983
- color: var(--proposed);
984
- }
985
-
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);
990
- }
991
-
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;
863
+ letter-spacing: 0.06em;
864
+ text-transform: uppercase;
998
865
  }
999
866
 
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);
1004
- font-weight: 600;
1005
- line-height: 1.22;
1006
- letter-spacing: 0;
1007
- color: var(--paper);
867
+ .survey-workbench-embed .field-value{
868
+ overflow-wrap: anywhere;
869
+ word-break: break-word;
870
+ line-height: 1.4;
871
+ color: var(--k-text);
872
+ font-size: 12.5px;
1008
873
  }
1009
874
 
1010
- .survey-workbench-embed .candidate-card:nth-child(2) .candidate-value .field-value{
1011
- color: var(--proposed);
875
+ .survey-workbench-embed .note-field textarea{
876
+ display: block;
877
+ width: 100%;
878
+ min-height: 60px;
879
+ resize: vertical;
880
+ border: 1px solid var(--k-line-strong);
881
+ border-radius: var(--k-radius-sm);
882
+ padding: 8px 10px;
883
+ color: var(--k-text);
884
+ background: var(--k-sunken);
885
+ font-family: var(--k-font-mono);
886
+ font-size: 12px;
887
+ line-height: 1.5;
1012
888
  }
1013
889
 
1014
- .survey-workbench-embed .is-selected .candidate-value .field-value{
1015
- color: var(--verify);
890
+ .survey-workbench-embed .note-field textarea:focus-visible{
891
+ outline: none;
892
+ border-color: var(--k-brand);
893
+ box-shadow: 0 0 0 3px var(--k-brand-wash);
1016
894
  }
1017
895
 
1018
896
  .survey-workbench-embed .field-stack{
1019
897
  display: grid;
1020
898
  gap: 9px;
1021
- position: relative;
1022
- z-index: 1;
1023
- align-content: start;
1024
899
  }
1025
900
 
1026
- .survey-workbench-embed .field-value{
1027
- margin-top: 4px;
1028
- font-size: 12.5px;
901
+ .survey-workbench-embed .field-stack.compact{
902
+ gap: 6px;
1029
903
  }
1030
904
 
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);
905
+ .survey-workbench-embed .kv{
906
+ min-width: 0;
1036
907
  }
1037
908
 
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);
909
+ .survey-workbench-embed .kv .field-value{
910
+ margin-top: 3px;
911
+ font-family: var(--k-font-mono);
1047
912
  font-size: 11.5px;
1048
- font-weight: 600;
913
+ color: var(--k-muted);
1049
914
  }
1050
915
 
1051
- .survey-workbench-embed .excerpt{
1052
- border-left: 2px solid var(--accent-deep);
1053
- padding-left: 12px;
1054
- }
1055
-
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{
916
+ /* Excerpt / rationale 3-line clamp with inline "more / less" expander. */
917
+ .survey-workbench-embed .kv.excerpt .field-value,
918
+ .survey-workbench-embed .kv.rationale-clamp .field-value{
1068
919
  display: -webkit-box;
1069
920
  -webkit-box-orient: vertical;
1070
921
  -webkit-line-clamp: 3;
1071
922
  overflow: hidden;
923
+ font-family: var(--k-font-ui);
924
+ font-style: italic;
925
+ color: var(--k-muted);
1072
926
  }
1073
927
 
1074
928
  .survey-workbench-embed .excerpt-clamp.is-expanded .field-value,
@@ -1084,9 +938,9 @@ export const REVIEW_WORKBENCH_CSS = `/* Bundled, scoped Survey Review Workbench
1084
938
  padding: 0;
1085
939
  border: none;
1086
940
  background: none;
1087
- color: var(--accent);
941
+ color: var(--k-brand);
1088
942
  cursor: pointer;
1089
- font-family: "IBM Plex Mono", ui-monospace, monospace;
943
+ font-family: var(--k-font-mono);
1090
944
  font-size: 10.5px;
1091
945
  font-weight: 600;
1092
946
  letter-spacing: 0.04em;
@@ -1096,13 +950,10 @@ export const REVIEW_WORKBENCH_CSS = `/* Bundled, scoped Survey Review Workbench
1096
950
  }
1097
951
 
1098
952
  .survey-workbench-embed .clamp-toggle:hover{
1099
- color: var(--paper);
953
+ color: var(--k-text);
1100
954
  }
1101
955
 
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
-
956
+ /* Candidate history expander: >3 unselected candidates hide behind "view all (N)". */
1106
957
  .survey-workbench-embed .history-overflow{
1107
958
  display: none;
1108
959
  }
@@ -1117,21 +968,19 @@ export const REVIEW_WORKBENCH_CSS = `/* Bundled, scoped Survey Review Workbench
1117
968
  gap: 4px;
1118
969
  margin-top: 6px;
1119
970
  padding: 3px 10px;
1120
- border: 1px solid var(--line-strong);
971
+ border: 1px solid var(--k-line-strong);
1121
972
  border-radius: 999px;
1122
- background: color-mix(in srgb, var(--k-brand) 6%, transparent);
1123
- color: var(--accent);
973
+ background: var(--k-brand-wash);
974
+ color: var(--k-brand);
1124
975
  cursor: pointer;
1125
- font-family: "IBM Plex Mono", ui-monospace, monospace;
1126
- font-size: 10px;
976
+ font-size: 10.5px;
1127
977
  font-weight: 600;
1128
- letter-spacing: 0.06em;
978
+ letter-spacing: 0.04em;
1129
979
  transition: background 0.14s ease, border-color 0.14s ease;
1130
980
  }
1131
981
 
1132
982
  .survey-workbench-embed .history-expand-btn:hover{
1133
- background: color-mix(in srgb, var(--k-brand) 14%, transparent);
1134
- border-color: var(--accent);
983
+ border-color: var(--k-brand);
1135
984
  }
1136
985
 
1137
986
  .survey-workbench-embed .history-expander.is-expanded .history-expand-btn .expand-label{
@@ -1146,273 +995,46 @@ export const REVIEW_WORKBENCH_CSS = `/* Bundled, scoped Survey Review Workbench
1146
995
  display: none;
1147
996
  }
1148
997
 
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
998
  .survey-workbench-embed .preview-section-grid{
1360
999
  display: grid;
1361
- grid-template-columns: repeat(2, minmax(0, 1fr));
1362
- gap: 8px;
1000
+ gap: 10px;
1363
1001
  }
1364
1002
 
1365
1003
  .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));
1004
+ border: 1px solid var(--k-line);
1005
+ border-radius: var(--k-radius-sm);
1006
+ padding: 10px 12px;
1007
+ background: var(--k-sunken);
1371
1008
  }
1372
1009
 
1373
1010
  .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;
1011
+ margin-bottom: 6px;
1012
+ color: var(--k-faint);
1013
+ font-size: 11px;
1378
1014
  font-weight: 600;
1379
- letter-spacing: 0.1em;
1015
+ letter-spacing: 0.06em;
1380
1016
  text-transform: uppercase;
1381
1017
  }
1382
1018
 
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
1019
  .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));
1020
+ background: var(--k-raised);
1397
1021
  }
1398
1022
 
1399
1023
  .survey-workbench-embed .preview-section.is-neutral h3{
1400
- color: var(--paper-faint);
1024
+ color: var(--k-faint);
1401
1025
  }
1402
1026
 
1403
1027
  .survey-workbench-embed .reference-details{
1404
- margin-top: 10px;
1405
- border-top: 1px solid var(--line);
1406
- padding-top: 8px;
1028
+ margin-top: 8px;
1407
1029
  }
1408
1030
 
1409
1031
  .survey-workbench-embed .reference-details summary{
1410
1032
  cursor: pointer;
1411
- color: var(--paper-faint);
1412
- font-family: "IBM Plex Mono", ui-monospace, monospace;
1413
- font-size: 10px;
1033
+ list-style: none;
1034
+ color: var(--k-faint);
1035
+ font-size: 10.5px;
1414
1036
  font-weight: 600;
1415
- letter-spacing: 0.08em;
1037
+ letter-spacing: 0.04em;
1416
1038
  text-transform: uppercase;
1417
1039
  }
1418
1040
 
@@ -1421,581 +1043,141 @@ export const REVIEW_WORKBENCH_CSS = `/* Bundled, scoped Survey Review Workbench
1421
1043
  }
1422
1044
 
1423
1045
  .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);
1046
+ content: "▸ ";
1430
1047
  }
1431
1048
 
1432
1049
  .survey-workbench-embed .reference-details[open] summary::before{
1433
- content: "⌄ ";
1434
- color: var(--accent);
1050
+ content: "▾ ";
1435
1051
  }
1436
1052
 
1437
1053
  .survey-workbench-embed .reference-details .field-stack{
1438
1054
  margin-top: 8px;
1439
1055
  }
1440
1056
 
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;
1057
+ .survey-workbench-embed .preview-disclaimer{
1058
+ font-size: 11.5px;
1059
+ color: var(--k-faint);
1060
+ line-height: 1.5;
1454
1061
  }
1455
1062
 
1456
- .survey-workbench-embed .payload-panel summary.field-label::before{
1457
- content: "› ";
1458
- color: var(--verify);
1063
+ .survey-workbench-embed .preview-disclaimer-footer{
1064
+ border-top: 1px solid var(--k-line);
1065
+ padding-top: 10px;
1459
1066
  }
1460
1067
 
1461
- .survey-workbench-embed pre{
1462
- max-height: 280px;
1463
- margin: 12px 0 0;
1068
+ /* ReviewDecision payload — deliberately the deepest, last thing in the audit details. */
1069
+ .survey-workbench-embed .reference-details pre,
1070
+ .survey-workbench-embed pre[data-testid="decision-payload"]{
1071
+ margin: 8px 0 0;
1072
+ max-height: 260px;
1464
1073
  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;
1074
+ padding: 10px;
1075
+ border: 1px solid var(--k-line);
1076
+ border-radius: var(--k-radius-sm);
1077
+ background: var(--k-bg);
1078
+ color: var(--k-muted);
1079
+ font-family: var(--k-font-mono);
1471
1080
  font-size: 11px;
1472
- line-height: 1.55;
1081
+ line-height: 1.5;
1473
1082
  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
1083
  }
1681
1084
 
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
- }
1085
+ .survey-workbench-embed .caption{
1086
+ text-align: center;
1087
+ margin-top: 24px;
1088
+ font-size: 12.5px;
1089
+ color: var(--k-faint);
1715
1090
  }
1716
1091
 
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
- }
1092
+ /* ---------- responsive ----------
1093
+ The workbench sets \`container-type: inline-size\`, so these breakpoints fire on
1094
+ the component's own width — correct whether it renders full-bleed on a phone or
1095
+ in a narrow column on a wide desktop. Mobile is the primary context, so tap
1096
+ targets stay comfortable and nothing forces a horizontal scroll. */
1732
1097
 
1733
1098
  @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
1099
  .survey-workbench-embed .workbench{
1747
- padding: 14px 10px 36px;
1100
+ padding: 16px 12px 56px;
1748
1101
  }
1749
1102
 
1750
- .survey-workbench-embed .workbench-shell{
1751
- gap: 14px;
1103
+ .survey-workbench-embed .fbody{
1104
+ padding: 16px 15px 18px;
1752
1105
  }
1753
1106
 
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;
1107
+ .survey-workbench-embed .rhead{
1108
+ padding: 16px;
1765
1109
  }
1766
1110
 
1767
- .survey-workbench-embed .topbar{
1768
- gap: 14px;
1111
+ .survey-workbench-embed .foot{
1112
+ padding: 14px 15px;
1769
1113
  }
1770
1114
 
1771
- .survey-workbench-embed .topbar .meta-grid{
1772
- display: none;
1115
+ .survey-workbench-embed .rhead h1{
1116
+ font-size: 19px;
1773
1117
  }
1774
1118
 
1775
- .survey-workbench-embed .active-review-strip{
1119
+ /* current → proposed stack vertically; the arrow rotates to point down. */
1120
+ .survey-workbench-embed .diff{
1776
1121
  grid-template-columns: 1fr;
1777
1122
  gap: 10px;
1778
1123
  }
1779
1124
 
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{
1125
+ .survey-workbench-embed .diff .arrow{
1126
+ transform: rotate(90deg);
1786
1127
  justify-self: start;
1128
+ margin: 1px 0;
1787
1129
  }
1788
1130
 
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%;
1827
- 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;
1857
- }
1858
-
1859
- .survey-workbench-embed .field-label,
1860
- .survey-workbench-embed .eyebrow{
1861
- letter-spacing: 0.09em;
1862
- }
1863
-
1864
- .survey-workbench-embed .decision-button{
1131
+ /* Apply spans the header row as an easy thumb target. */
1132
+ .survey-workbench-embed .apply{
1133
+ flex: 1;
1865
1134
  min-height: 44px;
1866
1135
  }
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
1136
  }
1892
1137
 
1893
1138
  @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{
1139
+ /* The two primary actions go full-width and tall so they're the obvious,
1140
+ thumb-friendly call to action; the calibration toggle sits below them. */
1141
+ .survey-workbench-embed .decide{
1142
+ flex-direction: column;
1143
+ align-items: stretch;
1920
1144
  gap: 8px;
1921
1145
  }
1922
1146
 
1923
- .survey-workbench-embed .topbar .meta-item{
1924
- padding: 9px 10px;
1147
+ .survey-workbench-embed .btn{
1148
+ width: 100%;
1149
+ min-height: 46px;
1150
+ font-size: 15px;
1925
1151
  }
1926
1152
 
1927
- .survey-workbench-embed .candidate-card .field-stack .field-value,
1928
- .survey-workbench-embed .compact .field-value{
1929
- display: block;
1930
- text-align: left;
1153
+ .survey-workbench-embed .wrong{
1154
+ order: 0;
1155
+ margin-right: 0;
1156
+ justify-content: flex-start;
1157
+ min-height: 44px;
1931
1158
  }
1932
1159
 
1933
- .survey-workbench-embed .decision-buttons{
1160
+ .survey-workbench-embed .frow1{
1934
1161
  gap: 8px;
1935
1162
  }
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
1163
  }
1947
1164
 
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;
1165
+ /* The diff-collapse must also hold in host contexts without a query container
1166
+ (e.g. an embed that doesn't establish \`container-type\`): fall back to viewport. */
1167
+ @media (max-width: 620px) {
1168
+ .survey-workbench-embed .diff{
1169
+ grid-template-columns: 1fr;
1991
1170
  }
1992
1171
 
1993
- .survey-workbench-embed .focus-value span:last-child{
1994
- margin-top: 6px;
1172
+ .survey-workbench-embed .diff .arrow{
1173
+ transform: rotate(90deg);
1174
+ justify-self: start;
1995
1175
  }
1176
+ }
1996
1177
 
1997
- .survey-workbench-embed .candidate-value .field-value{
1998
- font-size: 17px;
1178
+ @media (prefers-reduced-motion: reduce) {
1179
+ .survey-workbench-embed *{
1180
+ transition: none !important;
1999
1181
  }
2000
1182
  }
2001
1183