layout-style-css 3.1.0 → 3.2.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 (43) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +16 -12
  3. package/dist/foundation.css +12 -9
  4. package/dist/layout-style-css.css +307 -108
  5. package/dist/layout-style-css.min.css +1 -1
  6. package/dist/personalities/bauhaus.css +3 -10
  7. package/dist/personalities/bento.css +0 -10
  8. package/dist/personalities/brutalism.css +2 -10
  9. package/dist/personalities/cyberpunk.css +1 -1
  10. package/dist/personalities/data-terminal.css +13 -0
  11. package/dist/personalities/editorial.css +14 -0
  12. package/dist/personalities/f-pattern.css +3 -3
  13. package/dist/personalities/industrial-hmi.css +11 -0
  14. package/dist/personalities/maximalist.css +1 -10
  15. package/dist/personalities/mondrian.css +1 -1
  16. package/dist/personalities/neumorphism.css +3 -12
  17. package/dist/personalities/retro-glass.css +10 -10
  18. package/dist/personalities/retrofuturism.css +1 -1
  19. package/dist/personalities/split-screen.css +5 -5
  20. package/dist/personalities/synthwave.css +1 -1
  21. package/dist/personalities/tactile.css +3 -12
  22. package/dist/personalities/technical-blueprint.css +13 -0
  23. package/dist/personalities/y2k.css +8 -8
  24. package/dist/personalities/z-pattern.css +3 -3
  25. package/dist/personalities.css +4 -0
  26. package/dist/primitives.css +113 -2
  27. package/dist/recipes.css +83 -0
  28. package/dist/utilities.css +3 -0
  29. package/docs/wiki/Demo-And-GitHub-Pages.md +4 -2
  30. package/docs/wiki/Getting-Started.md +4 -2
  31. package/docs/wiki/Home.md +5 -2
  32. package/docs/wiki/Installation-And-CDN.md +3 -3
  33. package/docs/wiki/Layout-Personality-Reference.md +67 -0
  34. package/docs/wiki/Layout-Primitives.md +6 -2
  35. package/docs/wiki/Layout-Recipes.md +1 -1
  36. package/docs/wiki/Layout-Styles.md +6 -23
  37. package/docs/wiki/Migrating-To-3.2.md +70 -0
  38. package/docs/wiki/Release-And-Publishing.md +6 -6
  39. package/docs/wiki/UI-Style-Kit-Compatibility.md +6 -0
  40. package/docs/wiki/_Sidebar.md +2 -0
  41. package/manifest.json +33 -23
  42. package/package.json +3 -3
  43. package/personalities.json +75 -14
@@ -54,6 +54,8 @@
54
54
  --ly-sidebar-content-min: 50%;
55
55
  --ly-grid-columns: 12;
56
56
  --ly-grid-min: 16rem;
57
+ --ly-mosaic-medium-columns: 6;
58
+ --ly-mosaic-wide-columns: 12;
57
59
  --ly-split-min: 20rem;
58
60
  --ly-pane-min: 18rem;
59
61
  --ly-pane-size: 22rem;
@@ -65,6 +67,7 @@
65
67
  --ly-split-primary: 1fr;
66
68
  --ly-split-secondary: 1fr;
67
69
 
70
+ --ly-recipe-main-min: 20rem;
68
71
  --ly-recipe-rail: 18rem;
69
72
  --ly-recipe-aside: 22rem;
70
73
  --ly-gallery-min: 12rem;
@@ -79,7 +82,7 @@
79
82
  --ly-app-shell-medium-rows: auto auto minmax(0, 1fr) auto;
80
83
  --ly-app-shell-medium-columns:
81
84
  minmax(min(100%, var(--ly-recipe-rail)), auto)
82
- minmax(0, 1fr);
85
+ minmax(min(100%, var(--ly-recipe-main-min)), 1fr);
83
86
  --ly-app-shell-wide-areas:
84
87
  "sidebar header header"
85
88
  "sidebar main aside"
@@ -87,7 +90,7 @@
87
90
  --ly-app-shell-wide-rows: auto minmax(0, 1fr) auto;
88
91
  --ly-app-shell-wide-columns:
89
92
  minmax(min(100%, var(--ly-recipe-rail)), auto)
