@conduction/nextcloud-vue 2.92.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 (121) 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 +2 -36
  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 +21 -0
  42. package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js.map +1 -1
  43. package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js +402 -391
  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/CnNcWidgetWidget/CnNcWidgetWidget.vue.js +1 -1
  48. package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue2.js +22 -1
  49. package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue2.js.map +1 -1
  50. package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue3.js +20 -14
  51. package/dist/esm/components/CnNcWidgetWidget/CnNcWidgetWidget.vue3.js.map +1 -1
  52. package/dist/esm/components/CnNotificationPreferences/CnNotificationPreferences.vue.js +1 -1
  53. package/dist/esm/components/CnNotificationPreferences/CnNotificationPreferences.vue2.js +2 -0
  54. package/dist/esm/components/CnNotificationPreferences/CnNotificationPreferences.vue2.js.map +1 -1
  55. package/dist/esm/components/CnNotificationPreferences/CnNotificationPreferences.vue3.js +15 -5
  56. package/dist/esm/components/CnNotificationPreferences/CnNotificationPreferences.vue3.js.map +1 -1
  57. package/dist/esm/components/CnRoadmapTab/CnRoadmapTab.vue.js +1 -1
  58. package/dist/esm/components/CnRoadmapTab/CnRoadmapTab.vue2.js +8 -30
  59. package/dist/esm/components/CnRoadmapTab/CnRoadmapTab.vue2.js.map +1 -1
  60. package/dist/esm/components/CnRoadmapTab/CnRoadmapTab.vue3.js.map +1 -1
  61. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue.js +9 -0
  62. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue.js.map +1 -0
  63. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue2.js +164 -0
  64. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue2.js.map +1 -0
  65. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue3.js +93 -0
  66. package/dist/esm/components/CnUserSettingsDialog/CnUserSettingsDialog.vue3.js.map +1 -0
  67. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue.js +1 -1
  68. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js +12 -0
  69. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js.map +1 -1
  70. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js.map +1 -1
  71. package/dist/esm/l10n/en.json.js +24 -1
  72. package/dist/esm/l10n/en.json.js.map +1 -1
  73. package/dist/esm/l10n/nl.json.js +24 -1
  74. package/dist/esm/l10n/nl.json.js.map +1 -1
  75. package/dist/esm/library-style.js +1 -1
  76. package/dist/esm/nextcloud-vue.css +887 -247
  77. package/dist/esm/utils/featureCatalog.js +135 -0
  78. package/dist/esm/utils/featureCatalog.js.map +1 -0
  79. package/dist/esm/utils/fillTemplate.js +74 -3
  80. package/dist/esm/utils/fillTemplate.js.map +1 -1
  81. package/dist/esm/utils/headerMeta.js +62 -12
  82. package/dist/esm/utils/headerMeta.js.map +1 -1
  83. package/dist/esm/utils/roadmapIssues.js +86 -0
  84. package/dist/esm/utils/roadmapIssues.js.map +1 -0
  85. package/dist/esm/utils/userDisplayName.js +47 -0
  86. package/dist/esm/utils/userDisplayName.js.map +1 -0
  87. package/dist/esm/utils/validateManifestV2.compiled.js +3 -3
  88. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  89. package/dist/nextcloud-vue.cjs.js +14820 -12966
  90. package/dist/nextcloud-vue.cjs.js.map +2 -2
  91. package/dist/nextcloud-vue.css +887 -247
  92. package/l10n/en.json +24 -1
  93. package/l10n/nl.json +24 -1
  94. package/package.json +1 -1
  95. package/src/components/CnAppRoot/CnAppRoot.md +2 -0
  96. package/src/components/CnAppRoot/CnAppRoot.vue +66 -5
  97. package/src/components/CnChoiceCards/CnChoiceCards.md +27 -0
  98. package/src/components/CnChoiceCards/CnChoiceCards.vue +168 -3
  99. package/src/components/CnDashboardPage/CnDashboardPage.vue +45 -6
  100. package/src/components/CnDataTable/CnDataTable.vue +2 -36
  101. package/src/components/CnDetailPage/CnDetailPage.vue +5 -3
  102. package/src/components/CnFactsWidget/CnFactsWidget.vue +6 -4
  103. package/src/components/CnFeaturesAndRoadmapPage/CnFeaturesAndRoadmapPage.vue +51 -1
  104. package/src/components/CnFeaturesAndRoadmapView/CnFeaturesAndRoadmapView.vue +98 -13
  105. package/src/components/CnFeaturesBoard/CnFeaturesBoard.vue +1053 -0
  106. package/src/components/CnFormDialog/CnFormDialog.vue +606 -562
  107. package/src/components/CnNcWidgetWidget/CnNcWidgetWidget.vue +23 -2
  108. package/src/components/CnNotificationPreferences/CnNotificationPreferences.vue +5 -0
  109. package/src/components/CnRoadmapTab/CnRoadmapTab.vue +6 -28
  110. package/src/components/CnUserSettingsDialog/CnUserSettingsDialog.vue +305 -0
  111. package/src/components/CnWidgetWrapper/CnWidgetWrapper.vue +12 -0
  112. package/src/css/dialog.css +47 -0
  113. package/src/css/look-board-detail.css +8 -0
  114. package/src/css/look-board.css +33 -0
  115. package/src/schemas/app-manifest-v2.schema.json +9 -3
  116. package/src/utils/featureCatalog.js +132 -0
  117. package/src/utils/fillTemplate.js +73 -2
  118. package/src/utils/headerMeta.js +62 -12
  119. package/src/utils/roadmapIssues.js +82 -0
  120. package/src/utils/userDisplayName.js +54 -0
  121. 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-b7ff10cc] {
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-b7ff10cc] {
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-b7ff10cc] {
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-b7ff10cc] {
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-b7ff10cc] {
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-b7ff10cc] {
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-b7ff10cc] {
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-b7ff10cc] > * {
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-b7ff10cc] > :not(.cn-form-dialog__field),
20752
- .cn-form-dialog__form--two-column > .cn-form-dialog__field--wide[data-v-b7ff10cc] {
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-b7ff10cc] {
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-b7ff10cc],
20764
- .cn-form-dialog__select-wrapper[data-v-b7ff10cc],
20765
- .cn-form-dialog__json-wrapper[data-v-b7ff10cc] {
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-b7ff10cc] {
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-b7ff10cc] {
20880
+ .cn-form-dialog__semantic-unresolved[data-v-65a5754f] {
20779
20881
  cursor: not-allowed;
20780
20882
  }
20781
- .cn-form-dialog__textarea[data-v-b7ff10cc] {
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-b7ff10cc]: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-b7ff10cc]: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-b7ff10cc] {
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-b7ff10cc] {
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-b7ff10cc] {
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
 
@@ -28648,7 +28750,7 @@ tr.file-picker__row td.row-name[data-v-1f96131b] {
28648
28750
  }
28649
28751
 
28650
28752
 
28651
- .cn-nc-widget-widget[data-v-04be70f3] {
28753
+ .cn-nc-widget-widget[data-v-f553a198] {
28652
28754
  display: flex;
28653
28755
  flex-direction: column;
28654
28756
  width: 100%;
@@ -28664,19 +28766,19 @@ tr.file-picker__row td.row-name[data-v-1f96131b] {
28664
28766
  * bottom, flush to the header on top). Same design tokens as core; overridable
28665
28767
  * via the host's CnWidgetWrapper styleConfig / nldesign.
28666
28768
  */
28667
- .cn-nc-widget-widget__header[data-v-04be70f3] {
28769
+ .cn-nc-widget-widget__header[data-v-f553a198] {
28668
28770
  display: flex;
28669
28771
  align-items: center;
28670
28772
  gap: 16px;
28671
28773
  padding: 16px;
28672
28774
  font-weight: 700;
28673
28775
  }
28674
- .cn-nc-widget-widget__header-icon[data-v-04be70f3] {
28776
+ .cn-nc-widget-widget__header-icon[data-v-f553a198] {
28675
28777
  width: 32px;
28676
28778
  height: 32px;
28677
28779
  flex: 0 0 auto;
28678
28780
  }
28679
- .cn-nc-widget-widget__header-title[data-v-04be70f3] {
28781
+ .cn-nc-widget-widget__header-title[data-v-f553a198] {
28680
28782
  flex: 1;
28681
28783
  font-size: 20px;
28682
28784
  font-weight: 700;
@@ -28685,18 +28787,18 @@ tr.file-picker__row td.row-name[data-v-1f96131b] {
28685
28787
  text-overflow: ellipsis;
28686
28788
  white-space: nowrap;
28687
28789
  }
28688
- .cn-nc-widget-widget__show-all[data-v-04be70f3] {
28790
+ .cn-nc-widget-widget__show-all[data-v-f553a198] {
28689
28791
  align-self: flex-start;
28690
28792
  padding: 8px 0 0;
28691
28793
  color: var(--color-primary-element);
28692
28794
  font-weight: 600;
28693
28795
  text-decoration: none;
28694
28796
  }
28695
- .cn-nc-widget-widget__show-all[data-v-04be70f3]:hover,
28696
- .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 {
28697
28799
  text-decoration: underline;
28698
28800
  }
28699
- .cn-nc-widget-widget__native[data-v-04be70f3] {
28801
+ .cn-nc-widget-widget__native[data-v-f553a198] {
28700
28802
  flex: 1;
28701
28803
  overflow: auto;
28702
28804
  padding: 0 16px 16px;
@@ -28730,7 +28832,7 @@ tr.file-picker__row td.row-name[data-v-1f96131b] {
28730
28832
  * still claims that much room regardless of the grid track size, so the
28731
28833
  * track itself must not go below it.
28732
28834
  */
28733
- .cn-nc-widget-widget--horizontal[data-v-04be70f3] .dashboard-widget > ul {
28835
+ .cn-nc-widget-widget--horizontal[data-v-f553a198] .dashboard-widget > ul {
28734
28836
  display: grid;
28735
28837
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
28736
28838
  gap: 8px;
@@ -28738,33 +28840,33 @@ tr.file-picker__row td.row-name[data-v-1f96131b] {
28738
28840
  margin: 0;
28739
28841
  padding: 0;
28740
28842
  }
28741
- .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 {
28742
28844
  width: auto;
28743
28845
  min-width: 0;
28744
28846
  }
28745
- .cn-nc-widget-widget--horizontal[data-v-04be70f3] .item-list__entry {
28847
+ .cn-nc-widget-widget--horizontal[data-v-f553a198] .item-list__entry {
28746
28848
  height: 100%;
28747
28849
  margin: 0;
28748
28850
  border: 1px solid var(--color-border);
28749
28851
  border-radius: var(--border-radius-large);
28750
28852
  }
28751
- .cn-nc-widget-widget__body[data-v-04be70f3] {
28853
+ .cn-nc-widget-widget__body[data-v-f553a198] {
28752
28854
  flex: 1;
28753
28855
  overflow: auto;
28754
28856
  padding: 0 16px 16px;
28755
28857
  }
28756
- .cn-nc-widget-widget__body--vertical[data-v-04be70f3] {
28858
+ .cn-nc-widget-widget__body--vertical[data-v-f553a198] {
28757
28859
  display: flex;
28758
28860
  flex-direction: column;
28759
28861
  gap: 8px;
28760
28862
  }
28761
- .cn-nc-widget-widget__body--horizontal[data-v-04be70f3] {
28863
+ .cn-nc-widget-widget__body--horizontal[data-v-f553a198] {
28762
28864
  display: flex;
28763
28865
  flex-direction: row;
28764
28866
  flex-wrap: wrap;
28765
28867
  gap: 12px;
28766
28868
  }
28767
- .cn-nc-widget-widget__state[data-v-04be70f3] {
28869
+ .cn-nc-widget-widget__state[data-v-f553a198] {
28768
28870
  display: flex;
28769
28871
  align-items: center;
28770
28872
  justify-content: center;
@@ -28773,59 +28875,59 @@ tr.file-picker__row td.row-name[data-v-1f96131b] {
28773
28875
  color: var(--color-text-maxcontrast);
28774
28876
  font-style: italic;
28775
28877
  }
28776
- .cn-nc-widget-widget__item[data-v-04be70f3] {
28878
+ .cn-nc-widget-widget__item[data-v-f553a198] {
28777
28879
  display: flex;
28778
28880
  text-decoration: none;
28779
28881
  color: var(--color-main-text);
28780
28882
  border-radius: var(--border-radius);
28781
28883
  padding: 4px;
28782
28884
  }
28783
- .cn-nc-widget-widget__item[data-v-04be70f3]:hover {
28885
+ .cn-nc-widget-widget__item[data-v-f553a198]:hover {
28784
28886
  background-color: var(--color-background-hover);
28785
28887
  }
28786
- .cn-nc-widget-widget__item--vertical[data-v-04be70f3] {
28888
+ .cn-nc-widget-widget__item--vertical[data-v-f553a198] {
28787
28889
  flex-direction: row;
28788
28890
  align-items: center;
28789
28891
  gap: 8px;
28790
28892
  }
28791
- .cn-nc-widget-widget__item--horizontal[data-v-04be70f3] {
28893
+ .cn-nc-widget-widget__item--horizontal[data-v-f553a198] {
28792
28894
  flex-direction: column;
28793
28895
  align-items: center;
28794
28896
  width: 120px;
28795
28897
  text-align: center;
28796
28898
  }
28797
- .cn-nc-widget-widget__item-icon-wrap[data-v-04be70f3] {
28899
+ .cn-nc-widget-widget__item-icon-wrap[data-v-f553a198] {
28798
28900
  width: 32px;
28799
28901
  height: 32px;
28800
28902
  flex: 0 0 32px;
28801
28903
  position: relative;
28802
28904
  }
28803
- .cn-nc-widget-widget__item-icon[data-v-04be70f3] {
28905
+ .cn-nc-widget-widget__item-icon[data-v-f553a198] {
28804
28906
  width: 32px;
28805
28907
  height: 32px;
28806
28908
  object-fit: cover;
28807
28909
  border-radius: 50%;
28808
28910
  }
28809
- .cn-nc-widget-widget__item-overlay[data-v-04be70f3] {
28911
+ .cn-nc-widget-widget__item-overlay[data-v-f553a198] {
28810
28912
  position: absolute;
28811
28913
  right: -2px;
28812
28914
  bottom: -2px;
28813
28915
  width: 14px;
28814
28916
  height: 14px;
28815
28917
  }
28816
- .cn-nc-widget-widget__item-text[data-v-04be70f3] {
28918
+ .cn-nc-widget-widget__item-text[data-v-f553a198] {
28817
28919
  display: flex;
28818
28920
  flex-direction: column;
28819
28921
  min-width: 0;
28820
28922
  flex: 1;
28821
28923
  }
28822
- .cn-nc-widget-widget__item-title[data-v-04be70f3] {
28924
+ .cn-nc-widget-widget__item-title[data-v-f553a198] {
28823
28925
  font-weight: 600;
28824
28926
  overflow: hidden;
28825
28927
  text-overflow: ellipsis;
28826
28928
  white-space: nowrap;
28827
28929
  }
28828
- .cn-nc-widget-widget__item-subtitle[data-v-04be70f3] {
28930
+ .cn-nc-widget-widget__item-subtitle[data-v-f553a198] {
28829
28931
  font-size: 0.85em;
28830
28932
  color: var(--color-text-maxcontrast);
28831
28933
  overflow: hidden;
@@ -29522,13 +29624,13 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29522
29624
  }
29523
29625
 
29524
29626
 
29525
- .cn-facts-widget[data-v-8146cb58] {
29627
+ .cn-facts-widget[data-v-e1992d24] {
29526
29628
  display: flex;
29527
29629
  flex-direction: column;
29528
29630
  gap: 10px;
29529
29631
  min-width: 0;
29530
29632
  }
29531
- .cn-facts-widget__rows[data-v-8146cb58] {
29633
+ .cn-facts-widget__rows[data-v-e1992d24] {
29532
29634
  display: grid;
29533
29635
  grid-template-columns: max-content 1fr;
29534
29636
  gap: 8px 16px;
@@ -29537,7 +29639,7 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29537
29639
  }
29538
29640
 
29539
29641
  /* Each row is a grid of its own children: the wrapper takes no box. */
29540
- .cn-facts-widget__row[data-v-8146cb58] {
29642
+ .cn-facts-widget__row[data-v-e1992d24] {
29541
29643
  display: contents;
29542
29644
  }
29543
29645
 
@@ -29545,13 +29647,13 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29545
29647
  pushed the label to the right of its column and added 12px around both. The
29546
29648
  class is doubled so these resets outrank that rule, and a dossiq-style
29547
29649
  `:deep()` override in an app is not needed. */
29548
- .cn-facts-widget__label.cn-facts-widget__label[data-v-8146cb58] {
29650
+ .cn-facts-widget__label.cn-facts-widget__label[data-v-e1992d24] {
29549
29651
  margin: 0;
29550
29652
  padding: 0;
29551
29653
  text-align: start;
29552
29654
  color: var(--color-text-maxcontrast);
29553
29655
  }
29554
- .cn-facts-widget__value.cn-facts-widget__value[data-v-8146cb58] {
29656
+ .cn-facts-widget__value.cn-facts-widget__value[data-v-e1992d24] {
29555
29657
  margin: 0;
29556
29658
  padding: 0;
29557
29659
  text-align: start;
@@ -29559,20 +29661,20 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29559
29661
  min-width: 0;
29560
29662
  overflow-wrap: anywhere;
29561
29663
  }
29562
- .cn-facts-widget__title[data-v-8146cb58] {
29664
+ .cn-facts-widget__title[data-v-e1992d24] {
29563
29665
  font-size: 15px;
29564
29666
  font-weight: 600;
29565
29667
  color: var(--color-main-text);
29566
29668
  }
29567
- .cn-facts-widget__line[data-v-8146cb58] {
29669
+ .cn-facts-widget__line[data-v-e1992d24] {
29568
29670
  font-size: 13px;
29569
29671
  color: var(--color-text-maxcontrast);
29570
29672
  }
29571
- .cn-facts-widget__muted[data-v-8146cb58] {
29673
+ .cn-facts-widget__muted[data-v-e1992d24] {
29572
29674
  margin: 0;
29573
29675
  color: var(--color-text-maxcontrast);
29574
29676
  }
29575
- .cn-facts-widget__label .hidden-visually[data-v-8146cb58] {
29677
+ .cn-facts-widget__label .hidden-visually[data-v-e1992d24] {
29576
29678
  clip-path: inset(50%);
29577
29679
  height: 1px;
29578
29680
  overflow: hidden;
@@ -29580,23 +29682,23 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29580
29682
  white-space: nowrap;
29581
29683
  width: 1px;
29582
29684
  }
29583
- .cn-facts-widget__label--icon[data-v-8146cb58] {
29685
+ .cn-facts-widget__label--icon[data-v-e1992d24] {
29584
29686
  align-items: center;
29585
29687
  display: flex;
29586
29688
  }
29587
- .cn-facts-widget__value-link[data-v-8146cb58] {
29689
+ .cn-facts-widget__value-link[data-v-e1992d24] {
29588
29690
  color: var(--color-primary-element);
29589
29691
  text-decoration: underline;
29590
29692
  }
29591
- .cn-facts-widget__inline-button[data-v-8146cb58],
29592
- .cn-facts-widget__icon-button[data-v-8146cb58],
29593
- .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] {
29594
29696
  align-items: center;
29595
29697
  cursor: pointer;
29596
29698
  display: inline-flex;
29597
29699
  font: inherit;
29598
29700
  }
29599
- .cn-facts-widget__inline-button[data-v-8146cb58] {
29701
+ .cn-facts-widget__inline-button[data-v-e1992d24] {
29600
29702
  background: var(--color-main-background);
29601
29703
  border: 1px solid var(--color-border-dark);
29602
29704
  border-radius: 16px;
@@ -29607,7 +29709,7 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29607
29709
  min-height: 28px;
29608
29710
  padding: 0 10px;
29609
29711
  }
29610
- .cn-facts-widget__icon-button[data-v-8146cb58] {
29712
+ .cn-facts-widget__icon-button[data-v-e1992d24] {
29611
29713
  background: transparent;
29612
29714
  border: 0;
29613
29715
  border-radius: 6px;
@@ -29616,23 +29718,23 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29616
29718
  padding: 2px;
29617
29719
  vertical-align: middle;
29618
29720
  }
29619
- .cn-facts-widget__icon-button[data-v-8146cb58]:hover,
29620
- .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 {
29621
29723
  background: var(--color-background-hover);
29622
29724
  color: var(--color-main-text);
29623
29725
  }
29624
- .cn-facts-widget__text[data-v-8146cb58] {
29726
+ .cn-facts-widget__text[data-v-e1992d24] {
29625
29727
  color: var(--color-main-text);
29626
29728
  font-size: 15px;
29627
29729
  }
29628
29730
 
29629
29731
  /* A lead: an icon tile or initials beside a bold title and a muted subtitle. */
29630
- .cn-facts-widget__lead[data-v-8146cb58] {
29732
+ .cn-facts-widget__lead[data-v-e1992d24] {
29631
29733
  align-items: center;
29632
29734
  display: flex;
29633
29735
  gap: 12px;
29634
29736
  }
29635
- .cn-facts-widget__lead-tile[data-v-8146cb58] {
29737
+ .cn-facts-widget__lead-tile[data-v-e1992d24] {
29636
29738
  align-items: center;
29637
29739
  background: var(--color-background-dark);
29638
29740
  border-radius: 8px;
@@ -29645,29 +29747,29 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29645
29747
  justify-content: center;
29646
29748
  width: 40px;
29647
29749
  }
29648
- .cn-facts-widget__lead-tile--success[data-v-8146cb58] {
29750
+ .cn-facts-widget__lead-tile--success[data-v-e1992d24] {
29649
29751
  background: color-mix(in srgb, var(--color-success) 14%, var(--color-main-background));
29650
29752
  border-radius: 50%;
29651
29753
  color: var(--color-success-text, var(--color-success));
29652
29754
  }
29653
- .cn-facts-widget__lead-tile--info[data-v-8146cb58] {
29755
+ .cn-facts-widget__lead-tile--info[data-v-e1992d24] {
29654
29756
  background: var(--color-primary-element-light);
29655
29757
  border-radius: 50%;
29656
29758
  color: var(--color-primary-element-light-text, var(--color-primary-element));
29657
29759
  }
29658
- .cn-facts-widget__lead-text[data-v-8146cb58] {
29760
+ .cn-facts-widget__lead-text[data-v-e1992d24] {
29659
29761
  display: flex;
29660
29762
  flex-direction: column;
29661
29763
  min-width: 0;
29662
29764
  }
29663
- .cn-facts-widget__lead-title[data-v-8146cb58] {
29765
+ .cn-facts-widget__lead-title[data-v-e1992d24] {
29664
29766
  font-size: 15px;
29665
29767
  }
29666
- .cn-facts-widget__lead-subtitle[data-v-8146cb58] {
29768
+ .cn-facts-widget__lead-subtitle[data-v-e1992d24] {
29667
29769
  color: var(--color-text-maxcontrast);
29668
29770
  font-size: 13px;
29669
29771
  }
29670
- .cn-facts-widget__action[data-v-8146cb58] {
29772
+ .cn-facts-widget__action[data-v-e1992d24] {
29671
29773
  align-self: flex-start;
29672
29774
  background: var(--color-primary-element-light);
29673
29775
  border: 0;
@@ -29679,11 +29781,11 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29679
29781
  min-height: 32px;
29680
29782
  padding: 0 14px;
29681
29783
  }
29682
- .cn-facts-widget__action[data-v-8146cb58]:hover,
29683
- .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 {
29684
29786
  background: var(--color-primary-element-light-hover, var(--color-primary-element-light));
29685
29787
  }
29686
- .cn-facts-widget__link[data-v-8146cb58] {
29788
+ .cn-facts-widget__link[data-v-e1992d24] {
29687
29789
  font-size: 14px;
29688
29790
  font-weight: 600;
29689
29791
  color: var(--color-primary-element);
@@ -34640,26 +34742,26 @@ to {
34640
34742
  text-decoration: underline;
34641
34743
  }
34642
34744
  @charset "UTF-8";
34643
- .cn-choice-cards[data-v-c551354c] {
34745
+ .cn-choice-cards[data-v-8d2b4ff4] {
34644
34746
  border: none;
34645
34747
  padding: 0;
34646
34748
  margin: 0;
34647
34749
  min-inline-size: 0;
34648
34750
  }
34649
34751
 
34650
- .cn-choice-cards__legend[data-v-c551354c] {
34752
+ .cn-choice-cards__legend[data-v-8d2b4ff4] {
34651
34753
  padding: 0;
34652
34754
  margin-block-end: 8px;
34653
34755
  font-weight: bold;
34654
34756
  }
34655
34757
 
34656
- .cn-choice-cards__loading[data-v-c551354c] {
34758
+ .cn-choice-cards__loading[data-v-8d2b4ff4] {
34657
34759
  display: flex;
34658
34760
  justify-content: center;
34659
34761
  padding: 24px 0;
34660
34762
  }
34661
34763
 
34662
- .cn-choice-cards__grid[data-v-c551354c] {
34764
+ .cn-choice-cards__grid[data-v-8d2b4ff4] {
34663
34765
  display: grid;
34664
34766
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
34665
34767
  gap: 12px;
@@ -34671,26 +34773,26 @@ to {
34671
34773
  padding: 12px;
34672
34774
  }
34673
34775
 
34674
- .cn-choice-cards__cell[data-v-c551354c] {
34776
+ .cn-choice-cards__cell[data-v-8d2b4ff4] {
34675
34777
  display: flex;
34676
34778
  flex-direction: column;
34677
34779
  gap: 8px;
34678
34780
  min-inline-size: 0;
34679
34781
  }
34680
34782
 
34681
- .cn-choice-cards__actions[data-v-c551354c] {
34783
+ .cn-choice-cards__actions[data-v-8d2b4ff4] {
34682
34784
  display: flex;
34683
34785
  flex-direction: column;
34684
34786
  gap: 4px;
34685
34787
  }
34686
34788
 
34687
- .cn-choice-cards__option[data-v-c551354c] {
34789
+ .cn-choice-cards__option[data-v-8d2b4ff4] {
34688
34790
  position: relative;
34689
34791
  display: block;
34690
34792
  cursor: pointer;
34691
34793
  }
34692
34794
 
34693
- .cn-choice-cards__input[data-v-c551354c] {
34795
+ .cn-choice-cards__input[data-v-8d2b4ff4] {
34694
34796
  position: absolute;
34695
34797
  inset-block-start: 16px;
34696
34798
  inset-inline-end: 14px;
@@ -34700,7 +34802,7 @@ to {
34700
34802
  }
34701
34803
 
34702
34804
  /* Room for the input, so a long title never runs underneath it. */
34703
- .cn-choice-cards__option[data-v-c551354c] .cn-card {
34805
+ .cn-choice-cards__option[data-v-8d2b4ff4] .cn-card {
34704
34806
  padding-inline-end: 44px;
34705
34807
  transition: box-shadow 0.2s ease, border-color 0.2s ease;
34706
34808
  }
@@ -34711,25 +34813,103 @@ to {
34711
34813
  touches a card, and the grid twitches. The border colour below already
34712
34814
  carries hover, so the scale is dropped: at (0,3,0) this beats the global
34713
34815
  `.cn-card:hover` at (0,2,0). */
34714
- .cn-choice-cards__option[data-v-c551354c]:hover .cn-card {
34816
+ .cn-choice-cards__option[data-v-8d2b4ff4]:hover .cn-card {
34715
34817
  border-color: var(--color-primary-element);
34716
34818
  transform: none;
34717
34819
  }
34718
34820
 
34719
34821
  /* The focus ring belongs on the card, not on the small input inside it. */
34720
- .cn-choice-cards__input[data-v-c551354c]:focus-visible + .cn-card {
34822
+ .cn-choice-cards__input[data-v-8d2b4ff4]:focus-visible + .cn-card {
34721
34823
  outline: 2px solid var(--color-primary-element);
34722
34824
  outline-offset: 2px;
34723
34825
  }
34724
34826
 
34725
- .cn-choice-cards__input[data-v-c551354c]:disabled {
34827
+ .cn-choice-cards__input[data-v-8d2b4ff4]:disabled {
34726
34828
  cursor: default;
34727
34829
  }
34728
34830
 
34729
- .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;
34730
34866
  opacity: 0.6;
34731
34867
  }
34732
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
+
34733
34913
  .cn-wizard-dialog__step-body[data-v-4a9bf6d1] {
34734
34914
  min-height: 200px;
34735
34915
  }
@@ -38471,7 +38651,7 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38471
38651
  }
38472
38652
 
38473
38653
 
38474
- .cn-dashboard-page[data-v-42bc14a4] {
38654
+ .cn-dashboard-page[data-v-582eaf2c] {
38475
38655
  padding: 20px;
38476
38656
  max-width: 1800px;
38477
38657
  /* Centre the leftover space once the cap engages, so a wide screen shows
@@ -38485,7 +38665,7 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38485
38665
  overflow-y: auto;
38486
38666
  box-sizing: border-box;
38487
38667
  }
38488
- .cn-dashboard-page__header[data-v-42bc14a4] {
38668
+ .cn-dashboard-page__header[data-v-582eaf2c] {
38489
38669
  display: flex;
38490
38670
  justify-content: space-between;
38491
38671
  align-items: flex-start;
@@ -38497,21 +38677,21 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38497
38677
  room. Only the HEADER shifts right — body widgets keep full width. */
38498
38678
  padding-inline-start: 56px;
38499
38679
  }
38500
- .cn-dashboard-page__header-left[data-v-42bc14a4] {
38680
+ .cn-dashboard-page__header-left[data-v-582eaf2c] {
38501
38681
  min-width: 0;
38502
38682
  }
38503
- .cn-dashboard-page__title-row[data-v-42bc14a4] {
38683
+ .cn-dashboard-page__title-row[data-v-582eaf2c] {
38504
38684
  display: flex;
38505
38685
  align-items: center;
38506
38686
  flex-wrap: wrap;
38507
38687
  gap: 12px;
38508
38688
  }
38509
- .cn-dashboard-page__title[data-v-42bc14a4] {
38689
+ .cn-dashboard-page__title[data-v-582eaf2c] {
38510
38690
  margin: 0;
38511
38691
  font-size: 20px;
38512
38692
  font-weight: 700;
38513
38693
  }
38514
- .cn-dashboard-page__description[data-v-42bc14a4] {
38694
+ .cn-dashboard-page__description[data-v-582eaf2c] {
38515
38695
  margin: 4px 0 0;
38516
38696
  font-size: 14px;
38517
38697
  color: var(--color-text-maxcontrast);
@@ -38519,19 +38699,19 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38519
38699
 
38520
38700
  /* Board look (screens-dashboard-parity): h1 28/700, a 15px grey subtitle 6px
38521
38701
  under it, and 40px buttons with a 10px gap. */
38522
- .cn-dashboard-page--board .cn-dashboard-page__title[data-v-42bc14a4] {
38702
+ .cn-dashboard-page--board .cn-dashboard-page__title[data-v-582eaf2c] {
38523
38703
  font-size: 28px;
38524
38704
  font-weight: 700;
38525
38705
  line-height: 1.2;
38526
38706
  }
38527
- .cn-dashboard-page--board .cn-dashboard-page__description[data-v-42bc14a4] {
38707
+ .cn-dashboard-page--board .cn-dashboard-page__description[data-v-582eaf2c] {
38528
38708
  margin: 6px 0 0;
38529
38709
  font-size: 15px;
38530
38710
  }
38531
- .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] {
38532
38712
  gap: 10px;
38533
38713
  }
38534
- .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 {
38535
38715
  min-height: var(--cn-board-control-height, 40px);
38536
38716
  height: var(--cn-board-control-height, 40px);
38537
38717
  }
@@ -38539,17 +38719,17 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38539
38719
  /* The switch row under the header (screens-dashboard-greeting-header): the
38540
38720
  view switch left, the `viewLinks` pills right (DqMijnWerk: pills 34px high,
38541
38721
  radius 17, 13px/600, a 14px icon, primary light on primary deep). */
38542
- .cn-dashboard-page__switch-row[data-v-42bc14a4] {
38722
+ .cn-dashboard-page__switch-row[data-v-582eaf2c] {
38543
38723
  display: flex;
38544
38724
  flex-wrap: wrap;
38545
38725
  align-items: center;
38546
38726
  gap: 10px;
38547
38727
  margin-bottom: var(--cn-board-section-gap, 20px);
38548
38728
  }
38549
- .cn-dashboard-page__switch-row-spacer[data-v-42bc14a4] {
38729
+ .cn-dashboard-page__switch-row-spacer[data-v-582eaf2c] {
38550
38730
  flex: 1 1 auto;
38551
38731
  }
38552
- .cn-dashboard-page__view-link[data-v-42bc14a4] {
38732
+ .cn-dashboard-page__view-link[data-v-582eaf2c] {
38553
38733
  display: inline-flex;
38554
38734
  align-items: center;
38555
38735
  gap: 6px;
@@ -38563,36 +38743,45 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38563
38743
  white-space: nowrap;
38564
38744
  text-decoration: none !important;
38565
38745
  }
38566
- .cn-dashboard-page__view-link[data-v-42bc14a4]:hover {
38746
+ .cn-dashboard-page__view-link[data-v-582eaf2c]:hover {
38567
38747
  background: var(--color-primary-element-light-hover, var(--color-primary-element-light));
38568
38748
  }
38569
- .cn-dashboard-page__view-link[data-v-42bc14a4]:focus-visible {
38749
+ .cn-dashboard-page__view-link[data-v-582eaf2c]:focus-visible {
38570
38750
  outline: 2px solid var(--color-main-text);
38571
38751
  outline-offset: 2px;
38572
38752
  }
38573
- .cn-dashboard-page__view-link-icon[data-v-42bc14a4] {
38753
+ .cn-dashboard-page__view-link-icon[data-v-582eaf2c] {
38574
38754
  display: inline-flex;
38575
38755
  }
38576
38756
 
38577
38757
  /* The period group, in a row of its own between the header and the KPI row. */
38578
- .cn-dashboard-page__date-range--segmented[data-v-42bc14a4] {
38758
+ .cn-dashboard-page__date-range--segmented[data-v-582eaf2c] {
38579
38759
  margin-bottom: 16px;
38580
38760
  }
38581
- .cn-dashboard-page__date-segmented[data-v-42bc14a4] {
38761
+ .cn-dashboard-page__date-segmented[data-v-582eaf2c] {
38582
38762
  display: flex;
38583
38763
  align-items: center;
38584
38764
  gap: 8px;
38585
38765
  }
38586
38766
 
38587
38767
  /* The KPI row above the grid: tiles are cells of the auto-fit grid. */
38588
- .cn-dashboard-page__kpi-row[data-v-42bc14a4] {
38768
+ .cn-dashboard-page__kpi-row[data-v-582eaf2c] {
38589
38769
  margin-bottom: var(--cn-board-section-gap, 16px);
38590
38770
  }
38591
- .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] {
38592
38781
  display: flex;
38593
38782
  min-width: 0;
38594
38783
  }
38595
- .cn-dashboard-page__kpi-cell[data-v-42bc14a4] > * {
38784
+ .cn-dashboard-page__kpi-cell[data-v-582eaf2c] > * {
38596
38785
  flex: 1 1 auto;
38597
38786
  min-width: 0;
38598
38787
  }
@@ -38605,7 +38794,7 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38605
38794
  scoped chip rules then silently don't match and the chip collapses into
38606
38795
  NcActions' ~30px icon slot (text wraps to "Last / 30 / days"). The
38607
38796
  data-testid is stable across chunks, so those rules match regardless. */
38608
- .cn-dashboard-page__header-actions[data-v-42bc14a4] {
38797
+ .cn-dashboard-page__header-actions[data-v-582eaf2c] {
38609
38798
  display: flex;
38610
38799
  align-items: center;
38611
38800
  gap: 8px;
@@ -38621,19 +38810,19 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38621
38810
 
38622
38811
  /* Date-range header band. Kept compact so it doesn't open a tall gap
38623
38812
  above the grid; the pills variant is a single tidy toggle row. */
38624
- .cn-dashboard-page__date-range[data-v-42bc14a4] {
38813
+ .cn-dashboard-page__date-range[data-v-582eaf2c] {
38625
38814
  margin-bottom: 12px;
38626
38815
  }
38627
- .cn-dashboard-page__date-range--pills[data-v-42bc14a4] {
38816
+ .cn-dashboard-page__date-range--pills[data-v-582eaf2c] {
38628
38817
  margin-bottom: 8px;
38629
38818
  }
38630
- .cn-dashboard-page__date-pills[data-v-42bc14a4] {
38819
+ .cn-dashboard-page__date-pills[data-v-582eaf2c] {
38631
38820
  display: flex;
38632
38821
  align-items: center;
38633
38822
  flex-wrap: wrap;
38634
38823
  gap: 6px;
38635
38824
  }
38636
- .cn-dashboard-page__date-pill[data-v-42bc14a4] {
38825
+ .cn-dashboard-page__date-pill[data-v-582eaf2c] {
38637
38826
  display: inline-flex;
38638
38827
  align-items: center;
38639
38828
  padding: 5px 14px;
@@ -38648,77 +38837,77 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38648
38837
  cursor: pointer;
38649
38838
  transition: background-color 100ms ease, border-color 100ms ease, color 100ms ease;
38650
38839
  }
38651
- .cn-dashboard-page__date-pill[data-v-42bc14a4]:hover {
38840
+ .cn-dashboard-page__date-pill[data-v-582eaf2c]:hover {
38652
38841
  background: var(--color-background-hover);
38653
38842
  }
38654
- .cn-dashboard-page__date-pill[data-v-42bc14a4]:focus-visible {
38843
+ .cn-dashboard-page__date-pill[data-v-582eaf2c]:focus-visible {
38655
38844
  outline: 2px solid var(--color-primary-element);
38656
38845
  outline-offset: 2px;
38657
38846
  }
38658
- .cn-dashboard-page__date-pill--active[data-v-42bc14a4] {
38847
+ .cn-dashboard-page__date-pill--active[data-v-582eaf2c] {
38659
38848
  background: var(--color-primary-element);
38660
38849
  border-color: var(--color-primary-element);
38661
38850
  color: var(--color-primary-element-text);
38662
38851
  }
38663
- .cn-dashboard-page__date-pill--active[data-v-42bc14a4]:hover {
38852
+ .cn-dashboard-page__date-pill--active[data-v-582eaf2c]:hover {
38664
38853
  background: var(--color-primary-element-hover, var(--color-primary-element));
38665
38854
  }
38666
38855
 
38667
38856
  /* The custom-range pill is de-emphasised — dashed outline, muted text —
38668
38857
  so it reads as an escape hatch rather than a primary option. */
38669
- .cn-dashboard-page__date-pill--custom[data-v-42bc14a4] {
38858
+ .cn-dashboard-page__date-pill--custom[data-v-582eaf2c] {
38670
38859
  border-style: dashed;
38671
38860
  color: var(--color-text-maxcontrast);
38672
38861
  }
38673
- .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 {
38674
38863
  min-width: 0;
38675
38864
  min-height: 0;
38676
38865
  padding: 0;
38677
38866
  background: transparent;
38678
38867
  border: none;
38679
38868
  }
38680
- .cn-dashboard-page__date-pill-custom[data-v-42bc14a4] .button-vue,
38681
- .cn-dashboard-page__date-pill-custom[data-v-42bc14a4] .button-vue__wrapper,
38682
- .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 {
38683
38872
  width: auto !important;
38684
38873
  min-width: 0 !important;
38685
38874
  overflow: visible !important;
38686
38875
  }
38687
- .cn-dashboard-page__empty[data-v-42bc14a4] {
38876
+ .cn-dashboard-page__empty[data-v-582eaf2c] {
38688
38877
  padding: 60px 20px;
38689
38878
  }
38690
38879
 
38691
38880
  /* The page's view switch on a page without a header row: at the end of its
38692
38881
  own row, above the grids, where the header would have put it. */
38693
- .cn-dashboard-page__view-switch[data-v-42bc14a4] {
38882
+ .cn-dashboard-page__view-switch[data-v-582eaf2c] {
38694
38883
  display: flex;
38695
38884
  justify-content: flex-end;
38696
38885
  margin-bottom: 12px;
38697
38886
  }
38698
38887
 
38699
38888
  /* A view the switch shows with nothing to draw. */
38700
- .cn-page-view-region--empty[data-v-42bc14a4] {
38889
+ .cn-page-view-region--empty[data-v-582eaf2c] {
38701
38890
  padding: 40px 20px;
38702
38891
  }
38703
- .cn-dashboard-page__page-filters[data-v-42bc14a4] {
38892
+ .cn-dashboard-page__page-filters[data-v-582eaf2c] {
38704
38893
  display: flex;
38705
38894
  flex-wrap: wrap;
38706
38895
  gap: 16px;
38707
38896
  align-items: flex-end;
38708
38897
  margin-bottom: 12px;
38709
38898
  }
38710
- .cn-dashboard-page__page-filter[data-v-42bc14a4] {
38899
+ .cn-dashboard-page__page-filter[data-v-582eaf2c] {
38711
38900
  display: flex;
38712
38901
  flex-direction: column;
38713
38902
  gap: 4px;
38714
38903
  min-width: 200px;
38715
38904
  }
38716
- .cn-dashboard-page__page-filter-label[data-v-42bc14a4] {
38905
+ .cn-dashboard-page__page-filter-label[data-v-582eaf2c] {
38717
38906
  font-size: 0.85em;
38718
38907
  font-weight: 600;
38719
38908
  color: var(--color-text-maxcontrast);
38720
38909
  }
38721
- .cn-dashboard-page__widget-edit[data-v-42bc14a4] {
38910
+ .cn-dashboard-page__widget-edit[data-v-582eaf2c] {
38722
38911
  position: absolute;
38723
38912
  top: 4px;
38724
38913
  inset-inline-end: 4px;
@@ -38737,8 +38926,8 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38737
38926
  and centre the card. */
38738
38927
  /* `safe` centre so an overflowing tile does not spill out of the top, where
38739
38928
  flex overflow cannot be scrolled back to. Same as detail-page.css. */
38740
- .cn-dashboard-page__card-fit[data-v-42bc14a4] .cn-widget-wrapper__content,
38741
- .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 {
38742
38931
  overflow: hidden;
38743
38932
  display: flex;
38744
38933
  flex-direction: column;
@@ -38754,7 +38943,7 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38754
38943
  shows up as a scrollbar the user has to drag to see the whole graph. Same
38755
38944
  shape as the card-fit rule above, minus the padding: chart tiles render
38756
38945
  `flush`, and apexcharts already draws its own margins. */
38757
- .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 {
38758
38947
  overflow: hidden;
38759
38948
  display: flex;
38760
38949
  flex-direction: column;
@@ -38764,13 +38953,13 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38764
38953
  /* Card content (stat / gauge / delta) must fit the tile width: let the
38765
38954
  widget shrink and its value/label truncate instead of pushing past the
38766
38955
  tile edge (the horizontal clip on long currency values). */
38767
- .cn-dashboard-page__card-fit[data-v-42bc14a4] .cn-stat-widget,
38768
- .cn-dashboard-page__card-fit[data-v-42bc14a4] .cn-gauge-widget,
38769
- .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 {
38770
38959
  min-width: 0;
38771
38960
  max-width: 100%;
38772
38961
  }
38773
- .cn-dashboard-page__unknown[data-v-42bc14a4] {
38962
+ .cn-dashboard-page__unknown[data-v-582eaf2c] {
38774
38963
  display: flex;
38775
38964
  align-items: center;
38776
38965
  justify-content: center;
@@ -38781,29 +38970,43 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38781
38970
  }
38782
38971
 
38783
38972
  /* widget-ref content items */
38784
- .cn-dashboard-page__content[data-v-42bc14a4] {
38973
+ .cn-dashboard-page__content[data-v-582eaf2c] {
38785
38974
  display: flex;
38786
38975
  flex-direction: column;
38787
38976
  gap: 16px;
38788
38977
  }
38789
- .cn-dashboard-page__content-item[data-v-42bc14a4] {
38978
+ .cn-dashboard-page__content-item[data-v-582eaf2c] {
38790
38979
  width: 100%;
38791
38980
  }
38792
38981
  /* On a phone (screens-dashboard-phone) the touch targets of a board dashboard
38793
38982
  are 44px: the widget Actions menu and the KPI tiles. */
38794
38983
  @media (max-width: 640px) {
38795
- .cn-dashboard-page--board[data-v-42bc14a4] .cn-widget-wrapper__actions .action-item__menutoggle,
38796
- .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 {
38797
38986
  min-height: 44px;
38798
38987
  }
38799
- .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] {
38800
38989
  min-height: 44px;
38801
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
+ }
38802
39005
  }
38803
39006
 
38804
39007
  /* What a registry widget reports for its card header (`header` event): the
38805
39008
  note beside the link ("3 in total") and one action, as on a detail page. */
38806
- .cn-dashboard-page__widget-count[data-v-42bc14a4] {
39009
+ .cn-dashboard-page__widget-count[data-v-582eaf2c] {
38807
39010
  align-self: center;
38808
39011
  padding: 1px 8px;
38809
39012
  border-radius: 10px;
@@ -38812,13 +39015,13 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38812
39015
  font-size: 13px;
38813
39016
  font-weight: 600;
38814
39017
  }
38815
- .cn-dashboard-page__widget-note[data-v-42bc14a4] {
39018
+ .cn-dashboard-page__widget-note[data-v-582eaf2c] {
38816
39019
  align-self: center;
38817
39020
  color: var(--color-text-maxcontrast);
38818
39021
  font-size: 14px;
38819
39022
  white-space: nowrap;
38820
39023
  }
38821
- .cn-dashboard-page__widget-action[data-v-42bc14a4] {
39024
+ .cn-dashboard-page__widget-action[data-v-582eaf2c] {
38822
39025
  display: inline-flex;
38823
39026
  align-items: center;
38824
39027
  align-self: center;
@@ -38834,7 +39037,7 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38834
39037
  white-space: nowrap;
38835
39038
  cursor: pointer;
38836
39039
  }
38837
- .cn-dashboard-page__widget-action[data-v-42bc14a4]:focus-visible {
39040
+ .cn-dashboard-page__widget-action[data-v-582eaf2c]:focus-visible {
38838
39041
  outline: 2px solid var(--color-primary-element);
38839
39042
  outline-offset: 2px;
38840
39043
  }
@@ -43241,23 +43444,23 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
43241
43444
  }
43242
43445
 
43243
43446
 
43244
- .cn-notif-prefs__intro[data-v-2a94b3e4] {
43447
+ .cn-notif-prefs__intro[data-v-c746b496] {
43245
43448
  margin-bottom: 12px;
43246
43449
  color: var(--color-text-maxcontrast);
43247
43450
  }
43248
- .cn-notif-prefs__group[data-v-2a94b3e4] {
43451
+ .cn-notif-prefs__group[data-v-c746b496] {
43249
43452
  margin-bottom: 20px;
43250
43453
  }
43251
- .cn-notif-prefs__group-title[data-v-2a94b3e4] {
43454
+ .cn-notif-prefs__group-title[data-v-c746b496] {
43252
43455
  margin: 8px 0 8px;
43253
43456
  font-weight: bold;
43254
43457
  }
43255
- .cn-notif-prefs__grid[data-v-2a94b3e4] {
43458
+ .cn-notif-prefs__grid[data-v-c746b496] {
43256
43459
  display: grid;
43257
43460
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
43258
43461
  gap: 8px;
43259
43462
  }
43260
- .cn-notif-prefs__card[data-v-2a94b3e4] {
43463
+ .cn-notif-prefs__card[data-v-c746b496] {
43261
43464
  display: flex;
43262
43465
  flex-direction: column;
43263
43466
  align-items: flex-start;
@@ -43384,6 +43587,80 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
43384
43587
  }
43385
43588
 
43386
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
+
43387
43664
  /* The environment banner runs along the top of the shell and cannot scroll away; the shell makes room for it. */
43388
43665
  .cn-app-root--with-environment {
43389
43666
  position: relative;
@@ -43678,51 +43955,6 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
43678
43955
  }
43679
43956
 
43680
43957
 
43681
- .cn-features-tab__grid[data-v-f4a6fe92] {
43682
- display: grid;
43683
- grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
43684
- gap: 16px;
43685
- }
43686
- .cn-features-tab__card[data-v-f4a6fe92] {
43687
- display: flex;
43688
- flex-direction: column;
43689
- gap: 8px;
43690
- padding: 16px;
43691
- background: var(--color-main-background);
43692
- border: 1px solid var(--color-border);
43693
- border-radius: var(--border-radius-large, 12px);
43694
- transition: border-color 120ms ease, box-shadow 120ms ease;
43695
- }
43696
- .cn-features-tab__card[data-v-f4a6fe92]:hover {
43697
- border-color: var(--color-primary-element);
43698
- box-shadow: 0 2px 8px var(--color-box-shadow, rgba(0, 0, 0, 0.08));
43699
- }
43700
- .cn-features-tab__title[data-v-f4a6fe92] {
43701
- margin: 0;
43702
- font-size: 1.05em;
43703
- color: var(--color-main-text);
43704
- }
43705
- .cn-features-tab__summary[data-v-f4a6fe92] {
43706
- margin: 0;
43707
- color: var(--color-text-light);
43708
- font-size: 0.95em;
43709
- line-height: 1.4;
43710
- flex: 1;
43711
- }
43712
- .cn-features-tab__link[data-v-f4a6fe92] {
43713
- display: inline-flex;
43714
- align-items: center;
43715
- gap: 4px;
43716
- color: var(--color-primary-element);
43717
- text-decoration: none;
43718
- font-size: 0.9em;
43719
- margin-top: auto;
43720
- }
43721
- .cn-features-tab__link[data-v-f4a6fe92]:hover {
43722
- text-decoration: underline;
43723
- }
43724
-
43725
-
43726
43958
  .cn-roadmap-item[data-v-f352eb12] {
43727
43959
  display: flex;
43728
43960
  flex-direction: column;
@@ -43823,34 +44055,442 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
43823
44055
  }
43824
44056
 
43825
44057
 
43826
- .cn-roadmap-tab__grid[data-v-67050643] {
44058
+ .cn-roadmap-tab__grid[data-v-732ef80f] {
43827
44059
  display: grid;
43828
44060
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
43829
44061
  gap: 16px;
43830
44062
  }
43831
- .cn-roadmap-tab__card[data-v-67050643] {
44063
+ .cn-roadmap-tab__card[data-v-732ef80f] {
43832
44064
  background: var(--color-main-background);
43833
44065
  border: 1px solid var(--color-border);
43834
44066
  border-radius: var(--border-radius-large, 12px);
43835
44067
  transition: border-color 120ms ease, box-shadow 120ms ease;
43836
44068
  }
43837
- .cn-roadmap-tab__card[data-v-67050643]:hover {
44069
+ .cn-roadmap-tab__card[data-v-732ef80f]:hover {
43838
44070
  border-color: var(--color-primary-element);
43839
44071
  box-shadow: 0 2px 8px var(--color-box-shadow, rgba(0, 0, 0, 0.08));
43840
44072
  }
43841
- .cn-roadmap-tab__loading[data-v-67050643] {
44073
+ .cn-roadmap-tab__loading[data-v-732ef80f] {
43842
44074
  display: flex;
43843
44075
  justify-content: center;
43844
44076
  padding: 32px;
43845
44077
  }
43846
44078
 
43847
44079
 
43848
- .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] {
43849
44489
  max-width: 1200px;
43850
44490
  margin: 0 auto;
43851
44491
  padding: 24px 16px;
43852
44492
  }
43853
- .cn-features-and-roadmap-view__header[data-v-191ea8ba] {
44493
+ .cn-features-and-roadmap-view__header[data-v-f19c0cb4] {
43854
44494
  display: flex;
43855
44495
  align-items: center;
43856
44496
  justify-content: space-between;
@@ -43862,29 +44502,29 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
43862
44502
  room. Only the HEADER shifts right — the panel below keeps full width. */
43863
44503
  padding-inline-start: 56px;
43864
44504
  }
43865
- .cn-features-and-roadmap-view__title[data-v-191ea8ba] {
44505
+ .cn-features-and-roadmap-view__title[data-v-f19c0cb4] {
43866
44506
  font-size: 1.4em;
43867
44507
  margin: 0;
43868
44508
  color: var(--color-main-text);
43869
44509
  }
43870
- .cn-features-and-roadmap-view__actions[data-v-191ea8ba] {
44510
+ .cn-features-and-roadmap-view__actions[data-v-f19c0cb4] {
43871
44511
  display: flex;
43872
44512
  gap: 8px;
43873
44513
  align-items: center;
43874
44514
  flex-wrap: wrap;
43875
44515
  }
43876
- .cn-features-and-roadmap-view__panel[data-v-191ea8ba] {
44516
+ .cn-features-and-roadmap-view__panel[data-v-f19c0cb4] {
43877
44517
  min-height: 320px;
43878
44518
  }
43879
44519
 
43880
44520
  /* Underline the inline docs URL so it reads as a link inside the note
43881
44521
  body — NcNoteCard's default link styling drops the underline by
43882
44522
  inheriting from the host theme. */
43883
- .cn-features-and-roadmap-view__docs-note[data-v-191ea8ba] a {
44523
+ .cn-features-and-roadmap-view__docs-note[data-v-f19c0cb4] a {
43884
44524
  color: var(--color-primary-element);
43885
44525
  text-decoration: underline;
43886
44526
  }
43887
- .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 {
43888
44528
  text-decoration: underline;
43889
44529
  opacity: 0.85;
43890
44530
  }