domma-js 0.7.8-alpha → 0.9.3-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * Domma Complete CSS Bundle v0.7.6-alpha
2
+ * Domma Complete CSS Bundle v0.9.2-alpha
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-01-09T13:59:22.244Z
5
+ * Built: 2026-01-11T18:01:20.519Z
6
6
  */
7
7
 
8
8
  /* ============================================
@@ -11,11 +11,11 @@
11
11
  ============================================ */
12
12
 
13
13
  /*!
14
- * Domma Core CSS v0.7.6-alpha
14
+ * Domma Core CSS v0.9.2-alpha
15
15
  * Dynamic Object Manipulation & Modeling API
16
16
  * (c) 2026 Darryl Waterhouse & DCBW-IT
17
- * Built: 2026-01-09T13:59:21.897Z
18
- * Commit: 5527c59
17
+ * Built: 2026-01-11T18:01:20.188Z
18
+ * Commit: 136342c
19
19
  */
20
20
 
21
21
  /**
@@ -4016,11 +4016,11 @@ body.dm-cloaked.dm-ready {
4016
4016
  ============================================ */
4017
4017
 
4018
4018
  /*!
4019
- * Domma Grid CSS v0.7.6-alpha
4019
+ * Domma Grid CSS v0.9.2-alpha
4020
4020
  * Dynamic Object Manipulation & Modeling API
4021
4021
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4022
- * Built: 2026-01-09T13:59:21.905Z
4023
- * Commit: 5527c59
4022
+ * Built: 2026-01-11T18:01:20.195Z
4023
+ * Commit: 136342c
4024
4024
  */
4025
4025
 
4026
4026
  /**
@@ -4617,11 +4617,11 @@ body.dm-cloaked.dm-ready {
4617
4617
  ============================================ */
4618
4618
 
4619
4619
  /*!
4620
- * Domma Elements CSS v0.7.6-alpha
4620
+ * Domma Elements CSS v0.9.2-alpha
4621
4621
  * Dynamic Object Manipulation & Modeling API
4622
4622
  * (c) 2026 Darryl Waterhouse & DCBW-IT
4623
- * Built: 2026-01-09T13:59:21.912Z
4624
- * Commit: 5527c59
4623
+ * Built: 2026-01-11T18:01:20.203Z
4624
+ * Commit: 136342c
4625
4625
  */
4626
4626
 
4627
4627
  /**
@@ -6073,11 +6073,18 @@ code {
6073
6073
  NAVBAR
6074
6074
  ============================================ */
6075
6075
 