90
- minmax(0, 1fr)
93
+ minmax(min(100%, var(--ly-recipe-main-min)), 1fr)
91
94
  minmax(min(100%, var(--ly-recipe-aside)), 0.35fr);
92
95
 
93
96
  --ly-dashboard-medium-areas:
@@ -96,7 +99,7 @@
96
99
  "main aside"
97
100
  "footer footer";
98
101
  --ly-dashboard-medium-columns:
99
- minmax(0, 1fr)
102
+ minmax(min(100%, var(--ly-recipe-main-min)), 1fr)
100
103
  minmax(min(100%, var(--ly-recipe-aside)), 0.35fr);
101
104
  --ly-dashboard-wide-areas:
102
105
  "nav header header"
@@ -104,7 +107,7 @@
104
107
  "nav footer footer";
105
108
  --ly-dashboard-wide-columns:
106
109
  minmax(min(100%, var(--ly-recipe-rail)), auto)
107
- minmax(0, 1fr)
110
+ minmax(min(100%, var(--ly-recipe-main-min)), 1fr)
108
111
  minmax(min(100%, var(--ly-recipe-aside)), 0.35fr);
109
112
 
110
113
  --ly-docs-wide-areas:
@@ -114,19 +117,19 @@
114
117
  "footer footer";
115
118
  --ly-docs-wide-columns:
116
119
  minmax(min(100%, var(--ly-recipe-rail)), auto)
117
- minmax(0, 1fr);
120
+ minmax(min(100%, var(--ly-recipe-main-min)), 1fr);
118
121
  --ly-list-detail-wide-areas:
119
122
  "primary secondary"
120
123
  "actions actions";
121
124
  --ly-list-detail-wide-columns:
122
- minmax(min(100%, var(--ly-pane-size)), 0.7fr)
123
- minmax(0, 1fr);
125
+ minmax(min(100%, max(var(--ly-pane-min), var(--ly-pane-size))), 0.7fr)
126
+ minmax(min(100%, var(--ly-pane-min)), 1fr);
124
127
  --ly-split-hero-wide-areas:
125
128
  "content media"
126
129
  "actions media";
127
130
  --ly-split-hero-wide-columns:
128
- minmax(0, var(--ly-split-primary, 1fr))
129
- minmax(0, var(--ly-split-secondary, 1fr));
131
+ minmax(min(100%, var(--ly-split-min)), var(--ly-split-primary, 1fr))
132
+ minmax(min(100%, var(--ly-split-min)), var(--ly-split-secondary, 1fr));
130
133
 
131
134
  container-name: ly-scope;
132
135
  container-type: inline-size;
@@ -558,6 +561,44 @@
558
561
  grid-template-columns: repeat(var(--ly-grid-columns), minmax(0, 1fr));
559
562
  }
560
563
 
564
+ .ly-mosaic {
565
+ display: grid;
566
+ grid-template-columns: minmax(0, 1fr);
567
+ gap: var(--ly-grid-gap);
568
+ }
569
+
570
+ .ly-mosaic > * {
571
+ min-inline-size: 0;
572
+ min-block-size: 0;
573
+ }
574
+
575
+ .ly-action-bar {
576
+ display: flex;
577
+ flex-wrap: wrap;
578
+ align-items: center;
579
+ gap: var(--ly-cluster-gap);
580
+ min-inline-size: 0;
581
+ padding-block-end: var(--ly-safe-area-block-end);
582
+ }
583
+
584
+ .ly-action-bar > :where([data-ly-actions="start"], [data-ly-actions="end"]) {
585
+ display: flex;
586
+ flex-wrap: wrap;
587
+ align-items: center;
588
+ gap: var(--ly-cluster-gap);
589
+ min-inline-size: 0;
590
+ }
591
+
592
+ .ly-action-bar > [data-ly-actions="end"] {
593
+ margin-inline-start: auto;
594
+ }
595
+
596
+ .ly-action-bar--sticky {
597
+ position: var(--ly-sticky-position, sticky);
598
+ inset-block-end: 0;
599
+ z-index: var(--ly-z-header, 20);
600
+ }
601
+
561
602
  .ly-split {
562
603
  display: grid;
563
604
  grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-split-min)), 1fr));
