@conduction/nextcloud-vue 2.56.0-beta.36 → 2.56.0-beta.37

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 (136) hide show
  1. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue.js +1 -1
  2. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js +131 -3
  3. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js.map +1 -1
  4. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js +54 -18
  5. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js.map +1 -1
  6. package/dist/esm/components/CnBoardView/CnBoardView.vue.js +1 -1
  7. package/dist/esm/components/CnBoardView/CnBoardView.vue2.js +232 -4
  8. package/dist/esm/components/CnBoardView/CnBoardView.vue2.js.map +1 -1
  9. package/dist/esm/components/CnBoardView/CnBoardView.vue3.js +95 -51
  10. package/dist/esm/components/CnBoardView/CnBoardView.vue3.js.map +1 -1
  11. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue.js +1 -1
  12. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +45 -0
  13. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
  14. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +22 -12
  15. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
  16. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js +23 -4
  17. package/dist/esm/components/CnDetailPage/CnDetailPage.vue2.js.map +1 -1
  18. package/dist/esm/components/CnDetailPage/CnDetailPage.vue3.js.map +1 -1
  19. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue.js +1 -1
  20. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js +3 -1
  21. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js.map +1 -1
  22. package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js.map +1 -1
  23. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue.js +1 -1
  24. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js +18 -5
  25. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue2.js.map +1 -1
  26. package/dist/esm/components/CnFactsWidget/CnFactsWidget.vue3.js.map +1 -1
  27. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +548 -77
  28. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  29. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +191 -82
  30. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  31. package/dist/esm/components/CnIndexPage/useSelfFetchList.js +11 -2
  32. package/dist/esm/components/CnIndexPage/useSelfFetchList.js.map +1 -1
  33. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue.js +1 -1
  34. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js +70 -2
  35. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js.map +1 -1
  36. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js.map +1 -1
  37. package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue.js +1 -1
  38. package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue2.js +67 -5
  39. package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue2.js.map +1 -1
  40. package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue3.js +181 -124
  41. package/dist/esm/components/CnRegisterMapping/CnRegisterMapping.vue3.js.map +1 -1
  42. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue.js +1 -1
  43. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue2.js +5 -1
  44. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue2.js.map +1 -1
  45. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue3.js.map +1 -1
  46. package/dist/esm/components/CnStatWidget/CnStatWidget.vue.js +1 -1
  47. package/dist/esm/components/CnStatWidget/CnStatWidget.vue2.js +134 -10
  48. package/dist/esm/components/CnStatWidget/CnStatWidget.vue2.js.map +1 -1
  49. package/dist/esm/components/CnStatWidget/CnStatWidget.vue3.js +6 -2
  50. package/dist/esm/components/CnStatWidget/CnStatWidget.vue3.js.map +1 -1
  51. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue.js +1 -1
  52. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js +6 -3
  53. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
  54. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js.map +1 -1
  55. package/dist/esm/components/CnToggleTableWidget/CnToggleTableWidget.vue.js +1 -1
  56. package/dist/esm/components/CnToggleTableWidget/CnToggleTableWidget.vue2.js +140 -7
  57. package/dist/esm/components/CnToggleTableWidget/CnToggleTableWidget.vue2.js.map +1 -1
  58. package/dist/esm/components/CnToggleTableWidget/CnToggleTableWidget.vue3.js.map +1 -1
  59. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue.js +1 -1
  60. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue2.js +37 -9
  61. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue2.js.map +1 -1
  62. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue3.js +6 -5
  63. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue3.js.map +1 -1
  64. package/dist/esm/components/CnWidgetCardGrid/CnWidgetCardGrid.vue2.js +53 -1
  65. package/dist/esm/components/CnWidgetCardGrid/CnWidgetCardGrid.vue2.js.map +1 -1
  66. package/dist/esm/components/CnWidgetCardGrid/CnWidgetCardGrid.vue3.js +3 -2
  67. package/dist/esm/components/CnWidgetCardGrid/CnWidgetCardGrid.vue3.js.map +1 -1
  68. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue.js +1 -1
  69. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue2.js +135 -0
  70. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue2.js.map +1 -1
  71. package/dist/esm/components/CnWidgetObjectTable/CnWidgetObjectTable.vue3.js.map +1 -1
  72. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue.js +1 -1
  73. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js +19 -0
  74. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js.map +1 -1
  75. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js +37 -19
  76. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js.map +1 -1
  77. package/dist/esm/composables/useListView.js +21 -0
  78. package/dist/esm/composables/useListView.js.map +1 -1
  79. package/dist/esm/l10n/en.json.js +23 -1
  80. package/dist/esm/l10n/en.json.js.map +1 -1
  81. package/dist/esm/l10n/nl.json.js +41 -1
  82. package/dist/esm/l10n/nl.json.js.map +1 -1
  83. package/dist/esm/library-style.js +1 -1
  84. package/dist/esm/nextcloud-vue.css +622 -332
  85. package/dist/esm/store/useObjectStore.js +16 -2
  86. package/dist/esm/store/useObjectStore.js.map +1 -1
  87. package/dist/esm/utils/boardColumns.js +8 -1
  88. package/dist/esm/utils/boardColumns.js.map +1 -1
  89. package/dist/esm/utils/boardReferenceColumns.js +278 -0
  90. package/dist/esm/utils/boardReferenceColumns.js.map +1 -0
  91. package/dist/esm/utils/buildManifest.js +4 -1
  92. package/dist/esm/utils/buildManifest.js.map +1 -1
  93. package/dist/esm/utils/validateManifestV2.compiled.js +3 -3
  94. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  95. package/dist/esm/utils/widgetDispatch.js +8 -2
  96. package/dist/esm/utils/widgetDispatch.js.map +1 -1
  97. package/dist/nextcloud-vue.cjs.js +27964 -25769
  98. package/dist/nextcloud-vue.cjs.js.map +2 -2
  99. package/dist/nextcloud-vue.css +622 -332
  100. package/l10n/en.json +23 -1
  101. package/l10n/nl.json +41 -1
  102. package/package.json +1 -1
  103. package/src/components/CnAdminSettingsShell/CnAdminSettingsShell.vue +160 -8
  104. package/src/components/CnBoardView/CnBoardView.vue +262 -6
  105. package/src/components/CnDashboardPage/CnDashboardPage.vue +57 -2
  106. package/src/components/CnDetailPage/CnDetailPage.md +1 -1
  107. package/src/components/CnDetailPage/CnDetailPage.vue +23 -4
  108. package/src/components/CnDetailWidgetHost/CnDetailWidgetHost.vue +3 -1
  109. package/src/components/CnFactsWidget/CnFactsWidget.vue +18 -5
  110. package/src/components/CnIndexPage/CnIndexPage.vue +586 -25
  111. package/src/components/CnIndexPage/useSelfFetchList.js +10 -1
  112. package/src/components/CnRecordListWidget/CnRecordListWidget.vue +70 -2
  113. package/src/components/CnRegisterMapping/CnRegisterMapping.md +5 -0
  114. package/src/components/CnRegisterMapping/CnRegisterMapping.vue +231 -96
  115. package/src/components/CnSettingsPage/CnSettingsPage.vue +5 -1
  116. package/src/components/CnStatWidget/CnStatWidget.vue +136 -11
  117. package/src/components/CnTabsWidget/CnTabsWidget.vue +6 -3
  118. package/src/components/CnToggleTableWidget/CnToggleTableWidget.vue +140 -7
  119. package/src/components/CnVersionInfoCard/CnVersionInfoCard.md +2 -1
  120. package/src/components/CnVersionInfoCard/CnVersionInfoCard.vue +42 -13
  121. package/src/components/CnWidgetCardGrid/CnWidgetCardGrid.vue +55 -2
  122. package/src/components/CnWidgetObjectTable/CnWidgetObjectTable.vue +135 -0
  123. package/src/components/CnWidgetWrapper/CnWidgetWrapper.md +10 -0
  124. package/src/components/CnWidgetWrapper/CnWidgetWrapper.vue +44 -1
  125. package/src/composables/useListView.js +21 -0
  126. package/src/css/board.css +65 -4
  127. package/src/css/dialog.css +4 -2
  128. package/src/css/index-page.css +49 -0
  129. package/src/css/look-board.css +77 -7
  130. package/src/schemas/app-manifest-v2.schema.json +115 -5
  131. package/src/store/useObjectStore.js +16 -2
  132. package/src/utils/boardColumns.js +8 -1
  133. package/src/utils/boardReferenceColumns.js +274 -0
  134. package/src/utils/buildManifest.js +4 -1
  135. package/src/utils/validateManifestV2.compiled.js +3 -3
  136. package/src/utils/widgetDispatch.js +8 -2
@@ -489,6 +489,7 @@
489
489
  `.cn-look-board.cn-admin-settings-shell` is a shell told `look: "board"`
490
490
  itself, on an admin page no CnAppRoot wraps. */
491
491
  .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > .cn-admin-settings-shell__header,
492
+ .cn-look-board .cn-admin-settings-shell__panel:not(.cn-look-nextcloud *) > :not(.settings-section):not(.cn-credentials),
492
493
  .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):not(.cn-credentials),
493
494
  .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):not(.cn-credentials) {
494
495
  grid-column: 1 / -1;
@@ -496,6 +497,7 @@
496
497
 
497
498
  .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *),
498
499
  .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *),
500
+ .cn-look-board .cn-admin-settings-shell__panel:not(.cn-look-nextcloud *),
499
501
  .cn-look-board .cn-settings-page__sections:not(.cn-look-nextcloud *) {
500
502
  display: grid;
501
503
  grid-template-columns: repeat(auto-fit, minmax(420px, 1fr));
@@ -507,14 +509,17 @@
507
509
  Settings.vue) takes no box of its own: its sections are grid items and
508
510
  cards, as if the shell held them directly. Only an element whose own
509
511
  children are sections; anything else keeps spanning the grid. */
512
+ .cn-look-board .cn-admin-settings-shell__panel:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section),
510
513
  .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section),
511
514
  .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) {
512
515
  display: contents;
513
516
  }
514
517
 
515
- /* The card: a section of the shell (also one inside a wrapping element), or a CnSettingsCard of the page. */
518
+ /* The card: a section of the shell or of one of its tab panels (also one inside a wrapping element), or a CnSettingsCard of the page. */
519
+ .cn-look-board .cn-admin-settings-shell__panel:not(.cn-look-nextcloud *) > .settings-section,
516
520
  .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > .settings-section,
517
521
  .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > .settings-section,
522
+ .cn-look-board .cn-admin-settings-shell__panel:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section,
518
523
  .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section,
519
524
  .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section,
520
525
  .cn-look-board .cn-settings-page__sections:not(.cn-look-nextcloud *) > .cn-settings-card {
@@ -550,7 +555,7 @@
550
555
  justify-content: flex-start;
551
556
  text-align: start;
552
557
  margin: 0;
553
- font-size: 19px;
558
+ font-size: 17px;
554
559
  font-weight: 700;
555
560
  line-height: 1.3;
556
561
  }
@@ -558,18 +563,83 @@
558
563
  .cn-look-board .settings-section:not(.cn-look-nextcloud *) .settings-section__desc {
559
564
  margin: 4px 0 0;
560
565
  font-size: 14px;
561
- line-height: 1.45;
566
+ line-height: 1.5;
562
567
  color: var(--color-text-maxcontrast);
563
568
  }
564
569
 
565
- /* Section actions sit at the end of the title row. */
570
+ /* Section actions sit at the end of the title row. The row is a grid, so a
571
+ long title wraps beside the buttons instead of running under them, and in a
572
+ narrow card the buttons drop under the title and description. */
573
+ .cn-look-board .settings-section:not(.cn-look-nextcloud *):has(> .cn-settings-section__actions) {
574
+ /* `!important`: the card rules above set `display: flex` at higher specificity for a section in a wrapping element. */
575
+ display: grid !important;
576
+ grid-template-columns: minmax(0, 1fr) auto;
577
+ align-items: start;
578
+ column-gap: 16px;
579
+ container-type: inline-size;
580
+ }
581
+
582
+ .cn-look-board .settings-section:not(.cn-look-nextcloud *):has(> .cn-settings-section__actions) > * {
583
+ grid-column: 1 / -1;
584
+ }
585
+
586
+ .cn-look-board .settings-section:not(.cn-look-nextcloud *):has(> .cn-settings-section__actions) > .settings-section__name {
587
+ grid-row: 1;
588
+ grid-column: 1;
589
+ }
590
+
566
591
  .cn-look-board .settings-section:not(.cn-look-nextcloud *) > .cn-settings-section__actions {
567
- position: absolute;
568
- inset-block-start: 22px;
569
- inset-inline-end: 24px;
592
+ grid-row: 1;
593
+ grid-column: 2;
594
+ position: static;
595
+ flex-wrap: wrap;
596
+ justify-self: end;
570
597
  float: none;
571
598
  }
572
599
 
600
+ @container (max-width: 520px) {
601
+ .cn-look-board .settings-section:not(.cn-look-nextcloud *) > .cn-settings-section__actions {
602
+ grid-row: auto;
603
+ grid-column: 1 / -1;
604
+ justify-self: start;
605
+ justify-content: flex-start;
606
+ }
607
+ }
608
+
609
+ /* An admin settings card as the board draws it (PtBeheerinstellingen,
610
+ KqBeheerAlgemeen, HuInstellingen): 20px 22px padding, and the title and
611
+ description one group, 4px apart, spaced from the rest of the card by the
612
+ card's 14px gap. The description is a sibling of the title in that column,
613
+ so it pulls itself back up to 4px under the title. The gap spaces the
614
+ content, so a note card adds no margin of its own (NcNoteCard draws 16px
615
+ above and below). A CnSettingsPage card keeps 22px 24px. */
616
+ .cn-look-board .cn-admin-settings-shell__panel:not(.cn-look-nextcloud *) > .settings-section,
617
+ .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > .settings-section,
618
+ .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > .settings-section,
619
+ .cn-look-board .cn-admin-settings-shell__panel:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section,
620
+ .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section,
621
+ .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section {
622
+ padding: 20px 22px;
623
+ }
624
+
625
+ .cn-look-board .cn-admin-settings-shell__panel:not(.cn-look-nextcloud *) > .settings-section > .settings-section__desc,
626
+ .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > .settings-section > .settings-section__desc,
627
+ .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > .settings-section > .settings-section__desc,
628
+ .cn-look-board .cn-admin-settings-shell__panel:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section > .settings-section__desc,
629
+ .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section > .settings-section__desc,
630
+ .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section > .settings-section__desc {
631
+ margin-top: -10px;
632
+ }
633
+
634
+ .cn-look-board .cn-admin-settings-shell__panel:not(.cn-look-nextcloud *) > .settings-section > .notecard,
635
+ .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > .settings-section > .notecard,
636
+ .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > .settings-section > .notecard,
637
+ .cn-look-board .cn-admin-settings-shell__panel:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section > .notecard,
638
+ .cn-look-board .cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section > .notecard,
639
+ .cn-look-board.cn-admin-settings-shell:not(.cn-look-nextcloud *) > :not(.settings-section):has(> .settings-section) > .settings-section > .notecard {
640
+ margin-block: 0;
641
+ }
642
+
573
643
  .cn-look-board .settings-section.cn-settings-section--wide:not(.cn-look-nextcloud *),
574
644
  .cn-look-board .cn-settings-card:has(.cn-settings-section--wide):not(.cn-look-nextcloud *) {
575
645
  grid-column: 1 / -1;
@@ -837,8 +907,10 @@
837
907
  }
838
908
 
839
909
  /* The header is ours: NcModal's own close button and NcDialog's heading give
840
- way (the heading stays as the accessible name, visually hidden). */
841
- .cn-dialog-board .modal-container__close {
910
+ way (the heading stays as the accessible name, visually hidden). The mask
911
+ class raises the rule above NcButton's `.button-vue[data-v-…]`, whose
912
+ stylesheet a spawned dialog can load after this one. */
913
+ .modal-mask.cn-dialog-board .modal-container__close {
842
914
  display: none;
843
915
  }
844
916
 
@@ -1300,19 +1372,24 @@
1300
1372
  gap: 8px;
1301
1373
  }
