layout-style-css 2.1.0 → 2.1.1

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 (50) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +5 -5
  3. package/demo/index.html +1 -1
  4. package/demo/sitemap.xml +1 -1
  5. package/dist/layout-style-css.css +147 -104
  6. package/dist/layout-style-css.min.css +1 -1
  7. package/dist/legacy.css +137 -102
  8. package/dist/personalities/bauhaus.css +10 -7
  9. package/dist/personalities/bento.css +15 -12
  10. package/dist/personalities/brutalism.css +8 -5
  11. package/dist/personalities/cyberpunk.css +8 -5
  12. package/dist/personalities/f-pattern.css +14 -11
  13. package/dist/personalities/maximalist.css +17 -14
  14. package/dist/personalities/minimal-saas.css +8 -6
  15. package/dist/personalities/mondrian.css +10 -7
  16. package/dist/personalities/neumorphism.css +2 -2
  17. package/dist/personalities/retro-glass.css +10 -7
  18. package/dist/personalities/retrofuturism.css +8 -5
  19. package/dist/personalities/split-screen.css +1 -1
  20. package/dist/personalities/synthwave.css +2 -2
  21. package/dist/personalities/tactile.css +1 -1
  22. package/dist/personalities/y2k.css +8 -5
  23. package/dist/personalities/z-pattern.css +15 -12
  24. package/dist/recipes.css +10 -2
  25. package/docs/wiki/Getting-Started.md +1 -1
  26. package/docs/wiki/Home.md +2 -2
  27. package/docs/wiki/Installation-And-CDN.md +3 -3
  28. package/docs/wiki/Layout-Recipes.md +1 -1
  29. package/docs/wiki/Layout-Styles.md +1 -1
  30. package/docs/wiki/Migrating-To-2.0.md +1 -1
  31. package/docs/wiki/Release-And-Publishing.md +8 -8
  32. package/docs/wiki/UI-Style-Kit-Compatibility.md +1 -1
  33. package/package.json +1 -1
  34. package/styles/personalities/bauhaus.css +10 -7
  35. package/styles/personalities/bento.css +15 -12
  36. package/styles/personalities/brutalism.css +8 -5
  37. package/styles/personalities/cyberpunk.css +8 -5
  38. package/styles/personalities/f-pattern.css +14 -11
  39. package/styles/personalities/maximalist.css +17 -14
  40. package/styles/personalities/minimal-saas.css +8 -6
  41. package/styles/personalities/mondrian.css +10 -7
  42. package/styles/personalities/neumorphism.css +2 -2
  43. package/styles/personalities/retro-glass.css +10 -7
  44. package/styles/personalities/retrofuturism.css +8 -5
  45. package/styles/personalities/split-screen.css +1 -1
  46. package/styles/personalities/synthwave.css +2 -2
  47. package/styles/personalities/tactile.css +1 -1
  48. package/styles/personalities/y2k.css +8 -5
  49. package/styles/personalities/z-pattern.css +15 -12
  50. package/styles/recipes.css +10 -2
package/CHANGELOG.md CHANGED
@@ -2,6 +2,23 @@
2
2
 
3
3
  All notable changes to `layout-style-css` are documented here. This project follows semantic versioning.
4
4
 
5
+ ## [2.1.1] - 2026-07-27
6
+
7
+ ### Fixed
8
+
9
+ - Made personality enhancements query the nearest inline-size container while preserving the named personality containment scope for compatibility.
10
+ - Deferred three- and four-track application-shell signatures until their local container reaches `64rem`; existing safe two-track signatures retain their authored thresholds.
11
+ - Gave the Docs recipe a distinct wide two-column shell with navigation spanning the left column and `header`, `main`, `aside`, and `footer` stacked in the right column.
12
+
13
+ ### Tests
14
+
15
+ - Added root-wide, local-container fixtures at `47rem`, `49rem`, `63rem`, and `65rem` across all sixteen personalities, including internal overflow, zero-width region, DOM order, and keyboard order checks.
16
+ - Added static contracts for nearest-container personality queries and distinct Dashboard and Docs wide geometry.
17
+
18
+ ### Security
19
+
20
+ - Refreshed the development lockfile to patched `fast-uri` and `postcss` releases so the release audit reports no known vulnerabilities; the published CSS package remains dependency-free.
21
+
5
22
  ## [2.1.0] - 2026-07-20
6
23
 
