@xleddyl/nuxt-cms 0.8.2 → 0.9.1

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/dist/module.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@xleddyl/nuxt-cms",
3
3
  "configKey": "cms",
4
- "version": "0.8.2",
4
+ "version": "0.9.1",
5
5
  "builder": {
6
6
  "@nuxt/module-builder": "1.0.2",
7
7
  "unbuild": "unknown"
package/dist/module.mjs CHANGED
@@ -233,6 +233,7 @@ const RESERVED_ENTRY_KEYS = [
233
233
  "admin",
234
234
  "auth",
235
235
  "login",
236
+ "logout",
236
237
  "media",
237
238
  "graphql",
238
239
  "settings",
@@ -1988,6 +1989,11 @@ const module$1 = defineNuxtModule({
1988
1989
  path: "/cms/login",
1989
1990
  file: resolver.resolve("./runtime/app/pages/admin-login.vue")
1990
1991
  },
1992
+ {
1993
+ name: "cms-admin-logout",
1994
+ path: "/cms/logout",
1995
+ file: resolver.resolve("./runtime/app/pages/admin-logout.vue")
1996
+ },
1991
1997
  {
1992
1998
  name: "cms-admin-media",
1993
1999
  path: "/cms/media",
@@ -0,0 +1,3 @@
1
+ declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ declare const _default: typeof __VLS_export;
3
+ export default _default;
@@ -0,0 +1,12 @@
1
+ <template>
2
+ <span>
3
+ Powered by
4
+ <a
5
+ class="cms-powered-by-link"
6
+ href="https://github.com/443-studio/nuxt-cms"
7
+ target="_blank"
8
+ rel="noopener"
9
+ >@443-studio/nuxt-cms</a
10
+ >
11
+ </span>
12
+ </template>
@@ -0,0 +1,3 @@
1
+ declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ declare const _default: typeof __VLS_export;
3
+ export default _default;
@@ -9,7 +9,7 @@
9
9
  close-label="Close settings"
10
10
  :on-sign-out="signOut"
11
11
  >
12
- <template #section-general>
12
+ <template #section-appearance>
13
13
  <KAppearanceSettings
14
14
  :presets="false"
15
15
  theme-label="Theme"
@@ -90,13 +90,13 @@ const account = computed(() => ({
90
90
  role: isSuperAdmin.value ? "Super admin" : "Admin"
91
91
  }));
92
92
  const sections = computed(() => [
93
- { id: "general", label: "General", icon: cmsIcon("cog-6-tooth") },
94
93
  {
95
94
  id: "account",
96
95
  label: "Account",
97
96
  icon: cmsIcon("user-circle"),
98
97
  description: "Your profile and your password."
99
98
  },
99
+ { id: "appearance", label: "Appearance", icon: cmsIcon("swatch") },
100
100
  ...isSuperAdmin.value ? [
101
101
  {
102
102
  id: "users",
@@ -113,7 +113,7 @@ const sections = computed(() => [
113
113
  description: KIND_LABELS[item.kind]
114
114
  }))
115
115
  ]);
116
- const section = ref("general");
116
+ const section = ref("account");
117
117
  const usersCreating = ref(false);
118
118
  const entryStatus = ref("idle");
119
119
  watch(section, () => {
@@ -59,7 +59,6 @@
59
59
  <KAccountMenu
60
60
  :name="displayName"
61
61
  :email="email"
62
- :icon="cmsIcon('ellipsis-horizontal')"
63
62
  :active="settingsOpen"
64
63
  aria-haspopup="dialog"
65
64
  aria-label="Open settings"
@@ -86,7 +85,7 @@ import {
86
85
  Root as KRoot,
87
86
  provideTheme
88
87
  } from "@xleddyl/443-components-vue";
89
- import { computed, navigateTo, ref, useRoute, useUserSession, watch } from "#imports";
88
+ import { computed, navigateTo, ref, useRoute, watch } from "#imports";
90
89
  import cmsConfig from "#cms-config";
91
90
  import { cmsBrand } from "#cms-brand";
92
91
  import { CMS_SEARCH_MIN_LENGTH, normalizeSearchQuery } from "../../shared/search";
@@ -95,7 +94,6 @@ import { useCmsAccount } from "../composables/cms-account";
95
94
  import { loadCmsSettings } from "../composables/cms-settings";
96
95
  import { cmsIcon } from "../utils/ui";
97
96
  const route = useRoute();
98
- const { clear } = useUserSession();
99
97
  const { email, displayName } = useCmsAccount();
100
98
  const theme = useCmsTheme();
101
99
  provideTheme(theme);
@@ -219,8 +217,7 @@ function openSettings() {
219
217
  }
220
218
  async function logout() {
221
219
  settingsOpen.value = false;
222
- await clear();
223
- await navigateTo("/cms/login");
220
+ await navigateTo("/cms/logout");
224
221
  }
225
222
  </script>
226
223
 
@@ -1,52 +1,29 @@
1
1
  <template>
2
2
  <KRoot class="cms-scope cms-canvas" :theme="theme" preset="default">
3
- <KAuthLayout
3
+ <KAuthLogin
4
+ :submit="login"
5
+ :submit-error="loginError"
4
6
  title="Welcome back"
5
7
  description="Sign in to manage your content."
6
- footer="Powered by nuxt-cms"
7
8
  >
8
9
  <template #brand>
9
- <CmsBrandMark size="lg" hide-text class="cms-auth-brand" />
10
+ <CmsBrandMark size="lg" hide-text />
10
11
  </template>
11
-
12
- <KForm :form="form">
13
- <KFormField label="Email" name="email" required>
14
- <KInput
15
- v-model="form.values.email"
16
- type="email"
17
- :icon="cmsIcon('envelope')"
18
- autocomplete="username"
19
- placeholder="you@example.com"
20
- />
21
- </KFormField>
22
- <KFormField label="Password" name="password" required>
23
- <KInput
24
- v-model="form.values.password"
25
- type="password"
26
- icon="key"
27
- autocomplete="current-password"
28
- placeholder="••••••••"
29
- />
30
- </KFormField>
31
- <KButton type="submit" label="Sign in" trailing-icon="arrow-right" size="lg" block />
32
- </KForm>
33
- </KAuthLayout>
12
+ <template #footer>
13
+ <CmsPoweredBy />
14
+ </template>
15
+ </KAuthLogin>
34
16
  </KRoot>
35
17
  </template>
36
18
 
37
19
  <script setup>
38
20
  import {
39
- AuthLayout as KAuthLayout,
40
- Button as KButton,
41
- Form as KForm,
42
- FormField as KFormField,
43
- Input as KInput,
21
+ AuthLogin as KAuthLogin,
44
22
  Root as KRoot,
45
- provideTheme,
46
- useForm
23
+ provideTheme
47
24
  } from "@xleddyl/443-components-vue";
48
25
  import { definePageMeta, navigateTo, useUserSession } from "#imports";
49
- import { cmsIcon, errorMessage } from "../utils/ui";
26
+ import { errorMessage } from "../utils/ui";
50
27
  import { useCmsTheme } from "../composables/cms-theme";
51
28
  definePageMeta({ layout: false });
52
29
  const theme = useCmsTheme();
@@ -55,25 +32,16 @@ const { loggedIn } = useUserSession();
55
32
  if (loggedIn.value) {
56
33
  await navigateTo("/cms", { replace: true });
57
34
  }
58
- const form = useForm({
59
- schema: {
60
- email: { initial: () => "" },
61
- password: { initial: () => "" }
62
- },
63
- onSubmit: login
64
- });
65
- async function login(values) {
66
- try {
67
- await $fetch("/api/cms/auth/login", { method: "POST", body: values });
68
- window.location.replace("/cms");
69
- } catch (e) {
70
- const status = e.statusCode;
71
- form.setError(
72
- "",
73
- status === 401 ? "Invalid email or password." : errorMessage(e) ?? "Login failed. Please try again."
74
- );
75
- }
35
+ async function login(credentials) {
36
+ await $fetch("/api/cms/auth/login", { method: "POST", body: credentials });
37
+ window.location.replace("/cms");
76
38
  }
39
+ const loginError = (error) => {
40
+ const status = error.statusCode;
41
+ return {
42
+ message: status === 401 ? "Invalid email or password." : errorMessage(error) ?? "Login failed. Please try again."
43
+ };
44
+ };
77
45
  </script>
78
46
 
79
47
  <style src="../../assets/admin.css">
@@ -0,0 +1,3 @@
1
+ declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ declare const _default: typeof __VLS_export;
3
+ export default _default;
@@ -0,0 +1,32 @@
1
+ <template>
2
+ <KRoot class="cms-scope cms-canvas" :theme="theme" preset="default">
3
+ <KAuthLogout :logout="clear" :account="account" login-to="/cms/login">
4
+ <template #brand>
5
+ <CmsBrandMark size="lg" hide-text />
6
+ </template>
7
+ <template #footer>
8
+ <CmsPoweredBy />
9
+ </template>
10
+ </KAuthLogout>
11
+ </KRoot>
12
+ </template>
13
+
14
+ <script setup>
15
+ import { AuthLogout as KAuthLogout, Root as KRoot, provideTheme } from "@xleddyl/443-components-vue";
16
+ import { computed, definePageMeta, useUserSession } from "#imports";
17
+ import { useCmsAccount } from "../composables/cms-account";
18
+ import { useCmsTheme } from "../composables/cms-theme";
19
+ definePageMeta({ layout: false, middleware: "cms-auth" });
20
+ const theme = useCmsTheme();
21
+ provideTheme(theme);
22
+ const { clear } = useUserSession();
23
+ const { user, email } = useCmsAccount();
24
+ const account = computed(() => ({
25
+ email: email.value,
26
+ name: user.value?.name?.trim() || void 0
27
+ }));
28
+ </script>
29
+
30
+ <style src="../../assets/admin.css">
31
+
32
+ </style>
@@ -0,0 +1,3 @@
1
+ declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ declare const _default: typeof __VLS_export;
3
+ export default _default;
@@ -1 +1 @@
1
- html:has(.cms-scope){color-scheme:light dark;overscroll-behavior-y:none}html:has(.cms-scope[data-theme=light]){color-scheme:light}html:has(.cms-scope[data-theme=dark]){color-scheme:dark}body:has(.cms-scope){margin:0;overscroll-behavior-y:none}.cms-canvas{background-color:var(--k-canvas);min-height:100dvh}.cms-form-main{display:flex;flex-direction:column;gap:1.375rem;min-width:0}.cms-form-section.is-titled{background:var(--k-surface);border:1px solid var(--k-line);border-radius:var(--k-radius-lg)}.cms-form-rows{display:flex;flex-direction:column;gap:1.375rem}.cms-form-section.is-titled>.cms-form-rows{border-top:1px solid var(--k-line);padding:1rem 1rem 1.125rem}.cms-block-tile.is-media-only:focus-visible{outline:2px solid var(--k-ring);outline-offset:2px}.cms-media-row.is-dragging,.cms-media-tile.is-dragging{opacity:.45}.cms-media-grid.is-recent .cms-media-tile{border-radius:var(--k-radius-md)}.cms-media-drop-overlay>svg{animation:cms-float 1.6s ease-in-out infinite;color:var(--k-accent-text)}.cms-media-detail-facts dt{color:var(--k-text-muted)}.cms-media-detail-facts dd{color:var(--k-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-media-detail-facts dd.is-mono{font-family:var(--k-font-mono);font-size:.75rem;line-height:1.6}@keyframes cms-float{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.cms-brand-glyph{height:62%;width:62%}.cms-auth-brand{margin-bottom:.75rem}.cms-search-option-icon{margin-top:.125rem;--k-icon-size:1rem;color:var(--k-text-dimmed);flex:none}.cms-search-option-text{display:flex;flex:1;flex-direction:column;gap:.125rem;min-width:0}.cms-search-option-head{align-items:center;display:flex;gap:.5rem;min-width:0}.cms-search-option-title{color:var(--k-text);font-weight:500}.cms-search-option-meta,.cms-search-option-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-search-option-meta{color:var(--k-text-dimmed);font-size:.75rem}.cms-search-snippet{display:-webkit-box;-webkit-line-clamp:2;overflow:hidden;-webkit-box-orient:vertical;color:var(--k-text-toned);font-size:.8125rem;line-height:1.45}.cms-search-mark{background:color-mix(in oklab,var(--k-warning) 26%,transparent);border-radius:2px;color:inherit}.cms-code-badge{letter-spacing:.02em}.cms-code-badge,.cms-locale-control{font-family:var(--k-font-mono);text-transform:uppercase}.cms-locale-control{letter-spacing:.04em}.cms-page{animation:k-enter .32s var(--k-ease-out) backwards;display:flex;flex-direction:column;gap:1.5rem;min-width:0}.cms-page.is-fill{flex:1;min-height:0}.cms-count{align-items:center;animation:k-fade .4s var(--k-ease) backwards;background:var(--k-fill);border-radius:var(--k-radius-sm);color:var(--k-text-muted);display:inline-flex;font-family:var(--k-font-mono);font-size:.75rem;font-variant-numeric:tabular-nums;height:1.375rem;padding-inline:.4375rem}.cms-toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem 1rem}.cms-toolbar-search{flex:1;min-width:12rem}.cms-toolbar-actions{align-items:center;display:flex;flex-shrink:0;gap:.5rem;margin-left:auto}.cms-tree{overflow:hidden}.cms-tree-row{align-items:center;animation:k-row-in .36s var(--k-ease-out) backwards;animation-delay:var(--cms-row-delay,0s);color:inherit;display:flex;gap:.75rem;min-height:3.25rem;padding:.5rem 1rem;text-decoration:none;transition:background-color var(--k-duration) var(--k-ease)}.cms-tree-row+.cms-tree-row{border-top:1px solid var(--k-line)}.cms-tree-row:hover{background-color:var(--k-subtle)}.cms-tree-branch{flex-shrink:0;width:1rem;--k-icon-size:0.875rem;color:var(--k-text-dimmed);flex:none;transform:scaleY(-1) rotate(90deg)}.cms-tree-doc{--k-icon-size:1rem;background:var(--k-subtle);border-radius:var(--k-radius-sm);box-shadow:inset 0 0 0 1px var(--k-line);color:var(--k-text-muted);display:grid;flex:none;height:1.75rem;place-items:center;width:1.75rem}.cms-tree-text{display:flex;flex:1;flex-direction:column;min-width:0}.cms-tree-title{color:var(--k-text);font-size:.875rem;font-weight:500}.cms-tree-path,.cms-tree-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-tree-path{color:var(--k-text-dimmed);font-family:var(--k-font-mono);font-size:.71875rem}.cms-tree-meta{font-size:.75rem}.cms-tree-chevron,.cms-tree-meta{color:var(--k-text-dimmed);flex-shrink:0}.cms-tree-chevron{--k-icon-size:1rem;transition:transform var(--k-duration-lg) var(--k-ease-out),color var(--k-duration) var(--k-ease)}.cms-tree-row:hover .cms-tree-chevron{color:var(--k-text);transform:translateX(2px)}.cms-editor-dirty{color:var(--k-text-muted);font-size:.75rem;white-space:nowrap}.cms-editor-schedule-panel{display:flex;flex-direction:column;gap:.875rem;padding:.875rem;width:18rem}.cms-list-filters{animation:k-fade .3s var(--k-ease) backwards}.cms-list-filter-panel{padding:.75rem;width:18rem}.cms-confirm-groups{display:flex;flex-direction:column;gap:.875rem;max-height:min(50vh,24rem);overflow-y:auto}.cms-confirm-group{display:flex;flex-direction:column;gap:.375rem}.cms-confirm-group-title{color:var(--k-text-toned);font-family:var(--k-font-mono);font-size:.75rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-confirm-list{border:1px solid var(--k-line);border-radius:var(--k-radius-md);display:flex;flex-direction:column;list-style:none;margin:0;overflow:hidden;padding:0}.cms-confirm-list>li+li{border-top:1px solid var(--k-line)}.cms-confirm-link{color:inherit;display:flex;flex-direction:column;gap:.125rem;padding:.5rem .75rem;text-decoration:none;transition:background-color var(--k-duration) var(--k-ease)}.cms-confirm-link:hover{background:var(--k-subtle)}.cms-confirm-link-title{color:var(--k-text);font-size:.8125rem;font-weight:500}.cms-confirm-link-meta{color:var(--k-text-dimmed);font-family:var(--k-font-mono);font-size:.6875rem}.cms-import-file-name{color:var(--k-text-muted);font-size:.8125rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-import-title{display:block;max-width:14rem;overflow:hidden;text-overflow:ellipsis}.cms-import-list{display:flex;flex-direction:column;gap:.125rem;list-style:none;margin:0;padding:0}.cms-import-issues{color:var(--k-danger);font-size:.75rem;white-space:normal}.cms-import-ok{--k-icon-size:0.875rem;align-items:center;color:var(--k-success);display:inline-flex;font-size:.75rem;gap:.25rem}.cms-settings-hint{color:var(--k-text-muted);font-size:.8125rem;overflow:hidden;text-overflow:ellipsis}.cms-settings-status{color:var(--k-text-dimmed);flex:none;font-size:.75rem;padding-top:.25rem;transition:color var(--k-duration) var(--k-ease)}.cms-settings-status.is-saved{color:var(--k-success)}.cms-settings-status.is-error{color:var(--k-danger)}.cms-settings-entry{display:flex;flex:1;flex-direction:column;gap:1rem;min-height:100%}.cms-settings-entry>*{flex-shrink:0}.cms-settings-footer{display:flex;justify-content:flex-end;margin-top:auto;padding-top:.5rem}.cms-settings-subtitle{color:var(--k-text-muted);font-size:.75rem;font-weight:500;margin:.75rem 0 .375rem}.cms-settings-list{border:1px solid var(--k-line);border-radius:var(--k-radius-md);display:flex;flex-direction:column;list-style:none;margin:0;overflow:hidden;padding:0}.cms-settings-columns>.cms-settings-list{margin-top:.75rem}.cms-settings-item{--k-icon-size:1rem;align-items:center;background:var(--k-surface);display:flex;gap:.5rem;min-height:2.5rem;padding:.25rem .75rem;position:relative;transition:background-color var(--k-duration) var(--k-ease),opacity var(--k-duration) var(--k-ease)}.cms-settings-item+.cms-settings-item{border-top:1px solid var(--k-line)}.cms-settings-item.is-draggable{cursor:grab}.cms-settings-item.is-draggable:hover{background:var(--k-subtle)}.cms-settings-item.is-dragging{opacity:.4}.cms-settings-drop-end.is-over:before,.cms-settings-item.is-drop-before:before{background:var(--k-accent);border-radius:var(--k-radius-full);content:"";height:2px;left:.5rem;position:absolute;right:.5rem;top:-1px}.cms-settings-drop-end{height:.75rem;position:relative}.cms-settings-item.is-muted .cms-settings-item-label{color:var(--k-text-muted)}.cms-settings-grip,.cms-settings-item-icon{color:var(--k-text-dimmed);flex:none}.cms-settings-item-label{color:var(--k-text);flex:1;font-size:.8125rem;font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-layout-editor{display:flex;flex-direction:column;gap:.25rem}.cms-layout-areas{display:flex;flex-direction:column;margin-top:.5rem}.cms-layout-area{display:flex;flex-direction:column;gap:.5rem;min-width:0}.cms-layout-section{background:var(--k-subtle);border:1px dashed var(--k-line-strong);border-radius:var(--k-radius-md);display:flex;flex-direction:column;padding:.25rem .5rem}.cms-layout-section.is-titled{background:var(--k-surface);border-color:var(--k-line);border-style:solid}.cms-layout-section-title{align-items:center;color:var(--k-text);display:flex;font-size:.75rem;font-weight:600;gap:.5rem;padding:.375rem .125rem .125rem}.cms-layout-chip,.cms-layout-row{display:flex;gap:.375rem}.cms-layout-chip{--k-icon-size:0.875rem;align-items:center;background:var(--k-field);border:1px solid var(--k-field-line);border-radius:var(--k-radius-sm);box-shadow:var(--k-shadow-xs);cursor:grab;flex:1;height:2.125rem;min-width:0;padding:0 .5rem;position:relative;transition:border-color var(--k-duration) var(--k-ease),box-shadow var(--k-duration) var(--k-ease),opacity var(--k-duration) var(--k-ease)}.cms-layout-chip:hover{border-color:var(--k-line-strong)}.cms-layout-chip.is-dragging{opacity:.35}.cms-layout-chip.is-blocked{border-color:var(--k-danger);cursor:not-allowed}.cms-layout-chip.is-drop-after:after,.cms-layout-chip.is-drop-before:before{background:var(--k-accent);border-radius:var(--k-radius-full);bottom:.25rem;content:"";position:absolute;top:.25rem;width:2px}.cms-layout-chip.is-drop-before:before{left:-.25rem}.cms-layout-chip.is-drop-after:after{right:-.25rem}.cms-layout-chip-label{color:var(--k-text);flex:1;font-size:.75rem;font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-layout-chip-tab{background:var(--k-fill);border-radius:var(--k-radius-xs);color:var(--k-text-muted);flex:none;font-size:.625rem;line-height:1rem;padding:0 .3125rem}.cms-layout-gap{height:.375rem;position:relative;transition:height var(--k-duration) var(--k-ease)}.cms-layout-editor.is-dragging .cms-layout-gap{height:.75rem}.cms-layout-gap.is-over:before{background:var(--k-accent);border-radius:var(--k-radius-full);content:"";height:2px;left:0;margin-top:-1px;position:absolute;right:0;top:50%}.cms-layout-editor.is-dragging .cms-layout-gap.is-empty,.cms-layout-gap.is-empty{color:var(--k-text-dimmed);display:grid;font-size:.75rem;height:2.5rem;place-items:center}.cms-layout-empty{border:1px dashed var(--k-line-strong);border-radius:var(--k-radius-md);color:var(--k-text-dimmed);display:grid;font-size:.75rem;min-height:5rem;padding:1rem;place-items:center;text-align:center;transition:border-color var(--k-duration) var(--k-ease),background-color var(--k-duration) var(--k-ease)}.cms-layout-empty.is-over{background:var(--k-accent-soft);border-color:var(--k-accent);color:var(--k-accent-text)}.cms-credentials-alert{animation:k-enter var(--k-duration-lg) var(--k-ease-out) backwards}.cms-credentials-items{margin-top:.625rem}.cms-user-list{border:1px solid var(--k-line);border-radius:var(--k-radius-md);list-style:none;margin:0;overflow:hidden;padding:0}.cms-user-list,.cms-user-row{display:flex;flex-direction:column}.cms-user-row{animation:k-row-in .32s var(--k-ease-out) backwards;background:var(--k-surface)}.cms-user-row+.cms-user-row{border-top:1px solid var(--k-line)}.cms-user-main{align-items:center;display:flex;gap:.75rem;padding:.625rem .75rem}.cms-user-text{display:flex;flex:1;flex-direction:column;line-height:1.3;min-width:0}.cms-user-name{color:var(--k-text);font-size:.8125rem;font-weight:500}.cms-user-meta,.cms-user-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-user-meta{color:var(--k-text-dimmed);font-size:.75rem}.cms-user-reset{padding:0 .75rem .875rem}.cms-user-create{animation:k-enter var(--k-duration-lg) var(--k-ease-out) backwards}.cms-media-gallery{display:flex;flex-direction:column;gap:1.25rem;position:relative}.cms-media-gallery.is-compact{gap:1rem}.cms-media-toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem}.cms-media-search{flex:1 1 16rem;min-width:0}.cms-media-source{color:var(--k-text-dimmed);font-size:.75rem;margin-top:-.75rem}.cms-media-hint{color:var(--k-text-dimmed);font-size:.8125rem}.cms-media-upload-hint{margin-top:.75rem;text-align:center}.cms-media-loading{align-items:center;animation:k-fade .3s var(--k-ease) .12s backwards;color:var(--k-text-dimmed);display:flex;flex:1;justify-content:center;padding-block:2.5rem}.cms-media-detail .cms-media-loading{justify-content:flex-start;padding-block:.5rem}.cms-media-nav{flex-wrap:wrap;justify-content:space-between;min-height:1.75rem}.cms-media-nav,.cms-media-progress{align-items:center;display:flex;gap:.5rem}.cms-media-progress{animation:k-enter var(--k-duration-lg) var(--k-ease-out) backwards;background:var(--k-accent-soft);border:1px solid var(--k-accent-line);border-radius:var(--k-radius-md);color:var(--k-accent-text);font-size:.8125rem;overflow:hidden;padding:.5rem .75rem;position:relative}.cms-media-selection-bar{top:.75rem}.cms-media-filter-row{align-items:center;display:flex;flex-wrap:wrap;gap:.375rem}.cms-media-section{display:flex;flex-direction:column;gap:.625rem}.cms-media-section-title{--k-icon-size:0.875rem;align-items:center;color:var(--k-text-muted);display:inline-flex;font-size:.75rem;font-weight:500;gap:.375rem}.cms-media-folders{display:grid;gap:.5rem;grid-template-columns:repeat(auto-fill,minmax(13rem,1fr))}.cms-media-gallery.is-compact .cms-media-folders{grid-template-columns:repeat(auto-fill,minmax(10rem,1fr))}.cms-media-folder-tile{align-items:center;background:var(--k-surface);border:1px solid var(--k-line);border-radius:var(--k-radius-lg);cursor:pointer;display:flex;gap:.75rem;min-width:0;padding:.625rem .75rem;text-align:left;transition:background-color var(--k-duration) var(--k-ease),border-color var(--k-duration) var(--k-ease),box-shadow var(--k-duration-lg) var(--k-ease),transform var(--k-duration-lg) var(--k-ease-out)}.cms-media-folder-tile:hover{border-color:var(--k-line-strong);box-shadow:var(--k-shadow-sm);transform:translateY(-1px)}.cms-media-folder-tile.is-drop{background:var(--k-accent-soft);border-color:var(--k-accent-line)}.cms-media-folder-tile-icon{box-sizing:content-box;padding:.4375rem;--k-icon-size:1.125rem;background:var(--k-accent-soft);border-radius:var(--k-radius-md);color:var(--k-accent-text);display:grid;flex:none;height:2rem;place-items:center;width:2rem}.cms-media-folder-tile-text{display:flex;flex-direction:column;min-width:0}.cms-media-folder-tile-name{color:var(--k-text);font-size:.8125rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-media-folder-tile-meta{color:var(--k-text-dimmed);font-size:.75rem}.cms-media-grid{display:grid;gap:.875rem;grid-template-columns:repeat(2,minmax(0,1fr))}@media (min-width:640px){.cms-media-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1024px){.cms-media-grid:not(.is-compact){grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:1280px){.cms-media-grid:not(.is-compact){grid-template-columns:repeat(5,minmax(0,1fr))}}.cms-media-grid.is-recent{gap:.5rem;grid-template-columns:repeat(6,minmax(0,1fr))}.cms-media-tile{overflow:hidden;text-align:left;transition:border-color var(--k-duration) var(--k-ease),box-shadow var(--k-duration-lg) var(--k-ease),transform var(--k-duration-lg) var(--k-ease-out)}.cms-media-grid>.cms-media-tile{animation:k-row-in .38s var(--k-ease-out) backwards}.cms-media-grid.is-recent>.cms-media-tile{border-radius:var(--k-radius-md)}.cms-media-tile.is-selectable{cursor:pointer}.cms-media-tile.is-selectable:hover{transform:translateY(-2px)}.cms-media-tile.is-selectable:hover,.cms-media-tile.is-selectable:hover:not([aria-pressed=true]){border-color:var(--k-line-strong);box-shadow:var(--k-shadow-sm)}.cms-media-tile.is-dragging{opacity:.45}.cms-media-preview{--k-icon-size:2rem;align-items:center;aspect-ratio:1;background:var(--k-subtle);color:var(--k-text-dimmed);display:flex;justify-content:center;overflow:hidden;position:relative}.cms-media-grid.is-recent .cms-media-preview{--k-icon-size:1.5rem}.cms-media-preview>img,.cms-media-preview>video{height:100%;inset:0;-o-object-fit:cover;object-fit:cover;position:absolute;transition:transform .5s var(--k-ease-out),border-radius var(--k-duration-lg) var(--k-ease);width:100%}.cms-media-tile.is-selectable:hover:not([aria-pressed=true]) .cms-media-preview>img,.cms-media-tile.is-selectable:hover:not([aria-pressed=true]) .cms-media-preview>video{transform:scale(1.04)}.cms-media-tile[aria-pressed=true] .cms-media-preview>img,.cms-media-tile[aria-pressed=true] .cms-media-preview>video{border-radius:var(--k-radius-md);transform:scale(.94)}.cms-media-check{--k-icon-size:0.875rem;align-items:center;backdrop-filter:blur(4px);background:rgba(0,0,0,.3);border:1.5px solid hsla(0,0%,100%,.9);border-radius:var(--k-radius-full);color:transparent;cursor:pointer;display:flex;height:1.25rem;justify-content:center;left:.5rem;opacity:0;position:absolute;scale:.85;top:.5rem;transition:opacity var(--k-duration) var(--k-ease),scale var(--k-duration-lg) var(--k-ease-out),background-color var(--k-duration) var(--k-ease),border-color var(--k-duration) var(--k-ease),color var(--k-duration) var(--k-ease);width:1.25rem;z-index:1}.cms-media-check.is-on,.cms-media-check.is-visible,.cms-media-tile:focus-visible .cms-media-check,.cms-media-tile:hover .cms-media-check{opacity:1;scale:1}.cms-media-check.is-on{background:var(--k-accent);border-color:var(--k-accent);color:var(--k-accent-contrast)}.cms-media-info{background:linear-gradient(0deg,rgba(0,0,0,.7),transparent);bottom:0;color:#fff;font-family:var(--k-font-mono);font-size:.6875rem;left:0;letter-spacing:.02em;line-height:1.4;opacity:0;padding:1.75rem .625rem .5rem;pointer-events:none;position:absolute;right:0;text-transform:uppercase;transform:translateY(4px);transition:opacity var(--k-duration-lg) var(--k-ease),transform var(--k-duration-lg) var(--k-ease-out)}.cms-media-tile:focus-visible .cms-media-info,.cms-media-tile:hover .cms-media-info{opacity:1;transform:none}.cms-media-meta{border-top:1px solid var(--k-line);display:flex;flex-direction:column;gap:.25rem;padding:.5625rem .75rem}.cms-media-name{color:var(--k-text);font-size:.8125rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-media-folder{color:var(--k-text-dimmed);font-size:.75rem;font-weight:400;overflow:hidden;text-overflow:ellipsis}.cms-media-folder,.cms-media-usage-badge{--k-icon-size:0.75rem;align-items:center;display:inline-flex;gap:.25rem;white-space:nowrap}.cms-media-usage-badge{color:var(--k-accent-text);flex:none;font-size:.6875rem;font-weight:500}.cms-media-usage-badge.is-unused{color:var(--k-text-dimmed);font-weight:400}.cms-media-list{display:flex;flex-direction:column;overflow:hidden}.cms-media-row{align-items:center;animation:k-row-in .32s var(--k-ease-out) backwards;border:1px solid transparent;border-bottom:1px solid var(--k-line);cursor:pointer;display:flex;gap:.875rem;padding:.4375rem .875rem;transition:background-color var(--k-duration) var(--k-ease)}.cms-media-row:last-child{border-bottom-color:transparent}.cms-media-row:hover{background:var(--k-subtle)}.cms-media-row.is-checked{background:var(--k-accent-soft);border-color:var(--k-accent)}.cms-media-row.is-dragging{opacity:.45}.cms-media-row .cms-media-check{backdrop-filter:none;background:var(--k-field);border-color:var(--k-line-strong);border-radius:var(--k-radius-xs);flex:none;height:1rem;position:static;width:1rem}.cms-media-row .cms-media-check.is-on{background:var(--k-accent);border-color:var(--k-accent)}.cms-media-row-name{color:var(--k-text);display:flex;flex:1;flex-direction:column;font-size:.8125rem;font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-media-row-cell{color:var(--k-text-muted);flex:none;font-size:.75rem;font-variant-numeric:tabular-nums;text-align:right;width:5.5rem}.cms-media-row-cell.is-usage{width:7.5rem}.cms-media-row-cell.is-mono{color:var(--k-text-dimmed);font-family:var(--k-font-mono);font-size:.6875rem;text-transform:uppercase;width:3.5rem}@media (max-width:640px){.cms-media-row-cell.is-wide{display:none}.cms-media-grid.is-recent{grid-template-columns:repeat(3,minmax(0,1fr))}}.cms-media-pagination{justify-content:center}.cms-media-drop-overlay{--k-icon-size:2rem;align-items:center;animation:k-fade .16s var(--k-ease);backdrop-filter:blur(4px);background:color-mix(in oklab,var(--k-surface) 84%,transparent);border:1.5px dashed var(--k-accent);border-radius:var(--k-radius-xl);color:var(--k-text);display:flex;flex-direction:column;font-size:.875rem;gap:.5rem;inset:-.5rem;justify-content:center;pointer-events:none;position:absolute;z-index:10}.cms-media-drop-icon,.cms-media-drop-overlay strong{color:var(--k-accent-text)}.cms-media-dropzone-hint{--k-icon-size:0.875rem;align-items:center;color:var(--k-text-dimmed);display:inline-flex;font-size:.75rem;gap:.3rem}.cms-media-folder-picker{display:flex;flex-direction:column;gap:.5rem}.cms-media-folder-picker-list{background:var(--k-field);border:1px solid var(--k-field-line);border-radius:var(--k-radius-md);box-shadow:var(--k-shadow-xs);max-height:16rem;overflow-y:auto;padding:.25rem}.cms-media-detail{display:flex;flex-direction:column;gap:1.5rem}.cms-media-detail-preview{--k-icon-size:3rem;align-items:center;background:repeating-conic-gradient(var(--k-subtle) 0 25%,var(--k-surface) 0 50%) 50% /1.25rem 1.25rem;border:1px solid var(--k-line);border-radius:var(--k-radius-lg);color:var(--k-text-dimmed);display:flex;justify-content:center;max-height:24rem;min-height:12rem;overflow:hidden}.cms-media-detail-preview>img,.cms-media-detail-preview>video{animation:k-fade .3s var(--k-ease);max-height:24rem;max-width:100%;-o-object-fit:contain;object-fit:contain}.cms-media-detail-facts{background:var(--k-subtle);border:1px solid var(--k-line);border-radius:var(--k-radius-lg);display:grid;font-size:.8125rem;gap:.5rem 1.5rem;grid-template-columns:max-content minmax(0,1fr);padding:.125rem 1rem}.cms-media-detail-fact{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-media-detail-fact.k-mono{font-size:.75rem;line-height:1.6}.cms-media-detail-usage{display:flex;flex-direction:column;gap:.625rem}.cms-media-usage-list{border:1px solid var(--k-line);border-radius:var(--k-radius-md);display:flex;flex-direction:column;overflow:hidden}.cms-media-usage-list li+li{border-top:1px solid var(--k-line)}.cms-media-usage-link{display:flex;flex-direction:column;gap:.125rem;padding:.5rem .75rem;transition:background-color var(--k-duration) var(--k-ease)}.cms-media-usage-link:hover{background:var(--k-subtle)}.cms-media-usage-title{color:var(--k-text);font-size:.8125rem;font-weight:500}.cms-media-usage-meta{color:var(--k-text-dimmed);font-family:var(--k-font-mono);font-size:.6875rem}.cms-media-single{max-width:15rem;overflow:hidden;transition:border-color var(--k-duration) var(--k-ease),box-shadow var(--k-duration-lg) var(--k-ease);width:100%}.cms-media-single:hover{border-color:var(--k-line-strong);box-shadow:var(--k-shadow-sm)}.cms-media-single.is-missing{border-color:color-mix(in oklab,var(--k-warning) 55%,transparent)}.cms-media-single-preview{--k-icon-size:1.75rem;align-items:center;aspect-ratio:4/3;background:var(--k-subtle);color:var(--k-text-dimmed);cursor:pointer;display:flex;justify-content:center;overflow:hidden;position:relative;width:100%}.cms-media-single-preview>img,.cms-media-single-preview>video{height:100%;inset:0;-o-object-fit:cover;object-fit:cover;position:absolute;transition:transform .5s var(--k-ease-out);width:100%}.cms-media-single:hover .cms-media-single-preview>img,.cms-media-single:hover .cms-media-single-preview>video{transform:scale(1.04)}.cms-media-single-bar{align-items:center;border-top:1px solid var(--k-line);display:flex;gap:.25rem;padding:.3125rem}.cms-media-single-name{color:var(--k-text-toned);flex:1;font-size:.75rem;font-weight:500;overflow:hidden;padding-left:.25rem;text-overflow:ellipsis;white-space:nowrap}.cms-media-single-add{--k-icon-size:1.25rem;align-items:center;background:var(--k-subtle);border:1px dashed var(--k-line-strong);border-radius:var(--k-radius-lg);color:var(--k-text-muted);cursor:pointer;display:flex;flex-direction:column;font-size:.8125rem;font-weight:500;gap:.375rem;justify-content:center;max-width:15rem;min-height:6rem;transition:border-color var(--k-duration) var(--k-ease),background-color var(--k-duration) var(--k-ease),color var(--k-duration) var(--k-ease);width:100%}.cms-media-single-add:hover{background:var(--k-accent-soft);border-color:var(--k-accent-line);color:var(--k-accent-text)}.cms-media-missing{--k-icon-size:1rem;align-items:center;color:var(--k-warning);display:flex;font-size:.75rem;gap:.375rem}.cms-media-thumb{background:var(--k-subtle);border-radius:var(--k-radius-sm);box-shadow:inset 0 0 0 1px var(--k-line);height:2rem;-o-object-fit:cover;object-fit:cover;width:2rem}.cms-media-thumb.is-fallback{--k-icon-size:1rem;align-items:center;color:var(--k-text-dimmed);display:flex;flex:none;justify-content:center}.cms-media-thumb-empty{--k-icon-size:1rem;color:var(--k-text-dimmed);display:inline-flex}.cms-form{container-type:inline-size}.cms-form,.cms-form-main,.cms-form-rows{display:flex;flex-direction:column;gap:1.375rem}.cms-form-main,.cms-form-rows{min-width:0}.cms-form-row{display:grid;gap:1.375rem 1rem;grid-template-columns:minmax(0,1fr)}@container (min-width: 32rem){.cms-form-row{grid-template-columns:repeat(var(--cms-row-cols,1),minmax(0,1fr))}}.cms-form-section-body{border-top:1px solid var(--k-line);padding:1rem 1rem 1.125rem}.cms-field-hint{color:var(--k-text-muted);font-size:.75rem;font-weight:400;line-height:1.45}.cms-search-focus{animation:cms-field-focus 2.4s var(--k-ease);border-radius:var(--k-radius-md)}@keyframes cms-field-focus{0%,60%{background:var(--k-accent-soft);box-shadow:0 0 0 6px var(--k-accent-soft)}to{background:transparent;box-shadow:0 0 0 6px transparent}}.cms-drawer-loading{min-height:12rem}.cms-block-editor-actions,.cms-drawer-actions{flex:1}.cms-blocks-grid{display:grid;gap:.75rem;grid-template-columns:repeat(2,minmax(0,1fr))}@media (min-width:640px){.cms-blocks-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1024px){.cms-blocks-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.cms-block-tile{background:var(--k-surface);border:1px solid var(--k-line);border-radius:var(--k-radius-lg);overflow:hidden;transition:opacity var(--k-duration) var(--k-ease),border-color var(--k-duration) var(--k-ease),box-shadow var(--k-duration-lg) var(--k-ease),transform var(--k-duration-lg) var(--k-ease-out)}.cms-block-tile:hover{border-color:var(--k-line-strong);box-shadow:var(--k-shadow-sm)}.cms-block-tile.is-muted{opacity:.45}.cms-block-tile.is-missing{border-color:color-mix(in oklab,var(--k-warning) 55%,transparent)}.cms-block-tile.is-dragging{opacity:.4;transform:scale(.98)}.cms-block-tile.is-drop-target{outline:2px solid var(--k-accent);outline-offset:2px}.cms-block-tile.is-media-only{cursor:grab}.cms-block-tile.is-media-only.is-dragging{cursor:grabbing}.cms-block-preview{align-items:center;aspect-ratio:4/3;background:var(--k-subtle);color:var(--k-text-dimmed);display:flex;justify-content:center;overflow:hidden;position:relative;width:100%}.cms-block-tile.is-media-only .cms-block-preview{aspect-ratio:1}.cms-block-preview>img,.cms-block-preview>video{height:100%;inset:0;-o-object-fit:cover;object-fit:cover;position:absolute;transition:transform .5s var(--k-ease-out);width:100%}.cms-block-tile:hover .cms-block-preview>img,.cms-block-tile:hover .cms-block-preview>video{transform:scale(1.03)}.cms-block-icon{--k-icon-size:1.75rem}.cms-block-summary{color:var(--k-text-muted);font-size:.75rem;line-height:1.5;padding:.75rem;text-align:left}.cms-block-hidden{--k-icon-size:1rem;color:#fff;filter:drop-shadow(0 1px 2px rgb(0 0 0/.6));left:.5rem;position:absolute;top:.5rem}.cms-block-missing,.cms-block-remove{--k-icon-size:0.875rem;border-radius:var(--k-radius-full);color:#fff;display:grid;height:1.5rem;place-items:center;position:absolute;width:1.5rem}.cms-block-missing{background:var(--k-warning);bottom:.375rem;left:.375rem}.cms-block-remove{backdrop-filter:blur(6px);background:rgba(0,0,0,.55);opacity:0;right:.375rem;scale:.85;top:.375rem;transition:opacity var(--k-duration) var(--k-ease),scale var(--k-duration-lg) var(--k-ease-out),background-color var(--k-duration) var(--k-ease);z-index:1}.cms-block-tile:focus-within .cms-block-remove,.cms-block-tile:hover .cms-block-remove{opacity:1;scale:1}.cms-block-remove:hover{background:var(--k-danger)}@media (hover:none){.cms-block-remove{opacity:1;scale:1}}.cms-block-bar{--k-icon-size:1rem;border-top:1px solid var(--k-line);gap:.25rem;padding:.3125rem}.cms-block-bar,.cms-block-grip{align-items:center;display:flex}.cms-block-grip{border-radius:var(--k-radius-xs);color:var(--k-text-dimmed);cursor:grab;justify-content:center;padding:.25rem;transition:color var(--k-duration) var(--k-ease),background-color var(--k-duration) var(--k-ease)}.cms-block-grip:hover{background:var(--k-hover);color:var(--k-text-muted)}.cms-block-tile.is-dragging .cms-block-grip{cursor:grabbing}.cms-block-bar-name{color:var(--k-text-toned);flex:1;font-size:.75rem;font-weight:500;overflow:hidden;padding-left:.25rem;text-overflow:ellipsis;white-space:nowrap}.cms-block-missing-icon{color:var(--k-warning);display:flex}.cms-block-add{--k-icon-size:1.25rem;align-items:center;background:var(--k-subtle);border:1px dashed var(--k-line-strong);border-radius:var(--k-radius-lg);color:var(--k-text-muted);display:flex;flex-direction:column;font-size:.8125rem;font-weight:500;gap:.375rem;justify-content:center;min-height:6rem;transition:border-color var(--k-duration) var(--k-ease),background-color var(--k-duration) var(--k-ease),color var(--k-duration) var(--k-ease);width:100%}.cms-block-add:hover:not(:disabled){background:var(--k-accent-soft);border-color:var(--k-accent-line);color:var(--k-accent-text)}.cms-block-add:disabled{cursor:not-allowed;opacity:.55}.cms-editor{background:var(--k-canvas);display:flex;flex-direction:column;height:100dvh}.cms-editor-modal .cms-editor{height:100%}.cms-editor-bar{align-items:center;background:var(--k-surface);border-bottom:1px solid var(--k-line);display:grid;gap:.75rem;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);min-height:3.25rem;padding:.5rem .75rem}.cms-editor-bar-center,.cms-editor-bar-end,.cms-editor-bar-start,.cms-editor-heading{align-items:center;display:flex;min-width:0}.cms-editor-bar-start{gap:.375rem}.cms-editor-heading{gap:.625rem}.cms-editor-bar-center{gap:.5rem;justify-content:center}.cms-editor-bar-end{gap:.375rem;justify-content:flex-end}.cms-editor-title{color:var(--k-text);font-size:.875rem;font-weight:600;letter-spacing:-.005em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-editor-body{display:flex;flex:1;min-height:0}.cms-editor-canvas{display:flex;flex:1;justify-content:center;min-width:0;overflow:auto;padding:1rem}.cms-editor-frame{background:#fff;border-radius:var(--k-radius-lg);box-shadow:var(--k-shadow-raised);height:100%;overflow:hidden;transition:width var(--k-duration-lg) var(--k-ease-out);width:100%}.cms-editor-frame.is-mobile{flex:none;max-width:100%;width:390px}.cms-editor-iframe{border:0;display:block;height:100%;width:100%}.cms-editor-panel{background:var(--k-surface);border-left:1px solid var(--k-line);display:flex;flex-direction:column;flex-shrink:0;min-height:0;width:22rem}.cms-editor-inspector{gap:0}.cms-editor-inspector,.cms-editor-panel-body{display:flex;flex:1;flex-direction:column;min-height:0}.cms-editor-panel-body{container-type:inline-size;gap:1rem;overflow-y:auto;padding:.875rem}.cms-editor-fields{display:flex;flex-direction:column;gap:1.125rem}.cms-editor-section-title{border-top:1px solid var(--k-line);display:flex;flex-direction:column;gap:.25rem;padding-top:.75rem}.cms-editor-section-title:first-child{border-top:0;padding-top:0}.cms-editor-block-head{align-items:center;display:flex;justify-content:space-between;margin:-.25rem -.25rem 0}.cms-editor-block-position{color:var(--k-text-dimmed);font-family:var(--k-font-mono);font-size:.6875rem}.cms-editor-block-title{--k-icon-size:1rem;align-items:center;color:var(--k-text);display:flex;font-size:.9375rem;font-weight:600;gap:.5rem}.cms-editor-block-actions{border-bottom:1px solid var(--k-line);display:flex;flex-wrap:wrap;gap:.375rem;padding-bottom:1rem}.cms-outline-text{display:flex;flex:1;flex-direction:column;gap:.125rem;min-width:0}.cms-outline-text.is-hidden{opacity:.55}.cms-outline-label{color:var(--k-text);font-size:.8125rem;font-weight:500}.cms-outline-label,.cms-outline-summary{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-outline-summary{color:var(--k-text-muted);font-size:.75rem}.cms-outline-hidden{--k-icon-size:1rem;color:var(--k-text-dimmed)}.cms-palette{display:grid;gap:.375rem}.cms-palette-item{align-items:flex-start;background:var(--k-surface);border:1px solid var(--k-line);border-radius:var(--k-radius-lg);display:flex;gap:.625rem;padding:.625rem;text-align:left;transition:background-color var(--k-duration) var(--k-ease),border-color var(--k-duration) var(--k-ease)}.cms-palette-item:hover{background:var(--k-accent-soft);border-color:var(--k-accent-line)}.cms-palette-icon{--k-icon-size:1rem;align-items:center;background:var(--k-fill);border-radius:var(--k-radius-md);color:var(--k-text-toned);display:flex;flex-shrink:0;height:2rem;justify-content:center;width:2rem}.cms-palette-item:hover .cms-palette-icon{color:var(--k-accent-text)}.cms-palette-text{display:flex;flex-direction:column;gap:.1875rem;min-width:0;padding-top:.0625rem}.cms-palette-label{color:var(--k-text);font-size:.8125rem;font-weight:600}.cms-palette-description{color:var(--k-text-muted);font-size:.75rem;line-height:1.4}@media (max-width:767px){.cms-editor-bar{grid-template-columns:minmax(0,1fr) auto}.cms-editor-bar-center{grid-column:1/-1;grid-row:2}.cms-editor-body{flex-direction:column}.cms-editor-canvas{flex:0 0 50%;padding:.5rem}.cms-editor-panel{border-left:0;border-top:1px solid var(--k-line);flex:1;width:auto}}
1
+ html:has(.cms-scope){color-scheme:light dark;overscroll-behavior-y:none}html:has(.cms-scope[data-theme=light]){color-scheme:light}html:has(.cms-scope[data-theme=dark]){color-scheme:dark}body:has(.cms-scope){margin:0;overscroll-behavior-y:none}.cms-canvas{background-color:var(--k-canvas);min-height:100dvh}.cms-form-main{display:flex;flex-direction:column;gap:1.375rem;min-width:0}.cms-form-section.is-titled{background:var(--k-surface);border:1px solid var(--k-line);border-radius:var(--k-radius-lg)}.cms-form-rows{display:flex;flex-direction:column;gap:1.375rem}.cms-form-section.is-titled>.cms-form-rows{border-top:1px solid var(--k-line);padding:1rem 1rem 1.125rem}.cms-block-tile.is-media-only:focus-visible{outline:2px solid var(--k-ring);outline-offset:2px}.cms-media-row.is-dragging,.cms-media-tile.is-dragging{opacity:.45}.cms-media-grid.is-recent .cms-media-tile{border-radius:var(--k-radius-md)}.cms-media-drop-overlay>svg{animation:cms-float 1.6s ease-in-out infinite;color:var(--k-accent-text)}.cms-media-detail-facts dt{color:var(--k-text-muted)}.cms-media-detail-facts dd{color:var(--k-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-media-detail-facts dd.is-mono{font-family:var(--k-font-mono);font-size:.75rem;line-height:1.6}@keyframes cms-float{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.cms-brand-glyph{height:62%;width:62%}.cms-powered-by-link{color:var(--k-text);font-weight:500;text-decoration:none;transition:color var(--k-duration) var(--k-ease-out)}.cms-powered-by-link:hover{color:var(--k-accent)}.cms-search-option-icon{margin-top:.125rem;--k-icon-size:1rem;color:var(--k-text-dimmed);flex:none}.cms-search-option-text{display:flex;flex:1;flex-direction:column;gap:.125rem;min-width:0}.cms-search-option-head{align-items:center;display:flex;gap:.5rem;min-width:0}.cms-search-option-title{color:var(--k-text);font-weight:500}.cms-search-option-meta,.cms-search-option-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-search-option-meta{color:var(--k-text-dimmed);font-size:.75rem}.cms-search-snippet{display:-webkit-box;-webkit-line-clamp:2;overflow:hidden;-webkit-box-orient:vertical;color:var(--k-text-toned);font-size:.8125rem;line-height:1.45}.cms-search-mark{background:color-mix(in oklab,var(--k-warning) 26%,transparent);border-radius:2px;color:inherit}.cms-code-badge{letter-spacing:.02em}.cms-code-badge,.cms-locale-control{font-family:var(--k-font-mono);text-transform:uppercase}.cms-locale-control{letter-spacing:.04em}.cms-page{animation:k-enter .32s var(--k-ease-out) backwards;display:flex;flex-direction:column;gap:1.5rem;min-width:0}.cms-page.is-fill{flex:1;min-height:0}.cms-count{align-items:center;animation:k-fade .4s var(--k-ease) backwards;background:var(--k-fill);border-radius:var(--k-radius-sm);color:var(--k-text-muted);display:inline-flex;font-family:var(--k-font-mono);font-size:.75rem;font-variant-numeric:tabular-nums;height:1.375rem;padding-inline:.4375rem}.cms-toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem 1rem}.cms-toolbar-search{flex:1;min-width:12rem}.cms-toolbar-actions{align-items:center;display:flex;flex-shrink:0;gap:.5rem;margin-left:auto}.cms-tree{overflow:hidden}.cms-tree-row{align-items:center;animation:k-row-in .36s var(--k-ease-out) backwards;animation-delay:var(--cms-row-delay,0s);color:inherit;display:flex;gap:.75rem;min-height:3.25rem;padding:.5rem 1rem;text-decoration:none;transition:background-color var(--k-duration) var(--k-ease)}.cms-tree-row+.cms-tree-row{border-top:1px solid var(--k-line)}.cms-tree-row:hover{background-color:var(--k-subtle)}.cms-tree-branch{flex-shrink:0;width:1rem;--k-icon-size:0.875rem;color:var(--k-text-dimmed);flex:none;transform:scaleY(-1) rotate(90deg)}.cms-tree-doc{--k-icon-size:1rem;background:var(--k-subtle);border-radius:var(--k-radius-sm);box-shadow:inset 0 0 0 1px var(--k-line);color:var(--k-text-muted);display:grid;flex:none;height:1.75rem;place-items:center;width:1.75rem}.cms-tree-text{display:flex;flex:1;flex-direction:column;min-width:0}.cms-tree-title{color:var(--k-text);font-size:.875rem;font-weight:500}.cms-tree-path,.cms-tree-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-tree-path{color:var(--k-text-dimmed);font-family:var(--k-font-mono);font-size:.71875rem}.cms-tree-meta{font-size:.75rem}.cms-tree-chevron,.cms-tree-meta{color:var(--k-text-dimmed);flex-shrink:0}.cms-tree-chevron{--k-icon-size:1rem;transition:transform var(--k-duration-lg) var(--k-ease-out),color var(--k-duration) var(--k-ease)}.cms-tree-row:hover .cms-tree-chevron{color:var(--k-text);transform:translateX(2px)}.cms-editor-dirty{color:var(--k-text-muted);font-size:.75rem;white-space:nowrap}.cms-editor-schedule-panel{display:flex;flex-direction:column;gap:.875rem;padding:.875rem;width:18rem}.cms-list-filters{animation:k-fade .3s var(--k-ease) backwards}.cms-list-filter-panel{padding:.75rem;width:18rem}.cms-confirm-groups{display:flex;flex-direction:column;gap:.875rem;max-height:min(50vh,24rem);overflow-y:auto}.cms-confirm-group{display:flex;flex-direction:column;gap:.375rem}.cms-confirm-group-title{color:var(--k-text-toned);font-family:var(--k-font-mono);font-size:.75rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-confirm-list{border:1px solid var(--k-line);border-radius:var(--k-radius-md);display:flex;flex-direction:column;list-style:none;margin:0;overflow:hidden;padding:0}.cms-confirm-list>li+li{border-top:1px solid var(--k-line)}.cms-confirm-link{color:inherit;display:flex;flex-direction:column;gap:.125rem;padding:.5rem .75rem;text-decoration:none;transition:background-color var(--k-duration) var(--k-ease)}.cms-confirm-link:hover{background:var(--k-subtle)}.cms-confirm-link-title{color:var(--k-text);font-size:.8125rem;font-weight:500}.cms-confirm-link-meta{color:var(--k-text-dimmed);font-family:var(--k-font-mono);font-size:.6875rem}.cms-import-file-name{color:var(--k-text-muted);font-size:.8125rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-import-title{display:block;max-width:14rem;overflow:hidden;text-overflow:ellipsis}.cms-import-list{display:flex;flex-direction:column;gap:.125rem;list-style:none;margin:0;padding:0}.cms-import-issues{color:var(--k-danger);font-size:.75rem;white-space:normal}.cms-import-ok{--k-icon-size:0.875rem;align-items:center;color:var(--k-success);display:inline-flex;font-size:.75rem;gap:.25rem}.cms-settings-hint{color:var(--k-text-muted);font-size:.8125rem;overflow:hidden;text-overflow:ellipsis}.cms-settings-status{color:var(--k-text-dimmed);flex:none;font-size:.75rem;padding-top:.25rem;transition:color var(--k-duration) var(--k-ease)}.cms-settings-status.is-saved{color:var(--k-success)}.cms-settings-status.is-error{color:var(--k-danger)}.cms-settings-entry{display:flex;flex:1;flex-direction:column;gap:1rem;min-height:100%}.cms-settings-entry>*{flex-shrink:0}.cms-settings-footer{display:flex;justify-content:flex-end;margin-top:auto;padding-top:.5rem}.cms-settings-subtitle{color:var(--k-text-muted);font-size:.75rem;font-weight:500;margin:.75rem 0 .375rem}.cms-settings-list{border:1px solid var(--k-line);border-radius:var(--k-radius-md);display:flex;flex-direction:column;list-style:none;margin:0;overflow:hidden;padding:0}.cms-settings-columns>.cms-settings-list{margin-top:.75rem}.cms-settings-item{--k-icon-size:1rem;align-items:center;background:var(--k-surface);display:flex;gap:.5rem;min-height:2.5rem;padding:.25rem .75rem;position:relative;transition:background-color var(--k-duration) var(--k-ease),opacity var(--k-duration) var(--k-ease)}.cms-settings-item+.cms-settings-item{border-top:1px solid var(--k-line)}.cms-settings-item.is-draggable{cursor:grab}.cms-settings-item.is-draggable:hover{background:var(--k-subtle)}.cms-settings-item.is-dragging{opacity:.4}.cms-settings-drop-end.is-over:before,.cms-settings-item.is-drop-before:before{background:var(--k-accent);border-radius:var(--k-radius-full);content:"";height:2px;left:.5rem;position:absolute;right:.5rem;top:-1px}.cms-settings-drop-end{height:.75rem;position:relative}.cms-settings-item.is-muted .cms-settings-item-label{color:var(--k-text-muted)}.cms-settings-grip,.cms-settings-item-icon{color:var(--k-text-dimmed);flex:none}.cms-settings-item-label{color:var(--k-text);flex:1;font-size:.8125rem;font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-layout-editor{display:flex;flex-direction:column;gap:.25rem}.cms-layout-areas{display:flex;flex-direction:column;margin-top:.5rem}.cms-layout-area{display:flex;flex-direction:column;gap:.5rem;min-width:0}.cms-layout-section{background:var(--k-subtle);border:1px dashed var(--k-line-strong);border-radius:var(--k-radius-md);display:flex;flex-direction:column;padding:.25rem .5rem}.cms-layout-section.is-titled{background:var(--k-surface);border-color:var(--k-line);border-style:solid}.cms-layout-section-title{align-items:center;color:var(--k-text);display:flex;font-size:.75rem;font-weight:600;gap:.5rem;padding:.375rem .125rem .125rem}.cms-layout-chip,.cms-layout-row{display:flex;gap:.375rem}.cms-layout-chip{--k-icon-size:0.875rem;align-items:center;background:var(--k-field);border:1px solid var(--k-field-line);border-radius:var(--k-radius-sm);box-shadow:var(--k-shadow-xs);cursor:grab;flex:1;height:2.125rem;min-width:0;padding:0 .5rem;position:relative;transition:border-color var(--k-duration) var(--k-ease),box-shadow var(--k-duration) var(--k-ease),opacity var(--k-duration) var(--k-ease)}.cms-layout-chip:hover{border-color:var(--k-line-strong)}.cms-layout-chip.is-dragging{opacity:.35}.cms-layout-chip.is-blocked{border-color:var(--k-danger);cursor:not-allowed}.cms-layout-chip.is-drop-after:after,.cms-layout-chip.is-drop-before:before{background:var(--k-accent);border-radius:var(--k-radius-full);bottom:.25rem;content:"";position:absolute;top:.25rem;width:2px}.cms-layout-chip.is-drop-before:before{left:-.25rem}.cms-layout-chip.is-drop-after:after{right:-.25rem}.cms-layout-chip-label{color:var(--k-text);flex:1;font-size:.75rem;font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-layout-chip-tab{background:var(--k-fill);border-radius:var(--k-radius-xs);color:var(--k-text-muted);flex:none;font-size:.625rem;line-height:1rem;padding:0 .3125rem}.cms-layout-gap{height:.375rem;position:relative;transition:height var(--k-duration) var(--k-ease)}.cms-layout-editor.is-dragging .cms-layout-gap{height:.75rem}.cms-layout-gap.is-over:before{background:var(--k-accent);border-radius:var(--k-radius-full);content:"";height:2px;left:0;margin-top:-1px;position:absolute;right:0;top:50%}.cms-layout-editor.is-dragging .cms-layout-gap.is-empty,.cms-layout-gap.is-empty{color:var(--k-text-dimmed);display:grid;font-size:.75rem;height:2.5rem;place-items:center}.cms-layout-empty{border:1px dashed var(--k-line-strong);border-radius:var(--k-radius-md);color:var(--k-text-dimmed);display:grid;font-size:.75rem;min-height:5rem;padding:1rem;place-items:center;text-align:center;transition:border-color var(--k-duration) var(--k-ease),background-color var(--k-duration) var(--k-ease)}.cms-layout-empty.is-over{background:var(--k-accent-soft);border-color:var(--k-accent);color:var(--k-accent-text)}.cms-credentials-alert{animation:k-enter var(--k-duration-lg) var(--k-ease-out) backwards}.cms-credentials-items{margin-top:.625rem}.cms-user-list{border:1px solid var(--k-line);border-radius:var(--k-radius-md);list-style:none;margin:0;overflow:hidden;padding:0}.cms-user-list,.cms-user-row{display:flex;flex-direction:column}.cms-user-row{animation:k-row-in .32s var(--k-ease-out) backwards;background:var(--k-surface)}.cms-user-row+.cms-user-row{border-top:1px solid var(--k-line)}.cms-user-main{align-items:center;display:flex;gap:.75rem;padding:.625rem .75rem}.cms-user-text{display:flex;flex:1;flex-direction:column;line-height:1.3;min-width:0}.cms-user-name{color:var(--k-text);font-size:.8125rem;font-weight:500}.cms-user-meta,.cms-user-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-user-meta{color:var(--k-text-dimmed);font-size:.75rem}.cms-user-reset{padding:0 .75rem .875rem}.cms-user-create{animation:k-enter var(--k-duration-lg) var(--k-ease-out) backwards}.cms-media-gallery{display:flex;flex-direction:column;gap:1.25rem;position:relative}.cms-media-gallery.is-compact{gap:1rem}.cms-media-toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem}.cms-media-search{flex:1 1 16rem;min-width:0}.cms-media-source{color:var(--k-text-dimmed);font-size:.75rem;margin-top:-.75rem}.cms-media-hint{color:var(--k-text-dimmed);font-size:.8125rem}.cms-media-upload-hint{margin-top:.75rem;text-align:center}.cms-media-loading{align-items:center;animation:k-fade .3s var(--k-ease) .12s backwards;color:var(--k-text-dimmed);display:flex;flex:1;justify-content:center;padding-block:2.5rem}.cms-media-detail .cms-media-loading{justify-content:flex-start;padding-block:.5rem}.cms-media-nav{flex-wrap:wrap;justify-content:space-between;min-height:1.75rem}.cms-media-nav,.cms-media-progress{align-items:center;display:flex;gap:.5rem}.cms-media-progress{animation:k-enter var(--k-duration-lg) var(--k-ease-out) backwards;background:var(--k-accent-soft);border:1px solid var(--k-accent-line);border-radius:var(--k-radius-md);color:var(--k-accent-text);font-size:.8125rem;overflow:hidden;padding:.5rem .75rem;position:relative}.cms-media-selection-bar{top:.75rem}.cms-media-filter-row{align-items:center;display:flex;flex-wrap:wrap;gap:.375rem}.cms-media-section{display:flex;flex-direction:column;gap:.625rem}.cms-media-section-title{--k-icon-size:0.875rem;align-items:center;color:var(--k-text-muted);display:inline-flex;font-size:.75rem;font-weight:500;gap:.375rem}.cms-media-folders{display:grid;gap:.5rem;grid-template-columns:repeat(auto-fill,minmax(13rem,1fr))}.cms-media-gallery.is-compact .cms-media-folders{grid-template-columns:repeat(auto-fill,minmax(10rem,1fr))}.cms-media-folder-tile{align-items:center;background:var(--k-surface);border:1px solid var(--k-line);border-radius:var(--k-radius-lg);cursor:pointer;display:flex;gap:.75rem;min-width:0;padding:.625rem .75rem;text-align:left;transition:background-color var(--k-duration) var(--k-ease),border-color var(--k-duration) var(--k-ease),box-shadow var(--k-duration-lg) var(--k-ease),transform var(--k-duration-lg) var(--k-ease-out)}.cms-media-folder-tile:hover{border-color:var(--k-line-strong);box-shadow:var(--k-shadow-sm);transform:translateY(-1px)}.cms-media-folder-tile.is-drop{background:var(--k-accent-soft);border-color:var(--k-accent-line)}.cms-media-folder-tile-icon{box-sizing:content-box;padding:.4375rem;--k-icon-size:1.125rem;background:var(--k-accent-soft);border-radius:var(--k-radius-md);color:var(--k-accent-text);display:grid;flex:none;height:2rem;place-items:center;width:2rem}.cms-media-folder-tile-text{display:flex;flex-direction:column;min-width:0}.cms-media-folder-tile-name{color:var(--k-text);font-size:.8125rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-media-folder-tile-meta{color:var(--k-text-dimmed);font-size:.75rem}.cms-media-grid{display:grid;gap:.875rem;grid-template-columns:repeat(2,minmax(0,1fr))}@media (min-width:640px){.cms-media-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1024px){.cms-media-grid:not(.is-compact){grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:1280px){.cms-media-grid:not(.is-compact){grid-template-columns:repeat(5,minmax(0,1fr))}}.cms-media-grid.is-recent{gap:.5rem;grid-template-columns:repeat(6,minmax(0,1fr))}.cms-media-tile{overflow:hidden;text-align:left;transition:border-color var(--k-duration) var(--k-ease),box-shadow var(--k-duration-lg) var(--k-ease),transform var(--k-duration-lg) var(--k-ease-out)}.cms-media-grid>.cms-media-tile{animation:k-row-in .38s var(--k-ease-out) backwards}.cms-media-grid.is-recent>.cms-media-tile{border-radius:var(--k-radius-md)}.cms-media-tile.is-selectable{cursor:pointer}.cms-media-tile.is-selectable:hover{transform:translateY(-2px)}.cms-media-tile.is-selectable:hover,.cms-media-tile.is-selectable:hover:not([aria-pressed=true]){border-color:var(--k-line-strong);box-shadow:var(--k-shadow-sm)}.cms-media-tile.is-dragging{opacity:.45}.cms-media-preview{--k-icon-size:2rem;align-items:center;aspect-ratio:1;background:var(--k-subtle);color:var(--k-text-dimmed);display:flex;justify-content:center;overflow:hidden;position:relative}.cms-media-grid.is-recent .cms-media-preview{--k-icon-size:1.5rem}.cms-media-preview>img,.cms-media-preview>video{height:100%;inset:0;-o-object-fit:cover;object-fit:cover;position:absolute;transition:transform .5s var(--k-ease-out),border-radius var(--k-duration-lg) var(--k-ease);width:100%}.cms-media-tile.is-selectable:hover:not([aria-pressed=true]) .cms-media-preview>img,.cms-media-tile.is-selectable:hover:not([aria-pressed=true]) .cms-media-preview>video{transform:scale(1.04)}.cms-media-tile[aria-pressed=true] .cms-media-preview>img,.cms-media-tile[aria-pressed=true] .cms-media-preview>video{border-radius:var(--k-radius-md);transform:scale(.94)}.cms-media-check{--k-icon-size:0.875rem;align-items:center;backdrop-filter:blur(4px);background:rgba(0,0,0,.3);border:1.5px solid hsla(0,0%,100%,.9);border-radius:var(--k-radius-full);color:transparent;cursor:pointer;display:flex;height:1.25rem;justify-content:center;left:.5rem;opacity:0;position:absolute;scale:.85;top:.5rem;transition:opacity var(--k-duration) var(--k-ease),scale var(--k-duration-lg) var(--k-ease-out),background-color var(--k-duration) var(--k-ease),border-color var(--k-duration) var(--k-ease),color var(--k-duration) var(--k-ease);width:1.25rem;z-index:1}.cms-media-check.is-on,.cms-media-check.is-visible,.cms-media-tile:focus-visible .cms-media-check,.cms-media-tile:hover .cms-media-check{opacity:1;scale:1}.cms-media-check.is-on{background:var(--k-accent);border-color:var(--k-accent);color:var(--k-accent-contrast)}.cms-media-info{background:linear-gradient(0deg,rgba(0,0,0,.7),transparent);bottom:0;color:#fff;font-family:var(--k-font-mono);font-size:.6875rem;left:0;letter-spacing:.02em;line-height:1.4;opacity:0;padding:1.75rem .625rem .5rem;pointer-events:none;position:absolute;right:0;text-transform:uppercase;transform:translateY(4px);transition:opacity var(--k-duration-lg) var(--k-ease),transform var(--k-duration-lg) var(--k-ease-out)}.cms-media-tile:focus-visible .cms-media-info,.cms-media-tile:hover .cms-media-info{opacity:1;transform:none}.cms-media-meta{border-top:1px solid var(--k-line);display:flex;flex-direction:column;gap:.25rem;padding:.5625rem .75rem}.cms-media-name{color:var(--k-text);font-size:.8125rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-media-folder{color:var(--k-text-dimmed);font-size:.75rem;font-weight:400;overflow:hidden;text-overflow:ellipsis}.cms-media-folder,.cms-media-usage-badge{--k-icon-size:0.75rem;align-items:center;display:inline-flex;gap:.25rem;white-space:nowrap}.cms-media-usage-badge{color:var(--k-accent-text);flex:none;font-size:.6875rem;font-weight:500}.cms-media-usage-badge.is-unused{color:var(--k-text-dimmed);font-weight:400}.cms-media-list{display:flex;flex-direction:column;overflow:hidden}.cms-media-row{align-items:center;animation:k-row-in .32s var(--k-ease-out) backwards;border:1px solid transparent;border-bottom:1px solid var(--k-line);cursor:pointer;display:flex;gap:.875rem;padding:.4375rem .875rem;transition:background-color var(--k-duration) var(--k-ease)}.cms-media-row:last-child{border-bottom-color:transparent}.cms-media-row:hover{background:var(--k-subtle)}.cms-media-row.is-checked{background:var(--k-accent-soft);border-color:var(--k-accent)}.cms-media-row.is-dragging{opacity:.45}.cms-media-row .cms-media-check{backdrop-filter:none;background:var(--k-field);border-color:var(--k-line-strong);border-radius:var(--k-radius-xs);flex:none;height:1rem;position:static;width:1rem}.cms-media-row .cms-media-check.is-on{background:var(--k-accent);border-color:var(--k-accent)}.cms-media-row-name{color:var(--k-text);display:flex;flex:1;flex-direction:column;font-size:.8125rem;font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-media-row-cell{color:var(--k-text-muted);flex:none;font-size:.75rem;font-variant-numeric:tabular-nums;text-align:right;width:5.5rem}.cms-media-row-cell.is-usage{width:7.5rem}.cms-media-row-cell.is-mono{color:var(--k-text-dimmed);font-family:var(--k-font-mono);font-size:.6875rem;text-transform:uppercase;width:3.5rem}@media (max-width:640px){.cms-media-row-cell.is-wide{display:none}.cms-media-grid.is-recent{grid-template-columns:repeat(3,minmax(0,1fr))}}.cms-media-pagination{justify-content:center}.cms-media-drop-overlay{--k-icon-size:2rem;align-items:center;animation:k-fade .16s var(--k-ease);backdrop-filter:blur(4px);background:color-mix(in oklab,var(--k-surface) 84%,transparent);border:1.5px dashed var(--k-accent);border-radius:var(--k-radius-xl);color:var(--k-text);display:flex;flex-direction:column;font-size:.875rem;gap:.5rem;inset:-.5rem;justify-content:center;pointer-events:none;position:absolute;z-index:10}.cms-media-drop-icon,.cms-media-drop-overlay strong{color:var(--k-accent-text)}.cms-media-dropzone-hint{--k-icon-size:0.875rem;align-items:center;color:var(--k-text-dimmed);display:inline-flex;font-size:.75rem;gap:.3rem}.cms-media-folder-picker{display:flex;flex-direction:column;gap:.5rem}.cms-media-folder-picker-list{background:var(--k-field);border:1px solid var(--k-field-line);border-radius:var(--k-radius-md);box-shadow:var(--k-shadow-xs);max-height:16rem;overflow-y:auto;padding:.25rem}.cms-media-detail{display:flex;flex-direction:column;gap:1.5rem}.cms-media-detail-preview{--k-icon-size:3rem;align-items:center;background:repeating-conic-gradient(var(--k-subtle) 0 25%,var(--k-surface) 0 50%) 50% /1.25rem 1.25rem;border:1px solid var(--k-line);border-radius:var(--k-radius-lg);color:var(--k-text-dimmed);display:flex;justify-content:center;max-height:24rem;min-height:12rem;overflow:hidden}.cms-media-detail-preview>img,.cms-media-detail-preview>video{animation:k-fade .3s var(--k-ease);max-height:24rem;max-width:100%;-o-object-fit:contain;object-fit:contain}.cms-media-detail-facts{background:var(--k-subtle);border:1px solid var(--k-line);border-radius:var(--k-radius-lg);display:grid;font-size:.8125rem;gap:.5rem 1.5rem;grid-template-columns:max-content minmax(0,1fr);padding:.125rem 1rem}.cms-media-detail-fact{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-media-detail-fact.k-mono{font-size:.75rem;line-height:1.6}.cms-media-detail-usage{display:flex;flex-direction:column;gap:.625rem}.cms-media-usage-list{border:1px solid var(--k-line);border-radius:var(--k-radius-md);display:flex;flex-direction:column;overflow:hidden}.cms-media-usage-list li+li{border-top:1px solid var(--k-line)}.cms-media-usage-link{display:flex;flex-direction:column;gap:.125rem;padding:.5rem .75rem;transition:background-color var(--k-duration) var(--k-ease)}.cms-media-usage-link:hover{background:var(--k-subtle)}.cms-media-usage-title{color:var(--k-text);font-size:.8125rem;font-weight:500}.cms-media-usage-meta{color:var(--k-text-dimmed);font-family:var(--k-font-mono);font-size:.6875rem}.cms-media-single{max-width:15rem;overflow:hidden;transition:border-color var(--k-duration) var(--k-ease),box-shadow var(--k-duration-lg) var(--k-ease);width:100%}.cms-media-single:hover{border-color:var(--k-line-strong);box-shadow:var(--k-shadow-sm)}.cms-media-single.is-missing{border-color:color-mix(in oklab,var(--k-warning) 55%,transparent)}.cms-media-single-preview{--k-icon-size:1.75rem;align-items:center;aspect-ratio:4/3;background:var(--k-subtle);color:var(--k-text-dimmed);cursor:pointer;display:flex;justify-content:center;overflow:hidden;position:relative;width:100%}.cms-media-single-preview>img,.cms-media-single-preview>video{height:100%;inset:0;-o-object-fit:cover;object-fit:cover;position:absolute;transition:transform .5s var(--k-ease-out);width:100%}.cms-media-single:hover .cms-media-single-preview>img,.cms-media-single:hover .cms-media-single-preview>video{transform:scale(1.04)}.cms-media-single-bar{align-items:center;border-top:1px solid var(--k-line);display:flex;gap:.25rem;padding:.3125rem}.cms-media-single-name{color:var(--k-text-toned);flex:1;font-size:.75rem;font-weight:500;overflow:hidden;padding-left:.25rem;text-overflow:ellipsis;white-space:nowrap}.cms-media-single-add{--k-icon-size:1.25rem;align-items:center;background:var(--k-subtle);border:1px dashed var(--k-line-strong);border-radius:var(--k-radius-lg);color:var(--k-text-muted);cursor:pointer;display:flex;flex-direction:column;font-size:.8125rem;font-weight:500;gap:.375rem;justify-content:center;max-width:15rem;min-height:6rem;transition:border-color var(--k-duration) var(--k-ease),background-color var(--k-duration) var(--k-ease),color var(--k-duration) var(--k-ease);width:100%}.cms-media-single-add:hover{background:var(--k-accent-soft);border-color:var(--k-accent-line);color:var(--k-accent-text)}.cms-media-missing{--k-icon-size:1rem;align-items:center;color:var(--k-warning);display:flex;font-size:.75rem;gap:.375rem}.cms-media-thumb{background:var(--k-subtle);border-radius:var(--k-radius-sm);box-shadow:inset 0 0 0 1px var(--k-line);height:2rem;-o-object-fit:cover;object-fit:cover;width:2rem}.cms-media-thumb.is-fallback{--k-icon-size:1rem;align-items:center;color:var(--k-text-dimmed);display:flex;flex:none;justify-content:center}.cms-media-thumb-empty{--k-icon-size:1rem;color:var(--k-text-dimmed);display:inline-flex}.cms-form{container-type:inline-size}.cms-form,.cms-form-main,.cms-form-rows{display:flex;flex-direction:column;gap:1.375rem}.cms-form-main,.cms-form-rows{min-width:0}.cms-form-row{display:grid;gap:1.375rem 1rem;grid-template-columns:minmax(0,1fr)}@container (min-width: 32rem){.cms-form-row{grid-template-columns:repeat(var(--cms-row-cols,1),minmax(0,1fr))}}.cms-form-section-body{border-top:1px solid var(--k-line);padding:1rem 1rem 1.125rem}.cms-field-hint{color:var(--k-text-muted);font-size:.75rem;font-weight:400;line-height:1.45}.cms-search-focus{animation:cms-field-focus 2.4s var(--k-ease);border-radius:var(--k-radius-md)}@keyframes cms-field-focus{0%,60%{background:var(--k-accent-soft);box-shadow:0 0 0 6px var(--k-accent-soft)}to{background:transparent;box-shadow:0 0 0 6px transparent}}.cms-drawer-loading{min-height:12rem}.cms-block-editor-actions,.cms-drawer-actions{flex:1}.cms-blocks-grid{display:grid;gap:.75rem;grid-template-columns:repeat(2,minmax(0,1fr))}@media (min-width:640px){.cms-blocks-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1024px){.cms-blocks-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.cms-block-tile{background:var(--k-surface);border:1px solid var(--k-line);border-radius:var(--k-radius-lg);overflow:hidden;transition:opacity var(--k-duration) var(--k-ease),border-color var(--k-duration) var(--k-ease),box-shadow var(--k-duration-lg) var(--k-ease),transform var(--k-duration-lg) var(--k-ease-out)}.cms-block-tile:hover{border-color:var(--k-line-strong);box-shadow:var(--k-shadow-sm)}.cms-block-tile.is-muted{opacity:.45}.cms-block-tile.is-missing{border-color:color-mix(in oklab,var(--k-warning) 55%,transparent)}.cms-block-tile.is-dragging{opacity:.4;transform:scale(.98)}.cms-block-tile.is-drop-target{outline:2px solid var(--k-accent);outline-offset:2px}.cms-block-tile.is-media-only{cursor:grab}.cms-block-tile.is-media-only.is-dragging{cursor:grabbing}.cms-block-preview{align-items:center;aspect-ratio:4/3;background:var(--k-subtle);color:var(--k-text-dimmed);display:flex;justify-content:center;overflow:hidden;position:relative;width:100%}.cms-block-tile.is-media-only .cms-block-preview{aspect-ratio:1}.cms-block-preview>img,.cms-block-preview>video{height:100%;inset:0;-o-object-fit:cover;object-fit:cover;position:absolute;transition:transform .5s var(--k-ease-out);width:100%}.cms-block-tile:hover .cms-block-preview>img,.cms-block-tile:hover .cms-block-preview>video{transform:scale(1.03)}.cms-block-icon{--k-icon-size:1.75rem}.cms-block-summary{color:var(--k-text-muted);font-size:.75rem;line-height:1.5;padding:.75rem;text-align:left}.cms-block-hidden{--k-icon-size:1rem;color:#fff;filter:drop-shadow(0 1px 2px rgb(0 0 0/.6));left:.5rem;position:absolute;top:.5rem}.cms-block-missing,.cms-block-remove{--k-icon-size:0.875rem;border-radius:var(--k-radius-full);color:#fff;display:grid;height:1.5rem;place-items:center;position:absolute;width:1.5rem}.cms-block-missing{background:var(--k-warning);bottom:.375rem;left:.375rem}.cms-block-remove{backdrop-filter:blur(6px);background:rgba(0,0,0,.55);opacity:0;right:.375rem;scale:.85;top:.375rem;transition:opacity var(--k-duration) var(--k-ease),scale var(--k-duration-lg) var(--k-ease-out),background-color var(--k-duration) var(--k-ease);z-index:1}.cms-block-tile:focus-within .cms-block-remove,.cms-block-tile:hover .cms-block-remove{opacity:1;scale:1}.cms-block-remove:hover{background:var(--k-danger)}@media (hover:none){.cms-block-remove{opacity:1;scale:1}}.cms-block-bar{--k-icon-size:1rem;border-top:1px solid var(--k-line);gap:.25rem;padding:.3125rem}.cms-block-bar,.cms-block-grip{align-items:center;display:flex}.cms-block-grip{border-radius:var(--k-radius-xs);color:var(--k-text-dimmed);cursor:grab;justify-content:center;padding:.25rem;transition:color var(--k-duration) var(--k-ease),background-color var(--k-duration) var(--k-ease)}.cms-block-grip:hover{background:var(--k-hover);color:var(--k-text-muted)}.cms-block-tile.is-dragging .cms-block-grip{cursor:grabbing}.cms-block-bar-name{color:var(--k-text-toned);flex:1;font-size:.75rem;font-weight:500;overflow:hidden;padding-left:.25rem;text-overflow:ellipsis;white-space:nowrap}.cms-block-missing-icon{color:var(--k-warning);display:flex}.cms-block-add{--k-icon-size:1.25rem;align-items:center;background:var(--k-subtle);border:1px dashed var(--k-line-strong);border-radius:var(--k-radius-lg);color:var(--k-text-muted);display:flex;flex-direction:column;font-size:.8125rem;font-weight:500;gap:.375rem;justify-content:center;min-height:6rem;transition:border-color var(--k-duration) var(--k-ease),background-color var(--k-duration) var(--k-ease),color var(--k-duration) var(--k-ease);width:100%}.cms-block-add:hover:not(:disabled){background:var(--k-accent-soft);border-color:var(--k-accent-line);color:var(--k-accent-text)}.cms-block-add:disabled{cursor:not-allowed;opacity:.55}.cms-editor{background:var(--k-canvas);display:flex;flex-direction:column;height:100dvh}.cms-editor-modal .cms-editor{height:100%}.cms-editor-bar{align-items:center;background:var(--k-surface);border-bottom:1px solid var(--k-line);display:grid;gap:.75rem;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);min-height:3.25rem;padding:.5rem .75rem}.cms-editor-bar-center,.cms-editor-bar-end,.cms-editor-bar-start,.cms-editor-heading{align-items:center;display:flex;min-width:0}.cms-editor-bar-start{gap:.375rem}.cms-editor-heading{gap:.625rem}.cms-editor-bar-center{gap:.5rem;justify-content:center}.cms-editor-bar-end{gap:.375rem;justify-content:flex-end}.cms-editor-title{color:var(--k-text);font-size:.875rem;font-weight:600;letter-spacing:-.005em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-editor-body{display:flex;flex:1;min-height:0}.cms-editor-canvas{display:flex;flex:1;justify-content:center;min-width:0;overflow:auto;padding:1rem}.cms-editor-frame{background:#fff;border-radius:var(--k-radius-lg);box-shadow:var(--k-shadow-raised);height:100%;overflow:hidden;transition:width var(--k-duration-lg) var(--k-ease-out);width:100%}.cms-editor-frame.is-mobile{flex:none;max-width:100%;width:390px}.cms-editor-iframe{border:0;display:block;height:100%;width:100%}.cms-editor-panel{background:var(--k-surface);border-left:1px solid var(--k-line);display:flex;flex-direction:column;flex-shrink:0;min-height:0;width:22rem}.cms-editor-inspector{gap:0}.cms-editor-inspector,.cms-editor-panel-body{display:flex;flex:1;flex-direction:column;min-height:0}.cms-editor-panel-body{container-type:inline-size;gap:1rem;overflow-y:auto;padding:.875rem}.cms-editor-fields{display:flex;flex-direction:column;gap:1.125rem}.cms-editor-section-title{border-top:1px solid var(--k-line);display:flex;flex-direction:column;gap:.25rem;padding-top:.75rem}.cms-editor-section-title:first-child{border-top:0;padding-top:0}.cms-editor-block-head{align-items:center;display:flex;justify-content:space-between;margin:-.25rem -.25rem 0}.cms-editor-block-position{color:var(--k-text-dimmed);font-family:var(--k-font-mono);font-size:.6875rem}.cms-editor-block-title{--k-icon-size:1rem;align-items:center;color:var(--k-text);display:flex;font-size:.9375rem;font-weight:600;gap:.5rem}.cms-editor-block-actions{border-bottom:1px solid var(--k-line);display:flex;flex-wrap:wrap;gap:.375rem;padding-bottom:1rem}.cms-outline-text{display:flex;flex:1;flex-direction:column;gap:.125rem;min-width:0}.cms-outline-text.is-hidden{opacity:.55}.cms-outline-label{color:var(--k-text);font-size:.8125rem;font-weight:500}.cms-outline-label,.cms-outline-summary{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-outline-summary{color:var(--k-text-muted);font-size:.75rem}.cms-outline-hidden{--k-icon-size:1rem;color:var(--k-text-dimmed)}.cms-palette{display:grid;gap:.375rem}.cms-palette-item{align-items:flex-start;background:var(--k-surface);border:1px solid var(--k-line);border-radius:var(--k-radius-lg);display:flex;gap:.625rem;padding:.625rem;text-align:left;transition:background-color var(--k-duration) var(--k-ease),border-color var(--k-duration) var(--k-ease)}.cms-palette-item:hover{background:var(--k-accent-soft);border-color:var(--k-accent-line)}.cms-palette-icon{--k-icon-size:1rem;align-items:center;background:var(--k-fill);border-radius:var(--k-radius-md);color:var(--k-text-toned);display:flex;flex-shrink:0;height:2rem;justify-content:center;width:2rem}.cms-palette-item:hover .cms-palette-icon{color:var(--k-accent-text)}.cms-palette-text{display:flex;flex-direction:column;gap:.1875rem;min-width:0;padding-top:.0625rem}.cms-palette-label{color:var(--k-text);font-size:.8125rem;font-weight:600}.cms-palette-description{color:var(--k-text-muted);font-size:.75rem;line-height:1.4}@media (max-width:767px){.cms-editor-bar{grid-template-columns:minmax(0,1fr) auto}.cms-editor-bar-center{grid-column:1/-1;grid-row:2}.cms-editor-body{flex-direction:column}.cms-editor-canvas{flex:0 0 50%;padding:.5rem}.cms-editor-panel{border-left:0;border-top:1px solid var(--k-line);flex:1;width:auto}}
@@ -14,7 +14,7 @@ import {
14
14
  } from "./index.js";
15
15
  export const CMS_PREVIEW_CHANNEL = "nuxt-cms:preview";
16
16
  export const DEFAULT_CMS_PREVIEW_PATH = "/cms/preview";
17
- const RESERVED_ADMIN_SEGMENTS = /* @__PURE__ */ new Set(["login", "media"]);
17
+ const RESERVED_ADMIN_SEGMENTS = /* @__PURE__ */ new Set(["login", "logout", "media"]);
18
18
  export function previewPathErrors(path, entryNames) {
19
19
  const match = /^\/cms\/([a-z0-9][a-z0-9-]*)$/.exec(path);
20
20
  if (!match)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xleddyl/nuxt-cms",
3
- "version": "0.8.2",
3
+ "version": "0.9.1",
4
4
  "description": "Lightweight CMS that ships with your Nuxt app: runs on the Nitro server, content types defined in code, /cms admin panel, GraphQL API, SQLite or Postgres. No external CMS needed!",
5
5
  "license": "MIT",
6
6
  "author": "Edoardo Alberti (https://github.com/xleddyl)",
@@ -69,7 +69,7 @@
69
69
  "@tiptap/pm": "^3.32.0",
70
70
  "@tiptap/starter-kit": "^3.32.0",
71
71
  "@tiptap/vue-3": "^3.32.0",
72
- "@xleddyl/443-components-vue": "^0.6.2",
72
+ "@xleddyl/443-components-vue": "^0.16.50",
73
73
  "aws4fetch": "^1.0.20",
74
74
  "drizzle-kit": "^0.31.0",
75
75
  "drizzle-orm": "^0.44.0",