@morscherlab/mint-sdk 1.0.0-rc.4 → 1.0.0-rc.5

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.
Files changed (304) hide show
  1. package/dist/__tests__/components/AppTopBar.navigation.test.d.ts +1 -0
  2. package/dist/__tests__/components/DoseCalculatorVolumeField.test.d.ts +1 -0
  3. package/dist/__tests__/components/PlateMapEditorToolbarInternal.test.d.ts +1 -0
  4. package/dist/__tests__/components/PluginWorkspaceView.controls.test.d.ts +1 -0
  5. package/dist/__tests__/components/PluginWorkspaceView.navigation.test.d.ts +1 -0
  6. package/dist/__tests__/components/PluginWorkspaceView.shell.test.d.ts +1 -0
  7. package/dist/__tests__/components/ProtocolStep.presentation.test.d.ts +1 -0
  8. package/dist/__tests__/components/ProtocolStepEditor.state.test.d.ts +1 -0
  9. package/dist/__tests__/components/ProtocolStepParameterField.test.d.ts +1 -0
  10. package/dist/__tests__/components/ReagentList.presentation.test.d.ts +1 -0
  11. package/dist/__tests__/components/SampleSelector.colors.test.d.ts +1 -0
  12. package/dist/__tests__/components/SampleSelector.drag.test.d.ts +1 -0
  13. package/dist/__tests__/components/SampleSelector.groups.test.d.ts +1 -0
  14. package/dist/__tests__/components/SampleSelector.selection.test.d.ts +1 -0
  15. package/dist/__tests__/components/SampleSelectorSampleRow.test.d.ts +1 -0
  16. package/dist/__tests__/components/ScheduleCalendar.test.d.ts +1 -0
  17. package/dist/__tests__/components/SettingsModal.schema.test.d.ts +1 -0
  18. package/dist/__tests__/components/WellPlate.colors.test.d.ts +1 -0
  19. package/dist/__tests__/components/WellPlate.conditions.test.d.ts +1 -0
  20. package/dist/__tests__/components/WellPlate.geometry.test.d.ts +1 -0
  21. package/dist/__tests__/components/WellPlate.interaction.test.d.ts +1 -0
  22. package/dist/__tests__/components/WellPlate.legend.test.d.ts +1 -0
  23. package/dist/__tests__/components/WellPlate.rendering.test.d.ts +1 -0
  24. package/dist/__tests__/components/WellPlate.sampleDrop.test.d.ts +1 -0
  25. package/dist/__tests__/composables/autoGroup/classify.test.d.ts +1 -0
  26. package/dist/__tests__/composables/autoGroup/columns.test.d.ts +1 -0
  27. package/dist/__tests__/composables/autoGroup/compose.test.d.ts +1 -0
  28. package/dist/__tests__/composables/autoGroup/cooccurrence.test.d.ts +1 -0
  29. package/dist/__tests__/composables/autoGroup/fingerprint.test.d.ts +1 -0
  30. package/dist/__tests__/composables/autoGroup/integration.test.d.ts +1 -0
  31. package/dist/__tests__/composables/autoGroup/template.test.d.ts +1 -0
  32. package/dist/__tests__/composables/autoGroup/tokenize.test.d.ts +1 -0
  33. package/dist/__tests__/composables/useAutoGroupInputSources.test.d.ts +1 -0
  34. package/dist/__tests__/composables/useScheduleCalendarLayout.test.d.ts +1 -0
  35. package/dist/__tests__/docs/extractDocsComponents.test.d.ts +1 -0
  36. package/dist/__tests__/docs/extractDocsExports.test.d.ts +1 -0
  37. package/dist/__tests__/docs/extractDocsParsing.test.d.ts +1 -0
  38. package/dist/__tests__/docs/extractDocsTemplates.test.d.ts +1 -0
  39. package/dist/__tests__/docs/extractDocsTheme.test.d.ts +1 -0
  40. package/dist/components/AppSidebar.vue.d.ts +3 -3
  41. package/dist/components/AppTopBar.navigation.d.ts +11 -0
  42. package/dist/components/BaseButton.vue.d.ts +1 -1
  43. package/dist/components/BaseCheckbox.vue.d.ts +1 -1
  44. package/dist/components/BaseInput.vue.d.ts +2 -2
  45. package/dist/components/BasePill.vue.d.ts +1 -1
  46. package/dist/components/BaseRadioGroup.vue.d.ts +1 -1
  47. package/dist/components/BaseSelect.vue.d.ts +1 -1
  48. package/dist/components/BaseSlider.vue.d.ts +2 -2
  49. package/dist/components/BaseTextarea.vue.d.ts +2 -2
  50. package/dist/components/BaseToggle.vue.d.ts +1 -1
  51. package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +2 -2
  52. package/dist/components/BioTemplatePackWorkspaceView.vue.d.ts +1 -1
  53. package/dist/components/ColorSlider.vue.d.ts +2 -2
  54. package/dist/components/ConcentrationInput.vue.d.ts +2 -2
  55. package/dist/components/ControlWorkspaceView.vue.d.ts +3 -3
  56. package/dist/components/DatePicker.vue.d.ts +1 -1
  57. package/dist/components/DateTimePicker.vue.d.ts +2 -2
  58. package/dist/components/DoseCalculatorVolumeField.vue.d.ts +15 -0
  59. package/dist/components/DoseDesignWorkspaceView.vue.d.ts +1 -1
  60. package/dist/components/DropdownButton.vue.d.ts +1 -1
  61. package/dist/components/FileUploader.vue.d.ts +2 -2
  62. package/dist/components/FormulaInput.vue.d.ts +2 -2
  63. package/dist/components/IconButton.vue.d.ts +1 -1
  64. package/dist/components/LoadingSpinner.vue.d.ts +1 -1
  65. package/dist/components/MoleculeInput.vue.d.ts +2 -2
  66. package/dist/components/MultiSelect.vue.d.ts +1 -1
  67. package/dist/components/NumberInput.vue.d.ts +1 -1
  68. package/dist/components/PlateMapEditor.vue.d.ts +6 -6
  69. package/dist/components/PluginWorkspaceView.controls.d.ts +28 -0
  70. package/dist/components/PluginWorkspaceView.navigation.d.ts +29 -0
  71. package/dist/components/PluginWorkspaceView.props.d.ts +151 -0
  72. package/dist/components/PluginWorkspaceView.shell.d.ts +19 -0
  73. package/dist/components/PluginWorkspaceView.vue.d.ts +46 -195
  74. package/dist/components/ProgressBar.vue.d.ts +1 -1
  75. package/dist/components/ProtocolStep.presentation.d.ts +4 -0
  76. package/dist/components/ProtocolStepEditor.state.d.ts +18 -0
  77. package/dist/components/ProtocolStepParameterField.vue.d.ts +12 -0
  78. package/dist/components/ReagentList.presentation.d.ts +16 -0
  79. package/dist/components/ResourceCard.vue.d.ts +1 -1
  80. package/dist/components/SampleSelector.colors.d.ts +13 -0
  81. package/dist/components/SampleSelector.drag.d.ts +24 -0
  82. package/dist/components/SampleSelector.groups.d.ts +15 -0
  83. package/dist/components/SampleSelector.selection.d.ts +26 -0
  84. package/dist/components/SampleSelector.vue.d.ts +4 -1
  85. package/dist/components/SampleSelectorSampleRow.vue.d.ts +21 -0
  86. package/dist/components/SegmentedControl.vue.d.ts +1 -1
  87. package/dist/components/SequenceInput.vue.d.ts +2 -2
  88. package/dist/components/SequenceProgressBar.vue.d.ts +1 -1
  89. package/dist/components/SettingsModal.schema.d.ts +9 -0
  90. package/dist/components/StatusIndicator.vue.d.ts +1 -1
  91. package/dist/components/TagsInput.vue.d.ts +2 -2
  92. package/dist/components/TimePicker.vue.d.ts +2 -2
  93. package/dist/components/TimeRangeInput.vue.d.ts +1 -1
  94. package/dist/components/UnitInput.vue.d.ts +2 -2
  95. package/dist/components/WellPlate.colors.d.ts +9 -0
  96. package/dist/components/WellPlate.conditions.d.ts +26 -0
  97. package/dist/components/WellPlate.geometry.d.ts +23 -0
  98. package/dist/components/WellPlate.interaction.d.ts +71 -0
  99. package/dist/components/WellPlate.legend.d.ts +2 -0
  100. package/dist/components/WellPlate.rendering.d.ts +24 -0
  101. package/dist/components/WellPlate.sampleDrop.d.ts +8 -0
  102. package/dist/components/WellPlate.vue.d.ts +1 -1
  103. package/dist/components/index.js +2 -2
  104. package/dist/components/internal/ActionItemInternal.vue.d.ts +1 -1
  105. package/dist/components/internal/PlateMapEditorToolbarInternal.vue.d.ts +28 -0
  106. package/dist/{components-DafPc4rM.js → components-DtHA2bgp.js} +3754 -2991
  107. package/dist/components-DtHA2bgp.js.map +1 -0
  108. package/dist/composables/autoGroup/classKey.d.ts +4 -0
  109. package/dist/composables/autoGroup/classify.d.ts +28 -0
  110. package/dist/composables/autoGroup/colors.d.ts +2 -0
  111. package/dist/composables/autoGroup/columns.d.ts +10 -0
  112. package/dist/composables/autoGroup/compose.d.ts +8 -0
  113. package/dist/composables/autoGroup/cooccurrence.d.ts +2 -0
  114. package/dist/composables/autoGroup/csv-shim.d.ts +2 -0
  115. package/dist/composables/autoGroup/fingerprint.d.ts +3 -0
  116. package/dist/composables/autoGroup/index.d.ts +16 -0
  117. package/dist/composables/autoGroup/replicatePreGroup.d.ts +38 -0
  118. package/dist/composables/autoGroup/template.d.ts +15 -0
  119. package/dist/composables/autoGroup/tokenize.d.ts +8 -0
  120. package/dist/composables/autoGroupConstants.d.ts +1 -0
  121. package/dist/composables/autoGroupGrouping.d.ts +3 -0
  122. package/dist/composables/controlComponentBindings.d.ts +1 -1
  123. package/dist/composables/controlSchemaAdapters.d.ts +1 -1
  124. package/dist/composables/controlSchemaDoseDesign.d.ts +11 -0
  125. package/dist/composables/controlSchemaLayout.d.ts +1 -1
  126. package/dist/composables/controlSchemaModel.d.ts +5 -0
  127. package/dist/composables/controlSchemaNormalize.d.ts +1 -1
  128. package/dist/composables/controlSchemaTypes.d.ts +305 -0
  129. package/dist/composables/controlWorkspaceOptions.d.ts +1 -1
  130. package/dist/composables/formBuilderSchema.d.ts +18 -0
  131. package/dist/composables/index.js +3 -3
  132. package/dist/composables/pluginEndpointBuilder.d.ts +13 -0
  133. package/dist/composables/protocolTemplateCatalog.d.ts +26 -0
  134. package/dist/composables/useAutoGroup.d.ts +61 -74
  135. package/dist/composables/useAutoGroupInputSources.d.ts +32 -0
  136. package/dist/composables/useBioTemplateControls.d.ts +1 -1
  137. package/dist/composables/useBioTemplatePresetWorkspace.d.ts +1 -1
  138. package/dist/composables/useBioTemplateWorkspace.d.ts +1 -1
  139. package/dist/composables/useControlSchema.d.ts +4 -316
  140. package/dist/composables/useControlWorkspace.d.ts +1 -1
  141. package/dist/composables/useForm.d.ts +2 -33
  142. package/dist/composables/useFormBuilder.d.ts +2 -9
  143. package/dist/composables/useFormValidation.d.ts +34 -0
  144. package/dist/composables/usePluginClient.d.ts +1 -4
  145. package/dist/composables/useProtocolTemplates.d.ts +2 -24
  146. package/dist/composables/useScheduleCalendarLayout.d.ts +49 -0
  147. package/dist/{composables-BMkPQhVK.js → composables-Dlg8jenH.js} +33 -31
  148. package/dist/composables-Dlg8jenH.js.map +1 -0
  149. package/dist/index.js +4 -4
  150. package/dist/install.js +2 -2
  151. package/dist/styles.css +547 -516
  152. package/dist/templates/controlSchemaTypes.d.ts +1 -1
  153. package/dist/templates/index.js +1 -1
  154. package/dist/templates/templateAdapterTypes.d.ts +48 -0
  155. package/dist/templates/templateCreateOptions.d.ts +165 -0
  156. package/dist/templates/templateQpcrTypes.d.ts +42 -0
  157. package/dist/templates/types.d.ts +5 -250
  158. package/dist/{templates-bUAWMn5L.js → templates-DtdUvJ4c.js} +144 -136
  159. package/dist/templates-DtdUvJ4c.js.map +1 -0
  160. package/dist/types/auto-group.d.ts +79 -9
  161. package/dist/types/componentLabTypes.d.ts +161 -0
  162. package/dist/types/componentWorkflowTypes.d.ts +150 -0
  163. package/dist/types/components.d.ts +2 -311
  164. package/dist/{useProtocolTemplates-QZtHFFH2.js → useProtocolTemplates-Bm5vyH4_.js} +1220 -454
  165. package/dist/useProtocolTemplates-Bm5vyH4_.js.map +1 -0
  166. package/package.json +1 -1
  167. package/src/__tests__/components/AppTopBar.navigation.test.ts +70 -0
  168. package/src/__tests__/components/DoseCalculatorVolumeField.test.ts +53 -0
  169. package/src/__tests__/components/PlateMapEditorToolbarInternal.test.ts +54 -0
  170. package/src/__tests__/components/PluginWorkspaceView.controls.test.ts +156 -0
  171. package/src/__tests__/components/PluginWorkspaceView.navigation.test.ts +102 -0
  172. package/src/__tests__/components/PluginWorkspaceView.shell.test.ts +41 -0
  173. package/src/__tests__/components/ProtocolStep.presentation.test.ts +31 -0
  174. package/src/__tests__/components/ProtocolStepEditor.state.test.ts +165 -0
  175. package/src/__tests__/components/ProtocolStepParameterField.test.ts +44 -0
  176. package/src/__tests__/components/ReagentList.presentation.test.ts +68 -0
  177. package/src/__tests__/components/SampleSelector.colors.test.ts +49 -0
  178. package/src/__tests__/components/SampleSelector.drag.test.ts +100 -0
  179. package/src/__tests__/components/SampleSelector.groups.test.ts +81 -0
  180. package/src/__tests__/components/SampleSelector.selection.test.ts +70 -0
  181. package/src/__tests__/components/SampleSelector.test.ts +32 -0
  182. package/src/__tests__/components/SampleSelectorSampleRow.test.ts +37 -0
  183. package/src/__tests__/components/ScheduleCalendar.test.ts +44 -0
  184. package/src/__tests__/components/SettingsModal.schema.test.ts +97 -0
  185. package/src/__tests__/components/WellPlate.colors.test.ts +28 -0
  186. package/src/__tests__/components/WellPlate.conditions.test.ts +68 -0
  187. package/src/__tests__/components/WellPlate.geometry.test.ts +54 -0
  188. package/src/__tests__/components/WellPlate.interaction.test.ts +171 -0
  189. package/src/__tests__/components/WellPlate.legend.test.ts +13 -0
  190. package/src/__tests__/components/WellPlate.rendering.test.ts +122 -0
  191. package/src/__tests__/components/WellPlate.sampleDrop.test.ts +70 -0
  192. package/src/__tests__/composables/autoGroup/classify.test.ts +107 -0
  193. package/src/__tests__/composables/autoGroup/columns.test.ts +135 -0
  194. package/src/__tests__/composables/autoGroup/compose.test.ts +227 -0
  195. package/src/__tests__/composables/autoGroup/cooccurrence.test.ts +91 -0
  196. package/src/__tests__/composables/autoGroup/fingerprint.test.ts +50 -0
  197. package/src/__tests__/composables/autoGroup/integration.test.ts +79 -0
  198. package/src/__tests__/composables/autoGroup/template.test.ts +70 -0
  199. package/src/__tests__/composables/autoGroup/tokenize.test.ts +33 -0
  200. package/src/__tests__/composables/useAutoGroup.test.ts +129 -625
  201. package/src/__tests__/composables/useAutoGroupInputSources.test.ts +107 -0
  202. package/src/__tests__/composables/useControlSchema.test.ts +23 -0
  203. package/src/__tests__/composables/useScheduleCalendarLayout.test.ts +89 -0
  204. package/src/__tests__/docs/extractDocsComponents.test.ts +142 -0
  205. package/src/__tests__/docs/extractDocsExports.test.ts +77 -0
  206. package/src/__tests__/docs/extractDocsParsing.test.ts +69 -0
  207. package/src/__tests__/docs/extractDocsTemplates.test.ts +54 -0
  208. package/src/__tests__/docs/extractDocsTheme.test.ts +89 -0
  209. package/src/__tests__/docs/frontendDocsCatalog.test.ts +1 -1
  210. package/src/__tests__/fixtures/auto-group/mixed-lc-ms-batch.txt +187 -0
  211. package/src/components/AppSidebar.vue +2 -6
  212. package/src/components/AppTopBar.navigation.ts +62 -0
  213. package/src/components/AppTopBar.vue +17 -44
  214. package/src/components/AutoGroupModal.story.vue +50 -0
  215. package/src/components/AutoGroupModal.vue +441 -158
  216. package/src/components/ControlWorkspaceView.vue +2 -6
  217. package/src/components/DoseCalculator.vue +13 -73
  218. package/src/components/DoseCalculatorVolumeField.vue +61 -0
  219. package/src/components/ExperimentTimeline.vue +6 -31
  220. package/src/components/FormBuilder.vue +2 -7
  221. package/src/components/PlateMapEditor.vue +32 -106
  222. package/src/components/PluginWorkspaceView.controls.ts +182 -0
  223. package/src/components/PluginWorkspaceView.navigation.ts +106 -0
  224. package/src/components/PluginWorkspaceView.props.ts +174 -0
  225. package/src/components/PluginWorkspaceView.shell.ts +66 -0
  226. package/src/components/PluginWorkspaceView.vue +85 -404
  227. package/src/components/ProtocolStep.presentation.ts +31 -0
  228. package/src/components/ProtocolStepEditor.state.ts +104 -0
  229. package/src/components/ProtocolStepEditor.vue +48 -179
  230. package/src/components/ProtocolStepParameterField.vue +134 -0
  231. package/src/components/ReagentList.presentation.ts +105 -0
  232. package/src/components/ReagentList.vue +16 -79
  233. package/src/components/SampleSelector.colors.ts +43 -0
  234. package/src/components/SampleSelector.drag.ts +164 -0
  235. package/src/components/SampleSelector.groups.ts +109 -0
  236. package/src/components/SampleSelector.selection.ts +103 -0
  237. package/src/components/SampleSelector.vue +82 -349
  238. package/src/components/SampleSelectorSampleRow.vue +64 -0
  239. package/src/components/ScheduleCalendar.vue +44 -199
  240. package/src/components/SettingsModal.schema.ts +71 -0
  241. package/src/components/SettingsModal.vue +16 -46
  242. package/src/components/WellPlate.colors.ts +56 -0
  243. package/src/components/WellPlate.conditions.ts +100 -0
  244. package/src/components/WellPlate.geometry.ts +91 -0
  245. package/src/components/WellPlate.interaction.ts +272 -0
  246. package/src/components/WellPlate.legend.ts +8 -0
  247. package/src/components/WellPlate.rendering.ts +105 -0
  248. package/src/components/WellPlate.sampleDrop.ts +73 -0
  249. package/src/components/WellPlate.vue +102 -550
  250. package/src/components/internal/PlateMapEditorToolbarInternal.vue +128 -0
  251. package/src/composables/autoGroup/classKey.ts +5 -0
  252. package/src/composables/autoGroup/classify.ts +205 -0
  253. package/src/composables/autoGroup/colors.ts +6 -0
  254. package/src/composables/autoGroup/columns.ts +226 -0
  255. package/src/composables/autoGroup/compose.ts +156 -0
  256. package/src/composables/autoGroup/cooccurrence.ts +46 -0
  257. package/src/composables/autoGroup/csv-shim.ts +44 -0
  258. package/src/composables/autoGroup/fingerprint.ts +49 -0
  259. package/src/composables/autoGroup/index.ts +20 -0
  260. package/src/composables/autoGroup/replicatePreGroup.ts +90 -0
  261. package/src/composables/autoGroup/template.ts +126 -0
  262. package/src/composables/autoGroup/tokenize.ts +41 -0
  263. package/src/composables/autoGroup/vocab.json +67 -0
  264. package/src/composables/autoGroupConstants.ts +4 -0
  265. package/src/composables/autoGroupGrouping.ts +148 -0
  266. package/src/composables/controlComponentBindings.ts +1 -1
  267. package/src/composables/controlSchemaAdapters.ts +1 -1
  268. package/src/composables/controlSchemaDoseDesign.ts +215 -0
  269. package/src/composables/controlSchemaFormFields.ts +1 -1
  270. package/src/composables/controlSchemaLayout.ts +1 -1
  271. package/src/composables/controlSchemaModel.ts +163 -0
  272. package/src/composables/controlSchemaNormalize.ts +1 -1
  273. package/src/composables/controlSchemaTypes.ts +364 -0
  274. package/src/composables/controlWorkspaceOptions.ts +1 -1
  275. package/src/composables/formBuilderSchema.ts +153 -0
  276. package/src/composables/pluginEndpointBuilder.ts +203 -0
  277. package/src/composables/protocolTemplateCatalog.ts +325 -0
  278. package/src/composables/useAutoGroup.ts +395 -549
  279. package/src/composables/useAutoGroupInputSources.ts +147 -0
  280. package/src/composables/useBioTemplateControls.ts +1 -1
  281. package/src/composables/useBioTemplatePresetWorkspace.ts +1 -1
  282. package/src/composables/useBioTemplateWorkspace.ts +1 -1
  283. package/src/composables/useControlSchema.ts +21 -692
  284. package/src/composables/useControlWorkspace.ts +7 -13
  285. package/src/composables/useForm.ts +5 -187
  286. package/src/composables/useFormBuilder.ts +11 -153
  287. package/src/composables/useFormValidation.ts +154 -0
  288. package/src/composables/usePluginClient.ts +10 -193
  289. package/src/composables/useProtocolTemplates.ts +10 -328
  290. package/src/composables/useScheduleCalendarLayout.ts +287 -0
  291. package/src/styles/components/auto-group-modal.css +248 -310
  292. package/src/templates/controlSchemaTypes.ts +1 -1
  293. package/src/templates/templateAdapterTypes.ts +58 -0
  294. package/src/templates/templateCreateOptions.ts +208 -0
  295. package/src/templates/templateQpcrTypes.ts +48 -0
  296. package/src/templates/types.ts +79 -275
  297. package/src/types/auto-group.ts +107 -9
  298. package/src/types/componentLabTypes.ts +235 -0
  299. package/src/types/componentWorkflowTypes.ts +190 -0
  300. package/src/types/components.ts +74 -424
  301. package/dist/components-DafPc4rM.js.map +0 -1
  302. package/dist/composables-BMkPQhVK.js.map +0 -1
  303. package/dist/templates-bUAWMn5L.js.map +0 -1
  304. package/dist/useProtocolTemplates-QZtHFFH2.js.map +0 -1