1302
1374
 
1303
- .cn-board-view.cn-board-view--board .cn-board-view__card-title {
1375
+ /* The title is a link drawn as a heading (board DqWerkbord): main text, no
1376
+ underline. `!important` because a theme's `a { color; text-decoration }`
1377
+ carries it (thematiq), and a bare `a` with `!important` beats any class. */
1378
+ .cn-board-view.cn-board-view--board .cn-board-view__card-title,
1379
+ .cn-board-view.cn-board-view--board .cn-board-view__card-title:visited {
1304
1380
  flex: 1 1 auto;
1305
1381
  min-width: 0;
1306
1382
  font-size: 15px;
1307
1383
  font-weight: 700;
1308
1384
  line-height: 1.3;
1309
- color: var(--color-main-text);
1310
- text-decoration: none;
1385
+ color: var(--color-main-text) !important;
1386
+ text-decoration: none !important;
1311
1387
  overflow-wrap: anywhere;
1312
1388
  }
1313
1389
 
1314
1390
  .cn-board-view.cn-board-view--board .cn-board-view__card-title:hover {
1315
- text-decoration: underline;
1391
+ color: var(--color-main-text) !important;
1392
+ text-decoration: underline !important;
1316
1393
  }
1317
1394
 
1318
1395
  .cn-board-view.cn-board-view--board .cn-board-view__card-title:focus-visible {
@@ -1471,6 +1548,62 @@
1471
1548
  outline: 2px solid var(--color-primary-element);
1472
1549
  outline-offset: 2px;
1473
1550
  }
1551
+
1552
+ /*
1553
+ * screens-board-reference-columns: a wide board wraps its columns onto more
1554
+ * rows (`config.board.wrap`), as many to a row as fit at 240px, instead of
1555
+ * one row that scrolls sideways.
1556
+ */
1557
+ .cn-board-view.cn-board-view--wrap .cn-board-view__columns {
1558
+ display: grid;
1559
+ grid-auto-flow: row;
1560
+ grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
1561
+ overflow-x: visible;
1562
+ }
1563
+
1564
+ .cn-board-view.cn-board-view--wrap:not(.cn-board-view--board) .cn-board-view__columns {
1565
+ gap: 12px;
1566
+ }
1567
+
1568
+ /* A column the dragged card cannot reach fades; the label stays readable. */
1569
+ .cn-board-view .cn-board-view__column--unreachable {
1570
+ opacity: 0.45;
1571
+ }
1572
+
1573
+ /* The selection checkbox: in the board look's card head, before the title. */
1574
+ .cn-board-view .cn-board-view__select {
1575
+ flex: none;
1576
+ width: 16px;
1577
+ height: 16px;
1578
+ margin: 2px 0 0;
1579
+ accent-color: var(--color-primary-element);
1580
+ cursor: pointer;
1581
+ }
1582
+
1583
+ /* Board look: the board draws no checkbox. It shows on a hovered card, on a
1584
+ card holding focus (so Tab still reaches it), once anything is selected, and
1585
+ always where there is no hover. Collapsed rather than hidden, so it stays in
1586
+ the tab order. */
1587
+ @media (hover: hover) {
1588
+ .cn-board-view.cn-board-view--board:not(.cn-board-view--selecting) .cn-board-view__card:not(:hover, :focus-within) .cn-board-view__select {
1589
+ width: 0;
1590
+ margin-inline-end: -8px;
1591
+ opacity: 0;
1592
+ }
1593
+ }
1594
+
1595
+ /* A menu target the card cannot reach: still listed, greyed, with its note. */
1596
+ .cn-board-view.cn-board-view--board .cn-board-view__menu-item.cn-board-view__menu-item--blocked {
1597
+ color: var(--color-text-maxcontrast);
1598
+ cursor: not-allowed;
1599
+ }
1600
+
1601
+ .cn-board-view .cn-board-view__menu-note {
1602
+ margin-inline-start: auto;
1603
+ padding-inline-start: 12px;
1604
+ font-size: 12px;
1605
+ color: var(--color-text-maxcontrast);
1606
+ }
1474
1607
  /*
1475
1608
  * The board look for the index list and its cards (screens-index-list-parity,
1476
1609
  * screens-card-parity).
@@ -5186,6 +5319,19 @@ a.cn-kpi-card--board * {
5186
5319
  margin-top: 0;
5187
5320
  }
5188
5321
 
5322
+ /* The board view's footer: how many rows it holds of how many match, and
5323
+ "Load more" while the list is not complete. */
5324
+ .cn-index-page__board-load {
5325
+ display: flex;
5326
+ flex-wrap: wrap;
5327
+ align-items: center;
5328
+ justify-content: space-between;
5329
+ gap: 8px 16px;
5330
+ padding: 12px 16px;
5331
+ color: var(--color-text-maxcontrast);
5332
+ font-size: 14px;
5333
+ }
5334
+
5189
5335
  /* Table view owns both scroll axes. With the page column scrolling instead, the
5190
5336
  table's horizontal scrollbar sat at the bottom of the (taller-than-viewport)
5191
5337
  table, so it only appeared after scrolling down, and the pagination was
@@ -5451,6 +5597,42 @@ a.cn-kpi-card--board * {
5451
5597
  outline: 2px solid var(--color-primary-element);
5452
5598
  outline-offset: 2px;
5453
5599
  }
5600
+
5601
+ /*
5602
+ * screens-board-reference-columns: the board view's controls after the
5603
+ * search (board DqWerkbord): "Case type:" and "Columns:" as a 600 label and a
5604
+ * 36px select, then the hint in the secondary text colour.
5605
+ */
5606
+ .cn-index-page__board-control {
5607
+ display: inline-flex;
5608
+ align-items: center;
5609
+ gap: 8px;
5610
+ font-size: 14px;
5611
+ font-weight: 600;
5612
+ color: var(--color-main-text);
5613
+ }
5614
+
5615
+ .cn-index-page__board-select {
5616
+ height: 36px;
5617
+ min-height: 36px;
5618
+ margin: 0;
5619
+ padding: 0 10px;
5620
+ border: 1px solid var(--color-border-maxcontrast);
5621
+ border-radius: 8px;
5622
+ background-color: var(--color-main-background);
5623
+ color: var(--color-main-text);
5624
+ font: inherit;
5625
+ font-weight: 400;
5626
+ }
5627
+
5628
+ .cn-index-page__board-select--strong {
5629
+ font-weight: 500;
5630
+ }
5631
+
5632
+ .cn-index-page__board-hint {
5633
+ font-size: 14px;
5634
+ color: var(--color-text-maxcontrast);
5635
+ }
5454
5636
  /* CnIndexSidebar — NcAppSidebar wrapper styles */
5455
5637
 
5456
5638
  /* Tab content: limit height to container so overflow shows a scrollbar */
@@ -20788,7 +20970,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20788
20970
  }
20789
20971
 
20790
20972
 
