layout-style-css 1.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 (42) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +447 -0
  3. package/demo/assets/apple-touch-icon.svg +7 -0
  4. package/demo/assets/favicon.svg +7 -0
  5. package/demo/assets/social-card.svg +17 -0
  6. package/demo/browserconfig.xml +9 -0
  7. package/demo/index.html +700 -0
  8. package/demo/robots.txt +4 -0
  9. package/demo/site.webmanifest +23 -0
  10. package/demo/sitemap.xml +9 -0
  11. package/dist/layout-all-with-ui-kit-and-interactive-surface.css +3 -0
  12. package/dist/layout-all-with-ui-kit.css +2 -0
  13. package/dist/layout-all.css +13 -0
  14. package/dist/layout-base.css +472 -0
  15. package/dist/layout-style-bauhaus.css +70 -0
  16. package/dist/layout-style-bento.css +76 -0
  17. package/dist/layout-style-brutalism.css +70 -0
  18. package/dist/layout-style-css.css +1367 -0
  19. package/dist/layout-style-css.min.css +1 -0
  20. package/dist/layout-style-cyberpunk.css +70 -0
  21. package/dist/layout-style-maximalist.css +93 -0
  22. package/dist/layout-style-minimal-saas.css +67 -0
  23. package/dist/layout-style-neumorphism.css +72 -0
  24. package/dist/layout-style-retro-glass.css +82 -0
  25. package/dist/layout-style-retrofuturism.css +71 -0
  26. package/dist/layout-style-tactile.css +70 -0
  27. package/dist/layout-style-y2k.css +72 -0
  28. package/dist/layout-ui-style-kit-bridge.css +55 -0
  29. package/package.json +97 -0
  30. package/styles/layout-base.css +472 -0
  31. package/styles/layout-style-bauhaus.css +70 -0
  32. package/styles/layout-style-bento.css +76 -0
  33. package/styles/layout-style-brutalism.css +70 -0
  34. package/styles/layout-style-cyberpunk.css +70 -0
  35. package/styles/layout-style-maximalist.css +93 -0
  36. package/styles/layout-style-minimal-saas.css +67 -0
  37. package/styles/layout-style-neumorphism.css +72 -0
  38. package/styles/layout-style-retro-glass.css +82 -0
  39. package/styles/layout-style-retrofuturism.css +71 -0
  40. package/styles/layout-style-tactile.css +70 -0
  41. package/styles/layout-style-y2k.css +72 -0
  42. package/styles/layout-ui-style-kit-bridge.css +55 -0