6076
+ /* ============================================
6077
+ NAVBAR - MOBILE FIRST
6078
+ ============================================ */
6079
+
6080
+ /* Base navbar (mobile default) */
6076
6081
  .navbar {
6077
6082
  display: flex;
6078
6083
  align-items: center;
6079
6084
  justify-content: space-between;
6080
- padding: var(--dm-space-3) var(--dm-space-6);
6085
+ flex-wrap: wrap;
6086
+ gap: var(--dm-space-3);
6087
+ padding: var(--dm-space-3) var(--dm-space-4);
6081
6088
  padding-right: 6rem; /* Leave space for theme toggle + variant */
6082
6089
  background-color: var(--dm-navbar-bg);
6083
6090
  border-bottom: 1px solid var(--dm-border);
@@ -6123,10 +6130,10 @@ code {
6123
6130
  object-fit: contain;
6124
6131
  }
6125
6132
 
6126
- /* Hamburger Toggle */
6127
-
6133
+ /* Hamburger Toggle (visible on mobile) */
6128
6134
  .navbar-toggle {
6129
- display: none;
6135
+ display: block;
6136
+ order: 2;
6130
6137
  padding: var(--dm-space-2);
6131
6138
  background: transparent;
6132
6139
  border: none;
@@ -6147,31 +6154,97 @@ code {
6147
6154
  display: block;
6148
6155
  }
6149
6156
 
6157
+ /* Hamburger icon - three lines */
6158
+ .navbar-toggle-icon {
6159
+ display: block;
6160
+ width: 22px;
6161
+ height: 2px;
6162
+ background: currentColor;
6163
+ position: relative;
6164
+ transition: background 0.2s ease;
6165
+ }
6166
+
6167
+ .navbar-toggle-icon::before,
6168
+ .navbar-toggle-icon::after {
6169
+ content: '';
6170
+ position: absolute;
6171
+ left: 0;
6172
+ width: 100%;
6173
+ height: 2px;
6174
+ background: currentColor;
6175
+ transition: transform 0.2s ease;
6176
+ }
6177
+
6178
+ .navbar-toggle-icon::before {
6179
+ top: -7px;
6180
+ }
6181
+
6182
+ .navbar-toggle-icon::after {
6183
+ top: 7px;
6184
+ }
6185
+
6186
+ /* Animate to X when expanded */
6187
+ .navbar-toggle[aria-expanded="true"] .navbar-toggle-icon {
6188
+ background: transparent;
6189
+ }
6190
+
6191
+ .navbar-toggle[aria-expanded="true"] .navbar-toggle-icon::before {
6192
+ transform: rotate(45deg);
6193
+ top: 0;
6194
+ }
6195
+
6196
+ .navbar-toggle[aria-expanded="true"] .navbar-toggle-icon::after {
6197
+ transform: rotate(-45deg);
6198
+ top: 0;
6199
+ }
6200
+
6201
+ /* Navbar collapse (mobile: hidden by default) */
6202
+ .navbar-collapse {
6203
+ display: none;
6204
+ width: 100%;
6205
+ order: 3;
6206
+ flex-direction: column;
6207
+ padding-top: var(--dm-space-3);
6208
+ border-top: 1px solid var(--dm-border);
6209
+ }
6210
+
6211
+ .navbar-collapse.show {
6212
+ display: flex;
6213
+ }
6214
+
6215
+ /* Navbar navigation list (mobile: vertical) */
6150
6216
  .navbar-nav {
6151
6217
  display: flex;
6152
- flex-wrap: wrap;
6218
+ flex-direction: column;
6219
+ width: 100%;
6153
6220
  list-style: none;
6154
6221
  margin: 0;
6155
6222
  padding: 0;
6156
- gap: var(--dm-space-1);
6157
- align-items: center;
6223
+ gap: 0;
6224
+ max-height: 60vh;
6225
+ overflow-y: auto;
6226
+ }
6227
+
6228
+ .navbar-nav li {
6229
+ width: 100%;
6158
6230
  }
6159
6231
 
6232
+ /* Navbar links (mobile: full width, larger touch targets) */
6160
6233
  .navbar-link {
6161
6234
  display: block;
6162
- padding: var(--dm-space-2) var(--dm-space-3);
6235
+ padding: var(--dm-space-3) var(--dm-space-4);
6163
6236
  color: var(--dm-navbar-text);
6164
6237
  text-decoration: none;
6165
- border-radius: var(--dm-radius-md);
6238
+ border-radius: 0;
6166
6239
  transition: all var(--dm-transition-fast);
6167
- font-size: var(--dm-font-size-sm);
6240
+ font-size: var(--dm-font-size-base);
6168
6241
  white-space: nowrap;
6169
6242
  }
6170
6243
 
6171
6244
  .navbar-link:hover {
6172
6245
  color: var(--dm-text);
6173
- /*background-color: var(--dm-surface-raised);*/
6174
6246
  background-color: var(--dm-gray-800);
6247
+ border-radius: 0;
6175
6248
  }
6176
6249
 
6177
6250
  .navbar-link.active {
@@ -6180,6 +6253,11 @@ code {
6180
6253
  background-color: color-mix(in srgb, var(--dm-primary) 10%, transparent);
6181
6254
  }
6182
6255
 
6256
+ .nav-version {
6257
+ display: none;
6258
+ color: #eee;
6259
+ }
6260
+
6183
6261
  /* Light navbar variant */
6184
6262
 
6185
6263
  .navbar-light {
@@ -6245,68 +6323,113 @@ code {
6245
6323
  color: var(--dm-white);
6246
6324
  }
6247
6325
 
6248
- /* Responsive navbar - tablet */
6249
- @media (max-width: 1200px) {
6250
- .navbar {
6251
- padding: var(--dm-space-3) var(--dm-space-4);
6252
- padding-right: 6rem;
6253
- }
6326
+ /* Dark navbar collapse border color (mobile) */
6327
+ .navbar-dark .navbar-collapse {
6328
+ border-top-color: var(--dm-gray-700);
6329
+ }
6254
6330
 
6255
- .navbar-link {
6256
- padding: var(--dm-space-1) var(--dm-space-2);
6257
- font-size: var(--dm-font-size-xs);
6258
- }
6331
+ /* Navbar actions - base mobile styles */
6332
+ .navbar-actions {
6333
+ display: flex;
6334
+ align-items: center;
6335
+ gap: var(--dm-space-3);
6259
6336
  }
6260
6337
 
6261
- /* Responsive navbar - mobile */
6262
- @media (max-width: 992px) {
6338
+ /* ============================================
6339
+ NAVBAR - DESKTOP ENHANCEMENTS
6340
+ ============================================ */
6341
+
6342
+ /* Desktop (≥993px) */
6343
+ @media (min-width: 993px) {
6263
6344
  .navbar {
6264
- flex-wrap: wrap;
6265
- gap: var(--dm-space-3);
6345
+ flex-wrap: nowrap;
6346
+ gap: 0;
6347
+ padding: var(--dm-space-3) var(--dm-space-6);
6266
6348
  }
6267
6349
 
6350
+ /* Hide hamburger on desktop */
6268
6351
  .navbar-toggle {
6269
- display: block;
6270
- order: 2;
6352
+ display: none;
6353
+ }
6354
+
6355
+ /* Show navbar collapse on desktop */
6356
+ .navbar-collapse {
6357
+ display: flex;
6358
+ width: auto;
6359
+ flex-direction: row;
6360
+ align-items: center;
6361
+ flex-grow: 1;
6362
+ padding-top: 0;
6363
+ border-top: none;
6271
6364
  }
6272
6365
 
6366
+ /* Horizontal navigation on desktop */
6273
6367
  .navbar-nav {
6274
- display: none;
6275
- width: 100%;
6276
- order: 3;
6277
- flex-direction: column;
6278
- gap: 0;
6279
- padding-top: var(--dm-space-3);
6280
- border-top: 1px solid var(--dm-gray-200);
6281
- max-height: 60vh;
6282
- overflow-y: auto;
6368
+ flex-direction: row;
6369
+ flex: 1;
6370
+ justify-content: center;
6371
+ gap: var(--dm-space-1);
6372
+ align-items: center;
6373
+ max-height: none;
6374
+ overflow-y: visible;
6283
6375
  }
6284
6376
 
6285
- .navbar-dark .navbar-nav {
6286
- border-top-color: var(--dm-gray-800);
6377
+ .navbar-nav li {
6378
+ width: auto;
6287
6379
  }
6288
6380
 
6289
- .navbar-nav.open {
6290
- display: flex;
6381
+ /* Navbar actions - desktop override: push to right */
6382
+ .navbar-actions {
6383
+ margin-left: auto;
6291
6384
  }
6292
6385
 
6293
- .navbar-nav li {
6294
- width: 100%;
6386
+ .navbar-action-link {
6387
+ color: var(--dm-navbar-text, var(--dm-white));
6388
+ text-decoration: none;
6389
+ padding: var(--dm-space-2) var(--dm-space-3);
6390
+ border-radius: var(--dm-radius-md);
6391
+ font-size: var(--dm-font-size-sm);
6392
+ transition: background var(--dm-transition-fast);
6393
+ }
6394
+
6395
+ .navbar-action-link:hover {
6396
+ background: rgba(255, 255, 255, 0.1);
6397
+ text-decoration: none;
6398
+ }
6399
+
6400
+ .navbar-dark .navbar-action-link {
6401
+ color: var(--dm-white);
6402
+ }
6403
+
6404
+ .navbar-light .navbar-action-link {
6405
+ color: var(--dm-text);
6406
+ }
6407
+
6408
+ .navbar-light .navbar-action-link:hover {
6409
+ background: rgba(0, 0, 0, 0.05);
6295
6410
  }
6296
6411
 
6412
+ /* Compact links on desktop */
6297
6413
  .navbar-link {
6298
- padding: var(--dm-space-3) var(--dm-space-4);
6299
- font-size: var(--dm-font-size-base);
6300
- border-radius: 0;
6414
+ padding: var(--dm-space-2) var(--dm-space-3);
6415
+ font-size: var(--dm-font-size-sm);
6416
+ border-radius: var(--dm-radius-md);
6301
6417
  }
6302
6418
 
6303
6419
  .navbar-link:hover {
6304
- border-radius: 0;
6420
+ border-radius: var(--dm-radius-md);
6305
6421
  }
6306
6422
 
6307
6423
  .nav-version {
6308
- display: none;
6309
- color: #eee;
6424
+ display: inline;
6425
+ }
6426
+ }
6427
+
6428
+ /* Large desktop (≥1201px) */
6429
+ @media (min-width: 1201px) {
6430
+ .navbar-link {
6431
+ padding: var(--dm-space-1) var(--dm-space-2);
6432
+ font-size: var(--dm-font-size-xs);
6310
6433
  }
6311
6434
  }
6312
6435
 
@@ -6433,6 +6556,13 @@ code {
6433
6556
  background: var(--dm-hover-bg, rgba(0, 0, 0, 0.05));
6434
6557
  }
6435
6558
 
6559
+ .navbar-dropdown-divider {
6560
+ height: 1px;
6561
+ margin: 0.5rem 0;
6562
+ background: var(--dm-border-color, rgba(0, 0, 0, 0.1));
6563
+ list-style: none;
6564
+ }
6565
+
6436
6566
  /* Dark navbar dropdown styles */
6437
6567
  .navbar-dark .navbar-dropdown-menu {
6438
6568
  background: var(--dm-gray-800);
@@ -6448,6 +6578,10 @@ code {
6448
6578
  color: var(--dm-white);
6449
6579
  }
6450
6580
 
6581
+ .navbar-dark .navbar-dropdown-divider {
6582
+ background: var(--dm-gray-700);
6583
+ }
6584
+
6451
6585
  /* Pill button styles (for Download button) */
6452
6586
  .pill {
6453
6587
  display: inline-block;
@@ -7197,21 +7331,23 @@ code {
7197
7331
 
7198
7332
 
7199
7333
  /* ============================================
7200
- HERO SECTION
7334
+ HERO SECTION - MOBILE FIRST
7201
7335
  ============================================ */
7202
7336
 
7203
- /* Base Hero - Structure Only */
7337
+ /* Base Hero - Mobile Default */
7204
7338
  .hero {
7205
- padding: 4rem 2rem;
7339
+ padding: 3rem 1rem; /* Reduced side padding to minimize whitespace */
7206
7340
  text-align: center;
7207
7341
  position: relative;
7208
7342
  background: var(--dm-surface);
7209
7343
  color: var(--dm-text);
7344
+ width: 100%; /* Ensure full width */
7345
+ box-sizing: border-box; /* Include padding in width calculation */
7210
7346
  }
7211
7347
 
7212
7348
  .hero h1,
7213
7349
  .hero .hero-title {
7214
- font-size: 3rem;
7350
+ font-size: 2rem; /* Mobile-optimized title size */
7215
7351
  font-weight: 700;
7216
7352
  margin-bottom: 1rem;
7217
7353
  line-height: 1.2;
@@ -7219,7 +7355,7 @@ code {
7219
7355
 
7220
7356
  .hero p,
7221
7357
  .hero .hero-subtitle {
7222
- font-size: 1.25rem;
7358
+ font-size: 1rem; /* Mobile-optimized text size */
7223
7359
  max-width: 600px;
7224
7360
  margin: 0 auto 2rem;
7225
7361
  opacity: 0.9;
@@ -7238,32 +7374,33 @@ code {
7238
7374
  flex-wrap: wrap;
7239
7375
  }
7240
7376
 
7241
- /* Hero Size Variants */
7377
+ /* Hero Size Variants - Mobile Default */
7242
7378
  .hero-sm {
7243
- padding: 2rem 1rem;
7379
+ padding: 2rem 0.75rem;
7244
7380
  }
7245
7381
 
7246
7382
  .hero-sm h1,
7247
7383
  .hero-sm .hero-title {
7248
- font-size: 2rem;
7384
+ font-size: 1.75rem;
7249
7385
  }
7250
7386
 
7251
7387
  .hero-sm p,
7252
7388
  .hero-sm .hero-subtitle {
7253
- font-size: 1rem;
7389
+ font-size: 0.875rem;
7254
7390
  }
7255
7391
 
7256
7392
  .hero-lg {
7257
- padding: 6rem 2rem;
7393
+ padding: 4rem 1rem;
7258
7394
  }
7259
7395
 
7260
7396
  .hero-lg h1,
7261
7397
  .hero-lg .hero-title {
7262
- font-size: 4rem;
7398
+ font-size: 2.5rem;
7263
7399
  }
7264
7400
 
7265
7401
  .hero-full {
7266
7402
  min-height: 100vh;
7403
+ min-height: 100dvh; /* Dynamic viewport height for mobile browsers */
7267
7404
  display: flex;
7268
7405
  flex-direction: column;
7269
7406
  justify-content: center;
@@ -7290,20 +7427,48 @@ code {
7290
7427
  color: var(--dm-white);
7291
7428
  }
7292
7429
 
7293
- /* Responsive */
7294
- @media (max-width: 768px) {
7430
+ /* ============================================
7431
+ HERO - DESKTOP ENHANCEMENTS
7432
+ ============================================ */
7433
+
7434
+ /* Desktop (≥769px) */
7435
+ @media (min-width: 769px) {
7436
+ .hero {
7437
+ padding: 4rem 2rem; /* Desktop: more generous padding */
7438
+ }
7439
+
7295
7440
  .hero h1,
7296
7441
  .hero .hero-title {
7297
- font-size: 2rem;
7442
+ font-size: 3rem; /* Desktop: larger title */
7298
7443
  }
7299
7444
 
7300
7445
  .hero p,
7301
7446
  .hero .hero-subtitle {
7447
+ font-size: 1.25rem; /* Desktop: larger text */
7448
+ }
7449
+
7450
+ /* Desktop size variants */
7451
+ .hero-sm {
7452
+ padding: 2rem 1rem;
7453
+ }
7454
+
7455
+ .hero-sm h1,
7456
+ .hero-sm .hero-title {
7457
+ font-size: 2rem;
7458
+ }
7459
+
7460
+ .hero-sm p,
7461
+ .hero-sm .hero-subtitle {
7302
7462
  font-size: 1rem;
7303
7463
  }
7304
7464
 
7305
- .hero {
7306
- padding: 3rem 1.5rem;
7465
+ .hero-lg {
7466
+ padding: 6rem 2rem;
7467
+ }
7468
+
7469
+ .hero-lg h1,
7470
+ .hero-lg .hero-title {
7471
+ font-size: 4rem;
7307
7472
  }
7308
7473
  }
7309
7474
 
@@ -7691,36 +7856,49 @@ code {
7691
7856
 
7692
7857
 
7693
7858
  /* ============================================
7694
- SIDEBAR
7859
+ SIDEBAR - MOBILE FIRST
7695
7860
  ============================================ */
7696
7861
 
7697
- /* Base Sidebar */
7862
+ /* Base Sidebar - Mobile Default */
7698
7863
  .sidebar {
7699
7864
  position: relative;
7700
- width: 250px;
7865
+ width: 100%;
7866
+ max-width: 250px;
7701
7867
  background: var(--dm-surface, #fff);
7702
7868
  border-right: 1px solid var(--dm-border, #dee2e6);
7703
7869
  overflow-y: auto;
7704
7870
  overflow-x: hidden;
7705
- transition: transform 0.3s ease;
7871
+ transition: transform 0.3s ease, width 0.3s ease;
7706
7872
  z-index: 100;
7873
+ --sidebar-width: 250px;
7874
+ --sidebar-collapsed-width: 60px;
7707
7875
  }
7708
7876
 
7709
- /* Fixed positioning */
7877
+ /* Fixed positioning - Mobile: hidden off-screen by default */
7710
7878
  .sidebar-fixed {
7711
7879
  position: fixed;
7712
7880
  top: 0;
7713
7881
  left: 0;
7714
7882
  height: 100vh;
7883
+ height: 100dvh; /* Dynamic viewport height for mobile */
7884
+ transform: translateX(-100%); /* Hidden off-screen on mobile */
7885
+ box-shadow: none;
7715
7886
  }
7716
7887
 
7717
7888
  .sidebar-fixed.sidebar-right {
7718
7889
  left: auto;
7719
7890
  right: 0;
7891
+ transform: translateX(100%); /* Hidden off-screen right */
7720
7892
  border-right: none;
7721
7893
  border-left: 1px solid var(--dm-border, #dee2e6);
7722
7894
  }
7723
7895
 
7896
+ /* Mobile: slide in when open */
7897
+ .sidebar-fixed.open {
7898
+ transform: translateX(0);
7899
+ box-shadow: var(--dm-shadow-xl, 0 10px 40px rgba(0,0,0,0.2));
7900
+ }
7901
+
7724
7902
  /* Position variants */
7725
7903
  .sidebar-left {
7726
7904
  left: 0;
@@ -7758,8 +7936,11 @@ code {
7758
7936
  color: var(--dm-text, #212529);
7759
7937
  }
7760
7938
 
7939
+ /* Toggle button - Visible on mobile by default */
7761
7940
  .sidebar-toggle-btn {
7762
- display: none; /* Shown on mobile */
7941
+ display: flex;
7942
+ align-items: center;
7943
+ justify-content: center;
7763
7944
  flex-shrink: 0;
7764
7945
  width: 32px;
7765
7946
  height: 32px;
@@ -7937,7 +8118,7 @@ code {
7937
8118
  color: var(--dm-text-muted, #6c757d);
7938
8119
  }
7939
8120
 
7940
- /* Overlay (mobile) */
8121
+ /* Overlay - Visible on mobile */
7941
8122
  .sidebar-overlay {
7942
8123
  position: fixed;
7943
8124
  top: 0;
@@ -7949,6 +8130,7 @@ code {
7949
8130
  opacity: 0;
7950
8131
  visibility: hidden;
7951
8132
  transition: opacity 0.3s ease, visibility 0.3s ease;
8133
+ display: block;
7952
8134
  }
7953
8135
 
7954
8136
  .sidebar-overlay.active {
@@ -8012,30 +8194,118 @@ code {
8012
8194
  border-color: var(--dm-border, #dee2e6);
8013
8195
  }
8014
8196
 
8015
- /* Mobile/Tablet: Slide-out drawer */
8016
- @media (max-width: 768px) {
8197
+ /* ============================================
8198
+ SIDEBAR - DESKTOP ENHANCEMENTS
8199
+ ============================================ */
8200
+
8201
+ /* Desktop (≥769px) */
8202
+ @media (min-width: 769px) {
8203
+ /* Desktop: Sidebar always visible */
8017
8204
  .sidebar-fixed {
8018
- transform: translateX(-100%);
8205
+ transform: translateX(0);
8019
8206
  box-shadow: none;
8020
8207
  }
8021
8208
 
8022
8209
  .sidebar-fixed.sidebar-right {
8023
- transform: translateX(100%);
8024
- }
8025
-
8026
- .sidebar-fixed.open {
8027
8210
  transform: translateX(0);
8028
- box-shadow: var(--dm-shadow-xl, 0 10px 40px rgba(0,0,0,0.2));
8029
8211
  }
8030
8212
 
8213
+ /* Desktop: Hide toggle button (unless desktop collapsible) */
8031
8214
  .sidebar-toggle-btn {
8215
+ display: none;
8216
+ }
8217
+
8218
+ /* Show toggle button on desktop when collapsibleDesktop enabled */
8219
+ .sidebar.sidebar-desktop-collapsible .sidebar-toggle-btn {
8032
8220
  display: flex;
8221
+ }
8222
+
8223
+ /* Desktop: Hide overlay */
8224
+ .sidebar-overlay {
8225
+ display: none;
8226
+ }
8227
+
8228
+ /* Desktop collapsed state - Fully hidden */
8229
+ .sidebar.sidebar-collapsed {
8230
+ transform: translateX(-100%);
8231
+ }
8232
+
8233
+ .sidebar.sidebar-collapsed.sidebar-right {
8234
+ transform: translateX(100%);
8235
+ }
8236
+
8237
+ /* Floating toggle button - appears when sidebar is collapsed */
8238
+ .sidebar-floating-toggle {
8239
+ position: fixed;
8240
+ top: 50%;
8241
+ left: 0;
8242
+ transform: translateY(-50%);
8243
+ z-index: 1001;
8244
+ display: none; /* Hidden by default */
8033
8245
  align-items: center;
8034
8246
  justify-content: center;
8247
+ width: 40px;
8248
+ height: 40px;
8249
+ background: var(--dm-primary, #007bff);
8250
+ color: var(--dm-white, #fff);
8251
+ border: none;
8252
+ border-radius: 0 var(--dm-radius-md, 0.375rem) var(--dm-radius-md, 0.375rem) 0;
8253
+ cursor: pointer;
8254
+ transition: all 0.2s ease;
8255
+ box-shadow: var(--dm-shadow-lg, 0 4px 12px rgba(0,0,0,0.15));
8035
8256
  }
8036
8257
 
8037
- .sidebar-overlay {
8038
- display: block;
8258
+ .sidebar-floating-toggle:hover {
8259
+ background: var(--dm-primary-dark, #0056b3);
8260
+ width: 48px;
8261
+ box-shadow: var(--dm-shadow-xl, 0 8px 20px rgba(0,0,0,0.2));
8262
+ }
8263
+
8264
+ .sidebar-floating-toggle.show {
8265
+ display: flex;
8266
+ }
8267
+
8268
+ .sidebar-floating-toggle.right {
8269
+ left: auto;
8270
+ right: 0;
8271
+ border-radius: var(--dm-radius-md, 0.375rem) 0 0 var(--dm-radius-md, 0.375rem);
8272
+ }
8273
+ }
8274
+
8275
+ /* ============================================
8276
+ Floating Sidebar Variant
8277
+ (bottom-left positioned sidebar)
8278
+ ============================================ */
8279
+ .sidebar-floating {
8280
+ position: fixed;
8281
+ left: 2px;
8282
+ bottom: 8px;
8283
+ top: auto !important;
8284
+ height: auto;
8285
+ max-height: 400px;
8286
+ width: 220px;
8287
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
8288
+ z-index: 100;
8289
+ }
8290
+
8291
+ .sidebar-floating .sidebar-header {
8292
+ font-size: 0.875rem;
8293
+ text-transform: uppercase;
8294
+ letter-spacing: 0.05em;
8295
+ }
8296
+
8297
+ @media (max-width: 992px) {
8298
+ .sidebar-floating {
8299
+ left: 0.5rem;
8300
+ bottom: 0.5rem;
8301
+ width: 180px;
8302
+ max-height: 300px;
8303
+ }
8304
+ }
8305
+
8306
+ @media (max-width: 576px) {
8307
+ .sidebar-floating {
8308
+ display: none;
8039
8309
  }
8040
8310
  }
8041
8311
 
@@ -8228,6 +8498,33 @@ code {
8228
8498
  color: rgba(255, 255, 255, 0.8);
8229
8499
  }
8230
8500
 
8501
+ /* ============================================
8502
+ SIDEBAR - PUSH MODE
8503
+ ============================================ */
8504
+
8505
+ /* Content wrapper when sidebar pushes it (left position) */
8506
+ .sidebar-push-active {
8507
+ margin-left: var(--sidebar-push-width, 250px);
8508
+ transition: margin-left var(--dm-transition-normal, 0.3s) ease;
8509
+ }
8510
+
8511
+ /* Content wrapper when sidebar pushes it (right position) */
8512
+ .sidebar-push-active-right {
8513
+ margin-right: var(--sidebar-push-width, 250px);
8514
+ margin-left: 0;
8515
+ transition: margin-right var(--dm-transition-normal, 0.3s) ease;
8516
+ }
8517
+
8518
+ /* Mobile: Allow custom push width for mobile */
8519
+ @media (max-width: 768px) {
8520
+ .sidebar-push-active {
8521
+ margin-left: var(--sidebar-push-width-mobile, var(--sidebar-push-width, 250px));
8522
+ }
8523
+
8524
+ .sidebar-push-active-right {
8525
+ margin-right: var(--sidebar-push-width-mobile, var(--sidebar-push-width, 250px));
8526
+ }
8527
+ }
8231
8528
 
8232
8529
 
8233
8530
  /* ============================================
@@ -8262,20 +8559,20 @@ code {
8262
8559
  z-index: 100;
8263
8560
  }
8264
8561
 
8265
- /* Container */
8562
+ /* Container - Mobile Default */
8266
8563
  .footer-container {
8267
8564
  max-width: var(--dm-container-lg, 1200px);
8268
8565
  margin: 0 auto;
8269
- padding: var(--dm-space-6, 1.5rem) var(--dm-space-4, 1rem);
8566
+ padding: var(--dm-space-4, 1rem); /* Mobile: compact padding */
8270
8567
  }
8271
8568
 
8272
- /* ========== Simple Layout ========== */
8569
+ /* ========== Simple Layout - Mobile Default ========== */
8273
8570
 
8274
8571
  .footer-simple .footer-simple-content {
8275
8572
  display: flex;
8276
8573
  flex-wrap: wrap;
8277
- align-items: center;
8278
- justify-content: space-between;
8574
+ flex-direction: column; /* Mobile: vertical stacking */
8575
+ align-items: flex-start; /* Mobile: left-aligned */
8279
8576
  gap: var(--dm-space-4, 1rem);
8280
8577
  }
8281
8578
 
@@ -8306,8 +8603,9 @@ code {
8306
8603
  .footer-nav {
8307
8604
  display: flex;
8308
8605
  flex-wrap: wrap;
8309
- gap: var(--dm-space-4, 1rem);
8310
- align-items: center;
8606
+ flex-direction: column; /* Mobile: vertical nav */
8607
+ align-items: flex-start; /* Mobile: left-aligned */
8608
+ gap: var(--dm-space-2, 0.5rem); /* Mobile: compact spacing */
8311
8609
  }
8312
8610
 
8313
8611
  .footer-link {
@@ -8354,12 +8652,12 @@ code {
8354
8652
  color: var(--dm-text-muted, #6c757d);
8355
8653
  }
8356
8654
 
8357
- /* ========== Columns Layout ========== */
8655
+ /* ========== Columns Layout - Mobile Default ========== */
8358
8656
 
8359
8657
  .footer-columns .footer-columns-content {
8360
8658
  display: grid;
8361
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
8362
- gap: var(--dm-space-6, 1.5rem);
8659
+ grid-template-columns: 1fr; /* Mobile: single column */
8660
+ gap: var(--dm-space-4, 1rem); /* Mobile: compact spacing */
8363
8661
  padding-bottom: var(--dm-space-4, 1rem);
8364
8662
  margin-bottom: var(--dm-space-4, 1rem);
8365
8663
  border-bottom: 1px solid var(--dm-border, #dee2e6);
@@ -8385,6 +8683,15 @@ code {
8385
8683
  line-height: 1.6;
8386
8684
  }
8387
8685
 
8686
+ .footer-column-brand .footer-brand-description {
8687
+ display: block;
8688
+ margin: var(--dm-space-2, 0.5rem) 0 0;
8689
+ color: var(--dm-text-muted, #6c757d);
8690
+ font-size: var(--dm-font-size-sm, 0.875rem);
8691
+ line-height: 1.5;
8692
+ opacity: 0.8;
8693
+ }
8694
+
8388
8695
  .footer-column-title {
8389
8696
  margin: 0 0 var(--dm-space-3, 0.75rem);
8390
8697
  font-size: var(--dm-font-size-base, 1rem);
@@ -8417,19 +8724,23 @@ code {
8417
8724
  .footer-columns .footer-bottom {
8418
8725
  display: flex;
8419
8726
  flex-wrap: wrap;
8420
- align-items: center;
8421
- justify-content: space-between;
8727
+ flex-direction: column; /* Mobile: vertical stacking */
8728
+ align-items: flex-start; /* Mobile: left-aligned */
8422
8729
  gap: var(--dm-space-4, 1rem);
8423
8730
  }
8424
8731
 
8425
8732
  .footer-columns .footer-copyright {
8426
- width: auto;
8733
+ width: 100%; /* Mobile: full width */
8427
8734
  padding: 0;
8428
8735
  margin: 0;
8429
8736
  border: none;
8430
8737
  text-align: left;
8431
8738
  }
8432
8739
 
8740
+ .footer-social {
8741
+ width: 100%; /* Mobile: full width */
8742
+ }
8743
+
8433
8744
  /* ========== Minimal Layout ========== */
8434
8745
 
8435
8746
  .footer-minimal .footer-minimal-content {
@@ -8466,6 +8777,10 @@ code {
8466
8777
  color: var(--dm-white, #fff);
8467
8778
  }
8468
8779
 
8780
+ .footer-dark .footer-brand-description {
8781
+ color: var(--dm-gray-300, #dee2e6);
8782
+ }
8783
+
8469
8784
  .footer-dark .footer-link {
8470
8785
  color: var(--dm-gray-400, #adb5bd);
8471
8786
  }
@@ -8516,41 +8831,50 @@ code {
8516
8831
  border-color: transparent;
8517
8832
  }
8518
8833
 
8519
- /* ========== Responsive ========== */
8834
+ /* ============================================
8835
+ FOOTER - DESKTOP ENHANCEMENTS
8836
+ ============================================ */
8520
8837
 
8521
- @media (max-width: 768px) {
8838
+ /* Desktop (≥769px) */
8839
+ @media (min-width: 769px) {
8840
+ /* Desktop: More generous padding */
8522
8841
  .footer-container {
8523
- padding: var(--dm-space-4, 1rem);
8842
+ padding: var(--dm-space-6, 1.5rem) var(--dm-space-4, 1rem);
8524
8843
  }
8525
8844
 
8845
+ /* Desktop: Horizontal simple layout */
8526
8846
  .footer-simple .footer-simple-content {
8527
- flex-direction: column;
8528
- align-items: flex-start;
8847
+ flex-direction: row;
8848
+ align-items: center;
8849
+ justify-content: space-between;
8529
8850
  }
8530
8851
 
8852
+ /* Desktop: Horizontal navigation */
8531
8853
  .footer-nav {
8532
- flex-direction: column;
8533
- align-items: flex-start;
8534
- gap: var(--dm-space-2, 0.5rem);
8854
+ flex-direction: row;
8855
+ align-items: center;
8856
+ gap: var(--dm-space-4, 1rem);
8535
8857
  }
8536
8858
 
8859
+ /* Desktop: Multi-column grid */
8537
8860
  .footer-columns .footer-columns-content {
8538
- grid-template-columns: 1fr;
8539
- gap: var(--dm-space-4, 1rem);
8861
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
8862
+ gap: var(--dm-space-6, 1.5rem);
8540
8863
  }
8541
8864
 
8865
+ /* Desktop: Horizontal bottom section */
8542
8866
  .footer-columns .footer-bottom {
8543
- flex-direction: column;
8544
- align-items: flex-start;
8867
+ flex-direction: row;
8868
+ align-items: center;
8869
+ justify-content: space-between;
8545
8870
  }
8546
8871
 
8547
8872
  .footer-columns .footer-copyright {
8548
- width: 100%;
8549
- text-align: left;
8873
+ width: auto;
8550
8874
  }
8551
8875
 
8552
8876
  .footer-social {
8553
- width: 100%;
8877
+ width: auto;
8554
8878
  }
8555
8879
  }
8556
8880
  /* ============================================
@@ -8836,7 +9160,7 @@ code {
8836
9160
 
8837
9161
  /* Timer display */
8838
9162
  .dm-timer-display {
8839
- font-size: 2.5rem;
9163
+ font-size: 2rem; /* Mobile default */
8840
9164
  font-weight: 600;
8841
9165
  font-family: 'Courier New', monospace;
8842
9166
  color: var(--dm-slate-900);
@@ -8938,16 +9262,18 @@ code {
8938
9262
  display: none !important;
8939
9263
  }
8940
9264
 
8941
- /* Responsive timer styles */
8942
- @media (max-width: 576px) {
9265
+ /* Mobile-first: Timer base styles are already mobile-optimized above */
9266
+
9267
+ /* Desktop (≥577px) - Timer enhancements */
9268
+ @media (min-width: 577px) {
8943
9269
  .dm-timer-display {
8944
- font-size: 2rem;
9270
+ font-size: 3rem; /* Larger on desktop */
8945
9271
  }
8946
9272
 
8947
9273
  .dm-timer-button {
8948
- padding: 0.375rem 0.75rem;
8949
- font-size: 0.8125rem;
8950
- min-width: 70px;
9274
+ padding: 0.5rem 1rem;
9275
+ font-size: 0.875rem;
9276
+ min-width: 80px;
8951
9277
  }
8952
9278
  }
8953
9279
 
@@ -9214,14 +9540,14 @@ code {
9214
9540
 
9215
9541
  .dm-back-to-top {
9216
9542
  position: fixed;
9217
- bottom: 2rem;
9218
- right: 2rem;
9543
+ bottom: 1rem; /* Mobile default: compact positioning */
9544
+ right: 1rem;
9219
9545
  z-index: 1000;
9220
9546
  display: flex;
9221
9547
  align-items: center;
9222
9548
  justify-content: center;
9223
- width: 3rem;
9224
- height: 3rem;
9549
+ width: 2.5rem; /* Mobile default: smaller button */
9550
+ height: 2.5rem;
9225
9551
  padding: 0;
9226
9552
  background-color: var(--dm-primary);
9227
9553
  color: var(--dm-white);
@@ -9255,12 +9581,13 @@ code {
9255
9581
  box-shadow: 0 0 0 3px var(--dm-focus-ring);
9256
9582
  }
9257
9583
 
9258
- @media (max-width: 576px) {
9584
+ /* Desktop (≥577px) - Back to Top enhancements */
9585
+ @media (min-width: 577px) {
9259
9586
  .dm-back-to-top {
9260
- bottom: 1rem;
9261
- right: 1rem;
9262
- width: 2.5rem;
9263
- height: 2.5rem;
9587
+ bottom: 1.5rem; /* More spacing on desktop */
9588
+ right: 1.5rem;
9589
+ width: 3rem; /* Larger button on desktop */
9590
+ height: 3rem;
9264
9591
  }
9265
9592
  }
9266
9593
 
@@ -10089,41 +10416,48 @@ code {
10089
10416
  /* Default styles already applied above */
10090
10417
  }
10091
10418
 
10092
- /* Centered Layout */
10419
+ /* Centered Layout - Mobile default: left-aligned */
10093
10420
  .dm-timeline-centered::before {
10094
10421
  content: '';
10095
10422
  position: absolute;
10096
- left: 50%;
10423
+ left: 30px; /* Mobile default: left-aligned line */
10097
10424
  top: 0;
10098
10425
  bottom: 0;
10099
10426
  width: 2px;
10100
10427
  background: var(--dm-gray-300);
10101
- transform: translateX(-50%);
10428
+ transform: none;
10102
10429
  }
10103
10430
 
10104
10431
  .dm-timeline-centered .dm-timeline-item {
10105
- width: 50%;
10106
- padding-right: var(--dm-space-8);
10107
- justify-content: flex-end;
10432
+ width: 100%; /* Mobile default: full width */
10433
+ left: 0;
10434
+ padding-left: var(--dm-space-16); /* Mobile: space for left line */
10435
+ padding-right: 0;
10436
+ justify-content: flex-start;
10108
10437
  }
10109
10438
 
10110
10439
  .dm-timeline-centered .dm-timeline-item:nth-child(even) {
10111
- left: 50%;
10112
- padding-left: var(--dm-space-8);
10440
+ width: 100%; /* Mobile: same as odd items */
10441
+ left: 0;
10442
+ padding-left: var(--dm-space-16);
10113
10443
  padding-right: 0;
10114
10444
  justify-content: flex-start;
10115
10445
  }
10116
10446
 
10117
10447
  .dm-timeline-centered .dm-timeline-year {
10118
- order: 2;
10119
- margin-left: var(--dm-space-6);
10120
- margin-right: 0;
10448
+ order: 0; /* Mobile: year badge on left */
10449
+ margin-right: var(--dm-space-6);
10450
+ margin-left: 0;
10451
+ position: absolute;
10452
+ left: 0;
10121
10453
  }
10122
10454
 
10123
10455
  .dm-timeline-centered .dm-timeline-item:nth-child(even) .dm-timeline-year {
10124
- order: 0;
10125
- margin-left: 0;
10456
+ order: 0; /* Mobile: same as odd items */
10126
10457
  margin-right: var(--dm-space-6);
10458
+ margin-left: 0;
10459
+ position: absolute;
10460
+ left: 0;
10127
10461
  }
10128
10462
 
10129
10463
  /* Horizontal Layout */
@@ -10171,33 +10505,34 @@ code {
10171
10505
  border-color: var(--dm-slate-200);
10172
10506
  }
10173
10507
 
10174
- /* Responsive Design */
10175
- @media (max-width: 768px) {
10176
- .dm-timeline-centered {
10177
- /* Switch to vertical layout on mobile */
10508
+ /* Desktop (≥769px) - Timeline/Progression centered enhancements */
10509
+ @media (min-width: 769px) {
10510
+ .dm-timeline-centered::before {
10511
+ left: 50%; /* Center line on desktop */
10512
+ transform: translateX(-50%);
10178
10513
  }
10179
10514
 
10180
- .dm-timeline-centered::before {
10181
- left: 30px;
10182
- transform: none;
10515
+ .dm-timeline-centered .dm-timeline-item {
10516
+ width: 50%; /* Half width for alternating layout */
10517
+ left: 0;
10518
+ padding-left: 0;
10519
+ padding-right: var(--dm-space-8);
10520
+ justify-content: flex-end;
10183
10521
  }
10184
10522
 
10185
- .dm-timeline-centered .dm-timeline-item,
10186
10523
  .dm-timeline-centered .dm-timeline-item:nth-child(even) {
10187
- width: 100%;
10188
- left: 0;
10189
- padding-left: var(--dm-space-16);
10524
+ left: 50%;
10525
+ padding-left: var(--dm-space-8);
10190
10526
  padding-right: 0;
10191
10527
  justify-content: flex-start;
10192
10528
  }
10193
10529
 
10194
- .dm-timeline-centered .dm-timeline-year,
10195
- .dm-timeline-centered .dm-timeline-item:nth-child(even) .dm-timeline-year {
10196
- order: 0;
10197
- margin-right: var(--dm-space-6);
10198
- margin-left: 0;
10199
- position: absolute;
10200
- left: 0;
10530
+ .dm-timeline-centered .dm-timeline-year {
10531
+ order: 1;
10532
+ margin-right: 0;
10533
+ margin-left: var(--dm-space-6);
10534
+ position: relative;
10535
+ left: auto;
10201
10536
  width: 80px;
10202
10537
  }
10203
10538
 
@@ -10243,6 +10578,385 @@ code {
10243
10578
  border-color: var(--dm-slate-600);
10244
10579
  }
10245
10580
 
10581
+ /* ==============================================
10582
+ Progression Component (Timeline + Roadmap)
10583
+ ============================================== */
10584
+
10585
+ /* Base Progression styles */
10586
+ .dm-progression {
10587
+ width: 100%;
10588
+ position: relative;
10589
+ }
10590
+
10591
+ .dm-progression-item {
10592
+ display: flex;
10593
+ gap: var(--dm-space-4);
10594
+ position: relative;
10595
+ margin-bottom: var(--dm-space-6);
10596
+ }
10597
+
10598
+ .dm-progression-marker {
10599
+ flex-shrink: 0;
10600
+ display: flex;
10601
+ align-items: center;
10602
+ justify-content: center;
10603
+ font-weight: 600;
10604
+ font-size: var(--dm-font-size-sm);
10605
+ z-index: 2;
10606
+ }
10607
+
10608
+ .dm-progression-content {
10609
+ flex-grow: 1;
10610
+ background: var(--dm-surface, #fff);
10611
+ border: 1px solid var(--dm-border-color, #e0e0e0);
10612
+ border-radius: var(--dm-radius-md);
10613
+ padding: var(--dm-space-4);
10614
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.06);
10615
+ transition: all 0.2s ease;
10616
+ }
10617
+
10618
+ .dm-progression-title {
10619
+ margin: 0 0 var(--dm-space-2);
10620
+ font-size: var(--dm-font-size-lg);
10621
+ font-weight: 600;
10622
+ color: var(--dm-text-primary);
10623
+ }
10624
+
10625
+ .dm-progression-description {
10626
+ margin: 0;
10627
+ font-size: var(--dm-font-size-base);
10628
+ color: var(--dm-text-secondary);
10629
+ line-height: 1.6;
10630
+ }
10631
+
10632
+ /* Vertical layout (default) */
10633
+ .dm-progression-vertical .dm-progression-item::before {
10634
+ content: '';
10635
+ position: absolute;
10636
+ left: 2rem;
10637
+ top: 3rem;
10638
+ bottom: -1.5rem;
10639
+ width: 2px;
10640
+ background: var(--dm-border-color, #e0e0e0);
10641
+ z-index: 1;
10642
+ }
10643
+
10644
+ .dm-progression-vertical .dm-progression-item:last-child::before {
10645
+ display: none;
10646
+ }
10647
+
10648
+ /* Centered layout */
10649
+ .dm-progression-centered {
10650
+ max-width: 1200px;
10651
+ margin: 0 auto;
10652
+ }
10653
+
10654
+ .dm-progression-centered .dm-progression-item {
10655
+ width: 100%;
10656
+ }
10657
+
10658
+ .dm-progression-centered .dm-progression-item:nth-child(odd) {
10659
+ flex-direction: row;
10660
+ }
10661
+
10662
+ .dm-progression-centered .dm-progression-item:nth-child(even) {
10663
+ flex-direction: row-reverse;
10664
+ }
10665
+
10666
+ /* Horizontal layout */
10667
+ .dm-progression-horizontal {
10668
+ display: flex;
10669
+ flex-direction: column; /* Mobile default: vertical stacking */
10670
+ overflow-x: auto;
10671
+ padding-bottom: var(--dm-space-4);
10672
+ }
10673
+
10674
+ .dm-progression-horizontal .dm-progression-item {
10675
+ flex-direction: column;
10676
+ min-width: 100%; /* Mobile default: full width stacking */
10677
+ margin-right: 0;
10678
+ margin-bottom: var(--dm-space-4);
10679
+ }
10680
+
10681
+ /* Progress bar (Roadmap mode) */
10682
+ .dm-progression-progress {
10683
+ margin-bottom: var(--dm-space-6);
10684
+ padding: var(--dm-space-4);
10685
+ background: var(--dm-surface, #fff);
10686
+ border-radius: var(--dm-radius-md);
10687
+ border: 1px solid var(--dm-border-color, #e0e0e0);
10688
+ }
10689
+
10690
+ .dm-progression-progress-bar {
10691
+ height: 8px;
10692
+ background: linear-gradient(90deg, var(--dm-success, #22c55e), var(--dm-primary, #3b82f6));
10693
+ border-radius: var(--dm-radius-full);
10694
+ transition: width 0.6s ease;
10695
+ margin-bottom: var(--dm-space-2);
10696
+ }
10697
+
10698
+ .dm-progression-progress-text {
10699
+ font-size: var(--dm-font-size-sm);
10700
+ color: var(--dm-text-secondary);
10701
+ font-weight: 500;
10702
+ }
10703
+
10704
+ /* Roadmap-specific styles */
10705
+ .dm-progression-status-marker {
10706
+ width: 40px;
10707
+ height: 40px;
10708
+ border-radius: 50%;
10709
+ position: relative;
10710
+ }
10711
+
10712
+ .dm-progression-status-dot {
10713
+ width: 16px;
10714
+ height: 16px;
10715
+ border-radius: 50%;
10716
+ display: block;
10717
+ }
10718
+
10719
+ .dm-progression-status-icon {
10720
+ font-size: 20px;
10721
+ }
10722
+
10723
+ /* Status colours */
10724
+ .dm-progression-status-planned .dm-progression-status-marker {
10725
+ background: var(--dm-gray-100);
10726
+ border: 2px solid var(--dm-gray-400);
10727
+ }
10728
+
10729
+ .dm-progression-status-planned .dm-progression-status-dot {
10730
+ background: var(--dm-gray-400);
10731
+ }
10732
+
10733
+ .dm-progression-status-in-progress .dm-progression-status-marker {
10734
+ background: var(--dm-primary-light, rgba(59, 130, 246, 0.1));
10735
+ border: 2px solid var(--dm-primary, #3b82f6);
10736
+ position: relative;
10737
+ }
10738
+
10739
+ .dm-progression-status-in-progress .dm-progression-status-marker::after {
10740
+ content: '';
10741
+ position: absolute;
10742
+ inset: -4px;
10743
+ border: 2px solid var(--dm-primary, #3b82f6);
10744
+ border-radius: 50%;
10745
+ animation: progressPulse 2s infinite;
10746
+ }
10747
+
10748
+ @keyframes progressPulse {
10749
+ 0%, 100% {
10750
+ opacity: 0.6;
10751
+ transform: scale(1);
10752
+ }
10753
+ 50% {
10754
+ opacity: 0;
10755
+ transform: scale(1.3);
10756
+ }
10757
+ }
10758
+
10759
+ .dm-progression-status-in-progress .dm-progression-status-dot {
10760
+ background: var(--dm-primary, #3b82f6);
10761
+ }
10762
+
10763
+ .dm-progression-status-completed .dm-progression-status-marker {
10764
+ background: var(--dm-success-light, rgba(34, 197, 94, 0.1));
10765
+ border: 2px solid var(--dm-success, #22c55e);
10766
+ }
10767
+
10768
+ .dm-progression-status-completed .dm-progression-status-dot {
10769
+ background: var(--dm-success, #22c55e);
10770
+ }
10771
+
10772
+ .dm-progression-status-blocked .dm-progression-status-marker {
10773
+ background: var(--dm-danger-light, rgba(239, 68, 68, 0.1));
10774
+ border: 2px solid var(--dm-danger, #ef4444);
10775
+ }
10776
+
10777
+ .dm-progression-status-blocked .dm-progression-status-dot {
10778
+ background: var(--dm-danger, #ef4444);
10779
+ }
10780
+
10781
+ .dm-progression-status-cancelled .dm-progression-status-marker {
10782
+ background: var(--dm-gray-100);
10783
+ border: 2px solid var(--dm-gray-500);
10784
+ opacity: 0.6;
10785
+ }
10786
+
10787
+ .dm-progression-status-cancelled .dm-progression-status-dot {
10788
+ background: var(--dm-gray-500);
10789
+ }
10790
+
10791
+ /* Date/phase display */
10792
+ .dm-progression-date {
10793
+ font-size: var(--dm-font-size-sm);
10794
+ color: var(--dm-text-tertiary);
10795
+ font-weight: 500;
10796
+ margin-bottom: var(--dm-space-2);
10797
+ text-transform: uppercase;
10798
+ letter-spacing: 0.05em;
10799
+ }
10800
+
10801
+ /* Item progress bar */
10802
+ .dm-progression-item-progress {
10803
+ height: 6px;
10804
+ background: var(--dm-gray-200);
10805
+ border-radius: var(--dm-radius-full);
10806
+ overflow: hidden;
10807
+ margin-top: var(--dm-space-3);
10808
+ }
10809
+
10810
+ .dm-progression-item-progress-bar {
10811
+ height: 100%;
10812
+ background: var(--dm-primary, #3b82f6);
10813
+ border-radius: var(--dm-radius-full);
10814
+ transition: width 0.3s ease;
10815
+ }
10816
+
10817
+ .dm-progression-item-progress-text {
10818
+ font-size: var(--dm-font-size-xs);
10819
+ color: var(--dm-text-tertiary);
10820
+ margin-top: var(--dm-space-1);
10821
+ }
10822
+
10823
+ /* Priority badges */
10824
+ .dm-progression-priority {
10825
+ display: inline-flex;
10826
+ align-items: center;
10827
+ padding: 2px 8px;
10828
+ border-radius: var(--dm-radius-full);
10829
+ font-size: var(--dm-font-size-xs);
10830
+ font-weight: 600;
10831
+ text-transform: uppercase;
10832
+ letter-spacing: 0.05em;
10833
+ margin-top: var(--dm-space-2);
10834
+ }
10835
+
10836
+ .dm-progression-priority-low {
10837
+ background: var(--dm-gray-200);
10838
+ color: var(--dm-gray-700);
10839
+ }
10840
+
10841
+ .dm-progression-priority-medium {
10842
+ background: var(--dm-info-light, rgba(59, 130, 246, 0.1));
10843
+ color: var(--dm-info, #3b82f6);
10844
+ }
10845
+
10846
+ .dm-progression-priority-high {
10847
+ background: var(--dm-warning-light, rgba(245, 158, 11, 0.1));
10848
+ color: var(--dm-warning, #f59e0b);
10849
+ }
10850
+
10851
+ .dm-progression-priority-critical {
10852
+ background: var(--dm-danger-light, rgba(239, 68, 68, 0.1));
10853
+ color: var(--dm-danger, #ef4444);
10854
+ }
10855
+
10856
+ /* Tags */
10857
+ .dm-progression-tags {
10858
+ display: flex;
10859
+ flex-wrap: wrap;
10860
+ gap: var(--dm-space-2);
10861
+ margin-top: var(--dm-space-3);
10862
+ }
10863
+
10864
+ .dm-progression-tag {
10865
+ background: var(--dm-primary-light, rgba(59, 130, 246, 0.1));
10866
+ color: var(--dm-primary, #3b82f6);
10867
+ padding: 2px 8px;
10868
+ border-radius: var(--dm-radius-sm);
10869
+ font-size: var(--dm-font-size-xs);
10870
+ font-weight: 500;
10871
+ }
10872
+
10873
+ /* Assignee */
10874
+ .dm-progression-assignee {
10875
+ font-size: var(--dm-font-size-sm);
10876
+ color: var(--dm-text-tertiary);
10877
+ margin-top: var(--dm-space-2);
10878
+ font-style: italic;
10879
+ }
10880
+
10881
+ /* Current item highlight */
10882
+ .dm-progression-current .dm-progression-content {
10883
+ border-color: var(--dm-primary, #3b82f6);
10884
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1);
10885
+ }
10886
+
10887
+ /* Themes */
10888
+ .dm-progression-minimal .dm-progression-content {
10889
+ background: var(--dm-gray-50);
10890
+ border-color: transparent;
10891
+ box-shadow: none;
10892
+ }
10893
+
10894
+ .dm-progression-corporate .dm-progression-content {
10895
+ background: var(--dm-slate-50);
10896
+ border-color: var(--dm-slate-200);
10897
+ }
10898
+
10899
+ .dm-progression-modern .dm-progression-content {
10900
+ background: linear-gradient(135deg, var(--dm-surface, #fff) 0%, var(--dm-gray-50) 100%);
10901
+ border-color: var(--dm-border-color, #e0e0e0);
10902
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
10903
+ }
10904
+
10905
+ /* Dark theme support */
10906
+ [data-theme="dark"] .dm-progression-content {
10907
+ background: var(--dm-slate-800);
10908
+ border-color: var(--dm-slate-700);
10909
+ color: var(--dm-slate-100);
10910
+ }
10911
+
10912
+ [data-theme="dark"] .dm-progression-title {
10913
+ color: var(--dm-slate-100);
10914
+ }
10915
+
10916
+ [data-theme="dark"] .dm-progression-description {
10917
+ color: var(--dm-slate-300);
10918
+ }
10919
+
10920
+ [data-theme="dark"] .dm-progression-minimal .dm-progression-content {
10921
+ background: var(--dm-slate-900);
10922
+ border-color: transparent;
10923
+ }
10924
+
10925
+ [data-theme="dark"] .dm-progression-corporate .dm-progression-content {
10926
+ background: var(--dm-slate-800);
10927
+ border-color: var(--dm-slate-600);
10928
+ }
10929
+
10930
+ [data-theme="dark"] .dm-progression-modern .dm-progression-content {
10931
+ background: linear-gradient(135deg, var(--dm-slate-800) 0%, var(--dm-slate-900) 100%);
10932
+ }
10933
+
10934
+ [data-theme="dark"] .dm-progression-item-progress {
10935
+ background: var(--dm-slate-700);
10936
+ }
10937
+
10938
+ [data-theme="dark"] .dm-progression-progress {
10939
+ background: var(--dm-slate-800);
10940
+ border-color: var(--dm-slate-700);
10941
+ }
10942
+
10943
+ /* Desktop (≥769px) - Progression enhancements */
10944
+ @media (min-width: 769px) {
10945
+ .dm-progression-centered .dm-progression-item:nth-child(even) {
10946
+ flex-direction: row-reverse; /* Alternate direction on desktop */
10947
+ }
10948
+
10949
+ .dm-progression-horizontal {
10950
+ flex-direction: row; /* Horizontal on desktop */
10951
+ }
10952
+
10953
+ .dm-progression-horizontal .dm-progression-item {
10954
+ min-width: auto;
10955
+ margin-right: var(--dm-space-6);
10956
+ margin-bottom: 0;
10957
+ }
10958
+ }
10959
+
10246
10960
  /* ==============================================
10247
10961
  Cookie Consent Component
10248
10962
  ============================================== */
@@ -10269,14 +10983,16 @@ code {
10269
10983
 
10270
10984
  .dm-cookie-consent-bottom-left {
10271
10985
  bottom: 20px;
10272
- left: 20px;
10273
- max-width: 400px;
10986
+ left: 10px; /* Mobile default: minimal margins */
10987
+ right: 10px; /* Mobile: full width minus margins */
10988
+ max-width: none; /* Mobile: no width constraint */
10274
10989
  }
10275
10990
 
10276
10991
  .dm-cookie-consent-bottom-right {
10277
10992
  bottom: 20px;
10278
- right: 20px;
10279
- max-width: 400px;
10993
+ left: 10px; /* Mobile default: minimal margins */
10994
+ right: 10px; /* Mobile: full width minus margins */
10995
+ max-width: none; /* Mobile: no width constraint */
10280
10996
  }
10281
10997
 
10282
10998
  .dm-cookie-consent-center-modal {
@@ -10290,8 +11006,8 @@ code {
10290
11006
  /* Layout variants */
10291
11007
  .dm-cookie-consent-bar .dm-cookie-consent-content {
10292
11008
  display: flex;
10293
- align-items: center;
10294
- justify-content: space-between;
11009
+ flex-direction: column; /* Mobile default: vertical stacking */
11010
+ align-items: stretch;
10295
11011
  padding: 16px 20px;
10296
11012
  gap: 20px;
10297
11013
  }
@@ -10332,7 +11048,8 @@ code {
10332
11048
  /* Message styles */
10333
11049
  .dm-cookie-consent-message {
10334
11050
  flex: 1;
10335
- margin-right: 20px;
11051
+ margin-right: 0; /* Mobile default: no right margin */
11052
+ margin-bottom: 16px; /* Mobile default: bottom spacing */
10336
11053
  }
10337
11054
 
10338
11055
  .dm-cookie-consent-message a {
@@ -10347,6 +11064,7 @@ code {
10347
11064
  /* Button styles */
10348
11065
  .dm-cookie-consent-buttons {
10349
11066
  display: flex;
11067
+ flex-direction: column; /* Mobile default: vertical buttons */
10350
11068
  gap: 12px;
10351
11069
  flex-shrink: 0;
10352
11070
  }
@@ -10512,27 +11230,32 @@ code {
10512
11230
  gap: 12px;
10513
11231
  }
10514
11232
 
10515
- /* Responsive */
10516
- @media (max-width: 640px) {
11233
+ /* Desktop (≥641px) - Cookie Consent enhancements */
11234
+ @media (min-width: 641px) {
10517
11235
  .dm-cookie-consent-bar .dm-cookie-consent-content {
10518
- flex-direction: column;
10519
- align-items: stretch;
11236
+ flex-direction: row; /* Horizontal on desktop */
11237
+ align-items: center;
10520
11238
  }
10521
11239
 
10522
11240
  .dm-cookie-consent-message {
10523
- margin-right: 0;
10524
- margin-bottom: 16px;
11241
+ margin-right: 24px;
11242
+ margin-bottom: 0;
10525
11243
  }
10526
11244
 
10527
11245
  .dm-cookie-consent-buttons {
10528
- flex-direction: column;
11246
+ flex-direction: row; /* Horizontal buttons on desktop */
11247
+ }
11248
+
11249
+ .dm-cookie-consent-bottom-left {
11250
+ left: 20px;
11251
+ right: auto;
11252
+ max-width: 600px;
10529
11253
  }
10530
11254
 
10531
- .dm-cookie-consent-bottom-left,
10532
11255
  .dm-cookie-consent-bottom-right {
10533
- left: 10px;
10534
- right: 10px;
10535
- max-width: none;
11256
+ left: auto;
11257
+ right: 20px;
11258
+ max-width: 600px;
10536
11259
  }
10537
11260
  }
10538
11261
 
@@ -10543,11 +11266,11 @@ code {
10543
11266
  ============================================ */
10544
11267
 
10545
11268
  /*!
10546
- * Domma Themes v0.7.6-alpha
11269
+ * Domma Themes v0.9.2-alpha
10547
11270
  * Dynamic Object Manipulation & Modeling API
10548
11271
  * (c) 2026 Darryl Waterhouse & DCBW-IT
10549
- * Built: 2026-01-09T13:59:21.866Z
10550
- * Commit: 5527c59
11272
+ * Built: 2026-01-11T18:01:20.167Z
11273
+ * Commit: 136342c
10551
11274
  */
10552
11275
 
10553
11276
  /**