@conduction/nextcloud-vue 2.83.0 → 2.85.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue.js +1 -1
  2. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js +131 -3
  3. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js.map +1 -1
  4. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js +54 -18
  5. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js.map +1 -1
  6. package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue.js +1 -1
  7. package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue2.js +1 -1
  8. package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue2.js.map +1 -1
  9. package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue3.js.map +1 -1
  10. package/dist/esm/components/CnBoardView/CnBoardView.vue.js +1 -1
  11. package/dist/esm/components/CnBoardView/CnBoardView.vue2.js +232 -4
  12. package/dist/esm/components/CnBoardView/CnBoardView.vue2.js.map +1 -1
  13. package/dist/esm/components/CnBoardView/CnBoardView.vue3.js +95 -51
  14. package/dist/esm/components/CnBoardView/CnBoardView.vue3.js.map +1 -1
  15. package/dist/esm/components/CnBodySections/CnBodySections.vue.js +1 -1
  16. package/dist/esm/components/CnBodySections/CnBodySections.vue2.js +22 -1
  17. package/dist/esm/components/CnBodySections/CnBodySections.vue2.js.map +1 -1
  18. package/dist/esm/components/CnBodySections/CnBodySections.vue3.js.map +1 -1
  19. package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue.js +1 -1
  20. package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue2.js +47 -4
  21. package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue2.js.map +1 -1
  22. package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue3.js.map +1 -1
  23. package/dist/esm/components/CnDashboardGrid/CnDashboardGrid.vue.js +1 -1
  24. package/dist/esm/components/CnDashboardGrid/CnDashboardGrid.vue2.js +239 -3
  25. package/dist/esm/components/CnDashboardGrid/CnDashboardGrid.vue2.js.map +1 -1
  26. package/dist/esm/components/CnDashboardGrid/CnDashboardGrid.vue3.js +5 -5
  27. package/dist/esm/components/CnDashboardGrid/CnDashboardGrid.vue3.js.map +1 -1
  28. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue.js +1 -1
  29. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +50 -0
  30. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
  31. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +22 -12
  32. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
  33. package/dist/esm/components/CnDeltaWidget/CnDeltaWidget.vue.js +1 -1
  34. package/dist/esm/components/CnDeltaWidget/CnDeltaWidget.vue2.js +1 -1
  35. package/dist/esm/components/CnDeltaWidget/CnDeltaWidget.vue2.js.map +1 -1
  36. package/dist/esm/components/CnDeltaWidget/CnDeltaWidget.vue3.js.map +1 -1
  37. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +226 -8
  38. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
  39. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
  40. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue.js +1 -1
  41. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js +3 -1
  42. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js.map +1 -1
  43. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js.map +1 -1
  44. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue.js +1 -1
  45. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js +18 -5
  46. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js.map +1 -1
  47. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue3.js.map +1 -1
  48. package/dist/esm/components/CnFieldListWidget/CnFieldListWidget.vue.js +1 -1
  49. package/dist/esm/components/CnFieldListWidget/CnFieldListWidget.vue2.js +38 -1
  50. package/dist/esm/components/CnFieldListWidget/CnFieldListWidget.vue2.js.map +1 -1
  51. package/dist/esm/components/CnFieldListWidget/CnFieldListWidget.vue3.js +45 -5
  52. package/dist/esm/components/CnFieldListWidget/CnFieldListWidget.vue3.js.map +1 -1
  53. package/dist/esm/components/CnGaugeWidget/CnGaugeWidget.vue.js +1 -1
  54. package/dist/esm/components/CnGaugeWidget/CnGaugeWidget.vue2.js +1 -1
  55. package/dist/esm/components/CnGaugeWidget/CnGaugeWidget.vue2.js.map +1 -1
  56. package/dist/esm/components/CnGaugeWidget/CnGaugeWidget.vue3.js.map +1 -1
  57. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +548 -77
  58. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  59. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +191 -82
  60. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  61. package/dist/esm/components/CnIndexPage/useSelfFetchList.js +11 -2
  62. package/dist/esm/components/CnIndexPage/useSelfFetchList.js.map +1 -1
  63. package/dist/esm/components/CnInteractionFormWidget/CnInteractionFormWidget.vue2.js +29 -6
  64. package/dist/esm/components/CnInteractionFormWidget/CnInteractionFormWidget.vue2.js.map +1 -1
  65. package/dist/esm/components/CnInteractionFormWidget/CnInteractionFormWidget.vue3.js.map +1 -1
  66. package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue.js +1 -1
  67. package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue2.js +126 -2
  68. package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue2.js.map +1 -1
  69. package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue3.js +24 -2
  70. package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue3.js.map +1 -1
  71. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue.js +1 -1
  72. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js +106 -3
  73. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js.map +1 -1
  74. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js.map +1 -1
  75. package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue.js +1 -1
  76. package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue2.js +67 -5
  77. package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue2.js.map +1 -1
  78. package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue3.js +181 -124
  79. package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue3.js.map +1 -1
  80. package/dist/esm/components/CnReportsPage/CnReportsPage.vue.js +1 -1
  81. package/dist/esm/components/CnReportsPage/CnReportsPage.vue2.js +135 -2
  82. package/dist/esm/components/CnReportsPage/CnReportsPage.vue2.js.map +1 -1
  83. package/dist/esm/components/CnReportsPage/CnReportsPage.vue3.js +95 -43
  84. package/dist/esm/components/CnReportsPage/CnReportsPage.vue3.js.map +1 -1
  85. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue.js +1 -1
  86. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue2.js +5 -1
  87. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue2.js.map +1 -1
  88. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue3.js.map +1 -1
  89. package/dist/esm/components/CnStagesWidget/CnStagesWidget.vue.js +1 -1
  90. package/dist/esm/components/CnStagesWidget/CnStagesWidget.vue2.js +72 -5
  91. package/dist/esm/components/CnStagesWidget/CnStagesWidget.vue2.js.map +1 -1
  92. package/dist/esm/components/CnStagesWidget/CnStagesWidget.vue3.js +33 -8
  93. package/dist/esm/components/CnStagesWidget/CnStagesWidget.vue3.js.map +1 -1
  94. package/dist/esm/components/CnStatWidget/CnStatWidget.vue.js +1 -1
  95. package/dist/esm/components/CnStatWidget/CnStatWidget.vue2.js +135 -11
  96. package/dist/esm/components/CnStatWidget/CnStatWidget.vue2.js.map +1 -1
  97. package/dist/esm/components/CnStatWidget/CnStatWidget.vue3.js +6 -2
  98. package/dist/esm/components/CnStatWidget/CnStatWidget.vue3.js.map +1 -1
  99. package/dist/esm/components/CnStatsBlockWidget/CnStatsBlockWidget.vue.js +1 -1
  100. package/dist/esm/components/CnStatsBlockWidget/CnStatsBlockWidget.vue2.js +17 -2
  101. package/dist/esm/components/CnStatsBlockWidget/CnStatsBlockWidget.vue2.js.map +1 -1
  102. package/dist/esm/components/CnStatsBlockWidget/CnStatsBlockWidget.vue3.js +1 -1
  103. package/dist/esm/components/CnStatsBlockWidget/CnStatsBlockWidget.vue3.js.map +1 -1
  104. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue.js +1 -1
  105. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js +39 -6
  106. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
  107. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js.map +1 -1
  108. package/dist/esm/components/CnToggleTableWidget/CnToggleTableWidget.vue.js +1 -1
  109. package/dist/esm/components/CnToggleTableWidget/CnToggleTableWidget.vue2.js +140 -7
  110. package/dist/esm/components/CnToggleTableWidget/CnToggleTableWidget.vue2.js.map +1 -1
  111. package/dist/esm/components/CnToggleTableWidget/CnToggleTableWidget.vue3.js.map +1 -1
  112. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue.js +1 -1
  113. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue2.js +37 -9
  114. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue2.js.map +1 -1
  115. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue3.js +6 -5
  116. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue3.js.map +1 -1
  117. package/dist/esm/components/CnWalkthrough/CnWalkthrough.vue.js +1 -1
  118. package/dist/esm/components/CnWalkthrough/CnWalkthrough.vue2.js +16 -0
  119. package/dist/esm/components/CnWalkthrough/CnWalkthrough.vue2.js.map +1 -1
  120. package/dist/esm/components/CnWalkthrough/CnWalkthrough.vue3.js.map +1 -1
  121. package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue.js +1 -1
  122. package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue2.js +2 -1
  123. package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue2.js.map +1 -1
  124. package/dist/esm/components/CnWeekStripWidget/CnWeekStripWidget.vue3.js.map +1 -1
  125. package/dist/esm/components/CnWidgetCardGrid/CnWidgetCardGrid.vue2.js +53 -1
  126. package/dist/esm/components/CnWidgetCardGrid/CnWidgetCardGrid.vue2.js.map +1 -1
  127. package/dist/esm/components/CnWidgetCardGrid/CnWidgetCardGrid.vue3.js +3 -2
  128. package/dist/esm/components/CnWidgetCardGrid/CnWidgetCardGrid.vue3.js.map +1 -1
  129. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue.js +1 -1
  130. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue2.js +135 -0
  131. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue2.js.map +1 -1
  132. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue3.js.map +1 -1
  133. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue.js +1 -1
  134. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js +19 -0
  135. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js.map +1 -1
  136. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js +37 -19
  137. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js.map +1 -1
  138. package/dist/esm/composables/useListView.js +21 -0
  139. package/dist/esm/composables/useListView.js.map +1 -1
  140. package/dist/esm/dialogs/CnTransitionInputDialog.vue.js +1 -1
  141. package/dist/esm/dialogs/CnTransitionInputDialog.vue2.js +68 -6
  142. package/dist/esm/dialogs/CnTransitionInputDialog.vue2.js.map +1 -1
  143. package/dist/esm/dialogs/CnTransitionInputDialog.vue3.js +133 -105
  144. package/dist/esm/dialogs/CnTransitionInputDialog.vue3.js.map +1 -1
  145. package/dist/esm/index.js +1 -0
  146. package/dist/esm/index.js.map +1 -1
  147. package/dist/esm/l10n/en.json.js +38 -1
  148. package/dist/esm/l10n/en.json.js.map +1 -1
  149. package/dist/esm/l10n/nl.json.js +78 -1
  150. package/dist/esm/l10n/nl.json.js.map +1 -1
  151. package/dist/esm/library-style.js +1 -1
  152. package/dist/esm/nextcloud-vue.css +1030 -533
  153. package/dist/esm/store/useObjectStore.js +16 -2
  154. package/dist/esm/store/useObjectStore.js.map +1 -1
  155. package/dist/esm/utils/boardColumns.js +8 -1
  156. package/dist/esm/utils/boardColumns.js.map +1 -1
  157. package/dist/esm/utils/boardReferenceColumns.js +278 -0
  158. package/dist/esm/utils/boardReferenceColumns.js.map +1 -0
  159. package/dist/esm/utils/buildManifest.js +41 -4
  160. package/dist/esm/utils/buildManifest.js.map +1 -1
  161. package/dist/esm/utils/detailWidgetVisibility.js +149 -0
  162. package/dist/esm/utils/detailWidgetVisibility.js.map +1 -0
  163. package/dist/esm/utils/formatMetric.js +39 -3
  164. package/dist/esm/utils/formatMetric.js.map +1 -1
  165. package/dist/esm/utils/gridStack.js +40 -1
  166. package/dist/esm/utils/gridStack.js.map +1 -1
  167. package/dist/esm/utils/humaniseKey.js +41 -0
  168. package/dist/esm/utils/humaniseKey.js.map +1 -0
  169. package/dist/esm/utils/notificationRuleLabel.js +6 -23
  170. package/dist/esm/utils/notificationRuleLabel.js.map +1 -1
  171. package/dist/esm/utils/resolveManifestTokens.js +1 -0
  172. package/dist/esm/utils/resolveManifestTokens.js.map +1 -1
  173. package/dist/esm/utils/sentinelTokens.js +9 -0
  174. package/dist/esm/utils/sentinelTokens.js.map +1 -1
  175. package/dist/esm/utils/validateManifestV2.compiled.js +3 -3
  176. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  177. package/dist/esm/utils/widgetDispatch.js +8 -2
  178. package/dist/esm/utils/widgetDispatch.js.map +1 -1
  179. package/dist/nextcloud-vue.cjs.js +17159 -13422
  180. package/dist/nextcloud-vue.cjs.js.map +2 -2
  181. package/dist/nextcloud-vue.css +1030 -533
  182. package/l10n/en.json +38 -1
  183. package/l10n/nl.json +78 -1
  184. package/package.json +1 -1
  185. package/src/components/CnAdminSettingsShell/CnAdminSettingsShell.vue +160 -8
  186. package/src/components/CnAuditTrailCard/CnAuditTrailCard.vue +1 -1
  187. package/src/components/CnBoardView/CnBoardView.vue +262 -6
  188. package/src/components/CnBodySections/CnBodySections.vue +22 -1
  189. package/src/components/CnCountdownWidget/CnCountdownWidget.vue +47 -4
  190. package/src/components/CnDashboardGrid/CnDashboardGrid.vue +244 -8
  191. package/src/components/CnDashboardPage/CnDashboardPage.vue +62 -2
  192. package/src/components/CnDeltaWidget/CnDeltaWidget.vue +1 -1
  193. package/src/components/CnDetailPage/CnDetailPage.md +3 -1
  194. package/src/components/CnDetailPage/CnDetailPage.vue +226 -8
  195. package/src/components/CnDetailWidgetHost/CnDetailWidgetHost.vue +3 -1
  196. package/src/components/CnFactsWidget/CnFactsWidget.vue +18 -5
  197. package/src/components/CnFieldListWidget/CnFieldListWidget.vue +63 -1
  198. package/src/components/CnGaugeWidget/CnGaugeWidget.vue +1 -1
  199. package/src/components/CnIndexPage/CnIndexPage.vue +586 -25
  200. package/src/components/CnIndexPage/useSelfFetchList.js +10 -1
  201. package/src/components/CnInteractionFormWidget/CnInteractionFormWidget.vue +29 -6
  202. package/src/components/CnObjectDataWidget/CnObjectDataWidget.md +1 -1
  203. package/src/components/CnObjectDataWidget/CnObjectDataWidget.vue +154 -5
  204. package/src/components/CnRecordListWidget/CnRecordListWidget.vue +106 -3
  205. package/src/components/CnRegisterMapping/CnRegisterMapping.md +5 -0
  206. package/src/components/CnRegisterMapping/CnRegisterMapping.vue +231 -96
  207. package/src/components/CnReportsPage/CnReportsPage.vue +179 -1
  208. package/src/components/CnSettingsPage/CnSettingsPage.vue +5 -1
  209. package/src/components/CnStagesWidget/CnStagesWidget.vue +103 -6
  210. package/src/components/CnStatWidget/CnStatWidget.vue +137 -12
  211. package/src/components/CnStatsBlockWidget/CnStatsBlockWidget.vue +34 -3
  212. package/src/components/CnTabsWidget/CnTabsWidget.vue +39 -6
  213. package/src/components/CnToggleTableWidget/CnToggleTableWidget.vue +140 -7
  214. package/src/components/CnVersionInfoCard/CnVersionInfoCard.md +2 -1
  215. package/src/components/CnVersionInfoCard/CnVersionInfoCard.vue +42 -13
  216. package/src/components/CnWalkthrough/CnWalkthrough.vue +16 -0
  217. package/src/components/CnWeekStripWidget/CnWeekStripWidget.vue +2 -1
  218. package/src/components/CnWidgetCardGrid/CnWidgetCardGrid.vue +55 -2
  219. package/src/components/CnWidgetObjectTable/CnWidgetObjectTable.vue +135 -0
  220. package/src/components/CnWidgetWrapper/CnWidgetWrapper.md +10 -0
  221. package/src/components/CnWidgetWrapper/CnWidgetWrapper.vue +44 -1
  222. package/src/composables/useListView.js +21 -0
  223. package/src/css/board.css +65 -4
  224. package/src/css/dialog.css +4 -2
  225. package/src/css/form-field.css +14 -0
  226. package/src/css/form-widget.css +11 -0
  227. package/src/css/index-page.css +49 -0
  228. package/src/css/kpi-card.css +13 -0
  229. package/src/css/look-board-reports.css +58 -0
  230. package/src/css/look-board.css +108 -7
  231. package/src/dialogs/CnTransitionInputDialog.vue +87 -7
  232. package/src/index.js +2 -0
  233. package/src/schemas/app-manifest-v2.schema.json +137 -6
  234. package/src/store/useObjectStore.js +16 -2
  235. package/src/utils/boardColumns.js +8 -1
  236. package/src/utils/boardReferenceColumns.js +274 -0
  237. package/src/utils/buildManifest.js +40 -3
  238. package/src/utils/detailWidgetVisibility.js +145 -0
  239. package/src/utils/formatMetric.js +38 -2
  240. package/src/utils/gridStack.js +39 -0
  241. package/src/utils/humaniseKey.js +38 -0
  242. package/src/utils/notificationRuleLabel.js +5 -23
  243. package/src/utils/resolveManifestTokens.js +1 -0
  244. package/src/utils/sentinelTokens.js +9 -0
  245. package/src/utils/validateManifestV2.compiled.js +3 -3
  246. package/src/utils/widgetDispatch.js +8 -2
@@ -489,6 +489,7 @@
489
489
  `.cn-look-board.cn-admin-settings-shell` is a shell told `look: "board"`
490
490
  itself, on an admin page no CnAppRoot wraps. */
491
491
  .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > .cn-admin-settings-shell__header,
492
+ .cn-look-board .cn-admin-settings-shell__panel:not(.cn-look-nextcloud *) > :not(.settings-section):not(.cn-credentials),
492
493
  .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):not(.cn-credentials),
493
494
  .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):not(.cn-credentials) {
494
495
  grid-column: 1 / -1;
@@ -496,6 +497,7 @@
496
497
 
497
498
  .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *),
498
499
  .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *),
500
+ .cn-look-board .cn-admin-settings-shell__panel:not(.cn-look-nextcloud *),
499
501
  .cn-look-board .cn-settings-page__sections:not(.cn-look-nextcloud *) {
500
502
  display: grid;
501
503
  grid-template-columns: repeat(auto-fit, minmax(420px, 1fr));
@@ -507,14 +509,17 @@
507
509
  Settings.vue) takes no box of its own: its sections are grid items and
508
510
  cards, as if the shell held them directly. Only an element whose own
509
511
  children are sections; anything else keeps spanning the grid. */
512
+ .cn-look-board .cn-admin-settings-shell__panel:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section),
510
513
  .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section),
511
514
  .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) {
512
515
  display: contents;
513
516
  }
514
517
 
515
- /* The card: a section of the shell (also one inside a wrapping element), or a CnSettingsCard of the page. */
518
+ /* The card: a section of the shell or of one of its tab panels (also one inside a wrapping element), or a CnSettingsCard of the page. */
519
+ .cn-look-board .cn-admin-settings-shell__panel:not(.cn-look-nextcloud *) > .settings-section,
516
520
  .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > .settings-section,
517
521
  .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > .settings-section,
522
+ .cn-look-board .cn-admin-settings-shell__panel:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section,
518
523
  .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section,
519
524
  .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section,
520
525
  .cn-look-board .cn-settings-page__sections:not(.cn-look-nextcloud *) > .cn-settings-card {
@@ -550,7 +555,7 @@
550
555
  justify-content: flex-start;
551
556
  text-align: start;
552
557
  margin: 0;
553
- font-size: 19px;
558
+ font-size: 17px;
554
559
  font-weight: 700;
555
560
  line-height: 1.3;
556
561
  }
@@ -558,18 +563,83 @@
558
563
  .cn-look-board .settings-section:not(.cn-look-nextcloud *) .settings-section__desc {
559
564
  margin: 4px 0 0;
560
565
  font-size: 14px;
561
- line-height: 1.45;
566
+ line-height: 1.5;
562
567
  color: var(--color-text-maxcontrast);
563
568
  }
564
569
 
565
- /* Section actions sit at the end of the title row. */
570
+ /* Section actions sit at the end of the title row. The row is a grid, so a
571
+ long title wraps beside the buttons instead of running under them, and in a
572
+ narrow card the buttons drop under the title and description. */
573
+ .cn-look-board .settings-section:not(.cn-look-nextcloud *):has(> .cn-settings-section__actions) {
574
+ /* `!important`: the card rules above set `display: flex` at higher specificity for a section in a wrapping element. */
575
+ display: grid !important;
576
+ grid-template-columns: minmax(0, 1fr) auto;
577
+ align-items: start;
578
+ column-gap: 16px;
579
+ container-type: inline-size;
580
+ }
581
+
582
+ .cn-look-board .settings-section:not(.cn-look-nextcloud *):has(> .cn-settings-section__actions) > * {
583
+ grid-column: 1 / -1;
584
+ }
585
+
586
+ .cn-look-board .settings-section:not(.cn-look-nextcloud *):has(> .cn-settings-section__actions) > .settings-section__name {
587
+ grid-row: 1;
588
+ grid-column: 1;
589
+ }
590
+
566
591
  .cn-look-board .settings-section:not(.cn-look-nextcloud *) > .cn-settings-section__actions {
567
- position: absolute;
568
- inset-block-start: 22px;
569
- inset-inline-end: 24px;
592
+ grid-row: 1;
593
+ grid-column: 2;
594
+ position: static;
595
+ flex-wrap: wrap;
596
+ justify-self: end;
570
597
  float: none;
571
598
  }
572
599
 
600
+ @container (max-width: 520px) {
601
+ .cn-look-board .settings-section:not(.cn-look-nextcloud *) > .cn-settings-section__actions {
602
+ grid-row: auto;
603
+ grid-column: 1 / -1;
604
+ justify-self: start;
605
+ justify-content: flex-start;
606
+ }
607
+ }
608
+
609
+ /* An admin settings card as the board draws it (PtBeheerinstellingen,
610
+ KqBeheerAlgemeen, HuInstellingen): 20px 22px padding, and the title and
611
+ description one group, 4px apart, spaced from the rest of the card by the
612
+ card's 14px gap. The description is a sibling of the title in that column,
613
+ so it pulls itself back up to 4px under the title. The gap spaces the
614
+ content, so a note card adds no margin of its own (NcNoteCard draws 16px
615
+ above and below). A CnSettingsPage card keeps 22px 24px. */
616
+ .cn-look-board .cn-admin-settings-shell__panel:not(.cn-look-nextcloud *) > .settings-section,
617
+ .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > .settings-section,
618
+ .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > .settings-section,
619
+ .cn-look-board .cn-admin-settings-shell__panel:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section,
620
+ .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section,
621
+ .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section {
622
+ padding: 20px 22px;
623
+ }
624
+
625
+ .cn-look-board .cn-admin-settings-shell__panel:not(.cn-look-nextcloud *) > .settings-section > .settings-section__desc,
626
+ .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > .settings-section > .settings-section__desc,
627
+ .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > .settings-section > .settings-section__desc,
628
+ .cn-look-board .cn-admin-settings-shell__panel:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section > .settings-section__desc,
629
+ .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section > .settings-section__desc,
630
+ .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section > .settings-section__desc {
631
+ margin-top: -10px;
632
+ }
633
+
634
+ .cn-look-board .cn-admin-settings-shell__panel:not(.cn-look-nextcloud *) > .settings-section > .notecard,
635
+ .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > .settings-section > .notecard,
636
+ .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > .settings-section > .notecard,
637
+ .cn-look-board .cn-admin-settings-shell__panel:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section > .notecard,
638
+ .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section > .notecard,
639
+ .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section > .notecard {
640
+ margin-block: 0;
641
+ }
642
+
573
643
  .cn-look-board .settings-section.cn-settings-section--wide:not(.cn-look-nextcloud *),
574
644
  .cn-look-board .cn-settings-card:has(.cn-settings-section--wide):not(.cn-look-nextcloud *) {
575
645
  grid-column: 1 / -1;
@@ -683,6 +753,18 @@
683
753
  font-weight: 600;
684
754
  }
685
755
 
756
+ /* ---- Dashboard card titles --------------------------------------------- */
757
+ /* A card's title on a dashboard (and on the widgets under a reports page) is
758
+ the board's card h2: 17px weight 700 (boards PqMijnWerk, DcRapportages and
759
+ the app dashboards; `--cn-board-heading-size`, as on a detail page's cards).
760
+ The wrapper's own 14px weight 600 stays for the Nextcloud look, and the
761
+ native-dashboard chrome keeps its 20px. */
762
+ .cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-widget-wrapper:not(.cn-widget-wrapper--nc-dashboard) .cn-widget-wrapper__title {
763
+ font-size: var(--cn-board-heading-size, 17px);
764
+ font-weight: 700;
765
+ line-height: 1.3;
766
+ }
767
+
686
768
  /* ---- Record list on a dashboard card (PtDashboard) ---------------------- */