@@ -618,8 +659,7 @@
618
659
 
619
660
  .ly-scroll {
620
661
  min-block-size: 0;
621
- overflow-x: clip;
622
- overflow-y: auto;
662
+ overflow: auto;
623
663
  overscroll-behavior-block: contain;
624
664
  }
625
665
 
@@ -632,6 +672,80 @@
632
672
  }
633
673
  }
634
674
 
675
+ /*
676
+ Mosaic span behavior lives in the final structural context layer so it can
677
+ deliberately override the general-purpose span utilities at automatic tiers.
678
+ */
679
+ @layer ly.context {
680
+ .ly-mosaic:not([data-ly-responsive="manual"]) > :where(
681
+ .ly-span-1,
682
+ .ly-span-2,
683
+ .ly-span-3,
684
+ .ly-span-4,
685
+ .ly-span-6,
686
+ .ly-span-full
687
+ ) {
688
+ grid-column: 1 / -1;
689
+ }
690
+
691
+ .ly-mosaic:not([data-ly-responsive="manual"]) > :where(
692
+ .ly-row-span-2,
693
+ .ly-row-span-3
694
+ ) {
695
+ grid-row: auto;
696
+ }
697
+
698
+ @container ly-scope (min-width: 42rem) {
699
+ .ly-mosaic:not([data-ly-responsive="manual"]) {
700
+ grid-template-columns: repeat(
701
+ var(--ly-mosaic-medium-columns),
702
+ minmax(0, 1fr)
703
+ );
704
+ }
705
+
706
+ .ly-mosaic:not([data-ly-responsive="manual"]) > .ly-span-1 {
707
+ grid-column: span 1;
708
+ }
709
+
710
+ .ly-mosaic:not([data-ly-responsive="manual"]) > .ly-span-2 {
711
+ grid-column: span 2;
712
+ }
713
+
714
+ .ly-mosaic:not([data-ly-responsive="manual"]) > .ly-span-3 {
715
+ grid-column: span 3;
716
+ }
717
+
718
+ .ly-mosaic:not([data-ly-responsive="manual"]) > .ly-span-4 {
719
+ grid-column: span 4;
720
+ }
721
+
722
+ .ly-mosaic:not([data-ly-responsive="manual"]) > .ly-span-6 {
723
+ grid-column: span 6;
724
+ }
725
+
726
+ .ly-mosaic:not([data-ly-responsive="manual"]) > .ly-span-full {
727
+ grid-column: 1 / -1;
728
+ }
729
+
730
+ .ly-mosaic:not([data-ly-responsive="manual"]) > .ly-row-span-2 {
731
+ grid-row: span 2;
732
+ }
733
+
734
+ .ly-mosaic:not([data-ly-responsive="manual"]) > .ly-row-span-3 {
735
+ grid-row: span 3;
736
+ }
737
+ }
738
+
739
+ @container ly-scope (min-width: 72rem) {
740
+ .ly-mosaic:not([data-ly-responsive="manual"]) {
741
+ grid-template-columns: repeat(
742
+ var(--ly-mosaic-wide-columns),
743
+ minmax(0, 1fr)
744
+ );
745
+ }
746
+ }
747
+ }
748
+
635
749
  /* recipes.css */
