@open-press/cli 0.8.0 → 1.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.
Files changed (153) hide show
  1. package/README.md +25 -14
  2. package/dist/cli.js +44 -195
  3. package/package.json +4 -5
  4. package/template/core/AGENTS.md +18 -14
  5. package/template/core/CHANGELOG.md +12 -9
  6. package/template/core/README.md +6 -3
  7. package/template/core/engine/cli.mjs +8 -8
  8. package/template/core/engine/commands/_shared.mjs +37 -15
  9. package/template/core/engine/commands/image.mjs +29 -0
  10. package/template/core/engine/commands/skills-sync.mjs +71 -0
  11. package/template/core/engine/commands/typecheck.mjs +63 -1
  12. package/template/core/engine/commands/upgrade.mjs +3 -3
  13. package/template/core/engine/document-export.mjs +1 -1
  14. package/template/core/engine/output/chrome-pdf.mjs +92 -0
  15. package/template/core/engine/output/static-server.mjs +48 -9
  16. package/template/core/engine/react/comment-marker.mjs +13 -13
  17. package/template/core/engine/react/document-entry.mjs +35 -28
  18. package/template/core/engine/react/document-export.mjs +309 -170
  19. package/template/core/engine/react/mdx-compile.mjs +30 -0
  20. package/template/core/engine/react/measurement-css.mjs +21 -0
  21. package/template/core/engine/react/object-entities.mjs +85 -0
  22. package/template/core/engine/react/pagination/allocator.mjs +48 -3
  23. package/template/core/engine/react/pagination.mjs +1 -1
  24. package/template/core/engine/react/pipeline/allocate.mjs +31 -65
  25. package/template/core/engine/react/pipeline/frame-measurement.mjs +4 -0
  26. package/template/core/engine/react/press-tree-inspection.mjs +172 -0
  27. package/template/core/engine/react/sources/mdx-resolver.mjs +1 -1
  28. package/template/core/engine/react/style-discovery.mjs +22 -4
  29. package/template/core/engine/runtime/config.d.mts +8 -0
  30. package/template/core/engine/runtime/config.mjs +57 -60
  31. package/template/core/engine/runtime/file-utils.mjs +9 -1
  32. package/template/core/engine/runtime/page-geometry.mjs +131 -0
  33. package/template/core/engine/runtime/source-text-tools.mjs +1 -1
  34. package/template/core/engine/runtime/source-workspace.mjs +12 -3
  35. package/template/core/engine/runtime/validation.mjs +19 -10
  36. package/template/core/openpress.config.mjs +3 -7
  37. package/template/core/package.json +3 -5
  38. package/template/core/src/openpress/app/OpenPressApp.tsx +173 -17
  39. package/template/core/src/openpress/app/OpenPressRuntime.tsx +10 -2
  40. package/template/core/src/openpress/app/WorkspaceGalleryPage.tsx +219 -0
  41. package/template/core/src/openpress/core/Frame.tsx +20 -7
  42. package/template/core/src/openpress/core/FrameContext.tsx +2 -0
  43. package/template/core/src/openpress/core/Press.tsx +25 -4
  44. package/template/core/src/openpress/core/Workspace.tsx +36 -0
  45. package/template/core/src/openpress/core/index.tsx +10 -3
  46. package/template/core/src/openpress/core/primitives.tsx +48 -1
  47. package/template/core/src/openpress/core/types.ts +86 -41
  48. package/template/core/src/openpress/core/useSource.ts +1 -1
  49. package/template/core/src/openpress/document-model/documentTypes.ts +9 -0
  50. package/template/core/src/openpress/document-model/index.ts +1 -0
  51. package/template/core/src/openpress/document-model/objectEntityModel.ts +4 -0
  52. package/template/core/src/openpress/document-model/workspaceManifestModel.ts +57 -0
  53. package/template/core/src/openpress/mdx/index.ts +15 -7
  54. package/template/core/src/openpress/reader/PageThumbnailsPanel.tsx +168 -0
  55. package/template/core/src/openpress/reader/index.ts +1 -0
  56. package/template/core/src/openpress/workbench/Workbench.tsx +120 -21
  57. package/template/core/src/openpress/workbench/actions/ExportImageControl.tsx +96 -0
  58. package/template/core/src/openpress/workbench/actions/SearchControl.tsx +3 -3
  59. package/template/core/src/openpress/workbench/actions/index.ts +1 -0
  60. package/template/core/src/openpress/workbench/inspector/useInspectorComments.ts +7 -1
  61. package/template/core/src/openpress/workbench/panels/PendingCommentsPanel.tsx +5 -1
  62. package/template/core/src/openpress/workbench/project/ProjectEntryPanel.tsx +4 -2
  63. package/template/core/src/openpress/workbench/workbenchFormatters.ts +2 -2
  64. package/template/core/src/styles/openpress/reader-runtime.css +9 -0
  65. package/template/core/src/styles/openpress/workbench-panels.css +113 -0
  66. package/template/core/src/styles/openpress/workspace-gallery.css +300 -0
  67. package/template/core/src/styles/openpress.css +1 -0
  68. package/template/core/tsconfig.json +1 -1
  69. package/template/core/engine/commands/init.mjs +0 -24
  70. package/template/core/engine/init.mjs +0 -90
  71. package/template/packs/academic-paper/document/chapters/01-introduction/content/01-introduction.mdx +0 -35
  72. package/template/packs/academic-paper/document/chapters/02-methods/content/01-methods.mdx +0 -50
  73. package/template/packs/academic-paper/document/chapters/03-results-and-discussion/content/01-results.mdx +0 -47
  74. package/template/packs/academic-paper/document/chapters/04-acknowledgment/content/01-acknowledgment.mdx +0 -26
  75. package/template/packs/academic-paper/document/chapters/05-references/content/01-references.mdx +0 -32
  76. package/template/packs/academic-paper/document/components/ChapterOpenerVisual/index.tsx +0 -76
  77. package/template/packs/academic-paper/document/components/Page.tsx +0 -60
  78. package/template/packs/academic-paper/document/components/TokenSwatchGrid/index.tsx +0 -46
  79. package/template/packs/academic-paper/document/components/TokenSwatchGrid/style.css +0 -63
  80. package/template/packs/academic-paper/document/components/TypeSpecimen/index.tsx +0 -38
  81. package/template/packs/academic-paper/document/components/TypeSpecimen/style.css +0 -111
  82. package/template/packs/academic-paper/document/design.md +0 -279
  83. package/template/packs/academic-paper/document/index.tsx +0 -123
  84. package/template/packs/academic-paper/document/media/README.md +0 -13
  85. package/template/packs/academic-paper/document/media/figure-placeholder.svg +0 -9
  86. package/template/packs/academic-paper/document/openpress.config.mjs +0 -26
  87. package/template/packs/academic-paper/document/theme/README.md +0 -11
  88. package/template/packs/academic-paper/document/theme/base/page-contract.css +0 -522
  89. package/template/packs/academic-paper/document/theme/base/print.css +0 -93
  90. package/template/packs/academic-paper/document/theme/base/typography.css +0 -333
  91. package/template/packs/academic-paper/document/theme/fonts.css +0 -3
  92. package/template/packs/academic-paper/document/theme/page-surfaces/back-cover.css +0 -43
  93. package/template/packs/academic-paper/document/theme/page-surfaces/chapter-opener.css +0 -205
  94. package/template/packs/academic-paper/document/theme/page-surfaces/cover.css +0 -294
  95. package/template/packs/academic-paper/document/theme/page-surfaces/toc.css +0 -149
  96. package/template/packs/academic-paper/document/theme/patterns/_chart-frame.css +0 -49
  97. package/template/packs/academic-paper/document/theme/patterns/figure-grid.css +0 -68
  98. package/template/packs/academic-paper/document/theme/patterns/table-utilities.css +0 -66
  99. package/template/packs/academic-paper/document/theme/shell/reader-controls.css +0 -761
  100. package/template/packs/academic-paper/document/theme/tokens.css +0 -80
  101. package/template/packs/academic-paper/openpress.config.mjs +0 -5
  102. package/template/packs/claude-document/document/chapters/01-document-shape/content/01-document-shape.mdx +0 -51
  103. package/template/packs/claude-document/document/chapters/02-review-loop/content/01-review-loop.mdx +0 -31
  104. package/template/packs/claude-document/document/components/ChapterOpenerVisual.tsx +0 -96
  105. package/template/packs/claude-document/document/components/Page.tsx +0 -37
  106. package/template/packs/claude-document/document/design.md +0 -142
  107. package/template/packs/claude-document/document/index.tsx +0 -94
  108. package/template/packs/claude-document/document/media/README.md +0 -13
  109. package/template/packs/claude-document/document/openpress.config.mjs +0 -26
  110. package/template/packs/claude-document/document/theme/README.md +0 -15
  111. package/template/packs/claude-document/document/theme/base/page-contract.css +0 -525
  112. package/template/packs/claude-document/document/theme/base/print.css +0 -93
  113. package/template/packs/claude-document/document/theme/base/typography.css +0 -612
  114. package/template/packs/claude-document/document/theme/fonts.css +0 -4
  115. package/template/packs/claude-document/document/theme/page-surfaces/back-cover.css +0 -72
  116. package/template/packs/claude-document/document/theme/page-surfaces/chapter-opener.css +0 -236
  117. package/template/packs/claude-document/document/theme/page-surfaces/cover.css +0 -309
  118. package/template/packs/claude-document/document/theme/page-surfaces/toc.css +0 -225
  119. package/template/packs/claude-document/document/theme/patterns/_chart-frame.css +0 -53
  120. package/template/packs/claude-document/document/theme/patterns/figure-grid.css +0 -68
  121. package/template/packs/claude-document/document/theme/patterns/table-utilities.css +0 -66
  122. package/template/packs/claude-document/document/theme/shell/reader-controls.css +0 -789
  123. package/template/packs/claude-document/document/theme/tokens.css +0 -89
  124. package/template/packs/claude-document/openpress.config.mjs +0 -5
  125. package/template/packs/editorial-monograph/document/chapters/01-product-and-use-cases/content/01-product-and-use-cases.mdx +0 -31
  126. package/template/packs/editorial-monograph/document/chapters/02-workflow/content/01-workflow.mdx +0 -89
  127. package/template/packs/editorial-monograph/document/chapters/03-agent-skills-contributors/content/01-agent-skills-contributors.mdx +0 -51
  128. package/template/packs/editorial-monograph/document/chapters/04-validation-deploy/content/01-validation-deploy.mdx +0 -39
  129. package/template/packs/editorial-monograph/document/components/ChapterOpenerVisual/index.tsx +0 -76
  130. package/template/packs/editorial-monograph/document/components/Page.tsx +0 -37
  131. package/template/packs/editorial-monograph/document/components/TokenSwatchGrid/index.tsx +0 -46
  132. package/template/packs/editorial-monograph/document/components/TokenSwatchGrid/style.css +0 -63
  133. package/template/packs/editorial-monograph/document/components/TypeSpecimen/index.tsx +0 -38
  134. package/template/packs/editorial-monograph/document/components/TypeSpecimen/style.css +0 -111
  135. package/template/packs/editorial-monograph/document/design.md +0 -279
  136. package/template/packs/editorial-monograph/document/index.tsx +0 -97
  137. package/template/packs/editorial-monograph/document/media/README.md +0 -13
  138. package/template/packs/editorial-monograph/document/openpress.config.mjs +0 -26
  139. package/template/packs/editorial-monograph/document/theme/README.md +0 -11
  140. package/template/packs/editorial-monograph/document/theme/base/page-contract.css +0 -505
  141. package/template/packs/editorial-monograph/document/theme/base/print.css +0 -93
  142. package/template/packs/editorial-monograph/document/theme/base/typography.css +0 -336
  143. package/template/packs/editorial-monograph/document/theme/fonts.css +0 -3
  144. package/template/packs/editorial-monograph/document/theme/page-surfaces/back-cover.css +0 -43
  145. package/template/packs/editorial-monograph/document/theme/page-surfaces/chapter-opener.css +0 -205
  146. package/template/packs/editorial-monograph/document/theme/page-surfaces/cover.css +0 -147
  147. package/template/packs/editorial-monograph/document/theme/page-surfaces/toc.css +0 -149
  148. package/template/packs/editorial-monograph/document/theme/patterns/_chart-frame.css +0 -49
  149. package/template/packs/editorial-monograph/document/theme/patterns/figure-grid.css +0 -68
  150. package/template/packs/editorial-monograph/document/theme/patterns/table-utilities.css +0 -66
  151. package/template/packs/editorial-monograph/document/theme/shell/reader-controls.css +0 -761
  152. package/template/packs/editorial-monograph/document/theme/tokens.css +0 -80
  153. package/template/packs/editorial-monograph/openpress.config.mjs +0 -5
