layout-style-css 2.1.1 → 3.0.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 (81) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/README.md +127 -143
  3. package/dist/core.css +2 -1
  4. package/dist/foundation.css +194 -0
  5. package/dist/layout-style-css.css +527 -984
  6. package/dist/layout-style-css.min.css +1 -1
  7. package/dist/personalities/bauhaus.css +13 -42
  8. package/dist/personalities/bento.css +16 -40
  9. package/dist/personalities/brutalism.css +13 -33
  10. package/dist/personalities/cyberpunk.css +12 -32
  11. package/dist/personalities/f-pattern.css +16 -45
  12. package/dist/personalities/maximalist.css +16 -48
  13. package/dist/personalities/minimal-saas.css +7 -33
  14. package/dist/personalities/mondrian.css +12 -40
  15. package/dist/personalities/neumorphism.css +15 -39
  16. package/dist/personalities/retro-glass.css +14 -42
  17. package/dist/personalities/retrofuturism.css +12 -32
  18. package/dist/personalities/split-screen.css +24 -36
  19. package/dist/personalities/synthwave.css +13 -41
  20. package/dist/personalities/tactile.css +15 -32
  21. package/dist/personalities/y2k.css +13 -33
  22. package/dist/personalities/z-pattern.css +16 -46
  23. package/dist/personalities.css +1 -1
  24. package/dist/primitives.css +27 -63
  25. package/dist/recipes.css +92 -175
  26. package/dist/utilities.css +39 -104
  27. package/dist/wrappers.css +28 -108
  28. package/docs/wiki/Contributing.md +3 -1
  29. package/docs/wiki/Demo-And-GitHub-Pages.md +24 -33
  30. package/docs/wiki/Getting-Started.md +39 -27
  31. package/docs/wiki/Home.md +21 -27
  32. package/docs/wiki/Installation-And-CDN.md +47 -42
  33. package/docs/wiki/Layout-Primitives.md +48 -34
  34. package/docs/wiki/Layout-Recipes.md +42 -33
  35. package/docs/wiki/Layout-Styles.md +60 -26
  36. package/docs/wiki/Migrating-To-3.0.md +205 -0
  37. package/docs/wiki/Release-And-Publishing.md +36 -51
  38. package/docs/wiki/Security-And-Support.md +18 -22
  39. package/docs/wiki/UI-Style-Kit-Compatibility.md +21 -30
  40. package/docs/wiki/_Sidebar.md +12 -15
  41. package/manifest.json +98 -0
  42. package/package.json +33 -28
  43. package/personalities.json +147 -0
  44. package/CONTRIBUTING.md +0 -55
  45. package/SECURITY.md +0 -50
  46. package/demo/assets/apple-touch-icon.svg +0 -7
  47. package/demo/assets/favicon.svg +0 -7
  48. package/demo/assets/social-card.png +0 -0
  49. package/demo/browserconfig.xml +0 -9
  50. package/demo/demo.css +0 -523
  51. package/demo/demo.js +0 -605
  52. package/demo/index.html +0 -325
  53. package/demo/robots.txt +0 -4
  54. package/demo/site.webmanifest +0 -23
  55. package/demo/sitemap.xml +0 -9
  56. package/dist/integrations/ui-style-kit.css +0 -175
  57. package/dist/legacy.css +0 -822
  58. package/styles/core.css +0 -6
  59. package/styles/integrations/ui-style-kit.css +0 -175
  60. package/styles/legacy.css +0 -173
  61. package/styles/personalities/bauhaus.css +0 -49
  62. package/styles/personalities/bento.css +0 -46
  63. package/styles/personalities/brutalism.css +0 -39
  64. package/styles/personalities/cyberpunk.css +0 -39
  65. package/styles/personalities/f-pattern.css +0 -51
  66. package/styles/personalities/maximalist.css +0 -54
  67. package/styles/personalities/minimal-saas.css +0 -39
  68. package/styles/personalities/mondrian.css +0 -47
  69. package/styles/personalities/neumorphism.css +0 -46
  70. package/styles/personalities/retro-glass.css +0 -47
  71. package/styles/personalities/retrofuturism.css +0 -39
  72. package/styles/personalities/split-screen.css +0 -41
  73. package/styles/personalities/synthwave.css +0 -48
  74. package/styles/personalities/tactile.css +0 -39
  75. package/styles/personalities/y2k.css +0 -39
  76. package/styles/personalities/z-pattern.css +0 -52
  77. package/styles/personalities.css +0 -18
  78. package/styles/primitives.css +0 -219
  79. package/styles/recipes.css +0 -278
  80. package/styles/utilities.css +0 -162
  81. package/styles/wrappers.css +0 -174
