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,47 +0,0 @@
1
- @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
-
3
- /* Layout style: mondrian. Unequal zones and spanning blocks create a strict mosaic. */
4
-
5
- @layer ly.personalities.mondrian {
6
- :where(.ly-root[data-ly-layout="mondrian"]) {
7
- --ly-recipe-rail: 13rem;
8
- --ly-recipe-aside: 18rem;
9
- --ly-grid-columns: 10;
10
- --ly-grid-min: 11rem;
11
- --ly-personality-wrapper-max: 112rem;
12
-
13
- container-name: ly-personality;
14
- container-type: inline-size;
15
- min-inline-size: 0;
16
- }
17
-
18
- @container (min-width: 48rem) {
19
- :where(.ly-root[data-ly-layout="mondrian"])
20
- :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
21
- grid-template-columns: minmax(min(100%, 13rem), 0.3fr) minmax(0, 1fr);
22
- }
23
- }
24
-
25
- @container (min-width: 52rem) {
26
- :where(.ly-root[data-ly-layout="mondrian"]) .ly-grid > :nth-child(5n + 1) {
27
- grid-column: span 2;
28
- grid-row: span 2;
29
- }
30
- }
31
-
32
- /* The three-track shell waits for a locally feasible allocation. */
33
- @container (min-width: 64rem) {
34
- :where(.ly-root[data-ly-layout="mondrian"])
35
- :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
36
- grid-template-areas:
37
- "sidebar header header"
38
- "sidebar main aside"
39
- "footer footer aside";
40
- grid-template-rows: auto minmax(0, 1fr) auto;
41
- grid-template-columns:
42
- minmax(min(100%, 13rem), 0.22fr)
43
- minmax(0, 1.45fr)
44
- minmax(min(100%, 18rem), 0.55fr);
45
- }
46
- }
47
- }
@@ -1,46 +0,0 @@
1
- @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
-
3
- /* Layout style: neumorphism. A calm right rail preserves a compact workspace. */
4
-
5
- @layer ly.personalities.neumorphism {
6
- :where(.ly-root[data-ly-layout="neumorphism"]) {
7
- --ly-recipe-rail: 17rem;
8
- --ly-recipe-aside: 19rem;
9
- --ly-grid-columns: 4;
10
- --ly-grid-min: 17rem;
11
- --ly-personality-wrapper-max: 84rem;
12
-
13
- container-name: ly-personality;
14
- container-type: inline-size;
15
- min-inline-size: 0;
16
- }
17
-
18
- @container (min-width: 48rem) {
19
- :where(.ly-root[data-ly-layout="neumorphism"])
20
- :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
21
- grid-template-columns: minmax(min(100%, 17rem), 0.3fr) minmax(0, 1fr);
22
- }
23
- }
24
-
25
- @container (min-width: 52rem) {
26
- :where(.ly-root[data-ly-layout="neumorphism"])
27
- :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
28
- grid-template-areas:
29
- "header sidebar"
30
- "main sidebar"
31
- "aside sidebar"
32
- "footer sidebar";
33
- grid-template-rows: auto minmax(0, 1fr) auto auto;
34
- grid-template-columns: minmax(0, 1fr) minmax(min(100%, 17rem), 0.3fr);
35
- }
36
-
37
- :where(.ly-root[data-ly-layout="neumorphism"]) .ly-grid > :nth-child(4n + 1) {
38
- grid-column: span 2;
39
- }
40
-
41
- :where(.ly-root[data-ly-layout="neumorphism"])
42
- :where(.ly-list-detail, [data-ly-recipe="list-detail"]) {
43
- grid-template-columns: minmax(0, 0.58fr) minmax(min(100%, 19rem), 0.42fr);
44
- }
45
- }
46
- }
@@ -1,47 +0,0 @@
1
- @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
-
3
- /* Layout style: retro-glass. A stepped right rail floats beside a wide stage. */
4
-
5
- @layer ly.personalities.retro_glass {
6
- :where(.ly-root[data-ly-layout="retro-glass"]) {
7
- --ly-recipe-rail: 18rem;
8
- --ly-recipe-aside: 20rem;
9
- --ly-grid-columns: 8;
10
- --ly-grid-min: 15rem;
11
- --ly-personality-wrapper-max: 104rem;
12
-
13
- container-name: ly-personality;
14
- container-type: inline-size;
15
- min-inline-size: 0;
16
- }
17
-
18
- @container (min-width: 48rem) {
19
- :where(.ly-root[data-ly-layout="retro-glass"])
20
- :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
21
- grid-template-columns: minmax(min(100%, 18rem), 0.3fr) minmax(0, 1fr);
22
- }
23
- }
24
-
25
- @container (min-width: 56rem) {
26
- :where(.ly-root[data-ly-layout="retro-glass"]) .ly-grid > :nth-child(4n) {
27
- grid-column: span 2;
28
- grid-row: span 2;
29
- }
30
- }
31
-
32
- /* The three-track shell waits for a locally feasible allocation. */
33
- @container (min-width: 64rem) {
34
- :where(.ly-root[data-ly-layout="retro-glass"])
35
- :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
36
- grid-template-areas:
37
- "header header sidebar"
38
- "main main sidebar"
39
- "aside footer footer";
40
- grid-template-rows: auto minmax(0, 1fr) auto;
41
- grid-template-columns:
42
- minmax(0, 1.25fr)
43
- minmax(0, 0.75fr)
44
- minmax(min(100%, 18rem), 0.32fr);
45
- }
46
- }
47
- }
@@ -1,39 +0,0 @@
1
- @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
-
3
- /* Layout style: retrofuturism. Twin rails frame a focused central work zone. */
4
-
5
- @layer ly.personalities.retrofuturism {
6
- :where(.ly-root[data-ly-layout="retrofuturism"]) {
7
- --ly-recipe-rail: 14rem;
8
- --ly-recipe-aside: 17rem;
9
- --ly-grid-columns: 6;
10
- --ly-grid-min: 14rem;
11
- --ly-personality-wrapper-max: 106rem;
12
-
13
- container-name: ly-personality;
14
- container-type: inline-size;
15
- min-inline-size: 0;
16
- }
17
-
18
- @container (min-width: 48rem) {
19
- :where(.ly-root[data-ly-layout="retrofuturism"]) .ly-grid > :nth-child(6n + 1) {
20
- grid-column: span 2;
21
- }
22
- }
23
-
24
- /* The three-track shell waits for a locally feasible allocation. */
25
- @container (min-width: 64rem) {
26
- :where(.ly-root[data-ly-layout="retrofuturism"])
27
- :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
28
- grid-template-areas:
29
- "sidebar header aside"
30
- "sidebar main aside"
31
- "sidebar footer aside";
32
- grid-template-rows: auto minmax(0, 1fr) auto;
33
- grid-template-columns:
34
- minmax(min(100%, 14rem), 0.24fr)
35
- minmax(0, 1fr)
36
- minmax(min(100%, 17rem), 0.3fr);
37
- }
38
- }
39
- }
@@ -1,41 +0,0 @@
1
- @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
-
3
- /* Layout style: split-screen. Equal tracks keep two primary experiences in balance. */
4
-
5
- @layer ly.personalities.split_screen {
6
- :where(.ly-root[data-ly-layout="split-screen"]) {
7
- --ly-grid-columns: 2;
8
- --ly-grid-min: 20rem;
9
- --ly-personality-wrapper-max: 100%;
10
- --ly-split-primary: 1fr;
11
- --ly-split-secondary: 1fr;
12
-
13
- container-name: ly-personality;
14
- container-type: inline-size;
15
- min-inline-size: 0;
16
- }
17
-
18
- @container (min-width: 48rem) {
19
- :where(.ly-root[data-ly-layout="split-screen"])
20
- :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
21
- grid-template-areas:
22
- "header header"
23
- "main sidebar"
24
- "aside sidebar"
25
- "footer footer";
26
- grid-template-rows: auto minmax(0, 1fr) auto auto;
27
- grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
28
- }
29
-
30
- :where(.ly-root[data-ly-layout="split-screen"])
31
- :where(
32
- .ly-split,
33
- .ly-split-hero,
34
- [data-ly-recipe="split-hero"],
35
- .ly-list-detail,
36
- [data-ly-recipe="list-detail"]
37
- ) {
38
- grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
39
- }
40
- }
41
- }
@@ -1,48 +0,0 @@
1
- @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
-
3
- /* Layout style: synthwave. A cinematic center stage sits between support zones. */
4
-
5
- @layer ly.personalities.synthwave {
6
- :where(.ly-root[data-ly-layout="synthwave"]) {
7
- --ly-recipe-rail: 16rem;
8
- --ly-recipe-aside: 20rem;
9
- --ly-grid-columns: 12;
10
- --ly-grid-min: 14rem;
11
- --ly-reel-item-max: 34rem;
12
- --ly-personality-wrapper-max: 112rem;
13
-
14
- container-name: ly-personality;
15
- container-type: inline-size;
16
- min-inline-size: 0;
17
- }
18
-
19
- @container (min-width: 48rem) {
20
- :where(.ly-root[data-ly-layout="synthwave"])
21
- :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
22
- grid-template-columns: minmax(min(100%, 16rem), 0.3fr) minmax(0, 1fr);
23
- }
24
- }
25
-
26
- @container (min-width: 64rem) {
27
- :where(.ly-root[data-ly-layout="synthwave"])
28
- :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
29
- grid-template-areas:
30
- "header header header"
31
- "sidebar main aside"
32
- "footer footer footer";
33
- grid-template-rows: auto minmax(0, 1fr) auto;
34
- grid-template-columns:
35
- minmax(min(100%, 16rem), 0.28fr)
36
- minmax(0, 1fr)
37
- minmax(min(100%, 20rem), 0.34fr);
38
- }
39
-
40
- :where(.ly-root[data-ly-layout="synthwave"]) .ly-grid > :nth-child(4n + 1) {
41
- grid-column: span 3;
42
- }
43
-
44
- :where(.ly-root[data-ly-layout="synthwave"]) .ly-reel {
45
- grid-auto-columns: minmax(min(100%, 20rem), var(--ly-reel-item-max));
46
- }
47
- }
48
- }
@@ -1,39 +0,0 @@
1
- @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
-
3
- /* Layout style: tactile. A compact left rail leaves a broad, steady work lane. */
4
-
5
- @layer ly.personalities.tactile {
6
- :where(.ly-root[data-ly-layout="tactile"]) {
7
- --ly-recipe-rail: 17rem;
8
- --ly-recipe-aside: 20rem;
9
- --ly-grid-columns: 5;
10
- --ly-grid-min: 15rem;
11
- --ly-personality-wrapper-max: 82rem;
12
-
13
- container-name: ly-personality;
14
- container-type: inline-size;
15
- min-inline-size: 0;
16
- }
17
-
18
- @container (min-width: 48rem) {
19
- :where(.ly-root[data-ly-layout="tactile"])
20
- :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
21
- grid-template-areas:
22
- "sidebar header"
23
- "sidebar main"
24
- "sidebar aside"
25
- "sidebar footer";
26
- grid-template-rows: auto minmax(0, 1fr) auto auto;
27
- grid-template-columns: minmax(min(100%, 17rem), 0.28fr) minmax(0, 1fr);
28
- }
29
-
30
- :where(.ly-root[data-ly-layout="tactile"]) .ly-grid > :nth-child(5n + 2) {
31
- grid-column: span 2;
32
- }
33
-
34
- :where(.ly-root[data-ly-layout="tactile"])
35
- :where(.ly-list-detail, [data-ly-recipe="list-detail"]) {
36
- grid-template-columns: minmax(min(100%, 20rem), 0.42fr) minmax(0, 0.58fr);
37
- }
38
- }
39
- }
@@ -1,39 +0,0 @@
1
- @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
-
3
- /* Layout style: y2k. A tall right rail frames a reversed supporting workspace. */
4
-
5
- @layer ly.personalities.y2k {
6
- :where(.ly-root[data-ly-layout="y2k"]) {
7
- --ly-recipe-rail: 16rem;
8
- --ly-recipe-aside: 18rem;
9
- --ly-grid-columns: 5;
10
- --ly-grid-min: 13rem;
11
- --ly-personality-wrapper-max: 90rem;
12
-
13
- container-name: ly-personality;
14
- container-type: inline-size;
15
- min-inline-size: 0;
16
- }
17
-
18
- @container (min-width: 48rem) {
19
- :where(.ly-root[data-ly-layout="y2k"]) .ly-grid > :nth-child(5n + 1) {
20
- grid-column: span 3;
21
- }
22
- }
23
-
24
- /* The three-track shell waits for a locally feasible allocation. */
25
- @container (min-width: 64rem) {
26
- :where(.ly-root[data-ly-layout="y2k"])
27
- :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
28
- grid-template-areas:
29
- "header header sidebar"
30
- "aside main sidebar"
31
- "footer footer sidebar";
32
- grid-template-rows: auto minmax(0, 1fr) auto;
33
- grid-template-columns:
34
- minmax(min(100%, 18rem), 0.34fr)
35
- minmax(0, 1fr)
36
- minmax(min(100%, 16rem), 0.28fr);
37
- }
38
- }
39
- }
@@ -1,52 +0,0 @@
1
- @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
-
3
- /* Layout style: z-pattern. A right rail closes a diagonal reading progression. */
4
-
5
- @layer ly.personalities.z_pattern {
6
- :where(.ly-root[data-ly-layout="z-pattern"]) {
7
- --ly-recipe-rail: 17rem;
8
- --ly-recipe-aside: 19rem;
9
- --ly-grid-columns: 8;
10
- --ly-grid-min: 14rem;
11
- --ly-personality-wrapper-max: 108rem;
12
-
13
- container-name: ly-personality;
14
- container-type: inline-size;
15
- min-inline-size: 0;
16
- }
17
-
18
- @container (min-width: 48rem) {
19
- :where(.ly-root[data-ly-layout="z-pattern"])
20
- :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
21
- grid-template-columns: minmax(min(100%, 17rem), 0.3fr) minmax(0, 1fr);
22
- }
23
- }
24
-
25
- @container (min-width: 60rem) {
26
- :where(.ly-root[data-ly-layout="z-pattern"]) .ly-grid > :nth-child(4n + 2) {
27
- grid-column: span 2;
28
- align-self: end;
29
- }
30
-
31
- :where(.ly-root[data-ly-layout="z-pattern"])
32
- :where(.ly-split-hero, [data-ly-recipe="split-hero"]) {
33
- grid-template-columns: minmax(0, 1.5fr) minmax(0, 0.5fr);
34
- }
35
- }
36
-
37
- /* The three-track shell waits for a locally feasible allocation. */
38
- @container (min-width: 64rem) {
39
- :where(.ly-root[data-ly-layout="z-pattern"])
40
- :where(.ly-app-shell, [data-ly-recipe="app-shell"]) {
41
- grid-template-areas:
42
- "header header sidebar"
43
- "main aside sidebar"
44
- "footer aside sidebar";
45
- grid-template-rows: auto minmax(0, 1fr) auto;
46
- grid-template-columns:
47
- minmax(0, 1.45fr)
48
- minmax(min(100%, 19rem), 0.55fr)
49
- minmax(min(100%, 17rem), 0.3fr);
50
- }
51
- }
52
- }
@@ -1,18 +0,0 @@
1
- @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
-
3
- @import url("./personalities/minimal-saas.css");
4
- @import url("./personalities/bento.css");
5
- @import url("./personalities/maximalist.css");
6
- @import url("./personalities/bauhaus.css");
7
- @import url("./personalities/tactile.css");
8
- @import url("./personalities/neumorphism.css");
9
- @import url("./personalities/retrofuturism.css");
10
- @import url("./personalities/brutalism.css");
11
- @import url("./personalities/cyberpunk.css");
12
- @import url("./personalities/y2k.css");
13
- @import url("./personalities/retro-glass.css");
14
- @import url("./personalities/f-pattern.css");
15
- @import url("./personalities/z-pattern.css");
16
- @import url("./personalities/split-screen.css");
17
- @import url("./personalities/mondrian.css");
18
- @import url("./personalities/synthwave.css");
@@ -1,219 +0,0 @@
1
- @layer ly.reset, ly.tokens, ly.wrappers, ly.primitives, ly.recipes, ly.utilities, ly.personalities, ly.integrations, ly.legacy;
2
-
3
- /* Reusable composition primitives own flow and sizing only. */
4
-
5
- @layer ly.primitives {
6
- .ly-page {
7
- min-block-size: 100svh;
8
- }
9
-
10
- .ly-header,
11
- .ly-footer,
12
- .ly-main,
13
- .ly-section,
14
- .ly-surface {
15
- min-inline-size: 0;
16
- min-block-size: 0;
17
- }
18
-
19
- .ly-header {
20
- min-block-size: var(--ly-header-height);
21
- }
22
-
23
- .ly-header--sticky {
24
- position: sticky;
25
- inset-block-start: 0;
26
- z-index: var(--ly-z-header);
27
- }
28
-
29
- .ly-section {
30
- padding-block: var(--ly-section-padding-block);
31
- }
32
-
33
- .ly-section--compact {
34
- --ly-section-padding-block: var(--ly-space-7);
35
- }
36
-
37
- .ly-section--flush {
38
- --ly-section-padding-block: 0;
39
- }
40
-
41
- .ly-readable {
42
- max-inline-size: var(--ly-wrapper-prose);
43
- }
44
-
45
- .ly-stack {
46
- display: flex;
47
- flex-direction: column;
48
- gap: var(--ly-stack-gap);
49
- }
50
-
51
- .ly-cluster {
52
- display: flex;
53
- flex-wrap: wrap;
54
- align-items: center;
55
- gap: var(--ly-cluster-gap);
56
- }
57
-
58
- .ly-center {
59
- inline-size: min(100%, var(--ly-center-max, var(--ly-wrapper-content)));
60
- margin-inline: auto;
61
- }
62
-
63
- .ly-cover {
64
- display: flex;
65
- flex-direction: column;
66
- min-block-size: var(--ly-cover-min);
67
- padding-block: var(--ly-cover-padding, var(--ly-space-5));
68
- }
69
-
70
- .ly-cover > :where(.ly-cover__center, [data-ly-cover-center]) {
71
- margin-block: auto;
72
- }
73
-
74
- .ly-switcher {
75
- display: flex;
76
- flex-wrap: wrap;
77
- gap: var(--ly-gap);
78
- }
79
-
80
- .ly-switcher > * {
81
- flex-basis: calc((var(--ly-switcher-threshold) - 100%) * 999);
82
- flex-grow: 1;
83
- min-inline-size: 0;
84
- }
85
-
86
- .ly-sidebar {
87
- display: flex;
88
- flex-wrap: wrap;
89
- gap: var(--ly-gap);
90
- }
91
-
92
- .ly-sidebar > :where(.ly-sidebar__side, [data-ly-sidebar="side"]) {
93
- flex-basis: var(--ly-sidebar-size);
94
- flex-grow: 1;
95
- }
96
-
97
- .ly-sidebar > :where(.ly-sidebar__content, [data-ly-sidebar="content"]) {
98
- flex-basis: 0;
99
- flex-grow: 999;
100
- min-inline-size: min(100%, var(--ly-sidebar-content-min));
101
- }
102
-
103
- .ly-grid {
104
- display: grid;
105
- grid-template-columns: repeat(var(--ly-grid-columns), minmax(0, 1fr));
106
- gap: var(--ly-grid-gap);
107
- }
108
-
109
- .ly-grid--auto {
110
- grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ly-grid-min)), 1fr));
111
- }
112
-
113
- .ly-grid > *,
114
- .ly-split > *,
115
- .ly-panes > *,
116
- .ly-media > * {
117
- min-inline-size: 0;
118
- }
119
-
120
- .ly-split {
121
- display: grid;
122
- grid-template-columns: minmax(0, 1fr);
123
- gap: var(--ly-gap);
124
- align-items: var(--ly-split-align, center);
125
- }
126
-
127
- .ly-panes {
128
- display: grid;
129
- grid-template-columns: minmax(0, 1fr);
130
- gap: var(--ly-gap);
131
- }
132
-
133
- .ly-media {
134
- display: grid;
135
- grid-template-areas:
136
- "media"
137
- "content"
138
- "actions";
139
- grid-template-columns: minmax(0, 1fr);
140
- gap: var(--ly-gap);
141
- align-items: var(--ly-media-align, start);
142
- }
143
-
144
- .ly-media > :where(.ly-media__asset, [data-ly-media="asset"]) {
145
- grid-area: media;
146
- }
147
-
148
- .ly-media > :where(.ly-media__content, [data-ly-media="content"]) {
149
- grid-area: content;
150
- }
151
-
152
- .ly-media > :where(.ly-media__actions, [data-ly-media="actions"]) {
153
- grid-area: actions;
154
- }
155
-
156
- .ly-reel {
157
- display: grid;
158
- grid-auto-flow: column;
159
- grid-auto-columns: minmax(min(100%, var(--ly-reel-item-min)), var(--ly-reel-item-max));
160
- gap: var(--ly-grid-gap);
161
- overflow-x: auto;
162
- overflow-inline: auto;
163
- overscroll-behavior-inline: contain;
164
- scroll-snap-type: inline proximity;
165
- }
166
-
167
- .ly-reel > * {
168
- min-inline-size: 0;
169
- scroll-snap-align: start;
170
- }
171
-
172
- .ly-frame {
173
- aspect-ratio: var(--ly-frame-ratio);
174
- overflow: hidden;
175
- }
176
-
177
- .ly-frame > * {
178
- inline-size: 100%;
179
- block-size: 100%;
180
- object-fit: cover;
181
- }
182
-
183
- .ly-scroll {
184
- min-block-size: 0;
185
- max-block-size: var(--ly-scroll-max);
186
- overflow: auto;
187
- overscroll-behavior: contain;
188
- }
189
-
190
- /* Unsupported container-query browsers retain this safe DOM-order stack. */
191
- }
192
-
193
- @layer ly.primitives {
194
- @container (min-width: 48rem) {
195
- .ly-split {
196
- grid-template-columns: minmax(0, var(--ly-split-primary, 1fr)) minmax(0, var(--ly-split-secondary, 1fr));
197
- }
198
-
199
- .ly-panes--2 {
200
- grid-template-columns: minmax(0, 1fr) minmax(min(100%, var(--ly-pane-size)), 0.7fr);
201
- }
202
-
203
- .ly-media {
204
- grid-template-areas:
205
- "media content"
206
- "media actions";
207
- grid-template-columns: minmax(min(100%, var(--ly-media-size)), auto) minmax(0, 1fr);
208
- }
209
- }
210
-
211
- @container (min-width: 64rem) {
212
- .ly-panes--3 {
213
- grid-template-columns:
214
- minmax(min(100%, var(--ly-pane-rail, 14rem)), 0.35fr)
215
- minmax(0, 1fr)
216
- minmax(min(100%, var(--ly-pane-rail, 14rem)), 0.35fr);
217
- }
218
- }
219
- }