domma-js 0.51.13 → 0.52.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.
@@ -507,8 +507,12 @@ export interface CarouselOptions {
507
507
  pauseOnHover?: boolean;
508
508
  /** Loop back to start */
509
509
  loop?: boolean;
510
- /** Animation type: 'slide' or 'fade' */
511
- animation?: 'slide' | 'fade';
510
+ /** Animation type */
511
+ animation?: 'slide' | 'fade' | 'crossfade';
512
+ /** Use the shortest scaled image height, or the midpoint of shortest and tallest */
513
+ heightMode?: 'crop' | 'average';
514
+ /** Optional fixed viewport height in pixels */
515
+ height?: number;
512
516
  /** Animation duration in ms */
513
517
  animationDuration?: number;
514
518
  /** Show navigation arrows */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "domma-js",
3
- "version": "0.51.13",
3
+ "version": "0.52.0",
4
4
  "description": "Dynamic Object Manipulation & Modeling API - A complete front-end toolkit.",
5
5
  "main": "public/dist/domma.min.js",
6
6
  "module": "public/dist/domma.esm.js",
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Complete CSS Bundle v0.51.13
2
+ * Domma Complete CSS Bundle v0.52.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-10-13T15:10:34.588Z
5
+ * Built: 2026-10-14T07:25:46.137Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.51.13
14
+ * Domma Core CSS v0.52.0
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-10-13T15:10:34.406Z
18
- * Commit: 85d3945
17
+ * Built: 2026-10-14T07:25:45.969Z
18
+ * Commit: 17bea57
19
19
  */
20
20
 
21
21
  /**
@@ -1620,7 +1620,7 @@ code, pre {
1620
1620
  width: var(--dm-fw-explosion-size);
1621
1621
  height: var(--dm-fw-explosion-size);
1622
1622
  transform: translateX(-50%);
1623
- opacity: 0;
1623
+ opacity: 1;
1624
1624
  animation-delay: 1s; /* Wait for launch */
1625
1625
  }
1626
1626
 
@@ -1728,7 +1728,7 @@ code, pre {
1728
1728
  0 20px 3px 1px var(--dm-fw-color-7),
1729
1729
  0 -20px 0 0 var(--dm-fw-color-8),
1730
1730
  0 -20px 3px 1px var(--dm-fw-color-8);
1731
- animation: dm-firework-sparkle var(--dm-fw-duration) ease-out forwards;
1731
+ animation: dm-fw-sparkle var(--dm-fw-duration) ease-out forwards;
1732
1732
  animation-delay: var(--dm-fw-delay);
1733
1733
  opacity: 0;
1734
1734
  }
@@ -1745,7 +1745,7 @@ code, pre {
1745
1745
  -15px 15px 4px 2px rgba(243, 156, 18, 0.5),
1746
1746
  15px 15px 0 0 var(--dm-fw-color-7),
1747
1747
  15px 15px 4px 2px rgba(253, 121, 168, 0.5);
1748
- animation: dm-firework-sparkle-alt var(--dm-fw-duration) ease-out forwards;
1748
+ animation: dm-fw-sparkle var(--dm-fw-duration) ease-out forwards;
1749
1749
  animation-delay: calc(var(--dm-fw-delay) + 0.2s);
1750
1750
  opacity: 0;
1751
1751
  }
@@ -1760,7 +1760,7 @@ code, pre {
1760
1760
  0 10px 2px 0 rgba(255, 235, 59, 0.6),
1761
1761
  0 15px 2px 0 rgba(255, 235, 59, 0.4),
1762
1762
  0 20px 2px 0 rgba(255, 235, 59, 0.2);
1763
- animation: dm-firework-launch var(--dm-fw-duration) ease-out forwards;
1763
+ animation: dm-fw-launch var(--dm-fw-duration) ease-out forwards;
1764
1764
  animation-delay: var(--dm-fw-delay);
1765
1765
  }
1766
1766
 
