layout-style-css 1.1.2 → 2.1.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 (115) hide show
  1. package/CHANGELOG.md +81 -44
  2. package/CONTRIBUTING.md +55 -50
  3. package/LICENSE +21 -21
  4. package/README.md +236 -636
  5. package/SECURITY.md +50 -45
  6. package/demo/assets/apple-touch-icon.svg +7 -7
  7. package/demo/assets/favicon.svg +7 -7
  8. package/demo/browserconfig.xml +9 -9
  9. package/demo/demo.css +523 -0
  10. package/demo/demo.js +605 -0
  11. package/demo/index.html +325 -976
  12. package/demo/robots.txt +4 -4
  13. package/demo/site.webmanifest +23 -23
  14. package/demo/sitemap.xml +9 -9
  15. package/dist/core.css +6 -0
  16. package/{styles/layout-ui-style-kit-bridge.css → dist/integrations/ui-style-kit.css} +175 -170
  17. package/dist/layout-style-css.css +1473 -1903
  18. package/dist/layout-style-css.min.css +1 -1
  19. package/dist/legacy.css +787 -0
  20. package/dist/personalities/bauhaus.css +46 -0
  21. package/dist/personalities/bento.css +43 -0
  22. package/dist/personalities/brutalism.css +36 -0
  23. package/dist/personalities/cyberpunk.css +36 -0
  24. package/dist/personalities/f-pattern.css +48 -0
  25. package/dist/personalities/maximalist.css +51 -0
  26. package/dist/personalities/minimal-saas.css +37 -0
  27. package/dist/personalities/mondrian.css +44 -0
  28. package/dist/personalities/neumorphism.css +46 -0
  29. package/dist/personalities/retro-glass.css +44 -0
  30. package/dist/personalities/retrofuturism.css +36 -0
  31. package/dist/personalities/split-screen.css +41 -0
  32. package/dist/personalities/synthwave.css +48 -0
  33. package/dist/personalities/tactile.css +39 -0
  34. package/dist/personalities/y2k.css +36 -0
  35. package/dist/personalities/z-pattern.css +49 -0
  36. package/dist/personalities.css +18 -0
  37. package/dist/primitives.css +219 -0
  38. package/dist/recipes.css +270 -0
  39. package/dist/utilities.css +162 -0
  40. package/dist/wrappers.css +174 -0
  41. package/docs/wiki/Contributing.md +36 -30
  42. package/docs/wiki/Demo-And-GitHub-Pages.md +53 -39
  43. package/docs/wiki/Getting-Started.md +51 -68
  44. package/docs/wiki/Home.md +33 -48
  45. package/docs/wiki/Installation-And-CDN.md +72 -58
  46. package/docs/wiki/Layout-Primitives.md +48 -57
  47. package/docs/wiki/Layout-Recipes.md +49 -80
  48. package/docs/wiki/Layout-Styles.md +33 -43
  49. package/docs/wiki/Migrating-To-2.0.md +186 -0
  50. package/docs/wiki/Release-And-Publishing.md +77 -69
  51. package/docs/wiki/Security-And-Support.md +36 -34
  52. package/docs/wiki/UI-Style-Kit-Compatibility.md +49 -54
  53. package/docs/wiki/_Sidebar.md +15 -14
  54. package/package.json +98 -107
  55. package/styles/core.css +6 -0
  56. package/{dist/layout-ui-style-kit-bridge.css → styles/integrations/ui-style-kit.css} +175 -170
  57. package/styles/legacy.css +173 -0
  58. package/styles/personalities/bauhaus.css +46 -0
  59. package/styles/personalities/bento.css +43 -0
  60. package/styles/personalities/brutalism.css +36 -0
  61. package/styles/personalities/cyberpunk.css +36 -0
  62. package/styles/personalities/f-pattern.css +48 -0
  63. package/styles/personalities/maximalist.css +51 -0
  64. package/styles/personalities/minimal-saas.css +37 -0
  65. package/styles/personalities/mondrian.css +44 -0
  66. package/styles/personalities/neumorphism.css +46 -0
  67. package/styles/personalities/retro-glass.css +44 -0
  68. package/styles/personalities/retrofuturism.css +36 -0
  69. package/styles/personalities/split-screen.css +41 -0
  70. package/styles/personalities/synthwave.css +48 -0
  71. package/styles/personalities/tactile.css +39 -0
  72. package/styles/personalities/y2k.css +36 -0
  73. package/styles/personalities/z-pattern.css +49 -0
  74. package/styles/personalities.css +18 -0
  75. package/styles/primitives.css +219 -0
  76. package/styles/recipes.css +270 -0
  77. package/styles/utilities.css +162 -0
  78. package/styles/wrappers.css +174 -0
  79. package/dist/layout-all-with-ui-kit-and-interactive-surface.css +0 -3
  80. package/dist/layout-all-with-ui-kit.css +0 -2
  81. package/dist/layout-all.css +0 -18
  82. package/dist/layout-base.css +0 -539
  83. package/dist/layout-style-bauhaus.css +0 -70
  84. package/dist/layout-style-bento.css +0 -76
  85. package/dist/layout-style-brutalism.css +0 -70
  86. package/dist/layout-style-cyberpunk.css +0 -70
  87. package/dist/layout-style-f-pattern.css +0 -76
  88. package/dist/layout-style-maximalist.css +0 -93
  89. package/dist/layout-style-minimal-saas.css +0 -67
  90. package/dist/layout-style-mondrian.css +0 -77
  91. package/dist/layout-style-neumorphism.css +0 -72
  92. package/dist/layout-style-retro-glass.css +0 -82
  93. package/dist/layout-style-retrofuturism.css +0 -71
  94. package/dist/layout-style-split-screen.css +0 -62
  95. package/dist/layout-style-synthwave.css +0 -88
  96. package/dist/layout-style-tactile.css +0 -70
  97. package/dist/layout-style-y2k.css +0 -72
  98. package/dist/layout-style-z-pattern.css +0 -76
  99. package/styles/layout-base.css +0 -539
  100. package/styles/layout-style-bauhaus.css +0 -70
  101. package/styles/layout-style-bento.css +0 -76
  102. package/styles/layout-style-brutalism.css +0 -70
  103. package/styles/layout-style-cyberpunk.css +0 -70
  104. package/styles/layout-style-f-pattern.css +0 -76
  105. package/styles/layout-style-maximalist.css +0 -93
  106. package/styles/layout-style-minimal-saas.css +0 -67
  107. package/styles/layout-style-mondrian.css +0 -77
  108. package/styles/layout-style-neumorphism.css +0 -72
  109. package/styles/layout-style-retro-glass.css +0 -82
  110. package/styles/layout-style-retrofuturism.css +0 -71
  111. package/styles/layout-style-split-screen.css +0 -62
  112. package/styles/layout-style-synthwave.css +0 -88
  113. package/styles/layout-style-tactile.css +0 -70
  114. package/styles/layout-style-y2k.css +0 -72
  115. package/styles/layout-style-z-pattern.css +0 -76
