domma-js 0.22.9 → 0.24.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.
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Domma Elements CSS v0.22.9
2
+ * Domma Elements CSS v0.24.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-04-24T20:17:43.050Z
6
- * Commit: acc551f
5
+ * Built: 2026-05-02T17:40:23.703Z
6
+ * Commit: ef7021b
7
7
  */
8
8
 
9
9
  /**
@@ -117,7 +117,7 @@
117
117
  .btn-outline {
118
118
  background-color: transparent;
119
119
  border-color: var(--dm-primary);
120
- color: var(--dm-primary);
120
+ color: var(--dm-link, color-mix(in oklab, var(--dm-primary, #0070d6), var(--dm-text, #1a1a1a) 55%));
121
121
  }
122
122
 
123
123
  .btn-outline:hover:not(:disabled) {
@@ -249,17 +249,17 @@
249
249
 
250
250
  .card-primary .card-header {
251
251
  background-color: var(--dm-primary);
252
- color: var(--dm-white);
252
+ color: var(--dm-primary-text, var(--dm-white));
253
253
  border-color: var(--dm-primary);
254
254
  }
255
255
 
256
256
  .card-primary .card-body {
257
- color: var(--dm-white);
257
+ color: var(--dm-primary-text, var(--dm-white));
258
258
  }
259
259
 
260
260
  .card-primary .card-footer {
261
261
  background-color: var(--dm-primary);
262
- color: var(--dm-white);
262
+ color: var(--dm-primary-text, var(--dm-white));
263
263
  border-color: var(--dm-primary);
264
264
  }
265
265
 
@@ -485,7 +485,7 @@
485
485
  }
486
486
 
487
487
  .tab-item.active {
488
- color: var(--dm-primary);
488
+ color: var(--dm-link, color-mix(in oklab, var(--dm-primary, #0070d6), var(--dm-text, #1a1a1a) 55%));
489
489
  border-bottom-color: var(--dm-primary);
490
490
  }
491
491
 
@@ -585,7 +585,7 @@
585
585
  .tooltip-content {
586
586
  position: absolute;
587
587
  background-color: var(--dm-surface);
588
- color: var(--dm-white);
588
+ color: var(--dm-text);
589
589
  padding: var(--dm-space-2) var(--dm-space-3);
590
590
  border-radius: var(--dm-radius-md);
591
591
  font-size: var(--dm-font-size-sm);
@@ -850,7 +850,7 @@ textarea:not([class])::placeholder {
850
850
 
851
851
  .form-select option:checked {
852
852
  background-color: var(--dm-primary);
853
- color: var(--dm-white);
853
+ color: var(--dm-primary-text, var(--dm-white));
854
854
  }
855
855
 
856
856
  .form-input.error,
@@ -1017,7 +1017,7 @@ textarea:not([class])::placeholder {
1017
1017
  justify-content: center;
1018
1018
  pointer-events: none;
1019
1019
  z-index: 1;
1020
- color: var(--dm-text-secondary);
1020
+ color: var(--dm-text);
1021
1021
  background-color: var(--dm-hover-bg);
1022
1022
  padding: 0 var(--dm-space-3);
1023
1023
  }
@@ -1223,7 +1223,7 @@ textarea:not([class])::placeholder {
1223
1223
 
1224
1224
  .badge-primary {
1225
1225
  background-color: var(--dm-primary);
1226
- color: var(--dm-white);
1226
+ color: var(--dm-primary-text, var(--dm-white));
1227
1227
  }
1228
1228
 
1229
1229
  .badge-secondary {
@@ -1233,22 +1233,22 @@ textarea:not([class])::placeholder {
1233
1233
 
1234
1234
  .badge-success {
1235
1235
  background-color: var(--dm-success);
1236
- color: var(--dm-white);
1236
+ color: var(--dm-success-text, var(--dm-white));
1237
1237
  }
1238
1238
 
1239
1239
  .badge-danger {
1240
1240
  background-color: var(--dm-danger);
1241
- color: var(--dm-white);
1241
+ color: var(--dm-danger-text, var(--dm-white));
1242
1242
  }
1243
1243
 
1244
1244
  .badge-warning {
1245
1245
  background-color: var(--dm-warning);
1246
- color: var(--dm-text);
1246
+ color: var(--dm-warning-text, var(--dm-text));
1247
1247
  }
1248
1248
 
1249
1249
  .badge-info {
1250
1250
  background-color: var(--dm-info);
1251
- color: var(--dm-white);
1251
+ color: var(--dm-info-text, var(--dm-white));
1252
1252
  }
1253
1253
 
1254
1254
  /* Pulse animation for new content indicators */
@@ -1284,7 +1284,7 @@ textarea:not([class])::placeholder {
1284
1284
  line-height: 1;
1285
1285
  border-radius: var(--dm-radius-full);
1286
1286
  background-color: var(--dm-danger);
1287
- color: var(--dm-white);
1287
+ color: var(--dm-danger-text, var(--dm-white));
1288
1288
  }
1289
1289
 
1290
1290
  /* Dot indicator — small coloured presence circle */