20791
- .cn-widget-wrapper[data-v-64db0f38] {
20973
+ .cn-widget-wrapper[data-v-b19b1aa6] {
20792
20974
  position: relative;
20793
20975
  height: 100%;
20794
20976
  display: flex;
@@ -20802,13 +20984,13 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20802
20984
  }
20803
20985
 
20804
20986
  /* Headerless date chip — floated over the top-right of a flush card. */
20805
- .cn-widget-wrapper__floating-meta[data-v-64db0f38] {
20987
+ .cn-widget-wrapper__floating-meta[data-v-b19b1aa6] {
20806
20988
  position: absolute;
20807
20989
  top: 8px;
20808
20990
  inset-inline-end: 10px;
20809
20991
  z-index: 2;
20810
20992
  }
20811
- .cn-widget-wrapper__content[data-v-64db0f38] {
20993
+ .cn-widget-wrapper__content[data-v-b19b1aa6] {
20812
20994
  flex: 1;
20813
20995
  overflow: auto;
20814
20996
  min-height: 0;
@@ -20824,24 +21006,24 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20824
21006
  So it is structural instead. `:has()` keys on the table component's own root
20825
21007
  class, which means a table is flush by construction and no caller can
20826
21008
  reintroduce the gap by forgetting a prop. */
20827
- .cn-widget-wrapper__content[data-v-64db0f38]:has(> .cn-table-container),
20828
- .cn-widget-wrapper__content[data-v-64db0f38]:has(> .cn-widget-object-table) {
21009
+ .cn-widget-wrapper__content[data-v-b19b1aa6]:has(> .cn-table-container),
21010
+ .cn-widget-wrapper__content[data-v-b19b1aa6]:has(> .cn-widget-object-table) {
20829
21011
  padding: 0;
20830
21012
  }
20831
21013
 
20832
21014
  /* Keyboard focus ring for the now-focusable scrollable content region. */
20833
- .cn-widget-wrapper__content[data-v-64db0f38]:focus-visible {
21015
+ .cn-widget-wrapper__content[data-v-b19b1aa6]:focus-visible {
20834
21016
  outline: 2px solid var(--color-primary-element);
20835
21017
  outline-offset: -2px;
20836
21018
  }
20837
- .cn-widget-wrapper--borderless[data-v-64db0f38] {
21019
+ .cn-widget-wrapper--borderless[data-v-b19b1aa6] {
20838
21020
  border: none;
20839
21021
  background: transparent;
20840
21022
  }
20841
- .cn-widget-wrapper--borderless .cn-widget-wrapper__content[data-v-64db0f38] {
21023
+ .cn-widget-wrapper--borderless .cn-widget-wrapper__content[data-v-b19b1aa6] {
20842
21024
  padding: 0;
20843
21025
  }
20844
- .cn-widget-wrapper--flush .cn-widget-wrapper__content[data-v-64db0f38] {
21026
+ .cn-widget-wrapper--flush .cn-widget-wrapper__content[data-v-b19b1aa6] {
20845
21027
  padding: 0;
20846
21028
  }
20847
21029
 
@@ -20849,8 +21031,8 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20849
21031
  above. A dashboard renders every widget `flush`, and without this their
20850
21032
  fields touch the card's edges. Borderless and chromeless cards, and the
20851
21033
  Nextcloud dashboard variant, keep their own padding. */
20852
- .cn-widget-wrapper--flush:not(.cn-widget-wrapper--borderless, .cn-widget-wrapper--nc-dashboard) > .cn-widget-wrapper__content[data-v-64db0f38]:has(> .cn-form-widget),
20853
- .cn-widget-wrapper--flush:not(.cn-widget-wrapper--borderless, .cn-widget-wrapper--nc-dashboard) > .cn-widget-wrapper__content[data-v-64db0f38]:has(> .cn-kb-search-widget) {
21034
+ .cn-widget-wrapper--flush:not(.cn-widget-wrapper--borderless, .cn-widget-wrapper--nc-dashboard) > .cn-widget-wrapper__content[data-v-b19b1aa6]:has(> .cn-form-widget),
21035
+ .cn-widget-wrapper--flush:not(.cn-widget-wrapper--borderless, .cn-widget-wrapper--nc-dashboard) > .cn-widget-wrapper__content[data-v-b19b1aa6]:has(> .cn-kb-search-widget) {
20854
21036
  padding: 16px;
20855
21037
  }
20856
21038
 
@@ -20861,7 +21043,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20861
21043
  a square panel, which is the last visible piece of a card that is supposed
20862
21044
  to be absent. `CnDetailCard.cn-detail-card--chromeless` zeroes the same
20863
21045
  thing for the same reason. */
20864
- .cn-widget-wrapper--chromeless[data-v-64db0f38] {
21046
+ .cn-widget-wrapper--chromeless[data-v-b19b1aa6] {
20865
21047
  border-radius: 0;
20866
21048
  }
20867
21049
 
@@ -20873,7 +21055,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20873
21055
  * so users can override any token. Combined selector raises specificity above
20874
21056
  * the base `.cn-widget-wrapper` rules it supersedes.
20875
21057
  */
20876
- .cn-widget-wrapper__header[data-v-64db0f38] {
21058
+ .cn-widget-wrapper__header[data-v-b19b1aa6] {
20877
21059
  display: flex;
20878
21060
  align-items: center;
20879
21061
  justify-content: space-between;
@@ -20889,7 +21071,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20889
21071
  /* Actions with no title beside them. `header-left` is not rendered at all in
20890
21072
  this mode, and the header is `space-between`, so a single child would sit
20891
21073
  flush LEFT where every other surface puts its actions on the right. */
20892
- .cn-widget-wrapper__header--actions-only[data-v-64db0f38] {
21074
+ .cn-widget-wrapper__header--actions-only[data-v-b19b1aa6] {
20893
21075
  justify-content: flex-end;
20894
21076
  }
20895
21077
 
@@ -20905,11 +21087,11 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20905
21087
  no-descending-specificity asks for. The cascade did not need it (this
20906
21088
  selector is more specific either way), a reader does: an override written
20907
21089
  above the thing it overrides has to be read twice. */
20908
- .cn-widget-wrapper--chromeless .cn-widget-wrapper__header[data-v-64db0f38] {
21090
+ .cn-widget-wrapper--chromeless .cn-widget-wrapper__header[data-v-b19b1aa6] {
20909
21091
  border-bottom: none;
20910
21092
  padding-inline: 0;
20911
21093
  }
20912
- .cn-widget-wrapper__header-left[data-v-64db0f38] {
21094
+ .cn-widget-wrapper__header-left[data-v-b19b1aa6] {
20913
21095
  display: flex;
20914
21096
  align-items: center;
20915
21097
  gap: 8px;
@@ -20918,13 +21100,27 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20918
21100
  of centering between icon and actions (header is space-between). */
20919
21101
  flex: 1 1 auto;
20920
21102
  }
20921
- .cn-widget-wrapper__icon[data-v-64db0f38] {
21103
+ .cn-widget-wrapper__icon[data-v-b19b1aa6] {
20922
21104
  width: 24px;
20923
21105
  height: 24px;
20924
21106
  flex-shrink: 0;
20925
21107
  color: var(--cn-widget-icon-color, var(--color-primary-element));
20926
21108
  }
20927
- .cn-widget-wrapper__title[data-v-64db0f38] {
21109
+ .cn-widget-wrapper__title-stack[data-v-b19b1aa6] {
21110
+ display: flex;
21111
+ flex-direction: column;
21112
+ gap: 2px;
21113
+ min-width: 0;
21114
+ }
21115
+ .cn-widget-wrapper__eyebrow[data-v-b19b1aa6] {
21116
+ font-size: 13px;
21117
+ line-height: 1.3;
21118
+ color: var(--color-text-maxcontrast);
21119
+ white-space: nowrap;
21120
+ overflow: hidden;
21121
+ text-overflow: ellipsis;
21122
+ }
21123
+ .cn-widget-wrapper__title[data-v-b19b1aa6] {
20928
21124
  font-weight: 600;
20929
21125
  font-size: 14px;
20930
21126
  margin: 0;
@@ -20932,34 +21128,34 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20932
21128
  overflow: hidden;
20933
21129
  text-overflow: ellipsis;
20934
21130
  }
20935
- .cn-widget-wrapper.cn-widget-wrapper--nc-dashboard[data-v-64db0f38] {
21131
+ .cn-widget-wrapper.cn-widget-wrapper--nc-dashboard[data-v-b19b1aa6] {
20936
21132
  background: var(--color-main-background-blur, var(--color-main-background));
20937
21133
  -webkit-backdrop-filter: var(--filter-background-blur, none);
20938
21134
  backdrop-filter: var(--filter-background-blur, none);
20939
21135
  border: none;
20940
21136
  border-radius: var(--border-radius-container-large, 16px);
20941
21137
  }
20942
- .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__header[data-v-64db0f38] {
21138
+ .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__header[data-v-b19b1aa6] {
20943
21139
  padding: 16px;
20944
21140
  border-bottom: none;
20945
21141
  }
20946
- .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__header-left[data-v-64db0f38] {
21142
+ .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__header-left[data-v-b19b1aa6] {
20947
21143
  gap: 16px;
20948
21144
  }
20949
- .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__icon[data-v-64db0f38] {
21145
+ .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__icon[data-v-b19b1aa6] {
20950
21146
  width: 32px;
20951
21147
  height: 32px;
20952
21148
  background-size: 32px;
20953
21149
  }
20954
- .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__title[data-v-64db0f38] {
21150
+ .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__title[data-v-b19b1aa6] {
20955
21151
  font-size: 20px;
20956
21152
  font-weight: 700;
20957
21153
  line-height: 24px;
20958
21154
  }
20959
- .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__content[data-v-64db0f38] {
21155
+ .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__content[data-v-b19b1aa6] {
20960
21156
  padding: 0 16px 16px;
20961
21157
  }
20962
- .cn-widget-wrapper__title-meta[data-v-64db0f38] {
21158
+ .cn-widget-wrapper__title-meta[data-v-b19b1aa6] {
20963
21159
  display: flex;
20964
21160
  align-items: center;
20965
21161
  gap: 4px;
@@ -20968,7 +21164,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20968
21164
  white-space: nowrap;
20969
21165
  flex-shrink: 0;
20970
21166
  }
20971
- .cn-widget-wrapper__actions[data-v-64db0f38] {
21167
+ .cn-widget-wrapper__actions[data-v-b19b1aa6] {
20972
21168
  display: flex;
20973
21169
  gap: 4px;
20974
21170
  flex-shrink: 0;
@@ -20976,7 +21172,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20976
21172
 
20977
21173
  /* The header's text link (`headerLink`). Theme hooks: --cn-widget-header-link-size
20978
21174
  and --cn-widget-header-link-weight. */
20979
- .cn-widget-wrapper__header-link[data-v-64db0f38] {
21175
+ .cn-widget-wrapper__header-link[data-v-b19b1aa6] {
20980
21176
  align-self: center;
20981
21177
  padding: 0 calc(1 * var(--default-grid-baseline));
20982
21178
  color: var(--color-primary-element);
@@ -20985,11 +21181,11 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
20985
21181
  text-decoration: none;
20986
21182
  white-space: nowrap;
20987
21183
  }
20988
- .cn-widget-wrapper__header-link[data-v-64db0f38]:hover,
20989
- .cn-widget-wrapper__header-link[data-v-64db0f38]:focus-visible {
21184
+ .cn-widget-wrapper__header-link[data-v-b19b1aa6]:hover,
21185
+ .cn-widget-wrapper__header-link[data-v-b19b1aa6]:focus-visible {
20990
21186
  text-decoration: underline;
20991
21187
  }
20992
- .cn-widget-wrapper__header-link[data-v-64db0f38]:focus-visible {
21188
+ .cn-widget-wrapper__header-link[data-v-b19b1aa6]:focus-visible {
20993
21189
  outline: 2px solid var(--color-primary-element);
20994
21190
  outline-offset: 2px;
20995
21191
  border-radius: var(--border-radius-small, 4px);
@@ -21000,7 +21196,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21000
21196
  wrapper is ever rendered without it. Material-design-icon components paint
21001
21197
  with `fill: currentColor`, so this reaches them; the :deep rule below makes
21002
21198
  it reach a raw <svg> in the slot too. */
21003
- .cn-widget-wrapper__title-icon[data-v-64db0f38] {
21199
+ .cn-widget-wrapper__title-icon[data-v-b19b1aa6] {
21004
21200
  display: flex;
21005
21201
  align-items: center;
21006
21202
  flex-shrink: 0;
@@ -21020,17 +21216,17 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21020
21216
 
21021
21217
  /* Right-positioned title icons sit AFTER the actions, so the margin belongs on
21022
21218
  the other side or it pushes the icon off the header's right edge. */
21023
- .cn-widget-wrapper__title-icon[data-v-64db0f38]:last-child {
21219
+ .cn-widget-wrapper__title-icon[data-v-b19b1aa6]:last-child {
21024
21220
  margin-inline-end: 0;
21025
21221
  margin-inline-start: 8px;
21026
21222
  }
21027
21223
 
21028
21224
  /* Material-design-icon components paint with `fill: currentColor`, so the
21029
21225
  colour above reaches them; this makes it reach a raw <svg> in the slot too. */
21030
- .cn-widget-wrapper__title-icon[data-v-64db0f38] svg {
21226
+ .cn-widget-wrapper__title-icon[data-v-b19b1aa6] svg {
21031
21227
  fill: currentcolor;
21032
21228
  }
21033
- .cn-widget-wrapper__footer[data-v-64db0f38] {
21229
+ .cn-widget-wrapper__footer[data-v-b19b1aa6] {
21034
21230
  display: flex;
21035
21231
  justify-content: flex-end;
21036
21232
  gap: 8px;
@@ -21038,12 +21234,12 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21038
21234
  border-top: 1px solid var(--color-border);
21039
21235
  flex-shrink: 0;
21040
21236
  }
21041
- .cn-widget-wrapper__footer-link[data-v-64db0f38] {
21237
+ .cn-widget-wrapper__footer-link[data-v-b19b1aa6] {
21042
21238
  font-size: 13px;
21043
21239
  color: var(--color-primary-element);
21044
21240
  text-decoration: none;
21045
21241
  }
21046
- .cn-widget-wrapper__footer-link[data-v-64db0f38]:hover {
21242
+ .cn-widget-wrapper__footer-link[data-v-b19b1aa6]:hover {
21047
21243
  text-decoration: underline;
21048
21244
  }
21049
21245
 
@@ -22776,7 +22972,7 @@ a.cn-kpi-card--board * {
22776
22972
 
22777
22973
  /* The title row carries an optional range select beside the label, which the
22778
22974
  canonical `__title` (a plain truncating heading) does not account for. */
22779
- .cn-stat-widget__label[data-v-6f90b30c] {
22975
+ .cn-stat-widget__label[data-v-b388a5f8] {
22780
22976
  display: flex;
22781
22977
  align-items: center;
22782
22978
  justify-content: space-between;
@@ -22786,14 +22982,14 @@ a.cn-kpi-card--board * {
22786
22982
 
22787
22983
  /* Stacked tile: the label and its range select centre over the number rather
22788
22984
  than spreading to the card's edges. */
22789
- .cn-kpi-card--vertical .cn-stat-widget__label[data-v-6f90b30c] {
22985
+ .cn-kpi-card--vertical .cn-stat-widget__label[data-v-b388a5f8] {
22790
22986
  justify-content: center;
22791
22987
  width: auto;
22792
22988
  }
22793
22989
 
22794
22990
  /* Sized down to sit inside the label row without pushing the tile taller —
22795
22991
  the tile's height is fixed by its grid cell (ADR-062). */
22796
- .cn-stat-widget__range[data-v-6f90b30c] {
22992
+ .cn-stat-widget__range[data-v-b388a5f8] {
22797
22993
  flex: 0 0 auto;
22798
22994
  max-width: 50%;
22799
22995
  padding: 0 4px;
@@ -22805,15 +23001,15 @@ a.cn-kpi-card--board * {
22805
23001
  font-weight: normal;
22806
23002
  cursor: pointer;
22807
23003
  }
22808
- .cn-stat-widget__range[data-v-6f90b30c]:hover,
22809
- .cn-stat-widget__range[data-v-6f90b30c]:focus-visible {
23004
+ .cn-stat-widget__range[data-v-b388a5f8]:hover,
23005
+ .cn-stat-widget__range[data-v-b388a5f8]:focus-visible {
22810
23006
  background: var(--color-background-hover);
22811
23007
  color: var(--color-main-text);
22812
23008
  }
22813
23009
 
22814
23010
  /* Badge mode: the pill takes the value's place in the row. Sized to the
22815
23011
  card's label scale so it sits in the row without pushing the tile taller. */
22816
- .cn-stat-widget__badge[data-v-6f90b30c] {
23012
+ .cn-stat-widget__badge[data-v-b388a5f8] {
22817
23013
  flex: 0 1 auto;
22818
23014
  min-width: 0;
22819
23015
  max-width: 100%;
@@ -22825,7 +23021,7 @@ a.cn-kpi-card--board * {
22825
23021
  /* The denominator of a "value / limit" pair. Deliberately quieter and smaller
22826
23022
  than the value: the tile's subject is what the number IS, not what it is
22827
23023
  allowed to reach. Shares the value's `nowrap` so the pair never breaks. */
22828
- .cn-stat-widget__limit[data-v-6f90b30c] {
23024
+ .cn-stat-widget__limit[data-v-b388a5f8] {
22829
23025
  flex: 0 0 auto;
22830
23026
  font-size: var(--cn-kpi-value-size-compact, 1.25rem);
22831
23027
  font-weight: var(--cn-kpi-title-weight, 600);
@@ -22833,7 +23029,7 @@ a.cn-kpi-card--board * {
22833
23029
  color: var(--cn-kpi-label-color, var(--color-text-maxcontrast));
22834
23030
  white-space: nowrap;
22835
23031
  }
22836
- .cn-stat-widget__trend[data-v-6f90b30c] {
23032
+ .cn-stat-widget__trend[data-v-b388a5f8] {
22837
23033
  display: inline-flex;
22838
23034
  align-items: center;
22839
23035
  gap: 2px;
@@ -22846,7 +23042,7 @@ a.cn-kpi-card--board * {
22846
23042
  error dash is literally a `cn-kpi-card__value`, and two components showing
22847
23043
  the same failure at two different sizes is the drift this consolidation
22848
23044
  exists to remove. Only the colour differs: a failure is not a number. */
22849
- .cn-stat-widget__error[data-v-6f90b30c] {
23045
+ .cn-stat-widget__error[data-v-b388a5f8] {
22850
23046
  font-size: var(--cn-kpi-value-size, 2rem);
22851
23047
  font-weight: var(--cn-kpi-value-weight, 700);
22852
23048
  line-height: var(--cn-kpi-value-line, 1.1);
@@ -24765,23 +24961,23 @@ button.cn-stepper__step[data-v-776581d4] {
24765
24961
  }
24766
24962
 
24767
24963
 
24768
- .cn-widget-object-table[data-v-b6ed17ee] {
24964
+ .cn-widget-object-table[data-v-d8f8d15a] {
24769
24965
  width: 100%;
24770
24966
  }
24771
- .cn-widget-object-table__footer[data-v-b6ed17ee] {
24967
+ .cn-widget-object-table__footer[data-v-d8f8d15a] {
24772
24968
  display: flex;
24773
24969
  gap: 4px;
24774
24970
  padding: 4px 8px;
24775
24971
  border-top: 1px solid var(--color-border);
24776
24972
  }
24777
- .cn-widget-object-table__error[data-v-b6ed17ee] {
24973
+ .cn-widget-object-table__error[data-v-d8f8d15a] {
24778
24974
  color: var(--color-text-error, var(--color-error-text));
24779
24975
  font-size: 0.85em;
24780
24976
  margin: 4px 8px 0;
24781
24977
  }
24782
24978
 
24783
24979
 
24784
- .cn-detail-page__catalog-action[data-v-37d4fdce] {
24980
+ .cn-detail-page__catalog-action[data-v-cf939e1a] {
24785
24981
  align-items: center;
24786
24982
  background: var(--color-primary-element-light);
24787
24983
  border: 0;
@@ -24797,19 +24993,19 @@ button.cn-stepper__step[data-v-776581d4] {
24797
24993
  padding: 0 14px;
24798
24994
  white-space: nowrap;
24799
24995
  }
24800
- .cn-detail-page__catalog-note[data-v-37d4fdce] {
24996
+ .cn-detail-page__catalog-note[data-v-cf939e1a] {
24801
24997
  color: var(--color-text-maxcontrast);
24802
24998
  font-size: 14px;
24803
24999
  white-space: nowrap;
24804
25000
  }
24805
- .cn-detail-widget-host[data-v-37d4fdce],
24806
- .cn-detail-widget-host[data-v-37d4fdce] > * {
25001
+ .cn-detail-widget-host[data-v-cf939e1a],
25002
+ .cn-detail-widget-host[data-v-cf939e1a] > * {
24807
25003
  height: 100%;
24808
25004
  }
24809
25005
 
24810
25006
  /* A bare host is a tab panel's body: it fills the panel and lets the panel
24811
25007
  scroll, rather than growing a second scroll region of its own. */
24812
- .cn-detail-widget-host--bare[data-v-37d4fdce] {
25008
+ .cn-detail-widget-host--bare[data-v-cf939e1a] {
24813
25009
  min-height: 0;
24814
25010
  }
24815
25011
 
@@ -25092,7 +25288,7 @@ button.cn-stepper__step[data-v-776581d4] {
25092
25288
 
25093
25289
 
25094
25290
  /* A stack (`widgetIds`): the panel's widget, then cards 20px apart. */
25095
- .cn-tabs-widget__stack[data-v-0ad78042] {
25291
+ .cn-tabs-widget__stack[data-v-72f3975c] {
25096
25292
  display: flex;
25097
25293
  flex-direction: column;
25098
25294
  gap: 20px;
@@ -25101,19 +25297,19 @@ button.cn-stepper__step[data-v-776581d4] {
25101
25297
  /* A gridded stack (`columns` / `layout` on the tab): 12 columns, widgets wrap
25102
25298
  onto the next row, a row's cards as tall as the tallest. Narrow, it is the
25103
25299
  plain stack again. */
25104
- .cn-tabs-widget__stack--grid[data-v-0ad78042] {
25300
+ .cn-tabs-widget__stack--grid[data-v-72f3975c] {
25105
25301
  display: grid;
25106
25302
  grid-template-columns: repeat(12, minmax(0, 1fr));
25107
25303
  align-items: stretch;
25108
25304
  }
25109
- .cn-tabs-widget__stack--grid[data-v-0ad78042] > * {
25305
+ .cn-tabs-widget__stack--grid[data-v-72f3975c] > * {
25110
25306
  min-width: 0;
25111
25307
  }
25112
25308
  @media (max-width: 700px) {
25113
- .cn-tabs-widget__stack--grid[data-v-0ad78042] {
25309
+ .cn-tabs-widget__stack--grid[data-v-72f3975c] {
25114
25310
  grid-template-columns: minmax(0, 1fr);
25115
25311
  }
25116
- .cn-tabs-widget__stack--grid[data-v-0ad78042] > * {
25312
+ .cn-tabs-widget__stack--grid[data-v-72f3975c] > * {
25117
25313
  grid-column: auto !important;
25118
25314
  }
25119
25315
  }
@@ -25147,7 +25343,7 @@ button.cn-stepper__step[data-v-776581d4] {
25147
25343
  `!important` or on load order this library does not control. The same
25148
25344
  technique, for the same reason, is used on `.cn-tabs__nav .cn-tabs__nav-item`
25149
25345
  in CnTabs to beat Nextcloud's own button margin. */
25150
- .cn-tabs-widget.cn-tabs-widget[data-v-0ad78042] {
25346
+ .cn-tabs-widget.cn-tabs-widget[data-v-72f3975c] {
25151
25347
  background-color: transparent;
25152
25348
  border: 0;
25153
25349
  border-radius: 0;
@@ -25171,12 +25367,12 @@ button.cn-stepper__step[data-v-776581d4] {
25171
25367
  below it: the rule ran straight on to the widget's edge and read as a
25172
25368
  border sticking out past a rounded corner (Ruben, 2026-09-13). Ending it
25173
25369
  where the curve begins makes the rule and the curve one continuous edge. */
25174
- .cn-tabs-widget__tabs[data-v-0ad78042] .cn-tabs__bar {
25370
+ .cn-tabs-widget__tabs[data-v-72f3975c] .cn-tabs__bar {
25175
25371
  border-bottom: none;
25176
25372
  padding: 0;
25177
25373
  position: relative;
25178
25374
  }
25179
- .cn-tabs-widget__tabs[data-v-0ad78042] .cn-tabs__bar::after {
25375
+ .cn-tabs-widget__tabs[data-v-72f3975c] .cn-tabs__bar::after {
25180
25376
  border-bottom: 1px solid var(--color-border);
25181
25377
  content: '';
25182
25378
  inset-block-end: 0;
@@ -25189,11 +25385,11 @@ button.cn-stepper__step[data-v-776581d4] {
25189
25385
  own background-coloured bottom edge, which only works if it paints ABOVE the
25190
25386
  pseudo-element: a positioned pseudo-element otherwise paints over every
25191
25387
  in-flow sibling, rule included. */
25192
- .cn-tabs-widget__tabs[data-v-0ad78042] .cn-tabs__nav-item--active {
25388
+ .cn-tabs-widget__tabs[data-v-72f3975c] .cn-tabs__nav-item--active {
25193
25389
  position: relative;
25194
25390
  z-index: 1;
25195
25391
  }
25196
- .cn-tabs-widget__tabs[data-v-0ad78042] {
25392
+ .cn-tabs-widget__tabs[data-v-72f3975c] {
25197
25393
  display: flex;
25198
25394
  flex-direction: column;
25199
25395
  /* Grow to the widget's height, so the panel fills the grid cell the
@@ -25211,7 +25407,7 @@ button.cn-stepper__step[data-v-776581d4] {
25211
25407
  the open tab, but padding sits inside the painted box — only a margin would
25212
25408
  have opened that gap, and a zero top put every panel's content against the
25213
25409
  strip. */
25214
- .cn-tabs-widget__tabs[data-v-0ad78042] .cn-tabs__content {
25410
+ .cn-tabs-widget__tabs[data-v-72f3975c] .cn-tabs__content {
25215
25411
  background-color: var(--color-main-background);
25216
25412
  /* Three sides only: the bar's rule (redrawn above, stopping at the corner)
25217
25413
  is this sheet's top edge, and the open tab erases the slice of it
@@ -25231,7 +25427,7 @@ button.cn-stepper__step[data-v-776581d4] {
25231
25427
  overflow: auto;
25232
25428
  padding: 12px;
25233
25429
  }
25234
- .cn-tabs-widget__tabs[data-v-0ad78042] .cn-tab {
25430
+ .cn-tabs-widget__tabs[data-v-72f3975c] .cn-tab {
25235
25431
  height: 100%;
25236
25432
  }
25237
25433
 
@@ -25239,15 +25435,15 @@ button.cn-stepper__step[data-v-776581d4] {
25239
25435
  (margin 0 -16px -16px). The panel of a tab pads 12px, so on a tab that
25240
25436
  holds the list directly the footer stuck out 4px on the right and at the
25241
25437
  bottom and made the panel scroll. It bleeds exactly the panel's padding. */
25242
- .cn-tabs-widget__tabs[data-v-0ad78042] .cn-tabs__content > .cn-tab > .cn-detail-widget-host--bare .cn-object-list-widget__add {
25438
+ .cn-tabs-widget__tabs[data-v-72f3975c] .cn-tabs__content > .cn-tab > .cn-detail-widget-host--bare .cn-object-list-widget__add {
25243
25439
  margin: auto -12px -12px;
25244
25440
  }
25245
- .cn-tabs-widget__title[data-v-0ad78042] {
25441
+ .cn-tabs-widget__title[data-v-72f3975c] {
25246
25442
  align-items: center;
25247
25443
  display: inline-flex;
25248
25444
  gap: 6px;
25249
25445
  }
25250
- .cn-tabs-widget__title-icon[data-v-0ad78042] {
25446
+ .cn-tabs-widget__title-icon[data-v-72f3975c] {
25251
25447
  flex: 0 0 auto;
25252
25448
  }
25253
25449
 
@@ -29148,13 +29344,13 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29148
29344
  }
29149
29345
 
29150
29346
 
29151
- .cn-facts-widget[data-v-10daaa85] {
29347
+ .cn-facts-widget[data-v-8146cb58] {
29152
29348
  display: flex;
29153
29349
  flex-direction: column;
29154
29350
  gap: 10px;
29155
29351
  min-width: 0;
29156
29352
  }
29157
- .cn-facts-widget__rows[data-v-10daaa85] {
29353
+ .cn-facts-widget__rows[data-v-8146cb58] {
29158
29354
  display: grid;
29159
29355
  grid-template-columns: max-content 1fr;
29160
29356
  gap: 8px 16px;
@@ -29163,7 +29359,7 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29163
29359
  }
29164
29360
 
29165
29361
  /* Each row is a grid of its own children: the wrapper takes no box. */
29166
- .cn-facts-widget__row[data-v-10daaa85] {
29362
+ .cn-facts-widget__row[data-v-8146cb58] {
29167
29363
  display: contents;
29168
29364
  }
29169
29365
 
@@ -29171,13 +29367,13 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29171
29367
  pushed the label to the right of its column and added 12px around both. The
29172
29368
  class is doubled so these resets outrank that rule, and a dossiq-style
29173
29369
  `:deep()` override in an app is not needed. */
29174
- .cn-facts-widget__label.cn-facts-widget__label[data-v-10daaa85] {
29370
+ .cn-facts-widget__label.cn-facts-widget__label[data-v-8146cb58] {
29175
29371
  margin: 0;
29176
29372
  padding: 0;
29177
29373
  text-align: start;
29178
29374
  color: var(--color-text-maxcontrast);
29179
29375
  }
29180
- .cn-facts-widget__value.cn-facts-widget__value[data-v-10daaa85] {
29376
+ .cn-facts-widget__value.cn-facts-widget__value[data-v-8146cb58] {
29181
29377
  margin: 0;
29182
29378
  padding: 0;
29183
29379
  text-align: start;
@@ -29185,20 +29381,20 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29185
29381
  min-width: 0;
29186
29382
  overflow-wrap: anywhere;
29187
29383
  }
29188
- .cn-facts-widget__title[data-v-10daaa85] {
29384
+ .cn-facts-widget__title[data-v-8146cb58] {
29189
29385
  font-size: 15px;
29190
29386
  font-weight: 600;
29191
29387
  color: var(--color-main-text);
29192
29388
  }
29193
- .cn-facts-widget__line[data-v-10daaa85] {
29389
+ .cn-facts-widget__line[data-v-8146cb58] {
29194
29390
  font-size: 13px;
29195
29391
  color: var(--color-text-maxcontrast);
29196
29392
  }
29197
- .cn-facts-widget__muted[data-v-10daaa85] {
29393
+ .cn-facts-widget__muted[data-v-8146cb58] {
29198
29394
  margin: 0;
29199
29395
  color: var(--color-text-maxcontrast);
29200
29396
  }
29201
- .cn-facts-widget__label .hidden-visually[data-v-10daaa85] {
29397
+ .cn-facts-widget__label .hidden-visually[data-v-8146cb58] {
29202
29398
  clip-path: inset(50%);
29203
29399
  height: 1px;
29204
29400
  overflow: hidden;
@@ -29206,23 +29402,23 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29206
29402
  white-space: nowrap;
29207
29403
  width: 1px;
29208
29404
  }
29209
- .cn-facts-widget__label--icon[data-v-10daaa85] {
29405
+ .cn-facts-widget__label--icon[data-v-8146cb58] {
29210
29406
  align-items: center;
29211
29407
  display: flex;
29212
29408
  }
29213
- .cn-facts-widget__value-link[data-v-10daaa85] {
29409
+ .cn-facts-widget__value-link[data-v-8146cb58] {
29214
29410
  color: var(--color-primary-element);
29215
29411
  text-decoration: underline;
29216
29412
  }
29217
- .cn-facts-widget__inline-button[data-v-10daaa85],
29218
- .cn-facts-widget__icon-button[data-v-10daaa85],
29219
- .cn-facts-widget__action[data-v-10daaa85] {
29413
+ .cn-facts-widget__inline-button[data-v-8146cb58],
29414
+ .cn-facts-widget__icon-button[data-v-8146cb58],
29415
+ .cn-facts-widget__action[data-v-8146cb58] {
29220
29416
  align-items: center;
29221
29417
  cursor: pointer;
29222
29418
  display: inline-flex;
29223
29419
  font: inherit;
29224
29420
  }
29225
- .cn-facts-widget__inline-button[data-v-10daaa85] {
29421
+ .cn-facts-widget__inline-button[data-v-8146cb58] {
29226
29422
  background: var(--color-main-background);
29227
29423
  border: 1px solid var(--color-border-dark);
29228
29424
  border-radius: 16px;
@@ -29233,7 +29429,7 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29233
29429
  min-height: 28px;
29234
29430
  padding: 0 10px;
29235
29431
  }
29236
- .cn-facts-widget__icon-button[data-v-10daaa85] {
29432
+ .cn-facts-widget__icon-button[data-v-8146cb58] {
29237
29433
  background: transparent;
29238
29434
  border: 0;
29239
29435
  border-radius: 6px;
@@ -29242,23 +29438,23 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29242
29438
  padding: 2px;
29243
29439
  vertical-align: middle;
29244
29440
  }
29245
- .cn-facts-widget__icon-button[data-v-10daaa85]:hover,
29246
- .cn-facts-widget__icon-button[data-v-10daaa85]:focus-visible {
29441
+ .cn-facts-widget__icon-button[data-v-8146cb58]:hover,
29442
+ .cn-facts-widget__icon-button[data-v-8146cb58]:focus-visible {
29247
29443
  background: var(--color-background-hover);
29248
29444
  color: var(--color-main-text);
29249
29445
  }
29250
- .cn-facts-widget__text[data-v-10daaa85] {
29446
+ .cn-facts-widget__text[data-v-8146cb58] {
29251
29447
  color: var(--color-main-text);
29252
29448
  font-size: 15px;
29253
29449
  }
29254
29450
 
29255
29451
  /* A lead: an icon tile or initials beside a bold title and a muted subtitle. */
29256
- .cn-facts-widget__lead[data-v-10daaa85] {
29452
+ .cn-facts-widget__lead[data-v-8146cb58] {
29257
29453
  align-items: center;
29258
29454
  display: flex;
29259
29455
  gap: 12px;
29260
29456
  }
29261
- .cn-facts-widget__lead-tile[data-v-10daaa85] {
29457
+ .cn-facts-widget__lead-tile[data-v-8146cb58] {
29262
29458
  align-items: center;
29263
29459
  background: var(--color-background-dark);
29264
29460
  border-radius: 8px;
@@ -29271,29 +29467,29 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29271
29467
  justify-content: center;
29272
29468
  width: 40px;
29273
29469
  }
29274
- .cn-facts-widget__lead-tile--success[data-v-10daaa85] {
29470
+ .cn-facts-widget__lead-tile--success[data-v-8146cb58] {
29275
29471
  background: color-mix(in srgb, var(--color-success) 14%, var(--color-main-background));
29276
29472
  border-radius: 50%;
29277
29473
  color: var(--color-success-text, var(--color-success));
29278
29474
  }
29279
- .cn-facts-widget__lead-tile--info[data-v-10daaa85] {
29475
+ .cn-facts-widget__lead-tile--info[data-v-8146cb58] {
29280
29476
  background: var(--color-primary-element-light);
29281
29477
  border-radius: 50%;
29282
29478
  color: var(--color-primary-element-light-text, var(--color-primary-element));
29283
29479
  }
29284
- .cn-facts-widget__lead-text[data-v-10daaa85] {
29480
+ .cn-facts-widget__lead-text[data-v-8146cb58] {
29285
29481
  display: flex;
29286
29482
  flex-direction: column;
29287
29483
  min-width: 0;
29288
29484
  }
29289
- .cn-facts-widget__lead-title[data-v-10daaa85] {
29485
+ .cn-facts-widget__lead-title[data-v-8146cb58] {
29290
29486
  font-size: 15px;
29291
29487
  }
29292
- .cn-facts-widget__lead-subtitle[data-v-10daaa85] {
29488
+ .cn-facts-widget__lead-subtitle[data-v-8146cb58] {
29293
29489
  color: var(--color-text-maxcontrast);
29294
29490
  font-size: 13px;
29295
29491
  }
29296
- .cn-facts-widget__action[data-v-10daaa85] {
29492
+ .cn-facts-widget__action[data-v-8146cb58] {
29297
29493
  align-self: flex-start;
29298
29494
  background: var(--color-primary-element-light);
29299
29495
  border: 0;
@@ -29305,11 +29501,11 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29305
29501
  min-height: 32px;
29306
29502
  padding: 0 14px;
29307
29503
  }
29308
- .cn-facts-widget__action[data-v-10daaa85]:hover,
29309
- .cn-facts-widget__action[data-v-10daaa85]:focus-visible {
29504
+ .cn-facts-widget__action[data-v-8146cb58]:hover,
29505
+ .cn-facts-widget__action[data-v-8146cb58]:focus-visible {
29310
29506
  background: var(--color-primary-element-light-hover, var(--color-primary-element-light));
29311
29507
  }
29312
- .cn-facts-widget__link[data-v-10daaa85] {
29508
+ .cn-facts-widget__link[data-v-8146cb58] {
29313
29509
  font-size: 14px;
29314
29510
  font-weight: 600;
29315
29511
  color: var(--color-primary-element);
@@ -29794,17 +29990,17 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29794
29990
  }
29795
29991
 
29796
29992
 
29797
- .cn-toggle-table[data-v-1bb40018] {
29993
+ .cn-toggle-table[data-v-24769640] {
29798
29994
  display: flex;
29799
29995
  flex-direction: column;
29800
29996
  gap: 8px;
29801
29997
  min-width: 0;
29802
29998
  }
29803
- .cn-toggle-table__table[data-v-1bb40018] {
29999
+ .cn-toggle-table__table[data-v-24769640] {
29804
30000
  width: 100%;
29805
30001
  border-collapse: collapse;
29806
30002
  }
29807
- .cn-toggle-table__head[data-v-1bb40018] {
30003
+ .cn-toggle-table__head[data-v-24769640] {
29808
30004
  padding: 8px 12px;
29809
30005
  text-align: start;
29810
30006
  font-size: 13px;
@@ -29812,30 +30008,30 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29812
30008
  color: var(--color-text-maxcontrast);
29813
30009
  background: var(--color-background-hover);
29814
30010
  }
29815
- .cn-toggle-table__head--toggle[data-v-1bb40018],
29816
- .cn-toggle-table__cell--toggle[data-v-1bb40018] {
30011
+ .cn-toggle-table__head--toggle[data-v-24769640],
30012
+ .cn-toggle-table__cell--toggle[data-v-24769640] {
29817
30013
  width: 1%;
29818
30014
  white-space: nowrap;
29819
30015
  text-align: end;
29820
30016
  }
29821
- .cn-toggle-table__row[data-v-1bb40018] {
30017
+ .cn-toggle-table__row[data-v-24769640] {
29822
30018
  border-top: 1px solid var(--cn-board-hairline, var(--color-border));
29823
30019
  }
29824
- .cn-toggle-table__cell[data-v-1bb40018] {
30020
+ .cn-toggle-table__cell[data-v-24769640] {
29825
30021
  padding: 10px 12px;
29826
30022
  vertical-align: middle;
29827
30023
  overflow-wrap: anywhere;
29828
30024
  }
29829
- .cn-toggle-table__title[data-v-1bb40018] {
30025
+ .cn-toggle-table__title[data-v-24769640] {
29830
30026
  display: block;
29831
30027
  font-weight: 600;
29832
30028
  }
29833
- .cn-toggle-table__hint[data-v-1bb40018] {
30029
+ .cn-toggle-table__hint[data-v-24769640] {
29834
30030
  display: block;
29835
30031
  font-size: 12px;
29836
30032
  color: var(--color-text-maxcontrast);
29837
30033
  }
29838
- .cn-toggle-table__empty[data-v-1bb40018] {
30034
+ .cn-toggle-table__empty[data-v-24769640] {
29839
30035
  margin: 0;
29840
30036
  color: var(--color-text-maxcontrast);
29841
30037
  }
@@ -29935,27 +30131,27 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29935
30131
  }
29936
30132
 
29937
30133
 
29938
- .cn-record-list__list[data-v-bc186ef8] {
30134
+ .cn-record-list__list[data-v-b2ef255e] {
29939
30135
  list-style: none;
29940
30136
  margin: 0;
29941
30137
  padding: 0;
29942
30138
  }
29943
- .cn-record-list__empty[data-v-bc186ef8],
29944
- .cn-record-list__error[data-v-bc186ef8] {
30139
+ .cn-record-list__empty[data-v-b2ef255e],
30140
+ .cn-record-list__error[data-v-b2ef255e] {
29945
30141
  color: var(--color-text-maxcontrast);
29946
30142
  margin: 0;
29947
30143
  }
29948
- .cn-record-list__loading[data-v-bc186ef8] {
30144
+ .cn-record-list__loading[data-v-b2ef255e] {
29949
30145
  display: flex;
29950
30146
  justify-content: center;
29951
30147
  padding: 8px 0;
29952
30148
  }
29953
30149
 
29954
30150
  /* rows */
29955
- .cn-record-list--rows .cn-record-list__item + .cn-record-list__item[data-v-bc186ef8] {
30151
+ .cn-record-list--rows .cn-record-list__item + .cn-record-list__item[data-v-b2ef255e] {
29956
30152
  border-top: 1px solid var(--color-border);
29957
30153
  }
29958
- .cn-record-list__row[data-v-bc186ef8] {
30154
+ .cn-record-list__row[data-v-b2ef255e] {
29959
30155
  align-items: center;
29960
30156
  color: var(--color-main-text);
29961
30157
  display: flex;
@@ -29963,11 +30159,11 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29963
30159
  padding: 12px 0;
29964
30160
  text-decoration: none;
29965
30161
  }
29966
- .cn-record-list__row--link:hover .cn-record-list__title[data-v-bc186ef8],
29967
- .cn-record-list__row--link:focus-visible .cn-record-list__title[data-v-bc186ef8] {
30162
+ .cn-record-list__row--link:hover .cn-record-list__title[data-v-b2ef255e],
30163
+ .cn-record-list__row--link:focus-visible .cn-record-list__title[data-v-b2ef255e] {
29968
30164
  text-decoration: underline;
29969
30165
  }
29970
- .cn-record-list__avatar[data-v-bc186ef8] {
30166
+ .cn-record-list__avatar[data-v-b2ef255e] {
29971
30167
  align-items: center;
29972
30168
  background: var(--color-background-hover);
29973
30169
  border-radius: 50%;
@@ -29980,67 +30176,67 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
29980
30176
  justify-content: center;
29981
30177
  width: 36px;
29982
30178
  }
29983
- .cn-record-list__main[data-v-bc186ef8] {
30179
+ .cn-record-list__main[data-v-b2ef255e] {
29984
30180
  display: flex;
29985
30181
  flex: 1 1 auto;
29986
30182
  flex-direction: column;
29987
30183
  gap: 2px;
29988
30184
  min-width: 0;
29989
30185
  }
29990
- .cn-record-list__title[data-v-bc186ef8] {
30186
+ .cn-record-list__title[data-v-b2ef255e] {
29991
30187
  font-size: 15px;
29992
30188
  font-weight: 700;
29993
30189
  }
29994
- .cn-record-list__meta[data-v-bc186ef8] {
30190
+ .cn-record-list__meta[data-v-b2ef255e] {
29995
30191
  color: var(--color-text-maxcontrast);
29996
30192
  font-size: 13px;
29997
30193
  }
29998
- .cn-record-list__aside[data-v-bc186ef8] {
30194
+ .cn-record-list__aside[data-v-b2ef255e] {
29999
30195
  align-items: center;
30000
30196
  display: flex;
30001
30197
  flex: none;
30002
30198
  gap: 16px;
30003
30199
  }
30004
- .cn-record-list__trailing[data-v-bc186ef8] {
30200
+ .cn-record-list__trailing[data-v-b2ef255e] {
30005
30201
  font-size: 14px;
30006
30202
  white-space: nowrap;
30007
30203
  }
30008
- .cn-record-list__due[data-v-bc186ef8] {
30204
+ .cn-record-list__due[data-v-b2ef255e] {
30009
30205
  font-size: 14px;
30010
30206
  white-space: nowrap;
30011
30207
  }
30012
- .cn-record-list__due--danger[data-v-bc186ef8] {
30208
+ .cn-record-list__due--danger[data-v-b2ef255e] {
30013
30209
  color: var(--color-text-error, var(--color-error-text));
30014
30210
  font-weight: 600;
30015
30211
  }
30016
- .cn-record-list__due--empty[data-v-bc186ef8] {
30212
+ .cn-record-list__due--empty[data-v-b2ef255e] {
30017
30213
  color: var(--color-text-maxcontrast);
30018
30214
  }
30019
- .cn-record-list__row--action[data-v-bc186ef8] {
30215
+ .cn-record-list__row--action[data-v-b2ef255e] {
30020
30216
  flex-wrap: wrap;
30021
30217
  gap: 8px 16px;
30022
30218
  padding: 14px 0;
30023
30219
  }
30024
- .cn-record-list__row--action .cn-record-list__main[data-v-bc186ef8] {
30220
+ .cn-record-list__row--action .cn-record-list__main[data-v-b2ef255e] {
30025
30221
  flex: 1 1 280px;
30026
30222
  gap: 3px;
30027
30223
  }
30028
- .cn-record-list__title--link[data-v-bc186ef8] {
30224
+ .cn-record-list__title--link[data-v-b2ef255e] {
30029
30225
  color: var(--color-main-text);
30030
30226
  text-decoration: underline;
30031
30227
  }
30032
- .cn-record-list__pills[data-v-bc186ef8] {
30228
+ .cn-record-list__pills[data-v-b2ef255e] {
30033
30229
  display: flex;
30034
30230
  flex: 0 0 120px;
30035
30231
  gap: 6px;
30036
30232
  justify-content: flex-end;
30037
30233
  }
30038
- .cn-record-list__due--column[data-v-bc186ef8] {
30234
+ .cn-record-list__due--column[data-v-b2ef255e] {
30039
30235
  flex: 0 0 96px;
30040
30236
  font-size: 13px;
30041
30237
  text-align: end;
30042
30238
  }
30043
- .cn-record-list__action[data-v-bc186ef8] {
30239
+ .cn-record-list__action[data-v-b2ef255e] {
30044
30240
  align-items: center;
30045
30241
  background: var(--color-primary-element-light);
30046
30242
  border: 0;
@@ -30057,26 +30253,26 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
30057
30253
  padding: 0 14px;
30058
30254
  text-decoration: none;
30059
30255
  }
30060
- .cn-record-list__action[data-v-bc186ef8]:hover,
30061
- .cn-record-list__action[data-v-bc186ef8]:focus-visible {
30256
+ .cn-record-list__action[data-v-b2ef255e]:hover,
30257
+ .cn-record-list__action[data-v-b2ef255e]:focus-visible {
30062
30258
  background: var(--color-primary-element-light-hover, var(--color-primary-element-light));
30063
30259
  }
30064
- .cn-record-list__chevron[data-v-bc186ef8] {
30260
+ .cn-record-list__chevron[data-v-b2ef255e] {
30065
30261
  color: var(--color-text-maxcontrast);
30066
30262
  flex: none;
30067
30263
  }
30068
30264
 
30069
30265
  /* feed */
30070
- .cn-record-list--feed .cn-record-list__item + .cn-record-list__item[data-v-bc186ef8] {
30266
+ .cn-record-list--feed .cn-record-list__item + .cn-record-list__item[data-v-b2ef255e] {
30071
30267
  border-top: 1px solid var(--color-border);
30072
30268
  }
30073
- .cn-record-list__feed-row[data-v-bc186ef8] {
30269
+ .cn-record-list__feed-row[data-v-b2ef255e] {
30074
30270
  align-items: flex-start;
30075
30271
  display: flex;
30076
30272
  gap: 14px;
30077
30273
  padding: 12px 0;
30078
30274
  }
30079
- .cn-record-list__feed-icon[data-v-bc186ef8] {
30275
+ .cn-record-list__feed-icon[data-v-b2ef255e] {
30080
30276
  align-items: center;
30081
30277
  background: var(--color-primary-element-light);
30082
30278
  border-radius: 50%;
@@ -30087,25 +30283,25 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
30087
30283
  justify-content: center;
30088
30284
  width: 36px;
30089
30285
  }
30090
- .cn-record-list__text[data-v-bc186ef8] {
30286
+ .cn-record-list__text[data-v-b2ef255e] {
30091
30287
  font-size: 15px;
30092
30288
  }
30093
- .cn-record-list--feed .cn-record-list__main[data-v-bc186ef8] {
30289
+ .cn-record-list--feed .cn-record-list__main[data-v-b2ef255e] {
30094
30290
  color: var(--color-main-text);
30095
30291
  text-decoration: none;
30096
30292
  }
30097
30293
 
30098
30294
  /* inline */
30099
- .cn-record-list__inline-row[data-v-bc186ef8] {
30295
+ .cn-record-list__inline-row[data-v-b2ef255e] {
30100
30296
  padding: 4px 0;
30101
30297
  }
30102
- .cn-record-list__label[data-v-bc186ef8] {
30298
+ .cn-record-list__label[data-v-b2ef255e] {
30103
30299
  margin-inline-end: 4px;
30104
30300
  }
30105
- .cn-record-list__inline-title[data-v-bc186ef8] {
30301
+ .cn-record-list__inline-title[data-v-b2ef255e] {
30106
30302
  color: var(--color-main-text);
30107
30303
  }
30108
- a.cn-record-list__inline-title[data-v-bc186ef8] {
30304
+ a.cn-record-list__inline-title[data-v-b2ef255e] {
30109
30305
  color: var(--color-primary-element);
30110
30306
  text-decoration: underline;
30111
30307
  }
@@ -31052,40 +31248,40 @@ a.cn-record-list__inline-title[data-v-bc186ef8] {
31052
31248
  }
31053
31249
 
31054
31250
 
31055
- .cn-version-info__card[data-v-7a828af4] {
31251
+ .cn-version-info__card[data-v-17db98e4] {
31056
31252
  background: var(--color-background-hover);
31057
31253
  border: 1px solid var(--color-border);
31058
31254
  border-radius: var(--border-radius-large);
31059
31255
  padding: 20px;
31060
31256
  margin-bottom: 20px;
31061
31257
  }
31062
- .cn-version-info__card h4[data-v-7a828af4] {
31258
+ .cn-version-info__card h4[data-v-17db98e4] {
31063
31259
  margin: 0 0 16px 0;
31064
31260
  font-size: 16px;
31065
31261
  font-weight: 600;
31066
31262
  color: var(--color-main-text);
31067
31263
  }
31068
- .cn-version-info__details[data-v-7a828af4] {
31264
+ .cn-version-info__details[data-v-17db98e4] {
31069
31265
  display: flex;
31070
31266
  flex-direction: column;
31071
31267
  gap: 12px;
31072
31268
  }
31073
- .cn-version-info__item[data-v-7a828af4] {
31269
+ .cn-version-info__item[data-v-17db98e4] {
31074
31270
  display: flex;
31075
31271
  justify-content: space-between;
31076
31272
  align-items: center;
31077
31273
  padding: 8px 0;
31078
31274
  border-bottom: 1px solid var(--color-border);
31079
31275
  }
31080
- .cn-version-info__item[data-v-7a828af4]:last-child {
31276
+ .cn-version-info__item[data-v-17db98e4]:last-child {
31081
31277
  border-bottom: none;
31082
31278
  }
31083
- .cn-version-info__label[data-v-7a828af4] {
31279
+ .cn-version-info__label[data-v-17db98e4] {
31084
31280
  font-weight: 500;
31085
31281
  color: var(--color-text-maxcontrast);
31086
31282
  font-size: 14px;
31087
31283
  }
31088
- .cn-version-info__value[data-v-7a828af4] {
31284
+ .cn-version-info__value[data-v-17db98e4] {
31089
31285
  font-family: 'Courier New', Courier, monospace;
31090
31286
  font-weight: 600;
31091
31287
  color: var(--color-main-text);
@@ -31093,28 +31289,28 @@ a.cn-record-list__inline-title[data-v-bc186ef8] {
31093
31289
  }
31094
31290
 
31095
31291
  /* Status classes for values */
31096
- .cn-version-info__status--ok[data-v-7a828af4] {
31292
+ .cn-version-info__status--ok[data-v-17db98e4] {
31097
31293
  color: var(--color-success);
31098
31294
  font-weight: 600;
31099
31295
  }
31100
- .cn-version-info__status--warning[data-v-7a828af4] {
31296
+ .cn-version-info__status--warning[data-v-17db98e4] {
31101
31297
  color: var(--color-warning);
31102
31298
  font-weight: 600;
31103
31299
  }
31104
- .cn-version-info__status--error[data-v-7a828af4] {
31300
+ .cn-version-info__status--error[data-v-17db98e4] {
31105
31301
  color: var(--color-error);
31106
31302
  font-weight: 600;
31107
31303
  }
31108
31304
  @media (max-width: 768px) {
31109
- .cn-version-info__item[data-v-7a828af4] {
31305
+ .cn-version-info__item[data-v-17db98e4] {
31110
31306
  flex-direction: column;
31111
31307
  align-items: flex-start;
31112
31308
  gap: 4px;
31113
31309
  }
31114
- .cn-version-info__label[data-v-7a828af4] {
31310
+ .cn-version-info__label[data-v-17db98e4] {
31115
31311
  font-weight: 600;
31116
31312
  }
31117
- .cn-version-info__value[data-v-7a828af4] {
31313
+ .cn-version-info__value[data-v-17db98e4] {
31118
31314
  word-break: break-all;
31119
31315
  }
31120
31316
  }
@@ -34382,28 +34578,28 @@ to {
34382
34578
  }
34383
34579
 
34384
34580
 
34385
- .cn-admin-settings-shell[data-v-2f22ff08] {
34581
+ .cn-admin-settings-shell[data-v-3672ca0b] {
34386
34582
  max-width: 900px;
34387
34583
  }
34388
34584
 
34389
34585
  /* The board look lifts the width and lays the header and cards on a grid (look-board.css). */
34390
- .cn-support-info[data-v-2f22ff08] {
34586
+ .cn-support-info[data-v-3672ca0b] {
34391
34587
  margin-top: 16px;
34392
34588
  padding-top: 16px;
34393
34589
  border-top: 1px solid var(--color-border);
34394
34590
  }
34395
- .cn-support-info h4[data-v-2f22ff08] {
34591
+ .cn-support-info h4[data-v-3672ca0b] {
34396
34592
  margin: 0 0 8px 0;
34397
34593
  font-size: 14px;
34398
34594
  font-weight: 600;
34399
34595
  color: var(--color-main-text);
34400
34596
  }
34401
- .cn-support-info p[data-v-2f22ff08] {
34597
+ .cn-support-info p[data-v-3672ca0b] {
34402
34598
  margin: 4px 0;
34403
34599
  color: var(--color-text-maxcontrast);
34404
34600
  font-size: 14px;
34405
34601
  }
34406
- .cn-support-info a[data-v-2f22ff08] {
34602
+ .cn-support-info a[data-v-3672ca0b] {
34407
34603
  color: var(--color-primary-element);
34408
34604
  }
34409
34605
 
@@ -34505,19 +34701,24 @@ to {
34505
34701
  gap: 8px;
34506
34702
  }
34507
34703
 
34508
- .cn-board-view.cn-board-view--board .cn-board-view__card-title {
34704
+ /* The title is a link drawn as a heading (board DqWerkbord): main text, no
34705
+ underline. `!important` because a theme's `a { color; text-decoration }`
34706
+ carries it (thematiq), and a bare `a` with `!important` beats any class. */
34707
+ .cn-board-view.cn-board-view--board .cn-board-view__card-title,
34708
+ .cn-board-view.cn-board-view--board .cn-board-view__card-title:visited {
34509
34709
  flex: 1 1 auto;
34510
34710
  min-width: 0;
34511
34711
  font-size: 15px;
34512
34712
  font-weight: 700;
34513
34713
  line-height: 1.3;
34514
- color: var(--color-main-text);
34515
- text-decoration: none;
34714
+ color: var(--color-main-text) !important;
34715
+ text-decoration: none !important;
34516
34716
  overflow-wrap: anywhere;
34517
34717
  }
34518
34718
 
34519
34719
  .cn-board-view.cn-board-view--board .cn-board-view__card-title:hover {
34520
- text-decoration: underline;
34720
+ color: var(--color-main-text) !important;
34721
+ text-decoration: underline !important;
34521
34722
  }
34522
34723
 
34523
34724
  .cn-board-view.cn-board-view--board .cn-board-view__card-title:focus-visible {
@@ -34677,21 +34878,77 @@ to {
34677
34878
  outline-offset: 2px;
34678
34879
  }
34679
34880
 
34680
- .cn-board-view__columns[data-v-0dd966c7] {
34881
+ /*
34882
+ * screens-board-reference-columns: a wide board wraps its columns onto more
34883
+ * rows (`config.board.wrap`), as many to a row as fit at 240px, instead of
34884
+ * one row that scrolls sideways.
34885
+ */
34886
+ .cn-board-view.cn-board-view--wrap .cn-board-view__columns {
34887
+ display: grid;
34888
+ grid-auto-flow: row;
34889
+ grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
34890
+ overflow-x: visible;
34891
+ }
34892
+
34893
+ .cn-board-view.cn-board-view--wrap:not(.cn-board-view--board) .cn-board-view__columns {
34894
+ gap: 12px;
34895
+ }
34896
+
34897
+ /* A column the dragged card cannot reach fades; the label stays readable. */
34898
+ .cn-board-view .cn-board-view__column--unreachable {
34899
+ opacity: 0.45;
34900
+ }
34901
+
34902
+ /* The selection checkbox: in the board look's card head, before the title. */
34903
+ .cn-board-view .cn-board-view__select {
34904
+ flex: none;
34905
+ width: 16px;
34906
+ height: 16px;
34907
+ margin: 2px 0 0;
34908
+ accent-color: var(--color-primary-element);
34909
+ cursor: pointer;
34910
+ }
34911
+
34912
+ /* Board look: the board draws no checkbox. It shows on a hovered card, on a
34913
+ card holding focus (so Tab still reaches it), once anything is selected, and
34914
+ always where there is no hover. Collapsed rather than hidden, so it stays in
34915
+ the tab order. */
34916
+ @media (hover: hover) {
34917
+ .cn-board-view.cn-board-view--board:not(.cn-board-view--selecting) .cn-board-view__card:not(:hover, :focus-within) .cn-board-view__select {
34918
+ width: 0;
34919
+ margin-inline-end: -8px;
34920
+ opacity: 0;
34921
+ }
34922
+ }
34923
+
34924
+ /* A menu target the card cannot reach: still listed, greyed, with its note. */
34925
+ .cn-board-view.cn-board-view--board .cn-board-view__menu-item.cn-board-view__menu-item--blocked {
34926
+ color: var(--color-text-maxcontrast);
34927
+ cursor: not-allowed;
34928
+ }
34929
+
34930
+ .cn-board-view .cn-board-view__menu-note {
34931
+ margin-inline-start: auto;
34932
+ padding-inline-start: 12px;
34933
+ font-size: 12px;
34934
+ color: var(--color-text-maxcontrast);
34935
+ }
34936
+
34937
+ .cn-board-view__columns[data-v-181b36b2] {
34681
34938
  display: flex;
34682
34939
  gap: 12px;
34683
34940
  overflow-x: auto;
34684
34941
  align-items: flex-start;
34685
34942
  }
34686
34943
 
34687
- .cn-board-view__column[data-v-0dd966c7] {
34944
+ .cn-board-view__column[data-v-181b36b2] {
34688
34945
  flex: 0 0 260px;
34689
34946
  background-color: var(--color-background-hover);
34690
34947
  border-radius: var(--border-radius-large);
34691
34948
  padding: 8px;
34692
34949
  }
34693
34950
 
34694
- .cn-board-view__column-header[data-v-0dd966c7] {
34951
+ .cn-board-view__column-header[data-v-181b36b2] {
34695
34952
  display: flex;
34696
34953
  justify-content: space-between;
34697
34954
  gap: 8px;
@@ -34699,13 +34956,13 @@ to {
34699
34956
  margin: 0 0 8px;
34700
34957
  }
34701
34958
 
34702
- .cn-board-view__count[data-v-0dd966c7],
34703
- .cn-board-view__empty[data-v-0dd966c7],
34704
- .cn-board-view__unusable[data-v-0dd966c7] {
34959
+ .cn-board-view__count[data-v-181b36b2],
34960
+ .cn-board-view__empty[data-v-181b36b2],
34961
+ .cn-board-view__unusable[data-v-181b36b2] {
34705
34962
  color: var(--color-text-maxcontrast);
34706
34963
  }
34707
34964
 
34708
- .cn-board-view__card[data-v-0dd966c7] {
34965
+ .cn-board-view__card[data-v-181b36b2] {
34709
34966
  display: block;
34710
34967
  background-color: var(--color-main-background);
34711
34968
  border: 1px solid var(--color-border);
@@ -34714,29 +34971,29 @@ to {
34714
34971
  margin-bottom: 8px;
34715
34972
  }
34716
34973
 
34717
- .cn-board-view__card-field[data-v-0dd966c7] {
34974
+ .cn-board-view__card-field[data-v-181b36b2] {
34718
34975
  display: block;
34719
34976
  }
34720
34977
 
34721
34978
  /* A late card: an edge in the error colour, drawn as an inset shadow so the
34722
34979
  card keeps its size and its rounded corners. The label below carries the
34723
34980
  meaning; the edge only helps a sighted reader find it. */
34724
- .cn-board-view__card--overdue[data-v-0dd966c7] {
34981
+ .cn-board-view__card--overdue[data-v-181b36b2] {
34725
34982
  border-color: var(--color-error);
34726
34983
  box-shadow: inset 3px 0 0 var(--color-error);
34727
34984
  }
34728
34985
 
34729
- .cn-board-view__due[data-v-0dd966c7] {
34986
+ .cn-board-view__due[data-v-181b36b2] {
34730
34987
  display: block;
34731
34988
  font-size: 0.85em;
34732
34989
  font-weight: 700;
34733
34990
  }
34734
34991
 
34735
- .cn-board-view__due--overdue[data-v-0dd966c7] {
34992
+ .cn-board-view__due--overdue[data-v-181b36b2] {
34736
34993
  color: var(--color-error-text, var(--color-error));
34737
34994
  }
34738
34995
 
34739
- .cn-board-view__due--soon[data-v-0dd966c7] {
34996
+ .cn-board-view__due--soon[data-v-181b36b2] {
34740
34997
  color: var(--color-warning-text, var(--color-main-text));
34741
34998
  font-weight: 600;
34742
34999
  }
@@ -34745,7 +35002,7 @@ to {
34745
35002
  * The card's opening control. The cursor and the focus ring live here now,
34746
35003
  * on the thing that actually does something, rather than on the box.
34747
35004
  */
34748
- .cn-board-view__card-open[data-v-0dd966c7] {
35005
+ .cn-board-view__card-open[data-v-181b36b2] {
34749
35006
  background: none;
34750
35007
  border: none;
34751
35008
  padding: 0;
@@ -34754,12 +35011,12 @@ to {
34754
35011
  font-size: 0.8rem;
34755
35012
  }
34756
35013
 
34757
- .cn-board-view__card-open[data-v-0dd966c7]:focus-visible {
35014
+ .cn-board-view__card-open[data-v-181b36b2]:focus-visible {
34758
35015
  outline: 2px solid var(--color-primary-element);
34759
35016
  outline-offset: 2px;
34760
35017
  }
34761
35018
 
34762
- .cn-board-view__lane-header[data-v-0dd966c7] {
35019
+ .cn-board-view__lane-header[data-v-181b36b2] {
34763
35020
  background: none;
34764
35021
  border: none;
34765
35022
  font-weight: bold;
@@ -34768,12 +35025,12 @@ to {
34768
35025
  color: var(--color-main-text);
34769
35026
  }
34770
35027
 
34771
- .cn-board-view__move-label[data-v-0dd966c7] {
35028
+ .cn-board-view__move-label[data-v-181b36b2] {
34772
35029
  color: var(--color-text-maxcontrast);
34773
35030
  font-size: 0.8rem;
34774
35031
  }
34775
35032
 
34776
- .cn-board-view__refusal[data-v-0dd966c7] {
35033
+ .cn-board-view__refusal[data-v-181b36b2] {
34777
35034
  color: var(--color-error);
34778
35035
  }
34779
35036
 
@@ -35560,6 +35817,16 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
35560
35817
  }
35561
35818
 
35562
35819
 
35820
+ .cn-run-node-dialog__form[data-v-2d7cb7f5] {
35821
+ display: flex;
35822
+ flex-direction: column;
35823
+ gap: 12px;
35824
+ }
35825
+ .cn-run-node-dialog__hint[data-v-2d7cb7f5] {
35826
+ color: var(--color-text-maxcontrast);
35827
+ }
35828
+
35829
+
35563
35830
  .cn-advanced-form-dialog__json-editor[data-v-3cca5b13] {
35564
35831
  display: flex;
35565
35832
  flex-direction: column;
@@ -36156,6 +36423,21 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
36156
36423
  }
36157
36424
 
36158
36425
 
36426
+ .cn-action-buttons[data-v-49607313] {
36427
+ display: inline-flex;
36428
+ align-items: center;
36429
+ gap: 8px;
36430
+ flex-wrap: wrap;
36431
+ }
36432
+
36433
+ /* In menu mode the only children are dialogs, so the wrapper must not be a
36434
+ box: an empty inline-flex child still eats one of the header's flex gaps
36435
+ and pushes the Actions menu away from the Edit button beside it. */
36436
+ .cn-action-buttons--menu[data-v-49607313] {
36437
+ display: contents;
36438
+ }
36439
+
36440
+
36159
36441
  .cn-copy__pattern[data-v-18a59770] {
36160
36442
  margin-bottom: 16px;
36161
36443
  }
@@ -37099,55 +37381,88 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37099
37381
  }
37100
37382
 
37101
37383
 
37102
- .cn-register-mapping__group[data-v-0abd37fe] {
37384
+ .cn-register-mapping__group[data-v-8d3cad98] {
37103
37385
  margin-bottom: 24px;
37104
37386
  border: 1px solid var(--color-border);
37105
37387
  border-radius: var(--border-radius-large);
37106
37388
  padding: 20px;
37107
37389
  background: var(--color-background-hover);
37108
37390
  }
37109
- .cn-register-mapping__group[data-v-0abd37fe]:last-child {
37391
+ .cn-register-mapping__group[data-v-8d3cad98]:last-child {
37110
37392
  margin-bottom: 0;
37111
37393
  }
37112
- .cn-register-mapping__group-header[data-v-0abd37fe] {
37394
+ .cn-register-mapping__group-header[data-v-8d3cad98] {
37113
37395
  display: flex;
37114
37396
  align-items: center;
37115
37397
  justify-content: space-between;
37116
37398
  margin-bottom: 12px;
37117
37399
  }
37118
- .cn-register-mapping__group-title[data-v-0abd37fe] {
37400
+ .cn-register-mapping__group-heading[data-v-8d3cad98] {
37401
+ margin: 0 0 12px;
37402
+ font: inherit;
37403
+ }
37404
+ .cn-register-mapping__group--collapsed .cn-register-mapping__group-heading[data-v-8d3cad98] {
37405
+ margin-bottom: 0;
37406
+ }
37407
+ .cn-register-mapping__group-toggle[data-v-8d3cad98] {
37408
+ box-sizing: border-box;
37409
+ display: flex;
37410
+ align-items: center;
37411
+ gap: 8px;
37412
+ width: 100%;
37413
+ min-height: 44px;
37414
+ margin: 0;
37415
+ padding: 0;
37416
+ border: 0;
37417
+ background: transparent;
37418
+ color: inherit;
37419
+ font: inherit;
37420
+ text-align: start;
37421
+ cursor: pointer;
37422
+ }
37423
+ .cn-register-mapping__group-toggle[data-v-8d3cad98]:focus-visible {
37424
+ outline: 2px solid var(--color-primary-element);
37425
+ outline-offset: 2px;
37426
+ border-radius: var(--border-radius);
37427
+ }
37428
+ .cn-register-mapping__group-chevron[data-v-8d3cad98] {
37429
+ display: inline-flex;
37430
+ flex: none;
37431
+ color: var(--color-text-maxcontrast);
37432
+ }
37433
+ .cn-register-mapping__group-toggle .cn-register-mapping__group-header[data-v-8d3cad98] {
37434
+ flex: 1 1 auto;
37435
+ flex-wrap: wrap;
37436
+ gap: 4px 12px;
37437
+ min-width: 0;
37438
+ margin-bottom: 0;
37439
+ }
37440
+ .cn-register-mapping__group-title[data-v-8d3cad98] {
37119
37441
  font-size: 16px;
37120
37442
  font-weight: 600;
37121
37443
  margin: 0;
37122
37444
  color: var(--color-main-text);
37123
37445
  }
37124
- .cn-register-mapping__group-status[data-v-0abd37fe] {
37446
+ .cn-register-mapping__group-status[data-v-8d3cad98] {
37125
37447
  font-size: 13px;
37126
37448
  color: var(--color-text-maxcontrast);
37127
37449
  }
37128
- .cn-register-mapping__group-description[data-v-0abd37fe] {
37450
+ .cn-register-mapping__group-description[data-v-8d3cad98] {
37129
37451
  color: var(--color-text-maxcontrast);
37130
37452
  font-size: 13px;
37131
37453
  margin: 0 0 12px 0;
37132
37454
  }
37133
- .cn-register-mapping__label[data-v-0abd37fe] {
37134
- display: block;
37135
- font-weight: 500;
37136
- font-size: 13px;
37137
- color: var(--color-text-maxcontrast);
37138
- margin-bottom: 4px;
37139
- }
37140
- .cn-register-mapping__register-select[data-v-0abd37fe] {
37455
+ .cn-register-mapping__register-select[data-v-8d3cad98] {
37141
37456
  margin-bottom: 16px;
37142
37457
  max-width: 400px;
37143
37458
  }
37144
- .cn-register-mapping__type-list[data-v-0abd37fe] {
37459
+ .cn-register-mapping__type-list[data-v-8d3cad98] {
37145
37460
  border: 1px solid var(--color-border);
37146
37461
  border-radius: var(--border-radius);
37147
37462
  overflow: hidden;
37148
37463
  background: var(--color-main-background);
37149
37464
  }
37150
- .cn-register-mapping__type-list-header[data-v-0abd37fe] {
37465
+ .cn-register-mapping__type-list-header[data-v-8d3cad98] {
37151
37466
  display: grid;
37152
37467
  grid-template-columns: 1fr 1fr 40px 32px;
37153
37468
  align-items: center;
@@ -37160,7 +37475,7 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37160
37475
  border-bottom: 1px solid var(--color-border);
37161
37476
  background: var(--color-background-hover);
37162
37477
  }
37163
- .cn-register-mapping__type-row[data-v-0abd37fe] {
37478
+ .cn-register-mapping__type-row[data-v-8d3cad98] {
37164
37479
  display: grid;
37165
37480
  grid-template-columns: 1fr 1fr 40px 32px;
37166
37481
  align-items: center;
@@ -37169,61 +37484,61 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37169
37484
  cursor: pointer;
37170
37485
  transition: background-color 0.15s ease;
37171
37486
  }
37172
- .cn-register-mapping__type-row[data-v-0abd37fe]:hover {
37487
+ .cn-register-mapping__type-row[data-v-8d3cad98]:hover {
37173
37488
  background: var(--color-background-hover);
37174
37489
  }
37175
- .cn-register-mapping__type-row--expanded[data-v-0abd37fe] {
37490
+ .cn-register-mapping__type-row--expanded[data-v-8d3cad98] {
37176
37491
  background: var(--color-background-hover);
37177
37492
  }
37178
- .cn-register-mapping__type-name[data-v-0abd37fe] {
37493
+ .cn-register-mapping__type-name[data-v-8d3cad98] {
37179
37494
  font-weight: 500;
37180
37495
  color: var(--color-main-text);
37181
37496
  }
37182
- .cn-register-mapping__type-schema[data-v-0abd37fe] {
37497
+ .cn-register-mapping__type-schema[data-v-8d3cad98] {
37183
37498
  color: var(--color-text-maxcontrast);
37184
37499
  font-size: 13px;
37185
37500
  }
37186
- .cn-register-mapping__type-status[data-v-0abd37fe] {
37501
+ .cn-register-mapping__type-status[data-v-8d3cad98] {
37187
37502
  display: flex;
37188
37503
  justify-content: center;
37189
37504
  }
37190
- .cn-register-mapping__type-chevron[data-v-0abd37fe] {
37505
+ .cn-register-mapping__type-chevron[data-v-8d3cad98] {
37191
37506
  display: flex;
37192
37507
  justify-content: center;
37193
37508
  color: var(--color-text-maxcontrast);
37194
37509
  }
37195
- .cn-register-mapping__status-dot[data-v-0abd37fe] {
37510
+ .cn-register-mapping__status-dot[data-v-8d3cad98] {
37196
37511
  display: inline-block;
37197
37512
  width: 10px;
37198
37513
  height: 10px;
37199
37514
  border-radius: 50%;
37200
37515
  }
37201
- .cn-register-mapping__status-dot--configured[data-v-0abd37fe] {
37516
+ .cn-register-mapping__status-dot--configured[data-v-8d3cad98] {
37202
37517
  background-color: var(--color-success);
37203
37518
  }
37204
- .cn-register-mapping__status-dot--unconfigured[data-v-0abd37fe] {
37519
+ .cn-register-mapping__status-dot--unconfigured[data-v-8d3cad98] {
37205
37520
  background-color: var(--color-warning);
37206
37521
  }
37207
- .cn-register-mapping__type-detail[data-v-0abd37fe] {
37522
+ .cn-register-mapping__type-detail[data-v-8d3cad98] {
37208
37523
  padding: 12px 16px 16px;
37209
37524
  border-bottom: 1px solid var(--color-border);
37210
37525
  background: var(--color-main-background);
37211
37526
  }
37212
- .cn-register-mapping__type-description[data-v-0abd37fe] {
37527
+ .cn-register-mapping__type-description[data-v-8d3cad98] {
37213
37528
  color: var(--color-text-maxcontrast);
37214
37529
  font-size: 13px;
37215
37530
  margin: 0 0 8px 0;
37216
37531
  }
37217
37532
 
37218
37533
  /* Slide transition */
37219
- .slide-enter-active[data-v-0abd37fe],
37220
- .slide-leave-active[data-v-0abd37fe] {
37534
+ .slide-enter-active[data-v-8d3cad98],
37535
+ .slide-leave-active[data-v-8d3cad98] {
37221
37536
  transition: all 0.2s ease;
37222
37537
  max-height: 200px;
37223
37538
  overflow: hidden;
37224
37539
  }
37225
- .slide-enter[data-v-0abd37fe],
37226
- .slide-leave-to[data-v-0abd37fe] {
37540
+ .slide-enter[data-v-8d3cad98],
37541
+ .slide-leave-to[data-v-8d3cad98] {
37227
37542
  max-height: 0;
37228
37543
  padding-top: 0;
37229
37544
  padding-bottom: 0;
@@ -37231,20 +37546,20 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37231
37546
  }
37232
37547
 
37233
37548
  /* Last row in list should not have bottom border */
37234
- .cn-register-mapping__type-list[data-v-0abd37fe] > :last-child {
37549
+ .cn-register-mapping__type-list[data-v-8d3cad98] > :last-child {
37235
37550
  border-bottom: none;
37236
37551
  }
37237
37552
  @media (max-width: 768px) {
37238
- .cn-register-mapping__type-list-header[data-v-0abd37fe] {
37553
+ .cn-register-mapping__type-list-header[data-v-8d3cad98] {
37239
37554
  display: none;
37240
37555
  }
37241
- .cn-register-mapping__type-row[data-v-0abd37fe] {
37556
+ .cn-register-mapping__type-row[data-v-8d3cad98] {
37242
37557
  grid-template-columns: 1fr auto 32px;
37243
37558
  }
37244
- .cn-register-mapping__type-schema[data-v-0abd37fe] {
37559
+ .cn-register-mapping__type-schema[data-v-8d3cad98] {
37245
37560
  display: none;
37246
37561
  }
37247
- .cn-register-mapping__register-select[data-v-0abd37fe] {
37562
+ .cn-register-mapping__register-select[data-v-8d3cad98] {
37248
37563
  max-width: none;
37249
37564
  }
37250
37565
  }
@@ -37447,31 +37762,6 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37447
37762
  }
37448
37763
 
37449
37764
 
37450
- .cn-run-node-dialog__form[data-v-2d7cb7f5] {
37451
- display: flex;
37452
- flex-direction: column;
37453
- gap: 12px;
37454
- }
37455
- .cn-run-node-dialog__hint[data-v-2d7cb7f5] {
37456
- color: var(--color-text-maxcontrast);
37457
- }
37458
-
37459
-
37460
- .cn-action-buttons[data-v-49607313] {
37461
- display: inline-flex;
37462
- align-items: center;
37463
- gap: 8px;
37464
- flex-wrap: wrap;
37465
- }
37466
-
37467
- /* In menu mode the only children are dialogs, so the wrapper must not be a
37468
- box: an empty inline-flex child still eats one of the header's flex gaps
37469
- and pushes the Actions menu away from the Edit button beside it. */
37470
- .cn-action-buttons--menu[data-v-49607313] {
37471
- display: contents;
37472
- }
37473
-
37474
-
37475
37765
  .cn-relation-link[data-v-6559b00a] {
37476
37766
  padding: 20px;
37477
37767
  display: flex;
@@ -37905,7 +38195,7 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37905
38195
  }
37906
38196
 
37907
38197
 
37908
- .cn-dashboard-page[data-v-4abdd0ae] {
38198
+ .cn-dashboard-page[data-v-8b7dcccc] {
37909
38199
  padding: 20px;
37910
38200
  max-width: 1800px;
37911
38201
  /* Centre the leftover space once the cap engages, so a wide screen shows
@@ -37919,7 +38209,7 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37919
38209
  overflow-y: auto;
37920
38210
  box-sizing: border-box;
37921
38211
  }
37922
- .cn-dashboard-page__header[data-v-4abdd0ae] {
38212
+ .cn-dashboard-page__header[data-v-8b7dcccc] {
37923
38213
  display: flex;
37924
38214
  justify-content: space-between;
37925
38215
  align-items: flex-start;
@@ -37931,21 +38221,21 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37931
38221
  room. Only the HEADER shifts right — body widgets keep full width. */
37932
38222
  padding-inline-start: 56px;
37933
38223
  }
37934
- .cn-dashboard-page__header-left[data-v-4abdd0ae] {
38224
+ .cn-dashboard-page__header-left[data-v-8b7dcccc] {
37935
38225
  min-width: 0;
37936
38226
  }
37937
- .cn-dashboard-page__title-row[data-v-4abdd0ae] {
38227
+ .cn-dashboard-page__title-row[data-v-8b7dcccc] {
37938
38228
  display: flex;
37939
38229
  align-items: center;
37940
38230
  flex-wrap: wrap;
37941
38231
  gap: 12px;
37942
38232
  }
37943
- .cn-dashboard-page__title[data-v-4abdd0ae] {
38233
+ .cn-dashboard-page__title[data-v-8b7dcccc] {
37944
38234
  margin: 0;
37945
38235
  font-size: 20px;
37946
38236
  font-weight: 700;
37947
38237
  }
37948
- .cn-dashboard-page__description[data-v-4abdd0ae] {
38238
+ .cn-dashboard-page__description[data-v-8b7dcccc] {
37949
38239
  margin: 4px 0 0;
37950
38240
  font-size: 14px;
37951
38241
  color: var(--color-text-maxcontrast);
@@ -37953,19 +38243,19 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37953
38243
 
37954
38244
  /* Board look (screens-dashboard-parity): h1 28/700, a 15px grey subtitle 6px
37955
38245
  under it, and 40px buttons with a 10px gap. */
37956
- .cn-dashboard-page--board .cn-dashboard-page__title[data-v-4abdd0ae] {
38246
+ .cn-dashboard-page--board .cn-dashboard-page__title[data-v-8b7dcccc] {
37957
38247
  font-size: 28px;
37958
38248
  font-weight: 700;
37959
38249
  line-height: 1.2;
37960
38250
  }
37961
- .cn-dashboard-page--board .cn-dashboard-page__description[data-v-4abdd0ae] {
38251
+ .cn-dashboard-page--board .cn-dashboard-page__description[data-v-8b7dcccc] {
37962
38252
  margin: 6px 0 0;
37963
38253
  font-size: 15px;
37964
38254
  }
37965
- .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-4abdd0ae] {
38255
+ .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-8b7dcccc] {
37966
38256
  gap: 10px;
37967
38257
  }
37968
- .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-4abdd0ae] .button-vue {
38258
+ .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-8b7dcccc] .button-vue {
37969
38259
  min-height: var(--cn-board-control-height, 40px);
37970
38260
  height: var(--cn-board-control-height, 40px);
37971
38261
  }
@@ -37973,17 +38263,17 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37973
38263
  /* The switch row under the header (screens-dashboard-greeting-header): the
37974
38264
  view switch left, the `viewLinks` pills right (DqMijnWerk: pills 34px high,
37975
38265
  radius 17, 13px/600, a 14px icon, primary light on primary deep). */
37976
- .cn-dashboard-page__switch-row[data-v-4abdd0ae] {
38266
+ .cn-dashboard-page__switch-row[data-v-8b7dcccc] {
37977
38267
  display: flex;
37978
38268
  flex-wrap: wrap;
37979
38269
  align-items: center;
37980
38270
  gap: 10px;
37981
38271
  margin-bottom: var(--cn-board-section-gap, 20px);
37982
38272
  }
37983
- .cn-dashboard-page__switch-row-spacer[data-v-4abdd0ae] {
38273
+ .cn-dashboard-page__switch-row-spacer[data-v-8b7dcccc] {
37984
38274
  flex: 1 1 auto;
37985
38275
  }
37986
- .cn-dashboard-page__view-link[data-v-4abdd0ae] {
38276
+ .cn-dashboard-page__view-link[data-v-8b7dcccc] {
37987
38277
  display: inline-flex;
37988
38278
  align-items: center;
37989
38279
  gap: 6px;
@@ -37997,36 +38287,36 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
37997
38287
  white-space: nowrap;
37998
38288
  text-decoration: none !important;
37999
38289
  }
38000
- .cn-dashboard-page__view-link[data-v-4abdd0ae]:hover {
38290
+ .cn-dashboard-page__view-link[data-v-8b7dcccc]:hover {
38001
38291
  background: var(--color-primary-element-light-hover, var(--color-primary-element-light));
38002
38292
  }
38003
- .cn-dashboard-page__view-link[data-v-4abdd0ae]:focus-visible {
38293
+ .cn-dashboard-page__view-link[data-v-8b7dcccc]:focus-visible {
38004
38294
  outline: 2px solid var(--color-main-text);
38005
38295
  outline-offset: 2px;
38006
38296
  }
38007
- .cn-dashboard-page__view-link-icon[data-v-4abdd0ae] {
38297
+ .cn-dashboard-page__view-link-icon[data-v-8b7dcccc] {
38008
38298
  display: inline-flex;
38009
38299
  }
38010
38300
 
38011
38301
  /* The period group, in a row of its own between the header and the KPI row. */
38012
- .cn-dashboard-page__date-range--segmented[data-v-4abdd0ae] {
38302
+ .cn-dashboard-page__date-range--segmented[data-v-8b7dcccc] {
38013
38303
  margin-bottom: 16px;
38014
38304
  }
38015
- .cn-dashboard-page__date-segmented[data-v-4abdd0ae] {
38305
+ .cn-dashboard-page__date-segmented[data-v-8b7dcccc] {
38016
38306
  display: flex;
38017
38307
  align-items: center;
38018
38308
  gap: 8px;
38019
38309
  }
38020
38310
 
38021
38311
  /* The KPI row above the grid: tiles are cells of the auto-fit grid. */
38022
- .cn-dashboard-page__kpi-row[data-v-4abdd0ae] {
38312
+ .cn-dashboard-page__kpi-row[data-v-8b7dcccc] {
38023
38313
  margin-bottom: var(--cn-board-section-gap, 16px);
38024
38314
  }
38025
- .cn-dashboard-page__kpi-cell[data-v-4abdd0ae] {
38315
+ .cn-dashboard-page__kpi-cell[data-v-8b7dcccc] {
38026
38316
  display: flex;
38027
38317
  min-width: 0;
38028
38318
  }
38029
- .cn-dashboard-page__kpi-cell[data-v-4abdd0ae] > * {
38319
+ .cn-dashboard-page__kpi-cell[data-v-8b7dcccc] > * {
38030
38320
  flex: 1 1 auto;
38031
38321
  min-width: 0;
38032
38322
  }
@@ -38039,7 +38329,7 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
38039
38329
  scoped chip rules then silently don't match and the chip collapses into
38040
38330
  NcActions' ~30px icon slot (text wraps to "Last / 30 / days"). The
38041
38331
  data-testid is stable across chunks, so those rules match regardless. */
38042
- .cn-dashboard-page__header-actions[data-v-4abdd0ae] {
38332
+ .cn-dashboard-page__header-actions[data-v-8b7dcccc] {
38043
38333
  display: flex;
38044
38334
  align-items: center;
38045
38335
  gap: 8px;
@@ -38055,19 +38345,19 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
38055
38345
 
38056
38346
  /* Date-range header band. Kept compact so it doesn't open a tall gap
38057
38347
  above the grid; the pills variant is a single tidy toggle row. */
38058
- .cn-dashboard-page__date-range[data-v-4abdd0ae] {
38348
+ .cn-dashboard-page__date-range[data-v-8b7dcccc] {
38059
38349
  margin-bottom: 12px;
38060
38350
  }
38061
- .cn-dashboard-page__date-range--pills[data-v-4abdd0ae] {
38351
+ .cn-dashboard-page__date-range--pills[data-v-8b7dcccc] {
38062
38352
  margin-bottom: 8px;
38063
38353
  }
38064
- .cn-dashboard-page__date-pills[data-v-4abdd0ae] {
38354
+ .cn-dashboard-page__date-pills[data-v-8b7dcccc] {
38065
38355
  display: flex;
38066
38356
  align-items: center;
38067
38357
  flex-wrap: wrap;
38068
38358
  gap: 6px;
38069
38359
  }
38070
- .cn-dashboard-page__date-pill[data-v-4abdd0ae] {
38360
+ .cn-dashboard-page__date-pill[data-v-8b7dcccc] {
38071
38361
  display: inline-flex;
38072
38362
  align-items: center;
38073
38363
  padding: 5px 14px;
@@ -38082,77 +38372,77 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
38082
38372
  cursor: pointer;
38083
38373
  transition: background-color 100ms ease, border-color 100ms ease, color 100ms ease;
38084
38374
  }
38085
- .cn-dashboard-page__date-pill[data-v-4abdd0ae]:hover {
38375
+ .cn-dashboard-page__date-pill[data-v-8b7dcccc]:hover {
38086
38376
  background: var(--color-background-hover);
38087
38377
  }
38088
- .cn-dashboard-page__date-pill[data-v-4abdd0ae]:focus-visible {
38378
+ .cn-dashboard-page__date-pill[data-v-8b7dcccc]:focus-visible {
38089
38379
  outline: 2px solid var(--color-primary-element);
38090
38380
  outline-offset: 2px;
38091
38381
  }
38092
- .cn-dashboard-page__date-pill--active[data-v-4abdd0ae] {
38382
+ .cn-dashboard-page__date-pill--active[data-v-8b7dcccc] {
38093
38383
  background: var(--color-primary-element);
38094
38384
  border-color: var(--color-primary-element);
38095
38385
  color: var(--color-primary-element-text);
38096
38386
  }
38097
- .cn-dashboard-page__date-pill--active[data-v-4abdd0ae]:hover {
38387
+ .cn-dashboard-page__date-pill--active[data-v-8b7dcccc]:hover {
38098
38388
  background: var(--color-primary-element-hover, var(--color-primary-element));
38099
38389
  }
38100
38390
 
38101
38391
  /* The custom-range pill is de-emphasised — dashed outline, muted text —
38102
38392
  so it reads as an escape hatch rather than a primary option. */
38103
- .cn-dashboard-page__date-pill--custom[data-v-4abdd0ae] {
38393
+ .cn-dashboard-page__date-pill--custom[data-v-8b7dcccc] {
38104
38394
  border-style: dashed;
38105
38395
  color: var(--color-text-maxcontrast);
38106
38396
  }
38107
- .cn-dashboard-page__date-pill-custom[data-v-4abdd0ae] .action-item__menutoggle {
38397
+ .cn-dashboard-page__date-pill-custom[data-v-8b7dcccc] .action-item__menutoggle {
38108
38398
  min-width: 0;
38109
38399
  min-height: 0;
38110
38400
  padding: 0;
38111
38401
  background: transparent;
38112
38402
  border: none;
38113
38403
  }
38114
- .cn-dashboard-page__date-pill-custom[data-v-4abdd0ae] .button-vue,
38115
- .cn-dashboard-page__date-pill-custom[data-v-4abdd0ae] .button-vue__wrapper,
38116
- .cn-dashboard-page__date-pill-custom[data-v-4abdd0ae] .button-vue__icon {
38404
+ .cn-dashboard-page__date-pill-custom[data-v-8b7dcccc] .button-vue,
38405
+ .cn-dashboard-page__date-pill-custom[data-v-8b7dcccc] .button-vue__wrapper,
38406
+ .cn-dashboard-page__date-pill-custom[data-v-8b7dcccc] .button-vue__icon {
38117
38407
  width: auto !important;
38118
38408
  min-width: 0 !important;
38119
38409
  overflow: visible !important;
38120
38410
  }
38121
- .cn-dashboard-page__empty[data-v-4abdd0ae] {
38411
+ .cn-dashboard-page__empty[data-v-8b7dcccc] {
38122
38412
  padding: 60px 20px;
38123
38413
  }
38124
38414
 
38125
38415
  /* The page's view switch on a page without a header row: at the end of its
38126
38416
  own row, above the grids, where the header would have put it. */
38127
- .cn-dashboard-page__view-switch[data-v-4abdd0ae] {
38417
+ .cn-dashboard-page__view-switch[data-v-8b7dcccc] {
38128
38418
  display: flex;
38129
38419
  justify-content: flex-end;
38130
38420
  margin-bottom: 12px;
38131
38421
  }
38132
38422
 
38133
38423
  /* A view the switch shows with nothing to draw. */
38134
- .cn-page-view-region--empty[data-v-4abdd0ae] {
38424
+ .cn-page-view-region--empty[data-v-8b7dcccc] {
38135
38425
  padding: 40px 20px;
38136
38426
  }
38137
- .cn-dashboard-page__page-filters[data-v-4abdd0ae] {
38427
+ .cn-dashboard-page__page-filters[data-v-8b7dcccc] {
38138
38428
  display: flex;
38139
38429
  flex-wrap: wrap;
38140
38430
  gap: 16px;
38141
38431
  align-items: flex-end;
38142
38432
  margin-bottom: 12px;
38143
38433
  }
38144
- .cn-dashboard-page__page-filter[data-v-4abdd0ae] {
38434
+ .cn-dashboard-page__page-filter[data-v-8b7dcccc] {
38145
38435
  display: flex;
38146
38436
  flex-direction: column;
38147
38437
  gap: 4px;
38148
38438
  min-width: 200px;
38149
38439
  }
38150
- .cn-dashboard-page__page-filter-label[data-v-4abdd0ae] {
38440
+ .cn-dashboard-page__page-filter-label[data-v-8b7dcccc] {
38151
38441
  font-size: 0.85em;
38152
38442
  font-weight: 600;
38153
38443
  color: var(--color-text-maxcontrast);
38154
38444
  }
38155
- .cn-dashboard-page__widget-edit[data-v-4abdd0ae] {
38445
+ .cn-dashboard-page__widget-edit[data-v-8b7dcccc] {
38156
38446
  position: absolute;
38157
38447
  top: 4px;
38158
38448
  inset-inline-end: 4px;
@@ -38171,8 +38461,8 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
38171
38461
  and centre the card. */
38172
38462
  /* `safe` centre so an overflowing tile does not spill out of the top, where
38173
38463
  flex overflow cannot be scrolled back to. Same as detail-page.css. */
38174
- .cn-dashboard-page__card-fit[data-v-4abdd0ae] .cn-widget-wrapper__content,
38175
- .cn-dashboard-page__card-fit.cn-widget-wrapper--flush[data-v-4abdd0ae] .cn-widget-wrapper__content {
38464
+ .cn-dashboard-page__card-fit[data-v-8b7dcccc] .cn-widget-wrapper__content,
38465
+ .cn-dashboard-page__card-fit.cn-widget-wrapper--flush[data-v-8b7dcccc] .cn-widget-wrapper__content {
38176
38466
  overflow: hidden;
38177
38467
  display: flex;
38178
38468
  flex-direction: column;
@@ -38188,7 +38478,7 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
38188
38478
  shows up as a scrollbar the user has to drag to see the whole graph. Same
38189
38479
  shape as the card-fit rule above, minus the padding: chart tiles render
38190
38480
  `flush`, and apexcharts already draws its own margins. */
38191
- .cn-dashboard-page__chart-fit[data-v-4abdd0ae] .cn-widget-wrapper__content {
38481
+ .cn-dashboard-page__chart-fit[data-v-8b7dcccc] .cn-widget-wrapper__content {
38192
38482
  overflow: hidden;
38193
38483
  display: flex;
38194
38484
  flex-direction: column;
@@ -38198,13 +38488,13 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
38198
38488
  /* Card content (stat / gauge / delta) must fit the tile width: let the
38199
38489
  widget shrink and its value/label truncate instead of pushing past the
38200
38490
  tile edge (the horizontal clip on long currency values). */
38201
- .cn-dashboard-page__card-fit[data-v-4abdd0ae] .cn-stat-widget,
38202
- .cn-dashboard-page__card-fit[data-v-4abdd0ae] .cn-gauge-widget,
38203
- .cn-dashboard-page__card-fit[data-v-4abdd0ae] .cn-delta-widget {
38491
+ .cn-dashboard-page__card-fit[data-v-8b7dcccc] .cn-stat-widget,
38492
+ .cn-dashboard-page__card-fit[data-v-8b7dcccc] .cn-gauge-widget,
38493
+ .cn-dashboard-page__card-fit[data-v-8b7dcccc] .cn-delta-widget {
38204
38494
  min-width: 0;
38205
38495
  max-width: 100%;
38206
38496
  }
38207
- .cn-dashboard-page__unknown[data-v-4abdd0ae] {
38497
+ .cn-dashboard-page__unknown[data-v-8b7dcccc] {
38208
38498
  display: flex;
38209
38499
  align-items: center;
38210
38500
  justify-content: center;
@@ -38215,29 +38505,29 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
38215
38505
  }
38216
38506
 
38217
38507
  /* widget-ref content items */
38218
- .cn-dashboard-page__content[data-v-4abdd0ae] {
38508
+ .cn-dashboard-page__content[data-v-8b7dcccc] {
38219
38509
  display: flex;
38220
38510
  flex-direction: column;
38221
38511
  gap: 16px;
38222
38512
  }
38223
- .cn-dashboard-page__content-item[data-v-4abdd0ae] {
38513
+ .cn-dashboard-page__content-item[data-v-8b7dcccc] {
38224
38514
  width: 100%;
38225
38515
  }
38226
38516
  /* On a phone (screens-dashboard-phone) the touch targets of a board dashboard
38227
38517
  are 44px: the widget Actions menu and the KPI tiles. */
38228
38518
  @media (max-width: 640px) {
38229
- .cn-dashboard-page--board[data-v-4abdd0ae] .cn-widget-wrapper__actions .action-item__menutoggle,
38230
- .cn-dashboard-page--board[data-v-4abdd0ae] .cn-widget-wrapper__actions .button-vue {
38519
+ .cn-dashboard-page--board[data-v-8b7dcccc] .cn-widget-wrapper__actions .action-item__menutoggle,
38520
+ .cn-dashboard-page--board[data-v-8b7dcccc] .cn-widget-wrapper__actions .button-vue {
38231
38521
  min-height: 44px;
38232
38522
  }
38233
- .cn-dashboard-page--board .cn-dashboard-page__kpi-cell[data-v-4abdd0ae] {
38523
+ .cn-dashboard-page--board .cn-dashboard-page__kpi-cell[data-v-8b7dcccc] {
38234
38524
  min-height: 44px;
38235
38525
  }
38236
38526
  }
38237
38527
 
38238
38528
  /* What a registry widget reports for its card header (`header` event): the
38239
38529
  note beside the link ("3 in total") and one action, as on a detail page. */
38240
- .cn-dashboard-page__widget-count[data-v-4abdd0ae] {
38530
+ .cn-dashboard-page__widget-count[data-v-8b7dcccc] {
38241
38531
  align-self: center;
38242
38532
  padding: 1px 8px;
38243
38533
  border-radius: 10px;
@@ -38246,13 +38536,13 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
38246
38536
  font-size: 13px;
38247
38537
  font-weight: 600;
38248
38538
  }
38249
- .cn-dashboard-page__widget-note[data-v-4abdd0ae] {
38539
+ .cn-dashboard-page__widget-note[data-v-8b7dcccc] {
38250
38540
  align-self: center;
38251
38541
  color: var(--color-text-maxcontrast);
38252
38542
  font-size: 14px;
38253
38543
  white-space: nowrap;
38254
38544
  }
38255
- .cn-dashboard-page__widget-action[data-v-4abdd0ae] {
38545
+ .cn-dashboard-page__widget-action[data-v-8b7dcccc] {
38256
38546
  display: inline-flex;
38257
38547
  align-items: center;
38258
38548
  align-self: center;
@@ -38268,7 +38558,7 @@ button.cn-object-calendar__overflow[data-v-2735e5ef] {
38268
38558
  white-space: nowrap;
38269
38559
  cursor: pointer;
38270
38560
  }
38271
- .cn-dashboard-page__widget-action[data-v-4abdd0ae]:focus-visible {
38561
+ .cn-dashboard-page__widget-action[data-v-8b7dcccc]:focus-visible {
38272
38562
  outline: 2px solid var(--color-primary-element);
38273
38563
  outline-offset: 2px;
38274
38564
  }
@@ -40320,21 +40610,21 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
40320
40610
 
40321
40611
 
40322
40612
  /* The section wrapper draws no box; the board look makes it the card grid. */
40323
- .cn-settings-page__sections[data-v-1c7a70aa] {
40613
+ .cn-settings-page__sections[data-v-04e49f77] {
40324
40614
  display: contents;
40325
40615
  }
40326
- .cn-settings-page__header-buttons[data-v-1c7a70aa] {
40616
+ .cn-settings-page__header-buttons[data-v-04e49f77] {
40327
40617
  display: flex;
40328
40618
  align-items: center;
40329
40619
  gap: 10px;
40330
40620
  margin-inline-start: auto;
40331
40621
  }
40332
- .cn-settings-page[data-v-1c7a70aa] {
40622
+ .cn-settings-page[data-v-04e49f77] {
40333
40623
  display: flex;
40334
40624
  flex-direction: column;
40335
40625
  gap: 16px;
40336
40626
  }
40337
- .cn-settings-page__actions[data-v-1c7a70aa] {
40627
+ .cn-settings-page__actions[data-v-04e49f77] {
40338
40628
  display: flex;
40339
40629
  justify-content: flex-end;
40340
40630
  gap: 8px;
@@ -40345,7 +40635,7 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
40345
40635
  * orchestration REQ-MSO-5). Uses Nextcloud CSS variables only — no
40346
40636
  * hex literals, no rgba overrides on the elements themselves.
40347
40637
  */
40348
- .cn-settings-page__tabs[data-v-1c7a70aa] {
40638
+ .cn-settings-page__tabs[data-v-04e49f77] {
40349
40639
  display: flex;
40350
40640
  flex-wrap: wrap;
40351
40641
  gap: 4px;
@@ -40353,7 +40643,7 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
40353
40643
  padding-bottom: 0;
40354
40644
  margin-bottom: 8px;
40355
40645
  }
40356
- .cn-settings-page__tab[data-v-1c7a70aa] {
40646
+ .cn-settings-page__tab[data-v-04e49f77] {
40357
40647
  background: transparent;
40358
40648
  border: 0;
40359
40649
  border-bottom: 3px solid transparent;
@@ -40365,52 +40655,52 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
40365
40655
  border-radius: var(--border-radius-large) var(--border-radius-large) 0 0;
40366
40656
  transition: background-color 0.1s ease-in-out, color 0.1s ease-in-out, border-color 0.1s ease-in-out;
40367
40657
  }
40368
- .cn-settings-page__tab[data-v-1c7a70aa]:hover,
40369
- .cn-settings-page__tab[data-v-1c7a70aa]:focus-visible {
40658
+ .cn-settings-page__tab[data-v-04e49f77]:hover,
40659
+ .cn-settings-page__tab[data-v-04e49f77]:focus-visible {
40370
40660
  background-color: var(--color-background-hover);
40371
40661
  color: var(--color-main-text);
40372
40662
  outline: none;
40373
40663
  }
40374
- .cn-settings-page__tab--active[data-v-1c7a70aa] {
40664
+ .cn-settings-page__tab--active[data-v-04e49f77] {
40375
40665
  color: var(--color-primary-element);
40376
40666
  border-bottom-color: var(--color-primary-element);
40377
40667
  font-weight: bold;
40378
40668
  }
40379
40669
  @media (max-width: 768px) {
40380
- .cn-settings-page__tabs[data-v-1c7a70aa] {
40670
+ .cn-settings-page__tabs[data-v-04e49f77] {
40381
40671
  flex-direction: column;
40382
40672
  gap: 0;
40383
40673
  border-bottom: 0;
40384
40674
  }
40385
- .cn-settings-page__tab[data-v-1c7a70aa] {
40675
+ .cn-settings-page__tab[data-v-04e49f77] {
40386
40676
  border-bottom: 1px solid var(--color-border);
40387
40677
  border-radius: 0;
40388
40678
  text-align: left;
40389
40679
  }
40390
- .cn-settings-page__tab--active[data-v-1c7a70aa] {
40680
+ .cn-settings-page__tab--active[data-v-04e49f77] {
40391
40681
  border-bottom-width: 1px;
40392
40682
  background-color: var(--color-background-hover);
40393
40683
  }
40394
40684
  }
40395
- .cn-settings-page__fields[data-v-1c7a70aa] {
40685
+ .cn-settings-page__fields[data-v-04e49f77] {
40396
40686
  display: flex;
40397
40687
  flex-direction: column;
40398
40688
  gap: 12px;
40399
40689
  }
40400
- .cn-settings-page__field[data-v-1c7a70aa] {
40690
+ .cn-settings-page__field[data-v-04e49f77] {
40401
40691
  display: flex;
40402
40692
  flex-direction: column;
40403
40693
  gap: 4px;
40404
40694
  }
40405
- .cn-settings-page__field-help[data-v-1c7a70aa] {
40695
+ .cn-settings-page__field-help[data-v-04e49f77] {
40406
40696
  color: var(--color-text-maxcontrast);
40407
40697
  }
40408
- .cn-settings-page__save-bar[data-v-1c7a70aa] {
40698
+ .cn-settings-page__save-bar[data-v-04e49f77] {
40409
40699
  display: flex;
40410
40700
  gap: 8px;
40411
40701
  margin-top: 16px;
40412
40702
  }
40413
- .cn-settings-page__error[data-v-1c7a70aa] {
40703
+ .cn-settings-page__error[data-v-04e49f77] {
40414
40704
  color: var(--color-error);
40415
40705
  background: var(--color-error-light, var(--color-background-hover));
40416
40706
  padding: 8px 12px;