domma-js 0.19.0 → 0.19.2

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.
@@ -1,240 +1,21 @@
1
1
  /*!
2
- * Domma Data-Focused CSS Bundle v0.19.0
2
+ * Domma Data-Focused CSS Bundle v0.19.2
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-03-04T12:17:54.970Z
5
+ * Built: 2026-03-06T13:45:54.225Z
6
6
  */
7
7
 
8
- /* ============================================
9
- GRAYVE THEME
10
- Bootswatch Slate theme adaptation
11
- ============================================ */
12
-
13
- .dm-theme-grayve {
14
- color-scheme: dark; /* Slate is typically a dark theme */
15
-
16
- /* Tailwind-based color palette - adapting for grayve */
17
- /* Slate (using bootswatch values) */
18
- --dm-slate-50: #F8F9FA; /* Off-white */
19
- --dm-slate-100: #E9ECEF;
20
- --dm-slate-200: #DEE2E6;
21
- --dm-slate-300: #CED4DA;
22
- --dm-slate-400: #ADB5BD;
23
- --dm-slate-500: #6C757D; /* Medium Gray */
24
- --dm-slate-600: #495057;
25
- --dm-slate-700: #343A40;
26
- --dm-slate-800: #212529;
27
- --dm-slate-900: #1a1e21; /* Dark Gray */
28
- --dm-slate-950: #141619; /* Very Dark Gray */
29
-
30
- /* Blues (for primary/info, etc.) */
31
- --dm-blue-50: #e0f7fa;
32
- --dm-blue-100: #b2ebf2;
33
- --dm-blue-200: #80deea;
34
- --dm-blue-300: #4dd0e1;
35
- --dm-blue-400: #26c6da;
36
- --dm-blue-500: #00bcd4; /* Bootswatch primary might be close to this or lighter */
37
- --dm-blue-600: #00acc1;
38
- --dm-blue-700: #0097a7;
39
- --dm-blue-800: #00838f;
40
- --dm-blue-900: #006064;
41
- --dm-blue-950: #004d40;
42
-
43
- /* Green (Success) */
44
- --dm-green-500: #28a745;
45
- --dm-green-400: #49cc61;
46
- --dm-green-300: #6fd180;
47
- --dm-green-600: #218838;
48
-
49
- /* Red (Danger) */
50
- --dm-red-500: #dc3545;
51
- --dm-red-400: #e35a67;
52
- --dm-red-300: #eb808a;
53
- --dm-red-600: #c82333;
54
-
55
- /* Amber (Warning) */
56
- --dm-amber-500: #ffc107;
57
- --dm-amber-400: #ffcd38;
58
- --dm-amber-300: #ffd865;
59
- --dm-amber-600: #e0a800;
60
-
61
- /* Sky (Info - often similar to primary but distinct) */
62
- --dm-sky-500: #17a2b8;
63
- --dm-sky-400: #26d2e9;
64
- --dm-sky-300: #51daec;
65
- --dm-sky-600: #138496;
66
-
67
- /* Semantic colors */
68
- --dm-background: var(--dm-slate-900);
69
- --dm-background-alt: var(--dm-slate-800);
70
- --dm-surface: var(--dm-slate-800);
71
- --dm-surface-raised: var(--dm-slate-700);
72
- --dm-surface-overlay: rgba(0, 0, 0, 0.7);
73
-
74
- /* Text */
75
- --dm-text: var(--dm-slate-200);
76
- --dm-text-secondary: var(--dm-slate-400);
77
- --dm-text-muted: var(--dm-slate-500);
78
- --dm-text-disabled: var(--dm-slate-600);
79
- --dm-text-inverse: var(--dm-slate-900);
80
-
81
- /* Borders */
82
- --dm-border: var(--dm-slate-700);
83
- --dm-border-light: var(--dm-slate-800);
84
- --dm-border-dark: var(--dm-slate-600);
85
- --dm-border-focus: var(--dm-blue-500); /* Use a vibrant blue for focus */
86
- --dm-focus-ring: rgba(0, 188, 212, 0.3); /* Based on dm-blue-500 */
87
- --dm-focus-ring-danger: rgba(220, 53, 69, 0.3); /* Based on dm-red-500 */
88
-
89
- /* Interactive States */
90
- --dm-hover-bg: rgba(255, 255, 255, 0.07);
91
- --dm-active-bg: rgba(255, 255, 255, 0.1);
92
- --dm-selected-bg: var(--dm-blue-600);
93
- --dm-disabled-opacity: 0.4;
94
-
95
- /* Brand Colors */
96
- --dm-primary: var(--dm-blue-500);
97
- --dm-primary-dark: var(--dm-blue-700);
98
- --dm-primary-light: var(--dm-blue-300);
99
- --dm-primary-hover: var(--dm-blue-400);
100
- --dm-primary-active: var(--dm-blue-600);
101
-
102
- --dm-secondary: var(--dm-slate-500);
103
- --dm-secondary-hover: var(--dm-slate-400);
104
- --dm-secondary-active: var(--dm-slate-300);
105
-
106
- /* Status Colors */
107
- --dm-success: var(--dm-green-500);
108
- --dm-success-hover: var(--dm-green-400);
109
- --dm-success-active: var(--dm-green-600);
110
- --dm-success-light: rgba(40, 167, 69, 0.2);
111
- --dm-success-dark: var(--dm-green-600);
112
-
113
- --dm-danger: var(--dm-red-500);
114
- --dm-danger-hover: var(--dm-red-400);
115
- --dm-danger-active: var(--dm-red-600);
116
- --dm-danger-light: rgba(220, 53, 69, 0.2);
117
- --dm-danger-dark: var(--dm-red-600);
118
-
119
- --dm-warning: var(--dm-amber-400);
120
- --dm-warning-hover: var(--dm-amber-300);
121
- --dm-warning-active: var(--dm-amber-500);
122
- --dm-warning-text: var(--dm-amber-900);
123
- --dm-warning-light: rgba(255, 193, 7, 0.2);
124
- --dm-warning-dark: var(--dm-amber-600);
125
-
126
- --dm-info: var(--dm-sky-500);
127
- --dm-info-hover: var(--dm-sky-400);
128
- --dm-info-active: var(--dm-sky-600);
129
- --dm-info-light: rgba(23, 162, 184, 0.2);
130
- --dm-info-dark: var(--dm-sky-600);
131
-
132
- /* Background Tints */
133
- --dm-primary-bg: rgba(0, 188, 212, 0.15);
134
- --dm-secondary-bg: rgba(108, 117, 125, 0.15);
135
- --dm-success-bg: rgba(40, 167, 69, 0.15);
136
- --dm-danger-bg: rgba(220, 53, 69, 0.15);
137
- --dm-warning-bg: rgba(255, 193, 7, 0.15);
138
- --dm-info-bg: rgba(23, 162, 184, 0.15);
139
-
140
- /* Semantic Surface Colors */
141
- --dm-surface-secondary: var(--dm-slate-900);
142
- --dm-card-bg: var(--dm-slate-800);
143
- --dm-card-border: var(--dm-slate-700);
144
-
145
- /* Legacy color names (kept for backwards compatibility) */
146
- --dm-light: var(--dm-slate-200);
147
- --dm-dark: var(--dm-slate-800);
148
- --dm-white: #ffffff;
149
- --dm-black: #000000;
150
-
151
- /* Grays (mapped to Slate) */
152
- --dm-gray-50: var(--dm-slate-50);
153
- --dm-gray-100: var(--dm-slate-100);
154
- --dm-gray-200: var(--dm-slate-200);
155
- --dm-gray-300: var(--dm-slate-300);
156
- --dm-gray-400: var(--dm-slate-400);
157
- --dm-gray-500: var(--dm-slate-500);
158
- --dm-gray-600: var(--dm-slate-600);
159
- --dm-gray-700: var(--dm-slate-700);
160
- --dm-gray-800: var(--dm-slate-800);
161
- --dm-gray-900: var(--dm-slate-900);
162
- --dm-gray-950: var(--dm-slate-950);
163
-
164
- /* Component-specific variables */
165
- --dm-input-bg: var(--dm-surface);
166
- --dm-input-border: var(--dm-border-dark);
167
- --dm-input-text: var(--dm-text);
168
- --dm-input-placeholder: var(--dm-text-muted);
169
- --dm-input-focus-border: var(--dm-primary);
170
- --dm-input-disabled-bg: var(--dm-slate-800);
171
-
172
- --dm-table-border: var(--dm-border);
173
- --dm-table-hover-bg: var(--dm-hover-bg);
174
- --dm-table-stripe-bg: rgba(255, 255, 255, 0.03);
175
-
176
- --dm-navbar-bg: var(--dm-surface);
177
- --dm-navbar-text: var(--dm-text);
178
- --dm-navbar-border: var(--dm-border);
179
-
180
- --dm-dropdown-bg: var(--dm-surface-raised);
181
- --dm-dropdown-border: var(--dm-border);
182
- --dm-dropdown-item-hover: var(--dm-hover-bg);
183
- --dm-dropdown-item-active: var(--dm-selected-bg);
184
-
185
- --dm-sidebar-bg: var(--dm-surface);
186
- --dm-sidebar-border: var(--dm-border);
187
- --dm-sidebar-item-hover: var(--dm-hover-bg);
188
- --dm-sidebar-item-active: var(--dm-selected-bg);
189
-
190
- --dm-autocomplete-bg: var(--dm-surface);
191
- --dm-autocomplete-border: var(--dm-border);
192
- --dm-autocomplete-shadow: var(--dm-shadow-md);
193
- --dm-autocomplete-item-hover: var(--dm-hover-bg);
194
- --dm-autocomplete-item-active: var(--dm-selected-bg);
195
- --dm-autocomplete-highlight: var(--dm-primary-light);
196
-
197
- --dm-pillbox-bg: var(--dm-surface);
198
- --dm-pillbox-border: var(--dm-border);
199
- --dm-pill-bg: var(--dm-gray-700); /* Darker pill background for dark theme */
200
- --dm-pill-color: var(--dm-text);
201
- --dm-pill-hover-bg: var(--dm-gray-600);
202
-
203
- --dm-tab-border: var(--dm-border);
204
- --dm-tab-hover-bg: var(--dm-hover-bg);
205
- --dm-tab-active-border: var(--dm-primary);
206
- --dm-tab-active-text: var(--dm-primary);
207
-
208
- --dm-accordion-border: var(--dm-border);
209
- --dm-accordion-header-hover: var(--dm-hover-bg);
210
- }
211
-
212
- /* Syntax highlighting tokens for grayve (assuming similar to dark theme) */
213
- .dm-theme-grayve .code-block .syntax-keyword {
214
- color: #c792ea; /* Purple */
215
- font-weight: 500;
216
- }
217
-
218
- .dm-theme-grayve .code-block .syntax-string,
219
- .dm-theme-grayve .code-block .syntax-template-string {
220
- color: #c3e88d; /* Green */
221
- }
222
-
223
- .dm-theme-grayve .code-block .syntax-function {
224
- color: #82aaff; /* Light Blue */
225
- }
226
-
227
8
  /* ============================================
228
9
  DOMMA BASE CSS
229
10
  Base styles, typography, utilities
230
11
  ============================================ */