package/dist/styles.css CHANGED
@@ -10355,6 +10355,8 @@ to {
10355
10355
  display: flex;
10356
10356
  flex-direction: column;
10357
10357
  }
10358
+
10359
+ /* --- Paste: free-form textarea (the self-designed input path) --- */
10358
10360
  .mint-auto-group__paste {
10359
10361
  position: relative;
10360
10362
  }
@@ -10573,328 +10575,377 @@ to {
10573
10575
  flex-wrap: wrap;
10574
10576
  gap: 0.375rem;
10575
10577
  }
10576
-
10577
- /* --- Outlier step --- */
10578
- .mint-auto-group__outlier-step {
10579
- display: flex;
10580
- flex-direction: column;
10581
- gap: 0.75rem;
10582
- }
10583
- .mint-auto-group__outlier-banner {
10584
- padding: 0.75rem 1rem;
10585
- background: var(--mint-warning-bg);
10586
- border: 1px solid rgba(245, 158, 11, 0.3);
10587
- border-radius: var(--radius-md);
10588
- font-size: 0.8125rem;
10589
- color: var(--text-primary);
10590
- }
10591
- .mint-auto-group__outlier-banner code {
10578
+ .mint-auto-group__field-value {
10592
10579
  font-family: 'Fira Code', monospace;
10593
- background: var(--bg-tertiary);
10594
- padding: 0.125rem 0.375rem;
10595
- border-radius: var(--radius-sm);
10596
- font-size: 0.8125rem;
10597
- }
10598
- .mint-auto-group__outlier-batch {
10599
- display: flex;
10600
- gap: 0.5rem;
10580
+ font-size: 11.5px;
10581
+ background: var(--bg-primary);
10582
+ border: 1px solid var(--border);
10583
+ padding: 2px 8px;
10584
+ border-radius: 9999px;
10585
+ color: var(--text-secondary);
10601
10586
  }
10602
- .mint-auto-group__outlier-list {
10587
+
10588
+ /* --- Navigation --- */
10589
+ .mint-auto-group__nav {
10603
10590
  display: flex;
10604
- flex-direction: column;
10591
+ align-items: center;
10605
10592
  gap: 0.5rem;
10606
- max-height: 300px;
10607
- overflow-y: auto;
10608
10593
  }
10609
- .mint-auto-group__outlier-item {
10610
- display: flex;
10611
- align-items: center;
10612
- justify-content: space-between;
10613
- padding: 0.5rem 0.75rem;
10614
- background: var(--bg-secondary);
10615
- border: 1px solid var(--border-color);
10616
- border-radius: var(--radius);
10594
+ .mint-auto-group__nav-spacer {
10595
+ flex: 1;
10617
10596
  }
10618
- .mint-auto-group__outlier-info {
10619
- display: flex;
10620
- align-items: center;
10621
- gap: 0.5rem;
10622
- min-width: 0;
10597
+
10598
+ /* --- Workspace step --- */
10599
+ .mint-auto-group__workspace { display: grid; grid-template-columns: 220px 1fr; gap: 16px; min-height: 480px; position: relative;
10623
10600
  }
10624
- .mint-auto-group__outlier-name {
10625
- font-family: 'Fira Code', monospace;
10626
- font-size: 0.8125rem;
10627
- color: var(--text-primary);
10628
- overflow: hidden;
10629
- text-overflow: ellipsis;
10630
- white-space: nowrap;
10601
+ .mint-auto-group__classes { background: var(--bg-primary); border: 1px solid var(--border); border-radius: var(--radius); padding: 12px; display: flex; flex-direction: column; gap: 4px;
10631
10602
  }
10632
- .mint-auto-group__outlier-badge {
10633
- font-size: 0.6875rem;
10634
- padding: 0.125rem 0.375rem;
10635
- border-radius: var(--radius-sm);
10636
- background: var(--bg-tertiary);
10637
- color: var(--text-muted);
10638
- white-space: nowrap;
10639
- flex-shrink: 0;
10603
+ .mint-auto-group__classes h3 { font-size: 11px; letter-spacing: .08em; color: var(--text-muted); text-transform: uppercase; margin: 0 0 8px;
10640
10604
  }
10641
- .mint-auto-group__outlier-actions {
10642
- display: flex;
10643
- gap: 0.25rem;
10644
- flex-shrink: 0;
10645
- margin-left: 0.75rem;
10605
+ .mint-auto-group__class { display: grid; grid-template-columns: 12px 1fr auto; align-items: center; gap: 8px; padding: 8px 10px; border-radius: var(--radius-sm); cursor: pointer; background: transparent; border: 1px solid transparent; font-size: 13px; color: var(--text-primary); text-align: left;
10646
10606
  }
10647
- .mint-auto-group__action-btn {
10648
- font-size: 0.6875rem;
10649
- padding: 0.25rem 0.5rem;
10650
- border: 1px solid var(--border-color);
10651
- border-radius: var(--radius-sm);
10652
- background: var(--bg-secondary);
10653
- color: var(--text-secondary);
10654
- cursor: pointer;
10655
- transition: all 0.1s;
10607
+ .mint-auto-group__class:hover { background: var(--bg-tertiary);
10656
10608
  }
10657
- .mint-auto-group__action-btn:hover {
10658
- background: var(--bg-hover);
10609
+ .mint-auto-group__class--active { background: var(--color-primary-soft); border-color: var(--color-primary); color: var(--color-primary); font-weight: 500;
10659
10610
  }
10660
- .mint-auto-group__action-btn:focus-visible {
10661
- outline: 2px solid var(--color-primary);
10662
- outline-offset: 1px;
10611
+ .mint-auto-group__class--qc .mint-auto-group__class-dot { background: var(--mint-warning);
10663
10612
  }
10664
- .mint-auto-group__action-btn--active {
10665
- background: var(--color-primary-soft);
10666
- border-color: var(--color-primary);
10667
- color: var(--color-primary);
10668
- font-weight: 500;
10613
+ .mint-auto-group__class-dot { width: 8px; height: 8px; border-radius: 9999px; background: var(--text-muted);
10669
10614
  }
10670
- .mint-auto-group__action-btn--active.mint-auto-group__action-btn--exclude {
10671
- background: var(--mint-error-bg);
10672
- border-color: var(--mint-error);
10673
- color: var(--mint-error);
10615
+ .mint-auto-group__class-count { font-family: 'Fira Code', monospace; font-size: 11.5px; color: var(--text-secondary); background: var(--bg-secondary); padding: 2px 8px; border-radius: 9999px; border: 1px solid var(--border);
10674
10616
  }
10675
- .mint-auto-group__action-btn--active.mint-auto-group__action-btn--qc {
10676
- background: rgba(107, 114, 128, 0.12);
10677
- border-color: var(--text-secondary);
10678
- color: var(--text-secondary);
10617
+ .mint-auto-group__schema { display: flex; flex-direction: column; gap: 12px; min-width: 0;
10679
10618
  }
10680
10619
 
10681
- /* --- Field step --- */
10682
- .mint-auto-group__field-step {
10683
- display: flex;
10684
- flex-direction: column;
10685
- gap: 1rem;
10620
+ /* --- Suggestion banner --- */
10621
+ .mint-auto-group__suggest { display: flex; align-items: center; gap: 10px; padding: 10px 14px; border-radius: var(--radius); border: 1px dashed var(--color-primary); background: var(--color-primary-soft); color: var(--color-primary); font-size: 12.5px;
10686
10622
  }
10687
- .mint-auto-group__field-grid {
10688
- display: grid;
10689
- grid-template-columns: repeat(2, 1fr);
10690
- gap: 0.75rem;
10623
+ .mint-auto-group__suggest-btn { margin-left: 8px; background: var(--bg-primary); border: 1px solid var(--color-primary); color: var(--color-primary); padding: 4px 10px; border-radius: var(--radius-sm); cursor: pointer; font-size: 12px;
10691
10624
  }
10692
- @media (max-width: 600px) {
10693
- .mint-auto-group__field-grid {
10694
- grid-template-columns: 1fr;
10625
+ .mint-auto-group__suggest-btn--ghost { border-color: var(--border); color: var(--text-secondary);
10695
10626
  }
10627
+
10628
+ /* --- 3-stat strip (Option B redesign) ---
10629
+ *
10630
+ * Three peer stats at the top of the schema panel:
10631
+ * Groups (primary, with factor-chip composition below)
10632
+ * Samples (active class size · class label · token count)
10633
+ * Avg / group (with min/max sub)
10634
+ *
10635
+ * Replaces the old schema header + group summary bar. The strip is a
10636
+ * single rounded card with 1px gap dividers so the three cells read as
10637
+ * a unit, not three floating panels. */
10638
+ .mint-auto-group__stats {
10639
+ display: grid;
10640
+ grid-template-columns: repeat(3, 1fr);
10641
+ gap: 1px;
10642
+ background: var(--border);
10643
+ border: 1px solid var(--border);
10644
+ border-radius: var(--radius);
10645
+ overflow: hidden;
10696
10646
  }
10697
- .mint-auto-group__field-card {
10698
- padding: 0.75rem;
10699
- border: 1px solid var(--border-color);
10700
- border-radius: var(--radius-md);
10701
- background: var(--bg-secondary);
10702
- transition: border-color 0.15s, box-shadow 0.15s;
10647
+ .mint-auto-group__stat {
10648
+ background: var(--bg-primary);
10649
+ padding: 12px 14px;
10650
+ min-width: 0;
10703
10651
  }
10704
- .mint-auto-group__field-card--enabled {
10705
- border-color: var(--color-primary);
10706
- box-shadow: 0 0 0 1px var(--color-primary-soft);
10652
+ .mint-auto-group__stat-v {
10653
+ font-size: 22px;
10654
+ font-weight: 700;
10655
+ color: var(--text-primary);
10656
+ line-height: 1;
10657
+ font-variant-numeric: tabular-nums;
10707
10658
  }
10708
- .mint-auto-group__field-header {
10709
- display: flex;
10710
- align-items: center;
10711
- justify-content: space-between;
10712
- margin-bottom: 0.5rem;
10659
+ .mint-auto-group__stat--primary .mint-auto-group__stat-v { color: var(--color-primary);
10660
+ }
10661
+ .mint-auto-group__stat-l {
10662
+ font-size: 11px;
10663
+ color: var(--text-muted);
10664
+ text-transform: uppercase;
10665
+ letter-spacing: 0.05em;
10666
+ margin-top: 4px;
10667
+ font-weight: 600;
10713
10668
  }
10714
- .mint-auto-group__field-toggle {
10669
+ .mint-auto-group__stat-sub {
10670
+ margin-top: 8px;
10715
10671
  display: flex;
10672
+ flex-wrap: wrap;
10673
+ gap: 4px;
10716
10674
  align-items: center;
10717
- gap: 0.375rem;
10718
- cursor: pointer;
10719
- font-size: 0.8125rem;
10675
+ font-size: 11.5px;
10720
10676
  color: var(--text-secondary);
10677
+ min-height: 22px;
10721
10678
  }
10722
- .mint-auto-group__field-toggle input {
10723
- accent-color: var(--color-primary);
10724
- }
10725
- .mint-auto-group__field-toggle-label {
10726
- user-select: none;
10727
- }
10728
- .mint-auto-group__field-cardinality {
10729
- font-size: 0.6875rem;
10679
+ .mint-auto-group__stat-sub--muted {
10730
10680
  color: var(--text-muted);
10681
+ font-size: 11.5px;
10731
10682
  }
10732
- .mint-auto-group__field-name-input {
10733
- margin-bottom: 0.5rem;
10734
- }
10735
- .mint-auto-group__field-values {
10736
- display: flex;
10737
- flex-wrap: wrap;
10738
- gap: 0.25rem;
10739
- max-height: 4.5rem;
10740
- overflow-y: auto;
10683
+ .mint-auto-group__stat-empty {
10684
+ color: var(--text-muted);
10685
+ font-style: italic;
10741
10686
  }
10742
- .mint-auto-group__field-value {
10743
- font-size: 0.6875rem;
10744
- padding: 0.125rem 0.375rem;
10745
- border-radius: var(--radius-sm);
10746
- background: var(--bg-tertiary);
10687
+ .mint-auto-group__stat-empty strong {
10747
10688
  color: var(--text-secondary);
10689
+ font-style: normal;
10690
+ font-weight: 600;
10691
+ }
10692
+ .mint-auto-group__group-chip {
10693
+ font-size: 10.5px;
10748
10694
  font-family: 'Fira Code', monospace;
10749
- max-width: 100%;
10750
- overflow: hidden;
10751
- text-overflow: ellipsis;
10695
+ padding: 2px 7px;
10696
+ border-radius: 9999px;
10697
+ background: var(--color-primary-soft);
10698
+ color: var(--color-primary);
10752
10699
  white-space: nowrap;
10700
+ line-height: 1.4;
10753
10701
  }
10754
- .mint-auto-group__field-more {
10755
- font-size: 0.6875rem;
10756
- padding: 0.125rem 0.375rem;
10757
- color: var(--text-muted);
10758
- font-style: italic;
10702
+
10703
+ /* --- QC routing radio group (replaces the two checkboxes) --- */
10704
+ .mint-auto-group__routing {
10705
+ margin-top: 14px;
10706
+ padding-top: 14px;
10707
+ border-top: 1px solid var(--border);
10759
10708
  }
10760
- .mint-auto-group__field-summary {
10761
- font-size: 0.8125rem;
10762
- color: var(--text-secondary);
10763
- padding: 0.5rem 0.75rem;
10764
- background: var(--bg-tertiary);
10765
- border-radius: var(--radius);
10709
+ .mint-auto-group__routing-head {
10710
+ margin: 0 0 8px;
10711
+ font-size: 11px;
10712
+ text-transform: uppercase;
10713
+ letter-spacing: 0.05em;
10714
+ color: var(--text-muted);
10715
+ font-weight: 600;
10766
10716
  }
10767
- .mint-auto-group__field-summary strong {
10717
+ .mint-auto-group__routing-radio {
10718
+ display: flex;
10719
+ align-items: flex-start;
10720
+ gap: 8px;
10721
+ font-size: 12.5px;
10768
10722
  color: var(--text-primary);
10723
+ padding: 5px 0;
10724
+ cursor: pointer;
10725
+ line-height: 1.4;
10769
10726
  }
10770
- .mint-auto-group__field-warning {
10771
- font-size: 0.8125rem;
10772
- color: var(--mint-warning);
10773
- padding: 0.5rem 0.75rem;
10774
- background: var(--mint-warning-bg);
10775
- border-radius: var(--radius);
10727
+ .mint-auto-group__routing-radio input {
10728
+ margin-top: 2px;
10729
+ accent-color: var(--color-primary);
10730
+ flex-shrink: 0;
10731
+ }
10732
+ .mint-auto-group__routing-radio small {
10733
+ display: block;
10734
+ color: var(--text-muted);
10735
+ font-size: 11px;
10736
+ margin-top: 1px;
10776
10737
  }
10777
10738
 
10778
- /* --- Preview step --- */
10779
- .mint-auto-group__preview-step {
10739
+ /* --- Compact token table (replaces the horizontal cards row) ---
10740
+ *
10741
+ * One row per token position. Lets users scan a 6+ token batch without
10742
+ * horizontal scrolling and without each row carrying redundant card chrome.
10743
+ * Click the row to open the popover (rename, role override, value ops).
10744
+ * The Use checkbox lives inline; @click.stop on the label prevents
10745
+ * accidental popover triggering when toggling Use. */
10746
+ .mint-auto-group__token-table {
10747
+ flex: 1;
10748
+ min-height: 0;
10780
10749
  display: flex;
10781
10750
  flex-direction: column;
10782
- gap: 1rem;
10783
- }
10784
- .mint-auto-group__preview-summary {
10785
- display: flex;
10786
- flex-wrap: wrap;
10787
- gap: 0.5rem 1rem;
10788
- padding: 0.75rem 1rem;
10789
- background: var(--bg-tertiary);
10790
- border-radius: var(--radius-md);
10791
- }
10792
- .mint-auto-group__preview-stat {
10793
- font-size: 0.8125rem;
10794
- color: var(--text-secondary);
10751
+ border: 1px solid var(--border);
10752
+ border-radius: var(--radius);
10753
+ background: var(--bg-primary);
10754
+ overflow: auto;
10795
10755
  }
10796
- .mint-auto-group__preview-stat strong {
10756
+ .mint-auto-group__token-row {
10757
+ display: grid;
10758
+ /* Column widths chosen to fit in the lg modal's ~440px schema panel.
10759
+ * Token# stays narrow (single digit), Name + Preview share remaining
10760
+ * flex space, Role pill is fixed for badge stability, # uses a glyph
10761
+ * header so 32px is enough, Use is the checkbox, then the ⋯ trigger. */
10762
+ grid-template-columns: 28px minmax(0, 1fr) 76px 48px minmax(0, 1.4fr) 28px 18px;
10763
+ align-items: center;
10764
+ gap: 8px;
10765
+ padding: 9px 12px;
10766
+ background: transparent;
10767
+ border: 0;
10768
+ border-bottom: 1px solid var(--border);
10769
+ font-size: 12.5px;
10797
10770
  color: var(--text-primary);
10771
+ text-align: left;
10772
+ cursor: pointer;
10773
+ width: 100%;
10774
+ font-family: inherit;
10775
+ transition: background-color 150ms ease;
10798
10776
  }
10799
- .mint-auto-group__preview-stat--excluded strong {
10800
- color: var(--mint-error);
10777
+ .mint-auto-group__token-row:last-child { border-bottom: 0;
10801
10778
  }
10802
- .mint-auto-group__preview-groups {
10803
- display: flex;
10804
- flex-direction: column;
10805
- gap: 0.5rem;
10806
- max-height: 20rem;
10807
- overflow-y: auto;
10779
+ .mint-auto-group__token-row:hover { background: var(--bg-secondary);
10808
10780
  }
10809
- .mint-auto-group__preview-group {
10810
- border: 1px solid var(--border-color);
10811
- border-radius: var(--radius);
10812
- overflow: hidden;
10781
+ .mint-auto-group__token-row:focus-visible {
10782
+ outline: 2px solid var(--color-primary);
10783
+ outline-offset: -2px;
10813
10784
  }
10814
- .mint-auto-group__preview-group[open] {
10815
- background: var(--bg-secondary);
10785
+ .mint-auto-group__token-row--active { background: var(--color-primary-soft);
10816
10786
  }
10817
- .mint-auto-group__preview-group-header {
10818
- display: flex;
10819
- align-items: center;
10820
- gap: 0.5rem;
10821
- padding: 0.5rem 0.75rem;
10822
- cursor: pointer;
10823
- font-size: 0.8125rem;
10824
- user-select: none;
10825
- min-width: 0;
10787
+ .mint-auto-group__token-row--head {
10788
+ cursor: default;
10789
+ background: var(--bg-secondary);
10790
+ font-size: 11px;
10791
+ font-weight: 600;
10792
+ text-transform: uppercase;
10793
+ letter-spacing: 0.05em;
10794
+ color: var(--text-muted);
10795
+ padding: 8px 14px;
10826
10796
  }
10827
- .mint-auto-group__preview-group-header:hover {
10828
- background: var(--bg-hover);
10797
+ .mint-auto-group__token-row--head:hover { background: var(--bg-secondary);
10829
10798
  }
10830
- .mint-auto-group__preview-dot {
10831
- width: 0.625rem;
10832
- height: 0.625rem;
10833
- border-radius: 50%;
10834
- flex-shrink: 0;
10799
+ .mint-auto-group__token-ix {
10800
+ font-family: 'Fira Code', monospace;
10801
+ font-size: 12px;
10802
+ color: var(--text-muted);
10835
10803
  }
10836
- .mint-auto-group__preview-group-name {
10804
+ .mint-auto-group__token-nm {
10837
10805
  font-weight: 500;
10838
- color: var(--text-primary);
10839
10806
  overflow: hidden;
10840
10807
  text-overflow: ellipsis;
10841
10808
  white-space: nowrap;
10842
10809
  min-width: 0;
10843
10810
  }
10844
- .mint-auto-group__preview-group-count {
10845
- font-size: 0.6875rem;
10846
- font-weight: 500;
10847
- padding: 0.0625rem 0.375rem;
10848
- border-radius: var(--radius-sm);
10849
- margin-left: auto;
10811
+ .mint-auto-group__token-unique {
10812
+ font-family: 'Fira Code', monospace;
10813
+ font-size: 12.5px;
10814
+ color: var(--text-secondary);
10815
+ text-align: right;
10816
+ font-variant-numeric: tabular-nums;
10850
10817
  }
10851
- .mint-auto-group__preview-samples {
10852
- display: flex;
10853
- flex-wrap: wrap;
10854
- gap: 0.25rem;
10855
- padding: 0.5rem 0.75rem;
10856
- border-top: 1px solid var(--border-light);
10818
+ .mint-auto-group__token-num { text-align: right;
10857
10819
  }
10858
- .mint-auto-group__preview-sample {
10859
- font-size: 0.75rem;
10820
+ .mint-auto-group__token-preview {
10860
10821
  font-family: 'Fira Code', monospace;
10861
- padding: 0.125rem 0.375rem;
10862
- border-radius: var(--radius-sm);
10863
- background: var(--bg-tertiary);
10822
+ font-size: 11.5px;
10864
10823
  color: var(--text-secondary);
10824
+ overflow: hidden;
10825
+ text-overflow: ellipsis;
10826
+ white-space: nowrap;
10827
+ min-width: 0;
10865
10828
  }
10866
- .mint-auto-group__preview-sample--excluded {
10867
- opacity: 0.5;
10868
- text-decoration: line-through;
10829
+ .mint-auto-group__token-more {
10830
+ color: var(--text-muted);
10831
+ font-style: italic;
10869
10832
  }
10870
-
10871
- /* --- Excluded section --- */
10872
- .mint-auto-group__preview-excluded {
10873
- border-top: 1px solid var(--border-color);
10874
- padding-top: 0.75rem;
10833
+ .mint-auto-group__token-use,
10834
+ .mint-auto-group__token-use-head { display: flex; justify-content: center;
10875
10835
  }
10876
- .mint-auto-group__preview-excluded-title {
10877
- font-size: 0.75rem;
10878
- font-weight: 500;
10836
+ .mint-auto-group__token-use { cursor: pointer;
10837
+ }
10838
+ .mint-auto-group__token-use input {
10839
+ width: 16px;
10840
+ height: 16px;
10841
+ cursor: pointer;
10842
+ accent-color: var(--color-primary);
10843
+ }
10844
+ .mint-auto-group__token-trigger {
10879
10845
  color: var(--text-muted);
10880
- text-transform: uppercase;
10881
- letter-spacing: 0.05em;
10882
- margin-bottom: 0.5rem;
10846
+ text-align: center;
10847
+ font-size: 14px;
10848
+ user-select: none;
10883
10849
  }
10884
- .mint-auto-group__preview-excluded-list {
10885
- display: flex;
10886
- flex-wrap: wrap;
10887
- gap: 0.25rem;
10850
+
10851
+ /* --- Role badge (used in token rows and inside the popover) --- */
10852
+ .mint-auto-group__role { align-self: flex-start; display: inline-flex; padding: 2px 8px; border-radius: 9999px; border: 1px solid var(--border); background: var(--bg-secondary); color: var(--text-secondary); font-size: 10.5px; text-transform: uppercase; cursor: pointer;
10853
+ }
10854
+ .mint-auto-group__role--factor { background: var(--color-primary-soft); color: var(--color-primary); border-color: transparent;
10855
+ }
10856
+ .mint-auto-group__role--constant { background: var(--bg-tertiary); color: var(--text-muted); border-color: transparent;
10857
+ }
10858
+ .mint-auto-group__role--replicate { background: var(--mint-info-bg); color: var(--mint-info); border-color: var(--mint-info-border);
10859
+ }
10860
+ .mint-auto-group__role--run-order { background: var(--bg-tertiary); color: var(--text-muted); border-color: transparent;
10861
+ }
10862
+ .mint-auto-group__role--numeric { background: rgba(249,115,22,.10); color: var(--color-cta); border-color: rgba(249,115,22,.30);
10863
+ }
10864
+ .mint-auto-group__role--class-tag { background: rgba(123,208,181,.16); color: #0F766E; border-color: transparent;
10865
+ }
10866
+ .mint-auto-group__role--ignore { background: var(--bg-tertiary); color: var(--text-muted); border-color: transparent;
10888
10867
  }
10889
10868
 
10890
- /* --- Navigation --- */
10891
- .mint-auto-group__nav {
10892
- display: flex;
10893
- align-items: center;
10894
- gap: 0.5rem;
10869
+ /* --- Column popover (token rename, role override, value ops) ---
10870
+ * - bg-primary so it reads brighter than the surrounding bg-secondary panels.
10871
+ * - Layered shadow (close + far) reads as elevated rather than recessed.
10872
+ * - z-index 20 sits above schema cards but stays scoped to the modal's
10873
+ * stacking context. */
10874
+ .mint-auto-group__popover { position: absolute; right: 20px; top: 60px; width: 320px; background: var(--bg-primary); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: 0 1px 2px rgba(15, 23, 42, .06), 0 12px 32px -8px rgba(15, 23, 42, .22); padding: 14px; z-index: 20; display: flex; flex-direction: column; gap: 12px;
10895
10875
  }
10896
- .mint-auto-group__nav-spacer {
10897
- flex: 1;
10876
+ .mint-auto-group__popover-head { display: flex; align-items: center; gap: 8px;
10877
+ }
10878
+ .mint-auto-group__popover-head .mono { font-family: 'Fira Code', monospace; font-size: 11px; color: var(--text-muted); margin-left: auto;
10879
+ }
10880
+ .mint-auto-group__popover-close { background: transparent; border: 0; cursor: pointer; color: var(--text-secondary); font-size: 16px;
10881
+ }
10882
+ .mint-auto-group__popover-section { display: flex; flex-direction: column; gap: 6px;
10883
+ }
10884
+ .mint-auto-group__popover-label { font-size: 12px; font-weight: 600; color: var(--text-primary);
10885
+ }
10886
+ .mint-auto-group__pills { display: flex; flex-wrap: wrap; gap: 6px;
10887
+ }
10888
+ .mint-auto-group__pill-btn { font-size: 11.5px; padding: 3px 10px; border-radius: 9999px; border: 1px solid var(--border); background: var(--bg-primary); color: var(--text-secondary); cursor: pointer;
10889
+ }
10890
+ .mint-auto-group__pill-btn--on { background: var(--color-primary-soft); border-color: var(--color-primary); color: var(--color-primary); font-weight: 600;
10891
+ }
10892
+ .mint-auto-group__values-list { display: flex; flex-direction: column; gap: 6px; max-height: 180px; overflow-y: auto;
10893
+ }
10894
+ .mint-auto-group__value-row { display: grid; grid-template-columns: 100px 1fr auto; gap: 8px; align-items: center;
10895
+ }
10896
+ .mint-auto-group__value-src { font-family: 'Fira Code', monospace; font-size: 11.5px; color: var(--text-muted); text-align: right;
10897
+ }
10898
+ .mint-auto-group__value-input { border: 1px solid var(--border); background: var(--bg-secondary); padding: 4px 8px; border-radius: var(--radius-sm); font-family: 'Fira Code', monospace; font-size: 12px;
10899
+ }
10900
+ .mint-auto-group__value-excl { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; color: var(--text-secondary);
10901
+ }
10902
+ .mint-auto-group__link { background: transparent; border: 0; color: var(--color-primary); font-size: 12.5px; cursor: pointer; text-align: left; padding: 0;
10903
+ }
10904
+
10905
+ /* --- CSV download templates (Input step) --- */
10906
+ .mint-auto-group__template { margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--border); display: flex; align-items: center; gap: 12px;
10907
+ }
10908
+ .mint-auto-group__template-label { font-size: 12.5px; color: var(--text-secondary);
10909
+ }
10910
+ .mint-auto-group__template-actions { display: flex; gap: 8px;
10911
+ }
10912
+
10913
+ /* --- Preview step --- */
10914
+ .mint-auto-group__preview { display: flex; flex-direction: column; gap: 14px;
10915
+ }
10916
+ .mint-auto-group__preview-summary { background: var(--color-primary-soft); color: var(--color-primary); border: 1px solid var(--color-primary); border-radius: var(--radius); padding: 10px 14px; font-size: 13px;
10917
+ }
10918
+ .mint-auto-group__preview-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px;
10919
+ }
10920
+ .mint-auto-group__preview-panel { background: var(--bg-secondary); border: 1px solid var(--border); border-radius: var(--radius); padding: 14px;
10921
+ }
10922
+ .mint-auto-group__preview-panel h4 { margin: 0 0 10px; font-size: 12px; color: var(--text-muted); text-transform: uppercase; letter-spacing: .06em;
10923
+ }
10924
+ .mint-auto-group__preview-group { border: 1px solid var(--border-color); border-radius: var(--radius); overflow: hidden;
10925
+ }
10926
+ .mint-auto-group__preview-group[open] { background: var(--bg-secondary);
10927
+ }
10928
+ .mint-auto-group__preview-group summary { display: flex; align-items: center; gap: 10px; cursor: pointer; font-size: 13px; padding: 0.5rem 0.875rem;
10929
+ }
10930
+ .mint-auto-group__preview-group[open] summary { border-bottom: 1px solid var(--border);
10931
+ }
10932
+ .mint-auto-group__preview-dot { width: 10px; height: 10px; border-radius: 9999px; flex-shrink: 0;
10933
+ }
10934
+ .mint-auto-group__preview-count { margin-left: auto; font-family: 'Fira Code', monospace; font-size: 12px; color: var(--text-secondary); background: var(--bg-primary); border: 1px solid var(--border); padding: 2px 8px; border-radius: 9999px;
10935
+ }
10936
+ .mint-auto-group__preview-samples { display: flex; flex-wrap: wrap; gap: 6px; padding: 0.5rem 0.875rem 0.625rem;
10937
+ }
10938
+ .mint-auto-group__preview-sample { font-family: 'Fira Code', monospace; font-size: 11.5px; color: var(--text-primary); background: var(--bg-primary); border: 1px solid var(--border); padding: 3px 8px; border-radius: 9999px;
10939
+ }
10940
+ .mint-auto-group__qc-chips { display: flex; flex-wrap: wrap; gap: 6px;
10941
+ }
10942
+ .mint-auto-group__qc-chip { background: var(--mint-warning-bg); color: #92400E; border: 1px solid var(--mint-warning-border); padding: 4px 10px; border-radius: 9999px; font-size: 12px;
10943
+ }
10944
+ .mint-auto-group__fingerprint { margin-top: 14px;
10945
+ }
10946
+ .mint-auto-group__fingerprint summary { cursor: pointer; font-size: 12px; color: var(--text-muted);
10947
+ }
10948
+ .mint-auto-group__fingerprint pre { font-family: 'Fira Code', monospace; font-size: 11px; background: var(--bg-primary); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: 8px; overflow-x: auto;
10898
10949
  }
10899
10950
  /* SampleSelector Component Styles - RFA Design */
10900
10951
  .mint-sample-selector {
@@ -12061,10 +12112,10 @@ to {
12061
12112
  }
12062
12113
  }
12063
12114
 
12064
- .mint-control-workspace-view[data-v-ec2a5a8a] {
12115
+ .mint-control-workspace-view[data-v-83e93e6c] {
12065
12116
  min-width: 0;
12066
12117
  }
12067
- .mint-control-workspace-view__content[data-v-ec2a5a8a] {
12118
+ .mint-control-workspace-view__content[data-v-83e93e6c] {
12068
12119
  min-width: 0;
12069
12120
  padding: 1rem;
12070
12121
  }
@@ -23414,6 +23465,7 @@ html.dark .mint-toast__item .mint-toast__message {
23414
23465
  display: flex;
23415
23466
  flex-direction: column;
23416
23467
  }
23468
+ /* --- Paste: free-form textarea (the self-designed input path) --- */
23417
23469
  .mint-auto-group__paste {
23418
23470
  position: relative;
23419
23471
  }
@@ -23630,324 +23682,303 @@ html.dark .mint-toast__item .mint-toast__message {
23630
23682
  flex-wrap: wrap;
23631
23683
  gap: 0.375rem;
23632
23684
  }
23633
- /* --- Outlier step --- */
23634
- .mint-auto-group__outlier-step {
23635
- display: flex;
23636
- flex-direction: column;
23637
- gap: 0.75rem;
23638
- }
23639
- .mint-auto-group__outlier-banner {
23640
- padding: 0.75rem 1rem;
23641
- background: var(--mint-warning-bg);
23642
- border: 1px solid rgba(245, 158, 11, 0.3);
23643
- border-radius: var(--radius-md);
23644
- font-size: 0.8125rem;
23645
- color: var(--text-primary);
23646
- }
23647
- .mint-auto-group__outlier-banner code {
23685
+ .mint-auto-group__field-value {
23648
23686
  font-family: 'Fira Code', monospace;
23649
- background: var(--bg-tertiary);
23650
- padding: 0.125rem 0.375rem;
23651
- border-radius: var(--radius-sm);
23652
- font-size: 0.8125rem;
23687
+ font-size: 11.5px;
23688
+ background: var(--bg-primary);
23689
+ border: 1px solid var(--border);
23690
+ padding: 2px 8px;
23691
+ border-radius: 9999px;
23692
+ color: var(--text-secondary);
23653
23693
  }
23654
- .mint-auto-group__outlier-batch {
23694
+ /* --- Navigation --- */
23695
+ .mint-auto-group__nav {
23655
23696
  display: flex;
23697
+ align-items: center;
23656
23698
  gap: 0.5rem;
23657
23699
  }
23658
- .mint-auto-group__outlier-list {
23659
- display: flex;
23660
- flex-direction: column;
23661
- gap: 0.5rem;
23662
- max-height: 300px;
23663
- overflow-y: auto;
23700
+ .mint-auto-group__nav-spacer {
23701
+ flex: 1;
23664
23702
  }
23665
- .mint-auto-group__outlier-item {
23666
- display: flex;
23667
- align-items: center;
23668
- justify-content: space-between;
23669
- padding: 0.5rem 0.75rem;
23670
- background: var(--bg-secondary);
23671
- border: 1px solid var(--border-color);
23703
+ /* --- Workspace step --- */
23704
+ .mint-auto-group__workspace { display: grid; grid-template-columns: 220px 1fr; gap: 16px; min-height: 480px; position: relative; }
23705
+ .mint-auto-group__classes { background: var(--bg-primary); border: 1px solid var(--border); border-radius: var(--radius); padding: 12px; display: flex; flex-direction: column; gap: 4px; }
23706
+ .mint-auto-group__classes h3 { font-size: 11px; letter-spacing: .08em; color: var(--text-muted); text-transform: uppercase; margin: 0 0 8px; }
23707
+ .mint-auto-group__class { display: grid; grid-template-columns: 12px 1fr auto; align-items: center; gap: 8px; padding: 8px 10px; border-radius: var(--radius-sm); cursor: pointer; background: transparent; border: 1px solid transparent; font-size: 13px; color: var(--text-primary); text-align: left; }
23708
+ .mint-auto-group__class:hover { background: var(--bg-tertiary); }
23709
+ .mint-auto-group__class--active { background: var(--color-primary-soft); border-color: var(--color-primary); color: var(--color-primary); font-weight: 500; }
23710
+ .mint-auto-group__class--qc .mint-auto-group__class-dot { background: var(--mint-warning); }
23711
+ .mint-auto-group__class-dot { width: 8px; height: 8px; border-radius: 9999px; background: var(--text-muted); }
23712
+ .mint-auto-group__class-count { font-family: 'Fira Code', monospace; font-size: 11.5px; color: var(--text-secondary); background: var(--bg-secondary); padding: 2px 8px; border-radius: 9999px; border: 1px solid var(--border); }
23713
+ .mint-auto-group__schema { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
23714
+ /* --- Suggestion banner --- */
23715
+ .mint-auto-group__suggest { display: flex; align-items: center; gap: 10px; padding: 10px 14px; border-radius: var(--radius); border: 1px dashed var(--color-primary); background: var(--color-primary-soft); color: var(--color-primary); font-size: 12.5px; }
23716
+ .mint-auto-group__suggest-btn { margin-left: 8px; background: var(--bg-primary); border: 1px solid var(--color-primary); color: var(--color-primary); padding: 4px 10px; border-radius: var(--radius-sm); cursor: pointer; font-size: 12px; }
23717
+ .mint-auto-group__suggest-btn--ghost { border-color: var(--border); color: var(--text-secondary); }
23718
+ /* --- 3-stat strip (Option B redesign) ---
23719
+ *
23720
+ * Three peer stats at the top of the schema panel:
23721
+ * Groups (primary, with factor-chip composition below)
23722
+ * Samples (active class size · class label · token count)
23723
+ * Avg / group (with min/max sub)
23724
+ *
23725
+ * Replaces the old schema header + group summary bar. The strip is a
23726
+ * single rounded card with 1px gap dividers so the three cells read as
23727
+ * a unit, not three floating panels. */
23728
+ .mint-auto-group__stats {
23729
+ display: grid;
23730
+ grid-template-columns: repeat(3, 1fr);
23731
+ gap: 1px;
23732
+ background: var(--border);
23733
+ border: 1px solid var(--border);
23672
23734
  border-radius: var(--radius);
23735
+ overflow: hidden;
23673
23736
  }
23674
- .mint-auto-group__outlier-info {
23675
- display: flex;
23676
- align-items: center;
23677
- gap: 0.5rem;
23737
+ .mint-auto-group__stat {
23738
+ background: var(--bg-primary);
23739
+ padding: 12px 14px;
23678
23740
  min-width: 0;
23679
23741
  }
23680
- .mint-auto-group__outlier-name {
23681
- font-family: 'Fira Code', monospace;
23682
- font-size: 0.8125rem;
23742
+ .mint-auto-group__stat-v {
23743
+ font-size: 22px;
23744
+ font-weight: 700;
23683
23745
  color: var(--text-primary);
23684
- overflow: hidden;
23685
- text-overflow: ellipsis;
23686
- white-space: nowrap;
23746
+ line-height: 1;
23747
+ font-variant-numeric: tabular-nums;
23687
23748
  }
23688
- .mint-auto-group__outlier-badge {
23689
- font-size: 0.6875rem;
23690
- padding: 0.125rem 0.375rem;
23691
- border-radius: var(--radius-sm);
23692
- background: var(--bg-tertiary);
23749
+ .mint-auto-group__stat--primary .mint-auto-group__stat-v { color: var(--color-primary); }
23750
+ .mint-auto-group__stat-l {
23751
+ font-size: 11px;
23693
23752
  color: var(--text-muted);
23694
- white-space: nowrap;
23695
- flex-shrink: 0;
23696
- }
23697
- .mint-auto-group__outlier-actions {
23698
- display: flex;
23699
- gap: 0.25rem;
23700
- flex-shrink: 0;
23701
- margin-left: 0.75rem;
23702
- }
23703
- .mint-auto-group__action-btn {
23704
- font-size: 0.6875rem;
23705
- padding: 0.25rem 0.5rem;
23706
- border: 1px solid var(--border-color);
23707
- border-radius: var(--radius-sm);
23708
- background: var(--bg-secondary);
23709
- color: var(--text-secondary);
23710
- cursor: pointer;
23711
- transition: all 0.1s;
23712
- }
23713
- .mint-auto-group__action-btn:hover {
23714
- background: var(--bg-hover);
23715
- }
23716
- .mint-auto-group__action-btn:focus-visible {
23717
- outline: 2px solid var(--color-primary);
23718
- outline-offset: 1px;
23719
- }
23720
- .mint-auto-group__action-btn--active {
23721
- background: var(--color-primary-soft);
23722
- border-color: var(--color-primary);
23723
- color: var(--color-primary);
23724
- font-weight: 500;
23725
- }
23726
- .mint-auto-group__action-btn--active.mint-auto-group__action-btn--exclude {
23727
- background: var(--mint-error-bg);
23728
- border-color: var(--mint-error);
23729
- color: var(--mint-error);
23730
- }
23731
- .mint-auto-group__action-btn--active.mint-auto-group__action-btn--qc {
23732
- background: rgba(107, 114, 128, 0.12);
23733
- border-color: var(--text-secondary);
23734
- color: var(--text-secondary);
23735
- }
23736
- /* --- Field step --- */
23737
- .mint-auto-group__field-step {
23738
- display: flex;
23739
- flex-direction: column;
23740
- gap: 1rem;
23741
- }
23742
- .mint-auto-group__field-grid {
23743
- display: grid;
23744
- grid-template-columns: repeat(2, 1fr);
23745
- gap: 0.75rem;
23746
- }
23747
- @media (max-width: 600px) {
23748
- .mint-auto-group__field-grid {
23749
- grid-template-columns: 1fr;
23750
- }
23751
- }
23752
- .mint-auto-group__field-card {
23753
- padding: 0.75rem;
23754
- border: 1px solid var(--border-color);
23755
- border-radius: var(--radius-md);
23756
- background: var(--bg-secondary);
23757
- transition: border-color 0.15s, box-shadow 0.15s;
23758
- }
23759
- .mint-auto-group__field-card--enabled {
23760
- border-color: var(--color-primary);
23761
- box-shadow: 0 0 0 1px var(--color-primary-soft);
23762
- }
23763
- .mint-auto-group__field-header {
23764
- display: flex;
23765
- align-items: center;
23766
- justify-content: space-between;
23767
- margin-bottom: 0.5rem;
23753
+ text-transform: uppercase;
23754
+ letter-spacing: 0.05em;
23755
+ margin-top: 4px;
23756
+ font-weight: 600;
23768
23757
  }
23769
- .mint-auto-group__field-toggle {
23758
+ .mint-auto-group__stat-sub {
23759
+ margin-top: 8px;
23770
23760
  display: flex;
23761
+ flex-wrap: wrap;
23762
+ gap: 4px;
23771
23763
  align-items: center;
23772
- gap: 0.375rem;
23773
- cursor: pointer;
23774
- font-size: 0.8125rem;
23764
+ font-size: 11.5px;
23775
23765
  color: var(--text-secondary);
23766
+ min-height: 22px;
23776
23767
  }
23777
- .mint-auto-group__field-toggle input {
23778
- accent-color: var(--color-primary);
23779
- }
23780
- .mint-auto-group__field-toggle-label {
23781
- user-select: none;
23782
- }
23783
- .mint-auto-group__field-cardinality {
23784
- font-size: 0.6875rem;
23768
+ .mint-auto-group__stat-sub--muted {
23785
23769
  color: var(--text-muted);
23770
+ font-size: 11.5px;
23786
23771
  }
23787
- .mint-auto-group__field-name-input {
23788
- margin-bottom: 0.5rem;
23789
- }
23790
- .mint-auto-group__field-values {
23791
- display: flex;
23792
- flex-wrap: wrap;
23793
- gap: 0.25rem;
23794
- max-height: 4.5rem;
23795
- overflow-y: auto;
23796
- }
23797
- .mint-auto-group__field-value {
23798
- font-size: 0.6875rem;
23799
- padding: 0.125rem 0.375rem;
23800
- border-radius: var(--radius-sm);
23801
- background: var(--bg-tertiary);
23802
- color: var(--text-secondary);
23803
- font-family: 'Fira Code', monospace;
23804
- max-width: 100%;
23805
- overflow: hidden;
23806
- text-overflow: ellipsis;
23807
- white-space: nowrap;
23808
- }
23809
- .mint-auto-group__field-more {
23810
- font-size: 0.6875rem;
23811
- padding: 0.125rem 0.375rem;
23772
+ .mint-auto-group__stat-empty {
23812
23773
  color: var(--text-muted);
23813
23774
  font-style: italic;
23814
23775
  }
23815
- .mint-auto-group__field-summary {
23816
- font-size: 0.8125rem;
23776
+ .mint-auto-group__stat-empty strong {
23817
23777
  color: var(--text-secondary);
23818
- padding: 0.5rem 0.75rem;
23819
- background: var(--bg-tertiary);
23820
- border-radius: var(--radius);
23778
+ font-style: normal;
23779
+ font-weight: 600;
23821
23780
  }
23822
- .mint-auto-group__field-summary strong {
23823
- color: var(--text-primary);
23781
+ .mint-auto-group__group-chip {
23782
+ font-size: 10.5px;
23783
+ font-family: 'Fira Code', monospace;
23784
+ padding: 2px 7px;
23785
+ border-radius: 9999px;
23786
+ background: var(--color-primary-soft);
23787
+ color: var(--color-primary);
23788
+ white-space: nowrap;
23789
+ line-height: 1.4;
23824
23790
  }
23825
- .mint-auto-group__field-warning {
23826
- font-size: 0.8125rem;
23827
- color: var(--mint-warning);
23828
- padding: 0.5rem 0.75rem;
23829
- background: var(--mint-warning-bg);
23830
- border-radius: var(--radius);
23791
+ /* --- QC routing radio group (replaces the two checkboxes) --- */
23792
+ .mint-auto-group__routing {
23793
+ margin-top: 14px;
23794
+ padding-top: 14px;
23795
+ border-top: 1px solid var(--border);
23831
23796
  }
23832
- /* --- Preview step --- */
23833
- .mint-auto-group__preview-step {
23834
- display: flex;
23835
- flex-direction: column;
23836
- gap: 1rem;
23797
+ .mint-auto-group__routing-head {
23798
+ margin: 0 0 8px;
23799
+ font-size: 11px;
23800
+ text-transform: uppercase;
23801
+ letter-spacing: 0.05em;
23802
+ color: var(--text-muted);
23803
+ font-weight: 600;
23837
23804
  }
23838
- .mint-auto-group__preview-summary {
23805
+ .mint-auto-group__routing-radio {
23839
23806
  display: flex;
23840
- flex-wrap: wrap;
23841
- gap: 0.5rem 1rem;
23842
- padding: 0.75rem 1rem;
23843
- background: var(--bg-tertiary);
23844
- border-radius: var(--radius-md);
23845
- }
23846
- .mint-auto-group__preview-stat {
23847
- font-size: 0.8125rem;
23848
- color: var(--text-secondary);
23849
- }
23850
- .mint-auto-group__preview-stat strong {
23807
+ align-items: flex-start;
23808
+ gap: 8px;
23809
+ font-size: 12.5px;
23851
23810
  color: var(--text-primary);
23811
+ padding: 5px 0;
23812
+ cursor: pointer;
23813
+ line-height: 1.4;
23852
23814
  }
23853
- .mint-auto-group__preview-stat--excluded strong {
23854
- color: var(--mint-error);
23815
+ .mint-auto-group__routing-radio input {
23816
+ margin-top: 2px;
23817
+ accent-color: var(--color-primary);
23818
+ flex-shrink: 0;
23855
23819
  }
23856
- .mint-auto-group__preview-groups {
23820
+ .mint-auto-group__routing-radio small {
23821
+ display: block;
23822
+ color: var(--text-muted);
23823
+ font-size: 11px;
23824
+ margin-top: 1px;
23825
+ }
23826
+ /* --- Compact token table (replaces the horizontal cards row) ---
23827
+ *
23828
+ * One row per token position. Lets users scan a 6+ token batch without
23829
+ * horizontal scrolling and without each row carrying redundant card chrome.
23830
+ * Click the row to open the popover (rename, role override, value ops).
23831
+ * The Use checkbox lives inline; @click.stop on the label prevents
23832
+ * accidental popover triggering when toggling Use. */
23833
+ .mint-auto-group__token-table {
23834
+ flex: 1;
23835
+ min-height: 0;
23857
23836
  display: flex;
23858
23837
  flex-direction: column;
23859
- gap: 0.5rem;
23860
- max-height: 20rem;
23861
- overflow-y: auto;
23862
- }
23863
- .mint-auto-group__preview-group {
23864
- border: 1px solid var(--border-color);
23838
+ border: 1px solid var(--border);
23865
23839
  border-radius: var(--radius);
23866
- overflow: hidden;
23867
- }
23868
- .mint-auto-group__preview-group[open] {
23869
- background: var(--bg-secondary);
23840
+ background: var(--bg-primary);
23841
+ overflow: auto;
23870
23842
  }
23871
- .mint-auto-group__preview-group-header {
23872
- display: flex;
23843
+ .mint-auto-group__token-row {
23844
+ display: grid;
23845
+ /* Column widths chosen to fit in the lg modal's ~440px schema panel.
23846
+ * Token# stays narrow (single digit), Name + Preview share remaining
23847
+ * flex space, Role pill is fixed for badge stability, # uses a glyph
23848
+ * header so 32px is enough, Use is the checkbox, then the ⋯ trigger. */
23849
+ grid-template-columns: 28px minmax(0, 1fr) 76px 48px minmax(0, 1.4fr) 28px 18px;
23873
23850
  align-items: center;
23874
- gap: 0.5rem;
23875
- padding: 0.5rem 0.75rem;
23851
+ gap: 8px;
23852
+ padding: 9px 12px;
23853
+ background: transparent;
23854
+ border: 0;
23855
+ border-bottom: 1px solid var(--border);
23856
+ font-size: 12.5px;
23857
+ color: var(--text-primary);
23858
+ text-align: left;
23876
23859
  cursor: pointer;
23877
- font-size: 0.8125rem;
23878
- user-select: none;
23879
- min-width: 0;
23860
+ width: 100%;
23861
+ font-family: inherit;
23862
+ transition: background-color 150ms ease;
23880
23863
  }
23881
- .mint-auto-group__preview-group-header:hover {
23882
- background: var(--bg-hover);
23864
+ .mint-auto-group__token-row:last-child { border-bottom: 0; }
23865
+ .mint-auto-group__token-row:hover { background: var(--bg-secondary); }
23866
+ .mint-auto-group__token-row:focus-visible {
23867
+ outline: 2px solid var(--color-primary);
23868
+ outline-offset: -2px;
23883
23869
  }
23884
- .mint-auto-group__preview-dot {
23885
- width: 0.625rem;
23886
- height: 0.625rem;
23887
- border-radius: 50%;
23888
- flex-shrink: 0;
23870
+ .mint-auto-group__token-row--active { background: var(--color-primary-soft); }
23871
+ .mint-auto-group__token-row--head {
23872
+ cursor: default;
23873
+ background: var(--bg-secondary);
23874
+ font-size: 11px;
23875
+ font-weight: 600;
23876
+ text-transform: uppercase;
23877
+ letter-spacing: 0.05em;
23878
+ color: var(--text-muted);
23879
+ padding: 8px 14px;
23880
+ }
23881
+ .mint-auto-group__token-row--head:hover { background: var(--bg-secondary); }
23882
+ .mint-auto-group__token-ix {
23883
+ font-family: 'Fira Code', monospace;
23884
+ font-size: 12px;
23885
+ color: var(--text-muted);
23889
23886
  }
23890
- .mint-auto-group__preview-group-name {
23887
+ .mint-auto-group__token-nm {
23891
23888
  font-weight: 500;
23892
- color: var(--text-primary);
23893
23889
  overflow: hidden;
23894
23890
  text-overflow: ellipsis;
23895
23891
  white-space: nowrap;
23896
23892
  min-width: 0;
23897
23893
  }
23898
- .mint-auto-group__preview-group-count {
23899
- font-size: 0.6875rem;
23900
- font-weight: 500;
23901
- padding: 0.0625rem 0.375rem;
23902
- border-radius: var(--radius-sm);
23903
- margin-left: auto;
23904
- }
23905
- .mint-auto-group__preview-samples {
23906
- display: flex;
23907
- flex-wrap: wrap;
23908
- gap: 0.25rem;
23909
- padding: 0.5rem 0.75rem;
23910
- border-top: 1px solid var(--border-light);
23911
- }
23912
- .mint-auto-group__preview-sample {
23913
- font-size: 0.75rem;
23894
+ .mint-auto-group__token-unique {
23914
23895
  font-family: 'Fira Code', monospace;
23915
- padding: 0.125rem 0.375rem;
23916
- border-radius: var(--radius-sm);
23917
- background: var(--bg-tertiary);
23896
+ font-size: 12.5px;
23918
23897
  color: var(--text-secondary);
23898
+ text-align: right;
23899
+ font-variant-numeric: tabular-nums;
23919
23900
  }
23920
- .mint-auto-group__preview-sample--excluded {
23921
- opacity: 0.5;
23922
- text-decoration: line-through;
23923
- }
23924
- /* --- Excluded section --- */
23925
- .mint-auto-group__preview-excluded {
23926
- border-top: 1px solid var(--border-color);
23927
- padding-top: 0.75rem;
23901
+ .mint-auto-group__token-num { text-align: right; }
23902
+ .mint-auto-group__token-preview {
23903
+ font-family: 'Fira Code', monospace;
23904
+ font-size: 11.5px;
23905
+ color: var(--text-secondary);
23906
+ overflow: hidden;
23907
+ text-overflow: ellipsis;
23908
+ white-space: nowrap;
23909
+ min-width: 0;
23928
23910
  }
23929
- .mint-auto-group__preview-excluded-title {
23930
- font-size: 0.75rem;
23931
- font-weight: 500;
23911
+ .mint-auto-group__token-more {
23932
23912
  color: var(--text-muted);
23933
- text-transform: uppercase;
23934
- letter-spacing: 0.05em;
23935
- margin-bottom: 0.5rem;
23936
- }
23937
- .mint-auto-group__preview-excluded-list {
23938
- display: flex;
23939
- flex-wrap: wrap;
23940
- gap: 0.25rem;
23913
+ font-style: italic;
23941
23914
  }
23942
- /* --- Navigation --- */
23943
- .mint-auto-group__nav {
23944
- display: flex;
23945
- align-items: center;
23946
- gap: 0.5rem;
23915
+ .mint-auto-group__token-use,
23916
+ .mint-auto-group__token-use-head { display: flex; justify-content: center; }
23917
+ .mint-auto-group__token-use { cursor: pointer; }
23918
+ .mint-auto-group__token-use input {
23919
+ width: 16px;
23920
+ height: 16px;
23921
+ cursor: pointer;
23922
+ accent-color: var(--color-primary);
23947
23923
  }
23948
- .mint-auto-group__nav-spacer {
23949
- flex: 1;
23924
+ .mint-auto-group__token-trigger {
23925
+ color: var(--text-muted);
23926
+ text-align: center;
23927
+ font-size: 14px;
23928
+ user-select: none;
23950
23929
  }
23930
+ /* --- Role badge (used in token rows and inside the popover) --- */
23931
+ .mint-auto-group__role { align-self: flex-start; display: inline-flex; padding: 2px 8px; border-radius: 9999px; border: 1px solid var(--border); background: var(--bg-secondary); color: var(--text-secondary); font-size: 10.5px; text-transform: uppercase; cursor: pointer; }
23932
+ .mint-auto-group__role--factor { background: var(--color-primary-soft); color: var(--color-primary); border-color: transparent; }
23933
+ .mint-auto-group__role--constant { background: var(--bg-tertiary); color: var(--text-muted); border-color: transparent; }
23934
+ .mint-auto-group__role--replicate { background: var(--mint-info-bg); color: var(--mint-info); border-color: var(--mint-info-border); }
23935
+ .mint-auto-group__role--run-order { background: var(--bg-tertiary); color: var(--text-muted); border-color: transparent; }
23936
+ .mint-auto-group__role--numeric { background: rgba(249,115,22,.10); color: var(--color-cta); border-color: rgba(249,115,22,.30); }
23937
+ .mint-auto-group__role--class-tag { background: rgba(123,208,181,.16); color: #0F766E; border-color: transparent; }
23938
+ .mint-auto-group__role--ignore { background: var(--bg-tertiary); color: var(--text-muted); border-color: transparent; }
23939
+ /* --- Column popover (token rename, role override, value ops) ---
23940
+ * - bg-primary so it reads brighter than the surrounding bg-secondary panels.
23941
+ * - Layered shadow (close + far) reads as elevated rather than recessed.
23942
+ * - z-index 20 sits above schema cards but stays scoped to the modal's
23943
+ * stacking context. */
23944
+ .mint-auto-group__popover { position: absolute; right: 20px; top: 60px; width: 320px; background: var(--bg-primary); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: 0 1px 2px rgba(15, 23, 42, .06), 0 12px 32px -8px rgba(15, 23, 42, .22); padding: 14px; z-index: 20; display: flex; flex-direction: column; gap: 12px; }
23945
+ .mint-auto-group__popover-head { display: flex; align-items: center; gap: 8px; }
23946
+ .mint-auto-group__popover-head .mono { font-family: 'Fira Code', monospace; font-size: 11px; color: var(--text-muted); margin-left: auto; }
23947
+ .mint-auto-group__popover-close { background: transparent; border: 0; cursor: pointer; color: var(--text-secondary); font-size: 16px; }
23948
+ .mint-auto-group__popover-section { display: flex; flex-direction: column; gap: 6px; }
23949
+ .mint-auto-group__popover-label { font-size: 12px; font-weight: 600; color: var(--text-primary); }
23950
+ .mint-auto-group__pills { display: flex; flex-wrap: wrap; gap: 6px; }
23951
+ .mint-auto-group__pill-btn { font-size: 11.5px; padding: 3px 10px; border-radius: 9999px; border: 1px solid var(--border); background: var(--bg-primary); color: var(--text-secondary); cursor: pointer; }
23952
+ .mint-auto-group__pill-btn--on { background: var(--color-primary-soft); border-color: var(--color-primary); color: var(--color-primary); font-weight: 600; }
23953
+ .mint-auto-group__values-list { display: flex; flex-direction: column; gap: 6px; max-height: 180px; overflow-y: auto; }
23954
+ .mint-auto-group__value-row { display: grid; grid-template-columns: 100px 1fr auto; gap: 8px; align-items: center; }
23955
+ .mint-auto-group__value-src { font-family: 'Fira Code', monospace; font-size: 11.5px; color: var(--text-muted); text-align: right; }
23956
+ .mint-auto-group__value-input { border: 1px solid var(--border); background: var(--bg-secondary); padding: 4px 8px; border-radius: var(--radius-sm); font-family: 'Fira Code', monospace; font-size: 12px; }
23957
+ .mint-auto-group__value-excl { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; color: var(--text-secondary); }
23958
+ .mint-auto-group__link { background: transparent; border: 0; color: var(--color-primary); font-size: 12.5px; cursor: pointer; text-align: left; padding: 0; }
23959
+ /* --- CSV download templates (Input step) --- */
23960
+ .mint-auto-group__template { margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--border); display: flex; align-items: center; gap: 12px; }
23961
+ .mint-auto-group__template-label { font-size: 12.5px; color: var(--text-secondary); }
23962
+ .mint-auto-group__template-actions { display: flex; gap: 8px; }
23963
+ /* --- Preview step --- */
23964
+ .mint-auto-group__preview { display: flex; flex-direction: column; gap: 14px; }
23965
+ .mint-auto-group__preview-summary { background: var(--color-primary-soft); color: var(--color-primary); border: 1px solid var(--color-primary); border-radius: var(--radius); padding: 10px 14px; font-size: 13px; }
23966
+ .mint-auto-group__preview-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
23967
+ .mint-auto-group__preview-panel { background: var(--bg-secondary); border: 1px solid var(--border); border-radius: var(--radius); padding: 14px; }
23968
+ .mint-auto-group__preview-panel h4 { margin: 0 0 10px; font-size: 12px; color: var(--text-muted); text-transform: uppercase; letter-spacing: .06em; }
23969
+ .mint-auto-group__preview-group { border: 1px solid var(--border-color); border-radius: var(--radius); overflow: hidden; }
23970
+ .mint-auto-group__preview-group[open] { background: var(--bg-secondary); }
23971
+ .mint-auto-group__preview-group summary { display: flex; align-items: center; gap: 10px; cursor: pointer; font-size: 13px; padding: 0.5rem 0.875rem; }
23972
+ .mint-auto-group__preview-group[open] summary { border-bottom: 1px solid var(--border); }
23973
+ .mint-auto-group__preview-dot { width: 10px; height: 10px; border-radius: 9999px; flex-shrink: 0; }
23974
+ .mint-auto-group__preview-count { margin-left: auto; font-family: 'Fira Code', monospace; font-size: 12px; color: var(--text-secondary); background: var(--bg-primary); border: 1px solid var(--border); padding: 2px 8px; border-radius: 9999px; }
23975
+ .mint-auto-group__preview-samples { display: flex; flex-wrap: wrap; gap: 6px; padding: 0.5rem 0.875rem 0.625rem; }
23976
+ .mint-auto-group__preview-sample { font-family: 'Fira Code', monospace; font-size: 11.5px; color: var(--text-primary); background: var(--bg-primary); border: 1px solid var(--border); padding: 3px 8px; border-radius: 9999px; }
23977
+ .mint-auto-group__qc-chips { display: flex; flex-wrap: wrap; gap: 6px; }
23978
+ .mint-auto-group__qc-chip { background: var(--mint-warning-bg); color: #92400E; border: 1px solid var(--mint-warning-border); padding: 4px 10px; border-radius: 9999px; font-size: 12px; }
23979
+ .mint-auto-group__fingerprint { margin-top: 14px; }
23980
+ .mint-auto-group__fingerprint summary { cursor: pointer; font-size: 12px; color: var(--text-muted); }
23981
+ .mint-auto-group__fingerprint pre { font-family: 'Fira Code', monospace; font-size: 11px; background: var(--bg-primary); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: 8px; overflow-x: auto; }
23951
23982
  /* GroupAssigner Component Styles */
23952
23983
  .mint-group-assigner {
23953
23984
  display: flex;