@press2ai/theme-specialist-glossy 0.5.5 → 0.6.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@press2ai/theme-specialist-glossy",
3
- "version": "0.5.5",
3
+ "version": "0.6.1",
4
4
  "description": "Classless, AI-first theme inspired by Stripe. 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",
@@ -65,10 +65,39 @@ main {
65
65
  main > h1:first-child, main > article:first-child { margin-top: var(--g5); }
66
66
  main > section { margin-bottom: var(--g6); }
67
67
 
68
- /* Footer */
69
- body > footer { border-top: 1px solid var(--line); padding: var(--g4) 0; text-align: center; }
70
- body > footer small { display: block; max-width: var(--container); margin-inline: auto; padding-inline: var(--pad); color: var(--ink-3); }
71
- body > footer a { color: var(--violet); }
68
+ /* Footer — Swiss Design: grid, tight, structured */
69
+ body > footer {
70
+ border-top: 1px solid var(--line); background: var(--white);
71
+ padding: var(--g5) 0 var(--g4);
72
+ }
73
+ body > footer > small {
74
+ display: block; max-width: var(--container); margin-inline: auto; padding-inline: var(--pad);
75
+ color: var(--ink-3); font-size: var(--t-xs);
76
+ }
77
+ body > footer a { color: var(--ink-2); transition: color var(--ease); }
78
+ body > footer a:hover { color: var(--violet); }
79
+
80
+ .footer-grid {
81
+ display: grid; grid-template-columns: 2fr 1fr 1fr; gap: var(--g4);
82
+ max-width: var(--container); margin-inline: auto; padding-inline: var(--pad);
83
+ margin-bottom: var(--g4);
84
+ }
85
+ .footer-col strong {
86
+ display: block; font-size: var(--t-xs); font-weight: 600; color: var(--ink);
87
+ text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: var(--g2);
88
+ }
89
+ .footer-col p {
90
+ font-size: var(--t-xs); line-height: 1.6; color: var(--ink-3); margin: 0; max-width: 36ch;
91
+ }
92
+ .footer-col a {
93
+ display: block; font-size: var(--t-xs); line-height: 2; color: var(--ink-3);
94
+ }
95
+ .footer-col a:hover { color: var(--violet); }
96
+ .footer-meta {
97
+ max-width: var(--container); margin: 0 auto; padding: var(--g3) var(--pad) 0;
98
+ border-top: 1px solid var(--line);
99
+ font-size: var(--t-xs); color: var(--ink-3); text-align: left;
100
+ }
72
101
 
73
102
  /* Hero */
74
103
  hgroup {
@@ -144,19 +173,21 @@ form[role="search"] button {
144
173
  form[role="search"] button:hover { background: var(--ink); }
145
174
 
146
175
  /* Stats */
147
- section[aria-label] > p { text-align: center; font-size: var(--t-sm); color: var(--ink-2); margin: 0 auto var(--g3); max-width: var(--measure); }
148
176
  section:has(> dl) { margin-bottom: 0; }
177
+ .stat-summary {
178
+ text-align: center; font-size: var(--t-md); font-weight: 500; line-height: 1.55;
179
+ color: var(--ink); margin: 0 auto var(--g4); max-width: var(--measure);
180
+ }
149
181
  section > dl {
150
- display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: var(--g3);
151
- padding: var(--g4); margin: 0 auto var(--g6); max-width: var(--w-8);
152
- background: var(--white); border: 1px solid var(--line); border-radius: var(--r-lg);
153
- box-shadow: var(--shadow-md);
182
+ display: flex; justify-content: center; gap: var(--g5);
183
+ margin: 0 auto var(--g6); padding: 0;
184
+ border: none; background: none; box-shadow: none;
154
185
  }
155
186
  section > dl div { text-align: center; }
156
187
  .stat-icon { display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; margin: 0 auto var(--g1); background: var(--violet-s); border-radius: 50%; color: var(--violet); }
157
188
  .stat-icon svg { width: 18px; height: 18px; }
158
- section > dl dt { font-size: var(--t-xl); font-weight: 800; line-height: 1.2; color: var(--violet); }
159
- section > dl dd { margin: 4px 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; }
189
+ section > dl dt { font-size: var(--t-lg); font-weight: 800; line-height: 1.2; color: var(--violet); }
190
+ section > 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; }
160
191
 
161
192
  /* Category pills — inside trainers section */
162
193
  nav[aria-label] { display: flex; flex-wrap: wrap; gap: var(--g1); margin-bottom: var(--g3); grid-column: 1 / -1; }
@@ -292,22 +323,6 @@ main > nav a {
292
323
  }
293
324
  main > nav a:hover { border-color: var(--violet); color: var(--violet); transform: translateY(-1px); }
294
325
 
295
- /* Trust */
296
- .trust {
297
- margin: var(--g6) auto; padding: var(--g5); max-width: var(--w-8);
298
- background: linear-gradient(135deg, var(--teal-s) 0%, #f0fdf8 100%);
299
- border: 1px solid rgba(13,148,136,.15); border-radius: var(--r-lg); text-align: center;
300
- }
301
- .trust strong {
302
- display: block; font-size: var(--t-md); line-height: 1.3; margin-bottom: var(--g3); color: var(--teal);
303
- }
304
- .trust ul { list-style: none; padding: 0; display: flex; flex-direction: column; gap: var(--g1); }
305
- .trust li {
306
- font-size: var(--t-sm); color: var(--ink-2); line-height: 1.5;
307
- display: flex; align-items: center; justify-content: center; gap: var(--g1);
308
- }
309
- .trust li::before { content: '✓'; color: var(--teal); font-weight: 700; }
310
-
311
326
  /* Forms */
312
327
  label { display: block; font-size: var(--t-sm); color: var(--ink-2); font-weight: 500; margin-bottom: var(--g1); }
313
328
  input[type="text"] {
@@ -332,7 +347,7 @@ form:not([role="search"]) button[type="submit"]:hover { background: var(--ink);
332
347
  hgroup { padding: var(--g5) var(--pad) var(--g4); }
333
348
  section:has(> article[itemscope]) { grid-template-columns: 1fr; }
334
349
  section > ol { grid-template-columns: 1fr; }
335
- section > dl { grid-template-columns: 1fr; max-width: 100%; padding: var(--g3); }
350
+ section > dl { gap: var(--g3); }
336
351
  main > article { padding: var(--g3); }
337
352
  main > article dl { grid-template-columns: 1fr; gap: calc(var(--g1) / 2) 0; }
338
353
  main > article dt { margin-top: var(--g2); }
@@ -340,4 +355,5 @@ form:not([role="search"]) button[type="submit"]:hover { background: var(--ink);
340
355
  form[role="search"] input { font-size: var(--t-xs); }
341
356
  .trust ul { text-align: left; }
342
357
  .how-it-works { padding: var(--g4) var(--pad); }
358
+ .footer-grid { grid-template-columns: 1fr; gap: var(--g3); }
343
359
  }
@@ -40,8 +40,8 @@ export function statBar(items: { value: string; label: string; icon?: string }[]
40
40
  const icon = i.icon && STAT_ICONS[i.icon] ? `<span class="stat-icon">${STAT_ICONS[i.icon]}</span>` : '';
41
41
  return `<div>${icon}<dt>${esc(i.value)}</dt><dd>${esc(i.label)}</dd></div>`;
42
42
  }).join('\n');
43
- const summaryP = summary ? `<p>${esc(summary)}</p>` : '';
44
- return `<section aria-label="Statystyki">${summaryP}<dl>\n${divs}\n</dl></section>`;
43
+ const summaryP = summary ? `<p class="stat-summary">${esc(summary)}</p>` : '';
44
+ return `<section aria-label="Statystyki">${summaryP}<dl aria-hidden="true">\n${divs}\n</dl></section>`;
45
45
  }
46
46
 
47
47
  export function categoryNav(items: { href: string; label: string }[], ariaLabel = 'Kategorie'): string {