@kontourai/survey 0.7.2 → 1.0.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.
@@ -161,11 +161,11 @@
161
161
  /* Local aliases preserve the existing workbench selectors while the values
162
162
  come from the shared Console Kit token contract. */
163
163
  --ink-1000: var(--k-bg);
164
- --ink-900: #0a0e13;
165
- --ink-850: #0d1219;
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
166
  --ink-800: var(--k-panel);
167
167
  --ink-750: var(--k-panel-raised);
168
- --ink-700: #1d2937;
168
+ --ink-700: color-mix(in srgb, var(--k-panel-raised) 80%, var(--k-line-strong));
169
169
  --paper: var(--k-text);
170
170
  --paper-dim: var(--k-text-muted);
171
171
  --paper-faint: var(--k-text-faint);
@@ -180,11 +180,52 @@
180
180
  --radius: var(--k-radius-md);
181
181
  --radius-sm: var(--k-radius-sm);
182
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);
191
+
183
192
  font-family: var(--k-font-ui);
184
193
  background: var(--ink-1000);
185
194
  color: var(--paper);
186
195
  }
187
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. */
202
+ .survey-workbench-embed[data-theme="light"]{
203
+ 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
+ --k-bg: #f5f4ef;
207
+ --k-panel: #ffffff;
208
+ --k-panel-raised: #fbfaf7;
209
+ --k-line: rgba(36, 40, 46, 0.12);
210
+ --k-line-strong: rgba(36, 40, 46, 0.20);
211
+ --k-text: #202124;
212
+ --k-text-muted: #5b626b;
213
+ --k-text-faint: #707782;
214
+ --k-positive: #168257;
215
+ --k-caution: #8a5a00;
216
+ --k-negative: #c83b3b;
217
+ --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
+ }
228
+
188
229
  .survey-workbench-embed *{
189
230
  box-sizing: border-box;
190
231
  }
@@ -194,14 +235,15 @@
194
235
  min-width: 320px;
195
236
  position: relative;
196
237
  background:
197
- radial-gradient(1100px 620px at 12% -8%, rgba(92, 224, 198, 0.12), transparent 60%),
198
- radial-gradient(900px 560px at 100% 0%, rgba(122, 162, 255, 0.12), transparent 55%),
199
- radial-gradient(800px 800px at 88% 110%, rgba(243, 177, 75, 0.07), transparent 60%),
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%),
200
241
  linear-gradient(180deg, var(--ink-1000), var(--ink-900) 55%, var(--ink-1000));
201
242
  background-attachment: fixed;
202
243
  }
203
244
 
204
- /* Grain + faint engineering grid for control-room atmosphere. */
245
+ /* Grain + faint engineering grid for control-room atmosphere.
246
+ Grain opacity is 0 in light mode via --grain-opacity. */
205
247
  .survey-workbench-embed::before{
206
248
  content: "";
207
249
  position: absolute;
@@ -209,10 +251,52 @@
209
251
  z-index: 0;
210
252
  pointer-events: none;
211
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");
212
- opacity: 0.04;
254
+ opacity: var(--grain-opacity);
213
255
  mix-blend-mode: screen;
214
256
  }
215
257
 
258
+ /* ---- Demo page chrome -------------------------------------------------- */
259
+ /* Light/dark toggle button on the demo wrapper around the workbench */
260
+ .survey-workbench-embed .demo-toolbar{
261
+ position: absolute;
262
+ top: 12px;
263
+ right: 14px;
264
+ z-index: 100;
265
+ display: flex;
266
+ align-items: center;
267
+ gap: 8px;
268
+ }
269
+
270
+ .survey-workbench-embed.theme-toggle{
271
+ display: flex;
272
+ align-items: center;
273
+ gap: 6px;
274
+ height: 32px;
275
+ padding: 0 12px;
276
+ border: 1px solid var(--line-strong);
277
+ border-radius: 999px;
278
+ background: color-mix(in srgb, var(--k-panel) 90%, transparent);
279
+ color: var(--paper-dim);
280
+ cursor: pointer;
281
+ font-family: var(--k-font-mono, "IBM Plex Mono", monospace);
282
+ font-size: 11px;
283
+ font-weight: 600;
284
+ letter-spacing: 0.06em;
285
+ backdrop-filter: blur(6px);
286
+ transition: background 0.16s ease, border-color 0.16s ease, color 0.16s ease;
287
+ }
288
+
289
+ .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);
293
+ }
294
+
295
+ .survey-workbench-embed.theme-toggle-icon{
296
+ font-size: 14px;
297
+ line-height: 1;
298
+ }
299
+
216
300
  .survey-workbench-embed button,
