domma-js 0.8.0-alpha → 0.9.3-alpha

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.8.0-alpha
2
+ * Domma Complete CSS Bundle v0.9.2-alpha
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-01-09T18:35:07.820Z
5
+ * Built: 2026-01-11T18:01:20.519Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.8.0-alpha
14
+ * Domma Core CSS v0.9.2-alpha
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-01-09T18:35:07.456Z
18
- * Commit: 1a13022
17
+ * Built: 2026-01-11T18:01:20.188Z
18
+ * Commit: 136342c
19
19
  */
20
20
 
21
21
  /**
@@ -4016,11 +4016,11 @@ body.dm-cloaked.dm-ready {
4016
4016
  ============================================ */
4017
4017
 
4018
4018
  /*!
4019
- * Domma Grid CSS v0.8.0-alpha
4019
+ * Domma Grid CSS v0.9.2-alpha
4020
4020
  * Dynamic Object Manipulation & Modeling API
4021
4021
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4022
- * Built: 2026-01-09T18:35:07.464Z
4023
- * Commit: 1a13022
4022
+ * Built: 2026-01-11T18:01:20.195Z
4023
+ * Commit: 136342c
4024
4024
  */
4025
4025
 
4026
4026
  /**
@@ -4617,11 +4617,11 @@ body.dm-cloaked.dm-ready {
4617
4617
  ============================================ */
4618
4618
 
4619
4619
  /*!
4620
- * Domma Elements CSS v0.8.0-alpha
4620
+ * Domma Elements CSS v0.9.2-alpha
4621
4621
  * Dynamic Object Manipulation & Modeling API
4622
4622
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4623
- * Built: 2026-01-09T18:35:07.473Z
4624
- * Commit: 1a13022
4623
+ * Built: 2026-01-11T18:01:20.203Z
4624
+ * Commit: 136342c
4625
4625
  */
4626
4626
 
4627
4627
  /**
@@ -6073,11 +6073,18 @@ code {
6073
6073
  NAVBAR
6074
6074
  ============================================ */
6075
6075
 
