@kontourai/survey 0.4.10 → 0.4.12

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.
@@ -156,7 +156,6 @@
156
156
  the visual language is built to highlight the value diff, the decision, the
157
157
  confidence, and the provenance — in that order. */
158
158
 
159
- @import url("https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,600;9..144,700;9..144,900&family=Hanken+Grotesk:wght@400;500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&display=swap");
160
159
 
161
160
  .survey-workbench-embed{
162
161
  color-scheme: dark;
@@ -233,13 +232,13 @@
233
232
  z-index: 1;
234
233
  container-type: inline-size;
235
234
  min-height: 100vh;
236
- padding: 30px 26px 60px;
235
+ padding: 22px 22px 50px;
237
236
  }
238
237
 
239
238
  .survey-workbench-embed .workbench-shell{
240
239
  display: grid;
241
240
  grid-template-rows: auto minmax(0, 1fr);
242
- gap: 22px;
241
+ gap: 16px;
243
242
  max-width: 1360px;
244
243
  margin: 0 auto;
245
244
  }
@@ -274,10 +273,10 @@
274
273
 
275
274
  .survey-workbench-embed .topbar{
276
275
  display: grid;
277
- grid-template-columns: minmax(0, 1fr) minmax(0, 520px);
278
- gap: 26px;
276
+ grid-template-columns: minmax(0, 1fr);
277
+ gap: 12px;
279
278
  align-items: center;
280
- padding: 22px 26px;
279
+ padding: 15px 17px;
281
280
  border: 1px solid var(--line-strong);
282
281
  border-radius: var(--radius);
283
282
  background:
@@ -297,12 +296,12 @@
297
296
  }
298
297
 