217
301
  .survey-workbench-embed textarea{
218
302
  font: inherit;
@@ -278,9 +362,9 @@
278
362
  border: 1px solid var(--line-strong);
279
363
  border-radius: var(--radius);
280
364
  background:
281
- linear-gradient(135deg, rgba(92, 224, 198, 0.08), transparent 42%),
365
+ linear-gradient(135deg, color-mix(in srgb, var(--k-brand) 8%, transparent), transparent 42%),
282
366
  linear-gradient(180deg, var(--ink-800), var(--ink-850));
283
- box-shadow: 0 24px 60px -34px rgba(0, 0, 0, 0.9), inset 0 1px 0 rgba(255, 255, 255, 0.03);
367
+ box-shadow: var(--k-shadow, 0 24px 60px -34px rgba(0, 0, 0, 0.9)), inset 0 1px 0 var(--line);
284
368
  animation: rise 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
285
369
  }
286
370
 
@@ -346,7 +430,11 @@
346
430
  padding: 11px 12px;
347
431
  border: 1px solid var(--line);
348
432
  border-radius: var(--radius-sm);
349
- background: rgba(8, 12, 18, 0.55);
433
+ background: color-mix(in srgb, var(--k-bg) 55%, var(--k-panel));
434
+ }
435
+
436
+ .survey-workbench-embed[data-theme="light"] .meta-item{
437
+ background: color-mix(in srgb, var(--k-bg) 70%, var(--k-panel));
350
438
  }
351
439
 
352
440
  .survey-workbench-embed .meta-value{
@@ -397,7 +485,7 @@
397
485
  position: absolute;
398
486
  inset: 0;
399
487
  z-index: 40;
400
- background: rgba(0, 0, 0, 0.55);
488
+ background: color-mix(in srgb, var(--k-bg) 55%, transparent);
401
489
  backdrop-filter: blur(2px);
402
490
  opacity: 0;
403
491
  transition: opacity 0.22s ease;
@@ -420,7 +508,7 @@
420
508
  height: 30px;
421
509
  border: 1px solid var(--line-strong);
422
510
  border-radius: 999px;
423
- background: rgba(8, 12, 18, 0.8);
511
+ background: color-mix(in srgb, var(--k-bg) 80%, transparent);
424
512
  color: var(--paper-faint);
425
513
  cursor: pointer;
426
514
  font-size: 14px;
@@ -437,7 +525,7 @@
437
525
  border-radius: var(--radius);
438
526
  background: linear-gradient(180deg, var(--ink-800), var(--ink-850));
439
527
  padding: 14px;
440
- box-shadow: 0 22px 50px -38px rgba(0, 0, 0, 0.9);
528
+ box-shadow: var(--k-shadow, 0 22px 50px -38px rgba(0, 0, 0, 0.9));
441
529
  animation: rise 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
442
530
  animation-delay: 0.05s;
443
531
  }
@@ -474,7 +562,7 @@
474
562
  border-radius: var(--radius-sm);
475
563
  margin-top: 8px;
476
564
  padding: 9px 10px;
477
- background: rgba(8, 12, 18, 0.5);
565
+ background: color-mix(in srgb, var(--k-bg) 50%, var(--k-panel));
478
566
  color: var(--paper);
479
567
  cursor: pointer;
480
568
  text-align: left;
@@ -484,12 +572,12 @@
484
572
  .survey-workbench-embed .queue-row:hover{
485
573
  transform: translateX(2px);
486
574
  border-color: var(--line-strong);
487
- background: rgba(16, 24, 34, 0.8);
575
+ background: color-mix(in srgb, var(--k-bg) 20%, var(--k-panel));
488
576
  }
