@conduction/nextcloud-vue 2.91.0 → 2.93.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 (149) hide show
  1. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js +57 -4
  2. package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js.map +1 -1
  3. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js +44 -17
  4. package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js.map +1 -1
  5. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue.js +1 -1
  6. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue2.js +44 -2
  7. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue2.js.map +1 -1
  8. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue3.js +140 -59
  9. package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue3.js.map +1 -1
  10. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue.js +1 -1
  11. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +20 -6
  12. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
  13. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +3 -2
  14. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
  15. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js +10 -39
  16. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js.map +1 -1
  17. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js.map +1 -1
  18. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +5 -3
  19. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
  20. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
  21. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue.js +1 -1
  22. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js +6 -4
  23. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js.map +1 -1
  24. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue3.js.map +1 -1
  25. package/dist/esm/components/CnFeaturesAndRoadmapPage/CnFeaturesAndRoadmapPage.vue2.js +46 -0
  26. package/dist/esm/components/CnFeaturesAndRoadmapPage/CnFeaturesAndRoadmapPage.vue2.js.map +1 -1
  27. package/dist/esm/components/CnFeaturesAndRoadmapPage/CnFeaturesAndRoadmapPage.vue3.js +6 -2
  28. package/dist/esm/components/CnFeaturesAndRoadmapPage/CnFeaturesAndRoadmapPage.vue3.js.map +1 -1
  29. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue.js +1 -1
  30. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue2.js +82 -9
  31. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue2.js.map +1 -1
  32. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue3.js +104 -90
  33. package/dist/esm/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue3.js.map +1 -1
  34. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue.js +9 -0
  35. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue.js.map +1 -0
  36. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue2.js +355 -0
  37. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue2.js.map +1 -0
  38. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue3.js +462 -0
  39. package/dist/esm/components/CnFeaturesBoard/CnFeaturesBoard.vue3.js.map +1 -0
  40. package/dist/esm/components/CnFormDialog/CnFormDialog.vue.js +1 -1
  41. package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js +39 -10
  42. package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js.map +1 -1
  43. package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js +418 -399
  44. package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js.map +1 -1
  45. package/dist/esm/components/CnIcon/semanticIcons.js +2 -2
  46. package/dist/esm/components/CnIcon/semanticIcons.js.map +1 -1
  47. package/dist/esm/components/CnLinkCardsPage/CnLinkCardsPage.vue.js +1 -1
  48. package/dist/esm/components/CnLinkCardsPage/CnLinkCardsPage.vue2.js +156 -3
  49. package/dist/esm/components/CnLinkCardsPage/CnLinkCardsPage.vue2.js.map +1 -1
  50. package/dist/esm/components/CnLinkCardsPage/CnLinkCardsPage.vue3.js +168 -52
  51. package/dist/esm/components/CnLinkCardsPage/CnLinkCardsPage.vue3.js.map +1 -1
  52. package/dist/esm/components/CnModuleCard/CnModuleCard.vue.js +9 -0
  53. package/dist/esm/components/CnModuleCard/CnModuleCard.vue.js.map +1 -0
  54. package/dist/esm/components/CnModuleCard/CnModuleCard.vue2.js +83 -0
  55. package/dist/esm/components/CnModuleCard/CnModuleCard.vue2.js.map +1 -0
  56. package/dist/esm/components/CnModuleCard/CnModuleCard.vue3.js +119 -0
  57. package/dist/esm/components/CnModuleCard/CnModuleCard.vue3.js.map +1 -0
  58. package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue.js +1 -1
  59. package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue2.js +22 -1
  60. package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue2.js.map +1 -1
  61. package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue3.js +20 -14
  62. package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue3.js.map +1 -1
  63. package/dist/esm/components/CnNotificationPreferences/CnNotificationPreferences.vue.js +1 -1
  64. package/dist/esm/components/CnNotificationPreferences/CnNotificationPreferences.vue2.js +2 -0
  65. package/dist/esm/components/CnNotificationPreferences/CnNotificationPreferences.vue2.js.map +1 -1
  66. package/dist/esm/components/CnNotificationPreferences/CnNotificationPreferences.vue3.js +15 -5
  67. package/dist/esm/components/CnNotificationPreferences/CnNotificationPreferences.vue3.js.map +1 -1
  68. package/dist/esm/components/CnRoadmapTab/CnRoadmapTab.vue.js +1 -1
  69. package/dist/esm/components/CnRoadmapTab/CnRoadmapTab.vue2.js +8 -30
  70. package/dist/esm/components/CnRoadmapTab/CnRoadmapTab.vue2.js.map +1 -1
  71. package/dist/esm/components/CnRoadmapTab/CnRoadmapTab.vue3.js.map +1 -1
  72. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue.js +1 -1
  73. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js +33 -2
  74. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
  75. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js.map +1 -1
  76. package/dist/esm/components/CnTextWidget/CnTextWidget.vue.js +1 -1
  77. package/dist/esm/components/CnTextWidget/CnTextWidget.vue2.js +63 -4
  78. package/dist/esm/components/CnTextWidget/CnTextWidget.vue2.js.map +1 -1
  79. package/dist/esm/components/CnTextWidget/CnTextWidget.vue3.js +19 -2
  80. package/dist/esm/components/CnTextWidget/CnTextWidget.vue3.js.map +1 -1
  81. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue.js +9 -0
  82. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue.js.map +1 -0
  83. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue2.js +164 -0
  84. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue2.js.map +1 -0
  85. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue3.js +93 -0
  86. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue3.js.map +1 -0
  87. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue.js +1 -1
  88. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js +12 -0
  89. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js.map +1 -1
  90. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js.map +1 -1
  91. package/dist/esm/l10n/en.json.js +45 -1
  92. package/dist/esm/l10n/en.json.js.map +1 -1
  93. package/dist/esm/l10n/nl.json.js +44 -1
  94. package/dist/esm/l10n/nl.json.js.map +1 -1
  95. package/dist/esm/library-style.js +1 -1
  96. package/dist/esm/nextcloud-vue.css +1182 -328
  97. package/dist/esm/utils/boardDate.js +35 -1
  98. package/dist/esm/utils/boardDate.js.map +1 -1
  99. package/dist/esm/utils/featureCatalog.js +135 -0
  100. package/dist/esm/utils/featureCatalog.js.map +1 -0
  101. package/dist/esm/utils/fillTemplate.js +84 -4
  102. package/dist/esm/utils/fillTemplate.js.map +1 -1
  103. package/dist/esm/utils/headerMeta.js +62 -12
  104. package/dist/esm/utils/headerMeta.js.map +1 -1
  105. package/dist/esm/utils/roadmapIssues.js +86 -0
  106. package/dist/esm/utils/roadmapIssues.js.map +1 -0
  107. package/dist/esm/utils/userDisplayName.js +47 -0
  108. package/dist/esm/utils/userDisplayName.js.map +1 -0
  109. package/dist/esm/utils/validateManifestV2.compiled.js +3 -3
  110. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  111. package/dist/nextcloud-vue.cjs.js +15618 -13097
  112. package/dist/nextcloud-vue.cjs.js.map +2 -2
  113. package/dist/nextcloud-vue.css +1182 -328
  114. package/l10n/en.json +45 -1
  115. package/l10n/nl.json +44 -1
  116. package/package.json +1 -1
  117. package/src/components/CnAppRoot/CnAppRoot.md +2 -0
  118. package/src/components/CnAppRoot/CnAppRoot.vue +66 -5
  119. package/src/components/CnChoiceCards/CnChoiceCards.md +27 -0
  120. package/src/components/CnChoiceCards/CnChoiceCards.vue +168 -3
  121. package/src/components/CnDashboardPage/CnDashboardPage.vue +45 -6
  122. package/src/components/CnDataTable/CnDataTable.vue +10 -39
  123. package/src/components/CnDetailPage/CnDetailPage.vue +5 -3
  124. package/src/components/CnFactsWidget/CnFactsWidget.vue +6 -4
  125. package/src/components/CnFeaturesAndRoadmapPage/CnFeaturesAndRoadmapPage.vue +51 -1
  126. package/src/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue +98 -13
  127. package/src/components/CnFeaturesBoard/CnFeaturesBoard.vue +1053 -0
  128. package/src/components/CnFormDialog/CnFormDialog.md +1 -0
  129. package/src/components/CnFormDialog/CnFormDialog.vue +619 -562
  130. package/src/components/CnLinkCardsPage/CnLinkCardsPage.vue +338 -5
  131. package/src/components/CnModuleCard/CnModuleCard.vue +258 -0
  132. package/src/components/CnNcWidgetWidget/CnNcWidgetWidget.vue +23 -2
  133. package/src/components/CnNotificationPreferences/CnNotificationPreferences.vue +5 -0
  134. package/src/components/CnRoadmapTab/CnRoadmapTab.vue +6 -28
  135. package/src/components/CnTabsWidget/CnTabsWidget.vue +33 -2
  136. package/src/components/CnTextWidget/CnTextWidget.vue +89 -4
  137. package/src/components/CnUserSettingsDialog/CnUserSettingsDialog.vue +305 -0
  138. package/src/components/CnWidgetWrapper/CnWidgetWrapper.vue +12 -0
  139. package/src/css/dialog.css +47 -0
  140. package/src/css/look-board-detail.css +8 -0
  141. package/src/css/look-board.css +33 -0
  142. package/src/schemas/app-manifest-v2.schema.json +67 -4
  143. package/src/utils/boardDate.js +34 -0
  144. package/src/utils/featureCatalog.js +132 -0
  145. package/src/utils/fillTemplate.js +83 -3
  146. package/src/utils/headerMeta.js +62 -12
  147. package/src/utils/roadmapIssues.js +82 -0
  148. package/src/utils/userDisplayName.js +54 -0
  149. package/src/utils/validateManifestV2.compiled.js +3 -3
@@ -658,6 +658,39 @@
658
658
  max-width: none;
659
659
  }
660
660
 
661
+ /* A Nextcloud text field or text area in a board settings card has its label
662
+ above the control (14px/600), as the boards draw it (PqBeheer Leadbeheer,
663
+ PqBeheerKassa Btw), instead of floating inside the border. The label stays
664
+ the field's own `<label for>`; it moves out of the control and the field
665
+ makes room for it. With the label outside, the placeholder shows at rest.
666
+ @spec openspec/changes/settings-section-board-fields/specs/settings-board-look/spec.md#requirement-a-settings-card-labels-its-text-fields-above-the-control */
667
+ .cn-look-board .settings-section:not(.cn-look-nextcloud *) .input-field:has(.input-field__label),
668
+ .cn-look-board .settings-section:not(.cn-look-nextcloud *) .textarea:has(.textarea__label) {
669
+ margin-block-start: 26px;
670
+ }
671
+
672
+ .cn-look-board .settings-section:not(.cn-look-nextcloud *) .input-field__input + .input-field__label,
673
+ .cn-look-board .settings-section:not(.cn-look-nextcloud *) .textarea__input + .textarea__label {
674
+ inset-block-start: auto;
675
+ inset-block-end: calc(100% + 4px);
676
+ inset-inline: 0 auto;
677
+ max-width: 100%;
678
+ margin: 0;
679
+ padding: 0;
680
+ background: none;
681
+ color: var(--color-main-text);
682
+ font-size: 14px;
683
+ font-weight: 600;
684
+ line-height: 20px;
685
+ pointer-events: auto;
686
+ transition: none;
687
+ }
688
+
689
+ .cn-look-board .settings-section:not(.cn-look-nextcloud *) .input-field:has(.input-field__label) .input-field__input:not(:focus)::placeholder,
690
+ .cn-look-board .settings-section:not(.cn-look-nextcloud *) .textarea__input:not(:focus):not(.textarea__input--label-outside)::placeholder {
691
+ opacity: 1 !important;
692
+ }
693
+
661
694
  /* The section footer is the save row: the hairline replaces its own rule. */
