domma-js 0.8.0-alpha → 0.9.4-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 Essentials CSS Bundle v0.8.0-alpha
2
+ * Domma Essentials CSS Bundle v0.9.4-alpha
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-01-09T18:35:07.802Z
5
+ * Built: 2026-01-12T15:32:19.139Z
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.4-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-12T15:32:18.858Z
237
+ * Commit: ac05440
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.4-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-12T15:32:18.864Z
4242
+ * Commit: ac05440
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.4-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-12T15:32:18.873Z
4843
+ * Commit: ac05440
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;
6377
6445
  }
6378
6446
 
6447
+ .navbar-nav li {
6448
+ width: 100%;
6449
+ }
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;
6490
6572
  }
6491
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;
6583
+ }
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;
6514
6617
  }
6515
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);
6629
+ }
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
 
@@ -6977,7 +7100,7 @@ code {
6977
7100
  JUMBOTRON
6978
7101
  ============================================ */
6979
7102
 
6980
- .jumbotron {
7103
+ .hero {
6981
7104
  position: relative;
6982
7105
  padding: var(--dm-space-12) var(--dm-space-6);
6983
7106
  background-color: var(--dm-gray-100);
@@ -6985,35 +7108,36 @@ code {
6985
7108
  border-radius: var(--dm-radius-lg);
6986
7109
  margin-bottom: var(--dm-space-6);
6987
7110
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
7111
+ text-align: center;
6988
7112
  }
6989
7113
 
6990
- .jumbotron-fluid {
7114
+ .hero-fluid {
6991
7115
  border-radius: 0;
6992
7116
  padding-left: 0;
6993
7117
  padding-right: 0;
6994
7118
  }
6995
7119
 
6996
- .jumbotron-dark {
7120
+ .hero-dark {
6997
7121
  background-color: var(--dm-gray-900);
6998
7122
  color: var(--dm-white);
6999
7123
  }
7000
7124
 
7001
- .jumbotron-primary {
7125
+ .hero-primary {
7002
7126
  background: linear-gradient(135deg, var(--dm-primary) 0%, var(--dm-primary-dark, #4a7fd4) 100%);
7003
7127
  color: var(--dm-white);
7004
7128
  }
7005
7129
 
7006
- .jumbotron-cover {
7130
+ .hero-cover {
7007
7131
  background-size: cover;
7008
7132
  background-position: center;
7009
7133
  background-repeat: no-repeat;
7010
7134
  }
7011
7135
 
7012
- .jumbotron-overlay {
7136
+ .hero-overlay {
7013
7137
  position: relative;
7014
7138
  }
7015
7139
 
7016
- .jumbotron-overlay::before {
7140
+ .hero-overlay::before {
7017
7141
  content: '';
7018
7142
  position: absolute;
7019
7143
  top: 0;
@@ -7024,51 +7148,51 @@ code {
7024
7148
  border-radius: inherit;
7025
7149
  }
7026
7150
 
7027
- .jumbotron-overlay > * {
7151
+ .hero-overlay > * {
7028
7152
  position: relative;
7029
7153
  z-index: 1;
7030
7154
  }
7031
7155
 
7032
- .jumbotron-content {
7156
+ .hero-content {
7033
7157
  max-width: 800px;
7034
7158
  margin-left: auto;
7035
7159
  margin-right: auto;
7036
7160
  }
7037
7161
 
7038
- .jumbotron-center {
7162
+ .hero-center {
7039
7163
  text-align: center;
7040
7164
  }
7041
7165
 
7042
- .jumbotron-center .jumbotron-content {
7166
+ .hero-center .hero-content {
7043
7167
  margin-left: auto;
7044
7168
  margin-right: auto;
7045
7169
  }
7046
7170
 
7047
- .jumbotron-title {
7171
+ .hero-title {
7048
7172
  font-size: var(--dm-font-size-4xl);
7049
7173
  font-weight: 700;
7050
7174
  line-height: 1.2;
7051
7175
  margin-bottom: var(--dm-space-4);
7052
7176
  }
7053
7177
 
7054
- .jumbotron-subtitle {
7178
+ .hero-subtitle {
7055
7179
  font-size: var(--dm-font-size-xl);
7056
7180
  opacity: 0.9;
7057
7181
  margin-bottom: var(--dm-space-6);
7058
7182
  }
7059
7183
 
7060
- .jumbotron-actions {
7184
+ .hero-actions {
7061
7185
  display: flex;
7062
7186
  flex-wrap: wrap;
7063
7187
  gap: var(--dm-space-3);
7064
7188
  align-items: center;
7065
7189
  }
7066
7190
 
7067
- .jumbotron-center .jumbotron-actions {
7191
+ .hero-center .hero-actions {
7068
7192
  justify-content: center;
7069
7193
  }
7070
7194
 
7071
- .jumbotron-note {
7195
+ .hero-note {
7072
7196
  font-size: 0.85rem;
7073
7197
  margin: 0;
7074
7198
  color: var(--dm-text-muted);
@@ -7076,27 +7200,27 @@ code {
7076
7200
 
7077
7201
  /* Jumbotron sizes */
7078
7202
 
7079
- .jumbotron-sm {
7203
+ .hero-sm {
7080
7204
  padding: var(--dm-space-8) var(--dm-space-4);
7081
7205
  }
7082
7206
 
7083
- .jumbotron-sm .jumbotron-title {
7207
+ .hero-sm .hero-title {
7084
7208
  font-size: var(--dm-font-size-2xl);
7085
7209
  }
7086
7210
 
7087
- .jumbotron-sm .jumbotron-subtitle {
7211
+ .hero-sm .hero-subtitle {
7088
7212
  font-size: var(--dm-font-size-lg);
7089
7213
  }
7090
7214
 
7091
- .jumbotron-lg {
7215
+ .hero-lg {
7092
7216
  padding: var(--dm-space-16) var(--dm-space-8);
7093
7217
  }
7094
7218
 
7095
- .jumbotron-lg .jumbotron-title {
7219
+ .hero-lg .hero-title {
7096
7220
  font-size: var(--dm-font-size-5xl);
7097
7221
  }
7098
7222
 
7099
- .jumbotron-full {
7223
+ .hero-full {
7100
7224
  min-height: 100vh;
7101
7225
  display: flex;
7102
7226
  align-items: center;
@@ -7109,7 +7233,7 @@ code {
7109
7233
 
7110
7234
  /* 1. Split Layouts - Text + Image Grid Layouts */
7111
7235
 
7112
- .jumbotron-split {
7236
+ .hero-split {
7113
7237
  display: grid;
7114
7238
  grid-template-columns: 1fr;
7115
7239
  gap: var(--dm-space-8);
@@ -7117,54 +7241,54 @@ code {
7117
7241
  }
7118
7242
 
7119
7243
  @media (min-width: 768px) {
7120
- .jumbotron-split {
7244
+ .hero-split {
7121
7245
  grid-template-columns: 1fr 1fr;
7122
7246
  }
7123
7247
  }
7124
7248
 
7125
7249
  /* Reverse layout (image left, text right) */
7126
7250
  @media (min-width: 768px) {
7127
- .jumbotron-split-reverse .jumbotron-text {
7251
+ .hero-split-reverse .hero-text {
7128
7252
  order: 2;
7129
7253
  }
7130
7254
 
7131
- .jumbotron-split-reverse .jumbotron-media {
7255
+ .hero-split-reverse .hero-media {
7132
7256
  order: 1;
7133
7257
  }
7134
7258
  }
7135
7259
 
7136
7260
  /* Asymmetric split layouts */
7137
7261
  @media (min-width: 768px) {
7138
- .jumbotron-split-60-40 {
7262
+ .hero-split-60-40 {
7139
7263
  grid-template-columns: 60% 40%;
7140
7264
  }
7141
7265
 
7142
- .jumbotron-split-70-30 {
7266
+ .hero-split-70-30 {
7143
7267
  grid-template-columns: 70% 30%;
7144
7268
  }
7145
7269
 
7146
- .jumbotron-split-40-60 {
7270
+ .hero-split-40-60 {
7147
7271
  grid-template-columns: 40% 60%;
7148
7272
  }
7149
7273
 
7150
- .jumbotron-split-30-70 {
7274
+ .hero-split-30-70 {
7151
7275
  grid-template-columns: 30% 70%;
7152
7276
  }
7153
7277
  }
7154
7278
 
7155
7279
  /* Child containers for split layouts */
7156
- .jumbotron-text {
7280
+ .hero-text {
7157
7281
  display: flex;
7158
7282
  flex-direction: column;
7159
7283
  justify-content: center;
7160
7284
  }
7161
7285
 
7162
- .jumbotron-media {
7286
+ .hero-media {
7163
7287
  border-radius: var(--dm-radius-lg);
7164
7288
  overflow: hidden;
7165
7289
  }
7166
7290
 
7167
- .jumbotron-media img {
7291
+ .hero-media img {
7168
7292
  width: 100%;
7169
7293
  height: auto;
7170
7294
  display: block;
@@ -7174,11 +7298,11 @@ code {
7174
7298
  /* 2. Enhanced Overlay System - Multiple Overlay Variants */
7175
7299
 
7176
7300
  /* Light overlay (for dark images) */
7177
- .jumbotron-overlay-light {
7301
+ .hero-overlay-light {
7178
7302
  position: relative;
7179
7303
  }
7180
7304
 
7181
- .jumbotron-overlay-light::before {
7305
+ .hero-overlay-light::before {
7182
7306
  content: '';
7183
7307
  position: absolute;
7184
7308
  inset: 0;
@@ -7187,17 +7311,17 @@ code {
7187
7311
  border-radius: inherit;
7188
7312
  }
7189
7313
 
7190
- .jumbotron-overlay-light > * {
7314
+ .hero-overlay-light > * {
7191
7315
  position: relative;
7192
7316
  z-index: 2;
7193
7317
  }
7194
7318
 
7195
7319
  /* Dark overlay (for bright images) */
7196
- .jumbotron-overlay-dark {
7320
+ .hero-overlay-dark {
7197
7321
  position: relative;
7198
7322
  }
7199
7323
 
7200
- .jumbotron-overlay-dark::before {
7324
+ .hero-overlay-dark::before {
7201
7325
  content: '';
7202
7326
  position: absolute;
7203
7327
  inset: 0;
@@ -7206,17 +7330,17 @@ code {
7206
7330
  border-radius: inherit;
7207
7331
  }
7208
7332
 
7209
- .jumbotron-overlay-dark > * {
7333
+ .hero-overlay-dark > * {
7210
7334
  position: relative;
7211
7335
  z-index: 2;
7212
7336
  }
7213
7337
 
7214
7338
  /* Extra dark overlay for maximum contrast */
7215
- .jumbotron-overlay-darker {
7339
+ .hero-overlay-darker {
7216
7340
  position: relative;
7217
7341
  }
7218
7342
 
7219
- .jumbotron-overlay-darker::before {
7343
+ .hero-overlay-darker::before {
7220
7344
  content: '';
7221
7345
  position: absolute;
7222
7346
  inset: 0;
@@ -7225,17 +7349,17 @@ code {
7225
7349
  border-radius: inherit;
7226
7350
  }
7227
7351
 
7228
- .jumbotron-overlay-darker > * {
7352
+ .hero-overlay-darker > * {
7229
7353
  position: relative;
7230
7354
  z-index: 2;
7231
7355
  }
7232
7356
 
7233
7357
  /* Gradient overlay (bottom to top fade) */
7234
- .jumbotron-overlay-gradient {
7358
+ .hero-overlay-gradient {
7235
7359
  position: relative;
7236
7360
  }
7237
7361
 
7238
- .jumbotron-overlay-gradient::before {
7362
+ .hero-overlay-gradient::before {
7239
7363
  content: '';
7240
7364
  position: absolute;
7241
7365
  inset: 0;
@@ -7244,17 +7368,17 @@ code {
7244
7368
  border-radius: inherit;
7245
7369
  }
7246
7370
 
7247
- .jumbotron-overlay-gradient > * {
7371
+ .hero-overlay-gradient > * {
7248
7372
  position: relative;
7249
7373
  z-index: 2;
7250
7374
  }
7251
7375
 
7252
7376
  /* Gradient overlay variant - top to bottom */
7253
- .jumbotron-overlay-gradient-reverse {
7377
+ .hero-overlay-gradient-reverse {
7254
7378
  position: relative;
7255
7379
  }
7256
7380
 
7257
- .jumbotron-overlay-gradient-reverse::before {
7381
+ .hero-overlay-gradient-reverse::before {
7258
7382
  content: '';
7259
7383
  position: absolute;
7260
7384
  inset: 0;
@@ -7263,14 +7387,14 @@ code {
7263
7387
  border-radius: inherit;
7264
7388
  }
7265
7389
 
7266
- .jumbotron-overlay-gradient-reverse > * {
7390
+ .hero-overlay-gradient-reverse > * {
7267
7391
  position: relative;
7268
7392
  z-index: 2;
7269
7393
  }
7270
7394
 
7271
7395
  /* 3. Announcement Badges - Small notification badges */
7272
7396
 
7273
- .jumbotron-badge {
7397
+ .hero-badge {
7274
7398
  display: inline-flex;
7275
7399
  align-items: center;
7276
7400
  gap: var(--dm-space-2);
@@ -7284,39 +7408,39 @@ code {
7284
7408
  line-height: 1.5;
7285
7409
  }
7286
7410
 
7287
- .jumbotron-badge-secondary {
7411
+ .hero-badge-secondary {
7288
7412
  background: var(--dm-gray-200);
7289
7413
  color: var(--dm-gray-900);
7290
7414
  }
7291
7415
 
7292
- .jumbotron-badge-outline {
7416
+ .hero-badge-outline {
7293
7417
  background: transparent;
7294
7418
  border: 1px solid currentColor;
7295
7419
  color: inherit;
7296
7420
  }
7297
7421
 
7298
- .jumbotron-badge-success {
7422
+ .hero-badge-success {
7299
7423
  background: var(--dm-success);
7300
7424
  color: white;
7301
7425
  }
7302
7426
 
7303
- .jumbotron-badge-warning {
7427
+ .hero-badge-warning {
7304
7428
  background: var(--dm-warning);
7305
7429
  color: var(--dm-gray-900);
7306
7430
  }
7307
7431
 
7308
- .jumbotron-badge-danger {
7432
+ .hero-badge-danger {
7309
7433
  background: var(--dm-danger);
7310
7434
  color: white;
7311
7435
  }
7312
7436
 
7313
- .jumbotron-badge-info {
7437
+ .hero-badge-info {
7314
7438
  background: var(--dm-info);
7315
7439
  color: white;
7316
7440
  }
7317
7441
 
7318
7442
  /* Badge icon/emoji support */
7319
- .jumbotron-badge-icon {
7443
+ .hero-badge-icon {
7320
7444
  display: inline-block;
7321
7445
  width: 1em;
7322
7446
  height: 1em;
@@ -7326,219 +7450,105 @@ code {
7326
7450
  /* 4. Responsive Utilities - Advanced responsive behaviors */
7327
7451
 
7328
7452
  /* Responsive typography using CSS clamp (fluid scaling) */
7329
- .jumbotron-title-responsive {
7453
+ .hero-title-responsive {
7330
7454
  font-size: clamp(2rem, 5vw, 3.5rem);
7331
7455
  line-height: 1.2;
7332
7456
  }
7333
7457
 
7334
- .jumbotron-subtitle-responsive {
7458
+ .hero-subtitle-responsive {
7335
7459
  font-size: clamp(1rem, 2.5vw, 1.5rem);
7336
7460
  line-height: 1.5;
7337
7461
  }
7338
7462
 
7339
7463
  /* Responsive spacing */
7340
- .jumbotron-responsive {
7464
+ .hero-responsive {
7341
7465
  padding: clamp(2rem, 6vw, 5rem) clamp(1rem, 3vw, 2rem);
7342
7466
  }
7343
7467
 
7344
7468
  /* Conditional display utilities */
7345
- .jumbotron-hide-mobile {
7469
+ .hero-hide-mobile {
7346
7470
  display: none;
7347
7471
  }
7348
7472
 
7349
7473
  @media (min-width: 768px) {
7350
- .jumbotron-hide-mobile {
7474
+ .hero-hide-mobile {
7351
7475
  display: block;
7352
7476
  }
7353
7477
  }
7354
7478
 
7355
- .jumbotron-show-mobile {
7479
+ .hero-show-mobile {
7356
7480
  display: block;
7357
7481
  }
7358
7482
 
7359
7483
  @media (min-width: 768px) {
7360
- .jumbotron-show-mobile {
7484
+ .hero-show-mobile {
7361
7485
  display: none;
7362
7486
  }
7363
7487
  }
7364
7488
 
7365
7489
  /* Responsive alignment */
7366
- .jumbotron-center-mobile {
7490
+ .hero-center-mobile {
7367
7491
  text-align: center;
7368
7492
  }
7369
7493
 
7370
7494
  @media (min-width: 768px) {
7371
- .jumbotron-center-mobile {
7495
+ .hero-center-mobile {
7372
7496
  text-align: left;
7373
7497
  }
7374
7498
  }
7375
7499
 
7376
- .jumbotron-left-mobile {
7500
+ .hero-left-mobile {
7377
7501
  text-align: left;
7378
7502
  }
7379
7503
 
7380
7504
  @media (min-width: 768px) {
7381
- .jumbotron-left-mobile {
7505
+ .hero-left-mobile {
7382
7506
  text-align: center;
7383
7507
  }
7384
7508
  }
7385
7509
 
7386
7510
  /* 5. Additional Gradient Variants - Modern gradient backgrounds */
7387
7511
 
7388
- .jumbotron-gradient-purple {
7512
+ .hero-gradient-purple {
7389
7513
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
7390
7514
  color: white;
7391
7515
  }
7392
7516
 
7393
- .jumbotron-gradient-blue {
7517
+ .hero-gradient-blue {
7394
7518
  background: linear-gradient(135deg, #3b82f6 0%, #1e40af 100%);
7395
7519
  color: white;
7396
7520
  }
7397
7521
 
7398
- .jumbotron-gradient-green {
7522
+ .hero-gradient-green {
7399
7523
  background: linear-gradient(135deg, #10b981 0%, #059669 100%);
7400
7524
  color: white;
7401
7525
  }
7402
7526
 
7403
- .jumbotron-gradient-sunset {
7527
+ .hero-gradient-sunset {
7404
7528
  background: linear-gradient(135deg, #f59e0b 0%, #ef4444 100%);
7405
7529
  color: white;
7406
7530
  }
7407
7531
 
7408
- .jumbotron-gradient-ocean {
7532
+ .hero-gradient-ocean {
7409
7533
  background: linear-gradient(135deg, #0ea5e9 0%, #06b6d4 100%);
7410
7534
  color: white;
7411
7535
  }
7412
7536
 
7413
- .jumbotron-gradient-rose {
7537
+ .hero-gradient-rose {
7414
7538
  background: linear-gradient(135deg, #ec4899 0%, #f43f5e 100%);
7415
7539
  color: white;
7416
7540
  }
7417
7541
 
7418
- .jumbotron-gradient-forest {
7542
+ .hero-gradient-forest {
7419
7543
  background: linear-gradient(135deg, #16a34a 0%, #15803d 100%);
7420
7544
  color: white;
7421
7545
  }
7422
7546
 
7423
- .jumbotron-gradient-night {
7547
+ .hero-gradient-night {
7424
7548
  background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
7425
7549
  color: white;
7426
7550
  }
7427
7551
 
7428
-
7429
- /* ============================================
7430
- HERO SECTION
7431
- ============================================ */
7432
-
7433
- /* Base Hero - Structure Only */
7434
- .hero {
7435
- padding: 4rem 2rem;
7436
- text-align: center;
7437
- position: relative;
7438
- background: var(--dm-surface);
7439
- color: var(--dm-text);
7440
- }
7441
-
7442
- .hero h1,
7443
- .hero .hero-title {
7444
- font-size: 3rem;
7445
- font-weight: 700;
7446
- margin-bottom: 1rem;
7447
- line-height: 1.2;
7448
- }
7449
-
7450
- .hero p,
7451
- .hero .hero-subtitle {
7452
- font-size: 1.25rem;
7453
- max-width: 600px;
7454
- margin: 0 auto 2rem;
7455
- opacity: 0.9;
7456
- }
7457
-
7458
- .hero code {
7459
- background: rgba(0, 0, 0, 0.1);
7460
- padding: 0.25rem 0.5rem;
7461
- border-radius: var(--dm-radius-sm);
7462
- }
7463
-
7464
- .hero .hero-actions {
7465
- display: flex;
7466
- gap: 1rem;
7467
- justify-content: center;
7468
- flex-wrap: wrap;
7469
- }
7470
-
7471
- /* Hero Size Variants */
7472
- .hero-sm {
7473
- padding: 2rem 1rem;
7474
- }
7475
-
7476
- .hero-sm h1,
7477
- .hero-sm .hero-title {
7478
- font-size: 2rem;
7479
- }
7480
-
7481
- .hero-sm p,
7482
- .hero-sm .hero-subtitle {
7483
- font-size: 1rem;
7484
- }
7485
-
7486
- .hero-lg {
7487
- padding: 6rem 2rem;
7488
- }
7489
-
7490
- .hero-lg h1,
7491
- .hero-lg .hero-title {
7492
- font-size: 4rem;
7493
- }
7494
-
7495
- .hero-full {
7496
- min-height: 100vh;
7497
- display: flex;
7498
- flex-direction: column;
7499
- justify-content: center;
7500
- align-items: center;
7501
- }
7502
-
7503
- /* Hero Text Color Variants */
7504
- .hero-light {
7505
- color: var(--dm-white);
7506
- }
7507
-
7508
- .hero-dark {
7509
- color: var(--dm-gray-900);
7510
- }
7511
-
7512
- /* Hero Background Variants */
7513
- .hero-gradient-primary {
7514
- background: linear-gradient(135deg, var(--dm-primary) 0%, var(--dm-primary-hover) 100%);
7515
- color: var(--dm-white);
7516
- }
7517
-
7518
- .hero-gradient-secondary {
7519
- background: linear-gradient(135deg, var(--dm-secondary) 0%, var(--dm-secondary-hover) 100%);
7520
- color: var(--dm-white);
7521
- }
7522
-
7523
- /* Responsive */
7524
- @media (max-width: 768px) {
7525
- .hero h1,
7526
- .hero .hero-title {
7527
- font-size: 2rem;
7528
- }
7529
-
7530
- .hero p,
7531
- .hero .hero-subtitle {
7532
- font-size: 1rem;
7533
- }
7534
-
7535
- .hero {
7536
- padding: 3rem 1.5rem;
7537
- }
7538
- }
7539
-
7540
-
7541
- /* ============================================
7542
7552
  CAROUSEL
7543
7553
  ============================================ */
7544
7554
 
@@ -7921,36 +7931,49 @@ code {
7921
7931
 
7922
7932
 
7923
7933
  /* ============================================
7924
- SIDEBAR
7934
+ SIDEBAR - MOBILE FIRST
7925
7935
  ============================================ */
7926
7936
 
7927
- /* Base Sidebar */
7937
+ /* Base Sidebar - Mobile Default */
7928
7938
  .sidebar {
7929
7939
  position: relative;
7930
- width: 250px;
7940
+ width: 100%;
7941
+ max-width: 250px;
7931
7942
  background: var(--dm-surface, #fff);
7932
7943
  border-right: 1px solid var(--dm-border, #dee2e6);
7933
7944
  overflow-y: auto;
7934
7945
  overflow-x: hidden;
7935
- transition: transform 0.3s ease;
7946
+ transition: transform 0.3s ease, width 0.3s ease;
7936
7947
  z-index: 100;
7948
+ --sidebar-width: 250px;
7949
+ --sidebar-collapsed-width: 60px;
7937
7950
  }
7938
7951
 
7939
- /* Fixed positioning */
7952
+ /* Fixed positioning - Mobile: hidden off-screen by default */
7940
7953
  .sidebar-fixed {
7941
7954
  position: fixed;
7942
7955
  top: 0;
7943
7956
  left: 0;
7944
7957
  height: 100vh;
7958
+ height: 100dvh; /* Dynamic viewport height for mobile */
7959
+ transform: translateX(-100%); /* Hidden off-screen on mobile */
7960
+ box-shadow: none;
7945
7961
  }
7946
7962
 
7947
7963
  .sidebar-fixed.sidebar-right {
7948
7964
  left: auto;
7949
7965
  right: 0;
7966
+ transform: translateX(100%); /* Hidden off-screen right */
7950
7967
  border-right: none;
7951
7968
  border-left: 1px solid var(--dm-border, #dee2e6);
7952
7969
  }
7953
7970
 
7971
+ /* Mobile: slide in when open */
7972
+ .sidebar-fixed.open {
7973
+ transform: translateX(0);
7974
+ box-shadow: var(--dm-shadow-xl, 0 10px 40px rgba(0,0,0,0.2));
7975
+ }
7976
+
7954
7977
  /* Position variants */
7955
7978
  .sidebar-left {
7956
7979
  left: 0;
@@ -7988,8 +8011,11 @@ code {
7988
8011
  color: var(--dm-text, #212529);
7989
8012
  }
7990
8013
 
8014
+ /* Toggle button - Visible on mobile by default */
7991
8015
  .sidebar-toggle-btn {
7992
- display: none; /* Shown on mobile */
8016
+ display: flex;
8017
+ align-items: center;
8018
+ justify-content: center;
7993
8019
  flex-shrink: 0;
7994
8020
  width: 32px;
7995
8021
  height: 32px;
@@ -8167,7 +8193,7 @@ code {
8167
8193
  color: var(--dm-text-muted, #6c757d);
8168
8194
  }
8169
8195
 
8170
- /* Overlay (mobile) */
8196
+ /* Overlay - Visible on mobile */
8171
8197
  .sidebar-overlay {
8172
8198
  position: fixed;
8173
8199
  top: 0;
@@ -8179,6 +8205,7 @@ code {
8179
8205
  opacity: 0;
8180
8206
  visibility: hidden;
8181
8207
  transition: opacity 0.3s ease, visibility 0.3s ease;
8208
+ display: block;
8182
8209
  }
8183
8210
 
8184
8211
  .sidebar-overlay.active {
@@ -8242,30 +8269,118 @@ code {
8242
8269
  border-color: var(--dm-border, #dee2e6);
8243
8270
  }
8244
8271
 
8245
- /* Mobile/Tablet: Slide-out drawer */
8246
- @media (max-width: 768px) {
8272
+ /* ============================================
8273
+ SIDEBAR - DESKTOP ENHANCEMENTS
8274
+ ============================================ */
8275
+
8276
+ /* Desktop (≥769px) */
8277
+ @media (min-width: 769px) {
8278
+ /* Desktop: Sidebar always visible */
8247
8279
  .sidebar-fixed {
8248
- transform: translateX(-100%);
8280
+ transform: translateX(0);
8249
8281
  box-shadow: none;
8250
8282
  }
8251
8283
 
8252
8284
  .sidebar-fixed.sidebar-right {
8253
- transform: translateX(100%);
8254
- }
8255
-
8256
- .sidebar-fixed.open {
8257
8285
  transform: translateX(0);
8258
- box-shadow: var(--dm-shadow-xl, 0 10px 40px rgba(0,0,0,0.2));
8259
8286
  }
8260
8287
 
8288
+ /* Desktop: Hide toggle button (unless desktop collapsible) */
8261
8289
  .sidebar-toggle-btn {
8290
+ display: none;
8291
+ }
8292
+
8293
+ /* Show toggle button on desktop when collapsibleDesktop enabled */
8294
+ .sidebar.sidebar-desktop-collapsible .sidebar-toggle-btn {
8262
8295
  display: flex;
8296
+ }
8297
+
8298
+ /* Desktop: Hide overlay */
8299
+ .sidebar-overlay {
8300
+ display: none;
8301
+ }
8302
+
8303
+ /* Desktop collapsed state - Fully hidden */
8304
+ .sidebar.sidebar-collapsed {
8305
+ transform: translateX(-100%);
8306
+ }
8307
+
8308
+ .sidebar.sidebar-collapsed.sidebar-right {
8309
+ transform: translateX(100%);
8310
+ }
8311
+
8312
+ /* Floating toggle button - appears when sidebar is collapsed */
8313
+ .sidebar-floating-toggle {
8314
+ position: fixed;
8315
+ top: 50%;
8316
+ left: 0;
8317
+ transform: translateY(-50%);
8318
+ z-index: 1001;
8319
+ display: none; /* Hidden by default */
8263
8320
  align-items: center;
8264
8321
  justify-content: center;
8322
+ width: 40px;
8323
+ height: 40px;
8324
+ background: var(--dm-primary, #007bff);
8325
+ color: var(--dm-white, #fff);
8326
+ border: none;
8327
+ border-radius: 0 var(--dm-radius-md, 0.375rem) var(--dm-radius-md, 0.375rem) 0;
8328
+ cursor: pointer;
8329
+ transition: all 0.2s ease;
8330
+ box-shadow: var(--dm-shadow-lg, 0 4px 12px rgba(0,0,0,0.15));
8265
8331
  }
8266
8332
 
8267
- .sidebar-overlay {
8268
- display: block;
8333
+ .sidebar-floating-toggle:hover {
8334
+ background: var(--dm-primary-dark, #0056b3);
8335
+ width: 48px;
8336
+ box-shadow: var(--dm-shadow-xl, 0 8px 20px rgba(0,0,0,0.2));
8337
+ }
8338
+
8339
+ .sidebar-floating-toggle.show {
8340
+ display: flex;
8341
+ }
8342
+
8343
+ .sidebar-floating-toggle.right {
8344
+ left: auto;
8345
+ right: 0;
8346
+ border-radius: var(--dm-radius-md, 0.375rem) 0 0 var(--dm-radius-md, 0.375rem);
8347
+ }
8348
+ }
8349
+
8350
+ /* ============================================
8351
+ Floating Sidebar Variant
8352
+ (bottom-left positioned sidebar)
8353
+ ============================================ */
8354
+ .sidebar-floating {
8355
+ position: fixed;
8356
+ left: 2px;
8357
+ bottom: 8px;
8358
+ top: auto !important;
8359
+ height: auto;
8360
+ max-height: 400px;
8361
+ width: 220px;
8362
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
8363
+ z-index: 100;
8364
+ }
8365
+
8366
+ .sidebar-floating .sidebar-header {
8367
+ font-size: 0.875rem;
8368
+ text-transform: uppercase;
8369
+ letter-spacing: 0.05em;
8370
+ }
8371
+
8372
+ @media (max-width: 992px) {
8373
+ .sidebar-floating {
8374
+ left: 0.5rem;
8375
+ bottom: 0.5rem;
8376
+ width: 180px;
8377
+ max-height: 300px;
8378
+ }
8379
+ }
8380
+
8381
+ @media (max-width: 576px) {
8382
+ .sidebar-floating {
8383
+ display: none;
8269
8384
  }
8270
8385
  }
8271
8386
 
@@ -8458,6 +8573,33 @@ code {
8458
8573
  color: rgba(255, 255, 255, 0.8);
8459
8574
  }
8460
8575
 
8576
+ /* ============================================
8577
+ SIDEBAR - PUSH MODE
8578
+ ============================================ */
8579
+
8580
+ /* Content wrapper when sidebar pushes it (left position) */
8581
+ .sidebar-push-active {
8582
+ margin-left: var(--sidebar-push-width, 250px);
8583
+ transition: margin-left var(--dm-transition-normal, 0.3s) ease;
8584
+ }
8585
+
8586
+ /* Content wrapper when sidebar pushes it (right position) */
8587
+ .sidebar-push-active-right {
8588
+ margin-right: var(--sidebar-push-width, 250px);
8589
+ margin-left: 0;
8590
+ transition: margin-right var(--dm-transition-normal, 0.3s) ease;
8591
+ }
8592
+
8593
+ /* Mobile: Allow custom push width for mobile */
8594
+ @media (max-width: 768px) {
8595
+ .sidebar-push-active {
8596
+ margin-left: var(--sidebar-push-width-mobile, var(--sidebar-push-width, 250px));
8597
+ }
8598
+
8599
+ .sidebar-push-active-right {
8600
+ margin-right: var(--sidebar-push-width-mobile, var(--sidebar-push-width, 250px));
8601
+ }
8602
+ }
8461
8603
 
8462
8604
 
8463
8605
  /* ============================================
@@ -8492,20 +8634,20 @@ code {
8492
8634
  z-index: 100;
8493
8635
  }
8494
8636
 
8495
- /* Container */
8637
+ /* Container - Mobile Default */
8496
8638
  .footer-container {
8497
8639
  max-width: var(--dm-container-lg, 1200px);
8498
8640
  margin: 0 auto;
8499
- padding: var(--dm-space-6, 1.5rem) var(--dm-space-4, 1rem);
8641
+ padding: var(--dm-space-4, 1rem); /* Mobile: compact padding */
8500
8642
  }
8501
8643
 
8502
- /* ========== Simple Layout ========== */
8644
+ /* ========== Simple Layout - Mobile Default ========== */
8503
8645
 
8504
8646
  .footer-simple .footer-simple-content {
8505
8647
  display: flex;
8506
8648
  flex-wrap: wrap;
8507
- align-items: center;
8508
- justify-content: space-between;
8649
+ flex-direction: column; /* Mobile: vertical stacking */
8650
+ align-items: flex-start; /* Mobile: left-aligned */
8509
8651
  gap: var(--dm-space-4, 1rem);
8510
8652
  }
8511
8653
 
@@ -8536,8 +8678,9 @@ code {
8536
8678
  .footer-nav {
8537
8679
  display: flex;
8538
8680
  flex-wrap: wrap;
8539
- gap: var(--dm-space-4, 1rem);
8540
- align-items: center;
8681
+ flex-direction: column; /* Mobile: vertical nav */
8682
+ align-items: flex-start; /* Mobile: left-aligned */
8683
+ gap: var(--dm-space-2, 0.5rem); /* Mobile: compact spacing */
8541
8684
  }
8542
8685
 
8543
8686
  .footer-link {
@@ -8584,12 +8727,12 @@ code {
8584
8727
  color: var(--dm-text-muted, #6c757d);
8585
8728
  }
8586
8729
 
8587
- /* ========== Columns Layout ========== */
8730
+ /* ========== Columns Layout - Mobile Default ========== */
8588
8731
 
8589
8732
  .footer-columns .footer-columns-content {
8590
8733
  display: grid;
8591
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
8592
- gap: var(--dm-space-6, 1.5rem);
8734
+ grid-template-columns: 1fr; /* Mobile: single column */
8735
+ gap: var(--dm-space-4, 1rem); /* Mobile: compact spacing */
8593
8736
  padding-bottom: var(--dm-space-4, 1rem);
8594
8737
  margin-bottom: var(--dm-space-4, 1rem);
8595
8738
  border-bottom: 1px solid var(--dm-border, #dee2e6);
@@ -8615,6 +8758,15 @@ code {
8615
8758
  line-height: 1.6;
8616
8759
  }
8617
8760
 
8761
+ .footer-column-brand .footer-brand-description {
8762
+ display: block;
8763
+ margin: var(--dm-space-2, 0.5rem) 0 0;
8764
+ color: var(--dm-text-muted, #6c757d);
8765
+ font-size: var(--dm-font-size-sm, 0.875rem);
8766
+ line-height: 1.5;
8767
+ opacity: 0.8;
8768
+ }
8769
+
8618
8770
  .footer-column-title {
8619
8771
  margin: 0 0 var(--dm-space-3, 0.75rem);
8620
8772
  font-size: var(--dm-font-size-base, 1rem);
@@ -8647,19 +8799,23 @@ code {
8647
8799
  .footer-columns .footer-bottom {
8648
8800
  display: flex;
8649
8801
  flex-wrap: wrap;
8650
- align-items: center;
8651
- justify-content: space-between;
8802
+ flex-direction: column; /* Mobile: vertical stacking */
8803
+ align-items: flex-start; /* Mobile: left-aligned */
8652
8804
  gap: var(--dm-space-4, 1rem);
8653
8805
  }
8654
8806
 
8655
8807
  .footer-columns .footer-copyright {
8656
- width: auto;
8808
+ width: 100%; /* Mobile: full width */
8657
8809
  padding: 0;
8658
8810
  margin: 0;
8659
8811
  border: none;
8660
8812
  text-align: left;
8661
8813
  }
8662
8814
 
8815
+ .footer-social {
8816
+ width: 100%; /* Mobile: full width */
8817
+ }
8818
+
8663
8819
  /* ========== Minimal Layout ========== */
8664
8820
 
8665
8821
  .footer-minimal .footer-minimal-content {
@@ -8696,6 +8852,10 @@ code {
8696
8852
  color: var(--dm-white, #fff);
8697
8853
  }
8698
8854
 
8855
+ .footer-dark .footer-brand-description {
8856
+ color: var(--dm-gray-300, #dee2e6);
8857
+ }
8858
+
8699
8859
  .footer-dark .footer-link {
8700
8860
  color: var(--dm-gray-400, #adb5bd);
8701
8861
  }
@@ -8746,41 +8906,50 @@ code {
8746
8906
  border-color: transparent;
8747
8907
  }
8748
8908
 
8749
- /* ========== Responsive ========== */
8909
+ /* ============================================
8910
+ FOOTER - DESKTOP ENHANCEMENTS
8911
+ ============================================ */
8750
8912
 
8751
- @media (max-width: 768px) {
8913
+ /* Desktop (≥769px) */
8914
+ @media (min-width: 769px) {
8915
+ /* Desktop: More generous padding */
8752
8916
  .footer-container {
8753
- padding: var(--dm-space-4, 1rem);
8917
+ padding: var(--dm-space-6, 1.5rem) var(--dm-space-4, 1rem);
8754
8918
  }
8755
8919
 
8920
+ /* Desktop: Horizontal simple layout */
8756
8921
  .footer-simple .footer-simple-content {
8757
- flex-direction: column;
8758
- align-items: flex-start;
8922
+ flex-direction: row;
8923
+ align-items: center;
8924
+ justify-content: space-between;
8759
8925
  }
8760
8926
 
8927
+ /* Desktop: Horizontal navigation */
8761
8928
  .footer-nav {
8762
- flex-direction: column;
8763
- align-items: flex-start;
8764
- gap: var(--dm-space-2, 0.5rem);
8929
+ flex-direction: row;
8930
+ align-items: center;
8931
+ gap: var(--dm-space-4, 1rem);
8765
8932
  }
8766
8933
 
8934
+ /* Desktop: Multi-column grid */
8767
8935
  .footer-columns .footer-columns-content {
8768
- grid-template-columns: 1fr;
8769
- gap: var(--dm-space-4, 1rem);
8936
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
8937
+ gap: var(--dm-space-6, 1.5rem);
8770
8938
  }
8771
8939
 
8940
+ /* Desktop: Horizontal bottom section */
8772
8941
  .footer-columns .footer-bottom {
8773
- flex-direction: column;
8774
- align-items: flex-start;
8942
+ flex-direction: row;
8943
+ align-items: center;
8944
+ justify-content: space-between;
8775
8945
  }
8776
8946
 
8777
8947
  .footer-columns .footer-copyright {
8778
- width: 100%;
8779
- text-align: left;
8948
+ width: auto;
8780
8949
  }
8781
8950
 
8782
8951
  .footer-social {
8783
- width: 100%;
8952
+ width: auto;
8784
8953
  }
8785
8954
  }
8786
8955
  /* ============================================
@@ -9066,7 +9235,7 @@ code {
9066
9235
 
9067
9236
  /* Timer display */
9068
9237
  .dm-timer-display {
9069
- font-size: 2.5rem;
9238
+ font-size: 2rem; /* Mobile default */
9070
9239
  font-weight: 600;
9071
9240
  font-family: 'Courier New', monospace;
9072
9241
  color: var(--dm-slate-900);
@@ -9168,16 +9337,18 @@ code {
9168
9337
  display: none !important;
9169
9338
  }
9170
9339
 
9171
- /* Responsive timer styles */
9172
- @media (max-width: 576px) {
9340
+ /* Mobile-first: Timer base styles are already mobile-optimized above */
9341
+
9342
+ /* Desktop (≥577px) - Timer enhancements */
9343
+ @media (min-width: 577px) {
9173
9344
  .dm-timer-display {
9174
- font-size: 2rem;
9345
+ font-size: 3rem; /* Larger on desktop */
9175
9346
  }
9176
9347
 
9177
9348
  .dm-timer-button {
9178
- padding: 0.375rem 0.75rem;
9179
- font-size: 0.8125rem;
9180
- min-width: 70px;
9349
+ padding: 0.5rem 1rem;
9350
+ font-size: 0.875rem;
9351
+ min-width: 80px;
9181
9352
  }
9182
9353
  }
9183
9354
 
@@ -9437,6 +9608,47 @@ code {
9437
9608
  background-color: var(--dm-info);
9438
9609
  }
9439
9610
 
9611
+ /* Toast internal structure */
9612
+ .domma-toast-icon {
9613
+ flex-shrink: 0;
9614
+ margin-right: 0.75rem;
9615
+ }
9616
+
9617
+ .domma-toast-content {
9618
+ flex-grow: 1;
9619
+ min-width: 0;
9620
+ }
9621
+
9622
+ .domma-toast-title {
9623
+ font-weight: 600;
9624
+ margin-bottom: 0.25rem;
9625
+ }
9626
+
9627
+ .domma-toast-message {
9628
+ font-size: 0.9rem;
9629
+ opacity: 0.9;
9630
+ }
9631
+
9632
+ .domma-toast-close {
9633
+ flex-shrink: 0;
9634
+ margin-left: auto;
9635
+ padding-left: 0.75rem;
9636
+ background: none;
9637
+ border: none;
9638
+ color: inherit;
9639
+ cursor: pointer;
9640
+ opacity: 0.7;
9641
+ transition: opacity 0.15s;
9642
+ }
9643
+
9644
+ .domma-toast-close:hover {
9645
+ opacity: 1;
9646
+ }
9647
+
9648
+ .domma-toast-close svg {
9649
+ display: block;
9650
+ }
9651
+
9440
9652
 
9441
9653
  /* ============================================
9442
9654
  BACK TO TOP BUTTON
@@ -9444,14 +9656,14 @@ code {
9444
9656
 
9445
9657
  .dm-back-to-top {
9446
9658
  position: fixed;
9447
- bottom: 2rem;
9448
- right: 2rem;
9659
+ bottom: 1rem; /* Mobile default: compact positioning */
9660
+ right: 1rem;
9449
9661
  z-index: 1000;
9450
9662
  display: flex;
9451
9663
  align-items: center;
9452
9664
  justify-content: center;
9453
- width: 3rem;
9454
- height: 3rem;
9665
+ width: 2.5rem; /* Mobile default: smaller button */
9666
+ height: 2.5rem;
9455
9667
  padding: 0;
9456
9668
  background-color: var(--dm-primary);
9457
9669
  color: var(--dm-white);
@@ -9485,12 +9697,13 @@ code {
9485
9697
  box-shadow: 0 0 0 3px var(--dm-focus-ring);
9486
9698
  }
9487
9699
 
9488
- @media (max-width: 576px) {
9700
+ /* Desktop (≥577px) - Back to Top enhancements */
9701
+ @media (min-width: 577px) {
9489
9702
  .dm-back-to-top {
9490
- bottom: 1rem;
9491
- right: 1rem;
9492
- width: 2.5rem;
9493
- height: 2.5rem;
9703
+ bottom: 1.5rem; /* More spacing on desktop */
9704
+ right: 1.5rem;
9705
+ width: 3rem; /* Larger button on desktop */
9706
+ height: 3rem;
9494
9707
  }
9495
9708
  }
9496
9709
 
@@ -10319,41 +10532,48 @@ code {
10319
10532
  /* Default styles already applied above */
10320
10533
  }
10321
10534
 
10322
- /* Centered Layout */
10535
+ /* Centered Layout - Mobile default: left-aligned */
10323
10536
  .dm-timeline-centered::before {
10324
10537
  content: '';
10325
10538
  position: absolute;
10326
- left: 50%;
10539
+ left: 30px; /* Mobile default: left-aligned line */
10327
10540
  top: 0;
10328
10541
  bottom: 0;
10329
10542
  width: 2px;
10330
10543
  background: var(--dm-gray-300);
10331
- transform: translateX(-50%);
10544
+ transform: none;
10332
10545
  }
10333
10546
 
10334
10547
  .dm-timeline-centered .dm-timeline-item {
10335
- width: 50%;
10336
- padding-right: var(--dm-space-8);
10337
- justify-content: flex-end;
10548
+ width: 100%; /* Mobile default: full width */
10549
+ left: 0;
10550
+ padding-left: var(--dm-space-16); /* Mobile: space for left line */
10551
+ padding-right: 0;
10552
+ justify-content: flex-start;
10338
10553
  }
10339
10554
 
10340
10555
  .dm-timeline-centered .dm-timeline-item:nth-child(even) {
10341
- left: 50%;
10342
- padding-left: var(--dm-space-8);
10556
+ width: 100%; /* Mobile: same as odd items */
10557
+ left: 0;
10558
+ padding-left: var(--dm-space-16);
10343
10559
  padding-right: 0;
10344
10560
  justify-content: flex-start;
10345
10561
  }
10346
10562
 
10347
10563
  .dm-timeline-centered .dm-timeline-year {
10348
- order: 2;
10349
- margin-left: var(--dm-space-6);
10350
- margin-right: 0;
10564
+ order: 0; /* Mobile: year badge on left */
10565
+ margin-right: var(--dm-space-6);
10566
+ margin-left: 0;
10567
+ position: absolute;
10568
+ left: 0;
10351
10569
  }
10352
10570
 
10353
10571
  .dm-timeline-centered .dm-timeline-item:nth-child(even) .dm-timeline-year {
10354
- order: 0;
10355
- margin-left: 0;
10572
+ order: 0; /* Mobile: same as odd items */
10356
10573
  margin-right: var(--dm-space-6);
10574
+ margin-left: 0;
10575
+ position: absolute;
10576
+ left: 0;
10357
10577
  }
10358
10578
 
10359
10579
  /* Horizontal Layout */
@@ -10401,33 +10621,34 @@ code {
10401
10621
  border-color: var(--dm-slate-200);
10402
10622
  }
10403
10623
 
10404
- /* Responsive Design */
10405
- @media (max-width: 768px) {
10406
- .dm-timeline-centered {
10407
- /* Switch to vertical layout on mobile */
10624
+ /* Desktop (≥769px) - Timeline/Progression centered enhancements */
10625
+ @media (min-width: 769px) {
10626
+ .dm-timeline-centered::before {
10627
+ left: 50%; /* Center line on desktop */
10628
+ transform: translateX(-50%);
10408
10629
  }
10409
10630
 
10410
- .dm-timeline-centered::before {
10411
- left: 30px;
10412
- transform: none;
10631
+ .dm-timeline-centered .dm-timeline-item {
10632
+ width: 50%; /* Half width for alternating layout */
10633
+ left: 0;
10634
+ padding-left: 0;
10635
+ padding-right: var(--dm-space-8);
10636
+ justify-content: flex-end;
10413
10637
  }
10414
10638
 
10415
- .dm-timeline-centered .dm-timeline-item,
10416
10639
  .dm-timeline-centered .dm-timeline-item:nth-child(even) {
10417
- width: 100%;
10418
- left: 0;
10419
- padding-left: var(--dm-space-16);
10640
+ left: 50%;
10641
+ padding-left: var(--dm-space-8);
10420
10642
  padding-right: 0;
10421
10643
  justify-content: flex-start;
10422
10644
  }
10423
10645
 
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;
10646
+ .dm-timeline-centered .dm-timeline-year {
10647
+ order: 1;
10648
+ margin-right: 0;
10649
+ margin-left: var(--dm-space-6);
10650
+ position: relative;
10651
+ left: auto;
10431
10652
  width: 80px;
10432
10653
  }
10433
10654
 
@@ -10561,15 +10782,16 @@ code {
10561
10782
  /* Horizontal layout */
10562
10783
  .dm-progression-horizontal {
10563
10784
  display: flex;
10785
+ flex-direction: column; /* Mobile default: vertical stacking */
10564
10786
  overflow-x: auto;
10565
10787
  padding-bottom: var(--dm-space-4);
10566
10788
  }
10567
10789
 
10568
10790
  .dm-progression-horizontal .dm-progression-item {
10569
10791
  flex-direction: column;
10570
- min-width: 250px;
10571
- margin-right: var(--dm-space-4);
10572
- margin-bottom: 0;
10792
+ min-width: 100%; /* Mobile default: full width stacking */
10793
+ margin-right: 0;
10794
+ margin-bottom: var(--dm-space-4);
10573
10795
  }
10574
10796
 
10575
10797
  /* Progress bar (Roadmap mode) */
@@ -10834,20 +11056,20 @@ code {
10834
11056
  border-color: var(--dm-slate-700);
10835
11057
  }
10836
11058
 
10837
- /* Responsive design */
10838
- @media (max-width: 768px) {
11059
+ /* Desktop (≥769px) - Progression enhancements */
11060
+ @media (min-width: 769px) {
10839
11061
  .dm-progression-centered .dm-progression-item:nth-child(even) {
10840
- flex-direction: row;
11062
+ flex-direction: row-reverse; /* Alternate direction on desktop */
10841
11063
  }
10842
11064
 
10843
11065
  .dm-progression-horizontal {
10844
- flex-direction: column;
11066
+ flex-direction: row; /* Horizontal on desktop */
10845
11067
  }
10846
11068
 
10847
11069
  .dm-progression-horizontal .dm-progression-item {
10848
- min-width: 100%;
10849
- margin-right: 0;
10850
- margin-bottom: var(--dm-space-4);
11070
+ min-width: auto;
11071
+ margin-right: var(--dm-space-6);
11072
+ margin-bottom: 0;
10851
11073
  }
10852
11074
  }
10853
11075
 
@@ -10877,14 +11099,16 @@ code {
10877
11099
 
10878
11100
  .dm-cookie-consent-bottom-left {
10879
11101
  bottom: 20px;
10880
- left: 20px;
10881
- max-width: 400px;
11102
+ left: 10px; /* Mobile default: minimal margins */
11103
+ right: 10px; /* Mobile: full width minus margins */
11104
+ max-width: none; /* Mobile: no width constraint */
10882
11105
  }
10883
11106
 
10884
11107
  .dm-cookie-consent-bottom-right {
10885
11108
  bottom: 20px;
10886
- right: 20px;
10887
- max-width: 400px;
11109
+ left: 10px; /* Mobile default: minimal margins */
11110
+ right: 10px; /* Mobile: full width minus margins */
11111
+ max-width: none; /* Mobile: no width constraint */
10888
11112
  }
10889
11113
 
10890
11114
  .dm-cookie-consent-center-modal {
@@ -10898,8 +11122,8 @@ code {
10898
11122
  /* Layout variants */
10899
11123
  .dm-cookie-consent-bar .dm-cookie-consent-content {
10900
11124
  display: flex;
10901
- align-items: center;
10902
- justify-content: space-between;
11125
+ flex-direction: column; /* Mobile default: vertical stacking */
11126
+ align-items: stretch;
10903
11127
  padding: 16px 20px;
10904
11128
  gap: 20px;
10905
11129
  }
@@ -10940,7 +11164,8 @@ code {
10940
11164
  /* Message styles */
10941
11165
  .dm-cookie-consent-message {
10942
11166
  flex: 1;
10943
- margin-right: 20px;
11167
+ margin-right: 0; /* Mobile default: no right margin */
11168
+ margin-bottom: 16px; /* Mobile default: bottom spacing */
10944
11169
  }
10945
11170
 
10946
11171
  .dm-cookie-consent-message a {
@@ -10955,6 +11180,7 @@ code {
10955
11180
  /* Button styles */
10956
11181
  .dm-cookie-consent-buttons {
10957
11182
  display: flex;
11183
+ flex-direction: column; /* Mobile default: vertical buttons */
10958
11184
  gap: 12px;
10959
11185
  flex-shrink: 0;
10960
11186
  }
@@ -11120,27 +11346,32 @@ code {
11120
11346
  gap: 12px;
11121
11347
  }
11122
11348
 
11123
- /* Responsive */
11124
- @media (max-width: 640px) {
11349
+ /* Desktop (≥641px) - Cookie Consent enhancements */
11350
+ @media (min-width: 641px) {
11125
11351
  .dm-cookie-consent-bar .dm-cookie-consent-content {
11126
- flex-direction: column;
11127
- align-items: stretch;
11352
+ flex-direction: row; /* Horizontal on desktop */
11353
+ align-items: center;
11128
11354
  }
11129
11355
 
11130
11356
  .dm-cookie-consent-message {
11131
- margin-right: 0;
11132
- margin-bottom: 16px;
11357
+ margin-right: 24px;
11358
+ margin-bottom: 0;
11133
11359
  }
11134
11360
 
11135
11361
  .dm-cookie-consent-buttons {
11136
- flex-direction: column;
11362
+ flex-direction: row; /* Horizontal buttons on desktop */
11363
+ }
11364
+
11365
+ .dm-cookie-consent-bottom-left {
11366
+ left: 20px;
11367
+ right: auto;
11368
+ max-width: 600px;
11137
11369
  }
11138
11370
 
11139
- .dm-cookie-consent-bottom-left,
11140
11371
  .dm-cookie-consent-bottom-right {
11141
- left: 10px;
11142
- right: 10px;
11143
- max-width: none;
11372
+ left: auto;
11373
+ right: 20px;
11374
+ max-width: 600px;
11144
11375
  }
11145
11376
  }
11146
11377
 
@@ -11151,11 +11382,11 @@ code {
11151
11382
  ============================================ */
11152
11383
 
11153
11384
  /*!
11154
- * Domma Themes v0.8.0-alpha
11385
+ * Domma Themes v0.9.4-alpha
11155
11386
  * Dynamic Object Manipulation & Modeling API
11156
11387
  * (c) 2026 Darryl Waterhouse & DCBW-IT
11157
- * Built: 2026-01-09T18:35:07.434Z
11158
- * Commit: 1a13022
11388
+ * Built: 2026-01-12T15:32:18.835Z
11389
+ * Commit: ac05440
11159
11390
  */
11160
11391
 
11161
11392
  /**