489
577
 
490
578
  .survey-workbench-embed .queue-row.is-active{
491
579
  border-left-width: 3px;
492
- background: linear-gradient(90deg, rgba(92, 224, 198, 0.12), rgba(8, 12, 18, 0.5) 60%);
580
+ background: color-mix(in srgb, var(--k-brand) 8%, var(--k-panel));
493
581
  box-shadow: inset 0 0 0 1px var(--line-strong);
494
582
  }
495
583
 
@@ -533,22 +621,22 @@
533
621
  border-radius: 999px;
534
622
  text-align: center;
535
623
  color: var(--paper-dim);
536
- background: rgba(8, 12, 18, 0.6);
624
+ background: color-mix(in srgb, var(--k-bg) 60%, var(--k-panel));
537
625
  letter-spacing: 0.08em;
538
626
  font-size: 9.5px;
539
627
  }
540
628
 
541
- .survey-workbench-embed .queue-row[data-queue-status="resolved"] .state-label{ color: var(--verify); border-color: rgba(52, 211, 153, 0.4); }
542
- .survey-workbench-embed .queue-row[data-queue-status="rejected"] .state-label{ color: var(--reject); border-color: rgba(255, 111, 111, 0.4); }
543
- .survey-workbench-embed .queue-row[data-queue-status="escalated"] .state-label{ color: var(--hold); border-color: rgba(243, 177, 75, 0.4); }
544
- .survey-workbench-embed .queue-row[data-queue-status="in-review"] .state-label{ color: var(--accent); border-color: rgba(92, 224, 198, 0.4); }
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); }
545
633
 
546
634
  .survey-workbench-embed .next-button{
547
635
  min-height: 34px;
548
636
  padding: 0 14px;
549
637
  border: 1px solid var(--line-strong);
550
638
  border-radius: 999px;
551
- background: rgba(92, 224, 198, 0.08);
639
+ background: color-mix(in srgb, var(--k-brand) 8%, transparent);
552
640
  color: var(--accent);
553
641
  cursor: pointer;
554
642
  font-family: "IBM Plex Mono", ui-monospace, monospace;
@@ -559,7 +647,7 @@
559
647
  }
560
648
 
561
649
  .survey-workbench-embed .next-button:hover{
562
- background: rgba(92, 224, 198, 0.16);
650
+ background: color-mix(in srgb, var(--k-brand) 16%, transparent);
563
651
  border-color: var(--accent);
564
652
  }
565
653
 
@@ -576,7 +664,7 @@
576
664
  display: grid;
577
665
  gap: 2px;
578
666
  padding: 10px;
579
- background: rgba(8, 12, 18, 0.6);
667
+ background: color-mix(in srgb, var(--k-bg) 60%, var(--k-panel));
580
668
  }
581
669
 
582
670
  .survey-workbench-embed .summary-grid .meta-value{
@@ -633,7 +721,7 @@
633
721
  border: 1px solid var(--line);
634
722
  border-radius: var(--radius-sm);
635
723
  padding: 8px;
636
- background: rgba(6, 9, 13, 0.45);
724
+ background: color-mix(in srgb, var(--k-bg) 45%, transparent);
637
725
  }
638
726
 
639
727
  .survey-workbench-embed .event-sequence{
@@ -713,13 +801,13 @@
713
801
  display: grid;
714
802
  gap: 12px;
715
803
  min-width: 0;
716
- border: 1px solid rgba(92, 224, 198, 0.28);
804
+ border: 1px solid color-mix(in srgb, var(--k-brand) 28%, transparent);
717
805
  border-radius: var(--radius);
718
806
  padding: 14px;
719
807
  background:
720
- linear-gradient(135deg, rgba(92, 224, 198, 0.12), transparent 34%),
808
+ linear-gradient(135deg, color-mix(in srgb, var(--k-brand) 12%, transparent), transparent 34%),
721
809
  linear-gradient(180deg, var(--ink-800), var(--ink-850));
722
- box-shadow: 0 26px 60px -42px rgba(0, 0, 0, 0.95), inset 0 1px 0 rgba(255, 255, 255, 0.04);
810
+ box-shadow: var(--k-shadow, 0 26px 60px -42px rgba(0, 0, 0, 0.95)), inset 0 1px 0 var(--line);
723
811
  }