6076
+ /* ============================================
6077
+ NAVBAR - MOBILE FIRST
6078
+ ============================================ */
6079
+
6080
+ /* Base navbar (mobile default) */
6076
6081
  .navbar {
6077
6082
  display: flex;
6078
6083
  align-items: center;
6079
6084
  justify-content: space-between;
6080
- padding: var(--dm-space-3) var(--dm-space-6);
6085
+ flex-wrap: wrap;
6086
+ gap: var(--dm-space-3);
6087
+ padding: var(--dm-space-3) var(--dm-space-4);
6081
6088
  padding-right: 6rem; /* Leave space for theme toggle + variant */
6082
6089
  background-color: var(--dm-navbar-bg);
6083
6090
  border-bottom: 1px solid var(--dm-border);
@@ -6123,10 +6130,10 @@ code {
6123
6130
  object-fit: contain;
6124
6131
  }
6125
6132
 
6126
- /* Hamburger Toggle */
6127
-
6133
+ /* Hamburger Toggle (visible on mobile) */
6128
6134
  .navbar-toggle {
6129
- display: none;
6135
+ display: block;
6136
+ order: 2;
6130
6137
  padding: var(--dm-space-2);
6131
6138
  background: transparent;
6132
6139
  border: none;
@@ -6147,31 +6154,97 @@ code {
6147
6154
  display: block;
6148
6155
  }
6149
6156
 
6157
+ /* Hamburger icon - three lines */
6158
+ .navbar-toggle-icon {
6159
+ display: block;
6160
+ width: 22px;
6161
+ height: 2px;
6162
+ background: currentColor;
6163
+ position: relative;
6164
+ transition: background 0.2s ease;
6165
+ }
6166
+
6167
+ .navbar-toggle-icon::before,
6168
+ .navbar-toggle-icon::after {
6169
+ content: '';
6170
+ position: absolute;
6171
+ left: 0;
6172
+ width: 100%;
6173
+ height: 2px;
6174
+ background: currentColor;
6175
+ transition: transform 0.2s ease;
6176
+ }
6177
+
6178
+ .navbar-toggle-icon::before {
6179
+ top: -7px;
6180
+ }
6181
+
6182
+ .navbar-toggle-icon::after {
6183
+ top: 7px;
6184
+ }
6185
+
6186
+ /* Animate to X when expanded */
6187
+ .navbar-toggle[aria-expanded="true"] .navbar-toggle-icon {
6188
+ background: transparent;
6189
+ }
6190
+
6191
+ .navbar-toggle[aria-expanded="true"] .navbar-toggle-icon::before {
6192
+ transform: rotate(45deg);
6193
+ top: 0;
6194
+ }
6195
+
6196
+ .navbar-toggle[aria-expanded="true"] .navbar-toggle-icon::after {
6197
+ transform: rotate(-45deg);
6198
+ top: 0;
6199
+ }
6200
+
6201
+ /* Navbar collapse (mobile: hidden by default) */
6202
+ .navbar-collapse {
6203
+ display: none;
6204
+ width: 100%;
6205
+ order: 3;
6206
+ flex-direction: column;
6207
+ padding-top: var(--dm-space-3);
6208
+ border-top: 1px solid var(--dm-border);
6209
+ }
6210
+
6211
+ .navbar-collapse.show {
6212
+ display: flex;
6213
+ }
6214
+
6215
+ /* Navbar navigation list (mobile: vertical) */
6150
6216
  .navbar-nav {
6151
6217
  display: flex;
6152
- flex-wrap: wrap;
6218
+ flex-direction: column;
6219
+ width: 100%;
6153
6220
  list-style: none;
6154
6221
  margin: 0;
6155
6222
  padding: 0;
6156
- gap: var(--dm-space-1);
6157
- align-items: center;
6223
+ gap: 0;
6224
+ max-height: 60vh;
6225
+ overflow-y: auto;
6226
+ }
6227
+
6228
+ .navbar-nav li {
6229
+ width: 100%;
6158
6230
  }
6159
6231
 
6232
+ /* Navbar links (mobile: full width, larger touch targets) */
6160
6233
  .navbar-link {
6161
6234
  display: block;
6162
- padding: var(--dm-space-2) var(--dm-space-3);
6235
+ padding: var(--dm-space-3) var(--dm-space-4);
6163
6236
  color: var(--dm-navbar-text);
6164
6237
  text-decoration: none;
6165
- border-radius: var(--dm-radius-md);
6238
+ border-radius: 0;
6166
6239
  transition: all var(--dm-transition-fast);
6167
- font-size: var(--dm-font-size-sm);
6240
+ font-size: var(--dm-font-size-base);
6168
6241
  white-space: nowrap;
6169
6242
  }
6170
6243
 
6171
6244
  .navbar-link:hover {
6172
6245
  color: var(--dm-text);
6173
- /*background-color: var(--dm-surface-raised);*/
6174
6246
  background-color: var(--dm-gray-800);
6247
+ border-radius: 0;
6175
6248
  }
6176
6249
 
6177
6250
  .navbar-link.active {
@@ -6180,6 +6253,11 @@ code {
6180
6253
  background-color: color-mix(in srgb, var(--dm-primary) 10%, transparent);
6181
6254
  }
6182
6255
 
6256
+ .nav-version {
6257
+ display: none;
6258
+ color: #eee;
6259
+ }
6260
+
6183
6261
  /* Light navbar variant */
6184
6262
 
6185
6263
  .navbar-light {
@@ -6245,68 +6323,113 @@ code {
6245
6323
  color: var(--dm-white);
6246
6324
  }
6247
6325
 
6248
- /* Responsive navbar - tablet */
6249
- @media (max-width: 1200px) {
6250
- .navbar {
6251
- padding: var(--dm-space-3) var(--dm-space-4);
6252
- padding-right: 6rem;
6253
- }
6326
+ /* Dark navbar collapse border color (mobile) */
6327
+ .navbar-dark .navbar-collapse {
6328
+ border-top-color: var(--dm-gray-700);
6329
+ }
6254
6330
 
6255
- .navbar-link {
6256
- padding: var(--dm-space-1) var(--dm-space-2);
6257
- font-size: var(--dm-font-size-xs);
6258
- }
6331
+ /* Navbar actions - base mobile styles */
6332
+ .navbar-actions {
6333
+ display: flex;
6334
+ align-items: center;
6335
+ gap: var(--dm-space-3);
6259
6336
  }
6260
6337
 
6261
- /* Responsive navbar - mobile */
6262
- @media (max-width: 992px) {
6338
+ /* ============================================
6339
+ NAVBAR - DESKTOP ENHANCEMENTS
6340
+ ============================================ */
6341
+
6342
+ /* Desktop (≥993px) */
6343
+ @media (min-width: 993px) {
6263
6344
  .navbar {
6264
- flex-wrap: wrap;
6265
- gap: var(--dm-space-3);
6345
+ flex-wrap: nowrap;
6346
+ gap: 0;
6347
+ padding: var(--dm-space-3) var(--dm-space-6);
6266
6348
  }
6267
6349
 
6350
+ /* Hide hamburger on desktop */
6268
6351
  .navbar-toggle {
6269
- display: block;
6270
- order: 2;
6352
+ display: none;
6353
+ }
6354
+
6355
+ /* Show navbar collapse on desktop */
6356
+ .navbar-collapse {
6357
+ display: flex;
6358
+ width: auto;
6359
+ flex-direction: row;
6360
+ align-items: center;
6361
+ flex-grow: 1;
6362
+ padding-top: 0;
6363
+ border-top: none;
6271
6364
  }
6272
6365
 
6366
+ /* Horizontal navigation on desktop */
6273
6367
  .navbar-nav {
6274
- display: none;
6275
- width: 100%;
6276
- order: 3;
6277
- flex-direction: column;
6278
- gap: 0;
6279
- padding-top: var(--dm-space-3);
6280
- border-top: 1px solid var(--dm-gray-200);
6281
- max-height: 60vh;
6282
- overflow-y: auto;
6368
+ flex-direction: row;
6369
+ flex: 1;
6370
+ justify-content: center;
6371
+ gap: var(--dm-space-1);
6372
+ align-items: center;
6373
+ max-height: none;
6374
+ overflow-y: visible;
6283
6375
  }
6284
6376
 
6285
- .navbar-dark .navbar-nav {
6286
- border-top-color: var(--dm-gray-800);
6377
+ .navbar-nav li {
6378
+ width: auto;
6287
6379
  }
6288
6380
 
6289
- .navbar-nav.open {
6290
- display: flex;
6381
+ /* Navbar actions - desktop override: push to right */
6382
+ .navbar-actions {
6383
+ margin-left: auto;
6291
6384
  }
6292
6385
 
6293
- .navbar-nav li {
6294
- width: 100%;
6386
+ .navbar-action-link {
6387
+ color: var(--dm-navbar-text, var(--dm-white));
6388
+ text-decoration: none;
6389
+ padding: var(--dm-space-2) var(--dm-space-3);
6390
+ border-radius: var(--dm-radius-md);
6391
+ font-size: var(--dm-font-size-sm);
6392
+ transition: background var(--dm-transition-fast);
6393
+ }
6394
+
6395
+ .navbar-action-link:hover {
6396
+ background: rgba(255, 255, 255, 0.1);
6397
+ text-decoration: none;
6398
+ }
6399
+
6400
+ .navbar-dark .navbar-action-link {
6401
+ color: var(--dm-white);
6402
+ }
6403
+
6404
+ .navbar-light .navbar-action-link {
6405
+ color: var(--dm-text);
6406
+ }
6407
+
6408
+ .navbar-light .navbar-action-link:hover {
6409
+ background: rgba(0, 0, 0, 0.05);
6295
6410
  }
6296
6411
 
6412
+ /* Compact links on desktop */
6297
6413
  .navbar-link {
6298
- padding: var(--dm-space-3) var(--dm-space-4);
6299
- font-size: var(--dm-font-size-base);
6300
- border-radius: 0;
6414
+ padding: var(--dm-space-2) var(--dm-space-3);
6415
+ font-size: var(--dm-font-size-sm);
6416
+ border-radius: var(--dm-radius-md);
6301
6417
  }
6302
6418
 
6303
6419
  .navbar-link:hover {
6304
- border-radius: 0;
6420
+ border-radius: var(--dm-radius-md);
6305
6421
  }
6306
6422
 
6307
6423
  .nav-version {
6308
- display: none;
6309
- color: #eee;
6424
+ display: inline;
6425
+ }
6426
+ }
6427
+
6428
+ /* Large desktop (≥1201px) */
6429
+ @media (min-width: 1201px) {
6430
+ .navbar-link {
6431
+ padding: var(--dm-space-1) var(--dm-space-2);
6432
+ font-size: var(--dm-font-size-xs);
6310
6433
  }
6311
6434
  }
6312
6435
 
@@ -7208,21 +7331,23 @@ code {
7208
7331
 
7209
7332
 
7210
7333
  /* ============================================
7211
- HERO SECTION
7334
+ HERO SECTION - MOBILE FIRST
7212
7335
  ============================================ */
7213
7336
 
7214
- /* Base Hero - Structure Only */
7337
+ /* Base Hero - Mobile Default */
7215
7338
  .hero {
7216
- padding: 4rem 2rem;
7339
+ padding: 3rem 1rem; /* Reduced side padding to minimize whitespace */
7217
7340
  text-align: center;
7218
7341
  position: relative;
7219
7342
  background: var(--dm-surface);
7220
7343
  color: var(--dm-text);
7344
+ width: 100%; /* Ensure full width */
7345
+ box-sizing: border-box; /* Include padding in width calculation */
7221
7346
  }
7222
7347
 
7223
7348
  .hero h1,
7224
7349
  .hero .hero-title {
7225
- font-size: 3rem;
7350
+ font-size: 2rem; /* Mobile-optimized title size */
7226
7351
  font-weight: 700;
7227
7352
  margin-bottom: 1rem;
7228
7353
  line-height: 1.2;
@@ -7230,7 +7355,7 @@ code {
7230
7355
 
7231
7356
  .hero p,
7232
7357
  .hero .hero-subtitle {
7233
- font-size: 1.25rem;
7358
+ font-size: 1rem; /* Mobile-optimized text size */
7234
7359
  max-width: 600px;
7235
7360
  margin: 0 auto 2rem;
7236
7361
  opacity: 0.9;
@@ -7249,32 +7374,33 @@ code {
7249
7374
  flex-wrap: wrap;
7250
7375
  }
7251
7376
 
7252
- /* Hero Size Variants */
7377
+ /* Hero Size Variants - Mobile Default */
7253
7378
  .hero-sm {
7254
- padding: 2rem 1rem;
7379
+ padding: 2rem 0.75rem;
7255
7380
  }
7256
7381
 
7257
7382
  .hero-sm h1,
7258
7383
  .hero-sm .hero-title {
7259
- font-size: 2rem;
7384
+ font-size: 1.75rem;
7260
7385
  }
7261
7386
 
7262
7387
  .hero-sm p,
7263
7388
  .hero-sm .hero-subtitle {
7264
- font-size: 1rem;
7389
+ font-size: 0.875rem;
7265
7390
  }
7266
7391
 
7267
7392
  .hero-lg {
7268
- padding: 6rem 2rem;
7393
+ padding: 4rem 1rem;
7269
7394
  }
7270
7395
 
7271
7396
  .hero-lg h1,
7272
7397
  .hero-lg .hero-title {
7273
- font-size: 4rem;
7398
+ font-size: 2.5rem;
7274
7399
  }
7275
7400
 
7276
7401
  .hero-full {
7277
7402
  min-height: 100vh;
7403
+ min-height: 100dvh; /* Dynamic viewport height for mobile browsers */
7278
7404
  display: flex;
7279
7405
  flex-direction: column;
7280
7406
  justify-content: center;
@@ -7301,20 +7427,48 @@ code {
7301
7427
  color: var(--dm-white);
7302
7428
  }
7303
7429
 
7304
- /* Responsive */
7305
- @media (max-width: 768px) {
7430
+ /* ============================================
7431
+ HERO - DESKTOP ENHANCEMENTS
7432
+ ============================================ */
7433
+
7434
+ /* Desktop (≥769px) */
7435
+ @media (min-width: 769px) {
7436
+ .hero {
7437
+ padding: 4rem 2rem; /* Desktop: more generous padding */
7438
+ }
7439
+
7306
7440
  .hero h1,
7307
7441
  .hero .hero-title {
7308
- font-size: 2rem;
7442
+ font-size: 3rem; /* Desktop: larger title */
7309
7443
  }
7310
7444
 
7311
7445
  .hero p,
7312
7446
  .hero .hero-subtitle {
7447
+ font-size: 1.25rem; /* Desktop: larger text */
7448
+ }
7449
+
7450
+ /* Desktop size variants */
7451
+ .hero-sm {
7452
+ padding: 2rem 1rem;
7453
+ }
7454
+
7455
+ .hero-sm h1,
7456
+ .hero-sm .hero-title {
7457
+ font-size: 2rem;
7458
+ }
7459
+
7460
+ .hero-sm p,
7461
+ .hero-sm .hero-subtitle {
7313
7462
  font-size: 1rem;
7314
7463
  }
7315
7464
 
7316
- .hero {
7317
- padding: 3rem 1.5rem;
7465
+ .hero-lg {
7466
+ padding: 6rem 2rem;
7467
+ }
7468
+
7469
+ .hero-lg h1,
7470
+ .hero-lg .hero-title {
7471
+ font-size: 4rem;
7318
7472
  }
7319
7473
  }
7320
7474
 
@@ -7702,36 +7856,49 @@ code {
7702
7856
 
7703
7857
 
7704
7858
  /* ============================================
7705
- SIDEBAR
7859
+ SIDEBAR - MOBILE FIRST
7706
7860
  ============================================ */
7707
7861
 
7708
- /* Base Sidebar */
7862
+ /* Base Sidebar - Mobile Default */
7709
7863
  .sidebar {
7710
7864
  position: relative;
7711
- width: 250px;
7865
+ width: 100%;
7866
+ max-width: 250px;
7712
7867
  background: var(--dm-surface, #fff);
7713
7868
  border-right: 1px solid var(--dm-border, #dee2e6);
7714
7869
  overflow-y: auto;
7715
7870
  overflow-x: hidden;
7716
- transition: transform 0.3s ease;
7871
+ transition: transform 0.3s ease, width 0.3s ease;
7717
7872
  z-index: 100;
7873
+ --sidebar-width: 250px;
7874
+ --sidebar-collapsed-width: 60px;
7718
7875
  }
7719
7876
 
7720
- /* Fixed positioning */
7877
+ /* Fixed positioning - Mobile: hidden off-screen by default */
7721
7878
  .sidebar-fixed {
7722
7879
  position: fixed;
7723
7880
  top: 0;
7724
7881
  left: 0;
7725
7882
  height: 100vh;
7883
+ height: 100dvh; /* Dynamic viewport height for mobile */
7884
+ transform: translateX(-100%); /* Hidden off-screen on mobile */
7885
+ box-shadow: none;
7726
7886
  }
7727
7887
 
7728
7888
  .sidebar-fixed.sidebar-right {
7729
7889
  left: auto;
7730
7890
  right: 0;
7891
+ transform: translateX(100%); /* Hidden off-screen right */
7731
7892
  border-right: none;
7732
7893
  border-left: 1px solid var(--dm-border, #dee2e6);
7733
7894
  }
7734
7895
 
7896
+ /* Mobile: slide in when open */
7897
+ .sidebar-fixed.open {
7898
+ transform: translateX(0);
7899
+ box-shadow: var(--dm-shadow-xl, 0 10px 40px rgba(0,0,0,0.2));
7900
+ }
7901
+
7735
7902
  /* Position variants */
7736
7903
  .sidebar-left {
7737
7904
  left: 0;
@@ -7769,8 +7936,11 @@ code {
7769
7936
  color: var(--dm-text, #212529);
7770
7937
  }
7771
7938
 
7939
+ /* Toggle button - Visible on mobile by default */
7772
7940
  .sidebar-toggle-btn {
7773
- display: none; /* Shown on mobile */
7941
+ display: flex;
7942
+ align-items: center;
7943
+ justify-content: center;
7774
7944
  flex-shrink: 0;
7775
7945
  width: 32px;
7776
7946
  height: 32px;
@@ -7948,7 +8118,7 @@ code {
7948
8118
  color: var(--dm-text-muted, #6c757d);
7949
8119
  }
7950
8120
 
7951
- /* Overlay (mobile) */
8121
+ /* Overlay - Visible on mobile */
7952
8122
  .sidebar-overlay {
7953
8123
  position: fixed;
7954
8124
  top: 0;
@@ -7960,6 +8130,7 @@ code {
7960
8130
  opacity: 0;
7961
8131
  visibility: hidden;
7962
8132
  transition: opacity 0.3s ease, visibility 0.3s ease;
8133
+ display: block;
7963
8134
  }
7964
8135
 
7965
8136
  .sidebar-overlay.active {
@@ -8023,30 +8194,118 @@ code {
8023
8194
  border-color: var(--dm-border, #dee2e6);
8024
8195
  }
8025
8196
 
8026
- /* Mobile/Tablet: Slide-out drawer */
8027
- @media (max-width: 768px) {
8197
+ /* ============================================
8198
+ SIDEBAR - DESKTOP ENHANCEMENTS
8199
+ ============================================ */
8200
+
8201
+ /* Desktop (≥769px) */
8202
+ @media (min-width: 769px) {
8203
+ /* Desktop: Sidebar always visible */
8028
8204
  .sidebar-fixed {
8029
- transform: translateX(-100%);
8205
+ transform: translateX(0);
8030
8206
  box-shadow: none;
8031
8207
  }
8032
8208
 
8033
8209
  .sidebar-fixed.sidebar-right {
8034
- transform: translateX(100%);
8035
- }
8036
-
8037
- .sidebar-fixed.open {
8038
8210
  transform: translateX(0);
8039
- box-shadow: var(--dm-shadow-xl, 0 10px 40px rgba(0,0,0,0.2));
8040
8211
  }
8041
8212
 
8213
+ /* Desktop: Hide toggle button (unless desktop collapsible) */
8042
8214
  .sidebar-toggle-btn {
8215
+ display: none;
8216
+ }
8217
+
8218
+ /* Show toggle button on desktop when collapsibleDesktop enabled */
8219
+ .sidebar.sidebar-desktop-collapsible .sidebar-toggle-btn {
8043
8220
  display: flex;
8221
+ }
8222
+
8223
+ /* Desktop: Hide overlay */
8224
+ .sidebar-overlay {
8225
+ display: none;
8226
+ }
8227
+
8228
+ /* Desktop collapsed state - Fully hidden */
8229
+ .sidebar.sidebar-collapsed {
8230
+ transform: translateX(-100%);
8231
+ }
8232
+
8233
+ .sidebar.sidebar-collapsed.sidebar-right {
8234
+ transform: translateX(100%);
8235
+ }
8236
+
8237
+ /* Floating toggle button - appears when sidebar is collapsed */
8238
+ .sidebar-floating-toggle {
8239
+ position: fixed;
8240
+ top: 50%;
8241
+ left: 0;
8242
+ transform: translateY(-50%);
8243
+ z-index: 1001;
8244
+ display: none; /* Hidden by default */
8044
8245
  align-items: center;
8045
8246
  justify-content: center;
8247
+ width: 40px;
8248
+ height: 40px;
8249
+ background: var(--dm-primary, #007bff);
8250
+ color: var(--dm-white, #fff);
8251
+ border: none;
8252
+ border-radius: 0 var(--dm-radius-md, 0.375rem) var(--dm-radius-md, 0.375rem) 0;
8253
+ cursor: pointer;
8254
+ transition: all 0.2s ease;
8255
+ box-shadow: var(--dm-shadow-lg, 0 4px 12px rgba(0,0,0,0.15));
8046
8256
  }
8047
8257
 
8048
- .sidebar-overlay {
8049
- display: block;
8258
+ .sidebar-floating-toggle:hover {
8259
+ background: var(--dm-primary-dark, #0056b3);
8260
+ width: 48px;
8261
+ box-shadow: var(--dm-shadow-xl, 0 8px 20px rgba(0,0,0,0.2));
8262
+ }
8263
+
8264
+ .sidebar-floating-toggle.show {
8265
+ display: flex;
8266
+ }
8267
+
8268
+ .sidebar-floating-toggle.right {
8269
+ left: auto;
8270
+ right: 0;
8271
+ border-radius: var(--dm-radius-md, 0.375rem) 0 0 var(--dm-radius-md, 0.375rem);
8272
+ }
8273
+ }
8274
+
8275
+ /* ============================================
8276
+ Floating Sidebar Variant
8277
+ (bottom-left positioned sidebar)
8278
+ ============================================ */
8279
+ .sidebar-floating {
8280
+ position: fixed;
8281
+ left: 2px;
8282
+ bottom: 8px;
8283
+ top: auto !important;
8284
+ height: auto;
8285
+ max-height: 400px;
8286
+ width: 220px;
8287
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
8288
+ z-index: 100;
8289
+ }
8290
+
8291
+ .sidebar-floating .sidebar-header {
8292
+ font-size: 0.875rem;
8293
+ text-transform: uppercase;
8294
+ letter-spacing: 0.05em;
8295
+ }
8296
+
8297
+ @media (max-width: 992px) {
8298
+ .sidebar-floating {
8299
+ left: 0.5rem;
8300
+ bottom: 0.5rem;
8301
+ width: 180px;
8302
+ max-height: 300px;
8303
+ }
8304
+ }
8305
+
8306
+ @media (max-width: 576px) {
8307
+ .sidebar-floating {
8308
+ display: none;
8050
8309
  }
8051
8310
  }
8052
8311
 
@@ -8239,6 +8498,33 @@ code {
8239
8498
  color: rgba(255, 255, 255, 0.8);
8240
8499
  }
8241
8500
 
8501
+ /* ============================================
8502
+ SIDEBAR - PUSH MODE
8503
+ ============================================ */
8504
+
8505
+ /* Content wrapper when sidebar pushes it (left position) */
8506
+ .sidebar-push-active {
8507
+ margin-left: var(--sidebar-push-width, 250px);
8508
+ transition: margin-left var(--dm-transition-normal, 0.3s) ease;
8509
+ }
8510
+
8511
+ /* Content wrapper when sidebar pushes it (right position) */
8512
+ .sidebar-push-active-right {
8513
+ margin-right: var(--sidebar-push-width, 250px);
8514
+ margin-left: 0;
8515
+ transition: margin-right var(--dm-transition-normal, 0.3s) ease;
8516
+ }
8517
+
8518
+ /* Mobile: Allow custom push width for mobile */
8519
+ @media (max-width: 768px) {
8520
+ .sidebar-push-active {
8521
+ margin-left: var(--sidebar-push-width-mobile, var(--sidebar-push-width, 250px));
8522
+ }
8523
+
8524
+ .sidebar-push-active-right {
8525
+ margin-right: var(--sidebar-push-width-mobile, var(--sidebar-push-width, 250px));
8526
+ }
8527
+ }
8242
8528
 
8243
8529
 
8244
8530
  /* ============================================
@@ -8273,20 +8559,20 @@ code {
8273
8559
  z-index: 100;
8274
8560
  }
8275
8561
 
8276
- /* Container */
8562
+ /* Container - Mobile Default */
8277
8563
  .footer-container {
8278
8564
  max-width: var(--dm-container-lg, 1200px);
8279
8565
  margin: 0 auto;
8280
- padding: var(--dm-space-6, 1.5rem) var(--dm-space-4, 1rem);
8566
+ padding: var(--dm-space-4, 1rem); /* Mobile: compact padding */
8281
8567
  }
8282
8568
 
8283
- /* ========== Simple Layout ========== */
8569
+ /* ========== Simple Layout - Mobile Default ========== */
8284
8570
 
8285
8571
  .footer-simple .footer-simple-content {
8286
8572
  display: flex;
8287
8573
  flex-wrap: wrap;
8288
- align-items: center;
8289
- justify-content: space-between;
8574
+ flex-direction: column; /* Mobile: vertical stacking */
8575
+ align-items: flex-start; /* Mobile: left-aligned */
8290
8576
  gap: var(--dm-space-4, 1rem);
8291
8577
  }
8292
8578
 
@@ -8317,8 +8603,9 @@ code {
8317
8603
  .footer-nav {
8318
8604
  display: flex;
8319
8605
  flex-wrap: wrap;
8320
- gap: var(--dm-space-4, 1rem);
8321
- align-items: center;
8606
+ flex-direction: column; /* Mobile: vertical nav */
8607
+ align-items: flex-start; /* Mobile: left-aligned */
8608
+ gap: var(--dm-space-2, 0.5rem); /* Mobile: compact spacing */
8322
8609
  }
8323
8610
 
8324
8611
  .footer-link {
@@ -8365,12 +8652,12 @@ code {
8365
8652
  color: var(--dm-text-muted, #6c757d);
8366
8653
  }
8367
8654
 
8368
- /* ========== Columns Layout ========== */
8655
+ /* ========== Columns Layout - Mobile Default ========== */
8369
8656
 
8370
8657
  .footer-columns .footer-columns-content {
8371
8658
  display: grid;
8372
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
8373
- gap: var(--dm-space-6, 1.5rem);
8659
+ grid-template-columns: 1fr; /* Mobile: single column */
8660
+ gap: var(--dm-space-4, 1rem); /* Mobile: compact spacing */
8374
8661
  padding-bottom: var(--dm-space-4, 1rem);
8375
8662
  margin-bottom: var(--dm-space-4, 1rem);
8376
8663
  border-bottom: 1px solid var(--dm-border, #dee2e6);
@@ -8396,6 +8683,15 @@ code {
8396
8683
  line-height: 1.6;
8397
8684
  }
8398
8685
 
8686
+ .footer-column-brand .footer-brand-description {
8687
+ display: block;
8688
+ margin: var(--dm-space-2, 0.5rem) 0 0;
8689
+ color: var(--dm-text-muted, #6c757d);
8690
+ font-size: var(--dm-font-size-sm, 0.875rem);
8691
+ line-height: 1.5;
8692
+ opacity: 0.8;
8693
+ }
8694
+
8399
8695
  .footer-column-title {
8400
8696
  margin: 0 0 var(--dm-space-3, 0.75rem);
8401
8697
  font-size: var(--dm-font-size-base, 1rem);
@@ -8428,19 +8724,23 @@ code {
8428
8724
  .footer-columns .footer-bottom {
8429
8725
  display: flex;
8430
8726
  flex-wrap: wrap;
8431
- align-items: center;
8432
- justify-content: space-between;
8727
+ flex-direction: column; /* Mobile: vertical stacking */
8728
+ align-items: flex-start; /* Mobile: left-aligned */
8433
8729
  gap: var(--dm-space-4, 1rem);
8434
8730
  }
8435
8731
 
8436
8732
  .footer-columns .footer-copyright {
8437
- width: auto;
8733
+ width: 100%; /* Mobile: full width */
8438
8734
  padding: 0;
8439
8735
  margin: 0;
8440
8736
  border: none;
8441
8737
  text-align: left;
8442
8738
  }
8443
8739
 
8740
+ .footer-social {
8741
+ width: 100%; /* Mobile: full width */
8742
+ }
8743
+
8444
8744
  /* ========== Minimal Layout ========== */
8445
8745
 
8446
8746
  .footer-minimal .footer-minimal-content {
@@ -8477,6 +8777,10 @@ code {
8477
8777
  color: var(--dm-white, #fff);
8478
8778
  }
8479
8779
 
8780
+ .footer-dark .footer-brand-description {
8781
+ color: var(--dm-gray-300, #dee2e6);
8782
+ }
8783
+
8480
8784
  .footer-dark .footer-link {
8481
8785
  color: var(--dm-gray-400, #adb5bd);
8482
8786
  }
@@ -8527,41 +8831,50 @@ code {
8527
8831
  border-color: transparent;
8528
8832
  }
8529
8833
 
8530
- /* ========== Responsive ========== */
8834
+ /* ============================================
8835
+ FOOTER - DESKTOP ENHANCEMENTS
8836
+ ============================================ */
8531
8837
 
8532
- @media (max-width: 768px) {
8838
+ /* Desktop (≥769px) */
8839
+ @media (min-width: 769px) {
8840
+ /* Desktop: More generous padding */
8533
8841
  .footer-container {
8534
- padding: var(--dm-space-4, 1rem);
8842
+ padding: var(--dm-space-6, 1.5rem) var(--dm-space-4, 1rem);
8535
8843
  }
8536
8844
 
8845
+ /* Desktop: Horizontal simple layout */
8537
8846
  .footer-simple .footer-simple-content {
8538
- flex-direction: column;
8539
- align-items: flex-start;
8847
+ flex-direction: row;
8848
+ align-items: center;
8849
+ justify-content: space-between;
8540
8850
  }
8541
8851
 
8852
+ /* Desktop: Horizontal navigation */
8542
8853
  .footer-nav {
8543
- flex-direction: column;
8544
- align-items: flex-start;
8545
- gap: var(--dm-space-2, 0.5rem);
8854
+ flex-direction: row;
8855
+ align-items: center;
8856
+ gap: var(--dm-space-4, 1rem);
8546
8857
  }
8547
8858
 
8859
+ /* Desktop: Multi-column grid */
8548
8860
  .footer-columns .footer-columns-content {
8549
- grid-template-columns: 1fr;
8550
- gap: var(--dm-space-4, 1rem);
8861
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
8862
+ gap: var(--dm-space-6, 1.5rem);
8551
8863
  }
8552
8864
 
8865
+ /* Desktop: Horizontal bottom section */
8553
8866
  .footer-columns .footer-bottom {
8554
- flex-direction: column;
8555
- align-items: flex-start;
8867
+ flex-direction: row;
8868
+ align-items: center;
8869
+ justify-content: space-between;
8556
8870
  }
8557
8871
 
8558
8872
  .footer-columns .footer-copyright {
8559
- width: 100%;
8560
- text-align: left;
8873
+ width: auto;
8561
8874
  }
8562
8875
 
8563
8876
  .footer-social {
8564
- width: 100%;
8877
+ width: auto;
8565
8878
  }
8566
8879
  }
8567
8880
  /* ============================================
@@ -8847,7 +9160,7 @@ code {
8847
9160
 
8848
9161
  /* Timer display */
8849
9162
  .dm-timer-display {
8850
- font-size: 2.5rem;
9163
+ font-size: 2rem; /* Mobile default */
8851
9164
  font-weight: 600;
8852
9165
  font-family: 'Courier New', monospace;
8853
9166
  color: var(--dm-slate-900);
@@ -8949,16 +9262,18 @@ code {
8949
9262
  display: none !important;
8950
9263
  }
8951
9264
 
8952
- /* Responsive timer styles */
8953
- @media (max-width: 576px) {
9265
+ /* Mobile-first: Timer base styles are already mobile-optimized above */
9266
+
9267
+ /* Desktop (≥577px) - Timer enhancements */
9268
+ @media (min-width: 577px) {
8954
9269
  .dm-timer-display {
8955
- font-size: 2rem;
9270
+ font-size: 3rem; /* Larger on desktop */
8956
9271
  }
8957
9272
 
8958
9273
  .dm-timer-button {
8959
- padding: 0.375rem 0.75rem;
8960
- font-size: 0.8125rem;
8961
- min-width: 70px;
9274
+ padding: 0.5rem 1rem;
9275
+ font-size: 0.875rem;
9276
+ min-width: 80px;
8962
9277
  }
8963
9278
  }
8964
9279
 
@@ -9225,14 +9540,14 @@ code {
9225
9540
 
9226
9541
  .dm-back-to-top {
9227
9542
  position: fixed;
9228
- bottom: 2rem;
9229
- right: 2rem;
9543
+ bottom: 1rem; /* Mobile default: compact positioning */
9544
+ right: 1rem;
9230
9545
  z-index: 1000;
9231
9546
  display: flex;
9232
9547
  align-items: center;
9233
9548
  justify-content: center;
9234
- width: 3rem;
9235
- height: 3rem;
9549
+ width: 2.5rem; /* Mobile default: smaller button */
9550
+ height: 2.5rem;
9236
9551
  padding: 0;
9237
9552
  background-color: var(--dm-primary);
9238
9553
  color: var(--dm-white);
@@ -9266,12 +9581,13 @@ code {
9266
9581
  box-shadow: 0 0 0 3px var(--dm-focus-ring);
9267
9582
  }
9268
9583
 
9269
- @media (max-width: 576px) {
9584
+ /* Desktop (≥577px) - Back to Top enhancements */
9585
+ @media (min-width: 577px) {
9270
9586
  .dm-back-to-top {
9271
- bottom: 1rem;
9272
- right: 1rem;
9273
- width: 2.5rem;
9274
- height: 2.5rem;
9587
+ bottom: 1.5rem; /* More spacing on desktop */
9588
+ right: 1.5rem;
9589
+ width: 3rem; /* Larger button on desktop */
9590
+ height: 3rem;
9275
9591
  }
9276
9592
  }
9277
9593
 
@@ -10100,41 +10416,48 @@ code {
10100
10416
  /* Default styles already applied above */
10101
10417
  }
10102
10418
 
10103
- /* Centered Layout */
10419
+ /* Centered Layout - Mobile default: left-aligned */
10104
10420
  .dm-timeline-centered::before {
10105
10421
  content: '';
10106
10422
  position: absolute;
10107
- left: 50%;
10423
+ left: 30px; /* Mobile default: left-aligned line */
10108
10424
  top: 0;
10109
10425
  bottom: 0;
10110
10426
  width: 2px;
10111
10427
  background: var(--dm-gray-300);
10112
- transform: translateX(-50%);
10428
+ transform: none;
10113
10429
  }
10114
10430
 
10115
10431
  .dm-timeline-centered .dm-timeline-item {
10116
- width: 50%;
10117
- padding-right: var(--dm-space-8);
10118
- justify-content: flex-end;
10432
+ width: 100%; /* Mobile default: full width */
10433
+ left: 0;
10434
+ padding-left: var(--dm-space-16); /* Mobile: space for left line */
10435
+ padding-right: 0;
10436
+ justify-content: flex-start;
10119
10437
  }
10120
10438
 
10121
10439
  .dm-timeline-centered .dm-timeline-item:nth-child(even) {
10122
- left: 50%;
10123
- padding-left: var(--dm-space-8);
10440
+ width: 100%; /* Mobile: same as odd items */
10441
+ left: 0;
10442
+ padding-left: var(--dm-space-16);
10124
10443
  padding-right: 0;
10125
10444
  justify-content: flex-start;
10126
10445
  }
10127
10446
 
10128
10447
  .dm-timeline-centered .dm-timeline-year {
10129
- order: 2;
10130
- margin-left: var(--dm-space-6);
10131
- margin-right: 0;
10448
+ order: 0; /* Mobile: year badge on left */
10449
+ margin-right: var(--dm-space-6);
10450
+ margin-left: 0;
10451
+ position: absolute;
10452
+ left: 0;
10132
10453
  }
10133
10454
 
10134
10455
  .dm-timeline-centered .dm-timeline-item:nth-child(even) .dm-timeline-year {
10135
- order: 0;
10136
- margin-left: 0;
10456
+ order: 0; /* Mobile: same as odd items */
10137
10457
  margin-right: var(--dm-space-6);
10458
+ margin-left: 0;
10459
+ position: absolute;
10460
+ left: 0;
10138
10461
  }
10139
10462
 
10140
10463
  /* Horizontal Layout */
@@ -10182,33 +10505,34 @@ code {
10182
10505
  border-color: var(--dm-slate-200);
10183
10506
  }
10184
10507
 
10185
- /* Responsive Design */
10186
- @media (max-width: 768px) {
10187
- .dm-timeline-centered {
10188
- /* Switch to vertical layout on mobile */
10508
+ /* Desktop (≥769px) - Timeline/Progression centered enhancements */
10509
+ @media (min-width: 769px) {
10510
+ .dm-timeline-centered::before {
10511
+ left: 50%; /* Center line on desktop */
10512
+ transform: translateX(-50%);
10189
10513
  }
10190
10514
 
10191
- .dm-timeline-centered::before {
10192
- left: 30px;
10193
- transform: none;
10515
+ .dm-timeline-centered .dm-timeline-item {
10516
+ width: 50%; /* Half width for alternating layout */
10517
+ left: 0;
10518
+ padding-left: 0;
10519
+ padding-right: var(--dm-space-8);
10520
+ justify-content: flex-end;
10194
10521
  }
10195
10522
 
10196
- .dm-timeline-centered .dm-timeline-item,
10197
10523
  .dm-timeline-centered .dm-timeline-item:nth-child(even) {
10198
- width: 100%;
10199
- left: 0;
10200
- padding-left: var(--dm-space-16);
10524
+ left: 50%;
10525
+ padding-left: var(--dm-space-8);
10201
10526
  padding-right: 0;
10202
10527
  justify-content: flex-start;
10203
10528
  }
10204
10529
 
10205
- .dm-timeline-centered .dm-timeline-year,
10206
- .dm-timeline-centered .dm-timeline-item:nth-child(even) .dm-timeline-year {
10207
- order: 0;
10208
- margin-right: var(--dm-space-6);
10209
- margin-left: 0;
10210
- position: absolute;
10211
- left: 0;
10530
+ .dm-timeline-centered .dm-timeline-year {
10531
+ order: 1;
10532
+ margin-right: 0;
10533
+ margin-left: var(--dm-space-6);
10534
+ position: relative;
10535
+ left: auto;
10212
10536
  width: 80px;
10213
10537
  }
10214
10538
 
@@ -10342,15 +10666,16 @@ code {
10342
10666
  /* Horizontal layout */
10343
10667
  .dm-progression-horizontal {
10344
10668
  display: flex;
10669
+ flex-direction: column; /* Mobile default: vertical stacking */
10345
10670
  overflow-x: auto;
10346
10671
  padding-bottom: var(--dm-space-4);
10347
10672
  }
10348
10673
 
10349
10674
  .dm-progression-horizontal .dm-progression-item {
10350
10675
  flex-direction: column;
10351
- min-width: 250px;
10352
- margin-right: var(--dm-space-4);
10353
- margin-bottom: 0;
10676
+ min-width: 100%; /* Mobile default: full width stacking */
10677
+ margin-right: 0;
10678
+ margin-bottom: var(--dm-space-4);
10354
10679
  }
10355
10680
 
10356
10681
  /* Progress bar (Roadmap mode) */
@@ -10615,20 +10940,20 @@ code {
10615
10940
  border-color: var(--dm-slate-700);
10616
10941
  }
10617
10942
 
10618
- /* Responsive design */
10619
- @media (max-width: 768px) {
10943
+ /* Desktop (≥769px) - Progression enhancements */
10944
+ @media (min-width: 769px) {
10620
10945
  .dm-progression-centered .dm-progression-item:nth-child(even) {
10621
- flex-direction: row;
10946
+ flex-direction: row-reverse; /* Alternate direction on desktop */
10622
10947
  }
10623
10948
 
10624
10949
  .dm-progression-horizontal {
10625
- flex-direction: column;
10950
+ flex-direction: row; /* Horizontal on desktop */
10626
10951
  }
10627
10952
 
10628
10953
  .dm-progression-horizontal .dm-progression-item {
10629
- min-width: 100%;
10630
- margin-right: 0;
10631
- margin-bottom: var(--dm-space-4);
10954
+ min-width: auto;
10955
+ margin-right: var(--dm-space-6);
10956
+ margin-bottom: 0;
10632
10957
  }
10633
10958
  }
10634
10959
 
@@ -10658,14 +10983,16 @@ code {
10658
10983
 
10659
10984
  .dm-cookie-consent-bottom-left {
10660
10985
  bottom: 20px;
10661
- left: 20px;
10662
- max-width: 400px;
10986
+ left: 10px; /* Mobile default: minimal margins */
10987
+ right: 10px; /* Mobile: full width minus margins */
10988
+ max-width: none; /* Mobile: no width constraint */
10663
10989
  }
10664
10990
 
10665
10991
  .dm-cookie-consent-bottom-right {
10666
10992
  bottom: 20px;
10667
- right: 20px;
10668
- max-width: 400px;
10993
+ left: 10px; /* Mobile default: minimal margins */
10994
+ right: 10px; /* Mobile: full width minus margins */
10995
+ max-width: none; /* Mobile: no width constraint */
10669
10996
  }
10670
10997
 
10671
10998
  .dm-cookie-consent-center-modal {
@@ -10679,8 +11006,8 @@ code {
10679
11006
  /* Layout variants */
10680
11007
  .dm-cookie-consent-bar .dm-cookie-consent-content {
10681
11008
  display: flex;
10682
- align-items: center;
10683
- justify-content: space-between;
11009
+ flex-direction: column; /* Mobile default: vertical stacking */
11010
+ align-items: stretch;
10684
11011
  padding: 16px 20px;
10685
11012
  gap: 20px;
10686
11013
  }
@@ -10721,7 +11048,8 @@ code {
10721
11048
  /* Message styles */
10722
11049
  .dm-cookie-consent-message {
10723
11050
  flex: 1;
10724
- margin-right: 20px;
11051
+ margin-right: 0; /* Mobile default: no right margin */
11052
+ margin-bottom: 16px; /* Mobile default: bottom spacing */
10725
11053
  }
10726
11054
 
10727
11055
  .dm-cookie-consent-message a {
@@ -10736,6 +11064,7 @@ code {
10736
11064
  /* Button styles */
10737
11065
  .dm-cookie-consent-buttons {
10738
11066
  display: flex;
11067
+ flex-direction: column; /* Mobile default: vertical buttons */
10739
11068
  gap: 12px;
10740
11069
  flex-shrink: 0;
10741
11070
  }
@@ -10901,27 +11230,32 @@ code {
10901
11230
  gap: 12px;
10902
11231
  }
10903
11232
 
10904
- /* Responsive */
10905
- @media (max-width: 640px) {
11233
+ /* Desktop (≥641px) - Cookie Consent enhancements */
11234
+ @media (min-width: 641px) {
10906
11235
  .dm-cookie-consent-bar .dm-cookie-consent-content {
10907
- flex-direction: column;
10908
- align-items: stretch;
11236
+ flex-direction: row; /* Horizontal on desktop */
11237
+ align-items: center;
10909
11238
  }
10910
11239
 
10911
11240
  .dm-cookie-consent-message {
10912
- margin-right: 0;
10913
- margin-bottom: 16px;
11241
+ margin-right: 24px;
11242
+ margin-bottom: 0;
10914
11243
  }
10915
11244
 
10916
11245
  .dm-cookie-consent-buttons {
10917
- flex-direction: column;
11246
+ flex-direction: row; /* Horizontal buttons on desktop */
11247
+ }
11248
+
11249
+ .dm-cookie-consent-bottom-left {
11250
+ left: 20px;
11251
+ right: auto;
11252
+ max-width: 600px;
10918
11253
  }
10919
11254
 
10920
- .dm-cookie-consent-bottom-left,
10921
11255
  .dm-cookie-consent-bottom-right {
10922
- left: 10px;
10923
- right: 10px;
10924
- max-width: none;
11256
+ left: auto;
11257
+ right: 20px;
11258
+ max-width: 600px;
10925
11259
  }
10926
11260
  }
10927
11261
 
@@ -10932,11 +11266,11 @@ code {
10932
11266
  ============================================ */
10933
11267
 
10934
11268
  /*!
10935
- * Domma Themes v0.8.0-alpha
11269
+ * Domma Themes v0.9.2-alpha
10936
11270
  * Dynamic Object Manipulation & Modeling API
10937
11271
  * (c) 2026 Darryl Waterhouse & DCBW-IT
10938
- * Built: 2026-01-09T18:35:07.434Z
10939
- * Commit: 1a13022
11272
+ * Built: 2026-01-11T18:01:20.167Z
11273
+ * Commit: 136342c
10940
11274
  */
10941
11275
 
10942
11276
  /**