@@ -1869,13 +1869,18 @@ code, pre {
1869
1869
 
1870
1870
  /* Continuous animation */
1871
1871
  .firework-continuous::before,
1872
- .firework-continuous::after {
1872
+ .firework-continuous::after,
1873
+ .firework-continuous .firework-launch,
1874
+ .firework-continuous .firework-particles::before,
1875
+ .firework-continuous .firework-particles::after {
1873
1876
  animation-iteration-count: infinite;
1874
1877
  }
1875
1878
 
1876
1879
  /* Trigger on hover */
1877
1880
  .firework-on-hover {
1878
1881
  position: relative;
1882
+ pointer-events: auto;
1883
+ --dm-fw-size: var(--dm-fw-particle-size);
1879
1884
  }
1880
1885
 
1881
1886
  .firework-on-hover::before,
@@ -1909,7 +1914,7 @@ code, pre {
1909
1914
  -35px 35px 0 0 var(--dm-fw-color-7),
1910
1915
  -50px 0 0 0 var(--dm-fw-color-8),
1911
1916
  -35px -35px 0 0 var(--dm-fw-color-1);
1912
- animation: dm-firework-burst 1.5s ease-out forwards;
1917
+ animation: dm-fw-explode 1.5s ease-out forwards;
1913
1918
  }
1914
1919
 
1915
1920
  .firework-on-hover:hover::after {
@@ -1922,7 +1927,7 @@ code, pre {
1922
1927
  -40px 15px 0 0 var(--dm-fw-color-4),
1923
1928
  -40px -15px 0 0 var(--dm-fw-color-6),
1924
1929
  -15px -40px 0 0 var(--dm-fw-color-8);
1925
- animation: dm-firework-burst-secondary 1.5s ease-out forwards;
1930
+ animation: dm-fw-explode-secondary 1.5s ease-out forwards;
1926
1931
  }
1927
1932
 
1928
1933
  /* Keyframe Animations */
@@ -4955,11 +4960,11 @@ body.dm-cloaked.dm-ready {
4955
4960
  ============================================ */
4956
4961
 
4957
4962
  /*!
4958
- * Domma Grid CSS v0.51.13
4963
+ * Domma Grid CSS v0.52.0
4959
4964
  * Dynamic Object Manipulation & Modeling API
4960
4965
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4961
- * Built: 2026-10-13T15:10:34.410Z
4962
- * Commit: 85d3945
4966
+ * Built: 2026-10-14T07:25:45.973Z
4967
+ * Commit: 17bea57
4963
4968
  */
4964
4969
 
4965
4970
  /**
@@ -5580,11 +5585,11 @@ body.dm-cloaked.dm-ready {
5580
5585
  ============================================ */
5581
5586
 
5582
5587
  /*!
5583
- * Domma Elements CSS v0.51.13
5588
+ * Domma Elements CSS v0.52.0
5584
5589
  * Dynamic Object Manipulation & Modeling API
5585
5590
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5586
- * Built: 2026-10-13T15:10:34.415Z
5587
- * Commit: 85d3945
5591
+ * Built: 2026-10-14T07:25:45.977Z
5592
+ * Commit: 17bea57
5588
5593
  */
5589
5594
 
5590
5595
  /**
@@ -9212,6 +9217,23 @@ code {
9212
9217
  display: block;
9213
9218
  }
9214
9219
 
9220
+ /* One viewport for every slide, including fade/crossfade. Images fill it
9221
+ from the top, so different aspect ratios never leave gaps below a photo. */
9222
+ .carousel-sized .carousel-track,
9223
+ .carousel-sized .carousel-slide {
9224
+ height: var(--dm-carousel-height);
9225
+ }
9226
+
9227
+ .carousel-sized .carousel-slide {
9228
+ overflow: hidden;
9229
+ }
9230
+
9231
+ .carousel-sized .carousel-slide > img {
9232
+ height: 100%;
9233
+ object-fit: cover;
9234
+ object-position: center top;
9235
+ }
9236
+
9215
9237
  /* Slide content sits IN FLOW by default, so a text-only slide has height.
9216
9238
  It used to be unconditionally absolute - a caption overlay for a background
9217
9239
  image - which meant a slide with no <img> had nothing in flow at all: the
@@ -15128,11 +15150,11 @@ a.avatar-more-person:hover .avatar-more-name {
15128
15150
  ============================================ */
15129
15151
 
15130
15152
  /*!
15131
- * Domma Themes v0.51.13
15153
+ * Domma Themes v0.52.0
15132
15154
  * Dynamic Object Manipulation & Modeling API
15133
15155
  * (c) 2026 Darryl Waterhouse & DCBW-IT
15134
- * Built: 2026-10-13T15:10:34.387Z
15135
- * Commit: 85d3945
15156
+ * Built: 2026-10-14T07:25:45.956Z
15157
+ * Commit: 17bea57
15136
15158
  */
15137
15159
 
15138
15160
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Data-Focused CSS Bundle v0.51.13
2
+ * Domma Data-Focused CSS Bundle v0.52.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-10-13T15:10:34.584Z
5
+ * Built: 2026-10-14T07:25:46.133Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.51.13
14
+ * Domma Core CSS v0.52.0
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-10-13T15:10:34.406Z
18
- * Commit: 85d3945
17
+ * Built: 2026-10-14T07:25:45.969Z
18
+ * Commit: 17bea57
19
19
  */
20
20
 
21
21
  /**
@@ -1620,7 +1620,7 @@ code, pre {
1620
1620
  width: var(--dm-fw-explosion-size);
1621
1621
  height: var(--dm-fw-explosion-size);
1622
1622
  transform: translateX(-50%);
1623
- opacity: 0;
1623
+ opacity: 1;
1624
1624
  animation-delay: 1s; /* Wait for launch */
1625
1625
  }
1626
1626
 
@@ -1728,7 +1728,7 @@ code, pre {
1728
1728
  0 20px 3px 1px var(--dm-fw-color-7),
1729
1729
  0 -20px 0 0 var(--dm-fw-color-8),
1730
1730
  0 -20px 3px 1px var(--dm-fw-color-8);
1731
- animation: dm-firework-sparkle var(--dm-fw-duration) ease-out forwards;
1731
+ animation: dm-fw-sparkle var(--dm-fw-duration) ease-out forwards;
1732
1732
  animation-delay: var(--dm-fw-delay);
1733
1733
  opacity: 0;
1734
1734
  }
@@ -1745,7 +1745,7 @@ code, pre {
1745
1745
  -15px 15px 4px 2px rgba(243, 156, 18, 0.5),
1746
1746
  15px 15px 0 0 var(--dm-fw-color-7),
1747
1747
  15px 15px 4px 2px rgba(253, 121, 168, 0.5);
1748
- animation: dm-firework-sparkle-alt var(--dm-fw-duration) ease-out forwards;
1748
+ animation: dm-fw-sparkle var(--dm-fw-duration) ease-out forwards;
1749
1749
  animation-delay: calc(var(--dm-fw-delay) + 0.2s);
1750
1750
  opacity: 0;
1751
1751
  }
@@ -1760,7 +1760,7 @@ code, pre {
1760
1760
  0 10px 2px 0 rgba(255, 235, 59, 0.6),
1761
1761
  0 15px 2px 0 rgba(255, 235, 59, 0.4),
1762
1762
  0 20px 2px 0 rgba(255, 235, 59, 0.2);
1763
- animation: dm-firework-launch var(--dm-fw-duration) ease-out forwards;
1763
+ animation: dm-fw-launch var(--dm-fw-duration) ease-out forwards;
1764
1764
  animation-delay: var(--dm-fw-delay);
1765
1765
  }
1766
1766
 
@@ -1869,13 +1869,18 @@ code, pre {
1869
1869
 
1870
1870
  /* Continuous animation */
1871
1871
  .firework-continuous::before,
1872
- .firework-continuous::after {
1872
+ .firework-continuous::after,
1873
+ .firework-continuous .firework-launch,
1874
+ .firework-continuous .firework-particles::before,
1875
+ .firework-continuous .firework-particles::after {
1873
1876
  animation-iteration-count: infinite;
1874
1877
  }
1875
1878
 
1876
1879
  /* Trigger on hover */
1877
1880
  .firework-on-hover {
1878
1881
  position: relative;
1882
+ pointer-events: auto;
1883
+ --dm-fw-size: var(--dm-fw-particle-size);
1879
1884
  }
1880
1885
 
1881
1886
  .firework-on-hover::before,
@@ -1909,7 +1914,7 @@ code, pre {
1909
1914
  -35px 35px 0 0 var(--dm-fw-color-7),
1910
1915
  -50px 0 0 0 var(--dm-fw-color-8),
1911
1916
  -35px -35px 0 0 var(--dm-fw-color-1);
1912
- animation: dm-firework-burst 1.5s ease-out forwards;
1917
+ animation: dm-fw-explode 1.5s ease-out forwards;
1913
1918
  }
1914
1919
 
1915
1920
  .firework-on-hover:hover::after {
@@ -1922,7 +1927,7 @@ code, pre {
1922
1927
  -40px 15px 0 0 var(--dm-fw-color-4),
1923
1928
  -40px -15px 0 0 var(--dm-fw-color-6),
1924
1929
  -15px -40px 0 0 var(--dm-fw-color-8);
1925
- animation: dm-firework-burst-secondary 1.5s ease-out forwards;
1930
+ animation: dm-fw-explode-secondary 1.5s ease-out forwards;
1926
1931
  }
1927
1932
 
1928
1933
  /* Keyframe Animations */
@@ -4955,11 +4960,11 @@ body.dm-cloaked.dm-ready {
4955
4960
  ============================================ */
4956
4961
 
4957
4962
  /*!
4958
- * Domma Grid CSS v0.51.13
4963
+ * Domma Grid CSS v0.52.0
4959
4964
  * Dynamic Object Manipulation & Modeling API
4960
4965
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4961
- * Built: 2026-10-13T15:10:34.410Z
4962
- * Commit: 85d3945
4966
+ * Built: 2026-10-14T07:25:45.973Z
4967
+ * Commit: 17bea57
4963
4968
  */
4964
4969
 
4965
4970
  /**
@@ -5580,11 +5585,11 @@ body.dm-cloaked.dm-ready {
5580
5585
  ============================================ */
5581
5586
 
5582
5587
  /*!
5583
- * Domma Elements CSS v0.51.13
5588
+ * Domma Elements CSS v0.52.0
5584
5589
  * Dynamic Object Manipulation & Modeling API
5585
5590
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5586
- * Built: 2026-10-13T15:10:34.415Z
5587
- * Commit: 85d3945
5591
+ * Built: 2026-10-14T07:25:45.977Z
5592
+ * Commit: 17bea57
5588
5593
  */
5589
5594
 
5590
5595
  /**
@@ -9212,6 +9217,23 @@ code {
9212
9217
  display: block;
9213
9218
  }
9214
9219
 
9220
+ /* One viewport for every slide, including fade/crossfade. Images fill it
9221
+ from the top, so different aspect ratios never leave gaps below a photo. */
9222
+ .carousel-sized .carousel-track,
9223
+ .carousel-sized .carousel-slide {
9224
+ height: var(--dm-carousel-height);
9225
+ }
9226
+
9227
+ .carousel-sized .carousel-slide {
9228
+ overflow: hidden;
9229
+ }
9230
+
9231
+ .carousel-sized .carousel-slide > img {
9232
+ height: 100%;
9233
+ object-fit: cover;
9234
+ object-position: center top;
9235
+ }
9236
+
9215
9237
  /* Slide content sits IN FLOW by default, so a text-only slide has height.
9216
9238
  It used to be unconditionally absolute - a caption overlay for a background
9217
9239
  image - which meant a slide with no <img> had nothing in flow at all: the
@@ -15128,11 +15150,11 @@ a.avatar-more-person:hover .avatar-more-name {
15128
15150
  ============================================ */
15129
15151
 
15130
15152
  /*!
15131
- * Domma Themes v0.51.13
15153
+ * Domma Themes v0.52.0
15132
15154
  * Dynamic Object Manipulation & Modeling API
15133
15155
  * (c) 2026 Darryl Waterhouse & DCBW-IT
15134
- * Built: 2026-10-13T15:10:34.387Z
15135
- * Commit: 85d3945
15156
+ * Built: 2026-10-14T07:25:45.956Z
15157
+ * Commit: 17bea57
15136
15158
  */
15137
15159
 
15138
15160
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Essentials CSS Bundle v0.51.13
2
+ * Domma Essentials CSS Bundle v0.52.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-10-13T15:10:34.575Z
5
+ * Built: 2026-10-14T07:25:46.125Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.51.13
14
+ * Domma Core CSS v0.52.0
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-10-13T15:10:34.406Z
18
- * Commit: 85d3945
17
+ * Built: 2026-10-14T07:25:45.969Z
18
+ * Commit: 17bea57
19
19
  */
20
20
 
21
21
  /**
@@ -1620,7 +1620,7 @@ code, pre {
1620
1620
  width: var(--dm-fw-explosion-size);
1621
1621
  height: var(--dm-fw-explosion-size);
1622
1622
  transform: translateX(-50%);
1623
- opacity: 0;
1623
+ opacity: 1;
1624
1624
  animation-delay: 1s; /* Wait for launch */
1625
1625
  }
1626
1626
 
@@ -1728,7 +1728,7 @@ code, pre {
1728
1728
  0 20px 3px 1px var(--dm-fw-color-7),
1729
1729
  0 -20px 0 0 var(--dm-fw-color-8),
1730
1730
  0 -20px 3px 1px var(--dm-fw-color-8);
1731
- animation: dm-firework-sparkle var(--dm-fw-duration) ease-out forwards;
1731
+ animation: dm-fw-sparkle var(--dm-fw-duration) ease-out forwards;
1732
1732
  animation-delay: var(--dm-fw-delay);
1733
1733
  opacity: 0;
1734
1734
  }
@@ -1745,7 +1745,7 @@ code, pre {
1745
1745
  -15px 15px 4px 2px rgba(243, 156, 18, 0.5),
1746
1746
  15px 15px 0 0 var(--dm-fw-color-7),
1747
1747
  15px 15px 4px 2px rgba(253, 121, 168, 0.5);
1748
- animation: dm-firework-sparkle-alt var(--dm-fw-duration) ease-out forwards;
1748
+ animation: dm-fw-sparkle var(--dm-fw-duration) ease-out forwards;
1749
1749
  animation-delay: calc(var(--dm-fw-delay) + 0.2s);
1750
1750
  opacity: 0;
1751
1751
  }
@@ -1760,7 +1760,7 @@ code, pre {
1760
1760
  0 10px 2px 0 rgba(255, 235, 59, 0.6),
1761
1761
  0 15px 2px 0 rgba(255, 235, 59, 0.4),
1762
1762
  0 20px 2px 0 rgba(255, 235, 59, 0.2);
1763
- animation: dm-firework-launch var(--dm-fw-duration) ease-out forwards;
1763
+ animation: dm-fw-launch var(--dm-fw-duration) ease-out forwards;
1764
1764
  animation-delay: var(--dm-fw-delay);
1765
1765
  }
1766
1766
 
@@ -1869,13 +1869,18 @@ code, pre {
1869
1869
 
1870
1870
  /* Continuous animation */
1871
1871
  .firework-continuous::before,
1872
- .firework-continuous::after {
1872
+ .firework-continuous::after,
1873
+ .firework-continuous .firework-launch,
1874
+ .firework-continuous .firework-particles::before,
1875
+ .firework-continuous .firework-particles::after {
1873
1876
  animation-iteration-count: infinite;
1874
1877
  }
1875
1878
 
1876
1879
  /* Trigger on hover */
1877
1880
  .firework-on-hover {
1878
1881
  position: relative;
1882
+ pointer-events: auto;
1883
+ --dm-fw-size: var(--dm-fw-particle-size);
1879
1884
  }
1880
1885
 
1881
1886
  .firework-on-hover::before,
@@ -1909,7 +1914,7 @@ code, pre {
1909
1914
  -35px 35px 0 0 var(--dm-fw-color-7),
1910
1915
  -50px 0 0 0 var(--dm-fw-color-8),
1911
1916
  -35px -35px 0 0 var(--dm-fw-color-1);
1912
- animation: dm-firework-burst 1.5s ease-out forwards;
1917
+ animation: dm-fw-explode 1.5s ease-out forwards;
1913
1918
  }
1914
1919
 
1915
1920
  .firework-on-hover:hover::after {
@@ -1922,7 +1927,7 @@ code, pre {
1922
1927
  -40px 15px 0 0 var(--dm-fw-color-4),
1923
1928
  -40px -15px 0 0 var(--dm-fw-color-6),
1924
1929
  -15px -40px 0 0 var(--dm-fw-color-8);
1925
- animation: dm-firework-burst-secondary 1.5s ease-out forwards;
1930
+ animation: dm-fw-explode-secondary 1.5s ease-out forwards;
1926
1931
  }
1927
1932
 
1928
1933
  /* Keyframe Animations */
@@ -4955,11 +4960,11 @@ body.dm-cloaked.dm-ready {
4955
4960
  ============================================ */
4956
4961
 
4957
4962
  /*!
4958
- * Domma Grid CSS v0.51.13
4963
+ * Domma Grid CSS v0.52.0
4959
4964
  * Dynamic Object Manipulation & Modeling API
4960
4965
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4961
- * Built: 2026-10-13T15:10:34.410Z
4962
- * Commit: 85d3945
4966
+ * Built: 2026-10-14T07:25:45.973Z
4967
+ * Commit: 17bea57
4963
4968
  */
4964
4969
 
4965
4970
  /**
@@ -5580,11 +5585,11 @@ body.dm-cloaked.dm-ready {
5580
5585
  ============================================ */
5581
5586
 
5582
5587
  /*!
5583
- * Domma Elements CSS v0.51.13
5588
+ * Domma Elements CSS v0.52.0
5584
5589
  * Dynamic Object Manipulation & Modeling API
5585
5590
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5586
- * Built: 2026-10-13T15:10:34.415Z
5587
- * Commit: 85d3945
5591
+ * Built: 2026-10-14T07:25:45.977Z
5592
+ * Commit: 17bea57
5588
5593
  */
5589
5594
 
5590
5595
  /**
@@ -9212,6 +9217,23 @@ code {
9212
9217
  display: block;
9213
9218
  }
9214
9219
 
9220
+ /* One viewport for every slide, including fade/crossfade. Images fill it
9221
+ from the top, so different aspect ratios never leave gaps below a photo. */
9222
+ .carousel-sized .carousel-track,
9223
+ .carousel-sized .carousel-slide {
9224
+ height: var(--dm-carousel-height);
9225
+ }
9226
+
9227
+ .carousel-sized .carousel-slide {
9228
+ overflow: hidden;
9229
+ }
9230
+
9231
+ .carousel-sized .carousel-slide > img {
9232
+ height: 100%;
9233
+ object-fit: cover;
9234
+ object-position: center top;
9235
+ }
9236
+
9215
9237
  /* Slide content sits IN FLOW by default, so a text-only slide has height.
9216
9238
  It used to be unconditionally absolute - a caption overlay for a background
9217
9239
  image - which meant a slide with no <img> had nothing in flow at all: the
@@ -15128,11 +15150,11 @@ a.avatar-more-person:hover .avatar-more-name {
15128
15150
  ============================================ */
15129
15151
 
15130
15152
  /*!
15131
- * Domma Themes v0.51.13
15153
+ * Domma Themes v0.52.0
15132
15154
  * Dynamic Object Manipulation & Modeling API
15133
15155
  * (c) 2026 Darryl Waterhouse & DCBW-IT
15134
- * Built: 2026-10-13T15:10:34.387Z
15135
- * Commit: 85d3945
15156
+ * Built: 2026-10-14T07:25:45.956Z
15157
+ * Commit: 17bea57
15136
15158
  */
15137
15159
 
15138
15160
  /**
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Full CSS Bundle v0.51.13
2
+ * Domma Full CSS Bundle v0.52.0
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-10-13T15:10:34.580Z
5
+ * Built: 2026-10-14T07:25:46.130Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.51.13
14
+ * Domma Core CSS v0.52.0
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-10-13T15:10:34.406Z
18
- * Commit: 85d3945
17
+ * Built: 2026-10-14T07:25:45.969Z
18
+ * Commit: 17bea57
19
19
  */
20
20
 
21
21
  /**
@@ -1620,7 +1620,7 @@ code, pre {
1620
1620
  width: var(--dm-fw-explosion-size);
1621
1621
  height: var(--dm-fw-explosion-size);
1622
1622
  transform: translateX(-50%);
1623
- opacity: 0;
1623
+ opacity: 1;
1624
1624
  animation-delay: 1s; /* Wait for launch */
1625
1625
  }
1626
1626
 
@@ -1728,7 +1728,7 @@ code, pre {
1728
1728
  0 20px 3px 1px var(--dm-fw-color-7),
1729
1729
  0 -20px 0 0 var(--dm-fw-color-8),
1730
1730
  0 -20px 3px 1px var(--dm-fw-color-8);
1731
- animation: dm-firework-sparkle var(--dm-fw-duration) ease-out forwards;
1731
+ animation: dm-fw-sparkle var(--dm-fw-duration) ease-out forwards;
1732
1732
  animation-delay: var(--dm-fw-delay);
1733
1733
  opacity: 0;
1734
1734
  }
@@ -1745,7 +1745,7 @@ code, pre {
1745
1745
  -15px 15px 4px 2px rgba(243, 156, 18, 0.5),
1746
1746
  15px 15px 0 0 var(--dm-fw-color-7),
1747
1747
  15px 15px 4px 2px rgba(253, 121, 168, 0.5);
1748
- animation: dm-firework-sparkle-alt var(--dm-fw-duration) ease-out forwards;
1748
+ animation: dm-fw-sparkle var(--dm-fw-duration) ease-out forwards;
1749
1749
  animation-delay: calc(var(--dm-fw-delay) + 0.2s);
1750
1750
  opacity: 0;
1751
1751
  }
@@ -1760,7 +1760,7 @@ code, pre {
1760
1760
  0 10px 2px 0 rgba(255, 235, 59, 0.6),
1761
1761
  0 15px 2px 0 rgba(255, 235, 59, 0.4),
1762
1762
  0 20px 2px 0 rgba(255, 235, 59, 0.2);
1763
- animation: dm-firework-launch var(--dm-fw-duration) ease-out forwards;
1763
+ animation: dm-fw-launch var(--dm-fw-duration) ease-out forwards;
1764
1764
  animation-delay: var(--dm-fw-delay);
1765
1765
  }
1766
1766
 
@@ -1869,13 +1869,18 @@ code, pre {
1869
1869
 
1870
1870
  /* Continuous animation */
1871
1871
  .firework-continuous::before,
1872
- .firework-continuous::after {
1872
+ .firework-continuous::after,
1873
+ .firework-continuous .firework-launch,
1874
+ .firework-continuous .firework-particles::before,
1875
+ .firework-continuous .firework-particles::after {
1873
1876
  animation-iteration-count: infinite;
1874
1877
  }
1875
1878
 
1876
1879
  /* Trigger on hover */
1877
1880
  .firework-on-hover {
1878
1881
  position: relative;
1882
+ pointer-events: auto;
1883
+ --dm-fw-size: var(--dm-fw-particle-size);
1879
1884
  }
1880
1885
 
1881
1886
  .firework-on-hover::before,
@@ -1909,7 +1914,7 @@ code, pre {
1909
1914
  -35px 35px 0 0 var(--dm-fw-color-7),
1910
1915
  -50px 0 0 0 var(--dm-fw-color-8),
1911
1916
  -35px -35px 0 0 var(--dm-fw-color-1);
1912
- animation: dm-firework-burst 1.5s ease-out forwards;
1917
+ animation: dm-fw-explode 1.5s ease-out forwards;
1913
1918
  }
1914
1919
 
1915
1920
  .firework-on-hover:hover::after {
@@ -1922,7 +1927,7 @@ code, pre {
1922
1927
  -40px 15px 0 0 var(--dm-fw-color-4),
1923
1928
  -40px -15px 0 0 var(--dm-fw-color-6),
1924
1929
  -15px -40px 0 0 var(--dm-fw-color-8);
1925
- animation: dm-firework-burst-secondary 1.5s ease-out forwards;
1930
+ animation: dm-fw-explode-secondary 1.5s ease-out forwards;
1926
1931
  }
1927
1932
 
1928
1933
  /* Keyframe Animations */
@@ -4955,11 +4960,11 @@ body.dm-cloaked.dm-ready {
4955
4960
  ============================================ */
4956
4961
 
4957
4962
  /*!
4958
- * Domma Grid CSS v0.51.13
4963
+ * Domma Grid CSS v0.52.0
4959
4964
  * Dynamic Object Manipulation & Modeling API
4960
4965
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4961
- * Built: 2026-10-13T15:10:34.410Z
4962
- * Commit: 85d3945
4966
+ * Built: 2026-10-14T07:25:45.973Z
4967
+ * Commit: 17bea57
4963
4968
  */
4964
4969
 
4965
4970
  /**
@@ -5580,11 +5585,11 @@ body.dm-cloaked.dm-ready {
5580
5585
  ============================================ */
5581
5586
 
5582
5587
  /*!
5583
- * Domma Elements CSS v0.51.13
5588
+ * Domma Elements CSS v0.52.0
5584
5589
  * Dynamic Object Manipulation & Modeling API
5585
5590
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5586
- * Built: 2026-10-13T15:10:34.415Z
5587
- * Commit: 85d3945
5591
+ * Built: 2026-10-14T07:25:45.977Z
5592
+ * Commit: 17bea57
5588
5593
  */
5589
5594
 
5590
5595
  /**
@@ -9212,6 +9217,23 @@ code {
9212
9217
  display: block;
9213
9218
  }
9214
9219
 
9220
+ /* One viewport for every slide, including fade/crossfade. Images fill it
9221
+ from the top, so different aspect ratios never leave gaps below a photo. */
9222
+ .carousel-sized .carousel-track,
9223
+ .carousel-sized .carousel-slide {
9224
+ height: var(--dm-carousel-height);
9225
+ }
9226
+
9227
+ .carousel-sized .carousel-slide {
9228
+ overflow: hidden;
9229
+ }
9230
+
9231
+ .carousel-sized .carousel-slide > img {
9232
+ height: 100%;
9233
+ object-fit: cover;
9234
+ object-position: center top;
9235
+ }
9236
+
9215
9237
  /* Slide content sits IN FLOW by default, so a text-only slide has height.
9216
9238
  It used to be unconditionally absolute - a caption overlay for a background
9217
9239
  image - which meant a slide with no <img> had nothing in flow at all: the
@@ -15128,11 +15150,11 @@ a.avatar-more-person:hover .avatar-more-name {
15128
15150
  ============================================ */
15129
15151
 
15130
15152
  /*!
15131
- * Domma Themes v0.51.13
15153
+ * Domma Themes v0.52.0
15132
15154
  * Dynamic Object Manipulation & Modeling API
15133
15155
  * (c) 2026 Darryl Waterhouse & DCBW-IT
15134
- * Built: 2026-10-13T15:10:34.387Z
15135
- * Commit: 85d3945
15156
+ * Built: 2026-10-14T07:25:45.956Z
15157
+ * Commit: 17bea57
15136
15158
  */
15137
15159
 
15138
15160
  /**