724
812
 
725
813
  .survey-workbench-embed .focus-head,
@@ -742,7 +830,7 @@
742
830
  border: 1px solid var(--line);
743
831
  border-radius: var(--radius-sm);
744
832
  padding: 10px 12px;
745
- background: rgba(6, 9, 13, 0.56);
833
+ background: color-mix(in srgb, var(--k-bg) 56%, var(--k-panel));
746
834
  }
747
835
 
748
836
  .survey-workbench-embed .focus-value strong{
@@ -764,8 +852,8 @@
764
852
  }
765
853
 
766
854
  .survey-workbench-embed .focus-value.is-proposed{
767
- border-color: rgba(122, 162, 255, 0.34);
768
- background: linear-gradient(180deg, rgba(122, 162, 255, 0.1), rgba(6, 9, 13, 0.56));
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)));
769
857
  }
770
858
 
771
859
  .survey-workbench-embed .focus-value.is-proposed strong{
@@ -808,12 +896,12 @@
808
896
  place-items: center;
809
897
  border-radius: 999px;
810
898
  border: 1px solid var(--line-strong);
811
- background: var(--ink-750);
899
+ background: var(--vs-bg);
812
900
  color: var(--paper-faint);
813
901
  font-family: "Fraunces", Georgia, serif;
814
902
  font-style: italic;
815
903
  font-size: 13px;
816
- box-shadow: 0 10px 26px -12px rgba(0, 0, 0, 0.9);
904
+ box-shadow: var(--k-shadow, 0 10px 26px -12px rgba(0, 0, 0, 0.9));
817
905
  }
818
906
 
819
907
  .survey-workbench-embed .candidate-card,
@@ -823,7 +911,7 @@
823
911
  border: 1px solid var(--line);
824
912
  border-radius: var(--radius);
825
913
  background: linear-gradient(180deg, var(--ink-800), var(--ink-850));
826
- box-shadow: 0 26px 60px -42px rgba(0, 0, 0, 0.95);
914
+ box-shadow: var(--k-shadow, 0 26px 60px -42px rgba(0, 0, 0, 0.95));
827
915
  }
828
916
 
829
917
  .survey-workbench-embed .candidate-card{
@@ -840,7 +928,7 @@
840
928
 
841
929
  /* The proposed candidate (2nd card) is the incoming change — flag it. */
842
930
  .survey-workbench-embed .candidate-card:nth-child(2){
843
- border-color: rgba(122, 162, 255, 0.32);
931
+ border-color: color-mix(in srgb, var(--k-active) 32%, transparent);
844
932
  }
845
933
 
846
934
  .survey-workbench-embed .candidate-card:nth-child(2)::after{
@@ -848,12 +936,12 @@
848
936
  position: absolute;
849
937
  inset: 0;
850
938
  pointer-events: none;
851
- background: radial-gradient(420px 200px at 80% -10%, rgba(122, 162, 255, 0.12), transparent 70%);
939
+ background: radial-gradient(420px 200px at 80% -10%, color-mix(in srgb, var(--k-active) 12%, transparent), transparent 70%);
852
940
  }
853
941
 
854
942
  .survey-workbench-embed .candidate-card.is-selected{
855
- border-color: rgba(52, 211, 153, 0.55);
856
- box-shadow: 0 26px 60px -36px rgba(0, 0, 0, 0.95), inset 0 0 0 1px rgba(52, 211, 153, 0.35), inset 0 0 60px -30px rgba(52, 211, 153, 0.6);
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);
857
945
  }
858
946
 
