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 Complete CSS Bundle v0.8.0-alpha
2
+ * Domma Complete 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.820Z
5
+ * Built: 2026-01-12T15:32:19.159Z
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.4-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-12T15:32:18.858Z
18
+ * Commit: ac05440
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.4-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-12T15:32:18.864Z
4023
+ * Commit: ac05440
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.4-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-12T15:32:18.873Z
4624
+ * Commit: ac05440
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;
6158
6226
  }
6159
6227
 
6228
+ .navbar-nav li {
6229
+ width: 100%;
6230
+ }
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;
6271
6353
  }
6272
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;
6364
+ }
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;
6295
6398
  }
6296
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);
6410
+ }
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
 
@@ -6758,7 +6881,7 @@ code {
6758
6881
  JUMBOTRON
6759
6882
  ============================================ */
6760
6883
 
6761
- .jumbotron {
6884
+ .hero {
6762
6885
  position: relative;
6763
6886
  padding: var(--dm-space-12) var(--dm-space-6);
6764
6887
  background-color: var(--dm-gray-100);
@@ -6766,35 +6889,36 @@ code {
6766
6889
  border-radius: var(--dm-radius-lg);
6767
6890
  margin-bottom: var(--dm-space-6);
6768
6891
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
6892
+ text-align: center;
6769
6893
  }
6770
6894
 
6771
- .jumbotron-fluid {
6895
+ .hero-fluid {
6772
6896
  border-radius: 0;
6773
6897
  padding-left: 0;
6774
6898
  padding-right: 0;
6775
6899
  }
6776
6900
 
6777
- .jumbotron-dark {
6901
+ .hero-dark {
6778
6902
  background-color: var(--dm-gray-900);
6779
6903
  color: var(--dm-white);
6780
6904
  }
6781
6905
 
6782
- .jumbotron-primary {
6906
+ .hero-primary {
6783
6907
  background: linear-gradient(135deg, var(--dm-primary) 0%, var(--dm-primary-dark, #4a7fd4) 100%);
6784
6908
  color: var(--dm-white);
6785
6909
  }
6786
6910
 
6787
- .jumbotron-cover {
6911
+ .hero-cover {
6788
6912
  background-size: cover;
6789
6913
  background-position: center;
6790
6914
  background-repeat: no-repeat;
6791
6915
  }
6792
6916
 
6793
- .jumbotron-overlay {
6917
+ .hero-overlay {
6794
6918
  position: relative;
6795
6919
  }
6796
6920
 
6797
- .jumbotron-overlay::before {
6921
+ .hero-overlay::before {
6798
6922
  content: '';
6799
6923
  position: absolute;
6800
6924
  top: 0;
@@ -6805,51 +6929,51 @@ code {
6805
6929
  border-radius: inherit;
6806
6930
  }
6807
6931
 
6808
- .jumbotron-overlay > * {
6932
+ .hero-overlay > * {
6809
6933
  position: relative;
6810
6934
  z-index: 1;
6811
6935
  }
6812
6936
 
6813
- .jumbotron-content {
6937
+ .hero-content {
6814
6938
  max-width: 800px;
6815
6939
  margin-left: auto;
6816
6940
  margin-right: auto;
6817
6941
  }
6818
6942
 
6819
- .jumbotron-center {
6943
+ .hero-center {
6820
6944
  text-align: center;
6821
6945
  }
6822
6946
 
6823
- .jumbotron-center .jumbotron-content {
6947
+ .hero-center .hero-content {
6824
6948
  margin-left: auto;
6825
6949
  margin-right: auto;
6826
6950
  }
6827
6951
 
6828
- .jumbotron-title {
6952
+ .hero-title {
6829
6953
  font-size: var(--dm-font-size-4xl);
6830
6954
  font-weight: 700;
6831
6955
  line-height: 1.2;
6832
6956
  margin-bottom: var(--dm-space-4);
6833
6957
  }
6834
6958
 
6835
- .jumbotron-subtitle {
6959
+ .hero-subtitle {
6836
6960
  font-size: var(--dm-font-size-xl);
6837
6961
  opacity: 0.9;
6838
6962
  margin-bottom: var(--dm-space-6);
6839
6963
  }
6840
6964
 
6841
- .jumbotron-actions {
6965
+ .hero-actions {
6842
6966
  display: flex;
6843
6967
  flex-wrap: wrap;
6844
6968
  gap: var(--dm-space-3);
6845
6969
  align-items: center;
6846
6970
  }
6847
6971
 
6848
- .jumbotron-center .jumbotron-actions {
6972
+ .hero-center .hero-actions {
6849
6973
  justify-content: center;
6850
6974
  }
6851
6975
 
6852
- .jumbotron-note {
6976
+ .hero-note {
6853
6977
  font-size: 0.85rem;
6854
6978
  margin: 0;
6855
6979
  color: var(--dm-text-muted);
@@ -6857,27 +6981,27 @@ code {
6857
6981
 
6858
6982
  /* Jumbotron sizes */
6859
6983
 
6860
- .jumbotron-sm {
6984
+ .hero-sm {
6861
6985
  padding: var(--dm-space-8) var(--dm-space-4);
6862
6986
  }
6863
6987
 
6864
- .jumbotron-sm .jumbotron-title {
6988
+ .hero-sm .hero-title {
6865
6989
  font-size: var(--dm-font-size-2xl);
6866
6990
  }
6867
6991
 
6868
- .jumbotron-sm .jumbotron-subtitle {
6992
+ .hero-sm .hero-subtitle {
6869
6993
  font-size: var(--dm-font-size-lg);
6870
6994
  }
6871
6995
 
6872
- .jumbotron-lg {
6996
+ .hero-lg {
6873
6997
  padding: var(--dm-space-16) var(--dm-space-8);
6874
6998
  }
6875
6999
 
6876
- .jumbotron-lg .jumbotron-title {
7000
+ .hero-lg .hero-title {
6877
7001
  font-size: var(--dm-font-size-5xl);
6878
7002
  }
6879
7003
 
6880
- .jumbotron-full {
7004
+ .hero-full {
6881
7005
  min-height: 100vh;
6882
7006
  display: flex;
6883
7007
  align-items: center;
@@ -6890,7 +7014,7 @@ code {
6890
7014
 
6891
7015
  /* 1. Split Layouts - Text + Image Grid Layouts */
6892
7016
 
6893
- .jumbotron-split {
7017
+ .hero-split {
6894
7018
  display: grid;
6895
7019
  grid-template-columns: 1fr;
6896
7020
  gap: var(--dm-space-8);
@@ -6898,54 +7022,54 @@ code {
6898
7022
  }
6899
7023
 
6900
7024
  @media (min-width: 768px) {
6901
- .jumbotron-split {
7025
+ .hero-split {
6902
7026
  grid-template-columns: 1fr 1fr;
6903
7027
  }
6904
7028
  }
6905
7029
 
6906
7030
  /* Reverse layout (image left, text right) */
6907
7031
  @media (min-width: 768px) {
6908
- .jumbotron-split-reverse .jumbotron-text {
7032
+ .hero-split-reverse .hero-text {
6909
7033
  order: 2;
6910
7034
  }
6911
7035
 
6912
- .jumbotron-split-reverse .jumbotron-media {
7036
+ .hero-split-reverse .hero-media {
6913
7037
  order: 1;
6914
7038
  }
6915
7039
  }
6916
7040
 
6917
7041
  /* Asymmetric split layouts */
6918
7042
  @media (min-width: 768px) {
6919
- .jumbotron-split-60-40 {
7043
+ .hero-split-60-40 {
6920
7044
  grid-template-columns: 60% 40%;
6921
7045
  }
6922
7046
 
6923
- .jumbotron-split-70-30 {
7047
+ .hero-split-70-30 {
6924
7048
  grid-template-columns: 70% 30%;
6925
7049
  }
6926
7050
 
6927
- .jumbotron-split-40-60 {
7051
+ .hero-split-40-60 {
6928
7052
  grid-template-columns: 40% 60%;
6929
7053
  }
6930
7054
 
6931
- .jumbotron-split-30-70 {
7055
+ .hero-split-30-70 {
6932
7056
  grid-template-columns: 30% 70%;
6933
7057
  }
6934
7058
  }
6935
7059
 
6936
7060
  /* Child containers for split layouts */
6937
- .jumbotron-text {
7061
+ .hero-text {
6938
7062
  display: flex;
6939
7063
  flex-direction: column;
6940
7064
  justify-content: center;
6941
7065
  }
6942
7066
 
6943
- .jumbotron-media {
7067
+ .hero-media {
6944
7068
  border-radius: var(--dm-radius-lg);
6945
7069
  overflow: hidden;
6946
7070
  }
6947
7071
 
6948
- .jumbotron-media img {
7072
+ .hero-media img {
6949
7073
  width: 100%;
6950
7074
  height: auto;
6951
7075
  display: block;
@@ -6955,11 +7079,11 @@ code {
6955
7079
  /* 2. Enhanced Overlay System - Multiple Overlay Variants */
6956
7080
 
6957
7081
  /* Light overlay (for dark images) */
6958
- .jumbotron-overlay-light {
7082
+ .hero-overlay-light {
6959
7083
  position: relative;
6960
7084
  }
6961
7085
 
6962
- .jumbotron-overlay-light::before {
7086
+ .hero-overlay-light::before {
6963
7087
  content: '';
6964
7088
  position: absolute;
6965
7089
  inset: 0;
@@ -6968,17 +7092,17 @@ code {
6968
7092
  border-radius: inherit;
6969
7093
  }
6970
7094
 
6971
- .jumbotron-overlay-light > * {
7095
+ .hero-overlay-light > * {
6972
7096
  position: relative;
6973
7097
  z-index: 2;
6974
7098
  }
6975
7099
 
6976
7100
  /* Dark overlay (for bright images) */
6977
- .jumbotron-overlay-dark {
7101
+ .hero-overlay-dark {
6978
7102
  position: relative;
6979
7103
  }
6980
7104
 
6981
- .jumbotron-overlay-dark::before {
7105
+ .hero-overlay-dark::before {
6982
7106
  content: '';
6983
7107
  position: absolute;
6984
7108
  inset: 0;
@@ -6987,17 +7111,17 @@ code {
6987
7111
  border-radius: inherit;
6988
7112
  }
6989
7113
 
6990
- .jumbotron-overlay-dark > * {
7114
+ .hero-overlay-dark > * {
6991
7115
  position: relative;
6992
7116
  z-index: 2;
6993
7117
  }
6994
7118
 
6995
7119
  /* Extra dark overlay for maximum contrast */
6996
- .jumbotron-overlay-darker {
7120
+ .hero-overlay-darker {
6997
7121
  position: relative;
6998
7122
  }
6999
7123
 
7000
- .jumbotron-overlay-darker::before {
7124
+ .hero-overlay-darker::before {
7001
7125
  content: '';
7002
7126
  position: absolute;
7003
7127
  inset: 0;
@@ -7006,17 +7130,17 @@ code {
7006
7130
  border-radius: inherit;
7007
7131
  }
7008
7132
 
7009
- .jumbotron-overlay-darker > * {
7133
+ .hero-overlay-darker > * {
7010
7134
  position: relative;
7011
7135
  z-index: 2;
7012
7136
  }
7013
7137
 
7014
7138
  /* Gradient overlay (bottom to top fade) */
7015
- .jumbotron-overlay-gradient {
7139
+ .hero-overlay-gradient {
7016
7140
  position: relative;
7017
7141
  }
7018
7142
 
7019
- .jumbotron-overlay-gradient::before {
7143
+ .hero-overlay-gradient::before {
7020
7144
  content: '';
7021
7145
  position: absolute;
7022
7146
  inset: 0;
@@ -7025,17 +7149,17 @@ code {
7025
7149
  border-radius: inherit;
7026
7150
  }
7027
7151
 
7028
- .jumbotron-overlay-gradient > * {
7152
+ .hero-overlay-gradient > * {
7029
7153
  position: relative;
7030
7154
  z-index: 2;
7031
7155
  }
7032
7156
 
7033
7157
  /* Gradient overlay variant - top to bottom */
7034
- .jumbotron-overlay-gradient-reverse {
7158
+ .hero-overlay-gradient-reverse {
7035
7159
  position: relative;
7036
7160
  }
7037
7161
 
7038
- .jumbotron-overlay-gradient-reverse::before {
7162
+ .hero-overlay-gradient-reverse::before {
7039
7163
  content: '';
7040
7164
  position: absolute;
7041
7165
  inset: 0;
@@ -7044,14 +7168,14 @@ code {
7044
7168
  border-radius: inherit;
7045
7169
  }
7046
7170
 
7047
- .jumbotron-overlay-gradient-reverse > * {
7171
+ .hero-overlay-gradient-reverse > * {
7048
7172
  position: relative;
7049
7173
  z-index: 2;
7050
7174
  }
7051
7175
 
7052
7176
  /* 3. Announcement Badges - Small notification badges */
7053
7177
 
7054
- .jumbotron-badge {
7178
+ .hero-badge {
7055
7179
  display: inline-flex;
7056
7180
  align-items: center;
7057
7181
  gap: var(--dm-space-2);
@@ -7065,39 +7189,39 @@ code {
7065
7189
  line-height: 1.5;
7066
7190
  }
7067
7191
 
7068
- .jumbotron-badge-secondary {
7192
+ .hero-badge-secondary {
7069
7193
  background: var(--dm-gray-200);
7070
7194
  color: var(--dm-gray-900);
7071
7195
  }
7072
7196
 
7073
- .jumbotron-badge-outline {
7197
+ .hero-badge-outline {
7074
7198
  background: transparent;
7075
7199
  border: 1px solid currentColor;
7076
7200
  color: inherit;
7077
7201
  }
7078
7202
 
7079
- .jumbotron-badge-success {
7203
+ .hero-badge-success {
7080
7204
  background: var(--dm-success);
7081
7205
  color: white;
7082
7206
  }
7083
7207
 
7084
- .jumbotron-badge-warning {
7208
+ .hero-badge-warning {
7085
7209
  background: var(--dm-warning);
7086
7210
  color: var(--dm-gray-900);
7087
7211
  }
7088
7212
 
7089
- .jumbotron-badge-danger {
7213
+ .hero-badge-danger {
7090
7214
  background: var(--dm-danger);
7091
7215
  color: white;
7092
7216
  }
7093
7217
 
7094
- .jumbotron-badge-info {
7218
+ .hero-badge-info {
7095
7219
  background: var(--dm-info);
7096
7220
  color: white;
7097
7221
  }
7098
7222
 
7099
7223
  /* Badge icon/emoji support */
7100
- .jumbotron-badge-icon {
7224
+ .hero-badge-icon {
7101
7225
  display: inline-block;
7102
7226
  width: 1em;
7103
7227
  height: 1em;
@@ -7107,219 +7231,105 @@ code {
7107
7231
  /* 4. Responsive Utilities - Advanced responsive behaviors */
7108
7232
 
7109
7233
  /* Responsive typography using CSS clamp (fluid scaling) */
7110
- .jumbotron-title-responsive {
7234
+ .hero-title-responsive {
7111
7235
  font-size: clamp(2rem, 5vw, 3.5rem);
7112
7236
  line-height: 1.2;
7113
7237
  }
7114
7238
 
7115
- .jumbotron-subtitle-responsive {
7239
+ .hero-subtitle-responsive {
7116
7240
  font-size: clamp(1rem, 2.5vw, 1.5rem);
7117
7241
  line-height: 1.5;
7118
7242
  }
7119
7243
 
7120
7244
  /* Responsive spacing */
7121
- .jumbotron-responsive {
7245
+ .hero-responsive {
7122
7246
  padding: clamp(2rem, 6vw, 5rem) clamp(1rem, 3vw, 2rem);
7123
7247
  }
7124
7248
 
7125
7249
  /* Conditional display utilities */
7126
- .jumbotron-hide-mobile {
7250
+ .hero-hide-mobile {
7127
7251
  display: none;
7128
7252
  }
7129
7253
 
7130
7254
  @media (min-width: 768px) {
7131
- .jumbotron-hide-mobile {
7255
+ .hero-hide-mobile {
7132
7256
  display: block;
7133
7257
  }
7134
7258
  }
7135
7259
 
7136
- .jumbotron-show-mobile {
7260
+ .hero-show-mobile {
7137
7261
  display: block;
7138
7262
  }
7139
7263
 
7140
7264
  @media (min-width: 768px) {
7141
- .jumbotron-show-mobile {
7265
+ .hero-show-mobile {
7142
7266
  display: none;
7143
7267
  }
7144
7268
  }
7145
7269
 
7146
7270
  /* Responsive alignment */
7147
- .jumbotron-center-mobile {
7271
+ .hero-center-mobile {
7148
7272
  text-align: center;
7149
7273
  }
7150
7274
 
7151
7275
  @media (min-width: 768px) {
7152
- .jumbotron-center-mobile {
7276
+ .hero-center-mobile {
7153
7277
  text-align: left;
7154
7278
  }
7155
7279
  }
7156
7280
 
7157
- .jumbotron-left-mobile {
7281
+ .hero-left-mobile {
7158
7282
  text-align: left;
7159
7283
  }
7160
7284
 
7161
7285
  @media (min-width: 768px) {
7162
- .jumbotron-left-mobile {
7286
+ .hero-left-mobile {
7163
7287
  text-align: center;
7164
7288
  }
7165
7289
  }
7166
7290
 
7167
7291
  /* 5. Additional Gradient Variants - Modern gradient backgrounds */
7168
7292
 
7169
- .jumbotron-gradient-purple {
7293
+ .hero-gradient-purple {
7170
7294
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
7171
7295
  color: white;
7172
7296
  }
7173
7297
 
7174
- .jumbotron-gradient-blue {
7298
+ .hero-gradient-blue {
7175
7299
  background: linear-gradient(135deg, #3b82f6 0%, #1e40af 100%);
7176
7300
  color: white;
7177
7301
  }
7178
7302
 
7179
- .jumbotron-gradient-green {
7303
+ .hero-gradient-green {
7180
7304
  background: linear-gradient(135deg, #10b981 0%, #059669 100%);
7181
7305
  color: white;
7182
7306
  }
7183
7307
 
7184
- .jumbotron-gradient-sunset {
7308
+ .hero-gradient-sunset {
7185
7309
  background: linear-gradient(135deg, #f59e0b 0%, #ef4444 100%);
7186
7310
  color: white;
7187
7311
  }
7188
7312
 
7189
- .jumbotron-gradient-ocean {
7313
+ .hero-gradient-ocean {
7190
7314
  background: linear-gradient(135deg, #0ea5e9 0%, #06b6d4 100%);
7191
7315
  color: white;
7192
7316
  }
7193
7317
 
7194
- .jumbotron-gradient-rose {
7318
+ .hero-gradient-rose {
7195
7319
  background: linear-gradient(135deg, #ec4899 0%, #f43f5e 100%);
7196
7320
  color: white;
7197
7321
  }
7198
7322
 
7199
- .jumbotron-gradient-forest {
7323
+ .hero-gradient-forest {
7200
7324
  background: linear-gradient(135deg, #16a34a 0%, #15803d 100%);
7201
7325
  color: white;
7202
7326
  }
7203
7327
 
7204
- .jumbotron-gradient-night {
7328
+ .hero-gradient-night {
7205
7329
  background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
7206
7330
  color: white;
7207
7331
  }
7208
7332
 
7209
-
7210
- /* ============================================
7211
- HERO SECTION
7212
- ============================================ */
7213
-
7214
- /* Base Hero - Structure Only */
7215
- .hero {
7216
- padding: 4rem 2rem;
7217
- text-align: center;
7218
- position: relative;
7219
- background: var(--dm-surface);
7220
- color: var(--dm-text);
7221
- }
7222
-
7223
- .hero h1,
7224
- .hero .hero-title {
7225
- font-size: 3rem;
7226
- font-weight: 700;
7227
- margin-bottom: 1rem;
7228
- line-height: 1.2;
7229
- }
7230
-
7231
- .hero p,
7232
- .hero .hero-subtitle {
7233
- font-size: 1.25rem;
7234
- max-width: 600px;
7235
- margin: 0 auto 2rem;
7236
- opacity: 0.9;
7237
- }
7238
-
7239
- .hero code {
7240
- background: rgba(0, 0, 0, 0.1);
7241
- padding: 0.25rem 0.5rem;
7242
- border-radius: var(--dm-radius-sm);
7243
- }
7244
-
7245
- .hero .hero-actions {
7246
- display: flex;
7247
- gap: 1rem;
7248
- justify-content: center;
7249
- flex-wrap: wrap;
7250
- }
7251
-
7252
- /* Hero Size Variants */
7253
- .hero-sm {
7254
- padding: 2rem 1rem;
7255
- }
7256
-
7257
- .hero-sm h1,
7258
- .hero-sm .hero-title {
7259
- font-size: 2rem;
7260
- }
7261
-
7262
- .hero-sm p,
7263
- .hero-sm .hero-subtitle {
7264
- font-size: 1rem;
7265
- }
7266
-
7267
- .hero-lg {
7268
- padding: 6rem 2rem;
7269
- }
7270
-
7271
- .hero-lg h1,
7272
- .hero-lg .hero-title {
7273
- font-size: 4rem;
7274
- }
7275
-
7276
- .hero-full {
7277
- min-height: 100vh;
7278
- display: flex;
7279
- flex-direction: column;
7280
- justify-content: center;
7281
- align-items: center;
7282
- }
7283
-
7284
- /* Hero Text Color Variants */
7285
- .hero-light {
7286
- color: var(--dm-white);
7287
- }
7288
-
7289
- .hero-dark {
7290
- color: var(--dm-gray-900);
7291
- }
7292
-
7293
- /* Hero Background Variants */
7294
- .hero-gradient-primary {
7295
- background: linear-gradient(135deg, var(--dm-primary) 0%, var(--dm-primary-hover) 100%);
7296
- color: var(--dm-white);
7297
- }
7298
-
7299
- .hero-gradient-secondary {
7300
- background: linear-gradient(135deg, var(--dm-secondary) 0%, var(--dm-secondary-hover) 100%);
7301
- color: var(--dm-white);
7302
- }
7303
-
7304
- /* Responsive */
7305
- @media (max-width: 768px) {
7306
- .hero h1,
7307
- .hero .hero-title {
7308
- font-size: 2rem;
7309
- }
7310
-
7311
- .hero p,
7312
- .hero .hero-subtitle {
7313
- font-size: 1rem;
7314
- }
7315
-
7316
- .hero {
7317
- padding: 3rem 1.5rem;
7318
- }
7319
- }
7320
-
7321
-
7322
- /* ============================================
7323
7333
  CAROUSEL
7324
7334
  ============================================ */
7325
7335
 
@@ -7702,36 +7712,49 @@ code {
7702
7712
 
7703
7713
 
7704
7714
  /* ============================================
7705
- SIDEBAR
7715
+ SIDEBAR - MOBILE FIRST
7706
7716
  ============================================ */
7707
7717
 
7708
- /* Base Sidebar */
7718
+ /* Base Sidebar - Mobile Default */
7709
7719
  .sidebar {
7710
7720
  position: relative;
7711
- width: 250px;
7721
+ width: 100%;
7722
+ max-width: 250px;
7712
7723
  background: var(--dm-surface, #fff);
7713
7724
  border-right: 1px solid var(--dm-border, #dee2e6);
7714
7725
  overflow-y: auto;
7715
7726
  overflow-x: hidden;
7716
- transition: transform 0.3s ease;
7727
+ transition: transform 0.3s ease, width 0.3s ease;
7717
7728
  z-index: 100;
7729
+ --sidebar-width: 250px;
7730
+ --sidebar-collapsed-width: 60px;
7718
7731
  }
7719
7732
 
7720
- /* Fixed positioning */
7733
+ /* Fixed positioning - Mobile: hidden off-screen by default */
7721
7734
  .sidebar-fixed {
7722
7735
  position: fixed;
7723
7736
  top: 0;
7724
7737
  left: 0;
7725
7738
  height: 100vh;
7739
+ height: 100dvh; /* Dynamic viewport height for mobile */
7740
+ transform: translateX(-100%); /* Hidden off-screen on mobile */
7741
+ box-shadow: none;
7726
7742
  }
7727
7743
 
7728
7744
  .sidebar-fixed.sidebar-right {
7729
7745
  left: auto;
7730
7746
  right: 0;
7747
+ transform: translateX(100%); /* Hidden off-screen right */
7731
7748
  border-right: none;
7732
7749
  border-left: 1px solid var(--dm-border, #dee2e6);
7733
7750
  }
7734
7751
 
7752
+ /* Mobile: slide in when open */
7753
+ .sidebar-fixed.open {
7754
+ transform: translateX(0);
7755
+ box-shadow: var(--dm-shadow-xl, 0 10px 40px rgba(0,0,0,0.2));
7756
+ }
7757
+
7735
7758
  /* Position variants */
7736
7759
  .sidebar-left {
7737
7760
  left: 0;
@@ -7769,8 +7792,11 @@ code {
7769
7792
  color: var(--dm-text, #212529);
7770
7793
  }
7771
7794
 
7795
+ /* Toggle button - Visible on mobile by default */
7772
7796
  .sidebar-toggle-btn {
7773
- display: none; /* Shown on mobile */
7797
+ display: flex;
7798
+ align-items: center;
7799
+ justify-content: center;
7774
7800
  flex-shrink: 0;
7775
7801
  width: 32px;
7776
7802
  height: 32px;
@@ -7948,7 +7974,7 @@ code {
7948
7974
  color: var(--dm-text-muted, #6c757d);
7949
7975
  }
7950
7976
 
7951
- /* Overlay (mobile) */
7977
+ /* Overlay - Visible on mobile */
7952
7978
  .sidebar-overlay {
7953
7979
  position: fixed;
7954
7980
  top: 0;
@@ -7960,6 +7986,7 @@ code {
7960
7986
  opacity: 0;
7961
7987
  visibility: hidden;
7962
7988
  transition: opacity 0.3s ease, visibility 0.3s ease;
7989
+ display: block;
7963
7990
  }
7964
7991
 
7965
7992
  .sidebar-overlay.active {
@@ -8023,30 +8050,118 @@ code {
8023
8050
  border-color: var(--dm-border, #dee2e6);
8024
8051
  }
8025
8052
 
8026
- /* Mobile/Tablet: Slide-out drawer */
8027
- @media (max-width: 768px) {
8053
+ /* ============================================
8054
+ SIDEBAR - DESKTOP ENHANCEMENTS
8055
+ ============================================ */
8056
+
8057
+ /* Desktop (≥769px) */
8058
+ @media (min-width: 769px) {
8059
+ /* Desktop: Sidebar always visible */
8028
8060
  .sidebar-fixed {
8029
- transform: translateX(-100%);
8061
+ transform: translateX(0);
8030
8062
  box-shadow: none;
8031
8063
  }
8032
8064
 
8033
8065
  .sidebar-fixed.sidebar-right {
8034
- transform: translateX(100%);
8035
- }
8036
-
8037
- .sidebar-fixed.open {
8038
8066
  transform: translateX(0);
8039
- box-shadow: var(--dm-shadow-xl, 0 10px 40px rgba(0,0,0,0.2));
8040
8067
  }
8041
8068
 
8069
+ /* Desktop: Hide toggle button (unless desktop collapsible) */
8042
8070
  .sidebar-toggle-btn {
8071
+ display: none;
8072
+ }
8073
+
8074
+ /* Show toggle button on desktop when collapsibleDesktop enabled */
8075
+ .sidebar.sidebar-desktop-collapsible .sidebar-toggle-btn {
8043
8076
  display: flex;
8077
+ }
8078
+
8079
+ /* Desktop: Hide overlay */
8080
+ .sidebar-overlay {
8081
+ display: none;
8082
+ }
8083
+
8084
+ /* Desktop collapsed state - Fully hidden */
8085
+ .sidebar.sidebar-collapsed {
8086
+ transform: translateX(-100%);
8087
+ }
8088
+
8089
+ .sidebar.sidebar-collapsed.sidebar-right {
8090
+ transform: translateX(100%);
8091
+ }
8092
+
8093
+ /* Floating toggle button - appears when sidebar is collapsed */
8094
+ .sidebar-floating-toggle {
8095
+ position: fixed;
8096
+ top: 50%;
8097
+ left: 0;
8098
+ transform: translateY(-50%);
8099
+ z-index: 1001;
8100
+ display: none; /* Hidden by default */
8044
8101
  align-items: center;
8045
8102
  justify-content: center;
8103
+ width: 40px;
8104
+ height: 40px;
8105
+ background: var(--dm-primary, #007bff);
8106
+ color: var(--dm-white, #fff);
8107
+ border: none;
8108
+ border-radius: 0 var(--dm-radius-md, 0.375rem) var(--dm-radius-md, 0.375rem) 0;
8109
+ cursor: pointer;
8110
+ transition: all 0.2s ease;
8111
+ box-shadow: var(--dm-shadow-lg, 0 4px 12px rgba(0,0,0,0.15));
8046
8112
  }
8047
8113
 
8048
- .sidebar-overlay {
8049
- display: block;
8114
+ .sidebar-floating-toggle:hover {
8115
+ background: var(--dm-primary-dark, #0056b3);
8116
+ width: 48px;
8117
+ box-shadow: var(--dm-shadow-xl, 0 8px 20px rgba(0,0,0,0.2));
8118
+ }
8119
+
8120
+ .sidebar-floating-toggle.show {
8121
+ display: flex;
8122
+ }
8123
+
8124
+ .sidebar-floating-toggle.right {
8125
+ left: auto;
8126
+ right: 0;
8127
+ border-radius: var(--dm-radius-md, 0.375rem) 0 0 var(--dm-radius-md, 0.375rem);
8128
+ }
8129
+ }
8130
+
8131
+ /* ============================================
8132
+ Floating Sidebar Variant
8133
+ (bottom-left positioned sidebar)
8134
+ ============================================ */
8135
+ .sidebar-floating {
8136
+ position: fixed;
8137
+ left: 2px;
8138
+ bottom: 8px;
8139
+ top: auto !important;
8140
+ height: auto;
8141
+ max-height: 400px;
8142
+ width: 220px;
8143
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
8144
+ z-index: 100;
8145
+ }
8146
+
8147
+ .sidebar-floating .sidebar-header {
8148
+ font-size: 0.875rem;
8149
+ text-transform: uppercase;
8150
+ letter-spacing: 0.05em;
8151
+ }
8152
+
8153
+ @media (max-width: 992px) {
8154
+ .sidebar-floating {
8155
+ left: 0.5rem;
8156
+ bottom: 0.5rem;
8157
+ width: 180px;
8158
+ max-height: 300px;
8159
+ }
8160
+ }
8161
+
8162
+ @media (max-width: 576px) {
8163
+ .sidebar-floating {
8164
+ display: none;
8050
8165
  }
8051
8166
  }
8052
8167
 
@@ -8239,6 +8354,33 @@ code {
8239
8354
  color: rgba(255, 255, 255, 0.8);
8240
8355
  }
8241
8356
 
8357
+ /* ============================================
8358
+ SIDEBAR - PUSH MODE
8359
+ ============================================ */
8360
+
8361
+ /* Content wrapper when sidebar pushes it (left position) */
8362
+ .sidebar-push-active {
8363
+ margin-left: var(--sidebar-push-width, 250px);
8364
+ transition: margin-left var(--dm-transition-normal, 0.3s) ease;
8365
+ }
8366
+
8367
+ /* Content wrapper when sidebar pushes it (right position) */
8368
+ .sidebar-push-active-right {
8369
+ margin-right: var(--sidebar-push-width, 250px);
8370
+ margin-left: 0;
8371
+ transition: margin-right var(--dm-transition-normal, 0.3s) ease;
8372
+ }
8373
+
8374
+ /* Mobile: Allow custom push width for mobile */
8375
+ @media (max-width: 768px) {
8376
+ .sidebar-push-active {
8377
+ margin-left: var(--sidebar-push-width-mobile, var(--sidebar-push-width, 250px));
8378
+ }
8379
+
8380
+ .sidebar-push-active-right {
8381
+ margin-right: var(--sidebar-push-width-mobile, var(--sidebar-push-width, 250px));
8382
+ }
8383
+ }
8242
8384
 
8243
8385
 
8244
8386
  /* ============================================
@@ -8273,20 +8415,20 @@ code {
8273
8415
  z-index: 100;
8274
8416
  }
8275
8417
 
8276
- /* Container */
8418
+ /* Container - Mobile Default */
8277
8419
  .footer-container {
8278
8420
  max-width: var(--dm-container-lg, 1200px);
8279
8421
  margin: 0 auto;
8280
- padding: var(--dm-space-6, 1.5rem) var(--dm-space-4, 1rem);
8422
+ padding: var(--dm-space-4, 1rem); /* Mobile: compact padding */
8281
8423
  }
8282
8424
 
8283
- /* ========== Simple Layout ========== */
8425
+ /* ========== Simple Layout - Mobile Default ========== */
8284
8426
 
8285
8427
  .footer-simple .footer-simple-content {
8286
8428
  display: flex;
8287
8429
  flex-wrap: wrap;
8288
- align-items: center;
8289
- justify-content: space-between;
8430
+ flex-direction: column; /* Mobile: vertical stacking */
8431
+ align-items: flex-start; /* Mobile: left-aligned */
8290
8432
  gap: var(--dm-space-4, 1rem);
8291
8433
  }
8292
8434
 
@@ -8317,8 +8459,9 @@ code {
8317
8459
  .footer-nav {
8318
8460
  display: flex;
8319
8461
  flex-wrap: wrap;
8320
- gap: var(--dm-space-4, 1rem);
8321
- align-items: center;
8462
+ flex-direction: column; /* Mobile: vertical nav */
8463
+ align-items: flex-start; /* Mobile: left-aligned */
8464
+ gap: var(--dm-space-2, 0.5rem); /* Mobile: compact spacing */
8322
8465
  }
8323
8466
 
8324
8467
  .footer-link {
@@ -8365,12 +8508,12 @@ code {
8365
8508
  color: var(--dm-text-muted, #6c757d);
8366
8509
  }
8367
8510
 
8368
- /* ========== Columns Layout ========== */
8511
+ /* ========== Columns Layout - Mobile Default ========== */
8369
8512
 
8370
8513
  .footer-columns .footer-columns-content {
8371
8514
  display: grid;
8372
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
8373
- gap: var(--dm-space-6, 1.5rem);
8515
+ grid-template-columns: 1fr; /* Mobile: single column */
8516
+ gap: var(--dm-space-4, 1rem); /* Mobile: compact spacing */
8374
8517
  padding-bottom: var(--dm-space-4, 1rem);
8375
8518
  margin-bottom: var(--dm-space-4, 1rem);
8376
8519
  border-bottom: 1px solid var(--dm-border, #dee2e6);
@@ -8396,6 +8539,15 @@ code {
8396
8539
  line-height: 1.6;
8397
8540
  }
8398
8541
 
8542
+ .footer-column-brand .footer-brand-description {
8543
+ display: block;
8544
+ margin: var(--dm-space-2, 0.5rem) 0 0;
8545
+ color: var(--dm-text-muted, #6c757d);
8546
+ font-size: var(--dm-font-size-sm, 0.875rem);
8547
+ line-height: 1.5;
8548
+ opacity: 0.8;
8549
+ }
8550
+
8399
8551
  .footer-column-title {
8400
8552
  margin: 0 0 var(--dm-space-3, 0.75rem);
8401
8553
  font-size: var(--dm-font-size-base, 1rem);
@@ -8428,19 +8580,23 @@ code {
8428
8580
  .footer-columns .footer-bottom {
8429
8581
  display: flex;
8430
8582
  flex-wrap: wrap;
8431
- align-items: center;
8432
- justify-content: space-between;
8583
+ flex-direction: column; /* Mobile: vertical stacking */
8584
+ align-items: flex-start; /* Mobile: left-aligned */
8433
8585
  gap: var(--dm-space-4, 1rem);
8434
8586
  }
8435
8587
 
8436
8588
  .footer-columns .footer-copyright {
8437
- width: auto;
8589
+ width: 100%; /* Mobile: full width */
8438
8590
  padding: 0;
8439
8591
  margin: 0;
8440
8592
  border: none;
8441
8593
  text-align: left;
8442
8594
  }
8443
8595
 
8596
+ .footer-social {
8597
+ width: 100%; /* Mobile: full width */
8598
+ }
8599
+
8444
8600
  /* ========== Minimal Layout ========== */
8445
8601
 
8446
8602
  .footer-minimal .footer-minimal-content {
@@ -8477,6 +8633,10 @@ code {
8477
8633
  color: var(--dm-white, #fff);
8478
8634
  }
8479
8635
 
8636
+ .footer-dark .footer-brand-description {
8637
+ color: var(--dm-gray-300, #dee2e6);
8638
+ }
8639
+
8480
8640
  .footer-dark .footer-link {
8481
8641
  color: var(--dm-gray-400, #adb5bd);
8482
8642
  }
@@ -8527,41 +8687,50 @@ code {
8527
8687
  border-color: transparent;
8528
8688
  }
8529
8689
 
8530
- /* ========== Responsive ========== */
8690
+ /* ============================================
8691
+ FOOTER - DESKTOP ENHANCEMENTS
8692
+ ============================================ */
8531
8693
 
8532
- @media (max-width: 768px) {
8694
+ /* Desktop (≥769px) */
8695
+ @media (min-width: 769px) {
8696
+ /* Desktop: More generous padding */
8533
8697
  .footer-container {
8534
- padding: var(--dm-space-4, 1rem);
8698
+ padding: var(--dm-space-6, 1.5rem) var(--dm-space-4, 1rem);
8535
8699
  }
8536
8700
 
8701
+ /* Desktop: Horizontal simple layout */
8537
8702
  .footer-simple .footer-simple-content {
8538
- flex-direction: column;
8539
- align-items: flex-start;
8703
+ flex-direction: row;
8704
+ align-items: center;
8705
+ justify-content: space-between;
8540
8706
  }
8541
8707
 
8708
+ /* Desktop: Horizontal navigation */
8542
8709
  .footer-nav {
8543
- flex-direction: column;
8544
- align-items: flex-start;
8545
- gap: var(--dm-space-2, 0.5rem);
8710
+ flex-direction: row;
8711
+ align-items: center;
8712
+ gap: var(--dm-space-4, 1rem);
8546
8713
  }
8547
8714
 
8715
+ /* Desktop: Multi-column grid */
8548
8716
  .footer-columns .footer-columns-content {
8549
- grid-template-columns: 1fr;
8550
- gap: var(--dm-space-4, 1rem);
8717
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
8718
+ gap: var(--dm-space-6, 1.5rem);
8551
8719
  }
8552
8720
 
8721
+ /* Desktop: Horizontal bottom section */
8553
8722
  .footer-columns .footer-bottom {
8554
- flex-direction: column;
8555
- align-items: flex-start;
8723
+ flex-direction: row;
8724
+ align-items: center;
8725
+ justify-content: space-between;
8556
8726
  }
8557
8727
 
8558
8728
  .footer-columns .footer-copyright {
8559
- width: 100%;
8560
- text-align: left;
8729
+ width: auto;
8561
8730
  }
8562
8731
 
8563
8732
  .footer-social {
8564
- width: 100%;
8733
+ width: auto;
8565
8734
  }
8566
8735
  }
8567
8736
  /* ============================================
@@ -8847,7 +9016,7 @@ code {
8847
9016
 
8848
9017
  /* Timer display */
8849
9018
  .dm-timer-display {
8850
- font-size: 2.5rem;
9019
+ font-size: 2rem; /* Mobile default */
8851
9020
  font-weight: 600;
8852
9021
  font-family: 'Courier New', monospace;
8853
9022
  color: var(--dm-slate-900);
@@ -8949,16 +9118,18 @@ code {
8949
9118
  display: none !important;
8950
9119
  }
8951
9120
 
8952
- /* Responsive timer styles */
8953
- @media (max-width: 576px) {
9121
+ /* Mobile-first: Timer base styles are already mobile-optimized above */
9122
+
9123
+ /* Desktop (≥577px) - Timer enhancements */
9124
+ @media (min-width: 577px) {
8954
9125
  .dm-timer-display {
8955
- font-size: 2rem;
9126
+ font-size: 3rem; /* Larger on desktop */
8956
9127
  }
8957
9128
 
8958
9129
  .dm-timer-button {
8959
- padding: 0.375rem 0.75rem;
8960
- font-size: 0.8125rem;
8961
- min-width: 70px;
9130
+ padding: 0.5rem 1rem;
9131
+ font-size: 0.875rem;
9132
+ min-width: 80px;
8962
9133
  }
8963
9134
  }
8964
9135
 
@@ -9218,6 +9389,47 @@ code {
9218
9389
  background-color: var(--dm-info);
9219
9390
  }
9220
9391
 
9392
+ /* Toast internal structure */
9393
+ .domma-toast-icon {
9394
+ flex-shrink: 0;
9395
+ margin-right: 0.75rem;
9396
+ }
9397
+
9398
+ .domma-toast-content {
9399
+ flex-grow: 1;
9400
+ min-width: 0;
9401
+ }
9402
+
9403
+ .domma-toast-title {
9404
+ font-weight: 600;
9405
+ margin-bottom: 0.25rem;
9406
+ }
9407
+
9408
+ .domma-toast-message {
9409
+ font-size: 0.9rem;
9410
+ opacity: 0.9;
9411
+ }
9412
+
9413
+ .domma-toast-close {
9414
+ flex-shrink: 0;
9415
+ margin-left: auto;
9416
+ padding-left: 0.75rem;
9417
+ background: none;
9418
+ border: none;
9419
+ color: inherit;
9420
+ cursor: pointer;
9421
+ opacity: 0.7;
9422
+ transition: opacity 0.15s;
9423
+ }
9424
+
9425
+ .domma-toast-close:hover {
9426
+ opacity: 1;
9427
+ }
9428
+
9429
+ .domma-toast-close svg {
9430
+ display: block;
9431
+ }
9432
+
9221
9433
 
9222
9434
  /* ============================================
9223
9435
  BACK TO TOP BUTTON
@@ -9225,14 +9437,14 @@ code {
9225
9437
 
9226
9438
  .dm-back-to-top {
9227
9439
  position: fixed;
9228
- bottom: 2rem;
9229
- right: 2rem;
9440
+ bottom: 1rem; /* Mobile default: compact positioning */
9441
+ right: 1rem;
9230
9442
  z-index: 1000;
9231
9443
  display: flex;
9232
9444
  align-items: center;
9233
9445
  justify-content: center;
9234
- width: 3rem;
9235
- height: 3rem;
9446
+ width: 2.5rem; /* Mobile default: smaller button */
9447
+ height: 2.5rem;
9236
9448
  padding: 0;
9237
9449
  background-color: var(--dm-primary);
9238
9450
  color: var(--dm-white);
@@ -9266,12 +9478,13 @@ code {
9266
9478
  box-shadow: 0 0 0 3px var(--dm-focus-ring);
9267
9479
  }
9268
9480
 
9269
- @media (max-width: 576px) {
9481
+ /* Desktop (≥577px) - Back to Top enhancements */
9482
+ @media (min-width: 577px) {
9270
9483
  .dm-back-to-top {
9271
- bottom: 1rem;
9272
- right: 1rem;
9273
- width: 2.5rem;
9274
- height: 2.5rem;
9484
+ bottom: 1.5rem; /* More spacing on desktop */
9485
+ right: 1.5rem;
9486
+ width: 3rem; /* Larger button on desktop */
9487
+ height: 3rem;
9275
9488
  }
9276
9489
  }
9277
9490
 
@@ -10100,41 +10313,48 @@ code {
10100
10313
  /* Default styles already applied above */
10101
10314
  }
10102
10315
 
10103
- /* Centered Layout */
10316
+ /* Centered Layout - Mobile default: left-aligned */
10104
10317
  .dm-timeline-centered::before {
10105
10318
  content: '';
10106
10319
  position: absolute;
10107
- left: 50%;
10320
+ left: 30px; /* Mobile default: left-aligned line */
10108
10321
  top: 0;
10109
10322
  bottom: 0;
10110
10323
  width: 2px;
10111
10324
  background: var(--dm-gray-300);
10112
- transform: translateX(-50%);
10325
+ transform: none;
10113
10326
  }
10114
10327
 
10115
10328
  .dm-timeline-centered .dm-timeline-item {
10116
- width: 50%;
10117
- padding-right: var(--dm-space-8);
10118
- justify-content: flex-end;
10329
+ width: 100%; /* Mobile default: full width */
10330
+ left: 0;
10331
+ padding-left: var(--dm-space-16); /* Mobile: space for left line */
10332
+ padding-right: 0;
10333
+ justify-content: flex-start;
10119
10334
  }
10120
10335
 
10121
10336
  .dm-timeline-centered .dm-timeline-item:nth-child(even) {
10122
- left: 50%;
10123
- padding-left: var(--dm-space-8);
10337
+ width: 100%; /* Mobile: same as odd items */
10338
+ left: 0;
10339
+ padding-left: var(--dm-space-16);
10124
10340
  padding-right: 0;
10125
10341
  justify-content: flex-start;
10126
10342
  }
10127
10343
 
10128
10344
  .dm-timeline-centered .dm-timeline-year {
10129
- order: 2;
10130
- margin-left: var(--dm-space-6);
10131
- margin-right: 0;
10345
+ order: 0; /* Mobile: year badge on left */
10346
+ margin-right: var(--dm-space-6);
10347
+ margin-left: 0;
10348
+ position: absolute;
10349
+ left: 0;
10132
10350
  }
10133
10351
 
10134
10352
  .dm-timeline-centered .dm-timeline-item:nth-child(even) .dm-timeline-year {
10135
- order: 0;
10136
- margin-left: 0;
10353
+ order: 0; /* Mobile: same as odd items */
10137
10354
  margin-right: var(--dm-space-6);
10355
+ margin-left: 0;
10356
+ position: absolute;
10357
+ left: 0;
10138
10358
  }
10139
10359
 
10140
10360
  /* Horizontal Layout */
@@ -10182,33 +10402,34 @@ code {
10182
10402
  border-color: var(--dm-slate-200);
10183
10403
  }
10184
10404
 
10185
- /* Responsive Design */
10186
- @media (max-width: 768px) {
10187
- .dm-timeline-centered {
10188
- /* Switch to vertical layout on mobile */
10405
+ /* Desktop (≥769px) - Timeline/Progression centered enhancements */
10406
+ @media (min-width: 769px) {
10407
+ .dm-timeline-centered::before {
10408
+ left: 50%; /* Center line on desktop */
10409
+ transform: translateX(-50%);
10189
10410
  }
10190
10411
 
10191
- .dm-timeline-centered::before {
10192
- left: 30px;
10193
- transform: none;
10412
+ .dm-timeline-centered .dm-timeline-item {
10413
+ width: 50%; /* Half width for alternating layout */
10414
+ left: 0;
10415
+ padding-left: 0;
10416
+ padding-right: var(--dm-space-8);
10417
+ justify-content: flex-end;
10194
10418
  }
10195
10419
 
10196
- .dm-timeline-centered .dm-timeline-item,
10197
10420
  .dm-timeline-centered .dm-timeline-item:nth-child(even) {
10198
- width: 100%;
10199
- left: 0;
10200
- padding-left: var(--dm-space-16);
10421
+ left: 50%;
10422
+ padding-left: var(--dm-space-8);
10201
10423
  padding-right: 0;
10202
10424
  justify-content: flex-start;
10203
10425
  }
10204
10426
 
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;
10427
+ .dm-timeline-centered .dm-timeline-year {
10428
+ order: 1;
10429
+ margin-right: 0;
10430
+ margin-left: var(--dm-space-6);
10431
+ position: relative;
10432
+ left: auto;
10212
10433
  width: 80px;
10213
10434
  }
10214
10435
 
@@ -10342,15 +10563,16 @@ code {
10342
10563
  /* Horizontal layout */
10343
10564
  .dm-progression-horizontal {
10344
10565
  display: flex;
10566
+ flex-direction: column; /* Mobile default: vertical stacking */
10345
10567
  overflow-x: auto;
10346
10568
  padding-bottom: var(--dm-space-4);
10347
10569
  }
10348
10570
 
10349
10571
  .dm-progression-horizontal .dm-progression-item {
10350
10572
  flex-direction: column;
10351
- min-width: 250px;
10352
- margin-right: var(--dm-space-4);
10353
- margin-bottom: 0;
10573
+ min-width: 100%; /* Mobile default: full width stacking */
10574
+ margin-right: 0;
10575
+ margin-bottom: var(--dm-space-4);
10354
10576
  }
10355
10577
 
10356
10578
  /* Progress bar (Roadmap mode) */
@@ -10615,20 +10837,20 @@ code {
10615
10837
  border-color: var(--dm-slate-700);
10616
10838
  }
10617
10839
 
10618
- /* Responsive design */
10619
- @media (max-width: 768px) {
10840
+ /* Desktop (≥769px) - Progression enhancements */
10841
+ @media (min-width: 769px) {
10620
10842
  .dm-progression-centered .dm-progression-item:nth-child(even) {
10621
- flex-direction: row;
10843
+ flex-direction: row-reverse; /* Alternate direction on desktop */
10622
10844
  }
10623
10845
 
10624
10846
  .dm-progression-horizontal {
10625
- flex-direction: column;
10847
+ flex-direction: row; /* Horizontal on desktop */
10626
10848
  }
10627
10849
 
10628
10850
  .dm-progression-horizontal .dm-progression-item {
10629
- min-width: 100%;
10630
- margin-right: 0;
10631
- margin-bottom: var(--dm-space-4);
10851
+ min-width: auto;
10852
+ margin-right: var(--dm-space-6);
10853
+ margin-bottom: 0;
10632
10854
  }
10633
10855
  }
10634
10856
 
@@ -10658,14 +10880,16 @@ code {
10658
10880
 
10659
10881
  .dm-cookie-consent-bottom-left {
10660
10882
  bottom: 20px;
10661
- left: 20px;
10662
- max-width: 400px;
10883
+ left: 10px; /* Mobile default: minimal margins */
10884
+ right: 10px; /* Mobile: full width minus margins */
10885
+ max-width: none; /* Mobile: no width constraint */
10663
10886
  }
10664
10887
 
10665
10888
  .dm-cookie-consent-bottom-right {
10666
10889
  bottom: 20px;
10667
- right: 20px;
10668
- max-width: 400px;
10890
+ left: 10px; /* Mobile default: minimal margins */
10891
+ right: 10px; /* Mobile: full width minus margins */
10892
+ max-width: none; /* Mobile: no width constraint */
10669
10893
  }
10670
10894
 
10671
10895
  .dm-cookie-consent-center-modal {
@@ -10679,8 +10903,8 @@ code {
10679
10903
  /* Layout variants */
10680
10904
  .dm-cookie-consent-bar .dm-cookie-consent-content {
10681
10905
  display: flex;
10682
- align-items: center;
10683
- justify-content: space-between;
10906
+ flex-direction: column; /* Mobile default: vertical stacking */
10907
+ align-items: stretch;
10684
10908
  padding: 16px 20px;
10685
10909
  gap: 20px;
10686
10910
  }
@@ -10721,7 +10945,8 @@ code {
10721
10945
  /* Message styles */
10722
10946
  .dm-cookie-consent-message {
10723
10947
  flex: 1;
10724
- margin-right: 20px;
10948
+ margin-right: 0; /* Mobile default: no right margin */
10949
+ margin-bottom: 16px; /* Mobile default: bottom spacing */
10725
10950
  }
10726
10951
 
10727
10952
  .dm-cookie-consent-message a {
@@ -10736,6 +10961,7 @@ code {
10736
10961
  /* Button styles */
10737
10962
  .dm-cookie-consent-buttons {
10738
10963
  display: flex;
10964
+ flex-direction: column; /* Mobile default: vertical buttons */
10739
10965
  gap: 12px;
10740
10966
  flex-shrink: 0;
10741
10967
  }
@@ -10901,27 +11127,32 @@ code {
10901
11127
  gap: 12px;
10902
11128
  }
10903
11129
 
10904
- /* Responsive */
10905
- @media (max-width: 640px) {
11130
+ /* Desktop (≥641px) - Cookie Consent enhancements */
11131
+ @media (min-width: 641px) {
10906
11132
  .dm-cookie-consent-bar .dm-cookie-consent-content {
10907
- flex-direction: column;
10908
- align-items: stretch;
11133
+ flex-direction: row; /* Horizontal on desktop */
11134
+ align-items: center;
10909
11135
  }
10910
11136
 
10911
11137
  .dm-cookie-consent-message {
10912
- margin-right: 0;
10913
- margin-bottom: 16px;
11138
+ margin-right: 24px;
11139
+ margin-bottom: 0;
10914
11140
  }
10915
11141
 
10916
11142
  .dm-cookie-consent-buttons {
10917
- flex-direction: column;
11143
+ flex-direction: row; /* Horizontal buttons on desktop */
11144
+ }
11145
+
11146
+ .dm-cookie-consent-bottom-left {
11147
+ left: 20px;
11148
+ right: auto;
11149
+ max-width: 600px;
10918
11150
  }
10919
11151
 
10920
- .dm-cookie-consent-bottom-left,
10921
11152
  .dm-cookie-consent-bottom-right {
10922
- left: 10px;
10923
- right: 10px;
10924
- max-width: none;
11153
+ left: auto;
11154
+ right: 20px;
11155
+ max-width: 600px;
10925
11156
  }
10926
11157
  }
10927
11158
 
@@ -10932,11 +11163,11 @@ code {
10932
11163
  ============================================ */
10933
11164
 
10934
11165
  /*!
10935
- * Domma Themes v0.8.0-alpha
11166
+ * Domma Themes v0.9.4-alpha
10936
11167
  * Dynamic Object Manipulation & Modeling API
10937
11168
  * (c) 2026 Darryl Waterhouse & DCBW-IT
10938
- * Built: 2026-01-09T18:35:07.434Z
10939
- * Commit: 1a13022
11169
+ * Built: 2026-01-12T15:32:18.835Z
11170
+ * Commit: ac05440
10940
11171
  */
10941
11172
 
10942
11173
  /**