636
750
  /*
637
751
  Recipes preserve the narrow-screen DOM order. Automatic topology queries
@@ -827,6 +941,89 @@
827
941
  grid-template-columns: var(--ly-dashboard-wide-columns);
828
942
  }
829
943
  }
944
+
945
+ /*
946
+ Feature-detected presence rules remove absent side tracks without changing
947
+ the canonical area vocabulary or personality-owned both-side topologies.
948
+ */
949
+ @supports selector(:has(*)) {
950
+ @container ly-scope (min-width: 52rem) {
951
+ [data-ly-recipe="app-shell"]:not([data-ly-responsive="manual"]):has(
952
+ > [data-ly-area="sidebar"]
953
+ ):not(:has(> [data-ly-area="aside"])) {
954
+ grid-template-areas:
955
+ "header header"
956
+ "sidebar main"
957
+ "footer footer";
958
+ grid-template-columns:
959
+ minmax(min(100%, var(--ly-recipe-rail)), auto)
960
+ minmax(min(100%, var(--ly-recipe-main-min)), 1fr);
961
+ grid-template-rows: auto minmax(0, 1fr) auto;
962
+ }
963
+
964
+ [data-ly-recipe="app-shell"]:not([data-ly-responsive="manual"]):not(
965
+ :has(> [data-ly-area="sidebar"])
966
+ ):has(> [data-ly-area="aside"]) {
967
+ grid-template-areas:
968
+ "header header"
969
+ "main aside"
970
+ "footer footer";
971
+ grid-template-columns:
972
+ minmax(min(100%, var(--ly-recipe-main-min)), 1fr)
973
+ minmax(min(100%, var(--ly-recipe-aside)), 0.35fr);
974
+ grid-template-rows: auto minmax(0, 1fr) auto;
975
+ }
976
+
977
+ [data-ly-recipe="app-shell"]:not([data-ly-responsive="manual"]):not(
978
+ :has(> [data-ly-area="sidebar"])
979
+ ):not(:has(> [data-ly-area="aside"])) {
980
+ grid-template-areas:
981
+ "header"
982
+ "main"
983
+ "footer";
984
+ grid-template-columns:
985
+ minmax(min(100%, var(--ly-recipe-main-min)), 1fr);
986
+ grid-template-rows: auto minmax(0, 1fr) auto;
987
+ }
988
+ }
989
+
990
+ @container ly-scope (min-width: 72rem) {
991
+ [data-ly-recipe="app-shell"]:not([data-ly-responsive="manual"]):has(
992
+ > [data-ly-area="sidebar"]
993
+ ):not(:has(> [data-ly-area="aside"])) {
994
+ grid-template-areas:
995
+ "sidebar header"
996
+ "sidebar main"
997
+ "sidebar footer";
998
+ grid-template-columns:
999
+ minmax(min(100%, var(--ly-recipe-rail)), auto)
1000
+ minmax(min(100%, var(--ly-recipe-main-min)), 1fr);
1001
+ }
1002
+
1003
+ [data-ly-recipe="app-shell"]:not([data-ly-responsive="manual"]):not(
1004
+ :has(> [data-ly-area="sidebar"])
1005
+ ):has(> [data-ly-area="aside"]) {
1006
+ grid-template-areas:
1007
+ "header header"
1008
+ "main aside"
1009
+ "footer footer";
1010
+ grid-template-columns:
1011
+ minmax(min(100%, var(--ly-recipe-main-min)), 1fr)
1012
+ minmax(min(100%, var(--ly-recipe-aside)), 0.35fr);
1013
+ }
1014
+
1015
+ [data-ly-recipe="app-shell"]:not([data-ly-responsive="manual"]):not(
1016
+ :has(> [data-ly-area="sidebar"])
1017
+ ):not(:has(> [data-ly-area="aside"])) {
1018
+ grid-template-areas:
1019
+ "header"
1020
+ "main"
1021
+ "footer";
1022
+ grid-template-columns:
1023
+ minmax(min(100%, var(--ly-recipe-main-min)), 1fr);
1024
+ }
1025
+ }
1026
+ }
830
1027
  }
831
1028
 
832
1029
  /* utilities.css */
@@ -844,7 +1041,10 @@
844
1041
  .ly-span-2 { grid-column: span 2; }
845
1042
  .ly-span-3 { grid-column: span 3; }
846
1043
  .ly-span-4 { grid-column: span 4; }
1044
+ .ly-span-6 { grid-column: span 6; }
847
1045
  .ly-span-full { grid-column: 1 / -1; }
1046
+ .ly-row-span-2 { grid-row: span 2; }
1047
+ .ly-row-span-3 { grid-row: span 3; }
848
1048
 
849
1049
  .ly-gap-0 { gap: var(--ly-space-0); }
850
1050
  .ly-gap-1 { gap: var(--ly-space-1); }
@@ -925,16 +1125,6 @@
925
1125
  --ly-gallery-min: 11rem;
926
1126
  --ly-recipe-rail: 14rem;
927
1127
  --ly-recipe-aside: 18rem;