859
947
  .survey-workbench-embed .candidate-card.is-unselected{
@@ -894,8 +982,8 @@
894
982
 
895
983
  .survey-workbench-embed .is-selected .state-label{
896
984
  color: var(--verify);
897
- border-color: rgba(52, 211, 153, 0.5);
898
- background: rgba(52, 211, 153, 0.12);
985
+ border-color: color-mix(in srgb, var(--verify) 50%, transparent);
986
+ background: color-mix(in srgb, var(--verify) 12%, transparent);
899
987
  }
900
988
 
901
989
  /* The value — the single most important datapoint on the screen. */
@@ -949,9 +1037,9 @@
949
1037
  display: inline-block;
950
1038
  margin-top: 5px;
951
1039
  padding: 4px 9px;
952
- border: 1px solid rgba(92, 224, 198, 0.35);
1040
+ border: 1px solid color-mix(in srgb, var(--k-brand) 35%, transparent);
953
1041
  border-radius: 999px;
954
- background: rgba(92, 224, 198, 0.1);
1042
+ background: color-mix(in srgb, var(--k-brand) 10%, transparent);
955
1043
  color: var(--accent);
956
1044
  font-size: 11.5px;
957
1045
  font-weight: 600;
@@ -967,6 +1055,94 @@
967
1055
  color: var(--paper-dim) !important;
968
1056
  }
969
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{
1065
+ display: -webkit-box;
1066
+ -webkit-box-orient: vertical;
1067
+ -webkit-line-clamp: 3;
1068
+ overflow: hidden;
1069
+ }
1070
+
1071
+ .survey-workbench-embed .excerpt-clamp.is-expanded .field-value,
1072
+ .survey-workbench-embed .rationale-clamp.is-expanded .field-value{
1073
+ display: block;
1074
+ -webkit-line-clamp: unset;
1075
+ overflow: visible;
1076
+ }
1077
+
1078
+ .survey-workbench-embed .clamp-toggle{
1079
+ display: inline;
1080
+ margin-left: 4px;
1081
+ padding: 0;
1082
+ border: none;
1083
+ background: none;
1084
+ color: var(--accent);
1085
+ cursor: pointer;
1086
+ font-family: "IBM Plex Mono", ui-monospace, monospace;
1087
+ font-size: 10.5px;
1088
+ font-weight: 600;
1089
+ letter-spacing: 0.04em;
1090
+ text-decoration: underline;
1091
+ text-underline-offset: 2px;
1092
+ vertical-align: baseline;
1093
+ }
1094
+
1095
+ .survey-workbench-embed .clamp-toggle:hover{
1096
+ color: var(--paper);
1097
+ }
1098
+
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
+
1103
+ .survey-workbench-embed .history-overflow{
1104
+ display: none;
1105
+ }
1106
+
1107
+ .survey-workbench-embed .history-expander.is-expanded .history-overflow{
1108
+ display: contents;
1109
+ }
1110
+
1111
+ .survey-workbench-embed .history-expand-btn{
1112
+ display: inline-flex;
1113
+ align-items: center;
1114
+ gap: 4px;
1115
+ margin-top: 6px;
1116
+ padding: 3px 10px;
1117
+ border: 1px solid var(--line-strong);
1118
+ border-radius: 999px;
1119
+ background: color-mix(in srgb, var(--k-brand) 6%, transparent);
1120
+ color: var(--accent);
1121
+ cursor: pointer;
1122
+ font-family: "IBM Plex Mono", ui-monospace, monospace;
1123
+ font-size: 10px;
1124
+ font-weight: 600;
1125
+ letter-spacing: 0.06em;
1126
+ transition: background 0.14s ease, border-color 0.14s ease;
1127
+ }
1128
+
1129
+ .survey-workbench-embed .history-expand-btn:hover{
1130
+ background: color-mix(in srgb, var(--k-brand) 14%, transparent);
1131
+ border-color: var(--accent);
1132
+ }
1133
+
1134
+ .survey-workbench-embed .history-expander.is-expanded .history-expand-btn .expand-label{
1135
+ display: none;
1136
+ }
1137
+
1138
+ .survey-workbench-embed .history-expander.is-expanded .history-expand-btn .collapse-label{
1139
+ display: inline;
1140
+ }
1141
+
1142
+ .survey-workbench-embed .history-expand-btn .collapse-label{
1143
+ display: none;
1144
+ }
1145
+
970
1146
  /* ---- Decision column -------------------------------------------------- */
