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.
- package/LICENSE +12 -671
- package/assets/types/config.d.ts +1 -1
- package/assets/types/flags.d.ts +1 -1
- package/assets/types/index.d.ts +1 -1
- package/assets/types/models.d.ts +1 -1
- package/package.json +2 -2
- package/public/dist/bundles/domma-complete.css +147 -137
- package/public/dist/bundles/domma-data-focused.css +147 -137
- package/public/dist/bundles/domma-essentials.css +147 -137
- package/public/dist/bundles/domma-full.css +147 -137
- package/public/dist/bundles/domma-minimal.css +12 -12
- package/public/dist/domma-flags.esm.js +3 -3
- package/public/dist/domma-flags.min.js +3 -3
- package/public/dist/domma-syntax.min.js +3 -3
- package/public/dist/domma.css +6 -6
- package/public/dist/domma.esm.js +4 -4
- package/public/dist/domma.min.js +4 -4
- package/public/dist/elements.css +109 -99
- package/public/dist/grid.css +4 -4
- package/public/dist/syntax.css +3 -3
- package/public/dist/themes/domma-themes.css +26 -26
- package/templates/kickstart-spa/.claude/memory/MEMORY.md +5 -5
- package/templates/kickstart-spa/CLAUDE.md +1 -1
- package/templates/kickstart-spa/README.md +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Domma Data-Focused CSS Bundle v0.
|
|
2
|
+
* Domma Data-Focused CSS Bundle v0.41.0
|
|
3
3
|
* Dynamic Object Manipulation & Modeling API
|
|
4
4
|
* (c) 2026 Darryl Waterhouse & DCBW-IT
|
|
5
|
-
* Built: 2026-08-
|
|
5
|
+
* Built: 2026-08-22T13:41:49.434Z
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
/* ============================================
|
|
@@ -11,11 +11,11 @@
|
|
|
11
11
|
============================================ */
|
|
12
12
|
|
|
13
13
|
/*!
|
|
14
|
-
* Domma Core CSS v0.
|
|
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-
|
|
18
|
-
* Commit:
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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-
|
|
4845
|
-
* Commit:
|
|
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
|
|
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.
|
|
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-
|
|
5470
|
-
* Commit:
|
|
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-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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-
|
|
7669
|
+
color: var(--dm-navbar-text);
|
|
7650
7670
|
font-weight: 500;
|
|
7651
|
-
|
|
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
|
-
/*
|
|
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
|
-
|
|
7667
|
-
.navbar-
|
|
7668
|
-
|
|
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
|
-
|
|
7672
|
-
|
|
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
|
-
.
|
|
7676
|
-
|
|
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
|
-
/*
|
|
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
|
|
7693
|
-
background: var(--dm-
|
|
7694
|
-
color: var(--dm-
|
|
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-
|
|
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
|
|
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-
|
|
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
|
-
|
|
7724
|
-
color:
|
|
7725
|
-
border-radius: var(--dm-radius-
|
|
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-
|
|
7729
|
-
|
|
7730
|
-
|
|
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
|
-
|
|
8020
|
-
|
|
8021
|
-
|
|
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
|
-
|
|
8025
|
-
|
|
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
|
-
|
|
8066
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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-
|
|
13577
|
-
* Commit:
|
|
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
|
|
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
|
|
17051
|
+
DECORATIVE CSS - "Frosty Morning" festive embellishments
|
|
17042
17052
|
============================================================ */
|
|
17043
17053
|
|
|
17044
|
-
/* Snow-dust background
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
17344
|
+
DECORATIVE CSS - "Christmas Eve" festive embellishments
|
|
17335
17345
|
============================================================ */
|
|
17336
17346
|
|
|
17337
|
-
/* Snow-dust background
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
20419
|
+
* GENERATED by scripts/generate-admin-themes.js - do not edit by hand.
|
|
20410
20420
|
*/
|
|
20411
20421
|
|
|
20412
20422
|
.dm-theme-admin-sharp-teal {
|