@usezanin/blog 0.1.0 → 0.3.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/styles.css CHANGED
@@ -1,33 +1,41 @@
1
1
  /**
2
2
  * @usezanin/blog — themable reading styles.
3
3
  *
4
- * Every color and face routes through a CSS variable so host sites can
5
- * re-brand by overriding the --zanin-* tokens; the defaults follow the Zanin
6
- * design system: warm light canvas, ink (never pure black), one brand accent,
7
- * serif for the content's voice, sans for chrome, pill-shaped tags.
4
+ * Design language matches the Zanin admin: clean neutral surfaces, hairline
5
+ * borders, subtle shadows, one accent color. Every value routes through a
6
+ * --zanin-* CSS variable; override them via the site theme in the Zanin
7
+ * dashboard, the SDK `theme` config, or plain CSS.
8
8
  */
9
9
  .zanin-blog {
10
- --zanin-accent: #2563eb;
11
- --zanin-accent-pressed: #1d4ed8;
12
- --zanin-canvas: #fafaf9;
13
- --zanin-surface: #ffffff;
14
- --zanin-ink: #1c1917;
15
- --zanin-ink-muted: #57534e;
16
- --zanin-ink-faint: #a8a29e;
17
- --zanin-hairline: #e7e5e4;
18
- --zanin-font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
19
- --zanin-font-serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
10
+ --zanin-accent: #005bd3;
11
+ --zanin-canvas: #ffffff;
12
+ --zanin-surface: #fafafa;
13
+ --zanin-ink: #1a1a1a;
14
+ --zanin-ink-muted: #616161;
15
+ --zanin-ink-faint: #8a8a8a;
16
+ --zanin-hairline: #e3e3e3;
17
+ --zanin-font-body: ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
18
+ --zanin-font-heading: var(--zanin-font-body);
20
19
  --zanin-font-mono: ui-monospace, "SF Mono", "Cascadia Code", Menlo, monospace;
20
+ --zanin-base-size: 16.5px;
21
+ --zanin-heading-weight: 650;
21
22
  --zanin-measure: 720px;
22
- --zanin-radius-card: 22px;
23
+ --zanin-radius: 12px;
24
+ /* Vertical rhythm multiplier (theme spacing: compact 0.8 / relaxed 1.3) */
25
+ --zanin-space: 1;
26
+
27
+ /* Derived */
28
+ --zanin-accent-strong: color-mix(in srgb, var(--zanin-accent) 82%, var(--zanin-ink));
29
+ --zanin-shadow: 0 1px 2px color-mix(in srgb, var(--zanin-ink) 7%, transparent);
23
30
 
24
31
  margin: 0 auto;
25
32
  max-width: var(--zanin-measure);
26
- padding: 48px 24px 96px;
33
+ padding: calc(48px * var(--zanin-space)) 24px calc(96px * var(--zanin-space));
34
+ background: var(--zanin-canvas);
27
35
  color: var(--zanin-ink);
28
- font-family: var(--zanin-font-sans);
29
- font-size: 16px;
30
- line-height: 1.6;
36
+ font-family: var(--zanin-font-body);
37
+ font-size: var(--zanin-base-size);
38
+ line-height: 1.65;
31
39
  }
32
40
 
33
41
  .zanin-blog a {
@@ -35,119 +43,164 @@
35
43
  text-decoration: none;
36
44
  }
37
45
  .zanin-blog a:hover {
38
- color: var(--zanin-accent-pressed);
46
+ color: var(--zanin-accent-strong);
47
+ text-decoration: underline;
39
48
  }
40
49
 
41
50
  .zanin-tag {
42
51
  display: inline-block;
43
- border-radius: 999px;
44
- background: color-mix(in srgb, var(--zanin-accent) 10%, transparent);
45
- color: var(--zanin-accent);
46
- font-size: 12px;
47
- font-weight: 600;
48
- letter-spacing: 0.02em;
49
- padding: 2px 12px;
52
+ border: 1px solid var(--zanin-hairline);
53
+ border-radius: calc(var(--zanin-radius) / 1.5);
54
+ background: var(--zanin-surface);
55
+ color: var(--zanin-ink-muted);
56
+ font-size: 0.72em;
57
+ font-weight: 550;
58
+ letter-spacing: 0.01em;
59
+ padding: 2px 9px;
50
60
  }