@@ -0,0 +1,1367 @@
1
+ /* layout-style-css bundle. Generated from styles/ by scripts/build.mjs. */
2
+
3
+ /* layout-base.css */
4
+ /*
5
+ Layout Style Library base primitives.
6
+ This file owns spatial composition only. Visual paint, typography, borders,
7
+ shadows, and theme color are intentionally delegated to ui-style-kit-css.
8
+ */
9
+
10
+ @layer ly.tokens {
11
+ :where(.ly-root) {
12
+ --ly-space-0: 0;
13
+ --ly-space-1: 0.25rem;
14
+ --ly-space-2: 0.5rem;
15
+ --ly-space-3: 0.75rem;
16
+ --ly-space-4: 1rem;
17
+ --ly-space-5: 1.5rem;
18
+ --ly-space-6: 2rem;
19
+ --ly-space-7: 3rem;
20
+ --ly-space-8: 4rem;
21
+ --ly-space-9: 6rem;
22
+
23
+ --ly-container-sm: 40rem;
24
+ --ly-container-md: 56rem;
25
+ --ly-container-lg: 72rem;
26
+ --ly-container-xl: 88rem;
27
+ --ly-container-wide: 112rem;
28
+ --ly-container-max: var(--ly-container-lg);
29
+ --ly-content-readable: 68ch;
30
+
31
+ --ly-page-padding-inline: clamp(1rem, 4vw, 3rem);
32
+ --ly-section-padding-block: clamp(3rem, 7vw, 6rem);
33
+ --ly-gap: var(--ly-space-5);
34
+ --ly-grid-gap: var(--ly-gap);
35
+ --ly-stack-gap: var(--ly-space-4);
36
+ --ly-cluster-gap: var(--ly-space-3);
37
+
38
+ --ly-grid-columns: 12;
39
+ --ly-grid-min: 16rem;
40
+ --ly-sidebar-min: 14rem;
41
+ --ly-sidebar-width: 18rem;
42
+ --ly-sidebar-max: 22rem;
43
+ --ly-pane-fixed: 22rem;
44
+ --ly-header-height: 4.5rem;
45
+
46
+ --ly-radius-sm: 0.5rem;
47
+ --ly-radius: 0.875rem;
48
+ --ly-radius-lg: 1.5rem;
49
+ --ly-radius-xl: 2.25rem;
50
+
51
+ --ly-z-header: 20;
52
+ --ly-z-sidebar: 10;
53
+ }
54
+ }
55
+
56
+ @layer ly.reset {
57
+ :where(.ly-root),
58
+ :where(.ly-root *) {
59
+ box-sizing: border-box;
60
+ }
61
+
62
+ :where(.ly-root) {
63
+ min-width: 0;
64
+ margin: 0;
65
+ }
66
+
67
+ :where(.ly-root img),
68
+ :where(.ly-root svg),
69
+ :where(.ly-root video),
70
+ :where(.ly-root canvas) {
71
+ max-width: 100%;
72
+ }
73
+ }
74
+
75
+ @layer ly.layout {
76
+ .ly-page {
77
+ min-height: 100svh;
78
+ }
79
+
80
+ .ly-header,
81
+ .ly-footer,
82
+ .ly-main,
83
+ .ly-wrapper,
84
+ .ly-section,
85
+ .ly-surface {
86
+ min-width: 0;
87
+ }
88
+
89
+ .ly-header {
90
+ min-height: var(--ly-header-height);
91
+ }
92
+
93
+ .ly-header--sticky {
94
+ position: sticky;
95
+ top: 0;
96
+ z-index: var(--ly-z-header);
97
+ }
98
+
99
+ .ly-container,
100
+ .ly-wrapper {
101
+ /* Keep wrappers resilient during viewport resizing without owning visual paint. */
102
+ width: min(100% - (var(--ly-page-padding-inline) * 2), var(--ly-container-max));
103
+ margin-inline: auto;
104
+ }
105
+
106
+ .ly-container--sm,
107
+ .ly-wrapper--sm {
108
+ --ly-container-max: var(--ly-container-sm);
109
+ }
110
+
111
+ .ly-container--md,
112
+ .ly-wrapper--md {
113
+ --ly-container-max: var(--ly-container-md);
114
+ }
115
+
116
+ .ly-container--lg,
117
+ .ly-wrapper--lg {
118
+ --ly-container-max: var(--ly-container-lg);
119
+ }
120
+
121
+ .ly-container--xl,
122
+ .ly-wrapper--xl {
123
+ --ly-container-max: var(--ly-container-xl);
124
+ }
125
+
126
+ .ly-container--wide,
127
+ .ly-wrapper--wide {
128
+ --ly-container-max: var(--ly-container-wide);
129
+ }
130
+
131
+ .ly-container--fluid,
132
+ .ly-wrapper--fluid {
133
+ width: 100%;
134
+ max-width: none;
135
+ padding-inline: var(--ly-page-padding-inline);
136
+ }
137
+
138
+ .ly-wrapper--readable {
139
+ --ly-container-max: var(--ly-content-readable);
140
+ }
141
+
142
+ .ly-readable {
143
+ max-width: var(--ly-content-readable);
144
+ }
145
+
146
+ .ly-section {
147
+ padding-block: var(--ly-section-padding-block);
148
+ }
149
+
150
+ .ly-section--compact {
151
+ --ly-section-padding-block: var(--ly-space-7);
152
+ }
153
+
154
+ .ly-section--flush {
155
+ --ly-section-padding-block: 0;
156
+ }
157
+
158
+ .ly-stack {
159
+ display: flex;
160
+ flex-direction: column;
161
+ gap: var(--ly-stack-gap);
162
+ }
163
+
164
+ .ly-cluster {
165
+ display: flex;
166
+ flex-wrap: wrap;
167
+ align-items: center;
168
+ gap: var(--ly-cluster-gap);
169
+ }
170
+
171
+ .ly-grid {
172
+ display: grid;
173
+ grid-template-columns: repeat(var(--ly-grid-columns), minmax(0, 1fr));
174
+ gap: var(--ly-grid-gap);
175
+ }
176
+
177
+ .ly-grid--auto {
178
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-grid-min)), 1fr));
179
+ }
180
+
181
+ .ly-row {
182
+ display: flex;
183
+ flex-wrap: wrap;
184
+ margin-inline: calc(var(--ly-gutter, var(--ly-gap)) * -0.5);
185
+ }
186
+
187
+ .ly-col {
188
+ flex: 1 1 0;
189
+ min-width: 0;
190
+ padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5);
191
+ }
192
+
193
+ .ly-sidebar-layout {
194
+ display: grid;
195
+ grid-template-columns: 1fr;
196
+ gap: var(--ly-gap);
197
+ }
198
+
199
+ .ly-sidebar-layout > * {
200
+ min-width: 0;
201
+ }
202
+
203
+ .ly-sidebar {
204
+ min-width: 0;
205
+ }
206
+
207
+ .ly-content {
208
+ min-width: 0;
209
+ }
210
+
211
+ .ly-split {
212
+ display: grid;
213
+ grid-template-columns: 1fr;
214
+ gap: var(--ly-gap);
215
+ align-items: var(--ly-split-align, center);
216
+ }
217
+
218
+ .ly-split > * {
219
+ min-width: 0;
220
+ }
221
+
222
+ .ly-panes {
223
+ display: grid;
224
+ grid-template-columns: 1fr;
225
+ gap: var(--ly-gap);
226
+ }
227
+
228
+ .ly-panes > * {
229
+ min-width: 0;
230
+ }
231
+
232
+ .ly-surface {
233
+ border-radius: var(--ly-radius);
234
+ }
235
+
236
+ .ly-surface--raised {
237
+ border-radius: var(--ly-radius-lg);
238
+ }
239
+
240
+ .ly-divider {
241
+ min-height: 1px;
242
+ margin-block: var(--ly-space-5);
243
+ }
244
+
245
+ .ly-frame {
246
+ aspect-ratio: var(--ly-frame-ratio, 16 / 9);
247
+ overflow: hidden;
248
+ }
249
+
250
+ .ly-frame > * {
251
+ width: 100%;
252
+ height: 100%;
253
+ object-fit: cover;
254
+ }
255
+
256
+ .ly-scroll-area {
257
+ min-height: 0;
258
+ overflow: auto;
259
+ }
260
+
261
+ .ly-app-shell {
262
+ min-height: 100svh;
263
+ display: grid;
264
+ grid-template-areas:
265
+ "header"
266
+ "main";
267
+ grid-template-columns: minmax(0, 1fr);
268
+ grid-template-rows: auto minmax(0, 1fr);
269
+ }
270
+
271
+ .ly-app-header {
272
+ grid-area: header;
273
+ min-width: 0;
274
+ }
275
+
276
+ .ly-app-sidebar {
277
+ grid-area: sidebar;
278
+ display: none;
279
+ min-width: 0;
280
+ }
281
+
282
+ .ly-app-main {
283
+ grid-area: main;
284
+ min-width: 0;
285
+ }
286
+
287
+ .ly-visually-hidden {
288
+ position: absolute !important;
289
+ width: 1px !important;
290
+ height: 1px !important;
291
+ padding: 0 !important;
292
+ margin: -1px !important;
293
+ overflow: hidden !important;
294
+ clip: rect(0, 0, 0, 0) !important;
295
+ clip-path: inset(50%) !important;
296
+ white-space: nowrap !important;
297
+ }
298
+ }
299
+
300
+ @layer ly.responsive {
301
+ @media (min-width: 48rem) {
302
+ /*
303
+ Fixed support tracks are capped against their container so nested layouts
304
+ can compress instead of forcing horizontal page overflow.
305
+ */
306
+ .ly-app-shell {
307
+ grid-template-areas:
308
+ "sidebar header"
309
+ "sidebar main";
310
+ grid-template-columns: minmax(min(100%, var(--ly-sidebar-min)), var(--ly-sidebar-width)) minmax(0, 1fr);
311
+ }
312
+
313
+ .ly-app-sidebar {
314
+ display: block;
315
+ position: sticky;
316
+ top: 0;
317
+ z-index: var(--ly-z-sidebar);
318
+ height: 100svh;
319
+ overflow: auto;
320
+ }
321
+
322
+ .ly-sidebar-layout {
323
+ grid-template-columns: minmax(min(100%, var(--ly-sidebar-min)), var(--ly-sidebar-max)) minmax(0, 1fr);
324
+ align-items: start;
325
+ }
326
+
327
+ .ly-sidebar-layout--right {
328
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, var(--ly-sidebar-min)), var(--ly-sidebar-max));
329
+ }
330
+
331
+ .ly-split {
332
+ grid-template-columns: minmax(0, var(--ly-split-primary, 1fr)) minmax(0, var(--ly-split-secondary, 1fr));
333
+ }
334
+
335
+ .ly-panes--two {
336
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, var(--ly-pane-fixed)), 0.7fr);
337
+ }
338
+ }
339
+
340
+ @media (min-width: 64rem) {
341
+ .ly-panes--three {
342
+ grid-template-columns: minmax(min(100%, 14rem), 0.35fr) minmax(0, 1fr) minmax(min(100%, 14rem), 0.35fr);
343
+ }
344
+ }
345
+ }
346
+
347
+ @layer ly.utilities {
348
+ .ly-cols-1 { --ly-grid-columns: 1; }
349
+ .ly-cols-2 { --ly-grid-columns: 2; }
350
+ .ly-cols-3 { --ly-grid-columns: 3; }
351
+ .ly-cols-4 { --ly-grid-columns: 4; }
352
+ .ly-cols-5 { --ly-grid-columns: 5; }
353
+ .ly-cols-6 { --ly-grid-columns: 6; }
354
+ .ly-cols-7 { --ly-grid-columns: 7; }
355
+ .ly-cols-8 { --ly-grid-columns: 8; }
356
+ .ly-cols-9 { --ly-grid-columns: 9; }
357
+ .ly-cols-10 { --ly-grid-columns: 10; }
358
+ .ly-cols-11 { --ly-grid-columns: 11; }
359
+ .ly-cols-12 { --ly-grid-columns: 12; }
360
+ .ly-cols-16 { --ly-grid-columns: 16; }
361
+
362
+ .ly-span-1 { grid-column: span 1; }
363
+ .ly-span-2 { grid-column: span 2; }
364
+ .ly-span-3 { grid-column: span 3; }
365
+ .ly-span-4 { grid-column: span 4; }
366
+ .ly-span-5 { grid-column: span 5; }
367
+ .ly-span-6 { grid-column: span 6; }
368
+ .ly-span-7 { grid-column: span 7; }
369
+ .ly-span-8 { grid-column: span 8; }
370
+ .ly-span-9 { grid-column: span 9; }
371
+ .ly-span-10 { grid-column: span 10; }
372
+ .ly-span-11 { grid-column: span 11; }
373
+ .ly-span-12 { grid-column: span 12; }
374
+ .ly-span-13 { grid-column: span 13; }
375
+ .ly-span-14 { grid-column: span 14; }
376
+ .ly-span-15 { grid-column: span 15; }
377
+ .ly-span-16 { grid-column: span 16; }
378
+ .ly-span-full { grid-column: 1 / -1; }
379
+
380
+ .ly-col-1 { flex: 0 0 auto; width: 8.333333%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
381
+ .ly-col-2 { flex: 0 0 auto; width: 16.666667%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
382
+ .ly-col-3 { flex: 0 0 auto; width: 25%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
383
+ .ly-col-4 { flex: 0 0 auto; width: 33.333333%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
384
+ .ly-col-5 { flex: 0 0 auto; width: 41.666667%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
385
+ .ly-col-6 { flex: 0 0 auto; width: 50%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
386
+ .ly-col-7 { flex: 0 0 auto; width: 58.333333%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
387
+ .ly-col-8 { flex: 0 0 auto; width: 66.666667%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
388
+ .ly-col-9 { flex: 0 0 auto; width: 75%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
389
+ .ly-col-10 { flex: 0 0 auto; width: 83.333333%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
390
+ .ly-col-11 { flex: 0 0 auto; width: 91.666667%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
391
+ .ly-col-12 { flex: 0 0 auto; width: 100%; padding-inline: calc(var(--ly-gutter, var(--ly-gap)) * 0.5); }
392
+
393
+ .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); }
394
+ .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); }
395
+ .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); }
396
+ .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); }
397
+ .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); }
398
+ .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); }
399
+ .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); }
400
+ .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); }
401
+ .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); }
402
+ .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); }
403
+
404
+ .ly-pad-0 { padding: var(--ly-space-0); }
405
+ .ly-pad-1 { padding: var(--ly-space-1); }
406
+ .ly-pad-2 { padding: var(--ly-space-2); }
407
+ .ly-pad-3 { padding: var(--ly-space-3); }
408
+ .ly-pad-4 { padding: var(--ly-space-4); }
409
+ .ly-pad-5 { padding: var(--ly-space-5); }
410
+ .ly-pad-6 { padding: var(--ly-space-6); }
411
+ .ly-pad-7 { padding: var(--ly-space-7); }
412
+ .ly-pad-8 { padding: var(--ly-space-8); }
413
+ .ly-pad-9 { padding: var(--ly-space-9); }
414
+
415
+ .ly-px-4 { padding-inline: var(--ly-space-4); }
416
+ .ly-px-6 { padding-inline: var(--ly-space-6); }
417
+ .ly-px-8 { padding-inline: var(--ly-space-8); }
418
+ .ly-py-4 { padding-block: var(--ly-space-4); }
419
+ .ly-py-6 { padding-block: var(--ly-space-6); }
420
+ .ly-py-8 { padding-block: var(--ly-space-8); }
421
+
422
+ .ly-mx-auto { margin-inline: auto; }
423
+ .ly-w-full { width: 100%; }
424
+ .ly-h-full { height: 100%; }
425
+ .ly-min-h-screen { min-height: 100svh; }
426
+ .ly-bleed { width: 100vw; margin-inline: calc(50% - 50vw); }
427
+ .ly-overflow-auto { overflow: auto; }
428
+ .ly-overflow-hidden { overflow: hidden; }
429
+
430
+ .ly-items-start { align-items: flex-start; }
431
+ .ly-items-center { align-items: center; }
432
+ .ly-items-end { align-items: flex-end; }
433
+ .ly-items-stretch { align-items: stretch; }
434
+ .ly-justify-start { justify-content: flex-start; }
435
+ .ly-justify-center { justify-content: center; }
436
+ .ly-justify-end { justify-content: flex-end; }
437
+ .ly-justify-between { justify-content: space-between; }
438
+
439
+ .ly-frame-1x1 { --ly-frame-ratio: 1 / 1; }
440
+ .ly-frame-2x1 { --ly-frame-ratio: 2 / 1; }
441
+ .ly-frame-3x2 { --ly-frame-ratio: 3 / 2; }
442
+ .ly-frame-4x3 { --ly-frame-ratio: 4 / 3; }
443
+ .ly-frame-16x9 { --ly-frame-ratio: 16 / 9; }
444
+ .ly-frame-21x9 { --ly-frame-ratio: 21 / 9; }
445
+
446
+ .ly-hidden { display: none !important; }
447
+ .ly-show-md-up,
448
+ .ly-show-lg-up {
449
+ display: none !important;
450
+ }
451
+
452
+ @media (min-width: 48rem) {
453
+ .ly-md-cols-1 { --ly-grid-columns: 1; }
454
+ .ly-md-cols-2 { --ly-grid-columns: 2; }
455
+ .ly-md-cols-3 { --ly-grid-columns: 3; }
456
+ .ly-md-cols-4 { --ly-grid-columns: 4; }
457
+ .ly-md-cols-6 { --ly-grid-columns: 6; }
458
+ .ly-md-cols-8 { --ly-grid-columns: 8; }
459
+ .ly-md-cols-12 { --ly-grid-columns: 12; }
460
+ .ly-md-cols-16 { --ly-grid-columns: 16; }
461
+ .ly-show-md-up { display: revert !important; }
462
+ }
463
+
464
+ @media (min-width: 64rem) {
465
+ .ly-lg-cols-1 { --ly-grid-columns: 1; }
466
+ .ly-lg-cols-2 { --ly-grid-columns: 2; }
467
+ .ly-lg-cols-3 { --ly-grid-columns: 3; }
468
+ .ly-lg-cols-4 { --ly-grid-columns: 4; }
469
+ .ly-lg-cols-6 { --ly-grid-columns: 6; }
470
+ .ly-lg-cols-8 { --ly-grid-columns: 8; }
471
+ .ly-lg-cols-12 { --ly-grid-columns: 12; }
472
+ .ly-lg-cols-16 { --ly-grid-columns: 16; }
473
+ .ly-show-lg-up { display: revert !important; }
474
+ }
475
+ }
476
+
477
+ /* layout-ui-style-kit-bridge.css */
478
+ /*
479
+ Compatibility bridge for ui-style-kit-css.
480
+ This bridge intentionally does not map color, type, border, or shadow tokens.
481
+ ui-style-kit-css owns those visuals; layout-style-library owns structure.
482
+ */
483
+
484
+ @layer ly.bridge {
485
+ :where(.ly-root[data-ui][data-theme][data-mode], [data-ui][data-theme][data-mode] .ly-root) {
486
+ --ly-ui-style-kit-bridge: 1;
487
+ }
488
+
489
+ :where(.ly-root[data-ui="minimal-saas"], [data-ui="minimal-saas"] .ly-root) {
490
+ --ly-ui-style-kit-bridge-style: minimal-saas;
491
+ }
492
+
493
+ :where(.ly-root[data-ui="bento"], [data-ui="bento"] .ly-root) {
494
+ --ly-ui-style-kit-bridge-style: bento;
495
+ }
496
+
497
+ :where(.ly-root[data-ui="maximalist"], [data-ui="maximalist"] .ly-root) {
498
+ --ly-ui-style-kit-bridge-style: maximalist;
499
+ }
500
+
501
+ :where(.ly-root[data-ui="bauhaus"], [data-ui="bauhaus"] .ly-root) {
502
+ --ly-ui-style-kit-bridge-style: bauhaus;
503
+ }
504
+
505
+ :where(.ly-root[data-ui="tactile"], [data-ui="tactile"] .ly-root) {
506
+ --ly-ui-style-kit-bridge-style: tactile;
507
+ }
508
+
509
+ :where(.ly-root[data-ui="neumorphism"], [data-ui="neumorphism"] .ly-root) {
510
+ --ly-ui-style-kit-bridge-style: neumorphism;
511
+ }
512
+
513
+ :where(.ly-root[data-ui="retrofuturism"], [data-ui="retrofuturism"] .ly-root) {
514
+ --ly-ui-style-kit-bridge-style: retrofuturism;
515
+ }
516
+
517
+ :where(.ly-root[data-ui="brutalism"], [data-ui="brutalism"] .ly-root) {
518
+ --ly-ui-style-kit-bridge-style: brutalism;
519
+ }
520
+
521
+ :where(.ly-root[data-ui="cyberpunk"], [data-ui="cyberpunk"] .ly-root) {
522
+ --ly-ui-style-kit-bridge-style: cyberpunk;
523
+ }
524
+
525
+ :where(.ly-root[data-ui="y2k"], [data-ui="y2k"] .ly-root) {
526
+ --ly-ui-style-kit-bridge-style: y2k;
527
+ }
528
+
529
+ :where(.ly-root[data-ui="retro-glass"], [data-ui="retro-glass"] .ly-root) {
530
+ --ly-ui-style-kit-bridge-style: retro-glass;
531
+ }
532
+ }
533
+
534
+ /* layout-style-minimal-saas.css */
535
+ /*
536
+ Layout style: minimal-saas.
537
+ Steady left-rail SaaS shell with conservative content widths and predictable
538
+ workspace rhythm. Visual identity remains owned by ui-style-kit-css.
539
+ */
540
+
541
+ @layer ly.styles.minimal_saas {
542
+ :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) {
543
+ --ly-container-max: 88rem;
544
+ --ly-page-padding-inline: clamp(1rem, 3vw, 2.5rem);
545
+ --ly-section-padding-block: clamp(2rem, 5vw, 4rem);
546
+ --ly-sidebar-width: clamp(15rem, 18vw, 19rem);
547
+ --ly-grid-min: 16rem;
548
+ --ly-gap: clamp(1rem, 2vw, 1.75rem);
549
+ --ly-grid-gap: var(--ly-gap);
550
+ --ly-stack-gap: clamp(0.875rem, 1.6vw, 1.35rem);
551
+ }
552
+
553
+ :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-app-main {
554
+ padding-block: clamp(1rem, 2vw, 2rem);
555
+ }
556
+
557
+ :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-container,
558
+ :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-wrapper {
559
+ width: min(100% - var(--ly-page-padding-inline), var(--ly-container-max));
560
+ }
561
+
562
+ :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-section {
563
+ padding-block: var(--ly-section-padding-block);
564
+ }
565
+
566
+ :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--auto {
567
+ grid-auto-rows: minmax(8rem, auto);
568
+ }
569
+
570
+ @media (min-width: 48rem) {
571
+ :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-app-shell {
572
+ grid-template-areas:
573
+ "sidebar header"
574
+ "sidebar main";
575
+ grid-template-columns: minmax(min(100%, 14rem), var(--ly-sidebar-width)) minmax(0, 1fr);
576
+ }
577
+
578
+ :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-app-sidebar {
579
+ display: block;
580
+ position: sticky;
581
+ top: 0;
582
+ height: 100svh;
583
+ overflow: auto;
584
+ }
585
+
586
+ :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-sidebar-layout {
587
+ grid-template-columns: minmax(min(100%, 14rem), 0.24fr) minmax(0, 1fr);
588
+ }
589
+
590
+ :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-split,
591
+ :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-panes--two {
592
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, 18rem), 0.44fr);
593
+ }
594
+ }
595
+
596
+ @media (min-width: 80rem) {
597
+ :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-panes--three {
598
+ grid-template-columns: minmax(min(100%, 13rem), 0.22fr) minmax(0, 1fr) minmax(min(100%, 16rem), 0.32fr);
599
+ }
600
+ }
601
+ }
602
+
603
+ /* layout-style-bento.css */
604
+ /*
605
+ Layout style: bento.
606
+ Modular dashboard shell with staged mosaic zones. Visual identity remains
607
+ owned by ui-style-kit-css.
608
+ */
609
+
610
+ @layer ly.styles.bento {
611
+ :where(.ly-root[data-layout="bento"], .ly-root[layout-style="bento"], .ly-root.ly-layout-bento, .ly-root.ly-style-bento) {
612
+ --ly-container-max: 104rem;
613
+ --ly-page-padding-inline: clamp(1rem, 3.5vw, 3rem);
614
+ --ly-section-padding-block: clamp(2rem, 6vw, 5rem);
615
+ --ly-sidebar-width: clamp(13rem, 16vw, 17rem);
616
+ --ly-grid-min: 14rem;
617
+ --ly-gap: clamp(1rem, 2.5vw, 2rem);
618
+ --ly-grid-gap: var(--ly-gap);
619
+ --ly-stack-gap: clamp(1rem, 2vw, 1.75rem);
620
+ }
621
+
622
+ :where(.ly-root[data-layout="bento"], .ly-root[layout-style="bento"], .ly-root.ly-layout-bento, .ly-root.ly-style-bento) .ly-app-main {
623
+ padding-block: clamp(1rem, 3vw, 2.5rem);
624
+ }
625
+
626
+ :where(.ly-root[data-layout="bento"], .ly-root[layout-style="bento"], .ly-root.ly-layout-bento, .ly-root.ly-style-bento) .ly-container,
627
+ :where(.ly-root[data-layout="bento"], .ly-root[layout-style="bento"], .ly-root.ly-layout-bento, .ly-root.ly-style-bento) .ly-wrapper {
628
+ width: min(100% - var(--ly-page-padding-inline), var(--ly-container-max));
629
+ }
630
+
631
+ :where(.ly-root[data-layout="bento"], .ly-root[layout-style="bento"], .ly-root.ly-layout-bento, .ly-root.ly-style-bento) .ly-section {
632
+ padding-block: var(--ly-section-padding-block);
633
+ }
634
+
635
+ :where(.ly-root[data-layout="bento"], .ly-root[layout-style="bento"], .ly-root.ly-layout-bento, .ly-root.ly-style-bento) .ly-grid--auto {
636
+ grid-auto-rows: minmax(9rem, auto);
637
+ }
638
+
639
+ @media (min-width: 48rem) {
640
+ :where(.ly-root[data-layout="bento"], .ly-root[layout-style="bento"], .ly-root.ly-layout-bento, .ly-root.ly-style-bento) .ly-app-shell {
641
+ grid-template-areas:
642
+ "sidebar header"
643
+ "sidebar main";
644
+ grid-template-columns: minmax(min(100%, 13rem), 0.26fr) minmax(0, 1fr);
645
+ }
646
+
647
+ :where(.ly-root[data-layout="bento"], .ly-root[layout-style="bento"], .ly-root.ly-layout-bento, .ly-root.ly-style-bento) .ly-app-sidebar {
648
+ display: block;
649
+ position: sticky;
650
+ top: var(--ly-space-3);
651
+ height: calc(100svh - (var(--ly-space-3) * 2));
652
+ margin: var(--ly-space-3) 0 var(--ly-space-3) var(--ly-space-3);
653
+ overflow: auto;
654
+ }
655
+
656
+ :where(.ly-root[data-layout="bento"], .ly-root[layout-style="bento"], .ly-root.ly-layout-bento, .ly-root.ly-style-bento) .ly-grid--auto > :nth-child(4n + 1) {
657
+ grid-column: span 2;
658
+ min-height: 14rem;
659
+ }
660
+
661
+ :where(.ly-root[data-layout="bento"], .ly-root[layout-style="bento"], .ly-root.ly-layout-bento, .ly-root.ly-style-bento) .ly-sidebar-layout {
662
+ grid-template-columns: minmax(min(100%, 12rem), 0.3fr) minmax(0, 1fr);
663
+ }
664
+
665
+ :where(.ly-root[data-layout="bento"], .ly-root[layout-style="bento"], .ly-root.ly-layout-bento, .ly-root.ly-style-bento) .ly-split {
666
+ grid-template-columns: minmax(0, 0.78fr) minmax(min(100%, 18rem), 1.22fr);
667
+ }
668
+
669
+ :where(.ly-root[data-layout="bento"], .ly-root[layout-style="bento"], .ly-root.ly-layout-bento, .ly-root.ly-style-bento) .ly-panes--two {
670
+ grid-template-columns: minmax(0, 1.18fr) minmax(min(100%, 18rem), 0.82fr);
671
+ }
672
+ }
673
+
674
+ @media (min-width: 80rem) {
675
+ :where(.ly-root[data-layout="bento"], .ly-root[layout-style="bento"], .ly-root.ly-layout-bento, .ly-root.ly-style-bento) .ly-panes--three {
676
+ grid-template-columns: minmax(min(100%, 12rem), 0.6fr) minmax(0, 1.4fr) minmax(min(100%, 14rem), 0.8fr);
677
+ }
678
+ }
679
+ }
680
+
681
+ /* layout-style-maximalist.css */
682
+ /*
683
+ Layout style: maximalist.
684
+ Editorial shell with oversized hero splits and staggered supporting regions.
685
+ Visual identity remains owned by ui-style-kit-css.
686
+ */
687
+
688
+ @layer ly.styles.maximalist {
689
+ :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) {
690
+ --ly-container-max: 102rem;
691
+ --ly-page-padding-inline: clamp(1rem, 6vw, 5.5rem);
692
+ --ly-section-padding-block: clamp(4rem, 13vw, 10rem);
693
+ --ly-sidebar-width: clamp(13rem, 18vw, 20rem);
694
+ --ly-grid-min: 14rem;
695
+ --ly-gap: clamp(1.25rem, 4vw, 3rem);
696
+ --ly-grid-gap: var(--ly-gap);
697
+ --ly-stack-gap: clamp(1.5rem, 4vw, 3.5rem);
698
+ }
699
+
700
+ :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-app-main {
701
+ padding-block: clamp(1rem, 3vw, 3rem);
702
+ }
703
+
704
+ :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-container,
705
+ :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-wrapper {
706
+ width: min(100% - var(--ly-page-padding-inline), var(--ly-container-max));
707
+ }
708
+
709
+ :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-section {
710
+ padding-block: clamp(3.5rem, 11vw, 8rem);
711
+ }
712
+
713
+ :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-split {
714
+ align-items: stretch;
715
+ }
716
+
717
+ :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-grid--auto {
718
+ grid-auto-rows: minmax(10rem, auto);
719
+ }
720
+
721
+ @media (min-width: 48rem) {
722
+ :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-split {
723
+ /* Keep the editorial stage stacked until the wider shell can carry the oversized rhythm. */
724
+ grid-template-columns: 1fr;
725
+ }
726
+
727
+ :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-grid--auto > :nth-child(5n + 1) {
728
+ grid-column: span 2;
729
+ min-height: 24rem;
730
+ }
731
+
732
+ :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-grid--auto > :nth-child(5n + 3) {
733
+ transform: translateY(var(--ly-space-7));
734
+ }
735
+ }
736
+
737
+ @media (min-width: 56rem) {
738
+ :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-app-shell {
739
+ grid-template-areas:
740
+ "header header"
741
+ "main sidebar";
742
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, 13rem), 0.28fr);
743
+ }
744
+
745
+ :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-app-sidebar {
746
+ display: block;
747
+ position: sticky;
748
+ top: calc(var(--ly-gap) * 1.5);
749
+ height: max-content;
750
+ margin-block: clamp(2rem, 8vw, 7rem);
751
+ transform: translateX(calc(var(--ly-gap) * -0.35));
752
+ overflow: auto;
753
+ }
754
+
755
+ :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-sidebar-layout {
756
+ grid-template-columns: minmax(0, 1.55fr) minmax(min(100%, 15rem), 0.45fr);
757
+ }
758
+
759
+ :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-split {
760
+ grid-template-columns: minmax(0, 1.62fr) minmax(min(100%, 16rem), 0.54fr);
761
+ gap: clamp(1.5rem, 6vw, 5rem);
762
+ }
763
+
764
+ :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-panes--two {
765
+ grid-template-columns: minmax(min(100%, 16rem), 0.44fr) minmax(0, 1.56fr);
766
+ }
767
+ }
768
+
769
+ @media (min-width: 80rem) {
770
+ :where(.ly-root[data-layout="maximalist"], .ly-root[layout-style="maximalist"], .ly-root.ly-layout-maximalist, .ly-root.ly-style-maximalist) .ly-panes--three {
771
+ grid-template-columns: minmax(min(100%, 14rem), 0.34fr) minmax(0, 1.28fr) minmax(min(100%, 18rem), 0.58fr);
772
+ }
773
+ }
774
+ }
775
+
776
+ /* layout-style-bauhaus.css */
777
+ /*
778
+ Layout style: bauhaus.
779
+ Strict framed column shell with structural rails and measured offsets. Visual
780
+ identity remains owned by ui-style-kit-css.
781
+ */
782
+
783
+ @layer ly.styles.bauhaus {
784
+ :where(.ly-root[data-layout="bauhaus"], .ly-root[layout-style="bauhaus"], .ly-root.ly-layout-bauhaus, .ly-root.ly-style-bauhaus) {
785
+ --ly-container-max: 92rem;
786
+ --ly-page-padding-inline: clamp(1rem, 2vw, 2rem);
787
+ --ly-section-padding-block: clamp(2.5rem, 5vw, 4.5rem);
788
+ --ly-sidebar-width: clamp(8rem, 12vw, 12rem);
789
+ --ly-grid-min: 13rem;
790
+ --ly-gap: clamp(0.75rem, 1.6vw, 1.25rem);
791
+ --ly-grid-gap: var(--ly-gap);
792
+ --ly-stack-gap: clamp(0.75rem, 1.5vw, 1.25rem);
793
+ }
794
+
795
+ :where(.ly-root[data-layout="bauhaus"], .ly-root[layout-style="bauhaus"], .ly-root.ly-layout-bauhaus, .ly-root.ly-style-bauhaus) .ly-app-main {
796
+ padding-block: clamp(0.75rem, 2vw, 1.5rem);
797
+ }
798
+
799
+ :where(.ly-root[data-layout="bauhaus"], .ly-root[layout-style="bauhaus"], .ly-root.ly-layout-bauhaus, .ly-root.ly-style-bauhaus) .ly-container,
800
+ :where(.ly-root[data-layout="bauhaus"], .ly-root[layout-style="bauhaus"], .ly-root.ly-layout-bauhaus, .ly-root.ly-style-bauhaus) .ly-wrapper {
801
+ width: min(100% - var(--ly-page-padding-inline), var(--ly-container-max));
802
+ }
803
+
804
+ :where(.ly-root[data-layout="bauhaus"], .ly-root[layout-style="bauhaus"], .ly-root.ly-layout-bauhaus, .ly-root.ly-style-bauhaus) .ly-section {
805
+ padding-block: var(--ly-section-padding-block);
806
+ }
807
+
808
+ :where(.ly-root[data-layout="bauhaus"], .ly-root[layout-style="bauhaus"], .ly-root.ly-layout-bauhaus, .ly-root.ly-style-bauhaus) .ly-grid--auto {
809
+ grid-auto-rows: minmax(7rem, auto);
810
+ }
811
+
812
+ @media (min-width: 48rem) {
813
+ :where(.ly-root[data-layout="bauhaus"], .ly-root[layout-style="bauhaus"], .ly-root.ly-layout-bauhaus, .ly-root.ly-style-bauhaus) .ly-app-shell {
814
+ grid-template-areas:
815
+ "sidebar header"
816
+ "sidebar main";
817
+ grid-template-columns: minmax(min(100%, 7rem), 0.18fr) minmax(0, 1fr);
818
+ }
819
+
820
+ :where(.ly-root[data-layout="bauhaus"], .ly-root[layout-style="bauhaus"], .ly-root.ly-layout-bauhaus, .ly-root.ly-style-bauhaus) .ly-app-sidebar {
821
+ display: block;
822
+ position: sticky;
823
+ top: 0;
824
+ height: 100svh;
825
+ overflow: auto;
826
+ }
827
+
828
+ :where(.ly-root[data-layout="bauhaus"], .ly-root[layout-style="bauhaus"], .ly-root.ly-layout-bauhaus, .ly-root.ly-style-bauhaus) .ly-sidebar-layout {
829
+ grid-template-columns: minmax(min(100%, 8rem), 0.22fr) minmax(0, 1fr);
830
+ }
831
+
832
+ :where(.ly-root[data-layout="bauhaus"], .ly-root[layout-style="bauhaus"], .ly-root.ly-layout-bauhaus, .ly-root.ly-style-bauhaus) .ly-split {
833
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
834
+ }
835
+
836
+ :where(.ly-root[data-layout="bauhaus"], .ly-root[layout-style="bauhaus"], .ly-root.ly-layout-bauhaus, .ly-root.ly-style-bauhaus) .ly-panes--two {
837
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, 12rem), 0.5fr);
838
+ }
839
+ }
840
+
841
+ @media (min-width: 80rem) {
842
+ :where(.ly-root[data-layout="bauhaus"], .ly-root[layout-style="bauhaus"], .ly-root.ly-layout-bauhaus, .ly-root.ly-style-bauhaus) .ly-panes--three {
843
+ grid-template-columns: minmax(min(100%, 10rem), 0.25fr) minmax(0, 1fr) minmax(min(100%, 10rem), 0.25fr);
844
+ }
845
+ }
846
+ }
847
+
848
+ /* layout-style-tactile.css */
849
+ /*
850
+ Layout style: tactile.
851
+ Instrument-panel shell with a heavier support dock and dense controls. Visual
852
+ identity remains owned by ui-style-kit-css.
853
+ */
854
+
855
+ @layer ly.styles.tactile {
856
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) {
857
+ --ly-container-max: 98rem;
858
+ --ly-page-padding-inline: clamp(1rem, 3vw, 2.75rem);
859
+ --ly-section-padding-block: clamp(2rem, 5vw, 4rem);
860
+ --ly-sidebar-width: clamp(18rem, 22vw, 24rem);
861
+ --ly-grid-min: 15rem;
862
+ --ly-gap: clamp(1rem, 2.2vw, 1.75rem);
863
+ --ly-grid-gap: var(--ly-gap);
864
+ --ly-stack-gap: clamp(1rem, 2vw, 1.75rem);
865
+ }
866
+
867
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-app-main {
868
+ padding-block: clamp(1rem, 2.5vw, 2rem);
869
+ }
870
+
871
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-container,
872
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-wrapper {
873
+ width: min(100% - var(--ly-page-padding-inline), var(--ly-container-max));
874
+ }
875
+
876
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-section {
877
+ padding-block: var(--ly-section-padding-block);
878
+ }
879
+
880
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-grid--auto {
881
+ grid-auto-rows: minmax(8rem, auto);
882
+ }
883
+
884
+ @media (min-width: 48rem) {
885
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-app-shell {
886
+ grid-template-areas:
887
+ "sidebar header"
888
+ "sidebar main";
889
+ grid-template-columns: minmax(min(100%, 18rem), var(--ly-sidebar-width)) minmax(0, 1fr);
890
+ }
891
+
892
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-app-sidebar {
893
+ display: block;
894
+ position: sticky;
895
+ top: 0;
896
+ height: 100svh;
897
+ overflow: auto;
898
+ }
899
+
900
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-sidebar-layout {
901
+ grid-template-columns: minmax(min(100%, 18rem), 0.42fr) minmax(0, 1fr);
902
+ }
903
+
904
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-split {
905
+ grid-template-columns: minmax(0, 1.18fr) minmax(min(100%, 18rem), 0.82fr);
906
+ }
907
+
908
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-panes--two {
909
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, 20rem), 0.62fr);
910
+ }
911
+ }
912
+
913
+ @media (min-width: 80rem) {
914
+ :where(.ly-root[data-layout="tactile"], .ly-root[layout-style="tactile"], .ly-root.ly-layout-tactile, .ly-root.ly-style-tactile) .ly-panes--three {
915
+ grid-template-columns: minmax(min(100%, 17rem), 0.4fr) minmax(0, 1fr) minmax(min(100%, 18rem), 0.46fr);
916
+ }
917
+ }
918
+ }
919
+
920
+ /* layout-style-neumorphism.css */
921
+ /*
922
+ Layout style: neumorphism.
923
+ Centered island shell with detached support regions. Visual identity remains
924
+ owned by ui-style-kit-css.
925
+ */
926
+
927
+ @layer ly.styles.neumorphism {
928
+ :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) {
929
+ --ly-container-max: 86rem;
930
+ --ly-page-padding-inline: clamp(1.25rem, 5vw, 4rem);
931
+ --ly-section-padding-block: clamp(3rem, 8vw, 6rem);
932
+ --ly-sidebar-width: clamp(16rem, 20vw, 20rem);
933
+ --ly-grid-min: 16rem;
934
+ --ly-gap: clamp(1.25rem, 3vw, 2.5rem);
935
+ --ly-grid-gap: var(--ly-gap);
936
+ --ly-stack-gap: clamp(1.25rem, 2.5vw, 2rem);
937
+ }
938
+
939
+ :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-app-main {
940
+ padding-block: clamp(2rem, 5vw, 4rem);
941
+ }
942
+
943
+ :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-container,
944
+ :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-wrapper {
945
+ width: min(100% - var(--ly-page-padding-inline), var(--ly-container-max));
946
+ }
947
+
948
+ :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-section {
949
+ padding-block: var(--ly-section-padding-block);
950
+ }
951
+
952
+ :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-grid--auto {
953
+ grid-auto-rows: minmax(9rem, auto);
954
+ }
955
+
956
+ @media (min-width: 56rem) {
957
+ :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-app-shell {
958
+ grid-template-areas:
959
+ "header header"
960
+ "main sidebar";
961
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, 16rem), 0.34fr);
962
+ align-items: start;
963
+ }
964
+
965
+ :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-app-sidebar {
966
+ display: block;
967
+ position: sticky;
968
+ top: clamp(1rem, 3vw, 2rem);
969
+ max-height: calc(100svh - clamp(2rem, 6vw, 4rem));
970
+ margin: clamp(1rem, 4vw, 3rem) clamp(1rem, 4vw, 3rem) clamp(1rem, 4vw, 3rem) 0;
971
+ overflow: auto;
972
+ }
973
+
974
+ :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-sidebar-layout {
975
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, 16rem), 0.42fr);
976
+ }
977
+
978
+ :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-split {
979
+ grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
980
+ }
981
+
982
+ :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-panes--two {
983
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, 17rem), 0.5fr);
984
+ }
985
+ }
986
+
987
+ @media (min-width: 80rem) {
988
+ :where(.ly-root[data-layout="neumorphism"], .ly-root[layout-style="neumorphism"], .ly-root.ly-layout-neumorphism, .ly-root.ly-style-neumorphism) .ly-panes--three {
989
+ grid-template-columns: minmax(min(100%, 15rem), 0.38fr) minmax(0, 1fr) minmax(min(100%, 15rem), 0.38fr);
990
+ }
991
+ }
992
+ }
993
+
994
+ /* layout-style-retrofuturism.css */
995
+ /*
996
+ Layout style: retrofuturism.
997
+ Panoramic bridge shell with symmetric pods and a wide central stage. Visual
998
+ identity remains owned by ui-style-kit-css.
999
+ */
1000
+
1001
+ @layer ly.styles.retrofuturism {
1002
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) {
1003
+ --ly-container-max: 110rem;
1004
+ --ly-page-padding-inline: clamp(1rem, 4vw, 4rem);
1005
+ --ly-section-padding-block: clamp(3rem, 8vw, 7rem);
1006
+ --ly-sidebar-width: clamp(12rem, 14vw, 16rem);
1007
+ --ly-grid-min: 15rem;
1008
+ --ly-gap: clamp(1rem, 3vw, 2.5rem);
1009
+ --ly-grid-gap: var(--ly-gap);
1010
+ --ly-stack-gap: clamp(1rem, 2.4vw, 2rem);
1011
+ }
1012
+
1013
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-app-main {
1014
+ padding-block: clamp(1.5rem, 4vw, 3rem);
1015
+ }
1016
+
1017
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-container,
1018
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-wrapper {
1019
+ width: min(100% - var(--ly-page-padding-inline), var(--ly-container-max));
1020
+ }
1021
+
1022
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-section {
1023
+ padding-block: var(--ly-section-padding-block);
1024
+ }
1025
+
1026
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-grid--auto {
1027
+ grid-auto-rows: minmax(8rem, auto);
1028
+ }
1029
+
1030
+ @media (min-width: 56rem) {
1031
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-app-shell {
1032
+ grid-template-areas:
1033
+ "header header header"
1034
+ "sidebar main main";
1035
+ grid-template-columns: minmax(min(100%, 12rem), 0.24fr) minmax(0, 1fr) minmax(min(100%, 12rem), 0.24fr);
1036
+ }
1037
+
1038
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-app-sidebar {
1039
+ display: block;
1040
+ position: sticky;
1041
+ top: clamp(1rem, 2vw, 1.5rem);
1042
+ height: calc(100svh - clamp(2rem, 4vw, 3rem));
1043
+ margin: clamp(1rem, 2vw, 1.5rem) 0 clamp(1rem, 2vw, 1.5rem) clamp(1rem, 2vw, 1.5rem);
1044
+ overflow: auto;
1045
+ }
1046
+
1047
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-sidebar-layout {
1048
+ grid-template-columns: minmax(min(100%, 12rem), 0.32fr) minmax(0, 1fr);
1049
+ }
1050
+
1051
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-split {
1052
+ grid-template-columns: minmax(0, 1.35fr) minmax(min(100%, 16rem), 0.65fr);
1053
+ }
1054
+
1055
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-panes--two {
1056
+ grid-template-columns: minmax(min(100%, 14rem), 0.44fr) minmax(0, 1.2fr);
1057
+ }
1058
+ }
1059
+
1060
+ @media (min-width: 80rem) {
1061
+ :where(.ly-root[data-layout="retrofuturism"], .ly-root[layout-style="retrofuturism"], .ly-root.ly-layout-retrofuturism, .ly-root.ly-style-retrofuturism) .ly-panes--three {
1062
+ grid-template-columns: minmax(min(100%, 12rem), 0.44fr) minmax(0, 1.4fr) minmax(min(100%, 12rem), 0.44fr);
1063
+ }
1064
+ }
1065
+ }
1066
+
1067
+ /* layout-style-brutalism.css */
1068
+ /*
1069
+ Layout style: brutalism.
1070
+ Full-bleed slab shell with abrupt section breaks and compressed rails. Visual
1071
+ identity remains owned by ui-style-kit-css.
1072
+ */
1073
+
1074
+ @layer ly.styles.brutalism {
1075
+ :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) {
1076
+ --ly-container-max: 100vw;
1077
+ --ly-page-padding-inline: clamp(0.75rem, 3vw, 3rem);
1078
+ --ly-section-padding-block: clamp(2rem, 6vw, 5rem);
1079
+ --ly-sidebar-width: clamp(12rem, 15vw, 16rem);
1080
+ --ly-grid-min: 12rem;
1081
+ --ly-gap: clamp(0.75rem, 2vw, 1.5rem);
1082
+ --ly-grid-gap: var(--ly-gap);
1083
+ --ly-stack-gap: clamp(0.75rem, 2vw, 1.5rem);
1084
+ }
1085
+
1086
+ :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-app-main {
1087
+ padding-block: 0;
1088
+ }
1089
+
1090
+ :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-container,
1091
+ :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-wrapper {
1092
+ width: min(100%, var(--ly-container-max));
1093
+ }
1094
+
1095
+ :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-section {
1096
+ padding-block: var(--ly-section-padding-block);
1097
+ }
1098
+
1099
+ :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-grid--auto {
1100
+ grid-auto-rows: minmax(7rem, auto);
1101
+ }
1102
+
1103
+ @media (min-width: 48rem) {
1104
+ :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-app-shell {
1105
+ grid-template-areas:
1106
+ "header header"
1107
+ "main sidebar";
1108
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, 12rem), 0.22fr);
1109
+ }
1110
+
1111
+ :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-app-sidebar {
1112
+ display: block;
1113
+ position: sticky;
1114
+ top: 0;
1115
+ height: 100svh;
1116
+ overflow: auto;
1117
+ }
1118
+
1119
+ :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-sidebar-layout {
1120
+ grid-template-columns: minmax(0, 1.55fr) minmax(min(100%, 12rem), 0.45fr);
1121
+ }
1122
+
1123
+ :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-split {
1124
+ grid-template-columns: minmax(0, 1.7fr) minmax(min(100%, 12rem), 0.3fr);
1125
+ }
1126
+
1127
+ :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-panes--two {
1128
+ grid-template-columns: minmax(min(100%, 12rem), 0.35fr) minmax(0, 1.65fr);
1129
+ }
1130
+ }
1131
+
1132
+ @media (min-width: 80rem) {
1133
+ :where(.ly-root[data-layout="brutalism"], .ly-root[layout-style="brutalism"], .ly-root.ly-layout-brutalism, .ly-root.ly-style-brutalism) .ly-panes--three {
1134
+ grid-template-columns: minmax(min(100%, 11rem), 0.28fr) minmax(0, 1.42fr) minmax(min(100%, 14rem), 0.4fr);
1135
+ }
1136
+ }
1137
+ }
1138
+
1139
+ /* layout-style-cyberpunk.css */
1140
+ /*
1141
+ Layout style: cyberpunk.
1142
+ Narrow utility rail with dense command workspace and compact gutters. Visual
1143
+ identity remains owned by ui-style-kit-css.
1144
+ */
1145
+
1146
+ @layer ly.styles.cyberpunk {
1147
+ :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) {
1148
+ --ly-container-max: 104rem;
1149
+ --ly-page-padding-inline: clamp(0.75rem, 2vw, 2rem);
1150
+ --ly-section-padding-block: clamp(2rem, 5vw, 4rem);
1151
+ --ly-sidebar-width: clamp(10rem, 12vw, 12.5rem);
1152
+ --ly-grid-min: 12rem;
1153
+ --ly-gap: clamp(0.75rem, 1.8vw, 1.25rem);
1154
+ --ly-grid-gap: var(--ly-gap);
1155
+ --ly-stack-gap: clamp(0.75rem, 1.5vw, 1.25rem);
1156
+ }
1157
+
1158
+ :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-app-main {
1159
+ padding-block: clamp(0.75rem, 2vw, 1.5rem);
1160
+ }
1161
+
1162
+ :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-container,
1163
+ :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-wrapper {
1164
+ width: min(100% - var(--ly-page-padding-inline), var(--ly-container-max));
1165
+ }
1166
+
1167
+ :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-section {
1168
+ padding-block: var(--ly-section-padding-block);
1169
+ }
1170
+
1171
+ :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-grid--auto {
1172
+ grid-auto-rows: minmax(7rem, auto);
1173
+ }
1174
+
1175
+ @media (min-width: 48rem) {
1176
+ :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-app-shell {
1177
+ grid-template-areas:
1178
+ "sidebar header"
1179
+ "sidebar main";
1180
+ grid-template-columns: minmax(min(100%, var(--ly-sidebar-width)), var(--ly-sidebar-width)) minmax(0, 1fr);
1181
+ }
1182
+
1183
+ :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-app-sidebar {
1184
+ display: block;
1185
+ position: sticky;
1186
+ top: 0;
1187
+ height: 100svh;
1188
+ overflow: auto;
1189
+ }
1190
+
1191
+ :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-sidebar-layout {
1192
+ grid-template-columns: minmax(min(100%, 10rem), 0.24fr) minmax(0, 1fr);
1193
+ }
1194
+
1195
+ :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-split {
1196
+ grid-template-columns: minmax(0, 1.2fr) minmax(min(100%, 16rem), 0.8fr);
1197
+ }
1198
+
1199
+ :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-panes--two {
1200
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, 15rem), 0.38fr);
1201
+ }
1202
+ }
1203
+
1204
+ @media (min-width: 80rem) {
1205
+ :where(.ly-root[data-layout="cyberpunk"], .ly-root[layout-style="cyberpunk"], .ly-root.ly-layout-cyberpunk, .ly-root.ly-style-cyberpunk) .ly-panes--three {
1206
+ grid-template-columns: minmax(min(100%, 10rem), 0.24fr) minmax(0, 1fr) minmax(min(100%, 16rem), 0.38fr);
1207
+ }
1208
+ }
1209
+ }
1210
+
1211
+ /* layout-style-y2k.css */
1212
+ /*
1213
+ Layout style: y2k.
1214
+ Centered hub shell with floating-window rhythm and in-flow support regions.
1215
+ Visual identity remains owned by ui-style-kit-css.
1216
+ */
1217
+
1218
+ @layer ly.styles.y2k {
1219
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) {
1220
+ --ly-container-max: 84rem;
1221
+ --ly-page-padding-inline: clamp(1rem, 5vw, 4rem);
1222
+ --ly-section-padding-block: clamp(3rem, 8vw, 6rem);
1223
+ --ly-sidebar-width: clamp(17rem, 22vw, 21rem);
1224
+ --ly-grid-min: 16rem;
1225
+ --ly-gap: clamp(1.25rem, 3vw, 2.5rem);
1226
+ --ly-grid-gap: var(--ly-gap);
1227
+ --ly-stack-gap: clamp(1rem, 2.5vw, 2rem);
1228
+ }
1229
+
1230
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-app-main {
1231
+ padding-block: clamp(2rem, 6vw, 4rem);
1232
+ }
1233
+
1234
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-container,
1235
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-wrapper {
1236
+ width: min(100% - var(--ly-page-padding-inline), var(--ly-container-max));
1237
+ }
1238
+
1239
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-section {
1240
+ padding-block: var(--ly-section-padding-block);
1241
+ }
1242
+
1243
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-grid--auto {
1244
+ grid-auto-rows: minmax(8rem, auto);
1245
+ }
1246
+
1247
+ @media (min-width: 54rem) {
1248
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-app-shell {
1249
+ grid-template-areas:
1250
+ "header header"
1251
+ "main sidebar";
1252
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, 17rem), 0.34fr);
1253
+ align-items: start;
1254
+ }
1255
+
1256
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-app-sidebar {
1257
+ display: block;
1258
+ position: sticky;
1259
+ top: clamp(1rem, 4vw, 3rem);
1260
+ max-height: calc(100svh - clamp(2rem, 8vw, 6rem));
1261
+ margin: clamp(3rem, 8vw, 6rem) clamp(1rem, 5vw, 3rem) clamp(2rem, 6vw, 4rem) 0;
1262
+ overflow: auto;
1263
+ }
1264
+
1265
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-sidebar-layout {
1266
+ grid-template-columns: minmax(0, 0.92fr) minmax(min(100%, 16rem), 1.08fr);
1267
+ }
1268
+
1269
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-split {
1270
+ grid-template-columns: minmax(0, 0.86fr) minmax(min(100%, 18rem), 1.14fr);
1271
+ }
1272
+
1273
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-panes--two {
1274
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, 17rem), 0.56fr);
1275
+ }
1276
+ }
1277
+
1278
+ @media (min-width: 80rem) {
1279
+ :where(.ly-root[data-layout="y2k"], .ly-root[layout-style="y2k"], .ly-root.ly-layout-y2k, .ly-root.ly-style-y2k) .ly-panes--three {
1280
+ grid-template-columns: minmax(min(100%, 16rem), 0.5fr) minmax(0, 1fr) minmax(min(100%, 16rem), 0.5fr);
1281
+ }
1282
+ }
1283
+ }
1284
+
1285
+ /* layout-style-retro-glass.css */
1286
+ /*
1287
+ Layout style: retro-glass.
1288
+ Top-framed content shell with a floating right utility rail. Visual identity
1289
+ remains owned by ui-style-kit-css.
1290
+ */
1291
+
1292
+ @layer ly.styles.retro_glass {
1293
+ :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) {
1294
+ --ly-container-max: 96rem;
1295
+ --ly-page-padding-inline: clamp(1rem, 4vw, 3rem);
1296
+ --ly-section-padding-block: clamp(3rem, 8vw, 6rem);
1297
+ --ly-sidebar-width: 18rem;
1298
+ --ly-grid-min: 15rem;
1299
+ --ly-gap: clamp(1rem, 2.6vw, 2rem);
1300
+ --ly-grid-gap: var(--ly-gap);
1301
+ --ly-stack-gap: clamp(1rem, 2vw, 1.75rem);
1302
+ }
1303
+
1304
+ :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-app-main {
1305
+ padding: clamp(1rem, 3vw, 2rem);
1306
+ }
1307
+
1308
+ :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-container,
1309
+ :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-wrapper {
1310
+ width: min(100%, var(--ly-container-max));
1311
+ }
1312
+
1313
+ :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-section {
1314
+ padding-block: clamp(2rem, 6vw, 5rem);
1315
+ }
1316
+
1317
+ :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-split {
1318
+ align-items: stretch;
1319
+ }
1320
+
1321
+ :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--auto {
1322
+ grid-auto-rows: minmax(9rem, auto);
1323
+ }
1324
+
1325
+ @media (min-width: 48rem) {
1326
+ :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-split {
1327
+ /* Keep glass feature panels stacked until the floating rail has enough horizontal room. */
1328
+ grid-template-columns: 1fr;
1329
+ }
1330
+
1331
+ :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-panes--two {
1332
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, 16rem), 0.62fr);
1333
+ }
1334
+ }
1335
+
1336
+ @media (min-width: 56rem) {
1337
+ :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-app-shell {
1338
+ grid-template-areas:
1339
+ "header header"
1340
+ "main sidebar";
1341
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, 16rem), var(--ly-sidebar-width));
1342
+ }
1343
+
1344
+ :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-app-sidebar {
1345
+ display: block;
1346
+ position: sticky;
1347
+ top: var(--ly-space-4);
1348
+ height: calc(100svh - (var(--ly-space-4) * 2));
1349
+ margin: var(--ly-space-4) var(--ly-space-4) var(--ly-space-4) 0;
1350
+ overflow: auto;
1351
+ }
1352
+
1353
+ :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-sidebar-layout {
1354
+ grid-template-columns: minmax(0, 1fr) minmax(min(100%, 16rem), 0.48fr);
1355
+ }
1356
+
1357
+ :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-split {
1358
+ grid-template-columns: minmax(0, 1.1fr) minmax(min(100%, 18rem), 0.9fr);
1359
+ }
1360
+ }
1361
+
1362
+ @media (min-width: 78rem) {
1363
+ :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-panes--three {
1364
+ grid-template-columns: minmax(min(100%, 15rem), 0.4fr) minmax(0, 1fr) minmax(min(100%, 18rem), 0.52fr);
1365
+ }
1366
+ }
1367
+ }