@conduction/nextcloud-vue 2.93.0 → 2.94.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue2.js +1 -1
  2. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue2.js.map +1 -1
  3. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue3.js +2 -1
  4. package/dist/esm/components/CnActionsMenu/CnActionsMenu.vue3.js.map +1 -1
  5. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue.js +1 -1
  6. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js +28 -8
  7. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue2.js.map +1 -1
  8. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js +37 -2
  9. package/dist/esm/components/CnAdminSettingsShell/CnAdminSettingsShell.vue3.js.map +1 -1
  10. package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue.js +1 -1
  11. package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue2.js +139 -3
  12. package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue2.js.map +1 -1
  13. package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue3.js +60 -12
  14. package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue3.js.map +1 -1
  15. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue.js +1 -1
  16. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +91 -36
  17. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
  18. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +115 -72
  19. package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
  20. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js +32 -3
  21. package/dist/esm/components/CnDataTable/CnDataTable.vue2.js.map +1 -1
  22. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js +7 -7
  23. package/dist/esm/components/CnDataTable/CnDataTable.vue3.js.map +1 -1
  24. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +141 -7
  25. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  26. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +5 -2
  27. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  28. package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue.js +8 -0
  29. package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue.js.map +1 -0
  30. package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue2.js +114 -0
  31. package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue2.js.map +1 -0
  32. package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue3.js +45 -0
  33. package/dist/esm/components/CnPageHeader/CnHeaderTrail.vue3.js.map +1 -0
  34. package/dist/esm/components/CnPageHeader/CnPageHeader.vue2.js +38 -2
  35. package/dist/esm/components/CnPageHeader/CnPageHeader.vue2.js.map +1 -1
  36. package/dist/esm/components/CnPageHeader/CnPageHeader.vue3.js +12 -2
  37. package/dist/esm/components/CnPageHeader/CnPageHeader.vue3.js.map +1 -1
  38. package/dist/esm/components/CnPagination/CnPagination.vue2.js.map +1 -1
  39. package/dist/esm/components/CnPagination/CnPagination.vue3.js +56 -51
  40. package/dist/esm/components/CnPagination/CnPagination.vue3.js.map +1 -1
  41. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue.js +1 -1
  42. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js +3 -3
  43. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue2.js.map +1 -1
  44. package/dist/esm/components/CnRecordListWidget/CnRecordListWidget.vue3.js.map +1 -1
  45. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue.js +1 -1
  46. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue2.js +24 -0
  47. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue2.js.map +1 -1
  48. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue3.js +3 -1
  49. package/dist/esm/components/CnSettingsPage/CnSettingsPage.vue3.js.map +1 -1
  50. package/dist/esm/components/CnTabs/CnTabs.vue.js +1 -1
  51. package/dist/esm/components/CnTabs/CnTabs.vue2.js +39 -2
  52. package/dist/esm/components/CnTabs/CnTabs.vue2.js.map +1 -1
  53. package/dist/esm/components/CnTabs/CnTabs.vue3.js.map +1 -1
  54. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue.js +1 -1
  55. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js +85 -8
  56. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
  57. package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js +37 -9
  58. package/dist/esm/components/CnTabsWidget/CnTabsWidget.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.map +1 -1
  61. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue3.js +4 -3
  62. package/dist/esm/components/CnVersionInfoCard/CnVersionInfoCard.vue3.js.map +1 -1
  63. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue.js +1 -1
  64. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js +20 -0
  65. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js.map +1 -1
  66. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js +31 -20
  67. package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js.map +1 -1
  68. package/dist/esm/composables/indexSources.js +9 -0
  69. package/dist/esm/composables/indexSources.js.map +1 -1
  70. package/dist/esm/library-style.js +1 -1
  71. package/dist/esm/nextcloud-vue.css +402 -262
  72. package/dist/esm/utils/dueText.js +49 -8
  73. package/dist/esm/utils/dueText.js.map +1 -1
  74. package/dist/esm/utils/validateManifestV2.compiled.js +3 -3
  75. package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
  76. package/dist/nextcloud-vue.cjs.js +5779 -4827
  77. package/dist/nextcloud-vue.cjs.js.map +2 -2
  78. package/dist/nextcloud-vue.css +402 -262
  79. package/package.json +1 -1
  80. package/src/components/CnActionsMenu/CnActionsMenu.vue +3 -1
  81. package/src/components/CnAdminSettingsShell/CnAdminSettingsShell.vue +39 -1
  82. package/src/components/CnCountdownWidget/CnCountdownWidget.vue +222 -6
  83. package/src/components/CnDashboardPage/CnDashboardPage.vue +96 -2
  84. package/src/components/CnDataTable/CnDataTable.md +1 -0
  85. package/src/components/CnDataTable/CnDataTable.vue +39 -10
  86. package/src/components/CnIndexPage/CnIndexPage.vue +144 -7
  87. package/src/components/CnPageHeader/CnHeaderTrail.vue +140 -0
  88. package/src/components/CnPageHeader/CnPageHeader.md +11 -0
  89. package/src/components/CnPageHeader/CnPageHeader.vue +42 -0
  90. package/src/components/CnPagination/CnPagination.vue +10 -2
  91. package/src/components/CnRecordListWidget/CnRecordListWidget.vue +3 -3
  92. package/src/components/CnSettingsPage/CnSettingsPage.vue +26 -0
  93. package/src/components/CnTabs/CnTabs.vue +39 -2
  94. package/src/components/CnTabsWidget/CnTabsWidget.vue +106 -13
  95. package/src/components/CnVersionInfoCard/CnVersionInfoCard.vue +4 -3
  96. package/src/components/CnWidgetWrapper/CnWidgetWrapper.md +8 -0
  97. package/src/components/CnWidgetWrapper/CnWidgetWrapper.vue +31 -2
  98. package/src/composables/indexSources.js +9 -0
  99. package/src/css/dialog.css +14 -0
  100. package/src/css/look-board-index.css +27 -1
  101. package/src/css/look-board.css +27 -0
  102. package/src/css/page-header.css +16 -0
  103. package/src/schemas/app-manifest-v2.schema.json +22 -15
  104. package/src/utils/dueText.js +49 -8
  105. package/src/utils/validateManifestV2.compiled.js +3 -3
@@ -691,6 +691,33 @@
691
691
  opacity: 1 !important;
692
692
  }
693
693
 
694
+ /* The support card at the end of an admin page (`supportPosition: "end"`,
695
+ board PqBeheer): one row, the title then the lines, wrapping in a narrow
696
+ window, with less padding than a settings card.
697
+ @spec openspec/changes/admin-shell-support-end/specs/settings-board-look/spec.md#requirement-support-can-be-its-own-card-at-the-end */
698
+ .cn-look-board .settings-section.cn-admin-settings-shell__support:not(.cn-look-nextcloud *) {
699
+ flex-direction: row !important;
700
+ flex-wrap: wrap;
701
+ align-items: center;
702
+ gap: 10px 24px;
703
+ padding: 16px 24px;
704
+ }
705
+
706
+ .cn-look-board .cn-admin-settings-shell__support:not(.cn-look-nextcloud *) .settings-section__name {
707
+ font-size: 16px;
708
+ }
709
+
710
+ .cn-look-board .cn-admin-settings-shell__support:not(.cn-look-nextcloud *) .cn-settings-section__content {
711
+ display: flex;
712
+ flex-wrap: wrap;
713
+ gap: 10px 24px;
714
+ }
715
+
716
+ .cn-look-board .cn-admin-settings-shell__support:not(.cn-look-nextcloud *) .cn-admin-settings-shell__support-line {
717
+ margin: 0;
718
+ font-size: 14px;
719
+ }
720
+
694
721
  /* The section footer is the save row: the hairline replaces its own rule. */
695
722
  .cn-look-board .settings-section .cn-settings-section__footer {
696
723
  margin: 0;
@@ -1203,6 +1230,20 @@
1203
1230
  min-height: 44px;
1204
1231
  }
1205
1232
  }
1233
+
1234
+ /* Above a phone the boards top-align a dialog (DqNieuweZaak, DqUwWachtrij,
1235
+ DqVolgendeStap: the top edge sits about 90px down at 1440 wide) instead of
1236
+ centring it. `--cn-dialog-top` moves it. */
1237
+ @media (min-width: 601px) {
1238
+ .modal-mask.cn-dialog-board .modal-wrapper {
1239
+ align-items: flex-start;
1240
+ }
1241
+
1242
+ .modal-mask.cn-dialog-board .modal-wrapper .modal-container {
1243
+ margin-top: var(--cn-dialog-top, 88px);
1244
+ max-height: calc(100% - var(--cn-dialog-top, 88px) - 24px);
1245
+ }
1246
+ }
1206
1247
  /*
1207
1248
  * The board form field (screens-form-parity, canon sections 5 and 6).
1208
1249
  *
@@ -2255,10 +2296,11 @@
2255
2296
  border-radius: 0;
2256
2297
  }
2257
2298
 
2299
+ /* The header row is near-white on the boards (#fafbfc), not the hover grey. */
2258
2300
  .cn-look-board .cn-table-container--board .cn-data-table th {
2259
2301
  padding: 12px 16px;
2260
2302
  border-bottom: 0;
2261
- background: var(--color-background-hover);
2303
+ background: var(--cn-board-table-head-bg, color-mix(in srgb, var(--color-background-hover) 40%, var(--color-main-background)));
2262
2304
  color: var(--color-text-maxcontrast);
2263
2305
  font-weight: 600;
2264
2306
  }
@@ -2316,6 +2358,15 @@
2316
2358
  max-width: calc(100% - 26px);
2317
2359
  }
2318
2360
 
2361
+ /* The board's funnel: a 22px button 4px after the sort chevron. */
2362
+ .cn-look-board .cn-table-container--board .cn-data-table th .cn-table-header__filter {
2363
+ width: 22px;
2364
+ min-width: 22px;
2365
+ height: 22px;
2366
+ min-height: 22px;
2367
+ margin-inline-start: 4px;
2368
+ }
2369
+
2319
2370
  /* The selection column: 18px checkboxes, 28px of content after 16px of padding.
2320
2371
  The box model is set with `!important` and the widths include the padding:
2321
2372
  Nextcloud's server.css sets `box-sizing: border-box` on everything under
@@ -2521,6 +2572,14 @@
2521
2572
  padding: 0 12px;
2522
2573
  }
2523
2574
 
2575
+ /* The inert Next of a single page: a faint outline, muted text. */
2576
+ .cn-look-board .cn-pagination--board .cn-pagination__board-link--disabled {
2577
+ display: inline-flex;
2578
+ align-items: center;
2579
+ color: var(--color-text-maxcontrast);
2580
+ cursor: default;
2581
+ }
2582
+
2524
2583
  .cn-look-board .cn-pagination--board .cn-pagination__board-link--current {
2525
2584
  border-color: var(--color-primary-element);
2526
2585
  background: var(--color-primary-element);
@@ -2802,6 +2861,14 @@
2802
2861
  padding: 0 12px;
2803
2862
  border-radius: 8px;
2804
2863
  }
2864
+
2865
+ /* The sidebar's own open toggle (NcAppSidebar's `.app-sidebar__toggle`, drawn
2866
+ when the sidebar is closed) sits over the content's top-right corner, which
2867
+ on an index page is the primary header button: a stray dark square on
2868
+ "New contact". The board draws none; the Filter button opens the sidebar. */
2869
+ .cn-look-board:has(.cn-index-page) > .app-sidebar__toggle {
2870
+ display: none;
2871
+ }
2805
2872
  /* ========================================
2806
2873
  @conduction/nextcloud-vue — Table Styles
2807
2874
  ======================================== */
@@ -5017,6 +5084,22 @@ a.cn-kpi-card--board * {
5017
5084
  white-space: nowrap;
5018
5085
  border: 0;
5019
5086
  }
5087
+
5088
+ /* The breadcrumb and meta line under the title (CnHeaderTrail). In the board
5089
+ look it takes the detail header row's styles; here it only lays the crumbs,
5090
+ the dot and the note out on one line. */
5091
+ .cn-header-trail {
5092
+ align-items: center;
5093
+ color: var(--color-text-maxcontrast);
5094
+ display: flex;
5095
+ flex-wrap: wrap;
5096
+ gap: var(--default-grid-baseline);
5097
+ margin-bottom: var(--default-grid-baseline);
5098
+ }
5099
+
5100
+ .cn-header-trail .cn-detail-page__breadcrumbs {
5101
+ margin-bottom: 0;
5102
+ }
5020
5103
  /* CnActionsBar — Reusable actions toolbar styles */
5021
5104
 
