layout-style-css 1.1.2 → 2.0.0

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.
Files changed (110) hide show
  1. package/CHANGELOG.md +33 -8
  2. package/CONTRIBUTING.md +12 -7
  3. package/README.md +231 -636
  4. package/SECURITY.md +11 -6
  5. package/demo/demo.css +523 -0
  6. package/demo/demo.js +520 -0
  7. package/demo/index.html +323 -976
  8. package/demo/site.webmanifest +1 -1
  9. package/demo/sitemap.xml +1 -1
  10. package/dist/core.css +6 -0
  11. package/dist/{layout-ui-style-kit-bridge.css → integrations/ui-style-kit.css} +13 -8
  12. package/dist/layout-style-css.css +1473 -1903
  13. package/dist/layout-style-css.min.css +1 -1
  14. package/dist/legacy.css +787 -0
  15. package/dist/personalities/bauhaus.css +46 -0
  16. package/dist/personalities/bento.css +43 -0
  17. package/dist/personalities/brutalism.css +36 -0
  18. package/dist/personalities/cyberpunk.css +36 -0
  19. package/dist/personalities/f-pattern.css +48 -0
  20. package/dist/personalities/maximalist.css +51 -0
  21. package/dist/personalities/minimal-saas.css +37 -0
  22. package/dist/personalities/mondrian.css +44 -0
  23. package/dist/personalities/neumorphism.css +46 -0
  24. package/dist/personalities/retro-glass.css +44 -0
  25. package/dist/personalities/retrofuturism.css +36 -0
  26. package/dist/personalities/split-screen.css +41 -0
  27. package/dist/personalities/synthwave.css +48 -0
  28. package/dist/personalities/tactile.css +39 -0
  29. package/dist/personalities/y2k.css +36 -0
  30. package/dist/personalities/z-pattern.css +49 -0
  31. package/dist/personalities.css +18 -0
  32. package/dist/primitives.css +219 -0
  33. package/dist/recipes.css +270 -0
  34. package/dist/utilities.css +162 -0
  35. package/dist/wrappers.css +174 -0
  36. package/docs/wiki/Contributing.md +36 -30
  37. package/docs/wiki/Demo-And-GitHub-Pages.md +53 -39
  38. package/docs/wiki/Getting-Started.md +51 -68
  39. package/docs/wiki/Home.md +33 -48
  40. package/docs/wiki/Installation-And-CDN.md +73 -58
  41. package/docs/wiki/Layout-Primitives.md +48 -57
  42. package/docs/wiki/Layout-Recipes.md +49 -80
  43. package/docs/wiki/Layout-Styles.md +33 -43
  44. package/docs/wiki/Migrating-To-2.0.md +186 -0
  45. package/docs/wiki/Release-And-Publishing.md +75 -69
  46. package/docs/wiki/Security-And-Support.md +36 -34
  47. package/docs/wiki/UI-Style-Kit-Compatibility.md +50 -54
  48. package/docs/wiki/_Sidebar.md +15 -14
  49. package/package.json +36 -45
  50. package/styles/core.css +6 -0
  51. package/styles/{layout-ui-style-kit-bridge.css → integrations/ui-style-kit.css} +13 -8
  52. package/styles/legacy.css +173 -0
  53. package/styles/personalities/bauhaus.css +46 -0
  54. package/styles/personalities/bento.css +43 -0
  55. package/styles/personalities/brutalism.css +36 -0
  56. package/styles/personalities/cyberpunk.css +36 -0
  57. package/styles/personalities/f-pattern.css +48 -0
  58. package/styles/personalities/maximalist.css +51 -0
  59. package/styles/personalities/minimal-saas.css +37 -0
  60. package/styles/personalities/mondrian.css +44 -0
  61. package/styles/personalities/neumorphism.css +46 -0
  62. package/styles/personalities/retro-glass.css +44 -0
  63. package/styles/personalities/retrofuturism.css +36 -0
  64. package/styles/personalities/split-screen.css +41 -0
  65. package/styles/personalities/synthwave.css +48 -0
  66. package/styles/personalities/tactile.css +39 -0
  67. package/styles/personalities/y2k.css +36 -0
  68. package/styles/personalities/z-pattern.css +49 -0
  69. package/styles/personalities.css +18 -0
  70. package/styles/primitives.css +219 -0
  71. package/styles/recipes.css +270 -0
  72. package/styles/utilities.css +162 -0
  73. package/styles/wrappers.css +174 -0
  74. package/dist/layout-all-with-ui-kit-and-interactive-surface.css +0 -3
  75. package/dist/layout-all-with-ui-kit.css +0 -2
  76. package/dist/layout-all.css +0 -18
  77. package/dist/layout-base.css +0 -539
  78. package/dist/layout-style-bauhaus.css +0 -70
  79. package/dist/layout-style-bento.css +0 -76
  80. package/dist/layout-style-brutalism.css +0 -70
  81. package/dist/layout-style-cyberpunk.css +0 -70
  82. package/dist/layout-style-f-pattern.css +0 -76
  83. package/dist/layout-style-maximalist.css +0 -93
  84. package/dist/layout-style-minimal-saas.css +0 -67
  85. package/dist/layout-style-mondrian.css +0 -77
  86. package/dist/layout-style-neumorphism.css +0 -72
  87. package/dist/layout-style-retro-glass.css +0 -82
  88. package/dist/layout-style-retrofuturism.css +0 -71
  89. package/dist/layout-style-split-screen.css +0 -62
  90. package/dist/layout-style-synthwave.css +0 -88
  91. package/dist/layout-style-tactile.css +0 -70
  92. package/dist/layout-style-y2k.css +0 -72
  93. package/dist/layout-style-z-pattern.css +0 -76
  94. package/styles/layout-base.css +0 -539
  95. package/styles/layout-style-bauhaus.css +0 -70
  96. package/styles/layout-style-bento.css +0 -76
  97. package/styles/layout-style-brutalism.css +0 -70
  98. package/styles/layout-style-cyberpunk.css +0 -70
  99. package/styles/layout-style-f-pattern.css +0 -76
  100. package/styles/layout-style-maximalist.css +0 -93
  101. package/styles/layout-style-minimal-saas.css +0 -67
  102. package/styles/layout-style-mondrian.css +0 -77
  103. package/styles/layout-style-neumorphism.css +0 -72
  104. package/styles/layout-style-retro-glass.css +0 -82
  105. package/styles/layout-style-retrofuturism.css +0 -71
  106. package/styles/layout-style-split-screen.css +0 -62
  107. package/styles/layout-style-synthwave.css +0 -88
  108. package/styles/layout-style-tactile.css +0 -70
  109. package/styles/layout-style-y2k.css +0 -72
  110. package/styles/layout-style-z-pattern.css +0 -76
