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 Data-Focused CSS Bundle v0.8.0-alpha
2
+ * Domma Data-Focused 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.813Z
5
+ * Built: 2026-01-11T18:01:20.510Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -230,11 +230,11 @@
230
230
  ============================================ */
231
231
 
232
232
  /*!
233
- * Domma Core CSS v0.8.0-alpha
233
+ * Domma Core CSS v0.9.2-alpha
234
234
  * Dynamic Object Manipulation & Modeling API
235
235
  * (c) 2026 Darryl Waterhouse & DCBW-IT
236
- * Built: 2026-01-09T18:35:07.456Z
237
- * Commit: 1a13022
236
+ * Built: 2026-01-11T18:01:20.188Z
237
+ * Commit: 136342c
238
238
  */
239
239
 
240
240
  /**
@@ -4235,11 +4235,11 @@ body.dm-cloaked.dm-ready {
4235
4235
  ============================================ */
4236
4236
 
4237
4237
  /*!
4238
- * Domma Grid CSS v0.8.0-alpha
4238
+ * Domma Grid CSS v0.9.2-alpha
4239
4239
  * Dynamic Object Manipulation & Modeling API
4240
4240
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4241
- * Built: 2026-01-09T18:35:07.464Z
4242
- * Commit: 1a13022
4241
+ * Built: 2026-01-11T18:01:20.195Z
4242
+ * Commit: 136342c
4243
4243
  */
4244
4244
 
4245
4245
  /**
@@ -4836,11 +4836,11 @@ body.dm-cloaked.dm-ready {
4836
4836
  ============================================ */
4837
4837
 
4838
4838
  /*!
4839
- * Domma Elements CSS v0.8.0-alpha
4839
+ * Domma Elements CSS v0.9.2-alpha
4840
4840
  * Dynamic Object Manipulation & Modeling API
4841
4841
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4842
- * Built: 2026-01-09T18:35:07.473Z
4843
- * Commit: 1a13022
4842
+ * Built: 2026-01-11T18:01:20.203Z
4843
+ * Commit: 136342c
4844
4844
  */
4845
4845
 
4846
4846
  /**
@@ -6292,11 +6292,18 @@ code {
6292
6292
  NAVBAR
6293
6293
  ============================================ */
6294
6294
 