231
12
 
232
13
  /*!
233
- * Domma Core CSS v0.19.0
14
+ * Domma Core CSS v0.19.2
234
15
  * Dynamic Object Manipulation & Modeling API
235
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
236
- * Built: 2026-03-04T12:17:54.458Z
237
- * Commit: ff798af
17
+ * Built: 2026-03-06T13:45:53.797Z
18
+ * Commit: cd0754a
238
19
  */
239
20
 
240
21
  /**
@@ -4991,11 +4772,11 @@ body.dm-cloaked.dm-ready {
4991
4772
  ============================================ */
4992
4773
 
4993
4774
  /*!
4994
- * Domma Grid CSS v0.19.0
4775
+ * Domma Grid CSS v0.19.2
4995
4776
  * Dynamic Object Manipulation & Modeling API
4996
4777
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4997
- * Built: 2026-03-04T12:17:54.467Z
4998
- * Commit: ff798af
4778
+ * Built: 2026-03-06T13:45:53.809Z
4779
+ * Commit: cd0754a
4999
4780
  */
5000
4781
 
5001
4782
  /**
@@ -5616,11 +5397,11 @@ body.dm-cloaked.dm-ready {
5616
5397
  ============================================ */
5617
5398
 
5618
5399
  /*!
5619
- * Domma Elements CSS v0.19.0
5400
+ * Domma Elements CSS v0.19.2
5620
5401
  * Dynamic Object Manipulation & Modeling API
5621
5402
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5622
- * Built: 2026-03-04T12:17:54.477Z
5623
- * Commit: ff798af
5403
+ * Built: 2026-03-06T13:45:53.820Z
5404
+ * Commit: cd0754a
5624
5405
  */
