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