domma-js 0.7.6-alpha → 0.8.0-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,9 +1,9 @@
1
1
  /*!
2
- * Domma Elements CSS v0.7.5-alpha
2
+ * Domma Elements CSS v0.8.0-alpha
3
3
  * Dynamic Object Manipulation & Modeling API
4
4
  * (c) 2026 Darryl Waterhouse & DCBW-IT
5
- * Built: 2026-01-08T18:40:13.850Z
6
- * Commit: 61aa8b6
5
+ * Built: 2026-01-09T18:35:07.473Z
6
+ * Commit: 1a13022
7
7
  */
8
8
 
9
9
  /**
@@ -1815,6 +1815,13 @@ code {
1815
1815
  background: var(--dm-hover-bg, rgba(0, 0, 0, 0.05));
1816
1816
  }
1817
1817
 
1818
+ .navbar-dropdown-divider {
1819
+ height: 1px;
1820
+ margin: 0.5rem 0;
1821
+ background: var(--dm-border-color, rgba(0, 0, 0, 0.1));
1822
+ list-style: none;
1823
+ }
1824
+
1818
1825
  /* Dark navbar dropdown styles */
1819
1826
  .navbar-dark .navbar-dropdown-menu {
1820
1827
  background: var(--dm-gray-800);
@@ -1830,6 +1837,10 @@ code {
1830
1837
  color: var(--dm-white);
1831
1838
  }
1832
1839
 
1840
+ .navbar-dark .navbar-dropdown-divider {
1841
+ background: var(--dm-gray-700);
1842
+ }
1843
+
1833
1844
  /* Pill button styles (for Download button) */
1834
1845
  .pill {
1835
1846
  display: inline-block;
@@ -3076,47 +3087,120 @@ code {
3076
3087
  SIDEBAR
3077
3088
  ============================================ */
3078
3089
 
3090
+ /* Base Sidebar */
3079
3091
  .sidebar {
3080
- position: fixed;
3081
- bottom: 4px;
3082
- left: 2px;
3083
- width: 220px;
3084
- max-height: 50vh;
3085
- overflow-y: auto;
3092
+ position: relative;
3093
+ width: 250px;
3086
3094
  background: var(--dm-surface, #fff);
3087
- border: 1px solid var(--dm-border, #dee2e6);
3088
- border-radius: var(--dm-radius-lg);
3089
- box-shadow: var(--dm-shadow-lg);
3095
+ border-right: 1px solid var(--dm-border, #dee2e6);
3096
+ overflow-y: auto;
3097
+ overflow-x: hidden;
3098
+ transition: transform 0.3s ease;
3090
3099
  z-index: 100;
3091
3100
  }
3092
3101
 
3102
+ /* Fixed positioning */
3103
+ .sidebar-fixed {
3104
+ position: fixed;
3105
+ top: 0;
3106
+ left: 0;
3107
+ height: 100vh;
3108
+ }
3109
+
3110
+ .sidebar-fixed.sidebar-right {
3111
+ left: auto;
3112
+ right: 0;
3113
+ border-right: none;
3114
+ border-left: 1px solid var(--dm-border, #dee2e6);
3115
+ }
3116
+
3117
+ /* Position variants */
3118
+ .sidebar-left {
3119
+ left: 0;
3120
+ }
3121
+
3122
+ .sidebar-right {
3123
+ right: 0;
3124
+ left: auto;
3125
+ border-right: none;
3126
+ border-left: 1px solid var(--dm-border, #dee2e6);
3127
+ }
3128
+
3129
+ /* Header */
3093
3130
  .sidebar-header {
3094
- padding: var(--dm-space-3) var(--dm-space-3) var(--dm-space-2);
3095
- font-size: var(--dm-font-size-xs);
3096
- font-weight: 600;
3097
- text-transform: uppercase;
3098
- letter-spacing: 0.05em;
3099
- color: var(--dm-gray-500);
3131
+ display: flex;
3132
+ align-items: center;
3133
+ gap: var(--dm-space-3, 0.75rem);
3134
+ padding: var(--dm-space-4, 1rem) var(--dm-space-3, 0.75rem);
3100
3135
  border-bottom: 1px solid var(--dm-border, #dee2e6);
3136
+ background: var(--dm-surface-raised, #f8f9fa);
3101
3137
  }
3102
3138
 
3139
+ .sidebar-header-icon {
3140
+ flex-shrink: 0;
3141
+ display: inline-flex;
3142
+ align-items: center;
3143
+ justify-content: center;
3144
+ }
3145
+
3146
+ .sidebar-header-title {
3147
+ flex: 1;
3148
+ margin: 0;
3149
+ font-size: var(--dm-font-size-lg, 1.125rem);
3150
+ font-weight: 600;
3151
+ color: var(--dm-text, #212529);
3152
+ }
3153
+
3154
+ .sidebar-toggle-btn {
3155
+ display: none; /* Shown on mobile */
3156
+ flex-shrink: 0;
3157
+ width: 32px;
3158
+ height: 32px;
3159
+ padding: 0;
3160
+ border: none;
3161
+ background: transparent;
3162
+ color: var(--dm-text-muted, #6c757d);
3163
+ border-radius: var(--dm-radius-md, 0.375rem);
3164
+ cursor: pointer;
3165
+ transition: all 0.2s ease;
3166
+ }
3167
+
3168
+ .sidebar-toggle-btn:hover {
3169
+ background: var(--dm-gray-200, #e9ecef);
3170
+ color: var(--dm-text, #212529);
3171
+ }
3172
+
3173
+ /* Navigation */
3103
3174
  .sidebar-nav {
3175
+ padding: var(--dm-space-2, 0.5rem) 0;
3176
+ }
3177
+
3178
+ .sidebar-menu {
3104
3179
  list-style: none;
3105
3180
  margin: 0;
3106
- padding: var(--dm-space-2);
3181
+ padding: 0;
3182
+ }
3183
+
3184
+ .sidebar-item {
3185
+ position: relative;
3107
3186
  }
3108
3187
 
3188
+ /* Navigation Links */
3109
3189
  .sidebar-link {
3110
- display: block;
3111
- padding: var(--dm-space-2) var(--dm-space-3);
3190
+ display: flex;
3191
+ align-items: center;
3192
+ gap: var(--dm-space-3, 0.75rem);
3193
+ padding: var(--dm-space-2, 0.5rem) var(--dm-space-4, 1rem);
3112
3194
  color: var(--dm-text-muted, #6c757d);
3113
3195
  text-decoration: none;
3114
- font-size: var(--dm-font-size-sm);
3115
- border-radius: var(--dm-radius-md);
3116
- transition: all 0.15s ease;
3117
- white-space: nowrap;
3118
- overflow: hidden;
3119
- text-overflow: ellipsis;
3196
+ font-size: var(--dm-font-size-sm, 0.875rem);
3197
+ transition: all 0.2s ease;
3198
+ cursor: pointer;
3199
+ border: none;
3200
+ background: transparent;
3201
+ width: 100%;
3202
+ text-align: left;
3203
+ border-left: 3px solid transparent;
3120
3204
  }
3121
3205
 
3122
3206
  .sidebar-link:hover {
@@ -3126,83 +3210,237 @@ code {
3126
3210
  }
3127
3211
 
3128
3212
  .sidebar-link.active {
3129
- color: var(--dm-primary);
3130
- background: var(--dm-primary-bg, rgba(100, 149, 237, 0.1));
3213
+ color: var(--dm-primary, #007bff);
3214
+ background: var(--dm-primary-bg, rgba(0, 123, 255, 0.1));
3131
3215
  font-weight: 500;
3216
+ border-left-color: var(--dm-primary, #007bff);
3132
3217
  }
3133
3218
 
3134
- .showcase-content {
3135
- width: 100%;
3219
+ /* Link elements */
3220
+ .sidebar-icon {
3221
+ flex-shrink: 0;
3222
+ display: inline-flex;
3223
+ align-items: center;
3224
+ justify-content: center;
3136
3225
  }
3137
3226
 
3138
- /* Add left margin on desktop to account for fixed sidebar */
3139
- @media (min-width: 1025px) {
3140
- .showcase-content {
3141
- margin-left: 240px;
3142
- width: calc(100% - 240px);
3143
- }
3227
+ .sidebar-text {
3228
+ flex: 1;
3229
+ white-space: nowrap;
3230
+ overflow: hidden;
3231
+ text-overflow: ellipsis;
3144
3232
  }
3145
3233
 
3146
- /* Sidebar toggle button (mobile) */
3147
-
3148
- .sidebar-toggle {
3149
- display: none;
3150
- position: fixed;
3151
- bottom: var(--dm-space-4);
3152
- left: var(--dm-space-4);
3153
- width: 48px;
3154
- height: 48px;
3155
- border-radius: 50%;
3156
- background: var(--dm-primary);
3157
- color: white;
3158
- border: none;
3159
- cursor: pointer;
3160
- z-index: 1001;
3161
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
3162
- transition: transform 0.2s ease, box-shadow 0.2s ease;
3234
+ .sidebar-badge {
3235
+ flex-shrink: 0;
3236
+ display: inline-flex;
3163
3237
  align-items: center;
3164
3238
  justify-content: center;
3239
+ min-width: 20px;
3240
+ height: 20px;
3241
+ padding: 0 var(--dm-space-2, 0.5rem);
3242
+ font-size: var(--dm-font-size-xs, 0.75rem);
3243
+ font-weight: 600;
3244
+ line-height: 1;
3245
+ color: var(--dm-white, #fff);
3246
+ background: var(--dm-primary, #007bff);
3247
+ border-radius: 10px;
3165
3248
  }
3166
3249
 
3167
- .sidebar-toggle:hover {
3168
- transform: scale(1.05);
3169
- box-shadow: 0 6px 16px rgba(0, 0, 0, 0.25);
3250
+ /* Submenu toggle (has children) */
3251
+ .sidebar-link-toggle {
3252
+ position: relative;
3170
3253
  }
3171
3254
 
3172
- .sidebar-toggle svg {
3173
- width: 24px;
3174
- height: 24px;
3255
+ .sidebar-chevron {
3256
+ flex-shrink: 0;
3257
+ margin-left: auto;
3258
+ transition: transform 0.2s ease;
3175
3259
  }
3176
3260
 
3177
- /* Sidebar overlay (mobile) */
3261
+ .sidebar-item.open > .sidebar-link-toggle .sidebar-chevron {
3262
+ transform: rotate(90deg);
3263
+ }
3178
3264
 
3179
- .sidebar-overlay {
3265
+ /* Submenu container */
3266
+ .sidebar-submenu {
3180
3267
  display: none;
3268
+ overflow: hidden;
3269
+ }
3270
+
3271
+ .sidebar-item.open > .sidebar-submenu {
3272
+ display: block;
3273
+ }
3274
+
3275
+ .sidebar-submenu .sidebar-menu {
3276
+ padding-left: var(--dm-space-4, 1rem);
3277
+ }
3278
+
3279
+ .sidebar-submenu .sidebar-link {
3280
+ padding-left: calc(var(--dm-space-4, 1rem) + var(--dm-space-2, 0.5rem));
3281
+ font-size: var(--dm-font-size-xs, 0.75rem);
3282
+ }
3283
+
3284
+ /* Nested depth indentation */
3285
+ .sidebar-menu[data-depth="1"] .sidebar-link {
3286
+ padding-left: calc(var(--dm-space-4, 1rem) * 2);
3287
+ }
3288
+
3289
+ .sidebar-menu[data-depth="2"] .sidebar-link {
3290
+ padding-left: calc(var(--dm-space-4, 1rem) * 3);
3291
+ }
3292
+
3293
+ .sidebar-menu[data-depth="3"] .sidebar-link {
3294
+ padding-left: calc(var(--dm-space-4, 1rem) * 4);
3295
+ }
3296
+
3297
+ .sidebar-menu[data-depth="4"] .sidebar-link {
3298
+ padding-left: calc(var(--dm-space-4, 1rem) * 5);
3299
+ }
3300
+
3301
+ /* Divider */
3302
+ .sidebar-divider {
3303
+ height: 1px;
3304
+ margin: var(--dm-space-2, 0.5rem) var(--dm-space-4, 1rem);
3305
+ background: var(--dm-border, #dee2e6);
3306
+ list-style: none;
3307
+ }
3308
+
3309
+ /* Section Heading */
3310
+ .sidebar-heading {
3311
+ padding: var(--dm-space-3, 0.75rem) var(--dm-space-4, 1rem) var(--dm-space-2, 0.5rem);
3312
+ font-size: var(--dm-font-size-xs, 0.75rem);
3313
+ font-weight: 600;
3314
+ text-transform: uppercase;
3315
+ letter-spacing: 0.05em;
3316
+ color: var(--dm-gray-500, #6c757d);
3317
+ list-style: none;
3318
+ }
3319
+
3320
+ /* Footer */
3321
+ .sidebar-footer {
3322
+ padding: var(--dm-space-3, 0.75rem) var(--dm-space-4, 1rem);
3323
+ border-top: 1px solid var(--dm-border, #dee2e6);
3324
+ background: var(--dm-surface-raised, #f8f9fa);
3325
+ }
3326
+
3327
+ .sidebar-footer-text {
3328
+ margin: 0;
3329
+ font-size: var(--dm-font-size-xs, 0.75rem);
3330
+ color: var(--dm-text-muted, #6c757d);
3331
+ }
3332
+
3333
+ /* Overlay (mobile) */
3334
+ .sidebar-overlay {
3181
3335
  position: fixed;
3182
3336
  top: 0;
3183
3337
  left: 0;
3184
3338
  right: 0;
3185
3339
  bottom: 0;
3186
3340
  background: rgba(0, 0, 0, 0.5);
3187
- z-index: 999;
3341
+ z-index: 99;
3188
3342
  opacity: 0;
3189
- transition: opacity 0.3s ease;
3343
+ visibility: hidden;
3344
+ transition: opacity 0.3s ease, visibility 0.3s ease;
3190
3345
  }
3191
3346
 
3192
3347
  .sidebar-overlay.active {
3193
3348
  opacity: 1;
3349
+ visibility: visible;
3350
+ }
3351
+
3352
+ /* Theme Variants */
3353
+
3354
+ /* Dark variant */
3355
+ .sidebar-dark {
3356
+ background: var(--dm-gray-900, #212529);
3357
+ border-color: var(--dm-gray-700, #495057);
3358
+ }
3359
+
3360
+ .sidebar-dark .sidebar-header {
3361
+ background: var(--dm-gray-800, #343a40);
3362
+ border-color: var(--dm-gray-700, #495057);
3363
+ }
3364
+
3365
+ .sidebar-dark .sidebar-header-title {
3366
+ color: var(--dm-white, #fff);
3367
+ }
3368
+
3369
+ .sidebar-dark .sidebar-link {
3370
+ color: var(--dm-gray-400, #adb5bd);
3371
+ border-left-color: transparent;
3372
+ }
3373
+
3374
+ .sidebar-dark .sidebar-link:hover {
3375
+ color: var(--dm-white, #fff);
3376
+ background: var(--dm-gray-800, #343a40);
3377
+ }
3378
+
3379
+ .sidebar-dark .sidebar-link.active {
3380
+ color: var(--dm-primary-light, #66b2ff);
3381
+ background: rgba(102, 178, 255, 0.15);
3382
+ border-left-color: var(--dm-primary-light, #66b2ff);
3383
+ }
3384
+
3385
+ .sidebar-dark .sidebar-heading {
3386
+ color: var(--dm-gray-500, #6c757d);
3387
+ }
3388
+
3389
+ .sidebar-dark .sidebar-divider {
3390
+ background: var(--dm-gray-700, #495057);
3391
+ }
3392
+
3393
+ .sidebar-dark .sidebar-footer {
3394
+ background: var(--dm-gray-800, #343a40);
3395
+ border-color: var(--dm-gray-700, #495057);
3396
+ }
3397
+
3398
+ .sidebar-dark .sidebar-footer-text {
3399
+ color: var(--dm-gray-500, #6c757d);
3400
+ }
3401
+
3402
+ /* Light variant (default, explicit) */
3403
+ .sidebar-light {
3404
+ background: var(--dm-white, #fff);
3405
+ border-color: var(--dm-border, #dee2e6);
3194
3406
  }
3195
3407
 
3196
3408
  /* Mobile/Tablet: Slide-out drawer */
3197
3409
  @media (max-width: 768px) {
3198
- .sidebar {
3199
- display: none;
3200
- position: fixed;
3201
- top: 0;
3202
- left: 0;
3203
- bottom: 0;
3204
- width: 260px;
3205
- max-height: 100vh;
3410
+ .sidebar-fixed {
3411
+ transform: translateX(-100%);
3412
+ box-shadow: none;
3413
+ }
3414
+
3415
+ .sidebar-fixed.sidebar-right {
3416
+ transform: translateX(100%);
3417
+ }
3418
+
3419
+ .sidebar-fixed.open {
3420
+ transform: translateX(0);
3421
+ box-shadow: var(--dm-shadow-xl, 0 10px 40px rgba(0,0,0,0.2));
3422
+ }
3423
+
3424
+ .sidebar-toggle-btn {
3425
+ display: flex;
3426
+ align-items: center;
3427
+ justify-content: center;
3428
+ }
3429
+
3430
+ .sidebar-overlay {
3431
+ display: block;
3432
+ }
3433
+ }
3434
+
3435
+ /* Showcase-specific overrides (for backward compatibility) */
3436
+ .showcase-content {
3437
+ width: 100%;
3438
+ }
3439
+
3440
+ @media (min-width: 1025px) {
3441
+ .showcase-content {
3442
+ margin-left: 240px;
3443
+ width: calc(100% - 240px);
3206
3444
  }
3207
3445
  }
3208
3446
 
@@ -3378,12 +3616,336 @@ code {
3378
3616
  z-index: 10;
3379
3617
  }
3380
3618
 
3381
- [class*="-dark"].syntax-language-badge {
3382
- background: rgba(255, 255, 255, 0.1);
3383
- color: rgba(255, 255, 255, 0.8);
3384
- }
3619
+ [class*="-dark"].syntax-language-badge {
3620
+ background: rgba(255, 255, 255, 0.1);
3621
+ color: rgba(255, 255, 255, 0.8);
3622
+ }
3623
+
3624
+
3625
+
3626
+ /* ============================================
3627
+ FOOTER
3628
+ ============================================ */
3629
+
3630
+ /* Base Footer */
3631
+ .footer {
3632
+ position: relative;
3633
+ width: 100%;
3634
+ background: var(--dm-surface, #fff);
3635
+ border-top: 1px solid var(--dm-border, #dee2e6);
3636
+ font-size: var(--dm-font-size-sm, 0.875rem);
3637
+ }
3638
+
3639
+ /* Position variants */
3640
+ .footer-static {
3641
+ position: static;
3642
+ }
3643
+
3644
+ .footer-fixed {
3645
+ position: fixed;
3646
+ bottom: 0;
3647
+ left: 0;
3648
+ right: 0;
3649
+ z-index: 100;
3650
+ }
3651
+
3652
+ .footer-sticky {
3653
+ position: sticky;
3654
+ bottom: 0;
3655
+ z-index: 100;
3656
+ }
3657
+
3658
+ /* Container */
3659
+ .footer-container {
3660
+ max-width: var(--dm-container-lg, 1200px);
3661
+ margin: 0 auto;
3662
+ padding: var(--dm-space-6, 1.5rem) var(--dm-space-4, 1rem);
3663
+ }
3664
+
3665
+ /* ========== Simple Layout ========== */
3666
+
3667
+ .footer-simple .footer-simple-content {
3668
+ display: flex;
3669
+ flex-wrap: wrap;
3670
+ align-items: center;
3671
+ justify-content: space-between;
3672
+ gap: var(--dm-space-4, 1rem);
3673
+ }
3674
+
3675
+ .footer-brand {
3676
+ display: flex;
3677
+ align-items: center;
3678
+ gap: var(--dm-space-3, 0.75rem);
3679
+ }
3680
+
3681
+ .footer-brand-link {
3682
+ display: flex;
3683
+ align-items: center;
3684
+ gap: var(--dm-space-3, 0.75rem);
3685
+ text-decoration: none;
3686
+ color: inherit;
3687
+ }
3688
+
3689
+ .footer-logo {
3690
+ height: 32px;
3691
+ width: auto;
3692
+ }
3693
+
3694
+ .footer-brand-text {
3695
+ font-weight: 600;
3696
+ color: var(--dm-text, #212529);
3697
+ }
3698
+
3699
+ .footer-nav {
3700
+ display: flex;
3701
+ flex-wrap: wrap;
3702
+ gap: var(--dm-space-4, 1rem);
3703
+ align-items: center;
3704
+ }
3705
+
3706
+ .footer-link {
3707
+ color: var(--dm-text-muted, #6c757d);
3708
+ text-decoration: none;
3709
+ transition: color 0.2s ease;
3710
+ }
3711
+
3712
+ .footer-link:hover {
3713
+ color: var(--dm-primary, #007bff);
3714
+ text-decoration: none;
3715
+ }
3716
+
3717
+ .footer-social {
3718
+ display: flex;
3719
+ gap: var(--dm-space-3, 0.75rem);
3720
+ align-items: center;
3721
+ }
3722
+
3723
+ .footer-social-link {
3724
+ display: inline-flex;
3725
+ align-items: center;
3726
+ justify-content: center;
3727
+ width: 36px;
3728
+ height: 36px;
3729
+ border-radius: 50%;
3730
+ color: var(--dm-text-muted, #6c757d);
3731
+ background: transparent;
3732
+ text-decoration: none;
3733
+ transition: all 0.2s ease;
3734
+ }
3735
+
3736
+ .footer-social-link:hover {
3737
+ color: var(--dm-primary, #007bff);
3738
+ background: var(--dm-gray-100, #f8f9fa);
3739
+ }
3740
+
3741
+ .footer-copyright {
3742
+ width: 100%;
3743
+ padding-top: var(--dm-space-4, 1rem);
3744
+ margin-top: var(--dm-space-4, 1rem);
3745
+ border-top: 1px solid var(--dm-border, #dee2e6);
3746
+ text-align: center;
3747
+ color: var(--dm-text-muted, #6c757d);
3748
+ }
3749
+
3750
+ /* ========== Columns Layout ========== */
3751
+
3752
+ .footer-columns .footer-columns-content {
3753
+ display: grid;
3754
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
3755
+ gap: var(--dm-space-6, 1.5rem);
3756
+ padding-bottom: var(--dm-space-4, 1rem);
3757
+ margin-bottom: var(--dm-space-4, 1rem);
3758
+ border-bottom: 1px solid var(--dm-border, #dee2e6);
3759
+ }
3760
+
3761
+ .footer-column {
3762
+ min-width: 0;
3763
+ }
3764
+
3765
+ .footer-column-brand {
3766
+ grid-column: span 1;
3767
+ }
3768
+
3769
+ .footer-column-brand .footer-logo {
3770
+ margin-bottom: var(--dm-space-3, 0.75rem);
3771
+ }
3772
+
3773
+ .footer-column-brand .footer-brand-text {
3774
+ display: block;
3775
+ margin: 0;
3776
+ color: var(--dm-text-muted, #6c757d);
3777
+ font-weight: 400;
3778
+ line-height: 1.6;
3779
+ }
3780
+
3781
+ .footer-column-title {
3782
+ margin: 0 0 var(--dm-space-3, 0.75rem);
3783
+ font-size: var(--dm-font-size-base, 1rem);
3784
+ font-weight: 600;
3785
+ color: var(--dm-text, #212529);
3786
+ }
3787
+
3788
+ .footer-column-links {
3789
+ list-style: none;
3790
+ margin: 0;
3791
+ padding: 0;
3792
+ }
3793
+
3794
+ .footer-column-links li {
3795
+ margin-bottom: var(--dm-space-2, 0.5rem);
3796
+ }
3797
+
3798
+ .footer-column-link {
3799
+ color: var(--dm-text-muted, #6c757d);
3800
+ text-decoration: none;
3801
+ transition: color 0.2s ease;
3802
+ display: inline-block;
3803
+ }
3804
+
3805
+ .footer-column-link:hover {
3806
+ color: var(--dm-primary, #007bff);
3807
+ text-decoration: none;
3808
+ }
3809
+
3810
+ .footer-columns .footer-bottom {
3811
+ display: flex;
3812
+ flex-wrap: wrap;
3813
+ align-items: center;
3814
+ justify-content: space-between;
3815
+ gap: var(--dm-space-4, 1rem);
3816
+ }
3817
+
3818
+ .footer-columns .footer-copyright {
3819
+ width: auto;
3820
+ padding: 0;
3821
+ margin: 0;
3822
+ border: none;
3823
+ text-align: left;
3824
+ }
3825
+
3826
+ /* ========== Minimal Layout ========== */
3827
+
3828
+ .footer-minimal .footer-minimal-content {
3829
+ display: flex;
3830
+ flex-wrap: wrap;
3831
+ align-items: center;
3832
+ justify-content: center;
3833
+ gap: var(--dm-space-4, 1rem);
3834
+ text-align: center;
3835
+ }
3836
+
3837
+ .footer-minimal .footer-copyright {
3838
+ width: 100%;
3839
+ padding: 0;
3840
+ margin: 0;
3841
+ border: none;
3842
+ }
3843
+
3844
+ .footer-minimal .footer-social {
3845
+ width: 100%;
3846
+ justify-content: center;
3847
+ margin-top: var(--dm-space-3, 0.75rem);
3848
+ }
3849
+
3850
+ /* ========== Theme Variants ========== */
3851
+
3852
+ /* Dark variant */
3853
+ .footer-dark {
3854
+ background: var(--dm-gray-900, #212529);
3855
+ border-color: var(--dm-gray-700, #495057);
3856
+ }
3857
+
3858
+ .footer-dark .footer-brand-text {
3859
+ color: var(--dm-white, #fff);
3860
+ }
3861
+
3862
+ .footer-dark .footer-link {
3863
+ color: var(--dm-gray-400, #adb5bd);
3864
+ }
3865
+
3866
+ .footer-dark .footer-link:hover {
3867
+ color: var(--dm-primary-light, #66b2ff);
3868
+ }
3869
+
3870
+ .footer-dark .footer-column-title {
3871
+ color: var(--dm-white, #fff);
3872
+ }
3873
+
3874
+ .footer-dark .footer-column-link {
3875
+ color: var(--dm-gray-400, #adb5bd);
3876
+ }
3877
+
3878
+ .footer-dark .footer-column-link:hover {
3879
+ color: var(--dm-primary-light, #66b2ff);
3880
+ }
3881
+
3882
+ .footer-dark .footer-copyright {
3883
+ color: var(--dm-gray-500, #6c757d);
3884
+ border-color: var(--dm-gray-700, #495057);
3885
+ }
3886
+
3887
+ .footer-dark .footer-social-link {
3888
+ color: var(--dm-gray-400, #adb5bd);
3889
+ }
3890
+
3891
+ .footer-dark .footer-social-link:hover {
3892
+ color: var(--dm-primary-light, #66b2ff);
3893
+ background: var(--dm-gray-800, #343a40);
3894
+ }
3895
+
3896
+ .footer-dark .footer-columns-content {
3897
+ border-color: var(--dm-gray-700, #495057);
3898
+ }
3899
+
3900
+ /* Light variant (default) */
3901
+ .footer-light {
3902
+ background: var(--dm-white, #fff);
3903
+ border-color: var(--dm-border, #dee2e6);
3904
+ }
3905
+
3906
+ /* Transparent variant */
3907
+ .footer-transparent {
3908
+ background: transparent;
3909
+ border-color: transparent;
3910
+ }
3911
+
3912
+ /* ========== Responsive ========== */
3913
+
3914
+ @media (max-width: 768px) {
3915
+ .footer-container {
3916
+ padding: var(--dm-space-4, 1rem);
3917
+ }
3918
+
3919
+ .footer-simple .footer-simple-content {
3920
+ flex-direction: column;
3921
+ align-items: flex-start;
3922
+ }
3923
+
3924
+ .footer-nav {
3925
+ flex-direction: column;
3926
+ align-items: flex-start;
3927
+ gap: var(--dm-space-2, 0.5rem);
3928
+ }
3929
+
3930
+ .footer-columns .footer-columns-content {
3931
+ grid-template-columns: 1fr;
3932
+ gap: var(--dm-space-4, 1rem);
3933
+ }
3934
+
3935
+ .footer-columns .footer-bottom {
3936
+ flex-direction: column;
3937
+ align-items: flex-start;
3938
+ }
3385
3939
 
3940
+ .footer-columns .footer-copyright {
3941
+ width: 100%;
3942
+ text-align: left;
3943
+ }
3386
3944
 
3945
+ .footer-social {
3946
+ width: 100%;
3947
+ }
3948
+ }
3387
3949
  /* ============================================
3388
3950
  BACKGROUND UTILITIES
3389
3951
  ============================================ */
@@ -5074,6 +5636,384 @@ code {
5074
5636
  border-color: var(--dm-slate-600);
5075
5637
  }
5076
5638
 
5639
+ /* ==============================================
5640
+ Progression Component (Timeline + Roadmap)
5641
+ ============================================== */
5642
+
5643
+ /* Base Progression styles */
5644
+ .dm-progression {
5645
+ width: 100%;
5646
+ position: relative;
5647
+ }
5648
+
5649
+ .dm-progression-item {
5650
+ display: flex;
5651
+ gap: var(--dm-space-4);
5652
+ position: relative;
5653
+ margin-bottom: var(--dm-space-6);
5654
+ }
5655
+
5656
+ .dm-progression-marker {
5657
+ flex-shrink: 0;
5658
+ display: flex;
5659
+ align-items: center;
5660
+ justify-content: center;
5661
+ font-weight: 600;
5662
+ font-size: var(--dm-font-size-sm);
5663
+ z-index: 2;
5664
+ }
5665
+
5666
+ .dm-progression-content {
5667
+ flex-grow: 1;
5668
+ background: var(--dm-surface, #fff);
5669
+ border: 1px solid var(--dm-border-color, #e0e0e0);
5670
+ border-radius: var(--dm-radius-md);
5671
+ padding: var(--dm-space-4);
5672
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.06);
5673
+ transition: all 0.2s ease;
5674
+ }
5675
+
5676
+ .dm-progression-title {
5677
+ margin: 0 0 var(--dm-space-2);
5678
+ font-size: var(--dm-font-size-lg);
5679
+ font-weight: 600;
5680
+ color: var(--dm-text-primary);
5681
+ }
5682
+
5683
+ .dm-progression-description {
5684
+ margin: 0;
5685
+ font-size: var(--dm-font-size-base);
5686
+ color: var(--dm-text-secondary);
5687
+ line-height: 1.6;
5688
+ }
5689
+
5690
+ /* Vertical layout (default) */
5691
+ .dm-progression-vertical .dm-progression-item::before {
5692
+ content: '';
5693
+ position: absolute;
5694
+ left: 2rem;
5695
+ top: 3rem;
5696
+ bottom: -1.5rem;
5697
+ width: 2px;
5698
+ background: var(--dm-border-color, #e0e0e0);
5699
+ z-index: 1;
5700
+ }
5701
+
5702
+ .dm-progression-vertical .dm-progression-item:last-child::before {
5703
+ display: none;
5704
+ }
5705
+
5706
+ /* Centered layout */
5707
+ .dm-progression-centered {
5708
+ max-width: 1200px;
5709
+ margin: 0 auto;
5710
+ }
5711
+
5712
+ .dm-progression-centered .dm-progression-item {
5713
+ width: 100%;
5714
+ }
5715
+
5716
+ .dm-progression-centered .dm-progression-item:nth-child(odd) {
5717
+ flex-direction: row;
5718
+ }
5719
+
5720
+ .dm-progression-centered .dm-progression-item:nth-child(even) {
5721
+ flex-direction: row-reverse;
5722
+ }
5723
+
5724
+ /* Horizontal layout */
5725
+ .dm-progression-horizontal {
5726
+ display: flex;
5727
+ overflow-x: auto;
5728
+ padding-bottom: var(--dm-space-4);
5729
+ }
5730
+
5731
+ .dm-progression-horizontal .dm-progression-item {
5732
+ flex-direction: column;
5733
+ min-width: 250px;
5734
+ margin-right: var(--dm-space-4);
5735
+ margin-bottom: 0;
5736
+ }
5737
+
5738
+ /* Progress bar (Roadmap mode) */
5739
+ .dm-progression-progress {
5740
+ margin-bottom: var(--dm-space-6);
5741
+ padding: var(--dm-space-4);
5742
+ background: var(--dm-surface, #fff);
5743
+ border-radius: var(--dm-radius-md);
5744
+ border: 1px solid var(--dm-border-color, #e0e0e0);
5745
+ }
5746
+
5747
+ .dm-progression-progress-bar {
5748
+ height: 8px;
5749
+ background: linear-gradient(90deg, var(--dm-success, #22c55e), var(--dm-primary, #3b82f6));
5750
+ border-radius: var(--dm-radius-full);
5751
+ transition: width 0.6s ease;
5752
+ margin-bottom: var(--dm-space-2);
5753
+ }
5754
+
5755
+ .dm-progression-progress-text {
5756
+ font-size: var(--dm-font-size-sm);
5757
+ color: var(--dm-text-secondary);
5758
+ font-weight: 500;
5759
+ }
5760
+
5761
+ /* Roadmap-specific styles */
5762
+ .dm-progression-status-marker {
5763
+ width: 40px;
5764
+ height: 40px;
5765
+ border-radius: 50%;
5766
+ position: relative;
5767
+ }
5768
+
5769
+ .dm-progression-status-dot {
5770
+ width: 16px;
5771
+ height: 16px;
5772
+ border-radius: 50%;
5773
+ display: block;
5774
+ }
5775
+
5776
+ .dm-progression-status-icon {
5777
+ font-size: 20px;
5778
+ }
5779
+
5780
+ /* Status colours */
5781
+ .dm-progression-status-planned .dm-progression-status-marker {
5782
+ background: var(--dm-gray-100);
5783
+ border: 2px solid var(--dm-gray-400);
5784
+ }
5785
+
5786
+ .dm-progression-status-planned .dm-progression-status-dot {
5787
+ background: var(--dm-gray-400);
5788
+ }
5789
+
5790
+ .dm-progression-status-in-progress .dm-progression-status-marker {
5791
+ background: var(--dm-primary-light, rgba(59, 130, 246, 0.1));
5792
+ border: 2px solid var(--dm-primary, #3b82f6);
5793
+ position: relative;
5794
+ }
5795
+
5796
+ .dm-progression-status-in-progress .dm-progression-status-marker::after {
5797
+ content: '';
5798
+ position: absolute;
5799
+ inset: -4px;
5800
+ border: 2px solid var(--dm-primary, #3b82f6);
5801
+ border-radius: 50%;
5802
+ animation: progressPulse 2s infinite;
5803
+ }
5804
+
5805
+ @keyframes progressPulse {
5806
+ 0%, 100% {
5807
+ opacity: 0.6;
5808
+ transform: scale(1);
5809
+ }
5810
+ 50% {
5811
+ opacity: 0;
5812
+ transform: scale(1.3);
5813
+ }
5814
+ }
5815
+
5816
+ .dm-progression-status-in-progress .dm-progression-status-dot {
5817
+ background: var(--dm-primary, #3b82f6);
5818
+ }
5819
+
5820
+ .dm-progression-status-completed .dm-progression-status-marker {
5821
+ background: var(--dm-success-light, rgba(34, 197, 94, 0.1));
5822
+ border: 2px solid var(--dm-success, #22c55e);
5823
+ }
5824
+
5825
+ .dm-progression-status-completed .dm-progression-status-dot {
5826
+ background: var(--dm-success, #22c55e);
5827
+ }
5828
+
5829
+ .dm-progression-status-blocked .dm-progression-status-marker {
5830
+ background: var(--dm-danger-light, rgba(239, 68, 68, 0.1));
5831
+ border: 2px solid var(--dm-danger, #ef4444);
5832
+ }
5833
+
5834
+ .dm-progression-status-blocked .dm-progression-status-dot {
5835
+ background: var(--dm-danger, #ef4444);
5836
+ }
5837
+
5838
+ .dm-progression-status-cancelled .dm-progression-status-marker {
5839
+ background: var(--dm-gray-100);
5840
+ border: 2px solid var(--dm-gray-500);
5841
+ opacity: 0.6;
5842
+ }
5843
+
5844
+ .dm-progression-status-cancelled .dm-progression-status-dot {
5845
+ background: var(--dm-gray-500);
5846
+ }
5847
+
5848
+ /* Date/phase display */
5849
+ .dm-progression-date {
5850
+ font-size: var(--dm-font-size-sm);
5851
+ color: var(--dm-text-tertiary);
5852
+ font-weight: 500;
5853
+ margin-bottom: var(--dm-space-2);
5854
+ text-transform: uppercase;
5855
+ letter-spacing: 0.05em;
5856
+ }
5857
+
5858
+ /* Item progress bar */
5859
+ .dm-progression-item-progress {
5860
+ height: 6px;
5861
+ background: var(--dm-gray-200);
5862
+ border-radius: var(--dm-radius-full);
5863
+ overflow: hidden;
5864
+ margin-top: var(--dm-space-3);
5865
+ }
5866
+
5867
+ .dm-progression-item-progress-bar {
5868
+ height: 100%;
5869
+ background: var(--dm-primary, #3b82f6);
5870
+ border-radius: var(--dm-radius-full);
5871
+ transition: width 0.3s ease;
5872
+ }
5873
+
5874
+ .dm-progression-item-progress-text {
5875
+ font-size: var(--dm-font-size-xs);
5876
+ color: var(--dm-text-tertiary);
5877
+ margin-top: var(--dm-space-1);
5878
+ }
5879
+
5880
+ /* Priority badges */
5881
+ .dm-progression-priority {
5882
+ display: inline-flex;
5883
+ align-items: center;
5884
+ padding: 2px 8px;
5885
+ border-radius: var(--dm-radius-full);
5886
+ font-size: var(--dm-font-size-xs);
5887
+ font-weight: 600;
5888
+ text-transform: uppercase;
5889
+ letter-spacing: 0.05em;
5890
+ margin-top: var(--dm-space-2);
5891
+ }
5892
+
5893
+ .dm-progression-priority-low {
5894
+ background: var(--dm-gray-200);
5895
+ color: var(--dm-gray-700);
5896
+ }
5897
+
5898
+ .dm-progression-priority-medium {
5899
+ background: var(--dm-info-light, rgba(59, 130, 246, 0.1));
5900
+ color: var(--dm-info, #3b82f6);
5901
+ }
5902
+
5903
+ .dm-progression-priority-high {
5904
+ background: var(--dm-warning-light, rgba(245, 158, 11, 0.1));
5905
+ color: var(--dm-warning, #f59e0b);
5906
+ }
5907
+
5908
+ .dm-progression-priority-critical {
5909
+ background: var(--dm-danger-light, rgba(239, 68, 68, 0.1));
5910
+ color: var(--dm-danger, #ef4444);
5911
+ }
5912
+
5913
+ /* Tags */
5914
+ .dm-progression-tags {
5915
+ display: flex;
5916
+ flex-wrap: wrap;
5917
+ gap: var(--dm-space-2);
5918
+ margin-top: var(--dm-space-3);
5919
+ }
5920
+
5921
+ .dm-progression-tag {
5922
+ background: var(--dm-primary-light, rgba(59, 130, 246, 0.1));
5923
+ color: var(--dm-primary, #3b82f6);
5924
+ padding: 2px 8px;
5925
+ border-radius: var(--dm-radius-sm);
5926
+ font-size: var(--dm-font-size-xs);
5927
+ font-weight: 500;
5928
+ }
5929
+
5930
+ /* Assignee */
5931
+ .dm-progression-assignee {
5932
+ font-size: var(--dm-font-size-sm);
5933
+ color: var(--dm-text-tertiary);
5934
+ margin-top: var(--dm-space-2);
5935
+ font-style: italic;
5936
+ }
5937
+
5938
+ /* Current item highlight */
5939
+ .dm-progression-current .dm-progression-content {
5940
+ border-color: var(--dm-primary, #3b82f6);
5941
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1);
5942
+ }
5943
+
5944
+ /* Themes */
5945
+ .dm-progression-minimal .dm-progression-content {
5946
+ background: var(--dm-gray-50);
5947
+ border-color: transparent;
5948
+ box-shadow: none;
5949
+ }
5950
+
5951
+ .dm-progression-corporate .dm-progression-content {
5952
+ background: var(--dm-slate-50);
5953
+ border-color: var(--dm-slate-200);
5954
+ }
5955
+
5956
+ .dm-progression-modern .dm-progression-content {
5957
+ background: linear-gradient(135deg, var(--dm-surface, #fff) 0%, var(--dm-gray-50) 100%);
5958
+ border-color: var(--dm-border-color, #e0e0e0);
5959
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
5960
+ }
5961
+
5962
+ /* Dark theme support */
5963
+ [data-theme="dark"] .dm-progression-content {
5964
+ background: var(--dm-slate-800);
5965
+ border-color: var(--dm-slate-700);
5966
+ color: var(--dm-slate-100);
5967
+ }
5968
+
5969
+ [data-theme="dark"] .dm-progression-title {
5970
+ color: var(--dm-slate-100);
5971
+ }
5972
+
5973
+ [data-theme="dark"] .dm-progression-description {
5974
+ color: var(--dm-slate-300);
5975
+ }
5976
+
5977
+ [data-theme="dark"] .dm-progression-minimal .dm-progression-content {
5978
+ background: var(--dm-slate-900);
5979
+ border-color: transparent;
5980
+ }
5981
+
5982
+ [data-theme="dark"] .dm-progression-corporate .dm-progression-content {
5983
+ background: var(--dm-slate-800);
5984
+ border-color: var(--dm-slate-600);
5985
+ }
5986
+
5987
+ [data-theme="dark"] .dm-progression-modern .dm-progression-content {
5988
+ background: linear-gradient(135deg, var(--dm-slate-800) 0%, var(--dm-slate-900) 100%);
5989
+ }
5990
+
5991
+ [data-theme="dark"] .dm-progression-item-progress {
5992
+ background: var(--dm-slate-700);
5993
+ }
5994
+
5995
+ [data-theme="dark"] .dm-progression-progress {
5996
+ background: var(--dm-slate-800);
5997
+ border-color: var(--dm-slate-700);
5998
+ }
5999
+
6000
+ /* Responsive design */
6001
+ @media (max-width: 768px) {
6002
+ .dm-progression-centered .dm-progression-item:nth-child(even) {
6003
+ flex-direction: row;
6004
+ }
6005
+
6006
+ .dm-progression-horizontal {
6007
+ flex-direction: column;
6008
+ }
6009
+
6010
+ .dm-progression-horizontal .dm-progression-item {
6011
+ min-width: 100%;
6012
+ margin-right: 0;
6013
+ margin-bottom: var(--dm-space-4);
6014
+ }
6015
+ }
6016
+
5077
6017
  /* ==============================================
5078
6018
  Cookie Consent Component
5079
6019
  ============================================== */