5625
5406
 
5626
5407
  /**
@@ -10829,33 +10610,34 @@ code {
10829
10610
  display: flex;
10830
10611
  flex-wrap: wrap;
10831
10612
  align-items: center;
10613
+ gap: 0.5rem;
10832
10614
  padding: 0.75rem 0;
10833
10615
  margin: 0;
10834
- list-style: none;
10835
- font-size: 0.875rem;
10616
+ font-size: var(--dm-text-sm, 0.875rem);
10617
+ color: var(--dm-text-muted, #6c757d);
10836
10618
  }
10837
10619
 
10838
10620
  .dm-breadcrumbs-item {
10839
- display: flex;
10621
+ display: inline-flex;
10840
10622
  align-items: center;
10841
10623
  color: var(--dm-text-secondary);
10842
10624
  }
10843
10625
 
10844
- .dm-breadcrumbs-item + .dm-breadcrumbs-item::before {
10845
- content: '/';
10846
- padding: 0 0.5rem;
10626
+ .dm-breadcrumbs-separator {
10627
+ display: inline-flex;
10628
+ align-items: center;
10629
+ opacity: 0.5;
10847
10630
  color: var(--dm-text-muted);
10848
10631
  }
10849
10632
 
10850
10633
  .dm-breadcrumbs-link {
10851
- color: var(--dm-primary);
10634
+ color: inherit;
10852
10635
  text-decoration: none;
10853
10636
  transition: color var(--dm-transition-fast);
10854
10637
  }
10855
10638
 
10856
10639
  .dm-breadcrumbs-link:hover {
10857
- color: var(--dm-primary-hover);
10858
- text-decoration: underline;
10640
+ color: var(--dm-primary, #6495ED);
10859
10641
  }
10860
10642
 
10861
10643
  .dm-breadcrumbs-item.active {
@@ -10863,9 +10645,13 @@ code {
10863
10645
  font-weight: 500;
10864
10646
  }
10865
10647
 
10866
- .dm-breadcrumbs-item.active .dm-breadcrumbs-link {
10867
- color: inherit;
10868
- pointer-events: none;
10648
+ @media (max-width: 576px) {
10649
+ .dm-breadcrumbs-responsive .dm-breadcrumbs-item:not(:last-child):not(:first-child) {
10650
+ display: none;
10651
+ }
10652
+ .dm-breadcrumbs-responsive .dm-breadcrumbs-separator:not(:first-of-type):not(:last-of-type) {
10653
+ display: none;
10654
+ }
10869
10655
  }
10870
10656
 
10871
10657
  [data-mode="dark"] .dm-breadcrumbs-item {
@@ -10873,17 +10659,17 @@ code {
10873
10659
  }
10874
10660
 
10875
10661
  [data-mode="dark"] .dm-breadcrumbs-item.active {
10876
- color: var(--dm-text-disabled);
10877
- }
10878
-
10879
- [data-mode="dark"] .dm-breadcrumbs-link {
10880
- color: var(--dm-primary);
10662
+ color: var(--dm-text);
10881
10663
  }
10882
10664
 
10883
10665
  [data-mode="dark"] .dm-breadcrumbs-link:hover {
10884
10666
  color: var(--dm-primary-hover);
10885
10667
  }
10886
10668
 
10669
+ [data-mode="dark"] .dm-breadcrumbs-separator {
10670
+ color: var(--dm-text-muted);
10671
+ }
10672
+
10887
10673
  /* ============================================
10888
10674
  TABLE TOOLBAR COMPONENTS
10889
10675
  ============================================ */
