@press2ai/theme-therapy-soft 1.0.0 → 2.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@press2ai/theme-therapy-soft",
3
- "version": "1.0.0",
3
+ "version": "2.0.0",
4
4
  "description": "Warm sage/beige classless theme for therapy verticals. Crimson Text serif + Inter. Structurally compatible with @press2ai/engine CatalogTheme.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -0,0 +1,3 @@
1
+ export const BREAKOUT = `margin-inline: calc(50% - 50vw); padding-inline: var(--pad);`;
2
+ export const BREAKOUT_LIGHT = `${BREAKOUT} background: var(--gray-bg);`;
3
+ export const BREAKOUT_DARK = `${BREAKOUT} background: linear-gradient(170deg, var(--navy) 0%, #2a2a5c 100%); color: var(--white);`;
@@ -1,34 +1,18 @@
1
1
  export const css = `@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,300;0,9..144,400;0,9..144,600;1,9..144,400&family=DM+Sans:wght@400;500;600&display=swap');
2
-
3
2
  :root {
4
- --font-sans: 'DM Sans', system-ui, -apple-system, sans-serif;
3
+ --font-sans: 'DM Sans', system-ui, sans-serif;
5
4
  --font-display: 'Fraunces', Georgia, serif;
6
-
7
- --g1: 0.5rem; --g2: 0.75rem; --g3: 1rem; --g4: 1.5rem; --g5: 2.5rem; --g6: 4rem; --g7: 6rem;
8
- --t-xs: 0.8125rem; --t-sm: 0.9375rem; --t-md: 1.125rem; --t-lg: 1.5625rem; --t-xl: 2.125rem; --t-2xl: 2.5rem; --t-3xl: 3.5rem;
5
+ --g1: .5rem; --g2: .75rem; --g3: 1rem; --g4: 1.5rem; --g5: 2.5rem; --g6: 4rem; --g7: 6rem;
6
+ --t-xs: .8125rem; --t-sm: .9375rem; --t-md: 1.125rem; --t-lg: 1.5625rem; --t-xl: 2.125rem; --t-2xl: 2.5rem; --t-3xl: 3.5rem;
9
7
  --container: 1200px; --pad: var(--g5);
8
+ --section-gap: var(--g5); --block-gap: var(--g3); --card-gap: var(--g4);
10
9
  --measure: 38rem;
11
-
12
- --purple: #a293ff;
13
- --purple-soft: #efebff;
14
- --purple-dark: #8677e0;
15
- --gold: #f0be37;
16
- --gold-soft: #fff5da;
17
- --navy: #1d1d46;
18
- --navy-2: #3d3d66;
19
- --gray: #6e7878;
20
- --gray-light: #d9e0e1;
21
- --gray-bg: #f5f7f7;
22
- --teal-soft: #ecf6f5;
23
- --peach-soft: #fff6f1;
24
- --white: #ffffff;
25
-
26
- --bg: var(--white);
27
- --card: var(--white);
28
- --ink: var(--navy);
29
- --ink-2: var(--gray);
30
- --line: var(--gray-light);
31
-
10
+ --purple: #a293ff; --purple-soft: #efebff; --purple-dark: #8677e0;
11
+ --gold: #f0be37; --gold-soft: #fff5da;
12
+ --navy: #1d1d46; --navy-2: #3d3d66;
13
+ --gray: #6e7878; --gray-light: #d9e0e1; --gray-bg: #f5f7f7;
14
+ --white: #fff;
15
+ --bg: var(--white); --card: var(--white); --ink: var(--navy); --ink-2: var(--gray); --line: var(--gray-light);
32
16
  --r: 8px; --r-lg: 20px; --r-btn: 12px;
33
17
  --shadow: 0 1px 3px rgba(29,29,70,.06);
34
18
  --shadow-md: 0 4px 20px rgba(29,29,70,.08);
@@ -37,32 +21,16 @@ export const css = `@import url('https://fonts.googleapis.com/css2?family=Fraunc
37
21
  }
38
22
  *, *::before, *::after { box-sizing: border-box; margin: 0; }
39
23
  html { font-size: 16px; -webkit-font-smoothing: antialiased; scroll-behavior: smooth; }