299
298
  .survey-workbench-embed h1{
300
- margin-top: 8px;
299
+ margin-top: 6px;
301
300
  font-family: "Fraunces", Georgia, "Times New Roman", serif;
302
301
  font-optical-sizing: auto;
303
302
  font-weight: 600;
304
- font-size: clamp(26px, 3.4vw, 38px);
305
- line-height: 1.04;
303
+ font-size: clamp(21px, 2vw, 27px);
304
+ line-height: 1.08;
306
305
  letter-spacing: -0.01em;
307
306
  overflow-wrap: anywhere;
308
307
  color: var(--paper);
@@ -310,10 +309,10 @@
310
309
 
311
310
  .survey-workbench-embed .review-question{
312
311
  max-width: 720px;
313
- margin-top: 10px;
312
+ margin-top: 7px;
314
313
  color: var(--paper-dim);
315
- font-size: 15px;
316
- line-height: 1.45;
314
+ font-size: 13px;
315
+ line-height: 1.4;
317
316
  }
318
317
 
319
318
  .survey-workbench-embed .review-question strong{
@@ -323,7 +322,7 @@
323
322
  }
324
323
 
325
324
  .survey-workbench-embed .meta-grid{
326
- display: grid;
325
+ display: none;
327
326
  grid-template-columns: repeat(4, minmax(110px, 1fr));
328
327
  gap: 10px;
329
328
  width: 100%;
@@ -361,13 +360,13 @@
361
360
  .survey-workbench-embed .queue-layout{
362
361
  display: grid;
363
362
  grid-template-columns: 280px minmax(0, 1fr);
364
- gap: 22px;
363
+ gap: 16px;
365
364
  align-items: start;
366
365
  }
367
366
 
368
367
  .survey-workbench-embed .queue-panel{
369
368
  display: grid;
370
- gap: 18px;
369
+ gap: 14px;
371
370
  position: sticky;
372
371
  top: 18px;
373
372
  }
@@ -382,7 +381,7 @@
382
381
  border: 1px solid var(--line);
383
382
  border-radius: var(--radius);
384
383
  background: linear-gradient(180deg, var(--ink-800), var(--ink-850));
385
- padding: 18px;
384
+ padding: 14px;
386
385
  box-shadow: 0 22px 50px -38px rgba(0, 0, 0, 0.9);
387
386
  animation: rise 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
388
387
  animation-delay: 0.05s;
@@ -401,7 +400,7 @@
401
400
  .survey-workbench-embed .session-audit h2{
402
401
  font-family: "Fraunces", Georgia, serif;
403
402
  font-weight: 600;
404
- font-size: 18px;
403
+ font-size: 16px;
405
404
  line-height: 1.1;
406
405
  letter-spacing: -0.01em;
407
406
  }
@@ -414,12 +413,12 @@
414
413
  gap: 10px;
415
414
  align-items: center;
416
415
  width: 100%;
417
- min-height: 60px;
416
+ min-height: 54px;
418
417
  border: 1px solid var(--line);
419
418
  border-left: 3px solid var(--paper-faint);
420
419
  border-radius: var(--radius-sm);
421
- margin-top: 9px;
422
- padding: 11px 12px;
420
+ margin-top: 8px;
421
+ padding: 9px 10px;
423
422
  background: rgba(8, 12, 18, 0.5);
424
423
  color: var(--paper);
425
424
  cursor: pointer;
@@ -521,13 +520,13 @@
521
520
  .survey-workbench-embed .summary-grid .meta-item{
522
521
  display: grid;
523
522
  gap: 2px;
524
- padding: 12px;
523
+ padding: 10px;
525
524
  background: rgba(8, 12, 18, 0.6);
526
525
  }
527
526
 
528
527
  .survey-workbench-embed .summary-grid .meta-value{
529
528
  font-family: "Fraunces", Georgia, serif;
530
- font-size: 28px;
529
+ font-size: 20px;
531
530
  font-weight: 700;
532
531
  line-height: 1;
533
532
  color: var(--paper);
@@ -544,7 +543,7 @@
544
543
  .survey-workbench-embed .session-audit-head{
545
544
  display: grid;
546
545
  grid-template-columns: minmax(0, 1fr) auto;
547
- gap: 10px;
546
+ gap: 8px;
548
547
  align-items: start;
549
548
  }
550
549
 
@@ -559,8 +558,8 @@
559
558
 
560
559
  .survey-workbench-embed .audit-grid .meta-value{
561
560
  font-family: "IBM Plex Mono", ui-monospace, monospace;
562
- font-size: 12px;
563
- line-height: 1.35;
561
+ font-size: 11px;
562
+ line-height: 1.3;
564
563
  }
565
564
 
566
565
  .survey-workbench-embed .session-event-list{
@@ -573,20 +572,20 @@
573
572
 
574
573
  .survey-workbench-embed .session-event-list li{
575
574
  display: grid;
576
- grid-template-columns: 30px minmax(0, 1fr);
577
- gap: 9px;
575
+ grid-template-columns: 24px minmax(0, 1fr);
576
+ gap: 8px;
578
577
  min-width: 0;
579
578
  border: 1px solid var(--line);
580
579
  border-radius: var(--radius-sm);
581
- padding: 9px 10px;
580
+ padding: 8px;
582
581
  background: rgba(6, 9, 13, 0.45);
583
582
  }
584
583
 
585
584
  .survey-workbench-embed .event-sequence{
586
585
  display: grid;
587
586
  place-items: center;
588
- width: 28px;
589
- height: 28px;
587
+ width: 24px;
588
+ height: 24px;
590
589
  border: 1px solid var(--line-strong);
591
590
  border-radius: 999px;
592
591
  color: var(--accent);
@@ -605,13 +604,13 @@
605
604
  .survey-workbench-embed .session-event-list strong{
606
605
  color: var(--paper);
607
606
  font-family: "IBM Plex Mono", ui-monospace, monospace;
608
- font-size: 12px;
607
+ font-size: 11px;
609
608
  }
610
609
 
611
610
  .survey-workbench-embed .session-event-list small{
612
611
  margin-top: 3px;
613
612
  color: var(--paper-faint);
614
- font-size: 11.5px;
613
+ font-size: 10.5px;
615
614
  line-height: 1.35;
616
615
  }
617
616
 
@@ -642,13 +641,13 @@
642
641
  "focus"
643
642
  "decision"
644
643
  "candidates";
645
- gap: 22px;
644
+ gap: 14px;
646
645
  align-items: start;
647
646
  }
648
647
 
649
648
  .survey-workbench-embed .review-main{
650
649
  display: grid;
651
- gap: 18px;
650
+ gap: 14px;
652
651
  min-width: 0;
653
652
  }
654
653
 
@@ -657,11 +656,11 @@
657
656
  .survey-workbench-embed .review-focus{
658
657
  grid-area: focus;
659
658
  display: grid;
660
- gap: 16px;
659
+ gap: 12px;
661
660
  min-width: 0;
662
661
  border: 1px solid rgba(92, 224, 198, 0.28);
663
662
  border-radius: var(--radius);
664
- padding: 18px;
663
+ padding: 14px;
665
664
  background:
666
665
  linear-gradient(135deg, rgba(92, 224, 198, 0.12), transparent 34%),
667
666
  linear-gradient(180deg, var(--ink-800), var(--ink-850));
@@ -671,7 +670,7 @@
671
670
  .survey-workbench-embed .focus-head,
672
671
  .survey-workbench-embed .focus-values{
673
672
  display: grid;
674
- gap: 12px;
673
+ gap: 10px;
675
674
  }
676
675
 
677
676
  .survey-workbench-embed .focus-head{
@@ -687,23 +686,23 @@
687
686
  min-width: 0;
688
687
  border: 1px solid var(--line);
689
688
  border-radius: var(--radius-sm);
690
- padding: 13px 14px;
689
+ padding: 10px 12px;
691
690
  background: rgba(6, 9, 13, 0.56);
692
691
  }
693
692
 
694
693
  .survey-workbench-embed .focus-value strong{
695
694
  display: block;
696
- margin-top: 8px;
695
+ margin-top: 6px;
697
696
  color: var(--paper);
698
697
  font-family: "IBM Plex Mono", ui-monospace, monospace;
699
- font-size: clamp(22px, 3vw, 34px);
700
- line-height: 1.05;
698
+ font-size: clamp(18px, 1.8vw, 25px);
699
+ line-height: 1.14;
701
700
  overflow-wrap: anywhere;
702
701
  }
703
702
 
704
703
  .survey-workbench-embed .focus-value span:last-child{
705
704
  display: block;
706
- margin-top: 8px;
705
+ margin-top: 6px;
707
706
  color: var(--paper-faint);
708
707
  font-family: "IBM Plex Mono", ui-monospace, monospace;
709
708
  font-size: 11px;
@@ -721,13 +720,13 @@
721
720
  .survey-workbench-embed .focus-evidence{
722
721
  display: grid;
723
722
  grid-template-columns: minmax(110px, 0.65fr) minmax(0, 1.2fr) minmax(0, 1.4fr);
724
- gap: 12px;
723
+ gap: 10px;
725
724
  margin: 0;
726
725
  }
727
726
 
728
727
  .survey-workbench-embed .focus-evidence .field{
729
728
  border-top: 1px solid var(--line);
730
- padding-top: 12px;
729
+ padding-top: 10px;
731
730
  }
732
731
 
733
732
  /* ---- Candidate comparison: the hero of the console -------------------- */
@@ -736,7 +735,7 @@
736
735
  grid-area: candidates;
737
736
  display: grid;
738
737
  grid-template-columns: repeat(2, minmax(0, 1fr));
739
- gap: 18px;
738
+ gap: 12px;
740
739
  position: relative;
741
740
  }
742
741
 
@@ -744,12 +743,12 @@
744
743
  .survey-workbench-embed .candidate-grid::before{
745
744
  content: "vs";
746
745
  position: absolute;
747
- top: 26px;
746
+ top: 18px;
748
747
  left: 50%;
749
748
  transform: translateX(-50%);
750
749
  z-index: 3;
751
- width: 38px;
752
- height: 38px;
750
+ width: 30px;
751
+ height: 30px;
753
752
  display: grid;
754
753
  place-items: center;
755
754
  border-radius: 999px;
@@ -758,7 +757,7 @@
758
757
  color: var(--paper-faint);
759
758
  font-family: "Fraunces", Georgia, serif;
760
759
  font-style: italic;
761
- font-size: 15px;
760
+ font-size: 13px;
762
761
  box-shadow: 0 10px 26px -12px rgba(0, 0, 0, 0.9);
763
762
  }
764
763
 
@@ -775,9 +774,9 @@
775
774
  .survey-workbench-embed .candidate-card{
776
775
  display: grid;
777
776
  grid-template-rows: auto auto minmax(0, 1fr);
778
- gap: 16px;
779
- min-height: 460px;
780
- padding: 20px;
777
+ gap: 11px;
778
+ min-height: auto;
779
+ padding: 14px;
781
780
  position: relative;
782
781
  overflow: hidden;
783
782
  animation: rise 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
@@ -809,7 +808,7 @@
809
808
 
810
809
  .survey-workbench-embed .card-head{
811
810
  display: flex;
812
- gap: 12px;
811
+ gap: 10px;
813
812
  justify-content: space-between;
814
813
  align-items: flex-start;
815
814
  position: relative;
@@ -826,10 +825,10 @@
826
825
  }
827
826
 
828
827
  .survey-workbench-embed .role{
829
- margin-top: 4px;
828
+ margin-top: 3px;
830
829
  font-family: "Fraunces", Georgia, serif;
831
830
  font-weight: 600;
832
- font-size: 22px;
831
+ font-size: 18px;
833
832
  letter-spacing: -0.01em;
834
833
  color: var(--paper);
835
834
  }
@@ -849,16 +848,16 @@
849
848
  position: relative;
850
849
  z-index: 1;
851
850
  border-block: 1px solid var(--line);
852
- padding: 18px 0;
851
+ padding: 10px 0;
853
852
  }
854
853
 
855
854
  .survey-workbench-embed .candidate-value .field-value{
856
- margin-top: 10px;
855
+ margin-top: 7px;
857
856
  font-family: "IBM Plex Mono", ui-monospace, monospace;
858
- font-size: clamp(26px, 3vw, 40px);
857
+ font-size: clamp(16px, 1.35vw, 20px);
859
858
  font-weight: 600;
860
- line-height: 1.05;
861
- letter-spacing: -0.02em;
859
+ line-height: 1.22;
860
+ letter-spacing: 0;
862
861
  color: var(--paper);
863
862
  }
864
863
 
@@ -872,34 +871,34 @@
872
871
 
873
872
  .survey-workbench-embed .field-stack{
874
873
  display: grid;
875
- gap: 14px;
874
+ gap: 9px;
876
875
  position: relative;
877
876
  z-index: 1;
878
877
  align-content: start;
879
878
  }
880
879
 
881
880
  .survey-workbench-embed .field-value{
882
- margin-top: 5px;
883
- font-size: 14px;
881
+ margin-top: 4px;
882
+ font-size: 12.5px;
884
883
  }
885
884
 
886
885
  /* Source refs / locators / ids read as data. */
887
886
  .survey-workbench-embed .candidate-card .field-stack .field-value{
888
887
  font-family: "IBM Plex Mono", ui-monospace, monospace;
889
- font-size: 12.5px;
888
+ font-size: 11.5px;
890
889
  color: var(--paper-dim);
891
890
  }
892
891
 
893
892
  /* Highlight extraction confidence (5th field in the stack) as a chip. */
894
893
  .survey-workbench-embed .candidate-card .field-stack > .field:nth-child(5) .field-value{
895
894
  display: inline-block;
896
- margin-top: 6px;
897
- padding: 5px 11px;
895
+ margin-top: 5px;
896
+ padding: 4px 9px;
898
897
  border: 1px solid rgba(92, 224, 198, 0.35);
899
898
  border-radius: 999px;
900
899
  background: rgba(92, 224, 198, 0.1);
901
900
  color: var(--accent);
902
- font-size: 13px;
901
+ font-size: 11.5px;
903
902
  font-weight: 600;
904
903
  }
905
904
 
@@ -919,7 +918,7 @@
919
918
  grid-area: decision;
920
919
  display: grid;
921
920
  grid-template-columns: minmax(0, 1fr);
922
- gap: 18px;
921
+ gap: 12px;
923
922
  animation: rise 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
924
923
  animation-delay: 0.15s;
925
924
  }
@@ -927,22 +926,22 @@
927
926
  .survey-workbench-embed .decision-row,
928
927
  .survey-workbench-embed .payload-panel,
929
928
  .survey-workbench-embed .surface-preview{
930
- padding: 20px;
929
+ padding: 14px;
931
930
  }
932
931
 
933
932
  .survey-workbench-embed textarea{
934
933
  display: block;
935
934
  width: 100%;
936
- min-height: 104px;
937
- margin-top: 10px;
935
+ min-height: 74px;
936
+ margin-top: 8px;
938
937
  resize: vertical;
939
938
  border: 1px solid var(--line-strong);
940
939
  border-radius: var(--radius-sm);
941
- padding: 12px;
940
+ padding: 10px;
942
941
  color: var(--paper);
943
942
  background: rgba(6, 9, 13, 0.7);
944
943
  font-family: "IBM Plex Mono", ui-monospace, monospace;
945
- font-size: 13px;
944
+ font-size: 12px;
946
945
  line-height: 1.5;
947
946
  }
948
947
 
@@ -960,19 +959,19 @@
960
959
  .survey-workbench-embed .decision-buttons{
961
960
  display: grid;
962
961
  grid-template-columns: repeat(3, minmax(0, 1fr));
963
- gap: 10px;
964
- margin-top: 16px;
962
+ gap: 8px;
963
+ margin-top: 0;
965
964
  }
966
965
 
967
966
  .survey-workbench-embed .decision-button{
968
- min-height: 50px;
967
+ min-height: 42px;
969
968
  border: 1px solid var(--line-strong);
970
969
  border-radius: var(--radius-sm);
971
970
  background: rgba(8, 12, 18, 0.6);
972
971
  color: var(--paper);
973
972
  cursor: pointer;
974
973
  font-weight: 700;
975
- font-size: 13px;
974
+ font-size: 12px;
976
975
  letter-spacing: 0.01em;
977
976
  transition: transform 0.14s ease, border-color 0.14s ease, background 0.14s ease, box-shadow 0.14s ease;
978
977
  }
@@ -999,23 +998,23 @@
999
998
  .survey-workbench-embed .effect{
1000
999
  display: grid;
1001
1000
  gap: 7px;
1002
- margin-top: 16px;
1001
+ margin-top: 12px;
1003
1002
  border-top: 1px solid var(--line);
1004
- padding-top: 14px;
1003
+ padding-top: 11px;
1005
1004
  }
1006
1005
 
1007
1006
  .survey-workbench-embed .effect .field-value{
1008
- font-size: 14px;
1009
- line-height: 1.5;
1007
+ font-size: 12.5px;
1008
+ line-height: 1.45;
1010
1009
  color: var(--paper-dim);
1011
1010
  }
1012
1011
 
1013
1012
  .survey-workbench-embed .feedback-tags{
1014
1013
  display: grid;
1015
- gap: 9px;
1016
- margin-top: 16px;
1014
+ gap: 8px;
1015
+ margin-top: 12px;
1017
1016
  border-top: 1px solid var(--line);
1018
- padding-top: 14px;
1017
+ padding-top: 11px;
1019
1018
  }
1020
1019
 
1021
1020
  .survey-workbench-embed .tag-row{
@@ -1044,7 +1043,7 @@
1044
1043
 
1045
1044
  .survey-workbench-embed .surface-preview{
1046
1045
  display: grid;
1047
- gap: 14px;
1046
+ gap: 11px;
1048
1047
  }
1049
1048
 
1050
1049
  .survey-workbench-embed .surface-head{
@@ -1057,7 +1056,7 @@
1057
1056
  .survey-workbench-embed .surface-head h2{
1058
1057
  font-family: "Fraunces", Georgia, serif;
1059
1058
  font-weight: 600;
1060
- font-size: 19px;
1059
+ font-size: 16px;
1061
1060
  letter-spacing: -0.01em;
1062
1061
  }
1063
1062
 
@@ -1072,22 +1071,22 @@
1072
1071
  .survey-workbench-embed .preview-section-grid{
1073
1072
  display: grid;
1074
1073
  grid-template-columns: repeat(2, minmax(0, 1fr));
1075
- gap: 10px;
1074
+ gap: 8px;
1076
1075
  }
1077
1076
 
1078
1077
  .survey-workbench-embed .preview-section{
1079
1078
  min-width: 0;
1080
1079
  border: 1px solid var(--line);
1081
1080
  border-radius: var(--radius-sm);
1082
- padding: 13px 14px;
1081
+ padding: 10px 11px;
1083
1082
  background: rgba(6, 9, 13, 0.55);
1084
1083
  }
1085
1084
 
1086
1085
  .survey-workbench-embed .preview-section h3{
1087
- margin-bottom: 10px;
1086
+ margin-bottom: 7px;
1088
1087
  color: var(--accent);
1089
1088
  font-family: "IBM Plex Mono", ui-monospace, monospace;
1090
- font-size: 11px;
1089
+ font-size: 10px;
1091
1090
  font-weight: 600;
1092
1091
  letter-spacing: 0.1em;
1093
1092
  text-transform: uppercase;
@@ -1119,22 +1118,31 @@
1119
1118
  background: linear-gradient(180deg, var(--ink-850), var(--ink-900));
1120
1119
  }
1121
1120
 
1122
- .survey-workbench-embed .payload-panel h2.field-label::before{
1121
+ .survey-workbench-embed .payload-panel summary.field-label{
1122
+ cursor: pointer;
1123
+ list-style: none;
1124
+ }
1125
+
1126
+ .survey-workbench-embed .payload-panel summary.field-label::-webkit-details-marker{
1127
+ display: none;
1128
+ }
1129
+
1130
+ .survey-workbench-embed .payload-panel summary.field-label::before{
1123
1131
  content: "› ";
1124
1132
  color: var(--verify);
1125
1133
  }
1126
1134
 
1127
1135
  .survey-workbench-embed pre{
1128
- max-height: 460px;
1136
+ max-height: 280px;
1129
1137
  margin: 12px 0 0;
1130
1138
  overflow: auto;
1131
1139
  border: 1px solid var(--line);
1132
1140
  border-radius: var(--radius-sm);
1133
1141
  background: var(--ink-1000);
1134
- padding: 14px;
1142
+ padding: 11px;
1135
1143
  color: #b6f3df;
1136
1144
  font-family: "IBM Plex Mono", ui-monospace, monospace;
1137
- font-size: 11.5px;
1145
+ font-size: 11px;
1138
1146
  line-height: 1.55;
1139
1147
  white-space: pre-wrap;
1140
1148
  word-break: break-word;
@@ -221,8 +221,8 @@ export function renderReviewWorkbenchHtml(state, events) {
221
221
  ${renderWorkbenchHeader(state)}
222
222
  <div class="content-grid">
223
223
  ${renderReviewFocus(state)}
224
- ${renderCandidateComparison(state)}
225
224
  ${renderDecisionColumn(state)}
225
+ ${renderCandidateComparison(state)}
226
226
  </div>
227
227
  </section>
228
228
  `;
@@ -242,8 +242,8 @@ function renderReviewQueueSessionHtml(session, events) {
242
242
  </aside>
243
243
  <div class="content-grid">
244
244
  ${renderReviewFocus(state)}
245
- ${renderCandidateComparison(state)}
246
245
  ${renderDecisionColumn(state)}
246
+ ${renderCandidateComparison(state)}
247
247
  </div>
248
248
  </div>
249
249
  </section>
@@ -363,9 +363,6 @@ function renderActiveReviewStrip(session, state) {
363
363
  <span class="state-label">${escapeHtml(status)}</span>
364
364
  <button class="next-button" type="button" data-testid="active-next-unresolved">Next unresolved</button>
365
365
  </div>
366
- <div class="active-review-decisions" aria-label="Quick review decision">
367
- ${renderDecisionButtons(state)}
368
- </div>
369
366
  </section>
370
367
  `;
371
368
  }
@@ -451,10 +448,6 @@ function renderDecisionControls(state) {
451
448
  const activeDefinition = state.decision ? workbenchDecisionDefinitions[state.decision] : undefined;
452
449
  return `
453
450
  <section class="decision-row">
454
- <label class="field">
455
- <span class="field-label">Reviewer note</span>
456
- <textarea id="reviewer-note" data-testid="reviewer-note">${escapeHtml(state.note)}</textarea>
457
- </label>
458
451
  <div class="decision-buttons">
459
452
  ${renderDecisionButtons(state)}
460
453
  </div>
@@ -462,6 +455,10 @@ function renderDecisionControls(state) {
462
455
  <span class="field-label">Decision effect</span>
463
456
  <span class="field-value">${escapeHtml(activeDefinition?.effect ?? "No decision selected.")}</span>
464
457
  </div>
458
+ <label class="field">
459
+ <span class="field-label">Reviewer note</span>
460
+ <textarea id="reviewer-note" data-testid="reviewer-note">${escapeHtml(state.note)}</textarea>
461
+ </label>
465
462
  ${renderFeedbackTags(state)}
466
463
  </section>
467
464
  `;
@@ -487,10 +484,10 @@ function renderDecisionButtons(state) {
487
484
  function renderDecisionPayload(state) {
488
485
  const decision = buildReviewDecision(state);
489
486
  return `
490
- <section class="payload-panel">
491
- <h2 class="field-label">ReviewDecision payload</h2>
487
+ <details class="payload-panel">
488
+ <summary class="field-label">ReviewDecision payload</summary>
492
489
  <pre data-testid="decision-payload">${escapeHtml(JSON.stringify(decision ?? null, null, 2))}</pre>
493
- </section>
490
+ </details>
494
491
  `;
495
492
  }
496
493
  function renderSurfacePreview(state) {
@@ -80,13 +80,13 @@ p {
80
80
  z-index: 1;
81
81
  container-type: inline-size;
82
82
  min-height: 100vh;
83
- padding: 30px 26px 60px;
83
+ padding: 22px 22px 50px;
84
84
  }
85
85
 
86
86
  .workbench-shell {
87
87
  display: grid;
88
88
  grid-template-rows: auto minmax(0, 1fr);
89
- gap: 22px;
89
+ gap: 16px;
90
90
  max-width: 1360px;
91
91
  margin: 0 auto;
92
92
  }
@@ -121,10 +121,10 @@ p {
121
121
 
122
122
  .topbar {
123
123
  display: grid;
124
- grid-template-columns: minmax(0, 1fr) minmax(0, 520px);
125
- gap: 26px;
124
+ grid-template-columns: minmax(0, 1fr);
125
+ gap: 12px;
126
126
  align-items: center;
127
- padding: 22px 26px;
127
+ padding: 15px 17px;
128
128
  border: 1px solid var(--line-strong);
129
129
  border-radius: var(--radius);
130
130
  background:
@@ -144,12 +144,12 @@ p {
144
144
  }
145
145
 
146
146
  h1 {
147
- margin-top: 8px;
147
+ margin-top: 6px;
148
148
  font-family: "Fraunces", Georgia, "Times New Roman", serif;
149
149
  font-optical-sizing: auto;
150
150
  font-weight: 600;
151
- font-size: clamp(26px, 3.4vw, 38px);
152
- line-height: 1.04;
151
+ font-size: clamp(21px, 2vw, 27px);
152
+ line-height: 1.08;
153
153
  letter-spacing: -0.01em;
154
154
  overflow-wrap: anywhere;
155
155
  color: var(--paper);
@@ -157,10 +157,10 @@ h1 {
157
157
 
158
158
  .review-question {
159
159
  max-width: 720px;
160
- margin-top: 10px;
160
+ margin-top: 7px;
161
161
  color: var(--paper-dim);
162
- font-size: 15px;
163
- line-height: 1.45;
162
+ font-size: 13px;
163
+ line-height: 1.4;
164
164
  }
165
165
 
166
166
  .review-question strong {
@@ -170,7 +170,7 @@ h1 {
170
170
  }
171
171
 
172
172
  .meta-grid {
173
- display: grid;
173
+ display: none;
174
174
  grid-template-columns: repeat(4, minmax(110px, 1fr));
175
175
  gap: 10px;
176
176
  width: 100%;
@@ -208,13 +208,13 @@ h1 {
208
208
  .queue-layout {
209
209
  display: grid;
210
210
  grid-template-columns: 280px minmax(0, 1fr);
211
- gap: 22px;
211
+ gap: 16px;
212
212
  align-items: start;
213
213
  }
214
214
 
215
215
  .queue-panel {
216
216
  display: grid;
217
- gap: 18px;
217
+ gap: 14px;
218
218
  position: sticky;
219
219
  top: 18px;
220
220
  }
@@ -229,7 +229,7 @@ h1 {
229
229
  border: 1px solid var(--line);
230
230
  border-radius: var(--radius);
231
231
  background: linear-gradient(180deg, var(--ink-800), var(--ink-850));
232
- padding: 18px;
232
+ padding: 14px;
233
233
  box-shadow: 0 22px 50px -38px rgba(0, 0, 0, 0.9);
234
234
  animation: rise 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
235
235
  animation-delay: 0.05s;
@@ -248,7 +248,7 @@ h1 {
248
248
  .session-audit h2 {
249
249
  font-family: "Fraunces", Georgia, serif;
250
250
  font-weight: 600;
251
- font-size: 18px;
251
+ font-size: 16px;
252
252
  line-height: 1.1;
253
253
  letter-spacing: -0.01em;
254
254
  }
@@ -261,12 +261,12 @@ h1 {
261
261
  gap: 10px;
262
262
  align-items: center;
263
263
  width: 100%;
264
- min-height: 60px;
264
+ min-height: 54px;
265
265
  border: 1px solid var(--line);
266
266
  border-left: 3px solid var(--paper-faint);
267
267
  border-radius: var(--radius-sm);
268
- margin-top: 9px;
269
- padding: 11px 12px;
268
+ margin-top: 8px;
269
+ padding: 9px 10px;
270
270
  background: rgba(8, 12, 18, 0.5);
271
271
  color: var(--paper);
272
272
  cursor: pointer;
@@ -368,13 +368,13 @@ h1 {
368
368
  .summary-grid .meta-item {
369
369
  display: grid;
370
370
  gap: 2px;
371
- padding: 12px;
371
+ padding: 10px;
372
372
  background: rgba(8, 12, 18, 0.6);
373
373
  }
374
374
 
375
375
  .summary-grid .meta-value {
376
376
  font-family: "Fraunces", Georgia, serif;
377
- font-size: 28px;
377
+ font-size: 20px;
378
378
  font-weight: 700;
379
379
  line-height: 1;
380
380
  color: var(--paper);
@@ -391,7 +391,7 @@ h1 {
391
391
  .session-audit-head {
392
392
  display: grid;
393
393
  grid-template-columns: minmax(0, 1fr) auto;
394
- gap: 10px;
394
+ gap: 8px;
395
395
  align-items: start;
396
396
  }
397
397
 
@@ -406,8 +406,8 @@ h1 {
406
406
 
407
407
  .audit-grid .meta-value {
408
408
  font-family: "IBM Plex Mono", ui-monospace, monospace;
409
- font-size: 12px;
410
- line-height: 1.35;
409
+ font-size: 11px;
410
+ line-height: 1.3;
411
411
  }
412
412
 
413
413
  .session-event-list {
@@ -420,20 +420,20 @@ h1 {
420
420
 
421
421
  .session-event-list li {
422
422
  display: grid;
423
- grid-template-columns: 30px minmax(0, 1fr);
424
- gap: 9px;
423
+ grid-template-columns: 24px minmax(0, 1fr);
424
+ gap: 8px;
425
425
  min-width: 0;
426
426
  border: 1px solid var(--line);
427
427
  border-radius: var(--radius-sm);
428
- padding: 9px 10px;
428
+ padding: 8px;
429
429
  background: rgba(6, 9, 13, 0.45);
430
430
  }
431
431
 
432
432
  .event-sequence {
433
433
  display: grid;
434
434
  place-items: center;
435
- width: 28px;
436
- height: 28px;
435
+ width: 24px;
436
+ height: 24px;
437
437
  border: 1px solid var(--line-strong);
438
438
  border-radius: 999px;
439
439
  color: var(--accent);
@@ -452,13 +452,13 @@ h1 {
452
452
  .session-event-list strong {
453
453
  color: var(--paper);
454
454
  font-family: "IBM Plex Mono", ui-monospace, monospace;
455
- font-size: 12px;
455
+ font-size: 11px;
456
456
  }
457
457
 
458
458
  .session-event-list small {
459
459
  margin-top: 3px;
460
460
  color: var(--paper-faint);
461
- font-size: 11.5px;
461
+ font-size: 10.5px;
462
462
  line-height: 1.35;
463
463
  }
464
464
 
@@ -489,13 +489,13 @@ h1 {
489
489
  "focus"
490
490
  "decision"
491
491
  "candidates";
492
- gap: 22px;
492
+ gap: 14px;
493
493
  align-items: start;
494
494
  }
495
495
 
496
496
  .review-main {
497
497
  display: grid;
498
- gap: 18px;
498
+ gap: 14px;
499
499
  min-width: 0;
500
500
  }
501
501
 
@@ -504,11 +504,11 @@ h1 {
504
504
  .review-focus {
505
505
  grid-area: focus;
506
506
  display: grid;
507
- gap: 16px;
507
+ gap: 12px;
508
508
  min-width: 0;
509
509
  border: 1px solid rgba(92, 224, 198, 0.28);
510
510
  border-radius: var(--radius);
511
- padding: 18px;
511
+ padding: 14px;
512
512
  background:
513
513
  linear-gradient(135deg, rgba(92, 224, 198, 0.12), transparent 34%),
514
514
  linear-gradient(180deg, var(--ink-800), var(--ink-850));
@@ -518,7 +518,7 @@ h1 {
518
518
  .focus-head,
519
519
  .focus-values {
520
520
  display: grid;
521
- gap: 12px;
521
+ gap: 10px;
522
522
  }
523
523
 
524
524
  .focus-head {
@@ -534,23 +534,23 @@ h1 {
534
534
  min-width: 0;
535
535
  border: 1px solid var(--line);
536
536
  border-radius: var(--radius-sm);
537
- padding: 13px 14px;
537
+ padding: 10px 12px;
538
538
  background: rgba(6, 9, 13, 0.56);
539
539
  }
540
540
 
541
541
  .focus-value strong {
542
542
  display: block;
543
- margin-top: 8px;
543
+ margin-top: 6px;
544
544
  color: var(--paper);
545
545
  font-family: "IBM Plex Mono", ui-monospace, monospace;
546
- font-size: clamp(22px, 3vw, 34px);
547
- line-height: 1.05;
546
+ font-size: clamp(18px, 1.8vw, 25px);
547
+ line-height: 1.14;
548
548
  overflow-wrap: anywhere;
549
549
  }
550
550
 
551
551
  .focus-value span:last-child {
552
552
  display: block;
553
- margin-top: 8px;
553
+ margin-top: 6px;
554
554
  color: var(--paper-faint);
555
555
  font-family: "IBM Plex Mono", ui-monospace, monospace;
556
556
  font-size: 11px;
@@ -568,13 +568,13 @@ h1 {
568
568
  .focus-evidence {
569
569
  display: grid;
570
570
  grid-template-columns: minmax(110px, 0.65fr) minmax(0, 1.2fr) minmax(0, 1.4fr);
571
- gap: 12px;
571
+ gap: 10px;
572
572
  margin: 0;
573
573
  }
574
574
 
575
575
  .focus-evidence .field {
576
576
  border-top: 1px solid var(--line);
577
- padding-top: 12px;
577
+ padding-top: 10px;
578
578
  }
579
579
 
580
580
  /* ---- Candidate comparison: the hero of the console -------------------- */
@@ -583,7 +583,7 @@ h1 {
583
583
  grid-area: candidates;
584
584
  display: grid;
585
585
  grid-template-columns: repeat(2, minmax(0, 1fr));
586
- gap: 18px;
586
+ gap: 12px;
587
587
  position: relative;
588
588
  }
589
589
 
@@ -591,12 +591,12 @@ h1 {
591
591
  .candidate-grid::before {
592
592
  content: "vs";
593
593
  position: absolute;
594
- top: 26px;
594
+ top: 18px;
595
595
  left: 50%;
596
596
  transform: translateX(-50%);
597
597
  z-index: 3;
598
- width: 38px;
599
- height: 38px;
598
+ width: 30px;
599
+ height: 30px;
600
600
  display: grid;
601
601
  place-items: center;
602
602
  border-radius: 999px;
@@ -605,7 +605,7 @@ h1 {
605
605
  color: var(--paper-faint);
606
606
  font-family: "Fraunces", Georgia, serif;
607
607
  font-style: italic;
608
- font-size: 15px;
608
+ font-size: 13px;
609
609
  box-shadow: 0 10px 26px -12px rgba(0, 0, 0, 0.9);
610
610
  }
611
611
 
@@ -622,9 +622,9 @@ h1 {
622
622
  .candidate-card {
623
623
  display: grid;
624
624
  grid-template-rows: auto auto minmax(0, 1fr);
625
- gap: 16px;
626
- min-height: 460px;
627
- padding: 20px;
625
+ gap: 11px;
626
+ min-height: auto;
627
+ padding: 14px;
628
628
  position: relative;
629
629
  overflow: hidden;
630
630
  animation: rise 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
@@ -656,7 +656,7 @@ h1 {
656
656
 
657
657
  .card-head {
658
658
  display: flex;
659
- gap: 12px;
659
+ gap: 10px;
660
660
  justify-content: space-between;
661
661
  align-items: flex-start;
662
662
  position: relative;
@@ -673,10 +673,10 @@ h1 {
673
673
  }
674
674
 
675
675
  .role {
676
- margin-top: 4px;
676
+ margin-top: 3px;
677
677
  font-family: "Fraunces", Georgia, serif;
678
678
  font-weight: 600;
679
- font-size: 22px;
679
+ font-size: 18px;
680
680
  letter-spacing: -0.01em;
681
681
  color: var(--paper);
682
682
  }
@@ -696,16 +696,16 @@ h1 {
696
696
  position: relative;
697
697
  z-index: 1;
698
698
  border-block: 1px solid var(--line);
699
- padding: 18px 0;
699
+ padding: 10px 0;
700
700
  }
701
701
 
702
702
  .candidate-value .field-value {
703
- margin-top: 10px;
703
+ margin-top: 7px;
704
704
  font-family: "IBM Plex Mono", ui-monospace, monospace;
705
- font-size: clamp(26px, 3vw, 40px);
705
+ font-size: clamp(16px, 1.35vw, 20px);
706
706
  font-weight: 600;
707
- line-height: 1.05;
708
- letter-spacing: -0.02em;
707
+ line-height: 1.22;
708
+ letter-spacing: 0;
709
709
  color: var(--paper);
710
710
  }
711
711
 
@@ -719,34 +719,34 @@ h1 {
719
719
 
720
720
  .field-stack {
721
721
  display: grid;
722
- gap: 14px;
722
+ gap: 9px;
723
723
  position: relative;
724
724
  z-index: 1;
725
725
  align-content: start;
726
726
  }
727
727
 
728
728
  .field-value {
729
- margin-top: 5px;
730
- font-size: 14px;
729
+ margin-top: 4px;
730
+ font-size: 12.5px;
731
731
  }
732
732
 
733
733
  /* Source refs / locators / ids read as data. */
734
734
  .candidate-card .field-stack .field-value {
735
735
  font-family: "IBM Plex Mono", ui-monospace, monospace;
736
- font-size: 12.5px;
736
+ font-size: 11.5px;
737
737
  color: var(--paper-dim);
738
738
  }
739
739
 
740
740
  /* Highlight extraction confidence (5th field in the stack) as a chip. */
741
741
  .candidate-card .field-stack > .field:nth-child(5) .field-value {
742
742
  display: inline-block;
743
- margin-top: 6px;
744
- padding: 5px 11px;
743
+ margin-top: 5px;
744
+ padding: 4px 9px;
745
745
  border: 1px solid rgba(92, 224, 198, 0.35);
746
746
  border-radius: 999px;
747
747
  background: rgba(92, 224, 198, 0.1);
748
748
  color: var(--accent);
749
- font-size: 13px;
749
+ font-size: 11.5px;
750
750
  font-weight: 600;
751
751
  }
752
752
 
@@ -766,7 +766,7 @@ h1 {
766
766
  grid-area: decision;
767
767
  display: grid;
768
768
  grid-template-columns: minmax(0, 1fr);
769
- gap: 18px;
769
+ gap: 12px;
770
770
  animation: rise 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
771
771
  animation-delay: 0.15s;
772
772
  }
@@ -774,22 +774,22 @@ h1 {
774
774
  .decision-row,
775
775
  .payload-panel,
776
776
  .surface-preview {
777
- padding: 20px;
777
+ padding: 14px;
778
778
  }
779
779
 
780
780
  textarea {
781
781
  display: block;
782
782
  width: 100%;
783
- min-height: 104px;
784
- margin-top: 10px;
783
+ min-height: 74px;
784
+ margin-top: 8px;
785
785
  resize: vertical;
786
786
  border: 1px solid var(--line-strong);
787
787
  border-radius: var(--radius-sm);
788
- padding: 12px;
788
+ padding: 10px;
789
789
  color: var(--paper);
790
790
  background: rgba(6, 9, 13, 0.7);
791
791
  font-family: "IBM Plex Mono", ui-monospace, monospace;
792
- font-size: 13px;
792
+ font-size: 12px;
793
793
  line-height: 1.5;
794
794
  }
795
795
 
@@ -807,19 +807,19 @@ textarea:focus {
807
807
  .decision-buttons {
808
808
  display: grid;
809
809
  grid-template-columns: repeat(3, minmax(0, 1fr));
810
- gap: 10px;
811
- margin-top: 16px;
810
+ gap: 8px;
811
+ margin-top: 0;
812
812
  }
813
813
 
814
814
  .decision-button {
815
- min-height: 50px;
815
+ min-height: 42px;
816
816
  border: 1px solid var(--line-strong);
817
817
  border-radius: var(--radius-sm);
818
818
  background: rgba(8, 12, 18, 0.6);
819
819
  color: var(--paper);
820
820
  cursor: pointer;
821
821
  font-weight: 700;
822
- font-size: 13px;
822
+ font-size: 12px;
823
823
  letter-spacing: 0.01em;
824
824
  transition: transform 0.14s ease, border-color 0.14s ease, background 0.14s ease, box-shadow 0.14s ease;
825
825
  }
@@ -846,23 +846,23 @@ textarea:focus {
846
846
  .effect {
847
847
  display: grid;
848
848
  gap: 7px;
849
- margin-top: 16px;
849
+ margin-top: 12px;
850
850
  border-top: 1px solid var(--line);
851
- padding-top: 14px;
851
+ padding-top: 11px;
852
852
  }
853
853
 
854
854
  .effect .field-value {
855
- font-size: 14px;
856
- line-height: 1.5;
855
+ font-size: 12.5px;
856
+ line-height: 1.45;
857
857
  color: var(--paper-dim);
858
858
  }
859
859
 
860
860
  .feedback-tags {
861
861
  display: grid;
862
- gap: 9px;
863
- margin-top: 16px;
862
+ gap: 8px;
863
+ margin-top: 12px;
864
864
  border-top: 1px solid var(--line);
865
- padding-top: 14px;
865
+ padding-top: 11px;
866
866
  }
867
867
 
868
868
  .tag-row {
@@ -891,7 +891,7 @@ textarea:focus {
891
891
 
892
892
  .surface-preview {
893
893
  display: grid;
894
- gap: 14px;
894
+ gap: 11px;
895
895
  }
896
896
 
897
897
  .surface-head {
@@ -904,7 +904,7 @@ textarea:focus {
904
904
  .surface-head h2 {
905
905
  font-family: "Fraunces", Georgia, serif;
906
906
  font-weight: 600;
907
- font-size: 19px;
907
+ font-size: 16px;
908
908
  letter-spacing: -0.01em;
909
909
  }
910
910
 
@@ -919,22 +919,22 @@ textarea:focus {
919
919
  .preview-section-grid {
920
920
  display: grid;
921
921
  grid-template-columns: repeat(2, minmax(0, 1fr));
922
- gap: 10px;
922
+ gap: 8px;
923
923
  }
924
924
 
925
925
  .preview-section {
926
926
  min-width: 0;
927
927
  border: 1px solid var(--line);
928
928
  border-radius: var(--radius-sm);
929
- padding: 13px 14px;
929
+ padding: 10px 11px;
930
930
  background: rgba(6, 9, 13, 0.55);
931
931
  }
932
932
 
933
933
  .preview-section h3 {
934
- margin-bottom: 10px;
934
+ margin-bottom: 7px;
935
935
  color: var(--accent);
936
936
  font-family: "IBM Plex Mono", ui-monospace, monospace;
937
- font-size: 11px;
937
+ font-size: 10px;
938
938
  font-weight: 600;
939
939
  letter-spacing: 0.1em;
940
940
  text-transform: uppercase;
@@ -966,22 +966,31 @@ textarea:focus {
966
966
  background: linear-gradient(180deg, var(--ink-850), var(--ink-900));
967
967
  }
968
968
 
969
- .payload-panel h2.field-label::before {
969
+ .payload-panel summary.field-label {
970
+ cursor: pointer;
971
+ list-style: none;
972
+ }
973
+
974
+ .payload-panel summary.field-label::-webkit-details-marker {
975
+ display: none;
976
+ }
977
+
978
+ .payload-panel summary.field-label::before {
970
979
  content: "› ";
971
980
  color: var(--verify);
972
981
  }
973
982
 
974
983
  pre {
975
- max-height: 460px;
984
+ max-height: 280px;
976
985
  margin: 12px 0 0;
977
986
  overflow: auto;
978
987
  border: 1px solid var(--line);
979
988
  border-radius: var(--radius-sm);
980
989
  background: var(--ink-1000);
981
- padding: 14px;
990
+ padding: 11px;
982
991
  color: #b6f3df;
983
992
  font-family: "IBM Plex Mono", ui-monospace, monospace;
984
- font-size: 11.5px;
993
+ font-size: 11px;
985
994
  line-height: 1.55;
986
995
  white-space: pre-wrap;
987
996
  word-break: break-word;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kontourai/survey",
3
- "version": "0.4.10",
3
+ "version": "0.4.12",
4
4
  "description": "Producer-side source, extraction, candidate, and review contracts for projecting verified claims into Surface.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",