@press2ai/theme-specialist-glossy 0.13.1 → 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-specialist-glossy",
3
- "version": "0.13.1",
3
+ "version": "2.0.0",
4
4
  "description": "Classless, AI-first glossy theme. Framework-agnostic templates (Hono, Astro, raw HTML). Semantic HTML, Schema.org microdata, JSON-LD — built for LLM crawlers.",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/src/ai.ts CHANGED
@@ -59,7 +59,7 @@ export function getAiManifest(opts: {
59
59
 
60
60
  powered_by: {
61
61
  name: '@press2ai/theme-specialist-glossy',
62
- version: '0.13.1',
62
+ version: '2.0.0',
63
63
  homepage: 'https://www.npmjs.com/package/@press2ai/theme-specialist-glossy',
64
64
  },
65
65
 
@@ -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(--bg);`;
3
+ export const BREAKOUT_DARK = `${BREAKOUT} background: var(--ink); color: var(--white);`;
@@ -1,19 +1,16 @@
1
1
  export const css = `@import url('https://rsms.me/inter/inter.css');
2
-
3
2
  :root {
4
3
  --font: 'Inter', system-ui, sans-serif;
5
- --g1: 0.5rem; --g2: 0.8125rem; --g3: 1.3125rem; --g4: 2.125rem; --g5: 3.4375rem; --g6: 5.5625rem; --g7: 9rem;
6
- --t-xs: 0.8rem; --t-sm: 1rem; --t-md: 1.25rem; --t-lg: 1.563rem; --t-xl: 1.953rem; --t-2xl: 2.441rem;
4
+ --g1: .5rem; --g2: .8125rem; --g3: 1.3125rem; --g4: 2.125rem; --g5: 3.4375rem; --g6: 5.5625rem;
5
+ --t-xs: .8rem; --t-sm: 1rem; --t-md: 1.25rem; --t-lg: 1.563rem; --t-xl: 1.953rem; --t-2xl: 2.441rem;
7
6
  --container: 1080px; --pad: var(--g4);
8
- --w-6: 495px; --w-8: 667px; --w-10: 839px; --measure: 38rem;
9
- --white: #ffffff; --bg: #f8f9fb; --card: #ffffff;
7
+ --section-gap: var(--g4); --block-gap: var(--g3); --card-gap: var(--g3);
8
+ --measure: 38rem;
9
+ --white: #fff; --bg: #f8f9fb; --card: #fff;
10
10
  --ink: #1a1a2e; --ink-2: #4a4a68; --ink-3: #8b8ba3;
11
11
  --line: #e8e8ef; --line-h: #d0d0de;
12
12
  --violet: #7c5cfc; --violet-s: #f3f0ff; --violet-glow: rgba(124,92,252,.18);
13
13
  --teal: #0d9488; --teal-s: #ecfdf5;
14
- --rose: #e11d63; --rose-s: #fff1f5;
15
- --amber: #d97706; --amber-s: #fffbeb;
16
- --sky: #0284c7; --sky-s: #f0f9ff;
17
14
  --r: 16px; --r-lg: 20px; --pill: 999px;
18
15
  --shadow: 0 1px 3px rgba(0,0,0,.04);
19
16
  --shadow-md: 0 4px 16px rgba(0,0,0,.06), 0 1px 3px rgba(0,0,0,.04);
@@ -22,28 +19,16 @@ export const css = `@import url('https://rsms.me/inter/inter.css');
22
19
  }
23
20
  *, *::before, *::after { box-sizing: border-box; margin: 0; }
24
21
  html { font-size: 16px; -webkit-font-smoothing: antialiased; scroll-behavior: smooth; }
25
- body {
26
- font-family: var(--font); font-feature-settings: 'cv11', 'ss01';
27
- color: var(--ink); background: var(--bg); line-height: 1.6; overflow-x: clip;
28
- }
29
- h1, h2, h3 { color: var(--ink); letter-spacing: -0.02em; }
30
- h1 { font-size: clamp(var(--t-xl), 5vw, var(--t-2xl)); font-weight: 800; line-height: 1.1; letter-spacing: -0.035em; margin-bottom: var(--g3); }
31
- h2 { font-size: var(--t-lg); font-weight: 700; line-height: 1.25; margin-bottom: var(--g2); }
32
- h3 { font-size: var(--t-md); font-weight: 600; line-height: 1.35; margin-bottom: var(--g2); }
33
- p { font-size: var(--t-sm); line-height: 1.6; color: var(--ink-2); margin-bottom: var(--g2); max-width: var(--measure); }
22
+ body { font-family: var(--font); font-feature-settings: 'cv11', 'ss01'; color: var(--ink); background: var(--bg); line-height: 1.6; overflow-x: clip; }
23
+ h1, h2, h3 { color: var(--ink); letter-spacing: -.02em; }
24
+ h1 { font-size: clamp(var(--t-xl), 5vw, var(--t-2xl)); font-weight: 800; line-height: 1.1; letter-spacing: -.035em; }
25
+ h2 { font-size: var(--t-lg); font-weight: 700; line-height: 1.25; }
26
+ h3 { font-size: var(--t-md); font-weight: 600; line-height: 1.35; }
27
+ p { font-size: var(--t-sm); line-height: 1.6; color: var(--ink-2); max-width: var(--measure); }
34
28
  a { color: var(--violet); text-decoration: none; transition: color var(--ease); }
35
29
  a:hover { color: var(--ink); }
36
30
  small { font-size: var(--t-xs); color: var(--ink-3); }
37
31
  strong { color: var(--ink); font-weight: 600; }
38
- main {
39
- max-width: var(--container); margin-inline: auto;
40
- padding-inline: var(--pad); padding-top: 0; padding-bottom: 0;
41
- }
42
- main:not(:has(> section, > article, > div, > nav)) {
43
- padding-top: var(--g5); padding-bottom: var(--g5);
44
- }
45
- main > * + * { margin-top: var(--g5); }
46
- @media (max-width: 640px) {
47
- :root { --pad: var(--g3); }
48
- main { padding: 0 var(--pad) var(--g4); }
49
- }`;
32
+ main { max-width: var(--container); margin-inline: auto; padding-inline: var(--pad); }
33
+ main > * + * { margin-top: var(--section-gap); }
34
+ @media (max-width: 640px) { :root { --pad: var(--g3); --section-gap: var(--g3); --block-gap: var(--g2); --card-gap: var(--g2); } }`;
@@ -1,8 +1,7 @@
1
- export const css = `section:has(> article[itemscope]) {
2
- display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: var(--g3);
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);
3
5
  }
4
- section:has(> article[itemscope]) > h2 { grid-column: 1 / -1; margin-bottom: var(--g2); }
5
- section:has(> article[itemscope]) > nav[aria-label] { grid-column: 1 / -1; margin-bottom: var(--g2); }
6
- @media (max-width: 640px) {
7
- section:has(> article[itemscope]) { grid-template-columns: 1fr; }
8
- }`;
6
+ ${R} > h2 { grid-column: 1 / -1; margin-bottom: 0; }
7
+ @media (max-width: 640px) { ${R} { grid-template-columns: 1fr; } }`;
@@ -1,7 +1,9 @@
1
- export const css = `nav[aria-label] { display: flex; flex-wrap: wrap; gap: var(--g1); }
2
- 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); }
4
+ ${R} > a {
3
5
  display: inline-flex; align-items: center; height: 32px; padding: 0 var(--g2);
4
6
  border-radius: var(--pill); font-size: var(--t-xs); font-weight: 500;
5
7
  background: var(--white); border: 1px solid var(--line); color: var(--ink-2); transition: all var(--ease);
6
8
  }
7
- nav[aria-label] a:hover { border-color: var(--violet); color: var(--violet); background: var(--violet-s); }`;
9
+ ${R} > a:hover { border-color: var(--violet); color: var(--violet); background: var(--violet-s); }`;
@@ -1,6 +1,5 @@
1
1
  export const css = `body > footer {
2
- border-top: 1px solid var(--line); background: var(--white);
3
- padding: var(--g5) 0 var(--g4);
2
+ border-top: 1px solid var(--line); background: var(--white); padding: var(--g5) 0 var(--g4);
4
3
  }
5
4
  body > footer > small {
6
5
  display: block; max-width: var(--container); margin-inline: auto; padding-inline: var(--pad);
@@ -9,21 +8,16 @@ body > footer > small {
9
8
  body > footer a { color: var(--ink-2); transition: color var(--ease); }
10
9
  body > footer a:hover { color: var(--violet); }
11
10
  body > footer > small > nav {
12
- display: grid; grid-template-columns: 2fr 1fr 1fr; gap: var(--g4);
13
- margin-bottom: var(--g4);
11
+ display: grid; grid-template-columns: 2fr 1fr 1fr; gap: var(--g4); margin-bottom: var(--g4);
14
12
  }
15
13
  body > footer > small > nav section { all: unset; display: block; }
16
14
  body > footer > small > nav strong {
17
15
  display: block; font-size: var(--t-xs); font-weight: 600; color: var(--ink);
18
- text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: var(--g2);
16
+ text-transform: uppercase; letter-spacing: .06em; margin-bottom: var(--g2);
19
17
  }
20
18
  body > footer > small > nav p { font-size: var(--t-xs); line-height: 1.6; color: var(--ink-3); margin: 0; max-width: 36ch; }
21
- body > footer > small > nav a { display: block; font-size: var(--t-xs); line-height: 2; color: var(--ink-3); }
22
- body > footer > small > nav a:hover { color: var(--violet); }
23
- body > footer > small > p {
24
- padding-top: var(--g3); border-top: 1px solid var(--line);
25
- font-size: var(--t-xs); color: var(--ink-3); text-align: left;
26
- }
19
+ body > footer > small > nav a { display: block; font-size: var(--t-xs); line-height: 2; }
20
+ body > footer > small > p { padding-top: var(--g3); border-top: 1px solid var(--line); }
27
21
  @media (max-width: 640px) {
28
22
  body > footer > small > nav { grid-template-columns: 1fr; gap: var(--g3); }
29
23
  }`;
@@ -1,12 +1,11 @@
1
1
  export const css = `body > header {
2
2
  position: sticky; top: 0; z-index: 50;
3
- background: rgba(255,255,255,.82);
4
- backdrop-filter: saturate(180%) blur(16px); -webkit-backdrop-filter: saturate(180%) blur(16px);
3
+ background: rgba(255,255,255,.82); backdrop-filter: saturate(180%) blur(16px);
5
4
  border-bottom: 1px solid var(--line);
6
5
  }
7
6
  body > header nav {
8
7
  max-width: var(--container); margin-inline: auto; padding-inline: var(--pad);
9
8
  height: 48px; display: flex; align-items: center; justify-content: space-between;
10
9
  }
11
- body > header nav a { color: var(--ink-2); text-decoration: none; font-size: var(--t-sm); font-weight: 500; }
10
+ body > header nav a { color: var(--ink-2); font-size: var(--t-sm); font-weight: 500; }
12
11
  body > header nav a strong { font-size: var(--t-md); font-weight: 700; color: var(--ink); }`;
@@ -1,7 +1,11 @@
1
- export const css = `hgroup {
1
+ import { BREAKOUT } from './_shared.ts';
2
+
3
+ const R = 'main > hgroup';
4
+
5
+ export const css = `${R} {
6
+ ${BREAKOUT}
2
7
  position: relative; text-align: center; isolation: isolate; overflow: hidden;
3
- padding: var(--g6) var(--pad) var(--g5);
4
- margin-inline: calc(50% - 50vw);
8
+ padding-block: var(--g6) var(--g5);
5
9
  background:
6
10
  radial-gradient(ellipse 70% 50% at 20% 30%, var(--violet-glow) 0%, transparent 60%),
7
11
  radial-gradient(ellipse 50% 60% at 80% 20%, rgba(13,148,136,.12) 0%, transparent 55%),
@@ -9,45 +13,28 @@ export const css = `hgroup {
9
13
  linear-gradient(180deg, #fff 0%, var(--bg) 100%);
10
14
  border-bottom: 1px solid var(--line);
11
15
  }
12
- hgroup::before {
16
+ ${R}::before {
13
17
  content: ''; position: absolute; inset: 0;
14
18
  background-image:
15
19
  linear-gradient(rgba(124,92,252,.04) 1px, transparent 1px),
16
20
  linear-gradient(90deg, rgba(124,92,252,.04) 1px, transparent 1px);
17
21
  background-size: 48px 48px;
18
22
  mask-image: radial-gradient(ellipse 60% 50% at 50% 40%, black 0%, transparent 70%);
19
- -webkit-mask-image: radial-gradient(ellipse 60% 50% at 50% 40%, black 0%, transparent 70%);
20
23
  z-index: -1;
21
24
  }
22
- hgroup > * { position: relative; }
23
- hgroup > p:first-child { display: inline-flex; margin-bottom: var(--g4); padding: 0; }
24
- hgroup > p:first-child small {
25
+ ${R} > * { position: relative; }
26
+ ${R} > p:first-child { display: inline-flex; margin-bottom: var(--g4); }
27
+ ${R} > p:first-child small {
25
28
  display: inline-flex; align-items: center; gap: var(--g1);
26
29
  background: rgba(255,255,255,.7); backdrop-filter: blur(8px);
27
30
  padding: var(--g1) var(--g2); border: 1px solid var(--line);
28
- border-radius: var(--pill); font-size: var(--t-xs); font-weight: 600; color: var(--teal);
29
- box-shadow: var(--shadow);
31
+ border-radius: var(--pill); font-weight: 600; color: var(--teal); box-shadow: var(--shadow);
30
32
  }
31
- hgroup > p:first-child small::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: #00d24a; box-shadow: 0 0 0 3px rgba(0,210,74,.2); }
32
- hgroup h1 { max-width: 18ch; margin: 0 auto var(--g4); color: var(--ink); }
33
- hgroup p { font-size: var(--t-md); line-height: 1.55; color: var(--ink-2); max-width: var(--measure); margin: 0 auto var(--g4); }
34
- hgroup > nav {
35
- display: flex; gap: var(--g2); flex-wrap: wrap; justify-content: center;
36
- margin-top: var(--g4); margin-bottom: 0;
37
- }
38
- hgroup > nav > a {
39
- display: inline-flex; align-items: center; height: 44px; padding: 0 var(--g4);
40
- border-radius: var(--pill); font-weight: 600; font-size: var(--t-sm); transition: all var(--ease);
41
- background: var(--white); color: var(--ink); border: 1px solid var(--line);
42
- }
43
- hgroup > nav > a:first-child {
44
- background: var(--violet); color: var(--white); border-color: transparent;
45
- box-shadow: 0 4px 14px var(--violet-glow);
46
- }
47
- hgroup > nav > a:first-child:hover { background: var(--ink); color: var(--white); transform: translateY(-1px); box-shadow: 0 6px 20px rgba(26,26,46,.2); }
48
- hgroup > nav > a:not(:first-child):hover { border-color: var(--line-h); background: var(--bg); }
33
+ ${R} > p:first-child small::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: #00d24a; box-shadow: 0 0 0 3px rgba(0,210,74,.2); }
34
+ ${R} h1 { max-width: 18ch; margin: 0 auto var(--g4); }
35
+ ${R} p { font-size: var(--t-md); line-height: 1.55; color: var(--ink-2); max-width: var(--measure); margin: 0 auto var(--g4); }
49
36
  form[role="search"] {
50
- display: flex; max-width: var(--w-6); height: 48px;
37
+ display: flex; max-width: 495px; height: 48px;
51
38
  margin: var(--g4) auto 0; background: var(--white);
52
39
  border: 1px solid var(--line); border-radius: var(--pill);
53
40
  overflow: hidden; box-shadow: var(--shadow-md); transition: all var(--ease);
@@ -56,7 +43,6 @@ form[role="search"]:focus-within { border-color: var(--violet); box-shadow: 0 4p
56
43
  form[role="search"] input {
57
44
  flex: 1; min-width: 0; border: none; background: transparent; color: var(--ink);
58
45
  padding: 0 var(--g3); font-size: var(--t-sm); font-family: var(--font); outline: none;
59
- -webkit-appearance: none; appearance: none;
60
46
  }
61
47
  form[role="search"] input::placeholder { color: var(--ink-3); }
62
48
  form[role="search"] button {
@@ -66,7 +52,7 @@ form[role="search"] button {
66
52
  }
67
53
  form[role="search"] button:hover { background: var(--ink); }
68
54
  @media (max-width: 640px) {
69
- hgroup { padding: var(--g5) var(--pad) var(--g4); }
55
+ ${R} { padding-block: var(--g5) var(--g4); }
70
56
  form[role="search"] { height: 40px; }
71
57
  form[role="search"] input { font-size: var(--t-xs); }
72
58
  }`;
@@ -1,7 +1,9 @@
1
- export const css = `main > nav p { display: flex; align-items: center; justify-content: center; gap: var(--g3); font-size: var(--t-sm); color: var(--ink-3); }
2
- main > nav a {
1
+ const R = 'main > nav:has(> p)';
2
+
3
+ export const css = `${R} > p { display: flex; align-items: center; justify-content: center; gap: var(--block-gap); font-size: var(--t-sm); color: var(--ink-3); }
4
+ ${R} a {
3
5
  height: 32px; display: inline-flex; align-items: center; padding: 0 var(--g2);
4
6
  border-radius: var(--pill); background: var(--white); border: 1px solid var(--line);
5
7
  font-size: var(--t-xs); font-weight: 500; transition: all var(--ease);
6
8
  }
7
- main > nav a:hover { border-color: var(--violet); color: var(--violet); transform: translateY(-1px); }`;
9
+ ${R} a:hover { border-color: var(--violet); color: var(--violet); transform: translateY(-1px); }`;
@@ -1,28 +1,20 @@
1
- export const css = `main > article {
2
- max-width: var(--w-8);
3
- padding: var(--g5) 0;
4
- }
5
- main > article > header { padding-bottom: var(--g4); margin-bottom: var(--g4); border-bottom: 2px solid var(--ink); }
6
- main > article > header h1 { font-size: var(--t-2xl); font-weight: 800; letter-spacing: -0.04em; line-height: 1.05; margin-bottom: var(--g1); }
7
- main > article > header p { font-size: var(--t-md); color: var(--ink-2); margin: 0; font-weight: 400; }
8
- main > article > header small { display: block; margin-top: var(--g1); font-size: var(--t-xs); color: var(--teal); font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; }
9
- main > article address {
10
- font-style: normal; font-size: var(--t-sm); color: var(--ink-2);
11
- padding: var(--g2) 0; margin-bottom: var(--g3); border-bottom: 1px solid var(--line);
12
- }
13
- main > article section { margin: var(--g4) 0; padding-top: var(--g3); border-top: 1px solid var(--line); }
14
- main > article section h2 { font-size: var(--t-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: var(--ink); margin: 0 0 var(--g2); }
15
- main > article ul { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: var(--g1); }
16
- main > article ul li {
17
- font-size: var(--t-xs); font-weight: 500; color: var(--ink-2);
18
- padding: calc(var(--g1) / 2) 0;
19
- }
20
- main > article ul li:not(:last-child)::after { content: ','; }
21
- main > article dl { display: grid; grid-template-columns: 8rem 1fr; gap: var(--g1) var(--g3); }
22
- main > article dt { font-size: var(--t-xs); color: var(--ink-3); font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; }
23
- main > article dd { margin: 0; font-size: var(--t-sm); }
1
+ const R = 'main > article[itemscope]';
2
+
3
+ export const css = `${R} { max-width: 667px; }
4
+ ${R} > header { padding-bottom: var(--g4); margin-bottom: var(--g4); border-bottom: 2px solid var(--ink); }
5
+ ${R} > header h1 { font-size: var(--t-2xl); font-weight: 800; letter-spacing: -.04em; line-height: 1.05; margin-bottom: var(--g1); }
6
+ ${R} > header p { font-size: var(--t-md); color: var(--ink-2); margin: 0; }
7
+ ${R} > header small { display: block; margin-top: var(--g1); font-size: var(--t-xs); color: var(--teal); font-weight: 600; text-transform: uppercase; letter-spacing: .08em; }
8
+ ${R} address { font-style: normal; font-size: var(--t-sm); color: var(--ink-2); padding: var(--g2) 0; margin-bottom: var(--block-gap); border-bottom: 1px solid var(--line); }
9
+ ${R} section { margin: var(--g4) 0; padding-top: var(--block-gap); border-top: 1px solid var(--line); }
10
+ ${R} section h2 { font-size: var(--t-xs); font-weight: 700; text-transform: uppercase; letter-spacing: .1em; margin: 0 0 var(--g2); }
11
+ ${R} ul { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: var(--g1); }
12
+ ${R} ul li { font-size: var(--t-xs); font-weight: 500; color: var(--ink-2); padding: calc(var(--g1)/2) 0; }
13
+ ${R} ul li:not(:last-child)::after { content: ','; }
14
+ ${R} dl { display: grid; grid-template-columns: 8rem 1fr; gap: var(--g1) var(--block-gap); }
15
+ ${R} dt { font-size: var(--t-xs); color: var(--ink-3); font-weight: 600; text-transform: uppercase; letter-spacing: .04em; }
16
+ ${R} dd { margin: 0; font-size: var(--t-sm); }
24
17
  @media (max-width: 640px) {
25
- main > article { padding: var(--g3) 0; }
26
- main > article dl { grid-template-columns: 1fr; gap: calc(var(--g1) / 2) 0; }
27
- main > article dt { margin-top: var(--g2); }
18
+ ${R} dl { grid-template-columns: 1fr; gap: calc(var(--g1)/2) 0; }
19
+ ${R} dt { margin-top: var(--g2); }
28
20
  }`;
@@ -1,36 +1,32 @@
1
- const S = 'section:has(> article[itemscope]) > article[itemscope]';
2
- export const css = `${S} {
3
- position: relative; background: var(--card); border: 1px solid var(--line);
4
- border-radius: var(--r-lg); padding: var(--g3);
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(--g3); display: flex; flex-direction: column;
6
6
  box-shadow: var(--shadow); transition: all var(--ease);
7
7
  }
8
- ${S}:hover { transform: translateY(-2px); box-shadow: var(--shadow-up); border-color: var(--line-h); }
9
- ${S} > div[aria-hidden] {
8
+ ${R}:hover { transform: translateY(-2px); box-shadow: var(--shadow-up); border-color: var(--line-h); }
9
+ ${R} > div[aria-hidden] {
10
10
  width: 40px; height: 40px; border-radius: 50%;
11
11
  display: flex; align-items: center; justify-content: center;
12
12
  font-size: var(--t-xs); font-weight: 700; color: var(--white);
13
- margin-bottom: var(--g2); flex-shrink: 0; background: var(--violet);
13
+ margin-bottom: var(--g2); background: var(--violet);
14
14
  }
15
- ${S} header { margin-bottom: var(--g1); }
16
- ${S} h2 { font-size: var(--t-sm); font-weight: 600; line-height: 1.3; margin: 0 0 2px; }
17
- ${S} h2 a { color: var(--ink); }
18
- ${S} h2 a:hover { color: var(--violet); }
19
- ${S} header p { font-size: var(--t-xs); line-height: 1.4; color: var(--ink-3); margin: 0; }
20
- ${S} header p:has([itemprop="address"]) {
21
- display: inline-flex; align-items: center; gap: 4px; margin-top: 2px;
22
- }
23
- ${S} header p:has([itemprop="address"])::before {
24
- content: ''; display: inline-block; width: 3px; height: 3px; border-radius: 50%; background: var(--ink-3);
25
- }
26
- ${S} [itemprop="description"] { font-size: var(--t-xs); line-height: 1.5; margin: var(--g1) 0 0; color: var(--ink-2); }
27
- ${S} ul { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: 4px; margin-top: var(--g1); }
28
- ${S} ul li {
15
+ ${R} header { margin-bottom: var(--g1); }
16
+ ${R} h2 { font-size: var(--t-sm); font-weight: 600; line-height: 1.3; margin: 0 0 2px; }
17
+ ${R} h2 a { color: var(--ink); }
18
+ ${R} h2 a:hover { color: var(--violet); }
19
+ ${R} header p { font-size: var(--t-xs); color: var(--ink-3); margin: 0; }
20
+ ${R} header p:has([itemprop="address"]) { display: inline-flex; align-items: center; gap: 4px; margin-top: 2px; }
21
+ ${R} header p:has([itemprop="address"])::before { content: ''; width: 3px; height: 3px; border-radius: 50%; background: var(--ink-3); }
22
+ ${R} [itemprop="description"] { font-size: var(--t-xs); line-height: 1.5; margin: var(--g1) 0 0; color: var(--ink-2); }
23
+ ${R} ul { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: 4px; margin-top: var(--g1); }
24
+ ${R} ul li {
29
25
  background: var(--violet-s); color: var(--violet);
30
- padding: 1px var(--g1); border-radius: var(--pill); font-size: 0.7rem; font-weight: 500;
26
+ padding: 1px var(--g1); border-radius: var(--pill); font-size: .7rem; font-weight: 500;
31
27
  }
32
- ${S} > a:last-child {
33
- display: inline-flex; align-items: center; margin-top: auto; padding-top: var(--g2);
28
+ ${R} > a:last-child {
29
+ display: inline-flex; margin-top: auto; padding-top: var(--g2);
34
30
  font-size: var(--t-xs); font-weight: 600; color: var(--violet); transition: all var(--ease);
35
31
  }
36
- ${S} > a:last-child:hover { color: var(--ink); gap: 4px; }`;
32
+ ${R} > a:last-child:hover { color: var(--ink); }`;
@@ -1,19 +1,14 @@
1
- export const css = `section:has(> dl) > p {
2
- text-align: center; font-size: var(--t-md); font-weight: 500; line-height: 1.55;
3
- color: var(--ink); margin: 0 auto var(--g4); max-width: var(--measure);
1
+ const R = 'main > section:has(> dl)';
2
+
3
+ export const css = `${R} > dl {
4
+ display: flex; justify-content: center; gap: var(--g5); padding: 0;
4
5
  }
5
- section:has(> dl) > dl {
6
- display: flex; justify-content: center; gap: var(--g5); margin: 0 auto; padding: 0;
7
- border: none; background: none; box-shadow: none;
8
- }
9
- section:has(> dl) > dl div { text-align: center; }
10
- section:has(> dl) > dl div > span:has(> svg) {
6
+ ${R} > dl div { text-align: center; }
7
+ ${R} > dl div > span:has(> svg) {
11
8
  display: flex; align-items: center; justify-content: center; width: 36px; height: 36px;
12
9
  margin: 0 auto var(--g1); background: var(--violet-s); border-radius: 50%; color: var(--violet);
13
10
  }
14
- section:has(> dl) > dl div > span:has(> svg) > svg { width: 18px; height: 18px; }
15
- section:has(> dl) > dl dt { font-size: var(--t-lg); font-weight: 800; line-height: 1.2; color: var(--violet); }
16
- section:has(> dl) > dl dd { margin: 2px 0 0; font-size: var(--t-xs); line-height: 1.4; color: var(--ink-3); font-weight: 500; text-transform: uppercase; letter-spacing: 0.06em; }
17
- @media (max-width: 640px) {
18
- section:has(> dl) > dl { gap: var(--g3); }
19
- }`;
11
+ ${R} > dl div > span:has(> svg) > svg { width: 18px; height: 18px; }
12
+ ${R} > dl dt { font-size: var(--t-lg); font-weight: 800; line-height: 1.2; color: var(--violet); }
13
+ ${R} > dl dd { margin: 2px 0 0; font-size: var(--t-xs); color: var(--ink-3); font-weight: 500; text-transform: uppercase; letter-spacing: .06em; }
14
+ @media (max-width: 640px) { ${R} > dl { gap: var(--block-gap); } }`;
@@ -1,29 +1,32 @@
1
- export const css = `section:has(> ol) {
2
- margin-inline: calc(50% - 50vw);
3
- padding: var(--g5) var(--pad);
4
- background: var(--white);
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(--g5);
5
8
  border-top: 1px solid var(--line); border-bottom: 1px solid var(--line);
6
9
  }
7
- section:has(> ol) > * { max-width: var(--container); }
8
- section:has(> ol) > h2 { text-align: center; margin-bottom: var(--g4); }
9
- section > ol {
10
- list-style: none; padding: 0; display: grid;
11
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--g3); margin: 0 auto; counter-reset: steps;
10
+ ${R} > h2 { text-align: center; margin-bottom: var(--g4); }
11
+ ${R} > ol {
12
+ list-style: none; padding: 0; margin: 0 auto; max-width: var(--container);
13
+ display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--card-gap);
14
+ counter-reset: steps;
12
15
  }
13
- section > ol li {
16
+ ${R} > ol > li {
14
17
  counter-increment: steps; background: var(--bg); border: 1px solid var(--line);
15
18
  border-radius: var(--r-lg); padding: var(--g4) var(--g3); text-align: center; transition: all var(--ease);
16
19
  }
17
- section > ol li:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
18
- section > ol li::before {
20
+ ${R} > ol > li:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
21
+ ${R} > ol > li::before {
19
22
  content: counter(steps); display: flex; align-items: center; justify-content: center;
20
23
  width: 40px; height: 40px; margin: 0 auto var(--g2);
21
24
  border-radius: 50%; font-size: var(--t-sm); font-weight: 700;
22
25
  background: var(--violet-s); color: var(--violet);
23
26
  }
24
- section > ol li strong { display: block; font-size: var(--t-sm); line-height: 1.4; margin-bottom: 4px; color: var(--ink); }
25
- section > ol li span { font-size: var(--t-xs); line-height: 1.5; color: var(--ink-3); }
27
+ ${R} > ol > li strong { display: block; font-size: var(--t-sm); margin-bottom: 4px; color: var(--ink); }
28
+ ${R} > ol > li span { font-size: var(--t-xs); line-height: 1.5; color: var(--ink-3); }
26
29
  @media (max-width: 640px) {
27
- section > ol { grid-template-columns: 1fr; }
28
- section:has(> ol) { padding: var(--g4) var(--pad); }
30
+ ${R} > ol { grid-template-columns: 1fr; }
31
+ ${R} { padding-block: var(--g4); }
29
32
  }`;
@@ -12,7 +12,7 @@ export interface LayoutProps {
12
12
  footerContent?: string;
13
13
  }
14
14
 
15
- const THEME_VERSION = '0.13.1';
15
+ const THEME_VERSION = '2.0.0';
16
16
 
17
17
  export function layout(props: LayoutProps, body: string): string {
18
18
  const {