7
24
  ### Changed
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Container-first, dependency-free structural CSS for responsive application layouts.
4
4
 
5
- `layout-style-css@2.1.0` provides semantic wrappers, composition primitives, seven functional recipes, ordering escape hatches, sixteen spatial personalities, and refreshed ecosystem fixtures for UI Style Kit CSS 2.1 and Interactive Surface CSS 1.5. It owns layout only; color, typography, borders, shadows, component paint, and interactive states belong to other libraries.
5
+ `layout-style-css@2.1.1` provides semantic wrappers, composition primitives, seven functional recipes, ordering escape hatches, sixteen spatial personalities, and refreshed ecosystem fixtures for UI Style Kit CSS 2.1 and Interactive Surface CSS 1.5. It owns layout only; color, typography, borders, shadows, component paint, and interactive states belong to other libraries.
6
6
 
7
7
  ## Requirements
8
8
 
@@ -15,7 +15,7 @@ Container-first, dependency-free structural CSS for responsive application layou
15
15
  ## Install
16
16
 
17
17
  ```bash
18
- npm install layout-style-css@2.1.0
18
+ npm install layout-style-css@2.1.1
19
19
  ```
20
20
 
21
21
  Standalone use needs one import:
@@ -87,7 +87,7 @@ Every `.ly-wrapper` has fluid logical gutters, safe-area compensation, and `cont
87
87
  </main>
88
88
  ```
89
89
 
90
- Wrappers and recipe roots respond to the nearest container. The mobile single-column fallback is authoritative; core recipes and primitives enhance at the `48rem` and `64rem` core thresholds, not viewport widths. Personalities may introduce personality-specific thresholds to create a distinct spatial rhythm while preserving source order.
90
+ Wrappers, recipe roots, and personality enhancements respond to the nearest inline-size container. The mobile single-column fallback is authoritative; core recipes and primitives enhance at the `48rem` and `64rem` core thresholds, not viewport widths. Personality grid rhythms retain their authored thresholds, safe two-track application shells retain their authored thresholds, and every three- or four-track application shell waits for a locally feasible `64rem` allocation.
91
91
 
92
92
  ## Recipes And Areas
93
93
 
@@ -183,8 +183,8 @@ The v1 `.ly-surface--raised` selector is intentionally removed, including from `
183
183
  ## CDN
184
184
 
185
185
  ```html