928
- --ly-app-shell-wide-areas:
929
- "header header header"
930
- "sidebar main main"
931
- "aside main main"
932
- "footer footer footer";
933
- --ly-app-shell-wide-rows: auto auto minmax(0, 1fr) auto;
934
- --ly-app-shell-wide-columns:
935
- minmax(min(100%, var(--ly-recipe-rail)), 0.3fr)
936
- minmax(0, 1fr)
937
- minmax(0, 1fr);
938
1128
  }
939
1129
  }
940
1130
 
@@ -942,21 +1132,12 @@
942
1132
  @layer ly.personalities.maximalist {
943
1133
  :where(.ly-root[data-ly-layout="maximalist"]) {
944
1134
  --ly-personality-wrapper-max: 100%;
945
- --ly-profile-gap: var(--ly-space-7);
1135
+ --ly-profile-gap: var(--ly-space-3);
946
1136
  --ly-grid-min: 10rem;
947
1137
  --ly-card-grid-min: 13rem;
948
1138
  --ly-gallery-min: 10rem;
949
1139
  --ly-recipe-rail: 15rem;
950
1140
  --ly-recipe-aside: 18rem;
951
- --ly-app-shell-wide-areas:
952
- "header header header header"
953
- "main main sidebar aside"
954
- "main main footer footer";
955
- --ly-app-shell-wide-columns:
956
- minmax(0, 1.4fr)
957
- minmax(0, 0.6fr)
958
- minmax(min(100%, var(--ly-recipe-rail)), 0.32fr)
959
- minmax(min(100%, var(--ly-recipe-aside)), 0.38fr);
960
1141
  }
961
1142
  }
962
1143
 
@@ -964,42 +1145,26 @@
964
1145
  @layer ly.personalities.bauhaus {
965
1146
  :where(.ly-root[data-ly-layout="bauhaus"]) {
966
1147
  --ly-personality-wrapper-max: 96rem;
967
- --ly-profile-gap: var(--ly-space-6);
1148
+ --ly-profile-gap: var(--ly-space-2);
968
1149
  --ly-grid-min: 13rem;
969
1150
  --ly-recipe-rail: 14rem;
970
1151
  --ly-recipe-aside: 18rem;
971
- --ly-app-shell-wide-areas:
972
- "header header header header"
973
- "sidebar main main aside"
974
- "sidebar footer footer aside";
975
- --ly-app-shell-wide-columns:
976
- minmax(min(100%, var(--ly-recipe-rail)), 0.24fr)
977
- minmax(0, 0.7fr)
978
- minmax(0, 1.3fr)
979
- minmax(min(100%, var(--ly-recipe-aside)), 0.3fr);
1152
+ --ly-split-primary: 0.7fr;
1153
+ --ly-split-secondary: 1.3fr;
980
1154
  }
981
1155
  }
982
1156
 
983
1157
  /* personalities/tactile.css */
984
1158
  @layer ly.personalities.tactile {
985
1159
  :where(.ly-root[data-ly-layout="tactile"]) {
986
- --ly-personality-wrapper-max: 82rem;
1160
+ --ly-personality-wrapper-max: 96rem;
987
1161
  --ly-profile-gap: var(--ly-space-4);
988
1162
  --ly-grid-min: 15rem;
989
1163
  --ly-recipe-rail: 17rem;
990
1164
  --ly-recipe-aside: 20rem;
991
- --ly-app-shell-wide-areas:
992
- "header header"
993
- "sidebar main"
994
- "aside main"
995
- "footer footer";
996
- --ly-app-shell-wide-rows: auto auto minmax(0, 1fr) auto;
997
- --ly-app-shell-wide-columns:
998
- minmax(min(100%, var(--ly-recipe-rail)), 0.28fr)
999
- minmax(0, 1fr);
1000
1165
  --ly-list-detail-wide-columns:
1001
- minmax(min(100%, var(--ly-pane-size)), 0.5fr)
1002
- minmax(0, 0.9fr);
1166
+ minmax(min(100%, var(--ly-pane-min)), 0.5fr)
1167
+ minmax(min(100%, var(--ly-pane-min)), 0.9fr);
1003
1168
  }
1004
1169
  }
1005
1170
 
@@ -1010,19 +1175,10 @@
1010
1175
  --ly-profile-gap: var(--ly-space-6);
1011
1176
  --ly-grid-min: 17rem;