@@ -1,93 +0,0 @@
1
- @media print {
2
- html,
3
- body {
4
- background: #fff;
5
- }
6
-
7
- .reader-app {
8
- display: block;
9
- height: auto;
10
- overflow: visible;
11
- grid-template-columns: none !important;
12
- grid-template-rows: none !important;
13
- grid-template-areas: none !important;
14
- }
15
-
16
- .reader-navbar,
17
- .reader-side-nav,
18
- .reader-thumb-strip,
19
- .reader-thumbs,
20
- .reader-page.measurement {
21
- display: none !important;
22
- }
23
-
24
- .reader-stage,
25
- .reader-pages {
26
- display: block;
27
- padding: 0;
28
- perspective: none;
29
- width: auto;
30
- height: auto;
31
- background: #fff;
32
- }
33
-
34
- .reader-page,
35
- .reader-page.is-active,
36
- .reader-page--cover.is-active,
37
- .reader-page--back-cover.is-active {
38
- display: block;
39
- width: auto;
40
- aspect-ratio: auto;
41
- max-height: none;
42
- overflow: visible;
43
- box-shadow: none;
44
- outline: 0;
45
- margin: 0;
46
- break-after: auto;
47
- animation: none !important;
48
- transform: none !important;
49
- }
50
-
51
- .reader-page--cover,
52
- .reader-page--toc,
53
- .reader-page--content,
54
- .reader-page--back-cover {
55
- padding: 0;
56
- }
57
-
58
- .reader-page--toc {
59
- break-before: page;
60
- }
61
-
62
- .reader-page--back-cover {
63
- break-before: page;
64
- }
65
-
66
- .reader-page--content .page-body > h2:first-child {
67
- break-before: page;
68
- break-after: avoid;
69
- }
70
-
71
- h2,
72
- h3,
73
- h4 {
74
- break-after: avoid;
75
- }
76
-
77
- figure,
78
- table,
79
- .toc-list {
80
- break-inside: avoid;
81
- }
82
-
83
- .toc-list a {
84
- display: grid;
85
- grid-template-columns: 10mm 1fr 14mm;
86
- gap: 4mm;
87
- align-items: baseline;
88
- }
89
-
90
- a {
91
- color: inherit;
92
- }
93
- }
@@ -1,333 +0,0 @@
1
- /* Page-surface styles (cover, back-cover, toc) live in
2
- * document/theme/page-surfaces/. */
3
-
4
- .reader-page--content {
5
- padding: 0;
6
- }
7
-
8
- .content-body {
9
- background: var(--openpress-color-document);
10
- }
11
-
12
- h2,
13
- h3,
14
- h4 {
15
- break-after: avoid;
16
- color: var(--openpress-color-ink);
17
- letter-spacing: normal;
18
- }
19
-
20
- h2 {
21
- margin: 0 0 var(--openpress-space-3);
22
- padding: 0;
23
- font-family: var(--openpress-font-serif);
24
- font-size: clamp(15px, 2.4cqw, 20px);
25
- line-height: 1.45;
26
- font-weight: 700;
27
- border: 0;
28
- }
29
-
30
- h2::before {
31
- content: none;
32
- }
33
-
34
- .reader-page--content .page-body .openpress-mdx-area h2 {
35
- display: flex;
36
- align-items: baseline;
37
- gap: 0.55em;
38
- margin: 0 0 var(--openpress-space-4);
39
- }
40
-
41
- .reader-page--content .page-body .openpress-mdx-area h2::before {
42
- content: attr(data-chapter);
43
- display: inline-block;
44
- flex-shrink: 0;
45
- font-family: var(--openpress-font-serif);
46
- font-size: 0.88em;
47
- font-weight: 700;
48
- color: var(--openpress-color-ink);
49
- line-height: 1;
50
- letter-spacing: normal;
51
- width: auto;
52
- min-width: 0;
53
- height: auto;
54
- background: transparent;
55
- padding-right: 0.22em;
56
- margin: 0;
57
- border: 0;
58
- }
59
-
60
- .reader-page--content h3[data-section] {
61
- display: flex;
62
- align-items: baseline;
63
- gap: 0.55em;
64
- }
65
-
66
- .reader-page--content h3[data-section]::before {
67
- content: attr(data-section);
68
- flex-shrink: 0;
69
- font-family: var(--openpress-font-serif);
70
- font-size: 0.98em;
71
- font-weight: 500;
72
- color: var(--openpress-color-ink);
73
- letter-spacing: normal;
74
- line-height: inherit;
75
- }
76
-
77
- h2 + p,
78
- h2 + h3 {
79
- margin-top: var(--openpress-space-2);
80
- }
81
-
82
- h3 {
83
- margin: var(--openpress-space-3) 0 var(--openpress-space-2);
84
- font-family: var(--openpress-font-serif);
85
- font-size: clamp(12px, 2cqw, 16px);
86
- line-height: 1.5;
87
- font-weight: 500;
88
- color: var(--openpress-color-ink);
89
- letter-spacing: normal;
90
- }
91
-
92
- .reader-page--content .page-body > h3:first-child {
93
- margin-top: 0;
94
- }
95
-
96
- h4 {
97
- margin: var(--openpress-space-3) 0 var(--openpress-space-1);
98
- font-family: var(--openpress-font-serif);
99
- font-size: clamp(10px, 1.75cqw, 14px);
100
- font-weight: 500;
101
- color: var(--openpress-color-muted);
102
- letter-spacing: 0.01em;
103
- }
104
-
105
- p {
106
- margin: 0 0 var(--openpress-space-2);
107
- font-size: clamp(10px, 1.8cqw, 11px);
108
- line-height: 1.65;
109
- text-align: justify;
110
- text-justify: inter-word;
111
- }
112
-
113
- .reader-page--content p,
114
- .reader-page--content li,
115
- .reader-page--content td {
116
- hanging-punctuation: first allow-end;
117
- }
118
-
119
- .reader-page--content.is-chapter-end .page-body::after {
120
- content: "―";
121
- display: block;
122
- text-align: center;
123
- margin-top: var(--openpress-space-1);
124
- color: var(--openpress-color-muted);
125
- font-size: 1em;
126
- letter-spacing: 0.4em;
127
- opacity: 0.45;
128
- }
129
-
130
- strong {
131
- font-weight: 600;
132
- color: var(--openpress-color-ink);
133
- }
134
-
135
- em {
136
- font-style: italic;
137
- font-family: var(--openpress-font-serif);
138
- color: var(--openpress-color-ink);
139
- }
140
-
141
- del,
142
- s {
143
- color: var(--openpress-color-muted);
144
- text-decoration-thickness: 1px;
145
- text-decoration-color: var(--openpress-color-muted);
146
- }
147
-
148
- mark {
149
- background: var(--openpress-chart-gold-bg);
150
- color: var(--openpress-color-ink);
151
- padding: 0 0.15em;
152
- border-radius: 1px;
153
- }
154
-
155
- a {
156
- color: var(--openpress-color-ink);
157
- text-decoration-line: underline;
158
- text-decoration-style: dotted;
159
- text-decoration-color: var(--openpress-color-muted);
160
- text-underline-offset: 2px;
161
- }
162
-
163
- /* Inline 語意強調 — 受控 status 色票
164
- * Markdown 內用 <span class="status-warn|status-success|status-info">。
165
- * 不提供 .accent-<color>(按色相命名)以避免破壞語意系統。
166
- */
167
- .status-warn {
168
- color: var(--openpress-status-warn);
169
- font-weight: 600;
170
- }
171
-
172
- .status-success {
173
- color: var(--openpress-status-success);
174
- font-weight: 600;
175
- }
176
-
177
- .status-info {
178
- color: var(--openpress-status-info);
179
- font-weight: 600;
180
- }
181
-
182
- .text-muted {
183
- color: var(--openpress-color-muted);
184
- }
185
-
186
- figcaption,
187
- caption {
188
- margin-top: 2mm;
189
- color: var(--openpress-color-muted);
190
- font-size: clamp(3.8pt, 1.45cqw, 8.5pt);
191
- line-height: 1.5;
192
- letter-spacing: 0.02em;
193
- text-align: center;
194
- }
195
-
196
- caption {
197
- caption-side: bottom;
198
- margin: var(--openpress-space-1) 0 0;
199
- text-align: center;
200
- }
201
-
202
- ol,
203
- ul {
204
- margin: 0 0 var(--openpress-space-3);
205
- padding-left: 7mm;
206
- font-size: clamp(10px, 1.75cqw, 11px);
207
- line-height: 1.65;
208
- }
209
-
210
- ol {
211
- list-style: decimal outside;
212
- }
213
-
214
- ul {
215
- list-style: disc outside;
216
- }
217
-
218
- li {
219
- margin: 0 0 1.4mm;
220
- padding-left: 1mm;
221
- }
222
-
223
- figure {
224
- break-inside: avoid;
225
- margin: var(--openpress-space-4) 0 var(--openpress-space-2);
226
- }
227
-
228
- figure img {
229
- display: block;
230
- max-width: 100%;
231
- max-height: 135mm;
232
- margin: 0 auto;
233
- padding: 6px;
234
- border: 1px solid var(--openpress-color-line);
235
- background: #ffffff;
236
- box-sizing: border-box;
237
- }
238
-
239
- .reader-page--content .page-body > figure {
240
- width: min(86%, 150mm);
241
- margin-left: auto;
242
- margin-right: auto;
243
- }
244
-
245
- .reader-page--content .page-body > figure img {
246
- width: 100%;
247
- max-height: 92mm;
248
- object-fit: contain;
249
- }
250
-
251
- table {
252
- width: 100%;
253
- margin: var(--openpress-space-3) 0 var(--openpress-space-4);
254
- border-collapse: collapse;
255
- border: 0;
256
- border-top: 1px solid var(--openpress-color-ink);
257
- background: transparent;
258
- font-size: clamp(3.5pt, 1.55cqw, 9pt);
259
- line-height: var(--openpress-leading-table);
260
- break-inside: avoid;
261
- }
262
-
263
- thead {
264
- display: table-header-group;
265
- }
266
-
267
- th,
268
- td {
269
- padding: 3.4mm 2.4mm;
270
- border: 0;
271
- border-bottom: 1px solid var(--openpress-color-line);
272
- vertical-align: top;
273
- min-width: 0;
274
- overflow-wrap: anywhere;
275
- word-break: normal;
276
- }
277
-
278
- th {
279
- color: var(--openpress-color-ink);
280
- background: transparent;
281
- border-bottom: 1px solid var(--openpress-color-ink);
282
- text-align: left;
283
- font-weight: 500;
284
- letter-spacing: 0.02em;
285
- white-space: nowrap;
286
- }
287
-
288
- .reader-page--content tbody tr:nth-child(even) td {
289
- background: #fafafa;
290
- }
291
-
292
- .reader-page--content table:not(.figure-grid) tbody tr:last-child td {
293
- border-bottom: 1px solid var(--openpress-color-ink);
294
- }
295
-
296
- code {
297
- font-family: var(--openpress-font-mono);
298
- font-size: 0.92em;
299
- padding: 0.05em 0.25em;
300
- background: rgba(0, 0, 0, 0.04);
301
- border-radius: 2px;
302
- overflow-wrap: anywhere;
303
- word-break: normal;
304
- }
305
-
306
- pre {
307
- max-width: 100%;
308
- margin: var(--openpress-space-2) 0 var(--openpress-space-3);
309
- padding: 2.6mm 3.2mm;
310
- white-space: pre-wrap;
311
- overflow-wrap: anywhere;
312
- word-break: normal;
313
- background: #f7f7f4;
314
- border: 0;
315
- border-top: 1px solid var(--openpress-color-line);
316
- border-bottom: 1px solid var(--openpress-color-line);
317
- }
318
-
319
- pre code {
320
- display: block;
321
- padding: 0;
322
- background: transparent;
323
- border-radius: 0;
324
- font-size: clamp(4pt, 1.65cqw, 9.2pt);
325
- line-height: 1.65;
326
- color: #262626;
327
- }
328
-
329
- hr {
330
- margin: var(--openpress-space-4) 0;
331
- border: 0;
332
- border-top: 1px solid var(--openpress-color-line);
333
- }
@@ -1,3 +0,0 @@
1
- /* open-press copies this file to /openpress/fonts.css during export. */
2
- @import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;500;600;700&family=Noto+Sans+TC:wght@300;400;500;600;700&family=Noto+Serif+TC:wght@300;400;600&display=swap");
3
-
@@ -1,43 +0,0 @@
1
- /* page-surfaces / back-cover
2
- * Refinements on top of cover.css: back-cover centers its main column and
3
- * uses a kicker + statement + summary instead of title + tagline + summary.
4
- */
5
-
6
- .back-cover-main {
7
- justify-content: center;
8
- }
9
-
10
- .back-cover-kicker {
11
- margin: 0;
12
- font-family: var(--openpress-font-serif);
13
- font-size: clamp(30px, 6.8cqw, 54px);
14
- font-weight: 300;
15
- line-height: 1;
16
- letter-spacing: 0.01em;
17
- color: var(--openpress-color-ink);
18
- }
19
-
20
- .back-cover-statement {
21
- margin: 0;
22
- max-width: 84%;
23
- font-family: var(--openpress-font-body);
24
- font-size: clamp(11.5pt, 2.05cqw, 14pt);
25
- font-weight: 400;
26
- line-height: 1.6;
27
- letter-spacing: 0.02em;
28
- color: var(--openpress-color-ink);
29
- }
30
-
31
- .back-cover-summary {
32
- margin: var(--openpress-space-2) 0 0;
33
- max-width: 90%;
34
- font-family: var(--openpress-font-body);
35
- font-size: clamp(9pt, 1.65cqw, 10pt);
36
- line-height: 1.8;
37
- color: var(--openpress-color-muted);
38
- }
39
-
40
- .back-cover-visual img {
41
- max-height: 18cqh;
42
- opacity: 0.9;
43
- }
@@ -1,205 +0,0 @@
1
- /* page-surfaces / chapter-opener
2
- * Optional H2-level divider for book-like documents. Formal reports can omit
3
- * the `kind: chapter-opener` source page and this surface will not appear.
4
- */
5
-
6
- .reader-page--chapter-opener {
7
- position: relative;
8
- overflow: hidden;
9
- background:
10
- linear-gradient(90deg, rgba(31, 35, 40, 0.08), transparent 42%),
11
- var(--openpress-color-document);
12
- }
13
-
14
- .reader-page--chapter-opener:has(.chapter-opener-illustration) {
15
- --chapter-opener-bg: #6f9f8a;
16
- --chapter-opener-ink: #101211;
17
- --chapter-opener-title: #101211;
18
- --chapter-opener-paper: var(--openpress-color-document);
19
- background: var(--chapter-opener-bg);
20
- }
21
-
22
- .reader-page--chapter-opener:has(.chapter-opener-tone--sage) {
23
- --chapter-opener-bg: #6f9f8a;
24
- --chapter-opener-title: #101211;
25
- --chapter-opener-paper: var(--openpress-color-document);
26
- }
27
-
28
- .reader-page--chapter-opener:has(.chapter-opener-tone--lavender) {
29
- --chapter-opener-bg: #8680bf;
30
- --chapter-opener-title: #101211;
31
- --chapter-opener-paper: var(--openpress-color-document);
32
- }
33
-
34
- .reader-page--chapter-opener:has(.chapter-opener-tone--mint) {
35
- --chapter-opener-bg: #bfd4cd;
36
- --chapter-opener-title: #101211;
37
- --chapter-opener-paper: var(--openpress-color-document);
38
- }
39
-
40
- .reader-page--chapter-opener:has(.chapter-opener-tone--amber) {
41
- --chapter-opener-bg: #d7b56d;
42
- --chapter-opener-title: #101211;
43
- --chapter-opener-paper: var(--openpress-color-document);
44
- }
45
-
46
- .reader-page--chapter-opener::before {
47
- content: "";
48
- position: absolute;
49
- inset: 0 auto 0 0;
50
- width: 5mm;
51
- background: color-mix(in srgb, var(--openpress-color-soft-line), transparent 28%);
52
- border-right: 1px solid var(--openpress-color-line);
53
- }
54
-
55
- .reader-page--chapter-opener:has(.chapter-opener-illustration)::before {
56
- content: none;
57
- }
58
-
59
- .reader-page--chapter-opener .page-frame {
60
- background: transparent;
61
- }
62
-
63
- .reader-page--chapter-opener .page-body {
64
- position: relative;
65
- display: flex;
66
- flex-direction: column;
67
- justify-content: center;
68
- gap: clamp(20px, 3.4cqw, 40px);
69
- width: min(138mm, 84%);
70
- max-width: none;
71
- min-height: 0;
72
- margin-inline: auto;
73
- padding-bottom: 4mm;
74
- z-index: 1;
75
- }
76
-
77
- .reader-page--chapter-opener:has(.chapter-opener-illustration) .page-body {
78
- justify-content: flex-end;
79
- align-items: flex-start;
80
- width: min(168mm, 86%);
81
- padding-bottom: 28mm;
82
- gap: clamp(10px, 1.8cqw, 20px);
83
- z-index: 2;
84
- }
85
-
86
- .reader-page--chapter-opener .page-body::before {
87
- content: none;
88
- }
89
-
90
- .reader-page--chapter-opener:has(.chapter-opener-illustration) .chapter-opener-body {
91
- display: contents;
92
- }
93
-
94
- .chapter-opener-illustration {
95
- position: absolute;
96
- top: 22mm;
97
- right: 14mm;
98
- width: min(112mm, 54%);
99
- margin: 0;
100
- color: var(--chapter-opener-ink, #101211);
101
- z-index: 1;
102
- }
103
-
104
- .chapter-opener-illustration svg {
105
- display: block;
106
- width: 100%;
107
- height: auto;
108
- overflow: visible;
109
- }
110
-
111
- .chapter-opener-illustration__paper {
112
- fill: var(--chapter-opener-paper, var(--openpress-color-document));
113
- }
114
-
115
- .chapter-opener-illustration__stroke,
116
- .chapter-opener-illustration__arrow,
117
- .chapter-opener-illustration__thin {
118
- fill: none;
119
- stroke: currentColor;
120
- stroke-linecap: round;
121
- stroke-linejoin: round;
122
- }
123
-
124
- .chapter-opener-illustration__stroke,
125
- .chapter-opener-illustration__arrow {
126
- stroke-width: 14;
127
- }
128
-
129
- .chapter-opener-illustration__thin {
130
- stroke-width: 8;
131
- }
132
-
133
- .chapter-opener-illustration__node,
134
- .chapter-opener-illustration__dot {
135
- fill: currentColor;
136
- }
137
-
138
- .chapter-opener-kicker {
139
- display: none;
140
- }
141
-
142
- .reader-page--chapter-opener:has(.chapter-opener-illustration) .chapter-opener-kicker {
143
- display: inline-flex;
144
- align-items: center;
145
- width: fit-content;
146
- min-height: 8mm;
147
- margin: 0 0 clamp(4px, 1cqw, 10px);
148
- padding: 0 7mm;
149
- border: 1px solid currentColor;
150
- border-radius: 999px;
151
- color: var(--chapter-opener-ink, #101211);
152
- font-size: clamp(10pt, 1.8cqw, 14pt);
153
- font-weight: 700;
154
- line-height: 1;
155
- }
156
-
157
- .chapter-opener-title {
158
- max-width: 100%;
159
- margin: 0;
160
- color: var(--openpress-color-ink);
161
- font-family: var(--openpress-font-serif);
162
- font-size: clamp(36pt, 8.4cqw, 64pt);
163
- font-weight: 600;
164
- line-height: 0.98;
165
- }
166
-
167
- .reader-page--chapter-opener:has(.chapter-opener-illustration) .chapter-opener-title {
168
- max-width: 118mm;
169
- color: var(--chapter-opener-title, var(--openpress-color-ink));
170
- font-size: clamp(52px, 12.4cqw, 112px);
171
- line-height: 0.92;
172
- }
173
-
174
- .chapter-opener-title::before {
175
- content: none;
176
- }
177
-
178
- .chapter-opener-subtitle {
179
- max-width: 112mm;
180
- margin: 0;
181
- color: var(--openpress-color-ink);
182
- font-size: clamp(18pt, 3.7cqw, 28pt);
183
- line-height: 1.35;
184
- }
185
-
186
- .reader-page--chapter-opener:has(.chapter-opener-illustration) .chapter-opener-subtitle {
187
- max-width: 100mm;
188
- color: var(--chapter-opener-title, var(--openpress-color-ink));
189
- }
190
-
191
- .chapter-opener-summary {
192
- max-width: 108mm;
193
- margin: 0;
194
- color: var(--openpress-color-muted);
195
- font-size: clamp(10pt, 1.6cqw, 12pt);
196
- line-height: 1.7;
197
- }
198
-
199
- .chapter-opener-body > :first-child {
200
- margin-top: 0;
201
- }
202
-
203
- .chapter-opener-body > :last-child {
204
- margin-bottom: 0;
205
- }