40
- body {
41
- font-family: var(--font-sans); font-weight: 400;
42
- color: var(--ink); background: var(--bg); line-height: 1.5; overflow-x: clip;
43
- }
44
- h1, h2, h3, h4 {
45
- color: var(--ink); font-family: var(--font-display); font-weight: 400;
46
- line-height: 1.2; letter-spacing: -0.02em;
47
- }
48
- h1 { font-size: clamp(var(--t-2xl), 5.5vw, var(--t-3xl)); margin-bottom: var(--g4); }
49
- h2 { font-size: clamp(var(--t-lg), 3vw, var(--t-2xl)); margin-bottom: var(--g3); }
50
- h3 { font-size: var(--t-md); font-weight: 500; font-family: var(--font-sans); margin-bottom: var(--g2); }
51
- p { font-size: var(--t-sm); line-height: 1.6; color: var(--ink-2); margin-bottom: var(--g2); max-width: var(--measure); }
24
+ body { font-family: var(--font-sans); color: var(--ink); background: var(--bg); line-height: 1.5; overflow-x: clip; }
25
+ h1, h2, h3 { color: var(--ink); font-family: var(--font-display); font-weight: 400; line-height: 1.2; letter-spacing: -.02em; }
26
+ h1 { font-size: clamp(var(--t-2xl), 5.5vw, var(--t-3xl)); }
27
+ h2 { font-size: clamp(var(--t-lg), 3vw, var(--t-2xl)); }
28
+ h3 { font-size: var(--t-md); font-weight: 500; font-family: var(--font-sans); }
29
+ p { font-size: var(--t-sm); line-height: 1.6; color: var(--ink-2); max-width: var(--measure); }
52
30
  a { color: var(--purple); text-decoration: none; transition: color var(--ease); }
53
31
  a:hover { color: var(--navy); }
54
32
  small { font-size: var(--t-xs); color: var(--ink-2); }
55
33
  strong { color: var(--ink); font-weight: 600; }
56
- main {
57
- max-width: var(--container); margin-inline: auto;
58
- padding-inline: var(--pad); padding-top: 0; padding-bottom: 0;
59
- }
60
- main:not(:has(> section, > article, > div, > nav)) {
61
- padding-top: var(--g6); padding-bottom: var(--g6);
62
- }
63
- main > * + * { margin-top: var(--g6); }
64
- @media (max-width: 640px) {
65
- :root { --pad: var(--g3); }
66
- main { padding: 0 var(--pad) var(--g4); }
67
- main > * + * { margin-top: var(--g5); }
68
- }`;
34
+ main { max-width: var(--container); margin-inline: auto; padding-inline: var(--pad); }
35
+ main > * + * { margin-top: var(--section-gap); }
36
+ @media (max-width: 640px) { :root { --pad: var(--g3); --section-gap: var(--g4); --block-gap: var(--g2); --card-gap: var(--g3); } }`;
@@ -1,14 +1,7 @@
1
- export const css = `section:has(> article[itemscope]) {
2
- display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
3
- gap: var(--g4);
1
+ const R = 'main > section:has(> article[itemscope])';
2
+
3
+ export const css = `${R} {
4
+ display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: var(--card-gap);
4
5
  }
5
- section:has(> article[itemscope]) > h2 {
6
- grid-column: 1 / -1; text-align: center; margin-bottom: var(--g4);
7
- font-family: var(--font-display);
8
- }
9
- section:has(> article[itemscope]) > nav[aria-label] {
10
- grid-column: 1 / -1; margin-bottom: var(--g3); justify-content: center;
11
- }
12
- @media (max-width: 640px) {
13
- section:has(> article[itemscope]) { grid-template-columns: 1fr; }
14
- }`;
6
+ ${R} > h2 { grid-column: 1 / -1; text-align: center; margin-bottom: 0; }
7
+ @media (max-width: 640px) { ${R} { grid-template-columns: 1fr; } }`;
@@ -1,10 +1,9 @@
1
- export const css = `nav[aria-label] {
2
- display: flex; flex-wrap: wrap; gap: var(--g1); justify-content: center;
3
- }
4
- nav[aria-label] a {
1
+ const R = 'main > nav:has(> a)';
2
+
3
+ export const css = `${R} { display: flex; flex-wrap: wrap; gap: var(--g1); justify-content: center; }
4
+ ${R} > a {
5
5
  display: inline-flex; align-items: center; height: 40px; padding: 0 var(--g3);
6
6
  border-radius: var(--r-btn); font-size: var(--t-xs); font-weight: 500;
7
- background: var(--purple-soft); border: none; color: var(--navy);
8
- transition: all var(--ease);
7
+ background: var(--purple-soft); border: none; color: var(--navy); transition: all var(--ease);
9
8
  }
