domma-js 0.39.2 → 0.41.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,8 +1,8 @@
1
1
  /*!
2
- * Domma Complete CSS Bundle v0.39.2
2
+ * Domma Complete CSS Bundle v0.41.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-08-21T12:14:59.775Z
5
+ * Built: 2026-08-22T13:41:49.437Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.39.2
14
+ * Domma Core CSS v0.41.0
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-08-21T12:14:59.633Z
18
- * Commit: c7a693e
17
+ * Built: 2026-08-22T13:41:49.294Z
18
+ * Commit: 5d8b7e1
19
19
  */
20
20
 
21
21
  /**
@@ -2197,7 +2197,7 @@ code, pre {
2197
2197
 
2198
2198
  /* ============================================
2199
2199
  OPACITY SCALE
2200
- Full graduated opacity scale (0–100)
2200
+ Full graduated opacity scale (0-100)
2201
2201
  ============================================ */
2202
2202
 
2203
2203
  .opacity-0 { opacity: 0; }
@@ -2234,7 +2234,7 @@ code, pre {
2234
2234
  transition: opacity var(--dm-transition-normal);
2235
2235
  }
2236
2236
 
2237
- /* Frosted glass — semi-transparent background + blur */
2237
+ /* Frosted glass - semi-transparent background + blur */
2238
2238
  .translucent-glass {
2239
2239
  background-color: rgba(255, 255, 255, var(--dm-translucent-glass-opacity));
2240
2240
  backdrop-filter: blur(var(--dm-translucent-glass-blur));
@@ -2242,7 +2242,7 @@ code, pre {
2242
2242
  transition: opacity var(--dm-transition-normal);
2243
2243
  }
2244
2244
 
2245
- /* Hover variants — apply translucency on hover */
2245
+ /* Hover variants - apply translucency on hover */
2246
2246
  .translucent-hover:hover {
2247
2247
  opacity: var(--dm-translucent);
2248
2248
  transition: opacity var(--dm-transition-normal);
@@ -4838,11 +4838,11 @@ body.dm-cloaked.dm-ready {
4838
4838
  ============================================ */
4839
4839
 
4840
4840
  /*!
4841
- * Domma Grid CSS v0.39.2
4841
+ * Domma Grid CSS v0.41.0
4842
4842
  * Dynamic Object Manipulation & Modeling API
4843
4843
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4844
- * Built: 2026-08-21T12:14:59.637Z
4845
- * Commit: c7a693e
4844
+ * Built: 2026-08-22T13:41:49.299Z
4845
+ * Commit: 5d8b7e1
4846
4846
  */
4847
4847
 
4848
4848
  /**
@@ -5176,7 +5176,7 @@ body.dm-cloaked.dm-ready {
5176
5176
  gap: var(--dm-space-6, 2rem);
5177
5177
  }
5178
5178
 
5179
- /* Bootstrap 5-style g-* aliases (row gutters — both axes) */
5179
+ /* Bootstrap 5-style g-* aliases (row gutters - both axes) */
5180
5180
  .row.g-0 { gap: 0; }
5181
5181
  .row.g-1 { gap: var(--dm-space-1, 0.25rem); }
5182
5182
  .row.g-2 { gap: var(--dm-space-2, 0.5rem); }
@@ -5463,11 +5463,11 @@ body.dm-cloaked.dm-ready {
5463
5463
  ============================================ */
5464
5464
 
5465
5465
  /*!
5466
- * Domma Elements CSS v0.39.2
5466
+ * Domma Elements CSS v0.41.0
5467
5467
  * Dynamic Object Manipulation & Modeling API
5468
5468
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5469
- * Built: 2026-08-21T12:14:59.641Z
5470
- * Commit: c7a693e
5469
+ * Built: 2026-08-22T13:41:49.303Z
5470
+ * Commit: 5d8b7e1
5471
5471
  */
5472
5472
 
5473
5473
  /**
@@ -5729,8 +5729,13 @@ body.dm-cloaked.dm-ready {
5729
5729
  border-color: var(--dm-primary);
5730
5730
  }
5731
5731
 
5732
+ /* No --dm-primary-text here. That token is the foreground for text drawn ON a
5733
+ primary fill, which is what the header and footer above do. The body has no
5734
+ fill - it sits on the card's own surface - so borrowing the fill foreground
5735
+ put near-black text (#1a1a1a in the dark themes) on a dark surface, at 1.19
5736
+ contrast. Inheriting --dm-text from the card is the correct behaviour. */
5732
5737
  .card-primary .card-body {
5733
- color: var(--dm-primary-text, var(--dm-white));
5738
+ color: var(--dm-text);
5734
5739
  }
5735
5740
 
5736
5741
  .card-primary .card-footer {
@@ -6755,7 +6760,7 @@ textarea:not([class])::placeholder {
6755
6760
  NUMBER BADGE
6756
6761
  ============================================ */
6757
6762
 
6758
- /* Standalone number badge — circular for single digits, pill for multi-digit */
6763
+ /* Standalone number badge - circular for single digits, pill for multi-digit */
6759
6764
  .badge-number {
6760
6765
  display: inline-flex;
6761
6766
  align-items: center;
@@ -6772,7 +6777,7 @@ textarea:not([class])::placeholder {
6772
6777
  color: var(--dm-danger-text, var(--dm-white));
6773
6778
  }
6774
6779
 
6775
- /* Dot indicator — small coloured presence circle */
6780
+ /* Dot indicator - small coloured presence circle */
6776
6781
  .badge-dot {
6777
6782
  display: inline-block;
6778
6783
  width: 0.5rem;
@@ -6787,7 +6792,7 @@ textarea:not([class])::placeholder {
6787
6792
  display: inline-flex;
6788
6793
  }
6789
6794
 
6790
- /* Counter badge — overlapping corner with border ring (classic app-notification style) */
6795
+ /* Counter badge - overlapping corner with border ring (classic app-notification style) */
6791
6796
  .badge-counter {
6792
6797
  position: absolute;
6793
6798
  top: -6px;
@@ -6809,7 +6814,7 @@ textarea:not([class])::placeholder {
6809
6814
  color: var(--dm-danger-text, var(--dm-white));
6810
6815
  }
6811
6816
 
6812
- /* Dot variant of counter — smaller, no text */
6817
+ /* Dot variant of counter - smaller, no text */
6813
6818
  .badge-counter.badge-dot {
6814
6819
  top: -2px;
6815
6820
  right: -2px;
@@ -6863,7 +6868,7 @@ textarea:not([class])::placeholder {
6863
6868
  LIST GROUP
6864
6869
  ============================================ */
6865
6870
 
6866
- /* Container — vertical flex column with rounded corners and clipped overflow */
6871
+ /* Container - vertical flex column with rounded corners and clipped overflow */
6867
6872
  .list-group {
6868
6873
  display: flex;
6869
6874
  flex-direction: column;
@@ -6873,7 +6878,7 @@ textarea:not([class])::placeholder {
6873
6878
  background-color: var(--dm-surface);
6874
6879
  }
6875
6880
 
6876
- /* Each item — flex row, vertically centred, with a bottom separator */
6881
+ /* Each item - flex row, vertically centred, with a bottom separator */
6877
6882
  .list-group-item {
6878
6883
  display: flex;
6879
6884
  align-items: center;
@@ -6891,7 +6896,7 @@ textarea:not([class])::placeholder {
6891
6896
  border-bottom: none;
6892
6897
  }
6893
6898
 
6894
- /* Flush modifier — strip outer border and radius for embedding inside cards */
6899
+ /* Flush modifier - strip outer border and radius for embedding inside cards */
6895
6900
  .list-group-flush {
6896
6901
  border: none;
6897
6902
  border-radius: 0;
@@ -6913,7 +6918,7 @@ textarea:not([class])::placeholder {
6913
6918
  font-size: var(--dm-font-size-base);
6914
6919
  }
6915
6920
 
6916
- /* Actionable items — pointer cursor and hover highlight */
6921
+ /* Actionable items - pointer cursor and hover highlight */
6917
6922
  .list-group-item-action {
6918
6923
  cursor: pointer;
6919
6924
  user-select: none;
@@ -6937,7 +6942,7 @@ textarea:not([class])::placeholder {
6937
6942
  justify-content: center;
6938
6943
  }
6939
6944
 
6940
- /* Central text wrapper — grows to fill available space */
6945
+ /* Central text wrapper - grows to fill available space */
6941
6946
  .list-group-item-content {
6942
6947
  flex-grow: 1;
6943
6948
  min-width: 0;
@@ -6965,7 +6970,7 @@ textarea:not([class])::placeholder {
6965
6970
  text-overflow: ellipsis;
6966
6971
  }
6967
6972
 
6968
- /* Right-side trailing area — badges, timestamps, actions */
6973
+ /* Right-side trailing area - badges, timestamps, actions */
6969
6974
  .list-group-item-trailing {
6970
6975
  flex-shrink: 0;
6971
6976
  margin-left: auto;
@@ -6975,7 +6980,7 @@ textarea:not([class])::placeholder {
6975
6980
  gap: var(--dm-space-2);
6976
6981
  }
6977
6982
 
6978
- /* Active/selected state — accent background takes precedence over colour variants */
6983
+ /* Active/selected state - accent background takes precedence over colour variants */
6979
6984
  .list-group-item.active {
6980
6985
  background-color: var(--dm-primary);
6981
6986
  color: var(--dm-primary-text, var(--dm-white));
@@ -6987,7 +6992,7 @@ textarea:not([class])::placeholder {
6987
6992
  color: rgba(255, 255, 255, 0.75);
6988
6993
  }
6989
6994
 
6990
- /* Disabled state — dimmed and non-interactive */
6995
+ /* Disabled state - dimmed and non-interactive */
6991
6996
  .list-group-item.disabled {
6992
6997
  opacity: 0.7;
6993
6998
  cursor: not-allowed;
@@ -7067,7 +7072,7 @@ textarea:not([class])::placeholder {
7067
7072
  border-top-color: var(--dm-border);
7068
7073
  }
7069
7074
 
7070
- /* Numbered list — CSS counter prepended to each item */
7075
+ /* Numbered list - CSS counter prepended to each item */
7071
7076
  .list-group-numbered {
7072
7077
  list-style-type: none;
7073
7078
  counter-reset: list-group-counter;
@@ -7083,7 +7088,7 @@ textarea:not([class])::placeholder {
7083
7088
  color: var(--dm-text-muted);
7084
7089
  }
7085
7090
 
7086
- /* Horizontal layout — items arranged in a row */
7091
+ /* Horizontal layout - items arranged in a row */
7087
7092
  .list-group-horizontal {
7088
7093
  flex-direction: row;
7089
7094
  }
@@ -7645,10 +7650,25 @@ code {
7645
7650
  border-radius: 0;
7646
7651
  }
7647
7652
 
7653
+ /* The active link used to take --dm-primary as its text colour. --dm-primary is
7654
+ a mid-tone in several theme families, so on the navbar surface it measured as
7655
+ low as 1.72 (lemon-light). Primary stays as the accent - the tinted pill and
7656
+ the underline - but the text itself uses the one token guaranteed to read on
7657
+ this surface. */
7658
+ /* The active link used to take --dm-primary as its text colour. --dm-primary is
7659
+ a mid-tone in several theme families, so on the navbar surface it measured as
7660
+ low as 1.72 (lemon-light).
7661
+
7662
+ The affordance is now the primary underline plus the weight, and the text
7663
+ uses the one token guaranteed to read on this surface. Deliberately no pill
7664
+ background: a tint of --dm-primary shifts the bar toward the text colour in
7665
+ the themes where primary is light, which cost ~2 points of contrast on the
7666
+ already-tightest combination (dark theme + .navbar-light). Underline only
7667
+ means the active state can never read worse than the brand beside it. */
7648
7668
  .navbar-link.active {
7649
- color: var(--dm-primary);
7669
+ color: var(--dm-navbar-text);
7650
7670
  font-weight: 500;
7651
- background-color: color-mix(in srgb, var(--dm-primary) 10%, transparent);
7671
+ box-shadow: inset 0 -2px 0 0 var(--dm-primary);
7652
7672
  }
7653
7673
 
7654
7674
  .nav-version {
@@ -7656,78 +7676,77 @@ code {
7656
7676
  color: var(--dm-text-secondary, #eee);
7657
7677
  }
7658
7678
 
7659
- /* Light navbar variant */
7660
-
7661
- .navbar-light {
7662
- background-color: var(--dm-surface);
7663
- border-bottom-color: var(--dm-border);
7664
- }
7679
+ /* ---------------------------------------------------------------------------
7680
+ Navbar variants
7665
7681
 
7666
- .navbar-light .navbar-brand,
7667
- .navbar-light .navbar-brand-text {
7668
- color: var(--dm-text);
7669
- }
7682
+ These predate the theme system and used to be written as absolute colours:
7683
+ .navbar-dark painted the bar with --dm-background and its text with
7684
+ --dm-text-inverse. Those two tokens resolve to the SAME value in every dark
7685
+ theme (both are the theme's darkest slate), so the brand rendered at 1.00
7686
+ contrast - invisible, on every dark theme, in every consumer. .navbar-light
7687
+ failed the mirror way in light themes: a white bar with white text, and an
7688
+ active link at 2.56.
7670
7689
 
7671
- .navbar-light .navbar-link {
7672
- color: var(--dm-text-secondary);
7673
- }
7690
+ Every theme already ships the pair meant for this job - --dm-navbar-bg (the
7691
+ theme's navbar surface) and --dm-navbar-text (text guaranteed to read on it).
7692
+ So the variants are now tint modifiers on that surface rather than absolute
7693
+ colours: "dark" sits a shade below the theme's navbar, "light" a shade above.
7694
+ The two stay visually distinct, both follow the theme, and neither can
7695
+ collide with its own foreground.
7674
7696
 
7675
- .navbar-light .navbar-link:hover {
7676
- color: #ffffff !important;
7677
- background-color: #1e293b !important;
7678
- border-radius: var(--dm-radius-md);
7679
- }
7697
+ Measured worst case across 21 themes x both variants: 5.78 (was 1.00).
7698
+ --------------------------------------------------------------------------- */
7680
7699
 
7681
- /* Force dark hover in light mode using data-mode attribute */
7682
- [data-mode="light"] .navbar-link:hover {
7683
- color: #ffffff !important;
7684
- background-color: #1e293b !important;
7685
- border-radius: var(--dm-radius-md);
7686
- }
7687
-
7688
- .navbar-light .navbar-toggle {
7689
- color: var(--dm-text);
7690
- }
7700
+ /* Light navbar variant */
7691
7701
 
7692
- .navbar-light .navbar-toggle:hover {
7693
- background: var(--dm-background-alt);
7694
- color: var(--dm-text);
7702
+ .navbar-light {
7703
+ background-color: color-mix(in srgb, #fff 18%, var(--dm-navbar-bg));
7704
+ border-bottom-color: var(--dm-border);
7695
7705
  }
7696
7706
 
7697
7707
  /* Dark navbar variant */
7698
7708
 
7699
7709
  .navbar-dark {
7700
- background-color: var(--dm-background);
7710
+ background-color: color-mix(in srgb, #000 18%, var(--dm-navbar-bg));
7701
7711
  border-bottom-color: var(--dm-border-dark);
7702
7712
  }
7703
7713
 
7714
+ .navbar-light .navbar-brand,
7715
+ .navbar-light .navbar-brand-text,
7716
+ .navbar-light .navbar-toggle,
7704
7717
  .navbar-dark .navbar-brand,
7705
- .navbar-dark .navbar-brand-text {
7706
- color: var(--dm-text-inverse, var(--dm-white));
7707
- }
7708
-
7718
+ .navbar-dark .navbar-brand-text,
7709
7719
  .navbar-dark .navbar-toggle {
7710
- color: var(--dm-text-disabled);
7711
- }
7712
-
7713
- .navbar-dark .navbar-toggle:hover {
7714
- background: var(--dm-surface);
7715
- color: var(--dm-text-inverse, var(--dm-white));
7720
+ color: var(--dm-navbar-text);
7716
7721
  }
7717
7722
 
7723
+ /* Slightly muted against the brand, but never below AA. 85% is the floor that
7724
+ clears 4.5 in every theme - 72% dropped grayve/wedding/christmas to 3.8-4.0. */
7725
+ .navbar-light .navbar-link,
7718
7726
  .navbar-dark .navbar-link {
7719
- color: var(--dm-gray-400, #adb5bd);
7727
+ color: color-mix(in srgb, var(--dm-navbar-text) 85%, var(--dm-navbar-bg));
7720
7728
  }
7721
7729
 
7730
+ .navbar-light .navbar-link:hover,
7722
7731
  .navbar-dark .navbar-link:hover {
7723
- background-color: rgba(255, 255, 255, 0.3);
7724
- color: var(--dm-text-inverse, var(--dm-white));
7725
- border-radius: var(--dm-radius-sm);
7732
+ color: var(--dm-navbar-text);
7733
+ background-color: color-mix(in srgb, var(--dm-navbar-text) 12%, transparent);
7734
+ border-radius: var(--dm-radius-md);
7726
7735
  }
7727
7736
 
7728
- .navbar-dark .navbar-link.active {
7729
- background-color: var(--dm-surface);
7730
- color: var(--dm-text-inverse, var(--dm-white));
7737
+ .navbar-light .navbar-toggle:hover,
7738
+ .navbar-dark .navbar-toggle:hover {
7739
+ background: color-mix(in srgb, var(--dm-navbar-text) 12%, transparent);
7740
+ color: var(--dm-navbar-text);
7741
+ }
7742
+
7743
+ /* Legacy forced hover for light mode. Kept as-is for the plain/transparent
7744
+ navbar, but excluded from the two variants above - it carries !important and
7745
+ would otherwise override their theme-derived hover. */
7746
+ [data-mode="light"] .navbar:not(.navbar-light):not(.navbar-dark) .navbar-link:hover {
7747
+ color: #ffffff !important;
7748
+ background-color: #1e293b !important;
7749
+ border-radius: var(--dm-radius-md);
7731
7750
  }
7732
7751
 
7733
7752
  /* Dark navbar collapse border color (mobile) */
@@ -8006,23 +8025,19 @@ code {
8006
8025
  list-style: none;
8007
8026
  }
8008
8027
 
8009
- /* Dark navbar dropdown styles */
8010
- .navbar-dark .navbar-dropdown-menu {
8011
- background: var(--dm-surface);
8012
- border-color: var(--dm-border-dark, var(--dm-border));
8013
- }
8014
-
8015
- .navbar-dark .navbar-dropdown-item {
8016
- color: var(--dm-gray-400, #adb5bd);
8017
- }
8028
+ /* Dark navbar dropdown styles
8018
8029
 
8019
- .navbar-dark .navbar-dropdown-item:hover {
8020
- background: rgba(255, 255, 255, 0.3);
8021
- color: var(--dm-text-inverse, var(--dm-white));
8022
- }
8030
+ The dropdown panel is painted from --dm-surface whatever the bar variant, so
8031
+ the base rules above already render it correctly in both modes. The overrides
8032
+ that used to live here only re-stated that same background while replacing
8033
+ the text with a fixed grey and the hover with --dm-text-inverse over 30%
8034
+ white - which measured 2.56 and 1.00 respectively in every light theme, and
8035
+ 3.25 on hover in the dark ones. The divider was being painted --dm-surface,
8036
+ i.e. the panel's own colour, so it was invisible.
8023
8037
 
8024
- .navbar-dark .navbar-dropdown-divider {
8025
- background: var(--dm-surface);
8038
+ Only the border tint is worth keeping. */
8039
+ .navbar-dark .navbar-dropdown-menu {
8040
+ border-color: var(--dm-border-dark, var(--dm-border));
8026
8041
  }
8027
8042
 
8028
8043
  /* ============================================
@@ -8062,14 +8077,9 @@ code {
8062
8077
  border-radius: var(--dm-radius-md);
8063
8078
  }
8064
8079
 
8065
- .navbar-dark .navbar-submenu-toggle {
8066
- color: var(--dm-gray-400, #adb5bd);
8067
- }
8068
-
8069
- .navbar-dark .navbar-submenu-toggle:hover {
8070
- background: rgba(255, 255, 255, 0.3);
8071
- color: var(--dm-text-inverse, var(--dm-white));
8072
- }
8080
+ /* Same as the dropdown items above - the submenu toggle sits on the panel, not
8081
+ on the bar, so the base --dm-text / --dm-hover-bg pairing is the correct one
8082
+ and the fixed grey plus --dm-text-inverse overrides have been removed. */
8073
8083
 
8074
8084
  /* Submenu caret points to the side to signal a fly-out */
8075
8085
  .navbar-submenu-toggle .navbar-caret {
@@ -10404,7 +10414,7 @@ code {
10404
10414
  }
10405
10415
 
10406
10416
  /* Status text utilities use color-mix with --dm-text so they auto-adapt to
10407
- light/dark modes — keeping brand identity while staying ≥4.5:1 readable. */
10417
+ light/dark modes - keeping brand identity while staying ≥4.5:1 readable. */
10408
10418
  .text-success {
10409
10419
  color: color-mix(in oklab, var(--dm-success), var(--dm-text) 30%) !important;
10410
10420
  }
@@ -10810,7 +10820,7 @@ code {
10810
10820
  /*
10811
10821
  * Hover bridge: the menu is rendered as a document.body sibling positioned with a
10812
10822
  * small offset/margin gap from its trigger. On a hover-triggered dropdown that gap
10813
- * is a dead-zone — the pointer leaves the trigger before reaching the menu, firing
10823
+ * is a dead-zone - the pointer leaves the trigger before reaching the menu, firing
10814
10824
  * the close. These transparent pseudo-elements extend the menu's hoverable area
10815
10825
  * above and below it, so the trigger→menu path is one continuous hover surface.
10816
10826
  * Only present on hover dropdowns, so click dropdowns are unaffected.
@@ -10822,7 +10832,7 @@ code {
10822
10832
  left: 0;
10823
10833
  right: 0;
10824
10834
  height: 0.75rem;
10825
- /* transparent — a hover surface only, never painted */
10835
+ /* transparent - a hover surface only, never painted */
10826
10836
  }
10827
10837
 
10828
10838
  .domma-dropdown-menu-hover::before {
@@ -13033,7 +13043,7 @@ code {
13033
13043
  }
13034
13044
 
13035
13045
  /* ============================================================
13036
- * Chooser — visual option-picker (card/chip × single/multi)
13046
+ * Chooser - visual option-picker (card/chip × single/multi)
13037
13047
  * ============================================================ */
13038
13048
  .domma-chooser {
13039
13049
  --picker-radius: var(--dm-radius);
@@ -13253,7 +13263,7 @@ code {
13253
13263
  }
13254
13264
 
13255
13265
  /* ============================================================
13256
- * Chooser — accent colour, accent style, glow, shadow extensions
13266
+ * Chooser - accent colour, accent style, glow, shadow extensions
13257
13267
  * ============================================================ */
13258
13268
 
13259
13269
  /* Default the accent variables on every chooser */
@@ -13284,7 +13294,7 @@ code {
13284
13294
  0 0 18px color-mix(in srgb, var(--picker-glow-colour) 60%, transparent);
13285
13295
  }
13286
13296
 
13287
- /* Shadow weights — applied to all options */
13297
+ /* Shadow weights - applied to all options */
13288
13298
  .domma-chooser[data-shadow="sm"] .picker-option {
13289
13299
  box-shadow: 0 1px 2px var(--picker-shadow-colour, rgba(0, 0, 0, 0.08));
13290
13300
  }
@@ -13372,7 +13382,7 @@ code {
13372
13382
  }
13373
13383
 
13374
13384
  /* ============================================================
13375
- * Page-roller chooser slideover — structured editor styling
13385
+ * Page-roller chooser slideover - structured editor styling
13376
13386
  * ============================================================ */
13377
13387
  .qr-chooser-slideover-body {
13378
13388
  padding: 1.25rem;
@@ -13570,11 +13580,11 @@ code {
13570
13580
  ============================================ */
13571
13581
 
13572
13582
  /*!
13573
- * Domma Themes v0.39.2
13583
+ * Domma Themes v0.41.0
13574
13584
  * Dynamic Object Manipulation & Modeling API
13575
13585
  * (c) 2026 Darryl Waterhouse & DCBW-IT
13576
- * Built: 2026-08-21T12:14:59.620Z
13577
- * Commit: c7a693e
13586
+ * Built: 2026-08-22T13:41:49.280Z
13587
+ * Commit: 5d8b7e1
13578
13588
  */
13579
13589
 
13580
13590
  /**
@@ -16794,7 +16804,7 @@ code {
16794
16804
  --dm-info-hover-text: #1a1a1a;
16795
16805
  }
16796
16806
  /**
16797
- * Domma Christmas Light Theme — "Frosty Morning"
16807
+ * Domma Christmas Light Theme - "Frosty Morning"
16798
16808
  * Ice-blue tinted backgrounds evoking frost on windows, deep pine-green text
16799
16809
  * Classic Christmas Red primary, rich Holly Green secondary
16800
16810
  */
@@ -17038,10 +17048,10 @@ code {
17038
17048
  }
17039
17049
 
17040
17050
  /* ============================================================
17041
- DECORATIVE CSS — "Frosty Morning" festive embellishments
17051
+ DECORATIVE CSS - "Frosty Morning" festive embellishments
17042
17052
  ============================================================ */
17043
17053
 
17044
- /* Snow-dust background — subtle radial dots on the page root */
17054
+ /* Snow-dust background - subtle radial dots on the page root */
17045
17055
  .dm-theme-christmas-light {
17046
17056
  background-image:
17047
17057
  radial-gradient(circle, rgba(168, 213, 229, 0.35) 1px, transparent 1px),
@@ -17057,7 +17067,7 @@ code {
17057
17067
  border-image-slice: 1;
17058
17068
  }
17059
17069
 
17060
- /* Candy-stripe progress bars (default + plain variant only — variants keep their semantic colour) */
17070
+ /* Candy-stripe progress bars (default + plain variant only - variants keep their semantic colour) */
17061
17071
  .dm-theme-christmas-light .dm-progression-progress-bar,
17062
17072
  .dm-theme-christmas-light .progress > .progress-bar:not([class*="progress-bar-"]) {
17063
17073
  background-image: repeating-linear-gradient(
@@ -17071,7 +17081,7 @@ code {
17071
17081
  color: #ffffff;
17072
17082
  }
17073
17083
 
17074
- /* Festive syntax highlighting — green keywords, red strings, gold functions */
17084
+ /* Festive syntax highlighting - green keywords, red strings, gold functions */
17075
17085
  .dm-theme-christmas-light .code-block .syntax-keyword {
17076
17086
  color: #2D6B3F;
17077
17087
  font-weight: 600;
@@ -17087,7 +17097,7 @@ code {
17087
17097
  }
17088
17098
 
17089
17099
  /**
17090
- * Domma Christmas Dark Theme — "Christmas Eve"
17100
+ * Domma Christmas Dark Theme - "Christmas Eve"
17091
17101
  * Deep forest green backgrounds, pure moonlit-white text, green/red undertones in interaction
17092
17102
  * Bright Holly Green primary, Christmas Red secondary; firelight-ember shadows
17093
17103
  */
@@ -17106,7 +17116,7 @@ code {
17106
17116
  --dm-surface-raised: #243A2C;
17107
17117
  --dm-surface-overlay: #243A2C;
17108
17118
 
17109
- /* Text - Pure snow white; no green tint — moonlight on fresh snow */
17119
+ /* Text - Pure snow white; no green tint - moonlight on fresh snow */
17110
17120
  --dm-text: #FFFFFF;
17111
17121
  --dm-text-secondary: #D0D0D0;
17112
17122
  --dm-text-muted: #a8a8a8;
@@ -17331,10 +17341,10 @@ code {
17331
17341
  }
17332
17342
 
17333
17343
  /* ============================================================
17334
- DECORATIVE CSS — "Christmas Eve" festive embellishments
17344
+ DECORATIVE CSS - "Christmas Eve" festive embellishments
17335
17345
  ============================================================ */
17336
17346
 
17337
- /* Snow-dust background — three festive dot layers: white snow, green pine, red Christmas lights */
17347
+ /* Snow-dust background - three festive dot layers: white snow, green pine, red Christmas lights */
17338
17348
  .dm-theme-christmas-dark {
17339
17349
  background-image:
17340
17350
  radial-gradient(circle, rgba(255, 255, 255, 0.13) 1px, transparent 1px),
@@ -17351,7 +17361,7 @@ code {
17351
17361
  border-image-slice: 1;
17352
17362
  }
17353
17363
 
17354
- /* Candy-stripe progress bars (default + plain variant only — variants keep their semantic colour) */
17364
+ /* Candy-stripe progress bars (default + plain variant only - variants keep their semantic colour) */
17355
17365
  .dm-theme-christmas-dark .dm-progression-progress-bar,
17356
17366
  .dm-theme-christmas-dark .progress > .progress-bar:not([class*="progress-bar-"]) {
17357
17367
  background-image: repeating-linear-gradient(
@@ -17365,7 +17375,7 @@ code {
17365
17375
  color: #1a1a1a;
17366
17376
  }
17367
17377
 
17368
- /* Festive syntax highlighting — brighter versions for dark backgrounds */
17378
+ /* Festive syntax highlighting - brighter versions for dark backgrounds */
17369
17379
  .dm-theme-christmas-dark .code-block .syntax-keyword {
17370
17380
  color: #5CB875;
17371
17381
  font-weight: 600;
@@ -18296,7 +18306,7 @@ code {
18296
18306
 
18297
18307
  /**
18298
18308
  * Domma Grayve Light Theme
18299
- * Slate/cyan monochrome palette — complementary light variant
18309
+ * Slate/cyan monochrome palette - complementary light variant
18300
18310
  * Light mode variant
18301
18311
  */
18302
18312
 
@@ -18530,7 +18540,7 @@ code {
18530
18540
 
18531
18541
  /* Syntax highlighting tokens for grayve-light */
18532
18542
  .dm-theme-grayve-light .code-block .syntax-keyword {
18533
- color: #5a2dcc; /* Deep Purple — darkened for ≥4.5:1 on #f5f5f5 */
18543
+ color: #5a2dcc; /* Deep Purple - darkened for ≥4.5:1 on #f5f5f5 */
18534
18544
  font-weight: 500;
18535
18545
  }
18536
18546
 
@@ -18540,12 +18550,12 @@ code {
18540
18550
  }
18541
18551
 
18542
18552
  .dm-theme-grayve-light .code-block .syntax-function {
18543
- color: #006873; /* Cyan — darkened for ≥4.5:1 on #f5f5f5 */
18553
+ color: #006873; /* Cyan - darkened for ≥4.5:1 on #f5f5f5 */
18544
18554
  }
18545
18555
 
18546
18556
  /**
18547
18557
  * Domma Grayve Dark Theme
18548
- * Slate/cyan monochrome palette — adapted from Bootswatch Slate
18558
+ * Slate/cyan monochrome palette - adapted from Bootswatch Slate
18549
18559
  * Dark mode variant
18550
18560
  */
18551
18561
 
@@ -19255,7 +19265,7 @@ code {
19255
19265
 
19256
19266
  /**
19257
19267
  * Domma Wedding Light Theme
19258
- * Classic antique gold palette — warm, muted, timeless
19268
+ * Classic antique gold palette - warm, muted, timeless
19259
19269
  * Day variant - cream/ivory backgrounds with antique gold highlights
19260
19270
  */
19261
19271
 
@@ -19486,7 +19496,7 @@ code {
19486
19496
 
19487
19497
  /**
19488
19498
  * Domma Wedding Dark Theme
19489
- * Classic antique gold palette — warm, muted, timeless
19499
+ * Classic antique gold palette - warm, muted, timeless
19490
19500
  * Evening variant - deep midnight navy with antique gold highlights
19491
19501
  */
19492
19502
 
@@ -19716,7 +19726,7 @@ code {
19716
19726
 
19717
19727
  /**
19718
19728
  * Domma Admin Smooth · Steel Blue
19719
- * GENERATED by scripts/generate-admin-themes.js — do not edit by hand.
19729
+ * GENERATED by scripts/generate-admin-themes.js - do not edit by hand.
19720
19730
  */
19721
19731
 
19722
19732
  .dm-theme-admin-smooth-steel {
@@ -19854,7 +19864,7 @@ code {
19854
19864
 
19855
19865
  /**
19856
19866
  * Domma Admin Smooth · Indigo
19857
- * GENERATED by scripts/generate-admin-themes.js — do not edit by hand.
19867
+ * GENERATED by scripts/generate-admin-themes.js - do not edit by hand.
19858
19868
  */
19859
19869
 
19860
19870
  .dm-theme-admin-smooth-indigo {
@@ -19992,7 +20002,7 @@ code {
19992
20002
 
19993
20003
  /**
19994
20004
  * Domma Admin Smooth · Teal
19995
- * GENERATED by scripts/generate-admin-themes.js — do not edit by hand.
20005
+ * GENERATED by scripts/generate-admin-themes.js - do not edit by hand.
19996
20006
  */
19997
20007
 
19998
20008
  .dm-theme-admin-smooth-teal {
@@ -20130,7 +20140,7 @@ code {
20130
20140
 
20131
20141
  /**
20132
20142
  * Domma Admin Sharp · Steel Blue
20133
- * GENERATED by scripts/generate-admin-themes.js — do not edit by hand.
20143
+ * GENERATED by scripts/generate-admin-themes.js - do not edit by hand.
20134
20144
  */
20135
20145
 
20136
20146
  .dm-theme-admin-sharp-steel {
@@ -20268,7 +20278,7 @@ code {
20268
20278
 
20269
20279
  /**
20270
20280
  * Domma Admin Sharp · Indigo
20271
- * GENERATED by scripts/generate-admin-themes.js — do not edit by hand.
20281
+ * GENERATED by scripts/generate-admin-themes.js - do not edit by hand.
20272
20282
  */
20273
20283
 
20274
20284
  .dm-theme-admin-sharp-indigo {
@@ -20406,7 +20416,7 @@ code {
20406
20416
 
20407
20417
  /**
20408
20418
  * Domma Admin Sharp · Teal
20409
- * GENERATED by scripts/generate-admin-themes.js — do not edit by hand.
20419
+ * GENERATED by scripts/generate-admin-themes.js - do not edit by hand.
20410
20420
  */
20411
20421
 
20412
20422
  .dm-theme-admin-sharp-teal {