6295
+ /* ============================================
6296
+ NAVBAR - MOBILE FIRST
6297
+ ============================================ */
6298
+
6299
+ /* Base navbar (mobile default) */
6295
6300
  .navbar {
6296
6301
  display: flex;
6297
6302
  align-items: center;
6298
6303
  justify-content: space-between;
6299
- padding: var(--dm-space-3) var(--dm-space-6);
6304
+ flex-wrap: wrap;
6305
+ gap: var(--dm-space-3);
6306
+ padding: var(--dm-space-3) var(--dm-space-4);
6300
6307
  padding-right: 6rem; /* Leave space for theme toggle + variant */
6301
6308
  background-color: var(--dm-navbar-bg);
6302
6309
  border-bottom: 1px solid var(--dm-border);
@@ -6342,10 +6349,10 @@ code {
6342
6349
  object-fit: contain;
6343
6350
  }
6344
6351
 
6345
- /* Hamburger Toggle */
6346
-
6352
+ /* Hamburger Toggle (visible on mobile) */
6347
6353
  .navbar-toggle {
6348
- display: none;
6354
+ display: block;
6355
+ order: 2;
6349
6356
  padding: var(--dm-space-2);
6350
6357
  background: transparent;
6351
6358
  border: none;
@@ -6366,31 +6373,97 @@ code {
6366
6373
  display: block;
6367
6374
  }
6368
6375
 
6376
+ /* Hamburger icon - three lines */
6377
+ .navbar-toggle-icon {
6378
+ display: block;
6379
+ width: 22px;
6380
+ height: 2px;
6381
+ background: currentColor;
6382
+ position: relative;
6383
+ transition: background 0.2s ease;
6384
+ }
6385
+
6386
+ .navbar-toggle-icon::before,
6387
+ .navbar-toggle-icon::after {
6388
+ content: '';
6389
+ position: absolute;
6390
+ left: 0;
6391
+ width: 100%;
6392
+ height: 2px;
6393
+ background: currentColor;
6394
+ transition: transform 0.2s ease;
6395
+ }
6396
+
6397
+ .navbar-toggle-icon::before {
6398
+ top: -7px;
6399
+ }
6400
+
6401
+ .navbar-toggle-icon::after {
6402
+ top: 7px;
6403
+ }
6404
+
6405
+ /* Animate to X when expanded */
6406
+ .navbar-toggle[aria-expanded="true"] .navbar-toggle-icon {
6407
+ background: transparent;
6408
+ }
6409
+
6410
+ .navbar-toggle[aria-expanded="true"] .navbar-toggle-icon::before {
6411
+ transform: rotate(45deg);
6412
+ top: 0;
6413
+ }
6414
+
6415
+ .navbar-toggle[aria-expanded="true"] .navbar-toggle-icon::after {
6416
+ transform: rotate(-45deg);
6417
+ top: 0;
6418
+ }
6419
+
6420
+ /* Navbar collapse (mobile: hidden by default) */
6421
+ .navbar-collapse {
6422
+ display: none;
6423
+ width: 100%;
6424
+ order: 3;
6425
+ flex-direction: column;
6426
+ padding-top: var(--dm-space-3);
6427
+ border-top: 1px solid var(--dm-border);
6428
+ }
6429
+
6430
+ .navbar-collapse.show {
6431
+ display: flex;
6432
+ }
6433
+
6434
+ /* Navbar navigation list (mobile: vertical) */
6369
6435
  .navbar-nav {
6370
6436
  display: flex;
6371
- flex-wrap: wrap;
6437
+ flex-direction: column;
6438
+ width: 100%;
6372
6439
  list-style: none;
6373
6440
  margin: 0;
6374
6441
  padding: 0;
6375
- gap: var(--dm-space-1);
6376
- align-items: center;
6442
+ gap: 0;
6443
+ max-height: 60vh;
6444
+ overflow-y: auto;
6445
+ }
6446
+
6447
+ .navbar-nav li {
6448
+ width: 100%;
6377
6449
  }
6378
6450
 
6451
+ /* Navbar links (mobile: full width, larger touch targets) */
6379
6452
  .navbar-link {
6380
6453
  display: block;
6381
- padding: var(--dm-space-2) var(--dm-space-3);
6454
+ padding: var(--dm-space-3) var(--dm-space-4);
6382
6455
  color: var(--dm-navbar-text);
6383
6456
  text-decoration: none;
6384
- border-radius: var(--dm-radius-md);
6457
+ border-radius: 0;
6385
6458
  transition: all var(--dm-transition-fast);
6386
- font-size: var(--dm-font-size-sm);
6459
+ font-size: var(--dm-font-size-base);
6387
6460
  white-space: nowrap;
6388
6461
  }
6389
6462
 
6390
6463
  .navbar-link:hover {
6391
6464
  color: var(--dm-text);
6392
- /*background-color: var(--dm-surface-raised);*/
6393
6465
  background-color: var(--dm-gray-800);
6466
+ border-radius: 0;
6394
6467
  }
6395
6468
 
6396
6469
  .navbar-link.active {
@@ -6399,6 +6472,11 @@ code {
6399
6472
  background-color: color-mix(in srgb, var(--dm-primary) 10%, transparent);
6400
6473
  }
6401
6474
 
6475
+ .nav-version {
6476
+ display: none;
6477
+ color: #eee;
6478
+ }
6479
+
6402
6480
  /* Light navbar variant */
6403
6481
 
6404
6482
  .navbar-light {
@@ -6464,68 +6542,113 @@ code {
6464
6542
  color: var(--dm-white);
6465
6543
  }
6466
6544
 
6467
- /* Responsive navbar - tablet */
6468
- @media (max-width: 1200px) {
6469
- .navbar {
6470
- padding: var(--dm-space-3) var(--dm-space-4);
6471
- padding-right: 6rem;
6472
- }
6545
+ /* Dark navbar collapse border color (mobile) */
6546
+ .navbar-dark .navbar-collapse {
6547
+ border-top-color: var(--dm-gray-700);
6548
+ }
6473
6549
 
6474
- .navbar-link {
6475
- padding: var(--dm-space-1) var(--dm-space-2);
6476
- font-size: var(--dm-font-size-xs);
6477
- }
6550
+ /* Navbar actions - base mobile styles */
6551
+ .navbar-actions {
6552
+ display: flex;
6553
+ align-items: center;
6554
+ gap: var(--dm-space-3);
6478
6555
  }
6479
6556
 
6480
- /* Responsive navbar - mobile */
6481
- @media (max-width: 992px) {
6557
+ /* ============================================
6558
+ NAVBAR - DESKTOP ENHANCEMENTS
6559
+ ============================================ */
6560
+
6561
+ /* Desktop (≥993px) */
6562
+ @media (min-width: 993px) {
6482
6563
  .navbar {
6483
- flex-wrap: wrap;
6484
- gap: var(--dm-space-3);
6564
+ flex-wrap: nowrap;
6565
+ gap: 0;
6566
+ padding: var(--dm-space-3) var(--dm-space-6);
6485
6567
  }
6486
6568
 
6569
+ /* Hide hamburger on desktop */
6487
6570
  .navbar-toggle {
6488
- display: block;
6489
- order: 2;
6571
+ display: none;
6572
+ }
6573
+
6574
+ /* Show navbar collapse on desktop */
6575
+ .navbar-collapse {
6576
+ display: flex;
6577
+ width: auto;
6578
+ flex-direction: row;
6579
+ align-items: center;
6580
+ flex-grow: 1;
6581
+ padding-top: 0;
6582
+ border-top: none;
6490
6583
  }
6491
6584
 
6585
+ /* Horizontal navigation on desktop */
6492
6586
  .navbar-nav {
6493
- display: none;
6494
- width: 100%;
6495
- order: 3;
6496
- flex-direction: column;
6497
- gap: 0;
6498
- padding-top: var(--dm-space-3);
6499
- border-top: 1px solid var(--dm-gray-200);
6500
- max-height: 60vh;
6501
- overflow-y: auto;
6587
+ flex-direction: row;
6588
+ flex: 1;
6589
+ justify-content: center;
6590
+ gap: var(--dm-space-1);
6591
+ align-items: center;
6592
+ max-height: none;
6593
+ overflow-y: visible;
6502
6594
  }
6503
6595
 
6504
- .navbar-dark .navbar-nav {
6505
- border-top-color: var(--dm-gray-800);
6596
+ .navbar-nav li {
6597
+ width: auto;
6506
6598
  }
6507
6599
 
6508
- .navbar-nav.open {
6509
- display: flex;
6600
+ /* Navbar actions - desktop override: push to right */
6601
+ .navbar-actions {
6602
+ margin-left: auto;
6510
6603
  }
6511
6604
 
6512
- .navbar-nav li {
6513
- width: 100%;
6605
+ .navbar-action-link {
6606
+ color: var(--dm-navbar-text, var(--dm-white));
6607
+ text-decoration: none;
6608
+ padding: var(--dm-space-2) var(--dm-space-3);
6609
+ border-radius: var(--dm-radius-md);
6610
+ font-size: var(--dm-font-size-sm);
6611
+ transition: background var(--dm-transition-fast);
6612
+ }
6613
+
6614
+ .navbar-action-link:hover {
6615
+ background: rgba(255, 255, 255, 0.1);
6616
+ text-decoration: none;
6617
+ }
6618
+
6619
+ .navbar-dark .navbar-action-link {
6620
+ color: var(--dm-white);
6621
+ }
6622
+
6623
+ .navbar-light .navbar-action-link {
6624
+ color: var(--dm-text);
6625
+ }
6626
+
6627
+ .navbar-light .navbar-action-link:hover {
6628
+ background: rgba(0, 0, 0, 0.05);
6514
6629
  }
6515
6630
 
6631
+ /* Compact links on desktop */
6516
6632
  .navbar-link {
6517
- padding: var(--dm-space-3) var(--dm-space-4);
6518
- font-size: var(--dm-font-size-base);
6519
- border-radius: 0;
6633
+ padding: var(--dm-space-2) var(--dm-space-3);
6634
+ font-size: var(--dm-font-size-sm);
6635
+ border-radius: var(--dm-radius-md);
6520
6636
  }
6521
6637
 
6522
6638
  .navbar-link:hover {
6523
- border-radius: 0;
6639
+ border-radius: var(--dm-radius-md);
6524
6640
  }
6525
6641
 
6526
6642
  .nav-version {
6527
- display: none;
6528
- color: #eee;
6643
+ display: inline;
6644
+ }
6645
+ }
6646
+
6647
+ /* Large desktop (≥1201px) */
6648
+ @media (min-width: 1201px) {
6649
+ .navbar-link {
6650
+ padding: var(--dm-space-1) var(--dm-space-2);
6651
+ font-size: var(--dm-font-size-xs);
6529
6652
  }
6530
6653
  }
6531
6654
 
@@ -7427,21 +7550,23 @@ code {
7427
7550
 
7428
7551
 
7429
7552
  /* ============================================
7430
- HERO SECTION
7553
+ HERO SECTION - MOBILE FIRST
7431
7554
  ============================================ */
7432
7555
 
7433
- /* Base Hero - Structure Only */
7556
+ /* Base Hero - Mobile Default */
7434
7557
  .hero {
7435
- padding: 4rem 2rem;
7558
+ padding: 3rem 1rem; /* Reduced side padding to minimize whitespace */
7436
7559
  text-align: center;
7437
7560
  position: relative;
7438
7561
  background: var(--dm-surface);
7439
7562
  color: var(--dm-text);
7563
+ width: 100%; /* Ensure full width */
7564
+ box-sizing: border-box; /* Include padding in width calculation */
7440
7565
  }
7441
7566
 
7442
7567
  .hero h1,
7443
7568
  .hero .hero-title {
7444
- font-size: 3rem;
7569
+ font-size: 2rem; /* Mobile-optimized title size */
7445
7570
  font-weight: 700;
7446
7571
  margin-bottom: 1rem;
7447
7572
  line-height: 1.2;
@@ -7449,7 +7574,7 @@ code {
7449
7574
 
7450
7575
  .hero p,
7451
7576
  .hero .hero-subtitle {
7452
- font-size: 1.25rem;
7577
+ font-size: 1rem; /* Mobile-optimized text size */
7453
7578
  max-width: 600px;
7454
7579
  margin: 0 auto 2rem;
7455
7580
  opacity: 0.9;
@@ -7468,32 +7593,33 @@ code {
7468
7593
  flex-wrap: wrap;
7469
7594
  }
7470
7595
 
7471
- /* Hero Size Variants */
7596
+ /* Hero Size Variants - Mobile Default */
7472
7597
  .hero-sm {
7473
- padding: 2rem 1rem;
7598
+ padding: 2rem 0.75rem;
7474
7599
  }
7475
7600
 
7476
7601
  .hero-sm h1,
7477
7602
  .hero-sm .hero-title {
7478
- font-size: 2rem;
7603
+ font-size: 1.75rem;
7479
7604
  }
7480
7605
 
7481
7606
  .hero-sm p,
7482
7607
  .hero-sm .hero-subtitle {
7483
- font-size: 1rem;
7608
+ font-size: 0.875rem;
7484
7609
  }
7485
7610
 
7486
7611
  .hero-lg {
7487
- padding: 6rem 2rem;
7612
+ padding: 4rem 1rem;
7488
7613
  }
7489
7614
 
7490
7615
  .hero-lg h1,
7491
7616
  .hero-lg .hero-title {
7492
- font-size: 4rem;
7617
+ font-size: 2.5rem;
7493
7618
  }
7494
7619
 
7495
7620
  .hero-full {
7496
7621
  min-height: 100vh;
7622
+ min-height: 100dvh; /* Dynamic viewport height for mobile browsers */
7497
7623
  display: flex;
7498
7624
  flex-direction: column;
7499
7625
  justify-content: center;
@@ -7520,20 +7646,48 @@ code {
7520
7646
  color: var(--dm-white);
7521
7647
  }
7522
7648
 
7523
- /* Responsive */
7524
- @media (max-width: 768px) {
7649
+ /* ============================================
7650
+ HERO - DESKTOP ENHANCEMENTS
7651
+ ============================================ */
7652
+
7653
+ /* Desktop (≥769px) */
7654
+ @media (min-width: 769px) {
7655
+ .hero {
7656
+ padding: 4rem 2rem; /* Desktop: more generous padding */
7657
+ }
7658
+
7525
7659
  .hero h1,
7526
7660
  .hero .hero-title {
7527
- font-size: 2rem;
7661
+ font-size: 3rem; /* Desktop: larger title */
7528
7662
  }
7529
7663
 
7530
7664
  .hero p,
7531
7665
  .hero .hero-subtitle {
7666
+ font-size: 1.25rem; /* Desktop: larger text */
7667
+ }
7668
+
7669
+ /* Desktop size variants */
7670
+ .hero-sm {
7671
+ padding: 2rem 1rem;
7672
+ }
7673
+
7674
+ .hero-sm h1,
7675
+ .hero-sm .hero-title {
7676
+ font-size: 2rem;
7677
+ }
7678
+
7679
+ .hero-sm p,
7680
+ .hero-sm .hero-subtitle {
7532
7681
  font-size: 1rem;
7533
7682
  }
7534
7683
 
7535
- .hero {
7536
- padding: 3rem 1.5rem;
7684
+ .hero-lg {
7685
+ padding: 6rem 2rem;
7686
+ }
7687
+
7688
+ .hero-lg h1,
7689
+ .hero-lg .hero-title {
7690
+ font-size: 4rem;
7537
7691
  }
7538
7692
  }
7539
7693
 
@@ -7921,36 +8075,49 @@ code {
7921
8075
 
7922
8076
 
7923
8077
  /* ============================================
7924
- SIDEBAR
8078
+ SIDEBAR - MOBILE FIRST
7925
8079
  ============================================ */
7926
8080
 
7927
- /* Base Sidebar */
8081
+ /* Base Sidebar - Mobile Default */
7928
8082
  .sidebar {
7929
8083
  position: relative;
7930
- width: 250px;
8084
+ width: 100%;
8085
+ max-width: 250px;
7931
8086
  background: var(--dm-surface, #fff);
7932
8087
  border-right: 1px solid var(--dm-border, #dee2e6);
7933
8088
  overflow-y: auto;
7934
8089
  overflow-x: hidden;
7935
- transition: transform 0.3s ease;
8090
+ transition: transform 0.3s ease, width 0.3s ease;
7936
8091
  z-index: 100;
8092
+ --sidebar-width: 250px;
8093
+ --sidebar-collapsed-width: 60px;
7937
8094
  }
7938
8095
 
7939
- /* Fixed positioning */
8096
+ /* Fixed positioning - Mobile: hidden off-screen by default */
7940
8097
  .sidebar-fixed {
7941
8098
  position: fixed;
7942
8099
  top: 0;
7943
8100
  left: 0;
7944
8101
  height: 100vh;
8102
+ height: 100dvh; /* Dynamic viewport height for mobile */
8103
+ transform: translateX(-100%); /* Hidden off-screen on mobile */
8104
+ box-shadow: none;
7945
8105
  }
7946
8106
 
7947
8107
  .sidebar-fixed.sidebar-right {
7948
8108
  left: auto;
7949
8109
  right: 0;
8110
+ transform: translateX(100%); /* Hidden off-screen right */
7950
8111
  border-right: none;
7951
8112
  border-left: 1px solid var(--dm-border, #dee2e6);
7952
8113
  }
7953
8114
 
8115
+ /* Mobile: slide in when open */
8116
+ .sidebar-fixed.open {
8117
+ transform: translateX(0);
8118
+ box-shadow: var(--dm-shadow-xl, 0 10px 40px rgba(0,0,0,0.2));
8119
+ }
8120
+
7954
8121
  /* Position variants */
7955
8122
  .sidebar-left {
7956
8123
  left: 0;
@@ -7988,8 +8155,11 @@ code {
7988
8155
  color: var(--dm-text, #212529);
7989
8156
  }
7990
8157
 
8158
+ /* Toggle button - Visible on mobile by default */
7991
8159
  .sidebar-toggle-btn {
7992
- display: none; /* Shown on mobile */
8160
+ display: flex;
8161
+ align-items: center;
8162
+ justify-content: center;
7993
8163
  flex-shrink: 0;
7994
8164
  width: 32px;
7995
8165
  height: 32px;
@@ -8167,7 +8337,7 @@ code {
8167
8337
  color: var(--dm-text-muted, #6c757d);
8168
8338
  }
8169
8339
 
8170
- /* Overlay (mobile) */
8340
+ /* Overlay - Visible on mobile */
8171
8341
  .sidebar-overlay {
8172
8342
  position: fixed;
8173
8343
  top: 0;
@@ -8179,6 +8349,7 @@ code {
8179
8349
  opacity: 0;
8180
8350
  visibility: hidden;
8181
8351
  transition: opacity 0.3s ease, visibility 0.3s ease;
8352
+ display: block;
8182
8353
  }
8183
8354
 
8184
8355
  .sidebar-overlay.active {
@@ -8242,30 +8413,118 @@ code {
8242
8413
  border-color: var(--dm-border, #dee2e6);
8243
8414
  }
8244
8415
 
8245
- /* Mobile/Tablet: Slide-out drawer */
8246
- @media (max-width: 768px) {
8416
+ /* ============================================
8417
+ SIDEBAR - DESKTOP ENHANCEMENTS
8418
+ ============================================ */
8419
+
8420
+ /* Desktop (≥769px) */
8421
+ @media (min-width: 769px) {
8422
+ /* Desktop: Sidebar always visible */
8247
8423
  .sidebar-fixed {
8248
- transform: translateX(-100%);
8424
+ transform: translateX(0);
8249
8425
  box-shadow: none;
8250
8426
  }
8251
8427
 
8252
8428
  .sidebar-fixed.sidebar-right {
8253
- transform: translateX(100%);
8254
- }
8255
-
8256
- .sidebar-fixed.open {
8257
8429
  transform: translateX(0);
8258
- box-shadow: var(--dm-shadow-xl, 0 10px 40px rgba(0,0,0,0.2));
8259
8430
  }
8260
8431
 
8432
+ /* Desktop: Hide toggle button (unless desktop collapsible) */
8261
8433
  .sidebar-toggle-btn {
8434
+ display: none;
8435
+ }
8436
+
8437
+ /* Show toggle button on desktop when collapsibleDesktop enabled */
8438
+ .sidebar.sidebar-desktop-collapsible .sidebar-toggle-btn {
8262
8439
  display: flex;
8440
+ }
8441
+
8442
+ /* Desktop: Hide overlay */
8443
+ .sidebar-overlay {
8444
+ display: none;
8445
+ }
8446
+
8447
+ /* Desktop collapsed state - Fully hidden */
8448
+ .sidebar.sidebar-collapsed {
8449
+ transform: translateX(-100%);
8450
+ }
8451
+
8452
+ .sidebar.sidebar-collapsed.sidebar-right {
8453
+ transform: translateX(100%);
8454
+ }
8455
+
8456
+ /* Floating toggle button - appears when sidebar is collapsed */
8457
+ .sidebar-floating-toggle {
8458
+ position: fixed;
8459
+ top: 50%;
8460
+ left: 0;
8461
+ transform: translateY(-50%);
8462
+ z-index: 1001;
8463
+ display: none; /* Hidden by default */
8263
8464
  align-items: center;
8264
8465
  justify-content: center;
8466
+ width: 40px;
8467
+ height: 40px;
8468
+ background: var(--dm-primary, #007bff);
8469
+ color: var(--dm-white, #fff);
8470
+ border: none;
8471
+ border-radius: 0 var(--dm-radius-md, 0.375rem) var(--dm-radius-md, 0.375rem) 0;
8472
+ cursor: pointer;
8473
+ transition: all 0.2s ease;
8474
+ box-shadow: var(--dm-shadow-lg, 0 4px 12px rgba(0,0,0,0.15));
8265
8475
  }
8266
8476
 
8267
- .sidebar-overlay {
8268
- display: block;
8477
+ .sidebar-floating-toggle:hover {
8478
+ background: var(--dm-primary-dark, #0056b3);
8479
+ width: 48px;
8480
+ box-shadow: var(--dm-shadow-xl, 0 8px 20px rgba(0,0,0,0.2));
8481
+ }
8482
+
8483
+ .sidebar-floating-toggle.show {
8484
+ display: flex;
8485
+ }
8486
+
8487
+ .sidebar-floating-toggle.right {
8488
+ left: auto;
8489
+ right: 0;
8490
+ border-radius: var(--dm-radius-md, 0.375rem) 0 0 var(--dm-radius-md, 0.375rem);
8491
+ }
8492
+ }
8493
+
8494
+ /* ============================================
8495
+ Floating Sidebar Variant
8496
+ (bottom-left positioned sidebar)
8497
+ ============================================ */
8498
+ .sidebar-floating {
8499
+ position: fixed;
8500
+ left: 2px;
8501
+ bottom: 8px;
8502
+ top: auto !important;
8503
+ height: auto;
8504
+ max-height: 400px;
8505
+ width: 220px;
8506
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
8507
+ z-index: 100;
8508
+ }
8509
+
8510
+ .sidebar-floating .sidebar-header {
8511
+ font-size: 0.875rem;
8512
+ text-transform: uppercase;
8513
+ letter-spacing: 0.05em;
8514
+ }
8515
+
8516
+ @media (max-width: 992px) {
8517
+ .sidebar-floating {
8518
+ left: 0.5rem;
8519
+ bottom: 0.5rem;
8520
+ width: 180px;
8521
+ max-height: 300px;
8522
+ }
8523
+ }
8524
+
8525
+ @media (max-width: 576px) {
8526
+ .sidebar-floating {
8527
+ display: none;
8269
8528
  }
8270
8529
  }
8271
8530
 
@@ -8458,6 +8717,33 @@ code {
8458
8717
  color: rgba(255, 255, 255, 0.8);
8459
8718
  }
8460
8719
 
8720
+ /* ============================================
8721
+ SIDEBAR - PUSH MODE
8722
+ ============================================ */
8723
+
8724
+ /* Content wrapper when sidebar pushes it (left position) */
8725
+ .sidebar-push-active {
8726
+ margin-left: var(--sidebar-push-width, 250px);
8727
+ transition: margin-left var(--dm-transition-normal, 0.3s) ease;
8728
+ }
8729
+
8730
+ /* Content wrapper when sidebar pushes it (right position) */
8731
+ .sidebar-push-active-right {
8732
+ margin-right: var(--sidebar-push-width, 250px);
8733
+ margin-left: 0;
8734
+ transition: margin-right var(--dm-transition-normal, 0.3s) ease;
8735
+ }
8736
+
8737
+ /* Mobile: Allow custom push width for mobile */
8738
+ @media (max-width: 768px) {
8739
+ .sidebar-push-active {
8740
+ margin-left: var(--sidebar-push-width-mobile, var(--sidebar-push-width, 250px));
8741
+ }
8742
+
8743
+ .sidebar-push-active-right {
8744
+ margin-right: var(--sidebar-push-width-mobile, var(--sidebar-push-width, 250px));
8745
+ }
8746
+ }
8461
8747
 
8462
8748
 
8463
8749
  /* ============================================
@@ -8492,20 +8778,20 @@ code {
8492
8778
  z-index: 100;
8493
8779
  }
8494
8780
 
8495
- /* Container */
8781
+ /* Container - Mobile Default */
8496
8782
  .footer-container {
8497
8783
  max-width: var(--dm-container-lg, 1200px);
8498
8784
  margin: 0 auto;
8499
- padding: var(--dm-space-6, 1.5rem) var(--dm-space-4, 1rem);
8785
+ padding: var(--dm-space-4, 1rem); /* Mobile: compact padding */
8500
8786
  }
8501
8787
 
8502
- /* ========== Simple Layout ========== */
8788
+ /* ========== Simple Layout - Mobile Default ========== */
8503
8789
 
8504
8790
  .footer-simple .footer-simple-content {
8505
8791
  display: flex;
8506
8792
  flex-wrap: wrap;
8507
- align-items: center;
8508
- justify-content: space-between;
8793
+ flex-direction: column; /* Mobile: vertical stacking */
8794
+ align-items: flex-start; /* Mobile: left-aligned */
8509
8795
  gap: var(--dm-space-4, 1rem);
8510
8796
  }
8511
8797
 
@@ -8536,8 +8822,9 @@ code {
8536
8822
  .footer-nav {
8537
8823
  display: flex;
8538
8824
  flex-wrap: wrap;
8539
- gap: var(--dm-space-4, 1rem);
8540
- align-items: center;
8825
+ flex-direction: column; /* Mobile: vertical nav */
8826
+ align-items: flex-start; /* Mobile: left-aligned */
8827
+ gap: var(--dm-space-2, 0.5rem); /* Mobile: compact spacing */
8541
8828
  }
8542
8829
 
8543
8830
  .footer-link {
@@ -8584,12 +8871,12 @@ code {
8584
8871
  color: var(--dm-text-muted, #6c757d);
8585
8872
  }
8586
8873
 
8587
- /* ========== Columns Layout ========== */
8874
+ /* ========== Columns Layout - Mobile Default ========== */
8588
8875
 
8589
8876
  .footer-columns .footer-columns-content {
8590
8877
  display: grid;
8591
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
8592
- gap: var(--dm-space-6, 1.5rem);
8878
+ grid-template-columns: 1fr; /* Mobile: single column */
8879
+ gap: var(--dm-space-4, 1rem); /* Mobile: compact spacing */
8593
8880
  padding-bottom: var(--dm-space-4, 1rem);
8594
8881
  margin-bottom: var(--dm-space-4, 1rem);
8595
8882
  border-bottom: 1px solid var(--dm-border, #dee2e6);
@@ -8615,6 +8902,15 @@ code {
8615
8902
  line-height: 1.6;
8616
8903
  }
8617
8904
 
8905
+ .footer-column-brand .footer-brand-description {
8906
+ display: block;
8907
+ margin: var(--dm-space-2, 0.5rem) 0 0;
8908
+ color: var(--dm-text-muted, #6c757d);
8909
+ font-size: var(--dm-font-size-sm, 0.875rem);
8910
+ line-height: 1.5;
8911
+ opacity: 0.8;
8912
+ }
8913
+
8618
8914
  .footer-column-title {
8619
8915
  margin: 0 0 var(--dm-space-3, 0.75rem);
8620
8916
  font-size: var(--dm-font-size-base, 1rem);
@@ -8647,19 +8943,23 @@ code {
8647
8943
  .footer-columns .footer-bottom {
8648
8944
  display: flex;
8649
8945
  flex-wrap: wrap;
8650
- align-items: center;
8651
- justify-content: space-between;
8946
+ flex-direction: column; /* Mobile: vertical stacking */
8947
+ align-items: flex-start; /* Mobile: left-aligned */
8652
8948
  gap: var(--dm-space-4, 1rem);
8653
8949
  }
8654
8950
 
8655
8951
  .footer-columns .footer-copyright {
8656
- width: auto;
8952
+ width: 100%; /* Mobile: full width */
8657
8953
  padding: 0;
8658
8954
  margin: 0;
8659
8955
  border: none;
8660
8956
  text-align: left;
8661
8957
  }
8662
8958
 
8959
+ .footer-social {
8960
+ width: 100%; /* Mobile: full width */
8961
+ }
8962
+
8663
8963
  /* ========== Minimal Layout ========== */
8664
8964
 
8665
8965
  .footer-minimal .footer-minimal-content {
@@ -8696,6 +8996,10 @@ code {
8696
8996
  color: var(--dm-white, #fff);
8697
8997
  }
8698
8998
 
8999
+ .footer-dark .footer-brand-description {
9000
+ color: var(--dm-gray-300, #dee2e6);
9001
+ }
9002
+
8699
9003
  .footer-dark .footer-link {
8700
9004
  color: var(--dm-gray-400, #adb5bd);
8701
9005
  }
@@ -8746,41 +9050,50 @@ code {
8746
9050
  border-color: transparent;
8747
9051
  }
8748
9052
 
8749
- /* ========== Responsive ========== */
9053
+ /* ============================================
9054
+ FOOTER - DESKTOP ENHANCEMENTS
9055
+ ============================================ */
8750
9056
 
8751
- @media (max-width: 768px) {
9057
+ /* Desktop (≥769px) */
9058
+ @media (min-width: 769px) {
9059
+ /* Desktop: More generous padding */
8752
9060
  .footer-container {
8753
- padding: var(--dm-space-4, 1rem);
9061
+ padding: var(--dm-space-6, 1.5rem) var(--dm-space-4, 1rem);
8754
9062
  }
8755
9063
 
9064
+ /* Desktop: Horizontal simple layout */
8756
9065
  .footer-simple .footer-simple-content {
8757
- flex-direction: column;
8758
- align-items: flex-start;
9066
+ flex-direction: row;
9067
+ align-items: center;
9068
+ justify-content: space-between;
8759
9069
  }
8760
9070
 
9071
+ /* Desktop: Horizontal navigation */
8761
9072
  .footer-nav {
8762
- flex-direction: column;
8763
- align-items: flex-start;
8764
- gap: var(--dm-space-2, 0.5rem);
9073
+ flex-direction: row;
9074
+ align-items: center;
9075
+ gap: var(--dm-space-4, 1rem);
8765
9076
  }
8766
9077
 
9078
+ /* Desktop: Multi-column grid */
8767
9079
  .footer-columns .footer-columns-content {
8768
- grid-template-columns: 1fr;
8769
- gap: var(--dm-space-4, 1rem);
9080
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
9081
+ gap: var(--dm-space-6, 1.5rem);
8770
9082
  }
8771
9083
 
9084
+ /* Desktop: Horizontal bottom section */
8772
9085
  .footer-columns .footer-bottom {
8773
- flex-direction: column;
8774
- align-items: flex-start;
9086
+ flex-direction: row;
9087
+ align-items: center;
9088
+ justify-content: space-between;
8775
9089
  }
8776
9090
 
8777
9091
  .footer-columns .footer-copyright {
8778
- width: 100%;
8779
- text-align: left;
9092
+ width: auto;
8780
9093
  }
8781
9094
 
8782
9095
  .footer-social {
8783
- width: 100%;
9096
+ width: auto;
8784
9097
  }
8785
9098
  }
8786
9099
  /* ============================================
@@ -9066,7 +9379,7 @@ code {
9066
9379
 
9067
9380
  /* Timer display */
9068
9381
  .dm-timer-display {
9069
- font-size: 2.5rem;
9382
+ font-size: 2rem; /* Mobile default */
9070
9383
  font-weight: 600;
9071
9384
  font-family: 'Courier New', monospace;
9072
9385
  color: var(--dm-slate-900);
@@ -9168,16 +9481,18 @@ code {
9168
9481
  display: none !important;
9169
9482
  }
9170
9483
 
9171
- /* Responsive timer styles */
9172
- @media (max-width: 576px) {
9484
+ /* Mobile-first: Timer base styles are already mobile-optimized above */
9485
+
9486
+ /* Desktop (≥577px) - Timer enhancements */
9487
+ @media (min-width: 577px) {
9173
9488
  .dm-timer-display {
9174
- font-size: 2rem;
9489
+ font-size: 3rem; /* Larger on desktop */
9175
9490
  }
9176
9491
 
9177
9492
  .dm-timer-button {
9178
- padding: 0.375rem 0.75rem;
9179
- font-size: 0.8125rem;
9180
- min-width: 70px;
9493
+ padding: 0.5rem 1rem;
9494
+ font-size: 0.875rem;
9495
+ min-width: 80px;
9181
9496
  }
9182
9497
  }
9183
9498
 
@@ -9444,14 +9759,14 @@ code {
9444
9759
 
9445
9760
  .dm-back-to-top {
9446
9761
  position: fixed;
9447
- bottom: 2rem;
9448
- right: 2rem;
9762
+ bottom: 1rem; /* Mobile default: compact positioning */
9763
+ right: 1rem;
9449
9764
  z-index: 1000;
9450
9765
  display: flex;
9451
9766
  align-items: center;
9452
9767
  justify-content: center;
9453
- width: 3rem;
9454
- height: 3rem;
9768
+ width: 2.5rem; /* Mobile default: smaller button */
9769
+ height: 2.5rem;
9455
9770
  padding: 0;
9456
9771
  background-color: var(--dm-primary);
9457
9772
  color: var(--dm-white);
@@ -9485,12 +9800,13 @@ code {
9485
9800
  box-shadow: 0 0 0 3px var(--dm-focus-ring);
9486
9801
  }
9487
9802
 
9488
- @media (max-width: 576px) {
9803
+ /* Desktop (≥577px) - Back to Top enhancements */
9804
+ @media (min-width: 577px) {
9489
9805
  .dm-back-to-top {
9490
- bottom: 1rem;
9491
- right: 1rem;
9492
- width: 2.5rem;
9493
- height: 2.5rem;
9806
+ bottom: 1.5rem; /* More spacing on desktop */
9807
+ right: 1.5rem;
9808
+ width: 3rem; /* Larger button on desktop */
9809
+ height: 3rem;
9494
9810
  }
9495
9811
  }
9496
9812
 
@@ -10319,41 +10635,48 @@ code {
10319
10635
  /* Default styles already applied above */
10320
10636
  }
10321
10637
 
10322
- /* Centered Layout */
10638
+ /* Centered Layout - Mobile default: left-aligned */
10323
10639
  .dm-timeline-centered::before {
10324
10640
  content: '';
10325
10641
  position: absolute;
10326
- left: 50%;
10642
+ left: 30px; /* Mobile default: left-aligned line */
10327
10643
  top: 0;
10328
10644
  bottom: 0;
10329
10645
  width: 2px;
10330
10646
  background: var(--dm-gray-300);
10331
- transform: translateX(-50%);
10647
+ transform: none;
10332
10648
  }
10333
10649
 
10334
10650
  .dm-timeline-centered .dm-timeline-item {
10335
- width: 50%;
10336
- padding-right: var(--dm-space-8);
10337
- justify-content: flex-end;
10651
+ width: 100%; /* Mobile default: full width */
10652
+ left: 0;
10653
+ padding-left: var(--dm-space-16); /* Mobile: space for left line */
10654
+ padding-right: 0;
10655
+ justify-content: flex-start;
10338
10656
  }
10339
10657
 
10340
10658
  .dm-timeline-centered .dm-timeline-item:nth-child(even) {
10341
- left: 50%;
10342
- padding-left: var(--dm-space-8);
10659
+ width: 100%; /* Mobile: same as odd items */
10660
+ left: 0;
10661
+ padding-left: var(--dm-space-16);
10343
10662
  padding-right: 0;
10344
10663
  justify-content: flex-start;
10345
10664
  }
10346
10665
 
10347
10666
  .dm-timeline-centered .dm-timeline-year {
10348
- order: 2;
10349
- margin-left: var(--dm-space-6);
10350
- margin-right: 0;
10667
+ order: 0; /* Mobile: year badge on left */
10668
+ margin-right: var(--dm-space-6);
10669
+ margin-left: 0;
10670
+ position: absolute;
10671
+ left: 0;
10351
10672
  }
10352
10673
 
10353
10674
  .dm-timeline-centered .dm-timeline-item:nth-child(even) .dm-timeline-year {
10354
- order: 0;
10355
- margin-left: 0;
10675
+ order: 0; /* Mobile: same as odd items */
10356
10676
  margin-right: var(--dm-space-6);
10677
+ margin-left: 0;
10678
+ position: absolute;
10679
+ left: 0;
10357
10680
  }
10358
10681
 
10359
10682
  /* Horizontal Layout */
@@ -10401,33 +10724,34 @@ code {
10401
10724
  border-color: var(--dm-slate-200);
10402
10725
  }
10403
10726
 
10404
- /* Responsive Design */
10405
- @media (max-width: 768px) {
10406
- .dm-timeline-centered {
10407
- /* Switch to vertical layout on mobile */
10727
+ /* Desktop (≥769px) - Timeline/Progression centered enhancements */
10728
+ @media (min-width: 769px) {
10729
+ .dm-timeline-centered::before {
10730
+ left: 50%; /* Center line on desktop */
10731
+ transform: translateX(-50%);
10408
10732
  }
10409
10733
 
10410
- .dm-timeline-centered::before {
10411
- left: 30px;
10412
- transform: none;
10734
+ .dm-timeline-centered .dm-timeline-item {
10735
+ width: 50%; /* Half width for alternating layout */
10736
+ left: 0;
10737
+ padding-left: 0;
10738
+ padding-right: var(--dm-space-8);
10739
+ justify-content: flex-end;
10413
10740
  }
10414
10741
 
10415
- .dm-timeline-centered .dm-timeline-item,
10416
10742
  .dm-timeline-centered .dm-timeline-item:nth-child(even) {
10417
- width: 100%;
10418
- left: 0;
10419
- padding-left: var(--dm-space-16);
10743
+ left: 50%;
10744
+ padding-left: var(--dm-space-8);
10420
10745
  padding-right: 0;
10421
10746
  justify-content: flex-start;
10422
10747
  }
10423
10748
 
10424
- .dm-timeline-centered .dm-timeline-year,
10425
- .dm-timeline-centered .dm-timeline-item:nth-child(even) .dm-timeline-year {
10426
- order: 0;
10427
- margin-right: var(--dm-space-6);
10428
- margin-left: 0;
10429
- position: absolute;
10430
- left: 0;
10749
+ .dm-timeline-centered .dm-timeline-year {
10750
+ order: 1;
10751
+ margin-right: 0;
10752
+ margin-left: var(--dm-space-6);
10753
+ position: relative;
10754
+ left: auto;
10431
10755
  width: 80px;
10432
10756
  }
10433
10757
 
@@ -10561,15 +10885,16 @@ code {
10561
10885
  /* Horizontal layout */
10562
10886
  .dm-progression-horizontal {
10563
10887
  display: flex;
10888
+ flex-direction: column; /* Mobile default: vertical stacking */
10564
10889
  overflow-x: auto;
10565
10890
  padding-bottom: var(--dm-space-4);
10566
10891
  }
10567
10892
 
10568
10893
  .dm-progression-horizontal .dm-progression-item {
10569
10894
  flex-direction: column;
10570
- min-width: 250px;
10571
- margin-right: var(--dm-space-4);
10572
- margin-bottom: 0;
10895
+ min-width: 100%; /* Mobile default: full width stacking */
10896
+ margin-right: 0;
10897
+ margin-bottom: var(--dm-space-4);
10573
10898
  }
10574
10899
 
10575
10900
  /* Progress bar (Roadmap mode) */
@@ -10834,20 +11159,20 @@ code {
10834
11159
  border-color: var(--dm-slate-700);
10835
11160
  }
10836
11161
 
10837
- /* Responsive design */
10838
- @media (max-width: 768px) {
11162
+ /* Desktop (≥769px) - Progression enhancements */
11163
+ @media (min-width: 769px) {
10839
11164
  .dm-progression-centered .dm-progression-item:nth-child(even) {
10840
- flex-direction: row;
11165
+ flex-direction: row-reverse; /* Alternate direction on desktop */
10841
11166
  }
10842
11167
 
10843
11168
  .dm-progression-horizontal {
10844
- flex-direction: column;
11169
+ flex-direction: row; /* Horizontal on desktop */
10845
11170
  }
10846
11171
 
10847
11172
  .dm-progression-horizontal .dm-progression-item {
10848
- min-width: 100%;
10849
- margin-right: 0;
10850
- margin-bottom: var(--dm-space-4);
11173
+ min-width: auto;
11174
+ margin-right: var(--dm-space-6);
11175
+ margin-bottom: 0;
10851
11176
  }
10852
11177
  }
10853
11178
 
@@ -10877,14 +11202,16 @@ code {
10877
11202
 
10878
11203
  .dm-cookie-consent-bottom-left {
10879
11204
  bottom: 20px;
10880
- left: 20px;
10881
- max-width: 400px;
11205
+ left: 10px; /* Mobile default: minimal margins */
11206
+ right: 10px; /* Mobile: full width minus margins */
11207
+ max-width: none; /* Mobile: no width constraint */
10882
11208
  }
10883
11209
 
10884
11210
  .dm-cookie-consent-bottom-right {
10885
11211
  bottom: 20px;
10886
- right: 20px;
10887
- max-width: 400px;
11212
+ left: 10px; /* Mobile default: minimal margins */
11213
+ right: 10px; /* Mobile: full width minus margins */
11214
+ max-width: none; /* Mobile: no width constraint */
10888
11215
  }
10889
11216
 
10890
11217
  .dm-cookie-consent-center-modal {
@@ -10898,8 +11225,8 @@ code {
10898
11225
  /* Layout variants */
10899
11226
  .dm-cookie-consent-bar .dm-cookie-consent-content {
10900
11227
  display: flex;
10901
- align-items: center;
10902
- justify-content: space-between;
11228
+ flex-direction: column; /* Mobile default: vertical stacking */
11229
+ align-items: stretch;
10903
11230
  padding: 16px 20px;
10904
11231
  gap: 20px;
10905
11232
  }
@@ -10940,7 +11267,8 @@ code {
10940
11267
  /* Message styles */
10941
11268
  .dm-cookie-consent-message {
10942
11269
  flex: 1;
10943
- margin-right: 20px;
11270
+ margin-right: 0; /* Mobile default: no right margin */
11271
+ margin-bottom: 16px; /* Mobile default: bottom spacing */
10944
11272
  }
10945
11273
 
10946
11274
  .dm-cookie-consent-message a {
@@ -10955,6 +11283,7 @@ code {
10955
11283
  /* Button styles */
10956
11284
  .dm-cookie-consent-buttons {
10957
11285
  display: flex;
11286
+ flex-direction: column; /* Mobile default: vertical buttons */
10958
11287
  gap: 12px;
10959
11288
  flex-shrink: 0;
10960
11289
  }
@@ -11120,27 +11449,32 @@ code {
11120
11449
  gap: 12px;
11121
11450
  }
11122
11451
 
11123
- /* Responsive */
11124
- @media (max-width: 640px) {
11452
+ /* Desktop (≥641px) - Cookie Consent enhancements */
11453
+ @media (min-width: 641px) {
11125
11454
  .dm-cookie-consent-bar .dm-cookie-consent-content {
11126
- flex-direction: column;
11127
- align-items: stretch;
11455
+ flex-direction: row; /* Horizontal on desktop */
11456
+ align-items: center;
11128
11457
  }
11129
11458
 
11130
11459
  .dm-cookie-consent-message {
11131
- margin-right: 0;
11132
- margin-bottom: 16px;
11460
+ margin-right: 24px;
11461
+ margin-bottom: 0;
11133
11462
  }
11134
11463
 
11135
11464
  .dm-cookie-consent-buttons {
11136
- flex-direction: column;
11465
+ flex-direction: row; /* Horizontal buttons on desktop */
11466
+ }
11467
+
11468
+ .dm-cookie-consent-bottom-left {
11469
+ left: 20px;
11470
+ right: auto;
11471
+ max-width: 600px;
11137
11472
  }
11138
11473
 
11139
- .dm-cookie-consent-bottom-left,
11140
11474
  .dm-cookie-consent-bottom-right {
11141
- left: 10px;
11142
- right: 10px;
11143
- max-width: none;
11475
+ left: auto;
11476
+ right: 20px;
11477
+ max-width: 600px;
11144
11478
  }
11145
11479
  }
11146
11480
 
@@ -11151,11 +11485,11 @@ code {
11151
11485
  ============================================ */
11152
11486
 
11153
11487
  /*!
11154
- * Domma Themes v0.8.0-alpha
11488
+ * Domma Themes v0.9.2-alpha
11155
11489
  * Dynamic Object Manipulation & Modeling API
11156
11490
  * (c) 2026 Darryl Waterhouse & DCBW-IT
11157
- * Built: 2026-01-09T18:35:07.434Z
11158
- * Commit: 1a13022
11491
+ * Built: 2026-01-11T18:01:20.167Z
11492
+ * Commit: 136342c
11159
11493
  */
11160
11494
 
11161
11495
  /**