@@ -1,70 +0,0 @@
1
- /*
2
- Layout style: brutalism.
3
- Full-bleed slab shell with abrupt section breaks and compressed rails. Visual
4
- identity remains owned by ui-style-kit-css.
5
- */
6
-
7
- @layer ly.styles.brutalism {
8
- :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) {
9
- --ly-container-max: 100vw;
10
- --ly-page-padding-inline: clamp(0.75rem, 3vw, 3rem);
11
- --ly-section-padding-block: clamp(2rem, 6vw, 5rem);
12
- --ly-sidebar-width: clamp(12rem, 15vw, 16rem);
13
- --ly-grid-min: 12rem;
14
- --ly-gap: clamp(0.75rem, 2vw, 1.5rem);
15
- --ly-grid-gap: var(--ly-gap);
16
- --ly-stack-gap: clamp(0.75rem, 2vw, 1.5rem);
17
- }
18
-
19
- :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-app-main {
20
- padding-block: 0;
21
- }
22
-
23
- :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-container,
24
- :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-wrapper {
25
- width: min(100%, var(--ly-container-max));
26
- }
27
-
28
- :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-section {
29
- padding-block: var(--ly-section-padding-block);
30
- }
31
-
32
- :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-grid--auto {
33
- grid-auto-rows: minmax(7rem, auto);
34
- }
35
-
36
- @media (min-width: 48rem) {
37
- :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-app-shell {
38
- grid-template-areas:
39
- "header header"
40
- "main sidebar";
41
- grid-template-columns: minmax(0, 1fr) minmax(min(100%, 12rem), 0.22fr);
42
- }
43
-
44
- :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-app-sidebar {
45
- display: block;
46
- position: sticky;
47
- top: 0;
48
- height: 100svh;
49
- overflow: auto;
50
- }
51
-
52
- :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-sidebar-layout {
53
- grid-template-columns: minmax(0, 1.55fr) minmax(min(100%, 12rem), 0.45fr);
54
- }
55
-
56
- :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-split {
57
- grid-template-columns: minmax(0, 1.7fr) minmax(min(100%, 12rem), 0.3fr);
58
- }
59
-
60
- :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-panes--two {
61
- grid-template-columns: minmax(min(100%, 12rem), 0.35fr) minmax(0, 1.65fr);
62
- }
63
- }
64
-
65
- @media (min-width: 80rem) {
66
- :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-panes--three {
67
- grid-template-columns: minmax(min(100%, 11rem), 0.28fr) minmax(0, 1.42fr) minmax(min(100%, 14rem), 0.4fr);
68
- }
69
- }
70
- }
@@ -1,70 +0,0 @@
1
- /*
2
- Layout style: cyberpunk.
3
- Narrow utility rail with dense command workspace and compact gutters. Visual
4
- identity remains owned by ui-style-kit-css.
5
- */
6
-
7
- @layer ly.styles.cyberpunk {
8
- :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) {
9
- --ly-container-max: 104rem;
10
- --ly-page-padding-inline: clamp(0.75rem, 2vw, 2rem);
11
- --ly-section-padding-block: clamp(2rem, 5vw, 4rem);
12
- --ly-sidebar-width: clamp(10rem, 12vw, 12.5rem);
13
- --ly-grid-min: 12rem;
14
- --ly-gap: clamp(0.75rem, 1.8vw, 1.25rem);
15
- --ly-grid-gap: var(--ly-gap);
16
- --ly-stack-gap: clamp(0.75rem, 1.5vw, 1.25rem);
17
- }
18
-
19
- :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-app-main {
20
- padding-block: clamp(0.75rem, 2vw, 1.5rem);
21
- }
22
-
23
- :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-container,
24
- :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-wrapper {
25
- width: min(100% - var(--ly-page-padding-inline), var(--ly-container-max));
26
- }
27
-
28
- :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-section {
29
- padding-block: var(--ly-section-padding-block);
30
- }
31
-
32
- :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-grid--auto {
33
- grid-auto-rows: minmax(7rem, auto);
34
- }
35
-
36
- @media (min-width: 48rem) {
37
- :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-app-shell {
38
- grid-template-areas:
39
- "sidebar header"
40
- "sidebar main";
41
- grid-template-columns: minmax(min(100%, var(--ly-sidebar-width)), var(--ly-sidebar-width)) minmax(0, 1fr);
42
- }
43
-
44
- :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-app-sidebar {
45
- display: block;
46
- position: sticky;
47
- top: 0;
48
- height: 100svh;
49
- overflow: auto;
50
- }
51
-
52
- :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-sidebar-layout {
53
- grid-template-columns: minmax(min(100%, 10rem), 0.24fr) minmax(0, 1fr);
54
- }
55
-
56
- :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-split {
57
- grid-template-columns: minmax(0, 1.2fr) minmax(min(100%, 16rem), 0.8fr);
58
- }
59
-
60
- :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-panes--two {
61
- grid-template-columns: minmax(0, 1fr) minmax(min(100%, 15rem), 0.38fr);
62
- }
63
- }
64
-
65
- @media (min-width: 80rem) {
66
- :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-panes--three {
67
- grid-template-columns: minmax(min(100%, 10rem), 0.24fr) minmax(0, 1fr) minmax(min(100%, 16rem), 0.38fr);
68
- }
69
- }
70
- }
@@ -1,76 +0,0 @@
1
- /*
2
- Layout style: f-pattern.
3
- Top-led scan path with a persistent left rail and heavier early content rows.
4
- Visual identity remains owned by ui-style-kit-css.
5
- */
6
-
7
- @layer ly.styles.f_pattern {
8
- :where(.ly-root[data-layout="f-pattern"], .ly-root[layout-style="f-pattern"], .ly-root.ly-layout-f-pattern, .ly-root.ly-style-f-pattern) {
9
- --ly-container-max: 94rem;
10
- --ly-page-padding-inline: clamp(1rem, 3vw, 2.75rem);
11
- --ly-section-padding-block: clamp(2rem, 5vw, 4.5rem);
12
- --ly-sidebar-width: clamp(13rem, 19vw, 20rem);
13
- --ly-grid-min: 15rem;
14
- --ly-gap: clamp(1rem, 2.25vw, 1.85rem);
15
- --ly-grid-gap: var(--ly-gap);
16
- --ly-stack-gap: clamp(0.875rem, 1.8vw, 1.45rem);
17
- }
18
-
19
- :where(.ly-root[data-layout="f-pattern"], .ly-root[layout-style="f-pattern"], .ly-root.ly-layout-f-pattern, .ly-root.ly-style-f-pattern) .ly-app-main {
20
- padding-block: clamp(0.75rem, 2vw, 2rem);
21
- }
22
-
23
- :where(.ly-root[data-layout="f-pattern"], .ly-root[layout-style="f-pattern"], .ly-root.ly-layout-f-pattern, .ly-root.ly-style-f-pattern) .ly-container,
24
- :where(.ly-root[data-layout="f-pattern"], .ly-root[layout-style="f-pattern"], .ly-root.ly-layout-f-pattern, .ly-root.ly-style-f-pattern) .ly-wrapper {
25
- width: min(100% - var(--ly-page-padding-inline), var(--ly-container-max));
26
- }
27
-
28
- :where(.ly-root[data-layout="f-pattern"], .ly-root[layout-style="f-pattern"], .ly-root.ly-layout-f-pattern, .ly-root.ly-style-f-pattern) .ly-section {
29
- padding-block: var(--ly-section-padding-block);
30
- }
31
-
32
- :where(.ly-root[data-layout="f-pattern"], .ly-root[layout-style="f-pattern"], .ly-root.ly-layout-f-pattern, .ly-root.ly-style-f-pattern) .ly-grid--auto {
33
- grid-auto-rows: minmax(8rem, auto);
34
- }
35
-
36
- @media (min-width: 48rem) {
37
- :where(.ly-root[data-layout="f-pattern"], .ly-root[layout-style="f-pattern"], .ly-root.ly-layout-f-pattern, .ly-root.ly-style-f-pattern) .ly-app-shell {
38
- grid-template-areas:
39
- "header header"
40
- "sidebar main";
41
- grid-template-columns: minmax(min(100%, 13rem), 0.3fr) minmax(0, 1fr);
42
- grid-template-rows: auto 1fr;
43
- }
44
-
45
- :where(.ly-root[data-layout="f-pattern"], .ly-root[layout-style="f-pattern"], .ly-root.ly-layout-f-pattern, .ly-root.ly-style-f-pattern) .ly-app-sidebar {
46
- display: block;
47
- position: sticky;
48
- top: 0;
49
- height: 100svh;
50
- overflow: auto;
51
- }
52
-
53
- :where(.ly-root[data-layout="f-pattern"], .ly-root[layout-style="f-pattern"], .ly-root.ly-layout-f-pattern, .ly-root.ly-style-f-pattern) .ly-grid--auto > :nth-child(3n + 1) {
54
- grid-column: span 2;
55
- min-height: 13rem;
56
- }
57
-
58
- :where(.ly-root[data-layout="f-pattern"], .ly-root[layout-style="f-pattern"], .ly-root.ly-layout-f-pattern, .ly-root.ly-style-f-pattern) .ly-sidebar-layout {
59
- grid-template-columns: minmax(min(100%, 14rem), 0.34fr) minmax(0, 1fr);
60
- }
61
-
62
- :where(.ly-root[data-layout="f-pattern"], .ly-root[layout-style="f-pattern"], .ly-root.ly-layout-f-pattern, .ly-root.ly-style-f-pattern) .ly-split {
63
- grid-template-columns: minmax(0, 1.35fr) minmax(min(100%, 18rem), 0.65fr);
64
- }
65
-
66
- :where(.ly-root[data-layout="f-pattern"], .ly-root[layout-style="f-pattern"], .ly-root.ly-layout-f-pattern, .ly-root.ly-style-f-pattern) .ly-panes--two {
67
- grid-template-columns: minmax(min(100%, 15rem), 0.38fr) minmax(0, 1fr);
68
- }
69
- }
70
-
71
- @media (min-width: 80rem) {
72
- :where(.ly-root[data-layout="f-pattern"], .ly-root[layout-style="f-pattern"], .ly-root.ly-layout-f-pattern, .ly-root.ly-style-f-pattern) .ly-panes--three {
73
- grid-template-columns: minmax(min(100%, 13rem), 0.28fr) minmax(0, 1.28fr) minmax(min(100%, 16rem), 0.44fr);
74
- }
75
- }
76
- }
@@ -1,93 +0,0 @@
1
- /*
2
- Layout style: maximalist.
3
- Editorial shell with oversized hero splits and staggered supporting regions.
4
- Visual identity remains owned by ui-style-kit-css.
5
- */
6
-
7
- @layer ly.styles.maximalist {
8
- :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) {
9
- --ly-container-max: 102rem;
10
- --ly-page-padding-inline: clamp(1rem, 6vw, 5.5rem);
11
- --ly-section-padding-block: clamp(4rem, 13vw, 10rem);
12
- --ly-sidebar-width: clamp(13rem, 18vw, 20rem);
13
- --ly-grid-min: 14rem;
14
- --ly-gap: clamp(1.25rem, 4vw, 3rem);
15
- --ly-grid-gap: var(--ly-gap);
16
- --ly-stack-gap: clamp(1.5rem, 4vw, 3.5rem);
17
- }
18
-
19
- :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-app-main {
20
- padding-block: clamp(1rem, 3vw, 3rem);
21
- }
22
-
23
- :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-container,
24
- :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-wrapper {
25
- width: min(100% - var(--ly-page-padding-inline), var(--ly-container-max));
26
- }
27
-
28
- :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-section {
29
- padding-block: clamp(3.5rem, 11vw, 8rem);
30
- }
31
-
32
- :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-split {
33
- align-items: stretch;
34
- }
35
-
36
- :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-grid--auto {
37
- grid-auto-rows: minmax(10rem, auto);
38
- }
39
-
40
- @media (min-width: 48rem) {
41
- :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-split {
42
- /* Keep the editorial stage stacked until the wider shell can carry the oversized rhythm. */
43
- grid-template-columns: 1fr;
44
- }
45
-
46
- :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-grid--auto > :nth-child(5n + 1) {
47
- grid-column: span 2;
48
- min-height: 24rem;
49
- }
50
-
51
- :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-grid--auto > :nth-child(5n + 3) {
52
- transform: translateY(var(--ly-space-7));
53
- }
54
- }
55
-
56
- @media (min-width: 56rem) {
57
- :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-app-shell {
58
- grid-template-areas:
59
- "header header"
60
- "main sidebar";
61
- grid-template-columns: minmax(0, 1fr) minmax(min(100%, 13rem), 0.28fr);
62
- }
63
-
64
- :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-app-sidebar {
65
- display: block;
66
- position: sticky;
67
- top: calc(var(--ly-gap) * 1.5);
68
- height: max-content;
69
- margin-block: clamp(2rem, 8vw, 7rem);
70
- transform: translateX(calc(var(--ly-gap) * -0.35));
71
- overflow: auto;
72
- }
73
-
74
- :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-sidebar-layout {
75
- grid-template-columns: minmax(0, 1.55fr) minmax(min(100%, 15rem), 0.45fr);
76
- }
77
-
78
- :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-split {
79
- grid-template-columns: minmax(0, 1.62fr) minmax(min(100%, 16rem), 0.54fr);
80
- gap: clamp(1.5rem, 6vw, 5rem);
81
- }
82
-
83
- :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-panes--two {
84
- grid-template-columns: minmax(min(100%, 16rem), 0.44fr) minmax(0, 1.56fr);
85
- }
86
- }
87
-
88
- @media (min-width: 80rem) {
89
- :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-panes--three {
90
- grid-template-columns: minmax(min(100%, 14rem), 0.34fr) minmax(0, 1.28fr) minmax(min(100%, 18rem), 0.58fr);
91
- }
92
- }
93
- }
@@ -1,67 +0,0 @@
1
- /*
2
- Layout style: minimal-saas.
3
- Steady left-rail SaaS shell with conservative content widths and predictable
4
- workspace rhythm. Visual identity remains owned by ui-style-kit-css.
5
- */
6
-
7
- @layer ly.styles.minimal_saas {
8
- :where(.ly-root[data-layout="minimal-saas"], .ly-root[layout-style="minimal-saas"], .ly-root.ly-layout-minimal-saas, .ly-root.ly-style-minimal-saas) {
9
- --ly-container-max: 88rem;
10
- --ly-page-padding-inline: clamp(1rem, 3vw, 2.5rem);
11
- --ly-section-padding-block: clamp(2rem, 5vw, 4rem);
12
- --ly-sidebar-width: clamp(15rem, 18vw, 19rem);
13
- --ly-grid-min: 16rem;
14
- --ly-gap: clamp(1rem, 2vw, 1.75rem);
15
- --ly-grid-gap: var(--ly-gap);
16
- --ly-stack-gap: clamp(0.875rem, 1.6vw, 1.35rem);
17
- }
18
-
19
- :where(.ly-root[data-layout="minimal-saas"], .ly-root[layout-style="minimal-saas"], .ly-root.ly-layout-minimal-saas, .ly-root.ly-style-minimal-saas) .ly-app-main {
20
- padding-block: clamp(1rem, 2vw, 2rem);
21
- }
22
-
23
- :where(.ly-root[data-layout="minimal-saas"], .ly-root[layout-style="minimal-saas"], .ly-root.ly-layout-minimal-saas, .ly-root.ly-style-minimal-saas) .ly-container,
24
- :where(.ly-root[data-layout="minimal-saas"], .ly-root[layout-style="minimal-saas"], .ly-root.ly-layout-minimal-saas, .ly-root.ly-style-minimal-saas) .ly-wrapper {
25
- width: min(100% - var(--ly-page-padding-inline), var(--ly-container-max));
26
- }
27
-
28
- :where(.ly-root[data-layout="minimal-saas"], .ly-root[layout-style="minimal-saas"], .ly-root.ly-layout-minimal-saas, .ly-root.ly-style-minimal-saas) .ly-section {
29
- padding-block: var(--ly-section-padding-block);
30
- }
31
-
32
- :where(.ly-root[data-layout="minimal-saas"], .ly-root[layout-style="minimal-saas"], .ly-root.ly-layout-minimal-saas, .ly-root.ly-style-minimal-saas) .ly-grid--auto {
33
- grid-auto-rows: minmax(8rem, auto);
34
- }
35
-
36
- @media (min-width: 48rem) {
37
- :where(.ly-root[data-layout="minimal-saas"], .ly-root[layout-style="minimal-saas"], .ly-root.ly-layout-minimal-saas, .ly-root.ly-style-minimal-saas) .ly-app-shell {
38
- grid-template-areas:
39
- "sidebar header"
40
- "sidebar main";
41
- grid-template-columns: minmax(min(100%, 14rem), var(--ly-sidebar-width)) minmax(0, 1fr);
42
- }
43
-
44
- :where(.ly-root[data-layout="minimal-saas"], .ly-root[layout-style="minimal-saas"], .ly-root.ly-layout-minimal-saas, .ly-root.ly-style-minimal-saas) .ly-app-sidebar {
45
- display: block;
46
- position: sticky;
47
- top: 0;
48
- height: 100svh;
49
- overflow: auto;
50
- }
51
-
52
- :where(.ly-root[data-layout="minimal-saas"], .ly-root[layout-style="minimal-saas"], .ly-root.ly-layout-minimal-saas, .ly-root.ly-style-minimal-saas) .ly-sidebar-layout {
53
- grid-template-columns: minmax(min(100%, 14rem), 0.24fr) minmax(0, 1fr);
54
- }
55
-
56
- :where(.ly-root[data-layout="minimal-saas"], .ly-root[layout-style="minimal-saas"], .ly-root.ly-layout-minimal-saas, .ly-root.ly-style-minimal-saas) .ly-split,
57
- :where(.ly-root[data-layout="minimal-saas"], .ly-root[layout-style="minimal-saas"], .ly-root.ly-layout-minimal-saas, .ly-root.ly-style-minimal-saas) .ly-panes--two {
58
- grid-template-columns: minmax(0, 1fr) minmax(min(100%, 18rem), 0.44fr);
59
- }
60
- }
61
-
62
- @media (min-width: 80rem) {
63
- :where(.ly-root[data-layout="minimal-saas"], .ly-root[layout-style="minimal-saas"], .ly-root.ly-layout-minimal-saas, .ly-root.ly-style-minimal-saas) .ly-panes--three {
64
- grid-template-columns: minmax(min(100%, 13rem), 0.22fr) minmax(0, 1fr) minmax(min(100%, 16rem), 0.32fr);
65
- }
66
- }
67
- }
@@ -1,77 +0,0 @@
1
- /*
2
- Layout style: mondrian.
3
- Asymmetrical rectangular blocks with staggered spans inspired by Mondrian
4
- composition. Visual identity remains owned by ui-style-kit-css.
5
- */
6
-
7
- @layer ly.styles.mondrian {
8
- :where(.ly-root[data-layout="mondrian"], .ly-root[layout-style="mondrian"], .ly-root.ly-layout-mondrian, .ly-root.ly-style-mondrian) {
9
- --ly-container-max: 108rem;
10
- --ly-page-padding-inline: clamp(0.75rem, 2.5vw, 2rem);
11
- --ly-section-padding-block: clamp(1.75rem, 4.5vw, 4rem);
12
- --ly-sidebar-width: clamp(11rem, 16vw, 17rem);
13
- --ly-grid-min: 11rem;
14
- --ly-gap: clamp(0.75rem, 1.6vw, 1.25rem);
15
- --ly-grid-gap: var(--ly-gap);
16
- --ly-stack-gap: clamp(0.75rem, 1.5vw, 1.2rem);
17
- }
18
-
19
- :where(.ly-root[data-layout="mondrian"], .ly-root[layout-style="mondrian"], .ly-root.ly-layout-mondrian, .ly-root.ly-style-mondrian) .ly-app-main {
20
- padding-block: clamp(0.75rem, 1.8vw, 1.5rem);
21
- }
22
-
23
- :where(.ly-root[data-layout="mondrian"], .ly-root[layout-style="mondrian"], .ly-root.ly-layout-mondrian, .ly-root.ly-style-mondrian) .ly-container,
24
- :where(.ly-root[data-layout="mondrian"], .ly-root[layout-style="mondrian"], .ly-root.ly-layout-mondrian, .ly-root.ly-style-mondrian) .ly-wrapper {
25
- width: min(100% - var(--ly-page-padding-inline), var(--ly-container-max));
26
- }
27
-
28
- :where(.ly-root[data-layout="mondrian"], .ly-root[layout-style="mondrian"], .ly-root.ly-layout-mondrian, .ly-root.ly-style-mondrian) .ly-section {
29
- padding-block: var(--ly-section-padding-block);
30
- }
31
-
32
- :where(.ly-root[data-layout="mondrian"], .ly-root[layout-style="mondrian"], .ly-root.ly-layout-mondrian, .ly-root.ly-style-mondrian) .ly-grid--auto {
33
- grid-auto-rows: minmax(7rem, auto);
34
- }
35
-
36
- @media (min-width: 48rem) {
37
- :where(.ly-root[data-layout="mondrian"], .ly-root[layout-style="mondrian"], .ly-root.ly-layout-mondrian, .ly-root.ly-style-mondrian) .ly-app-shell {
38
- grid-template-areas:
39
- "sidebar header header"
40
- "sidebar main main";
41
- grid-template-columns: minmax(min(100%, 11rem), 0.28fr) minmax(0, 0.86fr) minmax(0, 1.14fr);
42
- grid-template-rows: auto 1fr;
43
- }
44
-
45
- :where(.ly-root[data-layout="mondrian"], .ly-root[layout-style="mondrian"], .ly-root.ly-layout-mondrian, .ly-root.ly-style-mondrian) .ly-app-sidebar {
46
- display: block;
47
- position: sticky;
48
- top: var(--ly-space-3);
49
- height: calc(100svh - (var(--ly-space-3) * 2));
50
- overflow: auto;
51
- }
52
-
53
- :where(.ly-root[data-layout="mondrian"], .ly-root[layout-style="mondrian"], .ly-root.ly-layout-mondrian, .ly-root.ly-style-mondrian) .ly-grid--auto > :nth-child(5n + 1) {
54
- grid-column: span 2;
55
- grid-row: span 2;
56
- min-height: 15rem;
57
- }
58
-
59
- :where(.ly-root[data-layout="mondrian"], .ly-root[layout-style="mondrian"], .ly-root.ly-layout-mondrian, .ly-root.ly-style-mondrian) .ly-sidebar-layout {
60
- grid-template-columns: minmax(min(100%, 11rem), 0.25fr) minmax(0, 1fr);
61
- }
62
-
63
- :where(.ly-root[data-layout="mondrian"], .ly-root[layout-style="mondrian"], .ly-root.ly-layout-mondrian, .ly-root.ly-style-mondrian) .ly-split {
64
- grid-template-columns: minmax(0, 0.7fr) minmax(min(100%, 20rem), 1.3fr);
65
- }
66
-
67
- :where(.ly-root[data-layout="mondrian"], .ly-root[layout-style="mondrian"], .ly-root.ly-layout-mondrian, .ly-root.ly-style-mondrian) .ly-panes--two {
68
- grid-template-columns: minmax(min(100%, 13rem), 0.46fr) minmax(0, 1.54fr);
69
- }
70
- }
71
-
72
- @media (min-width: 80rem) {
73
- :where(.ly-root[data-layout="mondrian"], .ly-root[layout-style="mondrian"], .ly-root.ly-layout-mondrian, .ly-root.ly-style-mondrian) .ly-panes--three {
74
- grid-template-columns: minmax(min(100%, 11rem), 0.28fr) minmax(0, 1.44fr) minmax(min(100%, 13rem), 0.28fr);
75
- }
76
- }
77
- }
@@ -1,72 +0,0 @@
1
- /*
2
- Layout style: neumorphism.
3
- Centered island shell with detached support regions. Visual identity remains
4
- owned by ui-style-kit-css.
5
- */
6
-
7
- @layer ly.styles.neumorphism {
8
- :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) {
9
- --ly-container-max: 86rem;
10
- --ly-page-padding-inline: clamp(1.25rem, 5vw, 4rem);
11
- --ly-section-padding-block: clamp(3rem, 8vw, 6rem);
12
- --ly-sidebar-width: clamp(16rem, 20vw, 20rem);
13
- --ly-grid-min: 16rem;
14
- --ly-gap: clamp(1.25rem, 3vw, 2.5rem);
15
- --ly-grid-gap: var(--ly-gap);
16
- --ly-stack-gap: clamp(1.25rem, 2.5vw, 2rem);
17
- }
18
-
19
- :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-app-main {
20
- padding-block: clamp(2rem, 5vw, 4rem);
21
- }
22
-
23
- :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-container,
24
- :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-wrapper {
25
- width: min(100% - var(--ly-page-padding-inline), var(--ly-container-max));
26
- }
27
-
28
- :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-section {
29
- padding-block: var(--ly-section-padding-block);
30
- }
31
-
32
- :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-grid--auto {
33
- grid-auto-rows: minmax(9rem, auto);
34
- }
35
-
36
- @media (min-width: 56rem) {
37
- :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-app-shell {
38
- grid-template-areas:
39
- "header header"
40
- "main sidebar";
41
- grid-template-columns: minmax(0, 1fr) minmax(min(100%, 16rem), 0.34fr);
42
- align-items: start;
43
- }
44
-
45
- :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-app-sidebar {
46
- display: block;
47
- position: sticky;
48
- top: clamp(1rem, 3vw, 2rem);
49
- max-height: calc(100svh - clamp(2rem, 6vw, 4rem));
50
- margin: clamp(1rem, 4vw, 3rem) clamp(1rem, 4vw, 3rem) clamp(1rem, 4vw, 3rem) 0;
51
- overflow: auto;
52
- }
53
-
54
- :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-sidebar-layout {
55
- grid-template-columns: minmax(0, 1fr) minmax(min(100%, 16rem), 0.42fr);
56
- }
57
-
58
- :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-split {
59
- grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
60
- }
61
-
62
- :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-panes--two {
63
- grid-template-columns: minmax(0, 1fr) minmax(min(100%, 17rem), 0.5fr);
64
- }
65
- }
66
-
67
- @media (min-width: 80rem) {
68
- :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-panes--three {
69
- grid-template-columns: minmax(min(100%, 15rem), 0.38fr) minmax(0, 1fr) minmax(min(100%, 15rem), 0.38fr);
70
- }
71
- }
72
- }
@@ -1,82 +0,0 @@
1
- /*
2
- Layout style: retro-glass.
3
- Top-framed content shell with a floating right utility rail. Visual identity
4
- remains owned by ui-style-kit-css.
5
- */
6
-
7
- @layer ly.styles.retro_glass {
8
- :where(.ly-root[data-layout="retro-glass"], .ly-root[layout-style="retro-glass"], .ly-root.ly-layout-retro-glass, .ly-root.ly-style-retro-glass) {
9
- --ly-container-max: 96rem;
10
- --ly-page-padding-inline: clamp(1rem, 4vw, 3rem);
11
- --ly-section-padding-block: clamp(3rem, 8vw, 6rem);
12
- --ly-sidebar-width: 18rem;
13
- --ly-grid-min: 15rem;
14
- --ly-gap: clamp(1rem, 2.6vw, 2rem);
15
- --ly-grid-gap: var(--ly-gap);
16
- --ly-stack-gap: clamp(1rem, 2vw, 1.75rem);
17
- }
18
-
19
- :where(.ly-root[data-layout="retro-glass"], .ly-root[layout-style="retro-glass"], .ly-root.ly-layout-retro-glass, .ly-root.ly-style-retro-glass) .ly-app-main {
20
- padding: clamp(1rem, 3vw, 2rem);
21
- }
22
-
23
- :where(.ly-root[data-layout="retro-glass"], .ly-root[layout-style="retro-glass"], .ly-root.ly-layout-retro-glass, .ly-root.ly-style-retro-glass) .ly-container,
24
- :where(.ly-root[data-layout="retro-glass"], .ly-root[layout-style="retro-glass"], .ly-root.ly-layout-retro-glass, .ly-root.ly-style-retro-glass) .ly-wrapper {
25
- width: min(100%, var(--ly-container-max));
26
- }
27
-
28
- :where(.ly-root[data-layout="retro-glass"], .ly-root[layout-style="retro-glass"], .ly-root.ly-layout-retro-glass, .ly-root.ly-style-retro-glass) .ly-section {
29
- padding-block: clamp(2rem, 6vw, 5rem);
30
- }
31
-
32
- :where(.ly-root[data-layout="retro-glass"], .ly-root[layout-style="retro-glass"], .ly-root.ly-layout-retro-glass, .ly-root.ly-style-retro-glass) .ly-split {
33
- align-items: stretch;
34
- }
35
-
36
- :where(.ly-root[data-layout="retro-glass"], .ly-root[layout-style="retro-glass"], .ly-root.ly-layout-retro-glass, .ly-root.ly-style-retro-glass) .ly-grid--auto {
37
- grid-auto-rows: minmax(9rem, auto);
38
- }
39
-
40
- @media (min-width: 48rem) {
41
- :where(.ly-root[data-layout="retro-glass"], .ly-root[layout-style="retro-glass"], .ly-root.ly-layout-retro-glass, .ly-root.ly-style-retro-glass) .ly-split {
42
- /* Keep glass feature panels stacked until the floating rail has enough horizontal room. */
43
- grid-template-columns: 1fr;
44
- }
45
-
46
- :where(.ly-root[data-layout="retro-glass"], .ly-root[layout-style="retro-glass"], .ly-root.ly-layout-retro-glass, .ly-root.ly-style-retro-glass) .ly-panes--two {
47
- grid-template-columns: minmax(0, 1fr) minmax(min(100%, 16rem), 0.62fr);
48
- }
49
- }
50
-
51
- @media (min-width: 56rem) {
52
- :where(.ly-root[data-layout="retro-glass"], .ly-root[layout-style="retro-glass"], .ly-root.ly-layout-retro-glass, .ly-root.ly-style-retro-glass) .ly-app-shell {
53
- grid-template-areas:
54
- "header header"
55
- "main sidebar";
56
- grid-template-columns: minmax(0, 1fr) minmax(min(100%, 16rem), var(--ly-sidebar-width));
57
- }
58
-
59
- :where(.ly-root[data-layout="retro-glass"], .ly-root[layout-style="retro-glass"], .ly-root.ly-layout-retro-glass, .ly-root.ly-style-retro-glass) .ly-app-sidebar {
60
- display: block;
61
- position: sticky;
62
- top: var(--ly-space-4);
63
- height: calc(100svh - (var(--ly-space-4) * 2));
64
- margin: var(--ly-space-4) var(--ly-space-4) var(--ly-space-4) 0;
65
- overflow: auto;
66
- }
67
-
68
- :where(.ly-root[data-layout="retro-glass"], .ly-root[layout-style="retro-glass"], .ly-root.ly-layout-retro-glass, .ly-root.ly-style-retro-glass) .ly-sidebar-layout {
69
- grid-template-columns: minmax(0, 1fr) minmax(min(100%, 16rem), 0.48fr);
70
- }
71
-
72
- :where(.ly-root[data-layout="retro-glass"], .ly-root[layout-style="retro-glass"], .ly-root.ly-layout-retro-glass, .ly-root.ly-style-retro-glass) .ly-split {
73
- grid-template-columns: minmax(0, 1.1fr) minmax(min(100%, 18rem), 0.9fr);
74
- }
75
- }
76
-
77
- @media (min-width: 78rem) {
78
- :where(.ly-root[data-layout="retro-glass"], .ly-root[layout-style="retro-glass"], .ly-root.ly-layout-retro-glass, .ly-root.ly-style-retro-glass) .ly-panes--three {
79
- grid-template-columns: minmax(min(100%, 15rem), 0.4fr) minmax(0, 1fr) minmax(min(100%, 18rem), 0.52fr);
80
- }
81
- }
82
- }