186
- <link rel="stylesheet" href="https://unpkg.com/layout-style-css@2.1.0/dist/layout-style-css.min.css">
187
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/layout-style-css@2.1.0/dist/layout-style-css.min.css">
186
+ <link rel="stylesheet" href="https://unpkg.com/layout-style-css@2.1.1/dist/layout-style-css.min.css">
187
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/layout-style-css@2.1.1/dist/layout-style-css.min.css">
188
188
  ```
189
189
 
190
190
  Companion CDN styles must appear in the same order as the package imports: UI Style Kit visual CSS, UI Style Kit `interactive-surface-theme.css`, Interactive Surface `state-core.css`, then Layout core. Load `layout-style-css/integrations/ui-style-kit.css` only for deprecated structural aliases.
package/demo/index.html CHANGED
@@ -79,7 +79,7 @@
79
79
  "@context": "https://schema.org",
80
80
  "@type": "SoftwareSourceCode",
81
81
  "name": "layout-style-css",
82
- "version": "2.1.0",
82
+ "version": "2.1.1",
83
83
  "description": "A dependency-free, container-first CSS layout library for semantic wrappers, composition primitives, responsive recipes, and spatial personalities.",
84
84
  "programmingLanguage": "CSS",
85
85
  "applicationCategory": "DeveloperApplication",
package/demo/sitemap.xml CHANGED
@@ -2,7 +2,7 @@
2
2
  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
3
3
  <url>
4
4
  <loc>https://foscat.github.io/layout-style-css/</loc>
5
- <lastmod>2026-07-20</lastmod>
5
+ <lastmod>2026-07-27</lastmod>
6
6
  <changefreq>weekly</changefreq>
7
7
  <priority>0.8</priority>
8
8
  </url>
@@ -635,8 +635,7 @@
635
635
  minmax(min(100%, var(--ly-recipe-aside)), 0.35fr);
636
636
  }
637
637
 
638
- :where(.ly-dashboard, [data-ly-recipe="dashboard"]),
639
- :where(.ly-docs, [data-ly-recipe="docs"]) {
638
+ :where(.ly-dashboard, [data-ly-recipe="dashboard"]) {
640
639
  grid-template-areas:
641
640
  "nav header header"
642
641
  "nav main aside"
@@ -647,6 +646,15 @@
647
646
  minmax(min(100%, var(--ly-recipe-aside)), 0.35fr);
648
647
  }
649
648
 
649
+ :where(.ly-docs, [data-ly-recipe="docs"]) {
650
+ grid-template-areas:
651
+ "nav header"
652
+ "nav main"
653
+ "nav aside"
654
+ "nav footer";
655
+ grid-template-columns: minmax(min(100%, var(--ly-recipe-rail)), auto) minmax(0, 1fr);
656
+ }
657
+
650
658
  :where(.ly-list-detail, [data-ly-recipe="list-detail"]) {
651
659
  grid-template-columns: minmax(min(100%, var(--ly-pane-size)), 0.45fr) minmax(0, 1fr);
652
660
  }
@@ -843,8 +851,14 @@
843
851
  min-inline-size: 0;
844
852
  }
845
853
 
846
- /* Named areas rearrange the shell without changing its mobile DOM or focus order. */
847
- @container ly-personality (min-width: 48rem) {
854
+ @container (min-width: 48rem) {
855
+ :where(.ly-root[data-ly-layout="minimal-saas"]) .ly-grid > :nth-child(4n + 1) {
856
+ grid-column: span 2;
857
+ }
858
+ }
859
+
860
+ /* The three-track shell waits for a locally feasible allocation. */
861
+ @container (min-width: 64rem) {
848
862
  :where(.ly-root[data-ly-layout="minimal-saas"])
849
863
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
850
864
  grid-template-areas:
@@ -857,10 +871,6 @@
857
871
  minmax(0, 1fr)
858
872
  minmax(min(100%, 16rem), 0.28fr);
859
873
  }
860
-
861
- :where(.ly-root[data-ly-layout="minimal-saas"]) .ly-grid > :nth-child(4n + 1) {
862
- grid-column: span 2;
863
- }
864
874
  }
865
875
  }
866
876
 
@@ -879,7 +889,21 @@
879
889
  min-inline-size: 0;
880
890
  }
881
891
 
882
- @container ly-personality (min-width: 48rem) {
892
+ @container (min-width: 48rem) {
893
+ :where(.ly-root[data-ly-layout="bento"]) .ly-grid > :nth-child(6n + 1) {
894
+ grid-column: span 2;
895
+ grid-row: span 2;
896
+ }
897
+
898
+ :where(.ly-root[data-ly-layout="bento"])
899
+ :where(.ly-card-grid, [data-ly-recipe="card-grid"])
900
+ > :nth-child(6n + 1) {
901
+ grid-column: span 2;
902
+ }
903
+ }
904
+
905
+ /* The three-track shell waits for a locally feasible allocation. */
906
+ @container (min-width: 64rem) {
883
907
  :where(.ly-root[data-ly-layout="bento"])
884
908
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
885
909
  grid-template-areas:
@@ -893,17 +917,6 @@
893
917
  minmax(0, 1fr)
894
918
  minmax(0, 1fr);
895
919
  }
896
-
897
- :where(.ly-root[data-ly-layout="bento"]) .ly-grid > :nth-child(6n + 1) {
898
- grid-column: span 2;
899
- grid-row: span 2;
900
- }
901
-
902
- :where(.ly-root[data-ly-layout="bento"])
903
- :where(.ly-card-grid, [data-ly-recipe="card-grid"])
904
- > :nth-child(6n + 1) {
905
- grid-column: span 2;
906
- }
907
920
  }
908
921
  }
909
922
 
@@ -922,14 +935,29 @@
922
935
  min-inline-size: 0;
923
936
  }
924
937
 
925
- @container ly-personality (min-width: 48rem) {
938
+ @container (min-width: 48rem) {
926
939
  :where(.ly-root[data-ly-layout="maximalist"])
927
940
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
928
941
  grid-template-columns: minmax(min(100%, 18rem), 0.3fr) minmax(0, 1fr);
929
942
  }
930
943
  }
931
944
 
932
- @container ly-personality (min-width: 56rem) {
945
+ @container (min-width: 56rem) {
946
+ :where(.ly-root[data-ly-layout="maximalist"]) .ly-grid > :nth-child(7n + 1) {
947
+ grid-column: span 3;
948
+ grid-row: span 2;
949
+ }
950
+
951
+ :where(.ly-root[data-ly-layout="maximalist"])
952
+ :where(.ly-gallery, [data-ly-recipe="gallery"])
953
+ > :nth-child(5n + 1) {
954
+ grid-column: span 2;
955
+ grid-row: span 2;
956
+ }
957
+ }
958
+
959
+ /* The four-track shell waits for a locally feasible allocation. */
960
+ @container (min-width: 64rem) {
933
961
  :where(.ly-root[data-ly-layout="maximalist"])
934
962
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
935
963
  grid-template-areas:
@@ -943,18 +971,6 @@
943
971
  minmax(min(100%, 15rem), 0.32fr)
944
972
  minmax(min(100%, 18rem), 0.38fr);
945
973
  }
946
-
947
- :where(.ly-root[data-ly-layout="maximalist"]) .ly-grid > :nth-child(7n + 1) {
948
- grid-column: span 3;
949
- grid-row: span 2;
950
- }
951
-
952
- :where(.ly-root[data-ly-layout="maximalist"])
953
- :where(.ly-gallery, [data-ly-recipe="gallery"])
954
- > :nth-child(5n + 1) {
955
- grid-column: span 2;
956
- grid-row: span 2;
957
- }
958
974
  }
959
975
  }
960
976
 
@@ -975,14 +991,22 @@
975
991
  }
976
992
 
977
993
  /* Cap the fallback rail until the wider personality template is eligible. */
978
- @container ly-personality (min-width: 48rem) {
994
+ @container (min-width: 48rem) {
979
995
  :where(.ly-root[data-ly-layout="bauhaus"])
980
996
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
981
997
  grid-template-columns: minmax(min(100%, 14rem), 0.3fr) minmax(0, 1fr);
982
998
  }
983
999
  }
984
1000
 
985
- @container ly-personality (min-width: 52rem) {
1001
+ @container (min-width: 52rem) {
1002
+ :where(.ly-root[data-ly-layout="bauhaus"]) .ly-grid > :nth-child(3n + 1) {
1003
+ grid-column: span 2;
1004
+ grid-row: span 2;
1005
+ }
1006
+ }
1007
+
1008
+ /* The four-track shell waits for a locally feasible allocation. */
1009
+ @container (min-width: 64rem) {
986
1010
  :where(.ly-root[data-ly-layout="bauhaus"])
987
1011
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
988
1012
  grid-template-areas:
@@ -996,11 +1020,6 @@
996
1020
  minmax(0, 1.3fr)
997
1021
  minmax(min(100%, 18rem), 0.3fr);
998
1022
  }
999
-
1000
- :where(.ly-root[data-ly-layout="bauhaus"]) .ly-grid > :nth-child(3n + 1) {
1001
- grid-column: span 2;
1002
- grid-row: span 2;
1003
- }
1004
1023
  }
1005
1024
  }
1006
1025
 
@@ -1020,7 +1039,7 @@
1020
1039
  min-inline-size: 0;
1021
1040
  }
1022
1041
 
1023
- @container ly-personality (min-width: 48rem) {
1042
+ @container (min-width: 48rem) {
1024
1043
  :where(.ly-root[data-ly-layout="tactile"])
1025
1044
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
1026
1045
  grid-template-areas:
@@ -1059,14 +1078,14 @@
1059
1078
  min-inline-size: 0;
1060
1079
  }
1061
1080
 
1062
- @container ly-personality (min-width: 48rem) {
1081
+ @container (min-width: 48rem) {
1063
1082
  :where(.ly-root[data-ly-layout="neumorphism"])
1064
1083
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
1065
1084
  grid-template-columns: minmax(min(100%, 17rem), 0.3fr) minmax(0, 1fr);
1066
1085
  }
1067
1086
  }
1068
1087
 
1069
- @container ly-personality (min-width: 52rem) {
1088
+ @container (min-width: 52rem) {
1070
1089
  :where(.ly-root[data-ly-layout="neumorphism"])
1071
1090
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
1072
1091
  grid-template-areas:
@@ -1105,7 +1124,14 @@
1105
1124
  min-inline-size: 0;
1106
1125
  }
1107
1126
 
1108
- @container ly-personality (min-width: 48rem) {
1127
+ @container (min-width: 48rem) {
1128
+ :where(.ly-root[data-ly-layout="retrofuturism"]) .ly-grid > :nth-child(6n + 1) {
1129
+ grid-column: span 2;
1130
+ }
1131
+ }
1132
+
1133
+ /* The three-track shell waits for a locally feasible allocation. */
1134
+ @container (min-width: 64rem) {
1109
1135
  :where(.ly-root[data-ly-layout="retrofuturism"])
1110
1136
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
1111
1137
  grid-template-areas:
@@ -1118,10 +1144,6 @@
1118
1144
  minmax(0, 1fr)
1119
1145
  minmax(min(100%, 17rem), 0.3fr);
1120
1146
  }
1121
-
1122
- :where(.ly-root[data-ly-layout="retrofuturism"]) .ly-grid > :nth-child(6n + 1) {
1123
- grid-column: span 2;
1124
- }
1125
1147
  }
1126
1148
  }
1127
1149
 
@@ -1141,7 +1163,14 @@
1141
1163
  min-inline-size: 0;
1142
1164
  }
1143
1165
 
1144
- @container ly-personality (min-width: 48rem) {
1166
+ @container (min-width: 48rem) {
1167
+ :where(.ly-root[data-ly-layout="brutalism"]) .ly-grid > :nth-child(3n) {
1168
+ grid-column: span 2;
1169
+ }
1170
+ }
1171
+
1172
+ /* The three-track shell waits for a locally feasible allocation. */
1173
+ @container (min-width: 64rem) {
1145
1174
  :where(.ly-root[data-ly-layout="brutalism"])
1146
1175
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
1147
1176
  grid-template-areas:
@@ -1154,10 +1183,6 @@
1154
1183
  minmax(min(100%, 16rem), 0.7fr)
1155
1184
  minmax(min(100%, 18rem), 0.34fr);
1156
1185
  }
1157
-
1158
- :where(.ly-root[data-ly-layout="brutalism"]) .ly-grid > :nth-child(3n) {
1159
- grid-column: span 2;
1160
- }
1161
1186
  }
1162
1187
  }
1163
1188
 
@@ -1177,7 +1202,14 @@
1177
1202
  min-inline-size: 0;
1178
1203
  }
1179
1204
 
1180
- @container ly-personality (min-width: 44rem) {
1205
+ @container (min-width: 44rem) {
1206
+ :where(.ly-root[data-ly-layout="cyberpunk"]) .ly-grid > :nth-child(4n + 2) {
1207
+ grid-column: span 3;
1208
+ }
1209
+ }
1210
+
1211
+ /* The three-track shell waits for a locally feasible allocation. */
1212
+ @container (min-width: 64rem) {
1181
1213
  :where(.ly-root[data-ly-layout="cyberpunk"])
1182
1214
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
1183
1215
  grid-template-areas:
@@ -1190,10 +1222,6 @@
1190
1222
  minmax(0, 1fr)
1191
1223
  minmax(min(100%, 19rem), 0.32fr);
1192
1224
  }
1193
-
1194
- :where(.ly-root[data-ly-layout="cyberpunk"]) .ly-grid > :nth-child(4n + 2) {
1195
- grid-column: span 3;
1196
- }
1197
1225
  }
1198
1226
  }
1199
1227
 
@@ -1213,7 +1241,14 @@
1213
1241
  min-inline-size: 0;
1214
1242
  }
1215
1243
 
1216
- @container ly-personality (min-width: 48rem) {
1244
+ @container (min-width: 48rem) {
1245
+ :where(.ly-root[data-ly-layout="y2k"]) .ly-grid > :nth-child(5n + 1) {
1246
+ grid-column: span 3;
1247
+ }
1248
+ }
1249
+
1250
+ /* The three-track shell waits for a locally feasible allocation. */
1251
+ @container (min-width: 64rem) {
1217
1252
  :where(.ly-root[data-ly-layout="y2k"])
1218
1253
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
1219
1254
  grid-template-areas:
@@ -1226,10 +1261,6 @@
1226
1261
  minmax(0, 1fr)
1227
1262
  minmax(min(100%, 16rem), 0.28fr);
1228
1263
  }
1229
-
1230
- :where(.ly-root[data-ly-layout="y2k"]) .ly-grid > :nth-child(5n + 1) {
1231
- grid-column: span 3;
1232
- }
1233
1264
  }
1234
1265
  }
1235
1266
 
@@ -1249,14 +1280,22 @@
1249
1280
  min-inline-size: 0;
1250
1281
  }
1251
1282
 
1252
- @container ly-personality (min-width: 48rem) {
1283
+ @container (min-width: 48rem) {
1253
1284
  :where(.ly-root[data-ly-layout="retro-glass"])
1254
1285
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
1255
1286
  grid-template-columns: minmax(min(100%, 18rem), 0.3fr) minmax(0, 1fr);
1256
1287
  }
1257
1288
  }
1258
1289
 
1259
- @container ly-personality (min-width: 56rem) {
1290
+ @container (min-width: 56rem) {
1291
+ :where(.ly-root[data-ly-layout="retro-glass"]) .ly-grid > :nth-child(4n) {
1292
+ grid-column: span 2;
1293
+ grid-row: span 2;
1294
+ }
1295
+ }
1296
+
1297
+ /* The three-track shell waits for a locally feasible allocation. */
1298
+ @container (min-width: 64rem) {
1260
1299
  :where(.ly-root[data-ly-layout="retro-glass"])
1261
1300
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
1262
1301
  grid-template-areas:
@@ -1269,11 +1308,6 @@
1269
1308
  minmax(0, 0.75fr)
1270
1309
  minmax(min(100%, 18rem), 0.32fr);
1271
1310
  }
1272
-
1273
- :where(.ly-root[data-ly-layout="retro-glass"]) .ly-grid > :nth-child(4n) {
1274
- grid-column: span 2;
1275
- grid-row: span 2;
1276
- }
1277
1311
  }
1278
1312
  }
1279
1313
 
@@ -1293,14 +1327,26 @@
1293
1327
  min-inline-size: 0;
1294
1328
  }
1295
1329
 
1296
- @container ly-personality (min-width: 48rem) {
1330
+ @container (min-width: 48rem) {
1297
1331
  :where(.ly-root[data-ly-layout="f-pattern"])
1298
1332
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
1299
1333
  grid-template-columns: minmax(min(100%, 16rem), 0.3fr) minmax(0, 1fr);
1300
1334
  }
1301
1335
  }
1302
1336
 
1303
- @container ly-personality (min-width: 56rem) {
1337
+ @container (min-width: 56rem) {
1338
+ :where(.ly-root[data-ly-layout="f-pattern"]) .ly-grid > :nth-child(3n + 1) {
1339
+ grid-column: span 2;
1340
+ }
1341
+
1342
+ :where(.ly-root[data-ly-layout="f-pattern"])
1343
+ :where(.ly-split-hero, [data-ly-recipe="split-hero"]) {
1344
+ grid-template-columns: minmax(0, 1.35fr) minmax(0, 0.65fr);
1345
+ }
1346
+ }
1347
+
1348
+ /* The three-track shell waits for a locally feasible allocation. */
1349
+ @container (min-width: 64rem) {
1304
1350
  :where(.ly-root[data-ly-layout="f-pattern"])
1305
1351
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
1306
1352
  grid-template-areas:
@@ -1313,15 +1359,6 @@
1313
1359
  minmax(0, 1.35fr)
1314
1360
  minmax(min(100%, 18rem), 0.65fr);
1315
1361
  }
1316
-
1317
- :where(.ly-root[data-ly-layout="f-pattern"]) .ly-grid > :nth-child(3n + 1) {
1318
- grid-column: span 2;
1319
- }
1320
-
1321
- :where(.ly-root[data-ly-layout="f-pattern"])
1322
- :where(.ly-split-hero, [data-ly-recipe="split-hero"]) {
1323
- grid-template-columns: minmax(0, 1.35fr) minmax(0, 0.65fr);
1324
- }
1325
1362
  }
1326
1363
  }
1327
1364
 
@@ -1341,14 +1378,27 @@
1341
1378
  min-inline-size: 0;
1342
1379
  }
1343
1380
 
1344
- @container ly-personality (min-width: 48rem) {
1381
+ @container (min-width: 48rem) {
1345
1382
  :where(.ly-root[data-ly-layout="z-pattern"])
1346
1383
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
1347
1384
  grid-template-columns: minmax(min(100%, 17rem), 0.3fr) minmax(0, 1fr);
1348
1385
  }
1349
1386
  }
1350
1387
 
1351
- @container ly-personality (min-width: 60rem) {
1388
+ @container (min-width: 60rem) {
1389
+ :where(.ly-root[data-ly-layout="z-pattern"]) .ly-grid > :nth-child(4n + 2) {
1390
+ grid-column: span 2;
1391
+ align-self: end;
1392
+ }
1393
+
1394
+ :where(.ly-root[data-ly-layout="z-pattern"])
1395
+ :where(.ly-split-hero, [data-ly-recipe="split-hero"]) {
1396
+ grid-template-columns: minmax(0, 1.5fr) minmax(0, 0.5fr);
1397
+ }
1398
+ }
1399
+
1400
+ /* The three-track shell waits for a locally feasible allocation. */
1401
+ @container (min-width: 64rem) {
1352
1402
  :where(.ly-root[data-ly-layout="z-pattern"])
1353
1403
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
1354
1404
  grid-template-areas:
@@ -1361,16 +1411,6 @@
1361
1411
  minmax(min(100%, 19rem), 0.55fr)
1362
1412
  minmax(min(100%, 17rem), 0.3fr);
1363
1413
  }
1364
-
1365
- :where(.ly-root[data-ly-layout="z-pattern"]) .ly-grid > :nth-child(4n + 2) {
1366
- grid-column: span 2;
1367
- align-self: end;
1368
- }
1369
-
1370
- :where(.ly-root[data-ly-layout="z-pattern"])
1371
- :where(.ly-split-hero, [data-ly-recipe="split-hero"]) {
1372
- grid-template-columns: minmax(0, 1.5fr) minmax(0, 0.5fr);
1373
- }
1374
1414
  }
1375
1415
  }
1376
1416
 
@@ -1390,7 +1430,7 @@
1390
1430
  min-inline-size: 0;
1391
1431
  }
1392
1432
 
1393
- @container ly-personality (min-width: 48rem) {
1433
+ @container (min-width: 48rem) {
1394
1434
  :where(.ly-root[data-ly-layout="split-screen"])
1395
1435
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
1396
1436
  grid-template-areas:
@@ -1431,14 +1471,22 @@
1431
1471
  min-inline-size: 0;
1432
1472
  }
1433
1473
 
1434
- @container ly-personality (min-width: 48rem) {
1474
+ @container (min-width: 48rem) {
1435
1475
  :where(.ly-root[data-ly-layout="mondrian"])
1436
1476
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
1437
1477
  grid-template-columns: minmax(min(100%, 13rem), 0.3fr) minmax(0, 1fr);
1438
1478
  }
1439
1479
  }
1440
1480
 
1441
- @container ly-personality (min-width: 52rem) {
1481
+ @container (min-width: 52rem) {
1482
+ :where(.ly-root[data-ly-layout="mondrian"]) .ly-grid > :nth-child(5n + 1) {
1483
+ grid-column: span 2;
1484
+ grid-row: span 2;
1485
+ }
1486
+ }
1487
+
1488
+ /* The three-track shell waits for a locally feasible allocation. */
1489
+ @container (min-width: 64rem) {
1442
1490
  :where(.ly-root[data-ly-layout="mondrian"])
1443
1491
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
1444
1492
  grid-template-areas:
@@ -1451,11 +1499,6 @@
1451
1499
  minmax(0, 1.45fr)
1452
1500
  minmax(min(100%, 18rem), 0.55fr);
1453
1501
  }
1454
-
1455
- :where(.ly-root[data-ly-layout="mondrian"]) .ly-grid > :nth-child(5n + 1) {
1456
- grid-column: span 2;
1457
- grid-row: span 2;
1458
- }
1459
1502
  }
1460
1503
  }
1461
1504
 
@@ -1476,14 +1519,14 @@
1476
1519
  min-inline-size: 0;
1477
1520
  }
1478
1521
 
1479
- @container ly-personality (min-width: 48rem) {
1522
+ @container (min-width: 48rem) {
1480
1523
  :where(.ly-root[data-ly-layout="synthwave"])
1481
1524
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
1482
1525
  grid-template-columns: minmax(min(100%, 16rem), 0.3fr) minmax(0, 1fr);
1483
1526
  }
1484
1527
  }
1485
1528
 
1486
- @container ly-personality (min-width: 64rem) {
1529
+ @container (min-width: 64rem) {
1487
1530
  :where(.ly-root[data-ly-layout="synthwave"])
1488
1531
  :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
1489
1532
  grid-template-areas: