@open-press/cli 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.
Files changed (178) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +58 -0
  3. package/dist/cli.js +365 -0
  4. package/package.json +57 -0
  5. package/template/core/.turbo/turbo-test.log +341 -0
  6. package/template/core/CHANGELOG.md +11 -0
  7. package/template/core/README.md +36 -0
  8. package/template/core/engine/chrome-pdf.d.mts +34 -0
  9. package/template/core/engine/chrome-pdf.mjs +344 -0
  10. package/template/core/engine/cli.mjs +93 -0
  11. package/template/core/engine/commands/_shared.mjs +170 -0
  12. package/template/core/engine/commands/deploy.mjs +31 -0
  13. package/template/core/engine/commands/dev.mjs +26 -0
  14. package/template/core/engine/commands/export.mjs +8 -0
  15. package/template/core/engine/commands/init.mjs +24 -0
  16. package/template/core/engine/commands/inspect.mjs +35 -0
  17. package/template/core/engine/commands/migrate-to-react.mjs +27 -0
  18. package/template/core/engine/commands/pdf.mjs +26 -0
  19. package/template/core/engine/commands/preview.mjs +26 -0
  20. package/template/core/engine/commands/render.mjs +17 -0
  21. package/template/core/engine/commands/replace.mjs +41 -0
  22. package/template/core/engine/commands/search.mjs +33 -0
  23. package/template/core/engine/commands/typecheck.mjs +5 -0
  24. package/template/core/engine/commands/validate.mjs +17 -0
  25. package/template/core/engine/config.d.mts +40 -0
  26. package/template/core/engine/config.mjs +160 -0
  27. package/template/core/engine/deploy-sync.mjs +15 -0
  28. package/template/core/engine/document-export.mjs +15 -0
  29. package/template/core/engine/file-utils.mjs +106 -0
  30. package/template/core/engine/fonts.mjs +62 -0
  31. package/template/core/engine/init.mjs +90 -0
  32. package/template/core/engine/inspection.mjs +348 -0
  33. package/template/core/engine/issue-report.mjs +44 -0
  34. package/template/core/engine/katex-assets.mjs +45 -0
  35. package/template/core/engine/page-block.mjs +30 -0
  36. package/template/core/engine/page-renderer.mjs +217 -0
  37. package/template/core/engine/pdf-media.mjs +45 -0
  38. package/template/core/engine/public-assets.mjs +19 -0
  39. package/template/core/engine/react/chapter-css.mjs +53 -0
  40. package/template/core/engine/react/comment-endpoint.d.mts +11 -0
  41. package/template/core/engine/react/comment-endpoint.mjs +128 -0
  42. package/template/core/engine/react/comment-marker.mjs +306 -0
  43. package/template/core/engine/react/document-entry.mjs +253 -0
  44. package/template/core/engine/react/document-export.mjs +392 -0
  45. package/template/core/engine/react/mdx-compile.mjs +295 -0
  46. package/template/core/engine/react/measurement-css.mjs +44 -0
  47. package/template/core/engine/react/migrate-to-react.mjs +355 -0
  48. package/template/core/engine/react/pagination-constants.mjs +3 -0
  49. package/template/core/engine/react/pagination.mjs +121 -0
  50. package/template/core/engine/react/project-asset-endpoint.d.mts +10 -0
  51. package/template/core/engine/react/project-asset-endpoint.mjs +379 -0
  52. package/template/core/engine/react/workspace-discovery.mjs +156 -0
  53. package/template/core/engine/source-text-tools.mjs +280 -0
  54. package/template/core/engine/source-workspace.mjs +76 -0
  55. package/template/core/engine/static-server.mjs +493 -0
  56. package/template/core/engine/validation.mjs +172 -0
  57. package/template/core/index.html +13 -0
  58. package/template/core/openpress.config.mjs +12 -0
  59. package/template/core/package.json +86 -0
  60. package/template/core/src/main.tsx +16 -0
  61. package/template/core/src/openpress/App.tsx +127 -0
  62. package/template/core/src/openpress/composerMentions.ts +188 -0
  63. package/template/core/src/openpress/core/basePages.tsx +87 -0
  64. package/template/core/src/openpress/core/index.tsx +20 -0
  65. package/template/core/src/openpress/core/types.ts +71 -0
  66. package/template/core/src/openpress/frameScheduler.ts +32 -0
  67. package/template/core/src/openpress/indexes.ts +329 -0
  68. package/template/core/src/openpress/inspector.ts +282 -0
  69. package/template/core/src/openpress/pageRoute.ts +21 -0
  70. package/template/core/src/openpress/pagination.ts +845 -0
  71. package/template/core/src/openpress/projectIdentity.ts +15 -0
  72. package/template/core/src/openpress/projectSources.ts +24 -0
  73. package/template/core/src/openpress/projectWorkspace.tsx +919 -0
  74. package/template/core/src/openpress/publicPage.tsx +469 -0
  75. package/template/core/src/openpress/reactDocumentMetadata.ts +41 -0
  76. package/template/core/src/openpress/readerPageRegistry.ts +41 -0
  77. package/template/core/src/openpress/readerRuntime.ts +230 -0
  78. package/template/core/src/openpress/readerScroll.ts +92 -0
  79. package/template/core/src/openpress/readerState.ts +15 -0
  80. package/template/core/src/openpress/renderer.tsx +91 -0
  81. package/template/core/src/openpress/runtimeMode.ts +22 -0
  82. package/template/core/src/openpress/types.ts +112 -0
  83. package/template/core/src/openpress/workbench.tsx +1299 -0
  84. package/template/core/src/openpress/workbenchPanels.tsx +122 -0
  85. package/template/core/src/openpress/workbenchTypes.ts +4 -0
  86. package/template/core/src/styles/openpress/app-shell.css +251 -0
  87. package/template/core/src/styles/openpress/media-workspace.css +230 -0
  88. package/template/core/src/styles/openpress/print-route.css +186 -0
  89. package/template/core/src/styles/openpress/project-workspace.css +1318 -0
  90. package/template/core/src/styles/openpress/public-viewer.css +983 -0
  91. package/template/core/src/styles/openpress/reader-runtime.css +792 -0
  92. package/template/core/src/styles/openpress/responsive.css +384 -0
  93. package/template/core/src/styles/openpress/workbench-panels.css +558 -0
  94. package/template/core/src/styles/openpress/workbench.css +720 -0
  95. package/template/core/src/styles/openpress.css +14 -0
  96. package/template/core/src/vite-env.d.ts +9 -0
  97. package/template/core/tsconfig.json +37 -0
  98. package/template/core/vite.config.ts +512 -0
  99. package/template/skills/chinese-ai-writing-polish/SKILL.md +195 -0
  100. package/template/skills/claude-document/SKILL.md +66 -0
  101. package/template/skills/claude-document/starter/document/chapters/01-document-shape/chapter.tsx +30 -0
  102. package/template/skills/claude-document/starter/document/chapters/01-document-shape/content/01-document-shape.mdx +51 -0
  103. package/template/skills/claude-document/starter/document/chapters/02-review-loop/chapter.tsx +30 -0
  104. package/template/skills/claude-document/starter/document/chapters/02-review-loop/content/01-review-loop.mdx +31 -0
  105. package/template/skills/claude-document/starter/document/components/ChapterOpenerVisual.tsx +96 -0
  106. package/template/skills/claude-document/starter/document/components/Page.tsx +27 -0
  107. package/template/skills/claude-document/starter/document/design.md +142 -0
  108. package/template/skills/claude-document/starter/document/index.tsx +89 -0
  109. package/template/skills/claude-document/starter/document/media/README.md +13 -0
  110. package/template/skills/claude-document/starter/document/openpress.config.mjs +26 -0
  111. package/template/skills/claude-document/starter/document/theme/README.md +15 -0
  112. package/template/skills/claude-document/starter/document/theme/base/page-contract.css +525 -0
  113. package/template/skills/claude-document/starter/document/theme/base/print.css +93 -0
  114. package/template/skills/claude-document/starter/document/theme/base/typography.css +612 -0
  115. package/template/skills/claude-document/starter/document/theme/fonts.css +4 -0
  116. package/template/skills/claude-document/starter/document/theme/page-surfaces/back-cover.css +72 -0
  117. package/template/skills/claude-document/starter/document/theme/page-surfaces/chapter-opener.css +236 -0
  118. package/template/skills/claude-document/starter/document/theme/page-surfaces/cover.css +309 -0
  119. package/template/skills/claude-document/starter/document/theme/page-surfaces/toc.css +213 -0
  120. package/template/skills/claude-document/starter/document/theme/patterns/_chart-frame.css +53 -0
  121. package/template/skills/claude-document/starter/document/theme/patterns/figure-grid.css +68 -0
  122. package/template/skills/claude-document/starter/document/theme/patterns/table-utilities.css +66 -0
  123. package/template/skills/claude-document/starter/document/theme/shell/reader-controls.css +789 -0
  124. package/template/skills/claude-document/starter/document/theme/tokens.css +89 -0
  125. package/template/skills/claude-document/starter/openpress.config.mjs +5 -0
  126. package/template/skills/editorial-monograph/SKILL.md +73 -0
  127. package/template/skills/editorial-monograph/starter/document/chapters/01-product-and-use-cases/content/01-product-and-use-cases.mdx +31 -0
  128. package/template/skills/editorial-monograph/starter/document/chapters/02-workflow/content/01-workflow.mdx +89 -0
  129. package/template/skills/editorial-monograph/starter/document/chapters/03-agent-skills-contributors/content/01-agent-skills-contributors.mdx +52 -0
  130. package/template/skills/editorial-monograph/starter/document/chapters/04-validation-deploy/content/01-validation-deploy.mdx +39 -0
  131. package/template/skills/editorial-monograph/starter/document/components/ChapterOpenerVisual/index.tsx +76 -0
  132. package/template/skills/editorial-monograph/starter/document/components/Page.tsx +27 -0
  133. package/template/skills/editorial-monograph/starter/document/components/TokenSwatchGrid/index.tsx +46 -0
  134. package/template/skills/editorial-monograph/starter/document/components/TokenSwatchGrid/style.css +63 -0
  135. package/template/skills/editorial-monograph/starter/document/components/TypeSpecimen/index.tsx +38 -0
  136. package/template/skills/editorial-monograph/starter/document/components/TypeSpecimen/style.css +111 -0
  137. package/template/skills/editorial-monograph/starter/document/design.md +279 -0
  138. package/template/skills/editorial-monograph/starter/document/index.tsx +73 -0
  139. package/template/skills/editorial-monograph/starter/document/media/README.md +13 -0
  140. package/template/skills/editorial-monograph/starter/document/openpress.config.mjs +26 -0
  141. package/template/skills/editorial-monograph/starter/document/theme/README.md +11 -0
  142. package/template/skills/editorial-monograph/starter/document/theme/base/page-contract.css +505 -0
  143. package/template/skills/editorial-monograph/starter/document/theme/base/print.css +93 -0
  144. package/template/skills/editorial-monograph/starter/document/theme/base/typography.css +336 -0
  145. package/template/skills/editorial-monograph/starter/document/theme/fonts.css +3 -0
  146. package/template/skills/editorial-monograph/starter/document/theme/page-surfaces/back-cover.css +43 -0
  147. package/template/skills/editorial-monograph/starter/document/theme/page-surfaces/chapter-opener.css +205 -0
  148. package/template/skills/editorial-monograph/starter/document/theme/page-surfaces/cover.css +147 -0
  149. package/template/skills/editorial-monograph/starter/document/theme/page-surfaces/toc.css +139 -0
  150. package/template/skills/editorial-monograph/starter/document/theme/patterns/_chart-frame.css +49 -0
  151. package/template/skills/editorial-monograph/starter/document/theme/patterns/figure-grid.css +68 -0
  152. package/template/skills/editorial-monograph/starter/document/theme/patterns/table-utilities.css +66 -0
  153. package/template/skills/editorial-monograph/starter/document/theme/shell/reader-controls.css +761 -0
  154. package/template/skills/editorial-monograph/starter/document/theme/tokens.css +80 -0
  155. package/template/skills/editorial-monograph/starter/openpress.config.mjs +5 -0
  156. package/template/skills/openpress/SKILL.md +114 -0
  157. package/template/skills/openpress/references/cli-commands.md +31 -0
  158. package/template/skills/openpress/references/local-review.md +43 -0
  159. package/template/skills/openpress-deploy/SKILL.md +69 -0
  160. package/template/skills/openpress-deploy/references/cloudflare-pages.md +51 -0
  161. package/template/skills/openpress-design/SKILL.md +51 -0
  162. package/template/skills/openpress-design/references/pdf-safe-css.md +29 -0
  163. package/template/skills/openpress-design/references/responsive-fixed-layout.md +48 -0
  164. package/template/skills/openpress-design/references/theme-and-components.md +77 -0
  165. package/template/skills/openpress-diagram-drawing/SKILL.md +44 -0
  166. package/template/skills/openpress-diagram-drawing/references/diagram-patterns.md +93 -0
  167. package/template/skills/openpress-document-hierarchy/SKILL.md +81 -0
  168. package/template/skills/openpress-document-hierarchy/agents/openai.yaml +4 -0
  169. package/template/skills/openpress-document-hierarchy/references/data-structures-outline.md +115 -0
  170. package/template/skills/openpress-init/SKILL.md +84 -0
  171. package/template/skills/openpress-style-pack-contributor/SKILL.md +62 -0
  172. package/template/skills/openpress-style-pack-contributor/references/starter-contract.md +49 -0
  173. package/template/skills/openpress-update/SKILL.md +88 -0
  174. package/template/skills/openpress-writing/SKILL.md +68 -0
  175. package/template/skills/openpress-writing/references/source-and-writing-rules.md +120 -0
  176. package/template/skills/teaching-notes-writing/SKILL.md +54 -0
  177. package/template/skills/teaching-notes-writing/references/programming.md +65 -0
  178. package/template/skills/teaching-notes-writing/references/teaching-patterns.md +60 -0
