@acms-subir/core 0.1.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 +106 -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 -315
- 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 +193 -2
- package/ops-check.mjs +27 -0
- package/package.json +35 -12
- package/src/actions/index.ts +744 -38
- 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 +455 -47
- 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 +216 -97
- package/src/components/NavManager.tsx +83 -38
- 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 +826 -271
- package/src/components/editor/PreviewOverlay.tsx +242 -43
- package/src/components/editor/extensions/calendar.tsx +51 -7
- package/src/components/editor/extensions/cards.tsx +17 -1
- package/src/components/editor/extensions/codeBlock.tsx +1 -1
- package/src/components/editor/extensions/events.tsx +153 -0
- package/src/components/editor/extensions/infoCards.tsx +16 -1
- package/src/components/editor/extensions/mediaCards.tsx +36 -2
- package/src/components/editor/extensions/slash.tsx +77 -9
- package/src/components/editor/extensions/toc.tsx +89 -0
- package/src/components/editor/extensions/toggle.tsx +70 -0
- 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 +331 -57
- 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/analytics.ts +121 -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 +112 -0
- 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 +131 -0
- package/src/lib/dynamicBlocks.ts +79 -7
- 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 +254 -0
- package/src/lib/repo/sql.ts +956 -46
- package/src/lib/repo/types.ts +140 -3
- package/src/lib/scheduler.ts +25 -0
- package/src/lib/schema.ts +362 -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 +10 -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 +14 -4
- package/src/pages/admin/c/[collection]/index.astro +127 -91
- 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 +16 -4
- package/src/pages/admin/email.astro +13 -0
- package/src/pages/admin/index.astro +237 -87
- 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 +14 -3
- package/src/pages/admin/pages/index.astro +41 -47
- package/src/pages/admin/settings.astro +475 -276
- 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 +140 -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 +9 -3
- package/src/pages/legal/privacy.astro +4 -0
- package/src/pages/legal/terms.astro +4 -0
- package/src/pages/links.astro +33 -7
- package/src/pages/llms.txt.ts +4 -0
- package/src/pages/preview/[type]/[id].astro +34 -8
- package/src/pages/search.astro +40 -20
- package/src/pages/sitemap.xml.ts +16 -1
- package/src/styles/admin.css +928 -105
- package/src/styles/cards.css +101 -60
- package/src/styles/editor.css +532 -102
- package/src/styles/email-settings.css +117 -0
- package/src/styles/sections.css +12 -0
- package/src/styles/site.css +938 -278
- 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,24 @@
|
|
|
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:
|
|
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;
|
|
11
12
|
}
|
|
12
|
-
.pe-topbar-left, .pe-topbar-right { display: flex; align-items: center; gap:
|
|
13
|
-
.pe-
|
|
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; }
|
|
21
|
+
.pe-edited-dot { font-style: normal; font-weight: 600; color: var(--amber); }
|
|
14
22
|
.pe-savestate.dirty { color: var(--muted); }
|
|
15
23
|
.pe-savestate.saving { color: var(--muted); }
|
|
16
24
|
.pe-savestate.error { color: var(--red); }
|
|
@@ -21,38 +29,41 @@
|
|
|
21
29
|
background: var(--panel); color: var(--text);
|
|
22
30
|
border: 1px solid var(--line-strong); border-radius: var(--r-md);
|
|
23
31
|
padding: 6px 13px; font-size: 13px; font-weight: 600;
|
|
24
|
-
cursor: pointer; font-family: inherit; text-decoration: none;
|
|
32
|
+
cursor: pointer; font-family: inherit; text-decoration: none; white-space: nowrap;
|
|
25
33
|
box-shadow: var(--shadow-sm);
|
|
26
34
|
}
|
|
27
35
|
.pe-btn:hover { border-color: var(--faint); }
|
|
28
|
-
.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); }
|
|
29
37
|
.pe-btn.primary:hover { background: var(--accent-strong); border-color: var(--accent-strong); }
|
|
30
38
|
.pe-btn.primary:disabled { opacity: 0.5; cursor: default; }
|
|
31
39
|
.pe-btn.sm { padding: 3px 10px; font-size: 12.5px; }
|
|
32
40
|
.pe-btn.ghost { background: transparent; border-color: transparent; color: var(--muted); box-shadow: none; }
|
|
33
|
-
.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); }
|
|
34
42
|
.pe-btn.danger { color: var(--red); }
|
|
35
43
|
|
|
36
|
-
/* layout
|
|
37
|
-
|
|
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); }
|
|
38
48
|
.pe-main { flex: 1; overflow-y: auto; min-width: 0; }
|
|
39
|
-
.pe-column { max-width:
|
|
40
|
-
.pe-shell.has-sidebar .pe-
|
|
41
|
-
.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; }
|
|
42
51
|
|
|
43
|
-
|
|
44
|
-
.pe-splitpane {
|
|
45
|
-
width: min(46vw, 760px); flex: 0 0 auto; display: flex; flex-direction: column;
|
|
46
|
-
border-left: 1px solid var(--line); background: var(--panel-2);
|
|
47
|
-
}
|
|
48
|
-
.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); }
|
|
49
53
|
.pe-split-bar {
|
|
50
|
-
display: flex; align-items: center;
|
|
51
|
-
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; }
|
|
52
66
|
}
|
|
53
|
-
.pe-split-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.07em; color: var(--faint); }
|
|
54
|
-
.pe-split-actions { display: flex; gap: 2px; }
|
|
55
|
-
.pe-splitpane iframe { flex: 1; width: 100%; border: 0; background: #fff; }
|
|
56
67
|
|
|
57
68
|
/* checkbox field (page settings) */
|
|
58
69
|
.pe-field.pe-check { display: flex; align-items: center; gap: 8px; cursor: pointer; }
|
|
@@ -61,17 +72,15 @@
|
|
|
61
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; }
|
|
62
73
|
|
|
63
74
|
/* feature image */
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
.pe-
|
|
72
|
-
.pe-
|
|
73
|
-
.pe-add-feature:hover { border-color: var(--accent); color: var(--accent); }
|
|
74
|
-
.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; }
|
|
75
84
|
.pe-feature { position: relative; margin: 0 0 22px; border-radius: var(--r-lg); overflow: hidden; }
|
|
76
85
|
.pe-feature img {
|
|
77
86
|
width: 100%; aspect-ratio: 2 / 1; object-fit: cover; display: block; background: var(--panel-2);
|
|
@@ -90,29 +99,53 @@
|
|
|
90
99
|
.pe-title {
|
|
91
100
|
width: 100%; background: none; border: none; resize: none; outline: none;
|
|
92
101
|
color: var(--text); font-family: inherit; font-weight: 700;
|
|
93
|
-
font-size:
|
|
94
|
-
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;
|
|
95
104
|
}
|
|
96
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; }
|
|
97
127
|
|
|
98
128
|
/* prose */
|
|
99
|
-
.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; }
|
|
100
130
|
.pe-prose p { margin: 0 0 0.9em; }
|
|
131
|
+
.pe-prose h1 { font-size: 31px; letter-spacing: -0.02em; margin: 1.3em 0 0.5em; }
|
|
101
132
|
.pe-prose h2 { font-size: 25px; letter-spacing: -0.015em; margin: 1.4em 0 0.5em; }
|
|
102
133
|
.pe-prose h3 { font-size: 19px; letter-spacing: -0.01em; margin: 1.3em 0 0.4em; }
|
|
103
|
-
.pe-prose a { color: var(--accent-deep); text-decoration: underline; text-decoration-color:
|
|
104
|
-
.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; }
|
|
105
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; }
|
|
106
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; }
|
|
107
138
|
.pe-prose pre code { background: none; border: none; padding: 0; font-size: 13.5px; }
|
|
108
139
|
.pe-prose hr { border: none; border-top: 1px solid var(--line); margin: 2em auto; width: 120px; }
|
|
140
|
+
.pe-prose mark { background: #fde58a; color: #1a1d25; border-radius: 3px; padding: 0 2px; }
|
|
141
|
+
.pe-bubble mark { background: #fde58a; border-radius: 3px; padding: 0 4px; color: #1a1d25; }
|
|
109
142
|
|
|
110
143
|
/* ---- code block (extensions/codeBlock.tsx) ---- */
|
|
111
144
|
.pe-codeblock { position: relative; margin: 1.2em 0; }
|
|
112
145
|
.pe-codeblock pre { margin: 0; }
|
|
113
146
|
.pe-codeblock-lang {
|
|
114
147
|
position: absolute; top: 6px; right: 6px; z-index: 3;
|
|
115
|
-
background:
|
|
148
|
+
background: color-mix(in srgb, var(--panel) 92%, transparent); color: var(--muted); border: 1px solid var(--line);
|
|
116
149
|
border-radius: 6px; font-size: 11px; font-weight: 600; padding: 2px 6px; font-family: inherit;
|
|
117
150
|
opacity: 0; transition: opacity 0.12s; cursor: pointer;
|
|
118
151
|
}
|
|
@@ -152,12 +185,27 @@
|
|
|
152
185
|
content: ''; position: absolute; inset: 0; background: var(--accent-soft); pointer-events: none;
|
|
153
186
|
}
|
|
154
187
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
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;
|
|
159
194
|
}
|
|
160
|
-
.pe-
|
|
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; }
|
|
161
209
|
|
|
162
210
|
/* cards (editor chrome around .pc-* public styles) */
|
|
163
211
|
.pe-card { position: relative; margin: 1.2em 0; border-radius: var(--r-md); }
|
|
@@ -169,7 +217,7 @@
|
|
|
169
217
|
}
|
|
170
218
|
.pe-card:hover .pe-card-tools, .pe-card.is-selected .pe-card-tools { opacity: 1; }
|
|
171
219
|
.pe-card-tools button, .pe-card-tools .pe-provider {
|
|
172
|
-
background:
|
|
220
|
+
background: color-mix(in srgb, var(--panel) 92%, transparent); color: var(--muted); border: 1px solid var(--line);
|
|
173
221
|
border-radius: 6px; font-size: 11px; font-weight: 700; padding: 3px 8px; cursor: pointer; font-family: inherit;
|
|
174
222
|
}
|
|
175
223
|
.pe-card-tools button:hover { color: var(--text); }
|
|
@@ -222,17 +270,18 @@
|
|
|
222
270
|
background: none; border: none; color: var(--muted); font-family: inherit; font-size: 12.5px;
|
|
223
271
|
font-weight: 600; padding: 5px 8px; border-radius: 5px; cursor: pointer;
|
|
224
272
|
}
|
|
225
|
-
.pe-bubble button:hover { color: var(--text); background:
|
|
226
|
-
.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); }
|
|
227
275
|
.pe-bubble-sep { width: 1px; height: 16px; background: var(--line); margin: 0 3px; }
|
|
228
276
|
|
|
229
|
-
|
|
230
|
-
.pe-
|
|
231
|
-
|
|
232
|
-
|
|
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;
|
|
233
282
|
}
|
|
234
|
-
.pe-
|
|
235
|
-
.pe-
|
|
283
|
+
.pe-gutter-add:hover { color: var(--text); border-color: var(--faint); transform: rotate(90deg); }
|
|
284
|
+
.pe-gutter-add svg { width: 14px; height: 14px; }
|
|
236
285
|
|
|
237
286
|
/* slash menu */
|
|
238
287
|
.pe-slash {
|
|
@@ -245,10 +294,16 @@
|
|
|
245
294
|
display: flex; align-items: center; gap: 10px; width: 100%; text-align: left;
|
|
246
295
|
background: none; border: none; border-radius: var(--r-md); padding: 7px 10px; cursor: pointer; font-family: inherit;
|
|
247
296
|
}
|
|
248
|
-
.pe-slash-item.is-selected { background: var(--
|
|
297
|
+
.pe-slash-item.is-selected { background: var(--sel); }
|
|
298
|
+
.pe-slash-del {
|
|
299
|
+
margin-left: auto; padding: 2px 7px; border-radius: 6px; color: var(--faint);
|
|
300
|
+
font-size: 11px; opacity: 0; transition: opacity 0.1s ease;
|
|
301
|
+
}
|
|
302
|
+
.pe-slash-item:hover .pe-slash-del, .pe-slash-item.is-selected .pe-slash-del { opacity: 1; }
|
|
303
|
+
.pe-slash-del:hover { color: var(--red); background: var(--red-soft); }
|
|
249
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); }
|
|
250
305
|
.pe-slash-icon svg { width: 16px; height: 16px; }
|
|
251
|
-
.pe-slash-item.is-selected .pe-slash-icon { color: var(--
|
|
306
|
+
.pe-slash-item.is-selected .pe-slash-icon { color: var(--text); }
|
|
252
307
|
.pe-slash-title { display: block; font-size: 13px; font-weight: 600; color: var(--text); }
|
|
253
308
|
.pe-slash-desc { display: block; font-size: 11.5px; color: var(--faint); }
|
|
254
309
|
.pe-slash-empty { padding: 12px; color: var(--faint); font-size: 12.5px; }
|
|
@@ -261,37 +316,125 @@
|
|
|
261
316
|
box-shadow: var(--shadow-pop);
|
|
262
317
|
}
|
|
263
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; }
|
|
264
|
-
.pe-pop-item:hover { background:
|
|
319
|
+
.pe-pop-item:hover { background: var(--hover); }
|
|
265
320
|
.pe-pop-item b { display: block; font-size: 13px; color: var(--text); }
|
|
266
321
|
.pe-pop-item span { display: block; font-size: 11.5px; color: var(--faint); }
|
|
267
322
|
.pe-pop-sep { height: 1px; background: var(--line); margin: 6px 4px; }
|
|
268
323
|
.pe-pop-note { font-size: 12px; color: var(--amber); padding: 8px 10px 4px; }
|
|
269
324
|
.pe-pop-schedule { padding: 6px 10px 8px; display: flex; flex-direction: column; gap: 8px; }
|
|
270
325
|
.pe-pop-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--faint); }
|
|
271
|
-
.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; }
|
|
272
327
|
|
|
273
|
-
/* sidebar
|
|
328
|
+
/* sidebar — sits under the top bar so Publish stays reachable; a sheet of
|
|
329
|
+
its own in Split mode */
|
|
274
330
|
.pe-sidebar {
|
|
275
|
-
position: fixed; top:
|
|
276
|
-
background: var(--
|
|
277
|
-
|
|
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
|
+
}
|
|
347
|
+
}
|
|
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);
|
|
278
356
|
}
|
|
279
|
-
.pe-
|
|
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); }
|
|
280
397
|
.pe-field { display: block; margin-bottom: 14px; }
|
|
281
398
|
.pe-field > span { display: flex; justify-content: space-between; font-size: 12px; color: var(--muted); margin-bottom: 5px; font-weight: 500; }
|
|
282
399
|
.pe-field > span em { font-style: normal; color: var(--faint); font-size: 11px; }
|
|
283
400
|
.pe-field input, .pe-field textarea {
|
|
284
401
|
width: 100%; background: var(--bg); color: var(--text); border: 1px solid var(--line); border-radius: var(--r-md);
|
|
285
|
-
padding: 7px 10px; font-size: 13px; font-family: inherit; resize: vertical;
|
|
402
|
+
padding: 7px 10px; font-size: 13px; font-family: inherit; resize: vertical;
|
|
286
403
|
}
|
|
287
404
|
.pe-field input:focus, .pe-field textarea:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-ring); }
|
|
288
405
|
.pe-slug { display: flex; align-items: center; background: var(--bg); border: 1px solid var(--line); border-radius: var(--r-md); }
|
|
289
406
|
.pe-slug:focus-within { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-ring); }
|
|
290
|
-
.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; }
|
|
291
409
|
.pe-slug input { border: none !important; box-shadow: none !important; padding-left: 2px; }
|
|
292
|
-
|
|
293
|
-
.pe-seo
|
|
294
|
-
.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); }
|
|
295
438
|
|
|
296
439
|
/* tags */
|
|
297
440
|
.pe-tags {
|
|
@@ -301,7 +444,7 @@
|
|
|
301
444
|
.pe-tags:focus-within { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-ring); }
|
|
302
445
|
.pe-tag {
|
|
303
446
|
display: inline-flex; align-items: center; gap: 5px;
|
|
304
|
-
background: var(--
|
|
447
|
+
background: var(--sel); color: var(--text-2); font-size: 12px; font-weight: 600;
|
|
305
448
|
padding: 2px 8px; border-radius: var(--r-full);
|
|
306
449
|
}
|
|
307
450
|
.pe-tag button { background: none; border: none; color: inherit; cursor: pointer; font-size: 10px; padding: 0; }
|
|
@@ -316,7 +459,7 @@
|
|
|
316
459
|
display: block; width: 100%; text-align: left; background: none; border: none;
|
|
317
460
|
color: var(--text); font: inherit; font-size: 13px; padding: 7px 11px; cursor: pointer;
|
|
318
461
|
}
|
|
319
|
-
.pe-tag-suggest button:hover { background: var(--
|
|
462
|
+
.pe-tag-suggest button:hover { background: var(--hover); }
|
|
320
463
|
|
|
321
464
|
/* ---- media crop modal ---- */
|
|
322
465
|
.mc-modal { width: min(880px, 94vw); }
|
|
@@ -346,19 +489,19 @@
|
|
|
346
489
|
|
|
347
490
|
/* modal (image picker) */
|
|
348
491
|
.pe-modal-backdrop {
|
|
349
|
-
position: fixed; inset: 0; z-index:
|
|
492
|
+
position: fixed; inset: 0; z-index: 75; background: var(--dim);
|
|
350
493
|
display: grid; place-items: center; padding: 24px; backdrop-filter: blur(2px);
|
|
351
494
|
}
|
|
352
495
|
.pe-modal {
|
|
353
496
|
width: 100%; max-width: 640px; max-height: 80vh; display: flex; flex-direction: column;
|
|
354
497
|
background: var(--panel); border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden;
|
|
355
|
-
box-shadow:
|
|
498
|
+
box-shadow: var(--shadow-pop);
|
|
356
499
|
}
|
|
357
500
|
.pe-modal-head { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; border-bottom: 1px solid var(--line); }
|
|
358
501
|
.pe-tabs { display: flex; gap: 2px; }
|
|
359
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; }
|
|
360
503
|
.pe-tabs button:hover { color: var(--text); }
|
|
361
|
-
.pe-tabs button.is-active { color: var(--
|
|
504
|
+
.pe-tabs button.is-active { color: var(--text); background: var(--sel); }
|
|
362
505
|
.pe-modal-close { background: none; border: none; color: var(--muted); cursor: pointer; font-size: 13px; padding: 6px 8px; }
|
|
363
506
|
.pe-modal-error { color: var(--red); font-size: 12.5px; padding: 10px 16px 0; }
|
|
364
507
|
.pe-dropzone {
|
|
@@ -394,12 +537,12 @@
|
|
|
394
537
|
display: flex; align-items: center; justify-content: space-between; gap: 12px;
|
|
395
538
|
padding: 10px 18px; border-bottom: 1px solid var(--line);
|
|
396
539
|
}
|
|
397
|
-
.pe-devices { display: flex; gap:
|
|
540
|
+
.pe-devices { display: flex; gap: 1px; background: var(--sel); border-radius: 9px; padding: 2px; }
|
|
398
541
|
.pe-devices button {
|
|
399
542
|
background: none; border: none; color: var(--muted); font-family: inherit; font-size: 12.5px;
|
|
400
543
|
font-weight: 600; padding: 4px 14px; border-radius: 6px; cursor: pointer;
|
|
401
544
|
}
|
|
402
|
-
.pe-devices button.is-active { background: var(--
|
|
545
|
+
.pe-devices button.is-active { background: var(--bg); color: var(--text); box-shadow: var(--shadow-sm); }
|
|
403
546
|
.pe-preview-actions { display: flex; gap: 8px; }
|
|
404
547
|
.pe-preview-stage { flex: 1; display: flex; justify-content: center; overflow: hidden; padding: 0; background: var(--panel-2); }
|
|
405
548
|
.pe-preview-stage iframe { height: 100%; border: 0; background: #fff; transition: width 0.2s ease; }
|
|
@@ -413,7 +556,7 @@
|
|
|
413
556
|
.pe-postlist-config select, .pe-postlist-config input[type='text'] {
|
|
414
557
|
width: auto; flex: 0 1 auto; background: var(--bg); color: var(--text);
|
|
415
558
|
border: 1px solid var(--line); border-radius: var(--r-md); padding: 5px 8px;
|
|
416
|
-
font-size: 12.5px; font-family: inherit;
|
|
559
|
+
font-size: 12.5px; font-family: inherit;
|
|
417
560
|
}
|
|
418
561
|
.pe-postlist-config input[type='text'] { width: 120px; }
|
|
419
562
|
.pe-postlist-config label { display: flex; align-items: center; gap: 5px; font-size: 12px; color: var(--muted); white-space: nowrap; }
|
|
@@ -440,13 +583,13 @@
|
|
|
440
583
|
.pe-toast {
|
|
441
584
|
position: fixed; top: 14px; left: 50%; transform: translateX(-50%); z-index: 90;
|
|
442
585
|
display: flex; align-items: center; gap: 10px;
|
|
443
|
-
background: var(--green-soft); border: 1px solid
|
|
586
|
+
background: var(--green-soft); border: 1px solid transparent; color: var(--green);
|
|
444
587
|
border-radius: var(--r-md); padding: 9px 16px; font-size: 13px;
|
|
445
588
|
box-shadow: var(--shadow-pop);
|
|
446
589
|
animation: pe-toast-in 0.18s ease-out;
|
|
447
590
|
}
|
|
448
|
-
.pe-toast-check { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; border-radius: 50%; background:
|
|
449
|
-
.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; }
|
|
450
593
|
.pe-toast a:hover { text-decoration: underline; }
|
|
451
594
|
@keyframes pe-toast-in { from { opacity: 0; transform: translate(-50%, -6px); } to { opacity: 1; transform: translate(-50%, 0); } }
|
|
452
595
|
.pe-check-hint { display: block; font-style: normal; font-size: 11px; color: var(--faint); margin-top: 1px; }
|
|
@@ -461,8 +604,8 @@
|
|
|
461
604
|
.pe-filecard input[type='file'] { font-size: 13px; }
|
|
462
605
|
|
|
463
606
|
.pe-gallery-empty {
|
|
464
|
-
border: 1.5px dashed var(--
|
|
465
|
-
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);
|
|
466
609
|
}
|
|
467
610
|
.pe-gallery-item { position: relative; display: block; }
|
|
468
611
|
.pe-gallery-item img {
|
|
@@ -482,28 +625,35 @@
|
|
|
482
625
|
/* floating link editor (⌘K) */
|
|
483
626
|
.pe-linkedit {
|
|
484
627
|
position: sticky; top: 12px; z-index: 60;
|
|
485
|
-
|
|
486
|
-
background: var(--panel, #fff); border: 1px solid var(--border, #d5d2ca);
|
|
628
|
+
background: var(--panel); border: 1px solid var(--line-strong);
|
|
487
629
|
border-radius: 10px; padding: 8px 10px; margin: 0 auto 12px;
|
|
488
630
|
max-width: 560px; box-shadow: 0 10px 30px rgb(0 0 0 / 14%);
|
|
489
631
|
}
|
|
632
|
+
.pe-linkedit-row { display: flex; gap: 8px; align-items: center; }
|
|
490
633
|
.pe-linkedit input {
|
|
491
634
|
flex: 1; border: 0; outline: none; font-size: 14px; background: none; color: inherit;
|
|
492
635
|
}
|
|
636
|
+
.pe-link-results {
|
|
637
|
+
border-top: 1px solid var(--line); margin-top: 8px; padding-top: 6px;
|
|
638
|
+
display: flex; flex-direction: column;
|
|
639
|
+
}
|
|
640
|
+
.pe-link-results button {
|
|
641
|
+
display: flex; align-items: baseline; gap: 8px; border: 0; background: none;
|
|
642
|
+
text-align: left; padding: 7px 8px; border-radius: 8px; cursor: pointer;
|
|
643
|
+
font: inherit; color: var(--text);
|
|
644
|
+
}
|
|
645
|
+
.pe-link-results button.is-selected { background: var(--panel-2); }
|
|
646
|
+
.pe-link-title { font-size: 13.5px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
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); }
|
|
493
649
|
|
|
494
650
|
/* shortcut cheat-sheet */
|
|
495
|
-
.pe-wordcount { display: flex; align-items: center; gap: 10px; }
|
|
496
|
-
.pe-shortcuts-btn {
|
|
497
|
-
border: 1px solid var(--border, #d5d2ca); background: none; border-radius: 6px;
|
|
498
|
-
font-size: 10.5px; padding: 2px 7px; color: var(--muted, #8a8880); cursor: pointer;
|
|
499
|
-
}
|
|
500
|
-
.pe-shortcuts-btn:hover { color: inherit; }
|
|
501
651
|
.pe-shortcuts-overlay {
|
|
502
652
|
position: fixed; inset: 0; z-index: 90; background: rgb(0 0 0 / 40%);
|
|
503
653
|
display: flex; align-items: center; justify-content: center; padding: 24px;
|
|
504
654
|
}
|
|
505
655
|
.pe-shortcuts {
|
|
506
|
-
background: var(--panel
|
|
656
|
+
background: var(--panel); border-radius: 14px; padding: 20px 24px;
|
|
507
657
|
width: min(440px, 100%); max-height: 80vh; overflow-y: auto;
|
|
508
658
|
box-shadow: 0 24px 60px rgb(0 0 0 / 25%);
|
|
509
659
|
}
|
|
@@ -514,21 +664,36 @@
|
|
|
514
664
|
.pe-shortcuts-group { margin-top: 14px; }
|
|
515
665
|
.pe-shortcuts-title {
|
|
516
666
|
font-size: 11px; text-transform: uppercase; letter-spacing: 0.08em;
|
|
517
|
-
color: var(--muted
|
|
667
|
+
color: var(--muted); margin-bottom: 6px;
|
|
518
668
|
}
|
|
519
669
|
.pe-shortcuts-row { display: flex; align-items: baseline; gap: 12px; padding: 4px 0; font-size: 13.5px; }
|
|
520
670
|
.pe-shortcuts-row kbd {
|
|
521
671
|
flex: none; min-width: 108px; font-family: ui-monospace, monospace; font-size: 12px;
|
|
522
|
-
color: var(--muted
|
|
672
|
+
color: var(--muted);
|
|
523
673
|
}
|
|
524
674
|
|
|
525
675
|
/* multi-author checklist in the sidebar */
|
|
526
|
-
.pe-authors {
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
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);
|
|
530
686
|
}
|
|
531
|
-
.pe-author
|
|
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); }
|
|
532
697
|
|
|
533
698
|
/* ---- calendar card (dynamic block) ---- */
|
|
534
699
|
.pe-calcard { background: var(--panel); border: 1px solid var(--line); border-radius: var(--r-md); padding: 12px 12px 10px; }
|
|
@@ -538,7 +703,7 @@
|
|
|
538
703
|
.pe-calendar-config select, .pe-calendar-config input[type='text'] {
|
|
539
704
|
width: auto; flex: 0 1 auto; background: var(--bg); color: var(--text);
|
|
540
705
|
border: 1px solid var(--line); border-radius: var(--r-md); padding: 5px 8px;
|
|
541
|
-
font-size: 12.5px; font-family: inherit;
|
|
706
|
+
font-size: 12.5px; font-family: inherit;
|
|
542
707
|
}
|
|
543
708
|
.pe-calendar-config input.pe-cal-title { flex: 1 1 180px; }
|
|
544
709
|
.pe-calendar-config label { display: flex; align-items: center; gap: 5px; font-size: 12px; color: var(--muted); white-space: nowrap; }
|
|
@@ -574,7 +739,7 @@
|
|
|
574
739
|
.pe-infocard-row { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
|
|
575
740
|
.pe-infocard input[type='text'], .pe-infocard input[type='url'], .pe-infocard select, .pe-infocard textarea {
|
|
576
741
|
background: var(--panel); color: var(--text); border: 1px solid var(--line); border-radius: var(--r-md);
|
|
577
|
-
padding: 5px 8px; font-size: 12.5px; font-family: inherit;
|
|
742
|
+
padding: 5px 8px; font-size: 12.5px; font-family: inherit; width: auto;
|
|
578
743
|
}
|
|
579
744
|
.pe-infocard-title { flex: 1 1 140px; font-weight: 600; }
|
|
580
745
|
.pe-infocard-badge { flex: 0 1 130px; }
|
|
@@ -594,3 +759,268 @@
|
|
|
594
759
|
.pe-infocard-icon svg { width: 14px; height: 14px; }
|
|
595
760
|
.pe-infocard-foot { display: flex; align-items: center; gap: 8px; margin-top: 8px; }
|
|
596
761
|
.pe-infocard-href { flex: 1; }
|
|
762
|
+
|
|
763
|
+
/* toggle card (editor) — cards.css isn't loaded in the admin, so the box
|
|
764
|
+
look is restated here on the editor tokens */
|
|
765
|
+
.pe-toggle { border: 1px solid var(--line); border-radius: var(--r-md); padding: 12px 16px; margin: 1.2em 0; }
|
|
766
|
+
.pe-toggle.is-selected { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-ring); }
|
|
767
|
+
.pe-toggle .pe-toggle-head { display: flex; align-items: center; gap: 8px; }
|
|
768
|
+
.pe-toggle-chevron {
|
|
769
|
+
border: 0; background: none; cursor: pointer; color: var(--muted);
|
|
770
|
+
font-size: 13px; padding: 2px 4px; transition: transform 0.15s ease;
|
|
771
|
+
}
|
|
772
|
+
.pe-toggle.is-open .pe-toggle-chevron { transform: rotate(90deg); }
|
|
773
|
+
.pe-toggle-summary { flex: 1; border: 0; outline: none; background: none; font: inherit; font-weight: 600; color: inherit; }
|
|
774
|
+
.pe-toggle .pc-toggle-body { margin-top: 10px; }
|
|
775
|
+
|
|
776
|
+
/* toc card (editor) */
|
|
777
|
+
.pe-toc .pc-toc {
|
|
778
|
+
display: flex; flex-direction: column; gap: 2px; margin: 0;
|
|
779
|
+
border-left: 3px solid var(--accent); background: var(--panel-2);
|
|
780
|
+
border-radius: 0 var(--r-md) var(--r-md) 0; padding: 14px 18px;
|
|
781
|
+
}
|
|
782
|
+
.pe-toc .pc-toc-link { padding: 2px 0; font-size: 14.5px; }
|
|
783
|
+
.pe-toc .pc-toc-link[data-depth='1'] { padding-left: 16px; }
|
|
784
|
+
.pe-toc .pc-toc-link[data-depth='2'] { padding-left: 32px; }
|
|
785
|
+
.pe-toc-title {
|
|
786
|
+
border: 0; outline: none; background: none; text-transform: uppercase;
|
|
787
|
+
letter-spacing: 0.08em; font-size: 11.5px; font-weight: 700;
|
|
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)); }
|
|
966
|
+
}
|
|
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; }
|