1012
1177
  --ly-recipe-rail: 17rem;
1013
- --ly-recipe-aside: 19rem;
1014
- --ly-app-shell-wide-areas:
1015
- "header sidebar"
1016
- "main sidebar"
1017
- "aside sidebar"
1018
- "footer sidebar";
1019
- --ly-app-shell-wide-rows: auto minmax(0, 1fr) auto auto;
1020
- --ly-app-shell-wide-columns:
1021
- minmax(0, 1fr)
1022
- minmax(min(100%, var(--ly-recipe-rail)), 0.3fr);
1178
+ --ly-recipe-aside: 22rem;
1023
1179
  --ly-list-detail-wide-columns:
1024
- minmax(0, 1.1fr)
1025
- minmax(min(100%, var(--ly-pane-size)), 0.7fr);
1180
+ minmax(min(100%, var(--ly-pane-min)), 1.1fr)
1181
+ minmax(min(100%, var(--ly-pane-min)), 0.7fr);
1026
1182
  }
1027
1183
  }
1028
1184
 
@@ -1040,7 +1196,7 @@
1040
1196
  "sidebar footer aside";
1041
1197
  --ly-app-shell-wide-columns:
1042
1198
  minmax(min(100%, var(--ly-recipe-rail)), 0.24fr)
1043
- minmax(0, 1fr)
1199
+ minmax(min(100%, var(--ly-recipe-main-min)), 1fr)
1044
1200
  minmax(min(100%, var(--ly-recipe-aside)), 0.3fr);
1045
1201
  }
1046
1202
  }
@@ -1048,19 +1204,11 @@
1048
1204
  /* personalities/brutalism.css */
1049
1205
  @layer ly.personalities.brutalism {
1050
1206
  :where(.ly-root[data-ly-layout="brutalism"]) {
1051
- --ly-personality-wrapper-max: 100rem;
1052
- --ly-profile-gap: var(--ly-space-3);
1207
+ --ly-personality-wrapper-max: 100%;
1208
+ --ly-profile-gap: var(--ly-space-1);
1053
1209
  --ly-grid-min: 14rem;
1054
1210
  --ly-recipe-rail: 16rem;
1055
1211
  --ly-recipe-aside: 18rem;
1056
- --ly-app-shell-wide-areas:
1057
- "header header sidebar"
1058
- "main aside sidebar"
1059
- "footer footer sidebar";
1060
- --ly-app-shell-wide-columns:
1061
- minmax(0, 1.3fr)
1062
- minmax(0, 0.7fr)
1063
- minmax(min(100%, var(--ly-recipe-rail)), 0.34fr);
1064
1212
  }
1065
1213
  }
1066
1214
 
@@ -1078,7 +1226,7 @@
1078
1226
  "sidebar footer footer";
1079
1227
  --ly-app-shell-wide-columns:
1080
1228
  minmax(min(100%, var(--ly-recipe-rail)), 0.2fr)
1081
- minmax(0, 1fr)
1229
+ minmax(min(100%, var(--ly-recipe-main-min)), 1fr)
1082
1230
  minmax(min(100%, var(--ly-recipe-aside)), 0.32fr);
1083
1231
  }
1084
1232
  }
@@ -1086,38 +1234,38 @@
1086
1234
  /* personalities/y2k.css */
1087
1235
  @layer ly.personalities.y2k {
1088
1236
  :where(.ly-root[data-ly-layout="y2k"]) {
1089
- --ly-personality-wrapper-max: 90rem;
1090
- --ly-profile-gap: var(--ly-space-6);
1237
+ --ly-personality-wrapper-max: 100%;
1238
+ --ly-profile-gap: var(--ly-space-2);
1091
1239
  --ly-grid-min: 13rem;
1092
1240
  --ly-recipe-rail: 18rem;
1093
1241
  --ly-recipe-aside: 16rem;
1094
1242
  --ly-app-shell-wide-areas:
1095
- "header header sidebar"
1096
- "aside main sidebar"
1097
- "footer footer sidebar";
1243
+ "header header header"
1244
+ "sidebar main aside"
1245
+ "footer footer footer";
1098
1246
  --ly-app-shell-wide-columns:
1099
- minmax(min(100%, var(--ly-recipe-aside)), 0.34fr)
1100
- minmax(0, 1fr)
1101
- minmax(min(100%, var(--ly-recipe-rail)), 0.28fr);
1247
+ minmax(min(100%, var(--ly-recipe-rail)), 0.28fr)
1248
+ minmax(min(100%, var(--ly-recipe-main-min)), 1fr)
1249
+ minmax(min(100%, var(--ly-recipe-aside)), 0.26fr);
1102
1250
  }
1103
1251
  }