@@ -1,278 +0,0 @@
1
- @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
-
3
- /*
4
- Built-in recipes follow semantic mobile DOM order. Wider arrangements use
5
- named areas so visual placement never changes keyboard or reading order.
6
- */
7
-
8
- @layer ly.recipes {
9
- :where(.ly-app-shell, [data-ly-recipe="app-shell"]),
10
- :where(.ly-dashboard, [data-ly-recipe="dashboard"]),
11
- :where(.ly-docs, [data-ly-recipe="docs"]),
12
- :where(.ly-list-detail, [data-ly-recipe="list-detail"]),
13
- :where(.ly-split-hero, [data-ly-recipe="split-hero"]),
14
- :where(.ly-gallery, [data-ly-recipe="gallery"]),
15
- :where(.ly-card-grid, [data-ly-recipe="card-grid"]) {
16
- container-name: ly-recipe;
17
- container-type: inline-size;
18
- min-inline-size: 0;
19
- }
20
-
21
- :where(.ly-app-shell, [data-ly-recipe="app-shell"]),
22
- :where(.ly-dashboard, [data-ly-recipe="dashboard"]),
23
- :where(.ly-docs, [data-ly-recipe="docs"]),
24
- :where(.ly-list-detail, [data-ly-recipe="list-detail"]),
25
- :where(.ly-split-hero, [data-ly-recipe="split-hero"]) {
26
- display: grid;
27
- grid-template-columns: minmax(0, 1fr);
28
- gap: var(--ly-gap);
29
- }
30
-
31
- :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
32
- min-block-size: 100svh;
33
- grid-template-areas:
34
- "header"
35
- "sidebar"
36
- "main"
37
- "aside"
38
- "footer";
39
- grid-template-rows: auto auto minmax(0, 1fr) auto auto;
40
- }
41
-
42
- :where(.ly-dashboard, [data-ly-recipe="dashboard"]) {
43
- grid-template-areas:
44
- "header"
45
- "nav"
46
- "main"
47
- "aside"
48
- "footer";
49
- }
50
-
51
- :where(.ly-docs, [data-ly-recipe="docs"]) {
52
- grid-template-areas:
53
- "header"
54
- "nav"
55
- "main"
56
- "aside"
57
- "footer";
58
- }
59
-
60
- :where(.ly-list-detail, [data-ly-recipe="list-detail"]) {
61
- grid-template-areas:
62
- "primary"
63
- "secondary"
64
- "actions";
65
- }
66
-
67
- :where(.ly-split-hero, [data-ly-recipe="split-hero"]) {
68
- grid-template-areas:
69
- "content"
70
- "media"
71
- "actions";
72
- align-items: var(--ly-split-hero-align, center);
73
- }
74
-
75
- :where(.ly-gallery, [data-ly-recipe="gallery"]),
76
- :where(.ly-card-grid, [data-ly-recipe="card-grid"]) {
77
- display: grid;
78
- gap: var(--ly-grid-gap);
79
- }
80
-
81
- :where(.ly-gallery, [data-ly-recipe="gallery"]) {
82
- grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-gallery-min)), 1fr));
83
- }
84
-
85
- :where(.ly-card-grid, [data-ly-recipe="card-grid"]) {
86
- grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-card-grid-min)), 1fr));
87
- }
88
-
89
- :where(.ly-gallery, [data-ly-recipe="gallery"]) > *,
90
- :where(.ly-card-grid, [data-ly-recipe="card-grid"]) > * {
91
- min-inline-size: 0;
92
- }
93
-
94
- :where(.ly-area--header, [data-ly-area="header"]) {
95
- grid-area: header;
96
- min-inline-size: 0;
97
- }
98
-
99
- :where(.ly-area--nav, [data-ly-area="nav"]) {
100
- grid-area: nav;
101
- min-inline-size: 0;
102
- }
103
-
104
- :where(.ly-area--main, [data-ly-area="main"]) {
105
- grid-area: main;
106
- min-inline-size: 0;
107
- }
108
-
109
- :where(.ly-area--aside, [data-ly-area="aside"]) {
110
- grid-area: aside;
111
- min-inline-size: 0;
112
- }
113
-
114
- :where(.ly-area--footer, [data-ly-area="footer"]) {
115
- grid-area: footer;
116
- min-inline-size: 0;
117
- }
118
-
119
- :where(.ly-area--content, [data-ly-area="content"]) {
120
- grid-area: content;
121
- min-inline-size: 0;
122
- }
123
-
124
- :where(.ly-area--media, [data-ly-area="media"]) {
125
- grid-area: media;
126
- min-inline-size: 0;
127
- }
128
-
129
- :where(.ly-area--actions, [data-ly-area="actions"]) {
130
- grid-area: actions;
131
- min-inline-size: 0;
132
- }
133
-
134
- :where(.ly-area--primary, [data-ly-area="primary"]) {
135
- grid-area: primary;
136
- min-inline-size: 0;
137
- }
138
-
139
- :where(.ly-area--secondary, [data-ly-area="secondary"]) {
140
- grid-area: secondary;
141
- min-inline-size: 0;
142
- }
143
-
144
- .ly-app-header {
145
- grid-area: header;
146
- min-inline-size: 0;
147
- }
148
-
149
- .ly-app-sidebar {
150
- grid-area: sidebar;
151
- min-inline-size: 0;
152
- }
153
-
154
- .ly-app-main {
155
- grid-area: main;
156
- min-inline-size: 0;
157
- }
158
-
159
- .ly-app-aside {
160
- grid-area: aside;
161
- min-inline-size: 0;
162
- }
163
-
164
- .ly-app-footer {
165
- grid-area: footer;
166
- min-inline-size: 0;
167
- }
168
-
169
- :where(.ly-app-shell, [data-ly-recipe="app-shell"])
170
- > :where(.ly-area--nav, [data-ly-area="nav"]) {
171
- grid-area: sidebar;
172
- }
173
-
174
- /*
175
- A recipe responds to its nearest ancestor container and then becomes the
176
- containment scope for nested compositions. Standalone roots keep the safe
177
- mobile template when no ancestor container is present.
178
- */
179
- @container (min-width: 48rem) {
180
- :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
181
- grid-template-areas:
182
- "header header"
183
- "sidebar main"
184
- "aside main"
185
- "footer footer";
186
- grid-template-columns: minmax(min(100%, var(--ly-recipe-rail)), auto) minmax(0, 1fr);
187
- }
188
-
189
- :where(.ly-dashboard, [data-ly-recipe="dashboard"]) {
190
- grid-template-areas:
191
- "header header"
192
- "nav nav"
193
- "main aside"
194
- "footer footer";
195
- grid-template-columns: minmax(0, 1fr) minmax(min(100%, var(--ly-recipe-aside)), 0.35fr);
196
- }
197
-
198
- :where(.ly-docs, [data-ly-recipe="docs"]) {
199
- grid-template-areas:
200
- "header header"
201
- "nav main"
202
- "nav aside"
203
- "footer footer";
204
- grid-template-columns: minmax(min(100%, var(--ly-recipe-rail)), auto) minmax(0, 1fr);
205
- }
206
-
207
- :where(.ly-list-detail, [data-ly-recipe="list-detail"]) {
208
- grid-template-areas:
209
- "primary secondary"
210
- "actions actions";
211
- grid-template-columns: minmax(min(100%, var(--ly-pane-size)), 0.7fr) minmax(0, 1fr);
212
- }
213
-
214
- :where(.ly-split-hero, [data-ly-recipe="split-hero"]) {
215
- grid-template-areas:
216
- "content media"
217
- "actions media";
218
- grid-template-columns: minmax(0, var(--ly-split-primary, 1fr)) minmax(0, var(--ly-split-secondary, 1fr));
219
- }
220
-
221
- :where(.ly-gallery, [data-ly-recipe="gallery"]) {
222
- --ly-gallery-min: 14rem;
223
- }
224
-
225
- :where(.ly-card-grid, [data-ly-recipe="card-grid"]) {
226
- --ly-card-grid-min: 18rem;
227
- }
228
- }
229
-
230
- @container (min-width: 64rem) {
231
- :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
232
- grid-template-areas:
233
- "sidebar header header"
234
- "sidebar main aside"
235
- "sidebar footer footer";
236
- grid-template-columns:
237
- minmax(min(100%, var(--ly-recipe-rail)), auto)
238
- minmax(0, 1fr)
239
- minmax(min(100%, var(--ly-recipe-aside)), 0.35fr);
240
- }
241
-
242
- :where(.ly-dashboard, [data-ly-recipe="dashboard"]) {
243
- grid-template-areas:
244
- "nav header header"
245
- "nav main aside"
246
- "nav footer footer";
247
- grid-template-columns:
248
- minmax(min(100%, var(--ly-recipe-rail)), auto)
249
- minmax(0, 1fr)
250
- minmax(min(100%, var(--ly-recipe-aside)), 0.35fr);
251
- }
252
-
253
- :where(.ly-docs, [data-ly-recipe="docs"]) {
254
- grid-template-areas:
255
- "nav header"
256
- "nav main"
257
- "nav aside"
258
- "nav footer";
259
- grid-template-columns: minmax(min(100%, var(--ly-recipe-rail)), auto) minmax(0, 1fr);
260
- }
261
-
262
- :where(.ly-list-detail, [data-ly-recipe="list-detail"]) {
263
- grid-template-columns: minmax(min(100%, var(--ly-pane-size)), 0.45fr) minmax(0, 1fr);
264
- }
265
-
266
- :where(.ly-split-hero, [data-ly-recipe="split-hero"]) {
267
- grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
268
- }
269
-
270
- :where(.ly-gallery, [data-ly-recipe="gallery"]) {
271
- --ly-gallery-min: 16rem;
272
- }
273
-
274
- :where(.ly-card-grid, [data-ly-recipe="card-grid"]) {
275
- --ly-card-grid-min: 20rem;
276
- }
277
- }
278
- }
@@ -1,162 +0,0 @@
1
- @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
-
3
- @layer ly.utilities {
4
- .ly-cols-1 { --ly-grid-columns: 1; }
5
- .ly-cols-2 { --ly-grid-columns: 2; }
6
- .ly-cols-3 { --ly-grid-columns: 3; }
7
- .ly-cols-4 { --ly-grid-columns: 4; }
8
- .ly-cols-5 { --ly-grid-columns: 5; }
9
- .ly-cols-6 { --ly-grid-columns: 6; }
10
- .ly-cols-7 { --ly-grid-columns: 7; }
11
- .ly-cols-8 { --ly-grid-columns: 8; }
12
- .ly-cols-9 { --ly-grid-columns: 9; }
13
- .ly-cols-10 { --ly-grid-columns: 10; }
14
- .ly-cols-11 { --ly-grid-columns: 11; }
15
- .ly-cols-12 { --ly-grid-columns: 12; }
16
- .ly-cols-16 { --ly-grid-columns: 16; }
17
-
18
- .ly-span-1 { grid-column: span 1; }
19
- .ly-span-2 { grid-column: span 2; }
20
- .ly-span-3 { grid-column: span 3; }
21
- .ly-span-4 { grid-column: span 4; }
22
- .ly-span-5 { grid-column: span 5; }
23
- .ly-span-6 { grid-column: span 6; }
24
- .ly-span-7 { grid-column: span 7; }
25
- .ly-span-8 { grid-column: span 8; }
26
- .ly-span-9 { grid-column: span 9; }
27
- .ly-span-10 { grid-column: span 10; }
28
- .ly-span-11 { grid-column: span 11; }
29
- .ly-span-12 { grid-column: span 12; }
30
- .ly-span-13 { grid-column: span 13; }
31
- .ly-span-14 { grid-column: span 14; }
32
- .ly-span-15 { grid-column: span 15; }
33
- .ly-span-16 { grid-column: span 16; }
34
- .ly-span-full { grid-column: 1 / -1; }
35
-
36
- .ly-gap-0 { --ly-gap: var(--ly-space-0); --ly-grid-gap: var(--ly-space-0); --ly-stack-gap: var(--ly-space-0); --ly-cluster-gap: var(--ly-space-0); }
37
- .ly-gap-1 { --ly-gap: var(--ly-space-1); --ly-grid-gap: var(--ly-space-1); --ly-stack-gap: var(--ly-space-1); --ly-cluster-gap: var(--ly-space-1); }
38
- .ly-gap-2 { --ly-gap: var(--ly-space-2); --ly-grid-gap: var(--ly-space-2); --ly-stack-gap: var(--ly-space-2); --ly-cluster-gap: var(--ly-space-2); }
39
- .ly-gap-3 { --ly-gap: var(--ly-space-3); --ly-grid-gap: var(--ly-space-3); --ly-stack-gap: var(--ly-space-3); --ly-cluster-gap: var(--ly-space-3); }
40
- .ly-gap-4 { --ly-gap: var(--ly-space-4); --ly-grid-gap: var(--ly-space-4); --ly-stack-gap: var(--ly-space-4); --ly-cluster-gap: var(--ly-space-4); }
41
- .ly-gap-5 { --ly-gap: var(--ly-space-5); --ly-grid-gap: var(--ly-space-5); --ly-stack-gap: var(--ly-space-5); --ly-cluster-gap: var(--ly-space-5); }
42
- .ly-gap-6 { --ly-gap: var(--ly-space-6); --ly-grid-gap: var(--ly-space-6); --ly-stack-gap: var(--ly-space-6); --ly-cluster-gap: var(--ly-space-6); }
43
- .ly-gap-7 { --ly-gap: var(--ly-space-7); --ly-grid-gap: var(--ly-space-7); --ly-stack-gap: var(--ly-space-7); --ly-cluster-gap: var(--ly-space-7); }
44
- .ly-gap-8 { --ly-gap: var(--ly-space-8); --ly-grid-gap: var(--ly-space-8); --ly-stack-gap: var(--ly-space-8); --ly-cluster-gap: var(--ly-space-8); }
45
- .ly-gap-9 { --ly-gap: var(--ly-space-9); --ly-grid-gap: var(--ly-space-9); --ly-stack-gap: var(--ly-space-9); --ly-cluster-gap: var(--ly-space-9); }
46
-
47
- .ly-pad-0 { padding: var(--ly-space-0); }
48
- .ly-pad-1 { padding: var(--ly-space-1); }
49
- .ly-pad-2 { padding: var(--ly-space-2); }
50
- .ly-pad-3 { padding: var(--ly-space-3); }
51
- .ly-pad-4 { padding: var(--ly-space-4); }
52
- .ly-pad-5 { padding: var(--ly-space-5); }
53
- .ly-pad-6 { padding: var(--ly-space-6); }
54
- .ly-pad-7 { padding: var(--ly-space-7); }
55
- .ly-pad-8 { padding: var(--ly-space-8); }
56
- .ly-pad-9 { padding: var(--ly-space-9); }
57
-
58
- .ly-px-4 { padding-inline: var(--ly-space-4); }
59
- .ly-px-6 { padding-inline: var(--ly-space-6); }
60
- .ly-px-8 { padding-inline: var(--ly-space-8); }
61
- .ly-py-4 { padding-block: var(--ly-space-4); }
62
- .ly-py-6 { padding-block: var(--ly-space-6); }
63
- .ly-py-8 { padding-block: var(--ly-space-8); }
64
-
65
- .ly-mx-auto { margin-inline: auto; }
66
- .ly-w-full { inline-size: 100%; }
67
- .ly-h-full { block-size: 100%; }
68
- .ly-min-h-screen { min-block-size: 100svh; }
69
- .ly-bleed { inline-size: 100vw; margin-inline: calc(50% - 50vw); }
70
- .ly-overflow-auto { overflow: auto; }
71
- .ly-overflow-hidden { overflow: hidden; }
72
-
73
- .ly-items-start { align-items: flex-start; }
74
- .ly-items-center { align-items: center; }
75
- .ly-items-end { align-items: flex-end; }
76
- .ly-items-stretch { align-items: stretch; }
77
- .ly-justify-start { justify-content: flex-start; }
78
- .ly-justify-center { justify-content: center; }
79
- .ly-justify-end { justify-content: flex-end; }
80
- .ly-justify-between { justify-content: space-between; }
81
-
82
- .ly-frame-1x1 { --ly-frame-ratio: 1 / 1; }
83
- .ly-frame-2x1 { --ly-frame-ratio: 2 / 1; }
84
- .ly-frame-3x2 { --ly-frame-ratio: 3 / 2; }
85
- .ly-frame-4x3 { --ly-frame-ratio: 4 / 3; }
86
- .ly-frame-16x9 { --ly-frame-ratio: 16 / 9; }
87
- .ly-frame-21x9 { --ly-frame-ratio: 21 / 9; }
88
-
89
- .ly-hidden { display: none !important; }
90
-
91
- .ly-show-md-up,
92
- .ly-show-lg-up {
93
- display: none !important;
94
- }
95
-
96
- .ly-visually-hidden {
97
- position: absolute !important;
98
- inline-size: 1px !important;
99
- block-size: 1px !important;
100
- padding: 0 !important;
101
- margin: -1px !important;
102
- overflow: hidden !important;
103
- clip: rect(0, 0, 0, 0) !important;
104
- clip-path: inset(50%) !important;
105
- white-space: nowrap !important;
106
- }
107
-
108
- /* Explicit escape hatches require consumers to verify focus and reading order. */
109
- .ly-order-first { order: -1; }
110
- .ly-order-normal { order: 0; }
111
- .ly-order-last { order: 999; }
112
- .ly-order-1 { order: 1; }
113
- .ly-order-2 { order: 2; }
114
- .ly-order-3 { order: 3; }
115
- .ly-order-4 { order: 4; }
116
- .ly-order-5 { order: 5; }
117
- .ly-order-6 { order: 6; }
118
-
119
- @container (min-width: 48rem) {
120
- .ly-md-cols-1 { --ly-grid-columns: 1; }
121
- .ly-md-cols-2 { --ly-grid-columns: 2; }
122
- .ly-md-cols-3 { --ly-grid-columns: 3; }
123
- .ly-md-cols-4 { --ly-grid-columns: 4; }
124
- .ly-md-cols-6 { --ly-grid-columns: 6; }
125
- .ly-md-cols-8 { --ly-grid-columns: 8; }
126
- .ly-md-cols-12 { --ly-grid-columns: 12; }
127
- .ly-md-cols-16 { --ly-grid-columns: 16; }
128
- .ly-show-md-up { display: revert !important; }
129
-
130
- .ly-md-order-first { order: -1; }
131
- .ly-md-order-normal { order: 0; }
132
- .ly-md-order-last { order: 999; }
133
- .ly-md-order-1 { order: 1; }
134
- .ly-md-order-2 { order: 2; }
135
- .ly-md-order-3 { order: 3; }
136
- .ly-md-order-4 { order: 4; }
137
- .ly-md-order-5 { order: 5; }
138
- .ly-md-order-6 { order: 6; }
139
- }
140
-
141
- @container (min-width: 64rem) {
142
- .ly-lg-cols-1 { --ly-grid-columns: 1; }
143
- .ly-lg-cols-2 { --ly-grid-columns: 2; }
144
- .ly-lg-cols-3 { --ly-grid-columns: 3; }
145
- .ly-lg-cols-4 { --ly-grid-columns: 4; }
146
- .ly-lg-cols-6 { --ly-grid-columns: 6; }
147
- .ly-lg-cols-8 { --ly-grid-columns: 8; }
148
- .ly-lg-cols-12 { --ly-grid-columns: 12; }
149
- .ly-lg-cols-16 { --ly-grid-columns: 16; }
150
- .ly-show-lg-up { display: revert !important; }
151
-
152
- .ly-lg-order-first { order: -1; }
153
- .ly-lg-order-normal { order: 0; }
154
- .ly-lg-order-last { order: 999; }
155
- .ly-lg-order-1 { order: 1; }
156
- .ly-lg-order-2 { order: 2; }
157
- .ly-lg-order-3 { order: 3; }
158
- .ly-lg-order-4 { order: 4; }
159
- .ly-lg-order-5 { order: 5; }
160
- .ly-lg-order-6 { order: 6; }
161
- }
162
- }
@@ -1,174 +0,0 @@
1
- @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
-
3
- /*
4
- Shared structural tokens and wrapper geometry. Theme, type, borders, shadows,
5
- and interactive states remain outside Layout Style's ownership boundary.
6
- */
7
-
8
- @layer ly.tokens {
9
- :where(.ly-root) {
10
- --ly-space-0: 0;
11
- --ly-space-1: 0.25rem;
12
- --ly-space-2: 0.5rem;
13
- --ly-space-3: 0.75rem;
14
- --ly-space-4: 1rem;
15
- --ly-space-5: 1.5rem;
16
- --ly-space-6: 2rem;
17
- --ly-space-7: 3rem;
18
- --ly-space-8: 4rem;
19
- --ly-space-9: 6rem;
20
-
21
- --ly-wrapper-compact: 40rem;
22
- --ly-wrapper-prose: 68ch;
23
- --ly-wrapper-content: 72rem;
24
- --ly-wrapper-wide: 112rem;
25
- --ly-wrapper-max: var(--ly-wrapper-content);
26
- --ly-page-padding-inline: clamp(1rem, 4vw, 3rem);
27
- --ly-safe-area-inline: max(
28
- env(safe-area-inset-left, 0px),
29
- env(safe-area-inset-right, 0px)
30
- );
31
- --ly-wrapper-gutter: max(var(--ly-page-padding-inline), var(--ly-safe-area-inline));
32
-
33
- --ly-section-padding-block: clamp(3rem, 7vw, 6rem);
34
- --ly-gap: var(--ly-space-5);
35
- --ly-grid-gap: var(--ly-gap);
36
- --ly-stack-gap: var(--ly-space-4);
37
- --ly-cluster-gap: var(--ly-space-3);
38
- --ly-cover-min: 100svh;
39
- --ly-switcher-threshold: 42rem;
40
- --ly-sidebar-size: 18rem;
41
- --ly-sidebar-content-min: 50%;
42
- --ly-grid-columns: 12;
43
- --ly-grid-min: 16rem;
44
- --ly-pane-size: 22rem;
45
- --ly-media-size: 14rem;
46
- --ly-reel-item-min: 16rem;
47
- --ly-reel-item-max: 28rem;
48
- --ly-scroll-max: 70svh;
49
- --ly-frame-ratio: 16 / 9;
50
-
51
- --ly-recipe-rail: 18rem;
52
- --ly-recipe-aside: 22rem;
53
- --ly-card-grid-min: 16rem;
54
- --ly-gallery-min: 12rem;
55
- --ly-card-size-sm: 10rem;
56
- --ly-card-size-md: 14rem;
57
- --ly-card-size-lg: 18rem;
58
- --ly-header-height: 4.5rem;
59
- --ly-z-header: 20;
60
-
61
- /* V1 token aliases remain available so legacy selectors can preserve sizing. */
62
- --ly-container-sm: var(--ly-wrapper-compact);
63
- --ly-container-md: 56rem;
64
- --ly-container-lg: var(--ly-wrapper-content);
65
- --ly-container-xl: 88rem;
66
- --ly-container-wide: var(--ly-wrapper-wide);
67
- --ly-container-max: var(--ly-container-lg);
68
- --ly-content-readable: var(--ly-wrapper-prose);
69
- --ly-carousel-item-min: var(--ly-reel-item-min);
70
- --ly-carousel-item-max: var(--ly-reel-item-max);
71
- --ly-sidebar-min: 14rem;
72
- --ly-sidebar-width: var(--ly-recipe-rail);
73
- --ly-sidebar-max: var(--ly-recipe-aside);
74
- --ly-pane-fixed: var(--ly-pane-size);
75
- --ly-z-sidebar: 10;
76
- }
77
- }
78
-
79
- @layer ly.reset {
80
- :where(.ly-root),
81
- :where(.ly-root *) {
82
- box-sizing: border-box;
83
- }
84
-
85
- :where(.ly-root) {
86
- min-inline-size: 0;
87
- margin: 0;
88
- }
89
-
90
- :where(.ly-root img),
91
- :where(.ly-root svg),
92
- :where(.ly-root video),
93
- :where(.ly-root canvas) {
94
- max-inline-size: 100%;
95
- }
96
- }
97
-
98
- @layer ly.wrappers {
99
- .ly-wrapper {
100
- /* Personalities provide only the plain-wrapper default; explicit variants stay authoritative. */
101
- --ly-wrapper-max: var(--ly-personality-wrapper-max, var(--ly-wrapper-content));
102
-
103
- /* Symmetric safe-area compensation keeps logical gutters stable in either direction. */
104
- container-name: ly-wrapper;
105
- container-type: inline-size;
106
- inline-size: min(100%, calc(var(--ly-wrapper-max) + (var(--ly-wrapper-gutter) * 2)));
107
- margin-inline: auto;
108
- padding-inline: var(--ly-wrapper-gutter);
109
- }
110
-
111
- .ly-wrapper--compact {
112
- --ly-wrapper-max: 40rem;
113
- }
114
-
115
- .ly-wrapper--prose {
116
- --ly-wrapper-max: 68ch;
117
- }
118
-
119
- .ly-wrapper--content {
120
- --ly-wrapper-max: 72rem;
121
- }
122
-
123
- .ly-wrapper--wide {
124
- --ly-wrapper-max: 112rem;
125
- }
126
-
127
- .ly-wrapper--full {
128
- --ly-wrapper-max: 100%;
129
- }
130
-
131
- .ly-wrapper--breakout {
132
- --ly-breakout-content-size: min(
133
- var(--ly-wrapper-content),
134
- calc(100% - (var(--ly-wrapper-gutter) * 2))
135
- );
136
- --ly-breakout-feature-size: min(
137
- var(--ly-wrapper-wide),
138
- calc(100% - (var(--ly-wrapper-gutter) * 2))
139
- );
140
-
141
- display: grid;
142
- grid-template-columns:
143
- [full-start] minmax(min(100%, var(--ly-wrapper-gutter)), 1fr)
144
- [feature-start] minmax(
145
- 0,
146
- calc((var(--ly-breakout-feature-size) - var(--ly-breakout-content-size)) / 2)
147
- )
148
- [content-start] minmax(0, var(--ly-breakout-content-size)) [content-end]
149
- minmax(
150
- 0,
151
- calc((var(--ly-breakout-feature-size) - var(--ly-breakout-content-size)) / 2)
152
- )
153
- [feature-end] minmax(min(100%, var(--ly-wrapper-gutter)), 1fr) [full-end];
154
- inline-size: 100%;
155
- padding-inline: 0;
156
- }
157
-
158
- .ly-wrapper--breakout > * {
159
- grid-column: content;
160
- min-inline-size: 0;
161
- }
162
-
163
- .ly-wrapper--breakout > :where(.ly-lane--content, [data-ly-lane="content"]) {
164
- grid-column: content;
165
- }
166
-
167
- .ly-wrapper--breakout > :where(.ly-lane--feature, [data-ly-lane="feature"]) {
168
- grid-column: feature;
169
- }
170
-
171
- .ly-wrapper--breakout > :where(.ly-lane--full, [data-ly-lane="full"]) {
172
- grid-column: full;
173
- }
174
- }