@@ -12314,11 +12100,11 @@ code {
12314
12100
  ============================================ */
12315
12101
 
12316
12102
  /*!
12317
- * Domma Themes v0.19.0
12103
+ * Domma Themes v0.19.2
12318
12104
  * Dynamic Object Manipulation & Modeling API
12319
12105
  * (c) 2026 Darryl Waterhouse & DCBW-IT
12320
- * Built: 2026-03-04T12:17:54.419Z
12321
- * Commit: ff798af
12106
+ * Built: 2026-03-06T13:45:53.761Z
12107
+ * Commit: cd0754a
12322
12108
  */
12323
12109
 
12324
12110
  /**
@@ -16635,218 +16421,473 @@ code {
16635
16421
  --dm-elevation-4: 0 20px 25px rgba(0, 0, 0, 0.15), 0 10px 10px rgba(0, 0, 0, 0.04);
16636
16422
  }
16637
16423
 
16638
- .dm-theme-grayve {
16639
- color-scheme: dark; /* Slate is typically a dark theme */
16640
-
16641
- /* Tailwind-based color palette - adapting for grayve */
16642
- /* Slate (using bootswatch values) */
16643
- --dm-slate-50: #F8F9FA; /* Off-white */
16644
- --dm-slate-100: #E9ECEF;
16645
- --dm-slate-200: #DEE2E6;
16646
- --dm-slate-300: #CED4DA;
16647
- --dm-slate-400: #ADB5BD;
16648
- --dm-slate-500: #6C757D; /* Medium Gray */
16649
- --dm-slate-600: #495057;
16650
- --dm-slate-700: #343A40;
16651
- --dm-slate-800: #212529;
16652
- --dm-slate-900: #1a1e21; /* Dark Gray */
16653
- --dm-slate-950: #141619; /* Very Dark Gray */
16654
-
16655
- /* Blues (for primary/info, etc.) */
16656
- --dm-blue-50: #e0f7fa;
16657
- --dm-blue-100: #b2ebf2;
16658
- --dm-blue-200: #80deea;
16659
- --dm-blue-300: #4dd0e1;
16660
- --dm-blue-400: #26c6da;
16661
- --dm-blue-500: #00bcd4; /* Bootswatch primary might be close to this or lighter */
16662
- --dm-blue-600: #00acc1;
16663
- --dm-blue-700: #0097a7;
16664
- --dm-blue-800: #00838f;
16665
- --dm-blue-900: #006064;
16666
- --dm-blue-950: #004d40;
16667
-
16668
- /* Green (Success) */
16669
- --dm-green-500: #28a745;
16670
- --dm-green-400: #49cc61;
16671
- --dm-green-300: #6fd180;
16672
- --dm-green-600: #218838;
16673
-
16674
- /* Red (Danger) */
16675
- --dm-red-500: #dc3545;
16676
- --dm-red-400: #e35a67;
16677
- --dm-red-300: #eb808a;
16678
- --dm-red-600: #c82333;
16679
-
16680
- /* Amber (Warning) */
16681
- --dm-amber-500: #ffc107;
16682
- --dm-amber-400: #ffcd38;
16683
- --dm-amber-300: #ffd865;
16684
- --dm-amber-600: #e0a800;
16685
-
16686
- /* Sky (Info - often similar to primary but distinct) */
16687
- --dm-sky-500: #17a2b8;
16688
- --dm-sky-400: #26d2e9;
16689
- --dm-sky-300: #51daec;
16690
- --dm-sky-600: #138496;
16691
-
16692
- /* Semantic colors */
16693
- --dm-background: var(--dm-slate-900);
16694
- --dm-background-alt: var(--dm-slate-800);
16695
- --dm-surface: var(--dm-slate-800);
16696
- --dm-surface-raised: var(--dm-slate-700);
16697
- --dm-surface-overlay: rgba(0, 0, 0, 0.7);
16424
+ /**
16425
+ * Domma Grayve Light Theme
16426
+ * Slate/cyan monochrome palette — complementary light variant
16427
+ * Light mode variant
16428
+ */
16698
16429
 
16699
- /* Text */
16700
- --dm-text: var(--dm-slate-200);
16701
- --dm-text-secondary: var(--dm-slate-400);
16702
- --dm-text-muted: var(--dm-slate-500);
16703
- --dm-text-disabled: var(--dm-slate-600);
16704
- --dm-text-inverse: var(--dm-slate-900);
16430
+ .dm-theme-grayve-light {
16431
+ color-scheme: light;
16705
16432
 
16706
- /* Borders */
16707
- --dm-border: var(--dm-slate-700);
16708
- --dm-border-light: var(--dm-slate-800);
16709
- --dm-border-dark: var(--dm-slate-600);
16710
- --dm-border-focus: var(--dm-blue-500); /* Use a vibrant blue for focus */
16711
- --dm-focus-ring: rgba(0, 188, 212, 0.3); /* Based on dm-blue-500 */
16712
- --dm-focus-ring-danger: rgba(220, 53, 69, 0.3); /* Based on dm-red-500 */
16433
+ /* ================================================
16434
+ FOUNDATIONAL COLORS - Light Mode Base
16435
+ ================================================ */
16713
16436
 
16714
- /* Interactive States */
16715
- --dm-hover-bg: rgba(255, 255, 255, 0.07);
16716
- --dm-active-bg: rgba(255, 255, 255, 0.1);
16717
- --dm-selected-bg: var(--dm-blue-600);
16718
- --dm-disabled-opacity: 0.4;
16437
+ /* Backgrounds - Light/white backgrounds */
16438
+ --dm-background: #ffffff;
16439
+ --dm-background-alt: #f8f9fa;
16440
+ --dm-surface: #ffffff;
16441
+ --dm-surface-raised: #f1f3f5;
16442
+ --dm-surface-overlay: #f8f9fa;
16719
16443
 
16720
- /* Brand Colors */
16721
- --dm-primary: var(--dm-blue-500);
16722
- --dm-primary-dark: var(--dm-blue-700);
16723
- --dm-primary-light: var(--dm-blue-300);
16724
- --dm-primary-hover: var(--dm-blue-400);
16725
- --dm-primary-active: var(--dm-blue-600);
16444
+ /* Text - Dark colours for readability on light */
16445
+ --dm-text: #212529;
16446
+ --dm-text-secondary: #495057;
16447
+ --dm-text-muted: #6c757d;
16448
+ --dm-text-disabled: #adb5bd;
16449
+ --dm-text-inverse: #ffffff;
16726
16450
 
16727
- --dm-secondary: var(--dm-slate-500);
16728
- --dm-secondary-hover: var(--dm-slate-400);
16729
- --dm-secondary-active: var(--dm-slate-300);
16451
+ /* Borders - Subtle on light backgrounds */
16452
+ --dm-border: #dee2e6;
16453
+ --dm-border-light: #e9ecef;
16454
+ --dm-border-dark: #ced4da;
16730
16455
 
16731
- /* Status Colors */
16732
- --dm-success: var(--dm-green-500);
16733
- --dm-success-hover: var(--dm-green-400);
16734
- --dm-success-active: var(--dm-green-600);
16735
- --dm-success-light: rgba(40, 167, 69, 0.2);
16736
- --dm-success-dark: var(--dm-green-600);
16456
+ /* ================================================
16457
+ GRAYVE ACCENT COLORS - Darker cyan for light-mode contrast
16458
+ ================================================ */
16737
16459
 
16738
- --dm-danger: var(--dm-red-500);
16739
- --dm-danger-hover: var(--dm-red-400);
16740
- --dm-danger-active: var(--dm-red-600);
16741
- --dm-danger-light: rgba(220, 53, 69, 0.2);
16742
- --dm-danger-dark: var(--dm-red-600);
16460
+ /* PRIMARY COLOURS - Dark Cyan for contrast */
16461
+ --dm-primary: #00838f;
16462
+ --dm-primary-hover: #006064;
16463
+ --dm-primary-active: #00acc1;
16464
+ --dm-primary-light: #e0f7fa;
16465
+ --dm-primary-dark: #006064;
16743
16466
 
16744
- --dm-warning: var(--dm-amber-400);
16745
- --dm-warning-hover: var(--dm-amber-300);
16746
- --dm-warning-active: var(--dm-amber-500);
16747
- --dm-warning-text: var(--dm-amber-900);
16748
- --dm-warning-light: rgba(255, 193, 7, 0.2);
16749
- --dm-warning-dark: var(--dm-amber-600);
16467
+ /* Focus ring with cyan colour */
16468
+ --dm-focus-ring: 0 0 0 3px rgba(0, 131, 143, 0.3);
16469
+ --dm-border-focus: #00838f;
16750
16470
 
16751
- --dm-info: var(--dm-sky-500);
16752
- --dm-info-hover: var(--dm-sky-400);
16753
- --dm-info-active: var(--dm-sky-600);
16754
- --dm-info-light: rgba(23, 162, 184, 0.2);
16755
- --dm-info-dark: var(--dm-sky-600);
16471
+ /* ================================================
16472
+ SECONDARY COLOURS - Blue Grey
16473
+ ================================================ */
16474
+ --dm-secondary: #546e7a;
16475
+ --dm-secondary-hover: #607d8b;
16476
+ --dm-secondary-active: #78909c;
16477
+ --dm-secondary-light: rgba(84, 110, 122, 0.15);
16478
+ --dm-secondary-dark: #455a64;
16756
16479
 
16757
- /* Background Tints */
16758
- --dm-primary-bg: rgba(0, 188, 212, 0.15);
16759
- --dm-secondary-bg: rgba(108, 117, 125, 0.15);
16760
- --dm-success-bg: rgba(40, 167, 69, 0.15);
16761
- --dm-danger-bg: rgba(220, 53, 69, 0.15);
16762
- --dm-warning-bg: rgba(255, 193, 7, 0.15);
16763
- --dm-info-bg: rgba(23, 162, 184, 0.15);
16480
+ /* ================================================
16481
+ STATUS COLOURS
16482
+ ================================================ */
16483
+ --dm-success: #2e7d32;
16484
+ --dm-success-hover: #388e3c;
16485
+ --dm-success-active: #1b5e20;
16486
+ --dm-success-light: rgba(46, 125, 50, 0.1);
16487
+ --dm-success-dark: #1b5e20;
16488
+
16489
+ --dm-info: #0277bd;
16490
+ --dm-info-hover: #0288d1;
16491
+ --dm-info-active: #01579b;
16492
+ --dm-info-light: rgba(2, 119, 189, 0.1);
16493
+ --dm-info-dark: #01579b;
16494
+
16495
+ --dm-warning: #f57c00;
16496
+ --dm-warning-hover: #fb8c00;
16497
+ --dm-warning-active: #e65100;
16498
+ --dm-warning-text: #e65100;
16499
+ --dm-warning-light: rgba(245, 124, 0, 0.1);
16500
+ --dm-warning-dark: #e65100;
16764
16501
 
16765
- /* Semantic Surface Colors */
16766
- --dm-surface-secondary: var(--dm-slate-900);
16767
- --dm-card-bg: var(--dm-slate-800);
16768
- --dm-card-border: var(--dm-slate-700);
16502
+ --dm-danger: #c62828;
16503
+ --dm-danger-hover: #d32f2f;
16504
+ --dm-danger-active: #b71c1c;
16505
+ --dm-danger-light: rgba(198, 40, 40, 0.1);
16506
+ --dm-danger-dark: #b71c1c;
16769
16507
 
16770
- /* Legacy color names (kept for backwards compatibility) */
16771
- --dm-light: var(--dm-slate-200);
16772
- --dm-dark: var(--dm-slate-800);
16773
- --dm-white: #ffffff;
16774
- --dm-black: #000000;
16508
+ /* ================================================
16509
+ ACCENT COLOURS
16510
+ ================================================ */
16511
+ --dm-accent-1: #b2ebf2; /* Cyan 100 */
16512
+ --dm-accent-2: #80deea; /* Cyan 200 */
16513
+ --dm-accent-3: #00838f; /* Cyan 800 */
16514
+ --dm-accent-4: #006064; /* Cyan 900 */
16775
16515
 
16776
- /* Grays (mapped to Slate) */
16777
- --dm-gray-50: var(--dm-slate-50);
16778
- --dm-gray-100: var(--dm-slate-100);
16779
- --dm-gray-200: var(--dm-slate-200);
16780
- --dm-gray-300: var(--dm-slate-300);
16781
- --dm-gray-400: var(--dm-slate-400);
16782
- --dm-gray-500: var(--dm-slate-500);
16783
- --dm-gray-600: var(--dm-slate-600);
16784
- --dm-gray-700: var(--dm-slate-700);
16785
- --dm-gray-800: var(--dm-slate-800);
16786
- --dm-gray-900: var(--dm-slate-900);
16787
- --dm-gray-950: var(--dm-slate-950);
16516
+ /* ================================================
16517
+ INTERACTIVE STATES
16518
+ ================================================ */
16519
+ --dm-hover-bg: rgba(0, 131, 143, 0.06);
16520
+ --dm-active-bg: rgba(0, 131, 143, 0.1);
16521
+ --dm-selected-bg: #e0f7fa;
16522
+ --dm-disabled-opacity: 0.4;
16788
16523
 
16789
- /* Component-specific variables */
16524
+ /* ================================================
16525
+ COMPONENT-SPECIFIC COLORS
16526
+ ================================================ */
16527
+
16528
+ /* Cards */
16529
+ --dm-card-bg: var(--dm-surface);
16530
+ --dm-card-border: var(--dm-border);
16531
+ --dm-card-shadow: var(--dm-shadow-md);
16532
+
16533
+ /* Inputs */
16790
16534
  --dm-input-bg: var(--dm-surface);
16791
16535
  --dm-input-border: var(--dm-border-dark);
16792
16536
  --dm-input-text: var(--dm-text);
16793
16537
  --dm-input-placeholder: var(--dm-text-muted);
16794
16538
  --dm-input-focus-border: var(--dm-primary);
16795
- --dm-input-disabled-bg: var(--dm-slate-800);
16539
+ --dm-input-disabled-bg: #f8f9fa;
16540
+
16541
+ /* Buttons */
16542
+ --dm-btn-text: var(--dm-text);
16543
+ --dm-btn-bg: var(--dm-surface);
16544
+ --dm-btn-border: var(--dm-border-dark);
16796
16545
 
16546
+ /* Tables */
16547
+ --dm-table-bg: transparent;
16797
16548
  --dm-table-border: var(--dm-border);
16549
+ --dm-table-header-bg: var(--dm-background-alt);
16550
+ --dm-table-header-text: var(--dm-text);
16551
+ --dm-table-stripe-bg: rgba(0, 0, 0, 0.02);
16798
16552
  --dm-table-hover-bg: var(--dm-hover-bg);
16799
- --dm-table-stripe-bg: rgba(255, 255, 255, 0.03);
16553
+ --dm-table-selected-bg: var(--dm-selected-bg);
16800
16554
 
16801
- --dm-navbar-bg: var(--dm-surface);
16802
- --dm-navbar-text: var(--dm-text);
16803
- --dm-navbar-border: var(--dm-border);
16555
+ /* Modals */
16556
+ --dm-modal-bg: var(--dm-surface);
16557
+ --dm-modal-border: var(--dm-border);
16558
+ --dm-modal-backdrop: rgba(0, 0, 0, 0.5);
16559
+ --dm-modal-shadow: var(--dm-shadow-xl);
16804
16560
 
16805
- --dm-dropdown-bg: var(--dm-surface-raised);
16561
+ /* Dropdowns */
16562
+ --dm-dropdown-bg: var(--dm-surface);
16806
16563
  --dm-dropdown-border: var(--dm-border);
16564
+ --dm-dropdown-shadow: var(--dm-shadow-lg);
16807
16565
  --dm-dropdown-item-hover: var(--dm-hover-bg);
16808
16566
  --dm-dropdown-item-active: var(--dm-selected-bg);
16809
16567
 
16568
+ /* Tooltips */
16569
+ --dm-tooltip-bg: #212529;
16570
+ --dm-tooltip-text: #ffffff;
16571
+
16572
+ /* Toasts */
16573
+ --dm-toast-bg: var(--dm-surface);
16574
+ --dm-toast-border: var(--dm-border);
16575
+ --dm-toast-shadow: var(--dm-shadow-lg);
16576
+
16577
+ /* Navbar */
16578
+ --dm-navbar-bg: var(--dm-surface);
16579
+ --dm-navbar-text: var(--dm-text);
16580
+ --dm-navbar-border: var(--dm-border);
16581
+
16582
+ /* Sidebar */
16810
16583
  --dm-sidebar-bg: var(--dm-surface);
16584
+ --dm-sidebar-text: var(--dm-text);
16811
16585
  --dm-sidebar-border: var(--dm-border);
16812
16586
  --dm-sidebar-item-hover: var(--dm-hover-bg);
16813
16587
  --dm-sidebar-item-active: var(--dm-selected-bg);
16814
16588
 
16589
+ /* Tabs */
16590
+ --dm-tab-border: var(--dm-border);
16591
+ --dm-tab-hover-bg: var(--dm-hover-bg);
16592
+
16593
+ /* Accordion */
16594
+ --dm-accordion-bg: var(--dm-surface);
16595
+ --dm-accordion-border: var(--dm-border);
16596
+ --dm-accordion-header-bg: var(--dm-background-alt);
16597
+ --dm-accordion-header-hover: var(--dm-hover-bg);
16598
+
16599
+ /* Badges */
16600
+ --dm-badge-bg: var(--dm-secondary);
16601
+ --dm-badge-text: #ffffff;
16602
+
16603
+ /* Pills */
16604
+ --dm-pill-bg: #e0f7fa;
16605
+ --dm-pill-color: #006064;
16606
+ --dm-pill-hover-bg: #b2ebf2;
16607
+
16608
+ /* Autocomplete / Pillbox */
16815
16609
  --dm-autocomplete-bg: var(--dm-surface);
16816
16610
  --dm-autocomplete-border: var(--dm-border);
16817
16611
  --dm-autocomplete-shadow: var(--dm-shadow-md);
16818
16612
  --dm-autocomplete-item-hover: var(--dm-hover-bg);
16819
16613
  --dm-autocomplete-item-active: var(--dm-selected-bg);
16820
16614
  --dm-autocomplete-highlight: var(--dm-primary-light);
16821
-
16822
16615
  --dm-pillbox-bg: var(--dm-surface);
16823
16616
  --dm-pillbox-border: var(--dm-border);
16824
- --dm-pill-bg: var(--dm-gray-700); /* Darker pill background for dark theme */
16825
- --dm-pill-color: var(--dm-text);
16826
- --dm-pill-hover-bg: var(--dm-gray-600);
16827
16617
 
16618
+ /* Progress */
16619
+ --dm-progress-bg: #e9ecef;
16620
+
16621
+ /* Scrollbar */
16622
+ --dm-scrollbar-track: #f8f9fa;
16623
+ --dm-scrollbar-thumb: #ced4da;
16624
+ --dm-scrollbar-thumb-hover: #adb5bd;
16625
+
16626
+ /* Code */
16627
+ --dm-code-bg: #f8f9fa;
16628
+ --dm-code-text: #00838f;
16629
+ --dm-code-border: var(--dm-border);
16630
+
16631
+ /* ================================================
16632
+ SHADOWS - Standard for light mode
16633
+ ================================================ */
16634
+ --dm-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
16635
+ --dm-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
16636
+ --dm-shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
16637
+ --dm-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
16638
+ --dm-shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
16639
+ --dm-shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);
16640
+ --dm-shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);
16641
+ }
16642
+
16643
+ /* Syntax highlighting tokens for grayve-light */
16644
+ .dm-theme-grayve-light .code-block .syntax-keyword {
16645
+ color: #7c4dff; /* Deep Purple */
16646
+ font-weight: 500;
16647
+ }
16648
+
16649
+ .dm-theme-grayve-light .code-block .syntax-string,
16650
+ .dm-theme-grayve-light .code-block .syntax-template-string {
16651
+ color: #2e7d32; /* Green */
16652
+ }
16653
+
16654
+ .dm-theme-grayve-light .code-block .syntax-function {
16655
+ color: #00838f; /* Cyan */
16656
+ }
16657
+
16658
+ /**
16659
+ * Domma Grayve Dark Theme
16660
+ * Slate/cyan monochrome palette — adapted from Bootswatch Slate
16661
+ * Dark mode variant
16662
+ */
16663
+
16664
+ .dm-theme-grayve-dark {
16665
+ color-scheme: dark;
16666
+
16667
+ /* ================================================
16668
+ FOUNDATIONAL COLORS - Dark Mode Base
16669
+ ================================================ */
16670
+
16671
+ /* Backgrounds - Slate dark backgrounds */
16672
+ --dm-background: #1a1e21; /* slate-900 */
16673
+ --dm-background-alt: #212529; /* slate-800 */
16674
+ --dm-surface: #212529; /* slate-800 */
16675
+ --dm-surface-raised: #343A40; /* slate-700 */
16676
+ --dm-surface-overlay: #343A40;/* slate-700 */
16677
+
16678
+ /* Text - Light colours for readability on dark */
16679
+ --dm-text: #DEE2E6; /* slate-200 */
16680
+ --dm-text-secondary: #ADB5BD; /* slate-400 */
16681
+ --dm-text-muted: #6C757D; /* slate-500 */
16682
+ --dm-text-disabled: #495057; /* slate-600 */
16683
+ --dm-text-inverse: #1a1e21; /* slate-900 */
16684
+
16685
+ /* Borders - Subtle on dark backgrounds */
16686
+ --dm-border: #343A40; /* slate-700 */
16687
+ --dm-border-light: #212529; /* slate-800 */
16688
+ --dm-border-dark: #495057; /* slate-600 */
16689
+
16690
+ /* ================================================
16691
+ GRAYVE ACCENT COLORS - Cyan/teal tones
16692
+ ================================================ */
16693
+
16694
+ /* PRIMARY COLOURS - Cyan Teal */
16695
+ --dm-primary: #00bcd4;
16696
+ --dm-primary-hover: #00acc1;
16697
+ --dm-primary-active: #26c6da;
16698
+ --dm-primary-light: #e0f7fa;
16699
+ --dm-primary-dark: #0097a7;
16700
+
16701
+ /* Focus ring with cyan colour */
16702
+ --dm-focus-ring: 0 0 0 3px rgba(0, 188, 212, 0.3);
16703
+ --dm-border-focus: #00bcd4;
16704
+
16705
+ /* ================================================
16706
+ SECONDARY COLOURS - Blue Grey
16707
+ ================================================ */
16708
+ --dm-secondary: #6C757D;
16709
+ --dm-secondary-hover: #ADB5BD;
16710
+ --dm-secondary-active: #CED4DA;
16711
+ --dm-secondary-light: #E9ECEF;
16712
+ --dm-secondary-dark: #495057;
16713
+
16714
+ /* ================================================
16715
+ STATUS COLOURS
16716
+ ================================================ */
16717
+ --dm-success: #28a745;
16718
+ --dm-success-hover: #49cc61;
16719
+ --dm-success-active: #218838;
16720
+ --dm-success-light: rgba(40, 167, 69, 0.2);
16721
+ --dm-success-dark: #1e7e34;
16722
+
16723
+ --dm-info: #17a2b8;
16724
+ --dm-info-hover: #26d2e9;
16725
+ --dm-info-active: #138496;
16726
+ --dm-info-light: rgba(23, 162, 184, 0.2);
16727
+ --dm-info-dark: #117a8b;
16728
+
16729
+ --dm-warning: #ffc107;
16730
+ --dm-warning-hover: #ffcd38;
16731
+ --dm-warning-active: #e0a800;
16732
+ --dm-warning-text: #856404;
16733
+ --dm-warning-light: rgba(255, 193, 7, 0.2);
16734
+ --dm-warning-dark: #d39e00;
16735
+
16736
+ --dm-danger: #dc3545;
16737
+ --dm-danger-hover: #e35a67;
16738
+ --dm-danger-active: #c82333;
16739
+ --dm-danger-light: rgba(220, 53, 69, 0.2);
16740
+ --dm-danger-dark: #bd2130;
16741
+
16742
+ /* ================================================
16743
+ ACCENT COLOURS
16744
+ ================================================ */
16745
+ --dm-accent-1: #80deea; /* Cyan 200 */
16746
+ --dm-accent-2: #4dd0e1; /* Cyan 300 */
16747
+ --dm-accent-3: #00bcd4; /* Cyan 500 */
16748
+ --dm-accent-4: #0097a7; /* Cyan 700 */
16749
+
16750
+ /* ================================================
16751
+ INTERACTIVE STATES
16752
+ ================================================ */
16753
+ --dm-hover-bg: rgba(255, 255, 255, 0.07);
16754
+ --dm-active-bg: rgba(255, 255, 255, 0.1);
16755
+ --dm-selected-bg: #00838f;
16756
+ --dm-disabled-opacity: 0.4;
16757
+
16758
+ /* ================================================
16759
+ COMPONENT-SPECIFIC COLORS
16760
+ ================================================ */
16761
+
16762
+ /* Cards */
16763
+ --dm-card-bg: var(--dm-surface);
16764
+ --dm-card-border: var(--dm-border);
16765
+ --dm-card-shadow: var(--dm-shadow-md);
16766
+
16767
+ /* Inputs */
16768
+ --dm-input-bg: var(--dm-surface);
16769
+ --dm-input-border: var(--dm-border-dark);
16770
+ --dm-input-text: var(--dm-text);
16771
+ --dm-input-placeholder: var(--dm-text-muted);
16772
+ --dm-input-focus-border: var(--dm-primary);
16773
+ --dm-input-disabled-bg: #212529;
16774
+
16775
+ /* Buttons */
16776
+ --dm-btn-text: var(--dm-text);
16777
+ --dm-btn-bg: var(--dm-surface);
16778
+ --dm-btn-border: var(--dm-border-dark);
16779
+
16780
+ /* Tables */
16781
+ --dm-table-bg: transparent;
16782
+ --dm-table-border: var(--dm-border);
16783
+ --dm-table-header-bg: var(--dm-background-alt);
16784
+ --dm-table-header-text: var(--dm-text);
16785
+ --dm-table-stripe-bg: rgba(255, 255, 255, 0.03);
16786
+ --dm-table-hover-bg: var(--dm-hover-bg);
16787
+ --dm-table-selected-bg: var(--dm-selected-bg);
16788
+
16789
+ /* Modals */
16790
+ --dm-modal-bg: var(--dm-surface);
16791
+ --dm-modal-border: var(--dm-border);
16792
+ --dm-modal-backdrop: rgba(0, 0, 0, 0.7);
16793
+ --dm-modal-shadow: var(--dm-shadow-xl);
16794
+
16795
+ /* Dropdowns */
16796
+ --dm-dropdown-bg: var(--dm-surface-raised);
16797
+ --dm-dropdown-border: var(--dm-border);
16798
+ --dm-dropdown-shadow: var(--dm-shadow-lg);
16799
+ --dm-dropdown-item-hover: var(--dm-hover-bg);
16800
+ --dm-dropdown-item-active: var(--dm-selected-bg);
16801
+
16802
+ /* Tooltips */
16803
+ --dm-tooltip-bg: #1a1e21;
16804
+ --dm-tooltip-text: #ffffff;
16805
+
16806
+ /* Toasts */
16807
+ --dm-toast-bg: var(--dm-surface);
16808
+ --dm-toast-border: var(--dm-border);
16809
+ --dm-toast-shadow: var(--dm-shadow-lg);
16810
+
16811
+ /* Navbar */
16812
+ --dm-navbar-bg: var(--dm-surface);
16813
+ --dm-navbar-text: var(--dm-text);
16814
+ --dm-navbar-border: var(--dm-border);
16815
+
16816
+ /* Sidebar */
16817
+ --dm-sidebar-bg: var(--dm-surface);
16818
+ --dm-sidebar-text: var(--dm-text);
16819
+ --dm-sidebar-border: var(--dm-border);
16820
+ --dm-sidebar-item-hover: var(--dm-hover-bg);
16821
+ --dm-sidebar-item-active: var(--dm-selected-bg);
16822
+
16823
+ /* Tabs */
16828
16824
  --dm-tab-border: var(--dm-border);
16829
16825
  --dm-tab-hover-bg: var(--dm-hover-bg);
16830
- --dm-tab-active-border: var(--dm-primary);
16831
- --dm-tab-active-text: var(--dm-primary);
16832
16826
 
16827
+ /* Accordion */
16828
+ --dm-accordion-bg: var(--dm-surface);
16833
16829
  --dm-accordion-border: var(--dm-border);
16830
+ --dm-accordion-header-bg: var(--dm-background-alt);
16834
16831
  --dm-accordion-header-hover: var(--dm-hover-bg);
16832
+
16833
+ /* Badges */
16834
+ --dm-badge-bg: var(--dm-secondary);
16835
+ --dm-badge-text: #1a1e21;
16836
+
16837
+ /* Pills */
16838
+ --dm-pill-bg: #343A40;
16839
+ --dm-pill-color: var(--dm-text);
16840
+ --dm-pill-hover-bg: #495057;
16841
+
16842
+ /* Autocomplete / Pillbox */
16843
+ --dm-autocomplete-bg: var(--dm-surface);
16844
+ --dm-autocomplete-border: var(--dm-border);
16845
+ --dm-autocomplete-shadow: var(--dm-shadow-md);
16846
+ --dm-autocomplete-item-hover: var(--dm-hover-bg);
16847
+ --dm-autocomplete-item-active: var(--dm-selected-bg);
16848
+ --dm-autocomplete-highlight: var(--dm-primary-light);
16849
+ --dm-pillbox-bg: var(--dm-surface);
16850
+ --dm-pillbox-border: var(--dm-border);
16851
+
16852
+ /* Progress */
16853
+ --dm-progress-bg: #343A40;
16854
+
16855
+ /* Scrollbar */
16856
+ --dm-scrollbar-track: #212529;
16857
+ --dm-scrollbar-thumb: #495057;
16858
+ --dm-scrollbar-thumb-hover: #6C757D;
16859
+
16860
+ /* Code */
16861
+ --dm-code-bg: #1a1e21;
16862
+ --dm-code-text: #80deea;
16863
+ --dm-code-border: var(--dm-border);
16864
+
16865
+ /* ================================================
16866
+ SHADOWS - Subtle for dark mode
16867
+ ================================================ */
16868
+ --dm-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
16869
+ --dm-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
16870
+ --dm-shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
16871
+ --dm-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
16872
+ --dm-shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
16873
+ --dm-shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);
16874
+ --dm-shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);
16835
16875
  }
16836
16876
 
16837
- /* Syntax highlighting tokens for grayve (assuming similar to dark theme) */
16838
- .dm-theme-grayve .code-block .syntax-keyword {
16877
+ /* Syntax highlighting tokens for grayve-dark */
16878
+ .dm-theme-grayve-dark .code-block .syntax-keyword {
16839
16879
  color: #c792ea; /* Purple */
16840
16880
  font-weight: 500;
16841
16881
  }
16842
16882
 
16843
- .dm-theme-grayve .code-block .syntax-string,
16844
- .dm-theme-grayve .code-block .syntax-template-string {
16883
+ .dm-theme-grayve-dark .code-block .syntax-string,
16884
+ .dm-theme-grayve-dark .code-block .syntax-template-string {
16845
16885
  color: #c3e88d; /* Green */
16846
16886
  }
16847
16887
 
16848
- .dm-theme-grayve .code-block .syntax-function {
16888
+ .dm-theme-grayve-dark .code-block .syntax-function {
16849
16889
  color: #82aaff; /* Light Blue */
16850
16890
  }
16851
16891
 
16852
16892
 
16893
+