1104
1252
 
1105
1253
  /* personalities/retro-glass.css */
1106
1254
  @layer ly.personalities.retro-glass {
1107
1255
  :where(.ly-root[data-ly-layout="retro-glass"]) {
1108
- --ly-personality-wrapper-max: 104rem;
1109
- --ly-profile-gap: var(--ly-space-5);
1256
+ --ly-personality-wrapper-max: 100%;
1257
+ --ly-profile-gap: var(--ly-space-2);
1110
1258
  --ly-grid-min: 15rem;
1111
- --ly-recipe-rail: 18rem;
1112
- --ly-recipe-aside: 18rem;
1259
+ --ly-recipe-rail: 16rem;
1260
+ --ly-recipe-aside: 17rem;
1113
1261
  --ly-app-shell-wide-areas:
1114
- "header header sidebar"
1115
- "main main sidebar"
1116
- "aside footer footer";
1262
+ "header header header"
1263
+ "sidebar main aside"
1264
+ "footer footer footer";
1117
1265
  --ly-app-shell-wide-columns:
1118
- minmax(0, 1.25fr)
1119
- minmax(0, 0.75fr)
1120
- minmax(min(100%, var(--ly-recipe-rail)), 0.32fr);
1266
+ minmax(min(100%, var(--ly-recipe-rail)), 0.3fr)
1267
+ minmax(min(100%, var(--ly-recipe-main-min)), 1fr)
1268
+ minmax(min(100%, var(--ly-recipe-aside)), 0.28fr);
1121
1269
  }
1122
1270
  }
1123
1271
 
@@ -1135,11 +1283,11 @@
1135
1283
  "sidebar footer footer";
1136
1284
  --ly-app-shell-wide-columns:
1137
1285
  minmax(min(100%, var(--ly-recipe-rail)), 0.26fr)
1138
- minmax(0, 1.35fr)
1286
+ minmax(min(100%, var(--ly-recipe-main-min)), 1.35fr)
1139
1287
  minmax(min(100%, var(--ly-recipe-aside)), 0.65fr);
1140
1288
  --ly-split-hero-wide-columns:
1141
- minmax(0, 1.8fr)
1142
- minmax(0, 0.8fr);
1289
+ minmax(min(100%, var(--ly-split-min)), 1.8fr)
1290
+ minmax(min(100%, var(--ly-split-min)), 0.8fr);
1143
1291
  }
1144
1292
  }
1145
1293
 
@@ -1156,12 +1304,12 @@
1156
1304
  "main aside sidebar"
1157
1305
  "footer aside sidebar";
1158
1306
  --ly-app-shell-wide-columns:
1159
- minmax(0, 1.45fr)
1307
+ minmax(min(100%, var(--ly-recipe-main-min)), 1.45fr)
1160
1308
  minmax(min(100%, var(--ly-recipe-aside)), 0.55fr)
1161
1309
  minmax(min(100%, var(--ly-recipe-rail)), 0.3fr);
1162
1310
  --ly-split-hero-wide-columns:
1163
- minmax(0, 1.5fr)
1164
- minmax(0, 0.5fr);
1311
+ minmax(min(100%, var(--ly-split-min)), 1.5fr)
1312
+ minmax(min(100%, var(--ly-split-min)), 0.5fr);
1165
1313
  }
1166
1314
  }
1167
1315
 
@@ -1184,14 +1332,14 @@
1184
1332
  "footer footer";
1185
1333
  --ly-app-shell-wide-rows: auto minmax(0, 1fr) auto auto;
1186
1334
  --ly-app-shell-wide-columns:
1187
- minmax(0, 1fr)
1335
+ minmax(min(100%, var(--ly-recipe-main-min)), 1fr)
1188
1336
  minmax(0, 1fr);