687
769
  /* The dashboard's card body is flush, so the rows carry their own inset: the
688
770
  board's card pads 24px at the sides and each row 14px, a soft hairline
@@ -769,6 +851,25 @@
769
851
  .cn-look-board .cn-dashboard-page:not(.cn-look-nextcloud *) .cn-record-list__chevron {
770
852
  display: none;
771
853
  }
854
+
855
+ /* ---- Week strip (DqMijnWerk "Termijnen deze week") ---------------------- */
856
+ /* The days wrap inside the card instead of scrolling sideways: a row holds
857
+ as many days of at least 120px as the card fits, and the rest go to the
858
+ next row (dossiq at 1100 wide held 680px of days in a 494px card and
859
+ scrolled; now three days and two). 120px keeps a case title's words whole;
860
+ five 88px days fitted one row but broke "Bezwaar" mid-word. A card wide
861
+ enough for the week draws it as before, one row of equal columns. The
862
+ day's head wraps its "today" badge under the label when the day is
863
+ narrow.
864
+ @spec openspec/changes/board-week-strip-fits/specs/week-strip-board-look/spec.md#requirement-a-board-week-strip-fits-its-card */
865
+ .cn-look-board .cn-week-strip:not(.cn-look-nextcloud *) .cn-week-strip__days {
866
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 120px), 1fr));
867
+ min-width: 0;
868
+ }
869
+
870
+ .cn-look-board .cn-week-strip:not(.cn-look-nextcloud *) .cn-week-strip__head {
871
+ flex-wrap: wrap;
872
+ }
772
873
  /*
773
874
  * The board dialog (screens-dialog-parity, canon section 5).
774
875
  *
@@ -806,8 +907,10 @@
806
907
  }
807
908
 
808
909
  /* The header is ours: NcModal's own close button and NcDialog's heading give
809
- way (the heading stays as the accessible name, visually hidden). */
810
- .cn-dialog-board .modal-container__close {
910
+ way (the heading stays as the accessible name, visually hidden). The mask
911
+ class raises the rule above NcButton's `.button-vue[data-v-…]`, whose
912
+ stylesheet a spawned dialog can load after this one. */
913
+ .modal-mask.cn-dialog-board .modal-container__close {
811
914
  display: none;
812
915
  }
813
916
 
@@ -1157,6 +1260,20 @@
1157
1260
  .cn-look-board .cn-form-page__footer .cn-form-page__primary {
1158
1261
  margin-inline-start: auto;
1159
1262
  }
1263
+
1264
+ /* A Nextcloud text area or text field with its label inside the field hides
1265
+ its placeholder until the field takes focus, so the label and the
1266
+ placeholder are never drawn over each other. A theme that forces every
1267
+ placeholder visible (thematiq's nldesign system sets
1268
+ `::placeholder { opacity: 1 !important }`) drew both: the dossiq DqTaak
1269
+ notes field read "Een notitie toevoegen" over "Wat heb je gevonden, wie heb
1270
+ je gebeld?". Under the board look the placeholder stays hidden at rest, as
1271
+ Nextcloud intends; a field with its label outside keeps its placeholder.
1272
+ @spec openspec/changes/board-field-label-over-placeholder/specs/form-field-board-look/spec.md#requirement-a-field-label-and-its-placeholder-are-never-drawn-over-each-other */
1273
+ .cn-look-board .textarea__input:not(:focus, .textarea__input--label-outside)::placeholder,
1274
+ .cn-look-board .input-field:not(.input-field--label-outside) .input-field__input:not(:focus)::placeholder {
1275
+ opacity: 0 !important;
1276
+ }
1160
1277
  /*
1161
1278
  * The board (screens-kanban-parity, canon section 8).
1162
1279
  *
@@ -1255,19 +1372,24 @@
1255
1372
  gap: 8px;
1256
1373
  }
1257
1374
 
1258
- .cn-board-view.cn-board-view--board .cn-board-view__card-title {
1375
+ /* The title is a link drawn as a heading (board DqWerkbord): main text, no
1376
+ underline. `!important` because a theme's `a { color; text-decoration }`
1377
+ carries it (thematiq), and a bare `a` with `!important` beats any class. */
1378
+ .cn-board-view.cn-board-view--board .cn-board-view__card-title,
1379
+ .cn-board-view.cn-board-view--board .cn-board-view__card-title:visited {
1259
1380
  flex: 1 1 auto;
1260
1381
  min-width: 0;
1261
1382
  font-size: 15px;
1262
1383
  font-weight: 700;
1263
1384
  line-height: 1.3;
1264
- color: var(--color-main-text);
1265
- text-decoration: none;
1385
+ color: var(--color-main-text) !important;
1386
+ text-decoration: none !important;
1266
1387
  overflow-wrap: anywhere;
1267
1388
  }
1268
1389
 
1269
1390
  .cn-board-view.cn-board-view--board .cn-board-view__card-title:hover {
1270
- text-decoration: underline;
1391
+ color: var(--color-main-text) !important;
1392
+ text-decoration: underline !important;
1271
1393
  }
1272
1394
 
1273
1395
  .cn-board-view.cn-board-view--board .cn-board-view__card-title:focus-visible {
@@ -1426,6 +1548,62 @@
1426
1548
  outline: 2px solid var(--color-primary-element);
1427
1549
  outline-offset: 2px;
1428
1550
  }
1551
+
1552
+ /*
1553
+ * screens-board-reference-columns: a wide board wraps its columns onto more
1554
+ * rows (`config.board.wrap`), as many to a row as fit at 240px, instead of
1555
+ * one row that scrolls sideways.
1556
+ */
1557
+ .cn-board-view.cn-board-view--wrap .cn-board-view__columns {
1558
+ display: grid;
1559
+ grid-auto-flow: row;
1560
+ grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
1561
+ overflow-x: visible;
1562
+ }
1563
+
1564
+ .cn-board-view.cn-board-view--wrap:not(.cn-board-view--board) .cn-board-view__columns {
1565
+ gap: 12px;
1566
+ }
1567
+
1568
+ /* A column the dragged card cannot reach fades; the label stays readable. */
1569
+ .cn-board-view .cn-board-view__column--unreachable {
1570
+ opacity: 0.45;
1571
+ }
1572
+
1573
+ /* The selection checkbox: in the board look's card head, before the title. */
1574
+ .cn-board-view .cn-board-view__select {
1575
+ flex: none;
1576
+ width: 16px;
1577
+ height: 16px;
1578
+ margin: 2px 0 0;
1579
+ accent-color: var(--color-primary-element);
1580
+ cursor: pointer;
1581
+ }
1582
+
1583
+ /* Board look: the board draws no checkbox. It shows on a hovered card, on a
1584
+ card holding focus (so Tab still reaches it), once anything is selected, and
1585
+ always where there is no hover. Collapsed rather than hidden, so it stays in
1586
+ the tab order. */
1587
+ @media (hover: hover) {
1588
+ .cn-board-view.cn-board-view--board:not(.cn-board-view--selecting) .cn-board-view__card:not(:hover, :focus-within) .cn-board-view__select {
1589
+ width: 0;
1590
+ margin-inline-end: -8px;
1591
+ opacity: 0;
1592
+ }
1593
+ }
1594
+
1595
+ /* A menu target the card cannot reach: still listed, greyed, with its note. */
1596
+ .cn-board-view.cn-board-view--board .cn-board-view__menu-item.cn-board-view__menu-item--blocked {
1597
+ color: var(--color-text-maxcontrast);
1598
+ cursor: not-allowed;
1599
+ }
1600
+
1601
+ .cn-board-view .cn-board-view__menu-note {
1602
+ margin-inline-start: auto;
1603
+ padding-inline-start: 12px;
1604
+ font-size: 12px;
1605
+ color: var(--color-text-maxcontrast);
1606
+ }
1429
1607
  /*
1430
1608
  * The board look for the index list and its cards (screens-index-list-parity,
1431
1609
  * screens-card-parity).
@@ -3923,6 +4101,19 @@ a.cn-kpi-card--stacked:focus-visible {
3923
4101
  color: var(--color-main-text);
3924
4102
  }
3925
4103
 
4104
+ /* A board tile whose label wraps grows into its cell instead of clipping its
4105
+ own last line. dossiq's "Afgehandeld deze maand" at 1100 wide held 129px of
4106
+ content in a 114px tile and lost its caption's bottom. The tile still fills
4107
+ a cell it fits (`min-height: 100%`), so every tile that fits keeps its
4108
+ size; one that does not takes the height of its content, and the card-fit
4109
+ cell's `safe center` keeps its top in view.
4110
+ @spec openspec/changes/board-stat-tile-grows/specs/stat-tile-board-look/spec.md#requirement-a-board-stat-tile-shows-all-its-lines */
4111
+ .cn-kpi-card--board.cn-kpi-card--stacked {
4112
+ flex: 0 0 auto;
4113
+ height: auto;
4114
+ min-height: 100%;
4115
+ }
4116
+
3926
4117
  .cn-kpi-card--board.cn-kpi-card--stacked .cn-kpi-card__caption-line,
3927
4118
  .cn-kpi-card--board.cn-kpi-card--stacked .cn-stats-block__count-label {
3928
4119
  font-size: 13px;
@@ -4176,6 +4367,7 @@ a.cn-kpi-card--board * {
4176
4367
  }
4177
4368
 
4178
4369
  .cn-form-widget__textarea {
4370
+ box-sizing: border-box;
4179
4371
  width: 100%;
4180
4372
  min-height: 80px;
4181
4373
  padding: 8px;
@@ -4197,6 +4389,16 @@ a.cn-kpi-card--board * {
4197
4389
  color: var(--color-error);
4198
4390
  margin: 0;
4199
4391
  }
4392
+
4393
+ /* A select takes its field's width, however narrow the card. NcSelect is at
4394
+ least 260px wide on its own, so in pipelinq's 234px "Nieuw contactmoment"
4395
+ card at 1100 wide the channel and client selects ran 40px past the card's
4396
+ edge. The client picker (CnResourceSelect) is an NcSelect too.
4397
+ @spec openspec/changes/interaction-form-fits-and-reads-dutch/specs/interaction-form-widget/spec.md#requirement-the-interaction-form-fits-its-card-and-reads-in-the-readers-language */
4398
+ .cn-form-widget .v-select.select {
4399
+ min-width: 0;
4400
+ width: 100%;
4401
+ }
4200
4402
  /* ========================================
4201
4403
  @conduction/nextcloud-vue — Detail Grid & Layout Utility Styles
4202
4404
  ======================================== */
@@ -5117,6 +5319,19 @@ a.cn-kpi-card--board * {
5117
5319
  margin-top: 0;
5118
5320
  }
5119
5321
 
5322
+ /* The board view's footer: how many rows it holds of how many match, and
5323
+ "Load more" while the list is not complete. */
5324
+ .cn-index-page__board-load {
5325
+ display: flex;
5326
+ flex-wrap: wrap;
5327
+ align-items: center;
5328
+ justify-content: space-between;
5329
+ gap: 8px 16px;
5330
+ padding: 12px 16px;
5331
+ color: var(--color-text-maxcontrast);
5332
+ font-size: 14px;
5333
+ }
5334
+
5120
5335
  /* Table view owns both scroll axes. With the page column scrolling instead, the
5121
5336
  table's horizontal scrollbar sat at the bottom of the (taller-than-viewport)
5122
5337
  table, so it only appeared after scrolling down, and the pagination was
@@ -5382,6 +5597,42 @@ a.cn-kpi-card--board * {
5382
5597
  outline: 2px solid var(--color-primary-element);
5383
5598
  outline-offset: 2px;
5384
5599
  }
5600
+
5601
+ /*
5602
+ * screens-board-reference-columns: the board view's controls after the
5603
+ * search (board DqWerkbord): "Case type:" and "Columns:" as a 600 label and a
5604
+ * 36px select, then the hint in the secondary text colour.
5605
+ */
5606
+ .cn-index-page__board-control {
5607
+ display: inline-flex;
5608
+ align-items: center;
5609
+ gap: 8px;
5610
+ font-size: 14px;
5611
+ font-weight: 600;
5612
+ color: var(--color-main-text);
5613
+ }
5614
+
5615
+ .cn-index-page__board-select {
5616
+ height: 36px;
5617
+ min-height: 36px;
5618
+ margin: 0;
5619
+ padding: 0 10px;
5620
+ border: 1px solid var(--color-border-maxcontrast);
5621
+ border-radius: 8px;
5622
+ background-color: var(--color-main-background);
5623
+ color: var(--color-main-text);
5624
+ font: inherit;
5625
+ font-weight: 400;
5626
+ }
5627
+
5628
+ .cn-index-page__board-select--strong {
5629
+ font-weight: 500;
5630
+ }
5631
+
5632
+ .cn-index-page__board-hint {
5633
+ font-size: 14px;
5634
+ color: var(--color-text-maxcontrast);
5635
+ }
5385
5636
  /* CnIndexSidebar — NcAppSidebar wrapper styles */
5386
5637
 
5387
5638
  /* Tab content: limit height to container so overflow shows a scrollbar */
@@ -7086,6 +7337,64 @@ a.cn-kpi-card--board * {
7086
7337
  .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-dashboard-page {
7087
7338
  padding: 0;
7088
7339
  }
7340
+
7341
+ /* The widget area draws no panel of its own (board DcRapportages: the
7342
+ highlighted report's card sits straight on the page ground). A theme's
7343
+ catch-all for anything named like a widget (nldesign's element overrides:
7344
+ `[class*="widget"]:not([class*="widget__"]):not(#header *)`, an id
7345
+ specificity no class rule outranks) painted `__widgets` white, hence the
7346
+ `!important`. */
7347
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__widgets {
7348
+ background: transparent !important;
7349
+ }
7350
+
7351
+ /* The grid insets every card by its 12px margin (CnDashboardPage's default
7352
+ `gridMargin`); the page padding already places the area, so the card's
7353
+ edges line up with the report cards above it. */
7354
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__widgets .cn-dashboard-grid {
7355
+ width: calc(100% + 24px);
7356
+ margin: -12px;
7357
+ }
7358
+
7359
+ /* A report card is a link, but its title and description read as text, as on
7360
+ the board: no underline, whatever a theme does to links. */
7361
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__card,
7362
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__card * {
7363
+ text-decoration: none !important;
7364
+ }
7365
+
7366
+ /* The header buttons beside the title (screens-reports-header-buttons, board
7367
+ DcRapportages "Downloaden"): the board's 40px button with a grey border on
7368
+ the main background, the primary one in the primary fill, as on the index
7369
+ header. `!important` holds them under a theme that restyles every button
7370
+ (nldesign). The buildiq square keeps its own rule. */
7371
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__header-buttons > .button-vue--secondary {
7372
+ height: var(--cn-board-control-height) !important;
7373
+ min-height: var(--cn-board-control-height) !important;
7374
+ padding: 0 14px !important;
7375
+ border: 1px solid var(--color-border-dark) !important;
7376
+ border-radius: var(--cn-board-control-radius) !important;
7377
+ background: var(--color-main-background) !important;
7378
+ color: var(--color-main-text) !important;
7379
+ }
7380
+
7381
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__header-buttons > .button-vue--secondary:hover {
7382
+ background: var(--color-background-hover) !important;
7383
+ }
7384
+
7385
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__header-buttons > .button-vue--primary {
7386
+ height: var(--cn-board-control-height) !important;
7387
+ min-height: var(--cn-board-control-height) !important;
7388
+ padding: 0 16px !important;
7389
+ border: 0 !important;
7390
+ border-radius: var(--cn-board-control-radius) !important;
7391
+ background: var(--color-primary-element) !important;
7392
+ color: var(--color-primary-element-text) !important;
7393
+ }
7394
+
7395
+ .cn-look-board .cn-reports-page:not(.cn-look-nextcloud *) .cn-reports-page__header-buttons > .button-vue--primary:hover {
7396
+ background: var(--color-primary-element-hover) !important;
7397
+ }
7089
7398
  /* CnReferencePreview — a reference that shows what it points at. */
7090
7399
 
7091
7400
  .cn-reference-preview {
@@ -9006,10 +9315,10 @@ a.cn-kpi-card--board * {
9006
9315
  }
9007
9316
 
9008
9317
 
9009
- .cn-countdown-widget__value[data-v-17598258] {
9318
+ .cn-countdown-widget__value[data-v-5546e71c] {
9010
9319
  white-space: nowrap;
9011
9320
  }
9012
- .cn-countdown-widget__sub[data-v-17598258] {
9321
+ .cn-countdown-widget__sub[data-v-5546e71c] {
9013
9322
  color: var(--color-text-maxcontrast);
9014
9323
  font-size: 0.85em;
9015
9324
  }
@@ -12478,41 +12787,41 @@ a.cn-analytics-card__title[data-v-f3ca7b06]:hover {
12478
12787
  }
12479
12788
 
12480
12789
 
12481
- .cn-audit-card__list[data-v-b6134724] {
12790
+ .cn-audit-card__list[data-v-280a5ace] {
12482
12791
  list-style: none;
12483
12792
  margin: 0;
12484
12793
  padding: 0;
12485
12794
  }
12486
- .cn-audit-card__row[data-v-b6134724] {
12795
+ .cn-audit-card__row[data-v-280a5ace] {
12487
12796
  padding: 6px 0;
12488
12797
  border-bottom: 1px solid var(--color-border);
12489
12798
  }
12490
- .cn-audit-card__row[data-v-b6134724]:last-child {
12799
+ .cn-audit-card__row[data-v-280a5ace]:last-child {
12491
12800
  border-bottom: none;
12492
12801
  }
12493
- .cn-audit-card__row-head[data-v-b6134724] {
12802
+ .cn-audit-card__row-head[data-v-280a5ace] {
12494
12803
  display: flex;
12495
12804
  justify-content: space-between;
12496
12805
  gap: 8px;
12497
12806
  }
12498
- .cn-audit-card__action[data-v-b6134724] {
12807
+ .cn-audit-card__action[data-v-280a5ace] {
12499
12808
  color: var(--color-main-text);
12500
12809
  }
12501
- .cn-audit-card__when[data-v-b6134724] {
12810
+ .cn-audit-card__when[data-v-280a5ace] {
12502
12811
  color: var(--color-text-maxcontrast);
12503
12812
  font-size: 0.85em;
12504
12813
  white-space: nowrap;
12505
12814
  }
12506
- .cn-audit-card__row-body[data-v-b6134724] {
12815
+ .cn-audit-card__row-body[data-v-280a5ace] {
12507
12816
  color: var(--color-text-maxcontrast);
12508
12817
  font-size: 0.9em;
12509
12818
  }
12510
- .cn-audit-card__empty[data-v-b6134724] {
12819
+ .cn-audit-card__empty[data-v-280a5ace] {
12511
12820
  color: var(--color-text-maxcontrast);
12512
12821
  text-align: center;
12513
12822
  padding: 12px 0;
12514
12823
  }
12515
- .cn-audit-card__show-all[data-v-b6134724] {
12824
+ .cn-audit-card__show-all[data-v-280a5ace] {
12516
12825
  background: none;
12517
12826
  border: none;
12518
12827
  color: var(--color-primary-element);
@@ -12520,7 +12829,7 @@ a.cn-analytics-card__title[data-v-f3ca7b06]:hover {
12520
12829
  padding: 4px 0;
12521
12830
  font: inherit;
12522
12831
  }
12523
- .cn-audit-card__show-all[data-v-b6134724]:hover {
12832
+ .cn-audit-card__show-all[data-v-280a5ace]:hover {
12524
12833
  text-decoration: underline;
12525
12834
  }
12526
12835
 
@@ -20661,7 +20970,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20661
20970
  }
20662
20971
 
20663
20972
 
20664
- .cn-widget-wrapper[data-v-64db0f38] {
20973
+ .cn-widget-wrapper[data-v-b19b1aa6] {
20665
20974
  position: relative;
20666
20975
  height: 100%;
20667
20976
  display: flex;
@@ -20675,13 +20984,13 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20675
20984
  }
20676
20985
 
20677
20986
  /* Headerless date chip — floated over the top-right of a flush card. */
20678
- .cn-widget-wrapper__floating-meta[data-v-64db0f38] {
20987
+ .cn-widget-wrapper__floating-meta[data-v-b19b1aa6] {
20679
20988
  position: absolute;
20680
20989
  top: 8px;
20681
20990
  inset-inline-end: 10px;
20682
20991
  z-index: 2;
20683
20992
  }
20684
- .cn-widget-wrapper__content[data-v-64db0f38] {
20993
+ .cn-widget-wrapper__content[data-v-b19b1aa6] {
20685
20994
  flex: 1;
20686
20995
  overflow: auto;
20687
20996
  min-height: 0;
@@ -20697,24 +21006,24 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20697
21006
  So it is structural instead. `:has()` keys on the table component's own root
20698
21007
  class, which means a table is flush by construction and no caller can
20699
21008
  reintroduce the gap by forgetting a prop. */
20700
- .cn-widget-wrapper__content[data-v-64db0f38]:has(> .cn-table-container),
20701
- .cn-widget-wrapper__content[data-v-64db0f38]:has(> .cn-widget-object-table) {
21009
+ .cn-widget-wrapper__content[data-v-b19b1aa6]:has(> .cn-table-container),
21010
+ .cn-widget-wrapper__content[data-v-b19b1aa6]:has(> .cn-widget-object-table) {
20702
21011
  padding: 0;
20703
21012
  }
20704
21013
 
20705
21014
  /* Keyboard focus ring for the now-focusable scrollable content region. */
20706
- .cn-widget-wrapper__content[data-v-64db0f38]:focus-visible {
21015
+ .cn-widget-wrapper__content[data-v-b19b1aa6]:focus-visible {
20707
21016
  outline: 2px solid var(--color-primary-element);
20708
21017
  outline-offset: -2px;
20709
21018
  }
20710
- .cn-widget-wrapper--borderless[data-v-64db0f38] {
21019
+ .cn-widget-wrapper--borderless[data-v-b19b1aa6] {
20711
21020
  border: none;
20712
21021
  background: transparent;
20713
21022
  }
20714
- .cn-widget-wrapper--borderless .cn-widget-wrapper__content[data-v-64db0f38] {
21023
+ .cn-widget-wrapper--borderless .cn-widget-wrapper__content[data-v-b19b1aa6] {
20715
21024
  padding: 0;
20716
21025
  }
20717
- .cn-widget-wrapper--flush .cn-widget-wrapper__content[data-v-64db0f38] {
21026
+ .cn-widget-wrapper--flush .cn-widget-wrapper__content[data-v-b19b1aa6] {
20718
21027
  padding: 0;
20719
21028
  }
20720
21029
 
@@ -20722,8 +21031,8 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20722
21031
  above. A dashboard renders every widget `flush`, and without this their
20723
21032
  fields touch the card's edges. Borderless and chromeless cards, and the
20724
21033
  Nextcloud dashboard variant, keep their own padding. */
20725
- .cn-widget-wrapper--flush:not(.cn-widget-wrapper--borderless, .cn-widget-wrapper--nc-dashboard) > .cn-widget-wrapper__content[data-v-64db0f38]:has(> .cn-form-widget),
20726
- .cn-widget-wrapper--flush:not(.cn-widget-wrapper--borderless, .cn-widget-wrapper--nc-dashboard) > .cn-widget-wrapper__content[data-v-64db0f38]:has(> .cn-kb-search-widget) {
21034
+ .cn-widget-wrapper--flush:not(.cn-widget-wrapper--borderless, .cn-widget-wrapper--nc-dashboard) > .cn-widget-wrapper__content[data-v-b19b1aa6]:has(> .cn-form-widget),
21035
+ .cn-widget-wrapper--flush:not(.cn-widget-wrapper--borderless, .cn-widget-wrapper--nc-dashboard) > .cn-widget-wrapper__content[data-v-b19b1aa6]:has(> .cn-kb-search-widget) {
20727
21036
  padding: 16px;
20728
21037
  }
20729
21038
 
@@ -20734,7 +21043,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20734
21043
  a square panel, which is the last visible piece of a card that is supposed
20735
21044
  to be absent. `CnDetailCard.cn-detail-card--chromeless` zeroes the same
20736
21045
  thing for the same reason. */
20737
- .cn-widget-wrapper--chromeless[data-v-64db0f38] {
21046
+ .cn-widget-wrapper--chromeless[data-v-b19b1aa6] {
20738
21047
  border-radius: 0;
20739
21048
  }
20740
21049
 
@@ -20746,7 +21055,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20746
21055
  * so users can override any token. Combined selector raises specificity above
20747
21056
  * the base `.cn-widget-wrapper` rules it supersedes.
20748
21057
  */
20749
- .cn-widget-wrapper__header[data-v-64db0f38] {
21058
+ .cn-widget-wrapper__header[data-v-b19b1aa6] {
20750
21059
  display: flex;
20751
21060
  align-items: center;
20752
21061
  justify-content: space-between;
@@ -20762,7 +21071,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20762
21071
  /* Actions with no title beside them. `header-left` is not rendered at all in
20763
21072
  this mode, and the header is `space-between`, so a single child would sit
20764
21073
  flush LEFT where every other surface puts its actions on the right. */
20765
- .cn-widget-wrapper__header--actions-only[data-v-64db0f38] {
21074
+ .cn-widget-wrapper__header--actions-only[data-v-b19b1aa6] {
20766
21075
  justify-content: flex-end;
20767
21076
  }
20768
21077
 
@@ -20778,11 +21087,11 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20778
21087
  no-descending-specificity asks for. The cascade did not need it (this
20779
21088
  selector is more specific either way), a reader does: an override written
20780
21089
  above the thing it overrides has to be read twice. */
20781
- .cn-widget-wrapper--chromeless .cn-widget-wrapper__header[data-v-64db0f38] {
21090
+ .cn-widget-wrapper--chromeless .cn-widget-wrapper__header[data-v-b19b1aa6] {
20782
21091
  border-bottom: none;
20783
21092
  padding-inline: 0;
20784
21093
  }
20785
- .cn-widget-wrapper__header-left[data-v-64db0f38] {
21094
+ .cn-widget-wrapper__header-left[data-v-b19b1aa6] {
20786
21095
  display: flex;
20787
21096
  align-items: center;
20788
21097
  gap: 8px;
@@ -20791,13 +21100,27 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20791
21100
  of centering between icon and actions (header is space-between). */
20792
21101
  flex: 1 1 auto;
20793
21102
  }
20794
- .cn-widget-wrapper__icon[data-v-64db0f38] {
21103
+ .cn-widget-wrapper__icon[data-v-b19b1aa6] {
20795
21104
  width: 24px;
20796
21105
  height: 24px;
20797
21106
  flex-shrink: 0;
20798
21107
  color: var(--cn-widget-icon-color, var(--color-primary-element));
20799
21108
  }
20800
- .cn-widget-wrapper__title[data-v-64db0f38] {
21109
+ .cn-widget-wrapper__title-stack[data-v-b19b1aa6] {
21110
+ display: flex;
21111
+ flex-direction: column;
21112
+ gap: 2px;
21113
+ min-width: 0;
21114
+ }
21115
+ .cn-widget-wrapper__eyebrow[data-v-b19b1aa6] {
21116
+ font-size: 13px;
21117
+ line-height: 1.3;
21118
+ color: var(--color-text-maxcontrast);
21119
+ white-space: nowrap;
21120
+ overflow: hidden;
21121
+ text-overflow: ellipsis;
21122
+ }
21123
+ .cn-widget-wrapper__title[data-v-b19b1aa6] {
20801
21124
  font-weight: 600;
20802
21125
  font-size: 14px;
20803
21126
  margin: 0;
@@ -20805,34 +21128,34 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20805
21128
  overflow: hidden;
20806
21129
  text-overflow: ellipsis;
20807
21130
  }
20808
- .cn-widget-wrapper.cn-widget-wrapper--nc-dashboard[data-v-64db0f38] {
21131
+ .cn-widget-wrapper.cn-widget-wrapper--nc-dashboard[data-v-b19b1aa6] {
20809
21132
  background: var(--color-main-background-blur, var(--color-main-background));
20810
21133
  -webkit-backdrop-filter: var(--filter-background-blur, none);
20811
21134
  backdrop-filter: var(--filter-background-blur, none);
20812
21135
  border: none;
20813
21136
  border-radius: var(--border-radius-container-large, 16px);
20814
21137
  }
20815
- .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__header[data-v-64db0f38] {
21138
+ .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__header[data-v-b19b1aa6] {
20816
21139
  padding: 16px;
20817
21140
  border-bottom: none;
20818
21141
  }
20819
- .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__header-left[data-v-64db0f38] {
21142
+ .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__header-left[data-v-b19b1aa6] {
20820
21143
  gap: 16px;
20821
21144
  }
20822
- .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__icon[data-v-64db0f38] {
21145
+ .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__icon[data-v-b19b1aa6] {
20823
21146
  width: 32px;
20824
21147
  height: 32px;
20825
21148
  background-size: 32px;
20826
21149
  }
20827
- .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__title[data-v-64db0f38] {
21150
+ .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__title[data-v-b19b1aa6] {
20828
21151
  font-size: 20px;
20829
21152
  font-weight: 700;
20830
21153
  line-height: 24px;
20831
21154
  }
20832
- .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__content[data-v-64db0f38] {
21155
+ .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__content[data-v-b19b1aa6] {
20833
21156
  padding: 0 16px 16px;
20834
21157
  }
20835
- .cn-widget-wrapper__title-meta[data-v-64db0f38] {
21158
+ .cn-widget-wrapper__title-meta[data-v-b19b1aa6] {
20836
21159
  display: flex;
20837
21160
  align-items: center;
20838
21161
  gap: 4px;
@@ -20841,7 +21164,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20841
21164
  white-space: nowrap;
20842
21165
  flex-shrink: 0;
20843
21166
  }
20844
- .cn-widget-wrapper__actions[data-v-64db0f38] {
21167
+ .cn-widget-wrapper__actions[data-v-b19b1aa6] {
20845
21168
  display: flex;
20846
21169
  gap: 4px;
20847
21170
  flex-shrink: 0;
@@ -20849,7 +21172,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20849
21172
 
20850
21173
  /* The header's text link (`headerLink`). Theme hooks: --cn-widget-header-link-size
20851
21174
  and --cn-widget-header-link-weight. */
20852
- .cn-widget-wrapper__header-link[data-v-64db0f38] {
21175
+ .cn-widget-wrapper__header-link[data-v-b19b1aa6] {
20853
21176
  align-self: center;
20854
21177
  padding: 0 calc(1 * var(--default-grid-baseline));
20855
21178
  color: var(--color-primary-element);
@@ -20858,11 +21181,11 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20858
21181
  text-decoration: none;
20859
21182
  white-space: nowrap;
20860
21183
  }
20861
- .cn-widget-wrapper__header-link[data-v-64db0f38]:hover,
20862
- .cn-widget-wrapper__header-link[data-v-64db0f38]:focus-visible {
21184
+ .cn-widget-wrapper__header-link[data-v-b19b1aa6]:hover,
21185
+ .cn-widget-wrapper__header-link[data-v-b19b1aa6]:focus-visible {
20863
21186
  text-decoration: underline;
20864
21187
  }
20865
- .cn-widget-wrapper__header-link[data-v-64db0f38]:focus-visible {
21188
+ .cn-widget-wrapper__header-link[data-v-b19b1aa6]:focus-visible {
20866
21189
  outline: 2px solid var(--color-primary-element);
20867
21190
  outline-offset: 2px;
20868
21191
  border-radius: var(--border-radius-small, 4px);
@@ -20873,7 +21196,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20873
21196
  wrapper is ever rendered without it. Material-design-icon components paint
20874
21197
  with `fill: currentColor`, so this reaches them; the :deep rule below makes
20875
21198
  it reach a raw <svg> in the slot too. */
20876
- .cn-widget-wrapper__title-icon[data-v-64db0f38] {
21199
+ .cn-widget-wrapper__title-icon[data-v-b19b1aa6] {
20877
21200
  display: flex;
20878
21201
  align-items: center;
20879
21202
  flex-shrink: 0;
@@ -20893,17 +21216,17 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20893
21216
 
20894
21217
  /* Right-positioned title icons sit AFTER the actions, so the margin belongs on
20895
21218
  the other side or it pushes the icon off the header's right edge. */
20896
- .cn-widget-wrapper__title-icon[data-v-64db0f38]:last-child {
21219
+ .cn-widget-wrapper__title-icon[data-v-b19b1aa6]:last-child {
20897
21220
  margin-inline-end: 0;
20898
21221
  margin-inline-start: 8px;
20899
21222
  }
20900
21223
 
20901
21224
  /* Material-design-icon components paint with `fill: currentColor`, so the
20902
21225
  colour above reaches them; this makes it reach a raw <svg> in the slot too. */
20903
- .cn-widget-wrapper__title-icon[data-v-64db0f38] svg {
21226
+ .cn-widget-wrapper__title-icon[data-v-b19b1aa6] svg {
20904
21227
  fill: currentcolor;
20905
21228
  }
20906
- .cn-widget-wrapper__footer[data-v-64db0f38] {
21229
+ .cn-widget-wrapper__footer[data-v-b19b1aa6] {
20907
21230
  display: flex;
20908
21231
  justify-content: flex-end;
20909
21232
  gap: 8px;
@@ -20911,12 +21234,12 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20911
21234
  border-top: 1px solid var(--color-border);
20912
21235
  flex-shrink: 0;
20913
21236
  }
20914
- .cn-widget-wrapper__footer-link[data-v-64db0f38] {
21237
+ .cn-widget-wrapper__footer-link[data-v-b19b1aa6] {
20915
21238
  font-size: 13px;
20916
21239
  color: var(--color-primary-element);
20917
21240
  text-decoration: none;
20918
21241
  }
20919
- .cn-widget-wrapper__footer-link[data-v-64db0f38]:hover {
21242
+ .cn-widget-wrapper__footer-link[data-v-b19b1aa6]:hover {
20920
21243
  text-decoration: underline;
20921
21244
  }
20922
21245
 
@@ -21221,22 +21544,22 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21221
21544
  }
21222
21545
 
21223
21546
 
21224
- .cn-transition-input[data-v-ac83f832] {
21547
+ .cn-transition-input[data-v-457532e4] {
21225
21548
  display: flex;
21226
21549
  flex-direction: column;
21227
21550
  gap: 12px;
21228
21551
  padding: 4px 0;
21229
21552
  }
21230
- .cn-transition-input__error[data-v-ac83f832] {
21553
+ .cn-transition-input__error[data-v-457532e4] {
21231
21554
  margin: 0;
21232
21555
  color: var(--color-error-text, var(--color-error));
21233
21556
  }
21234
- .cn-transition-input__field-error[data-v-ac83f832] {
21557
+ .cn-transition-input__field-error[data-v-457532e4] {
21235
21558
  margin: 4px 0 0;
21236
21559
  font-size: 0.9em;
21237
21560
  color: var(--color-error-text, var(--color-error));
21238
21561
  }
21239
- .cn-transition-input__object[data-v-ac83f832] {
21562
+ .cn-transition-input__object[data-v-457532e4] {
21240
21563
  border: 1px solid var(--color-border);
21241
21564
  border-radius: var(--border-radius);
21242
21565
  padding: 8px 12px;
@@ -21244,11 +21567,11 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21244
21567
  flex-direction: column;
21245
21568
  gap: 8px;
21246
21569
  }
21247
- .cn-transition-input__label[data-v-ac83f832] {
21570
+ .cn-transition-input__label[data-v-457532e4] {
21248
21571
  display: block;
21249
21572
  margin-bottom: 4px;
21250
21573
  }
21251
- .cn-transition-input__field--refused[data-v-ac83f832] {
21574
+ .cn-transition-input__field--refused[data-v-457532e4] {
21252
21575
  border-inline-start: 2px solid var(--color-error);
21253
21576
  padding-inline-start: 8px;
21254
21577
  }
@@ -21590,7 +21913,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21590
21913
  }
21591
21914
 
21592
21915
 
21593
- .cn-stages-widget[data-v-a394760a] {
21916
+ .cn-stages-widget[data-v-3946def5] {
21594
21917
  display: flex;
21595
21918
  flex-direction: column;
21596
21919
  gap: 8px;
@@ -21600,12 +21923,19 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21600
21923
  tile rather than a strip of 32px circles. */
21601
21924
  padding: 4px;
21602
21925
  }
21603
- .cn-stages-widget__loading[data-v-a394760a] {
21926
+ .cn-stages-widget__loading[data-v-3946def5] {
21604
21927
  display: flex;
21605
21928
  justify-content: center;
21606
21929
  padding: 8px 0;
21607
21930
  }
21608
- .cn-stages-widget__notice[data-v-a394760a] {
21931
+
21932
+ /* The stage a running move leads to: a small spinner before its label. */
21933
+ .cn-stages-widget__moving[data-v-3946def5] {
21934
+ display: inline-flex;
21935
+ vertical-align: middle;
21936
+ margin-inline-end: 4px;
21937
+ }
21938
+ .cn-stages-widget__notice[data-v-3946def5] {
21609
21939
  margin: 0;
21610
21940
  color: var(--color-text-maxcontrast);
21611
21941
  }
@@ -21614,7 +21944,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21614
21944
  REFUSALS no longer come through here: they are a tooltip, a note card and a
21615
21945
  screen-reader node, which is why there is no colour variant of this rule.
21616
21946
  The rules for the two coloured states are NcNoteCard's own. */
21617
- .cn-stages-widget__reason[data-v-a394760a] {
21947
+ .cn-stages-widget__reason[data-v-3946def5] {
21618
21948
  display: block;
21619
21949
  margin-top: 2px;
21620
21950
  font-size: 0.8em;
@@ -21625,7 +21955,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21625
21955
  /* The bars variant: equal columns, a thin bar per step. Theme hooks:
21626
21956
  --cn-stages-bar-height, --cn-stages-bar-radius, --cn-stages-bar-done,
21627
21957
  --cn-stages-bar-current, --cn-stages-bar-todo. */
21628
- .cn-stages-widget__bars[data-v-a394760a] {
21958
+ .cn-stages-widget__bars[data-v-3946def5] {
21629
21959
  display: grid;
21630
21960
  grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
21631
21961
  grid-auto-flow: column;
@@ -21634,25 +21964,25 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21634
21964
  padding: 0;
21635
21965
  list-style: none;
21636
21966
  }
21637
- .cn-stages-widget__bar-step[data-v-a394760a] {
21967
+ .cn-stages-widget__bar-step[data-v-3946def5] {
21638
21968
  display: flex;
21639
21969
  flex-direction: column;
21640
21970
  gap: 8px;
21641
21971
  min-width: 0;
21642
21972
  }
21643
- .cn-stages-widget__bar[data-v-a394760a] {
21973
+ .cn-stages-widget__bar[data-v-3946def5] {
21644
21974
  display: block;
21645
21975
  height: var(--cn-stages-bar-height, 6px);
21646
21976
  border-radius: var(--cn-stages-bar-radius, 3px);
21647
21977
  background: var(--cn-stages-bar-todo, var(--color-border));
21648
21978
  }
21649
- .cn-stages-widget__bar-step--done .cn-stages-widget__bar[data-v-a394760a] {
21979
+ .cn-stages-widget__bar-step--done .cn-stages-widget__bar[data-v-3946def5] {
21650
21980
  background: var(--cn-stages-bar-done, var(--color-primary-element));
21651
21981
  }
21652
- .cn-stages-widget__bar-step--current .cn-stages-widget__bar[data-v-a394760a] {
21982
+ .cn-stages-widget__bar-step--current .cn-stages-widget__bar[data-v-3946def5] {
21653
21983
  background: var(--cn-stages-bar-current, var(--color-error));
21654
21984
  }
21655
- .cn-stages-widget__bar-label[data-v-a394760a] {
21985
+ .cn-stages-widget__bar-label[data-v-3946def5] {
21656
21986
  display: block;
21657
21987
  margin: 0;
21658
21988
  padding: 0;
@@ -21673,7 +22003,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21673
22003
  about 12px below the current one, which is a <span>. Zeroed here so all
21674
22004
  labels sit 8px under their bar, as the board draws them. The visually
21675
22005
  hidden "(current step)" is absolutely positioned and takes no space. */
21676
- button.cn-stages-widget__bar-label[data-v-a394760a] {
22006
+ button.cn-stages-widget__bar-label[data-v-3946def5] {
21677
22007
  min-height: 0;
21678
22008
  height: auto;
21679
22009
  line-height: inherit;
@@ -21689,7 +22019,7 @@ button.cn-stages-widget__bar-label[data-v-a394760a] {
21689
22019
  of ending in an ellipsis. Only !important beats !important; this selector is
21690
22020
  the more specific of the two. Without such a theme nothing changes: these
21691
22021
  are the values the base rule already sets. */
21692
- button.cn-stages-widget__bar-label.cn-stages-widget__bar-label[data-v-a394760a] {
22022
+ button.cn-stages-widget__bar-label.cn-stages-widget__bar-label[data-v-3946def5] {
21693
22023
  min-width: 0 !important;
21694
22024
  margin: 0 !important;
21695
22025
  padding: 0 !important;
@@ -21698,29 +22028,29 @@ button.cn-stages-widget__bar-label.cn-stages-widget__bar-label[data-v-a394760a]
21698
22028
  text-overflow: ellipsis !important;
21699
22029
  white-space: nowrap !important;
21700
22030
  }
21701
- button.cn-stages-widget__bar-label[aria-disabled="true"][data-v-a394760a] {
22031
+ button.cn-stages-widget__bar-label[aria-disabled="true"][data-v-3946def5] {
21702
22032
  cursor: not-allowed;
21703
22033
  }
21704
- button.cn-stages-widget__bar-label[data-v-a394760a]:focus-visible {
22034
+ button.cn-stages-widget__bar-label[data-v-3946def5]:focus-visible {
21705
22035
  outline: 2px solid var(--color-primary-element);
21706
22036
  outline-offset: 2px;
21707
22037
  border-radius: var(--border-radius-small, 4px);
21708
22038
  }
21709
- .cn-stages-widget__bar-step--done .cn-stages-widget__bar-label[data-v-a394760a] {
22039
+ .cn-stages-widget__bar-step--done .cn-stages-widget__bar-label[data-v-3946def5] {
21710
22040
  color: var(--color-main-text);
21711
22041
  font-weight: 600;
21712
22042
  }
21713
- .cn-stages-widget__bar-step--current .cn-stages-widget__bar-label[data-v-a394760a] {
22043
+ .cn-stages-widget__bar-step--current .cn-stages-widget__bar-label[data-v-3946def5] {
21714
22044
  color: var(--color-main-text);
21715
22045
  font-weight: 700;
21716
22046
  }
21717
- .cn-stages-widget__bar-date[data-v-a394760a] {
22047
+ .cn-stages-widget__bar-date[data-v-3946def5] {
21718
22048
  font-size: 12px;
21719
22049
  color: var(--color-text-maxcontrast);
21720
22050
  }
21721
22051
 
21722
22052
  /* Text for screen readers only. */
21723
- .cn-stages-widget__sr-only[data-v-a394760a] {
22053
+ .cn-stages-widget__sr-only[data-v-3946def5] {
21724
22054
  position: absolute;
21725
22055
  width: 1px;
21726
22056
  height: 1px;
@@ -22207,6 +22537,19 @@ a.cn-kpi-card--stacked:focus-visible {
22207
22537
  color: var(--color-main-text);
22208
22538
  }
22209
22539
 
22540
+ /* A board tile whose label wraps grows into its cell instead of clipping its
22541
+ own last line. dossiq's "Afgehandeld deze maand" at 1100 wide held 129px of
22542
+ content in a 114px tile and lost its caption's bottom. The tile still fills
22543
+ a cell it fits (`min-height: 100%`), so every tile that fits keeps its
22544
+ size; one that does not takes the height of its content, and the card-fit
22545
+ cell's `safe center` keeps its top in view.
22546
+ @spec openspec/changes/board-stat-tile-grows/specs/stat-tile-board-look/spec.md#requirement-a-board-stat-tile-shows-all-its-lines */
22547
+ .cn-kpi-card--board.cn-kpi-card--stacked {
22548
+ flex: 0 0 auto;
22549
+ height: auto;
22550
+ min-height: 100%;
22551
+ }
22552
+
22210
22553
  .cn-kpi-card--board.cn-kpi-card--stacked .cn-kpi-card__caption-line,
22211
22554
  .cn-kpi-card--board.cn-kpi-card--stacked .cn-stats-block__count-label {
22212
22555
  font-size: 13px;
@@ -22629,7 +22972,7 @@ a.cn-kpi-card--board * {
22629
22972
 
22630
22973
  /* The title row carries an optional range select beside the label, which the
22631
22974
  canonical `__title` (a plain truncating heading) does not account for. */
22632
- .cn-stat-widget__label[data-v-644c38a1] {
22975
+ .cn-stat-widget__label[data-v-b388a5f8] {
22633
22976
  display: flex;
22634
22977
  align-items: center;
22635
22978
  justify-content: space-between;
@@ -22639,14 +22982,14 @@ a.cn-kpi-card--board * {
22639
22982
 
22640
22983
  /* Stacked tile: the label and its range select centre over the number rather
22641
22984
  than spreading to the card's edges. */
22642
- .cn-kpi-card--vertical .cn-stat-widget__label[data-v-644c38a1] {
22985
+ .cn-kpi-card--vertical .cn-stat-widget__label[data-v-b388a5f8] {
22643
22986
  justify-content: center;
22644
22987
  width: auto;
22645
22988
  }
22646
22989
 
22647
22990
  /* Sized down to sit inside the label row without pushing the tile taller —
22648
22991
  the tile's height is fixed by its grid cell (ADR-062). */
22649
- .cn-stat-widget__range[data-v-644c38a1] {
22992
+ .cn-stat-widget__range[data-v-b388a5f8] {
22650
22993
  flex: 0 0 auto;
22651
22994
  max-width: 50%;
22652
22995
  padding: 0 4px;
@@ -22658,15 +23001,15 @@ a.cn-kpi-card--board * {
22658
23001
  font-weight: normal;
22659
23002
  cursor: pointer;
22660
23003
  }
22661
- .cn-stat-widget__range[data-v-644c38a1]:hover,
22662
- .cn-stat-widget__range[data-v-644c38a1]:focus-visible {
23004
+ .cn-stat-widget__range[data-v-b388a5f8]:hover,
23005
+ .cn-stat-widget__range[data-v-b388a5f8]:focus-visible {
22663
23006
  background: var(--color-background-hover);
22664
23007
  color: var(--color-main-text);
22665
23008
  }
22666
23009
 
22667
23010
  /* Badge mode: the pill takes the value's place in the row. Sized to the
22668
23011
  card's label scale so it sits in the row without pushing the tile taller. */
22669
- .cn-stat-widget__badge[data-v-644c38a1] {
23012
+ .cn-stat-widget__badge[data-v-b388a5f8] {
22670
23013
  flex: 0 1 auto;
22671
23014
  min-width: 0;
22672
23015
  max-width: 100%;
@@ -22678,7 +23021,7 @@ a.cn-kpi-card--board * {
22678
23021
  /* The denominator of a "value / limit" pair. Deliberately quieter and smaller
22679
23022
  than the value: the tile's subject is what the number IS, not what it is
22680
23023
  allowed to reach. Shares the value's `nowrap` so the pair never breaks. */
22681
- .cn-stat-widget__limit[data-v-644c38a1] {
23024
+ .cn-stat-widget__limit[data-v-b388a5f8] {
22682
23025
  flex: 0 0 auto;
22683
23026
  font-size: var(--cn-kpi-value-size-compact, 1.25rem);
22684
23027
  font-weight: var(--cn-kpi-title-weight, 600);
@@ -22686,7 +23029,7 @@ a.cn-kpi-card--board * {
22686
23029
  color: var(--cn-kpi-label-color, var(--color-text-maxcontrast));
22687
23030
  white-space: nowrap;
22688
23031
  }
22689
- .cn-stat-widget__trend[data-v-644c38a1] {
23032
+ .cn-stat-widget__trend[data-v-b388a5f8] {
22690
23033
  display: inline-flex;
22691
23034
  align-items: center;
22692
23035
  gap: 2px;
@@ -22699,7 +23042,7 @@ a.cn-kpi-card--board * {
22699
23042
  error dash is literally a `cn-kpi-card__value`, and two components showing
22700
23043
  the same failure at two different sizes is the drift this consolidation
22701
23044
  exists to remove. Only the colour differs: a failure is not a number. */
22702
- .cn-stat-widget__error[data-v-644c38a1] {
23045
+ .cn-stat-widget__error[data-v-b388a5f8] {
22703
23046
  font-size: var(--cn-kpi-value-size, 2rem);
22704
23047
  font-weight: var(--cn-kpi-value-weight, 700);
22705
23048
  line-height: var(--cn-kpi-value-line, 1.1);
@@ -22739,81 +23082,97 @@ a.cn-kpi-card--board * {
22739
23082
  * modes render this root, so both collapse. The bug was found on a
22740
23083
  * single-entry stats-block.
22741
23084
  */
22742
- .cn-stats-block-widget[data-v-c1220134] {
23085
+ .cn-stats-block-widget[data-v-4341e971] {
22743
23086
  flex: 1 1 auto;
22744
23087
  min-width: 0;
22745
23088
  width: 100%;
22746
23089
  }
22747
- .cn-stats-block-widget--multi[data-v-c1220134] {
23090
+ .cn-stats-block-widget--multi[data-v-4341e971] {
22748
23091
  display: flex;
22749
23092
  flex-direction: column;
22750
23093
  gap: var(--cn-kpi-stack-gap, 12px);
22751
23094
  }
22752
23095
 
22753
23096
  /* Rows layout: the board's "label left, number right" card body. */
22754
- .cn-stats-block-widget--rows[data-v-c1220134] {
23097
+ .cn-stats-block-widget--rows[data-v-4341e971] {
22755
23098
  display: flex;
22756
23099
  flex-direction: column;
22757
23100
  gap: 12px;
22758
23101
  box-sizing: border-box;
22759
23102
  padding: 20px 22px;
22760
23103
  }
22761
- .cn-stats-block-widget__rows-title[data-v-c1220134] {
23104
+ .cn-stats-block-widget__rows-title[data-v-4341e971] {
22762
23105
  margin: 0;
22763
23106
  font-size: 15px;
22764
23107
  font-weight: 600;
22765
23108
  color: var(--color-text-maxcontrast);
22766
23109
  }
22767
- .cn-stats-block-widget--grid[data-v-c1220134] {
23110
+
23111
+ /* `width: 100%` plus this padding overflowed the card by 48px: the last
23112
+ column ran past the card's right edge (visible once the tiles have a box). */
23113
+ .cn-stats-block-widget--grid[data-v-4341e971] {
23114
+ box-sizing: border-box;
22768
23115
  padding: 4px 24px 20px;
22769
23116
  }
22770
- .cn-stats-block-widget__grid[data-v-c1220134] {
23117
+ .cn-stats-block-widget__grid[data-v-4341e971] {
22771
23118
  display: grid;
22772
23119
  grid-template-columns: repeat(var(--cn-stats-block-columns, 2), minmax(0, 1fr));
22773
23120
  gap: 16px 20px;
22774
23121
  }
22775
23122
 
22776
23123
  /* A tile in the grid is a part of the card, not a card: no box, no inset. */
22777
- .cn-stats-block-widget__grid-stat[data-v-c1220134] {
23124
+ .cn-stats-block-widget__grid-stat[data-v-4341e971] {
22778
23125
  padding: 0;
22779
23126
  min-width: 0;
22780
23127
  }
22781
- .cn-stats-block-widget__rows[data-v-c1220134] {
23128
+
23129
+ /* `tiles: "box"`: each tile on a grey ground of its own (board DcRapportages,
23130
+ "Vergaderingen en efficiëntie"), 12px apart. */
23131
+ .cn-stats-block-widget--tiles-box .cn-stats-block-widget__grid[data-v-4341e971] {
23132
+ gap: 12px;
23133
+ }
23134
+ .cn-stats-block-widget--tiles-box .cn-stats-block-widget__grid-stat[data-v-4341e971] {
23135
+ box-sizing: border-box;
23136
+ padding: 14px 16px;
23137
+ border-radius: 10px;
23138
+ background: var(--color-background-hover);
23139
+ }
23140
+ .cn-stats-block-widget__rows[data-v-4341e971] {
22782
23141
  display: flex;
22783
23142
  flex-direction: column;
22784
23143
  gap: 8px;
22785
23144
  margin: 0;
22786
23145
  font-size: 14px;
22787
23146
  }
22788
- .cn-stats-block-widget__row[data-v-c1220134] {
23147
+ .cn-stats-block-widget__row[data-v-4341e971] {
22789
23148
  display: flex;
22790
23149
  align-items: baseline;
22791
23150
  justify-content: space-between;
22792
23151
  gap: 16px;
22793
23152
  }
22794
- .cn-stats-block-widget__row-label[data-v-c1220134] {
23153
+ .cn-stats-block-widget__row-label[data-v-4341e971] {
22795
23154
  min-width: 0;
22796
23155
  margin: 0;
22797
23156
  overflow: hidden;
22798
23157
  text-overflow: ellipsis;
22799
23158
  }
22800
- .cn-stats-block-widget__row-value[data-v-c1220134] {
23159
+ .cn-stats-block-widget__row-value[data-v-4341e971] {
22801
23160
  flex: none;
22802
23161
  margin: 0;
22803
23162
  font-size: 17px;
22804
23163
  font-weight: 700;
22805
23164
  text-align: right;
22806
23165
  }
22807
- .cn-stats-block-widget__row-value--success[data-v-c1220134] {
23166
+ .cn-stats-block-widget__row-value--success[data-v-4341e971] {
22808
23167
  color: var(--color-text-success, var(--color-success-text));
22809
23168
  }
22810
- .cn-stats-block-widget__row-value--warning[data-v-c1220134] {
23169
+ .cn-stats-block-widget__row-value--warning[data-v-4341e971] {
22811
23170
  color: var(--color-text-warning, var(--color-warning-text));
22812
23171
  }
22813
- .cn-stats-block-widget__row-value--error[data-v-c1220134] {
23172
+ .cn-stats-block-widget__row-value--error[data-v-4341e971] {
22814
23173
  color: var(--color-text-error, var(--color-error-text));
22815
23174
  }
22816
- .cn-stats-block-widget__row-value--primary[data-v-c1220134] {
23175
+ .cn-stats-block-widget__row-value--primary[data-v-4341e971] {
22817
23176
  color: var(--color-primary-element);
22818
23177
  }
22819
23178
 
@@ -23018,7 +23377,7 @@ a.cn-kpi-card--board * {
23018
23377
  }
23019
23378
 
23020
23379
 
23021
- .cn-object-data-widget__image[data-v-59ab12e6] {
23380
+ .cn-object-data-widget__image[data-v-324e1a00] {
23022
23381
  max-width: 100%;
23023
23382
  max-height: 160px;
23024
23383
  border-radius: 8px;
@@ -23026,33 +23385,33 @@ a.cn-kpi-card--board * {
23026
23385
  }
23027
23386
 
23028
23387
  /* Shimmering placeholder while a relation's display name resolves. */
23029
- .cn-object-data-widget__skeleton[data-v-59ab12e6] {
23388
+ .cn-object-data-widget__skeleton[data-v-324e1a00] {
23030
23389
  display: inline-block;
23031
23390
  width: 90px;
23032
23391
  height: 1em;
23033
23392
  border-radius: 4px;
23034
23393
  background: linear-gradient(90deg, var(--color-background-dark) 25%, var(--color-background-hover) 50%, var(--color-background-dark) 75%);
23035
23394
  background-size: 200% 100%;
23036
- animation: cn-odw-shimmer-59ab12e6 1.2s ease-in-out infinite;
23395
+ animation: cn-odw-shimmer-324e1a00 1.2s ease-in-out infinite;
23037
23396
  }
23038
- @keyframes cn-odw-shimmer-59ab12e6 {
23397
+ @keyframes cn-odw-shimmer-324e1a00 {
23039
23398
  from { background-position: 200% 0;
23040
23399
  }
23041
23400
  to { background-position: -200% 0;
23042
23401
  }
23043
23402
  }
23044
23403
  @media (prefers-reduced-motion: reduce) {
23045
- .cn-object-data-widget__skeleton[data-v-59ab12e6] { animation: none;
23404
+ .cn-object-data-widget__skeleton[data-v-324e1a00] { animation: none;
23046
23405
  }
23047
23406
  }
23048
- .cn-object-data-widget__grid[data-v-59ab12e6] {
23407
+ .cn-object-data-widget__grid[data-v-324e1a00] {
23049
23408
  display: grid;
23050
23409
  gap: calc(2 * var(--default-grid-baseline, 4px)) calc(4 * var(--default-grid-baseline, 4px));
23051
23410
  }
23052
- .cn-object-data-widget__toggle[data-v-59ab12e6] {
23411
+ .cn-object-data-widget__toggle[data-v-324e1a00] {
23053
23412
  margin-top: 4px;
23054
23413
  }
23055
- .cn-object-data-widget__cell[data-v-59ab12e6] {
23414
+ .cn-object-data-widget__cell[data-v-324e1a00] {
23056
23415
  display: flex;
23057
23416
  flex-direction: column;
23058
23417
  gap: 2px;
@@ -23060,12 +23419,12 @@ to { background-position: -200% 0;
23060
23419
  border-bottom: 1px solid var(--color-border-dark);
23061
23420
  min-width: 0;
23062
23421
  }
23063
- .cn-object-data-widget__label[data-v-59ab12e6] {
23422
+ .cn-object-data-widget__label[data-v-324e1a00] {
23064
23423
  font-size: 0.85em;
23065
23424
  color: var(--color-text-maxcontrast);
23066
23425
  font-weight: 500;
23067
23426
  }
23068
- .cn-object-data-widget__value[data-v-59ab12e6] {
23427
+ .cn-object-data-widget__value[data-v-324e1a00] {
23069
23428
  font-size: 1em;
23070
23429
  color: var(--color-main-text);
23071
23430
  overflow-wrap: anywhere;
@@ -23079,24 +23438,24 @@ to { background-position: -200% 0;
23079
23438
  which drew a horizontal scrollbar under every data widget in a tab (dossiq's
23080
23439
  case page, Data tab). The end padding drops by the same 4px so the text and
23081
23440
  the edit icon sit where they sat. */
23082
- .cn-object-data-widget__value--editable[data-v-59ab12e6] {
23441
+ .cn-object-data-widget__value--editable[data-v-324e1a00] {
23083
23442
  cursor: pointer;
23084
23443
  border-radius: var(--border-radius);
23085
23444
  padding: 4px 20px 4px 4px;
23086
23445
  margin: -4px 0 -4px -4px;
23087
23446
  }
23088
- .cn-object-data-widget__value--editable[data-v-59ab12e6]:hover {
23447
+ .cn-object-data-widget__value--editable[data-v-324e1a00]:hover {
23089
23448
  background: var(--color-background-dark);
23090
23449
  }
23091
- .cn-object-data-widget__value--editable[data-v-59ab12e6]:focus-visible {
23450
+ .cn-object-data-widget__value--editable[data-v-324e1a00]:focus-visible {
23092
23451
  outline: 2px solid var(--color-primary-element);
23093
23452
  outline-offset: 2px;
23094
23453
  }
23095
- .cn-object-data-widget__value--empty[data-v-59ab12e6] {
23454
+ .cn-object-data-widget__value--empty[data-v-324e1a00] {
23096
23455
  color: var(--color-text-maxcontrast);
23097
23456
  font-style: italic;
23098
23457
  }
23099
- .cn-object-data-widget__edit-icon[data-v-59ab12e6] {
23458
+ .cn-object-data-widget__edit-icon[data-v-324e1a00] {
23100
23459
  position: absolute;
23101
23460
  right: 4px;
23102
23461
  top: 50%;
@@ -23105,21 +23464,21 @@ to { background-position: -200% 0;
23105
23464
  opacity: 0;
23106
23465
  transition: opacity 0.15s ease;
23107
23466
  }
23108
- .cn-object-data-widget__value--editable:hover .cn-object-data-widget__edit-icon[data-v-59ab12e6],
23109
- .cn-object-data-widget__value--editable:focus-visible .cn-object-data-widget__edit-icon[data-v-59ab12e6] {
23467
+ .cn-object-data-widget__value--editable:hover .cn-object-data-widget__edit-icon[data-v-324e1a00],
23468
+ .cn-object-data-widget__value--editable:focus-visible .cn-object-data-widget__edit-icon[data-v-324e1a00] {
23110
23469
  opacity: 1;
23111
23470
  }
23112
- .cn-object-data-widget__editor[data-v-59ab12e6] {
23471
+ .cn-object-data-widget__editor[data-v-324e1a00] {
23113
23472
  display: flex;
23114
23473
  flex-direction: column;
23115
23474
  gap: 4px;
23116
23475
  }
23117
- .cn-object-data-widget__editor-actions[data-v-59ab12e6] {
23476
+ .cn-object-data-widget__editor-actions[data-v-324e1a00] {
23118
23477
  display: flex;
23119
23478
  gap: 2px;
23120
23479
  justify-content: flex-end;
23121
23480
  }
23122
- .cn-object-data-widget__textarea[data-v-59ab12e6] {
23481
+ .cn-object-data-widget__textarea[data-v-324e1a00] {
23123
23482
  width: 100%;
23124
23483
  min-height: 80px;
23125
23484
  padding: 8px;
@@ -23131,11 +23490,11 @@ to { background-position: -200% 0;
23131
23490
  font-size: inherit;
23132
23491
  resize: vertical;
23133
23492
  }
23134
- .cn-object-data-widget__textarea[data-v-59ab12e6]:focus {
23493
+ .cn-object-data-widget__textarea[data-v-324e1a00]:focus {
23135
23494
  border-color: var(--color-primary-element);
23136
23495
  outline: none;
23137
23496
  }
23138
- .cn-object-data-widget__empty[data-v-59ab12e6] {
23497
+ .cn-object-data-widget__empty[data-v-324e1a00] {
23139
23498
  color: var(--color-text-maxcontrast);
23140
23499
  font-style: italic;
23141
23500
  padding: calc(2 * var(--default-grid-baseline, 4px));
@@ -23143,16 +23502,16 @@ to { background-position: -200% 0;
23143
23502
 
23144
23503
  /* Compact inline table for array-of-objects values. Dense + unstyled-simple;
23145
23504
  fits the card and participates in the whole-row overflow handling. */
23146
- .cn-object-data-widget__mini-table-wrap[data-v-59ab12e6] {
23505
+ .cn-object-data-widget__mini-table-wrap[data-v-324e1a00] {
23147
23506
  max-width: 100%;
23148
23507
  }
23149
- .cn-object-data-widget__mini-table[data-v-59ab12e6] {
23508
+ .cn-object-data-widget__mini-table[data-v-324e1a00] {
23150
23509
  width: 100%;
23151
23510
  border-collapse: collapse;
23152
23511
  font-size: 0.9em;
23153
23512
  }
23154
- .cn-object-data-widget__mini-table th[data-v-59ab12e6],
23155
- .cn-object-data-widget__mini-table td[data-v-59ab12e6] {
23513
+ .cn-object-data-widget__mini-table th[data-v-324e1a00],
23514
+ .cn-object-data-widget__mini-table td[data-v-324e1a00] {
23156
23515
  text-align: start;
23157
23516
  padding: 2px 8px 2px 0;
23158
23517
  border-bottom: 1px solid var(--color-border);
@@ -23163,23 +23522,23 @@ to { background-position: -200% 0;
23163
23522
  cell, and the card 8px wider than its cell (pipelinq's ticket page). */
23164
23523
  white-space: normal;
23165
23524
  }
23166
- .cn-object-data-widget__mini-table th[data-v-59ab12e6] {
23525
+ .cn-object-data-widget__mini-table th[data-v-324e1a00] {
23167
23526
  color: var(--color-text-maxcontrast);
23168
23527
  font-weight: 500;
23169
23528
  }
23170
- .cn-object-data-widget__more[data-v-59ab12e6] {
23529
+ .cn-object-data-widget__more[data-v-324e1a00] {
23171
23530
  margin-top: 2px;
23172
23531
  font-size: 0.85em;
23173
23532
  color: var(--color-text-maxcontrast);
23174
23533
  }
23175
23534
 
23176
23535
  /* Comma-less chip row for array-of-scalars values. */
23177
- .cn-object-data-widget__chips[data-v-59ab12e6] {
23536
+ .cn-object-data-widget__chips[data-v-324e1a00] {
23178
23537
  display: flex;
23179
23538
  flex-wrap: wrap;
23180
23539
  gap: 4px;
23181
23540
  }
23182
- .cn-object-data-widget__chip[data-v-59ab12e6] {
23541
+ .cn-object-data-widget__chip[data-v-324e1a00] {
23183
23542
  padding: 1px 8px;
23184
23543
  border-radius: 12px;
23185
23544
  background: var(--color-background-dark);
@@ -23187,27 +23546,37 @@ to { background-position: -200% 0;
23187
23546
  }
23188
23547
 
23189
23548
  /* Key: value definition list for a single plain-object value. */
23190
- .cn-object-data-widget__deflist[data-v-59ab12e6] {
23549
+ .cn-object-data-widget__deflist[data-v-324e1a00] {
23191
23550
  display: grid;
23192
23551
  grid-template-columns: auto 1fr;
23193
23552
  gap: 2px 8px;
23194
23553
  margin: 0;
23195
23554
  }
23196
- .cn-object-data-widget__deflist dt[data-v-59ab12e6] {
23555
+ .cn-object-data-widget__deflist dt[data-v-324e1a00] {
23197
23556
  color: var(--color-text-maxcontrast);
23198
23557
  font-size: 0.9em;
23199
23558
  }
23200
- .cn-object-data-widget__deflist dd[data-v-59ab12e6] {
23559
+ .cn-object-data-widget__deflist dd[data-v-324e1a00] {
23201
23560
  margin: 0;
23202
23561
  overflow-wrap: anywhere;
23203
23562
  }
23204
23563
 
23564
+ /* A long description keeps its own paragraphs. Set on an inline span with no
23565
+ surrounding template whitespace, so only the value's own line breaks show. */
23566
+ .cn-object-data-widget__deflist-text[data-v-324e1a00] {
23567
+ white-space: pre-wrap;
23568
+ }
23569
+ .cn-object-data-widget__deflist--nested[data-v-324e1a00] {
23570
+ padding-inline-start: 8px;
23571
+ border-inline-start: 2px solid var(--color-border);
23572
+ }
23573
+
23205
23574
  /* Responsive: collapse to single column on narrow widths */
23206
23575
  @media (max-width: 600px) {
23207
- .cn-object-data-widget__grid[data-v-59ab12e6] {
23576
+ .cn-object-data-widget__grid[data-v-324e1a00] {
23208
23577
  grid-template-columns: 1fr !important;
23209
23578
  }
23210
- .cn-object-data-widget__cell[data-v-59ab12e6] {
23579
+ .cn-object-data-widget__cell[data-v-324e1a00] {
23211
23580
  grid-column: span 1 !important;
23212
23581
  grid-row: span 1 !important;
23213
23582
  }
@@ -24592,23 +24961,23 @@ button.cn-stepper__step[data-v-776581d4] {
24592
24961
  }
24593
24962
 
24594
24963
 
24595
- .cn-widget-object-table[data-v-b6ed17ee] {
24964
+ .cn-widget-object-table[data-v-d8f8d15a] {
24596
24965
  width: 100%;
24597
24966
  }
24598
- .cn-widget-object-table__footer[data-v-b6ed17ee] {
24967
+ .cn-widget-object-table__footer[data-v-d8f8d15a] {
24599
24968
  display: flex;
24600
24969
  gap: 4px;
24601
24970
  padding: 4px 8px;
24602
24971
  border-top: 1px solid var(--color-border);
24603
24972
  }
24604
- .cn-widget-object-table__error[data-v-b6ed17ee] {
24973
+ .cn-widget-object-table__error[data-v-d8f8d15a] {
24605
24974
  color: var(--color-text-error, var(--color-error-text));
24606
24975
  font-size: 0.85em;
24607
24976
  margin: 4px 8px 0;
24608
24977
  }
24609
24978
 
24610
24979
 
24611
- .cn-detail-page__catalog-action[data-v-37d4fdce] {
24980
+ .cn-detail-page__catalog-action[data-v-cf939e1a] {
24612
24981
  align-items: center;
24613
24982
  background: var(--color-primary-element-light);
24614
24983
  border: 0;
@@ -24624,19 +24993,19 @@ button.cn-stepper__step[data-v-776581d4] {
24624
24993
  padding: 0 14px;
24625
24994
  white-space: nowrap;
24626
24995
  }
24627
- .cn-detail-page__catalog-note[data-v-37d4fdce] {
24996
+ .cn-detail-page__catalog-note[data-v-cf939e1a] {
24628
24997
  color: var(--color-text-maxcontrast);
24629
24998
  font-size: 14px;
24630
24999
  white-space: nowrap;
24631
25000
  }
24632
- .cn-detail-widget-host[data-v-37d4fdce],
24633
- .cn-detail-widget-host[data-v-37d4fdce] > * {
25001
+ .cn-detail-widget-host[data-v-cf939e1a],
25002
+ .cn-detail-widget-host[data-v-cf939e1a] > * {
24634
25003
  height: 100%;
24635
25004
  }
24636
25005
 
24637
25006
  /* A bare host is a tab panel's body: it fills the panel and lets the panel
24638
25007
  scroll, rather than growing a second scroll region of its own. */
24639
- .cn-detail-widget-host--bare[data-v-37d4fdce] {
25008
+ .cn-detail-widget-host--bare[data-v-cf939e1a] {
24640
25009
  min-height: 0;
24641
25010
  }
24642
25011
 
@@ -24919,7 +25288,7 @@ button.cn-stepper__step[data-v-776581d4] {
24919
25288
 
24920
25289
 
24921
25290
  /* A stack (`widgetIds`): the panel's widget, then cards 20px apart. */
24922
- .cn-tabs-widget__stack[data-v-9ccd8dee] {
25291
+ .cn-tabs-widget__stack[data-v-72f3975c] {
24923
25292
  display: flex;
24924
25293
  flex-direction: column;
24925
25294
  gap: 20px;
@@ -24928,19 +25297,19 @@ button.cn-stepper__step[data-v-776581d4] {
24928
25297
  /* A gridded stack (`columns` / `layout` on the tab): 12 columns, widgets wrap
24929
25298
  onto the next row, a row's cards as tall as the tallest. Narrow, it is the
24930
25299
  plain stack again. */
24931
- .cn-tabs-widget__stack--grid[data-v-9ccd8dee] {
25300
+ .cn-tabs-widget__stack--grid[data-v-72f3975c] {
24932
25301
  display: grid;
24933
25302
  grid-template-columns: repeat(12, minmax(0, 1fr));
24934
25303
  align-items: stretch;
24935
25304
  }
24936
- .cn-tabs-widget__stack--grid[data-v-9ccd8dee] > * {
25305
+ .cn-tabs-widget__stack--grid[data-v-72f3975c] > * {
24937
25306
  min-width: 0;
24938
25307
  }
24939
25308
  @media (max-width: 700px) {
24940
- .cn-tabs-widget__stack--grid[data-v-9ccd8dee] {
25309
+ .cn-tabs-widget__stack--grid[data-v-72f3975c] {
24941
25310
  grid-template-columns: minmax(0, 1fr);
24942
25311
  }
24943
- .cn-tabs-widget__stack--grid[data-v-9ccd8dee] > * {
25312
+ .cn-tabs-widget__stack--grid[data-v-72f3975c] > * {
24944
25313
  grid-column: auto !important;
24945
25314
  }
24946
25315
  }
@@ -24974,7 +25343,7 @@ button.cn-stepper__step[data-v-776581d4] {
24974
25343
  `!important` or on load order this library does not control. The same
24975
25344
  technique, for the same reason, is used on `.cn-tabs__nav .cn-tabs__nav-item`
24976
25345
  in CnTabs to beat Nextcloud's own button margin. */
24977
- .cn-tabs-widget.cn-tabs-widget[data-v-9ccd8dee] {
25346
+ .cn-tabs-widget.cn-tabs-widget[data-v-72f3975c] {
24978
25347
  background-color: transparent;
24979
25348
  border: 0;
24980
25349
  border-radius: 0;
@@ -24998,12 +25367,12 @@ button.cn-stepper__step[data-v-776581d4] {
24998
25367
  below it: the rule ran straight on to the widget's edge and read as a
24999
25368
  border sticking out past a rounded corner (Ruben, 2026-09-13). Ending it
25000
25369
  where the curve begins makes the rule and the curve one continuous edge. */
25001
- .cn-tabs-widget__tabs[data-v-9ccd8dee] .cn-tabs__bar {
25370
+ .cn-tabs-widget__tabs[data-v-72f3975c] .cn-tabs__bar {
25002
25371
  border-bottom: none;
25003
25372
  padding: 0;
25004
25373
  position: relative;
25005
25374
  }
25006
- .cn-tabs-widget__tabs[data-v-9ccd8dee] .cn-tabs__bar::after {
25375
+ .cn-tabs-widget__tabs[data-v-72f3975c] .cn-tabs__bar::after {
25007
25376
  border-bottom: 1px solid var(--color-border);
25008
25377
  content: '';
25009
25378
  inset-block-end: 0;
@@ -25016,11 +25385,11 @@ button.cn-stepper__step[data-v-776581d4] {
25016
25385
  own background-coloured bottom edge, which only works if it paints ABOVE the
25017
25386
  pseudo-element: a positioned pseudo-element otherwise paints over every
25018
25387
  in-flow sibling, rule included. */
25019
- .cn-tabs-widget__tabs[data-v-9ccd8dee] .cn-tabs__nav-item--active {
25388
+ .cn-tabs-widget__tabs[data-v-72f3975c] .cn-tabs__nav-item--active {
25020
25389
  position: relative;
25021
25390
  z-index: 1;
25022
25391
  }
25023
- .cn-tabs-widget__tabs[data-v-9ccd8dee] {
25392
+ .cn-tabs-widget__tabs[data-v-72f3975c] {
25024
25393
  display: flex;
25025
25394
  flex-direction: column;
25026
25395
  /* Grow to the widget's height, so the panel fills the grid cell the
@@ -25038,7 +25407,7 @@ button.cn-stepper__step[data-v-776581d4] {
25038
25407
  the open tab, but padding sits inside the painted box — only a margin would
25039
25408
  have opened that gap, and a zero top put every panel's content against the
25040
25409
  strip. */
25041
- .cn-tabs-widget__tabs[data-v-9ccd8dee] .cn-tabs__content {
25410
+ .cn-tabs-widget__tabs[data-v-72f3975c] .cn-tabs__content {
25042
25411
  background-color: var(--color-main-background);
25043
25412
  /* Three sides only: the bar's rule (redrawn above, stopping at the corner)
25044
25413
  is this sheet's top edge, and the open tab erases the slice of it
@@ -25058,7 +25427,7 @@ button.cn-stepper__step[data-v-776581d4] {
25058
25427
  overflow: auto;
25059
25428
  padding: 12px;
25060
25429
  }
25061
- .cn-tabs-widget__tabs[data-v-9ccd8dee] .cn-tab {
25430
+ .cn-tabs-widget__tabs[data-v-72f3975c] .cn-tab {
25062
25431
  height: 100%;
25063
25432
  }
25064
25433
 
@@ -25066,15 +25435,15 @@ button.cn-stepper__step[data-v-776581d4] {
25066
25435
  (margin 0 -16px -16px). The panel of a tab pads 12px, so on a tab that
25067
25436
  holds the list directly the footer stuck out 4px on the right and at the
25068
25437
  bottom and made the panel scroll. It bleeds exactly the panel's padding. */
25069
- .cn-tabs-widget__tabs[data-v-9ccd8dee] .cn-tabs__content > .cn-tab > .cn-detail-widget-host--bare .cn-object-list-widget__add {
25438
+ .cn-tabs-widget__tabs[data-v-72f3975c] .cn-tabs__content > .cn-tab > .cn-detail-widget-host--bare .cn-object-list-widget__add {
25070
25439
  margin: auto -12px -12px;
25071
25440
  }
25072
- .cn-tabs-widget__title[data-v-9ccd8dee] {
25441
+ .cn-tabs-widget__title[data-v-72f3975c] {
25073
25442
  align-items: center;
25074
25443
  display: inline-flex;
25075
25444
  gap: 6px;
25076
25445
  }
25077
- .cn-tabs-widget__title-icon[data-v-9ccd8dee] {
25446
+ .cn-tabs-widget__title-icon[data-v-72f3975c] {
25078
25447
  flex: 0 0 auto;
25079
25448
  }
25080
25449
 
@@ -25098,18 +25467,18 @@ button.cn-stepper__step[data-v-776581d4] {
25098
25467
  }
25099
25468
 
25100
25469
 
25101
- .cn-week-strip[data-v-b6c5e274] {
25470
+ .cn-week-strip[data-v-27a717bd] {
25102
25471
  width: 100%;
25103
25472
  }
25104
25473
 
25105
25474
  /* `content.inset: true`: the board's inset inside the card (zuiddrecht-pixel-
25106
25475
  gaps-3). A dashboard renders its widgets flush, so without it the strip ran
25107
25476
  from card edge to card edge. Theme hook: --cn-widget-board-inset. */
25108
- .cn-week-strip--inset[data-v-b6c5e274] {
25477
+ .cn-week-strip--inset[data-v-27a717bd] {
25109
25478
  box-sizing: border-box;
25110
25479
  padding: var(--cn-widget-board-inset, 16px 24px 22px);
25111
25480
  }
25112
- .cn-week-strip__state[data-v-b6c5e274] {
25481
+ .cn-week-strip__state[data-v-27a717bd] {
25113
25482
  display: flex;
25114
25483
  align-items: center;
25115
25484
  gap: 8px;
@@ -25117,15 +25486,15 @@ button.cn-stepper__step[data-v-776581d4] {
25117
25486
  padding: 12px 4px;
25118
25487
  color: var(--color-text-maxcontrast);
25119
25488
  }
25120
- .cn-week-strip__scroll[data-v-b6c5e274] {
25489
+ .cn-week-strip__scroll[data-v-27a717bd] {
25121
25490
  overflow-x: auto;
25122
25491
  border-radius: var(--border-radius-large, 8px);
25123
25492
  }
25124
- .cn-week-strip__scroll[data-v-b6c5e274]:focus-visible {
25493
+ .cn-week-strip__scroll[data-v-27a717bd]:focus-visible {
25125
25494
  outline: 2px solid var(--color-primary-element);
25126
25495
  outline-offset: 2px;
25127
25496
  }
25128
- .cn-week-strip__days[data-v-b6c5e274] {
25497
+ .cn-week-strip__days[data-v-27a717bd] {
25129
25498
  display: grid;
25130
25499
  grid-template-columns: repeat(var(--cn-week-strip-columns, 5), minmax(128px, 1fr));
25131
25500
  gap: 10px;
@@ -25135,7 +25504,7 @@ button.cn-stepper__step[data-v-776581d4] {
25135
25504
  padding: 0;
25136
25505
  list-style: none;
25137
25506
  }
25138
- .cn-week-strip__day[data-v-b6c5e274] {
25507
+ .cn-week-strip__day[data-v-27a717bd] {
25139
25508
  display: flex;
25140
25509
  flex-direction: column;
25141
25510
  gap: 8px;
@@ -25145,11 +25514,11 @@ button.cn-stepper__step[data-v-776581d4] {
25145
25514
  border-radius: var(--border-radius-large, 8px);
25146
25515
  background: var(--color-background-hover);
25147
25516
  }
25148
- .cn-week-strip__day--today[data-v-b6c5e274] {
25517
+ .cn-week-strip__day--today[data-v-27a717bd] {
25149
25518
  border-color: var(--color-primary-element);
25150
25519
  background: var(--color-primary-element-light);
25151
25520
  }
25152
- .cn-week-strip__head[data-v-b6c5e274] {
25521
+ .cn-week-strip__head[data-v-27a717bd] {
25153
25522
  display: flex;
25154
25523
  align-items: center;
25155
25524
  justify-content: space-between;
@@ -25158,7 +25527,7 @@ button.cn-stepper__step[data-v-776581d4] {
25158
25527
  font-weight: 600;
25159
25528
  color: var(--color-main-text);
25160
25529
  }
25161
- .cn-week-strip__today[data-v-b6c5e274] {
25530
+ .cn-week-strip__today[data-v-27a717bd] {
25162
25531
  padding: 1px 8px;
25163
25532
  border-radius: var(--border-radius-pill, 10px);
25164
25533
  background: var(--color-primary-element);
@@ -25166,7 +25535,7 @@ button.cn-stepper__step[data-v-776581d4] {
25166
25535
  font-size: 0.85em;
25167
25536
  font-weight: 700;
25168
25537
  }
25169
- .cn-week-strip__items[data-v-b6c5e274] {
25538
+ .cn-week-strip__items[data-v-27a717bd] {
25170
25539
  display: flex;
25171
25540
  flex-direction: column;
25172
25541
  gap: 6px;
@@ -25174,7 +25543,7 @@ button.cn-stepper__step[data-v-776581d4] {
25174
25543
  padding: 0;
25175
25544
  list-style: none;
25176
25545
  }
25177
- .cn-week-strip__item[data-v-b6c5e274] {
25546
+ .cn-week-strip__item[data-v-27a717bd] {
25178
25547
  display: flex;
25179
25548
  flex-direction: column;
25180
25549
  gap: 4px;
@@ -25185,41 +25554,41 @@ button.cn-stepper__step[data-v-776581d4] {
25185
25554
  color: var(--color-main-text);
25186
25555
  text-decoration: none;
25187
25556
  }
25188
- .cn-week-strip__item--link[data-v-b6c5e274]:hover {
25557
+ .cn-week-strip__item--link[data-v-27a717bd]:hover {
25189
25558
  border-color: var(--color-primary-element);
25190
25559
  }
25191
- .cn-week-strip__item--link[data-v-b6c5e274]:focus-visible {
25560
+ .cn-week-strip__item--link[data-v-27a717bd]:focus-visible {
25192
25561
  outline: 2px solid var(--color-primary-element);
25193
25562
  outline-offset: 2px;
25194
25563
  }
25195
25564
 
25196
25565
  /* The edge is drawn inside the box, so a late item is as wide as the others. */
25197
- .cn-week-strip__item--late[data-v-b6c5e274] {
25566
+ .cn-week-strip__item--late[data-v-27a717bd] {
25198
25567
  border-color: var(--color-element-error, var(--color-error));
25199
25568
  box-shadow: inset 3px 0 0 0 var(--color-element-error, var(--color-error));
25200
25569
  }
25201
- .cn-week-strip__title[data-v-b6c5e274] {
25570
+ .cn-week-strip__title[data-v-27a717bd] {
25202
25571
  font-size: 0.95em;
25203
25572
  line-height: 1.3;
25204
25573
  overflow-wrap: anywhere;
25205
25574
  }
25206
- .cn-week-strip__meta[data-v-b6c5e274] {
25575
+ .cn-week-strip__meta[data-v-27a717bd] {
25207
25576
  font-size: 0.85em;
25208
25577
  color: var(--color-text-maxcontrast);
25209
25578
  overflow-wrap: anywhere;
25210
25579
  }
25211
- .cn-week-strip__late[data-v-b6c5e274] {
25580
+ .cn-week-strip__late[data-v-27a717bd] {
25212
25581
  font-size: 0.8em;
25213
25582
  font-weight: 600;
25214
25583
  color: var(--color-text-error, var(--color-error-text));
25215
25584
  }
25216
- .cn-week-strip__empty[data-v-b6c5e274] {
25585
+ .cn-week-strip__empty[data-v-27a717bd] {
25217
25586
  font-size: 0.9em;
25218
25587
  color: var(--color-text-maxcontrast);
25219
25588
  }
25220
25589
 
25221
25590
  /* "+N more" under a capped day: a quiet text control, 24px high to click. */
25222
- .cn-week-strip__more[data-v-b6c5e274] {
25591
+ .cn-week-strip__more[data-v-27a717bd] {
25223
25592
  align-self: flex-start;
25224
25593
  min-height: 24px;
25225
25594
  margin: 0;
@@ -25234,10 +25603,10 @@ button.cn-stepper__step[data-v-776581d4] {
25234
25603
  text-decoration: none;
25235
25604
  cursor: pointer;
25236
25605
  }
25237
- .cn-week-strip__more[data-v-b6c5e274]:hover {
25606
+ .cn-week-strip__more[data-v-27a717bd]:hover {
25238
25607
  text-decoration: underline;
25239
25608
  }
25240
- .cn-week-strip__more[data-v-b6c5e274]:focus-visible {
25609
+ .cn-week-strip__more[data-v-27a717bd]:focus-visible {
25241
25610
  outline: 2px solid var(--color-primary-element);
25242
25611
  outline-offset: 2px;
25243
25612
  }
@@ -28483,7 +28852,7 @@ tr.file-picker__row td.row-name[data-v-1f96131b] {
28483
28852
 
28484
28853
  /* The percentage-change chip beside the value. Tinted good/bad at runtime from
28485
28854
  * `goodDirection`, so the colour is an inline style, not a class. */
28486
- .cn-delta-widget__delta[data-v-66680dc6] {
28855
+ .cn-delta-widget__delta[data-v-ee481872] {
28487
28856
  display: inline-flex;
28488
28857
  align-items: center;
28489
28858
  gap: 2px;
@@ -28494,7 +28863,7 @@ tr.file-picker__row td.row-name[data-v-1f96131b] {
28494
28863
  /* The dash shown when the number could not be fetched. It stands where the
28495
28864
  * value stands, so it takes the value's size and weight — only the colour
28496
28865
  * differs, because a failure is not a number. */
28497
- .cn-delta-widget__error[data-v-66680dc6] {
28866
+ .cn-delta-widget__error[data-v-ee481872] {
28498
28867
  font-size: var(--cn-kpi-value-size, 2rem);
28499
28868
  font-weight: var(--cn-kpi-value-weight, 700);
28500
28869
  line-height: var(--cn-kpi-value-line, 1.1);
@@ -28525,7 +28894,7 @@ tr.file-picker__row td.row-name[data-v-1f96131b] {
28525
28894
  }
28526
28895
 
28527
28896
 
28528
- .cn-gauge-widget[data-v-0ac8e0e8] {
28897
+ .cn-gauge-widget[data-v-006ab8f8] {
28529
28898
  display: flex;
28530
28899
  flex-direction: column;
28531
28900
  gap: 8px;
@@ -28533,58 +28902,58 @@ tr.file-picker__row td.row-name[data-v-1f96131b] {
28533
28902
  }
28534
28903
 
28535
28904
  /* Whole-tile click target when the widget declares a `route`/`link`. */
28536
- .cn-gauge-widget--linked[data-v-0ac8e0e8] {
28905
+ .cn-gauge-widget--linked[data-v-006ab8f8] {
28537
28906
  cursor: pointer;
28538
28907
  text-decoration: none;
28539
28908
  color: inherit;
28540
28909
  border-radius: var(--border-radius-large, 8px);
28541
28910
  transition: background-color 0.1s ease-in-out;
28542
28911
  }
28543
- .cn-gauge-widget--linked[data-v-0ac8e0e8]:hover {
28912
+ .cn-gauge-widget--linked[data-v-006ab8f8]:hover {
28544
28913
  background-color: var(--color-background-hover);
28545
28914
  }
28546
- .cn-gauge-widget--linked[data-v-0ac8e0e8]:focus-visible {
28915
+ .cn-gauge-widget--linked[data-v-006ab8f8]:focus-visible {
28547
28916
  outline: 2px solid var(--color-primary-element);
28548
28917
  outline-offset: 2px;
28549
28918
  }
28550
- .cn-gauge-widget__head[data-v-0ac8e0e8] {
28919
+ .cn-gauge-widget__head[data-v-006ab8f8] {
28551
28920
  display: flex;
28552
28921
  align-items: baseline;
28553
28922
  justify-content: space-between;
28554
28923
  gap: 8px;
28555
28924
  }
28556
- .cn-gauge-widget__label[data-v-0ac8e0e8] {
28925
+ .cn-gauge-widget__label[data-v-006ab8f8] {
28557
28926
  font-size: 0.95em;
28558
28927
  font-weight: 600;
28559
28928
  color: var(--color-main-text);
28560
28929
  }
28561
- .cn-gauge-widget__pct[data-v-0ac8e0e8] {
28930
+ .cn-gauge-widget__pct[data-v-006ab8f8] {
28562
28931
  font-size: 1.2em;
28563
28932
  font-weight: 700;
28564
28933
  }
28565
- .cn-gauge-widget__track[data-v-0ac8e0e8] {
28934
+ .cn-gauge-widget__track[data-v-006ab8f8] {
28566
28935
  width: 100%;
28567
28936
  height: 10px;
28568
28937
  border-radius: 5px;
28569
28938
  background: var(--color-background-dark);
28570
28939
  overflow: hidden;
28571
28940
  }
28572
- .cn-gauge-widget__fill[data-v-0ac8e0e8] {
28941
+ .cn-gauge-widget__fill[data-v-006ab8f8] {
28573
28942
  height: 100%;
28574
28943
  border-radius: 5px;
28575
28944
  transition: width 0.3s ease;
28576
28945
  }
28577
- .cn-gauge-widget__foot[data-v-0ac8e0e8] {
28946
+ .cn-gauge-widget__foot[data-v-006ab8f8] {
28578
28947
  display: flex;
28579
28948
  align-items: baseline;
28580
28949
  gap: 6px;
28581
28950
  font-size: 0.9em;
28582
28951
  }
28583
- .cn-gauge-widget__value[data-v-0ac8e0e8] {
28952
+ .cn-gauge-widget__value[data-v-006ab8f8] {
28584
28953
  font-weight: 700;
28585
28954
  color: var(--color-main-text);
28586
28955
  }
28587
- .cn-gauge-widget__target[data-v-0ac8e0e8] {
28956
+ .cn-gauge-widget__target[data-v-006ab8f8] {
28588
28957
  color: var(--color-text-maxcontrast);
28589
28958
  }
28590
28959
 
@@ -28975,13 +29344,13 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
28975
29344
  }
28976
29345
 
28977
29346
 
28978
- .cn-facts-widget[data-v-10daaa85] {
29347
+ .cn-facts-widget[data-v-8146cb58] {
28979
29348
  display: flex;
28980
29349
  flex-direction: column;
28981
29350
  gap: 10px;
28982
29351
  min-width: 0;
28983
29352
  }
28984
- .cn-facts-widget__rows[data-v-10daaa85] {
29353
+ .cn-facts-widget__rows[data-v-8146cb58] {
28985
29354
  display: grid;
28986
29355
  grid-template-columns: max-content 1fr;
28987
29356
  gap: 8px 16px;
@@ -28990,7 +29359,7 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
28990
29359
  }
28991
29360
 
28992
29361
  /* Each row is a grid of its own children: the wrapper takes no box. */
28993
- .cn-facts-widget__row[data-v-10daaa85] {
29362
+ .cn-facts-widget__row[data-v-8146cb58] {
28994
29363
  display: contents;
28995
29364
  }
28996
29365
 
@@ -28998,13 +29367,13 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
28998
29367
  pushed the label to the right of its column and added 12px around both. The
28999
29368
  class is doubled so these resets outrank that rule, and a dossiq-style
29000
29369
  `:deep()` override in an app is not needed. */
29001
- .cn-facts-widget__label.cn-facts-widget__label[data-v-10daaa85] {
29370
+ .cn-facts-widget__label.cn-facts-widget__label[data-v-8146cb58] {
29002
29371
  margin: 0;
29003
29372
  padding: 0;
29004
29373
  text-align: start;
29005
29374
  color: var(--color-text-maxcontrast);
29006
29375
  }
29007
- .cn-facts-widget__value.cn-facts-widget__value[data-v-10daaa85] {
29376
+ .cn-facts-widget__value.cn-facts-widget__value[data-v-8146cb58] {
29008
29377
  margin: 0;
29009
29378
  padding: 0;
29010
29379
  text-align: start;
@@ -29012,20 +29381,20 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29012
29381
  min-width: 0;
29013
29382
  overflow-wrap: anywhere;
29014
29383
  }
29015
- .cn-facts-widget__title[data-v-10daaa85] {
29384
+ .cn-facts-widget__title[data-v-8146cb58] {
29016
29385
  font-size: 15px;
29017
29386
  font-weight: 600;
29018
29387
  color: var(--color-main-text);
29019
29388
  }
29020
- .cn-facts-widget__line[data-v-10daaa85] {
29389
+ .cn-facts-widget__line[data-v-8146cb58] {
29021
29390
  font-size: 13px;
29022
29391
  color: var(--color-text-maxcontrast);
29023
29392
  }
29024
- .cn-facts-widget__muted[data-v-10daaa85] {
29393
+ .cn-facts-widget__muted[data-v-8146cb58] {
29025
29394
  margin: 0;
29026
29395
  color: var(--color-text-maxcontrast);
29027
29396
  }
29028
- .cn-facts-widget__label .hidden-visually[data-v-10daaa85] {
29397
+ .cn-facts-widget__label .hidden-visually[data-v-8146cb58] {
29029
29398
  clip-path: inset(50%);
29030
29399
  height: 1px;
29031
29400
  overflow: hidden;
@@ -29033,23 +29402,23 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29033
29402
  white-space: nowrap;
29034
29403
  width: 1px;
29035
29404
  }
29036
- .cn-facts-widget__label--icon[data-v-10daaa85] {
29405
+ .cn-facts-widget__label--icon[data-v-8146cb58] {
29037
29406
  align-items: center;
29038
29407
  display: flex;
29039
29408
  }
29040
- .cn-facts-widget__value-link[data-v-10daaa85] {
29409
+ .cn-facts-widget__value-link[data-v-8146cb58] {
29041
29410
  color: var(--color-primary-element);
29042
29411
  text-decoration: underline;
29043
29412
  }
29044
- .cn-facts-widget__inline-button[data-v-10daaa85],
29045
- .cn-facts-widget__icon-button[data-v-10daaa85],
29046
- .cn-facts-widget__action[data-v-10daaa85] {
29413
+ .cn-facts-widget__inline-button[data-v-8146cb58],
29414
+ .cn-facts-widget__icon-button[data-v-8146cb58],
29415
+ .cn-facts-widget__action[data-v-8146cb58] {
29047
29416
  align-items: center;
29048
29417
  cursor: pointer;
29049
29418
  display: inline-flex;
29050
29419
  font: inherit;
29051
29420
  }
29052
- .cn-facts-widget__inline-button[data-v-10daaa85] {
29421
+ .cn-facts-widget__inline-button[data-v-8146cb58] {
29053
29422
  background: var(--color-main-background);
29054
29423
  border: 1px solid var(--color-border-dark);
29055
29424
  border-radius: 16px;
@@ -29060,7 +29429,7 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29060
29429
  min-height: 28px;
29061
29430
  padding: 0 10px;
29062
29431
  }
29063
- .cn-facts-widget__icon-button[data-v-10daaa85] {
29432
+ .cn-facts-widget__icon-button[data-v-8146cb58] {
29064
29433
  background: transparent;
29065
29434
  border: 0;
29066
29435
  border-radius: 6px;
@@ -29069,23 +29438,23 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29069
29438
  padding: 2px;
29070
29439
  vertical-align: middle;
29071
29440
  }
29072
- .cn-facts-widget__icon-button[data-v-10daaa85]:hover,
29073
- .cn-facts-widget__icon-button[data-v-10daaa85]:focus-visible {
29441
+ .cn-facts-widget__icon-button[data-v-8146cb58]:hover,
29442
+ .cn-facts-widget__icon-button[data-v-8146cb58]:focus-visible {
29074
29443
  background: var(--color-background-hover);
29075
29444
  color: var(--color-main-text);
29076
29445
  }
29077
- .cn-facts-widget__text[data-v-10daaa85] {
29446
+ .cn-facts-widget__text[data-v-8146cb58] {
29078
29447
  color: var(--color-main-text);
29079
29448
  font-size: 15px;
29080
29449
  }
29081
29450
 
29082
29451
  /* A lead: an icon tile or initials beside a bold title and a muted subtitle. */
29083
- .cn-facts-widget__lead[data-v-10daaa85] {
29452
+ .cn-facts-widget__lead[data-v-8146cb58] {
29084
29453
  align-items: center;
29085
29454
  display: flex;
29086
29455
  gap: 12px;
29087
29456
  }
29088
- .cn-facts-widget__lead-tile[data-v-10daaa85] {
29457
+ .cn-facts-widget__lead-tile[data-v-8146cb58] {
29089
29458
  align-items: center;
29090
29459
  background: var(--color-background-dark);
29091
29460
  border-radius: 8px;
@@ -29098,29 +29467,29 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29098
29467
  justify-content: center;
29099
29468
  width: 40px;
29100
29469
  }
29101
- .cn-facts-widget__lead-tile--success[data-v-10daaa85] {
29470
+ .cn-facts-widget__lead-tile--success[data-v-8146cb58] {
29102
29471
  background: color-mix(in srgb, var(--color-success) 14%, var(--color-main-background));
29103
29472
  border-radius: 50%;
29104
29473
  color: var(--color-success-text, var(--color-success));
29105
29474
  }
29106
- .cn-facts-widget__lead-tile--info[data-v-10daaa85] {
29475
+ .cn-facts-widget__lead-tile--info[data-v-8146cb58] {
29107
29476
  background: var(--color-primary-element-light);
29108
29477
  border-radius: 50%;
29109
29478
  color: var(--color-primary-element-light-text, var(--color-primary-element));
29110
29479
  }
29111
- .cn-facts-widget__lead-text[data-v-10daaa85] {
29480
+ .cn-facts-widget__lead-text[data-v-8146cb58] {
29112
29481
  display: flex;
29113
29482
  flex-direction: column;
29114
29483
  min-width: 0;
29115
29484
  }
29116
- .cn-facts-widget__lead-title[data-v-10daaa85] {
29485
+ .cn-facts-widget__lead-title[data-v-8146cb58] {
29117
29486
  font-size: 15px;
29118
29487
  }
29119
- .cn-facts-widget__lead-subtitle[data-v-10daaa85] {
29488
+ .cn-facts-widget__lead-subtitle[data-v-8146cb58] {
29120
29489
  color: var(--color-text-maxcontrast);
29121
29490
  font-size: 13px;
29122
29491
  }
29123
- .cn-facts-widget__action[data-v-10daaa85] {
29492
+ .cn-facts-widget__action[data-v-8146cb58] {
29124
29493
  align-self: flex-start;
29125
29494
  background: var(--color-primary-element-light);
29126
29495
  border: 0;
@@ -29132,11 +29501,11 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29132
29501
  min-height: 32px;
29133
29502
  padding: 0 14px;
29134
29503
  }
29135
- .cn-facts-widget__action[data-v-10daaa85]:hover,
29136
- .cn-facts-widget__action[data-v-10daaa85]:focus-visible {
29504
+ .cn-facts-widget__action[data-v-8146cb58]:hover,
29505
+ .cn-facts-widget__action[data-v-8146cb58]:focus-visible {
29137
29506
  background: var(--color-primary-element-light-hover, var(--color-primary-element-light));
29138
29507
  }
29139
- .cn-facts-widget__link[data-v-10daaa85] {
29508
+ .cn-facts-widget__link[data-v-8146cb58] {
29140
29509
  font-size: 14px;
29141
29510
  font-weight: 600;
29142
29511
  color: var(--color-primary-element);
@@ -29144,34 +29513,34 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29144
29513
  }
29145
29514
 
29146
29515
 
29147
- .cn-field-list-widget[data-v-7d90316d] {
29516
+ .cn-field-list-widget[data-v-643f1dd6] {
29148
29517
  display: flex;
29149
29518
  flex-direction: column;
29150
29519
  gap: 12px;
29151
29520
  min-width: 0;
29152
29521
  }
29153
- .cn-field-list-widget__rows[data-v-7d90316d] {
29522
+ .cn-field-list-widget__rows[data-v-643f1dd6] {
29154
29523
  list-style: none;
29155
29524
  margin: 0;
29156
29525
  padding: 0;
29157
29526
  display: flex;
29158
29527
  flex-direction: column;
29159
29528
  }
29160
- .cn-field-list-widget__row[data-v-7d90316d] {
29529
+ .cn-field-list-widget__row[data-v-643f1dd6] {
29161
29530
  padding: 10px 0;
29162
29531
  border-top: 1px solid var(--color-border);
29163
29532
  }
29164
- .cn-field-list-widget__row[data-v-7d90316d]:first-child {
29533
+ .cn-field-list-widget__row[data-v-643f1dd6]:first-child {
29165
29534
  border-top: none;
29166
29535
  padding-top: 0;
29167
29536
  }
29168
- .cn-field-list-widget__line[data-v-7d90316d] {
29537
+ .cn-field-list-widget__line[data-v-643f1dd6] {
29169
29538
  display: flex;
29170
29539
  align-items: center;
29171
29540
  gap: 12px;
29172
29541
  min-width: 0;
29173
29542
  }
29174
- .cn-field-list-widget__avatar[data-v-7d90316d] {
29543
+ .cn-field-list-widget__avatar[data-v-643f1dd6] {
29175
29544
  flex: 0 0 auto;
29176
29545
  display: inline-flex;
29177
29546
  align-items: center;
@@ -29184,64 +29553,69 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29184
29553
  font-size: 12px;
29185
29554
  font-weight: 700;
29186
29555
  }
29187
- .cn-field-list-widget__main[data-v-7d90316d] {
29556
+ .cn-field-list-widget__main[data-v-643f1dd6] {
29188
29557
  display: flex;
29189
29558
  flex-direction: column;
29190
29559
  flex: 1 1 auto;
29191
29560
  min-width: 0;
29192
29561
  }
29193
- .cn-field-list-widget__title[data-v-7d90316d] {
29562
+ .cn-field-list-widget__title[data-v-643f1dd6] {
29194
29563
  font-weight: 600;
29195
29564
  overflow-wrap: anywhere;
29196
29565
  }
29197
- .cn-field-list-widget__meta[data-v-7d90316d],
29198
- .cn-field-list-widget__aside[data-v-7d90316d],
29199
- .cn-field-list-widget__detail[data-v-7d90316d],
29200
- .cn-field-list-widget__hint[data-v-7d90316d],
29201
- .cn-field-list-widget__empty[data-v-7d90316d] {
29566
+ .cn-field-list-widget__meta[data-v-643f1dd6],
29567
+ .cn-field-list-widget__aside[data-v-643f1dd6],
29568
+ .cn-field-list-widget__detail[data-v-643f1dd6],
29569
+ .cn-field-list-widget__hint[data-v-643f1dd6],
29570
+ .cn-field-list-widget__empty[data-v-643f1dd6] {
29202
29571
  color: var(--color-text-maxcontrast);
29203
29572
  }
29204
- .cn-field-list-widget__meta[data-v-7d90316d],
29205
- .cn-field-list-widget__aside[data-v-7d90316d],
29206
- .cn-field-list-widget__detail[data-v-7d90316d] {
29573
+ .cn-field-list-widget__meta[data-v-643f1dd6],
29574
+ .cn-field-list-widget__aside[data-v-643f1dd6],
29575
+ .cn-field-list-widget__copies[data-v-643f1dd6] {
29576
+ display: flex;
29577
+ flex-wrap: wrap;
29578
+ gap: 4px;
29579
+ }
29580
+ .cn-field-list-widget__detail[data-v-643f1dd6] {
29207
29581
  font-size: 13px;
29208
29582
  }
29209
- .cn-field-list-widget__aside[data-v-7d90316d] {
29583
+ .cn-field-list-widget__aside[data-v-643f1dd6] {
29210
29584
  white-space: nowrap;
29211
29585
  }
29212
- .cn-field-list-widget__detail[data-v-7d90316d],
29213
- .cn-field-list-widget__hint[data-v-7d90316d],
29214
- .cn-field-list-widget__empty[data-v-7d90316d] {
29586
+ .cn-field-list-widget__detail[data-v-643f1dd6],
29587
+ .cn-field-list-widget__hint[data-v-643f1dd6],
29588
+ .cn-field-list-widget__empty[data-v-643f1dd6] {
29215
29589
  margin: 4px 0 0;
29216
29590
  overflow-wrap: anywhere;
29217
29591
  }
29218
- .cn-field-list-widget__add[data-v-7d90316d] {
29592
+ .cn-field-list-widget__add[data-v-643f1dd6] {
29219
29593
  display: flex;
29220
29594
  flex-wrap: wrap;
29221
29595
  align-items: flex-end;
29222
29596
  gap: 8px 12px;
29223
29597
  }
29224
- .cn-field-list-widget__add[data-v-7d90316d] > * {
29598
+ .cn-field-list-widget__add[data-v-643f1dd6] > * {
29225
29599
  flex: 1 1 180px;
29226
29600
  }
29227
- .cn-field-list-widget__add > button[data-v-7d90316d] {
29601
+ .cn-field-list-widget__add > button[data-v-643f1dd6] {
29228
29602
  flex: 0 0 auto;
29229
29603
  }
29230
- .cn-field-list-widget__toolbar[data-v-7d90316d] {
29604
+ .cn-field-list-widget__toolbar[data-v-643f1dd6] {
29231
29605
  display: flex;
29232
29606
  justify-content: flex-end;
29233
29607
  }
29234
- .cn-field-list-widget__table-wrap[data-v-7d90316d] {
29608
+ .cn-field-list-widget__table-wrap[data-v-643f1dd6] {
29235
29609
  display: flex;
29236
29610
  flex-direction: column;
29237
29611
  gap: 12px;
29238
29612
  overflow-x: auto;
29239
29613
  }
29240
- .cn-field-list-widget__table[data-v-7d90316d] {
29614
+ .cn-field-list-widget__table[data-v-643f1dd6] {
29241
29615
  width: 100%;
29242
29616
  border-collapse: collapse;
29243
29617
  }
29244
- .cn-field-list-widget__th[data-v-7d90316d] {
29618
+ .cn-field-list-widget__th[data-v-643f1dd6] {
29245
29619
  padding: 8px 12px;
29246
29620
  text-align: start;
29247
29621
  font-size: 13px;
@@ -29250,27 +29624,27 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29250
29624
  color: var(--color-text-maxcontrast);
29251
29625
  background: var(--color-background-hover);
29252
29626
  }
29253
- .cn-field-list-widget__th--menu[data-v-7d90316d],
29254
- .cn-field-list-widget__td--menu[data-v-7d90316d] {
29627
+ .cn-field-list-widget__th--menu[data-v-643f1dd6],
29628
+ .cn-field-list-widget__td--menu[data-v-643f1dd6] {
29255
29629
  width: 1%;
29256
29630
  text-align: end;
29257
29631
  }
29258
- .cn-field-list-widget__tr[data-v-7d90316d] {
29632
+ .cn-field-list-widget__tr[data-v-643f1dd6] {
29259
29633
  border-top: 1px solid var(--cn-board-hairline, var(--color-border));
29260
29634
  }
29261
- .cn-field-list-widget__td[data-v-7d90316d] {
29635
+ .cn-field-list-widget__td[data-v-643f1dd6] {
29262
29636
  padding: 10px 12px;
29263
29637
  vertical-align: middle;
29264
29638
  overflow-wrap: anywhere;
29265
29639
  }
29266
- .cn-field-list-widget__sr[data-v-7d90316d] {
29640
+ .cn-field-list-widget__sr[data-v-643f1dd6] {
29267
29641
  position: absolute;
29268
29642
  width: 1px;
29269
29643
  height: 1px;
29270
29644
  overflow: hidden;
29271
29645
  clip-path: inset(50%);
29272
29646
  }
29273
- .cn-field-list-widget__band[data-v-7d90316d] {
29647
+ .cn-field-list-widget__band[data-v-643f1dd6] {
29274
29648
  display: flex;
29275
29649
  flex-wrap: wrap;
29276
29650
  align-items: center;
@@ -29616,17 +29990,17 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29616
29990
  }
29617
29991
 
29618
29992
 
29619
- .cn-toggle-table[data-v-1bb40018] {
29993
+ .cn-toggle-table[data-v-24769640] {
29620
29994
  display: flex;
29621
29995
  flex-direction: column;
29622
29996
  gap: 8px;
29623
29997
  min-width: 0;
29624
29998
  }
29625
- .cn-toggle-table__table[data-v-1bb40018] {
29999
+ .cn-toggle-table__table[data-v-24769640] {
29626
30000
  width: 100%;
29627
30001
  border-collapse: collapse;
29628
30002
  }
29629
- .cn-toggle-table__head[data-v-1bb40018] {
30003
+ .cn-toggle-table__head[data-v-24769640] {
29630
30004
  padding: 8px 12px;
29631
30005
  text-align: start;
29632
30006
  font-size: 13px;
@@ -29634,30 +30008,30 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29634
30008
  color: var(--color-text-maxcontrast);
29635
30009
  background: var(--color-background-hover);
29636
30010
  }
29637
- .cn-toggle-table__head--toggle[data-v-1bb40018],
29638
- .cn-toggle-table__cell--toggle[data-v-1bb40018] {
30011
+ .cn-toggle-table__head--toggle[data-v-24769640],
30012
+ .cn-toggle-table__cell--toggle[data-v-24769640] {
29639
30013
  width: 1%;
29640
30014
  white-space: nowrap;
29641
30015
  text-align: end;
29642
30016
  }
29643
- .cn-toggle-table__row[data-v-1bb40018] {
30017
+ .cn-toggle-table__row[data-v-24769640] {
29644
30018
  border-top: 1px solid var(--cn-board-hairline, var(--color-border));
29645
30019
  }
29646
- .cn-toggle-table__cell[data-v-1bb40018] {
30020
+ .cn-toggle-table__cell[data-v-24769640] {
29647
30021
  padding: 10px 12px;
29648
30022
  vertical-align: middle;
29649
30023
  overflow-wrap: anywhere;
29650
30024
  }
29651
- .cn-toggle-table__title[data-v-1bb40018] {
30025
+ .cn-toggle-table__title[data-v-24769640] {
29652
30026
  display: block;
29653
30027
  font-weight: 600;
29654
30028
  }
29655
- .cn-toggle-table__hint[data-v-1bb40018] {
30029
+ .cn-toggle-table__hint[data-v-24769640] {
29656
30030
  display: block;
29657
30031
  font-size: 12px;
29658
30032
  color: var(--color-text-maxcontrast);
29659
30033
  }
29660
- .cn-toggle-table__empty[data-v-1bb40018] {
30034
+ .cn-toggle-table__empty[data-v-24769640] {
29661
30035
  margin: 0;
29662
30036
  color: var(--color-text-maxcontrast);
29663
30037
  }
@@ -29757,27 +30131,27 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29757
30131
  }
29758
30132
 
29759
30133
 
29760
- .cn-record-list__list[data-v-519e7f1c] {
30134
+ .cn-record-list__list[data-v-b2ef255e] {
29761
30135
  list-style: none;
29762
30136
  margin: 0;
29763
30137
  padding: 0;
29764
30138
  }
29765
- .cn-record-list__empty[data-v-519e7f1c],
29766
- .cn-record-list__error[data-v-519e7f1c] {
30139
+ .cn-record-list__empty[data-v-b2ef255e],
30140
+ .cn-record-list__error[data-v-b2ef255e] {
29767
30141
  color: var(--color-text-maxcontrast);
29768
30142
  margin: 0;
29769
30143
  }
29770
- .cn-record-list__loading[data-v-519e7f1c] {
30144
+ .cn-record-list__loading[data-v-b2ef255e] {
29771
30145
  display: flex;
29772
30146
  justify-content: center;
29773
30147
  padding: 8px 0;
29774
30148
  }
29775
30149
 
29776
30150
  /* rows */
29777
- .cn-record-list--rows .cn-record-list__item + .cn-record-list__item[data-v-519e7f1c] {
30151
+ .cn-record-list--rows .cn-record-list__item + .cn-record-list__item[data-v-b2ef255e] {
29778
30152
  border-top: 1px solid var(--color-border);
29779
30153
  }
29780
- .cn-record-list__row[data-v-519e7f1c] {
30154
+ .cn-record-list__row[data-v-b2ef255e] {
29781
30155
  align-items: center;
29782
30156
  color: var(--color-main-text);
29783
30157
  display: flex;
@@ -29785,11 +30159,11 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29785
30159
  padding: 12px 0;
29786
30160
  text-decoration: none;
29787
30161
  }
29788
- .cn-record-list__row--link:hover .cn-record-list__title[data-v-519e7f1c],
29789
- .cn-record-list__row--link:focus-visible .cn-record-list__title[data-v-519e7f1c] {
30162
+ .cn-record-list__row--link:hover .cn-record-list__title[data-v-b2ef255e],
30163
+ .cn-record-list__row--link:focus-visible .cn-record-list__title[data-v-b2ef255e] {
29790
30164
  text-decoration: underline;
29791
30165
  }
29792
- .cn-record-list__avatar[data-v-519e7f1c] {
30166
+ .cn-record-list__avatar[data-v-b2ef255e] {
29793
30167
  align-items: center;
29794
30168
  background: var(--color-background-hover);
29795
30169
  border-radius: 50%;
@@ -29802,67 +30176,67 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29802
30176
  justify-content: center;
29803
30177
  width: 36px;
29804
30178
  }
29805
- .cn-record-list__main[data-v-519e7f1c] {
30179
+ .cn-record-list__main[data-v-b2ef255e] {
29806
30180
  display: flex;
29807
30181
  flex: 1 1 auto;
29808
30182
  flex-direction: column;
29809
30183
  gap: 2px;
29810
30184
  min-width: 0;
29811
30185
  }
29812
- .cn-record-list__title[data-v-519e7f1c] {
30186
+ .cn-record-list__title[data-v-b2ef255e] {
29813
30187
  font-size: 15px;
29814
30188
  font-weight: 700;
29815
30189
  }
29816
- .cn-record-list__meta[data-v-519e7f1c] {
30190
+ .cn-record-list__meta[data-v-b2ef255e] {
29817
30191
  color: var(--color-text-maxcontrast);
29818
30192
  font-size: 13px;
29819
30193
  }
29820
- .cn-record-list__aside[data-v-519e7f1c] {
30194
+ .cn-record-list__aside[data-v-b2ef255e] {
29821
30195
  align-items: center;
29822
30196
  display: flex;
29823
30197
  flex: none;
29824
30198
  gap: 16px;
29825
30199
  }
29826
- .cn-record-list__trailing[data-v-519e7f1c] {
30200
+ .cn-record-list__trailing[data-v-b2ef255e] {
29827
30201
  font-size: 14px;
29828
30202
  white-space: nowrap;
29829
30203
  }
29830
- .cn-record-list__due[data-v-519e7f1c] {
30204
+ .cn-record-list__due[data-v-b2ef255e] {
29831
30205
  font-size: 14px;
29832
30206
  white-space: nowrap;
29833
30207
  }
29834
- .cn-record-list__due--danger[data-v-519e7f1c] {
30208
+ .cn-record-list__due--danger[data-v-b2ef255e] {
29835
30209
  color: var(--color-text-error, var(--color-error-text));
29836
30210
  font-weight: 600;
29837
30211
  }
29838
- .cn-record-list__due--empty[data-v-519e7f1c] {
30212
+ .cn-record-list__due--empty[data-v-b2ef255e] {
29839
30213
  color: var(--color-text-maxcontrast);
29840
30214
  }
29841
- .cn-record-list__row--action[data-v-519e7f1c] {
30215
+ .cn-record-list__row--action[data-v-b2ef255e] {
29842
30216
  flex-wrap: wrap;
29843
30217
  gap: 8px 16px;
29844
30218
  padding: 14px 0;
29845
30219
  }
29846
- .cn-record-list__row--action .cn-record-list__main[data-v-519e7f1c] {
30220
+ .cn-record-list__row--action .cn-record-list__main[data-v-b2ef255e] {
29847
30221
  flex: 1 1 280px;
29848
30222
  gap: 3px;
29849
30223
  }
29850
- .cn-record-list__title--link[data-v-519e7f1c] {
30224
+ .cn-record-list__title--link[data-v-b2ef255e] {
29851
30225
  color: var(--color-main-text);
29852
30226
  text-decoration: underline;
29853
30227
  }
29854
- .cn-record-list__pills[data-v-519e7f1c] {
30228
+ .cn-record-list__pills[data-v-b2ef255e] {
29855
30229
  display: flex;
29856
30230
  flex: 0 0 120px;
29857
30231
  gap: 6px;
29858
30232
  justify-content: flex-end;
29859
30233
  }
29860
- .cn-record-list__due--column[data-v-519e7f1c] {
30234
+ .cn-record-list__due--column[data-v-b2ef255e] {
29861
30235
  flex: 0 0 96px;
29862
30236
  font-size: 13px;
29863
30237
  text-align: end;
29864
30238
  }
29865
- .cn-record-list__action[data-v-519e7f1c] {
30239
+ .cn-record-list__action[data-v-b2ef255e] {
29866
30240
  align-items: center;
29867
30241
  background: var(--color-primary-element-light);
29868
30242
  border: 0;
@@ -29879,26 +30253,26 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29879
30253
  padding: 0 14px;
29880
30254
  text-decoration: none;
29881
30255
  }
29882
- .cn-record-list__action[data-v-519e7f1c]:hover,
29883
- .cn-record-list__action[data-v-519e7f1c]:focus-visible {
30256
+ .cn-record-list__action[data-v-b2ef255e]:hover,
30257
+ .cn-record-list__action[data-v-b2ef255e]:focus-visible {
29884
30258
  background: var(--color-primary-element-light-hover, var(--color-primary-element-light));
29885
30259
  }
29886
- .cn-record-list__chevron[data-v-519e7f1c] {
30260
+ .cn-record-list__chevron[data-v-b2ef255e] {
29887
30261
  color: var(--color-text-maxcontrast);
29888
30262
  flex: none;
29889
30263
  }
29890
30264
 
29891
30265
  /* feed */
29892
- .cn-record-list--feed .cn-record-list__item + .cn-record-list__item[data-v-519e7f1c] {
30266
+ .cn-record-list--feed .cn-record-list__item + .cn-record-list__item[data-v-b2ef255e] {
29893
30267
  border-top: 1px solid var(--color-border);
29894
30268
  }
29895
- .cn-record-list__feed-row[data-v-519e7f1c] {
30269
+ .cn-record-list__feed-row[data-v-b2ef255e] {
29896
30270
  align-items: flex-start;
29897
30271
  display: flex;
29898
30272
  gap: 14px;
29899
30273
  padding: 12px 0;
29900
30274
  }
29901
- .cn-record-list__feed-icon[data-v-519e7f1c] {
30275
+ .cn-record-list__feed-icon[data-v-b2ef255e] {
29902
30276
  align-items: center;
29903
30277
  background: var(--color-primary-element-light);
29904
30278
  border-radius: 50%;
@@ -29909,25 +30283,25 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29909
30283
  justify-content: center;
29910
30284
  width: 36px;
29911
30285
  }
29912
- .cn-record-list__text[data-v-519e7f1c] {
30286
+ .cn-record-list__text[data-v-b2ef255e] {
29913
30287
  font-size: 15px;
29914
30288
  }
29915
- .cn-record-list--feed .cn-record-list__main[data-v-519e7f1c] {
30289
+ .cn-record-list--feed .cn-record-list__main[data-v-b2ef255e] {
29916
30290
  color: var(--color-main-text);
29917
30291
  text-decoration: none;
29918
30292
  }
29919
30293
 
29920
30294
  /* inline */
29921
- .cn-record-list__inline-row[data-v-519e7f1c] {
30295
+ .cn-record-list__inline-row[data-v-b2ef255e] {
29922
30296
  padding: 4px 0;
29923
30297
  }
29924
- .cn-record-list__label[data-v-519e7f1c] {
30298
+ .cn-record-list__label[data-v-b2ef255e] {
29925
30299
  margin-inline-end: 4px;
29926
30300
  }
29927
- .cn-record-list__inline-title[data-v-519e7f1c] {
30301
+ .cn-record-list__inline-title[data-v-b2ef255e] {
29928
30302
  color: var(--color-main-text);
29929
30303
  }
29930
- a.cn-record-list__inline-title[data-v-519e7f1c] {
30304
+ a.cn-record-list__inline-title[data-v-b2ef255e] {
29931
30305
  color: var(--color-primary-element);
29932
30306
  text-decoration: underline;
29933
30307
  }
@@ -30247,6 +30621,7 @@ a.cn-record-list__inline-title[data-v-519e7f1c] {
30247
30621
  }
30248
30622
 
30249
30623
  .cn-form-widget__textarea {
30624
+ box-sizing: border-box;
30250
30625
  width: 100%;
30251
30626
  min-height: 80px;
30252
30627
  padding: 8px;
@@ -30269,6 +30644,16 @@ a.cn-record-list__inline-title[data-v-519e7f1c] {
30269
30644
  margin: 0;
30270
30645
  }
30271
30646
 
30647
+ /* A select takes its field's width, however narrow the card. NcSelect is at
30648
+ least 260px wide on its own, so in pipelinq's 234px "Nieuw contactmoment"
30649
+ card at 1100 wide the channel and client selects ran 40px past the card's
30650
+ edge. The client picker (CnResourceSelect) is an NcSelect too.
30651
+ @spec openspec/changes/interaction-form-fits-and-reads-dutch/specs/interaction-form-widget/spec.md#requirement-the-interaction-form-fits-its-card-and-reads-in-the-readers-language */
30652
+ .cn-form-widget .v-select.select {
30653
+ min-width: 0;
30654
+ width: 100%;
30655
+ }
30656
+
30272
30657
 
30273
30658
  .cn-banner-form[data-v-0c839173] {
30274
30659
  display: flex;
@@ -30863,40 +31248,40 @@ a.cn-record-list__inline-title[data-v-519e7f1c] {
30863
31248
  }
30864
31249
 
30865
31250
 
30866
- .cn-version-info__card[data-v-7a828af4] {
31251
+ .cn-version-info__card[data-v-17db98e4] {
30867
31252
  background: var(--color-background-hover);
30868
31253
  border: 1px solid var(--color-border);
30869
31254
  border-radius: var(--border-radius-large);
30870
31255
  padding: 20px;
30871
31256
  margin-bottom: 20px;
30872
31257
  }
30873
- .cn-version-info__card h4[data-v-7a828af4] {
31258
+ .cn-version-info__card h4[data-v-17db98e4] {
30874
31259
  margin: 0 0 16px 0;
30875
31260
  font-size: 16px;
30876
31261
  font-weight: 600;
30877
31262
  color: var(--color-main-text);
30878
31263
  }
30879
- .cn-version-info__details[data-v-7a828af4] {
31264
+ .cn-version-info__details[data-v-17db98e4] {
30880
31265
  display: flex;
30881
31266
  flex-direction: column;
30882
31267
  gap: 12px;
30883
31268
  }
30884
- .cn-version-info__item[data-v-7a828af4] {
31269
+ .cn-version-info__item[data-v-17db98e4] {
30885
31270
  display: flex;
30886
31271
  justify-content: space-between;
30887
31272
  align-items: center;
30888
31273
  padding: 8px 0;
30889
31274
  border-bottom: 1px solid var(--color-border);
30890
31275
  }
30891
- .cn-version-info__item[data-v-7a828af4]:last-child {
31276
+ .cn-version-info__item[data-v-17db98e4]:last-child {
30892
31277
  border-bottom: none;
30893
31278
  }
30894
- .cn-version-info__label[data-v-7a828af4] {
31279
+ .cn-version-info__label[data-v-17db98e4] {
30895
31280
  font-weight: 500;
30896
31281
  color: var(--color-text-maxcontrast);
30897
31282
  font-size: 14px;
30898
31283
  }
30899
- .cn-version-info__value[data-v-7a828af4] {
31284
+ .cn-version-info__value[data-v-17db98e4] {
30900
31285
  font-family: 'Courier New', Courier, monospace;
30901
31286
  font-weight: 600;
30902
31287
  color: var(--color-main-text);
@@ -30904,28 +31289,28 @@ a.cn-record-list__inline-title[data-v-519e7f1c] {
30904
31289
  }
30905
31290
 
30906
31291
  /* Status classes for values */
30907
- .cn-version-info__status--ok[data-v-7a828af4] {
31292
+ .cn-version-info__status--ok[data-v-17db98e4] {
30908
31293
  color: var(--color-success);
30909
31294
  font-weight: 600;
30910
31295
  }
30911
- .cn-version-info__status--warning[data-v-7a828af4] {
31296
+ .cn-version-info__status--warning[data-v-17db98e4] {
30912
31297
  color: var(--color-warning);
30913
31298
  font-weight: 600;
30914
31299
  }
30915
- .cn-version-info__status--error[data-v-7a828af4] {
31300
+ .cn-version-info__status--error[data-v-17db98e4] {
30916
31301
  color: var(--color-error);
30917
31302
  font-weight: 600;
30918
31303
  }
30919
31304
  @media (max-width: 768px) {
30920
- .cn-version-info__item[data-v-7a828af4] {
31305
+ .cn-version-info__item[data-v-17db98e4] {
30921
31306
  flex-direction: column;
30922
31307
  align-items: flex-start;
30923
31308
  gap: 4px;
30924
31309
  }
30925
- .cn-version-info__label[data-v-7a828af4] {
31310
+ .cn-version-info__label[data-v-17db98e4] {
30926
31311
  font-weight: 600;
30927
31312
  }
30928
- .cn-version-info__value[data-v-7a828af4] {
31313
+ .cn-version-info__value[data-v-17db98e4] {
30929
31314
  word-break: break-all;
30930
31315
  }
30931
31316
  }
@@ -34193,28 +34578,28 @@ to {
34193
34578
  }
34194
34579
 
34195
34580
 
34196
- .cn-admin-settings-shell[data-v-2f22ff08] {
34581
+ .cn-admin-settings-shell[data-v-3672ca0b] {
34197
34582
  max-width: 900px;
34198
34583
  }
34199
34584
 
34200
34585
  /* The board look lifts the width and lays the header and cards on a grid (look-board.css). */
34201
- .cn-support-info[data-v-2f22ff08] {
34586
+ .cn-support-info[data-v-3672ca0b] {
34202
34587
  margin-top: 16px;
34203
34588
  padding-top: 16px;
34204
34589
  border-top: 1px solid var(--color-border);
34205
34590
  }
34206
- .cn-support-info h4[data-v-2f22ff08] {
34591
+ .cn-support-info h4[data-v-3672ca0b] {
34207
34592
  margin: 0 0 8px 0;
34208
34593
  font-size: 14px;
34209
34594
  font-weight: 600;
34210
34595
  color: var(--color-main-text);
34211
34596
  }
34212
- .cn-support-info p[data-v-2f22ff08] {
34597
+ .cn-support-info p[data-v-3672ca0b] {
34213
34598
  margin: 4px 0;
34214
34599
  color: var(--color-text-maxcontrast);
34215
34600
  font-size: 14px;
34216
34601
  }
34217
- .cn-support-info a[data-v-2f22ff08] {
34602
+ .cn-support-info a[data-v-3672ca0b] {
34218
34603
  color: var(--color-primary-element);
34219
34604
  }
34220
34605
 
@@ -34316,19 +34701,24 @@ to {
34316
34701
  gap: 8px;
34317
34702
  }
34318
34703
 
34319
- .cn-board-view.cn-board-view--board .cn-board-view__card-title {
34704
+ /* The title is a link drawn as a heading (board DqWerkbord): main text, no
34705
+ underline. `!important` because a theme's `a { color; text-decoration }`
34706
+ carries it (thematiq), and a bare `a` with `!important` beats any class. */
34707
+ .cn-board-view.cn-board-view--board .cn-board-view__card-title,
34708
+ .cn-board-view.cn-board-view--board .cn-board-view__card-title:visited {
34320
34709
  flex: 1 1 auto;
34321
34710
  min-width: 0;
34322
34711
  font-size: 15px;
34323
34712
  font-weight: 700;
34324
34713
  line-height: 1.3;
34325
- color: var(--color-main-text);
34326
- text-decoration: none;
34714
+ color: var(--color-main-text) !important;
34715
+ text-decoration: none !important;
34327
34716
  overflow-wrap: anywhere;
34328
34717
  }
34329
34718
 
34330
34719
  .cn-board-view.cn-board-view--board .cn-board-view__card-title:hover {
34331
- text-decoration: underline;
34720
+ color: var(--color-main-text) !important;
34721
+ text-decoration: underline !important;
34332
34722
  }
34333
34723
 
34334
34724
  .cn-board-view.cn-board-view--board .cn-board-view__card-title:focus-visible {
@@ -34488,21 +34878,77 @@ to {
34488
34878
  outline-offset: 2px;
34489
34879
  }
34490
34880
 
34491
- .cn-board-view__columns[data-v-0dd966c7] {
34881
+ /*
34882
+ * screens-board-reference-columns: a wide board wraps its columns onto more
34883
+ * rows (`config.board.wrap`), as many to a row as fit at 240px, instead of
34884
+ * one row that scrolls sideways.
34885
+ */
34886
+ .cn-board-view.cn-board-view--wrap .cn-board-view__columns {
34887
+ display: grid;
34888
+ grid-auto-flow: row;
34889
+ grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
34890
+ overflow-x: visible;
34891
+ }
34892
+
34893
+ .cn-board-view.cn-board-view--wrap:not(.cn-board-view--board) .cn-board-view__columns {
34894
+ gap: 12px;
34895
+ }
34896
+
34897
+ /* A column the dragged card cannot reach fades; the label stays readable. */
34898
+ .cn-board-view .cn-board-view__column--unreachable {
34899
+ opacity: 0.45;
34900
+ }
34901
+
34902
+ /* The selection checkbox: in the board look's card head, before the title. */
34903
+ .cn-board-view .cn-board-view__select {
34904
+ flex: none;
34905
+ width: 16px;
34906
+ height: 16px;
34907
+ margin: 2px 0 0;
34908
+ accent-color: var(--color-primary-element);
34909
+ cursor: pointer;
34910
+ }
34911
+
34912
+ /* Board look: the board draws no checkbox. It shows on a hovered card, on a
34913
+ card holding focus (so Tab still reaches it), once anything is selected, and
34914
+ always where there is no hover. Collapsed rather than hidden, so it stays in
34915
+ the tab order. */
34916
+ @media (hover: hover) {
34917
+ .cn-board-view.cn-board-view--board:not(.cn-board-view--selecting) .cn-board-view__card:not(:hover, :focus-within) .cn-board-view__select {
34918
+ width: 0;
34919
+ margin-inline-end: -8px;
34920
+ opacity: 0;
34921
+ }
34922
+ }
34923
+
34924
+ /* A menu target the card cannot reach: still listed, greyed, with its note. */
34925
+ .cn-board-view.cn-board-view--board .cn-board-view__menu-item.cn-board-view__menu-item--blocked {
34926
+ color: var(--color-text-maxcontrast);
34927
+ cursor: not-allowed;
34928
+ }
34929
+
34930
+ .cn-board-view .cn-board-view__menu-note {
34931
+ margin-inline-start: auto;
34932
+ padding-inline-start: 12px;
34933
+ font-size: 12px;
34934
+ color: var(--color-text-maxcontrast);
34935
+ }
34936
+
34937
+ .cn-board-view__columns[data-v-181b36b2] {
34492
34938
  display: flex;
34493
34939
  gap: 12px;
34494
34940
  overflow-x: auto;
34495
34941
  align-items: flex-start;
34496
34942
  }
34497
34943
 
34498
- .cn-board-view__column[data-v-0dd966c7] {
34944
+ .cn-board-view__column[data-v-181b36b2] {
34499
34945
  flex: 0 0 260px;
34500
34946
  background-color: var(--color-background-hover);
34501
34947
  border-radius: var(--border-radius-large);
34502
34948
  padding: 8px;
34503
34949
  }
34504
34950
 
34505
- .cn-board-view__column-header[data-v-0dd966c7] {
34951
+ .cn-board-view__column-header[data-v-181b36b2] {
34506
34952
  display: flex;
34507
34953
  justify-content: space-between;
34508
34954
  gap: 8px;
@@ -34510,13 +34956,13 @@ to {
34510
34956
  margin: 0 0 8px;
34511
34957
  }
34512
34958
 
34513
- .cn-board-view__count[data-v-0dd966c7],
34514
- .cn-board-view__empty[data-v-0dd966c7],
34515
- .cn-board-view__unusable[data-v-0dd966c7] {
34959
+ .cn-board-view__count[data-v-181b36b2],
34960
+ .cn-board-view__empty[data-v-181b36b2],
34961
+ .cn-board-view__unusable[data-v-181b36b2] {
34516
34962
  color: var(--color-text-maxcontrast);
34517
34963
  }
34518
34964
 
34519
- .cn-board-view__card[data-v-0dd966c7] {
34965
+ .cn-board-view__card[data-v-181b36b2] {
34520
34966
  display: block;
34521
34967
  background-color: var(--color-main-background);
34522
34968
  border: 1px solid var(--color-border);
@@ -34525,29 +34971,29 @@ to {
34525
34971
  margin-bottom: 8px;
34526
34972
  }
34527
34973
 
34528
- .cn-board-view__card-field[data-v-0dd966c7] {
34974
+ .cn-board-view__card-field[data-v-181b36b2] {
34529
34975
  display: block;
34530
34976
  }
34531
34977
 
34532
34978
  /* A late card: an edge in the error colour, drawn as an inset shadow so the
34533
34979
  card keeps its size and its rounded corners. The label below carries the
34534
34980
  meaning; the edge only helps a sighted reader find it. */
34535
- .cn-board-view__card--overdue[data-v-0dd966c7] {
34981
+ .cn-board-view__card--overdue[data-v-181b36b2] {
34536
34982
  border-color: var(--color-error);
34537
34983
  box-shadow: inset 3px 0 0 var(--color-error);
34538
34984
  }
34539
34985
 
34540
- .cn-board-view__due[data-v-0dd966c7] {
34986
+ .cn-board-view__due[data-v-181b36b2] {
34541
34987
  display: block;
34542
34988
  font-size: 0.85em;
34543
34989
  font-weight: 700;
34544
34990
  }
34545
34991
 
34546
- .cn-board-view__due--overdue[data-v-0dd966c7] {
34992
+ .cn-board-view__due--overdue[data-v-181b36b2] {
34547
34993
  color: var(--color-error-text, var(--color-error));
34548
34994
  }
34549
34995
 
34550
- .cn-board-view__due--soon[data-v-0dd966c7] {
34996
+ .cn-board-view__due--soon[data-v-181b36b2] {
34551
34997
  color: var(--color-warning-text, var(--color-main-text));
34552
34998
  font-weight: 600;
34553
34999
  }
@@ -34556,7 +35002,7 @@ to {
34556
35002
  * The card's opening control. The cursor and the focus ring live here now,
34557
35003
  * on the thing that actually does something, rather than on the box.
34558
35004
  */
34559
- .cn-board-view__card-open[data-v-0dd966c7] {
35005
+ .cn-board-view__card-open[data-v-181b36b2] {
34560
35006
  background: none;
34561
35007
  border: none;
34562
35008
  padding: 0;
@@ -34565,12 +35011,12 @@ to {
34565
35011
  font-size: 0.8rem;
34566
35012
  }
34567
35013
 
34568
- .cn-board-view__card-open[data-v-0dd966c7]:focus-visible {
35014
+ .cn-board-view__card-open[data-v-181b36b2]:focus-visible {
34569
35015
  outline: 2px solid var(--color-primary-element);
34570
35016
  outline-offset: 2px;
34571
35017
  }
34572
35018
 
34573
- .cn-board-view__lane-header[data-v-0dd966c7] {
35019
+ .cn-board-view__lane-header[data-v-181b36b2] {
34574
35020
  background: none;
34575
35021
  border: none;
34576
35022
  font-weight: bold;
@@ -34579,12 +35025,12 @@ to {
34579
35025
  color: var(--color-main-text);
34580
35026
  }
34581
35027
 
34582
- .cn-board-view__move-label[data-v-0dd966c7] {
35028
+ .cn-board-view__move-label[data-v-181b36b2] {
34583
35029
  color: var(--color-text-maxcontrast);
34584
35030
  font-size: 0.8rem;
34585
35031
  }
34586
35032
 
34587
- .cn-board-view__refusal[data-v-0dd966c7] {
35033
+ .cn-board-view__refusal[data-v-181b36b2] {
34588
35034
  color: var(--color-error);
34589
35035
  }
34590
35036
 
@@ -35371,6 +35817,16 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
35371
35817
  }
35372
35818
 
35373
35819
 
35820
+ .cn-run-node-dialog__form[data-v-2d7cb7f5] {
35821
+ display: flex;
35822
+ flex-direction: column;
35823
+ gap: 12px;
35824
+ }
35825
+ .cn-run-node-dialog__hint[data-v-2d7cb7f5] {
35826
+ color: var(--color-text-maxcontrast);
35827
+ }
35828
+
35829
+
35374
35830
  .cn-advanced-form-dialog__json-editor[data-v-3cca5b13] {
35375
35831
  display: flex;
35376
35832
  flex-direction: column;
@@ -35967,6 +36423,21 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
35967
36423
  }
35968
36424
 
35969
36425
 
36426
+ .cn-action-buttons[data-v-49607313] {
36427
+ display: inline-flex;
36428
+ align-items: center;
36429
+ gap: 8px;
36430
+ flex-wrap: wrap;
36431
+ }
36432
+
36433
+ /* In menu mode the only children are dialogs, so the wrapper must not be a
36434
+ box: an empty inline-flex child still eats one of the header's flex gaps
36435
+ and pushes the Actions menu away from the Edit button beside it. */
36436
+ .cn-action-buttons--menu[data-v-49607313] {
36437
+ display: contents;
36438
+ }
36439
+
36440
+
35970
36441
  .cn-copy__pattern[data-v-18a59770] {
35971
36442
  margin-bottom: 16px;
35972
36443
  }
@@ -36684,24 +37155,24 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
36684
37155
  }
36685
37156
 
36686
37157
 
36687
- .cn-walkthrough[data-v-165ee49b] {
37158
+ .cn-walkthrough[data-v-34991bbf] {
36688
37159
  position: fixed;
36689
37160
  inset: 0;
36690
37161
  pointer-events: none;
36691
37162
  }
36692
- .cn-walkthrough__live[data-v-165ee49b] {
37163
+ .cn-walkthrough__live[data-v-34991bbf] {
36693
37164
  position: absolute;
36694
37165
  width: 1px;
36695
37166
  height: 1px;
36696
37167
  overflow: hidden;
36697
37168
  clip-path: inset(50%);
36698
37169
  }
36699
- .cn-walkthrough__dim[data-v-165ee49b] {
37170
+ .cn-walkthrough__dim[data-v-34991bbf] {
36700
37171
  position: fixed;
36701
37172
  background: var(--color-modal-background, rgba(0, 0, 0, 0.5));
36702
37173
  pointer-events: auto;
36703
37174
  }
36704
- .cn-walkthrough__dim--full[data-v-165ee49b] {
37175
+ .cn-walkthrough__dim--full[data-v-34991bbf] {
36705
37176
  inset: 0;
36706
37177
  }
36707
37178
 
@@ -36710,16 +37181,16 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
36710
37181
  underneath (see the template comment). */
36711
37182
  /* Lets the step's own task through — and therefore cannot be clicked to
36712
37183
  dismiss; ESC, the close button and Back/Finish remain (see the template). */
36713
- .cn-walkthrough__dim--passthrough[data-v-165ee49b] {
37184
+ .cn-walkthrough__dim--passthrough[data-v-34991bbf] {
36714
37185
  pointer-events: none;
36715
37186
  }
36716
- .cn-walkthrough__ring[data-v-165ee49b] {
37187
+ .cn-walkthrough__ring[data-v-34991bbf] {
36717
37188
  position: fixed;
36718
37189
  border-radius: var(--border-radius-large, 8px);
36719
37190
  box-shadow: 0 0 0 2px var(--color-primary-element, #0082c9);
36720
37191
  pointer-events: none;
36721
37192
  }
36722
- .cn-walkthrough__card[data-v-165ee49b] {
37193
+ .cn-walkthrough__card[data-v-34991bbf] {
36723
37194
  position: fixed;
36724
37195
  width: 320px;
36725
37196
  max-width: calc(100vw - 24px);
@@ -36730,11 +37201,11 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
36730
37201
  padding: 16px;
36731
37202
  pointer-events: auto;
36732
37203
  }
36733
- .cn-walkthrough__card--docked[data-v-165ee49b] {
37204
+ .cn-walkthrough__card--docked[data-v-34991bbf] {
36734
37205
  inset-block-end: 16px;
36735
37206
  inset-inline-start: 16px;
36736
37207
  }
36737
- .cn-walkthrough__close[data-v-165ee49b] {
37208
+ .cn-walkthrough__close[data-v-34991bbf] {
36738
37209
  /* !important beats NcButton's own `position: relative`, which would otherwise
36739
37210
  leave the close button in-flow at the card's top-left. */
36740
37211
  position: absolute !important;
@@ -36743,37 +37214,37 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
36743
37214
  inset-inline-start: auto;
36744
37215
  z-index: 1;
36745
37216
  }
36746
- .cn-walkthrough__counter[data-v-165ee49b] {
37217
+ .cn-walkthrough__counter[data-v-34991bbf] {
36747
37218
  font-size: 0.8125rem;
36748
37219
  color: var(--color-text-maxcontrast);
36749
37220
  margin-bottom: 4px;
36750
37221
  /* Keep the counter/title clear of the absolutely-positioned close button. */
36751
37222
  padding-inline-end: 32px;
36752
37223
  }
36753
- .cn-walkthrough__title[data-v-165ee49b] {
37224
+ .cn-walkthrough__title[data-v-34991bbf] {
36754
37225
  margin: 0 0 6px;
36755
37226
  font-size: 1.1rem;
36756
37227
  }
36757
- .cn-walkthrough__body[data-v-165ee49b] {
37228
+ .cn-walkthrough__body[data-v-34991bbf] {
36758
37229
  margin: 0 0 8px;
36759
37230
  }
36760
- .cn-walkthrough__task[data-v-165ee49b] {
37231
+ .cn-walkthrough__task[data-v-34991bbf] {
36761
37232
  margin: 0 0 8px;
36762
37233
  padding: 8px;
36763
37234
  background: var(--color-primary-element-light, var(--color-background-hover));
36764
37235
  border-radius: var(--border-radius, 4px);
36765
37236
  font-weight: 600;
36766
37237
  }
36767
- .cn-walkthrough__task-icon[data-v-165ee49b] {
37238
+ .cn-walkthrough__task-icon[data-v-34991bbf] {
36768
37239
  margin-inline-end: 4px;
36769
37240
  }
36770
- .cn-walkthrough__actions[data-v-165ee49b] {
37241
+ .cn-walkthrough__actions[data-v-34991bbf] {
36771
37242
  display: flex;
36772
37243
  align-items: center;
36773
37244
  gap: 8px;
36774
37245
  margin-top: 8px;
36775
37246
  }
36776
- .cn-walkthrough__spacer[data-v-165ee49b] {
37247
+ .cn-walkthrough__spacer[data-v-34991bbf] {
36777
37248
  flex: 1 1 auto;
36778
37249
  }
36779
37250
 
@@ -36910,55 +37381,88 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
36910
37381
  }
36911
37382
 
36912
37383
 
36913
- .cn-register-mapping__group[data-v-0abd37fe] {
37384
+ .cn-register-mapping__group[data-v-8d3cad98] {
36914
37385
  margin-bottom: 24px;
36915
37386
  border: 1px solid var(--color-border);
36916
37387
  border-radius: var(--border-radius-large);
36917
37388
  padding: 20px;
36918
37389
  background: var(--color-background-hover);
36919
37390
  }
36920
- .cn-register-mapping__group[data-v-0abd37fe]:last-child {
37391
+ .cn-register-mapping__group[data-v-8d3cad98]:last-child {
36921
37392
  margin-bottom: 0;
36922
37393
  }
36923
- .cn-register-mapping__group-header[data-v-0abd37fe] {
37394
+ .cn-register-mapping__group-header[data-v-8d3cad98] {
36924
37395
  display: flex;
36925
37396
  align-items: center;
36926
37397
  justify-content: space-between;
36927
37398
  margin-bottom: 12px;
36928
37399
  }
36929
- .cn-register-mapping__group-title[data-v-0abd37fe] {
37400
+ .cn-register-mapping__group-heading[data-v-8d3cad98] {
37401
+ margin: 0 0 12px;
37402
+ font: inherit;
37403
+ }
37404
+ .cn-register-mapping__group--collapsed .cn-register-mapping__group-heading[data-v-8d3cad98] {
37405
+ margin-bottom: 0;
37406
+ }
37407
+ .cn-register-mapping__group-toggle[data-v-8d3cad98] {
37408
+ box-sizing: border-box;
37409
+ display: flex;
37410
+ align-items: center;
37411
+ gap: 8px;
37412
+ width: 100%;
37413
+ min-height: 44px;
37414
+ margin: 0;
37415
+ padding: 0;
37416
+ border: 0;
37417
+ background: transparent;
37418
+ color: inherit;
37419
+ font: inherit;
37420
+ text-align: start;
37421
+ cursor: pointer;
37422
+ }
37423
+ .cn-register-mapping__group-toggle[data-v-8d3cad98]:focus-visible {
37424
+ outline: 2px solid var(--color-primary-element);
37425
+ outline-offset: 2px;
37426
+ border-radius: var(--border-radius);
37427
+ }
37428
+ .cn-register-mapping__group-chevron[data-v-8d3cad98] {
37429
+ display: inline-flex;
37430
+ flex: none;
37431
+ color: var(--color-text-maxcontrast);
37432
+ }
37433
+ .cn-register-mapping__group-toggle .cn-register-mapping__group-header[data-v-8d3cad98] {
37434
+ flex: 1 1 auto;
37435
+ flex-wrap: wrap;
37436
+ gap: 4px 12px;
37437
+ min-width: 0;
37438
+ margin-bottom: 0;
37439
+ }
37440
+ .cn-register-mapping__group-title[data-v-8d3cad98] {
36930
37441
  font-size: 16px;
36931
37442
  font-weight: 600;
36932
37443
  margin: 0;
36933
37444
  color: var(--color-main-text);
36934
37445
  }
36935
- .cn-register-mapping__group-status[data-v-0abd37fe] {
37446
+ .cn-register-mapping__group-status[data-v-8d3cad98] {
36936
37447
  font-size: 13px;
36937
37448
  color: var(--color-text-maxcontrast);
36938
37449
  }
36939
- .cn-register-mapping__group-description[data-v-0abd37fe] {
37450
+ .cn-register-mapping__group-description[data-v-8d3cad98] {
36940
37451
  color: var(--color-text-maxcontrast);
36941
37452
  font-size: 13px;
36942
37453
  margin: 0 0 12px 0;
36943
37454
  }
36944
- .cn-register-mapping__label[data-v-0abd37fe] {
36945
- display: block;
36946
- font-weight: 500;
36947
- font-size: 13px;
36948
- color: var(--color-text-maxcontrast);
36949
- margin-bottom: 4px;
36950
- }
36951
- .cn-register-mapping__register-select[data-v-0abd37fe] {
37455
+ .cn-register-mapping__register-select[data-v-8d3cad98] {
36952
37456
  margin-bottom: 16px;
36953
37457
  max-width: 400px;
36954
37458
  }
36955
- .cn-register-mapping__type-list[data-v-0abd37fe] {
37459
+ .cn-register-mapping__type-list[data-v-8d3cad98] {
36956
37460
  border: 1px solid var(--color-border);
36957
37461
  border-radius: var(--border-radius);
36958
37462
  overflow: hidden;
36959
37463
  background: var(--color-main-background);
36960
37464
  }
36961
- .cn-register-mapping__type-list-header[data-v-0abd37fe] {
37465
+ .cn-register-mapping__type-list-header[data-v-8d3cad98] {
36962
37466
  display: grid;
36963
37467
  grid-template-columns: 1fr 1fr 40px 32px;
36964
37468
  align-items: center;
@@ -36971,7 +37475,7 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
36971
37475
  border-bottom: 1px solid var(--color-border);
36972
37476
  background: var(--color-background-hover);
36973
37477
  }
36974
- .cn-register-mapping__type-row[data-v-0abd37fe] {
37478
+ .cn-register-mapping__type-row[data-v-8d3cad98] {
36975
37479
  display: grid;
36976
37480
  grid-template-columns: 1fr 1fr 40px 32px;
36977
37481
  align-items: center;
@@ -36980,61 +37484,61 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
36980
37484
  cursor: pointer;
36981
37485
  transition: background-color 0.15s ease;
36982
37486
  }
36983
- .cn-register-mapping__type-row[data-v-0abd37fe]:hover {
37487
+ .cn-register-mapping__type-row[data-v-8d3cad98]:hover {
36984
37488
  background: var(--color-background-hover);
36985
37489
  }
36986
- .cn-register-mapping__type-row--expanded[data-v-0abd37fe] {
37490
+ .cn-register-mapping__type-row--expanded[data-v-8d3cad98] {
36987
37491
  background: var(--color-background-hover);
36988
37492
  }
36989
- .cn-register-mapping__type-name[data-v-0abd37fe] {
37493
+ .cn-register-mapping__type-name[data-v-8d3cad98] {
36990
37494
  font-weight: 500;
36991
37495
  color: var(--color-main-text);
36992
37496
  }
36993
- .cn-register-mapping__type-schema[data-v-0abd37fe] {
37497
+ .cn-register-mapping__type-schema[data-v-8d3cad98] {
36994
37498
  color: var(--color-text-maxcontrast);
36995
37499
  font-size: 13px;
36996
37500
  }
36997
- .cn-register-mapping__type-status[data-v-0abd37fe] {
37501
+ .cn-register-mapping__type-status[data-v-8d3cad98] {
36998
37502
  display: flex;
36999
37503
  justify-content: center;
37000
37504
  }
37001
- .cn-register-mapping__type-chevron[data-v-0abd37fe] {
37505
+ .cn-register-mapping__type-chevron[data-v-8d3cad98] {
37002
37506
  display: flex;
37003
37507
  justify-content: center;
37004
37508
  color: var(--color-text-maxcontrast);
37005
37509
  }
37006
- .cn-register-mapping__status-dot[data-v-0abd37fe] {
37510
+ .cn-register-mapping__status-dot[data-v-8d3cad98] {
37007
37511
  display: inline-block;
37008
37512
  width: 10px;
37009
37513
  height: 10px;
37010
37514
  border-radius: 50%;
37011
37515
  }
37012
- .cn-register-mapping__status-dot--configured[data-v-0abd37fe] {
37516
+ .cn-register-mapping__status-dot--configured[data-v-8d3cad98] {
37013
37517
  background-color: var(--color-success);
37014
37518
  }
37015
- .cn-register-mapping__status-dot--unconfigured[data-v-0abd37fe] {
37519
+ .cn-register-mapping__status-dot--unconfigured[data-v-8d3cad98] {
37016
37520
  background-color: var(--color-warning);
37017
37521
  }
37018
- .cn-register-mapping__type-detail[data-v-0abd37fe] {
37522
+ .cn-register-mapping__type-detail[data-v-8d3cad98] {
37019
37523
  padding: 12px 16px 16px;
37020
37524
  border-bottom: 1px solid var(--color-border);
37021
37525
  background: var(--color-main-background);
37022
37526
  }
37023
- .cn-register-mapping__type-description[data-v-0abd37fe] {
37527
+ .cn-register-mapping__type-description[data-v-8d3cad98] {
37024
37528
  color: var(--color-text-maxcontrast);
37025
37529
  font-size: 13px;
37026
37530
  margin: 0 0 8px 0;
37027
37531
  }
37028
37532
 
37029
37533
  /* Slide transition */
37030
- .slide-enter-active[data-v-0abd37fe],
37031
- .slide-leave-active[data-v-0abd37fe] {
37534
+ .slide-enter-active[data-v-8d3cad98],
37535
+ .slide-leave-active[data-v-8d3cad98] {
37032
37536
  transition: all 0.2s ease;
37033
37537
  max-height: 200px;
37034
37538
  overflow: hidden;
37035
37539
  }
37036
- .slide-enter[data-v-0abd37fe],
37037
- .slide-leave-to[data-v-0abd37fe] {
37540
+ .slide-enter[data-v-8d3cad98],
37541
+ .slide-leave-to[data-v-8d3cad98] {
37038
37542
  max-height: 0;
37039
37543
  padding-top: 0;
37040
37544
  padding-bottom: 0;
@@ -37042,20 +37546,20 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37042
37546
  }
37043
37547
 
37044
37548
  /* Last row in list should not have bottom border */
37045
- .cn-register-mapping__type-list[data-v-0abd37fe] > :last-child {
37549
+ .cn-register-mapping__type-list[data-v-8d3cad98] > :last-child {
37046
37550
  border-bottom: none;
37047
37551
  }
37048
37552
  @media (max-width: 768px) {
37049
- .cn-register-mapping__type-list-header[data-v-0abd37fe] {
37553
+ .cn-register-mapping__type-list-header[data-v-8d3cad98] {
37050
37554
  display: none;
37051
37555
  }
37052
- .cn-register-mapping__type-row[data-v-0abd37fe] {
37556
+ .cn-register-mapping__type-row[data-v-8d3cad98] {
37053
37557
  grid-template-columns: 1fr auto 32px;
37054
37558
  }
37055
- .cn-register-mapping__type-schema[data-v-0abd37fe] {
37559
+ .cn-register-mapping__type-schema[data-v-8d3cad98] {
37056
37560
  display: none;
37057
37561
  }
37058
- .cn-register-mapping__register-select[data-v-0abd37fe] {
37562
+ .cn-register-mapping__register-select[data-v-8d3cad98] {
37059
37563
  max-width: none;
37060
37564
  }
37061
37565
  }
@@ -37258,31 +37762,6 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37258
37762
  }
37259
37763
 
37260
37764
 
37261
- .cn-run-node-dialog__form[data-v-2d7cb7f5] {
37262
- display: flex;
37263
- flex-direction: column;
37264
- gap: 12px;
37265
- }
37266
- .cn-run-node-dialog__hint[data-v-2d7cb7f5] {
37267
- color: var(--color-text-maxcontrast);
37268
- }
37269
-
37270
-
37271
- .cn-action-buttons[data-v-49607313] {
37272
- display: inline-flex;
37273
- align-items: center;
37274
- gap: 8px;
37275
- flex-wrap: wrap;
37276
- }
37277
-
37278
- /* In menu mode the only children are dialogs, so the wrapper must not be a
37279
- box: an empty inline-flex child still eats one of the header's flex gaps
37280
- and pushes the Actions menu away from the Edit button beside it. */
37281
- .cn-action-buttons--menu[data-v-49607313] {
37282
- display: contents;
37283
- }
37284
-
37285
-
37286
37765
  .cn-relation-link[data-v-6559b00a] {
37287
37766
  padding: 20px;
37288
37767
  display: flex;
@@ -37355,41 +37834,41 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37355
37834
  }
37356
37835
 
37357
37836
 
37358
- .cn-body-sections[data-v-19a0caa4] {
37837
+ .cn-body-sections[data-v-44324dca] {
37359
37838
  display: flex;
37360
37839
  flex-direction: column;
37361
37840
  gap: 16px;
37362
37841
  width: 100%;
37363
37842
  }
37364
- .cn-body-sections--grid[data-v-19a0caa4] {
37843
+ .cn-body-sections--grid[data-v-44324dca] {
37365
37844
  display: grid;
37366
37845
  grid-template-columns: repeat(12, 1fr);
37367
37846
  gap: 16px;
37368
37847
  }
37369
- .cn-body-sections__section[data-v-19a0caa4] {
37848
+ .cn-body-sections__section[data-v-44324dca] {
37370
37849
  min-width: 0;
37371
37850
  }
37372
37851
 
37373
37852
  /* Same card as the grid's widgets, so a section reads as one of them. */
37374
- .cn-body-sections__section--card[data-v-19a0caa4] {
37853
+ .cn-body-sections__section--card[data-v-44324dca] {
37375
37854
  padding: 12px 16px 16px;
37376
37855
  background: var(--color-main-background);
37377
37856
  border: 1px solid var(--color-border);
37378
37857
  border-radius: var(--border-radius-large, 8px);
37379
37858
  }
37380
- .cn-body-sections__section--card > .cn-body-sections__title[data-v-19a0caa4] {
37859
+ .cn-body-sections__section--card > .cn-body-sections__title[data-v-44324dca] {
37381
37860
  margin: 0 -16px 12px;
37382
37861
  padding: 0 16px 12px;
37383
37862
  font-size: 14px;
37384
37863
  border-bottom: 1px solid var(--color-border);
37385
37864
  }
37386
- .cn-body-sections__title[data-v-19a0caa4] {
37865
+ .cn-body-sections__title[data-v-44324dca] {
37387
37866
  margin: 0 0 8px;
37388
37867
  font-size: 16px;
37389
37868
  font-weight: 600;
37390
37869
  color: var(--color-main-text);
37391
37870
  }
37392
- .cn-body-sections__error[data-v-19a0caa4] {
37871
+ .cn-body-sections__error[data-v-44324dca] {
37393
37872
  padding: 12px 16px;
37394
37873
  border: 1px solid var(--color-border);
37395
37874
  border-radius: var(--border-radius-large, 12px);
@@ -37399,17 +37878,17 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37399
37878
  }
37400
37879
 
37401
37880
 
37402
- .cn-dashboard-grid[data-v-29653a76] {
37881
+ .cn-dashboard-grid[data-v-a91998fc] {
37403
37882
  width: 100%;
37404
37883
  min-height: 200px;
37405
37884
  }
37406
- .grid-stack[data-v-29653a76] {
37885
+ .grid-stack[data-v-a91998fc] {
37407
37886
  background: transparent;
37408
37887
  }
37409
37888
 
37410
37889
  /* Screen-reader-only text: the keyboard key map and the live region. Kept in
37411
37890
  the layout (not `display: none`) so assistive tech still reads it. */
37412
- .cn-dashboard-grid__sr-only[data-v-29653a76] {
37891
+ .cn-dashboard-grid__sr-only[data-v-a91998fc] {
37413
37892
  position: absolute;
37414
37893
  width: 1px;
37415
37894
  height: 1px;
@@ -37424,7 +37903,7 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37424
37903
  /* Grid items become tab stops in edit mode — give them a visible focus ring
37425
37904
  that satisfies WCAG 2.1 SC 2.4.7 without relying on the widget's own
37426
37905
  styling. `outline-offset` keeps the ring outside the rounded card. */
37427
- .grid-stack-item[data-v-29653a76]:focus-visible {
37906
+ .grid-stack-item[data-v-a91998fc]:focus-visible {
37428
37907
  outline: 2px solid var(--color-primary-element, #0082c9);
37429
37908
  outline-offset: 2px;
37430
37909
  border-radius: var(--border-radius-container-large, 16px);
@@ -37436,19 +37915,19 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37436
37915
  cell never shrank: "Waiting for me" stayed a tall card around one row. In
37437
37916
  such a cell the child takes its own height. A cell without the key keeps
37438
37917
  the filling child. */
37439
- .cn-dashboard-grid__item--fit[data-v-29653a76] > .grid-stack-item-content > * {
37918
+ .cn-dashboard-grid__item--fit[data-v-a91998fc] > .grid-stack-item-content > * {
37440
37919
  height: auto;
37441
37920
  }
37442
- [data-v-29653a76] .grid-stack-item-content {
37921
+ [data-v-a91998fc] .grid-stack-item-content {
37443
37922
  background: var(--color-main-background);
37444
37923
  border: none;
37445
37924
  box-shadow: none;
37446
37925
  overflow: hidden;
37447
37926
  }
37448
- [data-v-29653a76] .grid-stack-item-content:has(.cn-widget-wrapper--borderless) {
37927
+ [data-v-a91998fc] .grid-stack-item-content:has(.cn-widget-wrapper--borderless) {
37449
37928
  background: transparent;
37450
37929
  }
37451
- [data-v-29653a76] .grid-stack-placeholder > .placeholder-content {
37930
+ [data-v-a91998fc] .grid-stack-placeholder > .placeholder-content {
37452
37931
  background: var(--color-primary-element-light);
37453
37932
  border: 2px dashed var(--color-primary-element);
37454
37933
  border-radius: var(--border-radius-large);
@@ -37716,7 +38195,7 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37716
38195
  }
37717
38196
 
37718
38197
 
37719
- .cn-dashboard-page[data-v-4475ac48] {
38198
+ .cn-dashboard-page[data-v-8b7dcccc] {
37720
38199
  padding: 20px;
37721
38200
  max-width: 1800px;
37722
38201
  /* Centre the leftover space once the cap engages, so a wide screen shows
@@ -37730,7 +38209,7 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37730
38209
  overflow-y: auto;
37731
38210
  box-sizing: border-box;
37732
38211
  }
37733
- .cn-dashboard-page__header[data-v-4475ac48] {
38212
+ .cn-dashboard-page__header[data-v-8b7dcccc] {
37734
38213
  display: flex;
37735
38214
  justify-content: space-between;
37736
38215
  align-items: flex-start;
@@ -37742,21 +38221,21 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37742
38221
  room. Only the HEADER shifts right — body widgets keep full width. */
37743
38222
  padding-inline-start: 56px;
37744
38223
  }
37745
- .cn-dashboard-page__header-left[data-v-4475ac48] {
38224
+ .cn-dashboard-page__header-left[data-v-8b7dcccc] {
37746
38225
  min-width: 0;
37747
38226
  }
37748
- .cn-dashboard-page__title-row[data-v-4475ac48] {
38227
+ .cn-dashboard-page__title-row[data-v-8b7dcccc] {
37749
38228
  display: flex;
37750
38229
  align-items: center;
37751
38230
  flex-wrap: wrap;
37752
38231
  gap: 12px;
37753
38232
  }
37754
- .cn-dashboard-page__title[data-v-4475ac48] {
38233
+ .cn-dashboard-page__title[data-v-8b7dcccc] {
37755
38234
  margin: 0;
37756
38235
  font-size: 20px;
37757
38236
  font-weight: 700;
37758
38237
  }
37759
- .cn-dashboard-page__description[data-v-4475ac48] {
38238
+ .cn-dashboard-page__description[data-v-8b7dcccc] {
37760
38239
  margin: 4px 0 0;
37761
38240
  font-size: 14px;
37762
38241
  color: var(--color-text-maxcontrast);
@@ -37764,19 +38243,19 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37764
38243
 
37765
38244
  /* Board look (screens-dashboard-parity): h1 28/700, a 15px grey subtitle 6px
37766
38245
  under it, and 40px buttons with a 10px gap. */
37767
- .cn-dashboard-page--board .cn-dashboard-page__title[data-v-4475ac48] {
38246
+ .cn-dashboard-page--board .cn-dashboard-page__title[data-v-8b7dcccc] {
37768
38247
  font-size: 28px;
37769
38248
  font-weight: 700;
37770
38249
  line-height: 1.2;
37771
38250
  }
37772
- .cn-dashboard-page--board .cn-dashboard-page__description[data-v-4475ac48] {
38251
+ .cn-dashboard-page--board .cn-dashboard-page__description[data-v-8b7dcccc] {
37773
38252
  margin: 6px 0 0;
37774
38253
  font-size: 15px;
37775
38254
  }
37776
- .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-4475ac48] {
38255
+ .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-8b7dcccc] {
37777
38256
  gap: 10px;
37778
38257
  }
37779
- .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-4475ac48] .button-vue {
38258
+ .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-8b7dcccc] .button-vue {
37780
38259
  min-height: var(--cn-board-control-height, 40px);
37781
38260
  height: var(--cn-board-control-height, 40px);
37782
38261
  }
@@ -37784,17 +38263,17 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37784
38263
  /* The switch row under the header (screens-dashboard-greeting-header): the
37785
38264
  view switch left, the `viewLinks` pills right (DqMijnWerk: pills 34px high,
37786
38265
  radius 17, 13px/600, a 14px icon, primary light on primary deep). */
37787
- .cn-dashboard-page__switch-row[data-v-4475ac48] {
38266
+ .cn-dashboard-page__switch-row[data-v-8b7dcccc] {
37788
38267
  display: flex;
37789
38268
  flex-wrap: wrap;
37790
38269
  align-items: center;
37791
38270
  gap: 10px;
37792
38271
  margin-bottom: var(--cn-board-section-gap, 20px);
37793
38272
  }
37794
- .cn-dashboard-page__switch-row-spacer[data-v-4475ac48] {
38273
+ .cn-dashboard-page__switch-row-spacer[data-v-8b7dcccc] {
37795
38274
  flex: 1 1 auto;
37796
38275
  }
37797
- .cn-dashboard-page__view-link[data-v-4475ac48] {
38276
+ .cn-dashboard-page__view-link[data-v-8b7dcccc] {
37798
38277
  display: inline-flex;
37799
38278
  align-items: center;
37800
38279
  gap: 6px;
@@ -37808,36 +38287,36 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37808
38287
  white-space: nowrap;
37809
38288
  text-decoration: none !important;
37810
38289
  }
37811
- .cn-dashboard-page__view-link[data-v-4475ac48]:hover {
38290
+ .cn-dashboard-page__view-link[data-v-8b7dcccc]:hover {
37812
38291
  background: var(--color-primary-element-light-hover, var(--color-primary-element-light));
37813
38292
  }
37814
- .cn-dashboard-page__view-link[data-v-4475ac48]:focus-visible {
38293
+ .cn-dashboard-page__view-link[data-v-8b7dcccc]:focus-visible {
37815
38294
  outline: 2px solid var(--color-main-text);
37816
38295
  outline-offset: 2px;
37817
38296
  }
37818
- .cn-dashboard-page__view-link-icon[data-v-4475ac48] {
38297
+ .cn-dashboard-page__view-link-icon[data-v-8b7dcccc] {
37819
38298
  display: inline-flex;
37820
38299
  }
37821
38300
 
37822
38301
  /* The period group, in a row of its own between the header and the KPI row. */
37823
- .cn-dashboard-page__date-range--segmented[data-v-4475ac48] {
38302
+ .cn-dashboard-page__date-range--segmented[data-v-8b7dcccc] {
37824
38303
  margin-bottom: 16px;
37825
38304
  }
37826
- .cn-dashboard-page__date-segmented[data-v-4475ac48] {
38305
+ .cn-dashboard-page__date-segmented[data-v-8b7dcccc] {
37827
38306
  display: flex;
37828
38307
  align-items: center;
37829
38308
  gap: 8px;
37830
38309
  }
37831
38310
 
37832
38311
  /* The KPI row above the grid: tiles are cells of the auto-fit grid. */
37833
- .cn-dashboard-page__kpi-row[data-v-4475ac48] {
38312
+ .cn-dashboard-page__kpi-row[data-v-8b7dcccc] {
37834
38313
  margin-bottom: var(--cn-board-section-gap, 16px);
37835
38314
  }
37836
- .cn-dashboard-page__kpi-cell[data-v-4475ac48] {
38315
+ .cn-dashboard-page__kpi-cell[data-v-8b7dcccc] {
37837
38316
  display: flex;
37838
38317
  min-width: 0;
37839
38318
  }
37840
- .cn-dashboard-page__kpi-cell[data-v-4475ac48] > * {
38319
+ .cn-dashboard-page__kpi-cell[data-v-8b7dcccc] > * {
37841
38320
  flex: 1 1 auto;
37842
38321
  min-width: 0;
37843
38322
  }
@@ -37850,7 +38329,7 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37850
38329
  scoped chip rules then silently don't match and the chip collapses into
37851
38330
  NcActions' ~30px icon slot (text wraps to "Last / 30 / days"). The
37852
38331
  data-testid is stable across chunks, so those rules match regardless. */
37853
- .cn-dashboard-page__header-actions[data-v-4475ac48] {
38332
+ .cn-dashboard-page__header-actions[data-v-8b7dcccc] {
37854
38333
  display: flex;
37855
38334
  align-items: center;
37856
38335
  gap: 8px;
@@ -37866,19 +38345,19 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37866
38345
 
37867
38346
  /* Date-range header band. Kept compact so it doesn't open a tall gap
37868
38347
  above the grid; the pills variant is a single tidy toggle row. */
37869
- .cn-dashboard-page__date-range[data-v-4475ac48] {
38348
+ .cn-dashboard-page__date-range[data-v-8b7dcccc] {
37870
38349
  margin-bottom: 12px;
37871
38350
  }
37872
- .cn-dashboard-page__date-range--pills[data-v-4475ac48] {
38351
+ .cn-dashboard-page__date-range--pills[data-v-8b7dcccc] {
37873
38352
  margin-bottom: 8px;
37874
38353
  }
37875
- .cn-dashboard-page__date-pills[data-v-4475ac48] {
38354
+ .cn-dashboard-page__date-pills[data-v-8b7dcccc] {
37876
38355
  display: flex;
37877
38356
  align-items: center;
37878
38357
  flex-wrap: wrap;
37879
38358
  gap: 6px;
37880
38359
  }
37881
- .cn-dashboard-page__date-pill[data-v-4475ac48] {
38360
+ .cn-dashboard-page__date-pill[data-v-8b7dcccc] {
37882
38361
  display: inline-flex;
37883
38362
  align-items: center;
37884
38363
  padding: 5px 14px;
@@ -37893,77 +38372,77 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37893
38372
  cursor: pointer;
37894
38373
  transition: background-color 100ms ease, border-color 100ms ease, color 100ms ease;
37895
38374
  }
37896
- .cn-dashboard-page__date-pill[data-v-4475ac48]:hover {
38375
+ .cn-dashboard-page__date-pill[data-v-8b7dcccc]:hover {
37897
38376
  background: var(--color-background-hover);
37898
38377
  }
37899
- .cn-dashboard-page__date-pill[data-v-4475ac48]:focus-visible {
38378
+ .cn-dashboard-page__date-pill[data-v-8b7dcccc]:focus-visible {
37900
38379
  outline: 2px solid var(--color-primary-element);
37901
38380
  outline-offset: 2px;
37902
38381
  }
37903
- .cn-dashboard-page__date-pill--active[data-v-4475ac48] {
38382
+ .cn-dashboard-page__date-pill--active[data-v-8b7dcccc] {
37904
38383
  background: var(--color-primary-element);
37905
38384
  border-color: var(--color-primary-element);
37906
38385
  color: var(--color-primary-element-text);
37907
38386
  }
37908
- .cn-dashboard-page__date-pill--active[data-v-4475ac48]:hover {
38387
+ .cn-dashboard-page__date-pill--active[data-v-8b7dcccc]:hover {
37909
38388
  background: var(--color-primary-element-hover, var(--color-primary-element));
37910
38389
  }
37911
38390
 
37912
38391
  /* The custom-range pill is de-emphasised — dashed outline, muted text —
37913
38392
  so it reads as an escape hatch rather than a primary option. */
37914
- .cn-dashboard-page__date-pill--custom[data-v-4475ac48] {
38393
+ .cn-dashboard-page__date-pill--custom[data-v-8b7dcccc] {
37915
38394
  border-style: dashed;
37916
38395
  color: var(--color-text-maxcontrast);
37917
38396
  }
37918
- .cn-dashboard-page__date-pill-custom[data-v-4475ac48] .action-item__menutoggle {
38397
+ .cn-dashboard-page__date-pill-custom[data-v-8b7dcccc] .action-item__menutoggle {
37919
38398
  min-width: 0;
37920
38399
  min-height: 0;
37921
38400
  padding: 0;
37922
38401
  background: transparent;
37923
38402
  border: none;
37924
38403
  }
37925
- .cn-dashboard-page__date-pill-custom[data-v-4475ac48] .button-vue,
37926
- .cn-dashboard-page__date-pill-custom[data-v-4475ac48] .button-vue__wrapper,
37927
- .cn-dashboard-page__date-pill-custom[data-v-4475ac48] .button-vue__icon {
38404
+ .cn-dashboard-page__date-pill-custom[data-v-8b7dcccc] .button-vue,
38405
+ .cn-dashboard-page__date-pill-custom[data-v-8b7dcccc] .button-vue__wrapper,
38406
+ .cn-dashboard-page__date-pill-custom[data-v-8b7dcccc] .button-vue__icon {
37928
38407
  width: auto !important;
37929
38408
  min-width: 0 !important;
37930
38409
  overflow: visible !important;
37931
38410
  }
37932
- .cn-dashboard-page__empty[data-v-4475ac48] {
38411
+ .cn-dashboard-page__empty[data-v-8b7dcccc] {
37933
38412
  padding: 60px 20px;
37934
38413
  }
37935
38414
 
37936
38415
  /* The page's view switch on a page without a header row: at the end of its
37937
38416
  own row, above the grids, where the header would have put it. */
37938
- .cn-dashboard-page__view-switch[data-v-4475ac48] {
38417
+ .cn-dashboard-page__view-switch[data-v-8b7dcccc] {
37939
38418
  display: flex;
37940
38419
  justify-content: flex-end;
37941
38420
  margin-bottom: 12px;
37942
38421
  }
37943
38422
 
37944
38423
  /* A view the switch shows with nothing to draw. */
37945
- .cn-page-view-region--empty[data-v-4475ac48] {
38424
+ .cn-page-view-region--empty[data-v-8b7dcccc] {
37946
38425
  padding: 40px 20px;
37947
38426
  }
37948
- .cn-dashboard-page__page-filters[data-v-4475ac48] {
38427
+ .cn-dashboard-page__page-filters[data-v-8b7dcccc] {
37949
38428
  display: flex;
37950
38429
  flex-wrap: wrap;
37951
38430
  gap: 16px;
37952
38431
  align-items: flex-end;
37953
38432
  margin-bottom: 12px;
37954
38433
  }
37955
- .cn-dashboard-page__page-filter[data-v-4475ac48] {
38434
+ .cn-dashboard-page__page-filter[data-v-8b7dcccc] {
37956
38435
  display: flex;
37957
38436
  flex-direction: column;
37958
38437
  gap: 4px;
37959
38438
  min-width: 200px;
37960
38439
  }
37961
- .cn-dashboard-page__page-filter-label[data-v-4475ac48] {
38440
+ .cn-dashboard-page__page-filter-label[data-v-8b7dcccc] {
37962
38441
  font-size: 0.85em;
37963
38442
  font-weight: 600;
37964
38443
  color: var(--color-text-maxcontrast);
37965
38444
  }
37966
- .cn-dashboard-page__widget-edit[data-v-4475ac48] {
38445
+ .cn-dashboard-page__widget-edit[data-v-8b7dcccc] {
37967
38446
  position: absolute;
37968
38447
  top: 4px;
37969
38448
  inset-inline-end: 4px;
@@ -37982,8 +38461,8 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37982
38461
  and centre the card. */
37983
38462
  /* `safe` centre so an overflowing tile does not spill out of the top, where
37984
38463
  flex overflow cannot be scrolled back to. Same as detail-page.css. */
37985
- .cn-dashboard-page__card-fit[data-v-4475ac48] .cn-widget-wrapper__content,
37986
- .cn-dashboard-page__card-fit.cn-widget-wrapper--flush[data-v-4475ac48] .cn-widget-wrapper__content {
38464
+ .cn-dashboard-page__card-fit[data-v-8b7dcccc] .cn-widget-wrapper__content,
38465
+ .cn-dashboard-page__card-fit.cn-widget-wrapper--flush[data-v-8b7dcccc] .cn-widget-wrapper__content {
37987
38466
  overflow: hidden;
37988
38467
  display: flex;
37989
38468
  flex-direction: column;
@@ -37999,7 +38478,7 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37999
38478
  shows up as a scrollbar the user has to drag to see the whole graph. Same
38000
38479
  shape as the card-fit rule above, minus the padding: chart tiles render
38001
38480
  `flush`, and apexcharts already draws its own margins. */
38002
- .cn-dashboard-page__chart-fit[data-v-4475ac48] .cn-widget-wrapper__content {
38481
+ .cn-dashboard-page__chart-fit[data-v-8b7dcccc] .cn-widget-wrapper__content {
38003
38482
  overflow: hidden;
38004
38483
  display: flex;
38005
38484
  flex-direction: column;
@@ -38009,13 +38488,13 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
38009
38488
  /* Card content (stat / gauge / delta) must fit the tile width: let the
38010
38489
  widget shrink and its value/label truncate instead of pushing past the
38011
38490
  tile edge (the horizontal clip on long currency values). */
38012
- .cn-dashboard-page__card-fit[data-v-4475ac48] .cn-stat-widget,
38013
- .cn-dashboard-page__card-fit[data-v-4475ac48] .cn-gauge-widget,
38014
- .cn-dashboard-page__card-fit[data-v-4475ac48] .cn-delta-widget {
38491
+ .cn-dashboard-page__card-fit[data-v-8b7dcccc] .cn-stat-widget,
38492
+ .cn-dashboard-page__card-fit[data-v-8b7dcccc] .cn-gauge-widget,
38493
+ .cn-dashboard-page__card-fit[data-v-8b7dcccc] .cn-delta-widget {
38015
38494
  min-width: 0;
38016
38495
  max-width: 100%;
38017
38496
  }
38018
- .cn-dashboard-page__unknown[data-v-4475ac48] {
38497
+ .cn-dashboard-page__unknown[data-v-8b7dcccc] {
38019
38498
  display: flex;
38020
38499
  align-items: center;
38021
38500
  justify-content: center;
@@ -38026,29 +38505,29 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
38026
38505
  }
38027
38506
 
38028
38507
  /* widget-ref content items */
38029
- .cn-dashboard-page__content[data-v-4475ac48] {
38508
+ .cn-dashboard-page__content[data-v-8b7dcccc] {
38030
38509
  display: flex;
38031
38510
  flex-direction: column;
38032
38511
  gap: 16px;
38033
38512
  }
38034
- .cn-dashboard-page__content-item[data-v-4475ac48] {
38513
+ .cn-dashboard-page__content-item[data-v-8b7dcccc] {
38035
38514
  width: 100%;
38036
38515
  }
38037
38516
  /* On a phone (screens-dashboard-phone) the touch targets of a board dashboard
38038
38517
  are 44px: the widget Actions menu and the KPI tiles. */
38039
38518
  @media (max-width: 640px) {
38040
- .cn-dashboard-page--board[data-v-4475ac48] .cn-widget-wrapper__actions .action-item__menutoggle,
38041
- .cn-dashboard-page--board[data-v-4475ac48] .cn-widget-wrapper__actions .button-vue {
38519
+ .cn-dashboard-page--board[data-v-8b7dcccc] .cn-widget-wrapper__actions .action-item__menutoggle,
38520
+ .cn-dashboard-page--board[data-v-8b7dcccc] .cn-widget-wrapper__actions .button-vue {
38042
38521
  min-height: 44px;
38043
38522
  }
38044
- .cn-dashboard-page--board .cn-dashboard-page__kpi-cell[data-v-4475ac48] {
38523
+ .cn-dashboard-page--board .cn-dashboard-page__kpi-cell[data-v-8b7dcccc] {
38045
38524
  min-height: 44px;
38046
38525
  }
38047
38526
  }
38048
38527
 
38049
38528
  /* What a registry widget reports for its card header (`header` event): the
38050
38529
  note beside the link ("3 in total") and one action, as on a detail page. */
38051
- .cn-dashboard-page__widget-count[data-v-4475ac48] {
38530
+ .cn-dashboard-page__widget-count[data-v-8b7dcccc] {
38052
38531
  align-self: center;
38053
38532
  padding: 1px 8px;
38054
38533
  border-radius: 10px;
@@ -38057,13 +38536,13 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
38057
38536
  font-size: 13px;
38058
38537
  font-weight: 600;
38059
38538
  }
38060
- .cn-dashboard-page__widget-note[data-v-4475ac48] {
38539
+ .cn-dashboard-page__widget-note[data-v-8b7dcccc] {
38061
38540
  align-self: center;
38062
38541
  color: var(--color-text-maxcontrast);
38063
38542
  font-size: 14px;
38064
38543
  white-space: nowrap;
38065
38544
  }
38066
- .cn-dashboard-page__widget-action[data-v-4475ac48] {
38545
+ .cn-dashboard-page__widget-action[data-v-8b7dcccc] {
38067
38546
  display: inline-flex;
38068
38547
  align-items: center;
38069
38548
  align-self: center;
@@ -38079,7 +38558,7 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
38079
38558
  white-space: nowrap;
38080
38559
  cursor: pointer;
38081
38560
  }
38082
- .cn-dashboard-page__widget-action[data-v-4475ac48]:focus-visible {
38561
+ .cn-dashboard-page__widget-action[data-v-8b7dcccc]:focus-visible {
38083
38562
  outline: 2px solid var(--color-primary-element);
38084
38563
  outline-offset: 2px;
38085
38564
  }
@@ -40131,21 +40610,21 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
40131
40610
 
40132
40611
 
40133
40612
  /* The section wrapper draws no box; the board look makes it the card grid. */
40134
- .cn-settings-page__sections[data-v-1c7a70aa] {
40613
+ .cn-settings-page__sections[data-v-04e49f77] {
40135
40614
  display: contents;
40136
40615
  }
40137
- .cn-settings-page__header-buttons[data-v-1c7a70aa] {
40616
+ .cn-settings-page__header-buttons[data-v-04e49f77] {
40138
40617
  display: flex;
40139
40618
  align-items: center;
40140
40619
  gap: 10px;
40141
40620
  margin-inline-start: auto;
40142
40621
  }
40143
- .cn-settings-page[data-v-1c7a70aa] {
40622
+ .cn-settings-page[data-v-04e49f77] {
40144
40623
  display: flex;
40145
40624
  flex-direction: column;
40146
40625
  gap: 16px;
40147
40626
  }
40148
- .cn-settings-page__actions[data-v-1c7a70aa] {
40627
+ .cn-settings-page__actions[data-v-04e49f77] {
40149
40628
  display: flex;
40150
40629
  justify-content: flex-end;
40151
40630
  gap: 8px;
@@ -40156,7 +40635,7 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
40156
40635
  * orchestration REQ-MSO-5). Uses Nextcloud CSS variables only — no
40157
40636
  * hex literals, no rgba overrides on the elements themselves.
40158
40637
  */
40159
- .cn-settings-page__tabs[data-v-1c7a70aa] {
40638
+ .cn-settings-page__tabs[data-v-04e49f77] {
40160
40639
  display: flex;
40161
40640
  flex-wrap: wrap;
40162
40641
  gap: 4px;
@@ -40164,7 +40643,7 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
40164
40643
  padding-bottom: 0;
40165
40644
  margin-bottom: 8px;
40166
40645
  }
40167
- .cn-settings-page__tab[data-v-1c7a70aa] {
40646
+ .cn-settings-page__tab[data-v-04e49f77] {
40168
40647
  background: transparent;
40169
40648
  border: 0;
40170
40649
  border-bottom: 3px solid transparent;
@@ -40176,52 +40655,52 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
40176
40655
  border-radius: var(--border-radius-large) var(--border-radius-large) 0 0;
40177
40656
  transition: background-color 0.1s ease-in-out, color 0.1s ease-in-out, border-color 0.1s ease-in-out;
40178
40657
  }
40179
- .cn-settings-page__tab[data-v-1c7a70aa]:hover,
40180
- .cn-settings-page__tab[data-v-1c7a70aa]:focus-visible {
40658
+ .cn-settings-page__tab[data-v-04e49f77]:hover,
40659
+ .cn-settings-page__tab[data-v-04e49f77]:focus-visible {
40181
40660
  background-color: var(--color-background-hover);
40182
40661
  color: var(--color-main-text);
40183
40662
  outline: none;
40184
40663
  }
40185
- .cn-settings-page__tab--active[data-v-1c7a70aa] {
40664
+ .cn-settings-page__tab--active[data-v-04e49f77] {
40186
40665
  color: var(--color-primary-element);
40187
40666
  border-bottom-color: var(--color-primary-element);
40188
40667
  font-weight: bold;
40189
40668
  }
40190
40669
  @media (max-width: 768px) {
40191
- .cn-settings-page__tabs[data-v-1c7a70aa] {
40670
+ .cn-settings-page__tabs[data-v-04e49f77] {
40192
40671
  flex-direction: column;
40193
40672
  gap: 0;
40194
40673
  border-bottom: 0;
40195
40674
  }
40196
- .cn-settings-page__tab[data-v-1c7a70aa] {
40675
+ .cn-settings-page__tab[data-v-04e49f77] {
40197
40676
  border-bottom: 1px solid var(--color-border);
40198
40677
  border-radius: 0;
40199
40678
  text-align: left;
40200
40679
  }
40201
- .cn-settings-page__tab--active[data-v-1c7a70aa] {
40680
+ .cn-settings-page__tab--active[data-v-04e49f77] {
40202
40681
  border-bottom-width: 1px;
40203
40682
  background-color: var(--color-background-hover);
40204
40683
  }
40205
40684
  }
40206
- .cn-settings-page__fields[data-v-1c7a70aa] {
40685
+ .cn-settings-page__fields[data-v-04e49f77] {
40207
40686
  display: flex;
40208
40687
  flex-direction: column;
40209
40688
  gap: 12px;
40210
40689
  }
40211
- .cn-settings-page__field[data-v-1c7a70aa] {
40690
+ .cn-settings-page__field[data-v-04e49f77] {
40212
40691
  display: flex;
40213
40692
  flex-direction: column;
40214
40693
  gap: 4px;
40215
40694
  }
40216
- .cn-settings-page__field-help[data-v-1c7a70aa] {
40695
+ .cn-settings-page__field-help[data-v-04e49f77] {
40217
40696
  color: var(--color-text-maxcontrast);
40218
40697
  }
40219
- .cn-settings-page__save-bar[data-v-1c7a70aa] {
40698
+ .cn-settings-page__save-bar[data-v-04e49f77] {
40220
40699
  display: flex;
40221
40700
  gap: 8px;
40222
40701
  margin-top: 16px;
40223
40702
  }
40224
- .cn-settings-page__error[data-v-1c7a70aa] {
40703
+ .cn-settings-page__error[data-v-04e49f77] {
40225
40704
  color: var(--color-error);
40226
40705
  background: var(--color-error-light, var(--color-background-hover));
40227
40706
  padding: 8px 12px;
@@ -40413,33 +40892,51 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
40413
40892
  }
40414
40893
 
40415
40894
 
40416
- .cn-reports-page[data-v-7629715a] {
40895
+ .cn-reports-page[data-v-327b60f8] {
40417
40896
  padding: 16px;
40418
40897
  }
40419
40898
 
40420
40899
  /* Clear the Nextcloud navigation toggle button (44px wide, absolutely
40421
40900
  positioned at the left edge of .app-content) plus 12px breathing room, as
40422
40901
  CnPageHeader does. Only the header shifts; the body keeps the full width. */
40423
- .cn-reports-page__header[data-v-7629715a] {
40902
+ .cn-reports-page__header[data-v-327b60f8] {
40424
40903
  padding-inline-start: 56px;
40425
40904
  }
40426
- .cn-reports-page__title[data-v-7629715a] {
40905
+ .cn-reports-page__title[data-v-327b60f8] {
40427
40906
  margin: 0 0 4px;
40428
40907
  }
40429
- .cn-reports-page__description[data-v-7629715a] {
40908
+ .cn-reports-page__heading-row[data-v-327b60f8] {
40909
+ display: flex;
40910
+ flex-wrap: wrap;
40911
+ align-items: flex-start;
40912
+ justify-content: space-between;
40913
+ gap: 12px 24px;
40914
+ }
40915
+ .cn-reports-page__heading-row .cn-reports-page__title[data-v-327b60f8] {
40916
+ flex: 1 1 320px;
40917
+ min-width: 0;
40918
+ }
40919
+ .cn-reports-page__header-buttons[data-v-327b60f8] {
40920
+ display: flex;
40921
+ flex: none;
40922
+ flex-wrap: wrap;
40923
+ align-items: center;
40924
+ gap: 10px;
40925
+ }
40926
+ .cn-reports-page__description[data-v-327b60f8] {
40430
40927
  margin: 0 0 16px;
40431
40928
  color: var(--color-text-maxcontrast);
40432
40929
  }
40433
- .cn-reports-page__filter[data-v-7629715a] {
40930
+ .cn-reports-page__filter[data-v-327b60f8] {
40434
40931
  display: flex;
40435
40932
  align-items: center;
40436
40933
  gap: 8px;
40437
40934
  margin-bottom: 16px;
40438
40935
  }
40439
- .cn-reports-page__filter-select[data-v-7629715a] {
40936
+ .cn-reports-page__filter-select[data-v-327b60f8] {
40440
40937
  min-width: 220px;
40441
40938
  }
40442
- .cn-reports-page__grid[data-v-7629715a] {
40939
+ .cn-reports-page__grid[data-v-327b60f8] {
40443
40940
  display: grid;
40444
40941
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
40445
40942
  gap: 12px;
@@ -40447,7 +40944,7 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
40447
40944
  margin: 0;
40448
40945
  padding: 0;
40449
40946
  }
40450
- .cn-reports-page__card[data-v-7629715a] {
40947
+ .cn-reports-page__card[data-v-327b60f8] {
40451
40948
  display: flex;
40452
40949
  flex-direction: column;
40453
40950
  gap: 4px;
@@ -40458,22 +40955,22 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
40458
40955
  color: inherit;
40459
40956
  text-decoration: none;
40460
40957
  }
40461
- .cn-reports-page__card[data-v-7629715a]:hover,
40462
- .cn-reports-page__card[data-v-7629715a]:focus {
40958
+ .cn-reports-page__card[data-v-327b60f8]:hover,
40959
+ .cn-reports-page__card[data-v-327b60f8]:focus {
40463
40960
  background-color: var(--color-background-hover);
40464
40961
  }
40465
- .cn-reports-page__card-title[data-v-7629715a] {
40962
+ .cn-reports-page__card-title[data-v-327b60f8] {
40466
40963
  font-weight: bold;
40467
40964
  }
40468
- .cn-reports-page__card-description[data-v-7629715a],
40469
- .cn-reports-page__card-category[data-v-7629715a] {
40965
+ .cn-reports-page__card-description[data-v-327b60f8],
40966
+ .cn-reports-page__card-category[data-v-327b60f8] {
40470
40967
  color: var(--color-text-maxcontrast);
40471
40968
  font-size: 0.9em;
40472
40969
  }
40473
- .cn-reports-page__empty[data-v-7629715a] {
40970
+ .cn-reports-page__empty[data-v-327b60f8] {
40474
40971
  color: var(--color-text-maxcontrast);
40475
40972
  }
40476
- .cn-reports-page__widgets[data-v-7629715a] {
40973
+ .cn-reports-page__widgets[data-v-327b60f8] {
40477
40974
  margin-top: 20px;
40478
40975
  }
40479
40976