51
61
 
52
62
  /* ---- Index ---------------------------------------------------------- */
53
63
 
54
64
  .zanin-index-header {
55
- margin-bottom: 48px;
65
+ margin-bottom: calc(40px * var(--zanin-space));
56
66
  }
57
67
  .zanin-index-header h1 {
58
- font-family: var(--zanin-font-serif);
59
- font-size: 44px;
60
- font-weight: 500;
61
- letter-spacing: -0.015em;
62
- line-height: 1.1;
68
+ font-family: var(--zanin-font-heading);
69
+ font-size: 2.5em;
70
+ font-weight: var(--zanin-heading-weight);
71
+ letter-spacing: -0.02em;
72
+ line-height: 1.12;
63
73
  margin: 0 0 8px;
64
74
  text-wrap: balance;
65
75
  }
66
76
  .zanin-index-header p {
67
77
  color: var(--zanin-ink-muted);
68
- font-size: 18px;
78
+ font-size: 1.06em;
69
79
  margin: 0;
70
80
  max-width: 52ch;
71
81
  }
72
82
 
73
- .zanin-index-list {
74
- display: flex;
75
- flex-direction: column;
76
- }
77
- .zanin-index-item {
78
- border-top: 1px solid var(--zanin-hairline);
79
- }
80
- .zanin-index-item:last-child {
81
- border-bottom: 1px solid var(--zanin-hairline);
82
- }
83
83
  .zanin-index-item > a {
84
84
  color: inherit;
85
85
  display: block;
86
- padding: 28px 4px;
87
- transition: opacity 0.15s ease;
88
- }
89
- .zanin-index-item > a:hover {
90
- color: inherit;
91
- opacity: 0.72;
86
+ text-decoration: none;
92
87
  }
93
88
  .zanin-index-item h2 {
94
- font-family: var(--zanin-font-serif);
95
- font-size: 26px;
96
- font-weight: 500;
97
- letter-spacing: -0.01em;
98
- line-height: 1.25;
89
+ font-family: var(--zanin-font-heading);
90
+ font-size: 1.45em;
91
+ font-weight: var(--zanin-heading-weight);
92
+ letter-spacing: -0.012em;
93
+ line-height: 1.28;
99
94
  margin: 0 0 6px;
100
95
  text-wrap: balance;
101
96
  }
97
+ .zanin-index-item > a:hover h2 {
98
+ color: var(--zanin-accent);
99
+ }
100
+ .zanin-index-item > a:hover {
101
+ text-decoration: none;
102
+ color: inherit;
103
+ }
102
104
  .zanin-index-item p {
103
105
  color: var(--zanin-ink-muted);
106
+ font-size: 0.94em;
104
107
  margin: 0;
105
- max-width: 62ch;
108
+ max-width: 66ch;
106
109
  }
107
110
  .zanin-index-meta {
108
111
  align-items: center;
109
112
  color: var(--zanin-ink-faint);
110
113
  display: flex;
111
- font-size: 12px;
112
- font-weight: 600;
113
- gap: 10px;
114
- letter-spacing: 0.09em;
114
+ flex-wrap: wrap;
115
+ font-size: 0.78em;
116
+ font-weight: 500;
117
+ gap: 8px;
115
118
  margin-bottom: 10px;
116
- text-transform: uppercase;
119
+ }
120
+ .zanin-index-more {
121
+ color: var(--zanin-accent);
122
+ display: inline-block;
123
+ font-size: 0.85em;
124
+ font-weight: 550;
125
+ margin-top: 12px;
117
126
  }
118
127
  .zanin-index-empty {
119
128
  color: var(--zanin-ink-faint);
120
129
  }
121
130
 