971
1147
 
972
1148
  .survey-workbench-embed .decision-column{
@@ -994,7 +1170,7 @@
994
1170
  border-radius: var(--radius-sm);
995
1171
  padding: 10px;
996
1172
  color: var(--paper);
997
- background: rgba(6, 9, 13, 0.7);
1173
+ background: color-mix(in srgb, var(--k-bg) 70%, var(--k-panel));
998
1174
  font-family: "IBM Plex Mono", ui-monospace, monospace;
999
1175
  font-size: 12px;
1000
1176
  line-height: 1.5;
@@ -1007,7 +1183,7 @@
1007
1183
  .survey-workbench-embed textarea:focus{
1008
1184
  border-color: var(--accent);
1009
1185
  outline: none;
1010
- box-shadow: 0 0 0 3px rgba(92, 224, 198, 0.18);
1186
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--k-brand) 18%, transparent);
1011
1187
  }
1012
1188
 
1013
1189
  /* Decision actions — color-coded to outcome (accept / keep / reject). */
@@ -1022,7 +1198,7 @@
1022
1198
  min-height: 42px;
1023
1199
  border: 1px solid var(--line-strong);
1024
1200
  border-radius: var(--radius-sm);
1025
- background: rgba(8, 12, 18, 0.6);
1201
+ background: color-mix(in srgb, var(--k-bg) 60%, var(--k-panel));
1026
1202
  color: var(--paper);
1027
1203
  cursor: pointer;
1028
1204
  font-weight: 700;
@@ -1037,18 +1213,18 @@
1037
1213
  outline: none;
1038
1214
  }
1039
1215
 
1040
- .survey-workbench-embed .decision-button:nth-child(1):hover{ border-color: var(--verify); box-shadow: 0 10px 24px -14px rgba(52, 211, 153, 0.8); }
1041
- .survey-workbench-embed .decision-button:nth-child(2):hover{ border-color: var(--hold); box-shadow: 0 10px 24px -14px rgba(243, 177, 75, 0.8); }
1042
- .survey-workbench-embed .decision-button:nth-child(3):hover{ border-color: var(--reject); box-shadow: 0 10px 24px -14px rgba(255, 111, 111, 0.8); }
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); }
1043
1219
 
1044
1220
  .survey-workbench-embed .decision-button.is-active{
1045
- color: var(--ink-1000);
1221
+ color: var(--k-bg);
1046
1222
  border-color: transparent;
1047
1223
  }
1048
1224
 
1049
- .survey-workbench-embed .decision-button:nth-child(1).is-active{ background: var(--verify); box-shadow: 0 14px 30px -14px rgba(52, 211, 153, 0.9); }
1050
- .survey-workbench-embed .decision-button:nth-child(2).is-active{ background: var(--hold); box-shadow: 0 14px 30px -14px rgba(243, 177, 75, 0.9); }
1051
- .survey-workbench-embed .decision-button:nth-child(3).is-active{ background: var(--reject); box-shadow: 0 14px 30px -14px rgba(255, 111, 111, 0.9); }
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); }
1052
1228
 
1053
1229
  .survey-workbench-embed .effect{
1054
1230
  display: grid;
@@ -1082,7 +1258,7 @@
1082
1258
  border: 1px solid var(--line-strong);
1083
1259
  border-radius: 999px;
1084
1260
  padding: 5px 11px;
1085
- background: rgba(122, 162, 255, 0.08);
1261
+ background: color-mix(in srgb, var(--k-active) 8%, transparent);
1086
1262
  color: var(--proposed);
1087
1263
  font-family: "IBM Plex Mono", ui-monospace, monospace;
1088
1264
  font-size: 11px;
@@ -1090,7 +1266,7 @@
1090
1266
  }
1091
1267
 
1092
1268
  .survey-workbench-embed .tag.is-empty{
1093
- background: rgba(8, 12, 18, 0.6);
1269
+ background: color-mix(in srgb, var(--k-bg) 60%, var(--k-panel));
1094
1270
  color: var(--paper-faint);
1095
1271
  }
