@liustack/pagepress 0.1.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.
@@ -0,0 +1,452 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>{{title}}</title>
8
+ <style>
9
+ /* ===== VOGUE/WIRED Premium Magazine Style ===== */
10
+ /* Fonts (Bebas Neue, Cormorant Garamond, Inter) are injected at runtime via Fontsource */
11
+
12
+ :root {
13
+ --black: #0a0a0a;
14
+ --white: #ffffff;
15
+ --cream: #faf8f5;
16
+ --accent: #dc2626;
17
+ --accent-dark: #b91c1c;
18
+ --gray-100: #f5f5f5;
19
+ --gray-200: #e5e5e5;
20
+ --gray-400: #a0a0a0;
21
+ --gray-600: #666666;
22
+ }
23
+
24
+ * {
25
+ box-sizing: border-box;
26
+ }
27
+
28
+ body {
29
+ font-family: 'Inter', -apple-system, sans-serif;
30
+ font-size: 15px;
31
+ line-height: 1.9;
32
+ color: var(--black);
33
+ background: var(--white);
34
+ margin: 0;
35
+ font-weight: 400;
36
+ -webkit-print-color-adjust: exact;
37
+ print-color-adjust: exact;
38
+ }
39
+
40
+ .magazine {
41
+ max-width: 100%;
42
+ margin: 0;
43
+ padding: 0;
44
+ }
45
+
46
+ /* Body Content - Single Column */
47
+ .content {
48
+ max-width: 720px;
49
+ margin: 0 auto;
50
+ padding: 80px 60px 100px;
51
+ }
52
+
53
+ /* ===== Heading System ===== */
54
+ h1 {
55
+ font-family: 'Bebas Neue', Impact, sans-serif;
56
+ font-size: 5em;
57
+ font-weight: 400;
58
+ line-height: 0.95;
59
+ letter-spacing: 0.02em;
60
+ text-transform: uppercase;
61
+ margin: 0 0 0.2em;
62
+ color: var(--black);
63
+ }
64
+
65
+ h2 {
66
+ font-family: 'Bebas Neue', Impact, sans-serif;
67
+ font-size: 2.2em;
68
+ font-weight: 400;
69
+ letter-spacing: 0.02em;
70
+ text-transform: uppercase;
71
+ color: var(--black);
72
+ margin: 2em 0 0.5em;
73
+ position: relative;
74
+ padding-bottom: 0.4em;
75
+ }
76
+
77
+ h2::after {
78
+ content: '';
79
+ position: absolute;
80
+ bottom: 0;
81
+ left: 0;
82
+ width: 48px;
83
+ height: 2px;
84
+ background: var(--accent);
85
+ }
86
+
87
+ h3 {
88
+ font-family: 'Cormorant Garamond', Georgia, serif;
89
+ font-size: 1.4em;
90
+ font-weight: 600;
91
+ font-style: normal;
92
+ color: var(--gray-600);
93
+ margin: 1.8em 0 0.5em;
94
+ letter-spacing: 0.01em;
95
+ }
96
+
97
+ /* Subtitle/Lead */
98
+ .lead {
99
+ font-family: 'Cormorant Garamond', Georgia, serif;
100
+ font-size: 1.3em;
101
+ font-style: italic;
102
+ line-height: 1.7;
103
+ color: var(--gray-600);
104
+ margin-bottom: 2.5em;
105
+ border-left: 3px solid var(--accent);
106
+ padding-left: 1.2em;
107
+ }
108
+
109
+ /* Paragraph */
110
+ p {
111
+ margin: 0 0 1.4em;
112
+ text-align: justify;
113
+ hyphens: auto;
114
+ }
115
+
116
+ /* Drop Cap - Bold Style */
117
+ .content>p:first-of-type::first-letter {
118
+ font-family: 'Bebas Neue', Impact, sans-serif;
119
+ font-size: 4.5em;
120
+ float: left;
121
+ line-height: 0.8;
122
+ margin: 0.05em 0.1em 0 0;
123
+ color: var(--accent);
124
+ font-weight: 400;
125
+ }
126
+
127
+ /* Emphasis */
128
+ strong {
129
+ font-weight: 600;
130
+ color: var(--black);
131
+ }
132
+
133
+ em {
134
+ font-family: 'Cormorant Garamond', Georgia, serif;
135
+ font-style: italic;
136
+ }
137
+
138
+ /* Links */
139
+ a {
140
+ color: var(--accent-dark);
141
+ text-decoration: none;
142
+ border-bottom: 1px solid var(--accent);
143
+ transition: border-color 0.2s;
144
+ }
145
+
146
+ a:hover {
147
+ border-color: var(--accent-dark);
148
+ }
149
+
150
+ /* ===== Blockquote - Elegant Pull Quote ===== */
151
+ blockquote {
152
+ column-span: all;
153
+ margin: 3em 0;
154
+ padding: 2.5em 3em;
155
+ background: var(--cream);
156
+ border: none;
157
+ position: relative;
158
+ }
159
+
160
+ blockquote::before {
161
+ content: '"';
162
+ font-family: 'Bebas Neue', Impact, sans-serif;
163
+ font-size: 6em;
164
+ color: var(--accent);
165
+ position: absolute;
166
+ top: -0.1em;
167
+ left: 0.15em;
168
+ line-height: 1;
169
+ }
170
+
171
+ blockquote p {
172
+ font-family: 'Cormorant Garamond', Georgia, serif;
173
+ font-size: 1.5em;
174
+ font-style: italic;
175
+ font-weight: 400;
176
+ line-height: 1.5;
177
+ text-align: left;
178
+ color: var(--black);
179
+ margin: 0;
180
+ position: relative;
181
+ z-index: 1;
182
+ }
183
+
184
+ /* ===== Code ===== */
185
+ code {
186
+ font-family: 'JetBrains Mono', 'SF Mono', monospace;
187
+ font-size: 0.85em;
188
+ background: var(--gray-100);
189
+ padding: 0.2em 0.5em;
190
+ border-radius: 3px;
191
+ border: 1px solid var(--gray-200);
192
+ }
193
+
194
+ pre {
195
+ column-span: all;
196
+ font-family: 'JetBrains Mono', 'SF Mono', monospace;
197
+ font-size: 0.8em;
198
+ line-height: 1.7;
199
+ background: var(--black);
200
+ color: #e8e8e8;
201
+ padding: 28px 32px;
202
+ margin: 2.5em 0;
203
+ overflow-x: auto;
204
+ position: relative;
205
+ border-radius: 0;
206
+ }
207
+
208
+ pre::before {
209
+ content: '';
210
+ position: absolute;
211
+ top: 0;
212
+ left: 0;
213
+ width: 4px;
214
+ height: 100%;
215
+ background: linear-gradient(180deg, var(--accent) 0%, var(--accent-dark) 100%);
216
+ }
217
+
218
+ pre code {
219
+ background: transparent;
220
+ padding: 0;
221
+ color: inherit;
222
+ border: none;
223
+ }
224
+
225
+ /* Syntax Highlighting - Warm Dark */
226
+ pre .comment,
227
+ pre .c,
228
+ pre .c1,
229
+ pre .ch,
230
+ pre .cm,
231
+ pre .cs {
232
+ color: #6b7280;
233
+ font-style: italic;
234
+ }
235
+
236
+ pre .keyword,
237
+ pre .k,
238
+ pre .kc,
239
+ pre .kd,
240
+ pre .kn,
241
+ pre .kp,
242
+ pre .kr,
243
+ pre .kt {
244
+ color: #f0abfc;
245
+ }
246
+
247
+ pre .string,
248
+ pre .s,
249
+ pre .s1,
250
+ pre .s2,
251
+ pre .sa,
252
+ pre .sb,
253
+ pre .sc,
254
+ pre .sd,
255
+ pre .se,
256
+ pre .sh,
257
+ pre .si,
258
+ pre .sr,
259
+ pre .ss,
260
+ pre .sx {
261
+ color: #86efac;
262
+ }
263
+
264
+ pre .function,
265
+ pre .nf,
266
+ pre .fm {
267
+ color: #93c5fd;
268
+ }
269
+
270
+ pre .number,
271
+ pre .mi,
272
+ pre .mf,
273
+ pre .mh,
274
+ pre .mo,
275
+ pre .mb,
276
+ pre .il {
277
+ color: #fcd34d;
278
+ }
279
+
280
+ pre .class,
281
+ pre .nc,
282
+ pre .nd,
283
+ pre .ne {
284
+ color: #67e8f9;
285
+ }
286
+
287
+ pre .operator,
288
+ pre .o,
289
+ pre .ow {
290
+ color: #f0abfc;
291
+ }
292
+
293
+ pre .builtin,
294
+ pre .bp {
295
+ color: #93c5fd;
296
+ }
297
+
298
+ /* ===== Table ===== */
299
+ table {
300
+ column-span: all;
301
+ width: 100%;
302
+ border-collapse: collapse;
303
+ margin: 2.5em 0;
304
+ font-size: 0.95em;
305
+ }
306
+
307
+ th {
308
+ font-family: 'Inter', sans-serif;
309
+ font-size: 0.75em;
310
+ font-weight: 600;
311
+ letter-spacing: 0.08em;
312
+ text-transform: uppercase;
313
+ text-align: left;
314
+ padding: 14px 18px;
315
+ background: var(--black);
316
+ color: var(--white);
317
+ }
318
+
319
+ th:first-child {
320
+ border-left: 3px solid var(--accent);
321
+ }
322
+
323
+ td {
324
+ padding: 14px 18px;
325
+ border-bottom: 1px solid var(--gray-200);
326
+ vertical-align: top;
327
+ }
328
+
329
+ tr:hover td {
330
+ background: var(--cream);
331
+ }
332
+
333
+ /* ===== Lists ===== */
334
+ ul,
335
+ ol {
336
+ margin: 1.4em 0;
337
+ padding-left: 1.5em;
338
+ }
339
+
340
+ li {
341
+ margin-bottom: 0.5em;
342
+ }
343
+
344
+ ul {
345
+ list-style: none;
346
+ }
347
+
348
+ ul li {
349
+ position: relative;
350
+ padding-left: 0.3em;
351
+ }
352
+
353
+ ul li::before {
354
+ content: '';
355
+ position: absolute;
356
+ left: -1.2em;
357
+ top: 0.65em;
358
+ width: 6px;
359
+ height: 6px;
360
+ background: var(--accent);
361
+ border-radius: 50%;
362
+ }
363
+
364
+ ol li::marker {
365
+ color: var(--accent-dark);
366
+ font-weight: 600;
367
+ }
368
+
369
+ /* ===== Divider ===== */
370
+ hr {
371
+ column-span: all;
372
+ border: none;
373
+ height: 3px;
374
+ background: var(--black);
375
+ margin: 3em 0;
376
+ opacity: 1;
377
+ }
378
+
379
+ /* ===== Images ===== */
380
+ figure {
381
+ column-span: all;
382
+ margin: 2.5em 0;
383
+ }
384
+
385
+ img {
386
+ width: 100%;
387
+ height: auto;
388
+ display: block;
389
+ }
390
+
391
+ figcaption {
392
+ font-size: 0.8em;
393
+ color: var(--gray-600);
394
+ font-style: italic;
395
+ margin-top: 12px;
396
+ padding-left: 12px;
397
+ border-left: 2px solid var(--accent);
398
+ }
399
+
400
+ /* ===== Print ===== */
401
+ @page {
402
+ size: A4;
403
+ margin: 24mm 20mm;
404
+ }
405
+
406
+ @media print {
407
+ body {
408
+ background: white;
409
+ }
410
+
411
+ .content {
412
+ max-width: 100%;
413
+ padding: 0;
414
+ }
415
+
416
+ pre,
417
+ th {
418
+ -webkit-print-color-adjust: exact;
419
+ print-color-adjust: exact;
420
+ }
421
+
422
+ h1,
423
+ h2 {
424
+ page-break-after: avoid;
425
+ }
426
+
427
+ pre,
428
+ blockquote,
429
+ table,
430
+ figure {
431
+ page-break-inside: avoid;
432
+ }
433
+ }
434
+
435
+ .content.single-column {
436
+ column-count: 1;
437
+ }
438
+ </style>
439
+ {{styles}}
440
+ </head>
441
+
442
+ <body>
443
+ <main class="magazine">
444
+ <div class="content">
445
+ {{body}}
446
+ </div>
447
+ </main>
448
+
449
+
450
+ </body>
451
+
452
+ </html>