@@ -1321,7 +1321,7 @@ textarea:not([class])::placeholder {
1321
1321
  border: 2px solid var(--dm-background, #fff);
1322
1322
  z-index: 1;
1323
1323
  background-color: var(--dm-danger);
1324
- color: var(--dm-white);
1324
+ color: var(--dm-danger-text, var(--dm-white));
1325
1325
  }
1326
1326
 
1327
1327
  /* Dot variant of counter — smaller, no text */
@@ -1344,14 +1344,14 @@ textarea:not([class])::placeholder {
1344
1344
  }
1345
1345
 
1346
1346
  /* Colour variants for .badge-number */
1347
- .badge-number.badge-number-primary { background-color: var(--dm-primary); color: var(--dm-white); }
1347
+ .badge-number.badge-number-primary { background-color: var(--dm-primary); color: var(--dm-primary-text, var(--dm-white)); }
1348
1348
  .badge-number.badge-number-secondary { background-color: var(--dm-background-alt); color: var(--dm-text); }
1349
- .badge-number.badge-number-success { background-color: var(--dm-success); color: var(--dm-white); }
1350
- .badge-number.badge-number-danger { background-color: var(--dm-danger); color: var(--dm-white); }
1351
- .badge-number.badge-number-warning { background-color: var(--dm-warning); color: var(--dm-text); }
1352
- .badge-number.badge-number-info { background-color: var(--dm-info); color: var(--dm-white); }
1349
+ .badge-number.badge-number-success { background-color: var(--dm-success); color: var(--dm-success-text, var(--dm-white)); }
1350
+ .badge-number.badge-number-danger { background-color: var(--dm-danger); color: var(--dm-danger-text, var(--dm-white)); }
1351
+ .badge-number.badge-number-warning { background-color: var(--dm-warning); color: var(--dm-warning-text, var(--dm-text)); }
1352
+ .badge-number.badge-number-info { background-color: var(--dm-info); color: var(--dm-info-text, var(--dm-white)); }
1353
1353
  .badge-number.badge-number-light { background-color: var(--dm-background-alt); color: var(--dm-text); }
1354
- .badge-number.badge-number-dark { background-color: var(--dm-surface-overlay); color: var(--dm-white); }
1354
+ .badge-number.badge-number-dark { background-color: var(--dm-surface-overlay); color: var(--dm-text); }
1355
1355
 
1356
1356
  /* Colour variants for .badge-dot */
1357
1357
  .badge-dot.badge-dot-primary { background-color: var(--dm-primary); }
@@ -1364,14 +1364,14 @@ textarea:not([class])::placeholder {
1364
1364
  .badge-dot.badge-dot-dark { background-color: var(--dm-surface-overlay); }
1365
1365
 
1366
1366
  /* Colour variants for .badge-counter */
1367
- .badge-counter.badge-counter-primary { background-color: var(--dm-primary); color: var(--dm-white); }
1367
+ .badge-counter.badge-counter-primary { background-color: var(--dm-primary); color: var(--dm-primary-text, var(--dm-white)); }
1368
1368
  .badge-counter.badge-counter-secondary { background-color: var(--dm-background-alt); color: var(--dm-text); }
1369
- .badge-counter.badge-counter-success { background-color: var(--dm-success); color: var(--dm-white); }
1370
- .badge-counter.badge-counter-danger { background-color: var(--dm-danger); color: var(--dm-white); }
1371
- .badge-counter.badge-counter-warning { background-color: var(--dm-warning); color: var(--dm-text); }
1372
- .badge-counter.badge-counter-info { background-color: var(--dm-info); color: var(--dm-white); }
1369
+ .badge-counter.badge-counter-success { background-color: var(--dm-success); color: var(--dm-success-text, var(--dm-white)); }
1370
+ .badge-counter.badge-counter-danger { background-color: var(--dm-danger); color: var(--dm-danger-text, var(--dm-white)); }
1371
+ .badge-counter.badge-counter-warning { background-color: var(--dm-warning); color: var(--dm-warning-text, var(--dm-text)); }
1372
+ .badge-counter.badge-counter-info { background-color: var(--dm-info); color: var(--dm-info-text, var(--dm-white)); }
1373
1373
  .badge-counter.badge-counter-light { background-color: var(--dm-background-alt); color: var(--dm-text); }
1374
- .badge-counter.badge-counter-dark { background-color: var(--dm-surface-overlay); color: var(--dm-white); }
1374
+ .badge-counter.badge-counter-dark { background-color: var(--dm-surface-overlay); color: var(--dm-text); }
1375
1375
 
1376
1376
 
1377
1377
  /* ============================================
@@ -1493,7 +1493,7 @@ textarea:not([class])::placeholder {
1493
1493
  /* Active/selected state — accent background takes precedence over colour variants */
1494
1494
  .list-group-item.active {
1495
1495
  background-color: var(--dm-primary);
1496
- color: var(--dm-white);
1496
+ color: var(--dm-primary-text, var(--dm-white));
1497
1497
  border-bottom-color: var(--dm-primary-hover);
1498
1498
  z-index: 1;
1499
1499
  }
@@ -1504,10 +1504,10 @@ textarea:not([class])::placeholder {
1504
1504
 
1505
1505
  /* Disabled state — dimmed and non-interactive */
1506
1506
  .list-group-item.disabled {
1507
- opacity: 0.55;
1507
+ opacity: 0.7;
1508
1508
  cursor: not-allowed;
1509
1509
  pointer-events: none;
1510
- color: var(--dm-text-disabled);
1510
+ color: var(--dm-text-muted);
1511
1511
  }
1512
1512
 
1513
1513
  /* ---- Colour Variants ---- */
@@ -1516,7 +1516,7 @@ textarea:not([class])::placeholder {
1516
1516
  .list-group-item-primary {
1517
1517
  border-left: 4px solid var(--dm-primary);
1518
1518
  background-color: var(--dm-primary-light);
1519
- color: var(--dm-primary-dark);
1519
+ color: var(--dm-text);
1520
1520
  }
1521
1521
 
1522
1522
  .list-group-item-secondary {
@@ -1528,25 +1528,25 @@ textarea:not([class])::placeholder {
1528
1528
  .list-group-item-success {
1529
1529
  border-left: 4px solid var(--dm-success);
1530
1530
  background-color: var(--dm-success-light);
1531
- color: var(--dm-success-dark);
1531
+ color: var(--dm-text);
1532
1532
  }
1533
1533
 
1534
1534
  .list-group-item-danger {
1535
1535
  border-left: 4px solid var(--dm-danger);
1536
1536
  background-color: var(--dm-danger-light);
1537
- color: var(--dm-danger-dark);
1537
+ color: var(--dm-text);
1538
1538
  }
1539
1539
 
1540
1540
  .list-group-item-warning {
1541
1541
  border-left: 4px solid var(--dm-warning);
1542
1542
  background-color: var(--dm-warning-light);
1543
- color: var(--dm-warning-text);
1543
+ color: var(--dm-text);
1544
1544
  }
1545
1545
 
1546
1546
  .list-group-item-info {
1547
1547
  border-left: 4px solid var(--dm-info);
1548
1548
  background-color: var(--dm-info-light);
1549
- color: var(--dm-info-dark);
1549
+ color: var(--dm-text);
1550
1550
  }
1551
1551
 
1552
1552
  /* Active state wins over all colour variants */
@@ -1557,7 +1557,7 @@ textarea:not([class])::placeholder {
1557
1557
  .list-group-item.active.list-group-item-warning,
1558
1558
  .list-group-item.active.list-group-item-info {
1559
1559
  background-color: var(--dm-primary);
1560
- color: var(--dm-white);
1560
+ color: var(--dm-primary-text, var(--dm-white));
1561
1561
  border-left-color: var(--dm-primary-dark);
1562
1562
  }
1563
1563
 
@@ -1571,12 +1571,12 @@ textarea:not([class])::placeholder {
1571
1571
  color: var(--dm-text-muted);
1572
1572
  }
1573
1573
 
1574
- [data-mode="dark"] .list-group-item-primary { color: var(--dm-primary); }
1574
+ [data-mode="dark"] .list-group-item-primary { color: var(--dm-text) !important; background-color: color-mix(in oklab, var(--dm-primary), transparent 85%); }
1575
1575
  [data-mode="dark"] .list-group-item-secondary { color: var(--dm-text); }
1576
- [data-mode="dark"] .list-group-item-success { color: var(--dm-success); }
1577
- [data-mode="dark"] .list-group-item-danger { color: var(--dm-danger); }
1578
- [data-mode="dark"] .list-group-item-warning { color: var(--dm-warning-text, var(--dm-warning)); }
1579
- [data-mode="dark"] .list-group-item-info { color: var(--dm-info); }
1576
+ [data-mode="dark"] .list-group-item-success { color: var(--dm-text) !important; background-color: color-mix(in oklab, var(--dm-success), transparent 85%); }
1577
+ [data-mode="dark"] .list-group-item-danger { color: var(--dm-text) !important; background-color: color-mix(in oklab, var(--dm-danger), transparent 85%); }
1578
+ [data-mode="dark"] .list-group-item-warning { color: var(--dm-text) !important; background-color: color-mix(in oklab, var(--dm-warning), transparent 85%); }
1579
+ [data-mode="dark"] .list-group-item-info { color: var(--dm-text) !important; background-color: color-mix(in oklab, var(--dm-info), transparent 85%); }
1580
1580
 
1581
1581
  [data-mode="dark"] .list-group-flush .list-group-item:first-child {
1582
1582
  border-top-color: var(--dm-border);
@@ -1667,7 +1667,7 @@ textarea:not([class])::placeholder {
1667
1667
 
1668
1668
  .pill-primary {
1669
1669
  background-color: var(--dm-primary);
1670
- color: var(--dm-white);
1670
+ color: var(--dm-primary-text, var(--dm-white));
1671
1671
  }
1672
1672
 
1673
1673
  .pill-primary:hover {
@@ -1697,23 +1697,23 @@ textarea:not([class])::placeholder {
1697
1697
  .pill-outline-primary {
1698
1698
  background-color: transparent;
1699
1699
  border-color: var(--dm-primary);
1700
- color: var(--dm-primary);
1700
+ color: var(--dm-link, color-mix(in oklab, var(--dm-primary, #0070d6), var(--dm-text, #1a1a1a) 55%));
1701
1701
  }
1702
1702
 
1703
1703
  .pill-outline-primary:hover {
1704
1704
  background-color: var(--dm-primary);
1705
- color: var(--dm-white);
1705
+ color: var(--dm-primary-text, var(--dm-white));
1706
1706
  }
1707
1707
 
1708
1708
  .pill-light {
1709
- background-color: rgba(255, 255, 255, 0.15);
1710
- border-color: rgba(255, 255, 255, 0.3);
1711
- color: var(--dm-white);
1709
+ background-color: var(--dm-surface-alt, var(--dm-background-alt, var(--dm-surface-raised, #f1f3f5)));
1710
+ border-color: var(--dm-border);
1711
+ color: var(--dm-text);
1712
1712
  }
1713
1713
 
1714
1714
  .pill-light:hover {
1715
- background-color: rgba(255, 255, 255, 0.25);
1716
- color: var(--dm-white);
1715
+ background-color: var(--dm-hover-bg, rgba(0, 0, 0, 0.04));
1716
+ color: var(--dm-text);
1717
1717
  text-decoration-line: none;
1718
1718
  }
1719
1719
 
@@ -1759,40 +1759,79 @@ textarea:not([class])::placeholder {
1759
1759
  .alert-primary {
1760
1760
  background-color: var(--dm-primary-light);
1761
1761
  border: 1px solid var(--dm-primary);
1762
- color: var(--dm-primary-dark);
1762
+ color: var(--dm-text) !important;
1763
1763
  }
1764
1764
 
1765
1765
  .alert-success {
1766
1766
  background-color: var(--dm-success-light);
1767
1767
  border: 1px solid var(--dm-success);
1768
- color: var(--dm-success-dark);
1768
+ color: var(--dm-text) !important;
1769
1769
  }
1770
1770
 
1771
1771
  .alert-danger {
1772
1772
  background-color: var(--dm-danger-light);
1773
1773
  border: 1px solid var(--dm-danger);
1774
- color: var(--dm-danger-dark);
1774
+ color: var(--dm-text) !important;
1775
1775
  }
1776
1776
 
1777
1777
  .alert-warning {
1778
1778
  background-color: var(--dm-warning-light);
1779
1779
  border: 1px solid var(--dm-warning);
1780
- color: var(--dm-warning-text);
1780
+ color: var(--dm-text) !important;
1781
1781
  }
1782
1782
 
1783
1783
  .alert-info {
1784
1784
  background-color: var(--dm-info-light);
1785
1785
  border: 1px solid var(--dm-info);
1786
- color: var(--dm-info-dark);
1786
+ color: var(--dm-text) !important;
1787
1787
  }
1788
1788
 
1789
1789
  /* In dark themes, the "-dark" colour variants are designed for light backgrounds.
1790
1790
  Use the base colour (readable on dark backgrounds) instead. */
1791
- [data-mode="dark"] .alert-primary { color: var(--dm-primary); }
1792
- [data-mode="dark"] .alert-success { color: var(--dm-success); }
1793
- [data-mode="dark"] .alert-danger { color: var(--dm-danger); }
1794
- [data-mode="dark"] .alert-warning { color: var(--dm-warning-text, var(--dm-warning)); }
1795
- [data-mode="dark"] .alert-info { color: var(--dm-info); }
1791
+ [data-mode="dark"] .alert-primary { color: var(--dm-text) !important; }
1792
+ [data-mode="dark"] .alert-success { color: var(--dm-text) !important; }
1793
+ [data-mode="dark"] .alert-danger { color: var(--dm-text) !important; }
1794
+ [data-mode="dark"] .alert-warning { color: var(--dm-text) !important; }
1795
+ [data-mode="dark"] .alert-info { color: var(--dm-text) !important; }
1796
+
1797
+ /* In dark mode, force alert backgrounds to a low-opacity tint of the brand
1798
+ colour rather than the *-light token, which some themes leave as the
1799
+ solid pale pastel from the light defaults (light-on-pale failures). */
1800
+ [data-mode="dark"] .alert-primary { background-color: color-mix(in oklab, var(--dm-primary), transparent 85%); }
1801
+ [data-mode="dark"] .alert-success { background-color: color-mix(in oklab, var(--dm-success), transparent 85%); }
1802
+ [data-mode="dark"] .alert-danger { background-color: color-mix(in oklab, var(--dm-danger), transparent 85%); }
1803
+ [data-mode="dark"] .alert-warning { background-color: color-mix(in oklab, var(--dm-warning), transparent 85%); }
1804
+ [data-mode="dark"] .alert-info { background-color: color-mix(in oklab, var(--dm-info), transparent 85%); }
1805
+
1806
+
1807
+ /* ============================================
1808
+ PROGRESS
1809
+ ============================================ */
1810
+
1811
+ .progress {
1812
+ display: flex;
1813
+ height: 1rem;
1814
+ overflow: hidden;
1815
+ font-size: var(--dm-font-size-xs);
1816
+ background-color: var(--dm-progress-bg, var(--dm-surface-alt, #e9ecef));
1817
+ border-radius: var(--dm-radius-md);
1818
+ }
1819
+
1820
+ .progress-bar {
1821
+ display: flex;
1822
+ align-items: center;
1823
+ justify-content: center;
1824
+ color: var(--dm-primary-text, #fff);
1825
+ text-align: center;
1826
+ white-space: nowrap;
1827
+ background-color: var(--dm-progress-bar, var(--dm-primary));
1828
+ transition: width 0.3s ease;
1829
+ }
1830
+
1831
+ .progress-bar-success { background-color: var(--dm-success); color: var(--dm-success-text, #fff); }
1832
+ .progress-bar-warning { background-color: var(--dm-warning); color: var(--dm-warning-text, #1a1a1a); }
1833
+ .progress-bar-danger { background-color: var(--dm-danger); color: var(--dm-danger-text, #fff); }
1834
+ .progress-bar-info { background-color: var(--dm-info); color: var(--dm-info-text, #fff); }
1796
1835
 
1797
1836
 
1798
1837
  /* ============================================
@@ -1818,7 +1857,7 @@ textarea:not([class])::placeholder {
1818
1857
 
1819
1858
  code {
1820
1859
  background-color: var(--dm-code-bg, var(--dm-background-alt));
1821
- color: var(--dm-danger);
1860
+ color: var(--dm-code-text, var(--dm-text));
1822
1861
  padding: 0.125rem 0.25rem;
1823
1862
  border-radius: var(--dm-radius-sm);
1824
1863
  font-size: 0.875em;
@@ -1840,10 +1879,10 @@ code {
1840
1879
  position: absolute;
1841
1880
  top: 0.5rem;
1842
1881
  right: 0.5rem;
1843
- background: rgba(255, 255, 255, 0.1);
1882
+ background: var(--dm-hover-bg, rgba(0, 0, 0, 0.05));
1844
1883
  border: 1px solid rgba(255, 255, 255, 0.2);
1845
1884
  border-radius: var(--dm-radius-sm);
1846
- color: var(--dm-text-disabled);
1885
+ color: var(--dm-text-secondary);
1847
1886
  padding: 0.375rem 0.5rem;
1848
1887
  cursor: pointer;
1849
1888
  opacity: 0;
@@ -1867,14 +1906,14 @@ code {
1867
1906
 
1868
1907
  .code-block-copy:hover {
1869
1908
  background: rgba(255, 255, 255, 0.2);
1870
- color: var(--dm-white);
1909
+ color: var(--dm-text);
1871
1910
  transform: scale(1.05);
1872
1911
  }
1873
1912
 
1874
1913
  .code-block-copy.copied {
1875
1914
  background: var(--dm-success);
1876
1915
  border-color: var(--dm-success);
1877
- color: var(--dm-white);
1916
+ color: var(--dm-success-text, var(--dm-white));
1878
1917
  opacity: 1;
1879
1918
  }
1880
1919
 
@@ -1918,7 +1957,7 @@ code {
1918
1957
  .pagination-link.active {
1919
1958
  background-color: var(--dm-primary);
1920
1959
  border-color: var(--dm-primary);
1921
- color: var(--dm-white);
1960
+ color: var(--dm-primary-text, var(--dm-white));
1922
1961
  }
1923
1962
 
1924
1963
  .pagination-link:disabled,
@@ -2245,7 +2284,7 @@ code {
2245
2284
 
2246
2285
  .navbar-light .navbar-action-link,
2247
2286
  .navbar-light .navbar-action-link:hover {
2248
- color: var(--dm-white) !important;
2287
+ color: var(--dm-text) !important;
2249
2288
  }
2250
2289
 
2251
2290
  /* Navbar user info - properly theme aware with solid background */
@@ -2257,7 +2296,7 @@ code {
2257
2296
 
2258
2297
  [data-mode="dark"] .navbar-user-info {
2259
2298
  background: var(--dm-surface) !important;
2260
- color: var(--dm-white) !important;
2299
+ color: var(--dm-text) !important;
2261
2300
  border-color: var(--dm-border) !important;
2262
2301
  }
2263
2302
 
@@ -2517,9 +2556,9 @@ code {
2517
2556
  }
2518
2557
 
2519
2558
  .pill-light {
2520
- background: rgba(255, 255, 255, 0.15);
2521
- border-color: rgba(255, 255, 255, 0.3);
2522
- color: var(--dm-white);
2559
+ background: var(--dm-surface-alt, rgba(255, 255, 255, 0.15));
2560
+ border-color: var(--dm-border, rgba(255, 255, 255, 0.3));
2561
+ color: var(--dm-text);
2523
2562
  }
2524
2563
 
2525
2564
  .pill-light:hover {
@@ -2571,7 +2610,7 @@ code {
2571
2610
 
2572
2611
  .dm-autocomplete-item.active {
2573
2612
  background-color: var(--dm-primary-light);
2574
- color: var(--dm-white);
2613
+ color: var(--dm-text);
2575
2614
  }
2576
2615
 
2577
2616
  .dm-autocomplete-loading,
@@ -2603,7 +2642,7 @@ code {
2603
2642
 
2604
2643
  [data-mode="dark"].dm-autocomplete-item.active {
2605
2644
  background-color: var(--dm-primary);
2606
- color: var(--dm-white);
2645
+ color: var(--dm-text);
2607
2646
  }
2608
2647
 
2609
2648
  /* ============================================
@@ -2644,7 +2683,7 @@ code {
2644
2683
  gap: 0.25rem;
2645
2684
  padding: 0.25rem 0.5rem;
2646
2685
  background: var(--dm-primary-light);
2647
- color: var(--dm-white);
2686
+ color: var(--dm-text);
2648
2687
  border-radius: var(--dm-radius-full);
2649
2688
  font-size: var(--dm-font-size-sm);
2650
2689
  line-height: 1.2;
@@ -2723,7 +2762,7 @@ code {
2723
2762
 
2724
2763
  .dm-pillbox-option.selected {
2725
2764
  background-color: var(--dm-primary-light);
2726
- color: var(--dm-white);
2765
+ color: var(--dm-text);
2727
2766
  }
2728
2767
 
2729
2768
  .dm-pillbox-message {
@@ -3106,7 +3145,7 @@ code {
3106
3145
  gap: var(--dm-space-2);
3107
3146
  padding: var(--dm-space-1) var(--dm-space-3);
3108
3147
  background: var(--dm-primary);
3109
- color: var(--dm-text-inverse);
3148
+ color: var(--dm-primary-text, var(--dm-text-inverse));
3110
3149
  font-size: var(--dm-font-size-sm);
3111
3150
  font-weight: 500;
3112
3151
  border-radius: var(--dm-radius-full);
@@ -3125,25 +3164,13 @@ code {
3125
3164
  color: inherit;
3126
3165
  }
3127
3166
 
3128
- .hero-badge-success {
3129
- background: var(--dm-success);
3130
- color: var(--dm-text-inverse);
3131
- }
3167
+ .hero-badge-success { background: var(--dm-success); color: var(--dm-success-text, var(--dm-white)); }
3132
3168
 
3133
- .hero-badge-warning {
3134
- background: var(--dm-warning);
3135
- color: var(--dm-text, var(--dm-text));
3136
- }
3169
+ .hero-badge-warning { background: var(--dm-warning); color: var(--dm-warning-text, var(--dm-text)); }
3137
3170
 
3138
- .hero-badge-danger {
3139
- background: var(--dm-danger);
3140
- color: var(--dm-text-inverse);
3141
- }
3171
+ .hero-badge-danger { background: var(--dm-danger); color: var(--dm-danger-text, var(--dm-white)); }
3142
3172
 
3143
- .hero-badge-info {
3144
- background: var(--dm-info);
3145
- color: var(--dm-text-inverse);
3146
- }
3173
+ .hero-badge-info { background: var(--dm-info); color: var(--dm-info-text, var(--dm-white)); }
3147
3174
 
3148
3175
  /* Badge icon/emoji support */
3149
3176
  .hero-badge-icon {
@@ -3735,7 +3762,7 @@ code {
3735
3762
  }
3736
3763
 
3737
3764
  .sidebar-toggle-btn:hover {
3738
- background: var(--dm-gray-200, #e9ecef);
3765
+ background: var(--dm-hover-bg, var(--dm-gray-200, #e9ecef));
3739
3766
  color: var(--dm-text, #212529);
3740
3767
  }
3741
3768
 
@@ -3774,12 +3801,12 @@ code {
3774
3801
 
3775
3802
  .sidebar-link:hover {
3776
3803
  color: var(--dm-text, #212529);
3777
- background: var(--dm-gray-100, #f8f9fa);
3804
+ background: var(--dm-hover-bg, var(--dm-gray-100, #f8f9fa));
3778
3805
  text-decoration: none;
3779
3806
  }
3780
3807
 
3781
3808
  .sidebar-link.active {
3782
- color: var(--dm-primary, #007bff);
3809
+ color: var(--dm-text);
3783
3810
  background: var(--dm-primary-bg, rgba(0, 123, 255, 0.1));
3784
3811
  font-weight: 500;
3785
3812
  border-left-color: var(--dm-primary, #007bff);
@@ -3811,7 +3838,7 @@ code {
3811
3838
  font-size: var(--dm-font-size-xs, 0.75rem);
3812
3839
  font-weight: 600;
3813
3840
  line-height: 1;
3814
- color: var(--dm-white, #fff);
3841
+ color: var(--dm-primary-text, var(--dm-white, #fff));
3815
3842
  background: var(--dm-primary, #007bff);
3816
3843
  border-radius: 10px;
3817
3844
  }
@@ -3949,7 +3976,7 @@ code {
3949
3976
  .sidebar-dark .sidebar-link.active {
3950
3977
  color: var(--dm-text-light, #eaeaea);
3951
3978
  background: var(--dm-primary-light, rgba(102, 178, 255, 0.15));
3952
- border-left-color: var(--dm-primary-light, #66b2ff);
3979
+ border-left-color: var(--dm-text);
3953
3980
  }
3954
3981
 
3955
3982
  .sidebar-dark .sidebar-heading {
@@ -4028,7 +4055,7 @@ code {
4028
4055
  width: 40px;
4029
4056
  height: 40px;
4030
4057
  background: var(--dm-primary, #007bff);
4031
- color: var(--dm-white, #fff);
4058
+ color: var(--dm-primary-text, var(--dm-white, #fff));
4032
4059
  border: none;
4033
4060
  border-radius: 0 var(--dm-radius-md, 0.375rem) var(--dm-radius-md, 0.375rem) 0;
4034
4061
  cursor: pointer;
@@ -4208,7 +4235,7 @@ code {
4208
4235
  }
4209
4236
 
4210
4237
  [data-mode="light"] .syntax-number {
4211
- color: #098658;
4238
+ color: #076b46;
4212
4239
  }
4213
4240
 
4214
4241
  [data-mode="light"] .syntax-function {
@@ -4442,8 +4469,8 @@ code {
4442
4469
  }
4443
4470
 
4444
4471
  .footer-social-link:hover {
4445
- color: var(--dm-primary, #007bff);
4446
- background: var(--dm-gray-100, #f8f9fa);
4472
+ color: var(--dm-text);
4473
+ background: var(--dm-hover-bg, var(--dm-gray-100, #f8f9fa));
4447
4474
  }
4448
4475
 
4449
4476
  .footer-copyright {
@@ -4622,7 +4649,7 @@ code {
4622
4649
  }
4623
4650
 
4624
4651
  .footer-dark .footer-social-link:hover {
4625
- color: var(--dm-primary-light, #66b2ff);
4652
+ color: var(--dm-text);
4626
4653
  background: var(--dm-background-alt, var(--dm-gray-800));
4627
4654
  }
4628
4655
 
@@ -4694,22 +4721,22 @@ code {
4694
4721
 
4695
4722
  .bg-primary {
4696
4723
  background-color: var(--dm-primary) !important;
4697
- color: var(--dm-white) !important;
4724
+ color: var(--dm-primary-text, var(--dm-white)) !important;
4698
4725
  }
4699
4726
 
4700
4727
  .bg-secondary {
4701
4728
  background-color: var(--dm-secondary) !important;
4702
- color: var(--dm-white) !important;
4729
+ color: var(--dm-secondary-text, var(--dm-white)) !important;
4703
4730
  }
4704
4731
 
4705
4732
  .bg-success {
4706
4733
  background-color: var(--dm-success) !important;
4707
- color: var(--dm-white) !important;
4734
+ color: var(--dm-success-text, var(--dm-white)) !important;
4708
4735
  }
4709
4736
 
4710
4737
  .bg-danger {
4711
4738
  background-color: var(--dm-danger) !important;
4712
- color: var(--dm-white) !important;
4739
+ color: var(--dm-danger-text, var(--dm-white)) !important;
4713
4740
  }
4714
4741
 
4715
4742
  .bg-warning {
@@ -4719,7 +4746,7 @@ code {
4719
4746
 
4720
4747
  .bg-info {
4721
4748
  background-color: var(--dm-info) !important;
4722
- color: var(--dm-white) !important;
4749
+ color: var(--dm-info-text, var(--dm-white)) !important;
4723
4750
  }
4724
4751
 
4725
4752
  .bg-light {
@@ -4729,7 +4756,7 @@ code {
4729
4756
 
4730
4757
  .bg-dark {
4731
4758
  background-color: var(--dm-background) !important;
4732
- color: var(--dm-white) !important;
4759
+ color: var(--dm-text-inverse, var(--dm-white)) !important;
4733
4760
  }
4734
4761
 
4735
4762
  /* Background Tints (Lighter) */
@@ -4773,23 +4800,25 @@ code {
4773
4800
  }
4774
4801
 
4775
4802
  .text-secondary {
4776
- color: var(--dm-secondary) !important;
4803
+ color: var(--dm-text-secondary) !important;
4777
4804
  }
4778
4805
 
4806
+ /* Status text utilities use color-mix with --dm-text so they auto-adapt to
4807
+ light/dark modes — keeping brand identity while staying ≥4.5:1 readable. */
4779
4808
  .text-success {
4780
- color: var(--dm-success) !important;
4809
+ color: color-mix(in oklab, var(--dm-success), var(--dm-text) 30%) !important;
4781
4810
  }
4782
4811
 
4783
4812
  .text-danger {
4784
- color: var(--dm-danger) !important;
4813
+ color: color-mix(in oklab, var(--dm-danger), var(--dm-text) 30%) !important;
4785
4814
  }
4786
4815
 
4787
4816
  .text-warning {
4788
- color: var(--dm-warning) !important;
4817
+ color: color-mix(in oklab, var(--dm-warning), var(--dm-text) 45%) !important;
4789
4818
  }
4790
4819
 
4791
4820
  .text-info {
4792
- color: var(--dm-info) !important;
4821
+ color: color-mix(in oklab, var(--dm-info), var(--dm-text) 30%) !important;
4793
4822
  }
4794
4823
 
4795
4824
  .text-muted {
@@ -4899,7 +4928,7 @@ code {
4899
4928
 
4900
4929
  .dm-treeview-badge {
4901
4930
  background-color: var(--dm-primary);
4902
- color: var(--dm-white);
4931
+ color: var(--dm-primary-text, var(--dm-white));
4903
4932
  font-size: 0.75rem;
4904
4933
  font-weight: 600;
4905
4934
  padding: 0.125rem 0.5rem;
@@ -5022,7 +5051,7 @@ code {
5022
5051
  /* Start button - green/success */
5023
5052
  .dm-timer-start {
5024
5053
  background-color: var(--dm-success);
5025
- color: var(--dm-white);
5054
+ color: var(--dm-success-text, var(--dm-white));
5026
5055
  border-color: var(--dm-success);
5027
5056
  }
5028
5057
 
@@ -5038,7 +5067,7 @@ code {
5038
5067
  /* Pause button - warning/orange */
5039
5068
  .dm-timer-pause {
5040
5069
  background-color: var(--dm-warning);
5041
- color: var(--dm-white);
5070
+ color: var(--dm-warning-text, var(--dm-white));
5042
5071
  border-color: var(--dm-warning);
5043
5072
  }
5044
5073
 
@@ -5054,7 +5083,7 @@ code {
5054
5083
  /* Reset button - secondary/gray */
5055
5084
  .dm-timer-reset {
5056
5085
  background-color: var(--dm-secondary);
5057
- color: var(--dm-white);
5086
+ color: var(--dm-secondary-text, var(--dm-white));
5058
5087
  border-color: var(--dm-secondary);
5059
5088
  }
5060
5089
 
@@ -5097,7 +5126,7 @@ code {
5097
5126
  position: absolute;
5098
5127
  z-index: 9999;
5099
5128
  background-color: var(--dm-background);
5100
- color: var(--dm-white);
5129
+ color: var(--dm-text);
5101
5130
  padding: 0.5rem 0.75rem;
5102
5131
  border-radius: var(--dm-radius-md);
5103
5132
  font-size: 0.875rem;
@@ -5308,7 +5337,7 @@ code {
5308
5337
  max-width: 350px;
5309
5338
  padding: 1rem;
5310
5339
  background-color: var(--dm-surface);
5311
- color: var(--dm-white);
5340
+ color: var(--dm-text);
5312
5341
  border-radius: var(--dm-radius-md);
5313
5342
  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
5314
5343
  opacity: 0;
@@ -5337,7 +5366,7 @@ code {
5337
5366
 
5338
5367
  .domma-toast.domma-toast-warning {
5339
5368
  background-color: var(--dm-warning);
5340
- color: var(--dm-text);
5369
+ color: var(--dm-warning-text, var(--dm-text));
5341
5370
  }
5342
5371
 
5343
5372
  .domma-toast.domma-toast-info {
@@ -5402,7 +5431,7 @@ code {
5402
5431
  height: 2.5rem;
5403
5432
  padding: 0;
5404
5433
  background-color: var(--dm-primary);
5405
- color: var(--dm-white);
5434
+ color: var(--dm-primary-text, var(--dm-white));
5406
5435
  border: none;
5407
5436
  border-radius: var(--dm-radius-full);
5408
5437
  cursor: pointer;
@@ -5729,7 +5758,7 @@ code {
5729
5758
  .domma-table-regex-button.active {
5730
5759
  border-color: var(--dm-primary);
5731
5760
  background: var(--dm-primary);
5732
- color: var(--dm-white);
5761
+ color: var(--dm-primary-text, var(--dm-white));
5733
5762
  }
5734
5763
 
5735
5764
  .domma-table-regex-button:hover:not(.active) {
@@ -5862,7 +5891,7 @@ code {
5862
5891
  .domma-table-export-button:hover {
5863
5892
  background: var(--dm-primary);
5864
5893
  border-color: var(--dm-primary);
5865
- color: var(--dm-white);
5894
+ color: var(--dm-primary-text, var(--dm-white));
5866
5895
  }
5867
5896
 
5868
5897
  /* Dark theme support */
@@ -5906,7 +5935,7 @@ code {
5906
5935
  [data-mode="dark"] .domma-table-export-button:hover {
5907
5936
  background: var(--dm-primary);
5908
5937
  border-color: var(--dm-primary);
5909
- color: var(--dm-white);
5938
+ color: var(--dm-primary-text, var(--dm-white));
5910
5939
  }
5911
5940
 
5912
5941
  [data-mode="dark"] .domma-column-dropdown {
@@ -6232,7 +6261,7 @@ code {
6232
6261
  width: 120px;
6233
6262
  padding: var(--dm-space-2) var(--dm-space-3);
6234
6263
  background: var(--dm-primary);
6235
- color: var(--dm-white);
6264
+ color: var(--dm-primary-text, var(--dm-white));
6236
6265
  border-radius: var(--dm-radius-md);
6237
6266
  text-align: center;
6238
6267
  font-weight: 600;
@@ -6327,16 +6356,17 @@ code {
6327
6356
  /* Dark Theme Support */
6328
6357
  [data-mode="dark"] .dm-timeline-content {
6329
6358
  background: var(--dm-surface);
6330
- border-color: var(--dm-text);
6331
- color: var(--dm-text-secondary);
6359
+ border-color: var(--dm-border);
6360
+ color: var(--dm-text);
6332
6361
  }
6333
6362
 
6334
6363
  [data-mode="dark"] .dm-timeline-title {
6335
- color: var(--dm-white);
6364
+ color: var(--dm-text);
6336
6365
  }
6337
6366
 
6338
6367
  [data-mode="dark"] .dm-timeline-description {
6339
- color: var(--dm-text-disabled);
6368
+ color: var(--dm-text);
6369
+ opacity: 0.85;
6340
6370
  }
6341
6371
 
6342
6372
  [data-mode="dark"] .dm-timeline-minimal .dm-timeline-content {
@@ -6390,14 +6420,15 @@ code {
6390
6420
  margin: 0 0 var(--dm-space-2);
6391
6421
  font-size: var(--dm-font-size-lg);
6392
6422
  font-weight: 600;
6393
- color: var(--dm-text-primary);
6423
+ color: var(--dm-text);
6394
6424
  }
6395
6425
 
6396
6426
  .dm-progression-description {
6397
6427
  margin: 0;
6398
6428
  font-size: var(--dm-font-size-base);
6399
- color: var(--dm-text-secondary);
6429
+ color: var(--dm-text);
6400
6430
  line-height: 1.6;
6431
+ opacity: 0.85;
6401
6432
  }
6402
6433
 
6403
6434
  /* Vertical layout (default) */
@@ -6666,17 +6697,17 @@ code {
6666
6697
 
6667
6698
  .dm-progression-priority-medium {
6668
6699
  background: var(--dm-info-light, rgba(59, 130, 246, 0.1));
6669
- color: var(--dm-info, #3b82f6);
6700
+ color: var(--dm-text);
6670
6701
  }
6671
6702
 
6672
6703
  .dm-progression-priority-high {
6673
6704
  background: var(--dm-warning-light, rgba(245, 158, 11, 0.1));
6674
- color: var(--dm-warning, #f59e0b);
6705
+ color: var(--dm-text);
6675
6706
  }
6676
6707
 
6677
6708
  .dm-progression-priority-critical {
6678
6709
  background: var(--dm-danger-light, rgba(239, 68, 68, 0.1));
6679
- color: var(--dm-danger, #ef4444);
6710
+ color: var(--dm-text);
6680
6711
  }
6681
6712
 
6682
6713
  /* Tags */
@@ -6689,7 +6720,7 @@ code {
6689
6720
 
6690
6721
  .dm-progression-tag {
6691
6722
  background: var(--dm-primary-light, rgba(59, 130, 246, 0.1));
6692
- color: var(--dm-primary, #3b82f6);
6723
+ color: var(--dm-text);
6693
6724
  padding: 2px 8px;
6694
6725
  border-radius: var(--dm-radius-sm);
6695
6726
  font-size: var(--dm-font-size-xs);
@@ -7254,7 +7285,7 @@ code {
7254
7285
 
7255
7286
  .signature-mode-btn.active {
7256
7287
  background: var(--dm-primary);
7257
- color: #fff;
7288
+ color: var(--dm-primary-text, #fff);
7258
7289
  }
7259
7290
 
7260
7291
  .signature-mode-btn:not(.active):hover {