1096
1272
 
@@ -1188,7 +1364,7 @@
1188
1364
  border: 1px solid var(--line);
1189
1365
  border-radius: var(--radius-sm);
1190
1366
  padding: 10px 11px;
1191
- background: rgba(6, 9, 13, 0.55);
1367
+ background: color-mix(in srgb, var(--k-bg) 55%, var(--k-panel));
1192
1368
  }
1193
1369
 
1194
1370
  .survey-workbench-embed .preview-section h3{
@@ -1214,7 +1390,7 @@
1214
1390
  .survey-workbench-embed .preview-section.is-neutral{
1215
1391
  border-style: dashed;
1216
1392
  border-color: var(--line);
1217
- background: rgba(6, 9, 13, 0.35);
1393
+ background: color-mix(in srgb, var(--k-bg) 35%, var(--k-panel));
1218
1394
  }
1219
1395
 
1220
1396
  .survey-workbench-embed .preview-section.is-neutral h3{
@@ -1287,7 +1463,7 @@
1287
1463
  border-radius: var(--radius-sm);
1288
1464
  background: var(--ink-1000);
1289
1465
  padding: 11px;
1290
- color: #b6f3df;
1466
+ color: color-mix(in srgb, var(--k-positive) 80%, var(--k-text));
1291
1467
  font-family: "IBM Plex Mono", ui-monospace, monospace;
1292
1468
  font-size: 11px;
1293
1469
  line-height: 1.55;
@@ -1347,9 +1523,9 @@
1347
1523
  border-radius: var(--radius);
1348
1524
  padding: 13px 14px;
1349
1525
  background:
1350
- linear-gradient(90deg, rgba(92, 224, 198, 0.12), transparent 46%),
1526
+ linear-gradient(90deg, color-mix(in srgb, var(--k-brand) 12%, transparent), transparent 46%),
1351
1527
  linear-gradient(180deg, var(--ink-800), var(--ink-850));
1352
- box-shadow: 0 18px 44px -36px rgba(0, 0, 0, 0.9);
1528
+ box-shadow: var(--k-shadow, 0 18px 44px -36px rgba(0, 0, 0, 0.9));
1353
1529
  }
1354
1530
 
1355
1531
  .survey-workbench-embed .active-review-copy,
@@ -1414,7 +1590,7 @@
1414
1590
  padding: 11px 14px;
1415
1591
  margin-bottom: 14px;
1416
1592
  background:
1417
- linear-gradient(90deg, rgba(92, 224, 198, 0.08), transparent 46%),
1593
+ linear-gradient(90deg, color-mix(in srgb, var(--k-brand) 8%, transparent), transparent 46%),
1418
1594
  linear-gradient(180deg, var(--ink-800), var(--ink-850));
1419
1595
  animation: rise 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
1420
1596
  }
@@ -1440,7 +1616,7 @@
1440
1616
  padding: 0 14px;
1441
1617
  border: 1px solid var(--line-strong);
1442
1618
  border-radius: 999px;
1443
- background: rgba(92, 224, 198, 0.08);
1619
+ background: color-mix(in srgb, var(--k-brand) 8%, transparent);
1444
1620
  color: var(--accent);
1445
1621
  cursor: pointer;
1446
1622
  font-family: "IBM Plex Mono", ui-monospace, monospace;
@@ -1451,7 +1627,7 @@
1451
1627
  }
1452
1628
 
1453
1629
  .survey-workbench-embed .mobile-queue-open:hover{
1454
- background: rgba(92, 224, 198, 0.16);
1630
+ background: color-mix(in srgb, var(--k-brand) 16%, transparent);
1455
1631
  border-color: var(--accent);
1456
1632
  }
1457
1633
 
@@ -1692,6 +1868,41 @@
1692
1868
  }
1693
1869
  }
1694
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
+ }
1889
+
1890
+ @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
+
1695
1906
  @media (max-width: 420px) {
1696
1907
  .survey-workbench-embed h1{
1697
1908
  font-size: 23px;