@@ -0,0 +1,558 @@
1
+ .openpress-html-source {
2
+ display: contents;
3
+ }
4
+
5
+ .openpress-workspace-panel {
6
+ min-width: 0;
7
+ height: 100%;
8
+ background: #171717;
9
+ scrollbar-width: none;
10
+ }
11
+
12
+ .openpress-reader-app .reader-thumb-strip {
13
+ display: flex;
14
+ flex-direction: column;
15
+ overflow: hidden;
16
+ }
17
+
18
+ .openpress-reader-app .reader-side-nav {
19
+ display: grid;
20
+ grid-template-rows: auto auto minmax(0, 1fr);
21
+ overflow: hidden;
22
+ }
23
+
24
+ .openpress-workspace-panel--left {
25
+ padding: 18px 14px 26px;
26
+ border-right: 1px solid rgb(255 255 255 / 8%);
27
+ }
28
+
29
+ .openpress-workspace-panel--right {
30
+ min-width: 300px;
31
+ border-left: 1px solid rgb(255 255 255 / 8%);
32
+ padding: 0;
33
+ }
34
+
35
+ .openpress-reader-app.is-closed-right .openpress-workspace-panel--right,
36
+ .openpress-reader-app.is-closed-left.is-closed-right .openpress-workspace-panel--right {
37
+ min-width: 0;
38
+ }
39
+
40
+ .openpress-left-nav-tabs {
41
+ display: grid;
42
+ flex: 0 0 auto;
43
+ grid-template-columns: repeat(3, minmax(0, 1fr));
44
+ gap: 4px;
45
+ }
46
+
47
+ .openpress-left-nav-tab {
48
+ display: grid;
49
+ min-width: 0;
50
+ grid-template-columns: auto minmax(0, 1fr) auto;
51
+ gap: 5px;
52
+ align-items: center;
53
+ border: 1px solid rgb(255 255 255 / 10%);
54
+ padding: 7px 7px;
55
+ background: rgb(255 255 255 / 3%);
56
+ color: #858b92;
57
+ font: inherit;
58
+ font-size: 11px;
59
+ line-height: 1;
60
+ cursor: pointer;
61
+ transition:
62
+ border-color 160ms ease,
63
+ background 160ms ease,
64
+ color 160ms ease;
65
+ }
66
+
67
+ .openpress-left-nav-tab:hover,
68
+ .openpress-left-nav-tab.is-active {
69
+ border-color: rgb(223 75 33 / 45%);
70
+ background: rgb(223 75 33 / 10%);
71
+ color: #f2f2f0;
72
+ }
73
+
74
+ .openpress-left-nav-tab svg {
75
+ width: 13px;
76
+ height: 13px;
77
+ color: var(--openpress-accent);
78
+ }
79
+
80
+ .openpress-left-nav-tab span {
81
+ overflow: hidden;
82
+ min-width: 0;
83
+ text-overflow: ellipsis;
84
+ white-space: nowrap;
85
+ }
86
+
87
+ .openpress-left-nav-tab small {
88
+ color: #676e76;
89
+ font-size: 10px;
90
+ font-variant-numeric: tabular-nums;
91
+ }
92
+
93
+ .openpress-left-nav-tab.is-active small {
94
+ color: #b5babf;
95
+ }
96
+
97
+ .openpress-left-nav-body {
98
+ display: flex;
99
+ min-height: 0;
100
+ flex: 1 1 auto;
101
+ flex-direction: column;
102
+ overflow: auto;
103
+ scrollbar-width: none;
104
+ }
105
+
106
+ .openpress-left-nav-body::-webkit-scrollbar {
107
+ width: 0;
108
+ height: 0;
109
+ display: none;
110
+ }
111
+
112
+ .openpress-left-page-list,
113
+ .openpress-left-asset-list {
114
+ display: flex;
115
+ min-height: 0;
116
+ flex-direction: column;
117
+ gap: 14px;
118
+ }
119
+
120
+ .openpress-left-asset-list {
121
+ gap: 4px;
122
+ }
123
+
124
+ .openpress-left-asset-item {
125
+ display: grid;
126
+ width: 100%;
127
+ min-width: 0;
128
+ grid-template-columns: 42px minmax(0, 1fr);
129
+ gap: 10px;
130
+ align-items: baseline;
131
+ border: 0;
132
+ padding: 9px 0;
133
+ background: transparent;
134
+ color: #8e949b;
135
+ font: inherit;
136
+ text-align: left;
137
+ cursor: pointer;
138
+ }
139
+
140
+ .openpress-left-asset-item:hover,
141
+ .openpress-left-asset-item.is-active {
142
+ color: #f2f2f0;
143
+ }
144
+
145
+ .openpress-left-asset-label {
146
+ color: #d95a36;
147
+ font-size: 11px;
148
+ font-variant-numeric: tabular-nums;
149
+ white-space: nowrap;
150
+ }
151
+
152
+ .openpress-left-asset-item--table .openpress-left-asset-label {
153
+ color: #d7a034;
154
+ }
155
+
156
+ .openpress-left-asset-copy {
157
+ display: grid;
158
+ min-width: 0;
159
+ gap: 3px;
160
+ }
161
+
162
+ .openpress-left-asset-copy strong {
163
+ overflow: hidden;
164
+ display: -webkit-box;
165
+ color: inherit;
166
+ font-size: 12px;
167
+ font-weight: 500;
168
+ line-height: 1.35;
169
+ word-break: keep-all;
170
+ -webkit-box-orient: vertical;
171
+ -webkit-line-clamp: 2;
172
+ }
173
+
174
+ .openpress-left-asset-copy small {
175
+ overflow: hidden;
176
+ color: #626970;
177
+ font-size: 10px;
178
+ line-height: 1.25;
179
+ text-overflow: ellipsis;
180
+ white-space: nowrap;
181
+ }
182
+
183
+ .openpress-left-nav-empty {
184
+ margin: 0;
185
+ padding: 12px 2px;
186
+ color: #70777f;
187
+ font-size: 12px;
188
+ line-height: 1.45;
189
+ }
190
+
191
+ .openpress-reader-app .thumb-strip-frame {
192
+ outline-color: rgb(255 255 255 / 10%);
193
+ box-shadow: 0 8px 18px rgb(0 0 0 / 18%);
194
+ }
195
+
196
+ .openpress-reader-app .thumb-strip-content {
197
+ display: block;
198
+ height: calc(980px * var(--openpress-page-height-ratio, 1.4142857143));
199
+ transform: scale(0.195);
200
+ transform-origin: 0 0;
201
+ }
202
+
203
+ .openpress-reader-app .thumb-strip-content .reader-page {
204
+ display: block !important;
205
+ width: 980px !important;
206
+ height: auto !important;
207
+ max-height: none !important;
208
+ overflow: hidden !important;
209
+ box-shadow: none !important;
210
+ transform: none !important;
211
+ }
212
+
213
+ .openpress-reader-app .thumb-strip-item.is-active .thumb-strip-frame {
214
+ outline: 2px solid rgb(223 75 33 / 80%);
215
+ outline-offset: 2px;
216
+ box-shadow: 0 0 0 1px rgb(0 0 0 / 55%), 0 6px 20px rgb(223 75 33 / 24%);
217
+ }
218
+
219
+ .openpress-reader-app .thumb-strip-item.is-active .thumb-strip-label {
220
+ color: #f2f2f0;
221
+ }
222
+
223
+ .openpress-reader-app .reader-side-nav .reader-bookmarks {
224
+ height: 100%;
225
+ min-height: 0;
226
+ overflow: auto;
227
+ padding: 0 18px 18px 30px;
228
+ scrollbar-width: none;
229
+ }
230
+
231
+ .openpress-reader-app .reader-bookmarks-rail {
232
+ left: 18px;
233
+ background: rgb(255 255 255 / 10%);
234
+ }
235
+
236
+ .openpress-reader-app .bookmark-group {
237
+ margin-bottom: 4px;
238
+ }
239
+
240
+ .openpress-reader-app .bookmark-item {
241
+ display: grid;
242
+ width: 100%;
243
+ min-width: 0;
244
+ border: 0;
245
+ column-gap: 16px;
246
+ align-items: baseline;
247
+ background: transparent;
248
+ color: #969ca3;
249
+ font-family: inherit;
250
+ text-align: left;
251
+ cursor: pointer;
252
+ }
253
+
254
+ .openpress-reader-app .bookmark-item:hover,
255
+ .openpress-reader-app .bookmark-item.is-active {
256
+ color: #f2f2f0;
257
+ }
258
+
259
+ .openpress-reader-app .bookmark-index {
260
+ display: block;
261
+ min-width: 0;
262
+ color: inherit;
263
+ font-variant-numeric: tabular-nums;
264
+ letter-spacing: 0.04em;
265
+ white-space: nowrap;
266
+ }
267
+
268
+ .openpress-reader-app .bookmark-h2 {
269
+ grid-template-columns: 34px minmax(0, 1fr);
270
+ padding: 10px 0 9px;
271
+ color: #d2d6da;
272
+ font-size: 14px;
273
+ font-weight: 500;
274
+ line-height: 1.38;
275
+ }
276
+
277
+ .openpress-reader-app .bookmark-h2 .bookmark-index {
278
+ color: #f2f2f0;
279
+ font-size: 12px;
280
+ font-weight: 500;
281
+ line-height: 1.35;
282
+ }
283
+
284
+ .openpress-reader-app .bookmark-h3 {
285
+ grid-template-columns: 50px minmax(0, 1fr);
286
+ padding: 7px 0 7px 64px;
287
+ color: #757b82;
288
+ font-size: 13px;
289
+ line-height: 1.35;
290
+ }
291
+
292
+ .openpress-reader-app .bookmark-h3.is-active,
293
+ .openpress-reader-app .bookmark-h3:hover {
294
+ color: #f2f2f0;
295
+ }
296
+
297
+ .openpress-reader-app .bookmark-subgroup {
298
+ display: flex;
299
+ flex-direction: column;
300
+ }
301
+
302
+ .openpress-reader-app .bookmark-h4 {
303
+ grid-template-columns: 54px minmax(0, 1fr);
304
+ padding: 5px 0 5px 82px;
305
+ color: #666c73;
306
+ font-size: 12px;
307
+ line-height: 1.32;
308
+ }
309
+
310
+ .openpress-reader-app .bookmark-h4.is-active,
311
+ .openpress-reader-app .bookmark-h4:hover {
312
+ color: #f2f2f0;
313
+ }
314
+
315
+ .openpress-reader-app .bookmark-title {
316
+ overflow: hidden;
317
+ display: -webkit-box;
318
+ min-width: 0;
319
+ white-space: normal;
320
+ word-break: keep-all;
321
+ overflow-wrap: normal;
322
+ line-break: loose;
323
+ -webkit-box-orient: vertical;
324
+ -webkit-line-clamp: 2;
325
+ }
326
+
327
+ .openpress-reader-app .bookmark-h3 .bookmark-title {
328
+ -webkit-line-clamp: 2;
329
+ }
330
+
331
+ .openpress-reader-app .bookmark-h4 .bookmark-title {
332
+ -webkit-line-clamp: 1;
333
+ }
334
+
335
+ .openpress-reader-app .bookmark-subs {
336
+ display: block;
337
+ max-height: 0;
338
+ overflow: hidden;
339
+ padding-bottom: 0;
340
+ opacity: 0;
341
+ transform: translateY(-6px);
342
+ transition:
343
+ max-height 340ms cubic-bezier(0.22, 0.61, 0.36, 1),
344
+ opacity 180ms ease,
345
+ padding-bottom 340ms cubic-bezier(0.22, 0.61, 0.36, 1),
346
+ transform 340ms cubic-bezier(0.22, 0.61, 0.36, 1);
347
+ will-change: max-height, opacity, transform;
348
+ pointer-events: none;
349
+ }
350
+
351
+ .openpress-reader-app .bookmark-group.is-open .bookmark-subs {
352
+ max-height: none;
353
+ overflow: visible;
354
+ padding-bottom: 8px;
355
+ opacity: 1;
356
+ transform: translateY(0);
357
+ pointer-events: auto;
358
+ }
359
+
360
+ .openpress-public-viewer.openpress-reader-app .bookmark-item {
361
+ column-gap: 8px;
362
+ }
363
+
364
+ .openpress-public-viewer.openpress-reader-app .bookmark-h2 {
365
+ grid-template-columns: 24px minmax(0, 1fr);
366
+ padding: 8px 0 7px;
367
+ font-family: var(--openpress-font-serif);
368
+ font-size: 14px;
369
+ line-height: 1.42;
370
+ }
371
+
372
+ .openpress-public-viewer.openpress-reader-app .bookmark-h3 {
373
+ grid-template-columns: 24px minmax(0, 1fr);
374
+ column-gap: 8px;
375
+ padding: 4px 0 4px 32px;
376
+ font-family: var(--openpress-font-serif);
377
+ font-size: 14px;
378
+ line-height: 1.42;
379
+ }
380
+
381
+ .openpress-public-viewer.openpress-reader-app .bookmark-title {
382
+ display: block;
383
+ overflow: visible;
384
+ font-family: var(--openpress-font-serif);
385
+ letter-spacing: 0;
386
+ -webkit-line-clamp: unset;
387
+ }
388
+
389
+ .openpress-public-viewer.openpress-reader-app .bookmark-h3 .bookmark-index {
390
+ font-size: 12px;
391
+ }
392
+
393
+ .openpress-panel-section {
394
+ min-width: 0;
395
+ min-height: 0;
396
+ }
397
+
398
+ .openpress-panel-section--current {
399
+ border-bottom: 1px solid rgb(255 255 255 / 8%);
400
+ padding: 18px 0 16px;
401
+ }
402
+
403
+ .openpress-current-page-card {
404
+ display: grid;
405
+ gap: 8px;
406
+ padding: 0 18px 0 30px;
407
+ }
408
+
409
+ .openpress-current-page-card__number {
410
+ display: flex;
411
+ align-items: baseline;
412
+ gap: 7px;
413
+ color: #f2f2f0;
414
+ font-size: 28px;
415
+ font-weight: 400;
416
+ line-height: 1;
417
+ font-variant-numeric: tabular-nums;
418
+ letter-spacing: 0.03em;
419
+ }
420
+
421
+ .openpress-current-page-card__number .sep {
422
+ color: #5f656c;
423
+ font-size: 16px;
424
+ line-height: 1;
425
+ }
426
+
427
+ .openpress-current-page-card__number [data-openpress-total-pages] {
428
+ color: #8c939a;
429
+ font-size: 16px;
430
+ }
431
+
432
+ .openpress-current-page-card__prefix {
433
+ color: #7f858c;
434
+ font-size: 12px;
435
+ font-weight: 500;
436
+ letter-spacing: 0.08em;
437
+ }
438
+
439
+ .openpress-current-page-card__title {
440
+ overflow: hidden;
441
+ color: #9ba1a8;
442
+ font-size: 12px;
443
+ line-height: 1.4;
444
+ text-overflow: ellipsis;
445
+ white-space: nowrap;
446
+ }
447
+
448
+ .openpress-current-page-card__progress {
449
+ overflow: hidden;
450
+ width: 100%;
451
+ height: 2px;
452
+ background: rgb(255 255 255 / 10%);
453
+ }
454
+
455
+ .openpress-current-page-card__progress span {
456
+ display: block;
457
+ width: var(--progress, 0%);
458
+ height: 100%;
459
+ background: var(--openpress-accent);
460
+ transition: width 260ms cubic-bezier(0.22, 0.61, 0.36, 1);
461
+ }
462
+
463
+ .openpress-panel-section--bookmarks {
464
+ display: grid;
465
+ grid-template-rows: auto minmax(0, 1fr);
466
+ min-height: 0;
467
+ overflow: hidden;
468
+ padding-top: 18px;
469
+ }
470
+
471
+ .openpress-panel-heading {
472
+ padding: 0 18px 12px 30px;
473
+ color: #73787f;
474
+ font-size: 10px;
475
+ font-weight: 500;
476
+ letter-spacing: 0.12em;
477
+ text-transform: uppercase;
478
+ }
479
+
480
+ .openpress-asset-index {
481
+ display: grid;
482
+ grid-template-rows: auto minmax(0, 1fr);
483
+ max-height: 38vh;
484
+ border-top: 1px solid rgb(255 255 255 / 8%);
485
+ padding: 16px 0 18px;
486
+ overflow: hidden;
487
+ }
488
+
489
+ .openpress-asset-list {
490
+ display: flex;
491
+ min-height: 0;
492
+ flex-direction: column;
493
+ gap: 2px;
494
+ overflow: auto;
495
+ padding: 0 18px 0 30px;
496
+ scrollbar-width: none;
497
+ }
498
+
499
+ .openpress-asset-list::-webkit-scrollbar {
500
+ width: 0;
501
+ height: 0;
502
+ display: none;
503
+ }
504
+
505
+ .openpress-asset-link {
506
+ display: grid;
507
+ grid-template-columns: 44px minmax(0, 1fr);
508
+ gap: 10px;
509
+ align-items: baseline;
510
+ padding: 7px 0;
511
+ color: #9aa0a6;
512
+ text-decoration: none;
513
+ }
514
+
515
+ .openpress-asset-link:hover {
516
+ color: #f1f1ef;
517
+ }
518
+
519
+ .openpress-asset-label {
520
+ color: #d95a36;
521
+ font-size: 11px;
522
+ font-variant-numeric: tabular-nums;
523
+ white-space: nowrap;
524
+ }
525
+
526
+ .openpress-asset-link--table .openpress-asset-label {
527
+ color: #d7a034;
528
+ }
529
+
530
+ .openpress-asset-title {
531
+ display: -webkit-box;
532
+ min-width: 0;
533
+ overflow: hidden;
534
+ font-size: 12px;
535
+ line-height: 1.38;
536
+ word-break: keep-all;
537
+ -webkit-box-orient: vertical;
538
+ -webkit-line-clamp: 2;
539
+ }
540
+
541
+ .openpress-asset-title small {
542
+ display: block;
543
+ margin-top: 3px;
544
+ overflow: hidden;
545
+ color: #62676d;
546
+ font-size: 10px;
547
+ font-weight: 400;
548
+ line-height: 1.25;
549
+ text-overflow: ellipsis;
550
+ white-space: nowrap;
551
+ }
552
+
553
+ .openpress-asset-empty {
554
+ margin: 0;
555
+ padding: 0 18px 0 30px;
556
+ color: #696f75;
557
+ font-size: 12px;
558
+ }