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,9 +1,9 @@
1
1
  /*!
2
- * Domma Elements CSS v0.8.0-alpha
2
+ * Domma Elements CSS 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.473Z
6
- * Commit: 1a13022
5
+ * Built: 2026-01-12T18:54:14.047Z
6
+ * Commit: 9ca7d3b
7
7
  */
8
8
 
9
9
  /**
@@ -1455,11 +1455,18 @@ code {
1455
1455
  NAVBAR
1456
1456
  ============================================ */
1457
1457
 
1458
+ /* ============================================
1459
+ NAVBAR - MOBILE FIRST
1460
+ ============================================ */
1461
+
1462
+ /* Base navbar (mobile default) */
1458
1463
  .navbar {
1459
1464
  display: flex;
1460
1465
  align-items: center;
1461
1466
  justify-content: space-between;
1462
- padding: var(--dm-space-3) var(--dm-space-6);
1467
+ flex-wrap: wrap;
1468
+ gap: var(--dm-space-3);
1469
+ padding: var(--dm-space-3) var(--dm-space-4);
1463
1470
  padding-right: 6rem; /* Leave space for theme toggle + variant */
1464
1471
  background-color: var(--dm-navbar-bg);
1465
1472
  border-bottom: 1px solid var(--dm-border);
@@ -1505,10 +1512,10 @@ code {
1505
1512
  object-fit: contain;
1506
1513
  }
1507
1514
 
1508
- /* Hamburger Toggle */
1509
-
1515
+ /* Hamburger Toggle (visible on mobile) */
1510
1516
  .navbar-toggle {
1511
- display: none;
1517
+ display: block;
1518
+ order: 2;
1512
1519
  padding: var(--dm-space-2);
1513
1520
  background: transparent;
1514
1521
  border: none;
@@ -1529,31 +1536,97 @@ code {
1529
1536
  display: block;
1530
1537
  }
1531
1538
 
1539
+ /* Hamburger icon - three lines */
1540
+ .navbar-toggle-icon {
1541
+ display: block;
1542
+ width: 22px;
1543
+ height: 2px;
1544
+ background: currentColor;
1545
+ position: relative;
1546
+ transition: background 0.2s ease;
1547
+ }
1548
+
1549
+ .navbar-toggle-icon::before,
1550
+ .navbar-toggle-icon::after {
1551
+ content: '';
1552
+ position: absolute;
1553
+ left: 0;
1554
+ width: 100%;
1555
+ height: 2px;
1556
+ background: currentColor;
1557
+ transition: transform 0.2s ease;
1558
+ }
1559
+
1560
+ .navbar-toggle-icon::before {
1561
+ top: -7px;
1562
+ }
1563
+
1564
+ .navbar-toggle-icon::after {
1565
+ top: 7px;
1566
+ }
1567
+
1568
+ /* Animate to X when expanded */
1569
+ .navbar-toggle[aria-expanded="true"] .navbar-toggle-icon {
1570
+ background: transparent;
1571
+ }
1572
+
1573
+ .navbar-toggle[aria-expanded="true"] .navbar-toggle-icon::before {
1574
+ transform: rotate(45deg);
1575
+ top: 0;
1576
+ }
1577
+
1578
+ .navbar-toggle[aria-expanded="true"] .navbar-toggle-icon::after {
1579
+ transform: rotate(-45deg);
1580
+ top: 0;
1581
+ }
1582
+
1583
+ /* Navbar collapse (mobile: hidden by default) */
1584
+ .navbar-collapse {
1585
+ display: none;
1586
+ width: 100%;
1587
+ order: 3;
1588
+ flex-direction: column;
1589
+ padding-top: var(--dm-space-3);
1590
+ border-top: 1px solid var(--dm-border);
1591
+ }
1592
+
1593
+ .navbar-collapse.show {
1594
+ display: flex;
1595
+ }
1596
+
1597
+ /* Navbar navigation list (mobile: vertical) */
1532
1598
  .navbar-nav {
1533
1599
  display: flex;
1534
- flex-wrap: wrap;
1600
+ flex-direction: column;
1601
+ width: 100%;
1535
1602
  list-style: none;
1536
1603
  margin: 0;
1537
1604
  padding: 0;
1538
- gap: var(--dm-space-1);
1539
- align-items: center;
1605
+ gap: 0;
1606
+ max-height: 60vh;
1607
+ overflow-y: auto;
1540
1608
  }
1541
1609
 
1610
+ .navbar-nav li {
1611
+ width: 100%;
1612
+ }
1613
+
1614
+ /* Navbar links (mobile: full width, larger touch targets) */
1542
1615
  .navbar-link {
1543
1616
  display: block;
1544
- padding: var(--dm-space-2) var(--dm-space-3);
1617
+ padding: var(--dm-space-3) var(--dm-space-4);
1545
1618
  color: var(--dm-navbar-text);
1546
1619
  text-decoration: none;
1547
- border-radius: var(--dm-radius-md);
1620
+ border-radius: 0;
1548
1621
  transition: all var(--dm-transition-fast);
1549
- font-size: var(--dm-font-size-sm);
1622
+ font-size: var(--dm-font-size-base);
1550
1623
  white-space: nowrap;
1551
1624
  }
1552
1625
 
1553
1626
  .navbar-link:hover {
1554
1627
  color: var(--dm-text);
1555
- /*background-color: var(--dm-surface-raised);*/
1556
1628
  background-color: var(--dm-gray-800);
1629
+ border-radius: 0;
1557
1630
  }
1558
1631
 
1559
1632
  .navbar-link.active {
@@ -1562,6 +1635,11 @@ code {
1562
1635
  background-color: color-mix(in srgb, var(--dm-primary) 10%, transparent);
1563
1636
  }
1564
1637
 
1638
+ .nav-version {
1639
+ display: none;
1640
+ color: #eee;
1641
+ }
1642
+
1565
1643
  /* Light navbar variant */
1566
1644
 
1567
1645
  .navbar-light {
@@ -1627,68 +1705,113 @@ code {
1627
1705
  color: var(--dm-white);
1628
1706
  }
1629
1707
 
1630
- /* Responsive navbar - tablet */
1631
- @media (max-width: 1200px) {
1632
- .navbar {
1633
- padding: var(--dm-space-3) var(--dm-space-4);
1634
- padding-right: 6rem;
1635
- }
1708
+ /* Dark navbar collapse border color (mobile) */
1709
+ .navbar-dark .navbar-collapse {
1710
+ border-top-color: var(--dm-gray-700);
1711
+ }
1636
1712
 
1637
- .navbar-link {
1638
- padding: var(--dm-space-1) var(--dm-space-2);
1639
- font-size: var(--dm-font-size-xs);
1640
- }
1713
+ /* Navbar actions - base mobile styles */
1714
+ .navbar-actions {
1715
+ display: flex;
1716
+ align-items: center;
1717
+ gap: var(--dm-space-3);
1641
1718
  }
1642
1719
 
1643
- /* Responsive navbar - mobile */
1644
- @media (max-width: 992px) {
1720
+ /* ============================================
1721
+ NAVBAR - DESKTOP ENHANCEMENTS
1722
+ ============================================ */
1723
+
1724
+ /* Desktop (≥993px) */
1725
+ @media (min-width: 993px) {
1645
1726
  .navbar {
1646
- flex-wrap: wrap;
1647
- gap: var(--dm-space-3);
1727
+ flex-wrap: nowrap;
1728
+ gap: 0;
1729
+ padding: var(--dm-space-3) var(--dm-space-6);
1648
1730
  }
1649
1731
 
1732
+ /* Hide hamburger on desktop */
1650
1733
  .navbar-toggle {
1651
- display: block;
1652
- order: 2;
1734
+ display: none;
1735
+ }
1736
+
1737
+ /* Show navbar collapse on desktop */
1738
+ .navbar-collapse {
1739
+ display: flex;
1740
+ width: auto;
1741
+ flex-direction: row;
1742
+ align-items: center;
1743
+ flex-grow: 1;
1744
+ padding-top: 0;
1745
+ border-top: none;
1653
1746
  }
1654
1747
 
1748
+ /* Horizontal navigation on desktop */
1655
1749
  .navbar-nav {
1656
- display: none;
1657
- width: 100%;
1658
- order: 3;
1659
- flex-direction: column;
1660
- gap: 0;
1661
- padding-top: var(--dm-space-3);
1662
- border-top: 1px solid var(--dm-gray-200);
1663
- max-height: 60vh;
1664
- overflow-y: auto;
1750
+ flex-direction: row;
1751
+ flex: 1;
1752
+ justify-content: center;
1753
+ gap: var(--dm-space-1);
1754
+ align-items: center;
1755
+ max-height: none;
1756
+ overflow-y: visible;
1665
1757
  }
1666
1758
 
1667
- .navbar-dark .navbar-nav {
1668
- border-top-color: var(--dm-gray-800);
1759
+ .navbar-nav li {
1760
+ width: auto;
1669
1761
  }
1670
1762
 
1671
- .navbar-nav.open {
1672
- display: flex;
1763
+ /* Navbar actions - desktop override: push to right */
1764
+ .navbar-actions {
1765
+ margin-left: auto;
1673
1766
  }
1674
1767
 
1675
- .navbar-nav li {
1676
- width: 100%;
1768
+ .navbar-action-link {
1769
+ color: var(--dm-navbar-text, var(--dm-white));
1770
+ text-decoration: none;
1771
+ padding: var(--dm-space-2) var(--dm-space-3);
1772
+ border-radius: var(--dm-radius-md);
1773
+ font-size: var(--dm-font-size-sm);
1774
+ transition: background var(--dm-transition-fast);
1677
1775
  }
1678
1776
 
1777
+ .navbar-action-link:hover {
1778
+ background: rgba(255, 255, 255, 0.1);
1779
+ text-decoration: none;
1780
+ }
1781
+
1782
+ .navbar-dark .navbar-action-link {
1783
+ color: var(--dm-white);
1784
+ }
1785
+
1786
+ .navbar-light .navbar-action-link {
1787
+ color: var(--dm-text);
1788
+ }
1789
+
1790
+ .navbar-light .navbar-action-link:hover {
1791
+ background: rgba(0, 0, 0, 0.05);
1792
+ }
1793
+
1794
+ /* Compact links on desktop */
1679
1795
  .navbar-link {
1680
- padding: var(--dm-space-3) var(--dm-space-4);
1681
- font-size: var(--dm-font-size-base);
1682
- border-radius: 0;
1796
+ padding: var(--dm-space-2) var(--dm-space-3);
1797
+ font-size: var(--dm-font-size-sm);
1798
+ border-radius: var(--dm-radius-md);
1683
1799
  }
1684
1800
 
1685
1801
  .navbar-link:hover {
1686
- border-radius: 0;
1802
+ border-radius: var(--dm-radius-md);
1687
1803
  }
1688
1804
 
1689
1805
  .nav-version {
1690
- display: none;
1691
- color: #eee;
1806
+ display: inline;
1807
+ }
1808
+ }
1809
+
1810
+ /* Large desktop (≥1201px) */
1811
+ @media (min-width: 1201px) {
1812
+ .navbar-link {
1813
+ padding: var(--dm-space-1) var(--dm-space-2);
1814
+ font-size: var(--dm-font-size-xs);
1692
1815
  }
1693
1816
  }
1694
1817
 
@@ -2140,7 +2263,7 @@ code {
2140
2263
  JUMBOTRON
2141
2264
  ============================================ */
2142
2265
 
2143
- .jumbotron {
2266
+ .hero {
2144
2267
  position: relative;
2145
2268
  padding: var(--dm-space-12) var(--dm-space-6);
2146
2269
  background-color: var(--dm-gray-100);
@@ -2148,35 +2271,36 @@ code {
2148
2271
  border-radius: var(--dm-radius-lg);
2149
2272
  margin-bottom: var(--dm-space-6);
2150
2273
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
2274
+ text-align: center;
2151
2275
  }
2152
2276
 
2153
- .jumbotron-fluid {
2277
+ .hero-fluid {
2154
2278
  border-radius: 0;
2155
2279
  padding-left: 0;
2156
2280
  padding-right: 0;
2157
2281
  }
2158
2282
 
2159
- .jumbotron-dark {
2283
+ .hero-dark {
2160
2284
  background-color: var(--dm-gray-900);
2161
2285
  color: var(--dm-white);
2162
2286
  }
2163
2287
 
2164
- .jumbotron-primary {
2288
+ .hero-primary {
2165
2289
  background: linear-gradient(135deg, var(--dm-primary) 0%, var(--dm-primary-dark, #4a7fd4) 100%);
2166
2290
  color: var(--dm-white);
2167
2291
  }
2168
2292
 
2169
- .jumbotron-cover {
2293
+ .hero-cover {
2170
2294
  background-size: cover;
2171
2295
  background-position: center;
2172
2296
  background-repeat: no-repeat;
2173
2297
  }
2174
2298
 
2175
- .jumbotron-overlay {
2299
+ .hero-overlay {
2176
2300
  position: relative;
2177
2301
  }
2178
2302
 
2179
- .jumbotron-overlay::before {
2303
+ .hero-overlay::before {
2180
2304
  content: '';
2181
2305
  position: absolute;
2182
2306
  top: 0;
@@ -2187,51 +2311,51 @@ code {
2187
2311
  border-radius: inherit;
2188
2312
  }
2189
2313
 
2190
- .jumbotron-overlay > * {
2314
+ .hero-overlay > * {
2191
2315
  position: relative;
2192
2316
  z-index: 1;
2193
2317
  }
2194
2318
 
2195
- .jumbotron-content {
2319
+ .hero-content {
2196
2320
  max-width: 800px;
2197
2321
  margin-left: auto;
2198
2322
  margin-right: auto;
2199
2323
  }
2200
2324
 
2201
- .jumbotron-center {
2325
+ .hero-center {
2202
2326
  text-align: center;
2203
2327
  }
2204
2328
 
2205
- .jumbotron-center .jumbotron-content {
2329
+ .hero-center .hero-content {
2206
2330
  margin-left: auto;
2207
2331
  margin-right: auto;
2208
2332
  }
2209
2333
 
2210
- .jumbotron-title {
2334
+ .hero-title {
2211
2335
  font-size: var(--dm-font-size-4xl);
2212
2336
  font-weight: 700;
2213
2337
  line-height: 1.2;
2214
2338
  margin-bottom: var(--dm-space-4);
2215
2339
  }
2216
2340
 
2217
- .jumbotron-subtitle {
2341
+ .hero-subtitle {
2218
2342
  font-size: var(--dm-font-size-xl);
2219
2343
  opacity: 0.9;
2220
2344
  margin-bottom: var(--dm-space-6);
2221
2345
  }
2222
2346
 
2223
- .jumbotron-actions {
2347
+ .hero-actions {
2224
2348
  display: flex;
2225
2349
  flex-wrap: wrap;
2226
2350
  gap: var(--dm-space-3);
2227
2351
  align-items: center;
2228
2352
  }
2229
2353
 
2230
- .jumbotron-center .jumbotron-actions {
2354
+ .hero-center .hero-actions {
2231
2355
  justify-content: center;
2232
2356
  }
2233
2357
 
2234
- .jumbotron-note {
2358
+ .hero-note {
2235
2359
  font-size: 0.85rem;
2236
2360
  margin: 0;
2237
2361
  color: var(--dm-text-muted);
@@ -2239,27 +2363,27 @@ code {
2239
2363
 
2240
2364
  /* Jumbotron sizes */
2241
2365
 
2242
- .jumbotron-sm {
2366
+ .hero-sm {
2243
2367
  padding: var(--dm-space-8) var(--dm-space-4);
2244
2368
  }
2245
2369
 
2246
- .jumbotron-sm .jumbotron-title {
2370
+ .hero-sm .hero-title {
2247
2371
  font-size: var(--dm-font-size-2xl);
2248
2372
  }
2249
2373
 
2250
- .jumbotron-sm .jumbotron-subtitle {
2374
+ .hero-sm .hero-subtitle {
2251
2375
  font-size: var(--dm-font-size-lg);
2252
2376
  }
2253
2377
 
2254
- .jumbotron-lg {
2378
+ .hero-lg {
2255
2379
  padding: var(--dm-space-16) var(--dm-space-8);
2256
2380
  }
2257
2381
 
2258
- .jumbotron-lg .jumbotron-title {
2382
+ .hero-lg .hero-title {
2259
2383
  font-size: var(--dm-font-size-5xl);
2260
2384
  }
2261
2385
 
2262
- .jumbotron-full {
2386
+ .hero-full {
2263
2387
  min-height: 100vh;
2264
2388
  display: flex;
2265
2389
  align-items: center;
@@ -2272,7 +2396,7 @@ code {
2272
2396
 
2273
2397
  /* 1. Split Layouts - Text + Image Grid Layouts */
2274
2398
 
2275
- .jumbotron-split {
2399
+ .hero-split {
2276
2400
  display: grid;
2277
2401
  grid-template-columns: 1fr;
2278
2402
  gap: var(--dm-space-8);
@@ -2280,54 +2404,54 @@ code {
2280
2404
  }
2281
2405
 
2282
2406
  @media (min-width: 768px) {
2283
- .jumbotron-split {
2407
+ .hero-split {
2284
2408
  grid-template-columns: 1fr 1fr;
2285
2409
  }
2286
2410
  }
2287
2411
 
2288
2412
  /* Reverse layout (image left, text right) */
2289
2413
  @media (min-width: 768px) {
2290
- .jumbotron-split-reverse .jumbotron-text {
2414
+ .hero-split-reverse .hero-text {
2291
2415
  order: 2;
2292
2416
  }
2293
2417
 
2294
- .jumbotron-split-reverse .jumbotron-media {
2418
+ .hero-split-reverse .hero-media {
2295
2419
  order: 1;
2296
2420
  }
2297
2421
  }
2298
2422
 
2299
2423
  /* Asymmetric split layouts */
2300
2424
  @media (min-width: 768px) {
2301
- .jumbotron-split-60-40 {
2425
+ .hero-split-60-40 {
2302
2426
  grid-template-columns: 60% 40%;
2303
2427
  }
2304
2428
 
2305
- .jumbotron-split-70-30 {
2429
+ .hero-split-70-30 {
2306
2430
  grid-template-columns: 70% 30%;
2307
2431
  }
2308
2432
 
2309
- .jumbotron-split-40-60 {
2433
+ .hero-split-40-60 {
2310
2434
  grid-template-columns: 40% 60%;
2311
2435
  }
2312
2436
 
2313
- .jumbotron-split-30-70 {
2437
+ .hero-split-30-70 {
2314
2438
  grid-template-columns: 30% 70%;
2315
2439
  }
2316
2440
  }
2317
2441
 
2318
2442
  /* Child containers for split layouts */
2319
- .jumbotron-text {
2443
+ .hero-text {
2320
2444
  display: flex;
2321
2445
  flex-direction: column;
2322
2446
  justify-content: center;
2323
2447
  }
2324
2448
 
2325
- .jumbotron-media {
2449
+ .hero-media {
2326
2450
  border-radius: var(--dm-radius-lg);
2327
2451
  overflow: hidden;
2328
2452
  }
2329
2453
 
2330
- .jumbotron-media img {
2454
+ .hero-media img {
2331
2455
  width: 100%;
2332
2456
  height: auto;
2333
2457
  display: block;
@@ -2337,11 +2461,11 @@ code {
2337
2461
  /* 2. Enhanced Overlay System - Multiple Overlay Variants */
2338
2462
 
2339
2463
  /* Light overlay (for dark images) */
2340
- .jumbotron-overlay-light {
2464
+ .hero-overlay-light {
2341
2465
  position: relative;
2342
2466
  }
2343
2467
 
2344
- .jumbotron-overlay-light::before {
2468
+ .hero-overlay-light::before {
2345
2469
  content: '';
2346
2470
  position: absolute;
2347
2471
  inset: 0;
@@ -2350,17 +2474,17 @@ code {
2350
2474
  border-radius: inherit;
2351
2475
  }
2352
2476
 
2353
- .jumbotron-overlay-light > * {
2477
+ .hero-overlay-light > * {
2354
2478
  position: relative;
2355
2479
  z-index: 2;
2356
2480
  }
2357
2481
 
2358
2482
  /* Dark overlay (for bright images) */
2359
- .jumbotron-overlay-dark {
2483
+ .hero-overlay-dark {
2360
2484
  position: relative;
2361
2485
  }
2362
2486
 
2363
- .jumbotron-overlay-dark::before {
2487
+ .hero-overlay-dark::before {
2364
2488
  content: '';
2365
2489
  position: absolute;
2366
2490
  inset: 0;
@@ -2369,17 +2493,17 @@ code {
2369
2493
  border-radius: inherit;
2370
2494
  }
2371
2495
 
2372
- .jumbotron-overlay-dark > * {
2496
+ .hero-overlay-dark > * {
2373
2497
  position: relative;
2374
2498
  z-index: 2;
2375
2499
  }
2376
2500
 
2377
2501
  /* Extra dark overlay for maximum contrast */
2378
- .jumbotron-overlay-darker {
2502
+ .hero-overlay-darker {
2379
2503
  position: relative;
2380
2504
  }
2381
2505
 
2382
- .jumbotron-overlay-darker::before {
2506
+ .hero-overlay-darker::before {
2383
2507
  content: '';
2384
2508
  position: absolute;
2385
2509
  inset: 0;
@@ -2388,17 +2512,17 @@ code {
2388
2512
  border-radius: inherit;
2389
2513
  }
2390
2514
 
2391
- .jumbotron-overlay-darker > * {
2515
+ .hero-overlay-darker > * {
2392
2516
  position: relative;
2393
2517
  z-index: 2;
2394
2518
  }
2395
2519
 
2396
2520
  /* Gradient overlay (bottom to top fade) */
2397
- .jumbotron-overlay-gradient {
2521
+ .hero-overlay-gradient {
2398
2522
  position: relative;
2399
2523
  }
2400
2524
 
2401
- .jumbotron-overlay-gradient::before {
2525
+ .hero-overlay-gradient::before {
2402
2526
  content: '';
2403
2527
  position: absolute;
2404
2528
  inset: 0;
@@ -2407,17 +2531,17 @@ code {
2407
2531
  border-radius: inherit;
2408
2532
  }
2409
2533
 
2410
- .jumbotron-overlay-gradient > * {
2534
+ .hero-overlay-gradient > * {
2411
2535
  position: relative;
2412
2536
  z-index: 2;
2413
2537
  }
2414
2538
 
2415
2539
  /* Gradient overlay variant - top to bottom */
2416
- .jumbotron-overlay-gradient-reverse {
2540
+ .hero-overlay-gradient-reverse {
2417
2541
  position: relative;
2418
2542
  }
2419
2543
 
2420
- .jumbotron-overlay-gradient-reverse::before {
2544
+ .hero-overlay-gradient-reverse::before {
2421
2545
  content: '';
2422
2546
  position: absolute;
2423
2547
  inset: 0;
@@ -2426,14 +2550,14 @@ code {
2426
2550
  border-radius: inherit;
2427
2551
  }
2428
2552
 
2429
- .jumbotron-overlay-gradient-reverse > * {
2553
+ .hero-overlay-gradient-reverse > * {
2430
2554
  position: relative;
2431
2555
  z-index: 2;
2432
2556
  }
2433
2557
 
2434
2558
  /* 3. Announcement Badges - Small notification badges */
2435
2559
 
2436
- .jumbotron-badge {
2560
+ .hero-badge {
2437
2561
  display: inline-flex;
2438
2562
  align-items: center;
2439
2563
  gap: var(--dm-space-2);
@@ -2447,39 +2571,39 @@ code {
2447
2571
  line-height: 1.5;
2448
2572
  }
2449
2573
 
2450
- .jumbotron-badge-secondary {
2574
+ .hero-badge-secondary {
2451
2575
  background: var(--dm-gray-200);
2452
2576
  color: var(--dm-gray-900);
2453
2577
  }
2454
2578
 
2455
- .jumbotron-badge-outline {
2579
+ .hero-badge-outline {
2456
2580
  background: transparent;
2457
2581
  border: 1px solid currentColor;
2458
2582
  color: inherit;
2459
2583
  }
2460
2584
 
2461
- .jumbotron-badge-success {
2585
+ .hero-badge-success {
2462
2586
  background: var(--dm-success);
2463
2587
  color: white;
2464
2588
  }
2465
2589
 
2466
- .jumbotron-badge-warning {
2590
+ .hero-badge-warning {
2467
2591
  background: var(--dm-warning);
2468
2592
  color: var(--dm-gray-900);
2469
2593
  }
2470
2594
 
2471
- .jumbotron-badge-danger {
2595
+ .hero-badge-danger {
2472
2596
  background: var(--dm-danger);
2473
2597
  color: white;
2474
2598
  }
2475
2599
 
2476
- .jumbotron-badge-info {
2600
+ .hero-badge-info {
2477
2601
  background: var(--dm-info);
2478
2602
  color: white;
2479
2603
  }
2480
2604
 
2481
2605
  /* Badge icon/emoji support */
2482
- .jumbotron-badge-icon {
2606
+ .hero-badge-icon {
2483
2607
  display: inline-block;
2484
2608
  width: 1em;
2485
2609
  height: 1em;
@@ -2489,219 +2613,105 @@ code {
2489
2613
  /* 4. Responsive Utilities - Advanced responsive behaviors */
2490
2614
 
2491
2615
  /* Responsive typography using CSS clamp (fluid scaling) */
2492
- .jumbotron-title-responsive {
2616
+ .hero-title-responsive {
2493
2617
  font-size: clamp(2rem, 5vw, 3.5rem);
2494
2618
  line-height: 1.2;
2495
2619
  }
2496
2620
 
2497
- .jumbotron-subtitle-responsive {
2621
+ .hero-subtitle-responsive {
2498
2622
  font-size: clamp(1rem, 2.5vw, 1.5rem);
2499
2623
  line-height: 1.5;
2500
2624
  }
2501
2625
 
2502
2626
  /* Responsive spacing */
2503
- .jumbotron-responsive {
2627
+ .hero-responsive {
2504
2628
  padding: clamp(2rem, 6vw, 5rem) clamp(1rem, 3vw, 2rem);
2505
2629
  }
2506
2630
 
2507
2631
  /* Conditional display utilities */
2508
- .jumbotron-hide-mobile {
2632
+ .hero-hide-mobile {
2509
2633
  display: none;
2510
2634
  }
2511
2635
 
2512
2636
  @media (min-width: 768px) {
2513
- .jumbotron-hide-mobile {
2637
+ .hero-hide-mobile {
2514
2638
  display: block;
2515
2639
  }
2516
2640
  }
2517
2641
 
2518
- .jumbotron-show-mobile {
2642
+ .hero-show-mobile {
2519
2643
  display: block;
2520
2644
  }
2521
2645
 
2522
2646
  @media (min-width: 768px) {
2523
- .jumbotron-show-mobile {
2647
+ .hero-show-mobile {
2524
2648
  display: none;
2525
2649
  }
2526
2650
  }
2527
2651
 
2528
2652
  /* Responsive alignment */
2529
- .jumbotron-center-mobile {
2653
+ .hero-center-mobile {
2530
2654
  text-align: center;
2531
2655
  }
2532
2656
 
2533
2657
  @media (min-width: 768px) {
2534
- .jumbotron-center-mobile {
2658
+ .hero-center-mobile {
2535
2659
  text-align: left;
2536
2660
  }
2537
2661
  }
2538
2662
 
2539
- .jumbotron-left-mobile {
2663
+ .hero-left-mobile {
2540
2664
  text-align: left;
2541
2665
  }
2542
2666
 
2543
2667
  @media (min-width: 768px) {
2544
- .jumbotron-left-mobile {
2668
+ .hero-left-mobile {
2545
2669
  text-align: center;
2546
2670
  }
2547
2671
  }
2548
2672
 
2549
2673
  /* 5. Additional Gradient Variants - Modern gradient backgrounds */
2550
2674
 
2551
- .jumbotron-gradient-purple {
2675
+ .hero-gradient-purple {
2552
2676
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
2553
2677
  color: white;
2554
2678
  }
2555
2679
 
2556
- .jumbotron-gradient-blue {
2680
+ .hero-gradient-blue {
2557
2681
  background: linear-gradient(135deg, #3b82f6 0%, #1e40af 100%);
2558
2682
  color: white;
2559
2683
  }
2560
2684
 
2561
- .jumbotron-gradient-green {
2685
+ .hero-gradient-green {
2562
2686
  background: linear-gradient(135deg, #10b981 0%, #059669 100%);
2563
2687
  color: white;
2564
2688
  }
2565
2689
 
2566
- .jumbotron-gradient-sunset {
2690
+ .hero-gradient-sunset {
2567
2691
  background: linear-gradient(135deg, #f59e0b 0%, #ef4444 100%);
2568
2692
  color: white;
2569
2693
  }
2570
2694
 
2571
- .jumbotron-gradient-ocean {
2695
+ .hero-gradient-ocean {
2572
2696
  background: linear-gradient(135deg, #0ea5e9 0%, #06b6d4 100%);
2573
2697
  color: white;
2574
2698
  }
2575
2699
 
2576
- .jumbotron-gradient-rose {
2700
+ .hero-gradient-rose {
2577
2701
  background: linear-gradient(135deg, #ec4899 0%, #f43f5e 100%);
2578
2702
  color: white;
2579
2703
  }
2580
2704
 
2581
- .jumbotron-gradient-forest {
2705
+ .hero-gradient-forest {
2582
2706
  background: linear-gradient(135deg, #16a34a 0%, #15803d 100%);
2583
2707
  color: white;
2584
2708
  }
2585
2709
 
2586
- .jumbotron-gradient-night {
2710
+ .hero-gradient-night {
2587
2711
  background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
2588
2712
  color: white;
2589
2713
  }
2590
2714
 
2591
-
2592
- /* ============================================
2593
- HERO SECTION
2594
- ============================================ */
2595
-
2596
- /* Base Hero - Structure Only */
2597
- .hero {
2598
- padding: 4rem 2rem;
2599
- text-align: center;
2600
- position: relative;
2601
- background: var(--dm-surface);
2602
- color: var(--dm-text);
2603
- }
2604
-
2605
- .hero h1,
2606
- .hero .hero-title {
2607
- font-size: 3rem;
2608
- font-weight: 700;
2609
- margin-bottom: 1rem;
2610
- line-height: 1.2;
2611
- }
2612
-
2613
- .hero p,
2614
- .hero .hero-subtitle {
2615
- font-size: 1.25rem;
2616
- max-width: 600px;
2617
- margin: 0 auto 2rem;
2618
- opacity: 0.9;
2619
- }
2620
-
2621
- .hero code {
2622
- background: rgba(0, 0, 0, 0.1);
2623
- padding: 0.25rem 0.5rem;
2624
- border-radius: var(--dm-radius-sm);
2625
- }
2626
-
2627
- .hero .hero-actions {
2628
- display: flex;
2629
- gap: 1rem;
2630
- justify-content: center;
2631
- flex-wrap: wrap;
2632
- }
2633
-
2634
- /* Hero Size Variants */
2635
- .hero-sm {
2636
- padding: 2rem 1rem;
2637
- }
2638
-
2639
- .hero-sm h1,
2640
- .hero-sm .hero-title {
2641
- font-size: 2rem;
2642
- }
2643
-
2644
- .hero-sm p,
2645
- .hero-sm .hero-subtitle {
2646
- font-size: 1rem;
2647
- }
2648
-
2649
- .hero-lg {
2650
- padding: 6rem 2rem;
2651
- }
2652
-
2653
- .hero-lg h1,
2654
- .hero-lg .hero-title {
2655
- font-size: 4rem;
2656
- }
2657
-
2658
- .hero-full {
2659
- min-height: 100vh;
2660
- display: flex;
2661
- flex-direction: column;
2662
- justify-content: center;
2663
- align-items: center;
2664
- }
2665
-
2666
- /* Hero Text Color Variants */
2667
- .hero-light {
2668
- color: var(--dm-white);
2669
- }
2670
-
2671
- .hero-dark {
2672
- color: var(--dm-gray-900);
2673
- }
2674
-
2675
- /* Hero Background Variants */
2676
- .hero-gradient-primary {
2677
- background: linear-gradient(135deg, var(--dm-primary) 0%, var(--dm-primary-hover) 100%);
2678
- color: var(--dm-white);
2679
- }
2680
-
2681
- .hero-gradient-secondary {
2682
- background: linear-gradient(135deg, var(--dm-secondary) 0%, var(--dm-secondary-hover) 100%);
2683
- color: var(--dm-white);
2684
- }
2685
-
2686
- /* Responsive */
2687
- @media (max-width: 768px) {
2688
- .hero h1,
2689
- .hero .hero-title {
2690
- font-size: 2rem;
2691
- }
2692
-
2693
- .hero p,
2694
- .hero .hero-subtitle {
2695
- font-size: 1rem;
2696
- }
2697
-
2698
- .hero {
2699
- padding: 3rem 1.5rem;
2700
- }
2701
- }
2702
-
2703
-
2704
- /* ============================================
2705
2715
  CAROUSEL
2706
2716
  ============================================ */
2707
2717
 
@@ -3084,36 +3094,49 @@ code {
3084
3094
 
3085
3095
 
3086
3096
  /* ============================================
3087
- SIDEBAR
3097
+ SIDEBAR - MOBILE FIRST
3088
3098
  ============================================ */
3089
3099
 
3090
- /* Base Sidebar */
3100
+ /* Base Sidebar - Mobile Default */
3091
3101
  .sidebar {
3092
3102
  position: relative;
3093
- width: 250px;
3103
+ width: 100%;
3104
+ max-width: 250px;
3094
3105
  background: var(--dm-surface, #fff);
3095
3106
  border-right: 1px solid var(--dm-border, #dee2e6);
3096
3107
  overflow-y: auto;
3097
3108
  overflow-x: hidden;
3098
- transition: transform 0.3s ease;
3109
+ transition: transform 0.3s ease, width 0.3s ease;
3099
3110
  z-index: 100;
3111
+ --sidebar-width: 250px;
3112
+ --sidebar-collapsed-width: 60px;
3100
3113
  }
3101
3114
 
3102
- /* Fixed positioning */
3115
+ /* Fixed positioning - Mobile: hidden off-screen by default */
3103
3116
  .sidebar-fixed {
3104
3117
  position: fixed;
3105
3118
  top: 0;
3106
3119
  left: 0;
3107
3120
  height: 100vh;
3121
+ height: 100dvh; /* Dynamic viewport height for mobile */
3122
+ transform: translateX(-100%); /* Hidden off-screen on mobile */
3123
+ box-shadow: none;
3108
3124
  }
3109
3125
 
3110
3126
  .sidebar-fixed.sidebar-right {
3111
3127
  left: auto;
3112
3128
  right: 0;
3129
+ transform: translateX(100%); /* Hidden off-screen right */
3113
3130
  border-right: none;
3114
3131
  border-left: 1px solid var(--dm-border, #dee2e6);
3115
3132
  }
3116
3133
 
3134
+ /* Mobile: slide in when open */
3135
+ .sidebar-fixed.open {
3136
+ transform: translateX(0);
3137
+ box-shadow: var(--dm-shadow-xl, 0 10px 40px rgba(0,0,0,0.2));
3138
+ }
3139
+
3117
3140
  /* Position variants */
3118
3141
  .sidebar-left {
3119
3142
  left: 0;
@@ -3151,8 +3174,11 @@ code {
3151
3174
  color: var(--dm-text, #212529);
3152
3175
  }
3153
3176
 
3177
+ /* Toggle button - Visible on mobile by default */
3154
3178
  .sidebar-toggle-btn {
3155
- display: none; /* Shown on mobile */
3179
+ display: flex;
3180
+ align-items: center;
3181
+ justify-content: center;
3156
3182
  flex-shrink: 0;
3157
3183
  width: 32px;
3158
3184
  height: 32px;
@@ -3330,7 +3356,7 @@ code {
3330
3356
  color: var(--dm-text-muted, #6c757d);
3331
3357
  }
3332
3358
 
3333
- /* Overlay (mobile) */
3359
+ /* Overlay - Visible on mobile */
3334
3360
  .sidebar-overlay {
3335
3361
  position: fixed;
3336
3362
  top: 0;
@@ -3342,6 +3368,7 @@ code {
3342
3368
  opacity: 0;
3343
3369
  visibility: hidden;
3344
3370
  transition: opacity 0.3s ease, visibility 0.3s ease;
3371
+ display: block;
3345
3372
  }
3346
3373
 
3347
3374
  .sidebar-overlay.active {
@@ -3405,30 +3432,118 @@ code {
3405
3432
  border-color: var(--dm-border, #dee2e6);
3406
3433
  }
3407
3434
 
3408
- /* Mobile/Tablet: Slide-out drawer */
3409
- @media (max-width: 768px) {
3435
+ /* ============================================
3436
+ SIDEBAR - DESKTOP ENHANCEMENTS
3437
+ ============================================ */
3438
+
3439
+ /* Desktop (≥769px) */
3440
+ @media (min-width: 769px) {
3441
+ /* Desktop: Sidebar always visible */
3410
3442
  .sidebar-fixed {
3411
- transform: translateX(-100%);
3443
+ transform: translateX(0);
3412
3444
  box-shadow: none;
3413
3445
  }
3414
3446
 
3415
3447
  .sidebar-fixed.sidebar-right {
3416
- transform: translateX(100%);
3417
- }
3418
-
3419
- .sidebar-fixed.open {
3420
3448
  transform: translateX(0);
3421
- box-shadow: var(--dm-shadow-xl, 0 10px 40px rgba(0,0,0,0.2));
3422
3449
  }
3423
3450
 
3451
+ /* Desktop: Hide toggle button (unless desktop collapsible) */
3424
3452
  .sidebar-toggle-btn {
3453
+ display: none;
3454
+ }
3455
+
3456
+ /* Show toggle button on desktop when collapsibleDesktop enabled */
3457
+ .sidebar.sidebar-desktop-collapsible .sidebar-toggle-btn {
3425
3458
  display: flex;
3459
+ }
3460
+
3461
+ /* Desktop: Hide overlay */
3462
+ .sidebar-overlay {
3463
+ display: none;
3464
+ }
3465
+
3466
+ /* Desktop collapsed state - Fully hidden */
3467
+ .sidebar.sidebar-collapsed {
3468
+ transform: translateX(-100%);
3469
+ }
3470
+
3471
+ .sidebar.sidebar-collapsed.sidebar-right {
3472
+ transform: translateX(100%);
3473
+ }
3474
+
3475
+ /* Floating toggle button - appears when sidebar is collapsed */
3476
+ .sidebar-floating-toggle {
3477
+ position: fixed;
3478
+ top: 50%;
3479
+ left: 0;
3480
+ transform: translateY(-50%);
3481
+ z-index: 1001;
3482
+ display: none; /* Hidden by default */
3426
3483
  align-items: center;
3427
3484
  justify-content: center;
3485
+ width: 40px;
3486
+ height: 40px;
3487
+ background: var(--dm-primary, #007bff);
3488
+ color: var(--dm-white, #fff);
3489
+ border: none;
3490
+ border-radius: 0 var(--dm-radius-md, 0.375rem) var(--dm-radius-md, 0.375rem) 0;
3491
+ cursor: pointer;
3492
+ transition: all 0.2s ease;
3493
+ box-shadow: var(--dm-shadow-lg, 0 4px 12px rgba(0,0,0,0.15));
3428
3494
  }
3429
3495
 
3430
- .sidebar-overlay {
3431
- display: block;
3496
+ .sidebar-floating-toggle:hover {
3497
+ background: var(--dm-primary-dark, #0056b3);
3498
+ width: 48px;
3499
+ box-shadow: var(--dm-shadow-xl, 0 8px 20px rgba(0,0,0,0.2));
3500
+ }
3501
+
3502
+ .sidebar-floating-toggle.show {
3503
+ display: flex;
3504
+ }
3505
+
3506
+ .sidebar-floating-toggle.right {
3507
+ left: auto;
3508
+ right: 0;
3509
+ border-radius: var(--dm-radius-md, 0.375rem) 0 0 var(--dm-radius-md, 0.375rem);
3510
+ }
3511
+ }
3512
+
3513
+ /* ============================================
3514
+ Floating Sidebar Variant
3515
+ (bottom-left positioned sidebar)
3516
+ ============================================ */
3517
+ .sidebar-floating {
3518
+ position: fixed;
3519
+ left: 2px;
3520
+ bottom: 8px;
3521
+ top: auto !important;
3522
+ height: auto;
3523
+ max-height: 400px;
3524
+ width: 220px;
3525
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
3526
+ z-index: 100;
3527
+ }
3528
+
3529
+ .sidebar-floating .sidebar-header {
3530
+ font-size: 0.875rem;
3531
+ text-transform: uppercase;
3532
+ letter-spacing: 0.05em;
3533
+ }
3534
+
3535
+ @media (max-width: 992px) {
3536
+ .sidebar-floating {
3537
+ left: 0.5rem;
3538
+ bottom: 0.5rem;
3539
+ width: 180px;
3540
+ max-height: 300px;
3541
+ }
3542
+ }
3543
+
3544
+ @media (max-width: 576px) {
3545
+ .sidebar-floating {
3546
+ display: none;
3432
3547
  }
3433
3548
  }
3434
3549
 
@@ -3621,6 +3736,33 @@ code {
3621
3736
  color: rgba(255, 255, 255, 0.8);
3622
3737
  }
3623
3738
 
3739
+ /* ============================================
3740
+ SIDEBAR - PUSH MODE
3741
+ ============================================ */
3742
+
3743
+ /* Content wrapper when sidebar pushes it (left position) */
3744
+ .sidebar-push-active {
3745
+ margin-left: var(--sidebar-push-width, 250px);
3746
+ transition: margin-left var(--dm-transition-normal, 0.3s) ease;
3747
+ }
3748
+
3749
+ /* Content wrapper when sidebar pushes it (right position) */
3750
+ .sidebar-push-active-right {
3751
+ margin-right: var(--sidebar-push-width, 250px);
3752
+ margin-left: 0;
3753
+ transition: margin-right var(--dm-transition-normal, 0.3s) ease;
3754
+ }
3755
+
3756
+ /* Mobile: Allow custom push width for mobile */
3757
+ @media (max-width: 768px) {
3758
+ .sidebar-push-active {
3759
+ margin-left: var(--sidebar-push-width-mobile, var(--sidebar-push-width, 250px));
3760
+ }
3761
+
3762
+ .sidebar-push-active-right {
3763
+ margin-right: var(--sidebar-push-width-mobile, var(--sidebar-push-width, 250px));
3764
+ }
3765
+ }
3624
3766
 
3625
3767
 
3626
3768
  /* ============================================
@@ -3655,20 +3797,20 @@ code {
3655
3797
  z-index: 100;
3656
3798
  }
3657
3799
 
3658
- /* Container */
3800
+ /* Container - Mobile Default */
3659
3801
  .footer-container {
3660
3802
  max-width: var(--dm-container-lg, 1200px);
3661
3803
  margin: 0 auto;
3662
- padding: var(--dm-space-6, 1.5rem) var(--dm-space-4, 1rem);
3804
+ padding: var(--dm-space-4, 1rem); /* Mobile: compact padding */
3663
3805
  }
3664
3806
 
3665
- /* ========== Simple Layout ========== */
3807
+ /* ========== Simple Layout - Mobile Default ========== */
3666
3808
 
3667
3809
  .footer-simple .footer-simple-content {
3668
3810
  display: flex;
3669
3811
  flex-wrap: wrap;
3670
- align-items: center;
3671
- justify-content: space-between;
3812
+ flex-direction: column; /* Mobile: vertical stacking */
3813
+ align-items: flex-start; /* Mobile: left-aligned */
3672
3814
  gap: var(--dm-space-4, 1rem);
3673
3815
  }
3674
3816
 
@@ -3699,8 +3841,9 @@ code {
3699
3841
  .footer-nav {
3700
3842
  display: flex;
3701
3843
  flex-wrap: wrap;
3702
- gap: var(--dm-space-4, 1rem);
3703
- align-items: center;
3844
+ flex-direction: column; /* Mobile: vertical nav */
3845
+ align-items: flex-start; /* Mobile: left-aligned */
3846
+ gap: var(--dm-space-2, 0.5rem); /* Mobile: compact spacing */
3704
3847
  }
3705
3848
 
3706
3849
  .footer-link {
@@ -3747,12 +3890,12 @@ code {
3747
3890
  color: var(--dm-text-muted, #6c757d);
3748
3891
  }
3749
3892
 
3750
- /* ========== Columns Layout ========== */
3893
+ /* ========== Columns Layout - Mobile Default ========== */
3751
3894
 
3752
3895
  .footer-columns .footer-columns-content {
3753
3896
  display: grid;
3754
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
3755
- gap: var(--dm-space-6, 1.5rem);
3897
+ grid-template-columns: 1fr; /* Mobile: single column */
3898
+ gap: var(--dm-space-4, 1rem); /* Mobile: compact spacing */
3756
3899
  padding-bottom: var(--dm-space-4, 1rem);
3757
3900
  margin-bottom: var(--dm-space-4, 1rem);
3758
3901
  border-bottom: 1px solid var(--dm-border, #dee2e6);
@@ -3778,6 +3921,15 @@ code {
3778
3921
  line-height: 1.6;
3779
3922
  }
3780
3923
 
3924
+ .footer-column-brand .footer-brand-description {
3925
+ display: block;
3926
+ margin: var(--dm-space-2, 0.5rem) 0 0;
3927
+ color: var(--dm-text-muted, #6c757d);
3928
+ font-size: var(--dm-font-size-sm, 0.875rem);
3929
+ line-height: 1.5;
3930
+ opacity: 0.8;
3931
+ }
3932
+
3781
3933
  .footer-column-title {
3782
3934
  margin: 0 0 var(--dm-space-3, 0.75rem);
3783
3935
  font-size: var(--dm-font-size-base, 1rem);
@@ -3810,19 +3962,23 @@ code {
3810
3962
  .footer-columns .footer-bottom {
3811
3963
  display: flex;
3812
3964
  flex-wrap: wrap;
3813
- align-items: center;
3814
- justify-content: space-between;
3965
+ flex-direction: column; /* Mobile: vertical stacking */
3966
+ align-items: flex-start; /* Mobile: left-aligned */
3815
3967
  gap: var(--dm-space-4, 1rem);
3816
3968
  }
3817
3969
 
3818
3970
  .footer-columns .footer-copyright {
3819
- width: auto;
3971
+ width: 100%; /* Mobile: full width */
3820
3972
  padding: 0;
3821
3973
  margin: 0;
3822
3974
  border: none;
3823
3975
  text-align: left;
3824
3976
  }
3825
3977
 
3978
+ .footer-social {
3979
+ width: 100%; /* Mobile: full width */
3980
+ }
3981
+
3826
3982
  /* ========== Minimal Layout ========== */
3827
3983
 
3828
3984
  .footer-minimal .footer-minimal-content {
@@ -3859,6 +4015,10 @@ code {
3859
4015
  color: var(--dm-white, #fff);
3860
4016
  }
3861
4017
 
4018
+ .footer-dark .footer-brand-description {
4019
+ color: var(--dm-gray-300, #dee2e6);
4020
+ }
4021
+
3862
4022
  .footer-dark .footer-link {
3863
4023
  color: var(--dm-gray-400, #adb5bd);
3864
4024
  }
@@ -3909,41 +4069,50 @@ code {
3909
4069
  border-color: transparent;
3910
4070
  }
3911
4071
 
3912
- /* ========== Responsive ========== */
4072
+ /* ============================================
4073
+ FOOTER - DESKTOP ENHANCEMENTS
4074
+ ============================================ */
3913
4075
 
3914
- @media (max-width: 768px) {
4076
+ /* Desktop (≥769px) */
4077
+ @media (min-width: 769px) {
4078
+ /* Desktop: More generous padding */
3915
4079
  .footer-container {
3916
- padding: var(--dm-space-4, 1rem);
4080
+ padding: var(--dm-space-6, 1.5rem) var(--dm-space-4, 1rem);
3917
4081
  }
3918
4082
 
4083
+ /* Desktop: Horizontal simple layout */
3919
4084
  .footer-simple .footer-simple-content {
3920
- flex-direction: column;
3921
- align-items: flex-start;
4085
+ flex-direction: row;
4086
+ align-items: center;
4087
+ justify-content: space-between;
3922
4088
  }
3923
4089
 
4090
+ /* Desktop: Horizontal navigation */
3924
4091
  .footer-nav {
3925
- flex-direction: column;
3926
- align-items: flex-start;
3927
- gap: var(--dm-space-2, 0.5rem);
4092
+ flex-direction: row;
4093
+ align-items: center;
4094
+ gap: var(--dm-space-4, 1rem);
3928
4095
  }
3929
4096
 
4097
+ /* Desktop: Multi-column grid */
3930
4098
  .footer-columns .footer-columns-content {
3931
- grid-template-columns: 1fr;
3932
- gap: var(--dm-space-4, 1rem);
4099
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
4100
+ gap: var(--dm-space-6, 1.5rem);
3933
4101
  }
3934
4102
 
4103
+ /* Desktop: Horizontal bottom section */
3935
4104
  .footer-columns .footer-bottom {
3936
- flex-direction: column;
3937
- align-items: flex-start;
4105
+ flex-direction: row;
4106
+ align-items: center;
4107
+ justify-content: space-between;
3938
4108
  }
3939
4109
 
3940
4110
  .footer-columns .footer-copyright {
3941
- width: 100%;
3942
- text-align: left;
4111
+ width: auto;
3943
4112
  }
3944
4113
 
3945
4114
  .footer-social {
3946
- width: 100%;
4115
+ width: auto;
3947
4116
  }
3948
4117
  }
3949
4118
  /* ============================================
@@ -4229,7 +4398,7 @@ code {
4229
4398
 
4230
4399
  /* Timer display */
4231
4400
  .dm-timer-display {
4232
- font-size: 2.5rem;
4401
+ font-size: 2rem; /* Mobile default */
4233
4402
  font-weight: 600;
4234
4403
  font-family: 'Courier New', monospace;
4235
4404
  color: var(--dm-slate-900);
@@ -4331,16 +4500,18 @@ code {
4331
4500
  display: none !important;
4332
4501
  }
4333
4502
 
4334
- /* Responsive timer styles */
4335
- @media (max-width: 576px) {
4503
+ /* Mobile-first: Timer base styles are already mobile-optimized above */
4504
+
4505
+ /* Desktop (≥577px) - Timer enhancements */
4506
+ @media (min-width: 577px) {
4336
4507
  .dm-timer-display {
4337
- font-size: 2rem;
4508
+ font-size: 3rem; /* Larger on desktop */
4338
4509
  }
4339
4510
 
4340
4511
  .dm-timer-button {
4341
- padding: 0.375rem 0.75rem;
4342
- font-size: 0.8125rem;
4343
- min-width: 70px;
4512
+ padding: 0.5rem 1rem;
4513
+ font-size: 0.875rem;
4514
+ min-width: 80px;
4344
4515
  }
4345
4516
  }
4346
4517
 
@@ -4600,6 +4771,47 @@ code {
4600
4771
  background-color: var(--dm-info);
4601
4772
  }
4602
4773
 
4774
+ /* Toast internal structure */
4775
+ .domma-toast-icon {
4776
+ flex-shrink: 0;
4777
+ margin-right: 0.75rem;
4778
+ }
4779
+
4780
+ .domma-toast-content {
4781
+ flex-grow: 1;
4782
+ min-width: 0;
4783
+ }
4784
+
4785
+ .domma-toast-title {
4786
+ font-weight: 600;
4787
+ margin-bottom: 0.25rem;
4788
+ }
4789
+
4790
+ .domma-toast-message {
4791
+ font-size: 0.9rem;
4792
+ opacity: 0.9;
4793
+ }
4794
+
4795
+ .domma-toast-close {
4796
+ flex-shrink: 0;
4797
+ margin-left: auto;
4798
+ padding-left: 0.75rem;
4799
+ background: none;
4800
+ border: none;
4801
+ color: inherit;
4802
+ cursor: pointer;
4803
+ opacity: 0.7;
4804
+ transition: opacity 0.15s;
4805
+ }
4806
+
4807
+ .domma-toast-close:hover {
4808
+ opacity: 1;
4809
+ }
4810
+
4811
+ .domma-toast-close svg {
4812
+ display: block;
4813
+ }
4814
+
4603
4815
 
4604
4816
  /* ============================================
4605
4817
  BACK TO TOP BUTTON
@@ -4607,14 +4819,14 @@ code {
4607
4819
 
4608
4820
  .dm-back-to-top {
4609
4821
  position: fixed;
4610
- bottom: 2rem;
4611
- right: 2rem;
4822
+ bottom: 1rem; /* Mobile default: compact positioning */
4823
+ right: 1rem;
4612
4824
  z-index: 1000;
4613
4825
  display: flex;
4614
4826
  align-items: center;
4615
4827
  justify-content: center;
4616
- width: 3rem;
4617
- height: 3rem;
4828
+ width: 2.5rem; /* Mobile default: smaller button */
4829
+ height: 2.5rem;
4618
4830
  padding: 0;
4619
4831
  background-color: var(--dm-primary);
4620
4832
  color: var(--dm-white);
@@ -4648,12 +4860,13 @@ code {
4648
4860
  box-shadow: 0 0 0 3px var(--dm-focus-ring);
4649
4861
  }
4650
4862
 
4651
- @media (max-width: 576px) {
4863
+ /* Desktop (≥577px) - Back to Top enhancements */
4864
+ @media (min-width: 577px) {
4652
4865
  .dm-back-to-top {
4653
- bottom: 1rem;
4654
- right: 1rem;
4655
- width: 2.5rem;
4656
- height: 2.5rem;
4866
+ bottom: 1.5rem; /* More spacing on desktop */
4867
+ right: 1.5rem;
4868
+ width: 3rem; /* Larger button on desktop */
4869
+ height: 3rem;
4657
4870
  }
4658
4871
  }
4659
4872
 
@@ -5482,41 +5695,48 @@ code {
5482
5695
  /* Default styles already applied above */
5483
5696
  }
5484
5697
 
5485
- /* Centered Layout */
5698
+ /* Centered Layout - Mobile default: left-aligned */
5486
5699
  .dm-timeline-centered::before {
5487
5700
  content: '';
5488
5701
  position: absolute;
5489
- left: 50%;
5702
+ left: 30px; /* Mobile default: left-aligned line */
5490
5703
  top: 0;
5491
5704
  bottom: 0;
5492
5705
  width: 2px;
5493
5706
  background: var(--dm-gray-300);
5494
- transform: translateX(-50%);
5707
+ transform: none;
5495
5708
  }
5496
5709
 
5497
5710
  .dm-timeline-centered .dm-timeline-item {
5498
- width: 50%;
5499
- padding-right: var(--dm-space-8);
5500
- justify-content: flex-end;
5711
+ width: 100%; /* Mobile default: full width */
5712
+ left: 0;
5713
+ padding-left: var(--dm-space-16); /* Mobile: space for left line */
5714
+ padding-right: 0;
5715
+ justify-content: flex-start;
5501
5716
  }
5502
5717
 
5503
5718
  .dm-timeline-centered .dm-timeline-item:nth-child(even) {
5504
- left: 50%;
5505
- padding-left: var(--dm-space-8);
5719
+ width: 100%; /* Mobile: same as odd items */
5720
+ left: 0;
5721
+ padding-left: var(--dm-space-16);
5506
5722
  padding-right: 0;
5507
5723
  justify-content: flex-start;
5508
5724
  }
5509
5725
 
5510
5726
  .dm-timeline-centered .dm-timeline-year {
5511
- order: 2;
5512
- margin-left: var(--dm-space-6);
5513
- margin-right: 0;
5727
+ order: 0; /* Mobile: year badge on left */
5728
+ margin-right: var(--dm-space-6);
5729
+ margin-left: 0;
5730
+ position: absolute;
5731
+ left: 0;
5514
5732
  }
5515
5733
 
5516
5734
  .dm-timeline-centered .dm-timeline-item:nth-child(even) .dm-timeline-year {
5517
- order: 0;
5518
- margin-left: 0;
5735
+ order: 0; /* Mobile: same as odd items */
5519
5736
  margin-right: var(--dm-space-6);
5737
+ margin-left: 0;
5738
+ position: absolute;
5739
+ left: 0;
5520
5740
  }
5521
5741
 
5522
5742
  /* Horizontal Layout */
@@ -5564,33 +5784,34 @@ code {
5564
5784
  border-color: var(--dm-slate-200);
5565
5785
  }
5566
5786
 
5567
- /* Responsive Design */
5568
- @media (max-width: 768px) {
5569
- .dm-timeline-centered {
5570
- /* Switch to vertical layout on mobile */
5787
+ /* Desktop (≥769px) - Timeline/Progression centered enhancements */
5788
+ @media (min-width: 769px) {
5789
+ .dm-timeline-centered::before {
5790
+ left: 50%; /* Center line on desktop */
5791
+ transform: translateX(-50%);
5571
5792
  }
5572
5793
 
5573
- .dm-timeline-centered::before {
5574
- left: 30px;
5575
- transform: none;
5794
+ .dm-timeline-centered .dm-timeline-item {
5795
+ width: 50%; /* Half width for alternating layout */
5796
+ left: 0;
5797
+ padding-left: 0;
5798
+ padding-right: var(--dm-space-8);
5799
+ justify-content: flex-end;
5576
5800
  }
5577
5801
 
5578
- .dm-timeline-centered .dm-timeline-item,
5579
5802
  .dm-timeline-centered .dm-timeline-item:nth-child(even) {
5580
- width: 100%;
5581
- left: 0;
5582
- padding-left: var(--dm-space-16);
5803
+ left: 50%;
5804
+ padding-left: var(--dm-space-8);
5583
5805
  padding-right: 0;
5584
5806
  justify-content: flex-start;
5585
5807
  }
5586
5808
 
5587
- .dm-timeline-centered .dm-timeline-year,
5588
- .dm-timeline-centered .dm-timeline-item:nth-child(even) .dm-timeline-year {
5589
- order: 0;
5590
- margin-right: var(--dm-space-6);
5591
- margin-left: 0;
5592
- position: absolute;
5593
- left: 0;
5809
+ .dm-timeline-centered .dm-timeline-year {
5810
+ order: 1;
5811
+ margin-right: 0;
5812
+ margin-left: var(--dm-space-6);
5813
+ position: relative;
5814
+ left: auto;
5594
5815
  width: 80px;
5595
5816
  }
5596
5817
 
@@ -5724,15 +5945,16 @@ code {
5724
5945
  /* Horizontal layout */
5725
5946
  .dm-progression-horizontal {
5726
5947
  display: flex;
5948
+ flex-direction: column; /* Mobile default: vertical stacking */
5727
5949
  overflow-x: auto;
5728
5950
  padding-bottom: var(--dm-space-4);
5729
5951
  }
5730
5952
 
5731
5953
  .dm-progression-horizontal .dm-progression-item {
5732
5954
  flex-direction: column;
5733
- min-width: 250px;
5734
- margin-right: var(--dm-space-4);
5735
- margin-bottom: 0;
5955
+ min-width: 100%; /* Mobile default: full width stacking */
5956
+ margin-right: 0;
5957
+ margin-bottom: var(--dm-space-4);
5736
5958
  }
5737
5959
 
5738
5960
  /* Progress bar (Roadmap mode) */
@@ -5997,20 +6219,20 @@ code {
5997
6219
  border-color: var(--dm-slate-700);
5998
6220
  }
5999
6221
 
6000
- /* Responsive design */
6001
- @media (max-width: 768px) {
6222
+ /* Desktop (≥769px) - Progression enhancements */
6223
+ @media (min-width: 769px) {
6002
6224
  .dm-progression-centered .dm-progression-item:nth-child(even) {
6003
- flex-direction: row;
6225
+ flex-direction: row-reverse; /* Alternate direction on desktop */
6004
6226
  }
6005
6227
 
6006
6228
  .dm-progression-horizontal {
6007
- flex-direction: column;
6229
+ flex-direction: row; /* Horizontal on desktop */
6008
6230
  }
6009
6231
 
6010
6232
  .dm-progression-horizontal .dm-progression-item {
6011
- min-width: 100%;
6012
- margin-right: 0;
6013
- margin-bottom: var(--dm-space-4);
6233
+ min-width: auto;
6234
+ margin-right: var(--dm-space-6);
6235
+ margin-bottom: 0;
6014
6236
  }
6015
6237
  }
6016
6238
 
@@ -6040,14 +6262,16 @@ code {
6040
6262
 
6041
6263
  .dm-cookie-consent-bottom-left {
6042
6264
  bottom: 20px;
6043
- left: 20px;
6044
- max-width: 400px;
6265
+ left: 10px; /* Mobile default: minimal margins */
6266
+ right: 10px; /* Mobile: full width minus margins */
6267
+ max-width: none; /* Mobile: no width constraint */
6045
6268
  }
6046
6269
 
6047
6270
  .dm-cookie-consent-bottom-right {
6048
6271
  bottom: 20px;
6049
- right: 20px;
6050
- max-width: 400px;
6272
+ left: 10px; /* Mobile default: minimal margins */
6273
+ right: 10px; /* Mobile: full width minus margins */
6274
+ max-width: none; /* Mobile: no width constraint */
6051
6275
  }
6052
6276
 
6053
6277
  .dm-cookie-consent-center-modal {
@@ -6061,8 +6285,8 @@ code {
6061
6285
  /* Layout variants */
6062
6286
  .dm-cookie-consent-bar .dm-cookie-consent-content {
6063
6287
  display: flex;
6064
- align-items: center;
6065
- justify-content: space-between;
6288
+ flex-direction: column; /* Mobile default: vertical stacking */
6289
+ align-items: stretch;
6066
6290
  padding: 16px 20px;
6067
6291
  gap: 20px;
6068
6292
  }
@@ -6103,7 +6327,8 @@ code {
6103
6327
  /* Message styles */
6104
6328
  .dm-cookie-consent-message {
6105
6329
  flex: 1;
6106
- margin-right: 20px;
6330
+ margin-right: 0; /* Mobile default: no right margin */
6331
+ margin-bottom: 16px; /* Mobile default: bottom spacing */
6107
6332
  }
6108
6333
 
6109
6334
  .dm-cookie-consent-message a {
@@ -6118,6 +6343,7 @@ code {
6118
6343
  /* Button styles */
6119
6344
  .dm-cookie-consent-buttons {
6120
6345
  display: flex;
6346
+ flex-direction: column; /* Mobile default: vertical buttons */
6121
6347
  gap: 12px;
6122
6348
  flex-shrink: 0;
6123
6349
  }
@@ -6283,26 +6509,31 @@ code {
6283
6509
  gap: 12px;
6284
6510
  }
6285
6511
 
6286
- /* Responsive */
6287
- @media (max-width: 640px) {
6512
+ /* Desktop (≥641px) - Cookie Consent enhancements */
6513
+ @media (min-width: 641px) {
6288
6514
  .dm-cookie-consent-bar .dm-cookie-consent-content {
6289
- flex-direction: column;
6290
- align-items: stretch;
6515
+ flex-direction: row; /* Horizontal on desktop */
6516
+ align-items: center;
6291
6517
  }
6292
6518
 
6293
6519
  .dm-cookie-consent-message {
6294
- margin-right: 0;
6295
- margin-bottom: 16px;
6520
+ margin-right: 24px;
6521
+ margin-bottom: 0;
6296
6522
  }
6297
6523
 
6298
6524
  .dm-cookie-consent-buttons {
6299
- flex-direction: column;
6525
+ flex-direction: row; /* Horizontal buttons on desktop */
6526
+ }
6527
+
6528
+ .dm-cookie-consent-bottom-left {
6529
+ left: 20px;
6530
+ right: auto;
6531
+ max-width: 600px;
6300
6532
  }
6301
6533
 
6302
- .dm-cookie-consent-bottom-left,
6303
6534
  .dm-cookie-consent-bottom-right {
6304
- left: 10px;
6305
- right: 10px;
6306
- max-width: none;
6535
+ left: auto;
6536
+ right: 20px;
6537
+ max-width: 600px;
6307
6538
  }
6308
6539
  }