662
695
  .cn-look-board .settings-section .cn-settings-section__footer {
663
696
  margin: 0;
@@ -1123,6 +1156,53 @@
1123
1156
  .cn-dialog__confirm-pending {
1124
1157
  opacity: 0.45;
1125
1158
  }
1159
+
1160
+ /* On a phone the board dialog is a bottom sheet (board PqMobiel): full width,
1161
+ anchored to the bottom, as tall as its content up to the screen less the
1162
+ header, a 16px top radius and a grab bar. The footer buttons share the row. */
1163
+ @media (max-width: 600px) {
1164
+ .modal-mask.cn-dialog-board .modal-wrapper .modal-container,
1165
+ .modal-mask.cn-dialog-board .modal-wrapper--normal > .modal-container {
1166
+ position: absolute;
1167
+ inset: auto 0 0;
1168
+ width: 100%;
1169
+ max-width: 100%;
1170
+ height: auto;
1171
+ max-height: calc(100% - var(--header-height, 50px));
1172
+ border-radius: 16px 16px 0 0;
1173
+ }
1174
+
1175
+ .modal-mask.cn-dialog-board .modal-container::before {
1176
+ content: '';
1177
+ display: block;
1178
+ flex: none;
1179
+ width: 40px;
1180
+ height: 4px;
1181
+ margin: 8px auto 0;
1182
+ border-radius: 2px;
1183
+ background: var(--color-border-dark);
1184
+ }
1185
+
1186
+ .modal-mask.cn-dialog-board .modal-container {
1187
+ flex-direction: column;
1188
+ }
1189
+
1190
+ .cn-dialog-board .dialog {
1191
+ height: auto;
1192
+ min-height: 0;
1193
+ }
1194
+
1195
+ .cn-dialog-board .dialog__content {
1196
+ flex: 0 1 auto;
1197
+ overflow-y: auto;
1198
+ }
1199
+
1200
+ .cn-dialog-board .dialog__actions > .button-vue,
1201
+ .cn-dialog-board .dialog__actions > * {
1202
+ flex: 1 1 0;
1203
+ min-height: 44px;
1204
+ }
1205
+ }
1126
1206
  /*
1127
1207
  * The board form field (screens-form-parity, canon sections 5 and 6).
1128
1208
  *
@@ -7312,6 +7392,14 @@ a.cn-kpi-card--board * {
7312
7392
  .cn-look-board:has(.cn-detail-page) > .app-sidebar__toggle {
7313
7393
  display: none;
7314
7394
  }
7395
+
7396
+ /* Below 768px the header is a column (detail-page.css), where the 320px basis
7397
+ above would be a 320px HEIGHT: the title sat in a band of white on a phone. */
7398
+ @media (max-width: 768px) {
7399
+ .cn-look-board .cn-detail-page__header--board > :first-child {
7400
+ flex: none;
7401
+ }
7402
+ }
7315
7403
  /*
7316
7404
  * The reports page under the board look (screens-reports-page-board-look,
7317
7405
  * board DcRapportages): a 28px title over a muted lead, one section per
@@ -20692,7 +20780,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20692
20780
 
20693
20781
 
20694
20782
  /* A select option breaks between words only, never inside one. */
20695
- .cn-form-dialog__option[data-v-67b5cfd5] {
20783
+ .cn-form-dialog__option[data-v-65a5754f] {
20696
20784
  display: block;
20697
20785
  min-width: 0;
20698
20786
  white-space: normal;
@@ -20700,7 +20788,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20700
20788
  word-break: normal;
20701
20789
  hyphens: manual;
20702
20790
  }
20703
- .cn-form-dialog__draft-actions[data-v-67b5cfd5] {
20791
+ .cn-form-dialog__draft-actions[data-v-65a5754f] {
20704
20792
  display: flex;
20705
20793
  gap: 8px;
20706
20794
  margin-top: 8px;
@@ -20708,22 +20796,22 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20708
20796
 
20709
20797
  /* The state is announced in WORDS, and the colour only repeats them. A
20710
20798
  reader who cannot see it still hears "Draft saved" (WCAG 2.2 SC 1.4.1). */
20711
- .cn-form-dialog__draft-state[data-v-67b5cfd5] {
20799
+ .cn-form-dialog__draft-state[data-v-65a5754f] {
20712
20800
  align-self: center;
20713
20801
  color: var(--color-text-maxcontrast);
20714
20802
  font-size: 0.9em;
20715
20803
  margin-inline-end: auto;
20716
20804
  }
20717
- .cn-form-dialog__switch-wrapper[data-v-67b5cfd5] {
20805
+ .cn-form-dialog__switch-wrapper[data-v-65a5754f] {
20718
20806
  display: flex;
20719
20807
  flex-direction: column;
20720
20808
  }
20721
- .cn-form-dialog__form[data-v-67b5cfd5] {
20809
+ .cn-form-dialog__form[data-v-65a5754f] {
20722
20810
  display: flex;
20723
20811
  flex-direction: column;
20724
20812
  gap: 4px;
20725
20813
  }
20726
- .cn-form-dialog__field[data-v-67b5cfd5] {
20814
+ .cn-form-dialog__field[data-v-65a5754f] {
20727
20815
  margin-bottom: 8px;
20728
20816
  }
20729
20817
 
@@ -20735,39 +20823,53 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20735
20823
  from pushing its column past its share: a grid item's default `auto`
20736
20824
  minimum is its content, so without it one long option label widens the
20737
20825
  whole column and the two stop being equal. */
20738
- .cn-form-dialog__form--two-column[data-v-67b5cfd5] {
20826
+ .cn-form-dialog__section[data-v-65a5754f] {
20827
+ margin: 12px 0 0;
20828
+ padding-top: 12px;
20829
+ border-top: 1px solid var(--color-border);
20830
+ font-size: 15px;
20831
+ font-weight: 700;
20832
+ }
20833
+
20834
+ /* The first heading opens the form: no rule above it. */
20835
+ .cn-form-dialog__form .cn-form-dialog__section[data-v-65a5754f]:first-of-type {
20836
+ margin-top: 0;
20837
+ padding-top: 0;
20838
+ border-top: 0;
20839
+ }
20840
+ .cn-form-dialog__form--two-column[data-v-65a5754f] {
20739
20841
  display: grid;
20740
20842
  grid-template-columns: 1fr 1fr;
20741
20843
  column-gap: 16px;
20742
20844
  align-items: start;
20743
20845
  }
20744
- .cn-form-dialog__form--two-column[data-v-67b5cfd5] > * {
20846
+ .cn-form-dialog__form--two-column[data-v-65a5754f] > * {
20745
20847
  min-width: 0;
20746
20848
  }
20747
20849
 
20748
20850
  /* Anything that is not a field (the form-level error note, the slots above
20749
20851
  and below the fields) spans the full width, so a note card never sits in
20750
20852
  a half-width column beside an input. */
20751
- .cn-form-dialog__form--two-column[data-v-67b5cfd5] > :not(.cn-form-dialog__field),
20752
- .cn-form-dialog__form--two-column > .cn-form-dialog__field--wide[data-v-67b5cfd5] {
20853
+ .cn-form-dialog__form--two-column[data-v-65a5754f] > :not(.cn-form-dialog__field),
20854
+ .cn-form-dialog__form--two-column > .cn-form-dialog__field--wide[data-v-65a5754f] {
20753
20855
  grid-column: 1 / -1;
20754
20856
  }
20755
20857
 
20756
20858
  /* A narrow viewport gets the single column back. Two columns of roughly
20757
20859
  150px each are worse than one readable one. */
20758
20860
  @media (max-width: 700px) {
20759
- .cn-form-dialog__form--two-column[data-v-67b5cfd5] {
20861
+ .cn-form-dialog__form--two-column[data-v-65a5754f] {
20760
20862
  display: block;
20761
20863
  }
20762
20864
  }
20763
- .cn-form-dialog__textarea-wrapper[data-v-67b5cfd5],
20764
- .cn-form-dialog__select-wrapper[data-v-67b5cfd5],
20765
- .cn-form-dialog__json-wrapper[data-v-67b5cfd5] {
20865
+ .cn-form-dialog__textarea-wrapper[data-v-65a5754f],
20866
+ .cn-form-dialog__select-wrapper[data-v-65a5754f],
20867
+ .cn-form-dialog__json-wrapper[data-v-65a5754f] {
20766
20868
  display: flex;
20767
20869
  flex-direction: column;
20768
20870
  gap: 4px;
20769
20871
  }
20770
- .cn-form-dialog__label[data-v-67b5cfd5] {
20872
+ .cn-form-dialog__label[data-v-65a5754f] {
20771
20873
  font-weight: 600;
20772
20874
  font-size: 0.9em;
20773
20875
  color: var(--color-main-text);
@@ -20775,10 +20877,10 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20775
20877
 
20776
20878
  /* Cross-app semantic reference (ADR-048) whose provider isn't installed —
20777
20879
  rendered disabled; the wrapper carries the mouse-over tooltip. */
20778
- .cn-form-dialog__semantic-unresolved[data-v-67b5cfd5] {
20880
+ .cn-form-dialog__semantic-unresolved[data-v-65a5754f] {
20779
20881
  cursor: not-allowed;
20780
20882
  }
20781
- .cn-form-dialog__textarea[data-v-67b5cfd5] {
20883
+ .cn-form-dialog__textarea[data-v-65a5754f] {
20782
20884
  width: 100%;
20783
20885
  min-height: 80px;
20784
20886
  padding: 8px;
@@ -20790,22 +20892,22 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20790
20892
  font-size: inherit;
20791
20893
  resize: vertical;
20792
20894
  }
20793
- .cn-form-dialog__textarea[data-v-67b5cfd5]:focus {
20895
+ .cn-form-dialog__textarea[data-v-65a5754f]:focus {
20794
20896
  border-color: var(--color-primary-element);
20795
20897
  outline: none;
20796
20898
  }
20797
- .cn-form-dialog__textarea[data-v-67b5cfd5]:disabled {
20899
+ .cn-form-dialog__textarea[data-v-65a5754f]:disabled {
20798
20900
  opacity: 0.5;
20799
20901
  cursor: not-allowed;
20800
20902
  }
20801
- .cn-form-dialog__helper[data-v-67b5cfd5] {
20903
+ .cn-form-dialog__helper[data-v-65a5754f] {
20802
20904
  font-size: 0.85em;
20803
20905
  color: var(--color-text-maxcontrast);
20804
20906
  }
20805
- .cn-form-dialog__helper--error[data-v-67b5cfd5] {
20907
+ .cn-form-dialog__helper--error[data-v-65a5754f] {
20806
20908
  color: var(--color-error);
20807
20909
  }
20808
- .cn-form-dialog__dynamic-loading[data-v-67b5cfd5] {
20910
+ .cn-form-dialog__dynamic-loading[data-v-65a5754f] {
20809
20911
  display: flex;
20810
20912
  align-items: center;
20811
20913
  gap: 8px;
@@ -21062,7 +21164,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21062
21164
  }
21063
21165
 
21064
21166
 
21065
- .cn-widget-wrapper[data-v-4f6c55f6] {
21167
+ .cn-widget-wrapper[data-v-8ce3140c] {
21066
21168
  position: relative;
21067
21169
  height: 100%;
21068
21170
  display: flex;
@@ -21076,13 +21178,13 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21076
21178
  }
21077
21179
 
21078
21180
  /* Headerless date chip — floated over the top-right of a flush card. */
21079
- .cn-widget-wrapper__floating-meta[data-v-4f6c55f6] {
21181
+ .cn-widget-wrapper__floating-meta[data-v-8ce3140c] {
21080
21182
  position: absolute;
21081
21183
  top: 8px;
21082
21184
  inset-inline-end: 10px;
21083
21185
  z-index: 2;
21084
21186
  }
21085
- .cn-widget-wrapper__content[data-v-4f6c55f6] {
21187
+ .cn-widget-wrapper__content[data-v-8ce3140c] {
21086
21188
  flex: 1;
21087
21189
  overflow: auto;
21088
21190
  min-height: 0;
@@ -21098,24 +21200,24 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21098
21200
  So it is structural instead. `:has()` keys on the table component's own root
21099
21201
  class, which means a table is flush by construction and no caller can
21100
21202
  reintroduce the gap by forgetting a prop. */
21101
- .cn-widget-wrapper__content[data-v-4f6c55f6]:has(> .cn-table-container),
21102
- .cn-widget-wrapper__content[data-v-4f6c55f6]:has(> .cn-widget-object-table) {
21203
+ .cn-widget-wrapper__content[data-v-8ce3140c]:has(> .cn-table-container),
21204
+ .cn-widget-wrapper__content[data-v-8ce3140c]:has(> .cn-widget-object-table) {
21103
21205
  padding: 0;
21104
21206
  }
21105
21207
 
21106
21208
  /* Keyboard focus ring for the now-focusable scrollable content region. */
21107
- .cn-widget-wrapper__content[data-v-4f6c55f6]:focus-visible {
21209
+ .cn-widget-wrapper__content[data-v-8ce3140c]:focus-visible {
21108
21210
  outline: 2px solid var(--color-primary-element);
21109
21211
  outline-offset: -2px;
21110
21212
  }
21111
- .cn-widget-wrapper--borderless[data-v-4f6c55f6] {
21213
+ .cn-widget-wrapper--borderless[data-v-8ce3140c] {
21112
21214
  border: none;
21113
21215
  background: transparent;
21114
21216
  }
21115
- .cn-widget-wrapper--borderless .cn-widget-wrapper__content[data-v-4f6c55f6] {
21217
+ .cn-widget-wrapper--borderless .cn-widget-wrapper__content[data-v-8ce3140c] {
21116
21218
  padding: 0;
21117
21219
  }
21118
- .cn-widget-wrapper--flush .cn-widget-wrapper__content[data-v-4f6c55f6] {
21220
+ .cn-widget-wrapper--flush .cn-widget-wrapper__content[data-v-8ce3140c] {
21119
21221
  padding: 0;
21120
21222
  }
21121
21223
 
@@ -21123,8 +21225,8 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21123
21225
  above. A dashboard renders every widget `flush`, and without this their
21124
21226
  fields touch the card's edges. Borderless and chromeless cards, and the
21125
21227
  Nextcloud dashboard variant, keep their own padding. */
21126
- .cn-widget-wrapper--flush:not(.cn-widget-wrapper--borderless, .cn-widget-wrapper--nc-dashboard) > .cn-widget-wrapper__content[data-v-4f6c55f6]:has(> .cn-form-widget),
21127
- .cn-widget-wrapper--flush:not(.cn-widget-wrapper--borderless, .cn-widget-wrapper--nc-dashboard) > .cn-widget-wrapper__content[data-v-4f6c55f6]:has(> .cn-kb-search-widget) {
21228
+ .cn-widget-wrapper--flush:not(.cn-widget-wrapper--borderless, .cn-widget-wrapper--nc-dashboard) > .cn-widget-wrapper__content[data-v-8ce3140c]:has(> .cn-form-widget),
21229
+ .cn-widget-wrapper--flush:not(.cn-widget-wrapper--borderless, .cn-widget-wrapper--nc-dashboard) > .cn-widget-wrapper__content[data-v-8ce3140c]:has(> .cn-kb-search-widget) {
21128
21230
  padding: 16px;
21129
21231
  }
21130
21232
 
@@ -21135,7 +21237,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21135
21237
  a square panel, which is the last visible piece of a card that is supposed
21136
21238
  to be absent. `CnDetailCard.cn-detail-card--chromeless` zeroes the same
21137
21239
  thing for the same reason. */
21138
- .cn-widget-wrapper--chromeless[data-v-4f6c55f6] {
21240
+ .cn-widget-wrapper--chromeless[data-v-8ce3140c] {
21139
21241
  border-radius: 0;
21140
21242
  }
21141
21243
 
@@ -21147,7 +21249,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21147
21249
  * so users can override any token. Combined selector raises specificity above
21148
21250
  * the base `.cn-widget-wrapper` rules it supersedes.
21149
21251
  */
21150
- .cn-widget-wrapper__header[data-v-4f6c55f6] {
21252
+ .cn-widget-wrapper__header[data-v-8ce3140c] {
21151
21253
  display: flex;
21152
21254
  align-items: center;
21153
21255
  justify-content: space-between;
@@ -21163,7 +21265,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21163
21265
  /* Actions with no title beside them. `header-left` is not rendered at all in
21164
21266
  this mode, and the header is `space-between`, so a single child would sit
21165
21267
  flush LEFT where every other surface puts its actions on the right. */
21166
- .cn-widget-wrapper__header--actions-only[data-v-4f6c55f6] {
21268
+ .cn-widget-wrapper__header--actions-only[data-v-8ce3140c] {
21167
21269
  justify-content: flex-end;
21168
21270
  }
21169
21271
 
@@ -21179,11 +21281,11 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21179
21281
  no-descending-specificity asks for. The cascade did not need it (this
21180
21282
  selector is more specific either way), a reader does: an override written
21181
21283
  above the thing it overrides has to be read twice. */
21182
- .cn-widget-wrapper--chromeless .cn-widget-wrapper__header[data-v-4f6c55f6] {
21284
+ .cn-widget-wrapper--chromeless .cn-widget-wrapper__header[data-v-8ce3140c] {
21183
21285
  border-bottom: none;
21184
21286
  padding-inline: 0;
21185
21287
  }
21186
- .cn-widget-wrapper__header-left[data-v-4f6c55f6] {
21288
+ .cn-widget-wrapper__header-left[data-v-8ce3140c] {
21187
21289
  display: flex;
21188
21290
  align-items: center;
21189
21291
  gap: 8px;
@@ -21192,19 +21294,19 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21192
21294
  of centering between icon and actions (header is space-between). */
21193
21295
  flex: 1 1 auto;
21194
21296
  }
21195
- .cn-widget-wrapper__icon[data-v-4f6c55f6] {
21297
+ .cn-widget-wrapper__icon[data-v-8ce3140c] {
21196
21298
  width: 24px;
21197
21299
  height: 24px;
21198
21300
  flex-shrink: 0;
21199
21301
  color: var(--cn-widget-icon-color, var(--color-primary-element));
21200
21302
  }
21201
- .cn-widget-wrapper__title-stack[data-v-4f6c55f6] {
21303
+ .cn-widget-wrapper__title-stack[data-v-8ce3140c] {
21202
21304
  display: flex;
21203
21305
  flex-direction: column;
21204
21306
  gap: 2px;
21205
21307
  min-width: 0;
21206
21308
  }
21207
- .cn-widget-wrapper__eyebrow[data-v-4f6c55f6] {
21309
+ .cn-widget-wrapper__eyebrow[data-v-8ce3140c] {
21208
21310
  font-size: 13px;
21209
21311
  line-height: 1.3;
21210
21312
  color: var(--color-text-maxcontrast);
@@ -21212,7 +21314,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21212
21314
  overflow: hidden;
21213
21315
  text-overflow: ellipsis;
21214
21316
  }
21215
- .cn-widget-wrapper__title[data-v-4f6c55f6] {
21317
+ .cn-widget-wrapper__title[data-v-8ce3140c] {
21216
21318
  font-weight: 600;
21217
21319
  font-size: 14px;
21218
21320
  margin: 0;
@@ -21220,34 +21322,34 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21220
21322
  overflow: hidden;
21221
21323
  text-overflow: ellipsis;
21222
21324
  }
21223
- .cn-widget-wrapper.cn-widget-wrapper--nc-dashboard[data-v-4f6c55f6] {
21325
+ .cn-widget-wrapper.cn-widget-wrapper--nc-dashboard[data-v-8ce3140c] {
21224
21326
  background: var(--color-main-background-blur, var(--color-main-background));
21225
21327
  -webkit-backdrop-filter: var(--filter-background-blur, none);
21226
21328
  backdrop-filter: var(--filter-background-blur, none);
21227
21329
  border: none;
21228
21330
  border-radius: var(--border-radius-container-large, 16px);
21229
21331
  }
21230
- .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__header[data-v-4f6c55f6] {
21332
+ .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__header[data-v-8ce3140c] {
21231
21333
  padding: 16px;
21232
21334
  border-bottom: none;
21233
21335
  }
21234
- .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__header-left[data-v-4f6c55f6] {
21336
+ .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__header-left[data-v-8ce3140c] {
21235
21337
  gap: 16px;
21236
21338
  }
21237
- .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__icon[data-v-4f6c55f6] {
21339
+ .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__icon[data-v-8ce3140c] {
21238
21340
  width: 32px;
21239
21341
  height: 32px;
21240
21342
  background-size: 32px;
21241
21343
  }
21242
- .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__title[data-v-4f6c55f6] {
21344
+ .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__title[data-v-8ce3140c] {
21243
21345
  font-size: 20px;
21244
21346
  font-weight: 700;
21245
21347
  line-height: 24px;
21246
21348
  }
21247
- .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__content[data-v-4f6c55f6] {
21349
+ .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__content[data-v-8ce3140c] {
21248
21350
  padding: 0 16px 16px;
21249
21351
  }
21250
- .cn-widget-wrapper__title-meta[data-v-4f6c55f6] {
21352
+ .cn-widget-wrapper__title-meta[data-v-8ce3140c] {
21251
21353
  display: flex;
21252
21354
  align-items: center;
21253
21355
  gap: 4px;
@@ -21256,7 +21358,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21256
21358
  white-space: nowrap;
21257
21359
  flex-shrink: 0;
21258
21360
  }
21259
- .cn-widget-wrapper__actions[data-v-4f6c55f6] {
21361
+ .cn-widget-wrapper__actions[data-v-8ce3140c] {
21260
21362
  display: flex;
21261
21363
  gap: 4px;
21262
21364
  flex-shrink: 0;
@@ -21264,7 +21366,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21264
21366
 
21265
21367
  /* The header's text link (`headerLink`). Theme hooks: --cn-widget-header-link-size
21266
21368
  and --cn-widget-header-link-weight. */
21267
- .cn-widget-wrapper__header-link[data-v-4f6c55f6] {
21369
+ .cn-widget-wrapper__header-link[data-v-8ce3140c] {
21268
21370
  align-self: center;
21269
21371
  padding: 0 calc(1 * var(--default-grid-baseline));
21270
21372
  color: var(--color-primary-element);
@@ -21273,11 +21375,11 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21273
21375
  text-decoration: none;
21274
21376
  white-space: nowrap;
21275
21377
  }
21276
- .cn-widget-wrapper__header-link[data-v-4f6c55f6]:hover,
21277
- .cn-widget-wrapper__header-link[data-v-4f6c55f6]:focus-visible {
21378
+ .cn-widget-wrapper__header-link[data-v-8ce3140c]:hover,
21379
+ .cn-widget-wrapper__header-link[data-v-8ce3140c]:focus-visible {
21278
21380
  text-decoration: underline;
21279
21381
  }
21280
- .cn-widget-wrapper__header-link[data-v-4f6c55f6]:focus-visible {
21382
+ .cn-widget-wrapper__header-link[data-v-8ce3140c]:focus-visible {
21281
21383
  outline: 2px solid var(--color-primary-element);
21282
21384
  outline-offset: 2px;
21283
21385
  border-radius: var(--border-radius-small, 4px);
@@ -21288,7 +21390,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21288
21390
  wrapper is ever rendered without it. Material-design-icon components paint
21289
21391
  with `fill: currentColor`, so this reaches them; the :deep rule below makes
21290
21392
  it reach a raw <svg> in the slot too. */
21291
- .cn-widget-wrapper__title-icon[data-v-4f6c55f6] {
21393
+ .cn-widget-wrapper__title-icon[data-v-8ce3140c] {
21292
21394
  display: flex;
21293
21395
  align-items: center;
21294
21396
  flex-shrink: 0;
@@ -21308,17 +21410,17 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21308
21410
 
21309
21411
  /* Right-positioned title icons sit AFTER the actions, so the margin belongs on
21310
21412
  the other side or it pushes the icon off the header's right edge. */
21311
- .cn-widget-wrapper__title-icon[data-v-4f6c55f6]:last-child {
21413
+ .cn-widget-wrapper__title-icon[data-v-8ce3140c]:last-child {
21312
21414
  margin-inline-end: 0;
21313
21415
  margin-inline-start: 8px;
21314
21416
  }
21315
21417
 
21316
21418
  /* Material-design-icon components paint with `fill: currentColor`, so the
21317
21419
  colour above reaches them; this makes it reach a raw <svg> in the slot too. */
21318
- .cn-widget-wrapper__title-icon[data-v-4f6c55f6] svg {
21420
+ .cn-widget-wrapper__title-icon[data-v-8ce3140c] svg {
21319
21421
  fill: currentcolor;
21320
21422
  }
21321
- .cn-widget-wrapper__footer[data-v-4f6c55f6] {
21423
+ .cn-widget-wrapper__footer[data-v-8ce3140c] {
21322
21424
  display: flex;
21323
21425
  justify-content: flex-end;
21324
21426
  gap: 8px;
@@ -21326,12 +21428,12 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21326
21428
  border-top: 1px solid var(--color-border);
21327
21429
  flex-shrink: 0;
21328
21430
  }
21329
- .cn-widget-wrapper__footer-link[data-v-4f6c55f6] {
21431
+ .cn-widget-wrapper__footer-link[data-v-8ce3140c] {
21330
21432
  font-size: 13px;
21331
21433
  color: var(--color-primary-element);
21332
21434
  text-decoration: none;
21333
21435
  }
21334
- .cn-widget-wrapper__footer-link[data-v-4f6c55f6]:hover {
21436
+ .cn-widget-wrapper__footer-link[data-v-8ce3140c]:hover {
21335
21437
  text-decoration: underline;
21336
21438
  }
21337
21439
 
@@ -24381,12 +24483,12 @@ to { background-position: -200% 0;
24381
24483
  }
24382
24484
 
24383
24485
 
24384
- .cn-text-widget[data-v-2d4184ef] {
24486
+ .cn-text-widget[data-v-f00a6820] {
24385
24487
  width: 100%;
24386
24488
  height: 100%;
24387
24489
  }
24388
- .cn-text-widget__content[data-v-2d4184ef],
24389
- .cn-text-widget__placeholder[data-v-2d4184ef] {
24490
+ .cn-text-widget__content[data-v-f00a6820],
24491
+ .cn-text-widget__placeholder[data-v-f00a6820] {
24390
24492
  /* Safety net — ensures long URLs / words inside the sanitised HTML wrap
24391
24493
  rather than overflowing horizontally. */
24392
24494
  overflow-wrap: break-word;
@@ -24397,13 +24499,13 @@ to { background-position: -200% 0;
24397
24499
  server CSS styles bare <em> as muted (var(--color-text-maxcontrast)) and can
24398
24500
  drop the italic, so `_x_` / `**_x_**` looked greyed-out and non-italic. Force
24399
24501
  italic <em> / bold <strong> that inherit the widget's own text colour. */
24400
- .cn-text-widget[data-v-2d4184ef] em,
24401
- .cn-text-widget[data-v-2d4184ef] i {
24502
+ .cn-text-widget[data-v-f00a6820] em,
24503
+ .cn-text-widget[data-v-f00a6820] i {
24402
24504
  font-style: italic;
24403
24505
  color: inherit;
24404
24506
  }
24405
- .cn-text-widget[data-v-2d4184ef] strong,
24406
- .cn-text-widget[data-v-2d4184ef] b {
24507
+ .cn-text-widget[data-v-f00a6820] strong,
24508
+ .cn-text-widget[data-v-f00a6820] b {
24407
24509
  font-weight: bold;
24408
24510
  color: inherit;
24409
24511
  }
@@ -24411,24 +24513,24 @@ to { background-position: -200% 0;
24411
24513
  /* Nextcloud's server CSS strips list markers/indent (`list-style: none`,
24412
24514
  no padding), so rendered `<ul>`/`<ol>` looked like plain text. Restore
24413
24515
  bullets/numbers and indentation, including nested levels. */
24414
- .cn-text-widget[data-v-2d4184ef] ul,
24415
- .cn-text-widget[data-v-2d4184ef] ol {
24516
+ .cn-text-widget[data-v-f00a6820] ul,
24517
+ .cn-text-widget[data-v-f00a6820] ol {
24416
24518
  margin: 4px 0;
24417
24519
  padding-left: 1.5em;
24418
24520
  }
24419
- .cn-text-widget[data-v-2d4184ef] ul {
24521
+ .cn-text-widget[data-v-f00a6820] ul {
24420
24522
  list-style: disc outside;
24421
24523
  }
24422
- .cn-text-widget[data-v-2d4184ef] ol {
24524
+ .cn-text-widget[data-v-f00a6820] ol {
24423
24525
  list-style: decimal outside;
24424
24526
  }
24425
- .cn-text-widget[data-v-2d4184ef] ul ul {
24527
+ .cn-text-widget[data-v-f00a6820] ul ul {
24426
24528
  list-style-type: circle;
24427
24529
  }
24428
- .cn-text-widget[data-v-2d4184ef] ul ul ul {
24530
+ .cn-text-widget[data-v-f00a6820] ul ul ul {
24429
24531
  list-style-type: square;
24430
24532
  }
24431
- .cn-text-widget[data-v-2d4184ef] li {
24533
+ .cn-text-widget[data-v-f00a6820] li {
24432
24534
  display: list-item;
24433
24535
  }
24434
24536
 
@@ -24436,84 +24538,97 @@ to { background-position: -200% 0;
24436
24538
  back to the ~14px body size while h2 stayed 1.8em), leaving them oddly
24437
24539
  scaled. Apply a consistent em-based scale that grows with the widget's own
24438
24540
  font size. */
24439
- .cn-text-widget[data-v-2d4184ef] h1 {
24541
+ .cn-text-widget[data-v-f00a6820] h1 {
24440
24542
  font-size: 2em;
24441
24543
  }
24442
- .cn-text-widget[data-v-2d4184ef] h2 {
24544
+ .cn-text-widget[data-v-f00a6820] h2 {
24443
24545
  font-size: 1.5em;
24444
24546
  }
24445
- .cn-text-widget[data-v-2d4184ef] h3 {
24547
+ .cn-text-widget[data-v-f00a6820] h3 {
24446
24548
  font-size: 1.25em;
24447
24549
  }
24448
- .cn-text-widget[data-v-2d4184ef] h4 {
24550
+ .cn-text-widget[data-v-f00a6820] h4 {
24449
24551
  font-size: 1.1em;
24450
24552
  }
24451
- .cn-text-widget[data-v-2d4184ef] h5 {
24553
+ .cn-text-widget[data-v-f00a6820] h5 {
24452
24554
  font-size: 1em;
24453
24555
  }
24454
- .cn-text-widget[data-v-2d4184ef] h6 {
24556
+ .cn-text-widget[data-v-f00a6820] h6 {
24455
24557
  font-size: 0.85em;
24456
24558
  }
24457
- .cn-text-widget__content--markdown[data-v-2d4184ef] h1,
24458
- .cn-text-widget__content--markdown[data-v-2d4184ef] h2,
24459
- .cn-text-widget__content--markdown[data-v-2d4184ef] h3,
24460
- .cn-text-widget__content--markdown[data-v-2d4184ef] h4,
24461
- .cn-text-widget__content--markdown[data-v-2d4184ef] h5,
24462
- .cn-text-widget__content--markdown[data-v-2d4184ef] h6 {
24559
+ .cn-text-widget__content--markdown[data-v-f00a6820] h1,
24560
+ .cn-text-widget__content--markdown[data-v-f00a6820] h2,
24561
+ .cn-text-widget__content--markdown[data-v-f00a6820] h3,
24562
+ .cn-text-widget__content--markdown[data-v-f00a6820] h4,
24563
+ .cn-text-widget__content--markdown[data-v-f00a6820] h5,
24564
+ .cn-text-widget__content--markdown[data-v-f00a6820] h6 {
24463
24565
  margin: 8px 0 4px;
24464
24566
  font-weight: 600;
24465
24567
  line-height: 1.3;
24466
24568
  }
24467
- .cn-text-widget__content--markdown[data-v-2d4184ef] p,
24468
- .cn-text-widget__content--markdown[data-v-2d4184ef] ul,
24469
- .cn-text-widget__content--markdown[data-v-2d4184ef] ol,
24470
- .cn-text-widget__content--markdown[data-v-2d4184ef] blockquote {
24569
+ .cn-text-widget__content--markdown[data-v-f00a6820] p,
24570
+ .cn-text-widget__content--markdown[data-v-f00a6820] ul,
24571
+ .cn-text-widget__content--markdown[data-v-f00a6820] ol,
24572
+ .cn-text-widget__content--markdown[data-v-f00a6820] blockquote {
24471
24573
  margin: 4px 0;
24472
24574
  }
24473
- .cn-text-widget__content--markdown[data-v-2d4184ef] code {
24575
+ .cn-text-widget__content--markdown[data-v-f00a6820] code {
24474
24576
  padding: 1px 4px;
24475
24577
  border-radius: 3px;
24476
24578
  background: var(--color-background-hover);
24477
24579
  font-family: var(--font-monospace, monospace);
24478
24580
  font-size: 0.95em;
24479
24581
  }
24480
- .cn-text-widget__content--markdown[data-v-2d4184ef] pre {
24582
+ .cn-text-widget__content--markdown[data-v-f00a6820] pre {
24481
24583
  padding: 8px;
24482
24584
  border-radius: var(--border-radius);
24483
24585
  background: var(--color-background-hover);
24484
24586
  overflow: auto;
24485
24587
  }
24486
- .cn-text-widget__content--markdown[data-v-2d4184ef] pre code {
24588
+ .cn-text-widget__content--markdown[data-v-f00a6820] pre code {
24487
24589
  padding: 0;
24488
24590
  background: transparent;
24489
24591
  }
24490
- .cn-text-widget__content--markdown[data-v-2d4184ef] blockquote {
24592
+ .cn-text-widget__content--markdown[data-v-f00a6820] blockquote {
24491
24593
  padding-left: 8px;
24492
24594
  border-left: 3px solid var(--color-border);
24493
24595
  color: var(--color-text-maxcontrast);
24494
24596
  }
24495
- .cn-text-widget__content--markdown[data-v-2d4184ef] table {
24597
+ .cn-text-widget__content--markdown[data-v-f00a6820] table {
24496
24598
  border-collapse: collapse;
24497
24599
  margin: 4px 0;
24498
24600
  }
24499
- .cn-text-widget__content--markdown[data-v-2d4184ef] th,
24500
- .cn-text-widget__content--markdown[data-v-2d4184ef] td {
24601
+ .cn-text-widget__content--markdown[data-v-f00a6820] th,
24602
+ .cn-text-widget__content--markdown[data-v-f00a6820] td {
24501
24603
  padding: 4px 8px;
24502
24604
  border: 1px solid var(--color-border);
24503
24605
  }
24504
- .cn-text-widget__table[data-v-2d4184ef] {
24606
+ .cn-text-widget__table[data-v-f00a6820] {
24505
24607
  border-collapse: collapse;
24506
24608
  width: 100%;
24507
24609
  }
24508
- .cn-text-widget__table th[data-v-2d4184ef],
24509
- .cn-text-widget__table td[data-v-2d4184ef] {
24610
+ .cn-text-widget__table th[data-v-f00a6820],
24611
+ .cn-text-widget__table td[data-v-f00a6820] {
24510
24612
  overflow-wrap: break-word;
24511
24613
  vertical-align: top;
24512
24614
  }
24513
- .cn-text-widget__cell-placeholder[data-v-2d4184ef] {
24615
+ .cn-text-widget__cell-placeholder[data-v-f00a6820] {
24514
24616
  color: var(--color-text-maxcontrast);
24515
24617
  font-style: italic;
24516
24618
  }
24619
+ .cn-text-widget__link[data-v-f00a6820] {
24620
+ display: inline-flex;
24621
+ align-items: center;
24622
+ gap: 2px;
24623
+ font-size: 14px;
24624
+ font-weight: 600;
24625
+ color: var(--color-primary-element);
24626
+ text-decoration: none;
24627
+ }
24628
+ .cn-text-widget__link[data-v-f00a6820]:hover,
24629
+ .cn-text-widget__link[data-v-f00a6820]:focus-visible {
24630
+ text-decoration: underline;
24631
+ }
24517
24632
 
24518
24633
 
24519
24634
  .cn-timeline-widget[data-v-091aa98d] {
@@ -25432,7 +25547,7 @@ button.cn-stepper__step[data-v-776581d4] {
25432
25547
 
25433
25548
 
25434
25549
  /* A stack (`widgetIds`): the panel's widget, then cards 20px apart. */
25435
- .cn-tabs-widget__stack[data-v-f554c922] {
25550
+ .cn-tabs-widget__stack[data-v-febbfc68] {
25436
25551
  display: flex;
25437
25552
  flex-direction: column;
25438
25553
  gap: 20px;
@@ -25441,19 +25556,19 @@ button.cn-stepper__step[data-v-776581d4] {
25441
25556
  /* A gridded stack (`columns` / `layout` on the tab): 12 columns, widgets wrap
25442
25557
  onto the next row, a row's cards as tall as the tallest. Narrow, it is the
25443
25558
  plain stack again. */
25444
- .cn-tabs-widget__stack--grid[data-v-f554c922] {
25559
+ .cn-tabs-widget__stack--grid[data-v-febbfc68] {
25445
25560
  display: grid;
25446
25561
  grid-template-columns: repeat(12, minmax(0, 1fr));
25447
25562
  align-items: stretch;
25448
25563
  }
25449
- .cn-tabs-widget__stack--grid[data-v-f554c922] > * {
25564
+ .cn-tabs-widget__stack--grid[data-v-febbfc68] > * {
25450
25565
  min-width: 0;
25451
25566
  }
25452
25567
  @media (max-width: 700px) {
25453
- .cn-tabs-widget__stack--grid[data-v-f554c922] {
25568
+ .cn-tabs-widget__stack--grid[data-v-febbfc68] {
25454
25569
  grid-template-columns: minmax(0, 1fr);
25455
25570
  }
25456
- .cn-tabs-widget__stack--grid[data-v-f554c922] > * {
25571
+ .cn-tabs-widget__stack--grid[data-v-febbfc68] > * {
25457
25572
  grid-column: auto !important;
25458
25573
  }
25459
25574
  }
@@ -25487,7 +25602,7 @@ button.cn-stepper__step[data-v-776581d4] {
25487
25602
  `!important` or on load order this library does not control. The same
25488
25603
  technique, for the same reason, is used on `.cn-tabs__nav .cn-tabs__nav-item`
25489
25604
  in CnTabs to beat Nextcloud's own button margin. */
25490
- .cn-tabs-widget.cn-tabs-widget[data-v-f554c922] {
25605
+ .cn-tabs-widget.cn-tabs-widget[data-v-febbfc68] {
25491
25606
  background-color: transparent;
25492
25607
  border: 0;
25493
25608
  border-radius: 0;
@@ -25511,12 +25626,12 @@ button.cn-stepper__step[data-v-776581d4] {
25511
25626
  below it: the rule ran straight on to the widget's edge and read as a
25512
25627
  border sticking out past a rounded corner (Ruben, 2026-09-13). Ending it
25513
25628
  where the curve begins makes the rule and the curve one continuous edge. */
25514
- .cn-tabs-widget__tabs[data-v-f554c922] .cn-tabs__bar {
25629
+ .cn-tabs-widget__tabs[data-v-febbfc68] .cn-tabs__bar {
25515
25630
  border-bottom: none;
25516
25631
  padding: 0;
25517
25632
  position: relative;
25518
25633
  }
25519
- .cn-tabs-widget__tabs[data-v-f554c922] .cn-tabs__bar::after {
25634
+ .cn-tabs-widget__tabs[data-v-febbfc68] .cn-tabs__bar::after {
25520
25635
  border-bottom: 1px solid var(--color-border);
25521
25636
  content: '';
25522
25637
  inset-block-end: 0;
@@ -25529,11 +25644,11 @@ button.cn-stepper__step[data-v-776581d4] {
25529
25644
  own background-coloured bottom edge, which only works if it paints ABOVE the
25530
25645
  pseudo-element: a positioned pseudo-element otherwise paints over every
25531
25646
  in-flow sibling, rule included. */
25532
- .cn-tabs-widget__tabs[data-v-f554c922] .cn-tabs__nav-item--active {
25647
+ .cn-tabs-widget__tabs[data-v-febbfc68] .cn-tabs__nav-item--active {
25533
25648
  position: relative;
25534
25649
  z-index: 1;
25535
25650
  }
25536
- .cn-tabs-widget__tabs[data-v-f554c922] {
25651
+ .cn-tabs-widget__tabs[data-v-febbfc68] {
25537
25652
  display: flex;
25538
25653
  flex-direction: column;
25539
25654
  /* Grow to the widget's height, so the panel fills the grid cell the
@@ -25551,7 +25666,7 @@ button.cn-stepper__step[data-v-776581d4] {
25551
25666
  the open tab, but padding sits inside the painted box — only a margin would
25552
25667
  have opened that gap, and a zero top put every panel's content against the
25553
25668
  strip. */
25554
- .cn-tabs-widget__tabs[data-v-f554c922] .cn-tabs__content {
25669
+ .cn-tabs-widget__tabs[data-v-febbfc68] .cn-tabs__content {
25555
25670
  background-color: var(--color-main-background);
25556
25671
  /* Three sides only: the bar's rule (redrawn above, stopping at the corner)
25557
25672
  is this sheet's top edge, and the open tab erases the slice of it
@@ -25571,7 +25686,7 @@ button.cn-stepper__step[data-v-776581d4] {
25571
25686
  overflow: auto;
25572
25687
  padding: 12px;
25573
25688
  }
25574
- .cn-tabs-widget__tabs[data-v-f554c922] .cn-tab {
25689
+ .cn-tabs-widget__tabs[data-v-febbfc68] .cn-tab {
25575
25690
  height: 100%;
25576
25691
  }
25577
25692
 
@@ -25579,13 +25694,13 @@ button.cn-stepper__step[data-v-776581d4] {
25579
25694
  (margin 0 -16px -16px). The panel of a tab pads 12px, so on a tab that
25580
25695
  holds the list directly the footer stuck out 4px on the right and at the
25581
25696
  bottom and made the panel scroll. It bleeds exactly the panel's padding. */
25582
- .cn-tabs-widget__tabs[data-v-f554c922] .cn-tabs__content > .cn-tab > .cn-detail-widget-host--bare .cn-object-list-widget__add {
25697
+ .cn-tabs-widget__tabs[data-v-febbfc68] .cn-tabs__content > .cn-tab > .cn-detail-widget-host--bare .cn-object-list-widget__add {
25583
25698
  margin: auto -12px -12px;
25584
25699
  }
25585
25700
 
25586
25701
  /* The open panel's header link, beside the strip. Same look and theme hooks
25587
25702
  as a card header link (CnWidgetWrapper). */
25588
- .cn-tabs-widget__header-link[data-v-f554c922] {
25703
+ .cn-tabs-widget__header-link[data-v-febbfc68] {
25589
25704
  align-self: center;
25590
25705
  padding: 0 calc(1 * var(--default-grid-baseline));
25591
25706
  color: var(--color-primary-element);
@@ -25594,21 +25709,21 @@ button.cn-stepper__step[data-v-776581d4] {
25594
25709
  text-decoration: none;
25595
25710
  white-space: nowrap;
25596
25711
  }
25597
- .cn-tabs-widget__header-link[data-v-f554c922]:hover,
25598
- .cn-tabs-widget__header-link[data-v-f554c922]:focus-visible {
25712
+ .cn-tabs-widget__header-link[data-v-febbfc68]:hover,
25713
+ .cn-tabs-widget__header-link[data-v-febbfc68]:focus-visible {
25599
25714
  text-decoration: underline;
25600
25715
  }
25601
- .cn-tabs-widget__header-link[data-v-f554c922]:focus-visible {
25716
+ .cn-tabs-widget__header-link[data-v-febbfc68]:focus-visible {
25602
25717
  outline: 2px solid var(--color-primary-element);
25603
25718
  outline-offset: 2px;
25604
25719
  border-radius: var(--border-radius-small, 4px);
25605
25720
  }
25606
- .cn-tabs-widget__title[data-v-f554c922] {
25721
+ .cn-tabs-widget__title[data-v-febbfc68] {
25607
25722
  align-items: center;
25608
25723
  display: inline-flex;
25609
25724
  gap: 6px;
25610
25725
  }
25611
- .cn-tabs-widget__title-icon[data-v-f554c922] {
25726
+ .cn-tabs-widget__title-icon[data-v-febbfc68] {
25612
25727
  flex: 0 0 auto;
25613
25728
  }
25614
25729
 
@@ -28635,7 +28750,7 @@ tr.file-picker__row td.row-name[data-v-1f96131b] {
28635
28750
  }
28636
28751
 
28637
28752
 
28638
- .cn-nc-widget-widget[data-v-04be70f3] {
28753
+ .cn-nc-widget-widget[data-v-f553a198] {
28639
28754
  display: flex;
28640
28755
  flex-direction: column;
28641
28756
  width: 100%;
@@ -28651,19 +28766,19 @@ tr.file-picker__row td.row-name[data-v-1f96131b] {
28651
28766
  * bottom, flush to the header on top). Same design tokens as core; overridable
28652
28767
  * via the host's CnWidgetWrapper styleConfig / nldesign.
28653
28768
  */
28654
- .cn-nc-widget-widget__header[data-v-04be70f3] {
28769
+ .cn-nc-widget-widget__header[data-v-f553a198] {
28655
28770
  display: flex;
28656
28771
  align-items: center;
28657
28772
  gap: 16px;
28658
28773
  padding: 16px;
28659
28774
  font-weight: 700;
28660
28775
  }
28661
- .cn-nc-widget-widget__header-icon[data-v-04be70f3] {
28776
+ .cn-nc-widget-widget__header-icon[data-v-f553a198] {
28662
28777
  width: 32px;
28663
28778
  height: 32px;
28664
28779
  flex: 0 0 auto;
28665
28780
  }
28666
- .cn-nc-widget-widget__header-title[data-v-04be70f3] {
28781
+ .cn-nc-widget-widget__header-title[data-v-f553a198] {
28667
28782
  flex: 1;
28668
28783
  font-size: 20px;
28669
28784
  font-weight: 700;
@@ -28672,18 +28787,18 @@ tr.file-picker__row td.row-name[data-v-1f96131b] {
28672
28787
  text-overflow: ellipsis;
28673
28788
  white-space: nowrap;
28674
28789
  }
28675
- .cn-nc-widget-widget__show-all[data-v-04be70f3] {
28790
+ .cn-nc-widget-widget__show-all[data-v-f553a198] {
28676
28791
  align-self: flex-start;
28677
28792
  padding: 8px 0 0;
28678
28793
  color: var(--color-primary-element);
28679
28794
  font-weight: 600;
28680
28795
  text-decoration: none;
28681
28796
  }
28682
- .cn-nc-widget-widget__show-all[data-v-04be70f3]:hover,
28683
- .cn-nc-widget-widget__show-all[data-v-04be70f3]:focus-visible {
28797
+ .cn-nc-widget-widget__show-all[data-v-f553a198]:hover,
28798
+ .cn-nc-widget-widget__show-all[data-v-f553a198]:focus-visible {
28684
28799
  text-decoration: underline;
28685
28800
  }
28686
- .cn-nc-widget-widget__native[data-v-04be70f3] {
28801
+ .cn-nc-widget-widget__native[data-v-f553a198] {
28687
28802
  flex: 1;
28688
28803
  overflow: auto;
28689
28804
  padding: 0 16px 16px;
@@ -28717,7 +28832,7 @@ tr.file-picker__row td.row-name[data-v-1f96131b] {
28717
28832
  * still claims that much room regardless of the grid track size, so the
28718
28833
  * track itself must not go below it.
28719
28834
  */
28720
- .cn-nc-widget-widget--horizontal[data-v-04be70f3] .dashboard-widget > ul {
28835
+ .cn-nc-widget-widget--horizontal[data-v-f553a198] .dashboard-widget > ul {
28721
28836
  display: grid;
28722
28837
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
28723
28838
  gap: 8px;
@@ -28725,33 +28840,33 @@ tr.file-picker__row td.row-name[data-v-1f96131b] {
28725
28840
  margin: 0;
28726
28841
  padding: 0;
28727
28842
  }
28728
- .cn-nc-widget-widget--horizontal[data-v-04be70f3] .dashboard-widget > ul > li {
28843
+ .cn-nc-widget-widget--horizontal[data-v-f553a198] .dashboard-widget > ul > li {
28729
28844
  width: auto;
28730
28845
  min-width: 0;
28731
28846
  }
28732
- .cn-nc-widget-widget--horizontal[data-v-04be70f3] .item-list__entry {
28847
+ .cn-nc-widget-widget--horizontal[data-v-f553a198] .item-list__entry {
28733
28848
  height: 100%;
28734
28849
  margin: 0;
28735
28850
  border: 1px solid var(--color-border);
28736
28851
  border-radius: var(--border-radius-large);
28737
28852
  }
28738
- .cn-nc-widget-widget__body[data-v-04be70f3] {
28853
+ .cn-nc-widget-widget__body[data-v-f553a198] {
28739
28854
  flex: 1;
28740
28855
  overflow: auto;
28741
28856
  padding: 0 16px 16px;
28742
28857
  }
28743
- .cn-nc-widget-widget__body--vertical[data-v-04be70f3] {
28858
+ .cn-nc-widget-widget__body--vertical[data-v-f553a198] {
28744
28859
  display: flex;
28745
28860
  flex-direction: column;
28746
28861
  gap: 8px;
28747
28862
  }
28748
- .cn-nc-widget-widget__body--horizontal[data-v-04be70f3] {
28863
+ .cn-nc-widget-widget__body--horizontal[data-v-f553a198] {
28749
28864
  display: flex;
28750
28865
  flex-direction: row;
28751
28866
  flex-wrap: wrap;
28752
28867
  gap: 12px;
28753
28868
  }
28754
- .cn-nc-widget-widget__state[data-v-04be70f3] {
28869
+ .cn-nc-widget-widget__state[data-v-f553a198] {
28755
28870
  display: flex;
28756
28871
  align-items: center;
28757
28872
  justify-content: center;
@@ -28760,59 +28875,59 @@ tr.file-picker__row td.row-name[data-v-1f96131b] {
28760
28875
  color: var(--color-text-maxcontrast);
28761
28876
  font-style: italic;
28762
28877
  }
28763
- .cn-nc-widget-widget__item[data-v-04be70f3] {
28878
+ .cn-nc-widget-widget__item[data-v-f553a198] {
28764
28879
  display: flex;
28765
28880
  text-decoration: none;
28766
28881
  color: var(--color-main-text);
28767
28882
  border-radius: var(--border-radius);
28768
28883
  padding: 4px;
28769
28884
  }
28770
- .cn-nc-widget-widget__item[data-v-04be70f3]:hover {
28885
+ .cn-nc-widget-widget__item[data-v-f553a198]:hover {
28771
28886
  background-color: var(--color-background-hover);
28772
28887
  }
28773
- .cn-nc-widget-widget__item--vertical[data-v-04be70f3] {
28888
+ .cn-nc-widget-widget__item--vertical[data-v-f553a198] {
28774
28889
  flex-direction: row;
28775
28890
  align-items: center;
28776
28891
  gap: 8px;
28777
28892
  }
28778
- .cn-nc-widget-widget__item--horizontal[data-v-04be70f3] {
28893
+ .cn-nc-widget-widget__item--horizontal[data-v-f553a198] {
28779
28894
  flex-direction: column;
28780
28895
  align-items: center;
28781
28896
  width: 120px;
28782
28897
  text-align: center;
28783
28898
  }
28784
- .cn-nc-widget-widget__item-icon-wrap[data-v-04be70f3] {
28899
+ .cn-nc-widget-widget__item-icon-wrap[data-v-f553a198] {
28785
28900
  width: 32px;
28786
28901
  height: 32px;
28787
28902
  flex: 0 0 32px;
28788
28903
  position: relative;
28789
28904
  }
28790
- .cn-nc-widget-widget__item-icon[data-v-04be70f3] {
28905
+ .cn-nc-widget-widget__item-icon[data-v-f553a198] {
28791
28906
  width: 32px;
28792
28907
  height: 32px;
28793
28908
  object-fit: cover;
28794
28909
  border-radius: 50%;
28795
28910
  }
28796
- .cn-nc-widget-widget__item-overlay[data-v-04be70f3] {
28911
+ .cn-nc-widget-widget__item-overlay[data-v-f553a198] {
28797
28912
  position: absolute;
28798
28913
  right: -2px;
28799
28914
  bottom: -2px;
28800
28915
  width: 14px;
28801
28916
  height: 14px;
28802
28917
  }
28803
- .cn-nc-widget-widget__item-text[data-v-04be70f3] {
28918
+ .cn-nc-widget-widget__item-text[data-v-f553a198] {
28804
28919
  display: flex;
28805
28920
  flex-direction: column;
28806
28921
  min-width: 0;
28807
28922
  flex: 1;
28808
28923
  }
28809
- .cn-nc-widget-widget__item-title[data-v-04be70f3] {
28924
+ .cn-nc-widget-widget__item-title[data-v-f553a198] {
28810
28925
  font-weight: 600;
28811
28926
  overflow: hidden;
28812
28927
  text-overflow: ellipsis;
28813
28928
  white-space: nowrap;
28814
28929
  }
28815
- .cn-nc-widget-widget__item-subtitle[data-v-04be70f3] {
28930
+ .cn-nc-widget-widget__item-subtitle[data-v-f553a198] {
28816
28931
  font-size: 0.85em;
28817
28932
  color: var(--color-text-maxcontrast);
28818
28933
  overflow: hidden;
@@ -29509,13 +29624,13 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29509
29624
  }
29510
29625
 
29511
29626
 
29512
- .cn-facts-widget[data-v-8146cb58] {
29627
+ .cn-facts-widget[data-v-e1992d24] {
29513
29628
  display: flex;
29514
29629
  flex-direction: column;
29515
29630
  gap: 10px;
29516
29631
  min-width: 0;
29517
29632
  }
29518
- .cn-facts-widget__rows[data-v-8146cb58] {
29633
+ .cn-facts-widget__rows[data-v-e1992d24] {
29519
29634
  display: grid;
29520
29635
  grid-template-columns: max-content 1fr;
29521
29636
  gap: 8px 16px;
@@ -29524,7 +29639,7 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29524
29639
  }
29525
29640
 
29526
29641
  /* Each row is a grid of its own children: the wrapper takes no box. */
29527
- .cn-facts-widget__row[data-v-8146cb58] {
29642
+ .cn-facts-widget__row[data-v-e1992d24] {
29528
29643
  display: contents;
29529
29644
  }
29530
29645
 
@@ -29532,13 +29647,13 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29532
29647
  pushed the label to the right of its column and added 12px around both. The
29533
29648
  class is doubled so these resets outrank that rule, and a dossiq-style
29534
29649
  `:deep()` override in an app is not needed. */
29535
- .cn-facts-widget__label.cn-facts-widget__label[data-v-8146cb58] {
29650
+ .cn-facts-widget__label.cn-facts-widget__label[data-v-e1992d24] {
29536
29651
  margin: 0;
29537
29652
  padding: 0;
29538
29653
  text-align: start;
29539
29654
  color: var(--color-text-maxcontrast);
29540
29655
  }
29541
- .cn-facts-widget__value.cn-facts-widget__value[data-v-8146cb58] {
29656
+ .cn-facts-widget__value.cn-facts-widget__value[data-v-e1992d24] {
29542
29657
  margin: 0;
29543
29658
  padding: 0;
29544
29659
  text-align: start;
@@ -29546,20 +29661,20 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29546
29661
  min-width: 0;
29547
29662
  overflow-wrap: anywhere;
29548
29663
  }
29549
- .cn-facts-widget__title[data-v-8146cb58] {
29664
+ .cn-facts-widget__title[data-v-e1992d24] {
29550
29665
  font-size: 15px;
29551
29666
  font-weight: 600;
29552
29667
  color: var(--color-main-text);
29553
29668
  }
29554
- .cn-facts-widget__line[data-v-8146cb58] {
29669
+ .cn-facts-widget__line[data-v-e1992d24] {
29555
29670
  font-size: 13px;
29556
29671
  color: var(--color-text-maxcontrast);
29557
29672
  }
29558
- .cn-facts-widget__muted[data-v-8146cb58] {
29673
+ .cn-facts-widget__muted[data-v-e1992d24] {
29559
29674
  margin: 0;
29560
29675
  color: var(--color-text-maxcontrast);
29561
29676
  }
29562
- .cn-facts-widget__label .hidden-visually[data-v-8146cb58] {
29677
+ .cn-facts-widget__label .hidden-visually[data-v-e1992d24] {
29563
29678
  clip-path: inset(50%);
29564
29679
  height: 1px;
29565
29680
  overflow: hidden;
@@ -29567,23 +29682,23 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29567
29682
  white-space: nowrap;
29568
29683
  width: 1px;
29569
29684
  }
29570
- .cn-facts-widget__label--icon[data-v-8146cb58] {
29685
+ .cn-facts-widget__label--icon[data-v-e1992d24] {
29571
29686
  align-items: center;
29572
29687
  display: flex;
29573
29688
  }
29574
- .cn-facts-widget__value-link[data-v-8146cb58] {
29689
+ .cn-facts-widget__value-link[data-v-e1992d24] {
29575
29690
  color: var(--color-primary-element);
29576
29691
  text-decoration: underline;
29577
29692
  }
29578
- .cn-facts-widget__inline-button[data-v-8146cb58],
29579
- .cn-facts-widget__icon-button[data-v-8146cb58],
29580
- .cn-facts-widget__action[data-v-8146cb58] {
29693
+ .cn-facts-widget__inline-button[data-v-e1992d24],
29694
+ .cn-facts-widget__icon-button[data-v-e1992d24],
29695
+ .cn-facts-widget__action[data-v-e1992d24] {
29581
29696
  align-items: center;
29582
29697
  cursor: pointer;
29583
29698
  display: inline-flex;
29584
29699
  font: inherit;
29585
29700
  }
29586
- .cn-facts-widget__inline-button[data-v-8146cb58] {
29701
+ .cn-facts-widget__inline-button[data-v-e1992d24] {
29587
29702
  background: var(--color-main-background);
29588
29703
  border: 1px solid var(--color-border-dark);
29589
29704
  border-radius: 16px;
@@ -29594,7 +29709,7 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29594
29709
  min-height: 28px;
29595
29710
  padding: 0 10px;
29596
29711
  }
29597
- .cn-facts-widget__icon-button[data-v-8146cb58] {
29712
+ .cn-facts-widget__icon-button[data-v-e1992d24] {
29598
29713
  background: transparent;
29599
29714
  border: 0;
29600
29715
  border-radius: 6px;
@@ -29603,23 +29718,23 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29603
29718
  padding: 2px;
29604
29719
  vertical-align: middle;
29605
29720
  }
29606
- .cn-facts-widget__icon-button[data-v-8146cb58]:hover,
29607
- .cn-facts-widget__icon-button[data-v-8146cb58]:focus-visible {
29721
+ .cn-facts-widget__icon-button[data-v-e1992d24]:hover,
29722
+ .cn-facts-widget__icon-button[data-v-e1992d24]:focus-visible {
29608
29723
  background: var(--color-background-hover);
29609
29724
  color: var(--color-main-text);
29610
29725
  }
29611
- .cn-facts-widget__text[data-v-8146cb58] {
29726
+ .cn-facts-widget__text[data-v-e1992d24] {
29612
29727
  color: var(--color-main-text);
29613
29728
  font-size: 15px;
29614
29729
  }
29615
29730
 
29616
29731
  /* A lead: an icon tile or initials beside a bold title and a muted subtitle. */
29617
- .cn-facts-widget__lead[data-v-8146cb58] {
29732
+ .cn-facts-widget__lead[data-v-e1992d24] {
29618
29733
  align-items: center;
29619
29734
  display: flex;
29620
29735
  gap: 12px;
29621
29736
  }
29622
- .cn-facts-widget__lead-tile[data-v-8146cb58] {
29737
+ .cn-facts-widget__lead-tile[data-v-e1992d24] {
29623
29738
  align-items: center;
29624
29739
  background: var(--color-background-dark);
29625
29740
  border-radius: 8px;
@@ -29632,29 +29747,29 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29632
29747
  justify-content: center;
29633
29748
  width: 40px;
29634
29749
  }
29635
- .cn-facts-widget__lead-tile--success[data-v-8146cb58] {
29750
+ .cn-facts-widget__lead-tile--success[data-v-e1992d24] {
29636
29751
  background: color-mix(in srgb, var(--color-success) 14%, var(--color-main-background));
29637
29752
  border-radius: 50%;
29638
29753
  color: var(--color-success-text, var(--color-success));
29639
29754
  }
29640
- .cn-facts-widget__lead-tile--info[data-v-8146cb58] {
29755
+ .cn-facts-widget__lead-tile--info[data-v-e1992d24] {
29641
29756
  background: var(--color-primary-element-light);
29642
29757
  border-radius: 50%;
29643
29758
  color: var(--color-primary-element-light-text, var(--color-primary-element));
29644
29759
  }
29645
- .cn-facts-widget__lead-text[data-v-8146cb58] {
29760
+ .cn-facts-widget__lead-text[data-v-e1992d24] {
29646
29761
  display: flex;
29647
29762
  flex-direction: column;
29648
29763
  min-width: 0;
29649
29764
  }
29650
- .cn-facts-widget__lead-title[data-v-8146cb58] {
29765
+ .cn-facts-widget__lead-title[data-v-e1992d24] {
29651
29766
  font-size: 15px;
29652
29767
  }
29653
- .cn-facts-widget__lead-subtitle[data-v-8146cb58] {
29768
+ .cn-facts-widget__lead-subtitle[data-v-e1992d24] {
29654
29769
  color: var(--color-text-maxcontrast);
29655
29770
  font-size: 13px;
29656
29771
  }
29657
- .cn-facts-widget__action[data-v-8146cb58] {
29772
+ .cn-facts-widget__action[data-v-e1992d24] {
29658
29773
  align-self: flex-start;
29659
29774
  background: var(--color-primary-element-light);
29660
29775
  border: 0;
@@ -29666,11 +29781,11 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29666
29781
  min-height: 32px;
29667
29782
  padding: 0 14px;
29668
29783
  }
29669
- .cn-facts-widget__action[data-v-8146cb58]:hover,
29670
- .cn-facts-widget__action[data-v-8146cb58]:focus-visible {
29784
+ .cn-facts-widget__action[data-v-e1992d24]:hover,
29785
+ .cn-facts-widget__action[data-v-e1992d24]:focus-visible {
29671
29786
  background: var(--color-primary-element-light-hover, var(--color-primary-element-light));
29672
29787
  }
29673
- .cn-facts-widget__link[data-v-8146cb58] {
29788
+ .cn-facts-widget__link[data-v-e1992d24] {
29674
29789
  font-size: 14px;
29675
29790
  font-weight: 600;
29676
29791
  color: var(--color-primary-element);
@@ -34627,26 +34742,26 @@ to {
34627
34742
  text-decoration: underline;
34628
34743
  }
34629
34744
  @charset "UTF-8";
34630
- .cn-choice-cards[data-v-c551354c] {
34745
+ .cn-choice-cards[data-v-8d2b4ff4] {
34631
34746
  border: none;
34632
34747
  padding: 0;
34633
34748
  margin: 0;
34634
34749
  min-inline-size: 0;
34635
34750
  }
34636
34751
 
34637
- .cn-choice-cards__legend[data-v-c551354c] {
34752
+ .cn-choice-cards__legend[data-v-8d2b4ff4] {
34638
34753
  padding: 0;
34639
34754
  margin-block-end: 8px;
34640
34755
  font-weight: bold;
34641
34756
  }
34642
34757
 
34643
- .cn-choice-cards__loading[data-v-c551354c] {
34758
+ .cn-choice-cards__loading[data-v-8d2b4ff4] {
34644
34759
  display: flex;
34645
34760
  justify-content: center;
34646
34761
  padding: 24px 0;
34647
34762
  }
34648
34763
 
34649
- .cn-choice-cards__grid[data-v-c551354c] {
34764
+ .cn-choice-cards__grid[data-v-8d2b4ff4] {
34650
34765
  display: grid;
34651
34766
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
34652
34767
  gap: 12px;
@@ -34658,26 +34773,26 @@ to {
34658
34773
  padding: 12px;
34659
34774
  }
34660
34775
 
34661
- .cn-choice-cards__cell[data-v-c551354c] {
34776
+ .cn-choice-cards__cell[data-v-8d2b4ff4] {
34662
34777
  display: flex;
34663
34778
  flex-direction: column;
34664
34779
  gap: 8px;
34665
34780
  min-inline-size: 0;
34666
34781
  }
34667
34782
 
34668
- .cn-choice-cards__actions[data-v-c551354c] {
34783
+ .cn-choice-cards__actions[data-v-8d2b4ff4] {
34669
34784
  display: flex;
34670
34785
  flex-direction: column;
34671
34786
  gap: 4px;
34672
34787
  }
34673
34788
 
34674
- .cn-choice-cards__option[data-v-c551354c] {
34789
+ .cn-choice-cards__option[data-v-8d2b4ff4] {
34675
34790
  position: relative;
34676
34791
  display: block;
34677
34792
  cursor: pointer;
34678
34793
  }
34679
34794
 
34680
- .cn-choice-cards__input[data-v-c551354c] {
34795
+ .cn-choice-cards__input[data-v-8d2b4ff4] {
34681
34796
  position: absolute;
34682
34797
  inset-block-start: 16px;
34683
34798
  inset-inline-end: 14px;
@@ -34687,7 +34802,7 @@ to {
34687
34802
  }
34688
34803
 
34689
34804
  /* Room for the input, so a long title never runs underneath it. */
34690
- .cn-choice-cards__option[data-v-c551354c] .cn-card {
34805
+ .cn-choice-cards__option[data-v-8d2b4ff4] .cn-card {
34691
34806
  padding-inline-end: 44px;
34692
34807
  transition: box-shadow 0.2s ease, border-color 0.2s ease;
34693
34808
  }
@@ -34698,25 +34813,103 @@ to {
34698
34813
  touches a card, and the grid twitches. The border colour below already
34699
34814
  carries hover, so the scale is dropped: at (0,3,0) this beats the global
34700
34815
  `.cn-card:hover` at (0,2,0). */
34701
- .cn-choice-cards__option[data-v-c551354c]:hover .cn-card {
34816
+ .cn-choice-cards__option[data-v-8d2b4ff4]:hover .cn-card {
34702
34817
  border-color: var(--color-primary-element);
34703
34818
  transform: none;
34704
34819
  }
34705
34820
 
34706
34821
  /* The focus ring belongs on the card, not on the small input inside it. */
34707
- .cn-choice-cards__input[data-v-c551354c]:focus-visible + .cn-card {
34822
+ .cn-choice-cards__input[data-v-8d2b4ff4]:focus-visible + .cn-card {
34708
34823
  outline: 2px solid var(--color-primary-element);
34709
34824
  outline-offset: 2px;
34710
34825
  }
34711
34826
 
34712
- .cn-choice-cards__input[data-v-c551354c]:disabled {
34827
+ .cn-choice-cards__input[data-v-8d2b4ff4]:disabled {
34713
34828
  cursor: default;
34714
34829
  }
34715
34830
 
34716
- .cn-choice-cards__input[data-v-c551354c]:disabled + .cn-card {
34831
+ .cn-choice-cards__input[data-v-8d2b4ff4]:disabled + .cn-card {
34832
+ opacity: 0.6;
34833
+ }
34834
+
34835
+ .cn-choice-cards__rows[data-v-8d2b4ff4] {
34836
+ display: flex;
34837
+ flex-direction: column;
34838
+ gap: 8px;
34839
+ }
34840
+
34841
+ .cn-choice-cards__row[data-v-8d2b4ff4] {
34842
+ display: flex;
34843
+ align-items: flex-start;
34844
+ gap: 12px;
34845
+ padding: 14px 16px;
34846
+ border: 1px solid var(--color-border);
34847
+ border-radius: var(--border-radius-large, 8px);
34848
+ background: var(--color-main-background);
34849
+ cursor: pointer;
34850
+ }
34851
+
34852
+ .cn-choice-cards__row[data-v-8d2b4ff4]:hover {
34853
+ border-color: var(--color-border-dark);
34854
+ }
34855
+
34856
+ .cn-choice-cards__row--selected[data-v-8d2b4ff4],
34857
+ .cn-choice-cards__row--selected[data-v-8d2b4ff4]:hover {
34858
+ border-color: var(--color-primary-element);
34859
+ /* The second pixel of the 2px selected border, without moving the content. */
34860
+ box-shadow: inset 0 0 0 1px var(--color-primary-element);
34861
+ background: var(--color-primary-element-light);
34862
+ }
34863
+
34864
+ .cn-choice-cards__row--disabled[data-v-8d2b4ff4] {
34865
+ cursor: default;
34717
34866
  opacity: 0.6;
34718
34867
  }
34719
34868
 
34869
+ .cn-choice-cards__row[data-v-8d2b4ff4]:has(.cn-choice-cards__row-input:focus-visible) {
34870
+ outline: 2px solid var(--color-primary-element);
34871
+ outline-offset: 2px;
34872
+ }
34873
+
34874
+ .cn-choice-cards__row-input[data-v-8d2b4ff4] {
34875
+ flex: none;
34876
+ margin: 2px 0 0;
34877
+ accent-color: var(--color-primary-element);
34878
+ cursor: inherit;
34879
+ }
34880
+
34881
+ .cn-choice-cards__row-icon[data-v-8d2b4ff4] {
34882
+ flex: none;
34883
+ }
34884
+
34885
+ .cn-choice-cards__row-text[data-v-8d2b4ff4] {
34886
+ display: flex;
34887
+ flex-direction: column;
34888
+ gap: 2px;
34889
+ min-width: 0;
34890
+ }
34891
+
34892
+ .cn-choice-cards__row-title[data-v-8d2b4ff4] {
34893
+ font-size: 15px;
34894
+ font-weight: 600;
34895
+ }
34896
+
34897
+ .cn-choice-cards__row-description[data-v-8d2b4ff4] {
34898
+ font-size: 13px;
34899
+ color: var(--color-text-maxcontrast);
34900
+ }
34901
+
34902
+ .cn-choice-cards__reason[data-v-8d2b4ff4] {
34903
+ font-size: 13px;
34904
+ color: var(--color-text-maxcontrast);
34905
+ font-style: italic;
34906
+ }
34907
+
34908
+ .cn-choice-cards__reason--card[data-v-8d2b4ff4] {
34909
+ display: block;
34910
+ margin-block-start: 4px;
34911
+ }
34912
+
34720
34913
  .cn-wizard-dialog__step-body[data-v-4a9bf6d1] {
34721
34914
  min-height: 200px;
34722
34915
  }
@@ -38458,7 +38651,7 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38458
38651
  }
38459
38652
 
38460
38653
 
38461
- .cn-dashboard-page[data-v-42bc14a4] {
38654
+ .cn-dashboard-page[data-v-582eaf2c] {
38462
38655
  padding: 20px;
38463
38656
  max-width: 1800px;
38464
38657
  /* Centre the leftover space once the cap engages, so a wide screen shows
@@ -38472,7 +38665,7 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38472
38665
  overflow-y: auto;
38473
38666
  box-sizing: border-box;
38474
38667
  }
38475
- .cn-dashboard-page__header[data-v-42bc14a4] {
38668
+ .cn-dashboard-page__header[data-v-582eaf2c] {
38476
38669
  display: flex;
38477
38670
  justify-content: space-between;
38478
38671
  align-items: flex-start;
@@ -38484,21 +38677,21 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38484
38677
  room. Only the HEADER shifts right — body widgets keep full width. */
38485
38678
  padding-inline-start: 56px;
38486
38679
  }
38487
- .cn-dashboard-page__header-left[data-v-42bc14a4] {
38680
+ .cn-dashboard-page__header-left[data-v-582eaf2c] {
38488
38681
  min-width: 0;
38489
38682
  }
38490
- .cn-dashboard-page__title-row[data-v-42bc14a4] {
38683
+ .cn-dashboard-page__title-row[data-v-582eaf2c] {
38491
38684
  display: flex;
38492
38685
  align-items: center;
38493
38686
  flex-wrap: wrap;
38494
38687
  gap: 12px;
38495
38688
  }
38496
- .cn-dashboard-page__title[data-v-42bc14a4] {
38689
+ .cn-dashboard-page__title[data-v-582eaf2c] {
38497
38690
  margin: 0;
38498
38691
  font-size: 20px;
38499
38692
  font-weight: 700;
38500
38693
  }
38501
- .cn-dashboard-page__description[data-v-42bc14a4] {
38694
+ .cn-dashboard-page__description[data-v-582eaf2c] {
38502
38695
  margin: 4px 0 0;
38503
38696
  font-size: 14px;
38504
38697
  color: var(--color-text-maxcontrast);
@@ -38506,19 +38699,19 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38506
38699
 
38507
38700
  /* Board look (screens-dashboard-parity): h1 28/700, a 15px grey subtitle 6px
38508
38701
  under it, and 40px buttons with a 10px gap. */
38509
- .cn-dashboard-page--board .cn-dashboard-page__title[data-v-42bc14a4] {
38702
+ .cn-dashboard-page--board .cn-dashboard-page__title[data-v-582eaf2c] {
38510
38703
  font-size: 28px;
38511
38704
  font-weight: 700;
38512
38705
  line-height: 1.2;
38513
38706
  }
38514
- .cn-dashboard-page--board .cn-dashboard-page__description[data-v-42bc14a4] {
38707
+ .cn-dashboard-page--board .cn-dashboard-page__description[data-v-582eaf2c] {
38515
38708
  margin: 6px 0 0;
38516
38709
  font-size: 15px;
38517
38710
  }
38518
- .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-42bc14a4] {
38711
+ .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-582eaf2c] {
38519
38712
  gap: 10px;
38520
38713
  }
38521
- .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-42bc14a4] .button-vue {
38714
+ .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-582eaf2c] .button-vue {
38522
38715
  min-height: var(--cn-board-control-height, 40px);
38523
38716
  height: var(--cn-board-control-height, 40px);
38524
38717
  }
@@ -38526,17 +38719,17 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38526
38719
  /* The switch row under the header (screens-dashboard-greeting-header): the
38527
38720
  view switch left, the `viewLinks` pills right (DqMijnWerk: pills 34px high,
38528
38721
  radius 17, 13px/600, a 14px icon, primary light on primary deep). */
38529
- .cn-dashboard-page__switch-row[data-v-42bc14a4] {
38722
+ .cn-dashboard-page__switch-row[data-v-582eaf2c] {
38530
38723
  display: flex;
38531
38724
  flex-wrap: wrap;
38532
38725
  align-items: center;
38533
38726
  gap: 10px;
38534
38727
  margin-bottom: var(--cn-board-section-gap, 20px);
38535
38728
  }
38536
- .cn-dashboard-page__switch-row-spacer[data-v-42bc14a4] {
38729
+ .cn-dashboard-page__switch-row-spacer[data-v-582eaf2c] {
38537
38730
  flex: 1 1 auto;
38538
38731
  }
38539
- .cn-dashboard-page__view-link[data-v-42bc14a4] {
38732
+ .cn-dashboard-page__view-link[data-v-582eaf2c] {
38540
38733
  display: inline-flex;
38541
38734
  align-items: center;
38542
38735
  gap: 6px;
@@ -38550,36 +38743,45 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38550
38743
  white-space: nowrap;
38551
38744
  text-decoration: none !important;
38552
38745
  }
38553
- .cn-dashboard-page__view-link[data-v-42bc14a4]:hover {
38746
+ .cn-dashboard-page__view-link[data-v-582eaf2c]:hover {
38554
38747
  background: var(--color-primary-element-light-hover, var(--color-primary-element-light));
38555
38748
  }
38556
- .cn-dashboard-page__view-link[data-v-42bc14a4]:focus-visible {
38749
+ .cn-dashboard-page__view-link[data-v-582eaf2c]:focus-visible {
38557
38750
  outline: 2px solid var(--color-main-text);
38558
38751
  outline-offset: 2px;
38559
38752
  }
38560
- .cn-dashboard-page__view-link-icon[data-v-42bc14a4] {
38753
+ .cn-dashboard-page__view-link-icon[data-v-582eaf2c] {
38561
38754
  display: inline-flex;
38562
38755
  }
38563
38756
 
38564
38757
  /* The period group, in a row of its own between the header and the KPI row. */
38565
- .cn-dashboard-page__date-range--segmented[data-v-42bc14a4] {
38758
+ .cn-dashboard-page__date-range--segmented[data-v-582eaf2c] {
38566
38759
  margin-bottom: 16px;
38567
38760
  }
38568
- .cn-dashboard-page__date-segmented[data-v-42bc14a4] {
38761
+ .cn-dashboard-page__date-segmented[data-v-582eaf2c] {
38569
38762
  display: flex;
38570
38763
  align-items: center;
38571
38764
  gap: 8px;
38572
38765
  }
38573
38766
 
38574
38767
  /* The KPI row above the grid: tiles are cells of the auto-fit grid. */
38575
- .cn-dashboard-page__kpi-row[data-v-42bc14a4] {
38768
+ .cn-dashboard-page__kpi-row[data-v-582eaf2c] {
38576
38769
  margin-bottom: var(--cn-board-section-gap, 16px);
38577
38770
  }
38578
- .cn-dashboard-page__kpi-cell[data-v-42bc14a4] {
38771
+
38772
+ /* Board look: GridStack insets every card by the grid margin on each side, so
38773
+ the cards started a margin to the right of the KPI row and the header. The
38774
+ grid reaches out by that margin, so the card edges line up with the page's
38775
+ (dashboard-grid-flush). */
38776
+ .cn-dashboard-page--board[data-v-582eaf2c] .cn-dashboard-grid {
38777
+ width: auto;
38778
+ margin-inline: calc(-1 * var(--cn-dashboard-grid-margin, 12px));
38779
+ }
38780
+ .cn-dashboard-page__kpi-cell[data-v-582eaf2c] {
38579
38781
  display: flex;
38580
38782
  min-width: 0;
38581
38783
  }
38582
- .cn-dashboard-page__kpi-cell[data-v-42bc14a4] > * {
38784
+ .cn-dashboard-page__kpi-cell[data-v-582eaf2c] > * {
38583
38785
  flex: 1 1 auto;
38584
38786
  min-width: 0;
38585
38787
  }
@@ -38592,7 +38794,7 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38592
38794
  scoped chip rules then silently don't match and the chip collapses into
38593
38795
  NcActions' ~30px icon slot (text wraps to "Last / 30 / days"). The
38594
38796
  data-testid is stable across chunks, so those rules match regardless. */
38595
- .cn-dashboard-page__header-actions[data-v-42bc14a4] {
38797
+ .cn-dashboard-page__header-actions[data-v-582eaf2c] {
38596
38798
  display: flex;
38597
38799
  align-items: center;
38598
38800
  gap: 8px;
@@ -38608,19 +38810,19 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38608
38810
 
38609
38811
  /* Date-range header band. Kept compact so it doesn't open a tall gap
38610
38812
  above the grid; the pills variant is a single tidy toggle row. */
38611
- .cn-dashboard-page__date-range[data-v-42bc14a4] {
38813
+ .cn-dashboard-page__date-range[data-v-582eaf2c] {
38612
38814
  margin-bottom: 12px;
38613
38815
  }
38614
- .cn-dashboard-page__date-range--pills[data-v-42bc14a4] {
38816
+ .cn-dashboard-page__date-range--pills[data-v-582eaf2c] {
38615
38817
  margin-bottom: 8px;
38616
38818
  }
38617
- .cn-dashboard-page__date-pills[data-v-42bc14a4] {
38819
+ .cn-dashboard-page__date-pills[data-v-582eaf2c] {
38618
38820
  display: flex;
38619
38821
  align-items: center;
38620
38822
  flex-wrap: wrap;
38621
38823
  gap: 6px;
38622
38824
  }
38623
- .cn-dashboard-page__date-pill[data-v-42bc14a4] {
38825
+ .cn-dashboard-page__date-pill[data-v-582eaf2c] {
38624
38826
  display: inline-flex;
38625
38827
  align-items: center;
38626
38828
  padding: 5px 14px;
@@ -38635,77 +38837,77 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38635
38837
  cursor: pointer;
38636
38838
  transition: background-color 100ms ease, border-color 100ms ease, color 100ms ease;
38637
38839
  }
38638
- .cn-dashboard-page__date-pill[data-v-42bc14a4]:hover {
38840
+ .cn-dashboard-page__date-pill[data-v-582eaf2c]:hover {
38639
38841
  background: var(--color-background-hover);
38640
38842
  }
38641
- .cn-dashboard-page__date-pill[data-v-42bc14a4]:focus-visible {
38843
+ .cn-dashboard-page__date-pill[data-v-582eaf2c]:focus-visible {
38642
38844
  outline: 2px solid var(--color-primary-element);
38643
38845
  outline-offset: 2px;
38644
38846
  }
38645
- .cn-dashboard-page__date-pill--active[data-v-42bc14a4] {
38847
+ .cn-dashboard-page__date-pill--active[data-v-582eaf2c] {
38646
38848
  background: var(--color-primary-element);
38647
38849
  border-color: var(--color-primary-element);
38648
38850
  color: var(--color-primary-element-text);
38649
38851
  }
38650
- .cn-dashboard-page__date-pill--active[data-v-42bc14a4]:hover {
38852
+ .cn-dashboard-page__date-pill--active[data-v-582eaf2c]:hover {
38651
38853
  background: var(--color-primary-element-hover, var(--color-primary-element));
38652
38854
  }
38653
38855
 
38654
38856
  /* The custom-range pill is de-emphasised — dashed outline, muted text —
38655
38857
  so it reads as an escape hatch rather than a primary option. */
38656
- .cn-dashboard-page__date-pill--custom[data-v-42bc14a4] {
38858
+ .cn-dashboard-page__date-pill--custom[data-v-582eaf2c] {
38657
38859
  border-style: dashed;
38658
38860
  color: var(--color-text-maxcontrast);
38659
38861
  }
38660
- .cn-dashboard-page__date-pill-custom[data-v-42bc14a4] .action-item__menutoggle {
38862
+ .cn-dashboard-page__date-pill-custom[data-v-582eaf2c] .action-item__menutoggle {
38661
38863
  min-width: 0;
38662
38864
  min-height: 0;
38663
38865
  padding: 0;
38664
38866
  background: transparent;
38665
38867
  border: none;
38666
38868
  }
38667
- .cn-dashboard-page__date-pill-custom[data-v-42bc14a4] .button-vue,
38668
- .cn-dashboard-page__date-pill-custom[data-v-42bc14a4] .button-vue__wrapper,
38669
- .cn-dashboard-page__date-pill-custom[data-v-42bc14a4] .button-vue__icon {
38869
+ .cn-dashboard-page__date-pill-custom[data-v-582eaf2c] .button-vue,
38870
+ .cn-dashboard-page__date-pill-custom[data-v-582eaf2c] .button-vue__wrapper,
38871
+ .cn-dashboard-page__date-pill-custom[data-v-582eaf2c] .button-vue__icon {
38670
38872
  width: auto !important;
38671
38873
  min-width: 0 !important;
38672
38874
  overflow: visible !important;
38673
38875
  }
38674
- .cn-dashboard-page__empty[data-v-42bc14a4] {
38876
+ .cn-dashboard-page__empty[data-v-582eaf2c] {
38675
38877
  padding: 60px 20px;
38676
38878
  }
38677
38879
 
38678
38880
  /* The page's view switch on a page without a header row: at the end of its
38679
38881
  own row, above the grids, where the header would have put it. */
38680
- .cn-dashboard-page__view-switch[data-v-42bc14a4] {
38882
+ .cn-dashboard-page__view-switch[data-v-582eaf2c] {
38681
38883
  display: flex;
38682
38884
  justify-content: flex-end;
38683
38885
  margin-bottom: 12px;
38684
38886
  }
38685
38887
 
38686
38888
  /* A view the switch shows with nothing to draw. */
38687
- .cn-page-view-region--empty[data-v-42bc14a4] {
38889
+ .cn-page-view-region--empty[data-v-582eaf2c] {
38688
38890
  padding: 40px 20px;
38689
38891
  }
38690
- .cn-dashboard-page__page-filters[data-v-42bc14a4] {
38892
+ .cn-dashboard-page__page-filters[data-v-582eaf2c] {
38691
38893
  display: flex;
38692
38894
  flex-wrap: wrap;
38693
38895
  gap: 16px;
38694
38896
  align-items: flex-end;
38695
38897
  margin-bottom: 12px;
38696
38898
  }
38697
- .cn-dashboard-page__page-filter[data-v-42bc14a4] {
38899
+ .cn-dashboard-page__page-filter[data-v-582eaf2c] {
38698
38900
  display: flex;
38699
38901
  flex-direction: column;
38700
38902
  gap: 4px;
38701
38903
  min-width: 200px;
38702
38904
  }
38703
- .cn-dashboard-page__page-filter-label[data-v-42bc14a4] {
38905
+ .cn-dashboard-page__page-filter-label[data-v-582eaf2c] {
38704
38906
  font-size: 0.85em;
38705
38907
  font-weight: 600;
38706
38908
  color: var(--color-text-maxcontrast);
38707
38909
  }
38708
- .cn-dashboard-page__widget-edit[data-v-42bc14a4] {
38910
+ .cn-dashboard-page__widget-edit[data-v-582eaf2c] {
38709
38911
  position: absolute;
38710
38912
  top: 4px;
38711
38913
  inset-inline-end: 4px;
@@ -38724,8 +38926,8 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38724
38926
  and centre the card. */
38725
38927
  /* `safe` centre so an overflowing tile does not spill out of the top, where
38726
38928
  flex overflow cannot be scrolled back to. Same as detail-page.css. */
38727
- .cn-dashboard-page__card-fit[data-v-42bc14a4] .cn-widget-wrapper__content,
38728
- .cn-dashboard-page__card-fit.cn-widget-wrapper--flush[data-v-42bc14a4] .cn-widget-wrapper__content {
38929
+ .cn-dashboard-page__card-fit[data-v-582eaf2c] .cn-widget-wrapper__content,
38930
+ .cn-dashboard-page__card-fit.cn-widget-wrapper--flush[data-v-582eaf2c] .cn-widget-wrapper__content {
38729
38931
  overflow: hidden;
38730
38932
  display: flex;
38731
38933
  flex-direction: column;
@@ -38741,7 +38943,7 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38741
38943
  shows up as a scrollbar the user has to drag to see the whole graph. Same
38742
38944
  shape as the card-fit rule above, minus the padding: chart tiles render
38743
38945
  `flush`, and apexcharts already draws its own margins. */
38744
- .cn-dashboard-page__chart-fit[data-v-42bc14a4] .cn-widget-wrapper__content {
38946
+ .cn-dashboard-page__chart-fit[data-v-582eaf2c] .cn-widget-wrapper__content {
38745
38947
  overflow: hidden;
38746
38948
  display: flex;
38747
38949
  flex-direction: column;
@@ -38751,13 +38953,13 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38751
38953
  /* Card content (stat / gauge / delta) must fit the tile width: let the
38752
38954
  widget shrink and its value/label truncate instead of pushing past the
38753
38955
  tile edge (the horizontal clip on long currency values). */
38754
- .cn-dashboard-page__card-fit[data-v-42bc14a4] .cn-stat-widget,
38755
- .cn-dashboard-page__card-fit[data-v-42bc14a4] .cn-gauge-widget,
38756
- .cn-dashboard-page__card-fit[data-v-42bc14a4] .cn-delta-widget {
38956
+ .cn-dashboard-page__card-fit[data-v-582eaf2c] .cn-stat-widget,
38957
+ .cn-dashboard-page__card-fit[data-v-582eaf2c] .cn-gauge-widget,
38958
+ .cn-dashboard-page__card-fit[data-v-582eaf2c] .cn-delta-widget {
38757
38959
  min-width: 0;
38758
38960
  max-width: 100%;
38759
38961
  }
38760
- .cn-dashboard-page__unknown[data-v-42bc14a4] {
38962
+ .cn-dashboard-page__unknown[data-v-582eaf2c] {
38761
38963
  display: flex;
38762
38964
  align-items: center;
38763
38965
  justify-content: center;
@@ -38768,29 +38970,43 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38768
38970
  }
38769
38971
 
38770
38972
  /* widget-ref content items */
38771
- .cn-dashboard-page__content[data-v-42bc14a4] {
38973
+ .cn-dashboard-page__content[data-v-582eaf2c] {
38772
38974
  display: flex;
38773
38975
  flex-direction: column;
38774
38976
  gap: 16px;
38775
38977
  }
38776
- .cn-dashboard-page__content-item[data-v-42bc14a4] {
38978
+ .cn-dashboard-page__content-item[data-v-582eaf2c] {
38777
38979
  width: 100%;
38778
38980
  }
38779
38981
  /* On a phone (screens-dashboard-phone) the touch targets of a board dashboard
38780
38982
  are 44px: the widget Actions menu and the KPI tiles. */
38781
38983
  @media (max-width: 640px) {
38782
- .cn-dashboard-page--board[data-v-42bc14a4] .cn-widget-wrapper__actions .action-item__menutoggle,
38783
- .cn-dashboard-page--board[data-v-42bc14a4] .cn-widget-wrapper__actions .button-vue {
38984
+ .cn-dashboard-page--board[data-v-582eaf2c] .cn-widget-wrapper__actions .action-item__menutoggle,
38985
+ .cn-dashboard-page--board[data-v-582eaf2c] .cn-widget-wrapper__actions .button-vue {
38784
38986
  min-height: 44px;
38785
38987
  }
38786
- .cn-dashboard-page--board .cn-dashboard-page__kpi-cell[data-v-42bc14a4] {
38988
+ .cn-dashboard-page--board .cn-dashboard-page__kpi-cell[data-v-582eaf2c] {
38787
38989
  min-height: 44px;
38788
38990
  }
38991
+
38992
+ /* The widget Actions menu shows its icon only, so the card title keeps
38993
+ the room; the name stays for assistive tech. */
38994
+ .cn-dashboard-page--board[data-v-582eaf2c] .cn-widget-wrapper__actions .action-item__menutoggle {
38995
+ min-width: 44px;
38996
+ }
38997
+ .cn-dashboard-page--board[data-v-582eaf2c] .cn-widget-wrapper__actions .action-item__menutoggle .button-vue__text {
38998
+ position: absolute;
38999
+ width: 1px;
39000
+ height: 1px;
39001
+ overflow: hidden;
39002
+ clip-path: inset(50%);
39003
+ white-space: nowrap;
39004
+ }
38789
39005
  }
38790
39006
 
38791
39007
  /* What a registry widget reports for its card header (`header` event): the
38792
39008
  note beside the link ("3 in total") and one action, as on a detail page. */
38793
- .cn-dashboard-page__widget-count[data-v-42bc14a4] {
39009
+ .cn-dashboard-page__widget-count[data-v-582eaf2c] {
38794
39010
  align-self: center;
38795
39011
  padding: 1px 8px;
38796
39012
  border-radius: 10px;
@@ -38799,13 +39015,13 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38799
39015
  font-size: 13px;
38800
39016
  font-weight: 600;
38801
39017
  }
38802
- .cn-dashboard-page__widget-note[data-v-42bc14a4] {
39018
+ .cn-dashboard-page__widget-note[data-v-582eaf2c] {
38803
39019
  align-self: center;
38804
39020
  color: var(--color-text-maxcontrast);
38805
39021
  font-size: 14px;
38806
39022
  white-space: nowrap;
38807
39023
  }
38808
- .cn-dashboard-page__widget-action[data-v-42bc14a4] {
39024
+ .cn-dashboard-page__widget-action[data-v-582eaf2c] {
38809
39025
  display: inline-flex;
38810
39026
  align-items: center;
38811
39027
  align-self: center;
@@ -38821,7 +39037,7 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38821
39037
  white-space: nowrap;
38822
39038
  cursor: pointer;
38823
39039
  }
38824
- .cn-dashboard-page__widget-action[data-v-42bc14a4]:focus-visible {
39040
+ .cn-dashboard-page__widget-action[data-v-582eaf2c]:focus-visible {
38825
39041
  outline: 2px solid var(--color-primary-element);
38826
39042
  outline-offset: 2px;
38827
39043
  }
@@ -41332,7 +41548,104 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
41332
41548
  }
41333
41549
 
41334
41550
 
41335
- .cn-link-cards-page[data-v-4d8cf2f8] {
41551
+ .cn-module-card[data-v-7cd47118] {
41552
+ display: flex;
41553
+ flex-direction: column;
41554
+ gap: 12px;
41555
+ padding: 20px;
41556
+ border: 1px solid var(--color-border);
41557
+ border-radius: var(--border-radius-container-large, 12px);
41558
+ background: var(--color-main-background);
41559
+ }
41560
+ .cn-module-card__head[data-v-7cd47118] {
41561
+ display: flex;
41562
+ align-items: center;
41563
+ gap: 12px;
41564
+ }
41565
+ .cn-module-card__icon[data-v-7cd47118] {
41566
+ display: flex;
41567
+ flex: none;
41568
+ align-items: center;
41569
+ justify-content: center;
41570
+ width: 42px;
41571
+ height: 42px;
41572
+ border-radius: var(--border-radius-large, 10px);
41573
+ background: var(--color-primary-element-light);
41574
+ color: var(--color-primary-element-light-text, var(--color-primary-element));
41575
+ }
41576
+ .cn-module-card__title[data-v-7cd47118] {
41577
+ flex: 1 1 auto;
41578
+ margin: 0;
41579
+ font-size: 17px;
41580
+ font-weight: 700;
41581
+ }
41582
+ .cn-module-card__state[data-v-7cd47118] {
41583
+ flex: none;
41584
+ }
41585
+ .cn-module-card__description[data-v-7cd47118] {
41586
+ margin: 0;
41587
+ font-size: 15px;
41588
+ line-height: 1.5;
41589
+ }
41590
+ .cn-module-card__pages-line[data-v-7cd47118] {
41591
+ font-size: 13px;
41592
+ color: var(--color-text-maxcontrast);
41593
+ }
41594
+ .cn-module-card__pages[data-v-7cd47118] {
41595
+ display: flex;
41596
+ flex-wrap: wrap;
41597
+ gap: 6px 12px;
41598
+ margin: 0;
41599
+ padding: 0;
41600
+ list-style: none;
41601
+ font-size: 14px;
41602
+ }
41603
+ .cn-module-card__page[data-v-7cd47118] {
41604
+ font-weight: 600;
41605
+ color: var(--color-primary-element);
41606
+ }
41607
+ .cn-module-card__footer[data-v-7cd47118] {
41608
+ display: flex;
41609
+ flex-wrap: wrap;
41610
+ align-items: center;
41611
+ gap: 8px 14px;
41612
+ margin-top: auto;
41613
+ padding-top: 4px;
41614
+ }
41615
+ .cn-module-card__open[data-v-7cd47118] {
41616
+ display: inline-flex;
41617
+ align-items: center;
41618
+ gap: 6px;
41619
+ box-sizing: border-box;
41620
+ height: 36px;
41621
+ padding: 0 14px;
41622
+ font-size: 14px;
41623
+ font-weight: 600;
41624
+ text-decoration: none;
41625
+ }
41626
+ .cn-module-card__open[data-v-7cd47118] {
41627
+ border: 1px solid var(--color-border-dark);
41628
+ border-radius: var(--border-radius-element, 8px);
41629
+ background: var(--color-main-background);
41630
+ color: var(--color-main-text);
41631
+ }
41632
+ .cn-module-card__icon--off[data-v-7cd47118] {
41633
+ background: var(--color-background-dark);
41634
+ color: var(--color-main-text);
41635
+ }
41636
+ .cn-module-card__settings[data-v-7cd47118] {
41637
+ font-size: 13px;
41638
+ color: var(--color-text-maxcontrast);
41639
+ }
41640
+ .cn-module-card__open[data-v-7cd47118]:focus-visible,
41641
+ .cn-module-card__settings a[data-v-7cd47118]:focus-visible,
41642
+ .cn-module-card__page[data-v-7cd47118]:focus-visible {
41643
+ outline: 2px solid var(--color-primary-element);
41644
+ outline-offset: 2px;
41645
+ }
41646
+
41647
+
41648
+ .cn-link-cards-page[data-v-1a155b6c] {
41336
41649
  display: flex;
41337
41650
  flex-direction: column;
41338
41651
  gap: calc(6 * var(--default-grid-baseline));
@@ -41342,24 +41655,24 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
41342
41655
  /* Clear the Nextcloud navigation toggle button (44px wide, absolutely
41343
41656
  positioned at the left edge of .app-content) plus 12px breathing room, as
41344
41657
  CnPageHeader does. Only the header shifts; the cards keep the full width. */
41345
- .cn-link-cards-page__header[data-v-4d8cf2f8] {
41658
+ .cn-link-cards-page__header[data-v-1a155b6c] {
41346
41659
  padding-inline-start: 56px;
41347
41660
  }
41348
- .cn-link-cards-page__title[data-v-4d8cf2f8] {
41661
+ .cn-link-cards-page__title[data-v-1a155b6c] {
41349
41662
  margin: 0 0 var(--default-grid-baseline);
41350
41663
  }
41351
- .cn-link-cards-page__description[data-v-4d8cf2f8],
41352
- .cn-link-cards-page__empty[data-v-4d8cf2f8] {
41664
+ .cn-link-cards-page__description[data-v-1a155b6c],
41665
+ .cn-link-cards-page__empty[data-v-1a155b6c] {
41353
41666
  color: var(--color-text-maxcontrast);
41354
41667
  margin: 0;
41355
41668
  max-width: 70ch;
41356
41669
  }
41357
- .cn-link-cards-page__group[data-v-4d8cf2f8] {
41670
+ .cn-link-cards-page__group[data-v-1a155b6c] {
41358
41671
  display: flex;
41359
41672
  flex-direction: column;
41360
41673
  gap: calc(3 * var(--default-grid-baseline));
41361
41674
  }
41362
- .cn-link-cards-page__caption[data-v-4d8cf2f8] {
41675
+ .cn-link-cards-page__caption[data-v-1a155b6c] {
41363
41676
  color: var(--color-text-maxcontrast);
41364
41677
  font-size: 0.85em;
41365
41678
  font-weight: 600;
@@ -41367,7 +41680,7 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
41367
41680
  margin: 0;
41368
41681
  text-transform: uppercase;
41369
41682
  }
41370
- .cn-link-cards-page__grid[data-v-4d8cf2f8] {
41683
+ .cn-link-cards-page__grid[data-v-1a155b6c] {
41371
41684
  display: grid;
41372
41685
  gap: calc(3 * var(--default-grid-baseline));
41373
41686
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
@@ -41375,10 +41688,10 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
41375
41688
  margin: 0;
41376
41689
  padding: 0;
41377
41690
  }
41378
- .cn-link-cards-page__cell[data-v-4d8cf2f8] {
41691
+ .cn-link-cards-page__cell[data-v-1a155b6c] {
41379
41692
  display: flex;
41380
41693
  }
41381
- .cn-link-cards-page__card[data-v-4d8cf2f8] {
41694
+ .cn-link-cards-page__card[data-v-1a155b6c] {
41382
41695
  align-items: flex-start;
41383
41696
  background: var(--color-main-background);
41384
41697
  border: 1px solid var(--color-border-dark);
@@ -41397,34 +41710,34 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
41397
41710
  underline !important }`, specificity 0,0,1). Among `!important` rules the
41398
41711
  higher specificity wins, so this class rule has to carry it too; without it
41399
41712
  the label and the description both rendered underlined on a live Nextcloud. */
41400
- .cn-link-cards-page__card[data-v-4d8cf2f8],
41401
- .cn-link-cards-page__card[data-v-4d8cf2f8]:hover,
41402
- .cn-link-cards-page__card[data-v-4d8cf2f8]:focus,
41403
- .cn-link-cards-page__card[data-v-4d8cf2f8]:active {
41713
+ .cn-link-cards-page__card[data-v-1a155b6c],
41714
+ .cn-link-cards-page__card[data-v-1a155b6c]:hover,
41715
+ .cn-link-cards-page__card[data-v-1a155b6c]:focus,
41716
+ .cn-link-cards-page__card[data-v-1a155b6c]:active {
41404
41717
  text-decoration: none !important;
41405
41718
  }
41406
41719
 
41407
41720
  /* Hover moves the whole card: border, background and a soft lift. */
41408
- .cn-link-cards-page__card[data-v-4d8cf2f8]:hover {
41721
+ .cn-link-cards-page__card[data-v-1a155b6c]:hover {
41409
41722
  background: var(--color-background-hover);
41410
41723
  border-color: var(--color-primary-element);
41411
41724
  box-shadow: 0 2px 6px var(--color-box-shadow);
41412
41725
  }
41413
41726
  @media (prefers-reduced-motion: reduce) {
41414
- .cn-link-cards-page__card[data-v-4d8cf2f8] {
41727
+ .cn-link-cards-page__card[data-v-1a155b6c] {
41415
41728
  transition: none;
41416
41729
  }
41417
41730
  }
41418
- .cn-link-cards-page__card[data-v-4d8cf2f8]:focus-visible {
41731
+ .cn-link-cards-page__card[data-v-1a155b6c]:focus-visible {
41419
41732
  border-color: var(--color-primary-element);
41420
41733
  outline: 2px solid var(--color-primary-element);
41421
41734
  outline-offset: 2px;
41422
41735
  }
41423
- .cn-link-cards-page__icon[data-v-4d8cf2f8] {
41736
+ .cn-link-cards-page__icon[data-v-1a155b6c] {
41424
41737
  color: var(--color-primary-element);
41425
41738
  flex: none;
41426
41739
  }
41427
- .cn-link-cards-page__body[data-v-4d8cf2f8] {
41740
+ .cn-link-cards-page__body[data-v-1a155b6c] {
41428
41741
  display: flex;
41429
41742
  flex-direction: column;
41430
41743
  gap: var(--default-grid-baseline);
@@ -41434,18 +41747,122 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
41434
41747
  /* The label is the card's title. Its colour is set here, on the span, because
41435
41748
  a theme may force its link colour on the `a` itself; an inherited link
41436
41749
  colour made the title read as a hyperlink. */
41437
- .cn-link-cards-page__label[data-v-4d8cf2f8] {
41750
+ .cn-link-cards-page__label[data-v-1a155b6c] {
41438
41751
  color: var(--color-main-text);
41439
41752
  font-size: 1.05em;
41440
41753
  font-weight: 700;
41441
41754
  line-height: 1.3;
41442
41755
  overflow-wrap: anywhere;
41443
41756
  }
41444
- .cn-link-cards-page__card-description[data-v-4d8cf2f8] {
41757
+ .cn-link-cards-page__card-description[data-v-1a155b6c] {
41445
41758
  color: var(--color-text-maxcontrast);
41446
41759
  font-size: 0.9em;
41447
41760
  line-height: 1.4;
41448
41761
  }
41762
+ .cn-link-cards-page__group--list[data-v-1a155b6c] {
41763
+ padding: 20px 22px;
41764
+ border: 1px solid var(--color-border);
41765
+ border-radius: var(--border-radius-container-large, 12px);
41766
+ background: var(--color-main-background);
41767
+ gap: 6px;
41768
+ }
41769
+ .cn-link-cards-page__group--list .cn-link-cards-page__caption[data-v-1a155b6c] {
41770
+ margin: 0 0 8px;
41771
+ color: var(--color-main-text);
41772
+ font-size: 17px;
41773
+ font-weight: 700;
41774
+ letter-spacing: normal;
41775
+ text-transform: none;
41776
+ }
41777
+ .cn-link-cards-page__list[data-v-1a155b6c] {
41778
+ margin: 0;
41779
+ padding: 0;
41780
+ list-style: none;
41781
+ }
41782
+ .cn-link-cards-page__row[data-v-1a155b6c] {
41783
+ display: flex;
41784
+ align-items: center;
41785
+ gap: 12px;
41786
+ padding: 10px 0;
41787
+ border-top: 1px solid var(--color-background-dark);
41788
+ color: var(--color-main-text);
41789
+ }
41790
+ .cn-link-cards-page__row[data-v-1a155b6c],
41791
+ .cn-link-cards-page__row[data-v-1a155b6c]:hover,
41792
+ .cn-link-cards-page__row[data-v-1a155b6c]:focus,
41793
+ .cn-link-cards-page__row[data-v-1a155b6c]:active {
41794
+ text-decoration: none !important;
41795
+ }
41796
+ .cn-link-cards-page__row[data-v-1a155b6c]:focus-visible {
41797
+ outline: 2px solid var(--color-primary-element);
41798
+ outline-offset: 2px;
41799
+ }
41800
+ .cn-link-cards-page__row-icon[data-v-1a155b6c] {
41801
+ display: flex;
41802
+ flex: none;
41803
+ align-items: center;
41804
+ justify-content: center;
41805
+ width: 34px;
41806
+ height: 34px;
41807
+ border-radius: var(--border-radius-element, 8px);
41808
+ background: var(--color-background-dark);
41809
+ }
41810
+ .cn-link-cards-page__row-body[data-v-1a155b6c] {
41811
+ display: flex;
41812
+ flex: 1 1 auto;
41813
+ flex-direction: column;
41814
+ gap: 2px;
41815
+ min-width: 0;
41816
+ }
41817
+ .cn-link-cards-page__row-label[data-v-1a155b6c] {
41818
+ font-size: 15px;
41819
+ font-weight: 600;
41820
+ }
41821
+ .cn-link-cards-page__row-description[data-v-1a155b6c] {
41822
+ font-size: 13px;
41823
+ color: var(--color-text-maxcontrast);
41824
+ }
41825
+ .cn-link-cards-page__row-trailing[data-v-1a155b6c] {
41826
+ flex: none;
41827
+ color: var(--color-text-maxcontrast);
41828
+ }
41829
+ .cn-link-cards-page__modules[data-v-1a155b6c] {
41830
+ display: flex;
41831
+ flex-direction: column;
41832
+ gap: 14px;
41833
+ }
41834
+ .cn-link-cards-page__modules-head[data-v-1a155b6c] {
41835
+ display: flex;
41836
+ flex-wrap: wrap;
41837
+ justify-content: space-between;
41838
+ align-items: baseline;
41839
+ gap: 8px;
41840
+ }
41841
+ .cn-link-cards-page__modules-title[data-v-1a155b6c] {
41842
+ margin: 0;
41843
+ font-size: 20px;
41844
+ font-weight: 700;
41845
+ }
41846
+ .cn-link-cards-page__modules-count[data-v-1a155b6c] {
41847
+ font-size: 14px;
41848
+ color: var(--color-text-maxcontrast);
41849
+ }
41850
+ .cn-link-cards-page__modules-grid[data-v-1a155b6c] {
41851
+ display: grid;
41852
+ grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
41853
+ gap: 16px;
41854
+ }
41855
+ .cn-link-cards-page__modules-note[data-v-1a155b6c] {
41856
+ display: flex;
41857
+ align-items: flex-start;
41858
+ gap: 8px;
41859
+ margin: 0;
41860
+ font-size: 14px;
41861
+ color: var(--color-text-maxcontrast);
41862
+ }
41863
+ .cn-link-cards-page__modules-note-icon[data-v-1a155b6c] {
41864
+ flex: none;
41865
+ }
41449
41866
 
41450
41867
 
41451
41868
  /* NcDialog supplies the padding and the heading (via `name`); this div keeps only
@@ -43027,23 +43444,23 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
43027
43444
  }
43028
43445
 
43029
43446
 
43030
- .cn-notif-prefs__intro[data-v-2a94b3e4] {
43447
+ .cn-notif-prefs__intro[data-v-c746b496] {
43031
43448
  margin-bottom: 12px;
43032
43449
  color: var(--color-text-maxcontrast);
43033
43450
  }
43034
- .cn-notif-prefs__group[data-v-2a94b3e4] {
43451
+ .cn-notif-prefs__group[data-v-c746b496] {
43035
43452
  margin-bottom: 20px;
43036
43453
  }
43037
- .cn-notif-prefs__group-title[data-v-2a94b3e4] {
43454
+ .cn-notif-prefs__group-title[data-v-c746b496] {
43038
43455
  margin: 8px 0 8px;
43039
43456
  font-weight: bold;
43040
43457
  }
43041
- .cn-notif-prefs__grid[data-v-2a94b3e4] {
43458
+ .cn-notif-prefs__grid[data-v-c746b496] {
43042
43459
  display: grid;
43043
43460
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
43044
43461
  gap: 8px;
43045
43462
  }
43046
- .cn-notif-prefs__card[data-v-2a94b3e4] {
43463
+ .cn-notif-prefs__card[data-v-c746b496] {
43047
43464
  display: flex;
43048
43465
  flex-direction: column;
43049
43466
  align-items: flex-start;
@@ -43170,6 +43587,80 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
43170
43587
  }
43171
43588
 
43172
43589
 
43590
+ .cn-user-settings-dialog__body[data-v-8ebfd3c8] {
43591
+ display: flex;
43592
+ flex-wrap: wrap;
43593
+ gap: 0 24px;
43594
+ }
43595
+ .cn-user-settings-dialog__nav[data-v-8ebfd3c8] {
43596
+ flex: 0 0 200px;
43597
+ width: 200px;
43598
+ padding-top: 18px;
43599
+ }
43600
+ .cn-user-settings-dialog__nav ul[data-v-8ebfd3c8] {
43601
+ display: flex;
43602
+ flex-direction: column;
43603
+ gap: 2px;
43604
+ margin: 0;
43605
+ padding: 0;
43606
+ list-style: none;
43607
+ }
43608
+ .cn-user-settings-dialog__nav-link[data-v-8ebfd3c8] {
43609
+ display: flex;
43610
+ align-items: center;
43611
+ gap: 10px;
43612
+ min-height: 40px;
43613
+ padding: 0 12px;
43614
+ border-radius: var(--border-radius-element, 8px);
43615
+ font-size: 15px;
43616
+ color: var(--color-main-text);
43617
+ text-decoration: none;
43618
+ }
43619
+ .cn-user-settings-dialog__nav-link[data-v-8ebfd3c8]:hover {
43620
+ background: var(--color-background-hover);
43621
+ }
43622
+ .cn-user-settings-dialog__nav-link[data-v-8ebfd3c8]:focus-visible {
43623
+ outline: 2px solid var(--color-primary-element);
43624
+ outline-offset: 2px;
43625
+ }
43626
+ .cn-user-settings-dialog__nav-link--active[data-v-8ebfd3c8],
43627
+ .cn-user-settings-dialog__nav-link--active[data-v-8ebfd3c8]:hover {
43628
+ background: var(--color-primary-element-light);
43629
+ color: var(--color-primary-element-light-text);
43630
+ font-weight: 600;
43631
+ }
43632
+ .cn-user-settings-dialog__nav-icon[data-v-8ebfd3c8] {
43633
+ display: inline-flex;
43634
+ flex: none;
43635
+ width: 18px;
43636
+ height: 18px;
43637
+ align-items: center;
43638
+ justify-content: center;
43639
+ }
43640
+ .cn-user-settings-dialog__sections[data-v-8ebfd3c8] {
43641
+ display: flex;
43642
+ flex: 1 1 380px;
43643
+ flex-direction: column;
43644
+ min-width: 0;
43645
+ }
43646
+ .cn-user-settings-dialog__sections[data-v-8ebfd3c8] .app-settings-section {
43647
+ margin: 0;
43648
+ padding: 18px 0;
43649
+ border-top: 1px solid var(--color-border);
43650
+ }
43651
+ .cn-user-settings-dialog__sections[data-v-8ebfd3c8] .app-settings-section__name {
43652
+ margin: 0 0 12px;
43653
+ font-size: 17px;
43654
+ font-weight: 700;
43655
+ }
43656
+ .cn-user-settings-dialog__note[data-v-8ebfd3c8] {
43657
+ flex: 1 1 auto;
43658
+ margin: 0;
43659
+ font-size: 14px;
43660
+ color: var(--color-text-maxcontrast);
43661
+ }
43662
+
43663
+
43173
43664
  /* The environment banner runs along the top of the shell and cannot scroll away; the shell makes room for it. */
43174
43665
  .cn-app-root--with-environment {
43175
43666
  position: relative;
@@ -43464,51 +43955,6 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
43464
43955
  }
43465
43956
 
43466
43957
 
43467
- .cn-features-tab__grid[data-v-f4a6fe92] {
43468
- display: grid;
43469
- grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
43470
- gap: 16px;
43471
- }
43472
- .cn-features-tab__card[data-v-f4a6fe92] {
43473
- display: flex;
43474
- flex-direction: column;
43475
- gap: 8px;
43476
- padding: 16px;
43477
- background: var(--color-main-background);
43478
- border: 1px solid var(--color-border);
43479
- border-radius: var(--border-radius-large, 12px);
43480
- transition: border-color 120ms ease, box-shadow 120ms ease;
43481
- }
43482
- .cn-features-tab__card[data-v-f4a6fe92]:hover {
43483
- border-color: var(--color-primary-element);
43484
- box-shadow: 0 2px 8px var(--color-box-shadow, rgba(0, 0, 0, 0.08));
43485
- }
43486
- .cn-features-tab__title[data-v-f4a6fe92] {
43487
- margin: 0;
43488
- font-size: 1.05em;
43489
- color: var(--color-main-text);
43490
- }
43491
- .cn-features-tab__summary[data-v-f4a6fe92] {
43492
- margin: 0;
43493
- color: var(--color-text-light);
43494
- font-size: 0.95em;
43495
- line-height: 1.4;
43496
- flex: 1;
43497
- }
43498
- .cn-features-tab__link[data-v-f4a6fe92] {
43499
- display: inline-flex;
43500
- align-items: center;
43501
- gap: 4px;
43502
- color: var(--color-primary-element);
43503
- text-decoration: none;
43504
- font-size: 0.9em;
43505
- margin-top: auto;
43506
- }
43507
- .cn-features-tab__link[data-v-f4a6fe92]:hover {
43508
- text-decoration: underline;
43509
- }
43510
-
43511
-
43512
43958
  .cn-roadmap-item[data-v-f352eb12] {
43513
43959
  display: flex;
43514
43960
  flex-direction: column;
@@ -43609,34 +44055,442 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
43609
44055
  }
43610
44056
 
43611
44057
 
43612
- .cn-roadmap-tab__grid[data-v-67050643] {
44058
+ .cn-roadmap-tab__grid[data-v-732ef80f] {
43613
44059
  display: grid;
43614
44060
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
43615
44061
  gap: 16px;
43616
44062
  }
43617
- .cn-roadmap-tab__card[data-v-67050643] {
44063
+ .cn-roadmap-tab__card[data-v-732ef80f] {
43618
44064
  background: var(--color-main-background);
43619
44065
  border: 1px solid var(--color-border);
43620
44066
  border-radius: var(--border-radius-large, 12px);
43621
44067
  transition: border-color 120ms ease, box-shadow 120ms ease;
43622
44068
  }
43623
- .cn-roadmap-tab__card[data-v-67050643]:hover {
44069
+ .cn-roadmap-tab__card[data-v-732ef80f]:hover {
43624
44070
  border-color: var(--color-primary-element);
43625
44071
  box-shadow: 0 2px 8px var(--color-box-shadow, rgba(0, 0, 0, 0.08));
43626
44072
  }
43627
- .cn-roadmap-tab__loading[data-v-67050643] {
44073
+ .cn-roadmap-tab__loading[data-v-732ef80f] {
43628
44074
  display: flex;
43629
44075
  justify-content: center;
43630
44076
  padding: 32px;
43631
44077
  }
43632
44078
 
43633
44079
 
43634
- .cn-features-and-roadmap-view[data-v-191ea8ba] {
44080
+ .cn-features-board[data-v-f306c9ee] {
44081
+ box-sizing: border-box;
44082
+ display: flex;
44083
+ flex-direction: column;
44084
+ gap: var(--cn-board-section-gap, 20px);
44085
+ padding: var(--cn-board-content-padding, 24px 28px);
44086
+ max-width: 1240px;
44087
+ width: 100%;
44088
+ }
44089
+ .cn-features-board__header[data-v-f306c9ee] {
44090
+ display: flex;
44091
+ flex-direction: column;
44092
+ gap: 6px;
44093
+ padding: 4px 0 8px;
44094
+ }
44095
+ .cn-features-board__title-row[data-v-f306c9ee] {
44096
+ display: flex;
44097
+ flex-wrap: wrap;
44098
+ justify-content: space-between;
44099
+ align-items: flex-start;
44100
+ gap: 12px 24px;
44101
+ }
44102
+ .cn-features-board__title[data-v-f306c9ee] {
44103
+ flex: 1 1 320px;
44104
+ min-width: 0;
44105
+ margin: 0;
44106
+ font-size: 28px;
44107
+ font-weight: 700;
44108
+ line-height: 1.2;
44109
+ }
44110
+ .cn-features-board__header-actions[data-v-f306c9ee] {
44111
+ flex: none;
44112
+ display: flex;
44113
+ flex-wrap: wrap;
44114
+ align-items: center;
44115
+ gap: 10px;
44116
+ }
44117
+ .cn-features-board__subtitle[data-v-f306c9ee] {
44118
+ margin: 0;
44119
+ font-size: 15px;
44120
+ color: var(--color-text-maxcontrast);
44121
+ }
44122
+ .cn-features-board__tab-row[data-v-f306c9ee] {
44123
+ display: flex;
44124
+ align-items: flex-end;
44125
+ gap: 8px;
44126
+ margin-bottom: calc(-1 * var(--cn-board-section-gap, 20px));
44127
+ }
44128
+ .cn-features-board__tabs[data-v-f306c9ee] {
44129
+ display: flex;
44130
+ flex-wrap: wrap;
44131
+ gap: 4px;
44132
+ flex: 1 1 auto;
44133
+ min-width: 0;
44134
+ }
44135
+ .cn-features-board__tab[data-v-f306c9ee] {
44136
+ display: inline-flex;
44137
+ align-items: center;
44138
+ box-sizing: border-box;
44139
+ min-height: 34px;
44140
+ margin: 0 0 -1px;
44141
+ padding: 8px 12px;
44142
+ border: 1px solid var(--cn-board-hairline, var(--color-border));
44143
+ border-bottom: none;
44144
+ border-radius: 8px 8px 0 0;
44145
+ background: var(--color-background-dark);
44146
+ color: var(--color-main-text);
44147
+ font-size: 14px;
44148
+ font-weight: 400;
44149
+ cursor: pointer;
44150
+ white-space: nowrap;
44151
+ }
44152
+ .cn-features-board__tab--active[data-v-f306c9ee] {
44153
+ position: relative;
44154
+ background: var(--color-main-background);
44155
+ border-bottom: 1px solid var(--color-main-background);
44156
+ font-weight: 700;
44157
+ }
44158
+ .cn-features-board__tab-actions[data-v-f306c9ee] {
44159
+ flex: none;
44160
+ align-self: flex-start;
44161
+ margin: 0 8px 8px 0;
44162
+ }
44163
+ .cn-features-board__panel[data-v-f306c9ee] {
44164
+ display: flex;
44165
+ flex-direction: column;
44166
+ gap: 22px;
44167
+ }
44168
+ .cn-features-board__panel--tabbed[data-v-f306c9ee] {
44169
+ padding: 22px;
44170
+ border: 1px solid var(--color-border);
44171
+ border-radius: 0 var(--cn-board-card-radius, 12px) var(--cn-board-card-radius, 12px) var(--cn-board-card-radius, 12px);
44172
+ background: var(--color-main-background);
44173
+ }
44174
+ .cn-features-board__filter[data-v-f306c9ee] {
44175
+ display: flex;
44176
+ flex-wrap: wrap;
44177
+ align-items: center;
44178
+ gap: 8px;
44179
+ }
44180
+ .cn-features-board__filter-option[data-v-f306c9ee] {
44181
+ display: inline-flex;
44182
+ align-items: center;
44183
+ gap: 8px;
44184
+ margin: 0;
44185
+ font-size: 14px;
44186
+ font-weight: 600;
44187
+ cursor: pointer;
44188
+ }
44189
+ .cn-features-board__filter--chips .cn-features-board__filter-option[data-v-f306c9ee] {
44190
+ height: 36px;
44191
+ padding: 0 14px;
44192
+ border: 1px solid var(--color-border-dark);
44193
+ border-radius: 18px;
44194
+ background: var(--color-main-background);
44195
+ color: var(--color-main-text);
44196
+ }
44197
+ .cn-features-board__filter--chips .cn-features-board__filter-option--active[data-v-f306c9ee] {
44198
+ border-color: var(--color-main-text);
44199
+ background: var(--color-main-text);
44200
+ color: var(--color-main-background);
44201
+ }
44202
+ .cn-features-board__filter-count[data-v-f306c9ee] {
44203
+ font-weight: 400;
44204
+ color: var(--color-text-maxcontrast);
44205
+ }
44206
+ .cn-features-board__filter--chips .cn-features-board__filter-option--active .cn-features-board__filter-count[data-v-f306c9ee] {
44207
+ color: var(--color-border-dark);
44208
+ }
44209
+ .cn-features-board__filter--segmented[data-v-f306c9ee] {
44210
+ display: inline-flex;
44211
+ align-self: flex-start;
44212
+ gap: 2px;
44213
+ padding: 3px;
44214
+ border-radius: 8px;
44215
+ background: var(--color-background-dark);
44216
+ }
44217
+ .cn-features-board__filter--segmented .cn-features-board__filter-option[data-v-f306c9ee] {
44218
+ height: 34px;
44219
+ padding: 0 14px;
44220
+ border: 0;
44221
+ border-radius: 6px;
44222
+ background: transparent;
44223
+ color: var(--color-main-text);
44224
+ }
44225
+ .cn-features-board__filter--segmented .cn-features-board__filter-option--active[data-v-f306c9ee] {
44226
+ background: var(--color-main-background);
44227
+ box-shadow: 0 1px 2px rgba(27, 28, 29, 0.12);
44228
+ }
44229
+ .cn-features-board__body[data-v-f306c9ee] {
44230
+ display: flex;
44231
+ flex-wrap: wrap;
44232
+ align-items: flex-start;
44233
+ gap: 24px;
44234
+ }
44235
+ .cn-features-board__groups[data-v-f306c9ee] {
44236
+ flex: 999 1 520px;
44237
+ min-width: 0;
44238
+ display: flex;
44239
+ flex-direction: column;
44240
+ gap: 26px;
44241
+ }
44242
+ .cn-features-board__groups--rows[data-v-f306c9ee] {
44243
+ display: grid;
44244
+ grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
44245
+ gap: 20px;
44246
+ }
44247
+ .cn-features-board__group[data-v-f306c9ee] {
44248
+ display: flex;
44249
+ flex-direction: column;
44250
+ gap: 12px;
44251
+ max-width: none;
44252
+ margin: 0;
44253
+ }
44254
+ .cn-features-board__groups--rows .cn-features-board__group[data-v-f306c9ee] {
44255
+ padding: var(--cn-board-card-padding, 20px 22px);
44256
+ border: 1px solid var(--color-border);
44257
+ border-radius: var(--cn-board-card-radius, 12px);
44258
+ background: var(--color-main-background);
44259
+ }
44260
+ .cn-features-board__group-head[data-v-f306c9ee] {
44261
+ display: flex;
44262
+ flex-wrap: wrap;
44263
+ align-items: baseline;
44264
+ gap: 10px;
44265
+ }
44266
+ .cn-features-board__group-title[data-v-f306c9ee] {
44267
+ margin: 0;
44268
+ font-size: 18px;
44269
+ font-weight: 700;
44270
+ }
44271
+ .cn-features-board__groups--rows .cn-features-board__group-title[data-v-f306c9ee] {
44272
+ font-size: 17px;
44273
+ }
44274
+ .cn-features-board__group-caption[data-v-f306c9ee] {
44275
+ font-size: 13px;
44276
+ color: var(--color-text-maxcontrast);
44277
+ }
44278
+ .cn-features-board__cards[data-v-f306c9ee] {
44279
+ display: grid;
44280
+ grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
44281
+ gap: 16px;
44282
+ }
44283
+ .cn-features-board__card[data-v-f306c9ee] {
44284
+ display: flex;
44285
+ flex-direction: column;
44286
+ gap: 10px;
44287
+ padding: 18px;
44288
+ border: 1px solid var(--color-border);
44289
+ border-radius: var(--cn-board-card-radius, 12px);
44290
+ background: var(--color-main-background);
44291
+ }
44292
+ .cn-features-board__card-head[data-v-f306c9ee] {
44293
+ display: flex;
44294
+ flex-direction: column;
44295
+ align-items: flex-start;
44296
+ gap: 4px;
44297
+ }
44298
+ .cn-features-board__card-title[data-v-f306c9ee] {
44299
+ margin: 0;
44300
+ font-size: 17px;
44301
+ font-weight: 700;
44302
+ line-height: 1.3;
44303
+ }
44304
+ .cn-features-board__card-summary[data-v-f306c9ee] {
44305
+ margin: 0;
44306
+ font-size: 14px;
44307
+ color: var(--color-main-text);
44308
+ }
44309
+ .cn-features-board__card-footer[data-v-f306c9ee] {
44310
+ display: flex;
44311
+ justify-content: flex-end;
44312
+ align-items: center;
44313
+ min-height: 34px;
44314
+ margin-top: auto;
44315
+ padding-top: 10px;
44316
+ border-top: 1px solid var(--color-background-dark);
44317
+ }
44318
+ .cn-features-board__read-more[data-v-f306c9ee] {
44319
+ display: inline-flex;
44320
+ align-items: center;
44321
+ height: 34px;
44322
+ padding: 0 12px;
44323
+ border: 1px solid var(--color-border-dark);
44324
+ border-radius: 8px;
44325
+ background: var(--color-main-background);
44326
+ color: var(--color-main-text);
44327
+ font-size: 14px;
44328
+ font-weight: 600;
44329
+ text-decoration: none;
44330
+ }
44331
+ .cn-features-board__rows[data-v-f306c9ee] {
44332
+ display: flex;
44333
+ flex-direction: column;
44334
+ margin: 0;
44335
+ padding: 0;
44336
+ list-style: none;
44337
+ }
44338
+ .cn-features-board__row[data-v-f306c9ee] {
44339
+ display: flex;
44340
+ flex-wrap: wrap;
44341
+ align-items: center;
44342
+ gap: 6px 16px;
44343
+ padding: 10px 0;
44344
+ border-top: 1px solid var(--color-background-dark);
44345
+ }
44346
+ .cn-features-board__row-text[data-v-f306c9ee] {
44347
+ flex: 1 1 240px;
44348
+ min-width: 0;
44349
+ display: flex;
44350
+ flex-direction: column;
44351
+ gap: 2px;
44352
+ }
44353
+ .cn-features-board__row-title[data-v-f306c9ee] {
44354
+ font-size: 15px;
44355
+ font-weight: 500;
44356
+ }
44357
+ .cn-features-board__row-summary[data-v-f306c9ee] {
44358
+ font-size: 13px;
44359
+ color: var(--color-text-maxcontrast);
44360
+ }
44361
+ .cn-features-board__next[data-v-f306c9ee] {
44362
+ flex: 1 1 280px;
44363
+ min-width: 0;
44364
+ max-width: 340px;
44365
+ }
44366
+ .cn-features-board__next-card[data-v-f306c9ee] {
44367
+ display: flex;
44368
+ flex-direction: column;
44369
+ gap: 12px;
44370
+ padding: 18px;
44371
+ border: 1px solid var(--color-border);
44372
+ border-radius: var(--cn-board-card-radius, 12px);
44373
+ background: var(--color-background-hover);
44374
+ }
44375
+ .cn-features-board__next-head[data-v-f306c9ee] {
44376
+ display: flex;
44377
+ align-items: center;
44378
+ gap: 8px;
44379
+ }
44380
+ .cn-features-board__next-title[data-v-f306c9ee] {
44381
+ margin: 0;
44382
+ font-size: 18px;
44383
+ font-weight: 700;
44384
+ }
44385
+ .cn-features-board__next-lead[data-v-f306c9ee] {
44386
+ margin: 0;
44387
+ font-size: 14px;
44388
+ color: var(--color-text-maxcontrast);
44389
+ }
44390
+ .cn-features-board__next-list[data-v-f306c9ee] {
44391
+ display: flex;
44392
+ flex-direction: column;
44393
+ gap: 10px;
44394
+ margin: 0;
44395
+ padding: 0;
44396
+ list-style: none;
44397
+ }
44398
+ .cn-features-board__next-item[data-v-f306c9ee] {
44399
+ display: flex;
44400
+ flex-direction: column;
44401
+ gap: 6px;
44402
+ padding: 12px 14px;
44403
+ border: 1px solid var(--color-border);
44404
+ border-radius: 10px;
44405
+ background: var(--color-main-background);
44406
+ }
44407
+ .cn-features-board__next-link[data-v-f306c9ee] {
44408
+ font-size: 15px;
44409
+ font-weight: 600;
44410
+ line-height: 1.3;
44411
+ color: var(--color-main-text);
44412
+ text-decoration: none;
44413
+ }
44414
+ .cn-features-board__next-meta[data-v-f306c9ee] {
44415
+ display: flex;
44416
+ flex-wrap: wrap;
44417
+ align-items: center;
44418
+ gap: 8px;
44419
+ font-size: 13px;
44420
+ color: var(--color-text-maxcontrast);
44421
+ }
44422
+ .cn-features-board__next-opened[data-v-f306c9ee] {
44423
+ display: inline-flex;
44424
+ align-items: center;
44425
+ gap: 4px;
44426
+ }
44427
+ .cn-features-board__next-more[data-v-f306c9ee] {
44428
+ display: inline-flex;
44429
+ align-items: center;
44430
+ gap: 4px;
44431
+ font-size: 14px;
44432
+ font-weight: 600;
44433
+ }
44434
+ .cn-features-board__empty[data-v-f306c9ee] {
44435
+ margin: 0;
44436
+ color: var(--color-text-maxcontrast);
44437
+ }
44438
+ .cn-features-board__notice[data-v-f306c9ee] {
44439
+ margin: 0;
44440
+ }
44441
+
44442
+
44443
+ .cn-features-tab__grid[data-v-f4a6fe92] {
44444
+ display: grid;
44445
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
44446
+ gap: 16px;
44447
+ }
44448
+ .cn-features-tab__card[data-v-f4a6fe92] {
44449
+ display: flex;
44450
+ flex-direction: column;
44451
+ gap: 8px;
44452
+ padding: 16px;
44453
+ background: var(--color-main-background);
44454
+ border: 1px solid var(--color-border);
44455
+ border-radius: var(--border-radius-large, 12px);
44456
+ transition: border-color 120ms ease, box-shadow 120ms ease;
44457
+ }
44458
+ .cn-features-tab__card[data-v-f4a6fe92]:hover {
44459
+ border-color: var(--color-primary-element);
44460
+ box-shadow: 0 2px 8px var(--color-box-shadow, rgba(0, 0, 0, 0.08));
44461
+ }
44462
+ .cn-features-tab__title[data-v-f4a6fe92] {
44463
+ margin: 0;
44464
+ font-size: 1.05em;
44465
+ color: var(--color-main-text);
44466
+ }
44467
+ .cn-features-tab__summary[data-v-f4a6fe92] {
44468
+ margin: 0;
44469
+ color: var(--color-text-light);
44470
+ font-size: 0.95em;
44471
+ line-height: 1.4;
44472
+ flex: 1;
44473
+ }
44474
+ .cn-features-tab__link[data-v-f4a6fe92] {
44475
+ display: inline-flex;
44476
+ align-items: center;
44477
+ gap: 4px;
44478
+ color: var(--color-primary-element);
44479
+ text-decoration: none;
44480
+ font-size: 0.9em;
44481
+ margin-top: auto;
44482
+ }
44483
+ .cn-features-tab__link[data-v-f4a6fe92]:hover {
44484
+ text-decoration: underline;
44485
+ }
44486
+
44487
+
44488
+ .cn-features-and-roadmap-view[data-v-f19c0cb4] {
43635
44489
  max-width: 1200px;
43636
44490
  margin: 0 auto;
43637
44491
  padding: 24px 16px;
43638
44492
  }
43639
- .cn-features-and-roadmap-view__header[data-v-191ea8ba] {
44493
+ .cn-features-and-roadmap-view__header[data-v-f19c0cb4] {
43640
44494
  display: flex;
43641
44495
  align-items: center;
43642
44496
  justify-content: space-between;
@@ -43648,29 +44502,29 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
43648
44502
  room. Only the HEADER shifts right — the panel below keeps full width. */
43649
44503
  padding-inline-start: 56px;
43650
44504
  }
43651
- .cn-features-and-roadmap-view__title[data-v-191ea8ba] {
44505
+ .cn-features-and-roadmap-view__title[data-v-f19c0cb4] {
43652
44506
  font-size: 1.4em;
43653
44507
  margin: 0;
43654
44508
  color: var(--color-main-text);
43655
44509
  }
43656
- .cn-features-and-roadmap-view__actions[data-v-191ea8ba] {
44510
+ .cn-features-and-roadmap-view__actions[data-v-f19c0cb4] {
43657
44511
  display: flex;
43658
44512
  gap: 8px;
43659
44513
  align-items: center;
43660
44514
  flex-wrap: wrap;
43661
44515
  }
43662
- .cn-features-and-roadmap-view__panel[data-v-191ea8ba] {
44516
+ .cn-features-and-roadmap-view__panel[data-v-f19c0cb4] {
43663
44517
  min-height: 320px;
43664
44518
  }
43665
44519
 
43666
44520
  /* Underline the inline docs URL so it reads as a link inside the note
43667
44521
  body — NcNoteCard's default link styling drops the underline by
43668
44522
  inheriting from the host theme. */
43669
- .cn-features-and-roadmap-view__docs-note[data-v-191ea8ba] a {
44523
+ .cn-features-and-roadmap-view__docs-note[data-v-f19c0cb4] a {
43670
44524
  color: var(--color-primary-element);
43671
44525
  text-decoration: underline;
43672
44526
  }
43673
- .cn-features-and-roadmap-view__docs-note[data-v-191ea8ba] a:hover {
44527
+ .cn-features-and-roadmap-view__docs-note[data-v-f19c0cb4] a:hover {
43674
44528
  text-decoration: underline;
43675
44529
  opacity: 0.85;
43676
44530
  }