131
+ /* List layout (default): divided rows */
132
+ .zanin-index--list .zanin-index-list {
133
+ display: flex;
134
+ flex-direction: column;
135
+ }
136
+ .zanin-index--list .zanin-index-item {
137
+ border-top: 1px solid var(--zanin-hairline);
138
+ }
139
+ .zanin-index--list .zanin-index-item:last-child {
140
+ border-bottom: 1px solid var(--zanin-hairline);
141
+ }
142
+ .zanin-index--list .zanin-index-item > a {
143
+ padding: calc(26px * var(--zanin-space)) 2px;
144
+ }
145
+
146
+ /* Grid layout: cards */
147
+ .zanin-index--grid {
148
+ max-width: calc(var(--zanin-measure) * 1.5);
149
+ }
150
+ .zanin-index--grid .zanin-index-list {
151
+ display: grid;
152
+ gap: calc(20px * var(--zanin-space));
153
+ grid-template-columns: repeat(auto-fill, minmax(290px, 1fr));
154
+ }
155
+ .zanin-index--grid .zanin-index-item {
156
+ background: var(--zanin-surface);
157
+ border: 1px solid var(--zanin-hairline);
158
+ border-radius: var(--zanin-radius);
159
+ box-shadow: var(--zanin-shadow);
160
+ transition: box-shadow 0.15s ease, transform 0.15s ease;
161
+ }
162
+ .zanin-index--grid .zanin-index-item:hover {
163
+ box-shadow: 0 4px 14px color-mix(in srgb, var(--zanin-ink) 10%, transparent);
164
+ transform: translateY(-1px);
165
+ }
166
+ .zanin-index--grid .zanin-index-item > a {
167
+ display: flex;
168
+ flex-direction: column;
169
+ height: 100%;
170
+ padding: calc(22px * var(--zanin-space));
171
+ }
172
+ .zanin-index--grid .zanin-index-more {
173
+ margin-top: auto;
174
+ padding-top: 14px;
175
+ }
176
+
122
177
  /* ---- Post header ----------------------------------------------------- */
123
178
 
124
179
  .zanin-post-header {
125
- margin-bottom: 44px;
180
+ margin-bottom: calc(40px * var(--zanin-space));
126
181
  }
127
182
  .zanin-post-meta {
128
183
  align-items: center;
129
184
  color: var(--zanin-ink-faint);
130
185
  display: flex;
131
186
  flex-wrap: wrap;
132
- font-size: 12px;
133
- font-weight: 600;
134
- gap: 10px;
135
- letter-spacing: 0.09em;
136
- margin-bottom: 16px;
137
- text-transform: uppercase;
187
+ font-size: 0.8em;
188
+ font-weight: 500;
189
+ gap: 8px;
190
+ margin-bottom: 14px;
138
191
  }
139
192
  .zanin-post-header h1 {
140
- font-family: var(--zanin-font-serif);
141
- font-size: 44px;
142
- font-weight: 500;
143
- letter-spacing: -0.015em;
193
+ font-family: var(--zanin-font-heading);
194
+ font-size: 2.5em;
195
+ font-weight: var(--zanin-heading-weight);
196
+ letter-spacing: -0.02em;
144
197
  line-height: 1.12;
145
- margin: 0 0 14px;
198
+ margin: 0 0 12px;
146
199
  text-wrap: balance;
147
200
  }
