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
@@ -0,0 +1,787 @@
1
+ @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
+
3
+ @import url("./layout-style-css.css");
4
+
5
+ @layer ly.legacy {
6
+ /* Preserve v1 wrapper measures while applications migrate to semantic v2 names. */
7
+ .ly-container {
8
+ container-name: ly-wrapper;
9
+ container-type: inline-size;
10
+ width: min(100% - (var(--ly-page-padding-inline) * 2), var(--ly-container-max));
11
+ margin-inline: auto;
12
+ }
13
+
14
+ .ly-container--sm,
15
+ .ly-wrapper--sm {
16
+ --ly-container-max: var(--ly-container-sm);
17
+ --ly-wrapper-max: 40rem;
18
+ }
19
+
20
+ .ly-container--md,
21
+ .ly-wrapper--md {
22
+ --ly-container-max: var(--ly-container-md);
23
+ --ly-wrapper-max: 56rem;
24
+ }
25
+
26
+ .ly-container--lg,
27
+ .ly-wrapper--lg {
28
+ --ly-container-max: var(--ly-container-lg);
29
+ --ly-wrapper-max: 72rem;
30
+ }
31
+
32
+ .ly-container--xl,
33
+ .ly-wrapper--xl {
34
+ --ly-container-max: var(--ly-container-xl);
35
+ --ly-wrapper-max: 88rem;
36
+ }
37
+
38
+ .ly-container--wide {
39
+ --ly-container-max: var(--ly-container-wide);
40
+ }
41
+
42
+ .ly-container--fluid {
43
+ width: 100%;
44
+ max-width: none;
45
+ padding-inline: var(--ly-wrapper-gutter);
46
+ }
47
+
48
+ .ly-wrapper--fluid {
49
+ --ly-wrapper-max: 100%;
50
+ }
51
+
52
+ .ly-wrapper--readable {
53
+ --ly-wrapper-max: 68ch;
54
+ }
55
+
56
+ .ly-row {
57
+ display: flex;
58
+ flex-wrap: wrap;
59
+ /* Outer compensation preserves exact percentage tracks while columns own gutters. */
60
+ margin-inline: calc(var(--ly-gutter, var(--ly-gap)) * -0.5);
61
+ }
62
+
63
+ .ly-col {
64
+ flex: 1 1 0;
65
+ min-inline-size: 0;
66
+ padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5);
67
+ }
68
+
69
+ .ly-col-1 { flex: 0 0 auto; width: 8.333333%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
70
+ .ly-col-2 { flex: 0 0 auto; width: 16.666667%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
71
+ .ly-col-3 { flex: 0 0 auto; width: 25%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
72
+ .ly-col-4 { flex: 0 0 auto; width: 33.333333%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
73
+ .ly-col-5 { flex: 0 0 auto; width: 41.666667%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
74
+ .ly-col-6 { flex: 0 0 auto; width: 50%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
75
+ .ly-col-7 { flex: 0 0 auto; width: 58.333333%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
76
+ .ly-col-8 { flex: 0 0 auto; width: 66.666667%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
77
+ .ly-col-9 { flex: 0 0 auto; width: 75%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
78
+ .ly-col-10 { flex: 0 0 auto; width: 83.333333%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
79
+ .ly-col-11 { flex: 0 0 auto; width: 91.666667%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
80
+ .ly-col-12 { flex: 0 0 auto; width: 100%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
81
+
82
+ .ly-carousel {
83
+ display: grid;
84
+ grid-auto-flow: column;
85
+ grid-auto-columns: minmax(min(100%, var(--ly-reel-item-min)), var(--ly-reel-item-max));
86
+ gap: var(--ly-grid-gap);
87
+ overflow-x: auto;
88
+ overflow-inline: auto;
89
+ overscroll-behavior-inline: contain;
90
+ scroll-snap-type: inline proximity;
91
+ }
92
+
93
+ .ly-carousel > * {
94
+ min-inline-size: 0;
95
+ scroll-snap-align: start;
96
+ }
97
+
98
+ .ly-button-group {
99
+ display: flex;
100
+ flex-wrap: wrap;
101
+ align-items: center;
102
+ gap: var(--ly-cluster-gap);
103
+ }
104
+
105
+ .ly-button-group > * {
106
+ flex: 0 1 auto;
107
+ min-inline-size: min(100%, var(--ly-button-min, 8rem));
108
+ }
109
+
110
+ .ly-sidebar-layout {
111
+ display: grid;
112
+ grid-template-columns: minmax(0, 1fr);
113
+ gap: var(--ly-gap);
114
+ }
115
+
116
+ .ly-sidebar-layout > * {
117
+ min-inline-size: 0;
118
+ }
119
+
120
+ .ly-content {
121
+ min-inline-size: 0;
122
+ }
123
+
124
+ .ly-divider {
125
+ /* V2 preserves separator geometry here; themes remain responsible for visible paint. */
126
+ min-block-size: 1px;
127
+ margin-block: var(--ly-space-5);
128
+ }
129
+
130
+ .ly-card-sm { min-block-size: var(--ly-card-size-sm); }
131
+ .ly-card-md { min-block-size: var(--ly-card-size-md); }
132
+ .ly-card-lg { min-block-size: var(--ly-card-size-lg); }
133
+
134
+ .ly-scroll-area {
135
+ min-block-size: 0;
136
+ max-block-size: var(--ly-scroll-max);
137
+ overflow: auto;
138
+ overscroll-behavior: contain;
139
+ }
140
+
141
+ .ly-app-header { grid-area: header; min-inline-size: 0; }
142
+ .ly-app-sidebar { grid-area: sidebar; min-inline-size: 0; }
143
+ .ly-app-main { grid-area: main; min-inline-size: 0; }
144
+ .ly-app-aside { grid-area: aside; min-inline-size: 0; }
145
+ .ly-app-footer { grid-area: footer; min-inline-size: 0; }
146
+
147
+ /* The build expands canonical personality rules into functional v1 aliases here. */
148
+ /* V1 personality aliases for minimal-saas; generated from the canonical v2 source. */
149
+ :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) {
150
+ --ly-recipe-rail: 15rem;
151
+ --ly-recipe-aside: 16rem;
152
+ --ly-grid-columns: 4;
153
+ --ly-grid-min: 16rem;
154
+ --ly-personality-wrapper-max: 88rem;
155
+
156
+ container-name: ly-personality;
157
+ container-type: inline-size;
158
+ min-inline-size: 0;
159
+ }
160
+
161
+ /* Named areas rearrange the shell without changing its mobile DOM or focus order. */
162
+ @container ly-personality (min-width: 48rem) {
163
+ :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)
164
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
165
+ grid-template-areas:
166
+ "sidebar header header"
167
+ "sidebar main aside"
168
+ "sidebar footer footer";
169
+ grid-template-rows: auto minmax(0, 1fr) auto;
170
+ grid-template-columns:
171
+ minmax(min(100%, 15rem), 0.24fr)
172
+ minmax(0, 1fr)
173
+ minmax(min(100%, 16rem), 0.28fr);
174
+ }
175
+
176
+ :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 > :nth-child(4n + 1) {
177
+ grid-column: span 2;
178
+ }
179
+ }
180
+
181
+ /* V1 personality aliases for bento; generated from the canonical v2 source. */
182
+ :where(.ly-root[data-layout="bento"], .ly-root[layout-style="bento"], .ly-root.ly-layout-bento, .ly-root.ly-style-bento) {
183
+ --ly-grid-columns: 6;
184
+ --ly-grid-min: 12rem;
185
+ --ly-card-grid-min: 13rem;
186
+ --ly-personality-wrapper-max: 112rem;
187
+
188
+ container-name: ly-personality;
189
+ container-type: inline-size;
190
+ min-inline-size: 0;
191
+ }
192
+
193
+ @container ly-personality (min-width: 48rem) {
194
+ :where(.ly-root[data-layout="bento"], .ly-root[layout-style="bento"], .ly-root.ly-layout-bento, .ly-root.ly-style-bento)
195
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
196
+ grid-template-areas:
197
+ "header header header"
198
+ "sidebar main main"
199
+ "aside main main"
200
+ "footer footer footer";
201
+ grid-template-rows: auto minmax(0, 1fr) auto auto;
202
+ grid-template-columns:
203
+ minmax(min(100%, 14rem), 0.3fr)
204
+ minmax(0, 1fr)
205
+ minmax(0, 1fr);
206
+ }
207
+
208
+ :where(.ly-root[data-layout="bento"], .ly-root[layout-style="bento"], .ly-root.ly-layout-bento, .ly-root.ly-style-bento) .ly-grid > :nth-child(6n + 1) {
209
+ grid-column: span 2;
210
+ grid-row: span 2;
211
+ }
212
+
213
+ :where(.ly-root[data-layout="bento"], .ly-root[layout-style="bento"], .ly-root.ly-layout-bento, .ly-root.ly-style-bento)
214
+ :where(.ly-card-grid, [data-ly-recipe="card-grid"])
215
+ > :nth-child(6n + 1) {
216
+ grid-column: span 2;
217
+ }
218
+ }
219
+
220
+ /* V1 personality aliases for maximalist; generated from the canonical v2 source. */
221
+ :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) {
222
+ --ly-grid-columns: 12;
223
+ --ly-grid-min: 10rem;
224
+ --ly-personality-wrapper-max: 100%;
225
+ --ly-card-grid-min: 12rem;
226
+
227
+ container-name: ly-personality;
228
+ container-type: inline-size;
229
+ min-inline-size: 0;
230
+ }
231
+
232
+ @container ly-personality (min-width: 48rem) {
233
+ :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist)
234
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
235
+ grid-template-columns: minmax(min(100%, 18rem), 0.3fr) minmax(0, 1fr);
236
+ }
237
+ }
238
+
239
+ @container ly-personality (min-width: 56rem) {
240
+ :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist)
241
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
242
+ grid-template-areas:
243
+ "header header header header"
244
+ "main main sidebar aside"
245
+ "main main footer footer";
246
+ grid-template-rows: auto minmax(0, 1fr) auto;
247
+ grid-template-columns:
248
+ minmax(0, 1.4fr)
249
+ minmax(0, 0.6fr)
250
+ minmax(min(100%, 15rem), 0.32fr)
251
+ minmax(min(100%, 18rem), 0.38fr);
252
+ }
253
+
254
+ :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-grid > :nth-child(7n + 1) {
255
+ grid-column: span 3;
256
+ grid-row: span 2;
257
+ }
258
+
259
+ :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist)
260
+ :where(.ly-gallery, [data-ly-recipe="gallery"])
261
+ > :nth-child(5n + 1) {
262
+ grid-column: span 2;
263
+ grid-row: span 2;
264
+ }
265
+ }
266
+
267
+ /* V1 personality aliases for bauhaus; generated from the canonical v2 source. */
268
+ :where(.ly-root[data-layout="bauhaus"], .ly-root[layout-style="bauhaus"], .ly-root.ly-layout-bauhaus, .ly-root.ly-style-bauhaus) {
269
+ --ly-recipe-rail: 14rem;
270
+ --ly-recipe-aside: 18rem;
271
+ --ly-grid-columns: 6;
272
+ --ly-grid-min: 13rem;
273
+ --ly-personality-wrapper-max: 96rem;
274
+
275
+ container-name: ly-personality;
276
+ container-type: inline-size;
277
+ min-inline-size: 0;
278
+ }
279
+
280
+ /* Cap the fallback rail until the wider personality template is eligible. */
281
+ @container ly-personality (min-width: 48rem) {
282
+ :where(.ly-root[data-layout="bauhaus"], .ly-root[layout-style="bauhaus"], .ly-root.ly-layout-bauhaus, .ly-root.ly-style-bauhaus)
283
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
284
+ grid-template-columns: minmax(min(100%, 14rem), 0.3fr) minmax(0, 1fr);
285
+ }
286
+ }
287
+
288
+ @container ly-personality (min-width: 52rem) {
289
+ :where(.ly-root[data-layout="bauhaus"], .ly-root[layout-style="bauhaus"], .ly-root.ly-layout-bauhaus, .ly-root.ly-style-bauhaus)
290
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
291
+ grid-template-areas:
292
+ "sidebar header header aside"
293
+ "sidebar main main aside"
294
+ "sidebar footer footer footer";
295
+ grid-template-rows: auto minmax(0, 1fr) auto;
296
+ grid-template-columns:
297
+ minmax(min(100%, 14rem), 0.24fr)
298
+ minmax(0, 0.7fr)
299
+ minmax(0, 1.3fr)
300
+ minmax(min(100%, 18rem), 0.3fr);
301
+ }
302
+
303
+ :where(.ly-root[data-layout="bauhaus"], .ly-root[layout-style="bauhaus"], .ly-root.ly-layout-bauhaus, .ly-root.ly-style-bauhaus) .ly-grid > :nth-child(3n + 1) {
304
+ grid-column: span 2;
305
+ grid-row: span 2;
306
+ }
307
+ }
308
+
309
+ /* V1 personality aliases for tactile; generated from the canonical v2 source. */
310
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) {
311
+ --ly-recipe-rail: 17rem;
312
+ --ly-recipe-aside: 20rem;
313
+ --ly-grid-columns: 5;
314
+ --ly-grid-min: 15rem;
315
+ --ly-personality-wrapper-max: 82rem;
316
+
317
+ container-name: ly-personality;
318
+ container-type: inline-size;
319
+ min-inline-size: 0;
320
+ }
321
+
322
+ @container ly-personality (min-width: 48rem) {
323
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile)
324
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
325
+ grid-template-areas:
326
+ "sidebar header"
327
+ "sidebar main"
328
+ "sidebar aside"
329
+ "sidebar footer";
330
+ grid-template-rows: auto minmax(0, 1fr) auto auto;
331
+ grid-template-columns: minmax(min(100%, 17rem), 0.28fr) minmax(0, 1fr);
332
+ }
333
+
334
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-grid > :nth-child(5n + 2) {
335
+ grid-column: span 2;
336
+ }
337
+
338
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile)
339
+ :where(.ly-list-detail, [data-ly-recipe="list-detail"]) {
340
+ grid-template-columns: minmax(min(100%, 20rem), 0.42fr) minmax(0, 0.58fr);
341
+ }
342
+ }
343
+
344
+ /* V1 personality aliases for neumorphism; generated from the canonical v2 source. */
345
+ :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) {
346
+ --ly-recipe-rail: 17rem;
347
+ --ly-recipe-aside: 19rem;
348
+ --ly-grid-columns: 4;
349
+ --ly-grid-min: 17rem;
350
+ --ly-personality-wrapper-max: 84rem;
351
+
352
+ container-name: ly-personality;
353
+ container-type: inline-size;
354
+ min-inline-size: 0;
355
+ }
356
+
357
+ @container ly-personality (min-width: 48rem) {
358
+ :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism)
359
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
360
+ grid-template-columns: minmax(min(100%, 17rem), 0.3fr) minmax(0, 1fr);
361
+ }
362
+ }
363
+
364
+ @container ly-personality (min-width: 52rem) {
365
+ :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism)
366
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
367
+ grid-template-areas:
368
+ "header sidebar"
369
+ "main sidebar"
370
+ "aside sidebar"
371
+ "footer sidebar";
372
+ grid-template-rows: auto minmax(0, 1fr) auto auto;
373
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, 17rem), 0.3fr);
374
+ }
375
+
376
+ :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-grid > :nth-child(4n + 1) {
377
+ grid-column: span 2;
378
+ }
379
+
380
+ :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism)
381
+ :where(.ly-list-detail, [data-ly-recipe="list-detail"]) {
382
+ grid-template-columns: minmax(0, 0.58fr) minmax(min(100%, 19rem), 0.42fr);
383
+ }
384
+ }
385
+
386
+ /* V1 personality aliases for retrofuturism; generated from the canonical v2 source. */
387
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) {
388
+ --ly-recipe-rail: 14rem;
389
+ --ly-recipe-aside: 17rem;
390
+ --ly-grid-columns: 6;
391
+ --ly-grid-min: 14rem;
392
+ --ly-personality-wrapper-max: 106rem;
393
+
394
+ container-name: ly-personality;
395
+ container-type: inline-size;
396
+ min-inline-size: 0;
397
+ }
398
+
399
+ @container ly-personality (min-width: 48rem) {
400
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism)
401
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
402
+ grid-template-areas:
403
+ "sidebar header aside"
404
+ "sidebar main aside"
405
+ "sidebar footer aside";
406
+ grid-template-rows: auto minmax(0, 1fr) auto;
407
+ grid-template-columns:
408
+ minmax(min(100%, 14rem), 0.24fr)
409
+ minmax(0, 1fr)
410
+ minmax(min(100%, 17rem), 0.3fr);
411
+ }
412
+
413
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-grid > :nth-child(6n + 1) {
414
+ grid-column: span 2;
415
+ }
416
+ }
417
+
418
+ /* V1 personality aliases for brutalism; generated from the canonical v2 source. */
419
+ :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) {
420
+ --ly-recipe-rail: 18rem;
421
+ --ly-recipe-aside: 16rem;
422
+ --ly-grid-columns: 6;
423
+ --ly-grid-min: 14rem;
424
+ --ly-personality-wrapper-max: 100rem;
425
+
426
+ container-name: ly-personality;
427
+ container-type: inline-size;
428
+ min-inline-size: 0;
429
+ }
430
+
431
+ @container ly-personality (min-width: 48rem) {
432
+ :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism)
433
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
434
+ grid-template-areas:
435
+ "header header sidebar"
436
+ "main aside sidebar"
437
+ "footer footer sidebar";
438
+ grid-template-rows: auto minmax(0, 1fr) auto;
439
+ grid-template-columns:
440
+ minmax(0, 1.3fr)
441
+ minmax(min(100%, 16rem), 0.7fr)
442
+ minmax(min(100%, 18rem), 0.34fr);
443
+ }
444
+
445
+ :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-grid > :nth-child(3n) {
446
+ grid-column: span 2;
447
+ }
448
+ }
449
+
450
+ /* V1 personality aliases for cyberpunk; generated from the canonical v2 source. */
451
+ :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) {
452
+ --ly-recipe-rail: 13rem;
453
+ --ly-recipe-aside: 19rem;
454
+ --ly-grid-columns: 8;
455
+ --ly-grid-min: 12rem;
456
+ --ly-personality-wrapper-max: 112rem;
457
+
458
+ container-name: ly-personality;
459
+ container-type: inline-size;
460
+ min-inline-size: 0;
461
+ }
462
+
463
+ @container ly-personality (min-width: 44rem) {
464
+ :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk)
465
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
466
+ grid-template-areas:
467
+ "sidebar header aside"
468
+ "sidebar main aside"
469
+ "sidebar footer aside";
470
+ grid-template-rows: auto minmax(0, 1fr) auto;
471
+ grid-template-columns:
472
+ minmax(min(100%, 13rem), 0.2fr)
473
+ minmax(0, 1fr)
474
+ minmax(min(100%, 19rem), 0.32fr);
475
+ }
476
+
477
+ :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-grid > :nth-child(4n + 2) {
478
+ grid-column: span 3;
479
+ }
480
+ }
481
+
482
+ /* V1 personality aliases for y2k; generated from the canonical v2 source. */
483
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) {
484
+ --ly-recipe-rail: 16rem;
485
+ --ly-recipe-aside: 18rem;
486
+ --ly-grid-columns: 5;
487
+ --ly-grid-min: 13rem;
488
+ --ly-personality-wrapper-max: 90rem;
489
+
490
+ container-name: ly-personality;
491
+ container-type: inline-size;
492
+ min-inline-size: 0;
493
+ }
494
+
495
+ @container ly-personality (min-width: 48rem) {
496
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k)
497
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
498
+ grid-template-areas:
499
+ "header header sidebar"
500
+ "aside main sidebar"
501
+ "footer footer sidebar";
502
+ grid-template-rows: auto minmax(0, 1fr) auto;
503
+ grid-template-columns:
504
+ minmax(min(100%, 18rem), 0.34fr)
505
+ minmax(0, 1fr)
506
+ minmax(min(100%, 16rem), 0.28fr);
507
+ }
508
+
509
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-grid > :nth-child(5n + 1) {
510
+ grid-column: span 3;
511
+ }
512
+ }
513
+
514
+ /* V1 personality aliases for retro-glass; generated from the canonical v2 source. */
515
+ :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) {
516
+ --ly-recipe-rail: 18rem;
517
+ --ly-recipe-aside: 20rem;
518
+ --ly-grid-columns: 8;
519
+ --ly-grid-min: 15rem;
520
+ --ly-personality-wrapper-max: 104rem;
521
+
522
+ container-name: ly-personality;
523
+ container-type: inline-size;
524
+ min-inline-size: 0;
525
+ }
526
+
527
+ @container ly-personality (min-width: 48rem) {
528
+ :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)
529
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
530
+ grid-template-columns: minmax(min(100%, 18rem), 0.3fr) minmax(0, 1fr);
531
+ }
532
+ }
533
+
534
+ @container ly-personality (min-width: 56rem) {
535
+ :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)
536
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
537
+ grid-template-areas:
538
+ "header header sidebar"
539
+ "main main sidebar"
540
+ "aside footer footer";
541
+ grid-template-rows: auto minmax(0, 1fr) auto;
542
+ grid-template-columns:
543
+ minmax(0, 1.25fr)
544
+ minmax(0, 0.75fr)
545
+ minmax(min(100%, 18rem), 0.32fr);
546
+ }
547
+
548
+ :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 > :nth-child(4n) {
549
+ grid-column: span 2;
550
+ grid-row: span 2;
551
+ }
552
+ }
553
+
554
+ /* V1 personality aliases for f-pattern; generated from the canonical v2 source. */
555
+ :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) {
556
+ --ly-recipe-rail: 16rem;
557
+ --ly-recipe-aside: 18rem;
558
+ --ly-grid-columns: 6;
559
+ --ly-grid-min: 14rem;
560
+ --ly-personality-wrapper-max: 92rem;
561
+
562
+ container-name: ly-personality;
563
+ container-type: inline-size;
564
+ min-inline-size: 0;
565
+ }
566
+
567
+ @container ly-personality (min-width: 48rem) {
568
+ :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)
569
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
570
+ grid-template-columns: minmax(min(100%, 16rem), 0.3fr) minmax(0, 1fr);
571
+ }
572
+ }
573
+
574
+ @container ly-personality (min-width: 56rem) {
575
+ :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)
576
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
577
+ grid-template-areas:
578
+ "sidebar header header"
579
+ "sidebar main aside"
580
+ "sidebar footer aside";
581
+ grid-template-rows: auto minmax(0, 1fr) auto;
582
+ grid-template-columns:
583
+ minmax(min(100%, 16rem), 0.26fr)
584
+ minmax(0, 1.35fr)
585
+ minmax(min(100%, 18rem), 0.65fr);
586
+ }
587
+
588
+ :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 > :nth-child(3n + 1) {
589
+ grid-column: span 2;
590
+ }
591
+
592
+ :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)
593
+ :where(.ly-split-hero, [data-ly-recipe="split-hero"]) {
594
+ grid-template-columns: minmax(0, 1.35fr) minmax(0, 0.65fr);
595
+ }
596
+ }
597
+
598
+ /* V1 personality aliases for z-pattern; generated from the canonical v2 source. */
599
+ :where(.ly-root[data-layout="z-pattern"], .ly-root[layout-style="z-pattern"], .ly-root.ly-layout-z-pattern, .ly-root.ly-style-z-pattern) {
600
+ --ly-recipe-rail: 17rem;
601
+ --ly-recipe-aside: 19rem;
602
+ --ly-grid-columns: 8;
603
+ --ly-grid-min: 14rem;
604
+ --ly-personality-wrapper-max: 108rem;
605
+
606
+ container-name: ly-personality;
607
+ container-type: inline-size;
608
+ min-inline-size: 0;
609
+ }
610
+
611
+ @container ly-personality (min-width: 48rem) {
612
+ :where(.ly-root[data-layout="z-pattern"], .ly-root[layout-style="z-pattern"], .ly-root.ly-layout-z-pattern, .ly-root.ly-style-z-pattern)
613
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
614
+ grid-template-columns: minmax(min(100%, 17rem), 0.3fr) minmax(0, 1fr);
615
+ }
616
+ }
617
+
618
+ @container ly-personality (min-width: 60rem) {
619
+ :where(.ly-root[data-layout="z-pattern"], .ly-root[layout-style="z-pattern"], .ly-root.ly-layout-z-pattern, .ly-root.ly-style-z-pattern)
620
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
621
+ grid-template-areas:
622
+ "header header sidebar"
623
+ "main aside sidebar"
624
+ "footer aside sidebar";
625
+ grid-template-rows: auto minmax(0, 1fr) auto;
626
+ grid-template-columns:
627
+ minmax(0, 1.45fr)
628
+ minmax(min(100%, 19rem), 0.55fr)
629
+ minmax(min(100%, 17rem), 0.3fr);
630
+ }
631
+
632
+ :where(.ly-root[data-layout="z-pattern"], .ly-root[layout-style="z-pattern"], .ly-root.ly-layout-z-pattern, .ly-root.ly-style-z-pattern) .ly-grid > :nth-child(4n + 2) {
633
+ grid-column: span 2;
634
+ align-self: end;
635
+ }
636
+
637
+ :where(.ly-root[data-layout="z-pattern"], .ly-root[layout-style="z-pattern"], .ly-root.ly-layout-z-pattern, .ly-root.ly-style-z-pattern)
638
+ :where(.ly-split-hero, [data-ly-recipe="split-hero"]) {
639
+ grid-template-columns: minmax(0, 1.5fr) minmax(0, 0.5fr);
640
+ }
641
+ }
642
+
643
+ /* V1 personality aliases for split-screen; generated from the canonical v2 source. */
644
+ :where(.ly-root[data-layout="split-screen"], .ly-root[layout-style="split-screen"], .ly-root.ly-layout-split-screen, .ly-root.ly-style-split-screen) {
645
+ --ly-grid-columns: 2;
646
+ --ly-grid-min: 20rem;
647
+ --ly-personality-wrapper-max: 100%;
648
+ --ly-split-primary: 1fr;
649
+ --ly-split-secondary: 1fr;
650
+
651
+ container-name: ly-personality;
652
+ container-type: inline-size;
653
+ min-inline-size: 0;
654
+ }
655
+
656
+ @container ly-personality (min-width: 48rem) {
657
+ :where(.ly-root[data-layout="split-screen"], .ly-root[layout-style="split-screen"], .ly-root.ly-layout-split-screen, .ly-root.ly-style-split-screen)
658
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
659
+ grid-template-areas:
660
+ "header header"
661
+ "main sidebar"
662
+ "aside sidebar"
663
+ "footer footer";
664
+ grid-template-rows: auto minmax(0, 1fr) auto auto;
665
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
666
+ }
667
+
668
+ :where(.ly-root[data-layout="split-screen"], .ly-root[layout-style="split-screen"], .ly-root.ly-layout-split-screen, .ly-root.ly-style-split-screen)
669
+ :where(
670
+ .ly-split,
671
+ .ly-split-hero,
672
+ [data-ly-recipe="split-hero"],
673
+ .ly-list-detail,
674
+ [data-ly-recipe="list-detail"]
675
+ ) {
676
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
677
+ }
678
+ }
679
+
680
+ /* V1 personality aliases for mondrian; generated from the canonical v2 source. */
681
+ :where(.ly-root[data-layout="mondrian"], .ly-root[layout-style="mondrian"], .ly-root.ly-layout-mondrian, .ly-root.ly-style-mondrian) {
682
+ --ly-recipe-rail: 13rem;
683
+ --ly-recipe-aside: 18rem;
684
+ --ly-grid-columns: 10;
685
+ --ly-grid-min: 11rem;
686
+ --ly-personality-wrapper-max: 112rem;
687
+
688
+ container-name: ly-personality;
689
+ container-type: inline-size;
690
+ min-inline-size: 0;
691
+ }
692
+
693
+ @container ly-personality (min-width: 48rem) {
694
+ :where(.ly-root[data-layout="mondrian"], .ly-root[layout-style="mondrian"], .ly-root.ly-layout-mondrian, .ly-root.ly-style-mondrian)
695
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
696
+ grid-template-columns: minmax(min(100%, 13rem), 0.3fr) minmax(0, 1fr);
697
+ }
698
+ }
699
+
700
+ @container ly-personality (min-width: 52rem) {
701
+ :where(.ly-root[data-layout="mondrian"], .ly-root[layout-style="mondrian"], .ly-root.ly-layout-mondrian, .ly-root.ly-style-mondrian)
702
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
703
+ grid-template-areas:
704
+ "sidebar header header"
705
+ "sidebar main aside"
706
+ "footer footer aside";
707
+ grid-template-rows: auto minmax(0, 1fr) auto;
708
+ grid-template-columns:
709
+ minmax(min(100%, 13rem), 0.22fr)
710
+ minmax(0, 1.45fr)
711
+ minmax(min(100%, 18rem), 0.55fr);
712
+ }
713
+
714
+ :where(.ly-root[data-layout="mondrian"], .ly-root[layout-style="mondrian"], .ly-root.ly-layout-mondrian, .ly-root.ly-style-mondrian) .ly-grid > :nth-child(5n + 1) {
715
+ grid-column: span 2;
716
+ grid-row: span 2;
717
+ }
718
+ }
719
+
720
+ /* V1 personality aliases for synthwave; generated from the canonical v2 source. */
721
+ :where(.ly-root[data-layout="synthwave"], .ly-root[layout-style="synthwave"], .ly-root.ly-layout-synthwave, .ly-root.ly-style-synthwave) {
722
+ --ly-recipe-rail: 16rem;
723
+ --ly-recipe-aside: 20rem;
724
+ --ly-grid-columns: 12;
725
+ --ly-grid-min: 14rem;
726
+ --ly-reel-item-max: 34rem;
727
+ --ly-personality-wrapper-max: 112rem;
728
+
729
+ container-name: ly-personality;
730
+ container-type: inline-size;
731
+ min-inline-size: 0;
732
+ }
733
+
734
+ @container ly-personality (min-width: 48rem) {
735
+ :where(.ly-root[data-layout="synthwave"], .ly-root[layout-style="synthwave"], .ly-root.ly-layout-synthwave, .ly-root.ly-style-synthwave)
736
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
737
+ grid-template-columns: minmax(min(100%, 16rem), 0.3fr) minmax(0, 1fr);
738
+ }
739
+ }
740
+
741
+ @container ly-personality (min-width: 64rem) {
742
+ :where(.ly-root[data-layout="synthwave"], .ly-root[layout-style="synthwave"], .ly-root.ly-layout-synthwave, .ly-root.ly-style-synthwave)
743
+ :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
744
+ grid-template-areas:
745
+ "header header header"
746
+ "sidebar main aside"
747
+ "footer footer footer";
748
+ grid-template-rows: auto minmax(0, 1fr) auto;
749
+ grid-template-columns:
750
+ minmax(min(100%, 16rem), 0.28fr)
751
+ minmax(0, 1fr)
752
+ minmax(min(100%, 20rem), 0.34fr);
753
+ }
754
+
755
+ :where(.ly-root[data-layout="synthwave"], .ly-root[layout-style="synthwave"], .ly-root.ly-layout-synthwave, .ly-root.ly-style-synthwave) .ly-grid > :nth-child(4n + 1) {
756
+ grid-column: span 3;
757
+ }
758
+
759
+ :where(.ly-root[data-layout="synthwave"], .ly-root[layout-style="synthwave"], .ly-root.ly-layout-synthwave, .ly-root.ly-style-synthwave) .ly-reel {
760
+ grid-auto-columns: minmax(min(100%, 20rem), var(--ly-reel-item-max));
761
+ }
762
+ }
763
+
764
+ @container (min-width: 48rem) {
765
+ .ly-sidebar-layout {
766
+ grid-template-columns: minmax(min(100%, var(--ly-sidebar-min)), var(--ly-sidebar-max)) minmax(0, 1fr);
767
+ align-items: start;
768
+ }
769
+
770
+ .ly-sidebar-layout--right {
771
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, var(--ly-sidebar-min)), var(--ly-sidebar-max));
772
+ }
773
+
774
+ .ly-panes--two {
775
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, var(--ly-pane-size)), 0.7fr);
776
+ }
777
+ }
778
+
779
+ @container (min-width: 64rem) {
780
+ .ly-panes--three {
781
+ grid-template-columns:
782
+ minmax(min(100%, var(--ly-pane-rail, 14rem)), 0.35fr)
783
+ minmax(0, 1fr)
784
+ minmax(min(100%, var(--ly-pane-rail, 14rem)), 0.35fr);
785
+ }
786
+ }
787
+ }