edgepress 2026.10.1 → 2026.10.13
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/LICENSE +21 -0
- package/README.md +216 -16
- package/config.yml +99 -127
- package/content/assets/edgepress/brand/avatar.png +0 -0
- package/content/assets/edgepress/brand/deploy-esa.svg +1 -0
- package/content/assets/edgepress/brand/home-hero-768.webp +0 -0
- package/content/assets/edgepress/brand/home-hero.png +0 -0
- package/content/assets/edgepress/brand/home-hero.webp +0 -0
- package/content/assets/edgepress/brand/mascot.png +0 -0
- package/content/assets/edgepress/brand/mascot.webp +0 -0
- package/content/assets/edgepress/brand/og-image.png +0 -0
- package/content/assets/edgepress/brand/og-image.webp +0 -0
- package/content/assets/edgepress/brand/sources/edgepress-avatar-master.png +0 -0
- package/content/assets/edgepress/brand/sources/export-manifest.json +181 -0
- package/content/assets/edgepress/brand/sources/prompts.json +12 -0
- package/content/assets/edgepress/favicon/apple-touch-icon.png +0 -0
- package/content/assets/edgepress/favicon/favicon-16.png +0 -0
- package/content/assets/edgepress/favicon/favicon-32.png +0 -0
- package/content/assets/edgepress/favicon/favicon-48.png +0 -0
- package/content/assets/edgepress/favicon/favicon-64.png +0 -0
- package/content/assets/edgepress/favicon/favicon.ico +0 -0
- package/content/assets/edgepress/icons/LICENSE.txt +43 -0
- package/content/assets/edgepress/icons/arrow-right.svg +16 -0
- package/content/assets/edgepress/icons/arrow-up-right.svg +16 -0
- package/content/assets/edgepress/icons/book-open.svg +16 -0
- package/content/assets/edgepress/icons/check-circle.svg +16 -0
- package/content/assets/edgepress/icons/check.svg +15 -0
- package/content/assets/edgepress/icons/cloud.svg +15 -0
- package/content/assets/edgepress/icons/code.svg +16 -0
- package/content/assets/edgepress/icons/cpu.svg +28 -0
- package/content/assets/edgepress/icons/file-text.svg +19 -0
- package/content/assets/edgepress/icons/github.svg +17 -0
- package/content/assets/edgepress/icons/globe.svg +17 -0
- package/content/assets/edgepress/icons/help-circle.svg +17 -0
- package/content/assets/edgepress/icons/home.svg +16 -0
- package/content/assets/edgepress/icons/layers.svg +17 -0
- package/content/assets/edgepress/icons/layout-grid.svg +18 -0
- package/content/assets/edgepress/icons/mail.svg +16 -0
- package/content/assets/edgepress/icons/newspaper.svg +18 -0
- package/content/assets/edgepress/icons/palette.svg +19 -0
- package/content/assets/edgepress/icons/plug.svg +18 -0
- package/content/assets/edgepress/icons/provenance.json +8 -0
- package/content/assets/edgepress/icons/puzzle.svg +15 -0
- package/content/assets/edgepress/icons/rocket.svg +18 -0
- package/content/assets/edgepress/icons/rss.svg +17 -0
- package/content/assets/edgepress/icons/search.svg +16 -0
- package/content/assets/edgepress/icons/settings.svg +16 -0
- package/content/assets/edgepress/icons/shield-check.svg +16 -0
- package/content/assets/edgepress/icons/sparkles.svg +18 -0
- package/content/assets/edgepress/icons/terminal.svg +16 -0
- package/content/assets/edgepress/icons/x.svg +16 -0
- package/{static → content/assets}/edgepress-markdown-guide.svg +1 -1
- package/content/assets/images/previews/edgepress-en.webp +0 -0
- package/content/assets/images/previews/edgepress-revisions-en.png +0 -0
- package/content/assets/images/previews/edgepress-workflow-en.90f4650b21013786.gif +0 -0
- package/content/assets/images/previews/edgepress-workflow-zh.41f1e0a685f47267.gif +0 -0
- package/content/assets/images/previews/edgepress-zh.webp +0 -0
- package/content/assets/images/previews/provenance.json +49 -0
- package/content/guides/markdown-media.md +38 -0
- package/content/guides/platforms.md +15 -0
- package/content/guides/product-demos.md +37 -0
- package/content/guides/zh-cn.md +62 -0
- package/content/pages/deployment/en.json +74 -0
- package/content/pages/deployment/zh-cn.json +74 -0
- package/content/pages/home/en.json +248 -0
- package/content/pages/home/zh-cn.json +248 -0
- package/content/pages/local-tools/en.json +14 -0
- package/content/pages/local-tools/zh-cn.json +14 -0
- package/content/pages/page-authoring/en.json +107 -0
- package/content/pages/page-authoring/zh-cn.json +107 -0
- package/content/pages/plugin-development/en.json +202 -0
- package/content/pages/plugin-development/zh-cn.json +202 -0
- package/content/pages/privacy-policy/en.json +171 -0
- package/content/pages/privacy-policy/zh-cn.json +171 -0
- package/content/pages/project-introduction/en.json +158 -0
- package/content/pages/project-introduction/zh-cn.json +158 -0
- package/content/pages/quick-start/en.json +325 -0
- package/content/pages/quick-start/zh-cn.json +325 -0
- package/content/pages/theme-development/en.json +353 -0
- package/content/pages/theme-development/zh-cn.json +349 -0
- package/content/posts/2026-09-24-edgepress-release-2026-9-1/en.md +1 -1
- package/content/posts/2026-09-24-edgepress-release-2026-9-1/zh-cn.md +1 -1
- package/content/posts/2026-10-03-edgepress-release-2026-10-3/en.md +16 -0
- package/content/posts/2026-10-03-edgepress-release-2026-10-3/zh-cn.md +16 -0
- package/content/posts/2026-10-03-edgepress-release-202610-4/en.md +22 -0
- package/content/posts/2026-10-03-edgepress-release-202610-4/zh-cn.md +20 -0
- package/content/posts/2026-10-03-edgepress-release-202610-5/en.md +15 -0
- package/content/posts/2026-10-03-edgepress-release-202610-5/zh-cn.md +15 -0
- package/edgeone.json +43 -0
- package/esa.jsonc +9 -0
- package/languages/base/en.json +75 -10
- package/languages/packs/zh-CN.json +74 -9
- package/netlify.toml +6 -0
- package/package.json +37 -6
- package/plugins/consent/index.js +10 -17
- package/project-compatibility.json +142 -25
- package/schemas/pages.schema.json +74 -0
- package/src/assets.js +146 -18
- package/src/browser-audit.js +158 -0
- package/src/build.js +34 -9
- package/src/cli.js +46 -41
- package/src/config.js +114 -63
- package/src/consent-csp.js +137 -0
- package/src/content.js +55 -30
- package/src/data-saver.js +194 -0
- package/src/deploy.js +28 -0
- package/src/document.js +44 -0
- package/src/embed.js +60 -0
- package/src/generators.js +101 -59
- package/src/i18n.js +19 -3
- package/src/icons.js +5 -4
- package/src/image-dimensions.js +17 -0
- package/src/local-tool.js +29 -0
- package/src/maintenance.js +25 -8
- package/src/markdown-fixture.js +20 -0
- package/src/markdown.js +80 -16
- package/src/media-assets.js +19 -0
- package/src/media-viewer.js +47 -0
- package/src/oembed.js +53 -0
- package/src/page-blocks.js +124 -54
- package/src/page-check.js +29 -39
- package/src/plugin-api.js +7 -1
- package/src/post-details.js +60 -0
- package/src/post-template.js +5 -0
- package/src/publication-time.js +47 -0
- package/src/report-path.js +19 -0
- package/src/report-visuals.js +91 -18
- package/src/revision-cards.js +30 -0
- package/src/revision-images.js +44 -0
- package/src/revisions.js +77 -0
- package/src/rss.js +100 -0
- package/src/service-block.js +18 -0
- package/src/theme.js +59 -9
- package/src/video-metadata.js +36 -0
- package/static/edgepress/data-saver.css +12 -0
- package/static/edgepress/data-saver.js +333 -0
- package/static/edgepress/document-viewer.js +35 -0
- package/static/edgepress/external-links-policy.js +14 -0
- package/static/edgepress/external-links.css +13 -0
- package/static/edgepress/external-links.js +120 -0
- package/static/edgepress/fonts/faces.css +2217 -0
- package/static/edgepress/fonts/noto-sans-OFL.txt +93 -0
- package/static/edgepress/fonts/noto-sans-cyrillic-ext-wght-normal.82ff72b28e6610f2.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-cyrillic-wght-normal.6ab64433de6077ca.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-devanagari-wght-normal.ea6a530b75d93de7.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-greek-ext-wght-normal.790b255c10c32e0b.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-greek-wght-normal.7f655207c2f6c140.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-latin-ext-wght-normal.6d5a79315528df19.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-latin-wght-normal.51ca196f49a33e79.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-100-wght-normal.ad5f29028d5699a5.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-101-wght-normal.e189b81fc22ca6af.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-102-wght-normal.941c0c2971fc1d6d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-103-wght-normal.bafbd591af6493ff.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-104-wght-normal.b0bf80ced89dd61b.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-105-wght-normal.8d8b4e6f4a00621d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-106-wght-normal.bae74acc629d2e74.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-107-wght-normal.a42eff5010de7b0d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-108-wght-normal.91882203459867be.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-109-wght-normal.a91f8b038e5ce108.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-110-wght-normal.bbca9081655c4523.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-111-wght-normal.372be010ac0e87cb.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-112-wght-normal.34a4580239eae8dc.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-113-wght-normal.614ab8f616352583.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-114-wght-normal.cf7b8344807a316e.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-115-wght-normal.fb29957c7adccb9a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-116-wght-normal.a98dc5a726f82141.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-117-wght-normal.d94b5af0c14838af.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-118-wght-normal.76c9ddb85ae4578c.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-119-wght-normal.b3b2374881f4cd93.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-21-wght-normal.c1409c43e55ecff2.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-22-wght-normal.77037ed42ff4e7b0.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-23-wght-normal.38d0df21ac374e93.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-24-wght-normal.8fa21e7e457acf3e.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-25-wght-normal.f760b7a3871d214d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-26-wght-normal.be8386e7bd7facfe.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-27-wght-normal.4895abcaddbd162e.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-28-wght-normal.82540b6201a9b9ad.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-29-wght-normal.ff21d8fcc60ce391.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-30-wght-normal.1f76f6ffded00b9e.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-31-wght-normal.e6c25be1bb08a63a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-32-wght-normal.0cda750d7d04a4e1.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-33-wght-normal.b9732b5606bd87c5.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-34-wght-normal.38aa326b4c84902a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-35-wght-normal.bd98226c8e0aa808.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-36-wght-normal.0db1ca695a491d37.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-37-wght-normal.8df409a4e0a237c2.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-38-wght-normal.672d2d994994a3c3.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-39-wght-normal.272d6d0e153f56e8.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-4-wght-normal.9fafd93ac77b81ff.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-40-wght-normal.5b9ef1ed48420aa7.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-41-wght-normal.30aee47f660fd88a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-42-wght-normal.ec0014830db682b6.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-43-wght-normal.43df2b5dad9bb835.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-44-wght-normal.acaa6195041b1a92.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-45-wght-normal.8cdb9903f770db21.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-46-wght-normal.6590d0a6fe94571c.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-47-wght-normal.b05afdd32b3bf722.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-48-wght-normal.c9585f7d070700be.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-49-wght-normal.4943895a4dfa5dcf.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-5-wght-normal.e64f57937e3ae4fe.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-50-wght-normal.13e51063d7743cfe.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-51-wght-normal.fd4df1f02c2cb4d7.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-52-wght-normal.06999a39c4c3a7ea.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-53-wght-normal.767b7b9864658d91.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-54-wght-normal.4cd00537a46f6f1a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-55-wght-normal.0118ec5d8c30b197.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-56-wght-normal.a3e4a78929826930.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-57-wght-normal.7623501009e4a6db.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-58-wght-normal.56ae1a59a32e4a25.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-59-wght-normal.7a377a40e99fd9bc.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-6-wght-normal.17e15c4f0a5bfd92.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-60-wght-normal.3657f66babdf6aff.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-61-wght-normal.23919a2eb11d25dd.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-62-wght-normal.a901edf25bc1cfae.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-63-wght-normal.92f56f713cc0b62f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-64-wght-normal.4929c9f39a5a4bd9.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-65-wght-normal.8daa61282fb62a11.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-66-wght-normal.6479166925eb462b.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-67-wght-normal.a6b0e11c4c761ffd.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-68-wght-normal.65b77f1fe9d68dae.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-69-wght-normal.b34f765cbbf4d02e.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-70-wght-normal.a99d55c00e4f95b7.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-71-wght-normal.3298bed30dc8d233.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-72-wght-normal.6597209ca9707726.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-73-wght-normal.e7ac1d4930eabd78.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-74-wght-normal.1f0287be83a28e7a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-75-wght-normal.d9a4bb7bcc2be578.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-76-wght-normal.5a019946bcadcec6.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-77-wght-normal.7c445e85d04f5319.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-78-wght-normal.7d4afb70f641781c.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-79-wght-normal.5798753a721bb4ec.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-80-wght-normal.db887159ca6e46f3.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-81-wght-normal.71e5743bbd225b3d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-82-wght-normal.8c5094c3785fd04f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-83-wght-normal.4a60a1ccba905284.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-84-wght-normal.3ed54e59ef4758e3.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-85-wght-normal.e87e0a1342e1778c.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-86-wght-normal.6d3ac3e20959dbcb.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-87-wght-normal.0eeffd5daad5c17b.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-88-wght-normal.b1d9582dfa268463.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-89-wght-normal.8b437aeb9e9fcb5a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-90-wght-normal.83b0a59e0a5e045a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-91-wght-normal.382f72b98d4bb9d7.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-97-wght-normal.5e52856457c5cdab.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-98-wght-normal.ffded4e7fd560d93.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-99-wght-normal.54e302c23f11a8fd.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-OFL.txt +93 -0
- package/static/edgepress/fonts/noto-sans-sc-cyrillic-wght-normal.5932d441e7126669.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-latin-ext-wght-normal.e316201f3fc493d1.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-latin-wght-normal.c1d919c8701a86ed.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-sc-vietnamese-wght-normal.cba3d00c8db989f0.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-0-wght-normal.63c21eda5d20203f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-100-wght-normal.87a7c76301c24a28.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-101-wght-normal.c9e83fc4ffd53746.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-102-wght-normal.9a00ae0e5735852b.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-103-wght-normal.7cfe93b3221f4def.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-104-wght-normal.2d5ac7497d84cb99.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-105-wght-normal.0989885bb16bcd9b.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-106-wght-normal.1faa921b035064e7.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-107-wght-normal.2f6006745ae16d69.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-108-wght-normal.a61e48c10a2cf4b9.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-109-wght-normal.f28c767724736d2d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-110-wght-normal.4b04bd88c3dc7c5d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-111-wght-normal.b6251e1967932a52.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-112-wght-normal.e264513b32f90660.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-113-wght-normal.46cb347d88f3338e.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-114-wght-normal.9f9e1e0d0ab2aeb4.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-115-wght-normal.653dd2ab7d551b40.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-116-wght-normal.4718bf3627191297.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-117-wght-normal.b241a9409682af5f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-118-wght-normal.fda2800dc1c06852.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-119-wght-normal.948af36bd63a72c7.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-19-wght-normal.62191cdc3a10e60a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-20-wght-normal.65c90892c2e01657.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-21-wght-normal.d3f59b094c334866.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-22-wght-normal.b1983a041d7e4e1f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-23-wght-normal.16e2163b66c7732a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-24-wght-normal.72c8561976116537.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-25-wght-normal.b2948d928ce4dd54.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-26-wght-normal.d583236b90abedc9.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-27-wght-normal.7d6073ba07597c9b.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-28-wght-normal.517204d716b089cd.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-29-wght-normal.10189a8f8ca38099.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-30-wght-normal.695a71d72dfab3f7.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-31-wght-normal.868d59473ef0e73c.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-32-wght-normal.92efa2d4b3702ec0.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-33-wght-normal.d2274bcd5636197d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-34-wght-normal.1ac8c3718ee2eed2.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-35-wght-normal.00b3df730d5a4c73.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-36-wght-normal.6963feb6c628b81f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-37-wght-normal.a1b4bd294af24cd1.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-38-wght-normal.8edb2f7f2955921b.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-39-wght-normal.37bf7394eb3148c6.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-40-wght-normal.3efa655bc48f9133.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-41-wght-normal.48d47014544ebd5d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-42-wght-normal.214c733a59d423e7.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-43-wght-normal.c2c9876f138bb20f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-44-wght-normal.28928bfea29db06a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-45-wght-normal.bf3743f8155fa9d2.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-46-wght-normal.06970903593781c3.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-47-wght-normal.8932ed83a91794d4.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-48-wght-normal.dfd9225628bcf234.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-49-wght-normal.c27d341ad39d44eb.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-50-wght-normal.01a0f4e7dfba0a56.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-51-wght-normal.5a30022af3d30e0f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-52-wght-normal.4884f032342a3274.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-53-wght-normal.537adcae44511270.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-54-wght-normal.6bc8c7d3e47c6fde.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-55-wght-normal.725a48711f1e1997.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-56-wght-normal.f43ecaa73e0cd8fc.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-57-wght-normal.15b24e9d42a3270f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-58-wght-normal.9b2d8a71667d3da6.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-59-wght-normal.a68535a6b3289d89.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-6-wght-normal.32cece1ae80c4f2b.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-60-wght-normal.3b2c56a921d1cad4.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-61-wght-normal.54f51f80a0740878.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-62-wght-normal.ba029c5bb6c07bf1.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-63-wght-normal.380919beec4c7f3d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-64-wght-normal.f96fe0be479d201f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-65-wght-normal.7d544b80701fe678.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-66-wght-normal.fab669c07a1e3bee.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-67-wght-normal.0001bb744743fdfa.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-68-wght-normal.1a57eda03886b43c.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-69-wght-normal.017fecc749bcd6d5.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-7-wght-normal.cd0f0cac743dbbfe.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-70-wght-normal.79fb9d70b9534ec7.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-71-wght-normal.04a6ea581b5f1195.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-72-wght-normal.d3a4eb35499157b7.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-73-wght-normal.d81f8484404ee465.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-74-wght-normal.4a5da9e0c2702f7d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-75-wght-normal.8b87f9c6c164513a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-76-wght-normal.a71463dbfd9fa7b5.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-77-wght-normal.d094414ea752cd52.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-78-wght-normal.04f7c97bd9cbc73b.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-79-wght-normal.1ed089d037a02049.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-8-wght-normal.d052677dfb5db5bd.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-80-wght-normal.6d41ca59cfd50442.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-81-wght-normal.f09bd0afa8a58114.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-82-wght-normal.7920841c526b1b02.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-83-wght-normal.0c6f7f82db8da0d8.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-84-wght-normal.f37c0a853b31265e.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-85-wght-normal.4173bff087653b82.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-86-wght-normal.dac35605ebec15c4.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-87-wght-normal.8ac85fdd0b15a6bd.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-88-wght-normal.61625b0b21e8407f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-89-wght-normal.a1da3dccbf00698e.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-90-wght-normal.bf08f0355222a782.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-91-wght-normal.2ecf295bba2bfaa3.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-92-wght-normal.36508326bb68115f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-97-wght-normal.c712899e0fc9e947.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-98-wght-normal.13a648e521d18d7f.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-99-wght-normal.7f8c9a777e64159a.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-OFL.txt +93 -0
- package/static/edgepress/fonts/noto-sans-tc-cyrillic-wght-normal.dd0980ced8e46cb3.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-latin-ext-wght-normal.817d96335dc52ce6.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-latin-wght-normal.50cb5fb0a522cfaf.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-tc-vietnamese-wght-normal.2a77fb7b70fa304d.woff2 +0 -0
- package/static/edgepress/fonts/noto-sans-vietnamese-wght-normal.791e3f213c155a5b.woff2 +0 -0
- package/static/edgepress/fonts/noto-serif-OFL.txt +93 -0
- package/static/edgepress/fonts/noto-serif-cyrillic-ext-wght-normal.7c7afb20d33e30ec.woff2 +0 -0
- package/static/edgepress/fonts/noto-serif-cyrillic-wght-normal.54e3bd0c4a002b0f.woff2 +0 -0
- package/static/edgepress/fonts/noto-serif-greek-ext-wght-normal.9b3f4c4ff3adefd2.woff2 +0 -0
- package/static/edgepress/fonts/noto-serif-greek-wght-normal.1252037b6f1d6e86.woff2 +0 -0
- package/static/edgepress/fonts/noto-serif-latin-ext-wght-normal.2654f8d1261a420f.woff2 +0 -0
- package/static/edgepress/fonts/noto-serif-latin-wght-normal.46281456234014ce.woff2 +0 -0
- package/static/edgepress/fonts/noto-serif-math-wght-normal.d4a6aba2cb4636b3.woff2 +0 -0
- package/static/edgepress/fonts/noto-serif-vietnamese-wght-normal.fb6a5ed734c2fbe3.woff2 +0 -0
- package/static/edgepress/fonts/provenance.json +1356 -0
- package/static/edgepress/fonts.css +14 -0
- package/static/edgepress/image-viewer.js +23 -0
- package/static/edgepress/images.css +4 -0
- package/static/edgepress/link-directory.css +14 -0
- package/static/edgepress/local-time.js +12 -0
- package/static/edgepress/media-viewer.css +1 -0
- package/static/edgepress/media-viewer.js +111 -0
- package/static/edgepress/navigation-select.js +14 -0
- package/static/edgepress/oembed.js +129 -0
- package/static/edgepress/plugins/backend/external-api.js +4 -0
- package/static/edgepress/plugins/backend/external-widget.js +13 -0
- package/static/edgepress/plugins/consent/choices.js +47 -0
- package/static/edgepress/plugins/consent/manager.js +56 -74
- package/static/edgepress/project-demo.js +93 -0
- package/static/edgepress/search.js +2 -2
- package/static/edgepress/services-consent.js +3 -0
- package/static/edgepress/services.js +15 -0
- package/static/edgepress/webmcp.js +86 -0
- package/tests/assets-runtime.test.mjs +91 -0
- package/tests/audit.test.mjs +142 -0
- package/tests/brand-regression.test.mjs +110 -0
- package/tests/consent-browser.test.mjs +132 -0
- package/tests/consent-config.test.mjs +85 -0
- package/tests/consent-csp.test.mjs +90 -0
- package/tests/data-saver-loading.test.mjs +158 -0
- package/tests/data-saver-network.test.mjs +99 -0
- package/tests/data-saver.test.mjs +294 -0
- package/tests/document-package.test.mjs +28 -0
- package/tests/document-viewer.test.mjs +152 -0
- package/tests/edge-issues.test.mjs +65 -0
- package/tests/embed-syntax.test.mjs +68 -0
- package/tests/external-links.test.mjs +198 -0
- package/tests/fixtures/recording.mp4 +0 -0
- package/tests/fonts.test.mjs +99 -0
- package/tests/image-dimensions.test.mjs +15 -0
- package/tests/image-viewer.test.mjs +36 -0
- package/tests/json-pages.test.mjs +66 -0
- package/tests/link-directory.test.mjs +51 -0
- package/tests/local-tool.test.mjs +34 -0
- package/tests/markdown-media.test.mjs +119 -0
- package/tests/media-block.test.mjs +102 -0
- package/tests/navigation.test.mjs +87 -0
- package/tests/oembed-layout.test.mjs +98 -0
- package/tests/oembed.test.mjs +96 -0
- package/tests/page-authoring.test.mjs +27 -0
- package/tests/page-formatting.test.mjs +37 -0
- package/tests/post-list.test.mjs +96 -0
- package/tests/project-demo.test.mjs +73 -0
- package/tests/publication-time.test.mjs +43 -0
- package/tests/release-version.test.mjs +28 -0
- package/tests/revisions.test.mjs +93 -0
- package/tests/rss.test.mjs +54 -0
- package/tests/services.test.mjs +35 -0
- package/tests/theme-layout.test.mjs +95 -0
- package/tests/video-metadata.test.mjs +28 -0
- package/tests/webmcp.test.mjs +121 -0
- package/tests/writing.test.mjs +101 -0
- package/themes/atelier/assets/style.css +144 -22
- package/themes/atelier/layouts/partials/head.html +8 -1
- package/themes/atelier/layouts/partials/header.html +3 -1
- package/themes/default/assets/data-saver-theme.css +2 -0
- package/themes/default/assets/style.css +139 -23
- package/themes/default/layouts/partials/head.html +9 -2
- package/themes/default/layouts/partials/header.html +3 -1
- package/themes/default/theme.json +1 -0
- package/themes/folio/README.md +7 -0
- package/themes/folio/assets/data-saver-theme.css +3 -0
- package/themes/folio/assets/folio/navigation.js +10 -0
- package/themes/folio/assets/style.css +516 -0
- package/themes/folio/layouts/layout.html +15 -0
- package/themes/folio/layouts/partials/footer.html +6 -0
- package/themes/folio/layouts/partials/head.html +30 -0
- package/themes/folio/layouts/partials/header.html +8 -0
- package/themes/folio/theme.json +7 -0
- package/themes/signal/assets/style.css +143 -21
- package/themes/signal/layouts/partials/head.html +8 -1
- package/themes/signal/layouts/partials/header.html +3 -1
- package/tools/README.md +14 -0
- package/tools/assets/format-pages.mjs +56 -0
- package/tools/assets/generate-brand-assets.py +160 -0
- package/tools/assets/sync-fonts.mjs +71 -0
- package/tools/assets/sync-icons.mjs +17 -0
- package/tools/assets/video-preview.mjs +15 -0
- package/tools/recordings/capture-document-demo.mjs +147 -0
- package/tools/recordings/demo-workbench.mjs +57 -0
- package/tools/recordings/desktop-recording.mjs +92 -0
- package/tools/recordings/provision-vm.sh +18 -0
- package/tools/recordings/start-vm-desktop.sh +28 -0
- package/tools/recordings/vm-desktop.mjs +124 -0
- package/tools/verification/README.md +44 -0
- package/tools/verification/data-saver-site.mjs +405 -0
- package/tools/verification/page-performance.mjs +76 -0
- package/tools/verification/verify-brand-assets.py +52 -0
- package/tools/verification/verify-brand.mjs +180 -0
- package/vercel.json +36 -0
- package/wrangler.jsonc +5 -7
- package/content/pages/home/en.md +0 -99
- package/content/pages/home/zh-cn.md +0 -99
- package/content/pages/plugin-development/en.md +0 -109
- package/content/pages/plugin-development/zh-cn.md +0 -109
- package/content/pages/privacy-policy/en.md +0 -93
- package/content/pages/privacy-policy/zh-cn.md +0 -93
- package/content/pages/project-introduction/en.md +0 -88
- package/content/pages/project-introduction/zh-cn.md +0 -88
- package/content/pages/quick-start/en.md +0 -153
- package/content/pages/quick-start/zh-cn.md +0 -153
- package/content/pages/theme-development/en.md +0 -132
- package/content/pages/theme-development/zh-cn.md +0 -132
- package/src/worker.js +0 -139
- package/static/edgepress/brand/edgepress-mark.svg +0 -7
- package/static/edgepress/brand/mascot-209.webp +0 -0
- package/static/edgepress/brand/mascot-418.png +0 -0
- package/static/edgepress/brand/mascot-418.webp +0 -0
- package/static/edgepress/brand/mascot.png +0 -0
- package/static/edgepress/brand/og-image.png +0 -0
- package/static/edgepress/brand/og-image.svg +0 -46
- package/static/edgepress/icons.svg +0 -24
|
@@ -0,0 +1,516 @@
|
|
|
1
|
+
:root{
|
|
2
|
+
color-scheme:light dark;
|
|
3
|
+
--canvas:#faf9f6;
|
|
4
|
+
--surface:#fff;
|
|
5
|
+
--surface-soft:#f1f0ec;
|
|
6
|
+
--ink:#20201d;
|
|
7
|
+
--muted:#686862;
|
|
8
|
+
--line:rgba(29,29,31,.12);
|
|
9
|
+
--accent:#292922;
|
|
10
|
+
--accent-hover:#62624c;
|
|
11
|
+
--button-bg:#20201d;
|
|
12
|
+
--button-hover:#404037;
|
|
13
|
+
--accent-soft:#eeede6;
|
|
14
|
+
--warning:#a44d00;
|
|
15
|
+
--warning-soft:#fff2df;
|
|
16
|
+
--success:#18794e;
|
|
17
|
+
--success-soft:#e9f7ef;
|
|
18
|
+
--radius-small:3px;
|
|
19
|
+
--radius-card:3px;
|
|
20
|
+
--content-width:1440px;
|
|
21
|
+
--shadow:none;
|
|
22
|
+
font-family:var(--edgepress-font-sans);
|
|
23
|
+
font-synthesis:none;
|
|
24
|
+
text-rendering:optimizeLegibility;
|
|
25
|
+
-webkit-font-smoothing:antialiased;
|
|
26
|
+
-moz-osx-font-smoothing:grayscale
|
|
27
|
+
}
|
|
28
|
+
@media(prefers-color-scheme:dark){
|
|
29
|
+
:root{
|
|
30
|
+
--canvas:#171715;
|
|
31
|
+
--surface:#22221f;
|
|
32
|
+
--surface-soft:#292925;
|
|
33
|
+
--ink:#f3f1ea;
|
|
34
|
+
--muted:#b6b5ab;
|
|
35
|
+
--line:rgba(245,245,247,.13);
|
|
36
|
+
--accent:#e6dec1;
|
|
37
|
+
--accent-hover:#fff1c9;
|
|
38
|
+
--accent-soft:#34342b;
|
|
39
|
+
--warning:#ffb45f;
|
|
40
|
+
--warning-soft:#352616;
|
|
41
|
+
--success:#62d49a;
|
|
42
|
+
--success-soft:#153025;
|
|
43
|
+
--shadow:0 18px 48px rgba(0,0,0,.24)
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
*,*::before,*::after{box-sizing:border-box}
|
|
47
|
+
html{min-width:0;scroll-behavior:auto;scroll-padding-top:90px;background:var(--canvas)}
|
|
48
|
+
body{display:flex;flex-direction:column;min-width:0;max-width:none;min-height:100vh;margin:0;background:var(--canvas);color:var(--ink);font:400 16px/1.65 -apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI","PingFang SC","PingFang TC","Microsoft YaHei","Noto Sans CJK SC","Microsoft JhengHei",sans-serif}
|
|
49
|
+
a{color:var(--accent);text-decoration:none;text-underline-offset:.2em}
|
|
50
|
+
a:hover{color:var(--accent-hover);text-decoration:underline}
|
|
51
|
+
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:4px;border-radius:5px}
|
|
52
|
+
button,input,select{font:inherit}
|
|
53
|
+
img,video,iframe{max-width:100%;height:auto}
|
|
54
|
+
p{margin:0 0 1em}
|
|
55
|
+
h1,h2,h3,h4{color:var(--ink);font-weight:650;letter-spacing:-.035em;line-height:1.18}
|
|
56
|
+
h1{font-size:clamp(2.4rem,5.5vw,4.5rem);letter-spacing:-.05em;line-height:1.12;text-wrap:balance}
|
|
57
|
+
h2{font-size:clamp(1.7rem,3.5vw,2.5rem)}
|
|
58
|
+
h3{font-size:clamp(1.2rem,2.1vw,1.55rem)}
|
|
59
|
+
.site-shell{display:flex;flex:1;min-height:100vh;min-height:100svh;flex-direction:column}
|
|
60
|
+
.skip-link{position:fixed;top:12px;left:12px;z-index:2000;transform:translateY(-160%);padding:11px 16px;border-radius:999px;background:var(--ink);color:var(--canvas);font-weight:650;box-shadow:var(--shadow)}
|
|
61
|
+
.skip-link:focus{transform:translateY(0);color:var(--canvas)}
|
|
62
|
+
.site-header{position:sticky;top:0;z-index:100;border-bottom:1px solid var(--line);background:rgba(250,250,252,.82);backdrop-filter:saturate(180%) blur(18px);-webkit-backdrop-filter:saturate(180%) blur(18px)}
|
|
63
|
+
@media(prefers-color-scheme:dark){.site-header{background:rgba(16,16,18,.82)}}
|
|
64
|
+
.header-inner{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:26px;width:min(calc(100% - 48px),var(--content-width));min-height:66px;margin-inline:auto}
|
|
65
|
+
.brand{display:inline-flex;align-items:center;gap:10px;min-width:0;color:var(--ink);font-size:.94rem;font-weight:680;letter-spacing:-.025em;white-space:nowrap}
|
|
66
|
+
.brand:hover{color:var(--ink);text-decoration:none}
|
|
67
|
+
.brand-mark{display:block;width:30px;height:30px;flex:none;color:var(--button-bg)}
|
|
68
|
+
.primary-navigation{display:flex;align-items:center;justify-content:center;gap:clamp(12px,2.2vw,28px);min-width:0}
|
|
69
|
+
.primary-navigation a,.primary-navigation .navigation-select,.footer-navigation a,.footer-navigation .navigation-select{display:inline-flex;align-items:center;min-height:44px;color:var(--muted);font-size:.87rem;font-weight:520;white-space:nowrap}
|
|
70
|
+
.primary-navigation a:hover,.primary-navigation .navigation-select:hover,.footer-navigation a:hover,.footer-navigation .navigation-select:hover{color:var(--ink);text-decoration:none}
|
|
71
|
+
.primary-navigation a[aria-current="page"]{color:var(--ink);font-weight:650}
|
|
72
|
+
.primary-navigation .navigation-icon,.footer-navigation .navigation-icon{display:none}
|
|
73
|
+
.primary-navigation a[href$="/search/"] .navigation-icon,.footer-navigation .navigation-icon{display:block;width:17px;height:17px;flex:none;margin-right:6px;}
|
|
74
|
+
.locale-nav{justify-self:end;min-width:0}
|
|
75
|
+
.locale-nav select{max-width:150px;min-height:40px;padding:6px 30px 6px 12px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);font-size:.84rem;cursor:pointer}
|
|
76
|
+
.site-main{flex:1 0 auto;width:min(calc(100% - 48px),var(--content-width));min-width:0;margin-inline:auto;padding:clamp(40px,6.5vw,82px) 0 clamp(76px,10vw,132px)}
|
|
77
|
+
.page-builder{display:grid;gap:clamp(24px,4vw,44px);min-width:0}
|
|
78
|
+
.page-title{width:100%;max-width:1040px;margin:0 auto}
|
|
79
|
+
.page-title h1{margin:0}
|
|
80
|
+
.hero-block{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,.72fr);align-items:center;gap:clamp(28px,6vw,80px);min-width:0;padding:clamp(32px,7vw,88px);border:1px solid var(--line);border-radius:32px;background:radial-gradient(ellipse at 90% 12%,rgba(0,113,227,.105),transparent 37%),var(--surface);box-shadow:var(--shadow)}
|
|
81
|
+
.hero-block:not(.hero-block--split){display:block}
|
|
82
|
+
.hero-main,.hero-aside{min-width:0}
|
|
83
|
+
.hero-block h1,.hero-block h2{max-width:22ch;margin:0 0 20px;font-size:clamp(2.5rem,6vw,4.8rem);letter-spacing:-.045em;line-height:1.12;text-wrap:balance}
|
|
84
|
+
.hero-block h2{font-size:clamp(2.1rem,4.2vw,3.5rem)}
|
|
85
|
+
.hero-block--banner{overflow:hidden;padding:clamp(32px,5vw,60px) 0 0;background:#f5f5f7;box-shadow:none}
|
|
86
|
+
.hero-block--banner .hero-main{padding-inline:clamp(24px,5vw,60px);text-align:center}
|
|
87
|
+
.hero-block--banner h1,.hero-block--banner .hero-copy{margin-inline:auto}
|
|
88
|
+
.hero-block--banner .hero-main>p:last-child{margin-bottom:0}
|
|
89
|
+
.hero-banner{display:block;width:min(100%,680px);height:auto;max-height:450px;margin:24px auto 0;object-fit:contain}
|
|
90
|
+
@media(prefers-color-scheme:dark){.hero-block--banner{background:#1c1c1e}}
|
|
91
|
+
.eyebrow{margin:0 0 15px;color:var(--accent);font-size:.78rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase}
|
|
92
|
+
.hero-copy{max-width:58ch;margin:0 0 26px;color:var(--muted);font-size:clamp(1.05rem,1.9vw,1.25rem);line-height:1.55}
|
|
93
|
+
.hero-highlights{display:grid;gap:10px;margin:0;padding:0;list-style:none}
|
|
94
|
+
.hero-highlights li{padding:15px 18px;border:1px solid var(--line);border-radius:var(--radius-small);background:var(--surface);font-size:.94rem;font-weight:550}
|
|
95
|
+
.hero-mascot,.hero-mascot-picture{display:block;width:min(100%,260px);height:auto;margin-inline:auto;object-fit:contain}
|
|
96
|
+
.button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:46px;padding:10px 22px;border:1px solid var(--button-bg);border-radius:999px;background:var(--button-bg);color:#fff;font-size:.94rem;font-weight:600;line-height:1.3;transition:background .18s ease,transform .18s ease}
|
|
97
|
+
.button::after{content:"→";font-size:1.15em}
|
|
98
|
+
.button:hover{border-color:var(--button-hover);background:var(--button-hover);color:#fff;text-decoration:none;transform:translateY(-1px)}
|
|
99
|
+
.button:focus-visible{outline-color:var(--ink)}
|
|
100
|
+
.page-builder-row{display:grid;gap:clamp(16px,2vw,24px);align-items:stretch;min-width:0;width:100%}
|
|
101
|
+
.page-builder-row[data-columns="1"]{grid-template-columns:minmax(0,1fr)}
|
|
102
|
+
.page-builder-row[data-columns="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}
|
|
103
|
+
.page-builder-row[data-columns="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}
|
|
104
|
+
.page-builder-row[data-columns="4"]{grid-template-columns:repeat(4,minmax(0,1fr))}
|
|
105
|
+
.page-builder-cell{min-width:0}
|
|
106
|
+
.page-builder-cell>.page-section:only-child{height:100%}
|
|
107
|
+
.page-section{min-width:0;margin:0;padding:clamp(24px,4vw,42px);border:1px solid transparent;border-radius:var(--radius-card)}
|
|
108
|
+
.page-section--plain{padding-inline:0}
|
|
109
|
+
.page-section--soft{border-color:var(--line);background:var(--surface)}
|
|
110
|
+
.page-section--accent{background:var(--accent-soft)}
|
|
111
|
+
.page-section--dark{background:#1d1d1f;color:#fff}
|
|
112
|
+
.page-section--dark h2,.page-section--dark h3,.page-section--dark a{color:#fff}
|
|
113
|
+
.page-section--dark .text-widget,.page-section--dark .section-intro{color:#d2d2d7}
|
|
114
|
+
.section-inner{width:100%;margin-inline:auto}
|
|
115
|
+
.section-inner--default{max-width:900px}
|
|
116
|
+
.section-inner--wide{max-width:1120px}
|
|
117
|
+
.section-inner--narrow{max-width:680px}
|
|
118
|
+
.section-inner>h2,.feature-section>h2,.latest-posts>h2,.cta-block h2,.faq-block>h2{margin:0 0 14px}
|
|
119
|
+
.section-intro{max-width:68ch;margin:0 0 24px;color:var(--muted);font-size:1.05rem}
|
|
120
|
+
.text-widget{max-width:72ch;color:var(--muted);font-size:1.035rem;line-height:1.85}
|
|
121
|
+
.text-widget p:last-child{margin-bottom:0}
|
|
122
|
+
.content-heading{margin:1.6em 0 .5em}
|
|
123
|
+
.display-text{font-size:clamp(2rem,6vw,4.5rem);line-height:1.04;letter-spacing:-.06em}
|
|
124
|
+
.display-text--serif{font-family:var(--edgepress-font-serif);font-weight:500}
|
|
125
|
+
.display-text--mono{font-family:var(--edgepress-font-mono);letter-spacing:-.07em}
|
|
126
|
+
.display-text--accent{color:var(--accent)}
|
|
127
|
+
.display-text--outline{-webkit-text-stroke:1px currentColor;color:transparent}
|
|
128
|
+
.feature-section{margin:18px 0 0}
|
|
129
|
+
.feature-section>h2{font-size:clamp(1.4rem,2.5vw,1.9rem)}
|
|
130
|
+
.feature-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:20px}
|
|
131
|
+
.feature-card,.steps-widget li,.post-card,.privacy-service-list li{min-width:0;padding:clamp(21px,3vw,30px);border:1px solid var(--line);border-radius:22px;background:var(--surface);box-shadow:0 5px 20px rgba(29,29,31,.025)}
|
|
132
|
+
.feature-card h3,.steps-widget h4{margin:0 0 10px}
|
|
133
|
+
.feature-card p,.steps-widget li p{margin-bottom:0;color:var(--muted)}
|
|
134
|
+
.feature-card{transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}
|
|
135
|
+
.feature-card:has(a):hover,.feature-card:focus-within{transform:translateY(-3px);border-color:var(--accent);box-shadow:var(--shadow)}
|
|
136
|
+
.feature-card h3 a{color:var(--ink)}
|
|
137
|
+
.feature-card h3 a:hover{color:var(--accent);text-decoration:none}
|
|
138
|
+
.feature-card h3 a::after{display:inline-block;margin-left:.5em;color:var(--accent);font-size:.85em;content:"↗"}
|
|
139
|
+
.feature-icon{display:block;width:48px;height:48px;padding:11px;margin:0 0 22px;border-radius:14px;background:var(--accent-soft);color:var(--accent);}
|
|
140
|
+
.link-list ul{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:12px;margin:0;padding:0;list-style:none}
|
|
141
|
+
.link-list li{min-width:0;padding:17px 19px;border:1px solid var(--line);border-radius:18px;background:var(--surface)}
|
|
142
|
+
.link-list li>a{font-weight:650}
|
|
143
|
+
.link-list li p{margin:.4em 0 0;color:var(--muted);font-size:.93rem}
|
|
144
|
+
.steps-widget ol{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:14px;margin:0;padding:0;list-style:none;counter-reset:step}
|
|
145
|
+
.steps-widget li{counter-increment:step}
|
|
146
|
+
.steps-widget li::before{display:block;margin-bottom:11px;color:var(--accent);font-size:.8rem;font-weight:700;letter-spacing:.1em;content:counter(step,decimal-leading-zero)}
|
|
147
|
+
.code-widget{min-width:0;margin:18px 0}
|
|
148
|
+
.code-widget figcaption{margin:0 0 8px;font-size:.9rem;font-weight:650}
|
|
149
|
+
pre,.code-widget pre,.steps-widget pre{max-width:100%;overflow:auto;overscroll-behavior-inline:contain;padding:18px;border:1px solid var(--line);border-radius:18px;background:#1d1d1f;color:#f5f5f7;font: .9rem/1.65 var(--edgepress-font-mono);white-space:pre-wrap;overflow-wrap:anywhere}
|
|
150
|
+
pre code{font:inherit;white-space:inherit}
|
|
151
|
+
.table-widget{max-width:100%;margin:18px 0;overflow-x:auto;border:1px solid var(--line);border-radius:18px;background:var(--surface)}
|
|
152
|
+
.table-widget table{width:100%;min-width:560px;border-collapse:collapse}
|
|
153
|
+
.table-widget caption{padding:14px;text-align:left;font-weight:650}
|
|
154
|
+
.table-widget th,.table-widget td{padding:11px 14px;border-top:1px solid var(--line);text-align:left;vertical-align:top}
|
|
155
|
+
.table-widget th{background:var(--surface-soft);font-weight:650}
|
|
156
|
+
.notice-widget{padding:19px 22px;border:1px solid var(--line);border-radius:18px;background:var(--surface-soft)}
|
|
157
|
+
.notice-widget h3{margin:0 0 6px;font-size:1.05rem}
|
|
158
|
+
.notice-widget p{margin:0}
|
|
159
|
+
.notice-widget--warning{border-color:rgba(164,77,0,.25);background:var(--warning-soft);color:var(--warning)}
|
|
160
|
+
.notice-widget--success{border-color:rgba(24,121,78,.25);background:var(--success-soft);color:var(--success)}
|
|
161
|
+
.media-text-block{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:clamp(22px,5vw,54px)}
|
|
162
|
+
.media-text-block,.media-text-block>*{min-width:0}
|
|
163
|
+
.media-text-block--right figure{order:2}
|
|
164
|
+
.media-text-block figure{margin:0}
|
|
165
|
+
.media-text-block img,.media-text-block video{display:block;width:100%;max-height:620px;border-radius:22px;object-fit:cover}
|
|
166
|
+
.media-text-block figcaption{margin-top:9px;color:var(--muted);font-size:.9rem}
|
|
167
|
+
.media-text-copy{max-width:62ch}
|
|
168
|
+
.media-text-copy h2{font-size:clamp(1.6rem,3.2vw,2.6rem)}
|
|
169
|
+
.image-block{margin:0}
|
|
170
|
+
.image-block img{display:block;width:100%;border-radius:24px}
|
|
171
|
+
.image-block figcaption,.quote-block figcaption{margin-top:8px;color:var(--muted);font-size:.9rem}
|
|
172
|
+
.quote-block{margin:20px 0;padding:clamp(24px,4vw,42px);border-radius:24px;background:var(--accent-soft)}
|
|
173
|
+
.quote-block blockquote{margin:0;font-size:clamp(1.25rem,2.4vw,1.8rem);letter-spacing:-.025em;line-height:1.45}
|
|
174
|
+
.quote-block blockquote p{margin:0}
|
|
175
|
+
.cta-block{padding:clamp(25px,5vw,50px);border:1px solid var(--line);border-radius:28px;background:var(--surface);box-shadow:var(--shadow)}
|
|
176
|
+
.cta-block p{color:var(--muted)}
|
|
177
|
+
.cta-block .button{color:#fff}
|
|
178
|
+
.faq-block details{padding:17px 0;border-bottom:1px solid var(--line)}
|
|
179
|
+
.faq-block summary{color:var(--ink);font-weight:650;cursor:pointer}
|
|
180
|
+
.faq-block details>div,.faq-block details>p{color:var(--muted)}
|
|
181
|
+
.post-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,310px),1fr));gap:20px}
|
|
182
|
+
.latest-posts .post-list{grid-template-columns:repeat(2,minmax(0,1fr))}
|
|
183
|
+
.latest-posts>h2{margin-bottom:24px}
|
|
184
|
+
.latest-posts .post-list .post-card:first-child{grid-column:1/-1;padding:clamp(24px,4vw,42px);background:var(--accent-soft);border-color:transparent}
|
|
185
|
+
.latest-posts .post-card:first-child h3{max-width:36ch;font-size:clamp(1.5rem,2.7vw,2rem)}
|
|
186
|
+
.latest-posts .post-card:first-child .post-excerpt{max-width:78ch}
|
|
187
|
+
.archive-post-list{gap:24px;margin-top:20px}
|
|
188
|
+
.post-card{margin:0}
|
|
189
|
+
.post-card h2,.post-card h3{margin:0 0 9px;font-size:1.25rem;letter-spacing:-.025em;line-height:1.3}
|
|
190
|
+
.post-card h2 a,.post-card h3 a{color:var(--ink)}
|
|
191
|
+
.post-card h2 a:hover,.post-card h3 a:hover{color:var(--accent);text-decoration:none}
|
|
192
|
+
.meta{display:flex;flex-wrap:wrap;gap:.25em .5em;margin:0 0 10px;color:var(--muted);font-size:.84rem}
|
|
193
|
+
.post-excerpt{color:var(--muted);font-size:.94rem;line-height:1.6}
|
|
194
|
+
.post-excerpt p{margin:.35rem 0 0}
|
|
195
|
+
.post-excerpt p:first-child{margin-top:0}
|
|
196
|
+
.post{max-width:860px;margin-inline:auto}
|
|
197
|
+
.post>header{margin:0 0 30px}
|
|
198
|
+
.post>header h1{margin:0 0 20px;font-size:clamp(2.1rem,4.8vw,3.65rem);line-height:1.2}
|
|
199
|
+
.post-content{max-width:72ch;margin-inline:auto;color:var(--ink);font-size:1.08rem;line-height:1.9;overflow-wrap:anywhere}
|
|
200
|
+
.post-content>p{margin-bottom:1.35em}
|
|
201
|
+
.post-content li+li{margin-top:.45em}
|
|
202
|
+
html[lang^="zh"] h1,html[lang^="zh"] h2,html[lang^="zh"] h3{letter-spacing:-.015em;line-height:1.3}
|
|
203
|
+
html[lang^="zh"] .post-content{max-width:42em}
|
|
204
|
+
.post-content h2{margin:2.1em 0 .7em;padding-top:.7em;border-top:1px solid var(--line);font-size:clamp(1.55rem,3vw,2.15rem)}
|
|
205
|
+
.post-content h3{margin:1.7em 0 .55em;font-size:1.35rem}
|
|
206
|
+
.post-content img,.post-content video{display:block;height:auto;max-width:100%;border-radius:20px}
|
|
207
|
+
.post-content table{display:block;width:100%;max-width:100%;overflow:auto;border-collapse:collapse;overscroll-behavior-inline:contain}
|
|
208
|
+
.post-content th,.post-content td{padding:9px 12px;border:1px solid var(--line);text-align:left;vertical-align:top}
|
|
209
|
+
.post-content th{background:var(--surface-soft)}
|
|
210
|
+
.post-content blockquote{margin:1.5em 0;padding:4px 0 4px 20px;border-left:3px solid var(--accent);color:var(--muted)}
|
|
211
|
+
.post-content blockquote p:last-child{margin-bottom:0}
|
|
212
|
+
.post-video{margin:1.5em 0}
|
|
213
|
+
.post-video video{width:100%;background:#000}
|
|
214
|
+
.post-tags{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin:30px 0 0;padding-top:18px;border-top:1px solid var(--line);color:var(--muted);font-size:.9rem}
|
|
215
|
+
.post-tags ul{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}
|
|
216
|
+
.post-tags a{display:inline-flex;padding:4px 11px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-weight:550}
|
|
217
|
+
.pagination{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin:24px 0}
|
|
218
|
+
.pagination a{display:inline-flex;align-items:center;min-height:44px;padding:9px 15px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-weight:600}
|
|
219
|
+
.pagination a:hover{border-color:var(--accent);text-decoration:none}
|
|
220
|
+
.pagination-pages{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}
|
|
221
|
+
.pagination-pages a,.pagination-current{display:inline-flex;min-width:44px;min-height:44px;align-items:center;justify-content:center;padding:9px 12px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-weight:600}
|
|
222
|
+
.pagination-current{border-color:var(--button-bg);background:var(--button-bg);color:#fff}
|
|
223
|
+
.pagination-ellipsis{padding:0 4px;color:var(--muted)}
|
|
224
|
+
.latest-posts-pagination{justify-content:flex-start;gap:16px}
|
|
225
|
+
.latest-posts-pagination a:last-child{margin-left:auto}
|
|
226
|
+
.page-links ul{display:flex;flex-wrap:wrap;gap:10px;margin:0;padding:0;list-style:none}
|
|
227
|
+
.page-links a{display:inline-flex;min-height:42px;align-items:center;padding:8px 14px;border:1px solid var(--line);border-radius:999px;background:var(--surface)}
|
|
228
|
+
.intro{max-width:900px;margin:0 auto 42px;text-align:center}
|
|
229
|
+
.intro h1{margin:0 0 16px}
|
|
230
|
+
.intro p{max-width:65ch;margin-inline:auto;color:var(--muted);font-size:1.16rem}
|
|
231
|
+
.local-search-page{max-width:820px;margin-inline:auto;padding:clamp(24px,5vw,48px);border:1px solid var(--line);border-radius:var(--radius-card);background:var(--surface)}
|
|
232
|
+
.local-search-page h1{font-size:clamp(2.3rem,5vw,3.8rem)}
|
|
233
|
+
.local-search-form label{display:block;margin-bottom:9px;font-weight:650}
|
|
234
|
+
.local-search-controls{display:flex;gap:10px;min-width:0}
|
|
235
|
+
.local-search-controls input{flex:1 1 auto;min-width:0;min-height:48px;padding:10px 14px;border:1px solid var(--line);border-radius:14px;background:var(--canvas);color:var(--ink)}
|
|
236
|
+
.local-search-controls button{flex:0 0 auto;min-height:48px;padding:10px 18px;border:0;border-radius:999px;background:var(--button-bg);color:#fff;font-weight:650;cursor:pointer}
|
|
237
|
+
.local-search-hint,.local-search-results time{color:var(--muted);font-size:.9rem}
|
|
238
|
+
.local-search-results{padding-inline-start:1.4rem}
|
|
239
|
+
.local-search-results>li{padding:14px 0;border-top:1px solid var(--line)}
|
|
240
|
+
.local-search-results h2{margin:0;font-size:1.2rem}
|
|
241
|
+
.local-search-results p{margin:6px 0 0}
|
|
242
|
+
.error-page{max-width:760px;margin:5vh auto;padding:clamp(32px,7vw,76px);border:1px solid var(--line);border-radius:32px;background:var(--surface);text-align:center;box-shadow:var(--shadow)}
|
|
243
|
+
.error-code{margin:0;color:var(--accent);font-size:clamp(5rem,16vw,10rem);font-weight:700;line-height:.9;letter-spacing:-.09em}
|
|
244
|
+
.privacy-controller-inline{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:0}
|
|
245
|
+
.privacy-controller-inline span{min-width:0;overflow-wrap:anywhere}
|
|
246
|
+
.privacy-controller-details{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr));gap:12px}
|
|
247
|
+
.privacy-controller-details>div{padding:15px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}
|
|
248
|
+
.privacy-controller-details dt{color:var(--muted);font-size:.85rem;font-weight:650}
|
|
249
|
+
.privacy-controller-details dd{margin:4px 0 0;overflow-wrap:anywhere}
|
|
250
|
+
.privacy-service-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:12px;margin:0;padding:0;list-style:none}
|
|
251
|
+
.privacy-service-list h3{margin:0 0 8px;font-size:1.1rem}
|
|
252
|
+
.privacy-service-list p{margin:5px 0;color:var(--muted);font-size:.91rem}
|
|
253
|
+
.privacy-service-list li{padding:18px}
|
|
254
|
+
.privacy-services-empty{padding:16px;border:1px dashed var(--line);border-radius:16px;color:var(--muted)}
|
|
255
|
+
.privacy-vendor-link{display:inline-block;margin-top:4px}
|
|
256
|
+
.markdown-video{margin:1.5rem 0}
|
|
257
|
+
.markdown-video video{display:block;width:100%;border-radius:20px;background:#000}
|
|
258
|
+
.markdown-video figcaption{margin-top:8px;color:var(--muted);font-size:.9rem}
|
|
259
|
+
.markdown-task-status{display:inline-block;min-width:1.35em;font-weight:700}
|
|
260
|
+
.code-copy-block{max-width:100%;margin:1.25em 0;overflow:hidden;border:1px solid var(--line);border-radius:18px;background:#1d1d1f}
|
|
261
|
+
.code-copy-block pre{margin:0;border:0;border-radius:0}
|
|
262
|
+
.code-copy-toolbar{display:flex;justify-content:flex-end;padding:8px 10px;background:#262629}
|
|
263
|
+
.code-copy-button{min-height:38px;padding:6px 13px;border:1px solid rgba(255,255,255,.35);border-radius:999px;background:transparent;color:#fff;font:600 .86rem/1.3 var(--edgepress-font-sans);cursor:pointer}
|
|
264
|
+
.code-copy-button:hover{background:#3a3a3c}
|
|
265
|
+
.code-copy-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
|
|
266
|
+
.post-toc-widget{position:fixed;inset-inline-end:max(16px,env(safe-area-inset-right));inset-block-end:calc(max(16px,env(safe-area-inset-bottom)) + 56px);z-index:950;max-width:calc(100vw - 32px);color:var(--ink);font:14px/1.5 var(--edgepress-font-sans)}
|
|
267
|
+
.post-toc-widget[hidden]{display:none}
|
|
268
|
+
.post-toc-toggle{display:inline-flex;align-items:center;gap:8px;min-height:46px;padding:9px 15px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);font:inherit;font-weight:650;box-shadow:var(--shadow);cursor:pointer}
|
|
269
|
+
.post-toc-toggle .icon-library{width:18px;height:18px;flex:none}
|
|
270
|
+
.post-toc-panel{position:absolute;inset-inline-end:0;inset-block-end:calc(100% + 10px);display:grid;gap:9px;width:min(23rem,calc(100vw - 32px));max-height:min(60vh,32rem);overflow:auto;overscroll-behavior:contain;padding:16px;border:1px solid var(--line);border-radius:20px;background:var(--surface);box-shadow:0 16px 45px rgba(0,0,0,.18)}
|
|
271
|
+
.post-toc-panel[hidden]{display:none}
|
|
272
|
+
.post-toc-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}
|
|
273
|
+
.post-toc-heading h2{margin:0;font-size:1rem;letter-spacing:0}
|
|
274
|
+
.post-toc-close{display:grid;place-items:center;width:42px;height:42px;flex:none;border:1px solid var(--line);border-radius:50%;background:var(--canvas);color:var(--ink);font:inherit;font-size:1.35rem;line-height:1;cursor:pointer}
|
|
275
|
+
.post-toc-panel ol{margin:0;padding-inline-start:0;list-style:none}
|
|
276
|
+
.post-toc-panel li{padding:3px 0;overflow-wrap:anywhere}
|
|
277
|
+
.post-toc-panel .post-toc-level-3{padding-inline-start:1rem}
|
|
278
|
+
.post-toc-panel .post-toc-level-4,.post-toc-panel .post-toc-level-5,.post-toc-panel .post-toc-level-6{padding-inline-start:2rem}
|
|
279
|
+
.site-footer{border-top:1px solid var(--line);background:var(--surface-soft)}
|
|
280
|
+
.footer-inner{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px 24px;width:min(calc(100% - 48px),var(--content-width));min-height:82px;margin-inline:auto;padding:12px 0}
|
|
281
|
+
.footer-copy{margin:0;color:var(--muted);font-size:.84rem;font-weight:600;letter-spacing:.02em}
|
|
282
|
+
.footer-navigation{display:flex;align-items:center;flex-wrap:wrap;gap:5px 20px}
|
|
283
|
+
.footer-navigation a{min-height:40px;font-size:.84rem}
|
|
284
|
+
.site-header--hidden,.brand--hidden,.primary-navigation--hidden,.locale-nav--hidden,.site-footer--hidden,.footer-copy--hidden,.footer-navigation--hidden{display:none!important}
|
|
285
|
+
.privacy-manager{position:fixed;inset-inline-end:max(16px,env(safe-area-inset-right));inset-block-end:max(16px,env(safe-area-inset-bottom));z-index:1000;display:grid;align-content:end;gap:8px;box-sizing:border-box;width:min(30rem,calc(100vw - 32px));max-height:calc(100dvh - 32px);color:var(--ink);font:13px/1.5 var(--edgepress-font-sans);pointer-events:none;isolation:isolate}
|
|
286
|
+
.privacy-manager *{box-sizing:border-box}
|
|
287
|
+
.privacy-manager>*{min-width:0;pointer-events:auto}
|
|
288
|
+
.privacy-manager .privacy-settings-button,.privacy-manager .privacy-panel button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:0;min-height:46px;max-width:100%;padding:9px 15px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);font:inherit;font-weight:650;line-height:1.25;text-align:center;overflow-wrap:anywhere;cursor:pointer}
|
|
289
|
+
.privacy-manager .privacy-settings-button{order:1;justify-self:end;box-shadow:var(--shadow)}
|
|
290
|
+
.privacy-manager .privacy-panel{position:relative;order:0;display:grid;gap:10px;width:100%;max-height:min(66vh,42rem);max-height:min(66dvh,42rem);overflow:auto;overscroll-behavior:contain;padding:17px;border:1px solid var(--line);border-radius:22px;background:var(--surface);color:var(--ink);box-shadow:0 16px 48px rgba(0,0,0,.2)}
|
|
291
|
+
.privacy-manager .privacy-panel[hidden]{display:none}
|
|
292
|
+
.privacy-manager .privacy-panel h2{margin:0;padding-inline-end:46px;font-size:1.1rem;line-height:1.3}
|
|
293
|
+
.privacy-manager .privacy-panel p{margin:0;overflow-wrap:anywhere}
|
|
294
|
+
.privacy-manager .privacy-panel .privacy-close{position:absolute;inset-block-start:7px;inset-inline-end:7px;width:44px;min-width:44px;min-height:44px;padding:8px;border-radius:50%}
|
|
295
|
+
.privacy-manager .privacy-panel .privacy-close .icon-library,.privacy-manager .icon-library{width:19px;height:19px;flex:none}
|
|
296
|
+
.privacy-manager .privacy-intro,.privacy-manager .privacy-essential,.privacy-manager .privacy-controller{color:var(--muted)}
|
|
297
|
+
.privacy-manager .privacy-service-settings{display:grid;gap:8px;min-width:0}
|
|
298
|
+
.privacy-manager .privacy-service-setting{display:grid;gap:5px;min-width:0;padding:11px;border:1px solid var(--line);border-radius:15px;background:var(--canvas)}
|
|
299
|
+
.privacy-manager .privacy-service-toggle{display:grid;grid-template-columns:minmax(0,1fr) 44px;align-items:center;gap:8px;min-width:0;cursor:pointer}
|
|
300
|
+
.privacy-manager .privacy-service-toggle input{position:relative;grid-column:2;grid-row:1;width:44px;height:26px;margin:0;appearance:none;border:1px solid var(--line);border-radius:999px;background:#b8b8bd;cursor:pointer}
|
|
301
|
+
.privacy-manager .privacy-service-toggle input::before{position:absolute;inset-block-start:3px;inset-inline-start:3px;width:18px;height:18px;border-radius:50%;background:#fff;content:"";transition:transform .16s ease}
|
|
302
|
+
.privacy-manager .privacy-service-toggle input:checked{border-color:var(--accent);background:var(--accent)}
|
|
303
|
+
.privacy-manager .privacy-service-toggle input:checked::before{transform:translateX(18px)}
|
|
304
|
+
.privacy-manager .privacy-service-toggle input:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
|
|
305
|
+
.privacy-manager .privacy-service-toggle-text{grid-column:1;grid-row:1;display:grid;gap:3px;min-width:0;overflow-wrap:anywhere}
|
|
306
|
+
.privacy-manager .privacy-service-toggle-text strong{font-size:.94rem}
|
|
307
|
+
.privacy-manager .privacy-service-purpose{color:var(--muted);font-size:.85rem;line-height:1.4}
|
|
308
|
+
.privacy-manager .privacy-details{min-width:0;margin:0;border-top:1px solid var(--line)}
|
|
309
|
+
.privacy-manager .privacy-details>summary{padding:8px 1px 0;font-size:.86rem;font-weight:650;cursor:pointer}
|
|
310
|
+
.privacy-manager .privacy-service-disclosures{display:grid;gap:6px;margin:8px 0 0;font-size:.81rem;line-height:1.4}
|
|
311
|
+
.privacy-manager .privacy-service-disclosures>div{display:grid;grid-template-columns:minmax(5.3rem,.38fr) minmax(0,1fr);gap:8px;min-width:0}
|
|
312
|
+
.privacy-manager .privacy-service-disclosures dt{color:var(--muted);font-weight:650}
|
|
313
|
+
.privacy-manager .privacy-service-disclosures dd{min-width:0;margin:0;overflow-wrap:anywhere}
|
|
314
|
+
.privacy-manager .privacy-service-disclosures a,.privacy-manager .privacy-policy-link{overflow-wrap:anywhere}
|
|
315
|
+
.privacy-manager .privacy-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
|
|
316
|
+
.privacy-manager .privacy-panel .privacy-accept,.privacy-manager .privacy-panel .privacy-reject{border-color:var(--button-bg);background:var(--button-bg);color:#fff}
|
|
317
|
+
.privacy-manager .privacy-panel .privacy-accept:hover:not(:disabled),.privacy-manager .privacy-panel .privacy-reject:hover:not(:disabled){filter:brightness(.94)}
|
|
318
|
+
.privacy-manager .privacy-panel .privacy-save{grid-column:1/-1;background:transparent}
|
|
319
|
+
.privacy-manager .privacy-panel button:disabled{opacity:.55;cursor:not-allowed}
|
|
320
|
+
.privacy-manager .privacy-footer{display:grid;gap:5px;padding-block-start:9px;border-top:1px solid var(--line);font-size:.81rem}
|
|
321
|
+
.privacy-manager .privacy-controller{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 7px}
|
|
322
|
+
.privacy-manager .privacy-controller a{overflow-wrap:anywhere}
|
|
323
|
+
.privacy-manager .privacy-policy-link{width:fit-content;max-width:100%;font-size:.86rem}
|
|
324
|
+
.privacy-manager .privacy-empty{padding:10px;border:1px dashed var(--line);border-radius:12px;color:var(--muted)}
|
|
325
|
+
.privacy-manager .privacy-policy-link:focus-visible,.privacy-manager .privacy-settings-button:focus-visible,.privacy-manager .privacy-panel button:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
|
|
326
|
+
.post-content h2[id],.post-content h3[id],.post-content h4[id],.post-content h5[id],.post-content h6[id]{scroll-margin-top:90px}
|
|
327
|
+
.post-content a,.post-content code,.meta,.tags{overflow-wrap:anywhere}
|
|
328
|
+
.post-content pre,.code-widget pre,.steps-widget pre{white-space:pre-wrap;overflow-wrap:anywhere;word-break:normal}
|
|
329
|
+
@media(max-width:880px){
|
|
330
|
+
.header-inner{grid-template-columns:auto auto;gap:0 16px;padding-block:8px}
|
|
331
|
+
.primary-navigation{grid-column:1/-1;grid-row:2;justify-content:flex-start;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:none}
|
|
332
|
+
.primary-navigation::-webkit-scrollbar{display:none}
|
|
333
|
+
.locale-nav{grid-column:2;grid-row:1}
|
|
334
|
+
.page-builder-row[data-columns="3"],.page-builder-row[data-columns="4"]{grid-template-columns:repeat(2,minmax(0,1fr))}
|
|
335
|
+
}
|
|
336
|
+
@media(max-width:620px){
|
|
337
|
+
.header-inner,.footer-inner{width:calc(100% - 32px)}
|
|
338
|
+
.site-main{width:calc(100% - 32px);padding-top:32px}
|
|
339
|
+
.primary-navigation{gap:18px}
|
|
340
|
+
.primary-navigation a,.primary-navigation .navigation-select{min-height:44px;font-size:.84rem}
|
|
341
|
+
.locale-nav select{max-width:128px;min-height:40px}
|
|
342
|
+
.hero-block{grid-template-columns:minmax(0,1fr);padding:30px 24px;border-radius:25px}
|
|
343
|
+
.hero-block h1{font-size:clamp(2.3rem,10vw,3.5rem)}
|
|
344
|
+
.hero-block h2{font-size:clamp(1.9rem,8vw,2.6rem)}
|
|
345
|
+
.hero-block--banner{padding:32px 0 0}
|
|
346
|
+
.hero-banner{max-height:none}
|
|
347
|
+
.hero-block--split{align-items:start}
|
|
348
|
+
.page-builder-row[data-columns="2"],.page-builder-row[data-columns="3"],.page-builder-row[data-columns="4"]{grid-template-columns:minmax(0,1fr)}
|
|
349
|
+
.latest-posts .post-list{grid-template-columns:minmax(0,1fr)}
|
|
350
|
+
.page-section{padding:23px;border-radius:22px}
|
|
351
|
+
.page-section--plain{padding-inline:0}
|
|
352
|
+
.media-text-block{grid-template-columns:minmax(0,1fr)}
|
|
353
|
+
.media-text-block--right figure{order:0}
|
|
354
|
+
.local-search-controls{align-items:stretch;flex-direction:column}
|
|
355
|
+
.local-search-controls button{min-height:46px}
|
|
356
|
+
.footer-inner{align-items:flex-start;flex-direction:column;justify-content:center;padding:18px 0}
|
|
357
|
+
.footer-navigation{gap:2px 15px}
|
|
358
|
+
.post-toc-widget{inset-inline-end:max(12px,env(safe-area-inset-right));inset-block-end:calc(max(12px,env(safe-area-inset-bottom)) + 56px)}
|
|
359
|
+
.post-toc-panel{max-height:min(58vh,30rem)}
|
|
360
|
+
.privacy-manager{inset-inline-start:max(12px,env(safe-area-inset-left));inset-inline-end:max(12px,env(safe-area-inset-right));inset-block-end:max(12px,env(safe-area-inset-bottom));width:auto;max-width:none}
|
|
361
|
+
.privacy-manager .privacy-panel{max-height:min(66dvh,40rem);padding:14px}
|
|
362
|
+
}
|
|
363
|
+
@media(prefers-reduced-motion:reduce){
|
|
364
|
+
html{scroll-behavior:auto}
|
|
365
|
+
*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/* Raster artwork and predictable spacing for generated page elements. */
|
|
369
|
+
.icon-library{display:inline-block;width:24px;height:24px;flex:none;object-fit:contain;vertical-align:middle}
|
|
370
|
+
.navigation-icon{width:20px;height:20px}
|
|
371
|
+
.feature-icon{width:32px;height:32px}
|
|
372
|
+
.post-toc-toggle .icon-library,.privacy-manager .icon-library{width:20px;height:20px}
|
|
373
|
+
.privacy-manager .privacy-accept .icon-library,.privacy-manager .privacy-reject .icon-library{filter:brightness(0) invert(1)}
|
|
374
|
+
.page-builder-cell{display:grid;align-content:start;gap:clamp(16px,2.5vw,28px)}
|
|
375
|
+
.page-builder-cell>*,.section-inner>*{min-width:0;margin-block:0}
|
|
376
|
+
.section-inner{display:grid;gap:16px}
|
|
377
|
+
.post-list{display:grid;gap:clamp(16px,2.5vw,24px)}
|
|
378
|
+
.archive-post-list{margin-block:24px}
|
|
379
|
+
.post-list>.post-card{margin:0}
|
|
380
|
+
.post-card .meta{margin-block:8px;line-height:1.6}
|
|
381
|
+
.latest-posts>h2,.feature-section>h2{margin-block:0 16px}
|
|
382
|
+
.pagination:not(.latest-posts-pagination){align-items:center;justify-content:center;gap:12px}
|
|
383
|
+
.pagination-pages{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}
|
|
384
|
+
.pagination-pages a,.pagination-current{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:var(--panel,var(--paper,var(--surface)));color:var(--ink);font-weight:600;text-decoration:none}
|
|
385
|
+
.pagination-current{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);font-weight:800}
|
|
386
|
+
.pagination-ellipsis{padding-inline:4px;color:var(--muted)}
|
|
387
|
+
.hero-block--banner{grid-template-columns:minmax(0,1fr);gap:24px}
|
|
388
|
+
.hero-banner{display:block;width:min(100%,680px);height:auto;max-height:460px;margin:0 auto;object-fit:contain}
|
|
389
|
+
.hero-block--banner .hero-aside{max-width:100%}
|
|
390
|
+
|
|
391
|
+
.page-section--dark .icon-library{filter:brightness(0) invert(1)}
|
|
392
|
+
@media(prefers-color-scheme:dark){.icon-library{filter:brightness(0) invert(1)}}
|
|
393
|
+
|
|
394
|
+
.brand-mark{width:36px;height:36px;object-fit:contain;border-radius:50%;background:#f8efdc;padding:2px}
|
|
395
|
+
.hero-mascot,.hero-mascot-picture{width:min(100%,320px);max-height:240px}
|
|
396
|
+
.hero-banner-picture{display:block;margin-top:24px}
|
|
397
|
+
|
|
398
|
+
/* Journal metadata and accessible project navigation. */
|
|
399
|
+
.navigation-select[hidden] { display: none; }
|
|
400
|
+
.navigation-select { display: inline-flex; align-items: center; gap: .42em; max-width: 100%; color: var(--accent); }
|
|
401
|
+
.navigation-select select { font: inherit; color: inherit; background: transparent; border: 0; border-radius: 0; padding: .25rem 0; min-height: 44px; max-width: 100%; field-sizing: content; cursor: pointer; }
|
|
402
|
+
.primary-navigation a { min-height: 44px; }
|
|
403
|
+
.navigation-select option { color: CanvasText; background: Canvas; }
|
|
404
|
+
.navigation-select select:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
|
|
405
|
+
.post-byline { display: flex; align-items: center; flex-wrap: wrap; gap: .7rem 1.2rem; margin-block: 1rem; }
|
|
406
|
+
.post-byline .post-author { display: inline-flex; align-items: center; gap: .55rem; }
|
|
407
|
+
.author-avatar { width: 40px; height: 40px; flex: 0 0 40px; border-radius: 50%; object-fit: cover; }
|
|
408
|
+
.post-tags { display: flex; align-items: center; flex-wrap: wrap; gap: .45rem; margin-block: 1rem 1.5rem; }
|
|
409
|
+
.post-tag { display: inline-block; max-width: 100%; overflow-wrap: anywhere; border: 1px solid currentColor; border-radius: 1rem; padding: .15rem .6rem; font-size: .85em; }
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
.post-pinned{display:inline-block;font-size:.78rem;font-weight:600;padding:.15rem .5rem;border:1px solid currentColor;border-radius:.35rem;margin:.25rem 0}
|
|
415
|
+
|
|
416
|
+
.post-changes{margin:1.5rem 0;border:1px solid var(--line);border-radius:12px;overflow:hidden;color:var(--ink)}
|
|
417
|
+
.post-changes summary{cursor:pointer;font-weight:650;padding:1rem;min-height:44px;background:var(--surface,var(--panel,var(--paper,transparent)))}
|
|
418
|
+
.post-changes summary:focus-visible{outline:3px solid var(--accent);outline-offset:-3px}
|
|
419
|
+
.post-changes-list{display:grid;gap:1rem;padding:1rem}
|
|
420
|
+
.post-change-passage{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:1rem}
|
|
421
|
+
.post-change-side{min-width:0;padding:1rem;border:1px solid var(--line);border-radius:10px;background:var(--surface,var(--panel,var(--paper,transparent)))}
|
|
422
|
+
.post-change-after{border-inline-start:4px solid var(--accent);background:color-mix(in srgb,var(--accent) 7%,transparent)}
|
|
423
|
+
.post-change-label{font-weight:650;margin:0 0 .75rem;font-size:.9rem;color:var(--muted,var(--ink))}
|
|
424
|
+
.post-change-content{overflow-wrap:anywhere;font-size:.95rem;line-height:1.7}
|
|
425
|
+
.post-change-content>:first-child{margin-top:0}.post-change-content>:last-child{margin-bottom:0}
|
|
426
|
+
.post-change-heading{font-weight:650;font-size:1.1rem;margin:.5rem 0}
|
|
427
|
+
.post-change-content img{max-width:100%;height:auto}.post-change-content pre{overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere}
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
/* Folio: a reading spread, with Lumen's shared component geometry. */
|
|
431
|
+
:root{--serif:var(--edgepress-font-serif)}
|
|
432
|
+
@media(prefers-color-scheme:dark){:root{--button-bg:#e6dec1;--button-hover:#f5eacd;--accent:#e6dec1;--accent-hover:#fff1c9;--accent-soft:#34342b}}
|
|
433
|
+
.site-header{position:relative;background:var(--canvas);backdrop-filter:none;-webkit-backdrop-filter:none}
|
|
434
|
+
.header-inner{grid-template-columns:auto minmax(0,1fr) auto auto;gap:28px;width:min(calc(100% - 96px),var(--content-width));min-height:76px}
|
|
435
|
+
.brand{font-family:var(--serif);font-size:2.6rem;font-weight:600;letter-spacing:-.05em;line-height:1.2}
|
|
436
|
+
.brand-description{min-width:0;max-width:54ch;margin:0;white-space:normal;color:var(--muted);font-size:.9rem;line-height:1.6;text-wrap:pretty;overflow-wrap:anywhere}
|
|
437
|
+
.primary-navigation{justify-content:flex-end;gap:28px}
|
|
438
|
+
.primary-navigation a{position:relative;color:var(--ink);font-size:.88rem;font-weight:400;padding-block:15px}
|
|
439
|
+
.primary-navigation .navigation-icon{display:none!important}
|
|
440
|
+
.primary-navigation a[aria-current="page"]::after{content:"";position:absolute;bottom:-16px;left:0;right:0;height:2px;background:var(--ink)}
|
|
441
|
+
.locale-nav{padding-left:28px;border-left:1px solid var(--line)}
|
|
442
|
+
.locale-nav select{border:0;border-radius:0;background:transparent;font-size:.87rem}
|
|
443
|
+
.site-main{width:min(calc(100% - 96px),var(--content-width));padding-top:42px}
|
|
444
|
+
.page-builder{gap:44px}
|
|
445
|
+
h1,h2,h3,.display-text--serif{font-family:var(--serif);font-weight:700;font-synthesis:weight}
|
|
446
|
+
.hero-block{display:block;padding:16px 0 32px;border:0;border-radius:0;background:transparent;box-shadow:none}
|
|
447
|
+
.hero-main{max-width:920px}
|
|
448
|
+
.hero-block h1,.hero-block h2,html[lang^="zh"] .hero-block h1{max-width:20ch;margin:0 0 22px;font-size:clamp(2.5rem,4.3vw,4.1rem);font-weight:700;line-height:1.17;letter-spacing:-.03em;text-wrap:pretty}
|
|
449
|
+
.hero-block .eyebrow{margin-bottom:14px;font-size:.88rem;font-weight:500;letter-spacing:.04em;color:var(--ink)}
|
|
450
|
+
.hero-copy{max-width:52ch;margin-bottom:28px;font-size:1.13rem;line-height:1.7}
|
|
451
|
+
.hero-main>p:last-child{margin-bottom:0}
|
|
452
|
+
.button{border-radius:0;font-weight:500}
|
|
453
|
+
.hero-main:has(.button)::after{content:"";display:block;width:40px;border-top:1px solid var(--ink);margin-top:24px}
|
|
454
|
+
.hero-block--split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:48px}
|
|
455
|
+
.hero-block--banner,.hero-block--banner:not(.hero-block--split){display:grid;grid-template-columns:minmax(0,.75fr) minmax(0,1fr);align-items:center;gap:clamp(28px,5vw,64px);padding:0;background:transparent;overflow:visible}
|
|
456
|
+
.hero-block--banner .hero-main{padding:0;text-align:left}
|
|
457
|
+
.hero-block--banner h1,.hero-block--banner .hero-copy{margin-inline:0}
|
|
458
|
+
.hero-banner,.hero-banner-picture{display:block;width:100%;height:auto;max-height:none;margin:0;min-width:0;object-fit:contain}
|
|
459
|
+
.hero-block--banner .hero-aside{grid-column:1/-1;grid-row:2}
|
|
460
|
+
.latest-posts>h2,.feature-section>h2{font-size:1.6rem;margin-bottom:24px}
|
|
461
|
+
.post-list,.latest-posts .post-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:32px}
|
|
462
|
+
.post-card,.latest-posts .post-list .post-card:first-child{grid-column:auto;padding:22px 0 0;border:0;border-top:1px solid var(--line);border-radius:0;background:transparent;box-shadow:none}
|
|
463
|
+
.post-card h2,.post-card h3,.latest-posts .post-card:first-child h3{max-width:30ch;font-size:1.5rem;line-height:1.4;letter-spacing:-.01em}
|
|
464
|
+
.post-list:has(>.post-card:only-child){max-width:900px}
|
|
465
|
+
.meta{font-size:.85rem;line-height:1.65}
|
|
466
|
+
.post-excerpt{max-width:66ch;font-size:1rem;line-height:1.7}
|
|
467
|
+
.post{max-width:880px}
|
|
468
|
+
.post>header h1{font-size:clamp(2.15rem,4.1vw,3.65rem);line-height:1.3}
|
|
469
|
+
.post-content{max-width:70ch;font-size:1.1rem;line-height:1.95}
|
|
470
|
+
.post-content h2{font-size:1.9rem}.post-content h3{font-size:1.45rem;line-height:1.5}
|
|
471
|
+
.post-content img,.post-content video,.image-block img,.media-text-block img,.media-text-block video{height:auto;max-height:none;object-fit:contain;border-radius:0}
|
|
472
|
+
.image-block figcaption,.media-text-block figcaption,.markdown-video figcaption{font-size:.9rem;line-height:1.65}
|
|
473
|
+
.hero-mascot,.hero-mascot-picture{max-height:none}
|
|
474
|
+
.image-block,.code-widget{margin:0;min-width:0}
|
|
475
|
+
.page-section,.cta-block,.quote-block,.error-page,.local-search-page,.notice-widget,.privacy-controller-details>div{border-radius:0;box-shadow:none}
|
|
476
|
+
.page-section--soft,.cta-block,.quote-block{background:var(--surface-soft)}
|
|
477
|
+
.error-page{border:0}.local-search-page{border:0;background:transparent;padding-inline:0}
|
|
478
|
+
.footer-inner{width:min(calc(100% - 96px),var(--content-width))}.site-footer{background:transparent}
|
|
479
|
+
.post-toc-toggle,.post-toc-close,.privacy-manager .privacy-settings-button,.privacy-manager .privacy-panel button{border-radius:3px}
|
|
480
|
+
.privacy-manager .privacy-panel,.post-toc-panel{border-radius:6px}
|
|
481
|
+
.button,.cta-block .button,.local-search-controls button,.pagination-current,.privacy-manager .privacy-panel .privacy-accept,.privacy-manager .privacy-panel .privacy-reject{color:var(--canvas)}
|
|
482
|
+
@media(max-width:1100px){.header-inner{grid-template-columns:auto minmax(0,1fr) auto}.brand-description{grid-column:1/-1;grid-row:2;max-width:none;padding-bottom:12px}.primary-navigation{grid-column:2;grid-row:1;justify-content:flex-end}.locale-nav{grid-column:3;grid-row:1}}
|
|
483
|
+
@media(max-width:880px){.header-inner{grid-template-columns:minmax(0,1fr) auto;gap:0 20px;padding-block:12px}.primary-navigation{grid-column:1/-1;grid-row:2;justify-content:flex-start}.locale-nav{grid-column:2;grid-row:1;padding-left:12px}.brand-description{grid-row:3;padding-bottom:0}.primary-navigation a[aria-current="page"]::after{bottom:0}.hero-block--banner,.hero-block--banner:not(.hero-block--split),.hero-block--split{grid-template-columns:minmax(0,1fr)}.hero-block--banner .hero-main{max-width:700px}.hero-block--banner .hero-aside{grid-row:auto}}
|
|
484
|
+
@media(max-width:620px){.header-inner,.site-main,.footer-inner{width:calc(100% - 40px)}.header-inner{padding-top:14px}.brand{font-size:2.25rem}.site-main{padding-top:28px}.primary-navigation{gap:26px}.primary-navigation a{padding-block:12px}.locale-nav select{max-width:120px;padding-left:0}.hero-block{padding:0 0 8px}.hero-block h1,html[lang^="zh"] .hero-block h1{font-size:clamp(2.15rem,9vw,3rem);line-height:1.3}.hero-copy{font-size:1rem}.hero-block--banner{gap:26px}.page-builder{gap:36px}.post-list,.latest-posts .post-list{grid-template-columns:minmax(0,1fr);gap:26px}.post-content{font-size:1.04rem}.post-content h2{font-size:1.5rem}.post-content h3{font-size:1.3rem}}
|
|
485
|
+
|
|
486
|
+
.post-content a{text-decoration:underline;text-underline-offset:.18em}.post-byline time{font-variant-numeric:tabular-nums}
|
|
487
|
+
@media(max-width:600px){.post-byline>time,.post-byline .post-updated{flex-basis:100%;min-width:0}.post-byline time[data-date-only="false"],.post-updated{min-block-size:3.2em;line-height:1.6}}
|
|
488
|
+
|
|
489
|
+
/* Embed consent, status and controls inherit the surrounding website palette. */
|
|
490
|
+
.edgepress-oembed{width:100%;min-width:0;margin:1.5rem 0;padding:clamp(14px,3vw,24px);border:1px solid var(--line);border-radius:16px;background:var(--surface,var(--panel,var(--paper,transparent)));color:var(--ink);overflow-wrap:anywhere}
|
|
491
|
+
.edgepress-oembed>figcaption{font:inherit;font-weight:650;margin:0 0 .75rem}
|
|
492
|
+
.edgepress-oembed [data-oembed-notice]{color:var(--muted,var(--ink));font-size:.9rem;line-height:1.6;margin:.5rem 0 1rem}
|
|
493
|
+
.edgepress-oembed [data-oembed-load]{appearance:none;font:inherit;font-weight:650;min-height:44px;padding:10px 18px;margin:0 12px 12px 0;border:1px solid var(--accent);border-radius:10px;background:var(--accent);color:var(--paper);cursor:pointer;transition:filter .15s,transform .15s}
|
|
494
|
+
.edgepress-oembed [data-oembed-load]:hover{filter:brightness(1.1);transform:translateY(-1px)}
|
|
495
|
+
.edgepress-oembed [data-oembed-load]:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
|
|
496
|
+
.edgepress-oembed[aria-busy=true] [data-oembed-load]{pointer-events:none;opacity:.6}
|
|
497
|
+
.edgepress-oembed>a{display:inline-flex;align-items:center;min-height:44px;color:var(--accent);font-size:.9rem}
|
|
498
|
+
.edgepress-oembed [data-oembed-status],.oembed-content{min-width:0;max-width:100%}
|
|
499
|
+
.edgepress-oembed [data-oembed-status]{min-height:clamp(160px,calc((100vw - 48px)*.75),480px);position:relative}
|
|
500
|
+
.edgepress-oembed .oembed-placeholder{aspect-ratio:var(--oembed-ratio,4/3);min-height:160px;border-radius:10px;background:linear-gradient(110deg,color-mix(in srgb,var(--surface,var(--paper,#fff)) 78%,var(--accent) 22%),color-mix(in srgb,var(--surface,var(--paper,#fff)) 92%,var(--accent) 8%),color-mix(in srgb,var(--surface,var(--paper,#fff)) 78%,var(--accent) 22%));background-size:200% 100%}
|
|
501
|
+
.edgepress-oembed.is-loading .oembed-placeholder{animation:edgepress-oembed-shimmer 1.4s linear infinite}
|
|
502
|
+
.edgepress-oembed[data-loaded=true] [data-oembed-status]{min-height:0}.edgepress-oembed[data-loaded=true] .oembed-placeholder{display:none}
|
|
503
|
+
@keyframes edgepress-oembed-shimmer{to{background-position:-200% 0}}
|
|
504
|
+
.edgepress-oembed iframe,.edgepress-oembed img,.edgepress-oembed blockquote{max-width:100%;margin-inline:auto;border-radius:10px}
|
|
505
|
+
.edgepress-oembed[data-loaded=true]>[data-oembed-notice]{margin-bottom:.25rem}
|
|
506
|
+
.oembed-caption{white-space:pre-wrap}
|
|
507
|
+
.post-change-content img{display:block;width:100%;height:auto;max-height:420px;object-fit:contain;background:var(--surface,var(--panel,var(--paper,transparent)));border-radius:8px}
|
|
508
|
+
@media(prefers-reduced-motion:reduce){.edgepress-oembed [data-oembed-load]{transition:none}}
|
|
509
|
+
@media(prefers-reduced-motion:reduce){.edgepress-oembed.is-loading .oembed-placeholder{animation:none}}
|
|
510
|
+
|
|
511
|
+
.project-demo{position:relative;min-width:0}.project-demo img{display:block;width:100%;height:auto;border-radius:12px}.project-demo-media{position:relative}.project-demo-media video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;border-radius:12px}.project-demo-media.is-ready img{visibility:hidden}.project-demo [hidden]{display:none!important}.project-demo button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;margin-top:12px;padding:10px 18px;border:1px solid var(--accent);border-radius:999px;background:var(--surface,var(--panel,var(--paper,transparent)));color:var(--ink);font:inherit;font-weight:650;cursor:pointer}.project-demo button:focus-visible{outline:3px solid var(--accent);outline-offset:4px}.project-demo button:disabled{cursor:wait;opacity:.7}.project-demo-status{display:block;min-height:1.4em;color:var(--ink);font-size:.9rem;margin-top:6px}
|
|
512
|
+
|
|
513
|
+
.table-widget:focus-visible{outline:3px solid var(--accent);outline-offset:4px}
|
|
514
|
+
|
|
515
|
+
.project-demo-seek{display:block;width:100%;min-height:44px;margin:4px 0;accent-color:var(--accent);cursor:pointer}.project-demo-seek:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.project-demo-time{display:block;font-variant-numeric:tabular-nums;color:var(--ink);line-height:1.5}.project-demo-seek:disabled{cursor:wait;opacity:.5}
|
|
516
|
+
.edgepress-oembed:not([data-loaded=true]) [data-oembed-status]{min-height:0}.edgepress-oembed:not(.is-loading) .oembed-placeholder{display:none}.edgepress-oembed.is-loading .oembed-placeholder{height:3rem;min-height:0;aspect-ratio:auto}.edgepress-oembed [data-oembed-load]:disabled{cursor:wait;opacity:.6}.edgepress-oembed>figcaption a:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<html lang="{{site.language}}">
|
|
2
|
+
<head>
|
|
3
|
+
{{> head}}
|
|
4
|
+
</head>
|
|
5
|
+
<body class="theme-folio">
|
|
6
|
+
<a class="skip-link" href="#main">{{site.skipToContent}}</a>
|
|
7
|
+
<div class="site-shell">
|
|
8
|
+
{{> header}}
|
|
9
|
+
<main id="main" class="site-main">{{{page.content}}}</main>
|
|
10
|
+
{{> footer}}
|
|
11
|
+
</div>
|
|
12
|
+
<script defer src="/edgepress/language-select.js"></script>
|
|
13
|
+
<script defer src="/folio/navigation.js"></script>
|
|
14
|
+
</body>
|
|
15
|
+
</html>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<footer class="site-footer {{site.footerClass}}">
|
|
2
|
+
<div class="footer-inner">
|
|
3
|
+
<p class="footer-copy {{site.footerCopyClass}}">{{site.footer}}</p>
|
|
4
|
+
<nav class="footer-navigation {{site.footerNavigationClass}}" aria-label="{{site.footerNavigationLabel}}">{{{site.footerNavigationHtml}}}</nav>
|
|
5
|
+
</div>
|
|
6
|
+
</footer>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<meta charset="utf-8">
|
|
2
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
3
|
+
<meta name="description" content="{{page.description}}">
|
|
4
|
+
<meta name="robots" content="{{page.robots}}">
|
|
5
|
+
<meta name="keywords" content="{{page.keywords}}">
|
|
6
|
+
<meta name="author" content="{{site.seo.author}}">
|
|
7
|
+
<meta name="theme-color" content="#faf9f6" media="(prefers-color-scheme: light)">
|
|
8
|
+
<meta name="theme-color" content="#171715" media="(prefers-color-scheme: dark)">
|
|
9
|
+
<title>{{page.title}}</title>
|
|
10
|
+
<link rel="icon" href="/edgepress/favicon/favicon.ico" sizes="any">
|
|
11
|
+
<link rel="icon" type="image/png" sizes="16x16" href="/edgepress/favicon/favicon-16.png">
|
|
12
|
+
<link rel="icon" type="image/png" sizes="32x32" href="/edgepress/favicon/favicon-32.png">
|
|
13
|
+
<link rel="icon" type="image/png" sizes="48x48" href="/edgepress/favicon/favicon-48.png">
|
|
14
|
+
<link rel="icon" type="image/png" sizes="64x64" href="/edgepress/favicon/favicon-64.png">
|
|
15
|
+
<link rel="apple-touch-icon" sizes="180x180" href="/edgepress/favicon/apple-touch-icon.png">
|
|
16
|
+
<link rel="canonical" href="{{page.canonical}}">
|
|
17
|
+
<meta property="og:type" content="website">
|
|
18
|
+
<meta property="og:title" content="{{page.title}}">
|
|
19
|
+
<meta property="og:description" content="{{page.description}}">
|
|
20
|
+
<meta property="og:url" content="{{page.canonical}}">
|
|
21
|
+
<meta property="og:image" content="{{page.image}}">
|
|
22
|
+
<meta property="og:image:alt" content="{{site.headerBrand}}">
|
|
23
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
24
|
+
<meta name="twitter:title" content="{{page.title}}">
|
|
25
|
+
<meta name="twitter:description" content="{{page.description}}">
|
|
26
|
+
<meta name="twitter:image" content="{{page.image}}">
|
|
27
|
+
<meta name="twitter:image:alt" content="{{site.headerBrand}}">
|
|
28
|
+
<link rel="alternate" type="application/atom+xml" href="{{site.feedPath}}" title="{{site.feedLabel}}">
|
|
29
|
+
<link rel="stylesheet" href="{{site.stylesheet}}">
|
|
30
|
+
<script type="application/ld+json">{{{page.jsonLd}}}</script>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<header class="site-header {{site.headerClass}}">
|
|
2
|
+
<div class="header-inner">
|
|
3
|
+
<a class="brand {{site.brandClass}}" href="{{site.homePath}}">{{site.headerBrand}}</a>
|
|
4
|
+
<p class="brand-description">{{site.description}}</p>
|
|
5
|
+
<nav class="primary-navigation {{site.primaryNavigationClass}}" aria-label="{{site.mainNavigationLabel}}">{{{site.primaryNavigationHtml}}}</nav>
|
|
6
|
+
<div class="locale-nav {{site.languageNavigationClass}}" role="group" aria-label="{{site.languageLabel}}">{{{site.localeLinksHtml}}}</div>
|
|
7
|
+
</div>
|
|
8
|
+
</header>
|