1189
1337
  --ly-split-hero-wide-columns:
1190
- minmax(0, 1fr)
1191
- minmax(0, 1fr);
1338
+ minmax(min(100%, var(--ly-split-min)), 1fr)
1339
+ minmax(min(100%, var(--ly-split-min)), 1fr);
1192
1340
  --ly-list-detail-wide-columns:
1193
- minmax(0, 1fr)
1194
- minmax(0, 1fr);
1341
+ minmax(min(100%, var(--ly-pane-min)), 1fr)
1342
+ minmax(min(100%, var(--ly-pane-min)), 1fr);
1195
1343
  }
1196
1344
  }
1197
1345
 
@@ -1209,7 +1357,7 @@
1209
1357
  "footer footer aside";
1210
1358
  --ly-app-shell-wide-columns:
1211
1359
  minmax(min(100%, var(--ly-recipe-rail)), 0.22fr)
1212
- minmax(0, 1.45fr)
1360
+ minmax(min(100%, var(--ly-recipe-main-min)), 1.45fr)
1213
1361
  minmax(min(100%, var(--ly-recipe-aside)), 0.55fr);
1214
1362
  }
1215
1363
  }
@@ -1228,8 +1376,59 @@
1228
1376
  "footer footer footer";
1229
1377
  --ly-app-shell-wide-columns:
1230
1378
  minmax(min(100%, var(--ly-recipe-rail)), 0.28fr)
1231
- minmax(0, 1fr)
1379
+ minmax(min(100%, var(--ly-recipe-main-min)), 1fr)
1232
1380
  minmax(min(100%, var(--ly-recipe-aside)), 0.34fr);
1233
1381
  --ly-reel-item-min: 20rem;
1234
1382
  }
1235
1383
  }
1384
+
1385
+ /* personalities/technical-blueprint.css */
1386
+ @layer ly.personalities.technical-blueprint {
1387
+ :where(.ly-root[data-ly-layout="technical-blueprint"]) {
1388
+ --ly-personality-wrapper-max: 100%;
1389
+ --ly-profile-gap: var(--ly-space-1);
1390
+ --ly-grid-min: 10rem;
1391
+ --ly-recipe-rail: 11rem;
1392
+ --ly-recipe-aside: 26rem;
1393
+ --ly-split-primary: 2.2fr;
1394
+ --ly-split-secondary: 0.8fr;
1395
+ }
1396
+ }
1397
+
1398
+ /* personalities/data-terminal.css */
1399
+ @layer ly.personalities.data-terminal {
1400
+ :where(.ly-root[data-ly-layout="data-terminal"]) {
1401
+ --ly-personality-wrapper-max: 100%;
1402
+ --ly-profile-gap: var(--ly-space-1);
1403
+ --ly-grid-min: 10rem;
1404
+ --ly-card-grid-min: 10rem;
1405
+ --ly-gallery-min: 10rem;
1406
+ --ly-recipe-rail: 12rem;
1407
+ --ly-recipe-aside: 18rem;
1408
+ }
1409
+ }
1410
+
1411
+ /* personalities/industrial-hmi.css */
1412
+ @layer ly.personalities.industrial-hmi {
1413
+ :where(.ly-root[data-ly-layout="industrial-hmi"]) {
1414
+ --ly-personality-wrapper-max: 100%;
1415
+ --ly-profile-gap: var(--ly-space-2);
1416
+ --ly-grid-min: 11rem;
1417
+ --ly-recipe-rail: 7rem;
1418
+ --ly-recipe-aside: 32rem;
1419
+ }
1420
+ }
1421
+
1422
+ /* personalities/editorial.css */
1423
+ @layer ly.personalities.editorial {
1424
+ :where(.ly-root[data-ly-layout="editorial"]) {
1425
+ --ly-personality-wrapper-max: 108rem;
1426
+ --ly-profile-gap: var(--ly-space-6);
1427
+ --ly-grid-min: 16rem;
1428
+ --ly-recipe-rail: 10rem;
1429
+ --ly-recipe-aside: 18rem;
1430
+ --ly-split-primary: 1.65fr;
1431
+ --ly-split-secondary: 0.75fr;
1432
+ --ly-frame-ratio: 4 / 5;
1433
+ }
1434
+ }