10
- nav[aria-label] a:hover { background: var(--purple); color: var(--white); }`;
9
+ ${R} > a:hover { background: var(--purple); color: var(--white); }`;
package/src/styles/cta.ts CHANGED
@@ -1,18 +1,16 @@
1
- export const css = `section[aria-label="CTA"] {
2
- margin-inline: calc(50% - 50vw); padding: var(--g6) var(--pad);
3
- background: linear-gradient(170deg, var(--navy) 0%, #2a2a5c 100%);
4
- text-align: center; color: var(--white);
1
+ import { BREAKOUT_DARK } from './_shared.ts';
2
+
3
+ const R = 'section[aria-label="CTA"]';
4
+
5
+ export const css = `${R} {
6
+ ${BREAKOUT_DARK}
7
+ padding-block: var(--g6); text-align: center;
5
8
  }
6
- section[aria-label="CTA"] > h2 {
7
- color: var(--white); max-width: 18ch; margin: 0 auto var(--g3);
8
- }
9
- section[aria-label="CTA"] > p {
10
- color: rgba(255,255,255,.7); font-size: var(--t-md); max-width: var(--measure);
11
- margin: 0 auto var(--g5);
12
- }
13
- section[aria-label="CTA"] > a {
9
+ ${R} > h2 { color: var(--white); max-width: 18ch; margin: 0 auto var(--block-gap); }
10
+ ${R} > p { color: rgba(255,255,255,.7); font-size: var(--t-md); max-width: var(--measure); margin: 0 auto var(--g5); }
11
+ ${R} > a {
14
12
  display: inline-flex; align-items: center; height: 56px; padding: 0 var(--g5);
15
13
  border-radius: var(--r-btn); background: var(--gold); color: var(--navy);
16
14
  font-weight: 600; font-size: var(--t-sm); transition: background var(--ease);
17
15
  }
18
- section[aria-label="CTA"] > a:hover { background: #e5b030; color: var(--navy); }`;
16
+ ${R} > a:hover { background: #e5b030; color: var(--navy); }`;
package/src/styles/faq.ts CHANGED
@@ -1,25 +1,15 @@
1
- export const css = `section[aria-label="FAQ"] {
2
- max-width: 800px; margin: var(--g6) auto;
3
- }
4
- section[aria-label="FAQ"] > h2 { text-align: center; margin-bottom: var(--g5); }
5
- section[aria-label="FAQ"] details {
6
- border-bottom: 1px solid var(--line); overflow: hidden;
7
- }
8
- section[aria-label="FAQ"] details > summary {
1
+ const R = 'main > section:has(> details)';
2
+
3
+ export const css = `${R} { max-width: 800px; margin-inline: auto; }
4
+ ${R} > h2 { text-align: center; margin-bottom: var(--g5); }
5
+ ${R} > details { border-bottom: 1px solid var(--line); }
6
+ ${R} > details > summary {
9
7
  display: flex; justify-content: space-between; align-items: center;
10
- padding: var(--g3) 0; cursor: pointer; list-style: none;
11
- font-family: var(--font-sans); font-size: var(--t-sm); font-weight: 500;
12
- color: var(--ink); transition: color var(--ease);
13
- }
14
- section[aria-label="FAQ"] details > summary::-webkit-details-marker { display: none; }
15
- section[aria-label="FAQ"] details > summary::after {
16
- content: '+'; font-size: var(--t-lg); font-weight: 300; color: var(--purple);
17
- transition: transform var(--ease);
18
- }
19
- section[aria-label="FAQ"] details[open] > summary::after {
20
- content: '−';
21
- }
22
- section[aria-label="FAQ"] details > summary:hover { color: var(--purple); }
23
- section[aria-label="FAQ"] details > div {
24
- padding: 0 0 var(--g3); font-size: var(--t-sm); line-height: 1.7; color: var(--ink-2);
25
- }`;
8
+ padding: var(--block-gap) 0; cursor: pointer; list-style: none;
9
+ font-size: var(--t-sm); font-weight: 500; color: var(--ink); transition: color var(--ease);
10
+ }
11
+ ${R} > details > summary::-webkit-details-marker { display: none; }
12
+ ${R} > details > summary::after { content: '+'; font-size: var(--t-lg); font-weight: 300; color: var(--purple); }
13
+ ${R} > details[open] > summary::after { content: '\\2212'; }
14
+ ${R} > details > summary:hover { color: var(--purple); }
15
+ ${R} > details > div { padding: 0 0 var(--block-gap); font-size: var(--t-sm); line-height: 1.7; color: var(--ink-2); }`;
@@ -1,54 +1,33 @@
1
- export const css = `hgroup {
1
+ import { BREAKOUT_DARK } from './_shared.ts';
2
+
3
+ const R = 'main > hgroup';
4
+
5
+ export const css = `${R} {
6
+ ${BREAKOUT_DARK}
2
7
  position: relative; text-align: center; isolation: isolate;
3
- padding: var(--g7) var(--pad) var(--g6);
4
- margin-inline: calc(50% - 50vw);
5
- background: linear-gradient(170deg, var(--navy) 0%, #2a2a5c 40%, #3d2d6b 100%);
6
- color: var(--white);
8
+ padding-block: var(--g7) var(--g6);
7
9
  }
8
- hgroup > * { position: relative; max-width: 860px; margin-inline: auto; }
9
- hgroup > p:first-child { display: inline-flex; margin: 0 auto var(--g4); padding: 0; }
10
- hgroup > p:first-child small {
10
+ ${R} > * { position: relative; max-width: 860px; margin-inline: auto; }
11
+ ${R} > p:first-child { display: inline-flex; margin: 0 auto var(--g4); }
12
+ ${R} > p:first-child small {
11
13
  display: inline-flex; align-items: center; gap: var(--g1);
12
14
  background: rgba(255,255,255,.1); backdrop-filter: blur(8px);
13
15
  padding: var(--g1) var(--g3); border: 1px solid rgba(255,255,255,.15);
14
- border-radius: 999px; font-size: var(--t-xs); font-weight: 500; color: var(--gold);
15
- letter-spacing: 0.04em;
16
+ border-radius: 999px; font-size: var(--t-xs); font-weight: 500; color: var(--gold); letter-spacing: .04em;
16
17
  }
17
- hgroup > p:first-child small::before {
18
+ ${R} > p:first-child small::before {
18
19
  content: ''; width: 6px; height: 6px; border-radius: 50%;
19
20
  background: var(--gold); box-shadow: 0 0 0 3px rgba(240,190,55,.3);
20
21
  }
21
- hgroup h1 {
22
- font-family: var(--font-display); font-weight: 300;
23
- max-width: 16ch; margin: 0 auto var(--g4); color: var(--white);
24
- letter-spacing: -0.02em; line-height: 1.1;
22
+ ${R} h1 { font-weight: 300; max-width: 16ch; margin: 0 auto var(--g4); color: var(--white); line-height: 1.1; }
23
+ ${R} > p:not(:first-child) {
24
+ font-size: var(--t-md); line-height: 1.6; color: rgba(255,255,255,.7);
25
+ max-width: var(--measure); margin: 0 auto var(--g5);
25
26
  }
26
- hgroup > p:not(:first-child) {
27
- font-size: var(--t-md); font-weight: 400; line-height: 1.6;
28
- color: rgba(255,255,255,.7); max-width: var(--measure);
29
- margin: 0 auto var(--g5);
30
- }
31
- hgroup > nav {
32
- display: flex; gap: var(--g2); flex-wrap: wrap; justify-content: center;
33
- margin-top: var(--g4);
34
- }
35
- hgroup > nav > a {
36
- display: inline-flex; align-items: center; height: 56px; padding: 0 var(--g5);
37
- border-radius: var(--r-btn); font-weight: 500; font-size: var(--t-sm);
38
- transition: all var(--ease);
39
- background: rgba(255,255,255,.08); color: var(--white); border: 1px solid rgba(255,255,255,.15);
40
- }
41
- hgroup > nav > a:first-child {
42
- background: var(--gold); color: var(--navy); border-color: transparent;
43
- font-weight: 600;
44
- }
45
- hgroup > nav > a:first-child:hover { background: #e5b030; }
46
- hgroup > nav > a:not(:first-child):hover { background: rgba(255,255,255,.15); }
47
27
  form[role="search"] {
48
28
  display: flex; max-width: 520px; height: 56px;
49
29
  margin: var(--g5) auto 0; background: var(--white);
50
- border-radius: var(--r-btn); overflow: hidden;
51
- box-shadow: 0 8px 32px rgba(0,0,0,.2);
30
+ border-radius: var(--r-btn); overflow: hidden; box-shadow: 0 8px 32px rgba(0,0,0,.2);
52
31
  }
53
32
  form[role="search"] input {
54
33
  flex: 1; min-width: 0; border: none; background: transparent; color: var(--ink);
@@ -62,6 +41,6 @@ form[role="search"] button {
62
41
  }
63
42
  form[role="search"] button:hover { background: var(--purple-dark); }
64
43
  @media (max-width: 640px) {
65
- hgroup { padding: var(--g6) var(--pad) var(--g5); }
66
- hgroup > nav > a, form[role="search"] { height: 48px; }
44
+ ${R} { padding-block: var(--g6) var(--g5); }
45
+ form[role="search"] { height: 48px; }
67
46
  }`;
@@ -1,11 +1,13 @@
1
- export const css = `main > nav p {
2
- display: flex; align-items: center; justify-content: center; gap: var(--g3);
1
+ const R = 'main > nav:has(> p)';
2
+
3
+ export const css = `${R} > p {
4
+ display: flex; align-items: center; justify-content: center; gap: var(--block-gap);
3
5
  font-size: var(--t-xs); color: var(--ink-2);
4
6
  }
5
- main > nav a {
7
+ ${R} a {
6
8
  height: 40px; display: inline-flex; align-items: center; padding: 0 var(--g3);
7
9
  border-radius: var(--r-btn); background: var(--purple-soft);
8
10
  font-size: var(--t-xs); font-weight: 500; color: var(--navy); border: none;
9
11
  transition: all var(--ease);
10
12
  }
11
- main > nav a:hover { background: var(--purple); color: var(--white); }`;
13
+ ${R} a:hover { background: var(--purple); color: var(--white); }`;
@@ -1,33 +1,27 @@
1
- export const css = `section[aria-label="Proces"] {
2
- margin-inline: calc(50% - 50vw); padding: var(--g6) var(--pad);
3
- background: var(--gray-bg);
1
+ import { BREAKOUT_LIGHT } from './_shared.ts';
2
+
3
+ const R = 'main > section:has(> ol)';
4
+
5
+ export const css = `${R} {
6
+ ${BREAKOUT_LIGHT}
7
+ padding-block: var(--g6);
4
8
  }
5
- section[aria-label="Proces"] > h2 {
6
- text-align: center; max-width: var(--container); margin: 0 auto var(--g2);
7
- }
8
- section[aria-label="Proces"] > p {
9
- text-align: center; max-width: var(--container); margin: 0 auto var(--g5);
10
- font-size: var(--t-md); color: var(--ink-2);
11
- }
12
- section[aria-label="Proces"] > ol {
9
+ ${R} > h2 { text-align: center; max-width: var(--container); margin: 0 auto var(--g2); }
10
+ ${R} > p { text-align: center; max-width: var(--container); margin: 0 auto var(--g5); font-size: var(--t-md); color: var(--ink-2); }
11
+ ${R} > ol {
13
12
  display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
14
- gap: var(--g4); max-width: var(--container); margin: 0 auto;
13
+ gap: var(--card-gap); max-width: var(--container); margin: 0 auto;
15
14
  list-style: none; padding: 0; counter-reset: step;
16
15
  }
17
- section[aria-label="Proces"] > ol > li {
16
+ ${R} > ol > li {
18
17
  counter-increment: step; text-align: center;
19
18
  background: var(--white); border-radius: var(--r-lg); padding: var(--g5) var(--g3);
20
19
  box-shadow: var(--shadow);
21
20
  }
22
- section[aria-label="Proces"] > ol > li::before {
21
+ ${R} > ol > li::before {
23
22
  content: counter(step, decimal-leading-zero);
24
23
  display: block; font-family: var(--font-display); font-size: var(--t-2xl);
25
24
  font-weight: 300; color: var(--purple); margin-bottom: var(--g3);
26
25
  }
27
- section[aria-label="Proces"] > ol > li > strong {
28
- display: block; font-family: var(--font-sans); font-size: var(--t-sm);
29
- font-weight: 600; margin-bottom: var(--g2);
30
- }
31
- section[aria-label="Proces"] > ol > li > span {
32
- font-size: var(--t-xs); color: var(--ink-2); line-height: 1.6;
33
- }`;
26
+ ${R} > ol > li > strong { display: block; font-size: var(--t-sm); font-weight: 600; margin-bottom: var(--g2); }
27
+ ${R} > ol > li > span { font-size: var(--t-xs); color: var(--ink-2); line-height: 1.6; }`;
@@ -1,49 +1,19 @@
1
- export const css = `main > article {
2
- max-width: 720px; margin-inline: auto;
3
- padding: var(--g6) 0;
4
- }
5
- main > article > header {
6
- padding-bottom: var(--g4); margin-bottom: var(--g4);
7
- border-bottom: 2px solid var(--purple);
8
- }
9
- main > article > header h1 {
10
- font-family: var(--font-display); font-weight: 400;
11
- font-size: clamp(var(--t-xl), 5vw, var(--t-2xl));
12
- letter-spacing: -0.02em; line-height: 1.15; margin-bottom: var(--g1);
13
- }
14
- main > article > header p {
15
- font-size: var(--t-md); color: var(--purple); margin: 0;
16
- font-family: var(--font-display); font-style: italic;
17
- }
18
- main > article address {
19
- font-style: normal; font-size: var(--t-sm); color: var(--ink-2);
20
- padding: var(--g2) 0; margin-bottom: var(--g4); border-bottom: 1px solid var(--line);
21
- }
22
- main > article section {
23
- margin: var(--g5) 0; padding-top: var(--g4); border-top: 1px solid var(--line);
24
- }
25
- main > article section h2 {
26
- font-family: var(--font-sans); font-size: var(--t-xs); font-weight: 600;
27
- text-transform: uppercase; letter-spacing: 0.1em; color: var(--purple);
28
- margin: 0 0 var(--g3);
29
- }
30
- main > article ul { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: var(--g1); }
31
- main > article ul li {
32
- font-size: var(--t-xs); font-weight: 500; color: var(--purple-dark);
33
- padding: var(--g1) var(--g2); background: var(--purple-soft); border-radius: 999px;
34
- }
35
- main > article dl {
36
- display: grid; grid-template-columns: 9rem 1fr; gap: var(--g2) var(--g3);
37
- }
38
- main > article dt {
39
- font-size: var(--t-xs); color: var(--ink-2); font-weight: 600;
40
- text-transform: uppercase; letter-spacing: 0.06em;
41
- }
42
- main > article dd { margin: 0; font-size: var(--t-sm); }
43
- main > article dd a { color: var(--purple); }
44
- main > article dd a:hover { color: var(--navy); }
1
+ const R = 'main > article[itemscope]';
2
+
3
+ export const css = `${R} { max-width: 720px; margin-inline: auto; }
4
+ ${R} > header { padding-bottom: var(--g4); margin-bottom: var(--g4); border-bottom: 2px solid var(--purple); }
5
+ ${R} > header h1 { font-weight: 400; font-size: clamp(var(--t-xl), 5vw, var(--t-2xl)); letter-spacing: -.02em; line-height: 1.15; margin-bottom: var(--g1); }
6
+ ${R} > header p { font-size: var(--t-md); color: var(--purple); margin: 0; font-family: var(--font-display); font-style: italic; }
7
+ ${R} address { font-style: normal; font-size: var(--t-sm); color: var(--ink-2); padding: var(--g2) 0; margin-bottom: var(--g4); border-bottom: 1px solid var(--line); }
8
+ ${R} section { margin: var(--g5) 0; padding-top: var(--g4); border-top: 1px solid var(--line); }
9
+ ${R} section h2 { font-family: var(--font-sans); font-size: var(--t-xs); font-weight: 600; text-transform: uppercase; letter-spacing: .1em; color: var(--purple); margin: 0 0 var(--block-gap); }
10
+ ${R} ul { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: var(--g1); }
11
+ ${R} ul li { font-size: var(--t-xs); font-weight: 500; color: var(--purple-dark); padding: var(--g1) var(--g2); background: var(--purple-soft); border-radius: 999px; }
12
+ ${R} dl { display: grid; grid-template-columns: 9rem 1fr; gap: var(--g2) var(--block-gap); }
13
+ ${R} dt { font-size: var(--t-xs); color: var(--ink-2); font-weight: 600; text-transform: uppercase; letter-spacing: .06em; }
14
+ ${R} dd { margin: 0; font-size: var(--t-sm); }
15
+ ${R} dd a { color: var(--purple); }
45
16
  @media (max-width: 640px) {
46
- main > article { padding: var(--g4) 0; }
47
- main > article dl { grid-template-columns: 1fr; gap: 2px 0; }
48
- main > article dt { margin-top: var(--g2); }
17
+ ${R} dl { grid-template-columns: 1fr; gap: 2px 0; }
18
+ ${R} dt { margin-top: var(--g2); }
49
19
  }`;
@@ -1,47 +1,29 @@
1
- const S = 'section:has(> article[itemscope]) > article[itemscope]';
2
- export const css = `${S} {
3
- background: var(--card); border: 1px solid var(--line);
4
- border-radius: var(--r-lg); padding: var(--g4);
5
- display: flex; flex-direction: column;
1
+ const R = 'main > section:has(> article[itemscope]) > article[itemscope]';
2
+
3
+ export const css = `${R} {
4
+ background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg);
5
+ padding: var(--g4); display: flex; flex-direction: column;
6
6
  box-shadow: var(--shadow); transition: all var(--ease);
7
7
  }
8
- ${S}:hover { box-shadow: var(--shadow-md); border-color: var(--purple); }
9
- ${S} > div[aria-hidden] {
8
+ ${R}:hover { box-shadow: var(--shadow-md); border-color: var(--purple); }
9
+ ${R} > div[aria-hidden] {
10
10
  width: 56px; height: 56px; border-radius: 50%;
11
11
  display: flex; align-items: center; justify-content: center;
12
12
  font-family: var(--font-display); font-size: var(--t-md); font-weight: 400;
13
- color: var(--white); background: var(--purple);
14
- margin-bottom: var(--g3);
15
- }
16
- ${S} header { margin-bottom: var(--g2); }
17
- ${S} h2 {
18
- font-family: var(--font-sans); font-size: var(--t-sm); font-weight: 600;
19
- line-height: 1.3; margin: 0 0 4px;
20
- }
21
- ${S} h2 a { color: var(--ink); }
22
- ${S} h2 a:hover { color: var(--purple); }
23
- ${S} header p { font-size: var(--t-xs); line-height: 1.5; color: var(--ink-2); margin: 0; }
24
- ${S} header p:has([itemprop="address"]) {
25
- display: inline-flex; align-items: center; gap: 6px; margin-top: 4px;
26
- }
27
- ${S} header p:has([itemprop="address"])::before {
28
- content: ''; width: 4px; height: 4px; border-radius: 50%; background: var(--purple);
29
- }
30
- ${S} [itemprop="description"] {
31
- font-size: var(--t-xs); line-height: 1.6; margin: var(--g2) 0 0; color: var(--ink-2);
32
- }
33
- ${S} ul {
34
- list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: 4px;
35
- margin: var(--g2) 0 0;
36
- }
37
- ${S} ul li {
38
- background: var(--purple-soft); color: var(--purple-dark);
39
- padding: 3px var(--g2); border-radius: 999px; font-size: 0.75rem; font-weight: 500;
40
- }
41
- ${S} > a:last-child {
42
- display: inline-flex; align-items: center; justify-content: center;
43
- margin-top: auto; padding-top: var(--g3);
44
- font-size: var(--t-xs); font-weight: 600; color: var(--purple);
45
- transition: color var(--ease);
46
- }
47
- ${S} > a:last-child:hover { color: var(--navy); }`;
13
+ color: var(--white); background: var(--purple); margin-bottom: var(--block-gap);
14
+ }
15
+ ${R} header { margin-bottom: var(--g2); }
16
+ ${R} h2 { font-family: var(--font-sans); font-size: var(--t-sm); font-weight: 600; line-height: 1.3; margin: 0 0 4px; }
17
+ ${R} h2 a { color: var(--ink); }
18
+ ${R} h2 a:hover { color: var(--purple); }
19
+ ${R} header p { font-size: var(--t-xs); color: var(--ink-2); margin: 0; }
20
+ ${R} header p:has([itemprop="address"]) { display: inline-flex; align-items: center; gap: 6px; margin-top: 4px; }
21
+ ${R} header p:has([itemprop="address"])::before { content: ''; width: 4px; height: 4px; border-radius: 50%; background: var(--purple); }
22
+ ${R} [itemprop="description"] { font-size: var(--t-xs); line-height: 1.6; margin: var(--g2) 0 0; color: var(--ink-2); }
23
+ ${R} ul { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: 4px; margin: var(--g2) 0 0; }
24
+ ${R} ul li { background: var(--purple-soft); color: var(--purple-dark); padding: 3px var(--g2); border-radius: 999px; font-size: .75rem; font-weight: 500; }
25
+ ${R} > a:last-child {
26
+ display: inline-flex; margin-top: auto; padding-top: var(--block-gap);
27
+ font-size: var(--t-xs); font-weight: 600; color: var(--purple); transition: color var(--ease);
28
+ }
29
+ ${R} > a:last-child:hover { color: var(--navy); }`;
@@ -1,29 +1,22 @@
1
- export const css = `section[aria-label="Statystyki"] {
2
- margin-inline: calc(50% - 50vw); padding: var(--g5) var(--pad);
3
- background: var(--gray-bg); border-bottom: 1px solid var(--line);
1
+ import { BREAKOUT_LIGHT } from './_shared.ts';
2
+
3
+ const R = 'main > section:has(> dl)';
4
+
5
+ export const css = `${R} {
6
+ ${BREAKOUT_LIGHT}
7
+ padding-block: var(--g5); border-bottom: 1px solid var(--line);
4
8
  }
5
- section[aria-label="Statystyki"] > p {
6
- text-align: center; font-family: var(--font-display); font-style: italic;
7
- font-size: var(--t-md); color: var(--ink); margin: 0 auto var(--g4); max-width: var(--measure);
8
- }
9
- section[aria-label="Statystyki"] > dl {
9
+ ${R} > dl {
10
10
  display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
11
- gap: var(--g4); max-width: 800px; margin: 0 auto; padding: 0;
11
+ gap: var(--card-gap); max-width: 800px; margin: 0 auto;
12
12
  }
13
- section[aria-label="Statystyki"] > dl div { text-align: center; }
14
- section[aria-label="Statystyki"] > dl div > span:has(> svg) {
13
+ ${R} > dl div { text-align: center; }
14
+ ${R} > dl div > span:has(> svg) {
15
15
  display: flex; align-items: center; justify-content: center;
16
16
  width: 48px; height: 48px; margin: 0 auto var(--g2);
17
17
  background: var(--purple-soft); border-radius: 50%; color: var(--purple);
18
18
  }
19
- section[aria-label="Statystyki"] > dl div > span:has(> svg) > svg { width: 22px; height: 22px; }
20
- section[aria-label="Statystyki"] > dl dt {
21
- font-family: var(--font-display); font-size: var(--t-2xl); font-weight: 300;
22
- line-height: 1.1; color: var(--navy);
23
- }
24
- section[aria-label="Statystyki"] > dl dd {
25
- margin: var(--g1) 0 0; font-size: var(--t-xs); color: var(--ink-2); font-weight: 500;
26
- }
27
- @media (max-width: 640px) {
28
- section[aria-label="Statystyki"] > dl { grid-template-columns: repeat(2, 1fr); }
29
- }`;
19
+ ${R} > dl div > span:has(> svg) > svg { width: 22px; height: 22px; }
20
+ ${R} > dl dt { font-family: var(--font-display); font-size: var(--t-2xl); font-weight: 300; line-height: 1.1; color: var(--navy); }
21
+ ${R} > dl dd { margin: var(--g1) 0 0; font-size: var(--t-xs); color: var(--ink-2); font-weight: 500; }
22
+ @media (max-width: 640px) { ${R} > dl { grid-template-columns: repeat(2, 1fr); } }`;