package/demo/robots.txt CHANGED
@@ -1,4 +1,4 @@
1
- User-agent: *
2
- Allow: /
3
-
4
- Sitemap: https://foscat.github.io/layout-style-css/sitemap.xml
1
+ User-agent: *
2
+ Allow: /
3
+
4
+ Sitemap: https://foscat.github.io/layout-style-css/sitemap.xml
@@ -1,23 +1,23 @@
1
- {
2
- "name": "layout-style-css",
3
- "short_name": "Layout CSS",
4
- "description": "Shell-first CSS layout library demo for ui-style-kit-css integrations.",
5
- "start_url": "./index.html",
6
- "display": "standalone",
7
- "background_color": "#111827",
8
- "theme_color": "#111827",
9
- "icons": [
10
- {
11
- "src": "./assets/favicon.svg",
12
- "sizes": "64x64",
13
- "type": "image/svg+xml",
14
- "purpose": "any"
15
- },
16
- {
17
- "src": "./assets/apple-touch-icon.svg",
18
- "sizes": "180x180",
19
- "type": "image/svg+xml",
20
- "purpose": "any maskable"
21
- }
22
- ]
23
- }
1
+ {
2
+ "name": "layout-style-css",
3
+ "short_name": "Layout CSS",
4
+ "description": "Container-first layout-style-css 2.1 lab for wrappers, recipes, personalities, and optional ecosystem integrations.",
5
+ "start_url": "./index.html",
6
+ "display": "standalone",
7
+ "background_color": "#111827",
8
+ "theme_color": "#111827",
9
+ "icons": [
10
+ {
11
+ "src": "./assets/favicon.svg",
12
+ "sizes": "64x64",
13
+ "type": "image/svg+xml",
14
+ "purpose": "any"
15
+ },
16
+ {
17
+ "src": "./assets/apple-touch-icon.svg",
18
+ "sizes": "180x180",
19
+ "type": "image/svg+xml",
20
+ "purpose": "any maskable"
21
+ }
22
+ ]
23
+ }
package/demo/sitemap.xml CHANGED
@@ -1,9 +1,9 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
3
- <url>
4
- <loc>https://foscat.github.io/layout-style-css/</loc>
5
- <lastmod>2026-06-30</lastmod>
6
- <changefreq>weekly</changefreq>
7
- <priority>0.8</priority>
8
- </url>
9
- </urlset>
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
3
+ <url>
4
+ <loc>https://foscat.github.io/layout-style-css/</loc>
5
+ <lastmod>2026-07-20</lastmod>
6
+ <changefreq>weekly</changefreq>
7
+ <priority>0.8</priority>
8
+ </url>
9
+ </urlset>
package/dist/core.css ADDED
@@ -0,0 +1,6 @@
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ @import url("./wrappers.css");
4
+ @import url("./primitives.css");
5
+ @import url("./recipes.css");
6
+ @import url("./utilities.css");
@@ -1,170 +1,175 @@
1
- /*
2
- Compatibility bridge for ui-style-kit-css.
3
- This bridge intentionally does not map color, type, border, or shadow tokens.
4
- ui-style-kit-css owns those visuals; layout-style-library owns structure.
5
- */
6
-
7
- @layer ly.bridge {
8
- :where(.ly-root[data-ui][data-theme][data-mode], [data-ui][data-theme][data-mode] .ly-root) {
9
- --ly-ui-style-kit-bridge: 1;
10
-
11
- /*
12
- Normalize UI kit root background geometry without redefining its paint.
13
- Patterned theme layers should fill the viewport once instead of tiling.
14
- */
15
- min-block-size: 100svh;
16
- background-attachment: fixed;
17
- background-position: center;
18
- background-repeat: no-repeat;
19
- background-size: 100% 100%;
20
- }
21
-
22
- :where(.ly-root[data-ui="minimal-saas"], [data-ui="minimal-saas"] .ly-root) {
23
- --ly-ui-style-kit-bridge-style: minimal-saas;
24
- }
25
-
26
- :where(.ly-root[data-ui="bento"], [data-ui="bento"] .ly-root) {
27
- --ly-ui-style-kit-bridge-style: bento;
28
- }
29
-
30
- :where(.ly-root[data-ui="maximalist"], [data-ui="maximalist"] .ly-root) {
31
- --ly-ui-style-kit-bridge-style: maximalist;
32
- }
33
-
34
- :where(.ly-root[data-ui="bauhaus"], [data-ui="bauhaus"] .ly-root) {
35
- --ly-ui-style-kit-bridge-style: bauhaus;
36
- }
37
-
38
- :where(.ly-root[data-ui="tactile"], [data-ui="tactile"] .ly-root) {
39
- --ly-ui-style-kit-bridge-style: tactile;
40
- }
41
-
42
- :where(.ly-root[data-ui="neumorphism"], [data-ui="neumorphism"] .ly-root) {
43
- --ly-ui-style-kit-bridge-style: neumorphism;
44
- }
45
-
46
- :where(.ly-root[data-ui="retrofuturism"], [data-ui="retrofuturism"] .ly-root) {
47
- --ly-ui-style-kit-bridge-style: retrofuturism;
48
- }
49
-
50
- :where(.ly-root[data-ui="brutalism"], [data-ui="brutalism"] .ly-root) {
51
- --ly-ui-style-kit-bridge-style: brutalism;
52
- }
53
-
54
- :where(.ly-root[data-ui="cyberpunk"], [data-ui="cyberpunk"] .ly-root) {
55
- --ly-ui-style-kit-bridge-style: cyberpunk;
56
- }
57
-
58
- :where(.ly-root[data-ui="y2k"], [data-ui="y2k"] .ly-root) {
59
- --ly-ui-style-kit-bridge-style: y2k;
60
- }
61
-
62
- :where(.ly-root[data-ui="retro-glass"], [data-ui="retro-glass"] .ly-root) {
63
- --ly-ui-style-kit-bridge-style: retro-glass;
64
- }
65
-
66
- :where(.saas-container, .bento-container, .max-container, .bau-container, .tactile-container, .neo-container, .retro-container, .brutal-container, .cyber-container, .y2k-container, .rg-container) {
67
- /* UI Style Kit naming can opt into layout sizing without taking over visual paint. */
68
- width: min(100% - var(--ly-page-padding-inline), var(--ly-container-max));
69
- margin-inline: auto;
70
- }
71
-
72
- :where(.saas-section, .bento-section, .max-section, .bau-section, .tactile-section, .neo-section, .retro-section, .brutal-section, .cyber-section, .y2k-section, .rg-section) {
73
- padding-block: var(--ly-section-padding-block);
74
- }
75
-
76
- :where(.saas-stack, .bento-stack, .max-stack, .bau-stack, .tactile-stack, .neo-stack, .retro-stack, .brutal-stack, .cyber-stack, .y2k-stack, .rg-stack) {
77
- display: flex;
78
- flex-direction: column;
79
- gap: var(--ly-stack-gap);
80
- }
81
-
82
- :where(.saas-cluster, .bento-cluster, .max-cluster, .bau-cluster, .tactile-cluster, .neo-cluster, .retro-cluster, .brutal-cluster, .cyber-cluster, .y2k-cluster, .rg-cluster) {
83
- display: flex;
84
- flex-wrap: wrap;
85
- align-items: center;
86
- gap: var(--ly-cluster-gap);
87
- }
88
-
89
- :where(.saas-grid, .bento-grid, .max-grid, .bau-grid, .tactile-grid, .neo-grid, .retro-grid, .brutal-grid, .cyber-grid, .y2k-grid, .rg-grid) {
90
- display: grid;
91
- grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-grid-min)), 1fr));
92
- gap: var(--ly-grid-gap);
93
- }
94
-
95
- :where(.saas-split, .bento-split, .max-split, .bau-split, .tactile-split, .neo-split, .retro-split, .brutal-split, .cyber-split, .y2k-split, .rg-split) {
96
- display: grid;
97
- grid-template-columns: 1fr;
98
- gap: var(--ly-gap);
99
- align-items: var(--ly-split-align, center);
100
- }
101
-
102
- :where(.saas-split, .bento-split, .max-split, .bau-split, .tactile-split, .neo-split, .retro-split, .brutal-split, .cyber-split, .y2k-split, .rg-split) > * {
103
- min-width: 0;
104
- }
105
-
106
- :where(.saas-button-group, .bento-button-group, .max-button-group, .bau-button-group, .tactile-button-group, .neo-button-group, .retro-button-group, .brutal-button-group, .cyber-button-group, .y2k-button-group, .rg-button-group) {
107
- display: flex;
108
- flex-wrap: wrap;
109
- align-items: center;
110
- gap: var(--ly-cluster-gap);
111
- }
112
-
113
- :where(.saas-button-group, .bento-button-group, .max-button-group, .bau-button-group, .tactile-button-group, .neo-button-group, .retro-button-group, .brutal-button-group, .cyber-button-group, .y2k-button-group, .rg-button-group) > * {
114
- flex: 0 1 auto;
115
- min-width: min(100%, var(--ly-button-min, 8rem));
116
- }
117
-
118
- :where(.saas-card-grid, .bento-card-grid, .max-card-grid, .bau-card-grid, .tactile-card-grid, .neo-card-grid, .retro-card-grid, .brutal-card-grid, .cyber-card-grid, .y2k-card-grid, .rg-card-grid) {
119
- display: grid;
120
- grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-card-grid-min)), 1fr));
121
- gap: var(--ly-grid-gap);
122
- }
123
-
124
- :where(.saas-card-grid, .bento-card-grid, .max-card-grid, .bau-card-grid, .tactile-card-grid, .neo-card-grid, .retro-card-grid, .brutal-card-grid, .cyber-card-grid, .y2k-card-grid, .rg-card-grid) > * {
125
- min-width: 0;
126
- }
127
-
128
- :where(.saas-card-sm, .bento-card-sm, .max-card-sm, .bau-card-sm, .tactile-card-sm, .neo-card-sm, .retro-card-sm, .brutal-card-sm, .cyber-card-sm, .y2k-card-sm, .rg-card-sm) {
129
- min-block-size: var(--ly-card-size-sm);
130
- }
131
-
132
- :where(.saas-card-md, .bento-card-md, .max-card-md, .bau-card-md, .tactile-card-md, .neo-card-md, .retro-card-md, .brutal-card-md, .cyber-card-md, .y2k-card-md, .rg-card-md) {
133
- min-block-size: var(--ly-card-size-md);
134
- }
135
-
136
- :where(.saas-card-lg, .bento-card-lg, .max-card-lg, .bau-card-lg, .tactile-card-lg, .neo-card-lg, .retro-card-lg, .brutal-card-lg, .cyber-card-lg, .y2k-card-lg, .rg-card-lg) {
137
- min-block-size: var(--ly-card-size-lg);
138
- }
139
-
140
- :where(.saas-gallery, .bento-gallery, .max-gallery, .bau-gallery, .tactile-gallery, .neo-gallery, .retro-gallery, .brutal-gallery, .cyber-gallery, .y2k-gallery, .rg-gallery) {
141
- display: grid;
142
- grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-gallery-min)), 1fr));
143
- gap: var(--ly-grid-gap);
144
- }
145
-
146
- :where(.saas-gallery, .bento-gallery, .max-gallery, .bau-gallery, .tactile-gallery, .neo-gallery, .retro-gallery, .brutal-gallery, .cyber-gallery, .y2k-gallery, .rg-gallery) > * {
147
- min-width: 0;
148
- }
149
-
150
- :where(.saas-carousel, .bento-carousel, .max-carousel, .bau-carousel, .tactile-carousel, .neo-carousel, .retro-carousel, .brutal-carousel, .cyber-carousel, .y2k-carousel, .rg-carousel) {
151
- display: grid;
152
- grid-auto-flow: column;
153
- grid-auto-columns: minmax(min(100%, var(--ly-carousel-item-min)), var(--ly-carousel-item-max));
154
- gap: var(--ly-grid-gap);
155
- overflow-x: auto;
156
- overscroll-behavior-inline: contain;
157
- scroll-snap-type: x proximity;
158
- }
159
-
160
- :where(.saas-carousel, .bento-carousel, .max-carousel, .bau-carousel, .tactile-carousel, .neo-carousel, .retro-carousel, .brutal-carousel, .cyber-carousel, .y2k-carousel, .rg-carousel) > * {
161
- min-width: 0;
162
- scroll-snap-align: start;
163
- }
164
-
165
- @media (min-width: 48rem) {
166
- :where(.saas-split, .bento-split, .max-split, .bau-split, .tactile-split, .neo-split, .retro-split, .brutal-split, .cyber-split, .y2k-split, .rg-split) {
167
- grid-template-columns: minmax(0, var(--ly-split-primary, 1fr)) minmax(0, var(--ly-split-secondary, 1fr));
168
- }
169
- }
170
- }
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ /*
4
+ Compatibility bridge for ui-style-kit-css.
5
+ This bridge intentionally does not map color, type, border, or shadow tokens.
6
+ ui-style-kit-css owns those visuals; layout-style-css owns structure.
7
+ */
8
+
9
+ @layer ly.integrations.ui_style_kit {
10
+ :where(.ly-root[data-ui][data-theme][data-mode], [data-ui][data-theme][data-mode] .ly-root) {
11
+ --ly-ui-style-kit-bridge: 1;
12
+
13
+ /*
14
+ Normalize UI kit root background geometry without redefining its paint.
15
+ Patterned theme layers should fill the viewport once instead of tiling.
16
+ */
17
+ min-block-size: 100svh;
18
+ background-attachment: fixed;
19
+ background-position: center;
20
+ background-repeat: no-repeat;
21
+ background-size: 100% 100%;
22
+ }
23
+
24
+ :where(.ly-root[data-ui="minimal-saas"], [data-ui="minimal-saas"] .ly-root) {
25
+ --ly-ui-style-kit-bridge-style: minimal-saas;
26
+ }
27
+
28
+ :where(.ly-root[data-ui="bento"], [data-ui="bento"] .ly-root) {
29
+ --ly-ui-style-kit-bridge-style: bento;
30
+ }
31
+
32
+ :where(.ly-root[data-ui="maximalist"], [data-ui="maximalist"] .ly-root) {
33
+ --ly-ui-style-kit-bridge-style: maximalist;
34
+ }
35
+
36
+ :where(.ly-root[data-ui="bauhaus"], [data-ui="bauhaus"] .ly-root) {
37
+ --ly-ui-style-kit-bridge-style: bauhaus;
38
+ }
39
+
40
+ :where(.ly-root[data-ui="tactile"], [data-ui="tactile"] .ly-root) {
41
+ --ly-ui-style-kit-bridge-style: tactile;
42
+ }
43
+
44
+ :where(.ly-root[data-ui="neumorphism"], [data-ui="neumorphism"] .ly-root) {
45
+ --ly-ui-style-kit-bridge-style: neumorphism;
46
+ }
47
+
48
+ :where(.ly-root[data-ui="retrofuturism"], [data-ui="retrofuturism"] .ly-root) {
49
+ --ly-ui-style-kit-bridge-style: retrofuturism;
50
+ }
51
+
52
+ :where(.ly-root[data-ui="brutalism"], [data-ui="brutalism"] .ly-root) {
53
+ --ly-ui-style-kit-bridge-style: brutalism;
54
+ }
55
+
56
+ :where(.ly-root[data-ui="cyberpunk"], [data-ui="cyberpunk"] .ly-root) {
57
+ --ly-ui-style-kit-bridge-style: cyberpunk;
58
+ }
59
+
60
+ :where(.ly-root[data-ui="y2k"], [data-ui="y2k"] .ly-root) {
61
+ --ly-ui-style-kit-bridge-style: y2k;
62
+ }
63
+
64
+ :where(.ly-root[data-ui="retro-glass"], [data-ui="retro-glass"] .ly-root) {
65
+ --ly-ui-style-kit-bridge-style: retro-glass;
66
+ }
67
+
68
+ :where(.saas-container, .bento-container, .max-container, .bau-container, .tactile-container, .neo-container, .retro-container, .brutal-container, .cyber-container, .y2k-container, .rg-container) {
69
+ /* UI Style Kit naming can opt into layout sizing without taking over visual paint. */
70
+ container-name: ly-wrapper;
71
+ container-type: inline-size;
72
+ inline-size: min(100%, calc(var(--ly-wrapper-max) + (var(--ly-wrapper-gutter) * 2)));
73
+ margin-inline: auto;
74
+ padding-inline: var(--ly-wrapper-gutter);
75
+ }
76
+
77
+ :where(.saas-section, .bento-section, .max-section, .bau-section, .tactile-section, .neo-section, .retro-section, .brutal-section, .cyber-section, .y2k-section, .rg-section) {
78
+ padding-block: var(--ly-section-padding-block);
79
+ }
80
+
81
+ :where(.saas-stack, .bento-stack, .max-stack, .bau-stack, .tactile-stack, .neo-stack, .retro-stack, .brutal-stack, .cyber-stack, .y2k-stack, .rg-stack) {
82
+ display: flex;
83
+ flex-direction: column;
84
+ gap: var(--ly-stack-gap);
85
+ }
86
+
87
+ :where(.saas-cluster, .bento-cluster, .max-cluster, .bau-cluster, .tactile-cluster, .neo-cluster, .retro-cluster, .brutal-cluster, .cyber-cluster, .y2k-cluster, .rg-cluster) {
88
+ display: flex;
89
+ flex-wrap: wrap;
90
+ align-items: center;
91
+ gap: var(--ly-cluster-gap);
92
+ }
93
+
94
+ :where(.saas-grid, .bento-grid, .max-grid, .bau-grid, .tactile-grid, .neo-grid, .retro-grid, .brutal-grid, .cyber-grid, .y2k-grid, .rg-grid) {
95
+ display: grid;
96
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-grid-min)), 1fr));
97
+ gap: var(--ly-grid-gap);
98
+ }
99
+
100
+ :where(.saas-split, .bento-split, .max-split, .bau-split, .tactile-split, .neo-split, .retro-split, .brutal-split, .cyber-split, .y2k-split, .rg-split) {
101
+ display: grid;
102
+ grid-template-columns: 1fr;
103
+ gap: var(--ly-gap);
104
+ align-items: var(--ly-split-align, center);
105
+ }
106
+
107
+ :where(.saas-split, .bento-split, .max-split, .bau-split, .tactile-split, .neo-split, .retro-split, .brutal-split, .cyber-split, .y2k-split, .rg-split) > * {
108
+ min-width: 0;
109
+ }
110
+
111
+ :where(.saas-button-group, .bento-button-group, .max-button-group, .bau-button-group, .tactile-button-group, .neo-button-group, .retro-button-group, .brutal-button-group, .cyber-button-group, .y2k-button-group, .rg-button-group) {
112
+ display: flex;
113
+ flex-wrap: wrap;
114
+ align-items: center;
115
+ gap: var(--ly-cluster-gap);
116
+ }
117
+
118
+ :where(.saas-button-group, .bento-button-group, .max-button-group, .bau-button-group, .tactile-button-group, .neo-button-group, .retro-button-group, .brutal-button-group, .cyber-button-group, .y2k-button-group, .rg-button-group) > * {
119
+ flex: 0 1 auto;
120
+ min-width: min(100%, var(--ly-button-min, 8rem));
121
+ }
122
+
123
+ :where(.saas-card-grid, .bento-card-grid, .max-card-grid, .bau-card-grid, .tactile-card-grid, .neo-card-grid, .retro-card-grid, .brutal-card-grid, .cyber-card-grid, .y2k-card-grid, .rg-card-grid) {
124
+ display: grid;
125
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-card-grid-min)), 1fr));
126
+ gap: var(--ly-grid-gap);
127
+ }
128
+
129
+ :where(.saas-card-grid, .bento-card-grid, .max-card-grid, .bau-card-grid, .tactile-card-grid, .neo-card-grid, .retro-card-grid, .brutal-card-grid, .cyber-card-grid, .y2k-card-grid, .rg-card-grid) > * {
130
+ min-width: 0;
131
+ }
132
+
133
+ :where(.saas-card-sm, .bento-card-sm, .max-card-sm, .bau-card-sm, .tactile-card-sm, .neo-card-sm, .retro-card-sm, .brutal-card-sm, .cyber-card-sm, .y2k-card-sm, .rg-card-sm) {
134
+ min-block-size: var(--ly-card-size-sm);
135
+ }
136
+
137
+ :where(.saas-card-md, .bento-card-md, .max-card-md, .bau-card-md, .tactile-card-md, .neo-card-md, .retro-card-md, .brutal-card-md, .cyber-card-md, .y2k-card-md, .rg-card-md) {
138
+ min-block-size: var(--ly-card-size-md);
139
+ }
140
+
141
+ :where(.saas-card-lg, .bento-card-lg, .max-card-lg, .bau-card-lg, .tactile-card-lg, .neo-card-lg, .retro-card-lg, .brutal-card-lg, .cyber-card-lg, .y2k-card-lg, .rg-card-lg) {
142
+ min-block-size: var(--ly-card-size-lg);
143
+ }
144
+
145
+ :where(.saas-gallery, .bento-gallery, .max-gallery, .bau-gallery, .tactile-gallery, .neo-gallery, .retro-gallery, .brutal-gallery, .cyber-gallery, .y2k-gallery, .rg-gallery) {
146
+ display: grid;
147
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-gallery-min)), 1fr));
148
+ gap: var(--ly-grid-gap);
149
+ }
150
+
151
+ :where(.saas-gallery, .bento-gallery, .max-gallery, .bau-gallery, .tactile-gallery, .neo-gallery, .retro-gallery, .brutal-gallery, .cyber-gallery, .y2k-gallery, .rg-gallery) > * {
152
+ min-width: 0;
153
+ }
154
+
155
+ :where(.saas-carousel, .bento-carousel, .max-carousel, .bau-carousel, .tactile-carousel, .neo-carousel, .retro-carousel, .brutal-carousel, .cyber-carousel, .y2k-carousel, .rg-carousel) {
156
+ display: grid;
157
+ grid-auto-flow: column;
158
+ grid-auto-columns: minmax(min(100%, var(--ly-carousel-item-min)), var(--ly-carousel-item-max));
159
+ gap: var(--ly-grid-gap);
160
+ overflow-x: auto;
161
+ overscroll-behavior-inline: contain;
162
+ scroll-snap-type: x proximity;
163
+ }
164
+
165
+ :where(.saas-carousel, .bento-carousel, .max-carousel, .bau-carousel, .tactile-carousel, .neo-carousel, .retro-carousel, .brutal-carousel, .cyber-carousel, .y2k-carousel, .rg-carousel) > * {
166
+ min-width: 0;
167
+ scroll-snap-align: start;
168
+ }
169
+
170
+ @container (min-width: 48rem) {
171
+ :where(.saas-split, .bento-split, .max-split, .bau-split, .tactile-split, .neo-split, .retro-split, .brutal-split, .cyber-split, .y2k-split, .rg-split) {
172
+ grid-template-columns: minmax(0, var(--ly-split-primary, 1fr)) minmax(0, var(--ly-split-secondary, 1fr));
173
+ }
174
+ }
175
+ }