5022
5105
  .cn-actions-bar {
@@ -9495,10 +9578,54 @@ a.cn-kpi-card--board * {
9495
9578
  }
9496
9579
 
9497
9580
 
9498
- .cn-countdown-widget__value[data-v-d1b330c0] {
9581
+ .cn-countdown-widget__value[data-v-22ccd275] {
9499
9582
  white-space: nowrap;
9500
9583
  }
9501
- .cn-countdown-widget__sub[data-v-d1b330c0] {
9584
+ .cn-countdown-widget__progress[data-v-22ccd275] {
9585
+ background: var(--color-border);
9586
+ border-radius: 3px;
9587
+ display: block;
9588
+ height: 6px;
9589
+ margin-block-start: 10px;
9590
+ overflow: hidden;
9591
+ }
9592
+ .cn-countdown-widget__progress-fill[data-v-22ccd275] {
9593
+ background: var(--color-primary-element);
9594
+ display: block;
9595
+ height: 100%;
9596
+ }
9597
+ .cn-countdown-widget__action[data-v-22ccd275] {
9598
+ align-self: flex-start;
9599
+ background: var(--color-background-dark);
9600
+ border: 0;
9601
+ border-radius: var(--border-radius-pill, 17px);
9602
+ color: var(--color-main-text);
9603
+ font-weight: 600;
9604
+ margin-block-start: 10px;
9605
+ min-height: 34px;
9606
+ padding: 0 12px;
9607
+ }
9608
+ .cn-countdown-widget__action--primary[data-v-22ccd275] {
9609
+ background: var(--color-primary-element-light);
9610
+ color: var(--color-primary-element-light-text);
9611
+ }
9612
+ .cn-countdown-widget__facts[data-v-22ccd275] {
9613
+ display: grid;
9614
+ gap: 8px 16px;
9615
+ grid-template-columns: max-content 1fr;
9616
+ margin: 10px 0 0;
9617
+ }
9618
+ .cn-countdown-widget__facts dt[data-v-22ccd275] {
9619
+ color: var(--color-text-maxcontrast);
9620
+ }
9621
+ .cn-countdown-widget__facts dd[data-v-22ccd275] {
9622
+ margin: 0;
9623
+ }
9624
+ .cn-countdown-widget__action[data-v-22ccd275]:hover,
9625
+ .cn-countdown-widget__action[data-v-22ccd275]:focus-visible {
9626
+ background: var(--color-background-hover);
9627
+ }
9628
+ .cn-countdown-widget__sub[data-v-22ccd275] {
9502
9629
  color: var(--color-text-maxcontrast);
9503
9630
  font-size: 0.85em;
9504
9631
  }
@@ -21164,7 +21291,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21164
21291
  }
21165
21292
 
21166
21293
 
21167
- .cn-widget-wrapper[data-v-8ce3140c] {
21294
+ .cn-widget-wrapper[data-v-cc60e4c8] {
21168
21295
  position: relative;
21169
21296
  height: 100%;
21170
21297
  display: flex;
@@ -21178,13 +21305,13 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21178
21305
  }
21179
21306
 
21180
21307
  /* Headerless date chip — floated over the top-right of a flush card. */
21181
- .cn-widget-wrapper__floating-meta[data-v-8ce3140c] {
21308
+ .cn-widget-wrapper__floating-meta[data-v-cc60e4c8] {
21182
21309
  position: absolute;
21183
21310
  top: 8px;
21184
21311
  inset-inline-end: 10px;
21185
21312
  z-index: 2;
21186
21313
  }
21187
- .cn-widget-wrapper__content[data-v-8ce3140c] {
21314
+ .cn-widget-wrapper__content[data-v-cc60e4c8] {
21188
21315
  flex: 1;
21189
21316
  overflow: auto;
21190
21317
  min-height: 0;
@@ -21200,24 +21327,24 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21200
21327
  So it is structural instead. `:has()` keys on the table component's own root
21201
21328
  class, which means a table is flush by construction and no caller can
21202
21329
  reintroduce the gap by forgetting a prop. */
21203
- .cn-widget-wrapper__content[data-v-8ce3140c]:has(> .cn-table-container),
21204
- .cn-widget-wrapper__content[data-v-8ce3140c]:has(> .cn-widget-object-table) {
21330
+ .cn-widget-wrapper__content[data-v-cc60e4c8]:has(> .cn-table-container),
21331
+ .cn-widget-wrapper__content[data-v-cc60e4c8]:has(> .cn-widget-object-table) {
21205
21332
  padding: 0;
21206
21333
  }
21207
21334
 
21208
21335
  /* Keyboard focus ring for the now-focusable scrollable content region. */
21209
- .cn-widget-wrapper__content[data-v-8ce3140c]:focus-visible {
21336
+ .cn-widget-wrapper__content[data-v-cc60e4c8]:focus-visible {
21210
21337
  outline: 2px solid var(--color-primary-element);
21211
21338
  outline-offset: -2px;
21212
21339
  }
21213
- .cn-widget-wrapper--borderless[data-v-8ce3140c] {
21340
+ .cn-widget-wrapper--borderless[data-v-cc60e4c8] {
21214
21341
  border: none;
21215
21342
  background: transparent;
21216
21343
  }
21217
- .cn-widget-wrapper--borderless .cn-widget-wrapper__content[data-v-8ce3140c] {
21344
+ .cn-widget-wrapper--borderless .cn-widget-wrapper__content[data-v-cc60e4c8] {
21218
21345
  padding: 0;
21219
21346
  }
21220
- .cn-widget-wrapper--flush .cn-widget-wrapper__content[data-v-8ce3140c] {
21347
+ .cn-widget-wrapper--flush .cn-widget-wrapper__content[data-v-cc60e4c8] {
21221
21348
  padding: 0;
21222
21349
  }
21223
21350
 
@@ -21225,8 +21352,8 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21225
21352
  above. A dashboard renders every widget `flush`, and without this their
21226
21353
  fields touch the card's edges. Borderless and chromeless cards, and the
21227
21354
  Nextcloud dashboard variant, keep their own padding. */
21228
- .cn-widget-wrapper--flush:not(.cn-widget-wrapper--borderless, .cn-widget-wrapper--nc-dashboard) > .cn-widget-wrapper__content[data-v-8ce3140c]:has(> .cn-form-widget),
21229
- .cn-widget-wrapper--flush:not(.cn-widget-wrapper--borderless, .cn-widget-wrapper--nc-dashboard) > .cn-widget-wrapper__content[data-v-8ce3140c]:has(> .cn-kb-search-widget) {
21355
+ .cn-widget-wrapper--flush:not(.cn-widget-wrapper--borderless, .cn-widget-wrapper--nc-dashboard) > .cn-widget-wrapper__content[data-v-cc60e4c8]:has(> .cn-form-widget),
21356
+ .cn-widget-wrapper--flush:not(.cn-widget-wrapper--borderless, .cn-widget-wrapper--nc-dashboard) > .cn-widget-wrapper__content[data-v-cc60e4c8]:has(> .cn-kb-search-widget) {
21230
21357
  padding: 16px;
21231
21358
  }
21232
21359
 
@@ -21237,7 +21364,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21237
21364
  a square panel, which is the last visible piece of a card that is supposed
21238
21365
  to be absent. `CnDetailCard.cn-detail-card--chromeless` zeroes the same
21239
21366
  thing for the same reason. */
21240
- .cn-widget-wrapper--chromeless[data-v-8ce3140c] {
21367
+ .cn-widget-wrapper--chromeless[data-v-cc60e4c8] {
21241
21368
  border-radius: 0;
21242
21369
  }
21243
21370
 
@@ -21249,7 +21376,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21249
21376
  * so users can override any token. Combined selector raises specificity above
21250
21377
  * the base `.cn-widget-wrapper` rules it supersedes.
21251
21378
  */
21252
- .cn-widget-wrapper__header[data-v-8ce3140c] {
21379
+ .cn-widget-wrapper__header[data-v-cc60e4c8] {
21253
21380
  display: flex;
21254
21381
  align-items: center;
21255
21382
  justify-content: space-between;
@@ -21265,7 +21392,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21265
21392
  /* Actions with no title beside them. `header-left` is not rendered at all in
21266
21393
  this mode, and the header is `space-between`, so a single child would sit
21267
21394
  flush LEFT where every other surface puts its actions on the right. */
21268
- .cn-widget-wrapper__header--actions-only[data-v-8ce3140c] {
21395
+ .cn-widget-wrapper__header--actions-only[data-v-cc60e4c8] {
21269
21396
  justify-content: flex-end;
21270
21397
  }
21271
21398
 
@@ -21281,11 +21408,11 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21281
21408
  no-descending-specificity asks for. The cascade did not need it (this
21282
21409
  selector is more specific either way), a reader does: an override written
21283
21410
  above the thing it overrides has to be read twice. */
21284
- .cn-widget-wrapper--chromeless .cn-widget-wrapper__header[data-v-8ce3140c] {
21411
+ .cn-widget-wrapper--chromeless .cn-widget-wrapper__header[data-v-cc60e4c8] {
21285
21412
  border-bottom: none;
21286
21413
  padding-inline: 0;
21287
21414
  }
21288
- .cn-widget-wrapper__header-left[data-v-8ce3140c] {
21415
+ .cn-widget-wrapper__header-left[data-v-cc60e4c8] {
21289
21416
  display: flex;
21290
21417
  align-items: center;
21291
21418
  gap: 8px;
@@ -21294,19 +21421,24 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21294
21421
  of centering between icon and actions (header is space-between). */
21295
21422
  flex: 1 1 auto;
21296
21423
  }
21297
- .cn-widget-wrapper__icon[data-v-8ce3140c] {
21424
+ .cn-widget-wrapper__icon[data-v-cc60e4c8] {
21298
21425
  width: 24px;
21299
21426
  height: 24px;
21300
21427
  flex-shrink: 0;
21301
21428
  color: var(--cn-widget-icon-color, var(--color-primary-element));
21302
21429
  }
21303
- .cn-widget-wrapper__title-stack[data-v-8ce3140c] {
21430
+ .cn-widget-wrapper__title-stack[data-v-cc60e4c8] {
21304
21431
  display: flex;
21305
21432
  flex-direction: column;
21306
21433
  gap: 2px;
21307
21434
  min-width: 0;
21308
21435
  }
21309
- .cn-widget-wrapper__eyebrow[data-v-8ce3140c] {
21436
+ .cn-widget-wrapper__subtitle[data-v-cc60e4c8] {
21437
+ font-size: 13px;
21438
+ line-height: 1.3;
21439
+ color: var(--color-text-maxcontrast);
21440
+ }
21441
+ .cn-widget-wrapper__eyebrow[data-v-cc60e4c8] {
21310
21442
  font-size: 13px;
21311
21443
  line-height: 1.3;
21312
21444
  color: var(--color-text-maxcontrast);
@@ -21314,7 +21446,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21314
21446
  overflow: hidden;
21315
21447
  text-overflow: ellipsis;
21316
21448
  }
21317
- .cn-widget-wrapper__title[data-v-8ce3140c] {
21449
+ .cn-widget-wrapper__title[data-v-cc60e4c8] {
21318
21450
  font-weight: 600;
21319
21451
  font-size: 14px;
21320
21452
  margin: 0;
@@ -21322,34 +21454,34 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21322
21454
  overflow: hidden;
21323
21455
  text-overflow: ellipsis;
21324
21456
  }
21325
- .cn-widget-wrapper.cn-widget-wrapper--nc-dashboard[data-v-8ce3140c] {
21457
+ .cn-widget-wrapper.cn-widget-wrapper--nc-dashboard[data-v-cc60e4c8] {
21326
21458
  background: var(--color-main-background-blur, var(--color-main-background));
21327
21459
  -webkit-backdrop-filter: var(--filter-background-blur, none);
21328
21460
  backdrop-filter: var(--filter-background-blur, none);
21329
21461
  border: none;
21330
21462
  border-radius: var(--border-radius-container-large, 16px);
21331
21463
  }
21332
- .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__header[data-v-8ce3140c] {
21464
+ .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__header[data-v-cc60e4c8] {
21333
21465
  padding: 16px;
21334
21466
  border-bottom: none;
21335
21467
  }
21336
- .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__header-left[data-v-8ce3140c] {
21468
+ .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__header-left[data-v-cc60e4c8] {
21337
21469
  gap: 16px;
21338
21470
  }
21339
- .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__icon[data-v-8ce3140c] {
21471
+ .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__icon[data-v-cc60e4c8] {
21340
21472
  width: 32px;
21341
21473
  height: 32px;
21342
21474
  background-size: 32px;
21343
21475
  }
21344
- .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__title[data-v-8ce3140c] {
21476
+ .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__title[data-v-cc60e4c8] {
21345
21477
  font-size: 20px;
21346
21478
  font-weight: 700;
21347
21479
  line-height: 24px;
21348
21480
  }
21349
- .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__content[data-v-8ce3140c] {
21481
+ .cn-widget-wrapper--nc-dashboard .cn-widget-wrapper__content[data-v-cc60e4c8] {
21350
21482
  padding: 0 16px 16px;
21351
21483
  }
21352
- .cn-widget-wrapper__title-meta[data-v-8ce3140c] {
21484
+ .cn-widget-wrapper__title-meta[data-v-cc60e4c8] {
21353
21485
  display: flex;
21354
21486
  align-items: center;
21355
21487
  gap: 4px;
@@ -21358,7 +21490,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21358
21490
  white-space: nowrap;
21359
21491
  flex-shrink: 0;
21360
21492
  }
21361
- .cn-widget-wrapper__actions[data-v-8ce3140c] {
21493
+ .cn-widget-wrapper__actions[data-v-cc60e4c8] {
21362
21494
  display: flex;
21363
21495
  gap: 4px;
21364
21496
  flex-shrink: 0;
@@ -21366,7 +21498,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21366
21498
 
21367
21499
  /* The header's text link (`headerLink`). Theme hooks: --cn-widget-header-link-size
21368
21500
  and --cn-widget-header-link-weight. */
21369
- .cn-widget-wrapper__header-link[data-v-8ce3140c] {
21501
+ .cn-widget-wrapper__header-link[data-v-cc60e4c8] {
21370
21502
  align-self: center;
21371
21503
  padding: 0 calc(1 * var(--default-grid-baseline));
21372
21504
  color: var(--color-primary-element);
@@ -21375,11 +21507,11 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21375
21507
  text-decoration: none;
21376
21508
  white-space: nowrap;
21377
21509
  }
21378
- .cn-widget-wrapper__header-link[data-v-8ce3140c]:hover,
21379
- .cn-widget-wrapper__header-link[data-v-8ce3140c]:focus-visible {
21510
+ .cn-widget-wrapper__header-link[data-v-cc60e4c8]:hover,
21511
+ .cn-widget-wrapper__header-link[data-v-cc60e4c8]:focus-visible {
21380
21512
  text-decoration: underline;
21381
21513
  }
21382
- .cn-widget-wrapper__header-link[data-v-8ce3140c]:focus-visible {
21514
+ .cn-widget-wrapper__header-link[data-v-cc60e4c8]:focus-visible {
21383
21515
  outline: 2px solid var(--color-primary-element);
21384
21516
  outline-offset: 2px;
21385
21517
  border-radius: var(--border-radius-small, 4px);
@@ -21390,7 +21522,7 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21390
21522
  wrapper is ever rendered without it. Material-design-icon components paint
21391
21523
  with `fill: currentColor`, so this reaches them; the :deep rule below makes
21392
21524
  it reach a raw <svg> in the slot too. */
21393
- .cn-widget-wrapper__title-icon[data-v-8ce3140c] {
21525
+ .cn-widget-wrapper__title-icon[data-v-cc60e4c8] {
21394
21526
  display: flex;
21395
21527
  align-items: center;
21396
21528
  flex-shrink: 0;
@@ -21410,17 +21542,17 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21410
21542
 
21411
21543
  /* Right-positioned title icons sit AFTER the actions, so the margin belongs on
21412
21544
  the other side or it pushes the icon off the header's right edge. */
21413
- .cn-widget-wrapper__title-icon[data-v-8ce3140c]:last-child {
21545
+ .cn-widget-wrapper__title-icon[data-v-cc60e4c8]:last-child {
21414
21546
  margin-inline-end: 0;
21415
21547
  margin-inline-start: 8px;
21416
21548
  }
21417
21549
 
21418
21550
  /* Material-design-icon components paint with `fill: currentColor`, so the
21419
21551
  colour above reaches them; this makes it reach a raw <svg> in the slot too. */
21420
- .cn-widget-wrapper__title-icon[data-v-8ce3140c] svg {
21552
+ .cn-widget-wrapper__title-icon[data-v-cc60e4c8] svg {
21421
21553
  fill: currentcolor;
21422
21554
  }
21423
- .cn-widget-wrapper__footer[data-v-8ce3140c] {
21555
+ .cn-widget-wrapper__footer[data-v-cc60e4c8] {
21424
21556
  display: flex;
21425
21557
  justify-content: flex-end;
21426
21558
  gap: 8px;
@@ -21428,12 +21560,12 @@ a.cn-xwiki-card__title[data-v-1a6b61fd]:hover {
21428
21560
  border-top: 1px solid var(--color-border);
21429
21561
  flex-shrink: 0;
21430
21562
  }
21431
- .cn-widget-wrapper__footer-link[data-v-8ce3140c] {
21563
+ .cn-widget-wrapper__footer-link[data-v-cc60e4c8] {
21432
21564
  font-size: 13px;
21433
21565
  color: var(--color-primary-element);
21434
21566
  text-decoration: none;
21435
21567
  }
21436
- .cn-widget-wrapper__footer-link[data-v-8ce3140c]:hover {
21568
+ .cn-widget-wrapper__footer-link[data-v-cc60e4c8]:hover {
21437
21569
  text-decoration: underline;
21438
21570
  }
21439
21571
 
@@ -25049,6 +25181,19 @@ button.cn-stepper__step[data-v-776581d4] {
25049
25181
  }
25050
25182
 
25051
25183
 
25184
+ /* `separator`: a text separator in place of the chevron. The chevron's own
25185
+ element stays (it carries NcBreadcrumbs' spacing and its "no separator after
25186
+ the last crumb" rule); only its icon gives way to the text. */
25187
+ .cn-breadcrumbs--text-separator[data-v-54c3381a] .vue-crumb__separator svg {
25188
+ display: none;
25189
+ }
25190
+ .cn-breadcrumbs--text-separator[data-v-54c3381a] .vue-crumb__separator::before {
25191
+ content: var(--cn-breadcrumbs-separator);
25192
+ padding-inline: var(--cn-breadcrumbs-separator-gap, 0);
25193
+ color: var(--color-text-maxcontrast);
25194
+ }
25195
+
25196
+
25052
25197
  .cn-form-page__honeypot {
25053
25198
  position: absolute;
25054
25199
  left: -10000px;
@@ -25229,7 +25374,7 @@ button.cn-stepper__step[data-v-776581d4] {
25229
25374
  line rather than above a line that stops where the last tab does. With no
25230
25375
  nav-end content the nav is the bar's only child and the result is pixel
25231
25376
  identical to the rule living on the nav itself. */
25232
- .cn-tabs__bar[data-v-019bacbf] {
25377
+ .cn-tabs__bar[data-v-4d96de3d] {
25233
25378
  /* Top-aligned so the `#nav-end` control sits on the tab row, not below it,
25234
25379
  should the two sides ever differ in height. */
25235
25380
  align-items: flex-start;
@@ -25239,12 +25384,12 @@ button.cn-stepper__step[data-v-776581d4] {
25239
25384
  }
25240
25385
 
25241
25386
  /* The strip holds the scrolling nav and the edge affordances drawn over it. */
25242
- .cn-tabs__strip[data-v-019bacbf] {
25387
+ .cn-tabs__strip[data-v-4d96de3d] {
25243
25388
  flex: 1 1 auto;
25244
25389
  min-width: 0;
25245
25390
  position: relative;
25246
25391
  }
25247
- .cn-tabs__nav[data-v-019bacbf] {
25392
+ .cn-tabs__nav[data-v-4d96de3d] {
25248
25393
  display: flex;
25249
25394
  gap: 4px;
25250
25395
  /* One row that scrolls, never a wrap: in a narrow sidebar a nine-tab strip
@@ -25261,11 +25406,11 @@ button.cn-stepper__step[data-v-776581d4] {
25261
25406
  the panel's colour, covers it and the tab joins its panel. */
25262
25407
  margin-bottom: -1px;
25263
25408
  }
25264
- .cn-tabs__nav[data-v-019bacbf]::-webkit-scrollbar {
25409
+ .cn-tabs__nav[data-v-4d96de3d]::-webkit-scrollbar {
25265
25410
  display: none;
25266
25411
  }
25267
25412
  @media (prefers-reduced-motion: reduce) {
25268
- .cn-tabs__nav[data-v-019bacbf] {
25413
+ .cn-tabs__nav[data-v-4d96de3d] {
25269
25414
  scroll-behavior: auto;
25270
25415
  }
25271
25416
  }
@@ -25276,8 +25421,8 @@ button.cn-stepper__step[data-v-776581d4] {
25276
25421
  z-index 2 so the fades outrank a lifted tab: CnTabsWidget puts the open tab
25277
25422
  at 1, and a tie goes to DOM order, which would draw that tab over the start
25278
25423
  fade (it precedes the tabs) while the end fade still covered it. */
25279
- .cn-tabs__strip[data-v-019bacbf]::before,
25280
- .cn-tabs__strip[data-v-019bacbf]::after {
25424
+ .cn-tabs__strip[data-v-4d96de3d]::before,
25425
+ .cn-tabs__strip[data-v-4d96de3d]::after {
25281
25426
  content: '';
25282
25427
  display: none;
25283
25428
  inset-block: 0 1px;
@@ -25286,23 +25431,23 @@ button.cn-stepper__step[data-v-776581d4] {
25286
25431
  width: 56px;
25287
25432
  z-index: 2;
25288
25433
  }
25289
- .cn-tabs__strip[data-v-019bacbf]::before {
25434
+ .cn-tabs__strip[data-v-4d96de3d]::before {
25290
25435
  background: linear-gradient(to right, var(--color-main-background) 30%, transparent);
25291
25436
  inset-inline-start: 0;
25292
25437
  }
25293
- .cn-tabs__strip[data-v-019bacbf]::after {
25438
+ .cn-tabs__strip[data-v-4d96de3d]::after {
25294
25439
  background: linear-gradient(to left, var(--color-main-background) 30%, transparent);
25295
25440
  inset-inline-end: 0;
25296
25441
  }
25297
- .cn-tabs__strip--more-start[data-v-019bacbf]::before,
25298
- .cn-tabs__strip--more-end[data-v-019bacbf]::after {
25442
+ .cn-tabs__strip--more-start[data-v-4d96de3d]::before,
25443
+ .cn-tabs__strip--more-end[data-v-4d96de3d]::after {
25299
25444
  display: block;
25300
25445
  }
25301
25446
 
25302
25447
  /* Doubled selector for the same reason as `.cn-tabs__nav .cn-tabs__nav-item`:
25303
25448
  Nextcloud's own `button` rule would otherwise give this a border, a fill
25304
25449
  and a margin. */
25305
- .cn-tabs__strip .cn-tabs__scroll[data-v-019bacbf] {
25450
+ .cn-tabs__strip .cn-tabs__scroll[data-v-4d96de3d] {
25306
25451
  align-items: center;
25307
25452
  background: none;
25308
25453
  border: 0;
@@ -25322,20 +25467,20 @@ button.cn-stepper__step[data-v-776581d4] {
25322
25467
  }
25323
25468
 
25324
25469
  /* Nextcloud's `button:hover` rule would otherwise fill the chevron. */
25325
- .cn-tabs__strip .cn-tabs__scroll[data-v-019bacbf]:hover,
25326
- .cn-tabs__strip .cn-tabs__scroll[data-v-019bacbf]:focus {
25470
+ .cn-tabs__strip .cn-tabs__scroll[data-v-4d96de3d]:hover,
25471
+ .cn-tabs__strip .cn-tabs__scroll[data-v-4d96de3d]:focus {
25327
25472
  background: none;
25328
25473
  }
25329
- .cn-tabs__scroll--start[data-v-019bacbf] {
25474
+ .cn-tabs__scroll--start[data-v-4d96de3d] {
25330
25475
  inset-inline-start: 0;
25331
25476
  }
25332
- .cn-tabs__scroll--end[data-v-019bacbf] {
25477
+ .cn-tabs__scroll--end[data-v-4d96de3d] {
25333
25478
  inset-inline-end: 0;
25334
25479
  }
25335
25480
 
25336
25481
  /* The count behind a tab's title. Full-contrast text on the page background,
25337
25482
  so it reads on the idle tab's darker fill and on the open tab alike. */
25338
- .cn-tabs__count[data-v-019bacbf] {
25483
+ .cn-tabs__count[data-v-4d96de3d] {
25339
25484
  background-color: var(--color-main-background);
25340
25485
  border: 1px solid var(--color-border-dark);
25341
25486
  border-radius: var(--border-radius-pill, 100px);
@@ -25348,18 +25493,18 @@ button.cn-stepper__step[data-v-776581d4] {
25348
25493
  padding: 0 6px;
25349
25494
  text-align: center;
25350
25495
  }
25351
- .cn-tabs__more[data-v-019bacbf] {
25496
+ .cn-tabs__more[data-v-4d96de3d] {
25352
25497
  align-items: center;
25353
25498
  display: flex;
25354
25499
  flex: 0 0 auto;
25355
25500
  }
25356
25501
 
25357
25502
  /* Keeps a "More" entry's text on the menu's text column without drawing an icon. */
25358
- .cn-tabs__more-spacer[data-v-019bacbf] {
25503
+ .cn-tabs__more-spacer[data-v-4d96de3d] {
25359
25504
  display: inline-block;
25360
25505
  width: 20px;
25361
25506
  }
25362
- .cn-tabs__nav-end[data-v-019bacbf] {
25507
+ .cn-tabs__nav-end[data-v-4d96de3d] {
25363
25508
  align-items: center;
25364
25509
  display: flex;
25365
25510
  flex: 0 0 auto;
@@ -25381,7 +25526,7 @@ button.cn-stepper__step[data-v-776581d4] {
25381
25526
  strip legible as a control at a glance, and the active tab, sharing the
25382
25527
  panel's background and punching a hole in the bar's rule, reads as the sheet
25383
25528
  in front. */
25384
- .cn-tabs__nav-item[data-v-019bacbf] {
25529
+ .cn-tabs__nav-item[data-v-4d96de3d] {
25385
25530
  background-color: var(--color-background-dark);
25386
25531
  /* `--color-border-dark`, not `--color-border`: the latter is the same
25387
25532
  #ededed as `--color-background-dark` in the stock light theme, so a tab
@@ -25416,27 +25561,27 @@ button.cn-stepper__step[data-v-776581d4] {
25416
25561
  with a selector that outscores the scoped rule above, which floated the tabs
25417
25562
  above the bar's rule inside a real page. The parent class wins on
25418
25563
  specificity rather than on `!important` or source order. */
25419
- .cn-tabs__nav .cn-tabs__nav-item[data-v-019bacbf] {
25564
+ .cn-tabs__nav .cn-tabs__nav-item[data-v-4d96de3d] {
25420
25565
  margin-block-end: 0;
25421
25566
  }
25422
- .cn-tabs__nav--justified .cn-tabs__nav-item[data-v-019bacbf] {
25567
+ .cn-tabs__nav--justified .cn-tabs__nav-item[data-v-4d96de3d] {
25423
25568
  flex: 1 1 0;
25424
25569
  }
25425
- .cn-tabs__nav-item[data-v-019bacbf]:hover,
25426
- .cn-tabs__nav-item[data-v-019bacbf]:focus-visible {
25570
+ .cn-tabs__nav-item[data-v-4d96de3d]:hover,
25571
+ .cn-tabs__nav-item[data-v-4d96de3d]:focus-visible {
25427
25572
  background-color: var(--color-background-hover);
25428
25573
  color: var(--color-main-text);
25429
25574
  }
25430
25575
 
25431
25576
  /* Inside the box: the scrolling strip clips anything drawn outside a tab. */
25432
- .cn-tabs__nav-item[data-v-019bacbf]:focus-visible {
25577
+ .cn-tabs__nav-item[data-v-4d96de3d]:focus-visible {
25433
25578
  outline-offset: -2px;
25434
25579
  }
25435
- .cn-tabs__nav-item[disabled][data-v-019bacbf] {
25580
+ .cn-tabs__nav-item[disabled][data-v-4d96de3d] {
25436
25581
  cursor: default;
25437
25582
  opacity: 0.5;
25438
25583
  }
25439
- .cn-tabs__nav-item[disabled][data-v-019bacbf]:hover {
25584
+ .cn-tabs__nav-item[disabled][data-v-4d96de3d]:hover {
25440
25585
  background-color: var(--color-background-dark);
25441
25586
  color: var(--color-main-text);
25442
25587
  }
@@ -25446,7 +25591,7 @@ button.cn-stepper__step[data-v-776581d4] {
25446
25591
  joins the sheet below it. The primary-coloured top edge is what carries the
25447
25592
  selection at a glance, and it survives forced-colours mode, which drops
25448
25593
  background colours but keeps borders. */
25449
- .cn-tabs__nav-item--active[data-v-019bacbf] {
25594
+ .cn-tabs__nav-item--active[data-v-4d96de3d] {
25450
25595
  background-color: var(--color-main-background);
25451
25596
  border-bottom: 1px solid var(--color-main-background);
25452
25597
  border-top: 2px solid var(--color-primary-element);
@@ -25456,10 +25601,10 @@ button.cn-stepper__step[data-v-776581d4] {
25456
25601
  thicker top border, so the strip does not jog when the selection moves. */
25457
25602
  padding-top: 7px;
25458
25603
  }
25459
- .cn-tabs__content[data-v-019bacbf] {
25604
+ .cn-tabs__content[data-v-4d96de3d] {
25460
25605
  padding-top: 12px;
25461
25606
  }
25462
- .cn-tabs--card .cn-tabs__content[data-v-019bacbf] {
25607
+ .cn-tabs--card .cn-tabs__content[data-v-4d96de3d] {
25463
25608
  border: 1px solid var(--color-border);
25464
25609
  border-top: none;
25465
25610
  padding: 12px;
@@ -25467,33 +25612,33 @@ button.cn-stepper__step[data-v-776581d4] {
25467
25612
 
25468
25613
  /* Segmented variant: the strip is a pill switch that stands on its own, so
25469
25614
  the bar's rule and the tab-joins-panel treatment are both dropped. */
25470
- .cn-tabs--segmented .cn-tabs__bar[data-v-019bacbf] {
25615
+ .cn-tabs--segmented .cn-tabs__bar[data-v-4d96de3d] {
25471
25616
  border-bottom: none;
25472
25617
  }
25473
- .cn-tabs--segmented .cn-tabs__strip[data-v-019bacbf] {
25618
+ .cn-tabs--segmented .cn-tabs__strip[data-v-4d96de3d] {
25474
25619
  flex: 0 1 auto;
25475
25620
  }
25476
- .cn-tabs--segmented .cn-tabs__nav[data-v-019bacbf] {
25621
+ .cn-tabs--segmented .cn-tabs__nav[data-v-4d96de3d] {
25477
25622
  gap: 4px;
25478
25623
  margin-bottom: 0;
25479
25624
  padding: 4px;
25480
25625
  border-radius: var(--border-radius-container, var(--border-radius-large, 10px));
25481
25626
  background-color: var(--color-background-dark);
25482
25627
  }
25483
- .cn-tabs--segmented .cn-tabs__nav-item[data-v-019bacbf] {
25628
+ .cn-tabs--segmented .cn-tabs__nav-item[data-v-4d96de3d] {
25484
25629
  border: 1px solid transparent;
25485
25630
  border-radius: var(--border-radius-element, var(--border-radius-large, 8px));
25486
25631
  background-color: transparent;
25487
25632
  font-weight: 600;
25488
25633
  padding: 6px 16px;
25489
25634
  }
25490
- .cn-tabs--segmented .cn-tabs__nav-item[data-v-019bacbf]:hover {
25635
+ .cn-tabs--segmented .cn-tabs__nav-item[data-v-4d96de3d]:hover {
25491
25636
  background-color: var(--color-background-hover);
25492
25637
  }
25493
25638
 
25494
25639
  /* The open segment is the raised one. Its border survives forced-colours
25495
25640
  mode, which drops the background and the shadow. */
25496
- .cn-tabs--segmented .cn-tabs__nav-item--active[data-v-019bacbf] {
25641
+ .cn-tabs--segmented .cn-tabs__nav-item--active[data-v-4d96de3d] {
25497
25642
  border: 1px solid var(--color-border-dark);
25498
25643
  background-color: var(--color-main-background);
25499
25644
  box-shadow: 0 1px 2px var(--color-box-shadow);
@@ -25504,11 +25649,11 @@ button.cn-stepper__step[data-v-776581d4] {
25504
25649
  /* Underline variant (board LpBeheerAlgemeen): plain labels on the bar's rule,
25505
25650
  the open one carried by a 3px primary underline that sits on that rule. The
25506
25651
  strip wraps onto a second row rather than scrolling. */
25507
- .cn-tabs--underline .cn-tabs__nav[data-v-019bacbf] {
25652
+ .cn-tabs--underline .cn-tabs__nav[data-v-4d96de3d] {
25508
25653
  flex-wrap: wrap;
25509
25654
  overflow: visible;
25510
25655
  }
25511
- .cn-tabs--underline .cn-tabs__nav-item[data-v-019bacbf] {
25656
+ .cn-tabs--underline .cn-tabs__nav-item[data-v-4d96de3d] {
25512
25657
  background-color: transparent;
25513
25658
  border: 0;
25514
25659
  border-bottom: 3px solid transparent;
@@ -25520,34 +25665,34 @@ button.cn-stepper__step[data-v-776581d4] {
25520
25665
  min-height: 44px;
25521
25666
  padding: 0 9px;
25522
25667
  }
25523
- .cn-tabs--underline .cn-tabs__nav-item[data-v-019bacbf]:hover,
25524
- .cn-tabs--underline .cn-tabs__nav-item[data-v-019bacbf]:focus-visible {
25668
+ .cn-tabs--underline .cn-tabs__nav-item[data-v-4d96de3d]:hover,
25669
+ .cn-tabs--underline .cn-tabs__nav-item[data-v-4d96de3d]:focus-visible {
25525
25670
  background-color: transparent;
25526
25671
  border-bottom-color: var(--color-border-dark);
25527
25672
  color: var(--color-main-text);
25528
25673
  }
25529
- .cn-tabs--underline .cn-tabs__nav-item[disabled][data-v-019bacbf]:hover {
25674
+ .cn-tabs--underline .cn-tabs__nav-item[disabled][data-v-4d96de3d]:hover {
25530
25675
  background-color: transparent;
25531
25676
  border-bottom-color: transparent;
25532
25677
  }
25533
- .cn-tabs--underline .cn-tabs__nav-item--active[data-v-019bacbf],
25534
- .cn-tabs--underline .cn-tabs__nav-item--active[data-v-019bacbf]:hover,
25535
- .cn-tabs--underline .cn-tabs__nav-item--active[data-v-019bacbf]:focus-visible {
25678
+ .cn-tabs--underline .cn-tabs__nav-item--active[data-v-4d96de3d],
25679
+ .cn-tabs--underline .cn-tabs__nav-item--active[data-v-4d96de3d]:hover,
25680
+ .cn-tabs--underline .cn-tabs__nav-item--active[data-v-4d96de3d]:focus-visible {
25536
25681
  border-bottom: 3px solid var(--color-primary-element);
25537
25682
  color: var(--color-main-text);
25538
25683
  font-weight: 700;
25539
25684
  padding-top: 0;
25540
25685
  }
25541
- .cn-tabs--underline .cn-tabs__count[data-v-019bacbf] {
25686
+ .cn-tabs--underline .cn-tabs__count[data-v-4d96de3d] {
25542
25687
  margin-inline-start: 0;
25543
25688
  }
25544
- .cn-tabs--underline .cn-tabs__content[data-v-019bacbf] {
25689
+ .cn-tabs--underline .cn-tabs__content[data-v-4d96de3d] {
25545
25690
  padding-top: 20px;
25546
25691
  }
25547
25692
 
25548
25693
 
25549
25694
  /* A stack (`widgetIds`): the panel's widget, then cards 20px apart. */
25550
- .cn-tabs-widget__stack[data-v-febbfc68] {
25695
+ .cn-tabs-widget__stack[data-v-dbbc6ecc] {
25551
25696
  display: flex;
25552
25697
  flex-direction: column;
25553
25698
  gap: 20px;
@@ -25556,19 +25701,19 @@ button.cn-stepper__step[data-v-776581d4] {
25556
25701
  /* A gridded stack (`columns` / `layout` on the tab): 12 columns, widgets wrap
25557
25702
  onto the next row, a row's cards as tall as the tallest. Narrow, it is the
25558
25703
  plain stack again. */
25559
- .cn-tabs-widget__stack--grid[data-v-febbfc68] {
25704
+ .cn-tabs-widget__stack--grid[data-v-dbbc6ecc] {
25560
25705
  display: grid;
25561
25706
  grid-template-columns: repeat(12, minmax(0, 1fr));
25562
25707
  align-items: stretch;
25563
25708
  }
25564
- .cn-tabs-widget__stack--grid[data-v-febbfc68] > * {
25709
+ .cn-tabs-widget__stack--grid[data-v-dbbc6ecc] > * {
25565
25710
  min-width: 0;
25566
25711
  }
25567
25712
  @media (max-width: 700px) {
25568
- .cn-tabs-widget__stack--grid[data-v-febbfc68] {
25713
+ .cn-tabs-widget__stack--grid[data-v-dbbc6ecc] {
25569
25714
  grid-template-columns: minmax(0, 1fr);
25570
25715
  }
25571
- .cn-tabs-widget__stack--grid[data-v-febbfc68] > * {
25716
+ .cn-tabs-widget__stack--grid[data-v-dbbc6ecc] > * {
25572
25717
  grid-column: auto !important;
25573
25718
  }
25574
25719
  }
@@ -25602,7 +25747,7 @@ button.cn-stepper__step[data-v-776581d4] {
25602
25747
  `!important` or on load order this library does not control. The same
25603
25748
  technique, for the same reason, is used on `.cn-tabs__nav .cn-tabs__nav-item`
25604
25749
  in CnTabs to beat Nextcloud's own button margin. */
25605
- .cn-tabs-widget.cn-tabs-widget[data-v-febbfc68] {
25750
+ .cn-tabs-widget.cn-tabs-widget[data-v-dbbc6ecc] {
25606
25751
  background-color: transparent;
25607
25752
  border: 0;
25608
25753
  border-radius: 0;
@@ -25626,12 +25771,12 @@ button.cn-stepper__step[data-v-776581d4] {
25626
25771
  below it: the rule ran straight on to the widget's edge and read as a
25627
25772
  border sticking out past a rounded corner (Ruben, 2026-09-13). Ending it
25628
25773
  where the curve begins makes the rule and the curve one continuous edge. */
25629
- .cn-tabs-widget__tabs[data-v-febbfc68] .cn-tabs__bar {
25774
+ .cn-tabs-widget__tabs[data-v-dbbc6ecc] .cn-tabs__bar {
25630
25775
  border-bottom: none;
25631
25776
  padding: 0;
25632
25777
  position: relative;
25633
25778
  }
25634
- .cn-tabs-widget__tabs[data-v-febbfc68] .cn-tabs__bar::after {
25779
+ .cn-tabs-widget__tabs[data-v-dbbc6ecc] .cn-tabs__bar::after {
25635
25780
  border-bottom: 1px solid var(--color-border);
25636
25781
  content: '';
25637
25782
  inset-block-end: 0;
@@ -25644,11 +25789,11 @@ button.cn-stepper__step[data-v-776581d4] {
25644
25789
  own background-coloured bottom edge, which only works if it paints ABOVE the
25645
25790
  pseudo-element: a positioned pseudo-element otherwise paints over every
25646
25791
  in-flow sibling, rule included. */
25647
- .cn-tabs-widget__tabs[data-v-febbfc68] .cn-tabs__nav-item--active {
25792
+ .cn-tabs-widget__tabs[data-v-dbbc6ecc] .cn-tabs__nav-item--active {
25648
25793
  position: relative;
25649
25794
  z-index: 1;
25650
25795
  }
25651
- .cn-tabs-widget__tabs[data-v-febbfc68] {
25796
+ .cn-tabs-widget__tabs[data-v-dbbc6ecc] {
25652
25797
  display: flex;
25653
25798
  flex-direction: column;
25654
25799
  /* Grow to the widget's height, so the panel fills the grid cell the
@@ -25666,7 +25811,7 @@ button.cn-stepper__step[data-v-776581d4] {
25666
25811
  the open tab, but padding sits inside the painted box — only a margin would
25667
25812
  have opened that gap, and a zero top put every panel's content against the
25668
25813
  strip. */
25669
- .cn-tabs-widget__tabs[data-v-febbfc68] .cn-tabs__content {
25814
+ .cn-tabs-widget__tabs[data-v-dbbc6ecc] .cn-tabs__content {
25670
25815
  background-color: var(--color-main-background);
25671
25816
  /* Three sides only: the bar's rule (redrawn above, stopping at the corner)
25672
25817
  is this sheet's top edge, and the open tab erases the slice of it
@@ -25686,7 +25831,7 @@ button.cn-stepper__step[data-v-776581d4] {
25686
25831
  overflow: auto;
25687
25832
  padding: 12px;
25688
25833
  }
25689
- .cn-tabs-widget__tabs[data-v-febbfc68] .cn-tab {
25834
+ .cn-tabs-widget__tabs[data-v-dbbc6ecc] .cn-tab {
25690
25835
  height: 100%;
25691
25836
  }
25692
25837
 
@@ -25694,13 +25839,13 @@ button.cn-stepper__step[data-v-776581d4] {
25694
25839
  (margin 0 -16px -16px). The panel of a tab pads 12px, so on a tab that
25695
25840
  holds the list directly the footer stuck out 4px on the right and at the
25696
25841
  bottom and made the panel scroll. It bleeds exactly the panel's padding. */
25697
- .cn-tabs-widget__tabs[data-v-febbfc68] .cn-tabs__content > .cn-tab > .cn-detail-widget-host--bare .cn-object-list-widget__add {
25842
+ .cn-tabs-widget__tabs[data-v-dbbc6ecc] .cn-tabs__content > .cn-tab > .cn-detail-widget-host--bare .cn-object-list-widget__add {
25698
25843
  margin: auto -12px -12px;
25699
25844
  }
25700
25845
 
25701
25846
  /* The open panel's header link, beside the strip. Same look and theme hooks
25702
25847
  as a card header link (CnWidgetWrapper). */
25703
- .cn-tabs-widget__header-link[data-v-febbfc68] {
25848
+ .cn-tabs-widget__header-link[data-v-dbbc6ecc] {
25704
25849
  align-self: center;
25705
25850
  padding: 0 calc(1 * var(--default-grid-baseline));
25706
25851
  color: var(--color-primary-element);
@@ -25709,21 +25854,21 @@ button.cn-stepper__step[data-v-776581d4] {
25709
25854
  text-decoration: none;
25710
25855
  white-space: nowrap;
25711
25856
  }
25712
- .cn-tabs-widget__header-link[data-v-febbfc68]:hover,
25713
- .cn-tabs-widget__header-link[data-v-febbfc68]:focus-visible {
25857
+ .cn-tabs-widget__header-link[data-v-dbbc6ecc]:hover,
25858
+ .cn-tabs-widget__header-link[data-v-dbbc6ecc]:focus-visible {
25714
25859
  text-decoration: underline;
25715
25860
  }
25716
- .cn-tabs-widget__header-link[data-v-febbfc68]:focus-visible {
25861
+ .cn-tabs-widget__header-link[data-v-dbbc6ecc]:focus-visible {
25717
25862
  outline: 2px solid var(--color-primary-element);
25718
25863
  outline-offset: 2px;
25719
25864
  border-radius: var(--border-radius-small, 4px);
25720
25865
  }
25721
- .cn-tabs-widget__title[data-v-febbfc68] {
25866
+ .cn-tabs-widget__title[data-v-dbbc6ecc] {
25722
25867
  align-items: center;
25723
25868
  display: inline-flex;
25724
25869
  gap: 6px;
25725
25870
  }
25726
- .cn-tabs-widget__title-icon[data-v-febbfc68] {
25871
+ .cn-tabs-widget__title-icon[data-v-dbbc6ecc] {
25727
25872
  flex: 0 0 auto;
25728
25873
  }
25729
25874
 
@@ -30411,27 +30556,27 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
30411
30556
  }
30412
30557
 
30413
30558
 
30414
- .cn-record-list__list[data-v-d793cb0e] {
30559
+ .cn-record-list__list[data-v-695c835e] {
30415
30560
  list-style: none;
30416
30561
  margin: 0;
30417
30562
  padding: 0;
30418
30563
  }
30419
- .cn-record-list__empty[data-v-d793cb0e],
30420
- .cn-record-list__error[data-v-d793cb0e] {
30564
+ .cn-record-list__empty[data-v-695c835e],
30565
+ .cn-record-list__error[data-v-695c835e] {
30421
30566
  color: var(--color-text-maxcontrast);
30422
30567
  margin: 0;
30423
30568
  }
30424
- .cn-record-list__loading[data-v-d793cb0e] {
30569
+ .cn-record-list__loading[data-v-695c835e] {
30425
30570
  display: flex;
30426
30571
  justify-content: center;
30427
30572
  padding: 8px 0;
30428
30573
  }
30429
30574
 
30430
30575
  /* rows */
30431
- .cn-record-list--rows .cn-record-list__item + .cn-record-list__item[data-v-d793cb0e] {
30576
+ .cn-record-list--rows .cn-record-list__item + .cn-record-list__item[data-v-695c835e] {
30432
30577
  border-top: 1px solid var(--color-border);
30433
30578
  }
30434
- .cn-record-list__row[data-v-d793cb0e] {
30579
+ .cn-record-list__row[data-v-695c835e] {
30435
30580
  align-items: center;
30436
30581
  color: var(--color-main-text);
30437
30582
  display: flex;
@@ -30439,11 +30584,11 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
30439
30584
  padding: 12px 0;
30440
30585
  text-decoration: none;
30441
30586
  }
30442
- .cn-record-list__row--link:hover .cn-record-list__title[data-v-d793cb0e],
30443
- .cn-record-list__row--link:focus-visible .cn-record-list__title[data-v-d793cb0e] {
30587
+ .cn-record-list__row--link:hover .cn-record-list__title[data-v-695c835e],
30588
+ .cn-record-list__row--link:focus-visible .cn-record-list__title[data-v-695c835e] {
30444
30589
  text-decoration: underline;
30445
30590
  }
30446
- .cn-record-list__avatar[data-v-d793cb0e] {
30591
+ .cn-record-list__avatar[data-v-695c835e] {
30447
30592
  align-items: center;
30448
30593
  background: var(--color-background-hover);
30449
30594
  border-radius: 50%;
@@ -30456,67 +30601,67 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
30456
30601
  justify-content: center;
30457
30602
  width: 36px;
30458
30603
  }
30459
- .cn-record-list__main[data-v-d793cb0e] {
30604
+ .cn-record-list__main[data-v-695c835e] {
30460
30605
  display: flex;
30461
30606
  flex: 1 1 auto;
30462
30607
  flex-direction: column;
30463
30608
  gap: 2px;
30464
30609
  min-width: 0;
30465
30610
  }
30466
- .cn-record-list__title[data-v-d793cb0e] {
30611
+ .cn-record-list__title[data-v-695c835e] {
30467
30612
  font-size: 15px;
30468
30613
  font-weight: 700;
30469
30614
  }
30470
- .cn-record-list__meta[data-v-d793cb0e] {
30615
+ .cn-record-list__meta[data-v-695c835e] {
30471
30616
  color: var(--color-text-maxcontrast);
30472
30617
  font-size: 13px;
30473
30618
  }
30474
- .cn-record-list__aside[data-v-d793cb0e] {
30619
+ .cn-record-list__aside[data-v-695c835e] {
30475
30620
  align-items: center;
30476
30621
  display: flex;
30477
30622
  flex: none;
30478
30623
  gap: 16px;
30479
30624
  }
30480
- .cn-record-list__trailing[data-v-d793cb0e] {
30625
+ .cn-record-list__trailing[data-v-695c835e] {
30481
30626
  font-size: 14px;
30482
30627
  white-space: nowrap;
30483
30628
  }
30484
- .cn-record-list__due[data-v-d793cb0e] {
30629
+ .cn-record-list__due[data-v-695c835e] {
30485
30630
  font-size: 14px;
30486
30631
  white-space: nowrap;
30487
30632
  }
30488
- .cn-record-list__due--danger[data-v-d793cb0e] {
30633
+ .cn-record-list__due--danger[data-v-695c835e] {
30489
30634
  color: var(--color-text-error, var(--color-error-text));
30490
30635
  font-weight: 600;
30491
30636
  }
30492
- .cn-record-list__due--empty[data-v-d793cb0e] {
30637
+ .cn-record-list__due--empty[data-v-695c835e] {
30493
30638
  color: var(--color-text-maxcontrast);
30494
30639
  }
30495
- .cn-record-list__row--action[data-v-d793cb0e] {
30640
+ .cn-record-list__row--action[data-v-695c835e] {
30496
30641
  flex-wrap: wrap;
30497
30642
  gap: 8px 16px;
30498
30643
  padding: 14px 0;
30499
30644
  }
30500
- .cn-record-list__row--action .cn-record-list__main[data-v-d793cb0e] {
30645
+ .cn-record-list__row--action .cn-record-list__main[data-v-695c835e] {
30501
30646
  flex: 1 1 280px;
30502
30647
  gap: 3px;
30503
30648
  }
30504
- .cn-record-list__title--link[data-v-d793cb0e] {
30649
+ .cn-record-list__title--link[data-v-695c835e] {
30505
30650
  color: var(--color-main-text);
30506
30651
  text-decoration: underline;
30507
30652
  }
30508
- .cn-record-list__pills[data-v-d793cb0e] {
30653
+ .cn-record-list__pills[data-v-695c835e] {
30509
30654
  display: flex;
30510
30655
  flex: 0 0 120px;
30511
30656
  gap: 6px;
30512
30657
  justify-content: flex-end;
30513
30658
  }
30514
- .cn-record-list__due--column[data-v-d793cb0e] {
30659
+ .cn-record-list__due--column[data-v-695c835e] {
30515
30660
  flex: 0 0 96px;
30516
30661
  font-size: 13px;
30517
30662
  text-align: end;
30518
30663
  }
30519
- .cn-record-list__action[data-v-d793cb0e] {
30664
+ .cn-record-list__action[data-v-695c835e] {
30520
30665
  align-items: center;
30521
30666
  background: var(--color-primary-element-light);
30522
30667
  border: 0;
@@ -30533,23 +30678,23 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
30533
30678
  padding: 0 14px;
30534
30679
  text-decoration: none;
30535
30680
  }
30536
- .cn-record-list__action[data-v-d793cb0e]:hover,
30537
- .cn-record-list__action[data-v-d793cb0e]:focus-visible {
30681
+ .cn-record-list__action[data-v-695c835e]:hover,
30682
+ .cn-record-list__action[data-v-695c835e]:focus-visible {
30538
30683
  background: var(--color-primary-element-light-hover, var(--color-primary-element-light));
30539
30684
  }
30540
- .cn-record-list__chevron[data-v-d793cb0e] {
30685
+ .cn-record-list__chevron[data-v-695c835e] {
30541
30686
  color: var(--color-text-maxcontrast);
30542
30687
  flex: none;
30543
30688
  }
30544
30689
 
30545
30690
  /* cards (board ShBank): a grid of framed cards, 240px at the least. */
30546
- .cn-record-list--cards .cn-record-list__list[data-v-d793cb0e] {
30691
+ .cn-record-list--cards .cn-record-list__list[data-v-695c835e] {
30547
30692
  align-items: start;
30548
30693
  display: grid;
30549
30694
  gap: 16px;
30550
30695
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
30551
30696
  }
30552
- .cn-record-list__card[data-v-d793cb0e] {
30697
+ .cn-record-list__card[data-v-695c835e] {
30553
30698
  background: var(--color-main-background);
30554
30699
  border: 1px solid var(--color-border);
30555
30700
  border-radius: 12px;
@@ -30561,51 +30706,51 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
30561
30706
  padding: 16px 18px;
30562
30707
  text-decoration: none;
30563
30708
  }
30564
- .cn-record-list__card--link[data-v-d793cb0e]:hover,
30565
- .cn-record-list__card--link[data-v-d793cb0e]:focus-visible {
30709
+ .cn-record-list__card--link[data-v-695c835e]:hover,
30710
+ .cn-record-list__card--link[data-v-695c835e]:focus-visible {
30566
30711
  border-color: var(--color-border-dark, var(--color-border));
30567
30712
  }
30568
- .cn-record-list__card--link:hover .cn-record-list__title[data-v-d793cb0e],
30569
- .cn-record-list__card--link:focus-visible .cn-record-list__title[data-v-d793cb0e] {
30713
+ .cn-record-list__card--link:hover .cn-record-list__title[data-v-695c835e],
30714
+ .cn-record-list__card--link:focus-visible .cn-record-list__title[data-v-695c835e] {
30570
30715
  text-decoration: underline;
30571
30716
  }
30572
- .cn-record-list__card-head[data-v-d793cb0e] {
30717
+ .cn-record-list__card-head[data-v-695c835e] {
30573
30718
  align-items: center;
30574
30719
  display: flex;
30575
30720
  gap: 8px;
30576
30721
  justify-content: space-between;
30577
30722
  }
30578
- .cn-record-list__card-title[data-v-d793cb0e] {
30723
+ .cn-record-list__card-title[data-v-695c835e] {
30579
30724
  align-items: center;
30580
30725
  display: flex;
30581
30726
  gap: 8px;
30582
30727
  min-width: 0;
30583
30728
  }
30584
- .cn-record-list__card-icon[data-v-d793cb0e] {
30729
+ .cn-record-list__card-icon[data-v-695c835e] {
30585
30730
  color: var(--color-primary-element);
30586
30731
  flex: none;
30587
30732
  }
30588
- .cn-record-list__card-pills[data-v-d793cb0e] {
30733
+ .cn-record-list__card-pills[data-v-695c835e] {
30589
30734
  display: flex;
30590
30735
  flex: none;
30591
30736
  gap: 6px;
30592
30737
  }
30593
- .cn-record-list__card-value[data-v-d793cb0e] {
30738
+ .cn-record-list__card-value[data-v-695c835e] {
30594
30739
  font-size: 24px;
30595
30740
  font-weight: 700;
30596
30741
  }
30597
30742
 
30598
30743
  /* feed */
30599
- .cn-record-list--feed .cn-record-list__item + .cn-record-list__item[data-v-d793cb0e] {
30744
+ .cn-record-list--feed .cn-record-list__item + .cn-record-list__item[data-v-695c835e] {
30600
30745
  border-top: 1px solid var(--color-border);
30601
30746
  }
30602
- .cn-record-list__feed-row[data-v-d793cb0e] {
30747
+ .cn-record-list__feed-row[data-v-695c835e] {
30603
30748
  align-items: flex-start;
30604
30749
  display: flex;
30605
30750
  gap: 14px;
30606
30751
  padding: 12px 0;
30607
30752
  }
30608
- .cn-record-list__feed-icon[data-v-d793cb0e] {
30753
+ .cn-record-list__feed-icon[data-v-695c835e] {
30609
30754
  align-items: center;
30610
30755
  background: var(--color-primary-element-light);
30611
30756
  border-radius: 50%;
@@ -30616,25 +30761,25 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-33d38
30616
30761
  justify-content: center;
30617
30762
  width: 36px;
30618
30763
  }
30619
- .cn-record-list__text[data-v-d793cb0e] {
30764
+ .cn-record-list__text[data-v-695c835e] {
30620
30765
  font-size: 15px;
30621
30766
  }
30622
- .cn-record-list--feed .cn-record-list__main[data-v-d793cb0e] {
30767
+ .cn-record-list--feed .cn-record-list__main[data-v-695c835e] {
30623
30768
  color: var(--color-main-text);
30624
30769
  text-decoration: none;
30625
30770
  }
30626
30771
 
30627
30772
  /* inline */
30628
- .cn-record-list__inline-row[data-v-d793cb0e] {
30773
+ .cn-record-list__inline-row[data-v-695c835e] {
30629
30774
  padding: 4px 0;
30630
30775
  }
30631
- .cn-record-list__label[data-v-d793cb0e] {
30776
+ .cn-record-list__label[data-v-695c835e] {
30632
30777
  margin-inline-end: 4px;
30633
30778
  }
30634
- .cn-record-list__inline-title[data-v-d793cb0e] {
30779
+ .cn-record-list__inline-title[data-v-695c835e] {
30635
30780
  color: var(--color-main-text);
30636
30781
  }
30637
- a.cn-record-list__inline-title[data-v-d793cb0e] {
30782
+ a.cn-record-list__inline-title[data-v-695c835e] {
30638
30783
  color: var(--color-primary-element);
30639
30784
  text-decoration: underline;
30640
30785
  }
@@ -31581,40 +31726,40 @@ a.cn-record-list__inline-title[data-v-d793cb0e] {
31581
31726
  }
31582
31727
 
31583
31728
 
31584
- .cn-version-info__card[data-v-52e4d484] {
31729
+ .cn-version-info__card[data-v-95a2bdce] {
31585
31730
  background: var(--color-background-hover);
31586
31731
  border: 1px solid var(--color-border);
31587
31732
  border-radius: var(--border-radius-large);
31588
31733
  padding: 20px;
31589
31734
  margin-bottom: 20px;
31590
31735
  }
31591
- .cn-version-info__card h4[data-v-52e4d484] {
31736
+ .cn-version-info__card h4[data-v-95a2bdce] {
31592
31737
  margin: 0 0 16px 0;
31593
31738
  font-size: 16px;
31594
31739
  font-weight: 600;
31595
31740
  color: var(--color-main-text);
31596
31741
  }
31597
- .cn-version-info__details[data-v-52e4d484] {
31742
+ .cn-version-info__details[data-v-95a2bdce] {
31598
31743
  display: flex;
31599
31744
  flex-direction: column;
31600
31745
  gap: 12px;
31601
31746
  }
31602
- .cn-version-info__item[data-v-52e4d484] {
31747
+ .cn-version-info__item[data-v-95a2bdce] {
31603
31748
  display: flex;
31604
31749
  justify-content: space-between;
31605
31750
  align-items: center;
31606
31751
  padding: 8px 0;
31607
31752
  border-bottom: 1px solid var(--color-border);
31608
31753
  }
31609
- .cn-version-info__item[data-v-52e4d484]:last-child {
31754
+ .cn-version-info__item[data-v-95a2bdce]:last-child {
31610
31755
  border-bottom: none;
31611
31756
  }
31612
- .cn-version-info__label[data-v-52e4d484] {
31757
+ .cn-version-info__label[data-v-95a2bdce] {
31613
31758
  font-weight: 500;
31614
31759
  color: var(--color-text-maxcontrast);
31615
31760
  font-size: 14px;
31616
31761
  }
31617
- .cn-version-info__value[data-v-52e4d484] {
31762
+ .cn-version-info__value[data-v-95a2bdce] {
31618
31763
  font-family: 'Courier New', Courier, monospace;
31619
31764
  font-weight: 600;
31620
31765
  color: var(--color-main-text);
@@ -31622,28 +31767,28 @@ a.cn-record-list__inline-title[data-v-d793cb0e] {
31622
31767
  }
31623
31768
 
31624
31769
  /* Status classes for values */
31625
- .cn-version-info__status--ok[data-v-52e4d484] {
31770
+ .cn-version-info__status--ok[data-v-95a2bdce] {
31626
31771
  color: var(--color-success);
31627
31772
  font-weight: 600;
31628
31773
  }
31629
- .cn-version-info__status--warning[data-v-52e4d484] {
31774
+ .cn-version-info__status--warning[data-v-95a2bdce] {
31630
31775
  color: var(--color-warning);
31631
31776
  font-weight: 600;
31632
31777
  }
31633
- .cn-version-info__status--error[data-v-52e4d484] {
31778
+ .cn-version-info__status--error[data-v-95a2bdce] {
31634
31779
  color: var(--color-error);
31635
31780
  font-weight: 600;
31636
31781
  }
31637
31782
  @media (max-width: 768px) {
31638
- .cn-version-info__item[data-v-52e4d484] {
31783
+ .cn-version-info__item[data-v-95a2bdce] {
31639
31784
  flex-direction: column;
31640
31785
  align-items: flex-start;
31641
31786
  gap: 4px;
31642
31787
  }
31643
- .cn-version-info__label[data-v-52e4d484] {
31788
+ .cn-version-info__label[data-v-95a2bdce] {
31644
31789
  font-weight: 600;
31645
31790
  }
31646
- .cn-version-info__value[data-v-52e4d484] {
31791
+ .cn-version-info__value[data-v-95a2bdce] {
31647
31792
  word-break: break-all;
31648
31793
  }
31649
31794
  }
@@ -34989,28 +35134,28 @@ to {
34989
35134
  }
34990
35135
 
34991
35136
 
34992
- .cn-admin-settings-shell[data-v-038f200a] {
35137
+ .cn-admin-settings-shell[data-v-29bf49ca] {
34993
35138
  max-width: 900px;
34994
35139
  }
34995
35140
 
34996
35141
  /* The board look lifts the width and lays the header and cards on a grid (look-board.css). */
34997
- .cn-support-info[data-v-038f200a] {
35142
+ .cn-support-info[data-v-29bf49ca] {
34998
35143
  margin-top: 16px;
34999
35144
  padding-top: 16px;
35000
35145
  border-top: 1px solid var(--color-border);
35001
35146
  }
35002
- .cn-support-info h4[data-v-038f200a] {
35147
+ .cn-support-info h4[data-v-29bf49ca] {
35003
35148
  margin: 0 0 8px 0;
35004
35149
  font-size: 14px;
35005
35150
  font-weight: 600;
35006
35151
  color: var(--color-main-text);
35007
35152
  }
35008
- .cn-support-info p[data-v-038f200a] {
35153
+ .cn-support-info p[data-v-29bf49ca] {
35009
35154
  margin: 4px 0;
35010
35155
  color: var(--color-text-maxcontrast);
35011
35156
  font-size: 14px;
35012
35157
  }
35013
- .cn-support-info a[data-v-038f200a] {
35158
+ .cn-support-info a[data-v-29bf49ca] {
35014
35159
  color: var(--color-primary-element);
35015
35160
  }
35016
35161
 
@@ -38205,19 +38350,6 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38205
38350
  }
38206
38351
 
38207
38352
 
38208
- /* `separator`: a text separator in place of the chevron. The chevron's own
38209
- element stays (it carries NcBreadcrumbs' spacing and its "no separator after
38210
- the last crumb" rule); only its icon gives way to the text. */
38211
- .cn-breadcrumbs--text-separator[data-v-54c3381a] .vue-crumb__separator svg {
38212
- display: none;
38213
- }
38214
- .cn-breadcrumbs--text-separator[data-v-54c3381a] .vue-crumb__separator::before {
38215
- content: var(--cn-breadcrumbs-separator);
38216
- padding-inline: var(--cn-breadcrumbs-separator-gap, 0);
38217
- color: var(--color-text-maxcontrast);
38218
- }
38219
-
38220
-
38221
38353
  .cn-relation-link[data-v-6559b00a] {
38222
38354
  padding: 20px;
38223
38355
  display: flex;
@@ -38651,7 +38783,7 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38651
38783
  }
38652
38784
 
38653
38785
 
38654
- .cn-dashboard-page[data-v-582eaf2c] {
38786
+ .cn-dashboard-page[data-v-4f9a30ca] {
38655
38787
  padding: 20px;
38656
38788
  max-width: 1800px;
38657
38789
  /* Centre the leftover space once the cap engages, so a wide screen shows
@@ -38665,7 +38797,7 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38665
38797
  overflow-y: auto;
38666
38798
  box-sizing: border-box;
38667
38799
  }
38668
- .cn-dashboard-page__header[data-v-582eaf2c] {
38800
+ .cn-dashboard-page__header[data-v-4f9a30ca] {
38669
38801
  display: flex;
38670
38802
  justify-content: space-between;
38671
38803
  align-items: flex-start;
@@ -38677,21 +38809,21 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38677
38809
  room. Only the HEADER shifts right — body widgets keep full width. */
38678
38810
  padding-inline-start: 56px;
38679
38811
  }
38680
- .cn-dashboard-page__header-left[data-v-582eaf2c] {
38812
+ .cn-dashboard-page__header-left[data-v-4f9a30ca] {
38681
38813
  min-width: 0;
38682
38814
  }
38683
- .cn-dashboard-page__title-row[data-v-582eaf2c] {
38815
+ .cn-dashboard-page__title-row[data-v-4f9a30ca] {
38684
38816
  display: flex;
38685
38817
  align-items: center;
38686
38818
  flex-wrap: wrap;
38687
38819
  gap: 12px;
38688
38820
  }
38689
- .cn-dashboard-page__title[data-v-582eaf2c] {
38821
+ .cn-dashboard-page__title[data-v-4f9a30ca] {
38690
38822
  margin: 0;
38691
38823
  font-size: 20px;
38692
38824
  font-weight: 700;
38693
38825
  }
38694
- .cn-dashboard-page__description[data-v-582eaf2c] {
38826
+ .cn-dashboard-page__description[data-v-4f9a30ca] {
38695
38827
  margin: 4px 0 0;
38696
38828
  font-size: 14px;
38697
38829
  color: var(--color-text-maxcontrast);
@@ -38699,19 +38831,19 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38699
38831
 
38700
38832
  /* Board look (screens-dashboard-parity): h1 28/700, a 15px grey subtitle 6px
38701
38833
  under it, and 40px buttons with a 10px gap. */
38702
- .cn-dashboard-page--board .cn-dashboard-page__title[data-v-582eaf2c] {
38834
+ .cn-dashboard-page--board .cn-dashboard-page__title[data-v-4f9a30ca] {
38703
38835
  font-size: 28px;
38704
38836
  font-weight: 700;
38705
38837
  line-height: 1.2;
38706
38838
  }
38707
- .cn-dashboard-page--board .cn-dashboard-page__description[data-v-582eaf2c] {
38839
+ .cn-dashboard-page--board .cn-dashboard-page__description[data-v-4f9a30ca] {
38708
38840
  margin: 6px 0 0;
38709
38841
  font-size: 15px;
38710
38842
  }
38711
- .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-582eaf2c] {
38843
+ .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-4f9a30ca] {
38712
38844
  gap: 10px;
38713
38845
  }
38714
- .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-582eaf2c] .button-vue {
38846
+ .cn-dashboard-page--board .cn-dashboard-page__header-actions[data-v-4f9a30ca] .button-vue {
38715
38847
  min-height: var(--cn-board-control-height, 40px);
38716
38848
  height: var(--cn-board-control-height, 40px);
38717
38849
  }
@@ -38719,17 +38851,17 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38719
38851
  /* The switch row under the header (screens-dashboard-greeting-header): the
38720
38852
  view switch left, the `viewLinks` pills right (DqMijnWerk: pills 34px high,
38721
38853
  radius 17, 13px/600, a 14px icon, primary light on primary deep). */
38722
- .cn-dashboard-page__switch-row[data-v-582eaf2c] {
38854
+ .cn-dashboard-page__switch-row[data-v-4f9a30ca] {
38723
38855
  display: flex;
38724
38856
  flex-wrap: wrap;
38725
38857
  align-items: center;
38726
38858
  gap: 10px;
38727
38859
  margin-bottom: var(--cn-board-section-gap, 20px);
38728
38860
  }
38729
- .cn-dashboard-page__switch-row-spacer[data-v-582eaf2c] {
38861
+ .cn-dashboard-page__switch-row-spacer[data-v-4f9a30ca] {
38730
38862
  flex: 1 1 auto;
38731
38863
  }
38732
- .cn-dashboard-page__view-link[data-v-582eaf2c] {
38864
+ .cn-dashboard-page__view-link[data-v-4f9a30ca] {
38733
38865
  display: inline-flex;
38734
38866
  align-items: center;
38735
38867
  gap: 6px;
@@ -38743,29 +38875,37 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38743
38875
  white-space: nowrap;
38744
38876
  text-decoration: none !important;
38745
38877
  }
38746
- .cn-dashboard-page__view-link[data-v-582eaf2c]:hover {
38878
+ .cn-dashboard-page__view-link[data-v-4f9a30ca]:hover {
38747
38879
  background: var(--color-primary-element-light-hover, var(--color-primary-element-light));
38748
38880
  }
38749
- .cn-dashboard-page__view-link[data-v-582eaf2c]:focus-visible {
38881
+ .cn-dashboard-page__view-link[data-v-4f9a30ca]:focus-visible {
38750
38882
  outline: 2px solid var(--color-main-text);
38751
38883
  outline-offset: 2px;
38752
38884
  }
38753
- .cn-dashboard-page__view-link-icon[data-v-582eaf2c] {
38885
+ .cn-dashboard-page__view-link-icon[data-v-4f9a30ca] {
38754
38886
  display: inline-flex;
38755
38887
  }
38756
38888
 
38757
38889
  /* The period group, in a row of its own between the header and the KPI row. */
38758
- .cn-dashboard-page__date-range--segmented[data-v-582eaf2c] {
38890
+ .cn-dashboard-page__date-range--segmented[data-v-4f9a30ca] {
38759
38891
  margin-bottom: 16px;
38760
38892
  }
38761
- .cn-dashboard-page__date-segmented[data-v-582eaf2c] {
38893
+
38894
+ /* The period group at the end of the description line. */
38895
+ .cn-dashboard-page__description--with-period[data-v-4f9a30ca] {
38896
+ align-items: center;
38897
+ display: flex;
38898
+ flex-wrap: wrap;
38899
+ gap: 8px;
38900
+ }
38901
+ .cn-dashboard-page__date-segmented[data-v-4f9a30ca] {
38762
38902
  display: flex;
38763
38903
  align-items: center;
38764
38904
  gap: 8px;
38765
38905
  }
38766
38906
 
38767
38907
  /* The KPI row above the grid: tiles are cells of the auto-fit grid. */
38768
- .cn-dashboard-page__kpi-row[data-v-582eaf2c] {
38908
+ .cn-dashboard-page__kpi-row[data-v-4f9a30ca] {
38769
38909
  margin-bottom: var(--cn-board-section-gap, 16px);
38770
38910
  }
38771
38911
 
@@ -38773,15 +38913,15 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38773
38913
  the cards started a margin to the right of the KPI row and the header. The
38774
38914
  grid reaches out by that margin, so the card edges line up with the page's
38775
38915
  (dashboard-grid-flush). */
38776
- .cn-dashboard-page--board[data-v-582eaf2c] .cn-dashboard-grid {
38916
+ .cn-dashboard-page--board[data-v-4f9a30ca] .cn-dashboard-grid {
38777
38917
  width: auto;
38778
38918
  margin-inline: calc(-1 * var(--cn-dashboard-grid-margin, 12px));
38779
38919
  }
38780
- .cn-dashboard-page__kpi-cell[data-v-582eaf2c] {
38920
+ .cn-dashboard-page__kpi-cell[data-v-4f9a30ca] {
38781
38921
  display: flex;
38782
38922
  min-width: 0;
38783
38923
  }
38784
- .cn-dashboard-page__kpi-cell[data-v-582eaf2c] > * {
38924
+ .cn-dashboard-page__kpi-cell[data-v-4f9a30ca] > * {
38785
38925
  flex: 1 1 auto;
38786
38926
  min-width: 0;
38787
38927
  }
@@ -38794,7 +38934,7 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38794
38934
  scoped chip rules then silently don't match and the chip collapses into
38795
38935
  NcActions' ~30px icon slot (text wraps to "Last / 30 / days"). The
38796
38936
  data-testid is stable across chunks, so those rules match regardless. */
38797
- .cn-dashboard-page__header-actions[data-v-582eaf2c] {
38937
+ .cn-dashboard-page__header-actions[data-v-4f9a30ca] {
38798
38938
  display: flex;
38799
38939
  align-items: center;
38800
38940
  gap: 8px;
@@ -38810,19 +38950,19 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38810
38950
 
38811
38951
  /* Date-range header band. Kept compact so it doesn't open a tall gap
38812
38952
  above the grid; the pills variant is a single tidy toggle row. */
38813
- .cn-dashboard-page__date-range[data-v-582eaf2c] {
38953
+ .cn-dashboard-page__date-range[data-v-4f9a30ca] {
38814
38954
  margin-bottom: 12px;
38815
38955
  }
38816
- .cn-dashboard-page__date-range--pills[data-v-582eaf2c] {
38956
+ .cn-dashboard-page__date-range--pills[data-v-4f9a30ca] {
38817
38957
  margin-bottom: 8px;
38818
38958
  }
38819
- .cn-dashboard-page__date-pills[data-v-582eaf2c] {
38959
+ .cn-dashboard-page__date-pills[data-v-4f9a30ca] {
38820
38960
  display: flex;
38821
38961
  align-items: center;
38822
38962
  flex-wrap: wrap;
38823
38963
  gap: 6px;
38824
38964
  }
38825
- .cn-dashboard-page__date-pill[data-v-582eaf2c] {
38965
+ .cn-dashboard-page__date-pill[data-v-4f9a30ca] {
38826
38966
  display: inline-flex;
38827
38967
  align-items: center;
38828
38968
  padding: 5px 14px;
@@ -38837,77 +38977,77 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38837
38977
  cursor: pointer;
38838
38978
  transition: background-color 100ms ease, border-color 100ms ease, color 100ms ease;
38839
38979
  }
38840
- .cn-dashboard-page__date-pill[data-v-582eaf2c]:hover {
38980
+ .cn-dashboard-page__date-pill[data-v-4f9a30ca]:hover {
38841
38981
  background: var(--color-background-hover);
38842
38982
  }
38843
- .cn-dashboard-page__date-pill[data-v-582eaf2c]:focus-visible {
38983
+ .cn-dashboard-page__date-pill[data-v-4f9a30ca]:focus-visible {
38844
38984
  outline: 2px solid var(--color-primary-element);
38845
38985
  outline-offset: 2px;
38846
38986
  }
38847
- .cn-dashboard-page__date-pill--active[data-v-582eaf2c] {
38987
+ .cn-dashboard-page__date-pill--active[data-v-4f9a30ca] {
38848
38988
  background: var(--color-primary-element);
38849
38989
  border-color: var(--color-primary-element);
38850
38990
  color: var(--color-primary-element-text);
38851
38991
  }
38852
- .cn-dashboard-page__date-pill--active[data-v-582eaf2c]:hover {
38992
+ .cn-dashboard-page__date-pill--active[data-v-4f9a30ca]:hover {
38853
38993
  background: var(--color-primary-element-hover, var(--color-primary-element));
38854
38994
  }
38855
38995
 
38856
38996
  /* The custom-range pill is de-emphasised — dashed outline, muted text —
38857
38997
  so it reads as an escape hatch rather than a primary option. */
38858
- .cn-dashboard-page__date-pill--custom[data-v-582eaf2c] {
38998
+ .cn-dashboard-page__date-pill--custom[data-v-4f9a30ca] {
38859
38999
  border-style: dashed;
38860
39000
  color: var(--color-text-maxcontrast);
38861
39001
  }
38862
- .cn-dashboard-page__date-pill-custom[data-v-582eaf2c] .action-item__menutoggle {
39002
+ .cn-dashboard-page__date-pill-custom[data-v-4f9a30ca] .action-item__menutoggle {
38863
39003
  min-width: 0;
38864
39004
  min-height: 0;
38865
39005
  padding: 0;
38866
39006
  background: transparent;
38867
39007
  border: none;
38868
39008
  }
38869
- .cn-dashboard-page__date-pill-custom[data-v-582eaf2c] .button-vue,
38870
- .cn-dashboard-page__date-pill-custom[data-v-582eaf2c] .button-vue__wrapper,
38871
- .cn-dashboard-page__date-pill-custom[data-v-582eaf2c] .button-vue__icon {
39009
+ .cn-dashboard-page__date-pill-custom[data-v-4f9a30ca] .button-vue,
39010
+ .cn-dashboard-page__date-pill-custom[data-v-4f9a30ca] .button-vue__wrapper,
39011
+ .cn-dashboard-page__date-pill-custom[data-v-4f9a30ca] .button-vue__icon {
38872
39012
  width: auto !important;
38873
39013
  min-width: 0 !important;
38874
39014
  overflow: visible !important;
38875
39015
  }
38876
- .cn-dashboard-page__empty[data-v-582eaf2c] {
39016
+ .cn-dashboard-page__empty[data-v-4f9a30ca] {
38877
39017
  padding: 60px 20px;
38878
39018
  }
38879
39019
 
38880
39020
  /* The page's view switch on a page without a header row: at the end of its
38881
39021
  own row, above the grids, where the header would have put it. */
38882
- .cn-dashboard-page__view-switch[data-v-582eaf2c] {
39022
+ .cn-dashboard-page__view-switch[data-v-4f9a30ca] {
38883
39023
  display: flex;
38884
39024
  justify-content: flex-end;
38885
39025
  margin-bottom: 12px;
38886
39026
  }
38887
39027
 
38888
39028
  /* A view the switch shows with nothing to draw. */
38889
- .cn-page-view-region--empty[data-v-582eaf2c] {
39029
+ .cn-page-view-region--empty[data-v-4f9a30ca] {
38890
39030
  padding: 40px 20px;
38891
39031
  }
38892
- .cn-dashboard-page__page-filters[data-v-582eaf2c] {
39032
+ .cn-dashboard-page__page-filters[data-v-4f9a30ca] {
38893
39033
  display: flex;
38894
39034
  flex-wrap: wrap;
38895
39035
  gap: 16px;
38896
39036
  align-items: flex-end;
38897
39037
  margin-bottom: 12px;
38898
39038
  }
38899
- .cn-dashboard-page__page-filter[data-v-582eaf2c] {
39039
+ .cn-dashboard-page__page-filter[data-v-4f9a30ca] {
38900
39040
  display: flex;
38901
39041
  flex-direction: column;
38902
39042
  gap: 4px;
38903
39043
  min-width: 200px;
38904
39044
  }
38905
- .cn-dashboard-page__page-filter-label[data-v-582eaf2c] {
39045
+ .cn-dashboard-page__page-filter-label[data-v-4f9a30ca] {
38906
39046
  font-size: 0.85em;
38907
39047
  font-weight: 600;
38908
39048
  color: var(--color-text-maxcontrast);
38909
39049
  }
38910
- .cn-dashboard-page__widget-edit[data-v-582eaf2c] {
39050
+ .cn-dashboard-page__widget-edit[data-v-4f9a30ca] {
38911
39051
  position: absolute;
38912
39052
  top: 4px;
38913
39053
  inset-inline-end: 4px;
@@ -38926,8 +39066,8 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38926
39066
  and centre the card. */
38927
39067
  /* `safe` centre so an overflowing tile does not spill out of the top, where
38928
39068
  flex overflow cannot be scrolled back to. Same as detail-page.css. */
38929
- .cn-dashboard-page__card-fit[data-v-582eaf2c] .cn-widget-wrapper__content,
38930
- .cn-dashboard-page__card-fit.cn-widget-wrapper--flush[data-v-582eaf2c] .cn-widget-wrapper__content {
39069
+ .cn-dashboard-page__card-fit[data-v-4f9a30ca] .cn-widget-wrapper__content,
39070
+ .cn-dashboard-page__card-fit.cn-widget-wrapper--flush[data-v-4f9a30ca] .cn-widget-wrapper__content {
38931
39071
  overflow: hidden;
38932
39072
  display: flex;
38933
39073
  flex-direction: column;
@@ -38943,7 +39083,7 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38943
39083
  shows up as a scrollbar the user has to drag to see the whole graph. Same
38944
39084
  shape as the card-fit rule above, minus the padding: chart tiles render
38945
39085
  `flush`, and apexcharts already draws its own margins. */
38946
- .cn-dashboard-page__chart-fit[data-v-582eaf2c] .cn-widget-wrapper__content {
39086
+ .cn-dashboard-page__chart-fit[data-v-4f9a30ca] .cn-widget-wrapper__content {
38947
39087
  overflow: hidden;
38948
39088
  display: flex;
38949
39089
  flex-direction: column;
@@ -38953,13 +39093,13 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38953
39093
  /* Card content (stat / gauge / delta) must fit the tile width: let the
38954
39094
  widget shrink and its value/label truncate instead of pushing past the
38955
39095
  tile edge (the horizontal clip on long currency values). */
38956
- .cn-dashboard-page__card-fit[data-v-582eaf2c] .cn-stat-widget,
38957
- .cn-dashboard-page__card-fit[data-v-582eaf2c] .cn-gauge-widget,
38958
- .cn-dashboard-page__card-fit[data-v-582eaf2c] .cn-delta-widget {
39096
+ .cn-dashboard-page__card-fit[data-v-4f9a30ca] .cn-stat-widget,
39097
+ .cn-dashboard-page__card-fit[data-v-4f9a30ca] .cn-gauge-widget,
39098
+ .cn-dashboard-page__card-fit[data-v-4f9a30ca] .cn-delta-widget {
38959
39099
  min-width: 0;
38960
39100
  max-width: 100%;
38961
39101
  }
38962
- .cn-dashboard-page__unknown[data-v-582eaf2c] {
39102
+ .cn-dashboard-page__unknown[data-v-4f9a30ca] {
38963
39103
  display: flex;
38964
39104
  align-items: center;
38965
39105
  justify-content: center;
@@ -38970,31 +39110,31 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
38970
39110
  }
38971
39111
 
38972
39112
  /* widget-ref content items */
38973
- .cn-dashboard-page__content[data-v-582eaf2c] {
39113
+ .cn-dashboard-page__content[data-v-4f9a30ca] {
38974
39114
  display: flex;
38975
39115
  flex-direction: column;
38976
39116
  gap: 16px;
38977
39117
  }
38978
- .cn-dashboard-page__content-item[data-v-582eaf2c] {
39118
+ .cn-dashboard-page__content-item[data-v-4f9a30ca] {
38979
39119
  width: 100%;
38980
39120
  }
38981
39121
  /* On a phone (screens-dashboard-phone) the touch targets of a board dashboard
38982
39122
  are 44px: the widget Actions menu and the KPI tiles. */
38983
39123
  @media (max-width: 640px) {
38984
- .cn-dashboard-page--board[data-v-582eaf2c] .cn-widget-wrapper__actions .action-item__menutoggle,
38985
- .cn-dashboard-page--board[data-v-582eaf2c] .cn-widget-wrapper__actions .button-vue {
39124
+ .cn-dashboard-page--board[data-v-4f9a30ca] .cn-widget-wrapper__actions .action-item__menutoggle,
39125
+ .cn-dashboard-page--board[data-v-4f9a30ca] .cn-widget-wrapper__actions .button-vue {
38986
39126
  min-height: 44px;
38987
39127
  }
38988
- .cn-dashboard-page--board .cn-dashboard-page__kpi-cell[data-v-582eaf2c] {
39128
+ .cn-dashboard-page--board .cn-dashboard-page__kpi-cell[data-v-4f9a30ca] {
38989
39129
  min-height: 44px;
38990
39130
  }
38991
39131
 
38992
39132
  /* The widget Actions menu shows its icon only, so the card title keeps
38993
39133
  the room; the name stays for assistive tech. */
38994
- .cn-dashboard-page--board[data-v-582eaf2c] .cn-widget-wrapper__actions .action-item__menutoggle {
39134
+ .cn-dashboard-page--board[data-v-4f9a30ca] .cn-widget-wrapper__actions .action-item__menutoggle {
38995
39135
  min-width: 44px;
38996
39136
  }
38997
- .cn-dashboard-page--board[data-v-582eaf2c] .cn-widget-wrapper__actions .action-item__menutoggle .button-vue__text {
39137
+ .cn-dashboard-page--board[data-v-4f9a30ca] .cn-widget-wrapper__actions .action-item__menutoggle .button-vue__text {
38998
39138
  position: absolute;
38999
39139
  width: 1px;
39000
39140
  height: 1px;
@@ -39006,7 +39146,7 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
39006
39146
 
39007
39147
  /* What a registry widget reports for its card header (`header` event): the
39008
39148
  note beside the link ("3 in total") and one action, as on a detail page. */
39009
- .cn-dashboard-page__widget-count[data-v-582eaf2c] {
39149
+ .cn-dashboard-page__widget-count[data-v-4f9a30ca] {
39010
39150
  align-self: center;
39011
39151
  padding: 1px 8px;
39012
39152
  border-radius: 10px;
@@ -39015,13 +39155,13 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
39015
39155
  font-size: 13px;
39016
39156
  font-weight: 600;
39017
39157
  }
39018
- .cn-dashboard-page__widget-note[data-v-582eaf2c] {
39158
+ .cn-dashboard-page__widget-note[data-v-4f9a30ca] {
39019
39159
  align-self: center;
39020
39160
  color: var(--color-text-maxcontrast);
39021
39161
  font-size: 14px;
39022
39162
  white-space: nowrap;
39023
39163
  }
39024
- .cn-dashboard-page__widget-action[data-v-582eaf2c] {
39164
+ .cn-dashboard-page__widget-action[data-v-4f9a30ca] {
39025
39165
  display: inline-flex;
39026
39166
  align-items: center;
39027
39167
  align-self: center;
@@ -39037,7 +39177,7 @@ button.cn-object-calendar__overflow[data-v-e1c69ee2] {
39037
39177
  white-space: nowrap;
39038
39178
  cursor: pointer;
39039
39179
  }
39040
- .cn-dashboard-page__widget-action[data-v-582eaf2c]:focus-visible {
39180
+ .cn-dashboard-page__widget-action[data-v-4f9a30ca]:focus-visible {
39041
39181
  outline: 2px solid var(--color-primary-element);
39042
39182
  outline-offset: 2px;
39043
39183
  }
@@ -41089,21 +41229,21 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
41089
41229
 
41090
41230
 
41091
41231
  /* The section wrapper draws no box; the board look makes it the card grid. */
41092
- .cn-settings-page__sections[data-v-04e49f77] {
41232
+ .cn-settings-page__sections[data-v-50865bde] {
41093
41233
  display: contents;
41094
41234
  }
41095
- .cn-settings-page__header-buttons[data-v-04e49f77] {
41235
+ .cn-settings-page__header-buttons[data-v-50865bde] {
41096
41236
  display: flex;
41097
41237
  align-items: center;
41098
41238
  gap: 10px;
41099
41239
  margin-inline-start: auto;
41100
41240
  }
41101
- .cn-settings-page[data-v-04e49f77] {
41241
+ .cn-settings-page[data-v-50865bde] {
41102
41242
  display: flex;
41103
41243
  flex-direction: column;
41104
41244
  gap: 16px;
41105
41245
  }
41106
- .cn-settings-page__actions[data-v-04e49f77] {
41246
+ .cn-settings-page__actions[data-v-50865bde] {
41107
41247
  display: flex;
41108
41248
  justify-content: flex-end;
41109
41249
  gap: 8px;
@@ -41114,7 +41254,7 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
41114
41254
  * orchestration REQ-MSO-5). Uses Nextcloud CSS variables only — no
41115
41255
  * hex literals, no rgba overrides on the elements themselves.
41116
41256
  */
41117
- .cn-settings-page__tabs[data-v-04e49f77] {
41257
+ .cn-settings-page__tabs[data-v-50865bde] {
41118
41258
  display: flex;
41119
41259
  flex-wrap: wrap;
41120
41260
  gap: 4px;
@@ -41122,7 +41262,7 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
41122
41262
  padding-bottom: 0;
41123
41263
  margin-bottom: 8px;
41124
41264
  }
41125
- .cn-settings-page__tab[data-v-04e49f77] {
41265
+ .cn-settings-page__tab[data-v-50865bde] {
41126
41266
  background: transparent;
41127
41267
  border: 0;
41128
41268
  border-bottom: 3px solid transparent;
@@ -41134,52 +41274,52 @@ a.cn-integration-card__title[data-v-093a874d]:hover {
41134
41274
  border-radius: var(--border-radius-large) var(--border-radius-large) 0 0;
41135
41275
  transition: background-color 0.1s ease-in-out, color 0.1s ease-in-out, border-color 0.1s ease-in-out;
41136
41276
  }
41137
- .cn-settings-page__tab[data-v-04e49f77]:hover,
41138
- .cn-settings-page__tab[data-v-04e49f77]:focus-visible {
41277
+ .cn-settings-page__tab[data-v-50865bde]:hover,
41278
+ .cn-settings-page__tab[data-v-50865bde]:focus-visible {
41139
41279
  background-color: var(--color-background-hover);
41140
41280
  color: var(--color-main-text);
41141
41281
  outline: none;
41142
41282
  }
41143
- .cn-settings-page__tab--active[data-v-04e49f77] {
41283
+ .cn-settings-page__tab--active[data-v-50865bde] {
41144
41284
  color: var(--color-primary-element);
41145
41285
  border-bottom-color: var(--color-primary-element);
41146
41286
  font-weight: bold;
41147
41287
  }
41148
41288
  @media (max-width: 768px) {
41149
- .cn-settings-page__tabs[data-v-04e49f77] {
41289
+ .cn-settings-page__tabs[data-v-50865bde] {
41150
41290
  flex-direction: column;
41151
41291
  gap: 0;
41152
41292
  border-bottom: 0;
41153
41293
  }
41154
- .cn-settings-page__tab[data-v-04e49f77] {
41294
+ .cn-settings-page__tab[data-v-50865bde] {
41155
41295
  border-bottom: 1px solid var(--color-border);
41156
41296
  border-radius: 0;
41157
41297
  text-align: left;
41158
41298
  }
41159
- .cn-settings-page__tab--active[data-v-04e49f77] {
41299
+ .cn-settings-page__tab--active[data-v-50865bde] {
41160
41300
  border-bottom-width: 1px;
41161
41301
  background-color: var(--color-background-hover);
41162
41302
  }
41163
41303
  }
41164
- .cn-settings-page__fields[data-v-04e49f77] {
41304
+ .cn-settings-page__fields[data-v-50865bde] {
41165
41305
  display: flex;
41166
41306
  flex-direction: column;
41167
41307
  gap: 12px;
41168
41308
  }
41169
- .cn-settings-page__field[data-v-04e49f77] {
41309
+ .cn-settings-page__field[data-v-50865bde] {
41170
41310
  display: flex;
41171
41311
  flex-direction: column;
41172
41312
  gap: 4px;
41173
41313
  }
41174
- .cn-settings-page__field-help[data-v-04e49f77] {
41314
+ .cn-settings-page__field-help[data-v-50865bde] {
41175
41315
  color: var(--color-text-maxcontrast);
41176
41316
  }
41177
- .cn-settings-page__save-bar[data-v-04e49f77] {
41317
+ .cn-settings-page__save-bar[data-v-50865bde] {
41178
41318
  display: flex;
41179
41319
  gap: 8px;
41180
41320
  margin-top: 16px;
41181
41321
  }
41182
- .cn-settings-page__error[data-v-04e49f77] {
41322
+ .cn-settings-page__error[data-v-50865bde] {
41183
41323
  color: var(--color-error);
41184
41324
  background: var(--color-error-light, var(--color-background-hover));
41185
41325
  padding: 8px 12px;