148
201
  .zanin-post-lede {
149
202
  color: var(--zanin-ink-muted);
150
- font-size: 19px;
203
+ font-size: 1.12em;
151
204
  line-height: 1.55;
152
205
  margin: 0;
153
206
  text-wrap: pretty;
@@ -156,92 +209,90 @@
156
209
  /* ---- Prose ----------------------------------------------------------- */
157
210
 
158
211
  .zanin-prose {
159
- font-size: 17px;
160
- line-height: 1.65;
212
+ line-height: 1.68;
161
213
  }
162
214
  .zanin-prose > * + * {
163
- margin-top: 1.15em;
215
+ margin-top: calc(1.1em * var(--zanin-space));
164
216
  }
165
217
  .zanin-prose p {
166
218
  margin: 0;
167
219
  text-wrap: pretty;
168
220
  }
169
221
  .zanin-prose h2 {
170
- font-family: var(--zanin-font-serif);
171
- font-size: 28px;
172
- font-weight: 500;
173
- letter-spacing: -0.01em;
222
+ font-family: var(--zanin-font-heading);
223
+ font-size: 1.6em;
224
+ font-weight: var(--zanin-heading-weight);
225
+ letter-spacing: -0.015em;
174
226
  line-height: 1.25;
175
- margin-top: 2em;
176
- text-wrap: balance;
227
+ margin-top: calc(1.9em * var(--zanin-space));
177
228
  }
178
229
  .zanin-prose h3 {
179
- font-size: 20px;
180
- font-weight: 650;
230
+ font-family: var(--zanin-font-heading);
231
+ font-size: 1.2em;
232
+ font-weight: var(--zanin-heading-weight);
181
233
  line-height: 1.3;
182
- margin-top: 1.8em;
234
+ margin-top: calc(1.7em * var(--zanin-space));
183
235
  }
184
236
  .zanin-prose ul,
185
237
  .zanin-prose ol {
186
238
  padding-left: 1.4em;
187
239
  }
188
240
  .zanin-prose li + li {
189
- margin-top: 0.4em;
241
+ margin-top: calc(0.4em * var(--zanin-space));
190
242
  }
191
243
  .zanin-prose blockquote {
192
244
  border-left: 3px solid var(--zanin-accent);
193
245
  color: var(--zanin-ink-muted);
194
- font-family: var(--zanin-font-serif);
195
- font-size: 20px;
196
- font-style: italic;
197
- margin: 1.6em 0;
198
- padding: 0.2em 0 0.2em 1.2em;
246
+ font-size: 1.05em;
247
+ margin: calc(1.5em * var(--zanin-space)) 0;
248
+ padding: 0.15em 0 0.15em 1.2em;
199
249
  }
200
250
  .zanin-prose code {
201
- background: color-mix(in srgb, var(--zanin-ink) 6%, transparent);
251
+ background: var(--zanin-surface);
252
+ border: 1px solid var(--zanin-hairline);
202
253
  border-radius: 6px;
203
254
  font-family: var(--zanin-font-mono);
204
- font-size: 0.88em;
205
- padding: 0.15em 0.4em;
255
+ font-size: 0.86em;
256
+ padding: 0.1em 0.35em;
206
257
  }
207
258
  .zanin-prose img {
208
- border-radius: var(--zanin-radius-card);
259
+ border: 1px solid var(--zanin-hairline);
260
+ border-radius: var(--zanin-radius);
209
261
  height: auto;
210
262
  max-width: 100%;
211
263
  }
212
264
  .zanin-prose hr {
213
265
  border: none;
214
266
  border-top: 1px solid var(--zanin-hairline);
215
- margin: 2.5em 0;
267
+ margin: calc(2.4em * var(--zanin-space)) 0;
216
268
  }
217
269
  .zanin-prose table {
218
270
  border-collapse: collapse;
219
- font-size: 15px;
271
+ font-size: 0.9em;
220
272
  width: 100%;
221
273
  }
222
274
  .zanin-prose th,
223
275
  .zanin-prose td {
224
276
  border-bottom: 1px solid var(--zanin-hairline);
225
- padding: 10px 12px;
277
+ padding: 9px 12px;
226
278
  text-align: left;
227
279
  }
228
280
  .zanin-prose th {
229
- color: var(--zanin-ink-faint);
230
- font-size: 12px;
231
- font-weight: 650;
232
- letter-spacing: 0.09em;
233
- text-transform: uppercase;
281
+ color: var(--zanin-ink-muted);
282
+ font-size: 0.82em;
283
+ font-weight: 600;
234
284
  }
235
285
 
236
286
  /* ---- Built-in components --------------------------------------------- */
237
287
 
238
288
  .zanin-callout {
239
289
  background: var(--zanin-surface);
240
- border-radius: var(--zanin-radius-card);
241
- box-shadow: 0 4px 12px color-mix(in srgb, var(--zanin-accent) 10%, transparent);
290
+ border: 1px solid var(--zanin-hairline);
291
+ border-radius: var(--zanin-radius);
292
+ box-shadow: var(--zanin-shadow);
242
293
  display: flex;
243
- gap: 14px;
244
- padding: 18px 22px;
294
+ gap: 12px;
295
+ padding: calc(16px * var(--zanin-space)) 18px;
245
296
  }
246
297
  .zanin-callout-icon {
247
298
  align-items: center;
@@ -250,23 +301,23 @@
250
301
  color: var(--zanin-accent);
251
302
  display: flex;
252
303
  flex-shrink: 0;
253
- font-size: 13px;
304
+ font-size: 0.78em;
254
305
  font-weight: 700;
255
- height: 26px;
306
+ height: 24px;
256
307
  justify-content: center;
257
308
  margin-top: 2px;
258
- width: 26px;
309
+ width: 24px;
259
310
  }
260
311
  .zanin-callout-warning .zanin-callout-icon {
261
- background: rgba(217, 119, 6, 0.14);
262
- color: #b45309;
312
+ background: #ffef9d;
313
+ color: #4f4700;
263
314
  }
264
315
  .zanin-callout-success .zanin-callout-icon {
265
- background: rgba(22, 163, 74, 0.13);
266
- color: #15803d;
316
+ background: #cdfee1;
317
+ color: #0c5132;
267
318
  }
268
319
  .zanin-callout-body {
269
- font-size: 15.5px;
320
+ font-size: 0.94em;
270
321
  }
271
322
  .zanin-callout-body > * + * {
272
323
  margin-top: 0.5em;
@@ -282,31 +333,31 @@
282
333
  margin: 0;
283
334
  }
284
335
  .zanin-figure img {
285
- border-radius: var(--zanin-radius-card);
336
+ border: 1px solid var(--zanin-hairline);
337
+ border-radius: var(--zanin-radius);
286
338
  height: auto;
287
339
  max-width: 100%;
288
340
  width: 100%;
289
341
  }
290
342
  .zanin-figure figcaption {
291
343
  color: var(--zanin-ink-faint);
292
- font-size: 13.5px;
344
+ font-size: 0.82em;
293
345
  margin-top: 10px;
294
346
  text-align: center;
295
347
  }
296
348
 
297
349
  .zanin-chart {
298
350
  background: var(--zanin-surface);
299
- border-radius: var(--zanin-radius-card);
300
- box-shadow: 0 4px 12px color-mix(in srgb, var(--zanin-accent) 8%, transparent);
301
- padding: 22px;
351
+ border: 1px solid var(--zanin-hairline);
352
+ border-radius: var(--zanin-radius);
353
+ box-shadow: var(--zanin-shadow);
354
+ padding: calc(18px * var(--zanin-space));
302
355
  }
303
356
  .zanin-chart-title {
304
- color: var(--zanin-ink-faint);
305
- font-size: 12px;
306
- font-weight: 650;
307
- letter-spacing: 0.09em;
357
+ color: var(--zanin-ink-muted);
358
+ font-size: 0.82em;
359
+ font-weight: 600;
308
360
  margin: 0 0 14px;
309
- text-transform: uppercase;
310
361
  }
311
362
  .zanin-chart .recharts-text {
312
363
  fill: var(--zanin-ink-faint);
@@ -314,47 +365,50 @@
314
365
 
315
366
  .zanin-cta {
316
367
  align-items: center;
317
- background: color-mix(in srgb, var(--zanin-accent) 7%, var(--zanin-surface));
318
- border-radius: var(--zanin-radius-card);
368
+ background: var(--zanin-surface);
369
+ border: 1px solid var(--zanin-hairline);
370
+ border-radius: var(--zanin-radius);
371
+ box-shadow: var(--zanin-shadow);
319
372
  display: flex;
320
373
  flex-wrap: wrap;
321
- gap: 18px;
374
+ gap: 16px;
322
375
  justify-content: space-between;
323
- padding: 26px 30px;
376
+ padding: calc(22px * var(--zanin-space)) 24px;
324
377
  }
325
378
  .zanin-cta-title {
326
- font-family: var(--zanin-font-serif);
327
- font-size: 22px;
328
- font-weight: 500;
379
+ font-family: var(--zanin-font-heading);
380
+ font-size: 1.15em;
381
+ font-weight: var(--zanin-heading-weight);
329
382
  margin: 0;
330
383
  }
331
384
  .zanin-cta-description {
332
385
  color: var(--zanin-ink-muted);
333
- font-size: 15px;
386
+ font-size: 0.9em;
334
387
  margin: 4px 0 0;
335
388
  }
336
389
  .zanin-cta-button {
337
390
  background: var(--zanin-accent);
338
- border-radius: 999px;
339
- box-shadow: 0 4px 14px color-mix(in srgb, var(--zanin-accent) 35%, transparent);
391
+ border-radius: calc(var(--zanin-radius) / 1.5);
340
392
  color: #fff !important;
341
393
  display: inline-block;
342
- font-size: 15px;
343
- font-weight: 650;
344
- padding: 12px 26px;
345
- transition: transform 0.12s ease, background 0.15s ease;
394
+ font-size: 0.9em;
395
+ font-weight: 600;
396
+ padding: 10px 20px;
397
+ text-decoration: none !important;
398
+ transition: background 0.15s ease, transform 0.1s ease;
346
399
  white-space: nowrap;
347
400
  }
348
401
  .zanin-cta-button:hover {
349
- background: var(--zanin-accent-pressed);
402
+ background: var(--zanin-accent-strong);
350
403
  }
351
404
  .zanin-cta-button:active {
352
- transform: scale(0.97);
405
+ transform: scale(0.98);
353
406
  }
354
407
 
355
408
  .zanin-embed-youtube {
356
409
  aspect-ratio: 16 / 9;
357
- border-radius: var(--zanin-radius-card);
410
+ border: 1px solid var(--zanin-hairline);
411
+ border-radius: var(--zanin-radius);
358
412
  overflow: hidden;
359
413
  }
360
414
  .zanin-embed-youtube iframe {
@@ -365,84 +419,101 @@
365
419
 
366
420
  .zanin-tweet {
367
421
  background: var(--zanin-surface);
368
- border-radius: var(--zanin-radius-card);
369
- box-shadow: 0 4px 12px color-mix(in srgb, var(--zanin-accent) 8%, transparent);
422
+ border: 1px solid var(--zanin-hairline);
423
+ border-radius: var(--zanin-radius);
424
+ box-shadow: var(--zanin-shadow);
370
425
  margin: 0;
371
- padding: 22px 26px;
426
+ padding: calc(18px * var(--zanin-space)) 22px;
372
427
  }
373
428
  .zanin-tweet-text {
374
- font-family: var(--zanin-font-serif);
375
- font-size: 19px;
376
- font-style: italic;
377
- line-height: 1.5;
429
+ font-size: 1.02em;
430
+ line-height: 1.55;
378
431
  }
379
432
  .zanin-tweet footer {
380
433
  align-items: center;
381
434
  color: var(--zanin-ink-faint);
382
435
  display: flex;
383
- font-size: 13.5px;
436
+ font-size: 0.82em;
384
437
  gap: 8px;
385
- margin-top: 14px;
438
+ margin-top: 12px;
386
439
  }
387
440
  .zanin-tweet-author {
388
441
  color: var(--zanin-ink);
389
- font-weight: 650;
442
+ font-weight: 600;
390
443
  }
391
444
 
392
445
  .zanin-codeblock {
393
- background: #1c1917;
394
- border-radius: var(--zanin-radius-card);
395
- color: #e7e5e4;
446
+ background: #1a1a1a;
447
+ border-radius: var(--zanin-radius);
448
+ color: #e3e3e3;
396
449
  overflow: hidden;
397
450
  position: relative;
398
451
  }
399
452
  .zanin-codeblock-lang {
400
- color: #a8a29e;
453
+ color: #8a8a8a;
401
454
  font-family: var(--zanin-font-mono);
402
- font-size: 11px;
403
- letter-spacing: 0.09em;
455
+ font-size: 0.68em;
456
+ letter-spacing: 0.08em;
404
457
  position: absolute;
405
- right: 16px;
458
+ right: 14px;
406
459
  text-transform: uppercase;
407
- top: 12px;
460
+ top: 11px;
408
461
  }
409
462
  .zanin-codeblock pre {
410
463
  font-family: var(--zanin-font-mono);
411
- font-size: 13.5px;
464
+ font-size: 0.82em;
412
465
  line-height: 1.6;
413
466
  margin: 0;
414
467
  overflow-x: auto;
415
- padding: 20px 24px;
468
+ padding: calc(18px * var(--zanin-space)) 20px;
416
469
  }
417
470
  .zanin-codeblock code {
418
471
  background: none;
472
+ border: none;
419
473
  padding: 0;
420
474
  }
421
475
 
422
476
  .zanin-comparison {
477
+ border: 1px solid var(--zanin-hairline);
478
+ border-radius: var(--zanin-radius);
423
479
  overflow-x: auto;
424
480
  }
481
+ .zanin-comparison table {
482
+ margin: 0;
483
+ }
484
+ .zanin-comparison th,
485
+ .zanin-comparison td {
486
+ padding: 10px 14px;
487
+ }
488
+ .zanin-comparison tr:last-child td {
489
+ border-bottom: none;
490
+ }
425
491
  .zanin-comparison .zanin-highlight {
426
- background: color-mix(in srgb, var(--zanin-accent) 7%, transparent);
492
+ background: color-mix(in srgb, var(--zanin-accent) 6%, transparent);
427
493
  }
428
494
  .zanin-check {
429
- color: #15803d;
495
+ color: #0c5132;
430
496
  font-weight: 700;
431
497
  }
432
498
  .zanin-cross {
433
499
  color: var(--zanin-ink-faint);
434
500
  }
435
501
 
502
+ .zanin-faq {
503
+ border: 1px solid var(--zanin-hairline);
504
+ border-radius: var(--zanin-radius);
505
+ overflow: hidden;
506
+ }
436
507
  .zanin-faq details {
437
- border-top: 1px solid var(--zanin-hairline);
438
- padding: 16px 4px;
508
+ border-bottom: 1px solid var(--zanin-hairline);
509
+ padding: calc(14px * var(--zanin-space)) 18px;
439
510
  }
440
511
  .zanin-faq details:last-child {
441
- border-bottom: 1px solid var(--zanin-hairline);
512
+ border-bottom: none;
442
513
  }
443
514
  .zanin-faq summary {
444
515
  cursor: pointer;
445
- font-weight: 650;
516
+ font-weight: 600;
446
517
  list-style: none;
447
518
  }
448
519
  .zanin-faq summary::-webkit-details-marker {
@@ -452,13 +523,15 @@
452
523
  color: var(--zanin-ink-faint);
453
524
  content: "+";
454
525
  float: right;
455
- font-size: 18px;
526
+ font-size: 1.1em;
527
+ line-height: 1;
456
528
  }
457
529
  .zanin-faq details[open] summary::after {
458
530
  content: "–";
459
531
  }
460
532
  .zanin-faq details p {
461
533
  color: var(--zanin-ink-muted);
534
+ font-size: 0.94em;
462
535
  margin: 10px 0 0;
463
536
  }
464
537
 
@@ -466,11 +539,11 @@
466
539
 
467
540
  @media (max-width: 640px) {
468
541
  .zanin-blog {
469
- padding: 32px 18px 64px;
542
+ padding: calc(32px * var(--zanin-space)) 18px calc(64px * var(--zanin-space));
470
543
  }
471
544
  .zanin-index-header h1,
472
545
  .zanin-post-header h1 {
473
- font-size: 34px;
546
+ font-size: 1.9em;
474
547
  }
475
548
  }
476
549