@acms-subir/core 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +78 -0
- package/cli/common.mjs +35 -0
- package/cli/legacy.mjs +317 -0
- package/cli/main.mjs +66 -0
- package/cli/palette.mjs +4 -0
- package/cli/preview.mjs +50 -0
- package/cli/remote.mjs +55 -0
- package/cli/themes.mjs +127 -0
- package/cli.mjs +2 -369
- package/deploy/Caddyfile +8 -0
- package/deploy/Dockerfile +34 -0
- package/deploy/compose.https.yml +21 -0
- package/deploy/compose.yml +46 -0
- package/docs/theme-authoring.md +103 -0
- package/email-runner.mjs +32 -0
- package/integration.mjs +182 -2
- package/ops-check.mjs +27 -0
- package/package.json +27 -5
- package/src/actions/index.ts +575 -47
- package/src/components/AiCleaner.tsx +291 -0
- package/src/components/AiSettings.tsx +575 -0
- package/src/components/CommandPalette.tsx +200 -0
- package/src/components/ContentList.astro +246 -0
- package/src/components/DesignAccess.tsx +182 -0
- package/src/components/DesignManager.tsx +418 -46
- package/src/components/EmailSettings.tsx +521 -0
- package/src/components/EventPage.astro +178 -0
- package/src/components/LegalPage.astro +27 -0
- package/src/components/LinksManager.tsx +114 -57
- package/src/components/NavManager.tsx +42 -43
- package/src/components/ThemeScript.astro +50 -0
- package/src/components/ThemeSections.astro +57 -0
- package/src/components/ThemeSectionsEditor.tsx +513 -0
- package/src/components/booking/BookingFlow.astro +150 -0
- package/src/components/booking/HoursEditor.astro +63 -0
- package/src/components/builder/PageBuilder.tsx +10 -2
- package/src/components/editor/EventPanel.tsx +401 -0
- package/src/components/editor/FormatDock.tsx +81 -0
- package/src/components/editor/LivePane.tsx +122 -0
- package/src/components/editor/MobileToolbar.tsx +93 -0
- package/src/components/editor/PostEditor.tsx +605 -223
- package/src/components/editor/PreviewOverlay.tsx +242 -43
- package/src/components/editor/extensions/calendar.tsx +51 -7
- package/src/components/editor/extensions/events.tsx +153 -0
- package/src/components/editor/extensions/slash.tsx +7 -1
- package/src/components/site/Pager.astro +24 -0
- package/src/components/site/PostCard.astro +64 -0
- package/src/components/site/TagLabel.astro +11 -0
- package/src/layouts/Admin.astro +289 -49
- package/src/layouts/Site.astro +324 -59
- package/src/lib/agent-api.ts +13 -0
- package/src/lib/agent-discovery.ts +40 -0
- package/src/lib/agent.ts +114 -0
- package/src/lib/ai-config.ts +58 -0
- package/src/lib/ai-schema.ts +22 -0
- package/src/lib/ai.ts +90 -0
- package/src/lib/api-keys.ts +65 -0
- package/src/lib/api.ts +52 -0
- package/src/lib/auth.ts +25 -5
- package/src/lib/backup/content.ts +36 -0
- package/src/lib/backup/unzip.ts +12 -1
- package/src/lib/backup/zip.ts +1 -1
- package/src/lib/booking/agent.ts +108 -0
- package/src/lib/booking/availability.ts +221 -0
- package/src/lib/booking/emails.ts +115 -0
- package/src/lib/booking/forms.ts +77 -0
- package/src/lib/booking/service.ts +277 -0
- package/src/lib/booking/view.ts +54 -0
- package/src/lib/calendar/agent-schema.ts +48 -0
- package/src/lib/calendar/agent.ts +136 -0
- package/src/lib/calendar/api.ts +81 -0
- package/src/lib/calendar/cards.ts +102 -0
- package/src/lib/calendar/config.ts +52 -0
- package/src/lib/calendar/data.ts +130 -0
- package/src/lib/calendar/events.ts +261 -0
- package/src/lib/calendar/feeds.ts +43 -0
- package/src/lib/calendar/hooks.ts +38 -0
- package/src/lib/calendar/http.ts +30 -0
- package/src/lib/calendar/ics-write.ts +120 -0
- package/src/lib/calendar/ics.ts +15 -5
- package/src/lib/calendar/import.ts +203 -0
- package/src/lib/calendar/render.ts +120 -37
- package/src/lib/calendar/rrule.ts +149 -0
- package/src/lib/calendar/seo.ts +48 -0
- package/src/lib/design-service.ts +58 -0
- package/src/lib/designDiff.ts +145 -0
- package/src/lib/designPreview.ts +110 -12
- package/src/lib/documents/cleanup.ts +31 -0
- package/src/lib/documents/extract.ts +154 -0
- package/src/lib/documents/vendor.d.ts +4 -0
- package/src/lib/drafts.ts +60 -6
- package/src/lib/dynamicBlocks.ts +40 -8
- package/src/lib/email/accounts.ts +55 -0
- package/src/lib/email/config.ts +86 -0
- package/src/lib/email/migration.ts +24 -0
- package/src/lib/email/providers.ts +89 -0
- package/src/lib/email/service.ts +78 -0
- package/src/lib/email/store.ts +167 -0
- package/src/lib/email/templates.ts +18 -0
- package/src/lib/email/types.ts +32 -0
- package/src/lib/email/webhooks.ts +87 -0
- package/src/lib/email.ts +15 -0
- package/src/lib/env.ts +1 -1
- package/src/lib/legal/index.ts +25 -0
- package/src/lib/mobile/bookings.ts +73 -0
- package/src/lib/mobile/calendar.ts +85 -0
- package/src/lib/mobile/content.ts +85 -0
- package/src/lib/mobile/http.ts +63 -0
- package/src/lib/mobile/route.ts +20 -0
- package/src/lib/ops.ts +8 -0
- package/src/lib/preview.ts +21 -1
- package/src/lib/repo/migrations.ts +217 -0
- package/src/lib/repo/sql.ts +853 -60
- package/src/lib/repo/types.ts +122 -5
- package/src/lib/scheduler.ts +25 -0
- package/src/lib/schema.ts +309 -0
- package/src/lib/search-i18n.ts +3 -0
- package/src/lib/socialIcons.ts +32 -0
- package/src/lib/tagColor.ts +11 -0
- package/src/lib/theme.ts +59 -40
- package/src/lib/themeTokens.ts +174 -0
- package/src/lib/umami.ts +108 -0
- package/src/lib/webhooks.ts +139 -0
- package/src/middleware.ts +36 -3
- package/src/pages/404.astro +23 -0
- package/src/pages/[...slug].astro +8 -5
- package/src/pages/account/[action].astro +53 -0
- package/src/pages/admin/ai.astro +12 -0
- package/src/pages/admin/c/[collection]/[id].astro +4 -1
- package/src/pages/admin/c/[collection]/index.astro +127 -92
- package/src/pages/admin/calendar/bookings.astro +400 -0
- package/src/pages/admin/calendar/calendars.astro +265 -0
- package/src/pages/admin/calendar/events/[id].astro +56 -0
- package/src/pages/admin/calendar/events/index.astro +408 -0
- package/src/pages/admin/calendar/index.ts +4 -0
- package/src/pages/admin/calendar/integrations.astro +221 -0
- package/src/pages/admin/calendar/resources/[id].astro +180 -0
- package/src/pages/admin/calendar/resources/index.astro +106 -0
- package/src/pages/admin/calendar/resources/link.astro +196 -0
- package/src/pages/admin/design.astro +10 -3
- package/src/pages/admin/email.astro +13 -0
- package/src/pages/admin/index.astro +232 -85
- package/src/pages/admin/links.astro +3 -3
- package/src/pages/admin/login.astro +14 -10
- package/src/pages/admin/navigation.astro +8 -2
- package/src/pages/admin/pages/[id].astro +4 -1
- package/src/pages/admin/pages/index.astro +41 -48
- package/src/pages/admin/settings.astro +418 -367
- package/src/pages/admin/tags.astro +4 -4
- package/src/pages/admin/users.astro +38 -28
- package/src/pages/api/agent/docs.ts +33 -0
- package/src/pages/api/agent/index.ts +21 -0
- package/src/pages/api/ai/clean.ts +13 -0
- package/src/pages/api/ai/draft.ts +14 -0
- package/src/pages/api/ai/settings.ts +53 -0
- package/src/pages/api/ai/test.ts +12 -0
- package/src/pages/api/backup.ts +8 -21
- package/src/pages/api/calendar/availability.ts +35 -0
- package/src/pages/api/calendar/bookings/[id].ts +49 -0
- package/src/pages/api/calendar/bookings/index.ts +73 -0
- package/src/pages/api/calendar/calendars.ts +35 -0
- package/src/pages/api/calendar/docs.ts +64 -0
- package/src/pages/api/calendar/events/[id].ts +63 -0
- package/src/pages/api/calendar/events/index.ts +112 -0
- package/src/pages/api/calendar/resources.ts +34 -0
- package/src/pages/api/design/capabilities.ts +10 -0
- package/src/pages/api/design/index.ts +58 -0
- package/src/pages/api/design/keys.ts +24 -0
- package/src/pages/api/design/media.ts +32 -0
- package/src/pages/api/email/run.ts +11 -0
- package/src/pages/api/email/settings.ts +61 -0
- package/src/pages/api/email/webhooks/[provider].ts +4 -0
- package/src/pages/api/mcp.ts +59 -0
- package/src/pages/api/media/upload.ts +2 -2
- package/src/pages/api/ops/status.ts +39 -0
- package/src/pages/api/restore.ts +27 -37
- package/src/pages/api/search.ts +18 -4
- package/src/pages/api/v1/availability.ts +7 -0
- package/src/pages/api/v1/bookings.ts +17 -0
- package/src/pages/api/v1/calendars.ts +7 -0
- package/src/pages/api/v1/content/[id].ts +7 -0
- package/src/pages/api/v1/content/index.ts +7 -0
- package/src/pages/api/v1/events.ts +7 -0
- package/src/pages/api/v1/resources.ts +7 -0
- package/src/pages/author/[slug].astro +43 -35
- package/src/pages/blog/[slug].astro +137 -66
- package/src/pages/blog/index.astro +95 -30
- package/src/pages/blog/tag/[slug].astro +45 -40
- package/src/pages/book/[resource]/[link].astro +70 -0
- package/src/pages/book/[resource]/index.astro +63 -0
- package/src/pages/book/[resource].ics.ts +38 -0
- package/src/pages/book/index.astro +47 -0
- package/src/pages/book/manage/[token].astro +108 -0
- package/src/pages/calendar/[slug].ics.ts +27 -0
- package/src/pages/calendar/feed.ics.ts +15 -0
- package/src/pages/calendar/index.astro +191 -0
- package/src/pages/embed/book/[resource]/[link].astro +33 -0
- package/src/pages/embed/calendar/[slug].astro +43 -0
- package/src/pages/events/[slug].astro +74 -0
- package/src/pages/events/[slug].ics.ts +25 -0
- package/src/pages/index.astro +6 -3
- package/src/pages/legal/privacy.astro +4 -0
- package/src/pages/legal/terms.astro +4 -0
- package/src/pages/links.astro +23 -3
- package/src/pages/llms.txt.ts +4 -0
- package/src/pages/preview/[type]/[id].astro +27 -6
- package/src/pages/search.astro +40 -20
- package/src/pages/sitemap.xml.ts +16 -1
- package/src/styles/admin.css +924 -105
- package/src/styles/cards.css +92 -74
- package/src/styles/editor.css +492 -114
- package/src/styles/email-settings.css +117 -0
- package/src/styles/sections.css +12 -0
- package/src/styles/site.css +938 -281
- package/src/styles/theme-editor.css +135 -0
- package/src/theme-sdk/contract.d.mts +619 -0
- package/src/theme-sdk/contract.mjs +80 -0
- package/src/theme-sdk/index.ts +15 -0
- package/src/theme-sdk/tokens.d.mts +148 -0
- package/src/theme-sdk/tokens.mjs +52 -0
- package/src/themes/editorial/templates/home.astro +4 -4
- package/src/themes/editorial/templates/post-minimal.astro +2 -2
- package/src/themes/editorial/theme.css +22 -37
- package/src/themes/editorial/theme.json +23 -3
- package/src/themes/field/theme.json +26 -9
- package/src/themes/ink/theme.json +30 -12
- package/src/themes/night/theme.css +4 -7
- package/src/themes/night/theme.json +27 -10
- package/src/virtual.d.ts +14 -0
- package/src/worker.ts +5 -1
package/src/styles/editor.css
CHANGED
|
@@ -1,16 +1,23 @@
|
|
|
1
|
-
/* Post editor — full-screen Ghost-style writing surface on the
|
|
1
|
+
/* Post editor — full-screen Ghost-style writing surface on the Inset Paper
|
|
2
2
|
tokens. Relies on :root variables from admin.css. */
|
|
3
3
|
|
|
4
4
|
.pe-shell { height: 100vh; background: var(--bg); display: flex; flex-direction: column; }
|
|
5
5
|
|
|
6
|
-
/* top bar */
|
|
6
|
+
/* top bar: back + status | Write/Split/Preview | publish + settings */
|
|
7
7
|
.pe-topbar {
|
|
8
|
-
display:
|
|
9
|
-
padding:
|
|
10
|
-
position: sticky; top: 0; background:
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
.pe-
|
|
8
|
+
display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 12px;
|
|
9
|
+
height: 52px; padding: 0 14px; flex: 0 0 auto;
|
|
10
|
+
position: sticky; top: 0; background: var(--bg); z-index: 30;
|
|
11
|
+
transition: background-color 0.2s;
|
|
12
|
+
}
|
|
13
|
+
.pe-topbar-left, .pe-topbar-right { display: flex; align-items: center; gap: 8px; min-width: 0; }
|
|
14
|
+
.pe-topbar-right { justify-content: flex-end; }
|
|
15
|
+
.pe-savestate { display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; color: var(--faint); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
16
|
+
.pe-save-dot { flex: 0 0 auto; width: 7px; height: 7px; border-radius: 50%; background: var(--green); transition: background-color 0.2s; }
|
|
17
|
+
.pe-savestate.dirty .pe-save-dot, .pe-savestate.saving .pe-save-dot { background: var(--amber); }
|
|
18
|
+
.pe-savestate.error .pe-save-dot { background: var(--red); }
|
|
19
|
+
.pe-modes button { padding: 4px 11px; }
|
|
20
|
+
.pe-icon-btn { padding: 5px 7px; }
|
|
14
21
|
.pe-edited-dot { font-style: normal; font-weight: 600; color: var(--amber); }
|
|
15
22
|
.pe-savestate.dirty { color: var(--muted); }
|
|
16
23
|
.pe-savestate.saving { color: var(--muted); }
|
|
@@ -22,38 +29,41 @@
|
|
|
22
29
|
background: var(--panel); color: var(--text);
|
|
23
30
|
border: 1px solid var(--line-strong); border-radius: var(--r-md);
|
|
24
31
|
padding: 6px 13px; font-size: 13px; font-weight: 600;
|
|
25
|
-
cursor: pointer; font-family: inherit; text-decoration: none;
|
|
32
|
+
cursor: pointer; font-family: inherit; text-decoration: none; white-space: nowrap;
|
|
26
33
|
box-shadow: var(--shadow-sm);
|
|
27
34
|
}
|
|
28
35
|
.pe-btn:hover { border-color: var(--faint); }
|
|
29
|
-
.pe-btn.primary { background: var(--accent); border-color: var(--accent); color:
|
|
36
|
+
.pe-btn.primary { background: var(--accent); border-color: var(--accent); color: var(--on-accent); }
|
|
30
37
|
.pe-btn.primary:hover { background: var(--accent-strong); border-color: var(--accent-strong); }
|
|
31
38
|
.pe-btn.primary:disabled { opacity: 0.5; cursor: default; }
|
|
32
39
|
.pe-btn.sm { padding: 3px 10px; font-size: 12.5px; }
|
|
33
40
|
.pe-btn.ghost { background: transparent; border-color: transparent; color: var(--muted); box-shadow: none; }
|
|
34
|
-
.pe-btn.ghost:hover, .pe-btn.ghost.is-active { color: var(--text); background:
|
|
41
|
+
.pe-btn.ghost:hover, .pe-btn.ghost.is-active { color: var(--text); background: var(--hover); }
|
|
35
42
|
.pe-btn.danger { color: var(--red); }
|
|
36
43
|
|
|
37
|
-
/* layout
|
|
38
|
-
|
|
44
|
+
/* layout — Write: one full paper page. Split (≥901px): the editor and the
|
|
45
|
+
live site sit on two rounded sheets inside the stone shell. */
|
|
46
|
+
.pe-body { flex: 1; display: flex; min-height: 0; transition: background-color 0.2s; }
|
|
47
|
+
.pe-editor-pane { flex: 1; min-width: 0; display: flex; flex-direction: column; position: relative; background: var(--bg); }
|
|
39
48
|
.pe-main { flex: 1; overflow-y: auto; min-width: 0; }
|
|
40
|
-
.pe-column { max-width:
|
|
41
|
-
.pe-shell.has-sidebar .pe-
|
|
42
|
-
.pe-shell.has-split.has-sidebar .pe-main { margin-right: 0; }
|
|
49
|
+
.pe-column { max-width: 720px; margin: 0 auto; padding: 48px 24px 140px; position: relative; }
|
|
50
|
+
.pe-shell.has-sidebar .pe-body { margin-right: 320px; }
|
|
43
51
|
|
|
44
|
-
|
|
45
|
-
.pe-splitpane {
|
|
46
|
-
width: min(46vw, 760px); flex: 0 0 auto; display: flex; flex-direction: column;
|
|
47
|
-
border-left: 1px solid var(--line); background: var(--panel-2);
|
|
48
|
-
}
|
|
49
|
-
.pe-shell.has-sidebar .pe-splitpane { margin-right: 320px; }
|
|
52
|
+
.pe-splitpane { flex: 1; min-width: 0; display: flex; flex-direction: column; background: var(--bg); }
|
|
50
53
|
.pe-split-bar {
|
|
51
|
-
display: flex; align-items: center;
|
|
52
|
-
padding:
|
|
54
|
+
display: flex; align-items: center; gap: 8px; height: 42px; flex: 0 0 auto;
|
|
55
|
+
padding: 0 8px 0 14px; border-bottom: 1px solid var(--line);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@media (min-width: 901px) {
|
|
59
|
+
.pe-shell.has-split, .pe-shell.has-split .pe-topbar { background: var(--shell); }
|
|
60
|
+
.pe-shell.has-split .pe-body { gap: 8px; padding: 0 8px 8px; }
|
|
61
|
+
.pe-shell.has-split .pe-editor-pane, .pe-shell.has-split .pe-splitpane {
|
|
62
|
+
border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; box-shadow: var(--shadow-card);
|
|
63
|
+
}
|
|
64
|
+
.pe-shell.has-split .pe-column { max-width: 640px; padding: 40px 40px 140px; }
|
|
65
|
+
.pe-shell.has-split .pe-title { font-size: 34px; }
|
|
53
66
|
}
|
|
54
|
-
.pe-split-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.07em; color: var(--faint); }
|
|
55
|
-
.pe-split-actions { display: flex; gap: 2px; }
|
|
56
|
-
.pe-splitpane iframe { flex: 1; width: 100%; border: 0; background: #fff; }
|
|
57
67
|
|
|
58
68
|
/* checkbox field (page settings) */
|
|
59
69
|
.pe-field.pe-check { display: flex; align-items: center; gap: 8px; cursor: pointer; }
|
|
@@ -62,17 +72,15 @@
|
|
|
62
72
|
.pe-field.pe-check code { background: var(--panel-2); border: 1px solid var(--line); border-radius: 4px; padding: 0 4px; font-size: 11.5px; }
|
|
63
73
|
|
|
64
74
|
/* feature image */
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
.pe-
|
|
73
|
-
.pe-
|
|
74
|
-
.pe-add-feature:hover { border-color: var(--accent); color: var(--accent); }
|
|
75
|
-
.pe-add-feature:hover span { color: var(--text); }
|
|
75
|
+
/* quiet "add" links above the title (feature image, excerpt) */
|
|
76
|
+
.pe-addons { display: flex; gap: 2px; margin: 0 0 10px -9px; opacity: 0.75; transition: opacity 0.15s; }
|
|
77
|
+
.pe-column:hover .pe-addons, .pe-addons:focus-within { opacity: 1; }
|
|
78
|
+
.pe-addons button {
|
|
79
|
+
display: inline-flex; align-items: center; gap: 6px; border: 0; background: none; cursor: pointer;
|
|
80
|
+
font: inherit; font-size: 13px; font-weight: 600; color: var(--faint); padding: 5px 9px; border-radius: var(--r-sm);
|
|
81
|
+
}
|
|
82
|
+
.pe-addons button:hover { background: var(--hover); color: var(--text-2); }
|
|
83
|
+
.pe-addons svg { width: 15px; height: 15px; }
|
|
76
84
|
.pe-feature { position: relative; margin: 0 0 22px; border-radius: var(--r-lg); overflow: hidden; }
|
|
77
85
|
.pe-feature img {
|
|
78
86
|
width: 100%; aspect-ratio: 2 / 1; object-fit: cover; display: block; background: var(--panel-2);
|
|
@@ -91,24 +99,45 @@
|
|
|
91
99
|
.pe-title {
|
|
92
100
|
width: 100%; background: none; border: none; resize: none; outline: none;
|
|
93
101
|
color: var(--text); font-family: inherit; font-weight: 700;
|
|
94
|
-
font-size:
|
|
95
|
-
padding: 0; margin: 0 0
|
|
102
|
+
font-size: 40px; line-height: 1.15; letter-spacing: -0.025em;
|
|
103
|
+
padding: 0; margin: 0 0 10px; overflow: hidden;
|
|
96
104
|
}
|
|
97
105
|
.pe-title::placeholder { color: var(--faint); }
|
|
106
|
+
.pe-excerpt {
|
|
107
|
+
display: block; width: 100%; background: none; border: none; resize: none; outline: none; overflow: hidden;
|
|
108
|
+
color: var(--muted); font-family: inherit; font-size: 19px; line-height: 1.45; padding: 0; margin: 0 0 14px;
|
|
109
|
+
}
|
|
110
|
+
.pe-excerpt::placeholder { color: var(--faint); }
|
|
111
|
+
|
|
112
|
+
/* byline — author, tags, reading time, like the published post header */
|
|
113
|
+
.pe-byline { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 8px; margin: 2px 0 30px; font-size: 13px; color: var(--muted); }
|
|
114
|
+
.pe-byline-author { display: inline-flex; align-items: center; gap: 7px; font-weight: 600; color: var(--text-2); margin-right: 4px; }
|
|
115
|
+
.pe-byline-author i {
|
|
116
|
+
width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; font-style: normal;
|
|
117
|
+
font-size: 11px; font-weight: 700; background: var(--sel); color: var(--muted);
|
|
118
|
+
}
|
|
119
|
+
.pe-byline-tag, .pe-byline-add {
|
|
120
|
+
border: 1px solid var(--line); background: var(--panel-2); color: var(--muted); cursor: pointer;
|
|
121
|
+
font: inherit; font-size: 12px; font-weight: 500; padding: 1px 9px; border-radius: var(--r-full);
|
|
122
|
+
}
|
|
123
|
+
.pe-byline-add { background: none; border-style: dashed; color: var(--faint); }
|
|
124
|
+
.pe-byline-tag:hover, .pe-byline-add:hover { color: var(--text); border-color: var(--line-strong); }
|
|
125
|
+
.pe-byline-meta { color: var(--faint); font-size: 12.5px; }
|
|
126
|
+
.pe-byline-meta::before { content: '·'; margin-right: 8px; }
|
|
98
127
|
|
|
99
128
|
/* prose */
|
|
100
|
-
.pe-prose { outline: none; color: var(--text); font-size:
|
|
129
|
+
.pe-prose { outline: none; color: var(--text); font-size: 17px; line-height: 1.75; min-height: 320px; }
|
|
101
130
|
.pe-prose p { margin: 0 0 0.9em; }
|
|
102
131
|
.pe-prose h1 { font-size: 31px; letter-spacing: -0.02em; margin: 1.3em 0 0.5em; }
|
|
103
132
|
.pe-prose h2 { font-size: 25px; letter-spacing: -0.015em; margin: 1.4em 0 0.5em; }
|
|
104
133
|
.pe-prose h3 { font-size: 19px; letter-spacing: -0.01em; margin: 1.3em 0 0.4em; }
|
|
105
|
-
.pe-prose a { color: var(--accent-deep); text-decoration: underline; text-decoration-color:
|
|
106
|
-
.pe-prose blockquote { border-left: 3px solid var(--
|
|
134
|
+
.pe-prose a { color: var(--accent-deep); text-decoration: underline; text-decoration-color: var(--accent-ring); }
|
|
135
|
+
.pe-prose blockquote { border-left: 3px solid var(--line-strong); margin: 1.2em 0; padding: 2px 0 2px 18px; color: var(--muted); font-style: italic; }
|
|
107
136
|
.pe-prose code { background: var(--panel-2); border: 1px solid var(--line); border-radius: 5px; padding: 1px 5px; font-size: 0.88em; font-family: ui-monospace, 'SF Mono', monospace; }
|
|
108
137
|
.pe-prose pre { background: var(--panel-2); border: 1px solid var(--line); border-radius: var(--r-sm); padding: 14px 16px; overflow-x: auto; margin: 1.2em 0; }
|
|
109
138
|
.pe-prose pre code { background: none; border: none; padding: 0; font-size: 13.5px; }
|
|
110
139
|
.pe-prose hr { border: none; border-top: 1px solid var(--line); margin: 2em auto; width: 120px; }
|
|
111
|
-
.pe-prose mark { background: #fde58a; border-radius: 3px; padding: 0 2px; }
|
|
140
|
+
.pe-prose mark { background: #fde58a; color: #1a1d25; border-radius: 3px; padding: 0 2px; }
|
|
112
141
|
.pe-bubble mark { background: #fde58a; border-radius: 3px; padding: 0 4px; color: #1a1d25; }
|
|
113
142
|
|
|
114
143
|
/* ---- code block (extensions/codeBlock.tsx) ---- */
|
|
@@ -116,7 +145,7 @@
|
|
|
116
145
|
.pe-codeblock pre { margin: 0; }
|
|
117
146
|
.pe-codeblock-lang {
|
|
118
147
|
position: absolute; top: 6px; right: 6px; z-index: 3;
|
|
119
|
-
background:
|
|
148
|
+
background: color-mix(in srgb, var(--panel) 92%, transparent); color: var(--muted); border: 1px solid var(--line);
|
|
120
149
|
border-radius: 6px; font-size: 11px; font-weight: 600; padding: 2px 6px; font-family: inherit;
|
|
121
150
|
opacity: 0; transition: opacity 0.12s; cursor: pointer;
|
|
122
151
|
}
|
|
@@ -156,12 +185,27 @@
|
|
|
156
185
|
content: ''; position: absolute; inset: 0; background: var(--accent-soft); pointer-events: none;
|
|
157
186
|
}
|
|
158
187
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
188
|
+
/* format dock — floats at the bottom of the editor sheet, fades while typing */
|
|
189
|
+
.pe-dock {
|
|
190
|
+
position: absolute; left: 50%; bottom: 16px; transform: translateX(-50%); z-index: 20;
|
|
191
|
+
display: flex; align-items: center; gap: 1px; padding: 4px; white-space: nowrap;
|
|
192
|
+
background: var(--panel); border: 1px solid var(--line-strong); border-radius: var(--r-md);
|
|
193
|
+
box-shadow: var(--shadow-pop); transition: opacity 0.25s, transform 0.25s;
|
|
194
|
+
}
|
|
195
|
+
.pe-dock.is-typing { opacity: 0; transform: translate(-50%, 6px); pointer-events: none; }
|
|
196
|
+
.pe-dock button {
|
|
197
|
+
min-width: 30px; height: 30px; display: grid; place-items: center; padding: 0 6px;
|
|
198
|
+
border: 0; background: none; border-radius: 7px; cursor: pointer; color: var(--muted);
|
|
199
|
+
font: 700 13px Inter, system-ui, sans-serif;
|
|
200
|
+
}
|
|
201
|
+
.pe-dock button:hover { background: var(--hover); color: var(--text); }
|
|
202
|
+
.pe-dock button[aria-pressed='true'] { background: var(--accent-soft); color: var(--accent-deep); }
|
|
203
|
+
.pe-dock svg { width: 16px; height: 16px; }
|
|
204
|
+
.pe-dock i { font-size: 14px; }
|
|
205
|
+
.pe-dock-t { font-size: 12px; letter-spacing: -0.01em; }
|
|
206
|
+
.pe-dock-sep { width: 1px; height: 18px; background: var(--line-strong); margin: 0 4px; }
|
|
207
|
+
.pe-dock-count { font-size: 11.5px; color: var(--faint); padding: 0 6px 0 10px; font-variant-numeric: tabular-nums; }
|
|
208
|
+
.pe-dock .pe-dock-kbd { min-width: 0; height: 22px; font: 500 10.5px ui-monospace, monospace; color: var(--faint); border: 1px solid var(--line); margin-right: 2px; }
|
|
165
209
|
|
|
166
210
|
/* cards (editor chrome around .pc-* public styles) */
|
|
167
211
|
.pe-card { position: relative; margin: 1.2em 0; border-radius: var(--r-md); }
|
|
@@ -173,7 +217,7 @@
|
|
|
173
217
|
}
|
|
174
218
|
.pe-card:hover .pe-card-tools, .pe-card.is-selected .pe-card-tools { opacity: 1; }
|
|
175
219
|
.pe-card-tools button, .pe-card-tools .pe-provider {
|
|
176
|
-
background:
|
|
220
|
+
background: color-mix(in srgb, var(--panel) 92%, transparent); color: var(--muted); border: 1px solid var(--line);
|
|
177
221
|
border-radius: 6px; font-size: 11px; font-weight: 700; padding: 3px 8px; cursor: pointer; font-family: inherit;
|
|
178
222
|
}
|
|
179
223
|
.pe-card-tools button:hover { color: var(--text); }
|
|
@@ -226,17 +270,18 @@
|
|
|
226
270
|
background: none; border: none; color: var(--muted); font-family: inherit; font-size: 12.5px;
|
|
227
271
|
font-weight: 600; padding: 5px 8px; border-radius: 5px; cursor: pointer;
|
|
228
272
|
}
|
|
229
|
-
.pe-bubble button:hover { color: var(--text); background:
|
|
230
|
-
.pe-bubble button.is-active { color: var(--
|
|
273
|
+
.pe-bubble button:hover { color: var(--text); background: var(--hover); }
|
|
274
|
+
.pe-bubble button.is-active { color: var(--text); background: var(--sel); }
|
|
231
275
|
.pe-bubble-sep { width: 1px; height: 16px; background: var(--line); margin: 0 3px; }
|
|
232
276
|
|
|
233
|
-
|
|
234
|
-
.pe-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
.pe-
|
|
277
|
+
/* gutter "+" on empty lines — opens the slash menu */
|
|
278
|
+
.pe-gutter-add {
|
|
279
|
+
width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; cursor: pointer;
|
|
280
|
+
background: var(--bg); border: 1px solid var(--line-strong); color: var(--faint);
|
|
281
|
+
transition: color 0.12s, border-color 0.12s, transform 0.15s;
|
|
282
|
+
}
|
|
283
|
+
.pe-gutter-add:hover { color: var(--text); border-color: var(--faint); transform: rotate(90deg); }
|
|
284
|
+
.pe-gutter-add svg { width: 14px; height: 14px; }
|
|
240
285
|
|
|
241
286
|
/* slash menu */
|
|
242
287
|
.pe-slash {
|
|
@@ -249,7 +294,7 @@
|
|
|
249
294
|
display: flex; align-items: center; gap: 10px; width: 100%; text-align: left;
|
|
250
295
|
background: none; border: none; border-radius: var(--r-md); padding: 7px 10px; cursor: pointer; font-family: inherit;
|
|
251
296
|
}
|
|
252
|
-
.pe-slash-item.is-selected { background: var(--
|
|
297
|
+
.pe-slash-item.is-selected { background: var(--sel); }
|
|
253
298
|
.pe-slash-del {
|
|
254
299
|
margin-left: auto; padding: 2px 7px; border-radius: 6px; color: var(--faint);
|
|
255
300
|
font-size: 11px; opacity: 0; transition: opacity 0.1s ease;
|
|
@@ -258,7 +303,7 @@
|
|
|
258
303
|
.pe-slash-del:hover { color: var(--red); background: var(--red-soft); }
|
|
259
304
|
.pe-slash-icon { width: 30px; height: 30px; flex: 0 0 auto; display: grid; place-items: center; background: var(--panel-2); border: 1px solid var(--line); border-radius: var(--r-sm); color: var(--muted); }
|
|
260
305
|
.pe-slash-icon svg { width: 16px; height: 16px; }
|
|
261
|
-
.pe-slash-item.is-selected .pe-slash-icon { color: var(--
|
|
306
|
+
.pe-slash-item.is-selected .pe-slash-icon { color: var(--text); }
|
|
262
307
|
.pe-slash-title { display: block; font-size: 13px; font-weight: 600; color: var(--text); }
|
|
263
308
|
.pe-slash-desc { display: block; font-size: 11.5px; color: var(--faint); }
|
|
264
309
|
.pe-slash-empty { padding: 12px; color: var(--faint); font-size: 12.5px; }
|
|
@@ -271,37 +316,125 @@
|
|
|
271
316
|
box-shadow: var(--shadow-pop);
|
|
272
317
|
}
|
|
273
318
|
.pe-pop-item { display: block; width: 100%; text-align: left; background: none; border: none; border-radius: var(--r-sm); padding: 8px 10px; cursor: pointer; font-family: inherit; }
|
|
274
|
-
.pe-pop-item:hover { background:
|
|
319
|
+
.pe-pop-item:hover { background: var(--hover); }
|
|
275
320
|
.pe-pop-item b { display: block; font-size: 13px; color: var(--text); }
|
|
276
321
|
.pe-pop-item span { display: block; font-size: 11.5px; color: var(--faint); }
|
|
277
322
|
.pe-pop-sep { height: 1px; background: var(--line); margin: 6px 4px; }
|
|
278
323
|
.pe-pop-note { font-size: 12px; color: var(--amber); padding: 8px 10px 4px; }
|
|
279
324
|
.pe-pop-schedule { padding: 6px 10px 8px; display: flex; flex-direction: column; gap: 8px; }
|
|
280
325
|
.pe-pop-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--faint); }
|
|
281
|
-
.pe-pop-schedule input { background: var(--bg); color: var(--text); border: 1px solid var(--line); border-radius: var(--r-md); padding: 6px 9px; font-size: 12.5px; font-family: inherit;
|
|
326
|
+
.pe-pop-schedule input { background: var(--bg); color: var(--text); border: 1px solid var(--line); border-radius: var(--r-md); padding: 6px 9px; font-size: 12.5px; font-family: inherit; }
|
|
282
327
|
|
|
283
|
-
/* sidebar
|
|
328
|
+
/* sidebar — sits under the top bar so Publish stays reachable; a sheet of
|
|
329
|
+
its own in Split mode */
|
|
284
330
|
.pe-sidebar {
|
|
285
|
-
position: fixed; top:
|
|
286
|
-
background: var(--
|
|
287
|
-
|
|
331
|
+
position: fixed; top: 52px; right: 0; bottom: 0; width: 320px; z-index: 35;
|
|
332
|
+
background: var(--bg); border-left: 1px solid var(--line);
|
|
333
|
+
overflow-y: auto; overscroll-behavior: contain;
|
|
334
|
+
}
|
|
335
|
+
.pe-sidebar-head {
|
|
336
|
+
position: sticky; top: 0; z-index: 2; display: flex; align-items: center; justify-content: space-between;
|
|
337
|
+
font-weight: 700; font-size: 14px; padding: 12px 12px 10px 18px; background: inherit;
|
|
338
|
+
}
|
|
339
|
+
.pe-sb-section { padding: 6px 18px 16px; }
|
|
340
|
+
.pe-sb-section + .pe-sb-section { border-top: 1px solid var(--line); padding-top: 16px; }
|
|
341
|
+
.pe-sb-title { margin: 0 0 12px; font-size: 11px; font-weight: 700; letter-spacing: 0.07em; text-transform: uppercase; color: var(--faint); }
|
|
342
|
+
.pe-sb-danger { padding-bottom: 24px; }
|
|
343
|
+
@media (min-width: 901px) {
|
|
344
|
+
.pe-shell.has-split .pe-sidebar {
|
|
345
|
+
right: 8px; bottom: 8px; width: 312px; border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--shadow-card);
|
|
346
|
+
}
|
|
288
347
|
}
|
|
289
|
-
|
|
348
|
+
|
|
349
|
+
/* publish date: a quiet "when you publish" row until a date is picked */
|
|
350
|
+
.pe-date { display: flex; gap: 6px; align-items: center; }
|
|
351
|
+
.pe-date input { flex: 1; min-width: 0; }
|
|
352
|
+
.pe-date-empty {
|
|
353
|
+
width: 100%; display: flex; justify-content: space-between; align-items: center; cursor: pointer;
|
|
354
|
+
background: var(--panel); border: 1px solid var(--line); border-radius: var(--r-md); padding: 7px 10px;
|
|
355
|
+
font: inherit; font-size: 13px; color: var(--text-2);
|
|
356
|
+
}
|
|
357
|
+
.pe-date-empty em { font-style: normal; font-size: 12px; font-weight: 600; color: var(--accent-deep); }
|
|
358
|
+
.pe-date-empty:hover { border-color: var(--line-strong); }
|
|
359
|
+
:root[data-theme='dark'] .pe-field input[type='datetime-local'] { color-scheme: dark; }
|
|
360
|
+
|
|
361
|
+
/* switch rows (featured, home page) */
|
|
362
|
+
.pe-switch-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; padding: 8px 0 2px; cursor: pointer; }
|
|
363
|
+
.pe-switch-row b { display: block; font-size: 13px; font-weight: 600; color: var(--text); }
|
|
364
|
+
.pe-switch-row small { display: block; font-size: 12px; color: var(--faint); line-height: 1.4; margin-top: 1px; }
|
|
365
|
+
.pe-switch-row code { background: var(--panel-2); border: 1px solid var(--line); border-radius: 4px; padding: 0 4px; font-size: 11px; }
|
|
366
|
+
.pe-switch {
|
|
367
|
+
appearance: none; flex: 0 0 auto; width: 32px; height: 19px; margin: 1px 0 0; border-radius: 99px; cursor: pointer;
|
|
368
|
+
background: var(--line-strong); position: relative; transition: background-color 0.15s;
|
|
369
|
+
}
|
|
370
|
+
.pe-switch::after {
|
|
371
|
+
content: ''; position: absolute; top: 2px; left: 2px; width: 15px; height: 15px; border-radius: 50%;
|
|
372
|
+
background: #fff; box-shadow: 0 1px 2px rgb(0 0 0 / 25%); transition: transform 0.15s;
|
|
373
|
+
}
|
|
374
|
+
.pe-switch:checked { background: var(--accent); }
|
|
375
|
+
.pe-switch:checked::after { transform: translateX(13px); }
|
|
376
|
+
.pe-switch:focus-visible { outline: none; box-shadow: 0 0 0 3px var(--accent-ring); }
|
|
377
|
+
|
|
378
|
+
/* feature image row */
|
|
379
|
+
.pe-sb-image { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
|
|
380
|
+
.pe-sb-image img, .pe-sb-image-empty {
|
|
381
|
+
width: 96px; aspect-ratio: 1.91 / 1; flex: 0 0 auto; border-radius: var(--r-sm); object-fit: cover;
|
|
382
|
+
background: var(--panel-2); border: 1px solid var(--line);
|
|
383
|
+
}
|
|
384
|
+
.pe-sb-image-empty { background: repeating-linear-gradient(135deg, var(--panel-2) 0 6px, transparent 6px 12px); }
|
|
385
|
+
.pe-sb-image-actions { display: flex; gap: 4px; flex-wrap: wrap; }
|
|
386
|
+
|
|
387
|
+
/* search card summary → opens the editable preview */
|
|
388
|
+
.pe-sb-serp {
|
|
389
|
+
display: block; width: 100%; text-align: left; cursor: pointer; font: inherit;
|
|
390
|
+
background: var(--panel); border: 1px solid var(--line); border-radius: var(--r-md); padding: 11px 12px;
|
|
391
|
+
}
|
|
392
|
+
.pe-sb-serp:hover { border-color: var(--line-strong); }
|
|
393
|
+
.pe-sb-serp small { display: block; font-size: 11px; color: var(--faint); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
394
|
+
.pe-sb-serp b { display: block; font-size: 14px; font-weight: 600; color: var(--blue); margin: 2px 0; line-height: 1.3; }
|
|
395
|
+
.pe-sb-serp span { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font-size: 12px; color: var(--muted); line-height: 1.45; }
|
|
396
|
+
.pe-sb-serp em { display: block; margin-top: 9px; font-style: normal; font-size: 12px; font-weight: 600; color: var(--accent-deep); }
|
|
290
397
|
.pe-field { display: block; margin-bottom: 14px; }
|
|
291
398
|
.pe-field > span { display: flex; justify-content: space-between; font-size: 12px; color: var(--muted); margin-bottom: 5px; font-weight: 500; }
|
|
292
399
|
.pe-field > span em { font-style: normal; color: var(--faint); font-size: 11px; }
|
|
293
400
|
.pe-field input, .pe-field textarea {
|
|
294
401
|
width: 100%; background: var(--bg); color: var(--text); border: 1px solid var(--line); border-radius: var(--r-md);
|
|
295
|
-
padding: 7px 10px; font-size: 13px; font-family: inherit; resize: vertical;
|
|
402
|
+
padding: 7px 10px; font-size: 13px; font-family: inherit; resize: vertical;
|
|
296
403
|
}
|
|
297
404
|
.pe-field input:focus, .pe-field textarea:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-ring); }
|
|
298
405
|
.pe-slug { display: flex; align-items: center; background: var(--bg); border: 1px solid var(--line); border-radius: var(--r-md); }
|
|
299
406
|
.pe-slug:focus-within { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-ring); }
|
|
300
|
-
.pe-slug-prefix { color: var(--faint); font-size: 13px; padding-left: 10px; }
|
|
407
|
+
.pe-slug-prefix { flex: 0 0 auto; white-space: nowrap; color: var(--faint); font-size: 13px; padding-left: 10px; }
|
|
408
|
+
.pe-slug input { flex: 1; min-width: 0; border: 0 !important; box-shadow: none !important; background: none !important; padding-left: 1px !important; }
|
|
301
409
|
.pe-slug input { border: none !important; box-shadow: none !important; padding-left: 2px; }
|
|
302
|
-
|
|
303
|
-
.pe-seo
|
|
304
|
-
.pe-
|
|
410
|
+
/* editable search / social fields under the preview cards */
|
|
411
|
+
.pe-seo-view { width: min(600px, 100%); display: flex; flex-direction: column; align-items: center; gap: 20px; }
|
|
412
|
+
.pe-seo-edit {
|
|
413
|
+
width: 100%; background: var(--bg); border: 1px solid var(--line); border-radius: var(--r-lg);
|
|
414
|
+
padding: 18px 20px 6px; box-shadow: var(--shadow-card);
|
|
415
|
+
}
|
|
416
|
+
.pe-seo-field { display: block; margin-bottom: 16px; }
|
|
417
|
+
.pe-seo-label { display: flex; justify-content: space-between; font-size: 12.5px; font-weight: 600; color: var(--text-2); margin-bottom: 6px; }
|
|
418
|
+
.pe-seo-label em { font-style: normal; font-weight: 500; color: var(--faint); font-variant-numeric: tabular-nums; }
|
|
419
|
+
.pe-seo-label em.over { color: var(--amber); }
|
|
420
|
+
.pe-seo-field input, .pe-seo-field textarea {
|
|
421
|
+
width: 100%; background: var(--panel); color: var(--text); border: 1px solid var(--line-strong); border-radius: var(--r-md);
|
|
422
|
+
padding: 8px 11px; font: inherit; font-size: 14px; resize: vertical;
|
|
423
|
+
}
|
|
424
|
+
.pe-seo-field input:focus, .pe-seo-field textarea:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-ring); }
|
|
425
|
+
.pe-seo-field small { display: block; font-size: 12px; color: var(--faint); margin-top: 5px; }
|
|
426
|
+
.pe-meter { display: block; height: 3px; border-radius: 99px; background: var(--sel); margin-top: 6px; overflow: hidden; }
|
|
427
|
+
.pe-meter i { display: block; height: 100%; border-radius: inherit; background: var(--green); transition: width 0.15s; }
|
|
428
|
+
.pe-meter.over i { background: var(--amber); }
|
|
429
|
+
.pe-seo-note { font-size: 12px; color: var(--faint); margin: 0 0 12px; }
|
|
430
|
+
.pe-seo-image { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
|
|
431
|
+
.pe-seo-image img, .pe-seo-image-empty {
|
|
432
|
+
width: 88px; aspect-ratio: 1.91 / 1; border-radius: var(--r-sm); object-fit: cover; flex: 0 0 auto;
|
|
433
|
+
background: repeating-linear-gradient(135deg, var(--panel-2) 0 6px, transparent 6px 12px); border: 1px solid var(--line);
|
|
434
|
+
}
|
|
435
|
+
.pe-seo-image > div { flex: 1; min-width: 0; }
|
|
436
|
+
.pe-seo-image b { display: block; font-size: 13px; }
|
|
437
|
+
.pe-seo-image small { display: block; font-size: 12px; color: var(--faint); }
|
|
305
438
|
|
|
306
439
|
/* tags */
|
|
307
440
|
.pe-tags {
|
|
@@ -311,7 +444,7 @@
|
|
|
311
444
|
.pe-tags:focus-within { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-ring); }
|
|
312
445
|
.pe-tag {
|
|
313
446
|
display: inline-flex; align-items: center; gap: 5px;
|
|
314
|
-
background: var(--
|
|
447
|
+
background: var(--sel); color: var(--text-2); font-size: 12px; font-weight: 600;
|
|
315
448
|
padding: 2px 8px; border-radius: var(--r-full);
|
|
316
449
|
}
|
|
317
450
|
.pe-tag button { background: none; border: none; color: inherit; cursor: pointer; font-size: 10px; padding: 0; }
|
|
@@ -326,7 +459,7 @@
|
|
|
326
459
|
display: block; width: 100%; text-align: left; background: none; border: none;
|
|
327
460
|
color: var(--text); font: inherit; font-size: 13px; padding: 7px 11px; cursor: pointer;
|
|
328
461
|
}
|
|
329
|
-
.pe-tag-suggest button:hover { background: var(--
|
|
462
|
+
.pe-tag-suggest button:hover { background: var(--hover); }
|
|
330
463
|
|
|
331
464
|
/* ---- media crop modal ---- */
|
|
332
465
|
.mc-modal { width: min(880px, 94vw); }
|
|
@@ -356,19 +489,19 @@
|
|
|
356
489
|
|
|
357
490
|
/* modal (image picker) */
|
|
358
491
|
.pe-modal-backdrop {
|
|
359
|
-
position: fixed; inset: 0; z-index:
|
|
492
|
+
position: fixed; inset: 0; z-index: 75; background: var(--dim);
|
|
360
493
|
display: grid; place-items: center; padding: 24px; backdrop-filter: blur(2px);
|
|
361
494
|
}
|
|
362
495
|
.pe-modal {
|
|
363
496
|
width: 100%; max-width: 640px; max-height: 80vh; display: flex; flex-direction: column;
|
|
364
497
|
background: var(--panel); border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden;
|
|
365
|
-
box-shadow:
|
|
498
|
+
box-shadow: var(--shadow-pop);
|
|
366
499
|
}
|
|
367
500
|
.pe-modal-head { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; border-bottom: 1px solid var(--line); }
|
|
368
501
|
.pe-tabs { display: flex; gap: 2px; }
|
|
369
502
|
.pe-tabs button { background: none; border: none; color: var(--muted); font-family: inherit; font-size: 13px; font-weight: 600; padding: 6px 12px; border-radius: var(--r-md); cursor: pointer; }
|
|
370
503
|
.pe-tabs button:hover { color: var(--text); }
|
|
371
|
-
.pe-tabs button.is-active { color: var(--
|
|
504
|
+
.pe-tabs button.is-active { color: var(--text); background: var(--sel); }
|
|
372
505
|
.pe-modal-close { background: none; border: none; color: var(--muted); cursor: pointer; font-size: 13px; padding: 6px 8px; }
|
|
373
506
|
.pe-modal-error { color: var(--red); font-size: 12.5px; padding: 10px 16px 0; }
|
|
374
507
|
.pe-dropzone {
|
|
@@ -404,12 +537,12 @@
|
|
|
404
537
|
display: flex; align-items: center; justify-content: space-between; gap: 12px;
|
|
405
538
|
padding: 10px 18px; border-bottom: 1px solid var(--line);
|
|
406
539
|
}
|
|
407
|
-
.pe-devices { display: flex; gap:
|
|
540
|
+
.pe-devices { display: flex; gap: 1px; background: var(--sel); border-radius: 9px; padding: 2px; }
|
|
408
541
|
.pe-devices button {
|
|
409
542
|
background: none; border: none; color: var(--muted); font-family: inherit; font-size: 12.5px;
|
|
410
543
|
font-weight: 600; padding: 4px 14px; border-radius: 6px; cursor: pointer;
|
|
411
544
|
}
|
|
412
|
-
.pe-devices button.is-active { background: var(--
|
|
545
|
+
.pe-devices button.is-active { background: var(--bg); color: var(--text); box-shadow: var(--shadow-sm); }
|
|
413
546
|
.pe-preview-actions { display: flex; gap: 8px; }
|
|
414
547
|
.pe-preview-stage { flex: 1; display: flex; justify-content: center; overflow: hidden; padding: 0; background: var(--panel-2); }
|
|
415
548
|
.pe-preview-stage iframe { height: 100%; border: 0; background: #fff; transition: width 0.2s ease; }
|
|
@@ -423,7 +556,7 @@
|
|
|
423
556
|
.pe-postlist-config select, .pe-postlist-config input[type='text'] {
|
|
424
557
|
width: auto; flex: 0 1 auto; background: var(--bg); color: var(--text);
|
|
425
558
|
border: 1px solid var(--line); border-radius: var(--r-md); padding: 5px 8px;
|
|
426
|
-
font-size: 12.5px; font-family: inherit;
|
|
559
|
+
font-size: 12.5px; font-family: inherit;
|
|
427
560
|
}
|
|
428
561
|
.pe-postlist-config input[type='text'] { width: 120px; }
|
|
429
562
|
.pe-postlist-config label { display: flex; align-items: center; gap: 5px; font-size: 12px; color: var(--muted); white-space: nowrap; }
|
|
@@ -450,13 +583,13 @@
|
|
|
450
583
|
.pe-toast {
|
|
451
584
|
position: fixed; top: 14px; left: 50%; transform: translateX(-50%); z-index: 90;
|
|
452
585
|
display: flex; align-items: center; gap: 10px;
|
|
453
|
-
background: var(--green-soft); border: 1px solid
|
|
586
|
+
background: var(--green-soft); border: 1px solid transparent; color: var(--green);
|
|
454
587
|
border-radius: var(--r-md); padding: 9px 16px; font-size: 13px;
|
|
455
588
|
box-shadow: var(--shadow-pop);
|
|
456
589
|
animation: pe-toast-in 0.18s ease-out;
|
|
457
590
|
}
|
|
458
|
-
.pe-toast-check { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; border-radius: 50%; background:
|
|
459
|
-
.pe-toast a { color:
|
|
591
|
+
.pe-toast-check { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; border-radius: 50%; background: var(--green); color: var(--bg); font-size: 11px; }
|
|
592
|
+
.pe-toast a { color: var(--green); font-weight: 600; text-decoration: none; }
|
|
460
593
|
.pe-toast a:hover { text-decoration: underline; }
|
|
461
594
|
@keyframes pe-toast-in { from { opacity: 0; transform: translate(-50%, -6px); } to { opacity: 1; transform: translate(-50%, 0); } }
|
|
462
595
|
.pe-check-hint { display: block; font-style: normal; font-size: 11px; color: var(--faint); margin-top: 1px; }
|
|
@@ -471,8 +604,8 @@
|
|
|
471
604
|
.pe-filecard input[type='file'] { font-size: 13px; }
|
|
472
605
|
|
|
473
606
|
.pe-gallery-empty {
|
|
474
|
-
border: 1.5px dashed var(--
|
|
475
|
-
text-align: center; font-size: 13.5px; color: var(--muted
|
|
607
|
+
border: 1.5px dashed var(--line-strong); border-radius: 9px; padding: 22px;
|
|
608
|
+
text-align: center; font-size: 13.5px; color: var(--muted);
|
|
476
609
|
}
|
|
477
610
|
.pe-gallery-item { position: relative; display: block; }
|
|
478
611
|
.pe-gallery-item img {
|
|
@@ -492,7 +625,7 @@
|
|
|
492
625
|
/* floating link editor (⌘K) */
|
|
493
626
|
.pe-linkedit {
|
|
494
627
|
position: sticky; top: 12px; z-index: 60;
|
|
495
|
-
background: var(--panel
|
|
628
|
+
background: var(--panel); border: 1px solid var(--line-strong);
|
|
496
629
|
border-radius: 10px; padding: 8px 10px; margin: 0 auto 12px;
|
|
497
630
|
max-width: 560px; box-shadow: 0 10px 30px rgb(0 0 0 / 14%);
|
|
498
631
|
}
|
|
@@ -501,32 +634,26 @@
|
|
|
501
634
|
flex: 1; border: 0; outline: none; font-size: 14px; background: none; color: inherit;
|
|
502
635
|
}
|
|
503
636
|
.pe-link-results {
|
|
504
|
-
border-top: 1px solid var(--line
|
|
637
|
+
border-top: 1px solid var(--line); margin-top: 8px; padding-top: 6px;
|
|
505
638
|
display: flex; flex-direction: column;
|
|
506
639
|
}
|
|
507
640
|
.pe-link-results button {
|
|
508
641
|
display: flex; align-items: baseline; gap: 8px; border: 0; background: none;
|
|
509
642
|
text-align: left; padding: 7px 8px; border-radius: 8px; cursor: pointer;
|
|
510
|
-
font: inherit; color: var(--text
|
|
643
|
+
font: inherit; color: var(--text);
|
|
511
644
|
}
|
|
512
|
-
.pe-link-results button.is-selected { background: var(--panel-2
|
|
645
|
+
.pe-link-results button.is-selected { background: var(--panel-2); }
|
|
513
646
|
.pe-link-title { font-size: 13.5px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
514
|
-
.pe-link-url { font-size: 12px; color: var(--faint
|
|
515
|
-
.pe-link-kind { font-size: 10px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; color: var(--faint
|
|
647
|
+
.pe-link-url { font-size: 12px; color: var(--faint); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
648
|
+
.pe-link-kind { font-size: 10px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; color: var(--faint); }
|
|
516
649
|
|
|
517
650
|
/* shortcut cheat-sheet */
|
|
518
|
-
.pe-wordcount { display: flex; align-items: center; gap: 10px; }
|
|
519
|
-
.pe-shortcuts-btn {
|
|
520
|
-
border: 1px solid var(--border, #d5d2ca); background: none; border-radius: 6px;
|
|
521
|
-
font-size: 10.5px; padding: 2px 7px; color: var(--muted, #8a8880); cursor: pointer;
|
|
522
|
-
}
|
|
523
|
-
.pe-shortcuts-btn:hover { color: inherit; }
|
|
524
651
|
.pe-shortcuts-overlay {
|
|
525
652
|
position: fixed; inset: 0; z-index: 90; background: rgb(0 0 0 / 40%);
|
|
526
653
|
display: flex; align-items: center; justify-content: center; padding: 24px;
|
|
527
654
|
}
|
|
528
655
|
.pe-shortcuts {
|
|
529
|
-
background: var(--panel
|
|
656
|
+
background: var(--panel); border-radius: 14px; padding: 20px 24px;
|
|
530
657
|
width: min(440px, 100%); max-height: 80vh; overflow-y: auto;
|
|
531
658
|
box-shadow: 0 24px 60px rgb(0 0 0 / 25%);
|
|
532
659
|
}
|
|
@@ -537,21 +664,36 @@
|
|
|
537
664
|
.pe-shortcuts-group { margin-top: 14px; }
|
|
538
665
|
.pe-shortcuts-title {
|
|
539
666
|
font-size: 11px; text-transform: uppercase; letter-spacing: 0.08em;
|
|
540
|
-
color: var(--muted
|
|
667
|
+
color: var(--muted); margin-bottom: 6px;
|
|
541
668
|
}
|
|
542
669
|
.pe-shortcuts-row { display: flex; align-items: baseline; gap: 12px; padding: 4px 0; font-size: 13.5px; }
|
|
543
670
|
.pe-shortcuts-row kbd {
|
|
544
671
|
flex: none; min-width: 108px; font-family: ui-monospace, monospace; font-size: 12px;
|
|
545
|
-
color: var(--muted
|
|
672
|
+
color: var(--muted);
|
|
546
673
|
}
|
|
547
674
|
|
|
548
675
|
/* multi-author checklist in the sidebar */
|
|
549
|
-
.pe-authors {
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
}
|
|
554
|
-
.pe-author
|
|
676
|
+
.pe-authors { display: flex; flex-direction: column; gap: 1px; max-height: 196px; overflow-y: auto; }
|
|
677
|
+
.pe-author {
|
|
678
|
+
display: flex; align-items: center; gap: 9px; padding: 5px 8px; margin: 0 -8px; border-radius: var(--r-sm);
|
|
679
|
+
font-size: 13px; color: var(--muted); cursor: pointer;
|
|
680
|
+
}
|
|
681
|
+
.pe-author:hover { background: var(--hover); }
|
|
682
|
+
.pe-author input { position: absolute; opacity: 0; pointer-events: none; }
|
|
683
|
+
.pe-author i {
|
|
684
|
+
width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; flex: 0 0 auto;
|
|
685
|
+
font-style: normal; font-size: 11px; font-weight: 700; background: var(--sel); color: var(--faint);
|
|
686
|
+
}
|
|
687
|
+
.pe-author span { flex: 1; }
|
|
688
|
+
.pe-author em { font-style: normal; font-size: 11px; font-weight: 600; color: var(--faint); }
|
|
689
|
+
.pe-author.is-on { color: var(--text); }
|
|
690
|
+
.pe-author.is-on i { background: var(--accent); color: var(--on-accent); }
|
|
691
|
+
.pe-author::after { content: ''; width: 14px; height: 14px; flex: 0 0 auto; }
|
|
692
|
+
.pe-author.is-on::after {
|
|
693
|
+
background: var(--accent-deep);
|
|
694
|
+
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5 9-10'/%3E%3C/svg%3E") center / contain no-repeat;
|
|
695
|
+
}
|
|
696
|
+
.pe-author:has(input:focus-visible) { box-shadow: 0 0 0 2px var(--accent-ring); }
|
|
555
697
|
|
|
556
698
|
/* ---- calendar card (dynamic block) ---- */
|
|
557
699
|
.pe-calcard { background: var(--panel); border: 1px solid var(--line); border-radius: var(--r-md); padding: 12px 12px 10px; }
|
|
@@ -561,7 +703,7 @@
|
|
|
561
703
|
.pe-calendar-config select, .pe-calendar-config input[type='text'] {
|
|
562
704
|
width: auto; flex: 0 1 auto; background: var(--bg); color: var(--text);
|
|
563
705
|
border: 1px solid var(--line); border-radius: var(--r-md); padding: 5px 8px;
|
|
564
|
-
font-size: 12.5px; font-family: inherit;
|
|
706
|
+
font-size: 12.5px; font-family: inherit;
|
|
565
707
|
}
|
|
566
708
|
.pe-calendar-config input.pe-cal-title { flex: 1 1 180px; }
|
|
567
709
|
.pe-calendar-config label { display: flex; align-items: center; gap: 5px; font-size: 12px; color: var(--muted); white-space: nowrap; }
|
|
@@ -597,7 +739,7 @@
|
|
|
597
739
|
.pe-infocard-row { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
|
|
598
740
|
.pe-infocard input[type='text'], .pe-infocard input[type='url'], .pe-infocard select, .pe-infocard textarea {
|
|
599
741
|
background: var(--panel); color: var(--text); border: 1px solid var(--line); border-radius: var(--r-md);
|
|
600
|
-
padding: 5px 8px; font-size: 12.5px; font-family: inherit;
|
|
742
|
+
padding: 5px 8px; font-size: 12.5px; font-family: inherit; width: auto;
|
|
601
743
|
}
|
|
602
744
|
.pe-infocard-title { flex: 1 1 140px; font-weight: 600; }
|
|
603
745
|
.pe-infocard-badge { flex: 0 1 130px; }
|
|
@@ -624,7 +766,7 @@
|
|
|
624
766
|
.pe-toggle.is-selected { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-ring); }
|
|
625
767
|
.pe-toggle .pe-toggle-head { display: flex; align-items: center; gap: 8px; }
|
|
626
768
|
.pe-toggle-chevron {
|
|
627
|
-
border: 0; background: none; cursor: pointer; color: var(--muted
|
|
769
|
+
border: 0; background: none; cursor: pointer; color: var(--muted);
|
|
628
770
|
font-size: 13px; padding: 2px 4px; transition: transform 0.15s ease;
|
|
629
771
|
}
|
|
630
772
|
.pe-toggle.is-open .pe-toggle-chevron { transform: rotate(90deg); }
|
|
@@ -643,6 +785,242 @@
|
|
|
643
785
|
.pe-toc-title {
|
|
644
786
|
border: 0; outline: none; background: none; text-transform: uppercase;
|
|
645
787
|
letter-spacing: 0.08em; font-size: 11.5px; font-weight: 700;
|
|
646
|
-
color: var(--muted
|
|
788
|
+
color: var(--muted); margin-bottom: 6px; padding: 0;
|
|
789
|
+
}
|
|
790
|
+
.pe-toc-empty { color: var(--faint); font-size: 13.5px; }
|
|
791
|
+
|
|
792
|
+
/* GitHub-dark token palette for code blocks in night mode */
|
|
793
|
+
:root[data-theme='dark'] .pe-prose pre .hljs-comment, :root[data-theme='dark'] .pe-prose pre .hljs-quote { color: #8b949e; }
|
|
794
|
+
:root[data-theme='dark'] .pe-prose pre .hljs-keyword, :root[data-theme='dark'] .pe-prose pre .hljs-selector-tag, :root[data-theme='dark'] .pe-prose pre .hljs-doctag,
|
|
795
|
+
:root[data-theme='dark'] .pe-prose pre .hljs-template-tag, :root[data-theme='dark'] .pe-prose pre .hljs-operator { color: #ff7b72; }
|
|
796
|
+
:root[data-theme='dark'] .pe-prose pre .hljs-string, :root[data-theme='dark'] .pe-prose pre .hljs-regexp, :root[data-theme='dark'] .pe-prose pre .hljs-addition { color: #a5d6ff; }
|
|
797
|
+
:root[data-theme='dark'] .pe-prose pre .hljs-title, :root[data-theme='dark'] .pe-prose pre .hljs-section { color: #d2a8ff; }
|
|
798
|
+
:root[data-theme='dark'] .pe-prose pre .hljs-number, :root[data-theme='dark'] .pe-prose pre .hljs-literal, :root[data-theme='dark'] .pe-prose pre .hljs-attr,
|
|
799
|
+
:root[data-theme='dark'] .pe-prose pre .hljs-variable, :root[data-theme='dark'] .pe-prose pre .hljs-template-variable, :root[data-theme='dark'] .pe-prose pre .hljs-type,
|
|
800
|
+
:root[data-theme='dark'] .pe-prose pre .hljs-selector-class, :root[data-theme='dark'] .pe-prose pre .hljs-selector-id, :root[data-theme='dark'] .pe-prose pre .hljs-meta,
|
|
801
|
+
:root[data-theme='dark'] .pe-prose pre .hljs-attribute, :root[data-theme='dark'] .pe-prose pre .hljs-property { color: #79c0ff; }
|
|
802
|
+
:root[data-theme='dark'] .pe-prose pre .hljs-name, :root[data-theme='dark'] .pe-prose pre .hljs-tag, :root[data-theme='dark'] .pe-prose pre .hljs-bullet { color: #7ee787; }
|
|
803
|
+
:root[data-theme='dark'] .pe-prose pre .hljs-built_in, :root[data-theme='dark'] .pe-prose pre .hljs-symbol { color: #ffa657; }
|
|
804
|
+
:root[data-theme='dark'] .pe-prose pre .hljs-deletion { color: #ffa198; }
|
|
805
|
+
|
|
806
|
+
/* ---- segmented control (island-local mirror of .seg) ---- */
|
|
807
|
+
.pe-seg { display: inline-flex; gap: 1px; padding: 2px; border-radius: 9px; background: var(--sel); }
|
|
808
|
+
.pe-seg button {
|
|
809
|
+
display: inline-flex; align-items: center; justify-content: center; gap: 5px;
|
|
810
|
+
border: 0; background: none; font: inherit; font-size: 12px; font-weight: 600; color: var(--muted);
|
|
811
|
+
padding: 4px 10px; border-radius: 7px; cursor: pointer;
|
|
812
|
+
}
|
|
813
|
+
.pe-seg button:hover { color: var(--text); }
|
|
814
|
+
.pe-seg button[aria-pressed='true'], .pe-seg button[aria-selected='true'] { background: var(--bg); color: var(--text); box-shadow: var(--shadow-sm); }
|
|
815
|
+
:root[data-theme='dark'] .pe-seg button[aria-pressed='true'], :root[data-theme='dark'] .pe-seg button[aria-selected='true'] { background: #3a3632; }
|
|
816
|
+
.pe-seg svg { width: 14px; height: 14px; }
|
|
817
|
+
|
|
818
|
+
/* ---- live pane ---- */
|
|
819
|
+
.pe-live { display: flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 600; color: var(--text); white-space: nowrap; }
|
|
820
|
+
.pe-live i { width: 7px; height: 7px; border-radius: 50%; background: var(--green); }
|
|
821
|
+
.pe-live-path {
|
|
822
|
+
min-width: 0; flex: 0 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
|
823
|
+
font: 11.5px ui-monospace, 'SF Mono', monospace; color: var(--muted);
|
|
824
|
+
background: var(--panel-2); border: 1px solid var(--line); border-radius: var(--r-sm); padding: 2px 8px;
|
|
825
|
+
}
|
|
826
|
+
.pe-live-ago { flex: 1; font-size: 12px; color: var(--faint); white-space: nowrap; }
|
|
827
|
+
/* the site sits on its own card with a margin, so a light site never reads
|
|
828
|
+
as a hole in a dark admin */
|
|
829
|
+
.pe-split-stage { flex: 1; min-height: 0; display: flex; justify-content: center; background: var(--panel-2); padding: 10px; }
|
|
830
|
+
.pe-split-stage iframe {
|
|
831
|
+
flex: 1; width: 100%; height: 100%; border: 1px solid var(--line); border-radius: var(--r-md); background: #fff;
|
|
832
|
+
box-shadow: var(--shadow-card);
|
|
833
|
+
}
|
|
834
|
+
.pe-split-stage.phone { padding: 14px 0; }
|
|
835
|
+
.pe-split-stage.phone iframe { flex: 0 0 390px; max-width: 100%; border-radius: 22px; border: 6px solid #1a1917; box-shadow: var(--shadow-pop); }
|
|
836
|
+
|
|
837
|
+
/* ---- preview overlay v2 ---- */
|
|
838
|
+
.pe-preview-bar { display: grid; grid-template-columns: 1fr auto 1fr; }
|
|
839
|
+
.pe-preview-center { display: flex; gap: 8px; align-items: center; }
|
|
840
|
+
.pe-preview-actions { justify-content: flex-end; align-items: center; }
|
|
841
|
+
.pe-preview-body { flex: 1; min-height: 0; display: flex; }
|
|
842
|
+
.pe-preview-stage { flex: 1; min-width: 0; }
|
|
843
|
+
.pe-preview-stage.view-search, .pe-preview-stage.view-social { align-items: flex-start; padding: 48px 24px; overflow-y: auto; }
|
|
844
|
+
.pe-checks { width: 290px; flex: 0 0 auto; border-left: 1px solid var(--line); background: var(--bg); padding: 16px; overflow-y: auto; }
|
|
845
|
+
.pe-checks-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 8px; }
|
|
846
|
+
.pe-checks-head span { color: var(--muted); font-size: 12px; }
|
|
847
|
+
.pe-check-row { display: flex; gap: 10px; align-items: flex-start; padding: 9px 0; border-bottom: 1px solid var(--line); }
|
|
848
|
+
.pe-check-row:last-child { border-bottom: 0; }
|
|
849
|
+
.pe-check-row > i { width: 18px; height: 18px; flex: 0 0 auto; border-radius: 50%; display: grid; place-items: center; font-style: normal; font-size: 10.5px; font-weight: 800; color: #fff; margin-top: 1px; }
|
|
850
|
+
.pe-check-row > i.ok { background: var(--green); }
|
|
851
|
+
.pe-check-row > i.warn { background: var(--amber); }
|
|
852
|
+
.pe-check-row > div { flex: 1; min-width: 0; font-size: 13px; }
|
|
853
|
+
.pe-check-row small { display: block; color: var(--muted); font-size: 12px; }
|
|
854
|
+
.pe-serp { width: min(600px, 100%); background: #fff; color: #202124; border-radius: 14px; padding: 18px 20px; font-family: Arial, sans-serif; box-shadow: var(--shadow-pop); }
|
|
855
|
+
.pe-serp-site { display: flex; gap: 10px; align-items: center; margin-bottom: 6px; }
|
|
856
|
+
.pe-serp-fav { width: 28px; height: 28px; border-radius: 50%; background: #f1f3f4; display: grid; place-items: center; color: #5f6368; }
|
|
857
|
+
.pe-serp-fav svg { width: 16px; height: 16px; }
|
|
858
|
+
.pe-serp-site b { display: block; font-size: 14px; font-weight: 400; }
|
|
859
|
+
.pe-serp-site small { display: block; font-size: 12px; color: #4d5156; }
|
|
860
|
+
.pe-serp-title { font-size: 20px; color: #1a0dab; line-height: 1.3; margin-bottom: 4px; }
|
|
861
|
+
.pe-serp-desc { font-size: 14px; color: #4d5156; line-height: 1.58; }
|
|
862
|
+
.pe-og { width: min(520px, 100%); background: #fff; color: #0f1419; border: 1px solid #cfd9de; border-radius: 16px; overflow: hidden; box-shadow: var(--shadow-pop); font-family: system-ui, sans-serif; }
|
|
863
|
+
.pe-og img { display: block; width: 100%; aspect-ratio: 1.91 / 1; object-fit: cover; }
|
|
864
|
+
.pe-og-empty { aspect-ratio: 1.91 / 1; display: grid; place-items: center; background: #f7f9f9; color: #536471; font-size: 13px; }
|
|
865
|
+
.pe-og-text { padding: 11px 14px 13px; border-top: 1px solid #cfd9de; }
|
|
866
|
+
.pe-og-text small { display: block; color: #536471; font-size: 13px; }
|
|
867
|
+
.pe-og-text b { display: block; font-size: 15px; margin: 1px 0; }
|
|
868
|
+
.pe-og-text span { color: #536471; font-size: 14px; }
|
|
869
|
+
.pe-share-wrap { position: relative; }
|
|
870
|
+
.pe-share { position: absolute; right: 0; top: calc(100% + 8px); width: 340px; z-index: 5; background: var(--panel); border: 1px solid var(--line-strong); border-radius: var(--r-lg); box-shadow: var(--shadow-pop); padding: 14px; }
|
|
871
|
+
.pe-share b { font-size: 13.5px; }
|
|
872
|
+
.pe-share p { margin: 4px 0 10px; color: var(--muted); font-size: 12.5px; line-height: 1.45; }
|
|
873
|
+
.pe-share-row { display: flex; gap: 6px; }
|
|
874
|
+
.pe-share-row input { flex: 1; min-width: 0; background: var(--bg); color: var(--text-2); border: 1px solid var(--line-strong); border-radius: var(--r-md); padding: 5px 9px; font: 12px ui-monospace, monospace; }
|
|
875
|
+
|
|
876
|
+
/* ---- phone formatting bar ---- */
|
|
877
|
+
.pe-mtoolbar {
|
|
878
|
+
position: fixed; left: 0; right: 0; z-index: 80;
|
|
879
|
+
display: flex; align-items: center; gap: 2px; padding: 5px 6px; overflow-x: auto; scrollbar-width: none;
|
|
880
|
+
background: var(--bg); border-top: 1px solid var(--line); box-shadow: 0 -4px 14px rgb(0 0 0 / 6%);
|
|
881
|
+
}
|
|
882
|
+
.pe-mtoolbar button {
|
|
883
|
+
flex: 0 0 auto; width: 38px; height: 36px; display: grid; place-items: center;
|
|
884
|
+
border: 0; background: none; color: var(--text-2); border-radius: 9px; font: 700 15px Inter, sans-serif;
|
|
885
|
+
}
|
|
886
|
+
.pe-mtoolbar button[aria-pressed='true'] { background: var(--sel); color: var(--text); }
|
|
887
|
+
.pe-mtoolbar svg { width: 19px; height: 19px; }
|
|
888
|
+
.pe-mtoolbar-sep { width: 1px; height: 20px; background: var(--line-strong); flex: 0 0 1px; margin: 0 3px; }
|
|
889
|
+
|
|
890
|
+
@media (max-width: 900px) {
|
|
891
|
+
.pe-mode-split, .pe-modes button:first-child, .pe-splitpane { display: none !important; }
|
|
892
|
+
.pe-checks { display: none; }
|
|
893
|
+
}
|
|
894
|
+
@media (max-width: 767px) {
|
|
895
|
+
.pe-hide-sm { display: none; }
|
|
896
|
+
/* no backdrop-filter: it would become the containing block for the fixed publish sheet */
|
|
897
|
+
.pe-topbar { padding: calc(8px + env(safe-area-inset-top)) 10px 8px; backdrop-filter: none; background: var(--bg); }
|
|
898
|
+
.pe-topbar-left, .pe-topbar-right { gap: 4px; }
|
|
899
|
+
.pe-savestate { font-size: 11.5px; max-width: 42vw; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
900
|
+
.pe-column { padding: 20px 18px 140px; }
|
|
901
|
+
.pe-title { font-size: 27px; }
|
|
902
|
+
.pe-prose { font-size: 16.5px; }
|
|
903
|
+
.pe-shell.has-sidebar .pe-body { margin-right: 0; }
|
|
904
|
+
.pe-topbar { grid-template-columns: auto 1fr auto; height: auto; }
|
|
905
|
+
.pe-modes { justify-self: center; background: none; }
|
|
906
|
+
.pe-dock { display: none; }
|
|
907
|
+
.pe-modes button { padding: 4px 8px; font-size: 0; gap: 0; }
|
|
908
|
+
.pe-modes svg { width: 15px; height: 15px; }
|
|
909
|
+
.pe-excerpt { font-size: 17px; }
|
|
910
|
+
.pe-byline { margin-bottom: 22px; }
|
|
911
|
+
.pe-imagecard.w-wide, .pe-imagecard.w-full { margin-left: -18px; margin-right: -18px; }
|
|
912
|
+
/* settings sidebar → full-screen sheet */
|
|
913
|
+
.pe-sidebar { width: 100%; top: 0; padding: calc(14px + env(safe-area-inset-top)) 18px 32px; }
|
|
914
|
+
.pe-field input, .pe-field textarea, .pe-tags input { font-size: 16px; }
|
|
915
|
+
/* publish popover → bottom sheet */
|
|
916
|
+
.pe-popover {
|
|
917
|
+
position: fixed; top: auto; left: 0; right: 0; bottom: 0; width: auto; z-index: 90;
|
|
918
|
+
border-radius: var(--r-xl) var(--r-xl) 0 0; padding: 14px 12px calc(18px + env(safe-area-inset-bottom));
|
|
919
|
+
box-shadow: 0 0 0 100vmax var(--dim), var(--shadow-pop);
|
|
920
|
+
}
|
|
921
|
+
.pe-pop-cta { padding: 12px; font-size: 15px; }
|
|
922
|
+
.pe-card-tools { opacity: 1; }
|
|
923
|
+
/* heavy cards: read-only on phones — move/delete still work via their tools */
|
|
924
|
+
.pe-htmlcard, .pe-embedcard, .pe-calcard, .pe-infocards, .pe-postlist { position: relative; }
|
|
925
|
+
.pe-htmlcard > :not(.pe-card-tools), .pe-embedcard > :not(.pe-card-tools), .pe-calcard > :not(.pe-card-tools),
|
|
926
|
+
.pe-infocards > :not(.pe-card-tools), .pe-postlist > :not(.pe-card-tools) { pointer-events: none; opacity: 0.75; }
|
|
927
|
+
.pe-htmlcard::after, .pe-embedcard::after, .pe-calcard::after, .pe-infocards::after, .pe-postlist::after {
|
|
928
|
+
content: 'Edit on desktop'; position: absolute; left: 8px; bottom: 8px; z-index: 2;
|
|
929
|
+
font-size: 11px; font-weight: 600; color: var(--text-2); background: var(--panel); border: 1px solid var(--line-strong);
|
|
930
|
+
border-radius: 99px; padding: 2px 9px;
|
|
931
|
+
}
|
|
932
|
+
.pe-preview-bar { grid-template-columns: auto 1fr auto; padding: calc(8px + env(safe-area-inset-top)) 10px 8px; gap: 6px; }
|
|
933
|
+
.pe-preview-center { justify-content: center; }
|
|
934
|
+
.pe-preview-stage iframe { width: 100% !important; }
|
|
935
|
+
.pe-preview-stage.view-search, .pe-preview-stage.view-social { padding: 20px 12px; }
|
|
936
|
+
.pe-share { position: fixed; left: 0; right: 0; top: auto; bottom: 0; width: auto; border-radius: var(--r-xl) var(--r-xl) 0 0; padding: 18px 16px calc(22px + env(safe-area-inset-bottom)); box-shadow: 0 0 0 100vmax var(--dim), var(--shadow-pop); }
|
|
937
|
+
.pe-share-row input { font-size: 13px; padding: 9px; }
|
|
938
|
+
}
|
|
939
|
+
|
|
940
|
+
/* ---- leave guard dialog ---- */
|
|
941
|
+
.pe-leave-backdrop {
|
|
942
|
+
position: fixed; inset: 0; z-index: 95; background: var(--dim); backdrop-filter: blur(2px);
|
|
943
|
+
display: grid; place-items: center; padding: 20px;
|
|
944
|
+
animation: pe-fade 0.15s ease;
|
|
945
|
+
}
|
|
946
|
+
.pe-leave {
|
|
947
|
+
width: min(400px, 100%); background: var(--panel); border: 1px solid var(--line-strong);
|
|
948
|
+
border-radius: var(--r-xl); box-shadow: var(--shadow-pop); padding: 22px 20px 16px;
|
|
949
|
+
animation: pe-rise 0.18s ease;
|
|
950
|
+
}
|
|
951
|
+
.pe-leave h2 { margin: 0 0 6px; font-size: 17px; letter-spacing: -0.01em; }
|
|
952
|
+
.pe-leave p { margin: 0 0 16px; font-size: 13.5px; color: var(--muted); line-height: 1.5; }
|
|
953
|
+
.pe-leave .pe-leave-error { color: var(--red); margin-top: -8px; }
|
|
954
|
+
.pe-leave-actions { display: flex; flex-direction: column; gap: 4px; }
|
|
955
|
+
.pe-leave-actions .pe-pop-item { padding: 9px 12px; border-radius: var(--r-md); }
|
|
956
|
+
.pe-leave-actions .pe-pop-item:disabled { opacity: 0.5; cursor: default; }
|
|
957
|
+
.pe-leave-danger b { color: var(--red) !important; }
|
|
958
|
+
.pe-leave-cta { justify-content: center; padding: 9px 14px; font-size: 13.5px; }
|
|
959
|
+
.pe-leave-cta.primary { margin-bottom: 6px; }
|
|
960
|
+
.pe-leave-cta.ghost { margin-top: 4px; }
|
|
961
|
+
@keyframes pe-fade { from { opacity: 0; } }
|
|
962
|
+
@keyframes pe-rise { from { opacity: 0; transform: translateY(6px) scale(0.98); } }
|
|
963
|
+
@media (max-width: 767px) {
|
|
964
|
+
.pe-leave-backdrop { place-items: end stretch; padding: 0; }
|
|
965
|
+
.pe-leave { width: 100%; border-radius: var(--r-xl) var(--r-xl) 0 0; padding-bottom: calc(16px + env(safe-area-inset-bottom)); }
|
|
647
966
|
}
|
|
648
|
-
|
|
967
|
+
|
|
968
|
+
/* ---- event mode (sidebar panel + byline) --------------------------------- */
|
|
969
|
+
.pe-field select {
|
|
970
|
+
width: 100%; background: var(--bg); color: var(--text); border: 1px solid var(--line); border-radius: var(--r-md);
|
|
971
|
+
padding: 7px 10px; font-size: 13px; font-family: inherit;
|
|
972
|
+
}
|
|
973
|
+
.pe-field select:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-ring); }
|
|
974
|
+
:root[data-theme='dark'] .pe-field input[type='date'], :root[data-theme='dark'] .pe-field input[type='time'], :root[data-theme='dark'] .pe-ev-choices input[type='date'] { color-scheme: dark; }
|
|
975
|
+
.pe-ev-row { display: flex; gap: 8px; }
|
|
976
|
+
.pe-ev-row > .pe-field { flex: 1 1 0; min-width: 0; }
|
|
977
|
+
.pe-ev-row > .pe-ev-time { flex: 0 0 112px; }
|
|
978
|
+
.pe-ev-link { border: 0; background: none; padding: 0; margin: -6px 0 6px; font: inherit; font-size: 12px; font-weight: 600; color: var(--accent-deep); cursor: pointer; }
|
|
979
|
+
.pe-ev-tz { margin-top: 10px; }
|
|
980
|
+
.pe-ev-inline { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--text-2); margin: -4px 0 12px; }
|
|
981
|
+
.pe-ev-inline input { width: 64px; background: var(--bg); color: var(--text); border: 1px solid var(--line); border-radius: var(--r-md); padding: 5px 8px; font: inherit; font-size: 13px; }
|
|
982
|
+
.pe-ev-days { display: flex; gap: 4px; margin: 0 0 12px; }
|
|
983
|
+
.pe-ev-days button {
|
|
984
|
+
flex: 1; height: 30px; border-radius: var(--r-full); border: 1px solid var(--line); background: var(--bg);
|
|
985
|
+
font: inherit; font-size: 12px; font-weight: 600; color: var(--muted); cursor: pointer;
|
|
986
|
+
}
|
|
987
|
+
.pe-ev-days button:hover { color: var(--text); border-color: var(--line-strong); }
|
|
988
|
+
.pe-ev-days button[aria-pressed='true'] { background: var(--sel); color: var(--text); border-color: var(--line-strong); }
|
|
989
|
+
.pe-ev-choices { display: flex; flex-direction: column; gap: 7px; margin: 0 0 14px; font-size: 13px; color: var(--text-2); }
|
|
990
|
+
.pe-ev-choices label { display: flex; align-items: center; gap: 7px; min-height: 28px; flex-wrap: wrap; cursor: pointer; }
|
|
991
|
+
.pe-ev-choices input[type='radio'] { accent-color: var(--accent); margin: 0; }
|
|
992
|
+
.pe-ev-choices input[type='date'], .pe-ev-choices input[type='number'] {
|
|
993
|
+
background: var(--bg); color: var(--text); border: 1px solid var(--line); border-radius: var(--r-md); padding: 4px 8px; font: inherit; font-size: 12.5px;
|
|
994
|
+
}
|
|
995
|
+
.pe-ev-choices input[type='number'] { width: 64px; }
|
|
996
|
+
.pe-ev-skips { margin-bottom: 8px; }
|
|
997
|
+
.pe-ev-note { font-size: 12.5px; color: var(--muted); margin: 0; line-height: 1.5; }
|
|
998
|
+
.pe-ev-note a { color: var(--accent-deep); }
|
|
999
|
+
.pe-ev-cals { display: flex; flex-direction: column; gap: 2px; }
|
|
1000
|
+
.pe-ev-cals label { display: flex; align-items: center; gap: 9px; padding: 6px 8px; border-radius: var(--r-sm); cursor: pointer; font-size: 13px; color: var(--text-2); }
|
|
1001
|
+
.pe-ev-cals label:hover { background: var(--hover); }
|
|
1002
|
+
.pe-ev-cals label.is-on { background: var(--sel); color: var(--text); font-weight: 600; }
|
|
1003
|
+
.pe-ev-cals input { accent-color: var(--accent); margin: 0; }
|
|
1004
|
+
.pe-ev-cals i { width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto; }
|
|
1005
|
+
.pe-ev-byline { flex-wrap: wrap; }
|
|
1006
|
+
.pe-ev-when {
|
|
1007
|
+
display: inline-flex; align-items: center; gap: 6px; border: 0; background: var(--panel-2); color: var(--text);
|
|
1008
|
+
border-radius: var(--r-full); padding: 3px 11px 3px 9px; font: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer;
|
|
1009
|
+
}
|
|
1010
|
+
.pe-ev-when:hover { background: var(--sel); }
|
|
1011
|
+
.pe-ev-when svg { width: 14px; height: 14px; color: var(--muted); }
|
|
1012
|
+
.pe-ev-when.is-cancelled { text-decoration: line-through; color: var(--muted); }
|
|
1013
|
+
.pe-ev-when.is-cancelled b { text-decoration: none; color: var(--red); }
|
|
1014
|
+
.pe-ev-cal { display: inline-flex; align-items: center; gap: 6px; }
|
|
1015
|
+
.pe-ev-cal i { width: 8px; height: 8px; border-radius: 50%; }
|
|
1016
|
+
.pe-field input.mono, .pe-ev input.mono { font-family: ui-monospace, 'SF Mono', monospace; font-size: 12px; }
|
|
1017
|
+
|
|
1018
|
+
/* calendar card: site calendars; event card */
|
|
1019
|
+
.pe-cal-site { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; width: 100%; margin-top: 8px; font-size: 12.5px; color: var(--muted); }
|
|
1020
|
+
.pe-cal-site .pe-btn i { width: 8px; height: 8px; border-radius: 50%; }
|
|
1021
|
+
.pe-cal-sitepick { border: 1px dashed var(--line-strong); background: var(--bg); color: var(--text-2); border-radius: var(--r-sm); padding: 3px 8px; font: inherit; font-size: 12.5px; cursor: pointer; }
|
|
1022
|
+
.pe-evcard-one { display: flex; gap: 14px; align-items: center; width: 100%; }
|
|
1023
|
+
.pe-evcard-one img, .pe-evcard-one .g-img { width: 120px; height: 72px; object-fit: cover; border-radius: var(--r-sm); flex: 0 0 auto; }
|
|
1024
|
+
.pe-evcard-one small { display: block; font-size: 11.5px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--accent-deep); }
|
|
1025
|
+
.pe-evcard-one b { display: block; font-size: 15px; color: var(--text); margin-top: 2px; }
|
|
1026
|
+
.pe-evcard-one em { display: block; font-style: normal; font-size: 12px; color: var(--amber); margin-top: 3px; }
|